From 516609a166d08e4958dacc09fb6b579ff6e85c69 Mon Sep 17 00:00:00 2001 From: Pulumi Bot <30351955+pulumi-bot@users.noreply.github.com> Date: Thu, 25 Jul 2024 17:45:25 -0700 Subject: [PATCH] Upgrade pulumi-terraform-bridge to v3.88.0 (#2243) This PR was generated via `$ upgrade-provider pulumi/pulumi-gcp --kind=bridge --pr-reviewers=guineveresaenger`. --- - Upgrading pulumi-terraform-bridge from v3.87.0 to v3.88.0. - Upgrading pulumi-terraform-bridge/pf from v0.40.0 to v0.41.0. --- examples/go.mod | 4 +- examples/go.sum | 8 +- provider/cmd/pulumi-resource-gcp/schema.json | 744 +++++++++--------- provider/go.mod | 10 +- provider/go.sum | 20 +- sdk/go.mod | 2 +- sdk/go.sum | 4 +- .../gcpUserAccessBinding.go | 4 +- sdk/go/gcp/apphub/service.go | 8 +- sdk/go/gcp/bigtable/authorizedView.go | 6 +- .../gcp/certificateauthority/certificate.go | 8 +- sdk/go/gcp/certificatemanager/certificate.go | 4 +- sdk/go/gcp/certificatemanager/trustConfig.go | 8 +- .../gcp/cloudbuild/bitbucketServerConfig.go | 8 +- sdk/go/gcp/cloudbuildv2/connection.go | 4 +- sdk/go/gcp/cloudbuildv2/repository.go | 4 +- sdk/go/gcp/cloudscheduler/job.go | 6 +- .../gcp/composer/getUserWorkloadsConfigMap.go | 4 +- sdk/go/gcp/composer/getUserWorkloadsSecret.go | 4 +- sdk/go/gcp/compute/getInstanceSerialPort.go | 4 +- sdk/go/gcp/compute/getRegions.go | 4 +- sdk/go/gcp/compute/instanceGroupNamedPort.go | 8 +- sdk/go/gcp/compute/networkEndpoint.go | 4 +- .../gcp/compute/networkPeeringRoutesConfig.go | 4 +- sdk/go/gcp/compute/regionNetworkEndpoint.go | 4 +- sdk/go/gcp/compute/regionTargetHttpsProxy.go | 16 +- sdk/go/gcp/compute/targetHttpsProxy.go | 20 +- sdk/go/gcp/compute/targetSSLProxy.go | 4 +- sdk/go/gcp/container/attachedCluster.go | 2 +- sdk/go/gcp/dataflow/job.go | 4 +- sdk/go/gcp/deploymentmanager/deployment.go | 2 +- sdk/go/gcp/dns/recordSet.go | 4 +- sdk/go/gcp/endpoints/service.go | 6 +- .../gcp/firebase/appCheckDeviceCheckConfig.go | 2 +- sdk/go/gcp/folder/accessApprovalSettings.go | 4 +- sdk/go/gcp/iam/accessBoundaryPolicy.go | 4 +- sdk/go/gcp/iam/denyPolicy.go | 4 +- .../gcp/iam/workloadIdentityPoolProvider.go | 4 +- .../gcp/identityplatform/inboundSamlConfig.go | 2 +- .../tenantInboundSamlConfig.go | 2 +- sdk/go/gcp/monitoring/slo.go | 8 +- sdk/go/gcp/networksecurity/serverTlsPolicy.go | 4 +- .../networksecurity/tlsInspectionPolicy.go | 4 +- sdk/go/gcp/networkservices/gateway.go | 8 +- .../organizations/accessApprovalSettings.go | 4 +- sdk/go/gcp/osconfig/patchDeployment.go | 2 +- sdk/go/gcp/oslogin/sshPublicKey.go | 2 +- sdk/go/gcp/projects/accessApprovalSettings.go | 4 +- sdk/go/gcp/runtimeconfig/variable.go | 2 +- sdk/go/gcp/secretmanager/secretVersion.go | 2 +- sdk/go/gcp/serviceaccount/getAccount.go | 4 +- sdk/go/gcp/serviceaccount/key.go | 4 +- .../gcp/serviceusage/consumerQuotaOverride.go | 12 +- sdk/go/gcp/sql/user.go | 2 +- sdk/python/pulumi_gcp/_utilities.py | 2 + .../accesscontextmanager/access_level.py | 16 +- .../access_level_condition.py | 36 +- .../accesscontextmanager/access_levels.py | 32 +- .../gcp_user_access_binding.py | 16 +- .../accesscontextmanager/service_perimeter.py | 132 ++-- .../service_perimeter_dry_run_resource.py | 4 +- .../service_perimeter_resource.py | 4 +- .../service_perimeters.py | 24 +- sdk/python/pulumi_gcp/alloydb/cluster.py | 44 +- sdk/python/pulumi_gcp/alloydb/instance.py | 16 +- sdk/python/pulumi_gcp/apigee/addons_config.py | 28 +- .../keystores_aliases_self_signed_cert.py | 12 +- .../application_url_dispatch_rules.py | 4 +- .../pulumi_gcp/appengine/domain_mapping.py | 4 +- .../appengine/engine_split_traffic.py | 20 +- .../appengine/flexible_app_version.py | 36 +- .../appengine/service_network_settings.py | 8 +- .../appengine/standard_app_version.py | 52 +- sdk/python/pulumi_gcp/apphub/application.py | 24 +- sdk/python/pulumi_gcp/apphub/service.py | 24 +- .../applicationintegration/auth_config.py | 8 +- .../applicationintegration/client.py | 16 +- .../pulumi_gcp/artifactregistry/repository.py | 204 ++--- .../pulumi_gcp/assuredworkloads/workload.py | 52 +- .../management_server.py | 4 +- .../pulumi_gcp/beyondcorp/app_connection.py | 12 +- .../pulumi_gcp/beyondcorp/app_connector.py | 8 +- sdk/python/pulumi_gcp/biglake/database.py | 4 +- sdk/python/pulumi_gcp/biglake/table.py | 48 +- sdk/python/pulumi_gcp/bigquery/app_profile.py | 112 +-- sdk/python/pulumi_gcp/bigquery/connection.py | 84 +- sdk/python/pulumi_gcp/bigquery/dataset.py | 60 +- .../pulumi_gcp/bigquery/dataset_access.py | 52 +- sdk/python/pulumi_gcp/bigquery/job.py | 252 +++--- sdk/python/pulumi_gcp/bigquery/reservation.py | 4 +- sdk/python/pulumi_gcp/bigquery/routine.py | 80 +- sdk/python/pulumi_gcp/bigquery/table.py | 16 +- .../bigqueryanalyticshub/listing.py | 4 +- .../bigquerydatapolicy/data_policy.py | 4 +- .../pulumi_gcp/bigtable/authorized_view.py | 32 +- sdk/python/pulumi_gcp/bigtable/gc_policy.py | 16 +- sdk/python/pulumi_gcp/bigtable/instance.py | 48 +- sdk/python/pulumi_gcp/bigtable/table.py | 12 +- sdk/python/pulumi_gcp/billing/budget.py | 128 +-- .../binaryauthorization/attestor.py | 40 +- .../pulumi_gcp/binaryauthorization/policy.py | 52 +- .../blockchainnodeengine/blockchain_nodes.py | 64 +- .../certificateauthority/authority.py | 444 +++++------ .../certificateauthority/ca_pool.py | 216 ++--- .../certificateauthority/certificate.py | 676 ++++++++-------- .../certificate_template.py | 140 ++-- .../certificatemanager/certificate.py | 152 ++-- .../certificate_issuance_config.py | 60 +- .../certificate_map_entry.py | 4 +- .../certificatemanager/trust_config.py | 24 +- .../pulumi_gcp/cloudasset/folder_feed.py | 4 +- .../cloudasset/organization_feed.py | 4 +- .../pulumi_gcp/cloudasset/project_feed.py | 4 +- .../cloudbuild/bitbucket_server_config.py | 52 +- sdk/python/pulumi_gcp/cloudbuild/trigger.py | 456 +++++------ .../pulumi_gcp/cloudbuild/worker_pool.py | 32 +- .../pulumi_gcp/cloudbuildv2/connection.py | 48 +- .../pulumi_gcp/cloudbuildv2/repository.py | 36 +- .../pulumi_gcp/clouddeploy/automation.py | 32 +- .../clouddeploy/custom_target_type.py | 52 +- .../clouddeploy/delivery_pipeline.py | 100 +-- sdk/python/pulumi_gcp/clouddeploy/target.py | 12 +- .../pulumi_gcp/clouddomains/registration.py | 96 +-- .../pulumi_gcp/cloudfunctionsv2/function.py | 584 +++++++------- .../cloudquota/s_quota_preference.py | 4 +- .../pulumi_gcp/cloudrun/domain_mapping.py | 4 +- sdk/python/pulumi_gcp/cloudrun/service.py | 120 +-- sdk/python/pulumi_gcp/cloudrunv2/job.py | 60 +- sdk/python/pulumi_gcp/cloudrunv2/service.py | 156 ++-- sdk/python/pulumi_gcp/cloudscheduler/job.py | 80 +- sdk/python/pulumi_gcp/cloudtasks/queue.py | 32 +- .../pulumi_gcp/composer/get_image_versions.py | 8 +- .../composer/get_user_workloads_config_map.py | 8 +- .../composer/get_user_workloads_secret.py | 8 +- .../composer/user_workloads_config_map.py | 8 +- .../composer/user_workloads_secret.py | 8 +- sdk/python/pulumi_gcp/compute/address.py | 12 +- .../pulumi_gcp/compute/attached_disk.py | 4 +- sdk/python/pulumi_gcp/compute/autoscaler.py | 48 +- .../pulumi_gcp/compute/backend_bucket.py | 16 +- .../pulumi_gcp/compute/backend_service.py | 144 ++-- .../compute/backend_service_signed_url_key.py | 12 +- .../disk_resource_policy_attachment.py | 12 +- .../compute/external_vpn_gateway.py | 4 +- .../compute/firewall_policy_rule.py | 36 +- .../pulumi_gcp/compute/forwarding_rule.py | 48 +- sdk/python/pulumi_gcp/compute/get_disk.py | 4 +- sdk/python/pulumi_gcp/compute/get_image.py | 4 +- .../compute/get_instance_serial_port.py | 8 +- .../compute/global_forwarding_rule.py | 100 +-- .../pulumi_gcp/compute/ha_vpn_gateway.py | 8 +- sdk/python/pulumi_gcp/compute/health_check.py | 84 +- sdk/python/pulumi_gcp/compute/instance.py | 8 +- .../compute/instance_from_template.py | 12 +- .../compute/instance_group_manager.py | 36 +- .../compute/instance_group_membership.py | 4 +- .../compute/instance_group_named_port.py | 8 +- .../pulumi_gcp/compute/instance_template.py | 48 +- .../pulumi_gcp/compute/machine_image.py | 12 +- .../compute/managed_ssl_certificate.py | 12 +- .../compute/manged_ssl_certificate.py | 12 +- .../pulumi_gcp/compute/network_attachment.py | 8 +- .../pulumi_gcp/compute/network_endpoint.py | 8 +- .../compute/network_endpoint_list.py | 24 +- .../compute/network_firewall_policy_rule.py | 32 +- .../compute/network_peering_routes_config.py | 36 +- sdk/python/pulumi_gcp/compute/node_group.py | 24 +- ...rganization_security_policy_association.py | 16 +- .../organization_security_policy_rule.py | 16 +- .../pulumi_gcp/compute/packet_mirroring.py | 16 +- .../pulumi_gcp/compute/per_instance_config.py | 16 +- .../pulumi_gcp/compute/region_autoscaler.py | 36 +- .../compute/region_backend_service.py | 84 +- .../region_disk_resource_policy_attachment.py | 12 +- .../pulumi_gcp/compute/region_health_check.py | 84 +- .../compute/region_instance_group_manager.py | 36 +- .../compute/region_network_endpoint.py | 8 +- .../compute/region_network_endpoint_group.py | 40 +- .../region_network_firewall_policy_rule.py | 32 +- .../compute/region_per_instance_config.py | 24 +- .../compute/region_security_policy.py | 4 +- .../compute/region_security_policy_rule.py | 64 +- .../compute/region_target_http_proxy.py | 20 +- .../compute/region_target_https_proxy.py | 56 +- .../pulumi_gcp/compute/region_url_map.py | 628 +++++++-------- sdk/python/pulumi_gcp/compute/reservation.py | 12 +- .../pulumi_gcp/compute/resource_policy.py | 112 +-- sdk/python/pulumi_gcp/compute/router.py | 12 +- sdk/python/pulumi_gcp/compute/router_nat.py | 32 +- sdk/python/pulumi_gcp/compute/router_peer.py | 32 +- .../pulumi_gcp/compute/security_policy.py | 108 +-- .../compute/security_policy_rule.py | 40 +- .../pulumi_gcp/compute/service_attachment.py | 24 +- sdk/python/pulumi_gcp/compute/subnetwork.py | 16 +- .../pulumi_gcp/compute/target_grpc_proxy.py | 132 ++-- .../pulumi_gcp/compute/target_http_proxy.py | 32 +- .../pulumi_gcp/compute/target_https_proxy.py | 80 +- .../pulumi_gcp/compute/target_instance.py | 20 +- sdk/python/pulumi_gcp/compute/url_map.py | 648 +++++++-------- .../pulumi_gcp/container/attached_cluster.py | 40 +- .../pulumi_gcp/container/aws_cluster.py | 352 ++++----- .../pulumi_gcp/container/aws_node_pool.py | 576 +++++++------- .../pulumi_gcp/container/azure_cluster.py | 68 +- .../pulumi_gcp/container/azure_node_pool.py | 76 +- sdk/python/pulumi_gcp/container/cluster.py | 20 +- sdk/python/pulumi_gcp/container/node_pool.py | 36 +- .../pulumi_gcp/containeranalysis/note.py | 8 +- .../connection_profile.py | 120 +-- .../private_connection.py | 4 +- sdk/python/pulumi_gcp/datacatalog/entry.py | 4 +- sdk/python/pulumi_gcp/datacatalog/tag.py | 224 +++--- .../pulumi_gcp/datacatalog/tag_template.py | 56 +- sdk/python/pulumi_gcp/dataflow/pipeline.py | 64 +- sdk/python/pulumi_gcp/dataform/repository.py | 20 +- .../dataform/repository_release_config.py | 48 +- .../dataform/repository_workflow_config.py | 72 +- sdk/python/pulumi_gcp/datafusion/instance.py | 28 +- .../prevention_deidentify_template.py | 132 ++-- .../dataloss/prevention_inspect_template.py | 248 +++--- .../dataloss/prevention_job_trigger.py | 584 +++++++------- .../dataloss/prevention_stored_info_type.py | 20 +- sdk/python/pulumi_gcp/dataplex/asset.py | 4 +- sdk/python/pulumi_gcp/dataplex/datascan.py | 152 ++-- sdk/python/pulumi_gcp/dataplex/task.py | 128 +-- sdk/python/pulumi_gcp/dataplex/zone.py | 4 +- .../pulumi_gcp/dataproc/autoscaling_policy.py | 28 +- sdk/python/pulumi_gcp/dataproc/cluster.py | 116 +-- sdk/python/pulumi_gcp/dataproc/job.py | 36 +- .../dataproc/metastore_federation.py | 20 +- .../pulumi_gcp/dataproc/metastore_service.py | 104 +-- .../pulumi_gcp/dataproc/workflow_template.py | 104 +-- .../datastream/connection_profile.py | 36 +- sdk/python/pulumi_gcp/datastream/stream.py | 444 +++++------ sdk/python/pulumi_gcp/diagflow/cx_agent.py | 44 +- .../pulumi_gcp/diagflow/cx_entity_type.py | 4 +- .../pulumi_gcp/diagflow/cx_environment.py | 4 +- sdk/python/pulumi_gcp/diagflow/cx_flow.py | 196 ++--- sdk/python/pulumi_gcp/diagflow/cx_intent.py | 12 +- sdk/python/pulumi_gcp/diagflow/cx_page.py | 308 ++++---- .../diagflow/cx_security_settings.py | 44 +- .../pulumi_gcp/diagflow/cx_test_case.py | 92 +-- sdk/python/pulumi_gcp/diagflow/cx_version.py | 4 +- sdk/python/pulumi_gcp/diagflow/cx_webhook.py | 4 +- sdk/python/pulumi_gcp/diagflow/fulfillment.py | 4 +- .../pulumi_gcp/discoveryengine/chat_engine.py | 16 +- .../pulumi_gcp/discoveryengine/data_store.py | 24 +- sdk/python/pulumi_gcp/dns/get_keys.py | 4 +- sdk/python/pulumi_gcp/dns/managed_zone.py | 96 +-- sdk/python/pulumi_gcp/dns/policy.py | 24 +- sdk/python/pulumi_gcp/dns/record_set.py | 40 +- sdk/python/pulumi_gcp/dns/response_policy.py | 52 +- .../pulumi_gcp/dns/response_policy_rule.py | 12 +- .../pulumi_gcp/edgecontainer/cluster.py | 64 +- .../pulumi_gcp/edgecontainer/node_pool.py | 56 +- .../edgecontainer/vpn_connection.py | 12 +- .../document_ai_warehouse_document_schema.py | 40 +- sdk/python/pulumi_gcp/eventarc/trigger.py | 20 +- sdk/python/pulumi_gcp/filestore/backup.py | 8 +- sdk/python/pulumi_gcp/filestore/instance.py | 56 +- sdk/python/pulumi_gcp/filestore/snapshot.py | 8 +- sdk/python/pulumi_gcp/firebase/android_app.py | 16 +- sdk/python/pulumi_gcp/firebase/apple_app.py | 8 +- .../firebase/extensions_instance.py | 68 +- .../firebase/hosting_custom_domain.py | 4 +- .../pulumi_gcp/firebase/hosting_release.py | 8 +- .../pulumi_gcp/firebase/hosting_version.py | 8 +- sdk/python/pulumi_gcp/firebase/web_app.py | 8 +- sdk/python/pulumi_gcp/firestore/database.py | 8 +- sdk/python/pulumi_gcp/firestore/field.py | 12 +- sdk/python/pulumi_gcp/firestore/index.py | 32 +- .../folder/access_approval_settings.py | 8 +- .../pulumi_gcp/folder/iam_audit_config.py | 24 +- sdk/python/pulumi_gcp/folder/iam_member.py | 24 +- sdk/python/pulumi_gcp/folder/iam_policy.py | 24 +- .../pulumi_gcp/folder/organization_policy.py | 4 +- .../pulumi_gcp/gkebackup/backup_plan.py | 260 +++--- .../pulumi_gcp/gkebackup/restore_plan.py | 524 ++++++------ sdk/python/pulumi_gcp/gkehub/feature.py | 180 ++--- .../pulumi_gcp/gkehub/feature_membership.py | 132 ++-- sdk/python/pulumi_gcp/gkehub/fleet.py | 8 +- sdk/python/pulumi_gcp/gkehub/membership.py | 28 +- .../pulumi_gcp/gkehub/membership_binding.py | 8 +- .../gkehub/membership_rbac_role_binding.py | 12 +- .../gkehub/scope_rbac_role_binding.py | 4 +- .../gkeonprem/bare_metal_admin_cluster.py | 200 ++--- .../gkeonprem/bare_metal_cluster.py | 364 ++++----- .../gkeonprem/bare_metal_node_pool.py | 200 ++--- .../pulumi_gcp/gkeonprem/v_mware_cluster.py | 224 +++--- .../pulumi_gcp/gkeonprem/v_mware_node_pool.py | 48 +- sdk/python/pulumi_gcp/healthcare/dataset.py | 4 +- .../pulumi_gcp/healthcare/dicom_store.py | 20 +- .../pulumi_gcp/healthcare/fhir_store.py | 44 +- sdk/python/pulumi_gcp/healthcare/hl7_store.py | 20 +- .../pulumi_gcp/iam/access_boundary_policy.py | 32 +- sdk/python/pulumi_gcp/iam/deny_policy.py | 36 +- sdk/python/pulumi_gcp/iam/workforce_pool.py | 8 +- .../pulumi_gcp/iam/workforce_pool_provider.py | 168 ++-- .../iam/workload_identity_pool_provider.py | 40 +- .../pulumi_gcp/identityplatform/config.py | 64 +- .../identityplatform/inbound_saml_config.py | 28 +- .../project_default_config.py | 20 +- .../tenant_inbound_saml_config.py | 28 +- .../integrationconnectors/connection.py | 264 +++---- .../integrationconnectors/managed_zone.py | 4 +- sdk/python/pulumi_gcp/kms/ekm_connection.py | 12 +- .../kms/get_kms_secret_ciphertext.py | 8 +- .../pulumi_gcp/kms/secret_ciphertext.py | 8 +- .../logging/folder_bucket_config.py | 4 +- sdk/python/pulumi_gcp/logging/metric.py | 56 +- .../logging/organization_bucket_config.py | 4 +- .../logging/project_bucket_config.py | 8 +- sdk/python/pulumi_gcp/looker/instance.py | 76 +- sdk/python/pulumi_gcp/managedkafka/cluster.py | 36 +- sdk/python/pulumi_gcp/managedkafka/topic.py | 16 +- sdk/python/pulumi_gcp/memcache/instance.py | 16 +- .../migrationcenter/preference_set.py | 92 +-- .../pulumi_gcp/monitoring/alert_policy.py | 84 +- .../pulumi_gcp/monitoring/custom_service.py | 4 +- .../pulumi_gcp/monitoring/generic_service.py | 8 +- .../monitoring/get_app_engine_service.py | 4 +- .../monitoring/get_notification_channel.py | 16 +- .../monitoring/metric_descriptor.py | 20 +- .../monitoring/notification_channel.py | 4 +- sdk/python/pulumi_gcp/monitoring/slo.py | 56 +- .../monitoring/uptime_check_config.py | 132 ++-- sdk/python/pulumi_gcp/netapp/backup.py | 4 +- .../pulumi_gcp/netapp/volume_replication.py | 12 +- .../networkconnectivity/policy_based_route.py | 20 +- .../pulumi_gcp/networkconnectivity/spoke.py | 32 +- .../networkmanagement/connectivity_test.py | 36 +- .../networksecurity/authorization_policy.py | 20 +- .../networksecurity/client_tls_policy.py | 24 +- .../gateway_security_policy.py | 84 +- .../networksecurity/security_profile.py | 12 +- .../networksecurity/server_tls_policy.py | 72 +- .../networksecurity/tls_inspection_policy.py | 184 ++--- .../networkservices/edge_cache_keyset.py | 4 +- .../networkservices/edge_cache_origin.py | 60 +- .../networkservices/edge_cache_service.py | 520 ++++++------ .../networkservices/endpoint_policy.py | 28 +- .../pulumi_gcp/networkservices/gateway.py | 16 +- .../pulumi_gcp/networkservices/grpc_route.py | 72 +- .../pulumi_gcp/networkservices/http_route.py | 296 +++---- .../networkservices/service_lb_policies.py | 4 +- .../pulumi_gcp/networkservices/tcp_route.py | 32 +- .../pulumi_gcp/networkservices/tls_route.py | 24 +- sdk/python/pulumi_gcp/notebooks/instance.py | 20 +- sdk/python/pulumi_gcp/notebooks/runtime.py | 180 ++--- .../organizations/access_approval_settings.py | 16 +- .../organizations/iam_audit_config.py | 8 +- .../pulumi_gcp/organizations/iam_member.py | 24 +- .../pulumi_gcp/organizations/iam_policy.py | 24 +- sdk/python/pulumi_gcp/organizations/policy.py | 4 +- sdk/python/pulumi_gcp/orgpolicy/policy.py | 24 +- .../pulumi_gcp/osconfig/guest_policies.py | 56 +- .../osconfig/os_policy_assignment.py | 84 +- .../pulumi_gcp/osconfig/patch_deployment.py | 140 ++-- .../privilegedaccessmanager/entitlement.py | 40 +- .../projects/access_approval_settings.py | 12 +- sdk/python/pulumi_gcp/projects/api_key.py | 56 +- .../pulumi_gcp/projects/iam_audit_config.py | 24 +- sdk/python/pulumi_gcp/projects/iam_binding.py | 24 +- sdk/python/pulumi_gcp/projects/iam_member.py | 24 +- sdk/python/pulumi_gcp/projects/iam_policy.py | 24 +- .../projects/organization_policy.py | 4 +- .../pulumi_gcp/pubsub/lite_subscription.py | 16 +- sdk/python/pulumi_gcp/pubsub/lite_topic.py | 16 +- sdk/python/pulumi_gcp/pubsub/subscription.py | 100 +-- sdk/python/pulumi_gcp/pubsub/topic.py | 24 +- .../pulumi_gcp/recaptcha/enterprise_key.py | 108 +-- sdk/python/pulumi_gcp/redis/instance.py | 16 +- sdk/python/pulumi_gcp/secretmanager/secret.py | 12 +- .../secretmanager/secret_version.py | 12 +- .../securesourcemanager/instance.py | 60 +- .../securesourcemanager/repository.py | 4 +- .../securitycenter/folder_custom_module.py | 24 +- .../securitycenter/instance_iam_binding.py | 28 +- .../securitycenter/instance_iam_member.py | 28 +- .../securitycenter/instance_iam_policy.py | 28 +- ...security_health_analytics_custom_module.py | 24 +- ...security_health_analytics_custom_module.py | 24 +- ...security_health_analytics_custom_module.py | 24 +- .../organization_custom_module.py | 24 +- .../securitycenter/project_custom_module.py | 24 +- .../pulumi_gcp/securityposture/posture.py | 104 +-- .../pulumi_gcp/sourcerepo/repository.py | 8 +- sdk/python/pulumi_gcp/spanner/instance.py | 24 +- .../pulumi_gcp/sql/database_instance.py | 56 +- sdk/python/pulumi_gcp/sql/user.py | 8 +- sdk/python/pulumi_gcp/storage/bucket.py | 24 +- .../storage/get_project_service_account.py | 4 +- .../storage/insights_report_config.py | 32 +- .../pulumi_gcp/storage/transfer_agent_pool.py | 4 +- sdk/python/pulumi_gcp/storage/transfer_job.py | 76 +- sdk/python/pulumi_gcp/tpu/v2_vm.py | 16 +- .../vertex/ai_deployment_resource_pool.py | 32 +- sdk/python/pulumi_gcp/vertex/ai_endpoint.py | 4 +- .../pulumi_gcp/vertex/ai_feature_group.py | 12 +- .../vertex/ai_feature_group_feature.py | 12 +- .../vertex/ai_feature_online_store.py | 44 +- .../ai_feature_online_store_featureview.py | 152 ++-- .../pulumi_gcp/vertex/ai_feature_store.py | 28 +- .../vertex/ai_feature_store_entity_type.py | 60 +- .../ai_feature_store_entity_type_feature.py | 24 +- sdk/python/pulumi_gcp/vertex/ai_index.py | 56 +- .../pulumi_gcp/vertex/ai_index_endpoint.py | 8 +- .../pulumi_gcp/vertex/ai_tensorboard.py | 4 +- sdk/python/pulumi_gcp/vmwareengine/cluster.py | 72 +- .../vmwareengine/external_access_rule.py | 40 +- .../vmwareengine/external_address.py | 24 +- .../pulumi_gcp/vmwareengine/private_cloud.py | 52 +- sdk/python/pulumi_gcp/vmwareengine/subnet.py | 24 +- sdk/python/pulumi_gcp/workbench/instance.py | 132 ++-- .../pulumi_gcp/workstations/workstation.py | 16 +- .../workstations/workstation_cluster.py | 8 +- .../workstations/workstation_config.py | 244 +++--- 416 files changed, 11745 insertions(+), 11743 deletions(-) diff --git a/examples/go.mod b/examples/go.mod index d070a5de59..18fa30f996 100644 --- a/examples/go.mod +++ b/examples/go.mod @@ -5,8 +5,8 @@ go 1.21 require ( github.com/pulumi/pulumi-gcp/sdk/v6 v6.67.0 github.com/pulumi/pulumi-gcp/sdk/v7 v7.0.0-alpha.0 - github.com/pulumi/pulumi/pkg/v3 v3.124.0 - github.com/pulumi/pulumi/sdk/v3 v3.124.0 + github.com/pulumi/pulumi/pkg/v3 v3.126.0 + github.com/pulumi/pulumi/sdk/v3 v3.126.0 github.com/stretchr/testify v1.9.0 ) diff --git a/examples/go.sum b/examples/go.sum index a146a9094f..f71d89344e 100644 --- a/examples/go.sum +++ b/examples/go.sum @@ -349,10 +349,10 @@ github.com/pulumi/esc v0.9.1 h1:HH5eEv8sgyxSpY5a8yePyqFXzA8cvBvapfH8457+mIs= github.com/pulumi/esc v0.9.1/go.mod h1:oEJ6bOsjYlQUpjf70GiX+CXn3VBmpwFDxUTlmtUN84c= github.com/pulumi/pulumi-gcp/sdk/v6 v6.67.0 h1:toKDTQrGp11iU3FQsxqFN+1fgxx4GQFvsmLbUe9++B8= github.com/pulumi/pulumi-gcp/sdk/v6 v6.67.0/go.mod h1:0H6CtMuOB754n2Yzu6XqHqeU99fmH/fsBUKLsMic2OY= -github.com/pulumi/pulumi/pkg/v3 v3.124.0 h1:JgUePx6Ga9geBJ1dku6K8GXTrsBYzXMhKIsk+cxeKo8= -github.com/pulumi/pulumi/pkg/v3 v3.124.0/go.mod h1:/XUDPNoIikS3lcQe1HpGuKs73cO5HqBvOdxXFeC3UHM= -github.com/pulumi/pulumi/sdk/v3 v3.124.0 h1:f9Rb2AhLSaacKTaBPbKXPCfviHxTuhEXafhT4E095Y0= -github.com/pulumi/pulumi/sdk/v3 v3.124.0/go.mod h1:p1U24en3zt51agx+WlNboSOV8eLlPWYAkxMzVEXKbnY= +github.com/pulumi/pulumi/pkg/v3 v3.126.0 h1:XaZU1ehjHN2I5ihkfwxK/UFMDiCDM9FSt2TBnbldAx4= +github.com/pulumi/pulumi/pkg/v3 v3.126.0/go.mod h1:1P4/oK9zceOJUm48QQl/TqjDN68lfsdnTR1FITTFddw= +github.com/pulumi/pulumi/sdk/v3 v3.126.0 h1:6GQVhwG2jgnG7wjRiWgrq0/sU39onctAiBcvTlqb20s= +github.com/pulumi/pulumi/sdk/v3 v3.126.0/go.mod h1:p1U24en3zt51agx+WlNboSOV8eLlPWYAkxMzVEXKbnY= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= diff --git a/provider/cmd/pulumi-resource-gcp/schema.json b/provider/cmd/pulumi-resource-gcp/schema.json index 474c72e7c5..305a6f07e1 100644 --- a/provider/cmd/pulumi-resource-gcp/schema.json +++ b/provider/cmd/pulumi-resource-gcp/schema.json @@ -110644,7 +110644,7 @@ }, "resources": { "gcp:accesscontextmanager/accessLevel:AccessLevel": { - "description": "An AccessLevel is a label that can be applied to requests to GCP services,\nalong with a list of requirements necessary for the label to be applied.\n\n\nTo get more information about AccessLevel, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.accessLevels)\n* How-to Guides\n * [Access Policy Quickstart](https://cloud.google.com/access-context-manager/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Access Level Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst access_level = new gcp.accesscontextmanager.AccessLevel(\"access-level\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\naccess_level = gcp.accesscontextmanager.AccessLevel(\"access-level\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"devicePolicy\": {\n \"requireScreenLock\": True,\n \"osConstraints\": [{\n \"osType\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\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 access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var access_level = new Gcp.AccessContextManager.AccessLevel(\"access-level\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\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/v7/go/gcp/accesscontextmanager\"\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 := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevel(ctx, \"access-level\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\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.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\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 access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var access_level = new AccessLevel(\"access-level\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access-level:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAccessLevel can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AccessLevel can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/accessLevel:AccessLevel default {{name}}\n```\n\n", + "description": "An AccessLevel is a label that can be applied to requests to GCP services,\nalong with a list of requirements necessary for the label to be applied.\n\n\nTo get more information about AccessLevel, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.accessLevels)\n* How-to Guides\n * [Access Policy Quickstart](https://cloud.google.com/access-context-manager/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Access Level Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst access_level = new gcp.accesscontextmanager.AccessLevel(\"access-level\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\naccess_level = gcp.accesscontextmanager.AccessLevel(\"access-level\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\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 access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var access_level = new Gcp.AccessContextManager.AccessLevel(\"access-level\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\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/v7/go/gcp/accesscontextmanager\"\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 := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevel(ctx, \"access-level\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\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.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\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 access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var access_level = new AccessLevel(\"access-level\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access-level:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAccessLevel can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AccessLevel can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/accessLevel:AccessLevel default {{name}}\n```\n\n", "properties": { "basic": { "$ref": "#/types/gcp:accesscontextmanager/AccessLevelBasic:AccessLevelBasic", @@ -110742,7 +110742,7 @@ } }, "gcp:accesscontextmanager/accessLevelCondition:AccessLevelCondition": { - "description": "Allows configuring a single access level condition to be appended to an access level's conditions.\nThis resource is intended to be used in cases where it is not possible to compile a full list\nof conditions to include in a `gcp.accesscontextmanager.AccessLevel` resource,\nto enable them to be added separately.\n\n\u003e **Note:** If this resource is used alongside a `gcp.accesscontextmanager.AccessLevel` resource,\nthe access level resource must have a `lifecycle` block with `ignore_changes = [basic[0].conditions]` so\nthey don't fight over which service accounts should be included.\n\n\nTo get more information about AccessLevelCondition, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.accessLevels)\n* How-to Guides\n * [Access Policy Quickstart](https://cloud.google.com/access-context-manager/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Access Level Condition Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst access_level_service_account = new gcp.accesscontextmanager.AccessLevel(\"access-level-service-account\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\nconst created_later = new gcp.serviceaccount.Account(\"created-later\", {accountId: \"my-account-id\"});\nconst access_level_conditions = new gcp.accesscontextmanager.AccessLevelCondition(\"access-level-conditions\", {\n accessLevel: access_level_service_account.name,\n ipSubnetworks: [\"192.0.4.0/24\"],\n members: [\n \"user:test@google.com\",\n \"user:test2@google.com\",\n pulumi.interpolate`serviceAccount:${created_later.email}`,\n ],\n negate: false,\n devicePolicy: {\n requireScreenLock: false,\n requireAdminApproval: false,\n requireCorpOwned: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"IT\",\n \"US\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\naccess_level_service_account = gcp.accesscontextmanager.AccessLevel(\"access-level-service-account\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"devicePolicy\": {\n \"requireScreenLock\": True,\n \"osConstraints\": [{\n \"osType\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n })\ncreated_later = gcp.serviceaccount.Account(\"created-later\", account_id=\"my-account-id\")\naccess_level_conditions = gcp.accesscontextmanager.AccessLevelCondition(\"access-level-conditions\",\n access_level=access_level_service_account.name,\n ip_subnetworks=[\"192.0.4.0/24\"],\n members=[\n \"user:test@google.com\",\n \"user:test2@google.com\",\n created_later.email.apply(lambda email: f\"serviceAccount:{email}\"),\n ],\n negate=False,\n device_policy={\n \"requireScreenLock\": False,\n \"requireAdminApproval\": False,\n \"requireCorpOwned\": True,\n \"osConstraints\": [{\n \"osType\": \"DESKTOP_CHROME_OS\",\n }],\n },\n regions=[\n \"IT\",\n \"US\",\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 access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var access_level_service_account = new Gcp.AccessContextManager.AccessLevel(\"access-level-service-account\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n });\n\n var created_later = new Gcp.ServiceAccount.Account(\"created-later\", new()\n {\n AccountId = \"my-account-id\",\n });\n\n var access_level_conditions = new Gcp.AccessContextManager.AccessLevelCondition(\"access-level-conditions\", new()\n {\n AccessLevel = access_level_service_account.Name,\n IpSubnetworks = new[]\n {\n \"192.0.4.0/24\",\n },\n Members = new[]\n {\n \"user:test@google.com\",\n \"user:test2@google.com\",\n created_later.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n Negate = false,\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelConditionDevicePolicyArgs\n {\n RequireScreenLock = false,\n RequireAdminApproval = false,\n RequireCorpOwned = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"IT\",\n \"US\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevel(ctx, \"access-level-service-account\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\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 = serviceaccount.NewAccount(ctx, \"created-later\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevelCondition(ctx, \"access-level-conditions\", \u0026accesscontextmanager.AccessLevelConditionArgs{\n\t\t\tAccessLevel: access_level_service_account.Name,\n\t\t\tIpSubnetworks: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.0.4.0/24\"),\n\t\t\t},\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:test@google.com\"),\n\t\t\t\tpulumi.String(\"user:test2@google.com\"),\n\t\t\t\tcreated_later.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tNegate: pulumi.Bool(false),\n\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelConditionDevicePolicyArgs{\n\t\t\t\tRequireScreenLock: pulumi.Bool(false),\n\t\t\t\tRequireAdminApproval: pulumi.Bool(false),\n\t\t\t\tRequireCorpOwned: pulumi.Bool(true),\n\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRegions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\tpulumi.String(\"US\"),\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.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelCondition;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelConditionArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelConditionDevicePolicyArgs;\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 access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var access_level_service_account = new AccessLevel(\"access-level-service-account\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n var created_later = new Account(\"created-later\", AccountArgs.builder()\n .accountId(\"my-account-id\")\n .build());\n\n var access_level_conditions = new AccessLevelCondition(\"access-level-conditions\", AccessLevelConditionArgs.builder()\n .accessLevel(access_level_service_account.name())\n .ipSubnetworks(\"192.0.4.0/24\")\n .members( \n \"user:test@google.com\",\n \"user:test2@google.com\",\n created_later.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .negate(false)\n .devicePolicy(AccessLevelConditionDevicePolicyArgs.builder()\n .requireScreenLock(false)\n .requireAdminApproval(false)\n .requireCorpOwned(true)\n .osConstraints(AccessLevelConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"IT\",\n \"US\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access-level-service-account:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n created-later:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-account-id\n access-level-conditions:\n type: gcp:accesscontextmanager:AccessLevelCondition\n properties:\n accessLevel: ${[\"access-level-service-account\"].name}\n ipSubnetworks:\n - 192.0.4.0/24\n members:\n - user:test@google.com\n - user:test2@google.com\n - serviceAccount:${[\"created-later\"].email}\n negate: false\n devicePolicy:\n requireScreenLock: false\n requireAdminApproval: false\n requireCorpOwned: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "Allows configuring a single access level condition to be appended to an access level's conditions.\nThis resource is intended to be used in cases where it is not possible to compile a full list\nof conditions to include in a `gcp.accesscontextmanager.AccessLevel` resource,\nto enable them to be added separately.\n\n\u003e **Note:** If this resource is used alongside a `gcp.accesscontextmanager.AccessLevel` resource,\nthe access level resource must have a `lifecycle` block with `ignore_changes = [basic[0].conditions]` so\nthey don't fight over which service accounts should be included.\n\n\nTo get more information about AccessLevelCondition, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.accessLevels)\n* How-to Guides\n * [Access Policy Quickstart](https://cloud.google.com/access-context-manager/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Access Level Condition Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst access_level_service_account = new gcp.accesscontextmanager.AccessLevel(\"access-level-service-account\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\nconst created_later = new gcp.serviceaccount.Account(\"created-later\", {accountId: \"my-account-id\"});\nconst access_level_conditions = new gcp.accesscontextmanager.AccessLevelCondition(\"access-level-conditions\", {\n accessLevel: access_level_service_account.name,\n ipSubnetworks: [\"192.0.4.0/24\"],\n members: [\n \"user:test@google.com\",\n \"user:test2@google.com\",\n pulumi.interpolate`serviceAccount:${created_later.email}`,\n ],\n negate: false,\n devicePolicy: {\n requireScreenLock: false,\n requireAdminApproval: false,\n requireCorpOwned: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"IT\",\n \"US\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\naccess_level_service_account = gcp.accesscontextmanager.AccessLevel(\"access-level-service-account\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n })\ncreated_later = gcp.serviceaccount.Account(\"created-later\", account_id=\"my-account-id\")\naccess_level_conditions = gcp.accesscontextmanager.AccessLevelCondition(\"access-level-conditions\",\n access_level=access_level_service_account.name,\n ip_subnetworks=[\"192.0.4.0/24\"],\n members=[\n \"user:test@google.com\",\n \"user:test2@google.com\",\n created_later.email.apply(lambda email: f\"serviceAccount:{email}\"),\n ],\n negate=False,\n device_policy={\n \"require_screen_lock\": False,\n \"require_admin_approval\": False,\n \"require_corp_owned\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n regions=[\n \"IT\",\n \"US\",\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 access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var access_level_service_account = new Gcp.AccessContextManager.AccessLevel(\"access-level-service-account\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n });\n\n var created_later = new Gcp.ServiceAccount.Account(\"created-later\", new()\n {\n AccountId = \"my-account-id\",\n });\n\n var access_level_conditions = new Gcp.AccessContextManager.AccessLevelCondition(\"access-level-conditions\", new()\n {\n AccessLevel = access_level_service_account.Name,\n IpSubnetworks = new[]\n {\n \"192.0.4.0/24\",\n },\n Members = new[]\n {\n \"user:test@google.com\",\n \"user:test2@google.com\",\n created_later.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n Negate = false,\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelConditionDevicePolicyArgs\n {\n RequireScreenLock = false,\n RequireAdminApproval = false,\n RequireCorpOwned = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"IT\",\n \"US\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevel(ctx, \"access-level-service-account\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\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 = serviceaccount.NewAccount(ctx, \"created-later\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevelCondition(ctx, \"access-level-conditions\", \u0026accesscontextmanager.AccessLevelConditionArgs{\n\t\t\tAccessLevel: access_level_service_account.Name,\n\t\t\tIpSubnetworks: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.0.4.0/24\"),\n\t\t\t},\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:test@google.com\"),\n\t\t\t\tpulumi.String(\"user:test2@google.com\"),\n\t\t\t\tcreated_later.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tNegate: pulumi.Bool(false),\n\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelConditionDevicePolicyArgs{\n\t\t\t\tRequireScreenLock: pulumi.Bool(false),\n\t\t\t\tRequireAdminApproval: pulumi.Bool(false),\n\t\t\t\tRequireCorpOwned: pulumi.Bool(true),\n\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRegions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\tpulumi.String(\"US\"),\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.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelCondition;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelConditionArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelConditionDevicePolicyArgs;\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 access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var access_level_service_account = new AccessLevel(\"access-level-service-account\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n var created_later = new Account(\"created-later\", AccountArgs.builder()\n .accountId(\"my-account-id\")\n .build());\n\n var access_level_conditions = new AccessLevelCondition(\"access-level-conditions\", AccessLevelConditionArgs.builder()\n .accessLevel(access_level_service_account.name())\n .ipSubnetworks(\"192.0.4.0/24\")\n .members( \n \"user:test@google.com\",\n \"user:test2@google.com\",\n created_later.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .negate(false)\n .devicePolicy(AccessLevelConditionDevicePolicyArgs.builder()\n .requireScreenLock(false)\n .requireAdminApproval(false)\n .requireCorpOwned(true)\n .osConstraints(AccessLevelConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"IT\",\n \"US\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access-level-service-account:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n created-later:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-account-id\n access-level-conditions:\n type: gcp:accesscontextmanager:AccessLevelCondition\n properties:\n accessLevel: ${[\"access-level-service-account\"].name}\n ipSubnetworks:\n - 192.0.4.0/24\n members:\n - user:test@google.com\n - user:test2@google.com\n - serviceAccount:${[\"created-later\"].email}\n negate: false\n devicePolicy:\n requireScreenLock: false\n requireAdminApproval: false\n requireCorpOwned: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "accessLevel": { "type": "string", @@ -110918,7 +110918,7 @@ } }, "gcp:accesscontextmanager/accessLevels:AccessLevels": { - "description": "## Example Usage\n\n### Access Context Manager Access Levels Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst access_levels = new gcp.accesscontextmanager.AccessLevels(\"access-levels\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n accessLevels: [\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n },\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/mac_no_lock`,\n title: \"mac_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_MAC\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\naccess_levels = gcp.accesscontextmanager.AccessLevels(\"access-levels\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n access_levels=[\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n \"title\": \"chromeos_no_lock\",\n \"basic\": {\n \"conditions\": [{\n \"devicePolicy\": {\n \"requireScreenLock\": True,\n \"osConstraints\": [{\n \"osType\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n },\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/mac_no_lock\"),\n \"title\": \"mac_no_lock\",\n \"basic\": {\n \"conditions\": [{\n \"devicePolicy\": {\n \"requireScreenLock\": True,\n \"osConstraints\": [{\n \"osType\": \"DESKTOP_MAC\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\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 access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var access_levels = new Gcp.AccessContextManager.AccessLevels(\"access-levels\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n AccessLevelDetails = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n },\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/mac_no_lock\"),\n Title = \"mac_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_MAC\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\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/v7/go/gcp/accesscontextmanager\"\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 := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevels(ctx, \"access-levels\", \u0026accesscontextmanager.AccessLevelsArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tAccessLevels: accesscontextmanager.AccessLevelsAccessLevelArray{\n\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\t\t\tBasic: \u0026accesscontextmanager.AccessLevelsAccessLevelBasicArgs{\n\t\t\t\t\t\tConditions: accesscontextmanager.AccessLevelsAccessLevelBasicConditionArray{\n\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionArgs{\n\t\t\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t\t\t},\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\t\u0026accesscontextmanager.AccessLevelsAccessLevelArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/mac_no_lock\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"mac_no_lock\"),\n\t\t\t\t\tBasic: \u0026accesscontextmanager.AccessLevelsAccessLevelBasicArgs{\n\t\t\t\t\t\tConditions: accesscontextmanager.AccessLevelsAccessLevelBasicConditionArray{\n\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionArgs{\n\t\t\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_MAC\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t\t\t},\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.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevels;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelsArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelsAccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelsAccessLevelBasicArgs;\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 access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var access_levels = new AccessLevels(\"access-levels\", AccessLevelsArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .accessLevels( \n AccessLevelsAccessLevelArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelsAccessLevelBasicArgs.builder()\n .conditions(AccessLevelsAccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelsAccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build(),\n AccessLevelsAccessLevelArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/mac_no_lock\", name)))\n .title(\"mac_no_lock\")\n .basic(AccessLevelsAccessLevelBasicArgs.builder()\n .conditions(AccessLevelsAccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelsAccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_MAC\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access-levels:\n type: gcp:accesscontextmanager:AccessLevels\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n accessLevels:\n - name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n - name: accessPolicies/${[\"access-policy\"].name}/accessLevels/mac_no_lock\n title: mac_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_MAC\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAccessLevels can be imported using any of these accepted formats:\n\n* `{{parent}}/accessLevels`\n\n* `{{parent}}`\n\nWhen using the `pulumi import` command, AccessLevels can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/accessLevels:AccessLevels default {{parent}}/accessLevels\n```\n\n```sh\n$ pulumi import gcp:accesscontextmanager/accessLevels:AccessLevels default {{parent}}\n```\n\n", + "description": "## Example Usage\n\n### Access Context Manager Access Levels Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst access_levels = new gcp.accesscontextmanager.AccessLevels(\"access-levels\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n accessLevels: [\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n },\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/mac_no_lock`,\n title: \"mac_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_MAC\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\naccess_levels = gcp.accesscontextmanager.AccessLevels(\"access-levels\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n access_levels=[\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n \"title\": \"chromeos_no_lock\",\n \"basic\": {\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n },\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/mac_no_lock\"),\n \"title\": \"mac_no_lock\",\n \"basic\": {\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_MAC\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\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 access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var access_levels = new Gcp.AccessContextManager.AccessLevels(\"access-levels\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n AccessLevelDetails = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n },\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/mac_no_lock\"),\n Title = \"mac_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_MAC\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\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/v7/go/gcp/accesscontextmanager\"\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 := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevels(ctx, \"access-levels\", \u0026accesscontextmanager.AccessLevelsArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tAccessLevels: accesscontextmanager.AccessLevelsAccessLevelArray{\n\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\t\t\tBasic: \u0026accesscontextmanager.AccessLevelsAccessLevelBasicArgs{\n\t\t\t\t\t\tConditions: accesscontextmanager.AccessLevelsAccessLevelBasicConditionArray{\n\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionArgs{\n\t\t\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t\t\t},\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\t\u0026accesscontextmanager.AccessLevelsAccessLevelArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/mac_no_lock\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"mac_no_lock\"),\n\t\t\t\t\tBasic: \u0026accesscontextmanager.AccessLevelsAccessLevelBasicArgs{\n\t\t\t\t\t\tConditions: accesscontextmanager.AccessLevelsAccessLevelBasicConditionArray{\n\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionArgs{\n\t\t\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_MAC\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t\t\t},\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.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevels;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelsArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelsAccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelsAccessLevelBasicArgs;\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 access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var access_levels = new AccessLevels(\"access-levels\", AccessLevelsArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .accessLevels( \n AccessLevelsAccessLevelArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelsAccessLevelBasicArgs.builder()\n .conditions(AccessLevelsAccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelsAccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build(),\n AccessLevelsAccessLevelArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/mac_no_lock\", name)))\n .title(\"mac_no_lock\")\n .basic(AccessLevelsAccessLevelBasicArgs.builder()\n .conditions(AccessLevelsAccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelsAccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_MAC\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access-levels:\n type: gcp:accesscontextmanager:AccessLevels\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n accessLevels:\n - name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n - name: accessPolicies/${[\"access-policy\"].name}/accessLevels/mac_no_lock\n title: mac_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_MAC\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAccessLevels can be imported using any of these accepted formats:\n\n* `{{parent}}/accessLevels`\n\n* `{{parent}}`\n\nWhen using the `pulumi import` command, AccessLevels can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/accessLevels:AccessLevels default {{parent}}/accessLevels\n```\n\n```sh\n$ pulumi import gcp:accesscontextmanager/accessLevels:AccessLevels default {{parent}}\n```\n\n", "properties": { "accessLevels": { "type": "array", @@ -111481,7 +111481,7 @@ } }, "gcp:accesscontextmanager/gcpUserAccessBinding:GcpUserAccessBinding": { - "description": "Restricts access to Cloud Console and Google Cloud APIs for a set of users using Context-Aware Access.\n\n\nTo get more information about GcpUserAccessBinding, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/organizations.gcpUserAccessBindings)\n\n## Example Usage\n\n### Access Context Manager Gcp User Access Binding Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst group = new gcp.cloudidentity.Group(\"group\", {\n displayName: \"my-identity-group\",\n parent: \"customers/A01b123xz\",\n groupKey: {\n id: \"my-identity-group@example.com\",\n },\n labels: {\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n },\n});\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst accessLevelIdForUserAccessBinding = new gcp.accesscontextmanager.AccessLevel(\"access_level_id_for_user_access_binding\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\"US\"],\n }],\n },\n});\nconst gcpUserAccessBinding = new gcp.accesscontextmanager.GcpUserAccessBinding(\"gcp_user_access_binding\", {\n organizationId: \"123456789\",\n groupKey: std.trimprefixOutput({\n input: group.id,\n prefix: \"groups/\",\n }).apply(invoke =\u003e invoke.result),\n accessLevels: accessLevelIdForUserAccessBinding.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ngroup = gcp.cloudidentity.Group(\"group\",\n display_name=\"my-identity-group\",\n parent=\"customers/A01b123xz\",\n group_key={\n \"id\": \"my-identity-group@example.com\",\n },\n labels={\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n })\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\naccess_level_id_for_user_access_binding = gcp.accesscontextmanager.AccessLevel(\"access_level_id_for_user_access_binding\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"devicePolicy\": {\n \"requireScreenLock\": True,\n \"osConstraints\": [{\n \"osType\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\"US\"],\n }],\n })\ngcp_user_access_binding = gcp.accesscontextmanager.GcpUserAccessBinding(\"gcp_user_access_binding\",\n organization_id=\"123456789\",\n group_key=std.trimprefix_output(input=group.id,\n prefix=\"groups/\").apply(lambda invoke: invoke.result),\n access_levels=access_level_id_for_user_access_binding.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @group = new Gcp.CloudIdentity.Group(\"group\", new()\n {\n DisplayName = \"my-identity-group\",\n Parent = \"customers/A01b123xz\",\n GroupKey = new Gcp.CloudIdentity.Inputs.GroupGroupKeyArgs\n {\n Id = \"my-identity-group@example.com\",\n },\n Labels = \n {\n { \"cloudidentity.googleapis.com/groups.discussion_forum\", \"\" },\n },\n });\n\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var accessLevelIdForUserAccessBinding = new Gcp.AccessContextManager.AccessLevel(\"access_level_id_for_user_access_binding\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"US\",\n },\n },\n },\n },\n });\n\n var gcpUserAccessBinding = new Gcp.AccessContextManager.GcpUserAccessBinding(\"gcp_user_access_binding\", new()\n {\n OrganizationId = \"123456789\",\n GroupKey = Std.Trimprefix.Invoke(new()\n {\n Input = @group.Id,\n Prefix = \"groups/\",\n }).Apply(invoke =\u003e invoke.Result),\n AccessLevels = accessLevelIdForUserAccessBinding.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudidentity\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgroup, err := cloudidentity.NewGroup(ctx, \"group\", \u0026cloudidentity.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"my-identity-group\"),\n\t\t\tParent: pulumi.String(\"customers/A01b123xz\"),\n\t\t\tGroupKey: \u0026cloudidentity.GroupGroupKeyArgs{\n\t\t\t\tId: pulumi.String(\"my-identity-group@example.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"cloudidentity.googleapis.com/groups.discussion_forum\": pulumi.String(\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccessLevelIdForUserAccessBinding, err := accesscontextmanager.NewAccessLevel(ctx, \"access_level_id_for_user_access_binding\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\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 = accesscontextmanager.NewGcpUserAccessBinding(ctx, \"gcp_user_access_binding\", \u0026accesscontextmanager.GcpUserAccessBindingArgs{\n\t\t\tOrganizationId: pulumi.String(\"123456789\"),\n\t\t\tGroupKey: std.TrimprefixOutput(ctx, std.TrimprefixOutputArgs{\n\t\t\t\tInput: group.ID(),\n\t\t\t\tPrefix: pulumi.String(\"groups/\"),\n\t\t\t}, nil).ApplyT(func(invoke std.TrimprefixResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\tAccessLevels: accessLevelIdForUserAccessBinding.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.cloudidentity.Group;\nimport com.pulumi.gcp.cloudidentity.GroupArgs;\nimport com.pulumi.gcp.cloudidentity.inputs.GroupGroupKeyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport com.pulumi.gcp.accesscontextmanager.GcpUserAccessBinding;\nimport com.pulumi.gcp.accesscontextmanager.GcpUserAccessBindingArgs;\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 group = new Group(\"group\", GroupArgs.builder()\n .displayName(\"my-identity-group\")\n .parent(\"customers/A01b123xz\")\n .groupKey(GroupGroupKeyArgs.builder()\n .id(\"my-identity-group@example.com\")\n .build())\n .labels(Map.of(\"cloudidentity.googleapis.com/groups.discussion_forum\", \"\"))\n .build());\n\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var accessLevelIdForUserAccessBinding = new AccessLevel(\"accessLevelIdForUserAccessBinding\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions(\"US\")\n .build())\n .build())\n .build());\n\n var gcpUserAccessBinding = new GcpUserAccessBinding(\"gcpUserAccessBinding\", GcpUserAccessBindingArgs.builder()\n .organizationId(\"123456789\")\n .groupKey(StdFunctions.trimprefix().applyValue(invoke -\u003e invoke.result()))\n .accessLevels(accessLevelIdForUserAccessBinding.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n group:\n type: gcp:cloudidentity:Group\n properties:\n displayName: my-identity-group\n parent: customers/A01b123xz\n groupKey:\n id: my-identity-group@example.com\n labels:\n cloudidentity.googleapis.com/groups.discussion_forum:\n accessLevelIdForUserAccessBinding:\n type: gcp:accesscontextmanager:AccessLevel\n name: access_level_id_for_user_access_binding\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n gcpUserAccessBinding:\n type: gcp:accesscontextmanager:GcpUserAccessBinding\n name: gcp_user_access_binding\n properties:\n organizationId: '123456789'\n groupKey:\n fn::invoke:\n Function: std:trimprefix\n Arguments:\n input: ${group.id}\n prefix: groups/\n Return: result\n accessLevels: ${accessLevelIdForUserAccessBinding.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGcpUserAccessBinding can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, GcpUserAccessBinding can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/gcpUserAccessBinding:GcpUserAccessBinding default {{name}}\n```\n\n", + "description": "Restricts access to Cloud Console and Google Cloud APIs for a set of users using Context-Aware Access.\n\n\nTo get more information about GcpUserAccessBinding, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/organizations.gcpUserAccessBindings)\n\n## Example Usage\n\n### Access Context Manager Gcp User Access Binding Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst group = new gcp.cloudidentity.Group(\"group\", {\n displayName: \"my-identity-group\",\n parent: \"customers/A01b123xz\",\n groupKey: {\n id: \"my-identity-group@example.com\",\n },\n labels: {\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n },\n});\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst accessLevelIdForUserAccessBinding = new gcp.accesscontextmanager.AccessLevel(\"access_level_id_for_user_access_binding\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\"US\"],\n }],\n },\n});\nconst gcpUserAccessBinding = new gcp.accesscontextmanager.GcpUserAccessBinding(\"gcp_user_access_binding\", {\n organizationId: \"123456789\",\n groupKey: std.trimprefixOutput({\n input: group.id,\n prefix: \"groups/\",\n }).apply(invoke =\u003e invoke.result),\n accessLevels: accessLevelIdForUserAccessBinding.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ngroup = gcp.cloudidentity.Group(\"group\",\n display_name=\"my-identity-group\",\n parent=\"customers/A01b123xz\",\n group_key={\n \"id\": \"my-identity-group@example.com\",\n },\n labels={\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n })\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\naccess_level_id_for_user_access_binding = gcp.accesscontextmanager.AccessLevel(\"access_level_id_for_user_access_binding\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\"US\"],\n }],\n })\ngcp_user_access_binding = gcp.accesscontextmanager.GcpUserAccessBinding(\"gcp_user_access_binding\",\n organization_id=\"123456789\",\n group_key=std.trimprefix_output(input=group.id,\n prefix=\"groups/\").apply(lambda invoke: invoke.result),\n access_levels=access_level_id_for_user_access_binding.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @group = new Gcp.CloudIdentity.Group(\"group\", new()\n {\n DisplayName = \"my-identity-group\",\n Parent = \"customers/A01b123xz\",\n GroupKey = new Gcp.CloudIdentity.Inputs.GroupGroupKeyArgs\n {\n Id = \"my-identity-group@example.com\",\n },\n Labels = \n {\n { \"cloudidentity.googleapis.com/groups.discussion_forum\", \"\" },\n },\n });\n\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var accessLevelIdForUserAccessBinding = new Gcp.AccessContextManager.AccessLevel(\"access_level_id_for_user_access_binding\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"US\",\n },\n },\n },\n },\n });\n\n var gcpUserAccessBinding = new Gcp.AccessContextManager.GcpUserAccessBinding(\"gcp_user_access_binding\", new()\n {\n OrganizationId = \"123456789\",\n GroupKey = Std.Trimprefix.Invoke(new()\n {\n Input = @group.Id,\n Prefix = \"groups/\",\n }).Apply(invoke =\u003e invoke.Result),\n AccessLevels = accessLevelIdForUserAccessBinding.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudidentity\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgroup, err := cloudidentity.NewGroup(ctx, \"group\", \u0026cloudidentity.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"my-identity-group\"),\n\t\t\tParent: pulumi.String(\"customers/A01b123xz\"),\n\t\t\tGroupKey: \u0026cloudidentity.GroupGroupKeyArgs{\n\t\t\t\tId: pulumi.String(\"my-identity-group@example.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"cloudidentity.googleapis.com/groups.discussion_forum\": pulumi.String(\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccessLevelIdForUserAccessBinding, err := accesscontextmanager.NewAccessLevel(ctx, \"access_level_id_for_user_access_binding\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\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 = accesscontextmanager.NewGcpUserAccessBinding(ctx, \"gcp_user_access_binding\", \u0026accesscontextmanager.GcpUserAccessBindingArgs{\n\t\t\tOrganizationId: pulumi.String(\"123456789\"),\n\t\t\tGroupKey: pulumi.String(std.TrimprefixOutput(ctx, std.TrimprefixOutputArgs{\n\t\t\t\tInput: group.ID(),\n\t\t\t\tPrefix: pulumi.String(\"groups/\"),\n\t\t\t}, nil).ApplyT(func(invoke std.TrimprefixResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tAccessLevels: accessLevelIdForUserAccessBinding.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.cloudidentity.Group;\nimport com.pulumi.gcp.cloudidentity.GroupArgs;\nimport com.pulumi.gcp.cloudidentity.inputs.GroupGroupKeyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport com.pulumi.gcp.accesscontextmanager.GcpUserAccessBinding;\nimport com.pulumi.gcp.accesscontextmanager.GcpUserAccessBindingArgs;\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 group = new Group(\"group\", GroupArgs.builder()\n .displayName(\"my-identity-group\")\n .parent(\"customers/A01b123xz\")\n .groupKey(GroupGroupKeyArgs.builder()\n .id(\"my-identity-group@example.com\")\n .build())\n .labels(Map.of(\"cloudidentity.googleapis.com/groups.discussion_forum\", \"\"))\n .build());\n\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var accessLevelIdForUserAccessBinding = new AccessLevel(\"accessLevelIdForUserAccessBinding\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions(\"US\")\n .build())\n .build())\n .build());\n\n var gcpUserAccessBinding = new GcpUserAccessBinding(\"gcpUserAccessBinding\", GcpUserAccessBindingArgs.builder()\n .organizationId(\"123456789\")\n .groupKey(StdFunctions.trimprefix().applyValue(invoke -\u003e invoke.result()))\n .accessLevels(accessLevelIdForUserAccessBinding.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n group:\n type: gcp:cloudidentity:Group\n properties:\n displayName: my-identity-group\n parent: customers/A01b123xz\n groupKey:\n id: my-identity-group@example.com\n labels:\n cloudidentity.googleapis.com/groups.discussion_forum:\n accessLevelIdForUserAccessBinding:\n type: gcp:accesscontextmanager:AccessLevel\n name: access_level_id_for_user_access_binding\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n gcpUserAccessBinding:\n type: gcp:accesscontextmanager:GcpUserAccessBinding\n name: gcp_user_access_binding\n properties:\n organizationId: '123456789'\n groupKey:\n fn::invoke:\n Function: std:trimprefix\n Arguments:\n input: ${group.id}\n prefix: groups/\n Return: result\n accessLevels: ${accessLevelIdForUserAccessBinding.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGcpUserAccessBinding can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, GcpUserAccessBinding can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/gcpUserAccessBinding:GcpUserAccessBinding default {{name}}\n```\n\n", "properties": { "accessLevels": { "type": "string", @@ -111602,7 +111602,7 @@ } }, "gcp:accesscontextmanager/servicePerimeter:ServicePerimeter": { - "description": "ServicePerimeter describes a set of GCP resources which can freely import\nand export data amongst themselves, but not export outside of the\nServicePerimeter. If a request with a source within this ServicePerimeter\nhas a target outside of the ServicePerimeter, the request will be blocked.\nOtherwise the request is allowed. There are two types of Service Perimeter\n- Regular and Bridge. Regular Service Perimeters cannot overlap, a single\nGCP project can only belong to a single regular Service Perimeter. Service\nPerimeter Bridges can contain only GCP projects as members, a single GCP\nproject may belong to multiple Service Perimeter Bridges.\n\n\nTo get more information about ServicePerimeter, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.servicePerimeters)\n* How-to Guides\n * [Service Perimeter Quickstart](https://cloud.google.com/vpc-service-controls/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Service Perimeter Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter = new gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/restrict_storage`,\n title: \"restrict_storage\",\n status: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n});\nconst access_level = new gcp.accesscontextmanager.AccessLevel(\"access-level\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: false,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter = gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/restrict_storage\"),\n title=\"restrict_storage\",\n status={\n \"restrictedServices\": [\"storage.googleapis.com\"],\n })\naccess_level = gcp.accesscontextmanager.AccessLevel(\"access-level\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"devicePolicy\": {\n \"requireScreenLock\": False,\n \"osConstraints\": [{\n \"osType\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\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 access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter = new Gcp.AccessContextManager.ServicePerimeter(\"service-perimeter\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/restrict_storage\"),\n Title = \"restrict_storage\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n });\n\n var access_level = new Gcp.AccessContextManager.AccessLevel(\"access-level\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = false,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\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/v7/go/gcp/accesscontextmanager\"\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 := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeter(ctx, \"service-perimeter\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/restrict_storage\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"restrict_storage\"),\n\t\t\tStatus: \u0026accesscontextmanager.ServicePerimeterStatusArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\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 = accesscontextmanager.NewAccessLevel(ctx, \"access-level\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(false),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\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.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\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 access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter = new ServicePerimeter(\"service-perimeter\", ServicePerimeterArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/restrict_storage\", name)))\n .title(\"restrict_storage\")\n .status(ServicePerimeterStatusArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .build());\n\n var access_level = new AccessLevel(\"access-level\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(false)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter:\n type: gcp:accesscontextmanager:ServicePerimeter\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/restrict_storage\n title: restrict_storage\n status:\n restrictedServices:\n - storage.googleapis.com\n access-level:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: false\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Access Context Manager Service Perimeter Secure Data Exchange\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst secure_data_exchange = new gcp.accesscontextmanager.ServicePerimeters(\"secure-data-exchange\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n servicePerimeters: [\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/`,\n title: \"\",\n status: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n },\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/`,\n title: \"\",\n status: {\n restrictedServices: [\"bigtable.googleapis.com\"],\n vpcAccessibleServices: {\n enableRestriction: true,\n allowedServices: [\"bigquery.googleapis.com\"],\n },\n },\n },\n ],\n});\nconst access_level = new gcp.accesscontextmanager.AccessLevel(\"access-level\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/secure_data_exchange`,\n title: \"secure_data_exchange\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: false,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\nconst test_access = new gcp.accesscontextmanager.ServicePerimeter(\"test-access\", {\n parent: `accessPolicies/${test_accessGoogleAccessContextManagerAccessPolicy.name}`,\n name: `accessPolicies/${test_accessGoogleAccessContextManagerAccessPolicy.name}/servicePerimeters/%s`,\n title: \"%s\",\n perimeterType: \"PERIMETER_TYPE_REGULAR\",\n status: {\n restrictedServices: [\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n ],\n accessLevels: [access_level.name],\n vpcAccessibleServices: {\n enableRestriction: true,\n allowedServices: [\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n ],\n },\n ingressPolicies: [{\n ingressFrom: {\n sources: [{\n accessLevel: test_accessGoogleAccessContextManagerAccessLevel.name,\n }],\n identityType: \"ANY_IDENTITY\",\n },\n ingressTo: {\n resources: [\"*\"],\n operations: [\n {\n serviceName: \"bigquery.googleapis.com\",\n methodSelectors: [\n {\n method: \"BigQueryStorage.ReadRows\",\n },\n {\n method: \"TableService.ListTables\",\n },\n {\n permission: \"bigquery.jobs.get\",\n },\n ],\n },\n {\n serviceName: \"storage.googleapis.com\",\n methodSelectors: [{\n method: \"google.storage.objects.create\",\n }],\n },\n ],\n },\n }],\n egressPolicies: [{\n egressFrom: {\n identityType: \"ANY_USER_ACCOUNT\",\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nsecure_data_exchange = gcp.accesscontextmanager.ServicePerimeters(\"secure-data-exchange\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n service_perimeters=[\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/\"),\n \"title\": \"\",\n \"status\": {\n \"restrictedServices\": [\"storage.googleapis.com\"],\n },\n },\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/\"),\n \"title\": \"\",\n \"status\": {\n \"restrictedServices\": [\"bigtable.googleapis.com\"],\n \"vpcAccessibleServices\": {\n \"enableRestriction\": True,\n \"allowedServices\": [\"bigquery.googleapis.com\"],\n },\n },\n },\n ])\naccess_level = gcp.accesscontextmanager.AccessLevel(\"access-level\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/secure_data_exchange\"),\n title=\"secure_data_exchange\",\n basic={\n \"conditions\": [{\n \"devicePolicy\": {\n \"requireScreenLock\": False,\n \"osConstraints\": [{\n \"osType\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n })\ntest_access = gcp.accesscontextmanager.ServicePerimeter(\"test-access\",\n parent=f\"accessPolicies/{test_access_google_access_context_manager_access_policy['name']}\",\n name=f\"accessPolicies/{test_access_google_access_context_manager_access_policy['name']}/servicePerimeters/%s\",\n title=\"%s\",\n perimeter_type=\"PERIMETER_TYPE_REGULAR\",\n status={\n \"restrictedServices\": [\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n ],\n \"accessLevels\": [access_level.name],\n \"vpcAccessibleServices\": {\n \"enableRestriction\": True,\n \"allowedServices\": [\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n ],\n },\n \"ingressPolicies\": [{\n \"ingressFrom\": {\n \"sources\": [{\n \"accessLevel\": test_access_google_access_context_manager_access_level[\"name\"],\n }],\n \"identityType\": \"ANY_IDENTITY\",\n },\n \"ingressTo\": {\n \"resources\": [\"*\"],\n \"operations\": [\n {\n \"serviceName\": \"bigquery.googleapis.com\",\n \"methodSelectors\": [\n {\n \"method\": \"BigQueryStorage.ReadRows\",\n },\n {\n \"method\": \"TableService.ListTables\",\n },\n {\n \"permission\": \"bigquery.jobs.get\",\n },\n ],\n },\n {\n \"serviceName\": \"storage.googleapis.com\",\n \"methodSelectors\": [{\n \"method\": \"google.storage.objects.create\",\n }],\n },\n ],\n },\n }],\n \"egressPolicies\": [{\n \"egressFrom\": {\n \"identityType\": \"ANY_USER_ACCOUNT\",\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 access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var secure_data_exchange = new Gcp.AccessContextManager.ServicePerimeters(\"secure-data-exchange\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n ServicePerimeterDetails = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/\"),\n Title = \"\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/\"),\n Title = \"\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"bigtable.googleapis.com\",\n },\n VpcAccessibleServices = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusVpcAccessibleServicesArgs\n {\n EnableRestriction = true,\n AllowedServices = new[]\n {\n \"bigquery.googleapis.com\",\n },\n },\n },\n },\n },\n });\n\n var access_level = new Gcp.AccessContextManager.AccessLevel(\"access-level\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/secure_data_exchange\"),\n Title = \"secure_data_exchange\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = false,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n });\n\n var test_access = new Gcp.AccessContextManager.ServicePerimeter(\"test-access\", new()\n {\n Parent = $\"accessPolicies/{test_accessGoogleAccessContextManagerAccessPolicy.Name}\",\n Name = $\"accessPolicies/{test_accessGoogleAccessContextManagerAccessPolicy.Name}/servicePerimeters/%s\",\n Title = \"%s\",\n PerimeterType = \"PERIMETER_TYPE_REGULAR\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n },\n AccessLevels = new[]\n {\n access_level.Name,\n },\n VpcAccessibleServices = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusVpcAccessibleServicesArgs\n {\n EnableRestriction = true,\n AllowedServices = new[]\n {\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n },\n },\n IngressPolicies = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyArgs\n {\n IngressFrom = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressFromArgs\n {\n Sources = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressFromSourceArgs\n {\n AccessLevel = test_accessGoogleAccessContextManagerAccessLevel.Name,\n },\n },\n IdentityType = \"ANY_IDENTITY\",\n },\n IngressTo = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToArgs\n {\n Resources = new[]\n {\n \"*\",\n },\n Operations = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationArgs\n {\n ServiceName = \"bigquery.googleapis.com\",\n MethodSelectors = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs\n {\n Method = \"BigQueryStorage.ReadRows\",\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs\n {\n Method = \"TableService.ListTables\",\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs\n {\n Permission = \"bigquery.jobs.get\",\n },\n },\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationArgs\n {\n ServiceName = \"storage.googleapis.com\",\n MethodSelectors = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs\n {\n Method = \"google.storage.objects.create\",\n },\n },\n },\n },\n },\n },\n },\n EgressPolicies = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusEgressPolicyArgs\n {\n EgressFrom = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusEgressPolicyEgressFromArgs\n {\n IdentityType = \"ANY_USER_ACCOUNT\",\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/v7/go/gcp/accesscontextmanager\"\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 := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeters(ctx, \"secure-data-exchange\", \u0026accesscontextmanager.ServicePerimetersArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tServicePerimeters: accesscontextmanager.ServicePerimetersServicePerimeterArray{\n\t\t\t\t\u0026accesscontextmanager.ServicePerimetersServicePerimeterArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"\"),\n\t\t\t\t\tStatus: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusArgs{\n\t\t\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026accesscontextmanager.ServicePerimetersServicePerimeterArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"\"),\n\t\t\t\t\tStatus: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusArgs{\n\t\t\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"bigtable.googleapis.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tVpcAccessibleServices: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusVpcAccessibleServicesArgs{\n\t\t\t\t\t\t\tEnableRestriction: pulumi.Bool(true),\n\t\t\t\t\t\t\tAllowedServices: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"bigquery.googleapis.com\"),\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 = accesscontextmanager.NewAccessLevel(ctx, \"access-level\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/secure_data_exchange\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"secure_data_exchange\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(false),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\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 = accesscontextmanager.NewServicePerimeter(ctx, \"test-access\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: pulumi.String(fmt.Sprintf(\"accessPolicies/%v\", test_accessGoogleAccessContextManagerAccessPolicy.Name)),\n\t\t\tName: pulumi.String(fmt.Sprintf(\"accessPolicies/%v%v\", test_accessGoogleAccessContextManagerAccessPolicy.Name, \"/servicePerimeters/%s\")),\n\t\t\tTitle: pulumi.String(\"%s\"),\n\t\t\tPerimeterType: pulumi.String(\"PERIMETER_TYPE_REGULAR\"),\n\t\t\tStatus: \u0026accesscontextmanager.ServicePerimeterStatusArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"bigquery.googleapis.com\"),\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t},\n\t\t\t\tAccessLevels: pulumi.StringArray{\n\t\t\t\t\taccess_level.Name,\n\t\t\t\t},\n\t\t\t\tVpcAccessibleServices: \u0026accesscontextmanager.ServicePerimeterStatusVpcAccessibleServicesArgs{\n\t\t\t\t\tEnableRestriction: pulumi.Bool(true),\n\t\t\t\t\tAllowedServices: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"bigquery.googleapis.com\"),\n\t\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tIngressPolicies: accesscontextmanager.ServicePerimeterStatusIngressPolicyArray{\n\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyArgs{\n\t\t\t\t\t\tIngressFrom: \u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressFromArgs{\n\t\t\t\t\t\t\tSources: accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressFromSourceArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressFromSourceArgs{\n\t\t\t\t\t\t\t\t\tAccessLevel: pulumi.Any(test_accessGoogleAccessContextManagerAccessLevel.Name),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tIdentityType: pulumi.String(\"ANY_IDENTITY\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tIngressTo: \u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToArgs{\n\t\t\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tOperations: accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationArgs{\n\t\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"bigquery.googleapis.com\"),\n\t\t\t\t\t\t\t\t\tMethodSelectors: accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArray{\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs{\n\t\t\t\t\t\t\t\t\t\t\tMethod: pulumi.String(\"BigQueryStorage.ReadRows\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs{\n\t\t\t\t\t\t\t\t\t\t\tMethod: pulumi.String(\"TableService.ListTables\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs{\n\t\t\t\t\t\t\t\t\t\t\tPermission: pulumi.String(\"bigquery.jobs.get\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationArgs{\n\t\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t\t\t\t\tMethodSelectors: accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArray{\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs{\n\t\t\t\t\t\t\t\t\t\t\tMethod: pulumi.String(\"google.storage.objects.create\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tEgressPolicies: accesscontextmanager.ServicePerimeterStatusEgressPolicyArray{\n\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusEgressPolicyArgs{\n\t\t\t\t\t\tEgressFrom: \u0026accesscontextmanager.ServicePerimeterStatusEgressPolicyEgressFromArgs{\n\t\t\t\t\t\t\tIdentityType: pulumi.String(\"ANY_USER_ACCOUNT\"),\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.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeters;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimetersArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterStatusVpcAccessibleServicesArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusVpcAccessibleServicesArgs;\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 access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var secure_data_exchange = new ServicePerimeters(\"secure-data-exchange\", ServicePerimetersArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .servicePerimeters( \n ServicePerimetersServicePerimeterArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/\", name)))\n .title(\"\")\n .status(ServicePerimetersServicePerimeterStatusArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .build(),\n ServicePerimetersServicePerimeterArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/\", name)))\n .title(\"\")\n .status(ServicePerimetersServicePerimeterStatusArgs.builder()\n .restrictedServices(\"bigtable.googleapis.com\")\n .vpcAccessibleServices(ServicePerimetersServicePerimeterStatusVpcAccessibleServicesArgs.builder()\n .enableRestriction(true)\n .allowedServices(\"bigquery.googleapis.com\")\n .build())\n .build())\n .build())\n .build());\n\n var access_level = new AccessLevel(\"access-level\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/secure_data_exchange\", name)))\n .title(\"secure_data_exchange\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(false)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n var test_access = new ServicePerimeter(\"test-access\", ServicePerimeterArgs.builder()\n .parent(String.format(\"accessPolicies/%s\", test_accessGoogleAccessContextManagerAccessPolicy.name()))\n .name(String.format(\"accessPolicies/%s/servicePerimeters/%s\", test_accessGoogleAccessContextManagerAccessPolicy.name()))\n .title(\"%s\")\n .perimeterType(\"PERIMETER_TYPE_REGULAR\")\n .status(ServicePerimeterStatusArgs.builder()\n .restrictedServices( \n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\")\n .accessLevels(access_level.name())\n .vpcAccessibleServices(ServicePerimeterStatusVpcAccessibleServicesArgs.builder()\n .enableRestriction(true)\n .allowedServices( \n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\")\n .build())\n .ingressPolicies(ServicePerimeterStatusIngressPolicyArgs.builder()\n .ingressFrom(ServicePerimeterStatusIngressPolicyIngressFromArgs.builder()\n .sources(ServicePerimeterStatusIngressPolicyIngressFromSourceArgs.builder()\n .accessLevel(test_accessGoogleAccessContextManagerAccessLevel.name())\n .build())\n .identityType(\"ANY_IDENTITY\")\n .build())\n .ingressTo(ServicePerimeterStatusIngressPolicyIngressToArgs.builder()\n .resources(\"*\")\n .operations( \n ServicePerimeterStatusIngressPolicyIngressToOperationArgs.builder()\n .serviceName(\"bigquery.googleapis.com\")\n .methodSelectors( \n ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs.builder()\n .method(\"BigQueryStorage.ReadRows\")\n .build(),\n ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs.builder()\n .method(\"TableService.ListTables\")\n .build(),\n ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs.builder()\n .permission(\"bigquery.jobs.get\")\n .build())\n .build(),\n ServicePerimeterStatusIngressPolicyIngressToOperationArgs.builder()\n .serviceName(\"storage.googleapis.com\")\n .methodSelectors(ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs.builder()\n .method(\"google.storage.objects.create\")\n .build())\n .build())\n .build())\n .build())\n .egressPolicies(ServicePerimeterStatusEgressPolicyArgs.builder()\n .egressFrom(ServicePerimeterStatusEgressPolicyEgressFromArgs.builder()\n .identityType(\"ANY_USER_ACCOUNT\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secure-data-exchange:\n type: gcp:accesscontextmanager:ServicePerimeters\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n servicePerimeters:\n - name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/\n title:\n status:\n restrictedServices:\n - storage.googleapis.com\n - name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/\n title:\n status:\n restrictedServices:\n - bigtable.googleapis.com\n vpcAccessibleServices:\n enableRestriction: true\n allowedServices:\n - bigquery.googleapis.com\n access-level:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/secure_data_exchange\n title: secure_data_exchange\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: false\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n test-access:\n type: gcp:accesscontextmanager:ServicePerimeter\n properties:\n parent: accessPolicies/${[\"test-accessGoogleAccessContextManagerAccessPolicy\"].name}\n name: accessPolicies/${[\"test-accessGoogleAccessContextManagerAccessPolicy\"].name}/servicePerimeters/%s\n title: '%s'\n perimeterType: PERIMETER_TYPE_REGULAR\n status:\n restrictedServices:\n - bigquery.googleapis.com\n - storage.googleapis.com\n accessLevels:\n - ${[\"access-level\"].name}\n vpcAccessibleServices:\n enableRestriction: true\n allowedServices:\n - bigquery.googleapis.com\n - storage.googleapis.com\n ingressPolicies:\n - ingressFrom:\n sources:\n - accessLevel: ${[\"test-accessGoogleAccessContextManagerAccessLevel\"].name}\n identityType: ANY_IDENTITY\n ingressTo:\n resources:\n - '*'\n operations:\n - serviceName: bigquery.googleapis.com\n methodSelectors:\n - method: BigQueryStorage.ReadRows\n - method: TableService.ListTables\n - permission: bigquery.jobs.get\n - serviceName: storage.googleapis.com\n methodSelectors:\n - method: google.storage.objects.create\n egressPolicies:\n - egressFrom:\n identityType: ANY_USER_ACCOUNT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Access Context Manager Service Perimeter Dry-Run\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter = new gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/restrict_bigquery_dryrun_storage`,\n title: \"restrict_bigquery_dryrun_storage\",\n status: {\n restrictedServices: [\"bigquery.googleapis.com\"],\n },\n spec: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n useExplicitDryRunSpec: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter = gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/restrict_bigquery_dryrun_storage\"),\n title=\"restrict_bigquery_dryrun_storage\",\n status={\n \"restrictedServices\": [\"bigquery.googleapis.com\"],\n },\n spec={\n \"restrictedServices\": [\"storage.googleapis.com\"],\n },\n use_explicit_dry_run_spec=True)\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 access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter = new Gcp.AccessContextManager.ServicePerimeter(\"service-perimeter\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/restrict_bigquery_dryrun_storage\"),\n Title = \"restrict_bigquery_dryrun_storage\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"bigquery.googleapis.com\",\n },\n },\n Spec = new Gcp.AccessContextManager.Inputs.ServicePerimeterSpecArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n UseExplicitDryRunSpec = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/accesscontextmanager\"\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 := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeter(ctx, \"service-perimeter\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/restrict_bigquery_dryrun_storage\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"restrict_bigquery_dryrun_storage\"),\n\t\t\tStatus: \u0026accesscontextmanager.ServicePerimeterStatusArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"bigquery.googleapis.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSpec: \u0026accesscontextmanager.ServicePerimeterSpecArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tUseExplicitDryRunSpec: pulumi.Bool(true),\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.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterSpecArgs;\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 access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter = new ServicePerimeter(\"service-perimeter\", ServicePerimeterArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/restrict_bigquery_dryrun_storage\", name)))\n .title(\"restrict_bigquery_dryrun_storage\")\n .status(ServicePerimeterStatusArgs.builder()\n .restrictedServices(\"bigquery.googleapis.com\")\n .build())\n .spec(ServicePerimeterSpecArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .useExplicitDryRunSpec(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter:\n type: gcp:accesscontextmanager:ServicePerimeter\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/restrict_bigquery_dryrun_storage\n title: restrict_bigquery_dryrun_storage\n status:\n restrictedServices:\n - bigquery.googleapis.com\n spec:\n restrictedServices:\n - storage.googleapis.com\n useExplicitDryRunSpec: true\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServicePerimeter can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ServicePerimeter can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeter:ServicePerimeter default {{name}}\n```\n\n", + "description": "ServicePerimeter describes a set of GCP resources which can freely import\nand export data amongst themselves, but not export outside of the\nServicePerimeter. If a request with a source within this ServicePerimeter\nhas a target outside of the ServicePerimeter, the request will be blocked.\nOtherwise the request is allowed. There are two types of Service Perimeter\n- Regular and Bridge. Regular Service Perimeters cannot overlap, a single\nGCP project can only belong to a single regular Service Perimeter. Service\nPerimeter Bridges can contain only GCP projects as members, a single GCP\nproject may belong to multiple Service Perimeter Bridges.\n\n\nTo get more information about ServicePerimeter, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.servicePerimeters)\n* How-to Guides\n * [Service Perimeter Quickstart](https://cloud.google.com/vpc-service-controls/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Service Perimeter Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter = new gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/restrict_storage`,\n title: \"restrict_storage\",\n status: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n});\nconst access_level = new gcp.accesscontextmanager.AccessLevel(\"access-level\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: false,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter = gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/restrict_storage\"),\n title=\"restrict_storage\",\n status={\n \"restricted_services\": [\"storage.googleapis.com\"],\n })\naccess_level = gcp.accesscontextmanager.AccessLevel(\"access-level\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": False,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\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 access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter = new Gcp.AccessContextManager.ServicePerimeter(\"service-perimeter\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/restrict_storage\"),\n Title = \"restrict_storage\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n });\n\n var access_level = new Gcp.AccessContextManager.AccessLevel(\"access-level\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = false,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\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/v7/go/gcp/accesscontextmanager\"\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 := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeter(ctx, \"service-perimeter\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/restrict_storage\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"restrict_storage\"),\n\t\t\tStatus: \u0026accesscontextmanager.ServicePerimeterStatusArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\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 = accesscontextmanager.NewAccessLevel(ctx, \"access-level\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(false),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\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.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\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 access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter = new ServicePerimeter(\"service-perimeter\", ServicePerimeterArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/restrict_storage\", name)))\n .title(\"restrict_storage\")\n .status(ServicePerimeterStatusArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .build());\n\n var access_level = new AccessLevel(\"access-level\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(false)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter:\n type: gcp:accesscontextmanager:ServicePerimeter\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/restrict_storage\n title: restrict_storage\n status:\n restrictedServices:\n - storage.googleapis.com\n access-level:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: false\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Access Context Manager Service Perimeter Secure Data Exchange\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst secure_data_exchange = new gcp.accesscontextmanager.ServicePerimeters(\"secure-data-exchange\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n servicePerimeters: [\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/`,\n title: \"\",\n status: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n },\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/`,\n title: \"\",\n status: {\n restrictedServices: [\"bigtable.googleapis.com\"],\n vpcAccessibleServices: {\n enableRestriction: true,\n allowedServices: [\"bigquery.googleapis.com\"],\n },\n },\n },\n ],\n});\nconst access_level = new gcp.accesscontextmanager.AccessLevel(\"access-level\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/secure_data_exchange`,\n title: \"secure_data_exchange\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: false,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\nconst test_access = new gcp.accesscontextmanager.ServicePerimeter(\"test-access\", {\n parent: `accessPolicies/${test_accessGoogleAccessContextManagerAccessPolicy.name}`,\n name: `accessPolicies/${test_accessGoogleAccessContextManagerAccessPolicy.name}/servicePerimeters/%s`,\n title: \"%s\",\n perimeterType: \"PERIMETER_TYPE_REGULAR\",\n status: {\n restrictedServices: [\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n ],\n accessLevels: [access_level.name],\n vpcAccessibleServices: {\n enableRestriction: true,\n allowedServices: [\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n ],\n },\n ingressPolicies: [{\n ingressFrom: {\n sources: [{\n accessLevel: test_accessGoogleAccessContextManagerAccessLevel.name,\n }],\n identityType: \"ANY_IDENTITY\",\n },\n ingressTo: {\n resources: [\"*\"],\n operations: [\n {\n serviceName: \"bigquery.googleapis.com\",\n methodSelectors: [\n {\n method: \"BigQueryStorage.ReadRows\",\n },\n {\n method: \"TableService.ListTables\",\n },\n {\n permission: \"bigquery.jobs.get\",\n },\n ],\n },\n {\n serviceName: \"storage.googleapis.com\",\n methodSelectors: [{\n method: \"google.storage.objects.create\",\n }],\n },\n ],\n },\n }],\n egressPolicies: [{\n egressFrom: {\n identityType: \"ANY_USER_ACCOUNT\",\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nsecure_data_exchange = gcp.accesscontextmanager.ServicePerimeters(\"secure-data-exchange\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n service_perimeters=[\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/\"),\n \"title\": \"\",\n \"status\": {\n \"restricted_services\": [\"storage.googleapis.com\"],\n },\n },\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/\"),\n \"title\": \"\",\n \"status\": {\n \"restricted_services\": [\"bigtable.googleapis.com\"],\n \"vpc_accessible_services\": {\n \"enable_restriction\": True,\n \"allowed_services\": [\"bigquery.googleapis.com\"],\n },\n },\n },\n ])\naccess_level = gcp.accesscontextmanager.AccessLevel(\"access-level\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/secure_data_exchange\"),\n title=\"secure_data_exchange\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": False,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n })\ntest_access = gcp.accesscontextmanager.ServicePerimeter(\"test-access\",\n parent=f\"accessPolicies/{test_access_google_access_context_manager_access_policy['name']}\",\n name=f\"accessPolicies/{test_access_google_access_context_manager_access_policy['name']}/servicePerimeters/%s\",\n title=\"%s\",\n perimeter_type=\"PERIMETER_TYPE_REGULAR\",\n status={\n \"restricted_services\": [\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n ],\n \"access_levels\": [access_level.name],\n \"vpc_accessible_services\": {\n \"enable_restriction\": True,\n \"allowed_services\": [\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n ],\n },\n \"ingress_policies\": [{\n \"ingress_from\": {\n \"sources\": [{\n \"access_level\": test_access_google_access_context_manager_access_level[\"name\"],\n }],\n \"identity_type\": \"ANY_IDENTITY\",\n },\n \"ingress_to\": {\n \"resources\": [\"*\"],\n \"operations\": [\n {\n \"service_name\": \"bigquery.googleapis.com\",\n \"method_selectors\": [\n {\n \"method\": \"BigQueryStorage.ReadRows\",\n },\n {\n \"method\": \"TableService.ListTables\",\n },\n {\n \"permission\": \"bigquery.jobs.get\",\n },\n ],\n },\n {\n \"service_name\": \"storage.googleapis.com\",\n \"method_selectors\": [{\n \"method\": \"google.storage.objects.create\",\n }],\n },\n ],\n },\n }],\n \"egress_policies\": [{\n \"egress_from\": {\n \"identity_type\": \"ANY_USER_ACCOUNT\",\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 access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var secure_data_exchange = new Gcp.AccessContextManager.ServicePerimeters(\"secure-data-exchange\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n ServicePerimeterDetails = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/\"),\n Title = \"\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/\"),\n Title = \"\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"bigtable.googleapis.com\",\n },\n VpcAccessibleServices = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusVpcAccessibleServicesArgs\n {\n EnableRestriction = true,\n AllowedServices = new[]\n {\n \"bigquery.googleapis.com\",\n },\n },\n },\n },\n },\n });\n\n var access_level = new Gcp.AccessContextManager.AccessLevel(\"access-level\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/secure_data_exchange\"),\n Title = \"secure_data_exchange\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = false,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n });\n\n var test_access = new Gcp.AccessContextManager.ServicePerimeter(\"test-access\", new()\n {\n Parent = $\"accessPolicies/{test_accessGoogleAccessContextManagerAccessPolicy.Name}\",\n Name = $\"accessPolicies/{test_accessGoogleAccessContextManagerAccessPolicy.Name}/servicePerimeters/%s\",\n Title = \"%s\",\n PerimeterType = \"PERIMETER_TYPE_REGULAR\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n },\n AccessLevels = new[]\n {\n access_level.Name,\n },\n VpcAccessibleServices = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusVpcAccessibleServicesArgs\n {\n EnableRestriction = true,\n AllowedServices = new[]\n {\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n },\n },\n IngressPolicies = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyArgs\n {\n IngressFrom = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressFromArgs\n {\n Sources = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressFromSourceArgs\n {\n AccessLevel = test_accessGoogleAccessContextManagerAccessLevel.Name,\n },\n },\n IdentityType = \"ANY_IDENTITY\",\n },\n IngressTo = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToArgs\n {\n Resources = new[]\n {\n \"*\",\n },\n Operations = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationArgs\n {\n ServiceName = \"bigquery.googleapis.com\",\n MethodSelectors = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs\n {\n Method = \"BigQueryStorage.ReadRows\",\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs\n {\n Method = \"TableService.ListTables\",\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs\n {\n Permission = \"bigquery.jobs.get\",\n },\n },\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationArgs\n {\n ServiceName = \"storage.googleapis.com\",\n MethodSelectors = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs\n {\n Method = \"google.storage.objects.create\",\n },\n },\n },\n },\n },\n },\n },\n EgressPolicies = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusEgressPolicyArgs\n {\n EgressFrom = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusEgressPolicyEgressFromArgs\n {\n IdentityType = \"ANY_USER_ACCOUNT\",\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/v7/go/gcp/accesscontextmanager\"\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 := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeters(ctx, \"secure-data-exchange\", \u0026accesscontextmanager.ServicePerimetersArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tServicePerimeters: accesscontextmanager.ServicePerimetersServicePerimeterArray{\n\t\t\t\t\u0026accesscontextmanager.ServicePerimetersServicePerimeterArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"\"),\n\t\t\t\t\tStatus: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusArgs{\n\t\t\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026accesscontextmanager.ServicePerimetersServicePerimeterArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"\"),\n\t\t\t\t\tStatus: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusArgs{\n\t\t\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"bigtable.googleapis.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tVpcAccessibleServices: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusVpcAccessibleServicesArgs{\n\t\t\t\t\t\t\tEnableRestriction: pulumi.Bool(true),\n\t\t\t\t\t\t\tAllowedServices: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"bigquery.googleapis.com\"),\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 = accesscontextmanager.NewAccessLevel(ctx, \"access-level\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/secure_data_exchange\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"secure_data_exchange\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(false),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\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 = accesscontextmanager.NewServicePerimeter(ctx, \"test-access\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: pulumi.String(fmt.Sprintf(\"accessPolicies/%v\", test_accessGoogleAccessContextManagerAccessPolicy.Name)),\n\t\t\tName: pulumi.String(fmt.Sprintf(\"accessPolicies/%v%v\", test_accessGoogleAccessContextManagerAccessPolicy.Name, \"/servicePerimeters/%s\")),\n\t\t\tTitle: pulumi.String(\"%s\"),\n\t\t\tPerimeterType: pulumi.String(\"PERIMETER_TYPE_REGULAR\"),\n\t\t\tStatus: \u0026accesscontextmanager.ServicePerimeterStatusArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"bigquery.googleapis.com\"),\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t},\n\t\t\t\tAccessLevels: pulumi.StringArray{\n\t\t\t\t\taccess_level.Name,\n\t\t\t\t},\n\t\t\t\tVpcAccessibleServices: \u0026accesscontextmanager.ServicePerimeterStatusVpcAccessibleServicesArgs{\n\t\t\t\t\tEnableRestriction: pulumi.Bool(true),\n\t\t\t\t\tAllowedServices: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"bigquery.googleapis.com\"),\n\t\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tIngressPolicies: accesscontextmanager.ServicePerimeterStatusIngressPolicyArray{\n\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyArgs{\n\t\t\t\t\t\tIngressFrom: \u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressFromArgs{\n\t\t\t\t\t\t\tSources: accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressFromSourceArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressFromSourceArgs{\n\t\t\t\t\t\t\t\t\tAccessLevel: pulumi.Any(test_accessGoogleAccessContextManagerAccessLevel.Name),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tIdentityType: pulumi.String(\"ANY_IDENTITY\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tIngressTo: \u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToArgs{\n\t\t\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tOperations: accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationArgs{\n\t\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"bigquery.googleapis.com\"),\n\t\t\t\t\t\t\t\t\tMethodSelectors: accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArray{\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs{\n\t\t\t\t\t\t\t\t\t\t\tMethod: pulumi.String(\"BigQueryStorage.ReadRows\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs{\n\t\t\t\t\t\t\t\t\t\t\tMethod: pulumi.String(\"TableService.ListTables\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs{\n\t\t\t\t\t\t\t\t\t\t\tPermission: pulumi.String(\"bigquery.jobs.get\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationArgs{\n\t\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t\t\t\t\tMethodSelectors: accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArray{\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs{\n\t\t\t\t\t\t\t\t\t\t\tMethod: pulumi.String(\"google.storage.objects.create\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tEgressPolicies: accesscontextmanager.ServicePerimeterStatusEgressPolicyArray{\n\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusEgressPolicyArgs{\n\t\t\t\t\t\tEgressFrom: \u0026accesscontextmanager.ServicePerimeterStatusEgressPolicyEgressFromArgs{\n\t\t\t\t\t\t\tIdentityType: pulumi.String(\"ANY_USER_ACCOUNT\"),\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.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeters;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimetersArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterStatusVpcAccessibleServicesArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusVpcAccessibleServicesArgs;\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 access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var secure_data_exchange = new ServicePerimeters(\"secure-data-exchange\", ServicePerimetersArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .servicePerimeters( \n ServicePerimetersServicePerimeterArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/\", name)))\n .title(\"\")\n .status(ServicePerimetersServicePerimeterStatusArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .build(),\n ServicePerimetersServicePerimeterArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/\", name)))\n .title(\"\")\n .status(ServicePerimetersServicePerimeterStatusArgs.builder()\n .restrictedServices(\"bigtable.googleapis.com\")\n .vpcAccessibleServices(ServicePerimetersServicePerimeterStatusVpcAccessibleServicesArgs.builder()\n .enableRestriction(true)\n .allowedServices(\"bigquery.googleapis.com\")\n .build())\n .build())\n .build())\n .build());\n\n var access_level = new AccessLevel(\"access-level\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/secure_data_exchange\", name)))\n .title(\"secure_data_exchange\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(false)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n var test_access = new ServicePerimeter(\"test-access\", ServicePerimeterArgs.builder()\n .parent(String.format(\"accessPolicies/%s\", test_accessGoogleAccessContextManagerAccessPolicy.name()))\n .name(String.format(\"accessPolicies/%s/servicePerimeters/%s\", test_accessGoogleAccessContextManagerAccessPolicy.name()))\n .title(\"%s\")\n .perimeterType(\"PERIMETER_TYPE_REGULAR\")\n .status(ServicePerimeterStatusArgs.builder()\n .restrictedServices( \n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\")\n .accessLevels(access_level.name())\n .vpcAccessibleServices(ServicePerimeterStatusVpcAccessibleServicesArgs.builder()\n .enableRestriction(true)\n .allowedServices( \n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\")\n .build())\n .ingressPolicies(ServicePerimeterStatusIngressPolicyArgs.builder()\n .ingressFrom(ServicePerimeterStatusIngressPolicyIngressFromArgs.builder()\n .sources(ServicePerimeterStatusIngressPolicyIngressFromSourceArgs.builder()\n .accessLevel(test_accessGoogleAccessContextManagerAccessLevel.name())\n .build())\n .identityType(\"ANY_IDENTITY\")\n .build())\n .ingressTo(ServicePerimeterStatusIngressPolicyIngressToArgs.builder()\n .resources(\"*\")\n .operations( \n ServicePerimeterStatusIngressPolicyIngressToOperationArgs.builder()\n .serviceName(\"bigquery.googleapis.com\")\n .methodSelectors( \n ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs.builder()\n .method(\"BigQueryStorage.ReadRows\")\n .build(),\n ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs.builder()\n .method(\"TableService.ListTables\")\n .build(),\n ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs.builder()\n .permission(\"bigquery.jobs.get\")\n .build())\n .build(),\n ServicePerimeterStatusIngressPolicyIngressToOperationArgs.builder()\n .serviceName(\"storage.googleapis.com\")\n .methodSelectors(ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs.builder()\n .method(\"google.storage.objects.create\")\n .build())\n .build())\n .build())\n .build())\n .egressPolicies(ServicePerimeterStatusEgressPolicyArgs.builder()\n .egressFrom(ServicePerimeterStatusEgressPolicyEgressFromArgs.builder()\n .identityType(\"ANY_USER_ACCOUNT\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secure-data-exchange:\n type: gcp:accesscontextmanager:ServicePerimeters\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n servicePerimeters:\n - name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/\n title:\n status:\n restrictedServices:\n - storage.googleapis.com\n - name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/\n title:\n status:\n restrictedServices:\n - bigtable.googleapis.com\n vpcAccessibleServices:\n enableRestriction: true\n allowedServices:\n - bigquery.googleapis.com\n access-level:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/secure_data_exchange\n title: secure_data_exchange\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: false\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n test-access:\n type: gcp:accesscontextmanager:ServicePerimeter\n properties:\n parent: accessPolicies/${[\"test-accessGoogleAccessContextManagerAccessPolicy\"].name}\n name: accessPolicies/${[\"test-accessGoogleAccessContextManagerAccessPolicy\"].name}/servicePerimeters/%s\n title: '%s'\n perimeterType: PERIMETER_TYPE_REGULAR\n status:\n restrictedServices:\n - bigquery.googleapis.com\n - storage.googleapis.com\n accessLevels:\n - ${[\"access-level\"].name}\n vpcAccessibleServices:\n enableRestriction: true\n allowedServices:\n - bigquery.googleapis.com\n - storage.googleapis.com\n ingressPolicies:\n - ingressFrom:\n sources:\n - accessLevel: ${[\"test-accessGoogleAccessContextManagerAccessLevel\"].name}\n identityType: ANY_IDENTITY\n ingressTo:\n resources:\n - '*'\n operations:\n - serviceName: bigquery.googleapis.com\n methodSelectors:\n - method: BigQueryStorage.ReadRows\n - method: TableService.ListTables\n - permission: bigquery.jobs.get\n - serviceName: storage.googleapis.com\n methodSelectors:\n - method: google.storage.objects.create\n egressPolicies:\n - egressFrom:\n identityType: ANY_USER_ACCOUNT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Access Context Manager Service Perimeter Dry-Run\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter = new gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/restrict_bigquery_dryrun_storage`,\n title: \"restrict_bigquery_dryrun_storage\",\n status: {\n restrictedServices: [\"bigquery.googleapis.com\"],\n },\n spec: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n useExplicitDryRunSpec: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter = gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/restrict_bigquery_dryrun_storage\"),\n title=\"restrict_bigquery_dryrun_storage\",\n status={\n \"restricted_services\": [\"bigquery.googleapis.com\"],\n },\n spec={\n \"restricted_services\": [\"storage.googleapis.com\"],\n },\n use_explicit_dry_run_spec=True)\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 access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter = new Gcp.AccessContextManager.ServicePerimeter(\"service-perimeter\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/restrict_bigquery_dryrun_storage\"),\n Title = \"restrict_bigquery_dryrun_storage\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"bigquery.googleapis.com\",\n },\n },\n Spec = new Gcp.AccessContextManager.Inputs.ServicePerimeterSpecArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n UseExplicitDryRunSpec = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/accesscontextmanager\"\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 := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeter(ctx, \"service-perimeter\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/restrict_bigquery_dryrun_storage\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"restrict_bigquery_dryrun_storage\"),\n\t\t\tStatus: \u0026accesscontextmanager.ServicePerimeterStatusArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"bigquery.googleapis.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSpec: \u0026accesscontextmanager.ServicePerimeterSpecArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tUseExplicitDryRunSpec: pulumi.Bool(true),\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.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterSpecArgs;\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 access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter = new ServicePerimeter(\"service-perimeter\", ServicePerimeterArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/restrict_bigquery_dryrun_storage\", name)))\n .title(\"restrict_bigquery_dryrun_storage\")\n .status(ServicePerimeterStatusArgs.builder()\n .restrictedServices(\"bigquery.googleapis.com\")\n .build())\n .spec(ServicePerimeterSpecArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .useExplicitDryRunSpec(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter:\n type: gcp:accesscontextmanager:ServicePerimeter\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/restrict_bigquery_dryrun_storage\n title: restrict_bigquery_dryrun_storage\n status:\n restrictedServices:\n - bigquery.googleapis.com\n spec:\n restrictedServices:\n - storage.googleapis.com\n useExplicitDryRunSpec: true\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServicePerimeter can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ServicePerimeter can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeter:ServicePerimeter default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -111744,7 +111744,7 @@ } }, "gcp:accesscontextmanager/servicePerimeterDryRunResource:ServicePerimeterDryRunResource": { - "description": "Allows configuring a single GCP resource that should be inside of the `spec` block of a dry run service perimeter.\nThis resource is intended to be used in cases where it is not possible to compile a full list\nof projects to include in a `gcp.accesscontextmanager.ServicePerimeter` resource,\nto enable them to be added separately.\nIf your perimeter is NOT in dry-run mode use `gcp.accesscontextmanager.ServicePerimeterResource` instead.\n\n\u003e **Note:** If this resource is used alongside a `gcp.accesscontextmanager.ServicePerimeter` resource,\nthe service perimeter resource must have a `lifecycle` block with `ignore_changes = [spec[0].resources]` so\nthey don't fight over which resources should be in the policy.\n\n\nTo get more information about ServicePerimeterDryRunResource, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.servicePerimeters)\n* How-to Guides\n * [Service Perimeter Quickstart](https://cloud.google.com/vpc-service-controls/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Service Perimeter Dry Run Resource Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter_dry_run_resourceServicePerimeter = new gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter-dry-run-resource\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/restrict_all`,\n title: \"restrict_all\",\n spec: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n useExplicitDryRunSpec: true,\n});\nconst service_perimeter_dry_run_resource = new gcp.accesscontextmanager.ServicePerimeterDryRunResource(\"service-perimeter-dry-run-resource\", {\n perimeterName: service_perimeter_dry_run_resourceServicePerimeter.name,\n resource: \"projects/987654321\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter_dry_run_resource_service_perimeter = gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter-dry-run-resource\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/restrict_all\"),\n title=\"restrict_all\",\n spec={\n \"restrictedServices\": [\"storage.googleapis.com\"],\n },\n use_explicit_dry_run_spec=True)\nservice_perimeter_dry_run_resource = gcp.accesscontextmanager.ServicePerimeterDryRunResource(\"service-perimeter-dry-run-resource\",\n perimeter_name=service_perimeter_dry_run_resource_service_perimeter.name,\n resource=\"projects/987654321\")\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 access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter_dry_run_resourceServicePerimeter = new Gcp.AccessContextManager.ServicePerimeter(\"service-perimeter-dry-run-resource\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/restrict_all\"),\n Title = \"restrict_all\",\n Spec = new Gcp.AccessContextManager.Inputs.ServicePerimeterSpecArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n UseExplicitDryRunSpec = true,\n });\n\n var service_perimeter_dry_run_resource = new Gcp.AccessContextManager.ServicePerimeterDryRunResource(\"service-perimeter-dry-run-resource\", new()\n {\n PerimeterName = service_perimeter_dry_run_resourceServicePerimeter.Name,\n Resource = \"projects/987654321\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/accesscontextmanager\"\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 := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeter(ctx, \"service-perimeter-dry-run-resource\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/restrict_all\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"restrict_all\"),\n\t\t\tSpec: \u0026accesscontextmanager.ServicePerimeterSpecArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tUseExplicitDryRunSpec: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeterDryRunResource(ctx, \"service-perimeter-dry-run-resource\", \u0026accesscontextmanager.ServicePerimeterDryRunResourceArgs{\n\t\t\tPerimeterName: service_perimeter_dry_run_resourceServicePerimeter.Name,\n\t\t\tResource: pulumi.String(\"projects/987654321\"),\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.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterSpecArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterDryRunResource;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterDryRunResourceArgs;\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 access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter_dry_run_resourceServicePerimeter = new ServicePerimeter(\"service-perimeter-dry-run-resourceServicePerimeter\", ServicePerimeterArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/restrict_all\", name)))\n .title(\"restrict_all\")\n .spec(ServicePerimeterSpecArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .useExplicitDryRunSpec(true)\n .build());\n\n var service_perimeter_dry_run_resource = new ServicePerimeterDryRunResource(\"service-perimeter-dry-run-resource\", ServicePerimeterDryRunResourceArgs.builder()\n .perimeterName(service_perimeter_dry_run_resourceServicePerimeter.name())\n .resource(\"projects/987654321\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter-dry-run-resource:\n type: gcp:accesscontextmanager:ServicePerimeterDryRunResource\n properties:\n perimeterName: ${[\"service-perimeter-dry-run-resourceServicePerimeter\"].name}\n resource: projects/987654321\n service-perimeter-dry-run-resourceServicePerimeter:\n type: gcp:accesscontextmanager:ServicePerimeter\n name: service-perimeter-dry-run-resource\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/restrict_all\n title: restrict_all\n spec:\n restrictedServices:\n - storage.googleapis.com\n useExplicitDryRunSpec: true\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServicePerimeterDryRunResource can be imported using any of these accepted formats:\n\n* `{{perimeter_name}}/{{resource}}`\n\nWhen using the `pulumi import` command, ServicePerimeterDryRunResource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeterDryRunResource:ServicePerimeterDryRunResource default {{perimeter_name}}/{{resource}}\n```\n\n", + "description": "Allows configuring a single GCP resource that should be inside of the `spec` block of a dry run service perimeter.\nThis resource is intended to be used in cases where it is not possible to compile a full list\nof projects to include in a `gcp.accesscontextmanager.ServicePerimeter` resource,\nto enable them to be added separately.\nIf your perimeter is NOT in dry-run mode use `gcp.accesscontextmanager.ServicePerimeterResource` instead.\n\n\u003e **Note:** If this resource is used alongside a `gcp.accesscontextmanager.ServicePerimeter` resource,\nthe service perimeter resource must have a `lifecycle` block with `ignore_changes = [spec[0].resources]` so\nthey don't fight over which resources should be in the policy.\n\n\nTo get more information about ServicePerimeterDryRunResource, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.servicePerimeters)\n* How-to Guides\n * [Service Perimeter Quickstart](https://cloud.google.com/vpc-service-controls/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Service Perimeter Dry Run Resource Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter_dry_run_resourceServicePerimeter = new gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter-dry-run-resource\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/restrict_all`,\n title: \"restrict_all\",\n spec: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n useExplicitDryRunSpec: true,\n});\nconst service_perimeter_dry_run_resource = new gcp.accesscontextmanager.ServicePerimeterDryRunResource(\"service-perimeter-dry-run-resource\", {\n perimeterName: service_perimeter_dry_run_resourceServicePerimeter.name,\n resource: \"projects/987654321\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter_dry_run_resource_service_perimeter = gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter-dry-run-resource\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/restrict_all\"),\n title=\"restrict_all\",\n spec={\n \"restricted_services\": [\"storage.googleapis.com\"],\n },\n use_explicit_dry_run_spec=True)\nservice_perimeter_dry_run_resource = gcp.accesscontextmanager.ServicePerimeterDryRunResource(\"service-perimeter-dry-run-resource\",\n perimeter_name=service_perimeter_dry_run_resource_service_perimeter.name,\n resource=\"projects/987654321\")\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 access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter_dry_run_resourceServicePerimeter = new Gcp.AccessContextManager.ServicePerimeter(\"service-perimeter-dry-run-resource\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/restrict_all\"),\n Title = \"restrict_all\",\n Spec = new Gcp.AccessContextManager.Inputs.ServicePerimeterSpecArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n UseExplicitDryRunSpec = true,\n });\n\n var service_perimeter_dry_run_resource = new Gcp.AccessContextManager.ServicePerimeterDryRunResource(\"service-perimeter-dry-run-resource\", new()\n {\n PerimeterName = service_perimeter_dry_run_resourceServicePerimeter.Name,\n Resource = \"projects/987654321\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/accesscontextmanager\"\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 := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeter(ctx, \"service-perimeter-dry-run-resource\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/restrict_all\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"restrict_all\"),\n\t\t\tSpec: \u0026accesscontextmanager.ServicePerimeterSpecArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tUseExplicitDryRunSpec: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeterDryRunResource(ctx, \"service-perimeter-dry-run-resource\", \u0026accesscontextmanager.ServicePerimeterDryRunResourceArgs{\n\t\t\tPerimeterName: service_perimeter_dry_run_resourceServicePerimeter.Name,\n\t\t\tResource: pulumi.String(\"projects/987654321\"),\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.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterSpecArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterDryRunResource;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterDryRunResourceArgs;\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 access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter_dry_run_resourceServicePerimeter = new ServicePerimeter(\"service-perimeter-dry-run-resourceServicePerimeter\", ServicePerimeterArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/restrict_all\", name)))\n .title(\"restrict_all\")\n .spec(ServicePerimeterSpecArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .useExplicitDryRunSpec(true)\n .build());\n\n var service_perimeter_dry_run_resource = new ServicePerimeterDryRunResource(\"service-perimeter-dry-run-resource\", ServicePerimeterDryRunResourceArgs.builder()\n .perimeterName(service_perimeter_dry_run_resourceServicePerimeter.name())\n .resource(\"projects/987654321\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter-dry-run-resource:\n type: gcp:accesscontextmanager:ServicePerimeterDryRunResource\n properties:\n perimeterName: ${[\"service-perimeter-dry-run-resourceServicePerimeter\"].name}\n resource: projects/987654321\n service-perimeter-dry-run-resourceServicePerimeter:\n type: gcp:accesscontextmanager:ServicePerimeter\n name: service-perimeter-dry-run-resource\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/restrict_all\n title: restrict_all\n spec:\n restrictedServices:\n - storage.googleapis.com\n useExplicitDryRunSpec: true\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServicePerimeterDryRunResource can be imported using any of these accepted formats:\n\n* `{{perimeter_name}}/{{resource}}`\n\nWhen using the `pulumi import` command, ServicePerimeterDryRunResource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeterDryRunResource:ServicePerimeterDryRunResource default {{perimeter_name}}/{{resource}}\n```\n\n", "properties": { "perimeterName": { "type": "string", @@ -111915,7 +111915,7 @@ } }, "gcp:accesscontextmanager/servicePerimeterResource:ServicePerimeterResource": { - "description": "Allows configuring a single GCP resource that should be inside the `status` block of a service perimeter.\nThis resource is intended to be used in cases where it is not possible to compile a full list\nof projects to include in a `gcp.accesscontextmanager.ServicePerimeter` resource,\nto enable them to be added separately.\nIf your perimeter is in dry-run mode use `gcp.accesscontextmanager.ServicePerimeterDryRunResource` instead.\n\n\u003e **Note:** If this resource is used alongside a `gcp.accesscontextmanager.ServicePerimeter` resource,\nthe service perimeter resource must have a `lifecycle` block with `ignore_changes = [status[0].resources]` so\nthey don't fight over which resources should be in the policy.\n\n\nTo get more information about ServicePerimeterResource, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.servicePerimeters)\n* How-to Guides\n * [Service Perimeter Quickstart](https://cloud.google.com/vpc-service-controls/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Service Perimeter Resource Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter_resourceServicePerimeter = new gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter-resource\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/restrict_all`,\n title: \"restrict_all\",\n status: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n});\nconst service_perimeter_resource = new gcp.accesscontextmanager.ServicePerimeterResource(\"service-perimeter-resource\", {\n perimeterName: service_perimeter_resourceServicePerimeter.name,\n resource: \"projects/987654321\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter_resource_service_perimeter = gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter-resource\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/restrict_all\"),\n title=\"restrict_all\",\n status={\n \"restrictedServices\": [\"storage.googleapis.com\"],\n })\nservice_perimeter_resource = gcp.accesscontextmanager.ServicePerimeterResource(\"service-perimeter-resource\",\n perimeter_name=service_perimeter_resource_service_perimeter.name,\n resource=\"projects/987654321\")\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 access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter_resourceServicePerimeter = new Gcp.AccessContextManager.ServicePerimeter(\"service-perimeter-resource\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/restrict_all\"),\n Title = \"restrict_all\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n });\n\n var service_perimeter_resource = new Gcp.AccessContextManager.ServicePerimeterResource(\"service-perimeter-resource\", new()\n {\n PerimeterName = service_perimeter_resourceServicePerimeter.Name,\n Resource = \"projects/987654321\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/accesscontextmanager\"\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 := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeter(ctx, \"service-perimeter-resource\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/restrict_all\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"restrict_all\"),\n\t\t\tStatus: \u0026accesscontextmanager.ServicePerimeterStatusArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\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 = accesscontextmanager.NewServicePerimeterResource(ctx, \"service-perimeter-resource\", \u0026accesscontextmanager.ServicePerimeterResourceArgs{\n\t\t\tPerimeterName: service_perimeter_resourceServicePerimeter.Name,\n\t\t\tResource: pulumi.String(\"projects/987654321\"),\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.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterResource;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterResourceArgs;\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 access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter_resourceServicePerimeter = new ServicePerimeter(\"service-perimeter-resourceServicePerimeter\", ServicePerimeterArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/restrict_all\", name)))\n .title(\"restrict_all\")\n .status(ServicePerimeterStatusArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .build());\n\n var service_perimeter_resource = new ServicePerimeterResource(\"service-perimeter-resource\", ServicePerimeterResourceArgs.builder()\n .perimeterName(service_perimeter_resourceServicePerimeter.name())\n .resource(\"projects/987654321\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter-resource:\n type: gcp:accesscontextmanager:ServicePerimeterResource\n properties:\n perimeterName: ${[\"service-perimeter-resourceServicePerimeter\"].name}\n resource: projects/987654321\n service-perimeter-resourceServicePerimeter:\n type: gcp:accesscontextmanager:ServicePerimeter\n name: service-perimeter-resource\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/restrict_all\n title: restrict_all\n status:\n restrictedServices:\n - storage.googleapis.com\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServicePerimeterResource can be imported using any of these accepted formats:\n\n* `{{perimeter_name}}/{{resource}}`\n\nWhen using the `pulumi import` command, ServicePerimeterResource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeterResource:ServicePerimeterResource default {{perimeter_name}}/{{resource}}\n```\n\n", + "description": "Allows configuring a single GCP resource that should be inside the `status` block of a service perimeter.\nThis resource is intended to be used in cases where it is not possible to compile a full list\nof projects to include in a `gcp.accesscontextmanager.ServicePerimeter` resource,\nto enable them to be added separately.\nIf your perimeter is in dry-run mode use `gcp.accesscontextmanager.ServicePerimeterDryRunResource` instead.\n\n\u003e **Note:** If this resource is used alongside a `gcp.accesscontextmanager.ServicePerimeter` resource,\nthe service perimeter resource must have a `lifecycle` block with `ignore_changes = [status[0].resources]` so\nthey don't fight over which resources should be in the policy.\n\n\nTo get more information about ServicePerimeterResource, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.servicePerimeters)\n* How-to Guides\n * [Service Perimeter Quickstart](https://cloud.google.com/vpc-service-controls/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Service Perimeter Resource Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter_resourceServicePerimeter = new gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter-resource\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/restrict_all`,\n title: \"restrict_all\",\n status: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n});\nconst service_perimeter_resource = new gcp.accesscontextmanager.ServicePerimeterResource(\"service-perimeter-resource\", {\n perimeterName: service_perimeter_resourceServicePerimeter.name,\n resource: \"projects/987654321\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter_resource_service_perimeter = gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter-resource\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/restrict_all\"),\n title=\"restrict_all\",\n status={\n \"restricted_services\": [\"storage.googleapis.com\"],\n })\nservice_perimeter_resource = gcp.accesscontextmanager.ServicePerimeterResource(\"service-perimeter-resource\",\n perimeter_name=service_perimeter_resource_service_perimeter.name,\n resource=\"projects/987654321\")\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 access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter_resourceServicePerimeter = new Gcp.AccessContextManager.ServicePerimeter(\"service-perimeter-resource\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/restrict_all\"),\n Title = \"restrict_all\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n });\n\n var service_perimeter_resource = new Gcp.AccessContextManager.ServicePerimeterResource(\"service-perimeter-resource\", new()\n {\n PerimeterName = service_perimeter_resourceServicePerimeter.Name,\n Resource = \"projects/987654321\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/accesscontextmanager\"\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 := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeter(ctx, \"service-perimeter-resource\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/restrict_all\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"restrict_all\"),\n\t\t\tStatus: \u0026accesscontextmanager.ServicePerimeterStatusArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\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 = accesscontextmanager.NewServicePerimeterResource(ctx, \"service-perimeter-resource\", \u0026accesscontextmanager.ServicePerimeterResourceArgs{\n\t\t\tPerimeterName: service_perimeter_resourceServicePerimeter.Name,\n\t\t\tResource: pulumi.String(\"projects/987654321\"),\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.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterResource;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterResourceArgs;\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 access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter_resourceServicePerimeter = new ServicePerimeter(\"service-perimeter-resourceServicePerimeter\", ServicePerimeterArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/restrict_all\", name)))\n .title(\"restrict_all\")\n .status(ServicePerimeterStatusArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .build());\n\n var service_perimeter_resource = new ServicePerimeterResource(\"service-perimeter-resource\", ServicePerimeterResourceArgs.builder()\n .perimeterName(service_perimeter_resourceServicePerimeter.name())\n .resource(\"projects/987654321\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter-resource:\n type: gcp:accesscontextmanager:ServicePerimeterResource\n properties:\n perimeterName: ${[\"service-perimeter-resourceServicePerimeter\"].name}\n resource: projects/987654321\n service-perimeter-resourceServicePerimeter:\n type: gcp:accesscontextmanager:ServicePerimeter\n name: service-perimeter-resource\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/restrict_all\n title: restrict_all\n status:\n restrictedServices:\n - storage.googleapis.com\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServicePerimeterResource can be imported using any of these accepted formats:\n\n* `{{perimeter_name}}/{{resource}}`\n\nWhen using the `pulumi import` command, ServicePerimeterResource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeterResource:ServicePerimeterResource default {{perimeter_name}}/{{resource}}\n```\n\n", "properties": { "perimeterName": { "type": "string", @@ -111964,7 +111964,7 @@ } }, "gcp:accesscontextmanager/servicePerimeters:ServicePerimeters": { - "description": "Replace all existing Service Perimeters in an Access Policy with the Service Perimeters provided. This is done atomically.\nThis is a bulk edit of all Service Perimeters and may override existing Service Perimeters created by `gcp.accesscontextmanager.ServicePerimeter`,\nthus causing a permadiff if used alongside `gcp.accesscontextmanager.ServicePerimeter` on the same parent.\n\n\nTo get more information about ServicePerimeters, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.servicePerimeters)\n* How-to Guides\n * [Service Perimeter Quickstart](https://cloud.google.com/vpc-service-controls/docs/quickstart)\n\n## Example Usage\n\n### Access Context Manager Service Perimeters Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter = new gcp.accesscontextmanager.ServicePerimeters(\"service-perimeter\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n servicePerimeters: [\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/`,\n title: \"\",\n status: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n },\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/`,\n title: \"\",\n status: {\n restrictedServices: [\"bigtable.googleapis.com\"],\n },\n },\n ],\n});\nconst access_level = new gcp.accesscontextmanager.AccessLevel(\"access-level\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: false,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter = gcp.accesscontextmanager.ServicePerimeters(\"service-perimeter\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n service_perimeters=[\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/\"),\n \"title\": \"\",\n \"status\": {\n \"restrictedServices\": [\"storage.googleapis.com\"],\n },\n },\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/\"),\n \"title\": \"\",\n \"status\": {\n \"restrictedServices\": [\"bigtable.googleapis.com\"],\n },\n },\n ])\naccess_level = gcp.accesscontextmanager.AccessLevel(\"access-level\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"devicePolicy\": {\n \"requireScreenLock\": False,\n \"osConstraints\": [{\n \"osType\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\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 access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter = new Gcp.AccessContextManager.ServicePerimeters(\"service-perimeter\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n ServicePerimeterDetails = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/\"),\n Title = \"\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/\"),\n Title = \"\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"bigtable.googleapis.com\",\n },\n },\n },\n },\n });\n\n var access_level = new Gcp.AccessContextManager.AccessLevel(\"access-level\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = false,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\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/v7/go/gcp/accesscontextmanager\"\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 := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeters(ctx, \"service-perimeter\", \u0026accesscontextmanager.ServicePerimetersArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tServicePerimeters: accesscontextmanager.ServicePerimetersServicePerimeterArray{\n\t\t\t\t\u0026accesscontextmanager.ServicePerimetersServicePerimeterArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"\"),\n\t\t\t\t\tStatus: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusArgs{\n\t\t\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026accesscontextmanager.ServicePerimetersServicePerimeterArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"\"),\n\t\t\t\t\tStatus: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusArgs{\n\t\t\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"bigtable.googleapis.com\"),\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 = accesscontextmanager.NewAccessLevel(ctx, \"access-level\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(false),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\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.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeters;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimetersArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\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 access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter = new ServicePerimeters(\"service-perimeter\", ServicePerimetersArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .servicePerimeters( \n ServicePerimetersServicePerimeterArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/\", name)))\n .title(\"\")\n .status(ServicePerimetersServicePerimeterStatusArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .build(),\n ServicePerimetersServicePerimeterArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/\", name)))\n .title(\"\")\n .status(ServicePerimetersServicePerimeterStatusArgs.builder()\n .restrictedServices(\"bigtable.googleapis.com\")\n .build())\n .build())\n .build());\n\n var access_level = new AccessLevel(\"access-level\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(false)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter:\n type: gcp:accesscontextmanager:ServicePerimeters\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n servicePerimeters:\n - name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/\n title:\n status:\n restrictedServices:\n - storage.googleapis.com\n - name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/\n title:\n status:\n restrictedServices:\n - bigtable.googleapis.com\n access-level:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: false\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServicePerimeters can be imported using any of these accepted formats:\n\n* `{{parent}}/servicePerimeters`\n\n* `{{parent}}`\n\nWhen using the `pulumi import` command, ServicePerimeters can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeters:ServicePerimeters default {{parent}}/servicePerimeters\n```\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeters:ServicePerimeters default {{parent}}\n```\n\n", + "description": "Replace all existing Service Perimeters in an Access Policy with the Service Perimeters provided. This is done atomically.\nThis is a bulk edit of all Service Perimeters and may override existing Service Perimeters created by `gcp.accesscontextmanager.ServicePerimeter`,\nthus causing a permadiff if used alongside `gcp.accesscontextmanager.ServicePerimeter` on the same parent.\n\n\nTo get more information about ServicePerimeters, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.servicePerimeters)\n* How-to Guides\n * [Service Perimeter Quickstart](https://cloud.google.com/vpc-service-controls/docs/quickstart)\n\n## Example Usage\n\n### Access Context Manager Service Perimeters Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter = new gcp.accesscontextmanager.ServicePerimeters(\"service-perimeter\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n servicePerimeters: [\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/`,\n title: \"\",\n status: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n },\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/`,\n title: \"\",\n status: {\n restrictedServices: [\"bigtable.googleapis.com\"],\n },\n },\n ],\n});\nconst access_level = new gcp.accesscontextmanager.AccessLevel(\"access-level\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: false,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter = gcp.accesscontextmanager.ServicePerimeters(\"service-perimeter\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n service_perimeters=[\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/\"),\n \"title\": \"\",\n \"status\": {\n \"restricted_services\": [\"storage.googleapis.com\"],\n },\n },\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/\"),\n \"title\": \"\",\n \"status\": {\n \"restricted_services\": [\"bigtable.googleapis.com\"],\n },\n },\n ])\naccess_level = gcp.accesscontextmanager.AccessLevel(\"access-level\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": False,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\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 access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter = new Gcp.AccessContextManager.ServicePerimeters(\"service-perimeter\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n ServicePerimeterDetails = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/\"),\n Title = \"\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/\"),\n Title = \"\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"bigtable.googleapis.com\",\n },\n },\n },\n },\n });\n\n var access_level = new Gcp.AccessContextManager.AccessLevel(\"access-level\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = false,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\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/v7/go/gcp/accesscontextmanager\"\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 := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeters(ctx, \"service-perimeter\", \u0026accesscontextmanager.ServicePerimetersArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tServicePerimeters: accesscontextmanager.ServicePerimetersServicePerimeterArray{\n\t\t\t\t\u0026accesscontextmanager.ServicePerimetersServicePerimeterArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"\"),\n\t\t\t\t\tStatus: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusArgs{\n\t\t\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026accesscontextmanager.ServicePerimetersServicePerimeterArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"\"),\n\t\t\t\t\tStatus: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusArgs{\n\t\t\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"bigtable.googleapis.com\"),\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 = accesscontextmanager.NewAccessLevel(ctx, \"access-level\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(false),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\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.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeters;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimetersArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\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 access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter = new ServicePerimeters(\"service-perimeter\", ServicePerimetersArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .servicePerimeters( \n ServicePerimetersServicePerimeterArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/\", name)))\n .title(\"\")\n .status(ServicePerimetersServicePerimeterStatusArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .build(),\n ServicePerimetersServicePerimeterArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/\", name)))\n .title(\"\")\n .status(ServicePerimetersServicePerimeterStatusArgs.builder()\n .restrictedServices(\"bigtable.googleapis.com\")\n .build())\n .build())\n .build());\n\n var access_level = new AccessLevel(\"access-level\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(false)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter:\n type: gcp:accesscontextmanager:ServicePerimeters\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n servicePerimeters:\n - name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/\n title:\n status:\n restrictedServices:\n - storage.googleapis.com\n - name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/\n title:\n status:\n restrictedServices:\n - bigtable.googleapis.com\n access-level:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: false\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServicePerimeters can be imported using any of these accepted formats:\n\n* `{{parent}}/servicePerimeters`\n\n* `{{parent}}`\n\nWhen using the `pulumi import` command, ServicePerimeters can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeters:ServicePerimeters default {{parent}}/servicePerimeters\n```\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeters:ServicePerimeters default {{parent}}\n```\n\n", "properties": { "parent": { "type": "string", @@ -112893,7 +112893,7 @@ } }, "gcp:alloydb/cluster:Cluster": { - "description": "## Example Usage\n\n### Alloydb Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {name: \"alloydb-cluster\"});\nconst _default = new gcp.alloydb.Cluster(\"default\", {\n clusterId: \"alloydb-cluster\",\n location: \"us-central1\",\n networkConfig: {\n network: defaultNetwork.id,\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\", name=\"alloydb-cluster\")\ndefault = gcp.alloydb.Cluster(\"default\",\n cluster_id=\"alloydb-cluster\",\n location=\"us-central1\",\n network_config={\n \"network\": default_network.id,\n })\nproject = gcp.organizations.get_project()\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(\"default\", new()\n {\n Name = \"alloydb-cluster\",\n });\n\n var @default = new Gcp.Alloydb.Cluster(\"default\", new()\n {\n ClusterId = \"alloydb-cluster\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = defaultNetwork.Id,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-cluster\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewCluster(ctx, \"default\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.builder()\n .name(\"alloydb-cluster\")\n .build());\n\n var default_ = new Cluster(\"default\", ClusterArgs.builder()\n .clusterId(\"alloydb-cluster\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(defaultNetwork.id())\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-cluster\n location: us-central1\n networkConfig:\n network: ${defaultNetwork.id}\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: alloydb-cluster\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Alloydb Cluster Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"alloydb-cluster-full\"});\nconst full = new gcp.alloydb.Cluster(\"full\", {\n clusterId: \"alloydb-cluster-full\",\n location: \"us-central1\",\n networkConfig: {\n network: _default.id,\n },\n databaseVersion: \"POSTGRES_15\",\n initialUser: {\n user: \"alloydb-cluster-full\",\n password: \"alloydb-cluster-full\",\n },\n continuousBackupConfig: {\n enabled: true,\n recoveryWindowDays: 14,\n },\n automatedBackupPolicy: {\n location: \"us-central1\",\n backupWindow: \"1800s\",\n enabled: true,\n weeklySchedule: {\n daysOfWeeks: [\"MONDAY\"],\n startTimes: [{\n hours: 23,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n }],\n },\n quantityBasedRetention: {\n count: 1,\n },\n labels: {\n test: \"alloydb-cluster-full\",\n },\n },\n labels: {\n test: \"alloydb-cluster-full\",\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"alloydb-cluster-full\")\nfull = gcp.alloydb.Cluster(\"full\",\n cluster_id=\"alloydb-cluster-full\",\n location=\"us-central1\",\n network_config={\n \"network\": default.id,\n },\n database_version=\"POSTGRES_15\",\n initial_user={\n \"user\": \"alloydb-cluster-full\",\n \"password\": \"alloydb-cluster-full\",\n },\n continuous_backup_config={\n \"enabled\": True,\n \"recoveryWindowDays\": 14,\n },\n automated_backup_policy={\n \"location\": \"us-central1\",\n \"backupWindow\": \"1800s\",\n \"enabled\": True,\n \"weeklySchedule\": {\n \"daysOfWeeks\": [\"MONDAY\"],\n \"startTimes\": [{\n \"hours\": 23,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n }],\n },\n \"quantityBasedRetention\": {\n \"count\": 1,\n },\n \"labels\": {\n \"test\": \"alloydb-cluster-full\",\n },\n },\n labels={\n \"test\": \"alloydb-cluster-full\",\n })\nproject = gcp.organizations.get_project()\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.Network(\"default\", new()\n {\n Name = \"alloydb-cluster-full\",\n });\n\n var full = new Gcp.Alloydb.Cluster(\"full\", new()\n {\n ClusterId = \"alloydb-cluster-full\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = @default.Id,\n },\n DatabaseVersion = \"POSTGRES_15\",\n InitialUser = new Gcp.Alloydb.Inputs.ClusterInitialUserArgs\n {\n User = \"alloydb-cluster-full\",\n Password = \"alloydb-cluster-full\",\n },\n ContinuousBackupConfig = new Gcp.Alloydb.Inputs.ClusterContinuousBackupConfigArgs\n {\n Enabled = true,\n RecoveryWindowDays = 14,\n },\n AutomatedBackupPolicy = new Gcp.Alloydb.Inputs.ClusterAutomatedBackupPolicyArgs\n {\n Location = \"us-central1\",\n BackupWindow = \"1800s\",\n Enabled = true,\n WeeklySchedule = new Gcp.Alloydb.Inputs.ClusterAutomatedBackupPolicyWeeklyScheduleArgs\n {\n DaysOfWeeks = new[]\n {\n \"MONDAY\",\n },\n StartTimes = new[]\n {\n new Gcp.Alloydb.Inputs.ClusterAutomatedBackupPolicyWeeklyScheduleStartTimeArgs\n {\n Hours = 23,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n QuantityBasedRetention = new Gcp.Alloydb.Inputs.ClusterAutomatedBackupPolicyQuantityBasedRetentionArgs\n {\n Count = 1,\n },\n Labels = \n {\n { \"test\", \"alloydb-cluster-full\" },\n },\n },\n Labels = \n {\n { \"test\", \"alloydb-cluster-full\" },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-cluster-full\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewCluster(ctx, \"full\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-cluster-full\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: _default.ID(),\n\t\t\t},\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tInitialUser: \u0026alloydb.ClusterInitialUserArgs{\n\t\t\t\tUser: pulumi.String(\"alloydb-cluster-full\"),\n\t\t\t\tPassword: pulumi.String(\"alloydb-cluster-full\"),\n\t\t\t},\n\t\t\tContinuousBackupConfig: \u0026alloydb.ClusterContinuousBackupConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tRecoveryWindowDays: pulumi.Int(14),\n\t\t\t},\n\t\t\tAutomatedBackupPolicy: \u0026alloydb.ClusterAutomatedBackupPolicyArgs{\n\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\tBackupWindow: pulumi.String(\"1800s\"),\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tWeeklySchedule: \u0026alloydb.ClusterAutomatedBackupPolicyWeeklyScheduleArgs{\n\t\t\t\t\tDaysOfWeeks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MONDAY\"),\n\t\t\t\t\t},\n\t\t\t\t\tStartTimes: alloydb.ClusterAutomatedBackupPolicyWeeklyScheduleStartTimeArray{\n\t\t\t\t\t\t\u0026alloydb.ClusterAutomatedBackupPolicyWeeklyScheduleStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(23),\n\t\t\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tQuantityBasedRetention: \u0026alloydb.ClusterAutomatedBackupPolicyQuantityBasedRetentionArgs{\n\t\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"test\": pulumi.String(\"alloydb-cluster-full\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"test\": pulumi.String(\"alloydb-cluster-full\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterInitialUserArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterContinuousBackupConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterAutomatedBackupPolicyArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterAutomatedBackupPolicyWeeklyScheduleArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterAutomatedBackupPolicyQuantityBasedRetentionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"alloydb-cluster-full\")\n .build());\n\n var full = new Cluster(\"full\", ClusterArgs.builder()\n .clusterId(\"alloydb-cluster-full\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(default_.id())\n .build())\n .databaseVersion(\"POSTGRES_15\")\n .initialUser(ClusterInitialUserArgs.builder()\n .user(\"alloydb-cluster-full\")\n .password(\"alloydb-cluster-full\")\n .build())\n .continuousBackupConfig(ClusterContinuousBackupConfigArgs.builder()\n .enabled(true)\n .recoveryWindowDays(14)\n .build())\n .automatedBackupPolicy(ClusterAutomatedBackupPolicyArgs.builder()\n .location(\"us-central1\")\n .backupWindow(\"1800s\")\n .enabled(true)\n .weeklySchedule(ClusterAutomatedBackupPolicyWeeklyScheduleArgs.builder()\n .daysOfWeeks(\"MONDAY\")\n .startTimes(ClusterAutomatedBackupPolicyWeeklyScheduleStartTimeArgs.builder()\n .hours(23)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .quantityBasedRetention(ClusterAutomatedBackupPolicyQuantityBasedRetentionArgs.builder()\n .count(1)\n .build())\n .labels(Map.of(\"test\", \"alloydb-cluster-full\"))\n .build())\n .labels(Map.of(\"test\", \"alloydb-cluster-full\"))\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n full:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-cluster-full\n location: us-central1\n networkConfig:\n network: ${default.id}\n databaseVersion: POSTGRES_15\n initialUser:\n user: alloydb-cluster-full\n password: alloydb-cluster-full\n continuousBackupConfig:\n enabled: true\n recoveryWindowDays: 14\n automatedBackupPolicy:\n location: us-central1\n backupWindow: 1800s\n enabled: true\n weeklySchedule:\n daysOfWeeks:\n - MONDAY\n startTimes:\n - hours: 23\n minutes: 0\n seconds: 0\n nanos: 0\n quantityBasedRetention:\n count: 1\n labels:\n test: alloydb-cluster-full\n labels:\n test: alloydb-cluster-full\n default:\n type: gcp:compute:Network\n properties:\n name: alloydb-cluster-full\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Alloydb Cluster Restore\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getNetwork({\n name: \"alloydb-network\",\n});\nconst source = new gcp.alloydb.Cluster(\"source\", {\n clusterId: \"alloydb-source-cluster\",\n location: \"us-central1\",\n network: _default.then(_default =\u003e _default.id),\n initialUser: {\n password: \"alloydb-source-cluster\",\n },\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"alloydb-source-cluster\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: _default.then(_default =\u003e _default.id),\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: _default.then(_default =\u003e _default.id),\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst sourceInstance = new gcp.alloydb.Instance(\"source\", {\n cluster: source.name,\n instanceId: \"alloydb-instance\",\n instanceType: \"PRIMARY\",\n machineConfig: {\n cpuCount: 2,\n },\n}, {\n dependsOn: [vpcConnection],\n});\nconst sourceBackup = new gcp.alloydb.Backup(\"source\", {\n backupId: \"alloydb-backup\",\n location: \"us-central1\",\n clusterName: source.name,\n}, {\n dependsOn: [sourceInstance],\n});\nconst restoredFromBackup = new gcp.alloydb.Cluster(\"restored_from_backup\", {\n clusterId: \"alloydb-backup-restored\",\n location: \"us-central1\",\n networkConfig: {\n network: _default.then(_default =\u003e _default.id),\n },\n restoreBackupSource: {\n backupName: sourceBackup.name,\n },\n});\nconst restoredViaPitr = new gcp.alloydb.Cluster(\"restored_via_pitr\", {\n clusterId: \"alloydb-pitr-restored\",\n location: \"us-central1\",\n network: _default.then(_default =\u003e _default.id),\n restoreContinuousBackupSource: {\n cluster: source.name,\n pointInTime: \"2023-08-03T19:19:00.094Z\",\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"alloydb-network\")\nsource = gcp.alloydb.Cluster(\"source\",\n cluster_id=\"alloydb-source-cluster\",\n location=\"us-central1\",\n network=default.id,\n initial_user={\n \"password\": \"alloydb-source-cluster\",\n })\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"alloydb-source-cluster\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\nsource_instance = gcp.alloydb.Instance(\"source\",\n cluster=source.name,\n instance_id=\"alloydb-instance\",\n instance_type=\"PRIMARY\",\n machine_config={\n \"cpuCount\": 2,\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nsource_backup = gcp.alloydb.Backup(\"source\",\n backup_id=\"alloydb-backup\",\n location=\"us-central1\",\n cluster_name=source.name,\n opts = pulumi.ResourceOptions(depends_on=[source_instance]))\nrestored_from_backup = gcp.alloydb.Cluster(\"restored_from_backup\",\n cluster_id=\"alloydb-backup-restored\",\n location=\"us-central1\",\n network_config={\n \"network\": default.id,\n },\n restore_backup_source={\n \"backupName\": source_backup.name,\n })\nrestored_via_pitr = gcp.alloydb.Cluster(\"restored_via_pitr\",\n cluster_id=\"alloydb-pitr-restored\",\n location=\"us-central1\",\n network=default.id,\n restore_continuous_backup_source={\n \"cluster\": source.name,\n \"pointInTime\": \"2023-08-03T19:19:00.094Z\",\n })\nproject = gcp.organizations.get_project()\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 = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"alloydb-network\",\n });\n\n var source = new Gcp.Alloydb.Cluster(\"source\", new()\n {\n ClusterId = \"alloydb-source-cluster\",\n Location = \"us-central1\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n InitialUser = new Gcp.Alloydb.Inputs.ClusterInitialUserArgs\n {\n Password = \"alloydb-source-cluster\",\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"alloydb-source-cluster\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var sourceInstance = new Gcp.Alloydb.Instance(\"source\", new()\n {\n Cluster = source.Name,\n InstanceId = \"alloydb-instance\",\n InstanceType = \"PRIMARY\",\n MachineConfig = new Gcp.Alloydb.Inputs.InstanceMachineConfigArgs\n {\n CpuCount = 2,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var sourceBackup = new Gcp.Alloydb.Backup(\"source\", new()\n {\n BackupId = \"alloydb-backup\",\n Location = \"us-central1\",\n ClusterName = source.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceInstance,\n },\n });\n\n var restoredFromBackup = new Gcp.Alloydb.Cluster(\"restored_from_backup\", new()\n {\n ClusterId = \"alloydb-backup-restored\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n },\n RestoreBackupSource = new Gcp.Alloydb.Inputs.ClusterRestoreBackupSourceArgs\n {\n BackupName = sourceBackup.Name,\n },\n });\n\n var restoredViaPitr = new Gcp.Alloydb.Cluster(\"restored_via_pitr\", new()\n {\n ClusterId = \"alloydb-pitr-restored\",\n Location = \"us-central1\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n RestoreContinuousBackupSource = new Gcp.Alloydb.Inputs.ClusterRestoreContinuousBackupSourceArgs\n {\n Cluster = source.Name,\n PointInTime = \"2023-08-03T19:19:00.094Z\",\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"alloydb-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsource, err := alloydb.NewCluster(ctx, \"source\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-source-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\tInitialUser: \u0026alloydb.ClusterInitialUserArgs{\n\t\t\t\tPassword: pulumi.String(\"alloydb-source-cluster\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"alloydb-source-cluster\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceInstance, err := alloydb.NewInstance(ctx, \"source\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: source.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-instance\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t\tMachineConfig: \u0026alloydb.InstanceMachineConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceBackup, err := alloydb.NewBackup(ctx, \"source\", \u0026alloydb.BackupArgs{\n\t\t\tBackupId: pulumi.String(\"alloydb-backup\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tClusterName: source.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceInstance,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewCluster(ctx, \"restored_from_backup\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-backup-restored\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\t},\n\t\t\tRestoreBackupSource: \u0026alloydb.ClusterRestoreBackupSourceArgs{\n\t\t\t\tBackupName: sourceBackup.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewCluster(ctx, \"restored_via_pitr\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-pitr-restored\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\tRestoreContinuousBackupSource: \u0026alloydb.ClusterRestoreContinuousBackupSourceArgs{\n\t\t\t\tCluster: source.Name,\n\t\t\t\tPointInTime: pulumi.String(\"2023-08-03T19:19:00.094Z\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterInitialUserArgs;\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.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.alloydb.inputs.InstanceMachineConfigArgs;\nimport com.pulumi.gcp.alloydb.Backup;\nimport com.pulumi.gcp.alloydb.BackupArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterRestoreBackupSourceArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterRestoreContinuousBackupSourceArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"alloydb-network\")\n .build());\n\n var source = new Cluster(\"source\", ClusterArgs.builder()\n .clusterId(\"alloydb-source-cluster\")\n .location(\"us-central1\")\n .network(default_.id())\n .initialUser(ClusterInitialUserArgs.builder()\n .password(\"alloydb-source-cluster\")\n .build())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"alloydb-source-cluster\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var sourceInstance = new Instance(\"sourceInstance\", InstanceArgs.builder()\n .cluster(source.name())\n .instanceId(\"alloydb-instance\")\n .instanceType(\"PRIMARY\")\n .machineConfig(InstanceMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n var sourceBackup = new Backup(\"sourceBackup\", BackupArgs.builder()\n .backupId(\"alloydb-backup\")\n .location(\"us-central1\")\n .clusterName(source.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceInstance)\n .build());\n\n var restoredFromBackup = new Cluster(\"restoredFromBackup\", ClusterArgs.builder()\n .clusterId(\"alloydb-backup-restored\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(default_.id())\n .build())\n .restoreBackupSource(ClusterRestoreBackupSourceArgs.builder()\n .backupName(sourceBackup.name())\n .build())\n .build());\n\n var restoredViaPitr = new Cluster(\"restoredViaPitr\", ClusterArgs.builder()\n .clusterId(\"alloydb-pitr-restored\")\n .location(\"us-central1\")\n .network(default_.id())\n .restoreContinuousBackupSource(ClusterRestoreContinuousBackupSourceArgs.builder()\n .cluster(source.name())\n .pointInTime(\"2023-08-03T19:19:00.094Z\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n source:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-source-cluster\n location: us-central1\n network: ${default.id}\n initialUser:\n password: alloydb-source-cluster\n sourceInstance:\n type: gcp:alloydb:Instance\n name: source\n properties:\n cluster: ${source.name}\n instanceId: alloydb-instance\n instanceType: PRIMARY\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n sourceBackup:\n type: gcp:alloydb:Backup\n name: source\n properties:\n backupId: alloydb-backup\n location: us-central1\n clusterName: ${source.name}\n options:\n dependson:\n - ${sourceInstance}\n restoredFromBackup:\n type: gcp:alloydb:Cluster\n name: restored_from_backup\n properties:\n clusterId: alloydb-backup-restored\n location: us-central1\n networkConfig:\n network: ${default.id}\n restoreBackupSource:\n backupName: ${sourceBackup.name}\n restoredViaPitr:\n type: gcp:alloydb:Cluster\n name: restored_via_pitr\n properties:\n clusterId: alloydb-pitr-restored\n location: us-central1\n network: ${default.id}\n restoreContinuousBackupSource:\n cluster: ${source.name}\n pointInTime: 2023-08-03T19:19:00.094Z\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-source-cluster\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n default:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: alloydb-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Alloydb Secondary Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"alloydb-secondary-cluster\"});\nconst primary = new gcp.alloydb.Cluster(\"primary\", {\n clusterId: \"alloydb-primary-cluster\",\n location: \"us-central1\",\n network: _default.id,\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"alloydb-secondary-cluster\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: _default.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst primaryInstance = new gcp.alloydb.Instance(\"primary\", {\n cluster: primary.name,\n instanceId: \"alloydb-primary-instance\",\n instanceType: \"PRIMARY\",\n machineConfig: {\n cpuCount: 2,\n },\n}, {\n dependsOn: [vpcConnection],\n});\nconst secondary = new gcp.alloydb.Cluster(\"secondary\", {\n clusterId: \"alloydb-secondary-cluster\",\n location: \"us-east1\",\n network: _default.id,\n clusterType: \"SECONDARY\",\n continuousBackupConfig: {\n enabled: false,\n },\n secondaryConfig: {\n primaryClusterName: primary.name,\n },\n}, {\n dependsOn: [primaryInstance],\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"alloydb-secondary-cluster\")\nprimary = gcp.alloydb.Cluster(\"primary\",\n cluster_id=\"alloydb-primary-cluster\",\n location=\"us-central1\",\n network=default.id)\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"alloydb-secondary-cluster\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\nprimary_instance = gcp.alloydb.Instance(\"primary\",\n cluster=primary.name,\n instance_id=\"alloydb-primary-instance\",\n instance_type=\"PRIMARY\",\n machine_config={\n \"cpuCount\": 2,\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nsecondary = gcp.alloydb.Cluster(\"secondary\",\n cluster_id=\"alloydb-secondary-cluster\",\n location=\"us-east1\",\n network=default.id,\n cluster_type=\"SECONDARY\",\n continuous_backup_config={\n \"enabled\": False,\n },\n secondary_config={\n \"primaryClusterName\": primary.name,\n },\n opts = pulumi.ResourceOptions(depends_on=[primary_instance]))\nproject = gcp.organizations.get_project()\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.Network(\"default\", new()\n {\n Name = \"alloydb-secondary-cluster\",\n });\n\n var primary = new Gcp.Alloydb.Cluster(\"primary\", new()\n {\n ClusterId = \"alloydb-primary-cluster\",\n Location = \"us-central1\",\n Network = @default.Id,\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"alloydb-secondary-cluster\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var primaryInstance = new Gcp.Alloydb.Instance(\"primary\", new()\n {\n Cluster = primary.Name,\n InstanceId = \"alloydb-primary-instance\",\n InstanceType = \"PRIMARY\",\n MachineConfig = new Gcp.Alloydb.Inputs.InstanceMachineConfigArgs\n {\n CpuCount = 2,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var secondary = new Gcp.Alloydb.Cluster(\"secondary\", new()\n {\n ClusterId = \"alloydb-secondary-cluster\",\n Location = \"us-east1\",\n Network = @default.Id,\n ClusterType = \"SECONDARY\",\n ContinuousBackupConfig = new Gcp.Alloydb.Inputs.ClusterContinuousBackupConfigArgs\n {\n Enabled = false,\n },\n SecondaryConfig = new Gcp.Alloydb.Inputs.ClusterSecondaryConfigArgs\n {\n PrimaryClusterName = primary.Name,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n primaryInstance,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-secondary-cluster\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := alloydb.NewCluster(ctx, \"primary\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-primary-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"alloydb-secondary-cluster\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryInstance, err := alloydb.NewInstance(ctx, \"primary\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: primary.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-primary-instance\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t\tMachineConfig: \u0026alloydb.InstanceMachineConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewCluster(ctx, \"secondary\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-secondary-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tClusterType: pulumi.String(\"SECONDARY\"),\n\t\t\tContinuousBackupConfig: \u0026alloydb.ClusterContinuousBackupConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tSecondaryConfig: \u0026alloydb.ClusterSecondaryConfigArgs{\n\t\t\t\tPrimaryClusterName: primary.Name,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprimaryInstance,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\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.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.alloydb.inputs.InstanceMachineConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterContinuousBackupConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterSecondaryConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"alloydb-secondary-cluster\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .clusterId(\"alloydb-primary-cluster\")\n .location(\"us-central1\")\n .network(default_.id())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"alloydb-secondary-cluster\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var primaryInstance = new Instance(\"primaryInstance\", InstanceArgs.builder()\n .cluster(primary.name())\n .instanceId(\"alloydb-primary-instance\")\n .instanceType(\"PRIMARY\")\n .machineConfig(InstanceMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n var secondary = new Cluster(\"secondary\", ClusterArgs.builder()\n .clusterId(\"alloydb-secondary-cluster\")\n .location(\"us-east1\")\n .network(default_.id())\n .clusterType(\"SECONDARY\")\n .continuousBackupConfig(ClusterContinuousBackupConfigArgs.builder()\n .enabled(false)\n .build())\n .secondaryConfig(ClusterSecondaryConfigArgs.builder()\n .primaryClusterName(primary.name())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(primaryInstance)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-primary-cluster\n location: us-central1\n network: ${default.id}\n primaryInstance:\n type: gcp:alloydb:Instance\n name: primary\n properties:\n cluster: ${primary.name}\n instanceId: alloydb-primary-instance\n instanceType: PRIMARY\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n secondary:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-secondary-cluster\n location: us-east1\n network: ${default.id}\n clusterType: SECONDARY\n continuousBackupConfig:\n enabled: false\n secondaryConfig:\n primaryClusterName: ${primary.name}\n options:\n dependson:\n - ${primaryInstance}\n default:\n type: gcp:compute:Network\n properties:\n name: alloydb-secondary-cluster\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-secondary-cluster\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster_id}}`\n\n* `{{project}}/{{location}}/{{cluster_id}}`\n\n* `{{location}}/{{cluster_id}}`\n\n* `{{cluster_id}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:alloydb/cluster:Cluster default projects/{{project}}/locations/{{location}}/clusters/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/cluster:Cluster default {{project}}/{{location}}/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/cluster:Cluster default {{location}}/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/cluster:Cluster default {{cluster_id}}\n```\n\n", + "description": "## Example Usage\n\n### Alloydb Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {name: \"alloydb-cluster\"});\nconst _default = new gcp.alloydb.Cluster(\"default\", {\n clusterId: \"alloydb-cluster\",\n location: \"us-central1\",\n networkConfig: {\n network: defaultNetwork.id,\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\", name=\"alloydb-cluster\")\ndefault = gcp.alloydb.Cluster(\"default\",\n cluster_id=\"alloydb-cluster\",\n location=\"us-central1\",\n network_config={\n \"network\": default_network.id,\n })\nproject = gcp.organizations.get_project()\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(\"default\", new()\n {\n Name = \"alloydb-cluster\",\n });\n\n var @default = new Gcp.Alloydb.Cluster(\"default\", new()\n {\n ClusterId = \"alloydb-cluster\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = defaultNetwork.Id,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-cluster\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewCluster(ctx, \"default\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.builder()\n .name(\"alloydb-cluster\")\n .build());\n\n var default_ = new Cluster(\"default\", ClusterArgs.builder()\n .clusterId(\"alloydb-cluster\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(defaultNetwork.id())\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-cluster\n location: us-central1\n networkConfig:\n network: ${defaultNetwork.id}\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: alloydb-cluster\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Alloydb Cluster Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"alloydb-cluster-full\"});\nconst full = new gcp.alloydb.Cluster(\"full\", {\n clusterId: \"alloydb-cluster-full\",\n location: \"us-central1\",\n networkConfig: {\n network: _default.id,\n },\n databaseVersion: \"POSTGRES_15\",\n initialUser: {\n user: \"alloydb-cluster-full\",\n password: \"alloydb-cluster-full\",\n },\n continuousBackupConfig: {\n enabled: true,\n recoveryWindowDays: 14,\n },\n automatedBackupPolicy: {\n location: \"us-central1\",\n backupWindow: \"1800s\",\n enabled: true,\n weeklySchedule: {\n daysOfWeeks: [\"MONDAY\"],\n startTimes: [{\n hours: 23,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n }],\n },\n quantityBasedRetention: {\n count: 1,\n },\n labels: {\n test: \"alloydb-cluster-full\",\n },\n },\n labels: {\n test: \"alloydb-cluster-full\",\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"alloydb-cluster-full\")\nfull = gcp.alloydb.Cluster(\"full\",\n cluster_id=\"alloydb-cluster-full\",\n location=\"us-central1\",\n network_config={\n \"network\": default.id,\n },\n database_version=\"POSTGRES_15\",\n initial_user={\n \"user\": \"alloydb-cluster-full\",\n \"password\": \"alloydb-cluster-full\",\n },\n continuous_backup_config={\n \"enabled\": True,\n \"recovery_window_days\": 14,\n },\n automated_backup_policy={\n \"location\": \"us-central1\",\n \"backup_window\": \"1800s\",\n \"enabled\": True,\n \"weekly_schedule\": {\n \"days_of_weeks\": [\"MONDAY\"],\n \"start_times\": [{\n \"hours\": 23,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n }],\n },\n \"quantity_based_retention\": {\n \"count\": 1,\n },\n \"labels\": {\n \"test\": \"alloydb-cluster-full\",\n },\n },\n labels={\n \"test\": \"alloydb-cluster-full\",\n })\nproject = gcp.organizations.get_project()\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.Network(\"default\", new()\n {\n Name = \"alloydb-cluster-full\",\n });\n\n var full = new Gcp.Alloydb.Cluster(\"full\", new()\n {\n ClusterId = \"alloydb-cluster-full\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = @default.Id,\n },\n DatabaseVersion = \"POSTGRES_15\",\n InitialUser = new Gcp.Alloydb.Inputs.ClusterInitialUserArgs\n {\n User = \"alloydb-cluster-full\",\n Password = \"alloydb-cluster-full\",\n },\n ContinuousBackupConfig = new Gcp.Alloydb.Inputs.ClusterContinuousBackupConfigArgs\n {\n Enabled = true,\n RecoveryWindowDays = 14,\n },\n AutomatedBackupPolicy = new Gcp.Alloydb.Inputs.ClusterAutomatedBackupPolicyArgs\n {\n Location = \"us-central1\",\n BackupWindow = \"1800s\",\n Enabled = true,\n WeeklySchedule = new Gcp.Alloydb.Inputs.ClusterAutomatedBackupPolicyWeeklyScheduleArgs\n {\n DaysOfWeeks = new[]\n {\n \"MONDAY\",\n },\n StartTimes = new[]\n {\n new Gcp.Alloydb.Inputs.ClusterAutomatedBackupPolicyWeeklyScheduleStartTimeArgs\n {\n Hours = 23,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n QuantityBasedRetention = new Gcp.Alloydb.Inputs.ClusterAutomatedBackupPolicyQuantityBasedRetentionArgs\n {\n Count = 1,\n },\n Labels = \n {\n { \"test\", \"alloydb-cluster-full\" },\n },\n },\n Labels = \n {\n { \"test\", \"alloydb-cluster-full\" },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-cluster-full\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewCluster(ctx, \"full\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-cluster-full\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: _default.ID(),\n\t\t\t},\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tInitialUser: \u0026alloydb.ClusterInitialUserArgs{\n\t\t\t\tUser: pulumi.String(\"alloydb-cluster-full\"),\n\t\t\t\tPassword: pulumi.String(\"alloydb-cluster-full\"),\n\t\t\t},\n\t\t\tContinuousBackupConfig: \u0026alloydb.ClusterContinuousBackupConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tRecoveryWindowDays: pulumi.Int(14),\n\t\t\t},\n\t\t\tAutomatedBackupPolicy: \u0026alloydb.ClusterAutomatedBackupPolicyArgs{\n\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\tBackupWindow: pulumi.String(\"1800s\"),\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tWeeklySchedule: \u0026alloydb.ClusterAutomatedBackupPolicyWeeklyScheduleArgs{\n\t\t\t\t\tDaysOfWeeks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MONDAY\"),\n\t\t\t\t\t},\n\t\t\t\t\tStartTimes: alloydb.ClusterAutomatedBackupPolicyWeeklyScheduleStartTimeArray{\n\t\t\t\t\t\t\u0026alloydb.ClusterAutomatedBackupPolicyWeeklyScheduleStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(23),\n\t\t\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tQuantityBasedRetention: \u0026alloydb.ClusterAutomatedBackupPolicyQuantityBasedRetentionArgs{\n\t\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"test\": pulumi.String(\"alloydb-cluster-full\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"test\": pulumi.String(\"alloydb-cluster-full\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterInitialUserArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterContinuousBackupConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterAutomatedBackupPolicyArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterAutomatedBackupPolicyWeeklyScheduleArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterAutomatedBackupPolicyQuantityBasedRetentionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"alloydb-cluster-full\")\n .build());\n\n var full = new Cluster(\"full\", ClusterArgs.builder()\n .clusterId(\"alloydb-cluster-full\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(default_.id())\n .build())\n .databaseVersion(\"POSTGRES_15\")\n .initialUser(ClusterInitialUserArgs.builder()\n .user(\"alloydb-cluster-full\")\n .password(\"alloydb-cluster-full\")\n .build())\n .continuousBackupConfig(ClusterContinuousBackupConfigArgs.builder()\n .enabled(true)\n .recoveryWindowDays(14)\n .build())\n .automatedBackupPolicy(ClusterAutomatedBackupPolicyArgs.builder()\n .location(\"us-central1\")\n .backupWindow(\"1800s\")\n .enabled(true)\n .weeklySchedule(ClusterAutomatedBackupPolicyWeeklyScheduleArgs.builder()\n .daysOfWeeks(\"MONDAY\")\n .startTimes(ClusterAutomatedBackupPolicyWeeklyScheduleStartTimeArgs.builder()\n .hours(23)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .quantityBasedRetention(ClusterAutomatedBackupPolicyQuantityBasedRetentionArgs.builder()\n .count(1)\n .build())\n .labels(Map.of(\"test\", \"alloydb-cluster-full\"))\n .build())\n .labels(Map.of(\"test\", \"alloydb-cluster-full\"))\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n full:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-cluster-full\n location: us-central1\n networkConfig:\n network: ${default.id}\n databaseVersion: POSTGRES_15\n initialUser:\n user: alloydb-cluster-full\n password: alloydb-cluster-full\n continuousBackupConfig:\n enabled: true\n recoveryWindowDays: 14\n automatedBackupPolicy:\n location: us-central1\n backupWindow: 1800s\n enabled: true\n weeklySchedule:\n daysOfWeeks:\n - MONDAY\n startTimes:\n - hours: 23\n minutes: 0\n seconds: 0\n nanos: 0\n quantityBasedRetention:\n count: 1\n labels:\n test: alloydb-cluster-full\n labels:\n test: alloydb-cluster-full\n default:\n type: gcp:compute:Network\n properties:\n name: alloydb-cluster-full\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Alloydb Cluster Restore\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getNetwork({\n name: \"alloydb-network\",\n});\nconst source = new gcp.alloydb.Cluster(\"source\", {\n clusterId: \"alloydb-source-cluster\",\n location: \"us-central1\",\n network: _default.then(_default =\u003e _default.id),\n initialUser: {\n password: \"alloydb-source-cluster\",\n },\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"alloydb-source-cluster\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: _default.then(_default =\u003e _default.id),\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: _default.then(_default =\u003e _default.id),\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst sourceInstance = new gcp.alloydb.Instance(\"source\", {\n cluster: source.name,\n instanceId: \"alloydb-instance\",\n instanceType: \"PRIMARY\",\n machineConfig: {\n cpuCount: 2,\n },\n}, {\n dependsOn: [vpcConnection],\n});\nconst sourceBackup = new gcp.alloydb.Backup(\"source\", {\n backupId: \"alloydb-backup\",\n location: \"us-central1\",\n clusterName: source.name,\n}, {\n dependsOn: [sourceInstance],\n});\nconst restoredFromBackup = new gcp.alloydb.Cluster(\"restored_from_backup\", {\n clusterId: \"alloydb-backup-restored\",\n location: \"us-central1\",\n networkConfig: {\n network: _default.then(_default =\u003e _default.id),\n },\n restoreBackupSource: {\n backupName: sourceBackup.name,\n },\n});\nconst restoredViaPitr = new gcp.alloydb.Cluster(\"restored_via_pitr\", {\n clusterId: \"alloydb-pitr-restored\",\n location: \"us-central1\",\n network: _default.then(_default =\u003e _default.id),\n restoreContinuousBackupSource: {\n cluster: source.name,\n pointInTime: \"2023-08-03T19:19:00.094Z\",\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"alloydb-network\")\nsource = gcp.alloydb.Cluster(\"source\",\n cluster_id=\"alloydb-source-cluster\",\n location=\"us-central1\",\n network=default.id,\n initial_user={\n \"password\": \"alloydb-source-cluster\",\n })\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"alloydb-source-cluster\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\nsource_instance = gcp.alloydb.Instance(\"source\",\n cluster=source.name,\n instance_id=\"alloydb-instance\",\n instance_type=\"PRIMARY\",\n machine_config={\n \"cpu_count\": 2,\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nsource_backup = gcp.alloydb.Backup(\"source\",\n backup_id=\"alloydb-backup\",\n location=\"us-central1\",\n cluster_name=source.name,\n opts = pulumi.ResourceOptions(depends_on=[source_instance]))\nrestored_from_backup = gcp.alloydb.Cluster(\"restored_from_backup\",\n cluster_id=\"alloydb-backup-restored\",\n location=\"us-central1\",\n network_config={\n \"network\": default.id,\n },\n restore_backup_source={\n \"backup_name\": source_backup.name,\n })\nrestored_via_pitr = gcp.alloydb.Cluster(\"restored_via_pitr\",\n cluster_id=\"alloydb-pitr-restored\",\n location=\"us-central1\",\n network=default.id,\n restore_continuous_backup_source={\n \"cluster\": source.name,\n \"point_in_time\": \"2023-08-03T19:19:00.094Z\",\n })\nproject = gcp.organizations.get_project()\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 = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"alloydb-network\",\n });\n\n var source = new Gcp.Alloydb.Cluster(\"source\", new()\n {\n ClusterId = \"alloydb-source-cluster\",\n Location = \"us-central1\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n InitialUser = new Gcp.Alloydb.Inputs.ClusterInitialUserArgs\n {\n Password = \"alloydb-source-cluster\",\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"alloydb-source-cluster\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var sourceInstance = new Gcp.Alloydb.Instance(\"source\", new()\n {\n Cluster = source.Name,\n InstanceId = \"alloydb-instance\",\n InstanceType = \"PRIMARY\",\n MachineConfig = new Gcp.Alloydb.Inputs.InstanceMachineConfigArgs\n {\n CpuCount = 2,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var sourceBackup = new Gcp.Alloydb.Backup(\"source\", new()\n {\n BackupId = \"alloydb-backup\",\n Location = \"us-central1\",\n ClusterName = source.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceInstance,\n },\n });\n\n var restoredFromBackup = new Gcp.Alloydb.Cluster(\"restored_from_backup\", new()\n {\n ClusterId = \"alloydb-backup-restored\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n },\n RestoreBackupSource = new Gcp.Alloydb.Inputs.ClusterRestoreBackupSourceArgs\n {\n BackupName = sourceBackup.Name,\n },\n });\n\n var restoredViaPitr = new Gcp.Alloydb.Cluster(\"restored_via_pitr\", new()\n {\n ClusterId = \"alloydb-pitr-restored\",\n Location = \"us-central1\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n RestoreContinuousBackupSource = new Gcp.Alloydb.Inputs.ClusterRestoreContinuousBackupSourceArgs\n {\n Cluster = source.Name,\n PointInTime = \"2023-08-03T19:19:00.094Z\",\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"alloydb-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsource, err := alloydb.NewCluster(ctx, \"source\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-source-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\tInitialUser: \u0026alloydb.ClusterInitialUserArgs{\n\t\t\t\tPassword: pulumi.String(\"alloydb-source-cluster\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"alloydb-source-cluster\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceInstance, err := alloydb.NewInstance(ctx, \"source\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: source.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-instance\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t\tMachineConfig: \u0026alloydb.InstanceMachineConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceBackup, err := alloydb.NewBackup(ctx, \"source\", \u0026alloydb.BackupArgs{\n\t\t\tBackupId: pulumi.String(\"alloydb-backup\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tClusterName: source.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceInstance,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewCluster(ctx, \"restored_from_backup\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-backup-restored\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\t},\n\t\t\tRestoreBackupSource: \u0026alloydb.ClusterRestoreBackupSourceArgs{\n\t\t\t\tBackupName: sourceBackup.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewCluster(ctx, \"restored_via_pitr\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-pitr-restored\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\tRestoreContinuousBackupSource: \u0026alloydb.ClusterRestoreContinuousBackupSourceArgs{\n\t\t\t\tCluster: source.Name,\n\t\t\t\tPointInTime: pulumi.String(\"2023-08-03T19:19:00.094Z\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterInitialUserArgs;\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.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.alloydb.inputs.InstanceMachineConfigArgs;\nimport com.pulumi.gcp.alloydb.Backup;\nimport com.pulumi.gcp.alloydb.BackupArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterRestoreBackupSourceArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterRestoreContinuousBackupSourceArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"alloydb-network\")\n .build());\n\n var source = new Cluster(\"source\", ClusterArgs.builder()\n .clusterId(\"alloydb-source-cluster\")\n .location(\"us-central1\")\n .network(default_.id())\n .initialUser(ClusterInitialUserArgs.builder()\n .password(\"alloydb-source-cluster\")\n .build())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"alloydb-source-cluster\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var sourceInstance = new Instance(\"sourceInstance\", InstanceArgs.builder()\n .cluster(source.name())\n .instanceId(\"alloydb-instance\")\n .instanceType(\"PRIMARY\")\n .machineConfig(InstanceMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n var sourceBackup = new Backup(\"sourceBackup\", BackupArgs.builder()\n .backupId(\"alloydb-backup\")\n .location(\"us-central1\")\n .clusterName(source.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceInstance)\n .build());\n\n var restoredFromBackup = new Cluster(\"restoredFromBackup\", ClusterArgs.builder()\n .clusterId(\"alloydb-backup-restored\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(default_.id())\n .build())\n .restoreBackupSource(ClusterRestoreBackupSourceArgs.builder()\n .backupName(sourceBackup.name())\n .build())\n .build());\n\n var restoredViaPitr = new Cluster(\"restoredViaPitr\", ClusterArgs.builder()\n .clusterId(\"alloydb-pitr-restored\")\n .location(\"us-central1\")\n .network(default_.id())\n .restoreContinuousBackupSource(ClusterRestoreContinuousBackupSourceArgs.builder()\n .cluster(source.name())\n .pointInTime(\"2023-08-03T19:19:00.094Z\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n source:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-source-cluster\n location: us-central1\n network: ${default.id}\n initialUser:\n password: alloydb-source-cluster\n sourceInstance:\n type: gcp:alloydb:Instance\n name: source\n properties:\n cluster: ${source.name}\n instanceId: alloydb-instance\n instanceType: PRIMARY\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n sourceBackup:\n type: gcp:alloydb:Backup\n name: source\n properties:\n backupId: alloydb-backup\n location: us-central1\n clusterName: ${source.name}\n options:\n dependson:\n - ${sourceInstance}\n restoredFromBackup:\n type: gcp:alloydb:Cluster\n name: restored_from_backup\n properties:\n clusterId: alloydb-backup-restored\n location: us-central1\n networkConfig:\n network: ${default.id}\n restoreBackupSource:\n backupName: ${sourceBackup.name}\n restoredViaPitr:\n type: gcp:alloydb:Cluster\n name: restored_via_pitr\n properties:\n clusterId: alloydb-pitr-restored\n location: us-central1\n network: ${default.id}\n restoreContinuousBackupSource:\n cluster: ${source.name}\n pointInTime: 2023-08-03T19:19:00.094Z\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-source-cluster\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n default:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: alloydb-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Alloydb Secondary Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"alloydb-secondary-cluster\"});\nconst primary = new gcp.alloydb.Cluster(\"primary\", {\n clusterId: \"alloydb-primary-cluster\",\n location: \"us-central1\",\n network: _default.id,\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"alloydb-secondary-cluster\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: _default.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst primaryInstance = new gcp.alloydb.Instance(\"primary\", {\n cluster: primary.name,\n instanceId: \"alloydb-primary-instance\",\n instanceType: \"PRIMARY\",\n machineConfig: {\n cpuCount: 2,\n },\n}, {\n dependsOn: [vpcConnection],\n});\nconst secondary = new gcp.alloydb.Cluster(\"secondary\", {\n clusterId: \"alloydb-secondary-cluster\",\n location: \"us-east1\",\n network: _default.id,\n clusterType: \"SECONDARY\",\n continuousBackupConfig: {\n enabled: false,\n },\n secondaryConfig: {\n primaryClusterName: primary.name,\n },\n}, {\n dependsOn: [primaryInstance],\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"alloydb-secondary-cluster\")\nprimary = gcp.alloydb.Cluster(\"primary\",\n cluster_id=\"alloydb-primary-cluster\",\n location=\"us-central1\",\n network=default.id)\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"alloydb-secondary-cluster\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\nprimary_instance = gcp.alloydb.Instance(\"primary\",\n cluster=primary.name,\n instance_id=\"alloydb-primary-instance\",\n instance_type=\"PRIMARY\",\n machine_config={\n \"cpu_count\": 2,\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nsecondary = gcp.alloydb.Cluster(\"secondary\",\n cluster_id=\"alloydb-secondary-cluster\",\n location=\"us-east1\",\n network=default.id,\n cluster_type=\"SECONDARY\",\n continuous_backup_config={\n \"enabled\": False,\n },\n secondary_config={\n \"primary_cluster_name\": primary.name,\n },\n opts = pulumi.ResourceOptions(depends_on=[primary_instance]))\nproject = gcp.organizations.get_project()\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.Network(\"default\", new()\n {\n Name = \"alloydb-secondary-cluster\",\n });\n\n var primary = new Gcp.Alloydb.Cluster(\"primary\", new()\n {\n ClusterId = \"alloydb-primary-cluster\",\n Location = \"us-central1\",\n Network = @default.Id,\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"alloydb-secondary-cluster\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var primaryInstance = new Gcp.Alloydb.Instance(\"primary\", new()\n {\n Cluster = primary.Name,\n InstanceId = \"alloydb-primary-instance\",\n InstanceType = \"PRIMARY\",\n MachineConfig = new Gcp.Alloydb.Inputs.InstanceMachineConfigArgs\n {\n CpuCount = 2,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var secondary = new Gcp.Alloydb.Cluster(\"secondary\", new()\n {\n ClusterId = \"alloydb-secondary-cluster\",\n Location = \"us-east1\",\n Network = @default.Id,\n ClusterType = \"SECONDARY\",\n ContinuousBackupConfig = new Gcp.Alloydb.Inputs.ClusterContinuousBackupConfigArgs\n {\n Enabled = false,\n },\n SecondaryConfig = new Gcp.Alloydb.Inputs.ClusterSecondaryConfigArgs\n {\n PrimaryClusterName = primary.Name,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n primaryInstance,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-secondary-cluster\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := alloydb.NewCluster(ctx, \"primary\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-primary-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"alloydb-secondary-cluster\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryInstance, err := alloydb.NewInstance(ctx, \"primary\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: primary.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-primary-instance\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t\tMachineConfig: \u0026alloydb.InstanceMachineConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewCluster(ctx, \"secondary\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-secondary-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tClusterType: pulumi.String(\"SECONDARY\"),\n\t\t\tContinuousBackupConfig: \u0026alloydb.ClusterContinuousBackupConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tSecondaryConfig: \u0026alloydb.ClusterSecondaryConfigArgs{\n\t\t\t\tPrimaryClusterName: primary.Name,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprimaryInstance,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\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.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.alloydb.inputs.InstanceMachineConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterContinuousBackupConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterSecondaryConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"alloydb-secondary-cluster\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .clusterId(\"alloydb-primary-cluster\")\n .location(\"us-central1\")\n .network(default_.id())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"alloydb-secondary-cluster\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var primaryInstance = new Instance(\"primaryInstance\", InstanceArgs.builder()\n .cluster(primary.name())\n .instanceId(\"alloydb-primary-instance\")\n .instanceType(\"PRIMARY\")\n .machineConfig(InstanceMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n var secondary = new Cluster(\"secondary\", ClusterArgs.builder()\n .clusterId(\"alloydb-secondary-cluster\")\n .location(\"us-east1\")\n .network(default_.id())\n .clusterType(\"SECONDARY\")\n .continuousBackupConfig(ClusterContinuousBackupConfigArgs.builder()\n .enabled(false)\n .build())\n .secondaryConfig(ClusterSecondaryConfigArgs.builder()\n .primaryClusterName(primary.name())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(primaryInstance)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-primary-cluster\n location: us-central1\n network: ${default.id}\n primaryInstance:\n type: gcp:alloydb:Instance\n name: primary\n properties:\n cluster: ${primary.name}\n instanceId: alloydb-primary-instance\n instanceType: PRIMARY\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n secondary:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-secondary-cluster\n location: us-east1\n network: ${default.id}\n clusterType: SECONDARY\n continuousBackupConfig:\n enabled: false\n secondaryConfig:\n primaryClusterName: ${primary.name}\n options:\n dependson:\n - ${primaryInstance}\n default:\n type: gcp:compute:Network\n properties:\n name: alloydb-secondary-cluster\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-secondary-cluster\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster_id}}`\n\n* `{{project}}/{{location}}/{{cluster_id}}`\n\n* `{{location}}/{{cluster_id}}`\n\n* `{{cluster_id}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:alloydb/cluster:Cluster default projects/{{project}}/locations/{{location}}/clusters/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/cluster:Cluster default {{project}}/{{location}}/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/cluster:Cluster default {{location}}/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/cluster:Cluster default {{cluster_id}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -113346,7 +113346,7 @@ } }, "gcp:alloydb/instance:Instance": { - "description": "## Example Usage\n\n### Alloydb Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {name: \"alloydb-network\"});\nconst defaultCluster = new gcp.alloydb.Cluster(\"default\", {\n clusterId: \"alloydb-cluster\",\n location: \"us-central1\",\n networkConfig: {\n network: defaultNetwork.id,\n },\n initialUser: {\n password: \"alloydb-cluster\",\n },\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"alloydb-cluster\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: defaultNetwork.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: defaultNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst _default = new gcp.alloydb.Instance(\"default\", {\n cluster: defaultCluster.name,\n instanceId: \"alloydb-instance\",\n instanceType: \"PRIMARY\",\n machineConfig: {\n cpuCount: 2,\n },\n}, {\n dependsOn: [vpcConnection],\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\", name=\"alloydb-network\")\ndefault_cluster = gcp.alloydb.Cluster(\"default\",\n cluster_id=\"alloydb-cluster\",\n location=\"us-central1\",\n network_config={\n \"network\": default_network.id,\n },\n initial_user={\n \"password\": \"alloydb-cluster\",\n })\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"alloydb-cluster\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default_network.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\ndefault = gcp.alloydb.Instance(\"default\",\n cluster=default_cluster.name,\n instance_id=\"alloydb-instance\",\n instance_type=\"PRIMARY\",\n machine_config={\n \"cpuCount\": 2,\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nproject = gcp.organizations.get_project()\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(\"default\", new()\n {\n Name = \"alloydb-network\",\n });\n\n var defaultCluster = new Gcp.Alloydb.Cluster(\"default\", new()\n {\n ClusterId = \"alloydb-cluster\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = defaultNetwork.Id,\n },\n InitialUser = new Gcp.Alloydb.Inputs.ClusterInitialUserArgs\n {\n Password = \"alloydb-cluster\",\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"alloydb-cluster\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = defaultNetwork.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = defaultNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var @default = new Gcp.Alloydb.Instance(\"default\", new()\n {\n Cluster = defaultCluster.Name,\n InstanceId = \"alloydb-instance\",\n InstanceType = \"PRIMARY\",\n MachineConfig = new Gcp.Alloydb.Inputs.InstanceMachineConfigArgs\n {\n CpuCount = 2,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCluster, err := alloydb.NewCluster(ctx, \"default\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\t},\n\t\t\tInitialUser: \u0026alloydb.ClusterInitialUserArgs{\n\t\t\t\tPassword: pulumi.String(\"alloydb-cluster\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"alloydb-cluster\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \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\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewInstance(ctx, \"default\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: defaultCluster.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-instance\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t\tMachineConfig: \u0026alloydb.InstanceMachineConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterInitialUserArgs;\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.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.alloydb.inputs.InstanceMachineConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.builder()\n .name(\"alloydb-network\")\n .build());\n\n var defaultCluster = new Cluster(\"defaultCluster\", ClusterArgs.builder()\n .clusterId(\"alloydb-cluster\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(defaultNetwork.id())\n .build())\n .initialUser(ClusterInitialUserArgs.builder()\n .password(\"alloydb-cluster\")\n .build())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"alloydb-cluster\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(defaultNetwork.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(defaultNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .cluster(defaultCluster.name())\n .instanceId(\"alloydb-instance\")\n .instanceType(\"PRIMARY\")\n .machineConfig(InstanceMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:alloydb:Instance\n properties:\n cluster: ${defaultCluster.name}\n instanceId: alloydb-instance\n instanceType: PRIMARY\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n defaultCluster:\n type: gcp:alloydb:Cluster\n name: default\n properties:\n clusterId: alloydb-cluster\n location: us-central1\n networkConfig:\n network: ${defaultNetwork.id}\n initialUser:\n password: alloydb-cluster\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: alloydb-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-cluster\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${defaultNetwork.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${defaultNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Alloydb Secondary Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"alloydb-secondary-network\"});\nconst primary = new gcp.alloydb.Cluster(\"primary\", {\n clusterId: \"alloydb-primary-cluster\",\n location: \"us-central1\",\n network: _default.id,\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"alloydb-secondary-instance\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: _default.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst primaryInstance = new gcp.alloydb.Instance(\"primary\", {\n cluster: primary.name,\n instanceId: \"alloydb-primary-instance\",\n instanceType: \"PRIMARY\",\n machineConfig: {\n cpuCount: 2,\n },\n}, {\n dependsOn: [vpcConnection],\n});\nconst secondary = new gcp.alloydb.Cluster(\"secondary\", {\n clusterId: \"alloydb-secondary-cluster\",\n location: \"us-east1\",\n network: _default.id,\n clusterType: \"SECONDARY\",\n continuousBackupConfig: {\n enabled: false,\n },\n secondaryConfig: {\n primaryClusterName: primary.name,\n },\n deletionPolicy: \"FORCE\",\n}, {\n dependsOn: [primaryInstance],\n});\nconst secondaryInstance = new gcp.alloydb.Instance(\"secondary\", {\n cluster: secondary.name,\n instanceId: \"alloydb-secondary-instance\",\n instanceType: secondary.clusterType,\n machineConfig: {\n cpuCount: 2,\n },\n}, {\n dependsOn: [vpcConnection],\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"alloydb-secondary-network\")\nprimary = gcp.alloydb.Cluster(\"primary\",\n cluster_id=\"alloydb-primary-cluster\",\n location=\"us-central1\",\n network=default.id)\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"alloydb-secondary-instance\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\nprimary_instance = gcp.alloydb.Instance(\"primary\",\n cluster=primary.name,\n instance_id=\"alloydb-primary-instance\",\n instance_type=\"PRIMARY\",\n machine_config={\n \"cpuCount\": 2,\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nsecondary = gcp.alloydb.Cluster(\"secondary\",\n cluster_id=\"alloydb-secondary-cluster\",\n location=\"us-east1\",\n network=default.id,\n cluster_type=\"SECONDARY\",\n continuous_backup_config={\n \"enabled\": False,\n },\n secondary_config={\n \"primaryClusterName\": primary.name,\n },\n deletion_policy=\"FORCE\",\n opts = pulumi.ResourceOptions(depends_on=[primary_instance]))\nsecondary_instance = gcp.alloydb.Instance(\"secondary\",\n cluster=secondary.name,\n instance_id=\"alloydb-secondary-instance\",\n instance_type=secondary.cluster_type,\n machine_config={\n \"cpuCount\": 2,\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nproject = gcp.organizations.get_project()\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.Network(\"default\", new()\n {\n Name = \"alloydb-secondary-network\",\n });\n\n var primary = new Gcp.Alloydb.Cluster(\"primary\", new()\n {\n ClusterId = \"alloydb-primary-cluster\",\n Location = \"us-central1\",\n Network = @default.Id,\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"alloydb-secondary-instance\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var primaryInstance = new Gcp.Alloydb.Instance(\"primary\", new()\n {\n Cluster = primary.Name,\n InstanceId = \"alloydb-primary-instance\",\n InstanceType = \"PRIMARY\",\n MachineConfig = new Gcp.Alloydb.Inputs.InstanceMachineConfigArgs\n {\n CpuCount = 2,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var secondary = new Gcp.Alloydb.Cluster(\"secondary\", new()\n {\n ClusterId = \"alloydb-secondary-cluster\",\n Location = \"us-east1\",\n Network = @default.Id,\n ClusterType = \"SECONDARY\",\n ContinuousBackupConfig = new Gcp.Alloydb.Inputs.ClusterContinuousBackupConfigArgs\n {\n Enabled = false,\n },\n SecondaryConfig = new Gcp.Alloydb.Inputs.ClusterSecondaryConfigArgs\n {\n PrimaryClusterName = primary.Name,\n },\n DeletionPolicy = \"FORCE\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n primaryInstance,\n },\n });\n\n var secondaryInstance = new Gcp.Alloydb.Instance(\"secondary\", new()\n {\n Cluster = secondary.Name,\n InstanceId = \"alloydb-secondary-instance\",\n InstanceType = secondary.ClusterType,\n MachineConfig = new Gcp.Alloydb.Inputs.InstanceMachineConfigArgs\n {\n CpuCount = 2,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-secondary-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := alloydb.NewCluster(ctx, \"primary\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-primary-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"alloydb-secondary-instance\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryInstance, err := alloydb.NewInstance(ctx, \"primary\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: primary.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-primary-instance\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t\tMachineConfig: \u0026alloydb.InstanceMachineConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondary, err := alloydb.NewCluster(ctx, \"secondary\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-secondary-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tClusterType: pulumi.String(\"SECONDARY\"),\n\t\t\tContinuousBackupConfig: \u0026alloydb.ClusterContinuousBackupConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tSecondaryConfig: \u0026alloydb.ClusterSecondaryConfigArgs{\n\t\t\t\tPrimaryClusterName: primary.Name,\n\t\t\t},\n\t\t\tDeletionPolicy: pulumi.String(\"FORCE\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprimaryInstance,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewInstance(ctx, \"secondary\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: secondary.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-secondary-instance\"),\n\t\t\tInstanceType: secondary.ClusterType,\n\t\t\tMachineConfig: \u0026alloydb.InstanceMachineConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\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.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.alloydb.inputs.InstanceMachineConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterContinuousBackupConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterSecondaryConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"alloydb-secondary-network\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .clusterId(\"alloydb-primary-cluster\")\n .location(\"us-central1\")\n .network(default_.id())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"alloydb-secondary-instance\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var primaryInstance = new Instance(\"primaryInstance\", InstanceArgs.builder()\n .cluster(primary.name())\n .instanceId(\"alloydb-primary-instance\")\n .instanceType(\"PRIMARY\")\n .machineConfig(InstanceMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n var secondary = new Cluster(\"secondary\", ClusterArgs.builder()\n .clusterId(\"alloydb-secondary-cluster\")\n .location(\"us-east1\")\n .network(default_.id())\n .clusterType(\"SECONDARY\")\n .continuousBackupConfig(ClusterContinuousBackupConfigArgs.builder()\n .enabled(false)\n .build())\n .secondaryConfig(ClusterSecondaryConfigArgs.builder()\n .primaryClusterName(primary.name())\n .build())\n .deletionPolicy(\"FORCE\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(primaryInstance)\n .build());\n\n var secondaryInstance = new Instance(\"secondaryInstance\", InstanceArgs.builder()\n .cluster(secondary.name())\n .instanceId(\"alloydb-secondary-instance\")\n .instanceType(secondary.clusterType())\n .machineConfig(InstanceMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-primary-cluster\n location: us-central1\n network: ${default.id}\n primaryInstance:\n type: gcp:alloydb:Instance\n name: primary\n properties:\n cluster: ${primary.name}\n instanceId: alloydb-primary-instance\n instanceType: PRIMARY\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n secondary:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-secondary-cluster\n location: us-east1\n network: ${default.id}\n clusterType: SECONDARY\n continuousBackupConfig:\n enabled: false\n secondaryConfig:\n primaryClusterName: ${primary.name}\n deletionPolicy: FORCE\n options:\n dependson:\n - ${primaryInstance}\n secondaryInstance:\n type: gcp:alloydb:Instance\n name: secondary\n properties:\n cluster: ${secondary.name}\n instanceId: alloydb-secondary-instance\n instanceType: ${secondary.clusterType}\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n default:\n type: gcp:compute:Network\n properties:\n name: alloydb-secondary-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-secondary-instance\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/instances/{{instance_id}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{instance_id}}`\n\n* `{{location}}/{{cluster}}/{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:alloydb/instance:Instance default projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/instance:Instance default {{project}}/{{location}}/{{cluster}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/instance:Instance default {{location}}/{{cluster}}/{{instance_id}}\n```\n\n", + "description": "## Example Usage\n\n### Alloydb Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {name: \"alloydb-network\"});\nconst defaultCluster = new gcp.alloydb.Cluster(\"default\", {\n clusterId: \"alloydb-cluster\",\n location: \"us-central1\",\n networkConfig: {\n network: defaultNetwork.id,\n },\n initialUser: {\n password: \"alloydb-cluster\",\n },\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"alloydb-cluster\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: defaultNetwork.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: defaultNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst _default = new gcp.alloydb.Instance(\"default\", {\n cluster: defaultCluster.name,\n instanceId: \"alloydb-instance\",\n instanceType: \"PRIMARY\",\n machineConfig: {\n cpuCount: 2,\n },\n}, {\n dependsOn: [vpcConnection],\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\", name=\"alloydb-network\")\ndefault_cluster = gcp.alloydb.Cluster(\"default\",\n cluster_id=\"alloydb-cluster\",\n location=\"us-central1\",\n network_config={\n \"network\": default_network.id,\n },\n initial_user={\n \"password\": \"alloydb-cluster\",\n })\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"alloydb-cluster\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default_network.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\ndefault = gcp.alloydb.Instance(\"default\",\n cluster=default_cluster.name,\n instance_id=\"alloydb-instance\",\n instance_type=\"PRIMARY\",\n machine_config={\n \"cpu_count\": 2,\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nproject = gcp.organizations.get_project()\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(\"default\", new()\n {\n Name = \"alloydb-network\",\n });\n\n var defaultCluster = new Gcp.Alloydb.Cluster(\"default\", new()\n {\n ClusterId = \"alloydb-cluster\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = defaultNetwork.Id,\n },\n InitialUser = new Gcp.Alloydb.Inputs.ClusterInitialUserArgs\n {\n Password = \"alloydb-cluster\",\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"alloydb-cluster\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = defaultNetwork.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = defaultNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var @default = new Gcp.Alloydb.Instance(\"default\", new()\n {\n Cluster = defaultCluster.Name,\n InstanceId = \"alloydb-instance\",\n InstanceType = \"PRIMARY\",\n MachineConfig = new Gcp.Alloydb.Inputs.InstanceMachineConfigArgs\n {\n CpuCount = 2,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCluster, err := alloydb.NewCluster(ctx, \"default\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\t},\n\t\t\tInitialUser: \u0026alloydb.ClusterInitialUserArgs{\n\t\t\t\tPassword: pulumi.String(\"alloydb-cluster\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"alloydb-cluster\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \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\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewInstance(ctx, \"default\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: defaultCluster.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-instance\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t\tMachineConfig: \u0026alloydb.InstanceMachineConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterInitialUserArgs;\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.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.alloydb.inputs.InstanceMachineConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.builder()\n .name(\"alloydb-network\")\n .build());\n\n var defaultCluster = new Cluster(\"defaultCluster\", ClusterArgs.builder()\n .clusterId(\"alloydb-cluster\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(defaultNetwork.id())\n .build())\n .initialUser(ClusterInitialUserArgs.builder()\n .password(\"alloydb-cluster\")\n .build())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"alloydb-cluster\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(defaultNetwork.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(defaultNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .cluster(defaultCluster.name())\n .instanceId(\"alloydb-instance\")\n .instanceType(\"PRIMARY\")\n .machineConfig(InstanceMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:alloydb:Instance\n properties:\n cluster: ${defaultCluster.name}\n instanceId: alloydb-instance\n instanceType: PRIMARY\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n defaultCluster:\n type: gcp:alloydb:Cluster\n name: default\n properties:\n clusterId: alloydb-cluster\n location: us-central1\n networkConfig:\n network: ${defaultNetwork.id}\n initialUser:\n password: alloydb-cluster\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: alloydb-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-cluster\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${defaultNetwork.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${defaultNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Alloydb Secondary Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"alloydb-secondary-network\"});\nconst primary = new gcp.alloydb.Cluster(\"primary\", {\n clusterId: \"alloydb-primary-cluster\",\n location: \"us-central1\",\n network: _default.id,\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"alloydb-secondary-instance\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: _default.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst primaryInstance = new gcp.alloydb.Instance(\"primary\", {\n cluster: primary.name,\n instanceId: \"alloydb-primary-instance\",\n instanceType: \"PRIMARY\",\n machineConfig: {\n cpuCount: 2,\n },\n}, {\n dependsOn: [vpcConnection],\n});\nconst secondary = new gcp.alloydb.Cluster(\"secondary\", {\n clusterId: \"alloydb-secondary-cluster\",\n location: \"us-east1\",\n network: _default.id,\n clusterType: \"SECONDARY\",\n continuousBackupConfig: {\n enabled: false,\n },\n secondaryConfig: {\n primaryClusterName: primary.name,\n },\n deletionPolicy: \"FORCE\",\n}, {\n dependsOn: [primaryInstance],\n});\nconst secondaryInstance = new gcp.alloydb.Instance(\"secondary\", {\n cluster: secondary.name,\n instanceId: \"alloydb-secondary-instance\",\n instanceType: secondary.clusterType,\n machineConfig: {\n cpuCount: 2,\n },\n}, {\n dependsOn: [vpcConnection],\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"alloydb-secondary-network\")\nprimary = gcp.alloydb.Cluster(\"primary\",\n cluster_id=\"alloydb-primary-cluster\",\n location=\"us-central1\",\n network=default.id)\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"alloydb-secondary-instance\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\nprimary_instance = gcp.alloydb.Instance(\"primary\",\n cluster=primary.name,\n instance_id=\"alloydb-primary-instance\",\n instance_type=\"PRIMARY\",\n machine_config={\n \"cpu_count\": 2,\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nsecondary = gcp.alloydb.Cluster(\"secondary\",\n cluster_id=\"alloydb-secondary-cluster\",\n location=\"us-east1\",\n network=default.id,\n cluster_type=\"SECONDARY\",\n continuous_backup_config={\n \"enabled\": False,\n },\n secondary_config={\n \"primary_cluster_name\": primary.name,\n },\n deletion_policy=\"FORCE\",\n opts = pulumi.ResourceOptions(depends_on=[primary_instance]))\nsecondary_instance = gcp.alloydb.Instance(\"secondary\",\n cluster=secondary.name,\n instance_id=\"alloydb-secondary-instance\",\n instance_type=secondary.cluster_type,\n machine_config={\n \"cpu_count\": 2,\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nproject = gcp.organizations.get_project()\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.Network(\"default\", new()\n {\n Name = \"alloydb-secondary-network\",\n });\n\n var primary = new Gcp.Alloydb.Cluster(\"primary\", new()\n {\n ClusterId = \"alloydb-primary-cluster\",\n Location = \"us-central1\",\n Network = @default.Id,\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"alloydb-secondary-instance\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var primaryInstance = new Gcp.Alloydb.Instance(\"primary\", new()\n {\n Cluster = primary.Name,\n InstanceId = \"alloydb-primary-instance\",\n InstanceType = \"PRIMARY\",\n MachineConfig = new Gcp.Alloydb.Inputs.InstanceMachineConfigArgs\n {\n CpuCount = 2,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var secondary = new Gcp.Alloydb.Cluster(\"secondary\", new()\n {\n ClusterId = \"alloydb-secondary-cluster\",\n Location = \"us-east1\",\n Network = @default.Id,\n ClusterType = \"SECONDARY\",\n ContinuousBackupConfig = new Gcp.Alloydb.Inputs.ClusterContinuousBackupConfigArgs\n {\n Enabled = false,\n },\n SecondaryConfig = new Gcp.Alloydb.Inputs.ClusterSecondaryConfigArgs\n {\n PrimaryClusterName = primary.Name,\n },\n DeletionPolicy = \"FORCE\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n primaryInstance,\n },\n });\n\n var secondaryInstance = new Gcp.Alloydb.Instance(\"secondary\", new()\n {\n Cluster = secondary.Name,\n InstanceId = \"alloydb-secondary-instance\",\n InstanceType = secondary.ClusterType,\n MachineConfig = new Gcp.Alloydb.Inputs.InstanceMachineConfigArgs\n {\n CpuCount = 2,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-secondary-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := alloydb.NewCluster(ctx, \"primary\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-primary-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"alloydb-secondary-instance\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryInstance, err := alloydb.NewInstance(ctx, \"primary\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: primary.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-primary-instance\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t\tMachineConfig: \u0026alloydb.InstanceMachineConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondary, err := alloydb.NewCluster(ctx, \"secondary\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-secondary-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tClusterType: pulumi.String(\"SECONDARY\"),\n\t\t\tContinuousBackupConfig: \u0026alloydb.ClusterContinuousBackupConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tSecondaryConfig: \u0026alloydb.ClusterSecondaryConfigArgs{\n\t\t\t\tPrimaryClusterName: primary.Name,\n\t\t\t},\n\t\t\tDeletionPolicy: pulumi.String(\"FORCE\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprimaryInstance,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewInstance(ctx, \"secondary\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: secondary.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-secondary-instance\"),\n\t\t\tInstanceType: secondary.ClusterType,\n\t\t\tMachineConfig: \u0026alloydb.InstanceMachineConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\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.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.alloydb.inputs.InstanceMachineConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterContinuousBackupConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterSecondaryConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"alloydb-secondary-network\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .clusterId(\"alloydb-primary-cluster\")\n .location(\"us-central1\")\n .network(default_.id())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"alloydb-secondary-instance\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var primaryInstance = new Instance(\"primaryInstance\", InstanceArgs.builder()\n .cluster(primary.name())\n .instanceId(\"alloydb-primary-instance\")\n .instanceType(\"PRIMARY\")\n .machineConfig(InstanceMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n var secondary = new Cluster(\"secondary\", ClusterArgs.builder()\n .clusterId(\"alloydb-secondary-cluster\")\n .location(\"us-east1\")\n .network(default_.id())\n .clusterType(\"SECONDARY\")\n .continuousBackupConfig(ClusterContinuousBackupConfigArgs.builder()\n .enabled(false)\n .build())\n .secondaryConfig(ClusterSecondaryConfigArgs.builder()\n .primaryClusterName(primary.name())\n .build())\n .deletionPolicy(\"FORCE\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(primaryInstance)\n .build());\n\n var secondaryInstance = new Instance(\"secondaryInstance\", InstanceArgs.builder()\n .cluster(secondary.name())\n .instanceId(\"alloydb-secondary-instance\")\n .instanceType(secondary.clusterType())\n .machineConfig(InstanceMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-primary-cluster\n location: us-central1\n network: ${default.id}\n primaryInstance:\n type: gcp:alloydb:Instance\n name: primary\n properties:\n cluster: ${primary.name}\n instanceId: alloydb-primary-instance\n instanceType: PRIMARY\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n secondary:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-secondary-cluster\n location: us-east1\n network: ${default.id}\n clusterType: SECONDARY\n continuousBackupConfig:\n enabled: false\n secondaryConfig:\n primaryClusterName: ${primary.name}\n deletionPolicy: FORCE\n options:\n dependson:\n - ${primaryInstance}\n secondaryInstance:\n type: gcp:alloydb:Instance\n name: secondary\n properties:\n cluster: ${secondary.name}\n instanceId: alloydb-secondary-instance\n instanceType: ${secondary.clusterType}\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n default:\n type: gcp:compute:Network\n properties:\n name: alloydb-secondary-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-secondary-instance\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/instances/{{instance_id}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{instance_id}}`\n\n* `{{location}}/{{cluster}}/{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:alloydb/instance:Instance default projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/instance:Instance default {{project}}/{{location}}/{{cluster}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/instance:Instance default {{location}}/{{cluster}}/{{instance_id}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -115263,7 +115263,7 @@ } }, "gcp:apigee/addonsConfig:AddonsConfig": { - "description": "Configures the add-ons for the Apigee organization. The existing add-on configuration will be fully replaced.\n\n\nTo get more information about AddonsConfig, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations#setaddons)\n* How-to Guides\n * [Creating an API organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org)\n\n## Example Usage\n\n### Apigee Addons Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testOrganization = new gcp.apigee.AddonsConfig(\"test_organization\", {\n org: \"test_organization\",\n addonsConfig: {\n apiSecurityConfig: {\n enabled: true,\n },\n monetizationConfig: {\n enabled: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_organization = gcp.apigee.AddonsConfig(\"test_organization\",\n org=\"test_organization\",\n addons_config={\n \"apiSecurityConfig\": {\n \"enabled\": True,\n },\n \"monetizationConfig\": {\n \"enabled\": 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 testOrganization = new Gcp.Apigee.AddonsConfig(\"test_organization\", new()\n {\n Org = \"test_organization\",\n AddonsConfigDetails = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigArgs\n {\n ApiSecurityConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigApiSecurityConfigArgs\n {\n Enabled = true,\n },\n MonetizationConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigMonetizationConfigArgs\n {\n Enabled = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/apigee\"\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 := apigee.NewAddonsConfig(ctx, \"test_organization\", \u0026apigee.AddonsConfigArgs{\n\t\t\tOrg: pulumi.String(\"test_organization\"),\n\t\t\tAddonsConfig: \u0026apigee.AddonsConfigAddonsConfigArgs{\n\t\t\t\tApiSecurityConfig: \u0026apigee.AddonsConfigAddonsConfigApiSecurityConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tMonetizationConfig: \u0026apigee.AddonsConfigAddonsConfigMonetizationConfigArgs{\n\t\t\t\t\tEnabled: 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.apigee.AddonsConfig;\nimport com.pulumi.gcp.apigee.AddonsConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigApiSecurityConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigMonetizationConfigArgs;\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 testOrganization = new AddonsConfig(\"testOrganization\", AddonsConfigArgs.builder()\n .org(\"test_organization\")\n .addonsConfig(AddonsConfigAddonsConfigArgs.builder()\n .apiSecurityConfig(AddonsConfigAddonsConfigApiSecurityConfigArgs.builder()\n .enabled(true)\n .build())\n .monetizationConfig(AddonsConfigAddonsConfigMonetizationConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testOrganization:\n type: gcp:apigee:AddonsConfig\n name: test_organization\n properties:\n org: test_organization\n addonsConfig:\n apiSecurityConfig:\n enabled: true\n monetizationConfig:\n enabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apigee Addons Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigee = new gcp.projects.Service(\"apigee\", {\n project: current.then(current =\u003e current.project),\n service: \"apigee.googleapis.com\",\n});\nconst compute = new gcp.projects.Service(\"compute\", {\n project: current.then(current =\u003e current.project),\n service: \"compute.googleapis.com\",\n});\nconst servicenetworking = new gcp.projects.Service(\"servicenetworking\", {\n project: current.then(current =\u003e current.project),\n service: \"servicenetworking.googleapis.com\",\n});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {\n name: \"apigee-network\",\n project: current.then(current =\u003e current.project),\n}, {\n dependsOn: [compute],\n});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n project: current.then(current =\u003e current.project),\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst org = new gcp.apigee.Organization(\"org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n billingType: \"EVALUATION\",\n}, {\n dependsOn: [\n apigeeVpcConnection,\n apigee,\n ],\n});\nconst testOrganization = new gcp.apigee.AddonsConfig(\"test_organization\", {\n org: org.name,\n addonsConfig: {\n integrationConfig: {\n enabled: true,\n },\n apiSecurityConfig: {\n enabled: true,\n },\n connectorsPlatformConfig: {\n enabled: true,\n },\n monetizationConfig: {\n enabled: true,\n },\n advancedApiOpsConfig: {\n enabled: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee = gcp.projects.Service(\"apigee\",\n project=current.project,\n service=\"apigee.googleapis.com\")\ncompute = gcp.projects.Service(\"compute\",\n project=current.project,\n service=\"compute.googleapis.com\")\nservicenetworking = gcp.projects.Service(\"servicenetworking\",\n project=current.project,\n service=\"servicenetworking.googleapis.com\")\napigee_network = gcp.compute.Network(\"apigee_network\",\n name=\"apigee-network\",\n project=current.project,\n opts = pulumi.ResourceOptions(depends_on=[compute]))\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id,\n project=current.project)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\norg = gcp.apigee.Organization(\"org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n billing_type=\"EVALUATION\",\n opts = pulumi.ResourceOptions(depends_on=[\n apigee_vpc_connection,\n apigee,\n ]))\ntest_organization = gcp.apigee.AddonsConfig(\"test_organization\",\n org=org.name,\n addons_config={\n \"integrationConfig\": {\n \"enabled\": True,\n },\n \"apiSecurityConfig\": {\n \"enabled\": True,\n },\n \"connectorsPlatformConfig\": {\n \"enabled\": True,\n },\n \"monetizationConfig\": {\n \"enabled\": True,\n },\n \"advancedApiOpsConfig\": {\n \"enabled\": 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 current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigee = new Gcp.Projects.Service(\"apigee\", new()\n {\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n ServiceName = \"apigee.googleapis.com\",\n });\n\n var compute = new Gcp.Projects.Service(\"compute\", new()\n {\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n ServiceName = \"compute.googleapis.com\",\n });\n\n var servicenetworking = new Gcp.Projects.Service(\"servicenetworking\", new()\n {\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n ServiceName = \"servicenetworking.googleapis.com\",\n });\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n compute,\n },\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var org = new Gcp.Apigee.Organization(\"org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n BillingType = \"EVALUATION\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n apigee,\n },\n });\n\n var testOrganization = new Gcp.Apigee.AddonsConfig(\"test_organization\", new()\n {\n Org = org.Name,\n AddonsConfigDetails = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigArgs\n {\n IntegrationConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigIntegrationConfigArgs\n {\n Enabled = true,\n },\n ApiSecurityConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigApiSecurityConfigArgs\n {\n Enabled = true,\n },\n ConnectorsPlatformConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigConnectorsPlatformConfigArgs\n {\n Enabled = true,\n },\n MonetizationConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigMonetizationConfigArgs\n {\n Enabled = true,\n },\n AdvancedApiOpsConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigAdvancedApiOpsConfigArgs\n {\n Enabled = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tcurrent, err := organizations.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigee, err := projects.NewService(ctx, \"apigee\", \u0026projects.ServiceArgs{\n\t\t\tProject: pulumi.String(current.Project),\n\t\t\tService: pulumi.String(\"apigee.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcompute, err := projects.NewService(ctx, \"compute\", \u0026projects.ServiceArgs{\n\t\t\tProject: pulumi.String(current.Project),\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewService(ctx, \"servicenetworking\", \u0026projects.ServiceArgs{\n\t\t\tProject: pulumi.String(current.Project),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t\tProject: pulumi.String(current.Project),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcompute,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tProject: pulumi.String(current.Project),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\torg, err := apigee.NewOrganization(ctx, \"org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t\tBillingType: pulumi.String(\"EVALUATION\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t\tapigee,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewAddonsConfig(ctx, \"test_organization\", \u0026apigee.AddonsConfigArgs{\n\t\t\tOrg: org.Name,\n\t\t\tAddonsConfig: \u0026apigee.AddonsConfigAddonsConfigArgs{\n\t\t\t\tIntegrationConfig: \u0026apigee.AddonsConfigAddonsConfigIntegrationConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tApiSecurityConfig: \u0026apigee.AddonsConfigAddonsConfigApiSecurityConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tConnectorsPlatformConfig: \u0026apigee.AddonsConfigAddonsConfigConnectorsPlatformConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tMonetizationConfig: \u0026apigee.AddonsConfigAddonsConfigMonetizationConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tAdvancedApiOpsConfig: \u0026apigee.AddonsConfigAddonsConfigAdvancedApiOpsConfigArgs{\n\t\t\t\t\tEnabled: 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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\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.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.AddonsConfig;\nimport com.pulumi.gcp.apigee.AddonsConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigIntegrationConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigApiSecurityConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigConnectorsPlatformConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigMonetizationConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigAdvancedApiOpsConfigArgs;\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 current = OrganizationsFunctions.getClientConfig();\n\n var apigee = new Service(\"apigee\", ServiceArgs.builder()\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .service(\"apigee.googleapis.com\")\n .build());\n\n var compute = new Service(\"compute\", ServiceArgs.builder()\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .service(\"compute.googleapis.com\")\n .build());\n\n var servicenetworking = new Service(\"servicenetworking\", ServiceArgs.builder()\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .service(\"servicenetworking.googleapis.com\")\n .build());\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .build(), CustomResourceOptions.builder()\n .dependsOn(compute)\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var org = new Organization(\"org\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .billingType(\"EVALUATION\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n apigeeVpcConnection,\n apigee)\n .build());\n\n var testOrganization = new AddonsConfig(\"testOrganization\", AddonsConfigArgs.builder()\n .org(org.name())\n .addonsConfig(AddonsConfigAddonsConfigArgs.builder()\n .integrationConfig(AddonsConfigAddonsConfigIntegrationConfigArgs.builder()\n .enabled(true)\n .build())\n .apiSecurityConfig(AddonsConfigAddonsConfigApiSecurityConfigArgs.builder()\n .enabled(true)\n .build())\n .connectorsPlatformConfig(AddonsConfigAddonsConfigConnectorsPlatformConfigArgs.builder()\n .enabled(true)\n .build())\n .monetizationConfig(AddonsConfigAddonsConfigMonetizationConfigArgs.builder()\n .enabled(true)\n .build())\n .advancedApiOpsConfig(AddonsConfigAddonsConfigAdvancedApiOpsConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigee:\n type: gcp:projects:Service\n properties:\n project: ${current.project}\n service: apigee.googleapis.com\n compute:\n type: gcp:projects:Service\n properties:\n project: ${current.project}\n service: compute.googleapis.com\n servicenetworking:\n type: gcp:projects:Service\n properties:\n project: ${current.project}\n service: servicenetworking.googleapis.com\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n project: ${current.project}\n options:\n dependson:\n - ${compute}\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n project: ${current.project}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n org:\n type: gcp:apigee:Organization\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n billingType: EVALUATION\n options:\n dependson:\n - ${apigeeVpcConnection}\n - ${apigee}\n testOrganization:\n type: gcp:apigee:AddonsConfig\n name: test_organization\n properties:\n org: ${org.name}\n addonsConfig:\n integrationConfig:\n enabled: true\n apiSecurityConfig:\n enabled: true\n connectorsPlatformConfig:\n enabled: true\n monetizationConfig:\n enabled: true\n advancedApiOpsConfig:\n enabled: true\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAddonsConfig can be imported using any of these accepted formats:\n\n* `organizations/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AddonsConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/addonsConfig:AddonsConfig default organizations/{{name}}\n```\n\n```sh\n$ pulumi import gcp:apigee/addonsConfig:AddonsConfig default {{name}}\n```\n\n", + "description": "Configures the add-ons for the Apigee organization. The existing add-on configuration will be fully replaced.\n\n\nTo get more information about AddonsConfig, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations#setaddons)\n* How-to Guides\n * [Creating an API organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org)\n\n## Example Usage\n\n### Apigee Addons Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testOrganization = new gcp.apigee.AddonsConfig(\"test_organization\", {\n org: \"test_organization\",\n addonsConfig: {\n apiSecurityConfig: {\n enabled: true,\n },\n monetizationConfig: {\n enabled: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_organization = gcp.apigee.AddonsConfig(\"test_organization\",\n org=\"test_organization\",\n addons_config={\n \"api_security_config\": {\n \"enabled\": True,\n },\n \"monetization_config\": {\n \"enabled\": 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 testOrganization = new Gcp.Apigee.AddonsConfig(\"test_organization\", new()\n {\n Org = \"test_organization\",\n AddonsConfigDetails = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigArgs\n {\n ApiSecurityConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigApiSecurityConfigArgs\n {\n Enabled = true,\n },\n MonetizationConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigMonetizationConfigArgs\n {\n Enabled = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/apigee\"\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 := apigee.NewAddonsConfig(ctx, \"test_organization\", \u0026apigee.AddonsConfigArgs{\n\t\t\tOrg: pulumi.String(\"test_organization\"),\n\t\t\tAddonsConfig: \u0026apigee.AddonsConfigAddonsConfigArgs{\n\t\t\t\tApiSecurityConfig: \u0026apigee.AddonsConfigAddonsConfigApiSecurityConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tMonetizationConfig: \u0026apigee.AddonsConfigAddonsConfigMonetizationConfigArgs{\n\t\t\t\t\tEnabled: 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.apigee.AddonsConfig;\nimport com.pulumi.gcp.apigee.AddonsConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigApiSecurityConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigMonetizationConfigArgs;\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 testOrganization = new AddonsConfig(\"testOrganization\", AddonsConfigArgs.builder()\n .org(\"test_organization\")\n .addonsConfig(AddonsConfigAddonsConfigArgs.builder()\n .apiSecurityConfig(AddonsConfigAddonsConfigApiSecurityConfigArgs.builder()\n .enabled(true)\n .build())\n .monetizationConfig(AddonsConfigAddonsConfigMonetizationConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testOrganization:\n type: gcp:apigee:AddonsConfig\n name: test_organization\n properties:\n org: test_organization\n addonsConfig:\n apiSecurityConfig:\n enabled: true\n monetizationConfig:\n enabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apigee Addons Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigee = new gcp.projects.Service(\"apigee\", {\n project: current.then(current =\u003e current.project),\n service: \"apigee.googleapis.com\",\n});\nconst compute = new gcp.projects.Service(\"compute\", {\n project: current.then(current =\u003e current.project),\n service: \"compute.googleapis.com\",\n});\nconst servicenetworking = new gcp.projects.Service(\"servicenetworking\", {\n project: current.then(current =\u003e current.project),\n service: \"servicenetworking.googleapis.com\",\n});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {\n name: \"apigee-network\",\n project: current.then(current =\u003e current.project),\n}, {\n dependsOn: [compute],\n});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n project: current.then(current =\u003e current.project),\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst org = new gcp.apigee.Organization(\"org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n billingType: \"EVALUATION\",\n}, {\n dependsOn: [\n apigeeVpcConnection,\n apigee,\n ],\n});\nconst testOrganization = new gcp.apigee.AddonsConfig(\"test_organization\", {\n org: org.name,\n addonsConfig: {\n integrationConfig: {\n enabled: true,\n },\n apiSecurityConfig: {\n enabled: true,\n },\n connectorsPlatformConfig: {\n enabled: true,\n },\n monetizationConfig: {\n enabled: true,\n },\n advancedApiOpsConfig: {\n enabled: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee = gcp.projects.Service(\"apigee\",\n project=current.project,\n service=\"apigee.googleapis.com\")\ncompute = gcp.projects.Service(\"compute\",\n project=current.project,\n service=\"compute.googleapis.com\")\nservicenetworking = gcp.projects.Service(\"servicenetworking\",\n project=current.project,\n service=\"servicenetworking.googleapis.com\")\napigee_network = gcp.compute.Network(\"apigee_network\",\n name=\"apigee-network\",\n project=current.project,\n opts = pulumi.ResourceOptions(depends_on=[compute]))\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id,\n project=current.project)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\norg = gcp.apigee.Organization(\"org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n billing_type=\"EVALUATION\",\n opts = pulumi.ResourceOptions(depends_on=[\n apigee_vpc_connection,\n apigee,\n ]))\ntest_organization = gcp.apigee.AddonsConfig(\"test_organization\",\n org=org.name,\n addons_config={\n \"integration_config\": {\n \"enabled\": True,\n },\n \"api_security_config\": {\n \"enabled\": True,\n },\n \"connectors_platform_config\": {\n \"enabled\": True,\n },\n \"monetization_config\": {\n \"enabled\": True,\n },\n \"advanced_api_ops_config\": {\n \"enabled\": 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 current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigee = new Gcp.Projects.Service(\"apigee\", new()\n {\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n ServiceName = \"apigee.googleapis.com\",\n });\n\n var compute = new Gcp.Projects.Service(\"compute\", new()\n {\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n ServiceName = \"compute.googleapis.com\",\n });\n\n var servicenetworking = new Gcp.Projects.Service(\"servicenetworking\", new()\n {\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n ServiceName = \"servicenetworking.googleapis.com\",\n });\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n compute,\n },\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var org = new Gcp.Apigee.Organization(\"org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n BillingType = \"EVALUATION\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n apigee,\n },\n });\n\n var testOrganization = new Gcp.Apigee.AddonsConfig(\"test_organization\", new()\n {\n Org = org.Name,\n AddonsConfigDetails = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigArgs\n {\n IntegrationConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigIntegrationConfigArgs\n {\n Enabled = true,\n },\n ApiSecurityConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigApiSecurityConfigArgs\n {\n Enabled = true,\n },\n ConnectorsPlatformConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigConnectorsPlatformConfigArgs\n {\n Enabled = true,\n },\n MonetizationConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigMonetizationConfigArgs\n {\n Enabled = true,\n },\n AdvancedApiOpsConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigAdvancedApiOpsConfigArgs\n {\n Enabled = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tcurrent, err := organizations.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigee, err := projects.NewService(ctx, \"apigee\", \u0026projects.ServiceArgs{\n\t\t\tProject: pulumi.String(current.Project),\n\t\t\tService: pulumi.String(\"apigee.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcompute, err := projects.NewService(ctx, \"compute\", \u0026projects.ServiceArgs{\n\t\t\tProject: pulumi.String(current.Project),\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewService(ctx, \"servicenetworking\", \u0026projects.ServiceArgs{\n\t\t\tProject: pulumi.String(current.Project),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t\tProject: pulumi.String(current.Project),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcompute,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tProject: pulumi.String(current.Project),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\torg, err := apigee.NewOrganization(ctx, \"org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t\tBillingType: pulumi.String(\"EVALUATION\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t\tapigee,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewAddonsConfig(ctx, \"test_organization\", \u0026apigee.AddonsConfigArgs{\n\t\t\tOrg: org.Name,\n\t\t\tAddonsConfig: \u0026apigee.AddonsConfigAddonsConfigArgs{\n\t\t\t\tIntegrationConfig: \u0026apigee.AddonsConfigAddonsConfigIntegrationConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tApiSecurityConfig: \u0026apigee.AddonsConfigAddonsConfigApiSecurityConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tConnectorsPlatformConfig: \u0026apigee.AddonsConfigAddonsConfigConnectorsPlatformConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tMonetizationConfig: \u0026apigee.AddonsConfigAddonsConfigMonetizationConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tAdvancedApiOpsConfig: \u0026apigee.AddonsConfigAddonsConfigAdvancedApiOpsConfigArgs{\n\t\t\t\t\tEnabled: 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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\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.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.AddonsConfig;\nimport com.pulumi.gcp.apigee.AddonsConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigIntegrationConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigApiSecurityConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigConnectorsPlatformConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigMonetizationConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigAdvancedApiOpsConfigArgs;\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 current = OrganizationsFunctions.getClientConfig();\n\n var apigee = new Service(\"apigee\", ServiceArgs.builder()\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .service(\"apigee.googleapis.com\")\n .build());\n\n var compute = new Service(\"compute\", ServiceArgs.builder()\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .service(\"compute.googleapis.com\")\n .build());\n\n var servicenetworking = new Service(\"servicenetworking\", ServiceArgs.builder()\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .service(\"servicenetworking.googleapis.com\")\n .build());\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .build(), CustomResourceOptions.builder()\n .dependsOn(compute)\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var org = new Organization(\"org\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .billingType(\"EVALUATION\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n apigeeVpcConnection,\n apigee)\n .build());\n\n var testOrganization = new AddonsConfig(\"testOrganization\", AddonsConfigArgs.builder()\n .org(org.name())\n .addonsConfig(AddonsConfigAddonsConfigArgs.builder()\n .integrationConfig(AddonsConfigAddonsConfigIntegrationConfigArgs.builder()\n .enabled(true)\n .build())\n .apiSecurityConfig(AddonsConfigAddonsConfigApiSecurityConfigArgs.builder()\n .enabled(true)\n .build())\n .connectorsPlatformConfig(AddonsConfigAddonsConfigConnectorsPlatformConfigArgs.builder()\n .enabled(true)\n .build())\n .monetizationConfig(AddonsConfigAddonsConfigMonetizationConfigArgs.builder()\n .enabled(true)\n .build())\n .advancedApiOpsConfig(AddonsConfigAddonsConfigAdvancedApiOpsConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigee:\n type: gcp:projects:Service\n properties:\n project: ${current.project}\n service: apigee.googleapis.com\n compute:\n type: gcp:projects:Service\n properties:\n project: ${current.project}\n service: compute.googleapis.com\n servicenetworking:\n type: gcp:projects:Service\n properties:\n project: ${current.project}\n service: servicenetworking.googleapis.com\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n project: ${current.project}\n options:\n dependson:\n - ${compute}\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n project: ${current.project}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n org:\n type: gcp:apigee:Organization\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n billingType: EVALUATION\n options:\n dependson:\n - ${apigeeVpcConnection}\n - ${apigee}\n testOrganization:\n type: gcp:apigee:AddonsConfig\n name: test_organization\n properties:\n org: ${org.name}\n addonsConfig:\n integrationConfig:\n enabled: true\n apiSecurityConfig:\n enabled: true\n connectorsPlatformConfig:\n enabled: true\n monetizationConfig:\n enabled: true\n advancedApiOpsConfig:\n enabled: true\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAddonsConfig can be imported using any of these accepted formats:\n\n* `organizations/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AddonsConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/addonsConfig:AddonsConfig default organizations/{{name}}\n```\n\n```sh\n$ pulumi import gcp:apigee/addonsConfig:AddonsConfig default {{name}}\n```\n\n", "properties": { "addonsConfig": { "$ref": "#/types/gcp:apigee/AddonsConfigAddonsConfig:AddonsConfigAddonsConfig", @@ -116783,7 +116783,7 @@ } }, "gcp:apigee/keystoresAliasesSelfSignedCert:KeystoresAliasesSelfSignedCert": { - "description": "An Environment Keystore Alias for Self Signed Certificate Format in Apigee\n\n\nTo get more information about KeystoresAliasesSelfSignedCert, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.environments.keystores.aliases/create)\n* How-to Guides\n * [Creating an environment](https://cloud.google.com/apigee/docs/api-platform/get-started/create-environment)\n\n## Example Usage\n\n### Apigee Env Keystore Alias Self Signed Cert\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.organizations.Project(\"project\", {\n projectId: \"my-project\",\n name: \"my-project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst apigee = new gcp.projects.Service(\"apigee\", {\n project: project.projectId,\n service: \"apigee.googleapis.com\",\n});\nconst servicenetworking = new gcp.projects.Service(\"servicenetworking\", {\n project: project.projectId,\n service: \"servicenetworking.googleapis.com\",\n}, {\n dependsOn: [apigee],\n});\nconst compute = new gcp.projects.Service(\"compute\", {\n project: project.projectId,\n service: \"compute.googleapis.com\",\n}, {\n dependsOn: [servicenetworking],\n});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {\n name: \"apigee-network\",\n project: project.projectId,\n}, {\n dependsOn: [compute],\n});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n project: project.projectId,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n}, {\n dependsOn: [servicenetworking],\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: project.projectId,\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [\n apigeeVpcConnection,\n apigee,\n ],\n});\nconst apigeeEnvironmentKeystoreSsAlias = new gcp.apigee.Environment(\"apigee_environment_keystore_ss_alias\", {\n orgId: apigeeOrg.id,\n name: \"env-name\",\n description: \"Apigee Environment\",\n displayName: \"environment-1\",\n});\nconst apigeeEnvironmentKeystoreAlias = new gcp.apigee.EnvKeystore(\"apigee_environment_keystore_alias\", {\n name: \"env-keystore\",\n envId: apigeeEnvironmentKeystoreSsAlias.id,\n});\nconst apigeeEnvironmentKeystoreSsAliasKeystoresAliasesSelfSignedCert = new gcp.apigee.KeystoresAliasesSelfSignedCert(\"apigee_environment_keystore_ss_alias\", {\n environment: apigeeEnvironmentKeystoreSsAlias.name,\n orgId: apigeeOrg.name,\n keystore: apigeeEnvironmentKeystoreAlias.name,\n alias: \"alias\",\n keySize: \"1024\",\n sigAlg: \"SHA512withRSA\",\n certValidityInDays: 4,\n subject: {\n commonName: \"selfsigned_example\",\n countryCode: \"US\",\n locality: \"TX\",\n org: \"CCE\",\n orgUnit: \"PSO\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.Project(\"project\",\n project_id=\"my-project\",\n name=\"my-project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\napigee = gcp.projects.Service(\"apigee\",\n project=project.project_id,\n service=\"apigee.googleapis.com\")\nservicenetworking = gcp.projects.Service(\"servicenetworking\",\n project=project.project_id,\n service=\"servicenetworking.googleapis.com\",\n opts = pulumi.ResourceOptions(depends_on=[apigee]))\ncompute = gcp.projects.Service(\"compute\",\n project=project.project_id,\n service=\"compute.googleapis.com\",\n opts = pulumi.ResourceOptions(depends_on=[servicenetworking]))\napigee_network = gcp.compute.Network(\"apigee_network\",\n name=\"apigee-network\",\n project=project.project_id,\n opts = pulumi.ResourceOptions(depends_on=[compute]))\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id,\n project=project.project_id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name],\n opts = pulumi.ResourceOptions(depends_on=[servicenetworking]))\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=project.project_id,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[\n apigee_vpc_connection,\n apigee,\n ]))\napigee_environment_keystore_ss_alias = gcp.apigee.Environment(\"apigee_environment_keystore_ss_alias\",\n org_id=apigee_org.id,\n name=\"env-name\",\n description=\"Apigee Environment\",\n display_name=\"environment-1\")\napigee_environment_keystore_alias = gcp.apigee.EnvKeystore(\"apigee_environment_keystore_alias\",\n name=\"env-keystore\",\n env_id=apigee_environment_keystore_ss_alias.id)\napigee_environment_keystore_ss_alias_keystores_aliases_self_signed_cert = gcp.apigee.KeystoresAliasesSelfSignedCert(\"apigee_environment_keystore_ss_alias\",\n environment=apigee_environment_keystore_ss_alias.name,\n org_id=apigee_org.name,\n keystore=apigee_environment_keystore_alias.name,\n alias=\"alias\",\n key_size=\"1024\",\n sig_alg=\"SHA512withRSA\",\n cert_validity_in_days=4,\n subject={\n \"commonName\": \"selfsigned_example\",\n \"countryCode\": \"US\",\n \"locality\": \"TX\",\n \"org\": \"CCE\",\n \"orgUnit\": \"PSO\",\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 = new Gcp.Organizations.Project(\"project\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var apigee = new Gcp.Projects.Service(\"apigee\", new()\n {\n Project = project.ProjectId,\n ServiceName = \"apigee.googleapis.com\",\n });\n\n var servicenetworking = new Gcp.Projects.Service(\"servicenetworking\", new()\n {\n Project = project.ProjectId,\n ServiceName = \"servicenetworking.googleapis.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigee,\n },\n });\n\n var compute = new Gcp.Projects.Service(\"compute\", new()\n {\n Project = project.ProjectId,\n ServiceName = \"compute.googleapis.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n servicenetworking,\n },\n });\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n Project = project.ProjectId,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n compute,\n },\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n Project = project.ProjectId,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n servicenetworking,\n },\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = project.ProjectId,\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n apigee,\n },\n });\n\n var apigeeEnvironmentKeystoreSsAlias = new Gcp.Apigee.Environment(\"apigee_environment_keystore_ss_alias\", new()\n {\n OrgId = apigeeOrg.Id,\n Name = \"env-name\",\n Description = \"Apigee Environment\",\n DisplayName = \"environment-1\",\n });\n\n var apigeeEnvironmentKeystoreAlias = new Gcp.Apigee.EnvKeystore(\"apigee_environment_keystore_alias\", new()\n {\n Name = \"env-keystore\",\n EnvId = apigeeEnvironmentKeystoreSsAlias.Id,\n });\n\n var apigeeEnvironmentKeystoreSsAliasKeystoresAliasesSelfSignedCert = new Gcp.Apigee.KeystoresAliasesSelfSignedCert(\"apigee_environment_keystore_ss_alias\", new()\n {\n Environment = apigeeEnvironmentKeystoreSsAlias.Name,\n OrgId = apigeeOrg.Name,\n Keystore = apigeeEnvironmentKeystoreAlias.Name,\n Alias = \"alias\",\n KeySize = \"1024\",\n SigAlg = \"SHA512withRSA\",\n CertValidityInDays = 4,\n Subject = new Gcp.Apigee.Inputs.KeystoresAliasesSelfSignedCertSubjectArgs\n {\n CommonName = \"selfsigned_example\",\n CountryCode = \"US\",\n Locality = \"TX\",\n Org = \"CCE\",\n OrgUnit = \"PSO\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.NewProject(ctx, \"project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-project\"),\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\tapigee, err := projects.NewService(ctx, \"apigee\", \u0026projects.ServiceArgs{\n\t\t\tProject: project.ProjectId,\n\t\t\tService: pulumi.String(\"apigee.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tservicenetworking, err := projects.NewService(ctx, \"servicenetworking\", \u0026projects.ServiceArgs{\n\t\t\tProject: project.ProjectId,\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigee,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcompute, err := projects.NewService(ctx, \"compute\", \u0026projects.ServiceArgs{\n\t\t\tProject: project.ProjectId,\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tservicenetworking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t\tProject: project.ProjectId,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcompute,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tProject: project.ProjectId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tservicenetworking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: project.ProjectId,\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t\tapigee,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeEnvironmentKeystoreSsAlias, err := apigee.NewEnvironment(ctx, \"apigee_environment_keystore_ss_alias\", \u0026apigee.EnvironmentArgs{\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t\tName: pulumi.String(\"env-name\"),\n\t\t\tDescription: pulumi.String(\"Apigee Environment\"),\n\t\t\tDisplayName: pulumi.String(\"environment-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeEnvironmentKeystoreAlias, err := apigee.NewEnvKeystore(ctx, \"apigee_environment_keystore_alias\", \u0026apigee.EnvKeystoreArgs{\n\t\t\tName: pulumi.String(\"env-keystore\"),\n\t\t\tEnvId: apigeeEnvironmentKeystoreSsAlias.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewKeystoresAliasesSelfSignedCert(ctx, \"apigee_environment_keystore_ss_alias\", \u0026apigee.KeystoresAliasesSelfSignedCertArgs{\n\t\t\tEnvironment: apigeeEnvironmentKeystoreSsAlias.Name,\n\t\t\tOrgId: apigeeOrg.Name,\n\t\t\tKeystore: apigeeEnvironmentKeystoreAlias.Name,\n\t\t\tAlias: pulumi.String(\"alias\"),\n\t\t\tKeySize: pulumi.String(\"1024\"),\n\t\t\tSigAlg: pulumi.String(\"SHA512withRSA\"),\n\t\t\tCertValidityInDays: pulumi.Int(4),\n\t\t\tSubject: \u0026apigee.KeystoresAliasesSelfSignedCertSubjectArgs{\n\t\t\t\tCommonName: pulumi.String(\"selfsigned_example\"),\n\t\t\t\tCountryCode: pulumi.String(\"US\"),\n\t\t\t\tLocality: pulumi.String(\"TX\"),\n\t\t\t\tOrg: pulumi.String(\"CCE\"),\n\t\t\t\tOrgUnit: pulumi.String(\"PSO\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\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.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.Environment;\nimport com.pulumi.gcp.apigee.EnvironmentArgs;\nimport com.pulumi.gcp.apigee.EnvKeystore;\nimport com.pulumi.gcp.apigee.EnvKeystoreArgs;\nimport com.pulumi.gcp.apigee.KeystoresAliasesSelfSignedCert;\nimport com.pulumi.gcp.apigee.KeystoresAliasesSelfSignedCertArgs;\nimport com.pulumi.gcp.apigee.inputs.KeystoresAliasesSelfSignedCertSubjectArgs;\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 project = new Project(\"project\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n var apigee = new Service(\"apigee\", ServiceArgs.builder()\n .project(project.projectId())\n .service(\"apigee.googleapis.com\")\n .build());\n\n var servicenetworking = new Service(\"servicenetworking\", ServiceArgs.builder()\n .project(project.projectId())\n .service(\"servicenetworking.googleapis.com\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigee)\n .build());\n\n var compute = new Service(\"compute\", ServiceArgs.builder()\n .project(project.projectId())\n .service(\"compute.googleapis.com\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(servicenetworking)\n .build());\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .project(project.projectId())\n .build(), CustomResourceOptions.builder()\n .dependsOn(compute)\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .project(project.projectId())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(servicenetworking)\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(project.projectId())\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n apigeeVpcConnection,\n apigee)\n .build());\n\n var apigeeEnvironmentKeystoreSsAlias = new Environment(\"apigeeEnvironmentKeystoreSsAlias\", EnvironmentArgs.builder()\n .orgId(apigeeOrg.id())\n .name(\"env-name\")\n .description(\"Apigee Environment\")\n .displayName(\"environment-1\")\n .build());\n\n var apigeeEnvironmentKeystoreAlias = new EnvKeystore(\"apigeeEnvironmentKeystoreAlias\", EnvKeystoreArgs.builder()\n .name(\"env-keystore\")\n .envId(apigeeEnvironmentKeystoreSsAlias.id())\n .build());\n\n var apigeeEnvironmentKeystoreSsAliasKeystoresAliasesSelfSignedCert = new KeystoresAliasesSelfSignedCert(\"apigeeEnvironmentKeystoreSsAliasKeystoresAliasesSelfSignedCert\", KeystoresAliasesSelfSignedCertArgs.builder()\n .environment(apigeeEnvironmentKeystoreSsAlias.name())\n .orgId(apigeeOrg.name())\n .keystore(apigeeEnvironmentKeystoreAlias.name())\n .alias(\"alias\")\n .keySize(1024)\n .sigAlg(\"SHA512withRSA\")\n .certValidityInDays(4)\n .subject(KeystoresAliasesSelfSignedCertSubjectArgs.builder()\n .commonName(\"selfsigned_example\")\n .countryCode(\"US\")\n .locality(\"TX\")\n .org(\"CCE\")\n .orgUnit(\"PSO\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:organizations:Project\n properties:\n projectId: my-project\n name: my-project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n apigee:\n type: gcp:projects:Service\n properties:\n project: ${project.projectId}\n service: apigee.googleapis.com\n servicenetworking:\n type: gcp:projects:Service\n properties:\n project: ${project.projectId}\n service: servicenetworking.googleapis.com\n options:\n dependson:\n - ${apigee}\n compute:\n type: gcp:projects:Service\n properties:\n project: ${project.projectId}\n service: compute.googleapis.com\n options:\n dependson:\n - ${servicenetworking}\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n project: ${project.projectId}\n options:\n dependson:\n - ${compute}\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n project: ${project.projectId}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n options:\n dependson:\n - ${servicenetworking}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${project.projectId}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n - ${apigee}\n apigeeEnvironmentKeystoreSsAlias:\n type: gcp:apigee:Environment\n name: apigee_environment_keystore_ss_alias\n properties:\n orgId: ${apigeeOrg.id}\n name: env-name\n description: Apigee Environment\n displayName: environment-1\n apigeeEnvironmentKeystoreAlias:\n type: gcp:apigee:EnvKeystore\n name: apigee_environment_keystore_alias\n properties:\n name: env-keystore\n envId: ${apigeeEnvironmentKeystoreSsAlias.id}\n apigeeEnvironmentKeystoreSsAliasKeystoresAliasesSelfSignedCert:\n type: gcp:apigee:KeystoresAliasesSelfSignedCert\n name: apigee_environment_keystore_ss_alias\n properties:\n environment: ${apigeeEnvironmentKeystoreSsAlias.name}\n orgId: ${apigeeOrg.name}\n keystore: ${apigeeEnvironmentKeystoreAlias.name}\n alias: alias\n keySize: 1024\n sigAlg: SHA512withRSA\n certValidityInDays: 4\n subject:\n commonName: selfsigned_example\n countryCode: US\n locality: TX\n org: CCE\n orgUnit: PSO\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nKeystoresAliasesSelfSignedCert can be imported using any of these accepted formats:\n\n* `organizations/{{org_id}}/environments/{{environment}}/keystores/{{keystore}}/aliases/{{alias}}`\n\n* `{{org_id}}/{{environment}}/{{keystore}}/{{alias}}`\n\nWhen using the `pulumi import` command, KeystoresAliasesSelfSignedCert can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/keystoresAliasesSelfSignedCert:KeystoresAliasesSelfSignedCert default organizations/{{org_id}}/environments/{{environment}}/keystores/{{keystore}}/aliases/{{alias}}\n```\n\n```sh\n$ pulumi import gcp:apigee/keystoresAliasesSelfSignedCert:KeystoresAliasesSelfSignedCert default {{org_id}}/{{environment}}/{{keystore}}/{{alias}}\n```\n\n", + "description": "An Environment Keystore Alias for Self Signed Certificate Format in Apigee\n\n\nTo get more information about KeystoresAliasesSelfSignedCert, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.environments.keystores.aliases/create)\n* How-to Guides\n * [Creating an environment](https://cloud.google.com/apigee/docs/api-platform/get-started/create-environment)\n\n## Example Usage\n\n### Apigee Env Keystore Alias Self Signed Cert\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.organizations.Project(\"project\", {\n projectId: \"my-project\",\n name: \"my-project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst apigee = new gcp.projects.Service(\"apigee\", {\n project: project.projectId,\n service: \"apigee.googleapis.com\",\n});\nconst servicenetworking = new gcp.projects.Service(\"servicenetworking\", {\n project: project.projectId,\n service: \"servicenetworking.googleapis.com\",\n}, {\n dependsOn: [apigee],\n});\nconst compute = new gcp.projects.Service(\"compute\", {\n project: project.projectId,\n service: \"compute.googleapis.com\",\n}, {\n dependsOn: [servicenetworking],\n});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {\n name: \"apigee-network\",\n project: project.projectId,\n}, {\n dependsOn: [compute],\n});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n project: project.projectId,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n}, {\n dependsOn: [servicenetworking],\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: project.projectId,\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [\n apigeeVpcConnection,\n apigee,\n ],\n});\nconst apigeeEnvironmentKeystoreSsAlias = new gcp.apigee.Environment(\"apigee_environment_keystore_ss_alias\", {\n orgId: apigeeOrg.id,\n name: \"env-name\",\n description: \"Apigee Environment\",\n displayName: \"environment-1\",\n});\nconst apigeeEnvironmentKeystoreAlias = new gcp.apigee.EnvKeystore(\"apigee_environment_keystore_alias\", {\n name: \"env-keystore\",\n envId: apigeeEnvironmentKeystoreSsAlias.id,\n});\nconst apigeeEnvironmentKeystoreSsAliasKeystoresAliasesSelfSignedCert = new gcp.apigee.KeystoresAliasesSelfSignedCert(\"apigee_environment_keystore_ss_alias\", {\n environment: apigeeEnvironmentKeystoreSsAlias.name,\n orgId: apigeeOrg.name,\n keystore: apigeeEnvironmentKeystoreAlias.name,\n alias: \"alias\",\n keySize: \"1024\",\n sigAlg: \"SHA512withRSA\",\n certValidityInDays: 4,\n subject: {\n commonName: \"selfsigned_example\",\n countryCode: \"US\",\n locality: \"TX\",\n org: \"CCE\",\n orgUnit: \"PSO\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.Project(\"project\",\n project_id=\"my-project\",\n name=\"my-project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\napigee = gcp.projects.Service(\"apigee\",\n project=project.project_id,\n service=\"apigee.googleapis.com\")\nservicenetworking = gcp.projects.Service(\"servicenetworking\",\n project=project.project_id,\n service=\"servicenetworking.googleapis.com\",\n opts = pulumi.ResourceOptions(depends_on=[apigee]))\ncompute = gcp.projects.Service(\"compute\",\n project=project.project_id,\n service=\"compute.googleapis.com\",\n opts = pulumi.ResourceOptions(depends_on=[servicenetworking]))\napigee_network = gcp.compute.Network(\"apigee_network\",\n name=\"apigee-network\",\n project=project.project_id,\n opts = pulumi.ResourceOptions(depends_on=[compute]))\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id,\n project=project.project_id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name],\n opts = pulumi.ResourceOptions(depends_on=[servicenetworking]))\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=project.project_id,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[\n apigee_vpc_connection,\n apigee,\n ]))\napigee_environment_keystore_ss_alias = gcp.apigee.Environment(\"apigee_environment_keystore_ss_alias\",\n org_id=apigee_org.id,\n name=\"env-name\",\n description=\"Apigee Environment\",\n display_name=\"environment-1\")\napigee_environment_keystore_alias = gcp.apigee.EnvKeystore(\"apigee_environment_keystore_alias\",\n name=\"env-keystore\",\n env_id=apigee_environment_keystore_ss_alias.id)\napigee_environment_keystore_ss_alias_keystores_aliases_self_signed_cert = gcp.apigee.KeystoresAliasesSelfSignedCert(\"apigee_environment_keystore_ss_alias\",\n environment=apigee_environment_keystore_ss_alias.name,\n org_id=apigee_org.name,\n keystore=apigee_environment_keystore_alias.name,\n alias=\"alias\",\n key_size=\"1024\",\n sig_alg=\"SHA512withRSA\",\n cert_validity_in_days=4,\n subject={\n \"common_name\": \"selfsigned_example\",\n \"country_code\": \"US\",\n \"locality\": \"TX\",\n \"org\": \"CCE\",\n \"org_unit\": \"PSO\",\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 = new Gcp.Organizations.Project(\"project\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var apigee = new Gcp.Projects.Service(\"apigee\", new()\n {\n Project = project.ProjectId,\n ServiceName = \"apigee.googleapis.com\",\n });\n\n var servicenetworking = new Gcp.Projects.Service(\"servicenetworking\", new()\n {\n Project = project.ProjectId,\n ServiceName = \"servicenetworking.googleapis.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigee,\n },\n });\n\n var compute = new Gcp.Projects.Service(\"compute\", new()\n {\n Project = project.ProjectId,\n ServiceName = \"compute.googleapis.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n servicenetworking,\n },\n });\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n Project = project.ProjectId,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n compute,\n },\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n Project = project.ProjectId,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n servicenetworking,\n },\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = project.ProjectId,\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n apigee,\n },\n });\n\n var apigeeEnvironmentKeystoreSsAlias = new Gcp.Apigee.Environment(\"apigee_environment_keystore_ss_alias\", new()\n {\n OrgId = apigeeOrg.Id,\n Name = \"env-name\",\n Description = \"Apigee Environment\",\n DisplayName = \"environment-1\",\n });\n\n var apigeeEnvironmentKeystoreAlias = new Gcp.Apigee.EnvKeystore(\"apigee_environment_keystore_alias\", new()\n {\n Name = \"env-keystore\",\n EnvId = apigeeEnvironmentKeystoreSsAlias.Id,\n });\n\n var apigeeEnvironmentKeystoreSsAliasKeystoresAliasesSelfSignedCert = new Gcp.Apigee.KeystoresAliasesSelfSignedCert(\"apigee_environment_keystore_ss_alias\", new()\n {\n Environment = apigeeEnvironmentKeystoreSsAlias.Name,\n OrgId = apigeeOrg.Name,\n Keystore = apigeeEnvironmentKeystoreAlias.Name,\n Alias = \"alias\",\n KeySize = \"1024\",\n SigAlg = \"SHA512withRSA\",\n CertValidityInDays = 4,\n Subject = new Gcp.Apigee.Inputs.KeystoresAliasesSelfSignedCertSubjectArgs\n {\n CommonName = \"selfsigned_example\",\n CountryCode = \"US\",\n Locality = \"TX\",\n Org = \"CCE\",\n OrgUnit = \"PSO\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.NewProject(ctx, \"project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-project\"),\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\tapigee, err := projects.NewService(ctx, \"apigee\", \u0026projects.ServiceArgs{\n\t\t\tProject: project.ProjectId,\n\t\t\tService: pulumi.String(\"apigee.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tservicenetworking, err := projects.NewService(ctx, \"servicenetworking\", \u0026projects.ServiceArgs{\n\t\t\tProject: project.ProjectId,\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigee,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcompute, err := projects.NewService(ctx, \"compute\", \u0026projects.ServiceArgs{\n\t\t\tProject: project.ProjectId,\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tservicenetworking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t\tProject: project.ProjectId,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcompute,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tProject: project.ProjectId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tservicenetworking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: project.ProjectId,\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t\tapigee,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeEnvironmentKeystoreSsAlias, err := apigee.NewEnvironment(ctx, \"apigee_environment_keystore_ss_alias\", \u0026apigee.EnvironmentArgs{\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t\tName: pulumi.String(\"env-name\"),\n\t\t\tDescription: pulumi.String(\"Apigee Environment\"),\n\t\t\tDisplayName: pulumi.String(\"environment-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeEnvironmentKeystoreAlias, err := apigee.NewEnvKeystore(ctx, \"apigee_environment_keystore_alias\", \u0026apigee.EnvKeystoreArgs{\n\t\t\tName: pulumi.String(\"env-keystore\"),\n\t\t\tEnvId: apigeeEnvironmentKeystoreSsAlias.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewKeystoresAliasesSelfSignedCert(ctx, \"apigee_environment_keystore_ss_alias\", \u0026apigee.KeystoresAliasesSelfSignedCertArgs{\n\t\t\tEnvironment: apigeeEnvironmentKeystoreSsAlias.Name,\n\t\t\tOrgId: apigeeOrg.Name,\n\t\t\tKeystore: apigeeEnvironmentKeystoreAlias.Name,\n\t\t\tAlias: pulumi.String(\"alias\"),\n\t\t\tKeySize: pulumi.String(\"1024\"),\n\t\t\tSigAlg: pulumi.String(\"SHA512withRSA\"),\n\t\t\tCertValidityInDays: pulumi.Int(4),\n\t\t\tSubject: \u0026apigee.KeystoresAliasesSelfSignedCertSubjectArgs{\n\t\t\t\tCommonName: pulumi.String(\"selfsigned_example\"),\n\t\t\t\tCountryCode: pulumi.String(\"US\"),\n\t\t\t\tLocality: pulumi.String(\"TX\"),\n\t\t\t\tOrg: pulumi.String(\"CCE\"),\n\t\t\t\tOrgUnit: pulumi.String(\"PSO\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\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.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.Environment;\nimport com.pulumi.gcp.apigee.EnvironmentArgs;\nimport com.pulumi.gcp.apigee.EnvKeystore;\nimport com.pulumi.gcp.apigee.EnvKeystoreArgs;\nimport com.pulumi.gcp.apigee.KeystoresAliasesSelfSignedCert;\nimport com.pulumi.gcp.apigee.KeystoresAliasesSelfSignedCertArgs;\nimport com.pulumi.gcp.apigee.inputs.KeystoresAliasesSelfSignedCertSubjectArgs;\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 project = new Project(\"project\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n var apigee = new Service(\"apigee\", ServiceArgs.builder()\n .project(project.projectId())\n .service(\"apigee.googleapis.com\")\n .build());\n\n var servicenetworking = new Service(\"servicenetworking\", ServiceArgs.builder()\n .project(project.projectId())\n .service(\"servicenetworking.googleapis.com\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigee)\n .build());\n\n var compute = new Service(\"compute\", ServiceArgs.builder()\n .project(project.projectId())\n .service(\"compute.googleapis.com\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(servicenetworking)\n .build());\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .project(project.projectId())\n .build(), CustomResourceOptions.builder()\n .dependsOn(compute)\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .project(project.projectId())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(servicenetworking)\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(project.projectId())\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n apigeeVpcConnection,\n apigee)\n .build());\n\n var apigeeEnvironmentKeystoreSsAlias = new Environment(\"apigeeEnvironmentKeystoreSsAlias\", EnvironmentArgs.builder()\n .orgId(apigeeOrg.id())\n .name(\"env-name\")\n .description(\"Apigee Environment\")\n .displayName(\"environment-1\")\n .build());\n\n var apigeeEnvironmentKeystoreAlias = new EnvKeystore(\"apigeeEnvironmentKeystoreAlias\", EnvKeystoreArgs.builder()\n .name(\"env-keystore\")\n .envId(apigeeEnvironmentKeystoreSsAlias.id())\n .build());\n\n var apigeeEnvironmentKeystoreSsAliasKeystoresAliasesSelfSignedCert = new KeystoresAliasesSelfSignedCert(\"apigeeEnvironmentKeystoreSsAliasKeystoresAliasesSelfSignedCert\", KeystoresAliasesSelfSignedCertArgs.builder()\n .environment(apigeeEnvironmentKeystoreSsAlias.name())\n .orgId(apigeeOrg.name())\n .keystore(apigeeEnvironmentKeystoreAlias.name())\n .alias(\"alias\")\n .keySize(1024)\n .sigAlg(\"SHA512withRSA\")\n .certValidityInDays(4)\n .subject(KeystoresAliasesSelfSignedCertSubjectArgs.builder()\n .commonName(\"selfsigned_example\")\n .countryCode(\"US\")\n .locality(\"TX\")\n .org(\"CCE\")\n .orgUnit(\"PSO\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:organizations:Project\n properties:\n projectId: my-project\n name: my-project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n apigee:\n type: gcp:projects:Service\n properties:\n project: ${project.projectId}\n service: apigee.googleapis.com\n servicenetworking:\n type: gcp:projects:Service\n properties:\n project: ${project.projectId}\n service: servicenetworking.googleapis.com\n options:\n dependson:\n - ${apigee}\n compute:\n type: gcp:projects:Service\n properties:\n project: ${project.projectId}\n service: compute.googleapis.com\n options:\n dependson:\n - ${servicenetworking}\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n project: ${project.projectId}\n options:\n dependson:\n - ${compute}\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n project: ${project.projectId}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n options:\n dependson:\n - ${servicenetworking}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${project.projectId}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n - ${apigee}\n apigeeEnvironmentKeystoreSsAlias:\n type: gcp:apigee:Environment\n name: apigee_environment_keystore_ss_alias\n properties:\n orgId: ${apigeeOrg.id}\n name: env-name\n description: Apigee Environment\n displayName: environment-1\n apigeeEnvironmentKeystoreAlias:\n type: gcp:apigee:EnvKeystore\n name: apigee_environment_keystore_alias\n properties:\n name: env-keystore\n envId: ${apigeeEnvironmentKeystoreSsAlias.id}\n apigeeEnvironmentKeystoreSsAliasKeystoresAliasesSelfSignedCert:\n type: gcp:apigee:KeystoresAliasesSelfSignedCert\n name: apigee_environment_keystore_ss_alias\n properties:\n environment: ${apigeeEnvironmentKeystoreSsAlias.name}\n orgId: ${apigeeOrg.name}\n keystore: ${apigeeEnvironmentKeystoreAlias.name}\n alias: alias\n keySize: 1024\n sigAlg: SHA512withRSA\n certValidityInDays: 4\n subject:\n commonName: selfsigned_example\n countryCode: US\n locality: TX\n org: CCE\n orgUnit: PSO\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nKeystoresAliasesSelfSignedCert can be imported using any of these accepted formats:\n\n* `organizations/{{org_id}}/environments/{{environment}}/keystores/{{keystore}}/aliases/{{alias}}`\n\n* `{{org_id}}/{{environment}}/{{keystore}}/{{alias}}`\n\nWhen using the `pulumi import` command, KeystoresAliasesSelfSignedCert can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/keystoresAliasesSelfSignedCert:KeystoresAliasesSelfSignedCert default organizations/{{org_id}}/environments/{{environment}}/keystores/{{keystore}}/aliases/{{alias}}\n```\n\n```sh\n$ pulumi import gcp:apigee/keystoresAliasesSelfSignedCert:KeystoresAliasesSelfSignedCert default {{org_id}}/{{environment}}/{{keystore}}/{{alias}}\n```\n\n", "properties": { "alias": { "type": "string", @@ -117852,7 +117852,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## Example Usage\n\n### App Engine Application Url Dispatch Rules Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"appengine-test-bucket\",\n location: \"US\",\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"hello-world.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst adminV3 = new gcp.appengine.StandardAppVersion(\"admin_v3\", {\n versionId: \"v3\",\n service: \"admin\",\n runtime: \"nodejs20\",\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(\"web_service\", {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\",\n name=\"appengine-test-bucket\",\n location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n name=\"hello-world.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nadmin_v3 = gcp.appengine.StandardAppVersion(\"admin_v3\",\n version_id=\"v3\",\n service=\"admin\",\n runtime=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\n \"sourceUrl\": 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(\"web_service\", dispatch_rules=[\n {\n \"domain\": \"*\",\n \"path\": \"/*\",\n \"service\": \"default\",\n },\n {\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 Name = \"appengine-test-bucket\",\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"hello-world.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var adminV3 = new Gcp.AppEngine.StandardAppVersion(\"admin_v3\", new()\n {\n VersionId = \"v3\",\n Service = \"admin\",\n Runtime = \"nodejs20\",\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(\"web_service\", 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/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"appengine-test-bucket\"),\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\tName: pulumi.String(\"hello-world.zip\"),\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, \"admin_v3\", \u0026appengine.StandardAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v3\"),\n\t\t\tService: pulumi.String(\"admin\"),\n\t\t\tRuntime: pulumi.String(\"nodejs20\"),\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, \"web_service\", \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 .name(\"appengine-test-bucket\")\n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"hello-world.zip\")\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(\"nodejs20\")\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 name: web_service\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 name: admin_v3\n properties:\n versionId: v3\n service: admin\n runtime: nodejs20\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 name: appengine-test-bucket\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n name: hello-world.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nApplicationUrlDispatchRules can be imported using any of these accepted formats:\n\n* `{{project}}`\n\nWhen using the `pulumi import` command, ApplicationUrlDispatchRules can be imported using one of the formats above. For example:\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## Example Usage\n\n### App Engine Application Url Dispatch Rules Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"appengine-test-bucket\",\n location: \"US\",\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"hello-world.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst adminV3 = new gcp.appengine.StandardAppVersion(\"admin_v3\", {\n versionId: \"v3\",\n service: \"admin\",\n runtime: \"nodejs20\",\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(\"web_service\", {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\",\n name=\"appengine-test-bucket\",\n location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n name=\"hello-world.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nadmin_v3 = gcp.appengine.StandardAppVersion(\"admin_v3\",\n version_id=\"v3\",\n service=\"admin\",\n runtime=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\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(\"web_service\", dispatch_rules=[\n {\n \"domain\": \"*\",\n \"path\": \"/*\",\n \"service\": \"default\",\n },\n {\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 Name = \"appengine-test-bucket\",\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"hello-world.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var adminV3 = new Gcp.AppEngine.StandardAppVersion(\"admin_v3\", new()\n {\n VersionId = \"v3\",\n Service = \"admin\",\n Runtime = \"nodejs20\",\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(\"web_service\", 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/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"appengine-test-bucket\"),\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\tName: pulumi.String(\"hello-world.zip\"),\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, \"admin_v3\", \u0026appengine.StandardAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v3\"),\n\t\t\tService: pulumi.String(\"admin\"),\n\t\t\tRuntime: pulumi.String(\"nodejs20\"),\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, \"web_service\", \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 .name(\"appengine-test-bucket\")\n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"hello-world.zip\")\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(\"nodejs20\")\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 name: web_service\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 name: admin_v3\n properties:\n versionId: v3\n service: admin\n runtime: nodejs20\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 name: appengine-test-bucket\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n name: hello-world.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nApplicationUrlDispatchRules can be imported using any of these accepted formats:\n\n* `{{project}}`\n\nWhen using the `pulumi import` command, ApplicationUrlDispatchRules can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:appengine/applicationUrlDispatchRules:ApplicationUrlDispatchRules default {{project}}\n```\n\n", "properties": { "dispatchRules": { "type": "array", @@ -117904,7 +117904,7 @@ } }, "gcp:appengine/domainMapping:DomainMapping": { - "description": "A domain serving an App Engine application.\n\n\nTo get more information about DomainMapping, see:\n\n* [API documentation](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.domainMappings)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/appengine/docs/standard/python/mapping-custom-domains)\n\n## Example Usage\n\n### App Engine Domain Mapping Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst domainMapping = new gcp.appengine.DomainMapping(\"domain_mapping\", {\n domainName: \"verified-domain.com\",\n sslSettings: {\n sslManagementType: \"AUTOMATIC\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndomain_mapping = gcp.appengine.DomainMapping(\"domain_mapping\",\n domain_name=\"verified-domain.com\",\n ssl_settings={\n \"sslManagementType\": \"AUTOMATIC\",\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 domainMapping = new Gcp.AppEngine.DomainMapping(\"domain_mapping\", new()\n {\n DomainName = \"verified-domain.com\",\n SslSettings = new Gcp.AppEngine.Inputs.DomainMappingSslSettingsArgs\n {\n SslManagementType = \"AUTOMATIC\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/appengine\"\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 := appengine.NewDomainMapping(ctx, \"domain_mapping\", \u0026appengine.DomainMappingArgs{\n\t\t\tDomainName: pulumi.String(\"verified-domain.com\"),\n\t\t\tSslSettings: \u0026appengine.DomainMappingSslSettingsArgs{\n\t\t\t\tSslManagementType: pulumi.String(\"AUTOMATIC\"),\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.appengine.DomainMapping;\nimport com.pulumi.gcp.appengine.DomainMappingArgs;\nimport com.pulumi.gcp.appengine.inputs.DomainMappingSslSettingsArgs;\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 domainMapping = new DomainMapping(\"domainMapping\", DomainMappingArgs.builder()\n .domainName(\"verified-domain.com\")\n .sslSettings(DomainMappingSslSettingsArgs.builder()\n .sslManagementType(\"AUTOMATIC\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n domainMapping:\n type: gcp:appengine:DomainMapping\n name: domain_mapping\n properties:\n domainName: verified-domain.com\n sslSettings:\n sslManagementType: AUTOMATIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDomainMapping can be imported using any of these accepted formats:\n\n* `apps/{{project}}/domainMappings/{{domain_name}}`\n\n* `{{project}}/{{domain_name}}`\n\n* `{{domain_name}}`\n\nWhen using the `pulumi import` command, DomainMapping can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:appengine/domainMapping:DomainMapping default apps/{{project}}/domainMappings/{{domain_name}}\n```\n\n```sh\n$ pulumi import gcp:appengine/domainMapping:DomainMapping default {{project}}/{{domain_name}}\n```\n\n```sh\n$ pulumi import gcp:appengine/domainMapping:DomainMapping default {{domain_name}}\n```\n\n", + "description": "A domain serving an App Engine application.\n\n\nTo get more information about DomainMapping, see:\n\n* [API documentation](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.domainMappings)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/appengine/docs/standard/python/mapping-custom-domains)\n\n## Example Usage\n\n### App Engine Domain Mapping Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst domainMapping = new gcp.appengine.DomainMapping(\"domain_mapping\", {\n domainName: \"verified-domain.com\",\n sslSettings: {\n sslManagementType: \"AUTOMATIC\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndomain_mapping = gcp.appengine.DomainMapping(\"domain_mapping\",\n domain_name=\"verified-domain.com\",\n ssl_settings={\n \"ssl_management_type\": \"AUTOMATIC\",\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 domainMapping = new Gcp.AppEngine.DomainMapping(\"domain_mapping\", new()\n {\n DomainName = \"verified-domain.com\",\n SslSettings = new Gcp.AppEngine.Inputs.DomainMappingSslSettingsArgs\n {\n SslManagementType = \"AUTOMATIC\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/appengine\"\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 := appengine.NewDomainMapping(ctx, \"domain_mapping\", \u0026appengine.DomainMappingArgs{\n\t\t\tDomainName: pulumi.String(\"verified-domain.com\"),\n\t\t\tSslSettings: \u0026appengine.DomainMappingSslSettingsArgs{\n\t\t\t\tSslManagementType: pulumi.String(\"AUTOMATIC\"),\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.appengine.DomainMapping;\nimport com.pulumi.gcp.appengine.DomainMappingArgs;\nimport com.pulumi.gcp.appengine.inputs.DomainMappingSslSettingsArgs;\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 domainMapping = new DomainMapping(\"domainMapping\", DomainMappingArgs.builder()\n .domainName(\"verified-domain.com\")\n .sslSettings(DomainMappingSslSettingsArgs.builder()\n .sslManagementType(\"AUTOMATIC\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n domainMapping:\n type: gcp:appengine:DomainMapping\n name: domain_mapping\n properties:\n domainName: verified-domain.com\n sslSettings:\n sslManagementType: AUTOMATIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDomainMapping can be imported using any of these accepted formats:\n\n* `apps/{{project}}/domainMappings/{{domain_name}}`\n\n* `{{project}}/{{domain_name}}`\n\n* `{{domain_name}}`\n\nWhen using the `pulumi import` command, DomainMapping can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:appengine/domainMapping:DomainMapping default apps/{{project}}/domainMappings/{{domain_name}}\n```\n\n```sh\n$ pulumi import gcp:appengine/domainMapping:DomainMapping default {{project}}/{{domain_name}}\n```\n\n```sh\n$ pulumi import gcp:appengine/domainMapping:DomainMapping default {{domain_name}}\n```\n\n", "properties": { "domainName": { "type": "string", @@ -118001,7 +118001,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## Example Usage\n\n### App Engine Service Split Traffic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"appengine-static-content\",\n location: \"US\",\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"hello-world.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst liveappV1 = new gcp.appengine.StandardAppVersion(\"liveapp_v1\", {\n versionId: \"v1\",\n service: \"liveapp\",\n deleteServiceOnDestroy: true,\n runtime: \"nodejs20\",\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(\"liveapp_v2\", {\n versionId: \"v2\",\n service: \"liveapp\",\n noopOnDestroy: true,\n runtime: \"nodejs20\",\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\",\n name=\"appengine-static-content\",\n location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n name=\"hello-world.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nliveapp_v1 = gcp.appengine.StandardAppVersion(\"liveapp_v1\",\n version_id=\"v1\",\n service=\"liveapp\",\n delete_service_on_destroy=True,\n runtime=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\n \"sourceUrl\": 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(\"liveapp_v2\",\n version_id=\"v2\",\n service=\"liveapp\",\n noop_on_destroy=True,\n runtime=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\n \"sourceUrl\": 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={\n \"shardBy\": \"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 Name = \"appengine-static-content\",\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"hello-world.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var liveappV1 = new Gcp.AppEngine.StandardAppVersion(\"liveapp_v1\", new()\n {\n VersionId = \"v1\",\n Service = \"liveapp\",\n DeleteServiceOnDestroy = true,\n Runtime = \"nodejs20\",\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(\"liveapp_v2\", new()\n {\n VersionId = \"v2\",\n Service = \"liveapp\",\n NoopOnDestroy = true,\n Runtime = \"nodejs20\",\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 name: appengine-static-content\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n name: hello-world.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n liveappV1:\n type: gcp:appengine:StandardAppVersion\n name: liveapp_v1\n properties:\n versionId: v1\n service: liveapp\n deleteServiceOnDestroy: true\n runtime: nodejs20\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 name: liveapp_v2\n properties:\n versionId: v2\n service: liveapp\n noopOnDestroy: true\n runtime: nodejs20\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\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServiceSplitTraffic can be imported using any of these accepted formats:\n\n* `apps/{{project}}/services/{{service}}`\n\n* `{{project}}/{{service}}`\n\n* `{{service}}`\n\nWhen using the `pulumi import` command, ServiceSplitTraffic can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default apps/{{project}}/services/{{service}}\n```\n\n```sh\n$ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default {{project}}/{{service}}\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## Example Usage\n\n### App Engine Service Split Traffic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"appengine-static-content\",\n location: \"US\",\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"hello-world.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst liveappV1 = new gcp.appengine.StandardAppVersion(\"liveapp_v1\", {\n versionId: \"v1\",\n service: \"liveapp\",\n deleteServiceOnDestroy: true,\n runtime: \"nodejs20\",\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(\"liveapp_v2\", {\n versionId: \"v2\",\n service: \"liveapp\",\n noopOnDestroy: true,\n runtime: \"nodejs20\",\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\",\n name=\"appengine-static-content\",\n location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n name=\"hello-world.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nliveapp_v1 = gcp.appengine.StandardAppVersion(\"liveapp_v1\",\n version_id=\"v1\",\n service=\"liveapp\",\n delete_service_on_destroy=True,\n runtime=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\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(\"liveapp_v2\",\n version_id=\"v2\",\n service=\"liveapp\",\n noop_on_destroy=True,\n runtime=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\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={\n \"shard_by\": \"IP\",\n \"allocations\": pulumi.Output.all(liveapp_v1.version_id, liveapp_v2.version_id).apply(lambda liveappV1Version_id, liveappV2Version_id: {\n \"\": 0.75,\n \"\": 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 Name = \"appengine-static-content\",\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"hello-world.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var liveappV1 = new Gcp.AppEngine.StandardAppVersion(\"liveapp_v1\", new()\n {\n VersionId = \"v1\",\n Service = \"liveapp\",\n DeleteServiceOnDestroy = true,\n Runtime = \"nodejs20\",\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(\"liveapp_v2\", new()\n {\n VersionId = \"v2\",\n Service = \"liveapp\",\n NoopOnDestroy = true,\n Runtime = \"nodejs20\",\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 name: appengine-static-content\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n name: hello-world.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n liveappV1:\n type: gcp:appengine:StandardAppVersion\n name: liveapp_v1\n properties:\n versionId: v1\n service: liveapp\n deleteServiceOnDestroy: true\n runtime: nodejs20\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 name: liveapp_v2\n properties:\n versionId: v2\n service: liveapp\n noopOnDestroy: true\n runtime: nodejs20\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\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServiceSplitTraffic can be imported using any of these accepted formats:\n\n* `apps/{{project}}/services/{{service}}`\n\n* `{{project}}/{{service}}`\n\n* `{{service}}`\n\nWhen using the `pulumi import` command, ServiceSplitTraffic can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default apps/{{project}}/services/{{service}}\n```\n\n```sh\n$ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default {{project}}/{{service}}\n```\n\n```sh\n$ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default {{service}}\n```\n\n", "properties": { "migrateTraffic": { "type": "boolean", @@ -118154,7 +118154,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## Example Usage\n\n### App Engine Flexible App Version\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myProject = new gcp.organizations.Project(\"my_project\", {\n name: \"appeng-flex\",\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(\"custom_service_account\", {\n project: service.project,\n accountId: \"my-account\",\n displayName: \"Custom Service Account\",\n});\nconst gaeApi = new gcp.projects.IAMMember(\"gae_api\", {\n project: service.project,\n role: \"roles/compute.networkUser\",\n member: pulumi.interpolate`serviceAccount:${customServiceAccount.email}`,\n});\nconst logsWriter = new gcp.projects.IAMMember(\"logs_writer\", {\n project: service.project,\n role: \"roles/logging.logWriter\",\n member: pulumi.interpolate`serviceAccount:${customServiceAccount.email}`,\n});\nconst storageViewer = new gcp.projects.IAMMember(\"storage_viewer\", {\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 name: \"appengine-static-content\",\n location: \"US\",\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"hello-world.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst myappV1 = new gcp.appengine.FlexibleAppVersion(\"myapp_v1\", {\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(\"my_project\",\n name=\"appeng-flex\",\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.serviceaccount.Account(\"custom_service_account\",\n project=service.project,\n account_id=\"my-account\",\n display_name=\"Custom Service Account\")\ngae_api = gcp.projects.IAMMember(\"gae_api\",\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(\"logs_writer\",\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(\"storage_viewer\",\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 name=\"appengine-static-content\",\n location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n name=\"hello-world.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nmyapp_v1 = gcp.appengine.FlexibleAppVersion(\"myapp_v1\",\n version_id=\"v1\",\n project=gae_api.project,\n service=\"default\",\n runtime=\"nodejs\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\n \"sourceUrl\": 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={\n \"path\": \"/\",\n },\n readiness_check={\n \"path\": \"/\",\n },\n env_variables={\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 automatic_scaling={\n \"coolDownPeriod\": \"120s\",\n \"cpuUtilization\": {\n \"targetUtilization\": 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(\"my_project\", new()\n {\n Name = \"appeng-flex\",\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(\"custom_service_account\", new()\n {\n Project = service.Project,\n AccountId = \"my-account\",\n DisplayName = \"Custom Service Account\",\n });\n\n var gaeApi = new Gcp.Projects.IAMMember(\"gae_api\", 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(\"logs_writer\", 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(\"storage_viewer\", 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 Name = \"appengine-static-content\",\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"hello-world.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var myappV1 = new Gcp.AppEngine.FlexibleAppVersion(\"myapp_v1\", 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/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"my_project\", \u0026organizations.ProjectArgs{\n\t\t\tName: pulumi.String(\"appeng-flex\"),\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, \"custom_service_account\", \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, \"gae_api\", \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, \"logs_writer\", \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, \"storage_viewer\", \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\tName: pulumi.String(\"appengine-static-content\"),\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\tName: pulumi.String(\"hello-world.zip\"),\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, \"myapp_v1\", \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 .name(\"appeng-flex\")\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 .name(\"appengine-static-content\")\n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"hello-world.zip\")\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 name: my_project\n properties:\n name: appeng-flex\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 name: custom_service_account\n properties:\n project: ${service.project}\n accountId: my-account\n displayName: Custom Service Account\n gaeApi:\n type: gcp:projects:IAMMember\n name: gae_api\n properties:\n project: ${service.project}\n role: roles/compute.networkUser\n member: serviceAccount:${customServiceAccount.email}\n logsWriter:\n type: gcp:projects:IAMMember\n name: logs_writer\n properties:\n project: ${service.project}\n role: roles/logging.logWriter\n member: serviceAccount:${customServiceAccount.email}\n storageViewer:\n type: gcp:projects:IAMMember\n name: storage_viewer\n properties:\n project: ${service.project}\n role: roles/storage.objectViewer\n member: serviceAccount:${customServiceAccount.email}\n myappV1:\n type: gcp:appengine:FlexibleAppVersion\n name: myapp_v1\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 name: appengine-static-content\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n name: hello-world.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFlexibleAppVersion can be imported using any of these accepted formats:\n\n* `apps/{{project}}/services/{{service}}/versions/{{version_id}}`\n\n* `{{project}}/{{service}}/{{version_id}}`\n\n* `{{service}}/{{version_id}}`\n\nWhen using the `pulumi import` command, FlexibleAppVersion can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:appengine/flexibleAppVersion:FlexibleAppVersion default apps/{{project}}/services/{{service}}/versions/{{version_id}}\n```\n\n```sh\n$ pulumi import gcp:appengine/flexibleAppVersion:FlexibleAppVersion default {{project}}/{{service}}/{{version_id}}\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## Example Usage\n\n### App Engine Flexible App Version\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myProject = new gcp.organizations.Project(\"my_project\", {\n name: \"appeng-flex\",\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(\"custom_service_account\", {\n project: service.project,\n accountId: \"my-account\",\n displayName: \"Custom Service Account\",\n});\nconst gaeApi = new gcp.projects.IAMMember(\"gae_api\", {\n project: service.project,\n role: \"roles/compute.networkUser\",\n member: pulumi.interpolate`serviceAccount:${customServiceAccount.email}`,\n});\nconst logsWriter = new gcp.projects.IAMMember(\"logs_writer\", {\n project: service.project,\n role: \"roles/logging.logWriter\",\n member: pulumi.interpolate`serviceAccount:${customServiceAccount.email}`,\n});\nconst storageViewer = new gcp.projects.IAMMember(\"storage_viewer\", {\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 name: \"appengine-static-content\",\n location: \"US\",\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"hello-world.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst myappV1 = new gcp.appengine.FlexibleAppVersion(\"myapp_v1\", {\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(\"my_project\",\n name=\"appeng-flex\",\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.serviceaccount.Account(\"custom_service_account\",\n project=service.project,\n account_id=\"my-account\",\n display_name=\"Custom Service Account\")\ngae_api = gcp.projects.IAMMember(\"gae_api\",\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(\"logs_writer\",\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(\"storage_viewer\",\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 name=\"appengine-static-content\",\n location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n name=\"hello-world.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nmyapp_v1 = gcp.appengine.FlexibleAppVersion(\"myapp_v1\",\n version_id=\"v1\",\n project=gae_api.project,\n service=\"default\",\n runtime=\"nodejs\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\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={\n \"path\": \"/\",\n },\n readiness_check={\n \"path\": \"/\",\n },\n env_variables={\n \"port\": \"8080\",\n },\n handlers=[{\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\": {\n \"path\": \"my-other-path\",\n \"upload_path_regex\": \".*\\\\/my-path\\\\/*\",\n },\n }],\n automatic_scaling={\n \"cool_down_period\": \"120s\",\n \"cpu_utilization\": {\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(\"my_project\", new()\n {\n Name = \"appeng-flex\",\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(\"custom_service_account\", new()\n {\n Project = service.Project,\n AccountId = \"my-account\",\n DisplayName = \"Custom Service Account\",\n });\n\n var gaeApi = new Gcp.Projects.IAMMember(\"gae_api\", 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(\"logs_writer\", 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(\"storage_viewer\", 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 Name = \"appengine-static-content\",\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"hello-world.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var myappV1 = new Gcp.AppEngine.FlexibleAppVersion(\"myapp_v1\", 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/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"my_project\", \u0026organizations.ProjectArgs{\n\t\t\tName: pulumi.String(\"appeng-flex\"),\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, \"custom_service_account\", \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, \"gae_api\", \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, \"logs_writer\", \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, \"storage_viewer\", \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\tName: pulumi.String(\"appengine-static-content\"),\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\tName: pulumi.String(\"hello-world.zip\"),\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, \"myapp_v1\", \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 .name(\"appeng-flex\")\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 .name(\"appengine-static-content\")\n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"hello-world.zip\")\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 name: my_project\n properties:\n name: appeng-flex\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 name: custom_service_account\n properties:\n project: ${service.project}\n accountId: my-account\n displayName: Custom Service Account\n gaeApi:\n type: gcp:projects:IAMMember\n name: gae_api\n properties:\n project: ${service.project}\n role: roles/compute.networkUser\n member: serviceAccount:${customServiceAccount.email}\n logsWriter:\n type: gcp:projects:IAMMember\n name: logs_writer\n properties:\n project: ${service.project}\n role: roles/logging.logWriter\n member: serviceAccount:${customServiceAccount.email}\n storageViewer:\n type: gcp:projects:IAMMember\n name: storage_viewer\n properties:\n project: ${service.project}\n role: roles/storage.objectViewer\n member: serviceAccount:${customServiceAccount.email}\n myappV1:\n type: gcp:appengine:FlexibleAppVersion\n name: myapp_v1\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 name: appengine-static-content\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n name: hello-world.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFlexibleAppVersion can be imported using any of these accepted formats:\n\n* `apps/{{project}}/services/{{service}}/versions/{{version_id}}`\n\n* `{{project}}/{{service}}/{{version_id}}`\n\n* `{{service}}/{{version_id}}`\n\nWhen using the `pulumi import` command, FlexibleAppVersion can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:appengine/flexibleAppVersion:FlexibleAppVersion default apps/{{project}}/services/{{service}}/versions/{{version_id}}\n```\n\n```sh\n$ pulumi import gcp:appengine/flexibleAppVersion:FlexibleAppVersion default {{project}}/{{service}}/{{version_id}}\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", @@ -118586,7 +118586,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## Example Usage\n\n### App Engine Service Network Settings\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"appengine-static-content\",\n location: \"US\",\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"hello-world.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst internalapp = new gcp.appengine.StandardAppVersion(\"internalapp\", {\n versionId: \"v1\",\n service: \"internalapp\",\n deleteServiceOnDestroy: true,\n runtime: \"nodejs20\",\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(\"internalapp\", {\n service: internalapp.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\",\n name=\"appengine-static-content\",\n location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n name=\"hello-world.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\ninternalapp = gcp.appengine.StandardAppVersion(\"internalapp\",\n version_id=\"v1\",\n service=\"internalapp\",\n delete_service_on_destroy=True,\n runtime=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\n \"sourceUrl\": 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(\"internalapp\",\n service=internalapp.service,\n network_settings={\n \"ingressTrafficAllowed\": \"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 Name = \"appengine-static-content\",\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"hello-world.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var internalapp = new Gcp.AppEngine.StandardAppVersion(\"internalapp\", new()\n {\n VersionId = \"v1\",\n Service = \"internalapp\",\n DeleteServiceOnDestroy = true,\n Runtime = \"nodejs20\",\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(\"internalapp\", new()\n {\n Service = internalapp.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/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"appengine-static-content\"),\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\tName: pulumi.String(\"hello-world.zip\"),\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\tinternalapp, err := appengine.NewStandardAppVersion(ctx, \"internalapp\", \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(\"nodejs20\"),\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, \"internalapp\", \u0026appengine.ServiceNetworkSettingsArgs{\n\t\t\tService: internalapp.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 .name(\"appengine-static-content\")\n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"hello-world.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"./test-fixtures/hello-world.zip\"))\n .build());\n\n var internalapp = new StandardAppVersion(\"internalapp\", StandardAppVersionArgs.builder()\n .versionId(\"v1\")\n .service(\"internalapp\")\n .deleteServiceOnDestroy(true)\n .runtime(\"nodejs20\")\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(internalapp.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 name: appengine-static-content\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n name: hello-world.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n internalapp:\n type: gcp:appengine:StandardAppVersion\n properties:\n versionId: v1\n service: internalapp\n deleteServiceOnDestroy: true\n runtime: nodejs20\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 name: internalapp\n properties:\n service: ${internalapp.service}\n networkSettings:\n ingressTrafficAllowed: INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServiceNetworkSettings can be imported using any of these accepted formats:\n\n* `apps/{{project}}/services/{{service}}`\n\n* `{{project}}/{{service}}`\n\n* `{{service}}`\n\nWhen using the `pulumi import` command, ServiceNetworkSettings can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:appengine/serviceNetworkSettings:ServiceNetworkSettings default apps/{{project}}/services/{{service}}\n```\n\n```sh\n$ pulumi import gcp:appengine/serviceNetworkSettings:ServiceNetworkSettings default {{project}}/{{service}}\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## Example Usage\n\n### App Engine Service Network Settings\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"appengine-static-content\",\n location: \"US\",\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"hello-world.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst internalapp = new gcp.appengine.StandardAppVersion(\"internalapp\", {\n versionId: \"v1\",\n service: \"internalapp\",\n deleteServiceOnDestroy: true,\n runtime: \"nodejs20\",\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(\"internalapp\", {\n service: internalapp.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\",\n name=\"appengine-static-content\",\n location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n name=\"hello-world.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\ninternalapp = gcp.appengine.StandardAppVersion(\"internalapp\",\n version_id=\"v1\",\n service=\"internalapp\",\n delete_service_on_destroy=True,\n runtime=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\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(\"internalapp\",\n service=internalapp.service,\n network_settings={\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 Name = \"appengine-static-content\",\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"hello-world.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var internalapp = new Gcp.AppEngine.StandardAppVersion(\"internalapp\", new()\n {\n VersionId = \"v1\",\n Service = \"internalapp\",\n DeleteServiceOnDestroy = true,\n Runtime = \"nodejs20\",\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(\"internalapp\", new()\n {\n Service = internalapp.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/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"appengine-static-content\"),\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\tName: pulumi.String(\"hello-world.zip\"),\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\tinternalapp, err := appengine.NewStandardAppVersion(ctx, \"internalapp\", \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(\"nodejs20\"),\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, \"internalapp\", \u0026appengine.ServiceNetworkSettingsArgs{\n\t\t\tService: internalapp.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 .name(\"appengine-static-content\")\n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"hello-world.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"./test-fixtures/hello-world.zip\"))\n .build());\n\n var internalapp = new StandardAppVersion(\"internalapp\", StandardAppVersionArgs.builder()\n .versionId(\"v1\")\n .service(\"internalapp\")\n .deleteServiceOnDestroy(true)\n .runtime(\"nodejs20\")\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(internalapp.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 name: appengine-static-content\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n name: hello-world.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n internalapp:\n type: gcp:appengine:StandardAppVersion\n properties:\n versionId: v1\n service: internalapp\n deleteServiceOnDestroy: true\n runtime: nodejs20\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 name: internalapp\n properties:\n service: ${internalapp.service}\n networkSettings:\n ingressTrafficAllowed: INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServiceNetworkSettings can be imported using any of these accepted formats:\n\n* `apps/{{project}}/services/{{service}}`\n\n* `{{project}}/{{service}}`\n\n* `{{service}}`\n\nWhen using the `pulumi import` command, ServiceNetworkSettings can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:appengine/serviceNetworkSettings:ServiceNetworkSettings default apps/{{project}}/services/{{service}}\n```\n\n```sh\n$ pulumi import gcp:appengine/serviceNetworkSettings:ServiceNetworkSettings default {{project}}/{{service}}\n```\n\n```sh\n$ pulumi import gcp:appengine/serviceNetworkSettings:ServiceNetworkSettings default {{service}}\n```\n\n", "properties": { "networkSettings": { "$ref": "#/types/gcp:appengine/ServiceNetworkSettingsNetworkSettings:ServiceNetworkSettingsNetworkSettings", @@ -118643,7 +118643,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## Example Usage\n\n### App Engine Standard App Version\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customServiceAccount = new gcp.serviceaccount.Account(\"custom_service_account\", {\n accountId: \"my-account\",\n displayName: \"Custom Service Account\",\n});\nconst gaeApi = new gcp.projects.IAMMember(\"gae_api\", {\n project: customServiceAccount.project,\n role: \"roles/compute.networkUser\",\n member: pulumi.interpolate`serviceAccount:${customServiceAccount.email}`,\n});\nconst storageViewer = new gcp.projects.IAMMember(\"storage_viewer\", {\n project: customServiceAccount.project,\n role: \"roles/storage.objectViewer\",\n member: pulumi.interpolate`serviceAccount:${customServiceAccount.email}`,\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"appengine-static-content\",\n location: \"US\",\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"hello-world.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst myappV1 = new gcp.appengine.StandardAppVersion(\"myapp_v1\", {\n versionId: \"v1\",\n service: \"myapp\",\n runtime: \"nodejs20\",\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(\"myapp_v2\", {\n versionId: \"v2\",\n service: \"myapp\",\n runtime: \"nodejs20\",\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.serviceaccount.Account(\"custom_service_account\",\n account_id=\"my-account\",\n display_name=\"Custom Service Account\")\ngae_api = gcp.projects.IAMMember(\"gae_api\",\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(\"storage_viewer\",\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\",\n name=\"appengine-static-content\",\n location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n name=\"hello-world.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nmyapp_v1 = gcp.appengine.StandardAppVersion(\"myapp_v1\",\n version_id=\"v1\",\n service=\"myapp\",\n runtime=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\n \"sourceUrl\": 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={\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 delete_service_on_destroy=True,\n service_account=custom_service_account.email)\nmyapp_v2 = gcp.appengine.StandardAppVersion(\"myapp_v2\",\n version_id=\"v2\",\n service=\"myapp\",\n runtime=\"nodejs20\",\n app_engine_apis=True,\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\n \"sourceUrl\": 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={\n \"maxInstances\": 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(\"custom_service_account\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Custom Service Account\",\n });\n\n var gaeApi = new Gcp.Projects.IAMMember(\"gae_api\", 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(\"storage_viewer\", 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 Name = \"appengine-static-content\",\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"hello-world.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var myappV1 = new Gcp.AppEngine.StandardAppVersion(\"myapp_v1\", new()\n {\n VersionId = \"v1\",\n Service = \"myapp\",\n Runtime = \"nodejs20\",\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(\"myapp_v2\", new()\n {\n VersionId = \"v2\",\n Service = \"myapp\",\n Runtime = \"nodejs20\",\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/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"custom_service_account\", \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, \"gae_api\", \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, \"storage_viewer\", \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\tName: pulumi.String(\"appengine-static-content\"),\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\tName: pulumi.String(\"hello-world.zip\"),\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, \"myapp_v1\", \u0026appengine.StandardAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v1\"),\n\t\t\tService: pulumi.String(\"myapp\"),\n\t\t\tRuntime: pulumi.String(\"nodejs20\"),\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, \"myapp_v2\", \u0026appengine.StandardAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v2\"),\n\t\t\tService: pulumi.String(\"myapp\"),\n\t\t\tRuntime: pulumi.String(\"nodejs20\"),\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 .name(\"appengine-static-content\")\n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"hello-world.zip\")\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(\"nodejs20\")\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(\"nodejs20\")\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 name: custom_service_account\n properties:\n accountId: my-account\n displayName: Custom Service Account\n gaeApi:\n type: gcp:projects:IAMMember\n name: gae_api\n properties:\n project: ${customServiceAccount.project}\n role: roles/compute.networkUser\n member: serviceAccount:${customServiceAccount.email}\n storageViewer:\n type: gcp:projects:IAMMember\n name: storage_viewer\n properties:\n project: ${customServiceAccount.project}\n role: roles/storage.objectViewer\n member: serviceAccount:${customServiceAccount.email}\n myappV1:\n type: gcp:appengine:StandardAppVersion\n name: myapp_v1\n properties:\n versionId: v1\n service: myapp\n runtime: nodejs20\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 name: myapp_v2\n properties:\n versionId: v2\n service: myapp\n runtime: nodejs20\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 name: appengine-static-content\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n name: hello-world.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nStandardAppVersion can be imported using any of these accepted formats:\n\n* `apps/{{project}}/services/{{service}}/versions/{{version_id}}`\n\n* `{{project}}/{{service}}/{{version_id}}`\n\n* `{{service}}/{{version_id}}`\n\nWhen using the `pulumi import` command, StandardAppVersion can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:appengine/standardAppVersion:StandardAppVersion default apps/{{project}}/services/{{service}}/versions/{{version_id}}\n```\n\n```sh\n$ pulumi import gcp:appengine/standardAppVersion:StandardAppVersion default {{project}}/{{service}}/{{version_id}}\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## Example Usage\n\n### App Engine Standard App Version\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customServiceAccount = new gcp.serviceaccount.Account(\"custom_service_account\", {\n accountId: \"my-account\",\n displayName: \"Custom Service Account\",\n});\nconst gaeApi = new gcp.projects.IAMMember(\"gae_api\", {\n project: customServiceAccount.project,\n role: \"roles/compute.networkUser\",\n member: pulumi.interpolate`serviceAccount:${customServiceAccount.email}`,\n});\nconst storageViewer = new gcp.projects.IAMMember(\"storage_viewer\", {\n project: customServiceAccount.project,\n role: \"roles/storage.objectViewer\",\n member: pulumi.interpolate`serviceAccount:${customServiceAccount.email}`,\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"appengine-static-content\",\n location: \"US\",\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"hello-world.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst myappV1 = new gcp.appengine.StandardAppVersion(\"myapp_v1\", {\n versionId: \"v1\",\n service: \"myapp\",\n runtime: \"nodejs20\",\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(\"myapp_v2\", {\n versionId: \"v2\",\n service: \"myapp\",\n runtime: \"nodejs20\",\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.serviceaccount.Account(\"custom_service_account\",\n account_id=\"my-account\",\n display_name=\"Custom Service Account\")\ngae_api = gcp.projects.IAMMember(\"gae_api\",\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(\"storage_viewer\",\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\",\n name=\"appengine-static-content\",\n location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n name=\"hello-world.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nmyapp_v1 = gcp.appengine.StandardAppVersion(\"myapp_v1\",\n version_id=\"v1\",\n service=\"myapp\",\n runtime=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\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={\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\": {\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(\"myapp_v2\",\n version_id=\"v2\",\n service=\"myapp\",\n runtime=\"nodejs20\",\n app_engine_apis=True,\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\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={\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(\"custom_service_account\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Custom Service Account\",\n });\n\n var gaeApi = new Gcp.Projects.IAMMember(\"gae_api\", 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(\"storage_viewer\", 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 Name = \"appengine-static-content\",\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"hello-world.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var myappV1 = new Gcp.AppEngine.StandardAppVersion(\"myapp_v1\", new()\n {\n VersionId = \"v1\",\n Service = \"myapp\",\n Runtime = \"nodejs20\",\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(\"myapp_v2\", new()\n {\n VersionId = \"v2\",\n Service = \"myapp\",\n Runtime = \"nodejs20\",\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/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"custom_service_account\", \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, \"gae_api\", \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, \"storage_viewer\", \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\tName: pulumi.String(\"appengine-static-content\"),\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\tName: pulumi.String(\"hello-world.zip\"),\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, \"myapp_v1\", \u0026appengine.StandardAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v1\"),\n\t\t\tService: pulumi.String(\"myapp\"),\n\t\t\tRuntime: pulumi.String(\"nodejs20\"),\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, \"myapp_v2\", \u0026appengine.StandardAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v2\"),\n\t\t\tService: pulumi.String(\"myapp\"),\n\t\t\tRuntime: pulumi.String(\"nodejs20\"),\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 .name(\"appengine-static-content\")\n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"hello-world.zip\")\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(\"nodejs20\")\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(\"nodejs20\")\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 name: custom_service_account\n properties:\n accountId: my-account\n displayName: Custom Service Account\n gaeApi:\n type: gcp:projects:IAMMember\n name: gae_api\n properties:\n project: ${customServiceAccount.project}\n role: roles/compute.networkUser\n member: serviceAccount:${customServiceAccount.email}\n storageViewer:\n type: gcp:projects:IAMMember\n name: storage_viewer\n properties:\n project: ${customServiceAccount.project}\n role: roles/storage.objectViewer\n member: serviceAccount:${customServiceAccount.email}\n myappV1:\n type: gcp:appengine:StandardAppVersion\n name: myapp_v1\n properties:\n versionId: v1\n service: myapp\n runtime: nodejs20\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 name: myapp_v2\n properties:\n versionId: v2\n service: myapp\n runtime: nodejs20\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 name: appengine-static-content\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n name: hello-world.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nStandardAppVersion can be imported using any of these accepted formats:\n\n* `apps/{{project}}/services/{{service}}/versions/{{version_id}}`\n\n* `{{project}}/{{service}}/{{version_id}}`\n\n* `{{service}}/{{version_id}}`\n\nWhen using the `pulumi import` command, StandardAppVersion can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:appengine/standardAppVersion:StandardAppVersion default apps/{{project}}/services/{{service}}/versions/{{version_id}}\n```\n\n```sh\n$ pulumi import gcp:appengine/standardAppVersion:StandardAppVersion default {{project}}/{{service}}/{{version_id}}\n```\n\n```sh\n$ pulumi import gcp:appengine/standardAppVersion:StandardAppVersion default {{service}}/{{version_id}}\n```\n\n", "properties": { "appEngineApis": { "type": "boolean", @@ -118970,7 +118970,7 @@ } }, "gcp:apphub/application:Application": { - "description": "Application is a functional grouping of Services and Workloads that helps achieve a desired end-to-end business functionality. Services and Workloads are owned by the Application.\n\n\n\n## Example Usage\n\n### Application Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.apphub.Application(\"example\", {\n location: \"us-east1\",\n applicationId: \"example-application\",\n scope: {\n type: \"REGIONAL\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.apphub.Application(\"example\",\n location=\"us-east1\",\n application_id=\"example-application\",\n scope={\n \"type\": \"REGIONAL\",\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 = new Gcp.Apphub.Application(\"example\", new()\n {\n Location = \"us-east1\",\n ApplicationId = \"example-application\",\n Scope = new Gcp.Apphub.Inputs.ApplicationScopeArgs\n {\n Type = \"REGIONAL\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/apphub\"\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 := apphub.NewApplication(ctx, \"example\", \u0026apphub.ApplicationArgs{\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tApplicationId: pulumi.String(\"example-application\"),\n\t\t\tScope: \u0026apphub.ApplicationScopeArgs{\n\t\t\t\tType: pulumi.String(\"REGIONAL\"),\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.apphub.Application;\nimport com.pulumi.gcp.apphub.ApplicationArgs;\nimport com.pulumi.gcp.apphub.inputs.ApplicationScopeArgs;\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 Application(\"example\", ApplicationArgs.builder()\n .location(\"us-east1\")\n .applicationId(\"example-application\")\n .scope(ApplicationScopeArgs.builder()\n .type(\"REGIONAL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:apphub:Application\n properties:\n location: us-east1\n applicationId: example-application\n scope:\n type: REGIONAL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Application Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example2 = new gcp.apphub.Application(\"example2\", {\n location: \"us-east1\",\n applicationId: \"example-application\",\n displayName: \"Application Full\",\n scope: {\n type: \"REGIONAL\",\n },\n description: \"Application for testing\",\n attributes: {\n environment: {\n type: \"STAGING\",\n },\n criticality: {\n type: \"MISSION_CRITICAL\",\n },\n businessOwners: [{\n displayName: \"Alice\",\n email: \"alice@google.com\",\n }],\n developerOwners: [{\n displayName: \"Bob\",\n email: \"bob@google.com\",\n }],\n operatorOwners: [{\n displayName: \"Charlie\",\n email: \"charlie@google.com\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample2 = gcp.apphub.Application(\"example2\",\n location=\"us-east1\",\n application_id=\"example-application\",\n display_name=\"Application Full\",\n scope={\n \"type\": \"REGIONAL\",\n },\n description=\"Application for testing\",\n attributes={\n \"environment\": {\n \"type\": \"STAGING\",\n },\n \"criticality\": {\n \"type\": \"MISSION_CRITICAL\",\n },\n \"businessOwners\": [{\n \"displayName\": \"Alice\",\n \"email\": \"alice@google.com\",\n }],\n \"developerOwners\": [{\n \"displayName\": \"Bob\",\n \"email\": \"bob@google.com\",\n }],\n \"operatorOwners\": [{\n \"displayName\": \"Charlie\",\n \"email\": \"charlie@google.com\",\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 example2 = new Gcp.Apphub.Application(\"example2\", new()\n {\n Location = \"us-east1\",\n ApplicationId = \"example-application\",\n DisplayName = \"Application Full\",\n Scope = new Gcp.Apphub.Inputs.ApplicationScopeArgs\n {\n Type = \"REGIONAL\",\n },\n Description = \"Application for testing\",\n Attributes = new Gcp.Apphub.Inputs.ApplicationAttributesArgs\n {\n Environment = new Gcp.Apphub.Inputs.ApplicationAttributesEnvironmentArgs\n {\n Type = \"STAGING\",\n },\n Criticality = new Gcp.Apphub.Inputs.ApplicationAttributesCriticalityArgs\n {\n Type = \"MISSION_CRITICAL\",\n },\n BusinessOwners = new[]\n {\n new Gcp.Apphub.Inputs.ApplicationAttributesBusinessOwnerArgs\n {\n DisplayName = \"Alice\",\n Email = \"alice@google.com\",\n },\n },\n DeveloperOwners = new[]\n {\n new Gcp.Apphub.Inputs.ApplicationAttributesDeveloperOwnerArgs\n {\n DisplayName = \"Bob\",\n Email = \"bob@google.com\",\n },\n },\n OperatorOwners = new[]\n {\n new Gcp.Apphub.Inputs.ApplicationAttributesOperatorOwnerArgs\n {\n DisplayName = \"Charlie\",\n Email = \"charlie@google.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/apphub\"\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 := apphub.NewApplication(ctx, \"example2\", \u0026apphub.ApplicationArgs{\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tApplicationId: pulumi.String(\"example-application\"),\n\t\t\tDisplayName: pulumi.String(\"Application Full\"),\n\t\t\tScope: \u0026apphub.ApplicationScopeArgs{\n\t\t\t\tType: pulumi.String(\"REGIONAL\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"Application for testing\"),\n\t\t\tAttributes: \u0026apphub.ApplicationAttributesArgs{\n\t\t\t\tEnvironment: \u0026apphub.ApplicationAttributesEnvironmentArgs{\n\t\t\t\t\tType: pulumi.String(\"STAGING\"),\n\t\t\t\t},\n\t\t\t\tCriticality: \u0026apphub.ApplicationAttributesCriticalityArgs{\n\t\t\t\t\tType: pulumi.String(\"MISSION_CRITICAL\"),\n\t\t\t\t},\n\t\t\t\tBusinessOwners: apphub.ApplicationAttributesBusinessOwnerArray{\n\t\t\t\t\t\u0026apphub.ApplicationAttributesBusinessOwnerArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Alice\"),\n\t\t\t\t\t\tEmail: pulumi.String(\"alice@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDeveloperOwners: apphub.ApplicationAttributesDeveloperOwnerArray{\n\t\t\t\t\t\u0026apphub.ApplicationAttributesDeveloperOwnerArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Bob\"),\n\t\t\t\t\t\tEmail: pulumi.String(\"bob@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOperatorOwners: apphub.ApplicationAttributesOperatorOwnerArray{\n\t\t\t\t\t\u0026apphub.ApplicationAttributesOperatorOwnerArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Charlie\"),\n\t\t\t\t\t\tEmail: pulumi.String(\"charlie@google.com\"),\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.apphub.Application;\nimport com.pulumi.gcp.apphub.ApplicationArgs;\nimport com.pulumi.gcp.apphub.inputs.ApplicationScopeArgs;\nimport com.pulumi.gcp.apphub.inputs.ApplicationAttributesArgs;\nimport com.pulumi.gcp.apphub.inputs.ApplicationAttributesEnvironmentArgs;\nimport com.pulumi.gcp.apphub.inputs.ApplicationAttributesCriticalityArgs;\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 example2 = new Application(\"example2\", ApplicationArgs.builder()\n .location(\"us-east1\")\n .applicationId(\"example-application\")\n .displayName(\"Application Full\")\n .scope(ApplicationScopeArgs.builder()\n .type(\"REGIONAL\")\n .build())\n .description(\"Application for testing\")\n .attributes(ApplicationAttributesArgs.builder()\n .environment(ApplicationAttributesEnvironmentArgs.builder()\n .type(\"STAGING\")\n .build())\n .criticality(ApplicationAttributesCriticalityArgs.builder()\n .type(\"MISSION_CRITICAL\")\n .build())\n .businessOwners(ApplicationAttributesBusinessOwnerArgs.builder()\n .displayName(\"Alice\")\n .email(\"alice@google.com\")\n .build())\n .developerOwners(ApplicationAttributesDeveloperOwnerArgs.builder()\n .displayName(\"Bob\")\n .email(\"bob@google.com\")\n .build())\n .operatorOwners(ApplicationAttributesOperatorOwnerArgs.builder()\n .displayName(\"Charlie\")\n .email(\"charlie@google.com\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example2:\n type: gcp:apphub:Application\n properties:\n location: us-east1\n applicationId: example-application\n displayName: Application Full\n scope:\n type: REGIONAL\n description: Application for testing\n attributes:\n environment:\n type: STAGING\n criticality:\n type: MISSION_CRITICAL\n businessOwners:\n - displayName: Alice\n email: alice@google.com\n developerOwners:\n - displayName: Bob\n email: bob@google.com\n operatorOwners:\n - displayName: Charlie\n email: charlie@google.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nApplication can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/applications/{{application_id}}`\n\n* `{{project}}/{{location}}/{{application_id}}`\n\n* `{{location}}/{{application_id}}`\n\nWhen using the `pulumi import` command, Application can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apphub/application:Application default projects/{{project}}/locations/{{location}}/applications/{{application_id}}\n```\n\n```sh\n$ pulumi import gcp:apphub/application:Application default {{project}}/{{location}}/{{application_id}}\n```\n\n```sh\n$ pulumi import gcp:apphub/application:Application default {{location}}/{{application_id}}\n```\n\n", + "description": "Application is a functional grouping of Services and Workloads that helps achieve a desired end-to-end business functionality. Services and Workloads are owned by the Application.\n\n\n\n## Example Usage\n\n### Application Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.apphub.Application(\"example\", {\n location: \"us-east1\",\n applicationId: \"example-application\",\n scope: {\n type: \"REGIONAL\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.apphub.Application(\"example\",\n location=\"us-east1\",\n application_id=\"example-application\",\n scope={\n \"type\": \"REGIONAL\",\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 = new Gcp.Apphub.Application(\"example\", new()\n {\n Location = \"us-east1\",\n ApplicationId = \"example-application\",\n Scope = new Gcp.Apphub.Inputs.ApplicationScopeArgs\n {\n Type = \"REGIONAL\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/apphub\"\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 := apphub.NewApplication(ctx, \"example\", \u0026apphub.ApplicationArgs{\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tApplicationId: pulumi.String(\"example-application\"),\n\t\t\tScope: \u0026apphub.ApplicationScopeArgs{\n\t\t\t\tType: pulumi.String(\"REGIONAL\"),\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.apphub.Application;\nimport com.pulumi.gcp.apphub.ApplicationArgs;\nimport com.pulumi.gcp.apphub.inputs.ApplicationScopeArgs;\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 Application(\"example\", ApplicationArgs.builder()\n .location(\"us-east1\")\n .applicationId(\"example-application\")\n .scope(ApplicationScopeArgs.builder()\n .type(\"REGIONAL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:apphub:Application\n properties:\n location: us-east1\n applicationId: example-application\n scope:\n type: REGIONAL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Application Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example2 = new gcp.apphub.Application(\"example2\", {\n location: \"us-east1\",\n applicationId: \"example-application\",\n displayName: \"Application Full\",\n scope: {\n type: \"REGIONAL\",\n },\n description: \"Application for testing\",\n attributes: {\n environment: {\n type: \"STAGING\",\n },\n criticality: {\n type: \"MISSION_CRITICAL\",\n },\n businessOwners: [{\n displayName: \"Alice\",\n email: \"alice@google.com\",\n }],\n developerOwners: [{\n displayName: \"Bob\",\n email: \"bob@google.com\",\n }],\n operatorOwners: [{\n displayName: \"Charlie\",\n email: \"charlie@google.com\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample2 = gcp.apphub.Application(\"example2\",\n location=\"us-east1\",\n application_id=\"example-application\",\n display_name=\"Application Full\",\n scope={\n \"type\": \"REGIONAL\",\n },\n description=\"Application for testing\",\n attributes={\n \"environment\": {\n \"type\": \"STAGING\",\n },\n \"criticality\": {\n \"type\": \"MISSION_CRITICAL\",\n },\n \"business_owners\": [{\n \"display_name\": \"Alice\",\n \"email\": \"alice@google.com\",\n }],\n \"developer_owners\": [{\n \"display_name\": \"Bob\",\n \"email\": \"bob@google.com\",\n }],\n \"operator_owners\": [{\n \"display_name\": \"Charlie\",\n \"email\": \"charlie@google.com\",\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 example2 = new Gcp.Apphub.Application(\"example2\", new()\n {\n Location = \"us-east1\",\n ApplicationId = \"example-application\",\n DisplayName = \"Application Full\",\n Scope = new Gcp.Apphub.Inputs.ApplicationScopeArgs\n {\n Type = \"REGIONAL\",\n },\n Description = \"Application for testing\",\n Attributes = new Gcp.Apphub.Inputs.ApplicationAttributesArgs\n {\n Environment = new Gcp.Apphub.Inputs.ApplicationAttributesEnvironmentArgs\n {\n Type = \"STAGING\",\n },\n Criticality = new Gcp.Apphub.Inputs.ApplicationAttributesCriticalityArgs\n {\n Type = \"MISSION_CRITICAL\",\n },\n BusinessOwners = new[]\n {\n new Gcp.Apphub.Inputs.ApplicationAttributesBusinessOwnerArgs\n {\n DisplayName = \"Alice\",\n Email = \"alice@google.com\",\n },\n },\n DeveloperOwners = new[]\n {\n new Gcp.Apphub.Inputs.ApplicationAttributesDeveloperOwnerArgs\n {\n DisplayName = \"Bob\",\n Email = \"bob@google.com\",\n },\n },\n OperatorOwners = new[]\n {\n new Gcp.Apphub.Inputs.ApplicationAttributesOperatorOwnerArgs\n {\n DisplayName = \"Charlie\",\n Email = \"charlie@google.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/apphub\"\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 := apphub.NewApplication(ctx, \"example2\", \u0026apphub.ApplicationArgs{\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tApplicationId: pulumi.String(\"example-application\"),\n\t\t\tDisplayName: pulumi.String(\"Application Full\"),\n\t\t\tScope: \u0026apphub.ApplicationScopeArgs{\n\t\t\t\tType: pulumi.String(\"REGIONAL\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"Application for testing\"),\n\t\t\tAttributes: \u0026apphub.ApplicationAttributesArgs{\n\t\t\t\tEnvironment: \u0026apphub.ApplicationAttributesEnvironmentArgs{\n\t\t\t\t\tType: pulumi.String(\"STAGING\"),\n\t\t\t\t},\n\t\t\t\tCriticality: \u0026apphub.ApplicationAttributesCriticalityArgs{\n\t\t\t\t\tType: pulumi.String(\"MISSION_CRITICAL\"),\n\t\t\t\t},\n\t\t\t\tBusinessOwners: apphub.ApplicationAttributesBusinessOwnerArray{\n\t\t\t\t\t\u0026apphub.ApplicationAttributesBusinessOwnerArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Alice\"),\n\t\t\t\t\t\tEmail: pulumi.String(\"alice@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDeveloperOwners: apphub.ApplicationAttributesDeveloperOwnerArray{\n\t\t\t\t\t\u0026apphub.ApplicationAttributesDeveloperOwnerArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Bob\"),\n\t\t\t\t\t\tEmail: pulumi.String(\"bob@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOperatorOwners: apphub.ApplicationAttributesOperatorOwnerArray{\n\t\t\t\t\t\u0026apphub.ApplicationAttributesOperatorOwnerArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Charlie\"),\n\t\t\t\t\t\tEmail: pulumi.String(\"charlie@google.com\"),\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.apphub.Application;\nimport com.pulumi.gcp.apphub.ApplicationArgs;\nimport com.pulumi.gcp.apphub.inputs.ApplicationScopeArgs;\nimport com.pulumi.gcp.apphub.inputs.ApplicationAttributesArgs;\nimport com.pulumi.gcp.apphub.inputs.ApplicationAttributesEnvironmentArgs;\nimport com.pulumi.gcp.apphub.inputs.ApplicationAttributesCriticalityArgs;\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 example2 = new Application(\"example2\", ApplicationArgs.builder()\n .location(\"us-east1\")\n .applicationId(\"example-application\")\n .displayName(\"Application Full\")\n .scope(ApplicationScopeArgs.builder()\n .type(\"REGIONAL\")\n .build())\n .description(\"Application for testing\")\n .attributes(ApplicationAttributesArgs.builder()\n .environment(ApplicationAttributesEnvironmentArgs.builder()\n .type(\"STAGING\")\n .build())\n .criticality(ApplicationAttributesCriticalityArgs.builder()\n .type(\"MISSION_CRITICAL\")\n .build())\n .businessOwners(ApplicationAttributesBusinessOwnerArgs.builder()\n .displayName(\"Alice\")\n .email(\"alice@google.com\")\n .build())\n .developerOwners(ApplicationAttributesDeveloperOwnerArgs.builder()\n .displayName(\"Bob\")\n .email(\"bob@google.com\")\n .build())\n .operatorOwners(ApplicationAttributesOperatorOwnerArgs.builder()\n .displayName(\"Charlie\")\n .email(\"charlie@google.com\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example2:\n type: gcp:apphub:Application\n properties:\n location: us-east1\n applicationId: example-application\n displayName: Application Full\n scope:\n type: REGIONAL\n description: Application for testing\n attributes:\n environment:\n type: STAGING\n criticality:\n type: MISSION_CRITICAL\n businessOwners:\n - displayName: Alice\n email: alice@google.com\n developerOwners:\n - displayName: Bob\n email: bob@google.com\n operatorOwners:\n - displayName: Charlie\n email: charlie@google.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nApplication can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/applications/{{application_id}}`\n\n* `{{project}}/{{location}}/{{application_id}}`\n\n* `{{location}}/{{application_id}}`\n\nWhen using the `pulumi import` command, Application can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apphub/application:Application default projects/{{project}}/locations/{{location}}/applications/{{application_id}}\n```\n\n```sh\n$ pulumi import gcp:apphub/application:Application default {{project}}/{{location}}/{{application_id}}\n```\n\n```sh\n$ pulumi import gcp:apphub/application:Application default {{location}}/{{application_id}}\n```\n\n", "properties": { "applicationId": { "type": "string", @@ -119126,7 +119126,7 @@ } }, "gcp:apphub/service:Service": { - "description": "Service is a network/api interface that exposes some functionality to clients for consumption over the network. Service typically has one or more Workloads behind it. It registers identified service to the Application.\n\n\n\n## Example Usage\n\n### Apphub Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst application = new gcp.apphub.Application(\"application\", {\n location: \"us-central1\",\n applicationId: \"example-application-1\",\n scope: {\n type: \"REGIONAL\",\n },\n});\nconst serviceProject = new gcp.organizations.Project(\"service_project\", {\n projectId: \"project-1\",\n name: \"Service Project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\n// Enable Compute API\nconst computeServiceProject = new gcp.projects.Service(\"compute_service_project\", {\n project: serviceProject.projectId,\n service: \"compute.googleapis.com\",\n});\nconst wait120s = new time.index.Sleep(\"wait_120s\", {createDuration: \"120s\"}, {\n dependsOn: [computeServiceProject],\n});\nconst serviceProjectAttachment = new gcp.apphub.ServiceProjectAttachment(\"service_project_attachment\", {serviceProjectAttachmentId: serviceProject.projectId}, {\n dependsOn: [wait120s],\n});\n// VPC network\nconst ilbNetwork = new gcp.compute.Network(\"ilb_network\", {\n name: \"l7-ilb-network\",\n project: serviceProject.projectId,\n autoCreateSubnetworks: false,\n}, {\n dependsOn: [wait120s],\n});\n// backend subnet\nconst ilbSubnet = new gcp.compute.Subnetwork(\"ilb_subnet\", {\n name: \"l7-ilb-subnet\",\n project: serviceProject.projectId,\n ipCidrRange: \"10.0.1.0/24\",\n region: \"us-central1\",\n network: ilbNetwork.id,\n});\n// health check\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"l7-ilb-hc\",\n project: serviceProject.projectId,\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n}, {\n dependsOn: [wait120s],\n});\n// backend service\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"l7-ilb-backend-subnet\",\n project: serviceProject.projectId,\n region: \"us-central1\",\n healthChecks: _default.id,\n});\n// forwarding rule\nconst forwardingRule = new gcp.compute.ForwardingRule(\"forwarding_rule\", {\n name: \"l7-ilb-forwarding-rule\",\n project: serviceProject.projectId,\n region: \"us-central1\",\n ipVersion: \"IPV4\",\n loadBalancingScheme: \"INTERNAL\",\n allPorts: true,\n backendService: backend.id,\n network: ilbNetwork.id,\n subnetwork: ilbSubnet.id,\n});\n// discovered service block\nconst catalog-service = gcp.apphub.getDiscoveredServiceOutput({\n location: \"us-central1\",\n serviceUri: pulumi.interpolate`//compute.googleapis.com/${forwardingRule.id}`,\n});\nconst wait120sForResourceIngestion = new time.index.Sleep(\"wait_120s_for_resource_ingestion\", {createDuration: \"120s\"}, {\n dependsOn: [forwardingRule],\n});\nconst example = new gcp.apphub.Service(\"example\", {\n location: \"us-central1\",\n applicationId: application.applicationId,\n serviceId: forwardingRule.name,\n discoveredService: catalog_service.apply(catalog_service =\u003e catalog_service.name),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\napplication = gcp.apphub.Application(\"application\",\n location=\"us-central1\",\n application_id=\"example-application-1\",\n scope={\n \"type\": \"REGIONAL\",\n })\nservice_project = gcp.organizations.Project(\"service_project\",\n project_id=\"project-1\",\n name=\"Service Project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\n# Enable Compute API\ncompute_service_project = gcp.projects.Service(\"compute_service_project\",\n project=service_project.project_id,\n service=\"compute.googleapis.com\")\nwait120s = time.index.Sleep(\"wait_120s\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[compute_service_project]))\nservice_project_attachment = gcp.apphub.ServiceProjectAttachment(\"service_project_attachment\", service_project_attachment_id=service_project.project_id,\nopts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# VPC network\nilb_network = gcp.compute.Network(\"ilb_network\",\n name=\"l7-ilb-network\",\n project=service_project.project_id,\n auto_create_subnetworks=False,\n opts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# backend subnet\nilb_subnet = gcp.compute.Subnetwork(\"ilb_subnet\",\n name=\"l7-ilb-subnet\",\n project=service_project.project_id,\n ip_cidr_range=\"10.0.1.0/24\",\n region=\"us-central1\",\n network=ilb_network.id)\n# health check\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"l7-ilb-hc\",\n project=service_project.project_id,\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n },\n opts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# backend service\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"l7-ilb-backend-subnet\",\n project=service_project.project_id,\n region=\"us-central1\",\n health_checks=default.id)\n# forwarding rule\nforwarding_rule = gcp.compute.ForwardingRule(\"forwarding_rule\",\n name=\"l7-ilb-forwarding-rule\",\n project=service_project.project_id,\n region=\"us-central1\",\n ip_version=\"IPV4\",\n load_balancing_scheme=\"INTERNAL\",\n all_ports=True,\n backend_service=backend.id,\n network=ilb_network.id,\n subnetwork=ilb_subnet.id)\n# discovered service block\ncatalog_service = gcp.apphub.get_discovered_service_output(location=\"us-central1\",\n service_uri=forwarding_rule.id.apply(lambda id: f\"//compute.googleapis.com/{id}\"))\nwait120s_for_resource_ingestion = time.index.Sleep(\"wait_120s_for_resource_ingestion\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[forwarding_rule]))\nexample = gcp.apphub.Service(\"example\",\n location=\"us-central1\",\n application_id=application.application_id,\n service_id=forwarding_rule.name,\n discovered_service=catalog_service.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var application = new Gcp.Apphub.Application(\"application\", new()\n {\n Location = \"us-central1\",\n ApplicationId = \"example-application-1\",\n Scope = new Gcp.Apphub.Inputs.ApplicationScopeArgs\n {\n Type = \"REGIONAL\",\n },\n });\n\n var serviceProject = new Gcp.Organizations.Project(\"service_project\", new()\n {\n ProjectId = \"project-1\",\n Name = \"Service Project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n // Enable Compute API\n var computeServiceProject = new Gcp.Projects.Service(\"compute_service_project\", new()\n {\n Project = serviceProject.ProjectId,\n ServiceName = \"compute.googleapis.com\",\n });\n\n var wait120s = new Time.Index.Sleep(\"wait_120s\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n computeServiceProject,\n },\n });\n\n var serviceProjectAttachment = new Gcp.Apphub.ServiceProjectAttachment(\"service_project_attachment\", new()\n {\n ServiceProjectAttachmentId = serviceProject.ProjectId,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // VPC network\n var ilbNetwork = new Gcp.Compute.Network(\"ilb_network\", new()\n {\n Name = \"l7-ilb-network\",\n Project = serviceProject.ProjectId,\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // backend subnet\n var ilbSubnet = new Gcp.Compute.Subnetwork(\"ilb_subnet\", new()\n {\n Name = \"l7-ilb-subnet\",\n Project = serviceProject.ProjectId,\n IpCidrRange = \"10.0.1.0/24\",\n Region = \"us-central1\",\n Network = ilbNetwork.Id,\n });\n\n // health check\n var @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"l7-ilb-hc\",\n Project = serviceProject.ProjectId,\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // backend service\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"l7-ilb-backend-subnet\",\n Project = serviceProject.ProjectId,\n Region = \"us-central1\",\n HealthChecks = @default.Id,\n });\n\n // forwarding rule\n var forwardingRule = new Gcp.Compute.ForwardingRule(\"forwarding_rule\", new()\n {\n Name = \"l7-ilb-forwarding-rule\",\n Project = serviceProject.ProjectId,\n Region = \"us-central1\",\n IpVersion = \"IPV4\",\n LoadBalancingScheme = \"INTERNAL\",\n AllPorts = true,\n BackendService = backend.Id,\n Network = ilbNetwork.Id,\n Subnetwork = ilbSubnet.Id,\n });\n\n // discovered service block\n var catalog_service = Gcp.Apphub.GetDiscoveredService.Invoke(new()\n {\n Location = \"us-central1\",\n ServiceUri = $\"//compute.googleapis.com/{forwardingRule.Id}\",\n });\n\n var wait120sForResourceIngestion = new Time.Index.Sleep(\"wait_120s_for_resource_ingestion\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n forwardingRule,\n },\n });\n\n var example = new Gcp.Apphub.Service(\"example\", new()\n {\n Location = \"us-central1\",\n ApplicationId = application.ApplicationId,\n ServiceId = forwardingRule.Name,\n DiscoveredService = catalog_service.Apply(catalog_service =\u003e catalog_service.Apply(getDiscoveredServiceResult =\u003e getDiscoveredServiceResult.Name)),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/apphub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapplication, err := apphub.NewApplication(ctx, \"application\", \u0026apphub.ApplicationArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tApplicationId: pulumi.String(\"example-application-1\"),\n\t\t\tScope: \u0026apphub.ApplicationScopeArgs{\n\t\t\t\tType: pulumi.String(\"REGIONAL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceProject, err := organizations.NewProject(ctx, \"service_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"project-1\"),\n\t\t\tName: pulumi.String(\"Service Project\"),\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// Enable Compute API\n\t\tcomputeServiceProject, err := projects.NewService(ctx, \"compute_service_project\", \u0026projects.ServiceArgs{\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twait120s, err := time.NewSleep(ctx, \"wait_120s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcomputeServiceProject,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apphub.NewServiceProjectAttachment(ctx, \"service_project_attachment\", \u0026apphub.ServiceProjectAttachmentArgs{\n\t\t\tServiceProjectAttachmentId: serviceProject.ProjectId,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// VPC network\n\t\tilbNetwork, err := compute.NewNetwork(ctx, \"ilb_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-network\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// backend subnet\n\t\tilbSubnet, err := compute.NewSubnetwork(ctx, \"ilb_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-subnet\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: ilbNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// health check\n\t\t_, err = compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-hc\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// backend service\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-backend-subnet\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// forwarding rule\n\t\tforwardingRule, err := compute.NewForwardingRule(ctx, \"forwarding_rule\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-forwarding-rule\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpVersion: pulumi.String(\"IPV4\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tBackendService: backend.ID(),\n\t\t\tNetwork: ilbNetwork.ID(),\n\t\t\tSubnetwork: ilbSubnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// discovered service block\n\t\tcatalog_service := apphub.GetDiscoveredServiceOutput(ctx, apphub.GetDiscoveredServiceOutputArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceUri: forwardingRule.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"//compute.googleapis.com/%v\", id), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, nil)\n\t\t_, err = time.NewSleep(ctx, \"wait_120s_for_resource_ingestion\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tforwardingRule,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apphub.NewService(ctx, \"example\", \u0026apphub.ServiceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tApplicationId: application.ApplicationId,\n\t\t\tServiceId: forwardingRule.Name,\n\t\t\tDiscoveredService: catalog_service.ApplyT(func(catalog_service apphub.GetDiscoveredServiceResult) (*string, error) {\n\t\t\t\treturn \u0026catalog_service.Name, nil\n\t\t\t}).(pulumi.StringPtrOutput),\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.apphub.Application;\nimport com.pulumi.gcp.apphub.ApplicationArgs;\nimport com.pulumi.gcp.apphub.inputs.ApplicationScopeArgs;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.apphub.ServiceProjectAttachment;\nimport com.pulumi.gcp.apphub.ServiceProjectAttachmentArgs;\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.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.apphub.ApphubFunctions;\nimport com.pulumi.gcp.apphub.inputs.GetDiscoveredServiceArgs;\nimport com.pulumi.gcp.apphub.Service;\nimport com.pulumi.gcp.apphub.ServiceArgs;\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 application = new Application(\"application\", ApplicationArgs.builder()\n .location(\"us-central1\")\n .applicationId(\"example-application-1\")\n .scope(ApplicationScopeArgs.builder()\n .type(\"REGIONAL\")\n .build())\n .build());\n\n var serviceProject = new Project(\"serviceProject\", ProjectArgs.builder()\n .projectId(\"project-1\")\n .name(\"Service Project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n // Enable Compute API\n var computeServiceProject = new Service(\"computeServiceProject\", ServiceArgs.builder()\n .project(serviceProject.projectId())\n .service(\"compute.googleapis.com\")\n .build());\n\n var wait120s = new Sleep(\"wait120s\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(computeServiceProject)\n .build());\n\n var serviceProjectAttachment = new ServiceProjectAttachment(\"serviceProjectAttachment\", ServiceProjectAttachmentArgs.builder()\n .serviceProjectAttachmentId(serviceProject.projectId())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // VPC network\n var ilbNetwork = new Network(\"ilbNetwork\", NetworkArgs.builder()\n .name(\"l7-ilb-network\")\n .project(serviceProject.projectId())\n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // backend subnet\n var ilbSubnet = new Subnetwork(\"ilbSubnet\", SubnetworkArgs.builder()\n .name(\"l7-ilb-subnet\")\n .project(serviceProject.projectId())\n .ipCidrRange(\"10.0.1.0/24\")\n .region(\"us-central1\")\n .network(ilbNetwork.id())\n .build());\n\n // health check\n var default_ = new HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"l7-ilb-hc\")\n .project(serviceProject.projectId())\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // backend service\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder()\n .name(\"l7-ilb-backend-subnet\")\n .project(serviceProject.projectId())\n .region(\"us-central1\")\n .healthChecks(default_.id())\n .build());\n\n // forwarding rule\n var forwardingRule = new ForwardingRule(\"forwardingRule\", ForwardingRuleArgs.builder()\n .name(\"l7-ilb-forwarding-rule\")\n .project(serviceProject.projectId())\n .region(\"us-central1\")\n .ipVersion(\"IPV4\")\n .loadBalancingScheme(\"INTERNAL\")\n .allPorts(true)\n .backendService(backend.id())\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .build());\n\n // discovered service block\n final var catalog-service = ApphubFunctions.getDiscoveredService(GetDiscoveredServiceArgs.builder()\n .location(\"us-central1\")\n .serviceUri(forwardingRule.id().applyValue(id -\u003e String.format(\"//compute.googleapis.com/%s\", id)))\n .build());\n\n var wait120sForResourceIngestion = new Sleep(\"wait120sForResourceIngestion\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(forwardingRule)\n .build());\n\n var example = new Service(\"example\", ServiceArgs.builder()\n .location(\"us-central1\")\n .applicationId(application.applicationId())\n .serviceId(forwardingRule.name())\n .discoveredService(catalog_service.applyValue(catalog_service -\u003e catalog_service.name()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n application:\n type: gcp:apphub:Application\n properties:\n location: us-central1\n applicationId: example-application-1\n scope:\n type: REGIONAL\n serviceProject:\n type: gcp:organizations:Project\n name: service_project\n properties:\n projectId: project-1\n name: Service Project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n # Enable Compute API\n computeServiceProject:\n type: gcp:projects:Service\n name: compute_service_project\n properties:\n project: ${serviceProject.projectId}\n service: compute.googleapis.com\n wait120s:\n type: time:sleep\n name: wait_120s\n properties:\n createDuration: 120s\n options:\n dependson:\n - ${computeServiceProject}\n serviceProjectAttachment:\n type: gcp:apphub:ServiceProjectAttachment\n name: service_project_attachment\n properties:\n serviceProjectAttachmentId: ${serviceProject.projectId}\n options:\n dependson:\n - ${wait120s}\n wait120sForResourceIngestion:\n type: time:sleep\n name: wait_120s_for_resource_ingestion\n properties:\n createDuration: 120s\n options:\n dependson:\n - ${forwardingRule}\n example:\n type: gcp:apphub:Service\n properties:\n location: us-central1\n applicationId: ${application.applicationId}\n serviceId: ${forwardingRule.name}\n discoveredService: ${[\"catalog-service\"].name}\n # VPC network\n ilbNetwork:\n type: gcp:compute:Network\n name: ilb_network\n properties:\n name: l7-ilb-network\n project: ${serviceProject.projectId}\n autoCreateSubnetworks: false\n options:\n dependson:\n - ${wait120s}\n # backend subnet\n ilbSubnet:\n type: gcp:compute:Subnetwork\n name: ilb_subnet\n properties:\n name: l7-ilb-subnet\n project: ${serviceProject.projectId}\n ipCidrRange: 10.0.1.0/24\n region: us-central1\n network: ${ilbNetwork.id}\n # forwarding rule\n forwardingRule:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule\n properties:\n name: l7-ilb-forwarding-rule\n project: ${serviceProject.projectId}\n region: us-central1\n ipVersion: IPV4\n loadBalancingScheme: INTERNAL\n allPorts: true\n backendService: ${backend.id}\n network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n # backend service\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n name: l7-ilb-backend-subnet\n project: ${serviceProject.projectId}\n region: us-central1\n healthChecks: ${default.id}\n # health check\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: l7-ilb-hc\n project: ${serviceProject.projectId}\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n options:\n dependson:\n - ${wait120s}\nvariables:\n # discovered service block\n catalog-service:\n fn::invoke:\n Function: gcp:apphub:getDiscoveredService\n Arguments:\n location: us-central1\n serviceUri: //compute.googleapis.com/${forwardingRule.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apphub Service Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst application = new gcp.apphub.Application(\"application\", {\n location: \"us-central1\",\n applicationId: \"example-application-1\",\n scope: {\n type: \"REGIONAL\",\n },\n});\nconst serviceProject = new gcp.organizations.Project(\"service_project\", {\n projectId: \"project-1\",\n name: \"Service Project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\n// Enable Compute API\nconst computeServiceProject = new gcp.projects.Service(\"compute_service_project\", {\n project: serviceProject.projectId,\n service: \"compute.googleapis.com\",\n});\nconst wait120s = new time.index.Sleep(\"wait_120s\", {createDuration: \"120s\"}, {\n dependsOn: [computeServiceProject],\n});\nconst serviceProjectAttachment = new gcp.apphub.ServiceProjectAttachment(\"service_project_attachment\", {serviceProjectAttachmentId: serviceProject.projectId}, {\n dependsOn: [wait120s],\n});\n// VPC network\nconst ilbNetwork = new gcp.compute.Network(\"ilb_network\", {\n name: \"l7-ilb-network\",\n project: serviceProject.projectId,\n autoCreateSubnetworks: false,\n}, {\n dependsOn: [wait120s],\n});\n// backend subnet\nconst ilbSubnet = new gcp.compute.Subnetwork(\"ilb_subnet\", {\n name: \"l7-ilb-subnet\",\n project: serviceProject.projectId,\n ipCidrRange: \"10.0.1.0/24\",\n region: \"us-central1\",\n network: ilbNetwork.id,\n});\n// health check\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"l7-ilb-hc\",\n project: serviceProject.projectId,\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n}, {\n dependsOn: [wait120s],\n});\n// backend service\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"l7-ilb-backend-subnet\",\n project: serviceProject.projectId,\n region: \"us-central1\",\n healthChecks: _default.id,\n});\n// forwarding rule\nconst forwardingRule = new gcp.compute.ForwardingRule(\"forwarding_rule\", {\n name: \"l7-ilb-forwarding-rule\",\n project: serviceProject.projectId,\n region: \"us-central1\",\n ipVersion: \"IPV4\",\n loadBalancingScheme: \"INTERNAL\",\n allPorts: true,\n backendService: backend.id,\n network: ilbNetwork.id,\n subnetwork: ilbSubnet.id,\n});\n// discovered service block\nconst catalog-service = gcp.apphub.getDiscoveredServiceOutput({\n location: \"us-central1\",\n serviceUri: pulumi.interpolate`//compute.googleapis.com/${forwardingRule.id}`,\n});\nconst wait120sForResourceIngestion = new time.index.Sleep(\"wait_120s_for_resource_ingestion\", {createDuration: \"120s\"}, {\n dependsOn: [forwardingRule],\n});\nconst example = new gcp.apphub.Service(\"example\", {\n location: \"us-central1\",\n applicationId: application.applicationId,\n serviceId: forwardingRule.name,\n discoveredService: catalog_service.apply(catalog_service =\u003e catalog_service.name),\n displayName: \"Example Service Full\",\n description: \"Register service for testing\",\n attributes: {\n environment: {\n type: \"STAGING\",\n },\n criticality: {\n type: \"MISSION_CRITICAL\",\n },\n businessOwners: [{\n displayName: \"Alice\",\n email: \"alice@google.com\",\n }],\n developerOwners: [{\n displayName: \"Bob\",\n email: \"bob@google.com\",\n }],\n operatorOwners: [{\n displayName: \"Charlie\",\n email: \"charlie@google.com\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\napplication = gcp.apphub.Application(\"application\",\n location=\"us-central1\",\n application_id=\"example-application-1\",\n scope={\n \"type\": \"REGIONAL\",\n })\nservice_project = gcp.organizations.Project(\"service_project\",\n project_id=\"project-1\",\n name=\"Service Project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\n# Enable Compute API\ncompute_service_project = gcp.projects.Service(\"compute_service_project\",\n project=service_project.project_id,\n service=\"compute.googleapis.com\")\nwait120s = time.index.Sleep(\"wait_120s\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[compute_service_project]))\nservice_project_attachment = gcp.apphub.ServiceProjectAttachment(\"service_project_attachment\", service_project_attachment_id=service_project.project_id,\nopts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# VPC network\nilb_network = gcp.compute.Network(\"ilb_network\",\n name=\"l7-ilb-network\",\n project=service_project.project_id,\n auto_create_subnetworks=False,\n opts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# backend subnet\nilb_subnet = gcp.compute.Subnetwork(\"ilb_subnet\",\n name=\"l7-ilb-subnet\",\n project=service_project.project_id,\n ip_cidr_range=\"10.0.1.0/24\",\n region=\"us-central1\",\n network=ilb_network.id)\n# health check\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"l7-ilb-hc\",\n project=service_project.project_id,\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n },\n opts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# backend service\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"l7-ilb-backend-subnet\",\n project=service_project.project_id,\n region=\"us-central1\",\n health_checks=default.id)\n# forwarding rule\nforwarding_rule = gcp.compute.ForwardingRule(\"forwarding_rule\",\n name=\"l7-ilb-forwarding-rule\",\n project=service_project.project_id,\n region=\"us-central1\",\n ip_version=\"IPV4\",\n load_balancing_scheme=\"INTERNAL\",\n all_ports=True,\n backend_service=backend.id,\n network=ilb_network.id,\n subnetwork=ilb_subnet.id)\n# discovered service block\ncatalog_service = gcp.apphub.get_discovered_service_output(location=\"us-central1\",\n service_uri=forwarding_rule.id.apply(lambda id: f\"//compute.googleapis.com/{id}\"))\nwait120s_for_resource_ingestion = time.index.Sleep(\"wait_120s_for_resource_ingestion\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[forwarding_rule]))\nexample = gcp.apphub.Service(\"example\",\n location=\"us-central1\",\n application_id=application.application_id,\n service_id=forwarding_rule.name,\n discovered_service=catalog_service.name,\n display_name=\"Example Service Full\",\n description=\"Register service for testing\",\n attributes={\n \"environment\": {\n \"type\": \"STAGING\",\n },\n \"criticality\": {\n \"type\": \"MISSION_CRITICAL\",\n },\n \"businessOwners\": [{\n \"displayName\": \"Alice\",\n \"email\": \"alice@google.com\",\n }],\n \"developerOwners\": [{\n \"displayName\": \"Bob\",\n \"email\": \"bob@google.com\",\n }],\n \"operatorOwners\": [{\n \"displayName\": \"Charlie\",\n \"email\": \"charlie@google.com\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var application = new Gcp.Apphub.Application(\"application\", new()\n {\n Location = \"us-central1\",\n ApplicationId = \"example-application-1\",\n Scope = new Gcp.Apphub.Inputs.ApplicationScopeArgs\n {\n Type = \"REGIONAL\",\n },\n });\n\n var serviceProject = new Gcp.Organizations.Project(\"service_project\", new()\n {\n ProjectId = \"project-1\",\n Name = \"Service Project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n // Enable Compute API\n var computeServiceProject = new Gcp.Projects.Service(\"compute_service_project\", new()\n {\n Project = serviceProject.ProjectId,\n ServiceName = \"compute.googleapis.com\",\n });\n\n var wait120s = new Time.Index.Sleep(\"wait_120s\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n computeServiceProject,\n },\n });\n\n var serviceProjectAttachment = new Gcp.Apphub.ServiceProjectAttachment(\"service_project_attachment\", new()\n {\n ServiceProjectAttachmentId = serviceProject.ProjectId,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // VPC network\n var ilbNetwork = new Gcp.Compute.Network(\"ilb_network\", new()\n {\n Name = \"l7-ilb-network\",\n Project = serviceProject.ProjectId,\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // backend subnet\n var ilbSubnet = new Gcp.Compute.Subnetwork(\"ilb_subnet\", new()\n {\n Name = \"l7-ilb-subnet\",\n Project = serviceProject.ProjectId,\n IpCidrRange = \"10.0.1.0/24\",\n Region = \"us-central1\",\n Network = ilbNetwork.Id,\n });\n\n // health check\n var @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"l7-ilb-hc\",\n Project = serviceProject.ProjectId,\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // backend service\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"l7-ilb-backend-subnet\",\n Project = serviceProject.ProjectId,\n Region = \"us-central1\",\n HealthChecks = @default.Id,\n });\n\n // forwarding rule\n var forwardingRule = new Gcp.Compute.ForwardingRule(\"forwarding_rule\", new()\n {\n Name = \"l7-ilb-forwarding-rule\",\n Project = serviceProject.ProjectId,\n Region = \"us-central1\",\n IpVersion = \"IPV4\",\n LoadBalancingScheme = \"INTERNAL\",\n AllPorts = true,\n BackendService = backend.Id,\n Network = ilbNetwork.Id,\n Subnetwork = ilbSubnet.Id,\n });\n\n // discovered service block\n var catalog_service = Gcp.Apphub.GetDiscoveredService.Invoke(new()\n {\n Location = \"us-central1\",\n ServiceUri = $\"//compute.googleapis.com/{forwardingRule.Id}\",\n });\n\n var wait120sForResourceIngestion = new Time.Index.Sleep(\"wait_120s_for_resource_ingestion\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n forwardingRule,\n },\n });\n\n var example = new Gcp.Apphub.Service(\"example\", new()\n {\n Location = \"us-central1\",\n ApplicationId = application.ApplicationId,\n ServiceId = forwardingRule.Name,\n DiscoveredService = catalog_service.Apply(catalog_service =\u003e catalog_service.Apply(getDiscoveredServiceResult =\u003e getDiscoveredServiceResult.Name)),\n DisplayName = \"Example Service Full\",\n Description = \"Register service for testing\",\n Attributes = new Gcp.Apphub.Inputs.ServiceAttributesArgs\n {\n Environment = new Gcp.Apphub.Inputs.ServiceAttributesEnvironmentArgs\n {\n Type = \"STAGING\",\n },\n Criticality = new Gcp.Apphub.Inputs.ServiceAttributesCriticalityArgs\n {\n Type = \"MISSION_CRITICAL\",\n },\n BusinessOwners = new[]\n {\n new Gcp.Apphub.Inputs.ServiceAttributesBusinessOwnerArgs\n {\n DisplayName = \"Alice\",\n Email = \"alice@google.com\",\n },\n },\n DeveloperOwners = new[]\n {\n new Gcp.Apphub.Inputs.ServiceAttributesDeveloperOwnerArgs\n {\n DisplayName = \"Bob\",\n Email = \"bob@google.com\",\n },\n },\n OperatorOwners = new[]\n {\n new Gcp.Apphub.Inputs.ServiceAttributesOperatorOwnerArgs\n {\n DisplayName = \"Charlie\",\n Email = \"charlie@google.com\",\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/v7/go/gcp/apphub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapplication, err := apphub.NewApplication(ctx, \"application\", \u0026apphub.ApplicationArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tApplicationId: pulumi.String(\"example-application-1\"),\n\t\t\tScope: \u0026apphub.ApplicationScopeArgs{\n\t\t\t\tType: pulumi.String(\"REGIONAL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceProject, err := organizations.NewProject(ctx, \"service_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"project-1\"),\n\t\t\tName: pulumi.String(\"Service Project\"),\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// Enable Compute API\n\t\tcomputeServiceProject, err := projects.NewService(ctx, \"compute_service_project\", \u0026projects.ServiceArgs{\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twait120s, err := time.NewSleep(ctx, \"wait_120s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcomputeServiceProject,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apphub.NewServiceProjectAttachment(ctx, \"service_project_attachment\", \u0026apphub.ServiceProjectAttachmentArgs{\n\t\t\tServiceProjectAttachmentId: serviceProject.ProjectId,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// VPC network\n\t\tilbNetwork, err := compute.NewNetwork(ctx, \"ilb_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-network\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// backend subnet\n\t\tilbSubnet, err := compute.NewSubnetwork(ctx, \"ilb_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-subnet\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: ilbNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// health check\n\t\t_, err = compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-hc\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// backend service\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-backend-subnet\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// forwarding rule\n\t\tforwardingRule, err := compute.NewForwardingRule(ctx, \"forwarding_rule\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-forwarding-rule\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpVersion: pulumi.String(\"IPV4\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tBackendService: backend.ID(),\n\t\t\tNetwork: ilbNetwork.ID(),\n\t\t\tSubnetwork: ilbSubnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// discovered service block\n\t\tcatalog_service := apphub.GetDiscoveredServiceOutput(ctx, apphub.GetDiscoveredServiceOutputArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceUri: forwardingRule.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"//compute.googleapis.com/%v\", id), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, nil)\n\t\t_, err = time.NewSleep(ctx, \"wait_120s_for_resource_ingestion\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tforwardingRule,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apphub.NewService(ctx, \"example\", \u0026apphub.ServiceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tApplicationId: application.ApplicationId,\n\t\t\tServiceId: forwardingRule.Name,\n\t\t\tDiscoveredService: catalog_service.ApplyT(func(catalog_service apphub.GetDiscoveredServiceResult) (*string, error) {\n\t\t\t\treturn \u0026catalog_service.Name, nil\n\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\tDisplayName: pulumi.String(\"Example Service Full\"),\n\t\t\tDescription: pulumi.String(\"Register service for testing\"),\n\t\t\tAttributes: \u0026apphub.ServiceAttributesArgs{\n\t\t\t\tEnvironment: \u0026apphub.ServiceAttributesEnvironmentArgs{\n\t\t\t\t\tType: pulumi.String(\"STAGING\"),\n\t\t\t\t},\n\t\t\t\tCriticality: \u0026apphub.ServiceAttributesCriticalityArgs{\n\t\t\t\t\tType: pulumi.String(\"MISSION_CRITICAL\"),\n\t\t\t\t},\n\t\t\t\tBusinessOwners: apphub.ServiceAttributesBusinessOwnerArray{\n\t\t\t\t\t\u0026apphub.ServiceAttributesBusinessOwnerArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Alice\"),\n\t\t\t\t\t\tEmail: pulumi.String(\"alice@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDeveloperOwners: apphub.ServiceAttributesDeveloperOwnerArray{\n\t\t\t\t\t\u0026apphub.ServiceAttributesDeveloperOwnerArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Bob\"),\n\t\t\t\t\t\tEmail: pulumi.String(\"bob@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOperatorOwners: apphub.ServiceAttributesOperatorOwnerArray{\n\t\t\t\t\t\u0026apphub.ServiceAttributesOperatorOwnerArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Charlie\"),\n\t\t\t\t\t\tEmail: pulumi.String(\"charlie@google.com\"),\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.apphub.Application;\nimport com.pulumi.gcp.apphub.ApplicationArgs;\nimport com.pulumi.gcp.apphub.inputs.ApplicationScopeArgs;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.apphub.ServiceProjectAttachment;\nimport com.pulumi.gcp.apphub.ServiceProjectAttachmentArgs;\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.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.apphub.ApphubFunctions;\nimport com.pulumi.gcp.apphub.inputs.GetDiscoveredServiceArgs;\nimport com.pulumi.gcp.apphub.Service;\nimport com.pulumi.gcp.apphub.ServiceArgs;\nimport com.pulumi.gcp.apphub.inputs.ServiceAttributesArgs;\nimport com.pulumi.gcp.apphub.inputs.ServiceAttributesEnvironmentArgs;\nimport com.pulumi.gcp.apphub.inputs.ServiceAttributesCriticalityArgs;\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 application = new Application(\"application\", ApplicationArgs.builder()\n .location(\"us-central1\")\n .applicationId(\"example-application-1\")\n .scope(ApplicationScopeArgs.builder()\n .type(\"REGIONAL\")\n .build())\n .build());\n\n var serviceProject = new Project(\"serviceProject\", ProjectArgs.builder()\n .projectId(\"project-1\")\n .name(\"Service Project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n // Enable Compute API\n var computeServiceProject = new Service(\"computeServiceProject\", ServiceArgs.builder()\n .project(serviceProject.projectId())\n .service(\"compute.googleapis.com\")\n .build());\n\n var wait120s = new Sleep(\"wait120s\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(computeServiceProject)\n .build());\n\n var serviceProjectAttachment = new ServiceProjectAttachment(\"serviceProjectAttachment\", ServiceProjectAttachmentArgs.builder()\n .serviceProjectAttachmentId(serviceProject.projectId())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // VPC network\n var ilbNetwork = new Network(\"ilbNetwork\", NetworkArgs.builder()\n .name(\"l7-ilb-network\")\n .project(serviceProject.projectId())\n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // backend subnet\n var ilbSubnet = new Subnetwork(\"ilbSubnet\", SubnetworkArgs.builder()\n .name(\"l7-ilb-subnet\")\n .project(serviceProject.projectId())\n .ipCidrRange(\"10.0.1.0/24\")\n .region(\"us-central1\")\n .network(ilbNetwork.id())\n .build());\n\n // health check\n var default_ = new HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"l7-ilb-hc\")\n .project(serviceProject.projectId())\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // backend service\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder()\n .name(\"l7-ilb-backend-subnet\")\n .project(serviceProject.projectId())\n .region(\"us-central1\")\n .healthChecks(default_.id())\n .build());\n\n // forwarding rule\n var forwardingRule = new ForwardingRule(\"forwardingRule\", ForwardingRuleArgs.builder()\n .name(\"l7-ilb-forwarding-rule\")\n .project(serviceProject.projectId())\n .region(\"us-central1\")\n .ipVersion(\"IPV4\")\n .loadBalancingScheme(\"INTERNAL\")\n .allPorts(true)\n .backendService(backend.id())\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .build());\n\n // discovered service block\n final var catalog-service = ApphubFunctions.getDiscoveredService(GetDiscoveredServiceArgs.builder()\n .location(\"us-central1\")\n .serviceUri(forwardingRule.id().applyValue(id -\u003e String.format(\"//compute.googleapis.com/%s\", id)))\n .build());\n\n var wait120sForResourceIngestion = new Sleep(\"wait120sForResourceIngestion\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(forwardingRule)\n .build());\n\n var example = new Service(\"example\", ServiceArgs.builder()\n .location(\"us-central1\")\n .applicationId(application.applicationId())\n .serviceId(forwardingRule.name())\n .discoveredService(catalog_service.applyValue(catalog_service -\u003e catalog_service.name()))\n .displayName(\"Example Service Full\")\n .description(\"Register service for testing\")\n .attributes(ServiceAttributesArgs.builder()\n .environment(ServiceAttributesEnvironmentArgs.builder()\n .type(\"STAGING\")\n .build())\n .criticality(ServiceAttributesCriticalityArgs.builder()\n .type(\"MISSION_CRITICAL\")\n .build())\n .businessOwners(ServiceAttributesBusinessOwnerArgs.builder()\n .displayName(\"Alice\")\n .email(\"alice@google.com\")\n .build())\n .developerOwners(ServiceAttributesDeveloperOwnerArgs.builder()\n .displayName(\"Bob\")\n .email(\"bob@google.com\")\n .build())\n .operatorOwners(ServiceAttributesOperatorOwnerArgs.builder()\n .displayName(\"Charlie\")\n .email(\"charlie@google.com\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n application:\n type: gcp:apphub:Application\n properties:\n location: us-central1\n applicationId: example-application-1\n scope:\n type: REGIONAL\n serviceProject:\n type: gcp:organizations:Project\n name: service_project\n properties:\n projectId: project-1\n name: Service Project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n # Enable Compute API\n computeServiceProject:\n type: gcp:projects:Service\n name: compute_service_project\n properties:\n project: ${serviceProject.projectId}\n service: compute.googleapis.com\n wait120s:\n type: time:sleep\n name: wait_120s\n properties:\n createDuration: 120s\n options:\n dependson:\n - ${computeServiceProject}\n serviceProjectAttachment:\n type: gcp:apphub:ServiceProjectAttachment\n name: service_project_attachment\n properties:\n serviceProjectAttachmentId: ${serviceProject.projectId}\n options:\n dependson:\n - ${wait120s}\n wait120sForResourceIngestion:\n type: time:sleep\n name: wait_120s_for_resource_ingestion\n properties:\n createDuration: 120s\n options:\n dependson:\n - ${forwardingRule}\n example:\n type: gcp:apphub:Service\n properties:\n location: us-central1\n applicationId: ${application.applicationId}\n serviceId: ${forwardingRule.name}\n discoveredService: ${[\"catalog-service\"].name}\n displayName: Example Service Full\n description: Register service for testing\n attributes:\n environment:\n type: STAGING\n criticality:\n type: MISSION_CRITICAL\n businessOwners:\n - displayName: Alice\n email: alice@google.com\n developerOwners:\n - displayName: Bob\n email: bob@google.com\n operatorOwners:\n - displayName: Charlie\n email: charlie@google.com\n # VPC network\n ilbNetwork:\n type: gcp:compute:Network\n name: ilb_network\n properties:\n name: l7-ilb-network\n project: ${serviceProject.projectId}\n autoCreateSubnetworks: false\n options:\n dependson:\n - ${wait120s}\n # backend subnet\n ilbSubnet:\n type: gcp:compute:Subnetwork\n name: ilb_subnet\n properties:\n name: l7-ilb-subnet\n project: ${serviceProject.projectId}\n ipCidrRange: 10.0.1.0/24\n region: us-central1\n network: ${ilbNetwork.id}\n # forwarding rule\n forwardingRule:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule\n properties:\n name: l7-ilb-forwarding-rule\n project: ${serviceProject.projectId}\n region: us-central1\n ipVersion: IPV4\n loadBalancingScheme: INTERNAL\n allPorts: true\n backendService: ${backend.id}\n network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n # backend service\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n name: l7-ilb-backend-subnet\n project: ${serviceProject.projectId}\n region: us-central1\n healthChecks: ${default.id}\n # health check\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: l7-ilb-hc\n project: ${serviceProject.projectId}\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n options:\n dependson:\n - ${wait120s}\nvariables:\n # discovered service block\n catalog-service:\n fn::invoke:\n Function: gcp:apphub:getDiscoveredService\n Arguments:\n location: us-central1\n serviceUri: //compute.googleapis.com/${forwardingRule.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/applications/{{application_id}}/services/{{service_id}}`\n\n* `{{project}}/{{location}}/{{application_id}}/{{service_id}}`\n\n* `{{location}}/{{application_id}}/{{service_id}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apphub/service:Service default projects/{{project}}/locations/{{location}}/applications/{{application_id}}/services/{{service_id}}\n```\n\n```sh\n$ pulumi import gcp:apphub/service:Service default {{project}}/{{location}}/{{application_id}}/{{service_id}}\n```\n\n```sh\n$ pulumi import gcp:apphub/service:Service default {{location}}/{{application_id}}/{{service_id}}\n```\n\n", + "description": "Service is a network/api interface that exposes some functionality to clients for consumption over the network. Service typically has one or more Workloads behind it. It registers identified service to the Application.\n\n\n\n## Example Usage\n\n### Apphub Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst application = new gcp.apphub.Application(\"application\", {\n location: \"us-central1\",\n applicationId: \"example-application-1\",\n scope: {\n type: \"REGIONAL\",\n },\n});\nconst serviceProject = new gcp.organizations.Project(\"service_project\", {\n projectId: \"project-1\",\n name: \"Service Project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\n// Enable Compute API\nconst computeServiceProject = new gcp.projects.Service(\"compute_service_project\", {\n project: serviceProject.projectId,\n service: \"compute.googleapis.com\",\n});\nconst wait120s = new time.index.Sleep(\"wait_120s\", {createDuration: \"120s\"}, {\n dependsOn: [computeServiceProject],\n});\nconst serviceProjectAttachment = new gcp.apphub.ServiceProjectAttachment(\"service_project_attachment\", {serviceProjectAttachmentId: serviceProject.projectId}, {\n dependsOn: [wait120s],\n});\n// VPC network\nconst ilbNetwork = new gcp.compute.Network(\"ilb_network\", {\n name: \"l7-ilb-network\",\n project: serviceProject.projectId,\n autoCreateSubnetworks: false,\n}, {\n dependsOn: [wait120s],\n});\n// backend subnet\nconst ilbSubnet = new gcp.compute.Subnetwork(\"ilb_subnet\", {\n name: \"l7-ilb-subnet\",\n project: serviceProject.projectId,\n ipCidrRange: \"10.0.1.0/24\",\n region: \"us-central1\",\n network: ilbNetwork.id,\n});\n// health check\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"l7-ilb-hc\",\n project: serviceProject.projectId,\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n}, {\n dependsOn: [wait120s],\n});\n// backend service\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"l7-ilb-backend-subnet\",\n project: serviceProject.projectId,\n region: \"us-central1\",\n healthChecks: _default.id,\n});\n// forwarding rule\nconst forwardingRule = new gcp.compute.ForwardingRule(\"forwarding_rule\", {\n name: \"l7-ilb-forwarding-rule\",\n project: serviceProject.projectId,\n region: \"us-central1\",\n ipVersion: \"IPV4\",\n loadBalancingScheme: \"INTERNAL\",\n allPorts: true,\n backendService: backend.id,\n network: ilbNetwork.id,\n subnetwork: ilbSubnet.id,\n});\n// discovered service block\nconst catalog-service = gcp.apphub.getDiscoveredServiceOutput({\n location: \"us-central1\",\n serviceUri: pulumi.interpolate`//compute.googleapis.com/${forwardingRule.id}`,\n});\nconst wait120sForResourceIngestion = new time.index.Sleep(\"wait_120s_for_resource_ingestion\", {createDuration: \"120s\"}, {\n dependsOn: [forwardingRule],\n});\nconst example = new gcp.apphub.Service(\"example\", {\n location: \"us-central1\",\n applicationId: application.applicationId,\n serviceId: forwardingRule.name,\n discoveredService: catalog_service.apply(catalog_service =\u003e catalog_service.name),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\napplication = gcp.apphub.Application(\"application\",\n location=\"us-central1\",\n application_id=\"example-application-1\",\n scope={\n \"type\": \"REGIONAL\",\n })\nservice_project = gcp.organizations.Project(\"service_project\",\n project_id=\"project-1\",\n name=\"Service Project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\n# Enable Compute API\ncompute_service_project = gcp.projects.Service(\"compute_service_project\",\n project=service_project.project_id,\n service=\"compute.googleapis.com\")\nwait120s = time.index.Sleep(\"wait_120s\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[compute_service_project]))\nservice_project_attachment = gcp.apphub.ServiceProjectAttachment(\"service_project_attachment\", service_project_attachment_id=service_project.project_id,\nopts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# VPC network\nilb_network = gcp.compute.Network(\"ilb_network\",\n name=\"l7-ilb-network\",\n project=service_project.project_id,\n auto_create_subnetworks=False,\n opts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# backend subnet\nilb_subnet = gcp.compute.Subnetwork(\"ilb_subnet\",\n name=\"l7-ilb-subnet\",\n project=service_project.project_id,\n ip_cidr_range=\"10.0.1.0/24\",\n region=\"us-central1\",\n network=ilb_network.id)\n# health check\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"l7-ilb-hc\",\n project=service_project.project_id,\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n },\n opts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# backend service\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"l7-ilb-backend-subnet\",\n project=service_project.project_id,\n region=\"us-central1\",\n health_checks=default.id)\n# forwarding rule\nforwarding_rule = gcp.compute.ForwardingRule(\"forwarding_rule\",\n name=\"l7-ilb-forwarding-rule\",\n project=service_project.project_id,\n region=\"us-central1\",\n ip_version=\"IPV4\",\n load_balancing_scheme=\"INTERNAL\",\n all_ports=True,\n backend_service=backend.id,\n network=ilb_network.id,\n subnetwork=ilb_subnet.id)\n# discovered service block\ncatalog_service = gcp.apphub.get_discovered_service_output(location=\"us-central1\",\n service_uri=forwarding_rule.id.apply(lambda id: f\"//compute.googleapis.com/{id}\"))\nwait120s_for_resource_ingestion = time.index.Sleep(\"wait_120s_for_resource_ingestion\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[forwarding_rule]))\nexample = gcp.apphub.Service(\"example\",\n location=\"us-central1\",\n application_id=application.application_id,\n service_id=forwarding_rule.name,\n discovered_service=catalog_service.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var application = new Gcp.Apphub.Application(\"application\", new()\n {\n Location = \"us-central1\",\n ApplicationId = \"example-application-1\",\n Scope = new Gcp.Apphub.Inputs.ApplicationScopeArgs\n {\n Type = \"REGIONAL\",\n },\n });\n\n var serviceProject = new Gcp.Organizations.Project(\"service_project\", new()\n {\n ProjectId = \"project-1\",\n Name = \"Service Project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n // Enable Compute API\n var computeServiceProject = new Gcp.Projects.Service(\"compute_service_project\", new()\n {\n Project = serviceProject.ProjectId,\n ServiceName = \"compute.googleapis.com\",\n });\n\n var wait120s = new Time.Index.Sleep(\"wait_120s\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n computeServiceProject,\n },\n });\n\n var serviceProjectAttachment = new Gcp.Apphub.ServiceProjectAttachment(\"service_project_attachment\", new()\n {\n ServiceProjectAttachmentId = serviceProject.ProjectId,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // VPC network\n var ilbNetwork = new Gcp.Compute.Network(\"ilb_network\", new()\n {\n Name = \"l7-ilb-network\",\n Project = serviceProject.ProjectId,\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // backend subnet\n var ilbSubnet = new Gcp.Compute.Subnetwork(\"ilb_subnet\", new()\n {\n Name = \"l7-ilb-subnet\",\n Project = serviceProject.ProjectId,\n IpCidrRange = \"10.0.1.0/24\",\n Region = \"us-central1\",\n Network = ilbNetwork.Id,\n });\n\n // health check\n var @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"l7-ilb-hc\",\n Project = serviceProject.ProjectId,\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // backend service\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"l7-ilb-backend-subnet\",\n Project = serviceProject.ProjectId,\n Region = \"us-central1\",\n HealthChecks = @default.Id,\n });\n\n // forwarding rule\n var forwardingRule = new Gcp.Compute.ForwardingRule(\"forwarding_rule\", new()\n {\n Name = \"l7-ilb-forwarding-rule\",\n Project = serviceProject.ProjectId,\n Region = \"us-central1\",\n IpVersion = \"IPV4\",\n LoadBalancingScheme = \"INTERNAL\",\n AllPorts = true,\n BackendService = backend.Id,\n Network = ilbNetwork.Id,\n Subnetwork = ilbSubnet.Id,\n });\n\n // discovered service block\n var catalog_service = Gcp.Apphub.GetDiscoveredService.Invoke(new()\n {\n Location = \"us-central1\",\n ServiceUri = $\"//compute.googleapis.com/{forwardingRule.Id}\",\n });\n\n var wait120sForResourceIngestion = new Time.Index.Sleep(\"wait_120s_for_resource_ingestion\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n forwardingRule,\n },\n });\n\n var example = new Gcp.Apphub.Service(\"example\", new()\n {\n Location = \"us-central1\",\n ApplicationId = application.ApplicationId,\n ServiceId = forwardingRule.Name,\n DiscoveredService = catalog_service.Apply(catalog_service =\u003e catalog_service.Apply(getDiscoveredServiceResult =\u003e getDiscoveredServiceResult.Name)),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/apphub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapplication, err := apphub.NewApplication(ctx, \"application\", \u0026apphub.ApplicationArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tApplicationId: pulumi.String(\"example-application-1\"),\n\t\t\tScope: \u0026apphub.ApplicationScopeArgs{\n\t\t\t\tType: pulumi.String(\"REGIONAL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceProject, err := organizations.NewProject(ctx, \"service_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"project-1\"),\n\t\t\tName: pulumi.String(\"Service Project\"),\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// Enable Compute API\n\t\tcomputeServiceProject, err := projects.NewService(ctx, \"compute_service_project\", \u0026projects.ServiceArgs{\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twait120s, err := time.NewSleep(ctx, \"wait_120s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcomputeServiceProject,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apphub.NewServiceProjectAttachment(ctx, \"service_project_attachment\", \u0026apphub.ServiceProjectAttachmentArgs{\n\t\t\tServiceProjectAttachmentId: serviceProject.ProjectId,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// VPC network\n\t\tilbNetwork, err := compute.NewNetwork(ctx, \"ilb_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-network\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// backend subnet\n\t\tilbSubnet, err := compute.NewSubnetwork(ctx, \"ilb_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-subnet\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: ilbNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// health check\n\t\t_, err = compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-hc\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// backend service\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-backend-subnet\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// forwarding rule\n\t\tforwardingRule, err := compute.NewForwardingRule(ctx, \"forwarding_rule\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-forwarding-rule\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpVersion: pulumi.String(\"IPV4\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tBackendService: backend.ID(),\n\t\t\tNetwork: ilbNetwork.ID(),\n\t\t\tSubnetwork: ilbSubnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// discovered service block\n\t\tcatalog_service := apphub.GetDiscoveredServiceOutput(ctx, apphub.GetDiscoveredServiceOutputArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceUri: forwardingRule.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"//compute.googleapis.com/%v\", id), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, nil)\n\t\t_, err = time.NewSleep(ctx, \"wait_120s_for_resource_ingestion\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tforwardingRule,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apphub.NewService(ctx, \"example\", \u0026apphub.ServiceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tApplicationId: application.ApplicationId,\n\t\t\tServiceId: forwardingRule.Name,\n\t\t\tDiscoveredService: pulumi.String(catalog_service.ApplyT(func(catalog_service apphub.GetDiscoveredServiceResult) (*string, error) {\n\t\t\t\treturn \u0026catalog_service.Name, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\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.apphub.Application;\nimport com.pulumi.gcp.apphub.ApplicationArgs;\nimport com.pulumi.gcp.apphub.inputs.ApplicationScopeArgs;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.apphub.ServiceProjectAttachment;\nimport com.pulumi.gcp.apphub.ServiceProjectAttachmentArgs;\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.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.apphub.ApphubFunctions;\nimport com.pulumi.gcp.apphub.inputs.GetDiscoveredServiceArgs;\nimport com.pulumi.gcp.apphub.Service;\nimport com.pulumi.gcp.apphub.ServiceArgs;\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 application = new Application(\"application\", ApplicationArgs.builder()\n .location(\"us-central1\")\n .applicationId(\"example-application-1\")\n .scope(ApplicationScopeArgs.builder()\n .type(\"REGIONAL\")\n .build())\n .build());\n\n var serviceProject = new Project(\"serviceProject\", ProjectArgs.builder()\n .projectId(\"project-1\")\n .name(\"Service Project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n // Enable Compute API\n var computeServiceProject = new Service(\"computeServiceProject\", ServiceArgs.builder()\n .project(serviceProject.projectId())\n .service(\"compute.googleapis.com\")\n .build());\n\n var wait120s = new Sleep(\"wait120s\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(computeServiceProject)\n .build());\n\n var serviceProjectAttachment = new ServiceProjectAttachment(\"serviceProjectAttachment\", ServiceProjectAttachmentArgs.builder()\n .serviceProjectAttachmentId(serviceProject.projectId())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // VPC network\n var ilbNetwork = new Network(\"ilbNetwork\", NetworkArgs.builder()\n .name(\"l7-ilb-network\")\n .project(serviceProject.projectId())\n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // backend subnet\n var ilbSubnet = new Subnetwork(\"ilbSubnet\", SubnetworkArgs.builder()\n .name(\"l7-ilb-subnet\")\n .project(serviceProject.projectId())\n .ipCidrRange(\"10.0.1.0/24\")\n .region(\"us-central1\")\n .network(ilbNetwork.id())\n .build());\n\n // health check\n var default_ = new HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"l7-ilb-hc\")\n .project(serviceProject.projectId())\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // backend service\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder()\n .name(\"l7-ilb-backend-subnet\")\n .project(serviceProject.projectId())\n .region(\"us-central1\")\n .healthChecks(default_.id())\n .build());\n\n // forwarding rule\n var forwardingRule = new ForwardingRule(\"forwardingRule\", ForwardingRuleArgs.builder()\n .name(\"l7-ilb-forwarding-rule\")\n .project(serviceProject.projectId())\n .region(\"us-central1\")\n .ipVersion(\"IPV4\")\n .loadBalancingScheme(\"INTERNAL\")\n .allPorts(true)\n .backendService(backend.id())\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .build());\n\n // discovered service block\n final var catalog-service = ApphubFunctions.getDiscoveredService(GetDiscoveredServiceArgs.builder()\n .location(\"us-central1\")\n .serviceUri(forwardingRule.id().applyValue(id -\u003e String.format(\"//compute.googleapis.com/%s\", id)))\n .build());\n\n var wait120sForResourceIngestion = new Sleep(\"wait120sForResourceIngestion\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(forwardingRule)\n .build());\n\n var example = new Service(\"example\", ServiceArgs.builder()\n .location(\"us-central1\")\n .applicationId(application.applicationId())\n .serviceId(forwardingRule.name())\n .discoveredService(catalog_service.applyValue(catalog_service -\u003e catalog_service.name()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n application:\n type: gcp:apphub:Application\n properties:\n location: us-central1\n applicationId: example-application-1\n scope:\n type: REGIONAL\n serviceProject:\n type: gcp:organizations:Project\n name: service_project\n properties:\n projectId: project-1\n name: Service Project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n # Enable Compute API\n computeServiceProject:\n type: gcp:projects:Service\n name: compute_service_project\n properties:\n project: ${serviceProject.projectId}\n service: compute.googleapis.com\n wait120s:\n type: time:sleep\n name: wait_120s\n properties:\n createDuration: 120s\n options:\n dependson:\n - ${computeServiceProject}\n serviceProjectAttachment:\n type: gcp:apphub:ServiceProjectAttachment\n name: service_project_attachment\n properties:\n serviceProjectAttachmentId: ${serviceProject.projectId}\n options:\n dependson:\n - ${wait120s}\n wait120sForResourceIngestion:\n type: time:sleep\n name: wait_120s_for_resource_ingestion\n properties:\n createDuration: 120s\n options:\n dependson:\n - ${forwardingRule}\n example:\n type: gcp:apphub:Service\n properties:\n location: us-central1\n applicationId: ${application.applicationId}\n serviceId: ${forwardingRule.name}\n discoveredService: ${[\"catalog-service\"].name}\n # VPC network\n ilbNetwork:\n type: gcp:compute:Network\n name: ilb_network\n properties:\n name: l7-ilb-network\n project: ${serviceProject.projectId}\n autoCreateSubnetworks: false\n options:\n dependson:\n - ${wait120s}\n # backend subnet\n ilbSubnet:\n type: gcp:compute:Subnetwork\n name: ilb_subnet\n properties:\n name: l7-ilb-subnet\n project: ${serviceProject.projectId}\n ipCidrRange: 10.0.1.0/24\n region: us-central1\n network: ${ilbNetwork.id}\n # forwarding rule\n forwardingRule:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule\n properties:\n name: l7-ilb-forwarding-rule\n project: ${serviceProject.projectId}\n region: us-central1\n ipVersion: IPV4\n loadBalancingScheme: INTERNAL\n allPorts: true\n backendService: ${backend.id}\n network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n # backend service\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n name: l7-ilb-backend-subnet\n project: ${serviceProject.projectId}\n region: us-central1\n healthChecks: ${default.id}\n # health check\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: l7-ilb-hc\n project: ${serviceProject.projectId}\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n options:\n dependson:\n - ${wait120s}\nvariables:\n # discovered service block\n catalog-service:\n fn::invoke:\n Function: gcp:apphub:getDiscoveredService\n Arguments:\n location: us-central1\n serviceUri: //compute.googleapis.com/${forwardingRule.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apphub Service Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst application = new gcp.apphub.Application(\"application\", {\n location: \"us-central1\",\n applicationId: \"example-application-1\",\n scope: {\n type: \"REGIONAL\",\n },\n});\nconst serviceProject = new gcp.organizations.Project(\"service_project\", {\n projectId: \"project-1\",\n name: \"Service Project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\n// Enable Compute API\nconst computeServiceProject = new gcp.projects.Service(\"compute_service_project\", {\n project: serviceProject.projectId,\n service: \"compute.googleapis.com\",\n});\nconst wait120s = new time.index.Sleep(\"wait_120s\", {createDuration: \"120s\"}, {\n dependsOn: [computeServiceProject],\n});\nconst serviceProjectAttachment = new gcp.apphub.ServiceProjectAttachment(\"service_project_attachment\", {serviceProjectAttachmentId: serviceProject.projectId}, {\n dependsOn: [wait120s],\n});\n// VPC network\nconst ilbNetwork = new gcp.compute.Network(\"ilb_network\", {\n name: \"l7-ilb-network\",\n project: serviceProject.projectId,\n autoCreateSubnetworks: false,\n}, {\n dependsOn: [wait120s],\n});\n// backend subnet\nconst ilbSubnet = new gcp.compute.Subnetwork(\"ilb_subnet\", {\n name: \"l7-ilb-subnet\",\n project: serviceProject.projectId,\n ipCidrRange: \"10.0.1.0/24\",\n region: \"us-central1\",\n network: ilbNetwork.id,\n});\n// health check\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"l7-ilb-hc\",\n project: serviceProject.projectId,\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n}, {\n dependsOn: [wait120s],\n});\n// backend service\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"l7-ilb-backend-subnet\",\n project: serviceProject.projectId,\n region: \"us-central1\",\n healthChecks: _default.id,\n});\n// forwarding rule\nconst forwardingRule = new gcp.compute.ForwardingRule(\"forwarding_rule\", {\n name: \"l7-ilb-forwarding-rule\",\n project: serviceProject.projectId,\n region: \"us-central1\",\n ipVersion: \"IPV4\",\n loadBalancingScheme: \"INTERNAL\",\n allPorts: true,\n backendService: backend.id,\n network: ilbNetwork.id,\n subnetwork: ilbSubnet.id,\n});\n// discovered service block\nconst catalog-service = gcp.apphub.getDiscoveredServiceOutput({\n location: \"us-central1\",\n serviceUri: pulumi.interpolate`//compute.googleapis.com/${forwardingRule.id}`,\n});\nconst wait120sForResourceIngestion = new time.index.Sleep(\"wait_120s_for_resource_ingestion\", {createDuration: \"120s\"}, {\n dependsOn: [forwardingRule],\n});\nconst example = new gcp.apphub.Service(\"example\", {\n location: \"us-central1\",\n applicationId: application.applicationId,\n serviceId: forwardingRule.name,\n discoveredService: catalog_service.apply(catalog_service =\u003e catalog_service.name),\n displayName: \"Example Service Full\",\n description: \"Register service for testing\",\n attributes: {\n environment: {\n type: \"STAGING\",\n },\n criticality: {\n type: \"MISSION_CRITICAL\",\n },\n businessOwners: [{\n displayName: \"Alice\",\n email: \"alice@google.com\",\n }],\n developerOwners: [{\n displayName: \"Bob\",\n email: \"bob@google.com\",\n }],\n operatorOwners: [{\n displayName: \"Charlie\",\n email: \"charlie@google.com\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\napplication = gcp.apphub.Application(\"application\",\n location=\"us-central1\",\n application_id=\"example-application-1\",\n scope={\n \"type\": \"REGIONAL\",\n })\nservice_project = gcp.organizations.Project(\"service_project\",\n project_id=\"project-1\",\n name=\"Service Project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\n# Enable Compute API\ncompute_service_project = gcp.projects.Service(\"compute_service_project\",\n project=service_project.project_id,\n service=\"compute.googleapis.com\")\nwait120s = time.index.Sleep(\"wait_120s\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[compute_service_project]))\nservice_project_attachment = gcp.apphub.ServiceProjectAttachment(\"service_project_attachment\", service_project_attachment_id=service_project.project_id,\nopts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# VPC network\nilb_network = gcp.compute.Network(\"ilb_network\",\n name=\"l7-ilb-network\",\n project=service_project.project_id,\n auto_create_subnetworks=False,\n opts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# backend subnet\nilb_subnet = gcp.compute.Subnetwork(\"ilb_subnet\",\n name=\"l7-ilb-subnet\",\n project=service_project.project_id,\n ip_cidr_range=\"10.0.1.0/24\",\n region=\"us-central1\",\n network=ilb_network.id)\n# health check\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"l7-ilb-hc\",\n project=service_project.project_id,\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n },\n opts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# backend service\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"l7-ilb-backend-subnet\",\n project=service_project.project_id,\n region=\"us-central1\",\n health_checks=default.id)\n# forwarding rule\nforwarding_rule = gcp.compute.ForwardingRule(\"forwarding_rule\",\n name=\"l7-ilb-forwarding-rule\",\n project=service_project.project_id,\n region=\"us-central1\",\n ip_version=\"IPV4\",\n load_balancing_scheme=\"INTERNAL\",\n all_ports=True,\n backend_service=backend.id,\n network=ilb_network.id,\n subnetwork=ilb_subnet.id)\n# discovered service block\ncatalog_service = gcp.apphub.get_discovered_service_output(location=\"us-central1\",\n service_uri=forwarding_rule.id.apply(lambda id: f\"//compute.googleapis.com/{id}\"))\nwait120s_for_resource_ingestion = time.index.Sleep(\"wait_120s_for_resource_ingestion\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[forwarding_rule]))\nexample = gcp.apphub.Service(\"example\",\n location=\"us-central1\",\n application_id=application.application_id,\n service_id=forwarding_rule.name,\n discovered_service=catalog_service.name,\n display_name=\"Example Service Full\",\n description=\"Register service for testing\",\n attributes={\n \"environment\": {\n \"type\": \"STAGING\",\n },\n \"criticality\": {\n \"type\": \"MISSION_CRITICAL\",\n },\n \"business_owners\": [{\n \"display_name\": \"Alice\",\n \"email\": \"alice@google.com\",\n }],\n \"developer_owners\": [{\n \"display_name\": \"Bob\",\n \"email\": \"bob@google.com\",\n }],\n \"operator_owners\": [{\n \"display_name\": \"Charlie\",\n \"email\": \"charlie@google.com\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var application = new Gcp.Apphub.Application(\"application\", new()\n {\n Location = \"us-central1\",\n ApplicationId = \"example-application-1\",\n Scope = new Gcp.Apphub.Inputs.ApplicationScopeArgs\n {\n Type = \"REGIONAL\",\n },\n });\n\n var serviceProject = new Gcp.Organizations.Project(\"service_project\", new()\n {\n ProjectId = \"project-1\",\n Name = \"Service Project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n // Enable Compute API\n var computeServiceProject = new Gcp.Projects.Service(\"compute_service_project\", new()\n {\n Project = serviceProject.ProjectId,\n ServiceName = \"compute.googleapis.com\",\n });\n\n var wait120s = new Time.Index.Sleep(\"wait_120s\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n computeServiceProject,\n },\n });\n\n var serviceProjectAttachment = new Gcp.Apphub.ServiceProjectAttachment(\"service_project_attachment\", new()\n {\n ServiceProjectAttachmentId = serviceProject.ProjectId,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // VPC network\n var ilbNetwork = new Gcp.Compute.Network(\"ilb_network\", new()\n {\n Name = \"l7-ilb-network\",\n Project = serviceProject.ProjectId,\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // backend subnet\n var ilbSubnet = new Gcp.Compute.Subnetwork(\"ilb_subnet\", new()\n {\n Name = \"l7-ilb-subnet\",\n Project = serviceProject.ProjectId,\n IpCidrRange = \"10.0.1.0/24\",\n Region = \"us-central1\",\n Network = ilbNetwork.Id,\n });\n\n // health check\n var @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"l7-ilb-hc\",\n Project = serviceProject.ProjectId,\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // backend service\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"l7-ilb-backend-subnet\",\n Project = serviceProject.ProjectId,\n Region = \"us-central1\",\n HealthChecks = @default.Id,\n });\n\n // forwarding rule\n var forwardingRule = new Gcp.Compute.ForwardingRule(\"forwarding_rule\", new()\n {\n Name = \"l7-ilb-forwarding-rule\",\n Project = serviceProject.ProjectId,\n Region = \"us-central1\",\n IpVersion = \"IPV4\",\n LoadBalancingScheme = \"INTERNAL\",\n AllPorts = true,\n BackendService = backend.Id,\n Network = ilbNetwork.Id,\n Subnetwork = ilbSubnet.Id,\n });\n\n // discovered service block\n var catalog_service = Gcp.Apphub.GetDiscoveredService.Invoke(new()\n {\n Location = \"us-central1\",\n ServiceUri = $\"//compute.googleapis.com/{forwardingRule.Id}\",\n });\n\n var wait120sForResourceIngestion = new Time.Index.Sleep(\"wait_120s_for_resource_ingestion\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n forwardingRule,\n },\n });\n\n var example = new Gcp.Apphub.Service(\"example\", new()\n {\n Location = \"us-central1\",\n ApplicationId = application.ApplicationId,\n ServiceId = forwardingRule.Name,\n DiscoveredService = catalog_service.Apply(catalog_service =\u003e catalog_service.Apply(getDiscoveredServiceResult =\u003e getDiscoveredServiceResult.Name)),\n DisplayName = \"Example Service Full\",\n Description = \"Register service for testing\",\n Attributes = new Gcp.Apphub.Inputs.ServiceAttributesArgs\n {\n Environment = new Gcp.Apphub.Inputs.ServiceAttributesEnvironmentArgs\n {\n Type = \"STAGING\",\n },\n Criticality = new Gcp.Apphub.Inputs.ServiceAttributesCriticalityArgs\n {\n Type = \"MISSION_CRITICAL\",\n },\n BusinessOwners = new[]\n {\n new Gcp.Apphub.Inputs.ServiceAttributesBusinessOwnerArgs\n {\n DisplayName = \"Alice\",\n Email = \"alice@google.com\",\n },\n },\n DeveloperOwners = new[]\n {\n new Gcp.Apphub.Inputs.ServiceAttributesDeveloperOwnerArgs\n {\n DisplayName = \"Bob\",\n Email = \"bob@google.com\",\n },\n },\n OperatorOwners = new[]\n {\n new Gcp.Apphub.Inputs.ServiceAttributesOperatorOwnerArgs\n {\n DisplayName = \"Charlie\",\n Email = \"charlie@google.com\",\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/v7/go/gcp/apphub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapplication, err := apphub.NewApplication(ctx, \"application\", \u0026apphub.ApplicationArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tApplicationId: pulumi.String(\"example-application-1\"),\n\t\t\tScope: \u0026apphub.ApplicationScopeArgs{\n\t\t\t\tType: pulumi.String(\"REGIONAL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceProject, err := organizations.NewProject(ctx, \"service_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"project-1\"),\n\t\t\tName: pulumi.String(\"Service Project\"),\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// Enable Compute API\n\t\tcomputeServiceProject, err := projects.NewService(ctx, \"compute_service_project\", \u0026projects.ServiceArgs{\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twait120s, err := time.NewSleep(ctx, \"wait_120s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcomputeServiceProject,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apphub.NewServiceProjectAttachment(ctx, \"service_project_attachment\", \u0026apphub.ServiceProjectAttachmentArgs{\n\t\t\tServiceProjectAttachmentId: serviceProject.ProjectId,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// VPC network\n\t\tilbNetwork, err := compute.NewNetwork(ctx, \"ilb_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-network\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// backend subnet\n\t\tilbSubnet, err := compute.NewSubnetwork(ctx, \"ilb_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-subnet\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: ilbNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// health check\n\t\t_, err = compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-hc\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// backend service\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-backend-subnet\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// forwarding rule\n\t\tforwardingRule, err := compute.NewForwardingRule(ctx, \"forwarding_rule\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-forwarding-rule\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpVersion: pulumi.String(\"IPV4\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tBackendService: backend.ID(),\n\t\t\tNetwork: ilbNetwork.ID(),\n\t\t\tSubnetwork: ilbSubnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// discovered service block\n\t\tcatalog_service := apphub.GetDiscoveredServiceOutput(ctx, apphub.GetDiscoveredServiceOutputArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceUri: forwardingRule.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"//compute.googleapis.com/%v\", id), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, nil)\n\t\t_, err = time.NewSleep(ctx, \"wait_120s_for_resource_ingestion\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tforwardingRule,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apphub.NewService(ctx, \"example\", \u0026apphub.ServiceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tApplicationId: application.ApplicationId,\n\t\t\tServiceId: forwardingRule.Name,\n\t\t\tDiscoveredService: pulumi.String(catalog_service.ApplyT(func(catalog_service apphub.GetDiscoveredServiceResult) (*string, error) {\n\t\t\t\treturn \u0026catalog_service.Name, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tDisplayName: pulumi.String(\"Example Service Full\"),\n\t\t\tDescription: pulumi.String(\"Register service for testing\"),\n\t\t\tAttributes: \u0026apphub.ServiceAttributesArgs{\n\t\t\t\tEnvironment: \u0026apphub.ServiceAttributesEnvironmentArgs{\n\t\t\t\t\tType: pulumi.String(\"STAGING\"),\n\t\t\t\t},\n\t\t\t\tCriticality: \u0026apphub.ServiceAttributesCriticalityArgs{\n\t\t\t\t\tType: pulumi.String(\"MISSION_CRITICAL\"),\n\t\t\t\t},\n\t\t\t\tBusinessOwners: apphub.ServiceAttributesBusinessOwnerArray{\n\t\t\t\t\t\u0026apphub.ServiceAttributesBusinessOwnerArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Alice\"),\n\t\t\t\t\t\tEmail: pulumi.String(\"alice@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDeveloperOwners: apphub.ServiceAttributesDeveloperOwnerArray{\n\t\t\t\t\t\u0026apphub.ServiceAttributesDeveloperOwnerArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Bob\"),\n\t\t\t\t\t\tEmail: pulumi.String(\"bob@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOperatorOwners: apphub.ServiceAttributesOperatorOwnerArray{\n\t\t\t\t\t\u0026apphub.ServiceAttributesOperatorOwnerArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Charlie\"),\n\t\t\t\t\t\tEmail: pulumi.String(\"charlie@google.com\"),\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.apphub.Application;\nimport com.pulumi.gcp.apphub.ApplicationArgs;\nimport com.pulumi.gcp.apphub.inputs.ApplicationScopeArgs;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.apphub.ServiceProjectAttachment;\nimport com.pulumi.gcp.apphub.ServiceProjectAttachmentArgs;\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.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.apphub.ApphubFunctions;\nimport com.pulumi.gcp.apphub.inputs.GetDiscoveredServiceArgs;\nimport com.pulumi.gcp.apphub.Service;\nimport com.pulumi.gcp.apphub.ServiceArgs;\nimport com.pulumi.gcp.apphub.inputs.ServiceAttributesArgs;\nimport com.pulumi.gcp.apphub.inputs.ServiceAttributesEnvironmentArgs;\nimport com.pulumi.gcp.apphub.inputs.ServiceAttributesCriticalityArgs;\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 application = new Application(\"application\", ApplicationArgs.builder()\n .location(\"us-central1\")\n .applicationId(\"example-application-1\")\n .scope(ApplicationScopeArgs.builder()\n .type(\"REGIONAL\")\n .build())\n .build());\n\n var serviceProject = new Project(\"serviceProject\", ProjectArgs.builder()\n .projectId(\"project-1\")\n .name(\"Service Project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n // Enable Compute API\n var computeServiceProject = new Service(\"computeServiceProject\", ServiceArgs.builder()\n .project(serviceProject.projectId())\n .service(\"compute.googleapis.com\")\n .build());\n\n var wait120s = new Sleep(\"wait120s\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(computeServiceProject)\n .build());\n\n var serviceProjectAttachment = new ServiceProjectAttachment(\"serviceProjectAttachment\", ServiceProjectAttachmentArgs.builder()\n .serviceProjectAttachmentId(serviceProject.projectId())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // VPC network\n var ilbNetwork = new Network(\"ilbNetwork\", NetworkArgs.builder()\n .name(\"l7-ilb-network\")\n .project(serviceProject.projectId())\n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // backend subnet\n var ilbSubnet = new Subnetwork(\"ilbSubnet\", SubnetworkArgs.builder()\n .name(\"l7-ilb-subnet\")\n .project(serviceProject.projectId())\n .ipCidrRange(\"10.0.1.0/24\")\n .region(\"us-central1\")\n .network(ilbNetwork.id())\n .build());\n\n // health check\n var default_ = new HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"l7-ilb-hc\")\n .project(serviceProject.projectId())\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // backend service\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder()\n .name(\"l7-ilb-backend-subnet\")\n .project(serviceProject.projectId())\n .region(\"us-central1\")\n .healthChecks(default_.id())\n .build());\n\n // forwarding rule\n var forwardingRule = new ForwardingRule(\"forwardingRule\", ForwardingRuleArgs.builder()\n .name(\"l7-ilb-forwarding-rule\")\n .project(serviceProject.projectId())\n .region(\"us-central1\")\n .ipVersion(\"IPV4\")\n .loadBalancingScheme(\"INTERNAL\")\n .allPorts(true)\n .backendService(backend.id())\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .build());\n\n // discovered service block\n final var catalog-service = ApphubFunctions.getDiscoveredService(GetDiscoveredServiceArgs.builder()\n .location(\"us-central1\")\n .serviceUri(forwardingRule.id().applyValue(id -\u003e String.format(\"//compute.googleapis.com/%s\", id)))\n .build());\n\n var wait120sForResourceIngestion = new Sleep(\"wait120sForResourceIngestion\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(forwardingRule)\n .build());\n\n var example = new Service(\"example\", ServiceArgs.builder()\n .location(\"us-central1\")\n .applicationId(application.applicationId())\n .serviceId(forwardingRule.name())\n .discoveredService(catalog_service.applyValue(catalog_service -\u003e catalog_service.name()))\n .displayName(\"Example Service Full\")\n .description(\"Register service for testing\")\n .attributes(ServiceAttributesArgs.builder()\n .environment(ServiceAttributesEnvironmentArgs.builder()\n .type(\"STAGING\")\n .build())\n .criticality(ServiceAttributesCriticalityArgs.builder()\n .type(\"MISSION_CRITICAL\")\n .build())\n .businessOwners(ServiceAttributesBusinessOwnerArgs.builder()\n .displayName(\"Alice\")\n .email(\"alice@google.com\")\n .build())\n .developerOwners(ServiceAttributesDeveloperOwnerArgs.builder()\n .displayName(\"Bob\")\n .email(\"bob@google.com\")\n .build())\n .operatorOwners(ServiceAttributesOperatorOwnerArgs.builder()\n .displayName(\"Charlie\")\n .email(\"charlie@google.com\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n application:\n type: gcp:apphub:Application\n properties:\n location: us-central1\n applicationId: example-application-1\n scope:\n type: REGIONAL\n serviceProject:\n type: gcp:organizations:Project\n name: service_project\n properties:\n projectId: project-1\n name: Service Project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n # Enable Compute API\n computeServiceProject:\n type: gcp:projects:Service\n name: compute_service_project\n properties:\n project: ${serviceProject.projectId}\n service: compute.googleapis.com\n wait120s:\n type: time:sleep\n name: wait_120s\n properties:\n createDuration: 120s\n options:\n dependson:\n - ${computeServiceProject}\n serviceProjectAttachment:\n type: gcp:apphub:ServiceProjectAttachment\n name: service_project_attachment\n properties:\n serviceProjectAttachmentId: ${serviceProject.projectId}\n options:\n dependson:\n - ${wait120s}\n wait120sForResourceIngestion:\n type: time:sleep\n name: wait_120s_for_resource_ingestion\n properties:\n createDuration: 120s\n options:\n dependson:\n - ${forwardingRule}\n example:\n type: gcp:apphub:Service\n properties:\n location: us-central1\n applicationId: ${application.applicationId}\n serviceId: ${forwardingRule.name}\n discoveredService: ${[\"catalog-service\"].name}\n displayName: Example Service Full\n description: Register service for testing\n attributes:\n environment:\n type: STAGING\n criticality:\n type: MISSION_CRITICAL\n businessOwners:\n - displayName: Alice\n email: alice@google.com\n developerOwners:\n - displayName: Bob\n email: bob@google.com\n operatorOwners:\n - displayName: Charlie\n email: charlie@google.com\n # VPC network\n ilbNetwork:\n type: gcp:compute:Network\n name: ilb_network\n properties:\n name: l7-ilb-network\n project: ${serviceProject.projectId}\n autoCreateSubnetworks: false\n options:\n dependson:\n - ${wait120s}\n # backend subnet\n ilbSubnet:\n type: gcp:compute:Subnetwork\n name: ilb_subnet\n properties:\n name: l7-ilb-subnet\n project: ${serviceProject.projectId}\n ipCidrRange: 10.0.1.0/24\n region: us-central1\n network: ${ilbNetwork.id}\n # forwarding rule\n forwardingRule:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule\n properties:\n name: l7-ilb-forwarding-rule\n project: ${serviceProject.projectId}\n region: us-central1\n ipVersion: IPV4\n loadBalancingScheme: INTERNAL\n allPorts: true\n backendService: ${backend.id}\n network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n # backend service\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n name: l7-ilb-backend-subnet\n project: ${serviceProject.projectId}\n region: us-central1\n healthChecks: ${default.id}\n # health check\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: l7-ilb-hc\n project: ${serviceProject.projectId}\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n options:\n dependson:\n - ${wait120s}\nvariables:\n # discovered service block\n catalog-service:\n fn::invoke:\n Function: gcp:apphub:getDiscoveredService\n Arguments:\n location: us-central1\n serviceUri: //compute.googleapis.com/${forwardingRule.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/applications/{{application_id}}/services/{{service_id}}`\n\n* `{{project}}/{{location}}/{{application_id}}/{{service_id}}`\n\n* `{{location}}/{{application_id}}/{{service_id}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apphub/service:Service default projects/{{project}}/locations/{{location}}/applications/{{application_id}}/services/{{service_id}}\n```\n\n```sh\n$ pulumi import gcp:apphub/service:Service default {{project}}/{{location}}/{{application_id}}/{{service_id}}\n```\n\n```sh\n$ pulumi import gcp:apphub/service:Service default {{location}}/{{application_id}}/{{service_id}}\n```\n\n", "properties": { "applicationId": { "type": "string", @@ -119638,7 +119638,7 @@ } }, "gcp:applicationintegration/authConfig:AuthConfig": { - "description": "The AuthConfig resource use to hold channels and connection config data.\n\n\nTo get more information about AuthConfig, see:\n\n* [API documentation](https://cloud.google.com/application-integration/docs/reference/rest/v1/projects.locations.authConfigs)\n* How-to Guides\n * [Manage authentication profiles](https://cloud.google.com/application-integration/docs/configure-authentication-profiles)\n * [Official Documentation](https://cloud.google.com/application-integration/docs/overview)\n\n## Example Usage\n\n### Integrations Auth Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst client = new gcp.applicationintegration.Client(\"client\", {location: \"us-west1\"});\nconst basicExample = new gcp.applicationintegration.AuthConfig(\"basic_example\", {\n location: \"us-west1\",\n displayName: \"test-authconfig\",\n description: \"Test auth config created via terraform\",\n decryptedCredential: {\n credentialType: \"USERNAME_AND_PASSWORD\",\n usernameAndPassword: {\n username: \"test-username\",\n password: \"test-password\",\n },\n },\n}, {\n dependsOn: [client],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nclient = gcp.applicationintegration.Client(\"client\", location=\"us-west1\")\nbasic_example = gcp.applicationintegration.AuthConfig(\"basic_example\",\n location=\"us-west1\",\n display_name=\"test-authconfig\",\n description=\"Test auth config created via terraform\",\n decrypted_credential={\n \"credentialType\": \"USERNAME_AND_PASSWORD\",\n \"usernameAndPassword\": {\n \"username\": \"test-username\",\n \"password\": \"test-password\",\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[client]))\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 client = new Gcp.ApplicationIntegration.Client(\"client\", new()\n {\n Location = \"us-west1\",\n });\n\n var basicExample = new Gcp.ApplicationIntegration.AuthConfig(\"basic_example\", new()\n {\n Location = \"us-west1\",\n DisplayName = \"test-authconfig\",\n Description = \"Test auth config created via terraform\",\n DecryptedCredential = new Gcp.ApplicationIntegration.Inputs.AuthConfigDecryptedCredentialArgs\n {\n CredentialType = \"USERNAME_AND_PASSWORD\",\n UsernameAndPassword = new Gcp.ApplicationIntegration.Inputs.AuthConfigDecryptedCredentialUsernameAndPasswordArgs\n {\n Username = \"test-username\",\n Password = \"test-password\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n client,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/applicationintegration\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tclient, err := applicationintegration.NewClient(ctx, \"client\", \u0026applicationintegration.ClientArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = applicationintegration.NewAuthConfig(ctx, \"basic_example\", \u0026applicationintegration.AuthConfigArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tDisplayName: pulumi.String(\"test-authconfig\"),\n\t\t\tDescription: pulumi.String(\"Test auth config created via terraform\"),\n\t\t\tDecryptedCredential: \u0026applicationintegration.AuthConfigDecryptedCredentialArgs{\n\t\t\t\tCredentialType: pulumi.String(\"USERNAME_AND_PASSWORD\"),\n\t\t\t\tUsernameAndPassword: \u0026applicationintegration.AuthConfigDecryptedCredentialUsernameAndPasswordArgs{\n\t\t\t\t\tUsername: pulumi.String(\"test-username\"),\n\t\t\t\t\tPassword: pulumi.String(\"test-password\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tclient,\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.applicationintegration.Client;\nimport com.pulumi.gcp.applicationintegration.ClientArgs;\nimport com.pulumi.gcp.applicationintegration.AuthConfig;\nimport com.pulumi.gcp.applicationintegration.AuthConfigArgs;\nimport com.pulumi.gcp.applicationintegration.inputs.AuthConfigDecryptedCredentialArgs;\nimport com.pulumi.gcp.applicationintegration.inputs.AuthConfigDecryptedCredentialUsernameAndPasswordArgs;\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 client = new Client(\"client\", ClientArgs.builder()\n .location(\"us-west1\")\n .build());\n\n var basicExample = new AuthConfig(\"basicExample\", AuthConfigArgs.builder()\n .location(\"us-west1\")\n .displayName(\"test-authconfig\")\n .description(\"Test auth config created via terraform\")\n .decryptedCredential(AuthConfigDecryptedCredentialArgs.builder()\n .credentialType(\"USERNAME_AND_PASSWORD\")\n .usernameAndPassword(AuthConfigDecryptedCredentialUsernameAndPasswordArgs.builder()\n .username(\"test-username\")\n .password(\"test-password\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(client)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n client:\n type: gcp:applicationintegration:Client\n properties:\n location: us-west1\n basicExample:\n type: gcp:applicationintegration:AuthConfig\n name: basic_example\n properties:\n location: us-west1\n displayName: test-authconfig\n description: Test auth config created via terraform\n decryptedCredential:\n credentialType: USERNAME_AND_PASSWORD\n usernameAndPassword:\n username: test-username\n password: test-password\n options:\n dependson:\n - ${client}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAuthConfig can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AuthConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:applicationintegration/authConfig:AuthConfig default {{name}}\n```\n\n", + "description": "The AuthConfig resource use to hold channels and connection config data.\n\n\nTo get more information about AuthConfig, see:\n\n* [API documentation](https://cloud.google.com/application-integration/docs/reference/rest/v1/projects.locations.authConfigs)\n* How-to Guides\n * [Manage authentication profiles](https://cloud.google.com/application-integration/docs/configure-authentication-profiles)\n * [Official Documentation](https://cloud.google.com/application-integration/docs/overview)\n\n## Example Usage\n\n### Integrations Auth Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst client = new gcp.applicationintegration.Client(\"client\", {location: \"us-west1\"});\nconst basicExample = new gcp.applicationintegration.AuthConfig(\"basic_example\", {\n location: \"us-west1\",\n displayName: \"test-authconfig\",\n description: \"Test auth config created via terraform\",\n decryptedCredential: {\n credentialType: \"USERNAME_AND_PASSWORD\",\n usernameAndPassword: {\n username: \"test-username\",\n password: \"test-password\",\n },\n },\n}, {\n dependsOn: [client],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nclient = gcp.applicationintegration.Client(\"client\", location=\"us-west1\")\nbasic_example = gcp.applicationintegration.AuthConfig(\"basic_example\",\n location=\"us-west1\",\n display_name=\"test-authconfig\",\n description=\"Test auth config created via terraform\",\n decrypted_credential={\n \"credential_type\": \"USERNAME_AND_PASSWORD\",\n \"username_and_password\": {\n \"username\": \"test-username\",\n \"password\": \"test-password\",\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[client]))\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 client = new Gcp.ApplicationIntegration.Client(\"client\", new()\n {\n Location = \"us-west1\",\n });\n\n var basicExample = new Gcp.ApplicationIntegration.AuthConfig(\"basic_example\", new()\n {\n Location = \"us-west1\",\n DisplayName = \"test-authconfig\",\n Description = \"Test auth config created via terraform\",\n DecryptedCredential = new Gcp.ApplicationIntegration.Inputs.AuthConfigDecryptedCredentialArgs\n {\n CredentialType = \"USERNAME_AND_PASSWORD\",\n UsernameAndPassword = new Gcp.ApplicationIntegration.Inputs.AuthConfigDecryptedCredentialUsernameAndPasswordArgs\n {\n Username = \"test-username\",\n Password = \"test-password\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n client,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/applicationintegration\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tclient, err := applicationintegration.NewClient(ctx, \"client\", \u0026applicationintegration.ClientArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = applicationintegration.NewAuthConfig(ctx, \"basic_example\", \u0026applicationintegration.AuthConfigArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tDisplayName: pulumi.String(\"test-authconfig\"),\n\t\t\tDescription: pulumi.String(\"Test auth config created via terraform\"),\n\t\t\tDecryptedCredential: \u0026applicationintegration.AuthConfigDecryptedCredentialArgs{\n\t\t\t\tCredentialType: pulumi.String(\"USERNAME_AND_PASSWORD\"),\n\t\t\t\tUsernameAndPassword: \u0026applicationintegration.AuthConfigDecryptedCredentialUsernameAndPasswordArgs{\n\t\t\t\t\tUsername: pulumi.String(\"test-username\"),\n\t\t\t\t\tPassword: pulumi.String(\"test-password\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tclient,\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.applicationintegration.Client;\nimport com.pulumi.gcp.applicationintegration.ClientArgs;\nimport com.pulumi.gcp.applicationintegration.AuthConfig;\nimport com.pulumi.gcp.applicationintegration.AuthConfigArgs;\nimport com.pulumi.gcp.applicationintegration.inputs.AuthConfigDecryptedCredentialArgs;\nimport com.pulumi.gcp.applicationintegration.inputs.AuthConfigDecryptedCredentialUsernameAndPasswordArgs;\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 client = new Client(\"client\", ClientArgs.builder()\n .location(\"us-west1\")\n .build());\n\n var basicExample = new AuthConfig(\"basicExample\", AuthConfigArgs.builder()\n .location(\"us-west1\")\n .displayName(\"test-authconfig\")\n .description(\"Test auth config created via terraform\")\n .decryptedCredential(AuthConfigDecryptedCredentialArgs.builder()\n .credentialType(\"USERNAME_AND_PASSWORD\")\n .usernameAndPassword(AuthConfigDecryptedCredentialUsernameAndPasswordArgs.builder()\n .username(\"test-username\")\n .password(\"test-password\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(client)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n client:\n type: gcp:applicationintegration:Client\n properties:\n location: us-west1\n basicExample:\n type: gcp:applicationintegration:AuthConfig\n name: basic_example\n properties:\n location: us-west1\n displayName: test-authconfig\n description: Test auth config created via terraform\n decryptedCredential:\n credentialType: USERNAME_AND_PASSWORD\n usernameAndPassword:\n username: test-username\n password: test-password\n options:\n dependson:\n - ${client}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAuthConfig can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AuthConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:applicationintegration/authConfig:AuthConfig default {{name}}\n```\n\n", "properties": { "certificateId": { "type": "string", @@ -119880,7 +119880,7 @@ } }, "gcp:applicationintegration/client:Client": { - "description": "Application Integration Client.\n\n\nTo get more information about Client, see:\n\n* [API documentation](https://cloud.google.com/application-integration/docs/reference/rest/v1/projects.locations.clients)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/application-integration/docs/overview)\n * [Set up Application Integration](https://cloud.google.com/application-integration/docs/setup-application-integration)\n\n## Example Usage\n\n### Integrations Client Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.applicationintegration.Client(\"example\", {location: \"us-central1\"});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.applicationintegration.Client(\"example\", 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 example = new Gcp.ApplicationIntegration.Client(\"example\", new()\n {\n Location = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/applicationintegration\"\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 := applicationintegration.NewClient(ctx, \"example\", \u0026applicationintegration.ClientArgs{\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.applicationintegration.Client;\nimport com.pulumi.gcp.applicationintegration.ClientArgs;\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 Client(\"example\", ClientArgs.builder()\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:applicationintegration:Client\n properties:\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Integrations Client Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testProject = gcp.organizations.getProject({});\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"my-keyring\",\n location: \"us-east1\",\n});\nconst cryptokey = new gcp.kms.CryptoKey(\"cryptokey\", {\n name: \"crypto-key-example\",\n keyRing: keyring.id,\n rotationPeriod: \"7776000s\",\n});\nconst testKey = new gcp.kms.CryptoKeyVersion(\"test_key\", {cryptoKey: cryptokey.id});\nconst serviceAccount = new gcp.serviceaccount.Account(\"service_account\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst example = new gcp.applicationintegration.Client(\"example\", {\n location: \"us-east1\",\n createSampleIntegrations: true,\n runAsServiceAccount: serviceAccount.email,\n cloudKmsConfig: {\n kmsLocation: \"us-east1\",\n kmsRing: keyring.id,\n key: cryptokey.id,\n keyVersion: testKey.id,\n kmsProjectId: testProject.then(testProject =\u003e testProject.projectId),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_project = gcp.organizations.get_project()\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"my-keyring\",\n location=\"us-east1\")\ncryptokey = gcp.kms.CryptoKey(\"cryptokey\",\n name=\"crypto-key-example\",\n key_ring=keyring.id,\n rotation_period=\"7776000s\")\ntest_key = gcp.kms.CryptoKeyVersion(\"test_key\", crypto_key=cryptokey.id)\nservice_account = gcp.serviceaccount.Account(\"service_account\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nexample = gcp.applicationintegration.Client(\"example\",\n location=\"us-east1\",\n create_sample_integrations=True,\n run_as_service_account=service_account.email,\n cloud_kms_config={\n \"kmsLocation\": \"us-east1\",\n \"kmsRing\": keyring.id,\n \"key\": cryptokey.id,\n \"keyVersion\": test_key.id,\n \"kmsProjectId\": test_project.project_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 testProject = Gcp.Organizations.GetProject.Invoke();\n\n var keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"my-keyring\",\n Location = \"us-east1\",\n });\n\n var cryptokey = new Gcp.Kms.CryptoKey(\"cryptokey\", new()\n {\n Name = \"crypto-key-example\",\n KeyRing = keyring.Id,\n RotationPeriod = \"7776000s\",\n });\n\n var testKey = new Gcp.Kms.CryptoKeyVersion(\"test_key\", new()\n {\n CryptoKey = cryptokey.Id,\n });\n\n var serviceAccount = new Gcp.ServiceAccount.Account(\"service_account\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var example = new Gcp.ApplicationIntegration.Client(\"example\", new()\n {\n Location = \"us-east1\",\n CreateSampleIntegrations = true,\n RunAsServiceAccount = serviceAccount.Email,\n CloudKmsConfig = new Gcp.ApplicationIntegration.Inputs.ClientCloudKmsConfigArgs\n {\n KmsLocation = \"us-east1\",\n KmsRing = keyring.Id,\n Key = cryptokey.Id,\n KeyVersion = testKey.Id,\n KmsProjectId = testProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/applicationintegration\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttestProject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyring, err := kms.NewKeyRing(ctx, \"keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t})\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\tName: pulumi.String(\"crypto-key-example\"),\n\t\t\tKeyRing: keyring.ID(),\n\t\t\tRotationPeriod: pulumi.String(\"7776000s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestKey, err := kms.NewCryptoKeyVersion(ctx, \"test_key\", \u0026kms.CryptoKeyVersionArgs{\n\t\t\tCryptoKey: cryptokey.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceAccount, err := serviceaccount.NewAccount(ctx, \"service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = applicationintegration.NewClient(ctx, \"example\", \u0026applicationintegration.ClientArgs{\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tCreateSampleIntegrations: pulumi.Bool(true),\n\t\t\tRunAsServiceAccount: serviceAccount.Email,\n\t\t\tCloudKmsConfig: \u0026applicationintegration.ClientCloudKmsConfigArgs{\n\t\t\t\tKmsLocation: pulumi.String(\"us-east1\"),\n\t\t\t\tKmsRing: keyring.ID(),\n\t\t\t\tKey: cryptokey.ID(),\n\t\t\t\tKeyVersion: testKey.ID(),\n\t\t\t\tKmsProjectId: pulumi.String(testProject.ProjectId),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.kms.CryptoKeyVersion;\nimport com.pulumi.gcp.kms.CryptoKeyVersionArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.applicationintegration.Client;\nimport com.pulumi.gcp.applicationintegration.ClientArgs;\nimport com.pulumi.gcp.applicationintegration.inputs.ClientCloudKmsConfigArgs;\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 testProject = OrganizationsFunctions.getProject();\n\n var keyring = new KeyRing(\"keyring\", KeyRingArgs.builder()\n .name(\"my-keyring\")\n .location(\"us-east1\")\n .build());\n\n var cryptokey = new CryptoKey(\"cryptokey\", CryptoKeyArgs.builder()\n .name(\"crypto-key-example\")\n .keyRing(keyring.id())\n .rotationPeriod(\"7776000s\")\n .build());\n\n var testKey = new CryptoKeyVersion(\"testKey\", CryptoKeyVersionArgs.builder()\n .cryptoKey(cryptokey.id())\n .build());\n\n var serviceAccount = new Account(\"serviceAccount\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var example = new Client(\"example\", ClientArgs.builder()\n .location(\"us-east1\")\n .createSampleIntegrations(true)\n .runAsServiceAccount(serviceAccount.email())\n .cloudKmsConfig(ClientCloudKmsConfigArgs.builder()\n .kmsLocation(\"us-east1\")\n .kmsRing(keyring.id())\n .key(cryptokey.id())\n .keyVersion(testKey.id())\n .kmsProjectId(testProject.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: my-keyring\n location: us-east1\n cryptokey:\n type: gcp:kms:CryptoKey\n properties:\n name: crypto-key-example\n keyRing: ${keyring.id}\n rotationPeriod: 7776000s\n testKey:\n type: gcp:kms:CryptoKeyVersion\n name: test_key\n properties:\n cryptoKey: ${cryptokey.id}\n serviceAccount:\n type: gcp:serviceaccount:Account\n name: service_account\n properties:\n accountId: service-account-id\n displayName: Service Account\n example:\n type: gcp:applicationintegration:Client\n properties:\n location: us-east1\n createSampleIntegrations: true\n runAsServiceAccount: ${serviceAccount.email}\n cloudKmsConfig:\n kmsLocation: us-east1\n kmsRing: ${keyring.id}\n key: ${cryptokey.id}\n keyVersion: ${testKey.id}\n kmsProjectId: ${testProject.projectId}\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nClient can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clients`\n\n* `{{project}}/{{location}}`\n\n* `{{location}}`\n\nWhen using the `pulumi import` command, Client can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:applicationintegration/client:Client default projects/{{project}}/locations/{{location}}/clients\n```\n\n```sh\n$ pulumi import gcp:applicationintegration/client:Client default {{project}}/{{location}}\n```\n\n```sh\n$ pulumi import gcp:applicationintegration/client:Client default {{location}}\n```\n\n", + "description": "Application Integration Client.\n\n\nTo get more information about Client, see:\n\n* [API documentation](https://cloud.google.com/application-integration/docs/reference/rest/v1/projects.locations.clients)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/application-integration/docs/overview)\n * [Set up Application Integration](https://cloud.google.com/application-integration/docs/setup-application-integration)\n\n## Example Usage\n\n### Integrations Client Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.applicationintegration.Client(\"example\", {location: \"us-central1\"});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.applicationintegration.Client(\"example\", 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 example = new Gcp.ApplicationIntegration.Client(\"example\", new()\n {\n Location = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/applicationintegration\"\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 := applicationintegration.NewClient(ctx, \"example\", \u0026applicationintegration.ClientArgs{\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.applicationintegration.Client;\nimport com.pulumi.gcp.applicationintegration.ClientArgs;\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 Client(\"example\", ClientArgs.builder()\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:applicationintegration:Client\n properties:\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Integrations Client Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testProject = gcp.organizations.getProject({});\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"my-keyring\",\n location: \"us-east1\",\n});\nconst cryptokey = new gcp.kms.CryptoKey(\"cryptokey\", {\n name: \"crypto-key-example\",\n keyRing: keyring.id,\n rotationPeriod: \"7776000s\",\n});\nconst testKey = new gcp.kms.CryptoKeyVersion(\"test_key\", {cryptoKey: cryptokey.id});\nconst serviceAccount = new gcp.serviceaccount.Account(\"service_account\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst example = new gcp.applicationintegration.Client(\"example\", {\n location: \"us-east1\",\n createSampleIntegrations: true,\n runAsServiceAccount: serviceAccount.email,\n cloudKmsConfig: {\n kmsLocation: \"us-east1\",\n kmsRing: keyring.id,\n key: cryptokey.id,\n keyVersion: testKey.id,\n kmsProjectId: testProject.then(testProject =\u003e testProject.projectId),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_project = gcp.organizations.get_project()\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"my-keyring\",\n location=\"us-east1\")\ncryptokey = gcp.kms.CryptoKey(\"cryptokey\",\n name=\"crypto-key-example\",\n key_ring=keyring.id,\n rotation_period=\"7776000s\")\ntest_key = gcp.kms.CryptoKeyVersion(\"test_key\", crypto_key=cryptokey.id)\nservice_account = gcp.serviceaccount.Account(\"service_account\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nexample = gcp.applicationintegration.Client(\"example\",\n location=\"us-east1\",\n create_sample_integrations=True,\n run_as_service_account=service_account.email,\n cloud_kms_config={\n \"kms_location\": \"us-east1\",\n \"kms_ring\": keyring.id,\n \"key\": cryptokey.id,\n \"key_version\": test_key.id,\n \"kms_project_id\": test_project.project_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 testProject = Gcp.Organizations.GetProject.Invoke();\n\n var keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"my-keyring\",\n Location = \"us-east1\",\n });\n\n var cryptokey = new Gcp.Kms.CryptoKey(\"cryptokey\", new()\n {\n Name = \"crypto-key-example\",\n KeyRing = keyring.Id,\n RotationPeriod = \"7776000s\",\n });\n\n var testKey = new Gcp.Kms.CryptoKeyVersion(\"test_key\", new()\n {\n CryptoKey = cryptokey.Id,\n });\n\n var serviceAccount = new Gcp.ServiceAccount.Account(\"service_account\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var example = new Gcp.ApplicationIntegration.Client(\"example\", new()\n {\n Location = \"us-east1\",\n CreateSampleIntegrations = true,\n RunAsServiceAccount = serviceAccount.Email,\n CloudKmsConfig = new Gcp.ApplicationIntegration.Inputs.ClientCloudKmsConfigArgs\n {\n KmsLocation = \"us-east1\",\n KmsRing = keyring.Id,\n Key = cryptokey.Id,\n KeyVersion = testKey.Id,\n KmsProjectId = testProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/applicationintegration\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttestProject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyring, err := kms.NewKeyRing(ctx, \"keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t})\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\tName: pulumi.String(\"crypto-key-example\"),\n\t\t\tKeyRing: keyring.ID(),\n\t\t\tRotationPeriod: pulumi.String(\"7776000s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestKey, err := kms.NewCryptoKeyVersion(ctx, \"test_key\", \u0026kms.CryptoKeyVersionArgs{\n\t\t\tCryptoKey: cryptokey.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceAccount, err := serviceaccount.NewAccount(ctx, \"service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = applicationintegration.NewClient(ctx, \"example\", \u0026applicationintegration.ClientArgs{\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tCreateSampleIntegrations: pulumi.Bool(true),\n\t\t\tRunAsServiceAccount: serviceAccount.Email,\n\t\t\tCloudKmsConfig: \u0026applicationintegration.ClientCloudKmsConfigArgs{\n\t\t\t\tKmsLocation: pulumi.String(\"us-east1\"),\n\t\t\t\tKmsRing: keyring.ID(),\n\t\t\t\tKey: cryptokey.ID(),\n\t\t\t\tKeyVersion: testKey.ID(),\n\t\t\t\tKmsProjectId: pulumi.String(testProject.ProjectId),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.kms.CryptoKeyVersion;\nimport com.pulumi.gcp.kms.CryptoKeyVersionArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.applicationintegration.Client;\nimport com.pulumi.gcp.applicationintegration.ClientArgs;\nimport com.pulumi.gcp.applicationintegration.inputs.ClientCloudKmsConfigArgs;\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 testProject = OrganizationsFunctions.getProject();\n\n var keyring = new KeyRing(\"keyring\", KeyRingArgs.builder()\n .name(\"my-keyring\")\n .location(\"us-east1\")\n .build());\n\n var cryptokey = new CryptoKey(\"cryptokey\", CryptoKeyArgs.builder()\n .name(\"crypto-key-example\")\n .keyRing(keyring.id())\n .rotationPeriod(\"7776000s\")\n .build());\n\n var testKey = new CryptoKeyVersion(\"testKey\", CryptoKeyVersionArgs.builder()\n .cryptoKey(cryptokey.id())\n .build());\n\n var serviceAccount = new Account(\"serviceAccount\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var example = new Client(\"example\", ClientArgs.builder()\n .location(\"us-east1\")\n .createSampleIntegrations(true)\n .runAsServiceAccount(serviceAccount.email())\n .cloudKmsConfig(ClientCloudKmsConfigArgs.builder()\n .kmsLocation(\"us-east1\")\n .kmsRing(keyring.id())\n .key(cryptokey.id())\n .keyVersion(testKey.id())\n .kmsProjectId(testProject.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: my-keyring\n location: us-east1\n cryptokey:\n type: gcp:kms:CryptoKey\n properties:\n name: crypto-key-example\n keyRing: ${keyring.id}\n rotationPeriod: 7776000s\n testKey:\n type: gcp:kms:CryptoKeyVersion\n name: test_key\n properties:\n cryptoKey: ${cryptokey.id}\n serviceAccount:\n type: gcp:serviceaccount:Account\n name: service_account\n properties:\n accountId: service-account-id\n displayName: Service Account\n example:\n type: gcp:applicationintegration:Client\n properties:\n location: us-east1\n createSampleIntegrations: true\n runAsServiceAccount: ${serviceAccount.email}\n cloudKmsConfig:\n kmsLocation: us-east1\n kmsRing: ${keyring.id}\n key: ${cryptokey.id}\n keyVersion: ${testKey.id}\n kmsProjectId: ${testProject.projectId}\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nClient can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clients`\n\n* `{{project}}/{{location}}`\n\n* `{{location}}`\n\nWhen using the `pulumi import` command, Client can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:applicationintegration/client:Client default projects/{{project}}/locations/{{location}}/clients\n```\n\n```sh\n$ pulumi import gcp:applicationintegration/client:Client default {{project}}/{{location}}\n```\n\n```sh\n$ pulumi import gcp:applicationintegration/client:Client default {{location}}\n```\n\n", "properties": { "cloudKmsConfig": { "$ref": "#/types/gcp:applicationintegration/ClientCloudKmsConfig:ClientCloudKmsConfig", @@ -120004,7 +120004,7 @@ } }, "gcp:artifactregistry/repository:Repository": { - "description": "A repository for storing artifacts\n\n\nTo get more information about Repository, see:\n\n* [API documentation](https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations.repositories)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/artifact-registry/docs/overview)\n\n## Example Usage\n\n### Artifact Registry Repository Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository\",\n format: \"DOCKER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n format=\"DOCKER\")\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_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Format = \"DOCKER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\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 := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\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.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\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_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .format(\"DOCKER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository\n format: DOCKER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Docker\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository\",\n format: \"DOCKER\",\n dockerConfig: {\n immutableTags: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n format=\"DOCKER\",\n docker_config={\n \"immutableTags\": 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 my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Format = \"DOCKER\",\n DockerConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryDockerConfigArgs\n {\n ImmutableTags = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\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 := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tDockerConfig: \u0026artifactregistry.RepositoryDockerConfigArgs{\n\t\t\t\tImmutableTags: 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.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryDockerConfigArgs;\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_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .format(\"DOCKER\")\n .dockerConfig(RepositoryDockerConfigArgs.builder()\n .immutableTags(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository\n format: DOCKER\n dockerConfig:\n immutableTags: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"kms-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository with cmek\",\n format: \"DOCKER\",\n kmsKeyName: \"kms-key\",\n}, {\n dependsOn: [cryptoKey],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"kms-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository with cmek\",\n format=\"DOCKER\",\n kms_key_name=\"kms-key\",\n opts = pulumi.ResourceOptions(depends_on=[crypto_key]))\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 cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"kms-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository with cmek\",\n Format = \"DOCKER\",\n KmsKeyName = \"kms-key\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKey,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tcryptoKey, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository with cmek\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tKmsKeyName: pulumi.String(\"kms-key\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKey,\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.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\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 cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository with cmek\")\n .format(\"DOCKER\")\n .kmsKeyName(\"kms-key\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKey)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository with cmek\n format: DOCKER\n kmsKeyName: kms-key\n options:\n dependson:\n - ${cryptoKey}\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: kms-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Virtual\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo_upstream_1 = new gcp.artifactregistry.Repository(\"my-repo-upstream-1\", {\n location: \"us-central1\",\n repositoryId: \"my-repository-upstream-1\",\n description: \"example docker repository (upstream source) 1\",\n format: \"DOCKER\",\n});\nconst my_repo_upstream_2 = new gcp.artifactregistry.Repository(\"my-repo-upstream-2\", {\n location: \"us-central1\",\n repositoryId: \"my-repository-upstream-2\",\n description: \"example docker repository (upstream source) 2\",\n format: \"DOCKER\",\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example virtual docker repository\",\n format: \"DOCKER\",\n mode: \"VIRTUAL_REPOSITORY\",\n virtualRepositoryConfig: {\n upstreamPolicies: [\n {\n id: \"my-repository-upstream-1\",\n repository: my_repo_upstream_1.id,\n priority: 20,\n },\n {\n id: \"my-repository-upstream-2\",\n repository: my_repo_upstream_2.id,\n priority: 10,\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo_upstream_1 = gcp.artifactregistry.Repository(\"my-repo-upstream-1\",\n location=\"us-central1\",\n repository_id=\"my-repository-upstream-1\",\n description=\"example docker repository (upstream source) 1\",\n format=\"DOCKER\")\nmy_repo_upstream_2 = gcp.artifactregistry.Repository(\"my-repo-upstream-2\",\n location=\"us-central1\",\n repository_id=\"my-repository-upstream-2\",\n description=\"example docker repository (upstream source) 2\",\n format=\"DOCKER\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example virtual docker repository\",\n format=\"DOCKER\",\n mode=\"VIRTUAL_REPOSITORY\",\n virtual_repository_config={\n \"upstreamPolicies\": [\n {\n \"id\": \"my-repository-upstream-1\",\n \"repository\": my_repo_upstream_1.id,\n \"priority\": 20,\n },\n {\n \"id\": \"my-repository-upstream-2\",\n \"repository\": my_repo_upstream_2.id,\n \"priority\": 10,\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 my_repo_upstream_1 = new Gcp.ArtifactRegistry.Repository(\"my-repo-upstream-1\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository-upstream-1\",\n Description = \"example docker repository (upstream source) 1\",\n Format = \"DOCKER\",\n });\n\n var my_repo_upstream_2 = new Gcp.ArtifactRegistry.Repository(\"my-repo-upstream-2\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository-upstream-2\",\n Description = \"example docker repository (upstream source) 2\",\n Format = \"DOCKER\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example virtual docker repository\",\n Format = \"DOCKER\",\n Mode = \"VIRTUAL_REPOSITORY\",\n VirtualRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigArgs\n {\n UpstreamPolicies = new[]\n {\n new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs\n {\n Id = \"my-repository-upstream-1\",\n Repository = my_repo_upstream_1.Id,\n Priority = 20,\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs\n {\n Id = \"my-repository-upstream-2\",\n Repository = my_repo_upstream_2.Id,\n Priority = 10,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\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 := artifactregistry.NewRepository(ctx, \"my-repo-upstream-1\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository-upstream-1\"),\n\t\t\tDescription: pulumi.String(\"example docker repository (upstream source) 1\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo-upstream-2\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository-upstream-2\"),\n\t\t\tDescription: pulumi.String(\"example docker repository (upstream source) 2\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example virtual docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"VIRTUAL_REPOSITORY\"),\n\t\t\tVirtualRepositoryConfig: \u0026artifactregistry.RepositoryVirtualRepositoryConfigArgs{\n\t\t\t\tUpstreamPolicies: artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArray{\n\t\t\t\t\t\u0026artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs{\n\t\t\t\t\t\tId: pulumi.String(\"my-repository-upstream-1\"),\n\t\t\t\t\t\tRepository: my_repo_upstream_1.ID(),\n\t\t\t\t\t\tPriority: pulumi.Int(20),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs{\n\t\t\t\t\t\tId: pulumi.String(\"my-repository-upstream-2\"),\n\t\t\t\t\t\tRepository: my_repo_upstream_2.ID(),\n\t\t\t\t\t\tPriority: pulumi.Int(10),\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.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryVirtualRepositoryConfigArgs;\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_repo_upstream_1 = new Repository(\"my-repo-upstream-1\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository-upstream-1\")\n .description(\"example docker repository (upstream source) 1\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo_upstream_2 = new Repository(\"my-repo-upstream-2\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository-upstream-2\")\n .description(\"example docker repository (upstream source) 2\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example virtual docker repository\")\n .format(\"DOCKER\")\n .mode(\"VIRTUAL_REPOSITORY\")\n .virtualRepositoryConfig(RepositoryVirtualRepositoryConfigArgs.builder()\n .upstreamPolicies( \n RepositoryVirtualRepositoryConfigUpstreamPolicyArgs.builder()\n .id(\"my-repository-upstream-1\")\n .repository(my_repo_upstream_1.id())\n .priority(20)\n .build(),\n RepositoryVirtualRepositoryConfigUpstreamPolicyArgs.builder()\n .id(\"my-repository-upstream-2\")\n .repository(my_repo_upstream_2.id())\n .priority(10)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo-upstream-1:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository-upstream-1\n description: example docker repository (upstream source) 1\n format: DOCKER\n my-repo-upstream-2:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository-upstream-2\n description: example docker repository (upstream source) 2\n format: DOCKER\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example virtual docker repository\n format: DOCKER\n mode: VIRTUAL_REPOSITORY\n virtualRepositoryConfig:\n upstreamPolicies:\n - id: my-repository-upstream-1\n repository: ${[\"my-repo-upstream-1\"].id}\n priority: 20\n - id: my-repository-upstream-2\n repository: ${[\"my-repo-upstream-2\"].id}\n priority: 10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example remote docker repository\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"docker hub\",\n dockerRepository: {\n publicRepository: \"DOCKER_HUB\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example remote docker repository\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"docker hub\",\n \"dockerRepository\": {\n \"publicRepository\": \"DOCKER_HUB\",\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 my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example remote docker repository\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"docker hub\",\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n PublicRepository = \"DOCKER_HUB\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\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 := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example remote docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"docker hub\"),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tPublicRepository: pulumi.String(\"DOCKER_HUB\"),\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.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\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_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example remote docker repository\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"docker hub\")\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .publicRepository(\"DOCKER_HUB\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example remote docker repository\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: docker hub\n dockerRepository:\n publicRepository: DOCKER_HUB\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Apt\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"debian-buster\",\n description: \"example remote apt repository\",\n format: \"APT\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"Debian buster remote repository\",\n aptRepository: {\n publicRepository: {\n repositoryBase: \"DEBIAN\",\n repositoryPath: \"debian/dists/buster\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"debian-buster\",\n description=\"example remote apt repository\",\n format=\"APT\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"Debian buster remote repository\",\n \"aptRepository\": {\n \"publicRepository\": {\n \"repositoryBase\": \"DEBIAN\",\n \"repositoryPath\": \"debian/dists/buster\",\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 my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"debian-buster\",\n Description = \"example remote apt repository\",\n Format = \"APT\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"Debian buster remote repository\",\n AptRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigAptRepositoryArgs\n {\n PublicRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs\n {\n RepositoryBase = \"DEBIAN\",\n RepositoryPath = \"debian/dists/buster\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\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 := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"debian-buster\"),\n\t\t\tDescription: pulumi.String(\"example remote apt repository\"),\n\t\t\tFormat: pulumi.String(\"APT\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"Debian buster remote repository\"),\n\t\t\t\tAptRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryArgs{\n\t\t\t\t\tPublicRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs{\n\t\t\t\t\t\tRepositoryBase: pulumi.String(\"DEBIAN\"),\n\t\t\t\t\t\tRepositoryPath: pulumi.String(\"debian/dists/buster\"),\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.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigAptRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs;\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_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"debian-buster\")\n .description(\"example remote apt repository\")\n .format(\"APT\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"Debian buster remote repository\")\n .aptRepository(RepositoryRemoteRepositoryConfigAptRepositoryArgs.builder()\n .publicRepository(RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs.builder()\n .repositoryBase(\"DEBIAN\")\n .repositoryPath(\"debian/dists/buster\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: debian-buster\n description: example remote apt repository\n format: APT\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: Debian buster remote repository\n aptRepository:\n publicRepository:\n repositoryBase: DEBIAN\n repositoryPath: debian/dists/buster\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Yum\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"rocky-9\",\n description: \"example remote yum repository\",\n format: \"YUM\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"Rocky 9 remote repository\",\n yumRepository: {\n publicRepository: {\n repositoryBase: \"ROCKY\",\n repositoryPath: \"pub/rocky/9/BaseOS/x86_64/os\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"rocky-9\",\n description=\"example remote yum repository\",\n format=\"YUM\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"Rocky 9 remote repository\",\n \"yumRepository\": {\n \"publicRepository\": {\n \"repositoryBase\": \"ROCKY\",\n \"repositoryPath\": \"pub/rocky/9/BaseOS/x86_64/os\",\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 my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"rocky-9\",\n Description = \"example remote yum repository\",\n Format = \"YUM\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"Rocky 9 remote repository\",\n YumRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigYumRepositoryArgs\n {\n PublicRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs\n {\n RepositoryBase = \"ROCKY\",\n RepositoryPath = \"pub/rocky/9/BaseOS/x86_64/os\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\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 := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"rocky-9\"),\n\t\t\tDescription: pulumi.String(\"example remote yum repository\"),\n\t\t\tFormat: pulumi.String(\"YUM\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"Rocky 9 remote repository\"),\n\t\t\t\tYumRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryArgs{\n\t\t\t\t\tPublicRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs{\n\t\t\t\t\t\tRepositoryBase: pulumi.String(\"ROCKY\"),\n\t\t\t\t\t\tRepositoryPath: pulumi.String(\"pub/rocky/9/BaseOS/x86_64/os\"),\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.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigYumRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs;\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_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"rocky-9\")\n .description(\"example remote yum repository\")\n .format(\"YUM\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"Rocky 9 remote repository\")\n .yumRepository(RepositoryRemoteRepositoryConfigYumRepositoryArgs.builder()\n .publicRepository(RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs.builder()\n .repositoryBase(\"ROCKY\")\n .repositoryPath(\"pub/rocky/9/BaseOS/x86_64/os\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: rocky-9\n description: example remote yum repository\n format: YUM\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: Rocky 9 remote repository\n yumRepository:\n publicRepository:\n repositoryBase: ROCKY\n repositoryPath: pub/rocky/9/BaseOS/x86_64/os\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Cleanup\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository with cleanup policies\",\n format: \"DOCKER\",\n cleanupPolicyDryRun: false,\n cleanupPolicies: [\n {\n id: \"delete-prerelease\",\n action: \"DELETE\",\n condition: {\n tagState: \"TAGGED\",\n tagPrefixes: [\n \"alpha\",\n \"v0\",\n ],\n olderThan: \"2592000s\",\n },\n },\n {\n id: \"keep-tagged-release\",\n action: \"KEEP\",\n condition: {\n tagState: \"TAGGED\",\n tagPrefixes: [\"release\"],\n packageNamePrefixes: [\n \"webapp\",\n \"mobile\",\n ],\n },\n },\n {\n id: \"keep-minimum-versions\",\n action: \"KEEP\",\n mostRecentVersions: {\n packageNamePrefixes: [\n \"webapp\",\n \"mobile\",\n \"sandbox\",\n ],\n keepCount: 5,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository with cleanup policies\",\n format=\"DOCKER\",\n cleanup_policy_dry_run=False,\n cleanup_policies=[\n {\n \"id\": \"delete-prerelease\",\n \"action\": \"DELETE\",\n \"condition\": {\n \"tagState\": \"TAGGED\",\n \"tagPrefixes\": [\n \"alpha\",\n \"v0\",\n ],\n \"olderThan\": \"2592000s\",\n },\n },\n {\n \"id\": \"keep-tagged-release\",\n \"action\": \"KEEP\",\n \"condition\": {\n \"tagState\": \"TAGGED\",\n \"tagPrefixes\": [\"release\"],\n \"packageNamePrefixes\": [\n \"webapp\",\n \"mobile\",\n ],\n },\n },\n {\n \"id\": \"keep-minimum-versions\",\n \"action\": \"KEEP\",\n \"mostRecentVersions\": {\n \"packageNamePrefixes\": [\n \"webapp\",\n \"mobile\",\n \"sandbox\",\n ],\n \"keepCount\": 5,\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 my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository with cleanup policies\",\n Format = \"DOCKER\",\n CleanupPolicyDryRun = false,\n CleanupPolicies = new[]\n {\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"delete-prerelease\",\n Action = \"DELETE\",\n Condition = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyConditionArgs\n {\n TagState = \"TAGGED\",\n TagPrefixes = new[]\n {\n \"alpha\",\n \"v0\",\n },\n OlderThan = \"2592000s\",\n },\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"keep-tagged-release\",\n Action = \"KEEP\",\n Condition = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyConditionArgs\n {\n TagState = \"TAGGED\",\n TagPrefixes = new[]\n {\n \"release\",\n },\n PackageNamePrefixes = new[]\n {\n \"webapp\",\n \"mobile\",\n },\n },\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"keep-minimum-versions\",\n Action = \"KEEP\",\n MostRecentVersions = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyMostRecentVersionsArgs\n {\n PackageNamePrefixes = new[]\n {\n \"webapp\",\n \"mobile\",\n \"sandbox\",\n },\n KeepCount = 5,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\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 := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository with cleanup policies\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tCleanupPolicyDryRun: pulumi.Bool(false),\n\t\t\tCleanupPolicies: artifactregistry.RepositoryCleanupPolicyArray{\n\t\t\t\t\u0026artifactregistry.RepositoryCleanupPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"delete-prerelease\"),\n\t\t\t\t\tAction: pulumi.String(\"DELETE\"),\n\t\t\t\t\tCondition: \u0026artifactregistry.RepositoryCleanupPolicyConditionArgs{\n\t\t\t\t\t\tTagState: pulumi.String(\"TAGGED\"),\n\t\t\t\t\t\tTagPrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"alpha\"),\n\t\t\t\t\t\t\tpulumi.String(\"v0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOlderThan: pulumi.String(\"2592000s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026artifactregistry.RepositoryCleanupPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"keep-tagged-release\"),\n\t\t\t\t\tAction: pulumi.String(\"KEEP\"),\n\t\t\t\t\tCondition: \u0026artifactregistry.RepositoryCleanupPolicyConditionArgs{\n\t\t\t\t\t\tTagState: pulumi.String(\"TAGGED\"),\n\t\t\t\t\t\tTagPrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"release\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPackageNamePrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"webapp\"),\n\t\t\t\t\t\t\tpulumi.String(\"mobile\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026artifactregistry.RepositoryCleanupPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"keep-minimum-versions\"),\n\t\t\t\t\tAction: pulumi.String(\"KEEP\"),\n\t\t\t\t\tMostRecentVersions: \u0026artifactregistry.RepositoryCleanupPolicyMostRecentVersionsArgs{\n\t\t\t\t\t\tPackageNamePrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"webapp\"),\n\t\t\t\t\t\t\tpulumi.String(\"mobile\"),\n\t\t\t\t\t\t\tpulumi.String(\"sandbox\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tKeepCount: pulumi.Int(5),\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.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyConditionArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyMostRecentVersionsArgs;\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_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository with cleanup policies\")\n .format(\"DOCKER\")\n .cleanupPolicyDryRun(false)\n .cleanupPolicies( \n RepositoryCleanupPolicyArgs.builder()\n .id(\"delete-prerelease\")\n .action(\"DELETE\")\n .condition(RepositoryCleanupPolicyConditionArgs.builder()\n .tagState(\"TAGGED\")\n .tagPrefixes( \n \"alpha\",\n \"v0\")\n .olderThan(\"2592000s\")\n .build())\n .build(),\n RepositoryCleanupPolicyArgs.builder()\n .id(\"keep-tagged-release\")\n .action(\"KEEP\")\n .condition(RepositoryCleanupPolicyConditionArgs.builder()\n .tagState(\"TAGGED\")\n .tagPrefixes(\"release\")\n .packageNamePrefixes( \n \"webapp\",\n \"mobile\")\n .build())\n .build(),\n RepositoryCleanupPolicyArgs.builder()\n .id(\"keep-minimum-versions\")\n .action(\"KEEP\")\n .mostRecentVersions(RepositoryCleanupPolicyMostRecentVersionsArgs.builder()\n .packageNamePrefixes( \n \"webapp\",\n \"mobile\",\n \"sandbox\")\n .keepCount(5)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository with cleanup policies\n format: DOCKER\n cleanupPolicyDryRun: false\n cleanupPolicies:\n - id: delete-prerelease\n action: DELETE\n condition:\n tagState: TAGGED\n tagPrefixes:\n - alpha\n - v0\n olderThan: 2592000s\n - id: keep-tagged-release\n action: KEEP\n condition:\n tagState: TAGGED\n tagPrefixes:\n - release\n packageNamePrefixes:\n - webapp\n - mobile\n - id: keep-minimum-versions\n action: KEEP\n mostRecentVersions:\n packageNamePrefixes:\n - webapp\n - mobile\n - sandbox\n keepCount: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Dockerhub Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-dockerhub-remote\",\n description: \"example remote dockerhub repository with credentials\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"docker hub with custom credentials\",\n disableUpstreamValidation: true,\n dockerRepository: {\n publicRepository: \"DOCKER_HUB\",\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-dockerhub-remote\",\n description=\"example remote dockerhub repository with credentials\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"docker hub with custom credentials\",\n \"disableUpstreamValidation\": True,\n \"dockerRepository\": {\n \"publicRepository\": \"DOCKER_HUB\",\n },\n \"upstreamCredentials\": {\n \"usernamePasswordCredentials\": {\n \"username\": \"remote-username\",\n \"passwordSecretVersion\": example_remote_secret_version.name,\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 project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-dockerhub-remote\",\n Description = \"example remote dockerhub repository with credentials\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"docker hub with custom credentials\",\n DisableUpstreamValidation = true,\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n PublicRepository = \"DOCKER_HUB\",\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\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/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-dockerhub-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote dockerhub repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"docker hub with custom credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tPublicRepository: pulumi.String(\"DOCKER_HUB\"),\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\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 example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-dockerhub-remote\")\n .description(\"example remote dockerhub repository with credentials\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"docker hub with custom credentials\")\n .disableUpstreamValidation(true)\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .publicRepository(\"DOCKER_HUB\")\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-dockerhub-remote\n description: example remote dockerhub repository with credentials\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: docker hub with custom credentials\n disableUpstreamValidation: true\n dockerRepository:\n publicRepository: DOCKER_HUB\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Docker Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-docker-custom-remote\",\n description: \"example remote custom docker repository with credentials\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom docker remote with credentials\",\n disableUpstreamValidation: true,\n dockerRepository: {\n customRepository: {\n uri: \"https://registry-1.docker.io\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-docker-custom-remote\",\n description=\"example remote custom docker repository with credentials\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom docker remote with credentials\",\n \"disableUpstreamValidation\": True,\n \"dockerRepository\": {\n \"customRepository\": {\n \"uri\": \"https://registry-1.docker.io\",\n },\n },\n \"upstreamCredentials\": {\n \"usernamePasswordCredentials\": {\n \"username\": \"remote-username\",\n \"passwordSecretVersion\": example_remote_secret_version.name,\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 project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-docker-custom-remote\",\n Description = \"example remote custom docker repository with credentials\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom docker remote with credentials\",\n DisableUpstreamValidation = true,\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs\n {\n Uri = \"https://registry-1.docker.io\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\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/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-docker-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom docker repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom docker remote with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://registry-1.docker.io\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\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 example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-docker-custom-remote\")\n .description(\"example remote custom docker repository with credentials\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom docker remote with credentials\")\n .disableUpstreamValidation(true)\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://registry-1.docker.io\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-docker-custom-remote\n description: example remote custom docker repository with credentials\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom docker remote with credentials\n disableUpstreamValidation: true\n dockerRepository:\n customRepository:\n uri: https://registry-1.docker.io\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Maven Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-maven-custom-remote\",\n description: \"example remote custom maven repository with credentials\",\n format: \"MAVEN\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom maven remote with credentials\",\n disableUpstreamValidation: true,\n mavenRepository: {\n customRepository: {\n uri: \"https://my.maven.registry\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-maven-custom-remote\",\n description=\"example remote custom maven repository with credentials\",\n format=\"MAVEN\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom maven remote with credentials\",\n \"disableUpstreamValidation\": True,\n \"mavenRepository\": {\n \"customRepository\": {\n \"uri\": \"https://my.maven.registry\",\n },\n },\n \"upstreamCredentials\": {\n \"usernamePasswordCredentials\": {\n \"username\": \"remote-username\",\n \"passwordSecretVersion\": example_remote_secret_version.name,\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 project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-maven-custom-remote\",\n Description = \"example remote custom maven repository with credentials\",\n Format = \"MAVEN\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom maven remote with credentials\",\n DisableUpstreamValidation = true,\n MavenRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigMavenRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs\n {\n Uri = \"https://my.maven.registry\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\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/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-maven-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom maven repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"MAVEN\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom maven remote with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tMavenRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://my.maven.registry\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigMavenRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\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 example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-maven-custom-remote\")\n .description(\"example remote custom maven repository with credentials\")\n .format(\"MAVEN\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom maven remote with credentials\")\n .disableUpstreamValidation(true)\n .mavenRepository(RepositoryRemoteRepositoryConfigMavenRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://my.maven.registry\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-maven-custom-remote\n description: example remote custom maven repository with credentials\n format: MAVEN\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom maven remote with credentials\n disableUpstreamValidation: true\n mavenRepository:\n customRepository:\n uri: https://my.maven.registry\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Npm Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-npm-custom-remote\",\n description: \"example remote custom npm repository with credentials\",\n format: \"NPM\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom npm with credentials\",\n disableUpstreamValidation: true,\n npmRepository: {\n customRepository: {\n uri: \"https://my.npm.registry\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-npm-custom-remote\",\n description=\"example remote custom npm repository with credentials\",\n format=\"NPM\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom npm with credentials\",\n \"disableUpstreamValidation\": True,\n \"npmRepository\": {\n \"customRepository\": {\n \"uri\": \"https://my.npm.registry\",\n },\n },\n \"upstreamCredentials\": {\n \"usernamePasswordCredentials\": {\n \"username\": \"remote-username\",\n \"passwordSecretVersion\": example_remote_secret_version.name,\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 project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-npm-custom-remote\",\n Description = \"example remote custom npm repository with credentials\",\n Format = \"NPM\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom npm with credentials\",\n DisableUpstreamValidation = true,\n NpmRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigNpmRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs\n {\n Uri = \"https://my.npm.registry\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\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/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-npm-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom npm repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"NPM\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom npm with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tNpmRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://my.npm.registry\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigNpmRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\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 example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-npm-custom-remote\")\n .description(\"example remote custom npm repository with credentials\")\n .format(\"NPM\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom npm with credentials\")\n .disableUpstreamValidation(true)\n .npmRepository(RepositoryRemoteRepositoryConfigNpmRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://my.npm.registry\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-npm-custom-remote\n description: example remote custom npm repository with credentials\n format: NPM\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom npm with credentials\n disableUpstreamValidation: true\n npmRepository:\n customRepository:\n uri: https://my.npm.registry\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Python Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-python-custom-remote\",\n description: \"example remote custom python repository with credentials\",\n format: \"PYTHON\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom npm with credentials\",\n disableUpstreamValidation: true,\n pythonRepository: {\n customRepository: {\n uri: \"https://my.python.registry\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-python-custom-remote\",\n description=\"example remote custom python repository with credentials\",\n format=\"PYTHON\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom npm with credentials\",\n \"disableUpstreamValidation\": True,\n \"pythonRepository\": {\n \"customRepository\": {\n \"uri\": \"https://my.python.registry\",\n },\n },\n \"upstreamCredentials\": {\n \"usernamePasswordCredentials\": {\n \"username\": \"remote-username\",\n \"passwordSecretVersion\": example_remote_secret_version.name,\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 project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-python-custom-remote\",\n Description = \"example remote custom python repository with credentials\",\n Format = \"PYTHON\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom npm with credentials\",\n DisableUpstreamValidation = true,\n PythonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigPythonRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs\n {\n Uri = \"https://my.python.registry\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\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/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-python-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom python repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"PYTHON\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom npm with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tPythonRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://my.python.registry\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\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 example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-python-custom-remote\")\n .description(\"example remote custom python repository with credentials\")\n .format(\"PYTHON\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom npm with credentials\")\n .disableUpstreamValidation(true)\n .pythonRepository(RepositoryRemoteRepositoryConfigPythonRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://my.python.registry\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-python-custom-remote\n description: example remote custom python repository with credentials\n format: PYTHON\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom npm with credentials\n disableUpstreamValidation: true\n pythonRepository:\n customRepository:\n uri: https://my.python.registry\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}`\n\n* `{{project}}/{{location}}/{{repository_id}}`\n\n* `{{location}}/{{repository_id}}`\n\n* `{{repository_id}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{project}}/{{location}}/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{location}}/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{repository_id}}\n```\n\n", + "description": "A repository for storing artifacts\n\n\nTo get more information about Repository, see:\n\n* [API documentation](https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations.repositories)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/artifact-registry/docs/overview)\n\n## Example Usage\n\n### Artifact Registry Repository Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository\",\n format: \"DOCKER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n format=\"DOCKER\")\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_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Format = \"DOCKER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\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 := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\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.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\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_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .format(\"DOCKER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository\n format: DOCKER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Docker\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository\",\n format: \"DOCKER\",\n dockerConfig: {\n immutableTags: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n format=\"DOCKER\",\n docker_config={\n \"immutable_tags\": 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 my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Format = \"DOCKER\",\n DockerConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryDockerConfigArgs\n {\n ImmutableTags = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\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 := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tDockerConfig: \u0026artifactregistry.RepositoryDockerConfigArgs{\n\t\t\t\tImmutableTags: 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.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryDockerConfigArgs;\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_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .format(\"DOCKER\")\n .dockerConfig(RepositoryDockerConfigArgs.builder()\n .immutableTags(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository\n format: DOCKER\n dockerConfig:\n immutableTags: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"kms-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository with cmek\",\n format: \"DOCKER\",\n kmsKeyName: \"kms-key\",\n}, {\n dependsOn: [cryptoKey],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"kms-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository with cmek\",\n format=\"DOCKER\",\n kms_key_name=\"kms-key\",\n opts = pulumi.ResourceOptions(depends_on=[crypto_key]))\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 cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"kms-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository with cmek\",\n Format = \"DOCKER\",\n KmsKeyName = \"kms-key\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKey,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tcryptoKey, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository with cmek\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tKmsKeyName: pulumi.String(\"kms-key\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKey,\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.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\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 cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository with cmek\")\n .format(\"DOCKER\")\n .kmsKeyName(\"kms-key\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKey)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository with cmek\n format: DOCKER\n kmsKeyName: kms-key\n options:\n dependson:\n - ${cryptoKey}\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: kms-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Virtual\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo_upstream_1 = new gcp.artifactregistry.Repository(\"my-repo-upstream-1\", {\n location: \"us-central1\",\n repositoryId: \"my-repository-upstream-1\",\n description: \"example docker repository (upstream source) 1\",\n format: \"DOCKER\",\n});\nconst my_repo_upstream_2 = new gcp.artifactregistry.Repository(\"my-repo-upstream-2\", {\n location: \"us-central1\",\n repositoryId: \"my-repository-upstream-2\",\n description: \"example docker repository (upstream source) 2\",\n format: \"DOCKER\",\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example virtual docker repository\",\n format: \"DOCKER\",\n mode: \"VIRTUAL_REPOSITORY\",\n virtualRepositoryConfig: {\n upstreamPolicies: [\n {\n id: \"my-repository-upstream-1\",\n repository: my_repo_upstream_1.id,\n priority: 20,\n },\n {\n id: \"my-repository-upstream-2\",\n repository: my_repo_upstream_2.id,\n priority: 10,\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo_upstream_1 = gcp.artifactregistry.Repository(\"my-repo-upstream-1\",\n location=\"us-central1\",\n repository_id=\"my-repository-upstream-1\",\n description=\"example docker repository (upstream source) 1\",\n format=\"DOCKER\")\nmy_repo_upstream_2 = gcp.artifactregistry.Repository(\"my-repo-upstream-2\",\n location=\"us-central1\",\n repository_id=\"my-repository-upstream-2\",\n description=\"example docker repository (upstream source) 2\",\n format=\"DOCKER\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example virtual docker repository\",\n format=\"DOCKER\",\n mode=\"VIRTUAL_REPOSITORY\",\n virtual_repository_config={\n \"upstream_policies\": [\n {\n \"id\": \"my-repository-upstream-1\",\n \"repository\": my_repo_upstream_1.id,\n \"priority\": 20,\n },\n {\n \"id\": \"my-repository-upstream-2\",\n \"repository\": my_repo_upstream_2.id,\n \"priority\": 10,\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 my_repo_upstream_1 = new Gcp.ArtifactRegistry.Repository(\"my-repo-upstream-1\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository-upstream-1\",\n Description = \"example docker repository (upstream source) 1\",\n Format = \"DOCKER\",\n });\n\n var my_repo_upstream_2 = new Gcp.ArtifactRegistry.Repository(\"my-repo-upstream-2\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository-upstream-2\",\n Description = \"example docker repository (upstream source) 2\",\n Format = \"DOCKER\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example virtual docker repository\",\n Format = \"DOCKER\",\n Mode = \"VIRTUAL_REPOSITORY\",\n VirtualRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigArgs\n {\n UpstreamPolicies = new[]\n {\n new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs\n {\n Id = \"my-repository-upstream-1\",\n Repository = my_repo_upstream_1.Id,\n Priority = 20,\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs\n {\n Id = \"my-repository-upstream-2\",\n Repository = my_repo_upstream_2.Id,\n Priority = 10,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\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 := artifactregistry.NewRepository(ctx, \"my-repo-upstream-1\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository-upstream-1\"),\n\t\t\tDescription: pulumi.String(\"example docker repository (upstream source) 1\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo-upstream-2\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository-upstream-2\"),\n\t\t\tDescription: pulumi.String(\"example docker repository (upstream source) 2\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example virtual docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"VIRTUAL_REPOSITORY\"),\n\t\t\tVirtualRepositoryConfig: \u0026artifactregistry.RepositoryVirtualRepositoryConfigArgs{\n\t\t\t\tUpstreamPolicies: artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArray{\n\t\t\t\t\t\u0026artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs{\n\t\t\t\t\t\tId: pulumi.String(\"my-repository-upstream-1\"),\n\t\t\t\t\t\tRepository: my_repo_upstream_1.ID(),\n\t\t\t\t\t\tPriority: pulumi.Int(20),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs{\n\t\t\t\t\t\tId: pulumi.String(\"my-repository-upstream-2\"),\n\t\t\t\t\t\tRepository: my_repo_upstream_2.ID(),\n\t\t\t\t\t\tPriority: pulumi.Int(10),\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.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryVirtualRepositoryConfigArgs;\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_repo_upstream_1 = new Repository(\"my-repo-upstream-1\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository-upstream-1\")\n .description(\"example docker repository (upstream source) 1\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo_upstream_2 = new Repository(\"my-repo-upstream-2\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository-upstream-2\")\n .description(\"example docker repository (upstream source) 2\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example virtual docker repository\")\n .format(\"DOCKER\")\n .mode(\"VIRTUAL_REPOSITORY\")\n .virtualRepositoryConfig(RepositoryVirtualRepositoryConfigArgs.builder()\n .upstreamPolicies( \n RepositoryVirtualRepositoryConfigUpstreamPolicyArgs.builder()\n .id(\"my-repository-upstream-1\")\n .repository(my_repo_upstream_1.id())\n .priority(20)\n .build(),\n RepositoryVirtualRepositoryConfigUpstreamPolicyArgs.builder()\n .id(\"my-repository-upstream-2\")\n .repository(my_repo_upstream_2.id())\n .priority(10)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo-upstream-1:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository-upstream-1\n description: example docker repository (upstream source) 1\n format: DOCKER\n my-repo-upstream-2:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository-upstream-2\n description: example docker repository (upstream source) 2\n format: DOCKER\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example virtual docker repository\n format: DOCKER\n mode: VIRTUAL_REPOSITORY\n virtualRepositoryConfig:\n upstreamPolicies:\n - id: my-repository-upstream-1\n repository: ${[\"my-repo-upstream-1\"].id}\n priority: 20\n - id: my-repository-upstream-2\n repository: ${[\"my-repo-upstream-2\"].id}\n priority: 10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example remote docker repository\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"docker hub\",\n dockerRepository: {\n publicRepository: \"DOCKER_HUB\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example remote docker repository\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"docker hub\",\n \"docker_repository\": {\n \"public_repository\": \"DOCKER_HUB\",\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 my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example remote docker repository\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"docker hub\",\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n PublicRepository = \"DOCKER_HUB\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\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 := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example remote docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"docker hub\"),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tPublicRepository: pulumi.String(\"DOCKER_HUB\"),\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.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\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_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example remote docker repository\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"docker hub\")\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .publicRepository(\"DOCKER_HUB\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example remote docker repository\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: docker hub\n dockerRepository:\n publicRepository: DOCKER_HUB\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Apt\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"debian-buster\",\n description: \"example remote apt repository\",\n format: \"APT\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"Debian buster remote repository\",\n aptRepository: {\n publicRepository: {\n repositoryBase: \"DEBIAN\",\n repositoryPath: \"debian/dists/buster\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"debian-buster\",\n description=\"example remote apt repository\",\n format=\"APT\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"Debian buster remote repository\",\n \"apt_repository\": {\n \"public_repository\": {\n \"repository_base\": \"DEBIAN\",\n \"repository_path\": \"debian/dists/buster\",\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 my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"debian-buster\",\n Description = \"example remote apt repository\",\n Format = \"APT\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"Debian buster remote repository\",\n AptRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigAptRepositoryArgs\n {\n PublicRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs\n {\n RepositoryBase = \"DEBIAN\",\n RepositoryPath = \"debian/dists/buster\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\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 := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"debian-buster\"),\n\t\t\tDescription: pulumi.String(\"example remote apt repository\"),\n\t\t\tFormat: pulumi.String(\"APT\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"Debian buster remote repository\"),\n\t\t\t\tAptRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryArgs{\n\t\t\t\t\tPublicRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs{\n\t\t\t\t\t\tRepositoryBase: pulumi.String(\"DEBIAN\"),\n\t\t\t\t\t\tRepositoryPath: pulumi.String(\"debian/dists/buster\"),\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.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigAptRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs;\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_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"debian-buster\")\n .description(\"example remote apt repository\")\n .format(\"APT\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"Debian buster remote repository\")\n .aptRepository(RepositoryRemoteRepositoryConfigAptRepositoryArgs.builder()\n .publicRepository(RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs.builder()\n .repositoryBase(\"DEBIAN\")\n .repositoryPath(\"debian/dists/buster\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: debian-buster\n description: example remote apt repository\n format: APT\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: Debian buster remote repository\n aptRepository:\n publicRepository:\n repositoryBase: DEBIAN\n repositoryPath: debian/dists/buster\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Yum\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"rocky-9\",\n description: \"example remote yum repository\",\n format: \"YUM\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"Rocky 9 remote repository\",\n yumRepository: {\n publicRepository: {\n repositoryBase: \"ROCKY\",\n repositoryPath: \"pub/rocky/9/BaseOS/x86_64/os\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"rocky-9\",\n description=\"example remote yum repository\",\n format=\"YUM\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"Rocky 9 remote repository\",\n \"yum_repository\": {\n \"public_repository\": {\n \"repository_base\": \"ROCKY\",\n \"repository_path\": \"pub/rocky/9/BaseOS/x86_64/os\",\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 my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"rocky-9\",\n Description = \"example remote yum repository\",\n Format = \"YUM\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"Rocky 9 remote repository\",\n YumRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigYumRepositoryArgs\n {\n PublicRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs\n {\n RepositoryBase = \"ROCKY\",\n RepositoryPath = \"pub/rocky/9/BaseOS/x86_64/os\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\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 := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"rocky-9\"),\n\t\t\tDescription: pulumi.String(\"example remote yum repository\"),\n\t\t\tFormat: pulumi.String(\"YUM\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"Rocky 9 remote repository\"),\n\t\t\t\tYumRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryArgs{\n\t\t\t\t\tPublicRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs{\n\t\t\t\t\t\tRepositoryBase: pulumi.String(\"ROCKY\"),\n\t\t\t\t\t\tRepositoryPath: pulumi.String(\"pub/rocky/9/BaseOS/x86_64/os\"),\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.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigYumRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs;\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_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"rocky-9\")\n .description(\"example remote yum repository\")\n .format(\"YUM\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"Rocky 9 remote repository\")\n .yumRepository(RepositoryRemoteRepositoryConfigYumRepositoryArgs.builder()\n .publicRepository(RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs.builder()\n .repositoryBase(\"ROCKY\")\n .repositoryPath(\"pub/rocky/9/BaseOS/x86_64/os\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: rocky-9\n description: example remote yum repository\n format: YUM\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: Rocky 9 remote repository\n yumRepository:\n publicRepository:\n repositoryBase: ROCKY\n repositoryPath: pub/rocky/9/BaseOS/x86_64/os\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Cleanup\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository with cleanup policies\",\n format: \"DOCKER\",\n cleanupPolicyDryRun: false,\n cleanupPolicies: [\n {\n id: \"delete-prerelease\",\n action: \"DELETE\",\n condition: {\n tagState: \"TAGGED\",\n tagPrefixes: [\n \"alpha\",\n \"v0\",\n ],\n olderThan: \"2592000s\",\n },\n },\n {\n id: \"keep-tagged-release\",\n action: \"KEEP\",\n condition: {\n tagState: \"TAGGED\",\n tagPrefixes: [\"release\"],\n packageNamePrefixes: [\n \"webapp\",\n \"mobile\",\n ],\n },\n },\n {\n id: \"keep-minimum-versions\",\n action: \"KEEP\",\n mostRecentVersions: {\n packageNamePrefixes: [\n \"webapp\",\n \"mobile\",\n \"sandbox\",\n ],\n keepCount: 5,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository with cleanup policies\",\n format=\"DOCKER\",\n cleanup_policy_dry_run=False,\n cleanup_policies=[\n {\n \"id\": \"delete-prerelease\",\n \"action\": \"DELETE\",\n \"condition\": {\n \"tag_state\": \"TAGGED\",\n \"tag_prefixes\": [\n \"alpha\",\n \"v0\",\n ],\n \"older_than\": \"2592000s\",\n },\n },\n {\n \"id\": \"keep-tagged-release\",\n \"action\": \"KEEP\",\n \"condition\": {\n \"tag_state\": \"TAGGED\",\n \"tag_prefixes\": [\"release\"],\n \"package_name_prefixes\": [\n \"webapp\",\n \"mobile\",\n ],\n },\n },\n {\n \"id\": \"keep-minimum-versions\",\n \"action\": \"KEEP\",\n \"most_recent_versions\": {\n \"package_name_prefixes\": [\n \"webapp\",\n \"mobile\",\n \"sandbox\",\n ],\n \"keep_count\": 5,\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 my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository with cleanup policies\",\n Format = \"DOCKER\",\n CleanupPolicyDryRun = false,\n CleanupPolicies = new[]\n {\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"delete-prerelease\",\n Action = \"DELETE\",\n Condition = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyConditionArgs\n {\n TagState = \"TAGGED\",\n TagPrefixes = new[]\n {\n \"alpha\",\n \"v0\",\n },\n OlderThan = \"2592000s\",\n },\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"keep-tagged-release\",\n Action = \"KEEP\",\n Condition = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyConditionArgs\n {\n TagState = \"TAGGED\",\n TagPrefixes = new[]\n {\n \"release\",\n },\n PackageNamePrefixes = new[]\n {\n \"webapp\",\n \"mobile\",\n },\n },\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"keep-minimum-versions\",\n Action = \"KEEP\",\n MostRecentVersions = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyMostRecentVersionsArgs\n {\n PackageNamePrefixes = new[]\n {\n \"webapp\",\n \"mobile\",\n \"sandbox\",\n },\n KeepCount = 5,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\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 := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository with cleanup policies\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tCleanupPolicyDryRun: pulumi.Bool(false),\n\t\t\tCleanupPolicies: artifactregistry.RepositoryCleanupPolicyArray{\n\t\t\t\t\u0026artifactregistry.RepositoryCleanupPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"delete-prerelease\"),\n\t\t\t\t\tAction: pulumi.String(\"DELETE\"),\n\t\t\t\t\tCondition: \u0026artifactregistry.RepositoryCleanupPolicyConditionArgs{\n\t\t\t\t\t\tTagState: pulumi.String(\"TAGGED\"),\n\t\t\t\t\t\tTagPrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"alpha\"),\n\t\t\t\t\t\t\tpulumi.String(\"v0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOlderThan: pulumi.String(\"2592000s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026artifactregistry.RepositoryCleanupPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"keep-tagged-release\"),\n\t\t\t\t\tAction: pulumi.String(\"KEEP\"),\n\t\t\t\t\tCondition: \u0026artifactregistry.RepositoryCleanupPolicyConditionArgs{\n\t\t\t\t\t\tTagState: pulumi.String(\"TAGGED\"),\n\t\t\t\t\t\tTagPrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"release\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPackageNamePrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"webapp\"),\n\t\t\t\t\t\t\tpulumi.String(\"mobile\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026artifactregistry.RepositoryCleanupPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"keep-minimum-versions\"),\n\t\t\t\t\tAction: pulumi.String(\"KEEP\"),\n\t\t\t\t\tMostRecentVersions: \u0026artifactregistry.RepositoryCleanupPolicyMostRecentVersionsArgs{\n\t\t\t\t\t\tPackageNamePrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"webapp\"),\n\t\t\t\t\t\t\tpulumi.String(\"mobile\"),\n\t\t\t\t\t\t\tpulumi.String(\"sandbox\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tKeepCount: pulumi.Int(5),\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.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyConditionArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyMostRecentVersionsArgs;\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_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository with cleanup policies\")\n .format(\"DOCKER\")\n .cleanupPolicyDryRun(false)\n .cleanupPolicies( \n RepositoryCleanupPolicyArgs.builder()\n .id(\"delete-prerelease\")\n .action(\"DELETE\")\n .condition(RepositoryCleanupPolicyConditionArgs.builder()\n .tagState(\"TAGGED\")\n .tagPrefixes( \n \"alpha\",\n \"v0\")\n .olderThan(\"2592000s\")\n .build())\n .build(),\n RepositoryCleanupPolicyArgs.builder()\n .id(\"keep-tagged-release\")\n .action(\"KEEP\")\n .condition(RepositoryCleanupPolicyConditionArgs.builder()\n .tagState(\"TAGGED\")\n .tagPrefixes(\"release\")\n .packageNamePrefixes( \n \"webapp\",\n \"mobile\")\n .build())\n .build(),\n RepositoryCleanupPolicyArgs.builder()\n .id(\"keep-minimum-versions\")\n .action(\"KEEP\")\n .mostRecentVersions(RepositoryCleanupPolicyMostRecentVersionsArgs.builder()\n .packageNamePrefixes( \n \"webapp\",\n \"mobile\",\n \"sandbox\")\n .keepCount(5)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository with cleanup policies\n format: DOCKER\n cleanupPolicyDryRun: false\n cleanupPolicies:\n - id: delete-prerelease\n action: DELETE\n condition:\n tagState: TAGGED\n tagPrefixes:\n - alpha\n - v0\n olderThan: 2592000s\n - id: keep-tagged-release\n action: KEEP\n condition:\n tagState: TAGGED\n tagPrefixes:\n - release\n packageNamePrefixes:\n - webapp\n - mobile\n - id: keep-minimum-versions\n action: KEEP\n mostRecentVersions:\n packageNamePrefixes:\n - webapp\n - mobile\n - sandbox\n keepCount: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Dockerhub Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-dockerhub-remote\",\n description: \"example remote dockerhub repository with credentials\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"docker hub with custom credentials\",\n disableUpstreamValidation: true,\n dockerRepository: {\n publicRepository: \"DOCKER_HUB\",\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-dockerhub-remote\",\n description=\"example remote dockerhub repository with credentials\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"docker hub with custom credentials\",\n \"disable_upstream_validation\": True,\n \"docker_repository\": {\n \"public_repository\": \"DOCKER_HUB\",\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\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 project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-dockerhub-remote\",\n Description = \"example remote dockerhub repository with credentials\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"docker hub with custom credentials\",\n DisableUpstreamValidation = true,\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n PublicRepository = \"DOCKER_HUB\",\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\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/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-dockerhub-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote dockerhub repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"docker hub with custom credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tPublicRepository: pulumi.String(\"DOCKER_HUB\"),\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\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 example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-dockerhub-remote\")\n .description(\"example remote dockerhub repository with credentials\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"docker hub with custom credentials\")\n .disableUpstreamValidation(true)\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .publicRepository(\"DOCKER_HUB\")\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-dockerhub-remote\n description: example remote dockerhub repository with credentials\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: docker hub with custom credentials\n disableUpstreamValidation: true\n dockerRepository:\n publicRepository: DOCKER_HUB\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Docker Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-docker-custom-remote\",\n description: \"example remote custom docker repository with credentials\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom docker remote with credentials\",\n disableUpstreamValidation: true,\n dockerRepository: {\n customRepository: {\n uri: \"https://registry-1.docker.io\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-docker-custom-remote\",\n description=\"example remote custom docker repository with credentials\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom docker remote with credentials\",\n \"disable_upstream_validation\": True,\n \"docker_repository\": {\n \"custom_repository\": {\n \"uri\": \"https://registry-1.docker.io\",\n },\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\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 project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-docker-custom-remote\",\n Description = \"example remote custom docker repository with credentials\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom docker remote with credentials\",\n DisableUpstreamValidation = true,\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs\n {\n Uri = \"https://registry-1.docker.io\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\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/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-docker-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom docker repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom docker remote with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://registry-1.docker.io\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\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 example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-docker-custom-remote\")\n .description(\"example remote custom docker repository with credentials\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom docker remote with credentials\")\n .disableUpstreamValidation(true)\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://registry-1.docker.io\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-docker-custom-remote\n description: example remote custom docker repository with credentials\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom docker remote with credentials\n disableUpstreamValidation: true\n dockerRepository:\n customRepository:\n uri: https://registry-1.docker.io\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Maven Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-maven-custom-remote\",\n description: \"example remote custom maven repository with credentials\",\n format: \"MAVEN\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom maven remote with credentials\",\n disableUpstreamValidation: true,\n mavenRepository: {\n customRepository: {\n uri: \"https://my.maven.registry\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-maven-custom-remote\",\n description=\"example remote custom maven repository with credentials\",\n format=\"MAVEN\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom maven remote with credentials\",\n \"disable_upstream_validation\": True,\n \"maven_repository\": {\n \"custom_repository\": {\n \"uri\": \"https://my.maven.registry\",\n },\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\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 project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-maven-custom-remote\",\n Description = \"example remote custom maven repository with credentials\",\n Format = \"MAVEN\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom maven remote with credentials\",\n DisableUpstreamValidation = true,\n MavenRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigMavenRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs\n {\n Uri = \"https://my.maven.registry\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\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/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-maven-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom maven repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"MAVEN\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom maven remote with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tMavenRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://my.maven.registry\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigMavenRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\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 example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-maven-custom-remote\")\n .description(\"example remote custom maven repository with credentials\")\n .format(\"MAVEN\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom maven remote with credentials\")\n .disableUpstreamValidation(true)\n .mavenRepository(RepositoryRemoteRepositoryConfigMavenRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://my.maven.registry\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-maven-custom-remote\n description: example remote custom maven repository with credentials\n format: MAVEN\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom maven remote with credentials\n disableUpstreamValidation: true\n mavenRepository:\n customRepository:\n uri: https://my.maven.registry\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Npm Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-npm-custom-remote\",\n description: \"example remote custom npm repository with credentials\",\n format: \"NPM\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom npm with credentials\",\n disableUpstreamValidation: true,\n npmRepository: {\n customRepository: {\n uri: \"https://my.npm.registry\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-npm-custom-remote\",\n description=\"example remote custom npm repository with credentials\",\n format=\"NPM\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom npm with credentials\",\n \"disable_upstream_validation\": True,\n \"npm_repository\": {\n \"custom_repository\": {\n \"uri\": \"https://my.npm.registry\",\n },\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\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 project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-npm-custom-remote\",\n Description = \"example remote custom npm repository with credentials\",\n Format = \"NPM\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom npm with credentials\",\n DisableUpstreamValidation = true,\n NpmRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigNpmRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs\n {\n Uri = \"https://my.npm.registry\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\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/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-npm-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom npm repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"NPM\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom npm with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tNpmRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://my.npm.registry\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigNpmRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\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 example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-npm-custom-remote\")\n .description(\"example remote custom npm repository with credentials\")\n .format(\"NPM\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom npm with credentials\")\n .disableUpstreamValidation(true)\n .npmRepository(RepositoryRemoteRepositoryConfigNpmRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://my.npm.registry\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-npm-custom-remote\n description: example remote custom npm repository with credentials\n format: NPM\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom npm with credentials\n disableUpstreamValidation: true\n npmRepository:\n customRepository:\n uri: https://my.npm.registry\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Python Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-python-custom-remote\",\n description: \"example remote custom python repository with credentials\",\n format: \"PYTHON\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom npm with credentials\",\n disableUpstreamValidation: true,\n pythonRepository: {\n customRepository: {\n uri: \"https://my.python.registry\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-python-custom-remote\",\n description=\"example remote custom python repository with credentials\",\n format=\"PYTHON\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom npm with credentials\",\n \"disable_upstream_validation\": True,\n \"python_repository\": {\n \"custom_repository\": {\n \"uri\": \"https://my.python.registry\",\n },\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\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 project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-python-custom-remote\",\n Description = \"example remote custom python repository with credentials\",\n Format = \"PYTHON\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom npm with credentials\",\n DisableUpstreamValidation = true,\n PythonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigPythonRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs\n {\n Uri = \"https://my.python.registry\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\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/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-python-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom python repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"PYTHON\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom npm with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tPythonRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://my.python.registry\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\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 example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-python-custom-remote\")\n .description(\"example remote custom python repository with credentials\")\n .format(\"PYTHON\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom npm with credentials\")\n .disableUpstreamValidation(true)\n .pythonRepository(RepositoryRemoteRepositoryConfigPythonRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://my.python.registry\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-python-custom-remote\n description: example remote custom python repository with credentials\n format: PYTHON\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom npm with credentials\n disableUpstreamValidation: true\n pythonRepository:\n customRepository:\n uri: https://my.python.registry\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}`\n\n* `{{project}}/{{location}}/{{repository_id}}`\n\n* `{{location}}/{{repository_id}}`\n\n* `{{repository_id}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{project}}/{{location}}/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{location}}/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{repository_id}}\n```\n\n", "properties": { "cleanupPolicies": { "type": "array", @@ -120677,7 +120677,7 @@ } }, "gcp:assuredworkloads/workload:Workload": { - "description": "The AssuredWorkloads Workload resource\n\n## Example Usage\n\n### Basic_workload\nA basic test of a assuredworkloads api\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.assuredworkloads.Workload(\"primary\", {\n complianceRegime: \"FEDRAMP_MODERATE\",\n displayName: \"{{display}}\",\n location: \"us-west1\",\n organization: \"123456789\",\n billingAccount: \"billingAccounts/000000-0000000-0000000-000000\",\n kmsSettings: {\n nextRotationTime: \"9999-10-02T15:01:23Z\",\n rotationPeriod: \"10368000s\",\n },\n provisionedResourcesParent: \"folders/519620126891\",\n resourceSettings: [\n {\n displayName: \"folder-display-name\",\n resourceType: \"CONSUMER_FOLDER\",\n },\n {\n resourceType: \"ENCRYPTION_KEYS_PROJECT\",\n },\n {\n resourceId: \"ring\",\n resourceType: \"KEYRING\",\n },\n ],\n violationNotificationsEnabled: true,\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.assuredworkloads.Workload(\"primary\",\n compliance_regime=\"FEDRAMP_MODERATE\",\n display_name=\"{{display}}\",\n location=\"us-west1\",\n organization=\"123456789\",\n billing_account=\"billingAccounts/000000-0000000-0000000-000000\",\n kms_settings={\n \"nextRotationTime\": \"9999-10-02T15:01:23Z\",\n \"rotationPeriod\": \"10368000s\",\n },\n provisioned_resources_parent=\"folders/519620126891\",\n resource_settings=[\n {\n \"displayName\": \"folder-display-name\",\n \"resourceType\": \"CONSUMER_FOLDER\",\n },\n {\n \"resourceType\": \"ENCRYPTION_KEYS_PROJECT\",\n },\n {\n \"resourceId\": \"ring\",\n \"resourceType\": \"KEYRING\",\n },\n ],\n violation_notifications_enabled=True,\n labels={\n \"label-one\": \"value-one\",\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 primary = new Gcp.AssuredWorkloads.Workload(\"primary\", new()\n {\n ComplianceRegime = \"FEDRAMP_MODERATE\",\n DisplayName = \"{{display}}\",\n Location = \"us-west1\",\n Organization = \"123456789\",\n BillingAccount = \"billingAccounts/000000-0000000-0000000-000000\",\n KmsSettings = new Gcp.AssuredWorkloads.Inputs.WorkloadKmsSettingsArgs\n {\n NextRotationTime = \"9999-10-02T15:01:23Z\",\n RotationPeriod = \"10368000s\",\n },\n ProvisionedResourcesParent = \"folders/519620126891\",\n ResourceSettings = new[]\n {\n new Gcp.AssuredWorkloads.Inputs.WorkloadResourceSettingArgs\n {\n DisplayName = \"folder-display-name\",\n ResourceType = \"CONSUMER_FOLDER\",\n },\n new Gcp.AssuredWorkloads.Inputs.WorkloadResourceSettingArgs\n {\n ResourceType = \"ENCRYPTION_KEYS_PROJECT\",\n },\n new Gcp.AssuredWorkloads.Inputs.WorkloadResourceSettingArgs\n {\n ResourceId = \"ring\",\n ResourceType = \"KEYRING\",\n },\n },\n ViolationNotificationsEnabled = true,\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/assuredworkloads\"\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 := assuredworkloads.NewWorkload(ctx, \"primary\", \u0026assuredworkloads.WorkloadArgs{\n\t\t\tComplianceRegime: pulumi.String(\"FEDRAMP_MODERATE\"),\n\t\t\tDisplayName: pulumi.String(\"{{display}}\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tOrganization: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"billingAccounts/000000-0000000-0000000-000000\"),\n\t\t\tKmsSettings: \u0026assuredworkloads.WorkloadKmsSettingsArgs{\n\t\t\t\tNextRotationTime: pulumi.String(\"9999-10-02T15:01:23Z\"),\n\t\t\t\tRotationPeriod: pulumi.String(\"10368000s\"),\n\t\t\t},\n\t\t\tProvisionedResourcesParent: pulumi.String(\"folders/519620126891\"),\n\t\t\tResourceSettings: assuredworkloads.WorkloadResourceSettingArray{\n\t\t\t\t\u0026assuredworkloads.WorkloadResourceSettingArgs{\n\t\t\t\t\tDisplayName: pulumi.String(\"folder-display-name\"),\n\t\t\t\t\tResourceType: pulumi.String(\"CONSUMER_FOLDER\"),\n\t\t\t\t},\n\t\t\t\t\u0026assuredworkloads.WorkloadResourceSettingArgs{\n\t\t\t\t\tResourceType: pulumi.String(\"ENCRYPTION_KEYS_PROJECT\"),\n\t\t\t\t},\n\t\t\t\t\u0026assuredworkloads.WorkloadResourceSettingArgs{\n\t\t\t\t\tResourceId: pulumi.String(\"ring\"),\n\t\t\t\t\tResourceType: pulumi.String(\"KEYRING\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tViolationNotificationsEnabled: pulumi.Bool(true),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\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.assuredworkloads.Workload;\nimport com.pulumi.gcp.assuredworkloads.WorkloadArgs;\nimport com.pulumi.gcp.assuredworkloads.inputs.WorkloadKmsSettingsArgs;\nimport com.pulumi.gcp.assuredworkloads.inputs.WorkloadResourceSettingArgs;\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 primary = new Workload(\"primary\", WorkloadArgs.builder()\n .complianceRegime(\"FEDRAMP_MODERATE\")\n .displayName(\"{{display}}\")\n .location(\"us-west1\")\n .organization(\"123456789\")\n .billingAccount(\"billingAccounts/000000-0000000-0000000-000000\")\n .kmsSettings(WorkloadKmsSettingsArgs.builder()\n .nextRotationTime(\"9999-10-02T15:01:23Z\")\n .rotationPeriod(\"10368000s\")\n .build())\n .provisionedResourcesParent(\"folders/519620126891\")\n .resourceSettings( \n WorkloadResourceSettingArgs.builder()\n .displayName(\"folder-display-name\")\n .resourceType(\"CONSUMER_FOLDER\")\n .build(),\n WorkloadResourceSettingArgs.builder()\n .resourceType(\"ENCRYPTION_KEYS_PROJECT\")\n .build(),\n WorkloadResourceSettingArgs.builder()\n .resourceId(\"ring\")\n .resourceType(\"KEYRING\")\n .build())\n .violationNotificationsEnabled(true)\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:assuredworkloads:Workload\n properties:\n complianceRegime: FEDRAMP_MODERATE\n displayName: '{{display}}'\n location: us-west1\n organization: '123456789'\n billingAccount: billingAccounts/000000-0000000-0000000-000000\n kmsSettings:\n nextRotationTime: 9999-10-02T15:01:23Z\n rotationPeriod: 10368000s\n provisionedResourcesParent: folders/519620126891\n resourceSettings:\n - displayName: folder-display-name\n resourceType: CONSUMER_FOLDER\n - resourceType: ENCRYPTION_KEYS_PROJECT\n - resourceId: ring\n resourceType: KEYRING\n violationNotificationsEnabled: true\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Sovereign_controls_workload\nA Sovereign Controls test of the assuredworkloads api\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.assuredworkloads.Workload(\"primary\", {\n complianceRegime: \"EU_REGIONS_AND_SUPPORT\",\n displayName: \"display\",\n location: \"europe-west9\",\n organization: \"123456789\",\n billingAccount: \"billingAccounts/000000-0000000-0000000-000000\",\n enableSovereignControls: true,\n kmsSettings: {\n nextRotationTime: \"9999-10-02T15:01:23Z\",\n rotationPeriod: \"10368000s\",\n },\n resourceSettings: [\n {\n resourceType: \"CONSUMER_FOLDER\",\n },\n {\n resourceType: \"ENCRYPTION_KEYS_PROJECT\",\n },\n {\n resourceId: \"ring\",\n resourceType: \"KEYRING\",\n },\n ],\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.assuredworkloads.Workload(\"primary\",\n compliance_regime=\"EU_REGIONS_AND_SUPPORT\",\n display_name=\"display\",\n location=\"europe-west9\",\n organization=\"123456789\",\n billing_account=\"billingAccounts/000000-0000000-0000000-000000\",\n enable_sovereign_controls=True,\n kms_settings={\n \"nextRotationTime\": \"9999-10-02T15:01:23Z\",\n \"rotationPeriod\": \"10368000s\",\n },\n resource_settings=[\n {\n \"resourceType\": \"CONSUMER_FOLDER\",\n },\n {\n \"resourceType\": \"ENCRYPTION_KEYS_PROJECT\",\n },\n {\n \"resourceId\": \"ring\",\n \"resourceType\": \"KEYRING\",\n },\n ],\n labels={\n \"label-one\": \"value-one\",\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 primary = new Gcp.AssuredWorkloads.Workload(\"primary\", new()\n {\n ComplianceRegime = \"EU_REGIONS_AND_SUPPORT\",\n DisplayName = \"display\",\n Location = \"europe-west9\",\n Organization = \"123456789\",\n BillingAccount = \"billingAccounts/000000-0000000-0000000-000000\",\n EnableSovereignControls = true,\n KmsSettings = new Gcp.AssuredWorkloads.Inputs.WorkloadKmsSettingsArgs\n {\n NextRotationTime = \"9999-10-02T15:01:23Z\",\n RotationPeriod = \"10368000s\",\n },\n ResourceSettings = new[]\n {\n new Gcp.AssuredWorkloads.Inputs.WorkloadResourceSettingArgs\n {\n ResourceType = \"CONSUMER_FOLDER\",\n },\n new Gcp.AssuredWorkloads.Inputs.WorkloadResourceSettingArgs\n {\n ResourceType = \"ENCRYPTION_KEYS_PROJECT\",\n },\n new Gcp.AssuredWorkloads.Inputs.WorkloadResourceSettingArgs\n {\n ResourceId = \"ring\",\n ResourceType = \"KEYRING\",\n },\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/assuredworkloads\"\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 := assuredworkloads.NewWorkload(ctx, \"primary\", \u0026assuredworkloads.WorkloadArgs{\n\t\t\tComplianceRegime: pulumi.String(\"EU_REGIONS_AND_SUPPORT\"),\n\t\t\tDisplayName: pulumi.String(\"display\"),\n\t\t\tLocation: pulumi.String(\"europe-west9\"),\n\t\t\tOrganization: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"billingAccounts/000000-0000000-0000000-000000\"),\n\t\t\tEnableSovereignControls: pulumi.Bool(true),\n\t\t\tKmsSettings: \u0026assuredworkloads.WorkloadKmsSettingsArgs{\n\t\t\t\tNextRotationTime: pulumi.String(\"9999-10-02T15:01:23Z\"),\n\t\t\t\tRotationPeriod: pulumi.String(\"10368000s\"),\n\t\t\t},\n\t\t\tResourceSettings: assuredworkloads.WorkloadResourceSettingArray{\n\t\t\t\t\u0026assuredworkloads.WorkloadResourceSettingArgs{\n\t\t\t\t\tResourceType: pulumi.String(\"CONSUMER_FOLDER\"),\n\t\t\t\t},\n\t\t\t\t\u0026assuredworkloads.WorkloadResourceSettingArgs{\n\t\t\t\t\tResourceType: pulumi.String(\"ENCRYPTION_KEYS_PROJECT\"),\n\t\t\t\t},\n\t\t\t\t\u0026assuredworkloads.WorkloadResourceSettingArgs{\n\t\t\t\t\tResourceId: pulumi.String(\"ring\"),\n\t\t\t\t\tResourceType: pulumi.String(\"KEYRING\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\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.assuredworkloads.Workload;\nimport com.pulumi.gcp.assuredworkloads.WorkloadArgs;\nimport com.pulumi.gcp.assuredworkloads.inputs.WorkloadKmsSettingsArgs;\nimport com.pulumi.gcp.assuredworkloads.inputs.WorkloadResourceSettingArgs;\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 primary = new Workload(\"primary\", WorkloadArgs.builder()\n .complianceRegime(\"EU_REGIONS_AND_SUPPORT\")\n .displayName(\"display\")\n .location(\"europe-west9\")\n .organization(\"123456789\")\n .billingAccount(\"billingAccounts/000000-0000000-0000000-000000\")\n .enableSovereignControls(true)\n .kmsSettings(WorkloadKmsSettingsArgs.builder()\n .nextRotationTime(\"9999-10-02T15:01:23Z\")\n .rotationPeriod(\"10368000s\")\n .build())\n .resourceSettings( \n WorkloadResourceSettingArgs.builder()\n .resourceType(\"CONSUMER_FOLDER\")\n .build(),\n WorkloadResourceSettingArgs.builder()\n .resourceType(\"ENCRYPTION_KEYS_PROJECT\")\n .build(),\n WorkloadResourceSettingArgs.builder()\n .resourceId(\"ring\")\n .resourceType(\"KEYRING\")\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:assuredworkloads:Workload\n properties:\n complianceRegime: EU_REGIONS_AND_SUPPORT\n displayName: display\n location: europe-west9\n organization: '123456789'\n billingAccount: billingAccounts/000000-0000000-0000000-000000\n enableSovereignControls: true\n kmsSettings:\n nextRotationTime: 9999-10-02T15:01:23Z\n rotationPeriod: 10368000s\n resourceSettings:\n - resourceType: CONSUMER_FOLDER\n - resourceType: ENCRYPTION_KEYS_PROJECT\n - resourceId: ring\n resourceType: KEYRING\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkload can be imported using any of these accepted formats:\n\n* `organizations/{{organization}}/locations/{{location}}/workloads/{{name}}`\n\n* `{{organization}}/{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Workload can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:assuredworkloads/workload:Workload default organizations/{{organization}}/locations/{{location}}/workloads/{{name}}\n```\n\n```sh\n$ pulumi import gcp:assuredworkloads/workload:Workload default {{organization}}/{{location}}/{{name}}\n```\n\n", + "description": "The AssuredWorkloads Workload resource\n\n## Example Usage\n\n### Basic_workload\nA basic test of a assuredworkloads api\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.assuredworkloads.Workload(\"primary\", {\n complianceRegime: \"FEDRAMP_MODERATE\",\n displayName: \"{{display}}\",\n location: \"us-west1\",\n organization: \"123456789\",\n billingAccount: \"billingAccounts/000000-0000000-0000000-000000\",\n kmsSettings: {\n nextRotationTime: \"9999-10-02T15:01:23Z\",\n rotationPeriod: \"10368000s\",\n },\n provisionedResourcesParent: \"folders/519620126891\",\n resourceSettings: [\n {\n displayName: \"folder-display-name\",\n resourceType: \"CONSUMER_FOLDER\",\n },\n {\n resourceType: \"ENCRYPTION_KEYS_PROJECT\",\n },\n {\n resourceId: \"ring\",\n resourceType: \"KEYRING\",\n },\n ],\n violationNotificationsEnabled: true,\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.assuredworkloads.Workload(\"primary\",\n compliance_regime=\"FEDRAMP_MODERATE\",\n display_name=\"{{display}}\",\n location=\"us-west1\",\n organization=\"123456789\",\n billing_account=\"billingAccounts/000000-0000000-0000000-000000\",\n kms_settings={\n \"next_rotation_time\": \"9999-10-02T15:01:23Z\",\n \"rotation_period\": \"10368000s\",\n },\n provisioned_resources_parent=\"folders/519620126891\",\n resource_settings=[\n {\n \"display_name\": \"folder-display-name\",\n \"resource_type\": \"CONSUMER_FOLDER\",\n },\n {\n \"resource_type\": \"ENCRYPTION_KEYS_PROJECT\",\n },\n {\n \"resource_id\": \"ring\",\n \"resource_type\": \"KEYRING\",\n },\n ],\n violation_notifications_enabled=True,\n labels={\n \"label-one\": \"value-one\",\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 primary = new Gcp.AssuredWorkloads.Workload(\"primary\", new()\n {\n ComplianceRegime = \"FEDRAMP_MODERATE\",\n DisplayName = \"{{display}}\",\n Location = \"us-west1\",\n Organization = \"123456789\",\n BillingAccount = \"billingAccounts/000000-0000000-0000000-000000\",\n KmsSettings = new Gcp.AssuredWorkloads.Inputs.WorkloadKmsSettingsArgs\n {\n NextRotationTime = \"9999-10-02T15:01:23Z\",\n RotationPeriod = \"10368000s\",\n },\n ProvisionedResourcesParent = \"folders/519620126891\",\n ResourceSettings = new[]\n {\n new Gcp.AssuredWorkloads.Inputs.WorkloadResourceSettingArgs\n {\n DisplayName = \"folder-display-name\",\n ResourceType = \"CONSUMER_FOLDER\",\n },\n new Gcp.AssuredWorkloads.Inputs.WorkloadResourceSettingArgs\n {\n ResourceType = \"ENCRYPTION_KEYS_PROJECT\",\n },\n new Gcp.AssuredWorkloads.Inputs.WorkloadResourceSettingArgs\n {\n ResourceId = \"ring\",\n ResourceType = \"KEYRING\",\n },\n },\n ViolationNotificationsEnabled = true,\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/assuredworkloads\"\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 := assuredworkloads.NewWorkload(ctx, \"primary\", \u0026assuredworkloads.WorkloadArgs{\n\t\t\tComplianceRegime: pulumi.String(\"FEDRAMP_MODERATE\"),\n\t\t\tDisplayName: pulumi.String(\"{{display}}\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tOrganization: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"billingAccounts/000000-0000000-0000000-000000\"),\n\t\t\tKmsSettings: \u0026assuredworkloads.WorkloadKmsSettingsArgs{\n\t\t\t\tNextRotationTime: pulumi.String(\"9999-10-02T15:01:23Z\"),\n\t\t\t\tRotationPeriod: pulumi.String(\"10368000s\"),\n\t\t\t},\n\t\t\tProvisionedResourcesParent: pulumi.String(\"folders/519620126891\"),\n\t\t\tResourceSettings: assuredworkloads.WorkloadResourceSettingArray{\n\t\t\t\t\u0026assuredworkloads.WorkloadResourceSettingArgs{\n\t\t\t\t\tDisplayName: pulumi.String(\"folder-display-name\"),\n\t\t\t\t\tResourceType: pulumi.String(\"CONSUMER_FOLDER\"),\n\t\t\t\t},\n\t\t\t\t\u0026assuredworkloads.WorkloadResourceSettingArgs{\n\t\t\t\t\tResourceType: pulumi.String(\"ENCRYPTION_KEYS_PROJECT\"),\n\t\t\t\t},\n\t\t\t\t\u0026assuredworkloads.WorkloadResourceSettingArgs{\n\t\t\t\t\tResourceId: pulumi.String(\"ring\"),\n\t\t\t\t\tResourceType: pulumi.String(\"KEYRING\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tViolationNotificationsEnabled: pulumi.Bool(true),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\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.assuredworkloads.Workload;\nimport com.pulumi.gcp.assuredworkloads.WorkloadArgs;\nimport com.pulumi.gcp.assuredworkloads.inputs.WorkloadKmsSettingsArgs;\nimport com.pulumi.gcp.assuredworkloads.inputs.WorkloadResourceSettingArgs;\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 primary = new Workload(\"primary\", WorkloadArgs.builder()\n .complianceRegime(\"FEDRAMP_MODERATE\")\n .displayName(\"{{display}}\")\n .location(\"us-west1\")\n .organization(\"123456789\")\n .billingAccount(\"billingAccounts/000000-0000000-0000000-000000\")\n .kmsSettings(WorkloadKmsSettingsArgs.builder()\n .nextRotationTime(\"9999-10-02T15:01:23Z\")\n .rotationPeriod(\"10368000s\")\n .build())\n .provisionedResourcesParent(\"folders/519620126891\")\n .resourceSettings( \n WorkloadResourceSettingArgs.builder()\n .displayName(\"folder-display-name\")\n .resourceType(\"CONSUMER_FOLDER\")\n .build(),\n WorkloadResourceSettingArgs.builder()\n .resourceType(\"ENCRYPTION_KEYS_PROJECT\")\n .build(),\n WorkloadResourceSettingArgs.builder()\n .resourceId(\"ring\")\n .resourceType(\"KEYRING\")\n .build())\n .violationNotificationsEnabled(true)\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:assuredworkloads:Workload\n properties:\n complianceRegime: FEDRAMP_MODERATE\n displayName: '{{display}}'\n location: us-west1\n organization: '123456789'\n billingAccount: billingAccounts/000000-0000000-0000000-000000\n kmsSettings:\n nextRotationTime: 9999-10-02T15:01:23Z\n rotationPeriod: 10368000s\n provisionedResourcesParent: folders/519620126891\n resourceSettings:\n - displayName: folder-display-name\n resourceType: CONSUMER_FOLDER\n - resourceType: ENCRYPTION_KEYS_PROJECT\n - resourceId: ring\n resourceType: KEYRING\n violationNotificationsEnabled: true\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Sovereign_controls_workload\nA Sovereign Controls test of the assuredworkloads api\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.assuredworkloads.Workload(\"primary\", {\n complianceRegime: \"EU_REGIONS_AND_SUPPORT\",\n displayName: \"display\",\n location: \"europe-west9\",\n organization: \"123456789\",\n billingAccount: \"billingAccounts/000000-0000000-0000000-000000\",\n enableSovereignControls: true,\n kmsSettings: {\n nextRotationTime: \"9999-10-02T15:01:23Z\",\n rotationPeriod: \"10368000s\",\n },\n resourceSettings: [\n {\n resourceType: \"CONSUMER_FOLDER\",\n },\n {\n resourceType: \"ENCRYPTION_KEYS_PROJECT\",\n },\n {\n resourceId: \"ring\",\n resourceType: \"KEYRING\",\n },\n ],\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.assuredworkloads.Workload(\"primary\",\n compliance_regime=\"EU_REGIONS_AND_SUPPORT\",\n display_name=\"display\",\n location=\"europe-west9\",\n organization=\"123456789\",\n billing_account=\"billingAccounts/000000-0000000-0000000-000000\",\n enable_sovereign_controls=True,\n kms_settings={\n \"next_rotation_time\": \"9999-10-02T15:01:23Z\",\n \"rotation_period\": \"10368000s\",\n },\n resource_settings=[\n {\n \"resource_type\": \"CONSUMER_FOLDER\",\n },\n {\n \"resource_type\": \"ENCRYPTION_KEYS_PROJECT\",\n },\n {\n \"resource_id\": \"ring\",\n \"resource_type\": \"KEYRING\",\n },\n ],\n labels={\n \"label-one\": \"value-one\",\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 primary = new Gcp.AssuredWorkloads.Workload(\"primary\", new()\n {\n ComplianceRegime = \"EU_REGIONS_AND_SUPPORT\",\n DisplayName = \"display\",\n Location = \"europe-west9\",\n Organization = \"123456789\",\n BillingAccount = \"billingAccounts/000000-0000000-0000000-000000\",\n EnableSovereignControls = true,\n KmsSettings = new Gcp.AssuredWorkloads.Inputs.WorkloadKmsSettingsArgs\n {\n NextRotationTime = \"9999-10-02T15:01:23Z\",\n RotationPeriod = \"10368000s\",\n },\n ResourceSettings = new[]\n {\n new Gcp.AssuredWorkloads.Inputs.WorkloadResourceSettingArgs\n {\n ResourceType = \"CONSUMER_FOLDER\",\n },\n new Gcp.AssuredWorkloads.Inputs.WorkloadResourceSettingArgs\n {\n ResourceType = \"ENCRYPTION_KEYS_PROJECT\",\n },\n new Gcp.AssuredWorkloads.Inputs.WorkloadResourceSettingArgs\n {\n ResourceId = \"ring\",\n ResourceType = \"KEYRING\",\n },\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/assuredworkloads\"\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 := assuredworkloads.NewWorkload(ctx, \"primary\", \u0026assuredworkloads.WorkloadArgs{\n\t\t\tComplianceRegime: pulumi.String(\"EU_REGIONS_AND_SUPPORT\"),\n\t\t\tDisplayName: pulumi.String(\"display\"),\n\t\t\tLocation: pulumi.String(\"europe-west9\"),\n\t\t\tOrganization: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"billingAccounts/000000-0000000-0000000-000000\"),\n\t\t\tEnableSovereignControls: pulumi.Bool(true),\n\t\t\tKmsSettings: \u0026assuredworkloads.WorkloadKmsSettingsArgs{\n\t\t\t\tNextRotationTime: pulumi.String(\"9999-10-02T15:01:23Z\"),\n\t\t\t\tRotationPeriod: pulumi.String(\"10368000s\"),\n\t\t\t},\n\t\t\tResourceSettings: assuredworkloads.WorkloadResourceSettingArray{\n\t\t\t\t\u0026assuredworkloads.WorkloadResourceSettingArgs{\n\t\t\t\t\tResourceType: pulumi.String(\"CONSUMER_FOLDER\"),\n\t\t\t\t},\n\t\t\t\t\u0026assuredworkloads.WorkloadResourceSettingArgs{\n\t\t\t\t\tResourceType: pulumi.String(\"ENCRYPTION_KEYS_PROJECT\"),\n\t\t\t\t},\n\t\t\t\t\u0026assuredworkloads.WorkloadResourceSettingArgs{\n\t\t\t\t\tResourceId: pulumi.String(\"ring\"),\n\t\t\t\t\tResourceType: pulumi.String(\"KEYRING\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\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.assuredworkloads.Workload;\nimport com.pulumi.gcp.assuredworkloads.WorkloadArgs;\nimport com.pulumi.gcp.assuredworkloads.inputs.WorkloadKmsSettingsArgs;\nimport com.pulumi.gcp.assuredworkloads.inputs.WorkloadResourceSettingArgs;\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 primary = new Workload(\"primary\", WorkloadArgs.builder()\n .complianceRegime(\"EU_REGIONS_AND_SUPPORT\")\n .displayName(\"display\")\n .location(\"europe-west9\")\n .organization(\"123456789\")\n .billingAccount(\"billingAccounts/000000-0000000-0000000-000000\")\n .enableSovereignControls(true)\n .kmsSettings(WorkloadKmsSettingsArgs.builder()\n .nextRotationTime(\"9999-10-02T15:01:23Z\")\n .rotationPeriod(\"10368000s\")\n .build())\n .resourceSettings( \n WorkloadResourceSettingArgs.builder()\n .resourceType(\"CONSUMER_FOLDER\")\n .build(),\n WorkloadResourceSettingArgs.builder()\n .resourceType(\"ENCRYPTION_KEYS_PROJECT\")\n .build(),\n WorkloadResourceSettingArgs.builder()\n .resourceId(\"ring\")\n .resourceType(\"KEYRING\")\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:assuredworkloads:Workload\n properties:\n complianceRegime: EU_REGIONS_AND_SUPPORT\n displayName: display\n location: europe-west9\n organization: '123456789'\n billingAccount: billingAccounts/000000-0000000-0000000-000000\n enableSovereignControls: true\n kmsSettings:\n nextRotationTime: 9999-10-02T15:01:23Z\n rotationPeriod: 10368000s\n resourceSettings:\n - resourceType: CONSUMER_FOLDER\n - resourceType: ENCRYPTION_KEYS_PROJECT\n - resourceId: ring\n resourceType: KEYRING\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkload can be imported using any of these accepted formats:\n\n* `organizations/{{organization}}/locations/{{location}}/workloads/{{name}}`\n\n* `{{organization}}/{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Workload can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:assuredworkloads/workload:Workload default organizations/{{organization}}/locations/{{location}}/workloads/{{name}}\n```\n\n```sh\n$ pulumi import gcp:assuredworkloads/workload:Workload default {{organization}}/{{location}}/{{name}}\n```\n\n", "properties": { "billingAccount": { "type": "string", @@ -121036,7 +121036,7 @@ } }, "gcp:backupdisasterrecovery/managementServer:ManagementServer": { - "description": "## Example Usage\n\n### Backup Dr Management Server\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"vpc-network\"});\nconst privateIpAddress = new gcp.compute.GlobalAddress(\"private_ip_address\", {\n name: \"vpc-network\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 20,\n network: _default.id,\n});\nconst defaultConnection = new gcp.servicenetworking.Connection(\"default\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAddress.name],\n});\nconst ms_console = new gcp.backupdisasterrecovery.ManagementServer(\"ms-console\", {\n location: \"us-central1\",\n name: \"ms-console\",\n type: \"BACKUP_RESTORE\",\n networks: [{\n network: _default.id,\n peeringMode: \"PRIVATE_SERVICE_ACCESS\",\n }],\n}, {\n dependsOn: [defaultConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"vpc-network\")\nprivate_ip_address = gcp.compute.GlobalAddress(\"private_ip_address\",\n name=\"vpc-network\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=20,\n network=default.id)\ndefault_connection = gcp.servicenetworking.Connection(\"default\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_address.name])\nms_console = gcp.backupdisasterrecovery.ManagementServer(\"ms-console\",\n location=\"us-central1\",\n name=\"ms-console\",\n type=\"BACKUP_RESTORE\",\n networks=[{\n \"network\": default.id,\n \"peeringMode\": \"PRIVATE_SERVICE_ACCESS\",\n }],\n opts = pulumi.ResourceOptions(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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"vpc-network\",\n });\n\n var privateIpAddress = new Gcp.Compute.GlobalAddress(\"private_ip_address\", new()\n {\n Name = \"vpc-network\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 20,\n Network = @default.Id,\n });\n\n var defaultConnection = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAddress.Name,\n },\n });\n\n var ms_console = new Gcp.BackupDisasterRecovery.ManagementServer(\"ms-console\", new()\n {\n Location = \"us-central1\",\n Name = \"ms-console\",\n Type = \"BACKUP_RESTORE\",\n Networks = new[]\n {\n new Gcp.BackupDisasterRecovery.Inputs.ManagementServerNetworkArgs\n {\n Network = @default.Id,\n PeeringMode = \"PRIVATE_SERVICE_ACCESS\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/backupdisasterrecovery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"vpc-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAddress, err := compute.NewGlobalAddress(ctx, \"private_ip_address\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"vpc-network\"),\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: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultConnection, err := servicenetworking.NewConnection(ctx, \"default\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.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})\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\tName: pulumi.String(\"ms-console\"),\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: _default.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.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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"vpc-network\")\n .build());\n\n var privateIpAddress = new GlobalAddress(\"privateIpAddress\", GlobalAddressArgs.builder()\n .name(\"vpc-network\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(20)\n .network(default_.id())\n .build());\n\n var defaultConnection = new Connection(\"defaultConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAddress.name())\n .build());\n\n var ms_console = new ManagementServer(\"ms-console\", ManagementServerArgs.builder()\n .location(\"us-central1\")\n .name(\"ms-console\")\n .type(\"BACKUP_RESTORE\")\n .networks(ManagementServerNetworkArgs.builder()\n .network(default_.id())\n .peeringMode(\"PRIVATE_SERVICE_ACCESS\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: vpc-network\n privateIpAddress:\n type: gcp:compute:GlobalAddress\n name: private_ip_address\n properties:\n name: vpc-network\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 20\n network: ${default.id}\n defaultConnection:\n type: gcp:servicenetworking:Connection\n name: default\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAddress.name}\n ms-console:\n type: gcp:backupdisasterrecovery:ManagementServer\n properties:\n location: us-central1\n name: ms-console\n type: BACKUP_RESTORE\n networks:\n - network: ${default.id}\n peeringMode: PRIVATE_SERVICE_ACCESS\n options:\n dependson:\n - ${defaultConnection}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nManagementServer can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/managementServers/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ManagementServer can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default projects/{{project}}/locations/{{location}}/managementServers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{location}}/{{name}}\n```\n\n", + "description": "## Example Usage\n\n### Backup Dr Management Server\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"vpc-network\"});\nconst privateIpAddress = new gcp.compute.GlobalAddress(\"private_ip_address\", {\n name: \"vpc-network\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 20,\n network: _default.id,\n});\nconst defaultConnection = new gcp.servicenetworking.Connection(\"default\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAddress.name],\n});\nconst ms_console = new gcp.backupdisasterrecovery.ManagementServer(\"ms-console\", {\n location: \"us-central1\",\n name: \"ms-console\",\n type: \"BACKUP_RESTORE\",\n networks: [{\n network: _default.id,\n peeringMode: \"PRIVATE_SERVICE_ACCESS\",\n }],\n}, {\n dependsOn: [defaultConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"vpc-network\")\nprivate_ip_address = gcp.compute.GlobalAddress(\"private_ip_address\",\n name=\"vpc-network\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=20,\n network=default.id)\ndefault_connection = gcp.servicenetworking.Connection(\"default\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_address.name])\nms_console = gcp.backupdisasterrecovery.ManagementServer(\"ms-console\",\n location=\"us-central1\",\n name=\"ms-console\",\n type=\"BACKUP_RESTORE\",\n networks=[{\n \"network\": default.id,\n \"peering_mode\": \"PRIVATE_SERVICE_ACCESS\",\n }],\n opts = pulumi.ResourceOptions(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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"vpc-network\",\n });\n\n var privateIpAddress = new Gcp.Compute.GlobalAddress(\"private_ip_address\", new()\n {\n Name = \"vpc-network\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 20,\n Network = @default.Id,\n });\n\n var defaultConnection = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAddress.Name,\n },\n });\n\n var ms_console = new Gcp.BackupDisasterRecovery.ManagementServer(\"ms-console\", new()\n {\n Location = \"us-central1\",\n Name = \"ms-console\",\n Type = \"BACKUP_RESTORE\",\n Networks = new[]\n {\n new Gcp.BackupDisasterRecovery.Inputs.ManagementServerNetworkArgs\n {\n Network = @default.Id,\n PeeringMode = \"PRIVATE_SERVICE_ACCESS\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/backupdisasterrecovery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"vpc-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAddress, err := compute.NewGlobalAddress(ctx, \"private_ip_address\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"vpc-network\"),\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: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultConnection, err := servicenetworking.NewConnection(ctx, \"default\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.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})\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\tName: pulumi.String(\"ms-console\"),\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: _default.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.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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"vpc-network\")\n .build());\n\n var privateIpAddress = new GlobalAddress(\"privateIpAddress\", GlobalAddressArgs.builder()\n .name(\"vpc-network\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(20)\n .network(default_.id())\n .build());\n\n var defaultConnection = new Connection(\"defaultConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAddress.name())\n .build());\n\n var ms_console = new ManagementServer(\"ms-console\", ManagementServerArgs.builder()\n .location(\"us-central1\")\n .name(\"ms-console\")\n .type(\"BACKUP_RESTORE\")\n .networks(ManagementServerNetworkArgs.builder()\n .network(default_.id())\n .peeringMode(\"PRIVATE_SERVICE_ACCESS\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: vpc-network\n privateIpAddress:\n type: gcp:compute:GlobalAddress\n name: private_ip_address\n properties:\n name: vpc-network\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 20\n network: ${default.id}\n defaultConnection:\n type: gcp:servicenetworking:Connection\n name: default\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAddress.name}\n ms-console:\n type: gcp:backupdisasterrecovery:ManagementServer\n properties:\n location: us-central1\n name: ms-console\n type: BACKUP_RESTORE\n networks:\n - network: ${default.id}\n peeringMode: PRIVATE_SERVICE_ACCESS\n options:\n dependson:\n - ${defaultConnection}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nManagementServer can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/managementServers/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ManagementServer can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default projects/{{project}}/locations/{{location}}/managementServers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{location}}/{{name}}\n```\n\n", "properties": { "location": { "type": "string", @@ -121159,7 +121159,7 @@ } }, "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## Example Usage\n\n### Beyondcorp App Connection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serviceAccount = new gcp.serviceaccount.Account(\"service_account\", {\n accountId: \"my-account\",\n displayName: \"Test Service Account\",\n});\nconst appConnector = new gcp.beyondcorp.AppConnector(\"app_connector\", {\n name: \"my-app-connector\",\n principalInfo: {\n serviceAccount: {\n email: serviceAccount.email,\n },\n },\n});\nconst appConnection = new gcp.beyondcorp.AppConnection(\"app_connection\", {\n name: \"my-app-connection\",\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.serviceaccount.Account(\"service_account\",\n account_id=\"my-account\",\n display_name=\"Test Service Account\")\napp_connector = gcp.beyondcorp.AppConnector(\"app_connector\",\n name=\"my-app-connector\",\n principal_info={\n \"serviceAccount\": {\n \"email\": service_account.email,\n },\n })\napp_connection = gcp.beyondcorp.AppConnection(\"app_connection\",\n name=\"my-app-connection\",\n type=\"TCP_PROXY\",\n application_endpoint={\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(\"service_account\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Test Service Account\",\n });\n\n var appConnector = new Gcp.Beyondcorp.AppConnector(\"app_connector\", new()\n {\n Name = \"my-app-connector\",\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(\"app_connection\", new()\n {\n Name = \"my-app-connection\",\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/v7/go/gcp/beyondcorp\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"service_account\", \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, \"app_connector\", \u0026beyondcorp.AppConnectorArgs{\n\t\t\tName: pulumi.String(\"my-app-connector\"),\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, \"app_connection\", \u0026beyondcorp.AppConnectionArgs{\n\t\t\tName: pulumi.String(\"my-app-connection\"),\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 .name(\"my-app-connector\")\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 .name(\"my-app-connection\")\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 name: service_account\n properties:\n accountId: my-account\n displayName: Test Service Account\n appConnector:\n type: gcp:beyondcorp:AppConnector\n name: app_connector\n properties:\n name: my-app-connector\n principalInfo:\n serviceAccount:\n email: ${serviceAccount.email}\n appConnection:\n type: gcp:beyondcorp:AppConnection\n name: app_connection\n properties:\n name: my-app-connection\n type: TCP_PROXY\n applicationEndpoint:\n host: foo-host\n port: 8080\n connectors:\n - ${appConnector.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Beyondcorp App Connection Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serviceAccount = new gcp.serviceaccount.Account(\"service_account\", {\n accountId: \"my-account\",\n displayName: \"Test Service Account\",\n});\nconst appGateway = new gcp.beyondcorp.AppGateway(\"app_gateway\", {\n name: \"my-app-gateway\",\n type: \"TCP_PROXY\",\n hostType: \"GCP_REGIONAL_MIG\",\n});\nconst appConnector = new gcp.beyondcorp.AppConnector(\"app_connector\", {\n name: \"my-app-connector\",\n principalInfo: {\n serviceAccount: {\n email: serviceAccount.email,\n },\n },\n});\nconst appConnection = new gcp.beyondcorp.AppConnection(\"app_connection\", {\n name: \"my-app-connection\",\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.serviceaccount.Account(\"service_account\",\n account_id=\"my-account\",\n display_name=\"Test Service Account\")\napp_gateway = gcp.beyondcorp.AppGateway(\"app_gateway\",\n name=\"my-app-gateway\",\n type=\"TCP_PROXY\",\n host_type=\"GCP_REGIONAL_MIG\")\napp_connector = gcp.beyondcorp.AppConnector(\"app_connector\",\n name=\"my-app-connector\",\n principal_info={\n \"serviceAccount\": {\n \"email\": service_account.email,\n },\n })\napp_connection = gcp.beyondcorp.AppConnection(\"app_connection\",\n name=\"my-app-connection\",\n type=\"TCP_PROXY\",\n display_name=\"some display name\",\n application_endpoint={\n \"host\": \"foo-host\",\n \"port\": 8080,\n },\n connectors=[app_connector.id],\n gateway={\n \"appGateway\": 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(\"service_account\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Test Service Account\",\n });\n\n var appGateway = new Gcp.Beyondcorp.AppGateway(\"app_gateway\", new()\n {\n Name = \"my-app-gateway\",\n Type = \"TCP_PROXY\",\n HostType = \"GCP_REGIONAL_MIG\",\n });\n\n var appConnector = new Gcp.Beyondcorp.AppConnector(\"app_connector\", new()\n {\n Name = \"my-app-connector\",\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(\"app_connection\", new()\n {\n Name = \"my-app-connection\",\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/v7/go/gcp/beyondcorp\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"service_account\", \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, \"app_gateway\", \u0026beyondcorp.AppGatewayArgs{\n\t\t\tName: pulumi.String(\"my-app-gateway\"),\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, \"app_connector\", \u0026beyondcorp.AppConnectorArgs{\n\t\t\tName: pulumi.String(\"my-app-connector\"),\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, \"app_connection\", \u0026beyondcorp.AppConnectionArgs{\n\t\t\tName: pulumi.String(\"my-app-connection\"),\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 .name(\"my-app-gateway\")\n .type(\"TCP_PROXY\")\n .hostType(\"GCP_REGIONAL_MIG\")\n .build());\n\n var appConnector = new AppConnector(\"appConnector\", AppConnectorArgs.builder()\n .name(\"my-app-connector\")\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 .name(\"my-app-connection\")\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 name: service_account\n properties:\n accountId: my-account\n displayName: Test Service Account\n appGateway:\n type: gcp:beyondcorp:AppGateway\n name: app_gateway\n properties:\n name: my-app-gateway\n type: TCP_PROXY\n hostType: GCP_REGIONAL_MIG\n appConnector:\n type: gcp:beyondcorp:AppConnector\n name: app_connector\n properties:\n name: my-app-connector\n principalInfo:\n serviceAccount:\n email: ${serviceAccount.email}\n appConnection:\n type: gcp:beyondcorp:AppConnection\n name: app_connection\n properties:\n name: my-app-connection\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\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAppConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/appConnections/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AppConnection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:beyondcorp/appConnection:AppConnection default projects/{{project}}/locations/{{region}}/appConnections/{{name}}\n```\n\n```sh\n$ pulumi import gcp:beyondcorp/appConnection:AppConnection default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:beyondcorp/appConnection:AppConnection default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:beyondcorp/appConnection:AppConnection default {{name}}\n```\n\n", + "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## Example Usage\n\n### Beyondcorp App Connection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serviceAccount = new gcp.serviceaccount.Account(\"service_account\", {\n accountId: \"my-account\",\n displayName: \"Test Service Account\",\n});\nconst appConnector = new gcp.beyondcorp.AppConnector(\"app_connector\", {\n name: \"my-app-connector\",\n principalInfo: {\n serviceAccount: {\n email: serviceAccount.email,\n },\n },\n});\nconst appConnection = new gcp.beyondcorp.AppConnection(\"app_connection\", {\n name: \"my-app-connection\",\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.serviceaccount.Account(\"service_account\",\n account_id=\"my-account\",\n display_name=\"Test Service Account\")\napp_connector = gcp.beyondcorp.AppConnector(\"app_connector\",\n name=\"my-app-connector\",\n principal_info={\n \"service_account\": {\n \"email\": service_account.email,\n },\n })\napp_connection = gcp.beyondcorp.AppConnection(\"app_connection\",\n name=\"my-app-connection\",\n type=\"TCP_PROXY\",\n application_endpoint={\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(\"service_account\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Test Service Account\",\n });\n\n var appConnector = new Gcp.Beyondcorp.AppConnector(\"app_connector\", new()\n {\n Name = \"my-app-connector\",\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(\"app_connection\", new()\n {\n Name = \"my-app-connection\",\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/v7/go/gcp/beyondcorp\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"service_account\", \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, \"app_connector\", \u0026beyondcorp.AppConnectorArgs{\n\t\t\tName: pulumi.String(\"my-app-connector\"),\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, \"app_connection\", \u0026beyondcorp.AppConnectionArgs{\n\t\t\tName: pulumi.String(\"my-app-connection\"),\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 .name(\"my-app-connector\")\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 .name(\"my-app-connection\")\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 name: service_account\n properties:\n accountId: my-account\n displayName: Test Service Account\n appConnector:\n type: gcp:beyondcorp:AppConnector\n name: app_connector\n properties:\n name: my-app-connector\n principalInfo:\n serviceAccount:\n email: ${serviceAccount.email}\n appConnection:\n type: gcp:beyondcorp:AppConnection\n name: app_connection\n properties:\n name: my-app-connection\n type: TCP_PROXY\n applicationEndpoint:\n host: foo-host\n port: 8080\n connectors:\n - ${appConnector.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Beyondcorp App Connection Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serviceAccount = new gcp.serviceaccount.Account(\"service_account\", {\n accountId: \"my-account\",\n displayName: \"Test Service Account\",\n});\nconst appGateway = new gcp.beyondcorp.AppGateway(\"app_gateway\", {\n name: \"my-app-gateway\",\n type: \"TCP_PROXY\",\n hostType: \"GCP_REGIONAL_MIG\",\n});\nconst appConnector = new gcp.beyondcorp.AppConnector(\"app_connector\", {\n name: \"my-app-connector\",\n principalInfo: {\n serviceAccount: {\n email: serviceAccount.email,\n },\n },\n});\nconst appConnection = new gcp.beyondcorp.AppConnection(\"app_connection\", {\n name: \"my-app-connection\",\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.serviceaccount.Account(\"service_account\",\n account_id=\"my-account\",\n display_name=\"Test Service Account\")\napp_gateway = gcp.beyondcorp.AppGateway(\"app_gateway\",\n name=\"my-app-gateway\",\n type=\"TCP_PROXY\",\n host_type=\"GCP_REGIONAL_MIG\")\napp_connector = gcp.beyondcorp.AppConnector(\"app_connector\",\n name=\"my-app-connector\",\n principal_info={\n \"service_account\": {\n \"email\": service_account.email,\n },\n })\napp_connection = gcp.beyondcorp.AppConnection(\"app_connection\",\n name=\"my-app-connection\",\n type=\"TCP_PROXY\",\n display_name=\"some display name\",\n application_endpoint={\n \"host\": \"foo-host\",\n \"port\": 8080,\n },\n connectors=[app_connector.id],\n gateway={\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(\"service_account\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Test Service Account\",\n });\n\n var appGateway = new Gcp.Beyondcorp.AppGateway(\"app_gateway\", new()\n {\n Name = \"my-app-gateway\",\n Type = \"TCP_PROXY\",\n HostType = \"GCP_REGIONAL_MIG\",\n });\n\n var appConnector = new Gcp.Beyondcorp.AppConnector(\"app_connector\", new()\n {\n Name = \"my-app-connector\",\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(\"app_connection\", new()\n {\n Name = \"my-app-connection\",\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/v7/go/gcp/beyondcorp\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"service_account\", \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, \"app_gateway\", \u0026beyondcorp.AppGatewayArgs{\n\t\t\tName: pulumi.String(\"my-app-gateway\"),\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, \"app_connector\", \u0026beyondcorp.AppConnectorArgs{\n\t\t\tName: pulumi.String(\"my-app-connector\"),\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, \"app_connection\", \u0026beyondcorp.AppConnectionArgs{\n\t\t\tName: pulumi.String(\"my-app-connection\"),\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 .name(\"my-app-gateway\")\n .type(\"TCP_PROXY\")\n .hostType(\"GCP_REGIONAL_MIG\")\n .build());\n\n var appConnector = new AppConnector(\"appConnector\", AppConnectorArgs.builder()\n .name(\"my-app-connector\")\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 .name(\"my-app-connection\")\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 name: service_account\n properties:\n accountId: my-account\n displayName: Test Service Account\n appGateway:\n type: gcp:beyondcorp:AppGateway\n name: app_gateway\n properties:\n name: my-app-gateway\n type: TCP_PROXY\n hostType: GCP_REGIONAL_MIG\n appConnector:\n type: gcp:beyondcorp:AppConnector\n name: app_connector\n properties:\n name: my-app-connector\n principalInfo:\n serviceAccount:\n email: ${serviceAccount.email}\n appConnection:\n type: gcp:beyondcorp:AppConnection\n name: app_connection\n properties:\n name: my-app-connection\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\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAppConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/appConnections/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AppConnection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:beyondcorp/appConnection:AppConnection default projects/{{project}}/locations/{{region}}/appConnections/{{name}}\n```\n\n```sh\n$ pulumi import gcp:beyondcorp/appConnection:AppConnection default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:beyondcorp/appConnection:AppConnection default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:beyondcorp/appConnection:AppConnection default {{name}}\n```\n\n", "properties": { "applicationEndpoint": { "$ref": "#/types/gcp:beyondcorp/AppConnectionApplicationEndpoint:AppConnectionApplicationEndpoint", @@ -121346,7 +121346,7 @@ } }, "gcp:beyondcorp/appConnector:AppConnector": { - "description": "A BeyondCorp AppConnector resource represents an application facing component deployed proximal to \nand with direct access to the application instances. It is used to establish connectivity between the \nremote enterprise environment and GCP. It initiates connections to the applications and can proxy the \ndata from users over the connection.\n\n\nTo get more information about AppConnector, see:\n\n* [API documentation](https://cloud.google.com/beyondcorp/docs/reference/rest#rest-resource:-v1.projects.locations.appconnectors)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/beyondcorp-enterprise/docs/enable-app-connector)\n\n## Example Usage\n\n### Beyondcorp App Connector Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serviceAccount = new gcp.serviceaccount.Account(\"service_account\", {\n accountId: \"my-account\",\n displayName: \"Test Service Account\",\n});\nconst appConnector = new gcp.beyondcorp.AppConnector(\"app_connector\", {\n name: \"my-app-connector\",\n principalInfo: {\n serviceAccount: {\n email: serviceAccount.email,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservice_account = gcp.serviceaccount.Account(\"service_account\",\n account_id=\"my-account\",\n display_name=\"Test Service Account\")\napp_connector = gcp.beyondcorp.AppConnector(\"app_connector\",\n name=\"my-app-connector\",\n principal_info={\n \"serviceAccount\": {\n \"email\": service_account.email,\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 serviceAccount = new Gcp.ServiceAccount.Account(\"service_account\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Test Service Account\",\n });\n\n var appConnector = new Gcp.Beyondcorp.AppConnector(\"app_connector\", new()\n {\n Name = \"my-app-connector\",\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});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/beyondcorp\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"service_account\", \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\t_, err = beyondcorp.NewAppConnector(ctx, \"app_connector\", \u0026beyondcorp.AppConnectorArgs{\n\t\t\tName: pulumi.String(\"my-app-connector\"),\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\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 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 .name(\"my-app-connector\")\n .principalInfo(AppConnectorPrincipalInfoArgs.builder()\n .serviceAccount(AppConnectorPrincipalInfoServiceAccountArgs.builder()\n .email(serviceAccount.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n serviceAccount:\n type: gcp:serviceaccount:Account\n name: service_account\n properties:\n accountId: my-account\n displayName: Test Service Account\n appConnector:\n type: gcp:beyondcorp:AppConnector\n name: app_connector\n properties:\n name: my-app-connector\n principalInfo:\n serviceAccount:\n email: ${serviceAccount.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Beyondcorp App Connector Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serviceAccount = new gcp.serviceaccount.Account(\"service_account\", {\n accountId: \"my-account\",\n displayName: \"Test Service Account\",\n});\nconst appConnector = new gcp.beyondcorp.AppConnector(\"app_connector\", {\n name: \"my-app-connector\",\n region: \"us-central1\",\n displayName: \"some display name\",\n principalInfo: {\n serviceAccount: {\n email: serviceAccount.email,\n },\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.serviceaccount.Account(\"service_account\",\n account_id=\"my-account\",\n display_name=\"Test Service Account\")\napp_connector = gcp.beyondcorp.AppConnector(\"app_connector\",\n name=\"my-app-connector\",\n region=\"us-central1\",\n display_name=\"some display name\",\n principal_info={\n \"serviceAccount\": {\n \"email\": service_account.email,\n },\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(\"service_account\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Test Service Account\",\n });\n\n var appConnector = new Gcp.Beyondcorp.AppConnector(\"app_connector\", new()\n {\n Name = \"my-app-connector\",\n Region = \"us-central1\",\n DisplayName = \"some display name\",\n PrincipalInfo = new Gcp.Beyondcorp.Inputs.AppConnectorPrincipalInfoArgs\n {\n ServiceAccount = new Gcp.Beyondcorp.Inputs.AppConnectorPrincipalInfoServiceAccountArgs\n {\n Email = serviceAccount.Email,\n },\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/v7/go/gcp/beyondcorp\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"service_account\", \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\t_, err = beyondcorp.NewAppConnector(ctx, \"app_connector\", \u0026beyondcorp.AppConnectorArgs{\n\t\t\tName: pulumi.String(\"my-app-connector\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"some display name\"),\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\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.AppConnector;\nimport com.pulumi.gcp.beyondcorp.AppConnectorArgs;\nimport com.pulumi.gcp.beyondcorp.inputs.AppConnectorPrincipalInfoArgs;\nimport com.pulumi.gcp.beyondcorp.inputs.AppConnectorPrincipalInfoServiceAccountArgs;\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 .name(\"my-app-connector\")\n .region(\"us-central1\")\n .displayName(\"some display name\")\n .principalInfo(AppConnectorPrincipalInfoArgs.builder()\n .serviceAccount(AppConnectorPrincipalInfoServiceAccountArgs.builder()\n .email(serviceAccount.email())\n .build())\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 name: service_account\n properties:\n accountId: my-account\n displayName: Test Service Account\n appConnector:\n type: gcp:beyondcorp:AppConnector\n name: app_connector\n properties:\n name: my-app-connector\n region: us-central1\n displayName: some display name\n principalInfo:\n serviceAccount:\n email: ${serviceAccount.email}\n labels:\n foo: bar\n bar: baz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAppConnector can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/appConnectors/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AppConnector can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:beyondcorp/appConnector:AppConnector default projects/{{project}}/locations/{{region}}/appConnectors/{{name}}\n```\n\n```sh\n$ pulumi import gcp:beyondcorp/appConnector:AppConnector default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:beyondcorp/appConnector:AppConnector default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:beyondcorp/appConnector:AppConnector default {{name}}\n```\n\n", + "description": "A BeyondCorp AppConnector resource represents an application facing component deployed proximal to \nand with direct access to the application instances. It is used to establish connectivity between the \nremote enterprise environment and GCP. It initiates connections to the applications and can proxy the \ndata from users over the connection.\n\n\nTo get more information about AppConnector, see:\n\n* [API documentation](https://cloud.google.com/beyondcorp/docs/reference/rest#rest-resource:-v1.projects.locations.appconnectors)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/beyondcorp-enterprise/docs/enable-app-connector)\n\n## Example Usage\n\n### Beyondcorp App Connector Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serviceAccount = new gcp.serviceaccount.Account(\"service_account\", {\n accountId: \"my-account\",\n displayName: \"Test Service Account\",\n});\nconst appConnector = new gcp.beyondcorp.AppConnector(\"app_connector\", {\n name: \"my-app-connector\",\n principalInfo: {\n serviceAccount: {\n email: serviceAccount.email,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservice_account = gcp.serviceaccount.Account(\"service_account\",\n account_id=\"my-account\",\n display_name=\"Test Service Account\")\napp_connector = gcp.beyondcorp.AppConnector(\"app_connector\",\n name=\"my-app-connector\",\n principal_info={\n \"service_account\": {\n \"email\": service_account.email,\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 serviceAccount = new Gcp.ServiceAccount.Account(\"service_account\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Test Service Account\",\n });\n\n var appConnector = new Gcp.Beyondcorp.AppConnector(\"app_connector\", new()\n {\n Name = \"my-app-connector\",\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});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/beyondcorp\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"service_account\", \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\t_, err = beyondcorp.NewAppConnector(ctx, \"app_connector\", \u0026beyondcorp.AppConnectorArgs{\n\t\t\tName: pulumi.String(\"my-app-connector\"),\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\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 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 .name(\"my-app-connector\")\n .principalInfo(AppConnectorPrincipalInfoArgs.builder()\n .serviceAccount(AppConnectorPrincipalInfoServiceAccountArgs.builder()\n .email(serviceAccount.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n serviceAccount:\n type: gcp:serviceaccount:Account\n name: service_account\n properties:\n accountId: my-account\n displayName: Test Service Account\n appConnector:\n type: gcp:beyondcorp:AppConnector\n name: app_connector\n properties:\n name: my-app-connector\n principalInfo:\n serviceAccount:\n email: ${serviceAccount.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Beyondcorp App Connector Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serviceAccount = new gcp.serviceaccount.Account(\"service_account\", {\n accountId: \"my-account\",\n displayName: \"Test Service Account\",\n});\nconst appConnector = new gcp.beyondcorp.AppConnector(\"app_connector\", {\n name: \"my-app-connector\",\n region: \"us-central1\",\n displayName: \"some display name\",\n principalInfo: {\n serviceAccount: {\n email: serviceAccount.email,\n },\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.serviceaccount.Account(\"service_account\",\n account_id=\"my-account\",\n display_name=\"Test Service Account\")\napp_connector = gcp.beyondcorp.AppConnector(\"app_connector\",\n name=\"my-app-connector\",\n region=\"us-central1\",\n display_name=\"some display name\",\n principal_info={\n \"service_account\": {\n \"email\": service_account.email,\n },\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(\"service_account\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Test Service Account\",\n });\n\n var appConnector = new Gcp.Beyondcorp.AppConnector(\"app_connector\", new()\n {\n Name = \"my-app-connector\",\n Region = \"us-central1\",\n DisplayName = \"some display name\",\n PrincipalInfo = new Gcp.Beyondcorp.Inputs.AppConnectorPrincipalInfoArgs\n {\n ServiceAccount = new Gcp.Beyondcorp.Inputs.AppConnectorPrincipalInfoServiceAccountArgs\n {\n Email = serviceAccount.Email,\n },\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/v7/go/gcp/beyondcorp\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"service_account\", \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\t_, err = beyondcorp.NewAppConnector(ctx, \"app_connector\", \u0026beyondcorp.AppConnectorArgs{\n\t\t\tName: pulumi.String(\"my-app-connector\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"some display name\"),\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\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.AppConnector;\nimport com.pulumi.gcp.beyondcorp.AppConnectorArgs;\nimport com.pulumi.gcp.beyondcorp.inputs.AppConnectorPrincipalInfoArgs;\nimport com.pulumi.gcp.beyondcorp.inputs.AppConnectorPrincipalInfoServiceAccountArgs;\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 .name(\"my-app-connector\")\n .region(\"us-central1\")\n .displayName(\"some display name\")\n .principalInfo(AppConnectorPrincipalInfoArgs.builder()\n .serviceAccount(AppConnectorPrincipalInfoServiceAccountArgs.builder()\n .email(serviceAccount.email())\n .build())\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 name: service_account\n properties:\n accountId: my-account\n displayName: Test Service Account\n appConnector:\n type: gcp:beyondcorp:AppConnector\n name: app_connector\n properties:\n name: my-app-connector\n region: us-central1\n displayName: some display name\n principalInfo:\n serviceAccount:\n email: ${serviceAccount.email}\n labels:\n foo: bar\n bar: baz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAppConnector can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/appConnectors/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AppConnector can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:beyondcorp/appConnector:AppConnector default projects/{{project}}/locations/{{region}}/appConnectors/{{name}}\n```\n\n```sh\n$ pulumi import gcp:beyondcorp/appConnector:AppConnector default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:beyondcorp/appConnector:AppConnector default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:beyondcorp/appConnector:AppConnector default {{name}}\n```\n\n", "properties": { "displayName": { "type": "string", @@ -121783,7 +121783,7 @@ } }, "gcp:biglake/database:Database": { - "description": "Databases are containers of tables.\n\n\nTo get more information about Database, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/biglake/rest/v1/projects.locations.catalogs.databases)\n* How-to Guides\n * [Manage open source metadata with BigLake Metastore](https://cloud.google.com/bigquery/docs/manage-open-source-metadata#create_databases)\n\n## Example Usage\n\n### Biglake Database\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst catalog = new gcp.biglake.Catalog(\"catalog\", {\n name: \"my_catalog\",\n location: \"US\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"my_bucket\",\n location: \"US\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n});\nconst metadataFolder = new gcp.storage.BucketObject(\"metadata_folder\", {\n name: \"metadata/\",\n content: \" \",\n bucket: bucket.name,\n});\nconst database = new gcp.biglake.Database(\"database\", {\n name: \"my_database\",\n catalog: catalog.id,\n type: \"HIVE\",\n hiveOptions: {\n locationUri: pulumi.interpolate`gs://${bucket.name}/${metadataFolder.name}`,\n parameters: {\n owner: \"John Doe\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncatalog = gcp.biglake.Catalog(\"catalog\",\n name=\"my_catalog\",\n location=\"US\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"my_bucket\",\n location=\"US\",\n force_destroy=True,\n uniform_bucket_level_access=True)\nmetadata_folder = gcp.storage.BucketObject(\"metadata_folder\",\n name=\"metadata/\",\n content=\" \",\n bucket=bucket.name)\ndatabase = gcp.biglake.Database(\"database\",\n name=\"my_database\",\n catalog=catalog.id,\n type=\"HIVE\",\n hive_options={\n \"locationUri\": pulumi.Output.all(bucket.name, metadata_folder.name).apply(lambda bucketName, metadataFolderName: f\"gs://{bucket_name}/{metadata_folder_name}\"),\n \"parameters\": {\n \"owner\": \"John Doe\",\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 catalog = new Gcp.BigLake.Catalog(\"catalog\", new()\n {\n Name = \"my_catalog\",\n Location = \"US\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"my_bucket\",\n Location = \"US\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n });\n\n var metadataFolder = new Gcp.Storage.BucketObject(\"metadata_folder\", new()\n {\n Name = \"metadata/\",\n Content = \" \",\n Bucket = bucket.Name,\n });\n\n var database = new Gcp.BigLake.Database(\"database\", new()\n {\n Name = \"my_database\",\n Catalog = catalog.Id,\n Type = \"HIVE\",\n HiveOptions = new Gcp.BigLake.Inputs.DatabaseHiveOptionsArgs\n {\n LocationUri = Output.Tuple(bucket.Name, metadataFolder.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var metadataFolderName = values.Item2;\n return $\"gs://{bucketName}/{metadataFolderName}\";\n }),\n Parameters = \n {\n { \"owner\", \"John Doe\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/biglake\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tcatalog, err := biglake.NewCatalog(ctx, \"catalog\", \u0026biglake.CatalogArgs{\n\t\t\tName: pulumi.String(\"my_catalog\"),\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\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my_bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\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\tmetadataFolder, err := storage.NewBucketObject(ctx, \"metadata_folder\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"metadata/\"),\n\t\t\tContent: pulumi.String(\" \"),\n\t\t\tBucket: bucket.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = biglake.NewDatabase(ctx, \"database\", \u0026biglake.DatabaseArgs{\n\t\t\tName: pulumi.String(\"my_database\"),\n\t\t\tCatalog: catalog.ID(),\n\t\t\tType: pulumi.String(\"HIVE\"),\n\t\t\tHiveOptions: \u0026biglake.DatabaseHiveOptionsArgs{\n\t\t\t\tLocationUri: pulumi.All(bucket.Name, metadataFolder.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\tmetadataFolderName := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucketName, metadataFolderName), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"John Doe\"),\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.biglake.Catalog;\nimport com.pulumi.gcp.biglake.CatalogArgs;\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.biglake.Database;\nimport com.pulumi.gcp.biglake.DatabaseArgs;\nimport com.pulumi.gcp.biglake.inputs.DatabaseHiveOptionsArgs;\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 catalog = new Catalog(\"catalog\", CatalogArgs.builder()\n .name(\"my_catalog\")\n .location(\"US\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"my_bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .build());\n\n var metadataFolder = new BucketObject(\"metadataFolder\", BucketObjectArgs.builder()\n .name(\"metadata/\")\n .content(\" \")\n .bucket(bucket.name())\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .name(\"my_database\")\n .catalog(catalog.id())\n .type(\"HIVE\")\n .hiveOptions(DatabaseHiveOptionsArgs.builder()\n .locationUri(Output.tuple(bucket.name(), metadataFolder.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var metadataFolderName = values.t2;\n return String.format(\"gs://%s/%s\", bucketName,metadataFolderName);\n }))\n .parameters(Map.of(\"owner\", \"John Doe\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n catalog:\n type: gcp:biglake:Catalog\n properties:\n name: my_catalog\n location: US\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: my_bucket\n location: US\n forceDestroy: true\n uniformBucketLevelAccess: true\n metadataFolder:\n type: gcp:storage:BucketObject\n name: metadata_folder\n properties:\n name: metadata/\n content: ' '\n bucket: ${bucket.name}\n database:\n type: gcp:biglake:Database\n properties:\n name: my_database\n catalog: ${catalog.id}\n type: HIVE\n hiveOptions:\n locationUri: gs://${bucket.name}/${metadataFolder.name}\n parameters:\n owner: John Doe\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase can be imported using any of these accepted formats:\n\n* `{{catalog}}/databases/{{name}}`\n\nWhen using the `pulumi import` command, Database can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:biglake/database:Database default {{catalog}}/databases/{{name}}\n```\n\n", + "description": "Databases are containers of tables.\n\n\nTo get more information about Database, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/biglake/rest/v1/projects.locations.catalogs.databases)\n* How-to Guides\n * [Manage open source metadata with BigLake Metastore](https://cloud.google.com/bigquery/docs/manage-open-source-metadata#create_databases)\n\n## Example Usage\n\n### Biglake Database\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst catalog = new gcp.biglake.Catalog(\"catalog\", {\n name: \"my_catalog\",\n location: \"US\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"my_bucket\",\n location: \"US\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n});\nconst metadataFolder = new gcp.storage.BucketObject(\"metadata_folder\", {\n name: \"metadata/\",\n content: \" \",\n bucket: bucket.name,\n});\nconst database = new gcp.biglake.Database(\"database\", {\n name: \"my_database\",\n catalog: catalog.id,\n type: \"HIVE\",\n hiveOptions: {\n locationUri: pulumi.interpolate`gs://${bucket.name}/${metadataFolder.name}`,\n parameters: {\n owner: \"John Doe\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncatalog = gcp.biglake.Catalog(\"catalog\",\n name=\"my_catalog\",\n location=\"US\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"my_bucket\",\n location=\"US\",\n force_destroy=True,\n uniform_bucket_level_access=True)\nmetadata_folder = gcp.storage.BucketObject(\"metadata_folder\",\n name=\"metadata/\",\n content=\" \",\n bucket=bucket.name)\ndatabase = gcp.biglake.Database(\"database\",\n name=\"my_database\",\n catalog=catalog.id,\n type=\"HIVE\",\n hive_options={\n \"location_uri\": pulumi.Output.all(bucket.name, metadata_folder.name).apply(lambda bucketName, metadataFolderName: f\"gs://{bucket_name}/{metadata_folder_name}\"),\n \"parameters\": {\n \"owner\": \"John Doe\",\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 catalog = new Gcp.BigLake.Catalog(\"catalog\", new()\n {\n Name = \"my_catalog\",\n Location = \"US\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"my_bucket\",\n Location = \"US\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n });\n\n var metadataFolder = new Gcp.Storage.BucketObject(\"metadata_folder\", new()\n {\n Name = \"metadata/\",\n Content = \" \",\n Bucket = bucket.Name,\n });\n\n var database = new Gcp.BigLake.Database(\"database\", new()\n {\n Name = \"my_database\",\n Catalog = catalog.Id,\n Type = \"HIVE\",\n HiveOptions = new Gcp.BigLake.Inputs.DatabaseHiveOptionsArgs\n {\n LocationUri = Output.Tuple(bucket.Name, metadataFolder.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var metadataFolderName = values.Item2;\n return $\"gs://{bucketName}/{metadataFolderName}\";\n }),\n Parameters = \n {\n { \"owner\", \"John Doe\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/biglake\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tcatalog, err := biglake.NewCatalog(ctx, \"catalog\", \u0026biglake.CatalogArgs{\n\t\t\tName: pulumi.String(\"my_catalog\"),\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\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my_bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\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\tmetadataFolder, err := storage.NewBucketObject(ctx, \"metadata_folder\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"metadata/\"),\n\t\t\tContent: pulumi.String(\" \"),\n\t\t\tBucket: bucket.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = biglake.NewDatabase(ctx, \"database\", \u0026biglake.DatabaseArgs{\n\t\t\tName: pulumi.String(\"my_database\"),\n\t\t\tCatalog: catalog.ID(),\n\t\t\tType: pulumi.String(\"HIVE\"),\n\t\t\tHiveOptions: \u0026biglake.DatabaseHiveOptionsArgs{\n\t\t\t\tLocationUri: pulumi.All(bucket.Name, metadataFolder.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\tmetadataFolderName := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucketName, metadataFolderName), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"John Doe\"),\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.biglake.Catalog;\nimport com.pulumi.gcp.biglake.CatalogArgs;\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.biglake.Database;\nimport com.pulumi.gcp.biglake.DatabaseArgs;\nimport com.pulumi.gcp.biglake.inputs.DatabaseHiveOptionsArgs;\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 catalog = new Catalog(\"catalog\", CatalogArgs.builder()\n .name(\"my_catalog\")\n .location(\"US\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"my_bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .build());\n\n var metadataFolder = new BucketObject(\"metadataFolder\", BucketObjectArgs.builder()\n .name(\"metadata/\")\n .content(\" \")\n .bucket(bucket.name())\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .name(\"my_database\")\n .catalog(catalog.id())\n .type(\"HIVE\")\n .hiveOptions(DatabaseHiveOptionsArgs.builder()\n .locationUri(Output.tuple(bucket.name(), metadataFolder.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var metadataFolderName = values.t2;\n return String.format(\"gs://%s/%s\", bucketName,metadataFolderName);\n }))\n .parameters(Map.of(\"owner\", \"John Doe\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n catalog:\n type: gcp:biglake:Catalog\n properties:\n name: my_catalog\n location: US\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: my_bucket\n location: US\n forceDestroy: true\n uniformBucketLevelAccess: true\n metadataFolder:\n type: gcp:storage:BucketObject\n name: metadata_folder\n properties:\n name: metadata/\n content: ' '\n bucket: ${bucket.name}\n database:\n type: gcp:biglake:Database\n properties:\n name: my_database\n catalog: ${catalog.id}\n type: HIVE\n hiveOptions:\n locationUri: gs://${bucket.name}/${metadataFolder.name}\n parameters:\n owner: John Doe\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase can be imported using any of these accepted formats:\n\n* `{{catalog}}/databases/{{name}}`\n\nWhen using the `pulumi import` command, Database can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:biglake/database:Database default {{catalog}}/databases/{{name}}\n```\n\n", "properties": { "catalog": { "type": "string", @@ -121895,7 +121895,7 @@ } }, "gcp:biglake/table:Table": { - "description": "Represents a table.\n\n\nTo get more information about Table, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/biglake/rest/v1/projects.locations.catalogs.databases.tables)\n* How-to Guides\n * [Manage open source metadata with BigLake Metastore](https://cloud.google.com/bigquery/docs/manage-open-source-metadata#create_tables)\n\n## Example Usage\n\n### Biglake Table\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst catalog = new gcp.biglake.Catalog(\"catalog\", {\n name: \"my_catalog\",\n location: \"US\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"my_bucket\",\n location: \"US\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n});\nconst metadataFolder = new gcp.storage.BucketObject(\"metadata_folder\", {\n name: \"metadata/\",\n content: \" \",\n bucket: bucket.name,\n});\nconst dataFolder = new gcp.storage.BucketObject(\"data_folder\", {\n name: \"data/\",\n content: \" \",\n bucket: bucket.name,\n});\nconst database = new gcp.biglake.Database(\"database\", {\n name: \"my_database\",\n catalog: catalog.id,\n type: \"HIVE\",\n hiveOptions: {\n locationUri: pulumi.interpolate`gs://${bucket.name}/${metadataFolder.name}`,\n parameters: {\n owner: \"Alex\",\n },\n },\n});\nconst table = new gcp.biglake.Table(\"table\", {\n name: \"my_table\",\n database: database.id,\n type: \"HIVE\",\n hiveOptions: {\n tableType: \"MANAGED_TABLE\",\n storageDescriptor: {\n locationUri: pulumi.interpolate`gs://${bucket.name}/${dataFolder.name}`,\n inputFormat: \"org.apache.hadoop.mapred.SequenceFileInputFormat\",\n outputFormat: \"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\",\n },\n parameters: {\n \"spark.sql.create.version\": \"3.1.3\",\n \"spark.sql.sources.schema.numParts\": \"1\",\n transient_lastDdlTime: \"1680894197\",\n \"spark.sql.partitionProvider\": \"catalog\",\n owner: \"John Doe\",\n \"spark.sql.sources.schema.part.0\": \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\",\n \"spark.sql.sources.provider\": \"iceberg\",\n provider: \"iceberg\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncatalog = gcp.biglake.Catalog(\"catalog\",\n name=\"my_catalog\",\n location=\"US\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"my_bucket\",\n location=\"US\",\n force_destroy=True,\n uniform_bucket_level_access=True)\nmetadata_folder = gcp.storage.BucketObject(\"metadata_folder\",\n name=\"metadata/\",\n content=\" \",\n bucket=bucket.name)\ndata_folder = gcp.storage.BucketObject(\"data_folder\",\n name=\"data/\",\n content=\" \",\n bucket=bucket.name)\ndatabase = gcp.biglake.Database(\"database\",\n name=\"my_database\",\n catalog=catalog.id,\n type=\"HIVE\",\n hive_options={\n \"locationUri\": pulumi.Output.all(bucket.name, metadata_folder.name).apply(lambda bucketName, metadataFolderName: f\"gs://{bucket_name}/{metadata_folder_name}\"),\n \"parameters\": {\n \"owner\": \"Alex\",\n },\n })\ntable = gcp.biglake.Table(\"table\",\n name=\"my_table\",\n database=database.id,\n type=\"HIVE\",\n hive_options={\n \"tableType\": \"MANAGED_TABLE\",\n \"storageDescriptor\": {\n \"locationUri\": pulumi.Output.all(bucket.name, data_folder.name).apply(lambda bucketName, dataFolderName: f\"gs://{bucket_name}/{data_folder_name}\"),\n \"inputFormat\": \"org.apache.hadoop.mapred.SequenceFileInputFormat\",\n \"outputFormat\": \"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\",\n },\n \"parameters\": {\n \"spark.sql.create.version\": \"3.1.3\",\n \"spark.sql.sources.schema.numParts\": \"1\",\n \"transient_lastDdlTime\": \"1680894197\",\n \"spark.sql.partitionProvider\": \"catalog\",\n \"owner\": \"John Doe\",\n \"spark.sql.sources.schema.part.0\": \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\",\n \"spark.sql.sources.provider\": \"iceberg\",\n \"provider\": \"iceberg\",\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 catalog = new Gcp.BigLake.Catalog(\"catalog\", new()\n {\n Name = \"my_catalog\",\n Location = \"US\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"my_bucket\",\n Location = \"US\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n });\n\n var metadataFolder = new Gcp.Storage.BucketObject(\"metadata_folder\", new()\n {\n Name = \"metadata/\",\n Content = \" \",\n Bucket = bucket.Name,\n });\n\n var dataFolder = new Gcp.Storage.BucketObject(\"data_folder\", new()\n {\n Name = \"data/\",\n Content = \" \",\n Bucket = bucket.Name,\n });\n\n var database = new Gcp.BigLake.Database(\"database\", new()\n {\n Name = \"my_database\",\n Catalog = catalog.Id,\n Type = \"HIVE\",\n HiveOptions = new Gcp.BigLake.Inputs.DatabaseHiveOptionsArgs\n {\n LocationUri = Output.Tuple(bucket.Name, metadataFolder.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var metadataFolderName = values.Item2;\n return $\"gs://{bucketName}/{metadataFolderName}\";\n }),\n Parameters = \n {\n { \"owner\", \"Alex\" },\n },\n },\n });\n\n var table = new Gcp.BigLake.Table(\"table\", new()\n {\n Name = \"my_table\",\n Database = database.Id,\n Type = \"HIVE\",\n HiveOptions = new Gcp.BigLake.Inputs.TableHiveOptionsArgs\n {\n TableType = \"MANAGED_TABLE\",\n StorageDescriptor = new Gcp.BigLake.Inputs.TableHiveOptionsStorageDescriptorArgs\n {\n LocationUri = Output.Tuple(bucket.Name, dataFolder.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var dataFolderName = values.Item2;\n return $\"gs://{bucketName}/{dataFolderName}\";\n }),\n InputFormat = \"org.apache.hadoop.mapred.SequenceFileInputFormat\",\n OutputFormat = \"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\",\n },\n Parameters = \n {\n { \"spark.sql.create.version\", \"3.1.3\" },\n { \"spark.sql.sources.schema.numParts\", \"1\" },\n { \"transient_lastDdlTime\", \"1680894197\" },\n { \"spark.sql.partitionProvider\", \"catalog\" },\n { \"owner\", \"John Doe\" },\n { \"spark.sql.sources.schema.part.0\", \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\" },\n { \"spark.sql.sources.provider\", \"iceberg\" },\n { \"provider\", \"iceberg\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/biglake\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tcatalog, err := biglake.NewCatalog(ctx, \"catalog\", \u0026biglake.CatalogArgs{\n\t\t\tName: pulumi.String(\"my_catalog\"),\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\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my_bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\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\tmetadataFolder, err := storage.NewBucketObject(ctx, \"metadata_folder\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"metadata/\"),\n\t\t\tContent: pulumi.String(\" \"),\n\t\t\tBucket: bucket.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdataFolder, err := storage.NewBucketObject(ctx, \"data_folder\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"data/\"),\n\t\t\tContent: pulumi.String(\" \"),\n\t\t\tBucket: bucket.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdatabase, err := biglake.NewDatabase(ctx, \"database\", \u0026biglake.DatabaseArgs{\n\t\t\tName: pulumi.String(\"my_database\"),\n\t\t\tCatalog: catalog.ID(),\n\t\t\tType: pulumi.String(\"HIVE\"),\n\t\t\tHiveOptions: \u0026biglake.DatabaseHiveOptionsArgs{\n\t\t\t\tLocationUri: pulumi.All(bucket.Name, metadataFolder.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\tmetadataFolderName := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucketName, metadataFolderName), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"Alex\"),\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 = biglake.NewTable(ctx, \"table\", \u0026biglake.TableArgs{\n\t\t\tName: pulumi.String(\"my_table\"),\n\t\t\tDatabase: database.ID(),\n\t\t\tType: pulumi.String(\"HIVE\"),\n\t\t\tHiveOptions: \u0026biglake.TableHiveOptionsArgs{\n\t\t\t\tTableType: pulumi.String(\"MANAGED_TABLE\"),\n\t\t\t\tStorageDescriptor: \u0026biglake.TableHiveOptionsStorageDescriptorArgs{\n\t\t\t\t\tLocationUri: pulumi.All(bucket.Name, dataFolder.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tdataFolderName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucketName, dataFolderName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tInputFormat: pulumi.String(\"org.apache.hadoop.mapred.SequenceFileInputFormat\"),\n\t\t\t\t\tOutputFormat: pulumi.String(\"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\"),\n\t\t\t\t},\n\t\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\t\"spark.sql.create.version\": pulumi.String(\"3.1.3\"),\n\t\t\t\t\t\"spark.sql.sources.schema.numParts\": pulumi.String(\"1\"),\n\t\t\t\t\t\"transient_lastDdlTime\": pulumi.String(\"1680894197\"),\n\t\t\t\t\t\"spark.sql.partitionProvider\": pulumi.String(\"catalog\"),\n\t\t\t\t\t\"owner\": pulumi.String(\"John Doe\"),\n\t\t\t\t\t\"spark.sql.sources.schema.part.0\": pulumi.String(\"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\"),\n\t\t\t\t\t\"spark.sql.sources.provider\": pulumi.String(\"iceberg\"),\n\t\t\t\t\t\"provider\": pulumi.String(\"iceberg\"),\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.biglake.Catalog;\nimport com.pulumi.gcp.biglake.CatalogArgs;\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.biglake.Database;\nimport com.pulumi.gcp.biglake.DatabaseArgs;\nimport com.pulumi.gcp.biglake.inputs.DatabaseHiveOptionsArgs;\nimport com.pulumi.gcp.biglake.Table;\nimport com.pulumi.gcp.biglake.TableArgs;\nimport com.pulumi.gcp.biglake.inputs.TableHiveOptionsArgs;\nimport com.pulumi.gcp.biglake.inputs.TableHiveOptionsStorageDescriptorArgs;\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 catalog = new Catalog(\"catalog\", CatalogArgs.builder()\n .name(\"my_catalog\")\n .location(\"US\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"my_bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .build());\n\n var metadataFolder = new BucketObject(\"metadataFolder\", BucketObjectArgs.builder()\n .name(\"metadata/\")\n .content(\" \")\n .bucket(bucket.name())\n .build());\n\n var dataFolder = new BucketObject(\"dataFolder\", BucketObjectArgs.builder()\n .name(\"data/\")\n .content(\" \")\n .bucket(bucket.name())\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .name(\"my_database\")\n .catalog(catalog.id())\n .type(\"HIVE\")\n .hiveOptions(DatabaseHiveOptionsArgs.builder()\n .locationUri(Output.tuple(bucket.name(), metadataFolder.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var metadataFolderName = values.t2;\n return String.format(\"gs://%s/%s\", bucketName,metadataFolderName);\n }))\n .parameters(Map.of(\"owner\", \"Alex\"))\n .build())\n .build());\n\n var table = new Table(\"table\", TableArgs.builder()\n .name(\"my_table\")\n .database(database.id())\n .type(\"HIVE\")\n .hiveOptions(TableHiveOptionsArgs.builder()\n .tableType(\"MANAGED_TABLE\")\n .storageDescriptor(TableHiveOptionsStorageDescriptorArgs.builder()\n .locationUri(Output.tuple(bucket.name(), dataFolder.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var dataFolderName = values.t2;\n return String.format(\"gs://%s/%s\", bucketName,dataFolderName);\n }))\n .inputFormat(\"org.apache.hadoop.mapred.SequenceFileInputFormat\")\n .outputFormat(\"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\")\n .build())\n .parameters(Map.ofEntries(\n Map.entry(\"spark.sql.create.version\", \"3.1.3\"),\n Map.entry(\"spark.sql.sources.schema.numParts\", \"1\"),\n Map.entry(\"transient_lastDdlTime\", \"1680894197\"),\n Map.entry(\"spark.sql.partitionProvider\", \"catalog\"),\n Map.entry(\"owner\", \"John Doe\"),\n Map.entry(\"spark.sql.sources.schema.part.0\", \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\"),\n Map.entry(\"spark.sql.sources.provider\", \"iceberg\"),\n Map.entry(\"provider\", \"iceberg\")\n ))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n catalog:\n type: gcp:biglake:Catalog\n properties:\n name: my_catalog\n location: US\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: my_bucket\n location: US\n forceDestroy: true\n uniformBucketLevelAccess: true\n metadataFolder:\n type: gcp:storage:BucketObject\n name: metadata_folder\n properties:\n name: metadata/\n content: ' '\n bucket: ${bucket.name}\n dataFolder:\n type: gcp:storage:BucketObject\n name: data_folder\n properties:\n name: data/\n content: ' '\n bucket: ${bucket.name}\n database:\n type: gcp:biglake:Database\n properties:\n name: my_database\n catalog: ${catalog.id}\n type: HIVE\n hiveOptions:\n locationUri: gs://${bucket.name}/${metadataFolder.name}\n parameters:\n owner: Alex\n table:\n type: gcp:biglake:Table\n properties:\n name: my_table\n database: ${database.id}\n type: HIVE\n hiveOptions:\n tableType: MANAGED_TABLE\n storageDescriptor:\n locationUri: gs://${bucket.name}/${dataFolder.name}\n inputFormat: org.apache.hadoop.mapred.SequenceFileInputFormat\n outputFormat: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\n parameters:\n spark.sql.create.version: 3.1.3\n spark.sql.sources.schema.numParts: '1'\n transient_lastDdlTime: '1680894197'\n spark.sql.partitionProvider: catalog\n owner: John Doe\n spark.sql.sources.schema.part.0: '{\"type\":\"struct\",\"fields\":[{\"name\":\"id\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"name\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"age\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}}]}'\n spark.sql.sources.provider: iceberg\n provider: iceberg\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTable can be imported using any of these accepted formats:\n\n* `{{database}}/tables/{{name}}`\n\nWhen using the `pulumi import` command, Table can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:biglake/table:Table default {{database}}/tables/{{name}}\n```\n\n", + "description": "Represents a table.\n\n\nTo get more information about Table, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/biglake/rest/v1/projects.locations.catalogs.databases.tables)\n* How-to Guides\n * [Manage open source metadata with BigLake Metastore](https://cloud.google.com/bigquery/docs/manage-open-source-metadata#create_tables)\n\n## Example Usage\n\n### Biglake Table\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst catalog = new gcp.biglake.Catalog(\"catalog\", {\n name: \"my_catalog\",\n location: \"US\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"my_bucket\",\n location: \"US\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n});\nconst metadataFolder = new gcp.storage.BucketObject(\"metadata_folder\", {\n name: \"metadata/\",\n content: \" \",\n bucket: bucket.name,\n});\nconst dataFolder = new gcp.storage.BucketObject(\"data_folder\", {\n name: \"data/\",\n content: \" \",\n bucket: bucket.name,\n});\nconst database = new gcp.biglake.Database(\"database\", {\n name: \"my_database\",\n catalog: catalog.id,\n type: \"HIVE\",\n hiveOptions: {\n locationUri: pulumi.interpolate`gs://${bucket.name}/${metadataFolder.name}`,\n parameters: {\n owner: \"Alex\",\n },\n },\n});\nconst table = new gcp.biglake.Table(\"table\", {\n name: \"my_table\",\n database: database.id,\n type: \"HIVE\",\n hiveOptions: {\n tableType: \"MANAGED_TABLE\",\n storageDescriptor: {\n locationUri: pulumi.interpolate`gs://${bucket.name}/${dataFolder.name}`,\n inputFormat: \"org.apache.hadoop.mapred.SequenceFileInputFormat\",\n outputFormat: \"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\",\n },\n parameters: {\n \"spark.sql.create.version\": \"3.1.3\",\n \"spark.sql.sources.schema.numParts\": \"1\",\n transient_lastDdlTime: \"1680894197\",\n \"spark.sql.partitionProvider\": \"catalog\",\n owner: \"John Doe\",\n \"spark.sql.sources.schema.part.0\": \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\",\n \"spark.sql.sources.provider\": \"iceberg\",\n provider: \"iceberg\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncatalog = gcp.biglake.Catalog(\"catalog\",\n name=\"my_catalog\",\n location=\"US\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"my_bucket\",\n location=\"US\",\n force_destroy=True,\n uniform_bucket_level_access=True)\nmetadata_folder = gcp.storage.BucketObject(\"metadata_folder\",\n name=\"metadata/\",\n content=\" \",\n bucket=bucket.name)\ndata_folder = gcp.storage.BucketObject(\"data_folder\",\n name=\"data/\",\n content=\" \",\n bucket=bucket.name)\ndatabase = gcp.biglake.Database(\"database\",\n name=\"my_database\",\n catalog=catalog.id,\n type=\"HIVE\",\n hive_options={\n \"location_uri\": pulumi.Output.all(bucket.name, metadata_folder.name).apply(lambda bucketName, metadataFolderName: f\"gs://{bucket_name}/{metadata_folder_name}\"),\n \"parameters\": {\n \"owner\": \"Alex\",\n },\n })\ntable = gcp.biglake.Table(\"table\",\n name=\"my_table\",\n database=database.id,\n type=\"HIVE\",\n hive_options={\n \"table_type\": \"MANAGED_TABLE\",\n \"storage_descriptor\": {\n \"location_uri\": pulumi.Output.all(bucket.name, data_folder.name).apply(lambda bucketName, dataFolderName: f\"gs://{bucket_name}/{data_folder_name}\"),\n \"input_format\": \"org.apache.hadoop.mapred.SequenceFileInputFormat\",\n \"output_format\": \"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\",\n },\n \"parameters\": {\n \"spark_sql_create_version\": \"3.1.3\",\n \"spark_sql_sources_schema_num_parts\": \"1\",\n \"transient_last_ddl_time\": \"1680894197\",\n \"spark_sql_partition_provider\": \"catalog\",\n \"owner\": \"John Doe\",\n \"spark_sql_sources_schema_part_0\": \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\",\n \"spark_sql_sources_provider\": \"iceberg\",\n \"provider\": \"iceberg\",\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 catalog = new Gcp.BigLake.Catalog(\"catalog\", new()\n {\n Name = \"my_catalog\",\n Location = \"US\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"my_bucket\",\n Location = \"US\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n });\n\n var metadataFolder = new Gcp.Storage.BucketObject(\"metadata_folder\", new()\n {\n Name = \"metadata/\",\n Content = \" \",\n Bucket = bucket.Name,\n });\n\n var dataFolder = new Gcp.Storage.BucketObject(\"data_folder\", new()\n {\n Name = \"data/\",\n Content = \" \",\n Bucket = bucket.Name,\n });\n\n var database = new Gcp.BigLake.Database(\"database\", new()\n {\n Name = \"my_database\",\n Catalog = catalog.Id,\n Type = \"HIVE\",\n HiveOptions = new Gcp.BigLake.Inputs.DatabaseHiveOptionsArgs\n {\n LocationUri = Output.Tuple(bucket.Name, metadataFolder.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var metadataFolderName = values.Item2;\n return $\"gs://{bucketName}/{metadataFolderName}\";\n }),\n Parameters = \n {\n { \"owner\", \"Alex\" },\n },\n },\n });\n\n var table = new Gcp.BigLake.Table(\"table\", new()\n {\n Name = \"my_table\",\n Database = database.Id,\n Type = \"HIVE\",\n HiveOptions = new Gcp.BigLake.Inputs.TableHiveOptionsArgs\n {\n TableType = \"MANAGED_TABLE\",\n StorageDescriptor = new Gcp.BigLake.Inputs.TableHiveOptionsStorageDescriptorArgs\n {\n LocationUri = Output.Tuple(bucket.Name, dataFolder.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var dataFolderName = values.Item2;\n return $\"gs://{bucketName}/{dataFolderName}\";\n }),\n InputFormat = \"org.apache.hadoop.mapred.SequenceFileInputFormat\",\n OutputFormat = \"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\",\n },\n Parameters = \n {\n { \"spark.sql.create.version\", \"3.1.3\" },\n { \"spark.sql.sources.schema.numParts\", \"1\" },\n { \"transient_lastDdlTime\", \"1680894197\" },\n { \"spark.sql.partitionProvider\", \"catalog\" },\n { \"owner\", \"John Doe\" },\n { \"spark.sql.sources.schema.part.0\", \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\" },\n { \"spark.sql.sources.provider\", \"iceberg\" },\n { \"provider\", \"iceberg\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/biglake\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tcatalog, err := biglake.NewCatalog(ctx, \"catalog\", \u0026biglake.CatalogArgs{\n\t\t\tName: pulumi.String(\"my_catalog\"),\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\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my_bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\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\tmetadataFolder, err := storage.NewBucketObject(ctx, \"metadata_folder\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"metadata/\"),\n\t\t\tContent: pulumi.String(\" \"),\n\t\t\tBucket: bucket.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdataFolder, err := storage.NewBucketObject(ctx, \"data_folder\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"data/\"),\n\t\t\tContent: pulumi.String(\" \"),\n\t\t\tBucket: bucket.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdatabase, err := biglake.NewDatabase(ctx, \"database\", \u0026biglake.DatabaseArgs{\n\t\t\tName: pulumi.String(\"my_database\"),\n\t\t\tCatalog: catalog.ID(),\n\t\t\tType: pulumi.String(\"HIVE\"),\n\t\t\tHiveOptions: \u0026biglake.DatabaseHiveOptionsArgs{\n\t\t\t\tLocationUri: pulumi.All(bucket.Name, metadataFolder.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\tmetadataFolderName := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucketName, metadataFolderName), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"Alex\"),\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 = biglake.NewTable(ctx, \"table\", \u0026biglake.TableArgs{\n\t\t\tName: pulumi.String(\"my_table\"),\n\t\t\tDatabase: database.ID(),\n\t\t\tType: pulumi.String(\"HIVE\"),\n\t\t\tHiveOptions: \u0026biglake.TableHiveOptionsArgs{\n\t\t\t\tTableType: pulumi.String(\"MANAGED_TABLE\"),\n\t\t\t\tStorageDescriptor: \u0026biglake.TableHiveOptionsStorageDescriptorArgs{\n\t\t\t\t\tLocationUri: pulumi.All(bucket.Name, dataFolder.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tdataFolderName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucketName, dataFolderName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tInputFormat: pulumi.String(\"org.apache.hadoop.mapred.SequenceFileInputFormat\"),\n\t\t\t\t\tOutputFormat: pulumi.String(\"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\"),\n\t\t\t\t},\n\t\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\t\"spark.sql.create.version\": pulumi.String(\"3.1.3\"),\n\t\t\t\t\t\"spark.sql.sources.schema.numParts\": pulumi.String(\"1\"),\n\t\t\t\t\t\"transient_lastDdlTime\": pulumi.String(\"1680894197\"),\n\t\t\t\t\t\"spark.sql.partitionProvider\": pulumi.String(\"catalog\"),\n\t\t\t\t\t\"owner\": pulumi.String(\"John Doe\"),\n\t\t\t\t\t\"spark.sql.sources.schema.part.0\": pulumi.String(\"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\"),\n\t\t\t\t\t\"spark.sql.sources.provider\": pulumi.String(\"iceberg\"),\n\t\t\t\t\t\"provider\": pulumi.String(\"iceberg\"),\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.biglake.Catalog;\nimport com.pulumi.gcp.biglake.CatalogArgs;\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.biglake.Database;\nimport com.pulumi.gcp.biglake.DatabaseArgs;\nimport com.pulumi.gcp.biglake.inputs.DatabaseHiveOptionsArgs;\nimport com.pulumi.gcp.biglake.Table;\nimport com.pulumi.gcp.biglake.TableArgs;\nimport com.pulumi.gcp.biglake.inputs.TableHiveOptionsArgs;\nimport com.pulumi.gcp.biglake.inputs.TableHiveOptionsStorageDescriptorArgs;\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 catalog = new Catalog(\"catalog\", CatalogArgs.builder()\n .name(\"my_catalog\")\n .location(\"US\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"my_bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .build());\n\n var metadataFolder = new BucketObject(\"metadataFolder\", BucketObjectArgs.builder()\n .name(\"metadata/\")\n .content(\" \")\n .bucket(bucket.name())\n .build());\n\n var dataFolder = new BucketObject(\"dataFolder\", BucketObjectArgs.builder()\n .name(\"data/\")\n .content(\" \")\n .bucket(bucket.name())\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .name(\"my_database\")\n .catalog(catalog.id())\n .type(\"HIVE\")\n .hiveOptions(DatabaseHiveOptionsArgs.builder()\n .locationUri(Output.tuple(bucket.name(), metadataFolder.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var metadataFolderName = values.t2;\n return String.format(\"gs://%s/%s\", bucketName,metadataFolderName);\n }))\n .parameters(Map.of(\"owner\", \"Alex\"))\n .build())\n .build());\n\n var table = new Table(\"table\", TableArgs.builder()\n .name(\"my_table\")\n .database(database.id())\n .type(\"HIVE\")\n .hiveOptions(TableHiveOptionsArgs.builder()\n .tableType(\"MANAGED_TABLE\")\n .storageDescriptor(TableHiveOptionsStorageDescriptorArgs.builder()\n .locationUri(Output.tuple(bucket.name(), dataFolder.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var dataFolderName = values.t2;\n return String.format(\"gs://%s/%s\", bucketName,dataFolderName);\n }))\n .inputFormat(\"org.apache.hadoop.mapred.SequenceFileInputFormat\")\n .outputFormat(\"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\")\n .build())\n .parameters(Map.ofEntries(\n Map.entry(\"spark.sql.create.version\", \"3.1.3\"),\n Map.entry(\"spark.sql.sources.schema.numParts\", \"1\"),\n Map.entry(\"transient_lastDdlTime\", \"1680894197\"),\n Map.entry(\"spark.sql.partitionProvider\", \"catalog\"),\n Map.entry(\"owner\", \"John Doe\"),\n Map.entry(\"spark.sql.sources.schema.part.0\", \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\"),\n Map.entry(\"spark.sql.sources.provider\", \"iceberg\"),\n Map.entry(\"provider\", \"iceberg\")\n ))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n catalog:\n type: gcp:biglake:Catalog\n properties:\n name: my_catalog\n location: US\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: my_bucket\n location: US\n forceDestroy: true\n uniformBucketLevelAccess: true\n metadataFolder:\n type: gcp:storage:BucketObject\n name: metadata_folder\n properties:\n name: metadata/\n content: ' '\n bucket: ${bucket.name}\n dataFolder:\n type: gcp:storage:BucketObject\n name: data_folder\n properties:\n name: data/\n content: ' '\n bucket: ${bucket.name}\n database:\n type: gcp:biglake:Database\n properties:\n name: my_database\n catalog: ${catalog.id}\n type: HIVE\n hiveOptions:\n locationUri: gs://${bucket.name}/${metadataFolder.name}\n parameters:\n owner: Alex\n table:\n type: gcp:biglake:Table\n properties:\n name: my_table\n database: ${database.id}\n type: HIVE\n hiveOptions:\n tableType: MANAGED_TABLE\n storageDescriptor:\n locationUri: gs://${bucket.name}/${dataFolder.name}\n inputFormat: org.apache.hadoop.mapred.SequenceFileInputFormat\n outputFormat: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\n parameters:\n spark.sql.create.version: 3.1.3\n spark.sql.sources.schema.numParts: '1'\n transient_lastDdlTime: '1680894197'\n spark.sql.partitionProvider: catalog\n owner: John Doe\n spark.sql.sources.schema.part.0: '{\"type\":\"struct\",\"fields\":[{\"name\":\"id\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"name\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"age\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}}]}'\n spark.sql.sources.provider: iceberg\n provider: iceberg\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTable can be imported using any of these accepted formats:\n\n* `{{database}}/tables/{{name}}`\n\nWhen using the `pulumi import` command, Table can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:biglake/table:Table default {{database}}/tables/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -122008,7 +122008,7 @@ } }, "gcp:bigquery/appProfile:AppProfile": { - "description": "App profile is a configuration object describing how Cloud Bigtable should treat traffic from a particular end user application.\n\n\nTo get more information about AppProfile, see:\n\n* [API documentation](https://cloud.google.com/bigtable/docs/reference/admin/rest/v2/projects.instances.appProfiles)\n\n## Example Usage\n\n### Bigtable App Profile Anycluster\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.bigtable.Instance(\"instance\", {\n name: \"bt-instance\",\n clusters: [\n {\n clusterId: \"cluster-1\",\n zone: \"us-central1-a\",\n numNodes: 3,\n storageType: \"HDD\",\n },\n {\n clusterId: \"cluster-2\",\n zone: \"us-central1-b\",\n numNodes: 3,\n storageType: \"HDD\",\n },\n {\n clusterId: \"cluster-3\",\n zone: \"us-central1-c\",\n numNodes: 3,\n storageType: \"HDD\",\n },\n ],\n deletionProtection: true,\n});\nconst ap = new gcp.bigquery.AppProfile(\"ap\", {\n instance: instance.name,\n appProfileId: \"bt-profile\",\n multiClusterRoutingUseAny: true,\n ignoreWarnings: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.bigtable.Instance(\"instance\",\n name=\"bt-instance\",\n clusters=[\n {\n \"clusterId\": \"cluster-1\",\n \"zone\": \"us-central1-a\",\n \"numNodes\": 3,\n \"storageType\": \"HDD\",\n },\n {\n \"clusterId\": \"cluster-2\",\n \"zone\": \"us-central1-b\",\n \"numNodes\": 3,\n \"storageType\": \"HDD\",\n },\n {\n \"clusterId\": \"cluster-3\",\n \"zone\": \"us-central1-c\",\n \"numNodes\": 3,\n \"storageType\": \"HDD\",\n },\n ],\n deletion_protection=True)\nap = gcp.bigquery.AppProfile(\"ap\",\n instance=instance.name,\n app_profile_id=\"bt-profile\",\n multi_cluster_routing_use_any=True,\n ignore_warnings=True)\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.BigTable.Instance(\"instance\", new()\n {\n Name = \"bt-instance\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"cluster-1\",\n Zone = \"us-central1-a\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"cluster-2\",\n Zone = \"us-central1-b\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"cluster-3\",\n Zone = \"us-central1-c\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n },\n DeletionProtection = true,\n });\n\n var ap = new Gcp.BigQuery.AppProfile(\"ap\", new()\n {\n Instance = instance.Name,\n AppProfileId = \"bt-profile\",\n MultiClusterRoutingUseAny = true,\n IgnoreWarnings = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewInstance(ctx, \"instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"bt-instance\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"cluster-1\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"cluster-2\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"cluster-3\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewAppProfile(ctx, \"ap\", \u0026bigquery.AppProfileArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tAppProfileId: pulumi.String(\"bt-profile\"),\n\t\t\tMultiClusterRoutingUseAny: pulumi.Bool(true),\n\t\t\tIgnoreWarnings: pulumi.Bool(true),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\nimport com.pulumi.gcp.bigquery.AppProfile;\nimport com.pulumi.gcp.bigquery.AppProfileArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"bt-instance\")\n .clusters( \n InstanceClusterArgs.builder()\n .clusterId(\"cluster-1\")\n .zone(\"us-central1-a\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build(),\n InstanceClusterArgs.builder()\n .clusterId(\"cluster-2\")\n .zone(\"us-central1-b\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build(),\n InstanceClusterArgs.builder()\n .clusterId(\"cluster-3\")\n .zone(\"us-central1-c\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var ap = new AppProfile(\"ap\", AppProfileArgs.builder()\n .instance(instance.name())\n .appProfileId(\"bt-profile\")\n .multiClusterRoutingUseAny(true)\n .ignoreWarnings(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:bigtable:Instance\n properties:\n name: bt-instance\n clusters:\n - clusterId: cluster-1\n zone: us-central1-a\n numNodes: 3\n storageType: HDD\n - clusterId: cluster-2\n zone: us-central1-b\n numNodes: 3\n storageType: HDD\n - clusterId: cluster-3\n zone: us-central1-c\n numNodes: 3\n storageType: HDD\n deletionProtection: 'true'\n ap:\n type: gcp:bigquery:AppProfile\n properties:\n instance: ${instance.name}\n appProfileId: bt-profile\n multiClusterRoutingUseAny: true\n ignoreWarnings: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigtable App Profile Singlecluster\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.bigtable.Instance(\"instance\", {\n name: \"bt-instance\",\n clusters: [{\n clusterId: \"cluster-1\",\n zone: \"us-central1-b\",\n numNodes: 3,\n storageType: \"HDD\",\n }],\n deletionProtection: true,\n});\nconst ap = new gcp.bigquery.AppProfile(\"ap\", {\n instance: instance.name,\n appProfileId: \"bt-profile\",\n singleClusterRouting: {\n clusterId: \"cluster-1\",\n allowTransactionalWrites: true,\n },\n ignoreWarnings: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.bigtable.Instance(\"instance\",\n name=\"bt-instance\",\n clusters=[{\n \"clusterId\": \"cluster-1\",\n \"zone\": \"us-central1-b\",\n \"numNodes\": 3,\n \"storageType\": \"HDD\",\n }],\n deletion_protection=True)\nap = gcp.bigquery.AppProfile(\"ap\",\n instance=instance.name,\n app_profile_id=\"bt-profile\",\n single_cluster_routing={\n \"clusterId\": \"cluster-1\",\n \"allowTransactionalWrites\": True,\n },\n ignore_warnings=True)\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.BigTable.Instance(\"instance\", new()\n {\n Name = \"bt-instance\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"cluster-1\",\n Zone = \"us-central1-b\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n },\n DeletionProtection = true,\n });\n\n var ap = new Gcp.BigQuery.AppProfile(\"ap\", new()\n {\n Instance = instance.Name,\n AppProfileId = \"bt-profile\",\n SingleClusterRouting = new Gcp.BigQuery.Inputs.AppProfileSingleClusterRoutingArgs\n {\n ClusterId = \"cluster-1\",\n AllowTransactionalWrites = true,\n },\n IgnoreWarnings = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewInstance(ctx, \"instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"bt-instance\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"cluster-1\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewAppProfile(ctx, \"ap\", \u0026bigquery.AppProfileArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tAppProfileId: pulumi.String(\"bt-profile\"),\n\t\t\tSingleClusterRouting: \u0026bigquery.AppProfileSingleClusterRoutingArgs{\n\t\t\t\tClusterId: pulumi.String(\"cluster-1\"),\n\t\t\t\tAllowTransactionalWrites: pulumi.Bool(true),\n\t\t\t},\n\t\t\tIgnoreWarnings: pulumi.Bool(true),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\nimport com.pulumi.gcp.bigquery.AppProfile;\nimport com.pulumi.gcp.bigquery.AppProfileArgs;\nimport com.pulumi.gcp.bigquery.inputs.AppProfileSingleClusterRoutingArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"bt-instance\")\n .clusters(InstanceClusterArgs.builder()\n .clusterId(\"cluster-1\")\n .zone(\"us-central1-b\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var ap = new AppProfile(\"ap\", AppProfileArgs.builder()\n .instance(instance.name())\n .appProfileId(\"bt-profile\")\n .singleClusterRouting(AppProfileSingleClusterRoutingArgs.builder()\n .clusterId(\"cluster-1\")\n .allowTransactionalWrites(true)\n .build())\n .ignoreWarnings(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:bigtable:Instance\n properties:\n name: bt-instance\n clusters:\n - clusterId: cluster-1\n zone: us-central1-b\n numNodes: 3\n storageType: HDD\n deletionProtection: 'true'\n ap:\n type: gcp:bigquery:AppProfile\n properties:\n instance: ${instance.name}\n appProfileId: bt-profile\n singleClusterRouting:\n clusterId: cluster-1\n allowTransactionalWrites: true\n ignoreWarnings: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigtable App Profile Multicluster\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.bigtable.Instance(\"instance\", {\n name: \"bt-instance\",\n clusters: [\n {\n clusterId: \"cluster-1\",\n zone: \"us-central1-a\",\n numNodes: 3,\n storageType: \"HDD\",\n },\n {\n clusterId: \"cluster-2\",\n zone: \"us-central1-b\",\n numNodes: 3,\n storageType: \"HDD\",\n },\n {\n clusterId: \"cluster-3\",\n zone: \"us-central1-c\",\n numNodes: 3,\n storageType: \"HDD\",\n },\n ],\n deletionProtection: true,\n});\nconst ap = new gcp.bigquery.AppProfile(\"ap\", {\n instance: instance.name,\n appProfileId: \"bt-profile\",\n multiClusterRoutingUseAny: true,\n multiClusterRoutingClusterIds: [\n \"cluster-1\",\n \"cluster-2\",\n ],\n ignoreWarnings: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.bigtable.Instance(\"instance\",\n name=\"bt-instance\",\n clusters=[\n {\n \"clusterId\": \"cluster-1\",\n \"zone\": \"us-central1-a\",\n \"numNodes\": 3,\n \"storageType\": \"HDD\",\n },\n {\n \"clusterId\": \"cluster-2\",\n \"zone\": \"us-central1-b\",\n \"numNodes\": 3,\n \"storageType\": \"HDD\",\n },\n {\n \"clusterId\": \"cluster-3\",\n \"zone\": \"us-central1-c\",\n \"numNodes\": 3,\n \"storageType\": \"HDD\",\n },\n ],\n deletion_protection=True)\nap = gcp.bigquery.AppProfile(\"ap\",\n instance=instance.name,\n app_profile_id=\"bt-profile\",\n multi_cluster_routing_use_any=True,\n multi_cluster_routing_cluster_ids=[\n \"cluster-1\",\n \"cluster-2\",\n ],\n ignore_warnings=True)\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.BigTable.Instance(\"instance\", new()\n {\n Name = \"bt-instance\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"cluster-1\",\n Zone = \"us-central1-a\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"cluster-2\",\n Zone = \"us-central1-b\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"cluster-3\",\n Zone = \"us-central1-c\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n },\n DeletionProtection = true,\n });\n\n var ap = new Gcp.BigQuery.AppProfile(\"ap\", new()\n {\n Instance = instance.Name,\n AppProfileId = \"bt-profile\",\n MultiClusterRoutingUseAny = true,\n MultiClusterRoutingClusterIds = new[]\n {\n \"cluster-1\",\n \"cluster-2\",\n },\n IgnoreWarnings = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewInstance(ctx, \"instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"bt-instance\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"cluster-1\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"cluster-2\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"cluster-3\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewAppProfile(ctx, \"ap\", \u0026bigquery.AppProfileArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tAppProfileId: pulumi.String(\"bt-profile\"),\n\t\t\tMultiClusterRoutingUseAny: pulumi.Bool(true),\n\t\t\tMultiClusterRoutingClusterIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"cluster-1\"),\n\t\t\t\tpulumi.String(\"cluster-2\"),\n\t\t\t},\n\t\t\tIgnoreWarnings: pulumi.Bool(true),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\nimport com.pulumi.gcp.bigquery.AppProfile;\nimport com.pulumi.gcp.bigquery.AppProfileArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"bt-instance\")\n .clusters( \n InstanceClusterArgs.builder()\n .clusterId(\"cluster-1\")\n .zone(\"us-central1-a\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build(),\n InstanceClusterArgs.builder()\n .clusterId(\"cluster-2\")\n .zone(\"us-central1-b\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build(),\n InstanceClusterArgs.builder()\n .clusterId(\"cluster-3\")\n .zone(\"us-central1-c\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var ap = new AppProfile(\"ap\", AppProfileArgs.builder()\n .instance(instance.name())\n .appProfileId(\"bt-profile\")\n .multiClusterRoutingUseAny(true)\n .multiClusterRoutingClusterIds( \n \"cluster-1\",\n \"cluster-2\")\n .ignoreWarnings(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:bigtable:Instance\n properties:\n name: bt-instance\n clusters:\n - clusterId: cluster-1\n zone: us-central1-a\n numNodes: 3\n storageType: HDD\n - clusterId: cluster-2\n zone: us-central1-b\n numNodes: 3\n storageType: HDD\n - clusterId: cluster-3\n zone: us-central1-c\n numNodes: 3\n storageType: HDD\n deletionProtection: 'true'\n ap:\n type: gcp:bigquery:AppProfile\n properties:\n instance: ${instance.name}\n appProfileId: bt-profile\n multiClusterRoutingUseAny: true\n multiClusterRoutingClusterIds:\n - cluster-1\n - cluster-2\n ignoreWarnings: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigtable App Profile Priority\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.bigtable.Instance(\"instance\", {\n name: \"bt-instance\",\n clusters: [{\n clusterId: \"cluster-1\",\n zone: \"us-central1-b\",\n numNodes: 3,\n storageType: \"HDD\",\n }],\n deletionProtection: true,\n});\nconst ap = new gcp.bigquery.AppProfile(\"ap\", {\n instance: instance.name,\n appProfileId: \"bt-profile\",\n singleClusterRouting: {\n clusterId: \"cluster-1\",\n allowTransactionalWrites: true,\n },\n standardIsolation: {\n priority: \"PRIORITY_LOW\",\n },\n ignoreWarnings: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.bigtable.Instance(\"instance\",\n name=\"bt-instance\",\n clusters=[{\n \"clusterId\": \"cluster-1\",\n \"zone\": \"us-central1-b\",\n \"numNodes\": 3,\n \"storageType\": \"HDD\",\n }],\n deletion_protection=True)\nap = gcp.bigquery.AppProfile(\"ap\",\n instance=instance.name,\n app_profile_id=\"bt-profile\",\n single_cluster_routing={\n \"clusterId\": \"cluster-1\",\n \"allowTransactionalWrites\": True,\n },\n standard_isolation={\n \"priority\": \"PRIORITY_LOW\",\n },\n ignore_warnings=True)\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.BigTable.Instance(\"instance\", new()\n {\n Name = \"bt-instance\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"cluster-1\",\n Zone = \"us-central1-b\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n },\n DeletionProtection = true,\n });\n\n var ap = new Gcp.BigQuery.AppProfile(\"ap\", new()\n {\n Instance = instance.Name,\n AppProfileId = \"bt-profile\",\n SingleClusterRouting = new Gcp.BigQuery.Inputs.AppProfileSingleClusterRoutingArgs\n {\n ClusterId = \"cluster-1\",\n AllowTransactionalWrites = true,\n },\n StandardIsolation = new Gcp.BigQuery.Inputs.AppProfileStandardIsolationArgs\n {\n Priority = \"PRIORITY_LOW\",\n },\n IgnoreWarnings = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewInstance(ctx, \"instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"bt-instance\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"cluster-1\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewAppProfile(ctx, \"ap\", \u0026bigquery.AppProfileArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tAppProfileId: pulumi.String(\"bt-profile\"),\n\t\t\tSingleClusterRouting: \u0026bigquery.AppProfileSingleClusterRoutingArgs{\n\t\t\t\tClusterId: pulumi.String(\"cluster-1\"),\n\t\t\t\tAllowTransactionalWrites: pulumi.Bool(true),\n\t\t\t},\n\t\t\tStandardIsolation: \u0026bigquery.AppProfileStandardIsolationArgs{\n\t\t\t\tPriority: pulumi.String(\"PRIORITY_LOW\"),\n\t\t\t},\n\t\t\tIgnoreWarnings: pulumi.Bool(true),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\nimport com.pulumi.gcp.bigquery.AppProfile;\nimport com.pulumi.gcp.bigquery.AppProfileArgs;\nimport com.pulumi.gcp.bigquery.inputs.AppProfileSingleClusterRoutingArgs;\nimport com.pulumi.gcp.bigquery.inputs.AppProfileStandardIsolationArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"bt-instance\")\n .clusters(InstanceClusterArgs.builder()\n .clusterId(\"cluster-1\")\n .zone(\"us-central1-b\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var ap = new AppProfile(\"ap\", AppProfileArgs.builder()\n .instance(instance.name())\n .appProfileId(\"bt-profile\")\n .singleClusterRouting(AppProfileSingleClusterRoutingArgs.builder()\n .clusterId(\"cluster-1\")\n .allowTransactionalWrites(true)\n .build())\n .standardIsolation(AppProfileStandardIsolationArgs.builder()\n .priority(\"PRIORITY_LOW\")\n .build())\n .ignoreWarnings(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:bigtable:Instance\n properties:\n name: bt-instance\n clusters:\n - clusterId: cluster-1\n zone: us-central1-b\n numNodes: 3\n storageType: HDD\n deletionProtection: 'true'\n ap:\n type: gcp:bigquery:AppProfile\n properties:\n instance: ${instance.name}\n appProfileId: bt-profile\n singleClusterRouting:\n clusterId: cluster-1\n allowTransactionalWrites: true\n standardIsolation:\n priority: PRIORITY_LOW\n ignoreWarnings: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAppProfile can be imported using any of these accepted formats:\n\n* `projects/{{project}}/instances/{{instance}}/appProfiles/{{app_profile_id}}`\n\n* `{{project}}/{{instance}}/{{app_profile_id}}`\n\n* `{{instance}}/{{app_profile_id}}`\n\nWhen using the `pulumi import` command, AppProfile can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/appProfile:AppProfile default projects/{{project}}/instances/{{instance}}/appProfiles/{{app_profile_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/appProfile:AppProfile default {{project}}/{{instance}}/{{app_profile_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/appProfile:AppProfile default {{instance}}/{{app_profile_id}}\n```\n\n", + "description": "App profile is a configuration object describing how Cloud Bigtable should treat traffic from a particular end user application.\n\n\nTo get more information about AppProfile, see:\n\n* [API documentation](https://cloud.google.com/bigtable/docs/reference/admin/rest/v2/projects.instances.appProfiles)\n\n## Example Usage\n\n### Bigtable App Profile Anycluster\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.bigtable.Instance(\"instance\", {\n name: \"bt-instance\",\n clusters: [\n {\n clusterId: \"cluster-1\",\n zone: \"us-central1-a\",\n numNodes: 3,\n storageType: \"HDD\",\n },\n {\n clusterId: \"cluster-2\",\n zone: \"us-central1-b\",\n numNodes: 3,\n storageType: \"HDD\",\n },\n {\n clusterId: \"cluster-3\",\n zone: \"us-central1-c\",\n numNodes: 3,\n storageType: \"HDD\",\n },\n ],\n deletionProtection: true,\n});\nconst ap = new gcp.bigquery.AppProfile(\"ap\", {\n instance: instance.name,\n appProfileId: \"bt-profile\",\n multiClusterRoutingUseAny: true,\n ignoreWarnings: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.bigtable.Instance(\"instance\",\n name=\"bt-instance\",\n clusters=[\n {\n \"cluster_id\": \"cluster-1\",\n \"zone\": \"us-central1-a\",\n \"num_nodes\": 3,\n \"storage_type\": \"HDD\",\n },\n {\n \"cluster_id\": \"cluster-2\",\n \"zone\": \"us-central1-b\",\n \"num_nodes\": 3,\n \"storage_type\": \"HDD\",\n },\n {\n \"cluster_id\": \"cluster-3\",\n \"zone\": \"us-central1-c\",\n \"num_nodes\": 3,\n \"storage_type\": \"HDD\",\n },\n ],\n deletion_protection=True)\nap = gcp.bigquery.AppProfile(\"ap\",\n instance=instance.name,\n app_profile_id=\"bt-profile\",\n multi_cluster_routing_use_any=True,\n ignore_warnings=True)\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.BigTable.Instance(\"instance\", new()\n {\n Name = \"bt-instance\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"cluster-1\",\n Zone = \"us-central1-a\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"cluster-2\",\n Zone = \"us-central1-b\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"cluster-3\",\n Zone = \"us-central1-c\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n },\n DeletionProtection = true,\n });\n\n var ap = new Gcp.BigQuery.AppProfile(\"ap\", new()\n {\n Instance = instance.Name,\n AppProfileId = \"bt-profile\",\n MultiClusterRoutingUseAny = true,\n IgnoreWarnings = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewInstance(ctx, \"instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"bt-instance\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"cluster-1\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"cluster-2\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"cluster-3\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewAppProfile(ctx, \"ap\", \u0026bigquery.AppProfileArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tAppProfileId: pulumi.String(\"bt-profile\"),\n\t\t\tMultiClusterRoutingUseAny: pulumi.Bool(true),\n\t\t\tIgnoreWarnings: pulumi.Bool(true),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\nimport com.pulumi.gcp.bigquery.AppProfile;\nimport com.pulumi.gcp.bigquery.AppProfileArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"bt-instance\")\n .clusters( \n InstanceClusterArgs.builder()\n .clusterId(\"cluster-1\")\n .zone(\"us-central1-a\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build(),\n InstanceClusterArgs.builder()\n .clusterId(\"cluster-2\")\n .zone(\"us-central1-b\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build(),\n InstanceClusterArgs.builder()\n .clusterId(\"cluster-3\")\n .zone(\"us-central1-c\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var ap = new AppProfile(\"ap\", AppProfileArgs.builder()\n .instance(instance.name())\n .appProfileId(\"bt-profile\")\n .multiClusterRoutingUseAny(true)\n .ignoreWarnings(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:bigtable:Instance\n properties:\n name: bt-instance\n clusters:\n - clusterId: cluster-1\n zone: us-central1-a\n numNodes: 3\n storageType: HDD\n - clusterId: cluster-2\n zone: us-central1-b\n numNodes: 3\n storageType: HDD\n - clusterId: cluster-3\n zone: us-central1-c\n numNodes: 3\n storageType: HDD\n deletionProtection: 'true'\n ap:\n type: gcp:bigquery:AppProfile\n properties:\n instance: ${instance.name}\n appProfileId: bt-profile\n multiClusterRoutingUseAny: true\n ignoreWarnings: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigtable App Profile Singlecluster\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.bigtable.Instance(\"instance\", {\n name: \"bt-instance\",\n clusters: [{\n clusterId: \"cluster-1\",\n zone: \"us-central1-b\",\n numNodes: 3,\n storageType: \"HDD\",\n }],\n deletionProtection: true,\n});\nconst ap = new gcp.bigquery.AppProfile(\"ap\", {\n instance: instance.name,\n appProfileId: \"bt-profile\",\n singleClusterRouting: {\n clusterId: \"cluster-1\",\n allowTransactionalWrites: true,\n },\n ignoreWarnings: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.bigtable.Instance(\"instance\",\n name=\"bt-instance\",\n clusters=[{\n \"cluster_id\": \"cluster-1\",\n \"zone\": \"us-central1-b\",\n \"num_nodes\": 3,\n \"storage_type\": \"HDD\",\n }],\n deletion_protection=True)\nap = gcp.bigquery.AppProfile(\"ap\",\n instance=instance.name,\n app_profile_id=\"bt-profile\",\n single_cluster_routing={\n \"cluster_id\": \"cluster-1\",\n \"allow_transactional_writes\": True,\n },\n ignore_warnings=True)\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.BigTable.Instance(\"instance\", new()\n {\n Name = \"bt-instance\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"cluster-1\",\n Zone = \"us-central1-b\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n },\n DeletionProtection = true,\n });\n\n var ap = new Gcp.BigQuery.AppProfile(\"ap\", new()\n {\n Instance = instance.Name,\n AppProfileId = \"bt-profile\",\n SingleClusterRouting = new Gcp.BigQuery.Inputs.AppProfileSingleClusterRoutingArgs\n {\n ClusterId = \"cluster-1\",\n AllowTransactionalWrites = true,\n },\n IgnoreWarnings = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewInstance(ctx, \"instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"bt-instance\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"cluster-1\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewAppProfile(ctx, \"ap\", \u0026bigquery.AppProfileArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tAppProfileId: pulumi.String(\"bt-profile\"),\n\t\t\tSingleClusterRouting: \u0026bigquery.AppProfileSingleClusterRoutingArgs{\n\t\t\t\tClusterId: pulumi.String(\"cluster-1\"),\n\t\t\t\tAllowTransactionalWrites: pulumi.Bool(true),\n\t\t\t},\n\t\t\tIgnoreWarnings: pulumi.Bool(true),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\nimport com.pulumi.gcp.bigquery.AppProfile;\nimport com.pulumi.gcp.bigquery.AppProfileArgs;\nimport com.pulumi.gcp.bigquery.inputs.AppProfileSingleClusterRoutingArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"bt-instance\")\n .clusters(InstanceClusterArgs.builder()\n .clusterId(\"cluster-1\")\n .zone(\"us-central1-b\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var ap = new AppProfile(\"ap\", AppProfileArgs.builder()\n .instance(instance.name())\n .appProfileId(\"bt-profile\")\n .singleClusterRouting(AppProfileSingleClusterRoutingArgs.builder()\n .clusterId(\"cluster-1\")\n .allowTransactionalWrites(true)\n .build())\n .ignoreWarnings(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:bigtable:Instance\n properties:\n name: bt-instance\n clusters:\n - clusterId: cluster-1\n zone: us-central1-b\n numNodes: 3\n storageType: HDD\n deletionProtection: 'true'\n ap:\n type: gcp:bigquery:AppProfile\n properties:\n instance: ${instance.name}\n appProfileId: bt-profile\n singleClusterRouting:\n clusterId: cluster-1\n allowTransactionalWrites: true\n ignoreWarnings: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigtable App Profile Multicluster\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.bigtable.Instance(\"instance\", {\n name: \"bt-instance\",\n clusters: [\n {\n clusterId: \"cluster-1\",\n zone: \"us-central1-a\",\n numNodes: 3,\n storageType: \"HDD\",\n },\n {\n clusterId: \"cluster-2\",\n zone: \"us-central1-b\",\n numNodes: 3,\n storageType: \"HDD\",\n },\n {\n clusterId: \"cluster-3\",\n zone: \"us-central1-c\",\n numNodes: 3,\n storageType: \"HDD\",\n },\n ],\n deletionProtection: true,\n});\nconst ap = new gcp.bigquery.AppProfile(\"ap\", {\n instance: instance.name,\n appProfileId: \"bt-profile\",\n multiClusterRoutingUseAny: true,\n multiClusterRoutingClusterIds: [\n \"cluster-1\",\n \"cluster-2\",\n ],\n ignoreWarnings: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.bigtable.Instance(\"instance\",\n name=\"bt-instance\",\n clusters=[\n {\n \"cluster_id\": \"cluster-1\",\n \"zone\": \"us-central1-a\",\n \"num_nodes\": 3,\n \"storage_type\": \"HDD\",\n },\n {\n \"cluster_id\": \"cluster-2\",\n \"zone\": \"us-central1-b\",\n \"num_nodes\": 3,\n \"storage_type\": \"HDD\",\n },\n {\n \"cluster_id\": \"cluster-3\",\n \"zone\": \"us-central1-c\",\n \"num_nodes\": 3,\n \"storage_type\": \"HDD\",\n },\n ],\n deletion_protection=True)\nap = gcp.bigquery.AppProfile(\"ap\",\n instance=instance.name,\n app_profile_id=\"bt-profile\",\n multi_cluster_routing_use_any=True,\n multi_cluster_routing_cluster_ids=[\n \"cluster-1\",\n \"cluster-2\",\n ],\n ignore_warnings=True)\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.BigTable.Instance(\"instance\", new()\n {\n Name = \"bt-instance\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"cluster-1\",\n Zone = \"us-central1-a\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"cluster-2\",\n Zone = \"us-central1-b\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"cluster-3\",\n Zone = \"us-central1-c\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n },\n DeletionProtection = true,\n });\n\n var ap = new Gcp.BigQuery.AppProfile(\"ap\", new()\n {\n Instance = instance.Name,\n AppProfileId = \"bt-profile\",\n MultiClusterRoutingUseAny = true,\n MultiClusterRoutingClusterIds = new[]\n {\n \"cluster-1\",\n \"cluster-2\",\n },\n IgnoreWarnings = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewInstance(ctx, \"instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"bt-instance\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"cluster-1\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"cluster-2\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"cluster-3\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewAppProfile(ctx, \"ap\", \u0026bigquery.AppProfileArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tAppProfileId: pulumi.String(\"bt-profile\"),\n\t\t\tMultiClusterRoutingUseAny: pulumi.Bool(true),\n\t\t\tMultiClusterRoutingClusterIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"cluster-1\"),\n\t\t\t\tpulumi.String(\"cluster-2\"),\n\t\t\t},\n\t\t\tIgnoreWarnings: pulumi.Bool(true),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\nimport com.pulumi.gcp.bigquery.AppProfile;\nimport com.pulumi.gcp.bigquery.AppProfileArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"bt-instance\")\n .clusters( \n InstanceClusterArgs.builder()\n .clusterId(\"cluster-1\")\n .zone(\"us-central1-a\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build(),\n InstanceClusterArgs.builder()\n .clusterId(\"cluster-2\")\n .zone(\"us-central1-b\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build(),\n InstanceClusterArgs.builder()\n .clusterId(\"cluster-3\")\n .zone(\"us-central1-c\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var ap = new AppProfile(\"ap\", AppProfileArgs.builder()\n .instance(instance.name())\n .appProfileId(\"bt-profile\")\n .multiClusterRoutingUseAny(true)\n .multiClusterRoutingClusterIds( \n \"cluster-1\",\n \"cluster-2\")\n .ignoreWarnings(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:bigtable:Instance\n properties:\n name: bt-instance\n clusters:\n - clusterId: cluster-1\n zone: us-central1-a\n numNodes: 3\n storageType: HDD\n - clusterId: cluster-2\n zone: us-central1-b\n numNodes: 3\n storageType: HDD\n - clusterId: cluster-3\n zone: us-central1-c\n numNodes: 3\n storageType: HDD\n deletionProtection: 'true'\n ap:\n type: gcp:bigquery:AppProfile\n properties:\n instance: ${instance.name}\n appProfileId: bt-profile\n multiClusterRoutingUseAny: true\n multiClusterRoutingClusterIds:\n - cluster-1\n - cluster-2\n ignoreWarnings: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigtable App Profile Priority\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.bigtable.Instance(\"instance\", {\n name: \"bt-instance\",\n clusters: [{\n clusterId: \"cluster-1\",\n zone: \"us-central1-b\",\n numNodes: 3,\n storageType: \"HDD\",\n }],\n deletionProtection: true,\n});\nconst ap = new gcp.bigquery.AppProfile(\"ap\", {\n instance: instance.name,\n appProfileId: \"bt-profile\",\n singleClusterRouting: {\n clusterId: \"cluster-1\",\n allowTransactionalWrites: true,\n },\n standardIsolation: {\n priority: \"PRIORITY_LOW\",\n },\n ignoreWarnings: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.bigtable.Instance(\"instance\",\n name=\"bt-instance\",\n clusters=[{\n \"cluster_id\": \"cluster-1\",\n \"zone\": \"us-central1-b\",\n \"num_nodes\": 3,\n \"storage_type\": \"HDD\",\n }],\n deletion_protection=True)\nap = gcp.bigquery.AppProfile(\"ap\",\n instance=instance.name,\n app_profile_id=\"bt-profile\",\n single_cluster_routing={\n \"cluster_id\": \"cluster-1\",\n \"allow_transactional_writes\": True,\n },\n standard_isolation={\n \"priority\": \"PRIORITY_LOW\",\n },\n ignore_warnings=True)\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.BigTable.Instance(\"instance\", new()\n {\n Name = \"bt-instance\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"cluster-1\",\n Zone = \"us-central1-b\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n },\n DeletionProtection = true,\n });\n\n var ap = new Gcp.BigQuery.AppProfile(\"ap\", new()\n {\n Instance = instance.Name,\n AppProfileId = \"bt-profile\",\n SingleClusterRouting = new Gcp.BigQuery.Inputs.AppProfileSingleClusterRoutingArgs\n {\n ClusterId = \"cluster-1\",\n AllowTransactionalWrites = true,\n },\n StandardIsolation = new Gcp.BigQuery.Inputs.AppProfileStandardIsolationArgs\n {\n Priority = \"PRIORITY_LOW\",\n },\n IgnoreWarnings = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewInstance(ctx, \"instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"bt-instance\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"cluster-1\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewAppProfile(ctx, \"ap\", \u0026bigquery.AppProfileArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tAppProfileId: pulumi.String(\"bt-profile\"),\n\t\t\tSingleClusterRouting: \u0026bigquery.AppProfileSingleClusterRoutingArgs{\n\t\t\t\tClusterId: pulumi.String(\"cluster-1\"),\n\t\t\t\tAllowTransactionalWrites: pulumi.Bool(true),\n\t\t\t},\n\t\t\tStandardIsolation: \u0026bigquery.AppProfileStandardIsolationArgs{\n\t\t\t\tPriority: pulumi.String(\"PRIORITY_LOW\"),\n\t\t\t},\n\t\t\tIgnoreWarnings: pulumi.Bool(true),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\nimport com.pulumi.gcp.bigquery.AppProfile;\nimport com.pulumi.gcp.bigquery.AppProfileArgs;\nimport com.pulumi.gcp.bigquery.inputs.AppProfileSingleClusterRoutingArgs;\nimport com.pulumi.gcp.bigquery.inputs.AppProfileStandardIsolationArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"bt-instance\")\n .clusters(InstanceClusterArgs.builder()\n .clusterId(\"cluster-1\")\n .zone(\"us-central1-b\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var ap = new AppProfile(\"ap\", AppProfileArgs.builder()\n .instance(instance.name())\n .appProfileId(\"bt-profile\")\n .singleClusterRouting(AppProfileSingleClusterRoutingArgs.builder()\n .clusterId(\"cluster-1\")\n .allowTransactionalWrites(true)\n .build())\n .standardIsolation(AppProfileStandardIsolationArgs.builder()\n .priority(\"PRIORITY_LOW\")\n .build())\n .ignoreWarnings(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:bigtable:Instance\n properties:\n name: bt-instance\n clusters:\n - clusterId: cluster-1\n zone: us-central1-b\n numNodes: 3\n storageType: HDD\n deletionProtection: 'true'\n ap:\n type: gcp:bigquery:AppProfile\n properties:\n instance: ${instance.name}\n appProfileId: bt-profile\n singleClusterRouting:\n clusterId: cluster-1\n allowTransactionalWrites: true\n standardIsolation:\n priority: PRIORITY_LOW\n ignoreWarnings: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAppProfile can be imported using any of these accepted formats:\n\n* `projects/{{project}}/instances/{{instance}}/appProfiles/{{app_profile_id}}`\n\n* `{{project}}/{{instance}}/{{app_profile_id}}`\n\n* `{{instance}}/{{app_profile_id}}`\n\nWhen using the `pulumi import` command, AppProfile can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/appProfile:AppProfile default projects/{{project}}/instances/{{instance}}/appProfiles/{{app_profile_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/appProfile:AppProfile default {{project}}/{{instance}}/{{app_profile_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/appProfile:AppProfile default {{instance}}/{{app_profile_id}}\n```\n\n", "properties": { "appProfileId": { "type": "string", @@ -122426,7 +122426,7 @@ } }, "gcp:bigquery/connection:Connection": { - "description": "A connection allows BigQuery connections to external data sources..\n\n\nTo get more information about Connection, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/bigqueryconnection/rest/v1/projects.locations.connections/create)\n* How-to Guides\n * [Cloud SQL federated queries](https://cloud.google.com/bigquery/docs/cloud-sql-federated-queries)\n\n\n\n## Example Usage\n\n### Bigquery Connection Cloud Resource\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudResource: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_resource={})\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 connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudResource = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudResource: nil,\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.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudResourceArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudResource()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudResource: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-database-instance\",\n databaseVersion: \"POSTGRES_11\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n friendlyName: \"👋\",\n description: \"a riveting description\",\n location: \"US\",\n cloudSql: {\n instanceId: instance.connectionName,\n database: db.name,\n type: \"POSTGRES\",\n credential: {\n username: user.name,\n password: user.password,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-database-instance\",\n database_version=\"POSTGRES_11\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\nconnection = gcp.bigquery.Connection(\"connection\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n location=\"US\",\n cloud_sql={\n \"instanceId\": instance.connection_name,\n \"database\": db.name,\n \"type\": \"POSTGRES\",\n \"credential\": {\n \"username\": user.name,\n \"password\": user.password,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-database-instance\",\n DatabaseVersion = \"POSTGRES_11\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Location = \"US\",\n CloudSql = new Gcp.BigQuery.Inputs.ConnectionCloudSqlArgs\n {\n InstanceId = instance.ConnectionName,\n Database = db.Name,\n Type = \"POSTGRES\",\n Credential = new Gcp.BigQuery.Inputs.ConnectionCloudSqlCredentialArgs\n {\n Username = user.Name,\n Password = user.Password,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\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 := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_11\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tCloudSql: \u0026bigquery.ConnectionCloudSqlArgs{\n\t\t\t\tInstanceId: instance.ConnectionName,\n\t\t\t\tDatabase: db.Name,\n\t\t\t\tType: pulumi.String(\"POSTGRES\"),\n\t\t\t\tCredential: \u0026bigquery.ConnectionCloudSqlCredentialArgs{\n\t\t\t\t\tUsername: user.Name,\n\t\t\t\t\tPassword: user.Password,\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.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlCredentialArgs;\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 DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-database-instance\")\n .databaseVersion(\"POSTGRES_11\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .location(\"US\")\n .cloudSql(ConnectionCloudSqlArgs.builder()\n .instanceId(instance.connectionName())\n .database(db.name())\n .type(\"POSTGRES\")\n .credential(ConnectionCloudSqlCredentialArgs.builder()\n .username(user.name())\n .password(user.password())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database-instance\n databaseVersion: POSTGRES_11\n region: us-central1\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n connection:\n type: gcp:bigquery:Connection\n properties:\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n location: US\n cloudSql:\n instanceId: ${instance.connectionName}\n database: ${db.name}\n type: POSTGRES\n credential:\n username: ${user.name}\n password: ${user.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-database-instance\",\n databaseVersion: \"POSTGRES_11\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudSql: {\n instanceId: instance.connectionName,\n database: db.name,\n type: \"POSTGRES\",\n credential: {\n username: user.name,\n password: user.password,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-database-instance\",\n database_version=\"POSTGRES_11\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_sql={\n \"instanceId\": instance.connection_name,\n \"database\": db.name,\n \"type\": \"POSTGRES\",\n \"credential\": {\n \"username\": user.name,\n \"password\": user.password,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-database-instance\",\n DatabaseVersion = \"POSTGRES_11\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudSql = new Gcp.BigQuery.Inputs.ConnectionCloudSqlArgs\n {\n InstanceId = instance.ConnectionName,\n Database = db.Name,\n Type = \"POSTGRES\",\n Credential = new Gcp.BigQuery.Inputs.ConnectionCloudSqlCredentialArgs\n {\n Username = user.Name,\n Password = user.Password,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\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 := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_11\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudSql: \u0026bigquery.ConnectionCloudSqlArgs{\n\t\t\t\tInstanceId: instance.ConnectionName,\n\t\t\t\tDatabase: db.Name,\n\t\t\t\tType: pulumi.String(\"POSTGRES\"),\n\t\t\t\tCredential: \u0026bigquery.ConnectionCloudSqlCredentialArgs{\n\t\t\t\t\tUsername: user.Name,\n\t\t\t\t\tPassword: user.Password,\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.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlCredentialArgs;\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 DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-database-instance\")\n .databaseVersion(\"POSTGRES_11\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudSql(ConnectionCloudSqlArgs.builder()\n .instanceId(instance.connectionName())\n .database(db.name())\n .type(\"POSTGRES\")\n .credential(ConnectionCloudSqlCredentialArgs.builder()\n .username(user.name())\n .password(user.password())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database-instance\n databaseVersion: POSTGRES_11\n region: us-central1\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudSql:\n instanceId: ${instance.connectionName}\n database: ${db.name}\n type: POSTGRES\n credential:\n username: ${user.name}\n password: ${user.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Aws\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"aws-us-east-1\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n aws: {\n accessRole: {\n iamRoleId: \"arn:aws:iam::999999999999:role/omnirole\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"aws-us-east-1\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n aws={\n \"accessRole\": {\n \"iamRoleId\": \"arn:aws:iam::999999999999:role/omnirole\",\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 connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"aws-us-east-1\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Aws = new Gcp.BigQuery.Inputs.ConnectionAwsArgs\n {\n AccessRole = new Gcp.BigQuery.Inputs.ConnectionAwsAccessRoleArgs\n {\n IamRoleId = \"arn:aws:iam::999999999999:role/omnirole\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"aws-us-east-1\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tAws: \u0026bigquery.ConnectionAwsArgs{\n\t\t\t\tAccessRole: \u0026bigquery.ConnectionAwsAccessRoleArgs{\n\t\t\t\t\tIamRoleId: pulumi.String(\"arn:aws:iam::999999999999:role/omnirole\"),\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.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionAwsArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionAwsAccessRoleArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"aws-us-east-1\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .aws(ConnectionAwsArgs.builder()\n .accessRole(ConnectionAwsAccessRoleArgs.builder()\n .iamRoleId(\"arn:aws:iam::999999999999:role/omnirole\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: aws-us-east-1\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n aws:\n accessRole:\n iamRoleId: arn:aws:iam::999999999999:role/omnirole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Azure\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"azure-eastus2\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n azure: {\n customerTenantId: \"customer-tenant-id\",\n federatedApplicationClientId: \"b43eeeee-eeee-eeee-eeee-a480155501ce\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"azure-eastus2\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n azure={\n \"customerTenantId\": \"customer-tenant-id\",\n \"federatedApplicationClientId\": \"b43eeeee-eeee-eeee-eeee-a480155501ce\",\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 connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"azure-eastus2\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Azure = new Gcp.BigQuery.Inputs.ConnectionAzureArgs\n {\n CustomerTenantId = \"customer-tenant-id\",\n FederatedApplicationClientId = \"b43eeeee-eeee-eeee-eeee-a480155501ce\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"azure-eastus2\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tAzure: \u0026bigquery.ConnectionAzureArgs{\n\t\t\t\tCustomerTenantId: pulumi.String(\"customer-tenant-id\"),\n\t\t\t\tFederatedApplicationClientId: pulumi.String(\"b43eeeee-eeee-eeee-eeee-a480155501ce\"),\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.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionAzureArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"azure-eastus2\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .azure(ConnectionAzureArgs.builder()\n .customerTenantId(\"customer-tenant-id\")\n .federatedApplicationClientId(\"b43eeeee-eeee-eeee-eeee-a480155501ce\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: azure-eastus2\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n azure:\n customerTenantId: customer-tenant-id\n federatedApplicationClientId: b43eeeee-eeee-eeee-eeee-a480155501ce\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Cloudspanner\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudSpanner: {\n database: \"projects/project/instances/instance/databases/database\",\n databaseRole: \"database_role\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_spanner={\n \"database\": \"projects/project/instances/instance/databases/database\",\n \"databaseRole\": \"database_role\",\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 connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudSpanner = new Gcp.BigQuery.Inputs.ConnectionCloudSpannerArgs\n {\n Database = \"projects/project/instances/instance/databases/database\",\n DatabaseRole = \"database_role\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudSpanner: \u0026bigquery.ConnectionCloudSpannerArgs{\n\t\t\t\tDatabase: pulumi.String(\"projects/project/instances/instance/databases/database\"),\n\t\t\t\tDatabaseRole: pulumi.String(\"database_role\"),\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.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSpannerArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudSpanner(ConnectionCloudSpannerArgs.builder()\n .database(\"projects/project/instances/instance/databases/database\")\n .databaseRole(\"database_role\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudSpanner:\n database: projects/project/instances/instance/databases/database\n databaseRole: database_role\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Cloudspanner Databoost\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudSpanner: {\n database: \"projects/project/instances/instance/databases/database\",\n useParallelism: true,\n useDataBoost: true,\n maxParallelism: 100,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_spanner={\n \"database\": \"projects/project/instances/instance/databases/database\",\n \"useParallelism\": True,\n \"useDataBoost\": True,\n \"maxParallelism\": 100,\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 connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudSpanner = new Gcp.BigQuery.Inputs.ConnectionCloudSpannerArgs\n {\n Database = \"projects/project/instances/instance/databases/database\",\n UseParallelism = true,\n UseDataBoost = true,\n MaxParallelism = 100,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudSpanner: \u0026bigquery.ConnectionCloudSpannerArgs{\n\t\t\t\tDatabase: pulumi.String(\"projects/project/instances/instance/databases/database\"),\n\t\t\t\tUseParallelism: pulumi.Bool(true),\n\t\t\t\tUseDataBoost: pulumi.Bool(true),\n\t\t\t\tMaxParallelism: pulumi.Int(100),\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.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSpannerArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudSpanner(ConnectionCloudSpannerArgs.builder()\n .database(\"projects/project/instances/instance/databases/database\")\n .useParallelism(true)\n .useDataBoost(true)\n .maxParallelism(100)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudSpanner:\n database: projects/project/instances/instance/databases/database\n useParallelism: true\n useDataBoost: true\n maxParallelism: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Spark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataproc.Cluster(\"basic\", {\n name: \"my-connection\",\n region: \"us-central1\",\n clusterConfig: {\n softwareConfig: {\n overrideProperties: {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n },\n },\n masterConfig: {\n numInstances: 1,\n machineType: \"e2-standard-2\",\n diskConfig: {\n bootDiskSizeGb: 35,\n },\n },\n },\n});\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n spark: {\n sparkHistoryServerConfig: {\n dataprocCluster: basic.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataproc.Cluster(\"basic\",\n name=\"my-connection\",\n region=\"us-central1\",\n cluster_config={\n \"softwareConfig\": {\n \"overrideProperties\": {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n },\n },\n \"masterConfig\": {\n \"numInstances\": 1,\n \"machineType\": \"e2-standard-2\",\n \"diskConfig\": {\n \"bootDiskSizeGb\": 35,\n },\n },\n })\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n spark={\n \"sparkHistoryServerConfig\": {\n \"dataprocCluster\": basic.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 basic = new Gcp.Dataproc.Cluster(\"basic\", new()\n {\n Name = \"my-connection\",\n Region = \"us-central1\",\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n SoftwareConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigSoftwareConfigArgs\n {\n OverrideProperties = \n {\n { \"dataproc:dataproc.allow.zero.workers\", \"true\" },\n },\n },\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n NumInstances = 1,\n MachineType = \"e2-standard-2\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigDiskConfigArgs\n {\n BootDiskSizeGb = 35,\n },\n },\n },\n });\n\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Spark = new Gcp.BigQuery.Inputs.ConnectionSparkArgs\n {\n SparkHistoryServerConfig = new Gcp.BigQuery.Inputs.ConnectionSparkSparkHistoryServerConfigArgs\n {\n DataprocCluster = basic.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tbasic, err := dataproc.NewCluster(ctx, \"basic\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-connection\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026dataproc.ClusterClusterConfigSoftwareConfigArgs{\n\t\t\t\t\tOverrideProperties: pulumi.StringMap{\n\t\t\t\t\t\t\"dataproc:dataproc.allow.zero.workers\": pulumi.String(\"true\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(1),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-2\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigMasterConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\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 = bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tSpark: \u0026bigquery.ConnectionSparkArgs{\n\t\t\t\tSparkHistoryServerConfig: \u0026bigquery.ConnectionSparkSparkHistoryServerConfigArgs{\n\t\t\t\t\tDataprocCluster: basic.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.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigDiskConfigArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkSparkHistoryServerConfigArgs;\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 Cluster(\"basic\", ClusterArgs.builder()\n .name(\"my-connection\")\n .region(\"us-central1\")\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .softwareConfig(ClusterClusterConfigSoftwareConfigArgs.builder()\n .overrideProperties(Map.of(\"dataproc:dataproc.allow.zero.workers\", \"true\"))\n .build())\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .numInstances(1)\n .machineType(\"e2-standard-2\")\n .diskConfig(ClusterClusterConfigMasterConfigDiskConfigArgs.builder()\n .bootDiskSizeGb(35)\n .build())\n .build())\n .build())\n .build());\n\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .spark(ConnectionSparkArgs.builder()\n .sparkHistoryServerConfig(ConnectionSparkSparkHistoryServerConfigArgs.builder()\n .dataprocCluster(basic.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n spark:\n sparkHistoryServerConfig:\n dataprocCluster: ${basic.id}\n basic:\n type: gcp:dataproc:Cluster\n properties:\n name: my-connection\n region: us-central1\n clusterConfig:\n softwareConfig:\n overrideProperties:\n dataproc:dataproc.allow.zero.workers: 'true'\n masterConfig:\n numInstances: 1\n machineType: e2-standard-2\n diskConfig:\n bootDiskSizeGb: 35\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Kms\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-database-instance\",\n databaseVersion: \"POSTGRES_11\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: \"tf-test-my-password_77884\",\n});\nconst bq_connection_cmek = new gcp.bigquery.Connection(\"bq-connection-cmek\", {\n friendlyName: \"👋\",\n description: \"a riveting description\",\n location: \"US\",\n kmsKeyName: \"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\",\n cloudSql: {\n instanceId: instance.connectionName,\n database: db.name,\n type: \"POSTGRES\",\n credential: {\n username: user.name,\n password: user.password,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-database-instance\",\n database_version=\"POSTGRES_11\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=\"tf-test-my-password_77884\")\nbq_connection_cmek = gcp.bigquery.Connection(\"bq-connection-cmek\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n location=\"US\",\n kms_key_name=\"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\",\n cloud_sql={\n \"instanceId\": instance.connection_name,\n \"database\": db.name,\n \"type\": \"POSTGRES\",\n \"credential\": {\n \"username\": user.name,\n \"password\": user.password,\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.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-database-instance\",\n DatabaseVersion = \"POSTGRES_11\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = \"tf-test-my-password_77884\",\n });\n\n var bq_connection_cmek = new Gcp.BigQuery.Connection(\"bq-connection-cmek\", new()\n {\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Location = \"US\",\n KmsKeyName = \"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\",\n CloudSql = new Gcp.BigQuery.Inputs.ConnectionCloudSqlArgs\n {\n InstanceId = instance.ConnectionName,\n Database = db.Name,\n Type = \"POSTGRES\",\n Credential = new Gcp.BigQuery.Inputs.ConnectionCloudSqlCredentialArgs\n {\n Username = user.Name,\n Password = user.Password,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_11\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pulumi.String(\"tf-test-my-password_77884\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"bq-connection-cmek\", \u0026bigquery.ConnectionArgs{\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tKmsKeyName: pulumi.String(\"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\"),\n\t\t\tCloudSql: \u0026bigquery.ConnectionCloudSqlArgs{\n\t\t\t\tInstanceId: instance.ConnectionName,\n\t\t\t\tDatabase: db.Name,\n\t\t\t\tType: pulumi.String(\"POSTGRES\"),\n\t\t\t\tCredential: \u0026bigquery.ConnectionCloudSqlCredentialArgs{\n\t\t\t\t\tUsername: user.Name,\n\t\t\t\t\tPassword: user.Password,\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.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlCredentialArgs;\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 DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-database-instance\")\n .databaseVersion(\"POSTGRES_11\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(\"tf-test-my-password_77884\")\n .build());\n\n var bq_connection_cmek = new Connection(\"bq-connection-cmek\", ConnectionArgs.builder()\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .location(\"US\")\n .kmsKeyName(\"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\")\n .cloudSql(ConnectionCloudSqlArgs.builder()\n .instanceId(instance.connectionName())\n .database(db.name())\n .type(\"POSTGRES\")\n .credential(ConnectionCloudSqlCredentialArgs.builder()\n .username(user.name())\n .password(user.password())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database-instance\n databaseVersion: POSTGRES_11\n region: us-central1\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: tf-test-my-password_77884\n bq-connection-cmek:\n type: gcp:bigquery:Connection\n properties:\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n location: US\n kmsKeyName: projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\n cloudSql:\n instanceId: ${instance.connectionName}\n database: ${db.name}\n type: POSTGRES\n credential:\n username: ${user.name}\n password: ${user.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`\n\n* `{{project}}/{{location}}/{{connection_id}}`\n\n* `{{location}}/{{connection_id}}`\n\nWhen using the `pulumi import` command, Connection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/connection:Connection default {{project}}/{{location}}/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/connection:Connection default {{location}}/{{connection_id}}\n```\n\n", + "description": "A connection allows BigQuery connections to external data sources..\n\n\nTo get more information about Connection, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/bigqueryconnection/rest/v1/projects.locations.connections/create)\n* How-to Guides\n * [Cloud SQL federated queries](https://cloud.google.com/bigquery/docs/cloud-sql-federated-queries)\n\n\n\n## Example Usage\n\n### Bigquery Connection Cloud Resource\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudResource: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_resource={})\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 connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudResource = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudResource: nil,\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.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudResourceArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudResource()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudResource: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-database-instance\",\n databaseVersion: \"POSTGRES_11\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n friendlyName: \"👋\",\n description: \"a riveting description\",\n location: \"US\",\n cloudSql: {\n instanceId: instance.connectionName,\n database: db.name,\n type: \"POSTGRES\",\n credential: {\n username: user.name,\n password: user.password,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-database-instance\",\n database_version=\"POSTGRES_11\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\nconnection = gcp.bigquery.Connection(\"connection\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n location=\"US\",\n cloud_sql={\n \"instance_id\": instance.connection_name,\n \"database\": db.name,\n \"type\": \"POSTGRES\",\n \"credential\": {\n \"username\": user.name,\n \"password\": user.password,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-database-instance\",\n DatabaseVersion = \"POSTGRES_11\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Location = \"US\",\n CloudSql = new Gcp.BigQuery.Inputs.ConnectionCloudSqlArgs\n {\n InstanceId = instance.ConnectionName,\n Database = db.Name,\n Type = \"POSTGRES\",\n Credential = new Gcp.BigQuery.Inputs.ConnectionCloudSqlCredentialArgs\n {\n Username = user.Name,\n Password = user.Password,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\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 := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_11\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tCloudSql: \u0026bigquery.ConnectionCloudSqlArgs{\n\t\t\t\tInstanceId: instance.ConnectionName,\n\t\t\t\tDatabase: db.Name,\n\t\t\t\tType: pulumi.String(\"POSTGRES\"),\n\t\t\t\tCredential: \u0026bigquery.ConnectionCloudSqlCredentialArgs{\n\t\t\t\t\tUsername: user.Name,\n\t\t\t\t\tPassword: user.Password,\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.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlCredentialArgs;\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 DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-database-instance\")\n .databaseVersion(\"POSTGRES_11\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .location(\"US\")\n .cloudSql(ConnectionCloudSqlArgs.builder()\n .instanceId(instance.connectionName())\n .database(db.name())\n .type(\"POSTGRES\")\n .credential(ConnectionCloudSqlCredentialArgs.builder()\n .username(user.name())\n .password(user.password())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database-instance\n databaseVersion: POSTGRES_11\n region: us-central1\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n connection:\n type: gcp:bigquery:Connection\n properties:\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n location: US\n cloudSql:\n instanceId: ${instance.connectionName}\n database: ${db.name}\n type: POSTGRES\n credential:\n username: ${user.name}\n password: ${user.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-database-instance\",\n databaseVersion: \"POSTGRES_11\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudSql: {\n instanceId: instance.connectionName,\n database: db.name,\n type: \"POSTGRES\",\n credential: {\n username: user.name,\n password: user.password,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-database-instance\",\n database_version=\"POSTGRES_11\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_sql={\n \"instance_id\": instance.connection_name,\n \"database\": db.name,\n \"type\": \"POSTGRES\",\n \"credential\": {\n \"username\": user.name,\n \"password\": user.password,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-database-instance\",\n DatabaseVersion = \"POSTGRES_11\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudSql = new Gcp.BigQuery.Inputs.ConnectionCloudSqlArgs\n {\n InstanceId = instance.ConnectionName,\n Database = db.Name,\n Type = \"POSTGRES\",\n Credential = new Gcp.BigQuery.Inputs.ConnectionCloudSqlCredentialArgs\n {\n Username = user.Name,\n Password = user.Password,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\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 := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_11\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudSql: \u0026bigquery.ConnectionCloudSqlArgs{\n\t\t\t\tInstanceId: instance.ConnectionName,\n\t\t\t\tDatabase: db.Name,\n\t\t\t\tType: pulumi.String(\"POSTGRES\"),\n\t\t\t\tCredential: \u0026bigquery.ConnectionCloudSqlCredentialArgs{\n\t\t\t\t\tUsername: user.Name,\n\t\t\t\t\tPassword: user.Password,\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.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlCredentialArgs;\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 DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-database-instance\")\n .databaseVersion(\"POSTGRES_11\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudSql(ConnectionCloudSqlArgs.builder()\n .instanceId(instance.connectionName())\n .database(db.name())\n .type(\"POSTGRES\")\n .credential(ConnectionCloudSqlCredentialArgs.builder()\n .username(user.name())\n .password(user.password())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database-instance\n databaseVersion: POSTGRES_11\n region: us-central1\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudSql:\n instanceId: ${instance.connectionName}\n database: ${db.name}\n type: POSTGRES\n credential:\n username: ${user.name}\n password: ${user.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Aws\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"aws-us-east-1\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n aws: {\n accessRole: {\n iamRoleId: \"arn:aws:iam::999999999999:role/omnirole\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"aws-us-east-1\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n aws={\n \"access_role\": {\n \"iam_role_id\": \"arn:aws:iam::999999999999:role/omnirole\",\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 connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"aws-us-east-1\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Aws = new Gcp.BigQuery.Inputs.ConnectionAwsArgs\n {\n AccessRole = new Gcp.BigQuery.Inputs.ConnectionAwsAccessRoleArgs\n {\n IamRoleId = \"arn:aws:iam::999999999999:role/omnirole\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"aws-us-east-1\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tAws: \u0026bigquery.ConnectionAwsArgs{\n\t\t\t\tAccessRole: \u0026bigquery.ConnectionAwsAccessRoleArgs{\n\t\t\t\t\tIamRoleId: pulumi.String(\"arn:aws:iam::999999999999:role/omnirole\"),\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.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionAwsArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionAwsAccessRoleArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"aws-us-east-1\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .aws(ConnectionAwsArgs.builder()\n .accessRole(ConnectionAwsAccessRoleArgs.builder()\n .iamRoleId(\"arn:aws:iam::999999999999:role/omnirole\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: aws-us-east-1\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n aws:\n accessRole:\n iamRoleId: arn:aws:iam::999999999999:role/omnirole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Azure\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"azure-eastus2\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n azure: {\n customerTenantId: \"customer-tenant-id\",\n federatedApplicationClientId: \"b43eeeee-eeee-eeee-eeee-a480155501ce\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"azure-eastus2\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n azure={\n \"customer_tenant_id\": \"customer-tenant-id\",\n \"federated_application_client_id\": \"b43eeeee-eeee-eeee-eeee-a480155501ce\",\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 connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"azure-eastus2\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Azure = new Gcp.BigQuery.Inputs.ConnectionAzureArgs\n {\n CustomerTenantId = \"customer-tenant-id\",\n FederatedApplicationClientId = \"b43eeeee-eeee-eeee-eeee-a480155501ce\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"azure-eastus2\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tAzure: \u0026bigquery.ConnectionAzureArgs{\n\t\t\t\tCustomerTenantId: pulumi.String(\"customer-tenant-id\"),\n\t\t\t\tFederatedApplicationClientId: pulumi.String(\"b43eeeee-eeee-eeee-eeee-a480155501ce\"),\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.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionAzureArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"azure-eastus2\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .azure(ConnectionAzureArgs.builder()\n .customerTenantId(\"customer-tenant-id\")\n .federatedApplicationClientId(\"b43eeeee-eeee-eeee-eeee-a480155501ce\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: azure-eastus2\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n azure:\n customerTenantId: customer-tenant-id\n federatedApplicationClientId: b43eeeee-eeee-eeee-eeee-a480155501ce\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Cloudspanner\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudSpanner: {\n database: \"projects/project/instances/instance/databases/database\",\n databaseRole: \"database_role\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_spanner={\n \"database\": \"projects/project/instances/instance/databases/database\",\n \"database_role\": \"database_role\",\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 connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudSpanner = new Gcp.BigQuery.Inputs.ConnectionCloudSpannerArgs\n {\n Database = \"projects/project/instances/instance/databases/database\",\n DatabaseRole = \"database_role\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudSpanner: \u0026bigquery.ConnectionCloudSpannerArgs{\n\t\t\t\tDatabase: pulumi.String(\"projects/project/instances/instance/databases/database\"),\n\t\t\t\tDatabaseRole: pulumi.String(\"database_role\"),\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.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSpannerArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudSpanner(ConnectionCloudSpannerArgs.builder()\n .database(\"projects/project/instances/instance/databases/database\")\n .databaseRole(\"database_role\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudSpanner:\n database: projects/project/instances/instance/databases/database\n databaseRole: database_role\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Cloudspanner Databoost\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudSpanner: {\n database: \"projects/project/instances/instance/databases/database\",\n useParallelism: true,\n useDataBoost: true,\n maxParallelism: 100,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_spanner={\n \"database\": \"projects/project/instances/instance/databases/database\",\n \"use_parallelism\": True,\n \"use_data_boost\": True,\n \"max_parallelism\": 100,\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 connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudSpanner = new Gcp.BigQuery.Inputs.ConnectionCloudSpannerArgs\n {\n Database = \"projects/project/instances/instance/databases/database\",\n UseParallelism = true,\n UseDataBoost = true,\n MaxParallelism = 100,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudSpanner: \u0026bigquery.ConnectionCloudSpannerArgs{\n\t\t\t\tDatabase: pulumi.String(\"projects/project/instances/instance/databases/database\"),\n\t\t\t\tUseParallelism: pulumi.Bool(true),\n\t\t\t\tUseDataBoost: pulumi.Bool(true),\n\t\t\t\tMaxParallelism: pulumi.Int(100),\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.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSpannerArgs;\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 connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudSpanner(ConnectionCloudSpannerArgs.builder()\n .database(\"projects/project/instances/instance/databases/database\")\n .useParallelism(true)\n .useDataBoost(true)\n .maxParallelism(100)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudSpanner:\n database: projects/project/instances/instance/databases/database\n useParallelism: true\n useDataBoost: true\n maxParallelism: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Spark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataproc.Cluster(\"basic\", {\n name: \"my-connection\",\n region: \"us-central1\",\n clusterConfig: {\n softwareConfig: {\n overrideProperties: {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n },\n },\n masterConfig: {\n numInstances: 1,\n machineType: \"e2-standard-2\",\n diskConfig: {\n bootDiskSizeGb: 35,\n },\n },\n },\n});\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n spark: {\n sparkHistoryServerConfig: {\n dataprocCluster: basic.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataproc.Cluster(\"basic\",\n name=\"my-connection\",\n region=\"us-central1\",\n cluster_config={\n \"software_config\": {\n \"override_properties\": {\n \"dataproc_dataproc_allow_zero_workers\": \"true\",\n },\n },\n \"master_config\": {\n \"num_instances\": 1,\n \"machine_type\": \"e2-standard-2\",\n \"disk_config\": {\n \"boot_disk_size_gb\": 35,\n },\n },\n })\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n spark={\n \"spark_history_server_config\": {\n \"dataproc_cluster\": basic.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 basic = new Gcp.Dataproc.Cluster(\"basic\", new()\n {\n Name = \"my-connection\",\n Region = \"us-central1\",\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n SoftwareConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigSoftwareConfigArgs\n {\n OverrideProperties = \n {\n { \"dataproc:dataproc.allow.zero.workers\", \"true\" },\n },\n },\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n NumInstances = 1,\n MachineType = \"e2-standard-2\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigDiskConfigArgs\n {\n BootDiskSizeGb = 35,\n },\n },\n },\n });\n\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Spark = new Gcp.BigQuery.Inputs.ConnectionSparkArgs\n {\n SparkHistoryServerConfig = new Gcp.BigQuery.Inputs.ConnectionSparkSparkHistoryServerConfigArgs\n {\n DataprocCluster = basic.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tbasic, err := dataproc.NewCluster(ctx, \"basic\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-connection\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026dataproc.ClusterClusterConfigSoftwareConfigArgs{\n\t\t\t\t\tOverrideProperties: pulumi.StringMap{\n\t\t\t\t\t\t\"dataproc:dataproc.allow.zero.workers\": pulumi.String(\"true\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(1),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-2\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigMasterConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\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 = bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tSpark: \u0026bigquery.ConnectionSparkArgs{\n\t\t\t\tSparkHistoryServerConfig: \u0026bigquery.ConnectionSparkSparkHistoryServerConfigArgs{\n\t\t\t\t\tDataprocCluster: basic.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.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigDiskConfigArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkSparkHistoryServerConfigArgs;\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 Cluster(\"basic\", ClusterArgs.builder()\n .name(\"my-connection\")\n .region(\"us-central1\")\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .softwareConfig(ClusterClusterConfigSoftwareConfigArgs.builder()\n .overrideProperties(Map.of(\"dataproc:dataproc.allow.zero.workers\", \"true\"))\n .build())\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .numInstances(1)\n .machineType(\"e2-standard-2\")\n .diskConfig(ClusterClusterConfigMasterConfigDiskConfigArgs.builder()\n .bootDiskSizeGb(35)\n .build())\n .build())\n .build())\n .build());\n\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .spark(ConnectionSparkArgs.builder()\n .sparkHistoryServerConfig(ConnectionSparkSparkHistoryServerConfigArgs.builder()\n .dataprocCluster(basic.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n spark:\n sparkHistoryServerConfig:\n dataprocCluster: ${basic.id}\n basic:\n type: gcp:dataproc:Cluster\n properties:\n name: my-connection\n region: us-central1\n clusterConfig:\n softwareConfig:\n overrideProperties:\n dataproc:dataproc.allow.zero.workers: 'true'\n masterConfig:\n numInstances: 1\n machineType: e2-standard-2\n diskConfig:\n bootDiskSizeGb: 35\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Kms\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-database-instance\",\n databaseVersion: \"POSTGRES_11\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: \"tf-test-my-password_77884\",\n});\nconst bq_connection_cmek = new gcp.bigquery.Connection(\"bq-connection-cmek\", {\n friendlyName: \"👋\",\n description: \"a riveting description\",\n location: \"US\",\n kmsKeyName: \"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\",\n cloudSql: {\n instanceId: instance.connectionName,\n database: db.name,\n type: \"POSTGRES\",\n credential: {\n username: user.name,\n password: user.password,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-database-instance\",\n database_version=\"POSTGRES_11\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=\"tf-test-my-password_77884\")\nbq_connection_cmek = gcp.bigquery.Connection(\"bq-connection-cmek\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n location=\"US\",\n kms_key_name=\"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\",\n cloud_sql={\n \"instance_id\": instance.connection_name,\n \"database\": db.name,\n \"type\": \"POSTGRES\",\n \"credential\": {\n \"username\": user.name,\n \"password\": user.password,\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.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-database-instance\",\n DatabaseVersion = \"POSTGRES_11\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = \"tf-test-my-password_77884\",\n });\n\n var bq_connection_cmek = new Gcp.BigQuery.Connection(\"bq-connection-cmek\", new()\n {\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Location = \"US\",\n KmsKeyName = \"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\",\n CloudSql = new Gcp.BigQuery.Inputs.ConnectionCloudSqlArgs\n {\n InstanceId = instance.ConnectionName,\n Database = db.Name,\n Type = \"POSTGRES\",\n Credential = new Gcp.BigQuery.Inputs.ConnectionCloudSqlCredentialArgs\n {\n Username = user.Name,\n Password = user.Password,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_11\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pulumi.String(\"tf-test-my-password_77884\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"bq-connection-cmek\", \u0026bigquery.ConnectionArgs{\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tKmsKeyName: pulumi.String(\"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\"),\n\t\t\tCloudSql: \u0026bigquery.ConnectionCloudSqlArgs{\n\t\t\t\tInstanceId: instance.ConnectionName,\n\t\t\t\tDatabase: db.Name,\n\t\t\t\tType: pulumi.String(\"POSTGRES\"),\n\t\t\t\tCredential: \u0026bigquery.ConnectionCloudSqlCredentialArgs{\n\t\t\t\t\tUsername: user.Name,\n\t\t\t\t\tPassword: user.Password,\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.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlCredentialArgs;\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 DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-database-instance\")\n .databaseVersion(\"POSTGRES_11\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(\"tf-test-my-password_77884\")\n .build());\n\n var bq_connection_cmek = new Connection(\"bq-connection-cmek\", ConnectionArgs.builder()\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .location(\"US\")\n .kmsKeyName(\"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\")\n .cloudSql(ConnectionCloudSqlArgs.builder()\n .instanceId(instance.connectionName())\n .database(db.name())\n .type(\"POSTGRES\")\n .credential(ConnectionCloudSqlCredentialArgs.builder()\n .username(user.name())\n .password(user.password())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database-instance\n databaseVersion: POSTGRES_11\n region: us-central1\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: tf-test-my-password_77884\n bq-connection-cmek:\n type: gcp:bigquery:Connection\n properties:\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n location: US\n kmsKeyName: projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\n cloudSql:\n instanceId: ${instance.connectionName}\n database: ${db.name}\n type: POSTGRES\n credential:\n username: ${user.name}\n password: ${user.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`\n\n* `{{project}}/{{location}}/{{connection_id}}`\n\n* `{{location}}/{{connection_id}}`\n\nWhen using the `pulumi import` command, Connection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/connection:Connection default {{project}}/{{location}}/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/connection:Connection default {{location}}/{{connection_id}}\n```\n\n", "properties": { "aws": { "$ref": "#/types/gcp:bigquery/ConnectionAws:ConnectionAws", @@ -123150,7 +123150,7 @@ } }, "gcp:bigquery/dataset:Dataset": { - "description": "## Example Usage\n\n### Bigquery Dataset Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bqowner = new gcp.serviceaccount.Account(\"bqowner\", {accountId: \"bqowner\"});\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: bqowner.email,\n },\n {\n role: \"READER\",\n domain: \"hashicorp.com\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbqowner = gcp.serviceaccount.Account(\"bqowner\", account_id=\"bqowner\")\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n },\n accesses=[\n {\n \"role\": \"OWNER\",\n \"userByEmail\": bqowner.email,\n },\n {\n \"role\": \"READER\",\n \"domain\": \"hashicorp.com\",\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 bqowner = new Gcp.ServiceAccount.Account(\"bqowner\", new()\n {\n AccountId = \"bqowner\",\n });\n\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"READER\",\n Domain = \"hashicorp.com\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tbqowner, err := serviceaccount.NewAccount(ctx, \"bqowner\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"bqowner\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"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(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: bqowner.Email,\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"READER\"),\n\t\t\t\t\tDomain: pulumi.String(\"hashicorp.com\"),\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessArgs;\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 bqowner = new Account(\"bqowner\", AccountArgs.builder()\n .accountId(\"bqowner\")\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build(),\n DatasetAccessArgs.builder()\n .role(\"READER\")\n .domain(\"hashicorp.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n friendlyName: test\n description: This is a test description\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n accesses:\n - role: OWNER\n userByEmail: ${bqowner.email}\n - role: READER\n domain: hashicorp.com\n bqowner:\n type: gcp:serviceaccount:Account\n properties:\n accountId: bqowner\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"us\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n});\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n defaultTableExpirationMs: 3600000,\n defaultEncryptionConfiguration: {\n kmsKeyName: cryptoKey.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-keyring\",\n location=\"us\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id)\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n default_table_expiration_ms=3600000,\n default_encryption_configuration={\n \"kmsKeyName\": crypto_key.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 keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"us\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n });\n\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DefaultTableExpirationMs = 3600000,\n DefaultEncryptionConfiguration = new Gcp.BigQuery.Inputs.DatasetDefaultEncryptionConfigurationArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"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\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tDefaultEncryptionConfiguration: \u0026bigquery.DatasetDefaultEncryptionConfigurationArgs{\n\t\t\t\tKmsKeyName: cryptoKey.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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetDefaultEncryptionConfigurationArgs;\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 .name(\"example-keyring\")\n .location(\"us\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .defaultTableExpirationMs(3600000)\n .defaultEncryptionConfiguration(DatasetDefaultEncryptionConfigurationArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n friendlyName: test\n description: This is a test description\n location: US\n defaultTableExpirationMs: 3.6e+06\n defaultEncryptionConfiguration:\n kmsKeyName: ${cryptoKey.id}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-keyring\n location: us\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Authorized Dataset\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bqowner = new gcp.serviceaccount.Account(\"bqowner\", {accountId: \"bqowner\"});\nconst _public = new gcp.bigquery.Dataset(\"public\", {\n datasetId: \"public\",\n friendlyName: \"test\",\n description: \"This dataset is public\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: bqowner.email,\n },\n {\n role: \"READER\",\n domain: \"hashicorp.com\",\n },\n ],\n});\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"private\",\n friendlyName: \"test\",\n description: \"This dataset is private\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: bqowner.email,\n },\n {\n role: \"READER\",\n domain: \"hashicorp.com\",\n },\n {\n dataset: {\n dataset: {\n projectId: _public.project,\n datasetId: _public.datasetId,\n },\n targetTypes: [\"VIEWS\"],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbqowner = gcp.serviceaccount.Account(\"bqowner\", account_id=\"bqowner\")\npublic = gcp.bigquery.Dataset(\"public\",\n dataset_id=\"public\",\n friendly_name=\"test\",\n description=\"This dataset is public\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n },\n accesses=[\n {\n \"role\": \"OWNER\",\n \"userByEmail\": bqowner.email,\n },\n {\n \"role\": \"READER\",\n \"domain\": \"hashicorp.com\",\n },\n ])\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"private\",\n friendly_name=\"test\",\n description=\"This dataset is private\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n },\n accesses=[\n {\n \"role\": \"OWNER\",\n \"userByEmail\": bqowner.email,\n },\n {\n \"role\": \"READER\",\n \"domain\": \"hashicorp.com\",\n },\n {\n \"dataset\": {\n \"dataset\": {\n \"projectId\": public.project,\n \"datasetId\": public.dataset_id,\n },\n \"targetTypes\": [\"VIEWS\"],\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 bqowner = new Gcp.ServiceAccount.Account(\"bqowner\", new()\n {\n AccountId = \"bqowner\",\n });\n\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public\",\n FriendlyName = \"test\",\n Description = \"This dataset is public\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"READER\",\n Domain = \"hashicorp.com\",\n },\n },\n });\n\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"private\",\n FriendlyName = \"test\",\n Description = \"This dataset is private\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"READER\",\n Domain = \"hashicorp.com\",\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Dataset = new Gcp.BigQuery.Inputs.DatasetAccessDatasetArgs\n {\n Dataset = new Gcp.BigQuery.Inputs.DatasetAccessDatasetDatasetArgs\n {\n ProjectId = @public.Project,\n DatasetId = @public.DatasetId,\n },\n TargetTypes = new[]\n {\n \"VIEWS\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tbqowner, err := serviceaccount.NewAccount(ctx, \"bqowner\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"bqowner\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This dataset is public\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: bqowner.Email,\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"READER\"),\n\t\t\t\t\tDomain: pulumi.String(\"hashicorp.com\"),\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 = bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This dataset is private\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: bqowner.Email,\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"READER\"),\n\t\t\t\t\tDomain: pulumi.String(\"hashicorp.com\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tDataset: \u0026bigquery.DatasetAccessDatasetArgs{\n\t\t\t\t\t\tDataset: \u0026bigquery.DatasetAccessDatasetDatasetArgs{\n\t\t\t\t\t\t\tProjectId: public.Project,\n\t\t\t\t\t\t\tDatasetId: public.DatasetId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetTypes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"VIEWS\"),\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessDatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessDatasetDatasetArgs;\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 bqowner = new Account(\"bqowner\", AccountArgs.builder()\n .accountId(\"bqowner\")\n .build());\n\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public\")\n .friendlyName(\"test\")\n .description(\"This dataset is public\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build(),\n DatasetAccessArgs.builder()\n .role(\"READER\")\n .domain(\"hashicorp.com\")\n .build())\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"private\")\n .friendlyName(\"test\")\n .description(\"This dataset is private\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build(),\n DatasetAccessArgs.builder()\n .role(\"READER\")\n .domain(\"hashicorp.com\")\n .build(),\n DatasetAccessArgs.builder()\n .dataset(DatasetAccessDatasetArgs.builder()\n .dataset(DatasetAccessDatasetDatasetArgs.builder()\n .projectId(public_.project())\n .datasetId(public_.datasetId())\n .build())\n .targetTypes(\"VIEWS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public\n friendlyName: test\n description: This dataset is public\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n accesses:\n - role: OWNER\n userByEmail: ${bqowner.email}\n - role: READER\n domain: hashicorp.com\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private\n friendlyName: test\n description: This dataset is private\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n accesses:\n - role: OWNER\n userByEmail: ${bqowner.email}\n - role: READER\n domain: hashicorp.com\n - dataset:\n dataset:\n projectId: ${public.project}\n datasetId: ${public.datasetId}\n targetTypes:\n - VIEWS\n bqowner:\n type: gcp:serviceaccount:Account\n properties:\n accountId: bqowner\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Authorized Routine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _public = new gcp.bigquery.Dataset(\"public\", {\n datasetId: \"public_dataset\",\n description: \"This dataset is public\",\n});\nconst publicRoutine = new gcp.bigquery.Routine(\"public\", {\n datasetId: _public.datasetId,\n routineId: \"public_routine\",\n routineType: \"TABLE_VALUED_FUNCTION\",\n language: \"SQL\",\n definitionBody: \"SELECT 1 + value AS value\\n\",\n arguments: [{\n name: \"value\",\n argumentKind: \"FIXED_TYPE\",\n dataType: JSON.stringify({\n typeKind: \"INT64\",\n }),\n }],\n returnTableType: JSON.stringify({\n columns: [{\n name: \"value\",\n type: {\n typeKind: \"INT64\",\n },\n }],\n }),\n});\nconst _private = new gcp.bigquery.Dataset(\"private\", {\n datasetId: \"private_dataset\",\n description: \"This dataset is private\",\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: \"my@service-account.com\",\n },\n {\n routine: {\n projectId: publicRoutine.project,\n datasetId: publicRoutine.datasetId,\n routineId: publicRoutine.routineId,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\npublic = gcp.bigquery.Dataset(\"public\",\n dataset_id=\"public_dataset\",\n description=\"This dataset is public\")\npublic_routine = gcp.bigquery.Routine(\"public\",\n dataset_id=public.dataset_id,\n routine_id=\"public_routine\",\n routine_type=\"TABLE_VALUED_FUNCTION\",\n language=\"SQL\",\n definition_body=\"SELECT 1 + value AS value\\n\",\n arguments=[{\n \"name\": \"value\",\n \"argumentKind\": \"FIXED_TYPE\",\n \"dataType\": json.dumps({\n \"typeKind\": \"INT64\",\n }),\n }],\n return_table_type=json.dumps({\n \"columns\": [{\n \"name\": \"value\",\n \"type\": {\n \"typeKind\": \"INT64\",\n },\n }],\n }))\nprivate = gcp.bigquery.Dataset(\"private\",\n dataset_id=\"private_dataset\",\n description=\"This dataset is private\",\n accesses=[\n {\n \"role\": \"OWNER\",\n \"userByEmail\": \"my@service-account.com\",\n },\n {\n \"routine\": {\n \"projectId\": public_routine.project,\n \"datasetId\": public_routine.dataset_id,\n \"routineId\": public_routine.routine_id,\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public_dataset\",\n Description = \"This dataset is public\",\n });\n\n var publicRoutine = new Gcp.BigQuery.Routine(\"public\", new()\n {\n DatasetId = @public.DatasetId,\n RoutineId = \"public_routine\",\n RoutineType = \"TABLE_VALUED_FUNCTION\",\n Language = \"SQL\",\n DefinitionBody = @\"SELECT 1 + value AS value\n\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"value\",\n ArgumentKind = \"FIXED_TYPE\",\n DataType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n }),\n },\n },\n ReturnTableType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"columns\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"value\",\n [\"type\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n },\n },\n },\n }),\n });\n\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"private_dataset\",\n Description = \"This dataset is private\",\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = \"my@service-account.com\",\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Routine = new Gcp.BigQuery.Inputs.DatasetAccessRoutineArgs\n {\n ProjectId = publicRoutine.Project,\n DatasetId = publicRoutine.DatasetId,\n RoutineId = publicRoutine.RoutineId,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is public\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"typeKind\": \"INT64\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"columns\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"value\",\n\t\t\t\t\t\"type\": map[string]interface{}{\n\t\t\t\t\t\t\"typeKind\": \"INT64\",\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\tjson1 := string(tmpJSON1)\n\t\tpublicRoutine, err := bigquery.NewRoutine(ctx, \"public\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: public.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"public_routine\"),\n\t\t\tRoutineType: pulumi.String(\"TABLE_VALUED_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"SELECT 1 + value AS value\\n\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"value\"),\n\t\t\t\t\tArgumentKind: pulumi.String(\"FIXED_TYPE\"),\n\t\t\t\t\tDataType: pulumi.String(json0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnTableType: pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is private\"),\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRoutine: \u0026bigquery.DatasetAccessRoutineArgs{\n\t\t\t\t\t\tProjectId: publicRoutine.Project,\n\t\t\t\t\t\tDatasetId: publicRoutine.DatasetId,\n\t\t\t\t\t\tRoutineId: publicRoutine.RoutineId,\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.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessRoutineArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public_dataset\")\n .description(\"This dataset is public\")\n .build());\n\n var publicRoutine = new Routine(\"publicRoutine\", RoutineArgs.builder()\n .datasetId(public_.datasetId())\n .routineId(\"public_routine\")\n .routineType(\"TABLE_VALUED_FUNCTION\")\n .language(\"SQL\")\n .definitionBody(\"\"\"\nSELECT 1 + value AS value\n \"\"\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"value\")\n .argumentKind(\"FIXED_TYPE\")\n .dataType(serializeJson(\n jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n )))\n .build())\n .returnTableType(serializeJson(\n jsonObject(\n jsonProperty(\"columns\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"value\"),\n jsonProperty(\"type\", jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n ))\n )))\n )))\n .build());\n\n var private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"private_dataset\")\n .description(\"This dataset is private\")\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(\"my@service-account.com\")\n .build(),\n DatasetAccessArgs.builder()\n .routine(DatasetAccessRoutineArgs.builder()\n .projectId(publicRoutine.project())\n .datasetId(publicRoutine.datasetId())\n .routineId(publicRoutine.routineId())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public_dataset\n description: This dataset is public\n publicRoutine:\n type: gcp:bigquery:Routine\n name: public\n properties:\n datasetId: ${public.datasetId}\n routineId: public_routine\n routineType: TABLE_VALUED_FUNCTION\n language: SQL\n definitionBody: |\n SELECT 1 + value AS value\n arguments:\n - name: value\n argumentKind: FIXED_TYPE\n dataType:\n fn::toJSON:\n typeKind: INT64\n returnTableType:\n fn::toJSON:\n columns:\n - name: value\n type:\n typeKind: INT64\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private_dataset\n description: This dataset is private\n accesses:\n - role: OWNER\n userByEmail: my@service-account.com\n - routine:\n projectId: ${publicRoutine.project}\n datasetId: ${publicRoutine.datasetId}\n routineId: ${publicRoutine.routineId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset External Reference Aws\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"aws-us-east-1\",\n externalDatasetReference: {\n externalSource: \"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\",\n connection: \"projects/project/locations/aws-us-east-1/connections/connection\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"aws-us-east-1\",\n external_dataset_reference={\n \"externalSource\": \"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\",\n \"connection\": \"projects/project/locations/aws-us-east-1/connections/connection\",\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 dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"aws-us-east-1\",\n ExternalDatasetReference = new Gcp.BigQuery.Inputs.DatasetExternalDatasetReferenceArgs\n {\n ExternalSource = \"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\",\n Connection = \"projects/project/locations/aws-us-east-1/connections/connection\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"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(\"aws-us-east-1\"),\n\t\t\tExternalDatasetReference: \u0026bigquery.DatasetExternalDatasetReferenceArgs{\n\t\t\t\tExternalSource: pulumi.String(\"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\"),\n\t\t\t\tConnection: pulumi.String(\"projects/project/locations/aws-us-east-1/connections/connection\"),\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.inputs.DatasetExternalDatasetReferenceArgs;\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 .datasetId(\"example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"aws-us-east-1\")\n .externalDatasetReference(DatasetExternalDatasetReferenceArgs.builder()\n .externalSource(\"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\")\n .connection(\"projects/project/locations/aws-us-east-1/connections/connection\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n friendlyName: test\n description: This is a test description\n location: aws-us-east-1\n externalDatasetReference:\n externalSource: aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\n connection: projects/project/locations/aws-us-east-1/connections/connection\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataset can be imported using any of these accepted formats:\n\n* `projects/{{project}}/datasets/{{dataset_id}}`\n\n* `{{project}}/{{dataset_id}}`\n\n* `{{dataset_id}}`\n\nWhen using the `pulumi import` command, Dataset can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/dataset:Dataset default projects/{{project}}/datasets/{{dataset_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/dataset:Dataset default {{project}}/{{dataset_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/dataset:Dataset default {{dataset_id}}\n```\n\n", + "description": "## Example Usage\n\n### Bigquery Dataset Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bqowner = new gcp.serviceaccount.Account(\"bqowner\", {accountId: \"bqowner\"});\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: bqowner.email,\n },\n {\n role: \"READER\",\n domain: \"hashicorp.com\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbqowner = gcp.serviceaccount.Account(\"bqowner\", account_id=\"bqowner\")\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n },\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": bqowner.email,\n },\n {\n \"role\": \"READER\",\n \"domain\": \"hashicorp.com\",\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 bqowner = new Gcp.ServiceAccount.Account(\"bqowner\", new()\n {\n AccountId = \"bqowner\",\n });\n\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"READER\",\n Domain = \"hashicorp.com\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tbqowner, err := serviceaccount.NewAccount(ctx, \"bqowner\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"bqowner\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"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(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: bqowner.Email,\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"READER\"),\n\t\t\t\t\tDomain: pulumi.String(\"hashicorp.com\"),\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessArgs;\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 bqowner = new Account(\"bqowner\", AccountArgs.builder()\n .accountId(\"bqowner\")\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build(),\n DatasetAccessArgs.builder()\n .role(\"READER\")\n .domain(\"hashicorp.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n friendlyName: test\n description: This is a test description\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n accesses:\n - role: OWNER\n userByEmail: ${bqowner.email}\n - role: READER\n domain: hashicorp.com\n bqowner:\n type: gcp:serviceaccount:Account\n properties:\n accountId: bqowner\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"us\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n});\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n defaultTableExpirationMs: 3600000,\n defaultEncryptionConfiguration: {\n kmsKeyName: cryptoKey.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-keyring\",\n location=\"us\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id)\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n default_table_expiration_ms=3600000,\n default_encryption_configuration={\n \"kms_key_name\": crypto_key.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 keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"us\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n });\n\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DefaultTableExpirationMs = 3600000,\n DefaultEncryptionConfiguration = new Gcp.BigQuery.Inputs.DatasetDefaultEncryptionConfigurationArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"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\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tDefaultEncryptionConfiguration: \u0026bigquery.DatasetDefaultEncryptionConfigurationArgs{\n\t\t\t\tKmsKeyName: cryptoKey.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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetDefaultEncryptionConfigurationArgs;\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 .name(\"example-keyring\")\n .location(\"us\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .defaultTableExpirationMs(3600000)\n .defaultEncryptionConfiguration(DatasetDefaultEncryptionConfigurationArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n friendlyName: test\n description: This is a test description\n location: US\n defaultTableExpirationMs: 3.6e+06\n defaultEncryptionConfiguration:\n kmsKeyName: ${cryptoKey.id}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-keyring\n location: us\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Authorized Dataset\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bqowner = new gcp.serviceaccount.Account(\"bqowner\", {accountId: \"bqowner\"});\nconst _public = new gcp.bigquery.Dataset(\"public\", {\n datasetId: \"public\",\n friendlyName: \"test\",\n description: \"This dataset is public\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: bqowner.email,\n },\n {\n role: \"READER\",\n domain: \"hashicorp.com\",\n },\n ],\n});\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"private\",\n friendlyName: \"test\",\n description: \"This dataset is private\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: bqowner.email,\n },\n {\n role: \"READER\",\n domain: \"hashicorp.com\",\n },\n {\n dataset: {\n dataset: {\n projectId: _public.project,\n datasetId: _public.datasetId,\n },\n targetTypes: [\"VIEWS\"],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbqowner = gcp.serviceaccount.Account(\"bqowner\", account_id=\"bqowner\")\npublic = gcp.bigquery.Dataset(\"public\",\n dataset_id=\"public\",\n friendly_name=\"test\",\n description=\"This dataset is public\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n },\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": bqowner.email,\n },\n {\n \"role\": \"READER\",\n \"domain\": \"hashicorp.com\",\n },\n ])\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"private\",\n friendly_name=\"test\",\n description=\"This dataset is private\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n },\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": bqowner.email,\n },\n {\n \"role\": \"READER\",\n \"domain\": \"hashicorp.com\",\n },\n {\n \"dataset\": {\n \"dataset\": {\n \"project_id\": public.project,\n \"dataset_id\": public.dataset_id,\n },\n \"target_types\": [\"VIEWS\"],\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 bqowner = new Gcp.ServiceAccount.Account(\"bqowner\", new()\n {\n AccountId = \"bqowner\",\n });\n\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public\",\n FriendlyName = \"test\",\n Description = \"This dataset is public\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"READER\",\n Domain = \"hashicorp.com\",\n },\n },\n });\n\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"private\",\n FriendlyName = \"test\",\n Description = \"This dataset is private\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"READER\",\n Domain = \"hashicorp.com\",\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Dataset = new Gcp.BigQuery.Inputs.DatasetAccessDatasetArgs\n {\n Dataset = new Gcp.BigQuery.Inputs.DatasetAccessDatasetDatasetArgs\n {\n ProjectId = @public.Project,\n DatasetId = @public.DatasetId,\n },\n TargetTypes = new[]\n {\n \"VIEWS\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tbqowner, err := serviceaccount.NewAccount(ctx, \"bqowner\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"bqowner\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This dataset is public\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: bqowner.Email,\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"READER\"),\n\t\t\t\t\tDomain: pulumi.String(\"hashicorp.com\"),\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 = bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This dataset is private\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: bqowner.Email,\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"READER\"),\n\t\t\t\t\tDomain: pulumi.String(\"hashicorp.com\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tDataset: \u0026bigquery.DatasetAccessDatasetArgs{\n\t\t\t\t\t\tDataset: \u0026bigquery.DatasetAccessDatasetDatasetArgs{\n\t\t\t\t\t\t\tProjectId: public.Project,\n\t\t\t\t\t\t\tDatasetId: public.DatasetId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetTypes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"VIEWS\"),\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessDatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessDatasetDatasetArgs;\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 bqowner = new Account(\"bqowner\", AccountArgs.builder()\n .accountId(\"bqowner\")\n .build());\n\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public\")\n .friendlyName(\"test\")\n .description(\"This dataset is public\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build(),\n DatasetAccessArgs.builder()\n .role(\"READER\")\n .domain(\"hashicorp.com\")\n .build())\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"private\")\n .friendlyName(\"test\")\n .description(\"This dataset is private\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build(),\n DatasetAccessArgs.builder()\n .role(\"READER\")\n .domain(\"hashicorp.com\")\n .build(),\n DatasetAccessArgs.builder()\n .dataset(DatasetAccessDatasetArgs.builder()\n .dataset(DatasetAccessDatasetDatasetArgs.builder()\n .projectId(public_.project())\n .datasetId(public_.datasetId())\n .build())\n .targetTypes(\"VIEWS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public\n friendlyName: test\n description: This dataset is public\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n accesses:\n - role: OWNER\n userByEmail: ${bqowner.email}\n - role: READER\n domain: hashicorp.com\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private\n friendlyName: test\n description: This dataset is private\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n accesses:\n - role: OWNER\n userByEmail: ${bqowner.email}\n - role: READER\n domain: hashicorp.com\n - dataset:\n dataset:\n projectId: ${public.project}\n datasetId: ${public.datasetId}\n targetTypes:\n - VIEWS\n bqowner:\n type: gcp:serviceaccount:Account\n properties:\n accountId: bqowner\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Authorized Routine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _public = new gcp.bigquery.Dataset(\"public\", {\n datasetId: \"public_dataset\",\n description: \"This dataset is public\",\n});\nconst publicRoutine = new gcp.bigquery.Routine(\"public\", {\n datasetId: _public.datasetId,\n routineId: \"public_routine\",\n routineType: \"TABLE_VALUED_FUNCTION\",\n language: \"SQL\",\n definitionBody: \"SELECT 1 + value AS value\\n\",\n arguments: [{\n name: \"value\",\n argumentKind: \"FIXED_TYPE\",\n dataType: JSON.stringify({\n typeKind: \"INT64\",\n }),\n }],\n returnTableType: JSON.stringify({\n columns: [{\n name: \"value\",\n type: {\n typeKind: \"INT64\",\n },\n }],\n }),\n});\nconst _private = new gcp.bigquery.Dataset(\"private\", {\n datasetId: \"private_dataset\",\n description: \"This dataset is private\",\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: \"my@service-account.com\",\n },\n {\n routine: {\n projectId: publicRoutine.project,\n datasetId: publicRoutine.datasetId,\n routineId: publicRoutine.routineId,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\npublic = gcp.bigquery.Dataset(\"public\",\n dataset_id=\"public_dataset\",\n description=\"This dataset is public\")\npublic_routine = gcp.bigquery.Routine(\"public\",\n dataset_id=public.dataset_id,\n routine_id=\"public_routine\",\n routine_type=\"TABLE_VALUED_FUNCTION\",\n language=\"SQL\",\n definition_body=\"SELECT 1 + value AS value\\n\",\n arguments=[{\n \"name\": \"value\",\n \"argument_kind\": \"FIXED_TYPE\",\n \"data_type\": json.dumps({\n \"type_kind\": \"INT64\",\n }),\n }],\n return_table_type=json.dumps({\n \"columns\": [{\n \"name\": \"value\",\n \"type\": {\n \"typeKind\": \"INT64\",\n },\n }],\n }))\nprivate = gcp.bigquery.Dataset(\"private\",\n dataset_id=\"private_dataset\",\n description=\"This dataset is private\",\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": \"my@service-account.com\",\n },\n {\n \"routine\": {\n \"project_id\": public_routine.project,\n \"dataset_id\": public_routine.dataset_id,\n \"routine_id\": public_routine.routine_id,\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public_dataset\",\n Description = \"This dataset is public\",\n });\n\n var publicRoutine = new Gcp.BigQuery.Routine(\"public\", new()\n {\n DatasetId = @public.DatasetId,\n RoutineId = \"public_routine\",\n RoutineType = \"TABLE_VALUED_FUNCTION\",\n Language = \"SQL\",\n DefinitionBody = @\"SELECT 1 + value AS value\n\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"value\",\n ArgumentKind = \"FIXED_TYPE\",\n DataType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n }),\n },\n },\n ReturnTableType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"columns\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"value\",\n [\"type\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n },\n },\n },\n }),\n });\n\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"private_dataset\",\n Description = \"This dataset is private\",\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = \"my@service-account.com\",\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Routine = new Gcp.BigQuery.Inputs.DatasetAccessRoutineArgs\n {\n ProjectId = publicRoutine.Project,\n DatasetId = publicRoutine.DatasetId,\n RoutineId = publicRoutine.RoutineId,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is public\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"typeKind\": \"INT64\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"columns\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"value\",\n\t\t\t\t\t\"type\": map[string]interface{}{\n\t\t\t\t\t\t\"typeKind\": \"INT64\",\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\tjson1 := string(tmpJSON1)\n\t\tpublicRoutine, err := bigquery.NewRoutine(ctx, \"public\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: public.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"public_routine\"),\n\t\t\tRoutineType: pulumi.String(\"TABLE_VALUED_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"SELECT 1 + value AS value\\n\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"value\"),\n\t\t\t\t\tArgumentKind: pulumi.String(\"FIXED_TYPE\"),\n\t\t\t\t\tDataType: pulumi.String(json0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnTableType: pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is private\"),\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRoutine: \u0026bigquery.DatasetAccessRoutineArgs{\n\t\t\t\t\t\tProjectId: publicRoutine.Project,\n\t\t\t\t\t\tDatasetId: publicRoutine.DatasetId,\n\t\t\t\t\t\tRoutineId: publicRoutine.RoutineId,\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.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessRoutineArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public_dataset\")\n .description(\"This dataset is public\")\n .build());\n\n var publicRoutine = new Routine(\"publicRoutine\", RoutineArgs.builder()\n .datasetId(public_.datasetId())\n .routineId(\"public_routine\")\n .routineType(\"TABLE_VALUED_FUNCTION\")\n .language(\"SQL\")\n .definitionBody(\"\"\"\nSELECT 1 + value AS value\n \"\"\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"value\")\n .argumentKind(\"FIXED_TYPE\")\n .dataType(serializeJson(\n jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n )))\n .build())\n .returnTableType(serializeJson(\n jsonObject(\n jsonProperty(\"columns\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"value\"),\n jsonProperty(\"type\", jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n ))\n )))\n )))\n .build());\n\n var private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"private_dataset\")\n .description(\"This dataset is private\")\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(\"my@service-account.com\")\n .build(),\n DatasetAccessArgs.builder()\n .routine(DatasetAccessRoutineArgs.builder()\n .projectId(publicRoutine.project())\n .datasetId(publicRoutine.datasetId())\n .routineId(publicRoutine.routineId())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public_dataset\n description: This dataset is public\n publicRoutine:\n type: gcp:bigquery:Routine\n name: public\n properties:\n datasetId: ${public.datasetId}\n routineId: public_routine\n routineType: TABLE_VALUED_FUNCTION\n language: SQL\n definitionBody: |\n SELECT 1 + value AS value\n arguments:\n - name: value\n argumentKind: FIXED_TYPE\n dataType:\n fn::toJSON:\n typeKind: INT64\n returnTableType:\n fn::toJSON:\n columns:\n - name: value\n type:\n typeKind: INT64\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private_dataset\n description: This dataset is private\n accesses:\n - role: OWNER\n userByEmail: my@service-account.com\n - routine:\n projectId: ${publicRoutine.project}\n datasetId: ${publicRoutine.datasetId}\n routineId: ${publicRoutine.routineId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset External Reference Aws\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"aws-us-east-1\",\n externalDatasetReference: {\n externalSource: \"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\",\n connection: \"projects/project/locations/aws-us-east-1/connections/connection\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"aws-us-east-1\",\n external_dataset_reference={\n \"external_source\": \"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\",\n \"connection\": \"projects/project/locations/aws-us-east-1/connections/connection\",\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 dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"aws-us-east-1\",\n ExternalDatasetReference = new Gcp.BigQuery.Inputs.DatasetExternalDatasetReferenceArgs\n {\n ExternalSource = \"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\",\n Connection = \"projects/project/locations/aws-us-east-1/connections/connection\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"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(\"aws-us-east-1\"),\n\t\t\tExternalDatasetReference: \u0026bigquery.DatasetExternalDatasetReferenceArgs{\n\t\t\t\tExternalSource: pulumi.String(\"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\"),\n\t\t\t\tConnection: pulumi.String(\"projects/project/locations/aws-us-east-1/connections/connection\"),\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.inputs.DatasetExternalDatasetReferenceArgs;\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 .datasetId(\"example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"aws-us-east-1\")\n .externalDatasetReference(DatasetExternalDatasetReferenceArgs.builder()\n .externalSource(\"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\")\n .connection(\"projects/project/locations/aws-us-east-1/connections/connection\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n friendlyName: test\n description: This is a test description\n location: aws-us-east-1\n externalDatasetReference:\n externalSource: aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\n connection: projects/project/locations/aws-us-east-1/connections/connection\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataset can be imported using any of these accepted formats:\n\n* `projects/{{project}}/datasets/{{dataset_id}}`\n\n* `{{project}}/{{dataset_id}}`\n\n* `{{dataset_id}}`\n\nWhen using the `pulumi import` command, Dataset can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/dataset:Dataset default projects/{{project}}/datasets/{{dataset_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/dataset:Dataset default {{project}}/{{dataset_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/dataset:Dataset default {{dataset_id}}\n```\n\n", "properties": { "accesses": { "type": "array", @@ -123484,7 +123484,7 @@ } }, "gcp:bigquery/datasetAccess:DatasetAccess": { - "description": "## Example Usage\n\n### Bigquery Dataset Access Basic User\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {datasetId: \"example_dataset\"});\nconst bqowner = new gcp.serviceaccount.Account(\"bqowner\", {accountId: \"bqowner\"});\nconst access = new gcp.bigquery.DatasetAccess(\"access\", {\n datasetId: dataset.datasetId,\n role: \"OWNER\",\n userByEmail: bqowner.email,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.bigquery.Dataset(\"dataset\", dataset_id=\"example_dataset\")\nbqowner = gcp.serviceaccount.Account(\"bqowner\", account_id=\"bqowner\")\naccess = gcp.bigquery.DatasetAccess(\"access\",\n dataset_id=dataset.dataset_id,\n role=\"OWNER\",\n user_by_email=bqowner.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 dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var bqowner = new Gcp.ServiceAccount.Account(\"bqowner\", new()\n {\n AccountId = \"bqowner\",\n });\n\n var access = new Gcp.BigQuery.DatasetAccess(\"access\", new()\n {\n DatasetId = dataset.DatasetId,\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdataset, err := bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqowner, err := serviceaccount.NewAccount(ctx, \"bqowner\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"bqowner\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"access\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: dataset.DatasetId,\n\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\tUserByEmail: bqowner.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.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\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 .datasetId(\"example_dataset\")\n .build());\n\n var bqowner = new Account(\"bqowner\", AccountArgs.builder()\n .accountId(\"bqowner\")\n .build());\n\n var access = new DatasetAccess(\"access\", DatasetAccessArgs.builder()\n .datasetId(dataset.datasetId())\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access:\n type: gcp:bigquery:DatasetAccess\n properties:\n datasetId: ${dataset.datasetId}\n role: OWNER\n userByEmail: ${bqowner.email}\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n bqowner:\n type: gcp:serviceaccount:Account\n properties:\n accountId: bqowner\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Access View\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _private = new gcp.bigquery.Dataset(\"private\", {datasetId: \"example_dataset\"});\nconst _public = new gcp.bigquery.Dataset(\"public\", {datasetId: \"example_dataset2\"});\nconst publicTable = new gcp.bigquery.Table(\"public\", {\n deletionProtection: false,\n datasetId: _public.datasetId,\n tableId: \"example_table\",\n view: {\n query: \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n useLegacySql: false,\n },\n});\nconst access = new gcp.bigquery.DatasetAccess(\"access\", {\n datasetId: _private.datasetId,\n view: {\n projectId: publicTable.project,\n datasetId: _public.datasetId,\n tableId: publicTable.tableId,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprivate = gcp.bigquery.Dataset(\"private\", dataset_id=\"example_dataset\")\npublic = gcp.bigquery.Dataset(\"public\", dataset_id=\"example_dataset2\")\npublic_table = gcp.bigquery.Table(\"public\",\n deletion_protection=False,\n dataset_id=public.dataset_id,\n table_id=\"example_table\",\n view={\n \"query\": \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n \"useLegacySql\": False,\n })\naccess = gcp.bigquery.DatasetAccess(\"access\",\n dataset_id=private.dataset_id,\n view={\n \"projectId\": public_table.project,\n \"datasetId\": public.dataset_id,\n \"tableId\": public_table.table_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 @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"example_dataset2\",\n });\n\n var publicTable = new Gcp.BigQuery.Table(\"public\", new()\n {\n DeletionProtection = false,\n DatasetId = @public.DatasetId,\n TableId = \"example_table\",\n View = new Gcp.BigQuery.Inputs.TableViewArgs\n {\n Query = \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n UseLegacySql = false,\n },\n });\n\n var access = new Gcp.BigQuery.DatasetAccess(\"access\", new()\n {\n DatasetId = @private.DatasetId,\n View = new Gcp.BigQuery.Inputs.DatasetAccessViewArgs\n {\n ProjectId = publicTable.Project,\n DatasetId = @public.DatasetId,\n TableId = publicTable.TableId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tprivate, err := bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublicTable, err := bigquery.NewTable(ctx, \"public\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: public.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tView: \u0026bigquery.TableViewArgs{\n\t\t\t\tQuery: pulumi.String(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\"),\n\t\t\t\tUseLegacySql: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"access\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: private.DatasetId,\n\t\t\tView: \u0026bigquery.DatasetAccessViewArgs{\n\t\t\t\tProjectId: publicTable.Project,\n\t\t\t\tDatasetId: public.DatasetId,\n\t\t\t\tTableId: publicTable.TableId,\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.inputs.TableViewArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessViewArgs;\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 private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"example_dataset2\")\n .build());\n\n var publicTable = new Table(\"publicTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(public_.datasetId())\n .tableId(\"example_table\")\n .view(TableViewArgs.builder()\n .query(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\")\n .useLegacySql(false)\n .build())\n .build());\n\n var access = new DatasetAccess(\"access\", DatasetAccessArgs.builder()\n .datasetId(private_.datasetId())\n .view(DatasetAccessViewArgs.builder()\n .projectId(publicTable.project())\n .datasetId(public_.datasetId())\n .tableId(publicTable.tableId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access:\n type: gcp:bigquery:DatasetAccess\n properties:\n datasetId: ${private.datasetId}\n view:\n projectId: ${publicTable.project}\n datasetId: ${public.datasetId}\n tableId: ${publicTable.tableId}\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset2\n publicTable:\n type: gcp:bigquery:Table\n name: public\n properties:\n deletionProtection: false\n datasetId: ${public.datasetId}\n tableId: example_table\n view:\n query: SELECT state FROM [lookerdata:cdc.project_tycho_reports]\n useLegacySql: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Access Authorized Dataset\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _private = new gcp.bigquery.Dataset(\"private\", {datasetId: \"private\"});\nconst _public = new gcp.bigquery.Dataset(\"public\", {datasetId: \"public\"});\nconst access = new gcp.bigquery.DatasetAccess(\"access\", {\n datasetId: _private.datasetId,\n authorizedDataset: {\n dataset: {\n projectId: _public.project,\n datasetId: _public.datasetId,\n },\n targetTypes: [\"VIEWS\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprivate = gcp.bigquery.Dataset(\"private\", dataset_id=\"private\")\npublic = gcp.bigquery.Dataset(\"public\", dataset_id=\"public\")\naccess = gcp.bigquery.DatasetAccess(\"access\",\n dataset_id=private.dataset_id,\n authorized_dataset={\n \"dataset\": {\n \"projectId\": public.project,\n \"datasetId\": public.dataset_id,\n },\n \"targetTypes\": [\"VIEWS\"],\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 @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"private\",\n });\n\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public\",\n });\n\n var access = new Gcp.BigQuery.DatasetAccess(\"access\", new()\n {\n DatasetId = @private.DatasetId,\n AuthorizedDataset = new Gcp.BigQuery.Inputs.DatasetAccessAuthorizedDatasetArgs\n {\n Dataset = new Gcp.BigQuery.Inputs.DatasetAccessAuthorizedDatasetDatasetArgs\n {\n ProjectId = @public.Project,\n DatasetId = @public.DatasetId,\n },\n TargetTypes = new[]\n {\n \"VIEWS\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tprivate, err := bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"access\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: private.DatasetId,\n\t\t\tAuthorizedDataset: \u0026bigquery.DatasetAccessAuthorizedDatasetArgs{\n\t\t\t\tDataset: \u0026bigquery.DatasetAccessAuthorizedDatasetDatasetArgs{\n\t\t\t\t\tProjectId: public.Project,\n\t\t\t\t\tDatasetId: public.DatasetId,\n\t\t\t\t},\n\t\t\t\tTargetTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"VIEWS\"),\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.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessAuthorizedDatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessAuthorizedDatasetDatasetArgs;\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 private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"private\")\n .build());\n\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public\")\n .build());\n\n var access = new DatasetAccess(\"access\", DatasetAccessArgs.builder()\n .datasetId(private_.datasetId())\n .authorizedDataset(DatasetAccessAuthorizedDatasetArgs.builder()\n .dataset(DatasetAccessAuthorizedDatasetDatasetArgs.builder()\n .projectId(public_.project())\n .datasetId(public_.datasetId())\n .build())\n .targetTypes(\"VIEWS\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access:\n type: gcp:bigquery:DatasetAccess\n properties:\n datasetId: ${private.datasetId}\n authorizedDataset:\n dataset:\n projectId: ${public.project}\n datasetId: ${public.datasetId}\n targetTypes:\n - VIEWS\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Access Authorized Routine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _public = new gcp.bigquery.Dataset(\"public\", {\n datasetId: \"public_dataset\",\n description: \"This dataset is public\",\n});\nconst publicRoutine = new gcp.bigquery.Routine(\"public\", {\n datasetId: _public.datasetId,\n routineId: \"public_routine\",\n routineType: \"TABLE_VALUED_FUNCTION\",\n language: \"SQL\",\n definitionBody: \"SELECT 1 + value AS value\\n\",\n arguments: [{\n name: \"value\",\n argumentKind: \"FIXED_TYPE\",\n dataType: JSON.stringify({\n typeKind: \"INT64\",\n }),\n }],\n returnTableType: JSON.stringify({\n columns: [{\n name: \"value\",\n type: {\n typeKind: \"INT64\",\n },\n }],\n }),\n});\nconst _private = new gcp.bigquery.Dataset(\"private\", {\n datasetId: \"private_dataset\",\n description: \"This dataset is private\",\n});\nconst authorizedRoutine = new gcp.bigquery.DatasetAccess(\"authorized_routine\", {\n datasetId: _private.datasetId,\n routine: {\n projectId: publicRoutine.project,\n datasetId: publicRoutine.datasetId,\n routineId: publicRoutine.routineId,\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\npublic = gcp.bigquery.Dataset(\"public\",\n dataset_id=\"public_dataset\",\n description=\"This dataset is public\")\npublic_routine = gcp.bigquery.Routine(\"public\",\n dataset_id=public.dataset_id,\n routine_id=\"public_routine\",\n routine_type=\"TABLE_VALUED_FUNCTION\",\n language=\"SQL\",\n definition_body=\"SELECT 1 + value AS value\\n\",\n arguments=[{\n \"name\": \"value\",\n \"argumentKind\": \"FIXED_TYPE\",\n \"dataType\": json.dumps({\n \"typeKind\": \"INT64\",\n }),\n }],\n return_table_type=json.dumps({\n \"columns\": [{\n \"name\": \"value\",\n \"type\": {\n \"typeKind\": \"INT64\",\n },\n }],\n }))\nprivate = gcp.bigquery.Dataset(\"private\",\n dataset_id=\"private_dataset\",\n description=\"This dataset is private\")\nauthorized_routine = gcp.bigquery.DatasetAccess(\"authorized_routine\",\n dataset_id=private.dataset_id,\n routine={\n \"projectId\": public_routine.project,\n \"datasetId\": public_routine.dataset_id,\n \"routineId\": public_routine.routine_id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public_dataset\",\n Description = \"This dataset is public\",\n });\n\n var publicRoutine = new Gcp.BigQuery.Routine(\"public\", new()\n {\n DatasetId = @public.DatasetId,\n RoutineId = \"public_routine\",\n RoutineType = \"TABLE_VALUED_FUNCTION\",\n Language = \"SQL\",\n DefinitionBody = @\"SELECT 1 + value AS value\n\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"value\",\n ArgumentKind = \"FIXED_TYPE\",\n DataType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n }),\n },\n },\n ReturnTableType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"columns\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"value\",\n [\"type\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n },\n },\n },\n }),\n });\n\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"private_dataset\",\n Description = \"This dataset is private\",\n });\n\n var authorizedRoutine = new Gcp.BigQuery.DatasetAccess(\"authorized_routine\", new()\n {\n DatasetId = @private.DatasetId,\n Routine = new Gcp.BigQuery.Inputs.DatasetAccessRoutineArgs\n {\n ProjectId = publicRoutine.Project,\n DatasetId = publicRoutine.DatasetId,\n RoutineId = publicRoutine.RoutineId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is public\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"typeKind\": \"INT64\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"columns\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"value\",\n\t\t\t\t\t\"type\": map[string]interface{}{\n\t\t\t\t\t\t\"typeKind\": \"INT64\",\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\tjson1 := string(tmpJSON1)\n\t\tpublicRoutine, err := bigquery.NewRoutine(ctx, \"public\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: public.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"public_routine\"),\n\t\t\tRoutineType: pulumi.String(\"TABLE_VALUED_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"SELECT 1 + value AS value\\n\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"value\"),\n\t\t\t\t\tArgumentKind: pulumi.String(\"FIXED_TYPE\"),\n\t\t\t\t\tDataType: pulumi.String(json0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnTableType: pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivate, err := bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"authorized_routine\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: private.DatasetId,\n\t\t\tRoutine: \u0026bigquery.DatasetAccessRoutineArgs{\n\t\t\t\tProjectId: publicRoutine.Project,\n\t\t\t\tDatasetId: publicRoutine.DatasetId,\n\t\t\t\tRoutineId: publicRoutine.RoutineId,\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.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessRoutineArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public_dataset\")\n .description(\"This dataset is public\")\n .build());\n\n var publicRoutine = new Routine(\"publicRoutine\", RoutineArgs.builder()\n .datasetId(public_.datasetId())\n .routineId(\"public_routine\")\n .routineType(\"TABLE_VALUED_FUNCTION\")\n .language(\"SQL\")\n .definitionBody(\"\"\"\nSELECT 1 + value AS value\n \"\"\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"value\")\n .argumentKind(\"FIXED_TYPE\")\n .dataType(serializeJson(\n jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n )))\n .build())\n .returnTableType(serializeJson(\n jsonObject(\n jsonProperty(\"columns\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"value\"),\n jsonProperty(\"type\", jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n ))\n )))\n )))\n .build());\n\n var private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"private_dataset\")\n .description(\"This dataset is private\")\n .build());\n\n var authorizedRoutine = new DatasetAccess(\"authorizedRoutine\", DatasetAccessArgs.builder()\n .datasetId(private_.datasetId())\n .routine(DatasetAccessRoutineArgs.builder()\n .projectId(publicRoutine.project())\n .datasetId(publicRoutine.datasetId())\n .routineId(publicRoutine.routineId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public_dataset\n description: This dataset is public\n publicRoutine:\n type: gcp:bigquery:Routine\n name: public\n properties:\n datasetId: ${public.datasetId}\n routineId: public_routine\n routineType: TABLE_VALUED_FUNCTION\n language: SQL\n definitionBody: |\n SELECT 1 + value AS value\n arguments:\n - name: value\n argumentKind: FIXED_TYPE\n dataType:\n fn::toJSON:\n typeKind: INT64\n returnTableType:\n fn::toJSON:\n columns:\n - name: value\n type:\n typeKind: INT64\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private_dataset\n description: This dataset is private\n authorizedRoutine:\n type: gcp:bigquery:DatasetAccess\n name: authorized_routine\n properties:\n datasetId: ${private.datasetId}\n routine:\n projectId: ${publicRoutine.project}\n datasetId: ${publicRoutine.datasetId}\n routineId: ${publicRoutine.routineId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "## Example Usage\n\n### Bigquery Dataset Access Basic User\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {datasetId: \"example_dataset\"});\nconst bqowner = new gcp.serviceaccount.Account(\"bqowner\", {accountId: \"bqowner\"});\nconst access = new gcp.bigquery.DatasetAccess(\"access\", {\n datasetId: dataset.datasetId,\n role: \"OWNER\",\n userByEmail: bqowner.email,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.bigquery.Dataset(\"dataset\", dataset_id=\"example_dataset\")\nbqowner = gcp.serviceaccount.Account(\"bqowner\", account_id=\"bqowner\")\naccess = gcp.bigquery.DatasetAccess(\"access\",\n dataset_id=dataset.dataset_id,\n role=\"OWNER\",\n user_by_email=bqowner.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 dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var bqowner = new Gcp.ServiceAccount.Account(\"bqowner\", new()\n {\n AccountId = \"bqowner\",\n });\n\n var access = new Gcp.BigQuery.DatasetAccess(\"access\", new()\n {\n DatasetId = dataset.DatasetId,\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdataset, err := bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqowner, err := serviceaccount.NewAccount(ctx, \"bqowner\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"bqowner\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"access\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: dataset.DatasetId,\n\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\tUserByEmail: bqowner.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.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\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 .datasetId(\"example_dataset\")\n .build());\n\n var bqowner = new Account(\"bqowner\", AccountArgs.builder()\n .accountId(\"bqowner\")\n .build());\n\n var access = new DatasetAccess(\"access\", DatasetAccessArgs.builder()\n .datasetId(dataset.datasetId())\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access:\n type: gcp:bigquery:DatasetAccess\n properties:\n datasetId: ${dataset.datasetId}\n role: OWNER\n userByEmail: ${bqowner.email}\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n bqowner:\n type: gcp:serviceaccount:Account\n properties:\n accountId: bqowner\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Access View\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _private = new gcp.bigquery.Dataset(\"private\", {datasetId: \"example_dataset\"});\nconst _public = new gcp.bigquery.Dataset(\"public\", {datasetId: \"example_dataset2\"});\nconst publicTable = new gcp.bigquery.Table(\"public\", {\n deletionProtection: false,\n datasetId: _public.datasetId,\n tableId: \"example_table\",\n view: {\n query: \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n useLegacySql: false,\n },\n});\nconst access = new gcp.bigquery.DatasetAccess(\"access\", {\n datasetId: _private.datasetId,\n view: {\n projectId: publicTable.project,\n datasetId: _public.datasetId,\n tableId: publicTable.tableId,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprivate = gcp.bigquery.Dataset(\"private\", dataset_id=\"example_dataset\")\npublic = gcp.bigquery.Dataset(\"public\", dataset_id=\"example_dataset2\")\npublic_table = gcp.bigquery.Table(\"public\",\n deletion_protection=False,\n dataset_id=public.dataset_id,\n table_id=\"example_table\",\n view={\n \"query\": \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n \"use_legacy_sql\": False,\n })\naccess = gcp.bigquery.DatasetAccess(\"access\",\n dataset_id=private.dataset_id,\n view={\n \"project_id\": public_table.project,\n \"dataset_id\": public.dataset_id,\n \"table_id\": public_table.table_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 @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"example_dataset2\",\n });\n\n var publicTable = new Gcp.BigQuery.Table(\"public\", new()\n {\n DeletionProtection = false,\n DatasetId = @public.DatasetId,\n TableId = \"example_table\",\n View = new Gcp.BigQuery.Inputs.TableViewArgs\n {\n Query = \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n UseLegacySql = false,\n },\n });\n\n var access = new Gcp.BigQuery.DatasetAccess(\"access\", new()\n {\n DatasetId = @private.DatasetId,\n View = new Gcp.BigQuery.Inputs.DatasetAccessViewArgs\n {\n ProjectId = publicTable.Project,\n DatasetId = @public.DatasetId,\n TableId = publicTable.TableId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tprivate, err := bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublicTable, err := bigquery.NewTable(ctx, \"public\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: public.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tView: \u0026bigquery.TableViewArgs{\n\t\t\t\tQuery: pulumi.String(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\"),\n\t\t\t\tUseLegacySql: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"access\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: private.DatasetId,\n\t\t\tView: \u0026bigquery.DatasetAccessViewArgs{\n\t\t\t\tProjectId: publicTable.Project,\n\t\t\t\tDatasetId: public.DatasetId,\n\t\t\t\tTableId: publicTable.TableId,\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.inputs.TableViewArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessViewArgs;\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 private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"example_dataset2\")\n .build());\n\n var publicTable = new Table(\"publicTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(public_.datasetId())\n .tableId(\"example_table\")\n .view(TableViewArgs.builder()\n .query(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\")\n .useLegacySql(false)\n .build())\n .build());\n\n var access = new DatasetAccess(\"access\", DatasetAccessArgs.builder()\n .datasetId(private_.datasetId())\n .view(DatasetAccessViewArgs.builder()\n .projectId(publicTable.project())\n .datasetId(public_.datasetId())\n .tableId(publicTable.tableId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access:\n type: gcp:bigquery:DatasetAccess\n properties:\n datasetId: ${private.datasetId}\n view:\n projectId: ${publicTable.project}\n datasetId: ${public.datasetId}\n tableId: ${publicTable.tableId}\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset2\n publicTable:\n type: gcp:bigquery:Table\n name: public\n properties:\n deletionProtection: false\n datasetId: ${public.datasetId}\n tableId: example_table\n view:\n query: SELECT state FROM [lookerdata:cdc.project_tycho_reports]\n useLegacySql: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Access Authorized Dataset\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _private = new gcp.bigquery.Dataset(\"private\", {datasetId: \"private\"});\nconst _public = new gcp.bigquery.Dataset(\"public\", {datasetId: \"public\"});\nconst access = new gcp.bigquery.DatasetAccess(\"access\", {\n datasetId: _private.datasetId,\n authorizedDataset: {\n dataset: {\n projectId: _public.project,\n datasetId: _public.datasetId,\n },\n targetTypes: [\"VIEWS\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprivate = gcp.bigquery.Dataset(\"private\", dataset_id=\"private\")\npublic = gcp.bigquery.Dataset(\"public\", dataset_id=\"public\")\naccess = gcp.bigquery.DatasetAccess(\"access\",\n dataset_id=private.dataset_id,\n authorized_dataset={\n \"dataset\": {\n \"project_id\": public.project,\n \"dataset_id\": public.dataset_id,\n },\n \"target_types\": [\"VIEWS\"],\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 @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"private\",\n });\n\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public\",\n });\n\n var access = new Gcp.BigQuery.DatasetAccess(\"access\", new()\n {\n DatasetId = @private.DatasetId,\n AuthorizedDataset = new Gcp.BigQuery.Inputs.DatasetAccessAuthorizedDatasetArgs\n {\n Dataset = new Gcp.BigQuery.Inputs.DatasetAccessAuthorizedDatasetDatasetArgs\n {\n ProjectId = @public.Project,\n DatasetId = @public.DatasetId,\n },\n TargetTypes = new[]\n {\n \"VIEWS\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tprivate, err := bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"access\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: private.DatasetId,\n\t\t\tAuthorizedDataset: \u0026bigquery.DatasetAccessAuthorizedDatasetArgs{\n\t\t\t\tDataset: \u0026bigquery.DatasetAccessAuthorizedDatasetDatasetArgs{\n\t\t\t\t\tProjectId: public.Project,\n\t\t\t\t\tDatasetId: public.DatasetId,\n\t\t\t\t},\n\t\t\t\tTargetTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"VIEWS\"),\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.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessAuthorizedDatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessAuthorizedDatasetDatasetArgs;\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 private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"private\")\n .build());\n\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public\")\n .build());\n\n var access = new DatasetAccess(\"access\", DatasetAccessArgs.builder()\n .datasetId(private_.datasetId())\n .authorizedDataset(DatasetAccessAuthorizedDatasetArgs.builder()\n .dataset(DatasetAccessAuthorizedDatasetDatasetArgs.builder()\n .projectId(public_.project())\n .datasetId(public_.datasetId())\n .build())\n .targetTypes(\"VIEWS\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access:\n type: gcp:bigquery:DatasetAccess\n properties:\n datasetId: ${private.datasetId}\n authorizedDataset:\n dataset:\n projectId: ${public.project}\n datasetId: ${public.datasetId}\n targetTypes:\n - VIEWS\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Access Authorized Routine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _public = new gcp.bigquery.Dataset(\"public\", {\n datasetId: \"public_dataset\",\n description: \"This dataset is public\",\n});\nconst publicRoutine = new gcp.bigquery.Routine(\"public\", {\n datasetId: _public.datasetId,\n routineId: \"public_routine\",\n routineType: \"TABLE_VALUED_FUNCTION\",\n language: \"SQL\",\n definitionBody: \"SELECT 1 + value AS value\\n\",\n arguments: [{\n name: \"value\",\n argumentKind: \"FIXED_TYPE\",\n dataType: JSON.stringify({\n typeKind: \"INT64\",\n }),\n }],\n returnTableType: JSON.stringify({\n columns: [{\n name: \"value\",\n type: {\n typeKind: \"INT64\",\n },\n }],\n }),\n});\nconst _private = new gcp.bigquery.Dataset(\"private\", {\n datasetId: \"private_dataset\",\n description: \"This dataset is private\",\n});\nconst authorizedRoutine = new gcp.bigquery.DatasetAccess(\"authorized_routine\", {\n datasetId: _private.datasetId,\n routine: {\n projectId: publicRoutine.project,\n datasetId: publicRoutine.datasetId,\n routineId: publicRoutine.routineId,\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\npublic = gcp.bigquery.Dataset(\"public\",\n dataset_id=\"public_dataset\",\n description=\"This dataset is public\")\npublic_routine = gcp.bigquery.Routine(\"public\",\n dataset_id=public.dataset_id,\n routine_id=\"public_routine\",\n routine_type=\"TABLE_VALUED_FUNCTION\",\n language=\"SQL\",\n definition_body=\"SELECT 1 + value AS value\\n\",\n arguments=[{\n \"name\": \"value\",\n \"argument_kind\": \"FIXED_TYPE\",\n \"data_type\": json.dumps({\n \"type_kind\": \"INT64\",\n }),\n }],\n return_table_type=json.dumps({\n \"columns\": [{\n \"name\": \"value\",\n \"type\": {\n \"typeKind\": \"INT64\",\n },\n }],\n }))\nprivate = gcp.bigquery.Dataset(\"private\",\n dataset_id=\"private_dataset\",\n description=\"This dataset is private\")\nauthorized_routine = gcp.bigquery.DatasetAccess(\"authorized_routine\",\n dataset_id=private.dataset_id,\n routine={\n \"project_id\": public_routine.project,\n \"dataset_id\": public_routine.dataset_id,\n \"routine_id\": public_routine.routine_id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public_dataset\",\n Description = \"This dataset is public\",\n });\n\n var publicRoutine = new Gcp.BigQuery.Routine(\"public\", new()\n {\n DatasetId = @public.DatasetId,\n RoutineId = \"public_routine\",\n RoutineType = \"TABLE_VALUED_FUNCTION\",\n Language = \"SQL\",\n DefinitionBody = @\"SELECT 1 + value AS value\n\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"value\",\n ArgumentKind = \"FIXED_TYPE\",\n DataType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n }),\n },\n },\n ReturnTableType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"columns\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"value\",\n [\"type\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n },\n },\n },\n }),\n });\n\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"private_dataset\",\n Description = \"This dataset is private\",\n });\n\n var authorizedRoutine = new Gcp.BigQuery.DatasetAccess(\"authorized_routine\", new()\n {\n DatasetId = @private.DatasetId,\n Routine = new Gcp.BigQuery.Inputs.DatasetAccessRoutineArgs\n {\n ProjectId = publicRoutine.Project,\n DatasetId = publicRoutine.DatasetId,\n RoutineId = publicRoutine.RoutineId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is public\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"typeKind\": \"INT64\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"columns\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"value\",\n\t\t\t\t\t\"type\": map[string]interface{}{\n\t\t\t\t\t\t\"typeKind\": \"INT64\",\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\tjson1 := string(tmpJSON1)\n\t\tpublicRoutine, err := bigquery.NewRoutine(ctx, \"public\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: public.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"public_routine\"),\n\t\t\tRoutineType: pulumi.String(\"TABLE_VALUED_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"SELECT 1 + value AS value\\n\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"value\"),\n\t\t\t\t\tArgumentKind: pulumi.String(\"FIXED_TYPE\"),\n\t\t\t\t\tDataType: pulumi.String(json0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnTableType: pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivate, err := bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"authorized_routine\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: private.DatasetId,\n\t\t\tRoutine: \u0026bigquery.DatasetAccessRoutineArgs{\n\t\t\t\tProjectId: publicRoutine.Project,\n\t\t\t\tDatasetId: publicRoutine.DatasetId,\n\t\t\t\tRoutineId: publicRoutine.RoutineId,\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.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessRoutineArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public_dataset\")\n .description(\"This dataset is public\")\n .build());\n\n var publicRoutine = new Routine(\"publicRoutine\", RoutineArgs.builder()\n .datasetId(public_.datasetId())\n .routineId(\"public_routine\")\n .routineType(\"TABLE_VALUED_FUNCTION\")\n .language(\"SQL\")\n .definitionBody(\"\"\"\nSELECT 1 + value AS value\n \"\"\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"value\")\n .argumentKind(\"FIXED_TYPE\")\n .dataType(serializeJson(\n jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n )))\n .build())\n .returnTableType(serializeJson(\n jsonObject(\n jsonProperty(\"columns\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"value\"),\n jsonProperty(\"type\", jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n ))\n )))\n )))\n .build());\n\n var private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"private_dataset\")\n .description(\"This dataset is private\")\n .build());\n\n var authorizedRoutine = new DatasetAccess(\"authorizedRoutine\", DatasetAccessArgs.builder()\n .datasetId(private_.datasetId())\n .routine(DatasetAccessRoutineArgs.builder()\n .projectId(publicRoutine.project())\n .datasetId(publicRoutine.datasetId())\n .routineId(publicRoutine.routineId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public_dataset\n description: This dataset is public\n publicRoutine:\n type: gcp:bigquery:Routine\n name: public\n properties:\n datasetId: ${public.datasetId}\n routineId: public_routine\n routineType: TABLE_VALUED_FUNCTION\n language: SQL\n definitionBody: |\n SELECT 1 + value AS value\n arguments:\n - name: value\n argumentKind: FIXED_TYPE\n dataType:\n fn::toJSON:\n typeKind: INT64\n returnTableType:\n fn::toJSON:\n columns:\n - name: value\n type:\n typeKind: INT64\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private_dataset\n description: This dataset is private\n authorizedRoutine:\n type: gcp:bigquery:DatasetAccess\n name: authorized_routine\n properties:\n datasetId: ${private.datasetId}\n routine:\n projectId: ${publicRoutine.project}\n datasetId: ${publicRoutine.datasetId}\n routineId: ${publicRoutine.routineId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "apiUpdatedMember": { "type": "boolean", @@ -124259,7 +124259,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## Example Usage\n\n### Bigquery Job Query\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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={\n \"query\": \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n \"destinationTable\": {\n \"projectId\": foo.project,\n \"datasetId\": foo.dataset_id,\n \"tableId\": foo.table_id,\n },\n \"allowLargeResults\": True,\n \"flattenResults\": True,\n \"scriptOptions\": {\n \"keyResultStatement\": \"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/v7/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\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Query Table Reference\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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={\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```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/v7/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\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Load\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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={\n \"sourceUris\": [\"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\"],\n \"destinationTable\": {\n \"projectId\": foo.project,\n \"datasetId\": foo.dataset_id,\n \"tableId\": foo.table_id,\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```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/v7/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\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Load Geojson\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-bq-geojson`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"geojson-data.jsonl\",\n bucket: bucket.name,\n content: `{\"type\":\"Feature\",\"properties\":{\"continent\":\"Europe\",\"region\":\"Scandinavia\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n{\"type\":\"Feature\",\"properties\":{\"continent\":\"Africa\",\"region\":\"West Africa\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\n`,\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: [pulumi.interpolate`gs://${object.bucket}/${object.name}`],\n destinationTable: {\n projectId: foo.project,\n datasetId: foo.datasetId,\n tableId: foo.tableId,\n },\n writeDisposition: \"WRITE_TRUNCATE\",\n autodetect: true,\n sourceFormat: \"NEWLINE_DELIMITED_JSON\",\n jsonExtension: \"GEOJSON\",\n },\n}, {\n dependsOn: [object],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-bq-geojson\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"geojson-data.jsonl\",\n bucket=bucket.name,\n content=\"\"\"{\"type\":\"Feature\",\"properties\":{\"continent\":\"Europe\",\"region\":\"Scandinavia\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n{\"type\":\"Feature\",\"properties\":{\"continent\":\"Africa\",\"region\":\"West Africa\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\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={\n \"sourceUris\": [pulumi.Output.all(object.bucket, object.name).apply(lambda bucket, name: f\"gs://{bucket}/{name}\")],\n \"destinationTable\": {\n \"projectId\": foo.project,\n \"datasetId\": foo.dataset_id,\n \"tableId\": foo.table_id,\n },\n \"writeDisposition\": \"WRITE_TRUNCATE\",\n \"autodetect\": True,\n \"sourceFormat\": \"NEWLINE_DELIMITED_JSON\",\n \"jsonExtension\": \"GEOJSON\",\n },\n opts = pulumi.ResourceOptions(depends_on=[object]))\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 = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-bq-geojson\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"geojson-data.jsonl\",\n Bucket = bucket.Name,\n Content = @\"{\"\"type\"\":\"\"Feature\"\",\"\"properties\"\":{\"\"continent\"\":\"\"Europe\"\",\"\"region\"\":\"\"Scandinavia\"\"},\"\"geometry\"\":{\"\"type\"\":\"\"Polygon\"\",\"\"coordinates\"\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n{\"\"type\"\":\"\"Feature\"\",\"\"properties\"\":{\"\"continent\"\":\"\"Africa\"\",\"\"region\"\":\"\"West Africa\"\"},\"\"geometry\"\":{\"\"type\"\":\"\"Polygon\"\",\"\"coordinates\"\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\n\",\n });\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 Output.Tuple(@object.Bucket, @object.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 = foo.Project,\n DatasetId = foo.DatasetId,\n TableId = foo.TableId,\n },\n WriteDisposition = \"WRITE_TRUNCATE\",\n Autodetect = true,\n SourceFormat = \"NEWLINE_DELIMITED_JSON\",\n JsonExtension = \"GEOJSON\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @object,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-bq-geojson\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"geojson-data.jsonl\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tContent: pulumi.String(\"{\\\"type\\\":\\\"Feature\\\",\\\"properties\\\":{\\\"continent\\\":\\\"Europe\\\",\\\"region\\\":\\\"Scandinavia\\\"},\\\"geometry\\\":{\\\"type\\\":\\\"Polygon\\\",\\\"coordinates\\\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\\n{\\\"type\\\":\\\"Feature\\\",\\\"properties\\\":{\\\"continent\\\":\\\"Africa\\\",\\\"region\\\":\\\"West Africa\\\"},\\\"geometry\\\":{\\\"type\\\":\\\"Polygon\\\",\\\"coordinates\\\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\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.All(object.Bucket, object.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: 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\tWriteDisposition: pulumi.String(\"WRITE_TRUNCATE\"),\n\t\t\t\tAutodetect: pulumi.Bool(true),\n\t\t\t\tSourceFormat: pulumi.String(\"NEWLINE_DELIMITED_JSON\"),\n\t\t\t\tJsonExtension: pulumi.String(\"GEOJSON\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tobject,\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.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 = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-bq-geojson\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"geojson-data.jsonl\")\n .bucket(bucket.name())\n .content(\"\"\"\n{\"type\":\"Feature\",\"properties\":{\"continent\":\"Europe\",\"region\":\"Scandinavia\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n{\"type\":\"Feature\",\"properties\":{\"continent\":\"Africa\",\"region\":\"West Africa\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\n \"\"\")\n .build());\n\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(Output.tuple(object.bucket(), object.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(foo.project())\n .datasetId(foo.datasetId())\n .tableId(foo.tableId())\n .build())\n .writeDisposition(\"WRITE_TRUNCATE\")\n .autodetect(true)\n .sourceFormat(\"NEWLINE_DELIMITED_JSON\")\n .jsonExtension(\"GEOJSON\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(object)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-bq-geojson\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: geojson-data.jsonl\n bucket: ${bucket.name}\n content: |\n {\"type\":\"Feature\",\"properties\":{\"continent\":\"Europe\",\"region\":\"Scandinavia\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n {\"type\":\"Feature\",\"properties\":{\"continent\":\"Africa\",\"region\":\"West Africa\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\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://${object.bucket}/${object.name}\n destinationTable:\n projectId: ${foo.project}\n datasetId: ${foo.datasetId}\n tableId: ${foo.tableId}\n writeDisposition: WRITE_TRUNCATE\n autodetect: true\n sourceFormat: NEWLINE_DELIMITED_JSON\n jsonExtension: GEOJSON\n options:\n dependson:\n - ${object}\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Load Parquet\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.storage.Bucket(\"test\", {\n name: \"job_load_bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst testBucketObject = new gcp.storage.BucketObject(\"test\", {\n name: \"job_load_bucket_object\",\n source: new pulumi.asset.FileAsset(\"./test-fixtures/test.parquet.gzip\"),\n bucket: test.name,\n});\nconst testDataset = new gcp.bigquery.Dataset(\"test\", {\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(\"test\", {\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 = gcp.storage.Bucket(\"test\",\n name=\"job_load_bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\ntest_bucket_object = gcp.storage.BucketObject(\"test\",\n name=\"job_load_bucket_object\",\n source=pulumi.FileAsset(\"./test-fixtures/test.parquet.gzip\"),\n bucket=test.name)\ntest_dataset = gcp.bigquery.Dataset(\"test\",\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(\"test\",\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={\n \"sourceUris\": [pulumi.Output.all(test_bucket_object.bucket, test_bucket_object.name).apply(lambda bucket, name: f\"gs://{bucket}/{name}\")],\n \"destinationTable\": {\n \"projectId\": test_table.project,\n \"datasetId\": test_table.dataset_id,\n \"tableId\": test_table.table_id,\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```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.Storage.Bucket(\"test\", new()\n {\n Name = \"job_load_bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var testBucketObject = new Gcp.Storage.BucketObject(\"test\", new()\n {\n Name = \"job_load_bucket_object\",\n Source = new FileAsset(\"./test-fixtures/test.parquet.gzip\"),\n Bucket = test.Name,\n });\n\n var testDataset = new Gcp.BigQuery.Dataset(\"test\", 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(\"test\", 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/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttest, err := storage.NewBucket(ctx, \"test\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"job_load_bucket\"),\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, \"test\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"job_load_bucket_object\"),\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/test.parquet.gzip\"),\n\t\t\tBucket: test.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestDataset, err := bigquery.NewDataset(ctx, \"test\", \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, \"test\", \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 test = new Bucket(\"test\", BucketArgs.builder()\n .name(\"job_load_bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var testBucketObject = new BucketObject(\"testBucketObject\", BucketObjectArgs.builder()\n .name(\"job_load_bucket_object\")\n .source(new FileAsset(\"./test-fixtures/test.parquet.gzip\"))\n .bucket(test.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 test:\n type: gcp:storage:Bucket\n properties:\n name: job_load_bucket\n location: US\n uniformBucketLevelAccess: true\n testBucketObject:\n type: gcp:storage:BucketObject\n name: test\n properties:\n name: job_load_bucket_object\n source:\n fn::FileAsset: ./test-fixtures/test.parquet.gzip\n bucket: ${test.name}\n testDataset:\n type: gcp:bigquery:Dataset\n name: test\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 name: test\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\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Copy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst count = 2;\nconst sourceDataset: gcp.bigquery.Dataset[] = [];\nfor (const range = {value: 0}; range.value \u003c count; range.value++) {\n sourceDataset.push(new gcp.bigquery.Dataset(`source-${range.value}`, {\n datasetId: `job_copy_${range.value}_dataset`,\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n }));\n}\nconst source: gcp.bigquery.Table[] = [];\nfor (const range = {value: 0}; range.value \u003c count; range.value++) {\n source.push(new gcp.bigquery.Table(`source-${range.value}`, {\n deletionProtection: false,\n datasetId: sourceDataset[range.value].datasetId,\n tableId: `job_copy_${range.value}_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}\nconst destDataset = new gcp.bigquery.Dataset(\"dest\", {\n datasetId: \"job_copy_dest_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"global\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({\n projectId: \"my-project-name\",\n});\nconst encryptRole = new gcp.projects.IAMMember(\"encrypt_role\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:bq-${project.number}@bigquery-encryption.iam.gserviceaccount.com`),\n});\nconst dest = new gcp.bigquery.Table(\"dest\", {\n deletionProtection: false,\n datasetId: destDataset.datasetId,\n tableId: \"job_copy_dest_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 encryptionConfiguration: {\n kmsKeyName: cryptoKey.id,\n },\n}, {\n dependsOn: [encryptRole],\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_copy\",\n copy: {\n sourceTables: [\n {\n projectId: source[0].project,\n datasetId: source[0].datasetId,\n tableId: source[0].tableId,\n },\n {\n projectId: source[1].project,\n datasetId: source[1].datasetId,\n tableId: source[1].tableId,\n },\n ],\n destinationTable: {\n projectId: dest.project,\n datasetId: dest.datasetId,\n tableId: dest.tableId,\n },\n destinationEncryptionConfiguration: {\n kmsKeyName: cryptoKey.id,\n },\n },\n}, {\n dependsOn: [encryptRole],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncount = 2\nsource_dataset = []\nfor range in [{\"value\": i} for i in range(0, count)]:\n source_dataset.append(gcp.bigquery.Dataset(f\"source-{range['value']}\",\n dataset_id=f\"job_copy_{range['value']}_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\"))\nsource = []\nfor range in [{\"value\": i} for i in range(0, count)]:\n source.append(gcp.bigquery.Table(f\"source-{range['value']}\",\n deletion_protection=False,\n dataset_id=source_dataset[range[\"value\"]].dataset_id,\n table_id=f\"job_copy_{range['value']}_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_dataset = gcp.bigquery.Dataset(\"dest\",\n dataset_id=\"job_copy_dest_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-keyring\",\n location=\"global\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project(project_id=\"my-project-name\")\nencrypt_role = gcp.projects.IAMMember(\"encrypt_role\",\n project=project.project_id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:bq-{project.number}@bigquery-encryption.iam.gserviceaccount.com\")\ndest = gcp.bigquery.Table(\"dest\",\n deletion_protection=False,\n dataset_id=dest_dataset.dataset_id,\n table_id=\"job_copy_dest_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 encryption_configuration={\n \"kmsKeyName\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[encrypt_role]))\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_copy\",\n copy={\n \"sourceTables\": [\n {\n \"projectId\": source[0].project,\n \"datasetId\": source[0].dataset_id,\n \"tableId\": source[0].table_id,\n },\n {\n \"projectId\": source[1].project,\n \"datasetId\": source[1].dataset_id,\n \"tableId\": source[1].table_id,\n },\n ],\n \"destinationTable\": {\n \"projectId\": dest.project,\n \"datasetId\": dest.dataset_id,\n \"tableId\": dest.table_id,\n },\n \"destinationEncryptionConfiguration\": {\n \"kmsKeyName\": crypto_key.id,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[encrypt_role]))\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 count = 2;\n\n var sourceDataset = new List\u003cGcp.BigQuery.Dataset\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c count; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n sourceDataset.Add(new Gcp.BigQuery.Dataset($\"source-{range.Value}\", new()\n {\n DatasetId = $\"job_copy_{range.Value}_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n }));\n }\n var source = new List\u003cGcp.BigQuery.Table\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c count; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n source.Add(new Gcp.BigQuery.Table($\"source-{range.Value}\", new()\n {\n DeletionProtection = false,\n DatasetId = sourceDataset[range.Value].DatasetId,\n TableId = $\"job_copy_{range.Value}_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 destDataset = new Gcp.BigQuery.Dataset(\"dest\", new()\n {\n DatasetId = \"job_copy_dest_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"global\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke(new()\n {\n ProjectId = \"my-project-name\",\n });\n\n var encryptRole = new Gcp.Projects.IAMMember(\"encrypt_role\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:bq-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@bigquery-encryption.iam.gserviceaccount.com\",\n });\n\n var dest = new Gcp.BigQuery.Table(\"dest\", new()\n {\n DeletionProtection = false,\n DatasetId = destDataset.DatasetId,\n TableId = \"job_copy_dest_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 EncryptionConfiguration = new Gcp.BigQuery.Inputs.TableEncryptionConfigurationArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n encryptRole,\n },\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_copy\",\n Copy = new Gcp.BigQuery.Inputs.JobCopyArgs\n {\n SourceTables = new[]\n {\n new Gcp.BigQuery.Inputs.JobCopySourceTableArgs\n {\n ProjectId = source[0].Project,\n DatasetId = source[0].DatasetId,\n TableId = source[0].TableId,\n },\n new Gcp.BigQuery.Inputs.JobCopySourceTableArgs\n {\n ProjectId = source[1].Project,\n DatasetId = source[1].DatasetId,\n TableId = source[1].TableId,\n },\n },\n DestinationTable = new Gcp.BigQuery.Inputs.JobCopyDestinationTableArgs\n {\n ProjectId = dest.Project,\n DatasetId = dest.DatasetId,\n TableId = dest.TableId,\n },\n DestinationEncryptionConfiguration = new Gcp.BigQuery.Inputs.JobCopyDestinationEncryptionConfigurationArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n encryptRole,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcount := 2\n\t\tvar sourceDataset []*bigquery.Dataset\n\t\tfor index := 0; index \u003c count; index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := bigquery.NewDataset(ctx, fmt.Sprintf(\"source-%v\", key0), \u0026bigquery.DatasetArgs{\n\t\t\t\tDatasetId: pulumi.String(fmt.Sprintf(\"job_copy_%v_dataset\", val0)),\n\t\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tsourceDataset = append(sourceDataset, __res)\n\t\t}\n\t\tvar source []*bigquery.Table\n\t\tfor index := 0; index \u003c count; index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := bigquery.NewTable(ctx, fmt.Sprintf(\"source-%v\", key0), \u0026bigquery.TableArgs{\n\t\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\t\tDatasetId: sourceDataset[val0].DatasetId,\n\t\t\t\tTableId: pulumi.String(fmt.Sprintf(\"job_copy_%v_table\", val0)),\n\t\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\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tsource = append(source, __res)\n\t\t}\n\t\tdestDataset, err := bigquery.NewDataset(ctx, \"dest\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_copy_dest_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\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{\n\t\t\tProjectId: pulumi.StringRef(\"my-project-name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tencryptRole, err := projects.NewIAMMember(ctx, \"encrypt_role\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:bq-%v@bigquery-encryption.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdest, err := bigquery.NewTable(ctx, \"dest\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: destDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_copy_dest_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\tEncryptionConfiguration: \u0026bigquery.TableEncryptionConfigurationArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tencryptRole,\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_copy\"),\n\t\t\tCopy: \u0026bigquery.JobCopyArgs{\n\t\t\t\tSourceTables: bigquery.JobCopySourceTableArray{\n\t\t\t\t\t\u0026bigquery.JobCopySourceTableArgs{\n\t\t\t\t\t\tProjectId: source[0].Project,\n\t\t\t\t\t\tDatasetId: source[0].DatasetId,\n\t\t\t\t\t\tTableId: source[0].TableId,\n\t\t\t\t\t},\n\t\t\t\t\t\u0026bigquery.JobCopySourceTableArgs{\n\t\t\t\t\t\tProjectId: source[1].Project,\n\t\t\t\t\t\tDatasetId: source[1].DatasetId,\n\t\t\t\t\t\tTableId: source[1].TableId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDestinationTable: \u0026bigquery.JobCopyDestinationTableArgs{\n\t\t\t\t\tProjectId: dest.Project,\n\t\t\t\t\tDatasetId: dest.DatasetId,\n\t\t\t\t\tTableId: dest.TableId,\n\t\t\t\t},\n\t\t\t\tDestinationEncryptionConfiguration: \u0026bigquery.JobCopyDestinationEncryptionConfigurationArgs{\n\t\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tencryptRole,\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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableEncryptionConfigurationArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobCopyArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobCopyDestinationTableArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobCopyDestinationEncryptionConfigurationArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\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 count = 2;\n\n for (var i = 0; i \u003c count; i++) {\n new Dataset(\"sourceDataset-\" + i, DatasetArgs.builder()\n .datasetId(String.format(\"job_copy_%s_dataset\", range.value()))\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n \n}\n for (var i = 0; i \u003c count; i++) {\n new Table(\"source-\" + i, TableArgs.builder()\n .deletionProtection(false)\n .datasetId(sourceDataset[range.value()].datasetId())\n .tableId(String.format(\"job_copy_%s_table\", range.value()))\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 \n}\n var destDataset = new Dataset(\"destDataset\", DatasetArgs.builder()\n .datasetId(\"job_copy_dest_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"example-keyring\")\n .location(\"global\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder()\n .projectId(\"my-project-name\")\n .build());\n\n var encryptRole = new IAMMember(\"encryptRole\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:bq-%s@bigquery-encryption.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var dest = new Table(\"dest\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(destDataset.datasetId())\n .tableId(\"job_copy_dest_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 .encryptionConfiguration(TableEncryptionConfigurationArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(encryptRole)\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .jobId(\"job_copy\")\n .copy(JobCopyArgs.builder()\n .sourceTables( \n JobCopySourceTableArgs.builder()\n .projectId(source[0].project())\n .datasetId(source[0].datasetId())\n .tableId(source[0].tableId())\n .build(),\n JobCopySourceTableArgs.builder()\n .projectId(source[1].project())\n .datasetId(source[1].datasetId())\n .tableId(source[1].tableId())\n .build())\n .destinationTable(JobCopyDestinationTableArgs.builder()\n .projectId(dest.project())\n .datasetId(dest.datasetId())\n .tableId(dest.tableId())\n .build())\n .destinationEncryptionConfiguration(JobCopyDestinationEncryptionConfigurationArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(encryptRole)\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Extract\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source_oneDataset = new gcp.bigquery.Dataset(\"source-one\", {\n datasetId: \"job_extract_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst source_one = new gcp.bigquery.Table(\"source-one\", {\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 name: \"job_extract_bucket\",\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_one.project,\n datasetId: source_one.datasetId,\n tableId: source_one.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-one\",\n dataset_id=\"job_extract_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nsource_one = gcp.bigquery.Table(\"source-one\",\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 name=\"job_extract_bucket\",\n location=\"US\",\n force_destroy=True)\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_extract\",\n extract={\n \"destinationUris\": [dest.url.apply(lambda url: f\"{url}/extract\")],\n \"sourceTable\": {\n \"projectId\": source_one.project,\n \"datasetId\": source_one.dataset_id,\n \"tableId\": source_one.table_id,\n },\n \"destinationFormat\": \"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-one\", 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_one = new Gcp.BigQuery.Table(\"source-one\", 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 Name = \"job_extract_bucket\",\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_one.Project,\n DatasetId = source_one.DatasetId,\n TableId = source_one.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/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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-one\", \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-one\", \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\tName: pulumi.String(\"job_extract_bucket\"),\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_one.Project,\n\t\t\t\t\tDatasetId: source_one.DatasetId,\n\t\t\t\t\tTableId: source_one.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_one = new Table(\"source-one\", 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 .name(\"job_extract_bucket\")\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_one.project())\n .datasetId(source_one.datasetId())\n .tableId(source_one.tableId())\n .build())\n .destinationFormat(\"NEWLINE_DELIMITED_JSON\")\n .compression(\"GZIP\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source-one:\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 name: source-one\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 name: job_extract_bucket\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-one\"].project}\n datasetId: ${[\"source-one\"].datasetId}\n tableId: ${[\"source-one\"].tableId}\n destinationFormat: NEWLINE_DELIMITED_JSON\n compression: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJob can be imported using any of these accepted formats:\n\n* `projects/{{project}}/jobs/{{job_id}}/location/{{location}}`\n\n* `projects/{{project}}/jobs/{{job_id}}`\n\n* `{{project}}/{{job_id}}/{{location}}`\n\n* `{{job_id}}/{{location}}`\n\n* `{{project}}/{{job_id}}`\n\n* `{{job_id}}`\n\nWhen using the `pulumi import` command, Job can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default projects/{{project}}/jobs/{{job_id}}/location/{{location}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default projects/{{project}}/jobs/{{job_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default {{project}}/{{job_id}}/{{location}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default {{job_id}}/{{location}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default {{project}}/{{job_id}}\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## Example Usage\n\n### Bigquery Job Query\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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={\n \"query\": \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n \"destination_table\": {\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\": {\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/v7/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\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Query Table Reference\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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={\n \"query\": \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n \"destination_table\": {\n \"table_id\": foo.id,\n },\n \"default_dataset\": {\n \"dataset_id\": bar.id,\n },\n \"allow_large_results\": True,\n \"flatten_results\": True,\n \"script_options\": {\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/v7/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\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Load\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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={\n \"source_uris\": [\"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\"],\n \"destination_table\": {\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/v7/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\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Load Geojson\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-bq-geojson`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"geojson-data.jsonl\",\n bucket: bucket.name,\n content: `{\"type\":\"Feature\",\"properties\":{\"continent\":\"Europe\",\"region\":\"Scandinavia\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n{\"type\":\"Feature\",\"properties\":{\"continent\":\"Africa\",\"region\":\"West Africa\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\n`,\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: [pulumi.interpolate`gs://${object.bucket}/${object.name}`],\n destinationTable: {\n projectId: foo.project,\n datasetId: foo.datasetId,\n tableId: foo.tableId,\n },\n writeDisposition: \"WRITE_TRUNCATE\",\n autodetect: true,\n sourceFormat: \"NEWLINE_DELIMITED_JSON\",\n jsonExtension: \"GEOJSON\",\n },\n}, {\n dependsOn: [object],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-bq-geojson\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"geojson-data.jsonl\",\n bucket=bucket.name,\n content=\"\"\"{\"type\":\"Feature\",\"properties\":{\"continent\":\"Europe\",\"region\":\"Scandinavia\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n{\"type\":\"Feature\",\"properties\":{\"continent\":\"Africa\",\"region\":\"West Africa\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\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={\n \"source_uris\": [pulumi.Output.all(object.bucket, object.name).apply(lambda bucket, name: f\"gs://{bucket}/{name}\")],\n \"destination_table\": {\n \"project_id\": foo.project,\n \"dataset_id\": foo.dataset_id,\n \"table_id\": foo.table_id,\n },\n \"write_disposition\": \"WRITE_TRUNCATE\",\n \"autodetect\": True,\n \"source_format\": \"NEWLINE_DELIMITED_JSON\",\n \"json_extension\": \"GEOJSON\",\n },\n opts = pulumi.ResourceOptions(depends_on=[object]))\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 = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-bq-geojson\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"geojson-data.jsonl\",\n Bucket = bucket.Name,\n Content = @\"{\"\"type\"\":\"\"Feature\"\",\"\"properties\"\":{\"\"continent\"\":\"\"Europe\"\",\"\"region\"\":\"\"Scandinavia\"\"},\"\"geometry\"\":{\"\"type\"\":\"\"Polygon\"\",\"\"coordinates\"\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n{\"\"type\"\":\"\"Feature\"\",\"\"properties\"\":{\"\"continent\"\":\"\"Africa\"\",\"\"region\"\":\"\"West Africa\"\"},\"\"geometry\"\":{\"\"type\"\":\"\"Polygon\"\",\"\"coordinates\"\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\n\",\n });\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 Output.Tuple(@object.Bucket, @object.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 = foo.Project,\n DatasetId = foo.DatasetId,\n TableId = foo.TableId,\n },\n WriteDisposition = \"WRITE_TRUNCATE\",\n Autodetect = true,\n SourceFormat = \"NEWLINE_DELIMITED_JSON\",\n JsonExtension = \"GEOJSON\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @object,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-bq-geojson\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"geojson-data.jsonl\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tContent: pulumi.String(\"{\\\"type\\\":\\\"Feature\\\",\\\"properties\\\":{\\\"continent\\\":\\\"Europe\\\",\\\"region\\\":\\\"Scandinavia\\\"},\\\"geometry\\\":{\\\"type\\\":\\\"Polygon\\\",\\\"coordinates\\\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\\n{\\\"type\\\":\\\"Feature\\\",\\\"properties\\\":{\\\"continent\\\":\\\"Africa\\\",\\\"region\\\":\\\"West Africa\\\"},\\\"geometry\\\":{\\\"type\\\":\\\"Polygon\\\",\\\"coordinates\\\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\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.All(object.Bucket, object.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: 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\tWriteDisposition: pulumi.String(\"WRITE_TRUNCATE\"),\n\t\t\t\tAutodetect: pulumi.Bool(true),\n\t\t\t\tSourceFormat: pulumi.String(\"NEWLINE_DELIMITED_JSON\"),\n\t\t\t\tJsonExtension: pulumi.String(\"GEOJSON\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tobject,\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.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 = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-bq-geojson\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"geojson-data.jsonl\")\n .bucket(bucket.name())\n .content(\"\"\"\n{\"type\":\"Feature\",\"properties\":{\"continent\":\"Europe\",\"region\":\"Scandinavia\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n{\"type\":\"Feature\",\"properties\":{\"continent\":\"Africa\",\"region\":\"West Africa\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\n \"\"\")\n .build());\n\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(Output.tuple(object.bucket(), object.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(foo.project())\n .datasetId(foo.datasetId())\n .tableId(foo.tableId())\n .build())\n .writeDisposition(\"WRITE_TRUNCATE\")\n .autodetect(true)\n .sourceFormat(\"NEWLINE_DELIMITED_JSON\")\n .jsonExtension(\"GEOJSON\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(object)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-bq-geojson\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: geojson-data.jsonl\n bucket: ${bucket.name}\n content: |\n {\"type\":\"Feature\",\"properties\":{\"continent\":\"Europe\",\"region\":\"Scandinavia\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n {\"type\":\"Feature\",\"properties\":{\"continent\":\"Africa\",\"region\":\"West Africa\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\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://${object.bucket}/${object.name}\n destinationTable:\n projectId: ${foo.project}\n datasetId: ${foo.datasetId}\n tableId: ${foo.tableId}\n writeDisposition: WRITE_TRUNCATE\n autodetect: true\n sourceFormat: NEWLINE_DELIMITED_JSON\n jsonExtension: GEOJSON\n options:\n dependson:\n - ${object}\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Load Parquet\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.storage.Bucket(\"test\", {\n name: \"job_load_bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst testBucketObject = new gcp.storage.BucketObject(\"test\", {\n name: \"job_load_bucket_object\",\n source: new pulumi.asset.FileAsset(\"./test-fixtures/test.parquet.gzip\"),\n bucket: test.name,\n});\nconst testDataset = new gcp.bigquery.Dataset(\"test\", {\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(\"test\", {\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 = gcp.storage.Bucket(\"test\",\n name=\"job_load_bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\ntest_bucket_object = gcp.storage.BucketObject(\"test\",\n name=\"job_load_bucket_object\",\n source=pulumi.FileAsset(\"./test-fixtures/test.parquet.gzip\"),\n bucket=test.name)\ntest_dataset = gcp.bigquery.Dataset(\"test\",\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(\"test\",\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={\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\": {\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\": {\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 test = new Gcp.Storage.Bucket(\"test\", new()\n {\n Name = \"job_load_bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var testBucketObject = new Gcp.Storage.BucketObject(\"test\", new()\n {\n Name = \"job_load_bucket_object\",\n Source = new FileAsset(\"./test-fixtures/test.parquet.gzip\"),\n Bucket = test.Name,\n });\n\n var testDataset = new Gcp.BigQuery.Dataset(\"test\", 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(\"test\", 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/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttest, err := storage.NewBucket(ctx, \"test\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"job_load_bucket\"),\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, \"test\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"job_load_bucket_object\"),\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/test.parquet.gzip\"),\n\t\t\tBucket: test.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestDataset, err := bigquery.NewDataset(ctx, \"test\", \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, \"test\", \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 test = new Bucket(\"test\", BucketArgs.builder()\n .name(\"job_load_bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var testBucketObject = new BucketObject(\"testBucketObject\", BucketObjectArgs.builder()\n .name(\"job_load_bucket_object\")\n .source(new FileAsset(\"./test-fixtures/test.parquet.gzip\"))\n .bucket(test.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 test:\n type: gcp:storage:Bucket\n properties:\n name: job_load_bucket\n location: US\n uniformBucketLevelAccess: true\n testBucketObject:\n type: gcp:storage:BucketObject\n name: test\n properties:\n name: job_load_bucket_object\n source:\n fn::FileAsset: ./test-fixtures/test.parquet.gzip\n bucket: ${test.name}\n testDataset:\n type: gcp:bigquery:Dataset\n name: test\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 name: test\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\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Copy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst count = 2;\nconst sourceDataset: gcp.bigquery.Dataset[] = [];\nfor (const range = {value: 0}; range.value \u003c count; range.value++) {\n sourceDataset.push(new gcp.bigquery.Dataset(`source-${range.value}`, {\n datasetId: `job_copy_${range.value}_dataset`,\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n }));\n}\nconst source: gcp.bigquery.Table[] = [];\nfor (const range = {value: 0}; range.value \u003c count; range.value++) {\n source.push(new gcp.bigquery.Table(`source-${range.value}`, {\n deletionProtection: false,\n datasetId: sourceDataset[range.value].datasetId,\n tableId: `job_copy_${range.value}_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}\nconst destDataset = new gcp.bigquery.Dataset(\"dest\", {\n datasetId: \"job_copy_dest_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"global\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({\n projectId: \"my-project-name\",\n});\nconst encryptRole = new gcp.projects.IAMMember(\"encrypt_role\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:bq-${project.number}@bigquery-encryption.iam.gserviceaccount.com`),\n});\nconst dest = new gcp.bigquery.Table(\"dest\", {\n deletionProtection: false,\n datasetId: destDataset.datasetId,\n tableId: \"job_copy_dest_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 encryptionConfiguration: {\n kmsKeyName: cryptoKey.id,\n },\n}, {\n dependsOn: [encryptRole],\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_copy\",\n copy: {\n sourceTables: [\n {\n projectId: source[0].project,\n datasetId: source[0].datasetId,\n tableId: source[0].tableId,\n },\n {\n projectId: source[1].project,\n datasetId: source[1].datasetId,\n tableId: source[1].tableId,\n },\n ],\n destinationTable: {\n projectId: dest.project,\n datasetId: dest.datasetId,\n tableId: dest.tableId,\n },\n destinationEncryptionConfiguration: {\n kmsKeyName: cryptoKey.id,\n },\n },\n}, {\n dependsOn: [encryptRole],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncount = 2\nsource_dataset = []\nfor range in [{\"value\": i} for i in range(0, count)]:\n source_dataset.append(gcp.bigquery.Dataset(f\"source-{range['value']}\",\n dataset_id=f\"job_copy_{range['value']}_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\"))\nsource = []\nfor range in [{\"value\": i} for i in range(0, count)]:\n source.append(gcp.bigquery.Table(f\"source-{range['value']}\",\n deletion_protection=False,\n dataset_id=source_dataset[range[\"value\"]].dataset_id,\n table_id=f\"job_copy_{range['value']}_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_dataset = gcp.bigquery.Dataset(\"dest\",\n dataset_id=\"job_copy_dest_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-keyring\",\n location=\"global\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project(project_id=\"my-project-name\")\nencrypt_role = gcp.projects.IAMMember(\"encrypt_role\",\n project=project.project_id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:bq-{project.number}@bigquery-encryption.iam.gserviceaccount.com\")\ndest = gcp.bigquery.Table(\"dest\",\n deletion_protection=False,\n dataset_id=dest_dataset.dataset_id,\n table_id=\"job_copy_dest_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 encryption_configuration={\n \"kms_key_name\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[encrypt_role]))\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_copy\",\n copy={\n \"source_tables\": [\n {\n \"project_id\": source[0].project,\n \"dataset_id\": source[0].dataset_id,\n \"table_id\": source[0].table_id,\n },\n {\n \"project_id\": source[1].project,\n \"dataset_id\": source[1].dataset_id,\n \"table_id\": source[1].table_id,\n },\n ],\n \"destination_table\": {\n \"project_id\": dest.project,\n \"dataset_id\": dest.dataset_id,\n \"table_id\": dest.table_id,\n },\n \"destination_encryption_configuration\": {\n \"kms_key_name\": crypto_key.id,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[encrypt_role]))\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 count = 2;\n\n var sourceDataset = new List\u003cGcp.BigQuery.Dataset\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c count; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n sourceDataset.Add(new Gcp.BigQuery.Dataset($\"source-{range.Value}\", new()\n {\n DatasetId = $\"job_copy_{range.Value}_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n }));\n }\n var source = new List\u003cGcp.BigQuery.Table\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c count; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n source.Add(new Gcp.BigQuery.Table($\"source-{range.Value}\", new()\n {\n DeletionProtection = false,\n DatasetId = sourceDataset[range.Value].DatasetId,\n TableId = $\"job_copy_{range.Value}_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 destDataset = new Gcp.BigQuery.Dataset(\"dest\", new()\n {\n DatasetId = \"job_copy_dest_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"global\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke(new()\n {\n ProjectId = \"my-project-name\",\n });\n\n var encryptRole = new Gcp.Projects.IAMMember(\"encrypt_role\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:bq-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@bigquery-encryption.iam.gserviceaccount.com\",\n });\n\n var dest = new Gcp.BigQuery.Table(\"dest\", new()\n {\n DeletionProtection = false,\n DatasetId = destDataset.DatasetId,\n TableId = \"job_copy_dest_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 EncryptionConfiguration = new Gcp.BigQuery.Inputs.TableEncryptionConfigurationArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n encryptRole,\n },\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_copy\",\n Copy = new Gcp.BigQuery.Inputs.JobCopyArgs\n {\n SourceTables = new[]\n {\n new Gcp.BigQuery.Inputs.JobCopySourceTableArgs\n {\n ProjectId = source[0].Project,\n DatasetId = source[0].DatasetId,\n TableId = source[0].TableId,\n },\n new Gcp.BigQuery.Inputs.JobCopySourceTableArgs\n {\n ProjectId = source[1].Project,\n DatasetId = source[1].DatasetId,\n TableId = source[1].TableId,\n },\n },\n DestinationTable = new Gcp.BigQuery.Inputs.JobCopyDestinationTableArgs\n {\n ProjectId = dest.Project,\n DatasetId = dest.DatasetId,\n TableId = dest.TableId,\n },\n DestinationEncryptionConfiguration = new Gcp.BigQuery.Inputs.JobCopyDestinationEncryptionConfigurationArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n encryptRole,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcount := 2\n\t\tvar sourceDataset []*bigquery.Dataset\n\t\tfor index := 0; index \u003c count; index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := bigquery.NewDataset(ctx, fmt.Sprintf(\"source-%v\", key0), \u0026bigquery.DatasetArgs{\n\t\t\t\tDatasetId: pulumi.String(fmt.Sprintf(\"job_copy_%v_dataset\", val0)),\n\t\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tsourceDataset = append(sourceDataset, __res)\n\t\t}\n\t\tvar source []*bigquery.Table\n\t\tfor index := 0; index \u003c count; index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := bigquery.NewTable(ctx, fmt.Sprintf(\"source-%v\", key0), \u0026bigquery.TableArgs{\n\t\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\t\tDatasetId: sourceDataset[val0].DatasetId,\n\t\t\t\tTableId: pulumi.String(fmt.Sprintf(\"job_copy_%v_table\", val0)),\n\t\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\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tsource = append(source, __res)\n\t\t}\n\t\tdestDataset, err := bigquery.NewDataset(ctx, \"dest\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_copy_dest_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\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{\n\t\t\tProjectId: pulumi.StringRef(\"my-project-name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tencryptRole, err := projects.NewIAMMember(ctx, \"encrypt_role\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:bq-%v@bigquery-encryption.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdest, err := bigquery.NewTable(ctx, \"dest\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: destDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_copy_dest_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\tEncryptionConfiguration: \u0026bigquery.TableEncryptionConfigurationArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tencryptRole,\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_copy\"),\n\t\t\tCopy: \u0026bigquery.JobCopyArgs{\n\t\t\t\tSourceTables: bigquery.JobCopySourceTableArray{\n\t\t\t\t\t\u0026bigquery.JobCopySourceTableArgs{\n\t\t\t\t\t\tProjectId: source[0].Project,\n\t\t\t\t\t\tDatasetId: source[0].DatasetId,\n\t\t\t\t\t\tTableId: source[0].TableId,\n\t\t\t\t\t},\n\t\t\t\t\t\u0026bigquery.JobCopySourceTableArgs{\n\t\t\t\t\t\tProjectId: source[1].Project,\n\t\t\t\t\t\tDatasetId: source[1].DatasetId,\n\t\t\t\t\t\tTableId: source[1].TableId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDestinationTable: \u0026bigquery.JobCopyDestinationTableArgs{\n\t\t\t\t\tProjectId: dest.Project,\n\t\t\t\t\tDatasetId: dest.DatasetId,\n\t\t\t\t\tTableId: dest.TableId,\n\t\t\t\t},\n\t\t\t\tDestinationEncryptionConfiguration: \u0026bigquery.JobCopyDestinationEncryptionConfigurationArgs{\n\t\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tencryptRole,\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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableEncryptionConfigurationArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobCopyArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobCopyDestinationTableArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobCopyDestinationEncryptionConfigurationArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\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 count = 2;\n\n for (var i = 0; i \u003c count; i++) {\n new Dataset(\"sourceDataset-\" + i, DatasetArgs.builder()\n .datasetId(String.format(\"job_copy_%s_dataset\", range.value()))\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n \n}\n for (var i = 0; i \u003c count; i++) {\n new Table(\"source-\" + i, TableArgs.builder()\n .deletionProtection(false)\n .datasetId(sourceDataset[range.value()].datasetId())\n .tableId(String.format(\"job_copy_%s_table\", range.value()))\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 \n}\n var destDataset = new Dataset(\"destDataset\", DatasetArgs.builder()\n .datasetId(\"job_copy_dest_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"example-keyring\")\n .location(\"global\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder()\n .projectId(\"my-project-name\")\n .build());\n\n var encryptRole = new IAMMember(\"encryptRole\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:bq-%s@bigquery-encryption.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var dest = new Table(\"dest\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(destDataset.datasetId())\n .tableId(\"job_copy_dest_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 .encryptionConfiguration(TableEncryptionConfigurationArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(encryptRole)\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .jobId(\"job_copy\")\n .copy(JobCopyArgs.builder()\n .sourceTables( \n JobCopySourceTableArgs.builder()\n .projectId(source[0].project())\n .datasetId(source[0].datasetId())\n .tableId(source[0].tableId())\n .build(),\n JobCopySourceTableArgs.builder()\n .projectId(source[1].project())\n .datasetId(source[1].datasetId())\n .tableId(source[1].tableId())\n .build())\n .destinationTable(JobCopyDestinationTableArgs.builder()\n .projectId(dest.project())\n .datasetId(dest.datasetId())\n .tableId(dest.tableId())\n .build())\n .destinationEncryptionConfiguration(JobCopyDestinationEncryptionConfigurationArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(encryptRole)\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Extract\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source_oneDataset = new gcp.bigquery.Dataset(\"source-one\", {\n datasetId: \"job_extract_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst source_one = new gcp.bigquery.Table(\"source-one\", {\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 name: \"job_extract_bucket\",\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_one.project,\n datasetId: source_one.datasetId,\n tableId: source_one.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-one\",\n dataset_id=\"job_extract_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nsource_one = gcp.bigquery.Table(\"source-one\",\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 name=\"job_extract_bucket\",\n location=\"US\",\n force_destroy=True)\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_extract\",\n extract={\n \"destination_uris\": [dest.url.apply(lambda url: f\"{url}/extract\")],\n \"source_table\": {\n \"project_id\": source_one.project,\n \"dataset_id\": source_one.dataset_id,\n \"table_id\": source_one.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-one\", 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_one = new Gcp.BigQuery.Table(\"source-one\", 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 Name = \"job_extract_bucket\",\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_one.Project,\n DatasetId = source_one.DatasetId,\n TableId = source_one.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/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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-one\", \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-one\", \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\tName: pulumi.String(\"job_extract_bucket\"),\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_one.Project,\n\t\t\t\t\tDatasetId: source_one.DatasetId,\n\t\t\t\t\tTableId: source_one.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_one = new Table(\"source-one\", 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 .name(\"job_extract_bucket\")\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_one.project())\n .datasetId(source_one.datasetId())\n .tableId(source_one.tableId())\n .build())\n .destinationFormat(\"NEWLINE_DELIMITED_JSON\")\n .compression(\"GZIP\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source-one:\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 name: source-one\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 name: job_extract_bucket\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-one\"].project}\n datasetId: ${[\"source-one\"].datasetId}\n tableId: ${[\"source-one\"].tableId}\n destinationFormat: NEWLINE_DELIMITED_JSON\n compression: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJob can be imported using any of these accepted formats:\n\n* `projects/{{project}}/jobs/{{job_id}}/location/{{location}}`\n\n* `projects/{{project}}/jobs/{{job_id}}`\n\n* `{{project}}/{{job_id}}/{{location}}`\n\n* `{{job_id}}/{{location}}`\n\n* `{{project}}/{{job_id}}`\n\n* `{{job_id}}`\n\nWhen using the `pulumi import` command, Job can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default projects/{{project}}/jobs/{{job_id}}/location/{{location}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default projects/{{project}}/jobs/{{job_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default {{project}}/{{job_id}}/{{location}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default {{job_id}}/{{location}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default {{project}}/{{job_id}}\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", @@ -124477,7 +124477,7 @@ } }, "gcp:bigquery/reservation:Reservation": { - "description": "A reservation is a mechanism used to guarantee BigQuery slots to users.\n\n\nTo get more information about Reservation, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/reservations/rest/v1/projects.locations.reservations/create)\n* How-to Guides\n * [Introduction to Reservations](https://cloud.google.com/bigquery/docs/reservations-intro)\n\n## Example Usage\n\n### Bigquery Reservation Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst reservation = new gcp.bigquery.Reservation(\"reservation\", {\n name: \"my-reservation\",\n location: \"us-west2\",\n slotCapacity: 0,\n edition: \"STANDARD\",\n ignoreIdleSlots: true,\n concurrency: 0,\n autoscale: {\n maxSlots: 100,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nreservation = gcp.bigquery.Reservation(\"reservation\",\n name=\"my-reservation\",\n location=\"us-west2\",\n slot_capacity=0,\n edition=\"STANDARD\",\n ignore_idle_slots=True,\n concurrency=0,\n autoscale={\n \"maxSlots\": 100,\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 reservation = new Gcp.BigQuery.Reservation(\"reservation\", new()\n {\n Name = \"my-reservation\",\n Location = \"us-west2\",\n SlotCapacity = 0,\n Edition = \"STANDARD\",\n IgnoreIdleSlots = true,\n Concurrency = 0,\n Autoscale = new Gcp.BigQuery.Inputs.ReservationAutoscaleArgs\n {\n MaxSlots = 100,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := bigquery.NewReservation(ctx, \"reservation\", \u0026bigquery.ReservationArgs{\n\t\t\tName: pulumi.String(\"my-reservation\"),\n\t\t\tLocation: pulumi.String(\"us-west2\"),\n\t\t\tSlotCapacity: pulumi.Int(0),\n\t\t\tEdition: pulumi.String(\"STANDARD\"),\n\t\t\tIgnoreIdleSlots: pulumi.Bool(true),\n\t\t\tConcurrency: pulumi.Int(0),\n\t\t\tAutoscale: \u0026bigquery.ReservationAutoscaleArgs{\n\t\t\t\tMaxSlots: pulumi.Int(100),\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.Reservation;\nimport com.pulumi.gcp.bigquery.ReservationArgs;\nimport com.pulumi.gcp.bigquery.inputs.ReservationAutoscaleArgs;\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 reservation = new Reservation(\"reservation\", ReservationArgs.builder()\n .name(\"my-reservation\")\n .location(\"us-west2\")\n .slotCapacity(0)\n .edition(\"STANDARD\")\n .ignoreIdleSlots(true)\n .concurrency(0)\n .autoscale(ReservationAutoscaleArgs.builder()\n .maxSlots(100)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n reservation:\n type: gcp:bigquery:Reservation\n properties:\n name: my-reservation\n location: us-west2\n slotCapacity: 0\n edition: STANDARD\n ignoreIdleSlots: true\n concurrency: 0\n autoscale:\n maxSlots: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nReservation can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/reservations/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Reservation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/reservation:Reservation default projects/{{project}}/locations/{{location}}/reservations/{{name}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/reservation:Reservation default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/reservation:Reservation default {{location}}/{{name}}\n```\n\n", + "description": "A reservation is a mechanism used to guarantee BigQuery slots to users.\n\n\nTo get more information about Reservation, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/reservations/rest/v1/projects.locations.reservations/create)\n* How-to Guides\n * [Introduction to Reservations](https://cloud.google.com/bigquery/docs/reservations-intro)\n\n## Example Usage\n\n### Bigquery Reservation Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst reservation = new gcp.bigquery.Reservation(\"reservation\", {\n name: \"my-reservation\",\n location: \"us-west2\",\n slotCapacity: 0,\n edition: \"STANDARD\",\n ignoreIdleSlots: true,\n concurrency: 0,\n autoscale: {\n maxSlots: 100,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nreservation = gcp.bigquery.Reservation(\"reservation\",\n name=\"my-reservation\",\n location=\"us-west2\",\n slot_capacity=0,\n edition=\"STANDARD\",\n ignore_idle_slots=True,\n concurrency=0,\n autoscale={\n \"max_slots\": 100,\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 reservation = new Gcp.BigQuery.Reservation(\"reservation\", new()\n {\n Name = \"my-reservation\",\n Location = \"us-west2\",\n SlotCapacity = 0,\n Edition = \"STANDARD\",\n IgnoreIdleSlots = true,\n Concurrency = 0,\n Autoscale = new Gcp.BigQuery.Inputs.ReservationAutoscaleArgs\n {\n MaxSlots = 100,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := bigquery.NewReservation(ctx, \"reservation\", \u0026bigquery.ReservationArgs{\n\t\t\tName: pulumi.String(\"my-reservation\"),\n\t\t\tLocation: pulumi.String(\"us-west2\"),\n\t\t\tSlotCapacity: pulumi.Int(0),\n\t\t\tEdition: pulumi.String(\"STANDARD\"),\n\t\t\tIgnoreIdleSlots: pulumi.Bool(true),\n\t\t\tConcurrency: pulumi.Int(0),\n\t\t\tAutoscale: \u0026bigquery.ReservationAutoscaleArgs{\n\t\t\t\tMaxSlots: pulumi.Int(100),\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.Reservation;\nimport com.pulumi.gcp.bigquery.ReservationArgs;\nimport com.pulumi.gcp.bigquery.inputs.ReservationAutoscaleArgs;\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 reservation = new Reservation(\"reservation\", ReservationArgs.builder()\n .name(\"my-reservation\")\n .location(\"us-west2\")\n .slotCapacity(0)\n .edition(\"STANDARD\")\n .ignoreIdleSlots(true)\n .concurrency(0)\n .autoscale(ReservationAutoscaleArgs.builder()\n .maxSlots(100)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n reservation:\n type: gcp:bigquery:Reservation\n properties:\n name: my-reservation\n location: us-west2\n slotCapacity: 0\n edition: STANDARD\n ignoreIdleSlots: true\n concurrency: 0\n autoscale:\n maxSlots: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nReservation can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/reservations/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Reservation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/reservation:Reservation default projects/{{project}}/locations/{{location}}/reservations/{{name}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/reservation:Reservation default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/reservation:Reservation default {{location}}/{{name}}\n```\n\n", "properties": { "autoscale": { "$ref": "#/types/gcp:bigquery/ReservationAutoscale:ReservationAutoscale", @@ -124728,7 +124728,7 @@ } }, "gcp:bigquery/routine:Routine": { - "description": "A user-defined function or a stored procedure that belongs to a Dataset\n\n\nTo get more information about Routine, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/rest/v2/routines)\n* How-to Guides\n * [Routines Intro](https://cloud.google.com/bigquery/docs/reference/rest/v2/routines)\n\n## Example Usage\n\n### Bigquery Routine Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst sproc = new gcp.bigquery.Routine(\"sproc\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"SQL\",\n definitionBody: \"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\nsproc = gcp.bigquery.Routine(\"sproc\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"SQL\",\n definition_body=\"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\")\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 test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var sproc = new Gcp.BigQuery.Routine(\"sproc\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"SQL\",\n DefinitionBody = \"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"sproc\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\"),\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.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\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 test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var sproc = new Routine(\"sproc\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"SQL\")\n .definitionBody(\"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n sproc:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: SQL\n definitionBody: CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Json\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst sproc = new gcp.bigquery.Routine(\"sproc\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"SCALAR_FUNCTION\",\n language: \"JAVASCRIPT\",\n definitionBody: \"CREATE FUNCTION multiplyInputs return x*y;\",\n arguments: [\n {\n name: \"x\",\n dataType: \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n {\n name: \"y\",\n dataType: \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n ],\n returnType: \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\nsproc = gcp.bigquery.Routine(\"sproc\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"SCALAR_FUNCTION\",\n language=\"JAVASCRIPT\",\n definition_body=\"CREATE FUNCTION multiplyInputs return x*y;\",\n arguments=[\n {\n \"name\": \"x\",\n \"dataType\": \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n {\n \"name\": \"y\",\n \"dataType\": \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n ],\n return_type=\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\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 test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var sproc = new Gcp.BigQuery.Routine(\"sproc\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"SCALAR_FUNCTION\",\n Language = \"JAVASCRIPT\",\n DefinitionBody = \"CREATE FUNCTION multiplyInputs return x*y;\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"x\",\n DataType = \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"y\",\n DataType = \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n },\n ReturnType = \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"sproc\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"JAVASCRIPT\"),\n\t\t\tDefinitionBody: pulumi.String(\"CREATE FUNCTION multiplyInputs return x*y;\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"x\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"y\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\"),\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.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\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 test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var sproc = new Routine(\"sproc\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"SCALAR_FUNCTION\")\n .language(\"JAVASCRIPT\")\n .definitionBody(\"CREATE FUNCTION multiplyInputs return x*y;\")\n .arguments( \n RoutineArgumentArgs.builder()\n .name(\"x\")\n .dataType(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n .build(),\n RoutineArgumentArgs.builder()\n .name(\"y\")\n .dataType(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n .build())\n .returnType(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n sproc:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: SCALAR_FUNCTION\n language: JAVASCRIPT\n definitionBody: CREATE FUNCTION multiplyInputs return x*y;\n arguments:\n - name: x\n dataType: '{\"typeKind\" : \"FLOAT64\"}'\n - name: y\n dataType: '{\"typeKind\" : \"FLOAT64\"}'\n returnType: '{\"typeKind\" : \"FLOAT64\"}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Tvf\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst sproc = new gcp.bigquery.Routine(\"sproc\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"TABLE_VALUED_FUNCTION\",\n language: \"SQL\",\n definitionBody: \"SELECT 1 + value AS value\\n\",\n arguments: [{\n name: \"value\",\n argumentKind: \"FIXED_TYPE\",\n dataType: JSON.stringify({\n typeKind: \"INT64\",\n }),\n }],\n returnTableType: JSON.stringify({\n columns: [{\n name: \"value\",\n type: {\n typeKind: \"INT64\",\n },\n }],\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\nsproc = gcp.bigquery.Routine(\"sproc\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"TABLE_VALUED_FUNCTION\",\n language=\"SQL\",\n definition_body=\"SELECT 1 + value AS value\\n\",\n arguments=[{\n \"name\": \"value\",\n \"argumentKind\": \"FIXED_TYPE\",\n \"dataType\": json.dumps({\n \"typeKind\": \"INT64\",\n }),\n }],\n return_table_type=json.dumps({\n \"columns\": [{\n \"name\": \"value\",\n \"type\": {\n \"typeKind\": \"INT64\",\n },\n }],\n }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var sproc = new Gcp.BigQuery.Routine(\"sproc\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"TABLE_VALUED_FUNCTION\",\n Language = \"SQL\",\n DefinitionBody = @\"SELECT 1 + value AS value\n\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"value\",\n ArgumentKind = \"FIXED_TYPE\",\n DataType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n }),\n },\n },\n ReturnTableType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"columns\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"value\",\n [\"type\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n },\n },\n },\n }),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"typeKind\": \"INT64\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"columns\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"value\",\n\t\t\t\t\t\"type\": map[string]interface{}{\n\t\t\t\t\t\t\"typeKind\": \"INT64\",\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\tjson1 := string(tmpJSON1)\n\t\t_, err = bigquery.NewRoutine(ctx, \"sproc\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"TABLE_VALUED_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"SELECT 1 + value AS value\\n\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"value\"),\n\t\t\t\t\tArgumentKind: pulumi.String(\"FIXED_TYPE\"),\n\t\t\t\t\tDataType: pulumi.String(json0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnTableType: pulumi.String(json1),\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.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var sproc = new Routine(\"sproc\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"TABLE_VALUED_FUNCTION\")\n .language(\"SQL\")\n .definitionBody(\"\"\"\nSELECT 1 + value AS value\n \"\"\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"value\")\n .argumentKind(\"FIXED_TYPE\")\n .dataType(serializeJson(\n jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n )))\n .build())\n .returnTableType(serializeJson(\n jsonObject(\n jsonProperty(\"columns\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"value\"),\n jsonProperty(\"type\", jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n ))\n )))\n )))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n sproc:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: TABLE_VALUED_FUNCTION\n language: SQL\n definitionBody: |\n SELECT 1 + value AS value\n arguments:\n - name: value\n argumentKind: FIXED_TYPE\n dataType:\n fn::toJSON:\n typeKind: INT64\n returnTableType:\n fn::toJSON:\n columns:\n - name: value\n type:\n typeKind: INT64\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Pyspark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n spark: {},\n});\nconst pyspark = new gcp.bigquery.Routine(\"pyspark\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"PYTHON\",\n definitionBody: `from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\\\n .option(\"writeMethod\", \"direct\") \\\\\n .save(\"wordcount_dataset.wordcount_output\")\n`,\n sparkOptions: {\n connection: testConnection.name,\n runtimeVersion: \"2.1\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n spark={})\npyspark = gcp.bigquery.Routine(\"pyspark\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"PYTHON\",\n definition_body=\"\"\"from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\n .option(\"writeMethod\", \"direct\") \\\n .save(\"wordcount_dataset.wordcount_output\")\n\"\"\",\n spark_options={\n \"connection\": test_connection.name,\n \"runtimeVersion\": \"2.1\",\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 test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n Spark = null,\n });\n\n var pyspark = new Gcp.BigQuery.Routine(\"pyspark\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"PYTHON\",\n DefinitionBody = @\"from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"\"spark-bigquery-demo\"\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"\"bigquery\"\") \\\n .option(\"\"table\"\", \"\"bigquery-public-data:samples.shakespeare\"\") \\\n .load()\nwords.createOrReplaceTempView(\"\"words\"\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"\"sum(word_count)\"\", \"\"sum_word_count\"\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"\"bigquery\"\") \\\n .option(\"\"writeMethod\"\", \"\"direct\"\") \\\n .save(\"\"wordcount_dataset.wordcount_output\"\")\n\",\n SparkOptions = new Gcp.BigQuery.Inputs.RoutineSparkOptionsArgs\n {\n Connection = testConnection.Name,\n RuntimeVersion = \"2.1\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tSpark: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"pyspark\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"PYTHON\"),\n\t\t\tDefinitionBody: pulumi.String(`from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\n .option(\"writeMethod\", \"direct\") \\\n .save(\"wordcount_dataset.wordcount_output\")\n`),\n\t\t\tSparkOptions: \u0026bigquery.RoutineSparkOptionsArgs{\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tRuntimeVersion: pulumi.String(\"2.1\"),\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.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineSparkOptionsArgs;\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 test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .spark()\n .build());\n\n var pyspark = new Routine(\"pyspark\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"PYTHON\")\n .definitionBody(\"\"\"\nfrom pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\n .option(\"writeMethod\", \"direct\") \\\n .save(\"wordcount_dataset.wordcount_output\")\n \"\"\")\n .sparkOptions(RoutineSparkOptionsArgs.builder()\n .connection(testConnection.name())\n .runtimeVersion(\"2.1\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n spark: {}\n pyspark:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: PYTHON\n definitionBody: \"from pyspark.sql import SparkSession\\n\\nspark = SparkSession.builder.appName(\\\"spark-bigquery-demo\\\").getOrCreate()\\n \\n# Load data from BigQuery.\\nwords = spark.read.format(\\\"bigquery\\\") \\\\\\n .option(\\\"table\\\", \\\"bigquery-public-data:samples.shakespeare\\\") \\\\\\n .load()\\nwords.createOrReplaceTempView(\\\"words\\\")\\n \\n# Perform word count.\\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\\\"sum(word_count)\\\", \\\"sum_word_count\\\")\\nword_count.show()\\nword_count.printSchema()\\n \\n# Saving the data to BigQuery\\nword_count.write.format(\\\"bigquery\\\") \\\\\\n .option(\\\"writeMethod\\\", \\\"direct\\\") \\\\\\n .save(\\\"wordcount_dataset.wordcount_output\\\")\\n\"\n sparkOptions:\n connection: ${testConnection.name}\n runtimeVersion: '2.1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Pyspark Mainfile\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n spark: {},\n});\nconst pysparkMainfile = new gcp.bigquery.Routine(\"pyspark_mainfile\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"PYTHON\",\n definitionBody: \"\",\n sparkOptions: {\n connection: testConnection.name,\n runtimeVersion: \"2.1\",\n mainFileUri: \"gs://test-bucket/main.py\",\n pyFileUris: [\"gs://test-bucket/lib.py\"],\n fileUris: [\"gs://test-bucket/distribute_in_executor.json\"],\n archiveUris: [\"gs://test-bucket/distribute_in_executor.tar.gz\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n spark={})\npyspark_mainfile = gcp.bigquery.Routine(\"pyspark_mainfile\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"PYTHON\",\n definition_body=\"\",\n spark_options={\n \"connection\": test_connection.name,\n \"runtimeVersion\": \"2.1\",\n \"mainFileUri\": \"gs://test-bucket/main.py\",\n \"pyFileUris\": [\"gs://test-bucket/lib.py\"],\n \"fileUris\": [\"gs://test-bucket/distribute_in_executor.json\"],\n \"archiveUris\": [\"gs://test-bucket/distribute_in_executor.tar.gz\"],\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 test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n Spark = null,\n });\n\n var pysparkMainfile = new Gcp.BigQuery.Routine(\"pyspark_mainfile\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"PYTHON\",\n DefinitionBody = \"\",\n SparkOptions = new Gcp.BigQuery.Inputs.RoutineSparkOptionsArgs\n {\n Connection = testConnection.Name,\n RuntimeVersion = \"2.1\",\n MainFileUri = \"gs://test-bucket/main.py\",\n PyFileUris = new[]\n {\n \"gs://test-bucket/lib.py\",\n },\n FileUris = new[]\n {\n \"gs://test-bucket/distribute_in_executor.json\",\n },\n ArchiveUris = new[]\n {\n \"gs://test-bucket/distribute_in_executor.tar.gz\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tSpark: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"pyspark_mainfile\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"PYTHON\"),\n\t\t\tDefinitionBody: pulumi.String(\"\"),\n\t\t\tSparkOptions: \u0026bigquery.RoutineSparkOptionsArgs{\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tRuntimeVersion: pulumi.String(\"2.1\"),\n\t\t\t\tMainFileUri: pulumi.String(\"gs://test-bucket/main.py\"),\n\t\t\t\tPyFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/lib.py\"),\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/distribute_in_executor.json\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/distribute_in_executor.tar.gz\"),\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.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineSparkOptionsArgs;\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 test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .spark()\n .build());\n\n var pysparkMainfile = new Routine(\"pysparkMainfile\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"PYTHON\")\n .definitionBody(\"\")\n .sparkOptions(RoutineSparkOptionsArgs.builder()\n .connection(testConnection.name())\n .runtimeVersion(\"2.1\")\n .mainFileUri(\"gs://test-bucket/main.py\")\n .pyFileUris(\"gs://test-bucket/lib.py\")\n .fileUris(\"gs://test-bucket/distribute_in_executor.json\")\n .archiveUris(\"gs://test-bucket/distribute_in_executor.tar.gz\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n spark: {}\n pysparkMainfile:\n type: gcp:bigquery:Routine\n name: pyspark_mainfile\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: PYTHON\n definitionBody:\n sparkOptions:\n connection: ${testConnection.name}\n runtimeVersion: '2.1'\n mainFileUri: gs://test-bucket/main.py\n pyFileUris:\n - gs://test-bucket/lib.py\n fileUris:\n - gs://test-bucket/distribute_in_executor.json\n archiveUris:\n - gs://test-bucket/distribute_in_executor.tar.gz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Spark Jar\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n spark: {},\n});\nconst sparkJar = new gcp.bigquery.Routine(\"spark_jar\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"SCALA\",\n definitionBody: \"\",\n sparkOptions: {\n connection: testConnection.name,\n runtimeVersion: \"2.1\",\n containerImage: \"gcr.io/my-project-id/my-spark-image:latest\",\n mainClass: \"com.google.test.jar.MainClass\",\n jarUris: [\"gs://test-bucket/uberjar_spark_spark3.jar\"],\n properties: {\n \"spark.dataproc.scaling.version\": \"2\",\n \"spark.reducer.fetchMigratedShuffle.enabled\": \"true\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n spark={})\nspark_jar = gcp.bigquery.Routine(\"spark_jar\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"SCALA\",\n definition_body=\"\",\n spark_options={\n \"connection\": test_connection.name,\n \"runtimeVersion\": \"2.1\",\n \"containerImage\": \"gcr.io/my-project-id/my-spark-image:latest\",\n \"mainClass\": \"com.google.test.jar.MainClass\",\n \"jarUris\": [\"gs://test-bucket/uberjar_spark_spark3.jar\"],\n \"properties\": {\n \"spark.dataproc.scaling.version\": \"2\",\n \"spark.reducer.fetchMigratedShuffle.enabled\": \"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 test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n Spark = null,\n });\n\n var sparkJar = new Gcp.BigQuery.Routine(\"spark_jar\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"SCALA\",\n DefinitionBody = \"\",\n SparkOptions = new Gcp.BigQuery.Inputs.RoutineSparkOptionsArgs\n {\n Connection = testConnection.Name,\n RuntimeVersion = \"2.1\",\n ContainerImage = \"gcr.io/my-project-id/my-spark-image:latest\",\n MainClass = \"com.google.test.jar.MainClass\",\n JarUris = new[]\n {\n \"gs://test-bucket/uberjar_spark_spark3.jar\",\n },\n Properties = \n {\n { \"spark.dataproc.scaling.version\", \"2\" },\n { \"spark.reducer.fetchMigratedShuffle.enabled\", \"true\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tSpark: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"spark_jar\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"SCALA\"),\n\t\t\tDefinitionBody: pulumi.String(\"\"),\n\t\t\tSparkOptions: \u0026bigquery.RoutineSparkOptionsArgs{\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tRuntimeVersion: pulumi.String(\"2.1\"),\n\t\t\t\tContainerImage: pulumi.String(\"gcr.io/my-project-id/my-spark-image:latest\"),\n\t\t\t\tMainClass: pulumi.String(\"com.google.test.jar.MainClass\"),\n\t\t\t\tJarUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/uberjar_spark_spark3.jar\"),\n\t\t\t\t},\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dataproc.scaling.version\": pulumi.String(\"2\"),\n\t\t\t\t\t\"spark.reducer.fetchMigratedShuffle.enabled\": pulumi.String(\"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.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineSparkOptionsArgs;\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 test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .spark()\n .build());\n\n var sparkJar = new Routine(\"sparkJar\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"SCALA\")\n .definitionBody(\"\")\n .sparkOptions(RoutineSparkOptionsArgs.builder()\n .connection(testConnection.name())\n .runtimeVersion(\"2.1\")\n .containerImage(\"gcr.io/my-project-id/my-spark-image:latest\")\n .mainClass(\"com.google.test.jar.MainClass\")\n .jarUris(\"gs://test-bucket/uberjar_spark_spark3.jar\")\n .properties(Map.ofEntries(\n Map.entry(\"spark.dataproc.scaling.version\", \"2\"),\n Map.entry(\"spark.reducer.fetchMigratedShuffle.enabled\", \"true\")\n ))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n spark: {}\n sparkJar:\n type: gcp:bigquery:Routine\n name: spark_jar\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: SCALA\n definitionBody:\n sparkOptions:\n connection: ${testConnection.name}\n runtimeVersion: '2.1'\n containerImage: gcr.io/my-project-id/my-spark-image:latest\n mainClass: com.google.test.jar.MainClass\n jarUris:\n - gs://test-bucket/uberjar_spark_spark3.jar\n properties:\n spark.dataproc.scaling.version: '2'\n spark.reducer.fetchMigratedShuffle.enabled: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Data Governance Type\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"tf_test_dataset_id_15222\"});\nconst customMaskingRoutine = new gcp.bigquery.Routine(\"custom_masking_routine\", {\n datasetId: test.datasetId,\n routineId: \"custom_masking_routine\",\n routineType: \"SCALAR_FUNCTION\",\n language: \"SQL\",\n dataGovernanceType: \"DATA_MASKING\",\n definitionBody: \"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n arguments: [{\n name: \"ssn\",\n dataType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n }],\n returnType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"tf_test_dataset_id_15222\")\ncustom_masking_routine = gcp.bigquery.Routine(\"custom_masking_routine\",\n dataset_id=test.dataset_id,\n routine_id=\"custom_masking_routine\",\n routine_type=\"SCALAR_FUNCTION\",\n language=\"SQL\",\n data_governance_type=\"DATA_MASKING\",\n definition_body=\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n arguments=[{\n \"name\": \"ssn\",\n \"dataType\": \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n }],\n return_type=\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\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 test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"tf_test_dataset_id_15222\",\n });\n\n var customMaskingRoutine = new Gcp.BigQuery.Routine(\"custom_masking_routine\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"custom_masking_routine\",\n RoutineType = \"SCALAR_FUNCTION\",\n Language = \"SQL\",\n DataGovernanceType = \"DATA_MASKING\",\n DefinitionBody = \"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"ssn\",\n DataType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n },\n },\n ReturnType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"tf_test_dataset_id_15222\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"custom_masking_routine\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"custom_masking_routine\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDataGovernanceType: pulumi.String(\"DATA_MASKING\"),\n\t\t\tDefinitionBody: pulumi.String(\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"ssn\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\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.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\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 test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"tf_test_dataset_id_15222\")\n .build());\n\n var customMaskingRoutine = new Routine(\"customMaskingRoutine\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"custom_masking_routine\")\n .routineType(\"SCALAR_FUNCTION\")\n .language(\"SQL\")\n .dataGovernanceType(\"DATA_MASKING\")\n .definitionBody(\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"ssn\")\n .dataType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .build())\n .returnType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: tf_test_dataset_id_15222\n customMaskingRoutine:\n type: gcp:bigquery:Routine\n name: custom_masking_routine\n properties:\n datasetId: ${test.datasetId}\n routineId: custom_masking_routine\n routineType: SCALAR_FUNCTION\n language: SQL\n dataGovernanceType: DATA_MASKING\n definitionBody: SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\n arguments:\n - name: ssn\n dataType: '{\"typeKind\" : \"STRING\"}'\n returnType: '{\"typeKind\" : \"STRING\"}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Remote Function\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n cloudResource: {},\n});\nconst remoteFunction = new gcp.bigquery.Routine(\"remote_function\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"SCALAR_FUNCTION\",\n definitionBody: \"\",\n returnType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n remoteFunctionOptions: {\n endpoint: \"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\",\n connection: testConnection.name,\n maxBatchingRows: \"10\",\n userDefinedContext: {\n z: \"1.5\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n cloud_resource={})\nremote_function = gcp.bigquery.Routine(\"remote_function\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"SCALAR_FUNCTION\",\n definition_body=\"\",\n return_type=\"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n remote_function_options={\n \"endpoint\": \"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\",\n \"connection\": test_connection.name,\n \"maxBatchingRows\": \"10\",\n \"userDefinedContext\": {\n \"z\": \"1.5\",\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 test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n CloudResource = null,\n });\n\n var remoteFunction = new Gcp.BigQuery.Routine(\"remote_function\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"SCALAR_FUNCTION\",\n DefinitionBody = \"\",\n ReturnType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n RemoteFunctionOptions = new Gcp.BigQuery.Inputs.RoutineRemoteFunctionOptionsArgs\n {\n Endpoint = \"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\",\n Connection = testConnection.Name,\n MaxBatchingRows = \"10\",\n UserDefinedContext = \n {\n { \"z\", \"1.5\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tCloudResource: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"remote_function\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tDefinitionBody: pulumi.String(\"\"),\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\n\t\t\tRemoteFunctionOptions: \u0026bigquery.RoutineRemoteFunctionOptionsArgs{\n\t\t\t\tEndpoint: pulumi.String(\"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\"),\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tMaxBatchingRows: pulumi.String(\"10\"),\n\t\t\t\tUserDefinedContext: pulumi.StringMap{\n\t\t\t\t\t\"z\": pulumi.String(\"1.5\"),\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.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudResourceArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineRemoteFunctionOptionsArgs;\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 test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .cloudResource()\n .build());\n\n var remoteFunction = new Routine(\"remoteFunction\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"SCALAR_FUNCTION\")\n .definitionBody(\"\")\n .returnType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .remoteFunctionOptions(RoutineRemoteFunctionOptionsArgs.builder()\n .endpoint(\"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\")\n .connection(testConnection.name())\n .maxBatchingRows(\"10\")\n .userDefinedContext(Map.of(\"z\", \"1.5\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n cloudResource: {}\n remoteFunction:\n type: gcp:bigquery:Routine\n name: remote_function\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: SCALAR_FUNCTION\n definitionBody:\n returnType: '{\"typeKind\" : \"STRING\"}'\n remoteFunctionOptions:\n endpoint: https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\n connection: ${testConnection.name}\n maxBatchingRows: '10'\n userDefinedContext:\n z: '1.5'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRoutine can be imported using any of these accepted formats:\n\n* `projects/{{project}}/datasets/{{dataset_id}}/routines/{{routine_id}}`\n\n* `{{project}}/{{dataset_id}}/{{routine_id}}`\n\n* `{{dataset_id}}/{{routine_id}}`\n\nWhen using the `pulumi import` command, Routine can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/routine:Routine default projects/{{project}}/datasets/{{dataset_id}}/routines/{{routine_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/routine:Routine default {{project}}/{{dataset_id}}/{{routine_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/routine:Routine default {{dataset_id}}/{{routine_id}}\n```\n\n", + "description": "A user-defined function or a stored procedure that belongs to a Dataset\n\n\nTo get more information about Routine, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/rest/v2/routines)\n* How-to Guides\n * [Routines Intro](https://cloud.google.com/bigquery/docs/reference/rest/v2/routines)\n\n## Example Usage\n\n### Bigquery Routine Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst sproc = new gcp.bigquery.Routine(\"sproc\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"SQL\",\n definitionBody: \"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\nsproc = gcp.bigquery.Routine(\"sproc\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"SQL\",\n definition_body=\"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\")\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 test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var sproc = new Gcp.BigQuery.Routine(\"sproc\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"SQL\",\n DefinitionBody = \"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"sproc\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\"),\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.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\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 test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var sproc = new Routine(\"sproc\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"SQL\")\n .definitionBody(\"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n sproc:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: SQL\n definitionBody: CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Json\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst sproc = new gcp.bigquery.Routine(\"sproc\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"SCALAR_FUNCTION\",\n language: \"JAVASCRIPT\",\n definitionBody: \"CREATE FUNCTION multiplyInputs return x*y;\",\n arguments: [\n {\n name: \"x\",\n dataType: \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n {\n name: \"y\",\n dataType: \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n ],\n returnType: \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\nsproc = gcp.bigquery.Routine(\"sproc\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"SCALAR_FUNCTION\",\n language=\"JAVASCRIPT\",\n definition_body=\"CREATE FUNCTION multiplyInputs return x*y;\",\n arguments=[\n {\n \"name\": \"x\",\n \"data_type\": \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n {\n \"name\": \"y\",\n \"data_type\": \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n ],\n return_type=\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\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 test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var sproc = new Gcp.BigQuery.Routine(\"sproc\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"SCALAR_FUNCTION\",\n Language = \"JAVASCRIPT\",\n DefinitionBody = \"CREATE FUNCTION multiplyInputs return x*y;\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"x\",\n DataType = \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"y\",\n DataType = \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n },\n ReturnType = \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"sproc\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"JAVASCRIPT\"),\n\t\t\tDefinitionBody: pulumi.String(\"CREATE FUNCTION multiplyInputs return x*y;\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"x\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"y\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\"),\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.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\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 test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var sproc = new Routine(\"sproc\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"SCALAR_FUNCTION\")\n .language(\"JAVASCRIPT\")\n .definitionBody(\"CREATE FUNCTION multiplyInputs return x*y;\")\n .arguments( \n RoutineArgumentArgs.builder()\n .name(\"x\")\n .dataType(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n .build(),\n RoutineArgumentArgs.builder()\n .name(\"y\")\n .dataType(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n .build())\n .returnType(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n sproc:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: SCALAR_FUNCTION\n language: JAVASCRIPT\n definitionBody: CREATE FUNCTION multiplyInputs return x*y;\n arguments:\n - name: x\n dataType: '{\"typeKind\" : \"FLOAT64\"}'\n - name: y\n dataType: '{\"typeKind\" : \"FLOAT64\"}'\n returnType: '{\"typeKind\" : \"FLOAT64\"}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Tvf\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst sproc = new gcp.bigquery.Routine(\"sproc\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"TABLE_VALUED_FUNCTION\",\n language: \"SQL\",\n definitionBody: \"SELECT 1 + value AS value\\n\",\n arguments: [{\n name: \"value\",\n argumentKind: \"FIXED_TYPE\",\n dataType: JSON.stringify({\n typeKind: \"INT64\",\n }),\n }],\n returnTableType: JSON.stringify({\n columns: [{\n name: \"value\",\n type: {\n typeKind: \"INT64\",\n },\n }],\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\nsproc = gcp.bigquery.Routine(\"sproc\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"TABLE_VALUED_FUNCTION\",\n language=\"SQL\",\n definition_body=\"SELECT 1 + value AS value\\n\",\n arguments=[{\n \"name\": \"value\",\n \"argument_kind\": \"FIXED_TYPE\",\n \"data_type\": json.dumps({\n \"type_kind\": \"INT64\",\n }),\n }],\n return_table_type=json.dumps({\n \"columns\": [{\n \"name\": \"value\",\n \"type\": {\n \"typeKind\": \"INT64\",\n },\n }],\n }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var sproc = new Gcp.BigQuery.Routine(\"sproc\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"TABLE_VALUED_FUNCTION\",\n Language = \"SQL\",\n DefinitionBody = @\"SELECT 1 + value AS value\n\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"value\",\n ArgumentKind = \"FIXED_TYPE\",\n DataType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n }),\n },\n },\n ReturnTableType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"columns\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"value\",\n [\"type\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n },\n },\n },\n }),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"typeKind\": \"INT64\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"columns\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"value\",\n\t\t\t\t\t\"type\": map[string]interface{}{\n\t\t\t\t\t\t\"typeKind\": \"INT64\",\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\tjson1 := string(tmpJSON1)\n\t\t_, err = bigquery.NewRoutine(ctx, \"sproc\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"TABLE_VALUED_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"SELECT 1 + value AS value\\n\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"value\"),\n\t\t\t\t\tArgumentKind: pulumi.String(\"FIXED_TYPE\"),\n\t\t\t\t\tDataType: pulumi.String(json0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnTableType: pulumi.String(json1),\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.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var sproc = new Routine(\"sproc\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"TABLE_VALUED_FUNCTION\")\n .language(\"SQL\")\n .definitionBody(\"\"\"\nSELECT 1 + value AS value\n \"\"\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"value\")\n .argumentKind(\"FIXED_TYPE\")\n .dataType(serializeJson(\n jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n )))\n .build())\n .returnTableType(serializeJson(\n jsonObject(\n jsonProperty(\"columns\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"value\"),\n jsonProperty(\"type\", jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n ))\n )))\n )))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n sproc:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: TABLE_VALUED_FUNCTION\n language: SQL\n definitionBody: |\n SELECT 1 + value AS value\n arguments:\n - name: value\n argumentKind: FIXED_TYPE\n dataType:\n fn::toJSON:\n typeKind: INT64\n returnTableType:\n fn::toJSON:\n columns:\n - name: value\n type:\n typeKind: INT64\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Pyspark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n spark: {},\n});\nconst pyspark = new gcp.bigquery.Routine(\"pyspark\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"PYTHON\",\n definitionBody: `from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\\\n .option(\"writeMethod\", \"direct\") \\\\\n .save(\"wordcount_dataset.wordcount_output\")\n`,\n sparkOptions: {\n connection: testConnection.name,\n runtimeVersion: \"2.1\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n spark={})\npyspark = gcp.bigquery.Routine(\"pyspark\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"PYTHON\",\n definition_body=\"\"\"from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\n .option(\"writeMethod\", \"direct\") \\\n .save(\"wordcount_dataset.wordcount_output\")\n\"\"\",\n spark_options={\n \"connection\": test_connection.name,\n \"runtime_version\": \"2.1\",\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 test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n Spark = null,\n });\n\n var pyspark = new Gcp.BigQuery.Routine(\"pyspark\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"PYTHON\",\n DefinitionBody = @\"from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"\"spark-bigquery-demo\"\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"\"bigquery\"\") \\\n .option(\"\"table\"\", \"\"bigquery-public-data:samples.shakespeare\"\") \\\n .load()\nwords.createOrReplaceTempView(\"\"words\"\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"\"sum(word_count)\"\", \"\"sum_word_count\"\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"\"bigquery\"\") \\\n .option(\"\"writeMethod\"\", \"\"direct\"\") \\\n .save(\"\"wordcount_dataset.wordcount_output\"\")\n\",\n SparkOptions = new Gcp.BigQuery.Inputs.RoutineSparkOptionsArgs\n {\n Connection = testConnection.Name,\n RuntimeVersion = \"2.1\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tSpark: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"pyspark\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"PYTHON\"),\n\t\t\tDefinitionBody: pulumi.String(`from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\n .option(\"writeMethod\", \"direct\") \\\n .save(\"wordcount_dataset.wordcount_output\")\n`),\n\t\t\tSparkOptions: \u0026bigquery.RoutineSparkOptionsArgs{\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tRuntimeVersion: pulumi.String(\"2.1\"),\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.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineSparkOptionsArgs;\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 test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .spark()\n .build());\n\n var pyspark = new Routine(\"pyspark\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"PYTHON\")\n .definitionBody(\"\"\"\nfrom pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\n .option(\"writeMethod\", \"direct\") \\\n .save(\"wordcount_dataset.wordcount_output\")\n \"\"\")\n .sparkOptions(RoutineSparkOptionsArgs.builder()\n .connection(testConnection.name())\n .runtimeVersion(\"2.1\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n spark: {}\n pyspark:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: PYTHON\n definitionBody: \"from pyspark.sql import SparkSession\\n\\nspark = SparkSession.builder.appName(\\\"spark-bigquery-demo\\\").getOrCreate()\\n \\n# Load data from BigQuery.\\nwords = spark.read.format(\\\"bigquery\\\") \\\\\\n .option(\\\"table\\\", \\\"bigquery-public-data:samples.shakespeare\\\") \\\\\\n .load()\\nwords.createOrReplaceTempView(\\\"words\\\")\\n \\n# Perform word count.\\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\\\"sum(word_count)\\\", \\\"sum_word_count\\\")\\nword_count.show()\\nword_count.printSchema()\\n \\n# Saving the data to BigQuery\\nword_count.write.format(\\\"bigquery\\\") \\\\\\n .option(\\\"writeMethod\\\", \\\"direct\\\") \\\\\\n .save(\\\"wordcount_dataset.wordcount_output\\\")\\n\"\n sparkOptions:\n connection: ${testConnection.name}\n runtimeVersion: '2.1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Pyspark Mainfile\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n spark: {},\n});\nconst pysparkMainfile = new gcp.bigquery.Routine(\"pyspark_mainfile\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"PYTHON\",\n definitionBody: \"\",\n sparkOptions: {\n connection: testConnection.name,\n runtimeVersion: \"2.1\",\n mainFileUri: \"gs://test-bucket/main.py\",\n pyFileUris: [\"gs://test-bucket/lib.py\"],\n fileUris: [\"gs://test-bucket/distribute_in_executor.json\"],\n archiveUris: [\"gs://test-bucket/distribute_in_executor.tar.gz\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n spark={})\npyspark_mainfile = gcp.bigquery.Routine(\"pyspark_mainfile\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"PYTHON\",\n definition_body=\"\",\n spark_options={\n \"connection\": test_connection.name,\n \"runtime_version\": \"2.1\",\n \"main_file_uri\": \"gs://test-bucket/main.py\",\n \"py_file_uris\": [\"gs://test-bucket/lib.py\"],\n \"file_uris\": [\"gs://test-bucket/distribute_in_executor.json\"],\n \"archive_uris\": [\"gs://test-bucket/distribute_in_executor.tar.gz\"],\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 test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n Spark = null,\n });\n\n var pysparkMainfile = new Gcp.BigQuery.Routine(\"pyspark_mainfile\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"PYTHON\",\n DefinitionBody = \"\",\n SparkOptions = new Gcp.BigQuery.Inputs.RoutineSparkOptionsArgs\n {\n Connection = testConnection.Name,\n RuntimeVersion = \"2.1\",\n MainFileUri = \"gs://test-bucket/main.py\",\n PyFileUris = new[]\n {\n \"gs://test-bucket/lib.py\",\n },\n FileUris = new[]\n {\n \"gs://test-bucket/distribute_in_executor.json\",\n },\n ArchiveUris = new[]\n {\n \"gs://test-bucket/distribute_in_executor.tar.gz\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tSpark: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"pyspark_mainfile\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"PYTHON\"),\n\t\t\tDefinitionBody: pulumi.String(\"\"),\n\t\t\tSparkOptions: \u0026bigquery.RoutineSparkOptionsArgs{\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tRuntimeVersion: pulumi.String(\"2.1\"),\n\t\t\t\tMainFileUri: pulumi.String(\"gs://test-bucket/main.py\"),\n\t\t\t\tPyFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/lib.py\"),\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/distribute_in_executor.json\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/distribute_in_executor.tar.gz\"),\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.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineSparkOptionsArgs;\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 test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .spark()\n .build());\n\n var pysparkMainfile = new Routine(\"pysparkMainfile\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"PYTHON\")\n .definitionBody(\"\")\n .sparkOptions(RoutineSparkOptionsArgs.builder()\n .connection(testConnection.name())\n .runtimeVersion(\"2.1\")\n .mainFileUri(\"gs://test-bucket/main.py\")\n .pyFileUris(\"gs://test-bucket/lib.py\")\n .fileUris(\"gs://test-bucket/distribute_in_executor.json\")\n .archiveUris(\"gs://test-bucket/distribute_in_executor.tar.gz\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n spark: {}\n pysparkMainfile:\n type: gcp:bigquery:Routine\n name: pyspark_mainfile\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: PYTHON\n definitionBody:\n sparkOptions:\n connection: ${testConnection.name}\n runtimeVersion: '2.1'\n mainFileUri: gs://test-bucket/main.py\n pyFileUris:\n - gs://test-bucket/lib.py\n fileUris:\n - gs://test-bucket/distribute_in_executor.json\n archiveUris:\n - gs://test-bucket/distribute_in_executor.tar.gz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Spark Jar\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n spark: {},\n});\nconst sparkJar = new gcp.bigquery.Routine(\"spark_jar\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"SCALA\",\n definitionBody: \"\",\n sparkOptions: {\n connection: testConnection.name,\n runtimeVersion: \"2.1\",\n containerImage: \"gcr.io/my-project-id/my-spark-image:latest\",\n mainClass: \"com.google.test.jar.MainClass\",\n jarUris: [\"gs://test-bucket/uberjar_spark_spark3.jar\"],\n properties: {\n \"spark.dataproc.scaling.version\": \"2\",\n \"spark.reducer.fetchMigratedShuffle.enabled\": \"true\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n spark={})\nspark_jar = gcp.bigquery.Routine(\"spark_jar\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"SCALA\",\n definition_body=\"\",\n spark_options={\n \"connection\": test_connection.name,\n \"runtime_version\": \"2.1\",\n \"container_image\": \"gcr.io/my-project-id/my-spark-image:latest\",\n \"main_class\": \"com.google.test.jar.MainClass\",\n \"jar_uris\": [\"gs://test-bucket/uberjar_spark_spark3.jar\"],\n \"properties\": {\n \"spark_dataproc_scaling_version\": \"2\",\n \"spark_reducer_fetch_migrated_shuffle_enabled\": \"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 test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n Spark = null,\n });\n\n var sparkJar = new Gcp.BigQuery.Routine(\"spark_jar\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"SCALA\",\n DefinitionBody = \"\",\n SparkOptions = new Gcp.BigQuery.Inputs.RoutineSparkOptionsArgs\n {\n Connection = testConnection.Name,\n RuntimeVersion = \"2.1\",\n ContainerImage = \"gcr.io/my-project-id/my-spark-image:latest\",\n MainClass = \"com.google.test.jar.MainClass\",\n JarUris = new[]\n {\n \"gs://test-bucket/uberjar_spark_spark3.jar\",\n },\n Properties = \n {\n { \"spark.dataproc.scaling.version\", \"2\" },\n { \"spark.reducer.fetchMigratedShuffle.enabled\", \"true\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tSpark: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"spark_jar\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"SCALA\"),\n\t\t\tDefinitionBody: pulumi.String(\"\"),\n\t\t\tSparkOptions: \u0026bigquery.RoutineSparkOptionsArgs{\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tRuntimeVersion: pulumi.String(\"2.1\"),\n\t\t\t\tContainerImage: pulumi.String(\"gcr.io/my-project-id/my-spark-image:latest\"),\n\t\t\t\tMainClass: pulumi.String(\"com.google.test.jar.MainClass\"),\n\t\t\t\tJarUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/uberjar_spark_spark3.jar\"),\n\t\t\t\t},\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dataproc.scaling.version\": pulumi.String(\"2\"),\n\t\t\t\t\t\"spark.reducer.fetchMigratedShuffle.enabled\": pulumi.String(\"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.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineSparkOptionsArgs;\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 test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .spark()\n .build());\n\n var sparkJar = new Routine(\"sparkJar\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"SCALA\")\n .definitionBody(\"\")\n .sparkOptions(RoutineSparkOptionsArgs.builder()\n .connection(testConnection.name())\n .runtimeVersion(\"2.1\")\n .containerImage(\"gcr.io/my-project-id/my-spark-image:latest\")\n .mainClass(\"com.google.test.jar.MainClass\")\n .jarUris(\"gs://test-bucket/uberjar_spark_spark3.jar\")\n .properties(Map.ofEntries(\n Map.entry(\"spark.dataproc.scaling.version\", \"2\"),\n Map.entry(\"spark.reducer.fetchMigratedShuffle.enabled\", \"true\")\n ))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n spark: {}\n sparkJar:\n type: gcp:bigquery:Routine\n name: spark_jar\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: SCALA\n definitionBody:\n sparkOptions:\n connection: ${testConnection.name}\n runtimeVersion: '2.1'\n containerImage: gcr.io/my-project-id/my-spark-image:latest\n mainClass: com.google.test.jar.MainClass\n jarUris:\n - gs://test-bucket/uberjar_spark_spark3.jar\n properties:\n spark.dataproc.scaling.version: '2'\n spark.reducer.fetchMigratedShuffle.enabled: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Data Governance Type\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"tf_test_dataset_id_15222\"});\nconst customMaskingRoutine = new gcp.bigquery.Routine(\"custom_masking_routine\", {\n datasetId: test.datasetId,\n routineId: \"custom_masking_routine\",\n routineType: \"SCALAR_FUNCTION\",\n language: \"SQL\",\n dataGovernanceType: \"DATA_MASKING\",\n definitionBody: \"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n arguments: [{\n name: \"ssn\",\n dataType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n }],\n returnType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"tf_test_dataset_id_15222\")\ncustom_masking_routine = gcp.bigquery.Routine(\"custom_masking_routine\",\n dataset_id=test.dataset_id,\n routine_id=\"custom_masking_routine\",\n routine_type=\"SCALAR_FUNCTION\",\n language=\"SQL\",\n data_governance_type=\"DATA_MASKING\",\n definition_body=\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n arguments=[{\n \"name\": \"ssn\",\n \"data_type\": \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n }],\n return_type=\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\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 test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"tf_test_dataset_id_15222\",\n });\n\n var customMaskingRoutine = new Gcp.BigQuery.Routine(\"custom_masking_routine\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"custom_masking_routine\",\n RoutineType = \"SCALAR_FUNCTION\",\n Language = \"SQL\",\n DataGovernanceType = \"DATA_MASKING\",\n DefinitionBody = \"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"ssn\",\n DataType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n },\n },\n ReturnType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"tf_test_dataset_id_15222\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"custom_masking_routine\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"custom_masking_routine\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDataGovernanceType: pulumi.String(\"DATA_MASKING\"),\n\t\t\tDefinitionBody: pulumi.String(\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"ssn\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\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.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\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 test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"tf_test_dataset_id_15222\")\n .build());\n\n var customMaskingRoutine = new Routine(\"customMaskingRoutine\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"custom_masking_routine\")\n .routineType(\"SCALAR_FUNCTION\")\n .language(\"SQL\")\n .dataGovernanceType(\"DATA_MASKING\")\n .definitionBody(\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"ssn\")\n .dataType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .build())\n .returnType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: tf_test_dataset_id_15222\n customMaskingRoutine:\n type: gcp:bigquery:Routine\n name: custom_masking_routine\n properties:\n datasetId: ${test.datasetId}\n routineId: custom_masking_routine\n routineType: SCALAR_FUNCTION\n language: SQL\n dataGovernanceType: DATA_MASKING\n definitionBody: SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\n arguments:\n - name: ssn\n dataType: '{\"typeKind\" : \"STRING\"}'\n returnType: '{\"typeKind\" : \"STRING\"}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Remote Function\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n cloudResource: {},\n});\nconst remoteFunction = new gcp.bigquery.Routine(\"remote_function\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"SCALAR_FUNCTION\",\n definitionBody: \"\",\n returnType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n remoteFunctionOptions: {\n endpoint: \"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\",\n connection: testConnection.name,\n maxBatchingRows: \"10\",\n userDefinedContext: {\n z: \"1.5\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n cloud_resource={})\nremote_function = gcp.bigquery.Routine(\"remote_function\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"SCALAR_FUNCTION\",\n definition_body=\"\",\n return_type=\"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n remote_function_options={\n \"endpoint\": \"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\",\n \"connection\": test_connection.name,\n \"max_batching_rows\": \"10\",\n \"user_defined_context\": {\n \"z\": \"1.5\",\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 test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n CloudResource = null,\n });\n\n var remoteFunction = new Gcp.BigQuery.Routine(\"remote_function\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"SCALAR_FUNCTION\",\n DefinitionBody = \"\",\n ReturnType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n RemoteFunctionOptions = new Gcp.BigQuery.Inputs.RoutineRemoteFunctionOptionsArgs\n {\n Endpoint = \"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\",\n Connection = testConnection.Name,\n MaxBatchingRows = \"10\",\n UserDefinedContext = \n {\n { \"z\", \"1.5\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tCloudResource: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"remote_function\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tDefinitionBody: pulumi.String(\"\"),\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\n\t\t\tRemoteFunctionOptions: \u0026bigquery.RoutineRemoteFunctionOptionsArgs{\n\t\t\t\tEndpoint: pulumi.String(\"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\"),\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tMaxBatchingRows: pulumi.String(\"10\"),\n\t\t\t\tUserDefinedContext: pulumi.StringMap{\n\t\t\t\t\t\"z\": pulumi.String(\"1.5\"),\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.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudResourceArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineRemoteFunctionOptionsArgs;\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 test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .cloudResource()\n .build());\n\n var remoteFunction = new Routine(\"remoteFunction\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"SCALAR_FUNCTION\")\n .definitionBody(\"\")\n .returnType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .remoteFunctionOptions(RoutineRemoteFunctionOptionsArgs.builder()\n .endpoint(\"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\")\n .connection(testConnection.name())\n .maxBatchingRows(\"10\")\n .userDefinedContext(Map.of(\"z\", \"1.5\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n cloudResource: {}\n remoteFunction:\n type: gcp:bigquery:Routine\n name: remote_function\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: SCALAR_FUNCTION\n definitionBody:\n returnType: '{\"typeKind\" : \"STRING\"}'\n remoteFunctionOptions:\n endpoint: https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\n connection: ${testConnection.name}\n maxBatchingRows: '10'\n userDefinedContext:\n z: '1.5'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRoutine can be imported using any of these accepted formats:\n\n* `projects/{{project}}/datasets/{{dataset_id}}/routines/{{routine_id}}`\n\n* `{{project}}/{{dataset_id}}/{{routine_id}}`\n\n* `{{dataset_id}}/{{routine_id}}`\n\nWhen using the `pulumi import` command, Routine can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/routine:Routine default projects/{{project}}/datasets/{{dataset_id}}/routines/{{routine_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/routine:Routine default {{project}}/{{dataset_id}}/{{routine_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/routine:Routine default {{dataset_id}}/{{routine_id}}\n```\n\n", "properties": { "arguments": { "type": "array", @@ -124978,7 +124978,7 @@ } }, "gcp:bigquery/table:Table": { - "description": "Creates a table resource in a dataset for Google BigQuery. For more information see\n[the official documentation](https://cloud.google.com/bigquery/docs/) and\n[API](https://cloud.google.com/bigquery/docs/reference/rest/v2/tables).\n\n\u003e **Note**: On newer versions of the provider, you must explicitly set `deletion_protection=false`\n(and run `pulumi update` to write the field to state) in order to destroy an instance.\nIt is recommended to not set this field (or set it to true) until you're ready to destroy.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.bigquery.Dataset(\"default\", {\n datasetId: \"foo\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n});\nconst defaultTable = new gcp.bigquery.Table(\"default\", {\n datasetId: _default.datasetId,\n tableId: \"bar\",\n timePartitioning: {\n type: \"DAY\",\n },\n labels: {\n env: \"default\",\n },\n schema: `[\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n]\n`,\n});\nconst sheet = new gcp.bigquery.Table(\"sheet\", {\n datasetId: _default.datasetId,\n tableId: \"sheet\",\n externalDataConfiguration: {\n autodetect: true,\n sourceFormat: \"GOOGLE_SHEETS\",\n googleSheetsOptions: {\n skipLeadingRows: 1,\n },\n sourceUris: [\"https://docs.google.com/spreadsheets/d/123456789012345\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.bigquery.Dataset(\"default\",\n dataset_id=\"foo\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n })\ndefault_table = gcp.bigquery.Table(\"default\",\n dataset_id=default.dataset_id,\n table_id=\"bar\",\n time_partitioning={\n \"type\": \"DAY\",\n },\n labels={\n \"env\": \"default\",\n },\n schema=\"\"\"[\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n]\n\"\"\")\nsheet = gcp.bigquery.Table(\"sheet\",\n dataset_id=default.dataset_id,\n table_id=\"sheet\",\n external_data_configuration={\n \"autodetect\": True,\n \"sourceFormat\": \"GOOGLE_SHEETS\",\n \"googleSheetsOptions\": {\n \"skipLeadingRows\": 1,\n },\n \"sourceUris\": [\"https://docs.google.com/spreadsheets/d/123456789012345\"],\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 @default = new Gcp.BigQuery.Dataset(\"default\", new()\n {\n DatasetId = \"foo\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n });\n\n var defaultTable = new Gcp.BigQuery.Table(\"default\", new()\n {\n DatasetId = @default.DatasetId,\n TableId = \"bar\",\n TimePartitioning = new Gcp.BigQuery.Inputs.TableTimePartitioningArgs\n {\n Type = \"DAY\",\n },\n Labels = \n {\n { \"env\", \"default\" },\n },\n Schema = @\"[\n {\n \"\"name\"\": \"\"permalink\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The Permalink\"\"\n },\n {\n \"\"name\"\": \"\"state\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"State where the head office is located\"\"\n }\n]\n\",\n });\n\n var sheet = new Gcp.BigQuery.Table(\"sheet\", new()\n {\n DatasetId = @default.DatasetId,\n TableId = \"sheet\",\n ExternalDataConfiguration = new Gcp.BigQuery.Inputs.TableExternalDataConfigurationArgs\n {\n Autodetect = true,\n SourceFormat = \"GOOGLE_SHEETS\",\n GoogleSheetsOptions = new Gcp.BigQuery.Inputs.TableExternalDataConfigurationGoogleSheetsOptionsArgs\n {\n SkipLeadingRows = 1,\n },\n SourceUris = new[]\n {\n \"https://docs.google.com/spreadsheets/d/123456789012345\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := bigquery.NewDataset(ctx, \"default\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"foo\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewTable(ctx, \"default\", \u0026bigquery.TableArgs{\n\t\t\tDatasetId: _default.DatasetId,\n\t\t\tTableId: pulumi.String(\"bar\"),\n\t\t\tTimePartitioning: \u0026bigquery.TableTimePartitioningArgs{\n\t\t\t\tType: pulumi.String(\"DAY\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewTable(ctx, \"sheet\", \u0026bigquery.TableArgs{\n\t\t\tDatasetId: _default.DatasetId,\n\t\t\tTableId: pulumi.String(\"sheet\"),\n\t\t\tExternalDataConfiguration: \u0026bigquery.TableExternalDataConfigurationArgs{\n\t\t\t\tAutodetect: pulumi.Bool(true),\n\t\t\t\tSourceFormat: pulumi.String(\"GOOGLE_SHEETS\"),\n\t\t\t\tGoogleSheetsOptions: \u0026bigquery.TableExternalDataConfigurationGoogleSheetsOptionsArgs{\n\t\t\t\t\tSkipLeadingRows: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tSourceUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://docs.google.com/spreadsheets/d/123456789012345\"),\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.inputs.TableTimePartitioningArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableExternalDataConfigurationArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableExternalDataConfigurationGoogleSheetsOptionsArgs;\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 Dataset(\"default\", DatasetArgs.builder()\n .datasetId(\"foo\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .build());\n\n var defaultTable = new Table(\"defaultTable\", TableArgs.builder()\n .datasetId(default_.datasetId())\n .tableId(\"bar\")\n .timePartitioning(TableTimePartitioningArgs.builder()\n .type(\"DAY\")\n .build())\n .labels(Map.of(\"env\", \"default\"))\n .schema(\"\"\"\n[\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n]\n \"\"\")\n .build());\n\n var sheet = new Table(\"sheet\", TableArgs.builder()\n .datasetId(default_.datasetId())\n .tableId(\"sheet\")\n .externalDataConfiguration(TableExternalDataConfigurationArgs.builder()\n .autodetect(true)\n .sourceFormat(\"GOOGLE_SHEETS\")\n .googleSheetsOptions(TableExternalDataConfigurationGoogleSheetsOptionsArgs.builder()\n .skipLeadingRows(1)\n .build())\n .sourceUris(\"https://docs.google.com/spreadsheets/d/123456789012345\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: foo\n friendlyName: test\n description: This is a test description\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n defaultTable:\n type: gcp:bigquery:Table\n name: default\n properties:\n datasetId: ${default.datasetId}\n tableId: bar\n timePartitioning:\n type: DAY\n labels:\n env: default\n schema: |\n [\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n ]\n sheet:\n type: gcp:bigquery:Table\n properties:\n datasetId: ${default.datasetId}\n tableId: sheet\n externalDataConfiguration:\n autodetect: true\n sourceFormat: GOOGLE_SHEETS\n googleSheetsOptions:\n skipLeadingRows: 1\n sourceUris:\n - https://docs.google.com/spreadsheets/d/123456789012345\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBigQuery tables can be imported using any of these accepted formats:\n\n* `projects/{{project}}/datasets/{{dataset_id}}/tables/{{table_id}}`\n\n* `{{project}}/{{dataset_id}}/{{table_id}}`\n\n* `{{dataset_id}}/{{table_id}}`\n\nWhen using the `pulumi import` command, BigQuery tables can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/table:Table default projects/{{project}}/datasets/{{dataset_id}}/tables/{{table_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/table:Table default {{project}}/{{dataset_id}}/{{table_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/table:Table default {{dataset_id}}/{{table_id}}\n```\n\n", + "description": "Creates a table resource in a dataset for Google BigQuery. For more information see\n[the official documentation](https://cloud.google.com/bigquery/docs/) and\n[API](https://cloud.google.com/bigquery/docs/reference/rest/v2/tables).\n\n\u003e **Note**: On newer versions of the provider, you must explicitly set `deletion_protection=false`\n(and run `pulumi update` to write the field to state) in order to destroy an instance.\nIt is recommended to not set this field (or set it to true) until you're ready to destroy.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.bigquery.Dataset(\"default\", {\n datasetId: \"foo\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n});\nconst defaultTable = new gcp.bigquery.Table(\"default\", {\n datasetId: _default.datasetId,\n tableId: \"bar\",\n timePartitioning: {\n type: \"DAY\",\n },\n labels: {\n env: \"default\",\n },\n schema: `[\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n]\n`,\n});\nconst sheet = new gcp.bigquery.Table(\"sheet\", {\n datasetId: _default.datasetId,\n tableId: \"sheet\",\n externalDataConfiguration: {\n autodetect: true,\n sourceFormat: \"GOOGLE_SHEETS\",\n googleSheetsOptions: {\n skipLeadingRows: 1,\n },\n sourceUris: [\"https://docs.google.com/spreadsheets/d/123456789012345\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.bigquery.Dataset(\"default\",\n dataset_id=\"foo\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n })\ndefault_table = gcp.bigquery.Table(\"default\",\n dataset_id=default.dataset_id,\n table_id=\"bar\",\n time_partitioning={\n \"type\": \"DAY\",\n },\n labels={\n \"env\": \"default\",\n },\n schema=\"\"\"[\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n]\n\"\"\")\nsheet = gcp.bigquery.Table(\"sheet\",\n dataset_id=default.dataset_id,\n table_id=\"sheet\",\n external_data_configuration={\n \"autodetect\": True,\n \"source_format\": \"GOOGLE_SHEETS\",\n \"google_sheets_options\": {\n \"skip_leading_rows\": 1,\n },\n \"source_uris\": [\"https://docs.google.com/spreadsheets/d/123456789012345\"],\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 @default = new Gcp.BigQuery.Dataset(\"default\", new()\n {\n DatasetId = \"foo\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n });\n\n var defaultTable = new Gcp.BigQuery.Table(\"default\", new()\n {\n DatasetId = @default.DatasetId,\n TableId = \"bar\",\n TimePartitioning = new Gcp.BigQuery.Inputs.TableTimePartitioningArgs\n {\n Type = \"DAY\",\n },\n Labels = \n {\n { \"env\", \"default\" },\n },\n Schema = @\"[\n {\n \"\"name\"\": \"\"permalink\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The Permalink\"\"\n },\n {\n \"\"name\"\": \"\"state\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"State where the head office is located\"\"\n }\n]\n\",\n });\n\n var sheet = new Gcp.BigQuery.Table(\"sheet\", new()\n {\n DatasetId = @default.DatasetId,\n TableId = \"sheet\",\n ExternalDataConfiguration = new Gcp.BigQuery.Inputs.TableExternalDataConfigurationArgs\n {\n Autodetect = true,\n SourceFormat = \"GOOGLE_SHEETS\",\n GoogleSheetsOptions = new Gcp.BigQuery.Inputs.TableExternalDataConfigurationGoogleSheetsOptionsArgs\n {\n SkipLeadingRows = 1,\n },\n SourceUris = new[]\n {\n \"https://docs.google.com/spreadsheets/d/123456789012345\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := bigquery.NewDataset(ctx, \"default\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"foo\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewTable(ctx, \"default\", \u0026bigquery.TableArgs{\n\t\t\tDatasetId: _default.DatasetId,\n\t\t\tTableId: pulumi.String(\"bar\"),\n\t\t\tTimePartitioning: \u0026bigquery.TableTimePartitioningArgs{\n\t\t\t\tType: pulumi.String(\"DAY\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewTable(ctx, \"sheet\", \u0026bigquery.TableArgs{\n\t\t\tDatasetId: _default.DatasetId,\n\t\t\tTableId: pulumi.String(\"sheet\"),\n\t\t\tExternalDataConfiguration: \u0026bigquery.TableExternalDataConfigurationArgs{\n\t\t\t\tAutodetect: pulumi.Bool(true),\n\t\t\t\tSourceFormat: pulumi.String(\"GOOGLE_SHEETS\"),\n\t\t\t\tGoogleSheetsOptions: \u0026bigquery.TableExternalDataConfigurationGoogleSheetsOptionsArgs{\n\t\t\t\t\tSkipLeadingRows: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tSourceUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://docs.google.com/spreadsheets/d/123456789012345\"),\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.inputs.TableTimePartitioningArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableExternalDataConfigurationArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableExternalDataConfigurationGoogleSheetsOptionsArgs;\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 Dataset(\"default\", DatasetArgs.builder()\n .datasetId(\"foo\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .build());\n\n var defaultTable = new Table(\"defaultTable\", TableArgs.builder()\n .datasetId(default_.datasetId())\n .tableId(\"bar\")\n .timePartitioning(TableTimePartitioningArgs.builder()\n .type(\"DAY\")\n .build())\n .labels(Map.of(\"env\", \"default\"))\n .schema(\"\"\"\n[\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n]\n \"\"\")\n .build());\n\n var sheet = new Table(\"sheet\", TableArgs.builder()\n .datasetId(default_.datasetId())\n .tableId(\"sheet\")\n .externalDataConfiguration(TableExternalDataConfigurationArgs.builder()\n .autodetect(true)\n .sourceFormat(\"GOOGLE_SHEETS\")\n .googleSheetsOptions(TableExternalDataConfigurationGoogleSheetsOptionsArgs.builder()\n .skipLeadingRows(1)\n .build())\n .sourceUris(\"https://docs.google.com/spreadsheets/d/123456789012345\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: foo\n friendlyName: test\n description: This is a test description\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n defaultTable:\n type: gcp:bigquery:Table\n name: default\n properties:\n datasetId: ${default.datasetId}\n tableId: bar\n timePartitioning:\n type: DAY\n labels:\n env: default\n schema: |\n [\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n ]\n sheet:\n type: gcp:bigquery:Table\n properties:\n datasetId: ${default.datasetId}\n tableId: sheet\n externalDataConfiguration:\n autodetect: true\n sourceFormat: GOOGLE_SHEETS\n googleSheetsOptions:\n skipLeadingRows: 1\n sourceUris:\n - https://docs.google.com/spreadsheets/d/123456789012345\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBigQuery tables can be imported using any of these accepted formats:\n\n* `projects/{{project}}/datasets/{{dataset_id}}/tables/{{table_id}}`\n\n* `{{project}}/{{dataset_id}}/{{table_id}}`\n\n* `{{dataset_id}}/{{table_id}}`\n\nWhen using the `pulumi import` command, BigQuery tables can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/table:Table default projects/{{project}}/datasets/{{dataset_id}}/tables/{{table_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/table:Table default {{project}}/{{dataset_id}}/{{table_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/table:Table default {{dataset_id}}/{{table_id}}\n```\n\n", "properties": { "allowResourceTagsOnDeletion": { "type": "boolean", @@ -125885,7 +125885,7 @@ } }, "gcp:bigqueryanalyticshub/listing:Listing": { - "description": "A Bigquery Analytics Hub data exchange listing\n\n\nTo get more information about Listing, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/analytics-hub/rest/v1/projects.locations.dataExchanges.listings)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/bigquery/docs/analytics-hub-introduction)\n\n## Example Usage\n\n### Bigquery Analyticshub Listing Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst listing = new gcp.bigqueryanalyticshub.DataExchange(\"listing\", {\n location: \"US\",\n dataExchangeId: \"my_data_exchange\",\n displayName: \"my_data_exchange\",\n description: \"example data exchange\",\n});\nconst listingDataset = new gcp.bigquery.Dataset(\"listing\", {\n datasetId: \"my_listing\",\n friendlyName: \"my_listing\",\n description: \"example data exchange\",\n location: \"US\",\n});\nconst listingListing = new gcp.bigqueryanalyticshub.Listing(\"listing\", {\n location: \"US\",\n dataExchangeId: listing.dataExchangeId,\n listingId: \"my_listing\",\n displayName: \"my_listing\",\n description: \"example data exchange\",\n bigqueryDataset: {\n dataset: listingDataset.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlisting = gcp.bigqueryanalyticshub.DataExchange(\"listing\",\n location=\"US\",\n data_exchange_id=\"my_data_exchange\",\n display_name=\"my_data_exchange\",\n description=\"example data exchange\")\nlisting_dataset = gcp.bigquery.Dataset(\"listing\",\n dataset_id=\"my_listing\",\n friendly_name=\"my_listing\",\n description=\"example data exchange\",\n location=\"US\")\nlisting_listing = gcp.bigqueryanalyticshub.Listing(\"listing\",\n location=\"US\",\n data_exchange_id=listing.data_exchange_id,\n listing_id=\"my_listing\",\n display_name=\"my_listing\",\n description=\"example data exchange\",\n bigquery_dataset={\n \"dataset\": listing_dataset.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 listing = new Gcp.BigQueryAnalyticsHub.DataExchange(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = \"my_data_exchange\",\n DisplayName = \"my_data_exchange\",\n Description = \"example data exchange\",\n });\n\n var listingDataset = new Gcp.BigQuery.Dataset(\"listing\", new()\n {\n DatasetId = \"my_listing\",\n FriendlyName = \"my_listing\",\n Description = \"example data exchange\",\n Location = \"US\",\n });\n\n var listingListing = new Gcp.BigQueryAnalyticsHub.Listing(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = listing.DataExchangeId,\n ListingId = \"my_listing\",\n DisplayName = \"my_listing\",\n Description = \"example data exchange\",\n BigqueryDataset = new Gcp.BigQueryAnalyticsHub.Inputs.ListingBigqueryDatasetArgs\n {\n Dataset = listingDataset.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigqueryanalyticshub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tlisting, err := bigqueryanalyticshub.NewDataExchange(ctx, \"listing\", \u0026bigqueryanalyticshub.DataExchangeArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: pulumi.String(\"my_data_exchange\"),\n\t\t\tDisplayName: pulumi.String(\"my_data_exchange\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlistingDataset, err := bigquery.NewDataset(ctx, \"listing\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"my_listing\"),\n\t\t\tFriendlyName: pulumi.String(\"my_listing\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\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 = bigqueryanalyticshub.NewListing(ctx, \"listing\", \u0026bigqueryanalyticshub.ListingArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: listing.DataExchangeId,\n\t\t\tListingId: pulumi.String(\"my_listing\"),\n\t\t\tDisplayName: pulumi.String(\"my_listing\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t\tBigqueryDataset: \u0026bigqueryanalyticshub.ListingBigqueryDatasetArgs{\n\t\t\t\tDataset: listingDataset.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.bigqueryanalyticshub.DataExchange;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchangeArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.Listing;\nimport com.pulumi.gcp.bigqueryanalyticshub.ListingArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.ListingBigqueryDatasetArgs;\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 listing = new DataExchange(\"listing\", DataExchangeArgs.builder()\n .location(\"US\")\n .dataExchangeId(\"my_data_exchange\")\n .displayName(\"my_data_exchange\")\n .description(\"example data exchange\")\n .build());\n\n var listingDataset = new Dataset(\"listingDataset\", DatasetArgs.builder()\n .datasetId(\"my_listing\")\n .friendlyName(\"my_listing\")\n .description(\"example data exchange\")\n .location(\"US\")\n .build());\n\n var listingListing = new Listing(\"listingListing\", ListingArgs.builder()\n .location(\"US\")\n .dataExchangeId(listing.dataExchangeId())\n .listingId(\"my_listing\")\n .displayName(\"my_listing\")\n .description(\"example data exchange\")\n .bigqueryDataset(ListingBigqueryDatasetArgs.builder()\n .dataset(listingDataset.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n listing:\n type: gcp:bigqueryanalyticshub:DataExchange\n properties:\n location: US\n dataExchangeId: my_data_exchange\n displayName: my_data_exchange\n description: example data exchange\n listingListing:\n type: gcp:bigqueryanalyticshub:Listing\n name: listing\n properties:\n location: US\n dataExchangeId: ${listing.dataExchangeId}\n listingId: my_listing\n displayName: my_listing\n description: example data exchange\n bigqueryDataset:\n dataset: ${listingDataset.id}\n listingDataset:\n type: gcp:bigquery:Dataset\n name: listing\n properties:\n datasetId: my_listing\n friendlyName: my_listing\n description: example data exchange\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Analyticshub Listing Restricted\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst listing = new gcp.bigqueryanalyticshub.DataExchange(\"listing\", {\n location: \"US\",\n dataExchangeId: \"my_data_exchange\",\n displayName: \"my_data_exchange\",\n description: \"example data exchange\",\n});\nconst listingDataset = new gcp.bigquery.Dataset(\"listing\", {\n datasetId: \"my_listing\",\n friendlyName: \"my_listing\",\n description: \"example data exchange\",\n location: \"US\",\n});\nconst listingListing = new gcp.bigqueryanalyticshub.Listing(\"listing\", {\n location: \"US\",\n dataExchangeId: listing.dataExchangeId,\n listingId: \"my_listing\",\n displayName: \"my_listing\",\n description: \"example data exchange\",\n bigqueryDataset: {\n dataset: listingDataset.id,\n },\n restrictedExportConfig: {\n enabled: true,\n restrictQueryResult: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlisting = gcp.bigqueryanalyticshub.DataExchange(\"listing\",\n location=\"US\",\n data_exchange_id=\"my_data_exchange\",\n display_name=\"my_data_exchange\",\n description=\"example data exchange\")\nlisting_dataset = gcp.bigquery.Dataset(\"listing\",\n dataset_id=\"my_listing\",\n friendly_name=\"my_listing\",\n description=\"example data exchange\",\n location=\"US\")\nlisting_listing = gcp.bigqueryanalyticshub.Listing(\"listing\",\n location=\"US\",\n data_exchange_id=listing.data_exchange_id,\n listing_id=\"my_listing\",\n display_name=\"my_listing\",\n description=\"example data exchange\",\n bigquery_dataset={\n \"dataset\": listing_dataset.id,\n },\n restricted_export_config={\n \"enabled\": True,\n \"restrictQueryResult\": 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 listing = new Gcp.BigQueryAnalyticsHub.DataExchange(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = \"my_data_exchange\",\n DisplayName = \"my_data_exchange\",\n Description = \"example data exchange\",\n });\n\n var listingDataset = new Gcp.BigQuery.Dataset(\"listing\", new()\n {\n DatasetId = \"my_listing\",\n FriendlyName = \"my_listing\",\n Description = \"example data exchange\",\n Location = \"US\",\n });\n\n var listingListing = new Gcp.BigQueryAnalyticsHub.Listing(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = listing.DataExchangeId,\n ListingId = \"my_listing\",\n DisplayName = \"my_listing\",\n Description = \"example data exchange\",\n BigqueryDataset = new Gcp.BigQueryAnalyticsHub.Inputs.ListingBigqueryDatasetArgs\n {\n Dataset = listingDataset.Id,\n },\n RestrictedExportConfig = new Gcp.BigQueryAnalyticsHub.Inputs.ListingRestrictedExportConfigArgs\n {\n Enabled = true,\n RestrictQueryResult = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigqueryanalyticshub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tlisting, err := bigqueryanalyticshub.NewDataExchange(ctx, \"listing\", \u0026bigqueryanalyticshub.DataExchangeArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: pulumi.String(\"my_data_exchange\"),\n\t\t\tDisplayName: pulumi.String(\"my_data_exchange\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlistingDataset, err := bigquery.NewDataset(ctx, \"listing\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"my_listing\"),\n\t\t\tFriendlyName: pulumi.String(\"my_listing\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\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 = bigqueryanalyticshub.NewListing(ctx, \"listing\", \u0026bigqueryanalyticshub.ListingArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: listing.DataExchangeId,\n\t\t\tListingId: pulumi.String(\"my_listing\"),\n\t\t\tDisplayName: pulumi.String(\"my_listing\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t\tBigqueryDataset: \u0026bigqueryanalyticshub.ListingBigqueryDatasetArgs{\n\t\t\t\tDataset: listingDataset.ID(),\n\t\t\t},\n\t\t\tRestrictedExportConfig: \u0026bigqueryanalyticshub.ListingRestrictedExportConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tRestrictQueryResult: 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.bigqueryanalyticshub.DataExchange;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchangeArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.Listing;\nimport com.pulumi.gcp.bigqueryanalyticshub.ListingArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.ListingBigqueryDatasetArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.ListingRestrictedExportConfigArgs;\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 listing = new DataExchange(\"listing\", DataExchangeArgs.builder()\n .location(\"US\")\n .dataExchangeId(\"my_data_exchange\")\n .displayName(\"my_data_exchange\")\n .description(\"example data exchange\")\n .build());\n\n var listingDataset = new Dataset(\"listingDataset\", DatasetArgs.builder()\n .datasetId(\"my_listing\")\n .friendlyName(\"my_listing\")\n .description(\"example data exchange\")\n .location(\"US\")\n .build());\n\n var listingListing = new Listing(\"listingListing\", ListingArgs.builder()\n .location(\"US\")\n .dataExchangeId(listing.dataExchangeId())\n .listingId(\"my_listing\")\n .displayName(\"my_listing\")\n .description(\"example data exchange\")\n .bigqueryDataset(ListingBigqueryDatasetArgs.builder()\n .dataset(listingDataset.id())\n .build())\n .restrictedExportConfig(ListingRestrictedExportConfigArgs.builder()\n .enabled(true)\n .restrictQueryResult(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n listing:\n type: gcp:bigqueryanalyticshub:DataExchange\n properties:\n location: US\n dataExchangeId: my_data_exchange\n displayName: my_data_exchange\n description: example data exchange\n listingListing:\n type: gcp:bigqueryanalyticshub:Listing\n name: listing\n properties:\n location: US\n dataExchangeId: ${listing.dataExchangeId}\n listingId: my_listing\n displayName: my_listing\n description: example data exchange\n bigqueryDataset:\n dataset: ${listingDataset.id}\n restrictedExportConfig:\n enabled: true\n restrictQueryResult: true\n listingDataset:\n type: gcp:bigquery:Dataset\n name: listing\n properties:\n datasetId: my_listing\n friendlyName: my_listing\n description: example data exchange\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nListing can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/dataExchanges/{{data_exchange_id}}/listings/{{listing_id}}`\n\n* `{{project}}/{{location}}/{{data_exchange_id}}/{{listing_id}}`\n\n* `{{location}}/{{data_exchange_id}}/{{listing_id}}`\n\nWhen using the `pulumi import` command, Listing can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/listing:Listing default projects/{{project}}/locations/{{location}}/dataExchanges/{{data_exchange_id}}/listings/{{listing_id}}\n```\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/listing:Listing default {{project}}/{{location}}/{{data_exchange_id}}/{{listing_id}}\n```\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/listing:Listing default {{location}}/{{data_exchange_id}}/{{listing_id}}\n```\n\n", + "description": "A Bigquery Analytics Hub data exchange listing\n\n\nTo get more information about Listing, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/analytics-hub/rest/v1/projects.locations.dataExchanges.listings)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/bigquery/docs/analytics-hub-introduction)\n\n## Example Usage\n\n### Bigquery Analyticshub Listing Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst listing = new gcp.bigqueryanalyticshub.DataExchange(\"listing\", {\n location: \"US\",\n dataExchangeId: \"my_data_exchange\",\n displayName: \"my_data_exchange\",\n description: \"example data exchange\",\n});\nconst listingDataset = new gcp.bigquery.Dataset(\"listing\", {\n datasetId: \"my_listing\",\n friendlyName: \"my_listing\",\n description: \"example data exchange\",\n location: \"US\",\n});\nconst listingListing = new gcp.bigqueryanalyticshub.Listing(\"listing\", {\n location: \"US\",\n dataExchangeId: listing.dataExchangeId,\n listingId: \"my_listing\",\n displayName: \"my_listing\",\n description: \"example data exchange\",\n bigqueryDataset: {\n dataset: listingDataset.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlisting = gcp.bigqueryanalyticshub.DataExchange(\"listing\",\n location=\"US\",\n data_exchange_id=\"my_data_exchange\",\n display_name=\"my_data_exchange\",\n description=\"example data exchange\")\nlisting_dataset = gcp.bigquery.Dataset(\"listing\",\n dataset_id=\"my_listing\",\n friendly_name=\"my_listing\",\n description=\"example data exchange\",\n location=\"US\")\nlisting_listing = gcp.bigqueryanalyticshub.Listing(\"listing\",\n location=\"US\",\n data_exchange_id=listing.data_exchange_id,\n listing_id=\"my_listing\",\n display_name=\"my_listing\",\n description=\"example data exchange\",\n bigquery_dataset={\n \"dataset\": listing_dataset.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 listing = new Gcp.BigQueryAnalyticsHub.DataExchange(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = \"my_data_exchange\",\n DisplayName = \"my_data_exchange\",\n Description = \"example data exchange\",\n });\n\n var listingDataset = new Gcp.BigQuery.Dataset(\"listing\", new()\n {\n DatasetId = \"my_listing\",\n FriendlyName = \"my_listing\",\n Description = \"example data exchange\",\n Location = \"US\",\n });\n\n var listingListing = new Gcp.BigQueryAnalyticsHub.Listing(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = listing.DataExchangeId,\n ListingId = \"my_listing\",\n DisplayName = \"my_listing\",\n Description = \"example data exchange\",\n BigqueryDataset = new Gcp.BigQueryAnalyticsHub.Inputs.ListingBigqueryDatasetArgs\n {\n Dataset = listingDataset.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigqueryanalyticshub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tlisting, err := bigqueryanalyticshub.NewDataExchange(ctx, \"listing\", \u0026bigqueryanalyticshub.DataExchangeArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: pulumi.String(\"my_data_exchange\"),\n\t\t\tDisplayName: pulumi.String(\"my_data_exchange\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlistingDataset, err := bigquery.NewDataset(ctx, \"listing\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"my_listing\"),\n\t\t\tFriendlyName: pulumi.String(\"my_listing\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\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 = bigqueryanalyticshub.NewListing(ctx, \"listing\", \u0026bigqueryanalyticshub.ListingArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: listing.DataExchangeId,\n\t\t\tListingId: pulumi.String(\"my_listing\"),\n\t\t\tDisplayName: pulumi.String(\"my_listing\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t\tBigqueryDataset: \u0026bigqueryanalyticshub.ListingBigqueryDatasetArgs{\n\t\t\t\tDataset: listingDataset.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.bigqueryanalyticshub.DataExchange;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchangeArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.Listing;\nimport com.pulumi.gcp.bigqueryanalyticshub.ListingArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.ListingBigqueryDatasetArgs;\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 listing = new DataExchange(\"listing\", DataExchangeArgs.builder()\n .location(\"US\")\n .dataExchangeId(\"my_data_exchange\")\n .displayName(\"my_data_exchange\")\n .description(\"example data exchange\")\n .build());\n\n var listingDataset = new Dataset(\"listingDataset\", DatasetArgs.builder()\n .datasetId(\"my_listing\")\n .friendlyName(\"my_listing\")\n .description(\"example data exchange\")\n .location(\"US\")\n .build());\n\n var listingListing = new Listing(\"listingListing\", ListingArgs.builder()\n .location(\"US\")\n .dataExchangeId(listing.dataExchangeId())\n .listingId(\"my_listing\")\n .displayName(\"my_listing\")\n .description(\"example data exchange\")\n .bigqueryDataset(ListingBigqueryDatasetArgs.builder()\n .dataset(listingDataset.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n listing:\n type: gcp:bigqueryanalyticshub:DataExchange\n properties:\n location: US\n dataExchangeId: my_data_exchange\n displayName: my_data_exchange\n description: example data exchange\n listingListing:\n type: gcp:bigqueryanalyticshub:Listing\n name: listing\n properties:\n location: US\n dataExchangeId: ${listing.dataExchangeId}\n listingId: my_listing\n displayName: my_listing\n description: example data exchange\n bigqueryDataset:\n dataset: ${listingDataset.id}\n listingDataset:\n type: gcp:bigquery:Dataset\n name: listing\n properties:\n datasetId: my_listing\n friendlyName: my_listing\n description: example data exchange\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Analyticshub Listing Restricted\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst listing = new gcp.bigqueryanalyticshub.DataExchange(\"listing\", {\n location: \"US\",\n dataExchangeId: \"my_data_exchange\",\n displayName: \"my_data_exchange\",\n description: \"example data exchange\",\n});\nconst listingDataset = new gcp.bigquery.Dataset(\"listing\", {\n datasetId: \"my_listing\",\n friendlyName: \"my_listing\",\n description: \"example data exchange\",\n location: \"US\",\n});\nconst listingListing = new gcp.bigqueryanalyticshub.Listing(\"listing\", {\n location: \"US\",\n dataExchangeId: listing.dataExchangeId,\n listingId: \"my_listing\",\n displayName: \"my_listing\",\n description: \"example data exchange\",\n bigqueryDataset: {\n dataset: listingDataset.id,\n },\n restrictedExportConfig: {\n enabled: true,\n restrictQueryResult: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlisting = gcp.bigqueryanalyticshub.DataExchange(\"listing\",\n location=\"US\",\n data_exchange_id=\"my_data_exchange\",\n display_name=\"my_data_exchange\",\n description=\"example data exchange\")\nlisting_dataset = gcp.bigquery.Dataset(\"listing\",\n dataset_id=\"my_listing\",\n friendly_name=\"my_listing\",\n description=\"example data exchange\",\n location=\"US\")\nlisting_listing = gcp.bigqueryanalyticshub.Listing(\"listing\",\n location=\"US\",\n data_exchange_id=listing.data_exchange_id,\n listing_id=\"my_listing\",\n display_name=\"my_listing\",\n description=\"example data exchange\",\n bigquery_dataset={\n \"dataset\": listing_dataset.id,\n },\n restricted_export_config={\n \"enabled\": True,\n \"restrict_query_result\": 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 listing = new Gcp.BigQueryAnalyticsHub.DataExchange(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = \"my_data_exchange\",\n DisplayName = \"my_data_exchange\",\n Description = \"example data exchange\",\n });\n\n var listingDataset = new Gcp.BigQuery.Dataset(\"listing\", new()\n {\n DatasetId = \"my_listing\",\n FriendlyName = \"my_listing\",\n Description = \"example data exchange\",\n Location = \"US\",\n });\n\n var listingListing = new Gcp.BigQueryAnalyticsHub.Listing(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = listing.DataExchangeId,\n ListingId = \"my_listing\",\n DisplayName = \"my_listing\",\n Description = \"example data exchange\",\n BigqueryDataset = new Gcp.BigQueryAnalyticsHub.Inputs.ListingBigqueryDatasetArgs\n {\n Dataset = listingDataset.Id,\n },\n RestrictedExportConfig = new Gcp.BigQueryAnalyticsHub.Inputs.ListingRestrictedExportConfigArgs\n {\n Enabled = true,\n RestrictQueryResult = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigqueryanalyticshub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tlisting, err := bigqueryanalyticshub.NewDataExchange(ctx, \"listing\", \u0026bigqueryanalyticshub.DataExchangeArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: pulumi.String(\"my_data_exchange\"),\n\t\t\tDisplayName: pulumi.String(\"my_data_exchange\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlistingDataset, err := bigquery.NewDataset(ctx, \"listing\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"my_listing\"),\n\t\t\tFriendlyName: pulumi.String(\"my_listing\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\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 = bigqueryanalyticshub.NewListing(ctx, \"listing\", \u0026bigqueryanalyticshub.ListingArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: listing.DataExchangeId,\n\t\t\tListingId: pulumi.String(\"my_listing\"),\n\t\t\tDisplayName: pulumi.String(\"my_listing\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t\tBigqueryDataset: \u0026bigqueryanalyticshub.ListingBigqueryDatasetArgs{\n\t\t\t\tDataset: listingDataset.ID(),\n\t\t\t},\n\t\t\tRestrictedExportConfig: \u0026bigqueryanalyticshub.ListingRestrictedExportConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tRestrictQueryResult: 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.bigqueryanalyticshub.DataExchange;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchangeArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.Listing;\nimport com.pulumi.gcp.bigqueryanalyticshub.ListingArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.ListingBigqueryDatasetArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.ListingRestrictedExportConfigArgs;\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 listing = new DataExchange(\"listing\", DataExchangeArgs.builder()\n .location(\"US\")\n .dataExchangeId(\"my_data_exchange\")\n .displayName(\"my_data_exchange\")\n .description(\"example data exchange\")\n .build());\n\n var listingDataset = new Dataset(\"listingDataset\", DatasetArgs.builder()\n .datasetId(\"my_listing\")\n .friendlyName(\"my_listing\")\n .description(\"example data exchange\")\n .location(\"US\")\n .build());\n\n var listingListing = new Listing(\"listingListing\", ListingArgs.builder()\n .location(\"US\")\n .dataExchangeId(listing.dataExchangeId())\n .listingId(\"my_listing\")\n .displayName(\"my_listing\")\n .description(\"example data exchange\")\n .bigqueryDataset(ListingBigqueryDatasetArgs.builder()\n .dataset(listingDataset.id())\n .build())\n .restrictedExportConfig(ListingRestrictedExportConfigArgs.builder()\n .enabled(true)\n .restrictQueryResult(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n listing:\n type: gcp:bigqueryanalyticshub:DataExchange\n properties:\n location: US\n dataExchangeId: my_data_exchange\n displayName: my_data_exchange\n description: example data exchange\n listingListing:\n type: gcp:bigqueryanalyticshub:Listing\n name: listing\n properties:\n location: US\n dataExchangeId: ${listing.dataExchangeId}\n listingId: my_listing\n displayName: my_listing\n description: example data exchange\n bigqueryDataset:\n dataset: ${listingDataset.id}\n restrictedExportConfig:\n enabled: true\n restrictQueryResult: true\n listingDataset:\n type: gcp:bigquery:Dataset\n name: listing\n properties:\n datasetId: my_listing\n friendlyName: my_listing\n description: example data exchange\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nListing can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/dataExchanges/{{data_exchange_id}}/listings/{{listing_id}}`\n\n* `{{project}}/{{location}}/{{data_exchange_id}}/{{listing_id}}`\n\n* `{{location}}/{{data_exchange_id}}/{{listing_id}}`\n\nWhen using the `pulumi import` command, Listing can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/listing:Listing default projects/{{project}}/locations/{{location}}/dataExchanges/{{data_exchange_id}}/listings/{{listing_id}}\n```\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/listing:Listing default {{project}}/{{location}}/{{data_exchange_id}}/{{listing_id}}\n```\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/listing:Listing default {{location}}/{{data_exchange_id}}/{{listing_id}}\n```\n\n", "properties": { "bigqueryDataset": { "$ref": "#/types/gcp:bigqueryanalyticshub/ListingBigqueryDataset:ListingBigqueryDataset", @@ -126487,7 +126487,7 @@ } }, "gcp:bigquerydatapolicy/dataPolicy:DataPolicy": { - "description": "A BigQuery Data Policy\n\n\nTo get more information about DataPolicy, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/bigquerydatapolicy/rest/v1beta1/projects.locations.dataPolicies/create)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/bigquery/docs/column-data-masking-intro)\n\n## Example Usage\n\n### Bigquery Datapolicy Data Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst taxonomy = new gcp.datacatalog.Taxonomy(\"taxonomy\", {\n region: \"us-central1\",\n displayName: \"taxonomy\",\n description: \"A collection of policy tags\",\n activatedPolicyTypes: [\"FINE_GRAINED_ACCESS_CONTROL\"],\n});\nconst policyTag = new gcp.datacatalog.PolicyTag(\"policy_tag\", {\n taxonomy: taxonomy.id,\n displayName: \"Low security\",\n description: \"A policy tag normally associated with low security items\",\n});\nconst dataPolicy = new gcp.bigquerydatapolicy.DataPolicy(\"data_policy\", {\n location: \"us-central1\",\n dataPolicyId: \"data_policy\",\n policyTag: policyTag.name,\n dataPolicyType: \"COLUMN_LEVEL_SECURITY_POLICY\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntaxonomy = gcp.datacatalog.Taxonomy(\"taxonomy\",\n region=\"us-central1\",\n display_name=\"taxonomy\",\n description=\"A collection of policy tags\",\n activated_policy_types=[\"FINE_GRAINED_ACCESS_CONTROL\"])\npolicy_tag = gcp.datacatalog.PolicyTag(\"policy_tag\",\n taxonomy=taxonomy.id,\n display_name=\"Low security\",\n description=\"A policy tag normally associated with low security items\")\ndata_policy = gcp.bigquerydatapolicy.DataPolicy(\"data_policy\",\n location=\"us-central1\",\n data_policy_id=\"data_policy\",\n policy_tag=policy_tag.name,\n data_policy_type=\"COLUMN_LEVEL_SECURITY_POLICY\")\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 taxonomy = new Gcp.DataCatalog.Taxonomy(\"taxonomy\", new()\n {\n Region = \"us-central1\",\n DisplayName = \"taxonomy\",\n Description = \"A collection of policy tags\",\n ActivatedPolicyTypes = new[]\n {\n \"FINE_GRAINED_ACCESS_CONTROL\",\n },\n });\n\n var policyTag = new Gcp.DataCatalog.PolicyTag(\"policy_tag\", new()\n {\n Taxonomy = taxonomy.Id,\n DisplayName = \"Low security\",\n Description = \"A policy tag normally associated with low security items\",\n });\n\n var dataPolicy = new Gcp.BigQueryDataPolicy.DataPolicy(\"data_policy\", new()\n {\n Location = \"us-central1\",\n DataPolicyId = \"data_policy\",\n PolicyTag = policyTag.Name,\n DataPolicyType = \"COLUMN_LEVEL_SECURITY_POLICY\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquerydatapolicy\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datacatalog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttaxonomy, err := datacatalog.NewTaxonomy(ctx, \"taxonomy\", \u0026datacatalog.TaxonomyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"taxonomy\"),\n\t\t\tDescription: pulumi.String(\"A collection of policy tags\"),\n\t\t\tActivatedPolicyTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"FINE_GRAINED_ACCESS_CONTROL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicyTag, err := datacatalog.NewPolicyTag(ctx, \"policy_tag\", \u0026datacatalog.PolicyTagArgs{\n\t\t\tTaxonomy: taxonomy.ID(),\n\t\t\tDisplayName: pulumi.String(\"Low security\"),\n\t\t\tDescription: pulumi.String(\"A policy tag normally associated with low security items\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquerydatapolicy.NewDataPolicy(ctx, \"data_policy\", \u0026bigquerydatapolicy.DataPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDataPolicyId: pulumi.String(\"data_policy\"),\n\t\t\tPolicyTag: policyTag.Name,\n\t\t\tDataPolicyType: pulumi.String(\"COLUMN_LEVEL_SECURITY_POLICY\"),\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.datacatalog.Taxonomy;\nimport com.pulumi.gcp.datacatalog.TaxonomyArgs;\nimport com.pulumi.gcp.datacatalog.PolicyTag;\nimport com.pulumi.gcp.datacatalog.PolicyTagArgs;\nimport com.pulumi.gcp.bigquerydatapolicy.DataPolicy;\nimport com.pulumi.gcp.bigquerydatapolicy.DataPolicyArgs;\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 taxonomy = new Taxonomy(\"taxonomy\", TaxonomyArgs.builder()\n .region(\"us-central1\")\n .displayName(\"taxonomy\")\n .description(\"A collection of policy tags\")\n .activatedPolicyTypes(\"FINE_GRAINED_ACCESS_CONTROL\")\n .build());\n\n var policyTag = new PolicyTag(\"policyTag\", PolicyTagArgs.builder()\n .taxonomy(taxonomy.id())\n .displayName(\"Low security\")\n .description(\"A policy tag normally associated with low security items\")\n .build());\n\n var dataPolicy = new DataPolicy(\"dataPolicy\", DataPolicyArgs.builder()\n .location(\"us-central1\")\n .dataPolicyId(\"data_policy\")\n .policyTag(policyTag.name())\n .dataPolicyType(\"COLUMN_LEVEL_SECURITY_POLICY\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataPolicy:\n type: gcp:bigquerydatapolicy:DataPolicy\n name: data_policy\n properties:\n location: us-central1\n dataPolicyId: data_policy\n policyTag: ${policyTag.name}\n dataPolicyType: COLUMN_LEVEL_SECURITY_POLICY\n policyTag:\n type: gcp:datacatalog:PolicyTag\n name: policy_tag\n properties:\n taxonomy: ${taxonomy.id}\n displayName: Low security\n description: A policy tag normally associated with low security items\n taxonomy:\n type: gcp:datacatalog:Taxonomy\n properties:\n region: us-central1\n displayName: taxonomy\n description: A collection of policy tags\n activatedPolicyTypes:\n - FINE_GRAINED_ACCESS_CONTROL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Datapolicy Data Policy Routine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst taxonomy = new gcp.datacatalog.Taxonomy(\"taxonomy\", {\n region: \"us-central1\",\n displayName: \"taxonomy\",\n description: \"A collection of policy tags\",\n activatedPolicyTypes: [\"FINE_GRAINED_ACCESS_CONTROL\"],\n});\nconst policyTag = new gcp.datacatalog.PolicyTag(\"policy_tag\", {\n taxonomy: taxonomy.id,\n displayName: \"Low security\",\n description: \"A policy tag normally associated with low security items\",\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {\n datasetId: \"dataset_id\",\n location: \"us-central1\",\n});\nconst customMaskingRoutine = new gcp.bigquery.Routine(\"custom_masking_routine\", {\n datasetId: test.datasetId,\n routineId: \"custom_masking_routine\",\n routineType: \"SCALAR_FUNCTION\",\n language: \"SQL\",\n dataGovernanceType: \"DATA_MASKING\",\n definitionBody: \"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n returnType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n arguments: [{\n name: \"ssn\",\n dataType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n }],\n});\nconst dataPolicy = new gcp.bigquerydatapolicy.DataPolicy(\"data_policy\", {\n location: \"us-central1\",\n dataPolicyId: \"data_policy\",\n policyTag: policyTag.name,\n dataPolicyType: \"DATA_MASKING_POLICY\",\n dataMaskingPolicy: {\n routine: customMaskingRoutine.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntaxonomy = gcp.datacatalog.Taxonomy(\"taxonomy\",\n region=\"us-central1\",\n display_name=\"taxonomy\",\n description=\"A collection of policy tags\",\n activated_policy_types=[\"FINE_GRAINED_ACCESS_CONTROL\"])\npolicy_tag = gcp.datacatalog.PolicyTag(\"policy_tag\",\n taxonomy=taxonomy.id,\n display_name=\"Low security\",\n description=\"A policy tag normally associated with low security items\")\ntest = gcp.bigquery.Dataset(\"test\",\n dataset_id=\"dataset_id\",\n location=\"us-central1\")\ncustom_masking_routine = gcp.bigquery.Routine(\"custom_masking_routine\",\n dataset_id=test.dataset_id,\n routine_id=\"custom_masking_routine\",\n routine_type=\"SCALAR_FUNCTION\",\n language=\"SQL\",\n data_governance_type=\"DATA_MASKING\",\n definition_body=\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n return_type=\"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n arguments=[{\n \"name\": \"ssn\",\n \"dataType\": \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n }])\ndata_policy = gcp.bigquerydatapolicy.DataPolicy(\"data_policy\",\n location=\"us-central1\",\n data_policy_id=\"data_policy\",\n policy_tag=policy_tag.name,\n data_policy_type=\"DATA_MASKING_POLICY\",\n data_masking_policy={\n \"routine\": custom_masking_routine.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 taxonomy = new Gcp.DataCatalog.Taxonomy(\"taxonomy\", new()\n {\n Region = \"us-central1\",\n DisplayName = \"taxonomy\",\n Description = \"A collection of policy tags\",\n ActivatedPolicyTypes = new[]\n {\n \"FINE_GRAINED_ACCESS_CONTROL\",\n },\n });\n\n var policyTag = new Gcp.DataCatalog.PolicyTag(\"policy_tag\", new()\n {\n Taxonomy = taxonomy.Id,\n DisplayName = \"Low security\",\n Description = \"A policy tag normally associated with low security items\",\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n Location = \"us-central1\",\n });\n\n var customMaskingRoutine = new Gcp.BigQuery.Routine(\"custom_masking_routine\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"custom_masking_routine\",\n RoutineType = \"SCALAR_FUNCTION\",\n Language = \"SQL\",\n DataGovernanceType = \"DATA_MASKING\",\n DefinitionBody = \"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n ReturnType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"ssn\",\n DataType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n },\n },\n });\n\n var dataPolicy = new Gcp.BigQueryDataPolicy.DataPolicy(\"data_policy\", new()\n {\n Location = \"us-central1\",\n DataPolicyId = \"data_policy\",\n PolicyTag = policyTag.Name,\n DataPolicyType = \"DATA_MASKING_POLICY\",\n DataMaskingPolicy = new Gcp.BigQueryDataPolicy.Inputs.DataPolicyDataMaskingPolicyArgs\n {\n Routine = customMaskingRoutine.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquerydatapolicy\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datacatalog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttaxonomy, err := datacatalog.NewTaxonomy(ctx, \"taxonomy\", \u0026datacatalog.TaxonomyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"taxonomy\"),\n\t\t\tDescription: pulumi.String(\"A collection of policy tags\"),\n\t\t\tActivatedPolicyTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"FINE_GRAINED_ACCESS_CONTROL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicyTag, err := datacatalog.NewPolicyTag(ctx, \"policy_tag\", \u0026datacatalog.PolicyTagArgs{\n\t\t\tTaxonomy: taxonomy.ID(),\n\t\t\tDisplayName: pulumi.String(\"Low security\"),\n\t\t\tDescription: pulumi.String(\"A policy tag normally associated with low security items\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\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\tcustomMaskingRoutine, err := bigquery.NewRoutine(ctx, \"custom_masking_routine\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"custom_masking_routine\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDataGovernanceType: pulumi.String(\"DATA_MASKING\"),\n\t\t\tDefinitionBody: pulumi.String(\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\"),\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"ssn\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\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 = bigquerydatapolicy.NewDataPolicy(ctx, \"data_policy\", \u0026bigquerydatapolicy.DataPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDataPolicyId: pulumi.String(\"data_policy\"),\n\t\t\tPolicyTag: policyTag.Name,\n\t\t\tDataPolicyType: pulumi.String(\"DATA_MASKING_POLICY\"),\n\t\t\tDataMaskingPolicy: \u0026bigquerydatapolicy.DataPolicyDataMaskingPolicyArgs{\n\t\t\t\tRoutine: customMaskingRoutine.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.datacatalog.Taxonomy;\nimport com.pulumi.gcp.datacatalog.TaxonomyArgs;\nimport com.pulumi.gcp.datacatalog.PolicyTag;\nimport com.pulumi.gcp.datacatalog.PolicyTagArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport com.pulumi.gcp.bigquerydatapolicy.DataPolicy;\nimport com.pulumi.gcp.bigquerydatapolicy.DataPolicyArgs;\nimport com.pulumi.gcp.bigquerydatapolicy.inputs.DataPolicyDataMaskingPolicyArgs;\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 taxonomy = new Taxonomy(\"taxonomy\", TaxonomyArgs.builder()\n .region(\"us-central1\")\n .displayName(\"taxonomy\")\n .description(\"A collection of policy tags\")\n .activatedPolicyTypes(\"FINE_GRAINED_ACCESS_CONTROL\")\n .build());\n\n var policyTag = new PolicyTag(\"policyTag\", PolicyTagArgs.builder()\n .taxonomy(taxonomy.id())\n .displayName(\"Low security\")\n .description(\"A policy tag normally associated with low security items\")\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .location(\"us-central1\")\n .build());\n\n var customMaskingRoutine = new Routine(\"customMaskingRoutine\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"custom_masking_routine\")\n .routineType(\"SCALAR_FUNCTION\")\n .language(\"SQL\")\n .dataGovernanceType(\"DATA_MASKING\")\n .definitionBody(\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\")\n .returnType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"ssn\")\n .dataType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .build())\n .build());\n\n var dataPolicy = new DataPolicy(\"dataPolicy\", DataPolicyArgs.builder()\n .location(\"us-central1\")\n .dataPolicyId(\"data_policy\")\n .policyTag(policyTag.name())\n .dataPolicyType(\"DATA_MASKING_POLICY\")\n .dataMaskingPolicy(DataPolicyDataMaskingPolicyArgs.builder()\n .routine(customMaskingRoutine.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataPolicy:\n type: gcp:bigquerydatapolicy:DataPolicy\n name: data_policy\n properties:\n location: us-central1\n dataPolicyId: data_policy\n policyTag: ${policyTag.name}\n dataPolicyType: DATA_MASKING_POLICY\n dataMaskingPolicy:\n routine: ${customMaskingRoutine.id}\n policyTag:\n type: gcp:datacatalog:PolicyTag\n name: policy_tag\n properties:\n taxonomy: ${taxonomy.id}\n displayName: Low security\n description: A policy tag normally associated with low security items\n taxonomy:\n type: gcp:datacatalog:Taxonomy\n properties:\n region: us-central1\n displayName: taxonomy\n description: A collection of policy tags\n activatedPolicyTypes:\n - FINE_GRAINED_ACCESS_CONTROL\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n location: us-central1\n customMaskingRoutine:\n type: gcp:bigquery:Routine\n name: custom_masking_routine\n properties:\n datasetId: ${test.datasetId}\n routineId: custom_masking_routine\n routineType: SCALAR_FUNCTION\n language: SQL\n dataGovernanceType: DATA_MASKING\n definitionBody: SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\n returnType: '{\"typeKind\" : \"STRING\"}'\n arguments:\n - name: ssn\n dataType: '{\"typeKind\" : \"STRING\"}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/dataPolicies/{{data_policy_id}}`\n\n* `{{project}}/{{location}}/{{data_policy_id}}`\n\n* `{{location}}/{{data_policy_id}}`\n\nWhen using the `pulumi import` command, DataPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquerydatapolicy/dataPolicy:DataPolicy default projects/{{project}}/locations/{{location}}/dataPolicies/{{data_policy_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquerydatapolicy/dataPolicy:DataPolicy default {{project}}/{{location}}/{{data_policy_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquerydatapolicy/dataPolicy:DataPolicy default {{location}}/{{data_policy_id}}\n```\n\n", + "description": "A BigQuery Data Policy\n\n\nTo get more information about DataPolicy, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/bigquerydatapolicy/rest/v1beta1/projects.locations.dataPolicies/create)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/bigquery/docs/column-data-masking-intro)\n\n## Example Usage\n\n### Bigquery Datapolicy Data Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst taxonomy = new gcp.datacatalog.Taxonomy(\"taxonomy\", {\n region: \"us-central1\",\n displayName: \"taxonomy\",\n description: \"A collection of policy tags\",\n activatedPolicyTypes: [\"FINE_GRAINED_ACCESS_CONTROL\"],\n});\nconst policyTag = new gcp.datacatalog.PolicyTag(\"policy_tag\", {\n taxonomy: taxonomy.id,\n displayName: \"Low security\",\n description: \"A policy tag normally associated with low security items\",\n});\nconst dataPolicy = new gcp.bigquerydatapolicy.DataPolicy(\"data_policy\", {\n location: \"us-central1\",\n dataPolicyId: \"data_policy\",\n policyTag: policyTag.name,\n dataPolicyType: \"COLUMN_LEVEL_SECURITY_POLICY\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntaxonomy = gcp.datacatalog.Taxonomy(\"taxonomy\",\n region=\"us-central1\",\n display_name=\"taxonomy\",\n description=\"A collection of policy tags\",\n activated_policy_types=[\"FINE_GRAINED_ACCESS_CONTROL\"])\npolicy_tag = gcp.datacatalog.PolicyTag(\"policy_tag\",\n taxonomy=taxonomy.id,\n display_name=\"Low security\",\n description=\"A policy tag normally associated with low security items\")\ndata_policy = gcp.bigquerydatapolicy.DataPolicy(\"data_policy\",\n location=\"us-central1\",\n data_policy_id=\"data_policy\",\n policy_tag=policy_tag.name,\n data_policy_type=\"COLUMN_LEVEL_SECURITY_POLICY\")\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 taxonomy = new Gcp.DataCatalog.Taxonomy(\"taxonomy\", new()\n {\n Region = \"us-central1\",\n DisplayName = \"taxonomy\",\n Description = \"A collection of policy tags\",\n ActivatedPolicyTypes = new[]\n {\n \"FINE_GRAINED_ACCESS_CONTROL\",\n },\n });\n\n var policyTag = new Gcp.DataCatalog.PolicyTag(\"policy_tag\", new()\n {\n Taxonomy = taxonomy.Id,\n DisplayName = \"Low security\",\n Description = \"A policy tag normally associated with low security items\",\n });\n\n var dataPolicy = new Gcp.BigQueryDataPolicy.DataPolicy(\"data_policy\", new()\n {\n Location = \"us-central1\",\n DataPolicyId = \"data_policy\",\n PolicyTag = policyTag.Name,\n DataPolicyType = \"COLUMN_LEVEL_SECURITY_POLICY\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquerydatapolicy\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datacatalog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttaxonomy, err := datacatalog.NewTaxonomy(ctx, \"taxonomy\", \u0026datacatalog.TaxonomyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"taxonomy\"),\n\t\t\tDescription: pulumi.String(\"A collection of policy tags\"),\n\t\t\tActivatedPolicyTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"FINE_GRAINED_ACCESS_CONTROL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicyTag, err := datacatalog.NewPolicyTag(ctx, \"policy_tag\", \u0026datacatalog.PolicyTagArgs{\n\t\t\tTaxonomy: taxonomy.ID(),\n\t\t\tDisplayName: pulumi.String(\"Low security\"),\n\t\t\tDescription: pulumi.String(\"A policy tag normally associated with low security items\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquerydatapolicy.NewDataPolicy(ctx, \"data_policy\", \u0026bigquerydatapolicy.DataPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDataPolicyId: pulumi.String(\"data_policy\"),\n\t\t\tPolicyTag: policyTag.Name,\n\t\t\tDataPolicyType: pulumi.String(\"COLUMN_LEVEL_SECURITY_POLICY\"),\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.datacatalog.Taxonomy;\nimport com.pulumi.gcp.datacatalog.TaxonomyArgs;\nimport com.pulumi.gcp.datacatalog.PolicyTag;\nimport com.pulumi.gcp.datacatalog.PolicyTagArgs;\nimport com.pulumi.gcp.bigquerydatapolicy.DataPolicy;\nimport com.pulumi.gcp.bigquerydatapolicy.DataPolicyArgs;\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 taxonomy = new Taxonomy(\"taxonomy\", TaxonomyArgs.builder()\n .region(\"us-central1\")\n .displayName(\"taxonomy\")\n .description(\"A collection of policy tags\")\n .activatedPolicyTypes(\"FINE_GRAINED_ACCESS_CONTROL\")\n .build());\n\n var policyTag = new PolicyTag(\"policyTag\", PolicyTagArgs.builder()\n .taxonomy(taxonomy.id())\n .displayName(\"Low security\")\n .description(\"A policy tag normally associated with low security items\")\n .build());\n\n var dataPolicy = new DataPolicy(\"dataPolicy\", DataPolicyArgs.builder()\n .location(\"us-central1\")\n .dataPolicyId(\"data_policy\")\n .policyTag(policyTag.name())\n .dataPolicyType(\"COLUMN_LEVEL_SECURITY_POLICY\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataPolicy:\n type: gcp:bigquerydatapolicy:DataPolicy\n name: data_policy\n properties:\n location: us-central1\n dataPolicyId: data_policy\n policyTag: ${policyTag.name}\n dataPolicyType: COLUMN_LEVEL_SECURITY_POLICY\n policyTag:\n type: gcp:datacatalog:PolicyTag\n name: policy_tag\n properties:\n taxonomy: ${taxonomy.id}\n displayName: Low security\n description: A policy tag normally associated with low security items\n taxonomy:\n type: gcp:datacatalog:Taxonomy\n properties:\n region: us-central1\n displayName: taxonomy\n description: A collection of policy tags\n activatedPolicyTypes:\n - FINE_GRAINED_ACCESS_CONTROL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Datapolicy Data Policy Routine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst taxonomy = new gcp.datacatalog.Taxonomy(\"taxonomy\", {\n region: \"us-central1\",\n displayName: \"taxonomy\",\n description: \"A collection of policy tags\",\n activatedPolicyTypes: [\"FINE_GRAINED_ACCESS_CONTROL\"],\n});\nconst policyTag = new gcp.datacatalog.PolicyTag(\"policy_tag\", {\n taxonomy: taxonomy.id,\n displayName: \"Low security\",\n description: \"A policy tag normally associated with low security items\",\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {\n datasetId: \"dataset_id\",\n location: \"us-central1\",\n});\nconst customMaskingRoutine = new gcp.bigquery.Routine(\"custom_masking_routine\", {\n datasetId: test.datasetId,\n routineId: \"custom_masking_routine\",\n routineType: \"SCALAR_FUNCTION\",\n language: \"SQL\",\n dataGovernanceType: \"DATA_MASKING\",\n definitionBody: \"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n returnType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n arguments: [{\n name: \"ssn\",\n dataType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n }],\n});\nconst dataPolicy = new gcp.bigquerydatapolicy.DataPolicy(\"data_policy\", {\n location: \"us-central1\",\n dataPolicyId: \"data_policy\",\n policyTag: policyTag.name,\n dataPolicyType: \"DATA_MASKING_POLICY\",\n dataMaskingPolicy: {\n routine: customMaskingRoutine.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntaxonomy = gcp.datacatalog.Taxonomy(\"taxonomy\",\n region=\"us-central1\",\n display_name=\"taxonomy\",\n description=\"A collection of policy tags\",\n activated_policy_types=[\"FINE_GRAINED_ACCESS_CONTROL\"])\npolicy_tag = gcp.datacatalog.PolicyTag(\"policy_tag\",\n taxonomy=taxonomy.id,\n display_name=\"Low security\",\n description=\"A policy tag normally associated with low security items\")\ntest = gcp.bigquery.Dataset(\"test\",\n dataset_id=\"dataset_id\",\n location=\"us-central1\")\ncustom_masking_routine = gcp.bigquery.Routine(\"custom_masking_routine\",\n dataset_id=test.dataset_id,\n routine_id=\"custom_masking_routine\",\n routine_type=\"SCALAR_FUNCTION\",\n language=\"SQL\",\n data_governance_type=\"DATA_MASKING\",\n definition_body=\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n return_type=\"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n arguments=[{\n \"name\": \"ssn\",\n \"data_type\": \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n }])\ndata_policy = gcp.bigquerydatapolicy.DataPolicy(\"data_policy\",\n location=\"us-central1\",\n data_policy_id=\"data_policy\",\n policy_tag=policy_tag.name,\n data_policy_type=\"DATA_MASKING_POLICY\",\n data_masking_policy={\n \"routine\": custom_masking_routine.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 taxonomy = new Gcp.DataCatalog.Taxonomy(\"taxonomy\", new()\n {\n Region = \"us-central1\",\n DisplayName = \"taxonomy\",\n Description = \"A collection of policy tags\",\n ActivatedPolicyTypes = new[]\n {\n \"FINE_GRAINED_ACCESS_CONTROL\",\n },\n });\n\n var policyTag = new Gcp.DataCatalog.PolicyTag(\"policy_tag\", new()\n {\n Taxonomy = taxonomy.Id,\n DisplayName = \"Low security\",\n Description = \"A policy tag normally associated with low security items\",\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n Location = \"us-central1\",\n });\n\n var customMaskingRoutine = new Gcp.BigQuery.Routine(\"custom_masking_routine\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"custom_masking_routine\",\n RoutineType = \"SCALAR_FUNCTION\",\n Language = \"SQL\",\n DataGovernanceType = \"DATA_MASKING\",\n DefinitionBody = \"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n ReturnType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"ssn\",\n DataType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n },\n },\n });\n\n var dataPolicy = new Gcp.BigQueryDataPolicy.DataPolicy(\"data_policy\", new()\n {\n Location = \"us-central1\",\n DataPolicyId = \"data_policy\",\n PolicyTag = policyTag.Name,\n DataPolicyType = \"DATA_MASKING_POLICY\",\n DataMaskingPolicy = new Gcp.BigQueryDataPolicy.Inputs.DataPolicyDataMaskingPolicyArgs\n {\n Routine = customMaskingRoutine.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquerydatapolicy\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datacatalog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttaxonomy, err := datacatalog.NewTaxonomy(ctx, \"taxonomy\", \u0026datacatalog.TaxonomyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"taxonomy\"),\n\t\t\tDescription: pulumi.String(\"A collection of policy tags\"),\n\t\t\tActivatedPolicyTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"FINE_GRAINED_ACCESS_CONTROL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicyTag, err := datacatalog.NewPolicyTag(ctx, \"policy_tag\", \u0026datacatalog.PolicyTagArgs{\n\t\t\tTaxonomy: taxonomy.ID(),\n\t\t\tDisplayName: pulumi.String(\"Low security\"),\n\t\t\tDescription: pulumi.String(\"A policy tag normally associated with low security items\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\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\tcustomMaskingRoutine, err := bigquery.NewRoutine(ctx, \"custom_masking_routine\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"custom_masking_routine\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDataGovernanceType: pulumi.String(\"DATA_MASKING\"),\n\t\t\tDefinitionBody: pulumi.String(\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\"),\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"ssn\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\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 = bigquerydatapolicy.NewDataPolicy(ctx, \"data_policy\", \u0026bigquerydatapolicy.DataPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDataPolicyId: pulumi.String(\"data_policy\"),\n\t\t\tPolicyTag: policyTag.Name,\n\t\t\tDataPolicyType: pulumi.String(\"DATA_MASKING_POLICY\"),\n\t\t\tDataMaskingPolicy: \u0026bigquerydatapolicy.DataPolicyDataMaskingPolicyArgs{\n\t\t\t\tRoutine: customMaskingRoutine.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.datacatalog.Taxonomy;\nimport com.pulumi.gcp.datacatalog.TaxonomyArgs;\nimport com.pulumi.gcp.datacatalog.PolicyTag;\nimport com.pulumi.gcp.datacatalog.PolicyTagArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport com.pulumi.gcp.bigquerydatapolicy.DataPolicy;\nimport com.pulumi.gcp.bigquerydatapolicy.DataPolicyArgs;\nimport com.pulumi.gcp.bigquerydatapolicy.inputs.DataPolicyDataMaskingPolicyArgs;\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 taxonomy = new Taxonomy(\"taxonomy\", TaxonomyArgs.builder()\n .region(\"us-central1\")\n .displayName(\"taxonomy\")\n .description(\"A collection of policy tags\")\n .activatedPolicyTypes(\"FINE_GRAINED_ACCESS_CONTROL\")\n .build());\n\n var policyTag = new PolicyTag(\"policyTag\", PolicyTagArgs.builder()\n .taxonomy(taxonomy.id())\n .displayName(\"Low security\")\n .description(\"A policy tag normally associated with low security items\")\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .location(\"us-central1\")\n .build());\n\n var customMaskingRoutine = new Routine(\"customMaskingRoutine\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"custom_masking_routine\")\n .routineType(\"SCALAR_FUNCTION\")\n .language(\"SQL\")\n .dataGovernanceType(\"DATA_MASKING\")\n .definitionBody(\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\")\n .returnType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"ssn\")\n .dataType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .build())\n .build());\n\n var dataPolicy = new DataPolicy(\"dataPolicy\", DataPolicyArgs.builder()\n .location(\"us-central1\")\n .dataPolicyId(\"data_policy\")\n .policyTag(policyTag.name())\n .dataPolicyType(\"DATA_MASKING_POLICY\")\n .dataMaskingPolicy(DataPolicyDataMaskingPolicyArgs.builder()\n .routine(customMaskingRoutine.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataPolicy:\n type: gcp:bigquerydatapolicy:DataPolicy\n name: data_policy\n properties:\n location: us-central1\n dataPolicyId: data_policy\n policyTag: ${policyTag.name}\n dataPolicyType: DATA_MASKING_POLICY\n dataMaskingPolicy:\n routine: ${customMaskingRoutine.id}\n policyTag:\n type: gcp:datacatalog:PolicyTag\n name: policy_tag\n properties:\n taxonomy: ${taxonomy.id}\n displayName: Low security\n description: A policy tag normally associated with low security items\n taxonomy:\n type: gcp:datacatalog:Taxonomy\n properties:\n region: us-central1\n displayName: taxonomy\n description: A collection of policy tags\n activatedPolicyTypes:\n - FINE_GRAINED_ACCESS_CONTROL\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n location: us-central1\n customMaskingRoutine:\n type: gcp:bigquery:Routine\n name: custom_masking_routine\n properties:\n datasetId: ${test.datasetId}\n routineId: custom_masking_routine\n routineType: SCALAR_FUNCTION\n language: SQL\n dataGovernanceType: DATA_MASKING\n definitionBody: SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\n returnType: '{\"typeKind\" : \"STRING\"}'\n arguments:\n - name: ssn\n dataType: '{\"typeKind\" : \"STRING\"}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/dataPolicies/{{data_policy_id}}`\n\n* `{{project}}/{{location}}/{{data_policy_id}}`\n\n* `{{location}}/{{data_policy_id}}`\n\nWhen using the `pulumi import` command, DataPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquerydatapolicy/dataPolicy:DataPolicy default projects/{{project}}/locations/{{location}}/dataPolicies/{{data_policy_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquerydatapolicy/dataPolicy:DataPolicy default {{project}}/{{location}}/{{data_policy_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquerydatapolicy/dataPolicy:DataPolicy default {{location}}/{{data_policy_id}}\n```\n\n", "properties": { "dataMaskingPolicy": { "$ref": "#/types/gcp:bigquerydatapolicy/DataPolicyDataMaskingPolicy:DataPolicyDataMaskingPolicy", @@ -126914,7 +126914,7 @@ } }, "gcp:bigtable/authorizedView:AuthorizedView": { - "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst instance = new gcp.bigtable.Instance(\"instance\", {\n name: \"tf-instance\",\n clusters: [{\n clusterId: \"tf-instance-cluster\",\n zone: \"us-central1-b\",\n numNodes: 3,\n storageType: \"HDD\",\n }],\n});\nconst table = new gcp.bigtable.Table(\"table\", {\n name: \"tf-table\",\n instanceName: instance.name,\n splitKeys: [\n \"a\",\n \"b\",\n \"c\",\n ],\n columnFamilies: [\n {\n family: \"family-first\",\n },\n {\n family: \"family-second\",\n },\n ],\n changeStreamRetention: \"24h0m0s\",\n});\nconst authorizedView = new gcp.bigtable.AuthorizedView(\"authorized_view\", {\n name: \"tf-authorized-view\",\n instanceName: instance.name,\n tableName: table.name,\n subsetView: {\n rowPrefixes: [std.base64encode({\n input: \"prefix#\",\n }).then(invoke =\u003e invoke.result)],\n familySubsets: [\n {\n familyName: \"family-first\",\n qualifiers: [\n std.base64encode({\n input: \"qualifier\",\n }).then(invoke =\u003e invoke.result),\n std.base64encode({\n input: \"qualifier-second\",\n }).then(invoke =\u003e invoke.result),\n ],\n },\n {\n familyName: \"family-second\",\n qualifierPrefixes: [\"\"],\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ninstance = gcp.bigtable.Instance(\"instance\",\n name=\"tf-instance\",\n clusters=[{\n \"clusterId\": \"tf-instance-cluster\",\n \"zone\": \"us-central1-b\",\n \"numNodes\": 3,\n \"storageType\": \"HDD\",\n }])\ntable = gcp.bigtable.Table(\"table\",\n name=\"tf-table\",\n instance_name=instance.name,\n split_keys=[\n \"a\",\n \"b\",\n \"c\",\n ],\n column_families=[\n {\n \"family\": \"family-first\",\n },\n {\n \"family\": \"family-second\",\n },\n ],\n change_stream_retention=\"24h0m0s\")\nauthorized_view = gcp.bigtable.AuthorizedView(\"authorized_view\",\n name=\"tf-authorized-view\",\n instance_name=instance.name,\n table_name=table.name,\n subset_view={\n \"rowPrefixes\": [std.base64encode(input=\"prefix#\").result],\n \"familySubsets\": [\n {\n \"familyName\": \"family-first\",\n \"qualifiers\": [\n std.base64encode(input=\"qualifier\").result,\n std.base64encode(input=\"qualifier-second\").result,\n ],\n },\n {\n \"familyName\": \"family-second\",\n \"qualifierPrefixes\": [\"\"],\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.BigTable.Instance(\"instance\", new()\n {\n Name = \"tf-instance\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"tf-instance-cluster\",\n Zone = \"us-central1-b\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n },\n });\n\n var table = new Gcp.BigTable.Table(\"table\", new()\n {\n Name = \"tf-table\",\n InstanceName = instance.Name,\n SplitKeys = new[]\n {\n \"a\",\n \"b\",\n \"c\",\n },\n ColumnFamilies = new[]\n {\n new Gcp.BigTable.Inputs.TableColumnFamilyArgs\n {\n Family = \"family-first\",\n },\n new Gcp.BigTable.Inputs.TableColumnFamilyArgs\n {\n Family = \"family-second\",\n },\n },\n ChangeStreamRetention = \"24h0m0s\",\n });\n\n var authorizedView = new Gcp.BigTable.AuthorizedView(\"authorized_view\", new()\n {\n Name = \"tf-authorized-view\",\n InstanceName = instance.Name,\n TableName = table.Name,\n SubsetView = new Gcp.BigTable.Inputs.AuthorizedViewSubsetViewArgs\n {\n RowPrefixes = new[]\n {\n Std.Base64encode.Invoke(new()\n {\n Input = \"prefix#\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n FamilySubsets = new[]\n {\n new Gcp.BigTable.Inputs.AuthorizedViewSubsetViewFamilySubsetArgs\n {\n FamilyName = \"family-first\",\n Qualifiers = new[]\n {\n Std.Base64encode.Invoke(new()\n {\n Input = \"qualifier\",\n }).Apply(invoke =\u003e invoke.Result),\n Std.Base64encode.Invoke(new()\n {\n Input = \"qualifier-second\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n new Gcp.BigTable.Inputs.AuthorizedViewSubsetViewFamilySubsetArgs\n {\n FamilyName = \"family-second\",\n QualifierPrefixes = new[]\n {\n \"\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := bigtable.NewInstance(ctx, \"instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"tf-instance\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"tf-instance-cluster\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\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\ttable, err := bigtable.NewTable(ctx, \"table\", \u0026bigtable.TableArgs{\n\t\t\tName: pulumi.String(\"tf-table\"),\n\t\t\tInstanceName: instance.Name,\n\t\t\tSplitKeys: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"a\"),\n\t\t\t\tpulumi.String(\"b\"),\n\t\t\t\tpulumi.String(\"c\"),\n\t\t\t},\n\t\t\tColumnFamilies: bigtable.TableColumnFamilyArray{\n\t\t\t\t\u0026bigtable.TableColumnFamilyArgs{\n\t\t\t\t\tFamily: pulumi.String(\"family-first\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigtable.TableColumnFamilyArgs{\n\t\t\t\t\tFamily: pulumi.String(\"family-second\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tChangeStreamRetention: pulumi.String(\"24h0m0s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"prefix#\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode1, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"qualifier\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode2, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"qualifier-second\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigtable.NewAuthorizedView(ctx, \"authorized_view\", \u0026bigtable.AuthorizedViewArgs{\n\t\t\tName: pulumi.String(\"tf-authorized-view\"),\n\t\t\tInstanceName: instance.Name,\n\t\t\tTableName: table.Name,\n\t\t\tSubsetView: \u0026bigtable.AuthorizedViewSubsetViewArgs{\n\t\t\t\tRowPrefixes: pulumi.StringArray{\n\t\t\t\t\tinvokeBase64encode.Result,\n\t\t\t\t},\n\t\t\t\tFamilySubsets: bigtable.AuthorizedViewSubsetViewFamilySubsetArray{\n\t\t\t\t\t\u0026bigtable.AuthorizedViewSubsetViewFamilySubsetArgs{\n\t\t\t\t\t\tFamilyName: pulumi.String(\"family-first\"),\n\t\t\t\t\t\tQualifiers: pulumi.StringArray{\n\t\t\t\t\t\t\tinvokeBase64encode1.Result,\n\t\t\t\t\t\t\tinvokeBase64encode2.Result,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026bigtable.AuthorizedViewSubsetViewFamilySubsetArgs{\n\t\t\t\t\t\tFamilyName: pulumi.String(\"family-second\"),\n\t\t\t\t\t\tQualifierPrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"\"),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\nimport com.pulumi.gcp.bigtable.Table;\nimport com.pulumi.gcp.bigtable.TableArgs;\nimport com.pulumi.gcp.bigtable.inputs.TableColumnFamilyArgs;\nimport com.pulumi.gcp.bigtable.AuthorizedView;\nimport com.pulumi.gcp.bigtable.AuthorizedViewArgs;\nimport com.pulumi.gcp.bigtable.inputs.AuthorizedViewSubsetViewArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"tf-instance\")\n .clusters(InstanceClusterArgs.builder()\n .clusterId(\"tf-instance-cluster\")\n .zone(\"us-central1-b\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build())\n .build());\n\n var table = new Table(\"table\", TableArgs.builder()\n .name(\"tf-table\")\n .instanceName(instance.name())\n .splitKeys( \n \"a\",\n \"b\",\n \"c\")\n .columnFamilies( \n TableColumnFamilyArgs.builder()\n .family(\"family-first\")\n .build(),\n TableColumnFamilyArgs.builder()\n .family(\"family-second\")\n .build())\n .changeStreamRetention(\"24h0m0s\")\n .build());\n\n var authorizedView = new AuthorizedView(\"authorizedView\", AuthorizedViewArgs.builder()\n .name(\"tf-authorized-view\")\n .instanceName(instance.name())\n .tableName(table.name())\n .subsetView(AuthorizedViewSubsetViewArgs.builder()\n .rowPrefixes(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"prefix#\")\n .build()).result())\n .familySubsets( \n AuthorizedViewSubsetViewFamilySubsetArgs.builder()\n .familyName(\"family-first\")\n .qualifiers( \n StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"qualifier\")\n .build()).result(),\n StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"qualifier-second\")\n .build()).result())\n .build(),\n AuthorizedViewSubsetViewFamilySubsetArgs.builder()\n .familyName(\"family-second\")\n .qualifierPrefixes(\"\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:bigtable:Instance\n properties:\n name: tf-instance\n clusters:\n - clusterId: tf-instance-cluster\n zone: us-central1-b\n numNodes: 3\n storageType: HDD\n table:\n type: gcp:bigtable:Table\n properties:\n name: tf-table\n instanceName: ${instance.name}\n splitKeys:\n - a\n - b\n - c\n columnFamilies:\n - family: family-first\n - family: family-second\n changeStreamRetention: 24h0m0s\n authorizedView:\n type: gcp:bigtable:AuthorizedView\n name: authorized_view\n properties:\n name: tf-authorized-view\n instanceName: ${instance.name}\n tableName: ${table.name}\n subsetView:\n rowPrefixes:\n - fn::invoke:\n Function: std:base64encode\n Arguments:\n input: prefix#\n Return: result\n familySubsets:\n - familyName: family-first\n qualifiers:\n - fn::invoke:\n Function: std:base64encode\n Arguments:\n input: qualifier\n Return: result\n - fn::invoke:\n Function: std:base64encode\n Arguments:\n input: qualifier-second\n Return: result\n - familyName: family-second\n qualifierPrefixes:\n -\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBigtable Authorized Views can be imported using any of these accepted formats:\n\n* `projects/{{project}}/instances/{{instance_name}}/tables/{{table_name}}/authorizedViews/{{name}}`\n\n* `{{project}}/{{instance_name}}/{{table_name}}/{{name}}`\n\n* `{{instance_name}}/{{table_name}}/{{name}}`\n\nWhen using the `pulumi import` command, Bigtable Authorized Views can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigtable/authorizedView:AuthorizedView default projects/{{project}}/instances/{{instance_name}}/tables/{{table_name}}/authorizedViews/{{name}}\n```\n\n```sh\n$ pulumi import gcp:bigtable/authorizedView:AuthorizedView default {{project}}/{{instance_name}}/{{table_name}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:bigtable/authorizedView:AuthorizedView default {{instance_name}}/{{table_name}}/{{name}}\n```\n\n", + "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst instance = new gcp.bigtable.Instance(\"instance\", {\n name: \"tf-instance\",\n clusters: [{\n clusterId: \"tf-instance-cluster\",\n zone: \"us-central1-b\",\n numNodes: 3,\n storageType: \"HDD\",\n }],\n});\nconst table = new gcp.bigtable.Table(\"table\", {\n name: \"tf-table\",\n instanceName: instance.name,\n splitKeys: [\n \"a\",\n \"b\",\n \"c\",\n ],\n columnFamilies: [\n {\n family: \"family-first\",\n },\n {\n family: \"family-second\",\n },\n ],\n changeStreamRetention: \"24h0m0s\",\n});\nconst authorizedView = new gcp.bigtable.AuthorizedView(\"authorized_view\", {\n name: \"tf-authorized-view\",\n instanceName: instance.name,\n tableName: table.name,\n subsetView: {\n rowPrefixes: [std.base64encode({\n input: \"prefix#\",\n }).then(invoke =\u003e invoke.result)],\n familySubsets: [\n {\n familyName: \"family-first\",\n qualifiers: [\n std.base64encode({\n input: \"qualifier\",\n }).then(invoke =\u003e invoke.result),\n std.base64encode({\n input: \"qualifier-second\",\n }).then(invoke =\u003e invoke.result),\n ],\n },\n {\n familyName: \"family-second\",\n qualifierPrefixes: [\"\"],\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ninstance = gcp.bigtable.Instance(\"instance\",\n name=\"tf-instance\",\n clusters=[{\n \"cluster_id\": \"tf-instance-cluster\",\n \"zone\": \"us-central1-b\",\n \"num_nodes\": 3,\n \"storage_type\": \"HDD\",\n }])\ntable = gcp.bigtable.Table(\"table\",\n name=\"tf-table\",\n instance_name=instance.name,\n split_keys=[\n \"a\",\n \"b\",\n \"c\",\n ],\n column_families=[\n {\n \"family\": \"family-first\",\n },\n {\n \"family\": \"family-second\",\n },\n ],\n change_stream_retention=\"24h0m0s\")\nauthorized_view = gcp.bigtable.AuthorizedView(\"authorized_view\",\n name=\"tf-authorized-view\",\n instance_name=instance.name,\n table_name=table.name,\n subset_view={\n \"row_prefixes\": [std.base64encode(input=\"prefix#\").result],\n \"family_subsets\": [\n {\n \"family_name\": \"family-first\",\n \"qualifiers\": [\n std.base64encode(input=\"qualifier\").result,\n std.base64encode(input=\"qualifier-second\").result,\n ],\n },\n {\n \"family_name\": \"family-second\",\n \"qualifier_prefixes\": [\"\"],\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.BigTable.Instance(\"instance\", new()\n {\n Name = \"tf-instance\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"tf-instance-cluster\",\n Zone = \"us-central1-b\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n },\n });\n\n var table = new Gcp.BigTable.Table(\"table\", new()\n {\n Name = \"tf-table\",\n InstanceName = instance.Name,\n SplitKeys = new[]\n {\n \"a\",\n \"b\",\n \"c\",\n },\n ColumnFamilies = new[]\n {\n new Gcp.BigTable.Inputs.TableColumnFamilyArgs\n {\n Family = \"family-first\",\n },\n new Gcp.BigTable.Inputs.TableColumnFamilyArgs\n {\n Family = \"family-second\",\n },\n },\n ChangeStreamRetention = \"24h0m0s\",\n });\n\n var authorizedView = new Gcp.BigTable.AuthorizedView(\"authorized_view\", new()\n {\n Name = \"tf-authorized-view\",\n InstanceName = instance.Name,\n TableName = table.Name,\n SubsetView = new Gcp.BigTable.Inputs.AuthorizedViewSubsetViewArgs\n {\n RowPrefixes = new[]\n {\n Std.Base64encode.Invoke(new()\n {\n Input = \"prefix#\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n FamilySubsets = new[]\n {\n new Gcp.BigTable.Inputs.AuthorizedViewSubsetViewFamilySubsetArgs\n {\n FamilyName = \"family-first\",\n Qualifiers = new[]\n {\n Std.Base64encode.Invoke(new()\n {\n Input = \"qualifier\",\n }).Apply(invoke =\u003e invoke.Result),\n Std.Base64encode.Invoke(new()\n {\n Input = \"qualifier-second\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n new Gcp.BigTable.Inputs.AuthorizedViewSubsetViewFamilySubsetArgs\n {\n FamilyName = \"family-second\",\n QualifierPrefixes = new[]\n {\n \"\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := bigtable.NewInstance(ctx, \"instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"tf-instance\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"tf-instance-cluster\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\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\ttable, err := bigtable.NewTable(ctx, \"table\", \u0026bigtable.TableArgs{\n\t\t\tName: pulumi.String(\"tf-table\"),\n\t\t\tInstanceName: instance.Name,\n\t\t\tSplitKeys: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"a\"),\n\t\t\t\tpulumi.String(\"b\"),\n\t\t\t\tpulumi.String(\"c\"),\n\t\t\t},\n\t\t\tColumnFamilies: bigtable.TableColumnFamilyArray{\n\t\t\t\t\u0026bigtable.TableColumnFamilyArgs{\n\t\t\t\t\tFamily: pulumi.String(\"family-first\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigtable.TableColumnFamilyArgs{\n\t\t\t\t\tFamily: pulumi.String(\"family-second\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tChangeStreamRetention: pulumi.String(\"24h0m0s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"prefix#\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode1, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"qualifier\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode2, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"qualifier-second\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigtable.NewAuthorizedView(ctx, \"authorized_view\", \u0026bigtable.AuthorizedViewArgs{\n\t\t\tName: pulumi.String(\"tf-authorized-view\"),\n\t\t\tInstanceName: instance.Name,\n\t\t\tTableName: table.Name,\n\t\t\tSubsetView: \u0026bigtable.AuthorizedViewSubsetViewArgs{\n\t\t\t\tRowPrefixes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(invokeBase64encode.Result),\n\t\t\t\t},\n\t\t\t\tFamilySubsets: bigtable.AuthorizedViewSubsetViewFamilySubsetArray{\n\t\t\t\t\t\u0026bigtable.AuthorizedViewSubsetViewFamilySubsetArgs{\n\t\t\t\t\t\tFamilyName: pulumi.String(\"family-first\"),\n\t\t\t\t\t\tQualifiers: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(invokeBase64encode1.Result),\n\t\t\t\t\t\t\tpulumi.String(invokeBase64encode2.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026bigtable.AuthorizedViewSubsetViewFamilySubsetArgs{\n\t\t\t\t\t\tFamilyName: pulumi.String(\"family-second\"),\n\t\t\t\t\t\tQualifierPrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"\"),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\nimport com.pulumi.gcp.bigtable.Table;\nimport com.pulumi.gcp.bigtable.TableArgs;\nimport com.pulumi.gcp.bigtable.inputs.TableColumnFamilyArgs;\nimport com.pulumi.gcp.bigtable.AuthorizedView;\nimport com.pulumi.gcp.bigtable.AuthorizedViewArgs;\nimport com.pulumi.gcp.bigtable.inputs.AuthorizedViewSubsetViewArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"tf-instance\")\n .clusters(InstanceClusterArgs.builder()\n .clusterId(\"tf-instance-cluster\")\n .zone(\"us-central1-b\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build())\n .build());\n\n var table = new Table(\"table\", TableArgs.builder()\n .name(\"tf-table\")\n .instanceName(instance.name())\n .splitKeys( \n \"a\",\n \"b\",\n \"c\")\n .columnFamilies( \n TableColumnFamilyArgs.builder()\n .family(\"family-first\")\n .build(),\n TableColumnFamilyArgs.builder()\n .family(\"family-second\")\n .build())\n .changeStreamRetention(\"24h0m0s\")\n .build());\n\n var authorizedView = new AuthorizedView(\"authorizedView\", AuthorizedViewArgs.builder()\n .name(\"tf-authorized-view\")\n .instanceName(instance.name())\n .tableName(table.name())\n .subsetView(AuthorizedViewSubsetViewArgs.builder()\n .rowPrefixes(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"prefix#\")\n .build()).result())\n .familySubsets( \n AuthorizedViewSubsetViewFamilySubsetArgs.builder()\n .familyName(\"family-first\")\n .qualifiers( \n StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"qualifier\")\n .build()).result(),\n StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"qualifier-second\")\n .build()).result())\n .build(),\n AuthorizedViewSubsetViewFamilySubsetArgs.builder()\n .familyName(\"family-second\")\n .qualifierPrefixes(\"\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:bigtable:Instance\n properties:\n name: tf-instance\n clusters:\n - clusterId: tf-instance-cluster\n zone: us-central1-b\n numNodes: 3\n storageType: HDD\n table:\n type: gcp:bigtable:Table\n properties:\n name: tf-table\n instanceName: ${instance.name}\n splitKeys:\n - a\n - b\n - c\n columnFamilies:\n - family: family-first\n - family: family-second\n changeStreamRetention: 24h0m0s\n authorizedView:\n type: gcp:bigtable:AuthorizedView\n name: authorized_view\n properties:\n name: tf-authorized-view\n instanceName: ${instance.name}\n tableName: ${table.name}\n subsetView:\n rowPrefixes:\n - fn::invoke:\n Function: std:base64encode\n Arguments:\n input: prefix#\n Return: result\n familySubsets:\n - familyName: family-first\n qualifiers:\n - fn::invoke:\n Function: std:base64encode\n Arguments:\n input: qualifier\n Return: result\n - fn::invoke:\n Function: std:base64encode\n Arguments:\n input: qualifier-second\n Return: result\n - familyName: family-second\n qualifierPrefixes:\n -\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBigtable Authorized Views can be imported using any of these accepted formats:\n\n* `projects/{{project}}/instances/{{instance_name}}/tables/{{table_name}}/authorizedViews/{{name}}`\n\n* `{{project}}/{{instance_name}}/{{table_name}}/{{name}}`\n\n* `{{instance_name}}/{{table_name}}/{{name}}`\n\nWhen using the `pulumi import` command, Bigtable Authorized Views can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigtable/authorizedView:AuthorizedView default projects/{{project}}/instances/{{instance_name}}/tables/{{table_name}}/authorizedViews/{{name}}\n```\n\n```sh\n$ pulumi import gcp:bigtable/authorizedView:AuthorizedView default {{project}}/{{instance_name}}/{{table_name}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:bigtable/authorizedView:AuthorizedView default {{instance_name}}/{{table_name}}/{{name}}\n```\n\n", "properties": { "deletionProtection": { "type": "string" @@ -127015,7 +127015,7 @@ } }, "gcp:bigtable/gCPolicy:GCPolicy": { - "description": "Creates a Google Cloud Bigtable GC Policy inside a family. For more information see\n[the official documentation](https://cloud.google.com/bigtable/) and\n[API](https://cloud.google.com/bigtable/docs/go/reference).\n\n\u003e **Warning**: We don't recommend having multiple GC policies for the same column\nfamily as it may result in unexpected behavior.\n\n\u003e **Note**: GC policies associated with a replicated table cannot be destroyed directly.\nDestroying a GC policy is translated into never perform garbage collection, this is\nconsidered relaxing from pure age-based or version-based GC policy, hence not allowed.\nThe workaround is unreplicating the instance first by updating the instance to have one\ncluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.bigtable.Instance(\"instance\", {\n name: \"tf-instance\",\n clusters: [{\n clusterId: \"tf-instance-cluster\",\n numNodes: 3,\n storageType: \"HDD\",\n }],\n});\nconst table = new gcp.bigtable.Table(\"table\", {\n name: \"tf-table\",\n instanceName: instance.name,\n columnFamilies: [{\n family: \"name\",\n }],\n});\nconst policy = new gcp.bigtable.GCPolicy(\"policy\", {\n instanceName: instance.name,\n table: table.name,\n columnFamily: \"name\",\n deletionPolicy: \"ABANDON\",\n gcRules: ` {\n \"rules\": [\n {\n \"max_age\": \"168h\"\n }\n ]\n }\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.bigtable.Instance(\"instance\",\n name=\"tf-instance\",\n clusters=[{\n \"clusterId\": \"tf-instance-cluster\",\n \"numNodes\": 3,\n \"storageType\": \"HDD\",\n }])\ntable = gcp.bigtable.Table(\"table\",\n name=\"tf-table\",\n instance_name=instance.name,\n column_families=[{\n \"family\": \"name\",\n }])\npolicy = gcp.bigtable.GCPolicy(\"policy\",\n instance_name=instance.name,\n table=table.name,\n column_family=\"name\",\n deletion_policy=\"ABANDON\",\n gc_rules=\"\"\" {\n \"rules\": [\n {\n \"max_age\": \"168h\"\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 instance = new Gcp.BigTable.Instance(\"instance\", new()\n {\n Name = \"tf-instance\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"tf-instance-cluster\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n },\n });\n\n var table = new Gcp.BigTable.Table(\"table\", new()\n {\n Name = \"tf-table\",\n InstanceName = instance.Name,\n ColumnFamilies = new[]\n {\n new Gcp.BigTable.Inputs.TableColumnFamilyArgs\n {\n Family = \"name\",\n },\n },\n });\n\n var policy = new Gcp.BigTable.GCPolicy(\"policy\", new()\n {\n InstanceName = instance.Name,\n Table = table.Name,\n ColumnFamily = \"name\",\n DeletionPolicy = \"ABANDON\",\n GcRules = @\" {\n \"\"rules\"\": [\n {\n \"\"max_age\"\": \"\"168h\"\"\n }\n ]\n }\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewInstance(ctx, \"instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"tf-instance\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"tf-instance-cluster\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\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\ttable, err := bigtable.NewTable(ctx, \"table\", \u0026bigtable.TableArgs{\n\t\t\tName: pulumi.String(\"tf-table\"),\n\t\t\tInstanceName: instance.Name,\n\t\t\tColumnFamilies: bigtable.TableColumnFamilyArray{\n\t\t\t\t\u0026bigtable.TableColumnFamilyArgs{\n\t\t\t\t\tFamily: pulumi.String(\"name\"),\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 = bigtable.NewGCPolicy(ctx, \"policy\", \u0026bigtable.GCPolicyArgs{\n\t\t\tInstanceName: instance.Name,\n\t\t\tTable: table.Name,\n\t\t\tColumnFamily: pulumi.String(\"name\"),\n\t\t\tDeletionPolicy: pulumi.String(\"ABANDON\"),\n\t\t\tGcRules: pulumi.String(` {\n \"rules\": [\n {\n \"max_age\": \"168h\"\n }\n ]\n }\n`),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\nimport com.pulumi.gcp.bigtable.Table;\nimport com.pulumi.gcp.bigtable.TableArgs;\nimport com.pulumi.gcp.bigtable.inputs.TableColumnFamilyArgs;\nimport com.pulumi.gcp.bigtable.GCPolicy;\nimport com.pulumi.gcp.bigtable.GCPolicyArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"tf-instance\")\n .clusters(InstanceClusterArgs.builder()\n .clusterId(\"tf-instance-cluster\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build())\n .build());\n\n var table = new Table(\"table\", TableArgs.builder()\n .name(\"tf-table\")\n .instanceName(instance.name())\n .columnFamilies(TableColumnFamilyArgs.builder()\n .family(\"name\")\n .build())\n .build());\n\n var policy = new GCPolicy(\"policy\", GCPolicyArgs.builder()\n .instanceName(instance.name())\n .table(table.name())\n .columnFamily(\"name\")\n .deletionPolicy(\"ABANDON\")\n .gcRules(\"\"\"\n {\n \"rules\": [\n {\n \"max_age\": \"168h\"\n }\n ]\n }\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:bigtable:Instance\n properties:\n name: tf-instance\n clusters:\n - clusterId: tf-instance-cluster\n numNodes: 3\n storageType: HDD\n table:\n type: gcp:bigtable:Table\n properties:\n name: tf-table\n instanceName: ${instance.name}\n columnFamilies:\n - family: name\n policy:\n type: gcp:bigtable:GCPolicy\n properties:\n instanceName: ${instance.name}\n table: ${table.name}\n columnFamily: name\n deletionPolicy: ABANDON\n gcRules: |2\n {\n \"rules\": [\n {\n \"max_age\": \"168h\"\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nMultiple conditions is also supported. `UNION` when any of its sub-policies apply (OR). `INTERSECTION` when all its sub-policies apply (AND)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst policy = new gcp.bigtable.GCPolicy(\"policy\", {\n instanceName: instance.name,\n table: table.name,\n columnFamily: \"name\",\n deletionPolicy: \"ABANDON\",\n gcRules: ` {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"168h\"\n },\n {\n \"max_version\": 10\n }\n ]\n }\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npolicy = gcp.bigtable.GCPolicy(\"policy\",\n instance_name=instance[\"name\"],\n table=table[\"name\"],\n column_family=\"name\",\n deletion_policy=\"ABANDON\",\n gc_rules=\"\"\" {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"168h\"\n },\n {\n \"max_version\": 10\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 policy = new Gcp.BigTable.GCPolicy(\"policy\", new()\n {\n InstanceName = instance.Name,\n Table = table.Name,\n ColumnFamily = \"name\",\n DeletionPolicy = \"ABANDON\",\n GcRules = @\" {\n \"\"mode\"\": \"\"union\"\",\n \"\"rules\"\": [\n {\n \"\"max_age\"\": \"\"168h\"\"\n },\n {\n \"\"max_version\"\": 10\n }\n ]\n }\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewGCPolicy(ctx, \"policy\", \u0026bigtable.GCPolicyArgs{\n\t\t\tInstanceName: pulumi.Any(instance.Name),\n\t\t\tTable: pulumi.Any(table.Name),\n\t\t\tColumnFamily: pulumi.String(\"name\"),\n\t\t\tDeletionPolicy: pulumi.String(\"ABANDON\"),\n\t\t\tGcRules: pulumi.String(` {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"168h\"\n },\n {\n \"max_version\": 10\n }\n ]\n }\n`),\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.bigtable.GCPolicy;\nimport com.pulumi.gcp.bigtable.GCPolicyArgs;\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 policy = new GCPolicy(\"policy\", GCPolicyArgs.builder()\n .instanceName(instance.name())\n .table(table.name())\n .columnFamily(\"name\")\n .deletionPolicy(\"ABANDON\")\n .gcRules(\"\"\"\n {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"168h\"\n },\n {\n \"max_version\": 10\n }\n ]\n }\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n policy:\n type: gcp:bigtable:GCPolicy\n properties:\n instanceName: ${instance.name}\n table: ${table.name}\n columnFamily: name\n deletionPolicy: ABANDON\n gcRules: |2\n {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"168h\"\n },\n {\n \"max_version\": 10\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nAn example of more complex GC policy:\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.bigtable.Instance(\"instance\", {\n name: \"instance_name\",\n clusters: [{\n clusterId: \"cid\",\n zone: \"us-central1-b\",\n }],\n instanceType: \"DEVELOPMENT\",\n deletionProtection: false,\n});\nconst table = new gcp.bigtable.Table(\"table\", {\n name: \"your-table\",\n instanceName: instance.id,\n columnFamilies: [{\n family: \"cf1\",\n }],\n});\nconst policy = new gcp.bigtable.GCPolicy(\"policy\", {\n instanceName: instance.id,\n table: table.name,\n columnFamily: \"cf1\",\n deletionPolicy: \"ABANDON\",\n gcRules: ` {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"10h\"\n },\n {\n \"mode\": \"intersection\",\n \"rules\": [\n {\n \"max_age\": \"2h\"\n },\n {\n \"max_version\": 2\n }\n ]\n }\n ]\n }\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.bigtable.Instance(\"instance\",\n name=\"instance_name\",\n clusters=[{\n \"clusterId\": \"cid\",\n \"zone\": \"us-central1-b\",\n }],\n instance_type=\"DEVELOPMENT\",\n deletion_protection=False)\ntable = gcp.bigtable.Table(\"table\",\n name=\"your-table\",\n instance_name=instance.id,\n column_families=[{\n \"family\": \"cf1\",\n }])\npolicy = gcp.bigtable.GCPolicy(\"policy\",\n instance_name=instance.id,\n table=table.name,\n column_family=\"cf1\",\n deletion_policy=\"ABANDON\",\n gc_rules=\"\"\" {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"10h\"\n },\n {\n \"mode\": \"intersection\",\n \"rules\": [\n {\n \"max_age\": \"2h\"\n },\n {\n \"max_version\": 2\n }\n ]\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 instance = new Gcp.BigTable.Instance(\"instance\", new()\n {\n Name = \"instance_name\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"cid\",\n Zone = \"us-central1-b\",\n },\n },\n InstanceType = \"DEVELOPMENT\",\n DeletionProtection = false,\n });\n\n var table = new Gcp.BigTable.Table(\"table\", new()\n {\n Name = \"your-table\",\n InstanceName = instance.Id,\n ColumnFamilies = new[]\n {\n new Gcp.BigTable.Inputs.TableColumnFamilyArgs\n {\n Family = \"cf1\",\n },\n },\n });\n\n var policy = new Gcp.BigTable.GCPolicy(\"policy\", new()\n {\n InstanceName = instance.Id,\n Table = table.Name,\n ColumnFamily = \"cf1\",\n DeletionPolicy = \"ABANDON\",\n GcRules = @\" {\n \"\"mode\"\": \"\"union\"\",\n \"\"rules\"\": [\n {\n \"\"max_age\"\": \"\"10h\"\"\n },\n {\n \"\"mode\"\": \"\"intersection\"\",\n \"\"rules\"\": [\n {\n \"\"max_age\"\": \"\"2h\"\"\n },\n {\n \"\"max_version\"\": 2\n }\n ]\n }\n ]\n }\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewInstance(ctx, \"instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance_name\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"cid\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tInstanceType: pulumi.String(\"DEVELOPMENT\"),\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\ttable, err := bigtable.NewTable(ctx, \"table\", \u0026bigtable.TableArgs{\n\t\t\tName: pulumi.String(\"your-table\"),\n\t\t\tInstanceName: instance.ID(),\n\t\t\tColumnFamilies: bigtable.TableColumnFamilyArray{\n\t\t\t\t\u0026bigtable.TableColumnFamilyArgs{\n\t\t\t\t\tFamily: pulumi.String(\"cf1\"),\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 = bigtable.NewGCPolicy(ctx, \"policy\", \u0026bigtable.GCPolicyArgs{\n\t\t\tInstanceName: instance.ID(),\n\t\t\tTable: table.Name,\n\t\t\tColumnFamily: pulumi.String(\"cf1\"),\n\t\t\tDeletionPolicy: pulumi.String(\"ABANDON\"),\n\t\t\tGcRules: pulumi.String(` {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"10h\"\n },\n {\n \"mode\": \"intersection\",\n \"rules\": [\n {\n \"max_age\": \"2h\"\n },\n {\n \"max_version\": 2\n }\n ]\n }\n ]\n }\n`),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\nimport com.pulumi.gcp.bigtable.Table;\nimport com.pulumi.gcp.bigtable.TableArgs;\nimport com.pulumi.gcp.bigtable.inputs.TableColumnFamilyArgs;\nimport com.pulumi.gcp.bigtable.GCPolicy;\nimport com.pulumi.gcp.bigtable.GCPolicyArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"instance_name\")\n .clusters(InstanceClusterArgs.builder()\n .clusterId(\"cid\")\n .zone(\"us-central1-b\")\n .build())\n .instanceType(\"DEVELOPMENT\")\n .deletionProtection(false)\n .build());\n\n var table = new Table(\"table\", TableArgs.builder()\n .name(\"your-table\")\n .instanceName(instance.id())\n .columnFamilies(TableColumnFamilyArgs.builder()\n .family(\"cf1\")\n .build())\n .build());\n\n var policy = new GCPolicy(\"policy\", GCPolicyArgs.builder()\n .instanceName(instance.id())\n .table(table.name())\n .columnFamily(\"cf1\")\n .deletionPolicy(\"ABANDON\")\n .gcRules(\"\"\"\n {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"10h\"\n },\n {\n \"mode\": \"intersection\",\n \"rules\": [\n {\n \"max_age\": \"2h\"\n },\n {\n \"max_version\": 2\n }\n ]\n }\n ]\n }\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:bigtable:Instance\n properties:\n name: instance_name\n clusters:\n - clusterId: cid\n zone: us-central1-b\n instanceType: DEVELOPMENT\n deletionProtection: false\n table:\n type: gcp:bigtable:Table\n properties:\n name: your-table\n instanceName: ${instance.id}\n columnFamilies:\n - family: cf1\n policy:\n type: gcp:bigtable:GCPolicy\n properties:\n instanceName: ${instance.id}\n table: ${table.name}\n columnFamily: cf1\n deletionPolicy: ABANDON\n gcRules: |2\n {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"10h\"\n },\n {\n \"mode\": \"intersection\",\n \"rules\": [\n {\n \"max_age\": \"2h\"\n },\n {\n \"max_version\": 2\n }\n ]\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\nThis is equivalent to running the following `cbt` command:\n```\ncbt setgcpolicy your-table cf1 \"(maxage=2d and maxversions=2) or maxage=10h\"\n```\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "Creates a Google Cloud Bigtable GC Policy inside a family. For more information see\n[the official documentation](https://cloud.google.com/bigtable/) and\n[API](https://cloud.google.com/bigtable/docs/go/reference).\n\n\u003e **Warning**: We don't recommend having multiple GC policies for the same column\nfamily as it may result in unexpected behavior.\n\n\u003e **Note**: GC policies associated with a replicated table cannot be destroyed directly.\nDestroying a GC policy is translated into never perform garbage collection, this is\nconsidered relaxing from pure age-based or version-based GC policy, hence not allowed.\nThe workaround is unreplicating the instance first by updating the instance to have one\ncluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.bigtable.Instance(\"instance\", {\n name: \"tf-instance\",\n clusters: [{\n clusterId: \"tf-instance-cluster\",\n numNodes: 3,\n storageType: \"HDD\",\n }],\n});\nconst table = new gcp.bigtable.Table(\"table\", {\n name: \"tf-table\",\n instanceName: instance.name,\n columnFamilies: [{\n family: \"name\",\n }],\n});\nconst policy = new gcp.bigtable.GCPolicy(\"policy\", {\n instanceName: instance.name,\n table: table.name,\n columnFamily: \"name\",\n deletionPolicy: \"ABANDON\",\n gcRules: ` {\n \"rules\": [\n {\n \"max_age\": \"168h\"\n }\n ]\n }\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.bigtable.Instance(\"instance\",\n name=\"tf-instance\",\n clusters=[{\n \"cluster_id\": \"tf-instance-cluster\",\n \"num_nodes\": 3,\n \"storage_type\": \"HDD\",\n }])\ntable = gcp.bigtable.Table(\"table\",\n name=\"tf-table\",\n instance_name=instance.name,\n column_families=[{\n \"family\": \"name\",\n }])\npolicy = gcp.bigtable.GCPolicy(\"policy\",\n instance_name=instance.name,\n table=table.name,\n column_family=\"name\",\n deletion_policy=\"ABANDON\",\n gc_rules=\"\"\" {\n \"rules\": [\n {\n \"max_age\": \"168h\"\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 instance = new Gcp.BigTable.Instance(\"instance\", new()\n {\n Name = \"tf-instance\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"tf-instance-cluster\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n },\n });\n\n var table = new Gcp.BigTable.Table(\"table\", new()\n {\n Name = \"tf-table\",\n InstanceName = instance.Name,\n ColumnFamilies = new[]\n {\n new Gcp.BigTable.Inputs.TableColumnFamilyArgs\n {\n Family = \"name\",\n },\n },\n });\n\n var policy = new Gcp.BigTable.GCPolicy(\"policy\", new()\n {\n InstanceName = instance.Name,\n Table = table.Name,\n ColumnFamily = \"name\",\n DeletionPolicy = \"ABANDON\",\n GcRules = @\" {\n \"\"rules\"\": [\n {\n \"\"max_age\"\": \"\"168h\"\"\n }\n ]\n }\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewInstance(ctx, \"instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"tf-instance\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"tf-instance-cluster\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\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\ttable, err := bigtable.NewTable(ctx, \"table\", \u0026bigtable.TableArgs{\n\t\t\tName: pulumi.String(\"tf-table\"),\n\t\t\tInstanceName: instance.Name,\n\t\t\tColumnFamilies: bigtable.TableColumnFamilyArray{\n\t\t\t\t\u0026bigtable.TableColumnFamilyArgs{\n\t\t\t\t\tFamily: pulumi.String(\"name\"),\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 = bigtable.NewGCPolicy(ctx, \"policy\", \u0026bigtable.GCPolicyArgs{\n\t\t\tInstanceName: instance.Name,\n\t\t\tTable: table.Name,\n\t\t\tColumnFamily: pulumi.String(\"name\"),\n\t\t\tDeletionPolicy: pulumi.String(\"ABANDON\"),\n\t\t\tGcRules: pulumi.String(` {\n \"rules\": [\n {\n \"max_age\": \"168h\"\n }\n ]\n }\n`),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\nimport com.pulumi.gcp.bigtable.Table;\nimport com.pulumi.gcp.bigtable.TableArgs;\nimport com.pulumi.gcp.bigtable.inputs.TableColumnFamilyArgs;\nimport com.pulumi.gcp.bigtable.GCPolicy;\nimport com.pulumi.gcp.bigtable.GCPolicyArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"tf-instance\")\n .clusters(InstanceClusterArgs.builder()\n .clusterId(\"tf-instance-cluster\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build())\n .build());\n\n var table = new Table(\"table\", TableArgs.builder()\n .name(\"tf-table\")\n .instanceName(instance.name())\n .columnFamilies(TableColumnFamilyArgs.builder()\n .family(\"name\")\n .build())\n .build());\n\n var policy = new GCPolicy(\"policy\", GCPolicyArgs.builder()\n .instanceName(instance.name())\n .table(table.name())\n .columnFamily(\"name\")\n .deletionPolicy(\"ABANDON\")\n .gcRules(\"\"\"\n {\n \"rules\": [\n {\n \"max_age\": \"168h\"\n }\n ]\n }\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:bigtable:Instance\n properties:\n name: tf-instance\n clusters:\n - clusterId: tf-instance-cluster\n numNodes: 3\n storageType: HDD\n table:\n type: gcp:bigtable:Table\n properties:\n name: tf-table\n instanceName: ${instance.name}\n columnFamilies:\n - family: name\n policy:\n type: gcp:bigtable:GCPolicy\n properties:\n instanceName: ${instance.name}\n table: ${table.name}\n columnFamily: name\n deletionPolicy: ABANDON\n gcRules: |2\n {\n \"rules\": [\n {\n \"max_age\": \"168h\"\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nMultiple conditions is also supported. `UNION` when any of its sub-policies apply (OR). `INTERSECTION` when all its sub-policies apply (AND)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst policy = new gcp.bigtable.GCPolicy(\"policy\", {\n instanceName: instance.name,\n table: table.name,\n columnFamily: \"name\",\n deletionPolicy: \"ABANDON\",\n gcRules: ` {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"168h\"\n },\n {\n \"max_version\": 10\n }\n ]\n }\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npolicy = gcp.bigtable.GCPolicy(\"policy\",\n instance_name=instance[\"name\"],\n table=table[\"name\"],\n column_family=\"name\",\n deletion_policy=\"ABANDON\",\n gc_rules=\"\"\" {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"168h\"\n },\n {\n \"max_version\": 10\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 policy = new Gcp.BigTable.GCPolicy(\"policy\", new()\n {\n InstanceName = instance.Name,\n Table = table.Name,\n ColumnFamily = \"name\",\n DeletionPolicy = \"ABANDON\",\n GcRules = @\" {\n \"\"mode\"\": \"\"union\"\",\n \"\"rules\"\": [\n {\n \"\"max_age\"\": \"\"168h\"\"\n },\n {\n \"\"max_version\"\": 10\n }\n ]\n }\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewGCPolicy(ctx, \"policy\", \u0026bigtable.GCPolicyArgs{\n\t\t\tInstanceName: pulumi.Any(instance.Name),\n\t\t\tTable: pulumi.Any(table.Name),\n\t\t\tColumnFamily: pulumi.String(\"name\"),\n\t\t\tDeletionPolicy: pulumi.String(\"ABANDON\"),\n\t\t\tGcRules: pulumi.String(` {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"168h\"\n },\n {\n \"max_version\": 10\n }\n ]\n }\n`),\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.bigtable.GCPolicy;\nimport com.pulumi.gcp.bigtable.GCPolicyArgs;\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 policy = new GCPolicy(\"policy\", GCPolicyArgs.builder()\n .instanceName(instance.name())\n .table(table.name())\n .columnFamily(\"name\")\n .deletionPolicy(\"ABANDON\")\n .gcRules(\"\"\"\n {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"168h\"\n },\n {\n \"max_version\": 10\n }\n ]\n }\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n policy:\n type: gcp:bigtable:GCPolicy\n properties:\n instanceName: ${instance.name}\n table: ${table.name}\n columnFamily: name\n deletionPolicy: ABANDON\n gcRules: |2\n {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"168h\"\n },\n {\n \"max_version\": 10\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nAn example of more complex GC policy:\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.bigtable.Instance(\"instance\", {\n name: \"instance_name\",\n clusters: [{\n clusterId: \"cid\",\n zone: \"us-central1-b\",\n }],\n instanceType: \"DEVELOPMENT\",\n deletionProtection: false,\n});\nconst table = new gcp.bigtable.Table(\"table\", {\n name: \"your-table\",\n instanceName: instance.id,\n columnFamilies: [{\n family: \"cf1\",\n }],\n});\nconst policy = new gcp.bigtable.GCPolicy(\"policy\", {\n instanceName: instance.id,\n table: table.name,\n columnFamily: \"cf1\",\n deletionPolicy: \"ABANDON\",\n gcRules: ` {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"10h\"\n },\n {\n \"mode\": \"intersection\",\n \"rules\": [\n {\n \"max_age\": \"2h\"\n },\n {\n \"max_version\": 2\n }\n ]\n }\n ]\n }\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.bigtable.Instance(\"instance\",\n name=\"instance_name\",\n clusters=[{\n \"cluster_id\": \"cid\",\n \"zone\": \"us-central1-b\",\n }],\n instance_type=\"DEVELOPMENT\",\n deletion_protection=False)\ntable = gcp.bigtable.Table(\"table\",\n name=\"your-table\",\n instance_name=instance.id,\n column_families=[{\n \"family\": \"cf1\",\n }])\npolicy = gcp.bigtable.GCPolicy(\"policy\",\n instance_name=instance.id,\n table=table.name,\n column_family=\"cf1\",\n deletion_policy=\"ABANDON\",\n gc_rules=\"\"\" {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"10h\"\n },\n {\n \"mode\": \"intersection\",\n \"rules\": [\n {\n \"max_age\": \"2h\"\n },\n {\n \"max_version\": 2\n }\n ]\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 instance = new Gcp.BigTable.Instance(\"instance\", new()\n {\n Name = \"instance_name\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"cid\",\n Zone = \"us-central1-b\",\n },\n },\n InstanceType = \"DEVELOPMENT\",\n DeletionProtection = false,\n });\n\n var table = new Gcp.BigTable.Table(\"table\", new()\n {\n Name = \"your-table\",\n InstanceName = instance.Id,\n ColumnFamilies = new[]\n {\n new Gcp.BigTable.Inputs.TableColumnFamilyArgs\n {\n Family = \"cf1\",\n },\n },\n });\n\n var policy = new Gcp.BigTable.GCPolicy(\"policy\", new()\n {\n InstanceName = instance.Id,\n Table = table.Name,\n ColumnFamily = \"cf1\",\n DeletionPolicy = \"ABANDON\",\n GcRules = @\" {\n \"\"mode\"\": \"\"union\"\",\n \"\"rules\"\": [\n {\n \"\"max_age\"\": \"\"10h\"\"\n },\n {\n \"\"mode\"\": \"\"intersection\"\",\n \"\"rules\"\": [\n {\n \"\"max_age\"\": \"\"2h\"\"\n },\n {\n \"\"max_version\"\": 2\n }\n ]\n }\n ]\n }\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewInstance(ctx, \"instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance_name\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"cid\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tInstanceType: pulumi.String(\"DEVELOPMENT\"),\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\ttable, err := bigtable.NewTable(ctx, \"table\", \u0026bigtable.TableArgs{\n\t\t\tName: pulumi.String(\"your-table\"),\n\t\t\tInstanceName: instance.ID(),\n\t\t\tColumnFamilies: bigtable.TableColumnFamilyArray{\n\t\t\t\t\u0026bigtable.TableColumnFamilyArgs{\n\t\t\t\t\tFamily: pulumi.String(\"cf1\"),\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 = bigtable.NewGCPolicy(ctx, \"policy\", \u0026bigtable.GCPolicyArgs{\n\t\t\tInstanceName: instance.ID(),\n\t\t\tTable: table.Name,\n\t\t\tColumnFamily: pulumi.String(\"cf1\"),\n\t\t\tDeletionPolicy: pulumi.String(\"ABANDON\"),\n\t\t\tGcRules: pulumi.String(` {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"10h\"\n },\n {\n \"mode\": \"intersection\",\n \"rules\": [\n {\n \"max_age\": \"2h\"\n },\n {\n \"max_version\": 2\n }\n ]\n }\n ]\n }\n`),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\nimport com.pulumi.gcp.bigtable.Table;\nimport com.pulumi.gcp.bigtable.TableArgs;\nimport com.pulumi.gcp.bigtable.inputs.TableColumnFamilyArgs;\nimport com.pulumi.gcp.bigtable.GCPolicy;\nimport com.pulumi.gcp.bigtable.GCPolicyArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"instance_name\")\n .clusters(InstanceClusterArgs.builder()\n .clusterId(\"cid\")\n .zone(\"us-central1-b\")\n .build())\n .instanceType(\"DEVELOPMENT\")\n .deletionProtection(false)\n .build());\n\n var table = new Table(\"table\", TableArgs.builder()\n .name(\"your-table\")\n .instanceName(instance.id())\n .columnFamilies(TableColumnFamilyArgs.builder()\n .family(\"cf1\")\n .build())\n .build());\n\n var policy = new GCPolicy(\"policy\", GCPolicyArgs.builder()\n .instanceName(instance.id())\n .table(table.name())\n .columnFamily(\"cf1\")\n .deletionPolicy(\"ABANDON\")\n .gcRules(\"\"\"\n {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"10h\"\n },\n {\n \"mode\": \"intersection\",\n \"rules\": [\n {\n \"max_age\": \"2h\"\n },\n {\n \"max_version\": 2\n }\n ]\n }\n ]\n }\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:bigtable:Instance\n properties:\n name: instance_name\n clusters:\n - clusterId: cid\n zone: us-central1-b\n instanceType: DEVELOPMENT\n deletionProtection: false\n table:\n type: gcp:bigtable:Table\n properties:\n name: your-table\n instanceName: ${instance.id}\n columnFamilies:\n - family: cf1\n policy:\n type: gcp:bigtable:GCPolicy\n properties:\n instanceName: ${instance.id}\n table: ${table.name}\n columnFamily: cf1\n deletionPolicy: ABANDON\n gcRules: |2\n {\n \"mode\": \"union\",\n \"rules\": [\n {\n \"max_age\": \"10h\"\n },\n {\n \"mode\": \"intersection\",\n \"rules\": [\n {\n \"max_age\": \"2h\"\n },\n {\n \"max_version\": 2\n }\n ]\n }\n ]\n }\n```\n\u003c!--End PulumiCodeChooser --\u003e\nThis is equivalent to running the following `cbt` command:\n```\ncbt setgcpolicy your-table cf1 \"(maxage=2d and maxversions=2) or maxage=10h\"\n```\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "columnFamily": { "type": "string", @@ -127182,7 +127182,7 @@ } }, "gcp:bigtable/instance:Instance": { - "description": "## +---\n\nsubcategory: \"Cloud Bigtable\"\ndescription: |-\n Creates a Google Bigtable instance.\n---\n\n# gcp.bigtable.Instance\n\nCreates a Google Bigtable instance. For more information see:\n\n* [API documentation](https://cloud.google.com/bigtable/docs/reference/admin/rest/v2/projects.instances.clusters)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/bigtable/docs)\n\n## Example Usage\n\n### Simple Instance\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst production_instance = new gcp.bigtable.Instance(\"production-instance\", {\n name: \"tf-instance\",\n clusters: [{\n clusterId: \"tf-instance-cluster\",\n numNodes: 1,\n storageType: \"HDD\",\n }],\n labels: {\n \"my-label\": \"prod-label\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproduction_instance = gcp.bigtable.Instance(\"production-instance\",\n name=\"tf-instance\",\n clusters=[{\n \"clusterId\": \"tf-instance-cluster\",\n \"numNodes\": 1,\n \"storageType\": \"HDD\",\n }],\n labels={\n \"my-label\": \"prod-label\",\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 production_instance = new Gcp.BigTable.Instance(\"production-instance\", new()\n {\n Name = \"tf-instance\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"tf-instance-cluster\",\n NumNodes = 1,\n StorageType = \"HDD\",\n },\n },\n Labels = \n {\n { \"my-label\", \"prod-label\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewInstance(ctx, \"production-instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"tf-instance\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"tf-instance-cluster\"),\n\t\t\t\t\tNumNodes: pulumi.Int(1),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my-label\": pulumi.String(\"prod-label\"),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\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 production_instance = new Instance(\"production-instance\", InstanceArgs.builder()\n .name(\"tf-instance\")\n .clusters(InstanceClusterArgs.builder()\n .clusterId(\"tf-instance-cluster\")\n .numNodes(1)\n .storageType(\"HDD\")\n .build())\n .labels(Map.of(\"my-label\", \"prod-label\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n production-instance:\n type: gcp:bigtable:Instance\n properties:\n name: tf-instance\n clusters:\n - clusterId: tf-instance-cluster\n numNodes: 1\n storageType: HDD\n labels:\n my-label: prod-label\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Replicated Instance\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst production_instance = new gcp.bigtable.Instance(\"production-instance\", {\n name: \"tf-instance\",\n clusters: [\n {\n clusterId: \"tf-instance-cluster1\",\n numNodes: 1,\n storageType: \"HDD\",\n zone: \"us-central1-c\",\n },\n {\n clusterId: \"tf-instance-cluster2\",\n storageType: \"HDD\",\n zone: \"us-central1-b\",\n autoscalingConfig: {\n minNodes: 1,\n maxNodes: 3,\n cpuTarget: 50,\n },\n },\n ],\n labels: {\n \"my-label\": \"prod-label\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproduction_instance = gcp.bigtable.Instance(\"production-instance\",\n name=\"tf-instance\",\n clusters=[\n {\n \"clusterId\": \"tf-instance-cluster1\",\n \"numNodes\": 1,\n \"storageType\": \"HDD\",\n \"zone\": \"us-central1-c\",\n },\n {\n \"clusterId\": \"tf-instance-cluster2\",\n \"storageType\": \"HDD\",\n \"zone\": \"us-central1-b\",\n \"autoscalingConfig\": {\n \"minNodes\": 1,\n \"maxNodes\": 3,\n \"cpuTarget\": 50,\n },\n },\n ],\n labels={\n \"my-label\": \"prod-label\",\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 production_instance = new Gcp.BigTable.Instance(\"production-instance\", new()\n {\n Name = \"tf-instance\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"tf-instance-cluster1\",\n NumNodes = 1,\n StorageType = \"HDD\",\n Zone = \"us-central1-c\",\n },\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"tf-instance-cluster2\",\n StorageType = \"HDD\",\n Zone = \"us-central1-b\",\n AutoscalingConfig = new Gcp.BigTable.Inputs.InstanceClusterAutoscalingConfigArgs\n {\n MinNodes = 1,\n MaxNodes = 3,\n CpuTarget = 50,\n },\n },\n },\n Labels = \n {\n { \"my-label\", \"prod-label\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewInstance(ctx, \"production-instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"tf-instance\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"tf-instance-cluster1\"),\n\t\t\t\t\tNumNodes: pulumi.Int(1),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"tf-instance-cluster2\"),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t\tAutoscalingConfig: \u0026bigtable.InstanceClusterAutoscalingConfigArgs{\n\t\t\t\t\t\tMinNodes: pulumi.Int(1),\n\t\t\t\t\t\tMaxNodes: pulumi.Int(3),\n\t\t\t\t\t\tCpuTarget: pulumi.Int(50),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my-label\": pulumi.String(\"prod-label\"),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterAutoscalingConfigArgs;\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 production_instance = new Instance(\"production-instance\", InstanceArgs.builder()\n .name(\"tf-instance\")\n .clusters( \n InstanceClusterArgs.builder()\n .clusterId(\"tf-instance-cluster1\")\n .numNodes(1)\n .storageType(\"HDD\")\n .zone(\"us-central1-c\")\n .build(),\n InstanceClusterArgs.builder()\n .clusterId(\"tf-instance-cluster2\")\n .storageType(\"HDD\")\n .zone(\"us-central1-b\")\n .autoscalingConfig(InstanceClusterAutoscalingConfigArgs.builder()\n .minNodes(1)\n .maxNodes(3)\n .cpuTarget(50)\n .build())\n .build())\n .labels(Map.of(\"my-label\", \"prod-label\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n production-instance:\n type: gcp:bigtable:Instance\n properties:\n name: tf-instance\n clusters:\n - clusterId: tf-instance-cluster1\n numNodes: 1\n storageType: HDD\n zone: us-central1-c\n - clusterId: tf-instance-cluster2\n storageType: HDD\n zone: us-central1-b\n autoscalingConfig:\n minNodes: 1\n maxNodes: 3\n cpuTarget: 50\n labels:\n my-label: prod-label\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBigtable Instances can be imported using any of these accepted formats:\n\n* `projects/{{project}}/instances/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Bigtable Instances can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigtable/instance:Instance default projects/{{project}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:bigtable/instance:Instance default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:bigtable/instance:Instance default {{name}}\n```\n\n", + "description": "## +---\n\nsubcategory: \"Cloud Bigtable\"\ndescription: |-\n Creates a Google Bigtable instance.\n---\n\n# gcp.bigtable.Instance\n\nCreates a Google Bigtable instance. For more information see:\n\n* [API documentation](https://cloud.google.com/bigtable/docs/reference/admin/rest/v2/projects.instances.clusters)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/bigtable/docs)\n\n## Example Usage\n\n### Simple Instance\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst production_instance = new gcp.bigtable.Instance(\"production-instance\", {\n name: \"tf-instance\",\n clusters: [{\n clusterId: \"tf-instance-cluster\",\n numNodes: 1,\n storageType: \"HDD\",\n }],\n labels: {\n \"my-label\": \"prod-label\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproduction_instance = gcp.bigtable.Instance(\"production-instance\",\n name=\"tf-instance\",\n clusters=[{\n \"cluster_id\": \"tf-instance-cluster\",\n \"num_nodes\": 1,\n \"storage_type\": \"HDD\",\n }],\n labels={\n \"my-label\": \"prod-label\",\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 production_instance = new Gcp.BigTable.Instance(\"production-instance\", new()\n {\n Name = \"tf-instance\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"tf-instance-cluster\",\n NumNodes = 1,\n StorageType = \"HDD\",\n },\n },\n Labels = \n {\n { \"my-label\", \"prod-label\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewInstance(ctx, \"production-instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"tf-instance\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"tf-instance-cluster\"),\n\t\t\t\t\tNumNodes: pulumi.Int(1),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my-label\": pulumi.String(\"prod-label\"),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\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 production_instance = new Instance(\"production-instance\", InstanceArgs.builder()\n .name(\"tf-instance\")\n .clusters(InstanceClusterArgs.builder()\n .clusterId(\"tf-instance-cluster\")\n .numNodes(1)\n .storageType(\"HDD\")\n .build())\n .labels(Map.of(\"my-label\", \"prod-label\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n production-instance:\n type: gcp:bigtable:Instance\n properties:\n name: tf-instance\n clusters:\n - clusterId: tf-instance-cluster\n numNodes: 1\n storageType: HDD\n labels:\n my-label: prod-label\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Replicated Instance\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst production_instance = new gcp.bigtable.Instance(\"production-instance\", {\n name: \"tf-instance\",\n clusters: [\n {\n clusterId: \"tf-instance-cluster1\",\n numNodes: 1,\n storageType: \"HDD\",\n zone: \"us-central1-c\",\n },\n {\n clusterId: \"tf-instance-cluster2\",\n storageType: \"HDD\",\n zone: \"us-central1-b\",\n autoscalingConfig: {\n minNodes: 1,\n maxNodes: 3,\n cpuTarget: 50,\n },\n },\n ],\n labels: {\n \"my-label\": \"prod-label\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproduction_instance = gcp.bigtable.Instance(\"production-instance\",\n name=\"tf-instance\",\n clusters=[\n {\n \"cluster_id\": \"tf-instance-cluster1\",\n \"num_nodes\": 1,\n \"storage_type\": \"HDD\",\n \"zone\": \"us-central1-c\",\n },\n {\n \"cluster_id\": \"tf-instance-cluster2\",\n \"storage_type\": \"HDD\",\n \"zone\": \"us-central1-b\",\n \"autoscaling_config\": {\n \"min_nodes\": 1,\n \"max_nodes\": 3,\n \"cpu_target\": 50,\n },\n },\n ],\n labels={\n \"my-label\": \"prod-label\",\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 production_instance = new Gcp.BigTable.Instance(\"production-instance\", new()\n {\n Name = \"tf-instance\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"tf-instance-cluster1\",\n NumNodes = 1,\n StorageType = \"HDD\",\n Zone = \"us-central1-c\",\n },\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"tf-instance-cluster2\",\n StorageType = \"HDD\",\n Zone = \"us-central1-b\",\n AutoscalingConfig = new Gcp.BigTable.Inputs.InstanceClusterAutoscalingConfigArgs\n {\n MinNodes = 1,\n MaxNodes = 3,\n CpuTarget = 50,\n },\n },\n },\n Labels = \n {\n { \"my-label\", \"prod-label\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewInstance(ctx, \"production-instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"tf-instance\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"tf-instance-cluster1\"),\n\t\t\t\t\tNumNodes: pulumi.Int(1),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"tf-instance-cluster2\"),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t\tAutoscalingConfig: \u0026bigtable.InstanceClusterAutoscalingConfigArgs{\n\t\t\t\t\t\tMinNodes: pulumi.Int(1),\n\t\t\t\t\t\tMaxNodes: pulumi.Int(3),\n\t\t\t\t\t\tCpuTarget: pulumi.Int(50),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my-label\": pulumi.String(\"prod-label\"),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterAutoscalingConfigArgs;\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 production_instance = new Instance(\"production-instance\", InstanceArgs.builder()\n .name(\"tf-instance\")\n .clusters( \n InstanceClusterArgs.builder()\n .clusterId(\"tf-instance-cluster1\")\n .numNodes(1)\n .storageType(\"HDD\")\n .zone(\"us-central1-c\")\n .build(),\n InstanceClusterArgs.builder()\n .clusterId(\"tf-instance-cluster2\")\n .storageType(\"HDD\")\n .zone(\"us-central1-b\")\n .autoscalingConfig(InstanceClusterAutoscalingConfigArgs.builder()\n .minNodes(1)\n .maxNodes(3)\n .cpuTarget(50)\n .build())\n .build())\n .labels(Map.of(\"my-label\", \"prod-label\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n production-instance:\n type: gcp:bigtable:Instance\n properties:\n name: tf-instance\n clusters:\n - clusterId: tf-instance-cluster1\n numNodes: 1\n storageType: HDD\n zone: us-central1-c\n - clusterId: tf-instance-cluster2\n storageType: HDD\n zone: us-central1-b\n autoscalingConfig:\n minNodes: 1\n maxNodes: 3\n cpuTarget: 50\n labels:\n my-label: prod-label\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBigtable Instances can be imported using any of these accepted formats:\n\n* `projects/{{project}}/instances/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Bigtable Instances can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigtable/instance:Instance default projects/{{project}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:bigtable/instance:Instance default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:bigtable/instance:Instance default {{name}}\n```\n\n", "properties": { "clusters": { "type": "array", @@ -127634,7 +127634,7 @@ } }, "gcp:bigtable/table:Table": { - "description": "Creates a Google Cloud Bigtable table inside an instance. For more information see\n[the official documentation](https://cloud.google.com/bigtable/) and\n[API](https://cloud.google.com/bigtable/docs/go/reference).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.bigtable.Instance(\"instance\", {\n name: \"tf-instance\",\n clusters: [{\n clusterId: \"tf-instance-cluster\",\n zone: \"us-central1-b\",\n numNodes: 3,\n storageType: \"HDD\",\n }],\n});\nconst table = new gcp.bigtable.Table(\"table\", {\n name: \"tf-table\",\n instanceName: instance.name,\n splitKeys: [\n \"a\",\n \"b\",\n \"c\",\n ],\n columnFamilies: [\n {\n family: \"family-first\",\n },\n {\n family: \"family-second\",\n },\n ],\n changeStreamRetention: \"24h0m0s\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.bigtable.Instance(\"instance\",\n name=\"tf-instance\",\n clusters=[{\n \"clusterId\": \"tf-instance-cluster\",\n \"zone\": \"us-central1-b\",\n \"numNodes\": 3,\n \"storageType\": \"HDD\",\n }])\ntable = gcp.bigtable.Table(\"table\",\n name=\"tf-table\",\n instance_name=instance.name,\n split_keys=[\n \"a\",\n \"b\",\n \"c\",\n ],\n column_families=[\n {\n \"family\": \"family-first\",\n },\n {\n \"family\": \"family-second\",\n },\n ],\n change_stream_retention=\"24h0m0s\")\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.BigTable.Instance(\"instance\", new()\n {\n Name = \"tf-instance\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"tf-instance-cluster\",\n Zone = \"us-central1-b\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n },\n });\n\n var table = new Gcp.BigTable.Table(\"table\", new()\n {\n Name = \"tf-table\",\n InstanceName = instance.Name,\n SplitKeys = new[]\n {\n \"a\",\n \"b\",\n \"c\",\n },\n ColumnFamilies = new[]\n {\n new Gcp.BigTable.Inputs.TableColumnFamilyArgs\n {\n Family = \"family-first\",\n },\n new Gcp.BigTable.Inputs.TableColumnFamilyArgs\n {\n Family = \"family-second\",\n },\n },\n ChangeStreamRetention = \"24h0m0s\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewInstance(ctx, \"instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"tf-instance\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"tf-instance-cluster\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\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 = bigtable.NewTable(ctx, \"table\", \u0026bigtable.TableArgs{\n\t\t\tName: pulumi.String(\"tf-table\"),\n\t\t\tInstanceName: instance.Name,\n\t\t\tSplitKeys: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"a\"),\n\t\t\t\tpulumi.String(\"b\"),\n\t\t\t\tpulumi.String(\"c\"),\n\t\t\t},\n\t\t\tColumnFamilies: bigtable.TableColumnFamilyArray{\n\t\t\t\t\u0026bigtable.TableColumnFamilyArgs{\n\t\t\t\t\tFamily: pulumi.String(\"family-first\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigtable.TableColumnFamilyArgs{\n\t\t\t\t\tFamily: pulumi.String(\"family-second\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tChangeStreamRetention: pulumi.String(\"24h0m0s\"),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\nimport com.pulumi.gcp.bigtable.Table;\nimport com.pulumi.gcp.bigtable.TableArgs;\nimport com.pulumi.gcp.bigtable.inputs.TableColumnFamilyArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"tf-instance\")\n .clusters(InstanceClusterArgs.builder()\n .clusterId(\"tf-instance-cluster\")\n .zone(\"us-central1-b\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build())\n .build());\n\n var table = new Table(\"table\", TableArgs.builder()\n .name(\"tf-table\")\n .instanceName(instance.name())\n .splitKeys( \n \"a\",\n \"b\",\n \"c\")\n .columnFamilies( \n TableColumnFamilyArgs.builder()\n .family(\"family-first\")\n .build(),\n TableColumnFamilyArgs.builder()\n .family(\"family-second\")\n .build())\n .changeStreamRetention(\"24h0m0s\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:bigtable:Instance\n properties:\n name: tf-instance\n clusters:\n - clusterId: tf-instance-cluster\n zone: us-central1-b\n numNodes: 3\n storageType: HDD\n table:\n type: gcp:bigtable:Table\n properties:\n name: tf-table\n instanceName: ${instance.name}\n splitKeys:\n - a\n - b\n - c\n columnFamilies:\n - family: family-first\n - family: family-second\n changeStreamRetention: 24h0m0s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n-\u003e **Fields affected by import** The following fields can't be read and will show diffs if set in config when imported: `split_keys`\n\nBigtable Tables can be imported using any of these accepted formats:\n\n* `projects/{{project}}/instances/{{instance_name}}/tables/{{name}}`\n\n* `{{project}}/{{instance_name}}/{{name}}`\n\n* `{{instance_name}}/{{name}}`\n\nWhen using the `pulumi import` command, Bigtable Tables can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigtable/table:Table default projects/{{project}}/instances/{{instance_name}}/tables/{{name}}\n```\n\n```sh\n$ pulumi import gcp:bigtable/table:Table default {{project}}/{{instance_name}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:bigtable/table:Table default {{instance_name}}/{{name}}\n```\n\n", + "description": "Creates a Google Cloud Bigtable table inside an instance. For more information see\n[the official documentation](https://cloud.google.com/bigtable/) and\n[API](https://cloud.google.com/bigtable/docs/go/reference).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.bigtable.Instance(\"instance\", {\n name: \"tf-instance\",\n clusters: [{\n clusterId: \"tf-instance-cluster\",\n zone: \"us-central1-b\",\n numNodes: 3,\n storageType: \"HDD\",\n }],\n});\nconst table = new gcp.bigtable.Table(\"table\", {\n name: \"tf-table\",\n instanceName: instance.name,\n splitKeys: [\n \"a\",\n \"b\",\n \"c\",\n ],\n columnFamilies: [\n {\n family: \"family-first\",\n },\n {\n family: \"family-second\",\n },\n ],\n changeStreamRetention: \"24h0m0s\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.bigtable.Instance(\"instance\",\n name=\"tf-instance\",\n clusters=[{\n \"cluster_id\": \"tf-instance-cluster\",\n \"zone\": \"us-central1-b\",\n \"num_nodes\": 3,\n \"storage_type\": \"HDD\",\n }])\ntable = gcp.bigtable.Table(\"table\",\n name=\"tf-table\",\n instance_name=instance.name,\n split_keys=[\n \"a\",\n \"b\",\n \"c\",\n ],\n column_families=[\n {\n \"family\": \"family-first\",\n },\n {\n \"family\": \"family-second\",\n },\n ],\n change_stream_retention=\"24h0m0s\")\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.BigTable.Instance(\"instance\", new()\n {\n Name = \"tf-instance\",\n Clusters = new[]\n {\n new Gcp.BigTable.Inputs.InstanceClusterArgs\n {\n ClusterId = \"tf-instance-cluster\",\n Zone = \"us-central1-b\",\n NumNodes = 3,\n StorageType = \"HDD\",\n },\n },\n });\n\n var table = new Gcp.BigTable.Table(\"table\", new()\n {\n Name = \"tf-table\",\n InstanceName = instance.Name,\n SplitKeys = new[]\n {\n \"a\",\n \"b\",\n \"c\",\n },\n ColumnFamilies = new[]\n {\n new Gcp.BigTable.Inputs.TableColumnFamilyArgs\n {\n Family = \"family-first\",\n },\n new Gcp.BigTable.Inputs.TableColumnFamilyArgs\n {\n Family = \"family-second\",\n },\n },\n ChangeStreamRetention = \"24h0m0s\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigtable\"\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 := bigtable.NewInstance(ctx, \"instance\", \u0026bigtable.InstanceArgs{\n\t\t\tName: pulumi.String(\"tf-instance\"),\n\t\t\tClusters: bigtable.InstanceClusterArray{\n\t\t\t\t\u0026bigtable.InstanceClusterArgs{\n\t\t\t\t\tClusterId: pulumi.String(\"tf-instance-cluster\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t\tNumNodes: pulumi.Int(3),\n\t\t\t\t\tStorageType: pulumi.String(\"HDD\"),\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 = bigtable.NewTable(ctx, \"table\", \u0026bigtable.TableArgs{\n\t\t\tName: pulumi.String(\"tf-table\"),\n\t\t\tInstanceName: instance.Name,\n\t\t\tSplitKeys: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"a\"),\n\t\t\t\tpulumi.String(\"b\"),\n\t\t\t\tpulumi.String(\"c\"),\n\t\t\t},\n\t\t\tColumnFamilies: bigtable.TableColumnFamilyArray{\n\t\t\t\t\u0026bigtable.TableColumnFamilyArgs{\n\t\t\t\t\tFamily: pulumi.String(\"family-first\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigtable.TableColumnFamilyArgs{\n\t\t\t\t\tFamily: pulumi.String(\"family-second\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tChangeStreamRetention: pulumi.String(\"24h0m0s\"),\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.bigtable.Instance;\nimport com.pulumi.gcp.bigtable.InstanceArgs;\nimport com.pulumi.gcp.bigtable.inputs.InstanceClusterArgs;\nimport com.pulumi.gcp.bigtable.Table;\nimport com.pulumi.gcp.bigtable.TableArgs;\nimport com.pulumi.gcp.bigtable.inputs.TableColumnFamilyArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"tf-instance\")\n .clusters(InstanceClusterArgs.builder()\n .clusterId(\"tf-instance-cluster\")\n .zone(\"us-central1-b\")\n .numNodes(3)\n .storageType(\"HDD\")\n .build())\n .build());\n\n var table = new Table(\"table\", TableArgs.builder()\n .name(\"tf-table\")\n .instanceName(instance.name())\n .splitKeys( \n \"a\",\n \"b\",\n \"c\")\n .columnFamilies( \n TableColumnFamilyArgs.builder()\n .family(\"family-first\")\n .build(),\n TableColumnFamilyArgs.builder()\n .family(\"family-second\")\n .build())\n .changeStreamRetention(\"24h0m0s\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:bigtable:Instance\n properties:\n name: tf-instance\n clusters:\n - clusterId: tf-instance-cluster\n zone: us-central1-b\n numNodes: 3\n storageType: HDD\n table:\n type: gcp:bigtable:Table\n properties:\n name: tf-table\n instanceName: ${instance.name}\n splitKeys:\n - a\n - b\n - c\n columnFamilies:\n - family: family-first\n - family: family-second\n changeStreamRetention: 24h0m0s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n-\u003e **Fields affected by import** The following fields can't be read and will show diffs if set in config when imported: `split_keys`\n\nBigtable Tables can be imported using any of these accepted formats:\n\n* `projects/{{project}}/instances/{{instance_name}}/tables/{{name}}`\n\n* `{{project}}/{{instance_name}}/{{name}}`\n\n* `{{instance_name}}/{{name}}`\n\nWhen using the `pulumi import` command, Bigtable Tables can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigtable/table:Table default projects/{{project}}/instances/{{instance_name}}/tables/{{name}}\n```\n\n```sh\n$ pulumi import gcp:bigtable/table:Table default {{project}}/{{instance_name}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:bigtable/table:Table default {{instance_name}}/{{name}}\n```\n\n", "properties": { "automatedBackupPolicy": { "$ref": "#/types/gcp:bigtable/TableAutomatedBackupPolicy:TableAutomatedBackupPolicy", @@ -128338,7 +128338,7 @@ } }, "gcp:billing/budget:Budget": { - "description": "Budget configuration for a billing account.\n\n\nTo get more information about Budget, see:\n\n* [API documentation](https://cloud.google.com/billing/docs/reference/budget/rest/v1/billingAccounts.budgets)\n* How-to Guides\n * [Creating a budget](https://cloud.google.com/billing/docs/how-to/budgets)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the Billing Budgets API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Billing Budget Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n thresholdRules: [{\n thresholdPercent: 0.5,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n amount={\n \"specifiedAmount\": {\n \"currencyCode\": \"USD\",\n \"units\": \"100000\",\n },\n },\n threshold_rules=[{\n \"thresholdPercent\": 0.5,\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 account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.5,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.5),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\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 account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .thresholdRules(BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.5)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n thresholdRules:\n - thresholdPercent: 0.5\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Lastperiod\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n },\n amount: {\n lastPeriodAmount: true,\n },\n thresholdRules: [{\n thresholdPercent: 10,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n },\n amount={\n \"lastPeriodAmount\": True,\n },\n threshold_rules=[{\n \"thresholdPercent\": 10,\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 account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n LastPeriodAmount = true,\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 10,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\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\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tLastPeriodAmount: pulumi.Bool(true),\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(10),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\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 account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .amount(BudgetAmountArgs.builder()\n .lastPeriodAmount(true)\n .build())\n .thresholdRules(BudgetThresholdRuleArgs.builder()\n .thresholdPercent(10)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n amount:\n lastPeriodAmount: true\n thresholdRules:\n - thresholdPercent: 10\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Filter\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n creditTypesTreatment: \"INCLUDE_SPECIFIED_CREDITS\",\n services: [\"services/24E6-581D-38E5\"],\n creditTypes: [\n \"PROMOTION\",\n \"FREE_TIER\",\n ],\n resourceAncestors: [\"organizations/123456789\"],\n },\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n thresholdRules: [\n {\n thresholdPercent: 0.5,\n },\n {\n thresholdPercent: 0.9,\n spendBasis: \"FORECASTED_SPEND\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n \"creditTypesTreatment\": \"INCLUDE_SPECIFIED_CREDITS\",\n \"services\": [\"services/24E6-581D-38E5\"],\n \"creditTypes\": [\n \"PROMOTION\",\n \"FREE_TIER\",\n ],\n \"resourceAncestors\": [\"organizations/123456789\"],\n },\n amount={\n \"specifiedAmount\": {\n \"currencyCode\": \"USD\",\n \"units\": \"100000\",\n },\n },\n threshold_rules=[\n {\n \"thresholdPercent\": 0.5,\n },\n {\n \"thresholdPercent\": 0.9,\n \"spendBasis\": \"FORECASTED_SPEND\",\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 account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n CreditTypesTreatment = \"INCLUDE_SPECIFIED_CREDITS\",\n Services = new[]\n {\n \"services/24E6-581D-38E5\",\n },\n CreditTypes = new[]\n {\n \"PROMOTION\",\n \"FREE_TIER\",\n },\n ResourceAncestors = new[]\n {\n \"organizations/123456789\",\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.5,\n },\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.9,\n SpendBasis = \"FORECASTED_SPEND\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\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\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t\t},\n\t\t\t\tCreditTypesTreatment: pulumi.String(\"INCLUDE_SPECIFIED_CREDITS\"),\n\t\t\t\tServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"services/24E6-581D-38E5\"),\n\t\t\t\t},\n\t\t\t\tCreditTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"PROMOTION\"),\n\t\t\t\t\tpulumi.String(\"FREE_TIER\"),\n\t\t\t\t},\n\t\t\t\tResourceAncestors: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"organizations/123456789\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.5),\n\t\t\t\t},\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.9),\n\t\t\t\t\tSpendBasis: pulumi.String(\"FORECASTED_SPEND\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\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 account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .creditTypesTreatment(\"INCLUDE_SPECIFIED_CREDITS\")\n .services(\"services/24E6-581D-38E5\")\n .creditTypes( \n \"PROMOTION\",\n \"FREE_TIER\")\n .resourceAncestors(\"organizations/123456789\")\n .build())\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .thresholdRules( \n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.5)\n .build(),\n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.9)\n .spendBasis(\"FORECASTED_SPEND\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n creditTypesTreatment: INCLUDE_SPECIFIED_CREDITS\n services:\n - services/24E6-581D-38E5\n creditTypes:\n - PROMOTION\n - FREE_TIER\n resourceAncestors:\n - organizations/123456789\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n thresholdRules:\n - thresholdPercent: 0.5\n - thresholdPercent: 0.9\n spendBasis: FORECASTED_SPEND\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Notify\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst notificationChannel = new gcp.monitoring.NotificationChannel(\"notification_channel\", {\n displayName: \"Example Notification Channel\",\n type: \"email\",\n labels: {\n email_address: \"address@example.com\",\n },\n});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n },\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n thresholdRules: [\n {\n thresholdPercent: 1,\n },\n {\n thresholdPercent: 1,\n spendBasis: \"FORECASTED_SPEND\",\n },\n ],\n allUpdatesRule: {\n monitoringNotificationChannels: [notificationChannel.id],\n disableDefaultIamRecipients: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nnotification_channel = gcp.monitoring.NotificationChannel(\"notification_channel\",\n display_name=\"Example Notification Channel\",\n type=\"email\",\n labels={\n \"email_address\": \"address@example.com\",\n })\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n },\n amount={\n \"specifiedAmount\": {\n \"currencyCode\": \"USD\",\n \"units\": \"100000\",\n },\n },\n threshold_rules=[\n {\n \"thresholdPercent\": 1,\n },\n {\n \"thresholdPercent\": 1,\n \"spendBasis\": \"FORECASTED_SPEND\",\n },\n ],\n all_updates_rule={\n \"monitoringNotificationChannels\": [notification_channel.id],\n \"disableDefaultIamRecipients\": 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 account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var notificationChannel = new Gcp.Monitoring.NotificationChannel(\"notification_channel\", new()\n {\n DisplayName = \"Example Notification Channel\",\n Type = \"email\",\n Labels = \n {\n { \"email_address\", \"address@example.com\" },\n },\n });\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 1,\n },\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 1,\n SpendBasis = \"FORECASTED_SPEND\",\n },\n },\n AllUpdatesRule = new Gcp.Billing.Inputs.BudgetAllUpdatesRuleArgs\n {\n MonitoringNotificationChannels = new[]\n {\n notificationChannel.Id,\n },\n DisableDefaultIamRecipients = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\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\tnotificationChannel, err := monitoring.NewNotificationChannel(ctx, \"notification_channel\", \u0026monitoring.NotificationChannelArgs{\n\t\t\tDisplayName: pulumi.String(\"Example Notification Channel\"),\n\t\t\tType: pulumi.String(\"email\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"email_address\": pulumi.String(\"address@example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(1),\n\t\t\t\t},\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(1),\n\t\t\t\t\tSpendBasis: pulumi.String(\"FORECASTED_SPEND\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllUpdatesRule: \u0026billing.BudgetAllUpdatesRuleArgs{\n\t\t\t\tMonitoringNotificationChannels: pulumi.StringArray{\n\t\t\t\t\tnotificationChannel.ID(),\n\t\t\t\t},\n\t\t\t\tDisableDefaultIamRecipients: 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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.monitoring.NotificationChannel;\nimport com.pulumi.gcp.monitoring.NotificationChannelArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAllUpdatesRuleArgs;\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 account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var notificationChannel = new NotificationChannel(\"notificationChannel\", NotificationChannelArgs.builder()\n .displayName(\"Example Notification Channel\")\n .type(\"email\")\n .labels(Map.of(\"email_address\", \"address@example.com\"))\n .build());\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .thresholdRules( \n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(1)\n .build(),\n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(1)\n .spendBasis(\"FORECASTED_SPEND\")\n .build())\n .allUpdatesRule(BudgetAllUpdatesRuleArgs.builder()\n .monitoringNotificationChannels(notificationChannel.id())\n .disableDefaultIamRecipients(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n thresholdRules:\n - thresholdPercent: 1\n - thresholdPercent: 1\n spendBasis: FORECASTED_SPEND\n allUpdatesRule:\n monitoringNotificationChannels:\n - ${notificationChannel.id}\n disableDefaultIamRecipients: true\n notificationChannel:\n type: gcp:monitoring:NotificationChannel\n name: notification_channel\n properties:\n displayName: Example Notification Channel\n type: email\n labels:\n email_address: address@example.com\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Notify Project Recipient\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n },\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n allUpdatesRule: {\n monitoringNotificationChannels: [],\n enableProjectLevelRecipients: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n },\n amount={\n \"specifiedAmount\": {\n \"currencyCode\": \"USD\",\n \"units\": \"100000\",\n },\n },\n all_updates_rule={\n \"monitoringNotificationChannels\": [],\n \"enableProjectLevelRecipients\": 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 account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n AllUpdatesRule = new Gcp.Billing.Inputs.BudgetAllUpdatesRuleArgs\n {\n MonitoringNotificationChannels = new() { },\n EnableProjectLevelRecipients = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\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\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllUpdatesRule: \u0026billing.BudgetAllUpdatesRuleArgs{\n\t\t\t\tMonitoringNotificationChannels: pulumi.StringArray{},\n\t\t\t\tEnableProjectLevelRecipients: 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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAllUpdatesRuleArgs;\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 account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .allUpdatesRule(BudgetAllUpdatesRuleArgs.builder()\n .monitoringNotificationChannels()\n .enableProjectLevelRecipients(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n allUpdatesRule:\n monitoringNotificationChannels: []\n enableProjectLevelRecipients: true\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Customperiod\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n creditTypesTreatment: \"EXCLUDE_ALL_CREDITS\",\n services: [\"services/24E6-581D-38E5\"],\n customPeriod: {\n startDate: {\n year: 2022,\n month: 1,\n day: 1,\n },\n endDate: {\n year: 2023,\n month: 12,\n day: 31,\n },\n },\n },\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n thresholdRules: [\n {\n thresholdPercent: 0.5,\n },\n {\n thresholdPercent: 0.9,\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n \"creditTypesTreatment\": \"EXCLUDE_ALL_CREDITS\",\n \"services\": [\"services/24E6-581D-38E5\"],\n \"customPeriod\": {\n \"startDate\": {\n \"year\": 2022,\n \"month\": 1,\n \"day\": 1,\n },\n \"endDate\": {\n \"year\": 2023,\n \"month\": 12,\n \"day\": 31,\n },\n },\n },\n amount={\n \"specifiedAmount\": {\n \"currencyCode\": \"USD\",\n \"units\": \"100000\",\n },\n },\n threshold_rules=[\n {\n \"thresholdPercent\": 0.5,\n },\n {\n \"thresholdPercent\": 0.9,\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 account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n CreditTypesTreatment = \"EXCLUDE_ALL_CREDITS\",\n Services = new[]\n {\n \"services/24E6-581D-38E5\",\n },\n CustomPeriod = new Gcp.Billing.Inputs.BudgetBudgetFilterCustomPeriodArgs\n {\n StartDate = new Gcp.Billing.Inputs.BudgetBudgetFilterCustomPeriodStartDateArgs\n {\n Year = 2022,\n Month = 1,\n Day = 1,\n },\n EndDate = new Gcp.Billing.Inputs.BudgetBudgetFilterCustomPeriodEndDateArgs\n {\n Year = 2023,\n Month = 12,\n Day = 31,\n },\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.5,\n },\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.9,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\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\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t\t},\n\t\t\t\tCreditTypesTreatment: pulumi.String(\"EXCLUDE_ALL_CREDITS\"),\n\t\t\t\tServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"services/24E6-581D-38E5\"),\n\t\t\t\t},\n\t\t\t\tCustomPeriod: \u0026billing.BudgetBudgetFilterCustomPeriodArgs{\n\t\t\t\t\tStartDate: \u0026billing.BudgetBudgetFilterCustomPeriodStartDateArgs{\n\t\t\t\t\t\tYear: pulumi.Int(2022),\n\t\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\tEndDate: \u0026billing.BudgetBudgetFilterCustomPeriodEndDateArgs{\n\t\t\t\t\t\tYear: pulumi.Int(2023),\n\t\t\t\t\t\tMonth: pulumi.Int(12),\n\t\t\t\t\t\tDay: pulumi.Int(31),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.5),\n\t\t\t\t},\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.9),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterCustomPeriodArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterCustomPeriodStartDateArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterCustomPeriodEndDateArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\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 account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .creditTypesTreatment(\"EXCLUDE_ALL_CREDITS\")\n .services(\"services/24E6-581D-38E5\")\n .customPeriod(BudgetBudgetFilterCustomPeriodArgs.builder()\n .startDate(BudgetBudgetFilterCustomPeriodStartDateArgs.builder()\n .year(2022)\n .month(1)\n .day(1)\n .build())\n .endDate(BudgetBudgetFilterCustomPeriodEndDateArgs.builder()\n .year(2023)\n .month(12)\n .day(31)\n .build())\n .build())\n .build())\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .thresholdRules( \n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.5)\n .build(),\n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.9)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n creditTypesTreatment: EXCLUDE_ALL_CREDITS\n services:\n - services/24E6-581D-38E5\n customPeriod:\n startDate:\n year: 2022\n month: 1\n day: 1\n endDate:\n year: 2023\n month: 12\n day: 31\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n thresholdRules:\n - thresholdPercent: 0.5\n - thresholdPercent: 0.9\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBudget can be imported using any of these accepted formats:\n\n* `billingAccounts/{{billing_account}}/budgets/{{name}}`\n\n* `{{billing_account}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Budget can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:billing/budget:Budget default billingAccounts/{{billing_account}}/budgets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:billing/budget:Budget default {{billing_account}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:billing/budget:Budget default {{name}}\n```\n\n", + "description": "Budget configuration for a billing account.\n\n\nTo get more information about Budget, see:\n\n* [API documentation](https://cloud.google.com/billing/docs/reference/budget/rest/v1/billingAccounts.budgets)\n* How-to Guides\n * [Creating a budget](https://cloud.google.com/billing/docs/how-to/budgets)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the Billing Budgets API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Billing Budget Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n thresholdRules: [{\n thresholdPercent: 0.5,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n amount={\n \"specified_amount\": {\n \"currency_code\": \"USD\",\n \"units\": \"100000\",\n },\n },\n threshold_rules=[{\n \"threshold_percent\": 0.5,\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 account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.5,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.5),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\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 account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .thresholdRules(BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.5)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n thresholdRules:\n - thresholdPercent: 0.5\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Lastperiod\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n },\n amount: {\n lastPeriodAmount: true,\n },\n thresholdRules: [{\n thresholdPercent: 10,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n },\n amount={\n \"last_period_amount\": True,\n },\n threshold_rules=[{\n \"threshold_percent\": 10,\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 account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n LastPeriodAmount = true,\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 10,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\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\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tLastPeriodAmount: pulumi.Bool(true),\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(10),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\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 account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .amount(BudgetAmountArgs.builder()\n .lastPeriodAmount(true)\n .build())\n .thresholdRules(BudgetThresholdRuleArgs.builder()\n .thresholdPercent(10)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n amount:\n lastPeriodAmount: true\n thresholdRules:\n - thresholdPercent: 10\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Filter\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n creditTypesTreatment: \"INCLUDE_SPECIFIED_CREDITS\",\n services: [\"services/24E6-581D-38E5\"],\n creditTypes: [\n \"PROMOTION\",\n \"FREE_TIER\",\n ],\n resourceAncestors: [\"organizations/123456789\"],\n },\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n thresholdRules: [\n {\n thresholdPercent: 0.5,\n },\n {\n thresholdPercent: 0.9,\n spendBasis: \"FORECASTED_SPEND\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n \"credit_types_treatment\": \"INCLUDE_SPECIFIED_CREDITS\",\n \"services\": [\"services/24E6-581D-38E5\"],\n \"credit_types\": [\n \"PROMOTION\",\n \"FREE_TIER\",\n ],\n \"resource_ancestors\": [\"organizations/123456789\"],\n },\n amount={\n \"specified_amount\": {\n \"currency_code\": \"USD\",\n \"units\": \"100000\",\n },\n },\n threshold_rules=[\n {\n \"threshold_percent\": 0.5,\n },\n {\n \"threshold_percent\": 0.9,\n \"spend_basis\": \"FORECASTED_SPEND\",\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 account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n CreditTypesTreatment = \"INCLUDE_SPECIFIED_CREDITS\",\n Services = new[]\n {\n \"services/24E6-581D-38E5\",\n },\n CreditTypes = new[]\n {\n \"PROMOTION\",\n \"FREE_TIER\",\n },\n ResourceAncestors = new[]\n {\n \"organizations/123456789\",\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.5,\n },\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.9,\n SpendBasis = \"FORECASTED_SPEND\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\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\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t\t},\n\t\t\t\tCreditTypesTreatment: pulumi.String(\"INCLUDE_SPECIFIED_CREDITS\"),\n\t\t\t\tServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"services/24E6-581D-38E5\"),\n\t\t\t\t},\n\t\t\t\tCreditTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"PROMOTION\"),\n\t\t\t\t\tpulumi.String(\"FREE_TIER\"),\n\t\t\t\t},\n\t\t\t\tResourceAncestors: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"organizations/123456789\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.5),\n\t\t\t\t},\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.9),\n\t\t\t\t\tSpendBasis: pulumi.String(\"FORECASTED_SPEND\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\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 account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .creditTypesTreatment(\"INCLUDE_SPECIFIED_CREDITS\")\n .services(\"services/24E6-581D-38E5\")\n .creditTypes( \n \"PROMOTION\",\n \"FREE_TIER\")\n .resourceAncestors(\"organizations/123456789\")\n .build())\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .thresholdRules( \n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.5)\n .build(),\n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.9)\n .spendBasis(\"FORECASTED_SPEND\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n creditTypesTreatment: INCLUDE_SPECIFIED_CREDITS\n services:\n - services/24E6-581D-38E5\n creditTypes:\n - PROMOTION\n - FREE_TIER\n resourceAncestors:\n - organizations/123456789\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n thresholdRules:\n - thresholdPercent: 0.5\n - thresholdPercent: 0.9\n spendBasis: FORECASTED_SPEND\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Notify\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst notificationChannel = new gcp.monitoring.NotificationChannel(\"notification_channel\", {\n displayName: \"Example Notification Channel\",\n type: \"email\",\n labels: {\n email_address: \"address@example.com\",\n },\n});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n },\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n thresholdRules: [\n {\n thresholdPercent: 1,\n },\n {\n thresholdPercent: 1,\n spendBasis: \"FORECASTED_SPEND\",\n },\n ],\n allUpdatesRule: {\n monitoringNotificationChannels: [notificationChannel.id],\n disableDefaultIamRecipients: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nnotification_channel = gcp.monitoring.NotificationChannel(\"notification_channel\",\n display_name=\"Example Notification Channel\",\n type=\"email\",\n labels={\n \"email_address\": \"address@example.com\",\n })\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n },\n amount={\n \"specified_amount\": {\n \"currency_code\": \"USD\",\n \"units\": \"100000\",\n },\n },\n threshold_rules=[\n {\n \"threshold_percent\": 1,\n },\n {\n \"threshold_percent\": 1,\n \"spend_basis\": \"FORECASTED_SPEND\",\n },\n ],\n all_updates_rule={\n \"monitoring_notification_channels\": [notification_channel.id],\n \"disable_default_iam_recipients\": 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 account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var notificationChannel = new Gcp.Monitoring.NotificationChannel(\"notification_channel\", new()\n {\n DisplayName = \"Example Notification Channel\",\n Type = \"email\",\n Labels = \n {\n { \"email_address\", \"address@example.com\" },\n },\n });\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 1,\n },\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 1,\n SpendBasis = \"FORECASTED_SPEND\",\n },\n },\n AllUpdatesRule = new Gcp.Billing.Inputs.BudgetAllUpdatesRuleArgs\n {\n MonitoringNotificationChannels = new[]\n {\n notificationChannel.Id,\n },\n DisableDefaultIamRecipients = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\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\tnotificationChannel, err := monitoring.NewNotificationChannel(ctx, \"notification_channel\", \u0026monitoring.NotificationChannelArgs{\n\t\t\tDisplayName: pulumi.String(\"Example Notification Channel\"),\n\t\t\tType: pulumi.String(\"email\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"email_address\": pulumi.String(\"address@example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(1),\n\t\t\t\t},\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(1),\n\t\t\t\t\tSpendBasis: pulumi.String(\"FORECASTED_SPEND\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllUpdatesRule: \u0026billing.BudgetAllUpdatesRuleArgs{\n\t\t\t\tMonitoringNotificationChannels: pulumi.StringArray{\n\t\t\t\t\tnotificationChannel.ID(),\n\t\t\t\t},\n\t\t\t\tDisableDefaultIamRecipients: 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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.monitoring.NotificationChannel;\nimport com.pulumi.gcp.monitoring.NotificationChannelArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAllUpdatesRuleArgs;\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 account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var notificationChannel = new NotificationChannel(\"notificationChannel\", NotificationChannelArgs.builder()\n .displayName(\"Example Notification Channel\")\n .type(\"email\")\n .labels(Map.of(\"email_address\", \"address@example.com\"))\n .build());\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .thresholdRules( \n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(1)\n .build(),\n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(1)\n .spendBasis(\"FORECASTED_SPEND\")\n .build())\n .allUpdatesRule(BudgetAllUpdatesRuleArgs.builder()\n .monitoringNotificationChannels(notificationChannel.id())\n .disableDefaultIamRecipients(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n thresholdRules:\n - thresholdPercent: 1\n - thresholdPercent: 1\n spendBasis: FORECASTED_SPEND\n allUpdatesRule:\n monitoringNotificationChannels:\n - ${notificationChannel.id}\n disableDefaultIamRecipients: true\n notificationChannel:\n type: gcp:monitoring:NotificationChannel\n name: notification_channel\n properties:\n displayName: Example Notification Channel\n type: email\n labels:\n email_address: address@example.com\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Notify Project Recipient\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n },\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n allUpdatesRule: {\n monitoringNotificationChannels: [],\n enableProjectLevelRecipients: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n },\n amount={\n \"specified_amount\": {\n \"currency_code\": \"USD\",\n \"units\": \"100000\",\n },\n },\n all_updates_rule={\n \"monitoring_notification_channels\": [],\n \"enable_project_level_recipients\": 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 account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n AllUpdatesRule = new Gcp.Billing.Inputs.BudgetAllUpdatesRuleArgs\n {\n MonitoringNotificationChannels = new() { },\n EnableProjectLevelRecipients = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\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\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllUpdatesRule: \u0026billing.BudgetAllUpdatesRuleArgs{\n\t\t\t\tMonitoringNotificationChannels: pulumi.StringArray{},\n\t\t\t\tEnableProjectLevelRecipients: 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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAllUpdatesRuleArgs;\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 account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .allUpdatesRule(BudgetAllUpdatesRuleArgs.builder()\n .monitoringNotificationChannels()\n .enableProjectLevelRecipients(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n allUpdatesRule:\n monitoringNotificationChannels: []\n enableProjectLevelRecipients: true\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Customperiod\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n creditTypesTreatment: \"EXCLUDE_ALL_CREDITS\",\n services: [\"services/24E6-581D-38E5\"],\n customPeriod: {\n startDate: {\n year: 2022,\n month: 1,\n day: 1,\n },\n endDate: {\n year: 2023,\n month: 12,\n day: 31,\n },\n },\n },\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n thresholdRules: [\n {\n thresholdPercent: 0.5,\n },\n {\n thresholdPercent: 0.9,\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n \"credit_types_treatment\": \"EXCLUDE_ALL_CREDITS\",\n \"services\": [\"services/24E6-581D-38E5\"],\n \"custom_period\": {\n \"start_date\": {\n \"year\": 2022,\n \"month\": 1,\n \"day\": 1,\n },\n \"end_date\": {\n \"year\": 2023,\n \"month\": 12,\n \"day\": 31,\n },\n },\n },\n amount={\n \"specified_amount\": {\n \"currency_code\": \"USD\",\n \"units\": \"100000\",\n },\n },\n threshold_rules=[\n {\n \"threshold_percent\": 0.5,\n },\n {\n \"threshold_percent\": 0.9,\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 account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n CreditTypesTreatment = \"EXCLUDE_ALL_CREDITS\",\n Services = new[]\n {\n \"services/24E6-581D-38E5\",\n },\n CustomPeriod = new Gcp.Billing.Inputs.BudgetBudgetFilterCustomPeriodArgs\n {\n StartDate = new Gcp.Billing.Inputs.BudgetBudgetFilterCustomPeriodStartDateArgs\n {\n Year = 2022,\n Month = 1,\n Day = 1,\n },\n EndDate = new Gcp.Billing.Inputs.BudgetBudgetFilterCustomPeriodEndDateArgs\n {\n Year = 2023,\n Month = 12,\n Day = 31,\n },\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.5,\n },\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.9,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\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\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t\t},\n\t\t\t\tCreditTypesTreatment: pulumi.String(\"EXCLUDE_ALL_CREDITS\"),\n\t\t\t\tServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"services/24E6-581D-38E5\"),\n\t\t\t\t},\n\t\t\t\tCustomPeriod: \u0026billing.BudgetBudgetFilterCustomPeriodArgs{\n\t\t\t\t\tStartDate: \u0026billing.BudgetBudgetFilterCustomPeriodStartDateArgs{\n\t\t\t\t\t\tYear: pulumi.Int(2022),\n\t\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\tEndDate: \u0026billing.BudgetBudgetFilterCustomPeriodEndDateArgs{\n\t\t\t\t\t\tYear: pulumi.Int(2023),\n\t\t\t\t\t\tMonth: pulumi.Int(12),\n\t\t\t\t\t\tDay: pulumi.Int(31),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.5),\n\t\t\t\t},\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.9),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterCustomPeriodArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterCustomPeriodStartDateArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterCustomPeriodEndDateArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\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 account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .creditTypesTreatment(\"EXCLUDE_ALL_CREDITS\")\n .services(\"services/24E6-581D-38E5\")\n .customPeriod(BudgetBudgetFilterCustomPeriodArgs.builder()\n .startDate(BudgetBudgetFilterCustomPeriodStartDateArgs.builder()\n .year(2022)\n .month(1)\n .day(1)\n .build())\n .endDate(BudgetBudgetFilterCustomPeriodEndDateArgs.builder()\n .year(2023)\n .month(12)\n .day(31)\n .build())\n .build())\n .build())\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .thresholdRules( \n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.5)\n .build(),\n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.9)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n creditTypesTreatment: EXCLUDE_ALL_CREDITS\n services:\n - services/24E6-581D-38E5\n customPeriod:\n startDate:\n year: 2022\n month: 1\n day: 1\n endDate:\n year: 2023\n month: 12\n day: 31\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n thresholdRules:\n - thresholdPercent: 0.5\n - thresholdPercent: 0.9\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBudget can be imported using any of these accepted formats:\n\n* `billingAccounts/{{billing_account}}/budgets/{{name}}`\n\n* `{{billing_account}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Budget can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:billing/budget:Budget default billingAccounts/{{billing_account}}/budgets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:billing/budget:Budget default {{billing_account}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:billing/budget:Budget default {{name}}\n```\n\n", "properties": { "allUpdatesRule": { "$ref": "#/types/gcp:billing/BudgetAllUpdatesRule:BudgetAllUpdatesRule", @@ -128596,7 +128596,7 @@ } }, "gcp:binaryauthorization/attestor:Attestor": { - "description": "An attestor that attests to container image artifacts.\n\n\nTo get more information about Attestor, see:\n\n* [API documentation](https://cloud.google.com/binary-authorization/docs/reference/rest/)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/binary-authorization/)\n\n## Example Usage\n\n### Binary Authorization Attestor Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst note = new gcp.containeranalysis.Note(\"note\", {\n name: \"test-attestor-note\",\n attestationAuthority: {\n hint: {\n humanReadableName: \"Attestor Note\",\n },\n },\n});\nconst attestor = new gcp.binaryauthorization.Attestor(\"attestor\", {\n name: \"test-attestor\",\n attestationAuthorityNote: {\n noteReference: note.name,\n publicKeys: [{\n asciiArmoredPgpPublicKey: `mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\n`,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnote = gcp.containeranalysis.Note(\"note\",\n name=\"test-attestor-note\",\n attestation_authority={\n \"hint\": {\n \"humanReadableName\": \"Attestor Note\",\n },\n })\nattestor = gcp.binaryauthorization.Attestor(\"attestor\",\n name=\"test-attestor\",\n attestation_authority_note={\n \"noteReference\": note.name,\n \"publicKeys\": [{\n \"asciiArmoredPgpPublicKey\": \"\"\"mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\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 note = new Gcp.ContainerAnalysis.Note(\"note\", new()\n {\n Name = \"test-attestor-note\",\n AttestationAuthority = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityArgs\n {\n Hint = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityHintArgs\n {\n HumanReadableName = \"Attestor Note\",\n },\n },\n });\n\n var attestor = new Gcp.BinaryAuthorization.Attestor(\"attestor\", new()\n {\n Name = \"test-attestor\",\n AttestationAuthorityNote = new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNoteArgs\n {\n NoteReference = note.Name,\n PublicKeys = new[]\n {\n new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNotePublicKeyArgs\n {\n AsciiArmoredPgpPublicKey = @\"mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\n\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/binaryauthorization\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/containeranalysis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnote, err := containeranalysis.NewNote(ctx, \"note\", \u0026containeranalysis.NoteArgs{\n\t\t\tName: pulumi.String(\"test-attestor-note\"),\n\t\t\tAttestationAuthority: \u0026containeranalysis.NoteAttestationAuthorityArgs{\n\t\t\t\tHint: \u0026containeranalysis.NoteAttestationAuthorityHintArgs{\n\t\t\t\t\tHumanReadableName: pulumi.String(\"Attestor Note\"),\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 = binaryauthorization.NewAttestor(ctx, \"attestor\", \u0026binaryauthorization.AttestorArgs{\n\t\t\tName: pulumi.String(\"test-attestor\"),\n\t\t\tAttestationAuthorityNote: \u0026binaryauthorization.AttestorAttestationAuthorityNoteArgs{\n\t\t\t\tNoteReference: note.Name,\n\t\t\t\tPublicKeys: binaryauthorization.AttestorAttestationAuthorityNotePublicKeyArray{\n\t\t\t\t\t\u0026binaryauthorization.AttestorAttestationAuthorityNotePublicKeyArgs{\n\t\t\t\t\t\tAsciiArmoredPgpPublicKey: pulumi.String(`mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\n`),\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.containeranalysis.Note;\nimport com.pulumi.gcp.containeranalysis.NoteArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityHintArgs;\nimport com.pulumi.gcp.binaryauthorization.Attestor;\nimport com.pulumi.gcp.binaryauthorization.AttestorArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.AttestorAttestationAuthorityNoteArgs;\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 note = new Note(\"note\", NoteArgs.builder()\n .name(\"test-attestor-note\")\n .attestationAuthority(NoteAttestationAuthorityArgs.builder()\n .hint(NoteAttestationAuthorityHintArgs.builder()\n .humanReadableName(\"Attestor Note\")\n .build())\n .build())\n .build());\n\n var attestor = new Attestor(\"attestor\", AttestorArgs.builder()\n .name(\"test-attestor\")\n .attestationAuthorityNote(AttestorAttestationAuthorityNoteArgs.builder()\n .noteReference(note.name())\n .publicKeys(AttestorAttestationAuthorityNotePublicKeyArgs.builder()\n .asciiArmoredPgpPublicKey(\"\"\"\nmQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\n \"\"\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n attestor:\n type: gcp:binaryauthorization:Attestor\n properties:\n name: test-attestor\n attestationAuthorityNote:\n noteReference: ${note.name}\n publicKeys:\n - asciiArmoredPgpPublicKey: |\n mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\n bB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\n oR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\n V39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\n Mpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n 83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\n IiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\n uY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n 0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n 51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\n WTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\n MAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n +OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\n qoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n =6Bvm\n note:\n type: gcp:containeranalysis:Note\n properties:\n name: test-attestor-note\n attestationAuthority:\n hint:\n humanReadableName: Attestor Note\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Binary Authorization Attestor Kms\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"test-attestor-key-ring\",\n location: \"global\",\n});\nconst crypto_key = new gcp.kms.CryptoKey(\"crypto-key\", {\n name: \"test-attestor-key\",\n keyRing: keyring.id,\n purpose: \"ASYMMETRIC_SIGN\",\n versionTemplate: {\n algorithm: \"RSA_SIGN_PKCS1_4096_SHA512\",\n },\n});\nconst version = gcp.kms.getKMSCryptoKeyVersionOutput({\n cryptoKey: crypto_key.id,\n});\nconst note = new gcp.containeranalysis.Note(\"note\", {\n name: \"test-attestor-note\",\n attestationAuthority: {\n hint: {\n humanReadableName: \"Attestor Note\",\n },\n },\n});\nconst attestor = new gcp.binaryauthorization.Attestor(\"attestor\", {\n name: \"test-attestor\",\n attestationAuthorityNote: {\n noteReference: note.name,\n publicKeys: [{\n id: version.apply(version =\u003e version.id),\n pkixPublicKey: {\n publicKeyPem: version.apply(version =\u003e version.publicKeys?.[0]?.pem),\n signatureAlgorithm: version.apply(version =\u003e version.publicKeys?.[0]?.algorithm),\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"test-attestor-key-ring\",\n location=\"global\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto-key\",\n name=\"test-attestor-key\",\n key_ring=keyring.id,\n purpose=\"ASYMMETRIC_SIGN\",\n version_template={\n \"algorithm\": \"RSA_SIGN_PKCS1_4096_SHA512\",\n })\nversion = gcp.kms.get_kms_crypto_key_version_output(crypto_key=crypto_key.id)\nnote = gcp.containeranalysis.Note(\"note\",\n name=\"test-attestor-note\",\n attestation_authority={\n \"hint\": {\n \"humanReadableName\": \"Attestor Note\",\n },\n })\nattestor = gcp.binaryauthorization.Attestor(\"attestor\",\n name=\"test-attestor\",\n attestation_authority_note={\n \"noteReference\": note.name,\n \"publicKeys\": [{\n \"id\": version.id,\n \"pkixPublicKey\": {\n \"publicKeyPem\": version.public_keys[0].pem,\n \"signatureAlgorithm\": version.public_keys[0].algorithm,\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 keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"test-attestor-key-ring\",\n Location = \"global\",\n });\n\n var crypto_key = new Gcp.Kms.CryptoKey(\"crypto-key\", new()\n {\n Name = \"test-attestor-key\",\n KeyRing = keyring.Id,\n Purpose = \"ASYMMETRIC_SIGN\",\n VersionTemplate = new Gcp.Kms.Inputs.CryptoKeyVersionTemplateArgs\n {\n Algorithm = \"RSA_SIGN_PKCS1_4096_SHA512\",\n },\n });\n\n var version = Gcp.Kms.GetKMSCryptoKeyVersion.Invoke(new()\n {\n CryptoKey = crypto_key.Id,\n });\n\n var note = new Gcp.ContainerAnalysis.Note(\"note\", new()\n {\n Name = \"test-attestor-note\",\n AttestationAuthority = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityArgs\n {\n Hint = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityHintArgs\n {\n HumanReadableName = \"Attestor Note\",\n },\n },\n });\n\n var attestor = new Gcp.BinaryAuthorization.Attestor(\"attestor\", new()\n {\n Name = \"test-attestor\",\n AttestationAuthorityNote = new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNoteArgs\n {\n NoteReference = note.Name,\n PublicKeys = new[]\n {\n new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNotePublicKeyArgs\n {\n Id = version.Apply(getKMSCryptoKeyVersionResult =\u003e getKMSCryptoKeyVersionResult.Id),\n PkixPublicKey = new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNotePublicKeyPkixPublicKeyArgs\n {\n PublicKeyPem = version.Apply(getKMSCryptoKeyVersionResult =\u003e getKMSCryptoKeyVersionResult.PublicKeys[0]?.Pem),\n SignatureAlgorithm = version.Apply(getKMSCryptoKeyVersionResult =\u003e getKMSCryptoKeyVersionResult.PublicKeys[0]?.Algorithm),\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/binaryauthorization\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/containeranalysis\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"test-attestor-key-ring\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKey(ctx, \"crypto-key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"test-attestor-key\"),\n\t\t\tKeyRing: keyring.ID(),\n\t\t\tPurpose: pulumi.String(\"ASYMMETRIC_SIGN\"),\n\t\t\tVersionTemplate: \u0026kms.CryptoKeyVersionTemplateArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_SIGN_PKCS1_4096_SHA512\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tversion := kms.GetKMSCryptoKeyVersionOutput(ctx, kms.GetKMSCryptoKeyVersionOutputArgs{\n\t\t\tCryptoKey: crypto_key.ID(),\n\t\t}, nil)\n\t\tnote, err := containeranalysis.NewNote(ctx, \"note\", \u0026containeranalysis.NoteArgs{\n\t\t\tName: pulumi.String(\"test-attestor-note\"),\n\t\t\tAttestationAuthority: \u0026containeranalysis.NoteAttestationAuthorityArgs{\n\t\t\t\tHint: \u0026containeranalysis.NoteAttestationAuthorityHintArgs{\n\t\t\t\t\tHumanReadableName: pulumi.String(\"Attestor Note\"),\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 = binaryauthorization.NewAttestor(ctx, \"attestor\", \u0026binaryauthorization.AttestorArgs{\n\t\t\tName: pulumi.String(\"test-attestor\"),\n\t\t\tAttestationAuthorityNote: \u0026binaryauthorization.AttestorAttestationAuthorityNoteArgs{\n\t\t\t\tNoteReference: note.Name,\n\t\t\t\tPublicKeys: binaryauthorization.AttestorAttestationAuthorityNotePublicKeyArray{\n\t\t\t\t\t\u0026binaryauthorization.AttestorAttestationAuthorityNotePublicKeyArgs{\n\t\t\t\t\t\tId: version.ApplyT(func(version kms.GetKMSCryptoKeyVersionResult) (*string, error) {\n\t\t\t\t\t\t\treturn \u0026version.Id, nil\n\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\tPkixPublicKey: \u0026binaryauthorization.AttestorAttestationAuthorityNotePublicKeyPkixPublicKeyArgs{\n\t\t\t\t\t\t\tPublicKeyPem: version.ApplyT(func(version kms.GetKMSCryptoKeyVersionResult) (*string, error) {\n\t\t\t\t\t\t\t\treturn \u0026version.PublicKeys[0].Pem, nil\n\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\tSignatureAlgorithm: version.ApplyT(func(version kms.GetKMSCryptoKeyVersionResult) (*string, error) {\n\t\t\t\t\t\t\t\treturn \u0026version.PublicKeys[0].Algorithm, nil\n\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.inputs.CryptoKeyVersionTemplateArgs;\nimport com.pulumi.gcp.kms.KmsFunctions;\nimport com.pulumi.gcp.kms.inputs.GetKMSCryptoKeyVersionArgs;\nimport com.pulumi.gcp.containeranalysis.Note;\nimport com.pulumi.gcp.containeranalysis.NoteArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityHintArgs;\nimport com.pulumi.gcp.binaryauthorization.Attestor;\nimport com.pulumi.gcp.binaryauthorization.AttestorArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.AttestorAttestationAuthorityNoteArgs;\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 .name(\"test-attestor-key-ring\")\n .location(\"global\")\n .build());\n\n var crypto_key = new CryptoKey(\"crypto-key\", CryptoKeyArgs.builder()\n .name(\"test-attestor-key\")\n .keyRing(keyring.id())\n .purpose(\"ASYMMETRIC_SIGN\")\n .versionTemplate(CryptoKeyVersionTemplateArgs.builder()\n .algorithm(\"RSA_SIGN_PKCS1_4096_SHA512\")\n .build())\n .build());\n\n final var version = KmsFunctions.getKMSCryptoKeyVersion(GetKMSCryptoKeyVersionArgs.builder()\n .cryptoKey(crypto_key.id())\n .build());\n\n var note = new Note(\"note\", NoteArgs.builder()\n .name(\"test-attestor-note\")\n .attestationAuthority(NoteAttestationAuthorityArgs.builder()\n .hint(NoteAttestationAuthorityHintArgs.builder()\n .humanReadableName(\"Attestor Note\")\n .build())\n .build())\n .build());\n\n var attestor = new Attestor(\"attestor\", AttestorArgs.builder()\n .name(\"test-attestor\")\n .attestationAuthorityNote(AttestorAttestationAuthorityNoteArgs.builder()\n .noteReference(note.name())\n .publicKeys(AttestorAttestationAuthorityNotePublicKeyArgs.builder()\n .id(version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult).applyValue(version -\u003e version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult.id())))\n .pkixPublicKey(AttestorAttestationAuthorityNotePublicKeyPkixPublicKeyArgs.builder()\n .publicKeyPem(version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult).applyValue(version -\u003e version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult.publicKeys()[0].pem())))\n .signatureAlgorithm(version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult).applyValue(version -\u003e version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult.publicKeys()[0].algorithm())))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n attestor:\n type: gcp:binaryauthorization:Attestor\n properties:\n name: test-attestor\n attestationAuthorityNote:\n noteReference: ${note.name}\n publicKeys:\n - id: ${version.id}\n pkixPublicKey:\n publicKeyPem: ${version.publicKeys[0].pem}\n signatureAlgorithm: ${version.publicKeys[0].algorithm}\n note:\n type: gcp:containeranalysis:Note\n properties:\n name: test-attestor-note\n attestationAuthority:\n hint:\n humanReadableName: Attestor Note\n crypto-key:\n type: gcp:kms:CryptoKey\n properties:\n name: test-attestor-key\n keyRing: ${keyring.id}\n purpose: ASYMMETRIC_SIGN\n versionTemplate:\n algorithm: RSA_SIGN_PKCS1_4096_SHA512\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: test-attestor-key-ring\n location: global\nvariables:\n version:\n fn::invoke:\n Function: gcp:kms:getKMSCryptoKeyVersion\n Arguments:\n cryptoKey: ${[\"crypto-key\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAttestor can be imported using any of these accepted formats:\n\n* `projects/{{project}}/attestors/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Attestor can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:binaryauthorization/attestor:Attestor default projects/{{project}}/attestors/{{name}}\n```\n\n```sh\n$ pulumi import gcp:binaryauthorization/attestor:Attestor default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:binaryauthorization/attestor:Attestor default {{name}}\n```\n\n", + "description": "An attestor that attests to container image artifacts.\n\n\nTo get more information about Attestor, see:\n\n* [API documentation](https://cloud.google.com/binary-authorization/docs/reference/rest/)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/binary-authorization/)\n\n## Example Usage\n\n### Binary Authorization Attestor Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst note = new gcp.containeranalysis.Note(\"note\", {\n name: \"test-attestor-note\",\n attestationAuthority: {\n hint: {\n humanReadableName: \"Attestor Note\",\n },\n },\n});\nconst attestor = new gcp.binaryauthorization.Attestor(\"attestor\", {\n name: \"test-attestor\",\n attestationAuthorityNote: {\n noteReference: note.name,\n publicKeys: [{\n asciiArmoredPgpPublicKey: `mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\n`,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnote = gcp.containeranalysis.Note(\"note\",\n name=\"test-attestor-note\",\n attestation_authority={\n \"hint\": {\n \"human_readable_name\": \"Attestor Note\",\n },\n })\nattestor = gcp.binaryauthorization.Attestor(\"attestor\",\n name=\"test-attestor\",\n attestation_authority_note={\n \"note_reference\": note.name,\n \"public_keys\": [{\n \"ascii_armored_pgp_public_key\": \"\"\"mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\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 note = new Gcp.ContainerAnalysis.Note(\"note\", new()\n {\n Name = \"test-attestor-note\",\n AttestationAuthority = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityArgs\n {\n Hint = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityHintArgs\n {\n HumanReadableName = \"Attestor Note\",\n },\n },\n });\n\n var attestor = new Gcp.BinaryAuthorization.Attestor(\"attestor\", new()\n {\n Name = \"test-attestor\",\n AttestationAuthorityNote = new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNoteArgs\n {\n NoteReference = note.Name,\n PublicKeys = new[]\n {\n new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNotePublicKeyArgs\n {\n AsciiArmoredPgpPublicKey = @\"mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\n\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/binaryauthorization\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/containeranalysis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnote, err := containeranalysis.NewNote(ctx, \"note\", \u0026containeranalysis.NoteArgs{\n\t\t\tName: pulumi.String(\"test-attestor-note\"),\n\t\t\tAttestationAuthority: \u0026containeranalysis.NoteAttestationAuthorityArgs{\n\t\t\t\tHint: \u0026containeranalysis.NoteAttestationAuthorityHintArgs{\n\t\t\t\t\tHumanReadableName: pulumi.String(\"Attestor Note\"),\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 = binaryauthorization.NewAttestor(ctx, \"attestor\", \u0026binaryauthorization.AttestorArgs{\n\t\t\tName: pulumi.String(\"test-attestor\"),\n\t\t\tAttestationAuthorityNote: \u0026binaryauthorization.AttestorAttestationAuthorityNoteArgs{\n\t\t\t\tNoteReference: note.Name,\n\t\t\t\tPublicKeys: binaryauthorization.AttestorAttestationAuthorityNotePublicKeyArray{\n\t\t\t\t\t\u0026binaryauthorization.AttestorAttestationAuthorityNotePublicKeyArgs{\n\t\t\t\t\t\tAsciiArmoredPgpPublicKey: pulumi.String(`mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\n`),\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.containeranalysis.Note;\nimport com.pulumi.gcp.containeranalysis.NoteArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityHintArgs;\nimport com.pulumi.gcp.binaryauthorization.Attestor;\nimport com.pulumi.gcp.binaryauthorization.AttestorArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.AttestorAttestationAuthorityNoteArgs;\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 note = new Note(\"note\", NoteArgs.builder()\n .name(\"test-attestor-note\")\n .attestationAuthority(NoteAttestationAuthorityArgs.builder()\n .hint(NoteAttestationAuthorityHintArgs.builder()\n .humanReadableName(\"Attestor Note\")\n .build())\n .build())\n .build());\n\n var attestor = new Attestor(\"attestor\", AttestorArgs.builder()\n .name(\"test-attestor\")\n .attestationAuthorityNote(AttestorAttestationAuthorityNoteArgs.builder()\n .noteReference(note.name())\n .publicKeys(AttestorAttestationAuthorityNotePublicKeyArgs.builder()\n .asciiArmoredPgpPublicKey(\"\"\"\nmQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\n \"\"\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n attestor:\n type: gcp:binaryauthorization:Attestor\n properties:\n name: test-attestor\n attestationAuthorityNote:\n noteReference: ${note.name}\n publicKeys:\n - asciiArmoredPgpPublicKey: |\n mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\n bB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\n oR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\n V39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\n Mpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n 83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\n IiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\n uY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n 0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n 51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\n WTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\n MAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n +OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\n qoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n =6Bvm\n note:\n type: gcp:containeranalysis:Note\n properties:\n name: test-attestor-note\n attestationAuthority:\n hint:\n humanReadableName: Attestor Note\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Binary Authorization Attestor Kms\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"test-attestor-key-ring\",\n location: \"global\",\n});\nconst crypto_key = new gcp.kms.CryptoKey(\"crypto-key\", {\n name: \"test-attestor-key\",\n keyRing: keyring.id,\n purpose: \"ASYMMETRIC_SIGN\",\n versionTemplate: {\n algorithm: \"RSA_SIGN_PKCS1_4096_SHA512\",\n },\n});\nconst version = gcp.kms.getKMSCryptoKeyVersionOutput({\n cryptoKey: crypto_key.id,\n});\nconst note = new gcp.containeranalysis.Note(\"note\", {\n name: \"test-attestor-note\",\n attestationAuthority: {\n hint: {\n humanReadableName: \"Attestor Note\",\n },\n },\n});\nconst attestor = new gcp.binaryauthorization.Attestor(\"attestor\", {\n name: \"test-attestor\",\n attestationAuthorityNote: {\n noteReference: note.name,\n publicKeys: [{\n id: version.apply(version =\u003e version.id),\n pkixPublicKey: {\n publicKeyPem: version.apply(version =\u003e version.publicKeys?.[0]?.pem),\n signatureAlgorithm: version.apply(version =\u003e version.publicKeys?.[0]?.algorithm),\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"test-attestor-key-ring\",\n location=\"global\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto-key\",\n name=\"test-attestor-key\",\n key_ring=keyring.id,\n purpose=\"ASYMMETRIC_SIGN\",\n version_template={\n \"algorithm\": \"RSA_SIGN_PKCS1_4096_SHA512\",\n })\nversion = gcp.kms.get_kms_crypto_key_version_output(crypto_key=crypto_key.id)\nnote = gcp.containeranalysis.Note(\"note\",\n name=\"test-attestor-note\",\n attestation_authority={\n \"hint\": {\n \"human_readable_name\": \"Attestor Note\",\n },\n })\nattestor = gcp.binaryauthorization.Attestor(\"attestor\",\n name=\"test-attestor\",\n attestation_authority_note={\n \"note_reference\": note.name,\n \"public_keys\": [{\n \"id\": version.id,\n \"pkix_public_key\": {\n \"public_key_pem\": version.public_keys[0].pem,\n \"signature_algorithm\": version.public_keys[0].algorithm,\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 keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"test-attestor-key-ring\",\n Location = \"global\",\n });\n\n var crypto_key = new Gcp.Kms.CryptoKey(\"crypto-key\", new()\n {\n Name = \"test-attestor-key\",\n KeyRing = keyring.Id,\n Purpose = \"ASYMMETRIC_SIGN\",\n VersionTemplate = new Gcp.Kms.Inputs.CryptoKeyVersionTemplateArgs\n {\n Algorithm = \"RSA_SIGN_PKCS1_4096_SHA512\",\n },\n });\n\n var version = Gcp.Kms.GetKMSCryptoKeyVersion.Invoke(new()\n {\n CryptoKey = crypto_key.Id,\n });\n\n var note = new Gcp.ContainerAnalysis.Note(\"note\", new()\n {\n Name = \"test-attestor-note\",\n AttestationAuthority = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityArgs\n {\n Hint = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityHintArgs\n {\n HumanReadableName = \"Attestor Note\",\n },\n },\n });\n\n var attestor = new Gcp.BinaryAuthorization.Attestor(\"attestor\", new()\n {\n Name = \"test-attestor\",\n AttestationAuthorityNote = new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNoteArgs\n {\n NoteReference = note.Name,\n PublicKeys = new[]\n {\n new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNotePublicKeyArgs\n {\n Id = version.Apply(getKMSCryptoKeyVersionResult =\u003e getKMSCryptoKeyVersionResult.Id),\n PkixPublicKey = new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNotePublicKeyPkixPublicKeyArgs\n {\n PublicKeyPem = version.Apply(getKMSCryptoKeyVersionResult =\u003e getKMSCryptoKeyVersionResult.PublicKeys[0]?.Pem),\n SignatureAlgorithm = version.Apply(getKMSCryptoKeyVersionResult =\u003e getKMSCryptoKeyVersionResult.PublicKeys[0]?.Algorithm),\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/binaryauthorization\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/containeranalysis\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"test-attestor-key-ring\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKey(ctx, \"crypto-key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"test-attestor-key\"),\n\t\t\tKeyRing: keyring.ID(),\n\t\t\tPurpose: pulumi.String(\"ASYMMETRIC_SIGN\"),\n\t\t\tVersionTemplate: \u0026kms.CryptoKeyVersionTemplateArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_SIGN_PKCS1_4096_SHA512\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tversion := kms.GetKMSCryptoKeyVersionOutput(ctx, kms.GetKMSCryptoKeyVersionOutputArgs{\n\t\t\tCryptoKey: crypto_key.ID(),\n\t\t}, nil)\n\t\tnote, err := containeranalysis.NewNote(ctx, \"note\", \u0026containeranalysis.NoteArgs{\n\t\t\tName: pulumi.String(\"test-attestor-note\"),\n\t\t\tAttestationAuthority: \u0026containeranalysis.NoteAttestationAuthorityArgs{\n\t\t\t\tHint: \u0026containeranalysis.NoteAttestationAuthorityHintArgs{\n\t\t\t\t\tHumanReadableName: pulumi.String(\"Attestor Note\"),\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 = binaryauthorization.NewAttestor(ctx, \"attestor\", \u0026binaryauthorization.AttestorArgs{\n\t\t\tName: pulumi.String(\"test-attestor\"),\n\t\t\tAttestationAuthorityNote: \u0026binaryauthorization.AttestorAttestationAuthorityNoteArgs{\n\t\t\t\tNoteReference: note.Name,\n\t\t\t\tPublicKeys: binaryauthorization.AttestorAttestationAuthorityNotePublicKeyArray{\n\t\t\t\t\t\u0026binaryauthorization.AttestorAttestationAuthorityNotePublicKeyArgs{\n\t\t\t\t\t\tId: version.ApplyT(func(version kms.GetKMSCryptoKeyVersionResult) (*string, error) {\n\t\t\t\t\t\t\treturn \u0026version.Id, nil\n\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\tPkixPublicKey: \u0026binaryauthorization.AttestorAttestationAuthorityNotePublicKeyPkixPublicKeyArgs{\n\t\t\t\t\t\t\tPublicKeyPem: version.ApplyT(func(version kms.GetKMSCryptoKeyVersionResult) (*string, error) {\n\t\t\t\t\t\t\t\treturn \u0026version.PublicKeys[0].Pem, nil\n\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\tSignatureAlgorithm: version.ApplyT(func(version kms.GetKMSCryptoKeyVersionResult) (*string, error) {\n\t\t\t\t\t\t\t\treturn \u0026version.PublicKeys[0].Algorithm, nil\n\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.inputs.CryptoKeyVersionTemplateArgs;\nimport com.pulumi.gcp.kms.KmsFunctions;\nimport com.pulumi.gcp.kms.inputs.GetKMSCryptoKeyVersionArgs;\nimport com.pulumi.gcp.containeranalysis.Note;\nimport com.pulumi.gcp.containeranalysis.NoteArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityHintArgs;\nimport com.pulumi.gcp.binaryauthorization.Attestor;\nimport com.pulumi.gcp.binaryauthorization.AttestorArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.AttestorAttestationAuthorityNoteArgs;\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 .name(\"test-attestor-key-ring\")\n .location(\"global\")\n .build());\n\n var crypto_key = new CryptoKey(\"crypto-key\", CryptoKeyArgs.builder()\n .name(\"test-attestor-key\")\n .keyRing(keyring.id())\n .purpose(\"ASYMMETRIC_SIGN\")\n .versionTemplate(CryptoKeyVersionTemplateArgs.builder()\n .algorithm(\"RSA_SIGN_PKCS1_4096_SHA512\")\n .build())\n .build());\n\n final var version = KmsFunctions.getKMSCryptoKeyVersion(GetKMSCryptoKeyVersionArgs.builder()\n .cryptoKey(crypto_key.id())\n .build());\n\n var note = new Note(\"note\", NoteArgs.builder()\n .name(\"test-attestor-note\")\n .attestationAuthority(NoteAttestationAuthorityArgs.builder()\n .hint(NoteAttestationAuthorityHintArgs.builder()\n .humanReadableName(\"Attestor Note\")\n .build())\n .build())\n .build());\n\n var attestor = new Attestor(\"attestor\", AttestorArgs.builder()\n .name(\"test-attestor\")\n .attestationAuthorityNote(AttestorAttestationAuthorityNoteArgs.builder()\n .noteReference(note.name())\n .publicKeys(AttestorAttestationAuthorityNotePublicKeyArgs.builder()\n .id(version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult).applyValue(version -\u003e version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult.id())))\n .pkixPublicKey(AttestorAttestationAuthorityNotePublicKeyPkixPublicKeyArgs.builder()\n .publicKeyPem(version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult).applyValue(version -\u003e version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult.publicKeys()[0].pem())))\n .signatureAlgorithm(version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult).applyValue(version -\u003e version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult.publicKeys()[0].algorithm())))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n attestor:\n type: gcp:binaryauthorization:Attestor\n properties:\n name: test-attestor\n attestationAuthorityNote:\n noteReference: ${note.name}\n publicKeys:\n - id: ${version.id}\n pkixPublicKey:\n publicKeyPem: ${version.publicKeys[0].pem}\n signatureAlgorithm: ${version.publicKeys[0].algorithm}\n note:\n type: gcp:containeranalysis:Note\n properties:\n name: test-attestor-note\n attestationAuthority:\n hint:\n humanReadableName: Attestor Note\n crypto-key:\n type: gcp:kms:CryptoKey\n properties:\n name: test-attestor-key\n keyRing: ${keyring.id}\n purpose: ASYMMETRIC_SIGN\n versionTemplate:\n algorithm: RSA_SIGN_PKCS1_4096_SHA512\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: test-attestor-key-ring\n location: global\nvariables:\n version:\n fn::invoke:\n Function: gcp:kms:getKMSCryptoKeyVersion\n Arguments:\n cryptoKey: ${[\"crypto-key\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAttestor can be imported using any of these accepted formats:\n\n* `projects/{{project}}/attestors/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Attestor can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:binaryauthorization/attestor:Attestor default projects/{{project}}/attestors/{{name}}\n```\n\n```sh\n$ pulumi import gcp:binaryauthorization/attestor:Attestor default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:binaryauthorization/attestor:Attestor default {{name}}\n```\n\n", "properties": { "attestationAuthorityNote": { "$ref": "#/types/gcp:binaryauthorization/AttestorAttestationAuthorityNote:AttestorAttestationAuthorityNote", @@ -128944,7 +128944,7 @@ } }, "gcp:binaryauthorization/policy:Policy": { - "description": "A policy for container image binary authorization.\n\n\nTo get more information about Policy, see:\n\n* [API documentation](https://cloud.google.com/binary-authorization/docs/reference/rest/)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/binary-authorization/)\n\n## Example Usage\n\n### Binary Authorization Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst note = new gcp.containeranalysis.Note(\"note\", {\n name: \"test-attestor-note\",\n attestationAuthority: {\n hint: {\n humanReadableName: \"My attestor\",\n },\n },\n});\nconst attestor = new gcp.binaryauthorization.Attestor(\"attestor\", {\n name: \"test-attestor\",\n attestationAuthorityNote: {\n noteReference: note.name,\n },\n});\nconst policy = new gcp.binaryauthorization.Policy(\"policy\", {\n admissionWhitelistPatterns: [{\n namePattern: \"gcr.io/google_containers/*\",\n }],\n defaultAdmissionRule: {\n evaluationMode: \"ALWAYS_ALLOW\",\n enforcementMode: \"ENFORCED_BLOCK_AND_AUDIT_LOG\",\n },\n clusterAdmissionRules: [{\n cluster: \"us-central1-a.prod-cluster\",\n evaluationMode: \"REQUIRE_ATTESTATION\",\n enforcementMode: \"ENFORCED_BLOCK_AND_AUDIT_LOG\",\n requireAttestationsBies: [attestor.name],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnote = gcp.containeranalysis.Note(\"note\",\n name=\"test-attestor-note\",\n attestation_authority={\n \"hint\": {\n \"humanReadableName\": \"My attestor\",\n },\n })\nattestor = gcp.binaryauthorization.Attestor(\"attestor\",\n name=\"test-attestor\",\n attestation_authority_note={\n \"noteReference\": note.name,\n })\npolicy = gcp.binaryauthorization.Policy(\"policy\",\n admission_whitelist_patterns=[{\n \"namePattern\": \"gcr.io/google_containers/*\",\n }],\n default_admission_rule={\n \"evaluationMode\": \"ALWAYS_ALLOW\",\n \"enforcementMode\": \"ENFORCED_BLOCK_AND_AUDIT_LOG\",\n },\n cluster_admission_rules=[{\n \"cluster\": \"us-central1-a.prod-cluster\",\n \"evaluationMode\": \"REQUIRE_ATTESTATION\",\n \"enforcementMode\": \"ENFORCED_BLOCK_AND_AUDIT_LOG\",\n \"requireAttestationsBies\": [attestor.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 note = new Gcp.ContainerAnalysis.Note(\"note\", new()\n {\n Name = \"test-attestor-note\",\n AttestationAuthority = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityArgs\n {\n Hint = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityHintArgs\n {\n HumanReadableName = \"My attestor\",\n },\n },\n });\n\n var attestor = new Gcp.BinaryAuthorization.Attestor(\"attestor\", new()\n {\n Name = \"test-attestor\",\n AttestationAuthorityNote = new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNoteArgs\n {\n NoteReference = note.Name,\n },\n });\n\n var policy = new Gcp.BinaryAuthorization.Policy(\"policy\", new()\n {\n AdmissionWhitelistPatterns = new[]\n {\n new Gcp.BinaryAuthorization.Inputs.PolicyAdmissionWhitelistPatternArgs\n {\n NamePattern = \"gcr.io/google_containers/*\",\n },\n },\n DefaultAdmissionRule = new Gcp.BinaryAuthorization.Inputs.PolicyDefaultAdmissionRuleArgs\n {\n EvaluationMode = \"ALWAYS_ALLOW\",\n EnforcementMode = \"ENFORCED_BLOCK_AND_AUDIT_LOG\",\n },\n ClusterAdmissionRules = new[]\n {\n new Gcp.BinaryAuthorization.Inputs.PolicyClusterAdmissionRuleArgs\n {\n Cluster = \"us-central1-a.prod-cluster\",\n EvaluationMode = \"REQUIRE_ATTESTATION\",\n EnforcementMode = \"ENFORCED_BLOCK_AND_AUDIT_LOG\",\n RequireAttestationsBies = new[]\n {\n attestor.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/binaryauthorization\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/containeranalysis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnote, err := containeranalysis.NewNote(ctx, \"note\", \u0026containeranalysis.NoteArgs{\n\t\t\tName: pulumi.String(\"test-attestor-note\"),\n\t\t\tAttestationAuthority: \u0026containeranalysis.NoteAttestationAuthorityArgs{\n\t\t\t\tHint: \u0026containeranalysis.NoteAttestationAuthorityHintArgs{\n\t\t\t\t\tHumanReadableName: pulumi.String(\"My attestor\"),\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\tattestor, err := binaryauthorization.NewAttestor(ctx, \"attestor\", \u0026binaryauthorization.AttestorArgs{\n\t\t\tName: pulumi.String(\"test-attestor\"),\n\t\t\tAttestationAuthorityNote: \u0026binaryauthorization.AttestorAttestationAuthorityNoteArgs{\n\t\t\t\tNoteReference: note.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = binaryauthorization.NewPolicy(ctx, \"policy\", \u0026binaryauthorization.PolicyArgs{\n\t\t\tAdmissionWhitelistPatterns: binaryauthorization.PolicyAdmissionWhitelistPatternArray{\n\t\t\t\t\u0026binaryauthorization.PolicyAdmissionWhitelistPatternArgs{\n\t\t\t\t\tNamePattern: pulumi.String(\"gcr.io/google_containers/*\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDefaultAdmissionRule: \u0026binaryauthorization.PolicyDefaultAdmissionRuleArgs{\n\t\t\t\tEvaluationMode: pulumi.String(\"ALWAYS_ALLOW\"),\n\t\t\t\tEnforcementMode: pulumi.String(\"ENFORCED_BLOCK_AND_AUDIT_LOG\"),\n\t\t\t},\n\t\t\tClusterAdmissionRules: binaryauthorization.PolicyClusterAdmissionRuleArray{\n\t\t\t\t\u0026binaryauthorization.PolicyClusterAdmissionRuleArgs{\n\t\t\t\t\tCluster: pulumi.String(\"us-central1-a.prod-cluster\"),\n\t\t\t\t\tEvaluationMode: pulumi.String(\"REQUIRE_ATTESTATION\"),\n\t\t\t\t\tEnforcementMode: pulumi.String(\"ENFORCED_BLOCK_AND_AUDIT_LOG\"),\n\t\t\t\t\tRequireAttestationsBies: pulumi.StringArray{\n\t\t\t\t\t\tattestor.Name,\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.containeranalysis.Note;\nimport com.pulumi.gcp.containeranalysis.NoteArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityHintArgs;\nimport com.pulumi.gcp.binaryauthorization.Attestor;\nimport com.pulumi.gcp.binaryauthorization.AttestorArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.AttestorAttestationAuthorityNoteArgs;\nimport com.pulumi.gcp.binaryauthorization.Policy;\nimport com.pulumi.gcp.binaryauthorization.PolicyArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.PolicyAdmissionWhitelistPatternArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.PolicyDefaultAdmissionRuleArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.PolicyClusterAdmissionRuleArgs;\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 note = new Note(\"note\", NoteArgs.builder()\n .name(\"test-attestor-note\")\n .attestationAuthority(NoteAttestationAuthorityArgs.builder()\n .hint(NoteAttestationAuthorityHintArgs.builder()\n .humanReadableName(\"My attestor\")\n .build())\n .build())\n .build());\n\n var attestor = new Attestor(\"attestor\", AttestorArgs.builder()\n .name(\"test-attestor\")\n .attestationAuthorityNote(AttestorAttestationAuthorityNoteArgs.builder()\n .noteReference(note.name())\n .build())\n .build());\n\n var policy = new Policy(\"policy\", PolicyArgs.builder()\n .admissionWhitelistPatterns(PolicyAdmissionWhitelistPatternArgs.builder()\n .namePattern(\"gcr.io/google_containers/*\")\n .build())\n .defaultAdmissionRule(PolicyDefaultAdmissionRuleArgs.builder()\n .evaluationMode(\"ALWAYS_ALLOW\")\n .enforcementMode(\"ENFORCED_BLOCK_AND_AUDIT_LOG\")\n .build())\n .clusterAdmissionRules(PolicyClusterAdmissionRuleArgs.builder()\n .cluster(\"us-central1-a.prod-cluster\")\n .evaluationMode(\"REQUIRE_ATTESTATION\")\n .enforcementMode(\"ENFORCED_BLOCK_AND_AUDIT_LOG\")\n .requireAttestationsBies(attestor.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n policy:\n type: gcp:binaryauthorization:Policy\n properties:\n admissionWhitelistPatterns:\n - namePattern: gcr.io/google_containers/*\n defaultAdmissionRule:\n evaluationMode: ALWAYS_ALLOW\n enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG\n clusterAdmissionRules:\n - cluster: us-central1-a.prod-cluster\n evaluationMode: REQUIRE_ATTESTATION\n enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG\n requireAttestationsBies:\n - ${attestor.name}\n note:\n type: gcp:containeranalysis:Note\n properties:\n name: test-attestor-note\n attestationAuthority:\n hint:\n humanReadableName: My attestor\n attestor:\n type: gcp:binaryauthorization:Attestor\n properties:\n name: test-attestor\n attestationAuthorityNote:\n noteReference: ${note.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Binary Authorization Policy Global Evaluation\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst note = new gcp.containeranalysis.Note(\"note\", {\n name: \"test-attestor-note\",\n attestationAuthority: {\n hint: {\n humanReadableName: \"My attestor\",\n },\n },\n});\nconst attestor = new gcp.binaryauthorization.Attestor(\"attestor\", {\n name: \"test-attestor\",\n attestationAuthorityNote: {\n noteReference: note.name,\n },\n});\nconst policy = new gcp.binaryauthorization.Policy(\"policy\", {\n defaultAdmissionRule: {\n evaluationMode: \"REQUIRE_ATTESTATION\",\n enforcementMode: \"ENFORCED_BLOCK_AND_AUDIT_LOG\",\n requireAttestationsBies: [attestor.name],\n },\n globalPolicyEvaluationMode: \"ENABLE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnote = gcp.containeranalysis.Note(\"note\",\n name=\"test-attestor-note\",\n attestation_authority={\n \"hint\": {\n \"humanReadableName\": \"My attestor\",\n },\n })\nattestor = gcp.binaryauthorization.Attestor(\"attestor\",\n name=\"test-attestor\",\n attestation_authority_note={\n \"noteReference\": note.name,\n })\npolicy = gcp.binaryauthorization.Policy(\"policy\",\n default_admission_rule={\n \"evaluationMode\": \"REQUIRE_ATTESTATION\",\n \"enforcementMode\": \"ENFORCED_BLOCK_AND_AUDIT_LOG\",\n \"requireAttestationsBies\": [attestor.name],\n },\n global_policy_evaluation_mode=\"ENABLE\")\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 note = new Gcp.ContainerAnalysis.Note(\"note\", new()\n {\n Name = \"test-attestor-note\",\n AttestationAuthority = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityArgs\n {\n Hint = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityHintArgs\n {\n HumanReadableName = \"My attestor\",\n },\n },\n });\n\n var attestor = new Gcp.BinaryAuthorization.Attestor(\"attestor\", new()\n {\n Name = \"test-attestor\",\n AttestationAuthorityNote = new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNoteArgs\n {\n NoteReference = note.Name,\n },\n });\n\n var policy = new Gcp.BinaryAuthorization.Policy(\"policy\", new()\n {\n DefaultAdmissionRule = new Gcp.BinaryAuthorization.Inputs.PolicyDefaultAdmissionRuleArgs\n {\n EvaluationMode = \"REQUIRE_ATTESTATION\",\n EnforcementMode = \"ENFORCED_BLOCK_AND_AUDIT_LOG\",\n RequireAttestationsBies = new[]\n {\n attestor.Name,\n },\n },\n GlobalPolicyEvaluationMode = \"ENABLE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/binaryauthorization\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/containeranalysis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnote, err := containeranalysis.NewNote(ctx, \"note\", \u0026containeranalysis.NoteArgs{\n\t\t\tName: pulumi.String(\"test-attestor-note\"),\n\t\t\tAttestationAuthority: \u0026containeranalysis.NoteAttestationAuthorityArgs{\n\t\t\t\tHint: \u0026containeranalysis.NoteAttestationAuthorityHintArgs{\n\t\t\t\t\tHumanReadableName: pulumi.String(\"My attestor\"),\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\tattestor, err := binaryauthorization.NewAttestor(ctx, \"attestor\", \u0026binaryauthorization.AttestorArgs{\n\t\t\tName: pulumi.String(\"test-attestor\"),\n\t\t\tAttestationAuthorityNote: \u0026binaryauthorization.AttestorAttestationAuthorityNoteArgs{\n\t\t\t\tNoteReference: note.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = binaryauthorization.NewPolicy(ctx, \"policy\", \u0026binaryauthorization.PolicyArgs{\n\t\t\tDefaultAdmissionRule: \u0026binaryauthorization.PolicyDefaultAdmissionRuleArgs{\n\t\t\t\tEvaluationMode: pulumi.String(\"REQUIRE_ATTESTATION\"),\n\t\t\t\tEnforcementMode: pulumi.String(\"ENFORCED_BLOCK_AND_AUDIT_LOG\"),\n\t\t\t\tRequireAttestationsBies: pulumi.StringArray{\n\t\t\t\t\tattestor.Name,\n\t\t\t\t},\n\t\t\t},\n\t\t\tGlobalPolicyEvaluationMode: pulumi.String(\"ENABLE\"),\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.containeranalysis.Note;\nimport com.pulumi.gcp.containeranalysis.NoteArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityHintArgs;\nimport com.pulumi.gcp.binaryauthorization.Attestor;\nimport com.pulumi.gcp.binaryauthorization.AttestorArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.AttestorAttestationAuthorityNoteArgs;\nimport com.pulumi.gcp.binaryauthorization.Policy;\nimport com.pulumi.gcp.binaryauthorization.PolicyArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.PolicyDefaultAdmissionRuleArgs;\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 note = new Note(\"note\", NoteArgs.builder()\n .name(\"test-attestor-note\")\n .attestationAuthority(NoteAttestationAuthorityArgs.builder()\n .hint(NoteAttestationAuthorityHintArgs.builder()\n .humanReadableName(\"My attestor\")\n .build())\n .build())\n .build());\n\n var attestor = new Attestor(\"attestor\", AttestorArgs.builder()\n .name(\"test-attestor\")\n .attestationAuthorityNote(AttestorAttestationAuthorityNoteArgs.builder()\n .noteReference(note.name())\n .build())\n .build());\n\n var policy = new Policy(\"policy\", PolicyArgs.builder()\n .defaultAdmissionRule(PolicyDefaultAdmissionRuleArgs.builder()\n .evaluationMode(\"REQUIRE_ATTESTATION\")\n .enforcementMode(\"ENFORCED_BLOCK_AND_AUDIT_LOG\")\n .requireAttestationsBies(attestor.name())\n .build())\n .globalPolicyEvaluationMode(\"ENABLE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n policy:\n type: gcp:binaryauthorization:Policy\n properties:\n defaultAdmissionRule:\n evaluationMode: REQUIRE_ATTESTATION\n enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG\n requireAttestationsBies:\n - ${attestor.name}\n globalPolicyEvaluationMode: ENABLE\n note:\n type: gcp:containeranalysis:Note\n properties:\n name: test-attestor-note\n attestationAuthority:\n hint:\n humanReadableName: My attestor\n attestor:\n type: gcp:binaryauthorization:Attestor\n properties:\n name: test-attestor\n attestationAuthorityNote:\n noteReference: ${note.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}`\n\n* `{{project}}`\n\nWhen using the `pulumi import` command, Policy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:binaryauthorization/policy:Policy default projects/{{project}}\n```\n\n```sh\n$ pulumi import gcp:binaryauthorization/policy:Policy default {{project}}\n```\n\n", + "description": "A policy for container image binary authorization.\n\n\nTo get more information about Policy, see:\n\n* [API documentation](https://cloud.google.com/binary-authorization/docs/reference/rest/)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/binary-authorization/)\n\n## Example Usage\n\n### Binary Authorization Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst note = new gcp.containeranalysis.Note(\"note\", {\n name: \"test-attestor-note\",\n attestationAuthority: {\n hint: {\n humanReadableName: \"My attestor\",\n },\n },\n});\nconst attestor = new gcp.binaryauthorization.Attestor(\"attestor\", {\n name: \"test-attestor\",\n attestationAuthorityNote: {\n noteReference: note.name,\n },\n});\nconst policy = new gcp.binaryauthorization.Policy(\"policy\", {\n admissionWhitelistPatterns: [{\n namePattern: \"gcr.io/google_containers/*\",\n }],\n defaultAdmissionRule: {\n evaluationMode: \"ALWAYS_ALLOW\",\n enforcementMode: \"ENFORCED_BLOCK_AND_AUDIT_LOG\",\n },\n clusterAdmissionRules: [{\n cluster: \"us-central1-a.prod-cluster\",\n evaluationMode: \"REQUIRE_ATTESTATION\",\n enforcementMode: \"ENFORCED_BLOCK_AND_AUDIT_LOG\",\n requireAttestationsBies: [attestor.name],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnote = gcp.containeranalysis.Note(\"note\",\n name=\"test-attestor-note\",\n attestation_authority={\n \"hint\": {\n \"human_readable_name\": \"My attestor\",\n },\n })\nattestor = gcp.binaryauthorization.Attestor(\"attestor\",\n name=\"test-attestor\",\n attestation_authority_note={\n \"note_reference\": note.name,\n })\npolicy = gcp.binaryauthorization.Policy(\"policy\",\n admission_whitelist_patterns=[{\n \"name_pattern\": \"gcr.io/google_containers/*\",\n }],\n default_admission_rule={\n \"evaluation_mode\": \"ALWAYS_ALLOW\",\n \"enforcement_mode\": \"ENFORCED_BLOCK_AND_AUDIT_LOG\",\n },\n cluster_admission_rules=[{\n \"cluster\": \"us-central1-a.prod-cluster\",\n \"evaluation_mode\": \"REQUIRE_ATTESTATION\",\n \"enforcement_mode\": \"ENFORCED_BLOCK_AND_AUDIT_LOG\",\n \"require_attestations_bies\": [attestor.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 note = new Gcp.ContainerAnalysis.Note(\"note\", new()\n {\n Name = \"test-attestor-note\",\n AttestationAuthority = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityArgs\n {\n Hint = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityHintArgs\n {\n HumanReadableName = \"My attestor\",\n },\n },\n });\n\n var attestor = new Gcp.BinaryAuthorization.Attestor(\"attestor\", new()\n {\n Name = \"test-attestor\",\n AttestationAuthorityNote = new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNoteArgs\n {\n NoteReference = note.Name,\n },\n });\n\n var policy = new Gcp.BinaryAuthorization.Policy(\"policy\", new()\n {\n AdmissionWhitelistPatterns = new[]\n {\n new Gcp.BinaryAuthorization.Inputs.PolicyAdmissionWhitelistPatternArgs\n {\n NamePattern = \"gcr.io/google_containers/*\",\n },\n },\n DefaultAdmissionRule = new Gcp.BinaryAuthorization.Inputs.PolicyDefaultAdmissionRuleArgs\n {\n EvaluationMode = \"ALWAYS_ALLOW\",\n EnforcementMode = \"ENFORCED_BLOCK_AND_AUDIT_LOG\",\n },\n ClusterAdmissionRules = new[]\n {\n new Gcp.BinaryAuthorization.Inputs.PolicyClusterAdmissionRuleArgs\n {\n Cluster = \"us-central1-a.prod-cluster\",\n EvaluationMode = \"REQUIRE_ATTESTATION\",\n EnforcementMode = \"ENFORCED_BLOCK_AND_AUDIT_LOG\",\n RequireAttestationsBies = new[]\n {\n attestor.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/binaryauthorization\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/containeranalysis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnote, err := containeranalysis.NewNote(ctx, \"note\", \u0026containeranalysis.NoteArgs{\n\t\t\tName: pulumi.String(\"test-attestor-note\"),\n\t\t\tAttestationAuthority: \u0026containeranalysis.NoteAttestationAuthorityArgs{\n\t\t\t\tHint: \u0026containeranalysis.NoteAttestationAuthorityHintArgs{\n\t\t\t\t\tHumanReadableName: pulumi.String(\"My attestor\"),\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\tattestor, err := binaryauthorization.NewAttestor(ctx, \"attestor\", \u0026binaryauthorization.AttestorArgs{\n\t\t\tName: pulumi.String(\"test-attestor\"),\n\t\t\tAttestationAuthorityNote: \u0026binaryauthorization.AttestorAttestationAuthorityNoteArgs{\n\t\t\t\tNoteReference: note.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = binaryauthorization.NewPolicy(ctx, \"policy\", \u0026binaryauthorization.PolicyArgs{\n\t\t\tAdmissionWhitelistPatterns: binaryauthorization.PolicyAdmissionWhitelistPatternArray{\n\t\t\t\t\u0026binaryauthorization.PolicyAdmissionWhitelistPatternArgs{\n\t\t\t\t\tNamePattern: pulumi.String(\"gcr.io/google_containers/*\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDefaultAdmissionRule: \u0026binaryauthorization.PolicyDefaultAdmissionRuleArgs{\n\t\t\t\tEvaluationMode: pulumi.String(\"ALWAYS_ALLOW\"),\n\t\t\t\tEnforcementMode: pulumi.String(\"ENFORCED_BLOCK_AND_AUDIT_LOG\"),\n\t\t\t},\n\t\t\tClusterAdmissionRules: binaryauthorization.PolicyClusterAdmissionRuleArray{\n\t\t\t\t\u0026binaryauthorization.PolicyClusterAdmissionRuleArgs{\n\t\t\t\t\tCluster: pulumi.String(\"us-central1-a.prod-cluster\"),\n\t\t\t\t\tEvaluationMode: pulumi.String(\"REQUIRE_ATTESTATION\"),\n\t\t\t\t\tEnforcementMode: pulumi.String(\"ENFORCED_BLOCK_AND_AUDIT_LOG\"),\n\t\t\t\t\tRequireAttestationsBies: pulumi.StringArray{\n\t\t\t\t\t\tattestor.Name,\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.containeranalysis.Note;\nimport com.pulumi.gcp.containeranalysis.NoteArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityHintArgs;\nimport com.pulumi.gcp.binaryauthorization.Attestor;\nimport com.pulumi.gcp.binaryauthorization.AttestorArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.AttestorAttestationAuthorityNoteArgs;\nimport com.pulumi.gcp.binaryauthorization.Policy;\nimport com.pulumi.gcp.binaryauthorization.PolicyArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.PolicyAdmissionWhitelistPatternArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.PolicyDefaultAdmissionRuleArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.PolicyClusterAdmissionRuleArgs;\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 note = new Note(\"note\", NoteArgs.builder()\n .name(\"test-attestor-note\")\n .attestationAuthority(NoteAttestationAuthorityArgs.builder()\n .hint(NoteAttestationAuthorityHintArgs.builder()\n .humanReadableName(\"My attestor\")\n .build())\n .build())\n .build());\n\n var attestor = new Attestor(\"attestor\", AttestorArgs.builder()\n .name(\"test-attestor\")\n .attestationAuthorityNote(AttestorAttestationAuthorityNoteArgs.builder()\n .noteReference(note.name())\n .build())\n .build());\n\n var policy = new Policy(\"policy\", PolicyArgs.builder()\n .admissionWhitelistPatterns(PolicyAdmissionWhitelistPatternArgs.builder()\n .namePattern(\"gcr.io/google_containers/*\")\n .build())\n .defaultAdmissionRule(PolicyDefaultAdmissionRuleArgs.builder()\n .evaluationMode(\"ALWAYS_ALLOW\")\n .enforcementMode(\"ENFORCED_BLOCK_AND_AUDIT_LOG\")\n .build())\n .clusterAdmissionRules(PolicyClusterAdmissionRuleArgs.builder()\n .cluster(\"us-central1-a.prod-cluster\")\n .evaluationMode(\"REQUIRE_ATTESTATION\")\n .enforcementMode(\"ENFORCED_BLOCK_AND_AUDIT_LOG\")\n .requireAttestationsBies(attestor.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n policy:\n type: gcp:binaryauthorization:Policy\n properties:\n admissionWhitelistPatterns:\n - namePattern: gcr.io/google_containers/*\n defaultAdmissionRule:\n evaluationMode: ALWAYS_ALLOW\n enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG\n clusterAdmissionRules:\n - cluster: us-central1-a.prod-cluster\n evaluationMode: REQUIRE_ATTESTATION\n enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG\n requireAttestationsBies:\n - ${attestor.name}\n note:\n type: gcp:containeranalysis:Note\n properties:\n name: test-attestor-note\n attestationAuthority:\n hint:\n humanReadableName: My attestor\n attestor:\n type: gcp:binaryauthorization:Attestor\n properties:\n name: test-attestor\n attestationAuthorityNote:\n noteReference: ${note.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Binary Authorization Policy Global Evaluation\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst note = new gcp.containeranalysis.Note(\"note\", {\n name: \"test-attestor-note\",\n attestationAuthority: {\n hint: {\n humanReadableName: \"My attestor\",\n },\n },\n});\nconst attestor = new gcp.binaryauthorization.Attestor(\"attestor\", {\n name: \"test-attestor\",\n attestationAuthorityNote: {\n noteReference: note.name,\n },\n});\nconst policy = new gcp.binaryauthorization.Policy(\"policy\", {\n defaultAdmissionRule: {\n evaluationMode: \"REQUIRE_ATTESTATION\",\n enforcementMode: \"ENFORCED_BLOCK_AND_AUDIT_LOG\",\n requireAttestationsBies: [attestor.name],\n },\n globalPolicyEvaluationMode: \"ENABLE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnote = gcp.containeranalysis.Note(\"note\",\n name=\"test-attestor-note\",\n attestation_authority={\n \"hint\": {\n \"human_readable_name\": \"My attestor\",\n },\n })\nattestor = gcp.binaryauthorization.Attestor(\"attestor\",\n name=\"test-attestor\",\n attestation_authority_note={\n \"note_reference\": note.name,\n })\npolicy = gcp.binaryauthorization.Policy(\"policy\",\n default_admission_rule={\n \"evaluation_mode\": \"REQUIRE_ATTESTATION\",\n \"enforcement_mode\": \"ENFORCED_BLOCK_AND_AUDIT_LOG\",\n \"require_attestations_bies\": [attestor.name],\n },\n global_policy_evaluation_mode=\"ENABLE\")\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 note = new Gcp.ContainerAnalysis.Note(\"note\", new()\n {\n Name = \"test-attestor-note\",\n AttestationAuthority = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityArgs\n {\n Hint = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityHintArgs\n {\n HumanReadableName = \"My attestor\",\n },\n },\n });\n\n var attestor = new Gcp.BinaryAuthorization.Attestor(\"attestor\", new()\n {\n Name = \"test-attestor\",\n AttestationAuthorityNote = new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNoteArgs\n {\n NoteReference = note.Name,\n },\n });\n\n var policy = new Gcp.BinaryAuthorization.Policy(\"policy\", new()\n {\n DefaultAdmissionRule = new Gcp.BinaryAuthorization.Inputs.PolicyDefaultAdmissionRuleArgs\n {\n EvaluationMode = \"REQUIRE_ATTESTATION\",\n EnforcementMode = \"ENFORCED_BLOCK_AND_AUDIT_LOG\",\n RequireAttestationsBies = new[]\n {\n attestor.Name,\n },\n },\n GlobalPolicyEvaluationMode = \"ENABLE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/binaryauthorization\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/containeranalysis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnote, err := containeranalysis.NewNote(ctx, \"note\", \u0026containeranalysis.NoteArgs{\n\t\t\tName: pulumi.String(\"test-attestor-note\"),\n\t\t\tAttestationAuthority: \u0026containeranalysis.NoteAttestationAuthorityArgs{\n\t\t\t\tHint: \u0026containeranalysis.NoteAttestationAuthorityHintArgs{\n\t\t\t\t\tHumanReadableName: pulumi.String(\"My attestor\"),\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\tattestor, err := binaryauthorization.NewAttestor(ctx, \"attestor\", \u0026binaryauthorization.AttestorArgs{\n\t\t\tName: pulumi.String(\"test-attestor\"),\n\t\t\tAttestationAuthorityNote: \u0026binaryauthorization.AttestorAttestationAuthorityNoteArgs{\n\t\t\t\tNoteReference: note.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = binaryauthorization.NewPolicy(ctx, \"policy\", \u0026binaryauthorization.PolicyArgs{\n\t\t\tDefaultAdmissionRule: \u0026binaryauthorization.PolicyDefaultAdmissionRuleArgs{\n\t\t\t\tEvaluationMode: pulumi.String(\"REQUIRE_ATTESTATION\"),\n\t\t\t\tEnforcementMode: pulumi.String(\"ENFORCED_BLOCK_AND_AUDIT_LOG\"),\n\t\t\t\tRequireAttestationsBies: pulumi.StringArray{\n\t\t\t\t\tattestor.Name,\n\t\t\t\t},\n\t\t\t},\n\t\t\tGlobalPolicyEvaluationMode: pulumi.String(\"ENABLE\"),\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.containeranalysis.Note;\nimport com.pulumi.gcp.containeranalysis.NoteArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityHintArgs;\nimport com.pulumi.gcp.binaryauthorization.Attestor;\nimport com.pulumi.gcp.binaryauthorization.AttestorArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.AttestorAttestationAuthorityNoteArgs;\nimport com.pulumi.gcp.binaryauthorization.Policy;\nimport com.pulumi.gcp.binaryauthorization.PolicyArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.PolicyDefaultAdmissionRuleArgs;\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 note = new Note(\"note\", NoteArgs.builder()\n .name(\"test-attestor-note\")\n .attestationAuthority(NoteAttestationAuthorityArgs.builder()\n .hint(NoteAttestationAuthorityHintArgs.builder()\n .humanReadableName(\"My attestor\")\n .build())\n .build())\n .build());\n\n var attestor = new Attestor(\"attestor\", AttestorArgs.builder()\n .name(\"test-attestor\")\n .attestationAuthorityNote(AttestorAttestationAuthorityNoteArgs.builder()\n .noteReference(note.name())\n .build())\n .build());\n\n var policy = new Policy(\"policy\", PolicyArgs.builder()\n .defaultAdmissionRule(PolicyDefaultAdmissionRuleArgs.builder()\n .evaluationMode(\"REQUIRE_ATTESTATION\")\n .enforcementMode(\"ENFORCED_BLOCK_AND_AUDIT_LOG\")\n .requireAttestationsBies(attestor.name())\n .build())\n .globalPolicyEvaluationMode(\"ENABLE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n policy:\n type: gcp:binaryauthorization:Policy\n properties:\n defaultAdmissionRule:\n evaluationMode: REQUIRE_ATTESTATION\n enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG\n requireAttestationsBies:\n - ${attestor.name}\n globalPolicyEvaluationMode: ENABLE\n note:\n type: gcp:containeranalysis:Note\n properties:\n name: test-attestor-note\n attestationAuthority:\n hint:\n humanReadableName: My attestor\n attestor:\n type: gcp:binaryauthorization:Attestor\n properties:\n name: test-attestor\n attestationAuthorityNote:\n noteReference: ${note.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}`\n\n* `{{project}}`\n\nWhen using the `pulumi import` command, Policy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:binaryauthorization/policy:Policy default projects/{{project}}\n```\n\n```sh\n$ pulumi import gcp:binaryauthorization/policy:Policy default {{project}}\n```\n\n", "properties": { "admissionWhitelistPatterns": { "type": "array", @@ -129054,7 +129054,7 @@ } }, "gcp:blockchainnodeengine/blockchainNodes:BlockchainNodes": { - "description": "A representation of a blockchain node.\n\n\nTo get more information about BlockchainNodes, see:\n\n* [API documentation](https://cloud.google.com/blockchain-node-engine/docs/reference/rest/v1/projects.locations.blockchainNodes)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/blockchain-node-engine)\n\n## Example Usage\n\n### Blockchain Nodes Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNode = new gcp.blockchainnodeengine.BlockchainNodes(\"default_node\", {\n location: \"us-central1\",\n blockchainType: \"ETHEREUM\",\n blockchainNodeId: \"blockchain_basic_node\",\n ethereumDetails: {\n apiEnableAdmin: true,\n apiEnableDebug: true,\n validatorConfig: {\n mevRelayUrls: [\n \"https://mev1.example.org/\",\n \"https://mev2.example.org/\",\n ],\n },\n nodeType: \"ARCHIVE\",\n consensusClient: \"LIGHTHOUSE\",\n executionClient: \"ERIGON\",\n network: \"MAINNET\",\n },\n labels: {\n environment: \"dev\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_node = gcp.blockchainnodeengine.BlockchainNodes(\"default_node\",\n location=\"us-central1\",\n blockchain_type=\"ETHEREUM\",\n blockchain_node_id=\"blockchain_basic_node\",\n ethereum_details={\n \"apiEnableAdmin\": True,\n \"apiEnableDebug\": True,\n \"validatorConfig\": {\n \"mevRelayUrls\": [\n \"https://mev1.example.org/\",\n \"https://mev2.example.org/\",\n ],\n },\n \"nodeType\": \"ARCHIVE\",\n \"consensusClient\": \"LIGHTHOUSE\",\n \"executionClient\": \"ERIGON\",\n \"network\": \"MAINNET\",\n },\n labels={\n \"environment\": \"dev\",\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 defaultNode = new Gcp.BlockchainNodeEngine.BlockchainNodes(\"default_node\", new()\n {\n Location = \"us-central1\",\n BlockchainType = \"ETHEREUM\",\n BlockchainNodeId = \"blockchain_basic_node\",\n EthereumDetails = new Gcp.BlockchainNodeEngine.Inputs.BlockchainNodesEthereumDetailsArgs\n {\n ApiEnableAdmin = true,\n ApiEnableDebug = true,\n ValidatorConfig = new Gcp.BlockchainNodeEngine.Inputs.BlockchainNodesEthereumDetailsValidatorConfigArgs\n {\n MevRelayUrls = new[]\n {\n \"https://mev1.example.org/\",\n \"https://mev2.example.org/\",\n },\n },\n NodeType = \"ARCHIVE\",\n ConsensusClient = \"LIGHTHOUSE\",\n ExecutionClient = \"ERIGON\",\n Network = \"MAINNET\",\n },\n Labels = \n {\n { \"environment\", \"dev\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/blockchainnodeengine\"\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 := blockchainnodeengine.NewBlockchainNodes(ctx, \"default_node\", \u0026blockchainnodeengine.BlockchainNodesArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBlockchainType: pulumi.String(\"ETHEREUM\"),\n\t\t\tBlockchainNodeId: pulumi.String(\"blockchain_basic_node\"),\n\t\t\tEthereumDetails: \u0026blockchainnodeengine.BlockchainNodesEthereumDetailsArgs{\n\t\t\t\tApiEnableAdmin: pulumi.Bool(true),\n\t\t\t\tApiEnableDebug: pulumi.Bool(true),\n\t\t\t\tValidatorConfig: \u0026blockchainnodeengine.BlockchainNodesEthereumDetailsValidatorConfigArgs{\n\t\t\t\t\tMevRelayUrls: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"https://mev1.example.org/\"),\n\t\t\t\t\t\tpulumi.String(\"https://mev2.example.org/\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNodeType: pulumi.String(\"ARCHIVE\"),\n\t\t\t\tConsensusClient: pulumi.String(\"LIGHTHOUSE\"),\n\t\t\t\tExecutionClient: pulumi.String(\"ERIGON\"),\n\t\t\t\tNetwork: pulumi.String(\"MAINNET\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"environment\": pulumi.String(\"dev\"),\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.blockchainnodeengine.BlockchainNodes;\nimport com.pulumi.gcp.blockchainnodeengine.BlockchainNodesArgs;\nimport com.pulumi.gcp.blockchainnodeengine.inputs.BlockchainNodesEthereumDetailsArgs;\nimport com.pulumi.gcp.blockchainnodeengine.inputs.BlockchainNodesEthereumDetailsValidatorConfigArgs;\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 defaultNode = new BlockchainNodes(\"defaultNode\", BlockchainNodesArgs.builder()\n .location(\"us-central1\")\n .blockchainType(\"ETHEREUM\")\n .blockchainNodeId(\"blockchain_basic_node\")\n .ethereumDetails(BlockchainNodesEthereumDetailsArgs.builder()\n .apiEnableAdmin(true)\n .apiEnableDebug(true)\n .validatorConfig(BlockchainNodesEthereumDetailsValidatorConfigArgs.builder()\n .mevRelayUrls( \n \"https://mev1.example.org/\",\n \"https://mev2.example.org/\")\n .build())\n .nodeType(\"ARCHIVE\")\n .consensusClient(\"LIGHTHOUSE\")\n .executionClient(\"ERIGON\")\n .network(\"MAINNET\")\n .build())\n .labels(Map.of(\"environment\", \"dev\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultNode:\n type: gcp:blockchainnodeengine:BlockchainNodes\n name: default_node\n properties:\n location: us-central1\n blockchainType: ETHEREUM\n blockchainNodeId: blockchain_basic_node\n ethereumDetails:\n apiEnableAdmin: true\n apiEnableDebug: true\n validatorConfig:\n mevRelayUrls:\n - https://mev1.example.org/\n - https://mev2.example.org/\n nodeType: ARCHIVE\n consensusClient: LIGHTHOUSE\n executionClient: ERIGON\n network: MAINNET\n labels:\n environment: dev\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Blockchain Nodes Geth Details\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNodeGeth = new gcp.blockchainnodeengine.BlockchainNodes(\"default_node_geth\", {\n location: \"us-central1\",\n blockchainType: \"ETHEREUM\",\n blockchainNodeId: \"blockchain_geth_node\",\n ethereumDetails: {\n apiEnableAdmin: true,\n apiEnableDebug: true,\n validatorConfig: {\n mevRelayUrls: [\n \"https://mev1.example.org/\",\n \"https://mev2.example.org/\",\n ],\n },\n nodeType: \"FULL\",\n consensusClient: \"LIGHTHOUSE\",\n executionClient: \"GETH\",\n network: \"MAINNET\",\n gethDetails: {\n garbageCollectionMode: \"FULL\",\n },\n },\n labels: {\n environment: \"dev\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_node_geth = gcp.blockchainnodeengine.BlockchainNodes(\"default_node_geth\",\n location=\"us-central1\",\n blockchain_type=\"ETHEREUM\",\n blockchain_node_id=\"blockchain_geth_node\",\n ethereum_details={\n \"apiEnableAdmin\": True,\n \"apiEnableDebug\": True,\n \"validatorConfig\": {\n \"mevRelayUrls\": [\n \"https://mev1.example.org/\",\n \"https://mev2.example.org/\",\n ],\n },\n \"nodeType\": \"FULL\",\n \"consensusClient\": \"LIGHTHOUSE\",\n \"executionClient\": \"GETH\",\n \"network\": \"MAINNET\",\n \"gethDetails\": {\n \"garbageCollectionMode\": \"FULL\",\n },\n },\n labels={\n \"environment\": \"dev\",\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 defaultNodeGeth = new Gcp.BlockchainNodeEngine.BlockchainNodes(\"default_node_geth\", new()\n {\n Location = \"us-central1\",\n BlockchainType = \"ETHEREUM\",\n BlockchainNodeId = \"blockchain_geth_node\",\n EthereumDetails = new Gcp.BlockchainNodeEngine.Inputs.BlockchainNodesEthereumDetailsArgs\n {\n ApiEnableAdmin = true,\n ApiEnableDebug = true,\n ValidatorConfig = new Gcp.BlockchainNodeEngine.Inputs.BlockchainNodesEthereumDetailsValidatorConfigArgs\n {\n MevRelayUrls = new[]\n {\n \"https://mev1.example.org/\",\n \"https://mev2.example.org/\",\n },\n },\n NodeType = \"FULL\",\n ConsensusClient = \"LIGHTHOUSE\",\n ExecutionClient = \"GETH\",\n Network = \"MAINNET\",\n GethDetails = new Gcp.BlockchainNodeEngine.Inputs.BlockchainNodesEthereumDetailsGethDetailsArgs\n {\n GarbageCollectionMode = \"FULL\",\n },\n },\n Labels = \n {\n { \"environment\", \"dev\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/blockchainnodeengine\"\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 := blockchainnodeengine.NewBlockchainNodes(ctx, \"default_node_geth\", \u0026blockchainnodeengine.BlockchainNodesArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBlockchainType: pulumi.String(\"ETHEREUM\"),\n\t\t\tBlockchainNodeId: pulumi.String(\"blockchain_geth_node\"),\n\t\t\tEthereumDetails: \u0026blockchainnodeengine.BlockchainNodesEthereumDetailsArgs{\n\t\t\t\tApiEnableAdmin: pulumi.Bool(true),\n\t\t\t\tApiEnableDebug: pulumi.Bool(true),\n\t\t\t\tValidatorConfig: \u0026blockchainnodeengine.BlockchainNodesEthereumDetailsValidatorConfigArgs{\n\t\t\t\t\tMevRelayUrls: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"https://mev1.example.org/\"),\n\t\t\t\t\t\tpulumi.String(\"https://mev2.example.org/\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNodeType: pulumi.String(\"FULL\"),\n\t\t\t\tConsensusClient: pulumi.String(\"LIGHTHOUSE\"),\n\t\t\t\tExecutionClient: pulumi.String(\"GETH\"),\n\t\t\t\tNetwork: pulumi.String(\"MAINNET\"),\n\t\t\t\tGethDetails: \u0026blockchainnodeengine.BlockchainNodesEthereumDetailsGethDetailsArgs{\n\t\t\t\t\tGarbageCollectionMode: pulumi.String(\"FULL\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"environment\": pulumi.String(\"dev\"),\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.blockchainnodeengine.BlockchainNodes;\nimport com.pulumi.gcp.blockchainnodeengine.BlockchainNodesArgs;\nimport com.pulumi.gcp.blockchainnodeengine.inputs.BlockchainNodesEthereumDetailsArgs;\nimport com.pulumi.gcp.blockchainnodeengine.inputs.BlockchainNodesEthereumDetailsValidatorConfigArgs;\nimport com.pulumi.gcp.blockchainnodeengine.inputs.BlockchainNodesEthereumDetailsGethDetailsArgs;\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 defaultNodeGeth = new BlockchainNodes(\"defaultNodeGeth\", BlockchainNodesArgs.builder()\n .location(\"us-central1\")\n .blockchainType(\"ETHEREUM\")\n .blockchainNodeId(\"blockchain_geth_node\")\n .ethereumDetails(BlockchainNodesEthereumDetailsArgs.builder()\n .apiEnableAdmin(true)\n .apiEnableDebug(true)\n .validatorConfig(BlockchainNodesEthereumDetailsValidatorConfigArgs.builder()\n .mevRelayUrls( \n \"https://mev1.example.org/\",\n \"https://mev2.example.org/\")\n .build())\n .nodeType(\"FULL\")\n .consensusClient(\"LIGHTHOUSE\")\n .executionClient(\"GETH\")\n .network(\"MAINNET\")\n .gethDetails(BlockchainNodesEthereumDetailsGethDetailsArgs.builder()\n .garbageCollectionMode(\"FULL\")\n .build())\n .build())\n .labels(Map.of(\"environment\", \"dev\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultNodeGeth:\n type: gcp:blockchainnodeengine:BlockchainNodes\n name: default_node_geth\n properties:\n location: us-central1\n blockchainType: ETHEREUM\n blockchainNodeId: blockchain_geth_node\n ethereumDetails:\n apiEnableAdmin: true\n apiEnableDebug: true\n validatorConfig:\n mevRelayUrls:\n - https://mev1.example.org/\n - https://mev2.example.org/\n nodeType: FULL\n consensusClient: LIGHTHOUSE\n executionClient: GETH\n network: MAINNET\n gethDetails:\n garbageCollectionMode: FULL\n labels:\n environment: dev\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBlockchainNodes can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/blockchainNodes/{{blockchain_node_id}}`\n\n* `{{project}}/{{location}}/{{blockchain_node_id}}`\n\n* `{{location}}/{{blockchain_node_id}}`\n\nWhen using the `pulumi import` command, BlockchainNodes can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:blockchainnodeengine/blockchainNodes:BlockchainNodes default projects/{{project}}/locations/{{location}}/blockchainNodes/{{blockchain_node_id}}\n```\n\n```sh\n$ pulumi import gcp:blockchainnodeengine/blockchainNodes:BlockchainNodes default {{project}}/{{location}}/{{blockchain_node_id}}\n```\n\n```sh\n$ pulumi import gcp:blockchainnodeengine/blockchainNodes:BlockchainNodes default {{location}}/{{blockchain_node_id}}\n```\n\n", + "description": "A representation of a blockchain node.\n\n\nTo get more information about BlockchainNodes, see:\n\n* [API documentation](https://cloud.google.com/blockchain-node-engine/docs/reference/rest/v1/projects.locations.blockchainNodes)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/blockchain-node-engine)\n\n## Example Usage\n\n### Blockchain Nodes Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNode = new gcp.blockchainnodeengine.BlockchainNodes(\"default_node\", {\n location: \"us-central1\",\n blockchainType: \"ETHEREUM\",\n blockchainNodeId: \"blockchain_basic_node\",\n ethereumDetails: {\n apiEnableAdmin: true,\n apiEnableDebug: true,\n validatorConfig: {\n mevRelayUrls: [\n \"https://mev1.example.org/\",\n \"https://mev2.example.org/\",\n ],\n },\n nodeType: \"ARCHIVE\",\n consensusClient: \"LIGHTHOUSE\",\n executionClient: \"ERIGON\",\n network: \"MAINNET\",\n },\n labels: {\n environment: \"dev\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_node = gcp.blockchainnodeengine.BlockchainNodes(\"default_node\",\n location=\"us-central1\",\n blockchain_type=\"ETHEREUM\",\n blockchain_node_id=\"blockchain_basic_node\",\n ethereum_details={\n \"api_enable_admin\": True,\n \"api_enable_debug\": True,\n \"validator_config\": {\n \"mev_relay_urls\": [\n \"https://mev1.example.org/\",\n \"https://mev2.example.org/\",\n ],\n },\n \"node_type\": \"ARCHIVE\",\n \"consensus_client\": \"LIGHTHOUSE\",\n \"execution_client\": \"ERIGON\",\n \"network\": \"MAINNET\",\n },\n labels={\n \"environment\": \"dev\",\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 defaultNode = new Gcp.BlockchainNodeEngine.BlockchainNodes(\"default_node\", new()\n {\n Location = \"us-central1\",\n BlockchainType = \"ETHEREUM\",\n BlockchainNodeId = \"blockchain_basic_node\",\n EthereumDetails = new Gcp.BlockchainNodeEngine.Inputs.BlockchainNodesEthereumDetailsArgs\n {\n ApiEnableAdmin = true,\n ApiEnableDebug = true,\n ValidatorConfig = new Gcp.BlockchainNodeEngine.Inputs.BlockchainNodesEthereumDetailsValidatorConfigArgs\n {\n MevRelayUrls = new[]\n {\n \"https://mev1.example.org/\",\n \"https://mev2.example.org/\",\n },\n },\n NodeType = \"ARCHIVE\",\n ConsensusClient = \"LIGHTHOUSE\",\n ExecutionClient = \"ERIGON\",\n Network = \"MAINNET\",\n },\n Labels = \n {\n { \"environment\", \"dev\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/blockchainnodeengine\"\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 := blockchainnodeengine.NewBlockchainNodes(ctx, \"default_node\", \u0026blockchainnodeengine.BlockchainNodesArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBlockchainType: pulumi.String(\"ETHEREUM\"),\n\t\t\tBlockchainNodeId: pulumi.String(\"blockchain_basic_node\"),\n\t\t\tEthereumDetails: \u0026blockchainnodeengine.BlockchainNodesEthereumDetailsArgs{\n\t\t\t\tApiEnableAdmin: pulumi.Bool(true),\n\t\t\t\tApiEnableDebug: pulumi.Bool(true),\n\t\t\t\tValidatorConfig: \u0026blockchainnodeengine.BlockchainNodesEthereumDetailsValidatorConfigArgs{\n\t\t\t\t\tMevRelayUrls: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"https://mev1.example.org/\"),\n\t\t\t\t\t\tpulumi.String(\"https://mev2.example.org/\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNodeType: pulumi.String(\"ARCHIVE\"),\n\t\t\t\tConsensusClient: pulumi.String(\"LIGHTHOUSE\"),\n\t\t\t\tExecutionClient: pulumi.String(\"ERIGON\"),\n\t\t\t\tNetwork: pulumi.String(\"MAINNET\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"environment\": pulumi.String(\"dev\"),\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.blockchainnodeengine.BlockchainNodes;\nimport com.pulumi.gcp.blockchainnodeengine.BlockchainNodesArgs;\nimport com.pulumi.gcp.blockchainnodeengine.inputs.BlockchainNodesEthereumDetailsArgs;\nimport com.pulumi.gcp.blockchainnodeengine.inputs.BlockchainNodesEthereumDetailsValidatorConfigArgs;\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 defaultNode = new BlockchainNodes(\"defaultNode\", BlockchainNodesArgs.builder()\n .location(\"us-central1\")\n .blockchainType(\"ETHEREUM\")\n .blockchainNodeId(\"blockchain_basic_node\")\n .ethereumDetails(BlockchainNodesEthereumDetailsArgs.builder()\n .apiEnableAdmin(true)\n .apiEnableDebug(true)\n .validatorConfig(BlockchainNodesEthereumDetailsValidatorConfigArgs.builder()\n .mevRelayUrls( \n \"https://mev1.example.org/\",\n \"https://mev2.example.org/\")\n .build())\n .nodeType(\"ARCHIVE\")\n .consensusClient(\"LIGHTHOUSE\")\n .executionClient(\"ERIGON\")\n .network(\"MAINNET\")\n .build())\n .labels(Map.of(\"environment\", \"dev\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultNode:\n type: gcp:blockchainnodeengine:BlockchainNodes\n name: default_node\n properties:\n location: us-central1\n blockchainType: ETHEREUM\n blockchainNodeId: blockchain_basic_node\n ethereumDetails:\n apiEnableAdmin: true\n apiEnableDebug: true\n validatorConfig:\n mevRelayUrls:\n - https://mev1.example.org/\n - https://mev2.example.org/\n nodeType: ARCHIVE\n consensusClient: LIGHTHOUSE\n executionClient: ERIGON\n network: MAINNET\n labels:\n environment: dev\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Blockchain Nodes Geth Details\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNodeGeth = new gcp.blockchainnodeengine.BlockchainNodes(\"default_node_geth\", {\n location: \"us-central1\",\n blockchainType: \"ETHEREUM\",\n blockchainNodeId: \"blockchain_geth_node\",\n ethereumDetails: {\n apiEnableAdmin: true,\n apiEnableDebug: true,\n validatorConfig: {\n mevRelayUrls: [\n \"https://mev1.example.org/\",\n \"https://mev2.example.org/\",\n ],\n },\n nodeType: \"FULL\",\n consensusClient: \"LIGHTHOUSE\",\n executionClient: \"GETH\",\n network: \"MAINNET\",\n gethDetails: {\n garbageCollectionMode: \"FULL\",\n },\n },\n labels: {\n environment: \"dev\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_node_geth = gcp.blockchainnodeengine.BlockchainNodes(\"default_node_geth\",\n location=\"us-central1\",\n blockchain_type=\"ETHEREUM\",\n blockchain_node_id=\"blockchain_geth_node\",\n ethereum_details={\n \"api_enable_admin\": True,\n \"api_enable_debug\": True,\n \"validator_config\": {\n \"mev_relay_urls\": [\n \"https://mev1.example.org/\",\n \"https://mev2.example.org/\",\n ],\n },\n \"node_type\": \"FULL\",\n \"consensus_client\": \"LIGHTHOUSE\",\n \"execution_client\": \"GETH\",\n \"network\": \"MAINNET\",\n \"geth_details\": {\n \"garbage_collection_mode\": \"FULL\",\n },\n },\n labels={\n \"environment\": \"dev\",\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 defaultNodeGeth = new Gcp.BlockchainNodeEngine.BlockchainNodes(\"default_node_geth\", new()\n {\n Location = \"us-central1\",\n BlockchainType = \"ETHEREUM\",\n BlockchainNodeId = \"blockchain_geth_node\",\n EthereumDetails = new Gcp.BlockchainNodeEngine.Inputs.BlockchainNodesEthereumDetailsArgs\n {\n ApiEnableAdmin = true,\n ApiEnableDebug = true,\n ValidatorConfig = new Gcp.BlockchainNodeEngine.Inputs.BlockchainNodesEthereumDetailsValidatorConfigArgs\n {\n MevRelayUrls = new[]\n {\n \"https://mev1.example.org/\",\n \"https://mev2.example.org/\",\n },\n },\n NodeType = \"FULL\",\n ConsensusClient = \"LIGHTHOUSE\",\n ExecutionClient = \"GETH\",\n Network = \"MAINNET\",\n GethDetails = new Gcp.BlockchainNodeEngine.Inputs.BlockchainNodesEthereumDetailsGethDetailsArgs\n {\n GarbageCollectionMode = \"FULL\",\n },\n },\n Labels = \n {\n { \"environment\", \"dev\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/blockchainnodeengine\"\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 := blockchainnodeengine.NewBlockchainNodes(ctx, \"default_node_geth\", \u0026blockchainnodeengine.BlockchainNodesArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBlockchainType: pulumi.String(\"ETHEREUM\"),\n\t\t\tBlockchainNodeId: pulumi.String(\"blockchain_geth_node\"),\n\t\t\tEthereumDetails: \u0026blockchainnodeengine.BlockchainNodesEthereumDetailsArgs{\n\t\t\t\tApiEnableAdmin: pulumi.Bool(true),\n\t\t\t\tApiEnableDebug: pulumi.Bool(true),\n\t\t\t\tValidatorConfig: \u0026blockchainnodeengine.BlockchainNodesEthereumDetailsValidatorConfigArgs{\n\t\t\t\t\tMevRelayUrls: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"https://mev1.example.org/\"),\n\t\t\t\t\t\tpulumi.String(\"https://mev2.example.org/\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNodeType: pulumi.String(\"FULL\"),\n\t\t\t\tConsensusClient: pulumi.String(\"LIGHTHOUSE\"),\n\t\t\t\tExecutionClient: pulumi.String(\"GETH\"),\n\t\t\t\tNetwork: pulumi.String(\"MAINNET\"),\n\t\t\t\tGethDetails: \u0026blockchainnodeengine.BlockchainNodesEthereumDetailsGethDetailsArgs{\n\t\t\t\t\tGarbageCollectionMode: pulumi.String(\"FULL\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"environment\": pulumi.String(\"dev\"),\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.blockchainnodeengine.BlockchainNodes;\nimport com.pulumi.gcp.blockchainnodeengine.BlockchainNodesArgs;\nimport com.pulumi.gcp.blockchainnodeengine.inputs.BlockchainNodesEthereumDetailsArgs;\nimport com.pulumi.gcp.blockchainnodeengine.inputs.BlockchainNodesEthereumDetailsValidatorConfigArgs;\nimport com.pulumi.gcp.blockchainnodeengine.inputs.BlockchainNodesEthereumDetailsGethDetailsArgs;\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 defaultNodeGeth = new BlockchainNodes(\"defaultNodeGeth\", BlockchainNodesArgs.builder()\n .location(\"us-central1\")\n .blockchainType(\"ETHEREUM\")\n .blockchainNodeId(\"blockchain_geth_node\")\n .ethereumDetails(BlockchainNodesEthereumDetailsArgs.builder()\n .apiEnableAdmin(true)\n .apiEnableDebug(true)\n .validatorConfig(BlockchainNodesEthereumDetailsValidatorConfigArgs.builder()\n .mevRelayUrls( \n \"https://mev1.example.org/\",\n \"https://mev2.example.org/\")\n .build())\n .nodeType(\"FULL\")\n .consensusClient(\"LIGHTHOUSE\")\n .executionClient(\"GETH\")\n .network(\"MAINNET\")\n .gethDetails(BlockchainNodesEthereumDetailsGethDetailsArgs.builder()\n .garbageCollectionMode(\"FULL\")\n .build())\n .build())\n .labels(Map.of(\"environment\", \"dev\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultNodeGeth:\n type: gcp:blockchainnodeengine:BlockchainNodes\n name: default_node_geth\n properties:\n location: us-central1\n blockchainType: ETHEREUM\n blockchainNodeId: blockchain_geth_node\n ethereumDetails:\n apiEnableAdmin: true\n apiEnableDebug: true\n validatorConfig:\n mevRelayUrls:\n - https://mev1.example.org/\n - https://mev2.example.org/\n nodeType: FULL\n consensusClient: LIGHTHOUSE\n executionClient: GETH\n network: MAINNET\n gethDetails:\n garbageCollectionMode: FULL\n labels:\n environment: dev\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBlockchainNodes can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/blockchainNodes/{{blockchain_node_id}}`\n\n* `{{project}}/{{location}}/{{blockchain_node_id}}`\n\n* `{{location}}/{{blockchain_node_id}}`\n\nWhen using the `pulumi import` command, BlockchainNodes can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:blockchainnodeengine/blockchainNodes:BlockchainNodes default projects/{{project}}/locations/{{location}}/blockchainNodes/{{blockchain_node_id}}\n```\n\n```sh\n$ pulumi import gcp:blockchainnodeengine/blockchainNodes:BlockchainNodes default {{project}}/{{location}}/{{blockchain_node_id}}\n```\n\n```sh\n$ pulumi import gcp:blockchainnodeengine/blockchainNodes:BlockchainNodes default {{location}}/{{blockchain_node_id}}\n```\n\n", "properties": { "blockchainNodeId": { "type": "string", @@ -129239,7 +129239,7 @@ } }, "gcp:certificateauthority/authority:Authority": { - "description": "A CertificateAuthority represents an individual Certificate Authority. A\nCertificateAuthority can be used to create Certificates.\n\n\nTo get more information about CertificateAuthority, see:\n\n* [API documentation](https://cloud.google.com/certificate-authority-service/docs/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/certificate-authority-service)\n\n\u003e **Warning:** On newer versions of the provider, you must explicitly set `deletion_protection=false`\n(and run `pulumi up` to write the field to state) in order to destroy a CertificateAuthority.\nIt is recommended to not set this field (or set it to true) until you're ready to destroy.\n\n## Example Usage\n\n### Privateca Certificate Authority Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.Authority(\"default\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority\",\n location: \"us-central1\",\n deletionProtection: true,\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 maxIssuerPathLength: 10,\n },\n keyUsage: {\n baseKeyUsage: {\n digitalSignature: true,\n contentCommitment: true,\n keyEncipherment: false,\n dataEncipherment: true,\n keyAgreement: true,\n certSign: true,\n crlSign: true,\n decipherOnly: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n clientAuth: false,\n emailProtection: true,\n codeSigning: true,\n timeStamping: true,\n },\n },\n },\n },\n lifetime: \"86400s\",\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.Authority(\"default\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority\",\n location=\"us-central1\",\n deletion_protection=True,\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 \"maxIssuerPathLength\": 10,\n },\n \"keyUsage\": {\n \"baseKeyUsage\": {\n \"digitalSignature\": True,\n \"contentCommitment\": True,\n \"keyEncipherment\": False,\n \"dataEncipherment\": True,\n \"keyAgreement\": True,\n \"certSign\": True,\n \"crlSign\": True,\n \"decipherOnly\": True,\n },\n \"extendedKeyUsage\": {\n \"serverAuth\": True,\n \"clientAuth\": False,\n \"emailProtection\": True,\n \"codeSigning\": True,\n \"timeStamping\": True,\n },\n },\n },\n },\n lifetime=\"86400s\",\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\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 @default = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority\",\n Location = \"us-central1\",\n DeletionProtection = true,\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 MaxIssuerPathLength = 10,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n DigitalSignature = true,\n ContentCommitment = true,\n KeyEncipherment = false,\n DataEncipherment = true,\n KeyAgreement = true,\n CertSign = true,\n CrlSign = true,\n DecipherOnly = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n ClientAuth = false,\n EmailProtection = true,\n CodeSigning = true,\n TimeStamping = true,\n },\n },\n },\n },\n Lifetime = \"86400s\",\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\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 := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\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\tMaxIssuerPathLength: pulumi.Int(10),\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\tDigitalSignature: pulumi.Bool(true),\n\t\t\t\t\t\t\tContentCommitment: pulumi.Bool(true),\n\t\t\t\t\t\t\tKeyEncipherment: pulumi.Bool(false),\n\t\t\t\t\t\t\tDataEncipherment: pulumi.Bool(true),\n\t\t\t\t\t\t\tKeyAgreement: pulumi.Bool(true),\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\tDecipherOnly: 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\tClientAuth: pulumi.Bool(false),\n\t\t\t\t\t\t\tEmailProtection: pulumi.Bool(true),\n\t\t\t\t\t\t\tCodeSigning: pulumi.Bool(true),\n\t\t\t\t\t\t\tTimeStamping: 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\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\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.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 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 Authority(\"default\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority\")\n .location(\"us-central1\")\n .deletionProtection(\"true\")\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 .maxIssuerPathLength(10)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .digitalSignature(true)\n .contentCommitment(true)\n .keyEncipherment(false)\n .dataEncipherment(true)\n .keyAgreement(true)\n .certSign(true)\n .crlSign(true)\n .decipherOnly(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .clientAuth(false)\n .emailProtection(true)\n .codeSigning(true)\n .timeStamping(true)\n .build())\n .build())\n .build())\n .build())\n .lifetime(\"86400s\")\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:Authority\n properties:\n pool: ca-pool\n certificateAuthorityId: my-certificate-authority\n location: us-central1\n deletionProtection: 'true'\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 maxIssuerPathLength: 10\n keyUsage:\n baseKeyUsage:\n digitalSignature: true\n contentCommitment: true\n keyEncipherment: false\n dataEncipherment: true\n keyAgreement: true\n certSign: true\n crlSign: true\n decipherOnly: true\n extendedKeyUsage:\n serverAuth: true\n clientAuth: false\n emailProtection: true\n codeSigning: true\n timeStamping: true\n lifetime: 86400s\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Authority Subordinate\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst root_ca = new gcp.certificateauthority.Authority(\"root-ca\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority-root\",\n location: \"us-central1\",\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: false,\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.certificateauthority.Authority(\"default\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority-sub\",\n location: \"us-central1\",\n deletionProtection: true,\n subordinateConfig: {\n certificateAuthority: root_ca.name,\n },\n config: {\n subjectConfig: {\n subject: {\n organization: \"HashiCorp\",\n commonName: \"my-subordinate-authority\",\n },\n subjectAltName: {\n dnsNames: [\"hashicorp.com\"],\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n maxIssuerPathLength: 0,\n },\n keyUsage: {\n baseKeyUsage: {\n digitalSignature: true,\n contentCommitment: true,\n keyEncipherment: false,\n dataEncipherment: true,\n keyAgreement: true,\n certSign: true,\n crlSign: true,\n decipherOnly: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n clientAuth: false,\n emailProtection: true,\n codeSigning: true,\n timeStamping: true,\n },\n },\n },\n },\n lifetime: \"86400s\",\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n type: \"SUBORDINATE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nroot_ca = gcp.certificateauthority.Authority(\"root-ca\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority-root\",\n location=\"us-central1\",\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\": False,\n },\n },\n },\n },\n key_spec={\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.certificateauthority.Authority(\"default\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority-sub\",\n location=\"us-central1\",\n deletion_protection=True,\n subordinate_config={\n \"certificateAuthority\": root_ca.name,\n },\n config={\n \"subjectConfig\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"commonName\": \"my-subordinate-authority\",\n },\n \"subjectAltName\": {\n \"dnsNames\": [\"hashicorp.com\"],\n },\n },\n \"x509Config\": {\n \"caOptions\": {\n \"isCa\": True,\n \"maxIssuerPathLength\": 0,\n },\n \"keyUsage\": {\n \"baseKeyUsage\": {\n \"digitalSignature\": True,\n \"contentCommitment\": True,\n \"keyEncipherment\": False,\n \"dataEncipherment\": True,\n \"keyAgreement\": True,\n \"certSign\": True,\n \"crlSign\": True,\n \"decipherOnly\": True,\n },\n \"extendedKeyUsage\": {\n \"serverAuth\": True,\n \"clientAuth\": False,\n \"emailProtection\": True,\n \"codeSigning\": True,\n \"timeStamping\": True,\n },\n },\n },\n },\n lifetime=\"86400s\",\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n type=\"SUBORDINATE\")\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 root_ca = new Gcp.CertificateAuthority.Authority(\"root-ca\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority-root\",\n Location = \"us-central1\",\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 = false,\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.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority-sub\",\n Location = \"us-central1\",\n DeletionProtection = true,\n SubordinateConfig = new Gcp.CertificateAuthority.Inputs.AuthoritySubordinateConfigArgs\n {\n CertificateAuthority = root_ca.Name,\n },\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-subordinate-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 MaxIssuerPathLength = 0,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n DigitalSignature = true,\n ContentCommitment = true,\n KeyEncipherment = false,\n DataEncipherment = true,\n KeyAgreement = true,\n CertSign = true,\n CrlSign = true,\n DecipherOnly = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n ClientAuth = false,\n EmailProtection = true,\n CodeSigning = true,\n TimeStamping = true,\n },\n },\n },\n },\n Lifetime = \"86400s\",\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n Type = \"SUBORDINATE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\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 := certificateauthority.NewAuthority(ctx, \"root-ca\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority-root\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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(false),\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 = certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority-sub\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tSubordinateConfig: \u0026certificateauthority.AuthoritySubordinateConfigArgs{\n\t\t\t\tCertificateAuthority: root_ca.Name,\n\t\t\t},\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-subordinate-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\tMaxIssuerPathLength: pulumi.Int(0),\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\tDigitalSignature: pulumi.Bool(true),\n\t\t\t\t\t\t\tContentCommitment: pulumi.Bool(true),\n\t\t\t\t\t\t\tKeyEncipherment: pulumi.Bool(false),\n\t\t\t\t\t\t\tDataEncipherment: pulumi.Bool(true),\n\t\t\t\t\t\t\tKeyAgreement: pulumi.Bool(true),\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\tDecipherOnly: 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\tClientAuth: pulumi.Bool(false),\n\t\t\t\t\t\t\tEmailProtection: pulumi.Bool(true),\n\t\t\t\t\t\t\tCodeSigning: pulumi.Bool(true),\n\t\t\t\t\t\t\tTimeStamping: 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\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"SUBORDINATE\"),\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.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.certificateauthority.inputs.AuthoritySubordinateConfigArgs;\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 root_ca = new Authority(\"root-ca\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority-root\")\n .location(\"us-central1\")\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(false)\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 Authority(\"default\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority-sub\")\n .location(\"us-central1\")\n .deletionProtection(\"true\")\n .subordinateConfig(AuthoritySubordinateConfigArgs.builder()\n .certificateAuthority(root_ca.name())\n .build())\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"HashiCorp\")\n .commonName(\"my-subordinate-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 .maxIssuerPathLength(0)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .digitalSignature(true)\n .contentCommitment(true)\n .keyEncipherment(false)\n .dataEncipherment(true)\n .keyAgreement(true)\n .certSign(true)\n .crlSign(true)\n .decipherOnly(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .clientAuth(false)\n .emailProtection(true)\n .codeSigning(true)\n .timeStamping(true)\n .build())\n .build())\n .build())\n .build())\n .lifetime(\"86400s\")\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .type(\"SUBORDINATE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n root-ca:\n type: gcp:certificateauthority:Authority\n properties:\n pool: ca-pool\n certificateAuthorityId: my-certificate-authority-root\n location: us-central1\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: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n default:\n type: gcp:certificateauthority:Authority\n properties:\n pool: ca-pool\n certificateAuthorityId: my-certificate-authority-sub\n location: us-central1\n deletionProtection: 'true'\n subordinateConfig:\n certificateAuthority: ${[\"root-ca\"].name}\n config:\n subjectConfig:\n subject:\n organization: HashiCorp\n commonName: my-subordinate-authority\n subjectAltName:\n dnsNames:\n - hashicorp.com\n x509Config:\n caOptions:\n isCa: true\n maxIssuerPathLength: 0\n keyUsage:\n baseKeyUsage:\n digitalSignature: true\n contentCommitment: true\n keyEncipherment: false\n dataEncipherment: true\n keyAgreement: true\n certSign: true\n crlSign: true\n decipherOnly: true\n extendedKeyUsage:\n serverAuth: true\n clientAuth: false\n emailProtection: true\n codeSigning: true\n timeStamping: true\n lifetime: 86400s\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n type: SUBORDINATE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Authority Byo Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst privatecaSa = new gcp.projects.ServiceIdentity(\"privateca_sa\", {service: \"privateca.googleapis.com\"});\nconst privatecaSaKeyuserSignerverifier = new gcp.kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_signerverifier\", {\n cryptoKeyId: \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n role: \"roles/cloudkms.signerVerifier\",\n member: pulumi.interpolate`serviceAccount:${privatecaSa.email}`,\n});\nconst privatecaSaKeyuserViewer = new gcp.kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_viewer\", {\n cryptoKeyId: \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n role: \"roles/viewer\",\n member: pulumi.interpolate`serviceAccount:${privatecaSa.email}`,\n});\nconst _default = new gcp.certificateauthority.Authority(\"default\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority\",\n location: \"us-central1\",\n deletionProtection: true,\n keySpec: {\n cloudKmsKeyVersion: \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\n config: {\n subjectConfig: {\n subject: {\n organization: \"Example, Org.\",\n commonName: \"Example Authority\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n maxIssuerPathLength: 10,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: false,\n },\n },\n nameConstraints: {\n critical: true,\n permittedDnsNames: [\"*.example.com\"],\n excludedDnsNames: [\"*.deny.example.com\"],\n permittedIpRanges: [\"10.0.0.0/8\"],\n excludedIpRanges: [\"10.1.1.0/24\"],\n permittedEmailAddresses: [\".example.com\"],\n excludedEmailAddresses: [\".deny.example.com\"],\n permittedUris: [\".example.com\"],\n excludedUris: [\".deny.example.com\"],\n },\n },\n },\n}, {\n dependsOn: [\n privatecaSaKeyuserSignerverifier,\n privatecaSaKeyuserViewer,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprivateca_sa = gcp.projects.ServiceIdentity(\"privateca_sa\", service=\"privateca.googleapis.com\")\nprivateca_sa_keyuser_signerverifier = gcp.kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_signerverifier\",\n crypto_key_id=\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n role=\"roles/cloudkms.signerVerifier\",\n member=privateca_sa.email.apply(lambda email: f\"serviceAccount:{email}\"))\nprivateca_sa_keyuser_viewer = gcp.kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_viewer\",\n crypto_key_id=\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n role=\"roles/viewer\",\n member=privateca_sa.email.apply(lambda email: f\"serviceAccount:{email}\"))\ndefault = gcp.certificateauthority.Authority(\"default\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority\",\n location=\"us-central1\",\n deletion_protection=True,\n key_spec={\n \"cloudKmsKeyVersion\": \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\n config={\n \"subjectConfig\": {\n \"subject\": {\n \"organization\": \"Example, Org.\",\n \"commonName\": \"Example Authority\",\n },\n },\n \"x509Config\": {\n \"caOptions\": {\n \"isCa\": True,\n \"maxIssuerPathLength\": 10,\n },\n \"keyUsage\": {\n \"baseKeyUsage\": {\n \"certSign\": True,\n \"crlSign\": True,\n },\n \"extendedKeyUsage\": {\n \"serverAuth\": False,\n },\n },\n \"nameConstraints\": {\n \"critical\": True,\n \"permittedDnsNames\": [\"*.example.com\"],\n \"excludedDnsNames\": [\"*.deny.example.com\"],\n \"permittedIpRanges\": [\"10.0.0.0/8\"],\n \"excludedIpRanges\": [\"10.1.1.0/24\"],\n \"permittedEmailAddresses\": [\".example.com\"],\n \"excludedEmailAddresses\": [\".deny.example.com\"],\n \"permittedUris\": [\".example.com\"],\n \"excludedUris\": [\".deny.example.com\"],\n },\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[\n privateca_sa_keyuser_signerverifier,\n privateca_sa_keyuser_viewer,\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 privatecaSa = new Gcp.Projects.ServiceIdentity(\"privateca_sa\", new()\n {\n Service = \"privateca.googleapis.com\",\n });\n\n var privatecaSaKeyuserSignerverifier = new Gcp.Kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_signerverifier\", new()\n {\n CryptoKeyId = \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n Role = \"roles/cloudkms.signerVerifier\",\n Member = privatecaSa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var privatecaSaKeyuserViewer = new Gcp.Kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_viewer\", new()\n {\n CryptoKeyId = \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n Role = \"roles/viewer\",\n Member = privatecaSa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var @default = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority\",\n Location = \"us-central1\",\n DeletionProtection = true,\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n CloudKmsKeyVersion = \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\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 = \"Example, Org.\",\n CommonName = \"Example Authority\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n MaxIssuerPathLength = 10,\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 = false,\n },\n },\n NameConstraints = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigNameConstraintsArgs\n {\n Critical = true,\n PermittedDnsNames = new[]\n {\n \"*.example.com\",\n },\n ExcludedDnsNames = new[]\n {\n \"*.deny.example.com\",\n },\n PermittedIpRanges = new[]\n {\n \"10.0.0.0/8\",\n },\n ExcludedIpRanges = new[]\n {\n \"10.1.1.0/24\",\n },\n PermittedEmailAddresses = new[]\n {\n \".example.com\",\n },\n ExcludedEmailAddresses = new[]\n {\n \".deny.example.com\",\n },\n PermittedUris = new[]\n {\n \".example.com\",\n },\n ExcludedUris = new[]\n {\n \".deny.example.com\",\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n privatecaSaKeyuserSignerverifier,\n privatecaSaKeyuserViewer,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprivatecaSa, err := projects.NewServiceIdentity(ctx, \"privateca_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tService: pulumi.String(\"privateca.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivatecaSaKeyuserSignerverifier, err := kms.NewCryptoKeyIAMMember(ctx, \"privateca_sa_keyuser_signerverifier\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.signerVerifier\"),\n\t\t\tMember: privatecaSa.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\tprivatecaSaKeyuserViewer, err := kms.NewCryptoKeyIAMMember(ctx, \"privateca_sa_keyuser_viewer\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\"),\n\t\t\tRole: pulumi.String(\"roles/viewer\"),\n\t\t\tMember: privatecaSa.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 = certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tCloudKmsKeyVersion: pulumi.String(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\"),\n\t\t\t},\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(\"Example, Org.\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"Example Authority\"),\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\tMaxIssuerPathLength: pulumi.Int(10),\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(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tNameConstraints: \u0026certificateauthority.AuthorityConfigX509ConfigNameConstraintsArgs{\n\t\t\t\t\t\tCritical: pulumi.Bool(true),\n\t\t\t\t\t\tPermittedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.1.1.0/24\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example.com\"),\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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprivatecaSaKeyuserSignerverifier,\n\t\t\tprivatecaSaKeyuserViewer,\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.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\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.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.AuthorityConfigX509ConfigNameConstraintsArgs;\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 privatecaSa = new ServiceIdentity(\"privatecaSa\", ServiceIdentityArgs.builder()\n .service(\"privateca.googleapis.com\")\n .build());\n\n var privatecaSaKeyuserSignerverifier = new CryptoKeyIAMMember(\"privatecaSaKeyuserSignerverifier\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\")\n .role(\"roles/cloudkms.signerVerifier\")\n .member(privatecaSa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var privatecaSaKeyuserViewer = new CryptoKeyIAMMember(\"privatecaSaKeyuserViewer\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\")\n .role(\"roles/viewer\")\n .member(privatecaSa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var default_ = new Authority(\"default\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority\")\n .location(\"us-central1\")\n .deletionProtection(\"true\")\n .keySpec(AuthorityKeySpecArgs.builder()\n .cloudKmsKeyVersion(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\")\n .build())\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"Example, Org.\")\n .commonName(\"Example Authority\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .maxIssuerPathLength(10)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(false)\n .build())\n .build())\n .nameConstraints(AuthorityConfigX509ConfigNameConstraintsArgs.builder()\n .critical(true)\n .permittedDnsNames(\"*.example.com\")\n .excludedDnsNames(\"*.deny.example.com\")\n .permittedIpRanges(\"10.0.0.0/8\")\n .excludedIpRanges(\"10.1.1.0/24\")\n .permittedEmailAddresses(\".example.com\")\n .excludedEmailAddresses(\".deny.example.com\")\n .permittedUris(\".example.com\")\n .excludedUris(\".deny.example.com\")\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n privatecaSaKeyuserSignerverifier,\n privatecaSaKeyuserViewer)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n privatecaSa:\n type: gcp:projects:ServiceIdentity\n name: privateca_sa\n properties:\n service: privateca.googleapis.com\n privatecaSaKeyuserSignerverifier:\n type: gcp:kms:CryptoKeyIAMMember\n name: privateca_sa_keyuser_signerverifier\n properties:\n cryptoKeyId: projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\n role: roles/cloudkms.signerVerifier\n member: serviceAccount:${privatecaSa.email}\n privatecaSaKeyuserViewer:\n type: gcp:kms:CryptoKeyIAMMember\n name: privateca_sa_keyuser_viewer\n properties:\n cryptoKeyId: projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\n role: roles/viewer\n member: serviceAccount:${privatecaSa.email}\n default:\n type: gcp:certificateauthority:Authority\n properties:\n pool: ca-pool\n certificateAuthorityId: my-certificate-authority\n location: us-central1\n deletionProtection: 'true'\n keySpec:\n cloudKmsKeyVersion: projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\n config:\n subjectConfig:\n subject:\n organization: Example, Org.\n commonName: Example Authority\n x509Config:\n caOptions:\n isCa: true\n maxIssuerPathLength: 10\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n nameConstraints:\n critical: true\n permittedDnsNames:\n - '*.example.com'\n excludedDnsNames:\n - '*.deny.example.com'\n permittedIpRanges:\n - 10.0.0.0/8\n excludedIpRanges:\n - 10.1.1.0/24\n permittedEmailAddresses:\n - .example.com\n excludedEmailAddresses:\n - .deny.example.com\n permittedUris:\n - .example.com\n excludedUris:\n - .deny.example.com\n options:\n dependson:\n - ${privatecaSaKeyuserSignerverifier}\n - ${privatecaSaKeyuserViewer}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Authority Custom Ski\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.Authority(\"default\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority\",\n location: \"us-central1\",\n deletionProtection: true,\n config: {\n subjectConfig: {\n subject: {\n organization: \"HashiCorp\",\n commonName: \"my-certificate-authority\",\n },\n subjectAltName: {\n dnsNames: [\"hashicorp.com\"],\n },\n },\n subjectKeyId: {\n keyId: \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n x509Config: {\n caOptions: {\n isCa: true,\n maxIssuerPathLength: 10,\n },\n keyUsage: {\n baseKeyUsage: {\n digitalSignature: true,\n contentCommitment: true,\n keyEncipherment: false,\n dataEncipherment: true,\n keyAgreement: true,\n certSign: true,\n crlSign: true,\n decipherOnly: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n clientAuth: false,\n emailProtection: true,\n codeSigning: true,\n timeStamping: true,\n },\n },\n },\n },\n lifetime: \"86400s\",\n keySpec: {\n cloudKmsKeyVersion: \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.Authority(\"default\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority\",\n location=\"us-central1\",\n deletion_protection=True,\n config={\n \"subjectConfig\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"commonName\": \"my-certificate-authority\",\n },\n \"subjectAltName\": {\n \"dnsNames\": [\"hashicorp.com\"],\n },\n },\n \"subjectKeyId\": {\n \"keyId\": \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n \"x509Config\": {\n \"caOptions\": {\n \"isCa\": True,\n \"maxIssuerPathLength\": 10,\n },\n \"keyUsage\": {\n \"baseKeyUsage\": {\n \"digitalSignature\": True,\n \"contentCommitment\": True,\n \"keyEncipherment\": False,\n \"dataEncipherment\": True,\n \"keyAgreement\": True,\n \"certSign\": True,\n \"crlSign\": True,\n \"decipherOnly\": True,\n },\n \"extendedKeyUsage\": {\n \"serverAuth\": True,\n \"clientAuth\": False,\n \"emailProtection\": True,\n \"codeSigning\": True,\n \"timeStamping\": True,\n },\n },\n },\n },\n lifetime=\"86400s\",\n key_spec={\n \"cloudKmsKeyVersion\": \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\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 @default = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority\",\n Location = \"us-central1\",\n DeletionProtection = true,\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 SubjectKeyId = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectKeyIdArgs\n {\n KeyId = \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n MaxIssuerPathLength = 10,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n DigitalSignature = true,\n ContentCommitment = true,\n KeyEncipherment = false,\n DataEncipherment = true,\n KeyAgreement = true,\n CertSign = true,\n CrlSign = true,\n DecipherOnly = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n ClientAuth = false,\n EmailProtection = true,\n CodeSigning = true,\n TimeStamping = true,\n },\n },\n },\n },\n Lifetime = \"86400s\",\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n CloudKmsKeyVersion = \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\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 := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\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\tSubjectKeyId: \u0026certificateauthority.AuthorityConfigSubjectKeyIdArgs{\n\t\t\t\t\tKeyId: pulumi.String(\"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\"),\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\tMaxIssuerPathLength: pulumi.Int(10),\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\tDigitalSignature: pulumi.Bool(true),\n\t\t\t\t\t\t\tContentCommitment: pulumi.Bool(true),\n\t\t\t\t\t\t\tKeyEncipherment: pulumi.Bool(false),\n\t\t\t\t\t\t\tDataEncipherment: pulumi.Bool(true),\n\t\t\t\t\t\t\tKeyAgreement: pulumi.Bool(true),\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\tDecipherOnly: 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\tClientAuth: pulumi.Bool(false),\n\t\t\t\t\t\t\tEmailProtection: pulumi.Bool(true),\n\t\t\t\t\t\t\tCodeSigning: pulumi.Bool(true),\n\t\t\t\t\t\t\tTimeStamping: 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\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tCloudKmsKeyVersion: pulumi.String(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\"),\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.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.AuthorityConfigSubjectKeyIdArgs;\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 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 Authority(\"default\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority\")\n .location(\"us-central1\")\n .deletionProtection(\"true\")\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 .subjectKeyId(AuthorityConfigSubjectKeyIdArgs.builder()\n .keyId(\"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\")\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .maxIssuerPathLength(10)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .digitalSignature(true)\n .contentCommitment(true)\n .keyEncipherment(false)\n .dataEncipherment(true)\n .keyAgreement(true)\n .certSign(true)\n .crlSign(true)\n .decipherOnly(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .clientAuth(false)\n .emailProtection(true)\n .codeSigning(true)\n .timeStamping(true)\n .build())\n .build())\n .build())\n .build())\n .lifetime(\"86400s\")\n .keySpec(AuthorityKeySpecArgs.builder()\n .cloudKmsKeyVersion(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:Authority\n properties:\n pool: ca-pool\n certificateAuthorityId: my-certificate-authority\n location: us-central1\n deletionProtection: 'true'\n config:\n subjectConfig:\n subject:\n organization: HashiCorp\n commonName: my-certificate-authority\n subjectAltName:\n dnsNames:\n - hashicorp.com\n subjectKeyId:\n keyId: 4cf3372289b1d411b999dbb9ebcd44744b6b2fca\n x509Config:\n caOptions:\n isCa: true\n maxIssuerPathLength: 10\n keyUsage:\n baseKeyUsage:\n digitalSignature: true\n contentCommitment: true\n keyEncipherment: false\n dataEncipherment: true\n keyAgreement: true\n certSign: true\n crlSign: true\n decipherOnly: true\n extendedKeyUsage:\n serverAuth: true\n clientAuth: false\n emailProtection: true\n codeSigning: true\n timeStamping: true\n lifetime: 86400s\n keySpec:\n cloudKmsKeyVersion: projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCertificateAuthority can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/caPools/{{pool}}/certificateAuthorities/{{certificate_authority_id}}`\n\n* `{{project}}/{{location}}/{{pool}}/{{certificate_authority_id}}`\n\n* `{{location}}/{{pool}}/{{certificate_authority_id}}`\n\nWhen using the `pulumi import` command, CertificateAuthority can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificateauthority/authority:Authority default projects/{{project}}/locations/{{location}}/caPools/{{pool}}/certificateAuthorities/{{certificate_authority_id}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/authority:Authority default {{project}}/{{location}}/{{pool}}/{{certificate_authority_id}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/authority:Authority default {{location}}/{{pool}}/{{certificate_authority_id}}\n```\n\n", + "description": "A CertificateAuthority represents an individual Certificate Authority. A\nCertificateAuthority can be used to create Certificates.\n\n\nTo get more information about CertificateAuthority, see:\n\n* [API documentation](https://cloud.google.com/certificate-authority-service/docs/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/certificate-authority-service)\n\n\u003e **Warning:** On newer versions of the provider, you must explicitly set `deletion_protection=false`\n(and run `pulumi up` to write the field to state) in order to destroy a CertificateAuthority.\nIt is recommended to not set this field (or set it to true) until you're ready to destroy.\n\n## Example Usage\n\n### Privateca Certificate Authority Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.Authority(\"default\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority\",\n location: \"us-central1\",\n deletionProtection: true,\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 maxIssuerPathLength: 10,\n },\n keyUsage: {\n baseKeyUsage: {\n digitalSignature: true,\n contentCommitment: true,\n keyEncipherment: false,\n dataEncipherment: true,\n keyAgreement: true,\n certSign: true,\n crlSign: true,\n decipherOnly: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n clientAuth: false,\n emailProtection: true,\n codeSigning: true,\n timeStamping: true,\n },\n },\n },\n },\n lifetime: \"86400s\",\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.Authority(\"default\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority\",\n location=\"us-central1\",\n deletion_protection=True,\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n \"max_issuer_path_length\": 10,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"digital_signature\": True,\n \"content_commitment\": True,\n \"key_encipherment\": False,\n \"data_encipherment\": True,\n \"key_agreement\": True,\n \"cert_sign\": True,\n \"crl_sign\": True,\n \"decipher_only\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n \"client_auth\": False,\n \"email_protection\": True,\n \"code_signing\": True,\n \"time_stamping\": True,\n },\n },\n },\n },\n lifetime=\"86400s\",\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\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 @default = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority\",\n Location = \"us-central1\",\n DeletionProtection = true,\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 MaxIssuerPathLength = 10,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n DigitalSignature = true,\n ContentCommitment = true,\n KeyEncipherment = false,\n DataEncipherment = true,\n KeyAgreement = true,\n CertSign = true,\n CrlSign = true,\n DecipherOnly = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n ClientAuth = false,\n EmailProtection = true,\n CodeSigning = true,\n TimeStamping = true,\n },\n },\n },\n },\n Lifetime = \"86400s\",\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\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 := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\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\tMaxIssuerPathLength: pulumi.Int(10),\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\tDigitalSignature: pulumi.Bool(true),\n\t\t\t\t\t\t\tContentCommitment: pulumi.Bool(true),\n\t\t\t\t\t\t\tKeyEncipherment: pulumi.Bool(false),\n\t\t\t\t\t\t\tDataEncipherment: pulumi.Bool(true),\n\t\t\t\t\t\t\tKeyAgreement: pulumi.Bool(true),\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\tDecipherOnly: 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\tClientAuth: pulumi.Bool(false),\n\t\t\t\t\t\t\tEmailProtection: pulumi.Bool(true),\n\t\t\t\t\t\t\tCodeSigning: pulumi.Bool(true),\n\t\t\t\t\t\t\tTimeStamping: 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\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\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.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 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 Authority(\"default\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority\")\n .location(\"us-central1\")\n .deletionProtection(\"true\")\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 .maxIssuerPathLength(10)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .digitalSignature(true)\n .contentCommitment(true)\n .keyEncipherment(false)\n .dataEncipherment(true)\n .keyAgreement(true)\n .certSign(true)\n .crlSign(true)\n .decipherOnly(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .clientAuth(false)\n .emailProtection(true)\n .codeSigning(true)\n .timeStamping(true)\n .build())\n .build())\n .build())\n .build())\n .lifetime(\"86400s\")\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:Authority\n properties:\n pool: ca-pool\n certificateAuthorityId: my-certificate-authority\n location: us-central1\n deletionProtection: 'true'\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 maxIssuerPathLength: 10\n keyUsage:\n baseKeyUsage:\n digitalSignature: true\n contentCommitment: true\n keyEncipherment: false\n dataEncipherment: true\n keyAgreement: true\n certSign: true\n crlSign: true\n decipherOnly: true\n extendedKeyUsage:\n serverAuth: true\n clientAuth: false\n emailProtection: true\n codeSigning: true\n timeStamping: true\n lifetime: 86400s\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Authority Subordinate\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst root_ca = new gcp.certificateauthority.Authority(\"root-ca\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority-root\",\n location: \"us-central1\",\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: false,\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.certificateauthority.Authority(\"default\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority-sub\",\n location: \"us-central1\",\n deletionProtection: true,\n subordinateConfig: {\n certificateAuthority: root_ca.name,\n },\n config: {\n subjectConfig: {\n subject: {\n organization: \"HashiCorp\",\n commonName: \"my-subordinate-authority\",\n },\n subjectAltName: {\n dnsNames: [\"hashicorp.com\"],\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n maxIssuerPathLength: 0,\n },\n keyUsage: {\n baseKeyUsage: {\n digitalSignature: true,\n contentCommitment: true,\n keyEncipherment: false,\n dataEncipherment: true,\n keyAgreement: true,\n certSign: true,\n crlSign: true,\n decipherOnly: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n clientAuth: false,\n emailProtection: true,\n codeSigning: true,\n timeStamping: true,\n },\n },\n },\n },\n lifetime: \"86400s\",\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n type: \"SUBORDINATE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nroot_ca = gcp.certificateauthority.Authority(\"root-ca\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority-root\",\n location=\"us-central1\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n },\n },\n key_spec={\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.certificateauthority.Authority(\"default\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority-sub\",\n location=\"us-central1\",\n deletion_protection=True,\n subordinate_config={\n \"certificate_authority\": root_ca.name,\n },\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-subordinate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n \"max_issuer_path_length\": 0,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"digital_signature\": True,\n \"content_commitment\": True,\n \"key_encipherment\": False,\n \"data_encipherment\": True,\n \"key_agreement\": True,\n \"cert_sign\": True,\n \"crl_sign\": True,\n \"decipher_only\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n \"client_auth\": False,\n \"email_protection\": True,\n \"code_signing\": True,\n \"time_stamping\": True,\n },\n },\n },\n },\n lifetime=\"86400s\",\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n type=\"SUBORDINATE\")\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 root_ca = new Gcp.CertificateAuthority.Authority(\"root-ca\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority-root\",\n Location = \"us-central1\",\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 = false,\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.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority-sub\",\n Location = \"us-central1\",\n DeletionProtection = true,\n SubordinateConfig = new Gcp.CertificateAuthority.Inputs.AuthoritySubordinateConfigArgs\n {\n CertificateAuthority = root_ca.Name,\n },\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-subordinate-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 MaxIssuerPathLength = 0,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n DigitalSignature = true,\n ContentCommitment = true,\n KeyEncipherment = false,\n DataEncipherment = true,\n KeyAgreement = true,\n CertSign = true,\n CrlSign = true,\n DecipherOnly = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n ClientAuth = false,\n EmailProtection = true,\n CodeSigning = true,\n TimeStamping = true,\n },\n },\n },\n },\n Lifetime = \"86400s\",\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n Type = \"SUBORDINATE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\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 := certificateauthority.NewAuthority(ctx, \"root-ca\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority-root\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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(false),\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 = certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority-sub\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tSubordinateConfig: \u0026certificateauthority.AuthoritySubordinateConfigArgs{\n\t\t\t\tCertificateAuthority: root_ca.Name,\n\t\t\t},\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-subordinate-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\tMaxIssuerPathLength: pulumi.Int(0),\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\tDigitalSignature: pulumi.Bool(true),\n\t\t\t\t\t\t\tContentCommitment: pulumi.Bool(true),\n\t\t\t\t\t\t\tKeyEncipherment: pulumi.Bool(false),\n\t\t\t\t\t\t\tDataEncipherment: pulumi.Bool(true),\n\t\t\t\t\t\t\tKeyAgreement: pulumi.Bool(true),\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\tDecipherOnly: 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\tClientAuth: pulumi.Bool(false),\n\t\t\t\t\t\t\tEmailProtection: pulumi.Bool(true),\n\t\t\t\t\t\t\tCodeSigning: pulumi.Bool(true),\n\t\t\t\t\t\t\tTimeStamping: 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\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"SUBORDINATE\"),\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.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.certificateauthority.inputs.AuthoritySubordinateConfigArgs;\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 root_ca = new Authority(\"root-ca\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority-root\")\n .location(\"us-central1\")\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(false)\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 Authority(\"default\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority-sub\")\n .location(\"us-central1\")\n .deletionProtection(\"true\")\n .subordinateConfig(AuthoritySubordinateConfigArgs.builder()\n .certificateAuthority(root_ca.name())\n .build())\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"HashiCorp\")\n .commonName(\"my-subordinate-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 .maxIssuerPathLength(0)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .digitalSignature(true)\n .contentCommitment(true)\n .keyEncipherment(false)\n .dataEncipherment(true)\n .keyAgreement(true)\n .certSign(true)\n .crlSign(true)\n .decipherOnly(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .clientAuth(false)\n .emailProtection(true)\n .codeSigning(true)\n .timeStamping(true)\n .build())\n .build())\n .build())\n .build())\n .lifetime(\"86400s\")\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .type(\"SUBORDINATE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n root-ca:\n type: gcp:certificateauthority:Authority\n properties:\n pool: ca-pool\n certificateAuthorityId: my-certificate-authority-root\n location: us-central1\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: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n default:\n type: gcp:certificateauthority:Authority\n properties:\n pool: ca-pool\n certificateAuthorityId: my-certificate-authority-sub\n location: us-central1\n deletionProtection: 'true'\n subordinateConfig:\n certificateAuthority: ${[\"root-ca\"].name}\n config:\n subjectConfig:\n subject:\n organization: HashiCorp\n commonName: my-subordinate-authority\n subjectAltName:\n dnsNames:\n - hashicorp.com\n x509Config:\n caOptions:\n isCa: true\n maxIssuerPathLength: 0\n keyUsage:\n baseKeyUsage:\n digitalSignature: true\n contentCommitment: true\n keyEncipherment: false\n dataEncipherment: true\n keyAgreement: true\n certSign: true\n crlSign: true\n decipherOnly: true\n extendedKeyUsage:\n serverAuth: true\n clientAuth: false\n emailProtection: true\n codeSigning: true\n timeStamping: true\n lifetime: 86400s\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n type: SUBORDINATE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Authority Byo Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst privatecaSa = new gcp.projects.ServiceIdentity(\"privateca_sa\", {service: \"privateca.googleapis.com\"});\nconst privatecaSaKeyuserSignerverifier = new gcp.kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_signerverifier\", {\n cryptoKeyId: \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n role: \"roles/cloudkms.signerVerifier\",\n member: pulumi.interpolate`serviceAccount:${privatecaSa.email}`,\n});\nconst privatecaSaKeyuserViewer = new gcp.kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_viewer\", {\n cryptoKeyId: \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n role: \"roles/viewer\",\n member: pulumi.interpolate`serviceAccount:${privatecaSa.email}`,\n});\nconst _default = new gcp.certificateauthority.Authority(\"default\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority\",\n location: \"us-central1\",\n deletionProtection: true,\n keySpec: {\n cloudKmsKeyVersion: \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\n config: {\n subjectConfig: {\n subject: {\n organization: \"Example, Org.\",\n commonName: \"Example Authority\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n maxIssuerPathLength: 10,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: false,\n },\n },\n nameConstraints: {\n critical: true,\n permittedDnsNames: [\"*.example.com\"],\n excludedDnsNames: [\"*.deny.example.com\"],\n permittedIpRanges: [\"10.0.0.0/8\"],\n excludedIpRanges: [\"10.1.1.0/24\"],\n permittedEmailAddresses: [\".example.com\"],\n excludedEmailAddresses: [\".deny.example.com\"],\n permittedUris: [\".example.com\"],\n excludedUris: [\".deny.example.com\"],\n },\n },\n },\n}, {\n dependsOn: [\n privatecaSaKeyuserSignerverifier,\n privatecaSaKeyuserViewer,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprivateca_sa = gcp.projects.ServiceIdentity(\"privateca_sa\", service=\"privateca.googleapis.com\")\nprivateca_sa_keyuser_signerverifier = gcp.kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_signerverifier\",\n crypto_key_id=\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n role=\"roles/cloudkms.signerVerifier\",\n member=privateca_sa.email.apply(lambda email: f\"serviceAccount:{email}\"))\nprivateca_sa_keyuser_viewer = gcp.kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_viewer\",\n crypto_key_id=\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n role=\"roles/viewer\",\n member=privateca_sa.email.apply(lambda email: f\"serviceAccount:{email}\"))\ndefault = gcp.certificateauthority.Authority(\"default\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority\",\n location=\"us-central1\",\n deletion_protection=True,\n key_spec={\n \"cloud_kms_key_version\": \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"Example, Org.\",\n \"common_name\": \"Example Authority\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n \"max_issuer_path_length\": 10,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n \"name_constraints\": {\n \"critical\": True,\n \"permitted_dns_names\": [\"*.example.com\"],\n \"excluded_dns_names\": [\"*.deny.example.com\"],\n \"permitted_ip_ranges\": [\"10.0.0.0/8\"],\n \"excluded_ip_ranges\": [\"10.1.1.0/24\"],\n \"permitted_email_addresses\": [\".example.com\"],\n \"excluded_email_addresses\": [\".deny.example.com\"],\n \"permitted_uris\": [\".example.com\"],\n \"excluded_uris\": [\".deny.example.com\"],\n },\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[\n privateca_sa_keyuser_signerverifier,\n privateca_sa_keyuser_viewer,\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 privatecaSa = new Gcp.Projects.ServiceIdentity(\"privateca_sa\", new()\n {\n Service = \"privateca.googleapis.com\",\n });\n\n var privatecaSaKeyuserSignerverifier = new Gcp.Kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_signerverifier\", new()\n {\n CryptoKeyId = \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n Role = \"roles/cloudkms.signerVerifier\",\n Member = privatecaSa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var privatecaSaKeyuserViewer = new Gcp.Kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_viewer\", new()\n {\n CryptoKeyId = \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n Role = \"roles/viewer\",\n Member = privatecaSa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var @default = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority\",\n Location = \"us-central1\",\n DeletionProtection = true,\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n CloudKmsKeyVersion = \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\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 = \"Example, Org.\",\n CommonName = \"Example Authority\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n MaxIssuerPathLength = 10,\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 = false,\n },\n },\n NameConstraints = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigNameConstraintsArgs\n {\n Critical = true,\n PermittedDnsNames = new[]\n {\n \"*.example.com\",\n },\n ExcludedDnsNames = new[]\n {\n \"*.deny.example.com\",\n },\n PermittedIpRanges = new[]\n {\n \"10.0.0.0/8\",\n },\n ExcludedIpRanges = new[]\n {\n \"10.1.1.0/24\",\n },\n PermittedEmailAddresses = new[]\n {\n \".example.com\",\n },\n ExcludedEmailAddresses = new[]\n {\n \".deny.example.com\",\n },\n PermittedUris = new[]\n {\n \".example.com\",\n },\n ExcludedUris = new[]\n {\n \".deny.example.com\",\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n privatecaSaKeyuserSignerverifier,\n privatecaSaKeyuserViewer,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprivatecaSa, err := projects.NewServiceIdentity(ctx, \"privateca_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tService: pulumi.String(\"privateca.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivatecaSaKeyuserSignerverifier, err := kms.NewCryptoKeyIAMMember(ctx, \"privateca_sa_keyuser_signerverifier\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.signerVerifier\"),\n\t\t\tMember: privatecaSa.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\tprivatecaSaKeyuserViewer, err := kms.NewCryptoKeyIAMMember(ctx, \"privateca_sa_keyuser_viewer\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\"),\n\t\t\tRole: pulumi.String(\"roles/viewer\"),\n\t\t\tMember: privatecaSa.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 = certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tCloudKmsKeyVersion: pulumi.String(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\"),\n\t\t\t},\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(\"Example, Org.\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"Example Authority\"),\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\tMaxIssuerPathLength: pulumi.Int(10),\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(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tNameConstraints: \u0026certificateauthority.AuthorityConfigX509ConfigNameConstraintsArgs{\n\t\t\t\t\t\tCritical: pulumi.Bool(true),\n\t\t\t\t\t\tPermittedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.1.1.0/24\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example.com\"),\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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprivatecaSaKeyuserSignerverifier,\n\t\t\tprivatecaSaKeyuserViewer,\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.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\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.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.AuthorityConfigX509ConfigNameConstraintsArgs;\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 privatecaSa = new ServiceIdentity(\"privatecaSa\", ServiceIdentityArgs.builder()\n .service(\"privateca.googleapis.com\")\n .build());\n\n var privatecaSaKeyuserSignerverifier = new CryptoKeyIAMMember(\"privatecaSaKeyuserSignerverifier\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\")\n .role(\"roles/cloudkms.signerVerifier\")\n .member(privatecaSa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var privatecaSaKeyuserViewer = new CryptoKeyIAMMember(\"privatecaSaKeyuserViewer\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\")\n .role(\"roles/viewer\")\n .member(privatecaSa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var default_ = new Authority(\"default\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority\")\n .location(\"us-central1\")\n .deletionProtection(\"true\")\n .keySpec(AuthorityKeySpecArgs.builder()\n .cloudKmsKeyVersion(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\")\n .build())\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"Example, Org.\")\n .commonName(\"Example Authority\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .maxIssuerPathLength(10)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(false)\n .build())\n .build())\n .nameConstraints(AuthorityConfigX509ConfigNameConstraintsArgs.builder()\n .critical(true)\n .permittedDnsNames(\"*.example.com\")\n .excludedDnsNames(\"*.deny.example.com\")\n .permittedIpRanges(\"10.0.0.0/8\")\n .excludedIpRanges(\"10.1.1.0/24\")\n .permittedEmailAddresses(\".example.com\")\n .excludedEmailAddresses(\".deny.example.com\")\n .permittedUris(\".example.com\")\n .excludedUris(\".deny.example.com\")\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n privatecaSaKeyuserSignerverifier,\n privatecaSaKeyuserViewer)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n privatecaSa:\n type: gcp:projects:ServiceIdentity\n name: privateca_sa\n properties:\n service: privateca.googleapis.com\n privatecaSaKeyuserSignerverifier:\n type: gcp:kms:CryptoKeyIAMMember\n name: privateca_sa_keyuser_signerverifier\n properties:\n cryptoKeyId: projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\n role: roles/cloudkms.signerVerifier\n member: serviceAccount:${privatecaSa.email}\n privatecaSaKeyuserViewer:\n type: gcp:kms:CryptoKeyIAMMember\n name: privateca_sa_keyuser_viewer\n properties:\n cryptoKeyId: projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\n role: roles/viewer\n member: serviceAccount:${privatecaSa.email}\n default:\n type: gcp:certificateauthority:Authority\n properties:\n pool: ca-pool\n certificateAuthorityId: my-certificate-authority\n location: us-central1\n deletionProtection: 'true'\n keySpec:\n cloudKmsKeyVersion: projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\n config:\n subjectConfig:\n subject:\n organization: Example, Org.\n commonName: Example Authority\n x509Config:\n caOptions:\n isCa: true\n maxIssuerPathLength: 10\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n nameConstraints:\n critical: true\n permittedDnsNames:\n - '*.example.com'\n excludedDnsNames:\n - '*.deny.example.com'\n permittedIpRanges:\n - 10.0.0.0/8\n excludedIpRanges:\n - 10.1.1.0/24\n permittedEmailAddresses:\n - .example.com\n excludedEmailAddresses:\n - .deny.example.com\n permittedUris:\n - .example.com\n excludedUris:\n - .deny.example.com\n options:\n dependson:\n - ${privatecaSaKeyuserSignerverifier}\n - ${privatecaSaKeyuserViewer}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Authority Custom Ski\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.Authority(\"default\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority\",\n location: \"us-central1\",\n deletionProtection: true,\n config: {\n subjectConfig: {\n subject: {\n organization: \"HashiCorp\",\n commonName: \"my-certificate-authority\",\n },\n subjectAltName: {\n dnsNames: [\"hashicorp.com\"],\n },\n },\n subjectKeyId: {\n keyId: \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n x509Config: {\n caOptions: {\n isCa: true,\n maxIssuerPathLength: 10,\n },\n keyUsage: {\n baseKeyUsage: {\n digitalSignature: true,\n contentCommitment: true,\n keyEncipherment: false,\n dataEncipherment: true,\n keyAgreement: true,\n certSign: true,\n crlSign: true,\n decipherOnly: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n clientAuth: false,\n emailProtection: true,\n codeSigning: true,\n timeStamping: true,\n },\n },\n },\n },\n lifetime: \"86400s\",\n keySpec: {\n cloudKmsKeyVersion: \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.Authority(\"default\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority\",\n location=\"us-central1\",\n deletion_protection=True,\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"subject_key_id\": {\n \"key_id\": \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n \"max_issuer_path_length\": 10,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"digital_signature\": True,\n \"content_commitment\": True,\n \"key_encipherment\": False,\n \"data_encipherment\": True,\n \"key_agreement\": True,\n \"cert_sign\": True,\n \"crl_sign\": True,\n \"decipher_only\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n \"client_auth\": False,\n \"email_protection\": True,\n \"code_signing\": True,\n \"time_stamping\": True,\n },\n },\n },\n },\n lifetime=\"86400s\",\n key_spec={\n \"cloud_kms_key_version\": \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\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 @default = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority\",\n Location = \"us-central1\",\n DeletionProtection = true,\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 SubjectKeyId = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectKeyIdArgs\n {\n KeyId = \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n MaxIssuerPathLength = 10,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n DigitalSignature = true,\n ContentCommitment = true,\n KeyEncipherment = false,\n DataEncipherment = true,\n KeyAgreement = true,\n CertSign = true,\n CrlSign = true,\n DecipherOnly = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n ClientAuth = false,\n EmailProtection = true,\n CodeSigning = true,\n TimeStamping = true,\n },\n },\n },\n },\n Lifetime = \"86400s\",\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n CloudKmsKeyVersion = \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\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 := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\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\tSubjectKeyId: \u0026certificateauthority.AuthorityConfigSubjectKeyIdArgs{\n\t\t\t\t\tKeyId: pulumi.String(\"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\"),\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\tMaxIssuerPathLength: pulumi.Int(10),\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\tDigitalSignature: pulumi.Bool(true),\n\t\t\t\t\t\t\tContentCommitment: pulumi.Bool(true),\n\t\t\t\t\t\t\tKeyEncipherment: pulumi.Bool(false),\n\t\t\t\t\t\t\tDataEncipherment: pulumi.Bool(true),\n\t\t\t\t\t\t\tKeyAgreement: pulumi.Bool(true),\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\tDecipherOnly: 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\tClientAuth: pulumi.Bool(false),\n\t\t\t\t\t\t\tEmailProtection: pulumi.Bool(true),\n\t\t\t\t\t\t\tCodeSigning: pulumi.Bool(true),\n\t\t\t\t\t\t\tTimeStamping: 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\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tCloudKmsKeyVersion: pulumi.String(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\"),\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.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.AuthorityConfigSubjectKeyIdArgs;\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 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 Authority(\"default\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority\")\n .location(\"us-central1\")\n .deletionProtection(\"true\")\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 .subjectKeyId(AuthorityConfigSubjectKeyIdArgs.builder()\n .keyId(\"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\")\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .maxIssuerPathLength(10)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .digitalSignature(true)\n .contentCommitment(true)\n .keyEncipherment(false)\n .dataEncipherment(true)\n .keyAgreement(true)\n .certSign(true)\n .crlSign(true)\n .decipherOnly(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .clientAuth(false)\n .emailProtection(true)\n .codeSigning(true)\n .timeStamping(true)\n .build())\n .build())\n .build())\n .build())\n .lifetime(\"86400s\")\n .keySpec(AuthorityKeySpecArgs.builder()\n .cloudKmsKeyVersion(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:Authority\n properties:\n pool: ca-pool\n certificateAuthorityId: my-certificate-authority\n location: us-central1\n deletionProtection: 'true'\n config:\n subjectConfig:\n subject:\n organization: HashiCorp\n commonName: my-certificate-authority\n subjectAltName:\n dnsNames:\n - hashicorp.com\n subjectKeyId:\n keyId: 4cf3372289b1d411b999dbb9ebcd44744b6b2fca\n x509Config:\n caOptions:\n isCa: true\n maxIssuerPathLength: 10\n keyUsage:\n baseKeyUsage:\n digitalSignature: true\n contentCommitment: true\n keyEncipherment: false\n dataEncipherment: true\n keyAgreement: true\n certSign: true\n crlSign: true\n decipherOnly: true\n extendedKeyUsage:\n serverAuth: true\n clientAuth: false\n emailProtection: true\n codeSigning: true\n timeStamping: true\n lifetime: 86400s\n keySpec:\n cloudKmsKeyVersion: projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCertificateAuthority can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/caPools/{{pool}}/certificateAuthorities/{{certificate_authority_id}}`\n\n* `{{project}}/{{location}}/{{pool}}/{{certificate_authority_id}}`\n\n* `{{location}}/{{pool}}/{{certificate_authority_id}}`\n\nWhen using the `pulumi import` command, CertificateAuthority can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificateauthority/authority:Authority default projects/{{project}}/locations/{{location}}/caPools/{{pool}}/certificateAuthorities/{{certificate_authority_id}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/authority:Authority default {{project}}/{{location}}/{{pool}}/{{certificate_authority_id}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/authority:Authority default {{location}}/{{pool}}/{{certificate_authority_id}}\n```\n\n", "properties": { "accessUrls": { "type": "array", @@ -129580,7 +129580,7 @@ } }, "gcp:certificateauthority/caPool:CaPool": { - "description": "A CaPool represents a group of CertificateAuthorities that form a trust anchor. A CaPool can be used to manage\nissuance policies for one or more CertificateAuthority resources and to rotate CA certificates in and out of the\ntrust anchor.\n\n\n\n## Example Usage\n\n### Privateca Capool Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n name: \"my-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n publishingOptions: {\n publishCaCert: true,\n publishCrl: true,\n },\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n name=\"my-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n publishing_options={\n \"publishCaCert\": True,\n \"publishCrl\": True,\n },\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 @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Name = \"my-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = true,\n PublishCrl = true,\n },\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/v7/go/gcp/certificateauthority\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"my-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(true),\n\t\t\t\tPublishCrl: pulumi.Bool(true),\n\t\t\t},\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.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .name(\"my-pool\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(true)\n .publishCrl(true)\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n name: my-pool\n location: us-central1\n tier: ENTERPRISE\n publishingOptions:\n publishCaCert: true\n publishCrl: true\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Capool All Fields\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n name: \"my-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n publishingOptions: {\n publishCaCert: false,\n publishCrl: true,\n encodingFormat: \"PEM\",\n },\n labels: {\n foo: \"bar\",\n },\n issuancePolicy: {\n allowedKeyTypes: [\n {\n ellipticCurve: {\n signatureAlgorithm: \"ECDSA_P256\",\n },\n },\n {\n rsa: {\n minModulusSize: \"5\",\n maxModulusSize: \"10\",\n },\n },\n ],\n maximumLifetime: \"50000s\",\n allowedIssuanceModes: {\n allowCsrBasedIssuance: true,\n allowConfigBasedIssuance: true,\n },\n identityConstraints: {\n allowSubjectPassthrough: true,\n allowSubjectAltNamesPassthrough: true,\n celExpression: {\n expression: \"subject_alt_names.all(san, san.type == DNS || san.type == EMAIL )\",\n title: \"My title\",\n },\n },\n baselineValues: {\n aiaOcspServers: [\"example.com\"],\n additionalExtensions: [{\n critical: true,\n value: \"asdf\",\n objectId: {\n objectIdPaths: [\n 1,\n 7,\n ],\n },\n }],\n policyIds: [\n {\n objectIdPaths: [\n 1,\n 5,\n ],\n },\n {\n objectIdPaths: [\n 1,\n 5,\n 7,\n ],\n },\n ],\n caOptions: {\n isCa: true,\n maxIssuerPathLength: 10,\n },\n keyUsage: {\n baseKeyUsage: {\n digitalSignature: true,\n contentCommitment: true,\n keyEncipherment: false,\n dataEncipherment: true,\n keyAgreement: true,\n certSign: false,\n crlSign: true,\n decipherOnly: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n clientAuth: false,\n emailProtection: true,\n codeSigning: true,\n timeStamping: true,\n },\n },\n nameConstraints: {\n critical: true,\n permittedDnsNames: [\n \"*.example1.com\",\n \"*.example2.com\",\n ],\n excludedDnsNames: [\n \"*.deny.example1.com\",\n \"*.deny.example2.com\",\n ],\n permittedIpRanges: [\n \"10.0.0.0/8\",\n \"11.0.0.0/8\",\n ],\n excludedIpRanges: [\n \"10.1.1.0/24\",\n \"11.1.1.0/24\",\n ],\n permittedEmailAddresses: [\n \".example1.com\",\n \".example2.com\",\n ],\n excludedEmailAddresses: [\n \".deny.example1.com\",\n \".deny.example2.com\",\n ],\n permittedUris: [\n \".example1.com\",\n \".example2.com\",\n ],\n excludedUris: [\n \".deny.example1.com\",\n \".deny.example2.com\",\n ],\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n name=\"my-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n publishing_options={\n \"publishCaCert\": False,\n \"publishCrl\": True,\n \"encodingFormat\": \"PEM\",\n },\n labels={\n \"foo\": \"bar\",\n },\n issuance_policy={\n \"allowedKeyTypes\": [\n {\n \"ellipticCurve\": {\n \"signatureAlgorithm\": \"ECDSA_P256\",\n },\n },\n {\n \"rsa\": {\n \"minModulusSize\": \"5\",\n \"maxModulusSize\": \"10\",\n },\n },\n ],\n \"maximumLifetime\": \"50000s\",\n \"allowedIssuanceModes\": {\n \"allowCsrBasedIssuance\": True,\n \"allowConfigBasedIssuance\": True,\n },\n \"identityConstraints\": {\n \"allowSubjectPassthrough\": True,\n \"allowSubjectAltNamesPassthrough\": True,\n \"celExpression\": {\n \"expression\": \"subject_alt_names.all(san, san.type == DNS || san.type == EMAIL )\",\n \"title\": \"My title\",\n },\n },\n \"baselineValues\": {\n \"aiaOcspServers\": [\"example.com\"],\n \"additionalExtensions\": [{\n \"critical\": True,\n \"value\": \"asdf\",\n \"objectId\": {\n \"objectIdPaths\": [\n 1,\n 7,\n ],\n },\n }],\n \"policyIds\": [\n {\n \"objectIdPaths\": [\n 1,\n 5,\n ],\n },\n {\n \"objectIdPaths\": [\n 1,\n 5,\n 7,\n ],\n },\n ],\n \"caOptions\": {\n \"isCa\": True,\n \"maxIssuerPathLength\": 10,\n },\n \"keyUsage\": {\n \"baseKeyUsage\": {\n \"digitalSignature\": True,\n \"contentCommitment\": True,\n \"keyEncipherment\": False,\n \"dataEncipherment\": True,\n \"keyAgreement\": True,\n \"certSign\": False,\n \"crlSign\": True,\n \"decipherOnly\": True,\n },\n \"extendedKeyUsage\": {\n \"serverAuth\": True,\n \"clientAuth\": False,\n \"emailProtection\": True,\n \"codeSigning\": True,\n \"timeStamping\": True,\n },\n },\n \"nameConstraints\": {\n \"critical\": True,\n \"permittedDnsNames\": [\n \"*.example1.com\",\n \"*.example2.com\",\n ],\n \"excludedDnsNames\": [\n \"*.deny.example1.com\",\n \"*.deny.example2.com\",\n ],\n \"permittedIpRanges\": [\n \"10.0.0.0/8\",\n \"11.0.0.0/8\",\n ],\n \"excludedIpRanges\": [\n \"10.1.1.0/24\",\n \"11.1.1.0/24\",\n ],\n \"permittedEmailAddresses\": [\n \".example1.com\",\n \".example2.com\",\n ],\n \"excludedEmailAddresses\": [\n \".deny.example1.com\",\n \".deny.example2.com\",\n ],\n \"permittedUris\": [\n \".example1.com\",\n \".example2.com\",\n ],\n \"excludedUris\": [\n \".deny.example1.com\",\n \".deny.example2.com\",\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 @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Name = \"my-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = false,\n PublishCrl = true,\n EncodingFormat = \"PEM\",\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n IssuancePolicy = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyArgs\n {\n AllowedKeyTypes = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyAllowedKeyTypeArgs\n {\n EllipticCurve = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyAllowedKeyTypeEllipticCurveArgs\n {\n SignatureAlgorithm = \"ECDSA_P256\",\n },\n },\n new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyAllowedKeyTypeArgs\n {\n Rsa = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyAllowedKeyTypeRsaArgs\n {\n MinModulusSize = \"5\",\n MaxModulusSize = \"10\",\n },\n },\n },\n MaximumLifetime = \"50000s\",\n AllowedIssuanceModes = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyAllowedIssuanceModesArgs\n {\n AllowCsrBasedIssuance = true,\n AllowConfigBasedIssuance = true,\n },\n IdentityConstraints = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyIdentityConstraintsArgs\n {\n AllowSubjectPassthrough = true,\n AllowSubjectAltNamesPassthrough = true,\n CelExpression = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyIdentityConstraintsCelExpressionArgs\n {\n Expression = \"subject_alt_names.all(san, san.type == DNS || san.type == EMAIL )\",\n Title = \"My title\",\n },\n },\n BaselineValues = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesArgs\n {\n AiaOcspServers = new[]\n {\n \"example.com\",\n },\n AdditionalExtensions = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesAdditionalExtensionArgs\n {\n Critical = true,\n Value = \"asdf\",\n ObjectId = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesAdditionalExtensionObjectIdArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 7,\n },\n },\n },\n },\n PolicyIds = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesPolicyIdArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 5,\n },\n },\n new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesPolicyIdArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 5,\n 7,\n },\n },\n },\n CaOptions = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs\n {\n IsCa = true,\n MaxIssuerPathLength = 10,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs\n {\n DigitalSignature = true,\n ContentCommitment = true,\n KeyEncipherment = false,\n DataEncipherment = true,\n KeyAgreement = true,\n CertSign = false,\n CrlSign = true,\n DecipherOnly = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n ClientAuth = false,\n EmailProtection = true,\n CodeSigning = true,\n TimeStamping = true,\n },\n },\n NameConstraints = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesNameConstraintsArgs\n {\n Critical = true,\n PermittedDnsNames = new[]\n {\n \"*.example1.com\",\n \"*.example2.com\",\n },\n ExcludedDnsNames = new[]\n {\n \"*.deny.example1.com\",\n \"*.deny.example2.com\",\n },\n PermittedIpRanges = new[]\n {\n \"10.0.0.0/8\",\n \"11.0.0.0/8\",\n },\n ExcludedIpRanges = new[]\n {\n \"10.1.1.0/24\",\n \"11.1.1.0/24\",\n },\n PermittedEmailAddresses = new[]\n {\n \".example1.com\",\n \".example2.com\",\n },\n ExcludedEmailAddresses = new[]\n {\n \".deny.example1.com\",\n \".deny.example2.com\",\n },\n PermittedUris = new[]\n {\n \".example1.com\",\n \".example2.com\",\n },\n ExcludedUris = new[]\n {\n \".deny.example1.com\",\n \".deny.example2.com\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"my-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(false),\n\t\t\t\tPublishCrl: pulumi.Bool(true),\n\t\t\t\tEncodingFormat: pulumi.String(\"PEM\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tIssuancePolicy: \u0026certificateauthority.CaPoolIssuancePolicyArgs{\n\t\t\t\tAllowedKeyTypes: certificateauthority.CaPoolIssuancePolicyAllowedKeyTypeArray{\n\t\t\t\t\t\u0026certificateauthority.CaPoolIssuancePolicyAllowedKeyTypeArgs{\n\t\t\t\t\t\tEllipticCurve: \u0026certificateauthority.CaPoolIssuancePolicyAllowedKeyTypeEllipticCurveArgs{\n\t\t\t\t\t\t\tSignatureAlgorithm: pulumi.String(\"ECDSA_P256\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026certificateauthority.CaPoolIssuancePolicyAllowedKeyTypeArgs{\n\t\t\t\t\t\tRsa: \u0026certificateauthority.CaPoolIssuancePolicyAllowedKeyTypeRsaArgs{\n\t\t\t\t\t\t\tMinModulusSize: pulumi.String(\"5\"),\n\t\t\t\t\t\t\tMaxModulusSize: pulumi.String(\"10\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMaximumLifetime: pulumi.String(\"50000s\"),\n\t\t\t\tAllowedIssuanceModes: \u0026certificateauthority.CaPoolIssuancePolicyAllowedIssuanceModesArgs{\n\t\t\t\t\tAllowCsrBasedIssuance: pulumi.Bool(true),\n\t\t\t\t\tAllowConfigBasedIssuance: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tIdentityConstraints: \u0026certificateauthority.CaPoolIssuancePolicyIdentityConstraintsArgs{\n\t\t\t\t\tAllowSubjectPassthrough: pulumi.Bool(true),\n\t\t\t\t\tAllowSubjectAltNamesPassthrough: pulumi.Bool(true),\n\t\t\t\t\tCelExpression: \u0026certificateauthority.CaPoolIssuancePolicyIdentityConstraintsCelExpressionArgs{\n\t\t\t\t\t\tExpression: pulumi.String(\"subject_alt_names.all(san, san.type == DNS || san.type == EMAIL )\"),\n\t\t\t\t\t\tTitle: pulumi.String(\"My title\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tBaselineValues: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesArgs{\n\t\t\t\t\tAiaOcspServers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tAdditionalExtensions: certificateauthority.CaPoolIssuancePolicyBaselineValuesAdditionalExtensionArray{\n\t\t\t\t\t\t\u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesAdditionalExtensionArgs{\n\t\t\t\t\t\t\tCritical: pulumi.Bool(true),\n\t\t\t\t\t\t\tValue: pulumi.String(\"asdf\"),\n\t\t\t\t\t\t\tObjectId: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesAdditionalExtensionObjectIdArgs{\n\t\t\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\t\t\tpulumi.Int(7),\n\t\t\t\t\t\t\t\t},\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\tPolicyIds: certificateauthority.CaPoolIssuancePolicyBaselineValuesPolicyIdArray{\n\t\t\t\t\t\t\u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesPolicyIdArgs{\n\t\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\t\tpulumi.Int(5),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesPolicyIdArgs{\n\t\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\t\tpulumi.Int(5),\n\t\t\t\t\t\t\t\tpulumi.Int(7),\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\tCaOptions: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t\tMaxIssuerPathLength: pulumi.Int(10),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tDigitalSignature: pulumi.Bool(true),\n\t\t\t\t\t\t\tContentCommitment: pulumi.Bool(true),\n\t\t\t\t\t\t\tKeyEncipherment: pulumi.Bool(false),\n\t\t\t\t\t\t\tDataEncipherment: pulumi.Bool(true),\n\t\t\t\t\t\t\tKeyAgreement: pulumi.Bool(true),\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(false),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tDecipherOnly: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t\tClientAuth: pulumi.Bool(false),\n\t\t\t\t\t\t\tEmailProtection: pulumi.Bool(true),\n\t\t\t\t\t\t\tCodeSigning: pulumi.Bool(true),\n\t\t\t\t\t\t\tTimeStamping: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tNameConstraints: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesNameConstraintsArgs{\n\t\t\t\t\t\tCritical: pulumi.Bool(true),\n\t\t\t\t\t\tPermittedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.example1.com\"),\n\t\t\t\t\t\t\tpulumi.String(\"*.example2.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.deny.example1.com\"),\n\t\t\t\t\t\t\tpulumi.String(\"*.deny.example2.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t\t\t\tpulumi.String(\"11.0.0.0/8\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.1.1.0/24\"),\n\t\t\t\t\t\t\tpulumi.String(\"11.1.1.0/24\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example1.com\"),\n\t\t\t\t\t\t\tpulumi.String(\".example2.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example1.com\"),\n\t\t\t\t\t\t\tpulumi.String(\".deny.example2.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example1.com\"),\n\t\t\t\t\t\t\tpulumi.String(\".example2.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example1.com\"),\n\t\t\t\t\t\t\tpulumi.String(\".deny.example2.com\"),\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.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyAllowedIssuanceModesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyIdentityConstraintsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyIdentityConstraintsCelExpressionArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesNameConstraintsArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .name(\"my-pool\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(false)\n .publishCrl(true)\n .encodingFormat(\"PEM\")\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .issuancePolicy(CaPoolIssuancePolicyArgs.builder()\n .allowedKeyTypes( \n CaPoolIssuancePolicyAllowedKeyTypeArgs.builder()\n .ellipticCurve(CaPoolIssuancePolicyAllowedKeyTypeEllipticCurveArgs.builder()\n .signatureAlgorithm(\"ECDSA_P256\")\n .build())\n .build(),\n CaPoolIssuancePolicyAllowedKeyTypeArgs.builder()\n .rsa(CaPoolIssuancePolicyAllowedKeyTypeRsaArgs.builder()\n .minModulusSize(5)\n .maxModulusSize(10)\n .build())\n .build())\n .maximumLifetime(\"50000s\")\n .allowedIssuanceModes(CaPoolIssuancePolicyAllowedIssuanceModesArgs.builder()\n .allowCsrBasedIssuance(true)\n .allowConfigBasedIssuance(true)\n .build())\n .identityConstraints(CaPoolIssuancePolicyIdentityConstraintsArgs.builder()\n .allowSubjectPassthrough(true)\n .allowSubjectAltNamesPassthrough(true)\n .celExpression(CaPoolIssuancePolicyIdentityConstraintsCelExpressionArgs.builder()\n .expression(\"subject_alt_names.all(san, san.type == DNS || san.type == EMAIL )\")\n .title(\"My title\")\n .build())\n .build())\n .baselineValues(CaPoolIssuancePolicyBaselineValuesArgs.builder()\n .aiaOcspServers(\"example.com\")\n .additionalExtensions(CaPoolIssuancePolicyBaselineValuesAdditionalExtensionArgs.builder()\n .critical(true)\n .value(\"asdf\")\n .objectId(CaPoolIssuancePolicyBaselineValuesAdditionalExtensionObjectIdArgs.builder()\n .objectIdPaths( \n 1,\n 7)\n .build())\n .build())\n .policyIds( \n CaPoolIssuancePolicyBaselineValuesPolicyIdArgs.builder()\n .objectIdPaths( \n 1,\n 5)\n .build(),\n CaPoolIssuancePolicyBaselineValuesPolicyIdArgs.builder()\n .objectIdPaths( \n 1,\n 5,\n 7)\n .build())\n .caOptions(CaPoolIssuancePolicyBaselineValuesCaOptionsArgs.builder()\n .isCa(true)\n .maxIssuerPathLength(10)\n .build())\n .keyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageArgs.builder()\n .baseKeyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs.builder()\n .digitalSignature(true)\n .contentCommitment(true)\n .keyEncipherment(false)\n .dataEncipherment(true)\n .keyAgreement(true)\n .certSign(false)\n .crlSign(true)\n .decipherOnly(true)\n .build())\n .extendedKeyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .clientAuth(false)\n .emailProtection(true)\n .codeSigning(true)\n .timeStamping(true)\n .build())\n .build())\n .nameConstraints(CaPoolIssuancePolicyBaselineValuesNameConstraintsArgs.builder()\n .critical(true)\n .permittedDnsNames( \n \"*.example1.com\",\n \"*.example2.com\")\n .excludedDnsNames( \n \"*.deny.example1.com\",\n \"*.deny.example2.com\")\n .permittedIpRanges( \n \"10.0.0.0/8\",\n \"11.0.0.0/8\")\n .excludedIpRanges( \n \"10.1.1.0/24\",\n \"11.1.1.0/24\")\n .permittedEmailAddresses( \n \".example1.com\",\n \".example2.com\")\n .excludedEmailAddresses( \n \".deny.example1.com\",\n \".deny.example2.com\")\n .permittedUris( \n \".example1.com\",\n \".example2.com\")\n .excludedUris( \n \".deny.example1.com\",\n \".deny.example2.com\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n name: my-pool\n location: us-central1\n tier: ENTERPRISE\n publishingOptions:\n publishCaCert: false\n publishCrl: true\n encodingFormat: PEM\n labels:\n foo: bar\n issuancePolicy:\n allowedKeyTypes:\n - ellipticCurve:\n signatureAlgorithm: ECDSA_P256\n - rsa:\n minModulusSize: 5\n maxModulusSize: 10\n maximumLifetime: 50000s\n allowedIssuanceModes:\n allowCsrBasedIssuance: true\n allowConfigBasedIssuance: true\n identityConstraints:\n allowSubjectPassthrough: true\n allowSubjectAltNamesPassthrough: true\n celExpression:\n expression: subject_alt_names.all(san, san.type == DNS || san.type == EMAIL )\n title: My title\n baselineValues:\n aiaOcspServers:\n - example.com\n additionalExtensions:\n - critical: true\n value: asdf\n objectId:\n objectIdPaths:\n - 1\n - 7\n policyIds:\n - objectIdPaths:\n - 1\n - 5\n - objectIdPaths:\n - 1\n - 5\n - 7\n caOptions:\n isCa: true\n maxIssuerPathLength: 10\n keyUsage:\n baseKeyUsage:\n digitalSignature: true\n contentCommitment: true\n keyEncipherment: false\n dataEncipherment: true\n keyAgreement: true\n certSign: false\n crlSign: true\n decipherOnly: true\n extendedKeyUsage:\n serverAuth: true\n clientAuth: false\n emailProtection: true\n codeSigning: true\n timeStamping: true\n nameConstraints:\n critical: true\n permittedDnsNames:\n - '*.example1.com'\n - '*.example2.com'\n excludedDnsNames:\n - '*.deny.example1.com'\n - '*.deny.example2.com'\n permittedIpRanges:\n - 10.0.0.0/8\n - 11.0.0.0/8\n excludedIpRanges:\n - 10.1.1.0/24\n - 11.1.1.0/24\n permittedEmailAddresses:\n - .example1.com\n - .example2.com\n excludedEmailAddresses:\n - .deny.example1.com\n - .deny.example2.com\n permittedUris:\n - .example1.com\n - .example2.com\n excludedUris:\n - .deny.example1.com\n - .deny.example2.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCaPool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/caPools/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, CaPool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificateauthority/caPool:CaPool default projects/{{project}}/locations/{{location}}/caPools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/caPool:CaPool default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/caPool:CaPool default {{location}}/{{name}}\n```\n\n", + "description": "A CaPool represents a group of CertificateAuthorities that form a trust anchor. A CaPool can be used to manage\nissuance policies for one or more CertificateAuthority resources and to rotate CA certificates in and out of the\ntrust anchor.\n\n\n\n## Example Usage\n\n### Privateca Capool Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n name: \"my-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n publishingOptions: {\n publishCaCert: true,\n publishCrl: true,\n },\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n name=\"my-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n publishing_options={\n \"publish_ca_cert\": True,\n \"publish_crl\": True,\n },\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 @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Name = \"my-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = true,\n PublishCrl = true,\n },\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/v7/go/gcp/certificateauthority\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"my-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(true),\n\t\t\t\tPublishCrl: pulumi.Bool(true),\n\t\t\t},\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.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .name(\"my-pool\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(true)\n .publishCrl(true)\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n name: my-pool\n location: us-central1\n tier: ENTERPRISE\n publishingOptions:\n publishCaCert: true\n publishCrl: true\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Capool All Fields\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n name: \"my-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n publishingOptions: {\n publishCaCert: false,\n publishCrl: true,\n encodingFormat: \"PEM\",\n },\n labels: {\n foo: \"bar\",\n },\n issuancePolicy: {\n allowedKeyTypes: [\n {\n ellipticCurve: {\n signatureAlgorithm: \"ECDSA_P256\",\n },\n },\n {\n rsa: {\n minModulusSize: \"5\",\n maxModulusSize: \"10\",\n },\n },\n ],\n maximumLifetime: \"50000s\",\n allowedIssuanceModes: {\n allowCsrBasedIssuance: true,\n allowConfigBasedIssuance: true,\n },\n identityConstraints: {\n allowSubjectPassthrough: true,\n allowSubjectAltNamesPassthrough: true,\n celExpression: {\n expression: \"subject_alt_names.all(san, san.type == DNS || san.type == EMAIL )\",\n title: \"My title\",\n },\n },\n baselineValues: {\n aiaOcspServers: [\"example.com\"],\n additionalExtensions: [{\n critical: true,\n value: \"asdf\",\n objectId: {\n objectIdPaths: [\n 1,\n 7,\n ],\n },\n }],\n policyIds: [\n {\n objectIdPaths: [\n 1,\n 5,\n ],\n },\n {\n objectIdPaths: [\n 1,\n 5,\n 7,\n ],\n },\n ],\n caOptions: {\n isCa: true,\n maxIssuerPathLength: 10,\n },\n keyUsage: {\n baseKeyUsage: {\n digitalSignature: true,\n contentCommitment: true,\n keyEncipherment: false,\n dataEncipherment: true,\n keyAgreement: true,\n certSign: false,\n crlSign: true,\n decipherOnly: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n clientAuth: false,\n emailProtection: true,\n codeSigning: true,\n timeStamping: true,\n },\n },\n nameConstraints: {\n critical: true,\n permittedDnsNames: [\n \"*.example1.com\",\n \"*.example2.com\",\n ],\n excludedDnsNames: [\n \"*.deny.example1.com\",\n \"*.deny.example2.com\",\n ],\n permittedIpRanges: [\n \"10.0.0.0/8\",\n \"11.0.0.0/8\",\n ],\n excludedIpRanges: [\n \"10.1.1.0/24\",\n \"11.1.1.0/24\",\n ],\n permittedEmailAddresses: [\n \".example1.com\",\n \".example2.com\",\n ],\n excludedEmailAddresses: [\n \".deny.example1.com\",\n \".deny.example2.com\",\n ],\n permittedUris: [\n \".example1.com\",\n \".example2.com\",\n ],\n excludedUris: [\n \".deny.example1.com\",\n \".deny.example2.com\",\n ],\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n name=\"my-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n publishing_options={\n \"publish_ca_cert\": False,\n \"publish_crl\": True,\n \"encoding_format\": \"PEM\",\n },\n labels={\n \"foo\": \"bar\",\n },\n issuance_policy={\n \"allowed_key_types\": [\n {\n \"elliptic_curve\": {\n \"signature_algorithm\": \"ECDSA_P256\",\n },\n },\n {\n \"rsa\": {\n \"min_modulus_size\": \"5\",\n \"max_modulus_size\": \"10\",\n },\n },\n ],\n \"maximum_lifetime\": \"50000s\",\n \"allowed_issuance_modes\": {\n \"allow_csr_based_issuance\": True,\n \"allow_config_based_issuance\": True,\n },\n \"identity_constraints\": {\n \"allow_subject_passthrough\": True,\n \"allow_subject_alt_names_passthrough\": True,\n \"cel_expression\": {\n \"expression\": \"subject_alt_names.all(san, san.type == DNS || san.type == EMAIL )\",\n \"title\": \"My title\",\n },\n },\n \"baseline_values\": {\n \"aia_ocsp_servers\": [\"example.com\"],\n \"additional_extensions\": [{\n \"critical\": True,\n \"value\": \"asdf\",\n \"object_id\": {\n \"object_id_paths\": [\n 1,\n 7,\n ],\n },\n }],\n \"policy_ids\": [\n {\n \"object_id_paths\": [\n 1,\n 5,\n ],\n },\n {\n \"object_id_paths\": [\n 1,\n 5,\n 7,\n ],\n },\n ],\n \"ca_options\": {\n \"is_ca\": True,\n \"max_issuer_path_length\": 10,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"digital_signature\": True,\n \"content_commitment\": True,\n \"key_encipherment\": False,\n \"data_encipherment\": True,\n \"key_agreement\": True,\n \"cert_sign\": False,\n \"crl_sign\": True,\n \"decipher_only\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n \"client_auth\": False,\n \"email_protection\": True,\n \"code_signing\": True,\n \"time_stamping\": True,\n },\n },\n \"name_constraints\": {\n \"critical\": True,\n \"permitted_dns_names\": [\n \"*.example1.com\",\n \"*.example2.com\",\n ],\n \"excluded_dns_names\": [\n \"*.deny.example1.com\",\n \"*.deny.example2.com\",\n ],\n \"permitted_ip_ranges\": [\n \"10.0.0.0/8\",\n \"11.0.0.0/8\",\n ],\n \"excluded_ip_ranges\": [\n \"10.1.1.0/24\",\n \"11.1.1.0/24\",\n ],\n \"permitted_email_addresses\": [\n \".example1.com\",\n \".example2.com\",\n ],\n \"excluded_email_addresses\": [\n \".deny.example1.com\",\n \".deny.example2.com\",\n ],\n \"permitted_uris\": [\n \".example1.com\",\n \".example2.com\",\n ],\n \"excluded_uris\": [\n \".deny.example1.com\",\n \".deny.example2.com\",\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 @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Name = \"my-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = false,\n PublishCrl = true,\n EncodingFormat = \"PEM\",\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n IssuancePolicy = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyArgs\n {\n AllowedKeyTypes = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyAllowedKeyTypeArgs\n {\n EllipticCurve = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyAllowedKeyTypeEllipticCurveArgs\n {\n SignatureAlgorithm = \"ECDSA_P256\",\n },\n },\n new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyAllowedKeyTypeArgs\n {\n Rsa = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyAllowedKeyTypeRsaArgs\n {\n MinModulusSize = \"5\",\n MaxModulusSize = \"10\",\n },\n },\n },\n MaximumLifetime = \"50000s\",\n AllowedIssuanceModes = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyAllowedIssuanceModesArgs\n {\n AllowCsrBasedIssuance = true,\n AllowConfigBasedIssuance = true,\n },\n IdentityConstraints = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyIdentityConstraintsArgs\n {\n AllowSubjectPassthrough = true,\n AllowSubjectAltNamesPassthrough = true,\n CelExpression = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyIdentityConstraintsCelExpressionArgs\n {\n Expression = \"subject_alt_names.all(san, san.type == DNS || san.type == EMAIL )\",\n Title = \"My title\",\n },\n },\n BaselineValues = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesArgs\n {\n AiaOcspServers = new[]\n {\n \"example.com\",\n },\n AdditionalExtensions = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesAdditionalExtensionArgs\n {\n Critical = true,\n Value = \"asdf\",\n ObjectId = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesAdditionalExtensionObjectIdArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 7,\n },\n },\n },\n },\n PolicyIds = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesPolicyIdArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 5,\n },\n },\n new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesPolicyIdArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 5,\n 7,\n },\n },\n },\n CaOptions = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs\n {\n IsCa = true,\n MaxIssuerPathLength = 10,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs\n {\n DigitalSignature = true,\n ContentCommitment = true,\n KeyEncipherment = false,\n DataEncipherment = true,\n KeyAgreement = true,\n CertSign = false,\n CrlSign = true,\n DecipherOnly = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n ClientAuth = false,\n EmailProtection = true,\n CodeSigning = true,\n TimeStamping = true,\n },\n },\n NameConstraints = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesNameConstraintsArgs\n {\n Critical = true,\n PermittedDnsNames = new[]\n {\n \"*.example1.com\",\n \"*.example2.com\",\n },\n ExcludedDnsNames = new[]\n {\n \"*.deny.example1.com\",\n \"*.deny.example2.com\",\n },\n PermittedIpRanges = new[]\n {\n \"10.0.0.0/8\",\n \"11.0.0.0/8\",\n },\n ExcludedIpRanges = new[]\n {\n \"10.1.1.0/24\",\n \"11.1.1.0/24\",\n },\n PermittedEmailAddresses = new[]\n {\n \".example1.com\",\n \".example2.com\",\n },\n ExcludedEmailAddresses = new[]\n {\n \".deny.example1.com\",\n \".deny.example2.com\",\n },\n PermittedUris = new[]\n {\n \".example1.com\",\n \".example2.com\",\n },\n ExcludedUris = new[]\n {\n \".deny.example1.com\",\n \".deny.example2.com\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"my-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(false),\n\t\t\t\tPublishCrl: pulumi.Bool(true),\n\t\t\t\tEncodingFormat: pulumi.String(\"PEM\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tIssuancePolicy: \u0026certificateauthority.CaPoolIssuancePolicyArgs{\n\t\t\t\tAllowedKeyTypes: certificateauthority.CaPoolIssuancePolicyAllowedKeyTypeArray{\n\t\t\t\t\t\u0026certificateauthority.CaPoolIssuancePolicyAllowedKeyTypeArgs{\n\t\t\t\t\t\tEllipticCurve: \u0026certificateauthority.CaPoolIssuancePolicyAllowedKeyTypeEllipticCurveArgs{\n\t\t\t\t\t\t\tSignatureAlgorithm: pulumi.String(\"ECDSA_P256\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026certificateauthority.CaPoolIssuancePolicyAllowedKeyTypeArgs{\n\t\t\t\t\t\tRsa: \u0026certificateauthority.CaPoolIssuancePolicyAllowedKeyTypeRsaArgs{\n\t\t\t\t\t\t\tMinModulusSize: pulumi.String(\"5\"),\n\t\t\t\t\t\t\tMaxModulusSize: pulumi.String(\"10\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMaximumLifetime: pulumi.String(\"50000s\"),\n\t\t\t\tAllowedIssuanceModes: \u0026certificateauthority.CaPoolIssuancePolicyAllowedIssuanceModesArgs{\n\t\t\t\t\tAllowCsrBasedIssuance: pulumi.Bool(true),\n\t\t\t\t\tAllowConfigBasedIssuance: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tIdentityConstraints: \u0026certificateauthority.CaPoolIssuancePolicyIdentityConstraintsArgs{\n\t\t\t\t\tAllowSubjectPassthrough: pulumi.Bool(true),\n\t\t\t\t\tAllowSubjectAltNamesPassthrough: pulumi.Bool(true),\n\t\t\t\t\tCelExpression: \u0026certificateauthority.CaPoolIssuancePolicyIdentityConstraintsCelExpressionArgs{\n\t\t\t\t\t\tExpression: pulumi.String(\"subject_alt_names.all(san, san.type == DNS || san.type == EMAIL )\"),\n\t\t\t\t\t\tTitle: pulumi.String(\"My title\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tBaselineValues: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesArgs{\n\t\t\t\t\tAiaOcspServers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tAdditionalExtensions: certificateauthority.CaPoolIssuancePolicyBaselineValuesAdditionalExtensionArray{\n\t\t\t\t\t\t\u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesAdditionalExtensionArgs{\n\t\t\t\t\t\t\tCritical: pulumi.Bool(true),\n\t\t\t\t\t\t\tValue: pulumi.String(\"asdf\"),\n\t\t\t\t\t\t\tObjectId: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesAdditionalExtensionObjectIdArgs{\n\t\t\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\t\t\tpulumi.Int(7),\n\t\t\t\t\t\t\t\t},\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\tPolicyIds: certificateauthority.CaPoolIssuancePolicyBaselineValuesPolicyIdArray{\n\t\t\t\t\t\t\u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesPolicyIdArgs{\n\t\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\t\tpulumi.Int(5),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesPolicyIdArgs{\n\t\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\t\tpulumi.Int(5),\n\t\t\t\t\t\t\t\tpulumi.Int(7),\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\tCaOptions: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t\tMaxIssuerPathLength: pulumi.Int(10),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tDigitalSignature: pulumi.Bool(true),\n\t\t\t\t\t\t\tContentCommitment: pulumi.Bool(true),\n\t\t\t\t\t\t\tKeyEncipherment: pulumi.Bool(false),\n\t\t\t\t\t\t\tDataEncipherment: pulumi.Bool(true),\n\t\t\t\t\t\t\tKeyAgreement: pulumi.Bool(true),\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(false),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tDecipherOnly: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t\tClientAuth: pulumi.Bool(false),\n\t\t\t\t\t\t\tEmailProtection: pulumi.Bool(true),\n\t\t\t\t\t\t\tCodeSigning: pulumi.Bool(true),\n\t\t\t\t\t\t\tTimeStamping: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tNameConstraints: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesNameConstraintsArgs{\n\t\t\t\t\t\tCritical: pulumi.Bool(true),\n\t\t\t\t\t\tPermittedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.example1.com\"),\n\t\t\t\t\t\t\tpulumi.String(\"*.example2.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.deny.example1.com\"),\n\t\t\t\t\t\t\tpulumi.String(\"*.deny.example2.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t\t\t\tpulumi.String(\"11.0.0.0/8\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.1.1.0/24\"),\n\t\t\t\t\t\t\tpulumi.String(\"11.1.1.0/24\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example1.com\"),\n\t\t\t\t\t\t\tpulumi.String(\".example2.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example1.com\"),\n\t\t\t\t\t\t\tpulumi.String(\".deny.example2.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example1.com\"),\n\t\t\t\t\t\t\tpulumi.String(\".example2.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example1.com\"),\n\t\t\t\t\t\t\tpulumi.String(\".deny.example2.com\"),\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.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyAllowedIssuanceModesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyIdentityConstraintsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyIdentityConstraintsCelExpressionArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesNameConstraintsArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .name(\"my-pool\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(false)\n .publishCrl(true)\n .encodingFormat(\"PEM\")\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .issuancePolicy(CaPoolIssuancePolicyArgs.builder()\n .allowedKeyTypes( \n CaPoolIssuancePolicyAllowedKeyTypeArgs.builder()\n .ellipticCurve(CaPoolIssuancePolicyAllowedKeyTypeEllipticCurveArgs.builder()\n .signatureAlgorithm(\"ECDSA_P256\")\n .build())\n .build(),\n CaPoolIssuancePolicyAllowedKeyTypeArgs.builder()\n .rsa(CaPoolIssuancePolicyAllowedKeyTypeRsaArgs.builder()\n .minModulusSize(5)\n .maxModulusSize(10)\n .build())\n .build())\n .maximumLifetime(\"50000s\")\n .allowedIssuanceModes(CaPoolIssuancePolicyAllowedIssuanceModesArgs.builder()\n .allowCsrBasedIssuance(true)\n .allowConfigBasedIssuance(true)\n .build())\n .identityConstraints(CaPoolIssuancePolicyIdentityConstraintsArgs.builder()\n .allowSubjectPassthrough(true)\n .allowSubjectAltNamesPassthrough(true)\n .celExpression(CaPoolIssuancePolicyIdentityConstraintsCelExpressionArgs.builder()\n .expression(\"subject_alt_names.all(san, san.type == DNS || san.type == EMAIL )\")\n .title(\"My title\")\n .build())\n .build())\n .baselineValues(CaPoolIssuancePolicyBaselineValuesArgs.builder()\n .aiaOcspServers(\"example.com\")\n .additionalExtensions(CaPoolIssuancePolicyBaselineValuesAdditionalExtensionArgs.builder()\n .critical(true)\n .value(\"asdf\")\n .objectId(CaPoolIssuancePolicyBaselineValuesAdditionalExtensionObjectIdArgs.builder()\n .objectIdPaths( \n 1,\n 7)\n .build())\n .build())\n .policyIds( \n CaPoolIssuancePolicyBaselineValuesPolicyIdArgs.builder()\n .objectIdPaths( \n 1,\n 5)\n .build(),\n CaPoolIssuancePolicyBaselineValuesPolicyIdArgs.builder()\n .objectIdPaths( \n 1,\n 5,\n 7)\n .build())\n .caOptions(CaPoolIssuancePolicyBaselineValuesCaOptionsArgs.builder()\n .isCa(true)\n .maxIssuerPathLength(10)\n .build())\n .keyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageArgs.builder()\n .baseKeyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs.builder()\n .digitalSignature(true)\n .contentCommitment(true)\n .keyEncipherment(false)\n .dataEncipherment(true)\n .keyAgreement(true)\n .certSign(false)\n .crlSign(true)\n .decipherOnly(true)\n .build())\n .extendedKeyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .clientAuth(false)\n .emailProtection(true)\n .codeSigning(true)\n .timeStamping(true)\n .build())\n .build())\n .nameConstraints(CaPoolIssuancePolicyBaselineValuesNameConstraintsArgs.builder()\n .critical(true)\n .permittedDnsNames( \n \"*.example1.com\",\n \"*.example2.com\")\n .excludedDnsNames( \n \"*.deny.example1.com\",\n \"*.deny.example2.com\")\n .permittedIpRanges( \n \"10.0.0.0/8\",\n \"11.0.0.0/8\")\n .excludedIpRanges( \n \"10.1.1.0/24\",\n \"11.1.1.0/24\")\n .permittedEmailAddresses( \n \".example1.com\",\n \".example2.com\")\n .excludedEmailAddresses( \n \".deny.example1.com\",\n \".deny.example2.com\")\n .permittedUris( \n \".example1.com\",\n \".example2.com\")\n .excludedUris( \n \".deny.example1.com\",\n \".deny.example2.com\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n name: my-pool\n location: us-central1\n tier: ENTERPRISE\n publishingOptions:\n publishCaCert: false\n publishCrl: true\n encodingFormat: PEM\n labels:\n foo: bar\n issuancePolicy:\n allowedKeyTypes:\n - ellipticCurve:\n signatureAlgorithm: ECDSA_P256\n - rsa:\n minModulusSize: 5\n maxModulusSize: 10\n maximumLifetime: 50000s\n allowedIssuanceModes:\n allowCsrBasedIssuance: true\n allowConfigBasedIssuance: true\n identityConstraints:\n allowSubjectPassthrough: true\n allowSubjectAltNamesPassthrough: true\n celExpression:\n expression: subject_alt_names.all(san, san.type == DNS || san.type == EMAIL )\n title: My title\n baselineValues:\n aiaOcspServers:\n - example.com\n additionalExtensions:\n - critical: true\n value: asdf\n objectId:\n objectIdPaths:\n - 1\n - 7\n policyIds:\n - objectIdPaths:\n - 1\n - 5\n - objectIdPaths:\n - 1\n - 5\n - 7\n caOptions:\n isCa: true\n maxIssuerPathLength: 10\n keyUsage:\n baseKeyUsage:\n digitalSignature: true\n contentCommitment: true\n keyEncipherment: false\n dataEncipherment: true\n keyAgreement: true\n certSign: false\n crlSign: true\n decipherOnly: true\n extendedKeyUsage:\n serverAuth: true\n clientAuth: false\n emailProtection: true\n codeSigning: true\n timeStamping: true\n nameConstraints:\n critical: true\n permittedDnsNames:\n - '*.example1.com'\n - '*.example2.com'\n excludedDnsNames:\n - '*.deny.example1.com'\n - '*.deny.example2.com'\n permittedIpRanges:\n - 10.0.0.0/8\n - 11.0.0.0/8\n excludedIpRanges:\n - 10.1.1.0/24\n - 11.1.1.0/24\n permittedEmailAddresses:\n - .example1.com\n - .example2.com\n excludedEmailAddresses:\n - .deny.example1.com\n - .deny.example2.com\n permittedUris:\n - .example1.com\n - .example2.com\n excludedUris:\n - .deny.example1.com\n - .deny.example2.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCaPool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/caPools/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, CaPool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificateauthority/caPool:CaPool default projects/{{project}}/locations/{{location}}/caPools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/caPool:CaPool default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/caPool:CaPool default {{location}}/{{name}}\n```\n\n", "properties": { "effectiveLabels": { "type": "object", @@ -130067,7 +130067,7 @@ } }, "gcp:certificateauthority/certificate:Certificate": { - "description": "A Certificate corresponds to a signed X.509 certificate issued by a Certificate.\n\n\n\u003e **Note:** The Certificate Authority that is referenced by this resource **must** be\n`tier = \"ENTERPRISE\"`\n\n\n\n## Example Usage\n\n### Privateca Certificate Generated Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\nimport * as tls from \"@pulumi/tls\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"default\",\n tier: \"ENTERPRISE\",\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-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 certKey = new tls.PrivateKey(\"cert_key\", {algorithm: \"RSA\"});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthority: defaultAuthority.certificateAuthorityId,\n lifetime: \"86000s\",\n name: \"cert-1\",\n config: {\n subjectConfig: {\n subject: {\n commonName: \"san1.example.com\",\n countryCode: \"us\",\n organization: \"google\",\n organizationalUnit: \"enterprise\",\n locality: \"mountain view\",\n province: \"california\",\n streetAddress: \"1600 amphitheatre parkway\",\n },\n subjectAltName: {\n emailAddresses: [\"email@example.com\"],\n ipAddresses: [\"127.0.0.1\"],\n uris: [\"http://www.ietf.org/rfc/rfc3986.txt\"],\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: false,\n },\n },\n nameConstraints: {\n critical: true,\n permittedDnsNames: [\"*.example.com\"],\n excludedDnsNames: [\"*.deny.example.com\"],\n permittedIpRanges: [\"10.0.0.0/8\"],\n excludedIpRanges: [\"10.1.1.0/24\"],\n permittedEmailAddresses: [\".example.com\"],\n excludedEmailAddresses: [\".deny.example.com\"],\n permittedUris: [\".example.com\"],\n excludedUris: [\".deny.example.com\"],\n },\n },\n publicKey: {\n format: \"PEM\",\n key: std.base64encodeOutput({\n input: certKey.publicKeyPem,\n }).apply(invoke =\u003e invoke.result),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\nimport pulumi_tls as tls\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"default\",\n tier=\"ENTERPRISE\")\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-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 key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ncert_key = tls.PrivateKey(\"cert_key\", algorithm=\"RSA\")\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority=default_authority.certificate_authority_id,\n lifetime=\"86000s\",\n name=\"cert-1\",\n config={\n \"subjectConfig\": {\n \"subject\": {\n \"commonName\": \"san1.example.com\",\n \"countryCode\": \"us\",\n \"organization\": \"google\",\n \"organizationalUnit\": \"enterprise\",\n \"locality\": \"mountain view\",\n \"province\": \"california\",\n \"streetAddress\": \"1600 amphitheatre parkway\",\n },\n \"subjectAltName\": {\n \"emailAddresses\": [\"email@example.com\"],\n \"ipAddresses\": [\"127.0.0.1\"],\n \"uris\": [\"http://www.ietf.org/rfc/rfc3986.txt\"],\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\": False,\n },\n },\n \"nameConstraints\": {\n \"critical\": True,\n \"permittedDnsNames\": [\"*.example.com\"],\n \"excludedDnsNames\": [\"*.deny.example.com\"],\n \"permittedIpRanges\": [\"10.0.0.0/8\"],\n \"excludedIpRanges\": [\"10.1.1.0/24\"],\n \"permittedEmailAddresses\": [\".example.com\"],\n \"excludedEmailAddresses\": [\".deny.example.com\"],\n \"permittedUris\": [\".example.com\"],\n \"excludedUris\": [\".deny.example.com\"],\n },\n },\n \"publicKey\": {\n \"format\": \"PEM\",\n \"key\": std.base64encode_output(input=cert_key.public_key_pem).apply(lambda invoke: invoke.result),\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\nusing Tls = Pulumi.Tls;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"default\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-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 certKey = new Tls.PrivateKey(\"cert_key\", new()\n {\n Algorithm = \"RSA\",\n });\n\n var defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthority = defaultAuthority.CertificateAuthorityId,\n Lifetime = \"86000s\",\n Name = \"cert-1\",\n Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigSubjectArgs\n {\n CommonName = \"san1.example.com\",\n CountryCode = \"us\",\n Organization = \"google\",\n OrganizationalUnit = \"enterprise\",\n Locality = \"mountain view\",\n Province = \"california\",\n StreetAddress = \"1600 amphitheatre parkway\",\n },\n SubjectAltName = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigSubjectAltNameArgs\n {\n EmailAddresses = new[]\n {\n \"email@example.com\",\n },\n IpAddresses = new[]\n {\n \"127.0.0.1\",\n },\n Uris = new[]\n {\n \"http://www.ietf.org/rfc/rfc3986.txt\",\n },\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = false,\n },\n },\n NameConstraints = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigNameConstraintsArgs\n {\n Critical = true,\n PermittedDnsNames = new[]\n {\n \"*.example.com\",\n },\n ExcludedDnsNames = new[]\n {\n \"*.deny.example.com\",\n },\n PermittedIpRanges = new[]\n {\n \"10.0.0.0/8\",\n },\n ExcludedIpRanges = new[]\n {\n \"10.1.1.0/24\",\n },\n PermittedEmailAddresses = new[]\n {\n \".example.com\",\n },\n ExcludedEmailAddresses = new[]\n {\n \".deny.example.com\",\n },\n PermittedUris = new[]\n {\n \".example.com\",\n },\n ExcludedUris = new[]\n {\n \".deny.example.com\",\n },\n },\n },\n PublicKey = new Gcp.CertificateAuthority.Inputs.CertificateConfigPublicKeyArgs\n {\n Format = \"PEM\",\n Key = Std.Base64encode.Invoke(new()\n {\n Input = certKey.PublicKeyPem,\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi-tls/sdk/v5/go/tls\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"default\"),\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\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-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\tcertKey, err := tls.NewPrivateKey(ctx, \"cert_key\", \u0026tls.PrivateKeyArgs{\n\t\t\tAlgorithm: pulumi.String(\"RSA\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthority: defaultAuthority.CertificateAuthorityId,\n\t\t\tLifetime: pulumi.String(\"86000s\"),\n\t\t\tName: pulumi.String(\"cert-1\"),\n\t\t\tConfig: \u0026certificateauthority.CertificateConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.CertificateConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.CertificateConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tCommonName: pulumi.String(\"san1.example.com\"),\n\t\t\t\t\t\tCountryCode: pulumi.String(\"us\"),\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tOrganizationalUnit: pulumi.String(\"enterprise\"),\n\t\t\t\t\t\tLocality: pulumi.String(\"mountain view\"),\n\t\t\t\t\t\tProvince: pulumi.String(\"california\"),\n\t\t\t\t\t\tStreetAddress: pulumi.String(\"1600 amphitheatre parkway\"),\n\t\t\t\t\t},\n\t\t\t\t\tSubjectAltName: \u0026certificateauthority.CertificateConfigSubjectConfigSubjectAltNameArgs{\n\t\t\t\t\t\tEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"email@example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tIpAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"127.0.0.1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"http://www.ietf.org/rfc/rfc3986.txt\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.CertificateConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CertificateConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs{\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.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tNameConstraints: \u0026certificateauthority.CertificateConfigX509ConfigNameConstraintsArgs{\n\t\t\t\t\t\tCritical: pulumi.Bool(true),\n\t\t\t\t\t\tPermittedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.1.1.0/24\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPublicKey: \u0026certificateauthority.CertificateConfigPublicKeyArgs{\n\t\t\t\t\tFormat: pulumi.String(\"PEM\"),\n\t\t\t\t\tKey: std.Base64encodeOutput(ctx, std.Base64encodeOutputArgs{\n\t\t\t\t\t\tInput: certKey.PublicKeyPem,\n\t\t\t\t\t}, nil).ApplyT(func(invoke std.Base64encodeResult) (*string, error) {\n\t\t\t\t\t\treturn invoke.Result, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\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.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.tls.PrivateKey;\nimport com.pulumi.tls.PrivateKeyArgs;\nimport com.pulumi.gcp.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigSubjectAltNameArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigNameConstraintsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigPublicKeyArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"default\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-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 certKey = new PrivateKey(\"certKey\", PrivateKeyArgs.builder()\n .algorithm(\"RSA\")\n .build());\n\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthority(defaultAuthority.certificateAuthorityId())\n .lifetime(\"86000s\")\n .name(\"cert-1\")\n .config(CertificateConfigArgs.builder()\n .subjectConfig(CertificateConfigSubjectConfigArgs.builder()\n .subject(CertificateConfigSubjectConfigSubjectArgs.builder()\n .commonName(\"san1.example.com\")\n .countryCode(\"us\")\n .organization(\"google\")\n .organizationalUnit(\"enterprise\")\n .locality(\"mountain view\")\n .province(\"california\")\n .streetAddress(\"1600 amphitheatre parkway\")\n .build())\n .subjectAltName(CertificateConfigSubjectConfigSubjectAltNameArgs.builder()\n .emailAddresses(\"email@example.com\")\n .ipAddresses(\"127.0.0.1\")\n .uris(\"http://www.ietf.org/rfc/rfc3986.txt\")\n .build())\n .build())\n .x509Config(CertificateConfigX509ConfigArgs.builder()\n .caOptions(CertificateConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(CertificateConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(false)\n .build())\n .build())\n .nameConstraints(CertificateConfigX509ConfigNameConstraintsArgs.builder()\n .critical(true)\n .permittedDnsNames(\"*.example.com\")\n .excludedDnsNames(\"*.deny.example.com\")\n .permittedIpRanges(\"10.0.0.0/8\")\n .excludedIpRanges(\"10.1.1.0/24\")\n .permittedEmailAddresses(\".example.com\")\n .excludedEmailAddresses(\".deny.example.com\")\n .permittedUris(\".example.com\")\n .excludedUris(\".deny.example.com\")\n .build())\n .build())\n .publicKey(CertificateConfigPublicKeyArgs.builder()\n .format(\"PEM\")\n .key(StdFunctions.base64encode().applyValue(invoke -\u003e invoke.result()))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: default\n tier: ENTERPRISE\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-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 deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n certKey:\n type: tls:PrivateKey\n name: cert_key\n properties:\n algorithm: RSA\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthority: ${defaultAuthority.certificateAuthorityId}\n lifetime: 86000s\n name: cert-1\n config:\n subjectConfig:\n subject:\n commonName: san1.example.com\n countryCode: us\n organization: google\n organizationalUnit: enterprise\n locality: mountain view\n province: california\n streetAddress: 1600 amphitheatre parkway\n subjectAltName:\n emailAddresses:\n - email@example.com\n ipAddresses:\n - 127.0.0.1\n uris:\n - http://www.ietf.org/rfc/rfc3986.txt\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n nameConstraints:\n critical: true\n permittedDnsNames:\n - '*.example.com'\n excludedDnsNames:\n - '*.deny.example.com'\n permittedIpRanges:\n - 10.0.0.0/8\n excludedIpRanges:\n - 10.1.1.0/24\n permittedEmailAddresses:\n - .example.com\n excludedEmailAddresses:\n - .deny.example.com\n permittedUris:\n - .example.com\n excludedUris:\n - .deny.example.com\n publicKey:\n format: PEM\n key:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: ${certKey.publicKeyPem}\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate With Template\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"my-pool\",\n tier: \"ENTERPRISE\",\n});\nconst defaultCertificateTemplate = new gcp.certificateauthority.CertificateTemplate(\"default\", {\n location: \"us-central1\",\n name: \"my-certificate-template\",\n description: \"An updated sample certificate template\",\n identityConstraints: {\n allowSubjectAltNamesPassthrough: true,\n allowSubjectPassthrough: true,\n celExpression: {\n description: \"Always true\",\n expression: \"true\",\n location: \"any.file.anywhere\",\n title: \"Sample expression\",\n },\n },\n passthroughExtensions: {\n additionalExtensions: [{\n objectIdPaths: [\n 1,\n 6,\n ],\n }],\n knownExtensions: [\"EXTENDED_KEY_USAGE\"],\n },\n predefinedValues: {\n additionalExtensions: [{\n objectId: {\n objectIdPaths: [\n 1,\n 6,\n ],\n },\n value: \"c3RyaW5nCg==\",\n critical: true,\n }],\n aiaOcspServers: [\"string\"],\n caOptions: {\n isCa: false,\n maxIssuerPathLength: 6,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: false,\n contentCommitment: true,\n crlSign: false,\n dataEncipherment: true,\n decipherOnly: true,\n digitalSignature: true,\n encipherOnly: true,\n keyAgreement: true,\n keyEncipherment: true,\n },\n extendedKeyUsage: {\n clientAuth: true,\n codeSigning: true,\n emailProtection: true,\n ocspSigning: true,\n serverAuth: true,\n timeStamping: true,\n },\n unknownExtendedKeyUsages: [{\n objectIdPaths: [\n 1,\n 6,\n ],\n }],\n },\n policyIds: [{\n objectIdPaths: [\n 1,\n 6,\n ],\n }],\n },\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-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: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthority: defaultAuthority.certificateAuthorityId,\n name: \"my-certificate\",\n lifetime: \"860s\",\n pemCsr: std.file({\n input: \"test-fixtures/rsa_csr.pem\",\n }).then(invoke =\u003e invoke.result),\n certificateTemplate: defaultCertificateTemplate.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"my-pool\",\n tier=\"ENTERPRISE\")\ndefault_certificate_template = gcp.certificateauthority.CertificateTemplate(\"default\",\n location=\"us-central1\",\n name=\"my-certificate-template\",\n description=\"An updated sample certificate template\",\n identity_constraints={\n \"allowSubjectAltNamesPassthrough\": True,\n \"allowSubjectPassthrough\": True,\n \"celExpression\": {\n \"description\": \"Always true\",\n \"expression\": \"true\",\n \"location\": \"any.file.anywhere\",\n \"title\": \"Sample expression\",\n },\n },\n passthrough_extensions={\n \"additionalExtensions\": [{\n \"objectIdPaths\": [\n 1,\n 6,\n ],\n }],\n \"knownExtensions\": [\"EXTENDED_KEY_USAGE\"],\n },\n predefined_values={\n \"additionalExtensions\": [{\n \"objectId\": {\n \"objectIdPaths\": [\n 1,\n 6,\n ],\n },\n \"value\": \"c3RyaW5nCg==\",\n \"critical\": True,\n }],\n \"aiaOcspServers\": [\"string\"],\n \"caOptions\": {\n \"isCa\": False,\n \"maxIssuerPathLength\": 6,\n },\n \"keyUsage\": {\n \"baseKeyUsage\": {\n \"certSign\": False,\n \"contentCommitment\": True,\n \"crlSign\": False,\n \"dataEncipherment\": True,\n \"decipherOnly\": True,\n \"digitalSignature\": True,\n \"encipherOnly\": True,\n \"keyAgreement\": True,\n \"keyEncipherment\": True,\n },\n \"extendedKeyUsage\": {\n \"clientAuth\": True,\n \"codeSigning\": True,\n \"emailProtection\": True,\n \"ocspSigning\": True,\n \"serverAuth\": True,\n \"timeStamping\": True,\n },\n \"unknownExtendedKeyUsages\": [{\n \"objectIdPaths\": [\n 1,\n 6,\n ],\n }],\n },\n \"policyIds\": [{\n \"objectIdPaths\": [\n 1,\n 6,\n ],\n }],\n })\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-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\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority=default_authority.certificate_authority_id,\n name=\"my-certificate\",\n lifetime=\"860s\",\n pem_csr=std.file(input=\"test-fixtures/rsa_csr.pem\").result,\n certificate_template=default_certificate_template.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-pool\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultCertificateTemplate = new Gcp.CertificateAuthority.CertificateTemplate(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-certificate-template\",\n Description = \"An updated sample certificate template\",\n IdentityConstraints = new Gcp.CertificateAuthority.Inputs.CertificateTemplateIdentityConstraintsArgs\n {\n AllowSubjectAltNamesPassthrough = true,\n AllowSubjectPassthrough = true,\n CelExpression = new Gcp.CertificateAuthority.Inputs.CertificateTemplateIdentityConstraintsCelExpressionArgs\n {\n Description = \"Always true\",\n Expression = \"true\",\n Location = \"any.file.anywhere\",\n Title = \"Sample expression\",\n },\n },\n PassthroughExtensions = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePassthroughExtensionsArgs\n {\n AdditionalExtensions = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePassthroughExtensionsAdditionalExtensionArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n },\n KnownExtensions = new[]\n {\n \"EXTENDED_KEY_USAGE\",\n },\n },\n PredefinedValues = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesArgs\n {\n AdditionalExtensions = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesAdditionalExtensionArgs\n {\n ObjectId = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesAdditionalExtensionObjectIdArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n Value = \"c3RyaW5nCg==\",\n Critical = true,\n },\n },\n AiaOcspServers = new[]\n {\n \"string\",\n },\n CaOptions = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesCaOptionsArgs\n {\n IsCa = false,\n MaxIssuerPathLength = 6,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs\n {\n CertSign = false,\n ContentCommitment = true,\n CrlSign = false,\n DataEncipherment = true,\n DecipherOnly = true,\n DigitalSignature = true,\n EncipherOnly = true,\n KeyAgreement = true,\n KeyEncipherment = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs\n {\n ClientAuth = true,\n CodeSigning = true,\n EmailProtection = true,\n OcspSigning = true,\n ServerAuth = true,\n TimeStamping = true,\n },\n UnknownExtendedKeyUsages = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n },\n },\n PolicyIds = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesPolicyIdArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n },\n },\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-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 = false,\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 defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthority = defaultAuthority.CertificateAuthorityId,\n Name = \"my-certificate\",\n Lifetime = \"860s\",\n PemCsr = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/rsa_csr.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n CertificateTemplate = defaultCertificateTemplate.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-pool\"),\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\tdefaultCertificateTemplate, err := certificateauthority.NewCertificateTemplate(ctx, \"default\", \u0026certificateauthority.CertificateTemplateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-certificate-template\"),\n\t\t\tDescription: pulumi.String(\"An updated sample certificate template\"),\n\t\t\tIdentityConstraints: \u0026certificateauthority.CertificateTemplateIdentityConstraintsArgs{\n\t\t\t\tAllowSubjectAltNamesPassthrough: pulumi.Bool(true),\n\t\t\t\tAllowSubjectPassthrough: pulumi.Bool(true),\n\t\t\t\tCelExpression: \u0026certificateauthority.CertificateTemplateIdentityConstraintsCelExpressionArgs{\n\t\t\t\t\tDescription: pulumi.String(\"Always true\"),\n\t\t\t\t\tExpression: pulumi.String(\"true\"),\n\t\t\t\t\tLocation: pulumi.String(\"any.file.anywhere\"),\n\t\t\t\t\tTitle: pulumi.String(\"Sample expression\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPassthroughExtensions: \u0026certificateauthority.CertificateTemplatePassthroughExtensionsArgs{\n\t\t\t\tAdditionalExtensions: certificateauthority.CertificateTemplatePassthroughExtensionsAdditionalExtensionArray{\n\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePassthroughExtensionsAdditionalExtensionArgs{\n\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\tpulumi.Int(6),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tKnownExtensions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"EXTENDED_KEY_USAGE\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPredefinedValues: \u0026certificateauthority.CertificateTemplatePredefinedValuesArgs{\n\t\t\t\tAdditionalExtensions: certificateauthority.CertificateTemplatePredefinedValuesAdditionalExtensionArray{\n\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePredefinedValuesAdditionalExtensionArgs{\n\t\t\t\t\t\tObjectId: \u0026certificateauthority.CertificateTemplatePredefinedValuesAdditionalExtensionObjectIdArgs{\n\t\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\t\tpulumi.Int(6),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tValue: pulumi.String(\"c3RyaW5nCg==\"),\n\t\t\t\t\t\tCritical: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAiaOcspServers: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"string\"),\n\t\t\t\t},\n\t\t\t\tCaOptions: \u0026certificateauthority.CertificateTemplatePredefinedValuesCaOptionsArgs{\n\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\tMaxIssuerPathLength: pulumi.Int(6),\n\t\t\t\t},\n\t\t\t\tKeyUsage: \u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageArgs{\n\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\tCertSign: pulumi.Bool(false),\n\t\t\t\t\t\tContentCommitment: pulumi.Bool(true),\n\t\t\t\t\t\tCrlSign: pulumi.Bool(false),\n\t\t\t\t\t\tDataEncipherment: pulumi.Bool(true),\n\t\t\t\t\t\tDecipherOnly: pulumi.Bool(true),\n\t\t\t\t\t\tDigitalSignature: pulumi.Bool(true),\n\t\t\t\t\t\tEncipherOnly: pulumi.Bool(true),\n\t\t\t\t\t\tKeyAgreement: pulumi.Bool(true),\n\t\t\t\t\t\tKeyEncipherment: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\tClientAuth: pulumi.Bool(true),\n\t\t\t\t\t\tCodeSigning: pulumi.Bool(true),\n\t\t\t\t\t\tEmailProtection: pulumi.Bool(true),\n\t\t\t\t\t\tOcspSigning: pulumi.Bool(true),\n\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\tTimeStamping: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tUnknownExtendedKeyUsages: certificateauthority.CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArray{\n\t\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\t\tpulumi.Int(6),\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\tPolicyIds: certificateauthority.CertificateTemplatePredefinedValuesPolicyIdArray{\n\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePredefinedValuesPolicyIdArgs{\n\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\tpulumi.Int(6),\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\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-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(false),\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\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/rsa_csr.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthority: defaultAuthority.CertificateAuthorityId,\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLifetime: pulumi.String(\"860s\"),\n\t\t\tPemCsr: invokeFile.Result,\n\t\t\tCertificateTemplate: defaultCertificateTemplate.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.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.CertificateTemplate;\nimport com.pulumi.gcp.certificateauthority.CertificateTemplateArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplateIdentityConstraintsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplateIdentityConstraintsCelExpressionArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePassthroughExtensionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs;\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.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"my-pool\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultCertificateTemplate = new CertificateTemplate(\"defaultCertificateTemplate\", CertificateTemplateArgs.builder()\n .location(\"us-central1\")\n .name(\"my-certificate-template\")\n .description(\"An updated sample certificate template\")\n .identityConstraints(CertificateTemplateIdentityConstraintsArgs.builder()\n .allowSubjectAltNamesPassthrough(true)\n .allowSubjectPassthrough(true)\n .celExpression(CertificateTemplateIdentityConstraintsCelExpressionArgs.builder()\n .description(\"Always true\")\n .expression(\"true\")\n .location(\"any.file.anywhere\")\n .title(\"Sample expression\")\n .build())\n .build())\n .passthroughExtensions(CertificateTemplatePassthroughExtensionsArgs.builder()\n .additionalExtensions(CertificateTemplatePassthroughExtensionsAdditionalExtensionArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .knownExtensions(\"EXTENDED_KEY_USAGE\")\n .build())\n .predefinedValues(CertificateTemplatePredefinedValuesArgs.builder()\n .additionalExtensions(CertificateTemplatePredefinedValuesAdditionalExtensionArgs.builder()\n .objectId(CertificateTemplatePredefinedValuesAdditionalExtensionObjectIdArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .value(\"c3RyaW5nCg==\")\n .critical(true)\n .build())\n .aiaOcspServers(\"string\")\n .caOptions(CertificateTemplatePredefinedValuesCaOptionsArgs.builder()\n .isCa(false)\n .maxIssuerPathLength(6)\n .build())\n .keyUsage(CertificateTemplatePredefinedValuesKeyUsageArgs.builder()\n .baseKeyUsage(CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs.builder()\n .certSign(false)\n .contentCommitment(true)\n .crlSign(false)\n .dataEncipherment(true)\n .decipherOnly(true)\n .digitalSignature(true)\n .encipherOnly(true)\n .keyAgreement(true)\n .keyEncipherment(true)\n .build())\n .extendedKeyUsage(CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs.builder()\n .clientAuth(true)\n .codeSigning(true)\n .emailProtection(true)\n .ocspSigning(true)\n .serverAuth(true)\n .timeStamping(true)\n .build())\n .unknownExtendedKeyUsages(CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .build())\n .policyIds(CertificateTemplatePredefinedValuesPolicyIdArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .build())\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-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(false)\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 defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthority(defaultAuthority.certificateAuthorityId())\n .name(\"my-certificate\")\n .lifetime(\"860s\")\n .pemCsr(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/rsa_csr.pem\")\n .build()).result())\n .certificateTemplate(defaultCertificateTemplate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: my-pool\n tier: ENTERPRISE\n defaultCertificateTemplate:\n type: gcp:certificateauthority:CertificateTemplate\n name: default\n properties:\n location: us-central1\n name: my-certificate-template\n description: An updated sample certificate template\n identityConstraints:\n allowSubjectAltNamesPassthrough: true\n allowSubjectPassthrough: true\n celExpression:\n description: Always true\n expression: 'true'\n location: any.file.anywhere\n title: Sample expression\n passthroughExtensions:\n additionalExtensions:\n - objectIdPaths:\n - 1\n - 6\n knownExtensions:\n - EXTENDED_KEY_USAGE\n predefinedValues:\n additionalExtensions:\n - objectId:\n objectIdPaths:\n - 1\n - 6\n value: c3RyaW5nCg==\n critical: true\n aiaOcspServers:\n - string\n caOptions:\n isCa: false\n maxIssuerPathLength: 6\n keyUsage:\n baseKeyUsage:\n certSign: false\n contentCommitment: true\n crlSign: false\n dataEncipherment: true\n decipherOnly: true\n digitalSignature: true\n encipherOnly: true\n keyAgreement: true\n keyEncipherment: true\n extendedKeyUsage:\n clientAuth: true\n codeSigning: true\n emailProtection: true\n ocspSigning: true\n serverAuth: true\n timeStamping: true\n unknownExtendedKeyUsages:\n - objectIdPaths:\n - 1\n - 6\n policyIds:\n - objectIdPaths:\n - 1\n - 6\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-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: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthority: ${defaultAuthority.certificateAuthorityId}\n name: my-certificate\n lifetime: 860s\n pemCsr:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/rsa_csr.pem\n Return: result\n certificateTemplate: ${defaultCertificateTemplate.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Csr\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"my-pool\",\n tier: \"ENTERPRISE\",\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-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: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthority: defaultAuthority.certificateAuthorityId,\n name: \"my-certificate\",\n lifetime: \"860s\",\n pemCsr: std.file({\n input: \"test-fixtures/rsa_csr.pem\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"my-pool\",\n tier=\"ENTERPRISE\")\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-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\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority=default_authority.certificate_authority_id,\n name=\"my-certificate\",\n lifetime=\"860s\",\n pem_csr=std.file(input=\"test-fixtures/rsa_csr.pem\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-pool\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-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 = false,\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 defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthority = defaultAuthority.CertificateAuthorityId,\n Name = \"my-certificate\",\n Lifetime = \"860s\",\n PemCsr = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/rsa_csr.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-pool\"),\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\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-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(false),\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\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/rsa_csr.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthority: defaultAuthority.CertificateAuthorityId,\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLifetime: pulumi.String(\"860s\"),\n\t\t\tPemCsr: invokeFile.Result,\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.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"my-pool\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-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(false)\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 defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthority(defaultAuthority.certificateAuthorityId())\n .name(\"my-certificate\")\n .lifetime(\"860s\")\n .pemCsr(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/rsa_csr.pem\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: my-pool\n tier: ENTERPRISE\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-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: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthority: ${defaultAuthority.certificateAuthorityId}\n name: my-certificate\n lifetime: 860s\n pemCsr:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/rsa_csr.pem\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate No Authority\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"my-pool\",\n tier: \"ENTERPRISE\",\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-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 digitalSignature: true,\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n lifetime: \"86400s\",\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n name: \"my-certificate\",\n lifetime: \"860s\",\n config: {\n subjectConfig: {\n subject: {\n commonName: \"san1.example.com\",\n countryCode: \"us\",\n organization: \"google\",\n organizationalUnit: \"enterprise\",\n locality: \"mountain view\",\n province: \"california\",\n streetAddress: \"1600 amphitheatre parkway\",\n postalCode: \"94109\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n publicKey: {\n format: \"PEM\",\n key: std.filebase64({\n input: \"test-fixtures/rsa_public.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n },\n}, {\n dependsOn: [defaultAuthority],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"my-pool\",\n tier=\"ENTERPRISE\")\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-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 \"digitalSignature\": True,\n \"certSign\": True,\n \"crlSign\": True,\n },\n \"extendedKeyUsage\": {\n \"serverAuth\": True,\n },\n },\n },\n },\n lifetime=\"86400s\",\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n name=\"my-certificate\",\n lifetime=\"860s\",\n config={\n \"subjectConfig\": {\n \"subject\": {\n \"commonName\": \"san1.example.com\",\n \"countryCode\": \"us\",\n \"organization\": \"google\",\n \"organizationalUnit\": \"enterprise\",\n \"locality\": \"mountain view\",\n \"province\": \"california\",\n \"streetAddress\": \"1600 amphitheatre parkway\",\n \"postalCode\": \"94109\",\n },\n },\n \"x509Config\": {\n \"caOptions\": {\n \"isCa\": False,\n },\n \"keyUsage\": {\n \"baseKeyUsage\": {\n \"crlSign\": True,\n },\n \"extendedKeyUsage\": {\n \"serverAuth\": True,\n },\n },\n },\n \"publicKey\": {\n \"format\": \"PEM\",\n \"key\": std.filebase64(input=\"test-fixtures/rsa_public.pem\").result,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[default_authority]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-pool\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-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 DigitalSignature = true,\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n Lifetime = \"86400s\",\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 defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n Name = \"my-certificate\",\n Lifetime = \"860s\",\n Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigSubjectArgs\n {\n CommonName = \"san1.example.com\",\n CountryCode = \"us\",\n Organization = \"google\",\n OrganizationalUnit = \"enterprise\",\n Locality = \"mountain view\",\n Province = \"california\",\n StreetAddress = \"1600 amphitheatre parkway\",\n PostalCode = \"94109\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n PublicKey = new Gcp.CertificateAuthority.Inputs.CertificateConfigPublicKeyArgs\n {\n Format = \"PEM\",\n Key = Std.Filebase64.Invoke(new()\n {\n Input = \"test-fixtures/rsa_public.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultAuthority,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-pool\"),\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\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-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\tDigitalSignature: pulumi.Bool(true),\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\tLifetime: pulumi.String(\"86400s\"),\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\tinvokeFilebase64, err := std.Filebase64(ctx, \u0026std.Filebase64Args{\n\t\t\tInput: \"test-fixtures/rsa_public.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLifetime: pulumi.String(\"860s\"),\n\t\t\tConfig: \u0026certificateauthority.CertificateConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.CertificateConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.CertificateConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tCommonName: pulumi.String(\"san1.example.com\"),\n\t\t\t\t\t\tCountryCode: pulumi.String(\"us\"),\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tOrganizationalUnit: pulumi.String(\"enterprise\"),\n\t\t\t\t\t\tLocality: pulumi.String(\"mountain view\"),\n\t\t\t\t\t\tProvince: pulumi.String(\"california\"),\n\t\t\t\t\t\tStreetAddress: pulumi.String(\"1600 amphitheatre parkway\"),\n\t\t\t\t\t\tPostalCode: pulumi.String(\"94109\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.CertificateConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CertificateConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs{\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.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\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\tPublicKey: \u0026certificateauthority.CertificateConfigPublicKeyArgs{\n\t\t\t\t\tFormat: pulumi.String(\"PEM\"),\n\t\t\t\t\tKey: invokeFilebase64.Result,\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultAuthority,\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.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigPublicKeyArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"my-pool\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-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 .digitalSignature(true)\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .lifetime(\"86400s\")\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 defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .name(\"my-certificate\")\n .lifetime(\"860s\")\n .config(CertificateConfigArgs.builder()\n .subjectConfig(CertificateConfigSubjectConfigArgs.builder()\n .subject(CertificateConfigSubjectConfigSubjectArgs.builder()\n .commonName(\"san1.example.com\")\n .countryCode(\"us\")\n .organization(\"google\")\n .organizationalUnit(\"enterprise\")\n .locality(\"mountain view\")\n .province(\"california\")\n .streetAddress(\"1600 amphitheatre parkway\")\n .postalCode(\"94109\")\n .build())\n .build())\n .x509Config(CertificateConfigX509ConfigArgs.builder()\n .caOptions(CertificateConfigX509ConfigCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CertificateConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .crlSign(true)\n .build())\n .extendedKeyUsage(CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .publicKey(CertificateConfigPublicKeyArgs.builder()\n .format(\"PEM\")\n .key(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"test-fixtures/rsa_public.pem\")\n .build()).result())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultAuthority)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: my-pool\n tier: ENTERPRISE\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-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 digitalSignature: true\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n lifetime: 86400s\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n name: my-certificate\n lifetime: 860s\n config:\n subjectConfig:\n subject:\n commonName: san1.example.com\n countryCode: us\n organization: google\n organizationalUnit: enterprise\n locality: mountain view\n province: california\n streetAddress: 1600 amphitheatre parkway\n postalCode: '94109'\n x509Config:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage:\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n publicKey:\n format: PEM\n key:\n fn::invoke:\n Function: std:filebase64\n Arguments:\n input: test-fixtures/rsa_public.pem\n Return: result\n options:\n dependson:\n - ${defaultAuthority}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Custom Ski\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"my-pool\",\n tier: \"ENTERPRISE\",\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-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 digitalSignature: true,\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n lifetime: \"86400s\",\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n name: \"my-certificate\",\n lifetime: \"860s\",\n config: {\n subjectConfig: {\n subject: {\n commonName: \"san1.example.com\",\n countryCode: \"us\",\n organization: \"google\",\n organizationalUnit: \"enterprise\",\n locality: \"mountain view\",\n province: \"california\",\n streetAddress: \"1600 amphitheatre parkway\",\n postalCode: \"94109\",\n },\n },\n subjectKeyId: {\n keyId: \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n x509Config: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n publicKey: {\n format: \"PEM\",\n key: std.filebase64({\n input: \"test-fixtures/rsa_public.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n },\n}, {\n dependsOn: [defaultAuthority],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"my-pool\",\n tier=\"ENTERPRISE\")\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-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 \"digitalSignature\": True,\n \"certSign\": True,\n \"crlSign\": True,\n },\n \"extendedKeyUsage\": {\n \"serverAuth\": True,\n },\n },\n },\n },\n lifetime=\"86400s\",\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n name=\"my-certificate\",\n lifetime=\"860s\",\n config={\n \"subjectConfig\": {\n \"subject\": {\n \"commonName\": \"san1.example.com\",\n \"countryCode\": \"us\",\n \"organization\": \"google\",\n \"organizationalUnit\": \"enterprise\",\n \"locality\": \"mountain view\",\n \"province\": \"california\",\n \"streetAddress\": \"1600 amphitheatre parkway\",\n \"postalCode\": \"94109\",\n },\n },\n \"subjectKeyId\": {\n \"keyId\": \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n \"x509Config\": {\n \"caOptions\": {\n \"isCa\": False,\n },\n \"keyUsage\": {\n \"baseKeyUsage\": {\n \"crlSign\": True,\n },\n \"extendedKeyUsage\": {\n \"serverAuth\": True,\n },\n },\n },\n \"publicKey\": {\n \"format\": \"PEM\",\n \"key\": std.filebase64(input=\"test-fixtures/rsa_public.pem\").result,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[default_authority]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-pool\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-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 DigitalSignature = true,\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n Lifetime = \"86400s\",\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 defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n Name = \"my-certificate\",\n Lifetime = \"860s\",\n Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigSubjectArgs\n {\n CommonName = \"san1.example.com\",\n CountryCode = \"us\",\n Organization = \"google\",\n OrganizationalUnit = \"enterprise\",\n Locality = \"mountain view\",\n Province = \"california\",\n StreetAddress = \"1600 amphitheatre parkway\",\n PostalCode = \"94109\",\n },\n },\n SubjectKeyId = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectKeyIdArgs\n {\n KeyId = \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n PublicKey = new Gcp.CertificateAuthority.Inputs.CertificateConfigPublicKeyArgs\n {\n Format = \"PEM\",\n Key = Std.Filebase64.Invoke(new()\n {\n Input = \"test-fixtures/rsa_public.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultAuthority,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-pool\"),\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\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-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\tDigitalSignature: pulumi.Bool(true),\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\tLifetime: pulumi.String(\"86400s\"),\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\tinvokeFilebase64, err := std.Filebase64(ctx, \u0026std.Filebase64Args{\n\t\t\tInput: \"test-fixtures/rsa_public.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLifetime: pulumi.String(\"860s\"),\n\t\t\tConfig: \u0026certificateauthority.CertificateConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.CertificateConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.CertificateConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tCommonName: pulumi.String(\"san1.example.com\"),\n\t\t\t\t\t\tCountryCode: pulumi.String(\"us\"),\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tOrganizationalUnit: pulumi.String(\"enterprise\"),\n\t\t\t\t\t\tLocality: pulumi.String(\"mountain view\"),\n\t\t\t\t\t\tProvince: pulumi.String(\"california\"),\n\t\t\t\t\t\tStreetAddress: pulumi.String(\"1600 amphitheatre parkway\"),\n\t\t\t\t\t\tPostalCode: pulumi.String(\"94109\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSubjectKeyId: \u0026certificateauthority.CertificateConfigSubjectKeyIdArgs{\n\t\t\t\t\tKeyId: pulumi.String(\"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\"),\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.CertificateConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CertificateConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs{\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.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\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\tPublicKey: \u0026certificateauthority.CertificateConfigPublicKeyArgs{\n\t\t\t\t\tFormat: pulumi.String(\"PEM\"),\n\t\t\t\t\tKey: invokeFilebase64.Result,\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultAuthority,\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.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectKeyIdArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigPublicKeyArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"my-pool\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-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 .digitalSignature(true)\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .lifetime(\"86400s\")\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 defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .name(\"my-certificate\")\n .lifetime(\"860s\")\n .config(CertificateConfigArgs.builder()\n .subjectConfig(CertificateConfigSubjectConfigArgs.builder()\n .subject(CertificateConfigSubjectConfigSubjectArgs.builder()\n .commonName(\"san1.example.com\")\n .countryCode(\"us\")\n .organization(\"google\")\n .organizationalUnit(\"enterprise\")\n .locality(\"mountain view\")\n .province(\"california\")\n .streetAddress(\"1600 amphitheatre parkway\")\n .postalCode(\"94109\")\n .build())\n .build())\n .subjectKeyId(CertificateConfigSubjectKeyIdArgs.builder()\n .keyId(\"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\")\n .build())\n .x509Config(CertificateConfigX509ConfigArgs.builder()\n .caOptions(CertificateConfigX509ConfigCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CertificateConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .crlSign(true)\n .build())\n .extendedKeyUsage(CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .publicKey(CertificateConfigPublicKeyArgs.builder()\n .format(\"PEM\")\n .key(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"test-fixtures/rsa_public.pem\")\n .build()).result())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultAuthority)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: my-pool\n tier: ENTERPRISE\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-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 digitalSignature: true\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n lifetime: 86400s\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n name: my-certificate\n lifetime: 860s\n config:\n subjectConfig:\n subject:\n commonName: san1.example.com\n countryCode: us\n organization: google\n organizationalUnit: enterprise\n locality: mountain view\n province: california\n streetAddress: 1600 amphitheatre parkway\n postalCode: '94109'\n subjectKeyId:\n keyId: 4cf3372289b1d411b999dbb9ebcd44744b6b2fca\n x509Config:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage:\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n publicKey:\n format: PEM\n key:\n fn::invoke:\n Function: std:filebase64\n Arguments:\n input: test-fixtures/rsa_public.pem\n Return: result\n options:\n dependson:\n - ${defaultAuthority}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCertificate can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/caPools/{{pool}}/certificates/{{name}}`\n\n* `{{project}}/{{location}}/{{pool}}/{{name}}`\n\n* `{{location}}/{{pool}}/{{name}}`\n\nWhen using the `pulumi import` command, Certificate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificateauthority/certificate:Certificate default projects/{{project}}/locations/{{location}}/caPools/{{pool}}/certificates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/certificate:Certificate default {{project}}/{{location}}/{{pool}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/certificate:Certificate default {{location}}/{{pool}}/{{name}}\n```\n\n", + "description": "A Certificate corresponds to a signed X.509 certificate issued by a Certificate.\n\n\n\u003e **Note:** The Certificate Authority that is referenced by this resource **must** be\n`tier = \"ENTERPRISE\"`\n\n\n\n## Example Usage\n\n### Privateca Certificate Generated Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\nimport * as tls from \"@pulumi/tls\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"default\",\n tier: \"ENTERPRISE\",\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-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 certKey = new tls.PrivateKey(\"cert_key\", {algorithm: \"RSA\"});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthority: defaultAuthority.certificateAuthorityId,\n lifetime: \"86000s\",\n name: \"cert-1\",\n config: {\n subjectConfig: {\n subject: {\n commonName: \"san1.example.com\",\n countryCode: \"us\",\n organization: \"google\",\n organizationalUnit: \"enterprise\",\n locality: \"mountain view\",\n province: \"california\",\n streetAddress: \"1600 amphitheatre parkway\",\n },\n subjectAltName: {\n emailAddresses: [\"email@example.com\"],\n ipAddresses: [\"127.0.0.1\"],\n uris: [\"http://www.ietf.org/rfc/rfc3986.txt\"],\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: false,\n },\n },\n nameConstraints: {\n critical: true,\n permittedDnsNames: [\"*.example.com\"],\n excludedDnsNames: [\"*.deny.example.com\"],\n permittedIpRanges: [\"10.0.0.0/8\"],\n excludedIpRanges: [\"10.1.1.0/24\"],\n permittedEmailAddresses: [\".example.com\"],\n excludedEmailAddresses: [\".deny.example.com\"],\n permittedUris: [\".example.com\"],\n excludedUris: [\".deny.example.com\"],\n },\n },\n publicKey: {\n format: \"PEM\",\n key: std.base64encodeOutput({\n input: certKey.publicKeyPem,\n }).apply(invoke =\u003e invoke.result),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\nimport pulumi_tls as tls\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"default\",\n tier=\"ENTERPRISE\")\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-authority\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ncert_key = tls.PrivateKey(\"cert_key\", algorithm=\"RSA\")\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority=default_authority.certificate_authority_id,\n lifetime=\"86000s\",\n name=\"cert-1\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"common_name\": \"san1.example.com\",\n \"country_code\": \"us\",\n \"organization\": \"google\",\n \"organizational_unit\": \"enterprise\",\n \"locality\": \"mountain view\",\n \"province\": \"california\",\n \"street_address\": \"1600 amphitheatre parkway\",\n },\n \"subject_alt_name\": {\n \"email_addresses\": [\"email@example.com\"],\n \"ip_addresses\": [\"127.0.0.1\"],\n \"uris\": [\"http://www.ietf.org/rfc/rfc3986.txt\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n \"name_constraints\": {\n \"critical\": True,\n \"permitted_dns_names\": [\"*.example.com\"],\n \"excluded_dns_names\": [\"*.deny.example.com\"],\n \"permitted_ip_ranges\": [\"10.0.0.0/8\"],\n \"excluded_ip_ranges\": [\"10.1.1.0/24\"],\n \"permitted_email_addresses\": [\".example.com\"],\n \"excluded_email_addresses\": [\".deny.example.com\"],\n \"permitted_uris\": [\".example.com\"],\n \"excluded_uris\": [\".deny.example.com\"],\n },\n },\n \"public_key\": {\n \"format\": \"PEM\",\n \"key\": std.base64encode_output(input=cert_key.public_key_pem).apply(lambda invoke: invoke.result),\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\nusing Tls = Pulumi.Tls;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"default\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-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 certKey = new Tls.PrivateKey(\"cert_key\", new()\n {\n Algorithm = \"RSA\",\n });\n\n var defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthority = defaultAuthority.CertificateAuthorityId,\n Lifetime = \"86000s\",\n Name = \"cert-1\",\n Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigSubjectArgs\n {\n CommonName = \"san1.example.com\",\n CountryCode = \"us\",\n Organization = \"google\",\n OrganizationalUnit = \"enterprise\",\n Locality = \"mountain view\",\n Province = \"california\",\n StreetAddress = \"1600 amphitheatre parkway\",\n },\n SubjectAltName = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigSubjectAltNameArgs\n {\n EmailAddresses = new[]\n {\n \"email@example.com\",\n },\n IpAddresses = new[]\n {\n \"127.0.0.1\",\n },\n Uris = new[]\n {\n \"http://www.ietf.org/rfc/rfc3986.txt\",\n },\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = false,\n },\n },\n NameConstraints = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigNameConstraintsArgs\n {\n Critical = true,\n PermittedDnsNames = new[]\n {\n \"*.example.com\",\n },\n ExcludedDnsNames = new[]\n {\n \"*.deny.example.com\",\n },\n PermittedIpRanges = new[]\n {\n \"10.0.0.0/8\",\n },\n ExcludedIpRanges = new[]\n {\n \"10.1.1.0/24\",\n },\n PermittedEmailAddresses = new[]\n {\n \".example.com\",\n },\n ExcludedEmailAddresses = new[]\n {\n \".deny.example.com\",\n },\n PermittedUris = new[]\n {\n \".example.com\",\n },\n ExcludedUris = new[]\n {\n \".deny.example.com\",\n },\n },\n },\n PublicKey = new Gcp.CertificateAuthority.Inputs.CertificateConfigPublicKeyArgs\n {\n Format = \"PEM\",\n Key = Std.Base64encode.Invoke(new()\n {\n Input = certKey.PublicKeyPem,\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi-tls/sdk/v5/go/tls\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"default\"),\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\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-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\tcertKey, err := tls.NewPrivateKey(ctx, \"cert_key\", \u0026tls.PrivateKeyArgs{\n\t\t\tAlgorithm: pulumi.String(\"RSA\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthority: defaultAuthority.CertificateAuthorityId,\n\t\t\tLifetime: pulumi.String(\"86000s\"),\n\t\t\tName: pulumi.String(\"cert-1\"),\n\t\t\tConfig: \u0026certificateauthority.CertificateConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.CertificateConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.CertificateConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tCommonName: pulumi.String(\"san1.example.com\"),\n\t\t\t\t\t\tCountryCode: pulumi.String(\"us\"),\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tOrganizationalUnit: pulumi.String(\"enterprise\"),\n\t\t\t\t\t\tLocality: pulumi.String(\"mountain view\"),\n\t\t\t\t\t\tProvince: pulumi.String(\"california\"),\n\t\t\t\t\t\tStreetAddress: pulumi.String(\"1600 amphitheatre parkway\"),\n\t\t\t\t\t},\n\t\t\t\t\tSubjectAltName: \u0026certificateauthority.CertificateConfigSubjectConfigSubjectAltNameArgs{\n\t\t\t\t\t\tEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"email@example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tIpAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"127.0.0.1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"http://www.ietf.org/rfc/rfc3986.txt\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.CertificateConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CertificateConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs{\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.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tNameConstraints: \u0026certificateauthority.CertificateConfigX509ConfigNameConstraintsArgs{\n\t\t\t\t\t\tCritical: pulumi.Bool(true),\n\t\t\t\t\t\tPermittedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.1.1.0/24\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPublicKey: \u0026certificateauthority.CertificateConfigPublicKeyArgs{\n\t\t\t\t\tFormat: pulumi.String(\"PEM\"),\n\t\t\t\t\tKey: std.Base64encodeOutput(ctx, std.Base64encodeOutputArgs{\n\t\t\t\t\t\tInput: certKey.PublicKeyPem,\n\t\t\t\t\t}, nil).ApplyT(func(invoke std.Base64encodeResult) (*string, error) {\n\t\t\t\t\t\treturn invoke.Result, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\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.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.tls.PrivateKey;\nimport com.pulumi.tls.PrivateKeyArgs;\nimport com.pulumi.gcp.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigSubjectAltNameArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigNameConstraintsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigPublicKeyArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"default\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-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 certKey = new PrivateKey(\"certKey\", PrivateKeyArgs.builder()\n .algorithm(\"RSA\")\n .build());\n\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthority(defaultAuthority.certificateAuthorityId())\n .lifetime(\"86000s\")\n .name(\"cert-1\")\n .config(CertificateConfigArgs.builder()\n .subjectConfig(CertificateConfigSubjectConfigArgs.builder()\n .subject(CertificateConfigSubjectConfigSubjectArgs.builder()\n .commonName(\"san1.example.com\")\n .countryCode(\"us\")\n .organization(\"google\")\n .organizationalUnit(\"enterprise\")\n .locality(\"mountain view\")\n .province(\"california\")\n .streetAddress(\"1600 amphitheatre parkway\")\n .build())\n .subjectAltName(CertificateConfigSubjectConfigSubjectAltNameArgs.builder()\n .emailAddresses(\"email@example.com\")\n .ipAddresses(\"127.0.0.1\")\n .uris(\"http://www.ietf.org/rfc/rfc3986.txt\")\n .build())\n .build())\n .x509Config(CertificateConfigX509ConfigArgs.builder()\n .caOptions(CertificateConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(CertificateConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(false)\n .build())\n .build())\n .nameConstraints(CertificateConfigX509ConfigNameConstraintsArgs.builder()\n .critical(true)\n .permittedDnsNames(\"*.example.com\")\n .excludedDnsNames(\"*.deny.example.com\")\n .permittedIpRanges(\"10.0.0.0/8\")\n .excludedIpRanges(\"10.1.1.0/24\")\n .permittedEmailAddresses(\".example.com\")\n .excludedEmailAddresses(\".deny.example.com\")\n .permittedUris(\".example.com\")\n .excludedUris(\".deny.example.com\")\n .build())\n .build())\n .publicKey(CertificateConfigPublicKeyArgs.builder()\n .format(\"PEM\")\n .key(StdFunctions.base64encode().applyValue(invoke -\u003e invoke.result()))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: default\n tier: ENTERPRISE\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-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 deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n certKey:\n type: tls:PrivateKey\n name: cert_key\n properties:\n algorithm: RSA\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthority: ${defaultAuthority.certificateAuthorityId}\n lifetime: 86000s\n name: cert-1\n config:\n subjectConfig:\n subject:\n commonName: san1.example.com\n countryCode: us\n organization: google\n organizationalUnit: enterprise\n locality: mountain view\n province: california\n streetAddress: 1600 amphitheatre parkway\n subjectAltName:\n emailAddresses:\n - email@example.com\n ipAddresses:\n - 127.0.0.1\n uris:\n - http://www.ietf.org/rfc/rfc3986.txt\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n nameConstraints:\n critical: true\n permittedDnsNames:\n - '*.example.com'\n excludedDnsNames:\n - '*.deny.example.com'\n permittedIpRanges:\n - 10.0.0.0/8\n excludedIpRanges:\n - 10.1.1.0/24\n permittedEmailAddresses:\n - .example.com\n excludedEmailAddresses:\n - .deny.example.com\n permittedUris:\n - .example.com\n excludedUris:\n - .deny.example.com\n publicKey:\n format: PEM\n key:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: ${certKey.publicKeyPem}\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate With Template\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"my-pool\",\n tier: \"ENTERPRISE\",\n});\nconst defaultCertificateTemplate = new gcp.certificateauthority.CertificateTemplate(\"default\", {\n location: \"us-central1\",\n name: \"my-certificate-template\",\n description: \"An updated sample certificate template\",\n identityConstraints: {\n allowSubjectAltNamesPassthrough: true,\n allowSubjectPassthrough: true,\n celExpression: {\n description: \"Always true\",\n expression: \"true\",\n location: \"any.file.anywhere\",\n title: \"Sample expression\",\n },\n },\n passthroughExtensions: {\n additionalExtensions: [{\n objectIdPaths: [\n 1,\n 6,\n ],\n }],\n knownExtensions: [\"EXTENDED_KEY_USAGE\"],\n },\n predefinedValues: {\n additionalExtensions: [{\n objectId: {\n objectIdPaths: [\n 1,\n 6,\n ],\n },\n value: \"c3RyaW5nCg==\",\n critical: true,\n }],\n aiaOcspServers: [\"string\"],\n caOptions: {\n isCa: false,\n maxIssuerPathLength: 6,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: false,\n contentCommitment: true,\n crlSign: false,\n dataEncipherment: true,\n decipherOnly: true,\n digitalSignature: true,\n encipherOnly: true,\n keyAgreement: true,\n keyEncipherment: true,\n },\n extendedKeyUsage: {\n clientAuth: true,\n codeSigning: true,\n emailProtection: true,\n ocspSigning: true,\n serverAuth: true,\n timeStamping: true,\n },\n unknownExtendedKeyUsages: [{\n objectIdPaths: [\n 1,\n 6,\n ],\n }],\n },\n policyIds: [{\n objectIdPaths: [\n 1,\n 6,\n ],\n }],\n },\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-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: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthority: defaultAuthority.certificateAuthorityId,\n name: \"my-certificate\",\n lifetime: \"860s\",\n pemCsr: std.file({\n input: \"test-fixtures/rsa_csr.pem\",\n }).then(invoke =\u003e invoke.result),\n certificateTemplate: defaultCertificateTemplate.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"my-pool\",\n tier=\"ENTERPRISE\")\ndefault_certificate_template = gcp.certificateauthority.CertificateTemplate(\"default\",\n location=\"us-central1\",\n name=\"my-certificate-template\",\n description=\"An updated sample certificate template\",\n identity_constraints={\n \"allow_subject_alt_names_passthrough\": True,\n \"allow_subject_passthrough\": True,\n \"cel_expression\": {\n \"description\": \"Always true\",\n \"expression\": \"true\",\n \"location\": \"any.file.anywhere\",\n \"title\": \"Sample expression\",\n },\n },\n passthrough_extensions={\n \"additional_extensions\": [{\n \"object_id_paths\": [\n 1,\n 6,\n ],\n }],\n \"known_extensions\": [\"EXTENDED_KEY_USAGE\"],\n },\n predefined_values={\n \"additional_extensions\": [{\n \"object_id\": {\n \"object_id_paths\": [\n 1,\n 6,\n ],\n },\n \"value\": \"c3RyaW5nCg==\",\n \"critical\": True,\n }],\n \"aia_ocsp_servers\": [\"string\"],\n \"ca_options\": {\n \"is_ca\": False,\n \"max_issuer_path_length\": 6,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": False,\n \"content_commitment\": True,\n \"crl_sign\": False,\n \"data_encipherment\": True,\n \"decipher_only\": True,\n \"digital_signature\": True,\n \"encipher_only\": True,\n \"key_agreement\": True,\n \"key_encipherment\": True,\n },\n \"extended_key_usage\": {\n \"client_auth\": True,\n \"code_signing\": True,\n \"email_protection\": True,\n \"ocsp_signing\": True,\n \"server_auth\": True,\n \"time_stamping\": True,\n },\n \"unknown_extended_key_usages\": [{\n \"object_id_paths\": [\n 1,\n 6,\n ],\n }],\n },\n \"policy_ids\": [{\n \"object_id_paths\": [\n 1,\n 6,\n ],\n }],\n })\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-authority\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority=default_authority.certificate_authority_id,\n name=\"my-certificate\",\n lifetime=\"860s\",\n pem_csr=std.file(input=\"test-fixtures/rsa_csr.pem\").result,\n certificate_template=default_certificate_template.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-pool\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultCertificateTemplate = new Gcp.CertificateAuthority.CertificateTemplate(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-certificate-template\",\n Description = \"An updated sample certificate template\",\n IdentityConstraints = new Gcp.CertificateAuthority.Inputs.CertificateTemplateIdentityConstraintsArgs\n {\n AllowSubjectAltNamesPassthrough = true,\n AllowSubjectPassthrough = true,\n CelExpression = new Gcp.CertificateAuthority.Inputs.CertificateTemplateIdentityConstraintsCelExpressionArgs\n {\n Description = \"Always true\",\n Expression = \"true\",\n Location = \"any.file.anywhere\",\n Title = \"Sample expression\",\n },\n },\n PassthroughExtensions = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePassthroughExtensionsArgs\n {\n AdditionalExtensions = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePassthroughExtensionsAdditionalExtensionArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n },\n KnownExtensions = new[]\n {\n \"EXTENDED_KEY_USAGE\",\n },\n },\n PredefinedValues = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesArgs\n {\n AdditionalExtensions = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesAdditionalExtensionArgs\n {\n ObjectId = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesAdditionalExtensionObjectIdArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n Value = \"c3RyaW5nCg==\",\n Critical = true,\n },\n },\n AiaOcspServers = new[]\n {\n \"string\",\n },\n CaOptions = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesCaOptionsArgs\n {\n IsCa = false,\n MaxIssuerPathLength = 6,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs\n {\n CertSign = false,\n ContentCommitment = true,\n CrlSign = false,\n DataEncipherment = true,\n DecipherOnly = true,\n DigitalSignature = true,\n EncipherOnly = true,\n KeyAgreement = true,\n KeyEncipherment = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs\n {\n ClientAuth = true,\n CodeSigning = true,\n EmailProtection = true,\n OcspSigning = true,\n ServerAuth = true,\n TimeStamping = true,\n },\n UnknownExtendedKeyUsages = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n },\n },\n PolicyIds = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesPolicyIdArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n },\n },\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-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 = false,\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 defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthority = defaultAuthority.CertificateAuthorityId,\n Name = \"my-certificate\",\n Lifetime = \"860s\",\n PemCsr = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/rsa_csr.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n CertificateTemplate = defaultCertificateTemplate.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-pool\"),\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\tdefaultCertificateTemplate, err := certificateauthority.NewCertificateTemplate(ctx, \"default\", \u0026certificateauthority.CertificateTemplateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-certificate-template\"),\n\t\t\tDescription: pulumi.String(\"An updated sample certificate template\"),\n\t\t\tIdentityConstraints: \u0026certificateauthority.CertificateTemplateIdentityConstraintsArgs{\n\t\t\t\tAllowSubjectAltNamesPassthrough: pulumi.Bool(true),\n\t\t\t\tAllowSubjectPassthrough: pulumi.Bool(true),\n\t\t\t\tCelExpression: \u0026certificateauthority.CertificateTemplateIdentityConstraintsCelExpressionArgs{\n\t\t\t\t\tDescription: pulumi.String(\"Always true\"),\n\t\t\t\t\tExpression: pulumi.String(\"true\"),\n\t\t\t\t\tLocation: pulumi.String(\"any.file.anywhere\"),\n\t\t\t\t\tTitle: pulumi.String(\"Sample expression\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPassthroughExtensions: \u0026certificateauthority.CertificateTemplatePassthroughExtensionsArgs{\n\t\t\t\tAdditionalExtensions: certificateauthority.CertificateTemplatePassthroughExtensionsAdditionalExtensionArray{\n\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePassthroughExtensionsAdditionalExtensionArgs{\n\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\tpulumi.Int(6),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tKnownExtensions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"EXTENDED_KEY_USAGE\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPredefinedValues: \u0026certificateauthority.CertificateTemplatePredefinedValuesArgs{\n\t\t\t\tAdditionalExtensions: certificateauthority.CertificateTemplatePredefinedValuesAdditionalExtensionArray{\n\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePredefinedValuesAdditionalExtensionArgs{\n\t\t\t\t\t\tObjectId: \u0026certificateauthority.CertificateTemplatePredefinedValuesAdditionalExtensionObjectIdArgs{\n\t\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\t\tpulumi.Int(6),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tValue: pulumi.String(\"c3RyaW5nCg==\"),\n\t\t\t\t\t\tCritical: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAiaOcspServers: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"string\"),\n\t\t\t\t},\n\t\t\t\tCaOptions: \u0026certificateauthority.CertificateTemplatePredefinedValuesCaOptionsArgs{\n\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\tMaxIssuerPathLength: pulumi.Int(6),\n\t\t\t\t},\n\t\t\t\tKeyUsage: \u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageArgs{\n\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\tCertSign: pulumi.Bool(false),\n\t\t\t\t\t\tContentCommitment: pulumi.Bool(true),\n\t\t\t\t\t\tCrlSign: pulumi.Bool(false),\n\t\t\t\t\t\tDataEncipherment: pulumi.Bool(true),\n\t\t\t\t\t\tDecipherOnly: pulumi.Bool(true),\n\t\t\t\t\t\tDigitalSignature: pulumi.Bool(true),\n\t\t\t\t\t\tEncipherOnly: pulumi.Bool(true),\n\t\t\t\t\t\tKeyAgreement: pulumi.Bool(true),\n\t\t\t\t\t\tKeyEncipherment: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\tClientAuth: pulumi.Bool(true),\n\t\t\t\t\t\tCodeSigning: pulumi.Bool(true),\n\t\t\t\t\t\tEmailProtection: pulumi.Bool(true),\n\t\t\t\t\t\tOcspSigning: pulumi.Bool(true),\n\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\tTimeStamping: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tUnknownExtendedKeyUsages: certificateauthority.CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArray{\n\t\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\t\tpulumi.Int(6),\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\tPolicyIds: certificateauthority.CertificateTemplatePredefinedValuesPolicyIdArray{\n\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePredefinedValuesPolicyIdArgs{\n\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\tpulumi.Int(6),\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\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-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(false),\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\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/rsa_csr.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthority: defaultAuthority.CertificateAuthorityId,\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLifetime: pulumi.String(\"860s\"),\n\t\t\tPemCsr: pulumi.String(invokeFile.Result),\n\t\t\tCertificateTemplate: defaultCertificateTemplate.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.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.CertificateTemplate;\nimport com.pulumi.gcp.certificateauthority.CertificateTemplateArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplateIdentityConstraintsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplateIdentityConstraintsCelExpressionArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePassthroughExtensionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs;\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.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"my-pool\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultCertificateTemplate = new CertificateTemplate(\"defaultCertificateTemplate\", CertificateTemplateArgs.builder()\n .location(\"us-central1\")\n .name(\"my-certificate-template\")\n .description(\"An updated sample certificate template\")\n .identityConstraints(CertificateTemplateIdentityConstraintsArgs.builder()\n .allowSubjectAltNamesPassthrough(true)\n .allowSubjectPassthrough(true)\n .celExpression(CertificateTemplateIdentityConstraintsCelExpressionArgs.builder()\n .description(\"Always true\")\n .expression(\"true\")\n .location(\"any.file.anywhere\")\n .title(\"Sample expression\")\n .build())\n .build())\n .passthroughExtensions(CertificateTemplatePassthroughExtensionsArgs.builder()\n .additionalExtensions(CertificateTemplatePassthroughExtensionsAdditionalExtensionArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .knownExtensions(\"EXTENDED_KEY_USAGE\")\n .build())\n .predefinedValues(CertificateTemplatePredefinedValuesArgs.builder()\n .additionalExtensions(CertificateTemplatePredefinedValuesAdditionalExtensionArgs.builder()\n .objectId(CertificateTemplatePredefinedValuesAdditionalExtensionObjectIdArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .value(\"c3RyaW5nCg==\")\n .critical(true)\n .build())\n .aiaOcspServers(\"string\")\n .caOptions(CertificateTemplatePredefinedValuesCaOptionsArgs.builder()\n .isCa(false)\n .maxIssuerPathLength(6)\n .build())\n .keyUsage(CertificateTemplatePredefinedValuesKeyUsageArgs.builder()\n .baseKeyUsage(CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs.builder()\n .certSign(false)\n .contentCommitment(true)\n .crlSign(false)\n .dataEncipherment(true)\n .decipherOnly(true)\n .digitalSignature(true)\n .encipherOnly(true)\n .keyAgreement(true)\n .keyEncipherment(true)\n .build())\n .extendedKeyUsage(CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs.builder()\n .clientAuth(true)\n .codeSigning(true)\n .emailProtection(true)\n .ocspSigning(true)\n .serverAuth(true)\n .timeStamping(true)\n .build())\n .unknownExtendedKeyUsages(CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .build())\n .policyIds(CertificateTemplatePredefinedValuesPolicyIdArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .build())\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-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(false)\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 defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthority(defaultAuthority.certificateAuthorityId())\n .name(\"my-certificate\")\n .lifetime(\"860s\")\n .pemCsr(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/rsa_csr.pem\")\n .build()).result())\n .certificateTemplate(defaultCertificateTemplate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: my-pool\n tier: ENTERPRISE\n defaultCertificateTemplate:\n type: gcp:certificateauthority:CertificateTemplate\n name: default\n properties:\n location: us-central1\n name: my-certificate-template\n description: An updated sample certificate template\n identityConstraints:\n allowSubjectAltNamesPassthrough: true\n allowSubjectPassthrough: true\n celExpression:\n description: Always true\n expression: 'true'\n location: any.file.anywhere\n title: Sample expression\n passthroughExtensions:\n additionalExtensions:\n - objectIdPaths:\n - 1\n - 6\n knownExtensions:\n - EXTENDED_KEY_USAGE\n predefinedValues:\n additionalExtensions:\n - objectId:\n objectIdPaths:\n - 1\n - 6\n value: c3RyaW5nCg==\n critical: true\n aiaOcspServers:\n - string\n caOptions:\n isCa: false\n maxIssuerPathLength: 6\n keyUsage:\n baseKeyUsage:\n certSign: false\n contentCommitment: true\n crlSign: false\n dataEncipherment: true\n decipherOnly: true\n digitalSignature: true\n encipherOnly: true\n keyAgreement: true\n keyEncipherment: true\n extendedKeyUsage:\n clientAuth: true\n codeSigning: true\n emailProtection: true\n ocspSigning: true\n serverAuth: true\n timeStamping: true\n unknownExtendedKeyUsages:\n - objectIdPaths:\n - 1\n - 6\n policyIds:\n - objectIdPaths:\n - 1\n - 6\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-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: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthority: ${defaultAuthority.certificateAuthorityId}\n name: my-certificate\n lifetime: 860s\n pemCsr:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/rsa_csr.pem\n Return: result\n certificateTemplate: ${defaultCertificateTemplate.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Csr\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"my-pool\",\n tier: \"ENTERPRISE\",\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-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: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthority: defaultAuthority.certificateAuthorityId,\n name: \"my-certificate\",\n lifetime: \"860s\",\n pemCsr: std.file({\n input: \"test-fixtures/rsa_csr.pem\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"my-pool\",\n tier=\"ENTERPRISE\")\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-authority\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority=default_authority.certificate_authority_id,\n name=\"my-certificate\",\n lifetime=\"860s\",\n pem_csr=std.file(input=\"test-fixtures/rsa_csr.pem\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-pool\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-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 = false,\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 defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthority = defaultAuthority.CertificateAuthorityId,\n Name = \"my-certificate\",\n Lifetime = \"860s\",\n PemCsr = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/rsa_csr.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-pool\"),\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\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-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(false),\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\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/rsa_csr.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthority: defaultAuthority.CertificateAuthorityId,\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLifetime: pulumi.String(\"860s\"),\n\t\t\tPemCsr: pulumi.String(invokeFile.Result),\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.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"my-pool\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-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(false)\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 defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthority(defaultAuthority.certificateAuthorityId())\n .name(\"my-certificate\")\n .lifetime(\"860s\")\n .pemCsr(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/rsa_csr.pem\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: my-pool\n tier: ENTERPRISE\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-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: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthority: ${defaultAuthority.certificateAuthorityId}\n name: my-certificate\n lifetime: 860s\n pemCsr:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/rsa_csr.pem\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate No Authority\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"my-pool\",\n tier: \"ENTERPRISE\",\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-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 digitalSignature: true,\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n lifetime: \"86400s\",\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n name: \"my-certificate\",\n lifetime: \"860s\",\n config: {\n subjectConfig: {\n subject: {\n commonName: \"san1.example.com\",\n countryCode: \"us\",\n organization: \"google\",\n organizationalUnit: \"enterprise\",\n locality: \"mountain view\",\n province: \"california\",\n streetAddress: \"1600 amphitheatre parkway\",\n postalCode: \"94109\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n publicKey: {\n format: \"PEM\",\n key: std.filebase64({\n input: \"test-fixtures/rsa_public.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n },\n}, {\n dependsOn: [defaultAuthority],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"my-pool\",\n tier=\"ENTERPRISE\")\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-authority\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"digital_signature\": True,\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n lifetime=\"86400s\",\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n name=\"my-certificate\",\n lifetime=\"860s\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"common_name\": \"san1.example.com\",\n \"country_code\": \"us\",\n \"organization\": \"google\",\n \"organizational_unit\": \"enterprise\",\n \"locality\": \"mountain view\",\n \"province\": \"california\",\n \"street_address\": \"1600 amphitheatre parkway\",\n \"postal_code\": \"94109\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": False,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n \"public_key\": {\n \"format\": \"PEM\",\n \"key\": std.filebase64(input=\"test-fixtures/rsa_public.pem\").result,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[default_authority]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-pool\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-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 DigitalSignature = true,\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n Lifetime = \"86400s\",\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 defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n Name = \"my-certificate\",\n Lifetime = \"860s\",\n Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigSubjectArgs\n {\n CommonName = \"san1.example.com\",\n CountryCode = \"us\",\n Organization = \"google\",\n OrganizationalUnit = \"enterprise\",\n Locality = \"mountain view\",\n Province = \"california\",\n StreetAddress = \"1600 amphitheatre parkway\",\n PostalCode = \"94109\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n PublicKey = new Gcp.CertificateAuthority.Inputs.CertificateConfigPublicKeyArgs\n {\n Format = \"PEM\",\n Key = Std.Filebase64.Invoke(new()\n {\n Input = \"test-fixtures/rsa_public.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultAuthority,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-pool\"),\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\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-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\tDigitalSignature: pulumi.Bool(true),\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\tLifetime: pulumi.String(\"86400s\"),\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\tinvokeFilebase64, err := std.Filebase64(ctx, \u0026std.Filebase64Args{\n\t\t\tInput: \"test-fixtures/rsa_public.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLifetime: pulumi.String(\"860s\"),\n\t\t\tConfig: \u0026certificateauthority.CertificateConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.CertificateConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.CertificateConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tCommonName: pulumi.String(\"san1.example.com\"),\n\t\t\t\t\t\tCountryCode: pulumi.String(\"us\"),\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tOrganizationalUnit: pulumi.String(\"enterprise\"),\n\t\t\t\t\t\tLocality: pulumi.String(\"mountain view\"),\n\t\t\t\t\t\tProvince: pulumi.String(\"california\"),\n\t\t\t\t\t\tStreetAddress: pulumi.String(\"1600 amphitheatre parkway\"),\n\t\t\t\t\t\tPostalCode: pulumi.String(\"94109\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.CertificateConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CertificateConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs{\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.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\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\tPublicKey: \u0026certificateauthority.CertificateConfigPublicKeyArgs{\n\t\t\t\t\tFormat: pulumi.String(\"PEM\"),\n\t\t\t\t\tKey: pulumi.String(invokeFilebase64.Result),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultAuthority,\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.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigPublicKeyArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"my-pool\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-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 .digitalSignature(true)\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .lifetime(\"86400s\")\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 defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .name(\"my-certificate\")\n .lifetime(\"860s\")\n .config(CertificateConfigArgs.builder()\n .subjectConfig(CertificateConfigSubjectConfigArgs.builder()\n .subject(CertificateConfigSubjectConfigSubjectArgs.builder()\n .commonName(\"san1.example.com\")\n .countryCode(\"us\")\n .organization(\"google\")\n .organizationalUnit(\"enterprise\")\n .locality(\"mountain view\")\n .province(\"california\")\n .streetAddress(\"1600 amphitheatre parkway\")\n .postalCode(\"94109\")\n .build())\n .build())\n .x509Config(CertificateConfigX509ConfigArgs.builder()\n .caOptions(CertificateConfigX509ConfigCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CertificateConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .crlSign(true)\n .build())\n .extendedKeyUsage(CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .publicKey(CertificateConfigPublicKeyArgs.builder()\n .format(\"PEM\")\n .key(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"test-fixtures/rsa_public.pem\")\n .build()).result())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultAuthority)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: my-pool\n tier: ENTERPRISE\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-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 digitalSignature: true\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n lifetime: 86400s\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n name: my-certificate\n lifetime: 860s\n config:\n subjectConfig:\n subject:\n commonName: san1.example.com\n countryCode: us\n organization: google\n organizationalUnit: enterprise\n locality: mountain view\n province: california\n streetAddress: 1600 amphitheatre parkway\n postalCode: '94109'\n x509Config:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage:\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n publicKey:\n format: PEM\n key:\n fn::invoke:\n Function: std:filebase64\n Arguments:\n input: test-fixtures/rsa_public.pem\n Return: result\n options:\n dependson:\n - ${defaultAuthority}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Custom Ski\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"my-pool\",\n tier: \"ENTERPRISE\",\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-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 digitalSignature: true,\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n lifetime: \"86400s\",\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n name: \"my-certificate\",\n lifetime: \"860s\",\n config: {\n subjectConfig: {\n subject: {\n commonName: \"san1.example.com\",\n countryCode: \"us\",\n organization: \"google\",\n organizationalUnit: \"enterprise\",\n locality: \"mountain view\",\n province: \"california\",\n streetAddress: \"1600 amphitheatre parkway\",\n postalCode: \"94109\",\n },\n },\n subjectKeyId: {\n keyId: \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n x509Config: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n publicKey: {\n format: \"PEM\",\n key: std.filebase64({\n input: \"test-fixtures/rsa_public.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n },\n}, {\n dependsOn: [defaultAuthority],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"my-pool\",\n tier=\"ENTERPRISE\")\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-authority\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"digital_signature\": True,\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n lifetime=\"86400s\",\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n name=\"my-certificate\",\n lifetime=\"860s\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"common_name\": \"san1.example.com\",\n \"country_code\": \"us\",\n \"organization\": \"google\",\n \"organizational_unit\": \"enterprise\",\n \"locality\": \"mountain view\",\n \"province\": \"california\",\n \"street_address\": \"1600 amphitheatre parkway\",\n \"postal_code\": \"94109\",\n },\n },\n \"subject_key_id\": {\n \"key_id\": \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": False,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n \"public_key\": {\n \"format\": \"PEM\",\n \"key\": std.filebase64(input=\"test-fixtures/rsa_public.pem\").result,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[default_authority]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-pool\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-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 DigitalSignature = true,\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n Lifetime = \"86400s\",\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 defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n Name = \"my-certificate\",\n Lifetime = \"860s\",\n Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigSubjectArgs\n {\n CommonName = \"san1.example.com\",\n CountryCode = \"us\",\n Organization = \"google\",\n OrganizationalUnit = \"enterprise\",\n Locality = \"mountain view\",\n Province = \"california\",\n StreetAddress = \"1600 amphitheatre parkway\",\n PostalCode = \"94109\",\n },\n },\n SubjectKeyId = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectKeyIdArgs\n {\n KeyId = \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n PublicKey = new Gcp.CertificateAuthority.Inputs.CertificateConfigPublicKeyArgs\n {\n Format = \"PEM\",\n Key = Std.Filebase64.Invoke(new()\n {\n Input = \"test-fixtures/rsa_public.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultAuthority,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-pool\"),\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\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-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\tDigitalSignature: pulumi.Bool(true),\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\tLifetime: pulumi.String(\"86400s\"),\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\tinvokeFilebase64, err := std.Filebase64(ctx, \u0026std.Filebase64Args{\n\t\t\tInput: \"test-fixtures/rsa_public.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLifetime: pulumi.String(\"860s\"),\n\t\t\tConfig: \u0026certificateauthority.CertificateConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.CertificateConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.CertificateConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tCommonName: pulumi.String(\"san1.example.com\"),\n\t\t\t\t\t\tCountryCode: pulumi.String(\"us\"),\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tOrganizationalUnit: pulumi.String(\"enterprise\"),\n\t\t\t\t\t\tLocality: pulumi.String(\"mountain view\"),\n\t\t\t\t\t\tProvince: pulumi.String(\"california\"),\n\t\t\t\t\t\tStreetAddress: pulumi.String(\"1600 amphitheatre parkway\"),\n\t\t\t\t\t\tPostalCode: pulumi.String(\"94109\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSubjectKeyId: \u0026certificateauthority.CertificateConfigSubjectKeyIdArgs{\n\t\t\t\t\tKeyId: pulumi.String(\"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\"),\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.CertificateConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CertificateConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs{\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.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\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\tPublicKey: \u0026certificateauthority.CertificateConfigPublicKeyArgs{\n\t\t\t\t\tFormat: pulumi.String(\"PEM\"),\n\t\t\t\t\tKey: pulumi.String(invokeFilebase64.Result),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultAuthority,\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.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectKeyIdArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigPublicKeyArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"my-pool\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-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 .digitalSignature(true)\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .lifetime(\"86400s\")\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 defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .name(\"my-certificate\")\n .lifetime(\"860s\")\n .config(CertificateConfigArgs.builder()\n .subjectConfig(CertificateConfigSubjectConfigArgs.builder()\n .subject(CertificateConfigSubjectConfigSubjectArgs.builder()\n .commonName(\"san1.example.com\")\n .countryCode(\"us\")\n .organization(\"google\")\n .organizationalUnit(\"enterprise\")\n .locality(\"mountain view\")\n .province(\"california\")\n .streetAddress(\"1600 amphitheatre parkway\")\n .postalCode(\"94109\")\n .build())\n .build())\n .subjectKeyId(CertificateConfigSubjectKeyIdArgs.builder()\n .keyId(\"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\")\n .build())\n .x509Config(CertificateConfigX509ConfigArgs.builder()\n .caOptions(CertificateConfigX509ConfigCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CertificateConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .crlSign(true)\n .build())\n .extendedKeyUsage(CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .publicKey(CertificateConfigPublicKeyArgs.builder()\n .format(\"PEM\")\n .key(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"test-fixtures/rsa_public.pem\")\n .build()).result())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultAuthority)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: my-pool\n tier: ENTERPRISE\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-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 digitalSignature: true\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n lifetime: 86400s\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n name: my-certificate\n lifetime: 860s\n config:\n subjectConfig:\n subject:\n commonName: san1.example.com\n countryCode: us\n organization: google\n organizationalUnit: enterprise\n locality: mountain view\n province: california\n streetAddress: 1600 amphitheatre parkway\n postalCode: '94109'\n subjectKeyId:\n keyId: 4cf3372289b1d411b999dbb9ebcd44744b6b2fca\n x509Config:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage:\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n publicKey:\n format: PEM\n key:\n fn::invoke:\n Function: std:filebase64\n Arguments:\n input: test-fixtures/rsa_public.pem\n Return: result\n options:\n dependson:\n - ${defaultAuthority}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCertificate can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/caPools/{{pool}}/certificates/{{name}}`\n\n* `{{project}}/{{location}}/{{pool}}/{{name}}`\n\n* `{{location}}/{{pool}}/{{name}}`\n\nWhen using the `pulumi import` command, Certificate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificateauthority/certificate:Certificate default projects/{{project}}/locations/{{location}}/caPools/{{pool}}/certificates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/certificate:Certificate default {{project}}/{{location}}/{{pool}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/certificate:Certificate default {{location}}/{{pool}}/{{name}}\n```\n\n", "properties": { "certificateAuthority": { "type": "string", @@ -130352,7 +130352,7 @@ } }, "gcp:certificateauthority/certificateTemplate:CertificateTemplate": { - "description": "Certificate Authority Service provides reusable and parameterized templates that you can use for common certificate issuance scenarios. A certificate template represents a relatively static and well-defined certificate issuance schema within an organization. A certificate template can essentially become a full-fledged vertical certificate issuance framework.\n\n\nTo get more information about CertificateTemplate, see:\n\n* [API documentation](https://cloud.google.com/certificate-authority-service/docs/reference/rest)\n* How-to Guides\n * [Common configurations and Certificate Profiles](https://cloud.google.com/certificate-authority-service/docs/certificate-profile)\n * [Official Documentation](https://cloud.google.com/certificate-authority-service)\n * [Understanding Certificate Templates](https://cloud.google.com/certificate-authority-service/docs/certificate-template)\n\n## Example Usage\n\n### Privateca Template Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.CertificateTemplate(\"default\", {\n name: \"my-template\",\n location: \"us-central1\",\n description: \"A sample certificate template\",\n identityConstraints: {\n allowSubjectAltNamesPassthrough: true,\n allowSubjectPassthrough: true,\n celExpression: {\n description: \"Always true\",\n expression: \"true\",\n location: \"any.file.anywhere\",\n title: \"Sample expression\",\n },\n },\n maximumLifetime: \"86400s\",\n passthroughExtensions: {\n additionalExtensions: [{\n objectIdPaths: [\n 1,\n 6,\n ],\n }],\n knownExtensions: [\"EXTENDED_KEY_USAGE\"],\n },\n predefinedValues: {\n additionalExtensions: [{\n objectId: {\n objectIdPaths: [\n 1,\n 6,\n ],\n },\n value: \"c3RyaW5nCg==\",\n critical: true,\n }],\n aiaOcspServers: [\"string\"],\n caOptions: {\n isCa: false,\n maxIssuerPathLength: 6,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: false,\n contentCommitment: true,\n crlSign: false,\n dataEncipherment: true,\n decipherOnly: true,\n digitalSignature: true,\n encipherOnly: true,\n keyAgreement: true,\n keyEncipherment: true,\n },\n extendedKeyUsage: {\n clientAuth: true,\n codeSigning: true,\n emailProtection: true,\n ocspSigning: true,\n serverAuth: true,\n timeStamping: true,\n },\n unknownExtendedKeyUsages: [{\n objectIdPaths: [\n 1,\n 6,\n ],\n }],\n },\n policyIds: [{\n objectIdPaths: [\n 1,\n 6,\n ],\n }],\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.CertificateTemplate(\"default\",\n name=\"my-template\",\n location=\"us-central1\",\n description=\"A sample certificate template\",\n identity_constraints={\n \"allowSubjectAltNamesPassthrough\": True,\n \"allowSubjectPassthrough\": True,\n \"celExpression\": {\n \"description\": \"Always true\",\n \"expression\": \"true\",\n \"location\": \"any.file.anywhere\",\n \"title\": \"Sample expression\",\n },\n },\n maximum_lifetime=\"86400s\",\n passthrough_extensions={\n \"additionalExtensions\": [{\n \"objectIdPaths\": [\n 1,\n 6,\n ],\n }],\n \"knownExtensions\": [\"EXTENDED_KEY_USAGE\"],\n },\n predefined_values={\n \"additionalExtensions\": [{\n \"objectId\": {\n \"objectIdPaths\": [\n 1,\n 6,\n ],\n },\n \"value\": \"c3RyaW5nCg==\",\n \"critical\": True,\n }],\n \"aiaOcspServers\": [\"string\"],\n \"caOptions\": {\n \"isCa\": False,\n \"maxIssuerPathLength\": 6,\n },\n \"keyUsage\": {\n \"baseKeyUsage\": {\n \"certSign\": False,\n \"contentCommitment\": True,\n \"crlSign\": False,\n \"dataEncipherment\": True,\n \"decipherOnly\": True,\n \"digitalSignature\": True,\n \"encipherOnly\": True,\n \"keyAgreement\": True,\n \"keyEncipherment\": True,\n },\n \"extendedKeyUsage\": {\n \"clientAuth\": True,\n \"codeSigning\": True,\n \"emailProtection\": True,\n \"ocspSigning\": True,\n \"serverAuth\": True,\n \"timeStamping\": True,\n },\n \"unknownExtendedKeyUsages\": [{\n \"objectIdPaths\": [\n 1,\n 6,\n ],\n }],\n },\n \"policyIds\": [{\n \"objectIdPaths\": [\n 1,\n 6,\n ],\n }],\n },\n labels={\n \"label-one\": \"value-one\",\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 @default = new Gcp.CertificateAuthority.CertificateTemplate(\"default\", new()\n {\n Name = \"my-template\",\n Location = \"us-central1\",\n Description = \"A sample certificate template\",\n IdentityConstraints = new Gcp.CertificateAuthority.Inputs.CertificateTemplateIdentityConstraintsArgs\n {\n AllowSubjectAltNamesPassthrough = true,\n AllowSubjectPassthrough = true,\n CelExpression = new Gcp.CertificateAuthority.Inputs.CertificateTemplateIdentityConstraintsCelExpressionArgs\n {\n Description = \"Always true\",\n Expression = \"true\",\n Location = \"any.file.anywhere\",\n Title = \"Sample expression\",\n },\n },\n MaximumLifetime = \"86400s\",\n PassthroughExtensions = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePassthroughExtensionsArgs\n {\n AdditionalExtensions = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePassthroughExtensionsAdditionalExtensionArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n },\n KnownExtensions = new[]\n {\n \"EXTENDED_KEY_USAGE\",\n },\n },\n PredefinedValues = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesArgs\n {\n AdditionalExtensions = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesAdditionalExtensionArgs\n {\n ObjectId = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesAdditionalExtensionObjectIdArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n Value = \"c3RyaW5nCg==\",\n Critical = true,\n },\n },\n AiaOcspServers = new[]\n {\n \"string\",\n },\n CaOptions = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesCaOptionsArgs\n {\n IsCa = false,\n MaxIssuerPathLength = 6,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs\n {\n CertSign = false,\n ContentCommitment = true,\n CrlSign = false,\n DataEncipherment = true,\n DecipherOnly = true,\n DigitalSignature = true,\n EncipherOnly = true,\n KeyAgreement = true,\n KeyEncipherment = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs\n {\n ClientAuth = true,\n CodeSigning = true,\n EmailProtection = true,\n OcspSigning = true,\n ServerAuth = true,\n TimeStamping = true,\n },\n UnknownExtendedKeyUsages = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n },\n },\n PolicyIds = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesPolicyIdArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n },\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\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 := certificateauthority.NewCertificateTemplate(ctx, \"default\", \u0026certificateauthority.CertificateTemplateArgs{\n\t\t\tName: pulumi.String(\"my-template\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A sample certificate template\"),\n\t\t\tIdentityConstraints: \u0026certificateauthority.CertificateTemplateIdentityConstraintsArgs{\n\t\t\t\tAllowSubjectAltNamesPassthrough: pulumi.Bool(true),\n\t\t\t\tAllowSubjectPassthrough: pulumi.Bool(true),\n\t\t\t\tCelExpression: \u0026certificateauthority.CertificateTemplateIdentityConstraintsCelExpressionArgs{\n\t\t\t\t\tDescription: pulumi.String(\"Always true\"),\n\t\t\t\t\tExpression: pulumi.String(\"true\"),\n\t\t\t\t\tLocation: pulumi.String(\"any.file.anywhere\"),\n\t\t\t\t\tTitle: pulumi.String(\"Sample expression\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMaximumLifetime: pulumi.String(\"86400s\"),\n\t\t\tPassthroughExtensions: \u0026certificateauthority.CertificateTemplatePassthroughExtensionsArgs{\n\t\t\t\tAdditionalExtensions: certificateauthority.CertificateTemplatePassthroughExtensionsAdditionalExtensionArray{\n\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePassthroughExtensionsAdditionalExtensionArgs{\n\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\tpulumi.Int(6),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tKnownExtensions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"EXTENDED_KEY_USAGE\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPredefinedValues: \u0026certificateauthority.CertificateTemplatePredefinedValuesArgs{\n\t\t\t\tAdditionalExtensions: certificateauthority.CertificateTemplatePredefinedValuesAdditionalExtensionArray{\n\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePredefinedValuesAdditionalExtensionArgs{\n\t\t\t\t\t\tObjectId: \u0026certificateauthority.CertificateTemplatePredefinedValuesAdditionalExtensionObjectIdArgs{\n\t\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\t\tpulumi.Int(6),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tValue: pulumi.String(\"c3RyaW5nCg==\"),\n\t\t\t\t\t\tCritical: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAiaOcspServers: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"string\"),\n\t\t\t\t},\n\t\t\t\tCaOptions: \u0026certificateauthority.CertificateTemplatePredefinedValuesCaOptionsArgs{\n\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\tMaxIssuerPathLength: pulumi.Int(6),\n\t\t\t\t},\n\t\t\t\tKeyUsage: \u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageArgs{\n\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\tCertSign: pulumi.Bool(false),\n\t\t\t\t\t\tContentCommitment: pulumi.Bool(true),\n\t\t\t\t\t\tCrlSign: pulumi.Bool(false),\n\t\t\t\t\t\tDataEncipherment: pulumi.Bool(true),\n\t\t\t\t\t\tDecipherOnly: pulumi.Bool(true),\n\t\t\t\t\t\tDigitalSignature: pulumi.Bool(true),\n\t\t\t\t\t\tEncipherOnly: pulumi.Bool(true),\n\t\t\t\t\t\tKeyAgreement: pulumi.Bool(true),\n\t\t\t\t\t\tKeyEncipherment: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\tClientAuth: pulumi.Bool(true),\n\t\t\t\t\t\tCodeSigning: pulumi.Bool(true),\n\t\t\t\t\t\tEmailProtection: pulumi.Bool(true),\n\t\t\t\t\t\tOcspSigning: pulumi.Bool(true),\n\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\tTimeStamping: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tUnknownExtendedKeyUsages: certificateauthority.CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArray{\n\t\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\t\tpulumi.Int(6),\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\tPolicyIds: certificateauthority.CertificateTemplatePredefinedValuesPolicyIdArray{\n\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePredefinedValuesPolicyIdArgs{\n\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\tpulumi.Int(6),\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\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\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.CertificateTemplate;\nimport com.pulumi.gcp.certificateauthority.CertificateTemplateArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplateIdentityConstraintsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplateIdentityConstraintsCelExpressionArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePassthroughExtensionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs;\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 CertificateTemplate(\"default\", CertificateTemplateArgs.builder()\n .name(\"my-template\")\n .location(\"us-central1\")\n .description(\"A sample certificate template\")\n .identityConstraints(CertificateTemplateIdentityConstraintsArgs.builder()\n .allowSubjectAltNamesPassthrough(true)\n .allowSubjectPassthrough(true)\n .celExpression(CertificateTemplateIdentityConstraintsCelExpressionArgs.builder()\n .description(\"Always true\")\n .expression(\"true\")\n .location(\"any.file.anywhere\")\n .title(\"Sample expression\")\n .build())\n .build())\n .maximumLifetime(\"86400s\")\n .passthroughExtensions(CertificateTemplatePassthroughExtensionsArgs.builder()\n .additionalExtensions(CertificateTemplatePassthroughExtensionsAdditionalExtensionArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .knownExtensions(\"EXTENDED_KEY_USAGE\")\n .build())\n .predefinedValues(CertificateTemplatePredefinedValuesArgs.builder()\n .additionalExtensions(CertificateTemplatePredefinedValuesAdditionalExtensionArgs.builder()\n .objectId(CertificateTemplatePredefinedValuesAdditionalExtensionObjectIdArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .value(\"c3RyaW5nCg==\")\n .critical(true)\n .build())\n .aiaOcspServers(\"string\")\n .caOptions(CertificateTemplatePredefinedValuesCaOptionsArgs.builder()\n .isCa(false)\n .maxIssuerPathLength(6)\n .build())\n .keyUsage(CertificateTemplatePredefinedValuesKeyUsageArgs.builder()\n .baseKeyUsage(CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs.builder()\n .certSign(false)\n .contentCommitment(true)\n .crlSign(false)\n .dataEncipherment(true)\n .decipherOnly(true)\n .digitalSignature(true)\n .encipherOnly(true)\n .keyAgreement(true)\n .keyEncipherment(true)\n .build())\n .extendedKeyUsage(CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs.builder()\n .clientAuth(true)\n .codeSigning(true)\n .emailProtection(true)\n .ocspSigning(true)\n .serverAuth(true)\n .timeStamping(true)\n .build())\n .unknownExtendedKeyUsages(CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .build())\n .policyIds(CertificateTemplatePredefinedValuesPolicyIdArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CertificateTemplate\n properties:\n name: my-template\n location: us-central1\n description: A sample certificate template\n identityConstraints:\n allowSubjectAltNamesPassthrough: true\n allowSubjectPassthrough: true\n celExpression:\n description: Always true\n expression: 'true'\n location: any.file.anywhere\n title: Sample expression\n maximumLifetime: 86400s\n passthroughExtensions:\n additionalExtensions:\n - objectIdPaths:\n - 1\n - 6\n knownExtensions:\n - EXTENDED_KEY_USAGE\n predefinedValues:\n additionalExtensions:\n - objectId:\n objectIdPaths:\n - 1\n - 6\n value: c3RyaW5nCg==\n critical: true\n aiaOcspServers:\n - string\n caOptions:\n isCa: false\n maxIssuerPathLength: 6\n keyUsage:\n baseKeyUsage:\n certSign: false\n contentCommitment: true\n crlSign: false\n dataEncipherment: true\n decipherOnly: true\n digitalSignature: true\n encipherOnly: true\n keyAgreement: true\n keyEncipherment: true\n extendedKeyUsage:\n clientAuth: true\n codeSigning: true\n emailProtection: true\n ocspSigning: true\n serverAuth: true\n timeStamping: true\n unknownExtendedKeyUsages:\n - objectIdPaths:\n - 1\n - 6\n policyIds:\n - objectIdPaths:\n - 1\n - 6\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCertificateTemplate can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/certificateTemplates/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, CertificateTemplate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificateauthority/certificateTemplate:CertificateTemplate default projects/{{project}}/locations/{{location}}/certificateTemplates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/certificateTemplate:CertificateTemplate default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/certificateTemplate:CertificateTemplate default {{location}}/{{name}}\n```\n\n", + "description": "Certificate Authority Service provides reusable and parameterized templates that you can use for common certificate issuance scenarios. A certificate template represents a relatively static and well-defined certificate issuance schema within an organization. A certificate template can essentially become a full-fledged vertical certificate issuance framework.\n\n\nTo get more information about CertificateTemplate, see:\n\n* [API documentation](https://cloud.google.com/certificate-authority-service/docs/reference/rest)\n* How-to Guides\n * [Common configurations and Certificate Profiles](https://cloud.google.com/certificate-authority-service/docs/certificate-profile)\n * [Official Documentation](https://cloud.google.com/certificate-authority-service)\n * [Understanding Certificate Templates](https://cloud.google.com/certificate-authority-service/docs/certificate-template)\n\n## Example Usage\n\n### Privateca Template Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.CertificateTemplate(\"default\", {\n name: \"my-template\",\n location: \"us-central1\",\n description: \"A sample certificate template\",\n identityConstraints: {\n allowSubjectAltNamesPassthrough: true,\n allowSubjectPassthrough: true,\n celExpression: {\n description: \"Always true\",\n expression: \"true\",\n location: \"any.file.anywhere\",\n title: \"Sample expression\",\n },\n },\n maximumLifetime: \"86400s\",\n passthroughExtensions: {\n additionalExtensions: [{\n objectIdPaths: [\n 1,\n 6,\n ],\n }],\n knownExtensions: [\"EXTENDED_KEY_USAGE\"],\n },\n predefinedValues: {\n additionalExtensions: [{\n objectId: {\n objectIdPaths: [\n 1,\n 6,\n ],\n },\n value: \"c3RyaW5nCg==\",\n critical: true,\n }],\n aiaOcspServers: [\"string\"],\n caOptions: {\n isCa: false,\n maxIssuerPathLength: 6,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: false,\n contentCommitment: true,\n crlSign: false,\n dataEncipherment: true,\n decipherOnly: true,\n digitalSignature: true,\n encipherOnly: true,\n keyAgreement: true,\n keyEncipherment: true,\n },\n extendedKeyUsage: {\n clientAuth: true,\n codeSigning: true,\n emailProtection: true,\n ocspSigning: true,\n serverAuth: true,\n timeStamping: true,\n },\n unknownExtendedKeyUsages: [{\n objectIdPaths: [\n 1,\n 6,\n ],\n }],\n },\n policyIds: [{\n objectIdPaths: [\n 1,\n 6,\n ],\n }],\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.CertificateTemplate(\"default\",\n name=\"my-template\",\n location=\"us-central1\",\n description=\"A sample certificate template\",\n identity_constraints={\n \"allow_subject_alt_names_passthrough\": True,\n \"allow_subject_passthrough\": True,\n \"cel_expression\": {\n \"description\": \"Always true\",\n \"expression\": \"true\",\n \"location\": \"any.file.anywhere\",\n \"title\": \"Sample expression\",\n },\n },\n maximum_lifetime=\"86400s\",\n passthrough_extensions={\n \"additional_extensions\": [{\n \"object_id_paths\": [\n 1,\n 6,\n ],\n }],\n \"known_extensions\": [\"EXTENDED_KEY_USAGE\"],\n },\n predefined_values={\n \"additional_extensions\": [{\n \"object_id\": {\n \"object_id_paths\": [\n 1,\n 6,\n ],\n },\n \"value\": \"c3RyaW5nCg==\",\n \"critical\": True,\n }],\n \"aia_ocsp_servers\": [\"string\"],\n \"ca_options\": {\n \"is_ca\": False,\n \"max_issuer_path_length\": 6,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": False,\n \"content_commitment\": True,\n \"crl_sign\": False,\n \"data_encipherment\": True,\n \"decipher_only\": True,\n \"digital_signature\": True,\n \"encipher_only\": True,\n \"key_agreement\": True,\n \"key_encipherment\": True,\n },\n \"extended_key_usage\": {\n \"client_auth\": True,\n \"code_signing\": True,\n \"email_protection\": True,\n \"ocsp_signing\": True,\n \"server_auth\": True,\n \"time_stamping\": True,\n },\n \"unknown_extended_key_usages\": [{\n \"object_id_paths\": [\n 1,\n 6,\n ],\n }],\n },\n \"policy_ids\": [{\n \"object_id_paths\": [\n 1,\n 6,\n ],\n }],\n },\n labels={\n \"label-one\": \"value-one\",\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 @default = new Gcp.CertificateAuthority.CertificateTemplate(\"default\", new()\n {\n Name = \"my-template\",\n Location = \"us-central1\",\n Description = \"A sample certificate template\",\n IdentityConstraints = new Gcp.CertificateAuthority.Inputs.CertificateTemplateIdentityConstraintsArgs\n {\n AllowSubjectAltNamesPassthrough = true,\n AllowSubjectPassthrough = true,\n CelExpression = new Gcp.CertificateAuthority.Inputs.CertificateTemplateIdentityConstraintsCelExpressionArgs\n {\n Description = \"Always true\",\n Expression = \"true\",\n Location = \"any.file.anywhere\",\n Title = \"Sample expression\",\n },\n },\n MaximumLifetime = \"86400s\",\n PassthroughExtensions = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePassthroughExtensionsArgs\n {\n AdditionalExtensions = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePassthroughExtensionsAdditionalExtensionArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n },\n KnownExtensions = new[]\n {\n \"EXTENDED_KEY_USAGE\",\n },\n },\n PredefinedValues = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesArgs\n {\n AdditionalExtensions = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesAdditionalExtensionArgs\n {\n ObjectId = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesAdditionalExtensionObjectIdArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n Value = \"c3RyaW5nCg==\",\n Critical = true,\n },\n },\n AiaOcspServers = new[]\n {\n \"string\",\n },\n CaOptions = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesCaOptionsArgs\n {\n IsCa = false,\n MaxIssuerPathLength = 6,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs\n {\n CertSign = false,\n ContentCommitment = true,\n CrlSign = false,\n DataEncipherment = true,\n DecipherOnly = true,\n DigitalSignature = true,\n EncipherOnly = true,\n KeyAgreement = true,\n KeyEncipherment = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs\n {\n ClientAuth = true,\n CodeSigning = true,\n EmailProtection = true,\n OcspSigning = true,\n ServerAuth = true,\n TimeStamping = true,\n },\n UnknownExtendedKeyUsages = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n },\n },\n PolicyIds = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesPolicyIdArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n },\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\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 := certificateauthority.NewCertificateTemplate(ctx, \"default\", \u0026certificateauthority.CertificateTemplateArgs{\n\t\t\tName: pulumi.String(\"my-template\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A sample certificate template\"),\n\t\t\tIdentityConstraints: \u0026certificateauthority.CertificateTemplateIdentityConstraintsArgs{\n\t\t\t\tAllowSubjectAltNamesPassthrough: pulumi.Bool(true),\n\t\t\t\tAllowSubjectPassthrough: pulumi.Bool(true),\n\t\t\t\tCelExpression: \u0026certificateauthority.CertificateTemplateIdentityConstraintsCelExpressionArgs{\n\t\t\t\t\tDescription: pulumi.String(\"Always true\"),\n\t\t\t\t\tExpression: pulumi.String(\"true\"),\n\t\t\t\t\tLocation: pulumi.String(\"any.file.anywhere\"),\n\t\t\t\t\tTitle: pulumi.String(\"Sample expression\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMaximumLifetime: pulumi.String(\"86400s\"),\n\t\t\tPassthroughExtensions: \u0026certificateauthority.CertificateTemplatePassthroughExtensionsArgs{\n\t\t\t\tAdditionalExtensions: certificateauthority.CertificateTemplatePassthroughExtensionsAdditionalExtensionArray{\n\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePassthroughExtensionsAdditionalExtensionArgs{\n\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\tpulumi.Int(6),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tKnownExtensions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"EXTENDED_KEY_USAGE\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPredefinedValues: \u0026certificateauthority.CertificateTemplatePredefinedValuesArgs{\n\t\t\t\tAdditionalExtensions: certificateauthority.CertificateTemplatePredefinedValuesAdditionalExtensionArray{\n\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePredefinedValuesAdditionalExtensionArgs{\n\t\t\t\t\t\tObjectId: \u0026certificateauthority.CertificateTemplatePredefinedValuesAdditionalExtensionObjectIdArgs{\n\t\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\t\tpulumi.Int(6),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tValue: pulumi.String(\"c3RyaW5nCg==\"),\n\t\t\t\t\t\tCritical: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAiaOcspServers: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"string\"),\n\t\t\t\t},\n\t\t\t\tCaOptions: \u0026certificateauthority.CertificateTemplatePredefinedValuesCaOptionsArgs{\n\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\tMaxIssuerPathLength: pulumi.Int(6),\n\t\t\t\t},\n\t\t\t\tKeyUsage: \u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageArgs{\n\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\tCertSign: pulumi.Bool(false),\n\t\t\t\t\t\tContentCommitment: pulumi.Bool(true),\n\t\t\t\t\t\tCrlSign: pulumi.Bool(false),\n\t\t\t\t\t\tDataEncipherment: pulumi.Bool(true),\n\t\t\t\t\t\tDecipherOnly: pulumi.Bool(true),\n\t\t\t\t\t\tDigitalSignature: pulumi.Bool(true),\n\t\t\t\t\t\tEncipherOnly: pulumi.Bool(true),\n\t\t\t\t\t\tKeyAgreement: pulumi.Bool(true),\n\t\t\t\t\t\tKeyEncipherment: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\tClientAuth: pulumi.Bool(true),\n\t\t\t\t\t\tCodeSigning: pulumi.Bool(true),\n\t\t\t\t\t\tEmailProtection: pulumi.Bool(true),\n\t\t\t\t\t\tOcspSigning: pulumi.Bool(true),\n\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\tTimeStamping: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tUnknownExtendedKeyUsages: certificateauthority.CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArray{\n\t\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\t\tpulumi.Int(6),\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\tPolicyIds: certificateauthority.CertificateTemplatePredefinedValuesPolicyIdArray{\n\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePredefinedValuesPolicyIdArgs{\n\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\tpulumi.Int(6),\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\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\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.CertificateTemplate;\nimport com.pulumi.gcp.certificateauthority.CertificateTemplateArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplateIdentityConstraintsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplateIdentityConstraintsCelExpressionArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePassthroughExtensionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs;\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 CertificateTemplate(\"default\", CertificateTemplateArgs.builder()\n .name(\"my-template\")\n .location(\"us-central1\")\n .description(\"A sample certificate template\")\n .identityConstraints(CertificateTemplateIdentityConstraintsArgs.builder()\n .allowSubjectAltNamesPassthrough(true)\n .allowSubjectPassthrough(true)\n .celExpression(CertificateTemplateIdentityConstraintsCelExpressionArgs.builder()\n .description(\"Always true\")\n .expression(\"true\")\n .location(\"any.file.anywhere\")\n .title(\"Sample expression\")\n .build())\n .build())\n .maximumLifetime(\"86400s\")\n .passthroughExtensions(CertificateTemplatePassthroughExtensionsArgs.builder()\n .additionalExtensions(CertificateTemplatePassthroughExtensionsAdditionalExtensionArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .knownExtensions(\"EXTENDED_KEY_USAGE\")\n .build())\n .predefinedValues(CertificateTemplatePredefinedValuesArgs.builder()\n .additionalExtensions(CertificateTemplatePredefinedValuesAdditionalExtensionArgs.builder()\n .objectId(CertificateTemplatePredefinedValuesAdditionalExtensionObjectIdArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .value(\"c3RyaW5nCg==\")\n .critical(true)\n .build())\n .aiaOcspServers(\"string\")\n .caOptions(CertificateTemplatePredefinedValuesCaOptionsArgs.builder()\n .isCa(false)\n .maxIssuerPathLength(6)\n .build())\n .keyUsage(CertificateTemplatePredefinedValuesKeyUsageArgs.builder()\n .baseKeyUsage(CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs.builder()\n .certSign(false)\n .contentCommitment(true)\n .crlSign(false)\n .dataEncipherment(true)\n .decipherOnly(true)\n .digitalSignature(true)\n .encipherOnly(true)\n .keyAgreement(true)\n .keyEncipherment(true)\n .build())\n .extendedKeyUsage(CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs.builder()\n .clientAuth(true)\n .codeSigning(true)\n .emailProtection(true)\n .ocspSigning(true)\n .serverAuth(true)\n .timeStamping(true)\n .build())\n .unknownExtendedKeyUsages(CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .build())\n .policyIds(CertificateTemplatePredefinedValuesPolicyIdArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CertificateTemplate\n properties:\n name: my-template\n location: us-central1\n description: A sample certificate template\n identityConstraints:\n allowSubjectAltNamesPassthrough: true\n allowSubjectPassthrough: true\n celExpression:\n description: Always true\n expression: 'true'\n location: any.file.anywhere\n title: Sample expression\n maximumLifetime: 86400s\n passthroughExtensions:\n additionalExtensions:\n - objectIdPaths:\n - 1\n - 6\n knownExtensions:\n - EXTENDED_KEY_USAGE\n predefinedValues:\n additionalExtensions:\n - objectId:\n objectIdPaths:\n - 1\n - 6\n value: c3RyaW5nCg==\n critical: true\n aiaOcspServers:\n - string\n caOptions:\n isCa: false\n maxIssuerPathLength: 6\n keyUsage:\n baseKeyUsage:\n certSign: false\n contentCommitment: true\n crlSign: false\n dataEncipherment: true\n decipherOnly: true\n digitalSignature: true\n encipherOnly: true\n keyAgreement: true\n keyEncipherment: true\n extendedKeyUsage:\n clientAuth: true\n codeSigning: true\n emailProtection: true\n ocspSigning: true\n serverAuth: true\n timeStamping: true\n unknownExtendedKeyUsages:\n - objectIdPaths:\n - 1\n - 6\n policyIds:\n - objectIdPaths:\n - 1\n - 6\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCertificateTemplate can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/certificateTemplates/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, CertificateTemplate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificateauthority/certificateTemplate:CertificateTemplate default projects/{{project}}/locations/{{location}}/certificateTemplates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/certificateTemplate:CertificateTemplate default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/certificateTemplate:CertificateTemplate default {{location}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -130877,7 +130877,7 @@ } }, "gcp:certificatemanager/certificate:Certificate": { - "description": "Certificate represents a HTTP-reachable backend for a Certificate.\n\n\n\n\n\n## Example Usage\n\n### Certificate Manager Google Managed Certificate Dns\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.certificatemanager.DnsAuthorization(\"instance\", {\n name: \"dns-auth\",\n description: \"The default dnss\",\n domain: \"subdomain.hashicorptest.com\",\n});\nconst instance2 = new gcp.certificatemanager.DnsAuthorization(\"instance2\", {\n name: \"dns-auth2\",\n description: \"The default dnss\",\n domain: \"subdomain2.hashicorptest.com\",\n});\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"dns-cert\",\n description: \"The default cert\",\n scope: \"EDGE_CACHE\",\n labels: {\n env: \"test\",\n },\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 name=\"dns-auth\",\n description=\"The default dnss\",\n domain=\"subdomain.hashicorptest.com\")\ninstance2 = gcp.certificatemanager.DnsAuthorization(\"instance2\",\n name=\"dns-auth2\",\n description=\"The default dnss\",\n domain=\"subdomain2.hashicorptest.com\")\ndefault = gcp.certificatemanager.Certificate(\"default\",\n name=\"dns-cert\",\n description=\"The default cert\",\n scope=\"EDGE_CACHE\",\n labels={\n \"env\": \"test\",\n },\n managed={\n \"domains\": [\n instance.domain,\n instance2.domain,\n ],\n \"dnsAuthorizations\": [\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 Name = \"dns-auth\",\n Description = \"The default dnss\",\n Domain = \"subdomain.hashicorptest.com\",\n });\n\n var instance2 = new Gcp.CertificateManager.DnsAuthorization(\"instance2\", new()\n {\n Name = \"dns-auth2\",\n Description = \"The default dnss\",\n Domain = \"subdomain2.hashicorptest.com\",\n });\n\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"dns-cert\",\n Description = \"The default cert\",\n Scope = \"EDGE_CACHE\",\n Labels = \n {\n { \"env\", \"test\" },\n },\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/v7/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\tName: pulumi.String(\"dns-auth\"),\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\tName: pulumi.String(\"dns-auth2\"),\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\tName: pulumi.String(\"dns-cert\"),\n\t\t\tDescription: pulumi.String(\"The default cert\"),\n\t\t\tScope: pulumi.String(\"EDGE_CACHE\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"test\"),\n\t\t\t},\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 .name(\"dns-auth\")\n .description(\"The default dnss\")\n .domain(\"subdomain.hashicorptest.com\")\n .build());\n\n var instance2 = new DnsAuthorization(\"instance2\", DnsAuthorizationArgs.builder()\n .name(\"dns-auth2\")\n .description(\"The default dnss\")\n .domain(\"subdomain2.hashicorptest.com\")\n .build());\n\n var default_ = new Certificate(\"default\", CertificateArgs.builder()\n .name(\"dns-cert\")\n .description(\"The default cert\")\n .scope(\"EDGE_CACHE\")\n .labels(Map.of(\"env\", \"test\"))\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 name: dns-cert\n description: The default cert\n scope: EDGE_CACHE\n labels:\n env: test\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 name: dns-auth\n description: The default dnss\n domain: subdomain.hashicorptest.com\n instance2:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n name: dns-auth2\n description: The default dnss\n domain: subdomain2.hashicorptest.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Certificate Manager Google Managed Certificate Issuance Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.certificateauthority.CaPool(\"pool\", {\n name: \"ca-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n});\nconst caAuthority = new gcp.certificateauthority.Authority(\"ca_authority\", {\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 name: \"issuance-config\",\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 name: \"issuance-config-cert\",\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 name=\"ca-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\")\nca_authority = gcp.certificateauthority.Authority(\"ca_authority\",\n location=\"us-central1\",\n pool=pool.name,\n certificate_authority_id=\"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 key_spec={\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 name=\"issuance-config\",\n description=\"sample description for the certificate issuanceConfigs\",\n certificate_authority_config={\n \"certificateAuthorityServiceConfig\": {\n \"caPool\": 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 name=\"issuance-config-cert\",\n description=\"The default cert\",\n scope=\"EDGE_CACHE\",\n managed={\n \"domains\": [\"terraform.subdomain1.com\"],\n \"issuanceConfig\": 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 Name = \"ca-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n });\n\n var caAuthority = new Gcp.CertificateAuthority.Authority(\"ca_authority\", 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 Name = \"issuance-config\",\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 =\n {\n caAuthority,\n },\n });\n\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"issuance-config-cert\",\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/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"ca-pool\"),\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, \"ca_authority\", \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// creating certificate_issuance_config to use it in the managed certificate\n\t\tissuanceconfig, err := certificatemanager.NewCertificateIssuanceConfig(ctx, \"issuanceconfig\", \u0026certificatemanager.CertificateIssuanceConfigArgs{\n\t\t\tName: pulumi.String(\"issuance-config\"),\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\tName: pulumi.String(\"issuance-config-cert\"),\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 .name(\"ca-pool\")\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 // creating certificate_issuance_config to use it in the managed certificate\n var issuanceconfig = new CertificateIssuanceConfig(\"issuanceconfig\", CertificateIssuanceConfigArgs.builder()\n .name(\"issuance-config\")\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 .name(\"issuance-config-cert\")\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 name: issuance-config-cert\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 name: issuance-config\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 name: ca-pool\n location: us-central1\n tier: ENTERPRISE\n caAuthority:\n type: gcp:certificateauthority:Authority\n name: ca_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 deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Certificate Manager Certificate Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.certificatemanager.DnsAuthorization(\"instance\", {\n name: \"dns-auth\",\n description: \"The default dnss\",\n domain: \"subdomain.hashicorptest.com\",\n});\nconst instance2 = new gcp.certificatemanager.DnsAuthorization(\"instance2\", {\n name: \"dns-auth2\",\n description: \"The default dnss\",\n domain: \"subdomain2.hashicorptest.com\",\n});\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"self-managed-cert\",\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 name=\"dns-auth\",\n description=\"The default dnss\",\n domain=\"subdomain.hashicorptest.com\")\ninstance2 = gcp.certificatemanager.DnsAuthorization(\"instance2\",\n name=\"dns-auth2\",\n description=\"The default dnss\",\n domain=\"subdomain2.hashicorptest.com\")\ndefault = gcp.certificatemanager.Certificate(\"default\",\n name=\"self-managed-cert\",\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```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 Name = \"dns-auth\",\n Description = \"The default dnss\",\n Domain = \"subdomain.hashicorptest.com\",\n });\n\n var instance2 = new Gcp.CertificateManager.DnsAuthorization(\"instance2\", new()\n {\n Name = \"dns-auth2\",\n Description = \"The default dnss\",\n Domain = \"subdomain2.hashicorptest.com\",\n });\n\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"self-managed-cert\",\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/v7/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\tName: pulumi.String(\"dns-auth\"),\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\tName: pulumi.String(\"dns-auth2\"),\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\tName: pulumi.String(\"self-managed-cert\"),\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 .name(\"dns-auth\")\n .description(\"The default dnss\")\n .domain(\"subdomain.hashicorptest.com\")\n .build());\n\n var instance2 = new DnsAuthorization(\"instance2\", DnsAuthorizationArgs.builder()\n .name(\"dns-auth2\")\n .description(\"The default dnss\")\n .domain(\"subdomain2.hashicorptest.com\")\n .build());\n\n var default_ = new Certificate(\"default\", CertificateArgs.builder()\n .name(\"self-managed-cert\")\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 name: self-managed-cert\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 name: dns-auth\n description: The default dnss\n domain: subdomain.hashicorptest.com\n instance2:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n name: dns-auth2\n description: The default dnss\n domain: subdomain2.hashicorptest.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Certificate Manager Self Managed Certificate Regional\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"self-managed-cert\",\n description: \"Regional cert\",\n location: \"us-central1\",\n selfManaged: {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n pemPrivateKey: std.file({\n input: \"test-fixtures/private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificatemanager.Certificate(\"default\",\n name=\"self-managed-cert\",\n description=\"Regional cert\",\n location=\"us-central1\",\n self_managed={\n \"pemCertificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n \"pemPrivateKey\": std.file(input=\"test-fixtures/private-key.pem\").result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"self-managed-cert\",\n Description = \"Regional cert\",\n Location = \"us-central1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n PemPrivateKey = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/private-key.pem\",\n\t\t}, nil)\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\tName: pulumi.String(\"self-managed-cert\"),\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: invokeFile.Result,\n\t\t\t\tPemPrivateKey: invokeFile1.Result,\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 .name(\"self-managed-cert\")\n .description(\"Regional cert\")\n .location(\"us-central1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .pemPrivateKey(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/private-key.pem\")\n .build()).result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:Certificate\n properties:\n name: self-managed-cert\n description: Regional cert\n location: us-central1\n selfManaged:\n pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n pemPrivateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/private-key.pem\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Certificate Manager Google Managed Certificate Issuance Config All Regions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.certificateauthority.CaPool(\"pool\", {\n name: \"ca-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n});\nconst caAuthority = new gcp.certificateauthority.Authority(\"ca_authority\", {\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 name: \"issuance-config\",\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 name: \"issuance-config-cert\",\n description: \"sample google managed all_regions certificate with issuance config for terraform\",\n scope: \"ALL_REGIONS\",\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 name=\"ca-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\")\nca_authority = gcp.certificateauthority.Authority(\"ca_authority\",\n location=\"us-central1\",\n pool=pool.name,\n certificate_authority_id=\"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 key_spec={\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 name=\"issuance-config\",\n description=\"sample description for the certificate issuanceConfigs\",\n certificate_authority_config={\n \"certificateAuthorityServiceConfig\": {\n \"caPool\": 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 name=\"issuance-config-cert\",\n description=\"sample google managed all_regions certificate with issuance config for terraform\",\n scope=\"ALL_REGIONS\",\n managed={\n \"domains\": [\"terraform.subdomain1.com\"],\n \"issuanceConfig\": 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 Name = \"ca-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n });\n\n var caAuthority = new Gcp.CertificateAuthority.Authority(\"ca_authority\", 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 Name = \"issuance-config\",\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 =\n {\n caAuthority,\n },\n });\n\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"issuance-config-cert\",\n Description = \"sample google managed all_regions certificate with issuance config for terraform\",\n Scope = \"ALL_REGIONS\",\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/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"ca-pool\"),\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, \"ca_authority\", \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// creating certificate_issuance_config to use it in the managed certificate\n\t\tissuanceconfig, err := certificatemanager.NewCertificateIssuanceConfig(ctx, \"issuanceconfig\", \u0026certificatemanager.CertificateIssuanceConfigArgs{\n\t\t\tName: pulumi.String(\"issuance-config\"),\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\tName: pulumi.String(\"issuance-config-cert\"),\n\t\t\tDescription: pulumi.String(\"sample google managed all_regions certificate with issuance config for terraform\"),\n\t\t\tScope: pulumi.String(\"ALL_REGIONS\"),\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 .name(\"ca-pool\")\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 // creating certificate_issuance_config to use it in the managed certificate\n var issuanceconfig = new CertificateIssuanceConfig(\"issuanceconfig\", CertificateIssuanceConfigArgs.builder()\n .name(\"issuance-config\")\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 .name(\"issuance-config-cert\")\n .description(\"sample google managed all_regions certificate with issuance config for terraform\")\n .scope(\"ALL_REGIONS\")\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 name: issuance-config-cert\n description: sample google managed all_regions certificate with issuance config for terraform\n scope: ALL_REGIONS\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 name: issuance-config\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 name: ca-pool\n location: us-central1\n tier: ENTERPRISE\n caAuthority:\n type: gcp:certificateauthority:Authority\n name: ca_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 deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Certificate Manager Google Managed Certificate Dns All Regions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.certificatemanager.DnsAuthorization(\"instance\", {\n name: \"dns-auth\",\n description: \"The default dnss\",\n domain: \"subdomain.hashicorptest.com\",\n});\nconst instance2 = new gcp.certificatemanager.DnsAuthorization(\"instance2\", {\n name: \"dns-auth2\",\n description: \"The default dnss\",\n domain: \"subdomain2.hashicorptest.com\",\n});\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"dns-cert\",\n description: \"The default cert\",\n scope: \"ALL_REGIONS\",\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 name=\"dns-auth\",\n description=\"The default dnss\",\n domain=\"subdomain.hashicorptest.com\")\ninstance2 = gcp.certificatemanager.DnsAuthorization(\"instance2\",\n name=\"dns-auth2\",\n description=\"The default dnss\",\n domain=\"subdomain2.hashicorptest.com\")\ndefault = gcp.certificatemanager.Certificate(\"default\",\n name=\"dns-cert\",\n description=\"The default cert\",\n scope=\"ALL_REGIONS\",\n managed={\n \"domains\": [\n instance.domain,\n instance2.domain,\n ],\n \"dnsAuthorizations\": [\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 Name = \"dns-auth\",\n Description = \"The default dnss\",\n Domain = \"subdomain.hashicorptest.com\",\n });\n\n var instance2 = new Gcp.CertificateManager.DnsAuthorization(\"instance2\", new()\n {\n Name = \"dns-auth2\",\n Description = \"The default dnss\",\n Domain = \"subdomain2.hashicorptest.com\",\n });\n\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"dns-cert\",\n Description = \"The default cert\",\n Scope = \"ALL_REGIONS\",\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/v7/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\tName: pulumi.String(\"dns-auth\"),\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\tName: pulumi.String(\"dns-auth2\"),\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\tName: pulumi.String(\"dns-cert\"),\n\t\t\tDescription: pulumi.String(\"The default cert\"),\n\t\t\tScope: pulumi.String(\"ALL_REGIONS\"),\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 .name(\"dns-auth\")\n .description(\"The default dnss\")\n .domain(\"subdomain.hashicorptest.com\")\n .build());\n\n var instance2 = new DnsAuthorization(\"instance2\", DnsAuthorizationArgs.builder()\n .name(\"dns-auth2\")\n .description(\"The default dnss\")\n .domain(\"subdomain2.hashicorptest.com\")\n .build());\n\n var default_ = new Certificate(\"default\", CertificateArgs.builder()\n .name(\"dns-cert\")\n .description(\"The default cert\")\n .scope(\"ALL_REGIONS\")\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 name: dns-cert\n description: The default cert\n scope: ALL_REGIONS\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 name: dns-auth\n description: The default dnss\n domain: subdomain.hashicorptest.com\n instance2:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n name: dns-auth2\n description: The default dnss\n domain: subdomain2.hashicorptest.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Certificate Manager Google Managed Regional Certificate Dns Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.certificatemanager.DnsAuthorization(\"instance\", {\n name: \"dns-auth\",\n location: \"us-central1\",\n description: \"The default dnss\",\n domain: \"subdomain.hashicorptest.com\",\n});\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"dns-cert\",\n description: \"regional managed certs\",\n location: \"us-central1\",\n managed: {\n domains: [instance.domain],\n dnsAuthorizations: [instance.id],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.certificatemanager.DnsAuthorization(\"instance\",\n name=\"dns-auth\",\n location=\"us-central1\",\n description=\"The default dnss\",\n domain=\"subdomain.hashicorptest.com\")\ndefault = gcp.certificatemanager.Certificate(\"default\",\n name=\"dns-cert\",\n description=\"regional managed certs\",\n location=\"us-central1\",\n managed={\n \"domains\": [instance.domain],\n \"dnsAuthorizations\": [instance.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 instance = new Gcp.CertificateManager.DnsAuthorization(\"instance\", new()\n {\n Name = \"dns-auth\",\n Location = \"us-central1\",\n Description = \"The default dnss\",\n Domain = \"subdomain.hashicorptest.com\",\n });\n\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"dns-cert\",\n Description = \"regional managed certs\",\n Location = \"us-central1\",\n Managed = new Gcp.CertificateManager.Inputs.CertificateManagedArgs\n {\n Domains = new[]\n {\n instance.Domain,\n },\n DnsAuthorizations = new[]\n {\n instance.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"dns-auth\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\t_, err = certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tName: pulumi.String(\"dns-cert\"),\n\t\t\tDescription: pulumi.String(\"regional managed certs\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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},\n\t\t\t\tDnsAuthorizations: pulumi.StringArray{\n\t\t\t\t\tinstance.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 .name(\"dns-auth\")\n .location(\"us-central1\")\n .description(\"The default dnss\")\n .domain(\"subdomain.hashicorptest.com\")\n .build());\n\n var default_ = new Certificate(\"default\", CertificateArgs.builder()\n .name(\"dns-cert\")\n .description(\"regional managed certs\")\n .location(\"us-central1\")\n .managed(CertificateManagedArgs.builder()\n .domains(instance.domain())\n .dnsAuthorizations(instance.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:Certificate\n properties:\n name: dns-cert\n description: regional managed certs\n location: us-central1\n managed:\n domains:\n - ${instance.domain}\n dnsAuthorizations:\n - ${instance.id}\n instance:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n name: dns-auth\n location: us-central1\n description: The default dnss\n domain: subdomain.hashicorptest.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCertificate can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/certificates/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Certificate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificatemanager/certificate:Certificate default projects/{{project}}/locations/{{location}}/certificates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificatemanager/certificate:Certificate default {{project}}/{{location}}/{{name}}\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\n\n## Example Usage\n\n### Certificate Manager Google Managed Certificate Dns\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.certificatemanager.DnsAuthorization(\"instance\", {\n name: \"dns-auth\",\n description: \"The default dnss\",\n domain: \"subdomain.hashicorptest.com\",\n});\nconst instance2 = new gcp.certificatemanager.DnsAuthorization(\"instance2\", {\n name: \"dns-auth2\",\n description: \"The default dnss\",\n domain: \"subdomain2.hashicorptest.com\",\n});\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"dns-cert\",\n description: \"The default cert\",\n scope: \"EDGE_CACHE\",\n labels: {\n env: \"test\",\n },\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 name=\"dns-auth\",\n description=\"The default dnss\",\n domain=\"subdomain.hashicorptest.com\")\ninstance2 = gcp.certificatemanager.DnsAuthorization(\"instance2\",\n name=\"dns-auth2\",\n description=\"The default dnss\",\n domain=\"subdomain2.hashicorptest.com\")\ndefault = gcp.certificatemanager.Certificate(\"default\",\n name=\"dns-cert\",\n description=\"The default cert\",\n scope=\"EDGE_CACHE\",\n labels={\n \"env\": \"test\",\n },\n managed={\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 Name = \"dns-auth\",\n Description = \"The default dnss\",\n Domain = \"subdomain.hashicorptest.com\",\n });\n\n var instance2 = new Gcp.CertificateManager.DnsAuthorization(\"instance2\", new()\n {\n Name = \"dns-auth2\",\n Description = \"The default dnss\",\n Domain = \"subdomain2.hashicorptest.com\",\n });\n\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"dns-cert\",\n Description = \"The default cert\",\n Scope = \"EDGE_CACHE\",\n Labels = \n {\n { \"env\", \"test\" },\n },\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/v7/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\tName: pulumi.String(\"dns-auth\"),\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\tName: pulumi.String(\"dns-auth2\"),\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\tName: pulumi.String(\"dns-cert\"),\n\t\t\tDescription: pulumi.String(\"The default cert\"),\n\t\t\tScope: pulumi.String(\"EDGE_CACHE\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"test\"),\n\t\t\t},\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 .name(\"dns-auth\")\n .description(\"The default dnss\")\n .domain(\"subdomain.hashicorptest.com\")\n .build());\n\n var instance2 = new DnsAuthorization(\"instance2\", DnsAuthorizationArgs.builder()\n .name(\"dns-auth2\")\n .description(\"The default dnss\")\n .domain(\"subdomain2.hashicorptest.com\")\n .build());\n\n var default_ = new Certificate(\"default\", CertificateArgs.builder()\n .name(\"dns-cert\")\n .description(\"The default cert\")\n .scope(\"EDGE_CACHE\")\n .labels(Map.of(\"env\", \"test\"))\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 name: dns-cert\n description: The default cert\n scope: EDGE_CACHE\n labels:\n env: test\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 name: dns-auth\n description: The default dnss\n domain: subdomain.hashicorptest.com\n instance2:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n name: dns-auth2\n description: The default dnss\n domain: subdomain2.hashicorptest.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Certificate Manager Google Managed Certificate Issuance Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.certificateauthority.CaPool(\"pool\", {\n name: \"ca-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n});\nconst caAuthority = new gcp.certificateauthority.Authority(\"ca_authority\", {\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 name: \"issuance-config\",\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 name: \"issuance-config-cert\",\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 name=\"ca-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\")\nca_authority = gcp.certificateauthority.Authority(\"ca_authority\",\n location=\"us-central1\",\n pool=pool.name,\n certificate_authority_id=\"ca-authority\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n key_spec={\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 name=\"issuance-config\",\n description=\"sample description for the certificate issuanceConfigs\",\n certificate_authority_config={\n \"certificate_authority_service_config\": {\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 name=\"issuance-config-cert\",\n description=\"The default cert\",\n scope=\"EDGE_CACHE\",\n managed={\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 Name = \"ca-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n });\n\n var caAuthority = new Gcp.CertificateAuthority.Authority(\"ca_authority\", 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 Name = \"issuance-config\",\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 =\n {\n caAuthority,\n },\n });\n\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"issuance-config-cert\",\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/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"ca-pool\"),\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, \"ca_authority\", \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// creating certificate_issuance_config to use it in the managed certificate\n\t\tissuanceconfig, err := certificatemanager.NewCertificateIssuanceConfig(ctx, \"issuanceconfig\", \u0026certificatemanager.CertificateIssuanceConfigArgs{\n\t\t\tName: pulumi.String(\"issuance-config\"),\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\tName: pulumi.String(\"issuance-config-cert\"),\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 .name(\"ca-pool\")\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 // creating certificate_issuance_config to use it in the managed certificate\n var issuanceconfig = new CertificateIssuanceConfig(\"issuanceconfig\", CertificateIssuanceConfigArgs.builder()\n .name(\"issuance-config\")\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 .name(\"issuance-config-cert\")\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 name: issuance-config-cert\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 name: issuance-config\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 name: ca-pool\n location: us-central1\n tier: ENTERPRISE\n caAuthority:\n type: gcp:certificateauthority:Authority\n name: ca_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 deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Certificate Manager Certificate Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.certificatemanager.DnsAuthorization(\"instance\", {\n name: \"dns-auth\",\n description: \"The default dnss\",\n domain: \"subdomain.hashicorptest.com\",\n});\nconst instance2 = new gcp.certificatemanager.DnsAuthorization(\"instance2\", {\n name: \"dns-auth2\",\n description: \"The default dnss\",\n domain: \"subdomain2.hashicorptest.com\",\n});\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"self-managed-cert\",\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 name=\"dns-auth\",\n description=\"The default dnss\",\n domain=\"subdomain.hashicorptest.com\")\ninstance2 = gcp.certificatemanager.DnsAuthorization(\"instance2\",\n name=\"dns-auth2\",\n description=\"The default dnss\",\n domain=\"subdomain2.hashicorptest.com\")\ndefault = gcp.certificatemanager.Certificate(\"default\",\n name=\"self-managed-cert\",\n description=\"Global cert\",\n scope=\"EDGE_CACHE\",\n managed={\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 Name = \"dns-auth\",\n Description = \"The default dnss\",\n Domain = \"subdomain.hashicorptest.com\",\n });\n\n var instance2 = new Gcp.CertificateManager.DnsAuthorization(\"instance2\", new()\n {\n Name = \"dns-auth2\",\n Description = \"The default dnss\",\n Domain = \"subdomain2.hashicorptest.com\",\n });\n\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"self-managed-cert\",\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/v7/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\tName: pulumi.String(\"dns-auth\"),\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\tName: pulumi.String(\"dns-auth2\"),\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\tName: pulumi.String(\"self-managed-cert\"),\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 .name(\"dns-auth\")\n .description(\"The default dnss\")\n .domain(\"subdomain.hashicorptest.com\")\n .build());\n\n var instance2 = new DnsAuthorization(\"instance2\", DnsAuthorizationArgs.builder()\n .name(\"dns-auth2\")\n .description(\"The default dnss\")\n .domain(\"subdomain2.hashicorptest.com\")\n .build());\n\n var default_ = new Certificate(\"default\", CertificateArgs.builder()\n .name(\"self-managed-cert\")\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 name: self-managed-cert\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 name: dns-auth\n description: The default dnss\n domain: subdomain.hashicorptest.com\n instance2:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n name: dns-auth2\n description: The default dnss\n domain: subdomain2.hashicorptest.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Certificate Manager Self Managed Certificate Regional\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"self-managed-cert\",\n description: \"Regional cert\",\n location: \"us-central1\",\n selfManaged: {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n pemPrivateKey: std.file({\n input: \"test-fixtures/private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificatemanager.Certificate(\"default\",\n name=\"self-managed-cert\",\n description=\"Regional cert\",\n location=\"us-central1\",\n self_managed={\n \"pem_certificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n \"pem_private_key\": std.file(input=\"test-fixtures/private-key.pem\").result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"self-managed-cert\",\n Description = \"Regional cert\",\n Location = \"us-central1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n PemPrivateKey = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/private-key.pem\",\n\t\t}, nil)\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\tName: pulumi.String(\"self-managed-cert\"),\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: pulumi.String(invokeFile.Result),\n\t\t\t\tPemPrivateKey: pulumi.String(invokeFile1.Result),\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 .name(\"self-managed-cert\")\n .description(\"Regional cert\")\n .location(\"us-central1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .pemPrivateKey(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/private-key.pem\")\n .build()).result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:Certificate\n properties:\n name: self-managed-cert\n description: Regional cert\n location: us-central1\n selfManaged:\n pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n pemPrivateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/private-key.pem\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Certificate Manager Google Managed Certificate Issuance Config All Regions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.certificateauthority.CaPool(\"pool\", {\n name: \"ca-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n});\nconst caAuthority = new gcp.certificateauthority.Authority(\"ca_authority\", {\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 name: \"issuance-config\",\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 name: \"issuance-config-cert\",\n description: \"sample google managed all_regions certificate with issuance config for terraform\",\n scope: \"ALL_REGIONS\",\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 name=\"ca-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\")\nca_authority = gcp.certificateauthority.Authority(\"ca_authority\",\n location=\"us-central1\",\n pool=pool.name,\n certificate_authority_id=\"ca-authority\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n key_spec={\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 name=\"issuance-config\",\n description=\"sample description for the certificate issuanceConfigs\",\n certificate_authority_config={\n \"certificate_authority_service_config\": {\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 name=\"issuance-config-cert\",\n description=\"sample google managed all_regions certificate with issuance config for terraform\",\n scope=\"ALL_REGIONS\",\n managed={\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 Name = \"ca-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n });\n\n var caAuthority = new Gcp.CertificateAuthority.Authority(\"ca_authority\", 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 Name = \"issuance-config\",\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 =\n {\n caAuthority,\n },\n });\n\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"issuance-config-cert\",\n Description = \"sample google managed all_regions certificate with issuance config for terraform\",\n Scope = \"ALL_REGIONS\",\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/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"ca-pool\"),\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, \"ca_authority\", \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// creating certificate_issuance_config to use it in the managed certificate\n\t\tissuanceconfig, err := certificatemanager.NewCertificateIssuanceConfig(ctx, \"issuanceconfig\", \u0026certificatemanager.CertificateIssuanceConfigArgs{\n\t\t\tName: pulumi.String(\"issuance-config\"),\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\tName: pulumi.String(\"issuance-config-cert\"),\n\t\t\tDescription: pulumi.String(\"sample google managed all_regions certificate with issuance config for terraform\"),\n\t\t\tScope: pulumi.String(\"ALL_REGIONS\"),\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 .name(\"ca-pool\")\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 // creating certificate_issuance_config to use it in the managed certificate\n var issuanceconfig = new CertificateIssuanceConfig(\"issuanceconfig\", CertificateIssuanceConfigArgs.builder()\n .name(\"issuance-config\")\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 .name(\"issuance-config-cert\")\n .description(\"sample google managed all_regions certificate with issuance config for terraform\")\n .scope(\"ALL_REGIONS\")\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 name: issuance-config-cert\n description: sample google managed all_regions certificate with issuance config for terraform\n scope: ALL_REGIONS\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 name: issuance-config\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 name: ca-pool\n location: us-central1\n tier: ENTERPRISE\n caAuthority:\n type: gcp:certificateauthority:Authority\n name: ca_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 deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Certificate Manager Google Managed Certificate Dns All Regions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.certificatemanager.DnsAuthorization(\"instance\", {\n name: \"dns-auth\",\n description: \"The default dnss\",\n domain: \"subdomain.hashicorptest.com\",\n});\nconst instance2 = new gcp.certificatemanager.DnsAuthorization(\"instance2\", {\n name: \"dns-auth2\",\n description: \"The default dnss\",\n domain: \"subdomain2.hashicorptest.com\",\n});\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"dns-cert\",\n description: \"The default cert\",\n scope: \"ALL_REGIONS\",\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 name=\"dns-auth\",\n description=\"The default dnss\",\n domain=\"subdomain.hashicorptest.com\")\ninstance2 = gcp.certificatemanager.DnsAuthorization(\"instance2\",\n name=\"dns-auth2\",\n description=\"The default dnss\",\n domain=\"subdomain2.hashicorptest.com\")\ndefault = gcp.certificatemanager.Certificate(\"default\",\n name=\"dns-cert\",\n description=\"The default cert\",\n scope=\"ALL_REGIONS\",\n managed={\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 Name = \"dns-auth\",\n Description = \"The default dnss\",\n Domain = \"subdomain.hashicorptest.com\",\n });\n\n var instance2 = new Gcp.CertificateManager.DnsAuthorization(\"instance2\", new()\n {\n Name = \"dns-auth2\",\n Description = \"The default dnss\",\n Domain = \"subdomain2.hashicorptest.com\",\n });\n\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"dns-cert\",\n Description = \"The default cert\",\n Scope = \"ALL_REGIONS\",\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/v7/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\tName: pulumi.String(\"dns-auth\"),\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\tName: pulumi.String(\"dns-auth2\"),\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\tName: pulumi.String(\"dns-cert\"),\n\t\t\tDescription: pulumi.String(\"The default cert\"),\n\t\t\tScope: pulumi.String(\"ALL_REGIONS\"),\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 .name(\"dns-auth\")\n .description(\"The default dnss\")\n .domain(\"subdomain.hashicorptest.com\")\n .build());\n\n var instance2 = new DnsAuthorization(\"instance2\", DnsAuthorizationArgs.builder()\n .name(\"dns-auth2\")\n .description(\"The default dnss\")\n .domain(\"subdomain2.hashicorptest.com\")\n .build());\n\n var default_ = new Certificate(\"default\", CertificateArgs.builder()\n .name(\"dns-cert\")\n .description(\"The default cert\")\n .scope(\"ALL_REGIONS\")\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 name: dns-cert\n description: The default cert\n scope: ALL_REGIONS\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 name: dns-auth\n description: The default dnss\n domain: subdomain.hashicorptest.com\n instance2:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n name: dns-auth2\n description: The default dnss\n domain: subdomain2.hashicorptest.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Certificate Manager Google Managed Regional Certificate Dns Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.certificatemanager.DnsAuthorization(\"instance\", {\n name: \"dns-auth\",\n location: \"us-central1\",\n description: \"The default dnss\",\n domain: \"subdomain.hashicorptest.com\",\n});\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"dns-cert\",\n description: \"regional managed certs\",\n location: \"us-central1\",\n managed: {\n domains: [instance.domain],\n dnsAuthorizations: [instance.id],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.certificatemanager.DnsAuthorization(\"instance\",\n name=\"dns-auth\",\n location=\"us-central1\",\n description=\"The default dnss\",\n domain=\"subdomain.hashicorptest.com\")\ndefault = gcp.certificatemanager.Certificate(\"default\",\n name=\"dns-cert\",\n description=\"regional managed certs\",\n location=\"us-central1\",\n managed={\n \"domains\": [instance.domain],\n \"dns_authorizations\": [instance.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 instance = new Gcp.CertificateManager.DnsAuthorization(\"instance\", new()\n {\n Name = \"dns-auth\",\n Location = \"us-central1\",\n Description = \"The default dnss\",\n Domain = \"subdomain.hashicorptest.com\",\n });\n\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"dns-cert\",\n Description = \"regional managed certs\",\n Location = \"us-central1\",\n Managed = new Gcp.CertificateManager.Inputs.CertificateManagedArgs\n {\n Domains = new[]\n {\n instance.Domain,\n },\n DnsAuthorizations = new[]\n {\n instance.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"dns-auth\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\t_, err = certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tName: pulumi.String(\"dns-cert\"),\n\t\t\tDescription: pulumi.String(\"regional managed certs\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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},\n\t\t\t\tDnsAuthorizations: pulumi.StringArray{\n\t\t\t\t\tinstance.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 .name(\"dns-auth\")\n .location(\"us-central1\")\n .description(\"The default dnss\")\n .domain(\"subdomain.hashicorptest.com\")\n .build());\n\n var default_ = new Certificate(\"default\", CertificateArgs.builder()\n .name(\"dns-cert\")\n .description(\"regional managed certs\")\n .location(\"us-central1\")\n .managed(CertificateManagedArgs.builder()\n .domains(instance.domain())\n .dnsAuthorizations(instance.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:Certificate\n properties:\n name: dns-cert\n description: regional managed certs\n location: us-central1\n managed:\n domains:\n - ${instance.domain}\n dnsAuthorizations:\n - ${instance.id}\n instance:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n name: dns-auth\n location: us-central1\n description: The default dnss\n domain: subdomain.hashicorptest.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCertificate can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/certificates/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Certificate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificatemanager/certificate:Certificate default projects/{{project}}/locations/{{location}}/certificates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificatemanager/certificate:Certificate default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificatemanager/certificate:Certificate default {{location}}/{{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -131045,7 +131045,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## Example Usage\n\n### Certificate Manager Certificate Issuance Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.certificateauthority.CaPool(\"pool\", {\n name: \"ca-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n});\nconst caAuthority = new gcp.certificateauthority.Authority(\"ca_authority\", {\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 name: \"issuance-config\",\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 name=\"ca-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\")\nca_authority = gcp.certificateauthority.Authority(\"ca_authority\",\n location=\"us-central1\",\n pool=pool.name,\n certificate_authority_id=\"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 key_spec={\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 name=\"issuance-config\",\n description=\"sample description for the certificate issuanceConfigs\",\n certificate_authority_config={\n \"certificateAuthorityServiceConfig\": {\n \"caPool\": 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 Name = \"ca-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n });\n\n var caAuthority = new Gcp.CertificateAuthority.Authority(\"ca_authority\", 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 Name = \"issuance-config\",\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 =\n {\n caAuthority,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"ca-pool\"),\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, \"ca_authority\", \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\tName: pulumi.String(\"issuance-config\"),\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 .name(\"ca-pool\")\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 .name(\"issuance-config\")\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 name: issuance-config\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 name: ca-pool\n location: us-central1\n tier: ENTERPRISE\n caAuthority:\n type: gcp:certificateauthority:Authority\n name: ca_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 deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCertificateIssuanceConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/certificateIssuanceConfigs/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, CertificateIssuanceConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificatemanager/certificateIssuanceConfig:CertificateIssuanceConfig default projects/{{project}}/locations/{{location}}/certificateIssuanceConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificatemanager/certificateIssuanceConfig:CertificateIssuanceConfig default {{project}}/{{location}}/{{name}}\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## Example Usage\n\n### Certificate Manager Certificate Issuance Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.certificateauthority.CaPool(\"pool\", {\n name: \"ca-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n});\nconst caAuthority = new gcp.certificateauthority.Authority(\"ca_authority\", {\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 name: \"issuance-config\",\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 name=\"ca-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\")\nca_authority = gcp.certificateauthority.Authority(\"ca_authority\",\n location=\"us-central1\",\n pool=pool.name,\n certificate_authority_id=\"ca-authority\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n key_spec={\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 name=\"issuance-config\",\n description=\"sample description for the certificate issuanceConfigs\",\n certificate_authority_config={\n \"certificate_authority_service_config\": {\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 Name = \"ca-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n });\n\n var caAuthority = new Gcp.CertificateAuthority.Authority(\"ca_authority\", 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 Name = \"issuance-config\",\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 =\n {\n caAuthority,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"ca-pool\"),\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, \"ca_authority\", \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\tName: pulumi.String(\"issuance-config\"),\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 .name(\"ca-pool\")\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 .name(\"issuance-config\")\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 name: issuance-config\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 name: ca-pool\n location: us-central1\n tier: ENTERPRISE\n caAuthority:\n type: gcp:certificateauthority:Authority\n name: ca_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 deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCertificateIssuanceConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/certificateIssuanceConfigs/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, CertificateIssuanceConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificatemanager/certificateIssuanceConfig:CertificateIssuanceConfig default projects/{{project}}/locations/{{location}}/certificateIssuanceConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificatemanager/certificateIssuanceConfig:CertificateIssuanceConfig default {{project}}/{{location}}/{{name}}\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", @@ -131400,7 +131400,7 @@ } }, "gcp:certificatemanager/certificateMapEntry:CertificateMapEntry": { - "description": "CertificateMapEntry is a list of certificate configurations,\nthat have been issued for a particular hostname\n\n\n\n## Example Usage\n\n### Certificate Manager Certificate Map Entry Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst certificateMap = new gcp.certificatemanager.CertificateMap(\"certificate_map\", {\n name: \"cert-map-entry\",\n description: \"My acceptance test certificate map\",\n labels: {\n terraform: \"true\",\n \"acc-test\": \"true\",\n },\n});\nconst instance = new gcp.certificatemanager.DnsAuthorization(\"instance\", {\n name: \"dns-auth\",\n description: \"The default dnss\",\n domain: \"subdomain.hashicorptest.com\",\n});\nconst instance2 = new gcp.certificatemanager.DnsAuthorization(\"instance2\", {\n name: \"dns-auth2\",\n description: \"The default dnss\",\n domain: \"subdomain2.hashicorptest.com\",\n});\nconst certificate = new gcp.certificatemanager.Certificate(\"certificate\", {\n name: \"cert-map-entry\",\n description: \"The default cert\",\n scope: \"DEFAULT\",\n managed: {\n domains: [\n instance.domain,\n instance2.domain,\n ],\n dnsAuthorizations: [\n instance.id,\n instance2.id,\n ],\n },\n});\nconst _default = new gcp.certificatemanager.CertificateMapEntry(\"default\", {\n name: \"cert-map-entry\",\n description: \"My acceptance test certificate map entry\",\n map: certificateMap.name,\n labels: {\n terraform: \"true\",\n \"acc-test\": \"true\",\n },\n certificates: [certificate.id],\n matcher: \"PRIMARY\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncertificate_map = gcp.certificatemanager.CertificateMap(\"certificate_map\",\n name=\"cert-map-entry\",\n description=\"My acceptance test certificate map\",\n labels={\n \"terraform\": \"true\",\n \"acc-test\": \"true\",\n })\ninstance = gcp.certificatemanager.DnsAuthorization(\"instance\",\n name=\"dns-auth\",\n description=\"The default dnss\",\n domain=\"subdomain.hashicorptest.com\")\ninstance2 = gcp.certificatemanager.DnsAuthorization(\"instance2\",\n name=\"dns-auth2\",\n description=\"The default dnss\",\n domain=\"subdomain2.hashicorptest.com\")\ncertificate = gcp.certificatemanager.Certificate(\"certificate\",\n name=\"cert-map-entry\",\n description=\"The default cert\",\n scope=\"DEFAULT\",\n managed={\n \"domains\": [\n instance.domain,\n instance2.domain,\n ],\n \"dnsAuthorizations\": [\n instance.id,\n instance2.id,\n ],\n })\ndefault = gcp.certificatemanager.CertificateMapEntry(\"default\",\n name=\"cert-map-entry\",\n description=\"My acceptance test certificate map entry\",\n map=certificate_map.name,\n labels={\n \"terraform\": \"true\",\n \"acc-test\": \"true\",\n },\n certificates=[certificate.id],\n matcher=\"PRIMARY\")\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 certificateMap = new Gcp.CertificateManager.CertificateMap(\"certificate_map\", new()\n {\n Name = \"cert-map-entry\",\n Description = \"My acceptance test certificate map\",\n Labels = \n {\n { \"terraform\", \"true\" },\n { \"acc-test\", \"true\" },\n },\n });\n\n var instance = new Gcp.CertificateManager.DnsAuthorization(\"instance\", new()\n {\n Name = \"dns-auth\",\n Description = \"The default dnss\",\n Domain = \"subdomain.hashicorptest.com\",\n });\n\n var instance2 = new Gcp.CertificateManager.DnsAuthorization(\"instance2\", new()\n {\n Name = \"dns-auth2\",\n Description = \"The default dnss\",\n Domain = \"subdomain2.hashicorptest.com\",\n });\n\n var certificate = new Gcp.CertificateManager.Certificate(\"certificate\", new()\n {\n Name = \"cert-map-entry\",\n Description = \"The default cert\",\n Scope = \"DEFAULT\",\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 var @default = new Gcp.CertificateManager.CertificateMapEntry(\"default\", new()\n {\n Name = \"cert-map-entry\",\n Description = \"My acceptance test certificate map entry\",\n Map = certificateMap.Name,\n Labels = \n {\n { \"terraform\", \"true\" },\n { \"acc-test\", \"true\" },\n },\n Certificates = new[]\n {\n certificate.Id,\n },\n Matcher = \"PRIMARY\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tcertificateMap, err := certificatemanager.NewCertificateMap(ctx, \"certificate_map\", \u0026certificatemanager.CertificateMapArgs{\n\t\t\tName: pulumi.String(\"cert-map-entry\"),\n\t\t\tDescription: pulumi.String(\"My acceptance test certificate map\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"terraform\": pulumi.String(\"true\"),\n\t\t\t\t\"acc-test\": pulumi.String(\"true\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := certificatemanager.NewDnsAuthorization(ctx, \"instance\", \u0026certificatemanager.DnsAuthorizationArgs{\n\t\t\tName: pulumi.String(\"dns-auth\"),\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\tName: pulumi.String(\"dns-auth2\"),\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\tcertificate, err := certificatemanager.NewCertificate(ctx, \"certificate\", \u0026certificatemanager.CertificateArgs{\n\t\t\tName: pulumi.String(\"cert-map-entry\"),\n\t\t\tDescription: pulumi.String(\"The default cert\"),\n\t\t\tScope: pulumi.String(\"DEFAULT\"),\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\t_, err = certificatemanager.NewCertificateMapEntry(ctx, \"default\", \u0026certificatemanager.CertificateMapEntryArgs{\n\t\t\tName: pulumi.String(\"cert-map-entry\"),\n\t\t\tDescription: pulumi.String(\"My acceptance test certificate map entry\"),\n\t\t\tMap: certificateMap.Name,\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"terraform\": pulumi.String(\"true\"),\n\t\t\t\t\"acc-test\": pulumi.String(\"true\"),\n\t\t\t},\n\t\t\tCertificates: pulumi.StringArray{\n\t\t\t\tcertificate.ID(),\n\t\t\t},\n\t\t\tMatcher: pulumi.String(\"PRIMARY\"),\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.CertificateMap;\nimport com.pulumi.gcp.certificatemanager.CertificateMapArgs;\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 com.pulumi.gcp.certificatemanager.CertificateMapEntry;\nimport com.pulumi.gcp.certificatemanager.CertificateMapEntryArgs;\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 certificateMap = new CertificateMap(\"certificateMap\", CertificateMapArgs.builder()\n .name(\"cert-map-entry\")\n .description(\"My acceptance test certificate map\")\n .labels(Map.ofEntries(\n Map.entry(\"terraform\", true),\n Map.entry(\"acc-test\", true)\n ))\n .build());\n\n var instance = new DnsAuthorization(\"instance\", DnsAuthorizationArgs.builder()\n .name(\"dns-auth\")\n .description(\"The default dnss\")\n .domain(\"subdomain.hashicorptest.com\")\n .build());\n\n var instance2 = new DnsAuthorization(\"instance2\", DnsAuthorizationArgs.builder()\n .name(\"dns-auth2\")\n .description(\"The default dnss\")\n .domain(\"subdomain2.hashicorptest.com\")\n .build());\n\n var certificate = new Certificate(\"certificate\", CertificateArgs.builder()\n .name(\"cert-map-entry\")\n .description(\"The default cert\")\n .scope(\"DEFAULT\")\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 var default_ = new CertificateMapEntry(\"default\", CertificateMapEntryArgs.builder()\n .name(\"cert-map-entry\")\n .description(\"My acceptance test certificate map entry\")\n .map(certificateMap.name())\n .labels(Map.ofEntries(\n Map.entry(\"terraform\", true),\n Map.entry(\"acc-test\", true)\n ))\n .certificates(certificate.id())\n .matcher(\"PRIMARY\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n certificateMap:\n type: gcp:certificatemanager:CertificateMap\n name: certificate_map\n properties:\n name: cert-map-entry\n description: My acceptance test certificate map\n labels:\n terraform: true\n acc-test: true\n default:\n type: gcp:certificatemanager:CertificateMapEntry\n properties:\n name: cert-map-entry\n description: My acceptance test certificate map entry\n map: ${certificateMap.name}\n labels:\n terraform: true\n acc-test: true\n certificates:\n - ${certificate.id}\n matcher: PRIMARY\n certificate:\n type: gcp:certificatemanager:Certificate\n properties:\n name: cert-map-entry\n description: The default cert\n scope: DEFAULT\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 name: dns-auth\n description: The default dnss\n domain: subdomain.hashicorptest.com\n instance2:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n name: dns-auth2\n description: The default dnss\n domain: subdomain2.hashicorptest.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCertificateMapEntry can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/certificateMaps/{{map}}/certificateMapEntries/{{name}}`\n\n* `{{project}}/{{map}}/{{name}}`\n\n* `{{map}}/{{name}}`\n\nWhen using the `pulumi import` command, CertificateMapEntry can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificatemanager/certificateMapEntry:CertificateMapEntry default projects/{{project}}/locations/global/certificateMaps/{{map}}/certificateMapEntries/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificatemanager/certificateMapEntry:CertificateMapEntry default {{project}}/{{map}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificatemanager/certificateMapEntry:CertificateMapEntry default {{map}}/{{name}}\n```\n\n", + "description": "CertificateMapEntry is a list of certificate configurations,\nthat have been issued for a particular hostname\n\n\n\n## Example Usage\n\n### Certificate Manager Certificate Map Entry Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst certificateMap = new gcp.certificatemanager.CertificateMap(\"certificate_map\", {\n name: \"cert-map-entry\",\n description: \"My acceptance test certificate map\",\n labels: {\n terraform: \"true\",\n \"acc-test\": \"true\",\n },\n});\nconst instance = new gcp.certificatemanager.DnsAuthorization(\"instance\", {\n name: \"dns-auth\",\n description: \"The default dnss\",\n domain: \"subdomain.hashicorptest.com\",\n});\nconst instance2 = new gcp.certificatemanager.DnsAuthorization(\"instance2\", {\n name: \"dns-auth2\",\n description: \"The default dnss\",\n domain: \"subdomain2.hashicorptest.com\",\n});\nconst certificate = new gcp.certificatemanager.Certificate(\"certificate\", {\n name: \"cert-map-entry\",\n description: \"The default cert\",\n scope: \"DEFAULT\",\n managed: {\n domains: [\n instance.domain,\n instance2.domain,\n ],\n dnsAuthorizations: [\n instance.id,\n instance2.id,\n ],\n },\n});\nconst _default = new gcp.certificatemanager.CertificateMapEntry(\"default\", {\n name: \"cert-map-entry\",\n description: \"My acceptance test certificate map entry\",\n map: certificateMap.name,\n labels: {\n terraform: \"true\",\n \"acc-test\": \"true\",\n },\n certificates: [certificate.id],\n matcher: \"PRIMARY\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncertificate_map = gcp.certificatemanager.CertificateMap(\"certificate_map\",\n name=\"cert-map-entry\",\n description=\"My acceptance test certificate map\",\n labels={\n \"terraform\": \"true\",\n \"acc-test\": \"true\",\n })\ninstance = gcp.certificatemanager.DnsAuthorization(\"instance\",\n name=\"dns-auth\",\n description=\"The default dnss\",\n domain=\"subdomain.hashicorptest.com\")\ninstance2 = gcp.certificatemanager.DnsAuthorization(\"instance2\",\n name=\"dns-auth2\",\n description=\"The default dnss\",\n domain=\"subdomain2.hashicorptest.com\")\ncertificate = gcp.certificatemanager.Certificate(\"certificate\",\n name=\"cert-map-entry\",\n description=\"The default cert\",\n scope=\"DEFAULT\",\n managed={\n \"domains\": [\n instance.domain,\n instance2.domain,\n ],\n \"dns_authorizations\": [\n instance.id,\n instance2.id,\n ],\n })\ndefault = gcp.certificatemanager.CertificateMapEntry(\"default\",\n name=\"cert-map-entry\",\n description=\"My acceptance test certificate map entry\",\n map=certificate_map.name,\n labels={\n \"terraform\": \"true\",\n \"acc-test\": \"true\",\n },\n certificates=[certificate.id],\n matcher=\"PRIMARY\")\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 certificateMap = new Gcp.CertificateManager.CertificateMap(\"certificate_map\", new()\n {\n Name = \"cert-map-entry\",\n Description = \"My acceptance test certificate map\",\n Labels = \n {\n { \"terraform\", \"true\" },\n { \"acc-test\", \"true\" },\n },\n });\n\n var instance = new Gcp.CertificateManager.DnsAuthorization(\"instance\", new()\n {\n Name = \"dns-auth\",\n Description = \"The default dnss\",\n Domain = \"subdomain.hashicorptest.com\",\n });\n\n var instance2 = new Gcp.CertificateManager.DnsAuthorization(\"instance2\", new()\n {\n Name = \"dns-auth2\",\n Description = \"The default dnss\",\n Domain = \"subdomain2.hashicorptest.com\",\n });\n\n var certificate = new Gcp.CertificateManager.Certificate(\"certificate\", new()\n {\n Name = \"cert-map-entry\",\n Description = \"The default cert\",\n Scope = \"DEFAULT\",\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 var @default = new Gcp.CertificateManager.CertificateMapEntry(\"default\", new()\n {\n Name = \"cert-map-entry\",\n Description = \"My acceptance test certificate map entry\",\n Map = certificateMap.Name,\n Labels = \n {\n { \"terraform\", \"true\" },\n { \"acc-test\", \"true\" },\n },\n Certificates = new[]\n {\n certificate.Id,\n },\n Matcher = \"PRIMARY\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tcertificateMap, err := certificatemanager.NewCertificateMap(ctx, \"certificate_map\", \u0026certificatemanager.CertificateMapArgs{\n\t\t\tName: pulumi.String(\"cert-map-entry\"),\n\t\t\tDescription: pulumi.String(\"My acceptance test certificate map\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"terraform\": pulumi.String(\"true\"),\n\t\t\t\t\"acc-test\": pulumi.String(\"true\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := certificatemanager.NewDnsAuthorization(ctx, \"instance\", \u0026certificatemanager.DnsAuthorizationArgs{\n\t\t\tName: pulumi.String(\"dns-auth\"),\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\tName: pulumi.String(\"dns-auth2\"),\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\tcertificate, err := certificatemanager.NewCertificate(ctx, \"certificate\", \u0026certificatemanager.CertificateArgs{\n\t\t\tName: pulumi.String(\"cert-map-entry\"),\n\t\t\tDescription: pulumi.String(\"The default cert\"),\n\t\t\tScope: pulumi.String(\"DEFAULT\"),\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\t_, err = certificatemanager.NewCertificateMapEntry(ctx, \"default\", \u0026certificatemanager.CertificateMapEntryArgs{\n\t\t\tName: pulumi.String(\"cert-map-entry\"),\n\t\t\tDescription: pulumi.String(\"My acceptance test certificate map entry\"),\n\t\t\tMap: certificateMap.Name,\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"terraform\": pulumi.String(\"true\"),\n\t\t\t\t\"acc-test\": pulumi.String(\"true\"),\n\t\t\t},\n\t\t\tCertificates: pulumi.StringArray{\n\t\t\t\tcertificate.ID(),\n\t\t\t},\n\t\t\tMatcher: pulumi.String(\"PRIMARY\"),\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.CertificateMap;\nimport com.pulumi.gcp.certificatemanager.CertificateMapArgs;\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 com.pulumi.gcp.certificatemanager.CertificateMapEntry;\nimport com.pulumi.gcp.certificatemanager.CertificateMapEntryArgs;\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 certificateMap = new CertificateMap(\"certificateMap\", CertificateMapArgs.builder()\n .name(\"cert-map-entry\")\n .description(\"My acceptance test certificate map\")\n .labels(Map.ofEntries(\n Map.entry(\"terraform\", true),\n Map.entry(\"acc-test\", true)\n ))\n .build());\n\n var instance = new DnsAuthorization(\"instance\", DnsAuthorizationArgs.builder()\n .name(\"dns-auth\")\n .description(\"The default dnss\")\n .domain(\"subdomain.hashicorptest.com\")\n .build());\n\n var instance2 = new DnsAuthorization(\"instance2\", DnsAuthorizationArgs.builder()\n .name(\"dns-auth2\")\n .description(\"The default dnss\")\n .domain(\"subdomain2.hashicorptest.com\")\n .build());\n\n var certificate = new Certificate(\"certificate\", CertificateArgs.builder()\n .name(\"cert-map-entry\")\n .description(\"The default cert\")\n .scope(\"DEFAULT\")\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 var default_ = new CertificateMapEntry(\"default\", CertificateMapEntryArgs.builder()\n .name(\"cert-map-entry\")\n .description(\"My acceptance test certificate map entry\")\n .map(certificateMap.name())\n .labels(Map.ofEntries(\n Map.entry(\"terraform\", true),\n Map.entry(\"acc-test\", true)\n ))\n .certificates(certificate.id())\n .matcher(\"PRIMARY\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n certificateMap:\n type: gcp:certificatemanager:CertificateMap\n name: certificate_map\n properties:\n name: cert-map-entry\n description: My acceptance test certificate map\n labels:\n terraform: true\n acc-test: true\n default:\n type: gcp:certificatemanager:CertificateMapEntry\n properties:\n name: cert-map-entry\n description: My acceptance test certificate map entry\n map: ${certificateMap.name}\n labels:\n terraform: true\n acc-test: true\n certificates:\n - ${certificate.id}\n matcher: PRIMARY\n certificate:\n type: gcp:certificatemanager:Certificate\n properties:\n name: cert-map-entry\n description: The default cert\n scope: DEFAULT\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 name: dns-auth\n description: The default dnss\n domain: subdomain.hashicorptest.com\n instance2:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n name: dns-auth2\n description: The default dnss\n domain: subdomain2.hashicorptest.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCertificateMapEntry can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/certificateMaps/{{map}}/certificateMapEntries/{{name}}`\n\n* `{{project}}/{{map}}/{{name}}`\n\n* `{{map}}/{{name}}`\n\nWhen using the `pulumi import` command, CertificateMapEntry can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificatemanager/certificateMapEntry:CertificateMapEntry default projects/{{project}}/locations/global/certificateMaps/{{map}}/certificateMapEntries/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificatemanager/certificateMapEntry:CertificateMapEntry default {{project}}/{{map}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificatemanager/certificateMapEntry:CertificateMapEntry default {{map}}/{{name}}\n```\n\n", "properties": { "certificates": { "type": "array", @@ -131782,7 +131782,7 @@ } }, "gcp:certificatemanager/trustConfig:TrustConfig": { - "description": "TrustConfig represents a resource that represents your Public Key Infrastructure (PKI) configuration in Certificate Manager for use in mutual TLS authentication scenarios.\n\n\nTo get more information about TrustConfig, see:\n\n* [API documentation](https://cloud.google.com/certificate-manager/docs/reference/certificate-manager/rest/v1/projects.locations.trustConfigs/create)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/certificate-manager/docs)\n\n\n\n## Example Usage\n\n### Certificate Manager Trust Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificatemanager.TrustConfig(\"default\", {\n name: \"trust-config\",\n description: \"sample description for the trust config\",\n location: \"us-central1\",\n trustStores: [{\n trustAnchors: [{\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n intermediateCas: [{\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n }],\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificatemanager.TrustConfig(\"default\",\n name=\"trust-config\",\n description=\"sample description for the trust config\",\n location=\"us-central1\",\n trust_stores=[{\n \"trustAnchors\": [{\n \"pemCertificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n }],\n \"intermediateCas\": [{\n \"pemCertificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n }],\n }],\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Name = \"trust-config\",\n Description = \"sample description for the trust config\",\n Location = \"us-central1\",\n TrustStores = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreArgs\n {\n TrustAnchors = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreTrustAnchorArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n IntermediateCas = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreIntermediateCaArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n },\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/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tName: pulumi.String(\"trust-config\"),\n\t\t\tDescription: pulumi.String(\"sample description for the trust config\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTrustStores: certificatemanager.TrustConfigTrustStoreArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreArgs{\n\t\t\t\t\tTrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{\n\t\t\t\t\t\t\tPemCertificate: invokeFile.Result,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{\n\t\t\t\t\t\t\tPemCertificate: invokeFile1.Result,\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\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.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigTrustStoreArgs;\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 TrustConfig(\"default\", TrustConfigArgs.builder()\n .name(\"trust-config\")\n .description(\"sample description for the trust config\")\n .location(\"us-central1\")\n .trustStores(TrustConfigTrustStoreArgs.builder()\n .trustAnchors(TrustConfigTrustStoreTrustAnchorArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .build())\n .intermediateCas(TrustConfigTrustStoreIntermediateCaArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:TrustConfig\n properties:\n name: trust-config\n description: sample description for the trust config\n location: us-central1\n trustStores:\n - trustAnchors:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n intermediateCas:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Certificate Manager Trust Config Allowlisted Certificates\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificatemanager.TrustConfig(\"default\", {\n name: \"trust-config\",\n description: \"A sample trust config resource with allowlisted certificates\",\n location: \"global\",\n allowlistedCertificates: [\n {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n {\n pemCertificate: std.file({\n input: \"test-fixtures/cert2.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n ],\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificatemanager.TrustConfig(\"default\",\n name=\"trust-config\",\n description=\"A sample trust config resource with allowlisted certificates\",\n location=\"global\",\n allowlisted_certificates=[\n {\n \"pemCertificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n },\n {\n \"pemCertificate\": std.file(input=\"test-fixtures/cert2.pem\").result,\n },\n ],\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Name = \"trust-config\",\n Description = \"A sample trust config resource with allowlisted certificates\",\n Location = \"global\",\n AllowlistedCertificates = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigAllowlistedCertificateArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n new Gcp.CertificateManager.Inputs.TrustConfigAllowlistedCertificateArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert2.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\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/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert2.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tName: pulumi.String(\"trust-config\"),\n\t\t\tDescription: pulumi.String(\"A sample trust config resource with allowlisted certificates\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tAllowlistedCertificates: certificatemanager.TrustConfigAllowlistedCertificateArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigAllowlistedCertificateArgs{\n\t\t\t\t\tPemCertificate: invokeFile.Result,\n\t\t\t\t},\n\t\t\t\t\u0026certificatemanager.TrustConfigAllowlistedCertificateArgs{\n\t\t\t\t\tPemCertificate: invokeFile1.Result,\n\t\t\t\t},\n\t\t\t},\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.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigAllowlistedCertificateArgs;\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 TrustConfig(\"default\", TrustConfigArgs.builder()\n .name(\"trust-config\")\n .description(\"A sample trust config resource with allowlisted certificates\")\n .location(\"global\")\n .allowlistedCertificates( \n TrustConfigAllowlistedCertificateArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .build(),\n TrustConfigAllowlistedCertificateArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert2.pem\")\n .build()).result())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:TrustConfig\n properties:\n name: trust-config\n description: A sample trust config resource with allowlisted certificates\n location: global\n allowlistedCertificates:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert2.pem\n Return: result\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTrustConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/trustConfigs/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, TrustConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificatemanager/trustConfig:TrustConfig default projects/{{project}}/locations/{{location}}/trustConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificatemanager/trustConfig:TrustConfig default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificatemanager/trustConfig:TrustConfig default {{location}}/{{name}}\n```\n\n", + "description": "TrustConfig represents a resource that represents your Public Key Infrastructure (PKI) configuration in Certificate Manager for use in mutual TLS authentication scenarios.\n\n\nTo get more information about TrustConfig, see:\n\n* [API documentation](https://cloud.google.com/certificate-manager/docs/reference/certificate-manager/rest/v1/projects.locations.trustConfigs/create)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/certificate-manager/docs)\n\n\n\n## Example Usage\n\n### Certificate Manager Trust Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificatemanager.TrustConfig(\"default\", {\n name: \"trust-config\",\n description: \"sample description for the trust config\",\n location: \"us-central1\",\n trustStores: [{\n trustAnchors: [{\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n intermediateCas: [{\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n }],\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificatemanager.TrustConfig(\"default\",\n name=\"trust-config\",\n description=\"sample description for the trust config\",\n location=\"us-central1\",\n trust_stores=[{\n \"trust_anchors\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n }],\n \"intermediate_cas\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n }],\n }],\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Name = \"trust-config\",\n Description = \"sample description for the trust config\",\n Location = \"us-central1\",\n TrustStores = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreArgs\n {\n TrustAnchors = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreTrustAnchorArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n IntermediateCas = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreIntermediateCaArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n },\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/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tName: pulumi.String(\"trust-config\"),\n\t\t\tDescription: pulumi.String(\"sample description for the trust config\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTrustStores: certificatemanager.TrustConfigTrustStoreArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreArgs{\n\t\t\t\t\tTrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile1.Result),\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\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.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigTrustStoreArgs;\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 TrustConfig(\"default\", TrustConfigArgs.builder()\n .name(\"trust-config\")\n .description(\"sample description for the trust config\")\n .location(\"us-central1\")\n .trustStores(TrustConfigTrustStoreArgs.builder()\n .trustAnchors(TrustConfigTrustStoreTrustAnchorArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .build())\n .intermediateCas(TrustConfigTrustStoreIntermediateCaArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:TrustConfig\n properties:\n name: trust-config\n description: sample description for the trust config\n location: us-central1\n trustStores:\n - trustAnchors:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n intermediateCas:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Certificate Manager Trust Config Allowlisted Certificates\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificatemanager.TrustConfig(\"default\", {\n name: \"trust-config\",\n description: \"A sample trust config resource with allowlisted certificates\",\n location: \"global\",\n allowlistedCertificates: [\n {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n {\n pemCertificate: std.file({\n input: \"test-fixtures/cert2.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n ],\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificatemanager.TrustConfig(\"default\",\n name=\"trust-config\",\n description=\"A sample trust config resource with allowlisted certificates\",\n location=\"global\",\n allowlisted_certificates=[\n {\n \"pem_certificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n },\n {\n \"pem_certificate\": std.file(input=\"test-fixtures/cert2.pem\").result,\n },\n ],\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Name = \"trust-config\",\n Description = \"A sample trust config resource with allowlisted certificates\",\n Location = \"global\",\n AllowlistedCertificates = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigAllowlistedCertificateArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n new Gcp.CertificateManager.Inputs.TrustConfigAllowlistedCertificateArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert2.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\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/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert2.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tName: pulumi.String(\"trust-config\"),\n\t\t\tDescription: pulumi.String(\"A sample trust config resource with allowlisted certificates\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tAllowlistedCertificates: certificatemanager.TrustConfigAllowlistedCertificateArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigAllowlistedCertificateArgs{\n\t\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\t},\n\t\t\t\t\u0026certificatemanager.TrustConfigAllowlistedCertificateArgs{\n\t\t\t\t\tPemCertificate: pulumi.String(invokeFile1.Result),\n\t\t\t\t},\n\t\t\t},\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.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigAllowlistedCertificateArgs;\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 TrustConfig(\"default\", TrustConfigArgs.builder()\n .name(\"trust-config\")\n .description(\"A sample trust config resource with allowlisted certificates\")\n .location(\"global\")\n .allowlistedCertificates( \n TrustConfigAllowlistedCertificateArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .build(),\n TrustConfigAllowlistedCertificateArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert2.pem\")\n .build()).result())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:TrustConfig\n properties:\n name: trust-config\n description: A sample trust config resource with allowlisted certificates\n location: global\n allowlistedCertificates:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert2.pem\n Return: result\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTrustConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/trustConfigs/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, TrustConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificatemanager/trustConfig:TrustConfig default projects/{{project}}/locations/{{location}}/trustConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificatemanager/trustConfig:TrustConfig default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificatemanager/trustConfig:TrustConfig default {{location}}/{{name}}\n```\n\n", "properties": { "allowlistedCertificates": { "type": "array", @@ -131972,7 +131972,7 @@ } }, "gcp:cloudasset/folderFeed:FolderFeed": { - "description": "Describes a Cloud Asset Inventory feed used to to listen to asset updates.\n\n\nTo get more information about FolderFeed, see:\n\n* [API documentation](https://cloud.google.com/asset-inventory/docs/reference/rest/)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/asset-inventory/docs)\n\n## Example Usage\n\n### Cloud Asset Folder Feed\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// The topic where the resource change notifications will be sent.\nconst feedOutput = new gcp.pubsub.Topic(\"feed_output\", {\n project: \"my-project-name\",\n name: \"network-updates\",\n});\n// The folder that will be monitored for resource updates.\nconst myFolder = new gcp.organizations.Folder(\"my_folder\", {\n displayName: \"Networking\",\n parent: \"organizations/123456789\",\n});\n// Create a feed that sends notifications about network resource updates under a\n// particular folder.\nconst folderFeed = new gcp.cloudasset.FolderFeed(\"folder_feed\", {\n billingProject: \"my-project-name\",\n folder: myFolder.folderId,\n feedId: \"network-updates\",\n contentType: \"RESOURCE\",\n assetTypes: [\n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\",\n ],\n feedOutputConfig: {\n pubsubDestination: {\n topic: feedOutput.id,\n },\n },\n condition: {\n expression: `!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n`,\n title: \"created\",\n description: \"Send notifications on creation events\",\n },\n});\n// Find the project number of the project whose identity will be used for sending\n// the asset change notifications.\nconst project = gcp.organizations.getProject({\n projectId: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# The topic where the resource change notifications will be sent.\nfeed_output = gcp.pubsub.Topic(\"feed_output\",\n project=\"my-project-name\",\n name=\"network-updates\")\n# The folder that will be monitored for resource updates.\nmy_folder = gcp.organizations.Folder(\"my_folder\",\n display_name=\"Networking\",\n parent=\"organizations/123456789\")\n# Create a feed that sends notifications about network resource updates under a\n# particular folder.\nfolder_feed = gcp.cloudasset.FolderFeed(\"folder_feed\",\n billing_project=\"my-project-name\",\n folder=my_folder.folder_id,\n feed_id=\"network-updates\",\n content_type=\"RESOURCE\",\n asset_types=[\n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\",\n ],\n feed_output_config={\n \"pubsubDestination\": {\n \"topic\": feed_output.id,\n },\n },\n condition={\n \"expression\": \"\"\"!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n\"\"\",\n \"title\": \"created\",\n \"description\": \"Send notifications on creation events\",\n })\n# Find the project number of the project whose identity will be used for sending\n# the asset change notifications.\nproject = gcp.organizations.get_project(project_id=\"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 // The topic where the resource change notifications will be sent.\n var feedOutput = new Gcp.PubSub.Topic(\"feed_output\", new()\n {\n Project = \"my-project-name\",\n Name = \"network-updates\",\n });\n\n // The folder that will be monitored for resource updates.\n var myFolder = new Gcp.Organizations.Folder(\"my_folder\", new()\n {\n DisplayName = \"Networking\",\n Parent = \"organizations/123456789\",\n });\n\n // Create a feed that sends notifications about network resource updates under a\n // particular folder.\n var folderFeed = new Gcp.CloudAsset.FolderFeed(\"folder_feed\", new()\n {\n BillingProject = \"my-project-name\",\n Folder = myFolder.FolderId,\n FeedId = \"network-updates\",\n ContentType = \"RESOURCE\",\n AssetTypes = new[]\n {\n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\",\n },\n FeedOutputConfig = new Gcp.CloudAsset.Inputs.FolderFeedFeedOutputConfigArgs\n {\n PubsubDestination = new Gcp.CloudAsset.Inputs.FolderFeedFeedOutputConfigPubsubDestinationArgs\n {\n Topic = feedOutput.Id,\n },\n },\n Condition = new Gcp.CloudAsset.Inputs.FolderFeedConditionArgs\n {\n Expression = @\"!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n\",\n Title = \"created\",\n Description = \"Send notifications on creation events\",\n },\n });\n\n // Find the project number of the project whose identity will be used for sending\n // the asset change notifications.\n var project = Gcp.Organizations.GetProject.Invoke(new()\n {\n ProjectId = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudasset\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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// The topic where the resource change notifications will be sent.\n\t\tfeedOutput, err := pubsub.NewTopic(ctx, \"feed_output\", \u0026pubsub.TopicArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"network-updates\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// The folder that will be monitored for resource updates.\n\t\tmyFolder, err := organizations.NewFolder(ctx, \"my_folder\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"Networking\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a feed that sends notifications about network resource updates under a\n\t\t// particular folder.\n\t\t_, err = cloudasset.NewFolderFeed(ctx, \"folder_feed\", \u0026cloudasset.FolderFeedArgs{\n\t\t\tBillingProject: pulumi.String(\"my-project-name\"),\n\t\t\tFolder: myFolder.FolderId,\n\t\t\tFeedId: pulumi.String(\"network-updates\"),\n\t\t\tContentType: pulumi.String(\"RESOURCE\"),\n\t\t\tAssetTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"compute.googleapis.com/Subnetwork\"),\n\t\t\t\tpulumi.String(\"compute.googleapis.com/Network\"),\n\t\t\t},\n\t\t\tFeedOutputConfig: \u0026cloudasset.FolderFeedFeedOutputConfigArgs{\n\t\t\t\tPubsubDestination: \u0026cloudasset.FolderFeedFeedOutputConfigPubsubDestinationArgs{\n\t\t\t\t\tTopic: feedOutput.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCondition: \u0026cloudasset.FolderFeedConditionArgs{\n\t\t\t\tExpression: pulumi.String(\"!temporal_asset.deleted \u0026\u0026\\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\\n\"),\n\t\t\t\tTitle: pulumi.String(\"created\"),\n\t\t\t\tDescription: pulumi.String(\"Send notifications on creation events\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Find the project number of the project whose identity will be used for sending\n\t\t// the asset change notifications.\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{\n\t\t\tProjectId: pulumi.StringRef(\"my-project-name\"),\n\t\t}, 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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.cloudasset.FolderFeed;\nimport com.pulumi.gcp.cloudasset.FolderFeedArgs;\nimport com.pulumi.gcp.cloudasset.inputs.FolderFeedFeedOutputConfigArgs;\nimport com.pulumi.gcp.cloudasset.inputs.FolderFeedFeedOutputConfigPubsubDestinationArgs;\nimport com.pulumi.gcp.cloudasset.inputs.FolderFeedConditionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 // The topic where the resource change notifications will be sent.\n var feedOutput = new Topic(\"feedOutput\", TopicArgs.builder()\n .project(\"my-project-name\")\n .name(\"network-updates\")\n .build());\n\n // The folder that will be monitored for resource updates.\n var myFolder = new Folder(\"myFolder\", FolderArgs.builder()\n .displayName(\"Networking\")\n .parent(\"organizations/123456789\")\n .build());\n\n // Create a feed that sends notifications about network resource updates under a\n // particular folder.\n var folderFeed = new FolderFeed(\"folderFeed\", FolderFeedArgs.builder()\n .billingProject(\"my-project-name\")\n .folder(myFolder.folderId())\n .feedId(\"network-updates\")\n .contentType(\"RESOURCE\")\n .assetTypes( \n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\")\n .feedOutputConfig(FolderFeedFeedOutputConfigArgs.builder()\n .pubsubDestination(FolderFeedFeedOutputConfigPubsubDestinationArgs.builder()\n .topic(feedOutput.id())\n .build())\n .build())\n .condition(FolderFeedConditionArgs.builder()\n .expression(\"\"\"\n!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n \"\"\")\n .title(\"created\")\n .description(\"Send notifications on creation events\")\n .build())\n .build());\n\n // Find the project number of the project whose identity will be used for sending\n // the asset change notifications.\n final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder()\n .projectId(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create a feed that sends notifications about network resource updates under a\n # particular folder.\n folderFeed:\n type: gcp:cloudasset:FolderFeed\n name: folder_feed\n properties:\n billingProject: my-project-name\n folder: ${myFolder.folderId}\n feedId: network-updates\n contentType: RESOURCE\n assetTypes:\n - compute.googleapis.com/Subnetwork\n - compute.googleapis.com/Network\n feedOutputConfig:\n pubsubDestination:\n topic: ${feedOutput.id}\n condition:\n expression: |\n !temporal_asset.deleted \u0026\u0026\n temporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n title: created\n description: Send notifications on creation events\n # The topic where the resource change notifications will be sent.\n feedOutput:\n type: gcp:pubsub:Topic\n name: feed_output\n properties:\n project: my-project-name\n name: network-updates\n # The folder that will be monitored for resource updates.\n myFolder:\n type: gcp:organizations:Folder\n name: my_folder\n properties:\n displayName: Networking\n parent: organizations/123456789\nvariables:\n # Find the project number of the project whose identity will be used for sending\n # the asset change notifications.\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments:\n projectId: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFolderFeed can be imported using any of these accepted formats:\n\n* `folders/{{folder_id}}/feeds/{{name}}`\n\n* `{{folder_id}}/{{name}}`\n\nWhen using the `pulumi import` command, FolderFeed can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudasset/folderFeed:FolderFeed default folders/{{folder_id}}/feeds/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudasset/folderFeed:FolderFeed default {{folder_id}}/{{name}}\n```\n\n", + "description": "Describes a Cloud Asset Inventory feed used to to listen to asset updates.\n\n\nTo get more information about FolderFeed, see:\n\n* [API documentation](https://cloud.google.com/asset-inventory/docs/reference/rest/)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/asset-inventory/docs)\n\n## Example Usage\n\n### Cloud Asset Folder Feed\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// The topic where the resource change notifications will be sent.\nconst feedOutput = new gcp.pubsub.Topic(\"feed_output\", {\n project: \"my-project-name\",\n name: \"network-updates\",\n});\n// The folder that will be monitored for resource updates.\nconst myFolder = new gcp.organizations.Folder(\"my_folder\", {\n displayName: \"Networking\",\n parent: \"organizations/123456789\",\n});\n// Create a feed that sends notifications about network resource updates under a\n// particular folder.\nconst folderFeed = new gcp.cloudasset.FolderFeed(\"folder_feed\", {\n billingProject: \"my-project-name\",\n folder: myFolder.folderId,\n feedId: \"network-updates\",\n contentType: \"RESOURCE\",\n assetTypes: [\n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\",\n ],\n feedOutputConfig: {\n pubsubDestination: {\n topic: feedOutput.id,\n },\n },\n condition: {\n expression: `!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n`,\n title: \"created\",\n description: \"Send notifications on creation events\",\n },\n});\n// Find the project number of the project whose identity will be used for sending\n// the asset change notifications.\nconst project = gcp.organizations.getProject({\n projectId: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# The topic where the resource change notifications will be sent.\nfeed_output = gcp.pubsub.Topic(\"feed_output\",\n project=\"my-project-name\",\n name=\"network-updates\")\n# The folder that will be monitored for resource updates.\nmy_folder = gcp.organizations.Folder(\"my_folder\",\n display_name=\"Networking\",\n parent=\"organizations/123456789\")\n# Create a feed that sends notifications about network resource updates under a\n# particular folder.\nfolder_feed = gcp.cloudasset.FolderFeed(\"folder_feed\",\n billing_project=\"my-project-name\",\n folder=my_folder.folder_id,\n feed_id=\"network-updates\",\n content_type=\"RESOURCE\",\n asset_types=[\n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\",\n ],\n feed_output_config={\n \"pubsub_destination\": {\n \"topic\": feed_output.id,\n },\n },\n condition={\n \"expression\": \"\"\"!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n\"\"\",\n \"title\": \"created\",\n \"description\": \"Send notifications on creation events\",\n })\n# Find the project number of the project whose identity will be used for sending\n# the asset change notifications.\nproject = gcp.organizations.get_project(project_id=\"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 // The topic where the resource change notifications will be sent.\n var feedOutput = new Gcp.PubSub.Topic(\"feed_output\", new()\n {\n Project = \"my-project-name\",\n Name = \"network-updates\",\n });\n\n // The folder that will be monitored for resource updates.\n var myFolder = new Gcp.Organizations.Folder(\"my_folder\", new()\n {\n DisplayName = \"Networking\",\n Parent = \"organizations/123456789\",\n });\n\n // Create a feed that sends notifications about network resource updates under a\n // particular folder.\n var folderFeed = new Gcp.CloudAsset.FolderFeed(\"folder_feed\", new()\n {\n BillingProject = \"my-project-name\",\n Folder = myFolder.FolderId,\n FeedId = \"network-updates\",\n ContentType = \"RESOURCE\",\n AssetTypes = new[]\n {\n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\",\n },\n FeedOutputConfig = new Gcp.CloudAsset.Inputs.FolderFeedFeedOutputConfigArgs\n {\n PubsubDestination = new Gcp.CloudAsset.Inputs.FolderFeedFeedOutputConfigPubsubDestinationArgs\n {\n Topic = feedOutput.Id,\n },\n },\n Condition = new Gcp.CloudAsset.Inputs.FolderFeedConditionArgs\n {\n Expression = @\"!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n\",\n Title = \"created\",\n Description = \"Send notifications on creation events\",\n },\n });\n\n // Find the project number of the project whose identity will be used for sending\n // the asset change notifications.\n var project = Gcp.Organizations.GetProject.Invoke(new()\n {\n ProjectId = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudasset\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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// The topic where the resource change notifications will be sent.\n\t\tfeedOutput, err := pubsub.NewTopic(ctx, \"feed_output\", \u0026pubsub.TopicArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"network-updates\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// The folder that will be monitored for resource updates.\n\t\tmyFolder, err := organizations.NewFolder(ctx, \"my_folder\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"Networking\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a feed that sends notifications about network resource updates under a\n\t\t// particular folder.\n\t\t_, err = cloudasset.NewFolderFeed(ctx, \"folder_feed\", \u0026cloudasset.FolderFeedArgs{\n\t\t\tBillingProject: pulumi.String(\"my-project-name\"),\n\t\t\tFolder: myFolder.FolderId,\n\t\t\tFeedId: pulumi.String(\"network-updates\"),\n\t\t\tContentType: pulumi.String(\"RESOURCE\"),\n\t\t\tAssetTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"compute.googleapis.com/Subnetwork\"),\n\t\t\t\tpulumi.String(\"compute.googleapis.com/Network\"),\n\t\t\t},\n\t\t\tFeedOutputConfig: \u0026cloudasset.FolderFeedFeedOutputConfigArgs{\n\t\t\t\tPubsubDestination: \u0026cloudasset.FolderFeedFeedOutputConfigPubsubDestinationArgs{\n\t\t\t\t\tTopic: feedOutput.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCondition: \u0026cloudasset.FolderFeedConditionArgs{\n\t\t\t\tExpression: pulumi.String(\"!temporal_asset.deleted \u0026\u0026\\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\\n\"),\n\t\t\t\tTitle: pulumi.String(\"created\"),\n\t\t\t\tDescription: pulumi.String(\"Send notifications on creation events\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Find the project number of the project whose identity will be used for sending\n\t\t// the asset change notifications.\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{\n\t\t\tProjectId: pulumi.StringRef(\"my-project-name\"),\n\t\t}, 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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.cloudasset.FolderFeed;\nimport com.pulumi.gcp.cloudasset.FolderFeedArgs;\nimport com.pulumi.gcp.cloudasset.inputs.FolderFeedFeedOutputConfigArgs;\nimport com.pulumi.gcp.cloudasset.inputs.FolderFeedFeedOutputConfigPubsubDestinationArgs;\nimport com.pulumi.gcp.cloudasset.inputs.FolderFeedConditionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 // The topic where the resource change notifications will be sent.\n var feedOutput = new Topic(\"feedOutput\", TopicArgs.builder()\n .project(\"my-project-name\")\n .name(\"network-updates\")\n .build());\n\n // The folder that will be monitored for resource updates.\n var myFolder = new Folder(\"myFolder\", FolderArgs.builder()\n .displayName(\"Networking\")\n .parent(\"organizations/123456789\")\n .build());\n\n // Create a feed that sends notifications about network resource updates under a\n // particular folder.\n var folderFeed = new FolderFeed(\"folderFeed\", FolderFeedArgs.builder()\n .billingProject(\"my-project-name\")\n .folder(myFolder.folderId())\n .feedId(\"network-updates\")\n .contentType(\"RESOURCE\")\n .assetTypes( \n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\")\n .feedOutputConfig(FolderFeedFeedOutputConfigArgs.builder()\n .pubsubDestination(FolderFeedFeedOutputConfigPubsubDestinationArgs.builder()\n .topic(feedOutput.id())\n .build())\n .build())\n .condition(FolderFeedConditionArgs.builder()\n .expression(\"\"\"\n!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n \"\"\")\n .title(\"created\")\n .description(\"Send notifications on creation events\")\n .build())\n .build());\n\n // Find the project number of the project whose identity will be used for sending\n // the asset change notifications.\n final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder()\n .projectId(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create a feed that sends notifications about network resource updates under a\n # particular folder.\n folderFeed:\n type: gcp:cloudasset:FolderFeed\n name: folder_feed\n properties:\n billingProject: my-project-name\n folder: ${myFolder.folderId}\n feedId: network-updates\n contentType: RESOURCE\n assetTypes:\n - compute.googleapis.com/Subnetwork\n - compute.googleapis.com/Network\n feedOutputConfig:\n pubsubDestination:\n topic: ${feedOutput.id}\n condition:\n expression: |\n !temporal_asset.deleted \u0026\u0026\n temporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n title: created\n description: Send notifications on creation events\n # The topic where the resource change notifications will be sent.\n feedOutput:\n type: gcp:pubsub:Topic\n name: feed_output\n properties:\n project: my-project-name\n name: network-updates\n # The folder that will be monitored for resource updates.\n myFolder:\n type: gcp:organizations:Folder\n name: my_folder\n properties:\n displayName: Networking\n parent: organizations/123456789\nvariables:\n # Find the project number of the project whose identity will be used for sending\n # the asset change notifications.\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments:\n projectId: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFolderFeed can be imported using any of these accepted formats:\n\n* `folders/{{folder_id}}/feeds/{{name}}`\n\n* `{{folder_id}}/{{name}}`\n\nWhen using the `pulumi import` command, FolderFeed can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudasset/folderFeed:FolderFeed default folders/{{folder_id}}/feeds/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudasset/folderFeed:FolderFeed default {{folder_id}}/{{name}}\n```\n\n", "properties": { "assetNames": { "type": "array", @@ -132135,7 +132135,7 @@ } }, "gcp:cloudasset/organizationFeed:OrganizationFeed": { - "description": "Describes a Cloud Asset Inventory feed used to to listen to asset updates.\n\n\nTo get more information about OrganizationFeed, see:\n\n* [API documentation](https://cloud.google.com/asset-inventory/docs/reference/rest/)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/asset-inventory/docs)\n\n## Example Usage\n\n### Cloud Asset Organization Feed\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// The topic where the resource change notifications will be sent.\nconst feedOutput = new gcp.pubsub.Topic(\"feed_output\", {\n project: \"my-project-name\",\n name: \"network-updates\",\n});\n// Create a feed that sends notifications about network resource updates under a\n// particular organization.\nconst organizationFeed = new gcp.cloudasset.OrganizationFeed(\"organization_feed\", {\n billingProject: \"my-project-name\",\n orgId: \"123456789\",\n feedId: \"network-updates\",\n contentType: \"RESOURCE\",\n assetTypes: [\n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\",\n ],\n feedOutputConfig: {\n pubsubDestination: {\n topic: feedOutput.id,\n },\n },\n condition: {\n expression: `!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n`,\n title: \"created\",\n description: \"Send notifications on creation events\",\n },\n});\n// Find the project number of the project whose identity will be used for sending\n// the asset change notifications.\nconst project = gcp.organizations.getProject({\n projectId: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# The topic where the resource change notifications will be sent.\nfeed_output = gcp.pubsub.Topic(\"feed_output\",\n project=\"my-project-name\",\n name=\"network-updates\")\n# Create a feed that sends notifications about network resource updates under a\n# particular organization.\norganization_feed = gcp.cloudasset.OrganizationFeed(\"organization_feed\",\n billing_project=\"my-project-name\",\n org_id=\"123456789\",\n feed_id=\"network-updates\",\n content_type=\"RESOURCE\",\n asset_types=[\n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\",\n ],\n feed_output_config={\n \"pubsubDestination\": {\n \"topic\": feed_output.id,\n },\n },\n condition={\n \"expression\": \"\"\"!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n\"\"\",\n \"title\": \"created\",\n \"description\": \"Send notifications on creation events\",\n })\n# Find the project number of the project whose identity will be used for sending\n# the asset change notifications.\nproject = gcp.organizations.get_project(project_id=\"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 // The topic where the resource change notifications will be sent.\n var feedOutput = new Gcp.PubSub.Topic(\"feed_output\", new()\n {\n Project = \"my-project-name\",\n Name = \"network-updates\",\n });\n\n // Create a feed that sends notifications about network resource updates under a\n // particular organization.\n var organizationFeed = new Gcp.CloudAsset.OrganizationFeed(\"organization_feed\", new()\n {\n BillingProject = \"my-project-name\",\n OrgId = \"123456789\",\n FeedId = \"network-updates\",\n ContentType = \"RESOURCE\",\n AssetTypes = new[]\n {\n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\",\n },\n FeedOutputConfig = new Gcp.CloudAsset.Inputs.OrganizationFeedFeedOutputConfigArgs\n {\n PubsubDestination = new Gcp.CloudAsset.Inputs.OrganizationFeedFeedOutputConfigPubsubDestinationArgs\n {\n Topic = feedOutput.Id,\n },\n },\n Condition = new Gcp.CloudAsset.Inputs.OrganizationFeedConditionArgs\n {\n Expression = @\"!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n\",\n Title = \"created\",\n Description = \"Send notifications on creation events\",\n },\n });\n\n // Find the project number of the project whose identity will be used for sending\n // the asset change notifications.\n var project = Gcp.Organizations.GetProject.Invoke(new()\n {\n ProjectId = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudasset\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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// The topic where the resource change notifications will be sent.\n\t\tfeedOutput, err := pubsub.NewTopic(ctx, \"feed_output\", \u0026pubsub.TopicArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"network-updates\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a feed that sends notifications about network resource updates under a\n\t\t// particular organization.\n\t\t_, err = cloudasset.NewOrganizationFeed(ctx, \"organization_feed\", \u0026cloudasset.OrganizationFeedArgs{\n\t\t\tBillingProject: pulumi.String(\"my-project-name\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tFeedId: pulumi.String(\"network-updates\"),\n\t\t\tContentType: pulumi.String(\"RESOURCE\"),\n\t\t\tAssetTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"compute.googleapis.com/Subnetwork\"),\n\t\t\t\tpulumi.String(\"compute.googleapis.com/Network\"),\n\t\t\t},\n\t\t\tFeedOutputConfig: \u0026cloudasset.OrganizationFeedFeedOutputConfigArgs{\n\t\t\t\tPubsubDestination: \u0026cloudasset.OrganizationFeedFeedOutputConfigPubsubDestinationArgs{\n\t\t\t\t\tTopic: feedOutput.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCondition: \u0026cloudasset.OrganizationFeedConditionArgs{\n\t\t\t\tExpression: pulumi.String(\"!temporal_asset.deleted \u0026\u0026\\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\\n\"),\n\t\t\t\tTitle: pulumi.String(\"created\"),\n\t\t\t\tDescription: pulumi.String(\"Send notifications on creation events\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Find the project number of the project whose identity will be used for sending\n\t\t// the asset change notifications.\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{\n\t\t\tProjectId: pulumi.StringRef(\"my-project-name\"),\n\t\t}, 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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.cloudasset.OrganizationFeed;\nimport com.pulumi.gcp.cloudasset.OrganizationFeedArgs;\nimport com.pulumi.gcp.cloudasset.inputs.OrganizationFeedFeedOutputConfigArgs;\nimport com.pulumi.gcp.cloudasset.inputs.OrganizationFeedFeedOutputConfigPubsubDestinationArgs;\nimport com.pulumi.gcp.cloudasset.inputs.OrganizationFeedConditionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 // The topic where the resource change notifications will be sent.\n var feedOutput = new Topic(\"feedOutput\", TopicArgs.builder()\n .project(\"my-project-name\")\n .name(\"network-updates\")\n .build());\n\n // Create a feed that sends notifications about network resource updates under a\n // particular organization.\n var organizationFeed = new OrganizationFeed(\"organizationFeed\", OrganizationFeedArgs.builder()\n .billingProject(\"my-project-name\")\n .orgId(\"123456789\")\n .feedId(\"network-updates\")\n .contentType(\"RESOURCE\")\n .assetTypes( \n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\")\n .feedOutputConfig(OrganizationFeedFeedOutputConfigArgs.builder()\n .pubsubDestination(OrganizationFeedFeedOutputConfigPubsubDestinationArgs.builder()\n .topic(feedOutput.id())\n .build())\n .build())\n .condition(OrganizationFeedConditionArgs.builder()\n .expression(\"\"\"\n!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n \"\"\")\n .title(\"created\")\n .description(\"Send notifications on creation events\")\n .build())\n .build());\n\n // Find the project number of the project whose identity will be used for sending\n // the asset change notifications.\n final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder()\n .projectId(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create a feed that sends notifications about network resource updates under a\n # particular organization.\n organizationFeed:\n type: gcp:cloudasset:OrganizationFeed\n name: organization_feed\n properties:\n billingProject: my-project-name\n orgId: '123456789'\n feedId: network-updates\n contentType: RESOURCE\n assetTypes:\n - compute.googleapis.com/Subnetwork\n - compute.googleapis.com/Network\n feedOutputConfig:\n pubsubDestination:\n topic: ${feedOutput.id}\n condition:\n expression: |\n !temporal_asset.deleted \u0026\u0026\n temporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n title: created\n description: Send notifications on creation events\n # The topic where the resource change notifications will be sent.\n feedOutput:\n type: gcp:pubsub:Topic\n name: feed_output\n properties:\n project: my-project-name\n name: network-updates\nvariables:\n # Find the project number of the project whose identity will be used for sending\n # the asset change notifications.\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments:\n projectId: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganizationFeed can be imported using any of these accepted formats:\n\n* `organizations/{{org_id}}/feeds/{{name}}`\n\n* `{{org_id}}/{{name}}`\n\nWhen using the `pulumi import` command, OrganizationFeed can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudasset/organizationFeed:OrganizationFeed default organizations/{{org_id}}/feeds/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudasset/organizationFeed:OrganizationFeed default {{org_id}}/{{name}}\n```\n\n", + "description": "Describes a Cloud Asset Inventory feed used to to listen to asset updates.\n\n\nTo get more information about OrganizationFeed, see:\n\n* [API documentation](https://cloud.google.com/asset-inventory/docs/reference/rest/)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/asset-inventory/docs)\n\n## Example Usage\n\n### Cloud Asset Organization Feed\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// The topic where the resource change notifications will be sent.\nconst feedOutput = new gcp.pubsub.Topic(\"feed_output\", {\n project: \"my-project-name\",\n name: \"network-updates\",\n});\n// Create a feed that sends notifications about network resource updates under a\n// particular organization.\nconst organizationFeed = new gcp.cloudasset.OrganizationFeed(\"organization_feed\", {\n billingProject: \"my-project-name\",\n orgId: \"123456789\",\n feedId: \"network-updates\",\n contentType: \"RESOURCE\",\n assetTypes: [\n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\",\n ],\n feedOutputConfig: {\n pubsubDestination: {\n topic: feedOutput.id,\n },\n },\n condition: {\n expression: `!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n`,\n title: \"created\",\n description: \"Send notifications on creation events\",\n },\n});\n// Find the project number of the project whose identity will be used for sending\n// the asset change notifications.\nconst project = gcp.organizations.getProject({\n projectId: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# The topic where the resource change notifications will be sent.\nfeed_output = gcp.pubsub.Topic(\"feed_output\",\n project=\"my-project-name\",\n name=\"network-updates\")\n# Create a feed that sends notifications about network resource updates under a\n# particular organization.\norganization_feed = gcp.cloudasset.OrganizationFeed(\"organization_feed\",\n billing_project=\"my-project-name\",\n org_id=\"123456789\",\n feed_id=\"network-updates\",\n content_type=\"RESOURCE\",\n asset_types=[\n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\",\n ],\n feed_output_config={\n \"pubsub_destination\": {\n \"topic\": feed_output.id,\n },\n },\n condition={\n \"expression\": \"\"\"!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n\"\"\",\n \"title\": \"created\",\n \"description\": \"Send notifications on creation events\",\n })\n# Find the project number of the project whose identity will be used for sending\n# the asset change notifications.\nproject = gcp.organizations.get_project(project_id=\"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 // The topic where the resource change notifications will be sent.\n var feedOutput = new Gcp.PubSub.Topic(\"feed_output\", new()\n {\n Project = \"my-project-name\",\n Name = \"network-updates\",\n });\n\n // Create a feed that sends notifications about network resource updates under a\n // particular organization.\n var organizationFeed = new Gcp.CloudAsset.OrganizationFeed(\"organization_feed\", new()\n {\n BillingProject = \"my-project-name\",\n OrgId = \"123456789\",\n FeedId = \"network-updates\",\n ContentType = \"RESOURCE\",\n AssetTypes = new[]\n {\n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\",\n },\n FeedOutputConfig = new Gcp.CloudAsset.Inputs.OrganizationFeedFeedOutputConfigArgs\n {\n PubsubDestination = new Gcp.CloudAsset.Inputs.OrganizationFeedFeedOutputConfigPubsubDestinationArgs\n {\n Topic = feedOutput.Id,\n },\n },\n Condition = new Gcp.CloudAsset.Inputs.OrganizationFeedConditionArgs\n {\n Expression = @\"!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n\",\n Title = \"created\",\n Description = \"Send notifications on creation events\",\n },\n });\n\n // Find the project number of the project whose identity will be used for sending\n // the asset change notifications.\n var project = Gcp.Organizations.GetProject.Invoke(new()\n {\n ProjectId = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudasset\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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// The topic where the resource change notifications will be sent.\n\t\tfeedOutput, err := pubsub.NewTopic(ctx, \"feed_output\", \u0026pubsub.TopicArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"network-updates\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a feed that sends notifications about network resource updates under a\n\t\t// particular organization.\n\t\t_, err = cloudasset.NewOrganizationFeed(ctx, \"organization_feed\", \u0026cloudasset.OrganizationFeedArgs{\n\t\t\tBillingProject: pulumi.String(\"my-project-name\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tFeedId: pulumi.String(\"network-updates\"),\n\t\t\tContentType: pulumi.String(\"RESOURCE\"),\n\t\t\tAssetTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"compute.googleapis.com/Subnetwork\"),\n\t\t\t\tpulumi.String(\"compute.googleapis.com/Network\"),\n\t\t\t},\n\t\t\tFeedOutputConfig: \u0026cloudasset.OrganizationFeedFeedOutputConfigArgs{\n\t\t\t\tPubsubDestination: \u0026cloudasset.OrganizationFeedFeedOutputConfigPubsubDestinationArgs{\n\t\t\t\t\tTopic: feedOutput.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCondition: \u0026cloudasset.OrganizationFeedConditionArgs{\n\t\t\t\tExpression: pulumi.String(\"!temporal_asset.deleted \u0026\u0026\\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\\n\"),\n\t\t\t\tTitle: pulumi.String(\"created\"),\n\t\t\t\tDescription: pulumi.String(\"Send notifications on creation events\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Find the project number of the project whose identity will be used for sending\n\t\t// the asset change notifications.\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{\n\t\t\tProjectId: pulumi.StringRef(\"my-project-name\"),\n\t\t}, 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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.cloudasset.OrganizationFeed;\nimport com.pulumi.gcp.cloudasset.OrganizationFeedArgs;\nimport com.pulumi.gcp.cloudasset.inputs.OrganizationFeedFeedOutputConfigArgs;\nimport com.pulumi.gcp.cloudasset.inputs.OrganizationFeedFeedOutputConfigPubsubDestinationArgs;\nimport com.pulumi.gcp.cloudasset.inputs.OrganizationFeedConditionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 // The topic where the resource change notifications will be sent.\n var feedOutput = new Topic(\"feedOutput\", TopicArgs.builder()\n .project(\"my-project-name\")\n .name(\"network-updates\")\n .build());\n\n // Create a feed that sends notifications about network resource updates under a\n // particular organization.\n var organizationFeed = new OrganizationFeed(\"organizationFeed\", OrganizationFeedArgs.builder()\n .billingProject(\"my-project-name\")\n .orgId(\"123456789\")\n .feedId(\"network-updates\")\n .contentType(\"RESOURCE\")\n .assetTypes( \n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\")\n .feedOutputConfig(OrganizationFeedFeedOutputConfigArgs.builder()\n .pubsubDestination(OrganizationFeedFeedOutputConfigPubsubDestinationArgs.builder()\n .topic(feedOutput.id())\n .build())\n .build())\n .condition(OrganizationFeedConditionArgs.builder()\n .expression(\"\"\"\n!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n \"\"\")\n .title(\"created\")\n .description(\"Send notifications on creation events\")\n .build())\n .build());\n\n // Find the project number of the project whose identity will be used for sending\n // the asset change notifications.\n final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder()\n .projectId(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create a feed that sends notifications about network resource updates under a\n # particular organization.\n organizationFeed:\n type: gcp:cloudasset:OrganizationFeed\n name: organization_feed\n properties:\n billingProject: my-project-name\n orgId: '123456789'\n feedId: network-updates\n contentType: RESOURCE\n assetTypes:\n - compute.googleapis.com/Subnetwork\n - compute.googleapis.com/Network\n feedOutputConfig:\n pubsubDestination:\n topic: ${feedOutput.id}\n condition:\n expression: |\n !temporal_asset.deleted \u0026\u0026\n temporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n title: created\n description: Send notifications on creation events\n # The topic where the resource change notifications will be sent.\n feedOutput:\n type: gcp:pubsub:Topic\n name: feed_output\n properties:\n project: my-project-name\n name: network-updates\nvariables:\n # Find the project number of the project whose identity will be used for sending\n # the asset change notifications.\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments:\n projectId: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganizationFeed can be imported using any of these accepted formats:\n\n* `organizations/{{org_id}}/feeds/{{name}}`\n\n* `{{org_id}}/{{name}}`\n\nWhen using the `pulumi import` command, OrganizationFeed can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudasset/organizationFeed:OrganizationFeed default organizations/{{org_id}}/feeds/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudasset/organizationFeed:OrganizationFeed default {{org_id}}/{{name}}\n```\n\n", "properties": { "assetNames": { "type": "array", @@ -132289,7 +132289,7 @@ } }, "gcp:cloudasset/projectFeed:ProjectFeed": { - "description": "Describes a Cloud Asset Inventory feed used to to listen to asset updates.\n\n\nTo get more information about ProjectFeed, see:\n\n* [API documentation](https://cloud.google.com/asset-inventory/docs/reference/rest/)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/asset-inventory/docs)\n\n## Example Usage\n\n### Cloud Asset Project Feed\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// The topic where the resource change notifications will be sent.\nconst feedOutput = new gcp.pubsub.Topic(\"feed_output\", {\n project: \"my-project-name\",\n name: \"network-updates\",\n});\n// Create a feed that sends notifications about network resource updates.\nconst projectFeed = new gcp.cloudasset.ProjectFeed(\"project_feed\", {\n project: \"my-project-name\",\n feedId: \"network-updates\",\n contentType: \"RESOURCE\",\n assetTypes: [\n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\",\n ],\n feedOutputConfig: {\n pubsubDestination: {\n topic: feedOutput.id,\n },\n },\n condition: {\n expression: `!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n`,\n title: \"created\",\n description: \"Send notifications on creation events\",\n },\n});\n// Find the project number of the project whose identity will be used for sending\n// the asset change notifications.\nconst project = gcp.organizations.getProject({\n projectId: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# The topic where the resource change notifications will be sent.\nfeed_output = gcp.pubsub.Topic(\"feed_output\",\n project=\"my-project-name\",\n name=\"network-updates\")\n# Create a feed that sends notifications about network resource updates.\nproject_feed = gcp.cloudasset.ProjectFeed(\"project_feed\",\n project=\"my-project-name\",\n feed_id=\"network-updates\",\n content_type=\"RESOURCE\",\n asset_types=[\n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\",\n ],\n feed_output_config={\n \"pubsubDestination\": {\n \"topic\": feed_output.id,\n },\n },\n condition={\n \"expression\": \"\"\"!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n\"\"\",\n \"title\": \"created\",\n \"description\": \"Send notifications on creation events\",\n })\n# Find the project number of the project whose identity will be used for sending\n# the asset change notifications.\nproject = gcp.organizations.get_project(project_id=\"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 // The topic where the resource change notifications will be sent.\n var feedOutput = new Gcp.PubSub.Topic(\"feed_output\", new()\n {\n Project = \"my-project-name\",\n Name = \"network-updates\",\n });\n\n // Create a feed that sends notifications about network resource updates.\n var projectFeed = new Gcp.CloudAsset.ProjectFeed(\"project_feed\", new()\n {\n Project = \"my-project-name\",\n FeedId = \"network-updates\",\n ContentType = \"RESOURCE\",\n AssetTypes = new[]\n {\n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\",\n },\n FeedOutputConfig = new Gcp.CloudAsset.Inputs.ProjectFeedFeedOutputConfigArgs\n {\n PubsubDestination = new Gcp.CloudAsset.Inputs.ProjectFeedFeedOutputConfigPubsubDestinationArgs\n {\n Topic = feedOutput.Id,\n },\n },\n Condition = new Gcp.CloudAsset.Inputs.ProjectFeedConditionArgs\n {\n Expression = @\"!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n\",\n Title = \"created\",\n Description = \"Send notifications on creation events\",\n },\n });\n\n // Find the project number of the project whose identity will be used for sending\n // the asset change notifications.\n var project = Gcp.Organizations.GetProject.Invoke(new()\n {\n ProjectId = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudasset\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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// The topic where the resource change notifications will be sent.\n\t\tfeedOutput, err := pubsub.NewTopic(ctx, \"feed_output\", \u0026pubsub.TopicArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"network-updates\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a feed that sends notifications about network resource updates.\n\t\t_, err = cloudasset.NewProjectFeed(ctx, \"project_feed\", \u0026cloudasset.ProjectFeedArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tFeedId: pulumi.String(\"network-updates\"),\n\t\t\tContentType: pulumi.String(\"RESOURCE\"),\n\t\t\tAssetTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"compute.googleapis.com/Subnetwork\"),\n\t\t\t\tpulumi.String(\"compute.googleapis.com/Network\"),\n\t\t\t},\n\t\t\tFeedOutputConfig: \u0026cloudasset.ProjectFeedFeedOutputConfigArgs{\n\t\t\t\tPubsubDestination: \u0026cloudasset.ProjectFeedFeedOutputConfigPubsubDestinationArgs{\n\t\t\t\t\tTopic: feedOutput.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCondition: \u0026cloudasset.ProjectFeedConditionArgs{\n\t\t\t\tExpression: pulumi.String(\"!temporal_asset.deleted \u0026\u0026\\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\\n\"),\n\t\t\t\tTitle: pulumi.String(\"created\"),\n\t\t\t\tDescription: pulumi.String(\"Send notifications on creation events\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Find the project number of the project whose identity will be used for sending\n\t\t// the asset change notifications.\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{\n\t\t\tProjectId: pulumi.StringRef(\"my-project-name\"),\n\t\t}, 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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.cloudasset.ProjectFeed;\nimport com.pulumi.gcp.cloudasset.ProjectFeedArgs;\nimport com.pulumi.gcp.cloudasset.inputs.ProjectFeedFeedOutputConfigArgs;\nimport com.pulumi.gcp.cloudasset.inputs.ProjectFeedFeedOutputConfigPubsubDestinationArgs;\nimport com.pulumi.gcp.cloudasset.inputs.ProjectFeedConditionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 // The topic where the resource change notifications will be sent.\n var feedOutput = new Topic(\"feedOutput\", TopicArgs.builder()\n .project(\"my-project-name\")\n .name(\"network-updates\")\n .build());\n\n // Create a feed that sends notifications about network resource updates.\n var projectFeed = new ProjectFeed(\"projectFeed\", ProjectFeedArgs.builder()\n .project(\"my-project-name\")\n .feedId(\"network-updates\")\n .contentType(\"RESOURCE\")\n .assetTypes( \n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\")\n .feedOutputConfig(ProjectFeedFeedOutputConfigArgs.builder()\n .pubsubDestination(ProjectFeedFeedOutputConfigPubsubDestinationArgs.builder()\n .topic(feedOutput.id())\n .build())\n .build())\n .condition(ProjectFeedConditionArgs.builder()\n .expression(\"\"\"\n!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n \"\"\")\n .title(\"created\")\n .description(\"Send notifications on creation events\")\n .build())\n .build());\n\n // Find the project number of the project whose identity will be used for sending\n // the asset change notifications.\n final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder()\n .projectId(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create a feed that sends notifications about network resource updates.\n projectFeed:\n type: gcp:cloudasset:ProjectFeed\n name: project_feed\n properties:\n project: my-project-name\n feedId: network-updates\n contentType: RESOURCE\n assetTypes:\n - compute.googleapis.com/Subnetwork\n - compute.googleapis.com/Network\n feedOutputConfig:\n pubsubDestination:\n topic: ${feedOutput.id}\n condition:\n expression: |\n !temporal_asset.deleted \u0026\u0026\n temporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n title: created\n description: Send notifications on creation events\n # The topic where the resource change notifications will be sent.\n feedOutput:\n type: gcp:pubsub:Topic\n name: feed_output\n properties:\n project: my-project-name\n name: network-updates\nvariables:\n # Find the project number of the project whose identity will be used for sending\n # the asset change notifications.\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments:\n projectId: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProjectFeed can be imported using any of these accepted formats:\n\n* `projects/{{project}}/feeds/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ProjectFeed can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudasset/projectFeed:ProjectFeed default projects/{{project}}/feeds/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudasset/projectFeed:ProjectFeed default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudasset/projectFeed:ProjectFeed default {{name}}\n```\n\n", + "description": "Describes a Cloud Asset Inventory feed used to to listen to asset updates.\n\n\nTo get more information about ProjectFeed, see:\n\n* [API documentation](https://cloud.google.com/asset-inventory/docs/reference/rest/)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/asset-inventory/docs)\n\n## Example Usage\n\n### Cloud Asset Project Feed\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// The topic where the resource change notifications will be sent.\nconst feedOutput = new gcp.pubsub.Topic(\"feed_output\", {\n project: \"my-project-name\",\n name: \"network-updates\",\n});\n// Create a feed that sends notifications about network resource updates.\nconst projectFeed = new gcp.cloudasset.ProjectFeed(\"project_feed\", {\n project: \"my-project-name\",\n feedId: \"network-updates\",\n contentType: \"RESOURCE\",\n assetTypes: [\n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\",\n ],\n feedOutputConfig: {\n pubsubDestination: {\n topic: feedOutput.id,\n },\n },\n condition: {\n expression: `!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n`,\n title: \"created\",\n description: \"Send notifications on creation events\",\n },\n});\n// Find the project number of the project whose identity will be used for sending\n// the asset change notifications.\nconst project = gcp.organizations.getProject({\n projectId: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# The topic where the resource change notifications will be sent.\nfeed_output = gcp.pubsub.Topic(\"feed_output\",\n project=\"my-project-name\",\n name=\"network-updates\")\n# Create a feed that sends notifications about network resource updates.\nproject_feed = gcp.cloudasset.ProjectFeed(\"project_feed\",\n project=\"my-project-name\",\n feed_id=\"network-updates\",\n content_type=\"RESOURCE\",\n asset_types=[\n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\",\n ],\n feed_output_config={\n \"pubsub_destination\": {\n \"topic\": feed_output.id,\n },\n },\n condition={\n \"expression\": \"\"\"!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n\"\"\",\n \"title\": \"created\",\n \"description\": \"Send notifications on creation events\",\n })\n# Find the project number of the project whose identity will be used for sending\n# the asset change notifications.\nproject = gcp.organizations.get_project(project_id=\"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 // The topic where the resource change notifications will be sent.\n var feedOutput = new Gcp.PubSub.Topic(\"feed_output\", new()\n {\n Project = \"my-project-name\",\n Name = \"network-updates\",\n });\n\n // Create a feed that sends notifications about network resource updates.\n var projectFeed = new Gcp.CloudAsset.ProjectFeed(\"project_feed\", new()\n {\n Project = \"my-project-name\",\n FeedId = \"network-updates\",\n ContentType = \"RESOURCE\",\n AssetTypes = new[]\n {\n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\",\n },\n FeedOutputConfig = new Gcp.CloudAsset.Inputs.ProjectFeedFeedOutputConfigArgs\n {\n PubsubDestination = new Gcp.CloudAsset.Inputs.ProjectFeedFeedOutputConfigPubsubDestinationArgs\n {\n Topic = feedOutput.Id,\n },\n },\n Condition = new Gcp.CloudAsset.Inputs.ProjectFeedConditionArgs\n {\n Expression = @\"!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n\",\n Title = \"created\",\n Description = \"Send notifications on creation events\",\n },\n });\n\n // Find the project number of the project whose identity will be used for sending\n // the asset change notifications.\n var project = Gcp.Organizations.GetProject.Invoke(new()\n {\n ProjectId = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudasset\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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// The topic where the resource change notifications will be sent.\n\t\tfeedOutput, err := pubsub.NewTopic(ctx, \"feed_output\", \u0026pubsub.TopicArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"network-updates\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a feed that sends notifications about network resource updates.\n\t\t_, err = cloudasset.NewProjectFeed(ctx, \"project_feed\", \u0026cloudasset.ProjectFeedArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tFeedId: pulumi.String(\"network-updates\"),\n\t\t\tContentType: pulumi.String(\"RESOURCE\"),\n\t\t\tAssetTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"compute.googleapis.com/Subnetwork\"),\n\t\t\t\tpulumi.String(\"compute.googleapis.com/Network\"),\n\t\t\t},\n\t\t\tFeedOutputConfig: \u0026cloudasset.ProjectFeedFeedOutputConfigArgs{\n\t\t\t\tPubsubDestination: \u0026cloudasset.ProjectFeedFeedOutputConfigPubsubDestinationArgs{\n\t\t\t\t\tTopic: feedOutput.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCondition: \u0026cloudasset.ProjectFeedConditionArgs{\n\t\t\t\tExpression: pulumi.String(\"!temporal_asset.deleted \u0026\u0026\\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\\n\"),\n\t\t\t\tTitle: pulumi.String(\"created\"),\n\t\t\t\tDescription: pulumi.String(\"Send notifications on creation events\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Find the project number of the project whose identity will be used for sending\n\t\t// the asset change notifications.\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{\n\t\t\tProjectId: pulumi.StringRef(\"my-project-name\"),\n\t\t}, 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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.cloudasset.ProjectFeed;\nimport com.pulumi.gcp.cloudasset.ProjectFeedArgs;\nimport com.pulumi.gcp.cloudasset.inputs.ProjectFeedFeedOutputConfigArgs;\nimport com.pulumi.gcp.cloudasset.inputs.ProjectFeedFeedOutputConfigPubsubDestinationArgs;\nimport com.pulumi.gcp.cloudasset.inputs.ProjectFeedConditionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 // The topic where the resource change notifications will be sent.\n var feedOutput = new Topic(\"feedOutput\", TopicArgs.builder()\n .project(\"my-project-name\")\n .name(\"network-updates\")\n .build());\n\n // Create a feed that sends notifications about network resource updates.\n var projectFeed = new ProjectFeed(\"projectFeed\", ProjectFeedArgs.builder()\n .project(\"my-project-name\")\n .feedId(\"network-updates\")\n .contentType(\"RESOURCE\")\n .assetTypes( \n \"compute.googleapis.com/Subnetwork\",\n \"compute.googleapis.com/Network\")\n .feedOutputConfig(ProjectFeedFeedOutputConfigArgs.builder()\n .pubsubDestination(ProjectFeedFeedOutputConfigPubsubDestinationArgs.builder()\n .topic(feedOutput.id())\n .build())\n .build())\n .condition(ProjectFeedConditionArgs.builder()\n .expression(\"\"\"\n!temporal_asset.deleted \u0026\u0026\ntemporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n \"\"\")\n .title(\"created\")\n .description(\"Send notifications on creation events\")\n .build())\n .build());\n\n // Find the project number of the project whose identity will be used for sending\n // the asset change notifications.\n final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder()\n .projectId(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create a feed that sends notifications about network resource updates.\n projectFeed:\n type: gcp:cloudasset:ProjectFeed\n name: project_feed\n properties:\n project: my-project-name\n feedId: network-updates\n contentType: RESOURCE\n assetTypes:\n - compute.googleapis.com/Subnetwork\n - compute.googleapis.com/Network\n feedOutputConfig:\n pubsubDestination:\n topic: ${feedOutput.id}\n condition:\n expression: |\n !temporal_asset.deleted \u0026\u0026\n temporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST\n title: created\n description: Send notifications on creation events\n # The topic where the resource change notifications will be sent.\n feedOutput:\n type: gcp:pubsub:Topic\n name: feed_output\n properties:\n project: my-project-name\n name: network-updates\nvariables:\n # Find the project number of the project whose identity will be used for sending\n # the asset change notifications.\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments:\n projectId: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProjectFeed can be imported using any of these accepted formats:\n\n* `projects/{{project}}/feeds/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ProjectFeed can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudasset/projectFeed:ProjectFeed default projects/{{project}}/feeds/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudasset/projectFeed:ProjectFeed default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudasset/projectFeed:ProjectFeed default {{name}}\n```\n\n", "properties": { "assetNames": { "type": "array", @@ -132437,7 +132437,7 @@ } }, "gcp:cloudbuild/bitbucketServerConfig:BitbucketServerConfig": { - "description": "BitbucketServerConfig represents the configuration for a Bitbucket Server.\n\n\nTo get more information about BitbucketServerConfig, see:\n\n* [API documentation](https://cloud.google.com/build/docs/api/reference/rest/v1/projects.locations.bitbucketServerConfigs)\n* How-to Guides\n * [Connect to a Bitbucket Server host](https://cloud.google.com/build/docs/automating-builds/bitbucket/connect-host-bitbucket-server)\n\n## Example Usage\n\n### Cloudbuild Bitbucket Server Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_config = new gcp.cloudbuild.BitbucketServerConfig(\"bbs-config\", {\n configId: \"bbs-config\",\n location: \"us-central1\",\n hostUri: \"https://bbs.com\",\n secrets: {\n adminAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n readAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n webhookSecretVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username: \"test\",\n apiKey: \"\u003capi-key\u003e\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_config = gcp.cloudbuild.BitbucketServerConfig(\"bbs-config\",\n config_id=\"bbs-config\",\n location=\"us-central1\",\n host_uri=\"https://bbs.com\",\n secrets={\n \"adminAccessTokenVersionName\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"readAccessTokenVersionName\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"webhookSecretVersionName\": \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username=\"test\",\n api_key=\"\u003capi-key\u003e\")\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_config = new Gcp.CloudBuild.BitbucketServerConfig(\"bbs-config\", new()\n {\n ConfigId = \"bbs-config\",\n Location = \"us-central1\",\n HostUri = \"https://bbs.com\",\n Secrets = new Gcp.CloudBuild.Inputs.BitbucketServerConfigSecretsArgs\n {\n AdminAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n ReadAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n WebhookSecretVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n Username = \"test\",\n ApiKey = \"\u003capi-key\u003e\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewBitbucketServerConfig(ctx, \"bbs-config\", \u0026cloudbuild.BitbucketServerConfigArgs{\n\t\t\tConfigId: pulumi.String(\"bbs-config\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHostUri: pulumi.String(\"https://bbs.com\"),\n\t\t\tSecrets: \u0026cloudbuild.BitbucketServerConfigSecretsArgs{\n\t\t\t\tAdminAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tReadAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tWebhookSecretVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t},\n\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\tApiKey: pulumi.String(\"\u003capi-key\u003e\"),\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.BitbucketServerConfig;\nimport com.pulumi.gcp.cloudbuild.BitbucketServerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.BitbucketServerConfigSecretsArgs;\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_config = new BitbucketServerConfig(\"bbs-config\", BitbucketServerConfigArgs.builder()\n .configId(\"bbs-config\")\n .location(\"us-central1\")\n .hostUri(\"https://bbs.com\")\n .secrets(BitbucketServerConfigSecretsArgs.builder()\n .adminAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .readAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .webhookSecretVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .build())\n .username(\"test\")\n .apiKey(\"\u003capi-key\u003e\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-config:\n type: gcp:cloudbuild:BitbucketServerConfig\n properties:\n configId: bbs-config\n location: us-central1\n hostUri: https://bbs.com\n secrets:\n adminAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n readAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n webhookSecretVersionName: projects/myProject/secrets/mybbspat/versions/1\n username: test\n apiKey: \u003capi-key\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Bitbucket Server Config Repositories\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_config_with_repos = new gcp.cloudbuild.BitbucketServerConfig(\"bbs-config-with-repos\", {\n configId: \"bbs-config\",\n location: \"us-central1\",\n hostUri: \"https://bbs.com\",\n secrets: {\n adminAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n readAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n webhookSecretVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username: \"test\",\n apiKey: \"\u003capi-key\u003e\",\n connectedRepositories: [\n {\n projectKey: \"DEV\",\n repoSlug: \"repo1\",\n },\n {\n projectKey: \"PROD\",\n repoSlug: \"repo1\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_config_with_repos = gcp.cloudbuild.BitbucketServerConfig(\"bbs-config-with-repos\",\n config_id=\"bbs-config\",\n location=\"us-central1\",\n host_uri=\"https://bbs.com\",\n secrets={\n \"adminAccessTokenVersionName\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"readAccessTokenVersionName\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"webhookSecretVersionName\": \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username=\"test\",\n api_key=\"\u003capi-key\u003e\",\n connected_repositories=[\n {\n \"projectKey\": \"DEV\",\n \"repoSlug\": \"repo1\",\n },\n {\n \"projectKey\": \"PROD\",\n \"repoSlug\": \"repo1\",\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 bbs_config_with_repos = new Gcp.CloudBuild.BitbucketServerConfig(\"bbs-config-with-repos\", new()\n {\n ConfigId = \"bbs-config\",\n Location = \"us-central1\",\n HostUri = \"https://bbs.com\",\n Secrets = new Gcp.CloudBuild.Inputs.BitbucketServerConfigSecretsArgs\n {\n AdminAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n ReadAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n WebhookSecretVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n Username = \"test\",\n ApiKey = \"\u003capi-key\u003e\",\n ConnectedRepositories = new[]\n {\n new Gcp.CloudBuild.Inputs.BitbucketServerConfigConnectedRepositoryArgs\n {\n ProjectKey = \"DEV\",\n RepoSlug = \"repo1\",\n },\n new Gcp.CloudBuild.Inputs.BitbucketServerConfigConnectedRepositoryArgs\n {\n ProjectKey = \"PROD\",\n RepoSlug = \"repo1\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewBitbucketServerConfig(ctx, \"bbs-config-with-repos\", \u0026cloudbuild.BitbucketServerConfigArgs{\n\t\t\tConfigId: pulumi.String(\"bbs-config\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHostUri: pulumi.String(\"https://bbs.com\"),\n\t\t\tSecrets: \u0026cloudbuild.BitbucketServerConfigSecretsArgs{\n\t\t\t\tAdminAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tReadAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tWebhookSecretVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t},\n\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\tApiKey: pulumi.String(\"\u003capi-key\u003e\"),\n\t\t\tConnectedRepositories: cloudbuild.BitbucketServerConfigConnectedRepositoryArray{\n\t\t\t\t\u0026cloudbuild.BitbucketServerConfigConnectedRepositoryArgs{\n\t\t\t\t\tProjectKey: pulumi.String(\"DEV\"),\n\t\t\t\t\tRepoSlug: pulumi.String(\"repo1\"),\n\t\t\t\t},\n\t\t\t\t\u0026cloudbuild.BitbucketServerConfigConnectedRepositoryArgs{\n\t\t\t\t\tProjectKey: pulumi.String(\"PROD\"),\n\t\t\t\t\tRepoSlug: pulumi.String(\"repo1\"),\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.cloudbuild.BitbucketServerConfig;\nimport com.pulumi.gcp.cloudbuild.BitbucketServerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.BitbucketServerConfigSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.BitbucketServerConfigConnectedRepositoryArgs;\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_config_with_repos = new BitbucketServerConfig(\"bbs-config-with-repos\", BitbucketServerConfigArgs.builder()\n .configId(\"bbs-config\")\n .location(\"us-central1\")\n .hostUri(\"https://bbs.com\")\n .secrets(BitbucketServerConfigSecretsArgs.builder()\n .adminAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .readAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .webhookSecretVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .build())\n .username(\"test\")\n .apiKey(\"\u003capi-key\u003e\")\n .connectedRepositories( \n BitbucketServerConfigConnectedRepositoryArgs.builder()\n .projectKey(\"DEV\")\n .repoSlug(\"repo1\")\n .build(),\n BitbucketServerConfigConnectedRepositoryArgs.builder()\n .projectKey(\"PROD\")\n .repoSlug(\"repo1\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-config-with-repos:\n type: gcp:cloudbuild:BitbucketServerConfig\n properties:\n configId: bbs-config\n location: us-central1\n hostUri: https://bbs.com\n secrets:\n adminAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n readAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n webhookSecretVersionName: projects/myProject/secrets/mybbspat/versions/1\n username: test\n apiKey: \u003capi-key\u003e\n connectedRepositories:\n - projectKey: DEV\n repoSlug: repo1\n - projectKey: PROD\n repoSlug: repo1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Bitbucket Server Config Peered Network\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst servicenetworking = new gcp.projects.Service(\"servicenetworking\", {\n service: \"servicenetworking.googleapis.com\",\n disableOnDestroy: false,\n});\nconst vpcNetwork = new gcp.compute.Network(\"vpc_network\", {name: \"vpc-network\"}, {\n dependsOn: [servicenetworking],\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"private-ip-alloc\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: vpcNetwork.id,\n});\nconst _default = new gcp.servicenetworking.Connection(\"default\", {\n network: vpcNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n}, {\n dependsOn: [servicenetworking],\n});\nconst bbs_config_with_peered_network = new gcp.cloudbuild.BitbucketServerConfig(\"bbs-config-with-peered-network\", {\n configId: \"bbs-config\",\n location: \"us-central1\",\n hostUri: \"https://bbs.com\",\n secrets: {\n adminAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n readAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n webhookSecretVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username: \"test\",\n apiKey: \"\u003capi-key\u003e\",\n peeredNetwork: pulumi.all([vpcNetwork.id, project, project]).apply(([id, project, project1]) =\u003e std.replaceOutput({\n text: id,\n search: project.name,\n replace: project1.number,\n })).apply(invoke =\u003e invoke.result),\n sslCa: `-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n`,\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\nservicenetworking = gcp.projects.Service(\"servicenetworking\",\n service=\"servicenetworking.googleapis.com\",\n disable_on_destroy=False)\nvpc_network = gcp.compute.Network(\"vpc_network\", name=\"vpc-network\",\nopts = pulumi.ResourceOptions(depends_on=[servicenetworking]))\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"private-ip-alloc\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=vpc_network.id)\ndefault = gcp.servicenetworking.Connection(\"default\",\n network=vpc_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name],\n opts = pulumi.ResourceOptions(depends_on=[servicenetworking]))\nbbs_config_with_peered_network = gcp.cloudbuild.BitbucketServerConfig(\"bbs-config-with-peered-network\",\n config_id=\"bbs-config\",\n location=\"us-central1\",\n host_uri=\"https://bbs.com\",\n secrets={\n \"adminAccessTokenVersionName\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"readAccessTokenVersionName\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"webhookSecretVersionName\": \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username=\"test\",\n api_key=\"\u003capi-key\u003e\",\n peered_network=vpc_network.id.apply(lambda id: std.replace_output(text=id,\n search=project.name,\n replace=project.number)).apply(lambda invoke: invoke.result),\n ssl_ca=\"\"\"-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n\"\"\",\n opts = pulumi.ResourceOptions(depends_on=[default]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var servicenetworking = new Gcp.Projects.Service(\"servicenetworking\", new()\n {\n ServiceName = \"servicenetworking.googleapis.com\",\n DisableOnDestroy = false,\n });\n\n var vpcNetwork = new Gcp.Compute.Network(\"vpc_network\", new()\n {\n Name = \"vpc-network\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n servicenetworking,\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"private-ip-alloc\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = vpcNetwork.Id,\n });\n\n var @default = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = vpcNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n servicenetworking,\n },\n });\n\n var bbs_config_with_peered_network = new Gcp.CloudBuild.BitbucketServerConfig(\"bbs-config-with-peered-network\", new()\n {\n ConfigId = \"bbs-config\",\n Location = \"us-central1\",\n HostUri = \"https://bbs.com\",\n Secrets = new Gcp.CloudBuild.Inputs.BitbucketServerConfigSecretsArgs\n {\n AdminAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n ReadAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n WebhookSecretVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n Username = \"test\",\n ApiKey = \"\u003capi-key\u003e\",\n PeeredNetwork = Output.Tuple(vpcNetwork.Id, project, project).Apply(values =\u003e\n {\n var id = values.Item1;\n var project = values.Item2;\n var project1 = values.Item3;\n return Std.Replace.Invoke(new()\n {\n Text = id,\n Search = project.Apply(getProjectResult =\u003e getProjectResult.Name),\n Replace = project1.Number,\n });\n }).Apply(invoke =\u003e invoke.Result),\n SslCa = @\"-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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\tservicenetworking, err := projects.NewService(ctx, \"servicenetworking\", \u0026projects.ServiceArgs{\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tDisableOnDestroy: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcNetwork, err := compute.NewNetwork(ctx, \"vpc_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"vpc-network\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tservicenetworking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"private-ip-alloc\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: vpcNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = servicenetworking.NewConnection(ctx, \"default\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: vpcNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tservicenetworking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewBitbucketServerConfig(ctx, \"bbs-config-with-peered-network\", \u0026cloudbuild.BitbucketServerConfigArgs{\n\t\t\tConfigId: pulumi.String(\"bbs-config\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHostUri: pulumi.String(\"https://bbs.com\"),\n\t\t\tSecrets: \u0026cloudbuild.BitbucketServerConfigSecretsArgs{\n\t\t\t\tAdminAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tReadAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tWebhookSecretVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t},\n\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\tApiKey: pulumi.String(\"\u003capi-key\u003e\"),\n\t\t\tPeeredNetwork: vpcNetwork.ID().ApplyT(func(id string) (std.ReplaceResult, error) {\n\t\t\t\treturn std.ReplaceOutput(ctx, std.ReplaceOutputArgs{\n\t\t\t\t\tText: id,\n\t\t\t\t\tSearch: project.Name,\n\t\t\t\t\tReplace: project.Number,\n\t\t\t\t}, nil), nil\n\t\t\t}).(std.ReplaceResultOutput).ApplyT(func(invoke std.ReplaceResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\tSslCa: pulumi.String(\"-----BEGIN CERTIFICATE-----\\n-----END CERTIFICATE-----\\n-----BEGIN CERTIFICATE-----\\n-----END CERTIFICATE-----\\n\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\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.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\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.cloudbuild.BitbucketServerConfig;\nimport com.pulumi.gcp.cloudbuild.BitbucketServerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.BitbucketServerConfigSecretsArgs;\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 servicenetworking = new Service(\"servicenetworking\", ServiceArgs.builder()\n .service(\"servicenetworking.googleapis.com\")\n .disableOnDestroy(false)\n .build());\n\n var vpcNetwork = new Network(\"vpcNetwork\", NetworkArgs.builder()\n .name(\"vpc-network\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(servicenetworking)\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"private-ip-alloc\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(vpcNetwork.id())\n .build());\n\n var default_ = new Connection(\"default\", ConnectionArgs.builder()\n .network(vpcNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(servicenetworking)\n .build());\n\n var bbs_config_with_peered_network = new BitbucketServerConfig(\"bbs-config-with-peered-network\", BitbucketServerConfigArgs.builder()\n .configId(\"bbs-config\")\n .location(\"us-central1\")\n .hostUri(\"https://bbs.com\")\n .secrets(BitbucketServerConfigSecretsArgs.builder()\n .adminAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .readAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .webhookSecretVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .build())\n .username(\"test\")\n .apiKey(\"\u003capi-key\u003e\")\n .peeredNetwork(vpcNetwork.id().applyValue(id -\u003e StdFunctions.replace()).applyValue(invoke -\u003e invoke.result()))\n .sslCa(\"\"\"\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n \"\"\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicenetworking:\n type: gcp:projects:Service\n properties:\n service: servicenetworking.googleapis.com\n disableOnDestroy: false\n vpcNetwork:\n type: gcp:compute:Network\n name: vpc_network\n properties:\n name: vpc-network\n options:\n dependson:\n - ${servicenetworking}\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: private-ip-alloc\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${vpcNetwork.id}\n default:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${vpcNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n options:\n dependson:\n - ${servicenetworking}\n bbs-config-with-peered-network:\n type: gcp:cloudbuild:BitbucketServerConfig\n properties:\n configId: bbs-config\n location: us-central1\n hostUri: https://bbs.com\n secrets:\n adminAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n readAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n webhookSecretVersionName: projects/myProject/secrets/mybbspat/versions/1\n username: test\n apiKey: \u003capi-key\u003e\n peeredNetwork:\n fn::invoke:\n Function: std:replace\n Arguments:\n text: ${vpcNetwork.id}\n search: ${project.name}\n replace: ${project.number}\n Return: result\n sslCa: |\n -----BEGIN CERTIFICATE-----\n -----END CERTIFICATE-----\n -----BEGIN CERTIFICATE-----\n -----END CERTIFICATE-----\n options:\n dependson:\n - ${default}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBitbucketServerConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/bitbucketServerConfigs/{{config_id}}`\n\n* `{{project}}/{{location}}/{{config_id}}`\n\n* `{{location}}/{{config_id}}`\n\nWhen using the `pulumi import` command, BitbucketServerConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuild/bitbucketServerConfig:BitbucketServerConfig default projects/{{project}}/locations/{{location}}/bitbucketServerConfigs/{{config_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/bitbucketServerConfig:BitbucketServerConfig default {{project}}/{{location}}/{{config_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/bitbucketServerConfig:BitbucketServerConfig default {{location}}/{{config_id}}\n```\n\n", + "description": "BitbucketServerConfig represents the configuration for a Bitbucket Server.\n\n\nTo get more information about BitbucketServerConfig, see:\n\n* [API documentation](https://cloud.google.com/build/docs/api/reference/rest/v1/projects.locations.bitbucketServerConfigs)\n* How-to Guides\n * [Connect to a Bitbucket Server host](https://cloud.google.com/build/docs/automating-builds/bitbucket/connect-host-bitbucket-server)\n\n## Example Usage\n\n### Cloudbuild Bitbucket Server Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_config = new gcp.cloudbuild.BitbucketServerConfig(\"bbs-config\", {\n configId: \"bbs-config\",\n location: \"us-central1\",\n hostUri: \"https://bbs.com\",\n secrets: {\n adminAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n readAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n webhookSecretVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username: \"test\",\n apiKey: \"\u003capi-key\u003e\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_config = gcp.cloudbuild.BitbucketServerConfig(\"bbs-config\",\n config_id=\"bbs-config\",\n location=\"us-central1\",\n host_uri=\"https://bbs.com\",\n secrets={\n \"admin_access_token_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"read_access_token_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"webhook_secret_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username=\"test\",\n api_key=\"\u003capi-key\u003e\")\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_config = new Gcp.CloudBuild.BitbucketServerConfig(\"bbs-config\", new()\n {\n ConfigId = \"bbs-config\",\n Location = \"us-central1\",\n HostUri = \"https://bbs.com\",\n Secrets = new Gcp.CloudBuild.Inputs.BitbucketServerConfigSecretsArgs\n {\n AdminAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n ReadAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n WebhookSecretVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n Username = \"test\",\n ApiKey = \"\u003capi-key\u003e\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewBitbucketServerConfig(ctx, \"bbs-config\", \u0026cloudbuild.BitbucketServerConfigArgs{\n\t\t\tConfigId: pulumi.String(\"bbs-config\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHostUri: pulumi.String(\"https://bbs.com\"),\n\t\t\tSecrets: \u0026cloudbuild.BitbucketServerConfigSecretsArgs{\n\t\t\t\tAdminAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tReadAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tWebhookSecretVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t},\n\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\tApiKey: pulumi.String(\"\u003capi-key\u003e\"),\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.BitbucketServerConfig;\nimport com.pulumi.gcp.cloudbuild.BitbucketServerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.BitbucketServerConfigSecretsArgs;\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_config = new BitbucketServerConfig(\"bbs-config\", BitbucketServerConfigArgs.builder()\n .configId(\"bbs-config\")\n .location(\"us-central1\")\n .hostUri(\"https://bbs.com\")\n .secrets(BitbucketServerConfigSecretsArgs.builder()\n .adminAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .readAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .webhookSecretVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .build())\n .username(\"test\")\n .apiKey(\"\u003capi-key\u003e\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-config:\n type: gcp:cloudbuild:BitbucketServerConfig\n properties:\n configId: bbs-config\n location: us-central1\n hostUri: https://bbs.com\n secrets:\n adminAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n readAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n webhookSecretVersionName: projects/myProject/secrets/mybbspat/versions/1\n username: test\n apiKey: \u003capi-key\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Bitbucket Server Config Repositories\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_config_with_repos = new gcp.cloudbuild.BitbucketServerConfig(\"bbs-config-with-repos\", {\n configId: \"bbs-config\",\n location: \"us-central1\",\n hostUri: \"https://bbs.com\",\n secrets: {\n adminAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n readAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n webhookSecretVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username: \"test\",\n apiKey: \"\u003capi-key\u003e\",\n connectedRepositories: [\n {\n projectKey: \"DEV\",\n repoSlug: \"repo1\",\n },\n {\n projectKey: \"PROD\",\n repoSlug: \"repo1\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_config_with_repos = gcp.cloudbuild.BitbucketServerConfig(\"bbs-config-with-repos\",\n config_id=\"bbs-config\",\n location=\"us-central1\",\n host_uri=\"https://bbs.com\",\n secrets={\n \"admin_access_token_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"read_access_token_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"webhook_secret_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username=\"test\",\n api_key=\"\u003capi-key\u003e\",\n connected_repositories=[\n {\n \"project_key\": \"DEV\",\n \"repo_slug\": \"repo1\",\n },\n {\n \"project_key\": \"PROD\",\n \"repo_slug\": \"repo1\",\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 bbs_config_with_repos = new Gcp.CloudBuild.BitbucketServerConfig(\"bbs-config-with-repos\", new()\n {\n ConfigId = \"bbs-config\",\n Location = \"us-central1\",\n HostUri = \"https://bbs.com\",\n Secrets = new Gcp.CloudBuild.Inputs.BitbucketServerConfigSecretsArgs\n {\n AdminAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n ReadAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n WebhookSecretVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n Username = \"test\",\n ApiKey = \"\u003capi-key\u003e\",\n ConnectedRepositories = new[]\n {\n new Gcp.CloudBuild.Inputs.BitbucketServerConfigConnectedRepositoryArgs\n {\n ProjectKey = \"DEV\",\n RepoSlug = \"repo1\",\n },\n new Gcp.CloudBuild.Inputs.BitbucketServerConfigConnectedRepositoryArgs\n {\n ProjectKey = \"PROD\",\n RepoSlug = \"repo1\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewBitbucketServerConfig(ctx, \"bbs-config-with-repos\", \u0026cloudbuild.BitbucketServerConfigArgs{\n\t\t\tConfigId: pulumi.String(\"bbs-config\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHostUri: pulumi.String(\"https://bbs.com\"),\n\t\t\tSecrets: \u0026cloudbuild.BitbucketServerConfigSecretsArgs{\n\t\t\t\tAdminAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tReadAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tWebhookSecretVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t},\n\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\tApiKey: pulumi.String(\"\u003capi-key\u003e\"),\n\t\t\tConnectedRepositories: cloudbuild.BitbucketServerConfigConnectedRepositoryArray{\n\t\t\t\t\u0026cloudbuild.BitbucketServerConfigConnectedRepositoryArgs{\n\t\t\t\t\tProjectKey: pulumi.String(\"DEV\"),\n\t\t\t\t\tRepoSlug: pulumi.String(\"repo1\"),\n\t\t\t\t},\n\t\t\t\t\u0026cloudbuild.BitbucketServerConfigConnectedRepositoryArgs{\n\t\t\t\t\tProjectKey: pulumi.String(\"PROD\"),\n\t\t\t\t\tRepoSlug: pulumi.String(\"repo1\"),\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.cloudbuild.BitbucketServerConfig;\nimport com.pulumi.gcp.cloudbuild.BitbucketServerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.BitbucketServerConfigSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.BitbucketServerConfigConnectedRepositoryArgs;\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_config_with_repos = new BitbucketServerConfig(\"bbs-config-with-repos\", BitbucketServerConfigArgs.builder()\n .configId(\"bbs-config\")\n .location(\"us-central1\")\n .hostUri(\"https://bbs.com\")\n .secrets(BitbucketServerConfigSecretsArgs.builder()\n .adminAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .readAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .webhookSecretVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .build())\n .username(\"test\")\n .apiKey(\"\u003capi-key\u003e\")\n .connectedRepositories( \n BitbucketServerConfigConnectedRepositoryArgs.builder()\n .projectKey(\"DEV\")\n .repoSlug(\"repo1\")\n .build(),\n BitbucketServerConfigConnectedRepositoryArgs.builder()\n .projectKey(\"PROD\")\n .repoSlug(\"repo1\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-config-with-repos:\n type: gcp:cloudbuild:BitbucketServerConfig\n properties:\n configId: bbs-config\n location: us-central1\n hostUri: https://bbs.com\n secrets:\n adminAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n readAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n webhookSecretVersionName: projects/myProject/secrets/mybbspat/versions/1\n username: test\n apiKey: \u003capi-key\u003e\n connectedRepositories:\n - projectKey: DEV\n repoSlug: repo1\n - projectKey: PROD\n repoSlug: repo1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Bitbucket Server Config Peered Network\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst servicenetworking = new gcp.projects.Service(\"servicenetworking\", {\n service: \"servicenetworking.googleapis.com\",\n disableOnDestroy: false,\n});\nconst vpcNetwork = new gcp.compute.Network(\"vpc_network\", {name: \"vpc-network\"}, {\n dependsOn: [servicenetworking],\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"private-ip-alloc\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: vpcNetwork.id,\n});\nconst _default = new gcp.servicenetworking.Connection(\"default\", {\n network: vpcNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n}, {\n dependsOn: [servicenetworking],\n});\nconst bbs_config_with_peered_network = new gcp.cloudbuild.BitbucketServerConfig(\"bbs-config-with-peered-network\", {\n configId: \"bbs-config\",\n location: \"us-central1\",\n hostUri: \"https://bbs.com\",\n secrets: {\n adminAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n readAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n webhookSecretVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username: \"test\",\n apiKey: \"\u003capi-key\u003e\",\n peeredNetwork: pulumi.all([vpcNetwork.id, project, project]).apply(([id, project, project1]) =\u003e std.replaceOutput({\n text: id,\n search: project.name,\n replace: project1.number,\n })).apply(invoke =\u003e invoke.result),\n sslCa: `-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n`,\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\nservicenetworking = gcp.projects.Service(\"servicenetworking\",\n service=\"servicenetworking.googleapis.com\",\n disable_on_destroy=False)\nvpc_network = gcp.compute.Network(\"vpc_network\", name=\"vpc-network\",\nopts = pulumi.ResourceOptions(depends_on=[servicenetworking]))\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"private-ip-alloc\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=vpc_network.id)\ndefault = gcp.servicenetworking.Connection(\"default\",\n network=vpc_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name],\n opts = pulumi.ResourceOptions(depends_on=[servicenetworking]))\nbbs_config_with_peered_network = gcp.cloudbuild.BitbucketServerConfig(\"bbs-config-with-peered-network\",\n config_id=\"bbs-config\",\n location=\"us-central1\",\n host_uri=\"https://bbs.com\",\n secrets={\n \"admin_access_token_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"read_access_token_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"webhook_secret_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username=\"test\",\n api_key=\"\u003capi-key\u003e\",\n peered_network=vpc_network.id.apply(lambda id: std.replace_output(text=id,\n search=project.name,\n replace=project.number)).apply(lambda invoke: invoke.result),\n ssl_ca=\"\"\"-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n\"\"\",\n opts = pulumi.ResourceOptions(depends_on=[default]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var servicenetworking = new Gcp.Projects.Service(\"servicenetworking\", new()\n {\n ServiceName = \"servicenetworking.googleapis.com\",\n DisableOnDestroy = false,\n });\n\n var vpcNetwork = new Gcp.Compute.Network(\"vpc_network\", new()\n {\n Name = \"vpc-network\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n servicenetworking,\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"private-ip-alloc\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = vpcNetwork.Id,\n });\n\n var @default = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = vpcNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n servicenetworking,\n },\n });\n\n var bbs_config_with_peered_network = new Gcp.CloudBuild.BitbucketServerConfig(\"bbs-config-with-peered-network\", new()\n {\n ConfigId = \"bbs-config\",\n Location = \"us-central1\",\n HostUri = \"https://bbs.com\",\n Secrets = new Gcp.CloudBuild.Inputs.BitbucketServerConfigSecretsArgs\n {\n AdminAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n ReadAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n WebhookSecretVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n Username = \"test\",\n ApiKey = \"\u003capi-key\u003e\",\n PeeredNetwork = Output.Tuple(vpcNetwork.Id, project, project).Apply(values =\u003e\n {\n var id = values.Item1;\n var project = values.Item2;\n var project1 = values.Item3;\n return Std.Replace.Invoke(new()\n {\n Text = id,\n Search = project.Apply(getProjectResult =\u003e getProjectResult.Name),\n Replace = project1.Number,\n });\n }).Apply(invoke =\u003e invoke.Result),\n SslCa = @\"-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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\tservicenetworking, err := projects.NewService(ctx, \"servicenetworking\", \u0026projects.ServiceArgs{\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tDisableOnDestroy: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcNetwork, err := compute.NewNetwork(ctx, \"vpc_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"vpc-network\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tservicenetworking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"private-ip-alloc\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: vpcNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = servicenetworking.NewConnection(ctx, \"default\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: vpcNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tservicenetworking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewBitbucketServerConfig(ctx, \"bbs-config-with-peered-network\", \u0026cloudbuild.BitbucketServerConfigArgs{\n\t\t\tConfigId: pulumi.String(\"bbs-config\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHostUri: pulumi.String(\"https://bbs.com\"),\n\t\t\tSecrets: \u0026cloudbuild.BitbucketServerConfigSecretsArgs{\n\t\t\t\tAdminAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tReadAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tWebhookSecretVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t},\n\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\tApiKey: pulumi.String(\"\u003capi-key\u003e\"),\n\t\t\tPeeredNetwork: pulumi.String(vpcNetwork.ID().ApplyT(func(id string) (std.ReplaceResult, error) {\n\t\t\t\treturn std.ReplaceResult(interface{}(std.ReplaceOutput(ctx, std.ReplaceOutputArgs{\n\t\t\t\t\tText: id,\n\t\t\t\t\tSearch: project.Name,\n\t\t\t\t\tReplace: project.Number,\n\t\t\t\t}, nil))), nil\n\t\t\t}).(std.ReplaceResultOutput).ApplyT(func(invoke std.ReplaceResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tSslCa: pulumi.String(\"-----BEGIN CERTIFICATE-----\\n-----END CERTIFICATE-----\\n-----BEGIN CERTIFICATE-----\\n-----END CERTIFICATE-----\\n\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\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.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\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.cloudbuild.BitbucketServerConfig;\nimport com.pulumi.gcp.cloudbuild.BitbucketServerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.BitbucketServerConfigSecretsArgs;\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 servicenetworking = new Service(\"servicenetworking\", ServiceArgs.builder()\n .service(\"servicenetworking.googleapis.com\")\n .disableOnDestroy(false)\n .build());\n\n var vpcNetwork = new Network(\"vpcNetwork\", NetworkArgs.builder()\n .name(\"vpc-network\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(servicenetworking)\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"private-ip-alloc\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(vpcNetwork.id())\n .build());\n\n var default_ = new Connection(\"default\", ConnectionArgs.builder()\n .network(vpcNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(servicenetworking)\n .build());\n\n var bbs_config_with_peered_network = new BitbucketServerConfig(\"bbs-config-with-peered-network\", BitbucketServerConfigArgs.builder()\n .configId(\"bbs-config\")\n .location(\"us-central1\")\n .hostUri(\"https://bbs.com\")\n .secrets(BitbucketServerConfigSecretsArgs.builder()\n .adminAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .readAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .webhookSecretVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .build())\n .username(\"test\")\n .apiKey(\"\u003capi-key\u003e\")\n .peeredNetwork(vpcNetwork.id().applyValue(id -\u003e StdFunctions.replace()).applyValue(invoke -\u003e invoke.result()))\n .sslCa(\"\"\"\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n \"\"\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicenetworking:\n type: gcp:projects:Service\n properties:\n service: servicenetworking.googleapis.com\n disableOnDestroy: false\n vpcNetwork:\n type: gcp:compute:Network\n name: vpc_network\n properties:\n name: vpc-network\n options:\n dependson:\n - ${servicenetworking}\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: private-ip-alloc\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${vpcNetwork.id}\n default:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${vpcNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n options:\n dependson:\n - ${servicenetworking}\n bbs-config-with-peered-network:\n type: gcp:cloudbuild:BitbucketServerConfig\n properties:\n configId: bbs-config\n location: us-central1\n hostUri: https://bbs.com\n secrets:\n adminAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n readAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n webhookSecretVersionName: projects/myProject/secrets/mybbspat/versions/1\n username: test\n apiKey: \u003capi-key\u003e\n peeredNetwork:\n fn::invoke:\n Function: std:replace\n Arguments:\n text: ${vpcNetwork.id}\n search: ${project.name}\n replace: ${project.number}\n Return: result\n sslCa: |\n -----BEGIN CERTIFICATE-----\n -----END CERTIFICATE-----\n -----BEGIN CERTIFICATE-----\n -----END CERTIFICATE-----\n options:\n dependson:\n - ${default}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBitbucketServerConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/bitbucketServerConfigs/{{config_id}}`\n\n* `{{project}}/{{location}}/{{config_id}}`\n\n* `{{location}}/{{config_id}}`\n\nWhen using the `pulumi import` command, BitbucketServerConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuild/bitbucketServerConfig:BitbucketServerConfig default projects/{{project}}/locations/{{location}}/bitbucketServerConfigs/{{config_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/bitbucketServerConfig:BitbucketServerConfig default {{project}}/{{location}}/{{config_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/bitbucketServerConfig:BitbucketServerConfig default {{location}}/{{config_id}}\n```\n\n", "properties": { "apiKey": { "type": "string", @@ -132619,7 +132619,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## Example Usage\n\n### Cloudbuild Trigger Filename\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 location: \"us-central1\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfilename_trigger = gcp.cloudbuild.Trigger(\"filename-trigger\",\n location=\"us-central1\",\n trigger_template={\n \"branchName\": \"main\",\n \"repoName\": \"my-repo\",\n },\n substitutions={\n \"_FOO\": \"bar\",\n \"_BAZ\": \"qux\",\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 filename_trigger = new Gcp.CloudBuild.Trigger(\"filename-trigger\", new()\n {\n Location = \"us-central1\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tLocation: pulumi.String(\"us-central1\"),\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\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\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.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 .location(\"us-central1\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n filename-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n triggerTemplate:\n branchName: main\n repoName: my-repo\n substitutions:\n _FOO: bar\n _BAZ: qux\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Build\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst build_trigger = new gcp.cloudbuild.Trigger(\"build-trigger\", {\n name: \"my-trigger\",\n location: \"global\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n build: {\n steps: [\n {\n name: \"gcr.io/cloud-builders/gsutil\",\n args: [\n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\",\n ],\n timeout: \"120s\",\n secretEnvs: [\"MY_SECRET\"],\n },\n {\n name: \"ubuntu\",\n script: \"echo hello\",\n },\n ],\n source: {\n storageSource: {\n bucket: \"mybucket\",\n object: \"source_code.tar.gz\",\n },\n },\n tags: [\n \"build\",\n \"newFeature\",\n ],\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n queueTtl: \"20s\",\n logsBucket: \"gs://mybucket/logs\",\n secrets: [{\n kmsKeyName: \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n secretEnv: {\n PASSWORD: \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n availableSecrets: {\n secretManagers: [{\n env: \"MY_SECRET\",\n versionName: \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n artifacts: {\n images: [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n objects: {\n location: \"gs://bucket/path/to/somewhere/\",\n paths: [\"path\"],\n },\n npmPackages: [{\n packagePath: \"package.json\",\n repository: \"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\",\n }],\n pythonPackages: [{\n paths: [\"dist/*\"],\n repository: \"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\",\n }],\n mavenArtifacts: [{\n repository: \"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\",\n path: \"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\",\n artifactId: \"my-app\",\n groupId: \"com.mycompany.app\",\n version: \"1.0\",\n }],\n },\n options: {\n sourceProvenanceHashes: [\"MD5\"],\n requestedVerifyOption: \"VERIFIED\",\n machineType: \"N1_HIGHCPU_8\",\n diskSizeGb: 100,\n substitutionOption: \"ALLOW_LOOSE\",\n dynamicSubstitutions: true,\n logStreamingOption: \"STREAM_OFF\",\n workerPool: \"pool\",\n logging: \"LEGACY\",\n envs: [\"ekey = evalue\"],\n secretEnvs: [\"secretenv = svalue\"],\n volumes: [{\n name: \"v1\",\n path: \"v1\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbuild_trigger = gcp.cloudbuild.Trigger(\"build-trigger\",\n name=\"my-trigger\",\n location=\"global\",\n trigger_template={\n \"branchName\": \"main\",\n \"repoName\": \"my-repo\",\n },\n build={\n \"steps\": [\n {\n \"name\": \"gcr.io/cloud-builders/gsutil\",\n \"args\": [\n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\",\n ],\n \"timeout\": \"120s\",\n \"secretEnvs\": [\"MY_SECRET\"],\n },\n {\n \"name\": \"ubuntu\",\n \"script\": \"echo hello\",\n },\n ],\n \"source\": {\n \"storageSource\": {\n \"bucket\": \"mybucket\",\n \"object\": \"source_code.tar.gz\",\n },\n },\n \"tags\": [\n \"build\",\n \"newFeature\",\n ],\n \"substitutions\": {\n \"_FOO\": \"bar\",\n \"_BAZ\": \"qux\",\n },\n \"queueTtl\": \"20s\",\n \"logsBucket\": \"gs://mybucket/logs\",\n \"secrets\": [{\n \"kmsKeyName\": \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n \"secretEnv\": {\n \"PASSWORD\": \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n \"availableSecrets\": {\n \"secretManagers\": [{\n \"env\": \"MY_SECRET\",\n \"versionName\": \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n \"artifacts\": {\n \"images\": [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n \"objects\": {\n \"location\": \"gs://bucket/path/to/somewhere/\",\n \"paths\": [\"path\"],\n },\n \"npmPackages\": [{\n \"packagePath\": \"package.json\",\n \"repository\": \"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\",\n }],\n \"pythonPackages\": [{\n \"paths\": [\"dist/*\"],\n \"repository\": \"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\",\n }],\n \"mavenArtifacts\": [{\n \"repository\": \"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\",\n \"path\": \"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\",\n \"artifactId\": \"my-app\",\n \"groupId\": \"com.mycompany.app\",\n \"version\": \"1.0\",\n }],\n },\n \"options\": {\n \"sourceProvenanceHashes\": [\"MD5\"],\n \"requestedVerifyOption\": \"VERIFIED\",\n \"machineType\": \"N1_HIGHCPU_8\",\n \"diskSizeGb\": 100,\n \"substitutionOption\": \"ALLOW_LOOSE\",\n \"dynamicSubstitutions\": True,\n \"logStreamingOption\": \"STREAM_OFF\",\n \"workerPool\": \"pool\",\n \"logging\": \"LEGACY\",\n \"envs\": [\"ekey = evalue\"],\n \"secretEnvs\": [\"secretenv = svalue\"],\n \"volumes\": [{\n \"name\": \"v1\",\n \"path\": \"v1\",\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 build_trigger = new Gcp.CloudBuild.Trigger(\"build-trigger\", new()\n {\n Name = \"my-trigger\",\n Location = \"global\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Build = new Gcp.CloudBuild.Inputs.TriggerBuildArgs\n {\n Steps = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"gcr.io/cloud-builders/gsutil\",\n Args = new[]\n {\n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\",\n },\n Timeout = \"120s\",\n SecretEnvs = new[]\n {\n \"MY_SECRET\",\n },\n },\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"ubuntu\",\n Script = \"echo hello\",\n },\n },\n Source = new Gcp.CloudBuild.Inputs.TriggerBuildSourceArgs\n {\n StorageSource = new Gcp.CloudBuild.Inputs.TriggerBuildSourceStorageSourceArgs\n {\n Bucket = \"mybucket\",\n Object = \"source_code.tar.gz\",\n },\n },\n Tags = new[]\n {\n \"build\",\n \"newFeature\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n QueueTtl = \"20s\",\n LogsBucket = \"gs://mybucket/logs\",\n Secrets = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildSecretArgs\n {\n KmsKeyName = \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n SecretEnv = \n {\n { \"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\" },\n },\n },\n },\n AvailableSecrets = new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsArgs\n {\n SecretManagers = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsSecretManagerArgs\n {\n Env = \"MY_SECRET\",\n VersionName = \"projects/myProject/secrets/mySecret/versions/latest\",\n },\n },\n },\n Artifacts = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsArgs\n {\n Images = new[]\n {\n \"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\",\n },\n Objects = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsObjectsArgs\n {\n Location = \"gs://bucket/path/to/somewhere/\",\n Paths = new[]\n {\n \"path\",\n },\n },\n NpmPackages = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsNpmPackageArgs\n {\n PackagePath = \"package.json\",\n Repository = \"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\",\n },\n },\n PythonPackages = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsPythonPackageArgs\n {\n Paths = new[]\n {\n \"dist/*\",\n },\n Repository = \"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\",\n },\n },\n MavenArtifacts = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsMavenArtifactArgs\n {\n Repository = \"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\",\n Path = \"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\",\n ArtifactId = \"my-app\",\n GroupId = \"com.mycompany.app\",\n Version = \"1.0\",\n },\n },\n },\n Options = new Gcp.CloudBuild.Inputs.TriggerBuildOptionsArgs\n {\n SourceProvenanceHashes = new[]\n {\n \"MD5\",\n },\n RequestedVerifyOption = \"VERIFIED\",\n MachineType = \"N1_HIGHCPU_8\",\n DiskSizeGb = 100,\n SubstitutionOption = \"ALLOW_LOOSE\",\n DynamicSubstitutions = true,\n LogStreamingOption = \"STREAM_OFF\",\n WorkerPool = \"pool\",\n Logging = \"LEGACY\",\n Envs = new[]\n {\n \"ekey = evalue\",\n },\n SecretEnvs = new[]\n {\n \"secretenv = svalue\",\n },\n Volumes = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildOptionsVolumeArgs\n {\n Name = \"v1\",\n Path = \"v1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"build-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"my-trigger\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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\tBuild: \u0026cloudbuild.TriggerBuildArgs{\n\t\t\t\tSteps: cloudbuild.TriggerBuildStepArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"gcr.io/cloud-builders/gsutil\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"cp\"),\n\t\t\t\t\t\t\tpulumi.String(\"gs://mybucket/remotefile.zip\"),\n\t\t\t\t\t\t\tpulumi.String(\"localfile.zip\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTimeout: pulumi.String(\"120s\"),\n\t\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"ubuntu\"),\n\t\t\t\t\t\tScript: pulumi.String(\"echo hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudbuild.TriggerBuildSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudbuild.TriggerBuildSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: pulumi.String(\"mybucket\"),\n\t\t\t\t\t\tObject: pulumi.String(\"source_code.tar.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"build\"),\n\t\t\t\t\tpulumi.String(\"newFeature\"),\n\t\t\t\t},\n\t\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t},\n\t\t\t\tQueueTtl: pulumi.String(\"20s\"),\n\t\t\t\tLogsBucket: pulumi.String(\"gs://mybucket/logs\"),\n\t\t\t\tSecrets: cloudbuild.TriggerBuildSecretArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildSecretArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\"),\n\t\t\t\t\t\tSecretEnv: pulumi.StringMap{\n\t\t\t\t\t\t\t\"PASSWORD\": pulumi.String(\"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAvailableSecrets: \u0026cloudbuild.TriggerBuildAvailableSecretsArgs{\n\t\t\t\t\tSecretManagers: cloudbuild.TriggerBuildAvailableSecretsSecretManagerArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildAvailableSecretsSecretManagerArgs{\n\t\t\t\t\t\t\tEnv: pulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t\tVersionName: pulumi.String(\"projects/myProject/secrets/mySecret/versions/latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: \u0026cloudbuild.TriggerBuildArtifactsArgs{\n\t\t\t\t\tImages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"),\n\t\t\t\t\t},\n\t\t\t\t\tObjects: \u0026cloudbuild.TriggerBuildArtifactsObjectsArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"gs://bucket/path/to/somewhere/\"),\n\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"path\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tNpmPackages: cloudbuild.TriggerBuildArtifactsNpmPackageArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildArtifactsNpmPackageArgs{\n\t\t\t\t\t\t\tPackagePath: pulumi.String(\"package.json\"),\n\t\t\t\t\t\t\tRepository: pulumi.String(\"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tPythonPackages: cloudbuild.TriggerBuildArtifactsPythonPackageArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildArtifactsPythonPackageArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"dist/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRepository: pulumi.String(\"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMavenArtifacts: cloudbuild.TriggerBuildArtifactsMavenArtifactArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildArtifactsMavenArtifactArgs{\n\t\t\t\t\t\t\tRepository: pulumi.String(\"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\"),\n\t\t\t\t\t\t\tArtifactId: pulumi.String(\"my-app\"),\n\t\t\t\t\t\t\tGroupId: pulumi.String(\"com.mycompany.app\"),\n\t\t\t\t\t\t\tVersion: pulumi.String(\"1.0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOptions: \u0026cloudbuild.TriggerBuildOptionsArgs{\n\t\t\t\t\tSourceProvenanceHashes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MD5\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequestedVerifyOption: pulumi.String(\"VERIFIED\"),\n\t\t\t\t\tMachineType: pulumi.String(\"N1_HIGHCPU_8\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tSubstitutionOption: pulumi.String(\"ALLOW_LOOSE\"),\n\t\t\t\t\tDynamicSubstitutions: pulumi.Bool(true),\n\t\t\t\t\tLogStreamingOption: pulumi.String(\"STREAM_OFF\"),\n\t\t\t\t\tWorkerPool: pulumi.String(\"pool\"),\n\t\t\t\t\tLogging: pulumi.String(\"LEGACY\"),\n\t\t\t\t\tEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ekey = evalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretenv = svalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudbuild.TriggerBuildOptionsVolumeArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildOptionsVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"v1\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"v1\"),\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.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\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 .name(\"my-trigger\")\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build(TriggerBuildArgs.builder()\n .steps( \n TriggerBuildStepArgs.builder()\n .name(\"gcr.io/cloud-builders/gsutil\")\n .args( \n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\")\n .timeout(\"120s\")\n .secretEnvs(\"MY_SECRET\")\n .build(),\n TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .script(\"echo hello\")\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .tags( \n \"build\",\n \"newFeature\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .queueTtl(\"20s\")\n .logsBucket(\"gs://mybucket/logs\")\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 .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManagers(TriggerBuildAvailableSecretsSecretManagerArgs.builder()\n .env(\"MY_SECRET\")\n .versionName(\"projects/myProject/secrets/mySecret/versions/latest\")\n .build())\n .build())\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 .npmPackages(TriggerBuildArtifactsNpmPackageArgs.builder()\n .packagePath(\"package.json\")\n .repository(\"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\")\n .build())\n .pythonPackages(TriggerBuildArtifactsPythonPackageArgs.builder()\n .paths(\"dist/*\")\n .repository(\"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\")\n .build())\n .mavenArtifacts(TriggerBuildArtifactsMavenArtifactArgs.builder()\n .repository(\"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\")\n .path(\"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\")\n .artifactId(\"my-app\")\n .groupId(\"com.mycompany.app\")\n .version(\"1.0\")\n .build())\n .build())\n .options(TriggerBuildOptionsArgs.builder()\n .sourceProvenanceHashes(\"MD5\")\n .requestedVerifyOption(\"VERIFIED\")\n .machineType(\"N1_HIGHCPU_8\")\n .diskSizeGb(100)\n .substitutionOption(\"ALLOW_LOOSE\")\n .dynamicSubstitutions(true)\n .logStreamingOption(\"STREAM_OFF\")\n .workerPool(\"pool\")\n .logging(\"LEGACY\")\n .envs(\"ekey = evalue\")\n .secretEnvs(\"secretenv = svalue\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n build-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: my-trigger\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n build:\n steps:\n - name: gcr.io/cloud-builders/gsutil\n args:\n - cp\n - gs://mybucket/remotefile.zip\n - localfile.zip\n timeout: 120s\n secretEnvs:\n - MY_SECRET\n - name: ubuntu\n script: echo hello\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n tags:\n - build\n - newFeature\n substitutions:\n _FOO: bar\n _BAZ: qux\n queueTtl: 20s\n logsBucket: gs://mybucket/logs\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n availableSecrets:\n secretManagers:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\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 npmPackages:\n - packagePath: package.json\n repository: https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\n pythonPackages:\n - paths:\n - dist/*\n repository: https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\n mavenArtifacts:\n - repository: https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\n path: /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\n artifactId: my-app\n groupId: com.mycompany.app\n version: '1.0'\n options:\n sourceProvenanceHashes:\n - MD5\n requestedVerifyOption: VERIFIED\n machineType: N1_HIGHCPU_8\n diskSizeGb: 100\n substitutionOption: ALLOW_LOOSE\n dynamicSubstitutions: true\n logStreamingOption: STREAM_OFF\n workerPool: pool\n logging: LEGACY\n envs:\n - ekey = evalue\n secretEnvs:\n - secretenv = svalue\n volumes:\n - name: v1\n path: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Service Account\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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(\"cloudbuild_service_account\", {accountId: \"cloud-sa\"});\nconst actAs = new gcp.projects.IAMMember(\"act_as\", {\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(\"logs_writer\", {\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.serviceaccount.Account(\"cloudbuild_service_account\", account_id=\"cloud-sa\")\nact_as = gcp.projects.IAMMember(\"act_as\",\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(\"logs_writer\",\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={\n \"branchName\": \"main\",\n \"repoName\": \"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(\"cloudbuild_service_account\", new()\n {\n AccountId = \"cloud-sa\",\n });\n\n var actAs = new Gcp.Projects.IAMMember(\"act_as\", 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(\"logs_writer\", 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 =\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/v7/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"cloudbuild_service_account\", \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, \"act_as\", \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, \"logs_writer\", \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 name: cloudbuild_service_account\n properties:\n accountId: cloud-sa\n actAs:\n type: gcp:projects:IAMMember\n name: act_as\n properties:\n project: ${project.projectId}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${cloudbuildServiceAccount.email}\n logsWriter:\n type: gcp:projects:IAMMember\n name: logs_writer\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\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Include Build Logs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 location: \"us-central1\",\n name: \"include-build-logs-trigger\",\n filename: \"cloudbuild.yaml\",\n github: {\n owner: \"hashicorp\",\n name: \"terraform-provider-google-beta\",\n push: {\n branch: \"^main$\",\n },\n },\n includeBuildLogs: \"INCLUDE_BUILD_LOGS_WITH_STATUS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninclude_build_logs_trigger = gcp.cloudbuild.Trigger(\"include-build-logs-trigger\",\n location=\"us-central1\",\n name=\"include-build-logs-trigger\",\n filename=\"cloudbuild.yaml\",\n github={\n \"owner\": \"hashicorp\",\n \"name\": \"terraform-provider-google-beta\",\n \"push\": {\n \"branch\": \"^main$\",\n },\n },\n include_build_logs=\"INCLUDE_BUILD_LOGS_WITH_STATUS\")\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 Location = \"us-central1\",\n Name = \"include-build-logs-trigger\",\n Filename = \"cloudbuild.yaml\",\n Github = new Gcp.CloudBuild.Inputs.TriggerGithubArgs\n {\n Owner = \"hashicorp\",\n Name = \"terraform-provider-google-beta\",\n Push = new Gcp.CloudBuild.Inputs.TriggerGithubPushArgs\n {\n Branch = \"^main$\",\n },\n },\n IncludeBuildLogs = \"INCLUDE_BUILD_LOGS_WITH_STATUS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"include-build-logs-trigger\"),\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\tGithub: \u0026cloudbuild.TriggerGithubArgs{\n\t\t\t\tOwner: pulumi.String(\"hashicorp\"),\n\t\t\t\tName: pulumi.String(\"terraform-provider-google-beta\"),\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})\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 .location(\"us-central1\")\n .name(\"include-build-logs-trigger\")\n .filename(\"cloudbuild.yaml\")\n .github(TriggerGithubArgs.builder()\n .owner(\"hashicorp\")\n .name(\"terraform-provider-google-beta\")\n .push(TriggerGithubPushArgs.builder()\n .branch(\"^main$\")\n .build())\n .build())\n .includeBuildLogs(\"INCLUDE_BUILD_LOGS_WITH_STATUS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n include-build-logs-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n name: include-build-logs-trigger\n filename: cloudbuild.yaml\n github:\n owner: hashicorp\n name: terraform-provider-google-beta\n push:\n branch: ^main$\n includeBuildLogs: INCLUDE_BUILD_LOGS_WITH_STATUS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Pubsub Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst mytopic = new gcp.pubsub.Topic(\"mytopic\", {name: \"my-topic\"});\nconst pubsub_config_trigger = new gcp.cloudbuild.Trigger(\"pubsub-config-trigger\", {\n location: \"us-central1\",\n name: \"pubsub-trigger\",\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\", name=\"my-topic\")\npubsub_config_trigger = gcp.cloudbuild.Trigger(\"pubsub-config-trigger\",\n location=\"us-central1\",\n name=\"pubsub-trigger\",\n description=\"acceptance test example pubsub build trigger\",\n pubsub_config={\n \"topic\": mytopic.id,\n },\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repoType\": \"GITHUB\",\n },\n git_file_source={\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```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\", new()\n {\n Name = \"my-topic\",\n });\n\n var pubsub_config_trigger = new Gcp.CloudBuild.Trigger(\"pubsub-config-trigger\", new()\n {\n Location = \"us-central1\",\n Name = \"pubsub-trigger\",\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/v7/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-topic\"),\n\t\t})\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\tName: pulumi.String(\"pubsub-trigger\"),\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.pubsub.TopicArgs;\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\", TopicArgs.builder()\n .name(\"my-topic\")\n .build());\n\n var pubsub_config_trigger = new Trigger(\"pubsub-config-trigger\", TriggerArgs.builder()\n .location(\"us-central1\")\n .name(\"pubsub-trigger\")\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 properties:\n name: my-topic\n pubsub-config-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n name: pubsub-trigger\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\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Webhook Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst webhookTriggerSecretKey = new gcp.secretmanager.Secret(\"webhook_trigger_secret_key\", {\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(\"webhook_trigger_secret_key_data\", {\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 name: \"webhook-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(\"webhook_trigger_secret_key\",\n secret_id=\"webhook-trigger-secret-key\",\n replication={\n \"userManaged\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nwebhook_trigger_secret_key_data = gcp.secretmanager.SecretVersion(\"webhook_trigger_secret_key_data\",\n secret=webhook_trigger_secret_key.id,\n secret_data=\"secretkeygoeshere\")\nproject = gcp.organizations.get_project()\nsecret_accessor = gcp.organizations.get_iam_policy(bindings=[{\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 name=\"webhook-trigger\",\n description=\"acceptance test example webhook build trigger\",\n webhook_config={\n \"secret\": webhook_trigger_secret_key_data.id,\n },\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repoType\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repoType\": \"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(\"webhook_trigger_secret_key\", 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(\"webhook_trigger_secret_key_data\", 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 Name = \"webhook-trigger\",\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/v7/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"webhook_trigger_secret_key\", \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, \"webhook_trigger_secret_key_data\", \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\tName: pulumi.String(\"webhook-trigger\"),\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 .name(\"webhook-trigger\")\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 name: webhook_trigger_secret_key\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 name: webhook_trigger_secret_key_data\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 name: webhook-trigger\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\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Manual\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"manual-trigger\",\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 approvalConfig: {\n approvalRequired: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_trigger = gcp.cloudbuild.Trigger(\"manual-trigger\",\n name=\"manual-trigger\",\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repoType\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repoType\": \"GITHUB\",\n },\n approval_config={\n \"approvalRequired\": 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 manual_trigger = new Gcp.CloudBuild.Trigger(\"manual-trigger\", new()\n {\n Name = \"manual-trigger\",\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 ApprovalConfig = new Gcp.CloudBuild.Inputs.TriggerApprovalConfigArgs\n {\n ApprovalRequired = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"manual-trigger\"),\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\tApprovalConfig: \u0026cloudbuild.TriggerApprovalConfigArgs{\n\t\t\t\tApprovalRequired: 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.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerApprovalConfigArgs;\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 .name(\"manual-trigger\")\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 .approvalConfig(TriggerApprovalConfigArgs.builder()\n .approvalRequired(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: manual-trigger\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 approvalConfig:\n approvalRequired: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Manual Github Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"\",\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n githubEnterpriseConfig: \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n githubEnterpriseConfig: \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_ghe_trigger = gcp.cloudbuild.Trigger(\"manual-ghe-trigger\",\n name=\"\",\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repoType\": \"GITHUB\",\n \"githubEnterpriseConfig\": \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repoType\": \"GITHUB\",\n \"githubEnterpriseConfig\": \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\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 Name = \"\",\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 GithubEnterpriseConfig = \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\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 GithubEnterpriseConfig = \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"\"),\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\tGithubEnterpriseConfig: pulumi.String(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\"),\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\tGithubEnterpriseConfig: pulumi.String(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\"),\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.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 manual_ghe_trigger = new Trigger(\"manual-ghe-trigger\", TriggerArgs.builder()\n .name(\"\")\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .githubEnterpriseConfig(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\")\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 .githubEnterpriseConfig(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-ghe-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name:\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n githubEnterpriseConfig: projects/myProject/locations/global/githubEnterpriseConfigs/configID\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\n githubEnterpriseConfig: projects/myProject/locations/global/githubEnterpriseConfigs/configID\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Manual Bitbucket Server\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"terraform-manual-bbs-trigger\",\n sourceToBuild: {\n uri: \"https://bbs.com/scm/stag/test-repo.git\",\n ref: \"refs/heads/main\",\n repoType: \"BITBUCKET_SERVER\",\n bitbucketServerConfig: \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://bbs.com/scm/stag/test-repo.git\",\n revision: \"refs/heads/main\",\n repoType: \"BITBUCKET_SERVER\",\n bitbucketServerConfig: \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_bitbucket_trigger = gcp.cloudbuild.Trigger(\"manual-bitbucket-trigger\",\n name=\"terraform-manual-bbs-trigger\",\n source_to_build={\n \"uri\": \"https://bbs.com/scm/stag/test-repo.git\",\n \"ref\": \"refs/heads/main\",\n \"repoType\": \"BITBUCKET_SERVER\",\n \"bitbucketServerConfig\": \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://bbs.com/scm/stag/test-repo.git\",\n \"revision\": \"refs/heads/main\",\n \"repoType\": \"BITBUCKET_SERVER\",\n \"bitbucketServerConfig\": \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\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 Name = \"terraform-manual-bbs-trigger\",\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://bbs.com/scm/stag/test-repo.git\",\n Ref = \"refs/heads/main\",\n RepoType = \"BITBUCKET_SERVER\",\n BitbucketServerConfig = \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://bbs.com/scm/stag/test-repo.git\",\n Revision = \"refs/heads/main\",\n RepoType = \"BITBUCKET_SERVER\",\n BitbucketServerConfig = \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"terraform-manual-bbs-trigger\"),\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://bbs.com/scm/stag/test-repo.git\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"BITBUCKET_SERVER\"),\n\t\t\t\tBitbucketServerConfig: pulumi.String(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\"),\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://bbs.com/scm/stag/test-repo.git\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"BITBUCKET_SERVER\"),\n\t\t\t\tBitbucketServerConfig: pulumi.String(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\"),\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.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 manual_bitbucket_trigger = new Trigger(\"manual-bitbucket-trigger\", TriggerArgs.builder()\n .name(\"terraform-manual-bbs-trigger\")\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://bbs.com/scm/stag/test-repo.git\")\n .ref(\"refs/heads/main\")\n .repoType(\"BITBUCKET_SERVER\")\n .bitbucketServerConfig(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://bbs.com/scm/stag/test-repo.git\")\n .revision(\"refs/heads/main\")\n .repoType(\"BITBUCKET_SERVER\")\n .bitbucketServerConfig(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-bitbucket-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: terraform-manual-bbs-trigger\n sourceToBuild:\n uri: https://bbs.com/scm/stag/test-repo.git\n ref: refs/heads/main\n repoType: BITBUCKET_SERVER\n bitbucketServerConfig: projects/myProject/locations/global/bitbucketServerConfigs/configID\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://bbs.com/scm/stag/test-repo.git\n revision: refs/heads/main\n repoType: BITBUCKET_SERVER\n bitbucketServerConfig: projects/myProject/locations/global/bitbucketServerConfigs/configID\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Repo\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"my-connection\",\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 name: \"my-repo\",\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 name=\"my-connection\",\n github_config={\n \"appInstallationId\": 123123,\n \"authorizerCredential\": {\n \"oauthTokenSecretVersion\": \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n })\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n name=\"my-repo\",\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={\n \"repository\": my_repository.id,\n \"push\": {\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 Name = \"my-connection\",\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 Name = \"my-repo\",\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/v7/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-connection\"),\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\tName: pulumi.String(\"my-repo\"),\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 .name(\"my-connection\")\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 .name(\"my-repo\")\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 name: my-connection\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 name: my-repo\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\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Bitbucket Server Push\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"bbs-push-trigger\",\n location: \"us-central1\",\n bitbucketServerTriggerConfig: {\n repoSlug: \"bbs-push-trigger\",\n projectKey: \"STAG\",\n bitbucketServerConfigResource: \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n push: {\n tag: \"^0.1.*\",\n invertRegex: true,\n },\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_push_trigger = gcp.cloudbuild.Trigger(\"bbs-push-trigger\",\n name=\"bbs-push-trigger\",\n location=\"us-central1\",\n bitbucket_server_trigger_config={\n \"repoSlug\": \"bbs-push-trigger\",\n \"projectKey\": \"STAG\",\n \"bitbucketServerConfigResource\": \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n \"push\": {\n \"tag\": \"^0.1.*\",\n \"invertRegex\": True,\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 bbs_push_trigger = new Gcp.CloudBuild.Trigger(\"bbs-push-trigger\", new()\n {\n Name = \"bbs-push-trigger\",\n Location = \"us-central1\",\n BitbucketServerTriggerConfig = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigArgs\n {\n RepoSlug = \"bbs-push-trigger\",\n ProjectKey = \"STAG\",\n BitbucketServerConfigResource = \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n Push = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigPushArgs\n {\n Tag = \"^0.1.*\",\n InvertRegex = true,\n },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"bbs-push-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBitbucketServerTriggerConfig: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigArgs{\n\t\t\t\tRepoSlug: pulumi.String(\"bbs-push-trigger\"),\n\t\t\t\tProjectKey: pulumi.String(\"STAG\"),\n\t\t\t\tBitbucketServerConfigResource: pulumi.String(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigPushArgs{\n\t\t\t\t\tTag: pulumi.String(\"^0.1.*\"),\n\t\t\t\t\tInvertRegex: pulumi.Bool(true),\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.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 .name(\"bbs-push-trigger\")\n .location(\"us-central1\")\n .bitbucketServerTriggerConfig(TriggerBitbucketServerTriggerConfigArgs.builder()\n .repoSlug(\"bbs-push-trigger\")\n .projectKey(\"STAG\")\n .bitbucketServerConfigResource(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\")\n .push(TriggerBitbucketServerTriggerConfigPushArgs.builder()\n .tag(\"^0.1.*\")\n .invertRegex(true)\n .build())\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-push-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: bbs-push-trigger\n location: us-central1\n bitbucketServerTriggerConfig:\n repoSlug: bbs-push-trigger\n projectKey: STAG\n bitbucketServerConfigResource: projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\n push:\n tag: ^0.1.*\n invertRegex: true\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Bitbucket Server Pull Request\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"ghe-trigger\",\n location: \"us-central1\",\n bitbucketServerTriggerConfig: {\n repoSlug: \"terraform-provider-google\",\n projectKey: \"STAG\",\n bitbucketServerConfigResource: \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n pullRequest: {\n branch: \"^master$\",\n invertRegex: false,\n commentControl: \"COMMENTS_ENABLED\",\n },\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_pull_request_trigger = gcp.cloudbuild.Trigger(\"bbs-pull-request-trigger\",\n name=\"ghe-trigger\",\n location=\"us-central1\",\n bitbucket_server_trigger_config={\n \"repoSlug\": \"terraform-provider-google\",\n \"projectKey\": \"STAG\",\n \"bitbucketServerConfigResource\": \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n \"pullRequest\": {\n \"branch\": \"^master$\",\n \"invertRegex\": False,\n \"commentControl\": \"COMMENTS_ENABLED\",\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 bbs_pull_request_trigger = new Gcp.CloudBuild.Trigger(\"bbs-pull-request-trigger\", new()\n {\n Name = \"ghe-trigger\",\n Location = \"us-central1\",\n BitbucketServerTriggerConfig = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigArgs\n {\n RepoSlug = \"terraform-provider-google\",\n ProjectKey = \"STAG\",\n BitbucketServerConfigResource = \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n PullRequest = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigPullRequestArgs\n {\n Branch = \"^master$\",\n InvertRegex = false,\n CommentControl = \"COMMENTS_ENABLED\",\n },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"ghe-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBitbucketServerTriggerConfig: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigArgs{\n\t\t\t\tRepoSlug: pulumi.String(\"terraform-provider-google\"),\n\t\t\t\tProjectKey: pulumi.String(\"STAG\"),\n\t\t\t\tBitbucketServerConfigResource: pulumi.String(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\"),\n\t\t\t\tPullRequest: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigPullRequestArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^master$\"),\n\t\t\t\t\tInvertRegex: pulumi.Bool(false),\n\t\t\t\t\tCommentControl: pulumi.String(\"COMMENTS_ENABLED\"),\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.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 .name(\"ghe-trigger\")\n .location(\"us-central1\")\n .bitbucketServerTriggerConfig(TriggerBitbucketServerTriggerConfigArgs.builder()\n .repoSlug(\"terraform-provider-google\")\n .projectKey(\"STAG\")\n .bitbucketServerConfigResource(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\")\n .pullRequest(TriggerBitbucketServerTriggerConfigPullRequestArgs.builder()\n .branch(\"^master$\")\n .invertRegex(false)\n .commentControl(\"COMMENTS_ENABLED\")\n .build())\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-pull-request-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: ghe-trigger\n location: us-central1\n bitbucketServerTriggerConfig:\n repoSlug: terraform-provider-google\n projectKey: STAG\n bitbucketServerConfigResource: projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\n pullRequest:\n branch: ^master$\n invertRegex: false\n commentControl: COMMENTS_ENABLED\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Github Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"ghe-trigger\",\n location: \"us-central1\",\n github: {\n owner: \"hashicorp\",\n name: \"terraform-provider-google\",\n push: {\n branch: \"^main$\",\n },\n enterpriseConfigResourceName: \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nghe_trigger = gcp.cloudbuild.Trigger(\"ghe-trigger\",\n name=\"ghe-trigger\",\n location=\"us-central1\",\n github={\n \"owner\": \"hashicorp\",\n \"name\": \"terraform-provider-google\",\n \"push\": {\n \"branch\": \"^main$\",\n },\n \"enterpriseConfigResourceName\": \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\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 ghe_trigger = new Gcp.CloudBuild.Trigger(\"ghe-trigger\", new()\n {\n Name = \"ghe-trigger\",\n Location = \"us-central1\",\n Github = new Gcp.CloudBuild.Inputs.TriggerGithubArgs\n {\n Owner = \"hashicorp\",\n Name = \"terraform-provider-google\",\n Push = new Gcp.CloudBuild.Inputs.TriggerGithubPushArgs\n {\n Branch = \"^main$\",\n },\n EnterpriseConfigResourceName = \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"ghe-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tGithub: \u0026cloudbuild.TriggerGithubArgs{\n\t\t\t\tOwner: pulumi.String(\"hashicorp\"),\n\t\t\t\tName: pulumi.String(\"terraform-provider-google\"),\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\tEnterpriseConfigResourceName: pulumi.String(\"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\"),\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.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 .name(\"ghe-trigger\")\n .location(\"us-central1\")\n .github(TriggerGithubArgs.builder()\n .owner(\"hashicorp\")\n .name(\"terraform-provider-google\")\n .push(TriggerGithubPushArgs.builder()\n .branch(\"^main$\")\n .build())\n .enterpriseConfigResourceName(\"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\")\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ghe-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: ghe-trigger\n location: us-central1\n github:\n owner: hashicorp\n name: terraform-provider-google\n push:\n branch: ^main$\n enterpriseConfigResourceName: projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Allow Failure\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst allow_failure_trigger = new gcp.cloudbuild.Trigger(\"allow-failure-trigger\", {\n name: \"my-trigger\",\n location: \"global\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n build: {\n steps: [{\n name: \"ubuntu\",\n args: [\n \"-c\",\n \"exit 1\",\n ],\n allowFailure: true,\n }],\n source: {\n storageSource: {\n bucket: \"mybucket\",\n object: \"source_code.tar.gz\",\n },\n },\n tags: [\n \"build\",\n \"newFeature\",\n ],\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n queueTtl: \"20s\",\n logsBucket: \"gs://mybucket/logs\",\n secrets: [{\n kmsKeyName: \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n secretEnv: {\n PASSWORD: \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n availableSecrets: {\n secretManagers: [{\n env: \"MY_SECRET\",\n versionName: \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n artifacts: {\n images: [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n objects: {\n location: \"gs://bucket/path/to/somewhere/\",\n paths: [\"path\"],\n },\n },\n options: {\n sourceProvenanceHashes: [\"MD5\"],\n requestedVerifyOption: \"VERIFIED\",\n machineType: \"N1_HIGHCPU_8\",\n diskSizeGb: 100,\n substitutionOption: \"ALLOW_LOOSE\",\n dynamicSubstitutions: true,\n logStreamingOption: \"STREAM_OFF\",\n workerPool: \"pool\",\n logging: \"LEGACY\",\n envs: [\"ekey = evalue\"],\n secretEnvs: [\"secretenv = svalue\"],\n volumes: [{\n name: \"v1\",\n path: \"v1\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nallow_failure_trigger = gcp.cloudbuild.Trigger(\"allow-failure-trigger\",\n name=\"my-trigger\",\n location=\"global\",\n trigger_template={\n \"branchName\": \"main\",\n \"repoName\": \"my-repo\",\n },\n build={\n \"steps\": [{\n \"name\": \"ubuntu\",\n \"args\": [\n \"-c\",\n \"exit 1\",\n ],\n \"allowFailure\": True,\n }],\n \"source\": {\n \"storageSource\": {\n \"bucket\": \"mybucket\",\n \"object\": \"source_code.tar.gz\",\n },\n },\n \"tags\": [\n \"build\",\n \"newFeature\",\n ],\n \"substitutions\": {\n \"_FOO\": \"bar\",\n \"_BAZ\": \"qux\",\n },\n \"queueTtl\": \"20s\",\n \"logsBucket\": \"gs://mybucket/logs\",\n \"secrets\": [{\n \"kmsKeyName\": \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n \"secretEnv\": {\n \"PASSWORD\": \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n \"availableSecrets\": {\n \"secretManagers\": [{\n \"env\": \"MY_SECRET\",\n \"versionName\": \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n \"artifacts\": {\n \"images\": [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n \"objects\": {\n \"location\": \"gs://bucket/path/to/somewhere/\",\n \"paths\": [\"path\"],\n },\n },\n \"options\": {\n \"sourceProvenanceHashes\": [\"MD5\"],\n \"requestedVerifyOption\": \"VERIFIED\",\n \"machineType\": \"N1_HIGHCPU_8\",\n \"diskSizeGb\": 100,\n \"substitutionOption\": \"ALLOW_LOOSE\",\n \"dynamicSubstitutions\": True,\n \"logStreamingOption\": \"STREAM_OFF\",\n \"workerPool\": \"pool\",\n \"logging\": \"LEGACY\",\n \"envs\": [\"ekey = evalue\"],\n \"secretEnvs\": [\"secretenv = svalue\"],\n \"volumes\": [{\n \"name\": \"v1\",\n \"path\": \"v1\",\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 allow_failure_trigger = new Gcp.CloudBuild.Trigger(\"allow-failure-trigger\", new()\n {\n Name = \"my-trigger\",\n Location = \"global\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Build = new Gcp.CloudBuild.Inputs.TriggerBuildArgs\n {\n Steps = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"ubuntu\",\n Args = new[]\n {\n \"-c\",\n \"exit 1\",\n },\n AllowFailure = true,\n },\n },\n Source = new Gcp.CloudBuild.Inputs.TriggerBuildSourceArgs\n {\n StorageSource = new Gcp.CloudBuild.Inputs.TriggerBuildSourceStorageSourceArgs\n {\n Bucket = \"mybucket\",\n Object = \"source_code.tar.gz\",\n },\n },\n Tags = new[]\n {\n \"build\",\n \"newFeature\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n QueueTtl = \"20s\",\n LogsBucket = \"gs://mybucket/logs\",\n Secrets = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildSecretArgs\n {\n KmsKeyName = \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n SecretEnv = \n {\n { \"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\" },\n },\n },\n },\n AvailableSecrets = new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsArgs\n {\n SecretManagers = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsSecretManagerArgs\n {\n Env = \"MY_SECRET\",\n VersionName = \"projects/myProject/secrets/mySecret/versions/latest\",\n },\n },\n },\n Artifacts = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsArgs\n {\n Images = new[]\n {\n \"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\",\n },\n Objects = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsObjectsArgs\n {\n Location = \"gs://bucket/path/to/somewhere/\",\n Paths = new[]\n {\n \"path\",\n },\n },\n },\n Options = new Gcp.CloudBuild.Inputs.TriggerBuildOptionsArgs\n {\n SourceProvenanceHashes = new[]\n {\n \"MD5\",\n },\n RequestedVerifyOption = \"VERIFIED\",\n MachineType = \"N1_HIGHCPU_8\",\n DiskSizeGb = 100,\n SubstitutionOption = \"ALLOW_LOOSE\",\n DynamicSubstitutions = true,\n LogStreamingOption = \"STREAM_OFF\",\n WorkerPool = \"pool\",\n Logging = \"LEGACY\",\n Envs = new[]\n {\n \"ekey = evalue\",\n },\n SecretEnvs = new[]\n {\n \"secretenv = svalue\",\n },\n Volumes = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildOptionsVolumeArgs\n {\n Name = \"v1\",\n Path = \"v1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"allow-failure-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"my-trigger\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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\tBuild: \u0026cloudbuild.TriggerBuildArgs{\n\t\t\t\tSteps: cloudbuild.TriggerBuildStepArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"ubuntu\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"-c\"),\n\t\t\t\t\t\t\tpulumi.String(\"exit 1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAllowFailure: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudbuild.TriggerBuildSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudbuild.TriggerBuildSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: pulumi.String(\"mybucket\"),\n\t\t\t\t\t\tObject: pulumi.String(\"source_code.tar.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"build\"),\n\t\t\t\t\tpulumi.String(\"newFeature\"),\n\t\t\t\t},\n\t\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t},\n\t\t\t\tQueueTtl: pulumi.String(\"20s\"),\n\t\t\t\tLogsBucket: pulumi.String(\"gs://mybucket/logs\"),\n\t\t\t\tSecrets: cloudbuild.TriggerBuildSecretArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildSecretArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\"),\n\t\t\t\t\t\tSecretEnv: pulumi.StringMap{\n\t\t\t\t\t\t\t\"PASSWORD\": pulumi.String(\"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAvailableSecrets: \u0026cloudbuild.TriggerBuildAvailableSecretsArgs{\n\t\t\t\t\tSecretManagers: cloudbuild.TriggerBuildAvailableSecretsSecretManagerArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildAvailableSecretsSecretManagerArgs{\n\t\t\t\t\t\t\tEnv: pulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t\tVersionName: pulumi.String(\"projects/myProject/secrets/mySecret/versions/latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: \u0026cloudbuild.TriggerBuildArtifactsArgs{\n\t\t\t\t\tImages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"),\n\t\t\t\t\t},\n\t\t\t\t\tObjects: \u0026cloudbuild.TriggerBuildArtifactsObjectsArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"gs://bucket/path/to/somewhere/\"),\n\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"path\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOptions: \u0026cloudbuild.TriggerBuildOptionsArgs{\n\t\t\t\t\tSourceProvenanceHashes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MD5\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequestedVerifyOption: pulumi.String(\"VERIFIED\"),\n\t\t\t\t\tMachineType: pulumi.String(\"N1_HIGHCPU_8\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tSubstitutionOption: pulumi.String(\"ALLOW_LOOSE\"),\n\t\t\t\t\tDynamicSubstitutions: pulumi.Bool(true),\n\t\t\t\t\tLogStreamingOption: pulumi.String(\"STREAM_OFF\"),\n\t\t\t\t\tWorkerPool: pulumi.String(\"pool\"),\n\t\t\t\t\tLogging: pulumi.String(\"LEGACY\"),\n\t\t\t\t\tEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ekey = evalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretenv = svalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudbuild.TriggerBuildOptionsVolumeArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildOptionsVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"v1\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"v1\"),\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.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\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 .name(\"my-trigger\")\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build(TriggerBuildArgs.builder()\n .steps(TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .args( \n \"-c\",\n \"exit 1\")\n .allowFailure(true)\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .tags( \n \"build\",\n \"newFeature\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .queueTtl(\"20s\")\n .logsBucket(\"gs://mybucket/logs\")\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 .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManagers(TriggerBuildAvailableSecretsSecretManagerArgs.builder()\n .env(\"MY_SECRET\")\n .versionName(\"projects/myProject/secrets/mySecret/versions/latest\")\n .build())\n .build())\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 .options(TriggerBuildOptionsArgs.builder()\n .sourceProvenanceHashes(\"MD5\")\n .requestedVerifyOption(\"VERIFIED\")\n .machineType(\"N1_HIGHCPU_8\")\n .diskSizeGb(100)\n .substitutionOption(\"ALLOW_LOOSE\")\n .dynamicSubstitutions(true)\n .logStreamingOption(\"STREAM_OFF\")\n .workerPool(\"pool\")\n .logging(\"LEGACY\")\n .envs(\"ekey = evalue\")\n .secretEnvs(\"secretenv = svalue\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allow-failure-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: my-trigger\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n build:\n steps:\n - name: ubuntu\n args:\n - -c\n - exit 1\n allowFailure: true\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n tags:\n - build\n - newFeature\n substitutions:\n _FOO: bar\n _BAZ: qux\n queueTtl: 20s\n logsBucket: gs://mybucket/logs\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n availableSecrets:\n secretManagers:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\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 options:\n sourceProvenanceHashes:\n - MD5\n requestedVerifyOption: VERIFIED\n machineType: N1_HIGHCPU_8\n diskSizeGb: 100\n substitutionOption: ALLOW_LOOSE\n dynamicSubstitutions: true\n logStreamingOption: STREAM_OFF\n workerPool: pool\n logging: LEGACY\n envs:\n - ekey = evalue\n secretEnvs:\n - secretenv = svalue\n volumes:\n - name: v1\n path: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Allow Exit Codes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst allow_exit_codes_trigger = new gcp.cloudbuild.Trigger(\"allow-exit-codes-trigger\", {\n name: \"my-trigger\",\n location: \"global\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n build: {\n steps: [{\n name: \"ubuntu\",\n args: [\n \"-c\",\n \"exit 1\",\n ],\n allowExitCodes: [\n 1,\n 3,\n ],\n }],\n source: {\n storageSource: {\n bucket: \"mybucket\",\n object: \"source_code.tar.gz\",\n },\n },\n tags: [\n \"build\",\n \"newFeature\",\n ],\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n queueTtl: \"20s\",\n logsBucket: \"gs://mybucket/logs\",\n secrets: [{\n kmsKeyName: \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n secretEnv: {\n PASSWORD: \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n availableSecrets: {\n secretManagers: [{\n env: \"MY_SECRET\",\n versionName: \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n artifacts: {\n images: [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n objects: {\n location: \"gs://bucket/path/to/somewhere/\",\n paths: [\"path\"],\n },\n },\n options: {\n sourceProvenanceHashes: [\"MD5\"],\n requestedVerifyOption: \"VERIFIED\",\n machineType: \"N1_HIGHCPU_8\",\n diskSizeGb: 100,\n substitutionOption: \"ALLOW_LOOSE\",\n dynamicSubstitutions: true,\n logStreamingOption: \"STREAM_OFF\",\n workerPool: \"pool\",\n logging: \"LEGACY\",\n envs: [\"ekey = evalue\"],\n secretEnvs: [\"secretenv = svalue\"],\n volumes: [{\n name: \"v1\",\n path: \"v1\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nallow_exit_codes_trigger = gcp.cloudbuild.Trigger(\"allow-exit-codes-trigger\",\n name=\"my-trigger\",\n location=\"global\",\n trigger_template={\n \"branchName\": \"main\",\n \"repoName\": \"my-repo\",\n },\n build={\n \"steps\": [{\n \"name\": \"ubuntu\",\n \"args\": [\n \"-c\",\n \"exit 1\",\n ],\n \"allowExitCodes\": [\n 1,\n 3,\n ],\n }],\n \"source\": {\n \"storageSource\": {\n \"bucket\": \"mybucket\",\n \"object\": \"source_code.tar.gz\",\n },\n },\n \"tags\": [\n \"build\",\n \"newFeature\",\n ],\n \"substitutions\": {\n \"_FOO\": \"bar\",\n \"_BAZ\": \"qux\",\n },\n \"queueTtl\": \"20s\",\n \"logsBucket\": \"gs://mybucket/logs\",\n \"secrets\": [{\n \"kmsKeyName\": \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n \"secretEnv\": {\n \"PASSWORD\": \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n \"availableSecrets\": {\n \"secretManagers\": [{\n \"env\": \"MY_SECRET\",\n \"versionName\": \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n \"artifacts\": {\n \"images\": [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n \"objects\": {\n \"location\": \"gs://bucket/path/to/somewhere/\",\n \"paths\": [\"path\"],\n },\n },\n \"options\": {\n \"sourceProvenanceHashes\": [\"MD5\"],\n \"requestedVerifyOption\": \"VERIFIED\",\n \"machineType\": \"N1_HIGHCPU_8\",\n \"diskSizeGb\": 100,\n \"substitutionOption\": \"ALLOW_LOOSE\",\n \"dynamicSubstitutions\": True,\n \"logStreamingOption\": \"STREAM_OFF\",\n \"workerPool\": \"pool\",\n \"logging\": \"LEGACY\",\n \"envs\": [\"ekey = evalue\"],\n \"secretEnvs\": [\"secretenv = svalue\"],\n \"volumes\": [{\n \"name\": \"v1\",\n \"path\": \"v1\",\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 allow_exit_codes_trigger = new Gcp.CloudBuild.Trigger(\"allow-exit-codes-trigger\", new()\n {\n Name = \"my-trigger\",\n Location = \"global\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Build = new Gcp.CloudBuild.Inputs.TriggerBuildArgs\n {\n Steps = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"ubuntu\",\n Args = new[]\n {\n \"-c\",\n \"exit 1\",\n },\n AllowExitCodes = new[]\n {\n 1,\n 3,\n },\n },\n },\n Source = new Gcp.CloudBuild.Inputs.TriggerBuildSourceArgs\n {\n StorageSource = new Gcp.CloudBuild.Inputs.TriggerBuildSourceStorageSourceArgs\n {\n Bucket = \"mybucket\",\n Object = \"source_code.tar.gz\",\n },\n },\n Tags = new[]\n {\n \"build\",\n \"newFeature\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n QueueTtl = \"20s\",\n LogsBucket = \"gs://mybucket/logs\",\n Secrets = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildSecretArgs\n {\n KmsKeyName = \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n SecretEnv = \n {\n { \"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\" },\n },\n },\n },\n AvailableSecrets = new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsArgs\n {\n SecretManagers = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsSecretManagerArgs\n {\n Env = \"MY_SECRET\",\n VersionName = \"projects/myProject/secrets/mySecret/versions/latest\",\n },\n },\n },\n Artifacts = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsArgs\n {\n Images = new[]\n {\n \"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\",\n },\n Objects = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsObjectsArgs\n {\n Location = \"gs://bucket/path/to/somewhere/\",\n Paths = new[]\n {\n \"path\",\n },\n },\n },\n Options = new Gcp.CloudBuild.Inputs.TriggerBuildOptionsArgs\n {\n SourceProvenanceHashes = new[]\n {\n \"MD5\",\n },\n RequestedVerifyOption = \"VERIFIED\",\n MachineType = \"N1_HIGHCPU_8\",\n DiskSizeGb = 100,\n SubstitutionOption = \"ALLOW_LOOSE\",\n DynamicSubstitutions = true,\n LogStreamingOption = \"STREAM_OFF\",\n WorkerPool = \"pool\",\n Logging = \"LEGACY\",\n Envs = new[]\n {\n \"ekey = evalue\",\n },\n SecretEnvs = new[]\n {\n \"secretenv = svalue\",\n },\n Volumes = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildOptionsVolumeArgs\n {\n Name = \"v1\",\n Path = \"v1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"allow-exit-codes-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"my-trigger\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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\tBuild: \u0026cloudbuild.TriggerBuildArgs{\n\t\t\t\tSteps: cloudbuild.TriggerBuildStepArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"ubuntu\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"-c\"),\n\t\t\t\t\t\t\tpulumi.String(\"exit 1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAllowExitCodes: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\tpulumi.Int(3),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudbuild.TriggerBuildSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudbuild.TriggerBuildSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: pulumi.String(\"mybucket\"),\n\t\t\t\t\t\tObject: pulumi.String(\"source_code.tar.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"build\"),\n\t\t\t\t\tpulumi.String(\"newFeature\"),\n\t\t\t\t},\n\t\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t},\n\t\t\t\tQueueTtl: pulumi.String(\"20s\"),\n\t\t\t\tLogsBucket: pulumi.String(\"gs://mybucket/logs\"),\n\t\t\t\tSecrets: cloudbuild.TriggerBuildSecretArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildSecretArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\"),\n\t\t\t\t\t\tSecretEnv: pulumi.StringMap{\n\t\t\t\t\t\t\t\"PASSWORD\": pulumi.String(\"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAvailableSecrets: \u0026cloudbuild.TriggerBuildAvailableSecretsArgs{\n\t\t\t\t\tSecretManagers: cloudbuild.TriggerBuildAvailableSecretsSecretManagerArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildAvailableSecretsSecretManagerArgs{\n\t\t\t\t\t\t\tEnv: pulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t\tVersionName: pulumi.String(\"projects/myProject/secrets/mySecret/versions/latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: \u0026cloudbuild.TriggerBuildArtifactsArgs{\n\t\t\t\t\tImages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"),\n\t\t\t\t\t},\n\t\t\t\t\tObjects: \u0026cloudbuild.TriggerBuildArtifactsObjectsArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"gs://bucket/path/to/somewhere/\"),\n\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"path\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOptions: \u0026cloudbuild.TriggerBuildOptionsArgs{\n\t\t\t\t\tSourceProvenanceHashes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MD5\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequestedVerifyOption: pulumi.String(\"VERIFIED\"),\n\t\t\t\t\tMachineType: pulumi.String(\"N1_HIGHCPU_8\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tSubstitutionOption: pulumi.String(\"ALLOW_LOOSE\"),\n\t\t\t\t\tDynamicSubstitutions: pulumi.Bool(true),\n\t\t\t\t\tLogStreamingOption: pulumi.String(\"STREAM_OFF\"),\n\t\t\t\t\tWorkerPool: pulumi.String(\"pool\"),\n\t\t\t\t\tLogging: pulumi.String(\"LEGACY\"),\n\t\t\t\t\tEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ekey = evalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretenv = svalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudbuild.TriggerBuildOptionsVolumeArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildOptionsVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"v1\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"v1\"),\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.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\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 .name(\"my-trigger\")\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build(TriggerBuildArgs.builder()\n .steps(TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .args( \n \"-c\",\n \"exit 1\")\n .allowExitCodes( \n 1,\n 3)\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .tags( \n \"build\",\n \"newFeature\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .queueTtl(\"20s\")\n .logsBucket(\"gs://mybucket/logs\")\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 .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManagers(TriggerBuildAvailableSecretsSecretManagerArgs.builder()\n .env(\"MY_SECRET\")\n .versionName(\"projects/myProject/secrets/mySecret/versions/latest\")\n .build())\n .build())\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 .options(TriggerBuildOptionsArgs.builder()\n .sourceProvenanceHashes(\"MD5\")\n .requestedVerifyOption(\"VERIFIED\")\n .machineType(\"N1_HIGHCPU_8\")\n .diskSizeGb(100)\n .substitutionOption(\"ALLOW_LOOSE\")\n .dynamicSubstitutions(true)\n .logStreamingOption(\"STREAM_OFF\")\n .workerPool(\"pool\")\n .logging(\"LEGACY\")\n .envs(\"ekey = evalue\")\n .secretEnvs(\"secretenv = svalue\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allow-exit-codes-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: my-trigger\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n build:\n steps:\n - name: ubuntu\n args:\n - -c\n - exit 1\n allowExitCodes:\n - 1\n - 3\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n tags:\n - build\n - newFeature\n substitutions:\n _FOO: bar\n _BAZ: qux\n queueTtl: 20s\n logsBucket: gs://mybucket/logs\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n availableSecrets:\n secretManagers:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\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 options:\n sourceProvenanceHashes:\n - MD5\n requestedVerifyOption: VERIFIED\n machineType: N1_HIGHCPU_8\n diskSizeGb: 100\n substitutionOption: ALLOW_LOOSE\n dynamicSubstitutions: true\n logStreamingOption: STREAM_OFF\n workerPool: pool\n logging: LEGACY\n envs:\n - ekey = evalue\n secretEnvs:\n - secretenv = svalue\n volumes:\n - name: v1\n path: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Pubsub With Repo\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"my-connection\",\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 name: \"my-repo\",\n parentConnection: my_connection.id,\n remoteUri: \"https://github.com/myuser/my-repo.git\",\n});\nconst mytopic = new gcp.pubsub.Topic(\"mytopic\", {name: \"my-topic\"});\nconst pubsub_with_repo_trigger = new gcp.cloudbuild.Trigger(\"pubsub-with-repo-trigger\", {\n name: \"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 name=\"my-connection\",\n github_config={\n \"appInstallationId\": 123123,\n \"authorizerCredential\": {\n \"oauthTokenSecretVersion\": \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n })\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n name=\"my-repo\",\n parent_connection=my_connection.id,\n remote_uri=\"https://github.com/myuser/my-repo.git\")\nmytopic = gcp.pubsub.Topic(\"mytopic\", name=\"my-topic\")\npubsub_with_repo_trigger = gcp.cloudbuild.Trigger(\"pubsub-with-repo-trigger\",\n name=\"pubsub-with-repo-trigger\",\n location=\"us-central1\",\n pubsub_config={\n \"topic\": mytopic.id,\n },\n source_to_build={\n \"repository\": my_repository.id,\n \"ref\": \"refs/heads/main\",\n \"repoType\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"repository\": my_repository.id,\n \"revision\": \"refs/heads/main\",\n \"repoType\": \"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 Name = \"my-connection\",\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 Name = \"my-repo\",\n ParentConnection = my_connection.Id,\n RemoteUri = \"https://github.com/myuser/my-repo.git\",\n });\n\n var mytopic = new Gcp.PubSub.Topic(\"mytopic\", new()\n {\n Name = \"my-topic\",\n });\n\n var pubsub_with_repo_trigger = new Gcp.CloudBuild.Trigger(\"pubsub-with-repo-trigger\", new()\n {\n Name = \"pubsub-with-repo-trigger\",\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/v7/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-connection\"),\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\tName: pulumi.String(\"my-repo\"),\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\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-topic\"),\n\t\t})\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\tName: pulumi.String(\"pubsub-with-repo-trigger\"),\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.pubsub.TopicArgs;\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 .name(\"my-connection\")\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 .name(\"my-repo\")\n .parentConnection(my_connection.id())\n .remoteUri(\"https://github.com/myuser/my-repo.git\")\n .build());\n\n var mytopic = new Topic(\"mytopic\", TopicArgs.builder()\n .name(\"my-topic\")\n .build());\n\n var pubsub_with_repo_trigger = new Trigger(\"pubsub-with-repo-trigger\", TriggerArgs.builder()\n .name(\"pubsub-with-repo-trigger\")\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 name: my-connection\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 name: my-repo\n parentConnection: ${[\"my-connection\"].id}\n remoteUri: https://github.com/myuser/my-repo.git\n mytopic:\n type: gcp:pubsub:Topic\n properties:\n name: my-topic\n pubsub-with-repo-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: pubsub-with-repo-trigger\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\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTrigger can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/triggers/{{trigger_id}}`\n\n* `projects/{{project}}/triggers/{{trigger_id}}`\n\n* `{{project}}/{{trigger_id}}`\n\n* `{{trigger_id}}`\n\nWhen using the `pulumi import` command, Trigger can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default projects/{{project}}/locations/{{location}}/triggers/{{trigger_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default projects/{{project}}/triggers/{{trigger_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default {{project}}/{{trigger_id}}\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## Example Usage\n\n### Cloudbuild Trigger Filename\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 location: \"us-central1\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfilename_trigger = gcp.cloudbuild.Trigger(\"filename-trigger\",\n location=\"us-central1\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n substitutions={\n \"_FOO\": \"bar\",\n \"_BAZ\": \"qux\",\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 filename_trigger = new Gcp.CloudBuild.Trigger(\"filename-trigger\", new()\n {\n Location = \"us-central1\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tLocation: pulumi.String(\"us-central1\"),\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\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\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.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 .location(\"us-central1\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n filename-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n triggerTemplate:\n branchName: main\n repoName: my-repo\n substitutions:\n _FOO: bar\n _BAZ: qux\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Build\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst build_trigger = new gcp.cloudbuild.Trigger(\"build-trigger\", {\n name: \"my-trigger\",\n location: \"global\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n build: {\n steps: [\n {\n name: \"gcr.io/cloud-builders/gsutil\",\n args: [\n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\",\n ],\n timeout: \"120s\",\n secretEnvs: [\"MY_SECRET\"],\n },\n {\n name: \"ubuntu\",\n script: \"echo hello\",\n },\n ],\n source: {\n storageSource: {\n bucket: \"mybucket\",\n object: \"source_code.tar.gz\",\n },\n },\n tags: [\n \"build\",\n \"newFeature\",\n ],\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n queueTtl: \"20s\",\n logsBucket: \"gs://mybucket/logs\",\n secrets: [{\n kmsKeyName: \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n secretEnv: {\n PASSWORD: \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n availableSecrets: {\n secretManagers: [{\n env: \"MY_SECRET\",\n versionName: \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n artifacts: {\n images: [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n objects: {\n location: \"gs://bucket/path/to/somewhere/\",\n paths: [\"path\"],\n },\n npmPackages: [{\n packagePath: \"package.json\",\n repository: \"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\",\n }],\n pythonPackages: [{\n paths: [\"dist/*\"],\n repository: \"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\",\n }],\n mavenArtifacts: [{\n repository: \"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\",\n path: \"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\",\n artifactId: \"my-app\",\n groupId: \"com.mycompany.app\",\n version: \"1.0\",\n }],\n },\n options: {\n sourceProvenanceHashes: [\"MD5\"],\n requestedVerifyOption: \"VERIFIED\",\n machineType: \"N1_HIGHCPU_8\",\n diskSizeGb: 100,\n substitutionOption: \"ALLOW_LOOSE\",\n dynamicSubstitutions: true,\n logStreamingOption: \"STREAM_OFF\",\n workerPool: \"pool\",\n logging: \"LEGACY\",\n envs: [\"ekey = evalue\"],\n secretEnvs: [\"secretenv = svalue\"],\n volumes: [{\n name: \"v1\",\n path: \"v1\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbuild_trigger = gcp.cloudbuild.Trigger(\"build-trigger\",\n name=\"my-trigger\",\n location=\"global\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n build={\n \"steps\": [\n {\n \"name\": \"gcr.io/cloud-builders/gsutil\",\n \"args\": [\n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\",\n ],\n \"timeout\": \"120s\",\n \"secret_envs\": [\"MY_SECRET\"],\n },\n {\n \"name\": \"ubuntu\",\n \"script\": \"echo hello\",\n },\n ],\n \"source\": {\n \"storage_source\": {\n \"bucket\": \"mybucket\",\n \"object\": \"source_code.tar.gz\",\n },\n },\n \"tags\": [\n \"build\",\n \"newFeature\",\n ],\n \"substitutions\": {\n \"__foo\": \"bar\",\n \"__baz\": \"qux\",\n },\n \"queue_ttl\": \"20s\",\n \"logs_bucket\": \"gs://mybucket/logs\",\n \"secrets\": [{\n \"kms_key_name\": \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n \"secret_env\": {\n \"password\": \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n \"available_secrets\": {\n \"secret_managers\": [{\n \"env\": \"MY_SECRET\",\n \"version_name\": \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n \"artifacts\": {\n \"images\": [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n \"objects\": {\n \"location\": \"gs://bucket/path/to/somewhere/\",\n \"paths\": [\"path\"],\n },\n \"npm_packages\": [{\n \"package_path\": \"package.json\",\n \"repository\": \"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\",\n }],\n \"python_packages\": [{\n \"paths\": [\"dist/*\"],\n \"repository\": \"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\",\n }],\n \"maven_artifacts\": [{\n \"repository\": \"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\",\n \"path\": \"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\",\n \"artifact_id\": \"my-app\",\n \"group_id\": \"com.mycompany.app\",\n \"version\": \"1.0\",\n }],\n },\n \"options\": {\n \"source_provenance_hashes\": [\"MD5\"],\n \"requested_verify_option\": \"VERIFIED\",\n \"machine_type\": \"N1_HIGHCPU_8\",\n \"disk_size_gb\": 100,\n \"substitution_option\": \"ALLOW_LOOSE\",\n \"dynamic_substitutions\": True,\n \"log_streaming_option\": \"STREAM_OFF\",\n \"worker_pool\": \"pool\",\n \"logging\": \"LEGACY\",\n \"envs\": [\"ekey = evalue\"],\n \"secret_envs\": [\"secretenv = svalue\"],\n \"volumes\": [{\n \"name\": \"v1\",\n \"path\": \"v1\",\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 build_trigger = new Gcp.CloudBuild.Trigger(\"build-trigger\", new()\n {\n Name = \"my-trigger\",\n Location = \"global\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Build = new Gcp.CloudBuild.Inputs.TriggerBuildArgs\n {\n Steps = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"gcr.io/cloud-builders/gsutil\",\n Args = new[]\n {\n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\",\n },\n Timeout = \"120s\",\n SecretEnvs = new[]\n {\n \"MY_SECRET\",\n },\n },\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"ubuntu\",\n Script = \"echo hello\",\n },\n },\n Source = new Gcp.CloudBuild.Inputs.TriggerBuildSourceArgs\n {\n StorageSource = new Gcp.CloudBuild.Inputs.TriggerBuildSourceStorageSourceArgs\n {\n Bucket = \"mybucket\",\n Object = \"source_code.tar.gz\",\n },\n },\n Tags = new[]\n {\n \"build\",\n \"newFeature\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n QueueTtl = \"20s\",\n LogsBucket = \"gs://mybucket/logs\",\n Secrets = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildSecretArgs\n {\n KmsKeyName = \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n SecretEnv = \n {\n { \"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\" },\n },\n },\n },\n AvailableSecrets = new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsArgs\n {\n SecretManagers = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsSecretManagerArgs\n {\n Env = \"MY_SECRET\",\n VersionName = \"projects/myProject/secrets/mySecret/versions/latest\",\n },\n },\n },\n Artifacts = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsArgs\n {\n Images = new[]\n {\n \"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\",\n },\n Objects = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsObjectsArgs\n {\n Location = \"gs://bucket/path/to/somewhere/\",\n Paths = new[]\n {\n \"path\",\n },\n },\n NpmPackages = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsNpmPackageArgs\n {\n PackagePath = \"package.json\",\n Repository = \"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\",\n },\n },\n PythonPackages = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsPythonPackageArgs\n {\n Paths = new[]\n {\n \"dist/*\",\n },\n Repository = \"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\",\n },\n },\n MavenArtifacts = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsMavenArtifactArgs\n {\n Repository = \"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\",\n Path = \"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\",\n ArtifactId = \"my-app\",\n GroupId = \"com.mycompany.app\",\n Version = \"1.0\",\n },\n },\n },\n Options = new Gcp.CloudBuild.Inputs.TriggerBuildOptionsArgs\n {\n SourceProvenanceHashes = new[]\n {\n \"MD5\",\n },\n RequestedVerifyOption = \"VERIFIED\",\n MachineType = \"N1_HIGHCPU_8\",\n DiskSizeGb = 100,\n SubstitutionOption = \"ALLOW_LOOSE\",\n DynamicSubstitutions = true,\n LogStreamingOption = \"STREAM_OFF\",\n WorkerPool = \"pool\",\n Logging = \"LEGACY\",\n Envs = new[]\n {\n \"ekey = evalue\",\n },\n SecretEnvs = new[]\n {\n \"secretenv = svalue\",\n },\n Volumes = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildOptionsVolumeArgs\n {\n Name = \"v1\",\n Path = \"v1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"build-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"my-trigger\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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\tBuild: \u0026cloudbuild.TriggerBuildArgs{\n\t\t\t\tSteps: cloudbuild.TriggerBuildStepArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"gcr.io/cloud-builders/gsutil\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"cp\"),\n\t\t\t\t\t\t\tpulumi.String(\"gs://mybucket/remotefile.zip\"),\n\t\t\t\t\t\t\tpulumi.String(\"localfile.zip\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTimeout: pulumi.String(\"120s\"),\n\t\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"ubuntu\"),\n\t\t\t\t\t\tScript: pulumi.String(\"echo hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudbuild.TriggerBuildSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudbuild.TriggerBuildSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: pulumi.String(\"mybucket\"),\n\t\t\t\t\t\tObject: pulumi.String(\"source_code.tar.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"build\"),\n\t\t\t\t\tpulumi.String(\"newFeature\"),\n\t\t\t\t},\n\t\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t},\n\t\t\t\tQueueTtl: pulumi.String(\"20s\"),\n\t\t\t\tLogsBucket: pulumi.String(\"gs://mybucket/logs\"),\n\t\t\t\tSecrets: cloudbuild.TriggerBuildSecretArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildSecretArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\"),\n\t\t\t\t\t\tSecretEnv: pulumi.StringMap{\n\t\t\t\t\t\t\t\"PASSWORD\": pulumi.String(\"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAvailableSecrets: \u0026cloudbuild.TriggerBuildAvailableSecretsArgs{\n\t\t\t\t\tSecretManagers: cloudbuild.TriggerBuildAvailableSecretsSecretManagerArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildAvailableSecretsSecretManagerArgs{\n\t\t\t\t\t\t\tEnv: pulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t\tVersionName: pulumi.String(\"projects/myProject/secrets/mySecret/versions/latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: \u0026cloudbuild.TriggerBuildArtifactsArgs{\n\t\t\t\t\tImages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"),\n\t\t\t\t\t},\n\t\t\t\t\tObjects: \u0026cloudbuild.TriggerBuildArtifactsObjectsArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"gs://bucket/path/to/somewhere/\"),\n\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"path\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tNpmPackages: cloudbuild.TriggerBuildArtifactsNpmPackageArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildArtifactsNpmPackageArgs{\n\t\t\t\t\t\t\tPackagePath: pulumi.String(\"package.json\"),\n\t\t\t\t\t\t\tRepository: pulumi.String(\"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tPythonPackages: cloudbuild.TriggerBuildArtifactsPythonPackageArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildArtifactsPythonPackageArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"dist/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRepository: pulumi.String(\"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMavenArtifacts: cloudbuild.TriggerBuildArtifactsMavenArtifactArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildArtifactsMavenArtifactArgs{\n\t\t\t\t\t\t\tRepository: pulumi.String(\"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\"),\n\t\t\t\t\t\t\tArtifactId: pulumi.String(\"my-app\"),\n\t\t\t\t\t\t\tGroupId: pulumi.String(\"com.mycompany.app\"),\n\t\t\t\t\t\t\tVersion: pulumi.String(\"1.0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOptions: \u0026cloudbuild.TriggerBuildOptionsArgs{\n\t\t\t\t\tSourceProvenanceHashes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MD5\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequestedVerifyOption: pulumi.String(\"VERIFIED\"),\n\t\t\t\t\tMachineType: pulumi.String(\"N1_HIGHCPU_8\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tSubstitutionOption: pulumi.String(\"ALLOW_LOOSE\"),\n\t\t\t\t\tDynamicSubstitutions: pulumi.Bool(true),\n\t\t\t\t\tLogStreamingOption: pulumi.String(\"STREAM_OFF\"),\n\t\t\t\t\tWorkerPool: pulumi.String(\"pool\"),\n\t\t\t\t\tLogging: pulumi.String(\"LEGACY\"),\n\t\t\t\t\tEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ekey = evalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretenv = svalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudbuild.TriggerBuildOptionsVolumeArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildOptionsVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"v1\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"v1\"),\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.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\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 .name(\"my-trigger\")\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build(TriggerBuildArgs.builder()\n .steps( \n TriggerBuildStepArgs.builder()\n .name(\"gcr.io/cloud-builders/gsutil\")\n .args( \n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\")\n .timeout(\"120s\")\n .secretEnvs(\"MY_SECRET\")\n .build(),\n TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .script(\"echo hello\")\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .tags( \n \"build\",\n \"newFeature\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .queueTtl(\"20s\")\n .logsBucket(\"gs://mybucket/logs\")\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 .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManagers(TriggerBuildAvailableSecretsSecretManagerArgs.builder()\n .env(\"MY_SECRET\")\n .versionName(\"projects/myProject/secrets/mySecret/versions/latest\")\n .build())\n .build())\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 .npmPackages(TriggerBuildArtifactsNpmPackageArgs.builder()\n .packagePath(\"package.json\")\n .repository(\"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\")\n .build())\n .pythonPackages(TriggerBuildArtifactsPythonPackageArgs.builder()\n .paths(\"dist/*\")\n .repository(\"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\")\n .build())\n .mavenArtifacts(TriggerBuildArtifactsMavenArtifactArgs.builder()\n .repository(\"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\")\n .path(\"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\")\n .artifactId(\"my-app\")\n .groupId(\"com.mycompany.app\")\n .version(\"1.0\")\n .build())\n .build())\n .options(TriggerBuildOptionsArgs.builder()\n .sourceProvenanceHashes(\"MD5\")\n .requestedVerifyOption(\"VERIFIED\")\n .machineType(\"N1_HIGHCPU_8\")\n .diskSizeGb(100)\n .substitutionOption(\"ALLOW_LOOSE\")\n .dynamicSubstitutions(true)\n .logStreamingOption(\"STREAM_OFF\")\n .workerPool(\"pool\")\n .logging(\"LEGACY\")\n .envs(\"ekey = evalue\")\n .secretEnvs(\"secretenv = svalue\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n build-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: my-trigger\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n build:\n steps:\n - name: gcr.io/cloud-builders/gsutil\n args:\n - cp\n - gs://mybucket/remotefile.zip\n - localfile.zip\n timeout: 120s\n secretEnvs:\n - MY_SECRET\n - name: ubuntu\n script: echo hello\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n tags:\n - build\n - newFeature\n substitutions:\n _FOO: bar\n _BAZ: qux\n queueTtl: 20s\n logsBucket: gs://mybucket/logs\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n availableSecrets:\n secretManagers:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\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 npmPackages:\n - packagePath: package.json\n repository: https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\n pythonPackages:\n - paths:\n - dist/*\n repository: https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\n mavenArtifacts:\n - repository: https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\n path: /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\n artifactId: my-app\n groupId: com.mycompany.app\n version: '1.0'\n options:\n sourceProvenanceHashes:\n - MD5\n requestedVerifyOption: VERIFIED\n machineType: N1_HIGHCPU_8\n diskSizeGb: 100\n substitutionOption: ALLOW_LOOSE\n dynamicSubstitutions: true\n logStreamingOption: STREAM_OFF\n workerPool: pool\n logging: LEGACY\n envs:\n - ekey = evalue\n secretEnvs:\n - secretenv = svalue\n volumes:\n - name: v1\n path: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Service Account\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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(\"cloudbuild_service_account\", {accountId: \"cloud-sa\"});\nconst actAs = new gcp.projects.IAMMember(\"act_as\", {\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(\"logs_writer\", {\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.serviceaccount.Account(\"cloudbuild_service_account\", account_id=\"cloud-sa\")\nact_as = gcp.projects.IAMMember(\"act_as\",\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(\"logs_writer\",\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={\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(\"cloudbuild_service_account\", new()\n {\n AccountId = \"cloud-sa\",\n });\n\n var actAs = new Gcp.Projects.IAMMember(\"act_as\", 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(\"logs_writer\", 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 =\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/v7/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"cloudbuild_service_account\", \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, \"act_as\", \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, \"logs_writer\", \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 name: cloudbuild_service_account\n properties:\n accountId: cloud-sa\n actAs:\n type: gcp:projects:IAMMember\n name: act_as\n properties:\n project: ${project.projectId}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${cloudbuildServiceAccount.email}\n logsWriter:\n type: gcp:projects:IAMMember\n name: logs_writer\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\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Include Build Logs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 location: \"us-central1\",\n name: \"include-build-logs-trigger\",\n filename: \"cloudbuild.yaml\",\n github: {\n owner: \"hashicorp\",\n name: \"terraform-provider-google-beta\",\n push: {\n branch: \"^main$\",\n },\n },\n includeBuildLogs: \"INCLUDE_BUILD_LOGS_WITH_STATUS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninclude_build_logs_trigger = gcp.cloudbuild.Trigger(\"include-build-logs-trigger\",\n location=\"us-central1\",\n name=\"include-build-logs-trigger\",\n filename=\"cloudbuild.yaml\",\n github={\n \"owner\": \"hashicorp\",\n \"name\": \"terraform-provider-google-beta\",\n \"push\": {\n \"branch\": \"^main$\",\n },\n },\n include_build_logs=\"INCLUDE_BUILD_LOGS_WITH_STATUS\")\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 Location = \"us-central1\",\n Name = \"include-build-logs-trigger\",\n Filename = \"cloudbuild.yaml\",\n Github = new Gcp.CloudBuild.Inputs.TriggerGithubArgs\n {\n Owner = \"hashicorp\",\n Name = \"terraform-provider-google-beta\",\n Push = new Gcp.CloudBuild.Inputs.TriggerGithubPushArgs\n {\n Branch = \"^main$\",\n },\n },\n IncludeBuildLogs = \"INCLUDE_BUILD_LOGS_WITH_STATUS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"include-build-logs-trigger\"),\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\tGithub: \u0026cloudbuild.TriggerGithubArgs{\n\t\t\t\tOwner: pulumi.String(\"hashicorp\"),\n\t\t\t\tName: pulumi.String(\"terraform-provider-google-beta\"),\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})\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 .location(\"us-central1\")\n .name(\"include-build-logs-trigger\")\n .filename(\"cloudbuild.yaml\")\n .github(TriggerGithubArgs.builder()\n .owner(\"hashicorp\")\n .name(\"terraform-provider-google-beta\")\n .push(TriggerGithubPushArgs.builder()\n .branch(\"^main$\")\n .build())\n .build())\n .includeBuildLogs(\"INCLUDE_BUILD_LOGS_WITH_STATUS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n include-build-logs-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n name: include-build-logs-trigger\n filename: cloudbuild.yaml\n github:\n owner: hashicorp\n name: terraform-provider-google-beta\n push:\n branch: ^main$\n includeBuildLogs: INCLUDE_BUILD_LOGS_WITH_STATUS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Pubsub Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst mytopic = new gcp.pubsub.Topic(\"mytopic\", {name: \"my-topic\"});\nconst pubsub_config_trigger = new gcp.cloudbuild.Trigger(\"pubsub-config-trigger\", {\n location: \"us-central1\",\n name: \"pubsub-trigger\",\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\", name=\"my-topic\")\npubsub_config_trigger = gcp.cloudbuild.Trigger(\"pubsub-config-trigger\",\n location=\"us-central1\",\n name=\"pubsub-trigger\",\n description=\"acceptance test example pubsub build trigger\",\n pubsub_config={\n \"topic\": mytopic.id,\n },\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\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\", new()\n {\n Name = \"my-topic\",\n });\n\n var pubsub_config_trigger = new Gcp.CloudBuild.Trigger(\"pubsub-config-trigger\", new()\n {\n Location = \"us-central1\",\n Name = \"pubsub-trigger\",\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/v7/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-topic\"),\n\t\t})\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\tName: pulumi.String(\"pubsub-trigger\"),\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.pubsub.TopicArgs;\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\", TopicArgs.builder()\n .name(\"my-topic\")\n .build());\n\n var pubsub_config_trigger = new Trigger(\"pubsub-config-trigger\", TriggerArgs.builder()\n .location(\"us-central1\")\n .name(\"pubsub-trigger\")\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 properties:\n name: my-topic\n pubsub-config-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n name: pubsub-trigger\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\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Webhook Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst webhookTriggerSecretKey = new gcp.secretmanager.Secret(\"webhook_trigger_secret_key\", {\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(\"webhook_trigger_secret_key_data\", {\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 name: \"webhook-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(\"webhook_trigger_secret_key\",\n secret_id=\"webhook-trigger-secret-key\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nwebhook_trigger_secret_key_data = gcp.secretmanager.SecretVersion(\"webhook_trigger_secret_key_data\",\n secret=webhook_trigger_secret_key.id,\n secret_data=\"secretkeygoeshere\")\nproject = gcp.organizations.get_project()\nsecret_accessor = gcp.organizations.get_iam_policy(bindings=[{\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 name=\"webhook-trigger\",\n description=\"acceptance test example webhook build trigger\",\n webhook_config={\n \"secret\": webhook_trigger_secret_key_data.id,\n },\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\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(\"webhook_trigger_secret_key\", 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(\"webhook_trigger_secret_key_data\", 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 Name = \"webhook-trigger\",\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/v7/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"webhook_trigger_secret_key\", \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, \"webhook_trigger_secret_key_data\", \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\tName: pulumi.String(\"webhook-trigger\"),\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 .name(\"webhook-trigger\")\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 name: webhook_trigger_secret_key\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 name: webhook_trigger_secret_key_data\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 name: webhook-trigger\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\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Manual\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"manual-trigger\",\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 approvalConfig: {\n approvalRequired: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_trigger = gcp.cloudbuild.Trigger(\"manual-trigger\",\n name=\"manual-trigger\",\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n approval_config={\n \"approval_required\": 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 manual_trigger = new Gcp.CloudBuild.Trigger(\"manual-trigger\", new()\n {\n Name = \"manual-trigger\",\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 ApprovalConfig = new Gcp.CloudBuild.Inputs.TriggerApprovalConfigArgs\n {\n ApprovalRequired = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"manual-trigger\"),\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\tApprovalConfig: \u0026cloudbuild.TriggerApprovalConfigArgs{\n\t\t\t\tApprovalRequired: 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.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerApprovalConfigArgs;\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 .name(\"manual-trigger\")\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 .approvalConfig(TriggerApprovalConfigArgs.builder()\n .approvalRequired(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: manual-trigger\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 approvalConfig:\n approvalRequired: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Manual Github Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"\",\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n githubEnterpriseConfig: \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n githubEnterpriseConfig: \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_ghe_trigger = gcp.cloudbuild.Trigger(\"manual-ghe-trigger\",\n name=\"\",\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n \"github_enterprise_config\": \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n \"github_enterprise_config\": \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\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 Name = \"\",\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 GithubEnterpriseConfig = \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\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 GithubEnterpriseConfig = \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"\"),\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\tGithubEnterpriseConfig: pulumi.String(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\"),\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\tGithubEnterpriseConfig: pulumi.String(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\"),\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.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 manual_ghe_trigger = new Trigger(\"manual-ghe-trigger\", TriggerArgs.builder()\n .name(\"\")\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .githubEnterpriseConfig(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\")\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 .githubEnterpriseConfig(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-ghe-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name:\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n githubEnterpriseConfig: projects/myProject/locations/global/githubEnterpriseConfigs/configID\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\n githubEnterpriseConfig: projects/myProject/locations/global/githubEnterpriseConfigs/configID\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Manual Bitbucket Server\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"terraform-manual-bbs-trigger\",\n sourceToBuild: {\n uri: \"https://bbs.com/scm/stag/test-repo.git\",\n ref: \"refs/heads/main\",\n repoType: \"BITBUCKET_SERVER\",\n bitbucketServerConfig: \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://bbs.com/scm/stag/test-repo.git\",\n revision: \"refs/heads/main\",\n repoType: \"BITBUCKET_SERVER\",\n bitbucketServerConfig: \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_bitbucket_trigger = gcp.cloudbuild.Trigger(\"manual-bitbucket-trigger\",\n name=\"terraform-manual-bbs-trigger\",\n source_to_build={\n \"uri\": \"https://bbs.com/scm/stag/test-repo.git\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"BITBUCKET_SERVER\",\n \"bitbucket_server_config\": \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://bbs.com/scm/stag/test-repo.git\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"BITBUCKET_SERVER\",\n \"bitbucket_server_config\": \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\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 Name = \"terraform-manual-bbs-trigger\",\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://bbs.com/scm/stag/test-repo.git\",\n Ref = \"refs/heads/main\",\n RepoType = \"BITBUCKET_SERVER\",\n BitbucketServerConfig = \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://bbs.com/scm/stag/test-repo.git\",\n Revision = \"refs/heads/main\",\n RepoType = \"BITBUCKET_SERVER\",\n BitbucketServerConfig = \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"terraform-manual-bbs-trigger\"),\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://bbs.com/scm/stag/test-repo.git\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"BITBUCKET_SERVER\"),\n\t\t\t\tBitbucketServerConfig: pulumi.String(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\"),\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://bbs.com/scm/stag/test-repo.git\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"BITBUCKET_SERVER\"),\n\t\t\t\tBitbucketServerConfig: pulumi.String(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\"),\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.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 manual_bitbucket_trigger = new Trigger(\"manual-bitbucket-trigger\", TriggerArgs.builder()\n .name(\"terraform-manual-bbs-trigger\")\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://bbs.com/scm/stag/test-repo.git\")\n .ref(\"refs/heads/main\")\n .repoType(\"BITBUCKET_SERVER\")\n .bitbucketServerConfig(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://bbs.com/scm/stag/test-repo.git\")\n .revision(\"refs/heads/main\")\n .repoType(\"BITBUCKET_SERVER\")\n .bitbucketServerConfig(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-bitbucket-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: terraform-manual-bbs-trigger\n sourceToBuild:\n uri: https://bbs.com/scm/stag/test-repo.git\n ref: refs/heads/main\n repoType: BITBUCKET_SERVER\n bitbucketServerConfig: projects/myProject/locations/global/bitbucketServerConfigs/configID\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://bbs.com/scm/stag/test-repo.git\n revision: refs/heads/main\n repoType: BITBUCKET_SERVER\n bitbucketServerConfig: projects/myProject/locations/global/bitbucketServerConfigs/configID\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Repo\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"my-connection\",\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 name: \"my-repo\",\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 name=\"my-connection\",\n github_config={\n \"app_installation_id\": 123123,\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n })\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n name=\"my-repo\",\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={\n \"repository\": my_repository.id,\n \"push\": {\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 Name = \"my-connection\",\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 Name = \"my-repo\",\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/v7/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-connection\"),\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\tName: pulumi.String(\"my-repo\"),\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 .name(\"my-connection\")\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 .name(\"my-repo\")\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 name: my-connection\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 name: my-repo\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\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Bitbucket Server Push\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"bbs-push-trigger\",\n location: \"us-central1\",\n bitbucketServerTriggerConfig: {\n repoSlug: \"bbs-push-trigger\",\n projectKey: \"STAG\",\n bitbucketServerConfigResource: \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n push: {\n tag: \"^0.1.*\",\n invertRegex: true,\n },\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_push_trigger = gcp.cloudbuild.Trigger(\"bbs-push-trigger\",\n name=\"bbs-push-trigger\",\n location=\"us-central1\",\n bitbucket_server_trigger_config={\n \"repo_slug\": \"bbs-push-trigger\",\n \"project_key\": \"STAG\",\n \"bitbucket_server_config_resource\": \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n \"push\": {\n \"tag\": \"^0.1.*\",\n \"invert_regex\": True,\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 bbs_push_trigger = new Gcp.CloudBuild.Trigger(\"bbs-push-trigger\", new()\n {\n Name = \"bbs-push-trigger\",\n Location = \"us-central1\",\n BitbucketServerTriggerConfig = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigArgs\n {\n RepoSlug = \"bbs-push-trigger\",\n ProjectKey = \"STAG\",\n BitbucketServerConfigResource = \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n Push = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigPushArgs\n {\n Tag = \"^0.1.*\",\n InvertRegex = true,\n },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"bbs-push-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBitbucketServerTriggerConfig: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigArgs{\n\t\t\t\tRepoSlug: pulumi.String(\"bbs-push-trigger\"),\n\t\t\t\tProjectKey: pulumi.String(\"STAG\"),\n\t\t\t\tBitbucketServerConfigResource: pulumi.String(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigPushArgs{\n\t\t\t\t\tTag: pulumi.String(\"^0.1.*\"),\n\t\t\t\t\tInvertRegex: pulumi.Bool(true),\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.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 .name(\"bbs-push-trigger\")\n .location(\"us-central1\")\n .bitbucketServerTriggerConfig(TriggerBitbucketServerTriggerConfigArgs.builder()\n .repoSlug(\"bbs-push-trigger\")\n .projectKey(\"STAG\")\n .bitbucketServerConfigResource(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\")\n .push(TriggerBitbucketServerTriggerConfigPushArgs.builder()\n .tag(\"^0.1.*\")\n .invertRegex(true)\n .build())\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-push-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: bbs-push-trigger\n location: us-central1\n bitbucketServerTriggerConfig:\n repoSlug: bbs-push-trigger\n projectKey: STAG\n bitbucketServerConfigResource: projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\n push:\n tag: ^0.1.*\n invertRegex: true\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Bitbucket Server Pull Request\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"ghe-trigger\",\n location: \"us-central1\",\n bitbucketServerTriggerConfig: {\n repoSlug: \"terraform-provider-google\",\n projectKey: \"STAG\",\n bitbucketServerConfigResource: \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n pullRequest: {\n branch: \"^master$\",\n invertRegex: false,\n commentControl: \"COMMENTS_ENABLED\",\n },\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_pull_request_trigger = gcp.cloudbuild.Trigger(\"bbs-pull-request-trigger\",\n name=\"ghe-trigger\",\n location=\"us-central1\",\n bitbucket_server_trigger_config={\n \"repo_slug\": \"terraform-provider-google\",\n \"project_key\": \"STAG\",\n \"bitbucket_server_config_resource\": \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n \"pull_request\": {\n \"branch\": \"^master$\",\n \"invert_regex\": False,\n \"comment_control\": \"COMMENTS_ENABLED\",\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 bbs_pull_request_trigger = new Gcp.CloudBuild.Trigger(\"bbs-pull-request-trigger\", new()\n {\n Name = \"ghe-trigger\",\n Location = \"us-central1\",\n BitbucketServerTriggerConfig = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigArgs\n {\n RepoSlug = \"terraform-provider-google\",\n ProjectKey = \"STAG\",\n BitbucketServerConfigResource = \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n PullRequest = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigPullRequestArgs\n {\n Branch = \"^master$\",\n InvertRegex = false,\n CommentControl = \"COMMENTS_ENABLED\",\n },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"ghe-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBitbucketServerTriggerConfig: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigArgs{\n\t\t\t\tRepoSlug: pulumi.String(\"terraform-provider-google\"),\n\t\t\t\tProjectKey: pulumi.String(\"STAG\"),\n\t\t\t\tBitbucketServerConfigResource: pulumi.String(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\"),\n\t\t\t\tPullRequest: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigPullRequestArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^master$\"),\n\t\t\t\t\tInvertRegex: pulumi.Bool(false),\n\t\t\t\t\tCommentControl: pulumi.String(\"COMMENTS_ENABLED\"),\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.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 .name(\"ghe-trigger\")\n .location(\"us-central1\")\n .bitbucketServerTriggerConfig(TriggerBitbucketServerTriggerConfigArgs.builder()\n .repoSlug(\"terraform-provider-google\")\n .projectKey(\"STAG\")\n .bitbucketServerConfigResource(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\")\n .pullRequest(TriggerBitbucketServerTriggerConfigPullRequestArgs.builder()\n .branch(\"^master$\")\n .invertRegex(false)\n .commentControl(\"COMMENTS_ENABLED\")\n .build())\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-pull-request-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: ghe-trigger\n location: us-central1\n bitbucketServerTriggerConfig:\n repoSlug: terraform-provider-google\n projectKey: STAG\n bitbucketServerConfigResource: projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\n pullRequest:\n branch: ^master$\n invertRegex: false\n commentControl: COMMENTS_ENABLED\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Github Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"ghe-trigger\",\n location: \"us-central1\",\n github: {\n owner: \"hashicorp\",\n name: \"terraform-provider-google\",\n push: {\n branch: \"^main$\",\n },\n enterpriseConfigResourceName: \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nghe_trigger = gcp.cloudbuild.Trigger(\"ghe-trigger\",\n name=\"ghe-trigger\",\n location=\"us-central1\",\n github={\n \"owner\": \"hashicorp\",\n \"name\": \"terraform-provider-google\",\n \"push\": {\n \"branch\": \"^main$\",\n },\n \"enterprise_config_resource_name\": \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\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 ghe_trigger = new Gcp.CloudBuild.Trigger(\"ghe-trigger\", new()\n {\n Name = \"ghe-trigger\",\n Location = \"us-central1\",\n Github = new Gcp.CloudBuild.Inputs.TriggerGithubArgs\n {\n Owner = \"hashicorp\",\n Name = \"terraform-provider-google\",\n Push = new Gcp.CloudBuild.Inputs.TriggerGithubPushArgs\n {\n Branch = \"^main$\",\n },\n EnterpriseConfigResourceName = \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"ghe-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tGithub: \u0026cloudbuild.TriggerGithubArgs{\n\t\t\t\tOwner: pulumi.String(\"hashicorp\"),\n\t\t\t\tName: pulumi.String(\"terraform-provider-google\"),\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\tEnterpriseConfigResourceName: pulumi.String(\"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\"),\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.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 .name(\"ghe-trigger\")\n .location(\"us-central1\")\n .github(TriggerGithubArgs.builder()\n .owner(\"hashicorp\")\n .name(\"terraform-provider-google\")\n .push(TriggerGithubPushArgs.builder()\n .branch(\"^main$\")\n .build())\n .enterpriseConfigResourceName(\"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\")\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ghe-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: ghe-trigger\n location: us-central1\n github:\n owner: hashicorp\n name: terraform-provider-google\n push:\n branch: ^main$\n enterpriseConfigResourceName: projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Allow Failure\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst allow_failure_trigger = new gcp.cloudbuild.Trigger(\"allow-failure-trigger\", {\n name: \"my-trigger\",\n location: \"global\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n build: {\n steps: [{\n name: \"ubuntu\",\n args: [\n \"-c\",\n \"exit 1\",\n ],\n allowFailure: true,\n }],\n source: {\n storageSource: {\n bucket: \"mybucket\",\n object: \"source_code.tar.gz\",\n },\n },\n tags: [\n \"build\",\n \"newFeature\",\n ],\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n queueTtl: \"20s\",\n logsBucket: \"gs://mybucket/logs\",\n secrets: [{\n kmsKeyName: \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n secretEnv: {\n PASSWORD: \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n availableSecrets: {\n secretManagers: [{\n env: \"MY_SECRET\",\n versionName: \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n artifacts: {\n images: [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n objects: {\n location: \"gs://bucket/path/to/somewhere/\",\n paths: [\"path\"],\n },\n },\n options: {\n sourceProvenanceHashes: [\"MD5\"],\n requestedVerifyOption: \"VERIFIED\",\n machineType: \"N1_HIGHCPU_8\",\n diskSizeGb: 100,\n substitutionOption: \"ALLOW_LOOSE\",\n dynamicSubstitutions: true,\n logStreamingOption: \"STREAM_OFF\",\n workerPool: \"pool\",\n logging: \"LEGACY\",\n envs: [\"ekey = evalue\"],\n secretEnvs: [\"secretenv = svalue\"],\n volumes: [{\n name: \"v1\",\n path: \"v1\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nallow_failure_trigger = gcp.cloudbuild.Trigger(\"allow-failure-trigger\",\n name=\"my-trigger\",\n location=\"global\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n build={\n \"steps\": [{\n \"name\": \"ubuntu\",\n \"args\": [\n \"-c\",\n \"exit 1\",\n ],\n \"allow_failure\": True,\n }],\n \"source\": {\n \"storage_source\": {\n \"bucket\": \"mybucket\",\n \"object\": \"source_code.tar.gz\",\n },\n },\n \"tags\": [\n \"build\",\n \"newFeature\",\n ],\n \"substitutions\": {\n \"__foo\": \"bar\",\n \"__baz\": \"qux\",\n },\n \"queue_ttl\": \"20s\",\n \"logs_bucket\": \"gs://mybucket/logs\",\n \"secrets\": [{\n \"kms_key_name\": \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n \"secret_env\": {\n \"password\": \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n \"available_secrets\": {\n \"secret_managers\": [{\n \"env\": \"MY_SECRET\",\n \"version_name\": \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n \"artifacts\": {\n \"images\": [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n \"objects\": {\n \"location\": \"gs://bucket/path/to/somewhere/\",\n \"paths\": [\"path\"],\n },\n },\n \"options\": {\n \"source_provenance_hashes\": [\"MD5\"],\n \"requested_verify_option\": \"VERIFIED\",\n \"machine_type\": \"N1_HIGHCPU_8\",\n \"disk_size_gb\": 100,\n \"substitution_option\": \"ALLOW_LOOSE\",\n \"dynamic_substitutions\": True,\n \"log_streaming_option\": \"STREAM_OFF\",\n \"worker_pool\": \"pool\",\n \"logging\": \"LEGACY\",\n \"envs\": [\"ekey = evalue\"],\n \"secret_envs\": [\"secretenv = svalue\"],\n \"volumes\": [{\n \"name\": \"v1\",\n \"path\": \"v1\",\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 allow_failure_trigger = new Gcp.CloudBuild.Trigger(\"allow-failure-trigger\", new()\n {\n Name = \"my-trigger\",\n Location = \"global\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Build = new Gcp.CloudBuild.Inputs.TriggerBuildArgs\n {\n Steps = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"ubuntu\",\n Args = new[]\n {\n \"-c\",\n \"exit 1\",\n },\n AllowFailure = true,\n },\n },\n Source = new Gcp.CloudBuild.Inputs.TriggerBuildSourceArgs\n {\n StorageSource = new Gcp.CloudBuild.Inputs.TriggerBuildSourceStorageSourceArgs\n {\n Bucket = \"mybucket\",\n Object = \"source_code.tar.gz\",\n },\n },\n Tags = new[]\n {\n \"build\",\n \"newFeature\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n QueueTtl = \"20s\",\n LogsBucket = \"gs://mybucket/logs\",\n Secrets = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildSecretArgs\n {\n KmsKeyName = \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n SecretEnv = \n {\n { \"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\" },\n },\n },\n },\n AvailableSecrets = new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsArgs\n {\n SecretManagers = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsSecretManagerArgs\n {\n Env = \"MY_SECRET\",\n VersionName = \"projects/myProject/secrets/mySecret/versions/latest\",\n },\n },\n },\n Artifacts = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsArgs\n {\n Images = new[]\n {\n \"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\",\n },\n Objects = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsObjectsArgs\n {\n Location = \"gs://bucket/path/to/somewhere/\",\n Paths = new[]\n {\n \"path\",\n },\n },\n },\n Options = new Gcp.CloudBuild.Inputs.TriggerBuildOptionsArgs\n {\n SourceProvenanceHashes = new[]\n {\n \"MD5\",\n },\n RequestedVerifyOption = \"VERIFIED\",\n MachineType = \"N1_HIGHCPU_8\",\n DiskSizeGb = 100,\n SubstitutionOption = \"ALLOW_LOOSE\",\n DynamicSubstitutions = true,\n LogStreamingOption = \"STREAM_OFF\",\n WorkerPool = \"pool\",\n Logging = \"LEGACY\",\n Envs = new[]\n {\n \"ekey = evalue\",\n },\n SecretEnvs = new[]\n {\n \"secretenv = svalue\",\n },\n Volumes = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildOptionsVolumeArgs\n {\n Name = \"v1\",\n Path = \"v1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"allow-failure-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"my-trigger\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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\tBuild: \u0026cloudbuild.TriggerBuildArgs{\n\t\t\t\tSteps: cloudbuild.TriggerBuildStepArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"ubuntu\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"-c\"),\n\t\t\t\t\t\t\tpulumi.String(\"exit 1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAllowFailure: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudbuild.TriggerBuildSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudbuild.TriggerBuildSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: pulumi.String(\"mybucket\"),\n\t\t\t\t\t\tObject: pulumi.String(\"source_code.tar.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"build\"),\n\t\t\t\t\tpulumi.String(\"newFeature\"),\n\t\t\t\t},\n\t\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t},\n\t\t\t\tQueueTtl: pulumi.String(\"20s\"),\n\t\t\t\tLogsBucket: pulumi.String(\"gs://mybucket/logs\"),\n\t\t\t\tSecrets: cloudbuild.TriggerBuildSecretArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildSecretArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\"),\n\t\t\t\t\t\tSecretEnv: pulumi.StringMap{\n\t\t\t\t\t\t\t\"PASSWORD\": pulumi.String(\"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAvailableSecrets: \u0026cloudbuild.TriggerBuildAvailableSecretsArgs{\n\t\t\t\t\tSecretManagers: cloudbuild.TriggerBuildAvailableSecretsSecretManagerArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildAvailableSecretsSecretManagerArgs{\n\t\t\t\t\t\t\tEnv: pulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t\tVersionName: pulumi.String(\"projects/myProject/secrets/mySecret/versions/latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: \u0026cloudbuild.TriggerBuildArtifactsArgs{\n\t\t\t\t\tImages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"),\n\t\t\t\t\t},\n\t\t\t\t\tObjects: \u0026cloudbuild.TriggerBuildArtifactsObjectsArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"gs://bucket/path/to/somewhere/\"),\n\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"path\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOptions: \u0026cloudbuild.TriggerBuildOptionsArgs{\n\t\t\t\t\tSourceProvenanceHashes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MD5\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequestedVerifyOption: pulumi.String(\"VERIFIED\"),\n\t\t\t\t\tMachineType: pulumi.String(\"N1_HIGHCPU_8\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tSubstitutionOption: pulumi.String(\"ALLOW_LOOSE\"),\n\t\t\t\t\tDynamicSubstitutions: pulumi.Bool(true),\n\t\t\t\t\tLogStreamingOption: pulumi.String(\"STREAM_OFF\"),\n\t\t\t\t\tWorkerPool: pulumi.String(\"pool\"),\n\t\t\t\t\tLogging: pulumi.String(\"LEGACY\"),\n\t\t\t\t\tEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ekey = evalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretenv = svalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudbuild.TriggerBuildOptionsVolumeArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildOptionsVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"v1\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"v1\"),\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.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\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 .name(\"my-trigger\")\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build(TriggerBuildArgs.builder()\n .steps(TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .args( \n \"-c\",\n \"exit 1\")\n .allowFailure(true)\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .tags( \n \"build\",\n \"newFeature\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .queueTtl(\"20s\")\n .logsBucket(\"gs://mybucket/logs\")\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 .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManagers(TriggerBuildAvailableSecretsSecretManagerArgs.builder()\n .env(\"MY_SECRET\")\n .versionName(\"projects/myProject/secrets/mySecret/versions/latest\")\n .build())\n .build())\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 .options(TriggerBuildOptionsArgs.builder()\n .sourceProvenanceHashes(\"MD5\")\n .requestedVerifyOption(\"VERIFIED\")\n .machineType(\"N1_HIGHCPU_8\")\n .diskSizeGb(100)\n .substitutionOption(\"ALLOW_LOOSE\")\n .dynamicSubstitutions(true)\n .logStreamingOption(\"STREAM_OFF\")\n .workerPool(\"pool\")\n .logging(\"LEGACY\")\n .envs(\"ekey = evalue\")\n .secretEnvs(\"secretenv = svalue\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allow-failure-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: my-trigger\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n build:\n steps:\n - name: ubuntu\n args:\n - -c\n - exit 1\n allowFailure: true\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n tags:\n - build\n - newFeature\n substitutions:\n _FOO: bar\n _BAZ: qux\n queueTtl: 20s\n logsBucket: gs://mybucket/logs\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n availableSecrets:\n secretManagers:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\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 options:\n sourceProvenanceHashes:\n - MD5\n requestedVerifyOption: VERIFIED\n machineType: N1_HIGHCPU_8\n diskSizeGb: 100\n substitutionOption: ALLOW_LOOSE\n dynamicSubstitutions: true\n logStreamingOption: STREAM_OFF\n workerPool: pool\n logging: LEGACY\n envs:\n - ekey = evalue\n secretEnvs:\n - secretenv = svalue\n volumes:\n - name: v1\n path: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Allow Exit Codes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst allow_exit_codes_trigger = new gcp.cloudbuild.Trigger(\"allow-exit-codes-trigger\", {\n name: \"my-trigger\",\n location: \"global\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n build: {\n steps: [{\n name: \"ubuntu\",\n args: [\n \"-c\",\n \"exit 1\",\n ],\n allowExitCodes: [\n 1,\n 3,\n ],\n }],\n source: {\n storageSource: {\n bucket: \"mybucket\",\n object: \"source_code.tar.gz\",\n },\n },\n tags: [\n \"build\",\n \"newFeature\",\n ],\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n queueTtl: \"20s\",\n logsBucket: \"gs://mybucket/logs\",\n secrets: [{\n kmsKeyName: \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n secretEnv: {\n PASSWORD: \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n availableSecrets: {\n secretManagers: [{\n env: \"MY_SECRET\",\n versionName: \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n artifacts: {\n images: [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n objects: {\n location: \"gs://bucket/path/to/somewhere/\",\n paths: [\"path\"],\n },\n },\n options: {\n sourceProvenanceHashes: [\"MD5\"],\n requestedVerifyOption: \"VERIFIED\",\n machineType: \"N1_HIGHCPU_8\",\n diskSizeGb: 100,\n substitutionOption: \"ALLOW_LOOSE\",\n dynamicSubstitutions: true,\n logStreamingOption: \"STREAM_OFF\",\n workerPool: \"pool\",\n logging: \"LEGACY\",\n envs: [\"ekey = evalue\"],\n secretEnvs: [\"secretenv = svalue\"],\n volumes: [{\n name: \"v1\",\n path: \"v1\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nallow_exit_codes_trigger = gcp.cloudbuild.Trigger(\"allow-exit-codes-trigger\",\n name=\"my-trigger\",\n location=\"global\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n build={\n \"steps\": [{\n \"name\": \"ubuntu\",\n \"args\": [\n \"-c\",\n \"exit 1\",\n ],\n \"allow_exit_codes\": [\n 1,\n 3,\n ],\n }],\n \"source\": {\n \"storage_source\": {\n \"bucket\": \"mybucket\",\n \"object\": \"source_code.tar.gz\",\n },\n },\n \"tags\": [\n \"build\",\n \"newFeature\",\n ],\n \"substitutions\": {\n \"__foo\": \"bar\",\n \"__baz\": \"qux\",\n },\n \"queue_ttl\": \"20s\",\n \"logs_bucket\": \"gs://mybucket/logs\",\n \"secrets\": [{\n \"kms_key_name\": \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n \"secret_env\": {\n \"password\": \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n \"available_secrets\": {\n \"secret_managers\": [{\n \"env\": \"MY_SECRET\",\n \"version_name\": \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n \"artifacts\": {\n \"images\": [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n \"objects\": {\n \"location\": \"gs://bucket/path/to/somewhere/\",\n \"paths\": [\"path\"],\n },\n },\n \"options\": {\n \"source_provenance_hashes\": [\"MD5\"],\n \"requested_verify_option\": \"VERIFIED\",\n \"machine_type\": \"N1_HIGHCPU_8\",\n \"disk_size_gb\": 100,\n \"substitution_option\": \"ALLOW_LOOSE\",\n \"dynamic_substitutions\": True,\n \"log_streaming_option\": \"STREAM_OFF\",\n \"worker_pool\": \"pool\",\n \"logging\": \"LEGACY\",\n \"envs\": [\"ekey = evalue\"],\n \"secret_envs\": [\"secretenv = svalue\"],\n \"volumes\": [{\n \"name\": \"v1\",\n \"path\": \"v1\",\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 allow_exit_codes_trigger = new Gcp.CloudBuild.Trigger(\"allow-exit-codes-trigger\", new()\n {\n Name = \"my-trigger\",\n Location = \"global\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Build = new Gcp.CloudBuild.Inputs.TriggerBuildArgs\n {\n Steps = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"ubuntu\",\n Args = new[]\n {\n \"-c\",\n \"exit 1\",\n },\n AllowExitCodes = new[]\n {\n 1,\n 3,\n },\n },\n },\n Source = new Gcp.CloudBuild.Inputs.TriggerBuildSourceArgs\n {\n StorageSource = new Gcp.CloudBuild.Inputs.TriggerBuildSourceStorageSourceArgs\n {\n Bucket = \"mybucket\",\n Object = \"source_code.tar.gz\",\n },\n },\n Tags = new[]\n {\n \"build\",\n \"newFeature\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n QueueTtl = \"20s\",\n LogsBucket = \"gs://mybucket/logs\",\n Secrets = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildSecretArgs\n {\n KmsKeyName = \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n SecretEnv = \n {\n { \"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\" },\n },\n },\n },\n AvailableSecrets = new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsArgs\n {\n SecretManagers = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsSecretManagerArgs\n {\n Env = \"MY_SECRET\",\n VersionName = \"projects/myProject/secrets/mySecret/versions/latest\",\n },\n },\n },\n Artifacts = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsArgs\n {\n Images = new[]\n {\n \"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\",\n },\n Objects = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsObjectsArgs\n {\n Location = \"gs://bucket/path/to/somewhere/\",\n Paths = new[]\n {\n \"path\",\n },\n },\n },\n Options = new Gcp.CloudBuild.Inputs.TriggerBuildOptionsArgs\n {\n SourceProvenanceHashes = new[]\n {\n \"MD5\",\n },\n RequestedVerifyOption = \"VERIFIED\",\n MachineType = \"N1_HIGHCPU_8\",\n DiskSizeGb = 100,\n SubstitutionOption = \"ALLOW_LOOSE\",\n DynamicSubstitutions = true,\n LogStreamingOption = \"STREAM_OFF\",\n WorkerPool = \"pool\",\n Logging = \"LEGACY\",\n Envs = new[]\n {\n \"ekey = evalue\",\n },\n SecretEnvs = new[]\n {\n \"secretenv = svalue\",\n },\n Volumes = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildOptionsVolumeArgs\n {\n Name = \"v1\",\n Path = \"v1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"allow-exit-codes-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"my-trigger\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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\tBuild: \u0026cloudbuild.TriggerBuildArgs{\n\t\t\t\tSteps: cloudbuild.TriggerBuildStepArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"ubuntu\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"-c\"),\n\t\t\t\t\t\t\tpulumi.String(\"exit 1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAllowExitCodes: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\tpulumi.Int(3),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudbuild.TriggerBuildSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudbuild.TriggerBuildSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: pulumi.String(\"mybucket\"),\n\t\t\t\t\t\tObject: pulumi.String(\"source_code.tar.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"build\"),\n\t\t\t\t\tpulumi.String(\"newFeature\"),\n\t\t\t\t},\n\t\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t},\n\t\t\t\tQueueTtl: pulumi.String(\"20s\"),\n\t\t\t\tLogsBucket: pulumi.String(\"gs://mybucket/logs\"),\n\t\t\t\tSecrets: cloudbuild.TriggerBuildSecretArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildSecretArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\"),\n\t\t\t\t\t\tSecretEnv: pulumi.StringMap{\n\t\t\t\t\t\t\t\"PASSWORD\": pulumi.String(\"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAvailableSecrets: \u0026cloudbuild.TriggerBuildAvailableSecretsArgs{\n\t\t\t\t\tSecretManagers: cloudbuild.TriggerBuildAvailableSecretsSecretManagerArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildAvailableSecretsSecretManagerArgs{\n\t\t\t\t\t\t\tEnv: pulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t\tVersionName: pulumi.String(\"projects/myProject/secrets/mySecret/versions/latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: \u0026cloudbuild.TriggerBuildArtifactsArgs{\n\t\t\t\t\tImages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"),\n\t\t\t\t\t},\n\t\t\t\t\tObjects: \u0026cloudbuild.TriggerBuildArtifactsObjectsArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"gs://bucket/path/to/somewhere/\"),\n\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"path\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOptions: \u0026cloudbuild.TriggerBuildOptionsArgs{\n\t\t\t\t\tSourceProvenanceHashes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MD5\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequestedVerifyOption: pulumi.String(\"VERIFIED\"),\n\t\t\t\t\tMachineType: pulumi.String(\"N1_HIGHCPU_8\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tSubstitutionOption: pulumi.String(\"ALLOW_LOOSE\"),\n\t\t\t\t\tDynamicSubstitutions: pulumi.Bool(true),\n\t\t\t\t\tLogStreamingOption: pulumi.String(\"STREAM_OFF\"),\n\t\t\t\t\tWorkerPool: pulumi.String(\"pool\"),\n\t\t\t\t\tLogging: pulumi.String(\"LEGACY\"),\n\t\t\t\t\tEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ekey = evalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretenv = svalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudbuild.TriggerBuildOptionsVolumeArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildOptionsVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"v1\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"v1\"),\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.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\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 .name(\"my-trigger\")\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build(TriggerBuildArgs.builder()\n .steps(TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .args( \n \"-c\",\n \"exit 1\")\n .allowExitCodes( \n 1,\n 3)\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .tags( \n \"build\",\n \"newFeature\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .queueTtl(\"20s\")\n .logsBucket(\"gs://mybucket/logs\")\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 .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManagers(TriggerBuildAvailableSecretsSecretManagerArgs.builder()\n .env(\"MY_SECRET\")\n .versionName(\"projects/myProject/secrets/mySecret/versions/latest\")\n .build())\n .build())\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 .options(TriggerBuildOptionsArgs.builder()\n .sourceProvenanceHashes(\"MD5\")\n .requestedVerifyOption(\"VERIFIED\")\n .machineType(\"N1_HIGHCPU_8\")\n .diskSizeGb(100)\n .substitutionOption(\"ALLOW_LOOSE\")\n .dynamicSubstitutions(true)\n .logStreamingOption(\"STREAM_OFF\")\n .workerPool(\"pool\")\n .logging(\"LEGACY\")\n .envs(\"ekey = evalue\")\n .secretEnvs(\"secretenv = svalue\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allow-exit-codes-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: my-trigger\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n build:\n steps:\n - name: ubuntu\n args:\n - -c\n - exit 1\n allowExitCodes:\n - 1\n - 3\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n tags:\n - build\n - newFeature\n substitutions:\n _FOO: bar\n _BAZ: qux\n queueTtl: 20s\n logsBucket: gs://mybucket/logs\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n availableSecrets:\n secretManagers:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\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 options:\n sourceProvenanceHashes:\n - MD5\n requestedVerifyOption: VERIFIED\n machineType: N1_HIGHCPU_8\n diskSizeGb: 100\n substitutionOption: ALLOW_LOOSE\n dynamicSubstitutions: true\n logStreamingOption: STREAM_OFF\n workerPool: pool\n logging: LEGACY\n envs:\n - ekey = evalue\n secretEnvs:\n - secretenv = svalue\n volumes:\n - name: v1\n path: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Pubsub With Repo\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"my-connection\",\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 name: \"my-repo\",\n parentConnection: my_connection.id,\n remoteUri: \"https://github.com/myuser/my-repo.git\",\n});\nconst mytopic = new gcp.pubsub.Topic(\"mytopic\", {name: \"my-topic\"});\nconst pubsub_with_repo_trigger = new gcp.cloudbuild.Trigger(\"pubsub-with-repo-trigger\", {\n name: \"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 name=\"my-connection\",\n github_config={\n \"app_installation_id\": 123123,\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n })\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n name=\"my-repo\",\n parent_connection=my_connection.id,\n remote_uri=\"https://github.com/myuser/my-repo.git\")\nmytopic = gcp.pubsub.Topic(\"mytopic\", name=\"my-topic\")\npubsub_with_repo_trigger = gcp.cloudbuild.Trigger(\"pubsub-with-repo-trigger\",\n name=\"pubsub-with-repo-trigger\",\n location=\"us-central1\",\n pubsub_config={\n \"topic\": mytopic.id,\n },\n source_to_build={\n \"repository\": my_repository.id,\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\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 Name = \"my-connection\",\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 Name = \"my-repo\",\n ParentConnection = my_connection.Id,\n RemoteUri = \"https://github.com/myuser/my-repo.git\",\n });\n\n var mytopic = new Gcp.PubSub.Topic(\"mytopic\", new()\n {\n Name = \"my-topic\",\n });\n\n var pubsub_with_repo_trigger = new Gcp.CloudBuild.Trigger(\"pubsub-with-repo-trigger\", new()\n {\n Name = \"pubsub-with-repo-trigger\",\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/v7/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-connection\"),\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\tName: pulumi.String(\"my-repo\"),\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\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-topic\"),\n\t\t})\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\tName: pulumi.String(\"pubsub-with-repo-trigger\"),\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.pubsub.TopicArgs;\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 .name(\"my-connection\")\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 .name(\"my-repo\")\n .parentConnection(my_connection.id())\n .remoteUri(\"https://github.com/myuser/my-repo.git\")\n .build());\n\n var mytopic = new Topic(\"mytopic\", TopicArgs.builder()\n .name(\"my-topic\")\n .build());\n\n var pubsub_with_repo_trigger = new Trigger(\"pubsub-with-repo-trigger\", TriggerArgs.builder()\n .name(\"pubsub-with-repo-trigger\")\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 name: my-connection\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 name: my-repo\n parentConnection: ${[\"my-connection\"].id}\n remoteUri: https://github.com/myuser/my-repo.git\n mytopic:\n type: gcp:pubsub:Topic\n properties:\n name: my-topic\n pubsub-with-repo-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: pubsub-with-repo-trigger\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\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTrigger can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/triggers/{{trigger_id}}`\n\n* `projects/{{project}}/triggers/{{trigger_id}}`\n\n* `{{project}}/{{trigger_id}}`\n\n* `{{trigger_id}}`\n\nWhen using the `pulumi import` command, Trigger can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default projects/{{project}}/locations/{{location}}/triggers/{{trigger_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default projects/{{project}}/triggers/{{trigger_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default {{project}}/{{trigger_id}}\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", @@ -132971,7 +132971,7 @@ } }, "gcp:cloudbuild/workerPool:WorkerPool": { - "description": "Definition of custom Cloud Build WorkerPools for running jobs with custom configuration and custom networking.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.cloudbuild.WorkerPool(\"pool\", {\n name: \"my-pool\",\n location: \"europe-west1\",\n workerConfig: {\n diskSizeGb: 100,\n machineType: \"e2-standard-4\",\n noExternalIp: false,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.cloudbuild.WorkerPool(\"pool\",\n name=\"my-pool\",\n location=\"europe-west1\",\n worker_config={\n \"diskSizeGb\": 100,\n \"machineType\": \"e2-standard-4\",\n \"noExternalIp\": False,\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.CloudBuild.WorkerPool(\"pool\", new()\n {\n Name = \"my-pool\",\n Location = \"europe-west1\",\n WorkerConfig = new Gcp.CloudBuild.Inputs.WorkerPoolWorkerConfigArgs\n {\n DiskSizeGb = 100,\n MachineType = \"e2-standard-4\",\n NoExternalIp = false,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewWorkerPool(ctx, \"pool\", \u0026cloudbuild.WorkerPoolArgs{\n\t\t\tName: pulumi.String(\"my-pool\"),\n\t\t\tLocation: pulumi.String(\"europe-west1\"),\n\t\t\tWorkerConfig: \u0026cloudbuild.WorkerPoolWorkerConfigArgs{\n\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\tNoExternalIp: pulumi.Bool(false),\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.WorkerPool;\nimport com.pulumi.gcp.cloudbuild.WorkerPoolArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.WorkerPoolWorkerConfigArgs;\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 WorkerPool(\"pool\", WorkerPoolArgs.builder()\n .name(\"my-pool\")\n .location(\"europe-west1\")\n .workerConfig(WorkerPoolWorkerConfigArgs.builder()\n .diskSizeGb(100)\n .machineType(\"e2-standard-4\")\n .noExternalIp(false)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:cloudbuild:WorkerPool\n properties:\n name: my-pool\n location: europe-west1\n workerConfig:\n diskSizeGb: 100\n machineType: e2-standard-4\n noExternalIp: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Network Config\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicenetworking = new gcp.projects.Service(\"servicenetworking\", {\n service: \"servicenetworking.googleapis.com\",\n disableOnDestroy: false,\n});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n}, {\n dependsOn: [servicenetworking],\n});\nconst workerRange = new gcp.compute.GlobalAddress(\"worker_range\", {\n name: \"worker-pool-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: network.id,\n});\nconst workerPoolConn = new gcp.servicenetworking.Connection(\"worker_pool_conn\", {\n network: network.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [workerRange.name],\n}, {\n dependsOn: [servicenetworking],\n});\nconst pool = new gcp.cloudbuild.WorkerPool(\"pool\", {\n name: \"my-pool\",\n location: \"europe-west1\",\n workerConfig: {\n diskSizeGb: 100,\n machineType: \"e2-standard-4\",\n noExternalIp: false,\n },\n networkConfig: {\n peeredNetwork: network.id,\n peeredNetworkIpRange: \"/29\",\n },\n}, {\n dependsOn: [workerPoolConn],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservicenetworking = gcp.projects.Service(\"servicenetworking\",\n service=\"servicenetworking.googleapis.com\",\n disable_on_destroy=False)\nnetwork = gcp.compute.Network(\"network\",\n name=\"my-network\",\n auto_create_subnetworks=False,\n opts = pulumi.ResourceOptions(depends_on=[servicenetworking]))\nworker_range = gcp.compute.GlobalAddress(\"worker_range\",\n name=\"worker-pool-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=network.id)\nworker_pool_conn = gcp.servicenetworking.Connection(\"worker_pool_conn\",\n network=network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[worker_range.name],\n opts = pulumi.ResourceOptions(depends_on=[servicenetworking]))\npool = gcp.cloudbuild.WorkerPool(\"pool\",\n name=\"my-pool\",\n location=\"europe-west1\",\n worker_config={\n \"diskSizeGb\": 100,\n \"machineType\": \"e2-standard-4\",\n \"noExternalIp\": False,\n },\n network_config={\n \"peeredNetwork\": network.id,\n \"peeredNetworkIpRange\": \"/29\",\n },\n opts = pulumi.ResourceOptions(depends_on=[worker_pool_conn]))\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 servicenetworking = new Gcp.Projects.Service(\"servicenetworking\", new()\n {\n ServiceName = \"servicenetworking.googleapis.com\",\n DisableOnDestroy = false,\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n servicenetworking,\n },\n });\n\n var workerRange = new Gcp.Compute.GlobalAddress(\"worker_range\", new()\n {\n Name = \"worker-pool-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = network.Id,\n });\n\n var workerPoolConn = new Gcp.ServiceNetworking.Connection(\"worker_pool_conn\", new()\n {\n Network = network.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n workerRange.Name,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n servicenetworking,\n },\n });\n\n var pool = new Gcp.CloudBuild.WorkerPool(\"pool\", new()\n {\n Name = \"my-pool\",\n Location = \"europe-west1\",\n WorkerConfig = new Gcp.CloudBuild.Inputs.WorkerPoolWorkerConfigArgs\n {\n DiskSizeGb = 100,\n MachineType = \"e2-standard-4\",\n NoExternalIp = false,\n },\n NetworkConfig = new Gcp.CloudBuild.Inputs.WorkerPoolNetworkConfigArgs\n {\n PeeredNetwork = network.Id,\n PeeredNetworkIpRange = \"/29\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n workerPoolConn,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tservicenetworking, err := projects.NewService(ctx, \"servicenetworking\", \u0026projects.ServiceArgs{\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tDisableOnDestroy: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tservicenetworking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tworkerRange, err := compute.NewGlobalAddress(ctx, \"worker_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"worker-pool-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tworkerPoolConn, err := servicenetworking.NewConnection(ctx, \"worker_pool_conn\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: network.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tworkerRange.Name,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tservicenetworking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewWorkerPool(ctx, \"pool\", \u0026cloudbuild.WorkerPoolArgs{\n\t\t\tName: pulumi.String(\"my-pool\"),\n\t\t\tLocation: pulumi.String(\"europe-west1\"),\n\t\t\tWorkerConfig: \u0026cloudbuild.WorkerPoolWorkerConfigArgs{\n\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\tNoExternalIp: pulumi.Bool(false),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026cloudbuild.WorkerPoolNetworkConfigArgs{\n\t\t\t\tPeeredNetwork: network.ID(),\n\t\t\t\tPeeredNetworkIpRange: pulumi.String(\"/29\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tworkerPoolConn,\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.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\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.cloudbuild.WorkerPool;\nimport com.pulumi.gcp.cloudbuild.WorkerPoolArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.WorkerPoolWorkerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.WorkerPoolNetworkConfigArgs;\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 servicenetworking = new Service(\"servicenetworking\", ServiceArgs.builder()\n .service(\"servicenetworking.googleapis.com\")\n .disableOnDestroy(false)\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(servicenetworking)\n .build());\n\n var workerRange = new GlobalAddress(\"workerRange\", GlobalAddressArgs.builder()\n .name(\"worker-pool-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(network.id())\n .build());\n\n var workerPoolConn = new Connection(\"workerPoolConn\", ConnectionArgs.builder()\n .network(network.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(workerRange.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(servicenetworking)\n .build());\n\n var pool = new WorkerPool(\"pool\", WorkerPoolArgs.builder()\n .name(\"my-pool\")\n .location(\"europe-west1\")\n .workerConfig(WorkerPoolWorkerConfigArgs.builder()\n .diskSizeGb(100)\n .machineType(\"e2-standard-4\")\n .noExternalIp(false)\n .build())\n .networkConfig(WorkerPoolNetworkConfigArgs.builder()\n .peeredNetwork(network.id())\n .peeredNetworkIpRange(\"/29\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(workerPoolConn)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicenetworking:\n type: gcp:projects:Service\n properties:\n service: servicenetworking.googleapis.com\n disableOnDestroy: false\n network:\n type: gcp:compute:Network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n options:\n dependson:\n - ${servicenetworking}\n workerRange:\n type: gcp:compute:GlobalAddress\n name: worker_range\n properties:\n name: worker-pool-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${network.id}\n workerPoolConn:\n type: gcp:servicenetworking:Connection\n name: worker_pool_conn\n properties:\n network: ${network.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${workerRange.name}\n options:\n dependson:\n - ${servicenetworking}\n pool:\n type: gcp:cloudbuild:WorkerPool\n properties:\n name: my-pool\n location: europe-west1\n workerConfig:\n diskSizeGb: 100\n machineType: e2-standard-4\n noExternalIp: false\n networkConfig:\n peeredNetwork: ${network.id}\n peeredNetworkIpRange: /29\n options:\n dependson:\n - ${workerPoolConn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkerPool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/workerPools/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, WorkerPool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuild/workerPool:WorkerPool default projects/{{project}}/locations/{{location}}/workerPools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/workerPool:WorkerPool default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/workerPool:WorkerPool default {{location}}/{{name}}\n```\n\n", + "description": "Definition of custom Cloud Build WorkerPools for running jobs with custom configuration and custom networking.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.cloudbuild.WorkerPool(\"pool\", {\n name: \"my-pool\",\n location: \"europe-west1\",\n workerConfig: {\n diskSizeGb: 100,\n machineType: \"e2-standard-4\",\n noExternalIp: false,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.cloudbuild.WorkerPool(\"pool\",\n name=\"my-pool\",\n location=\"europe-west1\",\n worker_config={\n \"disk_size_gb\": 100,\n \"machine_type\": \"e2-standard-4\",\n \"no_external_ip\": False,\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.CloudBuild.WorkerPool(\"pool\", new()\n {\n Name = \"my-pool\",\n Location = \"europe-west1\",\n WorkerConfig = new Gcp.CloudBuild.Inputs.WorkerPoolWorkerConfigArgs\n {\n DiskSizeGb = 100,\n MachineType = \"e2-standard-4\",\n NoExternalIp = false,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewWorkerPool(ctx, \"pool\", \u0026cloudbuild.WorkerPoolArgs{\n\t\t\tName: pulumi.String(\"my-pool\"),\n\t\t\tLocation: pulumi.String(\"europe-west1\"),\n\t\t\tWorkerConfig: \u0026cloudbuild.WorkerPoolWorkerConfigArgs{\n\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\tNoExternalIp: pulumi.Bool(false),\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.WorkerPool;\nimport com.pulumi.gcp.cloudbuild.WorkerPoolArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.WorkerPoolWorkerConfigArgs;\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 WorkerPool(\"pool\", WorkerPoolArgs.builder()\n .name(\"my-pool\")\n .location(\"europe-west1\")\n .workerConfig(WorkerPoolWorkerConfigArgs.builder()\n .diskSizeGb(100)\n .machineType(\"e2-standard-4\")\n .noExternalIp(false)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:cloudbuild:WorkerPool\n properties:\n name: my-pool\n location: europe-west1\n workerConfig:\n diskSizeGb: 100\n machineType: e2-standard-4\n noExternalIp: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Network Config\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicenetworking = new gcp.projects.Service(\"servicenetworking\", {\n service: \"servicenetworking.googleapis.com\",\n disableOnDestroy: false,\n});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n}, {\n dependsOn: [servicenetworking],\n});\nconst workerRange = new gcp.compute.GlobalAddress(\"worker_range\", {\n name: \"worker-pool-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: network.id,\n});\nconst workerPoolConn = new gcp.servicenetworking.Connection(\"worker_pool_conn\", {\n network: network.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [workerRange.name],\n}, {\n dependsOn: [servicenetworking],\n});\nconst pool = new gcp.cloudbuild.WorkerPool(\"pool\", {\n name: \"my-pool\",\n location: \"europe-west1\",\n workerConfig: {\n diskSizeGb: 100,\n machineType: \"e2-standard-4\",\n noExternalIp: false,\n },\n networkConfig: {\n peeredNetwork: network.id,\n peeredNetworkIpRange: \"/29\",\n },\n}, {\n dependsOn: [workerPoolConn],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservicenetworking = gcp.projects.Service(\"servicenetworking\",\n service=\"servicenetworking.googleapis.com\",\n disable_on_destroy=False)\nnetwork = gcp.compute.Network(\"network\",\n name=\"my-network\",\n auto_create_subnetworks=False,\n opts = pulumi.ResourceOptions(depends_on=[servicenetworking]))\nworker_range = gcp.compute.GlobalAddress(\"worker_range\",\n name=\"worker-pool-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=network.id)\nworker_pool_conn = gcp.servicenetworking.Connection(\"worker_pool_conn\",\n network=network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[worker_range.name],\n opts = pulumi.ResourceOptions(depends_on=[servicenetworking]))\npool = gcp.cloudbuild.WorkerPool(\"pool\",\n name=\"my-pool\",\n location=\"europe-west1\",\n worker_config={\n \"disk_size_gb\": 100,\n \"machine_type\": \"e2-standard-4\",\n \"no_external_ip\": False,\n },\n network_config={\n \"peered_network\": network.id,\n \"peered_network_ip_range\": \"/29\",\n },\n opts = pulumi.ResourceOptions(depends_on=[worker_pool_conn]))\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 servicenetworking = new Gcp.Projects.Service(\"servicenetworking\", new()\n {\n ServiceName = \"servicenetworking.googleapis.com\",\n DisableOnDestroy = false,\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n servicenetworking,\n },\n });\n\n var workerRange = new Gcp.Compute.GlobalAddress(\"worker_range\", new()\n {\n Name = \"worker-pool-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = network.Id,\n });\n\n var workerPoolConn = new Gcp.ServiceNetworking.Connection(\"worker_pool_conn\", new()\n {\n Network = network.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n workerRange.Name,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n servicenetworking,\n },\n });\n\n var pool = new Gcp.CloudBuild.WorkerPool(\"pool\", new()\n {\n Name = \"my-pool\",\n Location = \"europe-west1\",\n WorkerConfig = new Gcp.CloudBuild.Inputs.WorkerPoolWorkerConfigArgs\n {\n DiskSizeGb = 100,\n MachineType = \"e2-standard-4\",\n NoExternalIp = false,\n },\n NetworkConfig = new Gcp.CloudBuild.Inputs.WorkerPoolNetworkConfigArgs\n {\n PeeredNetwork = network.Id,\n PeeredNetworkIpRange = \"/29\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n workerPoolConn,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tservicenetworking, err := projects.NewService(ctx, \"servicenetworking\", \u0026projects.ServiceArgs{\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tDisableOnDestroy: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tservicenetworking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tworkerRange, err := compute.NewGlobalAddress(ctx, \"worker_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"worker-pool-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tworkerPoolConn, err := servicenetworking.NewConnection(ctx, \"worker_pool_conn\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: network.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tworkerRange.Name,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tservicenetworking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewWorkerPool(ctx, \"pool\", \u0026cloudbuild.WorkerPoolArgs{\n\t\t\tName: pulumi.String(\"my-pool\"),\n\t\t\tLocation: pulumi.String(\"europe-west1\"),\n\t\t\tWorkerConfig: \u0026cloudbuild.WorkerPoolWorkerConfigArgs{\n\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\tNoExternalIp: pulumi.Bool(false),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026cloudbuild.WorkerPoolNetworkConfigArgs{\n\t\t\t\tPeeredNetwork: network.ID(),\n\t\t\t\tPeeredNetworkIpRange: pulumi.String(\"/29\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tworkerPoolConn,\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.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\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.cloudbuild.WorkerPool;\nimport com.pulumi.gcp.cloudbuild.WorkerPoolArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.WorkerPoolWorkerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.WorkerPoolNetworkConfigArgs;\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 servicenetworking = new Service(\"servicenetworking\", ServiceArgs.builder()\n .service(\"servicenetworking.googleapis.com\")\n .disableOnDestroy(false)\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(servicenetworking)\n .build());\n\n var workerRange = new GlobalAddress(\"workerRange\", GlobalAddressArgs.builder()\n .name(\"worker-pool-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(network.id())\n .build());\n\n var workerPoolConn = new Connection(\"workerPoolConn\", ConnectionArgs.builder()\n .network(network.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(workerRange.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(servicenetworking)\n .build());\n\n var pool = new WorkerPool(\"pool\", WorkerPoolArgs.builder()\n .name(\"my-pool\")\n .location(\"europe-west1\")\n .workerConfig(WorkerPoolWorkerConfigArgs.builder()\n .diskSizeGb(100)\n .machineType(\"e2-standard-4\")\n .noExternalIp(false)\n .build())\n .networkConfig(WorkerPoolNetworkConfigArgs.builder()\n .peeredNetwork(network.id())\n .peeredNetworkIpRange(\"/29\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(workerPoolConn)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicenetworking:\n type: gcp:projects:Service\n properties:\n service: servicenetworking.googleapis.com\n disableOnDestroy: false\n network:\n type: gcp:compute:Network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n options:\n dependson:\n - ${servicenetworking}\n workerRange:\n type: gcp:compute:GlobalAddress\n name: worker_range\n properties:\n name: worker-pool-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${network.id}\n workerPoolConn:\n type: gcp:servicenetworking:Connection\n name: worker_pool_conn\n properties:\n network: ${network.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${workerRange.name}\n options:\n dependson:\n - ${servicenetworking}\n pool:\n type: gcp:cloudbuild:WorkerPool\n properties:\n name: my-pool\n location: europe-west1\n workerConfig:\n diskSizeGb: 100\n machineType: e2-standard-4\n noExternalIp: false\n networkConfig:\n peeredNetwork: ${network.id}\n peeredNetworkIpRange: /29\n options:\n dependson:\n - ${workerPoolConn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkerPool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/workerPools/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, WorkerPool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuild/workerPool:WorkerPool default projects/{{project}}/locations/{{location}}/workerPools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/workerPool:WorkerPool default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/workerPool:WorkerPool default {{location}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -133152,7 +133152,7 @@ } }, "gcp:cloudbuildv2/connection:Connection": { - "description": "A connection to a SCM like GitHub, GitHub Enterprise, Bitbucket Data Center/Cloud or GitLab.\n\n\nTo get more information about Connection, see:\n\n* [API documentation](https://cloud.google.com/build/docs/api/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/build/docs)\n\n## Example Usage\n\n### Cloudbuildv2 Connection\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"tf-test-connection\",\n githubConfig: {\n appInstallationId: 0,\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/gcb-terraform-creds/secrets/github-pat/versions/1\",\n },\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 name=\"tf-test-connection\",\n github_config={\n \"appInstallationId\": 0,\n \"authorizerCredential\": {\n \"oauthTokenSecretVersion\": \"projects/gcb-terraform-creds/secrets/github-pat/versions/1\",\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 my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"tf-test-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 0,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/gcb-terraform-creds/secrets/github-pat/versions/1\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"tf-test-connection\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(0),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/gcb-terraform-creds/secrets/github-pat/versions/1\"),\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.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\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 .name(\"tf-test-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(0)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/gcb-terraform-creds/secrets/github-pat/versions/1\")\n .build())\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 name: tf-test-connection\n githubConfig:\n appInstallationId: 0\n authorizerCredential:\n oauthTokenSecretVersion: projects/gcb-terraform-creds/secrets/github-pat/versions/1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuildv2 Connection Ghe\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst private_key_secret = new gcp.secretmanager.Secret(\"private-key-secret\", {\n secretId: \"ghe-pk-secret\",\n replication: {\n auto: {},\n },\n});\nconst private_key_secret_version = new gcp.secretmanager.SecretVersion(\"private-key-secret-version\", {\n secret: private_key_secret.id,\n secretData: std.file({\n input: \"private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n});\nconst webhook_secret_secret = new gcp.secretmanager.Secret(\"webhook-secret-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst webhook_secret_secret_version = new gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\", {\n secret: webhook_secret_secret.id,\n secretData: \"\u003cwebhook-secret-data\u003e\",\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n }],\n});\nconst policy_pk = new gcp.secretmanager.SecretIamPolicy(\"policy-pk\", {\n secretId: private_key_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst policy_whs = new gcp.secretmanager.SecretIamPolicy(\"policy-whs\", {\n secretId: webhook_secret_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-terraform-ghe-connection\",\n githubEnterpriseConfig: {\n hostUri: \"https://ghe.com\",\n privateKeySecretVersion: private_key_secret_version.id,\n webhookSecretSecretVersion: webhook_secret_secret_version.id,\n appId: 200,\n appSlug: \"gcb-app\",\n appInstallationId: 300,\n },\n}, {\n dependsOn: [\n policy_pk,\n policy_whs,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nprivate_key_secret = gcp.secretmanager.Secret(\"private-key-secret\",\n secret_id=\"ghe-pk-secret\",\n replication={\n \"auto\": {},\n })\nprivate_key_secret_version = gcp.secretmanager.SecretVersion(\"private-key-secret-version\",\n secret=private_key_secret.id,\n secret_data=std.file(input=\"private-key.pem\").result)\nwebhook_secret_secret = gcp.secretmanager.Secret(\"webhook-secret-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\nwebhook_secret_secret_version = gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\",\n secret=webhook_secret_secret.id,\n secret_data=\"\u003cwebhook-secret-data\u003e\")\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy_pk = gcp.secretmanager.SecretIamPolicy(\"policy-pk\",\n secret_id=private_key_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\npolicy_whs = gcp.secretmanager.SecretIamPolicy(\"policy-whs\",\n secret_id=webhook_secret_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-terraform-ghe-connection\",\n github_enterprise_config={\n \"hostUri\": \"https://ghe.com\",\n \"privateKeySecretVersion\": private_key_secret_version.id,\n \"webhookSecretSecretVersion\": webhook_secret_secret_version.id,\n \"appId\": 200,\n \"appSlug\": \"gcb-app\",\n \"appInstallationId\": 300,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n policy_pk,\n policy_whs,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var private_key_secret = new Gcp.SecretManager.Secret(\"private-key-secret\", new()\n {\n SecretId = \"ghe-pk-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var private_key_secret_version = new Gcp.SecretManager.SecretVersion(\"private-key-secret-version\", new()\n {\n Secret = private_key_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var webhook_secret_secret = new Gcp.SecretManager.Secret(\"webhook-secret-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var webhook_secret_secret_version = new Gcp.SecretManager.SecretVersion(\"webhook-secret-secret-version\", new()\n {\n Secret = webhook_secret_secret.Id,\n SecretData = \"\u003cwebhook-secret-data\u003e\",\n });\n\n var p4sa_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-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy_pk = new Gcp.SecretManager.SecretIamPolicy(\"policy-pk\", new()\n {\n SecretId = private_key_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var policy_whs = new Gcp.SecretManager.SecretIamPolicy(\"policy-whs\", new()\n {\n SecretId = webhook_secret_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-terraform-ghe-connection\",\n GithubEnterpriseConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubEnterpriseConfigArgs\n {\n HostUri = \"https://ghe.com\",\n PrivateKeySecretVersion = private_key_secret_version.Id,\n WebhookSecretSecretVersion = webhook_secret_secret_version.Id,\n AppId = 200,\n AppSlug = \"gcb-app\",\n AppInstallationId = 300,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n policy_pk,\n policy_whs,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := secretmanager.NewSecret(ctx, \"private-key-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"ghe-pk-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"private-key-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: private_key_secret.ID(),\n\t\t\tSecretData: invokeFile.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"webhook-secret-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"github-token-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"webhook-secret-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: webhook_secret_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"\u003cwebhook-secret-data\u003e\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, 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\t\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\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-pk\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: private_key_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy-whs\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: webhook_secret_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-terraform-ghe-connection\"),\n\t\t\tGithubEnterpriseConfig: \u0026cloudbuildv2.ConnectionGithubEnterpriseConfigArgs{\n\t\t\t\tHostUri: pulumi.String(\"https://ghe.com\"),\n\t\t\t\tPrivateKeySecretVersion: private_key_secret_version.ID(),\n\t\t\t\tWebhookSecretSecretVersion: webhook_secret_secret_version.ID(),\n\t\t\t\tAppId: pulumi.Int(200),\n\t\t\t\tAppSlug: pulumi.String(\"gcb-app\"),\n\t\t\t\tAppInstallationId: pulumi.Int(300),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpolicy_pk,\n\t\t\tpolicy_whs,\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubEnterpriseConfigArgs;\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 private_key_secret = new Secret(\"private-key-secret\", SecretArgs.builder()\n .secretId(\"ghe-pk-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var private_key_secret_version = new SecretVersion(\"private-key-secret-version\", SecretVersionArgs.builder()\n .secret(private_key_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"private-key.pem\")\n .build()).result())\n .build());\n\n var webhook_secret_secret = new Secret(\"webhook-secret-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var webhook_secret_secret_version = new SecretVersion(\"webhook-secret-secret-version\", SecretVersionArgs.builder()\n .secret(webhook_secret_secret.id())\n .secretData(\"\u003cwebhook-secret-data\u003e\")\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy_pk = new SecretIamPolicy(\"policy-pk\", SecretIamPolicyArgs.builder()\n .secretId(private_key_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var policy_whs = new SecretIamPolicy(\"policy-whs\", SecretIamPolicyArgs.builder()\n .secretId(webhook_secret_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-terraform-ghe-connection\")\n .githubEnterpriseConfig(ConnectionGithubEnterpriseConfigArgs.builder()\n .hostUri(\"https://ghe.com\")\n .privateKeySecretVersion(private_key_secret_version.id())\n .webhookSecretSecretVersion(webhook_secret_secret_version.id())\n .appId(200)\n .appSlug(\"gcb-app\")\n .appInstallationId(300)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n policy_pk,\n policy_whs)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-key-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: ghe-pk-secret\n replication:\n auto: {}\n private-key-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"private-key-secret\"].id}\n secretData:\n fn::invoke:\n Function: std:file\n Arguments:\n input: private-key.pem\n Return: result\n webhook-secret-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n webhook-secret-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"webhook-secret-secret\"].id}\n secretData: \u003cwebhook-secret-data\u003e\n policy-pk:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"private-key-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n policy-whs:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"webhook-secret-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-terraform-ghe-connection\n githubEnterpriseConfig:\n hostUri: https://ghe.com\n privateKeySecretVersion: ${[\"private-key-secret-version\"].id}\n webhookSecretSecretVersion: ${[\"webhook-secret-secret-version\"].id}\n appId: 200\n appSlug: gcb-app\n appInstallationId: 300\n options:\n dependson:\n - ${[\"policy-pk\"]}\n - ${[\"policy-whs\"]}\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuildv2 Connection Github\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst github_token_secret = new gcp.secretmanager.Secret(\"github-token-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst github_token_secret_version = new gcp.secretmanager.SecretVersion(\"github-token-secret-version\", {\n secret: github_token_secret.id,\n secretData: std.file({\n input: \"my-github-token.txt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n }],\n});\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n secretId: github_token_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-connection\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: github_token_secret_version.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ngithub_token_secret = gcp.secretmanager.Secret(\"github-token-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\ngithub_token_secret_version = gcp.secretmanager.SecretVersion(\"github-token-secret-version\",\n secret=github_token_secret.id,\n secret_data=std.file(input=\"my-github-token.txt\").result)\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n secret_id=github_token_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-connection\",\n github_config={\n \"appInstallationId\": 123123,\n \"authorizerCredential\": {\n \"oauthTokenSecretVersion\": github_token_secret_version.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var github_token_secret = new Gcp.SecretManager.Secret(\"github-token-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var github_token_secret_version = new Gcp.SecretManager.SecretVersion(\"github-token-secret-version\", new()\n {\n Secret = github_token_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"my-github-token.txt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var p4sa_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-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n SecretId = github_token_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = github_token_secret_version.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := secretmanager.NewSecret(ctx, \"github-token-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"github-token-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"my-github-token.txt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"github-token-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: github_token_secret.ID(),\n\t\t\tSecretData: invokeFile.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, 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\t\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\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\tSecretId: github_token_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-connection\"),\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: github_token_secret_version.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.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\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 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 github_token_secret = new Secret(\"github-token-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var github_token_secret_version = new SecretVersion(\"github-token-secret-version\", SecretVersionArgs.builder()\n .secret(github_token_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"my-github-token.txt\")\n .build()).result())\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder()\n .secretId(github_token_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(github_token_secret_version.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n github-token-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n github-token-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"github-token-secret\"].id}\n secretData:\n fn::invoke:\n Function: std:file\n Arguments:\n input: my-github-token.txt\n Return: result\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"github-token-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-connection\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: ${[\"github-token-secret-version\"].id}\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Connection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuildv2/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/connection:Connection default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/connection:Connection default {{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/connection:Connection default {{name}}\n```\n\n", + "description": "A connection to a SCM like GitHub, GitHub Enterprise, Bitbucket Data Center/Cloud or GitLab.\n\n\nTo get more information about Connection, see:\n\n* [API documentation](https://cloud.google.com/build/docs/api/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/build/docs)\n\n## Example Usage\n\n### Cloudbuildv2 Connection\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"tf-test-connection\",\n githubConfig: {\n appInstallationId: 0,\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/gcb-terraform-creds/secrets/github-pat/versions/1\",\n },\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 name=\"tf-test-connection\",\n github_config={\n \"app_installation_id\": 0,\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/gcb-terraform-creds/secrets/github-pat/versions/1\",\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 my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"tf-test-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 0,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/gcb-terraform-creds/secrets/github-pat/versions/1\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"tf-test-connection\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(0),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/gcb-terraform-creds/secrets/github-pat/versions/1\"),\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.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\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 .name(\"tf-test-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(0)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/gcb-terraform-creds/secrets/github-pat/versions/1\")\n .build())\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 name: tf-test-connection\n githubConfig:\n appInstallationId: 0\n authorizerCredential:\n oauthTokenSecretVersion: projects/gcb-terraform-creds/secrets/github-pat/versions/1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuildv2 Connection Ghe\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst private_key_secret = new gcp.secretmanager.Secret(\"private-key-secret\", {\n secretId: \"ghe-pk-secret\",\n replication: {\n auto: {},\n },\n});\nconst private_key_secret_version = new gcp.secretmanager.SecretVersion(\"private-key-secret-version\", {\n secret: private_key_secret.id,\n secretData: std.file({\n input: \"private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n});\nconst webhook_secret_secret = new gcp.secretmanager.Secret(\"webhook-secret-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst webhook_secret_secret_version = new gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\", {\n secret: webhook_secret_secret.id,\n secretData: \"\u003cwebhook-secret-data\u003e\",\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n }],\n});\nconst policy_pk = new gcp.secretmanager.SecretIamPolicy(\"policy-pk\", {\n secretId: private_key_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst policy_whs = new gcp.secretmanager.SecretIamPolicy(\"policy-whs\", {\n secretId: webhook_secret_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-terraform-ghe-connection\",\n githubEnterpriseConfig: {\n hostUri: \"https://ghe.com\",\n privateKeySecretVersion: private_key_secret_version.id,\n webhookSecretSecretVersion: webhook_secret_secret_version.id,\n appId: 200,\n appSlug: \"gcb-app\",\n appInstallationId: 300,\n },\n}, {\n dependsOn: [\n policy_pk,\n policy_whs,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nprivate_key_secret = gcp.secretmanager.Secret(\"private-key-secret\",\n secret_id=\"ghe-pk-secret\",\n replication={\n \"auto\": {},\n })\nprivate_key_secret_version = gcp.secretmanager.SecretVersion(\"private-key-secret-version\",\n secret=private_key_secret.id,\n secret_data=std.file(input=\"private-key.pem\").result)\nwebhook_secret_secret = gcp.secretmanager.Secret(\"webhook-secret-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\nwebhook_secret_secret_version = gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\",\n secret=webhook_secret_secret.id,\n secret_data=\"\u003cwebhook-secret-data\u003e\")\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy_pk = gcp.secretmanager.SecretIamPolicy(\"policy-pk\",\n secret_id=private_key_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\npolicy_whs = gcp.secretmanager.SecretIamPolicy(\"policy-whs\",\n secret_id=webhook_secret_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-terraform-ghe-connection\",\n github_enterprise_config={\n \"host_uri\": \"https://ghe.com\",\n \"private_key_secret_version\": private_key_secret_version.id,\n \"webhook_secret_secret_version\": webhook_secret_secret_version.id,\n \"app_id\": 200,\n \"app_slug\": \"gcb-app\",\n \"app_installation_id\": 300,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n policy_pk,\n policy_whs,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var private_key_secret = new Gcp.SecretManager.Secret(\"private-key-secret\", new()\n {\n SecretId = \"ghe-pk-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var private_key_secret_version = new Gcp.SecretManager.SecretVersion(\"private-key-secret-version\", new()\n {\n Secret = private_key_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var webhook_secret_secret = new Gcp.SecretManager.Secret(\"webhook-secret-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var webhook_secret_secret_version = new Gcp.SecretManager.SecretVersion(\"webhook-secret-secret-version\", new()\n {\n Secret = webhook_secret_secret.Id,\n SecretData = \"\u003cwebhook-secret-data\u003e\",\n });\n\n var p4sa_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-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy_pk = new Gcp.SecretManager.SecretIamPolicy(\"policy-pk\", new()\n {\n SecretId = private_key_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var policy_whs = new Gcp.SecretManager.SecretIamPolicy(\"policy-whs\", new()\n {\n SecretId = webhook_secret_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-terraform-ghe-connection\",\n GithubEnterpriseConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubEnterpriseConfigArgs\n {\n HostUri = \"https://ghe.com\",\n PrivateKeySecretVersion = private_key_secret_version.Id,\n WebhookSecretSecretVersion = webhook_secret_secret_version.Id,\n AppId = 200,\n AppSlug = \"gcb-app\",\n AppInstallationId = 300,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n policy_pk,\n policy_whs,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := secretmanager.NewSecret(ctx, \"private-key-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"ghe-pk-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"private-key-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: private_key_secret.ID(),\n\t\t\tSecretData: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"webhook-secret-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"github-token-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"webhook-secret-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: webhook_secret_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"\u003cwebhook-secret-data\u003e\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, 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\t\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\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-pk\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: private_key_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy-whs\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: webhook_secret_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-terraform-ghe-connection\"),\n\t\t\tGithubEnterpriseConfig: \u0026cloudbuildv2.ConnectionGithubEnterpriseConfigArgs{\n\t\t\t\tHostUri: pulumi.String(\"https://ghe.com\"),\n\t\t\t\tPrivateKeySecretVersion: private_key_secret_version.ID(),\n\t\t\t\tWebhookSecretSecretVersion: webhook_secret_secret_version.ID(),\n\t\t\t\tAppId: pulumi.Int(200),\n\t\t\t\tAppSlug: pulumi.String(\"gcb-app\"),\n\t\t\t\tAppInstallationId: pulumi.Int(300),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpolicy_pk,\n\t\t\tpolicy_whs,\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubEnterpriseConfigArgs;\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 private_key_secret = new Secret(\"private-key-secret\", SecretArgs.builder()\n .secretId(\"ghe-pk-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var private_key_secret_version = new SecretVersion(\"private-key-secret-version\", SecretVersionArgs.builder()\n .secret(private_key_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"private-key.pem\")\n .build()).result())\n .build());\n\n var webhook_secret_secret = new Secret(\"webhook-secret-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var webhook_secret_secret_version = new SecretVersion(\"webhook-secret-secret-version\", SecretVersionArgs.builder()\n .secret(webhook_secret_secret.id())\n .secretData(\"\u003cwebhook-secret-data\u003e\")\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy_pk = new SecretIamPolicy(\"policy-pk\", SecretIamPolicyArgs.builder()\n .secretId(private_key_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var policy_whs = new SecretIamPolicy(\"policy-whs\", SecretIamPolicyArgs.builder()\n .secretId(webhook_secret_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-terraform-ghe-connection\")\n .githubEnterpriseConfig(ConnectionGithubEnterpriseConfigArgs.builder()\n .hostUri(\"https://ghe.com\")\n .privateKeySecretVersion(private_key_secret_version.id())\n .webhookSecretSecretVersion(webhook_secret_secret_version.id())\n .appId(200)\n .appSlug(\"gcb-app\")\n .appInstallationId(300)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n policy_pk,\n policy_whs)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-key-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: ghe-pk-secret\n replication:\n auto: {}\n private-key-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"private-key-secret\"].id}\n secretData:\n fn::invoke:\n Function: std:file\n Arguments:\n input: private-key.pem\n Return: result\n webhook-secret-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n webhook-secret-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"webhook-secret-secret\"].id}\n secretData: \u003cwebhook-secret-data\u003e\n policy-pk:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"private-key-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n policy-whs:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"webhook-secret-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-terraform-ghe-connection\n githubEnterpriseConfig:\n hostUri: https://ghe.com\n privateKeySecretVersion: ${[\"private-key-secret-version\"].id}\n webhookSecretSecretVersion: ${[\"webhook-secret-secret-version\"].id}\n appId: 200\n appSlug: gcb-app\n appInstallationId: 300\n options:\n dependson:\n - ${[\"policy-pk\"]}\n - ${[\"policy-whs\"]}\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuildv2 Connection Github\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst github_token_secret = new gcp.secretmanager.Secret(\"github-token-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst github_token_secret_version = new gcp.secretmanager.SecretVersion(\"github-token-secret-version\", {\n secret: github_token_secret.id,\n secretData: std.file({\n input: \"my-github-token.txt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n }],\n});\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n secretId: github_token_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-connection\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: github_token_secret_version.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ngithub_token_secret = gcp.secretmanager.Secret(\"github-token-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\ngithub_token_secret_version = gcp.secretmanager.SecretVersion(\"github-token-secret-version\",\n secret=github_token_secret.id,\n secret_data=std.file(input=\"my-github-token.txt\").result)\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n secret_id=github_token_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-connection\",\n github_config={\n \"app_installation_id\": 123123,\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": github_token_secret_version.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var github_token_secret = new Gcp.SecretManager.Secret(\"github-token-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var github_token_secret_version = new Gcp.SecretManager.SecretVersion(\"github-token-secret-version\", new()\n {\n Secret = github_token_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"my-github-token.txt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var p4sa_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-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n SecretId = github_token_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = github_token_secret_version.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := secretmanager.NewSecret(ctx, \"github-token-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"github-token-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"my-github-token.txt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"github-token-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: github_token_secret.ID(),\n\t\t\tSecretData: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, 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\t\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\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\tSecretId: github_token_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-connection\"),\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: github_token_secret_version.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.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\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 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 github_token_secret = new Secret(\"github-token-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var github_token_secret_version = new SecretVersion(\"github-token-secret-version\", SecretVersionArgs.builder()\n .secret(github_token_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"my-github-token.txt\")\n .build()).result())\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder()\n .secretId(github_token_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(github_token_secret_version.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n github-token-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n github-token-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"github-token-secret\"].id}\n secretData:\n fn::invoke:\n Function: std:file\n Arguments:\n input: my-github-token.txt\n Return: result\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"github-token-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-connection\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: ${[\"github-token-secret-version\"].id}\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Connection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuildv2/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/connection:Connection default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/connection:Connection default {{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/connection:Connection default {{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -133692,7 +133692,7 @@ } }, "gcp:cloudbuildv2/repository:Repository": { - "description": "A repository associated to a parent connection.\n\n\nTo get more information about Repository, see:\n\n* [API documentation](https://cloud.google.com/build/docs/api/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/build/docs)\n\n## Example Usage\n\n### Cloudbuildv2 Repository Ghe Doc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst private_key_secret = new gcp.secretmanager.Secret(\"private-key-secret\", {\n secretId: \"ghe-pk-secret\",\n replication: {\n auto: {},\n },\n});\nconst private_key_secret_version = new gcp.secretmanager.SecretVersion(\"private-key-secret-version\", {\n secret: private_key_secret.id,\n secretData: std.file({\n input: \"private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n});\nconst webhook_secret_secret = new gcp.secretmanager.Secret(\"webhook-secret-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst webhook_secret_secret_version = new gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\", {\n secret: webhook_secret_secret.id,\n secretData: \"\u003cwebhook-secret-data\u003e\",\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n }],\n});\nconst policy_pk = new gcp.secretmanager.SecretIamPolicy(\"policy-pk\", {\n secretId: private_key_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst policy_whs = new gcp.secretmanager.SecretIamPolicy(\"policy-whs\", {\n secretId: webhook_secret_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-terraform-ghe-connection\",\n githubEnterpriseConfig: {\n hostUri: \"https://ghe.com\",\n privateKeySecretVersion: private_key_secret_version.id,\n webhookSecretSecretVersion: webhook_secret_secret_version.id,\n appId: 200,\n appSlug: \"gcb-app\",\n appInstallationId: 300,\n },\n}, {\n dependsOn: [\n policy_pk,\n policy_whs,\n ],\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n name: \"my-terraform-ghe-repo\",\n location: \"us-central1\",\n parentConnection: my_connection.name,\n remoteUri: \"https://ghe.com/hashicorp/terraform-provider-google.git\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nprivate_key_secret = gcp.secretmanager.Secret(\"private-key-secret\",\n secret_id=\"ghe-pk-secret\",\n replication={\n \"auto\": {},\n })\nprivate_key_secret_version = gcp.secretmanager.SecretVersion(\"private-key-secret-version\",\n secret=private_key_secret.id,\n secret_data=std.file(input=\"private-key.pem\").result)\nwebhook_secret_secret = gcp.secretmanager.Secret(\"webhook-secret-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\nwebhook_secret_secret_version = gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\",\n secret=webhook_secret_secret.id,\n secret_data=\"\u003cwebhook-secret-data\u003e\")\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy_pk = gcp.secretmanager.SecretIamPolicy(\"policy-pk\",\n secret_id=private_key_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\npolicy_whs = gcp.secretmanager.SecretIamPolicy(\"policy-whs\",\n secret_id=webhook_secret_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-terraform-ghe-connection\",\n github_enterprise_config={\n \"hostUri\": \"https://ghe.com\",\n \"privateKeySecretVersion\": private_key_secret_version.id,\n \"webhookSecretSecretVersion\": webhook_secret_secret_version.id,\n \"appId\": 200,\n \"appSlug\": \"gcb-app\",\n \"appInstallationId\": 300,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n policy_pk,\n policy_whs,\n ]))\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n name=\"my-terraform-ghe-repo\",\n location=\"us-central1\",\n parent_connection=my_connection.name,\n remote_uri=\"https://ghe.com/hashicorp/terraform-provider-google.git\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var private_key_secret = new Gcp.SecretManager.Secret(\"private-key-secret\", new()\n {\n SecretId = \"ghe-pk-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var private_key_secret_version = new Gcp.SecretManager.SecretVersion(\"private-key-secret-version\", new()\n {\n Secret = private_key_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var webhook_secret_secret = new Gcp.SecretManager.Secret(\"webhook-secret-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var webhook_secret_secret_version = new Gcp.SecretManager.SecretVersion(\"webhook-secret-secret-version\", new()\n {\n Secret = webhook_secret_secret.Id,\n SecretData = \"\u003cwebhook-secret-data\u003e\",\n });\n\n var p4sa_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-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy_pk = new Gcp.SecretManager.SecretIamPolicy(\"policy-pk\", new()\n {\n SecretId = private_key_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var policy_whs = new Gcp.SecretManager.SecretIamPolicy(\"policy-whs\", new()\n {\n SecretId = webhook_secret_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-terraform-ghe-connection\",\n GithubEnterpriseConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubEnterpriseConfigArgs\n {\n HostUri = \"https://ghe.com\",\n PrivateKeySecretVersion = private_key_secret_version.Id,\n WebhookSecretSecretVersion = webhook_secret_secret_version.Id,\n AppId = 200,\n AppSlug = \"gcb-app\",\n AppInstallationId = 300,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n policy_pk,\n policy_whs,\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n Name = \"my-terraform-ghe-repo\",\n Location = \"us-central1\",\n ParentConnection = my_connection.Name,\n RemoteUri = \"https://ghe.com/hashicorp/terraform-provider-google.git\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := secretmanager.NewSecret(ctx, \"private-key-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"ghe-pk-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"private-key-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: private_key_secret.ID(),\n\t\t\tSecretData: invokeFile.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"webhook-secret-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"github-token-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"webhook-secret-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: webhook_secret_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"\u003cwebhook-secret-data\u003e\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, 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\t\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\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-pk\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: private_key_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy-whs\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: webhook_secret_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-terraform-ghe-connection\"),\n\t\t\tGithubEnterpriseConfig: \u0026cloudbuildv2.ConnectionGithubEnterpriseConfigArgs{\n\t\t\t\tHostUri: pulumi.String(\"https://ghe.com\"),\n\t\t\t\tPrivateKeySecretVersion: private_key_secret_version.ID(),\n\t\t\t\tWebhookSecretSecretVersion: webhook_secret_secret_version.ID(),\n\t\t\t\tAppId: pulumi.Int(200),\n\t\t\t\tAppSlug: pulumi.String(\"gcb-app\"),\n\t\t\t\tAppInstallationId: pulumi.Int(300),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpolicy_pk,\n\t\t\tpolicy_whs,\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\tName: pulumi.String(\"my-terraform-ghe-repo\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tParentConnection: my_connection.Name,\n\t\t\tRemoteUri: pulumi.String(\"https://ghe.com/hashicorp/terraform-provider-google.git\"),\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubEnterpriseConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.Repository;\nimport com.pulumi.gcp.cloudbuildv2.RepositoryArgs;\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 private_key_secret = new Secret(\"private-key-secret\", SecretArgs.builder()\n .secretId(\"ghe-pk-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var private_key_secret_version = new SecretVersion(\"private-key-secret-version\", SecretVersionArgs.builder()\n .secret(private_key_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"private-key.pem\")\n .build()).result())\n .build());\n\n var webhook_secret_secret = new Secret(\"webhook-secret-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var webhook_secret_secret_version = new SecretVersion(\"webhook-secret-secret-version\", SecretVersionArgs.builder()\n .secret(webhook_secret_secret.id())\n .secretData(\"\u003cwebhook-secret-data\u003e\")\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy_pk = new SecretIamPolicy(\"policy-pk\", SecretIamPolicyArgs.builder()\n .secretId(private_key_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var policy_whs = new SecretIamPolicy(\"policy-whs\", SecretIamPolicyArgs.builder()\n .secretId(webhook_secret_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-terraform-ghe-connection\")\n .githubEnterpriseConfig(ConnectionGithubEnterpriseConfigArgs.builder()\n .hostUri(\"https://ghe.com\")\n .privateKeySecretVersion(private_key_secret_version.id())\n .webhookSecretSecretVersion(webhook_secret_secret_version.id())\n .appId(200)\n .appSlug(\"gcb-app\")\n .appInstallationId(300)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n policy_pk,\n policy_whs)\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder()\n .name(\"my-terraform-ghe-repo\")\n .location(\"us-central1\")\n .parentConnection(my_connection.name())\n .remoteUri(\"https://ghe.com/hashicorp/terraform-provider-google.git\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-key-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: ghe-pk-secret\n replication:\n auto: {}\n private-key-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"private-key-secret\"].id}\n secretData:\n fn::invoke:\n Function: std:file\n Arguments:\n input: private-key.pem\n Return: result\n webhook-secret-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n webhook-secret-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"webhook-secret-secret\"].id}\n secretData: \u003cwebhook-secret-data\u003e\n policy-pk:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"private-key-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n policy-whs:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"webhook-secret-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-terraform-ghe-connection\n githubEnterpriseConfig:\n hostUri: https://ghe.com\n privateKeySecretVersion: ${[\"private-key-secret-version\"].id}\n webhookSecretSecretVersion: ${[\"webhook-secret-secret-version\"].id}\n appId: 200\n appSlug: gcb-app\n appInstallationId: 300\n options:\n dependson:\n - ${[\"policy-pk\"]}\n - ${[\"policy-whs\"]}\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n name: my-terraform-ghe-repo\n location: us-central1\n parentConnection: ${[\"my-connection\"].name}\n remoteUri: https://ghe.com/hashicorp/terraform-provider-google.git\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuildv2 Repository Github Doc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst github_token_secret = new gcp.secretmanager.Secret(\"github-token-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst github_token_secret_version = new gcp.secretmanager.SecretVersion(\"github-token-secret-version\", {\n secret: github_token_secret.id,\n secretData: std.file({\n input: \"my-github-token.txt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n }],\n});\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n secretId: github_token_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-connection\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: github_token_secret_version.id,\n },\n },\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n location: \"us-central1\",\n name: \"my-repo\",\n parentConnection: my_connection.name,\n remoteUri: \"https://github.com/myuser/myrepo.git\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ngithub_token_secret = gcp.secretmanager.Secret(\"github-token-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\ngithub_token_secret_version = gcp.secretmanager.SecretVersion(\"github-token-secret-version\",\n secret=github_token_secret.id,\n secret_data=std.file(input=\"my-github-token.txt\").result)\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n secret_id=github_token_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-connection\",\n github_config={\n \"appInstallationId\": 123123,\n \"authorizerCredential\": {\n \"oauthTokenSecretVersion\": github_token_secret_version.id,\n },\n })\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n location=\"us-central1\",\n name=\"my-repo\",\n parent_connection=my_connection.name,\n remote_uri=\"https://github.com/myuser/myrepo.git\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var github_token_secret = new Gcp.SecretManager.Secret(\"github-token-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var github_token_secret_version = new Gcp.SecretManager.SecretVersion(\"github-token-secret-version\", new()\n {\n Secret = github_token_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"my-github-token.txt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var p4sa_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-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n SecretId = github_token_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = github_token_secret_version.Id,\n },\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n Location = \"us-central1\",\n Name = \"my-repo\",\n ParentConnection = my_connection.Name,\n RemoteUri = \"https://github.com/myuser/myrepo.git\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := secretmanager.NewSecret(ctx, \"github-token-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"github-token-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"my-github-token.txt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"github-token-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: github_token_secret.ID(),\n\t\t\tSecretData: invokeFile.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, 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\t\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\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\tSecretId: github_token_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-connection\"),\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: github_token_secret_version.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\t_, err = cloudbuildv2.NewRepository(ctx, \"my-repository\", \u0026cloudbuildv2.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-repo\"),\n\t\t\tParentConnection: my_connection.Name,\n\t\t\tRemoteUri: pulumi.String(\"https://github.com/myuser/myrepo.git\"),\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\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 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 github_token_secret = new Secret(\"github-token-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var github_token_secret_version = new SecretVersion(\"github-token-secret-version\", SecretVersionArgs.builder()\n .secret(github_token_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"my-github-token.txt\")\n .build()).result())\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder()\n .secretId(github_token_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(github_token_secret_version.id())\n .build())\n .build())\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .name(\"my-repo\")\n .parentConnection(my_connection.name())\n .remoteUri(\"https://github.com/myuser/myrepo.git\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n github-token-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n github-token-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"github-token-secret\"].id}\n secretData:\n fn::invoke:\n Function: std:file\n Arguments:\n input: my-github-token.txt\n Return: result\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"github-token-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-connection\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: ${[\"github-token-secret-version\"].id}\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n location: us-central1\n name: my-repo\n parentConnection: ${[\"my-connection\"].name}\n remoteUri: https://github.com/myuser/myrepo.git\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{parent_connection}}/repositories/{{name}}`\n\n* `{{project}}/{{location}}/{{parent_connection}}/{{name}}`\n\n* `{{location}}/{{parent_connection}}/{{name}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuildv2/repository:Repository default projects/{{project}}/locations/{{location}}/connections/{{parent_connection}}/repositories/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/repository:Repository default {{project}}/{{location}}/{{parent_connection}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/repository:Repository default {{location}}/{{parent_connection}}/{{name}}\n```\n\n", + "description": "A repository associated to a parent connection.\n\n\nTo get more information about Repository, see:\n\n* [API documentation](https://cloud.google.com/build/docs/api/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/build/docs)\n\n## Example Usage\n\n### Cloudbuildv2 Repository Ghe Doc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst private_key_secret = new gcp.secretmanager.Secret(\"private-key-secret\", {\n secretId: \"ghe-pk-secret\",\n replication: {\n auto: {},\n },\n});\nconst private_key_secret_version = new gcp.secretmanager.SecretVersion(\"private-key-secret-version\", {\n secret: private_key_secret.id,\n secretData: std.file({\n input: \"private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n});\nconst webhook_secret_secret = new gcp.secretmanager.Secret(\"webhook-secret-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst webhook_secret_secret_version = new gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\", {\n secret: webhook_secret_secret.id,\n secretData: \"\u003cwebhook-secret-data\u003e\",\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n }],\n});\nconst policy_pk = new gcp.secretmanager.SecretIamPolicy(\"policy-pk\", {\n secretId: private_key_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst policy_whs = new gcp.secretmanager.SecretIamPolicy(\"policy-whs\", {\n secretId: webhook_secret_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-terraform-ghe-connection\",\n githubEnterpriseConfig: {\n hostUri: \"https://ghe.com\",\n privateKeySecretVersion: private_key_secret_version.id,\n webhookSecretSecretVersion: webhook_secret_secret_version.id,\n appId: 200,\n appSlug: \"gcb-app\",\n appInstallationId: 300,\n },\n}, {\n dependsOn: [\n policy_pk,\n policy_whs,\n ],\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n name: \"my-terraform-ghe-repo\",\n location: \"us-central1\",\n parentConnection: my_connection.name,\n remoteUri: \"https://ghe.com/hashicorp/terraform-provider-google.git\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nprivate_key_secret = gcp.secretmanager.Secret(\"private-key-secret\",\n secret_id=\"ghe-pk-secret\",\n replication={\n \"auto\": {},\n })\nprivate_key_secret_version = gcp.secretmanager.SecretVersion(\"private-key-secret-version\",\n secret=private_key_secret.id,\n secret_data=std.file(input=\"private-key.pem\").result)\nwebhook_secret_secret = gcp.secretmanager.Secret(\"webhook-secret-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\nwebhook_secret_secret_version = gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\",\n secret=webhook_secret_secret.id,\n secret_data=\"\u003cwebhook-secret-data\u003e\")\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy_pk = gcp.secretmanager.SecretIamPolicy(\"policy-pk\",\n secret_id=private_key_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\npolicy_whs = gcp.secretmanager.SecretIamPolicy(\"policy-whs\",\n secret_id=webhook_secret_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-terraform-ghe-connection\",\n github_enterprise_config={\n \"host_uri\": \"https://ghe.com\",\n \"private_key_secret_version\": private_key_secret_version.id,\n \"webhook_secret_secret_version\": webhook_secret_secret_version.id,\n \"app_id\": 200,\n \"app_slug\": \"gcb-app\",\n \"app_installation_id\": 300,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n policy_pk,\n policy_whs,\n ]))\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n name=\"my-terraform-ghe-repo\",\n location=\"us-central1\",\n parent_connection=my_connection.name,\n remote_uri=\"https://ghe.com/hashicorp/terraform-provider-google.git\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var private_key_secret = new Gcp.SecretManager.Secret(\"private-key-secret\", new()\n {\n SecretId = \"ghe-pk-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var private_key_secret_version = new Gcp.SecretManager.SecretVersion(\"private-key-secret-version\", new()\n {\n Secret = private_key_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var webhook_secret_secret = new Gcp.SecretManager.Secret(\"webhook-secret-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var webhook_secret_secret_version = new Gcp.SecretManager.SecretVersion(\"webhook-secret-secret-version\", new()\n {\n Secret = webhook_secret_secret.Id,\n SecretData = \"\u003cwebhook-secret-data\u003e\",\n });\n\n var p4sa_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-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy_pk = new Gcp.SecretManager.SecretIamPolicy(\"policy-pk\", new()\n {\n SecretId = private_key_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var policy_whs = new Gcp.SecretManager.SecretIamPolicy(\"policy-whs\", new()\n {\n SecretId = webhook_secret_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-terraform-ghe-connection\",\n GithubEnterpriseConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubEnterpriseConfigArgs\n {\n HostUri = \"https://ghe.com\",\n PrivateKeySecretVersion = private_key_secret_version.Id,\n WebhookSecretSecretVersion = webhook_secret_secret_version.Id,\n AppId = 200,\n AppSlug = \"gcb-app\",\n AppInstallationId = 300,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n policy_pk,\n policy_whs,\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n Name = \"my-terraform-ghe-repo\",\n Location = \"us-central1\",\n ParentConnection = my_connection.Name,\n RemoteUri = \"https://ghe.com/hashicorp/terraform-provider-google.git\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := secretmanager.NewSecret(ctx, \"private-key-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"ghe-pk-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"private-key-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: private_key_secret.ID(),\n\t\t\tSecretData: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"webhook-secret-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"github-token-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"webhook-secret-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: webhook_secret_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"\u003cwebhook-secret-data\u003e\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, 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\t\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\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-pk\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: private_key_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy-whs\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: webhook_secret_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-terraform-ghe-connection\"),\n\t\t\tGithubEnterpriseConfig: \u0026cloudbuildv2.ConnectionGithubEnterpriseConfigArgs{\n\t\t\t\tHostUri: pulumi.String(\"https://ghe.com\"),\n\t\t\t\tPrivateKeySecretVersion: private_key_secret_version.ID(),\n\t\t\t\tWebhookSecretSecretVersion: webhook_secret_secret_version.ID(),\n\t\t\t\tAppId: pulumi.Int(200),\n\t\t\t\tAppSlug: pulumi.String(\"gcb-app\"),\n\t\t\t\tAppInstallationId: pulumi.Int(300),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpolicy_pk,\n\t\t\tpolicy_whs,\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\tName: pulumi.String(\"my-terraform-ghe-repo\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tParentConnection: my_connection.Name,\n\t\t\tRemoteUri: pulumi.String(\"https://ghe.com/hashicorp/terraform-provider-google.git\"),\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubEnterpriseConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.Repository;\nimport com.pulumi.gcp.cloudbuildv2.RepositoryArgs;\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 private_key_secret = new Secret(\"private-key-secret\", SecretArgs.builder()\n .secretId(\"ghe-pk-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var private_key_secret_version = new SecretVersion(\"private-key-secret-version\", SecretVersionArgs.builder()\n .secret(private_key_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"private-key.pem\")\n .build()).result())\n .build());\n\n var webhook_secret_secret = new Secret(\"webhook-secret-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var webhook_secret_secret_version = new SecretVersion(\"webhook-secret-secret-version\", SecretVersionArgs.builder()\n .secret(webhook_secret_secret.id())\n .secretData(\"\u003cwebhook-secret-data\u003e\")\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy_pk = new SecretIamPolicy(\"policy-pk\", SecretIamPolicyArgs.builder()\n .secretId(private_key_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var policy_whs = new SecretIamPolicy(\"policy-whs\", SecretIamPolicyArgs.builder()\n .secretId(webhook_secret_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-terraform-ghe-connection\")\n .githubEnterpriseConfig(ConnectionGithubEnterpriseConfigArgs.builder()\n .hostUri(\"https://ghe.com\")\n .privateKeySecretVersion(private_key_secret_version.id())\n .webhookSecretSecretVersion(webhook_secret_secret_version.id())\n .appId(200)\n .appSlug(\"gcb-app\")\n .appInstallationId(300)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n policy_pk,\n policy_whs)\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder()\n .name(\"my-terraform-ghe-repo\")\n .location(\"us-central1\")\n .parentConnection(my_connection.name())\n .remoteUri(\"https://ghe.com/hashicorp/terraform-provider-google.git\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-key-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: ghe-pk-secret\n replication:\n auto: {}\n private-key-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"private-key-secret\"].id}\n secretData:\n fn::invoke:\n Function: std:file\n Arguments:\n input: private-key.pem\n Return: result\n webhook-secret-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n webhook-secret-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"webhook-secret-secret\"].id}\n secretData: \u003cwebhook-secret-data\u003e\n policy-pk:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"private-key-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n policy-whs:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"webhook-secret-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-terraform-ghe-connection\n githubEnterpriseConfig:\n hostUri: https://ghe.com\n privateKeySecretVersion: ${[\"private-key-secret-version\"].id}\n webhookSecretSecretVersion: ${[\"webhook-secret-secret-version\"].id}\n appId: 200\n appSlug: gcb-app\n appInstallationId: 300\n options:\n dependson:\n - ${[\"policy-pk\"]}\n - ${[\"policy-whs\"]}\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n name: my-terraform-ghe-repo\n location: us-central1\n parentConnection: ${[\"my-connection\"].name}\n remoteUri: https://ghe.com/hashicorp/terraform-provider-google.git\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuildv2 Repository Github Doc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst github_token_secret = new gcp.secretmanager.Secret(\"github-token-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst github_token_secret_version = new gcp.secretmanager.SecretVersion(\"github-token-secret-version\", {\n secret: github_token_secret.id,\n secretData: std.file({\n input: \"my-github-token.txt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n }],\n});\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n secretId: github_token_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-connection\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: github_token_secret_version.id,\n },\n },\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n location: \"us-central1\",\n name: \"my-repo\",\n parentConnection: my_connection.name,\n remoteUri: \"https://github.com/myuser/myrepo.git\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ngithub_token_secret = gcp.secretmanager.Secret(\"github-token-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\ngithub_token_secret_version = gcp.secretmanager.SecretVersion(\"github-token-secret-version\",\n secret=github_token_secret.id,\n secret_data=std.file(input=\"my-github-token.txt\").result)\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n secret_id=github_token_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-connection\",\n github_config={\n \"app_installation_id\": 123123,\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": github_token_secret_version.id,\n },\n })\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n location=\"us-central1\",\n name=\"my-repo\",\n parent_connection=my_connection.name,\n remote_uri=\"https://github.com/myuser/myrepo.git\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var github_token_secret = new Gcp.SecretManager.Secret(\"github-token-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var github_token_secret_version = new Gcp.SecretManager.SecretVersion(\"github-token-secret-version\", new()\n {\n Secret = github_token_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"my-github-token.txt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var p4sa_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-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n SecretId = github_token_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = github_token_secret_version.Id,\n },\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n Location = \"us-central1\",\n Name = \"my-repo\",\n ParentConnection = my_connection.Name,\n RemoteUri = \"https://github.com/myuser/myrepo.git\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := secretmanager.NewSecret(ctx, \"github-token-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"github-token-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"my-github-token.txt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"github-token-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: github_token_secret.ID(),\n\t\t\tSecretData: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, 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\t\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\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\tSecretId: github_token_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-connection\"),\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: github_token_secret_version.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\t_, err = cloudbuildv2.NewRepository(ctx, \"my-repository\", \u0026cloudbuildv2.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-repo\"),\n\t\t\tParentConnection: my_connection.Name,\n\t\t\tRemoteUri: pulumi.String(\"https://github.com/myuser/myrepo.git\"),\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\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 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 github_token_secret = new Secret(\"github-token-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var github_token_secret_version = new SecretVersion(\"github-token-secret-version\", SecretVersionArgs.builder()\n .secret(github_token_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"my-github-token.txt\")\n .build()).result())\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder()\n .secretId(github_token_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(github_token_secret_version.id())\n .build())\n .build())\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .name(\"my-repo\")\n .parentConnection(my_connection.name())\n .remoteUri(\"https://github.com/myuser/myrepo.git\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n github-token-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n github-token-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"github-token-secret\"].id}\n secretData:\n fn::invoke:\n Function: std:file\n Arguments:\n input: my-github-token.txt\n Return: result\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"github-token-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-connection\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: ${[\"github-token-secret-version\"].id}\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n location: us-central1\n name: my-repo\n parentConnection: ${[\"my-connection\"].name}\n remoteUri: https://github.com/myuser/myrepo.git\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{parent_connection}}/repositories/{{name}}`\n\n* `{{project}}/{{location}}/{{parent_connection}}/{{name}}`\n\n* `{{location}}/{{parent_connection}}/{{name}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuildv2/repository:Repository default projects/{{project}}/locations/{{location}}/connections/{{parent_connection}}/repositories/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/repository:Repository default {{project}}/{{location}}/{{parent_connection}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/repository:Repository default {{location}}/{{parent_connection}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -133850,7 +133850,7 @@ } }, "gcp:clouddeploy/automation:Automation": { - "description": "An `Automation` enables the automation of manually driven actions for a Delivery Pipeline, which includes Release promotion amongst Targets, Rollout repair and Rollout deployment strategy advancement.\n\n\nTo get more information about Automation, see:\n\n* [API documentation](https://cloud.google.com/deploy/docs/api/reference/rest/v1/projects.locations.deliveryPipelines.automations)\n* How-to Guides\n * [Automate your deployment](https://cloud.google.com/deploy/docs/automation)\n\n## Example Usage\n\n### Clouddeploy Automation Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pipeline = new gcp.clouddeploy.DeliveryPipeline(\"pipeline\", {\n name: \"cd-pipeline\",\n location: \"us-central1\",\n serialPipeline: {\n stages: [{\n targetId: \"test\",\n profiles: [],\n }],\n },\n});\nconst b_automation = new gcp.clouddeploy.Automation(\"b-automation\", {\n name: \"cd-automation\",\n project: pipeline.project,\n location: pipeline.location,\n deliveryPipeline: pipeline.name,\n serviceAccount: \"my@service-account.com\",\n selector: {\n targets: [{\n id: \"*\",\n }],\n },\n suspended: false,\n rules: [{\n promoteReleaseRule: {\n id: \"promote-release\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npipeline = gcp.clouddeploy.DeliveryPipeline(\"pipeline\",\n name=\"cd-pipeline\",\n location=\"us-central1\",\n serial_pipeline={\n \"stages\": [{\n \"targetId\": \"test\",\n \"profiles\": [],\n }],\n })\nb_automation = gcp.clouddeploy.Automation(\"b-automation\",\n name=\"cd-automation\",\n project=pipeline.project,\n location=pipeline.location,\n delivery_pipeline=pipeline.name,\n service_account=\"my@service-account.com\",\n selector={\n \"targets\": [{\n \"id\": \"*\",\n }],\n },\n suspended=False,\n rules=[{\n \"promoteReleaseRule\": {\n \"id\": \"promote-release\",\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 pipeline = new Gcp.CloudDeploy.DeliveryPipeline(\"pipeline\", new()\n {\n Name = \"cd-pipeline\",\n Location = \"us-central1\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n TargetId = \"test\",\n Profiles = new() { },\n },\n },\n },\n });\n\n var b_automation = new Gcp.CloudDeploy.Automation(\"b-automation\", new()\n {\n Name = \"cd-automation\",\n Project = pipeline.Project,\n Location = pipeline.Location,\n DeliveryPipeline = pipeline.Name,\n ServiceAccount = \"my@service-account.com\",\n Selector = new Gcp.CloudDeploy.Inputs.AutomationSelectorArgs\n {\n Targets = new[]\n {\n new Gcp.CloudDeploy.Inputs.AutomationSelectorTargetArgs\n {\n Id = \"*\",\n },\n },\n },\n Suspended = false,\n Rules = new[]\n {\n new Gcp.CloudDeploy.Inputs.AutomationRuleArgs\n {\n PromoteReleaseRule = new Gcp.CloudDeploy.Inputs.AutomationRulePromoteReleaseRuleArgs\n {\n Id = \"promote-release\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpipeline, err := clouddeploy.NewDeliveryPipeline(ctx, \"pipeline\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tName: pulumi.String(\"cd-pipeline\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tTargetId: pulumi.String(\"test\"),\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\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 = clouddeploy.NewAutomation(ctx, \"b-automation\", \u0026clouddeploy.AutomationArgs{\n\t\t\tName: pulumi.String(\"cd-automation\"),\n\t\t\tProject: pipeline.Project,\n\t\t\tLocation: pipeline.Location,\n\t\t\tDeliveryPipeline: pipeline.Name,\n\t\t\tServiceAccount: pulumi.String(\"my@service-account.com\"),\n\t\t\tSelector: \u0026clouddeploy.AutomationSelectorArgs{\n\t\t\t\tTargets: clouddeploy.AutomationSelectorTargetArray{\n\t\t\t\t\t\u0026clouddeploy.AutomationSelectorTargetArgs{\n\t\t\t\t\t\tId: pulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSuspended: pulumi.Bool(false),\n\t\t\tRules: clouddeploy.AutomationRuleArray{\n\t\t\t\t\u0026clouddeploy.AutomationRuleArgs{\n\t\t\t\t\tPromoteReleaseRule: \u0026clouddeploy.AutomationRulePromoteReleaseRuleArgs{\n\t\t\t\t\t\tId: pulumi.String(\"promote-release\"),\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.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.Automation;\nimport com.pulumi.gcp.clouddeploy.AutomationArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.AutomationSelectorArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.AutomationRuleArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.AutomationRulePromoteReleaseRuleArgs;\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 pipeline = new DeliveryPipeline(\"pipeline\", DeliveryPipelineArgs.builder()\n .name(\"cd-pipeline\")\n .location(\"us-central1\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages(DeliveryPipelineSerialPipelineStageArgs.builder()\n .targetId(\"test\")\n .profiles()\n .build())\n .build())\n .build());\n\n var b_automation = new Automation(\"b-automation\", AutomationArgs.builder()\n .name(\"cd-automation\")\n .project(pipeline.project())\n .location(pipeline.location())\n .deliveryPipeline(pipeline.name())\n .serviceAccount(\"my@service-account.com\")\n .selector(AutomationSelectorArgs.builder()\n .targets(AutomationSelectorTargetArgs.builder()\n .id(\"*\")\n .build())\n .build())\n .suspended(false)\n .rules(AutomationRuleArgs.builder()\n .promoteReleaseRule(AutomationRulePromoteReleaseRuleArgs.builder()\n .id(\"promote-release\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n b-automation:\n type: gcp:clouddeploy:Automation\n properties:\n name: cd-automation\n project: ${pipeline.project}\n location: ${pipeline.location}\n deliveryPipeline: ${pipeline.name}\n serviceAccount: my@service-account.com\n selector:\n targets:\n - id: '*'\n suspended: false\n rules:\n - promoteReleaseRule:\n id: promote-release\n pipeline:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n name: cd-pipeline\n location: us-central1\n serialPipeline:\n stages:\n - targetId: test\n profiles: []\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Clouddeploy Automation Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pipeline = new gcp.clouddeploy.DeliveryPipeline(\"pipeline\", {\n name: \"cd-pipeline\",\n location: \"us-central1\",\n serialPipeline: {\n stages: [{\n targetId: \"test\",\n profiles: [\"test-profile\"],\n }],\n },\n});\nconst f_automation = new gcp.clouddeploy.Automation(\"f-automation\", {\n name: \"cd-automation\",\n location: \"us-central1\",\n deliveryPipeline: pipeline.name,\n serviceAccount: \"my@service-account.com\",\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n description: \"automation resource\",\n selector: {\n targets: [{\n id: \"test\",\n labels: {\n foo: \"bar\",\n },\n }],\n },\n suspended: true,\n rules: [\n {\n promoteReleaseRule: {\n id: \"promote-release\",\n wait: \"200s\",\n destinationTargetId: \"@next\",\n destinationPhase: \"stable\",\n },\n },\n {\n advanceRolloutRule: {\n id: \"advance-rollout\",\n sourcePhases: [\"deploy\"],\n wait: \"200s\",\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npipeline = gcp.clouddeploy.DeliveryPipeline(\"pipeline\",\n name=\"cd-pipeline\",\n location=\"us-central1\",\n serial_pipeline={\n \"stages\": [{\n \"targetId\": \"test\",\n \"profiles\": [\"test-profile\"],\n }],\n })\nf_automation = gcp.clouddeploy.Automation(\"f-automation\",\n name=\"cd-automation\",\n location=\"us-central1\",\n delivery_pipeline=pipeline.name,\n service_account=\"my@service-account.com\",\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n },\n description=\"automation resource\",\n selector={\n \"targets\": [{\n \"id\": \"test\",\n \"labels\": {\n \"foo\": \"bar\",\n },\n }],\n },\n suspended=True,\n rules=[\n {\n \"promoteReleaseRule\": {\n \"id\": \"promote-release\",\n \"wait\": \"200s\",\n \"destinationTargetId\": \"@next\",\n \"destinationPhase\": \"stable\",\n },\n },\n {\n \"advanceRolloutRule\": {\n \"id\": \"advance-rollout\",\n \"sourcePhases\": [\"deploy\"],\n \"wait\": \"200s\",\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 pipeline = new Gcp.CloudDeploy.DeliveryPipeline(\"pipeline\", new()\n {\n Name = \"cd-pipeline\",\n Location = \"us-central1\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n TargetId = \"test\",\n Profiles = new[]\n {\n \"test-profile\",\n },\n },\n },\n },\n });\n\n var f_automation = new Gcp.CloudDeploy.Automation(\"f-automation\", new()\n {\n Name = \"cd-automation\",\n Location = \"us-central1\",\n DeliveryPipeline = pipeline.Name,\n ServiceAccount = \"my@service-account.com\",\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n Description = \"automation resource\",\n Selector = new Gcp.CloudDeploy.Inputs.AutomationSelectorArgs\n {\n Targets = new[]\n {\n new Gcp.CloudDeploy.Inputs.AutomationSelectorTargetArgs\n {\n Id = \"test\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n },\n },\n },\n Suspended = true,\n Rules = new[]\n {\n new Gcp.CloudDeploy.Inputs.AutomationRuleArgs\n {\n PromoteReleaseRule = new Gcp.CloudDeploy.Inputs.AutomationRulePromoteReleaseRuleArgs\n {\n Id = \"promote-release\",\n Wait = \"200s\",\n DestinationTargetId = \"@next\",\n DestinationPhase = \"stable\",\n },\n },\n new Gcp.CloudDeploy.Inputs.AutomationRuleArgs\n {\n AdvanceRolloutRule = new Gcp.CloudDeploy.Inputs.AutomationRuleAdvanceRolloutRuleArgs\n {\n Id = \"advance-rollout\",\n SourcePhases = new[]\n {\n \"deploy\",\n },\n Wait = \"200s\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpipeline, err := clouddeploy.NewDeliveryPipeline(ctx, \"pipeline\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tName: pulumi.String(\"cd-pipeline\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tTargetId: pulumi.String(\"test\"),\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-profile\"),\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 = clouddeploy.NewAutomation(ctx, \"f-automation\", \u0026clouddeploy.AutomationArgs{\n\t\t\tName: pulumi.String(\"cd-automation\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeliveryPipeline: pipeline.Name,\n\t\t\tServiceAccount: pulumi.String(\"my@service-account.com\"),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"automation resource\"),\n\t\t\tSelector: \u0026clouddeploy.AutomationSelectorArgs{\n\t\t\t\tTargets: clouddeploy.AutomationSelectorTargetArray{\n\t\t\t\t\t\u0026clouddeploy.AutomationSelectorTargetArgs{\n\t\t\t\t\t\tId: pulumi.String(\"test\"),\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"foo\": pulumi.String(\"bar\"),\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\tSuspended: pulumi.Bool(true),\n\t\t\tRules: clouddeploy.AutomationRuleArray{\n\t\t\t\t\u0026clouddeploy.AutomationRuleArgs{\n\t\t\t\t\tPromoteReleaseRule: \u0026clouddeploy.AutomationRulePromoteReleaseRuleArgs{\n\t\t\t\t\t\tId: pulumi.String(\"promote-release\"),\n\t\t\t\t\t\tWait: pulumi.String(\"200s\"),\n\t\t\t\t\t\tDestinationTargetId: pulumi.String(\"@next\"),\n\t\t\t\t\t\tDestinationPhase: pulumi.String(\"stable\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026clouddeploy.AutomationRuleArgs{\n\t\t\t\t\tAdvanceRolloutRule: \u0026clouddeploy.AutomationRuleAdvanceRolloutRuleArgs{\n\t\t\t\t\t\tId: pulumi.String(\"advance-rollout\"),\n\t\t\t\t\t\tSourcePhases: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"deploy\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tWait: pulumi.String(\"200s\"),\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.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.Automation;\nimport com.pulumi.gcp.clouddeploy.AutomationArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.AutomationSelectorArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.AutomationRuleArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.AutomationRulePromoteReleaseRuleArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.AutomationRuleAdvanceRolloutRuleArgs;\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 pipeline = new DeliveryPipeline(\"pipeline\", DeliveryPipelineArgs.builder()\n .name(\"cd-pipeline\")\n .location(\"us-central1\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages(DeliveryPipelineSerialPipelineStageArgs.builder()\n .targetId(\"test\")\n .profiles(\"test-profile\")\n .build())\n .build())\n .build());\n\n var f_automation = new Automation(\"f-automation\", AutomationArgs.builder()\n .name(\"cd-automation\")\n .location(\"us-central1\")\n .deliveryPipeline(pipeline.name())\n .serviceAccount(\"my@service-account.com\")\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .description(\"automation resource\")\n .selector(AutomationSelectorArgs.builder()\n .targets(AutomationSelectorTargetArgs.builder()\n .id(\"test\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build())\n .build())\n .suspended(true)\n .rules( \n AutomationRuleArgs.builder()\n .promoteReleaseRule(AutomationRulePromoteReleaseRuleArgs.builder()\n .id(\"promote-release\")\n .wait(\"200s\")\n .destinationTargetId(\"@next\")\n .destinationPhase(\"stable\")\n .build())\n .build(),\n AutomationRuleArgs.builder()\n .advanceRolloutRule(AutomationRuleAdvanceRolloutRuleArgs.builder()\n .id(\"advance-rollout\")\n .sourcePhases(\"deploy\")\n .wait(\"200s\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n f-automation:\n type: gcp:clouddeploy:Automation\n properties:\n name: cd-automation\n location: us-central1\n deliveryPipeline: ${pipeline.name}\n serviceAccount: my@service-account.com\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n description: automation resource\n selector:\n targets:\n - id: test\n labels:\n foo: bar\n suspended: true\n rules:\n - promoteReleaseRule:\n id: promote-release\n wait: 200s\n destinationTargetId: '@next'\n destinationPhase: stable\n - advanceRolloutRule:\n id: advance-rollout\n sourcePhases:\n - deploy\n wait: 200s\n pipeline:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n name: cd-pipeline\n location: us-central1\n serialPipeline:\n stages:\n - targetId: test\n profiles:\n - test-profile\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAutomation can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/deliveryPipelines/{{delivery_pipeline}}/automations/{{name}}`\n\n* `{{project}}/{{location}}/{{delivery_pipeline}}/{{name}}`\n\n* `{{location}}/{{delivery_pipeline}}/{{name}}`\n\nWhen using the `pulumi import` command, Automation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:clouddeploy/automation:Automation default projects/{{project}}/locations/{{location}}/deliveryPipelines/{{delivery_pipeline}}/automations/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/automation:Automation default {{project}}/{{location}}/{{delivery_pipeline}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/automation:Automation default {{location}}/{{delivery_pipeline}}/{{name}}\n```\n\n", + "description": "An `Automation` enables the automation of manually driven actions for a Delivery Pipeline, which includes Release promotion amongst Targets, Rollout repair and Rollout deployment strategy advancement.\n\n\nTo get more information about Automation, see:\n\n* [API documentation](https://cloud.google.com/deploy/docs/api/reference/rest/v1/projects.locations.deliveryPipelines.automations)\n* How-to Guides\n * [Automate your deployment](https://cloud.google.com/deploy/docs/automation)\n\n## Example Usage\n\n### Clouddeploy Automation Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pipeline = new gcp.clouddeploy.DeliveryPipeline(\"pipeline\", {\n name: \"cd-pipeline\",\n location: \"us-central1\",\n serialPipeline: {\n stages: [{\n targetId: \"test\",\n profiles: [],\n }],\n },\n});\nconst b_automation = new gcp.clouddeploy.Automation(\"b-automation\", {\n name: \"cd-automation\",\n project: pipeline.project,\n location: pipeline.location,\n deliveryPipeline: pipeline.name,\n serviceAccount: \"my@service-account.com\",\n selector: {\n targets: [{\n id: \"*\",\n }],\n },\n suspended: false,\n rules: [{\n promoteReleaseRule: {\n id: \"promote-release\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npipeline = gcp.clouddeploy.DeliveryPipeline(\"pipeline\",\n name=\"cd-pipeline\",\n location=\"us-central1\",\n serial_pipeline={\n \"stages\": [{\n \"target_id\": \"test\",\n \"profiles\": [],\n }],\n })\nb_automation = gcp.clouddeploy.Automation(\"b-automation\",\n name=\"cd-automation\",\n project=pipeline.project,\n location=pipeline.location,\n delivery_pipeline=pipeline.name,\n service_account=\"my@service-account.com\",\n selector={\n \"targets\": [{\n \"id\": \"*\",\n }],\n },\n suspended=False,\n rules=[{\n \"promote_release_rule\": {\n \"id\": \"promote-release\",\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 pipeline = new Gcp.CloudDeploy.DeliveryPipeline(\"pipeline\", new()\n {\n Name = \"cd-pipeline\",\n Location = \"us-central1\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n TargetId = \"test\",\n Profiles = new() { },\n },\n },\n },\n });\n\n var b_automation = new Gcp.CloudDeploy.Automation(\"b-automation\", new()\n {\n Name = \"cd-automation\",\n Project = pipeline.Project,\n Location = pipeline.Location,\n DeliveryPipeline = pipeline.Name,\n ServiceAccount = \"my@service-account.com\",\n Selector = new Gcp.CloudDeploy.Inputs.AutomationSelectorArgs\n {\n Targets = new[]\n {\n new Gcp.CloudDeploy.Inputs.AutomationSelectorTargetArgs\n {\n Id = \"*\",\n },\n },\n },\n Suspended = false,\n Rules = new[]\n {\n new Gcp.CloudDeploy.Inputs.AutomationRuleArgs\n {\n PromoteReleaseRule = new Gcp.CloudDeploy.Inputs.AutomationRulePromoteReleaseRuleArgs\n {\n Id = \"promote-release\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpipeline, err := clouddeploy.NewDeliveryPipeline(ctx, \"pipeline\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tName: pulumi.String(\"cd-pipeline\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tTargetId: pulumi.String(\"test\"),\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\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 = clouddeploy.NewAutomation(ctx, \"b-automation\", \u0026clouddeploy.AutomationArgs{\n\t\t\tName: pulumi.String(\"cd-automation\"),\n\t\t\tProject: pipeline.Project,\n\t\t\tLocation: pipeline.Location,\n\t\t\tDeliveryPipeline: pipeline.Name,\n\t\t\tServiceAccount: pulumi.String(\"my@service-account.com\"),\n\t\t\tSelector: \u0026clouddeploy.AutomationSelectorArgs{\n\t\t\t\tTargets: clouddeploy.AutomationSelectorTargetArray{\n\t\t\t\t\t\u0026clouddeploy.AutomationSelectorTargetArgs{\n\t\t\t\t\t\tId: pulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSuspended: pulumi.Bool(false),\n\t\t\tRules: clouddeploy.AutomationRuleArray{\n\t\t\t\t\u0026clouddeploy.AutomationRuleArgs{\n\t\t\t\t\tPromoteReleaseRule: \u0026clouddeploy.AutomationRulePromoteReleaseRuleArgs{\n\t\t\t\t\t\tId: pulumi.String(\"promote-release\"),\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.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.Automation;\nimport com.pulumi.gcp.clouddeploy.AutomationArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.AutomationSelectorArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.AutomationRuleArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.AutomationRulePromoteReleaseRuleArgs;\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 pipeline = new DeliveryPipeline(\"pipeline\", DeliveryPipelineArgs.builder()\n .name(\"cd-pipeline\")\n .location(\"us-central1\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages(DeliveryPipelineSerialPipelineStageArgs.builder()\n .targetId(\"test\")\n .profiles()\n .build())\n .build())\n .build());\n\n var b_automation = new Automation(\"b-automation\", AutomationArgs.builder()\n .name(\"cd-automation\")\n .project(pipeline.project())\n .location(pipeline.location())\n .deliveryPipeline(pipeline.name())\n .serviceAccount(\"my@service-account.com\")\n .selector(AutomationSelectorArgs.builder()\n .targets(AutomationSelectorTargetArgs.builder()\n .id(\"*\")\n .build())\n .build())\n .suspended(false)\n .rules(AutomationRuleArgs.builder()\n .promoteReleaseRule(AutomationRulePromoteReleaseRuleArgs.builder()\n .id(\"promote-release\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n b-automation:\n type: gcp:clouddeploy:Automation\n properties:\n name: cd-automation\n project: ${pipeline.project}\n location: ${pipeline.location}\n deliveryPipeline: ${pipeline.name}\n serviceAccount: my@service-account.com\n selector:\n targets:\n - id: '*'\n suspended: false\n rules:\n - promoteReleaseRule:\n id: promote-release\n pipeline:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n name: cd-pipeline\n location: us-central1\n serialPipeline:\n stages:\n - targetId: test\n profiles: []\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Clouddeploy Automation Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pipeline = new gcp.clouddeploy.DeliveryPipeline(\"pipeline\", {\n name: \"cd-pipeline\",\n location: \"us-central1\",\n serialPipeline: {\n stages: [{\n targetId: \"test\",\n profiles: [\"test-profile\"],\n }],\n },\n});\nconst f_automation = new gcp.clouddeploy.Automation(\"f-automation\", {\n name: \"cd-automation\",\n location: \"us-central1\",\n deliveryPipeline: pipeline.name,\n serviceAccount: \"my@service-account.com\",\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n description: \"automation resource\",\n selector: {\n targets: [{\n id: \"test\",\n labels: {\n foo: \"bar\",\n },\n }],\n },\n suspended: true,\n rules: [\n {\n promoteReleaseRule: {\n id: \"promote-release\",\n wait: \"200s\",\n destinationTargetId: \"@next\",\n destinationPhase: \"stable\",\n },\n },\n {\n advanceRolloutRule: {\n id: \"advance-rollout\",\n sourcePhases: [\"deploy\"],\n wait: \"200s\",\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npipeline = gcp.clouddeploy.DeliveryPipeline(\"pipeline\",\n name=\"cd-pipeline\",\n location=\"us-central1\",\n serial_pipeline={\n \"stages\": [{\n \"target_id\": \"test\",\n \"profiles\": [\"test-profile\"],\n }],\n })\nf_automation = gcp.clouddeploy.Automation(\"f-automation\",\n name=\"cd-automation\",\n location=\"us-central1\",\n delivery_pipeline=pipeline.name,\n service_account=\"my@service-account.com\",\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n },\n description=\"automation resource\",\n selector={\n \"targets\": [{\n \"id\": \"test\",\n \"labels\": {\n \"foo\": \"bar\",\n },\n }],\n },\n suspended=True,\n rules=[\n {\n \"promote_release_rule\": {\n \"id\": \"promote-release\",\n \"wait\": \"200s\",\n \"destination_target_id\": \"@next\",\n \"destination_phase\": \"stable\",\n },\n },\n {\n \"advance_rollout_rule\": {\n \"id\": \"advance-rollout\",\n \"source_phases\": [\"deploy\"],\n \"wait\": \"200s\",\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 pipeline = new Gcp.CloudDeploy.DeliveryPipeline(\"pipeline\", new()\n {\n Name = \"cd-pipeline\",\n Location = \"us-central1\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n TargetId = \"test\",\n Profiles = new[]\n {\n \"test-profile\",\n },\n },\n },\n },\n });\n\n var f_automation = new Gcp.CloudDeploy.Automation(\"f-automation\", new()\n {\n Name = \"cd-automation\",\n Location = \"us-central1\",\n DeliveryPipeline = pipeline.Name,\n ServiceAccount = \"my@service-account.com\",\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n Description = \"automation resource\",\n Selector = new Gcp.CloudDeploy.Inputs.AutomationSelectorArgs\n {\n Targets = new[]\n {\n new Gcp.CloudDeploy.Inputs.AutomationSelectorTargetArgs\n {\n Id = \"test\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n },\n },\n },\n Suspended = true,\n Rules = new[]\n {\n new Gcp.CloudDeploy.Inputs.AutomationRuleArgs\n {\n PromoteReleaseRule = new Gcp.CloudDeploy.Inputs.AutomationRulePromoteReleaseRuleArgs\n {\n Id = \"promote-release\",\n Wait = \"200s\",\n DestinationTargetId = \"@next\",\n DestinationPhase = \"stable\",\n },\n },\n new Gcp.CloudDeploy.Inputs.AutomationRuleArgs\n {\n AdvanceRolloutRule = new Gcp.CloudDeploy.Inputs.AutomationRuleAdvanceRolloutRuleArgs\n {\n Id = \"advance-rollout\",\n SourcePhases = new[]\n {\n \"deploy\",\n },\n Wait = \"200s\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpipeline, err := clouddeploy.NewDeliveryPipeline(ctx, \"pipeline\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tName: pulumi.String(\"cd-pipeline\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tTargetId: pulumi.String(\"test\"),\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-profile\"),\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 = clouddeploy.NewAutomation(ctx, \"f-automation\", \u0026clouddeploy.AutomationArgs{\n\t\t\tName: pulumi.String(\"cd-automation\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeliveryPipeline: pipeline.Name,\n\t\t\tServiceAccount: pulumi.String(\"my@service-account.com\"),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"automation resource\"),\n\t\t\tSelector: \u0026clouddeploy.AutomationSelectorArgs{\n\t\t\t\tTargets: clouddeploy.AutomationSelectorTargetArray{\n\t\t\t\t\t\u0026clouddeploy.AutomationSelectorTargetArgs{\n\t\t\t\t\t\tId: pulumi.String(\"test\"),\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"foo\": pulumi.String(\"bar\"),\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\tSuspended: pulumi.Bool(true),\n\t\t\tRules: clouddeploy.AutomationRuleArray{\n\t\t\t\t\u0026clouddeploy.AutomationRuleArgs{\n\t\t\t\t\tPromoteReleaseRule: \u0026clouddeploy.AutomationRulePromoteReleaseRuleArgs{\n\t\t\t\t\t\tId: pulumi.String(\"promote-release\"),\n\t\t\t\t\t\tWait: pulumi.String(\"200s\"),\n\t\t\t\t\t\tDestinationTargetId: pulumi.String(\"@next\"),\n\t\t\t\t\t\tDestinationPhase: pulumi.String(\"stable\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026clouddeploy.AutomationRuleArgs{\n\t\t\t\t\tAdvanceRolloutRule: \u0026clouddeploy.AutomationRuleAdvanceRolloutRuleArgs{\n\t\t\t\t\t\tId: pulumi.String(\"advance-rollout\"),\n\t\t\t\t\t\tSourcePhases: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"deploy\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tWait: pulumi.String(\"200s\"),\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.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.Automation;\nimport com.pulumi.gcp.clouddeploy.AutomationArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.AutomationSelectorArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.AutomationRuleArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.AutomationRulePromoteReleaseRuleArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.AutomationRuleAdvanceRolloutRuleArgs;\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 pipeline = new DeliveryPipeline(\"pipeline\", DeliveryPipelineArgs.builder()\n .name(\"cd-pipeline\")\n .location(\"us-central1\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages(DeliveryPipelineSerialPipelineStageArgs.builder()\n .targetId(\"test\")\n .profiles(\"test-profile\")\n .build())\n .build())\n .build());\n\n var f_automation = new Automation(\"f-automation\", AutomationArgs.builder()\n .name(\"cd-automation\")\n .location(\"us-central1\")\n .deliveryPipeline(pipeline.name())\n .serviceAccount(\"my@service-account.com\")\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .description(\"automation resource\")\n .selector(AutomationSelectorArgs.builder()\n .targets(AutomationSelectorTargetArgs.builder()\n .id(\"test\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build())\n .build())\n .suspended(true)\n .rules( \n AutomationRuleArgs.builder()\n .promoteReleaseRule(AutomationRulePromoteReleaseRuleArgs.builder()\n .id(\"promote-release\")\n .wait(\"200s\")\n .destinationTargetId(\"@next\")\n .destinationPhase(\"stable\")\n .build())\n .build(),\n AutomationRuleArgs.builder()\n .advanceRolloutRule(AutomationRuleAdvanceRolloutRuleArgs.builder()\n .id(\"advance-rollout\")\n .sourcePhases(\"deploy\")\n .wait(\"200s\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n f-automation:\n type: gcp:clouddeploy:Automation\n properties:\n name: cd-automation\n location: us-central1\n deliveryPipeline: ${pipeline.name}\n serviceAccount: my@service-account.com\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n description: automation resource\n selector:\n targets:\n - id: test\n labels:\n foo: bar\n suspended: true\n rules:\n - promoteReleaseRule:\n id: promote-release\n wait: 200s\n destinationTargetId: '@next'\n destinationPhase: stable\n - advanceRolloutRule:\n id: advance-rollout\n sourcePhases:\n - deploy\n wait: 200s\n pipeline:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n name: cd-pipeline\n location: us-central1\n serialPipeline:\n stages:\n - targetId: test\n profiles:\n - test-profile\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAutomation can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/deliveryPipelines/{{delivery_pipeline}}/automations/{{name}}`\n\n* `{{project}}/{{location}}/{{delivery_pipeline}}/{{name}}`\n\n* `{{location}}/{{delivery_pipeline}}/{{name}}`\n\nWhen using the `pulumi import` command, Automation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:clouddeploy/automation:Automation default projects/{{project}}/locations/{{location}}/deliveryPipelines/{{delivery_pipeline}}/automations/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/automation:Automation default {{project}}/{{location}}/{{delivery_pipeline}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/automation:Automation default {{location}}/{{delivery_pipeline}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -134126,7 +134126,7 @@ } }, "gcp:clouddeploy/customTargetType:CustomTargetType": { - "description": "A Cloud Deploy `CustomTargetType` defines a type of custom target that can be referenced in a\nCloud Deploy `Target` in order to facilitate deploying to other systems besides the supported runtimes.\n\n\nTo get more information about CustomTargetType, see:\n\n* [API documentation](https://cloud.google.com/deploy/docs/api/reference/rest/v1/projects.locations.customTargetTypes)\n* How-to Guides\n * [Define and use a custom target type](https://cloud.google.com/deploy/docs/deploy-app-custom-target)\n\n## Example Usage\n\n### Clouddeploy Custom Target Type Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_target_type = new gcp.clouddeploy.CustomTargetType(\"custom-target-type\", {\n location: \"us-central1\",\n name: \"my-custom-target-type\",\n description: \"My custom target type\",\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n customActions: {\n renderAction: \"renderAction\",\n deployAction: \"deployAction\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_target_type = gcp.clouddeploy.CustomTargetType(\"custom-target-type\",\n location=\"us-central1\",\n name=\"my-custom-target-type\",\n description=\"My custom target type\",\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n },\n custom_actions={\n \"renderAction\": \"renderAction\",\n \"deployAction\": \"deployAction\",\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_target_type = new Gcp.CloudDeploy.CustomTargetType(\"custom-target-type\", new()\n {\n Location = \"us-central1\",\n Name = \"my-custom-target-type\",\n Description = \"My custom target type\",\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n CustomActions = new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsArgs\n {\n RenderAction = \"renderAction\",\n DeployAction = \"deployAction\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewCustomTargetType(ctx, \"custom-target-type\", \u0026clouddeploy.CustomTargetTypeArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-custom-target-type\"),\n\t\t\tDescription: pulumi.String(\"My custom target type\"),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t\tCustomActions: \u0026clouddeploy.CustomTargetTypeCustomActionsArgs{\n\t\t\t\tRenderAction: pulumi.String(\"renderAction\"),\n\t\t\t\tDeployAction: pulumi.String(\"deployAction\"),\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.clouddeploy.CustomTargetType;\nimport com.pulumi.gcp.clouddeploy.CustomTargetTypeArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.CustomTargetTypeCustomActionsArgs;\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_target_type = new CustomTargetType(\"custom-target-type\", CustomTargetTypeArgs.builder()\n .location(\"us-central1\")\n .name(\"my-custom-target-type\")\n .description(\"My custom target type\")\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .customActions(CustomTargetTypeCustomActionsArgs.builder()\n .renderAction(\"renderAction\")\n .deployAction(\"deployAction\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n custom-target-type:\n type: gcp:clouddeploy:CustomTargetType\n properties:\n location: us-central1\n name: my-custom-target-type\n description: My custom target type\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n customActions:\n renderAction: renderAction\n deployAction: deployAction\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Clouddeploy Custom Target Type Git Skaffold Modules\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_target_type = new gcp.clouddeploy.CustomTargetType(\"custom-target-type\", {\n location: \"us-central1\",\n name: \"my-custom-target-type\",\n description: \"My custom target type\",\n customActions: {\n renderAction: \"renderAction\",\n deployAction: \"deployAction\",\n includeSkaffoldModules: [{\n configs: [\"my-config\"],\n git: {\n repo: \"http://github.com/example/example-repo.git\",\n path: \"configs/skaffold.yaml\",\n ref: \"main\",\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_target_type = gcp.clouddeploy.CustomTargetType(\"custom-target-type\",\n location=\"us-central1\",\n name=\"my-custom-target-type\",\n description=\"My custom target type\",\n custom_actions={\n \"renderAction\": \"renderAction\",\n \"deployAction\": \"deployAction\",\n \"includeSkaffoldModules\": [{\n \"configs\": [\"my-config\"],\n \"git\": {\n \"repo\": \"http://github.com/example/example-repo.git\",\n \"path\": \"configs/skaffold.yaml\",\n \"ref\": \"main\",\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 custom_target_type = new Gcp.CloudDeploy.CustomTargetType(\"custom-target-type\", new()\n {\n Location = \"us-central1\",\n Name = \"my-custom-target-type\",\n Description = \"My custom target type\",\n CustomActions = new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsArgs\n {\n RenderAction = \"renderAction\",\n DeployAction = \"deployAction\",\n IncludeSkaffoldModules = new[]\n {\n new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsIncludeSkaffoldModuleArgs\n {\n Configs = new[]\n {\n \"my-config\",\n },\n Git = new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsIncludeSkaffoldModuleGitArgs\n {\n Repo = \"http://github.com/example/example-repo.git\",\n Path = \"configs/skaffold.yaml\",\n Ref = \"main\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewCustomTargetType(ctx, \"custom-target-type\", \u0026clouddeploy.CustomTargetTypeArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-custom-target-type\"),\n\t\t\tDescription: pulumi.String(\"My custom target type\"),\n\t\t\tCustomActions: \u0026clouddeploy.CustomTargetTypeCustomActionsArgs{\n\t\t\t\tRenderAction: pulumi.String(\"renderAction\"),\n\t\t\t\tDeployAction: pulumi.String(\"deployAction\"),\n\t\t\t\tIncludeSkaffoldModules: clouddeploy.CustomTargetTypeCustomActionsIncludeSkaffoldModuleArray{\n\t\t\t\t\t\u0026clouddeploy.CustomTargetTypeCustomActionsIncludeSkaffoldModuleArgs{\n\t\t\t\t\t\tConfigs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"my-config\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tGit: \u0026clouddeploy.CustomTargetTypeCustomActionsIncludeSkaffoldModuleGitArgs{\n\t\t\t\t\t\t\tRepo: pulumi.String(\"http://github.com/example/example-repo.git\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"configs/skaffold.yaml\"),\n\t\t\t\t\t\t\tRef: pulumi.String(\"main\"),\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.clouddeploy.CustomTargetType;\nimport com.pulumi.gcp.clouddeploy.CustomTargetTypeArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.CustomTargetTypeCustomActionsArgs;\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_target_type = new CustomTargetType(\"custom-target-type\", CustomTargetTypeArgs.builder()\n .location(\"us-central1\")\n .name(\"my-custom-target-type\")\n .description(\"My custom target type\")\n .customActions(CustomTargetTypeCustomActionsArgs.builder()\n .renderAction(\"renderAction\")\n .deployAction(\"deployAction\")\n .includeSkaffoldModules(CustomTargetTypeCustomActionsIncludeSkaffoldModuleArgs.builder()\n .configs(\"my-config\")\n .git(CustomTargetTypeCustomActionsIncludeSkaffoldModuleGitArgs.builder()\n .repo(\"http://github.com/example/example-repo.git\")\n .path(\"configs/skaffold.yaml\")\n .ref(\"main\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n custom-target-type:\n type: gcp:clouddeploy:CustomTargetType\n properties:\n location: us-central1\n name: my-custom-target-type\n description: My custom target type\n customActions:\n renderAction: renderAction\n deployAction: deployAction\n includeSkaffoldModules:\n - configs:\n - my-config\n git:\n repo: http://github.com/example/example-repo.git\n path: configs/skaffold.yaml\n ref: main\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Clouddeploy Custom Target Type Gcs Skaffold Modules\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_target_type = new gcp.clouddeploy.CustomTargetType(\"custom-target-type\", {\n location: \"us-central1\",\n name: \"my-custom-target-type\",\n description: \"My custom target type\",\n customActions: {\n renderAction: \"renderAction\",\n deployAction: \"deployAction\",\n includeSkaffoldModules: [{\n configs: [\"my-config\"],\n googleCloudStorage: {\n source: \"gs://example-bucket/dir/configs/*\",\n path: \"skaffold.yaml\",\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_target_type = gcp.clouddeploy.CustomTargetType(\"custom-target-type\",\n location=\"us-central1\",\n name=\"my-custom-target-type\",\n description=\"My custom target type\",\n custom_actions={\n \"renderAction\": \"renderAction\",\n \"deployAction\": \"deployAction\",\n \"includeSkaffoldModules\": [{\n \"configs\": [\"my-config\"],\n \"googleCloudStorage\": {\n \"source\": \"gs://example-bucket/dir/configs/*\",\n \"path\": \"skaffold.yaml\",\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 custom_target_type = new Gcp.CloudDeploy.CustomTargetType(\"custom-target-type\", new()\n {\n Location = \"us-central1\",\n Name = \"my-custom-target-type\",\n Description = \"My custom target type\",\n CustomActions = new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsArgs\n {\n RenderAction = \"renderAction\",\n DeployAction = \"deployAction\",\n IncludeSkaffoldModules = new[]\n {\n new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsIncludeSkaffoldModuleArgs\n {\n Configs = new[]\n {\n \"my-config\",\n },\n GoogleCloudStorage = new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudStorageArgs\n {\n Source = \"gs://example-bucket/dir/configs/*\",\n Path = \"skaffold.yaml\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewCustomTargetType(ctx, \"custom-target-type\", \u0026clouddeploy.CustomTargetTypeArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-custom-target-type\"),\n\t\t\tDescription: pulumi.String(\"My custom target type\"),\n\t\t\tCustomActions: \u0026clouddeploy.CustomTargetTypeCustomActionsArgs{\n\t\t\t\tRenderAction: pulumi.String(\"renderAction\"),\n\t\t\t\tDeployAction: pulumi.String(\"deployAction\"),\n\t\t\t\tIncludeSkaffoldModules: clouddeploy.CustomTargetTypeCustomActionsIncludeSkaffoldModuleArray{\n\t\t\t\t\t\u0026clouddeploy.CustomTargetTypeCustomActionsIncludeSkaffoldModuleArgs{\n\t\t\t\t\t\tConfigs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"my-config\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tGoogleCloudStorage: \u0026clouddeploy.CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudStorageArgs{\n\t\t\t\t\t\t\tSource: pulumi.String(\"gs://example-bucket/dir/configs/*\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"skaffold.yaml\"),\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.clouddeploy.CustomTargetType;\nimport com.pulumi.gcp.clouddeploy.CustomTargetTypeArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.CustomTargetTypeCustomActionsArgs;\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_target_type = new CustomTargetType(\"custom-target-type\", CustomTargetTypeArgs.builder()\n .location(\"us-central1\")\n .name(\"my-custom-target-type\")\n .description(\"My custom target type\")\n .customActions(CustomTargetTypeCustomActionsArgs.builder()\n .renderAction(\"renderAction\")\n .deployAction(\"deployAction\")\n .includeSkaffoldModules(CustomTargetTypeCustomActionsIncludeSkaffoldModuleArgs.builder()\n .configs(\"my-config\")\n .googleCloudStorage(CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudStorageArgs.builder()\n .source(\"gs://example-bucket/dir/configs/*\")\n .path(\"skaffold.yaml\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n custom-target-type:\n type: gcp:clouddeploy:CustomTargetType\n properties:\n location: us-central1\n name: my-custom-target-type\n description: My custom target type\n customActions:\n renderAction: renderAction\n deployAction: deployAction\n includeSkaffoldModules:\n - configs:\n - my-config\n googleCloudStorage:\n source: gs://example-bucket/dir/configs/*\n path: skaffold.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Clouddeploy Custom Target Type Gcb Repo Skaffold Modules\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_target_type = new gcp.clouddeploy.CustomTargetType(\"custom-target-type\", {\n location: \"us-central1\",\n name: \"my-custom-target-type\",\n description: \"My custom target type\",\n customActions: {\n renderAction: \"renderAction\",\n deployAction: \"deployAction\",\n includeSkaffoldModules: [{\n configs: [\"my-config\"],\n googleCloudBuildRepo: {\n repository: \"projects/example/locations/us-central1/connections/git/repositories/example-repo\",\n path: \"configs/skaffold.yaml\",\n ref: \"main\",\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_target_type = gcp.clouddeploy.CustomTargetType(\"custom-target-type\",\n location=\"us-central1\",\n name=\"my-custom-target-type\",\n description=\"My custom target type\",\n custom_actions={\n \"renderAction\": \"renderAction\",\n \"deployAction\": \"deployAction\",\n \"includeSkaffoldModules\": [{\n \"configs\": [\"my-config\"],\n \"googleCloudBuildRepo\": {\n \"repository\": \"projects/example/locations/us-central1/connections/git/repositories/example-repo\",\n \"path\": \"configs/skaffold.yaml\",\n \"ref\": \"main\",\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 custom_target_type = new Gcp.CloudDeploy.CustomTargetType(\"custom-target-type\", new()\n {\n Location = \"us-central1\",\n Name = \"my-custom-target-type\",\n Description = \"My custom target type\",\n CustomActions = new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsArgs\n {\n RenderAction = \"renderAction\",\n DeployAction = \"deployAction\",\n IncludeSkaffoldModules = new[]\n {\n new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsIncludeSkaffoldModuleArgs\n {\n Configs = new[]\n {\n \"my-config\",\n },\n GoogleCloudBuildRepo = new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudBuildRepoArgs\n {\n Repository = \"projects/example/locations/us-central1/connections/git/repositories/example-repo\",\n Path = \"configs/skaffold.yaml\",\n Ref = \"main\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewCustomTargetType(ctx, \"custom-target-type\", \u0026clouddeploy.CustomTargetTypeArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-custom-target-type\"),\n\t\t\tDescription: pulumi.String(\"My custom target type\"),\n\t\t\tCustomActions: \u0026clouddeploy.CustomTargetTypeCustomActionsArgs{\n\t\t\t\tRenderAction: pulumi.String(\"renderAction\"),\n\t\t\t\tDeployAction: pulumi.String(\"deployAction\"),\n\t\t\t\tIncludeSkaffoldModules: clouddeploy.CustomTargetTypeCustomActionsIncludeSkaffoldModuleArray{\n\t\t\t\t\t\u0026clouddeploy.CustomTargetTypeCustomActionsIncludeSkaffoldModuleArgs{\n\t\t\t\t\t\tConfigs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"my-config\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tGoogleCloudBuildRepo: \u0026clouddeploy.CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudBuildRepoArgs{\n\t\t\t\t\t\t\tRepository: pulumi.String(\"projects/example/locations/us-central1/connections/git/repositories/example-repo\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"configs/skaffold.yaml\"),\n\t\t\t\t\t\t\tRef: pulumi.String(\"main\"),\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.clouddeploy.CustomTargetType;\nimport com.pulumi.gcp.clouddeploy.CustomTargetTypeArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.CustomTargetTypeCustomActionsArgs;\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_target_type = new CustomTargetType(\"custom-target-type\", CustomTargetTypeArgs.builder()\n .location(\"us-central1\")\n .name(\"my-custom-target-type\")\n .description(\"My custom target type\")\n .customActions(CustomTargetTypeCustomActionsArgs.builder()\n .renderAction(\"renderAction\")\n .deployAction(\"deployAction\")\n .includeSkaffoldModules(CustomTargetTypeCustomActionsIncludeSkaffoldModuleArgs.builder()\n .configs(\"my-config\")\n .googleCloudBuildRepo(CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudBuildRepoArgs.builder()\n .repository(\"projects/example/locations/us-central1/connections/git/repositories/example-repo\")\n .path(\"configs/skaffold.yaml\")\n .ref(\"main\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n custom-target-type:\n type: gcp:clouddeploy:CustomTargetType\n properties:\n location: us-central1\n name: my-custom-target-type\n description: My custom target type\n customActions:\n renderAction: renderAction\n deployAction: deployAction\n includeSkaffoldModules:\n - configs:\n - my-config\n googleCloudBuildRepo:\n repository: projects/example/locations/us-central1/connections/git/repositories/example-repo\n path: configs/skaffold.yaml\n ref: main\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCustomTargetType can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/customTargetTypes/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, CustomTargetType can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:clouddeploy/customTargetType:CustomTargetType default projects/{{project}}/locations/{{location}}/customTargetTypes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/customTargetType:CustomTargetType default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/customTargetType:CustomTargetType default {{location}}/{{name}}\n```\n\n", + "description": "A Cloud Deploy `CustomTargetType` defines a type of custom target that can be referenced in a\nCloud Deploy `Target` in order to facilitate deploying to other systems besides the supported runtimes.\n\n\nTo get more information about CustomTargetType, see:\n\n* [API documentation](https://cloud.google.com/deploy/docs/api/reference/rest/v1/projects.locations.customTargetTypes)\n* How-to Guides\n * [Define and use a custom target type](https://cloud.google.com/deploy/docs/deploy-app-custom-target)\n\n## Example Usage\n\n### Clouddeploy Custom Target Type Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_target_type = new gcp.clouddeploy.CustomTargetType(\"custom-target-type\", {\n location: \"us-central1\",\n name: \"my-custom-target-type\",\n description: \"My custom target type\",\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n customActions: {\n renderAction: \"renderAction\",\n deployAction: \"deployAction\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_target_type = gcp.clouddeploy.CustomTargetType(\"custom-target-type\",\n location=\"us-central1\",\n name=\"my-custom-target-type\",\n description=\"My custom target type\",\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n },\n custom_actions={\n \"render_action\": \"renderAction\",\n \"deploy_action\": \"deployAction\",\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_target_type = new Gcp.CloudDeploy.CustomTargetType(\"custom-target-type\", new()\n {\n Location = \"us-central1\",\n Name = \"my-custom-target-type\",\n Description = \"My custom target type\",\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n CustomActions = new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsArgs\n {\n RenderAction = \"renderAction\",\n DeployAction = \"deployAction\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewCustomTargetType(ctx, \"custom-target-type\", \u0026clouddeploy.CustomTargetTypeArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-custom-target-type\"),\n\t\t\tDescription: pulumi.String(\"My custom target type\"),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t\tCustomActions: \u0026clouddeploy.CustomTargetTypeCustomActionsArgs{\n\t\t\t\tRenderAction: pulumi.String(\"renderAction\"),\n\t\t\t\tDeployAction: pulumi.String(\"deployAction\"),\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.clouddeploy.CustomTargetType;\nimport com.pulumi.gcp.clouddeploy.CustomTargetTypeArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.CustomTargetTypeCustomActionsArgs;\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_target_type = new CustomTargetType(\"custom-target-type\", CustomTargetTypeArgs.builder()\n .location(\"us-central1\")\n .name(\"my-custom-target-type\")\n .description(\"My custom target type\")\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .customActions(CustomTargetTypeCustomActionsArgs.builder()\n .renderAction(\"renderAction\")\n .deployAction(\"deployAction\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n custom-target-type:\n type: gcp:clouddeploy:CustomTargetType\n properties:\n location: us-central1\n name: my-custom-target-type\n description: My custom target type\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n customActions:\n renderAction: renderAction\n deployAction: deployAction\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Clouddeploy Custom Target Type Git Skaffold Modules\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_target_type = new gcp.clouddeploy.CustomTargetType(\"custom-target-type\", {\n location: \"us-central1\",\n name: \"my-custom-target-type\",\n description: \"My custom target type\",\n customActions: {\n renderAction: \"renderAction\",\n deployAction: \"deployAction\",\n includeSkaffoldModules: [{\n configs: [\"my-config\"],\n git: {\n repo: \"http://github.com/example/example-repo.git\",\n path: \"configs/skaffold.yaml\",\n ref: \"main\",\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_target_type = gcp.clouddeploy.CustomTargetType(\"custom-target-type\",\n location=\"us-central1\",\n name=\"my-custom-target-type\",\n description=\"My custom target type\",\n custom_actions={\n \"render_action\": \"renderAction\",\n \"deploy_action\": \"deployAction\",\n \"include_skaffold_modules\": [{\n \"configs\": [\"my-config\"],\n \"git\": {\n \"repo\": \"http://github.com/example/example-repo.git\",\n \"path\": \"configs/skaffold.yaml\",\n \"ref\": \"main\",\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 custom_target_type = new Gcp.CloudDeploy.CustomTargetType(\"custom-target-type\", new()\n {\n Location = \"us-central1\",\n Name = \"my-custom-target-type\",\n Description = \"My custom target type\",\n CustomActions = new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsArgs\n {\n RenderAction = \"renderAction\",\n DeployAction = \"deployAction\",\n IncludeSkaffoldModules = new[]\n {\n new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsIncludeSkaffoldModuleArgs\n {\n Configs = new[]\n {\n \"my-config\",\n },\n Git = new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsIncludeSkaffoldModuleGitArgs\n {\n Repo = \"http://github.com/example/example-repo.git\",\n Path = \"configs/skaffold.yaml\",\n Ref = \"main\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewCustomTargetType(ctx, \"custom-target-type\", \u0026clouddeploy.CustomTargetTypeArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-custom-target-type\"),\n\t\t\tDescription: pulumi.String(\"My custom target type\"),\n\t\t\tCustomActions: \u0026clouddeploy.CustomTargetTypeCustomActionsArgs{\n\t\t\t\tRenderAction: pulumi.String(\"renderAction\"),\n\t\t\t\tDeployAction: pulumi.String(\"deployAction\"),\n\t\t\t\tIncludeSkaffoldModules: clouddeploy.CustomTargetTypeCustomActionsIncludeSkaffoldModuleArray{\n\t\t\t\t\t\u0026clouddeploy.CustomTargetTypeCustomActionsIncludeSkaffoldModuleArgs{\n\t\t\t\t\t\tConfigs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"my-config\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tGit: \u0026clouddeploy.CustomTargetTypeCustomActionsIncludeSkaffoldModuleGitArgs{\n\t\t\t\t\t\t\tRepo: pulumi.String(\"http://github.com/example/example-repo.git\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"configs/skaffold.yaml\"),\n\t\t\t\t\t\t\tRef: pulumi.String(\"main\"),\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.clouddeploy.CustomTargetType;\nimport com.pulumi.gcp.clouddeploy.CustomTargetTypeArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.CustomTargetTypeCustomActionsArgs;\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_target_type = new CustomTargetType(\"custom-target-type\", CustomTargetTypeArgs.builder()\n .location(\"us-central1\")\n .name(\"my-custom-target-type\")\n .description(\"My custom target type\")\n .customActions(CustomTargetTypeCustomActionsArgs.builder()\n .renderAction(\"renderAction\")\n .deployAction(\"deployAction\")\n .includeSkaffoldModules(CustomTargetTypeCustomActionsIncludeSkaffoldModuleArgs.builder()\n .configs(\"my-config\")\n .git(CustomTargetTypeCustomActionsIncludeSkaffoldModuleGitArgs.builder()\n .repo(\"http://github.com/example/example-repo.git\")\n .path(\"configs/skaffold.yaml\")\n .ref(\"main\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n custom-target-type:\n type: gcp:clouddeploy:CustomTargetType\n properties:\n location: us-central1\n name: my-custom-target-type\n description: My custom target type\n customActions:\n renderAction: renderAction\n deployAction: deployAction\n includeSkaffoldModules:\n - configs:\n - my-config\n git:\n repo: http://github.com/example/example-repo.git\n path: configs/skaffold.yaml\n ref: main\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Clouddeploy Custom Target Type Gcs Skaffold Modules\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_target_type = new gcp.clouddeploy.CustomTargetType(\"custom-target-type\", {\n location: \"us-central1\",\n name: \"my-custom-target-type\",\n description: \"My custom target type\",\n customActions: {\n renderAction: \"renderAction\",\n deployAction: \"deployAction\",\n includeSkaffoldModules: [{\n configs: [\"my-config\"],\n googleCloudStorage: {\n source: \"gs://example-bucket/dir/configs/*\",\n path: \"skaffold.yaml\",\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_target_type = gcp.clouddeploy.CustomTargetType(\"custom-target-type\",\n location=\"us-central1\",\n name=\"my-custom-target-type\",\n description=\"My custom target type\",\n custom_actions={\n \"render_action\": \"renderAction\",\n \"deploy_action\": \"deployAction\",\n \"include_skaffold_modules\": [{\n \"configs\": [\"my-config\"],\n \"google_cloud_storage\": {\n \"source\": \"gs://example-bucket/dir/configs/*\",\n \"path\": \"skaffold.yaml\",\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 custom_target_type = new Gcp.CloudDeploy.CustomTargetType(\"custom-target-type\", new()\n {\n Location = \"us-central1\",\n Name = \"my-custom-target-type\",\n Description = \"My custom target type\",\n CustomActions = new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsArgs\n {\n RenderAction = \"renderAction\",\n DeployAction = \"deployAction\",\n IncludeSkaffoldModules = new[]\n {\n new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsIncludeSkaffoldModuleArgs\n {\n Configs = new[]\n {\n \"my-config\",\n },\n GoogleCloudStorage = new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudStorageArgs\n {\n Source = \"gs://example-bucket/dir/configs/*\",\n Path = \"skaffold.yaml\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewCustomTargetType(ctx, \"custom-target-type\", \u0026clouddeploy.CustomTargetTypeArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-custom-target-type\"),\n\t\t\tDescription: pulumi.String(\"My custom target type\"),\n\t\t\tCustomActions: \u0026clouddeploy.CustomTargetTypeCustomActionsArgs{\n\t\t\t\tRenderAction: pulumi.String(\"renderAction\"),\n\t\t\t\tDeployAction: pulumi.String(\"deployAction\"),\n\t\t\t\tIncludeSkaffoldModules: clouddeploy.CustomTargetTypeCustomActionsIncludeSkaffoldModuleArray{\n\t\t\t\t\t\u0026clouddeploy.CustomTargetTypeCustomActionsIncludeSkaffoldModuleArgs{\n\t\t\t\t\t\tConfigs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"my-config\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tGoogleCloudStorage: \u0026clouddeploy.CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudStorageArgs{\n\t\t\t\t\t\t\tSource: pulumi.String(\"gs://example-bucket/dir/configs/*\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"skaffold.yaml\"),\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.clouddeploy.CustomTargetType;\nimport com.pulumi.gcp.clouddeploy.CustomTargetTypeArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.CustomTargetTypeCustomActionsArgs;\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_target_type = new CustomTargetType(\"custom-target-type\", CustomTargetTypeArgs.builder()\n .location(\"us-central1\")\n .name(\"my-custom-target-type\")\n .description(\"My custom target type\")\n .customActions(CustomTargetTypeCustomActionsArgs.builder()\n .renderAction(\"renderAction\")\n .deployAction(\"deployAction\")\n .includeSkaffoldModules(CustomTargetTypeCustomActionsIncludeSkaffoldModuleArgs.builder()\n .configs(\"my-config\")\n .googleCloudStorage(CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudStorageArgs.builder()\n .source(\"gs://example-bucket/dir/configs/*\")\n .path(\"skaffold.yaml\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n custom-target-type:\n type: gcp:clouddeploy:CustomTargetType\n properties:\n location: us-central1\n name: my-custom-target-type\n description: My custom target type\n customActions:\n renderAction: renderAction\n deployAction: deployAction\n includeSkaffoldModules:\n - configs:\n - my-config\n googleCloudStorage:\n source: gs://example-bucket/dir/configs/*\n path: skaffold.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Clouddeploy Custom Target Type Gcb Repo Skaffold Modules\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_target_type = new gcp.clouddeploy.CustomTargetType(\"custom-target-type\", {\n location: \"us-central1\",\n name: \"my-custom-target-type\",\n description: \"My custom target type\",\n customActions: {\n renderAction: \"renderAction\",\n deployAction: \"deployAction\",\n includeSkaffoldModules: [{\n configs: [\"my-config\"],\n googleCloudBuildRepo: {\n repository: \"projects/example/locations/us-central1/connections/git/repositories/example-repo\",\n path: \"configs/skaffold.yaml\",\n ref: \"main\",\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_target_type = gcp.clouddeploy.CustomTargetType(\"custom-target-type\",\n location=\"us-central1\",\n name=\"my-custom-target-type\",\n description=\"My custom target type\",\n custom_actions={\n \"render_action\": \"renderAction\",\n \"deploy_action\": \"deployAction\",\n \"include_skaffold_modules\": [{\n \"configs\": [\"my-config\"],\n \"google_cloud_build_repo\": {\n \"repository\": \"projects/example/locations/us-central1/connections/git/repositories/example-repo\",\n \"path\": \"configs/skaffold.yaml\",\n \"ref\": \"main\",\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 custom_target_type = new Gcp.CloudDeploy.CustomTargetType(\"custom-target-type\", new()\n {\n Location = \"us-central1\",\n Name = \"my-custom-target-type\",\n Description = \"My custom target type\",\n CustomActions = new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsArgs\n {\n RenderAction = \"renderAction\",\n DeployAction = \"deployAction\",\n IncludeSkaffoldModules = new[]\n {\n new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsIncludeSkaffoldModuleArgs\n {\n Configs = new[]\n {\n \"my-config\",\n },\n GoogleCloudBuildRepo = new Gcp.CloudDeploy.Inputs.CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudBuildRepoArgs\n {\n Repository = \"projects/example/locations/us-central1/connections/git/repositories/example-repo\",\n Path = \"configs/skaffold.yaml\",\n Ref = \"main\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewCustomTargetType(ctx, \"custom-target-type\", \u0026clouddeploy.CustomTargetTypeArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-custom-target-type\"),\n\t\t\tDescription: pulumi.String(\"My custom target type\"),\n\t\t\tCustomActions: \u0026clouddeploy.CustomTargetTypeCustomActionsArgs{\n\t\t\t\tRenderAction: pulumi.String(\"renderAction\"),\n\t\t\t\tDeployAction: pulumi.String(\"deployAction\"),\n\t\t\t\tIncludeSkaffoldModules: clouddeploy.CustomTargetTypeCustomActionsIncludeSkaffoldModuleArray{\n\t\t\t\t\t\u0026clouddeploy.CustomTargetTypeCustomActionsIncludeSkaffoldModuleArgs{\n\t\t\t\t\t\tConfigs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"my-config\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tGoogleCloudBuildRepo: \u0026clouddeploy.CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudBuildRepoArgs{\n\t\t\t\t\t\t\tRepository: pulumi.String(\"projects/example/locations/us-central1/connections/git/repositories/example-repo\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"configs/skaffold.yaml\"),\n\t\t\t\t\t\t\tRef: pulumi.String(\"main\"),\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.clouddeploy.CustomTargetType;\nimport com.pulumi.gcp.clouddeploy.CustomTargetTypeArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.CustomTargetTypeCustomActionsArgs;\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_target_type = new CustomTargetType(\"custom-target-type\", CustomTargetTypeArgs.builder()\n .location(\"us-central1\")\n .name(\"my-custom-target-type\")\n .description(\"My custom target type\")\n .customActions(CustomTargetTypeCustomActionsArgs.builder()\n .renderAction(\"renderAction\")\n .deployAction(\"deployAction\")\n .includeSkaffoldModules(CustomTargetTypeCustomActionsIncludeSkaffoldModuleArgs.builder()\n .configs(\"my-config\")\n .googleCloudBuildRepo(CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudBuildRepoArgs.builder()\n .repository(\"projects/example/locations/us-central1/connections/git/repositories/example-repo\")\n .path(\"configs/skaffold.yaml\")\n .ref(\"main\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n custom-target-type:\n type: gcp:clouddeploy:CustomTargetType\n properties:\n location: us-central1\n name: my-custom-target-type\n description: My custom target type\n customActions:\n renderAction: renderAction\n deployAction: deployAction\n includeSkaffoldModules:\n - configs:\n - my-config\n googleCloudBuildRepo:\n repository: projects/example/locations/us-central1/connections/git/repositories/example-repo\n path: configs/skaffold.yaml\n ref: main\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCustomTargetType can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/customTargetTypes/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, CustomTargetType can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:clouddeploy/customTargetType:CustomTargetType default projects/{{project}}/locations/{{location}}/customTargetTypes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/customTargetType:CustomTargetType default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/customTargetType:CustomTargetType default {{location}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -134616,7 +134616,7 @@ } }, "gcp:clouddeploy/deliveryPipeline:DeliveryPipeline": { - "description": "The Cloud Deploy `DeliveryPipeline` resource\n\n## Example Usage\n\n### Canary_delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deployParameters\": [{\n \"values\": {\n \"deployParameterKey\": \"deployParameterValue\",\n },\n \"matchTargetLabels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"targetId\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"targetId\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-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 primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: nil,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-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.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Canary_service_networking_delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deployParameters\": [{\n \"values\": {\n \"deployParameterKey\": \"deployParameterValue\",\n },\n \"matchTargetLabels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"targetId\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"targetId\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-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 primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: nil,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-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.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Canaryrun_delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deployParameters\": [{\n \"values\": {\n \"deployParameterKey\": \"deployParameterValue\",\n },\n \"matchTargetLabels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"targetId\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"targetId\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-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 primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: nil,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-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.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deployParameters\": [{\n \"values\": {\n \"deployParameterKey\": \"deployParameterValue\",\n },\n \"matchTargetLabels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"targetId\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"targetId\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-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 primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: nil,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-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.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Verify_delivery_pipeline\ntests creating and updating a delivery pipeline with deployment verification strategy\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deployParameters\": [{\n \"values\": {\n \"deployParameterKey\": \"deployParameterValue\",\n },\n \"matchTargetLabels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"targetId\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"targetId\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-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 primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: nil,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-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.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDeliveryPipeline can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/deliveryPipelines/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, DeliveryPipeline can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default projects/{{project}}/locations/{{location}}/deliveryPipelines/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default {{location}}/{{name}}\n```\n\n", + "description": "The Cloud Deploy `DeliveryPipeline` resource\n\n## Example Usage\n\n### Canary_delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deploy_parameter_key\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-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 primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: nil,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-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.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Canary_service_networking_delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deploy_parameter_key\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-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 primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: nil,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-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.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Canaryrun_delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deploy_parameter_key\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-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 primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: nil,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-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.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deploy_parameter_key\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-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 primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: nil,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-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.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Verify_delivery_pipeline\ntests creating and updating a delivery pipeline with deployment verification strategy\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deploy_parameter_key\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-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 primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: nil,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-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.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\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 primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDeliveryPipeline can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/deliveryPipelines/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, DeliveryPipeline can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default projects/{{project}}/locations/{{location}}/deliveryPipelines/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default {{location}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -135124,7 +135124,7 @@ } }, "gcp:clouddeploy/target:Target": { - "description": "The Cloud Deploy `Target` resource\n\n## Example Usage\n\n### Multi_target\ntests creating and updating a multi-target\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.Target(\"primary\", {\n location: \"us-west1\",\n name: \"target\",\n deployParameters: {},\n description: \"multi-target description\",\n executionConfigs: [{\n usages: [\n \"RENDER\",\n \"DEPLOY\",\n ],\n executionTimeout: \"3600s\",\n }],\n multiTarget: {\n targetIds: [\n \"1\",\n \"2\",\n ],\n },\n project: \"my-project-name\",\n requireApproval: false,\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.Target(\"primary\",\n location=\"us-west1\",\n name=\"target\",\n deploy_parameters={},\n description=\"multi-target description\",\n execution_configs=[{\n \"usages\": [\n \"RENDER\",\n \"DEPLOY\",\n ],\n \"executionTimeout\": \"3600s\",\n }],\n multi_target={\n \"targetIds\": [\n \"1\",\n \"2\",\n ],\n },\n project=\"my-project-name\",\n require_approval=False,\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-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 primary = new Gcp.CloudDeploy.Target(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"target\",\n DeployParameters = null,\n Description = \"multi-target description\",\n ExecutionConfigs = new[]\n {\n new Gcp.CloudDeploy.Inputs.TargetExecutionConfigArgs\n {\n Usages = new[]\n {\n \"RENDER\",\n \"DEPLOY\",\n },\n ExecutionTimeout = \"3600s\",\n },\n },\n MultiTarget = new Gcp.CloudDeploy.Inputs.TargetMultiTargetArgs\n {\n TargetIds = new[]\n {\n \"1\",\n \"2\",\n },\n },\n Project = \"my-project-name\",\n RequireApproval = false,\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewTarget(ctx, \"primary\", \u0026clouddeploy.TargetArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"target\"),\n\t\t\tDeployParameters: nil,\n\t\t\tDescription: pulumi.String(\"multi-target description\"),\n\t\t\tExecutionConfigs: clouddeploy.TargetExecutionConfigArray{\n\t\t\t\t\u0026clouddeploy.TargetExecutionConfigArgs{\n\t\t\t\t\tUsages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"RENDER\"),\n\t\t\t\t\t\tpulumi.String(\"DEPLOY\"),\n\t\t\t\t\t},\n\t\t\t\t\tExecutionTimeout: pulumi.String(\"3600s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMultiTarget: \u0026clouddeploy.TargetMultiTargetArgs{\n\t\t\t\tTargetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"1\"),\n\t\t\t\t\tpulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRequireApproval: pulumi.Bool(false),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-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.clouddeploy.Target;\nimport com.pulumi.gcp.clouddeploy.TargetArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetExecutionConfigArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetMultiTargetArgs;\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 primary = new Target(\"primary\", TargetArgs.builder()\n .location(\"us-west1\")\n .name(\"target\")\n .deployParameters()\n .description(\"multi-target description\")\n .executionConfigs(TargetExecutionConfigArgs.builder()\n .usages( \n \"RENDER\",\n \"DEPLOY\")\n .executionTimeout(\"3600s\")\n .build())\n .multiTarget(TargetMultiTargetArgs.builder()\n .targetIds( \n \"1\",\n \"2\")\n .build())\n .project(\"my-project-name\")\n .requireApproval(false)\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:Target\n properties:\n location: us-west1\n name: target\n deployParameters: {}\n description: multi-target description\n executionConfigs:\n - usages:\n - RENDER\n - DEPLOY\n executionTimeout: 3600s\n multiTarget:\n targetIds:\n - '1'\n - '2'\n project: my-project-name\n requireApproval: false\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Run_target\ntests creating and updating a cloud run target\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.Target(\"primary\", {\n location: \"us-west1\",\n name: \"target\",\n deployParameters: {},\n description: \"basic description\",\n executionConfigs: [{\n usages: [\n \"RENDER\",\n \"DEPLOY\",\n ],\n executionTimeout: \"3600s\",\n }],\n project: \"my-project-name\",\n requireApproval: false,\n run: {\n location: \"projects/my-project-name/locations/us-west1\",\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.Target(\"primary\",\n location=\"us-west1\",\n name=\"target\",\n deploy_parameters={},\n description=\"basic description\",\n execution_configs=[{\n \"usages\": [\n \"RENDER\",\n \"DEPLOY\",\n ],\n \"executionTimeout\": \"3600s\",\n }],\n project=\"my-project-name\",\n require_approval=False,\n run={\n \"location\": \"projects/my-project-name/locations/us-west1\",\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-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 primary = new Gcp.CloudDeploy.Target(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"target\",\n DeployParameters = null,\n Description = \"basic description\",\n ExecutionConfigs = new[]\n {\n new Gcp.CloudDeploy.Inputs.TargetExecutionConfigArgs\n {\n Usages = new[]\n {\n \"RENDER\",\n \"DEPLOY\",\n },\n ExecutionTimeout = \"3600s\",\n },\n },\n Project = \"my-project-name\",\n RequireApproval = false,\n Run = new Gcp.CloudDeploy.Inputs.TargetRunArgs\n {\n Location = \"projects/my-project-name/locations/us-west1\",\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewTarget(ctx, \"primary\", \u0026clouddeploy.TargetArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"target\"),\n\t\t\tDeployParameters: nil,\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tExecutionConfigs: clouddeploy.TargetExecutionConfigArray{\n\t\t\t\t\u0026clouddeploy.TargetExecutionConfigArgs{\n\t\t\t\t\tUsages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"RENDER\"),\n\t\t\t\t\t\tpulumi.String(\"DEPLOY\"),\n\t\t\t\t\t},\n\t\t\t\t\tExecutionTimeout: pulumi.String(\"3600s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRequireApproval: pulumi.Bool(false),\n\t\t\tRun: \u0026clouddeploy.TargetRunArgs{\n\t\t\t\tLocation: pulumi.String(\"projects/my-project-name/locations/us-west1\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-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.clouddeploy.Target;\nimport com.pulumi.gcp.clouddeploy.TargetArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetExecutionConfigArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetRunArgs;\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 primary = new Target(\"primary\", TargetArgs.builder()\n .location(\"us-west1\")\n .name(\"target\")\n .deployParameters()\n .description(\"basic description\")\n .executionConfigs(TargetExecutionConfigArgs.builder()\n .usages( \n \"RENDER\",\n \"DEPLOY\")\n .executionTimeout(\"3600s\")\n .build())\n .project(\"my-project-name\")\n .requireApproval(false)\n .run(TargetRunArgs.builder()\n .location(\"projects/my-project-name/locations/us-west1\")\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:Target\n properties:\n location: us-west1\n name: target\n deployParameters: {}\n description: basic description\n executionConfigs:\n - usages:\n - RENDER\n - DEPLOY\n executionTimeout: 3600s\n project: my-project-name\n requireApproval: false\n run:\n location: projects/my-project-name/locations/us-west1\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target\nCreates a basic Cloud Deploy target\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.Target(\"primary\", {\n location: \"us-west1\",\n name: \"target\",\n deployParameters: {\n deployParameterKey: \"deployParameterValue\",\n },\n description: \"basic description\",\n gke: {\n cluster: \"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\",\n },\n project: \"my-project-name\",\n requireApproval: false,\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.Target(\"primary\",\n location=\"us-west1\",\n name=\"target\",\n deploy_parameters={\n \"deployParameterKey\": \"deployParameterValue\",\n },\n description=\"basic description\",\n gke={\n \"cluster\": \"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\",\n },\n project=\"my-project-name\",\n require_approval=False,\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-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 primary = new Gcp.CloudDeploy.Target(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"target\",\n DeployParameters = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n Description = \"basic description\",\n Gke = new Gcp.CloudDeploy.Inputs.TargetGkeArgs\n {\n Cluster = \"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\",\n },\n Project = \"my-project-name\",\n RequireApproval = false,\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewTarget(ctx, \"primary\", \u0026clouddeploy.TargetArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"target\"),\n\t\t\tDeployParameters: pulumi.StringMap{\n\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tGke: \u0026clouddeploy.TargetGkeArgs{\n\t\t\t\tCluster: pulumi.String(\"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRequireApproval: pulumi.Bool(false),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-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.clouddeploy.Target;\nimport com.pulumi.gcp.clouddeploy.TargetArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetGkeArgs;\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 primary = new Target(\"primary\", TargetArgs.builder()\n .location(\"us-west1\")\n .name(\"target\")\n .deployParameters(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .description(\"basic description\")\n .gke(TargetGkeArgs.builder()\n .cluster(\"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\")\n .build())\n .project(\"my-project-name\")\n .requireApproval(false)\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:Target\n properties:\n location: us-west1\n name: target\n deployParameters:\n deployParameterKey: deployParameterValue\n description: basic description\n gke:\n cluster: projects/my-project-name/locations/us-west1/clusters/example-cluster-name\n project: my-project-name\n requireApproval: false\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTarget can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/targets/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Target can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:clouddeploy/target:Target default projects/{{project}}/locations/{{location}}/targets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/target:Target default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/target:Target default {{location}}/{{name}}\n```\n\n", + "description": "The Cloud Deploy `Target` resource\n\n## Example Usage\n\n### Multi_target\ntests creating and updating a multi-target\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.Target(\"primary\", {\n location: \"us-west1\",\n name: \"target\",\n deployParameters: {},\n description: \"multi-target description\",\n executionConfigs: [{\n usages: [\n \"RENDER\",\n \"DEPLOY\",\n ],\n executionTimeout: \"3600s\",\n }],\n multiTarget: {\n targetIds: [\n \"1\",\n \"2\",\n ],\n },\n project: \"my-project-name\",\n requireApproval: false,\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.Target(\"primary\",\n location=\"us-west1\",\n name=\"target\",\n deploy_parameters={},\n description=\"multi-target description\",\n execution_configs=[{\n \"usages\": [\n \"RENDER\",\n \"DEPLOY\",\n ],\n \"execution_timeout\": \"3600s\",\n }],\n multi_target={\n \"target_ids\": [\n \"1\",\n \"2\",\n ],\n },\n project=\"my-project-name\",\n require_approval=False,\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-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 primary = new Gcp.CloudDeploy.Target(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"target\",\n DeployParameters = null,\n Description = \"multi-target description\",\n ExecutionConfigs = new[]\n {\n new Gcp.CloudDeploy.Inputs.TargetExecutionConfigArgs\n {\n Usages = new[]\n {\n \"RENDER\",\n \"DEPLOY\",\n },\n ExecutionTimeout = \"3600s\",\n },\n },\n MultiTarget = new Gcp.CloudDeploy.Inputs.TargetMultiTargetArgs\n {\n TargetIds = new[]\n {\n \"1\",\n \"2\",\n },\n },\n Project = \"my-project-name\",\n RequireApproval = false,\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewTarget(ctx, \"primary\", \u0026clouddeploy.TargetArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"target\"),\n\t\t\tDeployParameters: nil,\n\t\t\tDescription: pulumi.String(\"multi-target description\"),\n\t\t\tExecutionConfigs: clouddeploy.TargetExecutionConfigArray{\n\t\t\t\t\u0026clouddeploy.TargetExecutionConfigArgs{\n\t\t\t\t\tUsages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"RENDER\"),\n\t\t\t\t\t\tpulumi.String(\"DEPLOY\"),\n\t\t\t\t\t},\n\t\t\t\t\tExecutionTimeout: pulumi.String(\"3600s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMultiTarget: \u0026clouddeploy.TargetMultiTargetArgs{\n\t\t\t\tTargetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"1\"),\n\t\t\t\t\tpulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRequireApproval: pulumi.Bool(false),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-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.clouddeploy.Target;\nimport com.pulumi.gcp.clouddeploy.TargetArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetExecutionConfigArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetMultiTargetArgs;\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 primary = new Target(\"primary\", TargetArgs.builder()\n .location(\"us-west1\")\n .name(\"target\")\n .deployParameters()\n .description(\"multi-target description\")\n .executionConfigs(TargetExecutionConfigArgs.builder()\n .usages( \n \"RENDER\",\n \"DEPLOY\")\n .executionTimeout(\"3600s\")\n .build())\n .multiTarget(TargetMultiTargetArgs.builder()\n .targetIds( \n \"1\",\n \"2\")\n .build())\n .project(\"my-project-name\")\n .requireApproval(false)\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:Target\n properties:\n location: us-west1\n name: target\n deployParameters: {}\n description: multi-target description\n executionConfigs:\n - usages:\n - RENDER\n - DEPLOY\n executionTimeout: 3600s\n multiTarget:\n targetIds:\n - '1'\n - '2'\n project: my-project-name\n requireApproval: false\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Run_target\ntests creating and updating a cloud run target\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.Target(\"primary\", {\n location: \"us-west1\",\n name: \"target\",\n deployParameters: {},\n description: \"basic description\",\n executionConfigs: [{\n usages: [\n \"RENDER\",\n \"DEPLOY\",\n ],\n executionTimeout: \"3600s\",\n }],\n project: \"my-project-name\",\n requireApproval: false,\n run: {\n location: \"projects/my-project-name/locations/us-west1\",\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.Target(\"primary\",\n location=\"us-west1\",\n name=\"target\",\n deploy_parameters={},\n description=\"basic description\",\n execution_configs=[{\n \"usages\": [\n \"RENDER\",\n \"DEPLOY\",\n ],\n \"execution_timeout\": \"3600s\",\n }],\n project=\"my-project-name\",\n require_approval=False,\n run={\n \"location\": \"projects/my-project-name/locations/us-west1\",\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-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 primary = new Gcp.CloudDeploy.Target(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"target\",\n DeployParameters = null,\n Description = \"basic description\",\n ExecutionConfigs = new[]\n {\n new Gcp.CloudDeploy.Inputs.TargetExecutionConfigArgs\n {\n Usages = new[]\n {\n \"RENDER\",\n \"DEPLOY\",\n },\n ExecutionTimeout = \"3600s\",\n },\n },\n Project = \"my-project-name\",\n RequireApproval = false,\n Run = new Gcp.CloudDeploy.Inputs.TargetRunArgs\n {\n Location = \"projects/my-project-name/locations/us-west1\",\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewTarget(ctx, \"primary\", \u0026clouddeploy.TargetArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"target\"),\n\t\t\tDeployParameters: nil,\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tExecutionConfigs: clouddeploy.TargetExecutionConfigArray{\n\t\t\t\t\u0026clouddeploy.TargetExecutionConfigArgs{\n\t\t\t\t\tUsages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"RENDER\"),\n\t\t\t\t\t\tpulumi.String(\"DEPLOY\"),\n\t\t\t\t\t},\n\t\t\t\t\tExecutionTimeout: pulumi.String(\"3600s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRequireApproval: pulumi.Bool(false),\n\t\t\tRun: \u0026clouddeploy.TargetRunArgs{\n\t\t\t\tLocation: pulumi.String(\"projects/my-project-name/locations/us-west1\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-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.clouddeploy.Target;\nimport com.pulumi.gcp.clouddeploy.TargetArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetExecutionConfigArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetRunArgs;\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 primary = new Target(\"primary\", TargetArgs.builder()\n .location(\"us-west1\")\n .name(\"target\")\n .deployParameters()\n .description(\"basic description\")\n .executionConfigs(TargetExecutionConfigArgs.builder()\n .usages( \n \"RENDER\",\n \"DEPLOY\")\n .executionTimeout(\"3600s\")\n .build())\n .project(\"my-project-name\")\n .requireApproval(false)\n .run(TargetRunArgs.builder()\n .location(\"projects/my-project-name/locations/us-west1\")\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:Target\n properties:\n location: us-west1\n name: target\n deployParameters: {}\n description: basic description\n executionConfigs:\n - usages:\n - RENDER\n - DEPLOY\n executionTimeout: 3600s\n project: my-project-name\n requireApproval: false\n run:\n location: projects/my-project-name/locations/us-west1\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target\nCreates a basic Cloud Deploy target\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.Target(\"primary\", {\n location: \"us-west1\",\n name: \"target\",\n deployParameters: {\n deployParameterKey: \"deployParameterValue\",\n },\n description: \"basic description\",\n gke: {\n cluster: \"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\",\n },\n project: \"my-project-name\",\n requireApproval: false,\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.Target(\"primary\",\n location=\"us-west1\",\n name=\"target\",\n deploy_parameters={\n \"deployParameterKey\": \"deployParameterValue\",\n },\n description=\"basic description\",\n gke={\n \"cluster\": \"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\",\n },\n project=\"my-project-name\",\n require_approval=False,\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-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 primary = new Gcp.CloudDeploy.Target(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"target\",\n DeployParameters = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n Description = \"basic description\",\n Gke = new Gcp.CloudDeploy.Inputs.TargetGkeArgs\n {\n Cluster = \"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\",\n },\n Project = \"my-project-name\",\n RequireApproval = false,\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddeploy\"\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 := clouddeploy.NewTarget(ctx, \"primary\", \u0026clouddeploy.TargetArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"target\"),\n\t\t\tDeployParameters: pulumi.StringMap{\n\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tGke: \u0026clouddeploy.TargetGkeArgs{\n\t\t\t\tCluster: pulumi.String(\"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRequireApproval: pulumi.Bool(false),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-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.clouddeploy.Target;\nimport com.pulumi.gcp.clouddeploy.TargetArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetGkeArgs;\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 primary = new Target(\"primary\", TargetArgs.builder()\n .location(\"us-west1\")\n .name(\"target\")\n .deployParameters(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .description(\"basic description\")\n .gke(TargetGkeArgs.builder()\n .cluster(\"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\")\n .build())\n .project(\"my-project-name\")\n .requireApproval(false)\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:Target\n properties:\n location: us-west1\n name: target\n deployParameters:\n deployParameterKey: deployParameterValue\n description: basic description\n gke:\n cluster: projects/my-project-name/locations/us-west1/clusters/example-cluster-name\n project: my-project-name\n requireApproval: false\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTarget can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/targets/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Target can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:clouddeploy/target:Target default projects/{{project}}/locations/{{location}}/targets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/target:Target default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/target:Target default {{location}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -135717,7 +135717,7 @@ } }, "gcp:clouddomains/registration:Registration": { - "description": "## Example Usage\n\n### Clouddomains Registration Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myRegistration = new gcp.clouddomains.Registration(\"my_registration\", {\n domainName: \"example-domain.com\",\n location: \"global\",\n labels: {\n labelkey: \"labelvalue\",\n },\n yearlyPrice: {\n currencyCode: \"USD\",\n units: \"12\",\n },\n dnsSettings: {\n customDns: {\n nameServers: [\n \"ns-cloud-a1.googledomains.com.\",\n \"ns-cloud-a2.googledomains.com.\",\n \"ns-cloud-a3.googledomains.com.\",\n \"ns-cloud-a4.googledomains.com.\",\n ],\n },\n },\n contactSettings: {\n privacy: \"REDACTED_CONTACT_DATA\",\n registrantContact: {\n phoneNumber: \"+12345000000\",\n email: \"user@example.com\",\n postalAddress: {\n regionCode: \"US\",\n postalCode: \"95050\",\n administrativeArea: \"CA\",\n locality: \"Example City\",\n addressLines: [\"1234 Example street\"],\n recipients: [\"example recipient\"],\n },\n },\n adminContact: {\n phoneNumber: \"+12345000000\",\n email: \"user@example.com\",\n postalAddress: {\n regionCode: \"US\",\n postalCode: \"95050\",\n administrativeArea: \"CA\",\n locality: \"Example City\",\n addressLines: [\"1234 Example street\"],\n recipients: [\"example recipient\"],\n },\n },\n technicalContact: {\n phoneNumber: \"+12345000000\",\n email: \"user@example.com\",\n postalAddress: {\n regionCode: \"US\",\n postalCode: \"95050\",\n administrativeArea: \"CA\",\n locality: \"Example City\",\n addressLines: [\"1234 Example street\"],\n recipients: [\"example recipient\"],\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_registration = gcp.clouddomains.Registration(\"my_registration\",\n domain_name=\"example-domain.com\",\n location=\"global\",\n labels={\n \"labelkey\": \"labelvalue\",\n },\n yearly_price={\n \"currencyCode\": \"USD\",\n \"units\": \"12\",\n },\n dns_settings={\n \"customDns\": {\n \"nameServers\": [\n \"ns-cloud-a1.googledomains.com.\",\n \"ns-cloud-a2.googledomains.com.\",\n \"ns-cloud-a3.googledomains.com.\",\n \"ns-cloud-a4.googledomains.com.\",\n ],\n },\n },\n contact_settings={\n \"privacy\": \"REDACTED_CONTACT_DATA\",\n \"registrantContact\": {\n \"phoneNumber\": \"+12345000000\",\n \"email\": \"user@example.com\",\n \"postalAddress\": {\n \"regionCode\": \"US\",\n \"postalCode\": \"95050\",\n \"administrativeArea\": \"CA\",\n \"locality\": \"Example City\",\n \"addressLines\": [\"1234 Example street\"],\n \"recipients\": [\"example recipient\"],\n },\n },\n \"adminContact\": {\n \"phoneNumber\": \"+12345000000\",\n \"email\": \"user@example.com\",\n \"postalAddress\": {\n \"regionCode\": \"US\",\n \"postalCode\": \"95050\",\n \"administrativeArea\": \"CA\",\n \"locality\": \"Example City\",\n \"addressLines\": [\"1234 Example street\"],\n \"recipients\": [\"example recipient\"],\n },\n },\n \"technicalContact\": {\n \"phoneNumber\": \"+12345000000\",\n \"email\": \"user@example.com\",\n \"postalAddress\": {\n \"regionCode\": \"US\",\n \"postalCode\": \"95050\",\n \"administrativeArea\": \"CA\",\n \"locality\": \"Example City\",\n \"addressLines\": [\"1234 Example street\"],\n \"recipients\": [\"example recipient\"],\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 myRegistration = new Gcp.CloudDomains.Registration(\"my_registration\", new()\n {\n DomainName = \"example-domain.com\",\n Location = \"global\",\n Labels = \n {\n { \"labelkey\", \"labelvalue\" },\n },\n YearlyPrice = new Gcp.CloudDomains.Inputs.RegistrationYearlyPriceArgs\n {\n CurrencyCode = \"USD\",\n Units = \"12\",\n },\n DnsSettings = new Gcp.CloudDomains.Inputs.RegistrationDnsSettingsArgs\n {\n CustomDns = new Gcp.CloudDomains.Inputs.RegistrationDnsSettingsCustomDnsArgs\n {\n NameServers = new[]\n {\n \"ns-cloud-a1.googledomains.com.\",\n \"ns-cloud-a2.googledomains.com.\",\n \"ns-cloud-a3.googledomains.com.\",\n \"ns-cloud-a4.googledomains.com.\",\n },\n },\n },\n ContactSettings = new Gcp.CloudDomains.Inputs.RegistrationContactSettingsArgs\n {\n Privacy = \"REDACTED_CONTACT_DATA\",\n RegistrantContact = new Gcp.CloudDomains.Inputs.RegistrationContactSettingsRegistrantContactArgs\n {\n PhoneNumber = \"+12345000000\",\n Email = \"user@example.com\",\n PostalAddress = new Gcp.CloudDomains.Inputs.RegistrationContactSettingsRegistrantContactPostalAddressArgs\n {\n RegionCode = \"US\",\n PostalCode = \"95050\",\n AdministrativeArea = \"CA\",\n Locality = \"Example City\",\n AddressLines = new[]\n {\n \"1234 Example street\",\n },\n Recipients = new[]\n {\n \"example recipient\",\n },\n },\n },\n AdminContact = new Gcp.CloudDomains.Inputs.RegistrationContactSettingsAdminContactArgs\n {\n PhoneNumber = \"+12345000000\",\n Email = \"user@example.com\",\n PostalAddress = new Gcp.CloudDomains.Inputs.RegistrationContactSettingsAdminContactPostalAddressArgs\n {\n RegionCode = \"US\",\n PostalCode = \"95050\",\n AdministrativeArea = \"CA\",\n Locality = \"Example City\",\n AddressLines = new[]\n {\n \"1234 Example street\",\n },\n Recipients = new[]\n {\n \"example recipient\",\n },\n },\n },\n TechnicalContact = new Gcp.CloudDomains.Inputs.RegistrationContactSettingsTechnicalContactArgs\n {\n PhoneNumber = \"+12345000000\",\n Email = \"user@example.com\",\n PostalAddress = new Gcp.CloudDomains.Inputs.RegistrationContactSettingsTechnicalContactPostalAddressArgs\n {\n RegionCode = \"US\",\n PostalCode = \"95050\",\n AdministrativeArea = \"CA\",\n Locality = \"Example City\",\n AddressLines = new[]\n {\n \"1234 Example street\",\n },\n Recipients = new[]\n {\n \"example recipient\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddomains\"\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 := clouddomains.NewRegistration(ctx, \"my_registration\", \u0026clouddomains.RegistrationArgs{\n\t\t\tDomainName: pulumi.String(\"example-domain.com\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"labelkey\": pulumi.String(\"labelvalue\"),\n\t\t\t},\n\t\t\tYearlyPrice: \u0026clouddomains.RegistrationYearlyPriceArgs{\n\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\tUnits: pulumi.String(\"12\"),\n\t\t\t},\n\t\t\tDnsSettings: \u0026clouddomains.RegistrationDnsSettingsArgs{\n\t\t\t\tCustomDns: \u0026clouddomains.RegistrationDnsSettingsCustomDnsArgs{\n\t\t\t\t\tNameServers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ns-cloud-a1.googledomains.com.\"),\n\t\t\t\t\t\tpulumi.String(\"ns-cloud-a2.googledomains.com.\"),\n\t\t\t\t\t\tpulumi.String(\"ns-cloud-a3.googledomains.com.\"),\n\t\t\t\t\t\tpulumi.String(\"ns-cloud-a4.googledomains.com.\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tContactSettings: \u0026clouddomains.RegistrationContactSettingsArgs{\n\t\t\t\tPrivacy: pulumi.String(\"REDACTED_CONTACT_DATA\"),\n\t\t\t\tRegistrantContact: \u0026clouddomains.RegistrationContactSettingsRegistrantContactArgs{\n\t\t\t\t\tPhoneNumber: pulumi.String(\"+12345000000\"),\n\t\t\t\t\tEmail: pulumi.String(\"user@example.com\"),\n\t\t\t\t\tPostalAddress: \u0026clouddomains.RegistrationContactSettingsRegistrantContactPostalAddressArgs{\n\t\t\t\t\t\tRegionCode: pulumi.String(\"US\"),\n\t\t\t\t\t\tPostalCode: pulumi.String(\"95050\"),\n\t\t\t\t\t\tAdministrativeArea: pulumi.String(\"CA\"),\n\t\t\t\t\t\tLocality: pulumi.String(\"Example City\"),\n\t\t\t\t\t\tAddressLines: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"1234 Example street\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRecipients: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example recipient\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAdminContact: \u0026clouddomains.RegistrationContactSettingsAdminContactArgs{\n\t\t\t\t\tPhoneNumber: pulumi.String(\"+12345000000\"),\n\t\t\t\t\tEmail: pulumi.String(\"user@example.com\"),\n\t\t\t\t\tPostalAddress: \u0026clouddomains.RegistrationContactSettingsAdminContactPostalAddressArgs{\n\t\t\t\t\t\tRegionCode: pulumi.String(\"US\"),\n\t\t\t\t\t\tPostalCode: pulumi.String(\"95050\"),\n\t\t\t\t\t\tAdministrativeArea: pulumi.String(\"CA\"),\n\t\t\t\t\t\tLocality: pulumi.String(\"Example City\"),\n\t\t\t\t\t\tAddressLines: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"1234 Example street\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRecipients: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example recipient\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTechnicalContact: \u0026clouddomains.RegistrationContactSettingsTechnicalContactArgs{\n\t\t\t\t\tPhoneNumber: pulumi.String(\"+12345000000\"),\n\t\t\t\t\tEmail: pulumi.String(\"user@example.com\"),\n\t\t\t\t\tPostalAddress: \u0026clouddomains.RegistrationContactSettingsTechnicalContactPostalAddressArgs{\n\t\t\t\t\t\tRegionCode: pulumi.String(\"US\"),\n\t\t\t\t\t\tPostalCode: pulumi.String(\"95050\"),\n\t\t\t\t\t\tAdministrativeArea: pulumi.String(\"CA\"),\n\t\t\t\t\t\tLocality: pulumi.String(\"Example City\"),\n\t\t\t\t\t\tAddressLines: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"1234 Example street\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRecipients: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example recipient\"),\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.clouddomains.Registration;\nimport com.pulumi.gcp.clouddomains.RegistrationArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationYearlyPriceArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationDnsSettingsArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationDnsSettingsCustomDnsArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationContactSettingsArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationContactSettingsRegistrantContactArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationContactSettingsRegistrantContactPostalAddressArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationContactSettingsAdminContactArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationContactSettingsAdminContactPostalAddressArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationContactSettingsTechnicalContactArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationContactSettingsTechnicalContactPostalAddressArgs;\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 myRegistration = new Registration(\"myRegistration\", RegistrationArgs.builder()\n .domainName(\"example-domain.com\")\n .location(\"global\")\n .labels(Map.of(\"labelkey\", \"labelvalue\"))\n .yearlyPrice(RegistrationYearlyPriceArgs.builder()\n .currencyCode(\"USD\")\n .units(12)\n .build())\n .dnsSettings(RegistrationDnsSettingsArgs.builder()\n .customDns(RegistrationDnsSettingsCustomDnsArgs.builder()\n .nameServers( \n \"ns-cloud-a1.googledomains.com.\",\n \"ns-cloud-a2.googledomains.com.\",\n \"ns-cloud-a3.googledomains.com.\",\n \"ns-cloud-a4.googledomains.com.\")\n .build())\n .build())\n .contactSettings(RegistrationContactSettingsArgs.builder()\n .privacy(\"REDACTED_CONTACT_DATA\")\n .registrantContact(RegistrationContactSettingsRegistrantContactArgs.builder()\n .phoneNumber(\"+12345000000\")\n .email(\"user@example.com\")\n .postalAddress(RegistrationContactSettingsRegistrantContactPostalAddressArgs.builder()\n .regionCode(\"US\")\n .postalCode(\"95050\")\n .administrativeArea(\"CA\")\n .locality(\"Example City\")\n .addressLines(\"1234 Example street\")\n .recipients(\"example recipient\")\n .build())\n .build())\n .adminContact(RegistrationContactSettingsAdminContactArgs.builder()\n .phoneNumber(\"+12345000000\")\n .email(\"user@example.com\")\n .postalAddress(RegistrationContactSettingsAdminContactPostalAddressArgs.builder()\n .regionCode(\"US\")\n .postalCode(\"95050\")\n .administrativeArea(\"CA\")\n .locality(\"Example City\")\n .addressLines(\"1234 Example street\")\n .recipients(\"example recipient\")\n .build())\n .build())\n .technicalContact(RegistrationContactSettingsTechnicalContactArgs.builder()\n .phoneNumber(\"+12345000000\")\n .email(\"user@example.com\")\n .postalAddress(RegistrationContactSettingsTechnicalContactPostalAddressArgs.builder()\n .regionCode(\"US\")\n .postalCode(\"95050\")\n .administrativeArea(\"CA\")\n .locality(\"Example City\")\n .addressLines(\"1234 Example street\")\n .recipients(\"example recipient\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myRegistration:\n type: gcp:clouddomains:Registration\n name: my_registration\n properties:\n domainName: example-domain.com\n location: global\n labels:\n labelkey: labelvalue\n yearlyPrice:\n currencyCode: USD\n units: 12\n dnsSettings:\n customDns:\n nameServers:\n - ns-cloud-a1.googledomains.com.\n - ns-cloud-a2.googledomains.com.\n - ns-cloud-a3.googledomains.com.\n - ns-cloud-a4.googledomains.com.\n contactSettings:\n privacy: REDACTED_CONTACT_DATA\n registrantContact:\n phoneNumber: '+12345000000'\n email: user@example.com\n postalAddress:\n regionCode: US\n postalCode: '95050'\n administrativeArea: CA\n locality: Example City\n addressLines:\n - 1234 Example street\n recipients:\n - example recipient\n adminContact:\n phoneNumber: '+12345000000'\n email: user@example.com\n postalAddress:\n regionCode: US\n postalCode: '95050'\n administrativeArea: CA\n locality: Example City\n addressLines:\n - 1234 Example street\n recipients:\n - example recipient\n technicalContact:\n phoneNumber: '+12345000000'\n email: user@example.com\n postalAddress:\n regionCode: US\n postalCode: '95050'\n administrativeArea: CA\n locality: Example City\n addressLines:\n - 1234 Example street\n recipients:\n - example recipient\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegistration can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/registrations/{{domain_name}}`\n\n* `{{project}}/{{location}}/{{domain_name}}`\n\n* `{{location}}/{{domain_name}}`\n\nWhen using the `pulumi import` command, Registration can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:clouddomains/registration:Registration default projects/{{project}}/locations/{{location}}/registrations/{{domain_name}}\n```\n\n```sh\n$ pulumi import gcp:clouddomains/registration:Registration default {{project}}/{{location}}/{{domain_name}}\n```\n\n```sh\n$ pulumi import gcp:clouddomains/registration:Registration default {{location}}/{{domain_name}}\n```\n\n", + "description": "## Example Usage\n\n### Clouddomains Registration Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myRegistration = new gcp.clouddomains.Registration(\"my_registration\", {\n domainName: \"example-domain.com\",\n location: \"global\",\n labels: {\n labelkey: \"labelvalue\",\n },\n yearlyPrice: {\n currencyCode: \"USD\",\n units: \"12\",\n },\n dnsSettings: {\n customDns: {\n nameServers: [\n \"ns-cloud-a1.googledomains.com.\",\n \"ns-cloud-a2.googledomains.com.\",\n \"ns-cloud-a3.googledomains.com.\",\n \"ns-cloud-a4.googledomains.com.\",\n ],\n },\n },\n contactSettings: {\n privacy: \"REDACTED_CONTACT_DATA\",\n registrantContact: {\n phoneNumber: \"+12345000000\",\n email: \"user@example.com\",\n postalAddress: {\n regionCode: \"US\",\n postalCode: \"95050\",\n administrativeArea: \"CA\",\n locality: \"Example City\",\n addressLines: [\"1234 Example street\"],\n recipients: [\"example recipient\"],\n },\n },\n adminContact: {\n phoneNumber: \"+12345000000\",\n email: \"user@example.com\",\n postalAddress: {\n regionCode: \"US\",\n postalCode: \"95050\",\n administrativeArea: \"CA\",\n locality: \"Example City\",\n addressLines: [\"1234 Example street\"],\n recipients: [\"example recipient\"],\n },\n },\n technicalContact: {\n phoneNumber: \"+12345000000\",\n email: \"user@example.com\",\n postalAddress: {\n regionCode: \"US\",\n postalCode: \"95050\",\n administrativeArea: \"CA\",\n locality: \"Example City\",\n addressLines: [\"1234 Example street\"],\n recipients: [\"example recipient\"],\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_registration = gcp.clouddomains.Registration(\"my_registration\",\n domain_name=\"example-domain.com\",\n location=\"global\",\n labels={\n \"labelkey\": \"labelvalue\",\n },\n yearly_price={\n \"currency_code\": \"USD\",\n \"units\": \"12\",\n },\n dns_settings={\n \"custom_dns\": {\n \"name_servers\": [\n \"ns-cloud-a1.googledomains.com.\",\n \"ns-cloud-a2.googledomains.com.\",\n \"ns-cloud-a3.googledomains.com.\",\n \"ns-cloud-a4.googledomains.com.\",\n ],\n },\n },\n contact_settings={\n \"privacy\": \"REDACTED_CONTACT_DATA\",\n \"registrant_contact\": {\n \"phone_number\": \"+12345000000\",\n \"email\": \"user@example.com\",\n \"postal_address\": {\n \"region_code\": \"US\",\n \"postal_code\": \"95050\",\n \"administrative_area\": \"CA\",\n \"locality\": \"Example City\",\n \"address_lines\": [\"1234 Example street\"],\n \"recipients\": [\"example recipient\"],\n },\n },\n \"admin_contact\": {\n \"phone_number\": \"+12345000000\",\n \"email\": \"user@example.com\",\n \"postal_address\": {\n \"region_code\": \"US\",\n \"postal_code\": \"95050\",\n \"administrative_area\": \"CA\",\n \"locality\": \"Example City\",\n \"address_lines\": [\"1234 Example street\"],\n \"recipients\": [\"example recipient\"],\n },\n },\n \"technical_contact\": {\n \"phone_number\": \"+12345000000\",\n \"email\": \"user@example.com\",\n \"postal_address\": {\n \"region_code\": \"US\",\n \"postal_code\": \"95050\",\n \"administrative_area\": \"CA\",\n \"locality\": \"Example City\",\n \"address_lines\": [\"1234 Example street\"],\n \"recipients\": [\"example recipient\"],\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 myRegistration = new Gcp.CloudDomains.Registration(\"my_registration\", new()\n {\n DomainName = \"example-domain.com\",\n Location = \"global\",\n Labels = \n {\n { \"labelkey\", \"labelvalue\" },\n },\n YearlyPrice = new Gcp.CloudDomains.Inputs.RegistrationYearlyPriceArgs\n {\n CurrencyCode = \"USD\",\n Units = \"12\",\n },\n DnsSettings = new Gcp.CloudDomains.Inputs.RegistrationDnsSettingsArgs\n {\n CustomDns = new Gcp.CloudDomains.Inputs.RegistrationDnsSettingsCustomDnsArgs\n {\n NameServers = new[]\n {\n \"ns-cloud-a1.googledomains.com.\",\n \"ns-cloud-a2.googledomains.com.\",\n \"ns-cloud-a3.googledomains.com.\",\n \"ns-cloud-a4.googledomains.com.\",\n },\n },\n },\n ContactSettings = new Gcp.CloudDomains.Inputs.RegistrationContactSettingsArgs\n {\n Privacy = \"REDACTED_CONTACT_DATA\",\n RegistrantContact = new Gcp.CloudDomains.Inputs.RegistrationContactSettingsRegistrantContactArgs\n {\n PhoneNumber = \"+12345000000\",\n Email = \"user@example.com\",\n PostalAddress = new Gcp.CloudDomains.Inputs.RegistrationContactSettingsRegistrantContactPostalAddressArgs\n {\n RegionCode = \"US\",\n PostalCode = \"95050\",\n AdministrativeArea = \"CA\",\n Locality = \"Example City\",\n AddressLines = new[]\n {\n \"1234 Example street\",\n },\n Recipients = new[]\n {\n \"example recipient\",\n },\n },\n },\n AdminContact = new Gcp.CloudDomains.Inputs.RegistrationContactSettingsAdminContactArgs\n {\n PhoneNumber = \"+12345000000\",\n Email = \"user@example.com\",\n PostalAddress = new Gcp.CloudDomains.Inputs.RegistrationContactSettingsAdminContactPostalAddressArgs\n {\n RegionCode = \"US\",\n PostalCode = \"95050\",\n AdministrativeArea = \"CA\",\n Locality = \"Example City\",\n AddressLines = new[]\n {\n \"1234 Example street\",\n },\n Recipients = new[]\n {\n \"example recipient\",\n },\n },\n },\n TechnicalContact = new Gcp.CloudDomains.Inputs.RegistrationContactSettingsTechnicalContactArgs\n {\n PhoneNumber = \"+12345000000\",\n Email = \"user@example.com\",\n PostalAddress = new Gcp.CloudDomains.Inputs.RegistrationContactSettingsTechnicalContactPostalAddressArgs\n {\n RegionCode = \"US\",\n PostalCode = \"95050\",\n AdministrativeArea = \"CA\",\n Locality = \"Example City\",\n AddressLines = new[]\n {\n \"1234 Example street\",\n },\n Recipients = new[]\n {\n \"example recipient\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/clouddomains\"\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 := clouddomains.NewRegistration(ctx, \"my_registration\", \u0026clouddomains.RegistrationArgs{\n\t\t\tDomainName: pulumi.String(\"example-domain.com\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"labelkey\": pulumi.String(\"labelvalue\"),\n\t\t\t},\n\t\t\tYearlyPrice: \u0026clouddomains.RegistrationYearlyPriceArgs{\n\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\tUnits: pulumi.String(\"12\"),\n\t\t\t},\n\t\t\tDnsSettings: \u0026clouddomains.RegistrationDnsSettingsArgs{\n\t\t\t\tCustomDns: \u0026clouddomains.RegistrationDnsSettingsCustomDnsArgs{\n\t\t\t\t\tNameServers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ns-cloud-a1.googledomains.com.\"),\n\t\t\t\t\t\tpulumi.String(\"ns-cloud-a2.googledomains.com.\"),\n\t\t\t\t\t\tpulumi.String(\"ns-cloud-a3.googledomains.com.\"),\n\t\t\t\t\t\tpulumi.String(\"ns-cloud-a4.googledomains.com.\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tContactSettings: \u0026clouddomains.RegistrationContactSettingsArgs{\n\t\t\t\tPrivacy: pulumi.String(\"REDACTED_CONTACT_DATA\"),\n\t\t\t\tRegistrantContact: \u0026clouddomains.RegistrationContactSettingsRegistrantContactArgs{\n\t\t\t\t\tPhoneNumber: pulumi.String(\"+12345000000\"),\n\t\t\t\t\tEmail: pulumi.String(\"user@example.com\"),\n\t\t\t\t\tPostalAddress: \u0026clouddomains.RegistrationContactSettingsRegistrantContactPostalAddressArgs{\n\t\t\t\t\t\tRegionCode: pulumi.String(\"US\"),\n\t\t\t\t\t\tPostalCode: pulumi.String(\"95050\"),\n\t\t\t\t\t\tAdministrativeArea: pulumi.String(\"CA\"),\n\t\t\t\t\t\tLocality: pulumi.String(\"Example City\"),\n\t\t\t\t\t\tAddressLines: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"1234 Example street\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRecipients: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example recipient\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAdminContact: \u0026clouddomains.RegistrationContactSettingsAdminContactArgs{\n\t\t\t\t\tPhoneNumber: pulumi.String(\"+12345000000\"),\n\t\t\t\t\tEmail: pulumi.String(\"user@example.com\"),\n\t\t\t\t\tPostalAddress: \u0026clouddomains.RegistrationContactSettingsAdminContactPostalAddressArgs{\n\t\t\t\t\t\tRegionCode: pulumi.String(\"US\"),\n\t\t\t\t\t\tPostalCode: pulumi.String(\"95050\"),\n\t\t\t\t\t\tAdministrativeArea: pulumi.String(\"CA\"),\n\t\t\t\t\t\tLocality: pulumi.String(\"Example City\"),\n\t\t\t\t\t\tAddressLines: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"1234 Example street\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRecipients: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example recipient\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTechnicalContact: \u0026clouddomains.RegistrationContactSettingsTechnicalContactArgs{\n\t\t\t\t\tPhoneNumber: pulumi.String(\"+12345000000\"),\n\t\t\t\t\tEmail: pulumi.String(\"user@example.com\"),\n\t\t\t\t\tPostalAddress: \u0026clouddomains.RegistrationContactSettingsTechnicalContactPostalAddressArgs{\n\t\t\t\t\t\tRegionCode: pulumi.String(\"US\"),\n\t\t\t\t\t\tPostalCode: pulumi.String(\"95050\"),\n\t\t\t\t\t\tAdministrativeArea: pulumi.String(\"CA\"),\n\t\t\t\t\t\tLocality: pulumi.String(\"Example City\"),\n\t\t\t\t\t\tAddressLines: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"1234 Example street\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRecipients: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example recipient\"),\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.clouddomains.Registration;\nimport com.pulumi.gcp.clouddomains.RegistrationArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationYearlyPriceArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationDnsSettingsArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationDnsSettingsCustomDnsArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationContactSettingsArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationContactSettingsRegistrantContactArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationContactSettingsRegistrantContactPostalAddressArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationContactSettingsAdminContactArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationContactSettingsAdminContactPostalAddressArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationContactSettingsTechnicalContactArgs;\nimport com.pulumi.gcp.clouddomains.inputs.RegistrationContactSettingsTechnicalContactPostalAddressArgs;\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 myRegistration = new Registration(\"myRegistration\", RegistrationArgs.builder()\n .domainName(\"example-domain.com\")\n .location(\"global\")\n .labels(Map.of(\"labelkey\", \"labelvalue\"))\n .yearlyPrice(RegistrationYearlyPriceArgs.builder()\n .currencyCode(\"USD\")\n .units(12)\n .build())\n .dnsSettings(RegistrationDnsSettingsArgs.builder()\n .customDns(RegistrationDnsSettingsCustomDnsArgs.builder()\n .nameServers( \n \"ns-cloud-a1.googledomains.com.\",\n \"ns-cloud-a2.googledomains.com.\",\n \"ns-cloud-a3.googledomains.com.\",\n \"ns-cloud-a4.googledomains.com.\")\n .build())\n .build())\n .contactSettings(RegistrationContactSettingsArgs.builder()\n .privacy(\"REDACTED_CONTACT_DATA\")\n .registrantContact(RegistrationContactSettingsRegistrantContactArgs.builder()\n .phoneNumber(\"+12345000000\")\n .email(\"user@example.com\")\n .postalAddress(RegistrationContactSettingsRegistrantContactPostalAddressArgs.builder()\n .regionCode(\"US\")\n .postalCode(\"95050\")\n .administrativeArea(\"CA\")\n .locality(\"Example City\")\n .addressLines(\"1234 Example street\")\n .recipients(\"example recipient\")\n .build())\n .build())\n .adminContact(RegistrationContactSettingsAdminContactArgs.builder()\n .phoneNumber(\"+12345000000\")\n .email(\"user@example.com\")\n .postalAddress(RegistrationContactSettingsAdminContactPostalAddressArgs.builder()\n .regionCode(\"US\")\n .postalCode(\"95050\")\n .administrativeArea(\"CA\")\n .locality(\"Example City\")\n .addressLines(\"1234 Example street\")\n .recipients(\"example recipient\")\n .build())\n .build())\n .technicalContact(RegistrationContactSettingsTechnicalContactArgs.builder()\n .phoneNumber(\"+12345000000\")\n .email(\"user@example.com\")\n .postalAddress(RegistrationContactSettingsTechnicalContactPostalAddressArgs.builder()\n .regionCode(\"US\")\n .postalCode(\"95050\")\n .administrativeArea(\"CA\")\n .locality(\"Example City\")\n .addressLines(\"1234 Example street\")\n .recipients(\"example recipient\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myRegistration:\n type: gcp:clouddomains:Registration\n name: my_registration\n properties:\n domainName: example-domain.com\n location: global\n labels:\n labelkey: labelvalue\n yearlyPrice:\n currencyCode: USD\n units: 12\n dnsSettings:\n customDns:\n nameServers:\n - ns-cloud-a1.googledomains.com.\n - ns-cloud-a2.googledomains.com.\n - ns-cloud-a3.googledomains.com.\n - ns-cloud-a4.googledomains.com.\n contactSettings:\n privacy: REDACTED_CONTACT_DATA\n registrantContact:\n phoneNumber: '+12345000000'\n email: user@example.com\n postalAddress:\n regionCode: US\n postalCode: '95050'\n administrativeArea: CA\n locality: Example City\n addressLines:\n - 1234 Example street\n recipients:\n - example recipient\n adminContact:\n phoneNumber: '+12345000000'\n email: user@example.com\n postalAddress:\n regionCode: US\n postalCode: '95050'\n administrativeArea: CA\n locality: Example City\n addressLines:\n - 1234 Example street\n recipients:\n - example recipient\n technicalContact:\n phoneNumber: '+12345000000'\n email: user@example.com\n postalAddress:\n regionCode: US\n postalCode: '95050'\n administrativeArea: CA\n locality: Example City\n addressLines:\n - 1234 Example street\n recipients:\n - example recipient\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegistration can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/registrations/{{domain_name}}`\n\n* `{{project}}/{{location}}/{{domain_name}}`\n\n* `{{location}}/{{domain_name}}`\n\nWhen using the `pulumi import` command, Registration can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:clouddomains/registration:Registration default projects/{{project}}/locations/{{location}}/registrations/{{domain_name}}\n```\n\n```sh\n$ pulumi import gcp:clouddomains/registration:Registration default {{project}}/{{location}}/{{domain_name}}\n```\n\n```sh\n$ pulumi import gcp:clouddomains/registration:Registration default {{location}}/{{domain_name}}\n```\n\n", "properties": { "contactNotices": { "type": "array", @@ -136837,7 +136837,7 @@ } }, "gcp:cloudfunctionsv2/function:Function": { - "description": "A Cloud Function that contains user computation executed in response to an event.\n\n\nTo get more information about function, see:\n\n* [API documentation](https://cloud.google.com/functions/docs/reference/rest/v2beta/projects.locations.functions)\n\n## Example Usage\n\n### Cloudfunctions2 Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-v2\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-v2\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entryPoint\": \"helloHttp\",\n \"source\": {\n \"storageSource\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"maxInstanceCount\": 1,\n \"availableMemory\": \"256M\",\n \"timeoutSeconds\": 60,\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 = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-v2\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-v2\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\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.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\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 final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-v2\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-v2\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entryPoint\": \"helloPubSub\",\n \"environmentVariables\": {\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n \"source\": {\n \"storageSource\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"maxInstanceCount\": 3,\n \"minInstanceCount\": 1,\n \"availableMemory\": \"4Gi\",\n \"timeoutSeconds\": 60,\n \"maxInstanceRequestConcurrency\": 80,\n \"availableCpu\": \"4\",\n \"environmentVariables\": {\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n },\n \"ingressSettings\": \"ALLOW_INTERNAL_ONLY\",\n \"allTrafficOnLatestRevision\": True,\n \"serviceAccountEmail\": account.email,\n },\n event_trigger={\n \"triggerRegion\": \"us-central1\",\n \"eventType\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n \"pubsubTopic\": topic.id,\n \"retryPolicy\": \"RETRY_POLICY_RETRY\",\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 = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\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\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\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\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\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.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\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 final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Scheduler Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n serviceAccountEmail: account.email,\n },\n});\nconst invoker = new gcp.cloudfunctionsv2.FunctionIamMember(\"invoker\", {\n project: _function.project,\n location: _function.location,\n cloudFunction: _function.name,\n role: \"roles/cloudfunctions.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst cloudRunInvoker = new gcp.cloudrun.IamMember(\"cloud_run_invoker\", {\n project: _function.project,\n location: _function.location,\n service: _function.name,\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst invokeCloudFunction = new gcp.cloudscheduler.Job(\"invoke_cloud_function\", {\n name: \"invoke-gcf-function\",\n description: \"Schedule the HTTPS trigger for cloud function\",\n schedule: \"0 0 * * *\",\n project: _function.project,\n region: _function.location,\n httpTarget: {\n uri: _function.serviceConfig.apply(serviceConfig =\u003e serviceConfig?.uri),\n httpMethod: \"POST\",\n oidcToken: {\n audience: _function.serviceConfig.apply(serviceConfig =\u003e `${serviceConfig?.uri}/`),\n serviceAccountEmail: account.email,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entryPoint\": \"helloHttp\",\n \"source\": {\n \"storageSource\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"minInstanceCount\": 1,\n \"availableMemory\": \"256M\",\n \"timeoutSeconds\": 60,\n \"serviceAccountEmail\": account.email,\n })\ninvoker = gcp.cloudfunctionsv2.FunctionIamMember(\"invoker\",\n project=function.project,\n location=function.location,\n cloud_function=function.name,\n role=\"roles/cloudfunctions.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ncloud_run_invoker = gcp.cloudrun.IamMember(\"cloud_run_invoker\",\n project=function.project,\n location=function.location,\n service=function.name,\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ninvoke_cloud_function = gcp.cloudscheduler.Job(\"invoke_cloud_function\",\n name=\"invoke-gcf-function\",\n description=\"Schedule the HTTPS trigger for cloud function\",\n schedule=\"0 0 * * *\",\n project=function.project,\n region=function.location,\n http_target={\n \"uri\": function.service_config.uri,\n \"httpMethod\": \"POST\",\n \"oidcToken\": {\n \"audience\": function.service_config.apply(lambda service_config: f\"{service_config.uri}/\"),\n \"serviceAccountEmail\": account.email,\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 project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n ServiceAccountEmail = account.Email,\n },\n });\n\n var invoker = new Gcp.CloudFunctionsV2.FunctionIamMember(\"invoker\", new()\n {\n Project = function.Project,\n Location = function.Location,\n CloudFunction = function.Name,\n Role = \"roles/cloudfunctions.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var cloudRunInvoker = new Gcp.CloudRun.IamMember(\"cloud_run_invoker\", new()\n {\n Project = function.Project,\n Location = function.Location,\n Service = function.Name,\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var invokeCloudFunction = new Gcp.CloudScheduler.Job(\"invoke_cloud_function\", new()\n {\n Name = \"invoke-gcf-function\",\n Description = \"Schedule the HTTPS trigger for cloud function\",\n Schedule = \"0 0 * * *\",\n Project = function.Project,\n Region = function.Location,\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n Uri = function.ServiceConfig.Apply(serviceConfig =\u003e serviceConfig?.Uri),\n HttpMethod = \"POST\",\n OidcToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOidcTokenArgs\n {\n Audience = function.ServiceConfig.Apply(serviceConfig =\u003e $\"{serviceConfig?.Uri}/\"),\n ServiceAccountEmail = account.Email,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\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\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunction, err := cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunctionIamMember(ctx, \"invoker\", \u0026cloudfunctionsv2.FunctionIamMemberArgs{\n\t\t\tProject: function.Project,\n\t\t\tLocation: function.Location,\n\t\t\tCloudFunction: function.Name,\n\t\t\tRole: pulumi.String(\"roles/cloudfunctions.invoker\"),\n\t\t\tMember: account.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 = cloudrun.NewIamMember(ctx, \"cloud_run_invoker\", \u0026cloudrun.IamMemberArgs{\n\t\t\tProject: function.Project,\n\t\t\tLocation: function.Location,\n\t\t\tService: function.Name,\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.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 = cloudscheduler.NewJob(ctx, \"invoke_cloud_function\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"invoke-gcf-function\"),\n\t\t\tDescription: pulumi.String(\"Schedule the HTTPS trigger for cloud function\"),\n\t\t\tSchedule: pulumi.String(\"0 0 * * *\"),\n\t\t\tProject: function.Project,\n\t\t\tRegion: function.Location,\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tUri: function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (*string, error) {\n\t\t\t\t\treturn \u0026serviceConfig.Uri, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tOidcToken: \u0026cloudscheduler.JobHttpTargetOidcTokenArgs{\n\t\t\t\t\tAudience: function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/\", serviceConfig.Uri), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tServiceAccountEmail: account.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\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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionIamMember;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionIamMemberArgs;\nimport com.pulumi.gcp.cloudrun.IamMember;\nimport com.pulumi.gcp.cloudrun.IamMemberArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOidcTokenArgs;\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 final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .serviceAccountEmail(account.email())\n .build())\n .build());\n\n var invoker = new FunctionIamMember(\"invoker\", FunctionIamMemberArgs.builder()\n .project(function.project())\n .location(function.location())\n .cloudFunction(function.name())\n .role(\"roles/cloudfunctions.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var cloudRunInvoker = new IamMember(\"cloudRunInvoker\", IamMemberArgs.builder()\n .project(function.project())\n .location(function.location())\n .service(function.name())\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var invokeCloudFunction = new Job(\"invokeCloudFunction\", JobArgs.builder()\n .name(\"invoke-gcf-function\")\n .description(\"Schedule the HTTPS trigger for cloud function\")\n .schedule(\"0 0 * * *\")\n .project(function.project())\n .region(function.location())\n .httpTarget(JobHttpTargetArgs.builder()\n .uri(function.serviceConfig().applyValue(serviceConfig -\u003e serviceConfig.uri()))\n .httpMethod(\"POST\")\n .oidcToken(JobHttpTargetOidcTokenArgs.builder()\n .audience(function.serviceConfig().applyValue(serviceConfig -\u003e String.format(\"%s/\", serviceConfig.uri())))\n .serviceAccountEmail(account.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n serviceAccountEmail: ${account.email}\n invoker:\n type: gcp:cloudfunctionsv2:FunctionIamMember\n properties:\n project: ${function.project}\n location: ${function.location}\n cloudFunction: ${function.name}\n role: roles/cloudfunctions.invoker\n member: serviceAccount:${account.email}\n cloudRunInvoker:\n type: gcp:cloudrun:IamMember\n name: cloud_run_invoker\n properties:\n project: ${function.project}\n location: ${function.location}\n service: ${function.name}\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n invokeCloudFunction:\n type: gcp:cloudscheduler:Job\n name: invoke_cloud_function\n properties:\n name: invoke-gcf-function\n description: Schedule the HTTPS trigger for cloud function\n schedule: 0 0 * * *\n project: ${function.project}\n region: ${function.location}\n httpTarget:\n uri: ${function.serviceConfig.uri}\n httpMethod: POST\n oidcToken:\n audience: ${function.serviceConfig.uri}/\n serviceAccountEmail: ${account.email}\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Gcs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source_bucket = new gcp.storage.Bucket(\"source-bucket\", {\n name: \"gcf-source-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: source_bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst trigger_bucket = new gcp.storage.Bucket(\"trigger-bucket\", {\n name: \"gcf-trigger-bucket\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\n// To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n// (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\nconst gcs_pubsub_publishing = new gcp.projects.IAMMember(\"gcs-pubsub-publishing\", {\n project: \"my-project-name\",\n role: \"roles/pubsub.publisher\",\n member: gcsAccount.then(gcsAccount =\u003e `serviceAccount:${gcsAccount.emailAddress}`),\n});\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n});\n// Permissions on the service account used by the function and Eventarc trigger\nconst invoking = new gcp.projects.IAMMember(\"invoking\", {\n project: \"my-project-name\",\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [gcs_pubsub_publishing],\n});\nconst event_receiving = new gcp.projects.IAMMember(\"event-receiving\", {\n project: \"my-project-name\",\n role: \"roles/eventarc.eventReceiver\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [invoking],\n});\nconst artifactregistry_reader = new gcp.projects.IAMMember(\"artifactregistry-reader\", {\n project: \"my-project-name\",\n role: \"roles/artifactregistry.reader\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [event_receiving],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs12\",\n entryPoint: \"entryPoint\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: source_bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n eventType: \"google.cloud.storage.object.v1.finalized\",\n retryPolicy: \"RETRY_POLICY_RETRY\",\n serviceAccountEmail: account.email,\n eventFilters: [{\n attribute: \"bucket\",\n value: trigger_bucket.name,\n }],\n },\n}, {\n dependsOn: [\n event_receiving,\n artifactregistry_reader,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource_bucket = gcp.storage.Bucket(\"source-bucket\",\n name=\"gcf-source-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=source_bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\ntrigger_bucket = gcp.storage.Bucket(\"trigger-bucket\",\n name=\"gcf-trigger-bucket\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\ngcs_account = gcp.storage.get_project_service_account()\n# To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n# (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\ngcs_pubsub_publishing = gcp.projects.IAMMember(\"gcs-pubsub-publishing\",\n project=\"my-project-name\",\n role=\"roles/pubsub.publisher\",\n member=f\"serviceAccount:{gcs_account.email_address}\")\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n# Permissions on the service account used by the function and Eventarc trigger\ninvoking = gcp.projects.IAMMember(\"invoking\",\n project=\"my-project-name\",\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[gcs_pubsub_publishing]))\nevent_receiving = gcp.projects.IAMMember(\"event-receiving\",\n project=\"my-project-name\",\n role=\"roles/eventarc.eventReceiver\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[invoking]))\nartifactregistry_reader = gcp.projects.IAMMember(\"artifactregistry-reader\",\n project=\"my-project-name\",\n role=\"roles/artifactregistry.reader\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[event_receiving]))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs12\",\n \"entryPoint\": \"entryPoint\",\n \"environmentVariables\": {\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n \"source\": {\n \"storageSource\": {\n \"bucket\": source_bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"maxInstanceCount\": 3,\n \"minInstanceCount\": 1,\n \"availableMemory\": \"256M\",\n \"timeoutSeconds\": 60,\n \"environmentVariables\": {\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n },\n \"ingressSettings\": \"ALLOW_INTERNAL_ONLY\",\n \"allTrafficOnLatestRevision\": True,\n \"serviceAccountEmail\": account.email,\n },\n event_trigger={\n \"eventType\": \"google.cloud.storage.object.v1.finalized\",\n \"retryPolicy\": \"RETRY_POLICY_RETRY\",\n \"serviceAccountEmail\": account.email,\n \"eventFilters\": [{\n \"attribute\": \"bucket\",\n \"value\": trigger_bucket.name,\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[\n event_receiving,\n artifactregistry_reader,\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_bucket = new Gcp.Storage.Bucket(\"source-bucket\", new()\n {\n Name = \"gcf-source-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = source_bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var trigger_bucket = new Gcp.Storage.Bucket(\"trigger-bucket\", new()\n {\n Name = \"gcf-trigger-bucket\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n var gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n // To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n // (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n var gcs_pubsub_publishing = new Gcp.Projects.IAMMember(\"gcs-pubsub-publishing\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/pubsub.publisher\",\n Member = $\"serviceAccount:{gcsAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.EmailAddress)}\",\n });\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n });\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new Gcp.Projects.IAMMember(\"invoking\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n gcs_pubsub_publishing,\n },\n });\n\n var event_receiving = new Gcp.Projects.IAMMember(\"event-receiving\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/eventarc.eventReceiver\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n invoking,\n },\n });\n\n var artifactregistry_reader = new Gcp.Projects.IAMMember(\"artifactregistry-reader\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/artifactregistry.reader\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs12\",\n EntryPoint = \"entryPoint\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = source_bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n EventType = \"google.cloud.storage.object.v1.finalized\",\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n ServiceAccountEmail = account.Email,\n EventFilters = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"bucket\",\n Value = trigger_bucket.Name,\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n artifactregistry_reader,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := storage.NewBucket(ctx, \"source-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-source-bucket\"),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: source_bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucket(ctx, \"trigger-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-trigger-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tgcsAccount, err := storage.GetProjectServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n\t\t// (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n\t\t_, err = projects.NewIAMMember(ctx, \"gcs-pubsub-publishing\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v\", gcsAccount.EmailAddress)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Permissions on the service account used by the function and Eventarc trigger\n\t\tinvoking, err := projects.NewIAMMember(ctx, \"invoking\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tgcs_pubsub_publishing,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"event-receiving\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/eventarc.eventReceiver\"),\n\t\t\tMember: account.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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tinvoking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"artifactregistry-reader\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.reader\"),\n\t\t\tMember: account.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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs12\"),\n\t\t\t\tEntryPoint: pulumi.String(\"entryPoint\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: source_bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tEventType: pulumi.String(\"google.cloud.storage.object.v1.finalized\"),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\tEventFilters: cloudfunctionsv2.FunctionEventTriggerEventFilterArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"bucket\"),\n\t\t\t\t\t\tValue: trigger_bucket.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t\tartifactregistry_reader,\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.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.resources.CustomResourceOptions;\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 source_bucket = new Bucket(\"source-bucket\", BucketArgs.builder()\n .name(\"gcf-source-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(source_bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var trigger_bucket = new Bucket(\"trigger-bucket\", BucketArgs.builder()\n .name(\"gcf-trigger-bucket\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n final var gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n // To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n // (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n var gcs_pubsub_publishing = new IAMMember(\"gcs-pubsub-publishing\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/pubsub.publisher\")\n .member(String.format(\"serviceAccount:%s\", gcsAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.emailAddress())))\n .build());\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n .build());\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new IAMMember(\"invoking\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(gcs_pubsub_publishing)\n .build());\n\n var event_receiving = new IAMMember(\"event-receiving\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/eventarc.eventReceiver\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(invoking)\n .build());\n\n var artifactregistry_reader = new IAMMember(\"artifactregistry-reader\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/artifactregistry.reader\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(event_receiving)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs12\")\n .entryPoint(\"entryPoint\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(source_bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .eventType(\"google.cloud.storage.object.v1.finalized\")\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .serviceAccountEmail(account.email())\n .eventFilters(FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"bucket\")\n .value(trigger_bucket.name())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n event_receiving,\n artifactregistry_reader)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-source-bucket\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${[\"source-bucket\"].name}\n source:\n fn::FileAsset: function-source.zip\n trigger-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-trigger-bucket\n location: us-central1\n uniformBucketLevelAccess: true\n # To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n # (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n gcs-pubsub-publishing:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/pubsub.publisher\n member: serviceAccount:${gcsAccount.emailAddress}\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account - used for both the cloud function and eventarc trigger in the test\n # Permissions on the service account used by the function and Eventarc trigger\n invoking:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${[\"gcs-pubsub-publishing\"]}\n event-receiving:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/eventarc.eventReceiver\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${invoking}\n artifactregistry-reader:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/artifactregistry.reader\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${[\"event-receiving\"]}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs12\n entryPoint: entryPoint\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${[\"source-bucket\"].name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n eventType: google.cloud.storage.object.v1.finalized\n retryPolicy: RETRY_POLICY_RETRY\n serviceAccountEmail: ${account.email}\n eventFilters:\n - attribute: bucket\n value: ${[\"trigger-bucket\"].name}\n options:\n dependson:\n - ${[\"event-receiving\"]}\n - ${[\"artifactregistry-reader\"]}\nvariables:\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Auditlogs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example follows the examples shown in this Google Cloud Community blog post\n// https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n// and the docs:\n// https://cloud.google.com/eventarc/docs/path-patterns\nconst source_bucket = new gcp.storage.Bucket(\"source-bucket\", {\n name: \"gcf-source-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: source_bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n});\n// Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n// Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n// google_cloudfunctions2_function below (Audit Log events have path pattern support)\nconst audit_log_bucket = new gcp.storage.Bucket(\"audit-log-bucket\", {\n name: \"gcf-auditlog-bucket\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\n// Permissions on the service account used by the function and Eventarc trigger\nconst invoking = new gcp.projects.IAMMember(\"invoking\", {\n project: \"my-project-name\",\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst event_receiving = new gcp.projects.IAMMember(\"event-receiving\", {\n project: \"my-project-name\",\n role: \"roles/eventarc.eventReceiver\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [invoking],\n});\nconst artifactregistry_reader = new gcp.projects.IAMMember(\"artifactregistry-reader\", {\n project: \"my-project-name\",\n role: \"roles/artifactregistry.reader\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [event_receiving],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs12\",\n entryPoint: \"entryPoint\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: source_bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.audit.log.v1.written\",\n retryPolicy: \"RETRY_POLICY_RETRY\",\n serviceAccountEmail: account.email,\n eventFilters: [\n {\n attribute: \"serviceName\",\n value: \"storage.googleapis.com\",\n },\n {\n attribute: \"methodName\",\n value: \"storage.objects.create\",\n },\n {\n attribute: \"resourceName\",\n value: pulumi.interpolate`/projects/_/buckets/${audit_log_bucket.name}/objects/*.txt`,\n operator: \"match-path-pattern\",\n },\n ],\n },\n}, {\n dependsOn: [\n event_receiving,\n artifactregistry_reader,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example follows the examples shown in this Google Cloud Community blog post\n# https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n# and the docs:\n# https://cloud.google.com/eventarc/docs/path-patterns\nsource_bucket = gcp.storage.Bucket(\"source-bucket\",\n name=\"gcf-source-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=source_bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n# Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n# Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n# google_cloudfunctions2_function below (Audit Log events have path pattern support)\naudit_log_bucket = gcp.storage.Bucket(\"audit-log-bucket\",\n name=\"gcf-auditlog-bucket\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\n# Permissions on the service account used by the function and Eventarc trigger\ninvoking = gcp.projects.IAMMember(\"invoking\",\n project=\"my-project-name\",\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nevent_receiving = gcp.projects.IAMMember(\"event-receiving\",\n project=\"my-project-name\",\n role=\"roles/eventarc.eventReceiver\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[invoking]))\nartifactregistry_reader = gcp.projects.IAMMember(\"artifactregistry-reader\",\n project=\"my-project-name\",\n role=\"roles/artifactregistry.reader\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[event_receiving]))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs12\",\n \"entryPoint\": \"entryPoint\",\n \"environmentVariables\": {\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n \"source\": {\n \"storageSource\": {\n \"bucket\": source_bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"maxInstanceCount\": 3,\n \"minInstanceCount\": 1,\n \"availableMemory\": \"256M\",\n \"timeoutSeconds\": 60,\n \"environmentVariables\": {\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n },\n \"ingressSettings\": \"ALLOW_INTERNAL_ONLY\",\n \"allTrafficOnLatestRevision\": True,\n \"serviceAccountEmail\": account.email,\n },\n event_trigger={\n \"triggerRegion\": \"us-central1\",\n \"eventType\": \"google.cloud.audit.log.v1.written\",\n \"retryPolicy\": \"RETRY_POLICY_RETRY\",\n \"serviceAccountEmail\": account.email,\n \"eventFilters\": [\n {\n \"attribute\": \"serviceName\",\n \"value\": \"storage.googleapis.com\",\n },\n {\n \"attribute\": \"methodName\",\n \"value\": \"storage.objects.create\",\n },\n {\n \"attribute\": \"resourceName\",\n \"value\": audit_log_bucket.name.apply(lambda name: f\"/projects/_/buckets/{name}/objects/*.txt\"),\n \"operator\": \"match-path-pattern\",\n },\n ],\n },\n opts = pulumi.ResourceOptions(depends_on=[\n event_receiving,\n artifactregistry_reader,\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 // This example follows the examples shown in this Google Cloud Community blog post\n // https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n // and the docs:\n // https://cloud.google.com/eventarc/docs/path-patterns\n var source_bucket = new Gcp.Storage.Bucket(\"source-bucket\", new()\n {\n Name = \"gcf-source-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = source_bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n });\n\n // Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n // Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n // google_cloudfunctions2_function below (Audit Log events have path pattern support)\n var audit_log_bucket = new Gcp.Storage.Bucket(\"audit-log-bucket\", new()\n {\n Name = \"gcf-auditlog-bucket\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new Gcp.Projects.IAMMember(\"invoking\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var event_receiving = new Gcp.Projects.IAMMember(\"event-receiving\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/eventarc.eventReceiver\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n invoking,\n },\n });\n\n var artifactregistry_reader = new Gcp.Projects.IAMMember(\"artifactregistry-reader\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/artifactregistry.reader\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs12\",\n EntryPoint = \"entryPoint\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = source_bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.audit.log.v1.written\",\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n ServiceAccountEmail = account.Email,\n EventFilters = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"serviceName\",\n Value = \"storage.googleapis.com\",\n },\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"methodName\",\n Value = \"storage.objects.create\",\n },\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"resourceName\",\n Value = audit_log_bucket.Name.Apply(name =\u003e $\"/projects/_/buckets/{name}/objects/*.txt\"),\n Operator = \"match-path-pattern\",\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n artifactregistry_reader,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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// This example follows the examples shown in this Google Cloud Community blog post\n\t\t// https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n\t\t// and the docs:\n\t\t// https://cloud.google.com/eventarc/docs/path-patterns\n\t\t_, err := storage.NewBucket(ctx, \"source-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-source-bucket\"),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: source_bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n\t\t// Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n\t\t// google_cloudfunctions2_function below (Audit Log events have path pattern support)\n\t\t_, err = storage.NewBucket(ctx, \"audit-log-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-auditlog-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\t// Permissions on the service account used by the function and Eventarc trigger\n\t\tinvoking, err := projects.NewIAMMember(ctx, \"invoking\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.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, \"event-receiving\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/eventarc.eventReceiver\"),\n\t\t\tMember: account.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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tinvoking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"artifactregistry-reader\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.reader\"),\n\t\t\tMember: account.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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs12\"),\n\t\t\t\tEntryPoint: pulumi.String(\"entryPoint\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: source_bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.audit.log.v1.written\"),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\tEventFilters: cloudfunctionsv2.FunctionEventTriggerEventFilterArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"serviceName\"),\n\t\t\t\t\t\tValue: pulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"methodName\"),\n\t\t\t\t\t\tValue: pulumi.String(\"storage.objects.create\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"resourceName\"),\n\t\t\t\t\t\tValue: audit_log_bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"/projects/_/buckets/%v/objects/*.txt\", name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\tOperator: pulumi.String(\"match-path-pattern\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t\tartifactregistry_reader,\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.resources.CustomResourceOptions;\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 // This example follows the examples shown in this Google Cloud Community blog post\n // https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n // and the docs:\n // https://cloud.google.com/eventarc/docs/path-patterns\n var source_bucket = new Bucket(\"source-bucket\", BucketArgs.builder()\n .name(\"gcf-source-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(source_bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n .build());\n\n // Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n // Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n // google_cloudfunctions2_function below (Audit Log events have path pattern support)\n var audit_log_bucket = new Bucket(\"audit-log-bucket\", BucketArgs.builder()\n .name(\"gcf-auditlog-bucket\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new IAMMember(\"invoking\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var event_receiving = new IAMMember(\"event-receiving\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/eventarc.eventReceiver\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(invoking)\n .build());\n\n var artifactregistry_reader = new IAMMember(\"artifactregistry-reader\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/artifactregistry.reader\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(event_receiving)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs12\")\n .entryPoint(\"entryPoint\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(source_bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.audit.log.v1.written\")\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .serviceAccountEmail(account.email())\n .eventFilters( \n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"serviceName\")\n .value(\"storage.googleapis.com\")\n .build(),\n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"methodName\")\n .value(\"storage.objects.create\")\n .build(),\n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"resourceName\")\n .value(audit_log_bucket.name().applyValue(name -\u003e String.format(\"/projects/_/buckets/%s/objects/*.txt\", name)))\n .operator(\"match-path-pattern\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n event_receiving,\n artifactregistry_reader)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # This example follows the examples shown in this Google Cloud Community blog post\n # https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n # and the docs:\n # https://cloud.google.com/eventarc/docs/path-patterns\n source-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-source-bucket\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${[\"source-bucket\"].name}\n source:\n fn::FileAsset: function-source.zip\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account - used for both the cloud function and eventarc trigger in the test\n # Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n # Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n # google_cloudfunctions2_function below (Audit Log events have path pattern support)\n audit-log-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-auditlog-bucket\n location: us-central1\n uniformBucketLevelAccess: true\n # Permissions on the service account used by the function and Eventarc trigger\n invoking:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n event-receiving:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/eventarc.eventReceiver\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${invoking}\n artifactregistry-reader:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/artifactregistry.reader\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${[\"event-receiving\"]}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs12\n entryPoint: entryPoint\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${[\"source-bucket\"].name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.audit.log.v1.written\n retryPolicy: RETRY_POLICY_RETRY\n serviceAccountEmail: ${account.email}\n eventFilters:\n - attribute: serviceName\n value: storage.googleapis.com\n - attribute: methodName\n value: storage.objects.create\n - attribute: resourceName\n value: /projects/_/buckets/${[\"audit-log-bucket\"].name}/objects/*.txt\n operator: match-path-pattern\n options:\n dependson:\n - ${[\"event-receiving\"]}\n - ${[\"artifactregistry-reader\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Builder\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst logWriter = new gcp.projects.IAMMember(\"log_writer\", {\n project: account.project,\n role: \"roles/logging.logWriter\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst artifactRegistryWriter = new gcp.projects.IAMMember(\"artifact_registry_writer\", {\n project: account.project,\n role: \"roles/artifactregistry.writer\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst storageObjectAdmin = new gcp.projects.IAMMember(\"storage_object_admin\", {\n project: account.project,\n role: \"roles/storage.objectAdmin\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\n// builder permissions need to stablize before it can pull the source zip\nconst wait60s = new time.index.Sleep(\"wait_60s\", {createDuration: \"60s\"}, {\n dependsOn: [\n logWriter,\n artifactRegistryWriter,\n storageObjectAdmin,\n ],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-v2\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n serviceAccount: account.id,\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n}, {\n dependsOn: [wait60s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\nlog_writer = gcp.projects.IAMMember(\"log_writer\",\n project=account.project,\n role=\"roles/logging.logWriter\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nartifact_registry_writer = gcp.projects.IAMMember(\"artifact_registry_writer\",\n project=account.project,\n role=\"roles/artifactregistry.writer\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nstorage_object_admin = gcp.projects.IAMMember(\"storage_object_admin\",\n project=account.project,\n role=\"roles/storage.objectAdmin\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\n# builder permissions need to stablize before it can pull the source zip\nwait60s = time.index.Sleep(\"wait_60s\", create_duration=60s,\nopts = pulumi.ResourceOptions(depends_on=[\n log_writer,\n artifact_registry_writer,\n storage_object_admin,\n ]))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-v2\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entryPoint\": \"helloHttp\",\n \"source\": {\n \"storageSource\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"serviceAccount\": account.id,\n },\n service_config={\n \"maxInstanceCount\": 1,\n \"availableMemory\": \"256M\",\n \"timeoutSeconds\": 60,\n },\n opts = pulumi.ResourceOptions(depends_on=[wait60s]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var logWriter = new Gcp.Projects.IAMMember(\"log_writer\", new()\n {\n Project = account.Project,\n Role = \"roles/logging.logWriter\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var artifactRegistryWriter = new Gcp.Projects.IAMMember(\"artifact_registry_writer\", new()\n {\n Project = account.Project,\n Role = \"roles/artifactregistry.writer\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var storageObjectAdmin = new Gcp.Projects.IAMMember(\"storage_object_admin\", new()\n {\n Project = account.Project,\n Role = \"roles/storage.objectAdmin\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n // builder permissions need to stablize before it can pull the source zip\n var wait60s = new Time.Index.Sleep(\"wait_60s\", new()\n {\n CreateDuration = \"60s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n logWriter,\n artifactRegistryWriter,\n storageObjectAdmin,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-v2\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n ServiceAccount = account.Id,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait60s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\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 := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\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\tlogWriter, err := projects.NewIAMMember(ctx, \"log_writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/logging.logWriter\"),\n\t\t\tMember: account.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\tartifactRegistryWriter, err := projects.NewIAMMember(ctx, \"artifact_registry_writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.writer\"),\n\t\t\tMember: account.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\tstorageObjectAdmin, err := projects.NewIAMMember(ctx, \"storage_object_admin\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/storage.objectAdmin\"),\n\t\t\tMember: account.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\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// builder permissions need to stablize before it can pull the source zip\n\t\twait60s, err := time.NewSleep(ctx, \"wait_60s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"60s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tlogWriter,\n\t\t\tartifactRegistryWriter,\n\t\t\tstorageObjectAdmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-v2\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tServiceAccount: account.ID(),\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait60s,\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.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\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 final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var logWriter = new IAMMember(\"logWriter\", IAMMemberArgs.builder()\n .project(account.project())\n .role(\"roles/logging.logWriter\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var artifactRegistryWriter = new IAMMember(\"artifactRegistryWriter\", IAMMemberArgs.builder()\n .project(account.project())\n .role(\"roles/artifactregistry.writer\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var storageObjectAdmin = new IAMMember(\"storageObjectAdmin\", IAMMemberArgs.builder()\n .project(account.project())\n .role(\"roles/storage.objectAdmin\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n // builder permissions need to stablize before it can pull the source zip\n var wait60s = new Sleep(\"wait60s\", SleepArgs.builder()\n .createDuration(\"60s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n logWriter,\n artifactRegistryWriter,\n storageObjectAdmin)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-v2\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .serviceAccount(account.id())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait60s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n logWriter:\n type: gcp:projects:IAMMember\n name: log_writer\n properties:\n project: ${account.project}\n role: roles/logging.logWriter\n member: serviceAccount:${account.email}\n artifactRegistryWriter:\n type: gcp:projects:IAMMember\n name: artifact_registry_writer\n properties:\n project: ${account.project}\n role: roles/artifactregistry.writer\n member: serviceAccount:${account.email}\n storageObjectAdmin:\n type: gcp:projects:IAMMember\n name: storage_object_admin\n properties:\n project: ${account.project}\n role: roles/storage.objectAdmin\n member: serviceAccount:${account.email}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n # builder permissions need to stablize before it can pull the source zip\n wait60s:\n type: time:sleep\n name: wait_60s\n properties:\n createDuration: 60s\n options:\n dependson:\n - ${logWriter}\n - ${artifactRegistryWriter}\n - ${storageObjectAdmin}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-v2\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceAccount: ${account.id}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n options:\n dependson:\n - ${wait60s}\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Secret Env\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secretSecretVersion = new gcp.secretmanager.SecretVersion(\"secret\", {\n secret: secret.name,\n secretData: \"secret\",\n enabled: true,\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-secret\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n secretEnvironmentVariables: [{\n key: \"TEST\",\n projectId: project,\n secret: secret.secretId,\n version: \"latest\",\n }],\n },\n}, {\n dependsOn: [secretSecretVersion],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"userManaged\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_secret_version = gcp.secretmanager.SecretVersion(\"secret\",\n secret=secret.name,\n secret_data=\"secret\",\n enabled=True)\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-secret\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entryPoint\": \"helloHttp\",\n \"source\": {\n \"storageSource\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"maxInstanceCount\": 1,\n \"availableMemory\": \"256M\",\n \"timeoutSeconds\": 60,\n \"secretEnvironmentVariables\": [{\n \"key\": \"TEST\",\n \"projectId\": project,\n \"secret\": secret.secret_id,\n \"version\": \"latest\",\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[secret_secret_version]))\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 = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\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 secretSecretVersion = new Gcp.SecretManager.SecretVersion(\"secret\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret\",\n Enabled = true,\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-secret\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n SecretEnvironmentVariables = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigSecretEnvironmentVariableArgs\n {\n Key = \"TEST\",\n ProjectId = project,\n Secret = secret.SecretId,\n Version = \"latest\",\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secretSecretVersion,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\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\tsecretSecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tSecretEnvironmentVariables: cloudfunctionsv2.FunctionServiceConfigSecretEnvironmentVariableArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionServiceConfigSecretEnvironmentVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"TEST\"),\n\t\t\t\t\t\tProjectId: pulumi.String(project),\n\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecretSecretVersion,\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.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.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\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 final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\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 secretSecretVersion = new SecretVersion(\"secretSecretVersion\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret\")\n .enabled(true)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-secret\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .secretEnvironmentVariables(FunctionServiceConfigSecretEnvironmentVariableArgs.builder()\n .key(\"TEST\")\n .projectId(project)\n .secret(secret.secretId())\n .version(\"latest\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secretSecretVersion)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-secret\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n secretEnvironmentVariables:\n - key: TEST\n projectId: ${project}\n secret: ${secret.secretId}\n version: latest\n options:\n dependson:\n - ${secretSecretVersion}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secretSecretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret\n properties:\n secret: ${secret.name}\n secretData: secret\n enabled: true\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Secret Volume\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secretSecretVersion = new gcp.secretmanager.SecretVersion(\"secret\", {\n secret: secret.name,\n secretData: \"secret\",\n enabled: true,\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-secret\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n secretVolumes: [{\n mountPath: \"/etc/secrets\",\n projectId: project,\n secret: secret.secretId,\n }],\n },\n}, {\n dependsOn: [secretSecretVersion],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"userManaged\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_secret_version = gcp.secretmanager.SecretVersion(\"secret\",\n secret=secret.name,\n secret_data=\"secret\",\n enabled=True)\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-secret\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entryPoint\": \"helloHttp\",\n \"source\": {\n \"storageSource\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"maxInstanceCount\": 1,\n \"availableMemory\": \"256M\",\n \"timeoutSeconds\": 60,\n \"secretVolumes\": [{\n \"mountPath\": \"/etc/secrets\",\n \"projectId\": project,\n \"secret\": secret.secret_id,\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[secret_secret_version]))\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 = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\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 secretSecretVersion = new Gcp.SecretManager.SecretVersion(\"secret\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret\",\n Enabled = true,\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-secret\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n SecretVolumes = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigSecretVolumeArgs\n {\n MountPath = \"/etc/secrets\",\n ProjectId = project,\n Secret = secret.SecretId,\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secretSecretVersion,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\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\tsecretSecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tSecretVolumes: cloudfunctionsv2.FunctionServiceConfigSecretVolumeArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionServiceConfigSecretVolumeArgs{\n\t\t\t\t\t\tMountPath: pulumi.String(\"/etc/secrets\"),\n\t\t\t\t\t\tProjectId: pulumi.String(project),\n\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecretSecretVersion,\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.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.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\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 final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\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 secretSecretVersion = new SecretVersion(\"secretSecretVersion\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret\")\n .enabled(true)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-secret\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .secretVolumes(FunctionServiceConfigSecretVolumeArgs.builder()\n .mountPath(\"/etc/secrets\")\n .projectId(project)\n .secret(secret.secretId())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secretSecretVersion)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-secret\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n secretVolumes:\n - mountPath: /etc/secrets\n projectId: ${project}\n secret: ${secret.secretId}\n options:\n dependson:\n - ${secretSecretVersion}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secretSecretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret\n properties:\n secret: ${secret.name}\n secretData: secret\n enabled: true\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Private Workerpool\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst pool = new gcp.cloudbuild.WorkerPool(\"pool\", {\n name: \"workerpool\",\n location: \"us-central1\",\n workerConfig: {\n diskSizeGb: 100,\n machineType: \"e2-standard-8\",\n noExternalIp: false,\n },\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-workerpool\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n workerPool: pool.id,\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\npool = gcp.cloudbuild.WorkerPool(\"pool\",\n name=\"workerpool\",\n location=\"us-central1\",\n worker_config={\n \"diskSizeGb\": 100,\n \"machineType\": \"e2-standard-8\",\n \"noExternalIp\": False,\n })\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-workerpool\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entryPoint\": \"helloHttp\",\n \"source\": {\n \"storageSource\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"workerPool\": pool.id,\n },\n service_config={\n \"maxInstanceCount\": 1,\n \"availableMemory\": \"256M\",\n \"timeoutSeconds\": 60,\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 = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var pool = new Gcp.CloudBuild.WorkerPool(\"pool\", new()\n {\n Name = \"workerpool\",\n Location = \"us-central1\",\n WorkerConfig = new Gcp.CloudBuild.Inputs.WorkerPoolWorkerConfigArgs\n {\n DiskSizeGb = 100,\n MachineType = \"e2-standard-8\",\n NoExternalIp = false,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-workerpool\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n WorkerPool = pool.Id,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpool, err := cloudbuild.NewWorkerPool(ctx, \"pool\", \u0026cloudbuild.WorkerPoolArgs{\n\t\t\tName: pulumi.String(\"workerpool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tWorkerConfig: \u0026cloudbuild.WorkerPoolWorkerConfigArgs{\n\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\tMachineType: pulumi.String(\"e2-standard-8\"),\n\t\t\t\tNoExternalIp: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-workerpool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWorkerPool: pool.ID(),\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\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.cloudbuild.WorkerPool;\nimport com.pulumi.gcp.cloudbuild.WorkerPoolArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.WorkerPoolWorkerConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\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 final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var pool = new WorkerPool(\"pool\", WorkerPoolArgs.builder()\n .name(\"workerpool\")\n .location(\"us-central1\")\n .workerConfig(WorkerPoolWorkerConfigArgs.builder()\n .diskSizeGb(100)\n .machineType(\"e2-standard-8\")\n .noExternalIp(false)\n .build())\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-workerpool\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .workerPool(pool.id())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n pool:\n type: gcp:cloudbuild:WorkerPool\n properties:\n name: workerpool\n location: us-central1\n workerConfig:\n diskSizeGb: 100\n machineType: e2-standard-8\n noExternalIp: false\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-workerpool\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n workerPool: ${pool.id}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Cmek Docs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst projectGetProject = gcp.organizations.getProject({});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst eaSa = new gcp.projects.ServiceIdentity(\"ea_sa\", {\n project: projectGetProject.then(projectGetProject =\u003e projectGetProject.projectId),\n service: \"eventarc.googleapis.com\",\n});\nconst unencoded_ar_repo = new gcp.artifactregistry.Repository(\"unencoded-ar-repo\", {\n repositoryId: \"ar-repo\",\n location: \"us-central1\",\n format: \"DOCKER\",\n});\nconst gcfCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\", {\n cryptoKeyId: \"cmek-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gs-project-accounts.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@serverless-robot-prod.iam.gserviceaccount.com`),\n pulumi.interpolate`serviceAccount:${eaSa.email}`,\n ],\n}, {\n dependsOn: [eaSa],\n});\nconst encoded_ar_repo = new gcp.artifactregistry.Repository(\"encoded-ar-repo\", {\n location: \"us-central1\",\n repositoryId: \"cmek-repo\",\n format: \"DOCKER\",\n kmsKeyName: \"cmek-key\",\n}, {\n dependsOn: [gcfCmekKeyuser],\n});\nconst binding = new gcp.artifactregistry.RepositoryIamBinding(\"binding\", {\n location: encoded_ar_repo.location,\n repository: encoded_ar_repo.name,\n role: \"roles/artifactregistry.admin\",\n members: [projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com`)],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-cmek\",\n location: \"us-central1\",\n description: \"CMEK function\",\n kmsKeyName: \"cmek-key\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n dockerRepository: encoded_ar_repo.id,\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n}, {\n dependsOn: [gcfCmekKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nproject_get_project = gcp.organizations.get_project()\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nea_sa = gcp.projects.ServiceIdentity(\"ea_sa\",\n project=project_get_project.project_id,\n service=\"eventarc.googleapis.com\")\nunencoded_ar_repo = gcp.artifactregistry.Repository(\"unencoded-ar-repo\",\n repository_id=\"ar-repo\",\n location=\"us-central1\",\n format=\"DOCKER\")\ngcf_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\",\n crypto_key_id=\"cmek-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[\n f\"serviceAccount:service-{project_get_project.number}@gcf-admin-robot.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@gs-project-accounts.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@serverless-robot-prod.iam.gserviceaccount.com\",\n ea_sa.email.apply(lambda email: f\"serviceAccount:{email}\"),\n ],\n opts = pulumi.ResourceOptions(depends_on=[ea_sa]))\nencoded_ar_repo = gcp.artifactregistry.Repository(\"encoded-ar-repo\",\n location=\"us-central1\",\n repository_id=\"cmek-repo\",\n format=\"DOCKER\",\n kms_key_name=\"cmek-key\",\n opts = pulumi.ResourceOptions(depends_on=[gcf_cmek_keyuser]))\nbinding = gcp.artifactregistry.RepositoryIamBinding(\"binding\",\n location=encoded_ar_repo.location,\n repository=encoded_ar_repo.name,\n role=\"roles/artifactregistry.admin\",\n members=[f\"serviceAccount:service-{project_get_project.number}@gcf-admin-robot.iam.gserviceaccount.com\"])\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-cmek\",\n location=\"us-central1\",\n description=\"CMEK function\",\n kms_key_name=\"cmek-key\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entryPoint\": \"helloHttp\",\n \"dockerRepository\": encoded_ar_repo.id,\n \"source\": {\n \"storageSource\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"maxInstanceCount\": 1,\n \"availableMemory\": \"256M\",\n \"timeoutSeconds\": 60,\n },\n opts = pulumi.ResourceOptions(depends_on=[gcf_cmek_keyuser]))\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 = \"my-project-name\";\n\n var projectGetProject = Gcp.Organizations.GetProject.Invoke();\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var eaSa = new Gcp.Projects.ServiceIdentity(\"ea_sa\", new()\n {\n Project = projectGetProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Service = \"eventarc.googleapis.com\",\n });\n\n var unencoded_ar_repo = new Gcp.ArtifactRegistry.Repository(\"unencoded-ar-repo\", new()\n {\n RepositoryId = \"ar-repo\",\n Location = \"us-central1\",\n Format = \"DOCKER\",\n });\n\n var gcfCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\", new()\n {\n CryptoKeyId = \"cmek-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcf-admin-robot.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gs-project-accounts.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@serverless-robot-prod.iam.gserviceaccount.com\",\n eaSa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n eaSa,\n },\n });\n\n var encoded_ar_repo = new Gcp.ArtifactRegistry.Repository(\"encoded-ar-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"cmek-repo\",\n Format = \"DOCKER\",\n KmsKeyName = \"cmek-key\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n gcfCmekKeyuser,\n },\n });\n\n var binding = new Gcp.ArtifactRegistry.RepositoryIamBinding(\"binding\", new()\n {\n Location = encoded_ar_repo.Location,\n Repository = encoded_ar_repo.Name,\n Role = \"roles/artifactregistry.admin\",\n Members = new[]\n {\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcf-admin-robot.iam.gserviceaccount.com\",\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-cmek\",\n Location = \"us-central1\",\n Description = \"CMEK function\",\n KmsKeyName = \"cmek-key\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n DockerRepository = encoded_ar_repo.Id,\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n gcfCmekKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\tprojectGetProject, err := organizations.LookupProject(ctx, nil, nil)\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\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teaSa, err := projects.NewServiceIdentity(ctx, \"ea_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.String(projectGetProject.ProjectId),\n\t\t\tService: pulumi.String(\"eventarc.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"unencoded-ar-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tRepositoryId: pulumi.String(\"ar-repo\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgcfCmekKeyuser, err := kms.NewCryptoKeyIAMBinding(ctx, \"gcf_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"cmek-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gs-project-accounts.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@serverless-robot-prod.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t\teaSa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\teaSa,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"encoded-ar-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"cmek-repo\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tKmsKeyName: pulumi.String(\"cmek-key\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tgcfCmekKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepositoryIamBinding(ctx, \"binding\", \u0026artifactregistry.RepositoryIamBindingArgs{\n\t\t\tLocation: encoded_ar_repo.Location,\n\t\t\tRepository: encoded_ar_repo.Name,\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-cmek\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"CMEK function\"),\n\t\t\tKmsKeyName: pulumi.String(\"cmek-key\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tDockerRepository: encoded_ar_repo.ID(),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tgcfCmekKeyuser,\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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.artifactregistry.RepositoryIamBinding;\nimport com.pulumi.gcp.artifactregistry.RepositoryIamBindingArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\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 final var project = \"my-project-name\";\n\n final var projectGetProject = OrganizationsFunctions.getProject();\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var eaSa = new ServiceIdentity(\"eaSa\", ServiceIdentityArgs.builder()\n .project(projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .service(\"eventarc.googleapis.com\")\n .build());\n\n var unencoded_ar_repo = new Repository(\"unencoded-ar-repo\", RepositoryArgs.builder()\n .repositoryId(\"ar-repo\")\n .location(\"us-central1\")\n .format(\"DOCKER\")\n .build());\n\n var gcfCmekKeyuser = new CryptoKeyIAMBinding(\"gcfCmekKeyuser\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(\"cmek-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members( \n String.format(\"serviceAccount:service-%s@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@gs-project-accounts.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@serverless-robot-prod.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n eaSa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(eaSa)\n .build());\n\n var encoded_ar_repo = new Repository(\"encoded-ar-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"cmek-repo\")\n .format(\"DOCKER\")\n .kmsKeyName(\"cmek-key\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(gcfCmekKeyuser)\n .build());\n\n var binding = new RepositoryIamBinding(\"binding\", RepositoryIamBindingArgs.builder()\n .location(encoded_ar_repo.location())\n .repository(encoded_ar_repo.name())\n .role(\"roles/artifactregistry.admin\")\n .members(String.format(\"serviceAccount:service-%s@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-cmek\")\n .location(\"us-central1\")\n .description(\"CMEK function\")\n .kmsKeyName(\"cmek-key\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .dockerRepository(encoded_ar_repo.id())\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(gcfCmekKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n eaSa:\n type: gcp:projects:ServiceIdentity\n name: ea_sa\n properties:\n project: ${projectGetProject.projectId}\n service: eventarc.googleapis.com\n unencoded-ar-repo:\n type: gcp:artifactregistry:Repository\n properties:\n repositoryId: ar-repo\n location: us-central1\n format: DOCKER\n binding:\n type: gcp:artifactregistry:RepositoryIamBinding\n properties:\n location: ${[\"encoded-ar-repo\"].location}\n repository: ${[\"encoded-ar-repo\"].name}\n role: roles/artifactregistry.admin\n members:\n - serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com\n gcfCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: gcf_cmek_keyuser\n properties:\n cryptoKeyId: cmek-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@gs-project-accounts.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@serverless-robot-prod.iam.gserviceaccount.com\n - serviceAccount:${eaSa.email}\n options:\n dependson:\n - ${eaSa}\n encoded-ar-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: cmek-repo\n format: DOCKER\n kmsKeyName: cmek-key\n options:\n dependson:\n - ${gcfCmekKeyuser}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-cmek\n location: us-central1\n description: CMEK function\n kmsKeyName: cmek-key\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n dockerRepository: ${[\"encoded-ar-repo\"].id}\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n options:\n dependson:\n - ${gcfCmekKeyuser}\nvariables:\n project: my-project-name\n projectGetProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Abiu\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"europe-west6\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n automaticUpdatePolicy: {},\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"europe-west6\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entryPoint\": \"helloPubSub\",\n \"environmentVariables\": {\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n \"source\": {\n \"storageSource\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"automaticUpdatePolicy\": {},\n },\n service_config={\n \"maxInstanceCount\": 3,\n \"minInstanceCount\": 1,\n \"availableMemory\": \"4Gi\",\n \"timeoutSeconds\": 60,\n \"maxInstanceRequestConcurrency\": 80,\n \"availableCpu\": \"4\",\n \"environmentVariables\": {\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n },\n \"ingressSettings\": \"ALLOW_INTERNAL_ONLY\",\n \"allTrafficOnLatestRevision\": True,\n \"serviceAccountEmail\": account.email,\n },\n event_trigger={\n \"triggerRegion\": \"us-central1\",\n \"eventType\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n \"pubsubTopic\": topic.id,\n \"retryPolicy\": \"RETRY_POLICY_RETRY\",\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 = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"europe-west6\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n AutomaticUpdatePolicy = null,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\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\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\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\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"europe-west6\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAutomaticUpdatePolicy: nil,\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\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.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigAutomaticUpdatePolicyArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\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 final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"europe-west6\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .automaticUpdatePolicy()\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: europe-west6\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n automaticUpdatePolicy: {}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Abiu On Deploy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"europe-west6\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n onDeployUpdatePolicy: {},\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"europe-west6\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entryPoint\": \"helloPubSub\",\n \"environmentVariables\": {\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n \"source\": {\n \"storageSource\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"onDeployUpdatePolicy\": {},\n },\n service_config={\n \"maxInstanceCount\": 3,\n \"minInstanceCount\": 1,\n \"availableMemory\": \"4Gi\",\n \"timeoutSeconds\": 60,\n \"maxInstanceRequestConcurrency\": 80,\n \"availableCpu\": \"4\",\n \"environmentVariables\": {\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n },\n \"ingressSettings\": \"ALLOW_INTERNAL_ONLY\",\n \"allTrafficOnLatestRevision\": True,\n \"serviceAccountEmail\": account.email,\n },\n event_trigger={\n \"triggerRegion\": \"us-central1\",\n \"eventType\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n \"pubsubTopic\": topic.id,\n \"retryPolicy\": \"RETRY_POLICY_RETRY\",\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 = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"europe-west6\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n OnDeployUpdatePolicy = null,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\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\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\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\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"europe-west6\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOnDeployUpdatePolicy: nil,\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\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.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigOnDeployUpdatePolicyArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\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 final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"europe-west6\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .onDeployUpdatePolicy()\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: europe-west6\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n onDeployUpdatePolicy: {}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nfunction can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/functions/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, function can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default projects/{{project}}/locations/{{location}}/functions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default {{location}}/{{name}}\n```\n\n", + "description": "A Cloud Function that contains user computation executed in response to an event.\n\n\nTo get more information about function, see:\n\n* [API documentation](https://cloud.google.com/functions/docs/reference/rest/v2beta/projects.locations.functions)\n\n## Example Usage\n\n### Cloudfunctions2 Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-v2\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-v2\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\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 = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-v2\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-v2\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\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.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\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 final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-v2\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-v2\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloPubSub\",\n \"environment_variables\": {\n \"buil_d__confi_g__test\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"4Gi\",\n \"timeout_seconds\": 60,\n \"max_instance_request_concurrency\": 80,\n \"available_cpu\": \"4\",\n \"environment_variables\": {\n \"servic_e__confi_g__test\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n \"pubsub_topic\": topic.id,\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\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 = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\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\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\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\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\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.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\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 final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Scheduler Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n serviceAccountEmail: account.email,\n },\n});\nconst invoker = new gcp.cloudfunctionsv2.FunctionIamMember(\"invoker\", {\n project: _function.project,\n location: _function.location,\n cloudFunction: _function.name,\n role: \"roles/cloudfunctions.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst cloudRunInvoker = new gcp.cloudrun.IamMember(\"cloud_run_invoker\", {\n project: _function.project,\n location: _function.location,\n service: _function.name,\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst invokeCloudFunction = new gcp.cloudscheduler.Job(\"invoke_cloud_function\", {\n name: \"invoke-gcf-function\",\n description: \"Schedule the HTTPS trigger for cloud function\",\n schedule: \"0 0 * * *\",\n project: _function.project,\n region: _function.location,\n httpTarget: {\n uri: _function.serviceConfig.apply(serviceConfig =\u003e serviceConfig?.uri),\n httpMethod: \"POST\",\n oidcToken: {\n audience: _function.serviceConfig.apply(serviceConfig =\u003e `${serviceConfig?.uri}/`),\n serviceAccountEmail: account.email,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"min_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"service_account_email\": account.email,\n })\ninvoker = gcp.cloudfunctionsv2.FunctionIamMember(\"invoker\",\n project=function.project,\n location=function.location,\n cloud_function=function.name,\n role=\"roles/cloudfunctions.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ncloud_run_invoker = gcp.cloudrun.IamMember(\"cloud_run_invoker\",\n project=function.project,\n location=function.location,\n service=function.name,\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ninvoke_cloud_function = gcp.cloudscheduler.Job(\"invoke_cloud_function\",\n name=\"invoke-gcf-function\",\n description=\"Schedule the HTTPS trigger for cloud function\",\n schedule=\"0 0 * * *\",\n project=function.project,\n region=function.location,\n http_target={\n \"uri\": function.service_config.uri,\n \"http_method\": \"POST\",\n \"oidc_token\": {\n \"audience\": function.service_config.apply(lambda service_config: f\"{service_config.uri}/\"),\n \"service_account_email\": account.email,\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 project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n ServiceAccountEmail = account.Email,\n },\n });\n\n var invoker = new Gcp.CloudFunctionsV2.FunctionIamMember(\"invoker\", new()\n {\n Project = function.Project,\n Location = function.Location,\n CloudFunction = function.Name,\n Role = \"roles/cloudfunctions.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var cloudRunInvoker = new Gcp.CloudRun.IamMember(\"cloud_run_invoker\", new()\n {\n Project = function.Project,\n Location = function.Location,\n Service = function.Name,\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var invokeCloudFunction = new Gcp.CloudScheduler.Job(\"invoke_cloud_function\", new()\n {\n Name = \"invoke-gcf-function\",\n Description = \"Schedule the HTTPS trigger for cloud function\",\n Schedule = \"0 0 * * *\",\n Project = function.Project,\n Region = function.Location,\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n Uri = function.ServiceConfig.Apply(serviceConfig =\u003e serviceConfig?.Uri),\n HttpMethod = \"POST\",\n OidcToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOidcTokenArgs\n {\n Audience = function.ServiceConfig.Apply(serviceConfig =\u003e $\"{serviceConfig?.Uri}/\"),\n ServiceAccountEmail = account.Email,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\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\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunction, err := cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunctionIamMember(ctx, \"invoker\", \u0026cloudfunctionsv2.FunctionIamMemberArgs{\n\t\t\tProject: function.Project,\n\t\t\tLocation: function.Location,\n\t\t\tCloudFunction: function.Name,\n\t\t\tRole: pulumi.String(\"roles/cloudfunctions.invoker\"),\n\t\t\tMember: account.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 = cloudrun.NewIamMember(ctx, \"cloud_run_invoker\", \u0026cloudrun.IamMemberArgs{\n\t\t\tProject: function.Project,\n\t\t\tLocation: function.Location,\n\t\t\tService: function.Name,\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.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 = cloudscheduler.NewJob(ctx, \"invoke_cloud_function\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"invoke-gcf-function\"),\n\t\t\tDescription: pulumi.String(\"Schedule the HTTPS trigger for cloud function\"),\n\t\t\tSchedule: pulumi.String(\"0 0 * * *\"),\n\t\t\tProject: function.Project,\n\t\t\tRegion: function.Location,\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tUri: function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (*string, error) {\n\t\t\t\t\treturn \u0026serviceConfig.Uri, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tOidcToken: \u0026cloudscheduler.JobHttpTargetOidcTokenArgs{\n\t\t\t\t\tAudience: function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/\", serviceConfig.Uri), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tServiceAccountEmail: account.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\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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionIamMember;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionIamMemberArgs;\nimport com.pulumi.gcp.cloudrun.IamMember;\nimport com.pulumi.gcp.cloudrun.IamMemberArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOidcTokenArgs;\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 final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .serviceAccountEmail(account.email())\n .build())\n .build());\n\n var invoker = new FunctionIamMember(\"invoker\", FunctionIamMemberArgs.builder()\n .project(function.project())\n .location(function.location())\n .cloudFunction(function.name())\n .role(\"roles/cloudfunctions.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var cloudRunInvoker = new IamMember(\"cloudRunInvoker\", IamMemberArgs.builder()\n .project(function.project())\n .location(function.location())\n .service(function.name())\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var invokeCloudFunction = new Job(\"invokeCloudFunction\", JobArgs.builder()\n .name(\"invoke-gcf-function\")\n .description(\"Schedule the HTTPS trigger for cloud function\")\n .schedule(\"0 0 * * *\")\n .project(function.project())\n .region(function.location())\n .httpTarget(JobHttpTargetArgs.builder()\n .uri(function.serviceConfig().applyValue(serviceConfig -\u003e serviceConfig.uri()))\n .httpMethod(\"POST\")\n .oidcToken(JobHttpTargetOidcTokenArgs.builder()\n .audience(function.serviceConfig().applyValue(serviceConfig -\u003e String.format(\"%s/\", serviceConfig.uri())))\n .serviceAccountEmail(account.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n serviceAccountEmail: ${account.email}\n invoker:\n type: gcp:cloudfunctionsv2:FunctionIamMember\n properties:\n project: ${function.project}\n location: ${function.location}\n cloudFunction: ${function.name}\n role: roles/cloudfunctions.invoker\n member: serviceAccount:${account.email}\n cloudRunInvoker:\n type: gcp:cloudrun:IamMember\n name: cloud_run_invoker\n properties:\n project: ${function.project}\n location: ${function.location}\n service: ${function.name}\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n invokeCloudFunction:\n type: gcp:cloudscheduler:Job\n name: invoke_cloud_function\n properties:\n name: invoke-gcf-function\n description: Schedule the HTTPS trigger for cloud function\n schedule: 0 0 * * *\n project: ${function.project}\n region: ${function.location}\n httpTarget:\n uri: ${function.serviceConfig.uri}\n httpMethod: POST\n oidcToken:\n audience: ${function.serviceConfig.uri}/\n serviceAccountEmail: ${account.email}\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Gcs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source_bucket = new gcp.storage.Bucket(\"source-bucket\", {\n name: \"gcf-source-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: source_bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst trigger_bucket = new gcp.storage.Bucket(\"trigger-bucket\", {\n name: \"gcf-trigger-bucket\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\n// To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n// (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\nconst gcs_pubsub_publishing = new gcp.projects.IAMMember(\"gcs-pubsub-publishing\", {\n project: \"my-project-name\",\n role: \"roles/pubsub.publisher\",\n member: gcsAccount.then(gcsAccount =\u003e `serviceAccount:${gcsAccount.emailAddress}`),\n});\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n});\n// Permissions on the service account used by the function and Eventarc trigger\nconst invoking = new gcp.projects.IAMMember(\"invoking\", {\n project: \"my-project-name\",\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [gcs_pubsub_publishing],\n});\nconst event_receiving = new gcp.projects.IAMMember(\"event-receiving\", {\n project: \"my-project-name\",\n role: \"roles/eventarc.eventReceiver\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [invoking],\n});\nconst artifactregistry_reader = new gcp.projects.IAMMember(\"artifactregistry-reader\", {\n project: \"my-project-name\",\n role: \"roles/artifactregistry.reader\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [event_receiving],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs12\",\n entryPoint: \"entryPoint\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: source_bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n eventType: \"google.cloud.storage.object.v1.finalized\",\n retryPolicy: \"RETRY_POLICY_RETRY\",\n serviceAccountEmail: account.email,\n eventFilters: [{\n attribute: \"bucket\",\n value: trigger_bucket.name,\n }],\n },\n}, {\n dependsOn: [\n event_receiving,\n artifactregistry_reader,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource_bucket = gcp.storage.Bucket(\"source-bucket\",\n name=\"gcf-source-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=source_bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\ntrigger_bucket = gcp.storage.Bucket(\"trigger-bucket\",\n name=\"gcf-trigger-bucket\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\ngcs_account = gcp.storage.get_project_service_account()\n# To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n# (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\ngcs_pubsub_publishing = gcp.projects.IAMMember(\"gcs-pubsub-publishing\",\n project=\"my-project-name\",\n role=\"roles/pubsub.publisher\",\n member=f\"serviceAccount:{gcs_account.email_address}\")\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n# Permissions on the service account used by the function and Eventarc trigger\ninvoking = gcp.projects.IAMMember(\"invoking\",\n project=\"my-project-name\",\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[gcs_pubsub_publishing]))\nevent_receiving = gcp.projects.IAMMember(\"event-receiving\",\n project=\"my-project-name\",\n role=\"roles/eventarc.eventReceiver\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[invoking]))\nartifactregistry_reader = gcp.projects.IAMMember(\"artifactregistry-reader\",\n project=\"my-project-name\",\n role=\"roles/artifactregistry.reader\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[event_receiving]))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs12\",\n \"entry_point\": \"entryPoint\",\n \"environment_variables\": {\n \"buil_d__confi_g__test\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": source_bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"environment_variables\": {\n \"servic_e__confi_g__test\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"event_type\": \"google.cloud.storage.object.v1.finalized\",\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n \"service_account_email\": account.email,\n \"event_filters\": [{\n \"attribute\": \"bucket\",\n \"value\": trigger_bucket.name,\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[\n event_receiving,\n artifactregistry_reader,\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_bucket = new Gcp.Storage.Bucket(\"source-bucket\", new()\n {\n Name = \"gcf-source-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = source_bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var trigger_bucket = new Gcp.Storage.Bucket(\"trigger-bucket\", new()\n {\n Name = \"gcf-trigger-bucket\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n var gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n // To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n // (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n var gcs_pubsub_publishing = new Gcp.Projects.IAMMember(\"gcs-pubsub-publishing\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/pubsub.publisher\",\n Member = $\"serviceAccount:{gcsAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.EmailAddress)}\",\n });\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n });\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new Gcp.Projects.IAMMember(\"invoking\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n gcs_pubsub_publishing,\n },\n });\n\n var event_receiving = new Gcp.Projects.IAMMember(\"event-receiving\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/eventarc.eventReceiver\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n invoking,\n },\n });\n\n var artifactregistry_reader = new Gcp.Projects.IAMMember(\"artifactregistry-reader\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/artifactregistry.reader\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs12\",\n EntryPoint = \"entryPoint\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = source_bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n EventType = \"google.cloud.storage.object.v1.finalized\",\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n ServiceAccountEmail = account.Email,\n EventFilters = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"bucket\",\n Value = trigger_bucket.Name,\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n artifactregistry_reader,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := storage.NewBucket(ctx, \"source-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-source-bucket\"),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: source_bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucket(ctx, \"trigger-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-trigger-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tgcsAccount, err := storage.GetProjectServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n\t\t// (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n\t\t_, err = projects.NewIAMMember(ctx, \"gcs-pubsub-publishing\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v\", gcsAccount.EmailAddress)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Permissions on the service account used by the function and Eventarc trigger\n\t\tinvoking, err := projects.NewIAMMember(ctx, \"invoking\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tgcs_pubsub_publishing,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"event-receiving\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/eventarc.eventReceiver\"),\n\t\t\tMember: account.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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tinvoking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"artifactregistry-reader\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.reader\"),\n\t\t\tMember: account.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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs12\"),\n\t\t\t\tEntryPoint: pulumi.String(\"entryPoint\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: source_bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tEventType: pulumi.String(\"google.cloud.storage.object.v1.finalized\"),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\tEventFilters: cloudfunctionsv2.FunctionEventTriggerEventFilterArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"bucket\"),\n\t\t\t\t\t\tValue: trigger_bucket.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t\tartifactregistry_reader,\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.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.resources.CustomResourceOptions;\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 source_bucket = new Bucket(\"source-bucket\", BucketArgs.builder()\n .name(\"gcf-source-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(source_bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var trigger_bucket = new Bucket(\"trigger-bucket\", BucketArgs.builder()\n .name(\"gcf-trigger-bucket\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n final var gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n // To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n // (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n var gcs_pubsub_publishing = new IAMMember(\"gcs-pubsub-publishing\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/pubsub.publisher\")\n .member(String.format(\"serviceAccount:%s\", gcsAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.emailAddress())))\n .build());\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n .build());\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new IAMMember(\"invoking\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(gcs_pubsub_publishing)\n .build());\n\n var event_receiving = new IAMMember(\"event-receiving\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/eventarc.eventReceiver\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(invoking)\n .build());\n\n var artifactregistry_reader = new IAMMember(\"artifactregistry-reader\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/artifactregistry.reader\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(event_receiving)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs12\")\n .entryPoint(\"entryPoint\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(source_bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .eventType(\"google.cloud.storage.object.v1.finalized\")\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .serviceAccountEmail(account.email())\n .eventFilters(FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"bucket\")\n .value(trigger_bucket.name())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n event_receiving,\n artifactregistry_reader)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-source-bucket\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${[\"source-bucket\"].name}\n source:\n fn::FileAsset: function-source.zip\n trigger-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-trigger-bucket\n location: us-central1\n uniformBucketLevelAccess: true\n # To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n # (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n gcs-pubsub-publishing:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/pubsub.publisher\n member: serviceAccount:${gcsAccount.emailAddress}\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account - used for both the cloud function and eventarc trigger in the test\n # Permissions on the service account used by the function and Eventarc trigger\n invoking:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${[\"gcs-pubsub-publishing\"]}\n event-receiving:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/eventarc.eventReceiver\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${invoking}\n artifactregistry-reader:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/artifactregistry.reader\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${[\"event-receiving\"]}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs12\n entryPoint: entryPoint\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${[\"source-bucket\"].name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n eventType: google.cloud.storage.object.v1.finalized\n retryPolicy: RETRY_POLICY_RETRY\n serviceAccountEmail: ${account.email}\n eventFilters:\n - attribute: bucket\n value: ${[\"trigger-bucket\"].name}\n options:\n dependson:\n - ${[\"event-receiving\"]}\n - ${[\"artifactregistry-reader\"]}\nvariables:\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Auditlogs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example follows the examples shown in this Google Cloud Community blog post\n// https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n// and the docs:\n// https://cloud.google.com/eventarc/docs/path-patterns\nconst source_bucket = new gcp.storage.Bucket(\"source-bucket\", {\n name: \"gcf-source-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: source_bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n});\n// Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n// Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n// google_cloudfunctions2_function below (Audit Log events have path pattern support)\nconst audit_log_bucket = new gcp.storage.Bucket(\"audit-log-bucket\", {\n name: \"gcf-auditlog-bucket\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\n// Permissions on the service account used by the function and Eventarc trigger\nconst invoking = new gcp.projects.IAMMember(\"invoking\", {\n project: \"my-project-name\",\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst event_receiving = new gcp.projects.IAMMember(\"event-receiving\", {\n project: \"my-project-name\",\n role: \"roles/eventarc.eventReceiver\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [invoking],\n});\nconst artifactregistry_reader = new gcp.projects.IAMMember(\"artifactregistry-reader\", {\n project: \"my-project-name\",\n role: \"roles/artifactregistry.reader\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [event_receiving],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs12\",\n entryPoint: \"entryPoint\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: source_bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.audit.log.v1.written\",\n retryPolicy: \"RETRY_POLICY_RETRY\",\n serviceAccountEmail: account.email,\n eventFilters: [\n {\n attribute: \"serviceName\",\n value: \"storage.googleapis.com\",\n },\n {\n attribute: \"methodName\",\n value: \"storage.objects.create\",\n },\n {\n attribute: \"resourceName\",\n value: pulumi.interpolate`/projects/_/buckets/${audit_log_bucket.name}/objects/*.txt`,\n operator: \"match-path-pattern\",\n },\n ],\n },\n}, {\n dependsOn: [\n event_receiving,\n artifactregistry_reader,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example follows the examples shown in this Google Cloud Community blog post\n# https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n# and the docs:\n# https://cloud.google.com/eventarc/docs/path-patterns\nsource_bucket = gcp.storage.Bucket(\"source-bucket\",\n name=\"gcf-source-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=source_bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n# Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n# Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n# google_cloudfunctions2_function below (Audit Log events have path pattern support)\naudit_log_bucket = gcp.storage.Bucket(\"audit-log-bucket\",\n name=\"gcf-auditlog-bucket\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\n# Permissions on the service account used by the function and Eventarc trigger\ninvoking = gcp.projects.IAMMember(\"invoking\",\n project=\"my-project-name\",\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nevent_receiving = gcp.projects.IAMMember(\"event-receiving\",\n project=\"my-project-name\",\n role=\"roles/eventarc.eventReceiver\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[invoking]))\nartifactregistry_reader = gcp.projects.IAMMember(\"artifactregistry-reader\",\n project=\"my-project-name\",\n role=\"roles/artifactregistry.reader\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[event_receiving]))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs12\",\n \"entry_point\": \"entryPoint\",\n \"environment_variables\": {\n \"buil_d__confi_g__test\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": source_bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"environment_variables\": {\n \"servic_e__confi_g__test\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.audit.log.v1.written\",\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n \"service_account_email\": account.email,\n \"event_filters\": [\n {\n \"attribute\": \"serviceName\",\n \"value\": \"storage.googleapis.com\",\n },\n {\n \"attribute\": \"methodName\",\n \"value\": \"storage.objects.create\",\n },\n {\n \"attribute\": \"resourceName\",\n \"value\": audit_log_bucket.name.apply(lambda name: f\"/projects/_/buckets/{name}/objects/*.txt\"),\n \"operator\": \"match-path-pattern\",\n },\n ],\n },\n opts = pulumi.ResourceOptions(depends_on=[\n event_receiving,\n artifactregistry_reader,\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 // This example follows the examples shown in this Google Cloud Community blog post\n // https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n // and the docs:\n // https://cloud.google.com/eventarc/docs/path-patterns\n var source_bucket = new Gcp.Storage.Bucket(\"source-bucket\", new()\n {\n Name = \"gcf-source-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = source_bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n });\n\n // Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n // Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n // google_cloudfunctions2_function below (Audit Log events have path pattern support)\n var audit_log_bucket = new Gcp.Storage.Bucket(\"audit-log-bucket\", new()\n {\n Name = \"gcf-auditlog-bucket\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new Gcp.Projects.IAMMember(\"invoking\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var event_receiving = new Gcp.Projects.IAMMember(\"event-receiving\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/eventarc.eventReceiver\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n invoking,\n },\n });\n\n var artifactregistry_reader = new Gcp.Projects.IAMMember(\"artifactregistry-reader\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/artifactregistry.reader\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs12\",\n EntryPoint = \"entryPoint\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = source_bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.audit.log.v1.written\",\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n ServiceAccountEmail = account.Email,\n EventFilters = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"serviceName\",\n Value = \"storage.googleapis.com\",\n },\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"methodName\",\n Value = \"storage.objects.create\",\n },\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"resourceName\",\n Value = audit_log_bucket.Name.Apply(name =\u003e $\"/projects/_/buckets/{name}/objects/*.txt\"),\n Operator = \"match-path-pattern\",\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n artifactregistry_reader,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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// This example follows the examples shown in this Google Cloud Community blog post\n\t\t// https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n\t\t// and the docs:\n\t\t// https://cloud.google.com/eventarc/docs/path-patterns\n\t\t_, err := storage.NewBucket(ctx, \"source-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-source-bucket\"),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: source_bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n\t\t// Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n\t\t// google_cloudfunctions2_function below (Audit Log events have path pattern support)\n\t\t_, err = storage.NewBucket(ctx, \"audit-log-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-auditlog-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\t// Permissions on the service account used by the function and Eventarc trigger\n\t\tinvoking, err := projects.NewIAMMember(ctx, \"invoking\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.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, \"event-receiving\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/eventarc.eventReceiver\"),\n\t\t\tMember: account.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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tinvoking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"artifactregistry-reader\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.reader\"),\n\t\t\tMember: account.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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs12\"),\n\t\t\t\tEntryPoint: pulumi.String(\"entryPoint\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: source_bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.audit.log.v1.written\"),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\tEventFilters: cloudfunctionsv2.FunctionEventTriggerEventFilterArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"serviceName\"),\n\t\t\t\t\t\tValue: pulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"methodName\"),\n\t\t\t\t\t\tValue: pulumi.String(\"storage.objects.create\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"resourceName\"),\n\t\t\t\t\t\tValue: audit_log_bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"/projects/_/buckets/%v/objects/*.txt\", name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\tOperator: pulumi.String(\"match-path-pattern\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t\tartifactregistry_reader,\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.resources.CustomResourceOptions;\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 // This example follows the examples shown in this Google Cloud Community blog post\n // https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n // and the docs:\n // https://cloud.google.com/eventarc/docs/path-patterns\n var source_bucket = new Bucket(\"source-bucket\", BucketArgs.builder()\n .name(\"gcf-source-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(source_bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n .build());\n\n // Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n // Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n // google_cloudfunctions2_function below (Audit Log events have path pattern support)\n var audit_log_bucket = new Bucket(\"audit-log-bucket\", BucketArgs.builder()\n .name(\"gcf-auditlog-bucket\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new IAMMember(\"invoking\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var event_receiving = new IAMMember(\"event-receiving\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/eventarc.eventReceiver\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(invoking)\n .build());\n\n var artifactregistry_reader = new IAMMember(\"artifactregistry-reader\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/artifactregistry.reader\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(event_receiving)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs12\")\n .entryPoint(\"entryPoint\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(source_bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.audit.log.v1.written\")\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .serviceAccountEmail(account.email())\n .eventFilters( \n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"serviceName\")\n .value(\"storage.googleapis.com\")\n .build(),\n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"methodName\")\n .value(\"storage.objects.create\")\n .build(),\n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"resourceName\")\n .value(audit_log_bucket.name().applyValue(name -\u003e String.format(\"/projects/_/buckets/%s/objects/*.txt\", name)))\n .operator(\"match-path-pattern\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n event_receiving,\n artifactregistry_reader)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # This example follows the examples shown in this Google Cloud Community blog post\n # https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n # and the docs:\n # https://cloud.google.com/eventarc/docs/path-patterns\n source-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-source-bucket\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${[\"source-bucket\"].name}\n source:\n fn::FileAsset: function-source.zip\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account - used for both the cloud function and eventarc trigger in the test\n # Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n # Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n # google_cloudfunctions2_function below (Audit Log events have path pattern support)\n audit-log-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-auditlog-bucket\n location: us-central1\n uniformBucketLevelAccess: true\n # Permissions on the service account used by the function and Eventarc trigger\n invoking:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n event-receiving:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/eventarc.eventReceiver\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${invoking}\n artifactregistry-reader:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/artifactregistry.reader\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${[\"event-receiving\"]}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs12\n entryPoint: entryPoint\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${[\"source-bucket\"].name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.audit.log.v1.written\n retryPolicy: RETRY_POLICY_RETRY\n serviceAccountEmail: ${account.email}\n eventFilters:\n - attribute: serviceName\n value: storage.googleapis.com\n - attribute: methodName\n value: storage.objects.create\n - attribute: resourceName\n value: /projects/_/buckets/${[\"audit-log-bucket\"].name}/objects/*.txt\n operator: match-path-pattern\n options:\n dependson:\n - ${[\"event-receiving\"]}\n - ${[\"artifactregistry-reader\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Builder\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst logWriter = new gcp.projects.IAMMember(\"log_writer\", {\n project: account.project,\n role: \"roles/logging.logWriter\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst artifactRegistryWriter = new gcp.projects.IAMMember(\"artifact_registry_writer\", {\n project: account.project,\n role: \"roles/artifactregistry.writer\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst storageObjectAdmin = new gcp.projects.IAMMember(\"storage_object_admin\", {\n project: account.project,\n role: \"roles/storage.objectAdmin\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\n// builder permissions need to stablize before it can pull the source zip\nconst wait60s = new time.index.Sleep(\"wait_60s\", {createDuration: \"60s\"}, {\n dependsOn: [\n logWriter,\n artifactRegistryWriter,\n storageObjectAdmin,\n ],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-v2\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n serviceAccount: account.id,\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n}, {\n dependsOn: [wait60s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\nlog_writer = gcp.projects.IAMMember(\"log_writer\",\n project=account.project,\n role=\"roles/logging.logWriter\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nartifact_registry_writer = gcp.projects.IAMMember(\"artifact_registry_writer\",\n project=account.project,\n role=\"roles/artifactregistry.writer\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nstorage_object_admin = gcp.projects.IAMMember(\"storage_object_admin\",\n project=account.project,\n role=\"roles/storage.objectAdmin\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\n# builder permissions need to stablize before it can pull the source zip\nwait60s = time.index.Sleep(\"wait_60s\", create_duration=60s,\nopts = pulumi.ResourceOptions(depends_on=[\n log_writer,\n artifact_registry_writer,\n storage_object_admin,\n ]))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-v2\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"service_account\": account.id,\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n },\n opts = pulumi.ResourceOptions(depends_on=[wait60s]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var logWriter = new Gcp.Projects.IAMMember(\"log_writer\", new()\n {\n Project = account.Project,\n Role = \"roles/logging.logWriter\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var artifactRegistryWriter = new Gcp.Projects.IAMMember(\"artifact_registry_writer\", new()\n {\n Project = account.Project,\n Role = \"roles/artifactregistry.writer\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var storageObjectAdmin = new Gcp.Projects.IAMMember(\"storage_object_admin\", new()\n {\n Project = account.Project,\n Role = \"roles/storage.objectAdmin\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n // builder permissions need to stablize before it can pull the source zip\n var wait60s = new Time.Index.Sleep(\"wait_60s\", new()\n {\n CreateDuration = \"60s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n logWriter,\n artifactRegistryWriter,\n storageObjectAdmin,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-v2\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n ServiceAccount = account.Id,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait60s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\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 := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\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\tlogWriter, err := projects.NewIAMMember(ctx, \"log_writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/logging.logWriter\"),\n\t\t\tMember: account.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\tartifactRegistryWriter, err := projects.NewIAMMember(ctx, \"artifact_registry_writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.writer\"),\n\t\t\tMember: account.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\tstorageObjectAdmin, err := projects.NewIAMMember(ctx, \"storage_object_admin\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/storage.objectAdmin\"),\n\t\t\tMember: account.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\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// builder permissions need to stablize before it can pull the source zip\n\t\twait60s, err := time.NewSleep(ctx, \"wait_60s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"60s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tlogWriter,\n\t\t\tartifactRegistryWriter,\n\t\t\tstorageObjectAdmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-v2\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tServiceAccount: account.ID(),\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait60s,\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.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\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 final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var logWriter = new IAMMember(\"logWriter\", IAMMemberArgs.builder()\n .project(account.project())\n .role(\"roles/logging.logWriter\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var artifactRegistryWriter = new IAMMember(\"artifactRegistryWriter\", IAMMemberArgs.builder()\n .project(account.project())\n .role(\"roles/artifactregistry.writer\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var storageObjectAdmin = new IAMMember(\"storageObjectAdmin\", IAMMemberArgs.builder()\n .project(account.project())\n .role(\"roles/storage.objectAdmin\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n // builder permissions need to stablize before it can pull the source zip\n var wait60s = new Sleep(\"wait60s\", SleepArgs.builder()\n .createDuration(\"60s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n logWriter,\n artifactRegistryWriter,\n storageObjectAdmin)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-v2\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .serviceAccount(account.id())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait60s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n logWriter:\n type: gcp:projects:IAMMember\n name: log_writer\n properties:\n project: ${account.project}\n role: roles/logging.logWriter\n member: serviceAccount:${account.email}\n artifactRegistryWriter:\n type: gcp:projects:IAMMember\n name: artifact_registry_writer\n properties:\n project: ${account.project}\n role: roles/artifactregistry.writer\n member: serviceAccount:${account.email}\n storageObjectAdmin:\n type: gcp:projects:IAMMember\n name: storage_object_admin\n properties:\n project: ${account.project}\n role: roles/storage.objectAdmin\n member: serviceAccount:${account.email}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n # builder permissions need to stablize before it can pull the source zip\n wait60s:\n type: time:sleep\n name: wait_60s\n properties:\n createDuration: 60s\n options:\n dependson:\n - ${logWriter}\n - ${artifactRegistryWriter}\n - ${storageObjectAdmin}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-v2\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceAccount: ${account.id}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n options:\n dependson:\n - ${wait60s}\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Secret Env\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secretSecretVersion = new gcp.secretmanager.SecretVersion(\"secret\", {\n secret: secret.name,\n secretData: \"secret\",\n enabled: true,\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-secret\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n secretEnvironmentVariables: [{\n key: \"TEST\",\n projectId: project,\n secret: secret.secretId,\n version: \"latest\",\n }],\n },\n}, {\n dependsOn: [secretSecretVersion],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_secret_version = gcp.secretmanager.SecretVersion(\"secret\",\n secret=secret.name,\n secret_data=\"secret\",\n enabled=True)\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-secret\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"secret_environment_variables\": [{\n \"key\": \"TEST\",\n \"project_id\": project,\n \"secret\": secret.secret_id,\n \"version\": \"latest\",\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[secret_secret_version]))\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 = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\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 secretSecretVersion = new Gcp.SecretManager.SecretVersion(\"secret\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret\",\n Enabled = true,\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-secret\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n SecretEnvironmentVariables = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigSecretEnvironmentVariableArgs\n {\n Key = \"TEST\",\n ProjectId = project,\n Secret = secret.SecretId,\n Version = \"latest\",\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secretSecretVersion,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\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\tsecretSecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tSecretEnvironmentVariables: cloudfunctionsv2.FunctionServiceConfigSecretEnvironmentVariableArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionServiceConfigSecretEnvironmentVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"TEST\"),\n\t\t\t\t\t\tProjectId: pulumi.String(project),\n\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecretSecretVersion,\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.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.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\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 final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\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 secretSecretVersion = new SecretVersion(\"secretSecretVersion\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret\")\n .enabled(true)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-secret\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .secretEnvironmentVariables(FunctionServiceConfigSecretEnvironmentVariableArgs.builder()\n .key(\"TEST\")\n .projectId(project)\n .secret(secret.secretId())\n .version(\"latest\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secretSecretVersion)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-secret\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n secretEnvironmentVariables:\n - key: TEST\n projectId: ${project}\n secret: ${secret.secretId}\n version: latest\n options:\n dependson:\n - ${secretSecretVersion}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secretSecretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret\n properties:\n secret: ${secret.name}\n secretData: secret\n enabled: true\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Secret Volume\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secretSecretVersion = new gcp.secretmanager.SecretVersion(\"secret\", {\n secret: secret.name,\n secretData: \"secret\",\n enabled: true,\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-secret\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n secretVolumes: [{\n mountPath: \"/etc/secrets\",\n projectId: project,\n secret: secret.secretId,\n }],\n },\n}, {\n dependsOn: [secretSecretVersion],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_secret_version = gcp.secretmanager.SecretVersion(\"secret\",\n secret=secret.name,\n secret_data=\"secret\",\n enabled=True)\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-secret\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"secret_volumes\": [{\n \"mount_path\": \"/etc/secrets\",\n \"project_id\": project,\n \"secret\": secret.secret_id,\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[secret_secret_version]))\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 = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\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 secretSecretVersion = new Gcp.SecretManager.SecretVersion(\"secret\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret\",\n Enabled = true,\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-secret\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n SecretVolumes = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigSecretVolumeArgs\n {\n MountPath = \"/etc/secrets\",\n ProjectId = project,\n Secret = secret.SecretId,\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secretSecretVersion,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\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\tsecretSecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tSecretVolumes: cloudfunctionsv2.FunctionServiceConfigSecretVolumeArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionServiceConfigSecretVolumeArgs{\n\t\t\t\t\t\tMountPath: pulumi.String(\"/etc/secrets\"),\n\t\t\t\t\t\tProjectId: pulumi.String(project),\n\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecretSecretVersion,\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.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.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\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 final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\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 secretSecretVersion = new SecretVersion(\"secretSecretVersion\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret\")\n .enabled(true)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-secret\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .secretVolumes(FunctionServiceConfigSecretVolumeArgs.builder()\n .mountPath(\"/etc/secrets\")\n .projectId(project)\n .secret(secret.secretId())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secretSecretVersion)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-secret\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n secretVolumes:\n - mountPath: /etc/secrets\n projectId: ${project}\n secret: ${secret.secretId}\n options:\n dependson:\n - ${secretSecretVersion}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secretSecretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret\n properties:\n secret: ${secret.name}\n secretData: secret\n enabled: true\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Private Workerpool\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst pool = new gcp.cloudbuild.WorkerPool(\"pool\", {\n name: \"workerpool\",\n location: \"us-central1\",\n workerConfig: {\n diskSizeGb: 100,\n machineType: \"e2-standard-8\",\n noExternalIp: false,\n },\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-workerpool\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n workerPool: pool.id,\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\npool = gcp.cloudbuild.WorkerPool(\"pool\",\n name=\"workerpool\",\n location=\"us-central1\",\n worker_config={\n \"disk_size_gb\": 100,\n \"machine_type\": \"e2-standard-8\",\n \"no_external_ip\": False,\n })\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-workerpool\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"worker_pool\": pool.id,\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\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 = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var pool = new Gcp.CloudBuild.WorkerPool(\"pool\", new()\n {\n Name = \"workerpool\",\n Location = \"us-central1\",\n WorkerConfig = new Gcp.CloudBuild.Inputs.WorkerPoolWorkerConfigArgs\n {\n DiskSizeGb = 100,\n MachineType = \"e2-standard-8\",\n NoExternalIp = false,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-workerpool\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n WorkerPool = pool.Id,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpool, err := cloudbuild.NewWorkerPool(ctx, \"pool\", \u0026cloudbuild.WorkerPoolArgs{\n\t\t\tName: pulumi.String(\"workerpool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tWorkerConfig: \u0026cloudbuild.WorkerPoolWorkerConfigArgs{\n\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\tMachineType: pulumi.String(\"e2-standard-8\"),\n\t\t\t\tNoExternalIp: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-workerpool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWorkerPool: pool.ID(),\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\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.cloudbuild.WorkerPool;\nimport com.pulumi.gcp.cloudbuild.WorkerPoolArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.WorkerPoolWorkerConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\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 final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var pool = new WorkerPool(\"pool\", WorkerPoolArgs.builder()\n .name(\"workerpool\")\n .location(\"us-central1\")\n .workerConfig(WorkerPoolWorkerConfigArgs.builder()\n .diskSizeGb(100)\n .machineType(\"e2-standard-8\")\n .noExternalIp(false)\n .build())\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-workerpool\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .workerPool(pool.id())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n pool:\n type: gcp:cloudbuild:WorkerPool\n properties:\n name: workerpool\n location: us-central1\n workerConfig:\n diskSizeGb: 100\n machineType: e2-standard-8\n noExternalIp: false\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-workerpool\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n workerPool: ${pool.id}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Cmek Docs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst projectGetProject = gcp.organizations.getProject({});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst eaSa = new gcp.projects.ServiceIdentity(\"ea_sa\", {\n project: projectGetProject.then(projectGetProject =\u003e projectGetProject.projectId),\n service: \"eventarc.googleapis.com\",\n});\nconst unencoded_ar_repo = new gcp.artifactregistry.Repository(\"unencoded-ar-repo\", {\n repositoryId: \"ar-repo\",\n location: \"us-central1\",\n format: \"DOCKER\",\n});\nconst gcfCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\", {\n cryptoKeyId: \"cmek-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gs-project-accounts.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@serverless-robot-prod.iam.gserviceaccount.com`),\n pulumi.interpolate`serviceAccount:${eaSa.email}`,\n ],\n}, {\n dependsOn: [eaSa],\n});\nconst encoded_ar_repo = new gcp.artifactregistry.Repository(\"encoded-ar-repo\", {\n location: \"us-central1\",\n repositoryId: \"cmek-repo\",\n format: \"DOCKER\",\n kmsKeyName: \"cmek-key\",\n}, {\n dependsOn: [gcfCmekKeyuser],\n});\nconst binding = new gcp.artifactregistry.RepositoryIamBinding(\"binding\", {\n location: encoded_ar_repo.location,\n repository: encoded_ar_repo.name,\n role: \"roles/artifactregistry.admin\",\n members: [projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com`)],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-cmek\",\n location: \"us-central1\",\n description: \"CMEK function\",\n kmsKeyName: \"cmek-key\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n dockerRepository: encoded_ar_repo.id,\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n}, {\n dependsOn: [gcfCmekKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nproject_get_project = gcp.organizations.get_project()\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nea_sa = gcp.projects.ServiceIdentity(\"ea_sa\",\n project=project_get_project.project_id,\n service=\"eventarc.googleapis.com\")\nunencoded_ar_repo = gcp.artifactregistry.Repository(\"unencoded-ar-repo\",\n repository_id=\"ar-repo\",\n location=\"us-central1\",\n format=\"DOCKER\")\ngcf_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\",\n crypto_key_id=\"cmek-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[\n f\"serviceAccount:service-{project_get_project.number}@gcf-admin-robot.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@gs-project-accounts.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@serverless-robot-prod.iam.gserviceaccount.com\",\n ea_sa.email.apply(lambda email: f\"serviceAccount:{email}\"),\n ],\n opts = pulumi.ResourceOptions(depends_on=[ea_sa]))\nencoded_ar_repo = gcp.artifactregistry.Repository(\"encoded-ar-repo\",\n location=\"us-central1\",\n repository_id=\"cmek-repo\",\n format=\"DOCKER\",\n kms_key_name=\"cmek-key\",\n opts = pulumi.ResourceOptions(depends_on=[gcf_cmek_keyuser]))\nbinding = gcp.artifactregistry.RepositoryIamBinding(\"binding\",\n location=encoded_ar_repo.location,\n repository=encoded_ar_repo.name,\n role=\"roles/artifactregistry.admin\",\n members=[f\"serviceAccount:service-{project_get_project.number}@gcf-admin-robot.iam.gserviceaccount.com\"])\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-cmek\",\n location=\"us-central1\",\n description=\"CMEK function\",\n kms_key_name=\"cmek-key\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"docker_repository\": encoded_ar_repo.id,\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n },\n opts = pulumi.ResourceOptions(depends_on=[gcf_cmek_keyuser]))\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 = \"my-project-name\";\n\n var projectGetProject = Gcp.Organizations.GetProject.Invoke();\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var eaSa = new Gcp.Projects.ServiceIdentity(\"ea_sa\", new()\n {\n Project = projectGetProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Service = \"eventarc.googleapis.com\",\n });\n\n var unencoded_ar_repo = new Gcp.ArtifactRegistry.Repository(\"unencoded-ar-repo\", new()\n {\n RepositoryId = \"ar-repo\",\n Location = \"us-central1\",\n Format = \"DOCKER\",\n });\n\n var gcfCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\", new()\n {\n CryptoKeyId = \"cmek-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcf-admin-robot.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gs-project-accounts.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@serverless-robot-prod.iam.gserviceaccount.com\",\n eaSa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n eaSa,\n },\n });\n\n var encoded_ar_repo = new Gcp.ArtifactRegistry.Repository(\"encoded-ar-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"cmek-repo\",\n Format = \"DOCKER\",\n KmsKeyName = \"cmek-key\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n gcfCmekKeyuser,\n },\n });\n\n var binding = new Gcp.ArtifactRegistry.RepositoryIamBinding(\"binding\", new()\n {\n Location = encoded_ar_repo.Location,\n Repository = encoded_ar_repo.Name,\n Role = \"roles/artifactregistry.admin\",\n Members = new[]\n {\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcf-admin-robot.iam.gserviceaccount.com\",\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-cmek\",\n Location = \"us-central1\",\n Description = \"CMEK function\",\n KmsKeyName = \"cmek-key\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n DockerRepository = encoded_ar_repo.Id,\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n gcfCmekKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\tprojectGetProject, err := organizations.LookupProject(ctx, nil, nil)\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\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teaSa, err := projects.NewServiceIdentity(ctx, \"ea_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.String(projectGetProject.ProjectId),\n\t\t\tService: pulumi.String(\"eventarc.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"unencoded-ar-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tRepositoryId: pulumi.String(\"ar-repo\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgcfCmekKeyuser, err := kms.NewCryptoKeyIAMBinding(ctx, \"gcf_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"cmek-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gs-project-accounts.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@serverless-robot-prod.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t\teaSa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\teaSa,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"encoded-ar-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"cmek-repo\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tKmsKeyName: pulumi.String(\"cmek-key\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tgcfCmekKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepositoryIamBinding(ctx, \"binding\", \u0026artifactregistry.RepositoryIamBindingArgs{\n\t\t\tLocation: encoded_ar_repo.Location,\n\t\t\tRepository: encoded_ar_repo.Name,\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.Number)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-cmek\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"CMEK function\"),\n\t\t\tKmsKeyName: pulumi.String(\"cmek-key\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tDockerRepository: encoded_ar_repo.ID(),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tgcfCmekKeyuser,\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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.artifactregistry.RepositoryIamBinding;\nimport com.pulumi.gcp.artifactregistry.RepositoryIamBindingArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\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 final var project = \"my-project-name\";\n\n final var projectGetProject = OrganizationsFunctions.getProject();\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var eaSa = new ServiceIdentity(\"eaSa\", ServiceIdentityArgs.builder()\n .project(projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .service(\"eventarc.googleapis.com\")\n .build());\n\n var unencoded_ar_repo = new Repository(\"unencoded-ar-repo\", RepositoryArgs.builder()\n .repositoryId(\"ar-repo\")\n .location(\"us-central1\")\n .format(\"DOCKER\")\n .build());\n\n var gcfCmekKeyuser = new CryptoKeyIAMBinding(\"gcfCmekKeyuser\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(\"cmek-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members( \n String.format(\"serviceAccount:service-%s@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@gs-project-accounts.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@serverless-robot-prod.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n eaSa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(eaSa)\n .build());\n\n var encoded_ar_repo = new Repository(\"encoded-ar-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"cmek-repo\")\n .format(\"DOCKER\")\n .kmsKeyName(\"cmek-key\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(gcfCmekKeyuser)\n .build());\n\n var binding = new RepositoryIamBinding(\"binding\", RepositoryIamBindingArgs.builder()\n .location(encoded_ar_repo.location())\n .repository(encoded_ar_repo.name())\n .role(\"roles/artifactregistry.admin\")\n .members(String.format(\"serviceAccount:service-%s@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-cmek\")\n .location(\"us-central1\")\n .description(\"CMEK function\")\n .kmsKeyName(\"cmek-key\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .dockerRepository(encoded_ar_repo.id())\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(gcfCmekKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n eaSa:\n type: gcp:projects:ServiceIdentity\n name: ea_sa\n properties:\n project: ${projectGetProject.projectId}\n service: eventarc.googleapis.com\n unencoded-ar-repo:\n type: gcp:artifactregistry:Repository\n properties:\n repositoryId: ar-repo\n location: us-central1\n format: DOCKER\n binding:\n type: gcp:artifactregistry:RepositoryIamBinding\n properties:\n location: ${[\"encoded-ar-repo\"].location}\n repository: ${[\"encoded-ar-repo\"].name}\n role: roles/artifactregistry.admin\n members:\n - serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com\n gcfCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: gcf_cmek_keyuser\n properties:\n cryptoKeyId: cmek-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@gs-project-accounts.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@serverless-robot-prod.iam.gserviceaccount.com\n - serviceAccount:${eaSa.email}\n options:\n dependson:\n - ${eaSa}\n encoded-ar-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: cmek-repo\n format: DOCKER\n kmsKeyName: cmek-key\n options:\n dependson:\n - ${gcfCmekKeyuser}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-cmek\n location: us-central1\n description: CMEK function\n kmsKeyName: cmek-key\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n dockerRepository: ${[\"encoded-ar-repo\"].id}\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n options:\n dependson:\n - ${gcfCmekKeyuser}\nvariables:\n project: my-project-name\n projectGetProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Abiu\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"europe-west6\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n automaticUpdatePolicy: {},\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"europe-west6\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloPubSub\",\n \"environment_variables\": {\n \"buil_d__confi_g__test\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"automatic_update_policy\": {},\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"4Gi\",\n \"timeout_seconds\": 60,\n \"max_instance_request_concurrency\": 80,\n \"available_cpu\": \"4\",\n \"environment_variables\": {\n \"servic_e__confi_g__test\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n \"pubsub_topic\": topic.id,\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\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 = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"europe-west6\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n AutomaticUpdatePolicy = null,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\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\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\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\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"europe-west6\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAutomaticUpdatePolicy: nil,\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\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.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigAutomaticUpdatePolicyArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\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 final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"europe-west6\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .automaticUpdatePolicy()\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: europe-west6\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n automaticUpdatePolicy: {}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Abiu On Deploy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"europe-west6\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n onDeployUpdatePolicy: {},\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"europe-west6\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloPubSub\",\n \"environment_variables\": {\n \"buil_d__confi_g__test\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"on_deploy_update_policy\": {},\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"4Gi\",\n \"timeout_seconds\": 60,\n \"max_instance_request_concurrency\": 80,\n \"available_cpu\": \"4\",\n \"environment_variables\": {\n \"servic_e__confi_g__test\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n \"pubsub_topic\": topic.id,\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\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 = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"europe-west6\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n OnDeployUpdatePolicy = null,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\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\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\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\tName: pulumi.String(fmt.Sprintf(\"%v-gcf-source\", project)),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"europe-west6\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOnDeployUpdatePolicy: nil,\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\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.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigOnDeployUpdatePolicyArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\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 final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"europe-west6\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .onDeployUpdatePolicy()\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: europe-west6\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n onDeployUpdatePolicy: {}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nfunction can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/functions/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, function can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default projects/{{project}}/locations/{{location}}/functions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default {{location}}/{{name}}\n```\n\n", "properties": { "buildConfig": { "$ref": "#/types/gcp:cloudfunctionsv2/FunctionBuildConfig:FunctionBuildConfig", @@ -137814,7 +137814,7 @@ } }, "gcp:cloudquota/sQuotaPreference:SQuotaPreference": { - "description": "QuotaPreference represents the preferred quota configuration specified for a project, folder or organization. There is only one QuotaPreference resource for a quota value targeting a unique set of dimensions.\n\n\nTo get more information about QuotaPreference, see:\n\n* [API documentation](https://cloud.google.com/docs/quotas/reference/rest/v1/projects.locations.quotaPreferences)\n* How-to Guides\n * [Cloud Quotas Overview](https://cloud.google.com/docs/quotas/overview)\n\n## Example Usage\n\n### Cloudquotas Quota Preference Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst preference = new gcp.cloudquota.SQuotaPreference(\"preference\", {\n parent: \"projects/my-project-name\",\n name: \"compute_googleapis_com-CPUS-per-project_us-east1\",\n dimensions: {\n region: \"us-east1\",\n },\n service: \"compute.googleapis.com\",\n quotaId: \"CPUS-per-project-region\",\n contactEmail: \"testuser@gmail.com\",\n quotaConfig: {\n preferredValue: \"200\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npreference = gcp.cloudquota.SQuotaPreference(\"preference\",\n parent=\"projects/my-project-name\",\n name=\"compute_googleapis_com-CPUS-per-project_us-east1\",\n dimensions={\n \"region\": \"us-east1\",\n },\n service=\"compute.googleapis.com\",\n quota_id=\"CPUS-per-project-region\",\n contact_email=\"testuser@gmail.com\",\n quota_config={\n \"preferredValue\": \"200\",\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 preference = new Gcp.CloudQuota.SQuotaPreference(\"preference\", new()\n {\n Parent = \"projects/my-project-name\",\n Name = \"compute_googleapis_com-CPUS-per-project_us-east1\",\n Dimensions = \n {\n { \"region\", \"us-east1\" },\n },\n Service = \"compute.googleapis.com\",\n QuotaId = \"CPUS-per-project-region\",\n ContactEmail = \"testuser@gmail.com\",\n QuotaConfig = new Gcp.CloudQuota.Inputs.SQuotaPreferenceQuotaConfigArgs\n {\n PreferredValue = \"200\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudquota\"\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 := cloudquota.NewSQuotaPreference(ctx, \"preference\", \u0026cloudquota.SQuotaPreferenceArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tName: pulumi.String(\"compute_googleapis_com-CPUS-per-project_us-east1\"),\n\t\t\tDimensions: pulumi.StringMap{\n\t\t\t\t\"region\": pulumi.String(\"us-east1\"),\n\t\t\t},\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t\tQuotaId: pulumi.String(\"CPUS-per-project-region\"),\n\t\t\tContactEmail: pulumi.String(\"testuser@gmail.com\"),\n\t\t\tQuotaConfig: \u0026cloudquota.SQuotaPreferenceQuotaConfigArgs{\n\t\t\t\tPreferredValue: pulumi.String(\"200\"),\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.cloudquota.SQuotaPreference;\nimport com.pulumi.gcp.cloudquota.SQuotaPreferenceArgs;\nimport com.pulumi.gcp.cloudquota.inputs.SQuotaPreferenceQuotaConfigArgs;\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 preference = new SQuotaPreference(\"preference\", SQuotaPreferenceArgs.builder()\n .parent(\"projects/my-project-name\")\n .name(\"compute_googleapis_com-CPUS-per-project_us-east1\")\n .dimensions(Map.of(\"region\", \"us-east1\"))\n .service(\"compute.googleapis.com\")\n .quotaId(\"CPUS-per-project-region\")\n .contactEmail(\"testuser@gmail.com\")\n .quotaConfig(SQuotaPreferenceQuotaConfigArgs.builder()\n .preferredValue(200)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n preference:\n type: gcp:cloudquota:SQuotaPreference\n properties:\n parent: projects/my-project-name\n name: compute_googleapis_com-CPUS-per-project_us-east1\n dimensions:\n region: us-east1\n service: compute.googleapis.com\n quotaId: CPUS-per-project-region\n contactEmail: testuser@gmail.com\n quotaConfig:\n preferredValue: 200\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nQuotaPreference can be imported using any of these accepted formats:\n\n* `{{parent}}/locations/global/quotaPreferences/{{name}}`\n\nWhen using the `pulumi import` command, QuotaPreference can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudquota/sQuotaPreference:SQuotaPreference default {{parent}}/locations/global/quotaPreferences/{{name}}\n```\n\n", + "description": "QuotaPreference represents the preferred quota configuration specified for a project, folder or organization. There is only one QuotaPreference resource for a quota value targeting a unique set of dimensions.\n\n\nTo get more information about QuotaPreference, see:\n\n* [API documentation](https://cloud.google.com/docs/quotas/reference/rest/v1/projects.locations.quotaPreferences)\n* How-to Guides\n * [Cloud Quotas Overview](https://cloud.google.com/docs/quotas/overview)\n\n## Example Usage\n\n### Cloudquotas Quota Preference Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst preference = new gcp.cloudquota.SQuotaPreference(\"preference\", {\n parent: \"projects/my-project-name\",\n name: \"compute_googleapis_com-CPUS-per-project_us-east1\",\n dimensions: {\n region: \"us-east1\",\n },\n service: \"compute.googleapis.com\",\n quotaId: \"CPUS-per-project-region\",\n contactEmail: \"testuser@gmail.com\",\n quotaConfig: {\n preferredValue: \"200\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npreference = gcp.cloudquota.SQuotaPreference(\"preference\",\n parent=\"projects/my-project-name\",\n name=\"compute_googleapis_com-CPUS-per-project_us-east1\",\n dimensions={\n \"region\": \"us-east1\",\n },\n service=\"compute.googleapis.com\",\n quota_id=\"CPUS-per-project-region\",\n contact_email=\"testuser@gmail.com\",\n quota_config={\n \"preferred_value\": \"200\",\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 preference = new Gcp.CloudQuota.SQuotaPreference(\"preference\", new()\n {\n Parent = \"projects/my-project-name\",\n Name = \"compute_googleapis_com-CPUS-per-project_us-east1\",\n Dimensions = \n {\n { \"region\", \"us-east1\" },\n },\n Service = \"compute.googleapis.com\",\n QuotaId = \"CPUS-per-project-region\",\n ContactEmail = \"testuser@gmail.com\",\n QuotaConfig = new Gcp.CloudQuota.Inputs.SQuotaPreferenceQuotaConfigArgs\n {\n PreferredValue = \"200\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudquota\"\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 := cloudquota.NewSQuotaPreference(ctx, \"preference\", \u0026cloudquota.SQuotaPreferenceArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tName: pulumi.String(\"compute_googleapis_com-CPUS-per-project_us-east1\"),\n\t\t\tDimensions: pulumi.StringMap{\n\t\t\t\t\"region\": pulumi.String(\"us-east1\"),\n\t\t\t},\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t\tQuotaId: pulumi.String(\"CPUS-per-project-region\"),\n\t\t\tContactEmail: pulumi.String(\"testuser@gmail.com\"),\n\t\t\tQuotaConfig: \u0026cloudquota.SQuotaPreferenceQuotaConfigArgs{\n\t\t\t\tPreferredValue: pulumi.String(\"200\"),\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.cloudquota.SQuotaPreference;\nimport com.pulumi.gcp.cloudquota.SQuotaPreferenceArgs;\nimport com.pulumi.gcp.cloudquota.inputs.SQuotaPreferenceQuotaConfigArgs;\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 preference = new SQuotaPreference(\"preference\", SQuotaPreferenceArgs.builder()\n .parent(\"projects/my-project-name\")\n .name(\"compute_googleapis_com-CPUS-per-project_us-east1\")\n .dimensions(Map.of(\"region\", \"us-east1\"))\n .service(\"compute.googleapis.com\")\n .quotaId(\"CPUS-per-project-region\")\n .contactEmail(\"testuser@gmail.com\")\n .quotaConfig(SQuotaPreferenceQuotaConfigArgs.builder()\n .preferredValue(200)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n preference:\n type: gcp:cloudquota:SQuotaPreference\n properties:\n parent: projects/my-project-name\n name: compute_googleapis_com-CPUS-per-project_us-east1\n dimensions:\n region: us-east1\n service: compute.googleapis.com\n quotaId: CPUS-per-project-region\n contactEmail: testuser@gmail.com\n quotaConfig:\n preferredValue: 200\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nQuotaPreference can be imported using any of these accepted formats:\n\n* `{{parent}}/locations/global/quotaPreferences/{{name}}`\n\nWhen using the `pulumi import` command, QuotaPreference can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudquota/sQuotaPreference:SQuotaPreference default {{parent}}/locations/global/quotaPreferences/{{name}}\n```\n\n", "properties": { "contactEmail": { "type": "string", @@ -137993,7 +137993,7 @@ } }, "gcp:cloudrun/domainMapping:DomainMapping": { - "description": "Resource to hold the state and status of a user's domain mapping.\n\n\nTo get more information about DomainMapping, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v1/projects.locations.domainmappings)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/mapping-custom-domains)\n\n## Example Usage\n\n### Cloud Run Domain Mapping Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n metadata: {\n namespace: \"my-project-name\",\n },\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n});\nconst defaultDomainMapping = new gcp.cloudrun.DomainMapping(\"default\", {\n location: \"us-central1\",\n name: \"verified-domain.com\",\n metadata: {\n namespace: \"my-project-name\",\n },\n spec: {\n routeName: _default.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n metadata={\n \"namespace\": \"my-project-name\",\n },\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n })\ndefault_domain_mapping = gcp.cloudrun.DomainMapping(\"default\",\n location=\"us-central1\",\n name=\"verified-domain.com\",\n metadata={\n \"namespace\": \"my-project-name\",\n },\n spec={\n \"routeName\": default.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 @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Metadata = new Gcp.CloudRun.Inputs.ServiceMetadataArgs\n {\n Namespace = \"my-project-name\",\n },\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 });\n\n var defaultDomainMapping = new Gcp.CloudRun.DomainMapping(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"verified-domain.com\",\n Metadata = new Gcp.CloudRun.Inputs.DomainMappingMetadataArgs\n {\n Namespace = \"my-project-name\",\n },\n Spec = new Gcp.CloudRun.Inputs.DomainMappingSpecArgs\n {\n RouteName = @default.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tMetadata: \u0026cloudrun.ServiceMetadataArgs{\n\t\t\t\tNamespace: pulumi.String(\"my-project-name\"),\n\t\t\t},\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewDomainMapping(ctx, \"default\", \u0026cloudrun.DomainMappingArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"verified-domain.com\"),\n\t\t\tMetadata: \u0026cloudrun.DomainMappingMetadataArgs{\n\t\t\t\tNamespace: pulumi.String(\"my-project-name\"),\n\t\t\t},\n\t\t\tSpec: \u0026cloudrun.DomainMappingSpecArgs{\n\t\t\t\tRouteName: _default.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.ServiceMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.DomainMapping;\nimport com.pulumi.gcp.cloudrun.DomainMappingArgs;\nimport com.pulumi.gcp.cloudrun.inputs.DomainMappingMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.DomainMappingSpecArgs;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .metadata(ServiceMetadataArgs.builder()\n .namespace(\"my-project-name\")\n .build())\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 .build());\n\n var defaultDomainMapping = new DomainMapping(\"defaultDomainMapping\", DomainMappingArgs.builder()\n .location(\"us-central1\")\n .name(\"verified-domain.com\")\n .metadata(DomainMappingMetadataArgs.builder()\n .namespace(\"my-project-name\")\n .build())\n .spec(DomainMappingSpecArgs.builder()\n .routeName(default_.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n metadata:\n namespace: my-project-name\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n defaultDomainMapping:\n type: gcp:cloudrun:DomainMapping\n name: default\n properties:\n location: us-central1\n name: verified-domain.com\n metadata:\n namespace: my-project-name\n spec:\n routeName: ${default.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDomainMapping can be imported using any of these accepted formats:\n\n* `locations/{{location}}/namespaces/{{project}}/domainmappings/{{name}}`\n\n* `{{location}}/{{project}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, DomainMapping can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrun/domainMapping:DomainMapping default locations/{{location}}/namespaces/{{project}}/domainmappings/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/domainMapping:DomainMapping default {{location}}/{{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/domainMapping:DomainMapping default {{location}}/{{name}}\n```\n\n", + "description": "Resource to hold the state and status of a user's domain mapping.\n\n\nTo get more information about DomainMapping, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v1/projects.locations.domainmappings)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/mapping-custom-domains)\n\n## Example Usage\n\n### Cloud Run Domain Mapping Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n metadata: {\n namespace: \"my-project-name\",\n },\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n});\nconst defaultDomainMapping = new gcp.cloudrun.DomainMapping(\"default\", {\n location: \"us-central1\",\n name: \"verified-domain.com\",\n metadata: {\n namespace: \"my-project-name\",\n },\n spec: {\n routeName: _default.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n metadata={\n \"namespace\": \"my-project-name\",\n },\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n })\ndefault_domain_mapping = gcp.cloudrun.DomainMapping(\"default\",\n location=\"us-central1\",\n name=\"verified-domain.com\",\n metadata={\n \"namespace\": \"my-project-name\",\n },\n spec={\n \"route_name\": default.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 @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Metadata = new Gcp.CloudRun.Inputs.ServiceMetadataArgs\n {\n Namespace = \"my-project-name\",\n },\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 });\n\n var defaultDomainMapping = new Gcp.CloudRun.DomainMapping(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"verified-domain.com\",\n Metadata = new Gcp.CloudRun.Inputs.DomainMappingMetadataArgs\n {\n Namespace = \"my-project-name\",\n },\n Spec = new Gcp.CloudRun.Inputs.DomainMappingSpecArgs\n {\n RouteName = @default.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tMetadata: \u0026cloudrun.ServiceMetadataArgs{\n\t\t\t\tNamespace: pulumi.String(\"my-project-name\"),\n\t\t\t},\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewDomainMapping(ctx, \"default\", \u0026cloudrun.DomainMappingArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"verified-domain.com\"),\n\t\t\tMetadata: \u0026cloudrun.DomainMappingMetadataArgs{\n\t\t\t\tNamespace: pulumi.String(\"my-project-name\"),\n\t\t\t},\n\t\t\tSpec: \u0026cloudrun.DomainMappingSpecArgs{\n\t\t\t\tRouteName: _default.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.ServiceMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.DomainMapping;\nimport com.pulumi.gcp.cloudrun.DomainMappingArgs;\nimport com.pulumi.gcp.cloudrun.inputs.DomainMappingMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.DomainMappingSpecArgs;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .metadata(ServiceMetadataArgs.builder()\n .namespace(\"my-project-name\")\n .build())\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 .build());\n\n var defaultDomainMapping = new DomainMapping(\"defaultDomainMapping\", DomainMappingArgs.builder()\n .location(\"us-central1\")\n .name(\"verified-domain.com\")\n .metadata(DomainMappingMetadataArgs.builder()\n .namespace(\"my-project-name\")\n .build())\n .spec(DomainMappingSpecArgs.builder()\n .routeName(default_.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n metadata:\n namespace: my-project-name\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n defaultDomainMapping:\n type: gcp:cloudrun:DomainMapping\n name: default\n properties:\n location: us-central1\n name: verified-domain.com\n metadata:\n namespace: my-project-name\n spec:\n routeName: ${default.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDomainMapping can be imported using any of these accepted formats:\n\n* `locations/{{location}}/namespaces/{{project}}/domainmappings/{{name}}`\n\n* `{{location}}/{{project}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, DomainMapping can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrun/domainMapping:DomainMapping default locations/{{location}}/namespaces/{{project}}/domainmappings/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/domainMapping:DomainMapping default {{location}}/{{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/domainMapping:DomainMapping default {{location}}/{{name}}\n```\n\n", "properties": { "location": { "type": "string", @@ -138422,7 +138422,7 @@ } }, "gcp:cloudrun/service:Service": { - "description": "A Cloud Run service has a unique endpoint and autoscales containers.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v1/namespaces.services)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/)\n\n\u003e **Warning:** We recommend using the `gcp.cloudrunv2.Service` resource which offers a better\ndeveloper experience and broader support of Cloud Run features.\n\n## Example Usage\n\n### Cloud Run Service Pubsub\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloud_run_service_name\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"gcr.io/cloudrun/hello\",\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"cloud-run-pubsub-invoker\",\n displayName: \"Cloud Run Pub/Sub Invoker\",\n});\nconst binding = new gcp.cloudrun.IamBinding(\"binding\", {\n location: _default.location,\n service: _default.name,\n role: \"roles/run.invoker\",\n members: [pulumi.interpolate`serviceAccount:${sa.email}`],\n});\nconst project = new gcp.projects.IAMBinding(\"project\", {\n role: \"roles/iam.serviceAccountTokenCreator\",\n members: [pulumi.interpolate`serviceAccount:${sa.email}`],\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"pubsub_topic\"});\nconst subscription = new gcp.pubsub.Subscription(\"subscription\", {\n name: \"pubsub_subscription\",\n topic: topic.name,\n pushConfig: {\n pushEndpoint: _default.statuses.apply(statuses =\u003e statuses[0].url),\n oidcToken: {\n serviceAccountEmail: sa.email,\n },\n attributes: {\n \"x-goog-version\": \"v1\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloud_run_service_name\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"gcr.io/cloudrun/hello\",\n }],\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latestRevision\": True,\n }])\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"cloud-run-pubsub-invoker\",\n display_name=\"Cloud Run Pub/Sub Invoker\")\nbinding = gcp.cloudrun.IamBinding(\"binding\",\n location=default.location,\n service=default.name,\n role=\"roles/run.invoker\",\n members=[sa.email.apply(lambda email: f\"serviceAccount:{email}\")])\nproject = gcp.projects.IAMBinding(\"project\",\n role=\"roles/iam.serviceAccountTokenCreator\",\n members=[sa.email.apply(lambda email: f\"serviceAccount:{email}\")])\ntopic = gcp.pubsub.Topic(\"topic\", name=\"pubsub_topic\")\nsubscription = gcp.pubsub.Subscription(\"subscription\",\n name=\"pubsub_subscription\",\n topic=topic.name,\n push_config={\n \"pushEndpoint\": default.statuses[0].url,\n \"oidcToken\": {\n \"serviceAccountEmail\": sa.email,\n },\n \"attributes\": {\n \"x-goog-version\": \"v1\",\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 @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloud_run_service_name\",\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 = \"gcr.io/cloudrun/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 var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"cloud-run-pubsub-invoker\",\n DisplayName = \"Cloud Run Pub/Sub Invoker\",\n });\n\n var binding = new Gcp.CloudRun.IamBinding(\"binding\", new()\n {\n Location = @default.Location,\n Service = @default.Name,\n Role = \"roles/run.invoker\",\n Members = new[]\n {\n sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n });\n\n var project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Role = \"roles/iam.serviceAccountTokenCreator\",\n Members = new[]\n {\n sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"pubsub_topic\",\n });\n\n var subscription = new Gcp.PubSub.Subscription(\"subscription\", new()\n {\n Name = \"pubsub_subscription\",\n Topic = topic.Name,\n PushConfig = new Gcp.PubSub.Inputs.SubscriptionPushConfigArgs\n {\n PushEndpoint = @default.Statuses.Apply(statuses =\u003e statuses[0].Url),\n OidcToken = new Gcp.PubSub.Inputs.SubscriptionPushConfigOidcTokenArgs\n {\n ServiceAccountEmail = sa.Email,\n },\n Attributes = \n {\n { \"x-goog-version\", \"v1\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloud_run_service_name\"),\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(\"gcr.io/cloudrun/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\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"cloud-run-pubsub-invoker\"),\n\t\t\tDisplayName: pulumi.String(\"Cloud Run Pub/Sub Invoker\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewIamBinding(ctx, \"binding\", \u0026cloudrun.IamBindingArgs{\n\t\t\tLocation: _default.Location,\n\t\t\tService: _default.Name,\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tsa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountTokenCreator\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tsa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"pubsub_topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"subscription\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"pubsub_subscription\"),\n\t\t\tTopic: topic.Name,\n\t\t\tPushConfig: \u0026pubsub.SubscriptionPushConfigArgs{\n\t\t\t\tPushEndpoint: _default.Statuses.ApplyT(func(statuses []cloudrun.ServiceStatus) (*string, error) {\n\t\t\t\t\treturn \u0026statuses[0].Url, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tOidcToken: \u0026pubsub.SubscriptionPushConfigOidcTokenArgs{\n\t\t\t\t\tServiceAccountEmail: sa.Email,\n\t\t\t\t},\n\t\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\t\"x-goog-version\": pulumi.String(\"v1\"),\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.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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.cloudrun.IamBinding;\nimport com.pulumi.gcp.cloudrun.IamBindingArgs;\nimport com.pulumi.gcp.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionPushConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionPushConfigOidcTokenArgs;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloud_run_service_name\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"gcr.io/cloudrun/hello\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"cloud-run-pubsub-invoker\")\n .displayName(\"Cloud Run Pub/Sub Invoker\")\n .build());\n\n var binding = new IamBinding(\"binding\", IamBindingArgs.builder()\n .location(default_.location())\n .service(default_.name())\n .role(\"roles/run.invoker\")\n .members(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .role(\"roles/iam.serviceAccountTokenCreator\")\n .members(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"pubsub_topic\")\n .build());\n\n var subscription = new Subscription(\"subscription\", SubscriptionArgs.builder()\n .name(\"pubsub_subscription\")\n .topic(topic.name())\n .pushConfig(SubscriptionPushConfigArgs.builder()\n .pushEndpoint(default_.statuses().applyValue(statuses -\u003e statuses[0].url()))\n .oidcToken(SubscriptionPushConfigOidcTokenArgs.builder()\n .serviceAccountEmail(sa.email())\n .build())\n .attributes(Map.of(\"x-goog-version\", \"v1\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloud_run_service_name\n location: us-central1\n template:\n spec:\n containers:\n - image: gcr.io/cloudrun/hello\n traffics:\n - percent: 100\n latestRevision: true\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: cloud-run-pubsub-invoker\n displayName: Cloud Run Pub/Sub Invoker\n binding:\n type: gcp:cloudrun:IamBinding\n properties:\n location: ${default.location}\n service: ${default.name}\n role: roles/run.invoker\n members:\n - serviceAccount:${sa.email}\n project:\n type: gcp:projects:IAMBinding\n properties:\n role: roles/iam.serviceAccountTokenCreator\n members:\n - serviceAccount:${sa.email}\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: pubsub_topic\n subscription:\n type: gcp:pubsub:Subscription\n properties:\n name: pubsub_subscription\n topic: ${topic.name}\n pushConfig:\n pushEndpoint: ${default.statuses[0].url}\n oidcToken:\n serviceAccountEmail: ${sa.email}\n attributes:\n x-goog-version: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Cloud Run Service Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\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```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\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```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.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\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});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\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\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 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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\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 }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\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\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Sql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"cloudrun-sql\",\n region: \"us-east1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n metadata: {\n annotations: {\n \"autoscaling.knative.dev/maxScale\": \"1000\",\n \"run.googleapis.com/cloudsql-instances\": instance.connectionName,\n \"run.googleapis.com/client-name\": \"demo\",\n },\n },\n },\n autogenerateRevisionName: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"cloudrun-sql\",\n region=\"us-east1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n \"metadata\": {\n \"annotations\": {\n \"autoscaling.knative.dev/maxScale\": \"1000\",\n \"run.googleapis.com/cloudsql-instances\": instance.connection_name,\n \"run.googleapis.com/client-name\": \"demo\",\n },\n },\n },\n autogenerate_revision_name=True)\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.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"cloudrun-sql\",\n Region = \"us-east1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\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 Metadata = new Gcp.CloudRun.Inputs.ServiceTemplateMetadataArgs\n {\n Annotations = \n {\n { \"autoscaling.knative.dev/maxScale\", \"1000\" },\n { \"run.googleapis.com/cloudsql-instances\", instance.ConnectionName },\n { \"run.googleapis.com/client-name\", \"demo\" },\n },\n },\n },\n AutogenerateRevisionName = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-sql\"),\n\t\t\tRegion: pulumi.String(\"us-east1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\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\tMetadata: \u0026cloudrun.ServiceTemplateMetadataArgs{\n\t\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\t\"autoscaling.knative.dev/maxScale\": pulumi.String(\"1000\"),\n\t\t\t\t\t\t\"run.googleapis.com/cloudsql-instances\": instance.ConnectionName,\n\t\t\t\t\t\t\"run.googleapis.com/client-name\": pulumi.String(\"demo\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutogenerateRevisionName: pulumi.Bool(true),\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.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.ServiceTemplateMetadataArgs;\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 DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"cloudrun-sql\")\n .region(\"us-east1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\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 .metadata(ServiceTemplateMetadataArgs.builder()\n .annotations(Map.ofEntries(\n Map.entry(\"autoscaling.knative.dev/maxScale\", \"1000\"),\n Map.entry(\"run.googleapis.com/cloudsql-instances\", instance.connectionName()),\n Map.entry(\"run.googleapis.com/client-name\", \"demo\")\n ))\n .build())\n .build())\n .autogenerateRevisionName(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n metadata:\n annotations:\n autoscaling.knative.dev/maxScale: '1000'\n run.googleapis.com/cloudsql-instances: ${instance.connectionName}\n run.googleapis.com/client-name: demo\n autogenerateRevisionName: true\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: cloudrun-sql\n region: us-east1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Noauth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n});\nconst noauth = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/run.invoker\",\n members: [\"allUsers\"],\n }],\n});\nconst noauthIamPolicy = new gcp.cloudrun.IamPolicy(\"noauth\", {\n location: _default.location,\n project: _default.project,\n service: _default.name,\n policyData: noauth.then(noauth =\u003e noauth.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n })\nnoauth = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/run.invoker\",\n \"members\": [\"allUsers\"],\n}])\nnoauth_iam_policy = gcp.cloudrun.IamPolicy(\"noauth\",\n location=default.location,\n project=default.project,\n service=default.name,\n policy_data=noauth.policy_data)\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.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\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 });\n\n var noauth = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/run.invoker\",\n Members = new[]\n {\n \"allUsers\",\n },\n },\n },\n });\n\n var noauthIamPolicy = new Gcp.CloudRun.IamPolicy(\"noauth\", new()\n {\n Location = @default.Location,\n Project = @default.Project,\n Service = @default.Name,\n PolicyData = noauth.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnoauth, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/run.invoker\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"allUsers\",\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 = cloudrun.NewIamPolicy(ctx, \"noauth\", \u0026cloudrun.IamPolicyArgs{\n\t\t\tLocation: _default.Location,\n\t\t\tProject: _default.Project,\n\t\t\tService: _default.Name,\n\t\t\tPolicyData: pulumi.String(noauth.PolicyData),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.cloudrun.IamPolicy;\nimport com.pulumi.gcp.cloudrun.IamPolicyArgs;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\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 .build());\n\n final var noauth = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/run.invoker\")\n .members(\"allUsers\")\n .build())\n .build());\n\n var noauthIamPolicy = new IamPolicy(\"noauthIamPolicy\", IamPolicyArgs.builder()\n .location(default_.location())\n .project(default_.project())\n .service(default_.name())\n .policyData(noauth.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n noauthIamPolicy:\n type: gcp:cloudrun:IamPolicy\n name: noauth\n properties:\n location: ${default.location}\n project: ${default.project}\n service: ${default.name}\n policyData: ${noauth.policyData}\nvariables:\n noauth:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/run.invoker\n members:\n - allUsers\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Probes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n startupProbe: {\n initialDelaySeconds: 0,\n timeoutSeconds: 1,\n periodSeconds: 3,\n failureThreshold: 1,\n tcpSocket: {\n port: 8080,\n },\n },\n livenessProbe: {\n httpGet: {\n path: \"/\",\n },\n },\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"startupProbe\": {\n \"initialDelaySeconds\": 0,\n \"timeoutSeconds\": 1,\n \"periodSeconds\": 3,\n \"failureThreshold\": 1,\n \"tcpSocket\": {\n \"port\": 8080,\n },\n },\n \"livenessProbe\": {\n \"httpGet\": {\n \"path\": \"/\",\n },\n },\n }],\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latestRevision\": 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 @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\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 StartupProbe = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeArgs\n {\n InitialDelaySeconds = 0,\n TimeoutSeconds = 1,\n PeriodSeconds = 3,\n FailureThreshold = 1,\n TcpSocket = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeTcpSocketArgs\n {\n Port = 8080,\n },\n },\n LivenessProbe = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerLivenessProbeArgs\n {\n HttpGet = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerLivenessProbeHttpGetArgs\n {\n Path = \"/\",\n },\n },\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});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\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\tStartupProbe: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeArgs{\n\t\t\t\t\t\t\t\tInitialDelaySeconds: pulumi.Int(0),\n\t\t\t\t\t\t\t\tTimeoutSeconds: pulumi.Int(1),\n\t\t\t\t\t\t\t\tPeriodSeconds: pulumi.Int(3),\n\t\t\t\t\t\t\t\tFailureThreshold: pulumi.Int(1),\n\t\t\t\t\t\t\t\tTcpSocket: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeTcpSocketArgs{\n\t\t\t\t\t\t\t\t\tPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tLivenessProbe: \u0026cloudrun.ServiceTemplateSpecContainerLivenessProbeArgs{\n\t\t\t\t\t\t\t\tHttpGet: \u0026cloudrun.ServiceTemplateSpecContainerLivenessProbeHttpGetArgs{\n\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t},\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\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\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 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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\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 .startupProbe(ServiceTemplateSpecContainerStartupProbeArgs.builder()\n .initialDelaySeconds(0)\n .timeoutSeconds(1)\n .periodSeconds(3)\n .failureThreshold(1)\n .tcpSocket(ServiceTemplateSpecContainerStartupProbeTcpSocketArgs.builder()\n .port(8080)\n .build())\n .build())\n .livenessProbe(ServiceTemplateSpecContainerLivenessProbeArgs.builder()\n .httpGet(ServiceTemplateSpecContainerLivenessProbeHttpGetArgs.builder()\n .path(\"/\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n startupProbe:\n initialDelaySeconds: 0\n timeoutSeconds: 1\n periodSeconds: 3\n failureThreshold: 1\n tcpSocket:\n port: 8080\n livenessProbe:\n httpGet:\n path: /\n traffics:\n - percent: 100\n latestRevision: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Multicontainer\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n metadata: {\n annotations: {\n \"run.googleapis.com/launch-stage\": \"BETA\",\n },\n },\n template: {\n metadata: {\n annotations: {\n \"run.googleapis.com/container-dependencies\": JSON.stringify({\n \"hello-1\": [\"hello-2\"],\n }),\n },\n },\n spec: {\n containers: [\n {\n name: \"hello-1\",\n ports: [{\n containerPort: 8080,\n }],\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n volumeMounts: [{\n name: \"shared-volume\",\n mountPath: \"/mnt/shared\",\n }],\n },\n {\n name: \"hello-2\",\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n envs: [{\n name: \"PORT\",\n value: \"8081\",\n }],\n startupProbe: {\n httpGet: {\n port: 8081,\n },\n },\n volumeMounts: [{\n name: \"shared-volume\",\n mountPath: \"/mnt/shared\",\n }],\n },\n ],\n volumes: [{\n name: \"shared-volume\",\n emptyDir: {\n medium: \"Memory\",\n sizeLimit: \"128Mi\",\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n metadata={\n \"annotations\": {\n \"run.googleapis.com/launch-stage\": \"BETA\",\n },\n },\n template={\n \"metadata\": {\n \"annotations\": {\n \"run.googleapis.com/container-dependencies\": json.dumps({\n \"hello-1\": [\"hello-2\"],\n }),\n },\n },\n \"spec\": {\n \"containers\": [\n {\n \"name\": \"hello-1\",\n \"ports\": [{\n \"containerPort\": 8080,\n }],\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"volumeMounts\": [{\n \"name\": \"shared-volume\",\n \"mountPath\": \"/mnt/shared\",\n }],\n },\n {\n \"name\": \"hello-2\",\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"envs\": [{\n \"name\": \"PORT\",\n \"value\": \"8081\",\n }],\n \"startupProbe\": {\n \"httpGet\": {\n \"port\": 8081,\n },\n },\n \"volumeMounts\": [{\n \"name\": \"shared-volume\",\n \"mountPath\": \"/mnt/shared\",\n }],\n },\n ],\n \"volumes\": [{\n \"name\": \"shared-volume\",\n \"emptyDir\": {\n \"medium\": \"Memory\",\n \"sizeLimit\": \"128Mi\",\n },\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Metadata = new Gcp.CloudRun.Inputs.ServiceMetadataArgs\n {\n Annotations = \n {\n { \"run.googleapis.com/launch-stage\", \"BETA\" },\n },\n },\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Metadata = new Gcp.CloudRun.Inputs.ServiceTemplateMetadataArgs\n {\n Annotations = \n {\n { \"run.googleapis.com/container-dependencies\", JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"hello-1\"] = new[]\n {\n \"hello-2\",\n },\n }) },\n },\n },\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Name = \"hello-1\",\n Ports = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerPortArgs\n {\n ContainerPort = 8080,\n },\n },\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerVolumeMountArgs\n {\n Name = \"shared-volume\",\n MountPath = \"/mnt/shared\",\n },\n },\n },\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Name = \"hello-2\",\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Envs = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerEnvArgs\n {\n Name = \"PORT\",\n Value = \"8081\",\n },\n },\n StartupProbe = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeArgs\n {\n HttpGet = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeHttpGetArgs\n {\n Port = 8081,\n },\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerVolumeMountArgs\n {\n Name = \"shared-volume\",\n MountPath = \"/mnt/shared\",\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecVolumeArgs\n {\n Name = \"shared-volume\",\n EmptyDir = new Gcp.CloudRun.Inputs.ServiceTemplateSpecVolumeEmptyDirArgs\n {\n Medium = \"Memory\",\n SizeLimit = \"128Mi\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"hello-1\": []string{\n\t\t\t\t\"hello-2\",\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tMetadata: \u0026cloudrun.ServiceMetadataArgs{\n\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\"run.googleapis.com/launch-stage\": pulumi.String(\"BETA\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tMetadata: \u0026cloudrun.ServiceTemplateMetadataArgs{\n\t\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\t\"run.googleapis.com/container-dependencies\": pulumi.String(json0),\n\t\t\t\t\t},\n\t\t\t\t},\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\tName: pulumi.String(\"hello-1\"),\n\t\t\t\t\t\t\tPorts: cloudrun.ServiceTemplateSpecContainerPortArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerPortArgs{\n\t\t\t\t\t\t\t\t\tContainerPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t\tVolumeMounts: cloudrun.ServiceTemplateSpecContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"shared-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt/shared\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"hello-2\"),\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t\tEnvs: cloudrun.ServiceTemplateSpecContainerEnvArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerEnvArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PORT\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"8081\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tStartupProbe: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeArgs{\n\t\t\t\t\t\t\t\tHttpGet: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeHttpGetArgs{\n\t\t\t\t\t\t\t\t\tPort: pulumi.Int(8081),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tVolumeMounts: cloudrun.ServiceTemplateSpecContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"shared-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt/shared\"),\n\t\t\t\t\t\t\t\t},\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\tVolumes: cloudrun.ServiceTemplateSpecVolumeArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"shared-volume\"),\n\t\t\t\t\t\t\tEmptyDir: \u0026cloudrun.ServiceTemplateSpecVolumeEmptyDirArgs{\n\t\t\t\t\t\t\t\tMedium: pulumi.String(\"Memory\"),\n\t\t\t\t\t\t\t\tSizeLimit: pulumi.String(\"128Mi\"),\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.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .metadata(ServiceMetadataArgs.builder()\n .annotations(Map.of(\"run.googleapis.com/launch-stage\", \"BETA\"))\n .build())\n .template(ServiceTemplateArgs.builder()\n .metadata(ServiceTemplateMetadataArgs.builder()\n .annotations(Map.of(\"run.googleapis.com/container-dependencies\", serializeJson(\n jsonObject(\n jsonProperty(\"hello-1\", jsonArray(\"hello-2\"))\n ))))\n .build())\n .spec(ServiceTemplateSpecArgs.builder()\n .containers( \n ServiceTemplateSpecContainerArgs.builder()\n .name(\"hello-1\")\n .ports(ServiceTemplateSpecContainerPortArgs.builder()\n .containerPort(8080)\n .build())\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .volumeMounts(ServiceTemplateSpecContainerVolumeMountArgs.builder()\n .name(\"shared-volume\")\n .mountPath(\"/mnt/shared\")\n .build())\n .build(),\n ServiceTemplateSpecContainerArgs.builder()\n .name(\"hello-2\")\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .envs(ServiceTemplateSpecContainerEnvArgs.builder()\n .name(\"PORT\")\n .value(\"8081\")\n .build())\n .startupProbe(ServiceTemplateSpecContainerStartupProbeArgs.builder()\n .httpGet(ServiceTemplateSpecContainerStartupProbeHttpGetArgs.builder()\n .port(8081)\n .build())\n .build())\n .volumeMounts(ServiceTemplateSpecContainerVolumeMountArgs.builder()\n .name(\"shared-volume\")\n .mountPath(\"/mnt/shared\")\n .build())\n .build())\n .volumes(ServiceTemplateSpecVolumeArgs.builder()\n .name(\"shared-volume\")\n .emptyDir(ServiceTemplateSpecVolumeEmptyDirArgs.builder()\n .medium(\"Memory\")\n .sizeLimit(\"128Mi\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n metadata:\n annotations:\n run.googleapis.com/launch-stage: BETA\n template:\n metadata:\n annotations:\n run.googleapis.com/container-dependencies:\n fn::toJSON:\n hello-1:\n - hello-2\n spec:\n containers:\n - name: hello-1\n ports:\n - containerPort: 8080\n image: us-docker.pkg.dev/cloudrun/container/hello\n volumeMounts:\n - name: shared-volume\n mountPath: /mnt/shared\n - name: hello-2\n image: us-docker.pkg.dev/cloudrun/container/hello\n envs:\n - name: PORT\n value: '8081'\n startupProbe:\n httpGet:\n port: 8081\n volumeMounts:\n - name: shared-volume\n mountPath: /mnt/shared\n volumes:\n - name: shared-volume\n emptyDir:\n medium: Memory\n sizeLimit: 128Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `locations/{{location}}/namespaces/{{project}}/services/{{name}}`\n\n* `{{location}}/{{project}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrun/service:Service default locations/{{location}}/namespaces/{{project}}/services/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/service:Service default {{location}}/{{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/service:Service default {{location}}/{{name}}\n```\n\n", + "description": "A Cloud Run service has a unique endpoint and autoscales containers.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v1/namespaces.services)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/)\n\n\u003e **Warning:** We recommend using the `gcp.cloudrunv2.Service` resource which offers a better\ndeveloper experience and broader support of Cloud Run features.\n\n## Example Usage\n\n### Cloud Run Service Pubsub\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloud_run_service_name\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"gcr.io/cloudrun/hello\",\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"cloud-run-pubsub-invoker\",\n displayName: \"Cloud Run Pub/Sub Invoker\",\n});\nconst binding = new gcp.cloudrun.IamBinding(\"binding\", {\n location: _default.location,\n service: _default.name,\n role: \"roles/run.invoker\",\n members: [pulumi.interpolate`serviceAccount:${sa.email}`],\n});\nconst project = new gcp.projects.IAMBinding(\"project\", {\n role: \"roles/iam.serviceAccountTokenCreator\",\n members: [pulumi.interpolate`serviceAccount:${sa.email}`],\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"pubsub_topic\"});\nconst subscription = new gcp.pubsub.Subscription(\"subscription\", {\n name: \"pubsub_subscription\",\n topic: topic.name,\n pushConfig: {\n pushEndpoint: _default.statuses.apply(statuses =\u003e statuses[0].url),\n oidcToken: {\n serviceAccountEmail: sa.email,\n },\n attributes: {\n \"x-goog-version\": \"v1\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloud_run_service_name\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"gcr.io/cloudrun/hello\",\n }],\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latest_revision\": True,\n }])\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"cloud-run-pubsub-invoker\",\n display_name=\"Cloud Run Pub/Sub Invoker\")\nbinding = gcp.cloudrun.IamBinding(\"binding\",\n location=default.location,\n service=default.name,\n role=\"roles/run.invoker\",\n members=[sa.email.apply(lambda email: f\"serviceAccount:{email}\")])\nproject = gcp.projects.IAMBinding(\"project\",\n role=\"roles/iam.serviceAccountTokenCreator\",\n members=[sa.email.apply(lambda email: f\"serviceAccount:{email}\")])\ntopic = gcp.pubsub.Topic(\"topic\", name=\"pubsub_topic\")\nsubscription = gcp.pubsub.Subscription(\"subscription\",\n name=\"pubsub_subscription\",\n topic=topic.name,\n push_config={\n \"push_endpoint\": default.statuses[0].url,\n \"oidc_token\": {\n \"service_account_email\": sa.email,\n },\n \"attributes\": {\n \"x_goog_version\": \"v1\",\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 @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloud_run_service_name\",\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 = \"gcr.io/cloudrun/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 var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"cloud-run-pubsub-invoker\",\n DisplayName = \"Cloud Run Pub/Sub Invoker\",\n });\n\n var binding = new Gcp.CloudRun.IamBinding(\"binding\", new()\n {\n Location = @default.Location,\n Service = @default.Name,\n Role = \"roles/run.invoker\",\n Members = new[]\n {\n sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n });\n\n var project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Role = \"roles/iam.serviceAccountTokenCreator\",\n Members = new[]\n {\n sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"pubsub_topic\",\n });\n\n var subscription = new Gcp.PubSub.Subscription(\"subscription\", new()\n {\n Name = \"pubsub_subscription\",\n Topic = topic.Name,\n PushConfig = new Gcp.PubSub.Inputs.SubscriptionPushConfigArgs\n {\n PushEndpoint = @default.Statuses.Apply(statuses =\u003e statuses[0].Url),\n OidcToken = new Gcp.PubSub.Inputs.SubscriptionPushConfigOidcTokenArgs\n {\n ServiceAccountEmail = sa.Email,\n },\n Attributes = \n {\n { \"x-goog-version\", \"v1\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloud_run_service_name\"),\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(\"gcr.io/cloudrun/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\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"cloud-run-pubsub-invoker\"),\n\t\t\tDisplayName: pulumi.String(\"Cloud Run Pub/Sub Invoker\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewIamBinding(ctx, \"binding\", \u0026cloudrun.IamBindingArgs{\n\t\t\tLocation: _default.Location,\n\t\t\tService: _default.Name,\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tsa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountTokenCreator\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tsa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"pubsub_topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"subscription\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"pubsub_subscription\"),\n\t\t\tTopic: topic.Name,\n\t\t\tPushConfig: \u0026pubsub.SubscriptionPushConfigArgs{\n\t\t\t\tPushEndpoint: _default.Statuses.ApplyT(func(statuses []cloudrun.ServiceStatus) (*string, error) {\n\t\t\t\t\treturn \u0026statuses[0].Url, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tOidcToken: \u0026pubsub.SubscriptionPushConfigOidcTokenArgs{\n\t\t\t\t\tServiceAccountEmail: sa.Email,\n\t\t\t\t},\n\t\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\t\"x-goog-version\": pulumi.String(\"v1\"),\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.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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.cloudrun.IamBinding;\nimport com.pulumi.gcp.cloudrun.IamBindingArgs;\nimport com.pulumi.gcp.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionPushConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionPushConfigOidcTokenArgs;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloud_run_service_name\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"gcr.io/cloudrun/hello\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"cloud-run-pubsub-invoker\")\n .displayName(\"Cloud Run Pub/Sub Invoker\")\n .build());\n\n var binding = new IamBinding(\"binding\", IamBindingArgs.builder()\n .location(default_.location())\n .service(default_.name())\n .role(\"roles/run.invoker\")\n .members(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .role(\"roles/iam.serviceAccountTokenCreator\")\n .members(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"pubsub_topic\")\n .build());\n\n var subscription = new Subscription(\"subscription\", SubscriptionArgs.builder()\n .name(\"pubsub_subscription\")\n .topic(topic.name())\n .pushConfig(SubscriptionPushConfigArgs.builder()\n .pushEndpoint(default_.statuses().applyValue(statuses -\u003e statuses[0].url()))\n .oidcToken(SubscriptionPushConfigOidcTokenArgs.builder()\n .serviceAccountEmail(sa.email())\n .build())\n .attributes(Map.of(\"x-goog-version\", \"v1\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloud_run_service_name\n location: us-central1\n template:\n spec:\n containers:\n - image: gcr.io/cloudrun/hello\n traffics:\n - percent: 100\n latestRevision: true\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: cloud-run-pubsub-invoker\n displayName: Cloud Run Pub/Sub Invoker\n binding:\n type: gcp:cloudrun:IamBinding\n properties:\n location: ${default.location}\n service: ${default.name}\n role: roles/run.invoker\n members:\n - serviceAccount:${sa.email}\n project:\n type: gcp:projects:IAMBinding\n properties:\n role: roles/iam.serviceAccountTokenCreator\n members:\n - serviceAccount:${sa.email}\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: pubsub_topic\n subscription:\n type: gcp:pubsub:Subscription\n properties:\n name: pubsub_subscription\n topic: ${topic.name}\n pushConfig:\n pushEndpoint: ${default.statuses[0].url}\n oidcToken:\n serviceAccountEmail: ${sa.email}\n attributes:\n x-goog-version: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Cloud Run Service Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\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```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\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 \"latest_revision\": 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 @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\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});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\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\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 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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\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 }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\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\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Sql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"cloudrun-sql\",\n region: \"us-east1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n metadata: {\n annotations: {\n \"autoscaling.knative.dev/maxScale\": \"1000\",\n \"run.googleapis.com/cloudsql-instances\": instance.connectionName,\n \"run.googleapis.com/client-name\": \"demo\",\n },\n },\n },\n autogenerateRevisionName: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"cloudrun-sql\",\n region=\"us-east1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n \"metadata\": {\n \"annotations\": {\n \"autoscaling_knative_dev_max_scale\": \"1000\",\n \"run_googleapis_com_cloudsql_instances\": instance.connection_name,\n \"run_googleapis_com_client_name\": \"demo\",\n },\n },\n },\n autogenerate_revision_name=True)\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.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"cloudrun-sql\",\n Region = \"us-east1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\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 Metadata = new Gcp.CloudRun.Inputs.ServiceTemplateMetadataArgs\n {\n Annotations = \n {\n { \"autoscaling.knative.dev/maxScale\", \"1000\" },\n { \"run.googleapis.com/cloudsql-instances\", instance.ConnectionName },\n { \"run.googleapis.com/client-name\", \"demo\" },\n },\n },\n },\n AutogenerateRevisionName = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-sql\"),\n\t\t\tRegion: pulumi.String(\"us-east1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\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\tMetadata: \u0026cloudrun.ServiceTemplateMetadataArgs{\n\t\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\t\"autoscaling.knative.dev/maxScale\": pulumi.String(\"1000\"),\n\t\t\t\t\t\t\"run.googleapis.com/cloudsql-instances\": instance.ConnectionName,\n\t\t\t\t\t\t\"run.googleapis.com/client-name\": pulumi.String(\"demo\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutogenerateRevisionName: pulumi.Bool(true),\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.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.ServiceTemplateMetadataArgs;\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 DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"cloudrun-sql\")\n .region(\"us-east1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\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 .metadata(ServiceTemplateMetadataArgs.builder()\n .annotations(Map.ofEntries(\n Map.entry(\"autoscaling.knative.dev/maxScale\", \"1000\"),\n Map.entry(\"run.googleapis.com/cloudsql-instances\", instance.connectionName()),\n Map.entry(\"run.googleapis.com/client-name\", \"demo\")\n ))\n .build())\n .build())\n .autogenerateRevisionName(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n metadata:\n annotations:\n autoscaling.knative.dev/maxScale: '1000'\n run.googleapis.com/cloudsql-instances: ${instance.connectionName}\n run.googleapis.com/client-name: demo\n autogenerateRevisionName: true\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: cloudrun-sql\n region: us-east1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Noauth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n});\nconst noauth = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/run.invoker\",\n members: [\"allUsers\"],\n }],\n});\nconst noauthIamPolicy = new gcp.cloudrun.IamPolicy(\"noauth\", {\n location: _default.location,\n project: _default.project,\n service: _default.name,\n policyData: noauth.then(noauth =\u003e noauth.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n })\nnoauth = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/run.invoker\",\n \"members\": [\"allUsers\"],\n}])\nnoauth_iam_policy = gcp.cloudrun.IamPolicy(\"noauth\",\n location=default.location,\n project=default.project,\n service=default.name,\n policy_data=noauth.policy_data)\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.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\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 });\n\n var noauth = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/run.invoker\",\n Members = new[]\n {\n \"allUsers\",\n },\n },\n },\n });\n\n var noauthIamPolicy = new Gcp.CloudRun.IamPolicy(\"noauth\", new()\n {\n Location = @default.Location,\n Project = @default.Project,\n Service = @default.Name,\n PolicyData = noauth.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnoauth, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/run.invoker\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"allUsers\",\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 = cloudrun.NewIamPolicy(ctx, \"noauth\", \u0026cloudrun.IamPolicyArgs{\n\t\t\tLocation: _default.Location,\n\t\t\tProject: _default.Project,\n\t\t\tService: _default.Name,\n\t\t\tPolicyData: pulumi.String(noauth.PolicyData),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.cloudrun.IamPolicy;\nimport com.pulumi.gcp.cloudrun.IamPolicyArgs;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\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 .build());\n\n final var noauth = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/run.invoker\")\n .members(\"allUsers\")\n .build())\n .build());\n\n var noauthIamPolicy = new IamPolicy(\"noauthIamPolicy\", IamPolicyArgs.builder()\n .location(default_.location())\n .project(default_.project())\n .service(default_.name())\n .policyData(noauth.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n noauthIamPolicy:\n type: gcp:cloudrun:IamPolicy\n name: noauth\n properties:\n location: ${default.location}\n project: ${default.project}\n service: ${default.name}\n policyData: ${noauth.policyData}\nvariables:\n noauth:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/run.invoker\n members:\n - allUsers\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Probes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n startupProbe: {\n initialDelaySeconds: 0,\n timeoutSeconds: 1,\n periodSeconds: 3,\n failureThreshold: 1,\n tcpSocket: {\n port: 8080,\n },\n },\n livenessProbe: {\n httpGet: {\n path: \"/\",\n },\n },\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"startup_probe\": {\n \"initial_delay_seconds\": 0,\n \"timeout_seconds\": 1,\n \"period_seconds\": 3,\n \"failure_threshold\": 1,\n \"tcp_socket\": {\n \"port\": 8080,\n },\n },\n \"liveness_probe\": {\n \"http_get\": {\n \"path\": \"/\",\n },\n },\n }],\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latest_revision\": 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 @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\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 StartupProbe = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeArgs\n {\n InitialDelaySeconds = 0,\n TimeoutSeconds = 1,\n PeriodSeconds = 3,\n FailureThreshold = 1,\n TcpSocket = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeTcpSocketArgs\n {\n Port = 8080,\n },\n },\n LivenessProbe = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerLivenessProbeArgs\n {\n HttpGet = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerLivenessProbeHttpGetArgs\n {\n Path = \"/\",\n },\n },\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});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\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\tStartupProbe: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeArgs{\n\t\t\t\t\t\t\t\tInitialDelaySeconds: pulumi.Int(0),\n\t\t\t\t\t\t\t\tTimeoutSeconds: pulumi.Int(1),\n\t\t\t\t\t\t\t\tPeriodSeconds: pulumi.Int(3),\n\t\t\t\t\t\t\t\tFailureThreshold: pulumi.Int(1),\n\t\t\t\t\t\t\t\tTcpSocket: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeTcpSocketArgs{\n\t\t\t\t\t\t\t\t\tPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tLivenessProbe: \u0026cloudrun.ServiceTemplateSpecContainerLivenessProbeArgs{\n\t\t\t\t\t\t\t\tHttpGet: \u0026cloudrun.ServiceTemplateSpecContainerLivenessProbeHttpGetArgs{\n\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t},\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\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\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 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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\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 .startupProbe(ServiceTemplateSpecContainerStartupProbeArgs.builder()\n .initialDelaySeconds(0)\n .timeoutSeconds(1)\n .periodSeconds(3)\n .failureThreshold(1)\n .tcpSocket(ServiceTemplateSpecContainerStartupProbeTcpSocketArgs.builder()\n .port(8080)\n .build())\n .build())\n .livenessProbe(ServiceTemplateSpecContainerLivenessProbeArgs.builder()\n .httpGet(ServiceTemplateSpecContainerLivenessProbeHttpGetArgs.builder()\n .path(\"/\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n startupProbe:\n initialDelaySeconds: 0\n timeoutSeconds: 1\n periodSeconds: 3\n failureThreshold: 1\n tcpSocket:\n port: 8080\n livenessProbe:\n httpGet:\n path: /\n traffics:\n - percent: 100\n latestRevision: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Multicontainer\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n metadata: {\n annotations: {\n \"run.googleapis.com/launch-stage\": \"BETA\",\n },\n },\n template: {\n metadata: {\n annotations: {\n \"run.googleapis.com/container-dependencies\": JSON.stringify({\n \"hello-1\": [\"hello-2\"],\n }),\n },\n },\n spec: {\n containers: [\n {\n name: \"hello-1\",\n ports: [{\n containerPort: 8080,\n }],\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n volumeMounts: [{\n name: \"shared-volume\",\n mountPath: \"/mnt/shared\",\n }],\n },\n {\n name: \"hello-2\",\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n envs: [{\n name: \"PORT\",\n value: \"8081\",\n }],\n startupProbe: {\n httpGet: {\n port: 8081,\n },\n },\n volumeMounts: [{\n name: \"shared-volume\",\n mountPath: \"/mnt/shared\",\n }],\n },\n ],\n volumes: [{\n name: \"shared-volume\",\n emptyDir: {\n medium: \"Memory\",\n sizeLimit: \"128Mi\",\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n metadata={\n \"annotations\": {\n \"run_googleapis_com_launch_stage\": \"BETA\",\n },\n },\n template={\n \"metadata\": {\n \"annotations\": {\n \"run_googleapis_com_container_dependencies\": json.dumps({\n \"hello_1\": [\"hello-2\"],\n }),\n },\n },\n \"spec\": {\n \"containers\": [\n {\n \"name\": \"hello-1\",\n \"ports\": [{\n \"container_port\": 8080,\n }],\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"volume_mounts\": [{\n \"name\": \"shared-volume\",\n \"mount_path\": \"/mnt/shared\",\n }],\n },\n {\n \"name\": \"hello-2\",\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"envs\": [{\n \"name\": \"PORT\",\n \"value\": \"8081\",\n }],\n \"startup_probe\": {\n \"http_get\": {\n \"port\": 8081,\n },\n },\n \"volume_mounts\": [{\n \"name\": \"shared-volume\",\n \"mount_path\": \"/mnt/shared\",\n }],\n },\n ],\n \"volumes\": [{\n \"name\": \"shared-volume\",\n \"empty_dir\": {\n \"medium\": \"Memory\",\n \"size_limit\": \"128Mi\",\n },\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Metadata = new Gcp.CloudRun.Inputs.ServiceMetadataArgs\n {\n Annotations = \n {\n { \"run.googleapis.com/launch-stage\", \"BETA\" },\n },\n },\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Metadata = new Gcp.CloudRun.Inputs.ServiceTemplateMetadataArgs\n {\n Annotations = \n {\n { \"run.googleapis.com/container-dependencies\", JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"hello-1\"] = new[]\n {\n \"hello-2\",\n },\n }) },\n },\n },\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Name = \"hello-1\",\n Ports = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerPortArgs\n {\n ContainerPort = 8080,\n },\n },\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerVolumeMountArgs\n {\n Name = \"shared-volume\",\n MountPath = \"/mnt/shared\",\n },\n },\n },\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Name = \"hello-2\",\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Envs = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerEnvArgs\n {\n Name = \"PORT\",\n Value = \"8081\",\n },\n },\n StartupProbe = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeArgs\n {\n HttpGet = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeHttpGetArgs\n {\n Port = 8081,\n },\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerVolumeMountArgs\n {\n Name = \"shared-volume\",\n MountPath = \"/mnt/shared\",\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecVolumeArgs\n {\n Name = \"shared-volume\",\n EmptyDir = new Gcp.CloudRun.Inputs.ServiceTemplateSpecVolumeEmptyDirArgs\n {\n Medium = \"Memory\",\n SizeLimit = \"128Mi\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"hello-1\": []string{\n\t\t\t\t\"hello-2\",\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tMetadata: \u0026cloudrun.ServiceMetadataArgs{\n\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\"run.googleapis.com/launch-stage\": pulumi.String(\"BETA\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tMetadata: \u0026cloudrun.ServiceTemplateMetadataArgs{\n\t\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\t\"run.googleapis.com/container-dependencies\": pulumi.String(json0),\n\t\t\t\t\t},\n\t\t\t\t},\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\tName: pulumi.String(\"hello-1\"),\n\t\t\t\t\t\t\tPorts: cloudrun.ServiceTemplateSpecContainerPortArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerPortArgs{\n\t\t\t\t\t\t\t\t\tContainerPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t\tVolumeMounts: cloudrun.ServiceTemplateSpecContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"shared-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt/shared\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"hello-2\"),\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t\tEnvs: cloudrun.ServiceTemplateSpecContainerEnvArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerEnvArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PORT\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"8081\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tStartupProbe: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeArgs{\n\t\t\t\t\t\t\t\tHttpGet: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeHttpGetArgs{\n\t\t\t\t\t\t\t\t\tPort: pulumi.Int(8081),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tVolumeMounts: cloudrun.ServiceTemplateSpecContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"shared-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt/shared\"),\n\t\t\t\t\t\t\t\t},\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\tVolumes: cloudrun.ServiceTemplateSpecVolumeArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"shared-volume\"),\n\t\t\t\t\t\t\tEmptyDir: \u0026cloudrun.ServiceTemplateSpecVolumeEmptyDirArgs{\n\t\t\t\t\t\t\t\tMedium: pulumi.String(\"Memory\"),\n\t\t\t\t\t\t\t\tSizeLimit: pulumi.String(\"128Mi\"),\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.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .metadata(ServiceMetadataArgs.builder()\n .annotations(Map.of(\"run.googleapis.com/launch-stage\", \"BETA\"))\n .build())\n .template(ServiceTemplateArgs.builder()\n .metadata(ServiceTemplateMetadataArgs.builder()\n .annotations(Map.of(\"run.googleapis.com/container-dependencies\", serializeJson(\n jsonObject(\n jsonProperty(\"hello-1\", jsonArray(\"hello-2\"))\n ))))\n .build())\n .spec(ServiceTemplateSpecArgs.builder()\n .containers( \n ServiceTemplateSpecContainerArgs.builder()\n .name(\"hello-1\")\n .ports(ServiceTemplateSpecContainerPortArgs.builder()\n .containerPort(8080)\n .build())\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .volumeMounts(ServiceTemplateSpecContainerVolumeMountArgs.builder()\n .name(\"shared-volume\")\n .mountPath(\"/mnt/shared\")\n .build())\n .build(),\n ServiceTemplateSpecContainerArgs.builder()\n .name(\"hello-2\")\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .envs(ServiceTemplateSpecContainerEnvArgs.builder()\n .name(\"PORT\")\n .value(\"8081\")\n .build())\n .startupProbe(ServiceTemplateSpecContainerStartupProbeArgs.builder()\n .httpGet(ServiceTemplateSpecContainerStartupProbeHttpGetArgs.builder()\n .port(8081)\n .build())\n .build())\n .volumeMounts(ServiceTemplateSpecContainerVolumeMountArgs.builder()\n .name(\"shared-volume\")\n .mountPath(\"/mnt/shared\")\n .build())\n .build())\n .volumes(ServiceTemplateSpecVolumeArgs.builder()\n .name(\"shared-volume\")\n .emptyDir(ServiceTemplateSpecVolumeEmptyDirArgs.builder()\n .medium(\"Memory\")\n .sizeLimit(\"128Mi\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n metadata:\n annotations:\n run.googleapis.com/launch-stage: BETA\n template:\n metadata:\n annotations:\n run.googleapis.com/container-dependencies:\n fn::toJSON:\n hello-1:\n - hello-2\n spec:\n containers:\n - name: hello-1\n ports:\n - containerPort: 8080\n image: us-docker.pkg.dev/cloudrun/container/hello\n volumeMounts:\n - name: shared-volume\n mountPath: /mnt/shared\n - name: hello-2\n image: us-docker.pkg.dev/cloudrun/container/hello\n envs:\n - name: PORT\n value: '8081'\n startupProbe:\n httpGet:\n port: 8081\n volumeMounts:\n - name: shared-volume\n mountPath: /mnt/shared\n volumes:\n - name: shared-volume\n emptyDir:\n medium: Memory\n sizeLimit: 128Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `locations/{{location}}/namespaces/{{project}}/services/{{name}}`\n\n* `{{location}}/{{project}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrun/service:Service default locations/{{location}}/namespaces/{{project}}/services/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/service:Service default {{location}}/{{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/service:Service default {{location}}/{{name}}\n```\n\n", "properties": { "autogenerateRevisionName": { "type": "boolean", @@ -138556,7 +138556,7 @@ } }, "gcp:cloudrunv2/job:Job": { - "description": "A Cloud Run Job resource that references a container image which is run to completion.\n\n\nTo get more information about Job, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v2/projects.locations.jobs)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/)\n\n## Example Usage\n\n### Cloudrunv2 Job Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\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 @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\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.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\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 Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Limits\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n resources: {\n limits: {\n cpu: \"2\",\n memory: \"1024Mi\",\n },\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n \"resources\": {\n \"limits\": {\n \"cpu\": \"2\",\n \"memory\": \"1024Mi\",\n },\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 @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n Resources = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerResourcesArgs\n {\n Limits = \n {\n { \"cpu\", \"2\" },\n { \"memory\", \"1024Mi\" },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t\tResources: \u0026cloudrunv2.JobTemplateTemplateContainerResourcesArgs{\n\t\t\t\t\t\t\t\tLimits: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"cpu\": pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\t\t\"memory\": pulumi.String(\"1024Mi\"),\n\t\t\t\t\t\t\t\t},\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.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\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 Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .resources(JobTemplateTemplateContainerResourcesArgs.builder()\n .limits(Map.ofEntries(\n Map.entry(\"cpu\", \"2\"),\n Map.entry(\"memory\", \"1024Mi\")\n ))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n resources:\n limits:\n cpu: '2'\n memory: 1024Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Sql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n auto: {},\n },\n});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"cloudrun-sql\",\n region: \"us-central1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n template: {\n template: {\n volumes: [{\n name: \"cloudsql\",\n cloudSqlInstance: {\n instances: [instance.connectionName],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n envs: [\n {\n name: \"FOO\",\n value: \"bar\",\n },\n {\n name: \"latestdclsecret\",\n valueSource: {\n secretKeyRef: {\n secret: secret.secretId,\n version: \"1\",\n },\n },\n },\n ],\n volumeMounts: [{\n name: \"cloudsql\",\n mountPath: \"/cloudsql\",\n }],\n }],\n },\n },\n});\nconst project = gcp.organizations.getProject({});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"auto\": {},\n })\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"cloudrun-sql\",\n region=\"us-central1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n template={\n \"template\": {\n \"volumes\": [{\n \"name\": \"cloudsql\",\n \"cloudSqlInstance\": {\n \"instances\": [instance.connection_name],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n \"envs\": [\n {\n \"name\": \"FOO\",\n \"value\": \"bar\",\n },\n {\n \"name\": \"latestdclsecret\",\n \"valueSource\": {\n \"secretKeyRef\": {\n \"secret\": secret.secret_id,\n \"version\": \"1\",\n },\n },\n },\n ],\n \"volumeMounts\": [{\n \"name\": \"cloudsql\",\n \"mountPath\": \"/cloudsql\",\n }],\n }],\n },\n })\nproject = gcp.organizations.get_project()\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\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 secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"cloudrun-sql\",\n Region = \"us-central1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeArgs\n {\n Name = \"cloudsql\",\n CloudSqlInstance = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeCloudSqlInstanceArgs\n {\n Instances = new[]\n {\n instance.ConnectionName,\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n Envs = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerEnvArgs\n {\n Name = \"FOO\",\n Value = \"bar\",\n },\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerEnvArgs\n {\n Name = \"latestdclsecret\",\n ValueSource = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerEnvValueSourceArgs\n {\n SecretKeyRef = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerEnvValueSourceSecretKeyRefArgs\n {\n Secret = secret.SecretId,\n Version = \"1\",\n },\n },\n },\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerVolumeMountArgs\n {\n Name = \"cloudsql\",\n MountPath = \"/cloudsql\",\n },\n },\n },\n },\n },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-sql\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tVolumes: cloudrunv2.JobTemplateTemplateVolumeArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\t\tCloudSqlInstance: \u0026cloudrunv2.JobTemplateTemplateVolumeCloudSqlInstanceArgs{\n\t\t\t\t\t\t\t\tInstances: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tinstance.ConnectionName,\n\t\t\t\t\t\t\t\t},\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\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t\tEnvs: cloudrunv2.JobTemplateTemplateContainerEnvArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"FOO\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"latestdclsecret\"),\n\t\t\t\t\t\t\t\t\tValueSource: \u0026cloudrunv2.JobTemplateTemplateContainerEnvValueSourceArgs{\n\t\t\t\t\t\t\t\t\t\tSecretKeyRef: \u0026cloudrunv2.JobTemplateTemplateContainerEnvValueSourceSecretKeyRefArgs{\n\t\t\t\t\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tVolumeMounts: cloudrunv2.JobTemplateTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/cloudsql\"),\n\t\t\t\t\t\t\t\t},\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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number)),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\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 secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"cloudrun-sql\")\n .region(\"us-central1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .volumes(JobTemplateTemplateVolumeArgs.builder()\n .name(\"cloudsql\")\n .cloudSqlInstance(JobTemplateTemplateVolumeCloudSqlInstanceArgs.builder()\n .instances(instance.connectionName())\n .build())\n .build())\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .envs( \n JobTemplateTemplateContainerEnvArgs.builder()\n .name(\"FOO\")\n .value(\"bar\")\n .build(),\n JobTemplateTemplateContainerEnvArgs.builder()\n .name(\"latestdclsecret\")\n .valueSource(JobTemplateTemplateContainerEnvValueSourceArgs.builder()\n .secretKeyRef(JobTemplateTemplateContainerEnvValueSourceSecretKeyRefArgs.builder()\n .secret(secret.secretId())\n .version(\"1\")\n .build())\n .build())\n .build())\n .volumeMounts(JobTemplateTemplateContainerVolumeMountArgs.builder()\n .name(\"cloudsql\")\n .mountPath(\"/cloudsql\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n template:\n template:\n volumes:\n - name: cloudsql\n cloudSqlInstance:\n instances:\n - ${instance.connectionName}\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n envs:\n - name: FOO\n value: bar\n - name: latestdclsecret\n valueSource:\n secretKeyRef:\n secret: ${secret.secretId}\n version: '1'\n volumeMounts:\n - name: cloudsql\n mountPath: /cloudsql\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: cloudrun-sql\n region: us-central1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Vpcaccess\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customTestNetwork = new gcp.compute.Network(\"custom_test\", {\n name: \"run-network\",\n autoCreateSubnetworks: false,\n});\nconst customTest = new gcp.compute.Subnetwork(\"custom_test\", {\n name: \"run-subnetwork\",\n ipCidrRange: \"10.2.0.0/28\",\n region: \"us-central1\",\n network: customTestNetwork.id,\n});\nconst connector = new gcp.vpcaccess.Connector(\"connector\", {\n name: \"run-vpc\",\n subnet: {\n name: customTest.name,\n },\n machineType: \"e2-standard-4\",\n minInstances: 2,\n maxInstances: 3,\n region: \"us-central1\",\n});\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n vpcAccess: {\n connector: connector.id,\n egress: \"ALL_TRAFFIC\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test_network = gcp.compute.Network(\"custom_test\",\n name=\"run-network\",\n auto_create_subnetworks=False)\ncustom_test = gcp.compute.Subnetwork(\"custom_test\",\n name=\"run-subnetwork\",\n ip_cidr_range=\"10.2.0.0/28\",\n region=\"us-central1\",\n network=custom_test_network.id)\nconnector = gcp.vpcaccess.Connector(\"connector\",\n name=\"run-vpc\",\n subnet={\n \"name\": custom_test.name,\n },\n machine_type=\"e2-standard-4\",\n min_instances=2,\n max_instances=3,\n region=\"us-central1\")\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n \"vpcAccess\": {\n \"connector\": connector.id,\n \"egress\": \"ALL_TRAFFIC\",\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 customTestNetwork = new Gcp.Compute.Network(\"custom_test\", new()\n {\n Name = \"run-network\",\n AutoCreateSubnetworks = false,\n });\n\n var customTest = new Gcp.Compute.Subnetwork(\"custom_test\", new()\n {\n Name = \"run-subnetwork\",\n IpCidrRange = \"10.2.0.0/28\",\n Region = \"us-central1\",\n Network = customTestNetwork.Id,\n });\n\n var connector = new Gcp.VpcAccess.Connector(\"connector\", new()\n {\n Name = \"run-vpc\",\n Subnet = new Gcp.VpcAccess.Inputs.ConnectorSubnetArgs\n {\n Name = customTest.Name,\n },\n MachineType = \"e2-standard-4\",\n MinInstances = 2,\n MaxInstances = 3,\n Region = \"us-central1\",\n });\n\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVpcAccessArgs\n {\n Connector = connector.Id,\n Egress = \"ALL_TRAFFIC\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vpcaccess\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomTestNetwork, err := compute.NewNetwork(ctx, \"custom_test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"run-network\"),\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\tcustomTest, err := compute.NewSubnetwork(ctx, \"custom_test\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"run-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: customTestNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tconnector, err := vpcaccess.NewConnector(ctx, \"connector\", \u0026vpcaccess.ConnectorArgs{\n\t\t\tName: pulumi.String(\"run-vpc\"),\n\t\t\tSubnet: \u0026vpcaccess.ConnectorSubnetArgs{\n\t\t\t\tName: customTest.Name,\n\t\t\t},\n\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\tMinInstances: pulumi.Int(2),\n\t\t\tMaxInstances: pulumi.Int(3),\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\t_, err = cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcAccess: \u0026cloudrunv2.JobTemplateTemplateVpcAccessArgs{\n\t\t\t\t\t\tConnector: connector.ID(),\n\t\t\t\t\t\tEgress: pulumi.String(\"ALL_TRAFFIC\"),\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.vpcaccess.Connector;\nimport com.pulumi.gcp.vpcaccess.ConnectorArgs;\nimport com.pulumi.gcp.vpcaccess.inputs.ConnectorSubnetArgs;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateVpcAccessArgs;\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 customTestNetwork = new Network(\"customTestNetwork\", NetworkArgs.builder()\n .name(\"run-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var customTest = new Subnetwork(\"customTest\", SubnetworkArgs.builder()\n .name(\"run-subnetwork\")\n .ipCidrRange(\"10.2.0.0/28\")\n .region(\"us-central1\")\n .network(customTestNetwork.id())\n .build());\n\n var connector = new Connector(\"connector\", ConnectorArgs.builder()\n .name(\"run-vpc\")\n .subnet(ConnectorSubnetArgs.builder()\n .name(customTest.name())\n .build())\n .machineType(\"e2-standard-4\")\n .minInstances(2)\n .maxInstances(3)\n .region(\"us-central1\")\n .build());\n\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .build())\n .vpcAccess(JobTemplateTemplateVpcAccessArgs.builder()\n .connector(connector.id())\n .egress(\"ALL_TRAFFIC\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n vpcAccess:\n connector: ${connector.id}\n egress: ALL_TRAFFIC\n connector:\n type: gcp:vpcaccess:Connector\n properties:\n name: run-vpc\n subnet:\n name: ${customTest.name}\n machineType: e2-standard-4\n minInstances: 2\n maxInstances: 3\n region: us-central1\n customTest:\n type: gcp:compute:Subnetwork\n name: custom_test\n properties:\n name: run-subnetwork\n ipCidrRange: 10.2.0.0/28\n region: us-central1\n network: ${customTestNetwork.id}\n customTestNetwork:\n type: gcp:compute:Network\n name: custom_test\n properties:\n name: run-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Directvpc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n launchStage: \"GA\",\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n vpcAccess: {\n networkInterfaces: [{\n network: \"default\",\n subnetwork: \"default\",\n tags: [\n \"tag1\",\n \"tag2\",\n \"tag3\",\n ],\n }],\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n launch_stage=\"GA\",\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n \"vpcAccess\": {\n \"networkInterfaces\": [{\n \"network\": \"default\",\n \"subnetwork\": \"default\",\n \"tags\": [\n \"tag1\",\n \"tag2\",\n \"tag3\",\n ],\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 @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n LaunchStage = \"GA\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVpcAccessArgs\n {\n NetworkInterfaces = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVpcAccessNetworkInterfaceArgs\n {\n Network = \"default\",\n Subnetwork = \"default\",\n Tags = new[]\n {\n \"tag1\",\n \"tag2\",\n \"tag3\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLaunchStage: pulumi.String(\"GA\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcAccess: \u0026cloudrunv2.JobTemplateTemplateVpcAccessArgs{\n\t\t\t\t\t\tNetworkInterfaces: cloudrunv2.JobTemplateTemplateVpcAccessNetworkInterfaceArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVpcAccessNetworkInterfaceArgs{\n\t\t\t\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"tag2\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"tag3\"),\n\t\t\t\t\t\t\t\t},\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.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateVpcAccessArgs;\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 Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .launchStage(\"GA\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .build())\n .vpcAccess(JobTemplateTemplateVpcAccessArgs.builder()\n .networkInterfaces(JobTemplateTemplateVpcAccessNetworkInterfaceArgs.builder()\n .network(\"default\")\n .subnetwork(\"default\")\n .tags( \n \"tag1\",\n \"tag2\",\n \"tag3\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n launchStage: GA\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n vpcAccess:\n networkInterfaces:\n - network: default\n subnetwork: default\n tags:\n - tag1\n - tag2\n - tag3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Secret\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst project = gcp.organizations.getProject({});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n template: {\n template: {\n volumes: [{\n name: \"a-volume\",\n secret: {\n secret: secret.secretId,\n defaultMode: 292,\n items: [{\n version: \"1\",\n path: \"my-secret\",\n mode: 256,\n }],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n volumeMounts: [{\n name: \"a-volume\",\n mountPath: \"/secrets\",\n }],\n }],\n },\n },\n}, {\n dependsOn: [\n secret_version_data,\n secret_access,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"auto\": {},\n })\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\nproject = gcp.organizations.get_project()\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n template={\n \"template\": {\n \"volumes\": [{\n \"name\": \"a-volume\",\n \"secret\": {\n \"secret\": secret.secret_id,\n \"defaultMode\": 292,\n \"items\": [{\n \"version\": \"1\",\n \"path\": \"my-secret\",\n \"mode\": 256,\n }],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n \"volumeMounts\": [{\n \"name\": \"a-volume\",\n \"mountPath\": \"/secrets\",\n }],\n }],\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[\n secret_version_data,\n secret_access,\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 secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeArgs\n {\n Name = \"a-volume\",\n Secret = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeSecretArgs\n {\n Secret = secret.SecretId,\n DefaultMode = 292,\n Items = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeSecretItemArgs\n {\n Version = \"1\",\n Path = \"my-secret\",\n Mode = 256,\n },\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerVolumeMountArgs\n {\n Name = \"a-volume\",\n MountPath = \"/secrets\",\n },\n },\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_data,\n secret_access,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\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\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number)),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tVolumes: cloudrunv2.JobTemplateTemplateVolumeArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\t\tSecret: \u0026cloudrunv2.JobTemplateTemplateVolumeSecretArgs{\n\t\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\t\tDefaultMode: pulumi.Int(292),\n\t\t\t\t\t\t\t\tItems: cloudrunv2.JobTemplateTemplateVolumeSecretItemArray{\n\t\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVolumeSecretItemArgs{\n\t\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"my-secret\"),\n\t\t\t\t\t\t\t\t\t\tMode: pulumi.Int(256),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t\tVolumeMounts: cloudrunv2.JobTemplateTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/secrets\"),\n\t\t\t\t\t\t\t\t},\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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_data,\n\t\t\tsecret_access,\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.SecretReplicationAutoArgs;\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.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\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 secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .volumes(JobTemplateTemplateVolumeArgs.builder()\n .name(\"a-volume\")\n .secret(JobTemplateTemplateVolumeSecretArgs.builder()\n .secret(secret.secretId())\n .defaultMode(292)\n .items(JobTemplateTemplateVolumeSecretItemArgs.builder()\n .version(\"1\")\n .path(\"my-secret\")\n .mode(256)\n .build())\n .build())\n .build())\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .volumeMounts(JobTemplateTemplateContainerVolumeMountArgs.builder()\n .name(\"a-volume\")\n .mountPath(\"/secrets\")\n .build())\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n secret_version_data,\n secret_access)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n template:\n template:\n volumes:\n - name: a-volume\n secret:\n secret: ${secret.secretId}\n defaultMode: 292\n items:\n - version: '1'\n path: my-secret\n mode: 256\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n volumeMounts:\n - name: a-volume\n mountPath: /secrets\n options:\n dependson:\n - ${[\"secret-version-data\"]}\n - ${[\"secret-access\"]}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Emptydir\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n launchStage: \"BETA\",\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n volumeMounts: [{\n name: \"empty-dir-volume\",\n mountPath: \"/mnt\",\n }],\n }],\n volumes: [{\n name: \"empty-dir-volume\",\n emptyDir: {\n medium: \"MEMORY\",\n sizeLimit: \"128Mi\",\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n launch_stage=\"BETA\",\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n \"volumeMounts\": [{\n \"name\": \"empty-dir-volume\",\n \"mountPath\": \"/mnt\",\n }],\n }],\n \"volumes\": [{\n \"name\": \"empty-dir-volume\",\n \"emptyDir\": {\n \"medium\": \"MEMORY\",\n \"sizeLimit\": \"128Mi\",\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 @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n LaunchStage = \"BETA\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerVolumeMountArgs\n {\n Name = \"empty-dir-volume\",\n MountPath = \"/mnt\",\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeArgs\n {\n Name = \"empty-dir-volume\",\n EmptyDir = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeEmptyDirArgs\n {\n Medium = \"MEMORY\",\n SizeLimit = \"128Mi\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t\tVolumeMounts: cloudrunv2.JobTemplateTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt\"),\n\t\t\t\t\t\t\t\t},\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\tVolumes: cloudrunv2.JobTemplateTemplateVolumeArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\t\tEmptyDir: \u0026cloudrunv2.JobTemplateTemplateVolumeEmptyDirArgs{\n\t\t\t\t\t\t\t\tMedium: pulumi.String(\"MEMORY\"),\n\t\t\t\t\t\t\t\tSizeLimit: pulumi.String(\"128Mi\"),\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.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\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 Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .launchStage(\"BETA\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .volumeMounts(JobTemplateTemplateContainerVolumeMountArgs.builder()\n .name(\"empty-dir-volume\")\n .mountPath(\"/mnt\")\n .build())\n .build())\n .volumes(JobTemplateTemplateVolumeArgs.builder()\n .name(\"empty-dir-volume\")\n .emptyDir(JobTemplateTemplateVolumeEmptyDirArgs.builder()\n .medium(\"MEMORY\")\n .sizeLimit(\"128Mi\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n launchStage: BETA\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n volumeMounts:\n - name: empty-dir-volume\n mountPath: /mnt\n volumes:\n - name: empty-dir-volume\n emptyDir:\n medium: MEMORY\n sizeLimit: 128Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Run Job\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n startExecutionToken: \"start-once-created\",\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n start_execution_token=\"start-once-created\",\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\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 @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n StartExecutionToken = \"start-once-created\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStartExecutionToken: pulumi.String(\"start-once-created\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\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.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\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 Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .startExecutionToken(\"start-once-created\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n startExecutionToken: start-once-created\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJob can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/jobs/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Job can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrunv2/job:Job default projects/{{project}}/locations/{{location}}/jobs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/job:Job default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/job:Job default {{location}}/{{name}}\n```\n\n", + "description": "A Cloud Run Job resource that references a container image which is run to completion.\n\n\nTo get more information about Job, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v2/projects.locations.jobs)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/)\n\n## Example Usage\n\n### Cloudrunv2 Job Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\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 @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\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.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\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 Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Limits\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n resources: {\n limits: {\n cpu: \"2\",\n memory: \"1024Mi\",\n },\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n \"resources\": {\n \"limits\": {\n \"cpu\": \"2\",\n \"memory\": \"1024Mi\",\n },\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 @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n Resources = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerResourcesArgs\n {\n Limits = \n {\n { \"cpu\", \"2\" },\n { \"memory\", \"1024Mi\" },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t\tResources: \u0026cloudrunv2.JobTemplateTemplateContainerResourcesArgs{\n\t\t\t\t\t\t\t\tLimits: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"cpu\": pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\t\t\"memory\": pulumi.String(\"1024Mi\"),\n\t\t\t\t\t\t\t\t},\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.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\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 Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .resources(JobTemplateTemplateContainerResourcesArgs.builder()\n .limits(Map.ofEntries(\n Map.entry(\"cpu\", \"2\"),\n Map.entry(\"memory\", \"1024Mi\")\n ))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n resources:\n limits:\n cpu: '2'\n memory: 1024Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Sql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n auto: {},\n },\n});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"cloudrun-sql\",\n region: \"us-central1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n template: {\n template: {\n volumes: [{\n name: \"cloudsql\",\n cloudSqlInstance: {\n instances: [instance.connectionName],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n envs: [\n {\n name: \"FOO\",\n value: \"bar\",\n },\n {\n name: \"latestdclsecret\",\n valueSource: {\n secretKeyRef: {\n secret: secret.secretId,\n version: \"1\",\n },\n },\n },\n ],\n volumeMounts: [{\n name: \"cloudsql\",\n mountPath: \"/cloudsql\",\n }],\n }],\n },\n },\n});\nconst project = gcp.organizations.getProject({});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"auto\": {},\n })\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"cloudrun-sql\",\n region=\"us-central1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n template={\n \"template\": {\n \"volumes\": [{\n \"name\": \"cloudsql\",\n \"cloud_sql_instance\": {\n \"instances\": [instance.connection_name],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n \"envs\": [\n {\n \"name\": \"FOO\",\n \"value\": \"bar\",\n },\n {\n \"name\": \"latestdclsecret\",\n \"value_source\": {\n \"secret_key_ref\": {\n \"secret\": secret.secret_id,\n \"version\": \"1\",\n },\n },\n },\n ],\n \"volume_mounts\": [{\n \"name\": \"cloudsql\",\n \"mount_path\": \"/cloudsql\",\n }],\n }],\n },\n })\nproject = gcp.organizations.get_project()\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\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 secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"cloudrun-sql\",\n Region = \"us-central1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeArgs\n {\n Name = \"cloudsql\",\n CloudSqlInstance = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeCloudSqlInstanceArgs\n {\n Instances = new[]\n {\n instance.ConnectionName,\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n Envs = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerEnvArgs\n {\n Name = \"FOO\",\n Value = \"bar\",\n },\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerEnvArgs\n {\n Name = \"latestdclsecret\",\n ValueSource = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerEnvValueSourceArgs\n {\n SecretKeyRef = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerEnvValueSourceSecretKeyRefArgs\n {\n Secret = secret.SecretId,\n Version = \"1\",\n },\n },\n },\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerVolumeMountArgs\n {\n Name = \"cloudsql\",\n MountPath = \"/cloudsql\",\n },\n },\n },\n },\n },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-sql\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tVolumes: cloudrunv2.JobTemplateTemplateVolumeArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\t\tCloudSqlInstance: \u0026cloudrunv2.JobTemplateTemplateVolumeCloudSqlInstanceArgs{\n\t\t\t\t\t\t\t\tInstances: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tinstance.ConnectionName,\n\t\t\t\t\t\t\t\t},\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\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t\tEnvs: cloudrunv2.JobTemplateTemplateContainerEnvArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"FOO\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"latestdclsecret\"),\n\t\t\t\t\t\t\t\t\tValueSource: \u0026cloudrunv2.JobTemplateTemplateContainerEnvValueSourceArgs{\n\t\t\t\t\t\t\t\t\t\tSecretKeyRef: \u0026cloudrunv2.JobTemplateTemplateContainerEnvValueSourceSecretKeyRefArgs{\n\t\t\t\t\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tVolumeMounts: cloudrunv2.JobTemplateTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/cloudsql\"),\n\t\t\t\t\t\t\t\t},\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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number)),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\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 secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"cloudrun-sql\")\n .region(\"us-central1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .volumes(JobTemplateTemplateVolumeArgs.builder()\n .name(\"cloudsql\")\n .cloudSqlInstance(JobTemplateTemplateVolumeCloudSqlInstanceArgs.builder()\n .instances(instance.connectionName())\n .build())\n .build())\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .envs( \n JobTemplateTemplateContainerEnvArgs.builder()\n .name(\"FOO\")\n .value(\"bar\")\n .build(),\n JobTemplateTemplateContainerEnvArgs.builder()\n .name(\"latestdclsecret\")\n .valueSource(JobTemplateTemplateContainerEnvValueSourceArgs.builder()\n .secretKeyRef(JobTemplateTemplateContainerEnvValueSourceSecretKeyRefArgs.builder()\n .secret(secret.secretId())\n .version(\"1\")\n .build())\n .build())\n .build())\n .volumeMounts(JobTemplateTemplateContainerVolumeMountArgs.builder()\n .name(\"cloudsql\")\n .mountPath(\"/cloudsql\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n template:\n template:\n volumes:\n - name: cloudsql\n cloudSqlInstance:\n instances:\n - ${instance.connectionName}\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n envs:\n - name: FOO\n value: bar\n - name: latestdclsecret\n valueSource:\n secretKeyRef:\n secret: ${secret.secretId}\n version: '1'\n volumeMounts:\n - name: cloudsql\n mountPath: /cloudsql\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: cloudrun-sql\n region: us-central1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Vpcaccess\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customTestNetwork = new gcp.compute.Network(\"custom_test\", {\n name: \"run-network\",\n autoCreateSubnetworks: false,\n});\nconst customTest = new gcp.compute.Subnetwork(\"custom_test\", {\n name: \"run-subnetwork\",\n ipCidrRange: \"10.2.0.0/28\",\n region: \"us-central1\",\n network: customTestNetwork.id,\n});\nconst connector = new gcp.vpcaccess.Connector(\"connector\", {\n name: \"run-vpc\",\n subnet: {\n name: customTest.name,\n },\n machineType: \"e2-standard-4\",\n minInstances: 2,\n maxInstances: 3,\n region: \"us-central1\",\n});\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n vpcAccess: {\n connector: connector.id,\n egress: \"ALL_TRAFFIC\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test_network = gcp.compute.Network(\"custom_test\",\n name=\"run-network\",\n auto_create_subnetworks=False)\ncustom_test = gcp.compute.Subnetwork(\"custom_test\",\n name=\"run-subnetwork\",\n ip_cidr_range=\"10.2.0.0/28\",\n region=\"us-central1\",\n network=custom_test_network.id)\nconnector = gcp.vpcaccess.Connector(\"connector\",\n name=\"run-vpc\",\n subnet={\n \"name\": custom_test.name,\n },\n machine_type=\"e2-standard-4\",\n min_instances=2,\n max_instances=3,\n region=\"us-central1\")\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n \"vpc_access\": {\n \"connector\": connector.id,\n \"egress\": \"ALL_TRAFFIC\",\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 customTestNetwork = new Gcp.Compute.Network(\"custom_test\", new()\n {\n Name = \"run-network\",\n AutoCreateSubnetworks = false,\n });\n\n var customTest = new Gcp.Compute.Subnetwork(\"custom_test\", new()\n {\n Name = \"run-subnetwork\",\n IpCidrRange = \"10.2.0.0/28\",\n Region = \"us-central1\",\n Network = customTestNetwork.Id,\n });\n\n var connector = new Gcp.VpcAccess.Connector(\"connector\", new()\n {\n Name = \"run-vpc\",\n Subnet = new Gcp.VpcAccess.Inputs.ConnectorSubnetArgs\n {\n Name = customTest.Name,\n },\n MachineType = \"e2-standard-4\",\n MinInstances = 2,\n MaxInstances = 3,\n Region = \"us-central1\",\n });\n\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVpcAccessArgs\n {\n Connector = connector.Id,\n Egress = \"ALL_TRAFFIC\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vpcaccess\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomTestNetwork, err := compute.NewNetwork(ctx, \"custom_test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"run-network\"),\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\tcustomTest, err := compute.NewSubnetwork(ctx, \"custom_test\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"run-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: customTestNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tconnector, err := vpcaccess.NewConnector(ctx, \"connector\", \u0026vpcaccess.ConnectorArgs{\n\t\t\tName: pulumi.String(\"run-vpc\"),\n\t\t\tSubnet: \u0026vpcaccess.ConnectorSubnetArgs{\n\t\t\t\tName: customTest.Name,\n\t\t\t},\n\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\tMinInstances: pulumi.Int(2),\n\t\t\tMaxInstances: pulumi.Int(3),\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\t_, err = cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcAccess: \u0026cloudrunv2.JobTemplateTemplateVpcAccessArgs{\n\t\t\t\t\t\tConnector: connector.ID(),\n\t\t\t\t\t\tEgress: pulumi.String(\"ALL_TRAFFIC\"),\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.vpcaccess.Connector;\nimport com.pulumi.gcp.vpcaccess.ConnectorArgs;\nimport com.pulumi.gcp.vpcaccess.inputs.ConnectorSubnetArgs;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateVpcAccessArgs;\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 customTestNetwork = new Network(\"customTestNetwork\", NetworkArgs.builder()\n .name(\"run-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var customTest = new Subnetwork(\"customTest\", SubnetworkArgs.builder()\n .name(\"run-subnetwork\")\n .ipCidrRange(\"10.2.0.0/28\")\n .region(\"us-central1\")\n .network(customTestNetwork.id())\n .build());\n\n var connector = new Connector(\"connector\", ConnectorArgs.builder()\n .name(\"run-vpc\")\n .subnet(ConnectorSubnetArgs.builder()\n .name(customTest.name())\n .build())\n .machineType(\"e2-standard-4\")\n .minInstances(2)\n .maxInstances(3)\n .region(\"us-central1\")\n .build());\n\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .build())\n .vpcAccess(JobTemplateTemplateVpcAccessArgs.builder()\n .connector(connector.id())\n .egress(\"ALL_TRAFFIC\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n vpcAccess:\n connector: ${connector.id}\n egress: ALL_TRAFFIC\n connector:\n type: gcp:vpcaccess:Connector\n properties:\n name: run-vpc\n subnet:\n name: ${customTest.name}\n machineType: e2-standard-4\n minInstances: 2\n maxInstances: 3\n region: us-central1\n customTest:\n type: gcp:compute:Subnetwork\n name: custom_test\n properties:\n name: run-subnetwork\n ipCidrRange: 10.2.0.0/28\n region: us-central1\n network: ${customTestNetwork.id}\n customTestNetwork:\n type: gcp:compute:Network\n name: custom_test\n properties:\n name: run-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Directvpc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n launchStage: \"GA\",\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n vpcAccess: {\n networkInterfaces: [{\n network: \"default\",\n subnetwork: \"default\",\n tags: [\n \"tag1\",\n \"tag2\",\n \"tag3\",\n ],\n }],\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n launch_stage=\"GA\",\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n \"vpc_access\": {\n \"network_interfaces\": [{\n \"network\": \"default\",\n \"subnetwork\": \"default\",\n \"tags\": [\n \"tag1\",\n \"tag2\",\n \"tag3\",\n ],\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 @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n LaunchStage = \"GA\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVpcAccessArgs\n {\n NetworkInterfaces = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVpcAccessNetworkInterfaceArgs\n {\n Network = \"default\",\n Subnetwork = \"default\",\n Tags = new[]\n {\n \"tag1\",\n \"tag2\",\n \"tag3\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLaunchStage: pulumi.String(\"GA\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcAccess: \u0026cloudrunv2.JobTemplateTemplateVpcAccessArgs{\n\t\t\t\t\t\tNetworkInterfaces: cloudrunv2.JobTemplateTemplateVpcAccessNetworkInterfaceArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVpcAccessNetworkInterfaceArgs{\n\t\t\t\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"tag2\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"tag3\"),\n\t\t\t\t\t\t\t\t},\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.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateVpcAccessArgs;\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 Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .launchStage(\"GA\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .build())\n .vpcAccess(JobTemplateTemplateVpcAccessArgs.builder()\n .networkInterfaces(JobTemplateTemplateVpcAccessNetworkInterfaceArgs.builder()\n .network(\"default\")\n .subnetwork(\"default\")\n .tags( \n \"tag1\",\n \"tag2\",\n \"tag3\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n launchStage: GA\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n vpcAccess:\n networkInterfaces:\n - network: default\n subnetwork: default\n tags:\n - tag1\n - tag2\n - tag3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Secret\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst project = gcp.organizations.getProject({});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n template: {\n template: {\n volumes: [{\n name: \"a-volume\",\n secret: {\n secret: secret.secretId,\n defaultMode: 292,\n items: [{\n version: \"1\",\n path: \"my-secret\",\n mode: 256,\n }],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n volumeMounts: [{\n name: \"a-volume\",\n mountPath: \"/secrets\",\n }],\n }],\n },\n },\n}, {\n dependsOn: [\n secret_version_data,\n secret_access,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"auto\": {},\n })\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\nproject = gcp.organizations.get_project()\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n template={\n \"template\": {\n \"volumes\": [{\n \"name\": \"a-volume\",\n \"secret\": {\n \"secret\": secret.secret_id,\n \"default_mode\": 292,\n \"items\": [{\n \"version\": \"1\",\n \"path\": \"my-secret\",\n \"mode\": 256,\n }],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n \"volume_mounts\": [{\n \"name\": \"a-volume\",\n \"mount_path\": \"/secrets\",\n }],\n }],\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[\n secret_version_data,\n secret_access,\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 secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeArgs\n {\n Name = \"a-volume\",\n Secret = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeSecretArgs\n {\n Secret = secret.SecretId,\n DefaultMode = 292,\n Items = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeSecretItemArgs\n {\n Version = \"1\",\n Path = \"my-secret\",\n Mode = 256,\n },\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerVolumeMountArgs\n {\n Name = \"a-volume\",\n MountPath = \"/secrets\",\n },\n },\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_data,\n secret_access,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\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\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number)),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tVolumes: cloudrunv2.JobTemplateTemplateVolumeArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\t\tSecret: \u0026cloudrunv2.JobTemplateTemplateVolumeSecretArgs{\n\t\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\t\tDefaultMode: pulumi.Int(292),\n\t\t\t\t\t\t\t\tItems: cloudrunv2.JobTemplateTemplateVolumeSecretItemArray{\n\t\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVolumeSecretItemArgs{\n\t\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"my-secret\"),\n\t\t\t\t\t\t\t\t\t\tMode: pulumi.Int(256),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t\tVolumeMounts: cloudrunv2.JobTemplateTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/secrets\"),\n\t\t\t\t\t\t\t\t},\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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_data,\n\t\t\tsecret_access,\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.SecretReplicationAutoArgs;\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.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\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 secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .volumes(JobTemplateTemplateVolumeArgs.builder()\n .name(\"a-volume\")\n .secret(JobTemplateTemplateVolumeSecretArgs.builder()\n .secret(secret.secretId())\n .defaultMode(292)\n .items(JobTemplateTemplateVolumeSecretItemArgs.builder()\n .version(\"1\")\n .path(\"my-secret\")\n .mode(256)\n .build())\n .build())\n .build())\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .volumeMounts(JobTemplateTemplateContainerVolumeMountArgs.builder()\n .name(\"a-volume\")\n .mountPath(\"/secrets\")\n .build())\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n secret_version_data,\n secret_access)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n template:\n template:\n volumes:\n - name: a-volume\n secret:\n secret: ${secret.secretId}\n defaultMode: 292\n items:\n - version: '1'\n path: my-secret\n mode: 256\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n volumeMounts:\n - name: a-volume\n mountPath: /secrets\n options:\n dependson:\n - ${[\"secret-version-data\"]}\n - ${[\"secret-access\"]}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Emptydir\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n launchStage: \"BETA\",\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n volumeMounts: [{\n name: \"empty-dir-volume\",\n mountPath: \"/mnt\",\n }],\n }],\n volumes: [{\n name: \"empty-dir-volume\",\n emptyDir: {\n medium: \"MEMORY\",\n sizeLimit: \"128Mi\",\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n launch_stage=\"BETA\",\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n \"volume_mounts\": [{\n \"name\": \"empty-dir-volume\",\n \"mount_path\": \"/mnt\",\n }],\n }],\n \"volumes\": [{\n \"name\": \"empty-dir-volume\",\n \"empty_dir\": {\n \"medium\": \"MEMORY\",\n \"size_limit\": \"128Mi\",\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 @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n LaunchStage = \"BETA\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerVolumeMountArgs\n {\n Name = \"empty-dir-volume\",\n MountPath = \"/mnt\",\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeArgs\n {\n Name = \"empty-dir-volume\",\n EmptyDir = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeEmptyDirArgs\n {\n Medium = \"MEMORY\",\n SizeLimit = \"128Mi\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t\tVolumeMounts: cloudrunv2.JobTemplateTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt\"),\n\t\t\t\t\t\t\t\t},\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\tVolumes: cloudrunv2.JobTemplateTemplateVolumeArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\t\tEmptyDir: \u0026cloudrunv2.JobTemplateTemplateVolumeEmptyDirArgs{\n\t\t\t\t\t\t\t\tMedium: pulumi.String(\"MEMORY\"),\n\t\t\t\t\t\t\t\tSizeLimit: pulumi.String(\"128Mi\"),\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.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\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 Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .launchStage(\"BETA\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .volumeMounts(JobTemplateTemplateContainerVolumeMountArgs.builder()\n .name(\"empty-dir-volume\")\n .mountPath(\"/mnt\")\n .build())\n .build())\n .volumes(JobTemplateTemplateVolumeArgs.builder()\n .name(\"empty-dir-volume\")\n .emptyDir(JobTemplateTemplateVolumeEmptyDirArgs.builder()\n .medium(\"MEMORY\")\n .sizeLimit(\"128Mi\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n launchStage: BETA\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n volumeMounts:\n - name: empty-dir-volume\n mountPath: /mnt\n volumes:\n - name: empty-dir-volume\n emptyDir:\n medium: MEMORY\n sizeLimit: 128Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Run Job\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n startExecutionToken: \"start-once-created\",\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n start_execution_token=\"start-once-created\",\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\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 @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n StartExecutionToken = \"start-once-created\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStartExecutionToken: pulumi.String(\"start-once-created\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\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.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\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 Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .startExecutionToken(\"start-once-created\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n startExecutionToken: start-once-created\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJob can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/jobs/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Job can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrunv2/job:Job default projects/{{project}}/locations/{{location}}/jobs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/job:Job default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/job:Job default {{location}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -139265,7 +139265,7 @@ } }, "gcp:cloudrunv2/service:Service": { - "description": "Service acts as a top-level container that manages a set of configurations and revision templates which implement a network service. Service exists to provide a singular abstraction which can be access controlled, reasoned about, and which encapsulates software lifecycle decisions such as rollout policy and team resource ownership.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v2/projects.locations.services)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/)\n\n## Example Usage\n\n### Cloudrunv2 Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\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 @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\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.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Limits\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n resources: {\n limits: {\n cpu: \"2\",\n memory: \"1024Mi\",\n },\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"resources\": {\n \"limits\": {\n \"cpu\": \"2\",\n \"memory\": \"1024Mi\",\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 @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Resources = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerResourcesArgs\n {\n Limits = \n {\n { \"cpu\", \"2\" },\n { \"memory\", \"1024Mi\" },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tResources: \u0026cloudrunv2.ServiceTemplateContainerResourcesArgs{\n\t\t\t\t\t\t\tLimits: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"cpu\": pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\t\"memory\": pulumi.String(\"1024Mi\"),\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.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .resources(ServiceTemplateContainerResourcesArgs.builder()\n .limits(Map.ofEntries(\n Map.entry(\"cpu\", \"2\"),\n Map.entry(\"memory\", \"1024Mi\")\n ))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n resources:\n limits:\n cpu: '2'\n memory: 1024Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Sql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret-1\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"cloudrun-sql\",\n region: \"us-central1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n scaling: {\n maxInstanceCount: 2,\n },\n volumes: [{\n name: \"cloudsql\",\n cloudSqlInstance: {\n instances: [instance.connectionName],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n envs: [\n {\n name: \"FOO\",\n value: \"bar\",\n },\n {\n name: \"SECRET_ENV_VAR\",\n valueSource: {\n secretKeyRef: {\n secret: secret.secretId,\n version: \"1\",\n },\n },\n },\n ],\n volumeMounts: [{\n name: \"cloudsql\",\n mountPath: \"/cloudsql\",\n }],\n }],\n },\n traffics: [{\n type: \"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\",\n percent: 100,\n }],\n}, {\n dependsOn: [secret_version_data],\n});\nconst project = gcp.organizations.getProject({});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret-1\",\n replication={\n \"auto\": {},\n })\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"cloudrun-sql\",\n region=\"us-central1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"scaling\": {\n \"maxInstanceCount\": 2,\n },\n \"volumes\": [{\n \"name\": \"cloudsql\",\n \"cloudSqlInstance\": {\n \"instances\": [instance.connection_name],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"envs\": [\n {\n \"name\": \"FOO\",\n \"value\": \"bar\",\n },\n {\n \"name\": \"SECRET_ENV_VAR\",\n \"valueSource\": {\n \"secretKeyRef\": {\n \"secret\": secret.secret_id,\n \"version\": \"1\",\n },\n },\n },\n ],\n \"volumeMounts\": [{\n \"name\": \"cloudsql\",\n \"mountPath\": \"/cloudsql\",\n }],\n }],\n },\n traffics=[{\n \"type\": \"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\",\n \"percent\": 100,\n }],\n opts = pulumi.ResourceOptions(depends_on=[secret_version_data]))\nproject = gcp.organizations.get_project()\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\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 secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret-1\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"cloudrun-sql\",\n Region = \"us-central1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Scaling = new Gcp.CloudRunV2.Inputs.ServiceTemplateScalingArgs\n {\n MaxInstanceCount = 2,\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"cloudsql\",\n CloudSqlInstance = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeCloudSqlInstanceArgs\n {\n Instances = new[]\n {\n instance.ConnectionName,\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Envs = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvArgs\n {\n Name = \"FOO\",\n Value = \"bar\",\n },\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvArgs\n {\n Name = \"SECRET_ENV_VAR\",\n ValueSource = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvValueSourceArgs\n {\n SecretKeyRef = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvValueSourceSecretKeyRefArgs\n {\n Secret = secret.SecretId,\n Version = \"1\",\n },\n },\n },\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"cloudsql\",\n MountPath = \"/cloudsql\",\n },\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTrafficArgs\n {\n Type = \"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\",\n Percent = 100,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_data,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-1\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-sql\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tScaling: \u0026cloudrunv2.ServiceTemplateScalingArgs{\n\t\t\t\t\tMaxInstanceCount: pulumi.Int(2),\n\t\t\t\t},\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\tCloudSqlInstance: \u0026cloudrunv2.ServiceTemplateVolumeCloudSqlInstanceArgs{\n\t\t\t\t\t\t\tInstances: pulumi.StringArray{\n\t\t\t\t\t\t\t\tinstance.ConnectionName,\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\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tEnvs: cloudrunv2.ServiceTemplateContainerEnvArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"FOO\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"SECRET_ENV_VAR\"),\n\t\t\t\t\t\t\t\tValueSource: \u0026cloudrunv2.ServiceTemplateContainerEnvValueSourceArgs{\n\t\t\t\t\t\t\t\t\tSecretKeyRef: \u0026cloudrunv2.ServiceTemplateContainerEnvValueSourceSecretKeyRefArgs{\n\t\t\t\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/cloudsql\"),\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\tTraffics: cloudrunv2.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrunv2.ServiceTrafficArgs{\n\t\t\t\t\tType: pulumi.String(\"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\"),\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_data,\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\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number)),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateScalingArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTrafficArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\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 secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret-1\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"cloudrun-sql\")\n .region(\"us-central1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .scaling(ServiceTemplateScalingArgs.builder()\n .maxInstanceCount(2)\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"cloudsql\")\n .cloudSqlInstance(ServiceTemplateVolumeCloudSqlInstanceArgs.builder()\n .instances(instance.connectionName())\n .build())\n .build())\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .envs( \n ServiceTemplateContainerEnvArgs.builder()\n .name(\"FOO\")\n .value(\"bar\")\n .build(),\n ServiceTemplateContainerEnvArgs.builder()\n .name(\"SECRET_ENV_VAR\")\n .valueSource(ServiceTemplateContainerEnvValueSourceArgs.builder()\n .secretKeyRef(ServiceTemplateContainerEnvValueSourceSecretKeyRefArgs.builder()\n .secret(secret.secretId())\n .version(\"1\")\n .build())\n .build())\n .build())\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"cloudsql\")\n .mountPath(\"/cloudsql\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .type(\"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\")\n .percent(100)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret_version_data)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n ingress: INGRESS_TRAFFIC_ALL\n template:\n scaling:\n maxInstanceCount: 2\n volumes:\n - name: cloudsql\n cloudSqlInstance:\n instances:\n - ${instance.connectionName}\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n envs:\n - name: FOO\n value: bar\n - name: SECRET_ENV_VAR\n valueSource:\n secretKeyRef:\n secret: ${secret.secretId}\n version: '1'\n volumeMounts:\n - name: cloudsql\n mountPath: /cloudsql\n traffics:\n - type: TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\n percent: 100\n options:\n dependson:\n - ${[\"secret-version-data\"]}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-1\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: cloudrun-sql\n region: us-central1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Vpcaccess\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customTestNetwork = new gcp.compute.Network(\"custom_test\", {\n name: \"run-network\",\n autoCreateSubnetworks: false,\n});\nconst customTest = new gcp.compute.Subnetwork(\"custom_test\", {\n name: \"run-subnetwork\",\n ipCidrRange: \"10.2.0.0/28\",\n region: \"us-central1\",\n network: customTestNetwork.id,\n});\nconst connector = new gcp.vpcaccess.Connector(\"connector\", {\n name: \"run-vpc\",\n subnet: {\n name: customTest.name,\n },\n machineType: \"e2-standard-4\",\n minInstances: 2,\n maxInstances: 3,\n region: \"us-central1\",\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n vpcAccess: {\n connector: connector.id,\n egress: \"ALL_TRAFFIC\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test_network = gcp.compute.Network(\"custom_test\",\n name=\"run-network\",\n auto_create_subnetworks=False)\ncustom_test = gcp.compute.Subnetwork(\"custom_test\",\n name=\"run-subnetwork\",\n ip_cidr_range=\"10.2.0.0/28\",\n region=\"us-central1\",\n network=custom_test_network.id)\nconnector = gcp.vpcaccess.Connector(\"connector\",\n name=\"run-vpc\",\n subnet={\n \"name\": custom_test.name,\n },\n machine_type=\"e2-standard-4\",\n min_instances=2,\n max_instances=3,\n region=\"us-central1\")\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n \"vpcAccess\": {\n \"connector\": connector.id,\n \"egress\": \"ALL_TRAFFIC\",\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 customTestNetwork = new Gcp.Compute.Network(\"custom_test\", new()\n {\n Name = \"run-network\",\n AutoCreateSubnetworks = false,\n });\n\n var customTest = new Gcp.Compute.Subnetwork(\"custom_test\", new()\n {\n Name = \"run-subnetwork\",\n IpCidrRange = \"10.2.0.0/28\",\n Region = \"us-central1\",\n Network = customTestNetwork.Id,\n });\n\n var connector = new Gcp.VpcAccess.Connector(\"connector\", new()\n {\n Name = \"run-vpc\",\n Subnet = new Gcp.VpcAccess.Inputs.ConnectorSubnetArgs\n {\n Name = customTest.Name,\n },\n MachineType = \"e2-standard-4\",\n MinInstances = 2,\n MaxInstances = 3,\n Region = \"us-central1\",\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessArgs\n {\n Connector = connector.Id,\n Egress = \"ALL_TRAFFIC\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vpcaccess\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomTestNetwork, err := compute.NewNetwork(ctx, \"custom_test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"run-network\"),\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\tcustomTest, err := compute.NewSubnetwork(ctx, \"custom_test\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"run-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: customTestNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tconnector, err := vpcaccess.NewConnector(ctx, \"connector\", \u0026vpcaccess.ConnectorArgs{\n\t\t\tName: pulumi.String(\"run-vpc\"),\n\t\t\tSubnet: \u0026vpcaccess.ConnectorSubnetArgs{\n\t\t\t\tName: customTest.Name,\n\t\t\t},\n\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\tMinInstances: pulumi.Int(2),\n\t\t\tMaxInstances: pulumi.Int(3),\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\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVpcAccess: \u0026cloudrunv2.ServiceTemplateVpcAccessArgs{\n\t\t\t\t\tConnector: connector.ID(),\n\t\t\t\t\tEgress: pulumi.String(\"ALL_TRAFFIC\"),\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.vpcaccess.Connector;\nimport com.pulumi.gcp.vpcaccess.ConnectorArgs;\nimport com.pulumi.gcp.vpcaccess.inputs.ConnectorSubnetArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateVpcAccessArgs;\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 customTestNetwork = new Network(\"customTestNetwork\", NetworkArgs.builder()\n .name(\"run-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var customTest = new Subnetwork(\"customTest\", SubnetworkArgs.builder()\n .name(\"run-subnetwork\")\n .ipCidrRange(\"10.2.0.0/28\")\n .region(\"us-central1\")\n .network(customTestNetwork.id())\n .build());\n\n var connector = new Connector(\"connector\", ConnectorArgs.builder()\n .name(\"run-vpc\")\n .subnet(ConnectorSubnetArgs.builder()\n .name(customTest.name())\n .build())\n .machineType(\"e2-standard-4\")\n .minInstances(2)\n .maxInstances(3)\n .region(\"us-central1\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .vpcAccess(ServiceTemplateVpcAccessArgs.builder()\n .connector(connector.id())\n .egress(\"ALL_TRAFFIC\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n vpcAccess:\n connector: ${connector.id}\n egress: ALL_TRAFFIC\n connector:\n type: gcp:vpcaccess:Connector\n properties:\n name: run-vpc\n subnet:\n name: ${customTest.name}\n machineType: e2-standard-4\n minInstances: 2\n maxInstances: 3\n region: us-central1\n customTest:\n type: gcp:compute:Subnetwork\n name: custom_test\n properties:\n name: run-subnetwork\n ipCidrRange: 10.2.0.0/28\n region: us-central1\n network: ${customTestNetwork.id}\n customTestNetwork:\n type: gcp:compute:Network\n name: custom_test\n properties:\n name: run-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Directvpc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n launchStage: \"GA\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n vpcAccess: {\n networkInterfaces: [{\n network: \"default\",\n subnetwork: \"default\",\n tags: [\n \"tag1\",\n \"tag2\",\n \"tag3\",\n ],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n launch_stage=\"GA\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n \"vpcAccess\": {\n \"networkInterfaces\": [{\n \"network\": \"default\",\n \"subnetwork\": \"default\",\n \"tags\": [\n \"tag1\",\n \"tag2\",\n \"tag3\",\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 @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n LaunchStage = \"GA\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessArgs\n {\n NetworkInterfaces = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessNetworkInterfaceArgs\n {\n Network = \"default\",\n Subnetwork = \"default\",\n Tags = new[]\n {\n \"tag1\",\n \"tag2\",\n \"tag3\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLaunchStage: pulumi.String(\"GA\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVpcAccess: \u0026cloudrunv2.ServiceTemplateVpcAccessArgs{\n\t\t\t\t\tNetworkInterfaces: cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArray{\n\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArgs{\n\t\t\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"tag2\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"tag3\"),\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.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateVpcAccessArgs;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .launchStage(\"GA\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .vpcAccess(ServiceTemplateVpcAccessArgs.builder()\n .networkInterfaces(ServiceTemplateVpcAccessNetworkInterfaceArgs.builder()\n .network(\"default\")\n .subnetwork(\"default\")\n .tags( \n \"tag1\",\n \"tag2\",\n \"tag3\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n launchStage: GA\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n vpcAccess:\n networkInterfaces:\n - network: default\n subnetwork: default\n tags:\n - tag1\n - tag2\n - tag3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Probes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n startupProbe: {\n initialDelaySeconds: 0,\n timeoutSeconds: 1,\n periodSeconds: 3,\n failureThreshold: 1,\n tcpSocket: {\n port: 8080,\n },\n },\n livenessProbe: {\n httpGet: {\n path: \"/\",\n },\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"startupProbe\": {\n \"initialDelaySeconds\": 0,\n \"timeoutSeconds\": 1,\n \"periodSeconds\": 3,\n \"failureThreshold\": 1,\n \"tcpSocket\": {\n \"port\": 8080,\n },\n },\n \"livenessProbe\": {\n \"httpGet\": {\n \"path\": \"/\",\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 @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n StartupProbe = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeArgs\n {\n InitialDelaySeconds = 0,\n TimeoutSeconds = 1,\n PeriodSeconds = 3,\n FailureThreshold = 1,\n TcpSocket = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeTcpSocketArgs\n {\n Port = 8080,\n },\n },\n LivenessProbe = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerLivenessProbeArgs\n {\n HttpGet = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerLivenessProbeHttpGetArgs\n {\n Path = \"/\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tStartupProbe: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeArgs{\n\t\t\t\t\t\t\tInitialDelaySeconds: pulumi.Int(0),\n\t\t\t\t\t\t\tTimeoutSeconds: pulumi.Int(1),\n\t\t\t\t\t\t\tPeriodSeconds: pulumi.Int(3),\n\t\t\t\t\t\t\tFailureThreshold: pulumi.Int(1),\n\t\t\t\t\t\t\tTcpSocket: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeTcpSocketArgs{\n\t\t\t\t\t\t\t\tPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLivenessProbe: \u0026cloudrunv2.ServiceTemplateContainerLivenessProbeArgs{\n\t\t\t\t\t\t\tHttpGet: \u0026cloudrunv2.ServiceTemplateContainerLivenessProbeHttpGetArgs{\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/\"),\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.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .startupProbe(ServiceTemplateContainerStartupProbeArgs.builder()\n .initialDelaySeconds(0)\n .timeoutSeconds(1)\n .periodSeconds(3)\n .failureThreshold(1)\n .tcpSocket(ServiceTemplateContainerStartupProbeTcpSocketArgs.builder()\n .port(8080)\n .build())\n .build())\n .livenessProbe(ServiceTemplateContainerLivenessProbeArgs.builder()\n .httpGet(ServiceTemplateContainerLivenessProbeHttpGetArgs.builder()\n .path(\"/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n startupProbe:\n initialDelaySeconds: 0\n timeoutSeconds: 1\n periodSeconds: 3\n failureThreshold: 1\n tcpSocket:\n port: 8080\n livenessProbe:\n httpGet:\n path: /\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Secret\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret-1\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n volumes: [{\n name: \"a-volume\",\n secret: {\n secret: secret.secretId,\n defaultMode: 292,\n items: [{\n version: \"1\",\n path: \"my-secret\",\n }],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n volumeMounts: [{\n name: \"a-volume\",\n mountPath: \"/secrets\",\n }],\n }],\n },\n}, {\n dependsOn: [secret_version_data],\n});\nconst project = gcp.organizations.getProject({});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret-1\",\n replication={\n \"auto\": {},\n })\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"volumes\": [{\n \"name\": \"a-volume\",\n \"secret\": {\n \"secret\": secret.secret_id,\n \"defaultMode\": 292,\n \"items\": [{\n \"version\": \"1\",\n \"path\": \"my-secret\",\n }],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"volumeMounts\": [{\n \"name\": \"a-volume\",\n \"mountPath\": \"/secrets\",\n }],\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[secret_version_data]))\nproject = gcp.organizations.get_project()\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\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 secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret-1\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"a-volume\",\n Secret = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeSecretArgs\n {\n Secret = secret.SecretId,\n DefaultMode = 292,\n Items = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeSecretItemArgs\n {\n Version = \"1\",\n Path = \"my-secret\",\n },\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"a-volume\",\n MountPath = \"/secrets\",\n },\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_data,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-1\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\tSecret: \u0026cloudrunv2.ServiceTemplateVolumeSecretArgs{\n\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\tDefaultMode: pulumi.Int(292),\n\t\t\t\t\t\t\tItems: cloudrunv2.ServiceTemplateVolumeSecretItemArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeSecretItemArgs{\n\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"my-secret\"),\n\t\t\t\t\t\t\t\t},\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\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/secrets\"),\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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_data,\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\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number)),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\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 secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret-1\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"a-volume\")\n .secret(ServiceTemplateVolumeSecretArgs.builder()\n .secret(secret.secretId())\n .defaultMode(292)\n .items(ServiceTemplateVolumeSecretItemArgs.builder()\n .version(\"1\")\n .path(\"my-secret\")\n .build())\n .build())\n .build())\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"a-volume\")\n .mountPath(\"/secrets\")\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret_version_data)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n ingress: INGRESS_TRAFFIC_ALL\n template:\n volumes:\n - name: a-volume\n secret:\n secret: ${secret.secretId}\n defaultMode: 292\n items:\n - version: '1'\n path: my-secret\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n volumeMounts:\n - name: a-volume\n mountPath: /secrets\n options:\n dependson:\n - ${[\"secret-version-data\"]}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-1\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Multicontainer\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n launchStage: \"BETA\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [\n {\n name: \"hello-1\",\n ports: {\n containerPort: 8080,\n },\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n dependsOns: [\"hello-2\"],\n volumeMounts: [{\n name: \"empty-dir-volume\",\n mountPath: \"/mnt\",\n }],\n },\n {\n name: \"hello-2\",\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n envs: [{\n name: \"PORT\",\n value: \"8081\",\n }],\n startupProbe: {\n httpGet: {\n port: 8081,\n },\n },\n },\n ],\n volumes: [{\n name: \"empty-dir-volume\",\n emptyDir: {\n medium: \"MEMORY\",\n sizeLimit: \"256Mi\",\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n launch_stage=\"BETA\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [\n {\n \"name\": \"hello-1\",\n \"ports\": {\n \"containerPort\": 8080,\n },\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"dependsOns\": [\"hello-2\"],\n \"volumeMounts\": [{\n \"name\": \"empty-dir-volume\",\n \"mountPath\": \"/mnt\",\n }],\n },\n {\n \"name\": \"hello-2\",\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"envs\": [{\n \"name\": \"PORT\",\n \"value\": \"8081\",\n }],\n \"startupProbe\": {\n \"httpGet\": {\n \"port\": 8081,\n },\n },\n },\n ],\n \"volumes\": [{\n \"name\": \"empty-dir-volume\",\n \"emptyDir\": {\n \"medium\": \"MEMORY\",\n \"sizeLimit\": \"256Mi\",\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 @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n LaunchStage = \"BETA\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Name = \"hello-1\",\n Ports = \n {\n { \"containerPort\", 8080 },\n },\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n DependsOns = new[]\n {\n \"hello-2\",\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"empty-dir-volume\",\n MountPath = \"/mnt\",\n },\n },\n },\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Name = \"hello-2\",\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Envs = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvArgs\n {\n Name = \"PORT\",\n Value = \"8081\",\n },\n },\n StartupProbe = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeArgs\n {\n HttpGet = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeHttpGetArgs\n {\n Port = 8081,\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"empty-dir-volume\",\n EmptyDir = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeEmptyDirArgs\n {\n Medium = \"MEMORY\",\n SizeLimit = \"256Mi\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tName: pulumi.String(\"hello-1\"),\n\t\t\t\t\t\tPorts: cloudrunv2.ServiceTemplateContainerPortArray{\n\t\t\t\t\t\t\tContainerPort: 8080,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tDependsOns: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hello-2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt\"),\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\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tName: pulumi.String(\"hello-2\"),\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tEnvs: cloudrunv2.ServiceTemplateContainerEnvArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PORT\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"8081\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tStartupProbe: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeArgs{\n\t\t\t\t\t\t\tHttpGet: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeHttpGetArgs{\n\t\t\t\t\t\t\t\tPort: pulumi.Int(8081),\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\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\tEmptyDir: \u0026cloudrunv2.ServiceTemplateVolumeEmptyDirArgs{\n\t\t\t\t\t\t\tMedium: pulumi.String(\"MEMORY\"),\n\t\t\t\t\t\t\tSizeLimit: pulumi.String(\"256Mi\"),\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.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .launchStage(\"BETA\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers( \n ServiceTemplateContainerArgs.builder()\n .name(\"hello-1\")\n .ports(ServiceTemplateContainerPortArgs.builder()\n .containerPort(8080)\n .build())\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .dependsOns(\"hello-2\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"empty-dir-volume\")\n .mountPath(\"/mnt\")\n .build())\n .build(),\n ServiceTemplateContainerArgs.builder()\n .name(\"hello-2\")\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .envs(ServiceTemplateContainerEnvArgs.builder()\n .name(\"PORT\")\n .value(\"8081\")\n .build())\n .startupProbe(ServiceTemplateContainerStartupProbeArgs.builder()\n .httpGet(ServiceTemplateContainerStartupProbeHttpGetArgs.builder()\n .port(8081)\n .build())\n .build())\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"empty-dir-volume\")\n .emptyDir(ServiceTemplateVolumeEmptyDirArgs.builder()\n .medium(\"MEMORY\")\n .sizeLimit(\"256Mi\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n launchStage: BETA\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - name: hello-1\n ports:\n containerPort: 8080\n image: us-docker.pkg.dev/cloudrun/container/hello\n dependsOns:\n - hello-2\n volumeMounts:\n - name: empty-dir-volume\n mountPath: /mnt\n - name: hello-2\n image: us-docker.pkg.dev/cloudrun/container/hello\n envs:\n - name: PORT\n value: '8081'\n startupProbe:\n httpGet:\n port: 8081\n volumes:\n - name: empty-dir-volume\n emptyDir:\n medium: MEMORY\n sizeLimit: 256Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Mount Gcs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultBucket = new gcp.storage.Bucket(\"default\", {\n name: \"cloudrun-service\",\n location: \"US\",\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n launchStage: \"BETA\",\n template: {\n executionEnvironment: \"EXECUTION_ENVIRONMENT_GEN2\",\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n volumeMounts: [{\n name: \"bucket\",\n mountPath: \"/var/www\",\n }],\n }],\n volumes: [{\n name: \"bucket\",\n gcs: {\n bucket: defaultBucket.name,\n readOnly: false,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_bucket = gcp.storage.Bucket(\"default\",\n name=\"cloudrun-service\",\n location=\"US\")\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n launch_stage=\"BETA\",\n template={\n \"executionEnvironment\": \"EXECUTION_ENVIRONMENT_GEN2\",\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"volumeMounts\": [{\n \"name\": \"bucket\",\n \"mountPath\": \"/var/www\",\n }],\n }],\n \"volumes\": [{\n \"name\": \"bucket\",\n \"gcs\": {\n \"bucket\": default_bucket.name,\n \"readOnly\": False,\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 defaultBucket = new Gcp.Storage.Bucket(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"US\",\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n LaunchStage = \"BETA\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n ExecutionEnvironment = \"EXECUTION_ENVIRONMENT_GEN2\",\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"bucket\",\n MountPath = \"/var/www\",\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"bucket\",\n Gcs = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeGcsArgs\n {\n Bucket = defaultBucket.Name,\n ReadOnly = false,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultBucket, err := storage.NewBucket(ctx, \"default\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\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 = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tExecutionEnvironment: pulumi.String(\"EXECUTION_ENVIRONMENT_GEN2\"),\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"bucket\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/var/www\"),\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\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"bucket\"),\n\t\t\t\t\t\tGcs: \u0026cloudrunv2.ServiceTemplateVolumeGcsArgs{\n\t\t\t\t\t\t\tBucket: defaultBucket.Name,\n\t\t\t\t\t\t\tReadOnly: pulumi.Bool(false),\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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 defaultBucket = new Bucket(\"defaultBucket\", BucketArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"US\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .launchStage(\"BETA\")\n .template(ServiceTemplateArgs.builder()\n .executionEnvironment(\"EXECUTION_ENVIRONMENT_GEN2\")\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"bucket\")\n .mountPath(\"/var/www\")\n .build())\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"bucket\")\n .gcs(ServiceTemplateVolumeGcsArgs.builder()\n .bucket(defaultBucket.name())\n .readOnly(false)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n launchStage: BETA\n template:\n executionEnvironment: EXECUTION_ENVIRONMENT_GEN2\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n volumeMounts:\n - name: bucket\n mountPath: /var/www\n volumes:\n - name: bucket\n gcs:\n bucket: ${defaultBucket.name}\n readOnly: false\n defaultBucket:\n type: gcp:storage:Bucket\n name: default\n properties:\n name: cloudrun-service\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Mount Nfs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultInstance = new gcp.filestore.Instance(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1-b\",\n tier: \"BASIC_HDD\",\n fileShares: {\n capacityGb: 1024,\n name: \"share1\",\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n }],\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n launchStage: \"BETA\",\n template: {\n executionEnvironment: \"EXECUTION_ENVIRONMENT_GEN2\",\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello:latest\",\n volumeMounts: [{\n name: \"nfs\",\n mountPath: \"/mnt/nfs/filestore\",\n }],\n }],\n vpcAccess: {\n networkInterfaces: [{\n network: \"default\",\n subnetwork: \"default\",\n }],\n },\n volumes: [{\n name: \"nfs\",\n nfs: {\n server: defaultInstance.networks.apply(networks =\u003e networks[0].ipAddresses?.[0]),\n path: \"/share1\",\n readOnly: false,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_instance = gcp.filestore.Instance(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1-b\",\n tier=\"BASIC_HDD\",\n file_shares={\n \"capacityGb\": 1024,\n \"name\": \"share1\",\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\n }])\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n launch_stage=\"BETA\",\n template={\n \"executionEnvironment\": \"EXECUTION_ENVIRONMENT_GEN2\",\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello:latest\",\n \"volumeMounts\": [{\n \"name\": \"nfs\",\n \"mountPath\": \"/mnt/nfs/filestore\",\n }],\n }],\n \"vpcAccess\": {\n \"networkInterfaces\": [{\n \"network\": \"default\",\n \"subnetwork\": \"default\",\n }],\n },\n \"volumes\": [{\n \"name\": \"nfs\",\n \"nfs\": {\n \"server\": default_instance.networks[0].ip_addresses[0],\n \"path\": \"/share1\",\n \"readOnly\": False,\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 defaultInstance = new Gcp.Filestore.Instance(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1-b\",\n Tier = \"BASIC_HDD\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 1024,\n Name = \"share1\",\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n },\n },\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n LaunchStage = \"BETA\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n ExecutionEnvironment = \"EXECUTION_ENVIRONMENT_GEN2\",\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello:latest\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"nfs\",\n MountPath = \"/mnt/nfs/filestore\",\n },\n },\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessArgs\n {\n NetworkInterfaces = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessNetworkInterfaceArgs\n {\n Network = \"default\",\n Subnetwork = \"default\",\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"nfs\",\n Nfs = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeNfsArgs\n {\n Server = defaultInstance.Networks.Apply(networks =\u003e networks[0].IpAddresses[0]),\n Path = \"/share1\",\n ReadOnly = false,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/filestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultInstance, err := filestore.NewInstance(ctx, \"default\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1-b\"),\n\t\t\tTier: pulumi.String(\"BASIC_HDD\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(1024),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\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 = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tExecutionEnvironment: pulumi.String(\"EXECUTION_ENVIRONMENT_GEN2\"),\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello:latest\"),\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"nfs\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt/nfs/filestore\"),\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\tVpcAccess: \u0026cloudrunv2.ServiceTemplateVpcAccessArgs{\n\t\t\t\t\tNetworkInterfaces: cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArray{\n\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArgs{\n\t\t\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"nfs\"),\n\t\t\t\t\t\tNfs: \u0026cloudrunv2.ServiceTemplateVolumeNfsArgs{\n\t\t\t\t\t\t\tServer: defaultInstance.Networks.ApplyT(func(networks []filestore.InstanceNetwork) (*string, error) {\n\t\t\t\t\t\t\t\treturn \u0026networks[0].IpAddresses[0], nil\n\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\tPath: pulumi.String(\"/share1\"),\n\t\t\t\t\t\t\tReadOnly: pulumi.Bool(false),\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.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateVpcAccessArgs;\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 defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1-b\")\n .tier(\"BASIC_HDD\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(1024)\n .name(\"share1\")\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .build())\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .launchStage(\"BETA\")\n .template(ServiceTemplateArgs.builder()\n .executionEnvironment(\"EXECUTION_ENVIRONMENT_GEN2\")\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello:latest\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"nfs\")\n .mountPath(\"/mnt/nfs/filestore\")\n .build())\n .build())\n .vpcAccess(ServiceTemplateVpcAccessArgs.builder()\n .networkInterfaces(ServiceTemplateVpcAccessNetworkInterfaceArgs.builder()\n .network(\"default\")\n .subnetwork(\"default\")\n .build())\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"nfs\")\n .nfs(ServiceTemplateVolumeNfsArgs.builder()\n .server(defaultInstance.networks().applyValue(networks -\u003e networks[0].ipAddresses()[0]))\n .path(\"/share1\")\n .readOnly(false)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n ingress: INGRESS_TRAFFIC_ALL\n launchStage: BETA\n template:\n executionEnvironment: EXECUTION_ENVIRONMENT_GEN2\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello:latest\n volumeMounts:\n - name: nfs\n mountPath: /mnt/nfs/filestore\n vpcAccess:\n networkInterfaces:\n - network: default\n subnetwork: default\n volumes:\n - name: nfs\n nfs:\n server: ${defaultInstance.networks[0].ipAddresses[0]}\n path: /share1\n readOnly: false\n defaultInstance:\n type: gcp:filestore:Instance\n name: default\n properties:\n name: cloudrun-service\n location: us-central1-b\n tier: BASIC_HDD\n fileShares:\n capacityGb: 1024\n name: share1\n networks:\n - network: default\n modes:\n - MODE_IPV4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/services/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrunv2/service:Service default projects/{{project}}/locations/{{location}}/services/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/service:Service default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/service:Service default {{location}}/{{name}}\n```\n\n", + "description": "Service acts as a top-level container that manages a set of configurations and revision templates which implement a network service. Service exists to provide a singular abstraction which can be access controlled, reasoned about, and which encapsulates software lifecycle decisions such as rollout policy and team resource ownership.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v2/projects.locations.services)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/)\n\n## Example Usage\n\n### Cloudrunv2 Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\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 @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\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.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Limits\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n resources: {\n limits: {\n cpu: \"2\",\n memory: \"1024Mi\",\n },\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"resources\": {\n \"limits\": {\n \"cpu\": \"2\",\n \"memory\": \"1024Mi\",\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 @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Resources = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerResourcesArgs\n {\n Limits = \n {\n { \"cpu\", \"2\" },\n { \"memory\", \"1024Mi\" },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tResources: \u0026cloudrunv2.ServiceTemplateContainerResourcesArgs{\n\t\t\t\t\t\t\tLimits: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"cpu\": pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\t\"memory\": pulumi.String(\"1024Mi\"),\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.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .resources(ServiceTemplateContainerResourcesArgs.builder()\n .limits(Map.ofEntries(\n Map.entry(\"cpu\", \"2\"),\n Map.entry(\"memory\", \"1024Mi\")\n ))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n resources:\n limits:\n cpu: '2'\n memory: 1024Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Sql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret-1\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"cloudrun-sql\",\n region: \"us-central1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n scaling: {\n maxInstanceCount: 2,\n },\n volumes: [{\n name: \"cloudsql\",\n cloudSqlInstance: {\n instances: [instance.connectionName],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n envs: [\n {\n name: \"FOO\",\n value: \"bar\",\n },\n {\n name: \"SECRET_ENV_VAR\",\n valueSource: {\n secretKeyRef: {\n secret: secret.secretId,\n version: \"1\",\n },\n },\n },\n ],\n volumeMounts: [{\n name: \"cloudsql\",\n mountPath: \"/cloudsql\",\n }],\n }],\n },\n traffics: [{\n type: \"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\",\n percent: 100,\n }],\n}, {\n dependsOn: [secret_version_data],\n});\nconst project = gcp.organizations.getProject({});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret-1\",\n replication={\n \"auto\": {},\n })\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"cloudrun-sql\",\n region=\"us-central1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"scaling\": {\n \"max_instance_count\": 2,\n },\n \"volumes\": [{\n \"name\": \"cloudsql\",\n \"cloud_sql_instance\": {\n \"instances\": [instance.connection_name],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"envs\": [\n {\n \"name\": \"FOO\",\n \"value\": \"bar\",\n },\n {\n \"name\": \"SECRET_ENV_VAR\",\n \"value_source\": {\n \"secret_key_ref\": {\n \"secret\": secret.secret_id,\n \"version\": \"1\",\n },\n },\n },\n ],\n \"volume_mounts\": [{\n \"name\": \"cloudsql\",\n \"mount_path\": \"/cloudsql\",\n }],\n }],\n },\n traffics=[{\n \"type\": \"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\",\n \"percent\": 100,\n }],\n opts = pulumi.ResourceOptions(depends_on=[secret_version_data]))\nproject = gcp.organizations.get_project()\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\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 secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret-1\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"cloudrun-sql\",\n Region = \"us-central1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Scaling = new Gcp.CloudRunV2.Inputs.ServiceTemplateScalingArgs\n {\n MaxInstanceCount = 2,\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"cloudsql\",\n CloudSqlInstance = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeCloudSqlInstanceArgs\n {\n Instances = new[]\n {\n instance.ConnectionName,\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Envs = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvArgs\n {\n Name = \"FOO\",\n Value = \"bar\",\n },\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvArgs\n {\n Name = \"SECRET_ENV_VAR\",\n ValueSource = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvValueSourceArgs\n {\n SecretKeyRef = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvValueSourceSecretKeyRefArgs\n {\n Secret = secret.SecretId,\n Version = \"1\",\n },\n },\n },\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"cloudsql\",\n MountPath = \"/cloudsql\",\n },\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTrafficArgs\n {\n Type = \"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\",\n Percent = 100,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_data,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-1\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-sql\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tScaling: \u0026cloudrunv2.ServiceTemplateScalingArgs{\n\t\t\t\t\tMaxInstanceCount: pulumi.Int(2),\n\t\t\t\t},\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\tCloudSqlInstance: \u0026cloudrunv2.ServiceTemplateVolumeCloudSqlInstanceArgs{\n\t\t\t\t\t\t\tInstances: pulumi.StringArray{\n\t\t\t\t\t\t\t\tinstance.ConnectionName,\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\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tEnvs: cloudrunv2.ServiceTemplateContainerEnvArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"FOO\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"SECRET_ENV_VAR\"),\n\t\t\t\t\t\t\t\tValueSource: \u0026cloudrunv2.ServiceTemplateContainerEnvValueSourceArgs{\n\t\t\t\t\t\t\t\t\tSecretKeyRef: \u0026cloudrunv2.ServiceTemplateContainerEnvValueSourceSecretKeyRefArgs{\n\t\t\t\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/cloudsql\"),\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\tTraffics: cloudrunv2.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrunv2.ServiceTrafficArgs{\n\t\t\t\t\tType: pulumi.String(\"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\"),\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_data,\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\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number)),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateScalingArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTrafficArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\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 secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret-1\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"cloudrun-sql\")\n .region(\"us-central1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .scaling(ServiceTemplateScalingArgs.builder()\n .maxInstanceCount(2)\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"cloudsql\")\n .cloudSqlInstance(ServiceTemplateVolumeCloudSqlInstanceArgs.builder()\n .instances(instance.connectionName())\n .build())\n .build())\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .envs( \n ServiceTemplateContainerEnvArgs.builder()\n .name(\"FOO\")\n .value(\"bar\")\n .build(),\n ServiceTemplateContainerEnvArgs.builder()\n .name(\"SECRET_ENV_VAR\")\n .valueSource(ServiceTemplateContainerEnvValueSourceArgs.builder()\n .secretKeyRef(ServiceTemplateContainerEnvValueSourceSecretKeyRefArgs.builder()\n .secret(secret.secretId())\n .version(\"1\")\n .build())\n .build())\n .build())\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"cloudsql\")\n .mountPath(\"/cloudsql\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .type(\"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\")\n .percent(100)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret_version_data)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n ingress: INGRESS_TRAFFIC_ALL\n template:\n scaling:\n maxInstanceCount: 2\n volumes:\n - name: cloudsql\n cloudSqlInstance:\n instances:\n - ${instance.connectionName}\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n envs:\n - name: FOO\n value: bar\n - name: SECRET_ENV_VAR\n valueSource:\n secretKeyRef:\n secret: ${secret.secretId}\n version: '1'\n volumeMounts:\n - name: cloudsql\n mountPath: /cloudsql\n traffics:\n - type: TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\n percent: 100\n options:\n dependson:\n - ${[\"secret-version-data\"]}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-1\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: cloudrun-sql\n region: us-central1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Vpcaccess\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customTestNetwork = new gcp.compute.Network(\"custom_test\", {\n name: \"run-network\",\n autoCreateSubnetworks: false,\n});\nconst customTest = new gcp.compute.Subnetwork(\"custom_test\", {\n name: \"run-subnetwork\",\n ipCidrRange: \"10.2.0.0/28\",\n region: \"us-central1\",\n network: customTestNetwork.id,\n});\nconst connector = new gcp.vpcaccess.Connector(\"connector\", {\n name: \"run-vpc\",\n subnet: {\n name: customTest.name,\n },\n machineType: \"e2-standard-4\",\n minInstances: 2,\n maxInstances: 3,\n region: \"us-central1\",\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n vpcAccess: {\n connector: connector.id,\n egress: \"ALL_TRAFFIC\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test_network = gcp.compute.Network(\"custom_test\",\n name=\"run-network\",\n auto_create_subnetworks=False)\ncustom_test = gcp.compute.Subnetwork(\"custom_test\",\n name=\"run-subnetwork\",\n ip_cidr_range=\"10.2.0.0/28\",\n region=\"us-central1\",\n network=custom_test_network.id)\nconnector = gcp.vpcaccess.Connector(\"connector\",\n name=\"run-vpc\",\n subnet={\n \"name\": custom_test.name,\n },\n machine_type=\"e2-standard-4\",\n min_instances=2,\n max_instances=3,\n region=\"us-central1\")\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n \"vpc_access\": {\n \"connector\": connector.id,\n \"egress\": \"ALL_TRAFFIC\",\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 customTestNetwork = new Gcp.Compute.Network(\"custom_test\", new()\n {\n Name = \"run-network\",\n AutoCreateSubnetworks = false,\n });\n\n var customTest = new Gcp.Compute.Subnetwork(\"custom_test\", new()\n {\n Name = \"run-subnetwork\",\n IpCidrRange = \"10.2.0.0/28\",\n Region = \"us-central1\",\n Network = customTestNetwork.Id,\n });\n\n var connector = new Gcp.VpcAccess.Connector(\"connector\", new()\n {\n Name = \"run-vpc\",\n Subnet = new Gcp.VpcAccess.Inputs.ConnectorSubnetArgs\n {\n Name = customTest.Name,\n },\n MachineType = \"e2-standard-4\",\n MinInstances = 2,\n MaxInstances = 3,\n Region = \"us-central1\",\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessArgs\n {\n Connector = connector.Id,\n Egress = \"ALL_TRAFFIC\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vpcaccess\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomTestNetwork, err := compute.NewNetwork(ctx, \"custom_test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"run-network\"),\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\tcustomTest, err := compute.NewSubnetwork(ctx, \"custom_test\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"run-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: customTestNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tconnector, err := vpcaccess.NewConnector(ctx, \"connector\", \u0026vpcaccess.ConnectorArgs{\n\t\t\tName: pulumi.String(\"run-vpc\"),\n\t\t\tSubnet: \u0026vpcaccess.ConnectorSubnetArgs{\n\t\t\t\tName: customTest.Name,\n\t\t\t},\n\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\tMinInstances: pulumi.Int(2),\n\t\t\tMaxInstances: pulumi.Int(3),\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\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVpcAccess: \u0026cloudrunv2.ServiceTemplateVpcAccessArgs{\n\t\t\t\t\tConnector: connector.ID(),\n\t\t\t\t\tEgress: pulumi.String(\"ALL_TRAFFIC\"),\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.vpcaccess.Connector;\nimport com.pulumi.gcp.vpcaccess.ConnectorArgs;\nimport com.pulumi.gcp.vpcaccess.inputs.ConnectorSubnetArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateVpcAccessArgs;\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 customTestNetwork = new Network(\"customTestNetwork\", NetworkArgs.builder()\n .name(\"run-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var customTest = new Subnetwork(\"customTest\", SubnetworkArgs.builder()\n .name(\"run-subnetwork\")\n .ipCidrRange(\"10.2.0.0/28\")\n .region(\"us-central1\")\n .network(customTestNetwork.id())\n .build());\n\n var connector = new Connector(\"connector\", ConnectorArgs.builder()\n .name(\"run-vpc\")\n .subnet(ConnectorSubnetArgs.builder()\n .name(customTest.name())\n .build())\n .machineType(\"e2-standard-4\")\n .minInstances(2)\n .maxInstances(3)\n .region(\"us-central1\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .vpcAccess(ServiceTemplateVpcAccessArgs.builder()\n .connector(connector.id())\n .egress(\"ALL_TRAFFIC\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n vpcAccess:\n connector: ${connector.id}\n egress: ALL_TRAFFIC\n connector:\n type: gcp:vpcaccess:Connector\n properties:\n name: run-vpc\n subnet:\n name: ${customTest.name}\n machineType: e2-standard-4\n minInstances: 2\n maxInstances: 3\n region: us-central1\n customTest:\n type: gcp:compute:Subnetwork\n name: custom_test\n properties:\n name: run-subnetwork\n ipCidrRange: 10.2.0.0/28\n region: us-central1\n network: ${customTestNetwork.id}\n customTestNetwork:\n type: gcp:compute:Network\n name: custom_test\n properties:\n name: run-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Directvpc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n launchStage: \"GA\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n vpcAccess: {\n networkInterfaces: [{\n network: \"default\",\n subnetwork: \"default\",\n tags: [\n \"tag1\",\n \"tag2\",\n \"tag3\",\n ],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n launch_stage=\"GA\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n \"vpc_access\": {\n \"network_interfaces\": [{\n \"network\": \"default\",\n \"subnetwork\": \"default\",\n \"tags\": [\n \"tag1\",\n \"tag2\",\n \"tag3\",\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 @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n LaunchStage = \"GA\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessArgs\n {\n NetworkInterfaces = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessNetworkInterfaceArgs\n {\n Network = \"default\",\n Subnetwork = \"default\",\n Tags = new[]\n {\n \"tag1\",\n \"tag2\",\n \"tag3\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLaunchStage: pulumi.String(\"GA\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVpcAccess: \u0026cloudrunv2.ServiceTemplateVpcAccessArgs{\n\t\t\t\t\tNetworkInterfaces: cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArray{\n\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArgs{\n\t\t\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"tag2\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"tag3\"),\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.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateVpcAccessArgs;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .launchStage(\"GA\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .vpcAccess(ServiceTemplateVpcAccessArgs.builder()\n .networkInterfaces(ServiceTemplateVpcAccessNetworkInterfaceArgs.builder()\n .network(\"default\")\n .subnetwork(\"default\")\n .tags( \n \"tag1\",\n \"tag2\",\n \"tag3\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n launchStage: GA\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n vpcAccess:\n networkInterfaces:\n - network: default\n subnetwork: default\n tags:\n - tag1\n - tag2\n - tag3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Probes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n startupProbe: {\n initialDelaySeconds: 0,\n timeoutSeconds: 1,\n periodSeconds: 3,\n failureThreshold: 1,\n tcpSocket: {\n port: 8080,\n },\n },\n livenessProbe: {\n httpGet: {\n path: \"/\",\n },\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"startup_probe\": {\n \"initial_delay_seconds\": 0,\n \"timeout_seconds\": 1,\n \"period_seconds\": 3,\n \"failure_threshold\": 1,\n \"tcp_socket\": {\n \"port\": 8080,\n },\n },\n \"liveness_probe\": {\n \"http_get\": {\n \"path\": \"/\",\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 @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n StartupProbe = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeArgs\n {\n InitialDelaySeconds = 0,\n TimeoutSeconds = 1,\n PeriodSeconds = 3,\n FailureThreshold = 1,\n TcpSocket = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeTcpSocketArgs\n {\n Port = 8080,\n },\n },\n LivenessProbe = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerLivenessProbeArgs\n {\n HttpGet = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerLivenessProbeHttpGetArgs\n {\n Path = \"/\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tStartupProbe: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeArgs{\n\t\t\t\t\t\t\tInitialDelaySeconds: pulumi.Int(0),\n\t\t\t\t\t\t\tTimeoutSeconds: pulumi.Int(1),\n\t\t\t\t\t\t\tPeriodSeconds: pulumi.Int(3),\n\t\t\t\t\t\t\tFailureThreshold: pulumi.Int(1),\n\t\t\t\t\t\t\tTcpSocket: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeTcpSocketArgs{\n\t\t\t\t\t\t\t\tPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLivenessProbe: \u0026cloudrunv2.ServiceTemplateContainerLivenessProbeArgs{\n\t\t\t\t\t\t\tHttpGet: \u0026cloudrunv2.ServiceTemplateContainerLivenessProbeHttpGetArgs{\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/\"),\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.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .startupProbe(ServiceTemplateContainerStartupProbeArgs.builder()\n .initialDelaySeconds(0)\n .timeoutSeconds(1)\n .periodSeconds(3)\n .failureThreshold(1)\n .tcpSocket(ServiceTemplateContainerStartupProbeTcpSocketArgs.builder()\n .port(8080)\n .build())\n .build())\n .livenessProbe(ServiceTemplateContainerLivenessProbeArgs.builder()\n .httpGet(ServiceTemplateContainerLivenessProbeHttpGetArgs.builder()\n .path(\"/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n startupProbe:\n initialDelaySeconds: 0\n timeoutSeconds: 1\n periodSeconds: 3\n failureThreshold: 1\n tcpSocket:\n port: 8080\n livenessProbe:\n httpGet:\n path: /\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Secret\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret-1\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n volumes: [{\n name: \"a-volume\",\n secret: {\n secret: secret.secretId,\n defaultMode: 292,\n items: [{\n version: \"1\",\n path: \"my-secret\",\n }],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n volumeMounts: [{\n name: \"a-volume\",\n mountPath: \"/secrets\",\n }],\n }],\n },\n}, {\n dependsOn: [secret_version_data],\n});\nconst project = gcp.organizations.getProject({});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret-1\",\n replication={\n \"auto\": {},\n })\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"volumes\": [{\n \"name\": \"a-volume\",\n \"secret\": {\n \"secret\": secret.secret_id,\n \"default_mode\": 292,\n \"items\": [{\n \"version\": \"1\",\n \"path\": \"my-secret\",\n }],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"volume_mounts\": [{\n \"name\": \"a-volume\",\n \"mount_path\": \"/secrets\",\n }],\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[secret_version_data]))\nproject = gcp.organizations.get_project()\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\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 secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret-1\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"a-volume\",\n Secret = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeSecretArgs\n {\n Secret = secret.SecretId,\n DefaultMode = 292,\n Items = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeSecretItemArgs\n {\n Version = \"1\",\n Path = \"my-secret\",\n },\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"a-volume\",\n MountPath = \"/secrets\",\n },\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_data,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-1\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\tSecret: \u0026cloudrunv2.ServiceTemplateVolumeSecretArgs{\n\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\tDefaultMode: pulumi.Int(292),\n\t\t\t\t\t\t\tItems: cloudrunv2.ServiceTemplateVolumeSecretItemArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeSecretItemArgs{\n\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"my-secret\"),\n\t\t\t\t\t\t\t\t},\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\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/secrets\"),\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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_data,\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\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number)),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\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 secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret-1\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"a-volume\")\n .secret(ServiceTemplateVolumeSecretArgs.builder()\n .secret(secret.secretId())\n .defaultMode(292)\n .items(ServiceTemplateVolumeSecretItemArgs.builder()\n .version(\"1\")\n .path(\"my-secret\")\n .build())\n .build())\n .build())\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"a-volume\")\n .mountPath(\"/secrets\")\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret_version_data)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n ingress: INGRESS_TRAFFIC_ALL\n template:\n volumes:\n - name: a-volume\n secret:\n secret: ${secret.secretId}\n defaultMode: 292\n items:\n - version: '1'\n path: my-secret\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n volumeMounts:\n - name: a-volume\n mountPath: /secrets\n options:\n dependson:\n - ${[\"secret-version-data\"]}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-1\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Multicontainer\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n launchStage: \"BETA\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [\n {\n name: \"hello-1\",\n ports: {\n containerPort: 8080,\n },\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n dependsOns: [\"hello-2\"],\n volumeMounts: [{\n name: \"empty-dir-volume\",\n mountPath: \"/mnt\",\n }],\n },\n {\n name: \"hello-2\",\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n envs: [{\n name: \"PORT\",\n value: \"8081\",\n }],\n startupProbe: {\n httpGet: {\n port: 8081,\n },\n },\n },\n ],\n volumes: [{\n name: \"empty-dir-volume\",\n emptyDir: {\n medium: \"MEMORY\",\n sizeLimit: \"256Mi\",\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n launch_stage=\"BETA\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [\n {\n \"name\": \"hello-1\",\n \"ports\": {\n \"container_port\": 8080,\n },\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"depends_ons\": [\"hello-2\"],\n \"volume_mounts\": [{\n \"name\": \"empty-dir-volume\",\n \"mount_path\": \"/mnt\",\n }],\n },\n {\n \"name\": \"hello-2\",\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"envs\": [{\n \"name\": \"PORT\",\n \"value\": \"8081\",\n }],\n \"startup_probe\": {\n \"http_get\": {\n \"port\": 8081,\n },\n },\n },\n ],\n \"volumes\": [{\n \"name\": \"empty-dir-volume\",\n \"empty_dir\": {\n \"medium\": \"MEMORY\",\n \"size_limit\": \"256Mi\",\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 @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n LaunchStage = \"BETA\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Name = \"hello-1\",\n Ports = \n {\n { \"containerPort\", 8080 },\n },\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n DependsOns = new[]\n {\n \"hello-2\",\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"empty-dir-volume\",\n MountPath = \"/mnt\",\n },\n },\n },\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Name = \"hello-2\",\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Envs = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvArgs\n {\n Name = \"PORT\",\n Value = \"8081\",\n },\n },\n StartupProbe = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeArgs\n {\n HttpGet = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeHttpGetArgs\n {\n Port = 8081,\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"empty-dir-volume\",\n EmptyDir = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeEmptyDirArgs\n {\n Medium = \"MEMORY\",\n SizeLimit = \"256Mi\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\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 := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tName: pulumi.String(\"hello-1\"),\n\t\t\t\t\t\tPorts: cloudrunv2.ServiceTemplateContainerPortArray{\n\t\t\t\t\t\t\tContainerPort: 8080,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tDependsOns: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hello-2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt\"),\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\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tName: pulumi.String(\"hello-2\"),\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tEnvs: cloudrunv2.ServiceTemplateContainerEnvArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PORT\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"8081\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tStartupProbe: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeArgs{\n\t\t\t\t\t\t\tHttpGet: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeHttpGetArgs{\n\t\t\t\t\t\t\t\tPort: pulumi.Int(8081),\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\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\tEmptyDir: \u0026cloudrunv2.ServiceTemplateVolumeEmptyDirArgs{\n\t\t\t\t\t\t\tMedium: pulumi.String(\"MEMORY\"),\n\t\t\t\t\t\t\tSizeLimit: pulumi.String(\"256Mi\"),\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.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .launchStage(\"BETA\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers( \n ServiceTemplateContainerArgs.builder()\n .name(\"hello-1\")\n .ports(ServiceTemplateContainerPortArgs.builder()\n .containerPort(8080)\n .build())\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .dependsOns(\"hello-2\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"empty-dir-volume\")\n .mountPath(\"/mnt\")\n .build())\n .build(),\n ServiceTemplateContainerArgs.builder()\n .name(\"hello-2\")\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .envs(ServiceTemplateContainerEnvArgs.builder()\n .name(\"PORT\")\n .value(\"8081\")\n .build())\n .startupProbe(ServiceTemplateContainerStartupProbeArgs.builder()\n .httpGet(ServiceTemplateContainerStartupProbeHttpGetArgs.builder()\n .port(8081)\n .build())\n .build())\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"empty-dir-volume\")\n .emptyDir(ServiceTemplateVolumeEmptyDirArgs.builder()\n .medium(\"MEMORY\")\n .sizeLimit(\"256Mi\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n launchStage: BETA\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - name: hello-1\n ports:\n containerPort: 8080\n image: us-docker.pkg.dev/cloudrun/container/hello\n dependsOns:\n - hello-2\n volumeMounts:\n - name: empty-dir-volume\n mountPath: /mnt\n - name: hello-2\n image: us-docker.pkg.dev/cloudrun/container/hello\n envs:\n - name: PORT\n value: '8081'\n startupProbe:\n httpGet:\n port: 8081\n volumes:\n - name: empty-dir-volume\n emptyDir:\n medium: MEMORY\n sizeLimit: 256Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Mount Gcs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultBucket = new gcp.storage.Bucket(\"default\", {\n name: \"cloudrun-service\",\n location: \"US\",\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n launchStage: \"BETA\",\n template: {\n executionEnvironment: \"EXECUTION_ENVIRONMENT_GEN2\",\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n volumeMounts: [{\n name: \"bucket\",\n mountPath: \"/var/www\",\n }],\n }],\n volumes: [{\n name: \"bucket\",\n gcs: {\n bucket: defaultBucket.name,\n readOnly: false,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_bucket = gcp.storage.Bucket(\"default\",\n name=\"cloudrun-service\",\n location=\"US\")\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n launch_stage=\"BETA\",\n template={\n \"execution_environment\": \"EXECUTION_ENVIRONMENT_GEN2\",\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"volume_mounts\": [{\n \"name\": \"bucket\",\n \"mount_path\": \"/var/www\",\n }],\n }],\n \"volumes\": [{\n \"name\": \"bucket\",\n \"gcs\": {\n \"bucket\": default_bucket.name,\n \"read_only\": False,\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 defaultBucket = new Gcp.Storage.Bucket(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"US\",\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n LaunchStage = \"BETA\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n ExecutionEnvironment = \"EXECUTION_ENVIRONMENT_GEN2\",\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"bucket\",\n MountPath = \"/var/www\",\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"bucket\",\n Gcs = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeGcsArgs\n {\n Bucket = defaultBucket.Name,\n ReadOnly = false,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultBucket, err := storage.NewBucket(ctx, \"default\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\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 = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tExecutionEnvironment: pulumi.String(\"EXECUTION_ENVIRONMENT_GEN2\"),\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"bucket\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/var/www\"),\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\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"bucket\"),\n\t\t\t\t\t\tGcs: \u0026cloudrunv2.ServiceTemplateVolumeGcsArgs{\n\t\t\t\t\t\t\tBucket: defaultBucket.Name,\n\t\t\t\t\t\t\tReadOnly: pulumi.Bool(false),\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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\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 defaultBucket = new Bucket(\"defaultBucket\", BucketArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"US\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .launchStage(\"BETA\")\n .template(ServiceTemplateArgs.builder()\n .executionEnvironment(\"EXECUTION_ENVIRONMENT_GEN2\")\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"bucket\")\n .mountPath(\"/var/www\")\n .build())\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"bucket\")\n .gcs(ServiceTemplateVolumeGcsArgs.builder()\n .bucket(defaultBucket.name())\n .readOnly(false)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n launchStage: BETA\n template:\n executionEnvironment: EXECUTION_ENVIRONMENT_GEN2\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n volumeMounts:\n - name: bucket\n mountPath: /var/www\n volumes:\n - name: bucket\n gcs:\n bucket: ${defaultBucket.name}\n readOnly: false\n defaultBucket:\n type: gcp:storage:Bucket\n name: default\n properties:\n name: cloudrun-service\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Mount Nfs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultInstance = new gcp.filestore.Instance(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1-b\",\n tier: \"BASIC_HDD\",\n fileShares: {\n capacityGb: 1024,\n name: \"share1\",\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n }],\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n launchStage: \"BETA\",\n template: {\n executionEnvironment: \"EXECUTION_ENVIRONMENT_GEN2\",\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello:latest\",\n volumeMounts: [{\n name: \"nfs\",\n mountPath: \"/mnt/nfs/filestore\",\n }],\n }],\n vpcAccess: {\n networkInterfaces: [{\n network: \"default\",\n subnetwork: \"default\",\n }],\n },\n volumes: [{\n name: \"nfs\",\n nfs: {\n server: defaultInstance.networks.apply(networks =\u003e networks[0].ipAddresses?.[0]),\n path: \"/share1\",\n readOnly: false,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_instance = gcp.filestore.Instance(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1-b\",\n tier=\"BASIC_HDD\",\n file_shares={\n \"capacity_gb\": 1024,\n \"name\": \"share1\",\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\n }])\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n launch_stage=\"BETA\",\n template={\n \"execution_environment\": \"EXECUTION_ENVIRONMENT_GEN2\",\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello:latest\",\n \"volume_mounts\": [{\n \"name\": \"nfs\",\n \"mount_path\": \"/mnt/nfs/filestore\",\n }],\n }],\n \"vpc_access\": {\n \"network_interfaces\": [{\n \"network\": \"default\",\n \"subnetwork\": \"default\",\n }],\n },\n \"volumes\": [{\n \"name\": \"nfs\",\n \"nfs\": {\n \"server\": default_instance.networks[0].ip_addresses[0],\n \"path\": \"/share1\",\n \"read_only\": False,\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 defaultInstance = new Gcp.Filestore.Instance(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1-b\",\n Tier = \"BASIC_HDD\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 1024,\n Name = \"share1\",\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n },\n },\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n LaunchStage = \"BETA\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n ExecutionEnvironment = \"EXECUTION_ENVIRONMENT_GEN2\",\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello:latest\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"nfs\",\n MountPath = \"/mnt/nfs/filestore\",\n },\n },\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessArgs\n {\n NetworkInterfaces = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessNetworkInterfaceArgs\n {\n Network = \"default\",\n Subnetwork = \"default\",\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"nfs\",\n Nfs = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeNfsArgs\n {\n Server = defaultInstance.Networks.Apply(networks =\u003e networks[0].IpAddresses[0]),\n Path = \"/share1\",\n ReadOnly = false,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/filestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultInstance, err := filestore.NewInstance(ctx, \"default\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1-b\"),\n\t\t\tTier: pulumi.String(\"BASIC_HDD\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(1024),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\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 = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tExecutionEnvironment: pulumi.String(\"EXECUTION_ENVIRONMENT_GEN2\"),\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello:latest\"),\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"nfs\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt/nfs/filestore\"),\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\tVpcAccess: \u0026cloudrunv2.ServiceTemplateVpcAccessArgs{\n\t\t\t\t\tNetworkInterfaces: cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArray{\n\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArgs{\n\t\t\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"nfs\"),\n\t\t\t\t\t\tNfs: \u0026cloudrunv2.ServiceTemplateVolumeNfsArgs{\n\t\t\t\t\t\t\tServer: defaultInstance.Networks.ApplyT(func(networks []filestore.InstanceNetwork) (*string, error) {\n\t\t\t\t\t\t\t\treturn \u0026networks[0].IpAddresses[0], nil\n\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\tPath: pulumi.String(\"/share1\"),\n\t\t\t\t\t\t\tReadOnly: pulumi.Bool(false),\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.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateVpcAccessArgs;\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 defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1-b\")\n .tier(\"BASIC_HDD\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(1024)\n .name(\"share1\")\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .build())\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .launchStage(\"BETA\")\n .template(ServiceTemplateArgs.builder()\n .executionEnvironment(\"EXECUTION_ENVIRONMENT_GEN2\")\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello:latest\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"nfs\")\n .mountPath(\"/mnt/nfs/filestore\")\n .build())\n .build())\n .vpcAccess(ServiceTemplateVpcAccessArgs.builder()\n .networkInterfaces(ServiceTemplateVpcAccessNetworkInterfaceArgs.builder()\n .network(\"default\")\n .subnetwork(\"default\")\n .build())\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"nfs\")\n .nfs(ServiceTemplateVolumeNfsArgs.builder()\n .server(defaultInstance.networks().applyValue(networks -\u003e networks[0].ipAddresses()[0]))\n .path(\"/share1\")\n .readOnly(false)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n ingress: INGRESS_TRAFFIC_ALL\n launchStage: BETA\n template:\n executionEnvironment: EXECUTION_ENVIRONMENT_GEN2\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello:latest\n volumeMounts:\n - name: nfs\n mountPath: /mnt/nfs/filestore\n vpcAccess:\n networkInterfaces:\n - network: default\n subnetwork: default\n volumes:\n - name: nfs\n nfs:\n server: ${defaultInstance.networks[0].ipAddresses[0]}\n path: /share1\n readOnly: false\n defaultInstance:\n type: gcp:filestore:Instance\n name: default\n properties:\n name: cloudrun-service\n location: us-central1-b\n tier: BASIC_HDD\n fileShares:\n capacityGb: 1024\n name: share1\n networks:\n - network: default\n modes:\n - MODE_IPV4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/services/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrunv2/service:Service default projects/{{project}}/locations/{{location}}/services/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/service:Service default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/service:Service default {{location}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -140060,7 +140060,7 @@ } }, "gcp:cloudscheduler/job:Job": { - "description": "A scheduled job that can publish a PubSub message or an HTTP request\nevery X interval of time, using a crontab format string.\n\n\nTo get more information about Job, see:\n\n* [API documentation](https://cloud.google.com/scheduler/docs/reference/rest/)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/scheduler/)\n\n## Example Usage\n\n### Scheduler Job Pubsub\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"job-topic\"});\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test job\",\n schedule: \"*/2 * * * *\",\n pubsubTarget: {\n topicName: topic.id,\n data: std.base64encode({\n input: \"test\",\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ntopic = gcp.pubsub.Topic(\"topic\", name=\"job-topic\")\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test job\",\n schedule=\"*/2 * * * *\",\n pubsub_target={\n \"topicName\": topic.id,\n \"data\": std.base64encode(input=\"test\").result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"job-topic\",\n });\n\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test job\",\n Schedule = \"*/2 * * * *\",\n PubsubTarget = new Gcp.CloudScheduler.Inputs.JobPubsubTargetArgs\n {\n TopicName = topic.Id,\n Data = Std.Base64encode.Invoke(new()\n {\n Input = \"test\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"job-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"test\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test job\"),\n\t\t\tSchedule: pulumi.String(\"*/2 * * * *\"),\n\t\t\tPubsubTarget: \u0026cloudscheduler.JobPubsubTargetArgs{\n\t\t\t\tTopicName: topic.ID(),\n\t\t\t\tData: invokeBase64encode.Result,\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.pubsub.TopicArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobPubsubTargetArgs;\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.builder()\n .name(\"job-topic\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test job\")\n .schedule(\"*/2 * * * *\")\n .pubsubTarget(JobPubsubTargetArgs.builder()\n .topicName(topic.id())\n .data(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"test\")\n .build()).result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: job-topic\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test job\n schedule: '*/2 * * * *'\n pubsubTarget:\n topicName: ${topic.id}\n data:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: test\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Http\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test http job\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n retryConfig: {\n retryCount: 1,\n },\n httpTarget: {\n httpMethod: \"POST\",\n uri: \"https://example.com/\",\n body: std.base64encode({\n input: \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).then(invoke =\u003e invoke.result),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test http job\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n retry_config={\n \"retryCount\": 1,\n },\n http_target={\n \"httpMethod\": \"POST\",\n \"uri\": \"https://example.com/\",\n \"body\": std.base64encode(input=\"{\\\"foo\\\":\\\"bar\\\"}\").result,\n \"headers\": {\n \"Content-Type\": \"application/json\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test http job\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n RetryConfig = new Gcp.CloudScheduler.Inputs.JobRetryConfigArgs\n {\n RetryCount = 1,\n },\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"POST\",\n Uri = \"https://example.com/\",\n Body = Std.Base64encode.Invoke(new()\n {\n Input = \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).Apply(invoke =\u003e invoke.Result),\n Headers = \n {\n { \"Content-Type\", \"application/json\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"{\\\"foo\\\":\\\"bar\\\"}\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tRetryConfig: \u0026cloudscheduler.JobRetryConfigArgs{\n\t\t\t\tRetryCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tUri: pulumi.String(\"https://example.com/\"),\n\t\t\t\tBody: invokeBase64encode.Result,\n\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\"Content-Type\": pulumi.String(\"application/json\"),\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.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobRetryConfigArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\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 job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test http job\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .retryConfig(JobRetryConfigArgs.builder()\n .retryCount(1)\n .build())\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"POST\")\n .uri(\"https://example.com/\")\n .body(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"{\\\"foo\\\":\\\"bar\\\"}\")\n .build()).result())\n .headers(Map.of(\"Content-Type\", \"application/json\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test http job\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n retryConfig:\n retryCount: 1\n httpTarget:\n httpMethod: POST\n uri: https://example.com/\n body:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: '{\"foo\":\"bar\"}'\n Return: result\n headers:\n Content-Type: application/json\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Paused\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n paused: true,\n name: \"test-job\",\n description: \"test http job with updated fields\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n retryConfig: {\n retryCount: 1,\n },\n httpTarget: {\n httpMethod: \"POST\",\n uri: \"https://example.com/ping\",\n body: std.base64encode({\n input: \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).then(invoke =\u003e invoke.result),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\njob = gcp.cloudscheduler.Job(\"job\",\n paused=True,\n name=\"test-job\",\n description=\"test http job with updated fields\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n retry_config={\n \"retryCount\": 1,\n },\n http_target={\n \"httpMethod\": \"POST\",\n \"uri\": \"https://example.com/ping\",\n \"body\": std.base64encode(input=\"{\\\"foo\\\":\\\"bar\\\"}\").result,\n \"headers\": {\n \"Content-Type\": \"application/json\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Paused = true,\n Name = \"test-job\",\n Description = \"test http job with updated fields\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n RetryConfig = new Gcp.CloudScheduler.Inputs.JobRetryConfigArgs\n {\n RetryCount = 1,\n },\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"POST\",\n Uri = \"https://example.com/ping\",\n Body = Std.Base64encode.Invoke(new()\n {\n Input = \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).Apply(invoke =\u003e invoke.Result),\n Headers = \n {\n { \"Content-Type\", \"application/json\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"{\\\"foo\\\":\\\"bar\\\"}\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tPaused: pulumi.Bool(true),\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job with updated fields\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tRetryConfig: \u0026cloudscheduler.JobRetryConfigArgs{\n\t\t\t\tRetryCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tUri: pulumi.String(\"https://example.com/ping\"),\n\t\t\t\tBody: invokeBase64encode.Result,\n\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\"Content-Type\": pulumi.String(\"application/json\"),\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.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobRetryConfigArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\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 job = new Job(\"job\", JobArgs.builder()\n .paused(true)\n .name(\"test-job\")\n .description(\"test http job with updated fields\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .retryConfig(JobRetryConfigArgs.builder()\n .retryCount(1)\n .build())\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"POST\")\n .uri(\"https://example.com/ping\")\n .body(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"{\\\"foo\\\":\\\"bar\\\"}\")\n .build()).result())\n .headers(Map.of(\"Content-Type\", \"application/json\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n paused: true\n name: test-job\n description: test http job with updated fields\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n retryConfig:\n retryCount: 1\n httpTarget:\n httpMethod: POST\n uri: https://example.com/ping\n body:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: '{\"foo\":\"bar\"}'\n Return: result\n headers:\n Content-Type: application/json\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job App Engine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n schedule: \"*/4 * * * *\",\n description: \"test app engine job\",\n timeZone: \"Europe/London\",\n attemptDeadline: \"320s\",\n retryConfig: {\n minBackoffDuration: \"1s\",\n maxRetryDuration: \"10s\",\n maxDoublings: 2,\n retryCount: 3,\n },\n appEngineHttpTarget: {\n httpMethod: \"POST\",\n appEngineRouting: {\n service: \"web\",\n version: \"prod\",\n instance: \"my-instance-001\",\n },\n relativeUri: \"/ping\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n schedule=\"*/4 * * * *\",\n description=\"test app engine job\",\n time_zone=\"Europe/London\",\n attempt_deadline=\"320s\",\n retry_config={\n \"minBackoffDuration\": \"1s\",\n \"maxRetryDuration\": \"10s\",\n \"maxDoublings\": 2,\n \"retryCount\": 3,\n },\n app_engine_http_target={\n \"httpMethod\": \"POST\",\n \"appEngineRouting\": {\n \"service\": \"web\",\n \"version\": \"prod\",\n \"instance\": \"my-instance-001\",\n },\n \"relativeUri\": \"/ping\",\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 job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Schedule = \"*/4 * * * *\",\n Description = \"test app engine job\",\n TimeZone = \"Europe/London\",\n AttemptDeadline = \"320s\",\n RetryConfig = new Gcp.CloudScheduler.Inputs.JobRetryConfigArgs\n {\n MinBackoffDuration = \"1s\",\n MaxRetryDuration = \"10s\",\n MaxDoublings = 2,\n RetryCount = 3,\n },\n AppEngineHttpTarget = new Gcp.CloudScheduler.Inputs.JobAppEngineHttpTargetArgs\n {\n HttpMethod = \"POST\",\n AppEngineRouting = new Gcp.CloudScheduler.Inputs.JobAppEngineHttpTargetAppEngineRoutingArgs\n {\n Service = \"web\",\n Version = \"prod\",\n Instance = \"my-instance-001\",\n },\n RelativeUri = \"/ping\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudscheduler\"\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 := cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tSchedule: pulumi.String(\"*/4 * * * *\"),\n\t\t\tDescription: pulumi.String(\"test app engine job\"),\n\t\t\tTimeZone: pulumi.String(\"Europe/London\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tRetryConfig: \u0026cloudscheduler.JobRetryConfigArgs{\n\t\t\t\tMinBackoffDuration: pulumi.String(\"1s\"),\n\t\t\t\tMaxRetryDuration: pulumi.String(\"10s\"),\n\t\t\t\tMaxDoublings: pulumi.Int(2),\n\t\t\t\tRetryCount: pulumi.Int(3),\n\t\t\t},\n\t\t\tAppEngineHttpTarget: \u0026cloudscheduler.JobAppEngineHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tAppEngineRouting: \u0026cloudscheduler.JobAppEngineHttpTargetAppEngineRoutingArgs{\n\t\t\t\t\tService: pulumi.String(\"web\"),\n\t\t\t\t\tVersion: pulumi.String(\"prod\"),\n\t\t\t\t\tInstance: pulumi.String(\"my-instance-001\"),\n\t\t\t\t},\n\t\t\t\tRelativeUri: pulumi.String(\"/ping\"),\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.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobRetryConfigArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobAppEngineHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobAppEngineHttpTargetAppEngineRoutingArgs;\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 job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .schedule(\"*/4 * * * *\")\n .description(\"test app engine job\")\n .timeZone(\"Europe/London\")\n .attemptDeadline(\"320s\")\n .retryConfig(JobRetryConfigArgs.builder()\n .minBackoffDuration(\"1s\")\n .maxRetryDuration(\"10s\")\n .maxDoublings(2)\n .retryCount(3)\n .build())\n .appEngineHttpTarget(JobAppEngineHttpTargetArgs.builder()\n .httpMethod(\"POST\")\n .appEngineRouting(JobAppEngineHttpTargetAppEngineRoutingArgs.builder()\n .service(\"web\")\n .version(\"prod\")\n .instance(\"my-instance-001\")\n .build())\n .relativeUri(\"/ping\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n schedule: '*/4 * * * *'\n description: test app engine job\n timeZone: Europe/London\n attemptDeadline: 320s\n retryConfig:\n minBackoffDuration: 1s\n maxRetryDuration: 10s\n maxDoublings: 2\n retryCount: 3\n appEngineHttpTarget:\n httpMethod: POST\n appEngineRouting:\n service: web\n version: prod\n instance: my-instance-001\n relativeUri: /ping\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Oauth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test http job\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n httpTarget: {\n httpMethod: \"GET\",\n uri: \"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\",\n oauthToken: {\n serviceAccountEmail: _default.then(_default =\u003e _default.email),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test http job\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n http_target={\n \"httpMethod\": \"GET\",\n \"uri\": \"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\",\n \"oauthToken\": {\n \"serviceAccountEmail\": default.email,\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 @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test http job\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"GET\",\n Uri = \"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\",\n OauthToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOauthTokenArgs\n {\n ServiceAccountEmail = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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_default, err := compute.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\t\tUri: pulumi.String(\"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\"),\n\t\t\t\tOauthToken: \u0026cloudscheduler.JobHttpTargetOauthTokenArgs{\n\t\t\t\t\tServiceAccountEmail: pulumi.String(_default.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\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOauthTokenArgs;\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 default = ComputeFunctions.getDefaultServiceAccount();\n\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test http job\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"GET\")\n .uri(\"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\")\n .oauthToken(JobHttpTargetOauthTokenArgs.builder()\n .serviceAccountEmail(default_.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test http job\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n httpTarget:\n httpMethod: GET\n uri: https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\n oauthToken:\n serviceAccountEmail: ${default.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Oidc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test http job\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n httpTarget: {\n httpMethod: \"GET\",\n uri: \"https://example.com/ping\",\n oidcToken: {\n serviceAccountEmail: _default.then(_default =\u003e _default.email),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test http job\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n http_target={\n \"httpMethod\": \"GET\",\n \"uri\": \"https://example.com/ping\",\n \"oidcToken\": {\n \"serviceAccountEmail\": default.email,\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 @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test http job\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"GET\",\n Uri = \"https://example.com/ping\",\n OidcToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOidcTokenArgs\n {\n ServiceAccountEmail = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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_default, err := compute.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\t\tUri: pulumi.String(\"https://example.com/ping\"),\n\t\t\t\tOidcToken: \u0026cloudscheduler.JobHttpTargetOidcTokenArgs{\n\t\t\t\t\tServiceAccountEmail: pulumi.String(_default.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\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOidcTokenArgs;\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 default = ComputeFunctions.getDefaultServiceAccount();\n\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test http job\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"GET\")\n .uri(\"https://example.com/ping\")\n .oidcToken(JobHttpTargetOidcTokenArgs.builder()\n .serviceAccountEmail(default_.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test http job\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n httpTarget:\n httpMethod: GET\n uri: https://example.com/ping\n oidcToken:\n serviceAccountEmail: ${default.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJob can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/jobs/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Job can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default projects/{{project}}/locations/{{region}}/jobs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default {{name}}\n```\n\n", + "description": "A scheduled job that can publish a PubSub message or an HTTP request\nevery X interval of time, using a crontab format string.\n\n\nTo get more information about Job, see:\n\n* [API documentation](https://cloud.google.com/scheduler/docs/reference/rest/)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/scheduler/)\n\n## Example Usage\n\n### Scheduler Job Pubsub\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"job-topic\"});\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test job\",\n schedule: \"*/2 * * * *\",\n pubsubTarget: {\n topicName: topic.id,\n data: std.base64encode({\n input: \"test\",\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ntopic = gcp.pubsub.Topic(\"topic\", name=\"job-topic\")\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test job\",\n schedule=\"*/2 * * * *\",\n pubsub_target={\n \"topic_name\": topic.id,\n \"data\": std.base64encode(input=\"test\").result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"job-topic\",\n });\n\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test job\",\n Schedule = \"*/2 * * * *\",\n PubsubTarget = new Gcp.CloudScheduler.Inputs.JobPubsubTargetArgs\n {\n TopicName = topic.Id,\n Data = Std.Base64encode.Invoke(new()\n {\n Input = \"test\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"job-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"test\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test job\"),\n\t\t\tSchedule: pulumi.String(\"*/2 * * * *\"),\n\t\t\tPubsubTarget: \u0026cloudscheduler.JobPubsubTargetArgs{\n\t\t\t\tTopicName: topic.ID(),\n\t\t\t\tData: pulumi.String(invokeBase64encode.Result),\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.pubsub.TopicArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobPubsubTargetArgs;\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.builder()\n .name(\"job-topic\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test job\")\n .schedule(\"*/2 * * * *\")\n .pubsubTarget(JobPubsubTargetArgs.builder()\n .topicName(topic.id())\n .data(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"test\")\n .build()).result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: job-topic\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test job\n schedule: '*/2 * * * *'\n pubsubTarget:\n topicName: ${topic.id}\n data:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: test\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Http\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test http job\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n retryConfig: {\n retryCount: 1,\n },\n httpTarget: {\n httpMethod: \"POST\",\n uri: \"https://example.com/\",\n body: std.base64encode({\n input: \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).then(invoke =\u003e invoke.result),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test http job\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n retry_config={\n \"retry_count\": 1,\n },\n http_target={\n \"http_method\": \"POST\",\n \"uri\": \"https://example.com/\",\n \"body\": std.base64encode(input=\"{\\\"foo\\\":\\\"bar\\\"}\").result,\n \"headers\": {\n \"content__type\": \"application/json\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test http job\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n RetryConfig = new Gcp.CloudScheduler.Inputs.JobRetryConfigArgs\n {\n RetryCount = 1,\n },\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"POST\",\n Uri = \"https://example.com/\",\n Body = Std.Base64encode.Invoke(new()\n {\n Input = \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).Apply(invoke =\u003e invoke.Result),\n Headers = \n {\n { \"Content-Type\", \"application/json\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"{\\\"foo\\\":\\\"bar\\\"}\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tRetryConfig: \u0026cloudscheduler.JobRetryConfigArgs{\n\t\t\t\tRetryCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tUri: pulumi.String(\"https://example.com/\"),\n\t\t\t\tBody: pulumi.String(invokeBase64encode.Result),\n\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\"Content-Type\": pulumi.String(\"application/json\"),\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.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobRetryConfigArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\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 job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test http job\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .retryConfig(JobRetryConfigArgs.builder()\n .retryCount(1)\n .build())\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"POST\")\n .uri(\"https://example.com/\")\n .body(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"{\\\"foo\\\":\\\"bar\\\"}\")\n .build()).result())\n .headers(Map.of(\"Content-Type\", \"application/json\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test http job\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n retryConfig:\n retryCount: 1\n httpTarget:\n httpMethod: POST\n uri: https://example.com/\n body:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: '{\"foo\":\"bar\"}'\n Return: result\n headers:\n Content-Type: application/json\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Paused\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n paused: true,\n name: \"test-job\",\n description: \"test http job with updated fields\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n retryConfig: {\n retryCount: 1,\n },\n httpTarget: {\n httpMethod: \"POST\",\n uri: \"https://example.com/ping\",\n body: std.base64encode({\n input: \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).then(invoke =\u003e invoke.result),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\njob = gcp.cloudscheduler.Job(\"job\",\n paused=True,\n name=\"test-job\",\n description=\"test http job with updated fields\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n retry_config={\n \"retry_count\": 1,\n },\n http_target={\n \"http_method\": \"POST\",\n \"uri\": \"https://example.com/ping\",\n \"body\": std.base64encode(input=\"{\\\"foo\\\":\\\"bar\\\"}\").result,\n \"headers\": {\n \"content__type\": \"application/json\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Paused = true,\n Name = \"test-job\",\n Description = \"test http job with updated fields\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n RetryConfig = new Gcp.CloudScheduler.Inputs.JobRetryConfigArgs\n {\n RetryCount = 1,\n },\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"POST\",\n Uri = \"https://example.com/ping\",\n Body = Std.Base64encode.Invoke(new()\n {\n Input = \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).Apply(invoke =\u003e invoke.Result),\n Headers = \n {\n { \"Content-Type\", \"application/json\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"{\\\"foo\\\":\\\"bar\\\"}\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tPaused: pulumi.Bool(true),\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job with updated fields\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tRetryConfig: \u0026cloudscheduler.JobRetryConfigArgs{\n\t\t\t\tRetryCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tUri: pulumi.String(\"https://example.com/ping\"),\n\t\t\t\tBody: pulumi.String(invokeBase64encode.Result),\n\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\"Content-Type\": pulumi.String(\"application/json\"),\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.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobRetryConfigArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\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 job = new Job(\"job\", JobArgs.builder()\n .paused(true)\n .name(\"test-job\")\n .description(\"test http job with updated fields\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .retryConfig(JobRetryConfigArgs.builder()\n .retryCount(1)\n .build())\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"POST\")\n .uri(\"https://example.com/ping\")\n .body(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"{\\\"foo\\\":\\\"bar\\\"}\")\n .build()).result())\n .headers(Map.of(\"Content-Type\", \"application/json\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n paused: true\n name: test-job\n description: test http job with updated fields\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n retryConfig:\n retryCount: 1\n httpTarget:\n httpMethod: POST\n uri: https://example.com/ping\n body:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: '{\"foo\":\"bar\"}'\n Return: result\n headers:\n Content-Type: application/json\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job App Engine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n schedule: \"*/4 * * * *\",\n description: \"test app engine job\",\n timeZone: \"Europe/London\",\n attemptDeadline: \"320s\",\n retryConfig: {\n minBackoffDuration: \"1s\",\n maxRetryDuration: \"10s\",\n maxDoublings: 2,\n retryCount: 3,\n },\n appEngineHttpTarget: {\n httpMethod: \"POST\",\n appEngineRouting: {\n service: \"web\",\n version: \"prod\",\n instance: \"my-instance-001\",\n },\n relativeUri: \"/ping\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n schedule=\"*/4 * * * *\",\n description=\"test app engine job\",\n time_zone=\"Europe/London\",\n attempt_deadline=\"320s\",\n retry_config={\n \"min_backoff_duration\": \"1s\",\n \"max_retry_duration\": \"10s\",\n \"max_doublings\": 2,\n \"retry_count\": 3,\n },\n app_engine_http_target={\n \"http_method\": \"POST\",\n \"app_engine_routing\": {\n \"service\": \"web\",\n \"version\": \"prod\",\n \"instance\": \"my-instance-001\",\n },\n \"relative_uri\": \"/ping\",\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 job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Schedule = \"*/4 * * * *\",\n Description = \"test app engine job\",\n TimeZone = \"Europe/London\",\n AttemptDeadline = \"320s\",\n RetryConfig = new Gcp.CloudScheduler.Inputs.JobRetryConfigArgs\n {\n MinBackoffDuration = \"1s\",\n MaxRetryDuration = \"10s\",\n MaxDoublings = 2,\n RetryCount = 3,\n },\n AppEngineHttpTarget = new Gcp.CloudScheduler.Inputs.JobAppEngineHttpTargetArgs\n {\n HttpMethod = \"POST\",\n AppEngineRouting = new Gcp.CloudScheduler.Inputs.JobAppEngineHttpTargetAppEngineRoutingArgs\n {\n Service = \"web\",\n Version = \"prod\",\n Instance = \"my-instance-001\",\n },\n RelativeUri = \"/ping\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudscheduler\"\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 := cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tSchedule: pulumi.String(\"*/4 * * * *\"),\n\t\t\tDescription: pulumi.String(\"test app engine job\"),\n\t\t\tTimeZone: pulumi.String(\"Europe/London\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tRetryConfig: \u0026cloudscheduler.JobRetryConfigArgs{\n\t\t\t\tMinBackoffDuration: pulumi.String(\"1s\"),\n\t\t\t\tMaxRetryDuration: pulumi.String(\"10s\"),\n\t\t\t\tMaxDoublings: pulumi.Int(2),\n\t\t\t\tRetryCount: pulumi.Int(3),\n\t\t\t},\n\t\t\tAppEngineHttpTarget: \u0026cloudscheduler.JobAppEngineHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tAppEngineRouting: \u0026cloudscheduler.JobAppEngineHttpTargetAppEngineRoutingArgs{\n\t\t\t\t\tService: pulumi.String(\"web\"),\n\t\t\t\t\tVersion: pulumi.String(\"prod\"),\n\t\t\t\t\tInstance: pulumi.String(\"my-instance-001\"),\n\t\t\t\t},\n\t\t\t\tRelativeUri: pulumi.String(\"/ping\"),\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.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobRetryConfigArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobAppEngineHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobAppEngineHttpTargetAppEngineRoutingArgs;\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 job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .schedule(\"*/4 * * * *\")\n .description(\"test app engine job\")\n .timeZone(\"Europe/London\")\n .attemptDeadline(\"320s\")\n .retryConfig(JobRetryConfigArgs.builder()\n .minBackoffDuration(\"1s\")\n .maxRetryDuration(\"10s\")\n .maxDoublings(2)\n .retryCount(3)\n .build())\n .appEngineHttpTarget(JobAppEngineHttpTargetArgs.builder()\n .httpMethod(\"POST\")\n .appEngineRouting(JobAppEngineHttpTargetAppEngineRoutingArgs.builder()\n .service(\"web\")\n .version(\"prod\")\n .instance(\"my-instance-001\")\n .build())\n .relativeUri(\"/ping\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n schedule: '*/4 * * * *'\n description: test app engine job\n timeZone: Europe/London\n attemptDeadline: 320s\n retryConfig:\n minBackoffDuration: 1s\n maxRetryDuration: 10s\n maxDoublings: 2\n retryCount: 3\n appEngineHttpTarget:\n httpMethod: POST\n appEngineRouting:\n service: web\n version: prod\n instance: my-instance-001\n relativeUri: /ping\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Oauth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test http job\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n httpTarget: {\n httpMethod: \"GET\",\n uri: \"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\",\n oauthToken: {\n serviceAccountEmail: _default.then(_default =\u003e _default.email),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test http job\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n http_target={\n \"http_method\": \"GET\",\n \"uri\": \"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\",\n \"oauth_token\": {\n \"service_account_email\": default.email,\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 @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test http job\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"GET\",\n Uri = \"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\",\n OauthToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOauthTokenArgs\n {\n ServiceAccountEmail = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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_default, err := compute.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\t\tUri: pulumi.String(\"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\"),\n\t\t\t\tOauthToken: \u0026cloudscheduler.JobHttpTargetOauthTokenArgs{\n\t\t\t\t\tServiceAccountEmail: pulumi.String(_default.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\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOauthTokenArgs;\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 default = ComputeFunctions.getDefaultServiceAccount();\n\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test http job\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"GET\")\n .uri(\"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\")\n .oauthToken(JobHttpTargetOauthTokenArgs.builder()\n .serviceAccountEmail(default_.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test http job\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n httpTarget:\n httpMethod: GET\n uri: https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\n oauthToken:\n serviceAccountEmail: ${default.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Oidc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test http job\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n httpTarget: {\n httpMethod: \"GET\",\n uri: \"https://example.com/ping\",\n oidcToken: {\n serviceAccountEmail: _default.then(_default =\u003e _default.email),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test http job\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n http_target={\n \"http_method\": \"GET\",\n \"uri\": \"https://example.com/ping\",\n \"oidc_token\": {\n \"service_account_email\": default.email,\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 @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test http job\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"GET\",\n Uri = \"https://example.com/ping\",\n OidcToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOidcTokenArgs\n {\n ServiceAccountEmail = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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_default, err := compute.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\t\tUri: pulumi.String(\"https://example.com/ping\"),\n\t\t\t\tOidcToken: \u0026cloudscheduler.JobHttpTargetOidcTokenArgs{\n\t\t\t\t\tServiceAccountEmail: pulumi.String(_default.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\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOidcTokenArgs;\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 default = ComputeFunctions.getDefaultServiceAccount();\n\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test http job\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"GET\")\n .uri(\"https://example.com/ping\")\n .oidcToken(JobHttpTargetOidcTokenArgs.builder()\n .serviceAccountEmail(default_.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test http job\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n httpTarget:\n httpMethod: GET\n uri: https://example.com/ping\n oidcToken:\n serviceAccountEmail: ${default.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJob can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/jobs/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Job can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default projects/{{project}}/locations/{{region}}/jobs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default {{name}}\n```\n\n", "properties": { "appEngineHttpTarget": { "$ref": "#/types/gcp:cloudscheduler/JobAppEngineHttpTarget:JobAppEngineHttpTarget", @@ -140238,7 +140238,7 @@ } }, "gcp:cloudtasks/queue:Queue": { - "description": "A named resource to which messages are sent by publishers.\n\n\n\n## Example Usage\n\n### Queue Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudtasks.Queue(\"default\", {\n name: \"cloud-tasks-queue-test\",\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudtasks.Queue(\"default\",\n name=\"cloud-tasks-queue-test\",\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 @default = new Gcp.CloudTasks.Queue(\"default\", new()\n {\n Name = \"cloud-tasks-queue-test\",\n Location = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudtasks\"\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 := cloudtasks.NewQueue(ctx, \"default\", \u0026cloudtasks.QueueArgs{\n\t\t\tName: pulumi.String(\"cloud-tasks-queue-test\"),\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.cloudtasks.Queue;\nimport com.pulumi.gcp.cloudtasks.QueueArgs;\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 Queue(\"default\", QueueArgs.builder()\n .name(\"cloud-tasks-queue-test\")\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudtasks:Queue\n properties:\n name: cloud-tasks-queue-test\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Tasks Queue Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst advancedConfiguration = new gcp.cloudtasks.Queue(\"advanced_configuration\", {\n name: \"instance-name\",\n location: \"us-central1\",\n appEngineRoutingOverride: {\n service: \"worker\",\n version: \"1.0\",\n instance: \"test\",\n },\n rateLimits: {\n maxConcurrentDispatches: 3,\n maxDispatchesPerSecond: 2,\n },\n retryConfig: {\n maxAttempts: 5,\n maxRetryDuration: \"4s\",\n maxBackoff: \"3s\",\n minBackoff: \"2s\",\n maxDoublings: 1,\n },\n stackdriverLoggingConfig: {\n samplingRatio: 0.9,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadvanced_configuration = gcp.cloudtasks.Queue(\"advanced_configuration\",\n name=\"instance-name\",\n location=\"us-central1\",\n app_engine_routing_override={\n \"service\": \"worker\",\n \"version\": \"1.0\",\n \"instance\": \"test\",\n },\n rate_limits={\n \"maxConcurrentDispatches\": 3,\n \"maxDispatchesPerSecond\": 2,\n },\n retry_config={\n \"maxAttempts\": 5,\n \"maxRetryDuration\": \"4s\",\n \"maxBackoff\": \"3s\",\n \"minBackoff\": \"2s\",\n \"maxDoublings\": 1,\n },\n stackdriver_logging_config={\n \"samplingRatio\": 0.9,\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 advancedConfiguration = new Gcp.CloudTasks.Queue(\"advanced_configuration\", new()\n {\n Name = \"instance-name\",\n Location = \"us-central1\",\n AppEngineRoutingOverride = new Gcp.CloudTasks.Inputs.QueueAppEngineRoutingOverrideArgs\n {\n Service = \"worker\",\n Version = \"1.0\",\n Instance = \"test\",\n },\n RateLimits = new Gcp.CloudTasks.Inputs.QueueRateLimitsArgs\n {\n MaxConcurrentDispatches = 3,\n MaxDispatchesPerSecond = 2,\n },\n RetryConfig = new Gcp.CloudTasks.Inputs.QueueRetryConfigArgs\n {\n MaxAttempts = 5,\n MaxRetryDuration = \"4s\",\n MaxBackoff = \"3s\",\n MinBackoff = \"2s\",\n MaxDoublings = 1,\n },\n StackdriverLoggingConfig = new Gcp.CloudTasks.Inputs.QueueStackdriverLoggingConfigArgs\n {\n SamplingRatio = 0.9,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudtasks\"\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 := cloudtasks.NewQueue(ctx, \"advanced_configuration\", \u0026cloudtasks.QueueArgs{\n\t\t\tName: pulumi.String(\"instance-name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAppEngineRoutingOverride: \u0026cloudtasks.QueueAppEngineRoutingOverrideArgs{\n\t\t\t\tService: pulumi.String(\"worker\"),\n\t\t\t\tVersion: pulumi.String(\"1.0\"),\n\t\t\t\tInstance: pulumi.String(\"test\"),\n\t\t\t},\n\t\t\tRateLimits: \u0026cloudtasks.QueueRateLimitsArgs{\n\t\t\t\tMaxConcurrentDispatches: pulumi.Int(3),\n\t\t\t\tMaxDispatchesPerSecond: pulumi.Float64(2),\n\t\t\t},\n\t\t\tRetryConfig: \u0026cloudtasks.QueueRetryConfigArgs{\n\t\t\t\tMaxAttempts: pulumi.Int(5),\n\t\t\t\tMaxRetryDuration: pulumi.String(\"4s\"),\n\t\t\t\tMaxBackoff: pulumi.String(\"3s\"),\n\t\t\t\tMinBackoff: pulumi.String(\"2s\"),\n\t\t\t\tMaxDoublings: pulumi.Int(1),\n\t\t\t},\n\t\t\tStackdriverLoggingConfig: \u0026cloudtasks.QueueStackdriverLoggingConfigArgs{\n\t\t\t\tSamplingRatio: pulumi.Float64(0.9),\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.cloudtasks.Queue;\nimport com.pulumi.gcp.cloudtasks.QueueArgs;\nimport com.pulumi.gcp.cloudtasks.inputs.QueueAppEngineRoutingOverrideArgs;\nimport com.pulumi.gcp.cloudtasks.inputs.QueueRateLimitsArgs;\nimport com.pulumi.gcp.cloudtasks.inputs.QueueRetryConfigArgs;\nimport com.pulumi.gcp.cloudtasks.inputs.QueueStackdriverLoggingConfigArgs;\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 advancedConfiguration = new Queue(\"advancedConfiguration\", QueueArgs.builder()\n .name(\"instance-name\")\n .location(\"us-central1\")\n .appEngineRoutingOverride(QueueAppEngineRoutingOverrideArgs.builder()\n .service(\"worker\")\n .version(\"1.0\")\n .instance(\"test\")\n .build())\n .rateLimits(QueueRateLimitsArgs.builder()\n .maxConcurrentDispatches(3)\n .maxDispatchesPerSecond(2)\n .build())\n .retryConfig(QueueRetryConfigArgs.builder()\n .maxAttempts(5)\n .maxRetryDuration(\"4s\")\n .maxBackoff(\"3s\")\n .minBackoff(\"2s\")\n .maxDoublings(1)\n .build())\n .stackdriverLoggingConfig(QueueStackdriverLoggingConfigArgs.builder()\n .samplingRatio(0.9)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n advancedConfiguration:\n type: gcp:cloudtasks:Queue\n name: advanced_configuration\n properties:\n name: instance-name\n location: us-central1\n appEngineRoutingOverride:\n service: worker\n version: '1.0'\n instance: test\n rateLimits:\n maxConcurrentDispatches: 3\n maxDispatchesPerSecond: 2\n retryConfig:\n maxAttempts: 5\n maxRetryDuration: 4s\n maxBackoff: 3s\n minBackoff: 2s\n maxDoublings: 1\n stackdriverLoggingConfig:\n samplingRatio: 0.9\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nQueue can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/queues/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Queue can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudtasks/queue:Queue default projects/{{project}}/locations/{{location}}/queues/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudtasks/queue:Queue default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudtasks/queue:Queue default {{location}}/{{name}}\n```\n\n", + "description": "A named resource to which messages are sent by publishers.\n\n\n\n## Example Usage\n\n### Queue Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudtasks.Queue(\"default\", {\n name: \"cloud-tasks-queue-test\",\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudtasks.Queue(\"default\",\n name=\"cloud-tasks-queue-test\",\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 @default = new Gcp.CloudTasks.Queue(\"default\", new()\n {\n Name = \"cloud-tasks-queue-test\",\n Location = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudtasks\"\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 := cloudtasks.NewQueue(ctx, \"default\", \u0026cloudtasks.QueueArgs{\n\t\t\tName: pulumi.String(\"cloud-tasks-queue-test\"),\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.cloudtasks.Queue;\nimport com.pulumi.gcp.cloudtasks.QueueArgs;\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 Queue(\"default\", QueueArgs.builder()\n .name(\"cloud-tasks-queue-test\")\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudtasks:Queue\n properties:\n name: cloud-tasks-queue-test\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Tasks Queue Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst advancedConfiguration = new gcp.cloudtasks.Queue(\"advanced_configuration\", {\n name: \"instance-name\",\n location: \"us-central1\",\n appEngineRoutingOverride: {\n service: \"worker\",\n version: \"1.0\",\n instance: \"test\",\n },\n rateLimits: {\n maxConcurrentDispatches: 3,\n maxDispatchesPerSecond: 2,\n },\n retryConfig: {\n maxAttempts: 5,\n maxRetryDuration: \"4s\",\n maxBackoff: \"3s\",\n minBackoff: \"2s\",\n maxDoublings: 1,\n },\n stackdriverLoggingConfig: {\n samplingRatio: 0.9,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadvanced_configuration = gcp.cloudtasks.Queue(\"advanced_configuration\",\n name=\"instance-name\",\n location=\"us-central1\",\n app_engine_routing_override={\n \"service\": \"worker\",\n \"version\": \"1.0\",\n \"instance\": \"test\",\n },\n rate_limits={\n \"max_concurrent_dispatches\": 3,\n \"max_dispatches_per_second\": 2,\n },\n retry_config={\n \"max_attempts\": 5,\n \"max_retry_duration\": \"4s\",\n \"max_backoff\": \"3s\",\n \"min_backoff\": \"2s\",\n \"max_doublings\": 1,\n },\n stackdriver_logging_config={\n \"sampling_ratio\": 0.9,\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 advancedConfiguration = new Gcp.CloudTasks.Queue(\"advanced_configuration\", new()\n {\n Name = \"instance-name\",\n Location = \"us-central1\",\n AppEngineRoutingOverride = new Gcp.CloudTasks.Inputs.QueueAppEngineRoutingOverrideArgs\n {\n Service = \"worker\",\n Version = \"1.0\",\n Instance = \"test\",\n },\n RateLimits = new Gcp.CloudTasks.Inputs.QueueRateLimitsArgs\n {\n MaxConcurrentDispatches = 3,\n MaxDispatchesPerSecond = 2,\n },\n RetryConfig = new Gcp.CloudTasks.Inputs.QueueRetryConfigArgs\n {\n MaxAttempts = 5,\n MaxRetryDuration = \"4s\",\n MaxBackoff = \"3s\",\n MinBackoff = \"2s\",\n MaxDoublings = 1,\n },\n StackdriverLoggingConfig = new Gcp.CloudTasks.Inputs.QueueStackdriverLoggingConfigArgs\n {\n SamplingRatio = 0.9,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudtasks\"\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 := cloudtasks.NewQueue(ctx, \"advanced_configuration\", \u0026cloudtasks.QueueArgs{\n\t\t\tName: pulumi.String(\"instance-name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAppEngineRoutingOverride: \u0026cloudtasks.QueueAppEngineRoutingOverrideArgs{\n\t\t\t\tService: pulumi.String(\"worker\"),\n\t\t\t\tVersion: pulumi.String(\"1.0\"),\n\t\t\t\tInstance: pulumi.String(\"test\"),\n\t\t\t},\n\t\t\tRateLimits: \u0026cloudtasks.QueueRateLimitsArgs{\n\t\t\t\tMaxConcurrentDispatches: pulumi.Int(3),\n\t\t\t\tMaxDispatchesPerSecond: pulumi.Float64(2),\n\t\t\t},\n\t\t\tRetryConfig: \u0026cloudtasks.QueueRetryConfigArgs{\n\t\t\t\tMaxAttempts: pulumi.Int(5),\n\t\t\t\tMaxRetryDuration: pulumi.String(\"4s\"),\n\t\t\t\tMaxBackoff: pulumi.String(\"3s\"),\n\t\t\t\tMinBackoff: pulumi.String(\"2s\"),\n\t\t\t\tMaxDoublings: pulumi.Int(1),\n\t\t\t},\n\t\t\tStackdriverLoggingConfig: \u0026cloudtasks.QueueStackdriverLoggingConfigArgs{\n\t\t\t\tSamplingRatio: pulumi.Float64(0.9),\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.cloudtasks.Queue;\nimport com.pulumi.gcp.cloudtasks.QueueArgs;\nimport com.pulumi.gcp.cloudtasks.inputs.QueueAppEngineRoutingOverrideArgs;\nimport com.pulumi.gcp.cloudtasks.inputs.QueueRateLimitsArgs;\nimport com.pulumi.gcp.cloudtasks.inputs.QueueRetryConfigArgs;\nimport com.pulumi.gcp.cloudtasks.inputs.QueueStackdriverLoggingConfigArgs;\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 advancedConfiguration = new Queue(\"advancedConfiguration\", QueueArgs.builder()\n .name(\"instance-name\")\n .location(\"us-central1\")\n .appEngineRoutingOverride(QueueAppEngineRoutingOverrideArgs.builder()\n .service(\"worker\")\n .version(\"1.0\")\n .instance(\"test\")\n .build())\n .rateLimits(QueueRateLimitsArgs.builder()\n .maxConcurrentDispatches(3)\n .maxDispatchesPerSecond(2)\n .build())\n .retryConfig(QueueRetryConfigArgs.builder()\n .maxAttempts(5)\n .maxRetryDuration(\"4s\")\n .maxBackoff(\"3s\")\n .minBackoff(\"2s\")\n .maxDoublings(1)\n .build())\n .stackdriverLoggingConfig(QueueStackdriverLoggingConfigArgs.builder()\n .samplingRatio(0.9)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n advancedConfiguration:\n type: gcp:cloudtasks:Queue\n name: advanced_configuration\n properties:\n name: instance-name\n location: us-central1\n appEngineRoutingOverride:\n service: worker\n version: '1.0'\n instance: test\n rateLimits:\n maxConcurrentDispatches: 3\n maxDispatchesPerSecond: 2\n retryConfig:\n maxAttempts: 5\n maxRetryDuration: 4s\n maxBackoff: 3s\n minBackoff: 2s\n maxDoublings: 1\n stackdriverLoggingConfig:\n samplingRatio: 0.9\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nQueue can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/queues/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Queue can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudtasks/queue:Queue default projects/{{project}}/locations/{{location}}/queues/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudtasks/queue:Queue default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudtasks/queue:Queue default {{location}}/{{name}}\n```\n\n", "properties": { "appEngineRoutingOverride": { "$ref": "#/types/gcp:cloudtasks/QueueAppEngineRoutingOverride:QueueAppEngineRoutingOverride", @@ -140810,7 +140810,7 @@ } }, "gcp:composer/userWorkloadsConfigMap:UserWorkloadsConfigMap": { - "description": "## Example Usage\n\n### Composer User Workloads Config Map Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst environment = new gcp.composer.Environment(\"environment\", {\n name: \"test-environment\",\n region: \"us-central1\",\n config: {\n softwareConfig: {\n imageVersion: \"composer-3-airflow-2\",\n },\n },\n});\nconst configMap = new gcp.composer.UserWorkloadsConfigMap(\"config_map\", {\n name: \"test-config-map\",\n region: \"us-central1\",\n environment: environment.name,\n data: {\n api_host: \"apihost:443\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nenvironment = gcp.composer.Environment(\"environment\",\n name=\"test-environment\",\n region=\"us-central1\",\n config={\n \"softwareConfig\": {\n \"imageVersion\": \"composer-3-airflow-2\",\n },\n })\nconfig_map = gcp.composer.UserWorkloadsConfigMap(\"config_map\",\n name=\"test-config-map\",\n region=\"us-central1\",\n environment=environment.name,\n data={\n \"api_host\": \"apihost:443\",\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 environment = new Gcp.Composer.Environment(\"environment\", new()\n {\n Name = \"test-environment\",\n Region = \"us-central1\",\n Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs\n {\n SoftwareConfig = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigArgs\n {\n ImageVersion = \"composer-3-airflow-2\",\n },\n },\n });\n\n var configMap = new Gcp.Composer.UserWorkloadsConfigMap(\"config_map\", new()\n {\n Name = \"test-config-map\",\n Region = \"us-central1\",\n Environment = environment.Name,\n Data = \n {\n { \"api_host\", \"apihost:443\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/composer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tenvironment, err := composer.NewEnvironment(ctx, \"environment\", \u0026composer.EnvironmentArgs{\n\t\t\tName: pulumi.String(\"test-environment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026composer.EnvironmentConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026composer.EnvironmentConfigSoftwareConfigArgs{\n\t\t\t\t\tImageVersion: pulumi.String(\"composer-3-airflow-2\"),\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 = composer.NewUserWorkloadsConfigMap(ctx, \"config_map\", \u0026composer.UserWorkloadsConfigMapArgs{\n\t\t\tName: pulumi.String(\"test-config-map\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tEnvironment: environment.Name,\n\t\t\tData: pulumi.StringMap{\n\t\t\t\t\"api_host\": pulumi.String(\"apihost:443\"),\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.composer.Environment;\nimport com.pulumi.gcp.composer.EnvironmentArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.composer.UserWorkloadsConfigMap;\nimport com.pulumi.gcp.composer.UserWorkloadsConfigMapArgs;\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 environment = new Environment(\"environment\", EnvironmentArgs.builder()\n .name(\"test-environment\")\n .region(\"us-central1\")\n .config(EnvironmentConfigArgs.builder()\n .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()\n .imageVersion(\"composer-3-airflow-2\")\n .build())\n .build())\n .build());\n\n var configMap = new UserWorkloadsConfigMap(\"configMap\", UserWorkloadsConfigMapArgs.builder()\n .name(\"test-config-map\")\n .region(\"us-central1\")\n .environment(environment.name())\n .data(Map.of(\"api_host\", \"apihost:443\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n environment:\n type: gcp:composer:Environment\n properties:\n name: test-environment\n region: us-central1\n config:\n softwareConfig:\n imageVersion: composer-3-airflow-2\n configMap:\n type: gcp:composer:UserWorkloadsConfigMap\n name: config_map\n properties:\n name: test-config-map\n region: us-central1\n environment: ${environment.name}\n data:\n api_host: apihost:443\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUserWorkloadsConfigMap can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/environments/{{environment}}/userWorkloadsConfigMaps/{{name}}`\n\n* `{{project}}/{{region}}/{{environment}}/{{name}}`\n\n* `{{region}}/{{environment}}/{{name}}`\n\n* `{{environment}}/{{name}}`\n\nWhen using the `pulumi import` command, UserWorkloadsConfigMap can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:composer/userWorkloadsConfigMap:UserWorkloadsConfigMap default projects/{{project}}/locations/{{region}}/environments/{{environment}}/userWorkloadsConfigMaps/{{name}}\n```\n\n```sh\n$ pulumi import gcp:composer/userWorkloadsConfigMap:UserWorkloadsConfigMap default {{project}}/{{region}}/{{environment}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:composer/userWorkloadsConfigMap:UserWorkloadsConfigMap default {{region}}/{{environment}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:composer/userWorkloadsConfigMap:UserWorkloadsConfigMap default {{environment}}/{{name}}\n```\n\n", + "description": "## Example Usage\n\n### Composer User Workloads Config Map Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst environment = new gcp.composer.Environment(\"environment\", {\n name: \"test-environment\",\n region: \"us-central1\",\n config: {\n softwareConfig: {\n imageVersion: \"composer-3-airflow-2\",\n },\n },\n});\nconst configMap = new gcp.composer.UserWorkloadsConfigMap(\"config_map\", {\n name: \"test-config-map\",\n region: \"us-central1\",\n environment: environment.name,\n data: {\n api_host: \"apihost:443\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nenvironment = gcp.composer.Environment(\"environment\",\n name=\"test-environment\",\n region=\"us-central1\",\n config={\n \"software_config\": {\n \"image_version\": \"composer-3-airflow-2\",\n },\n })\nconfig_map = gcp.composer.UserWorkloadsConfigMap(\"config_map\",\n name=\"test-config-map\",\n region=\"us-central1\",\n environment=environment.name,\n data={\n \"api_host\": \"apihost:443\",\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 environment = new Gcp.Composer.Environment(\"environment\", new()\n {\n Name = \"test-environment\",\n Region = \"us-central1\",\n Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs\n {\n SoftwareConfig = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigArgs\n {\n ImageVersion = \"composer-3-airflow-2\",\n },\n },\n });\n\n var configMap = new Gcp.Composer.UserWorkloadsConfigMap(\"config_map\", new()\n {\n Name = \"test-config-map\",\n Region = \"us-central1\",\n Environment = environment.Name,\n Data = \n {\n { \"api_host\", \"apihost:443\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/composer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tenvironment, err := composer.NewEnvironment(ctx, \"environment\", \u0026composer.EnvironmentArgs{\n\t\t\tName: pulumi.String(\"test-environment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026composer.EnvironmentConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026composer.EnvironmentConfigSoftwareConfigArgs{\n\t\t\t\t\tImageVersion: pulumi.String(\"composer-3-airflow-2\"),\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 = composer.NewUserWorkloadsConfigMap(ctx, \"config_map\", \u0026composer.UserWorkloadsConfigMapArgs{\n\t\t\tName: pulumi.String(\"test-config-map\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tEnvironment: environment.Name,\n\t\t\tData: pulumi.StringMap{\n\t\t\t\t\"api_host\": pulumi.String(\"apihost:443\"),\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.composer.Environment;\nimport com.pulumi.gcp.composer.EnvironmentArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.composer.UserWorkloadsConfigMap;\nimport com.pulumi.gcp.composer.UserWorkloadsConfigMapArgs;\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 environment = new Environment(\"environment\", EnvironmentArgs.builder()\n .name(\"test-environment\")\n .region(\"us-central1\")\n .config(EnvironmentConfigArgs.builder()\n .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()\n .imageVersion(\"composer-3-airflow-2\")\n .build())\n .build())\n .build());\n\n var configMap = new UserWorkloadsConfigMap(\"configMap\", UserWorkloadsConfigMapArgs.builder()\n .name(\"test-config-map\")\n .region(\"us-central1\")\n .environment(environment.name())\n .data(Map.of(\"api_host\", \"apihost:443\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n environment:\n type: gcp:composer:Environment\n properties:\n name: test-environment\n region: us-central1\n config:\n softwareConfig:\n imageVersion: composer-3-airflow-2\n configMap:\n type: gcp:composer:UserWorkloadsConfigMap\n name: config_map\n properties:\n name: test-config-map\n region: us-central1\n environment: ${environment.name}\n data:\n api_host: apihost:443\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUserWorkloadsConfigMap can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/environments/{{environment}}/userWorkloadsConfigMaps/{{name}}`\n\n* `{{project}}/{{region}}/{{environment}}/{{name}}`\n\n* `{{region}}/{{environment}}/{{name}}`\n\n* `{{environment}}/{{name}}`\n\nWhen using the `pulumi import` command, UserWorkloadsConfigMap can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:composer/userWorkloadsConfigMap:UserWorkloadsConfigMap default projects/{{project}}/locations/{{region}}/environments/{{environment}}/userWorkloadsConfigMaps/{{name}}\n```\n\n```sh\n$ pulumi import gcp:composer/userWorkloadsConfigMap:UserWorkloadsConfigMap default {{project}}/{{region}}/{{environment}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:composer/userWorkloadsConfigMap:UserWorkloadsConfigMap default {{region}}/{{environment}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:composer/userWorkloadsConfigMap:UserWorkloadsConfigMap default {{environment}}/{{name}}\n```\n\n", "properties": { "data": { "type": "object", @@ -140909,7 +140909,7 @@ } }, "gcp:composer/userWorkloadsSecret:UserWorkloadsSecret": { - "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new gcp.composer.Environment(\"example\", {\n name: \"example-environment\",\n project: \"example-project\",\n region: \"us-central1\",\n config: {\n softwareConfig: {\n imageVersion: \"example-image-version\",\n },\n },\n});\nconst exampleUserWorkloadsSecret = new gcp.composer.UserWorkloadsSecret(\"example\", {\n name: \"example-secret\",\n project: \"example-project\",\n region: \"us-central1\",\n environment: example.name,\n data: {\n email: std.base64encode({\n input: \"example-email\",\n }).then(invoke =\u003e invoke.result),\n password: std.base64encode({\n input: \"example-password\",\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nexample = gcp.composer.Environment(\"example\",\n name=\"example-environment\",\n project=\"example-project\",\n region=\"us-central1\",\n config={\n \"softwareConfig\": {\n \"imageVersion\": \"example-image-version\",\n },\n })\nexample_user_workloads_secret = gcp.composer.UserWorkloadsSecret(\"example\",\n name=\"example-secret\",\n project=\"example-project\",\n region=\"us-central1\",\n environment=example.name,\n data={\n \"email\": std.base64encode(input=\"example-email\").result,\n \"password\": std.base64encode(input=\"example-password\").result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.Composer.Environment(\"example\", new()\n {\n Name = \"example-environment\",\n Project = \"example-project\",\n Region = \"us-central1\",\n Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs\n {\n SoftwareConfig = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigArgs\n {\n ImageVersion = \"example-image-version\",\n },\n },\n });\n\n var exampleUserWorkloadsSecret = new Gcp.Composer.UserWorkloadsSecret(\"example\", new()\n {\n Name = \"example-secret\",\n Project = \"example-project\",\n Region = \"us-central1\",\n Environment = example.Name,\n Data = \n {\n { \"email\", Std.Base64encode.Invoke(new()\n {\n Input = \"example-email\",\n }).Apply(invoke =\u003e invoke.Result) },\n { \"password\", Std.Base64encode.Invoke(new()\n {\n Input = \"example-password\",\n }).Apply(invoke =\u003e invoke.Result) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/composer\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := composer.NewEnvironment(ctx, \"example\", \u0026composer.EnvironmentArgs{\n\t\t\tName: pulumi.String(\"example-environment\"),\n\t\t\tProject: pulumi.String(\"example-project\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026composer.EnvironmentConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026composer.EnvironmentConfigSoftwareConfigArgs{\n\t\t\t\t\tImageVersion: pulumi.String(\"example-image-version\"),\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\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"example-email\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode1, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"example-password\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = composer.NewUserWorkloadsSecret(ctx, \"example\", \u0026composer.UserWorkloadsSecretArgs{\n\t\t\tName: pulumi.String(\"example-secret\"),\n\t\t\tProject: pulumi.String(\"example-project\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tEnvironment: example.Name,\n\t\t\tData: pulumi.Map{\n\t\t\t\t\"email\": invokeBase64encode.Result,\n\t\t\t\t\"password\": invokeBase64encode1.Result,\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.composer.Environment;\nimport com.pulumi.gcp.composer.EnvironmentArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.composer.UserWorkloadsSecret;\nimport com.pulumi.gcp.composer.UserWorkloadsSecretArgs;\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 Environment(\"example\", EnvironmentArgs.builder()\n .name(\"example-environment\")\n .project(\"example-project\")\n .region(\"us-central1\")\n .config(EnvironmentConfigArgs.builder()\n .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()\n .imageVersion(\"example-image-version\")\n .build())\n .build())\n .build());\n\n var exampleUserWorkloadsSecret = new UserWorkloadsSecret(\"exampleUserWorkloadsSecret\", UserWorkloadsSecretArgs.builder()\n .name(\"example-secret\")\n .project(\"example-project\")\n .region(\"us-central1\")\n .environment(example.name())\n .data(Map.ofEntries(\n Map.entry(\"email\", StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"example-email\")\n .build()).result()),\n Map.entry(\"password\", StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"example-password\")\n .build()).result())\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:composer:Environment\n properties:\n name: example-environment\n project: example-project\n region: us-central1\n config:\n softwareConfig:\n imageVersion: example-image-version\n exampleUserWorkloadsSecret:\n type: gcp:composer:UserWorkloadsSecret\n name: example\n properties:\n name: example-secret\n project: example-project\n region: us-central1\n environment: ${example.name}\n data:\n email:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: example-email\n Return: result\n password:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: example-password\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecret can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/environments/{{environment}}/userWorkloadsSecrets/{{name}}`\n\n* `{{project}}/{{region}}/{{environment}}/{{name}}`\n\n* `{{environment}}/{{name}}`\n\nWhen using the `pulumi import` command, Environment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:composer/userWorkloadsSecret:UserWorkloadsSecret example projects/{{project}}/locations/{{region}}/environments/{{environment}}/userWorkloadsSecrets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:composer/userWorkloadsSecret:UserWorkloadsSecret example {{project}}/{{region}}/{{environment}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:composer/userWorkloadsSecret:UserWorkloadsSecret example {{environment}}/{{name}}\n```\n\n", + "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new gcp.composer.Environment(\"example\", {\n name: \"example-environment\",\n project: \"example-project\",\n region: \"us-central1\",\n config: {\n softwareConfig: {\n imageVersion: \"example-image-version\",\n },\n },\n});\nconst exampleUserWorkloadsSecret = new gcp.composer.UserWorkloadsSecret(\"example\", {\n name: \"example-secret\",\n project: \"example-project\",\n region: \"us-central1\",\n environment: example.name,\n data: {\n email: std.base64encode({\n input: \"example-email\",\n }).then(invoke =\u003e invoke.result),\n password: std.base64encode({\n input: \"example-password\",\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nexample = gcp.composer.Environment(\"example\",\n name=\"example-environment\",\n project=\"example-project\",\n region=\"us-central1\",\n config={\n \"software_config\": {\n \"image_version\": \"example-image-version\",\n },\n })\nexample_user_workloads_secret = gcp.composer.UserWorkloadsSecret(\"example\",\n name=\"example-secret\",\n project=\"example-project\",\n region=\"us-central1\",\n environment=example.name,\n data={\n \"email\": std.base64encode(input=\"example-email\").result,\n \"password\": std.base64encode(input=\"example-password\").result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.Composer.Environment(\"example\", new()\n {\n Name = \"example-environment\",\n Project = \"example-project\",\n Region = \"us-central1\",\n Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs\n {\n SoftwareConfig = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigArgs\n {\n ImageVersion = \"example-image-version\",\n },\n },\n });\n\n var exampleUserWorkloadsSecret = new Gcp.Composer.UserWorkloadsSecret(\"example\", new()\n {\n Name = \"example-secret\",\n Project = \"example-project\",\n Region = \"us-central1\",\n Environment = example.Name,\n Data = \n {\n { \"email\", Std.Base64encode.Invoke(new()\n {\n Input = \"example-email\",\n }).Apply(invoke =\u003e invoke.Result) },\n { \"password\", Std.Base64encode.Invoke(new()\n {\n Input = \"example-password\",\n }).Apply(invoke =\u003e invoke.Result) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/composer\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := composer.NewEnvironment(ctx, \"example\", \u0026composer.EnvironmentArgs{\n\t\t\tName: pulumi.String(\"example-environment\"),\n\t\t\tProject: pulumi.String(\"example-project\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026composer.EnvironmentConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026composer.EnvironmentConfigSoftwareConfigArgs{\n\t\t\t\t\tImageVersion: pulumi.String(\"example-image-version\"),\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\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"example-email\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode1, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"example-password\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = composer.NewUserWorkloadsSecret(ctx, \"example\", \u0026composer.UserWorkloadsSecretArgs{\n\t\t\tName: pulumi.String(\"example-secret\"),\n\t\t\tProject: pulumi.String(\"example-project\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tEnvironment: example.Name,\n\t\t\tData: pulumi.Map{\n\t\t\t\t\"email\": invokeBase64encode.Result,\n\t\t\t\t\"password\": invokeBase64encode1.Result,\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.composer.Environment;\nimport com.pulumi.gcp.composer.EnvironmentArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.composer.UserWorkloadsSecret;\nimport com.pulumi.gcp.composer.UserWorkloadsSecretArgs;\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 Environment(\"example\", EnvironmentArgs.builder()\n .name(\"example-environment\")\n .project(\"example-project\")\n .region(\"us-central1\")\n .config(EnvironmentConfigArgs.builder()\n .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()\n .imageVersion(\"example-image-version\")\n .build())\n .build())\n .build());\n\n var exampleUserWorkloadsSecret = new UserWorkloadsSecret(\"exampleUserWorkloadsSecret\", UserWorkloadsSecretArgs.builder()\n .name(\"example-secret\")\n .project(\"example-project\")\n .region(\"us-central1\")\n .environment(example.name())\n .data(Map.ofEntries(\n Map.entry(\"email\", StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"example-email\")\n .build()).result()),\n Map.entry(\"password\", StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"example-password\")\n .build()).result())\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:composer:Environment\n properties:\n name: example-environment\n project: example-project\n region: us-central1\n config:\n softwareConfig:\n imageVersion: example-image-version\n exampleUserWorkloadsSecret:\n type: gcp:composer:UserWorkloadsSecret\n name: example\n properties:\n name: example-secret\n project: example-project\n region: us-central1\n environment: ${example.name}\n data:\n email:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: example-email\n Return: result\n password:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: example-password\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecret can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/environments/{{environment}}/userWorkloadsSecrets/{{name}}`\n\n* `{{project}}/{{region}}/{{environment}}/{{name}}`\n\n* `{{environment}}/{{name}}`\n\nWhen using the `pulumi import` command, Environment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:composer/userWorkloadsSecret:UserWorkloadsSecret example projects/{{project}}/locations/{{region}}/environments/{{environment}}/userWorkloadsSecrets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:composer/userWorkloadsSecret:UserWorkloadsSecret example {{project}}/{{region}}/{{environment}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:composer/userWorkloadsSecret:UserWorkloadsSecret example {{environment}}/{{name}}\n```\n\n", "properties": { "data": { "type": "object", @@ -141011,7 +141011,7 @@ } }, "gcp:compute/address:Address": { - "description": "Represents an Address resource.\n\nEach virtual machine instance has an ephemeral internal IP address and,\noptionally, an external IP address. To communicate between instances on\nthe same network, you can use an instance's internal IP address. To\ncommunicate with the Internet and instances outside of the same network,\nyou must specify the instance's external IP address.\n\nInternal IP addresses are ephemeral and only belong to an instance for\nthe lifetime of the instance; if the instance is deleted and recreated,\nthe instance is assigned a new internal IP address, either by Compute\nEngine or by you. External IP addresses can be either ephemeral or\nstatic.\n\n\nTo get more information about Address, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/beta/addresses)\n* How-to Guides\n * [Reserving a Static External IP Address](https://cloud.google.com/compute/docs/instances-and-network)\n * [Reserving a Static Internal IP Address](https://cloud.google.com/compute/docs/ip-addresses/reserve-static-internal-ip-address)\n\n## Example Usage\n\n### Address Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ipAddress = new gcp.compute.Address(\"ip_address\", {name: \"my-address\"});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nip_address = gcp.compute.Address(\"ip_address\", name=\"my-address\")\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 ipAddress = new Gcp.Compute.Address(\"ip_address\", new()\n {\n Name = \"my-address\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewAddress(ctx, \"ip_address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-address\"),\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 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 ipAddress = new Address(\"ipAddress\", AddressArgs.builder()\n .name(\"my-address\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ipAddress:\n type: gcp:compute:Address\n name: ip_address\n properties:\n name: my-address\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Address With Subnetwork\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"my-network\"});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"my-subnet\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst internalWithSubnetAndAddress = new gcp.compute.Address(\"internal_with_subnet_and_address\", {\n name: \"my-internal-address\",\n subnetwork: defaultSubnetwork.id,\n addressType: \"INTERNAL\",\n address: \"10.0.42.42\",\n region: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"my-network\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"my-subnet\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=default.id)\ninternal_with_subnet_and_address = gcp.compute.Address(\"internal_with_subnet_and_address\",\n name=\"my-internal-address\",\n subnetwork=default_subnetwork.id,\n address_type=\"INTERNAL\",\n address=\"10.0.42.42\",\n region=\"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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"my-subnet\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var internalWithSubnetAndAddress = new Gcp.Compute.Address(\"internal_with_subnet_and_address\", new()\n {\n Name = \"my-internal-address\",\n Subnetwork = defaultSubnetwork.Id,\n AddressType = \"INTERNAL\",\n IPAddress = \"10.0.42.42\",\n Region = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewAddress(ctx, \"internal_with_subnet_and_address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-internal-address\"),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tAddress: pulumi.String(\"10.0.42.42\"),\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\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.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"my-network\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var internalWithSubnetAndAddress = new Address(\"internalWithSubnetAndAddress\", AddressArgs.builder()\n .name(\"my-internal-address\")\n .subnetwork(defaultSubnetwork.id())\n .addressType(\"INTERNAL\")\n .address(\"10.0.42.42\")\n .region(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: my-subnet\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${default.id}\n internalWithSubnetAndAddress:\n type: gcp:compute:Address\n name: internal_with_subnet_and_address\n properties:\n name: my-internal-address\n subnetwork: ${defaultSubnetwork.id}\n addressType: INTERNAL\n address: 10.0.42.42\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Address With Gce Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst internalWithGceEndpoint = new gcp.compute.Address(\"internal_with_gce_endpoint\", {\n name: \"my-internal-address-\",\n addressType: \"INTERNAL\",\n purpose: \"GCE_ENDPOINT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninternal_with_gce_endpoint = gcp.compute.Address(\"internal_with_gce_endpoint\",\n name=\"my-internal-address-\",\n address_type=\"INTERNAL\",\n purpose=\"GCE_ENDPOINT\")\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 internalWithGceEndpoint = new Gcp.Compute.Address(\"internal_with_gce_endpoint\", new()\n {\n Name = \"my-internal-address-\",\n AddressType = \"INTERNAL\",\n Purpose = \"GCE_ENDPOINT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewAddress(ctx, \"internal_with_gce_endpoint\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-internal-address-\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"GCE_ENDPOINT\"),\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 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 internalWithGceEndpoint = new Address(\"internalWithGceEndpoint\", AddressArgs.builder()\n .name(\"my-internal-address-\")\n .addressType(\"INTERNAL\")\n .purpose(\"GCE_ENDPOINT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n internalWithGceEndpoint:\n type: gcp:compute:Address\n name: internal_with_gce_endpoint\n properties:\n name: my-internal-address-\n addressType: INTERNAL\n purpose: GCE_ENDPOINT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Instance With Ip\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst static = new gcp.compute.Address(\"static\", {name: \"ipv4-address\"});\nconst debianImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst instanceWithIp = new gcp.compute.Instance(\"instance_with_ip\", {\n name: \"vm-instance\",\n machineType: \"f1-micro\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: debianImage.then(debianImage =\u003e debianImage.selfLink),\n },\n },\n networkInterfaces: [{\n network: \"default\",\n accessConfigs: [{\n natIp: static.address,\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nstatic = gcp.compute.Address(\"static\", name=\"ipv4-address\")\ndebian_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ninstance_with_ip = gcp.compute.Instance(\"instance_with_ip\",\n name=\"vm-instance\",\n machine_type=\"f1-micro\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initializeParams\": {\n \"image\": debian_image.self_link,\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n \"accessConfigs\": [{\n \"natIp\": static.address,\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 @static = new Gcp.Compute.Address(\"static\", new()\n {\n Name = \"ipv4-address\",\n });\n\n var debianImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var instanceWithIp = new Gcp.Compute.Instance(\"instance_with_ip\", new()\n {\n Name = \"vm-instance\",\n MachineType = \"f1-micro\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = debianImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n AccessConfigs = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceAccessConfigArgs\n {\n NatIp = @static.IPAddress,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tstatic, err := compute.NewAddress(ctx, \"static\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"ipv4-address\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdebianImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"instance_with_ip\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"vm-instance\"),\n\t\t\tMachineType: pulumi.String(\"f1-micro\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(debianImage.SelfLink),\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\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{\n\t\t\t\t\t\t\tNatIp: static.Address,\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.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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 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 static_ = new Address(\"static\", AddressArgs.builder()\n .name(\"ipv4-address\")\n .build());\n\n final var debianImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var instanceWithIp = new Instance(\"instanceWithIp\", InstanceArgs.builder()\n .name(\"vm-instance\")\n .machineType(\"f1-micro\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(debianImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .accessConfigs(InstanceNetworkInterfaceAccessConfigArgs.builder()\n .natIp(static_.address())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n static:\n type: gcp:compute:Address\n properties:\n name: ipv4-address\n instanceWithIp:\n type: gcp:compute:Instance\n name: instance_with_ip\n properties:\n name: vm-instance\n machineType: f1-micro\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: ${debianImage.selfLink}\n networkInterfaces:\n - network: default\n accessConfigs:\n - natIp: ${static.address}\nvariables:\n debianImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Compute Address Ipsec Interconnect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"test-network\",\n autoCreateSubnetworks: false,\n});\nconst ipsec_interconnect_address = new gcp.compute.Address(\"ipsec-interconnect-address\", {\n name: \"test-address\",\n addressType: \"INTERNAL\",\n purpose: \"IPSEC_INTERCONNECT\",\n address: \"192.168.1.0\",\n prefixLength: 29,\n network: network.selfLink,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"test-network\",\n auto_create_subnetworks=False)\nipsec_interconnect_address = gcp.compute.Address(\"ipsec-interconnect-address\",\n name=\"test-address\",\n address_type=\"INTERNAL\",\n purpose=\"IPSEC_INTERCONNECT\",\n address=\"192.168.1.0\",\n prefix_length=29,\n network=network.self_link)\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 = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var ipsec_interconnect_address = new Gcp.Compute.Address(\"ipsec-interconnect-address\", new()\n {\n Name = \"test-address\",\n AddressType = \"INTERNAL\",\n Purpose = \"IPSEC_INTERCONNECT\",\n IPAddress = \"192.168.1.0\",\n PrefixLength = 29,\n Network = network.SelfLink,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"test-network\"),\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.NewAddress(ctx, \"ipsec-interconnect-address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"test-address\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"IPSEC_INTERCONNECT\"),\n\t\t\tAddress: pulumi.String(\"192.168.1.0\"),\n\t\t\tPrefixLength: pulumi.Int(29),\n\t\t\tNetwork: network.SelfLink,\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.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\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 = new Network(\"network\", NetworkArgs.builder()\n .name(\"test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var ipsec_interconnect_address = new Address(\"ipsec-interconnect-address\", AddressArgs.builder()\n .name(\"test-address\")\n .addressType(\"INTERNAL\")\n .purpose(\"IPSEC_INTERCONNECT\")\n .address(\"192.168.1.0\")\n .prefixLength(29)\n .network(network.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ipsec-interconnect-address:\n type: gcp:compute:Address\n properties:\n name: test-address\n addressType: INTERNAL\n purpose: IPSEC_INTERCONNECT\n address: 192.168.1.0\n prefixLength: 29\n network: ${network.selfLink}\n network:\n type: gcp:compute:Network\n properties:\n name: test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAddress can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/addresses/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Address can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/address:Address default projects/{{project}}/regions/{{region}}/addresses/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/address:Address default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/address:Address default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/address:Address default {{name}}\n```\n\n", + "description": "Represents an Address resource.\n\nEach virtual machine instance has an ephemeral internal IP address and,\noptionally, an external IP address. To communicate between instances on\nthe same network, you can use an instance's internal IP address. To\ncommunicate with the Internet and instances outside of the same network,\nyou must specify the instance's external IP address.\n\nInternal IP addresses are ephemeral and only belong to an instance for\nthe lifetime of the instance; if the instance is deleted and recreated,\nthe instance is assigned a new internal IP address, either by Compute\nEngine or by you. External IP addresses can be either ephemeral or\nstatic.\n\n\nTo get more information about Address, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/beta/addresses)\n* How-to Guides\n * [Reserving a Static External IP Address](https://cloud.google.com/compute/docs/instances-and-network)\n * [Reserving a Static Internal IP Address](https://cloud.google.com/compute/docs/ip-addresses/reserve-static-internal-ip-address)\n\n## Example Usage\n\n### Address Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ipAddress = new gcp.compute.Address(\"ip_address\", {name: \"my-address\"});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nip_address = gcp.compute.Address(\"ip_address\", name=\"my-address\")\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 ipAddress = new Gcp.Compute.Address(\"ip_address\", new()\n {\n Name = \"my-address\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewAddress(ctx, \"ip_address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-address\"),\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 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 ipAddress = new Address(\"ipAddress\", AddressArgs.builder()\n .name(\"my-address\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ipAddress:\n type: gcp:compute:Address\n name: ip_address\n properties:\n name: my-address\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Address With Subnetwork\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"my-network\"});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"my-subnet\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst internalWithSubnetAndAddress = new gcp.compute.Address(\"internal_with_subnet_and_address\", {\n name: \"my-internal-address\",\n subnetwork: defaultSubnetwork.id,\n addressType: \"INTERNAL\",\n address: \"10.0.42.42\",\n region: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"my-network\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"my-subnet\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=default.id)\ninternal_with_subnet_and_address = gcp.compute.Address(\"internal_with_subnet_and_address\",\n name=\"my-internal-address\",\n subnetwork=default_subnetwork.id,\n address_type=\"INTERNAL\",\n address=\"10.0.42.42\",\n region=\"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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"my-subnet\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var internalWithSubnetAndAddress = new Gcp.Compute.Address(\"internal_with_subnet_and_address\", new()\n {\n Name = \"my-internal-address\",\n Subnetwork = defaultSubnetwork.Id,\n AddressType = \"INTERNAL\",\n IPAddress = \"10.0.42.42\",\n Region = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewAddress(ctx, \"internal_with_subnet_and_address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-internal-address\"),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tAddress: pulumi.String(\"10.0.42.42\"),\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\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.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"my-network\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var internalWithSubnetAndAddress = new Address(\"internalWithSubnetAndAddress\", AddressArgs.builder()\n .name(\"my-internal-address\")\n .subnetwork(defaultSubnetwork.id())\n .addressType(\"INTERNAL\")\n .address(\"10.0.42.42\")\n .region(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: my-subnet\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${default.id}\n internalWithSubnetAndAddress:\n type: gcp:compute:Address\n name: internal_with_subnet_and_address\n properties:\n name: my-internal-address\n subnetwork: ${defaultSubnetwork.id}\n addressType: INTERNAL\n address: 10.0.42.42\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Address With Gce Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst internalWithGceEndpoint = new gcp.compute.Address(\"internal_with_gce_endpoint\", {\n name: \"my-internal-address-\",\n addressType: \"INTERNAL\",\n purpose: \"GCE_ENDPOINT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninternal_with_gce_endpoint = gcp.compute.Address(\"internal_with_gce_endpoint\",\n name=\"my-internal-address-\",\n address_type=\"INTERNAL\",\n purpose=\"GCE_ENDPOINT\")\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 internalWithGceEndpoint = new Gcp.Compute.Address(\"internal_with_gce_endpoint\", new()\n {\n Name = \"my-internal-address-\",\n AddressType = \"INTERNAL\",\n Purpose = \"GCE_ENDPOINT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewAddress(ctx, \"internal_with_gce_endpoint\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-internal-address-\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"GCE_ENDPOINT\"),\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 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 internalWithGceEndpoint = new Address(\"internalWithGceEndpoint\", AddressArgs.builder()\n .name(\"my-internal-address-\")\n .addressType(\"INTERNAL\")\n .purpose(\"GCE_ENDPOINT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n internalWithGceEndpoint:\n type: gcp:compute:Address\n name: internal_with_gce_endpoint\n properties:\n name: my-internal-address-\n addressType: INTERNAL\n purpose: GCE_ENDPOINT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Instance With Ip\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst static = new gcp.compute.Address(\"static\", {name: \"ipv4-address\"});\nconst debianImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst instanceWithIp = new gcp.compute.Instance(\"instance_with_ip\", {\n name: \"vm-instance\",\n machineType: \"f1-micro\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: debianImage.then(debianImage =\u003e debianImage.selfLink),\n },\n },\n networkInterfaces: [{\n network: \"default\",\n accessConfigs: [{\n natIp: static.address,\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nstatic = gcp.compute.Address(\"static\", name=\"ipv4-address\")\ndebian_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ninstance_with_ip = gcp.compute.Instance(\"instance_with_ip\",\n name=\"vm-instance\",\n machine_type=\"f1-micro\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": debian_image.self_link,\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n \"access_configs\": [{\n \"nat_ip\": static.address,\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 @static = new Gcp.Compute.Address(\"static\", new()\n {\n Name = \"ipv4-address\",\n });\n\n var debianImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var instanceWithIp = new Gcp.Compute.Instance(\"instance_with_ip\", new()\n {\n Name = \"vm-instance\",\n MachineType = \"f1-micro\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = debianImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n AccessConfigs = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceAccessConfigArgs\n {\n NatIp = @static.IPAddress,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tstatic, err := compute.NewAddress(ctx, \"static\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"ipv4-address\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdebianImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"instance_with_ip\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"vm-instance\"),\n\t\t\tMachineType: pulumi.String(\"f1-micro\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(debianImage.SelfLink),\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\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{\n\t\t\t\t\t\t\tNatIp: static.Address,\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.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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 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 static_ = new Address(\"static\", AddressArgs.builder()\n .name(\"ipv4-address\")\n .build());\n\n final var debianImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var instanceWithIp = new Instance(\"instanceWithIp\", InstanceArgs.builder()\n .name(\"vm-instance\")\n .machineType(\"f1-micro\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(debianImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .accessConfigs(InstanceNetworkInterfaceAccessConfigArgs.builder()\n .natIp(static_.address())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n static:\n type: gcp:compute:Address\n properties:\n name: ipv4-address\n instanceWithIp:\n type: gcp:compute:Instance\n name: instance_with_ip\n properties:\n name: vm-instance\n machineType: f1-micro\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: ${debianImage.selfLink}\n networkInterfaces:\n - network: default\n accessConfigs:\n - natIp: ${static.address}\nvariables:\n debianImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Compute Address Ipsec Interconnect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"test-network\",\n autoCreateSubnetworks: false,\n});\nconst ipsec_interconnect_address = new gcp.compute.Address(\"ipsec-interconnect-address\", {\n name: \"test-address\",\n addressType: \"INTERNAL\",\n purpose: \"IPSEC_INTERCONNECT\",\n address: \"192.168.1.0\",\n prefixLength: 29,\n network: network.selfLink,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"test-network\",\n auto_create_subnetworks=False)\nipsec_interconnect_address = gcp.compute.Address(\"ipsec-interconnect-address\",\n name=\"test-address\",\n address_type=\"INTERNAL\",\n purpose=\"IPSEC_INTERCONNECT\",\n address=\"192.168.1.0\",\n prefix_length=29,\n network=network.self_link)\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 = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var ipsec_interconnect_address = new Gcp.Compute.Address(\"ipsec-interconnect-address\", new()\n {\n Name = \"test-address\",\n AddressType = \"INTERNAL\",\n Purpose = \"IPSEC_INTERCONNECT\",\n IPAddress = \"192.168.1.0\",\n PrefixLength = 29,\n Network = network.SelfLink,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"test-network\"),\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.NewAddress(ctx, \"ipsec-interconnect-address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"test-address\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"IPSEC_INTERCONNECT\"),\n\t\t\tAddress: pulumi.String(\"192.168.1.0\"),\n\t\t\tPrefixLength: pulumi.Int(29),\n\t\t\tNetwork: network.SelfLink,\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.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\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 = new Network(\"network\", NetworkArgs.builder()\n .name(\"test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var ipsec_interconnect_address = new Address(\"ipsec-interconnect-address\", AddressArgs.builder()\n .name(\"test-address\")\n .addressType(\"INTERNAL\")\n .purpose(\"IPSEC_INTERCONNECT\")\n .address(\"192.168.1.0\")\n .prefixLength(29)\n .network(network.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ipsec-interconnect-address:\n type: gcp:compute:Address\n properties:\n name: test-address\n addressType: INTERNAL\n purpose: IPSEC_INTERCONNECT\n address: 192.168.1.0\n prefixLength: 29\n network: ${network.selfLink}\n network:\n type: gcp:compute:Network\n properties:\n name: test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAddress can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/addresses/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Address can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/address:Address default projects/{{project}}/regions/{{region}}/addresses/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/address:Address default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/address:Address default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/address:Address default {{name}}\n```\n\n", "properties": { "address": { "type": "string", @@ -141328,7 +141328,7 @@ } }, "gcp:compute/attachedDisk:AttachedDisk": { - "description": "Persistent disks can be attached to a compute instance using the `attached_disk`\nsection within the compute instance configuration.\nHowever there may be situations where managing the attached disks via the compute\ninstance config isn't preferable or possible, such as attaching dynamic\nnumbers of disks using the `count` variable.\n\n\nTo get more information about attaching disks, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instances/attachDisk)\n* How-to Guides\n * [Adding a persistent disk](https://cloud.google.com/compute/docs/disks/add-persistent-disk)\n\n**Note:** When using `gcp.compute.AttachedDisk` you **must** use `lifecycle.ignore_changes = [\"attached_disk\"]` on the `gcp.compute.Instance` resource that has the disks attached. Otherwise the two resources will fight for control of the attached disk block.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultInstance = new gcp.compute.Instance(\"default\", {\n name: \"attached-disk-instance\",\n machineType: \"e2-medium\",\n zone: \"us-west1-a\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n});\nconst _default = new gcp.compute.AttachedDisk(\"default\", {\n disk: defaultGoogleComputeDisk.id,\n instance: defaultInstance.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_instance = gcp.compute.Instance(\"default\",\n name=\"attached-disk-instance\",\n machine_type=\"e2-medium\",\n zone=\"us-west1-a\",\n boot_disk={\n \"initializeParams\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }])\ndefault = gcp.compute.AttachedDisk(\"default\",\n disk=default_google_compute_disk[\"id\"],\n instance=default_instance.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 defaultInstance = new Gcp.Compute.Instance(\"default\", new()\n {\n Name = \"attached-disk-instance\",\n MachineType = \"e2-medium\",\n Zone = \"us-west1-a\",\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 },\n },\n });\n\n var @default = new Gcp.Compute.AttachedDisk(\"default\", new()\n {\n Disk = defaultGoogleComputeDisk.Id,\n Instance = defaultInstance.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultInstance, err := compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"attached-disk-instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-west1-a\"),\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},\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.NewAttachedDisk(ctx, \"default\", \u0026compute.AttachedDiskArgs{\n\t\t\tDisk: pulumi.Any(defaultGoogleComputeDisk.Id),\n\t\t\tInstance: defaultInstance.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.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.compute.AttachedDisk;\nimport com.pulumi.gcp.compute.AttachedDiskArgs;\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 defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .name(\"attached-disk-instance\")\n .machineType(\"e2-medium\")\n .zone(\"us-west1-a\")\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 .build())\n .build());\n\n var default_ = new AttachedDisk(\"default\", AttachedDiskArgs.builder()\n .disk(defaultGoogleComputeDisk.id())\n .instance(defaultInstance.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:AttachedDisk\n properties:\n disk: ${defaultGoogleComputeDisk.id}\n instance: ${defaultInstance.id}\n defaultInstance:\n type: gcp:compute:Instance\n name: default\n properties:\n name: attached-disk-instance\n machineType: e2-medium\n zone: us-west1-a\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - network: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAttached Disk can be imported the following ways:\n\n* `projects/{{project}}/zones/{{zone}}/instances/{{instance.name}}/{{disk.name}}`\n\n* `{{project}}/{{zone}}/{{instance.name}}/{{disk.name}}`\n\nWhen using the `pulumi import` command, Attached Disk can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/attachedDisk:AttachedDisk default projects/{{project}}/zones/{{zone}}/instances/{{instance.name}}/{{disk.name}}\n```\n\n```sh\n$ pulumi import gcp:compute/attachedDisk:AttachedDisk default {{project}}/{{zone}}/{{instance.name}}/{{disk.name}}\n```\n\n", + "description": "Persistent disks can be attached to a compute instance using the `attached_disk`\nsection within the compute instance configuration.\nHowever there may be situations where managing the attached disks via the compute\ninstance config isn't preferable or possible, such as attaching dynamic\nnumbers of disks using the `count` variable.\n\n\nTo get more information about attaching disks, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instances/attachDisk)\n* How-to Guides\n * [Adding a persistent disk](https://cloud.google.com/compute/docs/disks/add-persistent-disk)\n\n**Note:** When using `gcp.compute.AttachedDisk` you **must** use `lifecycle.ignore_changes = [\"attached_disk\"]` on the `gcp.compute.Instance` resource that has the disks attached. Otherwise the two resources will fight for control of the attached disk block.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultInstance = new gcp.compute.Instance(\"default\", {\n name: \"attached-disk-instance\",\n machineType: \"e2-medium\",\n zone: \"us-west1-a\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n});\nconst _default = new gcp.compute.AttachedDisk(\"default\", {\n disk: defaultGoogleComputeDisk.id,\n instance: defaultInstance.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_instance = gcp.compute.Instance(\"default\",\n name=\"attached-disk-instance\",\n machine_type=\"e2-medium\",\n zone=\"us-west1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }])\ndefault = gcp.compute.AttachedDisk(\"default\",\n disk=default_google_compute_disk[\"id\"],\n instance=default_instance.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 defaultInstance = new Gcp.Compute.Instance(\"default\", new()\n {\n Name = \"attached-disk-instance\",\n MachineType = \"e2-medium\",\n Zone = \"us-west1-a\",\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 },\n },\n });\n\n var @default = new Gcp.Compute.AttachedDisk(\"default\", new()\n {\n Disk = defaultGoogleComputeDisk.Id,\n Instance = defaultInstance.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultInstance, err := compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"attached-disk-instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-west1-a\"),\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},\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.NewAttachedDisk(ctx, \"default\", \u0026compute.AttachedDiskArgs{\n\t\t\tDisk: pulumi.Any(defaultGoogleComputeDisk.Id),\n\t\t\tInstance: defaultInstance.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.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.compute.AttachedDisk;\nimport com.pulumi.gcp.compute.AttachedDiskArgs;\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 defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .name(\"attached-disk-instance\")\n .machineType(\"e2-medium\")\n .zone(\"us-west1-a\")\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 .build())\n .build());\n\n var default_ = new AttachedDisk(\"default\", AttachedDiskArgs.builder()\n .disk(defaultGoogleComputeDisk.id())\n .instance(defaultInstance.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:AttachedDisk\n properties:\n disk: ${defaultGoogleComputeDisk.id}\n instance: ${defaultInstance.id}\n defaultInstance:\n type: gcp:compute:Instance\n name: default\n properties:\n name: attached-disk-instance\n machineType: e2-medium\n zone: us-west1-a\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - network: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAttached Disk can be imported the following ways:\n\n* `projects/{{project}}/zones/{{zone}}/instances/{{instance.name}}/{{disk.name}}`\n\n* `{{project}}/{{zone}}/{{instance.name}}/{{disk.name}}`\n\nWhen using the `pulumi import` command, Attached Disk can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/attachedDisk:AttachedDisk default projects/{{project}}/zones/{{zone}}/instances/{{instance.name}}/{{disk.name}}\n```\n\n```sh\n$ pulumi import gcp:compute/attachedDisk:AttachedDisk default {{project}}/{{zone}}/{{instance.name}}/{{disk.name}}\n```\n\n", "properties": { "deviceName": { "type": "string", @@ -141436,7 +141436,7 @@ } }, "gcp:compute/autoscaler:Autoscaler": { - "description": "Represents an Autoscaler resource.\n\nAutoscalers allow you to automatically scale virtual machine instances in\nmanaged instance groups according to an autoscaling policy that you\ndefine.\n\n\nTo get more information about Autoscaler, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/autoscalers)\n* How-to Guides\n * [Autoscaling Groups of Instances](https://cloud.google.com/compute/docs/autoscaler/)\n\n## Example Usage\n\n### Autoscaler Single Instance\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst debian9 = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst defaultInstanceTemplate = new gcp.compute.InstanceTemplate(\"default\", {\n name: \"my-instance-template\",\n machineType: \"e2-medium\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n disks: [{\n sourceImage: debian9.then(debian9 =\u003e debian9.id),\n }],\n networkInterfaces: [{\n network: \"default\",\n }],\n metadata: {\n foo: \"bar\",\n },\n serviceAccount: {\n scopes: [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n },\n});\nconst defaultTargetPool = new gcp.compute.TargetPool(\"default\", {name: \"my-target-pool\"});\nconst defaultInstanceGroupManager = new gcp.compute.InstanceGroupManager(\"default\", {\n name: \"my-igm\",\n zone: \"us-central1-f\",\n versions: [{\n instanceTemplate: defaultInstanceTemplate.id,\n name: \"primary\",\n }],\n targetPools: [defaultTargetPool.id],\n baseInstanceName: \"autoscaler-sample\",\n});\nconst _default = new gcp.compute.Autoscaler(\"default\", {\n name: \"my-autoscaler\",\n zone: \"us-central1-f\",\n target: defaultInstanceGroupManager.id,\n autoscalingPolicy: {\n maxReplicas: 5,\n minReplicas: 1,\n cooldownPeriod: 60,\n metrics: [{\n name: \"pubsub.googleapis.com/subscription/num_undelivered_messages\",\n filter: \"resource.type = pubsub_subscription AND resource.label.subscription_id = our-subscription\",\n singleInstanceAssignment: 65535,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndebian9 = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault_instance_template = gcp.compute.InstanceTemplate(\"default\",\n name=\"my-instance-template\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n disks=[{\n \"sourceImage\": debian9.id,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n metadata={\n \"foo\": \"bar\",\n },\n service_account={\n \"scopes\": [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n })\ndefault_target_pool = gcp.compute.TargetPool(\"default\", name=\"my-target-pool\")\ndefault_instance_group_manager = gcp.compute.InstanceGroupManager(\"default\",\n name=\"my-igm\",\n zone=\"us-central1-f\",\n versions=[{\n \"instanceTemplate\": default_instance_template.id,\n \"name\": \"primary\",\n }],\n target_pools=[default_target_pool.id],\n base_instance_name=\"autoscaler-sample\")\ndefault = gcp.compute.Autoscaler(\"default\",\n name=\"my-autoscaler\",\n zone=\"us-central1-f\",\n target=default_instance_group_manager.id,\n autoscaling_policy={\n \"maxReplicas\": 5,\n \"minReplicas\": 1,\n \"cooldownPeriod\": 60,\n \"metrics\": [{\n \"name\": \"pubsub.googleapis.com/subscription/num_undelivered_messages\",\n \"filter\": \"resource.type = pubsub_subscription AND resource.label.subscription_id = our-subscription\",\n \"singleInstanceAssignment\": 65535,\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 debian9 = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var defaultInstanceTemplate = new Gcp.Compute.InstanceTemplate(\"default\", new()\n {\n Name = \"my-instance-template\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = debian9.Apply(getImageResult =\u003e getImageResult.Id),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Scopes = new[]\n {\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n },\n },\n });\n\n var defaultTargetPool = new Gcp.Compute.TargetPool(\"default\", new()\n {\n Name = \"my-target-pool\",\n });\n\n var defaultInstanceGroupManager = new Gcp.Compute.InstanceGroupManager(\"default\", new()\n {\n Name = \"my-igm\",\n Zone = \"us-central1-f\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = defaultInstanceTemplate.Id,\n Name = \"primary\",\n },\n },\n TargetPools = new[]\n {\n defaultTargetPool.Id,\n },\n BaseInstanceName = \"autoscaler-sample\",\n });\n\n var @default = new Gcp.Compute.Autoscaler(\"default\", new()\n {\n Name = \"my-autoscaler\",\n Zone = \"us-central1-f\",\n Target = defaultInstanceGroupManager.Id,\n AutoscalingPolicy = new Gcp.Compute.Inputs.AutoscalerAutoscalingPolicyArgs\n {\n MaxReplicas = 5,\n MinReplicas = 1,\n CooldownPeriod = 60,\n Metrics = new[]\n {\n new Gcp.Compute.Inputs.AutoscalerAutoscalingPolicyMetricArgs\n {\n Name = \"pubsub.googleapis.com/subscription/num_undelivered_messages\",\n Filter = \"resource.type = pubsub_subscription AND resource.label.subscription_id = our-subscription\",\n SingleInstanceAssignment = 65535,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdebian9, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultInstanceTemplate, err := compute.NewInstanceTemplate(ctx, \"default\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"my-instance-template\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(debian9.Id),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.Map{\n\t\t\t\t\"foo\": pulumi.Any(\"bar\"),\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"userinfo-email\"),\n\t\t\t\t\tpulumi.String(\"compute-ro\"),\n\t\t\t\t\tpulumi.String(\"storage-ro\"),\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\tdefaultTargetPool, err := compute.NewTargetPool(ctx, \"default\", \u0026compute.TargetPoolArgs{\n\t\t\tName: pulumi.String(\"my-target-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultInstanceGroupManager, err := compute.NewInstanceGroupManager(ctx, \"default\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"my-igm\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: defaultInstanceTemplate.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetPools: pulumi.StringArray{\n\t\t\t\tdefaultTargetPool.ID(),\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"autoscaler-sample\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewAutoscaler(ctx, \"default\", \u0026compute.AutoscalerArgs{\n\t\t\tName: pulumi.String(\"my-autoscaler\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tTarget: defaultInstanceGroupManager.ID(),\n\t\t\tAutoscalingPolicy: \u0026compute.AutoscalerAutoscalingPolicyArgs{\n\t\t\t\tMaxReplicas: pulumi.Int(5),\n\t\t\t\tMinReplicas: pulumi.Int(1),\n\t\t\t\tCooldownPeriod: pulumi.Int(60),\n\t\t\t\tMetrics: compute.AutoscalerAutoscalingPolicyMetricArray{\n\t\t\t\t\t\u0026compute.AutoscalerAutoscalingPolicyMetricArgs{\n\t\t\t\t\t\tName: pulumi.String(\"pubsub.googleapis.com/subscription/num_undelivered_messages\"),\n\t\t\t\t\t\tFilter: pulumi.String(\"resource.type = pubsub_subscription AND resource.label.subscription_id = our-subscription\"),\n\t\t\t\t\t\tSingleInstanceAssignment: pulumi.Float64(65535),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport com.pulumi.gcp.compute.TargetPool;\nimport com.pulumi.gcp.compute.TargetPoolArgs;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.Autoscaler;\nimport com.pulumi.gcp.compute.AutoscalerArgs;\nimport com.pulumi.gcp.compute.inputs.AutoscalerAutoscalingPolicyArgs;\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 debian9 = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var defaultInstanceTemplate = new InstanceTemplate(\"defaultInstanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"my-instance-template\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(debian9.applyValue(getImageResult -\u003e getImageResult.id()))\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .scopes( \n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\")\n .build())\n .build());\n\n var defaultTargetPool = new TargetPool(\"defaultTargetPool\", TargetPoolArgs.builder()\n .name(\"my-target-pool\")\n .build());\n\n var defaultInstanceGroupManager = new InstanceGroupManager(\"defaultInstanceGroupManager\", InstanceGroupManagerArgs.builder()\n .name(\"my-igm\")\n .zone(\"us-central1-f\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(defaultInstanceTemplate.id())\n .name(\"primary\")\n .build())\n .targetPools(defaultTargetPool.id())\n .baseInstanceName(\"autoscaler-sample\")\n .build());\n\n var default_ = new Autoscaler(\"default\", AutoscalerArgs.builder()\n .name(\"my-autoscaler\")\n .zone(\"us-central1-f\")\n .target(defaultInstanceGroupManager.id())\n .autoscalingPolicy(AutoscalerAutoscalingPolicyArgs.builder()\n .maxReplicas(5)\n .minReplicas(1)\n .cooldownPeriod(60)\n .metrics(AutoscalerAutoscalingPolicyMetricArgs.builder()\n .name(\"pubsub.googleapis.com/subscription/num_undelivered_messages\")\n .filter(\"resource.type = pubsub_subscription AND resource.label.subscription_id = our-subscription\")\n .singleInstanceAssignment(65535)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Autoscaler\n properties:\n name: my-autoscaler\n zone: us-central1-f\n target: ${defaultInstanceGroupManager.id}\n autoscalingPolicy:\n maxReplicas: 5\n minReplicas: 1\n cooldownPeriod: 60\n metrics:\n - name: pubsub.googleapis.com/subscription/num_undelivered_messages\n filter: resource.type = pubsub_subscription AND resource.label.subscription_id = our-subscription\n singleInstanceAssignment: 65535\n defaultInstanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: default\n properties:\n name: my-instance-template\n machineType: e2-medium\n canIpForward: false\n tags:\n - foo\n - bar\n disks:\n - sourceImage: ${debian9.id}\n networkInterfaces:\n - network: default\n metadata:\n foo: bar\n serviceAccount:\n scopes:\n - userinfo-email\n - compute-ro\n - storage-ro\n defaultTargetPool:\n type: gcp:compute:TargetPool\n name: default\n properties:\n name: my-target-pool\n defaultInstanceGroupManager:\n type: gcp:compute:InstanceGroupManager\n name: default\n properties:\n name: my-igm\n zone: us-central1-f\n versions:\n - instanceTemplate: ${defaultInstanceTemplate.id}\n name: primary\n targetPools:\n - ${defaultTargetPool.id}\n baseInstanceName: autoscaler-sample\nvariables:\n debian9:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Autoscaler Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst debian9 = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst foobarInstanceTemplate = new gcp.compute.InstanceTemplate(\"foobar\", {\n name: \"my-instance-template\",\n machineType: \"e2-medium\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n disks: [{\n sourceImage: debian9.then(debian9 =\u003e debian9.id),\n }],\n networkInterfaces: [{\n network: \"default\",\n }],\n metadata: {\n foo: \"bar\",\n },\n serviceAccount: {\n scopes: [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n },\n});\nconst foobarTargetPool = new gcp.compute.TargetPool(\"foobar\", {name: \"my-target-pool\"});\nconst foobarInstanceGroupManager = new gcp.compute.InstanceGroupManager(\"foobar\", {\n name: \"my-igm\",\n zone: \"us-central1-f\",\n versions: [{\n instanceTemplate: foobarInstanceTemplate.id,\n name: \"primary\",\n }],\n targetPools: [foobarTargetPool.id],\n baseInstanceName: \"foobar\",\n});\nconst foobar = new gcp.compute.Autoscaler(\"foobar\", {\n name: \"my-autoscaler\",\n zone: \"us-central1-f\",\n target: foobarInstanceGroupManager.id,\n autoscalingPolicy: {\n maxReplicas: 5,\n minReplicas: 1,\n cooldownPeriod: 60,\n cpuUtilization: {\n target: 0.5,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndebian9 = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nfoobar_instance_template = gcp.compute.InstanceTemplate(\"foobar\",\n name=\"my-instance-template\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n disks=[{\n \"sourceImage\": debian9.id,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n metadata={\n \"foo\": \"bar\",\n },\n service_account={\n \"scopes\": [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n })\nfoobar_target_pool = gcp.compute.TargetPool(\"foobar\", name=\"my-target-pool\")\nfoobar_instance_group_manager = gcp.compute.InstanceGroupManager(\"foobar\",\n name=\"my-igm\",\n zone=\"us-central1-f\",\n versions=[{\n \"instanceTemplate\": foobar_instance_template.id,\n \"name\": \"primary\",\n }],\n target_pools=[foobar_target_pool.id],\n base_instance_name=\"foobar\")\nfoobar = gcp.compute.Autoscaler(\"foobar\",\n name=\"my-autoscaler\",\n zone=\"us-central1-f\",\n target=foobar_instance_group_manager.id,\n autoscaling_policy={\n \"maxReplicas\": 5,\n \"minReplicas\": 1,\n \"cooldownPeriod\": 60,\n \"cpuUtilization\": {\n \"target\": 0.5,\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 debian9 = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var foobarInstanceTemplate = new Gcp.Compute.InstanceTemplate(\"foobar\", new()\n {\n Name = \"my-instance-template\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = debian9.Apply(getImageResult =\u003e getImageResult.Id),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Scopes = new[]\n {\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n },\n },\n });\n\n var foobarTargetPool = new Gcp.Compute.TargetPool(\"foobar\", new()\n {\n Name = \"my-target-pool\",\n });\n\n var foobarInstanceGroupManager = new Gcp.Compute.InstanceGroupManager(\"foobar\", new()\n {\n Name = \"my-igm\",\n Zone = \"us-central1-f\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = foobarInstanceTemplate.Id,\n Name = \"primary\",\n },\n },\n TargetPools = new[]\n {\n foobarTargetPool.Id,\n },\n BaseInstanceName = \"foobar\",\n });\n\n var foobar = new Gcp.Compute.Autoscaler(\"foobar\", new()\n {\n Name = \"my-autoscaler\",\n Zone = \"us-central1-f\",\n Target = foobarInstanceGroupManager.Id,\n AutoscalingPolicy = new Gcp.Compute.Inputs.AutoscalerAutoscalingPolicyArgs\n {\n MaxReplicas = 5,\n MinReplicas = 1,\n CooldownPeriod = 60,\n CpuUtilization = new Gcp.Compute.Inputs.AutoscalerAutoscalingPolicyCpuUtilizationArgs\n {\n Target = 0.5,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdebian9, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobarInstanceTemplate, err := compute.NewInstanceTemplate(ctx, \"foobar\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"my-instance-template\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(debian9.Id),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.Map{\n\t\t\t\t\"foo\": pulumi.Any(\"bar\"),\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"userinfo-email\"),\n\t\t\t\t\tpulumi.String(\"compute-ro\"),\n\t\t\t\t\tpulumi.String(\"storage-ro\"),\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\tfoobarTargetPool, err := compute.NewTargetPool(ctx, \"foobar\", \u0026compute.TargetPoolArgs{\n\t\t\tName: pulumi.String(\"my-target-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobarInstanceGroupManager, err := compute.NewInstanceGroupManager(ctx, \"foobar\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"my-igm\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: foobarInstanceTemplate.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetPools: pulumi.StringArray{\n\t\t\t\tfoobarTargetPool.ID(),\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"foobar\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewAutoscaler(ctx, \"foobar\", \u0026compute.AutoscalerArgs{\n\t\t\tName: pulumi.String(\"my-autoscaler\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tTarget: foobarInstanceGroupManager.ID(),\n\t\t\tAutoscalingPolicy: \u0026compute.AutoscalerAutoscalingPolicyArgs{\n\t\t\t\tMaxReplicas: pulumi.Int(5),\n\t\t\t\tMinReplicas: pulumi.Int(1),\n\t\t\t\tCooldownPeriod: pulumi.Int(60),\n\t\t\t\tCpuUtilization: \u0026compute.AutoscalerAutoscalingPolicyCpuUtilizationArgs{\n\t\t\t\t\tTarget: pulumi.Float64(0.5),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport com.pulumi.gcp.compute.TargetPool;\nimport com.pulumi.gcp.compute.TargetPoolArgs;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.Autoscaler;\nimport com.pulumi.gcp.compute.AutoscalerArgs;\nimport com.pulumi.gcp.compute.inputs.AutoscalerAutoscalingPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.AutoscalerAutoscalingPolicyCpuUtilizationArgs;\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 debian9 = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var foobarInstanceTemplate = new InstanceTemplate(\"foobarInstanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"my-instance-template\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(debian9.applyValue(getImageResult -\u003e getImageResult.id()))\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .scopes( \n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\")\n .build())\n .build());\n\n var foobarTargetPool = new TargetPool(\"foobarTargetPool\", TargetPoolArgs.builder()\n .name(\"my-target-pool\")\n .build());\n\n var foobarInstanceGroupManager = new InstanceGroupManager(\"foobarInstanceGroupManager\", InstanceGroupManagerArgs.builder()\n .name(\"my-igm\")\n .zone(\"us-central1-f\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(foobarInstanceTemplate.id())\n .name(\"primary\")\n .build())\n .targetPools(foobarTargetPool.id())\n .baseInstanceName(\"foobar\")\n .build());\n\n var foobar = new Autoscaler(\"foobar\", AutoscalerArgs.builder()\n .name(\"my-autoscaler\")\n .zone(\"us-central1-f\")\n .target(foobarInstanceGroupManager.id())\n .autoscalingPolicy(AutoscalerAutoscalingPolicyArgs.builder()\n .maxReplicas(5)\n .minReplicas(1)\n .cooldownPeriod(60)\n .cpuUtilization(AutoscalerAutoscalingPolicyCpuUtilizationArgs.builder()\n .target(0.5)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:Autoscaler\n properties:\n name: my-autoscaler\n zone: us-central1-f\n target: ${foobarInstanceGroupManager.id}\n autoscalingPolicy:\n maxReplicas: 5\n minReplicas: 1\n cooldownPeriod: 60\n cpuUtilization:\n target: 0.5\n foobarInstanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: foobar\n properties:\n name: my-instance-template\n machineType: e2-medium\n canIpForward: false\n tags:\n - foo\n - bar\n disks:\n - sourceImage: ${debian9.id}\n networkInterfaces:\n - network: default\n metadata:\n foo: bar\n serviceAccount:\n scopes:\n - userinfo-email\n - compute-ro\n - storage-ro\n foobarTargetPool:\n type: gcp:compute:TargetPool\n name: foobar\n properties:\n name: my-target-pool\n foobarInstanceGroupManager:\n type: gcp:compute:InstanceGroupManager\n name: foobar\n properties:\n name: my-igm\n zone: us-central1-f\n versions:\n - instanceTemplate: ${foobarInstanceTemplate.id}\n name: primary\n targetPools:\n - ${foobarTargetPool.id}\n baseInstanceName: foobar\nvariables:\n debian9:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAutoscaler can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/autoscalers/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Autoscaler can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/autoscaler:Autoscaler default projects/{{project}}/zones/{{zone}}/autoscalers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/autoscaler:Autoscaler default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/autoscaler:Autoscaler default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/autoscaler:Autoscaler default {{name}}\n```\n\n", + "description": "Represents an Autoscaler resource.\n\nAutoscalers allow you to automatically scale virtual machine instances in\nmanaged instance groups according to an autoscaling policy that you\ndefine.\n\n\nTo get more information about Autoscaler, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/autoscalers)\n* How-to Guides\n * [Autoscaling Groups of Instances](https://cloud.google.com/compute/docs/autoscaler/)\n\n## Example Usage\n\n### Autoscaler Single Instance\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst debian9 = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst defaultInstanceTemplate = new gcp.compute.InstanceTemplate(\"default\", {\n name: \"my-instance-template\",\n machineType: \"e2-medium\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n disks: [{\n sourceImage: debian9.then(debian9 =\u003e debian9.id),\n }],\n networkInterfaces: [{\n network: \"default\",\n }],\n metadata: {\n foo: \"bar\",\n },\n serviceAccount: {\n scopes: [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n },\n});\nconst defaultTargetPool = new gcp.compute.TargetPool(\"default\", {name: \"my-target-pool\"});\nconst defaultInstanceGroupManager = new gcp.compute.InstanceGroupManager(\"default\", {\n name: \"my-igm\",\n zone: \"us-central1-f\",\n versions: [{\n instanceTemplate: defaultInstanceTemplate.id,\n name: \"primary\",\n }],\n targetPools: [defaultTargetPool.id],\n baseInstanceName: \"autoscaler-sample\",\n});\nconst _default = new gcp.compute.Autoscaler(\"default\", {\n name: \"my-autoscaler\",\n zone: \"us-central1-f\",\n target: defaultInstanceGroupManager.id,\n autoscalingPolicy: {\n maxReplicas: 5,\n minReplicas: 1,\n cooldownPeriod: 60,\n metrics: [{\n name: \"pubsub.googleapis.com/subscription/num_undelivered_messages\",\n filter: \"resource.type = pubsub_subscription AND resource.label.subscription_id = our-subscription\",\n singleInstanceAssignment: 65535,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndebian9 = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault_instance_template = gcp.compute.InstanceTemplate(\"default\",\n name=\"my-instance-template\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n disks=[{\n \"source_image\": debian9.id,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n metadata={\n \"foo\": \"bar\",\n },\n service_account={\n \"scopes\": [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n })\ndefault_target_pool = gcp.compute.TargetPool(\"default\", name=\"my-target-pool\")\ndefault_instance_group_manager = gcp.compute.InstanceGroupManager(\"default\",\n name=\"my-igm\",\n zone=\"us-central1-f\",\n versions=[{\n \"instance_template\": default_instance_template.id,\n \"name\": \"primary\",\n }],\n target_pools=[default_target_pool.id],\n base_instance_name=\"autoscaler-sample\")\ndefault = gcp.compute.Autoscaler(\"default\",\n name=\"my-autoscaler\",\n zone=\"us-central1-f\",\n target=default_instance_group_manager.id,\n autoscaling_policy={\n \"max_replicas\": 5,\n \"min_replicas\": 1,\n \"cooldown_period\": 60,\n \"metrics\": [{\n \"name\": \"pubsub.googleapis.com/subscription/num_undelivered_messages\",\n \"filter\": \"resource.type = pubsub_subscription AND resource.label.subscription_id = our-subscription\",\n \"single_instance_assignment\": 65535,\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 debian9 = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var defaultInstanceTemplate = new Gcp.Compute.InstanceTemplate(\"default\", new()\n {\n Name = \"my-instance-template\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = debian9.Apply(getImageResult =\u003e getImageResult.Id),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Scopes = new[]\n {\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n },\n },\n });\n\n var defaultTargetPool = new Gcp.Compute.TargetPool(\"default\", new()\n {\n Name = \"my-target-pool\",\n });\n\n var defaultInstanceGroupManager = new Gcp.Compute.InstanceGroupManager(\"default\", new()\n {\n Name = \"my-igm\",\n Zone = \"us-central1-f\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = defaultInstanceTemplate.Id,\n Name = \"primary\",\n },\n },\n TargetPools = new[]\n {\n defaultTargetPool.Id,\n },\n BaseInstanceName = \"autoscaler-sample\",\n });\n\n var @default = new Gcp.Compute.Autoscaler(\"default\", new()\n {\n Name = \"my-autoscaler\",\n Zone = \"us-central1-f\",\n Target = defaultInstanceGroupManager.Id,\n AutoscalingPolicy = new Gcp.Compute.Inputs.AutoscalerAutoscalingPolicyArgs\n {\n MaxReplicas = 5,\n MinReplicas = 1,\n CooldownPeriod = 60,\n Metrics = new[]\n {\n new Gcp.Compute.Inputs.AutoscalerAutoscalingPolicyMetricArgs\n {\n Name = \"pubsub.googleapis.com/subscription/num_undelivered_messages\",\n Filter = \"resource.type = pubsub_subscription AND resource.label.subscription_id = our-subscription\",\n SingleInstanceAssignment = 65535,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdebian9, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultInstanceTemplate, err := compute.NewInstanceTemplate(ctx, \"default\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"my-instance-template\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(debian9.Id),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.Map{\n\t\t\t\t\"foo\": pulumi.Any(\"bar\"),\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"userinfo-email\"),\n\t\t\t\t\tpulumi.String(\"compute-ro\"),\n\t\t\t\t\tpulumi.String(\"storage-ro\"),\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\tdefaultTargetPool, err := compute.NewTargetPool(ctx, \"default\", \u0026compute.TargetPoolArgs{\n\t\t\tName: pulumi.String(\"my-target-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultInstanceGroupManager, err := compute.NewInstanceGroupManager(ctx, \"default\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"my-igm\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: defaultInstanceTemplate.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetPools: pulumi.StringArray{\n\t\t\t\tdefaultTargetPool.ID(),\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"autoscaler-sample\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewAutoscaler(ctx, \"default\", \u0026compute.AutoscalerArgs{\n\t\t\tName: pulumi.String(\"my-autoscaler\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tTarget: defaultInstanceGroupManager.ID(),\n\t\t\tAutoscalingPolicy: \u0026compute.AutoscalerAutoscalingPolicyArgs{\n\t\t\t\tMaxReplicas: pulumi.Int(5),\n\t\t\t\tMinReplicas: pulumi.Int(1),\n\t\t\t\tCooldownPeriod: pulumi.Int(60),\n\t\t\t\tMetrics: compute.AutoscalerAutoscalingPolicyMetricArray{\n\t\t\t\t\t\u0026compute.AutoscalerAutoscalingPolicyMetricArgs{\n\t\t\t\t\t\tName: pulumi.String(\"pubsub.googleapis.com/subscription/num_undelivered_messages\"),\n\t\t\t\t\t\tFilter: pulumi.String(\"resource.type = pubsub_subscription AND resource.label.subscription_id = our-subscription\"),\n\t\t\t\t\t\tSingleInstanceAssignment: pulumi.Float64(65535),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport com.pulumi.gcp.compute.TargetPool;\nimport com.pulumi.gcp.compute.TargetPoolArgs;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.Autoscaler;\nimport com.pulumi.gcp.compute.AutoscalerArgs;\nimport com.pulumi.gcp.compute.inputs.AutoscalerAutoscalingPolicyArgs;\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 debian9 = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var defaultInstanceTemplate = new InstanceTemplate(\"defaultInstanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"my-instance-template\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(debian9.applyValue(getImageResult -\u003e getImageResult.id()))\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .scopes( \n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\")\n .build())\n .build());\n\n var defaultTargetPool = new TargetPool(\"defaultTargetPool\", TargetPoolArgs.builder()\n .name(\"my-target-pool\")\n .build());\n\n var defaultInstanceGroupManager = new InstanceGroupManager(\"defaultInstanceGroupManager\", InstanceGroupManagerArgs.builder()\n .name(\"my-igm\")\n .zone(\"us-central1-f\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(defaultInstanceTemplate.id())\n .name(\"primary\")\n .build())\n .targetPools(defaultTargetPool.id())\n .baseInstanceName(\"autoscaler-sample\")\n .build());\n\n var default_ = new Autoscaler(\"default\", AutoscalerArgs.builder()\n .name(\"my-autoscaler\")\n .zone(\"us-central1-f\")\n .target(defaultInstanceGroupManager.id())\n .autoscalingPolicy(AutoscalerAutoscalingPolicyArgs.builder()\n .maxReplicas(5)\n .minReplicas(1)\n .cooldownPeriod(60)\n .metrics(AutoscalerAutoscalingPolicyMetricArgs.builder()\n .name(\"pubsub.googleapis.com/subscription/num_undelivered_messages\")\n .filter(\"resource.type = pubsub_subscription AND resource.label.subscription_id = our-subscription\")\n .singleInstanceAssignment(65535)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Autoscaler\n properties:\n name: my-autoscaler\n zone: us-central1-f\n target: ${defaultInstanceGroupManager.id}\n autoscalingPolicy:\n maxReplicas: 5\n minReplicas: 1\n cooldownPeriod: 60\n metrics:\n - name: pubsub.googleapis.com/subscription/num_undelivered_messages\n filter: resource.type = pubsub_subscription AND resource.label.subscription_id = our-subscription\n singleInstanceAssignment: 65535\n defaultInstanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: default\n properties:\n name: my-instance-template\n machineType: e2-medium\n canIpForward: false\n tags:\n - foo\n - bar\n disks:\n - sourceImage: ${debian9.id}\n networkInterfaces:\n - network: default\n metadata:\n foo: bar\n serviceAccount:\n scopes:\n - userinfo-email\n - compute-ro\n - storage-ro\n defaultTargetPool:\n type: gcp:compute:TargetPool\n name: default\n properties:\n name: my-target-pool\n defaultInstanceGroupManager:\n type: gcp:compute:InstanceGroupManager\n name: default\n properties:\n name: my-igm\n zone: us-central1-f\n versions:\n - instanceTemplate: ${defaultInstanceTemplate.id}\n name: primary\n targetPools:\n - ${defaultTargetPool.id}\n baseInstanceName: autoscaler-sample\nvariables:\n debian9:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Autoscaler Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst debian9 = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst foobarInstanceTemplate = new gcp.compute.InstanceTemplate(\"foobar\", {\n name: \"my-instance-template\",\n machineType: \"e2-medium\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n disks: [{\n sourceImage: debian9.then(debian9 =\u003e debian9.id),\n }],\n networkInterfaces: [{\n network: \"default\",\n }],\n metadata: {\n foo: \"bar\",\n },\n serviceAccount: {\n scopes: [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n },\n});\nconst foobarTargetPool = new gcp.compute.TargetPool(\"foobar\", {name: \"my-target-pool\"});\nconst foobarInstanceGroupManager = new gcp.compute.InstanceGroupManager(\"foobar\", {\n name: \"my-igm\",\n zone: \"us-central1-f\",\n versions: [{\n instanceTemplate: foobarInstanceTemplate.id,\n name: \"primary\",\n }],\n targetPools: [foobarTargetPool.id],\n baseInstanceName: \"foobar\",\n});\nconst foobar = new gcp.compute.Autoscaler(\"foobar\", {\n name: \"my-autoscaler\",\n zone: \"us-central1-f\",\n target: foobarInstanceGroupManager.id,\n autoscalingPolicy: {\n maxReplicas: 5,\n minReplicas: 1,\n cooldownPeriod: 60,\n cpuUtilization: {\n target: 0.5,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndebian9 = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nfoobar_instance_template = gcp.compute.InstanceTemplate(\"foobar\",\n name=\"my-instance-template\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n disks=[{\n \"source_image\": debian9.id,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n metadata={\n \"foo\": \"bar\",\n },\n service_account={\n \"scopes\": [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n })\nfoobar_target_pool = gcp.compute.TargetPool(\"foobar\", name=\"my-target-pool\")\nfoobar_instance_group_manager = gcp.compute.InstanceGroupManager(\"foobar\",\n name=\"my-igm\",\n zone=\"us-central1-f\",\n versions=[{\n \"instance_template\": foobar_instance_template.id,\n \"name\": \"primary\",\n }],\n target_pools=[foobar_target_pool.id],\n base_instance_name=\"foobar\")\nfoobar = gcp.compute.Autoscaler(\"foobar\",\n name=\"my-autoscaler\",\n zone=\"us-central1-f\",\n target=foobar_instance_group_manager.id,\n autoscaling_policy={\n \"max_replicas\": 5,\n \"min_replicas\": 1,\n \"cooldown_period\": 60,\n \"cpu_utilization\": {\n \"target\": 0.5,\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 debian9 = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var foobarInstanceTemplate = new Gcp.Compute.InstanceTemplate(\"foobar\", new()\n {\n Name = \"my-instance-template\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = debian9.Apply(getImageResult =\u003e getImageResult.Id),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Scopes = new[]\n {\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n },\n },\n });\n\n var foobarTargetPool = new Gcp.Compute.TargetPool(\"foobar\", new()\n {\n Name = \"my-target-pool\",\n });\n\n var foobarInstanceGroupManager = new Gcp.Compute.InstanceGroupManager(\"foobar\", new()\n {\n Name = \"my-igm\",\n Zone = \"us-central1-f\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = foobarInstanceTemplate.Id,\n Name = \"primary\",\n },\n },\n TargetPools = new[]\n {\n foobarTargetPool.Id,\n },\n BaseInstanceName = \"foobar\",\n });\n\n var foobar = new Gcp.Compute.Autoscaler(\"foobar\", new()\n {\n Name = \"my-autoscaler\",\n Zone = \"us-central1-f\",\n Target = foobarInstanceGroupManager.Id,\n AutoscalingPolicy = new Gcp.Compute.Inputs.AutoscalerAutoscalingPolicyArgs\n {\n MaxReplicas = 5,\n MinReplicas = 1,\n CooldownPeriod = 60,\n CpuUtilization = new Gcp.Compute.Inputs.AutoscalerAutoscalingPolicyCpuUtilizationArgs\n {\n Target = 0.5,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdebian9, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobarInstanceTemplate, err := compute.NewInstanceTemplate(ctx, \"foobar\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"my-instance-template\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(debian9.Id),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.Map{\n\t\t\t\t\"foo\": pulumi.Any(\"bar\"),\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"userinfo-email\"),\n\t\t\t\t\tpulumi.String(\"compute-ro\"),\n\t\t\t\t\tpulumi.String(\"storage-ro\"),\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\tfoobarTargetPool, err := compute.NewTargetPool(ctx, \"foobar\", \u0026compute.TargetPoolArgs{\n\t\t\tName: pulumi.String(\"my-target-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobarInstanceGroupManager, err := compute.NewInstanceGroupManager(ctx, \"foobar\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"my-igm\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: foobarInstanceTemplate.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetPools: pulumi.StringArray{\n\t\t\t\tfoobarTargetPool.ID(),\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"foobar\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewAutoscaler(ctx, \"foobar\", \u0026compute.AutoscalerArgs{\n\t\t\tName: pulumi.String(\"my-autoscaler\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tTarget: foobarInstanceGroupManager.ID(),\n\t\t\tAutoscalingPolicy: \u0026compute.AutoscalerAutoscalingPolicyArgs{\n\t\t\t\tMaxReplicas: pulumi.Int(5),\n\t\t\t\tMinReplicas: pulumi.Int(1),\n\t\t\t\tCooldownPeriod: pulumi.Int(60),\n\t\t\t\tCpuUtilization: \u0026compute.AutoscalerAutoscalingPolicyCpuUtilizationArgs{\n\t\t\t\t\tTarget: pulumi.Float64(0.5),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport com.pulumi.gcp.compute.TargetPool;\nimport com.pulumi.gcp.compute.TargetPoolArgs;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.Autoscaler;\nimport com.pulumi.gcp.compute.AutoscalerArgs;\nimport com.pulumi.gcp.compute.inputs.AutoscalerAutoscalingPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.AutoscalerAutoscalingPolicyCpuUtilizationArgs;\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 debian9 = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var foobarInstanceTemplate = new InstanceTemplate(\"foobarInstanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"my-instance-template\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(debian9.applyValue(getImageResult -\u003e getImageResult.id()))\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .scopes( \n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\")\n .build())\n .build());\n\n var foobarTargetPool = new TargetPool(\"foobarTargetPool\", TargetPoolArgs.builder()\n .name(\"my-target-pool\")\n .build());\n\n var foobarInstanceGroupManager = new InstanceGroupManager(\"foobarInstanceGroupManager\", InstanceGroupManagerArgs.builder()\n .name(\"my-igm\")\n .zone(\"us-central1-f\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(foobarInstanceTemplate.id())\n .name(\"primary\")\n .build())\n .targetPools(foobarTargetPool.id())\n .baseInstanceName(\"foobar\")\n .build());\n\n var foobar = new Autoscaler(\"foobar\", AutoscalerArgs.builder()\n .name(\"my-autoscaler\")\n .zone(\"us-central1-f\")\n .target(foobarInstanceGroupManager.id())\n .autoscalingPolicy(AutoscalerAutoscalingPolicyArgs.builder()\n .maxReplicas(5)\n .minReplicas(1)\n .cooldownPeriod(60)\n .cpuUtilization(AutoscalerAutoscalingPolicyCpuUtilizationArgs.builder()\n .target(0.5)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:Autoscaler\n properties:\n name: my-autoscaler\n zone: us-central1-f\n target: ${foobarInstanceGroupManager.id}\n autoscalingPolicy:\n maxReplicas: 5\n minReplicas: 1\n cooldownPeriod: 60\n cpuUtilization:\n target: 0.5\n foobarInstanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: foobar\n properties:\n name: my-instance-template\n machineType: e2-medium\n canIpForward: false\n tags:\n - foo\n - bar\n disks:\n - sourceImage: ${debian9.id}\n networkInterfaces:\n - network: default\n metadata:\n foo: bar\n serviceAccount:\n scopes:\n - userinfo-email\n - compute-ro\n - storage-ro\n foobarTargetPool:\n type: gcp:compute:TargetPool\n name: foobar\n properties:\n name: my-target-pool\n foobarInstanceGroupManager:\n type: gcp:compute:InstanceGroupManager\n name: foobar\n properties:\n name: my-igm\n zone: us-central1-f\n versions:\n - instanceTemplate: ${foobarInstanceTemplate.id}\n name: primary\n targetPools:\n - ${foobarTargetPool.id}\n baseInstanceName: foobar\nvariables:\n debian9:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAutoscaler can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/autoscalers/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Autoscaler can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/autoscaler:Autoscaler default projects/{{project}}/zones/{{zone}}/autoscalers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/autoscaler:Autoscaler default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/autoscaler:Autoscaler default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/autoscaler:Autoscaler default {{name}}\n```\n\n", "properties": { "autoscalingPolicy": { "$ref": "#/types/gcp:compute/AutoscalerAutoscalingPolicy:AutoscalerAutoscalingPolicy", @@ -141558,7 +141558,7 @@ ] }, "gcp:compute/backendBucket:BackendBucket": { - "description": "Backend buckets allow you to use Google Cloud Storage buckets with HTTP(S)\nload balancing.\n\nAn HTTP(S) load balancer can direct traffic to specified URLs to a\nbackend bucket rather than a backend service. It can send requests for\nstatic content to a Cloud Storage bucket and requests for dynamic content\nto a virtual machine instance.\n\n\nTo get more information about BackendBucket, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/backendBuckets)\n* How-to Guides\n * [Using a Cloud Storage bucket as a load balancer backend](https://cloud.google.com/compute/docs/load-balancing/http/backend-bucket)\n\n## Example Usage\n\n### Backend Bucket Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst imageBucket = new gcp.storage.Bucket(\"image_bucket\", {\n name: \"image-store-bucket\",\n location: \"EU\",\n});\nconst imageBackend = new gcp.compute.BackendBucket(\"image_backend\", {\n name: \"image-backend-bucket\",\n description: \"Contains beautiful images\",\n bucketName: imageBucket.name,\n enableCdn: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimage_bucket = gcp.storage.Bucket(\"image_bucket\",\n name=\"image-store-bucket\",\n location=\"EU\")\nimage_backend = gcp.compute.BackendBucket(\"image_backend\",\n name=\"image-backend-bucket\",\n description=\"Contains beautiful images\",\n bucket_name=image_bucket.name,\n enable_cdn=True)\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 imageBucket = new Gcp.Storage.Bucket(\"image_bucket\", new()\n {\n Name = \"image-store-bucket\",\n Location = \"EU\",\n });\n\n var imageBackend = new Gcp.Compute.BackendBucket(\"image_backend\", new()\n {\n Name = \"image-backend-bucket\",\n Description = \"Contains beautiful images\",\n BucketName = imageBucket.Name,\n EnableCdn = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\timageBucket, err := storage.NewBucket(ctx, \"image_bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"image-store-bucket\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendBucket(ctx, \"image_backend\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"image-backend-bucket\"),\n\t\t\tDescription: pulumi.String(\"Contains beautiful images\"),\n\t\t\tBucketName: imageBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\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.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\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 imageBucket = new Bucket(\"imageBucket\", BucketArgs.builder()\n .name(\"image-store-bucket\")\n .location(\"EU\")\n .build());\n\n var imageBackend = new BackendBucket(\"imageBackend\", BackendBucketArgs.builder()\n .name(\"image-backend-bucket\")\n .description(\"Contains beautiful images\")\n .bucketName(imageBucket.name())\n .enableCdn(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n imageBackend:\n type: gcp:compute:BackendBucket\n name: image_backend\n properties:\n name: image-backend-bucket\n description: Contains beautiful images\n bucketName: ${imageBucket.name}\n enableCdn: true\n imageBucket:\n type: gcp:storage:Bucket\n name: image_bucket\n properties:\n name: image-store-bucket\n location: EU\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Bucket Security Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst imageBackendBucket = new gcp.storage.Bucket(\"image_backend\", {\n name: \"image-store-bucket\",\n location: \"EU\",\n});\nconst policy = new gcp.compute.SecurityPolicy(\"policy\", {\n name: \"image-store-bucket\",\n description: \"basic security policy\",\n type: \"CLOUD_ARMOR_EDGE\",\n});\nconst imageBackend = new gcp.compute.BackendBucket(\"image_backend\", {\n name: \"image-backend-bucket\",\n description: \"Contains beautiful images\",\n bucketName: imageBackendBucket.name,\n enableCdn: true,\n edgeSecurityPolicy: policy.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimage_backend_bucket = gcp.storage.Bucket(\"image_backend\",\n name=\"image-store-bucket\",\n location=\"EU\")\npolicy = gcp.compute.SecurityPolicy(\"policy\",\n name=\"image-store-bucket\",\n description=\"basic security policy\",\n type=\"CLOUD_ARMOR_EDGE\")\nimage_backend = gcp.compute.BackendBucket(\"image_backend\",\n name=\"image-backend-bucket\",\n description=\"Contains beautiful images\",\n bucket_name=image_backend_bucket.name,\n enable_cdn=True,\n edge_security_policy=policy.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 imageBackendBucket = new Gcp.Storage.Bucket(\"image_backend\", new()\n {\n Name = \"image-store-bucket\",\n Location = \"EU\",\n });\n\n var policy = new Gcp.Compute.SecurityPolicy(\"policy\", new()\n {\n Name = \"image-store-bucket\",\n Description = \"basic security policy\",\n Type = \"CLOUD_ARMOR_EDGE\",\n });\n\n var imageBackend = new Gcp.Compute.BackendBucket(\"image_backend\", new()\n {\n Name = \"image-backend-bucket\",\n Description = \"Contains beautiful images\",\n BucketName = imageBackendBucket.Name,\n EnableCdn = true,\n EdgeSecurityPolicy = policy.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\timageBackendBucket, err := storage.NewBucket(ctx, \"image_backend\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"image-store-bucket\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicy, err := compute.NewSecurityPolicy(ctx, \"policy\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"image-store-bucket\"),\n\t\t\tDescription: pulumi.String(\"basic security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR_EDGE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendBucket(ctx, \"image_backend\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"image-backend-bucket\"),\n\t\t\tDescription: pulumi.String(\"Contains beautiful images\"),\n\t\t\tBucketName: imageBackendBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tEdgeSecurityPolicy: policy.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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.compute.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\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 imageBackendBucket = new Bucket(\"imageBackendBucket\", BucketArgs.builder()\n .name(\"image-store-bucket\")\n .location(\"EU\")\n .build());\n\n var policy = new SecurityPolicy(\"policy\", SecurityPolicyArgs.builder()\n .name(\"image-store-bucket\")\n .description(\"basic security policy\")\n .type(\"CLOUD_ARMOR_EDGE\")\n .build());\n\n var imageBackend = new BackendBucket(\"imageBackend\", BackendBucketArgs.builder()\n .name(\"image-backend-bucket\")\n .description(\"Contains beautiful images\")\n .bucketName(imageBackendBucket.name())\n .enableCdn(true)\n .edgeSecurityPolicy(policy.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n imageBackend:\n type: gcp:compute:BackendBucket\n name: image_backend\n properties:\n name: image-backend-bucket\n description: Contains beautiful images\n bucketName: ${imageBackendBucket.name}\n enableCdn: true\n edgeSecurityPolicy: ${policy.id}\n imageBackendBucket:\n type: gcp:storage:Bucket\n name: image_backend\n properties:\n name: image-store-bucket\n location: EU\n policy:\n type: gcp:compute:SecurityPolicy\n properties:\n name: image-store-bucket\n description: basic security policy\n type: CLOUD_ARMOR_EDGE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Bucket Query String Whitelist\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst imageBucket = new gcp.storage.Bucket(\"image_bucket\", {\n name: \"image-backend-bucket\",\n location: \"EU\",\n});\nconst imageBackend = new gcp.compute.BackendBucket(\"image_backend\", {\n name: \"image-backend-bucket\",\n description: \"Contains beautiful images\",\n bucketName: imageBucket.name,\n enableCdn: true,\n cdnPolicy: {\n cacheKeyPolicy: {\n queryStringWhitelists: [\"image-version\"],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimage_bucket = gcp.storage.Bucket(\"image_bucket\",\n name=\"image-backend-bucket\",\n location=\"EU\")\nimage_backend = gcp.compute.BackendBucket(\"image_backend\",\n name=\"image-backend-bucket\",\n description=\"Contains beautiful images\",\n bucket_name=image_bucket.name,\n enable_cdn=True,\n cdn_policy={\n \"cacheKeyPolicy\": {\n \"queryStringWhitelists\": [\"image-version\"],\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 imageBucket = new Gcp.Storage.Bucket(\"image_bucket\", new()\n {\n Name = \"image-backend-bucket\",\n Location = \"EU\",\n });\n\n var imageBackend = new Gcp.Compute.BackendBucket(\"image_backend\", new()\n {\n Name = \"image-backend-bucket\",\n Description = \"Contains beautiful images\",\n BucketName = imageBucket.Name,\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.BackendBucketCdnPolicyArgs\n {\n CacheKeyPolicy = new Gcp.Compute.Inputs.BackendBucketCdnPolicyCacheKeyPolicyArgs\n {\n QueryStringWhitelists = new[]\n {\n \"image-version\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\timageBucket, err := storage.NewBucket(ctx, \"image_bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"image-backend-bucket\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendBucket(ctx, \"image_backend\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"image-backend-bucket\"),\n\t\t\tDescription: pulumi.String(\"Contains beautiful images\"),\n\t\t\tBucketName: imageBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.BackendBucketCdnPolicyArgs{\n\t\t\t\tCacheKeyPolicy: \u0026compute.BackendBucketCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\tQueryStringWhitelists: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"image-version\"),\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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\nimport com.pulumi.gcp.compute.inputs.BackendBucketCdnPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.BackendBucketCdnPolicyCacheKeyPolicyArgs;\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 imageBucket = new Bucket(\"imageBucket\", BucketArgs.builder()\n .name(\"image-backend-bucket\")\n .location(\"EU\")\n .build());\n\n var imageBackend = new BackendBucket(\"imageBackend\", BackendBucketArgs.builder()\n .name(\"image-backend-bucket\")\n .description(\"Contains beautiful images\")\n .bucketName(imageBucket.name())\n .enableCdn(true)\n .cdnPolicy(BackendBucketCdnPolicyArgs.builder()\n .cacheKeyPolicy(BackendBucketCdnPolicyCacheKeyPolicyArgs.builder()\n .queryStringWhitelists(\"image-version\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n imageBackend:\n type: gcp:compute:BackendBucket\n name: image_backend\n properties:\n name: image-backend-bucket\n description: Contains beautiful images\n bucketName: ${imageBucket.name}\n enableCdn: true\n cdnPolicy:\n cacheKeyPolicy:\n queryStringWhitelists:\n - image-version\n imageBucket:\n type: gcp:storage:Bucket\n name: image_bucket\n properties:\n name: image-backend-bucket\n location: EU\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Bucket Include Http Headers\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst imageBucket = new gcp.storage.Bucket(\"image_bucket\", {\n name: \"image-backend-bucket\",\n location: \"EU\",\n});\nconst imageBackend = new gcp.compute.BackendBucket(\"image_backend\", {\n name: \"image-backend-bucket\",\n description: \"Contains beautiful images\",\n bucketName: imageBucket.name,\n enableCdn: true,\n cdnPolicy: {\n cacheKeyPolicy: {\n includeHttpHeaders: [\"X-My-Header-Field\"],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimage_bucket = gcp.storage.Bucket(\"image_bucket\",\n name=\"image-backend-bucket\",\n location=\"EU\")\nimage_backend = gcp.compute.BackendBucket(\"image_backend\",\n name=\"image-backend-bucket\",\n description=\"Contains beautiful images\",\n bucket_name=image_bucket.name,\n enable_cdn=True,\n cdn_policy={\n \"cacheKeyPolicy\": {\n \"includeHttpHeaders\": [\"X-My-Header-Field\"],\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 imageBucket = new Gcp.Storage.Bucket(\"image_bucket\", new()\n {\n Name = \"image-backend-bucket\",\n Location = \"EU\",\n });\n\n var imageBackend = new Gcp.Compute.BackendBucket(\"image_backend\", new()\n {\n Name = \"image-backend-bucket\",\n Description = \"Contains beautiful images\",\n BucketName = imageBucket.Name,\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.BackendBucketCdnPolicyArgs\n {\n CacheKeyPolicy = new Gcp.Compute.Inputs.BackendBucketCdnPolicyCacheKeyPolicyArgs\n {\n IncludeHttpHeaders = new[]\n {\n \"X-My-Header-Field\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\timageBucket, err := storage.NewBucket(ctx, \"image_bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"image-backend-bucket\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendBucket(ctx, \"image_backend\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"image-backend-bucket\"),\n\t\t\tDescription: pulumi.String(\"Contains beautiful images\"),\n\t\t\tBucketName: imageBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.BackendBucketCdnPolicyArgs{\n\t\t\t\tCacheKeyPolicy: \u0026compute.BackendBucketCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\tIncludeHttpHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"X-My-Header-Field\"),\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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\nimport com.pulumi.gcp.compute.inputs.BackendBucketCdnPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.BackendBucketCdnPolicyCacheKeyPolicyArgs;\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 imageBucket = new Bucket(\"imageBucket\", BucketArgs.builder()\n .name(\"image-backend-bucket\")\n .location(\"EU\")\n .build());\n\n var imageBackend = new BackendBucket(\"imageBackend\", BackendBucketArgs.builder()\n .name(\"image-backend-bucket\")\n .description(\"Contains beautiful images\")\n .bucketName(imageBucket.name())\n .enableCdn(true)\n .cdnPolicy(BackendBucketCdnPolicyArgs.builder()\n .cacheKeyPolicy(BackendBucketCdnPolicyCacheKeyPolicyArgs.builder()\n .includeHttpHeaders(\"X-My-Header-Field\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n imageBackend:\n type: gcp:compute:BackendBucket\n name: image_backend\n properties:\n name: image-backend-bucket\n description: Contains beautiful images\n bucketName: ${imageBucket.name}\n enableCdn: true\n cdnPolicy:\n cacheKeyPolicy:\n includeHttpHeaders:\n - X-My-Header-Field\n imageBucket:\n type: gcp:storage:Bucket\n name: image_bucket\n properties:\n name: image-backend-bucket\n location: EU\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackendBucket can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/backendBuckets/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, BackendBucket can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/backendBucket:BackendBucket default projects/{{project}}/global/backendBuckets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/backendBucket:BackendBucket default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/backendBucket:BackendBucket default {{name}}\n```\n\n", + "description": "Backend buckets allow you to use Google Cloud Storage buckets with HTTP(S)\nload balancing.\n\nAn HTTP(S) load balancer can direct traffic to specified URLs to a\nbackend bucket rather than a backend service. It can send requests for\nstatic content to a Cloud Storage bucket and requests for dynamic content\nto a virtual machine instance.\n\n\nTo get more information about BackendBucket, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/backendBuckets)\n* How-to Guides\n * [Using a Cloud Storage bucket as a load balancer backend](https://cloud.google.com/compute/docs/load-balancing/http/backend-bucket)\n\n## Example Usage\n\n### Backend Bucket Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst imageBucket = new gcp.storage.Bucket(\"image_bucket\", {\n name: \"image-store-bucket\",\n location: \"EU\",\n});\nconst imageBackend = new gcp.compute.BackendBucket(\"image_backend\", {\n name: \"image-backend-bucket\",\n description: \"Contains beautiful images\",\n bucketName: imageBucket.name,\n enableCdn: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimage_bucket = gcp.storage.Bucket(\"image_bucket\",\n name=\"image-store-bucket\",\n location=\"EU\")\nimage_backend = gcp.compute.BackendBucket(\"image_backend\",\n name=\"image-backend-bucket\",\n description=\"Contains beautiful images\",\n bucket_name=image_bucket.name,\n enable_cdn=True)\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 imageBucket = new Gcp.Storage.Bucket(\"image_bucket\", new()\n {\n Name = \"image-store-bucket\",\n Location = \"EU\",\n });\n\n var imageBackend = new Gcp.Compute.BackendBucket(\"image_backend\", new()\n {\n Name = \"image-backend-bucket\",\n Description = \"Contains beautiful images\",\n BucketName = imageBucket.Name,\n EnableCdn = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\timageBucket, err := storage.NewBucket(ctx, \"image_bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"image-store-bucket\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendBucket(ctx, \"image_backend\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"image-backend-bucket\"),\n\t\t\tDescription: pulumi.String(\"Contains beautiful images\"),\n\t\t\tBucketName: imageBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\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.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\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 imageBucket = new Bucket(\"imageBucket\", BucketArgs.builder()\n .name(\"image-store-bucket\")\n .location(\"EU\")\n .build());\n\n var imageBackend = new BackendBucket(\"imageBackend\", BackendBucketArgs.builder()\n .name(\"image-backend-bucket\")\n .description(\"Contains beautiful images\")\n .bucketName(imageBucket.name())\n .enableCdn(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n imageBackend:\n type: gcp:compute:BackendBucket\n name: image_backend\n properties:\n name: image-backend-bucket\n description: Contains beautiful images\n bucketName: ${imageBucket.name}\n enableCdn: true\n imageBucket:\n type: gcp:storage:Bucket\n name: image_bucket\n properties:\n name: image-store-bucket\n location: EU\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Bucket Security Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst imageBackendBucket = new gcp.storage.Bucket(\"image_backend\", {\n name: \"image-store-bucket\",\n location: \"EU\",\n});\nconst policy = new gcp.compute.SecurityPolicy(\"policy\", {\n name: \"image-store-bucket\",\n description: \"basic security policy\",\n type: \"CLOUD_ARMOR_EDGE\",\n});\nconst imageBackend = new gcp.compute.BackendBucket(\"image_backend\", {\n name: \"image-backend-bucket\",\n description: \"Contains beautiful images\",\n bucketName: imageBackendBucket.name,\n enableCdn: true,\n edgeSecurityPolicy: policy.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimage_backend_bucket = gcp.storage.Bucket(\"image_backend\",\n name=\"image-store-bucket\",\n location=\"EU\")\npolicy = gcp.compute.SecurityPolicy(\"policy\",\n name=\"image-store-bucket\",\n description=\"basic security policy\",\n type=\"CLOUD_ARMOR_EDGE\")\nimage_backend = gcp.compute.BackendBucket(\"image_backend\",\n name=\"image-backend-bucket\",\n description=\"Contains beautiful images\",\n bucket_name=image_backend_bucket.name,\n enable_cdn=True,\n edge_security_policy=policy.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 imageBackendBucket = new Gcp.Storage.Bucket(\"image_backend\", new()\n {\n Name = \"image-store-bucket\",\n Location = \"EU\",\n });\n\n var policy = new Gcp.Compute.SecurityPolicy(\"policy\", new()\n {\n Name = \"image-store-bucket\",\n Description = \"basic security policy\",\n Type = \"CLOUD_ARMOR_EDGE\",\n });\n\n var imageBackend = new Gcp.Compute.BackendBucket(\"image_backend\", new()\n {\n Name = \"image-backend-bucket\",\n Description = \"Contains beautiful images\",\n BucketName = imageBackendBucket.Name,\n EnableCdn = true,\n EdgeSecurityPolicy = policy.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\timageBackendBucket, err := storage.NewBucket(ctx, \"image_backend\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"image-store-bucket\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicy, err := compute.NewSecurityPolicy(ctx, \"policy\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"image-store-bucket\"),\n\t\t\tDescription: pulumi.String(\"basic security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR_EDGE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendBucket(ctx, \"image_backend\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"image-backend-bucket\"),\n\t\t\tDescription: pulumi.String(\"Contains beautiful images\"),\n\t\t\tBucketName: imageBackendBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tEdgeSecurityPolicy: policy.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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.compute.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\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 imageBackendBucket = new Bucket(\"imageBackendBucket\", BucketArgs.builder()\n .name(\"image-store-bucket\")\n .location(\"EU\")\n .build());\n\n var policy = new SecurityPolicy(\"policy\", SecurityPolicyArgs.builder()\n .name(\"image-store-bucket\")\n .description(\"basic security policy\")\n .type(\"CLOUD_ARMOR_EDGE\")\n .build());\n\n var imageBackend = new BackendBucket(\"imageBackend\", BackendBucketArgs.builder()\n .name(\"image-backend-bucket\")\n .description(\"Contains beautiful images\")\n .bucketName(imageBackendBucket.name())\n .enableCdn(true)\n .edgeSecurityPolicy(policy.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n imageBackend:\n type: gcp:compute:BackendBucket\n name: image_backend\n properties:\n name: image-backend-bucket\n description: Contains beautiful images\n bucketName: ${imageBackendBucket.name}\n enableCdn: true\n edgeSecurityPolicy: ${policy.id}\n imageBackendBucket:\n type: gcp:storage:Bucket\n name: image_backend\n properties:\n name: image-store-bucket\n location: EU\n policy:\n type: gcp:compute:SecurityPolicy\n properties:\n name: image-store-bucket\n description: basic security policy\n type: CLOUD_ARMOR_EDGE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Bucket Query String Whitelist\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst imageBucket = new gcp.storage.Bucket(\"image_bucket\", {\n name: \"image-backend-bucket\",\n location: \"EU\",\n});\nconst imageBackend = new gcp.compute.BackendBucket(\"image_backend\", {\n name: \"image-backend-bucket\",\n description: \"Contains beautiful images\",\n bucketName: imageBucket.name,\n enableCdn: true,\n cdnPolicy: {\n cacheKeyPolicy: {\n queryStringWhitelists: [\"image-version\"],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimage_bucket = gcp.storage.Bucket(\"image_bucket\",\n name=\"image-backend-bucket\",\n location=\"EU\")\nimage_backend = gcp.compute.BackendBucket(\"image_backend\",\n name=\"image-backend-bucket\",\n description=\"Contains beautiful images\",\n bucket_name=image_bucket.name,\n enable_cdn=True,\n cdn_policy={\n \"cache_key_policy\": {\n \"query_string_whitelists\": [\"image-version\"],\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 imageBucket = new Gcp.Storage.Bucket(\"image_bucket\", new()\n {\n Name = \"image-backend-bucket\",\n Location = \"EU\",\n });\n\n var imageBackend = new Gcp.Compute.BackendBucket(\"image_backend\", new()\n {\n Name = \"image-backend-bucket\",\n Description = \"Contains beautiful images\",\n BucketName = imageBucket.Name,\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.BackendBucketCdnPolicyArgs\n {\n CacheKeyPolicy = new Gcp.Compute.Inputs.BackendBucketCdnPolicyCacheKeyPolicyArgs\n {\n QueryStringWhitelists = new[]\n {\n \"image-version\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\timageBucket, err := storage.NewBucket(ctx, \"image_bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"image-backend-bucket\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendBucket(ctx, \"image_backend\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"image-backend-bucket\"),\n\t\t\tDescription: pulumi.String(\"Contains beautiful images\"),\n\t\t\tBucketName: imageBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.BackendBucketCdnPolicyArgs{\n\t\t\t\tCacheKeyPolicy: \u0026compute.BackendBucketCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\tQueryStringWhitelists: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"image-version\"),\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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\nimport com.pulumi.gcp.compute.inputs.BackendBucketCdnPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.BackendBucketCdnPolicyCacheKeyPolicyArgs;\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 imageBucket = new Bucket(\"imageBucket\", BucketArgs.builder()\n .name(\"image-backend-bucket\")\n .location(\"EU\")\n .build());\n\n var imageBackend = new BackendBucket(\"imageBackend\", BackendBucketArgs.builder()\n .name(\"image-backend-bucket\")\n .description(\"Contains beautiful images\")\n .bucketName(imageBucket.name())\n .enableCdn(true)\n .cdnPolicy(BackendBucketCdnPolicyArgs.builder()\n .cacheKeyPolicy(BackendBucketCdnPolicyCacheKeyPolicyArgs.builder()\n .queryStringWhitelists(\"image-version\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n imageBackend:\n type: gcp:compute:BackendBucket\n name: image_backend\n properties:\n name: image-backend-bucket\n description: Contains beautiful images\n bucketName: ${imageBucket.name}\n enableCdn: true\n cdnPolicy:\n cacheKeyPolicy:\n queryStringWhitelists:\n - image-version\n imageBucket:\n type: gcp:storage:Bucket\n name: image_bucket\n properties:\n name: image-backend-bucket\n location: EU\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Bucket Include Http Headers\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst imageBucket = new gcp.storage.Bucket(\"image_bucket\", {\n name: \"image-backend-bucket\",\n location: \"EU\",\n});\nconst imageBackend = new gcp.compute.BackendBucket(\"image_backend\", {\n name: \"image-backend-bucket\",\n description: \"Contains beautiful images\",\n bucketName: imageBucket.name,\n enableCdn: true,\n cdnPolicy: {\n cacheKeyPolicy: {\n includeHttpHeaders: [\"X-My-Header-Field\"],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimage_bucket = gcp.storage.Bucket(\"image_bucket\",\n name=\"image-backend-bucket\",\n location=\"EU\")\nimage_backend = gcp.compute.BackendBucket(\"image_backend\",\n name=\"image-backend-bucket\",\n description=\"Contains beautiful images\",\n bucket_name=image_bucket.name,\n enable_cdn=True,\n cdn_policy={\n \"cache_key_policy\": {\n \"include_http_headers\": [\"X-My-Header-Field\"],\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 imageBucket = new Gcp.Storage.Bucket(\"image_bucket\", new()\n {\n Name = \"image-backend-bucket\",\n Location = \"EU\",\n });\n\n var imageBackend = new Gcp.Compute.BackendBucket(\"image_backend\", new()\n {\n Name = \"image-backend-bucket\",\n Description = \"Contains beautiful images\",\n BucketName = imageBucket.Name,\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.BackendBucketCdnPolicyArgs\n {\n CacheKeyPolicy = new Gcp.Compute.Inputs.BackendBucketCdnPolicyCacheKeyPolicyArgs\n {\n IncludeHttpHeaders = new[]\n {\n \"X-My-Header-Field\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\timageBucket, err := storage.NewBucket(ctx, \"image_bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"image-backend-bucket\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendBucket(ctx, \"image_backend\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"image-backend-bucket\"),\n\t\t\tDescription: pulumi.String(\"Contains beautiful images\"),\n\t\t\tBucketName: imageBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.BackendBucketCdnPolicyArgs{\n\t\t\t\tCacheKeyPolicy: \u0026compute.BackendBucketCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\tIncludeHttpHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"X-My-Header-Field\"),\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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\nimport com.pulumi.gcp.compute.inputs.BackendBucketCdnPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.BackendBucketCdnPolicyCacheKeyPolicyArgs;\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 imageBucket = new Bucket(\"imageBucket\", BucketArgs.builder()\n .name(\"image-backend-bucket\")\n .location(\"EU\")\n .build());\n\n var imageBackend = new BackendBucket(\"imageBackend\", BackendBucketArgs.builder()\n .name(\"image-backend-bucket\")\n .description(\"Contains beautiful images\")\n .bucketName(imageBucket.name())\n .enableCdn(true)\n .cdnPolicy(BackendBucketCdnPolicyArgs.builder()\n .cacheKeyPolicy(BackendBucketCdnPolicyCacheKeyPolicyArgs.builder()\n .includeHttpHeaders(\"X-My-Header-Field\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n imageBackend:\n type: gcp:compute:BackendBucket\n name: image_backend\n properties:\n name: image-backend-bucket\n description: Contains beautiful images\n bucketName: ${imageBucket.name}\n enableCdn: true\n cdnPolicy:\n cacheKeyPolicy:\n includeHttpHeaders:\n - X-My-Header-Field\n imageBucket:\n type: gcp:storage:Bucket\n name: image_bucket\n properties:\n name: image-backend-bucket\n location: EU\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackendBucket can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/backendBuckets/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, BackendBucket can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/backendBucket:BackendBucket default projects/{{project}}/global/backendBuckets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/backendBucket:BackendBucket default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/backendBucket:BackendBucket default {{name}}\n```\n\n", "properties": { "bucketName": { "type": "string", @@ -142076,7 +142076,7 @@ } }, "gcp:compute/backendService:BackendService": { - "description": "A Backend Service defines a group of virtual machines that will serve\ntraffic for load balancing. This resource is a global backend service,\nappropriate for external load balancing or self-managed internal load balancing.\nFor managed internal load balancing, use a regional backend service instead.\n\nCurrently self-managed internal load balancing is only available in beta.\n\n\nTo get more information about BackendService, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/backendServices)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/load-balancing/http/backend-service)\n\n\n\n## Example Usage\n\n### Backend Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n health_checks=default_http_health_check.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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service External Iap\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"tf-test-backend-service-external\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"EXTERNAL\",\n iap: {\n oauth2ClientId: \"abc\",\n oauth2ClientSecret: \"xyz\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.BackendService(\"default\",\n name=\"tf-test-backend-service-external\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"EXTERNAL\",\n iap={\n \"oauth2ClientId\": \"abc\",\n \"oauth2ClientSecret\": \"xyz\",\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 @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"tf-test-backend-service-external\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"EXTERNAL\",\n Iap = new Gcp.Compute.Inputs.BackendServiceIapArgs\n {\n Oauth2ClientId = \"abc\",\n Oauth2ClientSecret = \"xyz\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"tf-test-backend-service-external\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL\"),\n\t\t\tIap: \u0026compute.BackendServiceIapArgs{\n\t\t\t\tOauth2ClientId: pulumi.String(\"abc\"),\n\t\t\t\tOauth2ClientSecret: pulumi.String(\"xyz\"),\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.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceIapArgs;\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 BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"tf-test-backend-service-external\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"EXTERNAL\")\n .iap(BackendServiceIapArgs.builder()\n .oauth2ClientId(\"abc\")\n .oauth2ClientSecret(\"xyz\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: tf-test-backend-service-external\n protocol: HTTP\n loadBalancingScheme: EXTERNAL\n iap:\n oauth2ClientId: abc\n oauth2ClientSecret: xyz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service Cache Simple\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n enableCdn: true,\n cdnPolicy: {\n signedUrlCacheMaxAgeSec: 7200,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n health_checks=default_http_health_check.id,\n enable_cdn=True,\n cdn_policy={\n \"signedUrlCacheMaxAgeSec\": 7200,\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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyArgs\n {\n SignedUrlCacheMaxAgeSec = 7200,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.BackendServiceCdnPolicyArgs{\n\t\t\t\tSignedUrlCacheMaxAgeSec: pulumi.Int(7200),\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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceCdnPolicyArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .enableCdn(true)\n .cdnPolicy(BackendServiceCdnPolicyArgs.builder()\n .signedUrlCacheMaxAgeSec(7200)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n enableCdn: true\n cdnPolicy:\n signedUrlCacheMaxAgeSec: 7200\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service Cache Include Http Headers\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n enableCdn: true,\n cdnPolicy: {\n cacheMode: \"USE_ORIGIN_HEADERS\",\n cacheKeyPolicy: {\n includeHost: true,\n includeProtocol: true,\n includeQueryString: true,\n includeHttpHeaders: [\"X-My-Header-Field\"],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n enable_cdn=True,\n cdn_policy={\n \"cacheMode\": \"USE_ORIGIN_HEADERS\",\n \"cacheKeyPolicy\": {\n \"includeHost\": True,\n \"includeProtocol\": True,\n \"includeQueryString\": True,\n \"includeHttpHeaders\": [\"X-My-Header-Field\"],\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 @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyArgs\n {\n CacheMode = \"USE_ORIGIN_HEADERS\",\n CacheKeyPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyCacheKeyPolicyArgs\n {\n IncludeHost = true,\n IncludeProtocol = true,\n IncludeQueryString = true,\n IncludeHttpHeaders = new[]\n {\n \"X-My-Header-Field\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.BackendServiceCdnPolicyArgs{\n\t\t\t\tCacheMode: pulumi.String(\"USE_ORIGIN_HEADERS\"),\n\t\t\t\tCacheKeyPolicy: \u0026compute.BackendServiceCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\tIncludeHost: pulumi.Bool(true),\n\t\t\t\t\tIncludeProtocol: pulumi.Bool(true),\n\t\t\t\t\tIncludeQueryString: pulumi.Bool(true),\n\t\t\t\t\tIncludeHttpHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"X-My-Header-Field\"),\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.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceCdnPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceCdnPolicyCacheKeyPolicyArgs;\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 BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .enableCdn(true)\n .cdnPolicy(BackendServiceCdnPolicyArgs.builder()\n .cacheMode(\"USE_ORIGIN_HEADERS\")\n .cacheKeyPolicy(BackendServiceCdnPolicyCacheKeyPolicyArgs.builder()\n .includeHost(true)\n .includeProtocol(true)\n .includeQueryString(true)\n .includeHttpHeaders(\"X-My-Header-Field\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n enableCdn: true\n cdnPolicy:\n cacheMode: USE_ORIGIN_HEADERS\n cacheKeyPolicy:\n includeHost: true\n includeProtocol: true\n includeQueryString: true\n includeHttpHeaders:\n - X-My-Header-Field\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service Cache Include Named Cookies\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n enableCdn: true,\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: 3600,\n clientTtl: 7200,\n maxTtl: 10800,\n cacheKeyPolicy: {\n includeHost: true,\n includeProtocol: true,\n includeQueryString: true,\n includeNamedCookies: [\n \"__next_preview_data\",\n \"__prerender_bypass\",\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n enable_cdn=True,\n cdn_policy={\n \"cacheMode\": \"CACHE_ALL_STATIC\",\n \"defaultTtl\": 3600,\n \"clientTtl\": 7200,\n \"maxTtl\": 10800,\n \"cacheKeyPolicy\": {\n \"includeHost\": True,\n \"includeProtocol\": True,\n \"includeQueryString\": True,\n \"includeNamedCookies\": [\n \"__next_preview_data\",\n \"__prerender_bypass\",\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 @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = 3600,\n ClientTtl = 7200,\n MaxTtl = 10800,\n CacheKeyPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyCacheKeyPolicyArgs\n {\n IncludeHost = true,\n IncludeProtocol = true,\n IncludeQueryString = true,\n IncludeNamedCookies = new[]\n {\n \"__next_preview_data\",\n \"__prerender_bypass\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.BackendServiceCdnPolicyArgs{\n\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\tDefaultTtl: pulumi.Int(3600),\n\t\t\t\tClientTtl: pulumi.Int(7200),\n\t\t\t\tMaxTtl: pulumi.Int(10800),\n\t\t\t\tCacheKeyPolicy: \u0026compute.BackendServiceCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\tIncludeHost: pulumi.Bool(true),\n\t\t\t\t\tIncludeProtocol: pulumi.Bool(true),\n\t\t\t\t\tIncludeQueryString: pulumi.Bool(true),\n\t\t\t\t\tIncludeNamedCookies: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"__next_preview_data\"),\n\t\t\t\t\t\tpulumi.String(\"__prerender_bypass\"),\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.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceCdnPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceCdnPolicyCacheKeyPolicyArgs;\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 BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .enableCdn(true)\n .cdnPolicy(BackendServiceCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(3600)\n .clientTtl(7200)\n .maxTtl(10800)\n .cacheKeyPolicy(BackendServiceCdnPolicyCacheKeyPolicyArgs.builder()\n .includeHost(true)\n .includeProtocol(true)\n .includeQueryString(true)\n .includeNamedCookies( \n \"__next_preview_data\",\n \"__prerender_bypass\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n enableCdn: true\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600\n clientTtl: 7200\n maxTtl: 10800\n cacheKeyPolicy:\n includeHost: true\n includeProtocol: true\n includeQueryString: true\n includeNamedCookies:\n - __next_preview_data\n - __prerender_bypass\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service Cache\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n enableCdn: true,\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: 3600,\n clientTtl: 7200,\n maxTtl: 10800,\n negativeCaching: true,\n signedUrlCacheMaxAgeSec: 7200,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n health_checks=default_http_health_check.id,\n enable_cdn=True,\n cdn_policy={\n \"cacheMode\": \"CACHE_ALL_STATIC\",\n \"defaultTtl\": 3600,\n \"clientTtl\": 7200,\n \"maxTtl\": 10800,\n \"negativeCaching\": True,\n \"signedUrlCacheMaxAgeSec\": 7200,\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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = 3600,\n ClientTtl = 7200,\n MaxTtl = 10800,\n NegativeCaching = true,\n SignedUrlCacheMaxAgeSec = 7200,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.BackendServiceCdnPolicyArgs{\n\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\tDefaultTtl: pulumi.Int(3600),\n\t\t\t\tClientTtl: pulumi.Int(7200),\n\t\t\t\tMaxTtl: pulumi.Int(10800),\n\t\t\t\tNegativeCaching: pulumi.Bool(true),\n\t\t\t\tSignedUrlCacheMaxAgeSec: pulumi.Int(7200),\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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceCdnPolicyArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .enableCdn(true)\n .cdnPolicy(BackendServiceCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(3600)\n .clientTtl(7200)\n .maxTtl(10800)\n .negativeCaching(true)\n .signedUrlCacheMaxAgeSec(7200)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n enableCdn: true\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600\n clientTtl: 7200\n maxTtl: 10800\n negativeCaching: true\n signedUrlCacheMaxAgeSec: 7200\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service Cache Bypass Cache On Request Headers\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n enableCdn: true,\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: 3600,\n clientTtl: 7200,\n maxTtl: 10800,\n negativeCaching: true,\n signedUrlCacheMaxAgeSec: 7200,\n bypassCacheOnRequestHeaders: [\n {\n headerName: \"Authorization\",\n },\n {\n headerName: \"Proxy-Authorization\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n health_checks=default_http_health_check.id,\n enable_cdn=True,\n cdn_policy={\n \"cacheMode\": \"CACHE_ALL_STATIC\",\n \"defaultTtl\": 3600,\n \"clientTtl\": 7200,\n \"maxTtl\": 10800,\n \"negativeCaching\": True,\n \"signedUrlCacheMaxAgeSec\": 7200,\n \"bypassCacheOnRequestHeaders\": [\n {\n \"headerName\": \"Authorization\",\n },\n {\n \"headerName\": \"Proxy-Authorization\",\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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = 3600,\n ClientTtl = 7200,\n MaxTtl = 10800,\n NegativeCaching = true,\n SignedUrlCacheMaxAgeSec = 7200,\n BypassCacheOnRequestHeaders = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceCdnPolicyBypassCacheOnRequestHeaderArgs\n {\n HeaderName = \"Authorization\",\n },\n new Gcp.Compute.Inputs.BackendServiceCdnPolicyBypassCacheOnRequestHeaderArgs\n {\n HeaderName = \"Proxy-Authorization\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.BackendServiceCdnPolicyArgs{\n\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\tDefaultTtl: pulumi.Int(3600),\n\t\t\t\tClientTtl: pulumi.Int(7200),\n\t\t\t\tMaxTtl: pulumi.Int(10800),\n\t\t\t\tNegativeCaching: pulumi.Bool(true),\n\t\t\t\tSignedUrlCacheMaxAgeSec: pulumi.Int(7200),\n\t\t\t\tBypassCacheOnRequestHeaders: compute.BackendServiceCdnPolicyBypassCacheOnRequestHeaderArray{\n\t\t\t\t\t\u0026compute.BackendServiceCdnPolicyBypassCacheOnRequestHeaderArgs{\n\t\t\t\t\t\tHeaderName: pulumi.String(\"Authorization\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026compute.BackendServiceCdnPolicyBypassCacheOnRequestHeaderArgs{\n\t\t\t\t\t\tHeaderName: pulumi.String(\"Proxy-Authorization\"),\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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceCdnPolicyArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .enableCdn(true)\n .cdnPolicy(BackendServiceCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(3600)\n .clientTtl(7200)\n .maxTtl(10800)\n .negativeCaching(true)\n .signedUrlCacheMaxAgeSec(7200)\n .bypassCacheOnRequestHeaders( \n BackendServiceCdnPolicyBypassCacheOnRequestHeaderArgs.builder()\n .headerName(\"Authorization\")\n .build(),\n BackendServiceCdnPolicyBypassCacheOnRequestHeaderArgs.builder()\n .headerName(\"Proxy-Authorization\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n enableCdn: true\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600\n clientTtl: 7200\n maxTtl: 10800\n negativeCaching: true\n signedUrlCacheMaxAgeSec: 7200\n bypassCacheOnRequestHeaders:\n - headerName: Authorization\n - headerName: Proxy-Authorization\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service Traffic Director Round Robin\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.HealthCheck(\"health_check\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n healthChecks: healthCheck.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n localityLbPolicy: \"ROUND_ROBIN\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.HealthCheck(\"health_check\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n health_checks=health_check.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n locality_lb_policy=\"ROUND_ROBIN\")\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 healthCheck = new Gcp.Compute.HealthCheck(\"health_check\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n HealthChecks = healthCheck.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n LocalityLbPolicy = \"ROUND_ROBIN\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thealthCheck, err := compute.NewHealthCheck(ctx, \"health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tHealthChecks: healthCheck.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tLocalityLbPolicy: pulumi.String(\"ROUND_ROBIN\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\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 HealthCheck(\"healthCheck\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .healthChecks(healthCheck.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .localityLbPolicy(\"ROUND_ROBIN\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n healthChecks: ${healthCheck.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n localityLbPolicy: ROUND_ROBIN\n healthCheck:\n type: gcp:compute:HealthCheck\n name: health_check\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service Traffic Director Ring Hash\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.HealthCheck(\"health_check\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n healthChecks: healthCheck.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n localityLbPolicy: \"RING_HASH\",\n sessionAffinity: \"HTTP_COOKIE\",\n circuitBreakers: {\n maxConnections: 10,\n },\n consistentHash: {\n httpCookie: {\n ttl: {\n seconds: 11,\n nanos: 1111,\n },\n name: \"mycookie\",\n },\n },\n outlierDetection: {\n consecutiveErrors: 2,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.HealthCheck(\"health_check\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n health_checks=health_check.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n locality_lb_policy=\"RING_HASH\",\n session_affinity=\"HTTP_COOKIE\",\n circuit_breakers={\n \"maxConnections\": 10,\n },\n consistent_hash={\n \"httpCookie\": {\n \"ttl\": {\n \"seconds\": 11,\n \"nanos\": 1111,\n },\n \"name\": \"mycookie\",\n },\n },\n outlier_detection={\n \"consecutiveErrors\": 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 healthCheck = new Gcp.Compute.HealthCheck(\"health_check\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n HealthChecks = healthCheck.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n LocalityLbPolicy = \"RING_HASH\",\n SessionAffinity = \"HTTP_COOKIE\",\n CircuitBreakers = new Gcp.Compute.Inputs.BackendServiceCircuitBreakersArgs\n {\n MaxConnections = 10,\n },\n ConsistentHash = new Gcp.Compute.Inputs.BackendServiceConsistentHashArgs\n {\n HttpCookie = new Gcp.Compute.Inputs.BackendServiceConsistentHashHttpCookieArgs\n {\n Ttl = new Gcp.Compute.Inputs.BackendServiceConsistentHashHttpCookieTtlArgs\n {\n Seconds = 11,\n Nanos = 1111,\n },\n Name = \"mycookie\",\n },\n },\n OutlierDetection = new Gcp.Compute.Inputs.BackendServiceOutlierDetectionArgs\n {\n ConsecutiveErrors = 2,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thealthCheck, err := compute.NewHealthCheck(ctx, \"health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tHealthChecks: healthCheck.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tLocalityLbPolicy: pulumi.String(\"RING_HASH\"),\n\t\t\tSessionAffinity: pulumi.String(\"HTTP_COOKIE\"),\n\t\t\tCircuitBreakers: \u0026compute.BackendServiceCircuitBreakersArgs{\n\t\t\t\tMaxConnections: pulumi.Int(10),\n\t\t\t},\n\t\t\tConsistentHash: \u0026compute.BackendServiceConsistentHashArgs{\n\t\t\t\tHttpCookie: \u0026compute.BackendServiceConsistentHashHttpCookieArgs{\n\t\t\t\t\tTtl: \u0026compute.BackendServiceConsistentHashHttpCookieTtlArgs{\n\t\t\t\t\t\tSeconds: pulumi.Int(11),\n\t\t\t\t\t\tNanos: pulumi.Int(1111),\n\t\t\t\t\t},\n\t\t\t\t\tName: pulumi.String(\"mycookie\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOutlierDetection: \u0026compute.BackendServiceOutlierDetectionArgs{\n\t\t\t\tConsecutiveErrors: pulumi.Int(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.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceCircuitBreakersArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceConsistentHashArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceConsistentHashHttpCookieArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceConsistentHashHttpCookieTtlArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceOutlierDetectionArgs;\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 HealthCheck(\"healthCheck\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .healthChecks(healthCheck.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .localityLbPolicy(\"RING_HASH\")\n .sessionAffinity(\"HTTP_COOKIE\")\n .circuitBreakers(BackendServiceCircuitBreakersArgs.builder()\n .maxConnections(10)\n .build())\n .consistentHash(BackendServiceConsistentHashArgs.builder()\n .httpCookie(BackendServiceConsistentHashHttpCookieArgs.builder()\n .ttl(BackendServiceConsistentHashHttpCookieTtlArgs.builder()\n .seconds(11)\n .nanos(1111)\n .build())\n .name(\"mycookie\")\n .build())\n .build())\n .outlierDetection(BackendServiceOutlierDetectionArgs.builder()\n .consecutiveErrors(2)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n healthChecks: ${healthCheck.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n localityLbPolicy: RING_HASH\n sessionAffinity: HTTP_COOKIE\n circuitBreakers:\n maxConnections: 10\n consistentHash:\n httpCookie:\n ttl:\n seconds: 11\n nanos: 1111\n name: mycookie\n outlierDetection:\n consecutiveErrors: 2\n healthCheck:\n type: gcp:compute:HealthCheck\n name: health_check\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service Network Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst externalProxy = new gcp.compute.GlobalNetworkEndpointGroup(\"external_proxy\", {\n name: \"network-endpoint\",\n networkEndpointType: \"INTERNET_FQDN_PORT\",\n defaultPort: 443,\n});\nconst proxy = new gcp.compute.GlobalNetworkEndpoint(\"proxy\", {\n globalNetworkEndpointGroup: externalProxy.id,\n fqdn: \"test.example.com\",\n port: externalProxy.defaultPort,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n enableCdn: true,\n timeoutSec: 10,\n connectionDrainingTimeoutSec: 10,\n customRequestHeaders: [proxy.fqdn.apply(fqdn =\u003e `host: ${fqdn}`)],\n customResponseHeaders: [\"X-Cache-Hit: {cdn_cache_status}\"],\n backends: [{\n group: externalProxy.id,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexternal_proxy = gcp.compute.GlobalNetworkEndpointGroup(\"external_proxy\",\n name=\"network-endpoint\",\n network_endpoint_type=\"INTERNET_FQDN_PORT\",\n default_port=443)\nproxy = gcp.compute.GlobalNetworkEndpoint(\"proxy\",\n global_network_endpoint_group=external_proxy.id,\n fqdn=\"test.example.com\",\n port=external_proxy.default_port)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n enable_cdn=True,\n timeout_sec=10,\n connection_draining_timeout_sec=10,\n custom_request_headers=[proxy.fqdn.apply(lambda fqdn: f\"host: {fqdn}\")],\n custom_response_headers=[\"X-Cache-Hit: {cdn_cache_status}\"],\n backends=[{\n \"group\": external_proxy.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 externalProxy = new Gcp.Compute.GlobalNetworkEndpointGroup(\"external_proxy\", new()\n {\n Name = \"network-endpoint\",\n NetworkEndpointType = \"INTERNET_FQDN_PORT\",\n DefaultPort = 443,\n });\n\n var proxy = new Gcp.Compute.GlobalNetworkEndpoint(\"proxy\", new()\n {\n GlobalNetworkEndpointGroup = externalProxy.Id,\n Fqdn = \"test.example.com\",\n Port = externalProxy.DefaultPort,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n EnableCdn = true,\n TimeoutSec = 10,\n ConnectionDrainingTimeoutSec = 10,\n CustomRequestHeaders = new[]\n {\n proxy.Fqdn.Apply(fqdn =\u003e $\"host: {fqdn}\"),\n },\n CustomResponseHeaders = new[]\n {\n \"X-Cache-Hit: {cdn_cache_status}\",\n },\n Backends = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = externalProxy.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texternalProxy, err := compute.NewGlobalNetworkEndpointGroup(ctx, \"external_proxy\", \u0026compute.GlobalNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"network-endpoint\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_FQDN_PORT\"),\n\t\t\tDefaultPort: pulumi.Int(443),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxy, err := compute.NewGlobalNetworkEndpoint(ctx, \"proxy\", \u0026compute.GlobalNetworkEndpointArgs{\n\t\t\tGlobalNetworkEndpointGroup: externalProxy.ID(),\n\t\t\tFqdn: pulumi.String(\"test.example.com\"),\n\t\t\tPort: externalProxy.DefaultPort,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tConnectionDrainingTimeoutSec: pulumi.Int(10),\n\t\t\tCustomRequestHeaders: pulumi.StringArray{\n\t\t\t\tproxy.Fqdn.ApplyT(func(fqdn *string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"host: %v\", fqdn), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tCustomResponseHeaders: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"X-Cache-Hit: {cdn_cache_status}\"),\n\t\t\t},\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: externalProxy.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.GlobalNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.GlobalNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.GlobalNetworkEndpoint;\nimport com.pulumi.gcp.compute.GlobalNetworkEndpointArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceBackendArgs;\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 externalProxy = new GlobalNetworkEndpointGroup(\"externalProxy\", GlobalNetworkEndpointGroupArgs.builder()\n .name(\"network-endpoint\")\n .networkEndpointType(\"INTERNET_FQDN_PORT\")\n .defaultPort(\"443\")\n .build());\n\n var proxy = new GlobalNetworkEndpoint(\"proxy\", GlobalNetworkEndpointArgs.builder()\n .globalNetworkEndpointGroup(externalProxy.id())\n .fqdn(\"test.example.com\")\n .port(externalProxy.defaultPort())\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .enableCdn(true)\n .timeoutSec(10)\n .connectionDrainingTimeoutSec(10)\n .customRequestHeaders(proxy.fqdn().applyValue(fqdn -\u003e String.format(\"host: %s\", fqdn)))\n .customResponseHeaders(\"X-Cache-Hit: {cdn_cache_status}\")\n .backends(BackendServiceBackendArgs.builder()\n .group(externalProxy.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n externalProxy:\n type: gcp:compute:GlobalNetworkEndpointGroup\n name: external_proxy\n properties:\n name: network-endpoint\n networkEndpointType: INTERNET_FQDN_PORT\n defaultPort: '443'\n proxy:\n type: gcp:compute:GlobalNetworkEndpoint\n properties:\n globalNetworkEndpointGroup: ${externalProxy.id}\n fqdn: test.example.com\n port: ${externalProxy.defaultPort}\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n enableCdn: true\n timeoutSec: 10\n connectionDrainingTimeoutSec: 10\n customRequestHeaders:\n - 'host: ${proxy.fqdn}'\n customResponseHeaders:\n - 'X-Cache-Hit: {cdn_cache_status}'\n backends:\n - group: ${externalProxy.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service External Managed\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n healthChecks: defaultHealthCheck.id,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n health_checks=default_health_check.id,\n load_balancing_scheme=\"EXTERNAL_MANAGED\")\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 defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n HealthChecks = defaultHealthCheck.Id,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\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 defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .healthChecks(defaultHealthCheck.id())\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n healthChecks: ${defaultHealthCheck.id}\n loadBalancingScheme: EXTERNAL_MANAGED\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackendService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/backendServices/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, BackendService can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/backendService:BackendService default projects/{{project}}/global/backendServices/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/backendService:BackendService default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/backendService:BackendService default {{name}}\n```\n\n", + "description": "A Backend Service defines a group of virtual machines that will serve\ntraffic for load balancing. This resource is a global backend service,\nappropriate for external load balancing or self-managed internal load balancing.\nFor managed internal load balancing, use a regional backend service instead.\n\nCurrently self-managed internal load balancing is only available in beta.\n\n\nTo get more information about BackendService, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/backendServices)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/load-balancing/http/backend-service)\n\n\n\n## Example Usage\n\n### Backend Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n health_checks=default_http_health_check.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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service External Iap\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"tf-test-backend-service-external\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"EXTERNAL\",\n iap: {\n oauth2ClientId: \"abc\",\n oauth2ClientSecret: \"xyz\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.BackendService(\"default\",\n name=\"tf-test-backend-service-external\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"EXTERNAL\",\n iap={\n \"oauth2_client_id\": \"abc\",\n \"oauth2_client_secret\": \"xyz\",\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 @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"tf-test-backend-service-external\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"EXTERNAL\",\n Iap = new Gcp.Compute.Inputs.BackendServiceIapArgs\n {\n Oauth2ClientId = \"abc\",\n Oauth2ClientSecret = \"xyz\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"tf-test-backend-service-external\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL\"),\n\t\t\tIap: \u0026compute.BackendServiceIapArgs{\n\t\t\t\tOauth2ClientId: pulumi.String(\"abc\"),\n\t\t\t\tOauth2ClientSecret: pulumi.String(\"xyz\"),\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.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceIapArgs;\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 BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"tf-test-backend-service-external\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"EXTERNAL\")\n .iap(BackendServiceIapArgs.builder()\n .oauth2ClientId(\"abc\")\n .oauth2ClientSecret(\"xyz\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: tf-test-backend-service-external\n protocol: HTTP\n loadBalancingScheme: EXTERNAL\n iap:\n oauth2ClientId: abc\n oauth2ClientSecret: xyz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service Cache Simple\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n enableCdn: true,\n cdnPolicy: {\n signedUrlCacheMaxAgeSec: 7200,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n health_checks=default_http_health_check.id,\n enable_cdn=True,\n cdn_policy={\n \"signed_url_cache_max_age_sec\": 7200,\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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyArgs\n {\n SignedUrlCacheMaxAgeSec = 7200,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.BackendServiceCdnPolicyArgs{\n\t\t\t\tSignedUrlCacheMaxAgeSec: pulumi.Int(7200),\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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceCdnPolicyArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .enableCdn(true)\n .cdnPolicy(BackendServiceCdnPolicyArgs.builder()\n .signedUrlCacheMaxAgeSec(7200)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n enableCdn: true\n cdnPolicy:\n signedUrlCacheMaxAgeSec: 7200\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service Cache Include Http Headers\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n enableCdn: true,\n cdnPolicy: {\n cacheMode: \"USE_ORIGIN_HEADERS\",\n cacheKeyPolicy: {\n includeHost: true,\n includeProtocol: true,\n includeQueryString: true,\n includeHttpHeaders: [\"X-My-Header-Field\"],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n enable_cdn=True,\n cdn_policy={\n \"cache_mode\": \"USE_ORIGIN_HEADERS\",\n \"cache_key_policy\": {\n \"include_host\": True,\n \"include_protocol\": True,\n \"include_query_string\": True,\n \"include_http_headers\": [\"X-My-Header-Field\"],\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 @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyArgs\n {\n CacheMode = \"USE_ORIGIN_HEADERS\",\n CacheKeyPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyCacheKeyPolicyArgs\n {\n IncludeHost = true,\n IncludeProtocol = true,\n IncludeQueryString = true,\n IncludeHttpHeaders = new[]\n {\n \"X-My-Header-Field\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.BackendServiceCdnPolicyArgs{\n\t\t\t\tCacheMode: pulumi.String(\"USE_ORIGIN_HEADERS\"),\n\t\t\t\tCacheKeyPolicy: \u0026compute.BackendServiceCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\tIncludeHost: pulumi.Bool(true),\n\t\t\t\t\tIncludeProtocol: pulumi.Bool(true),\n\t\t\t\t\tIncludeQueryString: pulumi.Bool(true),\n\t\t\t\t\tIncludeHttpHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"X-My-Header-Field\"),\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.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceCdnPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceCdnPolicyCacheKeyPolicyArgs;\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 BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .enableCdn(true)\n .cdnPolicy(BackendServiceCdnPolicyArgs.builder()\n .cacheMode(\"USE_ORIGIN_HEADERS\")\n .cacheKeyPolicy(BackendServiceCdnPolicyCacheKeyPolicyArgs.builder()\n .includeHost(true)\n .includeProtocol(true)\n .includeQueryString(true)\n .includeHttpHeaders(\"X-My-Header-Field\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n enableCdn: true\n cdnPolicy:\n cacheMode: USE_ORIGIN_HEADERS\n cacheKeyPolicy:\n includeHost: true\n includeProtocol: true\n includeQueryString: true\n includeHttpHeaders:\n - X-My-Header-Field\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service Cache Include Named Cookies\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n enableCdn: true,\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: 3600,\n clientTtl: 7200,\n maxTtl: 10800,\n cacheKeyPolicy: {\n includeHost: true,\n includeProtocol: true,\n includeQueryString: true,\n includeNamedCookies: [\n \"__next_preview_data\",\n \"__prerender_bypass\",\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n enable_cdn=True,\n cdn_policy={\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": 3600,\n \"client_ttl\": 7200,\n \"max_ttl\": 10800,\n \"cache_key_policy\": {\n \"include_host\": True,\n \"include_protocol\": True,\n \"include_query_string\": True,\n \"include_named_cookies\": [\n \"__next_preview_data\",\n \"__prerender_bypass\",\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 @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = 3600,\n ClientTtl = 7200,\n MaxTtl = 10800,\n CacheKeyPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyCacheKeyPolicyArgs\n {\n IncludeHost = true,\n IncludeProtocol = true,\n IncludeQueryString = true,\n IncludeNamedCookies = new[]\n {\n \"__next_preview_data\",\n \"__prerender_bypass\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.BackendServiceCdnPolicyArgs{\n\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\tDefaultTtl: pulumi.Int(3600),\n\t\t\t\tClientTtl: pulumi.Int(7200),\n\t\t\t\tMaxTtl: pulumi.Int(10800),\n\t\t\t\tCacheKeyPolicy: \u0026compute.BackendServiceCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\tIncludeHost: pulumi.Bool(true),\n\t\t\t\t\tIncludeProtocol: pulumi.Bool(true),\n\t\t\t\t\tIncludeQueryString: pulumi.Bool(true),\n\t\t\t\t\tIncludeNamedCookies: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"__next_preview_data\"),\n\t\t\t\t\t\tpulumi.String(\"__prerender_bypass\"),\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.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceCdnPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceCdnPolicyCacheKeyPolicyArgs;\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 BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .enableCdn(true)\n .cdnPolicy(BackendServiceCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(3600)\n .clientTtl(7200)\n .maxTtl(10800)\n .cacheKeyPolicy(BackendServiceCdnPolicyCacheKeyPolicyArgs.builder()\n .includeHost(true)\n .includeProtocol(true)\n .includeQueryString(true)\n .includeNamedCookies( \n \"__next_preview_data\",\n \"__prerender_bypass\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n enableCdn: true\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600\n clientTtl: 7200\n maxTtl: 10800\n cacheKeyPolicy:\n includeHost: true\n includeProtocol: true\n includeQueryString: true\n includeNamedCookies:\n - __next_preview_data\n - __prerender_bypass\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service Cache\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n enableCdn: true,\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: 3600,\n clientTtl: 7200,\n maxTtl: 10800,\n negativeCaching: true,\n signedUrlCacheMaxAgeSec: 7200,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n health_checks=default_http_health_check.id,\n enable_cdn=True,\n cdn_policy={\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": 3600,\n \"client_ttl\": 7200,\n \"max_ttl\": 10800,\n \"negative_caching\": True,\n \"signed_url_cache_max_age_sec\": 7200,\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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = 3600,\n ClientTtl = 7200,\n MaxTtl = 10800,\n NegativeCaching = true,\n SignedUrlCacheMaxAgeSec = 7200,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.BackendServiceCdnPolicyArgs{\n\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\tDefaultTtl: pulumi.Int(3600),\n\t\t\t\tClientTtl: pulumi.Int(7200),\n\t\t\t\tMaxTtl: pulumi.Int(10800),\n\t\t\t\tNegativeCaching: pulumi.Bool(true),\n\t\t\t\tSignedUrlCacheMaxAgeSec: pulumi.Int(7200),\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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceCdnPolicyArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .enableCdn(true)\n .cdnPolicy(BackendServiceCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(3600)\n .clientTtl(7200)\n .maxTtl(10800)\n .negativeCaching(true)\n .signedUrlCacheMaxAgeSec(7200)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n enableCdn: true\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600\n clientTtl: 7200\n maxTtl: 10800\n negativeCaching: true\n signedUrlCacheMaxAgeSec: 7200\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service Cache Bypass Cache On Request Headers\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n enableCdn: true,\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: 3600,\n clientTtl: 7200,\n maxTtl: 10800,\n negativeCaching: true,\n signedUrlCacheMaxAgeSec: 7200,\n bypassCacheOnRequestHeaders: [\n {\n headerName: \"Authorization\",\n },\n {\n headerName: \"Proxy-Authorization\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n health_checks=default_http_health_check.id,\n enable_cdn=True,\n cdn_policy={\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": 3600,\n \"client_ttl\": 7200,\n \"max_ttl\": 10800,\n \"negative_caching\": True,\n \"signed_url_cache_max_age_sec\": 7200,\n \"bypass_cache_on_request_headers\": [\n {\n \"header_name\": \"Authorization\",\n },\n {\n \"header_name\": \"Proxy-Authorization\",\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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.BackendServiceCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = 3600,\n ClientTtl = 7200,\n MaxTtl = 10800,\n NegativeCaching = true,\n SignedUrlCacheMaxAgeSec = 7200,\n BypassCacheOnRequestHeaders = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceCdnPolicyBypassCacheOnRequestHeaderArgs\n {\n HeaderName = \"Authorization\",\n },\n new Gcp.Compute.Inputs.BackendServiceCdnPolicyBypassCacheOnRequestHeaderArgs\n {\n HeaderName = \"Proxy-Authorization\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.BackendServiceCdnPolicyArgs{\n\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\tDefaultTtl: pulumi.Int(3600),\n\t\t\t\tClientTtl: pulumi.Int(7200),\n\t\t\t\tMaxTtl: pulumi.Int(10800),\n\t\t\t\tNegativeCaching: pulumi.Bool(true),\n\t\t\t\tSignedUrlCacheMaxAgeSec: pulumi.Int(7200),\n\t\t\t\tBypassCacheOnRequestHeaders: compute.BackendServiceCdnPolicyBypassCacheOnRequestHeaderArray{\n\t\t\t\t\t\u0026compute.BackendServiceCdnPolicyBypassCacheOnRequestHeaderArgs{\n\t\t\t\t\t\tHeaderName: pulumi.String(\"Authorization\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026compute.BackendServiceCdnPolicyBypassCacheOnRequestHeaderArgs{\n\t\t\t\t\t\tHeaderName: pulumi.String(\"Proxy-Authorization\"),\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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceCdnPolicyArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .enableCdn(true)\n .cdnPolicy(BackendServiceCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(3600)\n .clientTtl(7200)\n .maxTtl(10800)\n .negativeCaching(true)\n .signedUrlCacheMaxAgeSec(7200)\n .bypassCacheOnRequestHeaders( \n BackendServiceCdnPolicyBypassCacheOnRequestHeaderArgs.builder()\n .headerName(\"Authorization\")\n .build(),\n BackendServiceCdnPolicyBypassCacheOnRequestHeaderArgs.builder()\n .headerName(\"Proxy-Authorization\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n enableCdn: true\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600\n clientTtl: 7200\n maxTtl: 10800\n negativeCaching: true\n signedUrlCacheMaxAgeSec: 7200\n bypassCacheOnRequestHeaders:\n - headerName: Authorization\n - headerName: Proxy-Authorization\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service Traffic Director Round Robin\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.HealthCheck(\"health_check\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n healthChecks: healthCheck.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n localityLbPolicy: \"ROUND_ROBIN\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.HealthCheck(\"health_check\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n health_checks=health_check.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n locality_lb_policy=\"ROUND_ROBIN\")\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 healthCheck = new Gcp.Compute.HealthCheck(\"health_check\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n HealthChecks = healthCheck.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n LocalityLbPolicy = \"ROUND_ROBIN\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thealthCheck, err := compute.NewHealthCheck(ctx, \"health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tHealthChecks: healthCheck.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tLocalityLbPolicy: pulumi.String(\"ROUND_ROBIN\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\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 HealthCheck(\"healthCheck\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .healthChecks(healthCheck.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .localityLbPolicy(\"ROUND_ROBIN\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n healthChecks: ${healthCheck.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n localityLbPolicy: ROUND_ROBIN\n healthCheck:\n type: gcp:compute:HealthCheck\n name: health_check\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service Traffic Director Ring Hash\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.HealthCheck(\"health_check\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n healthChecks: healthCheck.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n localityLbPolicy: \"RING_HASH\",\n sessionAffinity: \"HTTP_COOKIE\",\n circuitBreakers: {\n maxConnections: 10,\n },\n consistentHash: {\n httpCookie: {\n ttl: {\n seconds: 11,\n nanos: 1111,\n },\n name: \"mycookie\",\n },\n },\n outlierDetection: {\n consecutiveErrors: 2,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.HealthCheck(\"health_check\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n health_checks=health_check.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n locality_lb_policy=\"RING_HASH\",\n session_affinity=\"HTTP_COOKIE\",\n circuit_breakers={\n \"max_connections\": 10,\n },\n consistent_hash={\n \"http_cookie\": {\n \"ttl\": {\n \"seconds\": 11,\n \"nanos\": 1111,\n },\n \"name\": \"mycookie\",\n },\n },\n outlier_detection={\n \"consecutive_errors\": 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 healthCheck = new Gcp.Compute.HealthCheck(\"health_check\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n HealthChecks = healthCheck.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n LocalityLbPolicy = \"RING_HASH\",\n SessionAffinity = \"HTTP_COOKIE\",\n CircuitBreakers = new Gcp.Compute.Inputs.BackendServiceCircuitBreakersArgs\n {\n MaxConnections = 10,\n },\n ConsistentHash = new Gcp.Compute.Inputs.BackendServiceConsistentHashArgs\n {\n HttpCookie = new Gcp.Compute.Inputs.BackendServiceConsistentHashHttpCookieArgs\n {\n Ttl = new Gcp.Compute.Inputs.BackendServiceConsistentHashHttpCookieTtlArgs\n {\n Seconds = 11,\n Nanos = 1111,\n },\n Name = \"mycookie\",\n },\n },\n OutlierDetection = new Gcp.Compute.Inputs.BackendServiceOutlierDetectionArgs\n {\n ConsecutiveErrors = 2,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thealthCheck, err := compute.NewHealthCheck(ctx, \"health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tHealthChecks: healthCheck.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tLocalityLbPolicy: pulumi.String(\"RING_HASH\"),\n\t\t\tSessionAffinity: pulumi.String(\"HTTP_COOKIE\"),\n\t\t\tCircuitBreakers: \u0026compute.BackendServiceCircuitBreakersArgs{\n\t\t\t\tMaxConnections: pulumi.Int(10),\n\t\t\t},\n\t\t\tConsistentHash: \u0026compute.BackendServiceConsistentHashArgs{\n\t\t\t\tHttpCookie: \u0026compute.BackendServiceConsistentHashHttpCookieArgs{\n\t\t\t\t\tTtl: \u0026compute.BackendServiceConsistentHashHttpCookieTtlArgs{\n\t\t\t\t\t\tSeconds: pulumi.Int(11),\n\t\t\t\t\t\tNanos: pulumi.Int(1111),\n\t\t\t\t\t},\n\t\t\t\t\tName: pulumi.String(\"mycookie\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOutlierDetection: \u0026compute.BackendServiceOutlierDetectionArgs{\n\t\t\t\tConsecutiveErrors: pulumi.Int(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.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceCircuitBreakersArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceConsistentHashArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceConsistentHashHttpCookieArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceConsistentHashHttpCookieTtlArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceOutlierDetectionArgs;\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 HealthCheck(\"healthCheck\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .healthChecks(healthCheck.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .localityLbPolicy(\"RING_HASH\")\n .sessionAffinity(\"HTTP_COOKIE\")\n .circuitBreakers(BackendServiceCircuitBreakersArgs.builder()\n .maxConnections(10)\n .build())\n .consistentHash(BackendServiceConsistentHashArgs.builder()\n .httpCookie(BackendServiceConsistentHashHttpCookieArgs.builder()\n .ttl(BackendServiceConsistentHashHttpCookieTtlArgs.builder()\n .seconds(11)\n .nanos(1111)\n .build())\n .name(\"mycookie\")\n .build())\n .build())\n .outlierDetection(BackendServiceOutlierDetectionArgs.builder()\n .consecutiveErrors(2)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n healthChecks: ${healthCheck.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n localityLbPolicy: RING_HASH\n sessionAffinity: HTTP_COOKIE\n circuitBreakers:\n maxConnections: 10\n consistentHash:\n httpCookie:\n ttl:\n seconds: 11\n nanos: 1111\n name: mycookie\n outlierDetection:\n consecutiveErrors: 2\n healthCheck:\n type: gcp:compute:HealthCheck\n name: health_check\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service Network Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst externalProxy = new gcp.compute.GlobalNetworkEndpointGroup(\"external_proxy\", {\n name: \"network-endpoint\",\n networkEndpointType: \"INTERNET_FQDN_PORT\",\n defaultPort: 443,\n});\nconst proxy = new gcp.compute.GlobalNetworkEndpoint(\"proxy\", {\n globalNetworkEndpointGroup: externalProxy.id,\n fqdn: \"test.example.com\",\n port: externalProxy.defaultPort,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n enableCdn: true,\n timeoutSec: 10,\n connectionDrainingTimeoutSec: 10,\n customRequestHeaders: [proxy.fqdn.apply(fqdn =\u003e `host: ${fqdn}`)],\n customResponseHeaders: [\"X-Cache-Hit: {cdn_cache_status}\"],\n backends: [{\n group: externalProxy.id,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexternal_proxy = gcp.compute.GlobalNetworkEndpointGroup(\"external_proxy\",\n name=\"network-endpoint\",\n network_endpoint_type=\"INTERNET_FQDN_PORT\",\n default_port=443)\nproxy = gcp.compute.GlobalNetworkEndpoint(\"proxy\",\n global_network_endpoint_group=external_proxy.id,\n fqdn=\"test.example.com\",\n port=external_proxy.default_port)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n enable_cdn=True,\n timeout_sec=10,\n connection_draining_timeout_sec=10,\n custom_request_headers=[proxy.fqdn.apply(lambda fqdn: f\"host: {fqdn}\")],\n custom_response_headers=[\"X-Cache-Hit: {cdn_cache_status}\"],\n backends=[{\n \"group\": external_proxy.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 externalProxy = new Gcp.Compute.GlobalNetworkEndpointGroup(\"external_proxy\", new()\n {\n Name = \"network-endpoint\",\n NetworkEndpointType = \"INTERNET_FQDN_PORT\",\n DefaultPort = 443,\n });\n\n var proxy = new Gcp.Compute.GlobalNetworkEndpoint(\"proxy\", new()\n {\n GlobalNetworkEndpointGroup = externalProxy.Id,\n Fqdn = \"test.example.com\",\n Port = externalProxy.DefaultPort,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n EnableCdn = true,\n TimeoutSec = 10,\n ConnectionDrainingTimeoutSec = 10,\n CustomRequestHeaders = new[]\n {\n proxy.Fqdn.Apply(fqdn =\u003e $\"host: {fqdn}\"),\n },\n CustomResponseHeaders = new[]\n {\n \"X-Cache-Hit: {cdn_cache_status}\",\n },\n Backends = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = externalProxy.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texternalProxy, err := compute.NewGlobalNetworkEndpointGroup(ctx, \"external_proxy\", \u0026compute.GlobalNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"network-endpoint\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_FQDN_PORT\"),\n\t\t\tDefaultPort: pulumi.Int(443),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxy, err := compute.NewGlobalNetworkEndpoint(ctx, \"proxy\", \u0026compute.GlobalNetworkEndpointArgs{\n\t\t\tGlobalNetworkEndpointGroup: externalProxy.ID(),\n\t\t\tFqdn: pulumi.String(\"test.example.com\"),\n\t\t\tPort: externalProxy.DefaultPort,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tConnectionDrainingTimeoutSec: pulumi.Int(10),\n\t\t\tCustomRequestHeaders: pulumi.StringArray{\n\t\t\t\tproxy.Fqdn.ApplyT(func(fqdn *string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"host: %v\", fqdn), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tCustomResponseHeaders: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"X-Cache-Hit: {cdn_cache_status}\"),\n\t\t\t},\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: externalProxy.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.GlobalNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.GlobalNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.GlobalNetworkEndpoint;\nimport com.pulumi.gcp.compute.GlobalNetworkEndpointArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceBackendArgs;\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 externalProxy = new GlobalNetworkEndpointGroup(\"externalProxy\", GlobalNetworkEndpointGroupArgs.builder()\n .name(\"network-endpoint\")\n .networkEndpointType(\"INTERNET_FQDN_PORT\")\n .defaultPort(\"443\")\n .build());\n\n var proxy = new GlobalNetworkEndpoint(\"proxy\", GlobalNetworkEndpointArgs.builder()\n .globalNetworkEndpointGroup(externalProxy.id())\n .fqdn(\"test.example.com\")\n .port(externalProxy.defaultPort())\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .enableCdn(true)\n .timeoutSec(10)\n .connectionDrainingTimeoutSec(10)\n .customRequestHeaders(proxy.fqdn().applyValue(fqdn -\u003e String.format(\"host: %s\", fqdn)))\n .customResponseHeaders(\"X-Cache-Hit: {cdn_cache_status}\")\n .backends(BackendServiceBackendArgs.builder()\n .group(externalProxy.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n externalProxy:\n type: gcp:compute:GlobalNetworkEndpointGroup\n name: external_proxy\n properties:\n name: network-endpoint\n networkEndpointType: INTERNET_FQDN_PORT\n defaultPort: '443'\n proxy:\n type: gcp:compute:GlobalNetworkEndpoint\n properties:\n globalNetworkEndpointGroup: ${externalProxy.id}\n fqdn: test.example.com\n port: ${externalProxy.defaultPort}\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n enableCdn: true\n timeoutSec: 10\n connectionDrainingTimeoutSec: 10\n customRequestHeaders:\n - 'host: ${proxy.fqdn}'\n customResponseHeaders:\n - 'X-Cache-Hit: {cdn_cache_status}'\n backends:\n - group: ${externalProxy.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Backend Service External Managed\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n healthChecks: defaultHealthCheck.id,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n health_checks=default_health_check.id,\n load_balancing_scheme=\"EXTERNAL_MANAGED\")\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 defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n HealthChecks = defaultHealthCheck.Id,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\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 defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .healthChecks(defaultHealthCheck.id())\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: backend-service\n healthChecks: ${defaultHealthCheck.id}\n loadBalancingScheme: EXTERNAL_MANAGED\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackendService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/backendServices/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, BackendService can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/backendService:BackendService default projects/{{project}}/global/backendServices/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/backendService:BackendService default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/backendService:BackendService default {{name}}\n```\n\n", "properties": { "affinityCookieTtlSec": { "type": "integer", @@ -142791,7 +142791,7 @@ } }, "gcp:compute/backendServiceSignedUrlKey:BackendServiceSignedUrlKey": { - "description": "A key for signing Cloud CDN signed URLs for Backend Services.\n\n\nTo get more information about BackendServiceSignedUrlKey, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/backendServices)\n* How-to Guides\n * [Using Signed URLs](https://cloud.google.com/cdn/docs/using-signed-urls/)\n\n\n\n## Example Usage\n\n### Backend Service Signed Url Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst urlSignature = new random.RandomId(\"url_signature\", {byteLength: 16});\nconst webserver = new gcp.compute.InstanceTemplate(\"webserver\", {\n name: \"standard-webserver\",\n machineType: \"e2-medium\",\n networkInterfaces: [{\n network: \"default\",\n }],\n disks: [{\n sourceImage: \"debian-cloud/debian-11\",\n autoDelete: true,\n boot: true,\n }],\n});\nconst webservers = new gcp.compute.InstanceGroupManager(\"webservers\", {\n name: \"my-webservers\",\n versions: [{\n instanceTemplate: webserver.id,\n name: \"primary\",\n }],\n baseInstanceName: \"webserver\",\n zone: \"us-central1-f\",\n targetSize: 1,\n});\nconst _default = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"test\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst exampleBackend = new gcp.compute.BackendService(\"example_backend\", {\n name: \"my-backend-service\",\n description: \"Our company website\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n enableCdn: true,\n backends: [{\n group: webservers.instanceGroup,\n }],\n healthChecks: _default.id,\n});\nconst backendKey = new gcp.compute.BackendServiceSignedUrlKey(\"backend_key\", {\n name: \"test-key\",\n keyValue: urlSignature.b64Url,\n backendService: exampleBackend.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nurl_signature = random.RandomId(\"url_signature\", byte_length=16)\nwebserver = gcp.compute.InstanceTemplate(\"webserver\",\n name=\"standard-webserver\",\n machine_type=\"e2-medium\",\n network_interfaces=[{\n \"network\": \"default\",\n }],\n disks=[{\n \"sourceImage\": \"debian-cloud/debian-11\",\n \"autoDelete\": True,\n \"boot\": True,\n }])\nwebservers = gcp.compute.InstanceGroupManager(\"webservers\",\n name=\"my-webservers\",\n versions=[{\n \"instanceTemplate\": webserver.id,\n \"name\": \"primary\",\n }],\n base_instance_name=\"webserver\",\n zone=\"us-central1-f\",\n target_size=1)\ndefault = gcp.compute.HttpHealthCheck(\"default\",\n name=\"test\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\nexample_backend = gcp.compute.BackendService(\"example_backend\",\n name=\"my-backend-service\",\n description=\"Our company website\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n enable_cdn=True,\n backends=[{\n \"group\": webservers.instance_group,\n }],\n health_checks=default.id)\nbackend_key = gcp.compute.BackendServiceSignedUrlKey(\"backend_key\",\n name=\"test-key\",\n key_value=url_signature.b64_url,\n backend_service=example_backend.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var urlSignature = new Random.RandomId(\"url_signature\", new()\n {\n ByteLength = 16,\n });\n\n var webserver = new Gcp.Compute.InstanceTemplate(\"webserver\", new()\n {\n Name = \"standard-webserver\",\n MachineType = \"e2-medium\",\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = \"debian-cloud/debian-11\",\n AutoDelete = true,\n Boot = true,\n },\n },\n });\n\n var webservers = new Gcp.Compute.InstanceGroupManager(\"webservers\", new()\n {\n Name = \"my-webservers\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = webserver.Id,\n Name = \"primary\",\n },\n },\n BaseInstanceName = \"webserver\",\n Zone = \"us-central1-f\",\n TargetSize = 1,\n });\n\n var @default = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"test\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var exampleBackend = new Gcp.Compute.BackendService(\"example_backend\", new()\n {\n Name = \"my-backend-service\",\n Description = \"Our company website\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n EnableCdn = true,\n Backends = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = webservers.InstanceGroup,\n },\n },\n HealthChecks = @default.Id,\n });\n\n var backendKey = new Gcp.Compute.BackendServiceSignedUrlKey(\"backend_key\", new()\n {\n Name = \"test-key\",\n KeyValue = urlSignature.B64Url,\n BackendService = exampleBackend.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\turlSignature, err := random.NewRandomId(ctx, \"url_signature\", \u0026random.RandomIdArgs{\n\t\t\tByteLength: pulumi.Int(16),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twebserver, err := compute.NewInstanceTemplate(ctx, \"webserver\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"standard-webserver\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: 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\twebservers, err := compute.NewInstanceGroupManager(ctx, \"webservers\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"my-webservers\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: webserver.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"webserver\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tTargetSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleBackend, err := compute.NewBackendService(ctx, \"example_backend\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tDescription: pulumi.String(\"Our company website\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: webservers.InstanceGroup,\n\t\t\t\t},\n\t\t\t},\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendServiceSignedUrlKey(ctx, \"backend_key\", \u0026compute.BackendServiceSignedUrlKeyArgs{\n\t\t\tName: pulumi.String(\"test-key\"),\n\t\t\tKeyValue: urlSignature.B64Url,\n\t\t\tBackendService: exampleBackend.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.random.RandomId;\nimport com.pulumi.random.RandomIdArgs;\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.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.BackendServiceSignedUrlKey;\nimport com.pulumi.gcp.compute.BackendServiceSignedUrlKeyArgs;\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 urlSignature = new RandomId(\"urlSignature\", RandomIdArgs.builder()\n .byteLength(16)\n .build());\n\n var webserver = new InstanceTemplate(\"webserver\", InstanceTemplateArgs.builder()\n .name(\"standard-webserver\")\n .machineType(\"e2-medium\")\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(\"debian-cloud/debian-11\")\n .autoDelete(true)\n .boot(true)\n .build())\n .build());\n\n var webservers = new InstanceGroupManager(\"webservers\", InstanceGroupManagerArgs.builder()\n .name(\"my-webservers\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(webserver.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"webserver\")\n .zone(\"us-central1-f\")\n .targetSize(1)\n .build());\n\n var default_ = new HttpHealthCheck(\"default\", HttpHealthCheckArgs.builder()\n .name(\"test\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var exampleBackend = new BackendService(\"exampleBackend\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .description(\"Our company website\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .enableCdn(true)\n .backends(BackendServiceBackendArgs.builder()\n .group(webservers.instanceGroup())\n .build())\n .healthChecks(default_.id())\n .build());\n\n var backendKey = new BackendServiceSignedUrlKey(\"backendKey\", BackendServiceSignedUrlKeyArgs.builder()\n .name(\"test-key\")\n .keyValue(urlSignature.b64Url())\n .backendService(exampleBackend.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlSignature:\n type: random:RandomId\n name: url_signature\n properties:\n byteLength: 16\n backendKey:\n type: gcp:compute:BackendServiceSignedUrlKey\n name: backend_key\n properties:\n name: test-key\n keyValue: ${urlSignature.b64Url}\n backendService: ${exampleBackend.name}\n exampleBackend:\n type: gcp:compute:BackendService\n name: example_backend\n properties:\n name: my-backend-service\n description: Our company website\n portName: http\n protocol: HTTP\n timeoutSec: 10\n enableCdn: true\n backends:\n - group: ${webservers.instanceGroup}\n healthChecks: ${default.id}\n webservers:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: my-webservers\n versions:\n - instanceTemplate: ${webserver.id}\n name: primary\n baseInstanceName: webserver\n zone: us-central1-f\n targetSize: 1\n webserver:\n type: gcp:compute:InstanceTemplate\n properties:\n name: standard-webserver\n machineType: e2-medium\n networkInterfaces:\n - network: default\n disks:\n - sourceImage: debian-cloud/debian-11\n autoDelete: true\n boot: true\n default:\n type: gcp:compute:HttpHealthCheck\n properties:\n name: test\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "A key for signing Cloud CDN signed URLs for Backend Services.\n\n\nTo get more information about BackendServiceSignedUrlKey, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/backendServices)\n* How-to Guides\n * [Using Signed URLs](https://cloud.google.com/cdn/docs/using-signed-urls/)\n\n\n\n## Example Usage\n\n### Backend Service Signed Url Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst urlSignature = new random.RandomId(\"url_signature\", {byteLength: 16});\nconst webserver = new gcp.compute.InstanceTemplate(\"webserver\", {\n name: \"standard-webserver\",\n machineType: \"e2-medium\",\n networkInterfaces: [{\n network: \"default\",\n }],\n disks: [{\n sourceImage: \"debian-cloud/debian-11\",\n autoDelete: true,\n boot: true,\n }],\n});\nconst webservers = new gcp.compute.InstanceGroupManager(\"webservers\", {\n name: \"my-webservers\",\n versions: [{\n instanceTemplate: webserver.id,\n name: \"primary\",\n }],\n baseInstanceName: \"webserver\",\n zone: \"us-central1-f\",\n targetSize: 1,\n});\nconst _default = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"test\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst exampleBackend = new gcp.compute.BackendService(\"example_backend\", {\n name: \"my-backend-service\",\n description: \"Our company website\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n enableCdn: true,\n backends: [{\n group: webservers.instanceGroup,\n }],\n healthChecks: _default.id,\n});\nconst backendKey = new gcp.compute.BackendServiceSignedUrlKey(\"backend_key\", {\n name: \"test-key\",\n keyValue: urlSignature.b64Url,\n backendService: exampleBackend.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nurl_signature = random.RandomId(\"url_signature\", byte_length=16)\nwebserver = gcp.compute.InstanceTemplate(\"webserver\",\n name=\"standard-webserver\",\n machine_type=\"e2-medium\",\n network_interfaces=[{\n \"network\": \"default\",\n }],\n disks=[{\n \"source_image\": \"debian-cloud/debian-11\",\n \"auto_delete\": True,\n \"boot\": True,\n }])\nwebservers = gcp.compute.InstanceGroupManager(\"webservers\",\n name=\"my-webservers\",\n versions=[{\n \"instance_template\": webserver.id,\n \"name\": \"primary\",\n }],\n base_instance_name=\"webserver\",\n zone=\"us-central1-f\",\n target_size=1)\ndefault = gcp.compute.HttpHealthCheck(\"default\",\n name=\"test\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\nexample_backend = gcp.compute.BackendService(\"example_backend\",\n name=\"my-backend-service\",\n description=\"Our company website\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n enable_cdn=True,\n backends=[{\n \"group\": webservers.instance_group,\n }],\n health_checks=default.id)\nbackend_key = gcp.compute.BackendServiceSignedUrlKey(\"backend_key\",\n name=\"test-key\",\n key_value=url_signature.b64_url,\n backend_service=example_backend.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var urlSignature = new Random.RandomId(\"url_signature\", new()\n {\n ByteLength = 16,\n });\n\n var webserver = new Gcp.Compute.InstanceTemplate(\"webserver\", new()\n {\n Name = \"standard-webserver\",\n MachineType = \"e2-medium\",\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = \"debian-cloud/debian-11\",\n AutoDelete = true,\n Boot = true,\n },\n },\n });\n\n var webservers = new Gcp.Compute.InstanceGroupManager(\"webservers\", new()\n {\n Name = \"my-webservers\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = webserver.Id,\n Name = \"primary\",\n },\n },\n BaseInstanceName = \"webserver\",\n Zone = \"us-central1-f\",\n TargetSize = 1,\n });\n\n var @default = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"test\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var exampleBackend = new Gcp.Compute.BackendService(\"example_backend\", new()\n {\n Name = \"my-backend-service\",\n Description = \"Our company website\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n EnableCdn = true,\n Backends = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = webservers.InstanceGroup,\n },\n },\n HealthChecks = @default.Id,\n });\n\n var backendKey = new Gcp.Compute.BackendServiceSignedUrlKey(\"backend_key\", new()\n {\n Name = \"test-key\",\n KeyValue = urlSignature.B64Url,\n BackendService = exampleBackend.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\turlSignature, err := random.NewRandomId(ctx, \"url_signature\", \u0026random.RandomIdArgs{\n\t\t\tByteLength: pulumi.Int(16),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twebserver, err := compute.NewInstanceTemplate(ctx, \"webserver\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"standard-webserver\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: 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\twebservers, err := compute.NewInstanceGroupManager(ctx, \"webservers\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"my-webservers\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: webserver.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"webserver\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tTargetSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleBackend, err := compute.NewBackendService(ctx, \"example_backend\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tDescription: pulumi.String(\"Our company website\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: webservers.InstanceGroup,\n\t\t\t\t},\n\t\t\t},\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendServiceSignedUrlKey(ctx, \"backend_key\", \u0026compute.BackendServiceSignedUrlKeyArgs{\n\t\t\tName: pulumi.String(\"test-key\"),\n\t\t\tKeyValue: urlSignature.B64Url,\n\t\t\tBackendService: exampleBackend.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.random.RandomId;\nimport com.pulumi.random.RandomIdArgs;\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.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.BackendServiceSignedUrlKey;\nimport com.pulumi.gcp.compute.BackendServiceSignedUrlKeyArgs;\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 urlSignature = new RandomId(\"urlSignature\", RandomIdArgs.builder()\n .byteLength(16)\n .build());\n\n var webserver = new InstanceTemplate(\"webserver\", InstanceTemplateArgs.builder()\n .name(\"standard-webserver\")\n .machineType(\"e2-medium\")\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(\"debian-cloud/debian-11\")\n .autoDelete(true)\n .boot(true)\n .build())\n .build());\n\n var webservers = new InstanceGroupManager(\"webservers\", InstanceGroupManagerArgs.builder()\n .name(\"my-webservers\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(webserver.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"webserver\")\n .zone(\"us-central1-f\")\n .targetSize(1)\n .build());\n\n var default_ = new HttpHealthCheck(\"default\", HttpHealthCheckArgs.builder()\n .name(\"test\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var exampleBackend = new BackendService(\"exampleBackend\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .description(\"Our company website\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .enableCdn(true)\n .backends(BackendServiceBackendArgs.builder()\n .group(webservers.instanceGroup())\n .build())\n .healthChecks(default_.id())\n .build());\n\n var backendKey = new BackendServiceSignedUrlKey(\"backendKey\", BackendServiceSignedUrlKeyArgs.builder()\n .name(\"test-key\")\n .keyValue(urlSignature.b64Url())\n .backendService(exampleBackend.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlSignature:\n type: random:RandomId\n name: url_signature\n properties:\n byteLength: 16\n backendKey:\n type: gcp:compute:BackendServiceSignedUrlKey\n name: backend_key\n properties:\n name: test-key\n keyValue: ${urlSignature.b64Url}\n backendService: ${exampleBackend.name}\n exampleBackend:\n type: gcp:compute:BackendService\n name: example_backend\n properties:\n name: my-backend-service\n description: Our company website\n portName: http\n protocol: HTTP\n timeoutSec: 10\n enableCdn: true\n backends:\n - group: ${webservers.instanceGroup}\n healthChecks: ${default.id}\n webservers:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: my-webservers\n versions:\n - instanceTemplate: ${webserver.id}\n name: primary\n baseInstanceName: webserver\n zone: us-central1-f\n targetSize: 1\n webserver:\n type: gcp:compute:InstanceTemplate\n properties:\n name: standard-webserver\n machineType: e2-medium\n networkInterfaces:\n - network: default\n disks:\n - sourceImage: debian-cloud/debian-11\n autoDelete: true\n boot: true\n default:\n type: gcp:compute:HttpHealthCheck\n properties:\n name: test\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "backendService": { "type": "string", @@ -143840,7 +143840,7 @@ } }, "gcp:compute/diskResourcePolicyAttachment:DiskResourcePolicyAttachment": { - "description": "Adds existing resource policies to a disk. You can only add one policy\nwhich will be applied to this disk for scheduling snapshot creation.\n\n\u003e **Note:** This resource does not support regional disks (`gcp.compute.RegionDisk`). For regional disks, please refer to the `gcp.compute.RegionDiskResourcePolicyAttachment` resource.\n\n\n## Example Usage\n\n### Disk Resource Policy Attachment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst ssd = new gcp.compute.Disk(\"ssd\", {\n name: \"my-disk\",\n image: myImage.then(myImage =\u003e myImage.selfLink),\n size: 50,\n type: \"pd-ssd\",\n zone: \"us-central1-a\",\n});\nconst policy = new gcp.compute.ResourcePolicy(\"policy\", {\n name: \"my-resource-policy\",\n region: \"us-central1\",\n snapshotSchedulePolicy: {\n schedule: {\n dailySchedule: {\n daysInCycle: 1,\n startTime: \"04:00\",\n },\n },\n },\n});\nconst attachment = new gcp.compute.DiskResourcePolicyAttachment(\"attachment\", {\n name: policy.name,\n disk: ssd.name,\n zone: \"us-central1-a\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nssd = gcp.compute.Disk(\"ssd\",\n name=\"my-disk\",\n image=my_image.self_link,\n size=50,\n type=\"pd-ssd\",\n zone=\"us-central1-a\")\npolicy = gcp.compute.ResourcePolicy(\"policy\",\n name=\"my-resource-policy\",\n region=\"us-central1\",\n snapshot_schedule_policy={\n \"schedule\": {\n \"dailySchedule\": {\n \"daysInCycle\": 1,\n \"startTime\": \"04:00\",\n },\n },\n })\nattachment = gcp.compute.DiskResourcePolicyAttachment(\"attachment\",\n name=policy.name,\n disk=ssd.name,\n zone=\"us-central1-a\")\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 myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var ssd = new Gcp.Compute.Disk(\"ssd\", new()\n {\n Name = \"my-disk\",\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n Size = 50,\n Type = \"pd-ssd\",\n Zone = \"us-central1-a\",\n });\n\n var policy = new Gcp.Compute.ResourcePolicy(\"policy\", new()\n {\n Name = \"my-resource-policy\",\n Region = \"us-central1\",\n SnapshotSchedulePolicy = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyArgs\n {\n Schedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs\n {\n DailySchedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs\n {\n DaysInCycle = 1,\n StartTime = \"04:00\",\n },\n },\n },\n });\n\n var attachment = new Gcp.Compute.DiskResourcePolicyAttachment(\"attachment\", new()\n {\n Name = policy.Name,\n Disk = ssd.Name,\n Zone = \"us-central1-a\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tssd, err := compute.NewDisk(ctx, \"ssd\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"my-disk\"),\n\t\t\tImage: pulumi.String(myImage.SelfLink),\n\t\t\tSize: pulumi.Int(50),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicy, err := compute.NewResourcePolicy(ctx, \"policy\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"my-resource-policy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSnapshotSchedulePolicy: \u0026compute.ResourcePolicySnapshotSchedulePolicyArgs{\n\t\t\t\tSchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleArgs{\n\t\t\t\t\tDailySchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs{\n\t\t\t\t\t\tDaysInCycle: pulumi.Int(1),\n\t\t\t\t\t\tStartTime: pulumi.String(\"04:00\"),\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 = compute.NewDiskResourcePolicyAttachment(ctx, \"attachment\", \u0026compute.DiskResourcePolicyAttachmentArgs{\n\t\t\tName: policy.Name,\n\t\t\tDisk: ssd.Name,\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs;\nimport com.pulumi.gcp.compute.DiskResourcePolicyAttachment;\nimport com.pulumi.gcp.compute.DiskResourcePolicyAttachmentArgs;\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 myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var ssd = new Disk(\"ssd\", DiskArgs.builder()\n .name(\"my-disk\")\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .size(50)\n .type(\"pd-ssd\")\n .zone(\"us-central1-a\")\n .build());\n\n var policy = new ResourcePolicy(\"policy\", ResourcePolicyArgs.builder()\n .name(\"my-resource-policy\")\n .region(\"us-central1\")\n .snapshotSchedulePolicy(ResourcePolicySnapshotSchedulePolicyArgs.builder()\n .schedule(ResourcePolicySnapshotSchedulePolicyScheduleArgs.builder()\n .dailySchedule(ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs.builder()\n .daysInCycle(1)\n .startTime(\"04:00\")\n .build())\n .build())\n .build())\n .build());\n\n var attachment = new DiskResourcePolicyAttachment(\"attachment\", DiskResourcePolicyAttachmentArgs.builder()\n .name(policy.name())\n .disk(ssd.name())\n .zone(\"us-central1-a\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n attachment:\n type: gcp:compute:DiskResourcePolicyAttachment\n properties:\n name: ${policy.name}\n disk: ${ssd.name}\n zone: us-central1-a\n ssd:\n type: gcp:compute:Disk\n properties:\n name: my-disk\n image: ${myImage.selfLink}\n size: 50\n type: pd-ssd\n zone: us-central1-a\n policy:\n type: gcp:compute:ResourcePolicy\n properties:\n name: my-resource-policy\n region: us-central1\n snapshotSchedulePolicy:\n schedule:\n dailySchedule:\n daysInCycle: 1\n startTime: 04:00\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDiskResourcePolicyAttachment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/disks/{{disk}}/{{name}}`\n\n* `{{project}}/{{zone}}/{{disk}}/{{name}}`\n\n* `{{zone}}/{{disk}}/{{name}}`\n\n* `{{disk}}/{{name}}`\n\nWhen using the `pulumi import` command, DiskResourcePolicyAttachment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/diskResourcePolicyAttachment:DiskResourcePolicyAttachment default projects/{{project}}/zones/{{zone}}/disks/{{disk}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/diskResourcePolicyAttachment:DiskResourcePolicyAttachment default {{project}}/{{zone}}/{{disk}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/diskResourcePolicyAttachment:DiskResourcePolicyAttachment default {{zone}}/{{disk}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/diskResourcePolicyAttachment:DiskResourcePolicyAttachment default {{disk}}/{{name}}\n```\n\n", + "description": "Adds existing resource policies to a disk. You can only add one policy\nwhich will be applied to this disk for scheduling snapshot creation.\n\n\u003e **Note:** This resource does not support regional disks (`gcp.compute.RegionDisk`). For regional disks, please refer to the `gcp.compute.RegionDiskResourcePolicyAttachment` resource.\n\n\n## Example Usage\n\n### Disk Resource Policy Attachment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst ssd = new gcp.compute.Disk(\"ssd\", {\n name: \"my-disk\",\n image: myImage.then(myImage =\u003e myImage.selfLink),\n size: 50,\n type: \"pd-ssd\",\n zone: \"us-central1-a\",\n});\nconst policy = new gcp.compute.ResourcePolicy(\"policy\", {\n name: \"my-resource-policy\",\n region: \"us-central1\",\n snapshotSchedulePolicy: {\n schedule: {\n dailySchedule: {\n daysInCycle: 1,\n startTime: \"04:00\",\n },\n },\n },\n});\nconst attachment = new gcp.compute.DiskResourcePolicyAttachment(\"attachment\", {\n name: policy.name,\n disk: ssd.name,\n zone: \"us-central1-a\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nssd = gcp.compute.Disk(\"ssd\",\n name=\"my-disk\",\n image=my_image.self_link,\n size=50,\n type=\"pd-ssd\",\n zone=\"us-central1-a\")\npolicy = gcp.compute.ResourcePolicy(\"policy\",\n name=\"my-resource-policy\",\n region=\"us-central1\",\n snapshot_schedule_policy={\n \"schedule\": {\n \"daily_schedule\": {\n \"days_in_cycle\": 1,\n \"start_time\": \"04:00\",\n },\n },\n })\nattachment = gcp.compute.DiskResourcePolicyAttachment(\"attachment\",\n name=policy.name,\n disk=ssd.name,\n zone=\"us-central1-a\")\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 myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var ssd = new Gcp.Compute.Disk(\"ssd\", new()\n {\n Name = \"my-disk\",\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n Size = 50,\n Type = \"pd-ssd\",\n Zone = \"us-central1-a\",\n });\n\n var policy = new Gcp.Compute.ResourcePolicy(\"policy\", new()\n {\n Name = \"my-resource-policy\",\n Region = \"us-central1\",\n SnapshotSchedulePolicy = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyArgs\n {\n Schedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs\n {\n DailySchedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs\n {\n DaysInCycle = 1,\n StartTime = \"04:00\",\n },\n },\n },\n });\n\n var attachment = new Gcp.Compute.DiskResourcePolicyAttachment(\"attachment\", new()\n {\n Name = policy.Name,\n Disk = ssd.Name,\n Zone = \"us-central1-a\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tssd, err := compute.NewDisk(ctx, \"ssd\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"my-disk\"),\n\t\t\tImage: pulumi.String(myImage.SelfLink),\n\t\t\tSize: pulumi.Int(50),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicy, err := compute.NewResourcePolicy(ctx, \"policy\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"my-resource-policy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSnapshotSchedulePolicy: \u0026compute.ResourcePolicySnapshotSchedulePolicyArgs{\n\t\t\t\tSchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleArgs{\n\t\t\t\t\tDailySchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs{\n\t\t\t\t\t\tDaysInCycle: pulumi.Int(1),\n\t\t\t\t\t\tStartTime: pulumi.String(\"04:00\"),\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 = compute.NewDiskResourcePolicyAttachment(ctx, \"attachment\", \u0026compute.DiskResourcePolicyAttachmentArgs{\n\t\t\tName: policy.Name,\n\t\t\tDisk: ssd.Name,\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs;\nimport com.pulumi.gcp.compute.DiskResourcePolicyAttachment;\nimport com.pulumi.gcp.compute.DiskResourcePolicyAttachmentArgs;\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 myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var ssd = new Disk(\"ssd\", DiskArgs.builder()\n .name(\"my-disk\")\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .size(50)\n .type(\"pd-ssd\")\n .zone(\"us-central1-a\")\n .build());\n\n var policy = new ResourcePolicy(\"policy\", ResourcePolicyArgs.builder()\n .name(\"my-resource-policy\")\n .region(\"us-central1\")\n .snapshotSchedulePolicy(ResourcePolicySnapshotSchedulePolicyArgs.builder()\n .schedule(ResourcePolicySnapshotSchedulePolicyScheduleArgs.builder()\n .dailySchedule(ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs.builder()\n .daysInCycle(1)\n .startTime(\"04:00\")\n .build())\n .build())\n .build())\n .build());\n\n var attachment = new DiskResourcePolicyAttachment(\"attachment\", DiskResourcePolicyAttachmentArgs.builder()\n .name(policy.name())\n .disk(ssd.name())\n .zone(\"us-central1-a\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n attachment:\n type: gcp:compute:DiskResourcePolicyAttachment\n properties:\n name: ${policy.name}\n disk: ${ssd.name}\n zone: us-central1-a\n ssd:\n type: gcp:compute:Disk\n properties:\n name: my-disk\n image: ${myImage.selfLink}\n size: 50\n type: pd-ssd\n zone: us-central1-a\n policy:\n type: gcp:compute:ResourcePolicy\n properties:\n name: my-resource-policy\n region: us-central1\n snapshotSchedulePolicy:\n schedule:\n dailySchedule:\n daysInCycle: 1\n startTime: 04:00\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDiskResourcePolicyAttachment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/disks/{{disk}}/{{name}}`\n\n* `{{project}}/{{zone}}/{{disk}}/{{name}}`\n\n* `{{zone}}/{{disk}}/{{name}}`\n\n* `{{disk}}/{{name}}`\n\nWhen using the `pulumi import` command, DiskResourcePolicyAttachment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/diskResourcePolicyAttachment:DiskResourcePolicyAttachment default projects/{{project}}/zones/{{zone}}/disks/{{disk}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/diskResourcePolicyAttachment:DiskResourcePolicyAttachment default {{project}}/{{zone}}/{{disk}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/diskResourcePolicyAttachment:DiskResourcePolicyAttachment default {{zone}}/{{disk}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/diskResourcePolicyAttachment:DiskResourcePolicyAttachment default {{disk}}/{{name}}\n```\n\n", "properties": { "disk": { "type": "string", @@ -143918,7 +143918,7 @@ } }, "gcp:compute/externalVpnGateway:ExternalVpnGateway": { - "description": "Represents a VPN gateway managed outside of GCP.\n\n\nTo get more information about ExternalVpnGateway, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/externalVpnGateways)\n\n## Example Usage\n\n### External Vpn Gateway\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"network-1\",\n routingMode: \"GLOBAL\",\n autoCreateSubnetworks: false,\n});\nconst haGateway = new gcp.compute.HaVpnGateway(\"ha_gateway\", {\n region: \"us-central1\",\n name: \"ha-vpn\",\n network: network.id,\n});\nconst externalGateway = new gcp.compute.ExternalVpnGateway(\"external_gateway\", {\n name: \"external-gateway\",\n redundancyType: \"SINGLE_IP_INTERNALLY_REDUNDANT\",\n description: \"An externally managed VPN gateway\",\n interfaces: [{\n id: 0,\n ipAddress: \"8.8.8.8\",\n }],\n});\nconst networkSubnet1 = new gcp.compute.Subnetwork(\"network_subnet1\", {\n name: \"ha-vpn-subnet-1\",\n ipCidrRange: \"10.0.1.0/24\",\n region: \"us-central1\",\n network: network.id,\n});\nconst networkSubnet2 = new gcp.compute.Subnetwork(\"network_subnet2\", {\n name: \"ha-vpn-subnet-2\",\n ipCidrRange: \"10.0.2.0/24\",\n region: \"us-west1\",\n network: network.id,\n});\nconst router1 = new gcp.compute.Router(\"router1\", {\n name: \"ha-vpn-router1\",\n network: network.name,\n bgp: {\n asn: 64514,\n },\n});\nconst tunnel1 = new gcp.compute.VPNTunnel(\"tunnel1\", {\n name: \"ha-vpn-tunnel1\",\n region: \"us-central1\",\n vpnGateway: haGateway.id,\n peerExternalGateway: externalGateway.id,\n peerExternalGatewayInterface: 0,\n sharedSecret: \"a secret message\",\n router: router1.id,\n vpnGatewayInterface: 0,\n});\nconst tunnel2 = new gcp.compute.VPNTunnel(\"tunnel2\", {\n name: \"ha-vpn-tunnel2\",\n region: \"us-central1\",\n vpnGateway: haGateway.id,\n peerExternalGateway: externalGateway.id,\n peerExternalGatewayInterface: 0,\n sharedSecret: \"a secret message\",\n router: pulumi.interpolate` ${router1.id}`,\n vpnGatewayInterface: 1,\n});\nconst router1Interface1 = new gcp.compute.RouterInterface(\"router1_interface1\", {\n name: \"router1-interface1\",\n router: router1.name,\n region: \"us-central1\",\n ipRange: \"169.254.0.1/30\",\n vpnTunnel: tunnel1.name,\n});\nconst router1Peer1 = new gcp.compute.RouterPeer(\"router1_peer1\", {\n name: \"router1-peer1\",\n router: router1.name,\n region: \"us-central1\",\n peerIpAddress: \"169.254.0.2\",\n peerAsn: 64515,\n advertisedRoutePriority: 100,\n \"interface\": router1Interface1.name,\n});\nconst router1Interface2 = new gcp.compute.RouterInterface(\"router1_interface2\", {\n name: \"router1-interface2\",\n router: router1.name,\n region: \"us-central1\",\n ipRange: \"169.254.1.1/30\",\n vpnTunnel: tunnel2.name,\n});\nconst router1Peer2 = new gcp.compute.RouterPeer(\"router1_peer2\", {\n name: \"router1-peer2\",\n router: router1.name,\n region: \"us-central1\",\n peerIpAddress: \"169.254.1.2\",\n peerAsn: 64515,\n advertisedRoutePriority: 100,\n \"interface\": router1Interface2.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"network-1\",\n routing_mode=\"GLOBAL\",\n auto_create_subnetworks=False)\nha_gateway = gcp.compute.HaVpnGateway(\"ha_gateway\",\n region=\"us-central1\",\n name=\"ha-vpn\",\n network=network.id)\nexternal_gateway = gcp.compute.ExternalVpnGateway(\"external_gateway\",\n name=\"external-gateway\",\n redundancy_type=\"SINGLE_IP_INTERNALLY_REDUNDANT\",\n description=\"An externally managed VPN gateway\",\n interfaces=[{\n \"id\": 0,\n \"ipAddress\": \"8.8.8.8\",\n }])\nnetwork_subnet1 = gcp.compute.Subnetwork(\"network_subnet1\",\n name=\"ha-vpn-subnet-1\",\n ip_cidr_range=\"10.0.1.0/24\",\n region=\"us-central1\",\n network=network.id)\nnetwork_subnet2 = gcp.compute.Subnetwork(\"network_subnet2\",\n name=\"ha-vpn-subnet-2\",\n ip_cidr_range=\"10.0.2.0/24\",\n region=\"us-west1\",\n network=network.id)\nrouter1 = gcp.compute.Router(\"router1\",\n name=\"ha-vpn-router1\",\n network=network.name,\n bgp={\n \"asn\": 64514,\n })\ntunnel1 = gcp.compute.VPNTunnel(\"tunnel1\",\n name=\"ha-vpn-tunnel1\",\n region=\"us-central1\",\n vpn_gateway=ha_gateway.id,\n peer_external_gateway=external_gateway.id,\n peer_external_gateway_interface=0,\n shared_secret=\"a secret message\",\n router=router1.id,\n vpn_gateway_interface=0)\ntunnel2 = gcp.compute.VPNTunnel(\"tunnel2\",\n name=\"ha-vpn-tunnel2\",\n region=\"us-central1\",\n vpn_gateway=ha_gateway.id,\n peer_external_gateway=external_gateway.id,\n peer_external_gateway_interface=0,\n shared_secret=\"a secret message\",\n router=router1.id.apply(lambda id: f\" {id}\"),\n vpn_gateway_interface=1)\nrouter1_interface1 = gcp.compute.RouterInterface(\"router1_interface1\",\n name=\"router1-interface1\",\n router=router1.name,\n region=\"us-central1\",\n ip_range=\"169.254.0.1/30\",\n vpn_tunnel=tunnel1.name)\nrouter1_peer1 = gcp.compute.RouterPeer(\"router1_peer1\",\n name=\"router1-peer1\",\n router=router1.name,\n region=\"us-central1\",\n peer_ip_address=\"169.254.0.2\",\n peer_asn=64515,\n advertised_route_priority=100,\n interface=router1_interface1.name)\nrouter1_interface2 = gcp.compute.RouterInterface(\"router1_interface2\",\n name=\"router1-interface2\",\n router=router1.name,\n region=\"us-central1\",\n ip_range=\"169.254.1.1/30\",\n vpn_tunnel=tunnel2.name)\nrouter1_peer2 = gcp.compute.RouterPeer(\"router1_peer2\",\n name=\"router1-peer2\",\n router=router1.name,\n region=\"us-central1\",\n peer_ip_address=\"169.254.1.2\",\n peer_asn=64515,\n advertised_route_priority=100,\n interface=router1_interface2.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 network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"network-1\",\n RoutingMode = \"GLOBAL\",\n AutoCreateSubnetworks = false,\n });\n\n var haGateway = new Gcp.Compute.HaVpnGateway(\"ha_gateway\", new()\n {\n Region = \"us-central1\",\n Name = \"ha-vpn\",\n Network = network.Id,\n });\n\n var externalGateway = new Gcp.Compute.ExternalVpnGateway(\"external_gateway\", new()\n {\n Name = \"external-gateway\",\n RedundancyType = \"SINGLE_IP_INTERNALLY_REDUNDANT\",\n Description = \"An externally managed VPN gateway\",\n Interfaces = new[]\n {\n new Gcp.Compute.Inputs.ExternalVpnGatewayInterfaceArgs\n {\n Id = 0,\n IpAddress = \"8.8.8.8\",\n },\n },\n });\n\n var networkSubnet1 = new Gcp.Compute.Subnetwork(\"network_subnet1\", new()\n {\n Name = \"ha-vpn-subnet-1\",\n IpCidrRange = \"10.0.1.0/24\",\n Region = \"us-central1\",\n Network = network.Id,\n });\n\n var networkSubnet2 = new Gcp.Compute.Subnetwork(\"network_subnet2\", new()\n {\n Name = \"ha-vpn-subnet-2\",\n IpCidrRange = \"10.0.2.0/24\",\n Region = \"us-west1\",\n Network = network.Id,\n });\n\n var router1 = new Gcp.Compute.Router(\"router1\", new()\n {\n Name = \"ha-vpn-router1\",\n Network = network.Name,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 64514,\n },\n });\n\n var tunnel1 = new Gcp.Compute.VPNTunnel(\"tunnel1\", new()\n {\n Name = \"ha-vpn-tunnel1\",\n Region = \"us-central1\",\n VpnGateway = haGateway.Id,\n PeerExternalGateway = externalGateway.Id,\n PeerExternalGatewayInterface = 0,\n SharedSecret = \"a secret message\",\n Router = router1.Id,\n VpnGatewayInterface = 0,\n });\n\n var tunnel2 = new Gcp.Compute.VPNTunnel(\"tunnel2\", new()\n {\n Name = \"ha-vpn-tunnel2\",\n Region = \"us-central1\",\n VpnGateway = haGateway.Id,\n PeerExternalGateway = externalGateway.Id,\n PeerExternalGatewayInterface = 0,\n SharedSecret = \"a secret message\",\n Router = router1.Id.Apply(id =\u003e $\" {id}\"),\n VpnGatewayInterface = 1,\n });\n\n var router1Interface1 = new Gcp.Compute.RouterInterface(\"router1_interface1\", new()\n {\n Name = \"router1-interface1\",\n Router = router1.Name,\n Region = \"us-central1\",\n IpRange = \"169.254.0.1/30\",\n VpnTunnel = tunnel1.Name,\n });\n\n var router1Peer1 = new Gcp.Compute.RouterPeer(\"router1_peer1\", new()\n {\n Name = \"router1-peer1\",\n Router = router1.Name,\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.0.2\",\n PeerAsn = 64515,\n AdvertisedRoutePriority = 100,\n Interface = router1Interface1.Name,\n });\n\n var router1Interface2 = new Gcp.Compute.RouterInterface(\"router1_interface2\", new()\n {\n Name = \"router1-interface2\",\n Router = router1.Name,\n Region = \"us-central1\",\n IpRange = \"169.254.1.1/30\",\n VpnTunnel = tunnel2.Name,\n });\n\n var router1Peer2 = new Gcp.Compute.RouterPeer(\"router1_peer2\", new()\n {\n Name = \"router1-peer2\",\n Router = router1.Name,\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.1.2\",\n PeerAsn = 64515,\n AdvertisedRoutePriority = 100,\n Interface = router1Interface2.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-1\"),\n\t\t\tRoutingMode: pulumi.String(\"GLOBAL\"),\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\thaGateway, err := compute.NewHaVpnGateway(ctx, \"ha_gateway\", \u0026compute.HaVpnGatewayArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"ha-vpn\"),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texternalGateway, err := compute.NewExternalVpnGateway(ctx, \"external_gateway\", \u0026compute.ExternalVpnGatewayArgs{\n\t\t\tName: pulumi.String(\"external-gateway\"),\n\t\t\tRedundancyType: pulumi.String(\"SINGLE_IP_INTERNALLY_REDUNDANT\"),\n\t\t\tDescription: pulumi.String(\"An externally managed VPN gateway\"),\n\t\t\tInterfaces: compute.ExternalVpnGatewayInterfaceArray{\n\t\t\t\t\u0026compute.ExternalVpnGatewayInterfaceArgs{\n\t\t\t\t\tId: pulumi.Int(0),\n\t\t\t\t\tIpAddress: pulumi.String(\"8.8.8.8\"),\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.NewSubnetwork(ctx, \"network_subnet1\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"ha-vpn-subnet-1\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"network_subnet2\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"ha-vpn-subnet-2\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.2.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-west1\"),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouter1, err := compute.NewRouter(ctx, \"router1\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"ha-vpn-router1\"),\n\t\t\tNetwork: network.Name,\n\t\t\tBgp: \u0026compute.RouterBgpArgs{\n\t\t\t\tAsn: pulumi.Int(64514),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttunnel1, err := compute.NewVPNTunnel(ctx, \"tunnel1\", \u0026compute.VPNTunnelArgs{\n\t\t\tName: pulumi.String(\"ha-vpn-tunnel1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tVpnGateway: haGateway.ID(),\n\t\t\tPeerExternalGateway: externalGateway.ID(),\n\t\t\tPeerExternalGatewayInterface: pulumi.Int(0),\n\t\t\tSharedSecret: pulumi.String(\"a secret message\"),\n\t\t\tRouter: router1.ID(),\n\t\t\tVpnGatewayInterface: pulumi.Int(0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttunnel2, err := compute.NewVPNTunnel(ctx, \"tunnel2\", \u0026compute.VPNTunnelArgs{\n\t\t\tName: pulumi.String(\"ha-vpn-tunnel2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tVpnGateway: haGateway.ID(),\n\t\t\tPeerExternalGateway: externalGateway.ID(),\n\t\t\tPeerExternalGatewayInterface: pulumi.Int(0),\n\t\t\tSharedSecret: pulumi.String(\"a secret message\"),\n\t\t\tRouter: router1.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\" %v\", id), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tVpnGatewayInterface: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouter1Interface1, err := compute.NewRouterInterface(ctx, \"router1_interface1\", \u0026compute.RouterInterfaceArgs{\n\t\t\tName: pulumi.String(\"router1-interface1\"),\n\t\t\tRouter: router1.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpRange: pulumi.String(\"169.254.0.1/30\"),\n\t\t\tVpnTunnel: tunnel1.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRouterPeer(ctx, \"router1_peer1\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"router1-peer1\"),\n\t\t\tRouter: router1.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.0.2\"),\n\t\t\tPeerAsn: pulumi.Int(64515),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: router1Interface1.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouter1Interface2, err := compute.NewRouterInterface(ctx, \"router1_interface2\", \u0026compute.RouterInterfaceArgs{\n\t\t\tName: pulumi.String(\"router1-interface2\"),\n\t\t\tRouter: router1.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpRange: pulumi.String(\"169.254.1.1/30\"),\n\t\t\tVpnTunnel: tunnel2.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRouterPeer(ctx, \"router1_peer2\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"router1-peer2\"),\n\t\t\tRouter: router1.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.1.2\"),\n\t\t\tPeerAsn: pulumi.Int(64515),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: router1Interface2.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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.HaVpnGateway;\nimport com.pulumi.gcp.compute.HaVpnGatewayArgs;\nimport com.pulumi.gcp.compute.ExternalVpnGateway;\nimport com.pulumi.gcp.compute.ExternalVpnGatewayArgs;\nimport com.pulumi.gcp.compute.inputs.ExternalVpnGatewayInterfaceArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\nimport com.pulumi.gcp.compute.VPNTunnel;\nimport com.pulumi.gcp.compute.VPNTunnelArgs;\nimport com.pulumi.gcp.compute.RouterInterface;\nimport com.pulumi.gcp.compute.RouterInterfaceArgs;\nimport com.pulumi.gcp.compute.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\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 = new Network(\"network\", NetworkArgs.builder()\n .name(\"network-1\")\n .routingMode(\"GLOBAL\")\n .autoCreateSubnetworks(false)\n .build());\n\n var haGateway = new HaVpnGateway(\"haGateway\", HaVpnGatewayArgs.builder()\n .region(\"us-central1\")\n .name(\"ha-vpn\")\n .network(network.id())\n .build());\n\n var externalGateway = new ExternalVpnGateway(\"externalGateway\", ExternalVpnGatewayArgs.builder()\n .name(\"external-gateway\")\n .redundancyType(\"SINGLE_IP_INTERNALLY_REDUNDANT\")\n .description(\"An externally managed VPN gateway\")\n .interfaces(ExternalVpnGatewayInterfaceArgs.builder()\n .id(0)\n .ipAddress(\"8.8.8.8\")\n .build())\n .build());\n\n var networkSubnet1 = new Subnetwork(\"networkSubnet1\", SubnetworkArgs.builder()\n .name(\"ha-vpn-subnet-1\")\n .ipCidrRange(\"10.0.1.0/24\")\n .region(\"us-central1\")\n .network(network.id())\n .build());\n\n var networkSubnet2 = new Subnetwork(\"networkSubnet2\", SubnetworkArgs.builder()\n .name(\"ha-vpn-subnet-2\")\n .ipCidrRange(\"10.0.2.0/24\")\n .region(\"us-west1\")\n .network(network.id())\n .build());\n\n var router1 = new Router(\"router1\", RouterArgs.builder()\n .name(\"ha-vpn-router1\")\n .network(network.name())\n .bgp(RouterBgpArgs.builder()\n .asn(64514)\n .build())\n .build());\n\n var tunnel1 = new VPNTunnel(\"tunnel1\", VPNTunnelArgs.builder()\n .name(\"ha-vpn-tunnel1\")\n .region(\"us-central1\")\n .vpnGateway(haGateway.id())\n .peerExternalGateway(externalGateway.id())\n .peerExternalGatewayInterface(0)\n .sharedSecret(\"a secret message\")\n .router(router1.id())\n .vpnGatewayInterface(0)\n .build());\n\n var tunnel2 = new VPNTunnel(\"tunnel2\", VPNTunnelArgs.builder()\n .name(\"ha-vpn-tunnel2\")\n .region(\"us-central1\")\n .vpnGateway(haGateway.id())\n .peerExternalGateway(externalGateway.id())\n .peerExternalGatewayInterface(0)\n .sharedSecret(\"a secret message\")\n .router(router1.id().applyValue(id -\u003e String.format(\" %s\", id)))\n .vpnGatewayInterface(1)\n .build());\n\n var router1Interface1 = new RouterInterface(\"router1Interface1\", RouterInterfaceArgs.builder()\n .name(\"router1-interface1\")\n .router(router1.name())\n .region(\"us-central1\")\n .ipRange(\"169.254.0.1/30\")\n .vpnTunnel(tunnel1.name())\n .build());\n\n var router1Peer1 = new RouterPeer(\"router1Peer1\", RouterPeerArgs.builder()\n .name(\"router1-peer1\")\n .router(router1.name())\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.0.2\")\n .peerAsn(64515)\n .advertisedRoutePriority(100)\n .interface_(router1Interface1.name())\n .build());\n\n var router1Interface2 = new RouterInterface(\"router1Interface2\", RouterInterfaceArgs.builder()\n .name(\"router1-interface2\")\n .router(router1.name())\n .region(\"us-central1\")\n .ipRange(\"169.254.1.1/30\")\n .vpnTunnel(tunnel2.name())\n .build());\n\n var router1Peer2 = new RouterPeer(\"router1Peer2\", RouterPeerArgs.builder()\n .name(\"router1-peer2\")\n .router(router1.name())\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.1.2\")\n .peerAsn(64515)\n .advertisedRoutePriority(100)\n .interface_(router1Interface2.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n haGateway:\n type: gcp:compute:HaVpnGateway\n name: ha_gateway\n properties:\n region: us-central1\n name: ha-vpn\n network: ${network.id}\n externalGateway:\n type: gcp:compute:ExternalVpnGateway\n name: external_gateway\n properties:\n name: external-gateway\n redundancyType: SINGLE_IP_INTERNALLY_REDUNDANT\n description: An externally managed VPN gateway\n interfaces:\n - id: 0\n ipAddress: 8.8.8.8\n network:\n type: gcp:compute:Network\n properties:\n name: network-1\n routingMode: GLOBAL\n autoCreateSubnetworks: false\n networkSubnet1:\n type: gcp:compute:Subnetwork\n name: network_subnet1\n properties:\n name: ha-vpn-subnet-1\n ipCidrRange: 10.0.1.0/24\n region: us-central1\n network: ${network.id}\n networkSubnet2:\n type: gcp:compute:Subnetwork\n name: network_subnet2\n properties:\n name: ha-vpn-subnet-2\n ipCidrRange: 10.0.2.0/24\n region: us-west1\n network: ${network.id}\n router1:\n type: gcp:compute:Router\n properties:\n name: ha-vpn-router1\n network: ${network.name}\n bgp:\n asn: 64514\n tunnel1:\n type: gcp:compute:VPNTunnel\n properties:\n name: ha-vpn-tunnel1\n region: us-central1\n vpnGateway: ${haGateway.id}\n peerExternalGateway: ${externalGateway.id}\n peerExternalGatewayInterface: 0\n sharedSecret: a secret message\n router: ${router1.id}\n vpnGatewayInterface: 0\n tunnel2:\n type: gcp:compute:VPNTunnel\n properties:\n name: ha-vpn-tunnel2\n region: us-central1\n vpnGateway: ${haGateway.id}\n peerExternalGateway: ${externalGateway.id}\n peerExternalGatewayInterface: 0\n sharedSecret: a secret message\n router: ' ${router1.id}'\n vpnGatewayInterface: 1\n router1Interface1:\n type: gcp:compute:RouterInterface\n name: router1_interface1\n properties:\n name: router1-interface1\n router: ${router1.name}\n region: us-central1\n ipRange: 169.254.0.1/30\n vpnTunnel: ${tunnel1.name}\n router1Peer1:\n type: gcp:compute:RouterPeer\n name: router1_peer1\n properties:\n name: router1-peer1\n router: ${router1.name}\n region: us-central1\n peerIpAddress: 169.254.0.2\n peerAsn: 64515\n advertisedRoutePriority: 100\n interface: ${router1Interface1.name}\n router1Interface2:\n type: gcp:compute:RouterInterface\n name: router1_interface2\n properties:\n name: router1-interface2\n router: ${router1.name}\n region: us-central1\n ipRange: 169.254.1.1/30\n vpnTunnel: ${tunnel2.name}\n router1Peer2:\n type: gcp:compute:RouterPeer\n name: router1_peer2\n properties:\n name: router1-peer2\n router: ${router1.name}\n region: us-central1\n peerIpAddress: 169.254.1.2\n peerAsn: 64515\n advertisedRoutePriority: 100\n interface: ${router1Interface2.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nExternalVpnGateway can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/externalVpnGateways/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ExternalVpnGateway can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/externalVpnGateway:ExternalVpnGateway default projects/{{project}}/global/externalVpnGateways/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/externalVpnGateway:ExternalVpnGateway default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/externalVpnGateway:ExternalVpnGateway default {{name}}\n```\n\n", + "description": "Represents a VPN gateway managed outside of GCP.\n\n\nTo get more information about ExternalVpnGateway, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/externalVpnGateways)\n\n## Example Usage\n\n### External Vpn Gateway\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"network-1\",\n routingMode: \"GLOBAL\",\n autoCreateSubnetworks: false,\n});\nconst haGateway = new gcp.compute.HaVpnGateway(\"ha_gateway\", {\n region: \"us-central1\",\n name: \"ha-vpn\",\n network: network.id,\n});\nconst externalGateway = new gcp.compute.ExternalVpnGateway(\"external_gateway\", {\n name: \"external-gateway\",\n redundancyType: \"SINGLE_IP_INTERNALLY_REDUNDANT\",\n description: \"An externally managed VPN gateway\",\n interfaces: [{\n id: 0,\n ipAddress: \"8.8.8.8\",\n }],\n});\nconst networkSubnet1 = new gcp.compute.Subnetwork(\"network_subnet1\", {\n name: \"ha-vpn-subnet-1\",\n ipCidrRange: \"10.0.1.0/24\",\n region: \"us-central1\",\n network: network.id,\n});\nconst networkSubnet2 = new gcp.compute.Subnetwork(\"network_subnet2\", {\n name: \"ha-vpn-subnet-2\",\n ipCidrRange: \"10.0.2.0/24\",\n region: \"us-west1\",\n network: network.id,\n});\nconst router1 = new gcp.compute.Router(\"router1\", {\n name: \"ha-vpn-router1\",\n network: network.name,\n bgp: {\n asn: 64514,\n },\n});\nconst tunnel1 = new gcp.compute.VPNTunnel(\"tunnel1\", {\n name: \"ha-vpn-tunnel1\",\n region: \"us-central1\",\n vpnGateway: haGateway.id,\n peerExternalGateway: externalGateway.id,\n peerExternalGatewayInterface: 0,\n sharedSecret: \"a secret message\",\n router: router1.id,\n vpnGatewayInterface: 0,\n});\nconst tunnel2 = new gcp.compute.VPNTunnel(\"tunnel2\", {\n name: \"ha-vpn-tunnel2\",\n region: \"us-central1\",\n vpnGateway: haGateway.id,\n peerExternalGateway: externalGateway.id,\n peerExternalGatewayInterface: 0,\n sharedSecret: \"a secret message\",\n router: pulumi.interpolate` ${router1.id}`,\n vpnGatewayInterface: 1,\n});\nconst router1Interface1 = new gcp.compute.RouterInterface(\"router1_interface1\", {\n name: \"router1-interface1\",\n router: router1.name,\n region: \"us-central1\",\n ipRange: \"169.254.0.1/30\",\n vpnTunnel: tunnel1.name,\n});\nconst router1Peer1 = new gcp.compute.RouterPeer(\"router1_peer1\", {\n name: \"router1-peer1\",\n router: router1.name,\n region: \"us-central1\",\n peerIpAddress: \"169.254.0.2\",\n peerAsn: 64515,\n advertisedRoutePriority: 100,\n \"interface\": router1Interface1.name,\n});\nconst router1Interface2 = new gcp.compute.RouterInterface(\"router1_interface2\", {\n name: \"router1-interface2\",\n router: router1.name,\n region: \"us-central1\",\n ipRange: \"169.254.1.1/30\",\n vpnTunnel: tunnel2.name,\n});\nconst router1Peer2 = new gcp.compute.RouterPeer(\"router1_peer2\", {\n name: \"router1-peer2\",\n router: router1.name,\n region: \"us-central1\",\n peerIpAddress: \"169.254.1.2\",\n peerAsn: 64515,\n advertisedRoutePriority: 100,\n \"interface\": router1Interface2.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"network-1\",\n routing_mode=\"GLOBAL\",\n auto_create_subnetworks=False)\nha_gateway = gcp.compute.HaVpnGateway(\"ha_gateway\",\n region=\"us-central1\",\n name=\"ha-vpn\",\n network=network.id)\nexternal_gateway = gcp.compute.ExternalVpnGateway(\"external_gateway\",\n name=\"external-gateway\",\n redundancy_type=\"SINGLE_IP_INTERNALLY_REDUNDANT\",\n description=\"An externally managed VPN gateway\",\n interfaces=[{\n \"id\": 0,\n \"ip_address\": \"8.8.8.8\",\n }])\nnetwork_subnet1 = gcp.compute.Subnetwork(\"network_subnet1\",\n name=\"ha-vpn-subnet-1\",\n ip_cidr_range=\"10.0.1.0/24\",\n region=\"us-central1\",\n network=network.id)\nnetwork_subnet2 = gcp.compute.Subnetwork(\"network_subnet2\",\n name=\"ha-vpn-subnet-2\",\n ip_cidr_range=\"10.0.2.0/24\",\n region=\"us-west1\",\n network=network.id)\nrouter1 = gcp.compute.Router(\"router1\",\n name=\"ha-vpn-router1\",\n network=network.name,\n bgp={\n \"asn\": 64514,\n })\ntunnel1 = gcp.compute.VPNTunnel(\"tunnel1\",\n name=\"ha-vpn-tunnel1\",\n region=\"us-central1\",\n vpn_gateway=ha_gateway.id,\n peer_external_gateway=external_gateway.id,\n peer_external_gateway_interface=0,\n shared_secret=\"a secret message\",\n router=router1.id,\n vpn_gateway_interface=0)\ntunnel2 = gcp.compute.VPNTunnel(\"tunnel2\",\n name=\"ha-vpn-tunnel2\",\n region=\"us-central1\",\n vpn_gateway=ha_gateway.id,\n peer_external_gateway=external_gateway.id,\n peer_external_gateway_interface=0,\n shared_secret=\"a secret message\",\n router=router1.id.apply(lambda id: f\" {id}\"),\n vpn_gateway_interface=1)\nrouter1_interface1 = gcp.compute.RouterInterface(\"router1_interface1\",\n name=\"router1-interface1\",\n router=router1.name,\n region=\"us-central1\",\n ip_range=\"169.254.0.1/30\",\n vpn_tunnel=tunnel1.name)\nrouter1_peer1 = gcp.compute.RouterPeer(\"router1_peer1\",\n name=\"router1-peer1\",\n router=router1.name,\n region=\"us-central1\",\n peer_ip_address=\"169.254.0.2\",\n peer_asn=64515,\n advertised_route_priority=100,\n interface=router1_interface1.name)\nrouter1_interface2 = gcp.compute.RouterInterface(\"router1_interface2\",\n name=\"router1-interface2\",\n router=router1.name,\n region=\"us-central1\",\n ip_range=\"169.254.1.1/30\",\n vpn_tunnel=tunnel2.name)\nrouter1_peer2 = gcp.compute.RouterPeer(\"router1_peer2\",\n name=\"router1-peer2\",\n router=router1.name,\n region=\"us-central1\",\n peer_ip_address=\"169.254.1.2\",\n peer_asn=64515,\n advertised_route_priority=100,\n interface=router1_interface2.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 network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"network-1\",\n RoutingMode = \"GLOBAL\",\n AutoCreateSubnetworks = false,\n });\n\n var haGateway = new Gcp.Compute.HaVpnGateway(\"ha_gateway\", new()\n {\n Region = \"us-central1\",\n Name = \"ha-vpn\",\n Network = network.Id,\n });\n\n var externalGateway = new Gcp.Compute.ExternalVpnGateway(\"external_gateway\", new()\n {\n Name = \"external-gateway\",\n RedundancyType = \"SINGLE_IP_INTERNALLY_REDUNDANT\",\n Description = \"An externally managed VPN gateway\",\n Interfaces = new[]\n {\n new Gcp.Compute.Inputs.ExternalVpnGatewayInterfaceArgs\n {\n Id = 0,\n IpAddress = \"8.8.8.8\",\n },\n },\n });\n\n var networkSubnet1 = new Gcp.Compute.Subnetwork(\"network_subnet1\", new()\n {\n Name = \"ha-vpn-subnet-1\",\n IpCidrRange = \"10.0.1.0/24\",\n Region = \"us-central1\",\n Network = network.Id,\n });\n\n var networkSubnet2 = new Gcp.Compute.Subnetwork(\"network_subnet2\", new()\n {\n Name = \"ha-vpn-subnet-2\",\n IpCidrRange = \"10.0.2.0/24\",\n Region = \"us-west1\",\n Network = network.Id,\n });\n\n var router1 = new Gcp.Compute.Router(\"router1\", new()\n {\n Name = \"ha-vpn-router1\",\n Network = network.Name,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 64514,\n },\n });\n\n var tunnel1 = new Gcp.Compute.VPNTunnel(\"tunnel1\", new()\n {\n Name = \"ha-vpn-tunnel1\",\n Region = \"us-central1\",\n VpnGateway = haGateway.Id,\n PeerExternalGateway = externalGateway.Id,\n PeerExternalGatewayInterface = 0,\n SharedSecret = \"a secret message\",\n Router = router1.Id,\n VpnGatewayInterface = 0,\n });\n\n var tunnel2 = new Gcp.Compute.VPNTunnel(\"tunnel2\", new()\n {\n Name = \"ha-vpn-tunnel2\",\n Region = \"us-central1\",\n VpnGateway = haGateway.Id,\n PeerExternalGateway = externalGateway.Id,\n PeerExternalGatewayInterface = 0,\n SharedSecret = \"a secret message\",\n Router = router1.Id.Apply(id =\u003e $\" {id}\"),\n VpnGatewayInterface = 1,\n });\n\n var router1Interface1 = new Gcp.Compute.RouterInterface(\"router1_interface1\", new()\n {\n Name = \"router1-interface1\",\n Router = router1.Name,\n Region = \"us-central1\",\n IpRange = \"169.254.0.1/30\",\n VpnTunnel = tunnel1.Name,\n });\n\n var router1Peer1 = new Gcp.Compute.RouterPeer(\"router1_peer1\", new()\n {\n Name = \"router1-peer1\",\n Router = router1.Name,\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.0.2\",\n PeerAsn = 64515,\n AdvertisedRoutePriority = 100,\n Interface = router1Interface1.Name,\n });\n\n var router1Interface2 = new Gcp.Compute.RouterInterface(\"router1_interface2\", new()\n {\n Name = \"router1-interface2\",\n Router = router1.Name,\n Region = \"us-central1\",\n IpRange = \"169.254.1.1/30\",\n VpnTunnel = tunnel2.Name,\n });\n\n var router1Peer2 = new Gcp.Compute.RouterPeer(\"router1_peer2\", new()\n {\n Name = \"router1-peer2\",\n Router = router1.Name,\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.1.2\",\n PeerAsn = 64515,\n AdvertisedRoutePriority = 100,\n Interface = router1Interface2.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-1\"),\n\t\t\tRoutingMode: pulumi.String(\"GLOBAL\"),\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\thaGateway, err := compute.NewHaVpnGateway(ctx, \"ha_gateway\", \u0026compute.HaVpnGatewayArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"ha-vpn\"),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texternalGateway, err := compute.NewExternalVpnGateway(ctx, \"external_gateway\", \u0026compute.ExternalVpnGatewayArgs{\n\t\t\tName: pulumi.String(\"external-gateway\"),\n\t\t\tRedundancyType: pulumi.String(\"SINGLE_IP_INTERNALLY_REDUNDANT\"),\n\t\t\tDescription: pulumi.String(\"An externally managed VPN gateway\"),\n\t\t\tInterfaces: compute.ExternalVpnGatewayInterfaceArray{\n\t\t\t\t\u0026compute.ExternalVpnGatewayInterfaceArgs{\n\t\t\t\t\tId: pulumi.Int(0),\n\t\t\t\t\tIpAddress: pulumi.String(\"8.8.8.8\"),\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.NewSubnetwork(ctx, \"network_subnet1\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"ha-vpn-subnet-1\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"network_subnet2\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"ha-vpn-subnet-2\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.2.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-west1\"),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouter1, err := compute.NewRouter(ctx, \"router1\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"ha-vpn-router1\"),\n\t\t\tNetwork: network.Name,\n\t\t\tBgp: \u0026compute.RouterBgpArgs{\n\t\t\t\tAsn: pulumi.Int(64514),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttunnel1, err := compute.NewVPNTunnel(ctx, \"tunnel1\", \u0026compute.VPNTunnelArgs{\n\t\t\tName: pulumi.String(\"ha-vpn-tunnel1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tVpnGateway: haGateway.ID(),\n\t\t\tPeerExternalGateway: externalGateway.ID(),\n\t\t\tPeerExternalGatewayInterface: pulumi.Int(0),\n\t\t\tSharedSecret: pulumi.String(\"a secret message\"),\n\t\t\tRouter: router1.ID(),\n\t\t\tVpnGatewayInterface: pulumi.Int(0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttunnel2, err := compute.NewVPNTunnel(ctx, \"tunnel2\", \u0026compute.VPNTunnelArgs{\n\t\t\tName: pulumi.String(\"ha-vpn-tunnel2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tVpnGateway: haGateway.ID(),\n\t\t\tPeerExternalGateway: externalGateway.ID(),\n\t\t\tPeerExternalGatewayInterface: pulumi.Int(0),\n\t\t\tSharedSecret: pulumi.String(\"a secret message\"),\n\t\t\tRouter: router1.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\" %v\", id), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tVpnGatewayInterface: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouter1Interface1, err := compute.NewRouterInterface(ctx, \"router1_interface1\", \u0026compute.RouterInterfaceArgs{\n\t\t\tName: pulumi.String(\"router1-interface1\"),\n\t\t\tRouter: router1.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpRange: pulumi.String(\"169.254.0.1/30\"),\n\t\t\tVpnTunnel: tunnel1.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRouterPeer(ctx, \"router1_peer1\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"router1-peer1\"),\n\t\t\tRouter: router1.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.0.2\"),\n\t\t\tPeerAsn: pulumi.Int(64515),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: router1Interface1.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouter1Interface2, err := compute.NewRouterInterface(ctx, \"router1_interface2\", \u0026compute.RouterInterfaceArgs{\n\t\t\tName: pulumi.String(\"router1-interface2\"),\n\t\t\tRouter: router1.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpRange: pulumi.String(\"169.254.1.1/30\"),\n\t\t\tVpnTunnel: tunnel2.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRouterPeer(ctx, \"router1_peer2\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"router1-peer2\"),\n\t\t\tRouter: router1.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.1.2\"),\n\t\t\tPeerAsn: pulumi.Int(64515),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: router1Interface2.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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.HaVpnGateway;\nimport com.pulumi.gcp.compute.HaVpnGatewayArgs;\nimport com.pulumi.gcp.compute.ExternalVpnGateway;\nimport com.pulumi.gcp.compute.ExternalVpnGatewayArgs;\nimport com.pulumi.gcp.compute.inputs.ExternalVpnGatewayInterfaceArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\nimport com.pulumi.gcp.compute.VPNTunnel;\nimport com.pulumi.gcp.compute.VPNTunnelArgs;\nimport com.pulumi.gcp.compute.RouterInterface;\nimport com.pulumi.gcp.compute.RouterInterfaceArgs;\nimport com.pulumi.gcp.compute.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\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 = new Network(\"network\", NetworkArgs.builder()\n .name(\"network-1\")\n .routingMode(\"GLOBAL\")\n .autoCreateSubnetworks(false)\n .build());\n\n var haGateway = new HaVpnGateway(\"haGateway\", HaVpnGatewayArgs.builder()\n .region(\"us-central1\")\n .name(\"ha-vpn\")\n .network(network.id())\n .build());\n\n var externalGateway = new ExternalVpnGateway(\"externalGateway\", ExternalVpnGatewayArgs.builder()\n .name(\"external-gateway\")\n .redundancyType(\"SINGLE_IP_INTERNALLY_REDUNDANT\")\n .description(\"An externally managed VPN gateway\")\n .interfaces(ExternalVpnGatewayInterfaceArgs.builder()\n .id(0)\n .ipAddress(\"8.8.8.8\")\n .build())\n .build());\n\n var networkSubnet1 = new Subnetwork(\"networkSubnet1\", SubnetworkArgs.builder()\n .name(\"ha-vpn-subnet-1\")\n .ipCidrRange(\"10.0.1.0/24\")\n .region(\"us-central1\")\n .network(network.id())\n .build());\n\n var networkSubnet2 = new Subnetwork(\"networkSubnet2\", SubnetworkArgs.builder()\n .name(\"ha-vpn-subnet-2\")\n .ipCidrRange(\"10.0.2.0/24\")\n .region(\"us-west1\")\n .network(network.id())\n .build());\n\n var router1 = new Router(\"router1\", RouterArgs.builder()\n .name(\"ha-vpn-router1\")\n .network(network.name())\n .bgp(RouterBgpArgs.builder()\n .asn(64514)\n .build())\n .build());\n\n var tunnel1 = new VPNTunnel(\"tunnel1\", VPNTunnelArgs.builder()\n .name(\"ha-vpn-tunnel1\")\n .region(\"us-central1\")\n .vpnGateway(haGateway.id())\n .peerExternalGateway(externalGateway.id())\n .peerExternalGatewayInterface(0)\n .sharedSecret(\"a secret message\")\n .router(router1.id())\n .vpnGatewayInterface(0)\n .build());\n\n var tunnel2 = new VPNTunnel(\"tunnel2\", VPNTunnelArgs.builder()\n .name(\"ha-vpn-tunnel2\")\n .region(\"us-central1\")\n .vpnGateway(haGateway.id())\n .peerExternalGateway(externalGateway.id())\n .peerExternalGatewayInterface(0)\n .sharedSecret(\"a secret message\")\n .router(router1.id().applyValue(id -\u003e String.format(\" %s\", id)))\n .vpnGatewayInterface(1)\n .build());\n\n var router1Interface1 = new RouterInterface(\"router1Interface1\", RouterInterfaceArgs.builder()\n .name(\"router1-interface1\")\n .router(router1.name())\n .region(\"us-central1\")\n .ipRange(\"169.254.0.1/30\")\n .vpnTunnel(tunnel1.name())\n .build());\n\n var router1Peer1 = new RouterPeer(\"router1Peer1\", RouterPeerArgs.builder()\n .name(\"router1-peer1\")\n .router(router1.name())\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.0.2\")\n .peerAsn(64515)\n .advertisedRoutePriority(100)\n .interface_(router1Interface1.name())\n .build());\n\n var router1Interface2 = new RouterInterface(\"router1Interface2\", RouterInterfaceArgs.builder()\n .name(\"router1-interface2\")\n .router(router1.name())\n .region(\"us-central1\")\n .ipRange(\"169.254.1.1/30\")\n .vpnTunnel(tunnel2.name())\n .build());\n\n var router1Peer2 = new RouterPeer(\"router1Peer2\", RouterPeerArgs.builder()\n .name(\"router1-peer2\")\n .router(router1.name())\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.1.2\")\n .peerAsn(64515)\n .advertisedRoutePriority(100)\n .interface_(router1Interface2.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n haGateway:\n type: gcp:compute:HaVpnGateway\n name: ha_gateway\n properties:\n region: us-central1\n name: ha-vpn\n network: ${network.id}\n externalGateway:\n type: gcp:compute:ExternalVpnGateway\n name: external_gateway\n properties:\n name: external-gateway\n redundancyType: SINGLE_IP_INTERNALLY_REDUNDANT\n description: An externally managed VPN gateway\n interfaces:\n - id: 0\n ipAddress: 8.8.8.8\n network:\n type: gcp:compute:Network\n properties:\n name: network-1\n routingMode: GLOBAL\n autoCreateSubnetworks: false\n networkSubnet1:\n type: gcp:compute:Subnetwork\n name: network_subnet1\n properties:\n name: ha-vpn-subnet-1\n ipCidrRange: 10.0.1.0/24\n region: us-central1\n network: ${network.id}\n networkSubnet2:\n type: gcp:compute:Subnetwork\n name: network_subnet2\n properties:\n name: ha-vpn-subnet-2\n ipCidrRange: 10.0.2.0/24\n region: us-west1\n network: ${network.id}\n router1:\n type: gcp:compute:Router\n properties:\n name: ha-vpn-router1\n network: ${network.name}\n bgp:\n asn: 64514\n tunnel1:\n type: gcp:compute:VPNTunnel\n properties:\n name: ha-vpn-tunnel1\n region: us-central1\n vpnGateway: ${haGateway.id}\n peerExternalGateway: ${externalGateway.id}\n peerExternalGatewayInterface: 0\n sharedSecret: a secret message\n router: ${router1.id}\n vpnGatewayInterface: 0\n tunnel2:\n type: gcp:compute:VPNTunnel\n properties:\n name: ha-vpn-tunnel2\n region: us-central1\n vpnGateway: ${haGateway.id}\n peerExternalGateway: ${externalGateway.id}\n peerExternalGatewayInterface: 0\n sharedSecret: a secret message\n router: ' ${router1.id}'\n vpnGatewayInterface: 1\n router1Interface1:\n type: gcp:compute:RouterInterface\n name: router1_interface1\n properties:\n name: router1-interface1\n router: ${router1.name}\n region: us-central1\n ipRange: 169.254.0.1/30\n vpnTunnel: ${tunnel1.name}\n router1Peer1:\n type: gcp:compute:RouterPeer\n name: router1_peer1\n properties:\n name: router1-peer1\n router: ${router1.name}\n region: us-central1\n peerIpAddress: 169.254.0.2\n peerAsn: 64515\n advertisedRoutePriority: 100\n interface: ${router1Interface1.name}\n router1Interface2:\n type: gcp:compute:RouterInterface\n name: router1_interface2\n properties:\n name: router1-interface2\n router: ${router1.name}\n region: us-central1\n ipRange: 169.254.1.1/30\n vpnTunnel: ${tunnel2.name}\n router1Peer2:\n type: gcp:compute:RouterPeer\n name: router1_peer2\n properties:\n name: router1-peer2\n router: ${router1.name}\n region: us-central1\n peerIpAddress: 169.254.1.2\n peerAsn: 64515\n advertisedRoutePriority: 100\n interface: ${router1Interface2.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nExternalVpnGateway can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/externalVpnGateways/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ExternalVpnGateway can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/externalVpnGateway:ExternalVpnGateway default projects/{{project}}/global/externalVpnGateways/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/externalVpnGateway:ExternalVpnGateway default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/externalVpnGateway:ExternalVpnGateway default {{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -144611,7 +144611,7 @@ } }, "gcp:compute/firewallPolicyRule:FirewallPolicyRule": { - "description": "The Compute FirewallPolicyRule resource\n\n## Example Usage\n\n### Basic_fir_sec_rule\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicGlobalNetworksecurityAddressGroup = new gcp.networksecurity.AddressGroup(\"basic_global_networksecurity_address_group\", {\n name: \"policy\",\n parent: \"organizations/123456789\",\n description: \"Sample global networksecurity_address_group\",\n location: \"global\",\n items: [\"208.80.154.224/32\"],\n type: \"IPV4\",\n capacity: 100,\n});\nconst folder = new gcp.organizations.Folder(\"folder\", {\n displayName: \"policy\",\n parent: \"organizations/123456789\",\n});\nconst _default = new gcp.compute.FirewallPolicy(\"default\", {\n parent: folder.id,\n shortName: \"policy\",\n description: \"Resource created for Terraform acceptance testing\",\n});\nconst primary = new gcp.compute.FirewallPolicyRule(\"primary\", {\n firewallPolicy: _default.name,\n description: \"Resource created for Terraform acceptance testing\",\n priority: 9000,\n enableLogging: true,\n action: \"allow\",\n direction: \"EGRESS\",\n disabled: false,\n match: {\n layer4Configs: [\n {\n ipProtocol: \"tcp\",\n ports: [\"8080\"],\n },\n {\n ipProtocol: \"udp\",\n ports: [\"22\"],\n },\n ],\n destIpRanges: [\"11.100.0.1/32\"],\n destFqdns: [],\n destRegionCodes: [\"US\"],\n destThreatIntelligences: [\"iplist-known-malicious-ips\"],\n srcAddressGroups: [],\n destAddressGroups: [basicGlobalNetworksecurityAddressGroup.id],\n },\n targetServiceAccounts: [\"my@service-account.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_global_networksecurity_address_group = gcp.networksecurity.AddressGroup(\"basic_global_networksecurity_address_group\",\n name=\"policy\",\n parent=\"organizations/123456789\",\n description=\"Sample global networksecurity_address_group\",\n location=\"global\",\n items=[\"208.80.154.224/32\"],\n type=\"IPV4\",\n capacity=100)\nfolder = gcp.organizations.Folder(\"folder\",\n display_name=\"policy\",\n parent=\"organizations/123456789\")\ndefault = gcp.compute.FirewallPolicy(\"default\",\n parent=folder.id,\n short_name=\"policy\",\n description=\"Resource created for Terraform acceptance testing\")\nprimary = gcp.compute.FirewallPolicyRule(\"primary\",\n firewall_policy=default.name,\n description=\"Resource created for Terraform acceptance testing\",\n priority=9000,\n enable_logging=True,\n action=\"allow\",\n direction=\"EGRESS\",\n disabled=False,\n match={\n \"layer4Configs\": [\n {\n \"ipProtocol\": \"tcp\",\n \"ports\": [\"8080\"],\n },\n {\n \"ipProtocol\": \"udp\",\n \"ports\": [\"22\"],\n },\n ],\n \"destIpRanges\": [\"11.100.0.1/32\"],\n \"destFqdns\": [],\n \"destRegionCodes\": [\"US\"],\n \"destThreatIntelligences\": [\"iplist-known-malicious-ips\"],\n \"srcAddressGroups\": [],\n \"destAddressGroups\": [basic_global_networksecurity_address_group.id],\n },\n target_service_accounts=[\"my@service-account.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 basicGlobalNetworksecurityAddressGroup = new Gcp.NetworkSecurity.AddressGroup(\"basic_global_networksecurity_address_group\", new()\n {\n Name = \"policy\",\n Parent = \"organizations/123456789\",\n Description = \"Sample global networksecurity_address_group\",\n Location = \"global\",\n Items = new[]\n {\n \"208.80.154.224/32\",\n },\n Type = \"IPV4\",\n Capacity = 100,\n });\n\n var folder = new Gcp.Organizations.Folder(\"folder\", new()\n {\n DisplayName = \"policy\",\n Parent = \"organizations/123456789\",\n });\n\n var @default = new Gcp.Compute.FirewallPolicy(\"default\", new()\n {\n Parent = folder.Id,\n ShortName = \"policy\",\n Description = \"Resource created for Terraform acceptance testing\",\n });\n\n var primary = new Gcp.Compute.FirewallPolicyRule(\"primary\", new()\n {\n FirewallPolicy = @default.Name,\n Description = \"Resource created for Terraform acceptance testing\",\n Priority = 9000,\n EnableLogging = true,\n Action = \"allow\",\n Direction = \"EGRESS\",\n Disabled = false,\n Match = new Gcp.Compute.Inputs.FirewallPolicyRuleMatchArgs\n {\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.FirewallPolicyRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"tcp\",\n Ports = new[]\n {\n \"8080\",\n },\n },\n new Gcp.Compute.Inputs.FirewallPolicyRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"udp\",\n Ports = new[]\n {\n \"22\",\n },\n },\n },\n DestIpRanges = new[]\n {\n \"11.100.0.1/32\",\n },\n DestFqdns = new() { },\n DestRegionCodes = new[]\n {\n \"US\",\n },\n DestThreatIntelligences = new[]\n {\n \"iplist-known-malicious-ips\",\n },\n SrcAddressGroups = new() { },\n DestAddressGroups = new[]\n {\n basicGlobalNetworksecurityAddressGroup.Id,\n },\n },\n TargetServiceAccounts = new[]\n {\n \"my@service-account.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasicGlobalNetworksecurityAddressGroup, err := networksecurity.NewAddressGroup(ctx, \"basic_global_networksecurity_address_group\", \u0026networksecurity.AddressGroupArgs{\n\t\t\tName: pulumi.String(\"policy\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"Sample global networksecurity_address_group\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tItems: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"208.80.154.224/32\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"IPV4\"),\n\t\t\tCapacity: pulumi.Int(100),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfolder, err := organizations.NewFolder(ctx, \"folder\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"policy\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFirewallPolicy(ctx, \"default\", \u0026compute.FirewallPolicyArgs{\n\t\t\tParent: folder.ID(),\n\t\t\tShortName: pulumi.String(\"policy\"),\n\t\t\tDescription: pulumi.String(\"Resource created for Terraform acceptance testing\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFirewallPolicyRule(ctx, \"primary\", \u0026compute.FirewallPolicyRuleArgs{\n\t\t\tFirewallPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"Resource created for Terraform acceptance testing\"),\n\t\t\tPriority: pulumi.Int(9000),\n\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tDirection: pulumi.String(\"EGRESS\"),\n\t\t\tDisabled: pulumi.Bool(false),\n\t\t\tMatch: \u0026compute.FirewallPolicyRuleMatchArgs{\n\t\t\t\tLayer4Configs: compute.FirewallPolicyRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\u0026compute.FirewallPolicyRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"8080\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026compute.FirewallPolicyRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\tIpProtocol: pulumi.String(\"udp\"),\n\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"22\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDestIpRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"11.100.0.1/32\"),\n\t\t\t\t},\n\t\t\t\tDestFqdns: pulumi.StringArray{},\n\t\t\t\tDestRegionCodes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t},\n\t\t\t\tDestThreatIntelligences: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"iplist-known-malicious-ips\"),\n\t\t\t\t},\n\t\t\t\tSrcAddressGroups: pulumi.StringArray{},\n\t\t\t\tDestAddressGroups: pulumi.StringArray{\n\t\t\t\t\tbasicGlobalNetworksecurityAddressGroup.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetServiceAccounts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my@service-account.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.networksecurity.AddressGroup;\nimport com.pulumi.gcp.networksecurity.AddressGroupArgs;\nimport com.pulumi.gcp.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.compute.FirewallPolicy;\nimport com.pulumi.gcp.compute.FirewallPolicyArgs;\nimport com.pulumi.gcp.compute.FirewallPolicyRule;\nimport com.pulumi.gcp.compute.FirewallPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallPolicyRuleMatchArgs;\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 basicGlobalNetworksecurityAddressGroup = new AddressGroup(\"basicGlobalNetworksecurityAddressGroup\", AddressGroupArgs.builder()\n .name(\"policy\")\n .parent(\"organizations/123456789\")\n .description(\"Sample global networksecurity_address_group\")\n .location(\"global\")\n .items(\"208.80.154.224/32\")\n .type(\"IPV4\")\n .capacity(100)\n .build());\n\n var folder = new Folder(\"folder\", FolderArgs.builder()\n .displayName(\"policy\")\n .parent(\"organizations/123456789\")\n .build());\n\n var default_ = new FirewallPolicy(\"default\", FirewallPolicyArgs.builder()\n .parent(folder.id())\n .shortName(\"policy\")\n .description(\"Resource created for Terraform acceptance testing\")\n .build());\n\n var primary = new FirewallPolicyRule(\"primary\", FirewallPolicyRuleArgs.builder()\n .firewallPolicy(default_.name())\n .description(\"Resource created for Terraform acceptance testing\")\n .priority(9000)\n .enableLogging(true)\n .action(\"allow\")\n .direction(\"EGRESS\")\n .disabled(false)\n .match(FirewallPolicyRuleMatchArgs.builder()\n .layer4Configs( \n FirewallPolicyRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"tcp\")\n .ports(8080)\n .build(),\n FirewallPolicyRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"udp\")\n .ports(22)\n .build())\n .destIpRanges(\"11.100.0.1/32\")\n .destFqdns()\n .destRegionCodes(\"US\")\n .destThreatIntelligences(\"iplist-known-malicious-ips\")\n .srcAddressGroups()\n .destAddressGroups(basicGlobalNetworksecurityAddressGroup.id())\n .build())\n .targetServiceAccounts(\"my@service-account.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicGlobalNetworksecurityAddressGroup:\n type: gcp:networksecurity:AddressGroup\n name: basic_global_networksecurity_address_group\n properties:\n name: policy\n parent: organizations/123456789\n description: Sample global networksecurity_address_group\n location: global\n items:\n - 208.80.154.224/32\n type: IPV4\n capacity: 100\n folder:\n type: gcp:organizations:Folder\n properties:\n displayName: policy\n parent: organizations/123456789\n default:\n type: gcp:compute:FirewallPolicy\n properties:\n parent: ${folder.id}\n shortName: policy\n description: Resource created for Terraform acceptance testing\n primary:\n type: gcp:compute:FirewallPolicyRule\n properties:\n firewallPolicy: ${default.name}\n description: Resource created for Terraform acceptance testing\n priority: 9000\n enableLogging: true\n action: allow\n direction: EGRESS\n disabled: false\n match:\n layer4Configs:\n - ipProtocol: tcp\n ports:\n - 8080\n - ipProtocol: udp\n ports:\n - 22\n destIpRanges:\n - 11.100.0.1/32\n destFqdns: []\n destRegionCodes:\n - US\n destThreatIntelligences:\n - iplist-known-malicious-ips\n srcAddressGroups: []\n destAddressGroups:\n - ${basicGlobalNetworksecurityAddressGroup.id}\n targetServiceAccounts:\n - my@service-account.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFirewallPolicyRule can be imported using any of these accepted formats:\n\n* `locations/global/firewallPolicies/{{firewall_policy}}/rules/{{priority}}`\n\n* `{{firewall_policy}}/{{priority}}`\n\nWhen using the `pulumi import` command, FirewallPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/firewallPolicyRule:FirewallPolicyRule default locations/global/firewallPolicies/{{firewall_policy}}/rules/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/firewallPolicyRule:FirewallPolicyRule default {{firewall_policy}}/{{priority}}\n```\n\n", + "description": "The Compute FirewallPolicyRule resource\n\n## Example Usage\n\n### Basic_fir_sec_rule\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicGlobalNetworksecurityAddressGroup = new gcp.networksecurity.AddressGroup(\"basic_global_networksecurity_address_group\", {\n name: \"policy\",\n parent: \"organizations/123456789\",\n description: \"Sample global networksecurity_address_group\",\n location: \"global\",\n items: [\"208.80.154.224/32\"],\n type: \"IPV4\",\n capacity: 100,\n});\nconst folder = new gcp.organizations.Folder(\"folder\", {\n displayName: \"policy\",\n parent: \"organizations/123456789\",\n});\nconst _default = new gcp.compute.FirewallPolicy(\"default\", {\n parent: folder.id,\n shortName: \"policy\",\n description: \"Resource created for Terraform acceptance testing\",\n});\nconst primary = new gcp.compute.FirewallPolicyRule(\"primary\", {\n firewallPolicy: _default.name,\n description: \"Resource created for Terraform acceptance testing\",\n priority: 9000,\n enableLogging: true,\n action: \"allow\",\n direction: \"EGRESS\",\n disabled: false,\n match: {\n layer4Configs: [\n {\n ipProtocol: \"tcp\",\n ports: [\"8080\"],\n },\n {\n ipProtocol: \"udp\",\n ports: [\"22\"],\n },\n ],\n destIpRanges: [\"11.100.0.1/32\"],\n destFqdns: [],\n destRegionCodes: [\"US\"],\n destThreatIntelligences: [\"iplist-known-malicious-ips\"],\n srcAddressGroups: [],\n destAddressGroups: [basicGlobalNetworksecurityAddressGroup.id],\n },\n targetServiceAccounts: [\"my@service-account.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_global_networksecurity_address_group = gcp.networksecurity.AddressGroup(\"basic_global_networksecurity_address_group\",\n name=\"policy\",\n parent=\"organizations/123456789\",\n description=\"Sample global networksecurity_address_group\",\n location=\"global\",\n items=[\"208.80.154.224/32\"],\n type=\"IPV4\",\n capacity=100)\nfolder = gcp.organizations.Folder(\"folder\",\n display_name=\"policy\",\n parent=\"organizations/123456789\")\ndefault = gcp.compute.FirewallPolicy(\"default\",\n parent=folder.id,\n short_name=\"policy\",\n description=\"Resource created for Terraform acceptance testing\")\nprimary = gcp.compute.FirewallPolicyRule(\"primary\",\n firewall_policy=default.name,\n description=\"Resource created for Terraform acceptance testing\",\n priority=9000,\n enable_logging=True,\n action=\"allow\",\n direction=\"EGRESS\",\n disabled=False,\n match={\n \"layer4_configs\": [\n {\n \"ip_protocol\": \"tcp\",\n \"ports\": [\"8080\"],\n },\n {\n \"ip_protocol\": \"udp\",\n \"ports\": [\"22\"],\n },\n ],\n \"dest_ip_ranges\": [\"11.100.0.1/32\"],\n \"dest_fqdns\": [],\n \"dest_region_codes\": [\"US\"],\n \"dest_threat_intelligences\": [\"iplist-known-malicious-ips\"],\n \"src_address_groups\": [],\n \"dest_address_groups\": [basic_global_networksecurity_address_group.id],\n },\n target_service_accounts=[\"my@service-account.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 basicGlobalNetworksecurityAddressGroup = new Gcp.NetworkSecurity.AddressGroup(\"basic_global_networksecurity_address_group\", new()\n {\n Name = \"policy\",\n Parent = \"organizations/123456789\",\n Description = \"Sample global networksecurity_address_group\",\n Location = \"global\",\n Items = new[]\n {\n \"208.80.154.224/32\",\n },\n Type = \"IPV4\",\n Capacity = 100,\n });\n\n var folder = new Gcp.Organizations.Folder(\"folder\", new()\n {\n DisplayName = \"policy\",\n Parent = \"organizations/123456789\",\n });\n\n var @default = new Gcp.Compute.FirewallPolicy(\"default\", new()\n {\n Parent = folder.Id,\n ShortName = \"policy\",\n Description = \"Resource created for Terraform acceptance testing\",\n });\n\n var primary = new Gcp.Compute.FirewallPolicyRule(\"primary\", new()\n {\n FirewallPolicy = @default.Name,\n Description = \"Resource created for Terraform acceptance testing\",\n Priority = 9000,\n EnableLogging = true,\n Action = \"allow\",\n Direction = \"EGRESS\",\n Disabled = false,\n Match = new Gcp.Compute.Inputs.FirewallPolicyRuleMatchArgs\n {\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.FirewallPolicyRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"tcp\",\n Ports = new[]\n {\n \"8080\",\n },\n },\n new Gcp.Compute.Inputs.FirewallPolicyRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"udp\",\n Ports = new[]\n {\n \"22\",\n },\n },\n },\n DestIpRanges = new[]\n {\n \"11.100.0.1/32\",\n },\n DestFqdns = new() { },\n DestRegionCodes = new[]\n {\n \"US\",\n },\n DestThreatIntelligences = new[]\n {\n \"iplist-known-malicious-ips\",\n },\n SrcAddressGroups = new() { },\n DestAddressGroups = new[]\n {\n basicGlobalNetworksecurityAddressGroup.Id,\n },\n },\n TargetServiceAccounts = new[]\n {\n \"my@service-account.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasicGlobalNetworksecurityAddressGroup, err := networksecurity.NewAddressGroup(ctx, \"basic_global_networksecurity_address_group\", \u0026networksecurity.AddressGroupArgs{\n\t\t\tName: pulumi.String(\"policy\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"Sample global networksecurity_address_group\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tItems: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"208.80.154.224/32\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"IPV4\"),\n\t\t\tCapacity: pulumi.Int(100),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfolder, err := organizations.NewFolder(ctx, \"folder\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"policy\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFirewallPolicy(ctx, \"default\", \u0026compute.FirewallPolicyArgs{\n\t\t\tParent: folder.ID(),\n\t\t\tShortName: pulumi.String(\"policy\"),\n\t\t\tDescription: pulumi.String(\"Resource created for Terraform acceptance testing\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFirewallPolicyRule(ctx, \"primary\", \u0026compute.FirewallPolicyRuleArgs{\n\t\t\tFirewallPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"Resource created for Terraform acceptance testing\"),\n\t\t\tPriority: pulumi.Int(9000),\n\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tDirection: pulumi.String(\"EGRESS\"),\n\t\t\tDisabled: pulumi.Bool(false),\n\t\t\tMatch: \u0026compute.FirewallPolicyRuleMatchArgs{\n\t\t\t\tLayer4Configs: compute.FirewallPolicyRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\u0026compute.FirewallPolicyRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"8080\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026compute.FirewallPolicyRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\tIpProtocol: pulumi.String(\"udp\"),\n\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"22\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDestIpRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"11.100.0.1/32\"),\n\t\t\t\t},\n\t\t\t\tDestFqdns: pulumi.StringArray{},\n\t\t\t\tDestRegionCodes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t},\n\t\t\t\tDestThreatIntelligences: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"iplist-known-malicious-ips\"),\n\t\t\t\t},\n\t\t\t\tSrcAddressGroups: pulumi.StringArray{},\n\t\t\t\tDestAddressGroups: pulumi.StringArray{\n\t\t\t\t\tbasicGlobalNetworksecurityAddressGroup.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetServiceAccounts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my@service-account.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.networksecurity.AddressGroup;\nimport com.pulumi.gcp.networksecurity.AddressGroupArgs;\nimport com.pulumi.gcp.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.compute.FirewallPolicy;\nimport com.pulumi.gcp.compute.FirewallPolicyArgs;\nimport com.pulumi.gcp.compute.FirewallPolicyRule;\nimport com.pulumi.gcp.compute.FirewallPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallPolicyRuleMatchArgs;\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 basicGlobalNetworksecurityAddressGroup = new AddressGroup(\"basicGlobalNetworksecurityAddressGroup\", AddressGroupArgs.builder()\n .name(\"policy\")\n .parent(\"organizations/123456789\")\n .description(\"Sample global networksecurity_address_group\")\n .location(\"global\")\n .items(\"208.80.154.224/32\")\n .type(\"IPV4\")\n .capacity(100)\n .build());\n\n var folder = new Folder(\"folder\", FolderArgs.builder()\n .displayName(\"policy\")\n .parent(\"organizations/123456789\")\n .build());\n\n var default_ = new FirewallPolicy(\"default\", FirewallPolicyArgs.builder()\n .parent(folder.id())\n .shortName(\"policy\")\n .description(\"Resource created for Terraform acceptance testing\")\n .build());\n\n var primary = new FirewallPolicyRule(\"primary\", FirewallPolicyRuleArgs.builder()\n .firewallPolicy(default_.name())\n .description(\"Resource created for Terraform acceptance testing\")\n .priority(9000)\n .enableLogging(true)\n .action(\"allow\")\n .direction(\"EGRESS\")\n .disabled(false)\n .match(FirewallPolicyRuleMatchArgs.builder()\n .layer4Configs( \n FirewallPolicyRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"tcp\")\n .ports(8080)\n .build(),\n FirewallPolicyRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"udp\")\n .ports(22)\n .build())\n .destIpRanges(\"11.100.0.1/32\")\n .destFqdns()\n .destRegionCodes(\"US\")\n .destThreatIntelligences(\"iplist-known-malicious-ips\")\n .srcAddressGroups()\n .destAddressGroups(basicGlobalNetworksecurityAddressGroup.id())\n .build())\n .targetServiceAccounts(\"my@service-account.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicGlobalNetworksecurityAddressGroup:\n type: gcp:networksecurity:AddressGroup\n name: basic_global_networksecurity_address_group\n properties:\n name: policy\n parent: organizations/123456789\n description: Sample global networksecurity_address_group\n location: global\n items:\n - 208.80.154.224/32\n type: IPV4\n capacity: 100\n folder:\n type: gcp:organizations:Folder\n properties:\n displayName: policy\n parent: organizations/123456789\n default:\n type: gcp:compute:FirewallPolicy\n properties:\n parent: ${folder.id}\n shortName: policy\n description: Resource created for Terraform acceptance testing\n primary:\n type: gcp:compute:FirewallPolicyRule\n properties:\n firewallPolicy: ${default.name}\n description: Resource created for Terraform acceptance testing\n priority: 9000\n enableLogging: true\n action: allow\n direction: EGRESS\n disabled: false\n match:\n layer4Configs:\n - ipProtocol: tcp\n ports:\n - 8080\n - ipProtocol: udp\n ports:\n - 22\n destIpRanges:\n - 11.100.0.1/32\n destFqdns: []\n destRegionCodes:\n - US\n destThreatIntelligences:\n - iplist-known-malicious-ips\n srcAddressGroups: []\n destAddressGroups:\n - ${basicGlobalNetworksecurityAddressGroup.id}\n targetServiceAccounts:\n - my@service-account.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFirewallPolicyRule can be imported using any of these accepted formats:\n\n* `locations/global/firewallPolicies/{{firewall_policy}}/rules/{{priority}}`\n\n* `{{firewall_policy}}/{{priority}}`\n\nWhen using the `pulumi import` command, FirewallPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/firewallPolicyRule:FirewallPolicyRule default locations/global/firewallPolicies/{{firewall_policy}}/rules/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/firewallPolicyRule:FirewallPolicyRule default {{firewall_policy}}/{{priority}}\n```\n\n", "properties": { "action": { "type": "string", @@ -144822,7 +144822,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## Example Usage\n\n### Forwarding Rule Externallb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst hc = new gcp.compute.RegionHealthCheck(\"hc\", {\n name: \"check-website-backend\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n region: \"us-central1\",\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"website-backend\",\n region: \"us-central1\",\n loadBalancingScheme: \"EXTERNAL\",\n healthChecks: hc.id,\n});\n// Forwarding rule for External Network Load Balancing using Backend Services\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"website-forwarding-rule\",\n region: \"us-central1\",\n portRange: \"80\",\n backendService: backend.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhc = gcp.compute.RegionHealthCheck(\"hc\",\n name=\"check-website-backend\",\n check_interval_sec=1,\n timeout_sec=1,\n region=\"us-central1\",\n tcp_health_check={\n \"port\": 80,\n })\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"website-backend\",\n region=\"us-central1\",\n load_balancing_scheme=\"EXTERNAL\",\n health_checks=hc.id)\n# Forwarding rule for External Network Load Balancing using Backend Services\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"website-forwarding-rule\",\n region=\"us-central1\",\n port_range=\"80\",\n backend_service=backend.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 hc = new Gcp.Compute.RegionHealthCheck(\"hc\", new()\n {\n Name = \"check-website-backend\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n Region = \"us-central1\",\n TcpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"website-backend\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"EXTERNAL\",\n HealthChecks = hc.Id,\n });\n\n // Forwarding rule for External Network Load Balancing using Backend Services\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"website-forwarding-rule\",\n Region = \"us-central1\",\n PortRange = \"80\",\n BackendService = backend.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thc, err := compute.NewRegionHealthCheck(ctx, \"hc\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"check-website-backend\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTcpHealthCheck: \u0026compute.RegionHealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"website-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL\"),\n\t\t\tHealthChecks: hc.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Forwarding rule for External Network Load Balancing using Backend Services\n\t\t_, err = compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"website-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t\tBackendService: backend.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.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 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 .name(\"check-website-backend\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .region(\"us-central1\")\n .tcpHealthCheck(RegionHealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder()\n .name(\"website-backend\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"EXTERNAL\")\n .healthChecks(hc.id())\n .build());\n\n // Forwarding rule for External Network Load Balancing using Backend Services\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder()\n .name(\"website-forwarding-rule\")\n .region(\"us-central1\")\n .portRange(80)\n .backendService(backend.id())\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 name: website-forwarding-rule\n region: us-central1\n portRange: 80\n backendService: ${backend.id}\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n name: website-backend\n region: us-central1\n loadBalancingScheme: EXTERNAL\n healthChecks: ${hc.id}\n hc:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: check-website-backend\n checkIntervalSec: 1\n timeoutSec: 1\n region: us-central1\n tcpHealthCheck:\n port: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule Global Internallb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst hc = new gcp.compute.HealthCheck(\"hc\", {\n name: \"check-website-backend\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"website-backend\",\n region: \"us-central1\",\n healthChecks: hc.id,\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"website-net\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"website-net\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n});\n// Forwarding rule for Internal Load Balancing\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"website-forwarding-rule\",\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});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhc = gcp.compute.HealthCheck(\"hc\",\n name=\"check-website-backend\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"website-backend\",\n region=\"us-central1\",\n health_checks=hc.id)\ndefault_network = gcp.compute.Network(\"default\",\n name=\"website-net\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"website-net\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=default_network.id)\n# Forwarding rule for Internal Load Balancing\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"website-forwarding-rule\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=backend.id,\n all_ports=True,\n allow_global_access=True,\n network=default_network.name,\n subnetwork=default_subnetwork.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 hc = new Gcp.Compute.HealthCheck(\"hc\", new()\n {\n Name = \"check-website-backend\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"website-backend\",\n Region = \"us-central1\",\n HealthChecks = hc.Id,\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"website-net\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"website-net\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n });\n\n // Forwarding rule for Internal Load Balancing\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"website-forwarding-rule\",\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thc, err := compute.NewHealthCheck(ctx, \"hc\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"check-website-backend\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"website-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: hc.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"website-net\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"website-net\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Forwarding rule for Internal Load Balancing\n\t\t_, err = compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"website-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: backend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tAllowGlobalAccess: pulumi.Bool(true),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t\tSubnetwork: defaultSubnetwork.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.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 .name(\"check-website-backend\")\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 .name(\"website-backend\")\n .region(\"us-central1\")\n .healthChecks(hc.id())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"website-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"website-net\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .build());\n\n // Forwarding rule for Internal Load Balancing\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder()\n .name(\"website-forwarding-rule\")\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 default:\n type: gcp:compute:ForwardingRule\n properties:\n name: website-forwarding-rule\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 name: website-backend\n region: us-central1\n healthChecks: ${hc.id}\n hc:\n type: gcp:compute:HealthCheck\n properties:\n name: check-website-backend\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: website-net\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: website-net\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${defaultNetwork.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultTargetPool = new gcp.compute.TargetPool(\"default\", {name: \"website-target-pool\"});\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"website-forwarding-rule\",\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(\"default\", name=\"website-target-pool\")\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"website-forwarding-rule\",\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(\"default\", new()\n {\n Name = \"website-target-pool\",\n });\n\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"website-forwarding-rule\",\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/v7/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, \"default\", \u0026compute.TargetPoolArgs{\n\t\t\tName: pulumi.String(\"website-target-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"website-forwarding-rule\"),\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.TargetPoolArgs;\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\", TargetPoolArgs.builder()\n .name(\"website-target-pool\")\n .build());\n\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder()\n .name(\"website-forwarding-rule\")\n .target(defaultTargetPool.id())\n .portRange(\"80\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:ForwardingRule\n properties:\n name: website-forwarding-rule\n target: ${defaultTargetPool.id}\n portRange: '80'\n defaultTargetPool:\n type: gcp:compute:TargetPool\n name: default\n properties:\n name: website-target-pool\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule L3 Default\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.RegionHealthCheck(\"health_check\", {\n name: \"health-check\",\n region: \"us-central1\",\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst service = new gcp.compute.RegionBackendService(\"service\", {\n region: \"us-central1\",\n name: \"service\",\n healthChecks: healthCheck.id,\n protocol: \"UNSPECIFIED\",\n loadBalancingScheme: \"EXTERNAL\",\n});\nconst fwdRule = new gcp.compute.ForwardingRule(\"fwd_rule\", {\n name: \"l3-forwarding-rule\",\n backendService: service.id,\n ipProtocol: \"L3_DEFAULT\",\n allPorts: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.RegionHealthCheck(\"health_check\",\n name=\"health-check\",\n region=\"us-central1\",\n tcp_health_check={\n \"port\": 80,\n })\nservice = gcp.compute.RegionBackendService(\"service\",\n region=\"us-central1\",\n name=\"service\",\n health_checks=health_check.id,\n protocol=\"UNSPECIFIED\",\n load_balancing_scheme=\"EXTERNAL\")\nfwd_rule = gcp.compute.ForwardingRule(\"fwd_rule\",\n name=\"l3-forwarding-rule\",\n backend_service=service.id,\n ip_protocol=\"L3_DEFAULT\",\n all_ports=True)\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 healthCheck = new Gcp.Compute.RegionHealthCheck(\"health_check\", new()\n {\n Name = \"health-check\",\n Region = \"us-central1\",\n TcpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var service = new Gcp.Compute.RegionBackendService(\"service\", new()\n {\n Region = \"us-central1\",\n Name = \"service\",\n HealthChecks = healthCheck.Id,\n Protocol = \"UNSPECIFIED\",\n LoadBalancingScheme = \"EXTERNAL\",\n });\n\n var fwdRule = new Gcp.Compute.ForwardingRule(\"fwd_rule\", new()\n {\n Name = \"l3-forwarding-rule\",\n BackendService = service.Id,\n IpProtocol = \"L3_DEFAULT\",\n AllPorts = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thealthCheck, err := compute.NewRegionHealthCheck(ctx, \"health_check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTcpHealthCheck: \u0026compute.RegionHealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tservice, err := compute.NewRegionBackendService(ctx, \"service\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"service\"),\n\t\t\tHealthChecks: healthCheck.ID(),\n\t\t\tProtocol: pulumi.String(\"UNSPECIFIED\"),\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, \"fwd_rule\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"l3-forwarding-rule\"),\n\t\t\tBackendService: service.ID(),\n\t\t\tIpProtocol: pulumi.String(\"L3_DEFAULT\"),\n\t\t\tAllPorts: pulumi.Bool(true),\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.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 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 .name(\"health-check\")\n .region(\"us-central1\")\n .tcpHealthCheck(RegionHealthCheckTcpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var service = new RegionBackendService(\"service\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"service\")\n .healthChecks(healthCheck.id())\n .protocol(\"UNSPECIFIED\")\n .loadBalancingScheme(\"EXTERNAL\")\n .build());\n\n var fwdRule = new ForwardingRule(\"fwdRule\", ForwardingRuleArgs.builder()\n .name(\"l3-forwarding-rule\")\n .backendService(service.id())\n .ipProtocol(\"L3_DEFAULT\")\n .allPorts(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n fwdRule:\n type: gcp:compute:ForwardingRule\n name: fwd_rule\n properties:\n name: l3-forwarding-rule\n backendService: ${service.id}\n ipProtocol: L3_DEFAULT\n allPorts: true\n service:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: service\n healthChecks: ${healthCheck.id}\n protocol: UNSPECIFIED\n loadBalancingScheme: EXTERNAL\n healthCheck:\n type: gcp:compute:RegionHealthCheck\n name: health_check\n properties:\n name: health-check\n region: us-central1\n tcpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule Internallb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst hc = new gcp.compute.HealthCheck(\"hc\", {\n name: \"check-website-backend\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"website-backend\",\n region: \"us-central1\",\n healthChecks: hc.id,\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"website-net\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"website-net\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n});\n// Forwarding rule for Internal Load Balancing\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"website-forwarding-rule\",\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});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhc = gcp.compute.HealthCheck(\"hc\",\n name=\"check-website-backend\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"website-backend\",\n region=\"us-central1\",\n health_checks=hc.id)\ndefault_network = gcp.compute.Network(\"default\",\n name=\"website-net\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"website-net\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=default_network.id)\n# Forwarding rule for Internal Load Balancing\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"website-forwarding-rule\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=backend.id,\n all_ports=True,\n network=default_network.name,\n subnetwork=default_subnetwork.name,\n ip_version=\"IPV4\")\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 hc = new Gcp.Compute.HealthCheck(\"hc\", new()\n {\n Name = \"check-website-backend\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"website-backend\",\n Region = \"us-central1\",\n HealthChecks = hc.Id,\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"website-net\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"website-net\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n });\n\n // Forwarding rule for Internal Load Balancing\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"website-forwarding-rule\",\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thc, err := compute.NewHealthCheck(ctx, \"hc\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"check-website-backend\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"website-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: hc.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"website-net\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"website-net\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Forwarding rule for Internal Load Balancing\n\t\t_, err = compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"website-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: backend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t\tSubnetwork: defaultSubnetwork.Name,\n\t\t\tIpVersion: pulumi.String(\"IPV4\"),\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.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 .name(\"check-website-backend\")\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 .name(\"website-backend\")\n .region(\"us-central1\")\n .healthChecks(hc.id())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"website-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"website-net\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .build());\n\n // Forwarding rule for Internal Load Balancing\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder()\n .name(\"website-forwarding-rule\")\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 default:\n type: gcp:compute:ForwardingRule\n properties:\n name: website-forwarding-rule\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 name: website-backend\n region: us-central1\n healthChecks: ${hc.id}\n hc:\n type: gcp:compute:HealthCheck\n properties:\n name: check-website-backend\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: website-net\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: website-net\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${defaultNetwork.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule Http Lb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst debianImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"website-net\",\n autoCreateSubnetworks: false,\n routingMode: \"REGIONAL\",\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"website-net-default\",\n ipCidrRange: \"10.1.2.0/24\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n});\nconst instanceTemplate = new gcp.compute.InstanceTemplate(\"instance_template\", {\n name: \"template-website-backend\",\n machineType: \"e2-medium\",\n networkInterfaces: [{\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n }],\n disks: [{\n sourceImage: debianImage.then(debianImage =\u003e debianImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n tags: [\n \"allow-ssh\",\n \"load-balanced-backend\",\n ],\n});\nconst rigm = new gcp.compute.RegionInstanceGroupManager(\"rigm\", {\n region: \"us-central1\",\n name: \"website-rigm\",\n versions: [{\n instanceTemplate: instanceTemplate.id,\n name: \"primary\",\n }],\n baseInstanceName: \"internal-glb\",\n targetSize: 1,\n});\nconst fw1 = new gcp.compute.Firewall(\"fw1\", {\n name: \"website-fw-1\",\n network: defaultNetwork.id,\n sourceRanges: [\"10.1.2.0/24\"],\n allows: [\n {\n protocol: \"tcp\",\n },\n {\n protocol: \"udp\",\n },\n {\n protocol: \"icmp\",\n },\n ],\n direction: \"INGRESS\",\n});\nconst fw2 = new gcp.compute.Firewall(\"fw2\", {\n name: \"website-fw-2\",\n network: defaultNetwork.id,\n sourceRanges: [\"0.0.0.0/0\"],\n allows: [{\n protocol: \"tcp\",\n ports: [\"22\"],\n }],\n targetTags: [\"allow-ssh\"],\n direction: \"INGRESS\",\n}, {\n dependsOn: [fw1],\n});\nconst fw3 = new gcp.compute.Firewall(\"fw3\", {\n name: \"website-fw-3\",\n network: defaultNetwork.id,\n sourceRanges: [\n \"130.211.0.0/22\",\n \"35.191.0.0/16\",\n ],\n allows: [{\n protocol: \"tcp\",\n }],\n targetTags: [\"load-balanced-backend\"],\n direction: \"INGRESS\",\n}, {\n dependsOn: [fw2],\n});\nconst fw4 = new gcp.compute.Firewall(\"fw4\", {\n name: \"website-fw-4\",\n network: defaultNetwork.id,\n sourceRanges: [\"10.129.0.0/26\"],\n targetTags: [\"load-balanced-backend\"],\n allows: [\n {\n protocol: \"tcp\",\n ports: [\"80\"],\n },\n {\n protocol: \"tcp\",\n ports: [\"443\"],\n },\n {\n protocol: \"tcp\",\n ports: [\"8000\"],\n },\n ],\n direction: \"INGRESS\",\n}, {\n dependsOn: [fw3],\n});\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"website-hc\",\n httpHealthCheck: {\n portSpecification: \"USE_SERVING_PORT\",\n },\n}, {\n dependsOn: [fw4],\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n backends: [{\n group: rigm.instanceGroup,\n balancingMode: \"UTILIZATION\",\n capacityScaler: 1,\n }],\n region: \"us-central1\",\n name: \"website-backend\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultRegionHealthCheck.id,\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n region: \"us-central1\",\n name: \"website-map\",\n defaultService: defaultRegionBackendService.id,\n});\nconst defaultRegionTargetHttpProxy = new gcp.compute.RegionTargetHttpProxy(\"default\", {\n region: \"us-central1\",\n name: \"website-proxy\",\n urlMap: defaultRegionUrlMap.id,\n});\nconst proxy = new gcp.compute.Subnetwork(\"proxy\", {\n name: \"website-net-proxy\",\n ipCidrRange: \"10.129.0.0/26\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n purpose: \"REGIONAL_MANAGED_PROXY\",\n role: \"ACTIVE\",\n});\n// Forwarding rule for Internal Load Balancing\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"website-forwarding-rule\",\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}, {\n dependsOn: [proxy],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndebian_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault_network = gcp.compute.Network(\"default\",\n name=\"website-net\",\n auto_create_subnetworks=False,\n routing_mode=\"REGIONAL\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"website-net-default\",\n ip_cidr_range=\"10.1.2.0/24\",\n region=\"us-central1\",\n network=default_network.id)\ninstance_template = gcp.compute.InstanceTemplate(\"instance_template\",\n name=\"template-website-backend\",\n machine_type=\"e2-medium\",\n network_interfaces=[{\n \"network\": default_network.id,\n \"subnetwork\": default_subnetwork.id,\n }],\n disks=[{\n \"sourceImage\": debian_image.self_link,\n \"autoDelete\": True,\n \"boot\": True,\n }],\n tags=[\n \"allow-ssh\",\n \"load-balanced-backend\",\n ])\nrigm = gcp.compute.RegionInstanceGroupManager(\"rigm\",\n region=\"us-central1\",\n name=\"website-rigm\",\n versions=[{\n \"instanceTemplate\": instance_template.id,\n \"name\": \"primary\",\n }],\n base_instance_name=\"internal-glb\",\n target_size=1)\nfw1 = gcp.compute.Firewall(\"fw1\",\n name=\"website-fw-1\",\n network=default_network.id,\n source_ranges=[\"10.1.2.0/24\"],\n allows=[\n {\n \"protocol\": \"tcp\",\n },\n {\n \"protocol\": \"udp\",\n },\n {\n \"protocol\": \"icmp\",\n },\n ],\n direction=\"INGRESS\")\nfw2 = gcp.compute.Firewall(\"fw2\",\n name=\"website-fw-2\",\n network=default_network.id,\n source_ranges=[\"0.0.0.0/0\"],\n allows=[{\n \"protocol\": \"tcp\",\n \"ports\": [\"22\"],\n }],\n target_tags=[\"allow-ssh\"],\n direction=\"INGRESS\",\n opts = pulumi.ResourceOptions(depends_on=[fw1]))\nfw3 = gcp.compute.Firewall(\"fw3\",\n name=\"website-fw-3\",\n network=default_network.id,\n source_ranges=[\n \"130.211.0.0/22\",\n \"35.191.0.0/16\",\n ],\n allows=[{\n \"protocol\": \"tcp\",\n }],\n target_tags=[\"load-balanced-backend\"],\n direction=\"INGRESS\",\n opts = pulumi.ResourceOptions(depends_on=[fw2]))\nfw4 = gcp.compute.Firewall(\"fw4\",\n name=\"website-fw-4\",\n network=default_network.id,\n source_ranges=[\"10.129.0.0/26\"],\n target_tags=[\"load-balanced-backend\"],\n allows=[\n {\n \"protocol\": \"tcp\",\n \"ports\": [\"80\"],\n },\n {\n \"protocol\": \"tcp\",\n \"ports\": [\"443\"],\n },\n {\n \"protocol\": \"tcp\",\n \"ports\": [\"8000\"],\n },\n ],\n direction=\"INGRESS\",\n opts = pulumi.ResourceOptions(depends_on=[fw3]))\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"website-hc\",\n http_health_check={\n \"portSpecification\": \"USE_SERVING_PORT\",\n },\n opts = pulumi.ResourceOptions(depends_on=[fw4]))\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n backends=[{\n \"group\": rigm.instance_group,\n \"balancingMode\": \"UTILIZATION\",\n \"capacityScaler\": 1,\n }],\n region=\"us-central1\",\n name=\"website-backend\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_region_health_check.id)\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n region=\"us-central1\",\n name=\"website-map\",\n default_service=default_region_backend_service.id)\ndefault_region_target_http_proxy = gcp.compute.RegionTargetHttpProxy(\"default\",\n region=\"us-central1\",\n name=\"website-proxy\",\n url_map=default_region_url_map.id)\nproxy = gcp.compute.Subnetwork(\"proxy\",\n name=\"website-net-proxy\",\n ip_cidr_range=\"10.129.0.0/26\",\n region=\"us-central1\",\n network=default_network.id,\n purpose=\"REGIONAL_MANAGED_PROXY\",\n role=\"ACTIVE\")\n# Forwarding rule for Internal Load Balancing\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"website-forwarding-rule\",\n region=\"us-central1\",\n ip_protocol=\"TCP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n port_range=\"80\",\n target=default_region_target_http_proxy.id,\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n network_tier=\"PREMIUM\",\n opts = pulumi.ResourceOptions(depends_on=[proxy]))\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 debianImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"website-net\",\n AutoCreateSubnetworks = false,\n RoutingMode = \"REGIONAL\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"website-net-default\",\n IpCidrRange = \"10.1.2.0/24\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n });\n\n var instanceTemplate = new Gcp.Compute.InstanceTemplate(\"instance_template\", new()\n {\n Name = \"template-website-backend\",\n MachineType = \"e2-medium\",\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = debianImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n Tags = new[]\n {\n \"allow-ssh\",\n \"load-balanced-backend\",\n },\n });\n\n var rigm = new Gcp.Compute.RegionInstanceGroupManager(\"rigm\", new()\n {\n Region = \"us-central1\",\n Name = \"website-rigm\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = instanceTemplate.Id,\n Name = \"primary\",\n },\n },\n BaseInstanceName = \"internal-glb\",\n TargetSize = 1,\n });\n\n var fw1 = new Gcp.Compute.Firewall(\"fw1\", new()\n {\n Name = \"website-fw-1\",\n Network = defaultNetwork.Id,\n SourceRanges = new[]\n {\n \"10.1.2.0/24\",\n },\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n },\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"udp\",\n },\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"icmp\",\n },\n },\n Direction = \"INGRESS\",\n });\n\n var fw2 = new Gcp.Compute.Firewall(\"fw2\", new()\n {\n Name = \"website-fw-2\",\n Network = defaultNetwork.Id,\n SourceRanges = new[]\n {\n \"0.0.0.0/0\",\n },\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"22\",\n },\n },\n },\n TargetTags = new[]\n {\n \"allow-ssh\",\n },\n Direction = \"INGRESS\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n fw1,\n },\n });\n\n var fw3 = new Gcp.Compute.Firewall(\"fw3\", new()\n {\n Name = \"website-fw-3\",\n Network = defaultNetwork.Id,\n SourceRanges = new[]\n {\n \"130.211.0.0/22\",\n \"35.191.0.0/16\",\n },\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n },\n },\n TargetTags = new[]\n {\n \"load-balanced-backend\",\n },\n Direction = \"INGRESS\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n fw2,\n },\n });\n\n var fw4 = new Gcp.Compute.Firewall(\"fw4\", new()\n {\n Name = \"website-fw-4\",\n Network = defaultNetwork.Id,\n SourceRanges = new[]\n {\n \"10.129.0.0/26\",\n },\n TargetTags = new[]\n {\n \"load-balanced-backend\",\n },\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"80\",\n },\n },\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"443\",\n },\n },\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"8000\",\n },\n },\n },\n Direction = \"INGRESS\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n fw3,\n },\n });\n\n var defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"website-hc\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n PortSpecification = \"USE_SERVING_PORT\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n fw4,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n Backends = new[]\n {\n new Gcp.Compute.Inputs.RegionBackendServiceBackendArgs\n {\n Group = rigm.InstanceGroup,\n BalancingMode = \"UTILIZATION\",\n CapacityScaler = 1,\n },\n },\n Region = \"us-central1\",\n Name = \"website-backend\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultRegionHealthCheck.Id,\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"website-map\",\n DefaultService = defaultRegionBackendService.Id,\n });\n\n var defaultRegionTargetHttpProxy = new Gcp.Compute.RegionTargetHttpProxy(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"website-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n });\n\n var proxy = new Gcp.Compute.Subnetwork(\"proxy\", new()\n {\n Name = \"website-net-proxy\",\n IpCidrRange = \"10.129.0.0/26\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n Role = \"ACTIVE\",\n });\n\n // Forwarding rule for Internal Load Balancing\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"website-forwarding-rule\",\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 }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxy,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdebianImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"website-net\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t\tRoutingMode: pulumi.String(\"REGIONAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"website-net-default\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.2.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstanceTemplate, err := compute.NewInstanceTemplate(ctx, \"instance_template\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"template-website-backend\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(debianImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"allow-ssh\"),\n\t\t\t\tpulumi.String(\"load-balanced-backend\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trigm, err := compute.NewRegionInstanceGroupManager(ctx, \"rigm\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-rigm\"),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: instanceTemplate.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"internal-glb\"),\n\t\t\tTargetSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfw1, err := compute.NewFirewall(ctx, \"fw1\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"website-fw-1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSourceRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.1.2.0/24\"),\n\t\t\t},\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"udp\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"icmp\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfw2, err := compute.NewFirewall(ctx, \"fw2\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"website-fw-2\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSourceRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t},\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"22\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"allow-ssh\"),\n\t\t\t},\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfw1,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfw3, err := compute.NewFirewall(ctx, \"fw3\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"website-fw-3\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSourceRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"130.211.0.0/22\"),\n\t\t\t\tpulumi.String(\"35.191.0.0/16\"),\n\t\t\t},\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"load-balanced-backend\"),\n\t\t\t},\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfw2,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfw4, err := compute.NewFirewall(ctx, \"fw4\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"website-fw-4\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSourceRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.129.0.0/26\"),\n\t\t\t},\n\t\t\tTargetTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"load-balanced-backend\"),\n\t\t\t},\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"80\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"443\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"8000\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfw3,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-hc\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPortSpecification: pulumi.String(\"USE_SERVING_PORT\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfw4,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tBackends: compute.RegionBackendServiceBackendArray{\n\t\t\t\t\u0026compute.RegionBackendServiceBackendArgs{\n\t\t\t\t\tGroup: rigm.InstanceGroup,\n\t\t\t\t\tBalancingMode: pulumi.String(\"UTILIZATION\"),\n\t\t\t\t\tCapacityScaler: pulumi.Float64(1),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-backend\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultRegionHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-map\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionTargetHttpProxy, err := compute.NewRegionTargetHttpProxy(ctx, \"default\", \u0026compute.RegionTargetHttpProxyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxy, err := compute.NewSubnetwork(ctx, \"proxy\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"website-net-proxy\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.129.0.0/26\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tPurpose: pulumi.String(\"REGIONAL_MANAGED_PROXY\"),\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\t// Forwarding rule for Internal Load Balancing\n\t\t_, err = compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"website-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpProtocol: pulumi.String(\"TCP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t\tTarget: defaultRegionTargetHttpProxy.ID(),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tNetworkTier: pulumi.String(\"PREMIUM\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxy,\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.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 .name(\"website-net\")\n .autoCreateSubnetworks(false)\n .routingMode(\"REGIONAL\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"website-net-default\")\n .ipCidrRange(\"10.1.2.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .build());\n\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"template-website-backend\")\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());\n\n var rigm = new RegionInstanceGroupManager(\"rigm\", RegionInstanceGroupManagerArgs.builder()\n .region(\"us-central1\")\n .name(\"website-rigm\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(instanceTemplate.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"internal-glb\")\n .targetSize(1)\n .build());\n\n var fw1 = new Firewall(\"fw1\", FirewallArgs.builder()\n .name(\"website-fw-1\")\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());\n\n var fw2 = new Firewall(\"fw2\", FirewallArgs.builder()\n .name(\"website-fw-2\")\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 .dependsOn(fw1)\n .build());\n\n var fw3 = new Firewall(\"fw3\", FirewallArgs.builder()\n .name(\"website-fw-3\")\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 .dependsOn(fw2)\n .build());\n\n var fw4 = new Firewall(\"fw4\", FirewallArgs.builder()\n .name(\"website-fw-4\")\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 .dependsOn(fw3)\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"website-hc\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .portSpecification(\"USE_SERVING_PORT\")\n .build())\n .build(), CustomResourceOptions.builder()\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 .name(\"website-backend\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultRegionHealthCheck.id())\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"website-map\")\n .defaultService(defaultRegionBackendService.id())\n .build());\n\n var defaultRegionTargetHttpProxy = new RegionTargetHttpProxy(\"defaultRegionTargetHttpProxy\", RegionTargetHttpProxyArgs.builder()\n .region(\"us-central1\")\n .name(\"website-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .build());\n\n var proxy = new Subnetwork(\"proxy\", SubnetworkArgs.builder()\n .name(\"website-net-proxy\")\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());\n\n // Forwarding rule for Internal Load Balancing\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder()\n .name(\"website-forwarding-rule\")\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 .dependsOn(proxy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Forwarding rule for Internal Load Balancing\n default:\n type: gcp:compute:ForwardingRule\n properties:\n name: website-forwarding-rule\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 dependson:\n - ${proxy}\n defaultRegionTargetHttpProxy:\n type: gcp:compute:RegionTargetHttpProxy\n name: default\n properties:\n region: us-central1\n name: website-proxy\n urlMap: ${defaultRegionUrlMap.id}\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n region: us-central1\n name: website-map\n defaultService: ${defaultRegionBackendService.id}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n loadBalancingScheme: INTERNAL_MANAGED\n backends:\n - group: ${rigm.instanceGroup}\n balancingMode: UTILIZATION\n capacityScaler: 1\n region: us-central1\n name: website-backend\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultRegionHealthCheck.id}\n rigm:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n region: us-central1\n name: website-rigm\n versions:\n - instanceTemplate: ${instanceTemplate.id}\n name: primary\n baseInstanceName: internal-glb\n targetSize: 1\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: instance_template\n properties:\n name: template-website-backend\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 defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n region: us-central1\n name: website-hc\n httpHealthCheck:\n portSpecification: USE_SERVING_PORT\n options:\n dependson:\n - ${fw4}\n fw1:\n type: gcp:compute:Firewall\n properties:\n name: website-fw-1\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 fw2:\n type: gcp:compute:Firewall\n properties:\n name: website-fw-2\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 dependson:\n - ${fw1}\n fw3:\n type: gcp:compute:Firewall\n properties:\n name: website-fw-3\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 dependson:\n - ${fw2}\n fw4:\n type: gcp:compute:Firewall\n properties:\n name: website-fw-4\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 dependson:\n - ${fw3}\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: website-net\n autoCreateSubnetworks: false\n routingMode: REGIONAL\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: website-net-default\n ipCidrRange: 10.1.2.0/24\n region: us-central1\n network: ${defaultNetwork.id}\n proxy:\n type: gcp:compute:Subnetwork\n properties:\n name: website-net-proxy\n ipCidrRange: 10.129.0.0/26\n region: us-central1\n network: ${defaultNetwork.id}\n purpose: REGIONAL_MANAGED_PROXY\n role: ACTIVE\nvariables:\n debianImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule Regional Http Xlb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst debianImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"website-net\",\n autoCreateSubnetworks: false,\n routingMode: \"REGIONAL\",\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"website-net-default\",\n ipCidrRange: \"10.1.2.0/24\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n});\nconst instanceTemplate = new gcp.compute.InstanceTemplate(\"instance_template\", {\n name: \"template-website-backend\",\n machineType: \"e2-medium\",\n networkInterfaces: [{\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n }],\n disks: [{\n sourceImage: debianImage.then(debianImage =\u003e debianImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n tags: [\n \"allow-ssh\",\n \"load-balanced-backend\",\n ],\n});\nconst rigm = new gcp.compute.RegionInstanceGroupManager(\"rigm\", {\n region: \"us-central1\",\n name: \"website-rigm\",\n versions: [{\n instanceTemplate: instanceTemplate.id,\n name: \"primary\",\n }],\n baseInstanceName: \"internal-glb\",\n targetSize: 1,\n});\nconst fw1 = new gcp.compute.Firewall(\"fw1\", {\n name: \"website-fw-1\",\n network: defaultNetwork.id,\n sourceRanges: [\"10.1.2.0/24\"],\n allows: [\n {\n protocol: \"tcp\",\n },\n {\n protocol: \"udp\",\n },\n {\n protocol: \"icmp\",\n },\n ],\n direction: \"INGRESS\",\n});\nconst fw2 = new gcp.compute.Firewall(\"fw2\", {\n name: \"website-fw-2\",\n network: defaultNetwork.id,\n sourceRanges: [\"0.0.0.0/0\"],\n allows: [{\n protocol: \"tcp\",\n ports: [\"22\"],\n }],\n targetTags: [\"allow-ssh\"],\n direction: \"INGRESS\",\n}, {\n dependsOn: [fw1],\n});\nconst fw3 = new gcp.compute.Firewall(\"fw3\", {\n name: \"website-fw-3\",\n network: defaultNetwork.id,\n sourceRanges: [\n \"130.211.0.0/22\",\n \"35.191.0.0/16\",\n ],\n allows: [{\n protocol: \"tcp\",\n }],\n targetTags: [\"load-balanced-backend\"],\n direction: \"INGRESS\",\n}, {\n dependsOn: [fw2],\n});\nconst fw4 = new gcp.compute.Firewall(\"fw4\", {\n name: \"website-fw-4\",\n network: defaultNetwork.id,\n sourceRanges: [\"10.129.0.0/26\"],\n targetTags: [\"load-balanced-backend\"],\n allows: [\n {\n protocol: \"tcp\",\n ports: [\"80\"],\n },\n {\n protocol: \"tcp\",\n ports: [\"443\"],\n },\n {\n protocol: \"tcp\",\n ports: [\"8000\"],\n },\n ],\n direction: \"INGRESS\",\n}, {\n dependsOn: [fw3],\n});\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"website-hc\",\n httpHealthCheck: {\n portSpecification: \"USE_SERVING_PORT\",\n },\n}, {\n dependsOn: [fw4],\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n backends: [{\n group: rigm.instanceGroup,\n balancingMode: \"UTILIZATION\",\n capacityScaler: 1,\n }],\n region: \"us-central1\",\n name: \"website-backend\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultRegionHealthCheck.id,\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n region: \"us-central1\",\n name: \"website-map\",\n defaultService: defaultRegionBackendService.id,\n});\nconst defaultRegionTargetHttpProxy = new gcp.compute.RegionTargetHttpProxy(\"default\", {\n region: \"us-central1\",\n name: \"website-proxy\",\n urlMap: defaultRegionUrlMap.id,\n});\nconst defaultAddress = new gcp.compute.Address(\"default\", {\n name: \"website-ip-1\",\n region: \"us-central1\",\n networkTier: \"STANDARD\",\n});\nconst proxy = new gcp.compute.Subnetwork(\"proxy\", {\n name: \"website-net-proxy\",\n ipCidrRange: \"10.129.0.0/26\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n purpose: \"REGIONAL_MANAGED_PROXY\",\n role: \"ACTIVE\",\n});\n// Forwarding rule for Regional External Load Balancing\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"website-forwarding-rule\",\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.address,\n networkTier: \"STANDARD\",\n}, {\n dependsOn: [proxy],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndebian_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault_network = gcp.compute.Network(\"default\",\n name=\"website-net\",\n auto_create_subnetworks=False,\n routing_mode=\"REGIONAL\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"website-net-default\",\n ip_cidr_range=\"10.1.2.0/24\",\n region=\"us-central1\",\n network=default_network.id)\ninstance_template = gcp.compute.InstanceTemplate(\"instance_template\",\n name=\"template-website-backend\",\n machine_type=\"e2-medium\",\n network_interfaces=[{\n \"network\": default_network.id,\n \"subnetwork\": default_subnetwork.id,\n }],\n disks=[{\n \"sourceImage\": debian_image.self_link,\n \"autoDelete\": True,\n \"boot\": True,\n }],\n tags=[\n \"allow-ssh\",\n \"load-balanced-backend\",\n ])\nrigm = gcp.compute.RegionInstanceGroupManager(\"rigm\",\n region=\"us-central1\",\n name=\"website-rigm\",\n versions=[{\n \"instanceTemplate\": instance_template.id,\n \"name\": \"primary\",\n }],\n base_instance_name=\"internal-glb\",\n target_size=1)\nfw1 = gcp.compute.Firewall(\"fw1\",\n name=\"website-fw-1\",\n network=default_network.id,\n source_ranges=[\"10.1.2.0/24\"],\n allows=[\n {\n \"protocol\": \"tcp\",\n },\n {\n \"protocol\": \"udp\",\n },\n {\n \"protocol\": \"icmp\",\n },\n ],\n direction=\"INGRESS\")\nfw2 = gcp.compute.Firewall(\"fw2\",\n name=\"website-fw-2\",\n network=default_network.id,\n source_ranges=[\"0.0.0.0/0\"],\n allows=[{\n \"protocol\": \"tcp\",\n \"ports\": [\"22\"],\n }],\n target_tags=[\"allow-ssh\"],\n direction=\"INGRESS\",\n opts = pulumi.ResourceOptions(depends_on=[fw1]))\nfw3 = gcp.compute.Firewall(\"fw3\",\n name=\"website-fw-3\",\n network=default_network.id,\n source_ranges=[\n \"130.211.0.0/22\",\n \"35.191.0.0/16\",\n ],\n allows=[{\n \"protocol\": \"tcp\",\n }],\n target_tags=[\"load-balanced-backend\"],\n direction=\"INGRESS\",\n opts = pulumi.ResourceOptions(depends_on=[fw2]))\nfw4 = gcp.compute.Firewall(\"fw4\",\n name=\"website-fw-4\",\n network=default_network.id,\n source_ranges=[\"10.129.0.0/26\"],\n target_tags=[\"load-balanced-backend\"],\n allows=[\n {\n \"protocol\": \"tcp\",\n \"ports\": [\"80\"],\n },\n {\n \"protocol\": \"tcp\",\n \"ports\": [\"443\"],\n },\n {\n \"protocol\": \"tcp\",\n \"ports\": [\"8000\"],\n },\n ],\n direction=\"INGRESS\",\n opts = pulumi.ResourceOptions(depends_on=[fw3]))\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"website-hc\",\n http_health_check={\n \"portSpecification\": \"USE_SERVING_PORT\",\n },\n opts = pulumi.ResourceOptions(depends_on=[fw4]))\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n backends=[{\n \"group\": rigm.instance_group,\n \"balancingMode\": \"UTILIZATION\",\n \"capacityScaler\": 1,\n }],\n region=\"us-central1\",\n name=\"website-backend\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_region_health_check.id)\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n region=\"us-central1\",\n name=\"website-map\",\n default_service=default_region_backend_service.id)\ndefault_region_target_http_proxy = gcp.compute.RegionTargetHttpProxy(\"default\",\n region=\"us-central1\",\n name=\"website-proxy\",\n url_map=default_region_url_map.id)\ndefault_address = gcp.compute.Address(\"default\",\n name=\"website-ip-1\",\n region=\"us-central1\",\n network_tier=\"STANDARD\")\nproxy = gcp.compute.Subnetwork(\"proxy\",\n name=\"website-net-proxy\",\n ip_cidr_range=\"10.129.0.0/26\",\n region=\"us-central1\",\n network=default_network.id,\n purpose=\"REGIONAL_MANAGED_PROXY\",\n role=\"ACTIVE\")\n# Forwarding rule for Regional External Load Balancing\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"website-forwarding-rule\",\n region=\"us-central1\",\n ip_protocol=\"TCP\",\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n port_range=\"80\",\n target=default_region_target_http_proxy.id,\n network=default_network.id,\n ip_address=default_address.address,\n network_tier=\"STANDARD\",\n opts = pulumi.ResourceOptions(depends_on=[proxy]))\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 debianImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"website-net\",\n AutoCreateSubnetworks = false,\n RoutingMode = \"REGIONAL\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"website-net-default\",\n IpCidrRange = \"10.1.2.0/24\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n });\n\n var instanceTemplate = new Gcp.Compute.InstanceTemplate(\"instance_template\", new()\n {\n Name = \"template-website-backend\",\n MachineType = \"e2-medium\",\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = debianImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n Tags = new[]\n {\n \"allow-ssh\",\n \"load-balanced-backend\",\n },\n });\n\n var rigm = new Gcp.Compute.RegionInstanceGroupManager(\"rigm\", new()\n {\n Region = \"us-central1\",\n Name = \"website-rigm\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = instanceTemplate.Id,\n Name = \"primary\",\n },\n },\n BaseInstanceName = \"internal-glb\",\n TargetSize = 1,\n });\n\n var fw1 = new Gcp.Compute.Firewall(\"fw1\", new()\n {\n Name = \"website-fw-1\",\n Network = defaultNetwork.Id,\n SourceRanges = new[]\n {\n \"10.1.2.0/24\",\n },\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n },\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"udp\",\n },\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"icmp\",\n },\n },\n Direction = \"INGRESS\",\n });\n\n var fw2 = new Gcp.Compute.Firewall(\"fw2\", new()\n {\n Name = \"website-fw-2\",\n Network = defaultNetwork.Id,\n SourceRanges = new[]\n {\n \"0.0.0.0/0\",\n },\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"22\",\n },\n },\n },\n TargetTags = new[]\n {\n \"allow-ssh\",\n },\n Direction = \"INGRESS\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n fw1,\n },\n });\n\n var fw3 = new Gcp.Compute.Firewall(\"fw3\", new()\n {\n Name = \"website-fw-3\",\n Network = defaultNetwork.Id,\n SourceRanges = new[]\n {\n \"130.211.0.0/22\",\n \"35.191.0.0/16\",\n },\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n },\n },\n TargetTags = new[]\n {\n \"load-balanced-backend\",\n },\n Direction = \"INGRESS\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n fw2,\n },\n });\n\n var fw4 = new Gcp.Compute.Firewall(\"fw4\", new()\n {\n Name = \"website-fw-4\",\n Network = defaultNetwork.Id,\n SourceRanges = new[]\n {\n \"10.129.0.0/26\",\n },\n TargetTags = new[]\n {\n \"load-balanced-backend\",\n },\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"80\",\n },\n },\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"443\",\n },\n },\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"8000\",\n },\n },\n },\n Direction = \"INGRESS\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n fw3,\n },\n });\n\n var defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"website-hc\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n PortSpecification = \"USE_SERVING_PORT\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n fw4,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n Backends = new[]\n {\n new Gcp.Compute.Inputs.RegionBackendServiceBackendArgs\n {\n Group = rigm.InstanceGroup,\n BalancingMode = \"UTILIZATION\",\n CapacityScaler = 1,\n },\n },\n Region = \"us-central1\",\n Name = \"website-backend\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultRegionHealthCheck.Id,\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"website-map\",\n DefaultService = defaultRegionBackendService.Id,\n });\n\n var defaultRegionTargetHttpProxy = new Gcp.Compute.RegionTargetHttpProxy(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"website-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n });\n\n var defaultAddress = new Gcp.Compute.Address(\"default\", new()\n {\n Name = \"website-ip-1\",\n Region = \"us-central1\",\n NetworkTier = \"STANDARD\",\n });\n\n var proxy = new Gcp.Compute.Subnetwork(\"proxy\", new()\n {\n Name = \"website-net-proxy\",\n IpCidrRange = \"10.129.0.0/26\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n Role = \"ACTIVE\",\n });\n\n // Forwarding rule for Regional External Load Balancing\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"website-forwarding-rule\",\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.IPAddress,\n NetworkTier = \"STANDARD\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxy,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdebianImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"website-net\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t\tRoutingMode: pulumi.String(\"REGIONAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"website-net-default\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.2.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstanceTemplate, err := compute.NewInstanceTemplate(ctx, \"instance_template\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"template-website-backend\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(debianImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"allow-ssh\"),\n\t\t\t\tpulumi.String(\"load-balanced-backend\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trigm, err := compute.NewRegionInstanceGroupManager(ctx, \"rigm\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-rigm\"),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: instanceTemplate.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"internal-glb\"),\n\t\t\tTargetSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfw1, err := compute.NewFirewall(ctx, \"fw1\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"website-fw-1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSourceRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.1.2.0/24\"),\n\t\t\t},\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"udp\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"icmp\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfw2, err := compute.NewFirewall(ctx, \"fw2\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"website-fw-2\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSourceRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t},\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"22\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"allow-ssh\"),\n\t\t\t},\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfw1,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfw3, err := compute.NewFirewall(ctx, \"fw3\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"website-fw-3\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSourceRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"130.211.0.0/22\"),\n\t\t\t\tpulumi.String(\"35.191.0.0/16\"),\n\t\t\t},\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"load-balanced-backend\"),\n\t\t\t},\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfw2,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfw4, err := compute.NewFirewall(ctx, \"fw4\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"website-fw-4\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSourceRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.129.0.0/26\"),\n\t\t\t},\n\t\t\tTargetTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"load-balanced-backend\"),\n\t\t\t},\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"80\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"443\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"8000\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfw3,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-hc\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPortSpecification: pulumi.String(\"USE_SERVING_PORT\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfw4,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tBackends: compute.RegionBackendServiceBackendArray{\n\t\t\t\t\u0026compute.RegionBackendServiceBackendArgs{\n\t\t\t\t\tGroup: rigm.InstanceGroup,\n\t\t\t\t\tBalancingMode: pulumi.String(\"UTILIZATION\"),\n\t\t\t\t\tCapacityScaler: pulumi.Float64(1),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-backend\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultRegionHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-map\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionTargetHttpProxy, err := compute.NewRegionTargetHttpProxy(ctx, \"default\", \u0026compute.RegionTargetHttpProxyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAddress, err := compute.NewAddress(ctx, \"default\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"website-ip-1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetworkTier: pulumi.String(\"STANDARD\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxy, err := compute.NewSubnetwork(ctx, \"proxy\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"website-net-proxy\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.129.0.0/26\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tPurpose: pulumi.String(\"REGIONAL_MANAGED_PROXY\"),\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\t// Forwarding rule for Regional External Load Balancing\n\t\t_, err = compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"website-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpProtocol: pulumi.String(\"TCP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t\tTarget: defaultRegionTargetHttpProxy.ID(),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tIpAddress: defaultAddress.Address,\n\t\t\tNetworkTier: pulumi.String(\"STANDARD\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxy,\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.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 .name(\"website-net\")\n .autoCreateSubnetworks(false)\n .routingMode(\"REGIONAL\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"website-net-default\")\n .ipCidrRange(\"10.1.2.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .build());\n\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"template-website-backend\")\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());\n\n var rigm = new RegionInstanceGroupManager(\"rigm\", RegionInstanceGroupManagerArgs.builder()\n .region(\"us-central1\")\n .name(\"website-rigm\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(instanceTemplate.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"internal-glb\")\n .targetSize(1)\n .build());\n\n var fw1 = new Firewall(\"fw1\", FirewallArgs.builder()\n .name(\"website-fw-1\")\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());\n\n var fw2 = new Firewall(\"fw2\", FirewallArgs.builder()\n .name(\"website-fw-2\")\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 .dependsOn(fw1)\n .build());\n\n var fw3 = new Firewall(\"fw3\", FirewallArgs.builder()\n .name(\"website-fw-3\")\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 .dependsOn(fw2)\n .build());\n\n var fw4 = new Firewall(\"fw4\", FirewallArgs.builder()\n .name(\"website-fw-4\")\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 .dependsOn(fw3)\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"website-hc\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .portSpecification(\"USE_SERVING_PORT\")\n .build())\n .build(), CustomResourceOptions.builder()\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 .name(\"website-backend\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultRegionHealthCheck.id())\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"website-map\")\n .defaultService(defaultRegionBackendService.id())\n .build());\n\n var defaultRegionTargetHttpProxy = new RegionTargetHttpProxy(\"defaultRegionTargetHttpProxy\", RegionTargetHttpProxyArgs.builder()\n .region(\"us-central1\")\n .name(\"website-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .build());\n\n var defaultAddress = new Address(\"defaultAddress\", AddressArgs.builder()\n .name(\"website-ip-1\")\n .region(\"us-central1\")\n .networkTier(\"STANDARD\")\n .build());\n\n var proxy = new Subnetwork(\"proxy\", SubnetworkArgs.builder()\n .name(\"website-net-proxy\")\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());\n\n // Forwarding rule for Regional External Load Balancing\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder()\n .name(\"website-forwarding-rule\")\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.address())\n .networkTier(\"STANDARD\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Forwarding rule for Regional External Load Balancing\n default:\n type: gcp:compute:ForwardingRule\n properties:\n name: website-forwarding-rule\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.address}\n networkTier: STANDARD\n options:\n dependson:\n - ${proxy}\n defaultRegionTargetHttpProxy:\n type: gcp:compute:RegionTargetHttpProxy\n name: default\n properties:\n region: us-central1\n name: website-proxy\n urlMap: ${defaultRegionUrlMap.id}\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n region: us-central1\n name: website-map\n defaultService: ${defaultRegionBackendService.id}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n loadBalancingScheme: EXTERNAL_MANAGED\n backends:\n - group: ${rigm.instanceGroup}\n balancingMode: UTILIZATION\n capacityScaler: 1\n region: us-central1\n name: website-backend\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultRegionHealthCheck.id}\n rigm:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n region: us-central1\n name: website-rigm\n versions:\n - instanceTemplate: ${instanceTemplate.id}\n name: primary\n baseInstanceName: internal-glb\n targetSize: 1\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: instance_template\n properties:\n name: template-website-backend\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 defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n region: us-central1\n name: website-hc\n httpHealthCheck:\n portSpecification: USE_SERVING_PORT\n options:\n dependson:\n - ${fw4}\n defaultAddress:\n type: gcp:compute:Address\n name: default\n properties:\n name: website-ip-1\n region: us-central1\n networkTier: STANDARD\n fw1:\n type: gcp:compute:Firewall\n properties:\n name: website-fw-1\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 fw2:\n type: gcp:compute:Firewall\n properties:\n name: website-fw-2\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 dependson:\n - ${fw1}\n fw3:\n type: gcp:compute:Firewall\n properties:\n name: website-fw-3\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 dependson:\n - ${fw2}\n fw4:\n type: gcp:compute:Firewall\n properties:\n name: website-fw-4\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 dependson:\n - ${fw3}\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: website-net\n autoCreateSubnetworks: false\n routingMode: REGIONAL\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: website-net-default\n ipCidrRange: 10.1.2.0/24\n region: us-central1\n network: ${defaultNetwork.id}\n proxy:\n type: gcp:compute:Subnetwork\n properties:\n name: website-net-proxy\n ipCidrRange: 10.129.0.0/26\n region: us-central1\n network: ${defaultNetwork.id}\n purpose: REGIONAL_MANAGED_PROXY\n role: ACTIVE\nvariables:\n debianImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule Vpc Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// Consumer service endpoint\nconst consumerNet = new gcp.compute.Network(\"consumer_net\", {\n name: \"consumer-net\",\n autoCreateSubnetworks: false,\n});\nconst consumerSubnet = new gcp.compute.Subnetwork(\"consumer_subnet\", {\n name: \"consumer-net\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: consumerNet.id,\n});\nconst consumerAddress = new gcp.compute.Address(\"consumer_address\", {\n name: \"website-ip-1\",\n region: \"us-central1\",\n subnetwork: consumerSubnet.id,\n addressType: \"INTERNAL\",\n});\n// Producer service attachment\nconst producerNet = new gcp.compute.Network(\"producer_net\", {\n name: \"producer-net\",\n autoCreateSubnetworks: false,\n});\nconst pscProducerSubnet = new gcp.compute.Subnetwork(\"psc_producer_subnet\", {\n name: \"producer-psc-net\",\n ipCidrRange: \"10.1.0.0/16\",\n region: \"us-central1\",\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n network: producerNet.id,\n});\nconst producerSubnet = new gcp.compute.Subnetwork(\"producer_subnet\", {\n name: \"producer-net\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: producerNet.id,\n});\nconst producerServiceHealthCheck = new gcp.compute.HealthCheck(\"producer_service_health_check\", {\n name: \"producer-service-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst producerServiceBackend = new gcp.compute.RegionBackendService(\"producer_service_backend\", {\n name: \"producer-service-backend\",\n region: \"us-central1\",\n healthChecks: producerServiceHealthCheck.id,\n});\nconst producerTargetService = new gcp.compute.ForwardingRule(\"producer_target_service\", {\n name: \"producer-forwarding-rule\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: producerServiceBackend.id,\n allPorts: true,\n network: producerNet.name,\n subnetwork: producerSubnet.name,\n});\nconst producerServiceAttachment = new gcp.compute.ServiceAttachment(\"producer_service_attachment\", {\n name: \"producer-service\",\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});\n// Forwarding rule for VPC private service connect\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"psc-endpoint\",\n region: \"us-central1\",\n loadBalancingScheme: \"\",\n target: producerServiceAttachment.id,\n network: consumerNet.name,\n ipAddress: consumerAddress.id,\n allowPscGlobalAccess: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Consumer service endpoint\nconsumer_net = gcp.compute.Network(\"consumer_net\",\n name=\"consumer-net\",\n auto_create_subnetworks=False)\nconsumer_subnet = gcp.compute.Subnetwork(\"consumer_subnet\",\n name=\"consumer-net\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=consumer_net.id)\nconsumer_address = gcp.compute.Address(\"consumer_address\",\n name=\"website-ip-1\",\n region=\"us-central1\",\n subnetwork=consumer_subnet.id,\n address_type=\"INTERNAL\")\n# Producer service attachment\nproducer_net = gcp.compute.Network(\"producer_net\",\n name=\"producer-net\",\n auto_create_subnetworks=False)\npsc_producer_subnet = gcp.compute.Subnetwork(\"psc_producer_subnet\",\n name=\"producer-psc-net\",\n ip_cidr_range=\"10.1.0.0/16\",\n region=\"us-central1\",\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n network=producer_net.id)\nproducer_subnet = gcp.compute.Subnetwork(\"producer_subnet\",\n name=\"producer-net\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=producer_net.id)\nproducer_service_health_check = gcp.compute.HealthCheck(\"producer_service_health_check\",\n name=\"producer-service-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nproducer_service_backend = gcp.compute.RegionBackendService(\"producer_service_backend\",\n name=\"producer-service-backend\",\n region=\"us-central1\",\n health_checks=producer_service_health_check.id)\nproducer_target_service = gcp.compute.ForwardingRule(\"producer_target_service\",\n name=\"producer-forwarding-rule\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=producer_service_backend.id,\n all_ports=True,\n network=producer_net.name,\n subnetwork=producer_subnet.name)\nproducer_service_attachment = gcp.compute.ServiceAttachment(\"producer_service_attachment\",\n name=\"producer-service\",\n region=\"us-central1\",\n description=\"A service attachment configured with Terraform\",\n enable_proxy_protocol=True,\n connection_preference=\"ACCEPT_AUTOMATIC\",\n nat_subnets=[psc_producer_subnet.name],\n target_service=producer_target_service.id)\n# Forwarding rule for VPC private service connect\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"psc-endpoint\",\n region=\"us-central1\",\n load_balancing_scheme=\"\",\n target=producer_service_attachment.id,\n network=consumer_net.name,\n ip_address=consumer_address.id,\n allow_psc_global_access=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Consumer service endpoint\n var consumerNet = new Gcp.Compute.Network(\"consumer_net\", new()\n {\n Name = \"consumer-net\",\n AutoCreateSubnetworks = false,\n });\n\n var consumerSubnet = new Gcp.Compute.Subnetwork(\"consumer_subnet\", new()\n {\n Name = \"consumer-net\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = consumerNet.Id,\n });\n\n var consumerAddress = new Gcp.Compute.Address(\"consumer_address\", new()\n {\n Name = \"website-ip-1\",\n Region = \"us-central1\",\n Subnetwork = consumerSubnet.Id,\n AddressType = \"INTERNAL\",\n });\n\n // Producer service attachment\n var producerNet = new Gcp.Compute.Network(\"producer_net\", new()\n {\n Name = \"producer-net\",\n AutoCreateSubnetworks = false,\n });\n\n var pscProducerSubnet = new Gcp.Compute.Subnetwork(\"psc_producer_subnet\", new()\n {\n Name = \"producer-psc-net\",\n IpCidrRange = \"10.1.0.0/16\",\n Region = \"us-central1\",\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n Network = producerNet.Id,\n });\n\n var producerSubnet = new Gcp.Compute.Subnetwork(\"producer_subnet\", new()\n {\n Name = \"producer-net\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = producerNet.Id,\n });\n\n var producerServiceHealthCheck = new Gcp.Compute.HealthCheck(\"producer_service_health_check\", new()\n {\n Name = \"producer-service-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var producerServiceBackend = new Gcp.Compute.RegionBackendService(\"producer_service_backend\", new()\n {\n Name = \"producer-service-backend\",\n Region = \"us-central1\",\n HealthChecks = producerServiceHealthCheck.Id,\n });\n\n var producerTargetService = new Gcp.Compute.ForwardingRule(\"producer_target_service\", new()\n {\n Name = \"producer-forwarding-rule\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = producerServiceBackend.Id,\n AllPorts = true,\n Network = producerNet.Name,\n Subnetwork = producerSubnet.Name,\n });\n\n var producerServiceAttachment = new Gcp.Compute.ServiceAttachment(\"producer_service_attachment\", new()\n {\n Name = \"producer-service\",\n Region = \"us-central1\",\n Description = \"A service attachment configured with Terraform\",\n EnableProxyProtocol = true,\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n NatSubnets = new[]\n {\n pscProducerSubnet.Name,\n },\n TargetService = producerTargetService.Id,\n });\n\n // Forwarding rule for VPC private service connect\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"psc-endpoint\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"\",\n Target = producerServiceAttachment.Id,\n Network = consumerNet.Name,\n IpAddress = consumerAddress.Id,\n AllowPscGlobalAccess = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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// Consumer service endpoint\n\t\tconsumerNet, err := compute.NewNetwork(ctx, \"consumer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"consumer-net\"),\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\tconsumerSubnet, err := compute.NewSubnetwork(ctx, \"consumer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"consumer-net\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: consumerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tconsumerAddress, err := compute.NewAddress(ctx, \"consumer_address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"website-ip-1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSubnetwork: consumerSubnet.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Producer service attachment\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"producer-net\"),\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\tpscProducerSubnet, err := compute.NewSubnetwork(ctx, \"psc_producer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"producer-psc-net\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerSubnet, err := compute.NewSubnetwork(ctx, \"producer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"producer-net\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceHealthCheck, err := compute.NewHealthCheck(ctx, \"producer_service_health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"producer-service-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceBackend, err := compute.NewRegionBackendService(ctx, \"producer_service_backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"producer-service-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: producerServiceHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerTargetService, err := compute.NewForwardingRule(ctx, \"producer_target_service\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"producer-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: producerServiceBackend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: producerNet.Name,\n\t\t\tSubnetwork: producerSubnet.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceAttachment, err := compute.NewServiceAttachment(ctx, \"producer_service_attachment\", \u0026compute.ServiceAttachmentArgs{\n\t\t\tName: pulumi.String(\"producer-service\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A service attachment configured with Terraform\"),\n\t\t\tEnableProxyProtocol: pulumi.Bool(true),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tNatSubnets: pulumi.StringArray{\n\t\t\t\tpscProducerSubnet.Name,\n\t\t\t},\n\t\t\tTargetService: producerTargetService.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Forwarding rule for VPC private service connect\n\t\t_, err = compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"psc-endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tTarget: producerServiceAttachment.ID(),\n\t\t\tNetwork: consumerNet.Name,\n\t\t\tIpAddress: consumerAddress.ID(),\n\t\t\tAllowPscGlobalAccess: pulumi.Bool(true),\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.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 // Consumer service endpoint\n var consumerNet = new Network(\"consumerNet\", NetworkArgs.builder()\n .name(\"consumer-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var consumerSubnet = new Subnetwork(\"consumerSubnet\", SubnetworkArgs.builder()\n .name(\"consumer-net\")\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 .name(\"website-ip-1\")\n .region(\"us-central1\")\n .subnetwork(consumerSubnet.id())\n .addressType(\"INTERNAL\")\n .build());\n\n // Producer service attachment\n var producerNet = new Network(\"producerNet\", NetworkArgs.builder()\n .name(\"producer-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscProducerSubnet = new Subnetwork(\"pscProducerSubnet\", SubnetworkArgs.builder()\n .name(\"producer-psc-net\")\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 .name(\"producer-net\")\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 .name(\"producer-service-health-check\")\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 .name(\"producer-service-backend\")\n .region(\"us-central1\")\n .healthChecks(producerServiceHealthCheck.id())\n .build());\n\n var producerTargetService = new ForwardingRule(\"producerTargetService\", ForwardingRuleArgs.builder()\n .name(\"producer-forwarding-rule\")\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 .name(\"producer-service\")\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 // Forwarding rule for VPC private service connect\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder()\n .name(\"psc-endpoint\")\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:\n type: gcp:compute:ForwardingRule\n properties:\n name: psc-endpoint\n region: us-central1\n loadBalancingScheme:\n target: ${producerServiceAttachment.id}\n network: ${consumerNet.name}\n ipAddress: ${consumerAddress.id}\n allowPscGlobalAccess: true\n # Consumer service endpoint\n consumerNet:\n type: gcp:compute:Network\n name: consumer_net\n properties:\n name: consumer-net\n autoCreateSubnetworks: false\n consumerSubnet:\n type: gcp:compute:Subnetwork\n name: consumer_subnet\n properties:\n name: consumer-net\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${consumerNet.id}\n consumerAddress:\n type: gcp:compute:Address\n name: consumer_address\n properties:\n name: website-ip-1\n region: us-central1\n subnetwork: ${consumerSubnet.id}\n addressType: INTERNAL\n # Producer service attachment\n producerNet:\n type: gcp:compute:Network\n name: producer_net\n properties:\n name: producer-net\n autoCreateSubnetworks: false\n producerSubnet:\n type: gcp:compute:Subnetwork\n name: producer_subnet\n properties:\n name: producer-net\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${producerNet.id}\n pscProducerSubnet:\n type: gcp:compute:Subnetwork\n name: psc_producer_subnet\n properties:\n name: producer-psc-net\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 name: producer_service_attachment\n properties:\n name: producer-service\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 name: producer_target_service\n properties:\n name: producer-forwarding-rule\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 name: producer_service_backend\n properties:\n name: producer-service-backend\n region: us-central1\n healthChecks: ${producerServiceHealthCheck.id}\n producerServiceHealthCheck:\n type: gcp:compute:HealthCheck\n name: producer_service_health_check\n properties:\n name: producer-service-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule Vpc Psc No Automate Dns\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst consumerNet = new gcp.compute.Network(\"consumer_net\", {\n name: \"consumer-net\",\n autoCreateSubnetworks: false,\n});\nconst consumerSubnet = new gcp.compute.Subnetwork(\"consumer_subnet\", {\n name: \"consumer-net\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: consumerNet.id,\n});\nconst consumerAddress = new gcp.compute.Address(\"consumer_address\", {\n name: \"website-ip-1\",\n region: \"us-central1\",\n subnetwork: consumerSubnet.id,\n addressType: \"INTERNAL\",\n});\nconst producerNet = new gcp.compute.Network(\"producer_net\", {\n name: \"producer-net\",\n autoCreateSubnetworks: false,\n});\nconst pscProducerSubnet = new gcp.compute.Subnetwork(\"psc_producer_subnet\", {\n name: \"producer-psc-net\",\n ipCidrRange: \"10.1.0.0/16\",\n region: \"us-central1\",\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n network: producerNet.id,\n});\nconst producerSubnet = new gcp.compute.Subnetwork(\"producer_subnet\", {\n name: \"producer-net\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: producerNet.id,\n});\nconst producerServiceHealthCheck = new gcp.compute.HealthCheck(\"producer_service_health_check\", {\n name: \"producer-service-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst producerServiceBackend = new gcp.compute.RegionBackendService(\"producer_service_backend\", {\n name: \"producer-service-backend\",\n region: \"us-central1\",\n healthChecks: producerServiceHealthCheck.id,\n});\nconst producerTargetService = new gcp.compute.ForwardingRule(\"producer_target_service\", {\n name: \"producer-forwarding-rule\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: producerServiceBackend.id,\n allPorts: true,\n network: producerNet.name,\n subnetwork: producerSubnet.name,\n});\nconst producerServiceAttachment = new gcp.compute.ServiceAttachment(\"producer_service_attachment\", {\n name: \"producer-service\",\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});\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"psc-endpoint\",\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});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconsumer_net = gcp.compute.Network(\"consumer_net\",\n name=\"consumer-net\",\n auto_create_subnetworks=False)\nconsumer_subnet = gcp.compute.Subnetwork(\"consumer_subnet\",\n name=\"consumer-net\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=consumer_net.id)\nconsumer_address = gcp.compute.Address(\"consumer_address\",\n name=\"website-ip-1\",\n region=\"us-central1\",\n subnetwork=consumer_subnet.id,\n address_type=\"INTERNAL\")\nproducer_net = gcp.compute.Network(\"producer_net\",\n name=\"producer-net\",\n auto_create_subnetworks=False)\npsc_producer_subnet = gcp.compute.Subnetwork(\"psc_producer_subnet\",\n name=\"producer-psc-net\",\n ip_cidr_range=\"10.1.0.0/16\",\n region=\"us-central1\",\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n network=producer_net.id)\nproducer_subnet = gcp.compute.Subnetwork(\"producer_subnet\",\n name=\"producer-net\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=producer_net.id)\nproducer_service_health_check = gcp.compute.HealthCheck(\"producer_service_health_check\",\n name=\"producer-service-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nproducer_service_backend = gcp.compute.RegionBackendService(\"producer_service_backend\",\n name=\"producer-service-backend\",\n region=\"us-central1\",\n health_checks=producer_service_health_check.id)\nproducer_target_service = gcp.compute.ForwardingRule(\"producer_target_service\",\n name=\"producer-forwarding-rule\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=producer_service_backend.id,\n all_ports=True,\n network=producer_net.name,\n subnetwork=producer_subnet.name)\nproducer_service_attachment = gcp.compute.ServiceAttachment(\"producer_service_attachment\",\n name=\"producer-service\",\n region=\"us-central1\",\n description=\"A service attachment configured with Terraform\",\n enable_proxy_protocol=True,\n connection_preference=\"ACCEPT_AUTOMATIC\",\n nat_subnets=[psc_producer_subnet.name],\n target_service=producer_target_service.id)\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"psc-endpoint\",\n region=\"us-central1\",\n load_balancing_scheme=\"\",\n target=producer_service_attachment.id,\n network=consumer_net.name,\n ip_address=consumer_address.id,\n allow_psc_global_access=True,\n no_automate_dns_zone=True)\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 consumerNet = new Gcp.Compute.Network(\"consumer_net\", new()\n {\n Name = \"consumer-net\",\n AutoCreateSubnetworks = false,\n });\n\n var consumerSubnet = new Gcp.Compute.Subnetwork(\"consumer_subnet\", new()\n {\n Name = \"consumer-net\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = consumerNet.Id,\n });\n\n var consumerAddress = new Gcp.Compute.Address(\"consumer_address\", new()\n {\n Name = \"website-ip-1\",\n Region = \"us-central1\",\n Subnetwork = consumerSubnet.Id,\n AddressType = \"INTERNAL\",\n });\n\n var producerNet = new Gcp.Compute.Network(\"producer_net\", new()\n {\n Name = \"producer-net\",\n AutoCreateSubnetworks = false,\n });\n\n var pscProducerSubnet = new Gcp.Compute.Subnetwork(\"psc_producer_subnet\", new()\n {\n Name = \"producer-psc-net\",\n IpCidrRange = \"10.1.0.0/16\",\n Region = \"us-central1\",\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n Network = producerNet.Id,\n });\n\n var producerSubnet = new Gcp.Compute.Subnetwork(\"producer_subnet\", new()\n {\n Name = \"producer-net\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = producerNet.Id,\n });\n\n var producerServiceHealthCheck = new Gcp.Compute.HealthCheck(\"producer_service_health_check\", new()\n {\n Name = \"producer-service-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var producerServiceBackend = new Gcp.Compute.RegionBackendService(\"producer_service_backend\", new()\n {\n Name = \"producer-service-backend\",\n Region = \"us-central1\",\n HealthChecks = producerServiceHealthCheck.Id,\n });\n\n var producerTargetService = new Gcp.Compute.ForwardingRule(\"producer_target_service\", new()\n {\n Name = \"producer-forwarding-rule\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = producerServiceBackend.Id,\n AllPorts = true,\n Network = producerNet.Name,\n Subnetwork = producerSubnet.Name,\n });\n\n var producerServiceAttachment = new Gcp.Compute.ServiceAttachment(\"producer_service_attachment\", new()\n {\n Name = \"producer-service\",\n Region = \"us-central1\",\n Description = \"A service attachment configured with Terraform\",\n EnableProxyProtocol = true,\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n NatSubnets = new[]\n {\n pscProducerSubnet.Name,\n },\n TargetService = producerTargetService.Id,\n });\n\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"psc-endpoint\",\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tconsumerNet, err := compute.NewNetwork(ctx, \"consumer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"consumer-net\"),\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\tconsumerSubnet, err := compute.NewSubnetwork(ctx, \"consumer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"consumer-net\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: consumerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tconsumerAddress, err := compute.NewAddress(ctx, \"consumer_address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"website-ip-1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSubnetwork: consumerSubnet.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"producer-net\"),\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\tpscProducerSubnet, err := compute.NewSubnetwork(ctx, \"psc_producer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"producer-psc-net\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerSubnet, err := compute.NewSubnetwork(ctx, \"producer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"producer-net\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceHealthCheck, err := compute.NewHealthCheck(ctx, \"producer_service_health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"producer-service-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceBackend, err := compute.NewRegionBackendService(ctx, \"producer_service_backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"producer-service-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: producerServiceHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerTargetService, err := compute.NewForwardingRule(ctx, \"producer_target_service\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"producer-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: producerServiceBackend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: producerNet.Name,\n\t\t\tSubnetwork: producerSubnet.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceAttachment, err := compute.NewServiceAttachment(ctx, \"producer_service_attachment\", \u0026compute.ServiceAttachmentArgs{\n\t\t\tName: pulumi.String(\"producer-service\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A service attachment configured with Terraform\"),\n\t\t\tEnableProxyProtocol: pulumi.Bool(true),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tNatSubnets: pulumi.StringArray{\n\t\t\t\tpscProducerSubnet.Name,\n\t\t\t},\n\t\t\tTargetService: producerTargetService.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"psc-endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tTarget: producerServiceAttachment.ID(),\n\t\t\tNetwork: consumerNet.Name,\n\t\t\tIpAddress: consumerAddress.ID(),\n\t\t\tAllowPscGlobalAccess: pulumi.Bool(true),\n\t\t\tNoAutomateDnsZone: pulumi.Bool(true),\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.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 .name(\"consumer-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var consumerSubnet = new Subnetwork(\"consumerSubnet\", SubnetworkArgs.builder()\n .name(\"consumer-net\")\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 .name(\"website-ip-1\")\n .region(\"us-central1\")\n .subnetwork(consumerSubnet.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var producerNet = new Network(\"producerNet\", NetworkArgs.builder()\n .name(\"producer-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscProducerSubnet = new Subnetwork(\"pscProducerSubnet\", SubnetworkArgs.builder()\n .name(\"producer-psc-net\")\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 .name(\"producer-net\")\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 .name(\"producer-service-health-check\")\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 .name(\"producer-service-backend\")\n .region(\"us-central1\")\n .healthChecks(producerServiceHealthCheck.id())\n .build());\n\n var producerTargetService = new ForwardingRule(\"producerTargetService\", ForwardingRuleArgs.builder()\n .name(\"producer-forwarding-rule\")\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 .name(\"producer-service\")\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 .name(\"psc-endpoint\")\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 name: psc-endpoint\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 name: consumer_net\n properties:\n name: consumer-net\n autoCreateSubnetworks: false\n consumerSubnet:\n type: gcp:compute:Subnetwork\n name: consumer_subnet\n properties:\n name: consumer-net\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${consumerNet.id}\n consumerAddress:\n type: gcp:compute:Address\n name: consumer_address\n properties:\n name: website-ip-1\n region: us-central1\n subnetwork: ${consumerSubnet.id}\n addressType: INTERNAL\n producerNet:\n type: gcp:compute:Network\n name: producer_net\n properties:\n name: producer-net\n autoCreateSubnetworks: false\n producerSubnet:\n type: gcp:compute:Subnetwork\n name: producer_subnet\n properties:\n name: producer-net\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${producerNet.id}\n pscProducerSubnet:\n type: gcp:compute:Subnetwork\n name: psc_producer_subnet\n properties:\n name: producer-psc-net\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 name: producer_service_attachment\n properties:\n name: producer-service\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 name: producer_target_service\n properties:\n name: producer-forwarding-rule\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 name: producer_service_backend\n properties:\n name: producer-service-backend\n region: us-central1\n healthChecks: ${producerServiceHealthCheck.id}\n producerServiceHealthCheck:\n type: gcp:compute:HealthCheck\n name: producer_service_health_check\n properties:\n name: producer-service-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule Regional Steering\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.compute.Address(\"basic\", {\n name: \"website-ip\",\n region: \"us-central1\",\n});\nconst external = new gcp.compute.RegionBackendService(\"external\", {\n name: \"service-backend\",\n region: \"us-central1\",\n loadBalancingScheme: \"EXTERNAL\",\n});\nconst externalForwardingRule = new gcp.compute.ForwardingRule(\"external\", {\n name: \"external-forwarding-rule\",\n region: \"us-central1\",\n ipAddress: basic.address,\n backendService: external.selfLink,\n loadBalancingScheme: \"EXTERNAL\",\n});\nconst steering = new gcp.compute.ForwardingRule(\"steering\", {\n name: \"steering-rule\",\n region: \"us-central1\",\n ipAddress: basic.address,\n backendService: external.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\",\n name=\"website-ip\",\n region=\"us-central1\")\nexternal = gcp.compute.RegionBackendService(\"external\",\n name=\"service-backend\",\n region=\"us-central1\",\n load_balancing_scheme=\"EXTERNAL\")\nexternal_forwarding_rule = gcp.compute.ForwardingRule(\"external\",\n name=\"external-forwarding-rule\",\n region=\"us-central1\",\n ip_address=basic.address,\n backend_service=external.self_link,\n load_balancing_scheme=\"EXTERNAL\")\nsteering = gcp.compute.ForwardingRule(\"steering\",\n name=\"steering-rule\",\n region=\"us-central1\",\n ip_address=basic.address,\n backend_service=external.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 Name = \"website-ip\",\n Region = \"us-central1\",\n });\n\n var external = new Gcp.Compute.RegionBackendService(\"external\", new()\n {\n Name = \"service-backend\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"EXTERNAL\",\n });\n\n var externalForwardingRule = new Gcp.Compute.ForwardingRule(\"external\", new()\n {\n Name = \"external-forwarding-rule\",\n Region = \"us-central1\",\n IpAddress = basic.IPAddress,\n BackendService = external.SelfLink,\n LoadBalancingScheme = \"EXTERNAL\",\n });\n\n var steering = new Gcp.Compute.ForwardingRule(\"steering\", new()\n {\n Name = \"steering-rule\",\n Region = \"us-central1\",\n IpAddress = basic.IPAddress,\n BackendService = external.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 =\n {\n externalForwardingRule,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"website-ip\"),\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\texternal, err := compute.NewRegionBackendService(ctx, \"external\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"service-backend\"),\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, \"external\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"external-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: basic.Address,\n\t\t\tBackendService: external.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\tName: pulumi.String(\"steering-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: basic.Address,\n\t\t\tBackendService: external.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 .name(\"website-ip\")\n .region(\"us-central1\")\n .build());\n\n var external = new RegionBackendService(\"external\", RegionBackendServiceArgs.builder()\n .name(\"service-backend\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"EXTERNAL\")\n .build());\n\n var externalForwardingRule = new ForwardingRule(\"externalForwardingRule\", ForwardingRuleArgs.builder()\n .name(\"external-forwarding-rule\")\n .region(\"us-central1\")\n .ipAddress(basic.address())\n .backendService(external.selfLink())\n .loadBalancingScheme(\"EXTERNAL\")\n .build());\n\n var steering = new ForwardingRule(\"steering\", ForwardingRuleArgs.builder()\n .name(\"steering-rule\")\n .region(\"us-central1\")\n .ipAddress(basic.address())\n .backendService(external.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 name: steering-rule\n region: us-central1\n ipAddress: ${basic.address}\n backendService: ${external.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 name: website-ip\n region: us-central1\n external:\n type: gcp:compute:RegionBackendService\n properties:\n name: service-backend\n region: us-central1\n loadBalancingScheme: EXTERNAL\n externalForwardingRule:\n type: gcp:compute:ForwardingRule\n name: external\n properties:\n name: external-forwarding-rule\n region: us-central1\n ipAddress: ${basic.address}\n backendService: ${external.selfLink}\n loadBalancingScheme: EXTERNAL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule Internallb Ipv6\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst hc = new gcp.compute.HealthCheck(\"hc\", {\n name: \"check-ilb-ipv6-backend\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"ilb-ipv6-backend\",\n region: \"us-central1\",\n healthChecks: hc.id,\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"net-ipv6\",\n autoCreateSubnetworks: false,\n enableUlaInternalIpv6: true,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"subnet-internal-ipv6\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n stackType: \"IPV4_IPV6\",\n ipv6AccessType: \"INTERNAL\",\n network: defaultNetwork.id,\n});\n// Forwarding rule for Internal Load Balancing\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"ilb-ipv6-forwarding-rule\",\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});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhc = gcp.compute.HealthCheck(\"hc\",\n name=\"check-ilb-ipv6-backend\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"ilb-ipv6-backend\",\n region=\"us-central1\",\n health_checks=hc.id)\ndefault_network = gcp.compute.Network(\"default\",\n name=\"net-ipv6\",\n auto_create_subnetworks=False,\n enable_ula_internal_ipv6=True)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"subnet-internal-ipv6\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n stack_type=\"IPV4_IPV6\",\n ipv6_access_type=\"INTERNAL\",\n network=default_network.id)\n# Forwarding rule for Internal Load Balancing\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"ilb-ipv6-forwarding-rule\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=backend.id,\n all_ports=True,\n network=default_network.name,\n subnetwork=default_subnetwork.name,\n ip_version=\"IPV6\")\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 hc = new Gcp.Compute.HealthCheck(\"hc\", new()\n {\n Name = \"check-ilb-ipv6-backend\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"ilb-ipv6-backend\",\n Region = \"us-central1\",\n HealthChecks = hc.Id,\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"net-ipv6\",\n AutoCreateSubnetworks = false,\n EnableUlaInternalIpv6 = true,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"subnet-internal-ipv6\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n StackType = \"IPV4_IPV6\",\n Ipv6AccessType = \"INTERNAL\",\n Network = defaultNetwork.Id,\n });\n\n // Forwarding rule for Internal Load Balancing\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"ilb-ipv6-forwarding-rule\",\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thc, err := compute.NewHealthCheck(ctx, \"hc\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"check-ilb-ipv6-backend\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"ilb-ipv6-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: hc.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"net-ipv6\"),\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\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-internal-ipv6\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tStackType: pulumi.String(\"IPV4_IPV6\"),\n\t\t\tIpv6AccessType: pulumi.String(\"INTERNAL\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Forwarding rule for Internal Load Balancing\n\t\t_, err = compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"ilb-ipv6-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: backend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t\tSubnetwork: defaultSubnetwork.Name,\n\t\t\tIpVersion: pulumi.String(\"IPV6\"),\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.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 .name(\"check-ilb-ipv6-backend\")\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 .name(\"ilb-ipv6-backend\")\n .region(\"us-central1\")\n .healthChecks(hc.id())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"net-ipv6\")\n .autoCreateSubnetworks(false)\n .enableUlaInternalIpv6(true)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"subnet-internal-ipv6\")\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 // Forwarding rule for Internal Load Balancing\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder()\n .name(\"ilb-ipv6-forwarding-rule\")\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 default:\n type: gcp:compute:ForwardingRule\n properties:\n name: ilb-ipv6-forwarding-rule\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 name: ilb-ipv6-backend\n region: us-central1\n healthChecks: ${hc.id}\n hc:\n type: gcp:compute:HealthCheck\n properties:\n name: check-ilb-ipv6-backend\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: net-ipv6\n autoCreateSubnetworks: false\n enableUlaInternalIpv6: true\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: subnet-internal-ipv6\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n stackType: IPV4_IPV6\n ipv6AccessType: INTERNAL\n network: ${defaultNetwork.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nForwardingRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/forwardingRules/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ForwardingRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/forwardingRule:ForwardingRule default projects/{{project}}/regions/{{region}}/forwardingRules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/forwardingRule:ForwardingRule default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/forwardingRule:ForwardingRule default {{region}}/{{name}}\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## Example Usage\n\n### Forwarding Rule Externallb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst hc = new gcp.compute.RegionHealthCheck(\"hc\", {\n name: \"check-website-backend\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n region: \"us-central1\",\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"website-backend\",\n region: \"us-central1\",\n loadBalancingScheme: \"EXTERNAL\",\n healthChecks: hc.id,\n});\n// Forwarding rule for External Network Load Balancing using Backend Services\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"website-forwarding-rule\",\n region: \"us-central1\",\n portRange: \"80\",\n backendService: backend.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhc = gcp.compute.RegionHealthCheck(\"hc\",\n name=\"check-website-backend\",\n check_interval_sec=1,\n timeout_sec=1,\n region=\"us-central1\",\n tcp_health_check={\n \"port\": 80,\n })\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"website-backend\",\n region=\"us-central1\",\n load_balancing_scheme=\"EXTERNAL\",\n health_checks=hc.id)\n# Forwarding rule for External Network Load Balancing using Backend Services\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"website-forwarding-rule\",\n region=\"us-central1\",\n port_range=\"80\",\n backend_service=backend.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 hc = new Gcp.Compute.RegionHealthCheck(\"hc\", new()\n {\n Name = \"check-website-backend\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n Region = \"us-central1\",\n TcpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"website-backend\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"EXTERNAL\",\n HealthChecks = hc.Id,\n });\n\n // Forwarding rule for External Network Load Balancing using Backend Services\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"website-forwarding-rule\",\n Region = \"us-central1\",\n PortRange = \"80\",\n BackendService = backend.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thc, err := compute.NewRegionHealthCheck(ctx, \"hc\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"check-website-backend\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTcpHealthCheck: \u0026compute.RegionHealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"website-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL\"),\n\t\t\tHealthChecks: hc.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Forwarding rule for External Network Load Balancing using Backend Services\n\t\t_, err = compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"website-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t\tBackendService: backend.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.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 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 .name(\"check-website-backend\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .region(\"us-central1\")\n .tcpHealthCheck(RegionHealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder()\n .name(\"website-backend\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"EXTERNAL\")\n .healthChecks(hc.id())\n .build());\n\n // Forwarding rule for External Network Load Balancing using Backend Services\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder()\n .name(\"website-forwarding-rule\")\n .region(\"us-central1\")\n .portRange(80)\n .backendService(backend.id())\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 name: website-forwarding-rule\n region: us-central1\n portRange: 80\n backendService: ${backend.id}\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n name: website-backend\n region: us-central1\n loadBalancingScheme: EXTERNAL\n healthChecks: ${hc.id}\n hc:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: check-website-backend\n checkIntervalSec: 1\n timeoutSec: 1\n region: us-central1\n tcpHealthCheck:\n port: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule Global Internallb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst hc = new gcp.compute.HealthCheck(\"hc\", {\n name: \"check-website-backend\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"website-backend\",\n region: \"us-central1\",\n healthChecks: hc.id,\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"website-net\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"website-net\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n});\n// Forwarding rule for Internal Load Balancing\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"website-forwarding-rule\",\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});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhc = gcp.compute.HealthCheck(\"hc\",\n name=\"check-website-backend\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"website-backend\",\n region=\"us-central1\",\n health_checks=hc.id)\ndefault_network = gcp.compute.Network(\"default\",\n name=\"website-net\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"website-net\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=default_network.id)\n# Forwarding rule for Internal Load Balancing\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"website-forwarding-rule\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=backend.id,\n all_ports=True,\n allow_global_access=True,\n network=default_network.name,\n subnetwork=default_subnetwork.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 hc = new Gcp.Compute.HealthCheck(\"hc\", new()\n {\n Name = \"check-website-backend\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"website-backend\",\n Region = \"us-central1\",\n HealthChecks = hc.Id,\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"website-net\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"website-net\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n });\n\n // Forwarding rule for Internal Load Balancing\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"website-forwarding-rule\",\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thc, err := compute.NewHealthCheck(ctx, \"hc\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"check-website-backend\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"website-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: hc.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"website-net\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"website-net\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Forwarding rule for Internal Load Balancing\n\t\t_, err = compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"website-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: backend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tAllowGlobalAccess: pulumi.Bool(true),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t\tSubnetwork: defaultSubnetwork.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.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 .name(\"check-website-backend\")\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 .name(\"website-backend\")\n .region(\"us-central1\")\n .healthChecks(hc.id())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"website-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"website-net\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .build());\n\n // Forwarding rule for Internal Load Balancing\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder()\n .name(\"website-forwarding-rule\")\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 default:\n type: gcp:compute:ForwardingRule\n properties:\n name: website-forwarding-rule\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 name: website-backend\n region: us-central1\n healthChecks: ${hc.id}\n hc:\n type: gcp:compute:HealthCheck\n properties:\n name: check-website-backend\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: website-net\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: website-net\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${defaultNetwork.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultTargetPool = new gcp.compute.TargetPool(\"default\", {name: \"website-target-pool\"});\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"website-forwarding-rule\",\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(\"default\", name=\"website-target-pool\")\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"website-forwarding-rule\",\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(\"default\", new()\n {\n Name = \"website-target-pool\",\n });\n\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"website-forwarding-rule\",\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/v7/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, \"default\", \u0026compute.TargetPoolArgs{\n\t\t\tName: pulumi.String(\"website-target-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"website-forwarding-rule\"),\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.TargetPoolArgs;\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\", TargetPoolArgs.builder()\n .name(\"website-target-pool\")\n .build());\n\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder()\n .name(\"website-forwarding-rule\")\n .target(defaultTargetPool.id())\n .portRange(\"80\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:ForwardingRule\n properties:\n name: website-forwarding-rule\n target: ${defaultTargetPool.id}\n portRange: '80'\n defaultTargetPool:\n type: gcp:compute:TargetPool\n name: default\n properties:\n name: website-target-pool\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule L3 Default\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.RegionHealthCheck(\"health_check\", {\n name: \"health-check\",\n region: \"us-central1\",\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst service = new gcp.compute.RegionBackendService(\"service\", {\n region: \"us-central1\",\n name: \"service\",\n healthChecks: healthCheck.id,\n protocol: \"UNSPECIFIED\",\n loadBalancingScheme: \"EXTERNAL\",\n});\nconst fwdRule = new gcp.compute.ForwardingRule(\"fwd_rule\", {\n name: \"l3-forwarding-rule\",\n backendService: service.id,\n ipProtocol: \"L3_DEFAULT\",\n allPorts: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.RegionHealthCheck(\"health_check\",\n name=\"health-check\",\n region=\"us-central1\",\n tcp_health_check={\n \"port\": 80,\n })\nservice = gcp.compute.RegionBackendService(\"service\",\n region=\"us-central1\",\n name=\"service\",\n health_checks=health_check.id,\n protocol=\"UNSPECIFIED\",\n load_balancing_scheme=\"EXTERNAL\")\nfwd_rule = gcp.compute.ForwardingRule(\"fwd_rule\",\n name=\"l3-forwarding-rule\",\n backend_service=service.id,\n ip_protocol=\"L3_DEFAULT\",\n all_ports=True)\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 healthCheck = new Gcp.Compute.RegionHealthCheck(\"health_check\", new()\n {\n Name = \"health-check\",\n Region = \"us-central1\",\n TcpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var service = new Gcp.Compute.RegionBackendService(\"service\", new()\n {\n Region = \"us-central1\",\n Name = \"service\",\n HealthChecks = healthCheck.Id,\n Protocol = \"UNSPECIFIED\",\n LoadBalancingScheme = \"EXTERNAL\",\n });\n\n var fwdRule = new Gcp.Compute.ForwardingRule(\"fwd_rule\", new()\n {\n Name = \"l3-forwarding-rule\",\n BackendService = service.Id,\n IpProtocol = \"L3_DEFAULT\",\n AllPorts = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thealthCheck, err := compute.NewRegionHealthCheck(ctx, \"health_check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTcpHealthCheck: \u0026compute.RegionHealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tservice, err := compute.NewRegionBackendService(ctx, \"service\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"service\"),\n\t\t\tHealthChecks: healthCheck.ID(),\n\t\t\tProtocol: pulumi.String(\"UNSPECIFIED\"),\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, \"fwd_rule\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"l3-forwarding-rule\"),\n\t\t\tBackendService: service.ID(),\n\t\t\tIpProtocol: pulumi.String(\"L3_DEFAULT\"),\n\t\t\tAllPorts: pulumi.Bool(true),\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.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 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 .name(\"health-check\")\n .region(\"us-central1\")\n .tcpHealthCheck(RegionHealthCheckTcpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var service = new RegionBackendService(\"service\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"service\")\n .healthChecks(healthCheck.id())\n .protocol(\"UNSPECIFIED\")\n .loadBalancingScheme(\"EXTERNAL\")\n .build());\n\n var fwdRule = new ForwardingRule(\"fwdRule\", ForwardingRuleArgs.builder()\n .name(\"l3-forwarding-rule\")\n .backendService(service.id())\n .ipProtocol(\"L3_DEFAULT\")\n .allPorts(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n fwdRule:\n type: gcp:compute:ForwardingRule\n name: fwd_rule\n properties:\n name: l3-forwarding-rule\n backendService: ${service.id}\n ipProtocol: L3_DEFAULT\n allPorts: true\n service:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: service\n healthChecks: ${healthCheck.id}\n protocol: UNSPECIFIED\n loadBalancingScheme: EXTERNAL\n healthCheck:\n type: gcp:compute:RegionHealthCheck\n name: health_check\n properties:\n name: health-check\n region: us-central1\n tcpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule Internallb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst hc = new gcp.compute.HealthCheck(\"hc\", {\n name: \"check-website-backend\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"website-backend\",\n region: \"us-central1\",\n healthChecks: hc.id,\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"website-net\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"website-net\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n});\n// Forwarding rule for Internal Load Balancing\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"website-forwarding-rule\",\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});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhc = gcp.compute.HealthCheck(\"hc\",\n name=\"check-website-backend\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"website-backend\",\n region=\"us-central1\",\n health_checks=hc.id)\ndefault_network = gcp.compute.Network(\"default\",\n name=\"website-net\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"website-net\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=default_network.id)\n# Forwarding rule for Internal Load Balancing\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"website-forwarding-rule\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=backend.id,\n all_ports=True,\n network=default_network.name,\n subnetwork=default_subnetwork.name,\n ip_version=\"IPV4\")\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 hc = new Gcp.Compute.HealthCheck(\"hc\", new()\n {\n Name = \"check-website-backend\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"website-backend\",\n Region = \"us-central1\",\n HealthChecks = hc.Id,\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"website-net\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"website-net\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n });\n\n // Forwarding rule for Internal Load Balancing\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"website-forwarding-rule\",\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thc, err := compute.NewHealthCheck(ctx, \"hc\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"check-website-backend\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"website-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: hc.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"website-net\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"website-net\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Forwarding rule for Internal Load Balancing\n\t\t_, err = compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"website-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: backend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t\tSubnetwork: defaultSubnetwork.Name,\n\t\t\tIpVersion: pulumi.String(\"IPV4\"),\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.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 .name(\"check-website-backend\")\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 .name(\"website-backend\")\n .region(\"us-central1\")\n .healthChecks(hc.id())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"website-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"website-net\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .build());\n\n // Forwarding rule for Internal Load Balancing\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder()\n .name(\"website-forwarding-rule\")\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 default:\n type: gcp:compute:ForwardingRule\n properties:\n name: website-forwarding-rule\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 name: website-backend\n region: us-central1\n healthChecks: ${hc.id}\n hc:\n type: gcp:compute:HealthCheck\n properties:\n name: check-website-backend\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: website-net\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: website-net\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${defaultNetwork.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule Http Lb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst debianImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"website-net\",\n autoCreateSubnetworks: false,\n routingMode: \"REGIONAL\",\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"website-net-default\",\n ipCidrRange: \"10.1.2.0/24\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n});\nconst instanceTemplate = new gcp.compute.InstanceTemplate(\"instance_template\", {\n name: \"template-website-backend\",\n machineType: \"e2-medium\",\n networkInterfaces: [{\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n }],\n disks: [{\n sourceImage: debianImage.then(debianImage =\u003e debianImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n tags: [\n \"allow-ssh\",\n \"load-balanced-backend\",\n ],\n});\nconst rigm = new gcp.compute.RegionInstanceGroupManager(\"rigm\", {\n region: \"us-central1\",\n name: \"website-rigm\",\n versions: [{\n instanceTemplate: instanceTemplate.id,\n name: \"primary\",\n }],\n baseInstanceName: \"internal-glb\",\n targetSize: 1,\n});\nconst fw1 = new gcp.compute.Firewall(\"fw1\", {\n name: \"website-fw-1\",\n network: defaultNetwork.id,\n sourceRanges: [\"10.1.2.0/24\"],\n allows: [\n {\n protocol: \"tcp\",\n },\n {\n protocol: \"udp\",\n },\n {\n protocol: \"icmp\",\n },\n ],\n direction: \"INGRESS\",\n});\nconst fw2 = new gcp.compute.Firewall(\"fw2\", {\n name: \"website-fw-2\",\n network: defaultNetwork.id,\n sourceRanges: [\"0.0.0.0/0\"],\n allows: [{\n protocol: \"tcp\",\n ports: [\"22\"],\n }],\n targetTags: [\"allow-ssh\"],\n direction: \"INGRESS\",\n}, {\n dependsOn: [fw1],\n});\nconst fw3 = new gcp.compute.Firewall(\"fw3\", {\n name: \"website-fw-3\",\n network: defaultNetwork.id,\n sourceRanges: [\n \"130.211.0.0/22\",\n \"35.191.0.0/16\",\n ],\n allows: [{\n protocol: \"tcp\",\n }],\n targetTags: [\"load-balanced-backend\"],\n direction: \"INGRESS\",\n}, {\n dependsOn: [fw2],\n});\nconst fw4 = new gcp.compute.Firewall(\"fw4\", {\n name: \"website-fw-4\",\n network: defaultNetwork.id,\n sourceRanges: [\"10.129.0.0/26\"],\n targetTags: [\"load-balanced-backend\"],\n allows: [\n {\n protocol: \"tcp\",\n ports: [\"80\"],\n },\n {\n protocol: \"tcp\",\n ports: [\"443\"],\n },\n {\n protocol: \"tcp\",\n ports: [\"8000\"],\n },\n ],\n direction: \"INGRESS\",\n}, {\n dependsOn: [fw3],\n});\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"website-hc\",\n httpHealthCheck: {\n portSpecification: \"USE_SERVING_PORT\",\n },\n}, {\n dependsOn: [fw4],\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n backends: [{\n group: rigm.instanceGroup,\n balancingMode: \"UTILIZATION\",\n capacityScaler: 1,\n }],\n region: \"us-central1\",\n name: \"website-backend\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultRegionHealthCheck.id,\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n region: \"us-central1\",\n name: \"website-map\",\n defaultService: defaultRegionBackendService.id,\n});\nconst defaultRegionTargetHttpProxy = new gcp.compute.RegionTargetHttpProxy(\"default\", {\n region: \"us-central1\",\n name: \"website-proxy\",\n urlMap: defaultRegionUrlMap.id,\n});\nconst proxy = new gcp.compute.Subnetwork(\"proxy\", {\n name: \"website-net-proxy\",\n ipCidrRange: \"10.129.0.0/26\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n purpose: \"REGIONAL_MANAGED_PROXY\",\n role: \"ACTIVE\",\n});\n// Forwarding rule for Internal Load Balancing\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"website-forwarding-rule\",\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}, {\n dependsOn: [proxy],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndebian_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault_network = gcp.compute.Network(\"default\",\n name=\"website-net\",\n auto_create_subnetworks=False,\n routing_mode=\"REGIONAL\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"website-net-default\",\n ip_cidr_range=\"10.1.2.0/24\",\n region=\"us-central1\",\n network=default_network.id)\ninstance_template = gcp.compute.InstanceTemplate(\"instance_template\",\n name=\"template-website-backend\",\n machine_type=\"e2-medium\",\n network_interfaces=[{\n \"network\": default_network.id,\n \"subnetwork\": default_subnetwork.id,\n }],\n disks=[{\n \"source_image\": debian_image.self_link,\n \"auto_delete\": True,\n \"boot\": True,\n }],\n tags=[\n \"allow-ssh\",\n \"load-balanced-backend\",\n ])\nrigm = gcp.compute.RegionInstanceGroupManager(\"rigm\",\n region=\"us-central1\",\n name=\"website-rigm\",\n versions=[{\n \"instance_template\": instance_template.id,\n \"name\": \"primary\",\n }],\n base_instance_name=\"internal-glb\",\n target_size=1)\nfw1 = gcp.compute.Firewall(\"fw1\",\n name=\"website-fw-1\",\n network=default_network.id,\n source_ranges=[\"10.1.2.0/24\"],\n allows=[\n {\n \"protocol\": \"tcp\",\n },\n {\n \"protocol\": \"udp\",\n },\n {\n \"protocol\": \"icmp\",\n },\n ],\n direction=\"INGRESS\")\nfw2 = gcp.compute.Firewall(\"fw2\",\n name=\"website-fw-2\",\n network=default_network.id,\n source_ranges=[\"0.0.0.0/0\"],\n allows=[{\n \"protocol\": \"tcp\",\n \"ports\": [\"22\"],\n }],\n target_tags=[\"allow-ssh\"],\n direction=\"INGRESS\",\n opts = pulumi.ResourceOptions(depends_on=[fw1]))\nfw3 = gcp.compute.Firewall(\"fw3\",\n name=\"website-fw-3\",\n network=default_network.id,\n source_ranges=[\n \"130.211.0.0/22\",\n \"35.191.0.0/16\",\n ],\n allows=[{\n \"protocol\": \"tcp\",\n }],\n target_tags=[\"load-balanced-backend\"],\n direction=\"INGRESS\",\n opts = pulumi.ResourceOptions(depends_on=[fw2]))\nfw4 = gcp.compute.Firewall(\"fw4\",\n name=\"website-fw-4\",\n network=default_network.id,\n source_ranges=[\"10.129.0.0/26\"],\n target_tags=[\"load-balanced-backend\"],\n allows=[\n {\n \"protocol\": \"tcp\",\n \"ports\": [\"80\"],\n },\n {\n \"protocol\": \"tcp\",\n \"ports\": [\"443\"],\n },\n {\n \"protocol\": \"tcp\",\n \"ports\": [\"8000\"],\n },\n ],\n direction=\"INGRESS\",\n opts = pulumi.ResourceOptions(depends_on=[fw3]))\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"website-hc\",\n http_health_check={\n \"port_specification\": \"USE_SERVING_PORT\",\n },\n opts = pulumi.ResourceOptions(depends_on=[fw4]))\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n backends=[{\n \"group\": rigm.instance_group,\n \"balancing_mode\": \"UTILIZATION\",\n \"capacity_scaler\": 1,\n }],\n region=\"us-central1\",\n name=\"website-backend\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_region_health_check.id)\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n region=\"us-central1\",\n name=\"website-map\",\n default_service=default_region_backend_service.id)\ndefault_region_target_http_proxy = gcp.compute.RegionTargetHttpProxy(\"default\",\n region=\"us-central1\",\n name=\"website-proxy\",\n url_map=default_region_url_map.id)\nproxy = gcp.compute.Subnetwork(\"proxy\",\n name=\"website-net-proxy\",\n ip_cidr_range=\"10.129.0.0/26\",\n region=\"us-central1\",\n network=default_network.id,\n purpose=\"REGIONAL_MANAGED_PROXY\",\n role=\"ACTIVE\")\n# Forwarding rule for Internal Load Balancing\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"website-forwarding-rule\",\n region=\"us-central1\",\n ip_protocol=\"TCP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n port_range=\"80\",\n target=default_region_target_http_proxy.id,\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n network_tier=\"PREMIUM\",\n opts = pulumi.ResourceOptions(depends_on=[proxy]))\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 debianImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"website-net\",\n AutoCreateSubnetworks = false,\n RoutingMode = \"REGIONAL\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"website-net-default\",\n IpCidrRange = \"10.1.2.0/24\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n });\n\n var instanceTemplate = new Gcp.Compute.InstanceTemplate(\"instance_template\", new()\n {\n Name = \"template-website-backend\",\n MachineType = \"e2-medium\",\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = debianImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n Tags = new[]\n {\n \"allow-ssh\",\n \"load-balanced-backend\",\n },\n });\n\n var rigm = new Gcp.Compute.RegionInstanceGroupManager(\"rigm\", new()\n {\n Region = \"us-central1\",\n Name = \"website-rigm\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = instanceTemplate.Id,\n Name = \"primary\",\n },\n },\n BaseInstanceName = \"internal-glb\",\n TargetSize = 1,\n });\n\n var fw1 = new Gcp.Compute.Firewall(\"fw1\", new()\n {\n Name = \"website-fw-1\",\n Network = defaultNetwork.Id,\n SourceRanges = new[]\n {\n \"10.1.2.0/24\",\n },\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n },\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"udp\",\n },\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"icmp\",\n },\n },\n Direction = \"INGRESS\",\n });\n\n var fw2 = new Gcp.Compute.Firewall(\"fw2\", new()\n {\n Name = \"website-fw-2\",\n Network = defaultNetwork.Id,\n SourceRanges = new[]\n {\n \"0.0.0.0/0\",\n },\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"22\",\n },\n },\n },\n TargetTags = new[]\n {\n \"allow-ssh\",\n },\n Direction = \"INGRESS\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n fw1,\n },\n });\n\n var fw3 = new Gcp.Compute.Firewall(\"fw3\", new()\n {\n Name = \"website-fw-3\",\n Network = defaultNetwork.Id,\n SourceRanges = new[]\n {\n \"130.211.0.0/22\",\n \"35.191.0.0/16\",\n },\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n },\n },\n TargetTags = new[]\n {\n \"load-balanced-backend\",\n },\n Direction = \"INGRESS\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n fw2,\n },\n });\n\n var fw4 = new Gcp.Compute.Firewall(\"fw4\", new()\n {\n Name = \"website-fw-4\",\n Network = defaultNetwork.Id,\n SourceRanges = new[]\n {\n \"10.129.0.0/26\",\n },\n TargetTags = new[]\n {\n \"load-balanced-backend\",\n },\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"80\",\n },\n },\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"443\",\n },\n },\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"8000\",\n },\n },\n },\n Direction = \"INGRESS\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n fw3,\n },\n });\n\n var defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"website-hc\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n PortSpecification = \"USE_SERVING_PORT\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n fw4,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n Backends = new[]\n {\n new Gcp.Compute.Inputs.RegionBackendServiceBackendArgs\n {\n Group = rigm.InstanceGroup,\n BalancingMode = \"UTILIZATION\",\n CapacityScaler = 1,\n },\n },\n Region = \"us-central1\",\n Name = \"website-backend\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultRegionHealthCheck.Id,\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"website-map\",\n DefaultService = defaultRegionBackendService.Id,\n });\n\n var defaultRegionTargetHttpProxy = new Gcp.Compute.RegionTargetHttpProxy(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"website-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n });\n\n var proxy = new Gcp.Compute.Subnetwork(\"proxy\", new()\n {\n Name = \"website-net-proxy\",\n IpCidrRange = \"10.129.0.0/26\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n Role = \"ACTIVE\",\n });\n\n // Forwarding rule for Internal Load Balancing\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"website-forwarding-rule\",\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 }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxy,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdebianImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"website-net\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t\tRoutingMode: pulumi.String(\"REGIONAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"website-net-default\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.2.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstanceTemplate, err := compute.NewInstanceTemplate(ctx, \"instance_template\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"template-website-backend\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(debianImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"allow-ssh\"),\n\t\t\t\tpulumi.String(\"load-balanced-backend\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trigm, err := compute.NewRegionInstanceGroupManager(ctx, \"rigm\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-rigm\"),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: instanceTemplate.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"internal-glb\"),\n\t\t\tTargetSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfw1, err := compute.NewFirewall(ctx, \"fw1\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"website-fw-1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSourceRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.1.2.0/24\"),\n\t\t\t},\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"udp\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"icmp\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfw2, err := compute.NewFirewall(ctx, \"fw2\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"website-fw-2\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSourceRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t},\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"22\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"allow-ssh\"),\n\t\t\t},\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfw1,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfw3, err := compute.NewFirewall(ctx, \"fw3\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"website-fw-3\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSourceRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"130.211.0.0/22\"),\n\t\t\t\tpulumi.String(\"35.191.0.0/16\"),\n\t\t\t},\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"load-balanced-backend\"),\n\t\t\t},\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfw2,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfw4, err := compute.NewFirewall(ctx, \"fw4\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"website-fw-4\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSourceRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.129.0.0/26\"),\n\t\t\t},\n\t\t\tTargetTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"load-balanced-backend\"),\n\t\t\t},\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"80\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"443\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"8000\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfw3,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-hc\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPortSpecification: pulumi.String(\"USE_SERVING_PORT\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfw4,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tBackends: compute.RegionBackendServiceBackendArray{\n\t\t\t\t\u0026compute.RegionBackendServiceBackendArgs{\n\t\t\t\t\tGroup: rigm.InstanceGroup,\n\t\t\t\t\tBalancingMode: pulumi.String(\"UTILIZATION\"),\n\t\t\t\t\tCapacityScaler: pulumi.Float64(1),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-backend\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultRegionHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-map\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionTargetHttpProxy, err := compute.NewRegionTargetHttpProxy(ctx, \"default\", \u0026compute.RegionTargetHttpProxyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxy, err := compute.NewSubnetwork(ctx, \"proxy\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"website-net-proxy\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.129.0.0/26\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tPurpose: pulumi.String(\"REGIONAL_MANAGED_PROXY\"),\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\t// Forwarding rule for Internal Load Balancing\n\t\t_, err = compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"website-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpProtocol: pulumi.String(\"TCP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t\tTarget: defaultRegionTargetHttpProxy.ID(),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tNetworkTier: pulumi.String(\"PREMIUM\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxy,\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.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 .name(\"website-net\")\n .autoCreateSubnetworks(false)\n .routingMode(\"REGIONAL\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"website-net-default\")\n .ipCidrRange(\"10.1.2.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .build());\n\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"template-website-backend\")\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());\n\n var rigm = new RegionInstanceGroupManager(\"rigm\", RegionInstanceGroupManagerArgs.builder()\n .region(\"us-central1\")\n .name(\"website-rigm\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(instanceTemplate.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"internal-glb\")\n .targetSize(1)\n .build());\n\n var fw1 = new Firewall(\"fw1\", FirewallArgs.builder()\n .name(\"website-fw-1\")\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());\n\n var fw2 = new Firewall(\"fw2\", FirewallArgs.builder()\n .name(\"website-fw-2\")\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 .dependsOn(fw1)\n .build());\n\n var fw3 = new Firewall(\"fw3\", FirewallArgs.builder()\n .name(\"website-fw-3\")\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 .dependsOn(fw2)\n .build());\n\n var fw4 = new Firewall(\"fw4\", FirewallArgs.builder()\n .name(\"website-fw-4\")\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 .dependsOn(fw3)\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"website-hc\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .portSpecification(\"USE_SERVING_PORT\")\n .build())\n .build(), CustomResourceOptions.builder()\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 .name(\"website-backend\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultRegionHealthCheck.id())\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"website-map\")\n .defaultService(defaultRegionBackendService.id())\n .build());\n\n var defaultRegionTargetHttpProxy = new RegionTargetHttpProxy(\"defaultRegionTargetHttpProxy\", RegionTargetHttpProxyArgs.builder()\n .region(\"us-central1\")\n .name(\"website-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .build());\n\n var proxy = new Subnetwork(\"proxy\", SubnetworkArgs.builder()\n .name(\"website-net-proxy\")\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());\n\n // Forwarding rule for Internal Load Balancing\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder()\n .name(\"website-forwarding-rule\")\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 .dependsOn(proxy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Forwarding rule for Internal Load Balancing\n default:\n type: gcp:compute:ForwardingRule\n properties:\n name: website-forwarding-rule\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 dependson:\n - ${proxy}\n defaultRegionTargetHttpProxy:\n type: gcp:compute:RegionTargetHttpProxy\n name: default\n properties:\n region: us-central1\n name: website-proxy\n urlMap: ${defaultRegionUrlMap.id}\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n region: us-central1\n name: website-map\n defaultService: ${defaultRegionBackendService.id}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n loadBalancingScheme: INTERNAL_MANAGED\n backends:\n - group: ${rigm.instanceGroup}\n balancingMode: UTILIZATION\n capacityScaler: 1\n region: us-central1\n name: website-backend\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultRegionHealthCheck.id}\n rigm:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n region: us-central1\n name: website-rigm\n versions:\n - instanceTemplate: ${instanceTemplate.id}\n name: primary\n baseInstanceName: internal-glb\n targetSize: 1\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: instance_template\n properties:\n name: template-website-backend\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 defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n region: us-central1\n name: website-hc\n httpHealthCheck:\n portSpecification: USE_SERVING_PORT\n options:\n dependson:\n - ${fw4}\n fw1:\n type: gcp:compute:Firewall\n properties:\n name: website-fw-1\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 fw2:\n type: gcp:compute:Firewall\n properties:\n name: website-fw-2\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 dependson:\n - ${fw1}\n fw3:\n type: gcp:compute:Firewall\n properties:\n name: website-fw-3\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 dependson:\n - ${fw2}\n fw4:\n type: gcp:compute:Firewall\n properties:\n name: website-fw-4\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 dependson:\n - ${fw3}\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: website-net\n autoCreateSubnetworks: false\n routingMode: REGIONAL\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: website-net-default\n ipCidrRange: 10.1.2.0/24\n region: us-central1\n network: ${defaultNetwork.id}\n proxy:\n type: gcp:compute:Subnetwork\n properties:\n name: website-net-proxy\n ipCidrRange: 10.129.0.0/26\n region: us-central1\n network: ${defaultNetwork.id}\n purpose: REGIONAL_MANAGED_PROXY\n role: ACTIVE\nvariables:\n debianImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule Regional Http Xlb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst debianImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"website-net\",\n autoCreateSubnetworks: false,\n routingMode: \"REGIONAL\",\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"website-net-default\",\n ipCidrRange: \"10.1.2.0/24\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n});\nconst instanceTemplate = new gcp.compute.InstanceTemplate(\"instance_template\", {\n name: \"template-website-backend\",\n machineType: \"e2-medium\",\n networkInterfaces: [{\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n }],\n disks: [{\n sourceImage: debianImage.then(debianImage =\u003e debianImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n tags: [\n \"allow-ssh\",\n \"load-balanced-backend\",\n ],\n});\nconst rigm = new gcp.compute.RegionInstanceGroupManager(\"rigm\", {\n region: \"us-central1\",\n name: \"website-rigm\",\n versions: [{\n instanceTemplate: instanceTemplate.id,\n name: \"primary\",\n }],\n baseInstanceName: \"internal-glb\",\n targetSize: 1,\n});\nconst fw1 = new gcp.compute.Firewall(\"fw1\", {\n name: \"website-fw-1\",\n network: defaultNetwork.id,\n sourceRanges: [\"10.1.2.0/24\"],\n allows: [\n {\n protocol: \"tcp\",\n },\n {\n protocol: \"udp\",\n },\n {\n protocol: \"icmp\",\n },\n ],\n direction: \"INGRESS\",\n});\nconst fw2 = new gcp.compute.Firewall(\"fw2\", {\n name: \"website-fw-2\",\n network: defaultNetwork.id,\n sourceRanges: [\"0.0.0.0/0\"],\n allows: [{\n protocol: \"tcp\",\n ports: [\"22\"],\n }],\n targetTags: [\"allow-ssh\"],\n direction: \"INGRESS\",\n}, {\n dependsOn: [fw1],\n});\nconst fw3 = new gcp.compute.Firewall(\"fw3\", {\n name: \"website-fw-3\",\n network: defaultNetwork.id,\n sourceRanges: [\n \"130.211.0.0/22\",\n \"35.191.0.0/16\",\n ],\n allows: [{\n protocol: \"tcp\",\n }],\n targetTags: [\"load-balanced-backend\"],\n direction: \"INGRESS\",\n}, {\n dependsOn: [fw2],\n});\nconst fw4 = new gcp.compute.Firewall(\"fw4\", {\n name: \"website-fw-4\",\n network: defaultNetwork.id,\n sourceRanges: [\"10.129.0.0/26\"],\n targetTags: [\"load-balanced-backend\"],\n allows: [\n {\n protocol: \"tcp\",\n ports: [\"80\"],\n },\n {\n protocol: \"tcp\",\n ports: [\"443\"],\n },\n {\n protocol: \"tcp\",\n ports: [\"8000\"],\n },\n ],\n direction: \"INGRESS\",\n}, {\n dependsOn: [fw3],\n});\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"website-hc\",\n httpHealthCheck: {\n portSpecification: \"USE_SERVING_PORT\",\n },\n}, {\n dependsOn: [fw4],\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n backends: [{\n group: rigm.instanceGroup,\n balancingMode: \"UTILIZATION\",\n capacityScaler: 1,\n }],\n region: \"us-central1\",\n name: \"website-backend\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultRegionHealthCheck.id,\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n region: \"us-central1\",\n name: \"website-map\",\n defaultService: defaultRegionBackendService.id,\n});\nconst defaultRegionTargetHttpProxy = new gcp.compute.RegionTargetHttpProxy(\"default\", {\n region: \"us-central1\",\n name: \"website-proxy\",\n urlMap: defaultRegionUrlMap.id,\n});\nconst defaultAddress = new gcp.compute.Address(\"default\", {\n name: \"website-ip-1\",\n region: \"us-central1\",\n networkTier: \"STANDARD\",\n});\nconst proxy = new gcp.compute.Subnetwork(\"proxy\", {\n name: \"website-net-proxy\",\n ipCidrRange: \"10.129.0.0/26\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n purpose: \"REGIONAL_MANAGED_PROXY\",\n role: \"ACTIVE\",\n});\n// Forwarding rule for Regional External Load Balancing\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"website-forwarding-rule\",\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.address,\n networkTier: \"STANDARD\",\n}, {\n dependsOn: [proxy],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndebian_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault_network = gcp.compute.Network(\"default\",\n name=\"website-net\",\n auto_create_subnetworks=False,\n routing_mode=\"REGIONAL\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"website-net-default\",\n ip_cidr_range=\"10.1.2.0/24\",\n region=\"us-central1\",\n network=default_network.id)\ninstance_template = gcp.compute.InstanceTemplate(\"instance_template\",\n name=\"template-website-backend\",\n machine_type=\"e2-medium\",\n network_interfaces=[{\n \"network\": default_network.id,\n \"subnetwork\": default_subnetwork.id,\n }],\n disks=[{\n \"source_image\": debian_image.self_link,\n \"auto_delete\": True,\n \"boot\": True,\n }],\n tags=[\n \"allow-ssh\",\n \"load-balanced-backend\",\n ])\nrigm = gcp.compute.RegionInstanceGroupManager(\"rigm\",\n region=\"us-central1\",\n name=\"website-rigm\",\n versions=[{\n \"instance_template\": instance_template.id,\n \"name\": \"primary\",\n }],\n base_instance_name=\"internal-glb\",\n target_size=1)\nfw1 = gcp.compute.Firewall(\"fw1\",\n name=\"website-fw-1\",\n network=default_network.id,\n source_ranges=[\"10.1.2.0/24\"],\n allows=[\n {\n \"protocol\": \"tcp\",\n },\n {\n \"protocol\": \"udp\",\n },\n {\n \"protocol\": \"icmp\",\n },\n ],\n direction=\"INGRESS\")\nfw2 = gcp.compute.Firewall(\"fw2\",\n name=\"website-fw-2\",\n network=default_network.id,\n source_ranges=[\"0.0.0.0/0\"],\n allows=[{\n \"protocol\": \"tcp\",\n \"ports\": [\"22\"],\n }],\n target_tags=[\"allow-ssh\"],\n direction=\"INGRESS\",\n opts = pulumi.ResourceOptions(depends_on=[fw1]))\nfw3 = gcp.compute.Firewall(\"fw3\",\n name=\"website-fw-3\",\n network=default_network.id,\n source_ranges=[\n \"130.211.0.0/22\",\n \"35.191.0.0/16\",\n ],\n allows=[{\n \"protocol\": \"tcp\",\n }],\n target_tags=[\"load-balanced-backend\"],\n direction=\"INGRESS\",\n opts = pulumi.ResourceOptions(depends_on=[fw2]))\nfw4 = gcp.compute.Firewall(\"fw4\",\n name=\"website-fw-4\",\n network=default_network.id,\n source_ranges=[\"10.129.0.0/26\"],\n target_tags=[\"load-balanced-backend\"],\n allows=[\n {\n \"protocol\": \"tcp\",\n \"ports\": [\"80\"],\n },\n {\n \"protocol\": \"tcp\",\n \"ports\": [\"443\"],\n },\n {\n \"protocol\": \"tcp\",\n \"ports\": [\"8000\"],\n },\n ],\n direction=\"INGRESS\",\n opts = pulumi.ResourceOptions(depends_on=[fw3]))\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"website-hc\",\n http_health_check={\n \"port_specification\": \"USE_SERVING_PORT\",\n },\n opts = pulumi.ResourceOptions(depends_on=[fw4]))\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n backends=[{\n \"group\": rigm.instance_group,\n \"balancing_mode\": \"UTILIZATION\",\n \"capacity_scaler\": 1,\n }],\n region=\"us-central1\",\n name=\"website-backend\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_region_health_check.id)\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n region=\"us-central1\",\n name=\"website-map\",\n default_service=default_region_backend_service.id)\ndefault_region_target_http_proxy = gcp.compute.RegionTargetHttpProxy(\"default\",\n region=\"us-central1\",\n name=\"website-proxy\",\n url_map=default_region_url_map.id)\ndefault_address = gcp.compute.Address(\"default\",\n name=\"website-ip-1\",\n region=\"us-central1\",\n network_tier=\"STANDARD\")\nproxy = gcp.compute.Subnetwork(\"proxy\",\n name=\"website-net-proxy\",\n ip_cidr_range=\"10.129.0.0/26\",\n region=\"us-central1\",\n network=default_network.id,\n purpose=\"REGIONAL_MANAGED_PROXY\",\n role=\"ACTIVE\")\n# Forwarding rule for Regional External Load Balancing\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"website-forwarding-rule\",\n region=\"us-central1\",\n ip_protocol=\"TCP\",\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n port_range=\"80\",\n target=default_region_target_http_proxy.id,\n network=default_network.id,\n ip_address=default_address.address,\n network_tier=\"STANDARD\",\n opts = pulumi.ResourceOptions(depends_on=[proxy]))\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 debianImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"website-net\",\n AutoCreateSubnetworks = false,\n RoutingMode = \"REGIONAL\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"website-net-default\",\n IpCidrRange = \"10.1.2.0/24\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n });\n\n var instanceTemplate = new Gcp.Compute.InstanceTemplate(\"instance_template\", new()\n {\n Name = \"template-website-backend\",\n MachineType = \"e2-medium\",\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = debianImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n Tags = new[]\n {\n \"allow-ssh\",\n \"load-balanced-backend\",\n },\n });\n\n var rigm = new Gcp.Compute.RegionInstanceGroupManager(\"rigm\", new()\n {\n Region = \"us-central1\",\n Name = \"website-rigm\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = instanceTemplate.Id,\n Name = \"primary\",\n },\n },\n BaseInstanceName = \"internal-glb\",\n TargetSize = 1,\n });\n\n var fw1 = new Gcp.Compute.Firewall(\"fw1\", new()\n {\n Name = \"website-fw-1\",\n Network = defaultNetwork.Id,\n SourceRanges = new[]\n {\n \"10.1.2.0/24\",\n },\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n },\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"udp\",\n },\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"icmp\",\n },\n },\n Direction = \"INGRESS\",\n });\n\n var fw2 = new Gcp.Compute.Firewall(\"fw2\", new()\n {\n Name = \"website-fw-2\",\n Network = defaultNetwork.Id,\n SourceRanges = new[]\n {\n \"0.0.0.0/0\",\n },\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"22\",\n },\n },\n },\n TargetTags = new[]\n {\n \"allow-ssh\",\n },\n Direction = \"INGRESS\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n fw1,\n },\n });\n\n var fw3 = new Gcp.Compute.Firewall(\"fw3\", new()\n {\n Name = \"website-fw-3\",\n Network = defaultNetwork.Id,\n SourceRanges = new[]\n {\n \"130.211.0.0/22\",\n \"35.191.0.0/16\",\n },\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n },\n },\n TargetTags = new[]\n {\n \"load-balanced-backend\",\n },\n Direction = \"INGRESS\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n fw2,\n },\n });\n\n var fw4 = new Gcp.Compute.Firewall(\"fw4\", new()\n {\n Name = \"website-fw-4\",\n Network = defaultNetwork.Id,\n SourceRanges = new[]\n {\n \"10.129.0.0/26\",\n },\n TargetTags = new[]\n {\n \"load-balanced-backend\",\n },\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"80\",\n },\n },\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"443\",\n },\n },\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"8000\",\n },\n },\n },\n Direction = \"INGRESS\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n fw3,\n },\n });\n\n var defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"website-hc\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n PortSpecification = \"USE_SERVING_PORT\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n fw4,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n Backends = new[]\n {\n new Gcp.Compute.Inputs.RegionBackendServiceBackendArgs\n {\n Group = rigm.InstanceGroup,\n BalancingMode = \"UTILIZATION\",\n CapacityScaler = 1,\n },\n },\n Region = \"us-central1\",\n Name = \"website-backend\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultRegionHealthCheck.Id,\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"website-map\",\n DefaultService = defaultRegionBackendService.Id,\n });\n\n var defaultRegionTargetHttpProxy = new Gcp.Compute.RegionTargetHttpProxy(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"website-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n });\n\n var defaultAddress = new Gcp.Compute.Address(\"default\", new()\n {\n Name = \"website-ip-1\",\n Region = \"us-central1\",\n NetworkTier = \"STANDARD\",\n });\n\n var proxy = new Gcp.Compute.Subnetwork(\"proxy\", new()\n {\n Name = \"website-net-proxy\",\n IpCidrRange = \"10.129.0.0/26\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n Role = \"ACTIVE\",\n });\n\n // Forwarding rule for Regional External Load Balancing\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"website-forwarding-rule\",\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.IPAddress,\n NetworkTier = \"STANDARD\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxy,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdebianImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"website-net\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t\tRoutingMode: pulumi.String(\"REGIONAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"website-net-default\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.2.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstanceTemplate, err := compute.NewInstanceTemplate(ctx, \"instance_template\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"template-website-backend\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(debianImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"allow-ssh\"),\n\t\t\t\tpulumi.String(\"load-balanced-backend\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trigm, err := compute.NewRegionInstanceGroupManager(ctx, \"rigm\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-rigm\"),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: instanceTemplate.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"internal-glb\"),\n\t\t\tTargetSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfw1, err := compute.NewFirewall(ctx, \"fw1\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"website-fw-1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSourceRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.1.2.0/24\"),\n\t\t\t},\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"udp\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"icmp\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfw2, err := compute.NewFirewall(ctx, \"fw2\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"website-fw-2\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSourceRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t},\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"22\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"allow-ssh\"),\n\t\t\t},\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfw1,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfw3, err := compute.NewFirewall(ctx, \"fw3\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"website-fw-3\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSourceRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"130.211.0.0/22\"),\n\t\t\t\tpulumi.String(\"35.191.0.0/16\"),\n\t\t\t},\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"load-balanced-backend\"),\n\t\t\t},\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfw2,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfw4, err := compute.NewFirewall(ctx, \"fw4\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"website-fw-4\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSourceRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.129.0.0/26\"),\n\t\t\t},\n\t\t\tTargetTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"load-balanced-backend\"),\n\t\t\t},\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"80\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"443\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"8000\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfw3,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-hc\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPortSpecification: pulumi.String(\"USE_SERVING_PORT\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfw4,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tBackends: compute.RegionBackendServiceBackendArray{\n\t\t\t\t\u0026compute.RegionBackendServiceBackendArgs{\n\t\t\t\t\tGroup: rigm.InstanceGroup,\n\t\t\t\t\tBalancingMode: pulumi.String(\"UTILIZATION\"),\n\t\t\t\t\tCapacityScaler: pulumi.Float64(1),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-backend\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultRegionHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-map\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionTargetHttpProxy, err := compute.NewRegionTargetHttpProxy(ctx, \"default\", \u0026compute.RegionTargetHttpProxyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"website-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAddress, err := compute.NewAddress(ctx, \"default\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"website-ip-1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetworkTier: pulumi.String(\"STANDARD\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxy, err := compute.NewSubnetwork(ctx, \"proxy\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"website-net-proxy\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.129.0.0/26\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tPurpose: pulumi.String(\"REGIONAL_MANAGED_PROXY\"),\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\t// Forwarding rule for Regional External Load Balancing\n\t\t_, err = compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"website-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpProtocol: pulumi.String(\"TCP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t\tTarget: defaultRegionTargetHttpProxy.ID(),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tIpAddress: defaultAddress.Address,\n\t\t\tNetworkTier: pulumi.String(\"STANDARD\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxy,\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.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 .name(\"website-net\")\n .autoCreateSubnetworks(false)\n .routingMode(\"REGIONAL\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"website-net-default\")\n .ipCidrRange(\"10.1.2.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .build());\n\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"template-website-backend\")\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());\n\n var rigm = new RegionInstanceGroupManager(\"rigm\", RegionInstanceGroupManagerArgs.builder()\n .region(\"us-central1\")\n .name(\"website-rigm\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(instanceTemplate.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"internal-glb\")\n .targetSize(1)\n .build());\n\n var fw1 = new Firewall(\"fw1\", FirewallArgs.builder()\n .name(\"website-fw-1\")\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());\n\n var fw2 = new Firewall(\"fw2\", FirewallArgs.builder()\n .name(\"website-fw-2\")\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 .dependsOn(fw1)\n .build());\n\n var fw3 = new Firewall(\"fw3\", FirewallArgs.builder()\n .name(\"website-fw-3\")\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 .dependsOn(fw2)\n .build());\n\n var fw4 = new Firewall(\"fw4\", FirewallArgs.builder()\n .name(\"website-fw-4\")\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 .dependsOn(fw3)\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"website-hc\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .portSpecification(\"USE_SERVING_PORT\")\n .build())\n .build(), CustomResourceOptions.builder()\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 .name(\"website-backend\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultRegionHealthCheck.id())\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"website-map\")\n .defaultService(defaultRegionBackendService.id())\n .build());\n\n var defaultRegionTargetHttpProxy = new RegionTargetHttpProxy(\"defaultRegionTargetHttpProxy\", RegionTargetHttpProxyArgs.builder()\n .region(\"us-central1\")\n .name(\"website-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .build());\n\n var defaultAddress = new Address(\"defaultAddress\", AddressArgs.builder()\n .name(\"website-ip-1\")\n .region(\"us-central1\")\n .networkTier(\"STANDARD\")\n .build());\n\n var proxy = new Subnetwork(\"proxy\", SubnetworkArgs.builder()\n .name(\"website-net-proxy\")\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());\n\n // Forwarding rule for Regional External Load Balancing\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder()\n .name(\"website-forwarding-rule\")\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.address())\n .networkTier(\"STANDARD\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Forwarding rule for Regional External Load Balancing\n default:\n type: gcp:compute:ForwardingRule\n properties:\n name: website-forwarding-rule\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.address}\n networkTier: STANDARD\n options:\n dependson:\n - ${proxy}\n defaultRegionTargetHttpProxy:\n type: gcp:compute:RegionTargetHttpProxy\n name: default\n properties:\n region: us-central1\n name: website-proxy\n urlMap: ${defaultRegionUrlMap.id}\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n region: us-central1\n name: website-map\n defaultService: ${defaultRegionBackendService.id}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n loadBalancingScheme: EXTERNAL_MANAGED\n backends:\n - group: ${rigm.instanceGroup}\n balancingMode: UTILIZATION\n capacityScaler: 1\n region: us-central1\n name: website-backend\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultRegionHealthCheck.id}\n rigm:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n region: us-central1\n name: website-rigm\n versions:\n - instanceTemplate: ${instanceTemplate.id}\n name: primary\n baseInstanceName: internal-glb\n targetSize: 1\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: instance_template\n properties:\n name: template-website-backend\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 defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n region: us-central1\n name: website-hc\n httpHealthCheck:\n portSpecification: USE_SERVING_PORT\n options:\n dependson:\n - ${fw4}\n defaultAddress:\n type: gcp:compute:Address\n name: default\n properties:\n name: website-ip-1\n region: us-central1\n networkTier: STANDARD\n fw1:\n type: gcp:compute:Firewall\n properties:\n name: website-fw-1\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 fw2:\n type: gcp:compute:Firewall\n properties:\n name: website-fw-2\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 dependson:\n - ${fw1}\n fw3:\n type: gcp:compute:Firewall\n properties:\n name: website-fw-3\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 dependson:\n - ${fw2}\n fw4:\n type: gcp:compute:Firewall\n properties:\n name: website-fw-4\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 dependson:\n - ${fw3}\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: website-net\n autoCreateSubnetworks: false\n routingMode: REGIONAL\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: website-net-default\n ipCidrRange: 10.1.2.0/24\n region: us-central1\n network: ${defaultNetwork.id}\n proxy:\n type: gcp:compute:Subnetwork\n properties:\n name: website-net-proxy\n ipCidrRange: 10.129.0.0/26\n region: us-central1\n network: ${defaultNetwork.id}\n purpose: REGIONAL_MANAGED_PROXY\n role: ACTIVE\nvariables:\n debianImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule Vpc Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// Consumer service endpoint\nconst consumerNet = new gcp.compute.Network(\"consumer_net\", {\n name: \"consumer-net\",\n autoCreateSubnetworks: false,\n});\nconst consumerSubnet = new gcp.compute.Subnetwork(\"consumer_subnet\", {\n name: \"consumer-net\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: consumerNet.id,\n});\nconst consumerAddress = new gcp.compute.Address(\"consumer_address\", {\n name: \"website-ip-1\",\n region: \"us-central1\",\n subnetwork: consumerSubnet.id,\n addressType: \"INTERNAL\",\n});\n// Producer service attachment\nconst producerNet = new gcp.compute.Network(\"producer_net\", {\n name: \"producer-net\",\n autoCreateSubnetworks: false,\n});\nconst pscProducerSubnet = new gcp.compute.Subnetwork(\"psc_producer_subnet\", {\n name: \"producer-psc-net\",\n ipCidrRange: \"10.1.0.0/16\",\n region: \"us-central1\",\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n network: producerNet.id,\n});\nconst producerSubnet = new gcp.compute.Subnetwork(\"producer_subnet\", {\n name: \"producer-net\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: producerNet.id,\n});\nconst producerServiceHealthCheck = new gcp.compute.HealthCheck(\"producer_service_health_check\", {\n name: \"producer-service-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst producerServiceBackend = new gcp.compute.RegionBackendService(\"producer_service_backend\", {\n name: \"producer-service-backend\",\n region: \"us-central1\",\n healthChecks: producerServiceHealthCheck.id,\n});\nconst producerTargetService = new gcp.compute.ForwardingRule(\"producer_target_service\", {\n name: \"producer-forwarding-rule\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: producerServiceBackend.id,\n allPorts: true,\n network: producerNet.name,\n subnetwork: producerSubnet.name,\n});\nconst producerServiceAttachment = new gcp.compute.ServiceAttachment(\"producer_service_attachment\", {\n name: \"producer-service\",\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});\n// Forwarding rule for VPC private service connect\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"psc-endpoint\",\n region: \"us-central1\",\n loadBalancingScheme: \"\",\n target: producerServiceAttachment.id,\n network: consumerNet.name,\n ipAddress: consumerAddress.id,\n allowPscGlobalAccess: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Consumer service endpoint\nconsumer_net = gcp.compute.Network(\"consumer_net\",\n name=\"consumer-net\",\n auto_create_subnetworks=False)\nconsumer_subnet = gcp.compute.Subnetwork(\"consumer_subnet\",\n name=\"consumer-net\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=consumer_net.id)\nconsumer_address = gcp.compute.Address(\"consumer_address\",\n name=\"website-ip-1\",\n region=\"us-central1\",\n subnetwork=consumer_subnet.id,\n address_type=\"INTERNAL\")\n# Producer service attachment\nproducer_net = gcp.compute.Network(\"producer_net\",\n name=\"producer-net\",\n auto_create_subnetworks=False)\npsc_producer_subnet = gcp.compute.Subnetwork(\"psc_producer_subnet\",\n name=\"producer-psc-net\",\n ip_cidr_range=\"10.1.0.0/16\",\n region=\"us-central1\",\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n network=producer_net.id)\nproducer_subnet = gcp.compute.Subnetwork(\"producer_subnet\",\n name=\"producer-net\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=producer_net.id)\nproducer_service_health_check = gcp.compute.HealthCheck(\"producer_service_health_check\",\n name=\"producer-service-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nproducer_service_backend = gcp.compute.RegionBackendService(\"producer_service_backend\",\n name=\"producer-service-backend\",\n region=\"us-central1\",\n health_checks=producer_service_health_check.id)\nproducer_target_service = gcp.compute.ForwardingRule(\"producer_target_service\",\n name=\"producer-forwarding-rule\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=producer_service_backend.id,\n all_ports=True,\n network=producer_net.name,\n subnetwork=producer_subnet.name)\nproducer_service_attachment = gcp.compute.ServiceAttachment(\"producer_service_attachment\",\n name=\"producer-service\",\n region=\"us-central1\",\n description=\"A service attachment configured with Terraform\",\n enable_proxy_protocol=True,\n connection_preference=\"ACCEPT_AUTOMATIC\",\n nat_subnets=[psc_producer_subnet.name],\n target_service=producer_target_service.id)\n# Forwarding rule for VPC private service connect\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"psc-endpoint\",\n region=\"us-central1\",\n load_balancing_scheme=\"\",\n target=producer_service_attachment.id,\n network=consumer_net.name,\n ip_address=consumer_address.id,\n allow_psc_global_access=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Consumer service endpoint\n var consumerNet = new Gcp.Compute.Network(\"consumer_net\", new()\n {\n Name = \"consumer-net\",\n AutoCreateSubnetworks = false,\n });\n\n var consumerSubnet = new Gcp.Compute.Subnetwork(\"consumer_subnet\", new()\n {\n Name = \"consumer-net\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = consumerNet.Id,\n });\n\n var consumerAddress = new Gcp.Compute.Address(\"consumer_address\", new()\n {\n Name = \"website-ip-1\",\n Region = \"us-central1\",\n Subnetwork = consumerSubnet.Id,\n AddressType = \"INTERNAL\",\n });\n\n // Producer service attachment\n var producerNet = new Gcp.Compute.Network(\"producer_net\", new()\n {\n Name = \"producer-net\",\n AutoCreateSubnetworks = false,\n });\n\n var pscProducerSubnet = new Gcp.Compute.Subnetwork(\"psc_producer_subnet\", new()\n {\n Name = \"producer-psc-net\",\n IpCidrRange = \"10.1.0.0/16\",\n Region = \"us-central1\",\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n Network = producerNet.Id,\n });\n\n var producerSubnet = new Gcp.Compute.Subnetwork(\"producer_subnet\", new()\n {\n Name = \"producer-net\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = producerNet.Id,\n });\n\n var producerServiceHealthCheck = new Gcp.Compute.HealthCheck(\"producer_service_health_check\", new()\n {\n Name = \"producer-service-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var producerServiceBackend = new Gcp.Compute.RegionBackendService(\"producer_service_backend\", new()\n {\n Name = \"producer-service-backend\",\n Region = \"us-central1\",\n HealthChecks = producerServiceHealthCheck.Id,\n });\n\n var producerTargetService = new Gcp.Compute.ForwardingRule(\"producer_target_service\", new()\n {\n Name = \"producer-forwarding-rule\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = producerServiceBackend.Id,\n AllPorts = true,\n Network = producerNet.Name,\n Subnetwork = producerSubnet.Name,\n });\n\n var producerServiceAttachment = new Gcp.Compute.ServiceAttachment(\"producer_service_attachment\", new()\n {\n Name = \"producer-service\",\n Region = \"us-central1\",\n Description = \"A service attachment configured with Terraform\",\n EnableProxyProtocol = true,\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n NatSubnets = new[]\n {\n pscProducerSubnet.Name,\n },\n TargetService = producerTargetService.Id,\n });\n\n // Forwarding rule for VPC private service connect\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"psc-endpoint\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"\",\n Target = producerServiceAttachment.Id,\n Network = consumerNet.Name,\n IpAddress = consumerAddress.Id,\n AllowPscGlobalAccess = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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// Consumer service endpoint\n\t\tconsumerNet, err := compute.NewNetwork(ctx, \"consumer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"consumer-net\"),\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\tconsumerSubnet, err := compute.NewSubnetwork(ctx, \"consumer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"consumer-net\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: consumerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tconsumerAddress, err := compute.NewAddress(ctx, \"consumer_address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"website-ip-1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSubnetwork: consumerSubnet.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Producer service attachment\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"producer-net\"),\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\tpscProducerSubnet, err := compute.NewSubnetwork(ctx, \"psc_producer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"producer-psc-net\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerSubnet, err := compute.NewSubnetwork(ctx, \"producer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"producer-net\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceHealthCheck, err := compute.NewHealthCheck(ctx, \"producer_service_health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"producer-service-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceBackend, err := compute.NewRegionBackendService(ctx, \"producer_service_backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"producer-service-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: producerServiceHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerTargetService, err := compute.NewForwardingRule(ctx, \"producer_target_service\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"producer-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: producerServiceBackend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: producerNet.Name,\n\t\t\tSubnetwork: producerSubnet.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceAttachment, err := compute.NewServiceAttachment(ctx, \"producer_service_attachment\", \u0026compute.ServiceAttachmentArgs{\n\t\t\tName: pulumi.String(\"producer-service\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A service attachment configured with Terraform\"),\n\t\t\tEnableProxyProtocol: pulumi.Bool(true),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tNatSubnets: pulumi.StringArray{\n\t\t\t\tpscProducerSubnet.Name,\n\t\t\t},\n\t\t\tTargetService: producerTargetService.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Forwarding rule for VPC private service connect\n\t\t_, err = compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"psc-endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tTarget: producerServiceAttachment.ID(),\n\t\t\tNetwork: consumerNet.Name,\n\t\t\tIpAddress: consumerAddress.ID(),\n\t\t\tAllowPscGlobalAccess: pulumi.Bool(true),\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.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 // Consumer service endpoint\n var consumerNet = new Network(\"consumerNet\", NetworkArgs.builder()\n .name(\"consumer-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var consumerSubnet = new Subnetwork(\"consumerSubnet\", SubnetworkArgs.builder()\n .name(\"consumer-net\")\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 .name(\"website-ip-1\")\n .region(\"us-central1\")\n .subnetwork(consumerSubnet.id())\n .addressType(\"INTERNAL\")\n .build());\n\n // Producer service attachment\n var producerNet = new Network(\"producerNet\", NetworkArgs.builder()\n .name(\"producer-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscProducerSubnet = new Subnetwork(\"pscProducerSubnet\", SubnetworkArgs.builder()\n .name(\"producer-psc-net\")\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 .name(\"producer-net\")\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 .name(\"producer-service-health-check\")\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 .name(\"producer-service-backend\")\n .region(\"us-central1\")\n .healthChecks(producerServiceHealthCheck.id())\n .build());\n\n var producerTargetService = new ForwardingRule(\"producerTargetService\", ForwardingRuleArgs.builder()\n .name(\"producer-forwarding-rule\")\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 .name(\"producer-service\")\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 // Forwarding rule for VPC private service connect\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder()\n .name(\"psc-endpoint\")\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:\n type: gcp:compute:ForwardingRule\n properties:\n name: psc-endpoint\n region: us-central1\n loadBalancingScheme:\n target: ${producerServiceAttachment.id}\n network: ${consumerNet.name}\n ipAddress: ${consumerAddress.id}\n allowPscGlobalAccess: true\n # Consumer service endpoint\n consumerNet:\n type: gcp:compute:Network\n name: consumer_net\n properties:\n name: consumer-net\n autoCreateSubnetworks: false\n consumerSubnet:\n type: gcp:compute:Subnetwork\n name: consumer_subnet\n properties:\n name: consumer-net\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${consumerNet.id}\n consumerAddress:\n type: gcp:compute:Address\n name: consumer_address\n properties:\n name: website-ip-1\n region: us-central1\n subnetwork: ${consumerSubnet.id}\n addressType: INTERNAL\n # Producer service attachment\n producerNet:\n type: gcp:compute:Network\n name: producer_net\n properties:\n name: producer-net\n autoCreateSubnetworks: false\n producerSubnet:\n type: gcp:compute:Subnetwork\n name: producer_subnet\n properties:\n name: producer-net\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${producerNet.id}\n pscProducerSubnet:\n type: gcp:compute:Subnetwork\n name: psc_producer_subnet\n properties:\n name: producer-psc-net\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 name: producer_service_attachment\n properties:\n name: producer-service\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 name: producer_target_service\n properties:\n name: producer-forwarding-rule\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 name: producer_service_backend\n properties:\n name: producer-service-backend\n region: us-central1\n healthChecks: ${producerServiceHealthCheck.id}\n producerServiceHealthCheck:\n type: gcp:compute:HealthCheck\n name: producer_service_health_check\n properties:\n name: producer-service-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule Vpc Psc No Automate Dns\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst consumerNet = new gcp.compute.Network(\"consumer_net\", {\n name: \"consumer-net\",\n autoCreateSubnetworks: false,\n});\nconst consumerSubnet = new gcp.compute.Subnetwork(\"consumer_subnet\", {\n name: \"consumer-net\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: consumerNet.id,\n});\nconst consumerAddress = new gcp.compute.Address(\"consumer_address\", {\n name: \"website-ip-1\",\n region: \"us-central1\",\n subnetwork: consumerSubnet.id,\n addressType: \"INTERNAL\",\n});\nconst producerNet = new gcp.compute.Network(\"producer_net\", {\n name: \"producer-net\",\n autoCreateSubnetworks: false,\n});\nconst pscProducerSubnet = new gcp.compute.Subnetwork(\"psc_producer_subnet\", {\n name: \"producer-psc-net\",\n ipCidrRange: \"10.1.0.0/16\",\n region: \"us-central1\",\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n network: producerNet.id,\n});\nconst producerSubnet = new gcp.compute.Subnetwork(\"producer_subnet\", {\n name: \"producer-net\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: producerNet.id,\n});\nconst producerServiceHealthCheck = new gcp.compute.HealthCheck(\"producer_service_health_check\", {\n name: \"producer-service-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst producerServiceBackend = new gcp.compute.RegionBackendService(\"producer_service_backend\", {\n name: \"producer-service-backend\",\n region: \"us-central1\",\n healthChecks: producerServiceHealthCheck.id,\n});\nconst producerTargetService = new gcp.compute.ForwardingRule(\"producer_target_service\", {\n name: \"producer-forwarding-rule\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: producerServiceBackend.id,\n allPorts: true,\n network: producerNet.name,\n subnetwork: producerSubnet.name,\n});\nconst producerServiceAttachment = new gcp.compute.ServiceAttachment(\"producer_service_attachment\", {\n name: \"producer-service\",\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});\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"psc-endpoint\",\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});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconsumer_net = gcp.compute.Network(\"consumer_net\",\n name=\"consumer-net\",\n auto_create_subnetworks=False)\nconsumer_subnet = gcp.compute.Subnetwork(\"consumer_subnet\",\n name=\"consumer-net\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=consumer_net.id)\nconsumer_address = gcp.compute.Address(\"consumer_address\",\n name=\"website-ip-1\",\n region=\"us-central1\",\n subnetwork=consumer_subnet.id,\n address_type=\"INTERNAL\")\nproducer_net = gcp.compute.Network(\"producer_net\",\n name=\"producer-net\",\n auto_create_subnetworks=False)\npsc_producer_subnet = gcp.compute.Subnetwork(\"psc_producer_subnet\",\n name=\"producer-psc-net\",\n ip_cidr_range=\"10.1.0.0/16\",\n region=\"us-central1\",\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n network=producer_net.id)\nproducer_subnet = gcp.compute.Subnetwork(\"producer_subnet\",\n name=\"producer-net\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=producer_net.id)\nproducer_service_health_check = gcp.compute.HealthCheck(\"producer_service_health_check\",\n name=\"producer-service-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nproducer_service_backend = gcp.compute.RegionBackendService(\"producer_service_backend\",\n name=\"producer-service-backend\",\n region=\"us-central1\",\n health_checks=producer_service_health_check.id)\nproducer_target_service = gcp.compute.ForwardingRule(\"producer_target_service\",\n name=\"producer-forwarding-rule\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=producer_service_backend.id,\n all_ports=True,\n network=producer_net.name,\n subnetwork=producer_subnet.name)\nproducer_service_attachment = gcp.compute.ServiceAttachment(\"producer_service_attachment\",\n name=\"producer-service\",\n region=\"us-central1\",\n description=\"A service attachment configured with Terraform\",\n enable_proxy_protocol=True,\n connection_preference=\"ACCEPT_AUTOMATIC\",\n nat_subnets=[psc_producer_subnet.name],\n target_service=producer_target_service.id)\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"psc-endpoint\",\n region=\"us-central1\",\n load_balancing_scheme=\"\",\n target=producer_service_attachment.id,\n network=consumer_net.name,\n ip_address=consumer_address.id,\n allow_psc_global_access=True,\n no_automate_dns_zone=True)\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 consumerNet = new Gcp.Compute.Network(\"consumer_net\", new()\n {\n Name = \"consumer-net\",\n AutoCreateSubnetworks = false,\n });\n\n var consumerSubnet = new Gcp.Compute.Subnetwork(\"consumer_subnet\", new()\n {\n Name = \"consumer-net\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = consumerNet.Id,\n });\n\n var consumerAddress = new Gcp.Compute.Address(\"consumer_address\", new()\n {\n Name = \"website-ip-1\",\n Region = \"us-central1\",\n Subnetwork = consumerSubnet.Id,\n AddressType = \"INTERNAL\",\n });\n\n var producerNet = new Gcp.Compute.Network(\"producer_net\", new()\n {\n Name = \"producer-net\",\n AutoCreateSubnetworks = false,\n });\n\n var pscProducerSubnet = new Gcp.Compute.Subnetwork(\"psc_producer_subnet\", new()\n {\n Name = \"producer-psc-net\",\n IpCidrRange = \"10.1.0.0/16\",\n Region = \"us-central1\",\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n Network = producerNet.Id,\n });\n\n var producerSubnet = new Gcp.Compute.Subnetwork(\"producer_subnet\", new()\n {\n Name = \"producer-net\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = producerNet.Id,\n });\n\n var producerServiceHealthCheck = new Gcp.Compute.HealthCheck(\"producer_service_health_check\", new()\n {\n Name = \"producer-service-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var producerServiceBackend = new Gcp.Compute.RegionBackendService(\"producer_service_backend\", new()\n {\n Name = \"producer-service-backend\",\n Region = \"us-central1\",\n HealthChecks = producerServiceHealthCheck.Id,\n });\n\n var producerTargetService = new Gcp.Compute.ForwardingRule(\"producer_target_service\", new()\n {\n Name = \"producer-forwarding-rule\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = producerServiceBackend.Id,\n AllPorts = true,\n Network = producerNet.Name,\n Subnetwork = producerSubnet.Name,\n });\n\n var producerServiceAttachment = new Gcp.Compute.ServiceAttachment(\"producer_service_attachment\", new()\n {\n Name = \"producer-service\",\n Region = \"us-central1\",\n Description = \"A service attachment configured with Terraform\",\n EnableProxyProtocol = true,\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n NatSubnets = new[]\n {\n pscProducerSubnet.Name,\n },\n TargetService = producerTargetService.Id,\n });\n\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"psc-endpoint\",\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tconsumerNet, err := compute.NewNetwork(ctx, \"consumer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"consumer-net\"),\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\tconsumerSubnet, err := compute.NewSubnetwork(ctx, \"consumer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"consumer-net\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: consumerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tconsumerAddress, err := compute.NewAddress(ctx, \"consumer_address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"website-ip-1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSubnetwork: consumerSubnet.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"producer-net\"),\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\tpscProducerSubnet, err := compute.NewSubnetwork(ctx, \"psc_producer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"producer-psc-net\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerSubnet, err := compute.NewSubnetwork(ctx, \"producer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"producer-net\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceHealthCheck, err := compute.NewHealthCheck(ctx, \"producer_service_health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"producer-service-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceBackend, err := compute.NewRegionBackendService(ctx, \"producer_service_backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"producer-service-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: producerServiceHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerTargetService, err := compute.NewForwardingRule(ctx, \"producer_target_service\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"producer-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: producerServiceBackend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: producerNet.Name,\n\t\t\tSubnetwork: producerSubnet.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceAttachment, err := compute.NewServiceAttachment(ctx, \"producer_service_attachment\", \u0026compute.ServiceAttachmentArgs{\n\t\t\tName: pulumi.String(\"producer-service\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A service attachment configured with Terraform\"),\n\t\t\tEnableProxyProtocol: pulumi.Bool(true),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tNatSubnets: pulumi.StringArray{\n\t\t\t\tpscProducerSubnet.Name,\n\t\t\t},\n\t\t\tTargetService: producerTargetService.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"psc-endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tTarget: producerServiceAttachment.ID(),\n\t\t\tNetwork: consumerNet.Name,\n\t\t\tIpAddress: consumerAddress.ID(),\n\t\t\tAllowPscGlobalAccess: pulumi.Bool(true),\n\t\t\tNoAutomateDnsZone: pulumi.Bool(true),\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.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 .name(\"consumer-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var consumerSubnet = new Subnetwork(\"consumerSubnet\", SubnetworkArgs.builder()\n .name(\"consumer-net\")\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 .name(\"website-ip-1\")\n .region(\"us-central1\")\n .subnetwork(consumerSubnet.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var producerNet = new Network(\"producerNet\", NetworkArgs.builder()\n .name(\"producer-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscProducerSubnet = new Subnetwork(\"pscProducerSubnet\", SubnetworkArgs.builder()\n .name(\"producer-psc-net\")\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 .name(\"producer-net\")\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 .name(\"producer-service-health-check\")\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 .name(\"producer-service-backend\")\n .region(\"us-central1\")\n .healthChecks(producerServiceHealthCheck.id())\n .build());\n\n var producerTargetService = new ForwardingRule(\"producerTargetService\", ForwardingRuleArgs.builder()\n .name(\"producer-forwarding-rule\")\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 .name(\"producer-service\")\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 .name(\"psc-endpoint\")\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 name: psc-endpoint\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 name: consumer_net\n properties:\n name: consumer-net\n autoCreateSubnetworks: false\n consumerSubnet:\n type: gcp:compute:Subnetwork\n name: consumer_subnet\n properties:\n name: consumer-net\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${consumerNet.id}\n consumerAddress:\n type: gcp:compute:Address\n name: consumer_address\n properties:\n name: website-ip-1\n region: us-central1\n subnetwork: ${consumerSubnet.id}\n addressType: INTERNAL\n producerNet:\n type: gcp:compute:Network\n name: producer_net\n properties:\n name: producer-net\n autoCreateSubnetworks: false\n producerSubnet:\n type: gcp:compute:Subnetwork\n name: producer_subnet\n properties:\n name: producer-net\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${producerNet.id}\n pscProducerSubnet:\n type: gcp:compute:Subnetwork\n name: psc_producer_subnet\n properties:\n name: producer-psc-net\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 name: producer_service_attachment\n properties:\n name: producer-service\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 name: producer_target_service\n properties:\n name: producer-forwarding-rule\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 name: producer_service_backend\n properties:\n name: producer-service-backend\n region: us-central1\n healthChecks: ${producerServiceHealthCheck.id}\n producerServiceHealthCheck:\n type: gcp:compute:HealthCheck\n name: producer_service_health_check\n properties:\n name: producer-service-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule Regional Steering\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.compute.Address(\"basic\", {\n name: \"website-ip\",\n region: \"us-central1\",\n});\nconst external = new gcp.compute.RegionBackendService(\"external\", {\n name: \"service-backend\",\n region: \"us-central1\",\n loadBalancingScheme: \"EXTERNAL\",\n});\nconst externalForwardingRule = new gcp.compute.ForwardingRule(\"external\", {\n name: \"external-forwarding-rule\",\n region: \"us-central1\",\n ipAddress: basic.address,\n backendService: external.selfLink,\n loadBalancingScheme: \"EXTERNAL\",\n});\nconst steering = new gcp.compute.ForwardingRule(\"steering\", {\n name: \"steering-rule\",\n region: \"us-central1\",\n ipAddress: basic.address,\n backendService: external.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\",\n name=\"website-ip\",\n region=\"us-central1\")\nexternal = gcp.compute.RegionBackendService(\"external\",\n name=\"service-backend\",\n region=\"us-central1\",\n load_balancing_scheme=\"EXTERNAL\")\nexternal_forwarding_rule = gcp.compute.ForwardingRule(\"external\",\n name=\"external-forwarding-rule\",\n region=\"us-central1\",\n ip_address=basic.address,\n backend_service=external.self_link,\n load_balancing_scheme=\"EXTERNAL\")\nsteering = gcp.compute.ForwardingRule(\"steering\",\n name=\"steering-rule\",\n region=\"us-central1\",\n ip_address=basic.address,\n backend_service=external.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 Name = \"website-ip\",\n Region = \"us-central1\",\n });\n\n var external = new Gcp.Compute.RegionBackendService(\"external\", new()\n {\n Name = \"service-backend\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"EXTERNAL\",\n });\n\n var externalForwardingRule = new Gcp.Compute.ForwardingRule(\"external\", new()\n {\n Name = \"external-forwarding-rule\",\n Region = \"us-central1\",\n IpAddress = basic.IPAddress,\n BackendService = external.SelfLink,\n LoadBalancingScheme = \"EXTERNAL\",\n });\n\n var steering = new Gcp.Compute.ForwardingRule(\"steering\", new()\n {\n Name = \"steering-rule\",\n Region = \"us-central1\",\n IpAddress = basic.IPAddress,\n BackendService = external.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 =\n {\n externalForwardingRule,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"website-ip\"),\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\texternal, err := compute.NewRegionBackendService(ctx, \"external\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"service-backend\"),\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, \"external\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"external-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: basic.Address,\n\t\t\tBackendService: external.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\tName: pulumi.String(\"steering-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: basic.Address,\n\t\t\tBackendService: external.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 .name(\"website-ip\")\n .region(\"us-central1\")\n .build());\n\n var external = new RegionBackendService(\"external\", RegionBackendServiceArgs.builder()\n .name(\"service-backend\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"EXTERNAL\")\n .build());\n\n var externalForwardingRule = new ForwardingRule(\"externalForwardingRule\", ForwardingRuleArgs.builder()\n .name(\"external-forwarding-rule\")\n .region(\"us-central1\")\n .ipAddress(basic.address())\n .backendService(external.selfLink())\n .loadBalancingScheme(\"EXTERNAL\")\n .build());\n\n var steering = new ForwardingRule(\"steering\", ForwardingRuleArgs.builder()\n .name(\"steering-rule\")\n .region(\"us-central1\")\n .ipAddress(basic.address())\n .backendService(external.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 name: steering-rule\n region: us-central1\n ipAddress: ${basic.address}\n backendService: ${external.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 name: website-ip\n region: us-central1\n external:\n type: gcp:compute:RegionBackendService\n properties:\n name: service-backend\n region: us-central1\n loadBalancingScheme: EXTERNAL\n externalForwardingRule:\n type: gcp:compute:ForwardingRule\n name: external\n properties:\n name: external-forwarding-rule\n region: us-central1\n ipAddress: ${basic.address}\n backendService: ${external.selfLink}\n loadBalancingScheme: EXTERNAL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Forwarding Rule Internallb Ipv6\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst hc = new gcp.compute.HealthCheck(\"hc\", {\n name: \"check-ilb-ipv6-backend\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"ilb-ipv6-backend\",\n region: \"us-central1\",\n healthChecks: hc.id,\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"net-ipv6\",\n autoCreateSubnetworks: false,\n enableUlaInternalIpv6: true,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"subnet-internal-ipv6\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n stackType: \"IPV4_IPV6\",\n ipv6AccessType: \"INTERNAL\",\n network: defaultNetwork.id,\n});\n// Forwarding rule for Internal Load Balancing\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"ilb-ipv6-forwarding-rule\",\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});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhc = gcp.compute.HealthCheck(\"hc\",\n name=\"check-ilb-ipv6-backend\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"ilb-ipv6-backend\",\n region=\"us-central1\",\n health_checks=hc.id)\ndefault_network = gcp.compute.Network(\"default\",\n name=\"net-ipv6\",\n auto_create_subnetworks=False,\n enable_ula_internal_ipv6=True)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"subnet-internal-ipv6\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n stack_type=\"IPV4_IPV6\",\n ipv6_access_type=\"INTERNAL\",\n network=default_network.id)\n# Forwarding rule for Internal Load Balancing\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"ilb-ipv6-forwarding-rule\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=backend.id,\n all_ports=True,\n network=default_network.name,\n subnetwork=default_subnetwork.name,\n ip_version=\"IPV6\")\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 hc = new Gcp.Compute.HealthCheck(\"hc\", new()\n {\n Name = \"check-ilb-ipv6-backend\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"ilb-ipv6-backend\",\n Region = \"us-central1\",\n HealthChecks = hc.Id,\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"net-ipv6\",\n AutoCreateSubnetworks = false,\n EnableUlaInternalIpv6 = true,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"subnet-internal-ipv6\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n StackType = \"IPV4_IPV6\",\n Ipv6AccessType = \"INTERNAL\",\n Network = defaultNetwork.Id,\n });\n\n // Forwarding rule for Internal Load Balancing\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"ilb-ipv6-forwarding-rule\",\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thc, err := compute.NewHealthCheck(ctx, \"hc\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"check-ilb-ipv6-backend\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"ilb-ipv6-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: hc.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"net-ipv6\"),\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\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-internal-ipv6\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tStackType: pulumi.String(\"IPV4_IPV6\"),\n\t\t\tIpv6AccessType: pulumi.String(\"INTERNAL\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Forwarding rule for Internal Load Balancing\n\t\t_, err = compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"ilb-ipv6-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: backend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t\tSubnetwork: defaultSubnetwork.Name,\n\t\t\tIpVersion: pulumi.String(\"IPV6\"),\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.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 .name(\"check-ilb-ipv6-backend\")\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 .name(\"ilb-ipv6-backend\")\n .region(\"us-central1\")\n .healthChecks(hc.id())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"net-ipv6\")\n .autoCreateSubnetworks(false)\n .enableUlaInternalIpv6(true)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"subnet-internal-ipv6\")\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 // Forwarding rule for Internal Load Balancing\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder()\n .name(\"ilb-ipv6-forwarding-rule\")\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 default:\n type: gcp:compute:ForwardingRule\n properties:\n name: ilb-ipv6-forwarding-rule\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 name: ilb-ipv6-backend\n region: us-central1\n healthChecks: ${hc.id}\n hc:\n type: gcp:compute:HealthCheck\n properties:\n name: check-ilb-ipv6-backend\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: net-ipv6\n autoCreateSubnetworks: false\n enableUlaInternalIpv6: true\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: subnet-internal-ipv6\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n stackType: IPV4_IPV6\n ipv6AccessType: INTERNAL\n network: ${defaultNetwork.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nForwardingRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/forwardingRules/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ForwardingRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/forwardingRule:ForwardingRule default projects/{{project}}/regions/{{region}}/forwardingRules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/forwardingRule:ForwardingRule default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/forwardingRule:ForwardingRule default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/forwardingRule:ForwardingRule default {{name}}\n```\n\n", "properties": { "allPorts": { "type": "boolean", @@ -145536,7 +145536,7 @@ } }, "gcp:compute/globalForwardingRule:GlobalForwardingRule": { - "description": "Represents a GlobalForwardingRule resource. Global forwarding rules are\nused to forward traffic to the correct load balancer for HTTP load\nbalancing. Global forwarding rules can only be used for HTTP load\nbalancing.\n\nFor more information, see https://cloud.google.com/compute/docs/load-balancing/http/\n\n\n\n## Example Usage\n\n### Global Forwarding Rule Http\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"check-backend\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map-target-proxy\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpProxy = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"target-proxy\",\n description: \"a description\",\n urlMap: defaultURLMap.id,\n});\nconst _default = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"global-rule\",\n target: defaultTargetHttpProxy.id,\n portRange: \"80\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"check-backend\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map-target-proxy\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": default_backend_service.id,\n \"pathRules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_http_proxy = gcp.compute.TargetHttpProxy(\"default\",\n name=\"target-proxy\",\n description=\"a description\",\n url_map=default_url_map.id)\ndefault = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"global-rule\",\n target=default_target_http_proxy.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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"check-backend\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map-target-proxy\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpProxy = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"target-proxy\",\n Description = \"a description\",\n UrlMap = defaultURLMap.Id,\n });\n\n var @default = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"global-rule\",\n Target = defaultTargetHttpProxy.Id,\n PortRange = \"80\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"check-backend\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map-target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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\tdefaultTargetHttpProxy, err := compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"global-rule\"),\n\t\t\tTarget: defaultTargetHttpProxy.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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"check-backend\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map-target-proxy\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpProxy = new TargetHttpProxy(\"defaultTargetHttpProxy\", TargetHttpProxyArgs.builder()\n .name(\"target-proxy\")\n .description(\"a description\")\n .urlMap(defaultURLMap.id())\n .build());\n\n var default_ = new GlobalForwardingRule(\"default\", GlobalForwardingRuleArgs.builder()\n .name(\"global-rule\")\n .target(defaultTargetHttpProxy.id())\n .portRange(\"80\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:GlobalForwardingRule\n properties:\n name: global-rule\n target: ${defaultTargetHttpProxy.id}\n portRange: '80'\n defaultTargetHttpProxy:\n type: gcp:compute:TargetHttpProxy\n name: default\n properties:\n name: target-proxy\n description: a description\n urlMap: ${defaultURLMap.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map-target-proxy\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: check-backend\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Global Forwarding Rule Internal\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst debianImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst instanceTemplate = new gcp.compute.InstanceTemplate(\"instance_template\", {\n name: \"template-backend\",\n machineType: \"e2-medium\",\n networkInterfaces: [{\n network: \"default\",\n }],\n disks: [{\n sourceImage: debianImage.then(debianImage =\u003e debianImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n});\nconst igm = new gcp.compute.InstanceGroupManager(\"igm\", {\n name: \"igm-internal\",\n versions: [{\n instanceTemplate: instanceTemplate.id,\n name: \"primary\",\n }],\n baseInstanceName: \"internal-glb\",\n zone: \"us-central1-f\",\n targetSize: 1,\n});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"check-backend\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n backends: [{\n group: igm.instanceGroup,\n balancingMode: \"RATE\",\n capacityScaler: 0.4,\n maxRatePerInstance: 50,\n }],\n healthChecks: defaultHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map-target-proxy\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpProxy = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"target-proxy\",\n description: \"a description\",\n urlMap: defaultURLMap.id,\n});\nconst _default = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"global-rule\",\n target: defaultTargetHttpProxy.id,\n portRange: \"80\",\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n ipAddress: \"0.0.0.0\",\n metadataFilters: [{\n filterMatchCriteria: \"MATCH_ANY\",\n filterLabels: [{\n name: \"PLANET\",\n value: \"MARS\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndebian_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ninstance_template = gcp.compute.InstanceTemplate(\"instance_template\",\n name=\"template-backend\",\n machine_type=\"e2-medium\",\n network_interfaces=[{\n \"network\": \"default\",\n }],\n disks=[{\n \"sourceImage\": debian_image.self_link,\n \"autoDelete\": True,\n \"boot\": True,\n }])\nigm = gcp.compute.InstanceGroupManager(\"igm\",\n name=\"igm-internal\",\n versions=[{\n \"instanceTemplate\": instance_template.id,\n \"name\": \"primary\",\n }],\n base_instance_name=\"internal-glb\",\n zone=\"us-central1-f\",\n target_size=1)\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"check-backend\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n backends=[{\n \"group\": igm.instance_group,\n \"balancingMode\": \"RATE\",\n \"capacityScaler\": 0.4,\n \"maxRatePerInstance\": 50,\n }],\n health_checks=default_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map-target-proxy\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": default_backend_service.id,\n \"pathRules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_http_proxy = gcp.compute.TargetHttpProxy(\"default\",\n name=\"target-proxy\",\n description=\"a description\",\n url_map=default_url_map.id)\ndefault = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"global-rule\",\n target=default_target_http_proxy.id,\n port_range=\"80\",\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n ip_address=\"0.0.0.0\",\n metadata_filters=[{\n \"filterMatchCriteria\": \"MATCH_ANY\",\n \"filterLabels\": [{\n \"name\": \"PLANET\",\n \"value\": \"MARS\",\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 debianImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var instanceTemplate = new Gcp.Compute.InstanceTemplate(\"instance_template\", new()\n {\n Name = \"template-backend\",\n MachineType = \"e2-medium\",\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = debianImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n });\n\n var igm = new Gcp.Compute.InstanceGroupManager(\"igm\", new()\n {\n Name = \"igm-internal\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = instanceTemplate.Id,\n Name = \"primary\",\n },\n },\n BaseInstanceName = \"internal-glb\",\n Zone = \"us-central1-f\",\n TargetSize = 1,\n });\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"check-backend\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n Backends = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = igm.InstanceGroup,\n BalancingMode = \"RATE\",\n CapacityScaler = 0.4,\n MaxRatePerInstance = 50,\n },\n },\n HealthChecks = defaultHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map-target-proxy\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpProxy = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"target-proxy\",\n Description = \"a description\",\n UrlMap = defaultURLMap.Id,\n });\n\n var @default = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"global-rule\",\n Target = defaultTargetHttpProxy.Id,\n PortRange = \"80\",\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n IpAddress = \"0.0.0.0\",\n MetadataFilters = new[]\n {\n new Gcp.Compute.Inputs.GlobalForwardingRuleMetadataFilterArgs\n {\n FilterMatchCriteria = \"MATCH_ANY\",\n FilterLabels = new[]\n {\n new Gcp.Compute.Inputs.GlobalForwardingRuleMetadataFilterFilterLabelArgs\n {\n Name = \"PLANET\",\n Value = \"MARS\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdebianImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstanceTemplate, err := compute.NewInstanceTemplate(ctx, \"instance_template\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"template-backend\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(debianImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: 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\tigm, err := compute.NewInstanceGroupManager(ctx, \"igm\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"igm-internal\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: instanceTemplate.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"internal-glb\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tTargetSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"check-backend\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: igm.InstanceGroup,\n\t\t\t\t\tBalancingMode: pulumi.String(\"RATE\"),\n\t\t\t\t\tCapacityScaler: pulumi.Float64(0.4),\n\t\t\t\t\tMaxRatePerInstance: pulumi.Float64(50),\n\t\t\t\t},\n\t\t\t},\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map-target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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\tdefaultTargetHttpProxy, err := compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"global-rule\"),\n\t\t\tTarget: defaultTargetHttpProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tIpAddress: pulumi.String(\"0.0.0.0\"),\n\t\t\tMetadataFilters: compute.GlobalForwardingRuleMetadataFilterArray{\n\t\t\t\t\u0026compute.GlobalForwardingRuleMetadataFilterArgs{\n\t\t\t\t\tFilterMatchCriteria: pulumi.String(\"MATCH_ANY\"),\n\t\t\t\t\tFilterLabels: compute.GlobalForwardingRuleMetadataFilterFilterLabelArray{\n\t\t\t\t\t\t\u0026compute.GlobalForwardingRuleMetadataFilterFilterLabelArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"PLANET\"),\n\t\t\t\t\t\t\tValue: pulumi.String(\"MARS\"),\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.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport com.pulumi.gcp.compute.inputs.GlobalForwardingRuleMetadataFilterArgs;\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 instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"template-backend\")\n .machineType(\"e2-medium\")\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(debianImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .build());\n\n var igm = new InstanceGroupManager(\"igm\", InstanceGroupManagerArgs.builder()\n .name(\"igm-internal\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(instanceTemplate.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"internal-glb\")\n .zone(\"us-central1-f\")\n .targetSize(1)\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"check-backend\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .backends(BackendServiceBackendArgs.builder()\n .group(igm.instanceGroup())\n .balancingMode(\"RATE\")\n .capacityScaler(0.4)\n .maxRatePerInstance(50)\n .build())\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map-target-proxy\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpProxy = new TargetHttpProxy(\"defaultTargetHttpProxy\", TargetHttpProxyArgs.builder()\n .name(\"target-proxy\")\n .description(\"a description\")\n .urlMap(defaultURLMap.id())\n .build());\n\n var default_ = new GlobalForwardingRule(\"default\", GlobalForwardingRuleArgs.builder()\n .name(\"global-rule\")\n .target(defaultTargetHttpProxy.id())\n .portRange(\"80\")\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .ipAddress(\"0.0.0.0\")\n .metadataFilters(GlobalForwardingRuleMetadataFilterArgs.builder()\n .filterMatchCriteria(\"MATCH_ANY\")\n .filterLabels(GlobalForwardingRuleMetadataFilterFilterLabelArgs.builder()\n .name(\"PLANET\")\n .value(\"MARS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:GlobalForwardingRule\n properties:\n name: global-rule\n target: ${defaultTargetHttpProxy.id}\n portRange: '80'\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n ipAddress: 0.0.0.0\n metadataFilters:\n - filterMatchCriteria: MATCH_ANY\n filterLabels:\n - name: PLANET\n value: MARS\n defaultTargetHttpProxy:\n type: gcp:compute:TargetHttpProxy\n name: default\n properties:\n name: target-proxy\n description: a description\n urlMap: ${defaultURLMap.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map-target-proxy\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n backends:\n - group: ${igm.instanceGroup}\n balancingMode: RATE\n capacityScaler: 0.4\n maxRatePerInstance: 50\n healthChecks: ${defaultHealthCheck.id}\n igm:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: igm-internal\n versions:\n - instanceTemplate: ${instanceTemplate.id}\n name: primary\n baseInstanceName: internal-glb\n zone: us-central1-f\n targetSize: 1\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: instance_template\n properties:\n name: template-backend\n machineType: e2-medium\n networkInterfaces:\n - network: default\n disks:\n - sourceImage: ${debianImage.selfLink}\n autoDelete: true\n boot: true\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: check-backend\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\nvariables:\n debianImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Global Forwarding Rule External Managed\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map-target-proxy\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpProxy = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"target-proxy\",\n description: \"a description\",\n urlMap: defaultURLMap.id,\n});\nconst _default = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"global-rule\",\n target: defaultTargetHttpProxy.id,\n portRange: \"80\",\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\")\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map-target-proxy\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": default_backend_service.id,\n \"pathRules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_http_proxy = gcp.compute.TargetHttpProxy(\"default\",\n name=\"target-proxy\",\n description=\"a description\",\n url_map=default_url_map.id)\ndefault = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"global-rule\",\n target=default_target_http_proxy.id,\n port_range=\"80\",\n load_balancing_scheme=\"EXTERNAL_MANAGED\")\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 defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map-target-proxy\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpProxy = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"target-proxy\",\n Description = \"a description\",\n UrlMap = defaultURLMap.Id,\n });\n\n var @default = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"global-rule\",\n Target = defaultTargetHttpProxy.Id,\n PortRange = \"80\",\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map-target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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\tdefaultTargetHttpProxy, err := compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"global-rule\"),\n\t\t\tTarget: defaultTargetHttpProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\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.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\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 defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map-target-proxy\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpProxy = new TargetHttpProxy(\"defaultTargetHttpProxy\", TargetHttpProxyArgs.builder()\n .name(\"target-proxy\")\n .description(\"a description\")\n .urlMap(defaultURLMap.id())\n .build());\n\n var default_ = new GlobalForwardingRule(\"default\", GlobalForwardingRuleArgs.builder()\n .name(\"global-rule\")\n .target(defaultTargetHttpProxy.id())\n .portRange(\"80\")\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:GlobalForwardingRule\n properties:\n name: global-rule\n target: ${defaultTargetHttpProxy.id}\n portRange: '80'\n loadBalancingScheme: EXTERNAL_MANAGED\n defaultTargetHttpProxy:\n type: gcp:compute:TargetHttpProxy\n name: default\n properties:\n name: target-proxy\n description: a description\n urlMap: ${defaultURLMap.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map-target-proxy\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Global Forwarding Rule Hybrid\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst config = new pulumi.Config();\nconst subnetworkCidr = config.get(\"subnetworkCidr\") || \"10.0.0.0/24\";\nconst _default = new gcp.compute.Network(\"default\", {name: \"my-network\"});\nconst internal = new gcp.compute.Network(\"internal\", {\n name: \"my-internal-network\",\n autoCreateSubnetworks: false,\n});\nconst internalSubnetwork = new gcp.compute.Subnetwork(\"internal\", {\n name: \"my-subnetwork\",\n network: internal.id,\n ipCidrRange: subnetworkCidr,\n region: \"us-central1\",\n privateIpGoogleAccess: true,\n});\n// Zonal NEG with GCE_VM_IP_PORT\nconst defaultNetworkEndpointGroup = new gcp.compute.NetworkEndpointGroup(\"default\", {\n name: \"default-neg\",\n network: _default.id,\n defaultPort: 90,\n zone: \"us-central1-a\",\n networkEndpointType: \"GCE_VM_IP_PORT\",\n});\n// Zonal NEG with GCE_VM_IP\nconst internalNetworkEndpointGroup = new gcp.compute.NetworkEndpointGroup(\"internal\", {\n name: \"internal-neg\",\n network: internal.id,\n subnetwork: internalSubnetwork.id,\n zone: \"us-central1-a\",\n networkEndpointType: \"GCE_VM_IP\",\n});\n// Hybrid connectivity NEG\nconst hybrid = new gcp.compute.NetworkEndpointGroup(\"hybrid\", {\n name: \"hybrid-neg\",\n network: _default.id,\n defaultPort: 90,\n zone: \"us-central1-a\",\n networkEndpointType: \"NON_GCP_PRIVATE_IP_PORT\",\n});\nconst hybrid_endpoint = new gcp.compute.NetworkEndpoint(\"hybrid-endpoint\", {\n networkEndpointGroup: hybrid.name,\n port: hybrid.defaultPort,\n ipAddress: \"127.0.0.1\",\n});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\n// Backend service for Zonal NEG\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-default\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n backends: [{\n group: defaultNetworkEndpointGroup.id,\n balancingMode: \"RATE\",\n maxRatePerEndpoint: 10,\n }],\n healthChecks: defaultHealthCheck.id,\n});\n// Backgend service for Hybrid NEG\nconst hybridBackendService = new gcp.compute.BackendService(\"hybrid\", {\n name: \"backend-hybrid\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n backends: [{\n group: hybrid.id,\n balancingMode: \"RATE\",\n maxRatePerEndpoint: 10,\n }],\n healthChecks: defaultHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map-target-proxy\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [\n {\n paths: [\"/*\"],\n service: defaultBackendService.id,\n },\n {\n paths: [\"/hybrid\"],\n service: hybridBackendService.id,\n },\n ],\n }],\n});\nconst defaultTargetHttpProxy = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"target-proxy\",\n description: \"a description\",\n urlMap: defaultURLMap.id,\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"global-rule\",\n target: defaultTargetHttpProxy.id,\n portRange: \"80\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconfig = pulumi.Config()\nsubnetwork_cidr = config.get(\"subnetworkCidr\")\nif subnetwork_cidr is None:\n subnetwork_cidr = \"10.0.0.0/24\"\ndefault = gcp.compute.Network(\"default\", name=\"my-network\")\ninternal = gcp.compute.Network(\"internal\",\n name=\"my-internal-network\",\n auto_create_subnetworks=False)\ninternal_subnetwork = gcp.compute.Subnetwork(\"internal\",\n name=\"my-subnetwork\",\n network=internal.id,\n ip_cidr_range=subnetwork_cidr,\n region=\"us-central1\",\n private_ip_google_access=True)\n# Zonal NEG with GCE_VM_IP_PORT\ndefault_network_endpoint_group = gcp.compute.NetworkEndpointGroup(\"default\",\n name=\"default-neg\",\n network=default.id,\n default_port=90,\n zone=\"us-central1-a\",\n network_endpoint_type=\"GCE_VM_IP_PORT\")\n# Zonal NEG with GCE_VM_IP\ninternal_network_endpoint_group = gcp.compute.NetworkEndpointGroup(\"internal\",\n name=\"internal-neg\",\n network=internal.id,\n subnetwork=internal_subnetwork.id,\n zone=\"us-central1-a\",\n network_endpoint_type=\"GCE_VM_IP\")\n# Hybrid connectivity NEG\nhybrid = gcp.compute.NetworkEndpointGroup(\"hybrid\",\n name=\"hybrid-neg\",\n network=default.id,\n default_port=90,\n zone=\"us-central1-a\",\n network_endpoint_type=\"NON_GCP_PRIVATE_IP_PORT\")\nhybrid_endpoint = gcp.compute.NetworkEndpoint(\"hybrid-endpoint\",\n network_endpoint_group=hybrid.name,\n port=hybrid.default_port,\n ip_address=\"127.0.0.1\")\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\n# Backend service for Zonal NEG\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-default\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n backends=[{\n \"group\": default_network_endpoint_group.id,\n \"balancingMode\": \"RATE\",\n \"maxRatePerEndpoint\": 10,\n }],\n health_checks=default_health_check.id)\n# Backgend service for Hybrid NEG\nhybrid_backend_service = gcp.compute.BackendService(\"hybrid\",\n name=\"backend-hybrid\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n backends=[{\n \"group\": hybrid.id,\n \"balancingMode\": \"RATE\",\n \"maxRatePerEndpoint\": 10,\n }],\n health_checks=default_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map-target-proxy\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": default_backend_service.id,\n \"pathRules\": [\n {\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n },\n {\n \"paths\": [\"/hybrid\"],\n \"service\": hybrid_backend_service.id,\n },\n ],\n }])\ndefault_target_http_proxy = gcp.compute.TargetHttpProxy(\"default\",\n name=\"target-proxy\",\n description=\"a description\",\n url_map=default_url_map.id)\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"global-rule\",\n target=default_target_http_proxy.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 config = new Config();\n var subnetworkCidr = config.Get(\"subnetworkCidr\") ?? \"10.0.0.0/24\";\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n });\n\n var @internal = new Gcp.Compute.Network(\"internal\", new()\n {\n Name = \"my-internal-network\",\n AutoCreateSubnetworks = false,\n });\n\n var internalSubnetwork = new Gcp.Compute.Subnetwork(\"internal\", new()\n {\n Name = \"my-subnetwork\",\n Network = @internal.Id,\n IpCidrRange = subnetworkCidr,\n Region = \"us-central1\",\n PrivateIpGoogleAccess = true,\n });\n\n // Zonal NEG with GCE_VM_IP_PORT\n var defaultNetworkEndpointGroup = new Gcp.Compute.NetworkEndpointGroup(\"default\", new()\n {\n Name = \"default-neg\",\n Network = @default.Id,\n DefaultPort = 90,\n Zone = \"us-central1-a\",\n NetworkEndpointType = \"GCE_VM_IP_PORT\",\n });\n\n // Zonal NEG with GCE_VM_IP\n var internalNetworkEndpointGroup = new Gcp.Compute.NetworkEndpointGroup(\"internal\", new()\n {\n Name = \"internal-neg\",\n Network = @internal.Id,\n Subnetwork = internalSubnetwork.Id,\n Zone = \"us-central1-a\",\n NetworkEndpointType = \"GCE_VM_IP\",\n });\n\n // Hybrid connectivity NEG\n var hybrid = new Gcp.Compute.NetworkEndpointGroup(\"hybrid\", new()\n {\n Name = \"hybrid-neg\",\n Network = @default.Id,\n DefaultPort = 90,\n Zone = \"us-central1-a\",\n NetworkEndpointType = \"NON_GCP_PRIVATE_IP_PORT\",\n });\n\n var hybrid_endpoint = new Gcp.Compute.NetworkEndpoint(\"hybrid-endpoint\", new()\n {\n NetworkEndpointGroup = hybrid.Name,\n Port = hybrid.DefaultPort,\n IpAddress = \"127.0.0.1\",\n });\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n // Backend service for Zonal NEG\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-default\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n Backends = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = defaultNetworkEndpointGroup.Id,\n BalancingMode = \"RATE\",\n MaxRatePerEndpoint = 10,\n },\n },\n HealthChecks = defaultHealthCheck.Id,\n });\n\n // Backgend service for Hybrid NEG\n var hybridBackendService = new Gcp.Compute.BackendService(\"hybrid\", new()\n {\n Name = \"backend-hybrid\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n Backends = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = hybrid.Id,\n BalancingMode = \"RATE\",\n MaxRatePerEndpoint = 10,\n },\n },\n HealthChecks = defaultHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map-target-proxy\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/hybrid\",\n },\n Service = hybridBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpProxy = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"target-proxy\",\n Description = \"a description\",\n UrlMap = defaultURLMap.Id,\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"global-rule\",\n Target = defaultTargetHttpProxy.Id,\n PortRange = \"80\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tsubnetworkCidr := \"10.0.0.0/24\"\n\t\tif param := cfg.Get(\"subnetworkCidr\"); param != \"\" {\n\t\t\tsubnetworkCidr = param\n\t\t}\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinternal, err := compute.NewNetwork(ctx, \"internal\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-internal-network\"),\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\tinternalSubnetwork, err := compute.NewSubnetwork(ctx, \"internal\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tNetwork: internal.ID(),\n\t\t\tIpCidrRange: pulumi.String(subnetworkCidr),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\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// Zonal NEG with GCE_VM_IP_PORT\n\t\tdefaultNetworkEndpointGroup, err := compute.NewNetworkEndpointGroup(ctx, \"default\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"default-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tDefaultPort: pulumi.Int(90),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"GCE_VM_IP_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Zonal NEG with GCE_VM_IP\n\t\t_, err = compute.NewNetworkEndpointGroup(ctx, \"internal\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"internal-neg\"),\n\t\t\tNetwork: internal.ID(),\n\t\t\tSubnetwork: internalSubnetwork.ID(),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"GCE_VM_IP\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Hybrid connectivity NEG\n\t\thybrid, err := compute.NewNetworkEndpointGroup(ctx, \"hybrid\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"hybrid-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tDefaultPort: pulumi.Int(90),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"NON_GCP_PRIVATE_IP_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkEndpoint(ctx, \"hybrid-endpoint\", \u0026compute.NetworkEndpointArgs{\n\t\t\tNetworkEndpointGroup: hybrid.Name,\n\t\t\tPort: hybrid.DefaultPort,\n\t\t\tIpAddress: pulumi.String(\"127.0.0.1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Backend service for Zonal NEG\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-default\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: defaultNetworkEndpointGroup.ID(),\n\t\t\t\t\tBalancingMode: pulumi.String(\"RATE\"),\n\t\t\t\t\tMaxRatePerEndpoint: pulumi.Float64(10),\n\t\t\t\t},\n\t\t\t},\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Backgend service for Hybrid NEG\n\t\thybridBackendService, err := compute.NewBackendService(ctx, \"hybrid\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-hybrid\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: hybrid.ID(),\n\t\t\t\t\tBalancingMode: pulumi.String(\"RATE\"),\n\t\t\t\t\tMaxRatePerEndpoint: pulumi.Float64(10),\n\t\t\t\t},\n\t\t\t},\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map-target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/hybrid\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: hybridBackendService.ID(),\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\tdefaultTargetHttpProxy, err := compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"global-rule\"),\n\t\t\tTarget: defaultTargetHttpProxy.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.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.NetworkEndpointGroup;\nimport com.pulumi.gcp.compute.NetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.NetworkEndpoint;\nimport com.pulumi.gcp.compute.NetworkEndpointArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\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 config = ctx.config();\n final var subnetworkCidr = config.get(\"subnetworkCidr\").orElse(\"10.0.0.0/24\");\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"my-network\")\n .build());\n\n var internal = new Network(\"internal\", NetworkArgs.builder()\n .name(\"my-internal-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var internalSubnetwork = new Subnetwork(\"internalSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\n .network(internal.id())\n .ipCidrRange(subnetworkCidr)\n .region(\"us-central1\")\n .privateIpGoogleAccess(true)\n .build());\n\n // Zonal NEG with GCE_VM_IP_PORT\n var defaultNetworkEndpointGroup = new NetworkEndpointGroup(\"defaultNetworkEndpointGroup\", NetworkEndpointGroupArgs.builder()\n .name(\"default-neg\")\n .network(default_.id())\n .defaultPort(\"90\")\n .zone(\"us-central1-a\")\n .networkEndpointType(\"GCE_VM_IP_PORT\")\n .build());\n\n // Zonal NEG with GCE_VM_IP\n var internalNetworkEndpointGroup = new NetworkEndpointGroup(\"internalNetworkEndpointGroup\", NetworkEndpointGroupArgs.builder()\n .name(\"internal-neg\")\n .network(internal.id())\n .subnetwork(internalSubnetwork.id())\n .zone(\"us-central1-a\")\n .networkEndpointType(\"GCE_VM_IP\")\n .build());\n\n // Hybrid connectivity NEG\n var hybrid = new NetworkEndpointGroup(\"hybrid\", NetworkEndpointGroupArgs.builder()\n .name(\"hybrid-neg\")\n .network(default_.id())\n .defaultPort(\"90\")\n .zone(\"us-central1-a\")\n .networkEndpointType(\"NON_GCP_PRIVATE_IP_PORT\")\n .build());\n\n var hybrid_endpoint = new NetworkEndpoint(\"hybrid-endpoint\", NetworkEndpointArgs.builder()\n .networkEndpointGroup(hybrid.name())\n .port(hybrid.defaultPort())\n .ipAddress(\"127.0.0.1\")\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n // Backend service for Zonal NEG\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-default\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .backends(BackendServiceBackendArgs.builder()\n .group(defaultNetworkEndpointGroup.id())\n .balancingMode(\"RATE\")\n .maxRatePerEndpoint(10)\n .build())\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n // Backgend service for Hybrid NEG\n var hybridBackendService = new BackendService(\"hybridBackendService\", BackendServiceArgs.builder()\n .name(\"backend-hybrid\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .backends(BackendServiceBackendArgs.builder()\n .group(hybrid.id())\n .balancingMode(\"RATE\")\n .maxRatePerEndpoint(10)\n .build())\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map-target-proxy\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules( \n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build(),\n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/hybrid\")\n .service(hybridBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpProxy = new TargetHttpProxy(\"defaultTargetHttpProxy\", TargetHttpProxyArgs.builder()\n .name(\"target-proxy\")\n .description(\"a description\")\n .urlMap(defaultURLMap.id())\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .name(\"global-rule\")\n .target(defaultTargetHttpProxy.id())\n .portRange(\"80\")\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n # Roughly mirrors https://cloud.google.com/load-balancing/docs/https/setting-up-ext-https-hybrid\n subnetworkCidr:\n type: string\n default: 10.0.0.0/24\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n internal:\n type: gcp:compute:Network\n properties:\n name: my-internal-network\n autoCreateSubnetworks: false\n internalSubnetwork:\n type: gcp:compute:Subnetwork\n name: internal\n properties:\n name: my-subnetwork\n network: ${internal.id}\n ipCidrRange: ${subnetworkCidr}\n region: us-central1\n privateIpGoogleAccess: true\n # Zonal NEG with GCE_VM_IP_PORT\n defaultNetworkEndpointGroup:\n type: gcp:compute:NetworkEndpointGroup\n name: default\n properties:\n name: default-neg\n network: ${default.id}\n defaultPort: '90'\n zone: us-central1-a\n networkEndpointType: GCE_VM_IP_PORT\n # Zonal NEG with GCE_VM_IP\n internalNetworkEndpointGroup:\n type: gcp:compute:NetworkEndpointGroup\n name: internal\n properties:\n name: internal-neg\n network: ${internal.id}\n subnetwork: ${internalSubnetwork.id}\n zone: us-central1-a\n networkEndpointType: GCE_VM_IP\n # Hybrid connectivity NEG\n hybrid:\n type: gcp:compute:NetworkEndpointGroup\n properties:\n name: hybrid-neg\n network: ${default.id}\n defaultPort: '90'\n zone: us-central1-a\n networkEndpointType: NON_GCP_PRIVATE_IP_PORT\n hybrid-endpoint:\n type: gcp:compute:NetworkEndpoint\n properties:\n networkEndpointGroup: ${hybrid.name}\n port: ${hybrid.defaultPort}\n ipAddress: 127.0.0.1\n # Backend service for Zonal NEG\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-default\n portName: http\n protocol: HTTP\n timeoutSec: 10\n backends:\n - group: ${defaultNetworkEndpointGroup.id}\n balancingMode: RATE\n maxRatePerEndpoint: 10\n healthChecks: ${defaultHealthCheck.id}\n # Backgend service for Hybrid NEG\n hybridBackendService:\n type: gcp:compute:BackendService\n name: hybrid\n properties:\n name: backend-hybrid\n portName: http\n protocol: HTTP\n timeoutSec: 10\n backends:\n - group: ${hybrid.id}\n balancingMode: RATE\n maxRatePerEndpoint: 10\n healthChecks: ${defaultHealthCheck.id}\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: health-check\n timeoutSec: 1\n checkIntervalSec: 1\n tcpHealthCheck:\n port: '80'\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map-target-proxy\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n - paths:\n - /hybrid\n service: ${hybridBackendService.id}\n defaultTargetHttpProxy:\n type: gcp:compute:TargetHttpProxy\n name: default\n properties:\n name: target-proxy\n description: a description\n urlMap: ${defaultURLMap.id}\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n name: global-rule\n target: ${defaultTargetHttpProxy.id}\n portRange: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Private Service Connect Google Apis\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n project: \"my-project-name\",\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst vpcSubnetwork = new gcp.compute.Subnetwork(\"vpc_subnetwork\", {\n project: network.project,\n name: \"my-subnetwork\",\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: network.id,\n privateIpGoogleAccess: true,\n});\nconst _default = new gcp.compute.GlobalAddress(\"default\", {\n project: network.project,\n name: \"global-psconnect-ip\",\n addressType: \"INTERNAL\",\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n network: network.id,\n address: \"100.100.100.106\",\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n project: network.project,\n name: \"globalrule\",\n target: \"all-apis\",\n network: network.id,\n ipAddress: _default.id,\n loadBalancingScheme: \"\",\n serviceDirectoryRegistrations: {\n namespace: \"sd-namespace\",\n serviceDirectoryRegion: \"europe-west3\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n project=\"my-project-name\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nvpc_subnetwork = gcp.compute.Subnetwork(\"vpc_subnetwork\",\n project=network.project,\n name=\"my-subnetwork\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=network.id,\n private_ip_google_access=True)\ndefault = gcp.compute.GlobalAddress(\"default\",\n project=network.project,\n name=\"global-psconnect-ip\",\n address_type=\"INTERNAL\",\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n network=network.id,\n address=\"100.100.100.106\")\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n project=network.project,\n name=\"globalrule\",\n target=\"all-apis\",\n network=network.id,\n ip_address=default.id,\n load_balancing_scheme=\"\",\n service_directory_registrations={\n \"namespace\": \"sd-namespace\",\n \"serviceDirectoryRegion\": \"europe-west3\",\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 = new Gcp.Compute.Network(\"network\", new()\n {\n Project = \"my-project-name\",\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var vpcSubnetwork = new Gcp.Compute.Subnetwork(\"vpc_subnetwork\", new()\n {\n Project = network.Project,\n Name = \"my-subnetwork\",\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = network.Id,\n PrivateIpGoogleAccess = true,\n });\n\n var @default = new Gcp.Compute.GlobalAddress(\"default\", new()\n {\n Project = network.Project,\n Name = \"global-psconnect-ip\",\n AddressType = \"INTERNAL\",\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n Network = network.Id,\n Address = \"100.100.100.106\",\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Project = network.Project,\n Name = \"globalrule\",\n Target = \"all-apis\",\n Network = network.Id,\n IpAddress = @default.Id,\n LoadBalancingScheme = \"\",\n ServiceDirectoryRegistrations = new Gcp.Compute.Inputs.GlobalForwardingRuleServiceDirectoryRegistrationsArgs\n {\n Namespace = \"sd-namespace\",\n ServiceDirectoryRegion = \"europe-west3\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"my-network\"),\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, \"vpc_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\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 = compute.NewGlobalAddress(ctx, \"default\", \u0026compute.GlobalAddressArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"global-psconnect-ip\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tAddress: pulumi.String(\"100.100.100.106\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"globalrule\"),\n\t\t\tTarget: pulumi.String(\"all-apis\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpAddress: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tServiceDirectoryRegistrations: \u0026compute.GlobalForwardingRuleServiceDirectoryRegistrationsArgs{\n\t\t\t\tNamespace: pulumi.String(\"sd-namespace\"),\n\t\t\t\tServiceDirectoryRegion: pulumi.String(\"europe-west3\"),\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.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport com.pulumi.gcp.compute.inputs.GlobalForwardingRuleServiceDirectoryRegistrationsArgs;\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 = new Network(\"network\", NetworkArgs.builder()\n .project(\"my-project-name\")\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var vpcSubnetwork = new Subnetwork(\"vpcSubnetwork\", SubnetworkArgs.builder()\n .project(network.project())\n .name(\"my-subnetwork\")\n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(network.id())\n .privateIpGoogleAccess(true)\n .build());\n\n var default_ = new GlobalAddress(\"default\", GlobalAddressArgs.builder()\n .project(network.project())\n .name(\"global-psconnect-ip\")\n .addressType(\"INTERNAL\")\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .network(network.id())\n .address(\"100.100.100.106\")\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .project(network.project())\n .name(\"globalrule\")\n .target(\"all-apis\")\n .network(network.id())\n .ipAddress(default_.id())\n .loadBalancingScheme(\"\")\n .serviceDirectoryRegistrations(GlobalForwardingRuleServiceDirectoryRegistrationsArgs.builder()\n .namespace(\"sd-namespace\")\n .serviceDirectoryRegion(\"europe-west3\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n project: my-project-name\n name: my-network\n autoCreateSubnetworks: false\n vpcSubnetwork:\n type: gcp:compute:Subnetwork\n name: vpc_subnetwork\n properties:\n project: ${network.project}\n name: my-subnetwork\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${network.id}\n privateIpGoogleAccess: true\n default:\n type: gcp:compute:GlobalAddress\n properties:\n project: ${network.project}\n name: global-psconnect-ip\n addressType: INTERNAL\n purpose: PRIVATE_SERVICE_CONNECT\n network: ${network.id}\n address: 100.100.100.106\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n project: ${network.project}\n name: globalrule\n target: all-apis\n network: ${network.id}\n ipAddress: ${default.id}\n loadBalancingScheme:\n serviceDirectoryRegistrations:\n namespace: sd-namespace\n serviceDirectoryRegion: europe-west3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Private Service Connect Google Apis No Automate Dns\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n project: \"my-project-name\",\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst vpcSubnetwork = new gcp.compute.Subnetwork(\"vpc_subnetwork\", {\n project: network.project,\n name: \"my-subnetwork\",\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: network.id,\n privateIpGoogleAccess: true,\n});\nconst _default = new gcp.compute.GlobalAddress(\"default\", {\n project: network.project,\n name: \"global-psconnect-ip\",\n addressType: \"INTERNAL\",\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n network: network.id,\n address: \"100.100.100.106\",\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n project: network.project,\n name: \"globalrule\",\n target: \"all-apis\",\n network: network.id,\n ipAddress: _default.id,\n loadBalancingScheme: \"\",\n noAutomateDnsZone: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n project=\"my-project-name\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nvpc_subnetwork = gcp.compute.Subnetwork(\"vpc_subnetwork\",\n project=network.project,\n name=\"my-subnetwork\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=network.id,\n private_ip_google_access=True)\ndefault = gcp.compute.GlobalAddress(\"default\",\n project=network.project,\n name=\"global-psconnect-ip\",\n address_type=\"INTERNAL\",\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n network=network.id,\n address=\"100.100.100.106\")\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n project=network.project,\n name=\"globalrule\",\n target=\"all-apis\",\n network=network.id,\n ip_address=default.id,\n load_balancing_scheme=\"\",\n no_automate_dns_zone=False)\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 = new Gcp.Compute.Network(\"network\", new()\n {\n Project = \"my-project-name\",\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var vpcSubnetwork = new Gcp.Compute.Subnetwork(\"vpc_subnetwork\", new()\n {\n Project = network.Project,\n Name = \"my-subnetwork\",\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = network.Id,\n PrivateIpGoogleAccess = true,\n });\n\n var @default = new Gcp.Compute.GlobalAddress(\"default\", new()\n {\n Project = network.Project,\n Name = \"global-psconnect-ip\",\n AddressType = \"INTERNAL\",\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n Network = network.Id,\n Address = \"100.100.100.106\",\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Project = network.Project,\n Name = \"globalrule\",\n Target = \"all-apis\",\n Network = network.Id,\n IpAddress = @default.Id,\n LoadBalancingScheme = \"\",\n NoAutomateDnsZone = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"my-network\"),\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, \"vpc_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\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 = compute.NewGlobalAddress(ctx, \"default\", \u0026compute.GlobalAddressArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"global-psconnect-ip\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tAddress: pulumi.String(\"100.100.100.106\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"globalrule\"),\n\t\t\tTarget: pulumi.String(\"all-apis\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpAddress: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNoAutomateDnsZone: pulumi.Bool(false),\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.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\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 = new Network(\"network\", NetworkArgs.builder()\n .project(\"my-project-name\")\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var vpcSubnetwork = new Subnetwork(\"vpcSubnetwork\", SubnetworkArgs.builder()\n .project(network.project())\n .name(\"my-subnetwork\")\n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(network.id())\n .privateIpGoogleAccess(true)\n .build());\n\n var default_ = new GlobalAddress(\"default\", GlobalAddressArgs.builder()\n .project(network.project())\n .name(\"global-psconnect-ip\")\n .addressType(\"INTERNAL\")\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .network(network.id())\n .address(\"100.100.100.106\")\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .project(network.project())\n .name(\"globalrule\")\n .target(\"all-apis\")\n .network(network.id())\n .ipAddress(default_.id())\n .loadBalancingScheme(\"\")\n .noAutomateDnsZone(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n project: my-project-name\n name: my-network\n autoCreateSubnetworks: false\n vpcSubnetwork:\n type: gcp:compute:Subnetwork\n name: vpc_subnetwork\n properties:\n project: ${network.project}\n name: my-subnetwork\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${network.id}\n privateIpGoogleAccess: true\n default:\n type: gcp:compute:GlobalAddress\n properties:\n project: ${network.project}\n name: global-psconnect-ip\n addressType: INTERNAL\n purpose: PRIVATE_SERVICE_CONNECT\n network: ${network.id}\n address: 100.100.100.106\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n project: ${network.project}\n name: globalrule\n target: all-apis\n network: ${network.id}\n ipAddress: ${default.id}\n loadBalancingScheme:\n noAutomateDnsZone: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGlobalForwardingRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/forwardingRules/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, GlobalForwardingRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/globalForwardingRule:GlobalForwardingRule default projects/{{project}}/global/forwardingRules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/globalForwardingRule:GlobalForwardingRule default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/globalForwardingRule:GlobalForwardingRule default {{name}}\n```\n\n", + "description": "Represents a GlobalForwardingRule resource. Global forwarding rules are\nused to forward traffic to the correct load balancer for HTTP load\nbalancing. Global forwarding rules can only be used for HTTP load\nbalancing.\n\nFor more information, see https://cloud.google.com/compute/docs/load-balancing/http/\n\n\n\n## Example Usage\n\n### Global Forwarding Rule Http\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"check-backend\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map-target-proxy\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpProxy = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"target-proxy\",\n description: \"a description\",\n urlMap: defaultURLMap.id,\n});\nconst _default = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"global-rule\",\n target: defaultTargetHttpProxy.id,\n portRange: \"80\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"check-backend\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map-target-proxy\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_http_proxy = gcp.compute.TargetHttpProxy(\"default\",\n name=\"target-proxy\",\n description=\"a description\",\n url_map=default_url_map.id)\ndefault = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"global-rule\",\n target=default_target_http_proxy.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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"check-backend\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map-target-proxy\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpProxy = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"target-proxy\",\n Description = \"a description\",\n UrlMap = defaultURLMap.Id,\n });\n\n var @default = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"global-rule\",\n Target = defaultTargetHttpProxy.Id,\n PortRange = \"80\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"check-backend\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map-target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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\tdefaultTargetHttpProxy, err := compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"global-rule\"),\n\t\t\tTarget: defaultTargetHttpProxy.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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"check-backend\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map-target-proxy\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpProxy = new TargetHttpProxy(\"defaultTargetHttpProxy\", TargetHttpProxyArgs.builder()\n .name(\"target-proxy\")\n .description(\"a description\")\n .urlMap(defaultURLMap.id())\n .build());\n\n var default_ = new GlobalForwardingRule(\"default\", GlobalForwardingRuleArgs.builder()\n .name(\"global-rule\")\n .target(defaultTargetHttpProxy.id())\n .portRange(\"80\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:GlobalForwardingRule\n properties:\n name: global-rule\n target: ${defaultTargetHttpProxy.id}\n portRange: '80'\n defaultTargetHttpProxy:\n type: gcp:compute:TargetHttpProxy\n name: default\n properties:\n name: target-proxy\n description: a description\n urlMap: ${defaultURLMap.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map-target-proxy\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: check-backend\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Global Forwarding Rule Internal\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst debianImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst instanceTemplate = new gcp.compute.InstanceTemplate(\"instance_template\", {\n name: \"template-backend\",\n machineType: \"e2-medium\",\n networkInterfaces: [{\n network: \"default\",\n }],\n disks: [{\n sourceImage: debianImage.then(debianImage =\u003e debianImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n});\nconst igm = new gcp.compute.InstanceGroupManager(\"igm\", {\n name: \"igm-internal\",\n versions: [{\n instanceTemplate: instanceTemplate.id,\n name: \"primary\",\n }],\n baseInstanceName: \"internal-glb\",\n zone: \"us-central1-f\",\n targetSize: 1,\n});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"check-backend\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n backends: [{\n group: igm.instanceGroup,\n balancingMode: \"RATE\",\n capacityScaler: 0.4,\n maxRatePerInstance: 50,\n }],\n healthChecks: defaultHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map-target-proxy\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpProxy = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"target-proxy\",\n description: \"a description\",\n urlMap: defaultURLMap.id,\n});\nconst _default = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"global-rule\",\n target: defaultTargetHttpProxy.id,\n portRange: \"80\",\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n ipAddress: \"0.0.0.0\",\n metadataFilters: [{\n filterMatchCriteria: \"MATCH_ANY\",\n filterLabels: [{\n name: \"PLANET\",\n value: \"MARS\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndebian_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ninstance_template = gcp.compute.InstanceTemplate(\"instance_template\",\n name=\"template-backend\",\n machine_type=\"e2-medium\",\n network_interfaces=[{\n \"network\": \"default\",\n }],\n disks=[{\n \"source_image\": debian_image.self_link,\n \"auto_delete\": True,\n \"boot\": True,\n }])\nigm = gcp.compute.InstanceGroupManager(\"igm\",\n name=\"igm-internal\",\n versions=[{\n \"instance_template\": instance_template.id,\n \"name\": \"primary\",\n }],\n base_instance_name=\"internal-glb\",\n zone=\"us-central1-f\",\n target_size=1)\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"check-backend\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n backends=[{\n \"group\": igm.instance_group,\n \"balancing_mode\": \"RATE\",\n \"capacity_scaler\": 0.4,\n \"max_rate_per_instance\": 50,\n }],\n health_checks=default_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map-target-proxy\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_http_proxy = gcp.compute.TargetHttpProxy(\"default\",\n name=\"target-proxy\",\n description=\"a description\",\n url_map=default_url_map.id)\ndefault = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"global-rule\",\n target=default_target_http_proxy.id,\n port_range=\"80\",\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n ip_address=\"0.0.0.0\",\n metadata_filters=[{\n \"filter_match_criteria\": \"MATCH_ANY\",\n \"filter_labels\": [{\n \"name\": \"PLANET\",\n \"value\": \"MARS\",\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 debianImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var instanceTemplate = new Gcp.Compute.InstanceTemplate(\"instance_template\", new()\n {\n Name = \"template-backend\",\n MachineType = \"e2-medium\",\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = debianImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n });\n\n var igm = new Gcp.Compute.InstanceGroupManager(\"igm\", new()\n {\n Name = \"igm-internal\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = instanceTemplate.Id,\n Name = \"primary\",\n },\n },\n BaseInstanceName = \"internal-glb\",\n Zone = \"us-central1-f\",\n TargetSize = 1,\n });\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"check-backend\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n Backends = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = igm.InstanceGroup,\n BalancingMode = \"RATE\",\n CapacityScaler = 0.4,\n MaxRatePerInstance = 50,\n },\n },\n HealthChecks = defaultHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map-target-proxy\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpProxy = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"target-proxy\",\n Description = \"a description\",\n UrlMap = defaultURLMap.Id,\n });\n\n var @default = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"global-rule\",\n Target = defaultTargetHttpProxy.Id,\n PortRange = \"80\",\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n IpAddress = \"0.0.0.0\",\n MetadataFilters = new[]\n {\n new Gcp.Compute.Inputs.GlobalForwardingRuleMetadataFilterArgs\n {\n FilterMatchCriteria = \"MATCH_ANY\",\n FilterLabels = new[]\n {\n new Gcp.Compute.Inputs.GlobalForwardingRuleMetadataFilterFilterLabelArgs\n {\n Name = \"PLANET\",\n Value = \"MARS\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdebianImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstanceTemplate, err := compute.NewInstanceTemplate(ctx, \"instance_template\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"template-backend\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(debianImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: 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\tigm, err := compute.NewInstanceGroupManager(ctx, \"igm\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"igm-internal\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: instanceTemplate.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"internal-glb\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tTargetSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"check-backend\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: igm.InstanceGroup,\n\t\t\t\t\tBalancingMode: pulumi.String(\"RATE\"),\n\t\t\t\t\tCapacityScaler: pulumi.Float64(0.4),\n\t\t\t\t\tMaxRatePerInstance: pulumi.Float64(50),\n\t\t\t\t},\n\t\t\t},\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map-target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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\tdefaultTargetHttpProxy, err := compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"global-rule\"),\n\t\t\tTarget: defaultTargetHttpProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tIpAddress: pulumi.String(\"0.0.0.0\"),\n\t\t\tMetadataFilters: compute.GlobalForwardingRuleMetadataFilterArray{\n\t\t\t\t\u0026compute.GlobalForwardingRuleMetadataFilterArgs{\n\t\t\t\t\tFilterMatchCriteria: pulumi.String(\"MATCH_ANY\"),\n\t\t\t\t\tFilterLabels: compute.GlobalForwardingRuleMetadataFilterFilterLabelArray{\n\t\t\t\t\t\t\u0026compute.GlobalForwardingRuleMetadataFilterFilterLabelArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"PLANET\"),\n\t\t\t\t\t\t\tValue: pulumi.String(\"MARS\"),\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.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport com.pulumi.gcp.compute.inputs.GlobalForwardingRuleMetadataFilterArgs;\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 instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"template-backend\")\n .machineType(\"e2-medium\")\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(debianImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .build());\n\n var igm = new InstanceGroupManager(\"igm\", InstanceGroupManagerArgs.builder()\n .name(\"igm-internal\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(instanceTemplate.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"internal-glb\")\n .zone(\"us-central1-f\")\n .targetSize(1)\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"check-backend\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .backends(BackendServiceBackendArgs.builder()\n .group(igm.instanceGroup())\n .balancingMode(\"RATE\")\n .capacityScaler(0.4)\n .maxRatePerInstance(50)\n .build())\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map-target-proxy\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpProxy = new TargetHttpProxy(\"defaultTargetHttpProxy\", TargetHttpProxyArgs.builder()\n .name(\"target-proxy\")\n .description(\"a description\")\n .urlMap(defaultURLMap.id())\n .build());\n\n var default_ = new GlobalForwardingRule(\"default\", GlobalForwardingRuleArgs.builder()\n .name(\"global-rule\")\n .target(defaultTargetHttpProxy.id())\n .portRange(\"80\")\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .ipAddress(\"0.0.0.0\")\n .metadataFilters(GlobalForwardingRuleMetadataFilterArgs.builder()\n .filterMatchCriteria(\"MATCH_ANY\")\n .filterLabels(GlobalForwardingRuleMetadataFilterFilterLabelArgs.builder()\n .name(\"PLANET\")\n .value(\"MARS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:GlobalForwardingRule\n properties:\n name: global-rule\n target: ${defaultTargetHttpProxy.id}\n portRange: '80'\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n ipAddress: 0.0.0.0\n metadataFilters:\n - filterMatchCriteria: MATCH_ANY\n filterLabels:\n - name: PLANET\n value: MARS\n defaultTargetHttpProxy:\n type: gcp:compute:TargetHttpProxy\n name: default\n properties:\n name: target-proxy\n description: a description\n urlMap: ${defaultURLMap.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map-target-proxy\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n backends:\n - group: ${igm.instanceGroup}\n balancingMode: RATE\n capacityScaler: 0.4\n maxRatePerInstance: 50\n healthChecks: ${defaultHealthCheck.id}\n igm:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: igm-internal\n versions:\n - instanceTemplate: ${instanceTemplate.id}\n name: primary\n baseInstanceName: internal-glb\n zone: us-central1-f\n targetSize: 1\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: instance_template\n properties:\n name: template-backend\n machineType: e2-medium\n networkInterfaces:\n - network: default\n disks:\n - sourceImage: ${debianImage.selfLink}\n autoDelete: true\n boot: true\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: check-backend\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\nvariables:\n debianImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Global Forwarding Rule External Managed\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map-target-proxy\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpProxy = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"target-proxy\",\n description: \"a description\",\n urlMap: defaultURLMap.id,\n});\nconst _default = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"global-rule\",\n target: defaultTargetHttpProxy.id,\n portRange: \"80\",\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\")\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map-target-proxy\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_http_proxy = gcp.compute.TargetHttpProxy(\"default\",\n name=\"target-proxy\",\n description=\"a description\",\n url_map=default_url_map.id)\ndefault = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"global-rule\",\n target=default_target_http_proxy.id,\n port_range=\"80\",\n load_balancing_scheme=\"EXTERNAL_MANAGED\")\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 defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map-target-proxy\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpProxy = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"target-proxy\",\n Description = \"a description\",\n UrlMap = defaultURLMap.Id,\n });\n\n var @default = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"global-rule\",\n Target = defaultTargetHttpProxy.Id,\n PortRange = \"80\",\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map-target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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\tdefaultTargetHttpProxy, err := compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"global-rule\"),\n\t\t\tTarget: defaultTargetHttpProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\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.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\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 defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map-target-proxy\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpProxy = new TargetHttpProxy(\"defaultTargetHttpProxy\", TargetHttpProxyArgs.builder()\n .name(\"target-proxy\")\n .description(\"a description\")\n .urlMap(defaultURLMap.id())\n .build());\n\n var default_ = new GlobalForwardingRule(\"default\", GlobalForwardingRuleArgs.builder()\n .name(\"global-rule\")\n .target(defaultTargetHttpProxy.id())\n .portRange(\"80\")\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:GlobalForwardingRule\n properties:\n name: global-rule\n target: ${defaultTargetHttpProxy.id}\n portRange: '80'\n loadBalancingScheme: EXTERNAL_MANAGED\n defaultTargetHttpProxy:\n type: gcp:compute:TargetHttpProxy\n name: default\n properties:\n name: target-proxy\n description: a description\n urlMap: ${defaultURLMap.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map-target-proxy\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Global Forwarding Rule Hybrid\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst config = new pulumi.Config();\nconst subnetworkCidr = config.get(\"subnetworkCidr\") || \"10.0.0.0/24\";\nconst _default = new gcp.compute.Network(\"default\", {name: \"my-network\"});\nconst internal = new gcp.compute.Network(\"internal\", {\n name: \"my-internal-network\",\n autoCreateSubnetworks: false,\n});\nconst internalSubnetwork = new gcp.compute.Subnetwork(\"internal\", {\n name: \"my-subnetwork\",\n network: internal.id,\n ipCidrRange: subnetworkCidr,\n region: \"us-central1\",\n privateIpGoogleAccess: true,\n});\n// Zonal NEG with GCE_VM_IP_PORT\nconst defaultNetworkEndpointGroup = new gcp.compute.NetworkEndpointGroup(\"default\", {\n name: \"default-neg\",\n network: _default.id,\n defaultPort: 90,\n zone: \"us-central1-a\",\n networkEndpointType: \"GCE_VM_IP_PORT\",\n});\n// Zonal NEG with GCE_VM_IP\nconst internalNetworkEndpointGroup = new gcp.compute.NetworkEndpointGroup(\"internal\", {\n name: \"internal-neg\",\n network: internal.id,\n subnetwork: internalSubnetwork.id,\n zone: \"us-central1-a\",\n networkEndpointType: \"GCE_VM_IP\",\n});\n// Hybrid connectivity NEG\nconst hybrid = new gcp.compute.NetworkEndpointGroup(\"hybrid\", {\n name: \"hybrid-neg\",\n network: _default.id,\n defaultPort: 90,\n zone: \"us-central1-a\",\n networkEndpointType: \"NON_GCP_PRIVATE_IP_PORT\",\n});\nconst hybrid_endpoint = new gcp.compute.NetworkEndpoint(\"hybrid-endpoint\", {\n networkEndpointGroup: hybrid.name,\n port: hybrid.defaultPort,\n ipAddress: \"127.0.0.1\",\n});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\n// Backend service for Zonal NEG\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-default\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n backends: [{\n group: defaultNetworkEndpointGroup.id,\n balancingMode: \"RATE\",\n maxRatePerEndpoint: 10,\n }],\n healthChecks: defaultHealthCheck.id,\n});\n// Backgend service for Hybrid NEG\nconst hybridBackendService = new gcp.compute.BackendService(\"hybrid\", {\n name: \"backend-hybrid\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n backends: [{\n group: hybrid.id,\n balancingMode: \"RATE\",\n maxRatePerEndpoint: 10,\n }],\n healthChecks: defaultHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map-target-proxy\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [\n {\n paths: [\"/*\"],\n service: defaultBackendService.id,\n },\n {\n paths: [\"/hybrid\"],\n service: hybridBackendService.id,\n },\n ],\n }],\n});\nconst defaultTargetHttpProxy = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"target-proxy\",\n description: \"a description\",\n urlMap: defaultURLMap.id,\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"global-rule\",\n target: defaultTargetHttpProxy.id,\n portRange: \"80\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconfig = pulumi.Config()\nsubnetwork_cidr = config.get(\"subnetworkCidr\")\nif subnetwork_cidr is None:\n subnetwork_cidr = \"10.0.0.0/24\"\ndefault = gcp.compute.Network(\"default\", name=\"my-network\")\ninternal = gcp.compute.Network(\"internal\",\n name=\"my-internal-network\",\n auto_create_subnetworks=False)\ninternal_subnetwork = gcp.compute.Subnetwork(\"internal\",\n name=\"my-subnetwork\",\n network=internal.id,\n ip_cidr_range=subnetwork_cidr,\n region=\"us-central1\",\n private_ip_google_access=True)\n# Zonal NEG with GCE_VM_IP_PORT\ndefault_network_endpoint_group = gcp.compute.NetworkEndpointGroup(\"default\",\n name=\"default-neg\",\n network=default.id,\n default_port=90,\n zone=\"us-central1-a\",\n network_endpoint_type=\"GCE_VM_IP_PORT\")\n# Zonal NEG with GCE_VM_IP\ninternal_network_endpoint_group = gcp.compute.NetworkEndpointGroup(\"internal\",\n name=\"internal-neg\",\n network=internal.id,\n subnetwork=internal_subnetwork.id,\n zone=\"us-central1-a\",\n network_endpoint_type=\"GCE_VM_IP\")\n# Hybrid connectivity NEG\nhybrid = gcp.compute.NetworkEndpointGroup(\"hybrid\",\n name=\"hybrid-neg\",\n network=default.id,\n default_port=90,\n zone=\"us-central1-a\",\n network_endpoint_type=\"NON_GCP_PRIVATE_IP_PORT\")\nhybrid_endpoint = gcp.compute.NetworkEndpoint(\"hybrid-endpoint\",\n network_endpoint_group=hybrid.name,\n port=hybrid.default_port,\n ip_address=\"127.0.0.1\")\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\n# Backend service for Zonal NEG\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-default\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n backends=[{\n \"group\": default_network_endpoint_group.id,\n \"balancing_mode\": \"RATE\",\n \"max_rate_per_endpoint\": 10,\n }],\n health_checks=default_health_check.id)\n# Backgend service for Hybrid NEG\nhybrid_backend_service = gcp.compute.BackendService(\"hybrid\",\n name=\"backend-hybrid\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n backends=[{\n \"group\": hybrid.id,\n \"balancing_mode\": \"RATE\",\n \"max_rate_per_endpoint\": 10,\n }],\n health_checks=default_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map-target-proxy\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [\n {\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n },\n {\n \"paths\": [\"/hybrid\"],\n \"service\": hybrid_backend_service.id,\n },\n ],\n }])\ndefault_target_http_proxy = gcp.compute.TargetHttpProxy(\"default\",\n name=\"target-proxy\",\n description=\"a description\",\n url_map=default_url_map.id)\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"global-rule\",\n target=default_target_http_proxy.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 config = new Config();\n var subnetworkCidr = config.Get(\"subnetworkCidr\") ?? \"10.0.0.0/24\";\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n });\n\n var @internal = new Gcp.Compute.Network(\"internal\", new()\n {\n Name = \"my-internal-network\",\n AutoCreateSubnetworks = false,\n });\n\n var internalSubnetwork = new Gcp.Compute.Subnetwork(\"internal\", new()\n {\n Name = \"my-subnetwork\",\n Network = @internal.Id,\n IpCidrRange = subnetworkCidr,\n Region = \"us-central1\",\n PrivateIpGoogleAccess = true,\n });\n\n // Zonal NEG with GCE_VM_IP_PORT\n var defaultNetworkEndpointGroup = new Gcp.Compute.NetworkEndpointGroup(\"default\", new()\n {\n Name = \"default-neg\",\n Network = @default.Id,\n DefaultPort = 90,\n Zone = \"us-central1-a\",\n NetworkEndpointType = \"GCE_VM_IP_PORT\",\n });\n\n // Zonal NEG with GCE_VM_IP\n var internalNetworkEndpointGroup = new Gcp.Compute.NetworkEndpointGroup(\"internal\", new()\n {\n Name = \"internal-neg\",\n Network = @internal.Id,\n Subnetwork = internalSubnetwork.Id,\n Zone = \"us-central1-a\",\n NetworkEndpointType = \"GCE_VM_IP\",\n });\n\n // Hybrid connectivity NEG\n var hybrid = new Gcp.Compute.NetworkEndpointGroup(\"hybrid\", new()\n {\n Name = \"hybrid-neg\",\n Network = @default.Id,\n DefaultPort = 90,\n Zone = \"us-central1-a\",\n NetworkEndpointType = \"NON_GCP_PRIVATE_IP_PORT\",\n });\n\n var hybrid_endpoint = new Gcp.Compute.NetworkEndpoint(\"hybrid-endpoint\", new()\n {\n NetworkEndpointGroup = hybrid.Name,\n Port = hybrid.DefaultPort,\n IpAddress = \"127.0.0.1\",\n });\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n // Backend service for Zonal NEG\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-default\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n Backends = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = defaultNetworkEndpointGroup.Id,\n BalancingMode = \"RATE\",\n MaxRatePerEndpoint = 10,\n },\n },\n HealthChecks = defaultHealthCheck.Id,\n });\n\n // Backgend service for Hybrid NEG\n var hybridBackendService = new Gcp.Compute.BackendService(\"hybrid\", new()\n {\n Name = \"backend-hybrid\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n Backends = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = hybrid.Id,\n BalancingMode = \"RATE\",\n MaxRatePerEndpoint = 10,\n },\n },\n HealthChecks = defaultHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map-target-proxy\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/hybrid\",\n },\n Service = hybridBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpProxy = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"target-proxy\",\n Description = \"a description\",\n UrlMap = defaultURLMap.Id,\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"global-rule\",\n Target = defaultTargetHttpProxy.Id,\n PortRange = \"80\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tsubnetworkCidr := \"10.0.0.0/24\"\n\t\tif param := cfg.Get(\"subnetworkCidr\"); param != \"\" {\n\t\t\tsubnetworkCidr = param\n\t\t}\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinternal, err := compute.NewNetwork(ctx, \"internal\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-internal-network\"),\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\tinternalSubnetwork, err := compute.NewSubnetwork(ctx, \"internal\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tNetwork: internal.ID(),\n\t\t\tIpCidrRange: pulumi.String(subnetworkCidr),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\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// Zonal NEG with GCE_VM_IP_PORT\n\t\tdefaultNetworkEndpointGroup, err := compute.NewNetworkEndpointGroup(ctx, \"default\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"default-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tDefaultPort: pulumi.Int(90),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"GCE_VM_IP_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Zonal NEG with GCE_VM_IP\n\t\t_, err = compute.NewNetworkEndpointGroup(ctx, \"internal\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"internal-neg\"),\n\t\t\tNetwork: internal.ID(),\n\t\t\tSubnetwork: internalSubnetwork.ID(),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"GCE_VM_IP\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Hybrid connectivity NEG\n\t\thybrid, err := compute.NewNetworkEndpointGroup(ctx, \"hybrid\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"hybrid-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tDefaultPort: pulumi.Int(90),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"NON_GCP_PRIVATE_IP_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkEndpoint(ctx, \"hybrid-endpoint\", \u0026compute.NetworkEndpointArgs{\n\t\t\tNetworkEndpointGroup: hybrid.Name,\n\t\t\tPort: hybrid.DefaultPort,\n\t\t\tIpAddress: pulumi.String(\"127.0.0.1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Backend service for Zonal NEG\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-default\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: defaultNetworkEndpointGroup.ID(),\n\t\t\t\t\tBalancingMode: pulumi.String(\"RATE\"),\n\t\t\t\t\tMaxRatePerEndpoint: pulumi.Float64(10),\n\t\t\t\t},\n\t\t\t},\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Backgend service for Hybrid NEG\n\t\thybridBackendService, err := compute.NewBackendService(ctx, \"hybrid\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-hybrid\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: hybrid.ID(),\n\t\t\t\t\tBalancingMode: pulumi.String(\"RATE\"),\n\t\t\t\t\tMaxRatePerEndpoint: pulumi.Float64(10),\n\t\t\t\t},\n\t\t\t},\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map-target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/hybrid\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: hybridBackendService.ID(),\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\tdefaultTargetHttpProxy, err := compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"global-rule\"),\n\t\t\tTarget: defaultTargetHttpProxy.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.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.NetworkEndpointGroup;\nimport com.pulumi.gcp.compute.NetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.NetworkEndpoint;\nimport com.pulumi.gcp.compute.NetworkEndpointArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\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 config = ctx.config();\n final var subnetworkCidr = config.get(\"subnetworkCidr\").orElse(\"10.0.0.0/24\");\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"my-network\")\n .build());\n\n var internal = new Network(\"internal\", NetworkArgs.builder()\n .name(\"my-internal-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var internalSubnetwork = new Subnetwork(\"internalSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\n .network(internal.id())\n .ipCidrRange(subnetworkCidr)\n .region(\"us-central1\")\n .privateIpGoogleAccess(true)\n .build());\n\n // Zonal NEG with GCE_VM_IP_PORT\n var defaultNetworkEndpointGroup = new NetworkEndpointGroup(\"defaultNetworkEndpointGroup\", NetworkEndpointGroupArgs.builder()\n .name(\"default-neg\")\n .network(default_.id())\n .defaultPort(\"90\")\n .zone(\"us-central1-a\")\n .networkEndpointType(\"GCE_VM_IP_PORT\")\n .build());\n\n // Zonal NEG with GCE_VM_IP\n var internalNetworkEndpointGroup = new NetworkEndpointGroup(\"internalNetworkEndpointGroup\", NetworkEndpointGroupArgs.builder()\n .name(\"internal-neg\")\n .network(internal.id())\n .subnetwork(internalSubnetwork.id())\n .zone(\"us-central1-a\")\n .networkEndpointType(\"GCE_VM_IP\")\n .build());\n\n // Hybrid connectivity NEG\n var hybrid = new NetworkEndpointGroup(\"hybrid\", NetworkEndpointGroupArgs.builder()\n .name(\"hybrid-neg\")\n .network(default_.id())\n .defaultPort(\"90\")\n .zone(\"us-central1-a\")\n .networkEndpointType(\"NON_GCP_PRIVATE_IP_PORT\")\n .build());\n\n var hybrid_endpoint = new NetworkEndpoint(\"hybrid-endpoint\", NetworkEndpointArgs.builder()\n .networkEndpointGroup(hybrid.name())\n .port(hybrid.defaultPort())\n .ipAddress(\"127.0.0.1\")\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n // Backend service for Zonal NEG\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-default\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .backends(BackendServiceBackendArgs.builder()\n .group(defaultNetworkEndpointGroup.id())\n .balancingMode(\"RATE\")\n .maxRatePerEndpoint(10)\n .build())\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n // Backgend service for Hybrid NEG\n var hybridBackendService = new BackendService(\"hybridBackendService\", BackendServiceArgs.builder()\n .name(\"backend-hybrid\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .backends(BackendServiceBackendArgs.builder()\n .group(hybrid.id())\n .balancingMode(\"RATE\")\n .maxRatePerEndpoint(10)\n .build())\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map-target-proxy\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules( \n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build(),\n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/hybrid\")\n .service(hybridBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpProxy = new TargetHttpProxy(\"defaultTargetHttpProxy\", TargetHttpProxyArgs.builder()\n .name(\"target-proxy\")\n .description(\"a description\")\n .urlMap(defaultURLMap.id())\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .name(\"global-rule\")\n .target(defaultTargetHttpProxy.id())\n .portRange(\"80\")\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n # Roughly mirrors https://cloud.google.com/load-balancing/docs/https/setting-up-ext-https-hybrid\n subnetworkCidr:\n type: string\n default: 10.0.0.0/24\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n internal:\n type: gcp:compute:Network\n properties:\n name: my-internal-network\n autoCreateSubnetworks: false\n internalSubnetwork:\n type: gcp:compute:Subnetwork\n name: internal\n properties:\n name: my-subnetwork\n network: ${internal.id}\n ipCidrRange: ${subnetworkCidr}\n region: us-central1\n privateIpGoogleAccess: true\n # Zonal NEG with GCE_VM_IP_PORT\n defaultNetworkEndpointGroup:\n type: gcp:compute:NetworkEndpointGroup\n name: default\n properties:\n name: default-neg\n network: ${default.id}\n defaultPort: '90'\n zone: us-central1-a\n networkEndpointType: GCE_VM_IP_PORT\n # Zonal NEG with GCE_VM_IP\n internalNetworkEndpointGroup:\n type: gcp:compute:NetworkEndpointGroup\n name: internal\n properties:\n name: internal-neg\n network: ${internal.id}\n subnetwork: ${internalSubnetwork.id}\n zone: us-central1-a\n networkEndpointType: GCE_VM_IP\n # Hybrid connectivity NEG\n hybrid:\n type: gcp:compute:NetworkEndpointGroup\n properties:\n name: hybrid-neg\n network: ${default.id}\n defaultPort: '90'\n zone: us-central1-a\n networkEndpointType: NON_GCP_PRIVATE_IP_PORT\n hybrid-endpoint:\n type: gcp:compute:NetworkEndpoint\n properties:\n networkEndpointGroup: ${hybrid.name}\n port: ${hybrid.defaultPort}\n ipAddress: 127.0.0.1\n # Backend service for Zonal NEG\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-default\n portName: http\n protocol: HTTP\n timeoutSec: 10\n backends:\n - group: ${defaultNetworkEndpointGroup.id}\n balancingMode: RATE\n maxRatePerEndpoint: 10\n healthChecks: ${defaultHealthCheck.id}\n # Backgend service for Hybrid NEG\n hybridBackendService:\n type: gcp:compute:BackendService\n name: hybrid\n properties:\n name: backend-hybrid\n portName: http\n protocol: HTTP\n timeoutSec: 10\n backends:\n - group: ${hybrid.id}\n balancingMode: RATE\n maxRatePerEndpoint: 10\n healthChecks: ${defaultHealthCheck.id}\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: health-check\n timeoutSec: 1\n checkIntervalSec: 1\n tcpHealthCheck:\n port: '80'\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map-target-proxy\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n - paths:\n - /hybrid\n service: ${hybridBackendService.id}\n defaultTargetHttpProxy:\n type: gcp:compute:TargetHttpProxy\n name: default\n properties:\n name: target-proxy\n description: a description\n urlMap: ${defaultURLMap.id}\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n name: global-rule\n target: ${defaultTargetHttpProxy.id}\n portRange: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Private Service Connect Google Apis\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n project: \"my-project-name\",\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst vpcSubnetwork = new gcp.compute.Subnetwork(\"vpc_subnetwork\", {\n project: network.project,\n name: \"my-subnetwork\",\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: network.id,\n privateIpGoogleAccess: true,\n});\nconst _default = new gcp.compute.GlobalAddress(\"default\", {\n project: network.project,\n name: \"global-psconnect-ip\",\n addressType: \"INTERNAL\",\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n network: network.id,\n address: \"100.100.100.106\",\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n project: network.project,\n name: \"globalrule\",\n target: \"all-apis\",\n network: network.id,\n ipAddress: _default.id,\n loadBalancingScheme: \"\",\n serviceDirectoryRegistrations: {\n namespace: \"sd-namespace\",\n serviceDirectoryRegion: \"europe-west3\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n project=\"my-project-name\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nvpc_subnetwork = gcp.compute.Subnetwork(\"vpc_subnetwork\",\n project=network.project,\n name=\"my-subnetwork\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=network.id,\n private_ip_google_access=True)\ndefault = gcp.compute.GlobalAddress(\"default\",\n project=network.project,\n name=\"global-psconnect-ip\",\n address_type=\"INTERNAL\",\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n network=network.id,\n address=\"100.100.100.106\")\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n project=network.project,\n name=\"globalrule\",\n target=\"all-apis\",\n network=network.id,\n ip_address=default.id,\n load_balancing_scheme=\"\",\n service_directory_registrations={\n \"namespace\": \"sd-namespace\",\n \"service_directory_region\": \"europe-west3\",\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 = new Gcp.Compute.Network(\"network\", new()\n {\n Project = \"my-project-name\",\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var vpcSubnetwork = new Gcp.Compute.Subnetwork(\"vpc_subnetwork\", new()\n {\n Project = network.Project,\n Name = \"my-subnetwork\",\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = network.Id,\n PrivateIpGoogleAccess = true,\n });\n\n var @default = new Gcp.Compute.GlobalAddress(\"default\", new()\n {\n Project = network.Project,\n Name = \"global-psconnect-ip\",\n AddressType = \"INTERNAL\",\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n Network = network.Id,\n Address = \"100.100.100.106\",\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Project = network.Project,\n Name = \"globalrule\",\n Target = \"all-apis\",\n Network = network.Id,\n IpAddress = @default.Id,\n LoadBalancingScheme = \"\",\n ServiceDirectoryRegistrations = new Gcp.Compute.Inputs.GlobalForwardingRuleServiceDirectoryRegistrationsArgs\n {\n Namespace = \"sd-namespace\",\n ServiceDirectoryRegion = \"europe-west3\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"my-network\"),\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, \"vpc_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\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 = compute.NewGlobalAddress(ctx, \"default\", \u0026compute.GlobalAddressArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"global-psconnect-ip\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tAddress: pulumi.String(\"100.100.100.106\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"globalrule\"),\n\t\t\tTarget: pulumi.String(\"all-apis\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpAddress: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tServiceDirectoryRegistrations: \u0026compute.GlobalForwardingRuleServiceDirectoryRegistrationsArgs{\n\t\t\t\tNamespace: pulumi.String(\"sd-namespace\"),\n\t\t\t\tServiceDirectoryRegion: pulumi.String(\"europe-west3\"),\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.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport com.pulumi.gcp.compute.inputs.GlobalForwardingRuleServiceDirectoryRegistrationsArgs;\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 = new Network(\"network\", NetworkArgs.builder()\n .project(\"my-project-name\")\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var vpcSubnetwork = new Subnetwork(\"vpcSubnetwork\", SubnetworkArgs.builder()\n .project(network.project())\n .name(\"my-subnetwork\")\n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(network.id())\n .privateIpGoogleAccess(true)\n .build());\n\n var default_ = new GlobalAddress(\"default\", GlobalAddressArgs.builder()\n .project(network.project())\n .name(\"global-psconnect-ip\")\n .addressType(\"INTERNAL\")\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .network(network.id())\n .address(\"100.100.100.106\")\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .project(network.project())\n .name(\"globalrule\")\n .target(\"all-apis\")\n .network(network.id())\n .ipAddress(default_.id())\n .loadBalancingScheme(\"\")\n .serviceDirectoryRegistrations(GlobalForwardingRuleServiceDirectoryRegistrationsArgs.builder()\n .namespace(\"sd-namespace\")\n .serviceDirectoryRegion(\"europe-west3\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n project: my-project-name\n name: my-network\n autoCreateSubnetworks: false\n vpcSubnetwork:\n type: gcp:compute:Subnetwork\n name: vpc_subnetwork\n properties:\n project: ${network.project}\n name: my-subnetwork\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${network.id}\n privateIpGoogleAccess: true\n default:\n type: gcp:compute:GlobalAddress\n properties:\n project: ${network.project}\n name: global-psconnect-ip\n addressType: INTERNAL\n purpose: PRIVATE_SERVICE_CONNECT\n network: ${network.id}\n address: 100.100.100.106\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n project: ${network.project}\n name: globalrule\n target: all-apis\n network: ${network.id}\n ipAddress: ${default.id}\n loadBalancingScheme:\n serviceDirectoryRegistrations:\n namespace: sd-namespace\n serviceDirectoryRegion: europe-west3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Private Service Connect Google Apis No Automate Dns\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n project: \"my-project-name\",\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst vpcSubnetwork = new gcp.compute.Subnetwork(\"vpc_subnetwork\", {\n project: network.project,\n name: \"my-subnetwork\",\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: network.id,\n privateIpGoogleAccess: true,\n});\nconst _default = new gcp.compute.GlobalAddress(\"default\", {\n project: network.project,\n name: \"global-psconnect-ip\",\n addressType: \"INTERNAL\",\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n network: network.id,\n address: \"100.100.100.106\",\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n project: network.project,\n name: \"globalrule\",\n target: \"all-apis\",\n network: network.id,\n ipAddress: _default.id,\n loadBalancingScheme: \"\",\n noAutomateDnsZone: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n project=\"my-project-name\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nvpc_subnetwork = gcp.compute.Subnetwork(\"vpc_subnetwork\",\n project=network.project,\n name=\"my-subnetwork\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=network.id,\n private_ip_google_access=True)\ndefault = gcp.compute.GlobalAddress(\"default\",\n project=network.project,\n name=\"global-psconnect-ip\",\n address_type=\"INTERNAL\",\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n network=network.id,\n address=\"100.100.100.106\")\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n project=network.project,\n name=\"globalrule\",\n target=\"all-apis\",\n network=network.id,\n ip_address=default.id,\n load_balancing_scheme=\"\",\n no_automate_dns_zone=False)\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 = new Gcp.Compute.Network(\"network\", new()\n {\n Project = \"my-project-name\",\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var vpcSubnetwork = new Gcp.Compute.Subnetwork(\"vpc_subnetwork\", new()\n {\n Project = network.Project,\n Name = \"my-subnetwork\",\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = network.Id,\n PrivateIpGoogleAccess = true,\n });\n\n var @default = new Gcp.Compute.GlobalAddress(\"default\", new()\n {\n Project = network.Project,\n Name = \"global-psconnect-ip\",\n AddressType = \"INTERNAL\",\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n Network = network.Id,\n Address = \"100.100.100.106\",\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Project = network.Project,\n Name = \"globalrule\",\n Target = \"all-apis\",\n Network = network.Id,\n IpAddress = @default.Id,\n LoadBalancingScheme = \"\",\n NoAutomateDnsZone = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"my-network\"),\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, \"vpc_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\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 = compute.NewGlobalAddress(ctx, \"default\", \u0026compute.GlobalAddressArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"global-psconnect-ip\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tAddress: pulumi.String(\"100.100.100.106\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"globalrule\"),\n\t\t\tTarget: pulumi.String(\"all-apis\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpAddress: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNoAutomateDnsZone: pulumi.Bool(false),\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.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\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 = new Network(\"network\", NetworkArgs.builder()\n .project(\"my-project-name\")\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var vpcSubnetwork = new Subnetwork(\"vpcSubnetwork\", SubnetworkArgs.builder()\n .project(network.project())\n .name(\"my-subnetwork\")\n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(network.id())\n .privateIpGoogleAccess(true)\n .build());\n\n var default_ = new GlobalAddress(\"default\", GlobalAddressArgs.builder()\n .project(network.project())\n .name(\"global-psconnect-ip\")\n .addressType(\"INTERNAL\")\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .network(network.id())\n .address(\"100.100.100.106\")\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .project(network.project())\n .name(\"globalrule\")\n .target(\"all-apis\")\n .network(network.id())\n .ipAddress(default_.id())\n .loadBalancingScheme(\"\")\n .noAutomateDnsZone(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n project: my-project-name\n name: my-network\n autoCreateSubnetworks: false\n vpcSubnetwork:\n type: gcp:compute:Subnetwork\n name: vpc_subnetwork\n properties:\n project: ${network.project}\n name: my-subnetwork\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${network.id}\n privateIpGoogleAccess: true\n default:\n type: gcp:compute:GlobalAddress\n properties:\n project: ${network.project}\n name: global-psconnect-ip\n addressType: INTERNAL\n purpose: PRIVATE_SERVICE_CONNECT\n network: ${network.id}\n address: 100.100.100.106\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n project: ${network.project}\n name: globalrule\n target: all-apis\n network: ${network.id}\n ipAddress: ${default.id}\n loadBalancingScheme:\n noAutomateDnsZone: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGlobalForwardingRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/forwardingRules/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, GlobalForwardingRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/globalForwardingRule:GlobalForwardingRule default projects/{{project}}/global/forwardingRules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/globalForwardingRule:GlobalForwardingRule default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/globalForwardingRule:GlobalForwardingRule default {{name}}\n```\n\n", "properties": { "allowPscGlobalAccess": { "type": "boolean", @@ -146094,7 +146094,7 @@ } }, "gcp:compute/haVpnGateway:HaVpnGateway": { - "description": "Represents a VPN gateway running in GCP. This virtual device is managed\nby Google, but used only by you. This type of VPN Gateway allows for the creation\nof VPN solutions with higher availability than classic Target VPN Gateways.\n\n\nTo get more information about HaVpnGateway, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/vpnGateways)\n* How-to Guides\n * [Choosing a VPN](https://cloud.google.com/vpn/docs/how-to/choosing-a-vpn)\n * [Cloud VPN Overview](https://cloud.google.com/vpn/docs/concepts/overview)\n\n## Example Usage\n\n### Ha Vpn Gateway Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network1 = new gcp.compute.Network(\"network1\", {\n name: \"network1\",\n autoCreateSubnetworks: false,\n});\nconst haGateway1 = new gcp.compute.HaVpnGateway(\"ha_gateway1\", {\n region: \"us-central1\",\n name: \"ha-vpn-1\",\n network: network1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork1 = gcp.compute.Network(\"network1\",\n name=\"network1\",\n auto_create_subnetworks=False)\nha_gateway1 = gcp.compute.HaVpnGateway(\"ha_gateway1\",\n region=\"us-central1\",\n name=\"ha-vpn-1\",\n network=network1.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 network1 = new Gcp.Compute.Network(\"network1\", new()\n {\n Name = \"network1\",\n AutoCreateSubnetworks = false,\n });\n\n var haGateway1 = new Gcp.Compute.HaVpnGateway(\"ha_gateway1\", new()\n {\n Region = \"us-central1\",\n Name = \"ha-vpn-1\",\n Network = network1.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnetwork1, err := compute.NewNetwork(ctx, \"network1\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network1\"),\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.NewHaVpnGateway(ctx, \"ha_gateway1\", \u0026compute.HaVpnGatewayArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"ha-vpn-1\"),\n\t\t\tNetwork: network1.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.HaVpnGateway;\nimport com.pulumi.gcp.compute.HaVpnGatewayArgs;\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 network1 = new Network(\"network1\", NetworkArgs.builder()\n .name(\"network1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var haGateway1 = new HaVpnGateway(\"haGateway1\", HaVpnGatewayArgs.builder()\n .region(\"us-central1\")\n .name(\"ha-vpn-1\")\n .network(network1.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n haGateway1:\n type: gcp:compute:HaVpnGateway\n name: ha_gateway1\n properties:\n region: us-central1\n name: ha-vpn-1\n network: ${network1.id}\n network1:\n type: gcp:compute:Network\n properties:\n name: network1\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Ha Vpn Gateway Ipv6\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network1 = new gcp.compute.Network(\"network1\", {\n name: \"network1\",\n autoCreateSubnetworks: false,\n});\nconst haGateway1 = new gcp.compute.HaVpnGateway(\"ha_gateway1\", {\n region: \"us-central1\",\n name: \"ha-vpn-1\",\n network: network1.id,\n stackType: \"IPV4_IPV6\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork1 = gcp.compute.Network(\"network1\",\n name=\"network1\",\n auto_create_subnetworks=False)\nha_gateway1 = gcp.compute.HaVpnGateway(\"ha_gateway1\",\n region=\"us-central1\",\n name=\"ha-vpn-1\",\n network=network1.id,\n stack_type=\"IPV4_IPV6\")\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 network1 = new Gcp.Compute.Network(\"network1\", new()\n {\n Name = \"network1\",\n AutoCreateSubnetworks = false,\n });\n\n var haGateway1 = new Gcp.Compute.HaVpnGateway(\"ha_gateway1\", new()\n {\n Region = \"us-central1\",\n Name = \"ha-vpn-1\",\n Network = network1.Id,\n StackType = \"IPV4_IPV6\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnetwork1, err := compute.NewNetwork(ctx, \"network1\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network1\"),\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.NewHaVpnGateway(ctx, \"ha_gateway1\", \u0026compute.HaVpnGatewayArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"ha-vpn-1\"),\n\t\t\tNetwork: network1.ID(),\n\t\t\tStackType: pulumi.String(\"IPV4_IPV6\"),\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.HaVpnGateway;\nimport com.pulumi.gcp.compute.HaVpnGatewayArgs;\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 network1 = new Network(\"network1\", NetworkArgs.builder()\n .name(\"network1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var haGateway1 = new HaVpnGateway(\"haGateway1\", HaVpnGatewayArgs.builder()\n .region(\"us-central1\")\n .name(\"ha-vpn-1\")\n .network(network1.id())\n .stackType(\"IPV4_IPV6\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n haGateway1:\n type: gcp:compute:HaVpnGateway\n name: ha_gateway1\n properties:\n region: us-central1\n name: ha-vpn-1\n network: ${network1.id}\n stackType: IPV4_IPV6\n network1:\n type: gcp:compute:Network\n properties:\n name: network1\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Compute Ha Vpn Gateway Encrypted Interconnect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"test-network\",\n autoCreateSubnetworks: false,\n});\nconst address1 = new gcp.compute.Address(\"address1\", {\n name: \"test-address1\",\n addressType: \"INTERNAL\",\n purpose: \"IPSEC_INTERCONNECT\",\n address: \"192.168.1.0\",\n prefixLength: 29,\n network: network.selfLink,\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"test-router\",\n network: network.name,\n encryptedInterconnectRouter: true,\n bgp: {\n asn: 16550,\n },\n});\nconst attachment1 = new gcp.compute.InterconnectAttachment(\"attachment1\", {\n name: \"test-interconnect-attachment1\",\n edgeAvailabilityDomain: \"AVAILABILITY_DOMAIN_1\",\n type: \"PARTNER\",\n router: router.id,\n encryption: \"IPSEC\",\n ipsecInternalAddresses: [address1.selfLink],\n});\nconst address2 = new gcp.compute.Address(\"address2\", {\n name: \"test-address2\",\n addressType: \"INTERNAL\",\n purpose: \"IPSEC_INTERCONNECT\",\n address: \"192.168.2.0\",\n prefixLength: 29,\n network: network.selfLink,\n});\nconst attachment2 = new gcp.compute.InterconnectAttachment(\"attachment2\", {\n name: \"test-interconnect-attachment2\",\n edgeAvailabilityDomain: \"AVAILABILITY_DOMAIN_2\",\n type: \"PARTNER\",\n router: router.id,\n encryption: \"IPSEC\",\n ipsecInternalAddresses: [address2.selfLink],\n});\nconst vpn_gateway = new gcp.compute.HaVpnGateway(\"vpn-gateway\", {\n name: \"test-ha-vpngw\",\n network: network.id,\n vpnInterfaces: [\n {\n id: 0,\n interconnectAttachment: attachment1.selfLink,\n },\n {\n id: 1,\n interconnectAttachment: attachment2.selfLink,\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"test-network\",\n auto_create_subnetworks=False)\naddress1 = gcp.compute.Address(\"address1\",\n name=\"test-address1\",\n address_type=\"INTERNAL\",\n purpose=\"IPSEC_INTERCONNECT\",\n address=\"192.168.1.0\",\n prefix_length=29,\n network=network.self_link)\nrouter = gcp.compute.Router(\"router\",\n name=\"test-router\",\n network=network.name,\n encrypted_interconnect_router=True,\n bgp={\n \"asn\": 16550,\n })\nattachment1 = gcp.compute.InterconnectAttachment(\"attachment1\",\n name=\"test-interconnect-attachment1\",\n edge_availability_domain=\"AVAILABILITY_DOMAIN_1\",\n type=\"PARTNER\",\n router=router.id,\n encryption=\"IPSEC\",\n ipsec_internal_addresses=[address1.self_link])\naddress2 = gcp.compute.Address(\"address2\",\n name=\"test-address2\",\n address_type=\"INTERNAL\",\n purpose=\"IPSEC_INTERCONNECT\",\n address=\"192.168.2.0\",\n prefix_length=29,\n network=network.self_link)\nattachment2 = gcp.compute.InterconnectAttachment(\"attachment2\",\n name=\"test-interconnect-attachment2\",\n edge_availability_domain=\"AVAILABILITY_DOMAIN_2\",\n type=\"PARTNER\",\n router=router.id,\n encryption=\"IPSEC\",\n ipsec_internal_addresses=[address2.self_link])\nvpn_gateway = gcp.compute.HaVpnGateway(\"vpn-gateway\",\n name=\"test-ha-vpngw\",\n network=network.id,\n vpn_interfaces=[\n {\n \"id\": 0,\n \"interconnectAttachment\": attachment1.self_link,\n },\n {\n \"id\": 1,\n \"interconnectAttachment\": attachment2.self_link,\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 = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var address1 = new Gcp.Compute.Address(\"address1\", new()\n {\n Name = \"test-address1\",\n AddressType = \"INTERNAL\",\n Purpose = \"IPSEC_INTERCONNECT\",\n IPAddress = \"192.168.1.0\",\n PrefixLength = 29,\n Network = network.SelfLink,\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"test-router\",\n Network = network.Name,\n EncryptedInterconnectRouter = true,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 16550,\n },\n });\n\n var attachment1 = new Gcp.Compute.InterconnectAttachment(\"attachment1\", new()\n {\n Name = \"test-interconnect-attachment1\",\n EdgeAvailabilityDomain = \"AVAILABILITY_DOMAIN_1\",\n Type = \"PARTNER\",\n Router = router.Id,\n Encryption = \"IPSEC\",\n IpsecInternalAddresses = new[]\n {\n address1.SelfLink,\n },\n });\n\n var address2 = new Gcp.Compute.Address(\"address2\", new()\n {\n Name = \"test-address2\",\n AddressType = \"INTERNAL\",\n Purpose = \"IPSEC_INTERCONNECT\",\n IPAddress = \"192.168.2.0\",\n PrefixLength = 29,\n Network = network.SelfLink,\n });\n\n var attachment2 = new Gcp.Compute.InterconnectAttachment(\"attachment2\", new()\n {\n Name = \"test-interconnect-attachment2\",\n EdgeAvailabilityDomain = \"AVAILABILITY_DOMAIN_2\",\n Type = \"PARTNER\",\n Router = router.Id,\n Encryption = \"IPSEC\",\n IpsecInternalAddresses = new[]\n {\n address2.SelfLink,\n },\n });\n\n var vpn_gateway = new Gcp.Compute.HaVpnGateway(\"vpn-gateway\", new()\n {\n Name = \"test-ha-vpngw\",\n Network = network.Id,\n VpnInterfaces = new[]\n {\n new Gcp.Compute.Inputs.HaVpnGatewayVpnInterfaceArgs\n {\n Id = 0,\n InterconnectAttachment = attachment1.SelfLink,\n },\n new Gcp.Compute.Inputs.HaVpnGatewayVpnInterfaceArgs\n {\n Id = 1,\n InterconnectAttachment = attachment2.SelfLink,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"test-network\"),\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\taddress1, err := compute.NewAddress(ctx, \"address1\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"test-address1\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"IPSEC_INTERCONNECT\"),\n\t\t\tAddress: pulumi.String(\"192.168.1.0\"),\n\t\t\tPrefixLength: pulumi.Int(29),\n\t\t\tNetwork: network.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"test-router\"),\n\t\t\tNetwork: network.Name,\n\t\t\tEncryptedInterconnectRouter: pulumi.Bool(true),\n\t\t\tBgp: \u0026compute.RouterBgpArgs{\n\t\t\t\tAsn: pulumi.Int(16550),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tattachment1, err := compute.NewInterconnectAttachment(ctx, \"attachment1\", \u0026compute.InterconnectAttachmentArgs{\n\t\t\tName: pulumi.String(\"test-interconnect-attachment1\"),\n\t\t\tEdgeAvailabilityDomain: pulumi.String(\"AVAILABILITY_DOMAIN_1\"),\n\t\t\tType: pulumi.String(\"PARTNER\"),\n\t\t\tRouter: router.ID(),\n\t\t\tEncryption: pulumi.String(\"IPSEC\"),\n\t\t\tIpsecInternalAddresses: pulumi.StringArray{\n\t\t\t\taddress1.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddress2, err := compute.NewAddress(ctx, \"address2\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"test-address2\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"IPSEC_INTERCONNECT\"),\n\t\t\tAddress: pulumi.String(\"192.168.2.0\"),\n\t\t\tPrefixLength: pulumi.Int(29),\n\t\t\tNetwork: network.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tattachment2, err := compute.NewInterconnectAttachment(ctx, \"attachment2\", \u0026compute.InterconnectAttachmentArgs{\n\t\t\tName: pulumi.String(\"test-interconnect-attachment2\"),\n\t\t\tEdgeAvailabilityDomain: pulumi.String(\"AVAILABILITY_DOMAIN_2\"),\n\t\t\tType: pulumi.String(\"PARTNER\"),\n\t\t\tRouter: router.ID(),\n\t\t\tEncryption: pulumi.String(\"IPSEC\"),\n\t\t\tIpsecInternalAddresses: pulumi.StringArray{\n\t\t\t\taddress2.SelfLink,\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.NewHaVpnGateway(ctx, \"vpn-gateway\", \u0026compute.HaVpnGatewayArgs{\n\t\t\tName: pulumi.String(\"test-ha-vpngw\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tVpnInterfaces: compute.HaVpnGatewayVpnInterfaceArray{\n\t\t\t\t\u0026compute.HaVpnGatewayVpnInterfaceArgs{\n\t\t\t\t\tId: pulumi.Int(0),\n\t\t\t\t\tInterconnectAttachment: attachment1.SelfLink,\n\t\t\t\t},\n\t\t\t\t\u0026compute.HaVpnGatewayVpnInterfaceArgs{\n\t\t\t\t\tId: pulumi.Int(1),\n\t\t\t\t\tInterconnectAttachment: attachment2.SelfLink,\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.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\nimport com.pulumi.gcp.compute.InterconnectAttachment;\nimport com.pulumi.gcp.compute.InterconnectAttachmentArgs;\nimport com.pulumi.gcp.compute.HaVpnGateway;\nimport com.pulumi.gcp.compute.HaVpnGatewayArgs;\nimport com.pulumi.gcp.compute.inputs.HaVpnGatewayVpnInterfaceArgs;\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 = new Network(\"network\", NetworkArgs.builder()\n .name(\"test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var address1 = new Address(\"address1\", AddressArgs.builder()\n .name(\"test-address1\")\n .addressType(\"INTERNAL\")\n .purpose(\"IPSEC_INTERCONNECT\")\n .address(\"192.168.1.0\")\n .prefixLength(29)\n .network(network.selfLink())\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"test-router\")\n .network(network.name())\n .encryptedInterconnectRouter(true)\n .bgp(RouterBgpArgs.builder()\n .asn(16550)\n .build())\n .build());\n\n var attachment1 = new InterconnectAttachment(\"attachment1\", InterconnectAttachmentArgs.builder()\n .name(\"test-interconnect-attachment1\")\n .edgeAvailabilityDomain(\"AVAILABILITY_DOMAIN_1\")\n .type(\"PARTNER\")\n .router(router.id())\n .encryption(\"IPSEC\")\n .ipsecInternalAddresses(address1.selfLink())\n .build());\n\n var address2 = new Address(\"address2\", AddressArgs.builder()\n .name(\"test-address2\")\n .addressType(\"INTERNAL\")\n .purpose(\"IPSEC_INTERCONNECT\")\n .address(\"192.168.2.0\")\n .prefixLength(29)\n .network(network.selfLink())\n .build());\n\n var attachment2 = new InterconnectAttachment(\"attachment2\", InterconnectAttachmentArgs.builder()\n .name(\"test-interconnect-attachment2\")\n .edgeAvailabilityDomain(\"AVAILABILITY_DOMAIN_2\")\n .type(\"PARTNER\")\n .router(router.id())\n .encryption(\"IPSEC\")\n .ipsecInternalAddresses(address2.selfLink())\n .build());\n\n var vpn_gateway = new HaVpnGateway(\"vpn-gateway\", HaVpnGatewayArgs.builder()\n .name(\"test-ha-vpngw\")\n .network(network.id())\n .vpnInterfaces( \n HaVpnGatewayVpnInterfaceArgs.builder()\n .id(0)\n .interconnectAttachment(attachment1.selfLink())\n .build(),\n HaVpnGatewayVpnInterfaceArgs.builder()\n .id(1)\n .interconnectAttachment(attachment2.selfLink())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vpn-gateway:\n type: gcp:compute:HaVpnGateway\n properties:\n name: test-ha-vpngw\n network: ${network.id}\n vpnInterfaces:\n - id: 0\n interconnectAttachment: ${attachment1.selfLink}\n - id: 1\n interconnectAttachment: ${attachment2.selfLink}\n attachment1:\n type: gcp:compute:InterconnectAttachment\n properties:\n name: test-interconnect-attachment1\n edgeAvailabilityDomain: AVAILABILITY_DOMAIN_1\n type: PARTNER\n router: ${router.id}\n encryption: IPSEC\n ipsecInternalAddresses:\n - ${address1.selfLink}\n attachment2:\n type: gcp:compute:InterconnectAttachment\n properties:\n name: test-interconnect-attachment2\n edgeAvailabilityDomain: AVAILABILITY_DOMAIN_2\n type: PARTNER\n router: ${router.id}\n encryption: IPSEC\n ipsecInternalAddresses:\n - ${address2.selfLink}\n address1:\n type: gcp:compute:Address\n properties:\n name: test-address1\n addressType: INTERNAL\n purpose: IPSEC_INTERCONNECT\n address: 192.168.1.0\n prefixLength: 29\n network: ${network.selfLink}\n address2:\n type: gcp:compute:Address\n properties:\n name: test-address2\n addressType: INTERNAL\n purpose: IPSEC_INTERCONNECT\n address: 192.168.2.0\n prefixLength: 29\n network: ${network.selfLink}\n router:\n type: gcp:compute:Router\n properties:\n name: test-router\n network: ${network.name}\n encryptedInterconnectRouter: true\n bgp:\n asn: 16550\n network:\n type: gcp:compute:Network\n properties:\n name: test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nHaVpnGateway can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/vpnGateways/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, HaVpnGateway can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/haVpnGateway:HaVpnGateway default projects/{{project}}/regions/{{region}}/vpnGateways/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/haVpnGateway:HaVpnGateway default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/haVpnGateway:HaVpnGateway default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/haVpnGateway:HaVpnGateway default {{name}}\n```\n\n", + "description": "Represents a VPN gateway running in GCP. This virtual device is managed\nby Google, but used only by you. This type of VPN Gateway allows for the creation\nof VPN solutions with higher availability than classic Target VPN Gateways.\n\n\nTo get more information about HaVpnGateway, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/vpnGateways)\n* How-to Guides\n * [Choosing a VPN](https://cloud.google.com/vpn/docs/how-to/choosing-a-vpn)\n * [Cloud VPN Overview](https://cloud.google.com/vpn/docs/concepts/overview)\n\n## Example Usage\n\n### Ha Vpn Gateway Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network1 = new gcp.compute.Network(\"network1\", {\n name: \"network1\",\n autoCreateSubnetworks: false,\n});\nconst haGateway1 = new gcp.compute.HaVpnGateway(\"ha_gateway1\", {\n region: \"us-central1\",\n name: \"ha-vpn-1\",\n network: network1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork1 = gcp.compute.Network(\"network1\",\n name=\"network1\",\n auto_create_subnetworks=False)\nha_gateway1 = gcp.compute.HaVpnGateway(\"ha_gateway1\",\n region=\"us-central1\",\n name=\"ha-vpn-1\",\n network=network1.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 network1 = new Gcp.Compute.Network(\"network1\", new()\n {\n Name = \"network1\",\n AutoCreateSubnetworks = false,\n });\n\n var haGateway1 = new Gcp.Compute.HaVpnGateway(\"ha_gateway1\", new()\n {\n Region = \"us-central1\",\n Name = \"ha-vpn-1\",\n Network = network1.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnetwork1, err := compute.NewNetwork(ctx, \"network1\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network1\"),\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.NewHaVpnGateway(ctx, \"ha_gateway1\", \u0026compute.HaVpnGatewayArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"ha-vpn-1\"),\n\t\t\tNetwork: network1.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.HaVpnGateway;\nimport com.pulumi.gcp.compute.HaVpnGatewayArgs;\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 network1 = new Network(\"network1\", NetworkArgs.builder()\n .name(\"network1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var haGateway1 = new HaVpnGateway(\"haGateway1\", HaVpnGatewayArgs.builder()\n .region(\"us-central1\")\n .name(\"ha-vpn-1\")\n .network(network1.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n haGateway1:\n type: gcp:compute:HaVpnGateway\n name: ha_gateway1\n properties:\n region: us-central1\n name: ha-vpn-1\n network: ${network1.id}\n network1:\n type: gcp:compute:Network\n properties:\n name: network1\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Ha Vpn Gateway Ipv6\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network1 = new gcp.compute.Network(\"network1\", {\n name: \"network1\",\n autoCreateSubnetworks: false,\n});\nconst haGateway1 = new gcp.compute.HaVpnGateway(\"ha_gateway1\", {\n region: \"us-central1\",\n name: \"ha-vpn-1\",\n network: network1.id,\n stackType: \"IPV4_IPV6\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork1 = gcp.compute.Network(\"network1\",\n name=\"network1\",\n auto_create_subnetworks=False)\nha_gateway1 = gcp.compute.HaVpnGateway(\"ha_gateway1\",\n region=\"us-central1\",\n name=\"ha-vpn-1\",\n network=network1.id,\n stack_type=\"IPV4_IPV6\")\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 network1 = new Gcp.Compute.Network(\"network1\", new()\n {\n Name = \"network1\",\n AutoCreateSubnetworks = false,\n });\n\n var haGateway1 = new Gcp.Compute.HaVpnGateway(\"ha_gateway1\", new()\n {\n Region = \"us-central1\",\n Name = \"ha-vpn-1\",\n Network = network1.Id,\n StackType = \"IPV4_IPV6\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnetwork1, err := compute.NewNetwork(ctx, \"network1\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network1\"),\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.NewHaVpnGateway(ctx, \"ha_gateway1\", \u0026compute.HaVpnGatewayArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"ha-vpn-1\"),\n\t\t\tNetwork: network1.ID(),\n\t\t\tStackType: pulumi.String(\"IPV4_IPV6\"),\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.HaVpnGateway;\nimport com.pulumi.gcp.compute.HaVpnGatewayArgs;\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 network1 = new Network(\"network1\", NetworkArgs.builder()\n .name(\"network1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var haGateway1 = new HaVpnGateway(\"haGateway1\", HaVpnGatewayArgs.builder()\n .region(\"us-central1\")\n .name(\"ha-vpn-1\")\n .network(network1.id())\n .stackType(\"IPV4_IPV6\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n haGateway1:\n type: gcp:compute:HaVpnGateway\n name: ha_gateway1\n properties:\n region: us-central1\n name: ha-vpn-1\n network: ${network1.id}\n stackType: IPV4_IPV6\n network1:\n type: gcp:compute:Network\n properties:\n name: network1\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Compute Ha Vpn Gateway Encrypted Interconnect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"test-network\",\n autoCreateSubnetworks: false,\n});\nconst address1 = new gcp.compute.Address(\"address1\", {\n name: \"test-address1\",\n addressType: \"INTERNAL\",\n purpose: \"IPSEC_INTERCONNECT\",\n address: \"192.168.1.0\",\n prefixLength: 29,\n network: network.selfLink,\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"test-router\",\n network: network.name,\n encryptedInterconnectRouter: true,\n bgp: {\n asn: 16550,\n },\n});\nconst attachment1 = new gcp.compute.InterconnectAttachment(\"attachment1\", {\n name: \"test-interconnect-attachment1\",\n edgeAvailabilityDomain: \"AVAILABILITY_DOMAIN_1\",\n type: \"PARTNER\",\n router: router.id,\n encryption: \"IPSEC\",\n ipsecInternalAddresses: [address1.selfLink],\n});\nconst address2 = new gcp.compute.Address(\"address2\", {\n name: \"test-address2\",\n addressType: \"INTERNAL\",\n purpose: \"IPSEC_INTERCONNECT\",\n address: \"192.168.2.0\",\n prefixLength: 29,\n network: network.selfLink,\n});\nconst attachment2 = new gcp.compute.InterconnectAttachment(\"attachment2\", {\n name: \"test-interconnect-attachment2\",\n edgeAvailabilityDomain: \"AVAILABILITY_DOMAIN_2\",\n type: \"PARTNER\",\n router: router.id,\n encryption: \"IPSEC\",\n ipsecInternalAddresses: [address2.selfLink],\n});\nconst vpn_gateway = new gcp.compute.HaVpnGateway(\"vpn-gateway\", {\n name: \"test-ha-vpngw\",\n network: network.id,\n vpnInterfaces: [\n {\n id: 0,\n interconnectAttachment: attachment1.selfLink,\n },\n {\n id: 1,\n interconnectAttachment: attachment2.selfLink,\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"test-network\",\n auto_create_subnetworks=False)\naddress1 = gcp.compute.Address(\"address1\",\n name=\"test-address1\",\n address_type=\"INTERNAL\",\n purpose=\"IPSEC_INTERCONNECT\",\n address=\"192.168.1.0\",\n prefix_length=29,\n network=network.self_link)\nrouter = gcp.compute.Router(\"router\",\n name=\"test-router\",\n network=network.name,\n encrypted_interconnect_router=True,\n bgp={\n \"asn\": 16550,\n })\nattachment1 = gcp.compute.InterconnectAttachment(\"attachment1\",\n name=\"test-interconnect-attachment1\",\n edge_availability_domain=\"AVAILABILITY_DOMAIN_1\",\n type=\"PARTNER\",\n router=router.id,\n encryption=\"IPSEC\",\n ipsec_internal_addresses=[address1.self_link])\naddress2 = gcp.compute.Address(\"address2\",\n name=\"test-address2\",\n address_type=\"INTERNAL\",\n purpose=\"IPSEC_INTERCONNECT\",\n address=\"192.168.2.0\",\n prefix_length=29,\n network=network.self_link)\nattachment2 = gcp.compute.InterconnectAttachment(\"attachment2\",\n name=\"test-interconnect-attachment2\",\n edge_availability_domain=\"AVAILABILITY_DOMAIN_2\",\n type=\"PARTNER\",\n router=router.id,\n encryption=\"IPSEC\",\n ipsec_internal_addresses=[address2.self_link])\nvpn_gateway = gcp.compute.HaVpnGateway(\"vpn-gateway\",\n name=\"test-ha-vpngw\",\n network=network.id,\n vpn_interfaces=[\n {\n \"id\": 0,\n \"interconnect_attachment\": attachment1.self_link,\n },\n {\n \"id\": 1,\n \"interconnect_attachment\": attachment2.self_link,\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 = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var address1 = new Gcp.Compute.Address(\"address1\", new()\n {\n Name = \"test-address1\",\n AddressType = \"INTERNAL\",\n Purpose = \"IPSEC_INTERCONNECT\",\n IPAddress = \"192.168.1.0\",\n PrefixLength = 29,\n Network = network.SelfLink,\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"test-router\",\n Network = network.Name,\n EncryptedInterconnectRouter = true,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 16550,\n },\n });\n\n var attachment1 = new Gcp.Compute.InterconnectAttachment(\"attachment1\", new()\n {\n Name = \"test-interconnect-attachment1\",\n EdgeAvailabilityDomain = \"AVAILABILITY_DOMAIN_1\",\n Type = \"PARTNER\",\n Router = router.Id,\n Encryption = \"IPSEC\",\n IpsecInternalAddresses = new[]\n {\n address1.SelfLink,\n },\n });\n\n var address2 = new Gcp.Compute.Address(\"address2\", new()\n {\n Name = \"test-address2\",\n AddressType = \"INTERNAL\",\n Purpose = \"IPSEC_INTERCONNECT\",\n IPAddress = \"192.168.2.0\",\n PrefixLength = 29,\n Network = network.SelfLink,\n });\n\n var attachment2 = new Gcp.Compute.InterconnectAttachment(\"attachment2\", new()\n {\n Name = \"test-interconnect-attachment2\",\n EdgeAvailabilityDomain = \"AVAILABILITY_DOMAIN_2\",\n Type = \"PARTNER\",\n Router = router.Id,\n Encryption = \"IPSEC\",\n IpsecInternalAddresses = new[]\n {\n address2.SelfLink,\n },\n });\n\n var vpn_gateway = new Gcp.Compute.HaVpnGateway(\"vpn-gateway\", new()\n {\n Name = \"test-ha-vpngw\",\n Network = network.Id,\n VpnInterfaces = new[]\n {\n new Gcp.Compute.Inputs.HaVpnGatewayVpnInterfaceArgs\n {\n Id = 0,\n InterconnectAttachment = attachment1.SelfLink,\n },\n new Gcp.Compute.Inputs.HaVpnGatewayVpnInterfaceArgs\n {\n Id = 1,\n InterconnectAttachment = attachment2.SelfLink,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"test-network\"),\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\taddress1, err := compute.NewAddress(ctx, \"address1\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"test-address1\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"IPSEC_INTERCONNECT\"),\n\t\t\tAddress: pulumi.String(\"192.168.1.0\"),\n\t\t\tPrefixLength: pulumi.Int(29),\n\t\t\tNetwork: network.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"test-router\"),\n\t\t\tNetwork: network.Name,\n\t\t\tEncryptedInterconnectRouter: pulumi.Bool(true),\n\t\t\tBgp: \u0026compute.RouterBgpArgs{\n\t\t\t\tAsn: pulumi.Int(16550),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tattachment1, err := compute.NewInterconnectAttachment(ctx, \"attachment1\", \u0026compute.InterconnectAttachmentArgs{\n\t\t\tName: pulumi.String(\"test-interconnect-attachment1\"),\n\t\t\tEdgeAvailabilityDomain: pulumi.String(\"AVAILABILITY_DOMAIN_1\"),\n\t\t\tType: pulumi.String(\"PARTNER\"),\n\t\t\tRouter: router.ID(),\n\t\t\tEncryption: pulumi.String(\"IPSEC\"),\n\t\t\tIpsecInternalAddresses: pulumi.StringArray{\n\t\t\t\taddress1.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddress2, err := compute.NewAddress(ctx, \"address2\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"test-address2\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"IPSEC_INTERCONNECT\"),\n\t\t\tAddress: pulumi.String(\"192.168.2.0\"),\n\t\t\tPrefixLength: pulumi.Int(29),\n\t\t\tNetwork: network.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tattachment2, err := compute.NewInterconnectAttachment(ctx, \"attachment2\", \u0026compute.InterconnectAttachmentArgs{\n\t\t\tName: pulumi.String(\"test-interconnect-attachment2\"),\n\t\t\tEdgeAvailabilityDomain: pulumi.String(\"AVAILABILITY_DOMAIN_2\"),\n\t\t\tType: pulumi.String(\"PARTNER\"),\n\t\t\tRouter: router.ID(),\n\t\t\tEncryption: pulumi.String(\"IPSEC\"),\n\t\t\tIpsecInternalAddresses: pulumi.StringArray{\n\t\t\t\taddress2.SelfLink,\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.NewHaVpnGateway(ctx, \"vpn-gateway\", \u0026compute.HaVpnGatewayArgs{\n\t\t\tName: pulumi.String(\"test-ha-vpngw\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tVpnInterfaces: compute.HaVpnGatewayVpnInterfaceArray{\n\t\t\t\t\u0026compute.HaVpnGatewayVpnInterfaceArgs{\n\t\t\t\t\tId: pulumi.Int(0),\n\t\t\t\t\tInterconnectAttachment: attachment1.SelfLink,\n\t\t\t\t},\n\t\t\t\t\u0026compute.HaVpnGatewayVpnInterfaceArgs{\n\t\t\t\t\tId: pulumi.Int(1),\n\t\t\t\t\tInterconnectAttachment: attachment2.SelfLink,\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.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\nimport com.pulumi.gcp.compute.InterconnectAttachment;\nimport com.pulumi.gcp.compute.InterconnectAttachmentArgs;\nimport com.pulumi.gcp.compute.HaVpnGateway;\nimport com.pulumi.gcp.compute.HaVpnGatewayArgs;\nimport com.pulumi.gcp.compute.inputs.HaVpnGatewayVpnInterfaceArgs;\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 = new Network(\"network\", NetworkArgs.builder()\n .name(\"test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var address1 = new Address(\"address1\", AddressArgs.builder()\n .name(\"test-address1\")\n .addressType(\"INTERNAL\")\n .purpose(\"IPSEC_INTERCONNECT\")\n .address(\"192.168.1.0\")\n .prefixLength(29)\n .network(network.selfLink())\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"test-router\")\n .network(network.name())\n .encryptedInterconnectRouter(true)\n .bgp(RouterBgpArgs.builder()\n .asn(16550)\n .build())\n .build());\n\n var attachment1 = new InterconnectAttachment(\"attachment1\", InterconnectAttachmentArgs.builder()\n .name(\"test-interconnect-attachment1\")\n .edgeAvailabilityDomain(\"AVAILABILITY_DOMAIN_1\")\n .type(\"PARTNER\")\n .router(router.id())\n .encryption(\"IPSEC\")\n .ipsecInternalAddresses(address1.selfLink())\n .build());\n\n var address2 = new Address(\"address2\", AddressArgs.builder()\n .name(\"test-address2\")\n .addressType(\"INTERNAL\")\n .purpose(\"IPSEC_INTERCONNECT\")\n .address(\"192.168.2.0\")\n .prefixLength(29)\n .network(network.selfLink())\n .build());\n\n var attachment2 = new InterconnectAttachment(\"attachment2\", InterconnectAttachmentArgs.builder()\n .name(\"test-interconnect-attachment2\")\n .edgeAvailabilityDomain(\"AVAILABILITY_DOMAIN_2\")\n .type(\"PARTNER\")\n .router(router.id())\n .encryption(\"IPSEC\")\n .ipsecInternalAddresses(address2.selfLink())\n .build());\n\n var vpn_gateway = new HaVpnGateway(\"vpn-gateway\", HaVpnGatewayArgs.builder()\n .name(\"test-ha-vpngw\")\n .network(network.id())\n .vpnInterfaces( \n HaVpnGatewayVpnInterfaceArgs.builder()\n .id(0)\n .interconnectAttachment(attachment1.selfLink())\n .build(),\n HaVpnGatewayVpnInterfaceArgs.builder()\n .id(1)\n .interconnectAttachment(attachment2.selfLink())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vpn-gateway:\n type: gcp:compute:HaVpnGateway\n properties:\n name: test-ha-vpngw\n network: ${network.id}\n vpnInterfaces:\n - id: 0\n interconnectAttachment: ${attachment1.selfLink}\n - id: 1\n interconnectAttachment: ${attachment2.selfLink}\n attachment1:\n type: gcp:compute:InterconnectAttachment\n properties:\n name: test-interconnect-attachment1\n edgeAvailabilityDomain: AVAILABILITY_DOMAIN_1\n type: PARTNER\n router: ${router.id}\n encryption: IPSEC\n ipsecInternalAddresses:\n - ${address1.selfLink}\n attachment2:\n type: gcp:compute:InterconnectAttachment\n properties:\n name: test-interconnect-attachment2\n edgeAvailabilityDomain: AVAILABILITY_DOMAIN_2\n type: PARTNER\n router: ${router.id}\n encryption: IPSEC\n ipsecInternalAddresses:\n - ${address2.selfLink}\n address1:\n type: gcp:compute:Address\n properties:\n name: test-address1\n addressType: INTERNAL\n purpose: IPSEC_INTERCONNECT\n address: 192.168.1.0\n prefixLength: 29\n network: ${network.selfLink}\n address2:\n type: gcp:compute:Address\n properties:\n name: test-address2\n addressType: INTERNAL\n purpose: IPSEC_INTERCONNECT\n address: 192.168.2.0\n prefixLength: 29\n network: ${network.selfLink}\n router:\n type: gcp:compute:Router\n properties:\n name: test-router\n network: ${network.name}\n encryptedInterconnectRouter: true\n bgp:\n asn: 16550\n network:\n type: gcp:compute:Network\n properties:\n name: test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nHaVpnGateway can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/vpnGateways/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, HaVpnGateway can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/haVpnGateway:HaVpnGateway default projects/{{project}}/regions/{{region}}/vpnGateways/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/haVpnGateway:HaVpnGateway default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/haVpnGateway:HaVpnGateway default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/haVpnGateway:HaVpnGateway default {{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -146233,7 +146233,7 @@ } }, "gcp:compute/healthCheck:HealthCheck": { - "description": "Health Checks determine whether instances are responsive and able to do work.\nThey are an important part of a comprehensive load balancing configuration,\nas they enable monitoring instances behind load balancers.\n\nHealth Checks poll instances at a specified interval. Instances that\ndo not respond successfully to some number of probes in a row are marked\nas unhealthy. No new connections are sent to unhealthy instances,\nthough existing connections will continue. The health check will\ncontinue to poll unhealthy instances. If an instance later responds\nsuccessfully to some number of consecutive probes, it is marked\nhealthy again and can receive new connections.\n\n~\u003e**NOTE**: Legacy HTTP(S) health checks must be used for target pool-based network\nload balancers. See the [official guide](https://cloud.google.com/load-balancing/docs/health-check-concepts#selecting_hc)\nfor choosing a type of health check.\n\n\nTo get more information about HealthCheck, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/healthChecks)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/health-checks)\n\n## Example Usage\n\n### Health Check Tcp\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tcp_health_check = new gcp.compute.HealthCheck(\"tcp-health-check\", {\n name: \"tcp-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntcp_health_check = gcp.compute.HealthCheck(\"tcp-health-check\",\n name=\"tcp-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n tcp_health_check={\n \"port\": 80,\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 tcp_health_check = new Gcp.Compute.HealthCheck(\"tcp-health-check\", new()\n {\n Name = \"tcp-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"tcp-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"tcp-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\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 tcp_health_check = new HealthCheck(\"tcp-health-check\", HealthCheckArgs.builder()\n .name(\"tcp-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tcp-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: tcp-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n tcpHealthCheck:\n port: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Tcp Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tcp_health_check = new gcp.compute.HealthCheck(\"tcp-health-check\", {\n name: \"tcp-health-check\",\n description: \"Health check via tcp\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n tcpHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n request: \"ARE YOU HEALTHY?\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntcp_health_check = gcp.compute.HealthCheck(\"tcp-health-check\",\n name=\"tcp-health-check\",\n description=\"Health check via tcp\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n tcp_health_check={\n \"portName\": \"health-check-port\",\n \"portSpecification\": \"USE_NAMED_PORT\",\n \"request\": \"ARE YOU HEALTHY?\",\n \"proxyHeader\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 tcp_health_check = new Gcp.Compute.HealthCheck(\"tcp-health-check\", new()\n {\n Name = \"tcp-health-check\",\n Description = \"Health check via tcp\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Request = \"ARE YOU HEALTHY?\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"tcp-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"tcp-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via tcp\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tRequest: pulumi.String(\"ARE YOU HEALTHY?\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\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 tcp_health_check = new HealthCheck(\"tcp-health-check\", HealthCheckArgs.builder()\n .name(\"tcp-health-check\")\n .description(\"Health check via tcp\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .request(\"ARE YOU HEALTHY?\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tcp-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: tcp-health-check\n description: Health check via tcp\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n tcpHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n request: ARE YOU HEALTHY?\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Ssl\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ssl_health_check = new gcp.compute.HealthCheck(\"ssl-health-check\", {\n name: \"ssl-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n sslHealthCheck: {\n port: 443,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nssl_health_check = gcp.compute.HealthCheck(\"ssl-health-check\",\n name=\"ssl-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n ssl_health_check={\n \"port\": 443,\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 ssl_health_check = new Gcp.Compute.HealthCheck(\"ssl-health-check\", new()\n {\n Name = \"ssl-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n SslHealthCheck = new Gcp.Compute.Inputs.HealthCheckSslHealthCheckArgs\n {\n Port = 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"ssl-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"ssl-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tSslHealthCheck: \u0026compute.HealthCheckSslHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(443),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckSslHealthCheckArgs;\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 ssl_health_check = new HealthCheck(\"ssl-health-check\", HealthCheckArgs.builder()\n .name(\"ssl-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .sslHealthCheck(HealthCheckSslHealthCheckArgs.builder()\n .port(\"443\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ssl-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: ssl-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n sslHealthCheck:\n port: '443'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Ssl Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ssl_health_check = new gcp.compute.HealthCheck(\"ssl-health-check\", {\n name: \"ssl-health-check\",\n description: \"Health check via ssl\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n sslHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n request: \"ARE YOU HEALTHY?\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nssl_health_check = gcp.compute.HealthCheck(\"ssl-health-check\",\n name=\"ssl-health-check\",\n description=\"Health check via ssl\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n ssl_health_check={\n \"portName\": \"health-check-port\",\n \"portSpecification\": \"USE_NAMED_PORT\",\n \"request\": \"ARE YOU HEALTHY?\",\n \"proxyHeader\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 ssl_health_check = new Gcp.Compute.HealthCheck(\"ssl-health-check\", new()\n {\n Name = \"ssl-health-check\",\n Description = \"Health check via ssl\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n SslHealthCheck = new Gcp.Compute.Inputs.HealthCheckSslHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Request = \"ARE YOU HEALTHY?\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"ssl-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"ssl-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via ssl\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tSslHealthCheck: \u0026compute.HealthCheckSslHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tRequest: pulumi.String(\"ARE YOU HEALTHY?\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckSslHealthCheckArgs;\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 ssl_health_check = new HealthCheck(\"ssl-health-check\", HealthCheckArgs.builder()\n .name(\"ssl-health-check\")\n .description(\"Health check via ssl\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .sslHealthCheck(HealthCheckSslHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .request(\"ARE YOU HEALTHY?\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ssl-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: ssl-health-check\n description: Health check via ssl\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n sslHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n request: ARE YOU HEALTHY?\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Http\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http_health_check = new gcp.compute.HealthCheck(\"http-health-check\", {\n name: \"http-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n httpHealthCheck: {\n port: 80,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp_health_check = gcp.compute.HealthCheck(\"http-health-check\",\n name=\"http-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n http_health_check={\n \"port\": 80,\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 http_health_check = new Gcp.Compute.HealthCheck(\"http-health-check\", new()\n {\n Name = \"http-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"http-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\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 http_health_check = new HealthCheck(\"http-health-check\", HealthCheckArgs.builder()\n .name(\"http-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: http-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Http Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http_health_check = new gcp.compute.HealthCheck(\"http-health-check\", {\n name: \"http-health-check\",\n description: \"Health check via http\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n httpHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n host: \"1.2.3.4\",\n requestPath: \"/mypath\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp_health_check = gcp.compute.HealthCheck(\"http-health-check\",\n name=\"http-health-check\",\n description=\"Health check via http\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n http_health_check={\n \"portName\": \"health-check-port\",\n \"portSpecification\": \"USE_NAMED_PORT\",\n \"host\": \"1.2.3.4\",\n \"requestPath\": \"/mypath\",\n \"proxyHeader\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 http_health_check = new Gcp.Compute.HealthCheck(\"http-health-check\", new()\n {\n Name = \"http-health-check\",\n Description = \"Health check via http\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Host = \"1.2.3.4\",\n RequestPath = \"/mypath\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"http-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via http\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tHost: pulumi.String(\"1.2.3.4\"),\n\t\t\t\tRequestPath: pulumi.String(\"/mypath\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\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 http_health_check = new HealthCheck(\"http-health-check\", HealthCheckArgs.builder()\n .name(\"http-health-check\")\n .description(\"Health check via http\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .host(\"1.2.3.4\")\n .requestPath(\"/mypath\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: http-health-check\n description: Health check via http\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n httpHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n host: 1.2.3.4\n requestPath: /mypath\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Https\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst https_health_check = new gcp.compute.HealthCheck(\"https-health-check\", {\n name: \"https-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n httpsHealthCheck: {\n port: 443,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttps_health_check = gcp.compute.HealthCheck(\"https-health-check\",\n name=\"https-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n https_health_check={\n \"port\": 443,\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 https_health_check = new Gcp.Compute.HealthCheck(\"https-health-check\", new()\n {\n Name = \"https-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HttpsHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpsHealthCheckArgs\n {\n Port = 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"https-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"https-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHttpsHealthCheck: \u0026compute.HealthCheckHttpsHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(443),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpsHealthCheckArgs;\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 https_health_check = new HealthCheck(\"https-health-check\", HealthCheckArgs.builder()\n .name(\"https-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .httpsHealthCheck(HealthCheckHttpsHealthCheckArgs.builder()\n .port(\"443\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n https-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: https-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n httpsHealthCheck:\n port: '443'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Https Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst https_health_check = new gcp.compute.HealthCheck(\"https-health-check\", {\n name: \"https-health-check\",\n description: \"Health check via https\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n httpsHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n host: \"1.2.3.4\",\n requestPath: \"/mypath\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttps_health_check = gcp.compute.HealthCheck(\"https-health-check\",\n name=\"https-health-check\",\n description=\"Health check via https\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n https_health_check={\n \"portName\": \"health-check-port\",\n \"portSpecification\": \"USE_NAMED_PORT\",\n \"host\": \"1.2.3.4\",\n \"requestPath\": \"/mypath\",\n \"proxyHeader\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 https_health_check = new Gcp.Compute.HealthCheck(\"https-health-check\", new()\n {\n Name = \"https-health-check\",\n Description = \"Health check via https\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n HttpsHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpsHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Host = \"1.2.3.4\",\n RequestPath = \"/mypath\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"https-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"https-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via https\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tHttpsHealthCheck: \u0026compute.HealthCheckHttpsHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tHost: pulumi.String(\"1.2.3.4\"),\n\t\t\t\tRequestPath: pulumi.String(\"/mypath\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpsHealthCheckArgs;\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 https_health_check = new HealthCheck(\"https-health-check\", HealthCheckArgs.builder()\n .name(\"https-health-check\")\n .description(\"Health check via https\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .httpsHealthCheck(HealthCheckHttpsHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .host(\"1.2.3.4\")\n .requestPath(\"/mypath\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n https-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: https-health-check\n description: Health check via https\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n httpsHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n host: 1.2.3.4\n requestPath: /mypath\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Http2\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http2_health_check = new gcp.compute.HealthCheck(\"http2-health-check\", {\n name: \"http2-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n http2HealthCheck: {\n port: 443,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp2_health_check = gcp.compute.HealthCheck(\"http2-health-check\",\n name=\"http2-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n http2_health_check={\n \"port\": 443,\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 http2_health_check = new Gcp.Compute.HealthCheck(\"http2-health-check\", new()\n {\n Name = \"http2-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n Http2HealthCheck = new Gcp.Compute.Inputs.HealthCheckHttp2HealthCheckArgs\n {\n Port = 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"http2-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"http2-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHttp2HealthCheck: \u0026compute.HealthCheckHttp2HealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(443),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttp2HealthCheckArgs;\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 http2_health_check = new HealthCheck(\"http2-health-check\", HealthCheckArgs.builder()\n .name(\"http2-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .http2HealthCheck(HealthCheckHttp2HealthCheckArgs.builder()\n .port(\"443\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http2-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: http2-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n http2HealthCheck:\n port: '443'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Http2 Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http2_health_check = new gcp.compute.HealthCheck(\"http2-health-check\", {\n name: \"http2-health-check\",\n description: \"Health check via http2\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n http2HealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n host: \"1.2.3.4\",\n requestPath: \"/mypath\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp2_health_check = gcp.compute.HealthCheck(\"http2-health-check\",\n name=\"http2-health-check\",\n description=\"Health check via http2\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n http2_health_check={\n \"portName\": \"health-check-port\",\n \"portSpecification\": \"USE_NAMED_PORT\",\n \"host\": \"1.2.3.4\",\n \"requestPath\": \"/mypath\",\n \"proxyHeader\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 http2_health_check = new Gcp.Compute.HealthCheck(\"http2-health-check\", new()\n {\n Name = \"http2-health-check\",\n Description = \"Health check via http2\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n Http2HealthCheck = new Gcp.Compute.Inputs.HealthCheckHttp2HealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Host = \"1.2.3.4\",\n RequestPath = \"/mypath\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"http2-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"http2-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via http2\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tHttp2HealthCheck: \u0026compute.HealthCheckHttp2HealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tHost: pulumi.String(\"1.2.3.4\"),\n\t\t\t\tRequestPath: pulumi.String(\"/mypath\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttp2HealthCheckArgs;\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 http2_health_check = new HealthCheck(\"http2-health-check\", HealthCheckArgs.builder()\n .name(\"http2-health-check\")\n .description(\"Health check via http2\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .http2HealthCheck(HealthCheckHttp2HealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .host(\"1.2.3.4\")\n .requestPath(\"/mypath\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http2-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: http2-health-check\n description: Health check via http2\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n http2HealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n host: 1.2.3.4\n requestPath: /mypath\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Grpc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst grpc_health_check = new gcp.compute.HealthCheck(\"grpc-health-check\", {\n name: \"grpc-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n grpcHealthCheck: {\n port: 443,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngrpc_health_check = gcp.compute.HealthCheck(\"grpc-health-check\",\n name=\"grpc-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n grpc_health_check={\n \"port\": 443,\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 grpc_health_check = new Gcp.Compute.HealthCheck(\"grpc-health-check\", new()\n {\n Name = \"grpc-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n GrpcHealthCheck = new Gcp.Compute.Inputs.HealthCheckGrpcHealthCheckArgs\n {\n Port = 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"grpc-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"grpc-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tGrpcHealthCheck: \u0026compute.HealthCheckGrpcHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(443),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckGrpcHealthCheckArgs;\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 grpc_health_check = new HealthCheck(\"grpc-health-check\", HealthCheckArgs.builder()\n .name(\"grpc-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .grpcHealthCheck(HealthCheckGrpcHealthCheckArgs.builder()\n .port(\"443\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n grpc-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: grpc-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n grpcHealthCheck:\n port: '443'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Grpc Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst grpc_health_check = new gcp.compute.HealthCheck(\"grpc-health-check\", {\n name: \"grpc-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n grpcHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n grpcServiceName: \"testservice\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngrpc_health_check = gcp.compute.HealthCheck(\"grpc-health-check\",\n name=\"grpc-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n grpc_health_check={\n \"portName\": \"health-check-port\",\n \"portSpecification\": \"USE_NAMED_PORT\",\n \"grpcServiceName\": \"testservice\",\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 grpc_health_check = new Gcp.Compute.HealthCheck(\"grpc-health-check\", new()\n {\n Name = \"grpc-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n GrpcHealthCheck = new Gcp.Compute.Inputs.HealthCheckGrpcHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n GrpcServiceName = \"testservice\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"grpc-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"grpc-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tGrpcHealthCheck: \u0026compute.HealthCheckGrpcHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tGrpcServiceName: pulumi.String(\"testservice\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckGrpcHealthCheckArgs;\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 grpc_health_check = new HealthCheck(\"grpc-health-check\", HealthCheckArgs.builder()\n .name(\"grpc-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .grpcHealthCheck(HealthCheckGrpcHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .grpcServiceName(\"testservice\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n grpc-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: grpc-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n grpcHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n grpcServiceName: testservice\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check With Logging\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst health_check_with_logging = new gcp.compute.HealthCheck(\"health-check-with-logging\", {\n name: \"tcp-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n tcpHealthCheck: {\n port: 22,\n },\n logConfig: {\n enable: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check_with_logging = gcp.compute.HealthCheck(\"health-check-with-logging\",\n name=\"tcp-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n tcp_health_check={\n \"port\": 22,\n },\n log_config={\n \"enable\": 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 health_check_with_logging = new Gcp.Compute.HealthCheck(\"health-check-with-logging\", new()\n {\n Name = \"tcp-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 22,\n },\n LogConfig = new Gcp.Compute.Inputs.HealthCheckLogConfigArgs\n {\n Enable = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"health-check-with-logging\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"tcp-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(22),\n\t\t\t},\n\t\t\tLogConfig: \u0026compute.HealthCheckLogConfigArgs{\n\t\t\t\tEnable: 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.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckLogConfigArgs;\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 health_check_with_logging = new HealthCheck(\"health-check-with-logging\", HealthCheckArgs.builder()\n .name(\"tcp-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"22\")\n .build())\n .logConfig(HealthCheckLogConfigArgs.builder()\n .enable(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n health-check-with-logging:\n type: gcp:compute:HealthCheck\n properties:\n name: tcp-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n tcpHealthCheck:\n port: '22'\n logConfig:\n enable: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nHealthCheck can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/healthChecks/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, HealthCheck can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/healthCheck:HealthCheck default projects/{{project}}/global/healthChecks/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/healthCheck:HealthCheck default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/healthCheck:HealthCheck default {{name}}\n```\n\n", + "description": "Health Checks determine whether instances are responsive and able to do work.\nThey are an important part of a comprehensive load balancing configuration,\nas they enable monitoring instances behind load balancers.\n\nHealth Checks poll instances at a specified interval. Instances that\ndo not respond successfully to some number of probes in a row are marked\nas unhealthy. No new connections are sent to unhealthy instances,\nthough existing connections will continue. The health check will\ncontinue to poll unhealthy instances. If an instance later responds\nsuccessfully to some number of consecutive probes, it is marked\nhealthy again and can receive new connections.\n\n~\u003e**NOTE**: Legacy HTTP(S) health checks must be used for target pool-based network\nload balancers. See the [official guide](https://cloud.google.com/load-balancing/docs/health-check-concepts#selecting_hc)\nfor choosing a type of health check.\n\n\nTo get more information about HealthCheck, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/healthChecks)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/health-checks)\n\n## Example Usage\n\n### Health Check Tcp\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tcp_health_check = new gcp.compute.HealthCheck(\"tcp-health-check\", {\n name: \"tcp-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntcp_health_check = gcp.compute.HealthCheck(\"tcp-health-check\",\n name=\"tcp-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n tcp_health_check={\n \"port\": 80,\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 tcp_health_check = new Gcp.Compute.HealthCheck(\"tcp-health-check\", new()\n {\n Name = \"tcp-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"tcp-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"tcp-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\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 tcp_health_check = new HealthCheck(\"tcp-health-check\", HealthCheckArgs.builder()\n .name(\"tcp-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tcp-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: tcp-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n tcpHealthCheck:\n port: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Tcp Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tcp_health_check = new gcp.compute.HealthCheck(\"tcp-health-check\", {\n name: \"tcp-health-check\",\n description: \"Health check via tcp\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n tcpHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n request: \"ARE YOU HEALTHY?\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntcp_health_check = gcp.compute.HealthCheck(\"tcp-health-check\",\n name=\"tcp-health-check\",\n description=\"Health check via tcp\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n tcp_health_check={\n \"port_name\": \"health-check-port\",\n \"port_specification\": \"USE_NAMED_PORT\",\n \"request\": \"ARE YOU HEALTHY?\",\n \"proxy_header\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 tcp_health_check = new Gcp.Compute.HealthCheck(\"tcp-health-check\", new()\n {\n Name = \"tcp-health-check\",\n Description = \"Health check via tcp\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Request = \"ARE YOU HEALTHY?\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"tcp-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"tcp-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via tcp\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tRequest: pulumi.String(\"ARE YOU HEALTHY?\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\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 tcp_health_check = new HealthCheck(\"tcp-health-check\", HealthCheckArgs.builder()\n .name(\"tcp-health-check\")\n .description(\"Health check via tcp\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .request(\"ARE YOU HEALTHY?\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tcp-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: tcp-health-check\n description: Health check via tcp\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n tcpHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n request: ARE YOU HEALTHY?\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Ssl\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ssl_health_check = new gcp.compute.HealthCheck(\"ssl-health-check\", {\n name: \"ssl-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n sslHealthCheck: {\n port: 443,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nssl_health_check = gcp.compute.HealthCheck(\"ssl-health-check\",\n name=\"ssl-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n ssl_health_check={\n \"port\": 443,\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 ssl_health_check = new Gcp.Compute.HealthCheck(\"ssl-health-check\", new()\n {\n Name = \"ssl-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n SslHealthCheck = new Gcp.Compute.Inputs.HealthCheckSslHealthCheckArgs\n {\n Port = 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"ssl-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"ssl-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tSslHealthCheck: \u0026compute.HealthCheckSslHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(443),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckSslHealthCheckArgs;\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 ssl_health_check = new HealthCheck(\"ssl-health-check\", HealthCheckArgs.builder()\n .name(\"ssl-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .sslHealthCheck(HealthCheckSslHealthCheckArgs.builder()\n .port(\"443\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ssl-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: ssl-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n sslHealthCheck:\n port: '443'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Ssl Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ssl_health_check = new gcp.compute.HealthCheck(\"ssl-health-check\", {\n name: \"ssl-health-check\",\n description: \"Health check via ssl\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n sslHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n request: \"ARE YOU HEALTHY?\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nssl_health_check = gcp.compute.HealthCheck(\"ssl-health-check\",\n name=\"ssl-health-check\",\n description=\"Health check via ssl\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n ssl_health_check={\n \"port_name\": \"health-check-port\",\n \"port_specification\": \"USE_NAMED_PORT\",\n \"request\": \"ARE YOU HEALTHY?\",\n \"proxy_header\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 ssl_health_check = new Gcp.Compute.HealthCheck(\"ssl-health-check\", new()\n {\n Name = \"ssl-health-check\",\n Description = \"Health check via ssl\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n SslHealthCheck = new Gcp.Compute.Inputs.HealthCheckSslHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Request = \"ARE YOU HEALTHY?\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"ssl-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"ssl-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via ssl\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tSslHealthCheck: \u0026compute.HealthCheckSslHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tRequest: pulumi.String(\"ARE YOU HEALTHY?\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckSslHealthCheckArgs;\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 ssl_health_check = new HealthCheck(\"ssl-health-check\", HealthCheckArgs.builder()\n .name(\"ssl-health-check\")\n .description(\"Health check via ssl\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .sslHealthCheck(HealthCheckSslHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .request(\"ARE YOU HEALTHY?\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ssl-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: ssl-health-check\n description: Health check via ssl\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n sslHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n request: ARE YOU HEALTHY?\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Http\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http_health_check = new gcp.compute.HealthCheck(\"http-health-check\", {\n name: \"http-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n httpHealthCheck: {\n port: 80,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp_health_check = gcp.compute.HealthCheck(\"http-health-check\",\n name=\"http-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n http_health_check={\n \"port\": 80,\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 http_health_check = new Gcp.Compute.HealthCheck(\"http-health-check\", new()\n {\n Name = \"http-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"http-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\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 http_health_check = new HealthCheck(\"http-health-check\", HealthCheckArgs.builder()\n .name(\"http-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: http-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Http Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http_health_check = new gcp.compute.HealthCheck(\"http-health-check\", {\n name: \"http-health-check\",\n description: \"Health check via http\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n httpHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n host: \"1.2.3.4\",\n requestPath: \"/mypath\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp_health_check = gcp.compute.HealthCheck(\"http-health-check\",\n name=\"http-health-check\",\n description=\"Health check via http\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n http_health_check={\n \"port_name\": \"health-check-port\",\n \"port_specification\": \"USE_NAMED_PORT\",\n \"host\": \"1.2.3.4\",\n \"request_path\": \"/mypath\",\n \"proxy_header\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 http_health_check = new Gcp.Compute.HealthCheck(\"http-health-check\", new()\n {\n Name = \"http-health-check\",\n Description = \"Health check via http\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Host = \"1.2.3.4\",\n RequestPath = \"/mypath\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"http-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via http\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tHost: pulumi.String(\"1.2.3.4\"),\n\t\t\t\tRequestPath: pulumi.String(\"/mypath\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\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 http_health_check = new HealthCheck(\"http-health-check\", HealthCheckArgs.builder()\n .name(\"http-health-check\")\n .description(\"Health check via http\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .host(\"1.2.3.4\")\n .requestPath(\"/mypath\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: http-health-check\n description: Health check via http\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n httpHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n host: 1.2.3.4\n requestPath: /mypath\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Https\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst https_health_check = new gcp.compute.HealthCheck(\"https-health-check\", {\n name: \"https-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n httpsHealthCheck: {\n port: 443,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttps_health_check = gcp.compute.HealthCheck(\"https-health-check\",\n name=\"https-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n https_health_check={\n \"port\": 443,\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 https_health_check = new Gcp.Compute.HealthCheck(\"https-health-check\", new()\n {\n Name = \"https-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HttpsHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpsHealthCheckArgs\n {\n Port = 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"https-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"https-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHttpsHealthCheck: \u0026compute.HealthCheckHttpsHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(443),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpsHealthCheckArgs;\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 https_health_check = new HealthCheck(\"https-health-check\", HealthCheckArgs.builder()\n .name(\"https-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .httpsHealthCheck(HealthCheckHttpsHealthCheckArgs.builder()\n .port(\"443\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n https-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: https-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n httpsHealthCheck:\n port: '443'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Https Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst https_health_check = new gcp.compute.HealthCheck(\"https-health-check\", {\n name: \"https-health-check\",\n description: \"Health check via https\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n httpsHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n host: \"1.2.3.4\",\n requestPath: \"/mypath\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttps_health_check = gcp.compute.HealthCheck(\"https-health-check\",\n name=\"https-health-check\",\n description=\"Health check via https\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n https_health_check={\n \"port_name\": \"health-check-port\",\n \"port_specification\": \"USE_NAMED_PORT\",\n \"host\": \"1.2.3.4\",\n \"request_path\": \"/mypath\",\n \"proxy_header\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 https_health_check = new Gcp.Compute.HealthCheck(\"https-health-check\", new()\n {\n Name = \"https-health-check\",\n Description = \"Health check via https\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n HttpsHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpsHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Host = \"1.2.3.4\",\n RequestPath = \"/mypath\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"https-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"https-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via https\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tHttpsHealthCheck: \u0026compute.HealthCheckHttpsHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tHost: pulumi.String(\"1.2.3.4\"),\n\t\t\t\tRequestPath: pulumi.String(\"/mypath\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpsHealthCheckArgs;\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 https_health_check = new HealthCheck(\"https-health-check\", HealthCheckArgs.builder()\n .name(\"https-health-check\")\n .description(\"Health check via https\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .httpsHealthCheck(HealthCheckHttpsHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .host(\"1.2.3.4\")\n .requestPath(\"/mypath\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n https-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: https-health-check\n description: Health check via https\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n httpsHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n host: 1.2.3.4\n requestPath: /mypath\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Http2\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http2_health_check = new gcp.compute.HealthCheck(\"http2-health-check\", {\n name: \"http2-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n http2HealthCheck: {\n port: 443,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp2_health_check = gcp.compute.HealthCheck(\"http2-health-check\",\n name=\"http2-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n http2_health_check={\n \"port\": 443,\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 http2_health_check = new Gcp.Compute.HealthCheck(\"http2-health-check\", new()\n {\n Name = \"http2-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n Http2HealthCheck = new Gcp.Compute.Inputs.HealthCheckHttp2HealthCheckArgs\n {\n Port = 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"http2-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"http2-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHttp2HealthCheck: \u0026compute.HealthCheckHttp2HealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(443),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttp2HealthCheckArgs;\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 http2_health_check = new HealthCheck(\"http2-health-check\", HealthCheckArgs.builder()\n .name(\"http2-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .http2HealthCheck(HealthCheckHttp2HealthCheckArgs.builder()\n .port(\"443\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http2-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: http2-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n http2HealthCheck:\n port: '443'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Http2 Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http2_health_check = new gcp.compute.HealthCheck(\"http2-health-check\", {\n name: \"http2-health-check\",\n description: \"Health check via http2\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n http2HealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n host: \"1.2.3.4\",\n requestPath: \"/mypath\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp2_health_check = gcp.compute.HealthCheck(\"http2-health-check\",\n name=\"http2-health-check\",\n description=\"Health check via http2\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n http2_health_check={\n \"port_name\": \"health-check-port\",\n \"port_specification\": \"USE_NAMED_PORT\",\n \"host\": \"1.2.3.4\",\n \"request_path\": \"/mypath\",\n \"proxy_header\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 http2_health_check = new Gcp.Compute.HealthCheck(\"http2-health-check\", new()\n {\n Name = \"http2-health-check\",\n Description = \"Health check via http2\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n Http2HealthCheck = new Gcp.Compute.Inputs.HealthCheckHttp2HealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Host = \"1.2.3.4\",\n RequestPath = \"/mypath\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"http2-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"http2-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via http2\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tHttp2HealthCheck: \u0026compute.HealthCheckHttp2HealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tHost: pulumi.String(\"1.2.3.4\"),\n\t\t\t\tRequestPath: pulumi.String(\"/mypath\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttp2HealthCheckArgs;\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 http2_health_check = new HealthCheck(\"http2-health-check\", HealthCheckArgs.builder()\n .name(\"http2-health-check\")\n .description(\"Health check via http2\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .http2HealthCheck(HealthCheckHttp2HealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .host(\"1.2.3.4\")\n .requestPath(\"/mypath\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http2-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: http2-health-check\n description: Health check via http2\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n http2HealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n host: 1.2.3.4\n requestPath: /mypath\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Grpc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst grpc_health_check = new gcp.compute.HealthCheck(\"grpc-health-check\", {\n name: \"grpc-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n grpcHealthCheck: {\n port: 443,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngrpc_health_check = gcp.compute.HealthCheck(\"grpc-health-check\",\n name=\"grpc-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n grpc_health_check={\n \"port\": 443,\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 grpc_health_check = new Gcp.Compute.HealthCheck(\"grpc-health-check\", new()\n {\n Name = \"grpc-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n GrpcHealthCheck = new Gcp.Compute.Inputs.HealthCheckGrpcHealthCheckArgs\n {\n Port = 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"grpc-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"grpc-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tGrpcHealthCheck: \u0026compute.HealthCheckGrpcHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(443),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckGrpcHealthCheckArgs;\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 grpc_health_check = new HealthCheck(\"grpc-health-check\", HealthCheckArgs.builder()\n .name(\"grpc-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .grpcHealthCheck(HealthCheckGrpcHealthCheckArgs.builder()\n .port(\"443\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n grpc-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: grpc-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n grpcHealthCheck:\n port: '443'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check Grpc Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst grpc_health_check = new gcp.compute.HealthCheck(\"grpc-health-check\", {\n name: \"grpc-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n grpcHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n grpcServiceName: \"testservice\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngrpc_health_check = gcp.compute.HealthCheck(\"grpc-health-check\",\n name=\"grpc-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n grpc_health_check={\n \"port_name\": \"health-check-port\",\n \"port_specification\": \"USE_NAMED_PORT\",\n \"grpc_service_name\": \"testservice\",\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 grpc_health_check = new Gcp.Compute.HealthCheck(\"grpc-health-check\", new()\n {\n Name = \"grpc-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n GrpcHealthCheck = new Gcp.Compute.Inputs.HealthCheckGrpcHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n GrpcServiceName = \"testservice\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"grpc-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"grpc-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tGrpcHealthCheck: \u0026compute.HealthCheckGrpcHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tGrpcServiceName: pulumi.String(\"testservice\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckGrpcHealthCheckArgs;\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 grpc_health_check = new HealthCheck(\"grpc-health-check\", HealthCheckArgs.builder()\n .name(\"grpc-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .grpcHealthCheck(HealthCheckGrpcHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .grpcServiceName(\"testservice\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n grpc-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: grpc-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n grpcHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n grpcServiceName: testservice\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Health Check With Logging\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst health_check_with_logging = new gcp.compute.HealthCheck(\"health-check-with-logging\", {\n name: \"tcp-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n tcpHealthCheck: {\n port: 22,\n },\n logConfig: {\n enable: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check_with_logging = gcp.compute.HealthCheck(\"health-check-with-logging\",\n name=\"tcp-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n tcp_health_check={\n \"port\": 22,\n },\n log_config={\n \"enable\": 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 health_check_with_logging = new Gcp.Compute.HealthCheck(\"health-check-with-logging\", new()\n {\n Name = \"tcp-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 22,\n },\n LogConfig = new Gcp.Compute.Inputs.HealthCheckLogConfigArgs\n {\n Enable = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"health-check-with-logging\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"tcp-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(22),\n\t\t\t},\n\t\t\tLogConfig: \u0026compute.HealthCheckLogConfigArgs{\n\t\t\t\tEnable: 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.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckLogConfigArgs;\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 health_check_with_logging = new HealthCheck(\"health-check-with-logging\", HealthCheckArgs.builder()\n .name(\"tcp-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"22\")\n .build())\n .logConfig(HealthCheckLogConfigArgs.builder()\n .enable(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n health-check-with-logging:\n type: gcp:compute:HealthCheck\n properties:\n name: tcp-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n tcpHealthCheck:\n port: '22'\n logConfig:\n enable: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nHealthCheck can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/healthChecks/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, HealthCheck can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/healthCheck:HealthCheck default projects/{{project}}/global/healthChecks/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/healthCheck:HealthCheck default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/healthCheck:HealthCheck default {{name}}\n```\n\n", "properties": { "checkIntervalSec": { "type": "integer", @@ -147394,7 +147394,7 @@ } }, "gcp:compute/instance:Instance": { - "description": "Manages a VM instance resource within GCE. For more information see\n[the official documentation](https://cloud.google.com/compute/docs/instances)\nand\n[API](https://cloud.google.com/compute/docs/reference/latest/instances).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"my-custom-sa\",\n displayName: \"Custom SA for VM Instance\",\n});\nconst defaultInstance = new gcp.compute.Instance(\"default\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"my-instance\",\n machineType: \"n2-standard-2\",\n zone: \"us-central1-a\",\n tags: [\n \"foo\",\n \"bar\",\n ],\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n labels: {\n my_label: \"value\",\n },\n },\n },\n scratchDisks: [{\n \"interface\": \"NVME\",\n }],\n metadata: {\n foo: \"bar\",\n },\n metadataStartupScript: \"echo hi \u003e /test.txt\",\n serviceAccount: {\n email: _default.email,\n scopes: [\"cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"my-custom-sa\",\n display_name=\"Custom SA for VM Instance\")\ndefault_instance = gcp.compute.Instance(\"default\",\n network_interfaces=[{\n \"accessConfigs\": [{}],\n \"network\": \"default\",\n }],\n name=\"my-instance\",\n machine_type=\"n2-standard-2\",\n zone=\"us-central1-a\",\n tags=[\n \"foo\",\n \"bar\",\n ],\n boot_disk={\n \"initializeParams\": {\n \"image\": \"debian-cloud/debian-11\",\n \"labels\": {\n \"my_label\": \"value\",\n },\n },\n },\n scratch_disks=[{\n \"interface\": \"NVME\",\n }],\n metadata={\n \"foo\": \"bar\",\n },\n metadata_startup_script=\"echo hi \u003e /test.txt\",\n service_account={\n \"email\": default.email,\n \"scopes\": [\"cloud-platform\"],\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 @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"my-custom-sa\",\n DisplayName = \"Custom SA for VM Instance\",\n });\n\n var defaultInstance = new Gcp.Compute.Instance(\"default\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"my-instance\",\n MachineType = \"n2-standard-2\",\n Zone = \"us-central1-a\",\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n Labels = \n {\n { \"my_label\", \"value\" },\n },\n },\n },\n ScratchDisks = new[]\n {\n new Gcp.Compute.Inputs.InstanceScratchDiskArgs\n {\n Interface = \"NVME\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n MetadataStartupScript = \"echo hi \u003e /test.txt\",\n ServiceAccount = new Gcp.Compute.Inputs.InstanceServiceAccountArgs\n {\n Email = @default.Email,\n Scopes = new[]\n {\n \"cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-custom-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Custom SA for VM Instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tMachineType: pulumi.String(\"n2-standard-2\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\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\tLabels: pulumi.Map{\n\t\t\t\t\t\t\"my_label\": pulumi.Any(\"value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tScratchDisks: compute.InstanceScratchDiskArray{\n\t\t\t\t\u0026compute.InstanceScratchDiskArgs{\n\t\t\t\t\tInterface: pulumi.String(\"NVME\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMetadataStartupScript: pulumi.String(\"echo hi \u003e /test.txt\"),\n\t\t\tServiceAccount: \u0026compute.InstanceServiceAccountArgs{\n\t\t\t\tEmail: _default.Email,\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"cloud-platform\"),\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\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.gcp.compute.inputs.InstanceScratchDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceServiceAccountArgs;\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 Account(\"default\", AccountArgs.builder()\n .accountId(\"my-custom-sa\")\n .displayName(\"Custom SA for VM Instance\")\n .build());\n\n var defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"my-instance\")\n .machineType(\"n2-standard-2\")\n .zone(\"us-central1-a\")\n .tags( \n \"foo\",\n \"bar\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .labels(Map.of(\"my_label\", \"value\"))\n .build())\n .build())\n .scratchDisks(InstanceScratchDiskArgs.builder()\n .interface_(\"NVME\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .metadataStartupScript(\"echo hi \u003e /test.txt\")\n .serviceAccount(InstanceServiceAccountArgs.builder()\n .email(default_.email())\n .scopes(\"cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-custom-sa\n displayName: Custom SA for VM Instance\n defaultInstance:\n type: gcp:compute:Instance\n name: default\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: my-instance\n machineType: n2-standard-2\n zone: us-central1-a\n tags:\n - foo\n - bar\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n labels:\n my_label: value\n scratchDisks:\n - interface: NVME\n metadata:\n foo: bar\n metadataStartupScript: echo hi \u003e /test.txt\n serviceAccount:\n email: ${default.email}\n scopes:\n - cloud-platform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instances/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, instances can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/instance:Instance default projects/{{project}}/zones/{{zone}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instance:Instance default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instance:Instance default {{name}}\n```\n\n", + "description": "Manages a VM instance resource within GCE. For more information see\n[the official documentation](https://cloud.google.com/compute/docs/instances)\nand\n[API](https://cloud.google.com/compute/docs/reference/latest/instances).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"my-custom-sa\",\n displayName: \"Custom SA for VM Instance\",\n});\nconst defaultInstance = new gcp.compute.Instance(\"default\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"my-instance\",\n machineType: \"n2-standard-2\",\n zone: \"us-central1-a\",\n tags: [\n \"foo\",\n \"bar\",\n ],\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n labels: {\n my_label: \"value\",\n },\n },\n },\n scratchDisks: [{\n \"interface\": \"NVME\",\n }],\n metadata: {\n foo: \"bar\",\n },\n metadataStartupScript: \"echo hi \u003e /test.txt\",\n serviceAccount: {\n email: _default.email,\n scopes: [\"cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"my-custom-sa\",\n display_name=\"Custom SA for VM Instance\")\ndefault_instance = gcp.compute.Instance(\"default\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"my-instance\",\n machine_type=\"n2-standard-2\",\n zone=\"us-central1-a\",\n tags=[\n \"foo\",\n \"bar\",\n ],\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n \"labels\": {\n \"my_label\": \"value\",\n },\n },\n },\n scratch_disks=[{\n \"interface\": \"NVME\",\n }],\n metadata={\n \"foo\": \"bar\",\n },\n metadata_startup_script=\"echo hi \u003e /test.txt\",\n service_account={\n \"email\": default.email,\n \"scopes\": [\"cloud-platform\"],\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 @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"my-custom-sa\",\n DisplayName = \"Custom SA for VM Instance\",\n });\n\n var defaultInstance = new Gcp.Compute.Instance(\"default\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"my-instance\",\n MachineType = \"n2-standard-2\",\n Zone = \"us-central1-a\",\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n Labels = \n {\n { \"my_label\", \"value\" },\n },\n },\n },\n ScratchDisks = new[]\n {\n new Gcp.Compute.Inputs.InstanceScratchDiskArgs\n {\n Interface = \"NVME\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n MetadataStartupScript = \"echo hi \u003e /test.txt\",\n ServiceAccount = new Gcp.Compute.Inputs.InstanceServiceAccountArgs\n {\n Email = @default.Email,\n Scopes = new[]\n {\n \"cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-custom-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Custom SA for VM Instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tMachineType: pulumi.String(\"n2-standard-2\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\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\tLabels: pulumi.Map{\n\t\t\t\t\t\t\"my_label\": pulumi.Any(\"value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tScratchDisks: compute.InstanceScratchDiskArray{\n\t\t\t\t\u0026compute.InstanceScratchDiskArgs{\n\t\t\t\t\tInterface: pulumi.String(\"NVME\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMetadataStartupScript: pulumi.String(\"echo hi \u003e /test.txt\"),\n\t\t\tServiceAccount: \u0026compute.InstanceServiceAccountArgs{\n\t\t\t\tEmail: _default.Email,\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"cloud-platform\"),\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\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.gcp.compute.inputs.InstanceScratchDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceServiceAccountArgs;\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 Account(\"default\", AccountArgs.builder()\n .accountId(\"my-custom-sa\")\n .displayName(\"Custom SA for VM Instance\")\n .build());\n\n var defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"my-instance\")\n .machineType(\"n2-standard-2\")\n .zone(\"us-central1-a\")\n .tags( \n \"foo\",\n \"bar\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .labels(Map.of(\"my_label\", \"value\"))\n .build())\n .build())\n .scratchDisks(InstanceScratchDiskArgs.builder()\n .interface_(\"NVME\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .metadataStartupScript(\"echo hi \u003e /test.txt\")\n .serviceAccount(InstanceServiceAccountArgs.builder()\n .email(default_.email())\n .scopes(\"cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-custom-sa\n displayName: Custom SA for VM Instance\n defaultInstance:\n type: gcp:compute:Instance\n name: default\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: my-instance\n machineType: n2-standard-2\n zone: us-central1-a\n tags:\n - foo\n - bar\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n labels:\n my_label: value\n scratchDisks:\n - interface: NVME\n metadata:\n foo: bar\n metadataStartupScript: echo hi \u003e /test.txt\n serviceAccount:\n email: ${default.email}\n scopes:\n - cloud-platform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instances/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, instances can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/instance:Instance default projects/{{project}}/zones/{{zone}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instance:Instance default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instance:Instance default {{name}}\n```\n\n", "properties": { "advancedMachineFeatures": { "$ref": "#/types/gcp:compute/InstanceAdvancedMachineFeatures:InstanceAdvancedMachineFeatures", @@ -148605,7 +148605,7 @@ } }, "gcp:compute/instanceFromTemplate:InstanceFromTemplate": { - "description": "Manages a VM instance resource within GCE. For more information see\n[the official documentation](https://cloud.google.com/compute/docs/instances)\nand\n[API](https://cloud.google.com/compute/docs/reference/latest/instances).\n\nThis resource is specifically to create a compute instance from a given\n`source_instance_template`. To create an instance without a template, use the\n`gcp.compute.Instance` resource.\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tpl = new gcp.compute.InstanceTemplate(\"tpl\", {\n name: \"template\",\n machineType: \"e2-medium\",\n disks: [{\n sourceImage: \"debian-cloud/debian-11\",\n autoDelete: true,\n diskSizeGb: 100,\n boot: true,\n }],\n networkInterfaces: [{\n network: \"default\",\n }],\n metadata: {\n foo: \"bar\",\n },\n canIpForward: true,\n});\nconst tplInstanceFromTemplate = new gcp.compute.InstanceFromTemplate(\"tpl\", {\n name: \"instance-from-template\",\n zone: \"us-central1-a\",\n sourceInstanceTemplate: tpl.selfLinkUnique,\n canIpForward: false,\n labels: {\n my_key: \"my_value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntpl = gcp.compute.InstanceTemplate(\"tpl\",\n name=\"template\",\n machine_type=\"e2-medium\",\n disks=[{\n \"sourceImage\": \"debian-cloud/debian-11\",\n \"autoDelete\": True,\n \"diskSizeGb\": 100,\n \"boot\": True,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n metadata={\n \"foo\": \"bar\",\n },\n can_ip_forward=True)\ntpl_instance_from_template = gcp.compute.InstanceFromTemplate(\"tpl\",\n name=\"instance-from-template\",\n zone=\"us-central1-a\",\n source_instance_template=tpl.self_link_unique,\n can_ip_forward=False,\n labels={\n \"my_key\": \"my_value\",\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 tpl = new Gcp.Compute.InstanceTemplate(\"tpl\", new()\n {\n Name = \"template\",\n MachineType = \"e2-medium\",\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = \"debian-cloud/debian-11\",\n AutoDelete = true,\n DiskSizeGb = 100,\n Boot = true,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n CanIpForward = true,\n });\n\n var tplInstanceFromTemplate = new Gcp.Compute.InstanceFromTemplate(\"tpl\", new()\n {\n Name = \"instance-from-template\",\n Zone = \"us-central1-a\",\n SourceInstanceTemplate = tpl.SelfLinkUnique,\n CanIpForward = false,\n Labels = \n {\n { \"my_key\", \"my_value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttpl, err := compute.NewInstanceTemplate(ctx, \"tpl\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"template\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.Map{\n\t\t\t\t\"foo\": pulumi.Any(\"bar\"),\n\t\t\t},\n\t\t\tCanIpForward: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceFromTemplate(ctx, \"tpl\", \u0026compute.InstanceFromTemplateArgs{\n\t\t\tName: pulumi.String(\"instance-from-template\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tSourceInstanceTemplate: tpl.SelfLinkUnique,\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_value\"),\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.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.InstanceFromTemplate;\nimport com.pulumi.gcp.compute.InstanceFromTemplateArgs;\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 tpl = new InstanceTemplate(\"tpl\", InstanceTemplateArgs.builder()\n .name(\"template\")\n .machineType(\"e2-medium\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(\"debian-cloud/debian-11\")\n .autoDelete(true)\n .diskSizeGb(100)\n .boot(true)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .canIpForward(true)\n .build());\n\n var tplInstanceFromTemplate = new InstanceFromTemplate(\"tplInstanceFromTemplate\", InstanceFromTemplateArgs.builder()\n .name(\"instance-from-template\")\n .zone(\"us-central1-a\")\n .sourceInstanceTemplate(tpl.selfLinkUnique())\n .canIpForward(false)\n .labels(Map.of(\"my_key\", \"my_value\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpl:\n type: gcp:compute:InstanceTemplate\n properties:\n name: template\n machineType: e2-medium\n disks:\n - sourceImage: debian-cloud/debian-11\n autoDelete: true\n diskSizeGb: 100\n boot: true\n networkInterfaces:\n - network: default\n metadata:\n foo: bar\n canIpForward: true\n tplInstanceFromTemplate:\n type: gcp:compute:InstanceFromTemplate\n name: tpl\n properties:\n name: instance-from-template\n zone: us-central1-a\n sourceInstanceTemplate: ${tpl.selfLinkUnique}\n canIpForward: false\n labels:\n my_key: my_value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "Manages a VM instance resource within GCE. For more information see\n[the official documentation](https://cloud.google.com/compute/docs/instances)\nand\n[API](https://cloud.google.com/compute/docs/reference/latest/instances).\n\nThis resource is specifically to create a compute instance from a given\n`source_instance_template`. To create an instance without a template, use the\n`gcp.compute.Instance` resource.\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tpl = new gcp.compute.InstanceTemplate(\"tpl\", {\n name: \"template\",\n machineType: \"e2-medium\",\n disks: [{\n sourceImage: \"debian-cloud/debian-11\",\n autoDelete: true,\n diskSizeGb: 100,\n boot: true,\n }],\n networkInterfaces: [{\n network: \"default\",\n }],\n metadata: {\n foo: \"bar\",\n },\n canIpForward: true,\n});\nconst tplInstanceFromTemplate = new gcp.compute.InstanceFromTemplate(\"tpl\", {\n name: \"instance-from-template\",\n zone: \"us-central1-a\",\n sourceInstanceTemplate: tpl.selfLinkUnique,\n canIpForward: false,\n labels: {\n my_key: \"my_value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntpl = gcp.compute.InstanceTemplate(\"tpl\",\n name=\"template\",\n machine_type=\"e2-medium\",\n disks=[{\n \"source_image\": \"debian-cloud/debian-11\",\n \"auto_delete\": True,\n \"disk_size_gb\": 100,\n \"boot\": True,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n metadata={\n \"foo\": \"bar\",\n },\n can_ip_forward=True)\ntpl_instance_from_template = gcp.compute.InstanceFromTemplate(\"tpl\",\n name=\"instance-from-template\",\n zone=\"us-central1-a\",\n source_instance_template=tpl.self_link_unique,\n can_ip_forward=False,\n labels={\n \"my_key\": \"my_value\",\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 tpl = new Gcp.Compute.InstanceTemplate(\"tpl\", new()\n {\n Name = \"template\",\n MachineType = \"e2-medium\",\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = \"debian-cloud/debian-11\",\n AutoDelete = true,\n DiskSizeGb = 100,\n Boot = true,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n CanIpForward = true,\n });\n\n var tplInstanceFromTemplate = new Gcp.Compute.InstanceFromTemplate(\"tpl\", new()\n {\n Name = \"instance-from-template\",\n Zone = \"us-central1-a\",\n SourceInstanceTemplate = tpl.SelfLinkUnique,\n CanIpForward = false,\n Labels = \n {\n { \"my_key\", \"my_value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttpl, err := compute.NewInstanceTemplate(ctx, \"tpl\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"template\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.Map{\n\t\t\t\t\"foo\": pulumi.Any(\"bar\"),\n\t\t\t},\n\t\t\tCanIpForward: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceFromTemplate(ctx, \"tpl\", \u0026compute.InstanceFromTemplateArgs{\n\t\t\tName: pulumi.String(\"instance-from-template\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tSourceInstanceTemplate: tpl.SelfLinkUnique,\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_value\"),\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.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.InstanceFromTemplate;\nimport com.pulumi.gcp.compute.InstanceFromTemplateArgs;\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 tpl = new InstanceTemplate(\"tpl\", InstanceTemplateArgs.builder()\n .name(\"template\")\n .machineType(\"e2-medium\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(\"debian-cloud/debian-11\")\n .autoDelete(true)\n .diskSizeGb(100)\n .boot(true)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .canIpForward(true)\n .build());\n\n var tplInstanceFromTemplate = new InstanceFromTemplate(\"tplInstanceFromTemplate\", InstanceFromTemplateArgs.builder()\n .name(\"instance-from-template\")\n .zone(\"us-central1-a\")\n .sourceInstanceTemplate(tpl.selfLinkUnique())\n .canIpForward(false)\n .labels(Map.of(\"my_key\", \"my_value\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpl:\n type: gcp:compute:InstanceTemplate\n properties:\n name: template\n machineType: e2-medium\n disks:\n - sourceImage: debian-cloud/debian-11\n autoDelete: true\n diskSizeGb: 100\n boot: true\n networkInterfaces:\n - network: default\n metadata:\n foo: bar\n canIpForward: true\n tplInstanceFromTemplate:\n type: gcp:compute:InstanceFromTemplate\n name: tpl\n properties:\n name: instance-from-template\n zone: us-central1-a\n sourceInstanceTemplate: ${tpl.selfLinkUnique}\n canIpForward: false\n labels:\n my_key: my_value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "advancedMachineFeatures": { "$ref": "#/types/gcp:compute/InstanceFromTemplateAdvancedMachineFeatures:InstanceFromTemplateAdvancedMachineFeatures", @@ -149381,7 +149381,7 @@ } }, "gcp:compute/instanceGroupManager:InstanceGroupManager": { - "description": "The Google Compute Engine Instance Group Manager API creates and manages pools\nof homogeneous Compute Engine virtual machine instances from a common instance\ntemplate. For more information, see [the official documentation](https://cloud.google.com/compute/docs/instance-groups/manager)\nand [API](https://cloud.google.com/compute/docs/reference/latest/instanceGroupManagers)\n\n\u003e **Note:** Use [gcp.compute.RegionInstanceGroupManager](https://www.terraform.io/docs/providers/google/r/compute_region_instance_group_manager.html) to create a regional (multi-zone) instance group manager.\n\n## Example Usage\n\n### With Top Level Instance Template (`Google` Provider)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst autohealing = new gcp.compute.HealthCheck(\"autohealing\", {\n name: \"autohealing-health-check\",\n checkIntervalSec: 5,\n timeoutSec: 5,\n healthyThreshold: 2,\n unhealthyThreshold: 10,\n httpHealthCheck: {\n requestPath: \"/healthz\",\n port: 8080,\n },\n});\nconst appserver = new gcp.compute.InstanceGroupManager(\"appserver\", {\n name: \"appserver-igm\",\n baseInstanceName: \"app\",\n zone: \"us-central1-a\",\n versions: [{\n instanceTemplate: appserverGoogleComputeInstanceTemplate.selfLinkUnique,\n }],\n allInstancesConfig: {\n metadata: {\n metadata_key: \"metadata_value\",\n },\n labels: {\n label_key: \"label_value\",\n },\n },\n targetPools: [appserverGoogleComputeTargetPool.id],\n targetSize: 2,\n namedPorts: [{\n name: \"customhttp\",\n port: 8888,\n }],\n autoHealingPolicies: {\n healthCheck: autohealing.id,\n initialDelaySec: 300,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nautohealing = gcp.compute.HealthCheck(\"autohealing\",\n name=\"autohealing-health-check\",\n check_interval_sec=5,\n timeout_sec=5,\n healthy_threshold=2,\n unhealthy_threshold=10,\n http_health_check={\n \"requestPath\": \"/healthz\",\n \"port\": 8080,\n })\nappserver = gcp.compute.InstanceGroupManager(\"appserver\",\n name=\"appserver-igm\",\n base_instance_name=\"app\",\n zone=\"us-central1-a\",\n versions=[{\n \"instanceTemplate\": appserver_google_compute_instance_template[\"selfLinkUnique\"],\n }],\n all_instances_config={\n \"metadata\": {\n \"metadata_key\": \"metadata_value\",\n },\n \"labels\": {\n \"label_key\": \"label_value\",\n },\n },\n target_pools=[appserver_google_compute_target_pool[\"id\"]],\n target_size=2,\n named_ports=[{\n \"name\": \"customhttp\",\n \"port\": 8888,\n }],\n auto_healing_policies={\n \"healthCheck\": autohealing.id,\n \"initialDelaySec\": 300,\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 autohealing = new Gcp.Compute.HealthCheck(\"autohealing\", new()\n {\n Name = \"autohealing-health-check\",\n CheckIntervalSec = 5,\n TimeoutSec = 5,\n HealthyThreshold = 2,\n UnhealthyThreshold = 10,\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n RequestPath = \"/healthz\",\n Port = 8080,\n },\n });\n\n var appserver = new Gcp.Compute.InstanceGroupManager(\"appserver\", new()\n {\n Name = \"appserver-igm\",\n BaseInstanceName = \"app\",\n Zone = \"us-central1-a\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = appserverGoogleComputeInstanceTemplate.SelfLinkUnique,\n },\n },\n AllInstancesConfig = new Gcp.Compute.Inputs.InstanceGroupManagerAllInstancesConfigArgs\n {\n Metadata = \n {\n { \"metadata_key\", \"metadata_value\" },\n },\n Labels = \n {\n { \"label_key\", \"label_value\" },\n },\n },\n TargetPools = new[]\n {\n appserverGoogleComputeTargetPool.Id,\n },\n TargetSize = 2,\n NamedPorts = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerNamedPortArgs\n {\n Name = \"customhttp\",\n Port = 8888,\n },\n },\n AutoHealingPolicies = new Gcp.Compute.Inputs.InstanceGroupManagerAutoHealingPoliciesArgs\n {\n HealthCheck = autohealing.Id,\n InitialDelaySec = 300,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tautohealing, err := compute.NewHealthCheck(ctx, \"autohealing\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"autohealing-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(5),\n\t\t\tTimeoutSec: pulumi.Int(5),\n\t\t\tHealthyThreshold: pulumi.Int(2),\n\t\t\tUnhealthyThreshold: pulumi.Int(10),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tRequestPath: pulumi.String(\"/healthz\"),\n\t\t\t\tPort: pulumi.Int(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 = compute.NewInstanceGroupManager(ctx, \"appserver\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"appserver-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"app\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserverGoogleComputeInstanceTemplate.SelfLinkUnique),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllInstancesConfig: \u0026compute.InstanceGroupManagerAllInstancesConfigArgs{\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"metadata_key\": pulumi.String(\"metadata_value\"),\n\t\t\t\t},\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label_key\": pulumi.String(\"label_value\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetPools: pulumi.StringArray{\n\t\t\t\tappserverGoogleComputeTargetPool.Id,\n\t\t\t},\n\t\t\tTargetSize: pulumi.Int(2),\n\t\t\tNamedPorts: compute.InstanceGroupManagerNamedPortArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerNamedPortArgs{\n\t\t\t\t\tName: pulumi.String(\"customhttp\"),\n\t\t\t\t\tPort: pulumi.Int(8888),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutoHealingPolicies: \u0026compute.InstanceGroupManagerAutoHealingPoliciesArgs{\n\t\t\t\tHealthCheck: autohealing.ID(),\n\t\t\t\tInitialDelaySec: pulumi.Int(300),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerAllInstancesConfigArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerNamedPortArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerAutoHealingPoliciesArgs;\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 autohealing = new HealthCheck(\"autohealing\", HealthCheckArgs.builder()\n .name(\"autohealing-health-check\")\n .checkIntervalSec(5)\n .timeoutSec(5)\n .healthyThreshold(2)\n .unhealthyThreshold(10)\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .requestPath(\"/healthz\")\n .port(\"8080\")\n .build())\n .build());\n\n var appserver = new InstanceGroupManager(\"appserver\", InstanceGroupManagerArgs.builder()\n .name(\"appserver-igm\")\n .baseInstanceName(\"app\")\n .zone(\"us-central1-a\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(appserverGoogleComputeInstanceTemplate.selfLinkUnique())\n .build())\n .allInstancesConfig(InstanceGroupManagerAllInstancesConfigArgs.builder()\n .metadata(Map.of(\"metadata_key\", \"metadata_value\"))\n .labels(Map.of(\"label_key\", \"label_value\"))\n .build())\n .targetPools(appserverGoogleComputeTargetPool.id())\n .targetSize(2)\n .namedPorts(InstanceGroupManagerNamedPortArgs.builder()\n .name(\"customhttp\")\n .port(8888)\n .build())\n .autoHealingPolicies(InstanceGroupManagerAutoHealingPoliciesArgs.builder()\n .healthCheck(autohealing.id())\n .initialDelaySec(300)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n autohealing:\n type: gcp:compute:HealthCheck\n properties:\n name: autohealing-health-check\n checkIntervalSec: 5\n timeoutSec: 5\n healthyThreshold: 2\n unhealthyThreshold: 10 # 50 seconds\n httpHealthCheck:\n requestPath: /healthz\n port: '8080'\n appserver:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: appserver-igm\n baseInstanceName: app\n zone: us-central1-a\n versions:\n - instanceTemplate: ${appserverGoogleComputeInstanceTemplate.selfLinkUnique}\n allInstancesConfig:\n metadata:\n metadata_key: metadata_value\n labels:\n label_key: label_value\n targetPools:\n - ${appserverGoogleComputeTargetPool.id}\n targetSize: 2\n namedPorts:\n - name: customhttp\n port: 8888\n autoHealingPolicies:\n healthCheck: ${autohealing.id}\n initialDelaySec: 300\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Multiple Versions (`Google-Beta` Provider)\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst appserver = new gcp.compute.InstanceGroupManager(\"appserver\", {\n name: \"appserver-igm\",\n baseInstanceName: \"app\",\n zone: \"us-central1-a\",\n targetSize: 5,\n versions: [\n {\n name: \"appserver\",\n instanceTemplate: appserverGoogleComputeInstanceTemplate.selfLinkUnique,\n },\n {\n name: \"appserver-canary\",\n instanceTemplate: appserver_canary.selfLinkUnique,\n targetSize: {\n fixed: 1,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nappserver = gcp.compute.InstanceGroupManager(\"appserver\",\n name=\"appserver-igm\",\n base_instance_name=\"app\",\n zone=\"us-central1-a\",\n target_size=5,\n versions=[\n {\n \"name\": \"appserver\",\n \"instanceTemplate\": appserver_google_compute_instance_template[\"selfLinkUnique\"],\n },\n {\n \"name\": \"appserver-canary\",\n \"instanceTemplate\": appserver_canary[\"selfLinkUnique\"],\n \"targetSize\": {\n \"fixed\": 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 appserver = new Gcp.Compute.InstanceGroupManager(\"appserver\", new()\n {\n Name = \"appserver-igm\",\n BaseInstanceName = \"app\",\n Zone = \"us-central1-a\",\n TargetSize = 5,\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n Name = \"appserver\",\n InstanceTemplate = appserverGoogleComputeInstanceTemplate.SelfLinkUnique,\n },\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n Name = \"appserver-canary\",\n InstanceTemplate = appserver_canary.SelfLinkUnique,\n TargetSize = new Gcp.Compute.Inputs.InstanceGroupManagerVersionTargetSizeArgs\n {\n Fixed = 1,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewInstanceGroupManager(ctx, \"appserver\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"appserver-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"app\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tTargetSize: pulumi.Int(5),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tName: pulumi.String(\"appserver\"),\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserverGoogleComputeInstanceTemplate.SelfLinkUnique),\n\t\t\t\t},\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tName: pulumi.String(\"appserver-canary\"),\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserver_canary.SelfLinkUnique),\n\t\t\t\t\tTargetSize: \u0026compute.InstanceGroupManagerVersionTargetSizeArgs{\n\t\t\t\t\t\tFixed: pulumi.Int(1),\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.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionTargetSizeArgs;\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 appserver = new InstanceGroupManager(\"appserver\", InstanceGroupManagerArgs.builder()\n .name(\"appserver-igm\")\n .baseInstanceName(\"app\")\n .zone(\"us-central1-a\")\n .targetSize(5)\n .versions( \n InstanceGroupManagerVersionArgs.builder()\n .name(\"appserver\")\n .instanceTemplate(appserverGoogleComputeInstanceTemplate.selfLinkUnique())\n .build(),\n InstanceGroupManagerVersionArgs.builder()\n .name(\"appserver-canary\")\n .instanceTemplate(appserver_canary.selfLinkUnique())\n .targetSize(InstanceGroupManagerVersionTargetSizeArgs.builder()\n .fixed(1)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n appserver:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: appserver-igm\n baseInstanceName: app\n zone: us-central1-a\n targetSize: 5\n versions:\n - name: appserver\n instanceTemplate: ${appserverGoogleComputeInstanceTemplate.selfLinkUnique}\n - name: appserver-canary\n instanceTemplate: ${[\"appserver-canary\"].selfLinkUnique}\n targetSize:\n fixed: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Standby Policy (`Google-Beta` Provider)\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst igm_sr = new gcp.compute.InstanceGroupManager(\"igm-sr\", {\n name: \"tf-sr-igm\",\n baseInstanceName: \"tf-sr-igm-instance\",\n zone: \"us-central1-a\",\n targetSize: 5,\n versions: [{\n instanceTemplate: sr_igm.selfLink,\n name: \"primary\",\n }],\n standbyPolicy: {\n initialDelaySec: 30,\n mode: \"MANUAL\",\n },\n targetSuspendedSize: 2,\n targetStoppedSize: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nigm_sr = gcp.compute.InstanceGroupManager(\"igm-sr\",\n name=\"tf-sr-igm\",\n base_instance_name=\"tf-sr-igm-instance\",\n zone=\"us-central1-a\",\n target_size=5,\n versions=[{\n \"instanceTemplate\": sr_igm[\"selfLink\"],\n \"name\": \"primary\",\n }],\n standby_policy={\n \"initialDelaySec\": 30,\n \"mode\": \"MANUAL\",\n },\n target_suspended_size=2,\n target_stopped_size=1)\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 igm_sr = new Gcp.Compute.InstanceGroupManager(\"igm-sr\", new()\n {\n Name = \"tf-sr-igm\",\n BaseInstanceName = \"tf-sr-igm-instance\",\n Zone = \"us-central1-a\",\n TargetSize = 5,\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = sr_igm.SelfLink,\n Name = \"primary\",\n },\n },\n StandbyPolicy = new Gcp.Compute.Inputs.InstanceGroupManagerStandbyPolicyArgs\n {\n InitialDelaySec = 30,\n Mode = \"MANUAL\",\n },\n TargetSuspendedSize = 2,\n TargetStoppedSize = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewInstanceGroupManager(ctx, \"igm-sr\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"tf-sr-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"tf-sr-igm-instance\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tTargetSize: pulumi.Int(5),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(sr_igm.SelfLink),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStandbyPolicy: \u0026compute.InstanceGroupManagerStandbyPolicyArgs{\n\t\t\t\tInitialDelaySec: pulumi.Int(30),\n\t\t\t\tMode: pulumi.String(\"MANUAL\"),\n\t\t\t},\n\t\t\tTargetSuspendedSize: pulumi.Int(2),\n\t\t\tTargetStoppedSize: pulumi.Int(1),\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.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerStandbyPolicyArgs;\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 igm_sr = new InstanceGroupManager(\"igm-sr\", InstanceGroupManagerArgs.builder()\n .name(\"tf-sr-igm\")\n .baseInstanceName(\"tf-sr-igm-instance\")\n .zone(\"us-central1-a\")\n .targetSize(5)\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(sr_igm.selfLink())\n .name(\"primary\")\n .build())\n .standbyPolicy(InstanceGroupManagerStandbyPolicyArgs.builder()\n .initialDelaySec(30)\n .mode(\"MANUAL\")\n .build())\n .targetSuspendedSize(2)\n .targetStoppedSize(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n igm-sr:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: tf-sr-igm\n baseInstanceName: tf-sr-igm-instance\n zone: us-central1-a\n targetSize: 5\n versions:\n - instanceTemplate: ${[\"sr-igm\"].selfLink}\n name: primary\n standbyPolicy:\n initialDelaySec: 30\n mode: MANUAL\n targetSuspendedSize: 2\n targetStoppedSize: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance group managers can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, instance group managers can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/instanceGroupManager:InstanceGroupManager default projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupManager:InstanceGroupManager default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupManager:InstanceGroupManager default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupManager:InstanceGroupManager default {{name}}\n```\n\n", + "description": "The Google Compute Engine Instance Group Manager API creates and manages pools\nof homogeneous Compute Engine virtual machine instances from a common instance\ntemplate. For more information, see [the official documentation](https://cloud.google.com/compute/docs/instance-groups/manager)\nand [API](https://cloud.google.com/compute/docs/reference/latest/instanceGroupManagers)\n\n\u003e **Note:** Use [gcp.compute.RegionInstanceGroupManager](https://www.terraform.io/docs/providers/google/r/compute_region_instance_group_manager.html) to create a regional (multi-zone) instance group manager.\n\n## Example Usage\n\n### With Top Level Instance Template (`Google` Provider)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst autohealing = new gcp.compute.HealthCheck(\"autohealing\", {\n name: \"autohealing-health-check\",\n checkIntervalSec: 5,\n timeoutSec: 5,\n healthyThreshold: 2,\n unhealthyThreshold: 10,\n httpHealthCheck: {\n requestPath: \"/healthz\",\n port: 8080,\n },\n});\nconst appserver = new gcp.compute.InstanceGroupManager(\"appserver\", {\n name: \"appserver-igm\",\n baseInstanceName: \"app\",\n zone: \"us-central1-a\",\n versions: [{\n instanceTemplate: appserverGoogleComputeInstanceTemplate.selfLinkUnique,\n }],\n allInstancesConfig: {\n metadata: {\n metadata_key: \"metadata_value\",\n },\n labels: {\n label_key: \"label_value\",\n },\n },\n targetPools: [appserverGoogleComputeTargetPool.id],\n targetSize: 2,\n namedPorts: [{\n name: \"customhttp\",\n port: 8888,\n }],\n autoHealingPolicies: {\n healthCheck: autohealing.id,\n initialDelaySec: 300,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nautohealing = gcp.compute.HealthCheck(\"autohealing\",\n name=\"autohealing-health-check\",\n check_interval_sec=5,\n timeout_sec=5,\n healthy_threshold=2,\n unhealthy_threshold=10,\n http_health_check={\n \"request_path\": \"/healthz\",\n \"port\": 8080,\n })\nappserver = gcp.compute.InstanceGroupManager(\"appserver\",\n name=\"appserver-igm\",\n base_instance_name=\"app\",\n zone=\"us-central1-a\",\n versions=[{\n \"instance_template\": appserver_google_compute_instance_template[\"selfLinkUnique\"],\n }],\n all_instances_config={\n \"metadata\": {\n \"metadata_key\": \"metadata_value\",\n },\n \"labels\": {\n \"label_key\": \"label_value\",\n },\n },\n target_pools=[appserver_google_compute_target_pool[\"id\"]],\n target_size=2,\n named_ports=[{\n \"name\": \"customhttp\",\n \"port\": 8888,\n }],\n auto_healing_policies={\n \"health_check\": autohealing.id,\n \"initial_delay_sec\": 300,\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 autohealing = new Gcp.Compute.HealthCheck(\"autohealing\", new()\n {\n Name = \"autohealing-health-check\",\n CheckIntervalSec = 5,\n TimeoutSec = 5,\n HealthyThreshold = 2,\n UnhealthyThreshold = 10,\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n RequestPath = \"/healthz\",\n Port = 8080,\n },\n });\n\n var appserver = new Gcp.Compute.InstanceGroupManager(\"appserver\", new()\n {\n Name = \"appserver-igm\",\n BaseInstanceName = \"app\",\n Zone = \"us-central1-a\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = appserverGoogleComputeInstanceTemplate.SelfLinkUnique,\n },\n },\n AllInstancesConfig = new Gcp.Compute.Inputs.InstanceGroupManagerAllInstancesConfigArgs\n {\n Metadata = \n {\n { \"metadata_key\", \"metadata_value\" },\n },\n Labels = \n {\n { \"label_key\", \"label_value\" },\n },\n },\n TargetPools = new[]\n {\n appserverGoogleComputeTargetPool.Id,\n },\n TargetSize = 2,\n NamedPorts = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerNamedPortArgs\n {\n Name = \"customhttp\",\n Port = 8888,\n },\n },\n AutoHealingPolicies = new Gcp.Compute.Inputs.InstanceGroupManagerAutoHealingPoliciesArgs\n {\n HealthCheck = autohealing.Id,\n InitialDelaySec = 300,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tautohealing, err := compute.NewHealthCheck(ctx, \"autohealing\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"autohealing-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(5),\n\t\t\tTimeoutSec: pulumi.Int(5),\n\t\t\tHealthyThreshold: pulumi.Int(2),\n\t\t\tUnhealthyThreshold: pulumi.Int(10),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tRequestPath: pulumi.String(\"/healthz\"),\n\t\t\t\tPort: pulumi.Int(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 = compute.NewInstanceGroupManager(ctx, \"appserver\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"appserver-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"app\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserverGoogleComputeInstanceTemplate.SelfLinkUnique),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllInstancesConfig: \u0026compute.InstanceGroupManagerAllInstancesConfigArgs{\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"metadata_key\": pulumi.String(\"metadata_value\"),\n\t\t\t\t},\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label_key\": pulumi.String(\"label_value\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetPools: pulumi.StringArray{\n\t\t\t\tappserverGoogleComputeTargetPool.Id,\n\t\t\t},\n\t\t\tTargetSize: pulumi.Int(2),\n\t\t\tNamedPorts: compute.InstanceGroupManagerNamedPortArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerNamedPortArgs{\n\t\t\t\t\tName: pulumi.String(\"customhttp\"),\n\t\t\t\t\tPort: pulumi.Int(8888),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutoHealingPolicies: \u0026compute.InstanceGroupManagerAutoHealingPoliciesArgs{\n\t\t\t\tHealthCheck: autohealing.ID(),\n\t\t\t\tInitialDelaySec: pulumi.Int(300),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerAllInstancesConfigArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerNamedPortArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerAutoHealingPoliciesArgs;\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 autohealing = new HealthCheck(\"autohealing\", HealthCheckArgs.builder()\n .name(\"autohealing-health-check\")\n .checkIntervalSec(5)\n .timeoutSec(5)\n .healthyThreshold(2)\n .unhealthyThreshold(10)\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .requestPath(\"/healthz\")\n .port(\"8080\")\n .build())\n .build());\n\n var appserver = new InstanceGroupManager(\"appserver\", InstanceGroupManagerArgs.builder()\n .name(\"appserver-igm\")\n .baseInstanceName(\"app\")\n .zone(\"us-central1-a\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(appserverGoogleComputeInstanceTemplate.selfLinkUnique())\n .build())\n .allInstancesConfig(InstanceGroupManagerAllInstancesConfigArgs.builder()\n .metadata(Map.of(\"metadata_key\", \"metadata_value\"))\n .labels(Map.of(\"label_key\", \"label_value\"))\n .build())\n .targetPools(appserverGoogleComputeTargetPool.id())\n .targetSize(2)\n .namedPorts(InstanceGroupManagerNamedPortArgs.builder()\n .name(\"customhttp\")\n .port(8888)\n .build())\n .autoHealingPolicies(InstanceGroupManagerAutoHealingPoliciesArgs.builder()\n .healthCheck(autohealing.id())\n .initialDelaySec(300)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n autohealing:\n type: gcp:compute:HealthCheck\n properties:\n name: autohealing-health-check\n checkIntervalSec: 5\n timeoutSec: 5\n healthyThreshold: 2\n unhealthyThreshold: 10 # 50 seconds\n httpHealthCheck:\n requestPath: /healthz\n port: '8080'\n appserver:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: appserver-igm\n baseInstanceName: app\n zone: us-central1-a\n versions:\n - instanceTemplate: ${appserverGoogleComputeInstanceTemplate.selfLinkUnique}\n allInstancesConfig:\n metadata:\n metadata_key: metadata_value\n labels:\n label_key: label_value\n targetPools:\n - ${appserverGoogleComputeTargetPool.id}\n targetSize: 2\n namedPorts:\n - name: customhttp\n port: 8888\n autoHealingPolicies:\n healthCheck: ${autohealing.id}\n initialDelaySec: 300\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Multiple Versions (`Google-Beta` Provider)\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst appserver = new gcp.compute.InstanceGroupManager(\"appserver\", {\n name: \"appserver-igm\",\n baseInstanceName: \"app\",\n zone: \"us-central1-a\",\n targetSize: 5,\n versions: [\n {\n name: \"appserver\",\n instanceTemplate: appserverGoogleComputeInstanceTemplate.selfLinkUnique,\n },\n {\n name: \"appserver-canary\",\n instanceTemplate: appserver_canary.selfLinkUnique,\n targetSize: {\n fixed: 1,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nappserver = gcp.compute.InstanceGroupManager(\"appserver\",\n name=\"appserver-igm\",\n base_instance_name=\"app\",\n zone=\"us-central1-a\",\n target_size=5,\n versions=[\n {\n \"name\": \"appserver\",\n \"instance_template\": appserver_google_compute_instance_template[\"selfLinkUnique\"],\n },\n {\n \"name\": \"appserver-canary\",\n \"instance_template\": appserver_canary[\"selfLinkUnique\"],\n \"target_size\": {\n \"fixed\": 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 appserver = new Gcp.Compute.InstanceGroupManager(\"appserver\", new()\n {\n Name = \"appserver-igm\",\n BaseInstanceName = \"app\",\n Zone = \"us-central1-a\",\n TargetSize = 5,\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n Name = \"appserver\",\n InstanceTemplate = appserverGoogleComputeInstanceTemplate.SelfLinkUnique,\n },\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n Name = \"appserver-canary\",\n InstanceTemplate = appserver_canary.SelfLinkUnique,\n TargetSize = new Gcp.Compute.Inputs.InstanceGroupManagerVersionTargetSizeArgs\n {\n Fixed = 1,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewInstanceGroupManager(ctx, \"appserver\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"appserver-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"app\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tTargetSize: pulumi.Int(5),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tName: pulumi.String(\"appserver\"),\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserverGoogleComputeInstanceTemplate.SelfLinkUnique),\n\t\t\t\t},\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tName: pulumi.String(\"appserver-canary\"),\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserver_canary.SelfLinkUnique),\n\t\t\t\t\tTargetSize: \u0026compute.InstanceGroupManagerVersionTargetSizeArgs{\n\t\t\t\t\t\tFixed: pulumi.Int(1),\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.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionTargetSizeArgs;\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 appserver = new InstanceGroupManager(\"appserver\", InstanceGroupManagerArgs.builder()\n .name(\"appserver-igm\")\n .baseInstanceName(\"app\")\n .zone(\"us-central1-a\")\n .targetSize(5)\n .versions( \n InstanceGroupManagerVersionArgs.builder()\n .name(\"appserver\")\n .instanceTemplate(appserverGoogleComputeInstanceTemplate.selfLinkUnique())\n .build(),\n InstanceGroupManagerVersionArgs.builder()\n .name(\"appserver-canary\")\n .instanceTemplate(appserver_canary.selfLinkUnique())\n .targetSize(InstanceGroupManagerVersionTargetSizeArgs.builder()\n .fixed(1)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n appserver:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: appserver-igm\n baseInstanceName: app\n zone: us-central1-a\n targetSize: 5\n versions:\n - name: appserver\n instanceTemplate: ${appserverGoogleComputeInstanceTemplate.selfLinkUnique}\n - name: appserver-canary\n instanceTemplate: ${[\"appserver-canary\"].selfLinkUnique}\n targetSize:\n fixed: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Standby Policy (`Google-Beta` Provider)\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst igm_sr = new gcp.compute.InstanceGroupManager(\"igm-sr\", {\n name: \"tf-sr-igm\",\n baseInstanceName: \"tf-sr-igm-instance\",\n zone: \"us-central1-a\",\n targetSize: 5,\n versions: [{\n instanceTemplate: sr_igm.selfLink,\n name: \"primary\",\n }],\n standbyPolicy: {\n initialDelaySec: 30,\n mode: \"MANUAL\",\n },\n targetSuspendedSize: 2,\n targetStoppedSize: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nigm_sr = gcp.compute.InstanceGroupManager(\"igm-sr\",\n name=\"tf-sr-igm\",\n base_instance_name=\"tf-sr-igm-instance\",\n zone=\"us-central1-a\",\n target_size=5,\n versions=[{\n \"instance_template\": sr_igm[\"selfLink\"],\n \"name\": \"primary\",\n }],\n standby_policy={\n \"initial_delay_sec\": 30,\n \"mode\": \"MANUAL\",\n },\n target_suspended_size=2,\n target_stopped_size=1)\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 igm_sr = new Gcp.Compute.InstanceGroupManager(\"igm-sr\", new()\n {\n Name = \"tf-sr-igm\",\n BaseInstanceName = \"tf-sr-igm-instance\",\n Zone = \"us-central1-a\",\n TargetSize = 5,\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = sr_igm.SelfLink,\n Name = \"primary\",\n },\n },\n StandbyPolicy = new Gcp.Compute.Inputs.InstanceGroupManagerStandbyPolicyArgs\n {\n InitialDelaySec = 30,\n Mode = \"MANUAL\",\n },\n TargetSuspendedSize = 2,\n TargetStoppedSize = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewInstanceGroupManager(ctx, \"igm-sr\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"tf-sr-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"tf-sr-igm-instance\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tTargetSize: pulumi.Int(5),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(sr_igm.SelfLink),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStandbyPolicy: \u0026compute.InstanceGroupManagerStandbyPolicyArgs{\n\t\t\t\tInitialDelaySec: pulumi.Int(30),\n\t\t\t\tMode: pulumi.String(\"MANUAL\"),\n\t\t\t},\n\t\t\tTargetSuspendedSize: pulumi.Int(2),\n\t\t\tTargetStoppedSize: pulumi.Int(1),\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.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerStandbyPolicyArgs;\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 igm_sr = new InstanceGroupManager(\"igm-sr\", InstanceGroupManagerArgs.builder()\n .name(\"tf-sr-igm\")\n .baseInstanceName(\"tf-sr-igm-instance\")\n .zone(\"us-central1-a\")\n .targetSize(5)\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(sr_igm.selfLink())\n .name(\"primary\")\n .build())\n .standbyPolicy(InstanceGroupManagerStandbyPolicyArgs.builder()\n .initialDelaySec(30)\n .mode(\"MANUAL\")\n .build())\n .targetSuspendedSize(2)\n .targetStoppedSize(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n igm-sr:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: tf-sr-igm\n baseInstanceName: tf-sr-igm-instance\n zone: us-central1-a\n targetSize: 5\n versions:\n - instanceTemplate: ${[\"sr-igm\"].selfLink}\n name: primary\n standbyPolicy:\n initialDelaySec: 30\n mode: MANUAL\n targetSuspendedSize: 2\n targetStoppedSize: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance group managers can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, instance group managers can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/instanceGroupManager:InstanceGroupManager default projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupManager:InstanceGroupManager default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupManager:InstanceGroupManager default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupManager:InstanceGroupManager default {{name}}\n```\n\n", "properties": { "allInstancesConfig": { "$ref": "#/types/gcp:compute/InstanceGroupManagerAllInstancesConfig:InstanceGroupManagerAllInstancesConfig", @@ -149809,7 +149809,7 @@ } }, "gcp:compute/instanceGroupMembership:InstanceGroupMembership": { - "description": "Represents the Instance membership to the Instance Group.\n\n\u003e **NOTE** You can use this resource instead of the `instances` field in the\n`gcp.compute.InstanceGroup`, however it's not recommended to use it alongside this field.\nIt might cause inconsistencies, as they can end up competing over control.\n\n\u003e **NOTE** This resource has been added to avoid a situation, where after\nInstance is recreated, it's removed from Instance Group and it's needed to\nperform `apply` twice. To avoid situations like this, please use this resource\nwith the lifecycle `replace_triggered_by` method, with the passed Instance's ID.\n\n\nTo get more information about InstanceGroupMembership, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups)\n* How-to Guides\n * [Add instances](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups/addInstances)\n * [List instances](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups/listInstances)\n * [Remove instances](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups/removeInstances)\n\n## Example Usage\n\n### Instance Group Membership\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default_network = new gcp.compute.Network(\"default-network\", {name: \"network\"});\nconst default_instance = new gcp.compute.Instance(\"default-instance\", {\n name: \"instance\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [{\n network: default_network.name,\n }],\n});\nconst default_instance_group = new gcp.compute.InstanceGroup(\"default-instance-group\", {name: \"instance-group\"});\nconst default_ig_membership = new gcp.compute.InstanceGroupMembership(\"default-ig-membership\", {\n instance: default_instance.selfLink,\n instanceGroup: default_instance_group.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default-network\", name=\"network\")\ndefault_instance = gcp.compute.Instance(\"default-instance\",\n name=\"instance\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initializeParams\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n network_interfaces=[{\n \"network\": default_network.name,\n }])\ndefault_instance_group = gcp.compute.InstanceGroup(\"default-instance-group\", name=\"instance-group\")\ndefault_ig_membership = gcp.compute.InstanceGroupMembership(\"default-ig-membership\",\n instance=default_instance.self_link,\n instance_group=default_instance_group.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 default_network = new Gcp.Compute.Network(\"default-network\", new()\n {\n Name = \"network\",\n });\n\n var default_instance = new Gcp.Compute.Instance(\"default-instance\", new()\n {\n Name = \"instance\",\n MachineType = \"e2-medium\",\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_network.Name,\n },\n },\n });\n\n var default_instance_group = new Gcp.Compute.InstanceGroup(\"default-instance-group\", new()\n {\n Name = \"instance-group\",\n });\n\n var default_ig_membership = new Gcp.Compute.InstanceGroupMembership(\"default-ig-membership\", new()\n {\n Instance = default_instance.SelfLink,\n InstanceGroup = default_instance_group.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default-network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"default-instance\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\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: default_network.Name,\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.NewInstanceGroup(ctx, \"default-instance-group\", \u0026compute.InstanceGroupArgs{\n\t\t\tName: pulumi.String(\"instance-group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceGroupMembership(ctx, \"default-ig-membership\", \u0026compute.InstanceGroupMembershipArgs{\n\t\t\tInstance: default_instance.SelfLink,\n\t\t\tInstanceGroup: default_instance_group.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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\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.compute.InstanceGroup;\nimport com.pulumi.gcp.compute.InstanceGroupArgs;\nimport com.pulumi.gcp.compute.InstanceGroupMembership;\nimport com.pulumi.gcp.compute.InstanceGroupMembershipArgs;\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_network = new Network(\"default-network\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var default_instance = new Instance(\"default-instance\", InstanceArgs.builder()\n .name(\"instance\")\n .machineType(\"e2-medium\")\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_network.name())\n .build())\n .build());\n\n var default_instance_group = new InstanceGroup(\"default-instance-group\", InstanceGroupArgs.builder()\n .name(\"instance-group\")\n .build());\n\n var default_ig_membership = new InstanceGroupMembership(\"default-ig-membership\", InstanceGroupMembershipArgs.builder()\n .instance(default_instance.selfLink())\n .instanceGroup(default_instance_group.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-network:\n type: gcp:compute:Network\n properties:\n name: network\n default-instance:\n type: gcp:compute:Instance\n properties:\n name: instance\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - network: ${[\"default-network\"].name}\n default-instance-group:\n type: gcp:compute:InstanceGroup\n properties:\n name: instance-group\n default-ig-membership:\n type: gcp:compute:InstanceGroupMembership\n properties:\n instance: ${[\"default-instance\"].selfLink}\n instanceGroup: ${[\"default-instance-group\"].name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstanceGroupMembership can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instanceGroups/{{instance_group}}/{{instance}}`\n\n* `{{project}}/{{zone}}/{{instance_group}}/{{instance}}`\n\n* `{{zone}}/{{instance_group}}/{{instance}}`\n\n* `{{instance_group}}/{{instance}}`\n\nWhen using the `pulumi import` command, InstanceGroupMembership can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/instanceGroupMembership:InstanceGroupMembership default projects/{{project}}/zones/{{zone}}/instanceGroups/{{instance_group}}/{{instance}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupMembership:InstanceGroupMembership default {{project}}/{{zone}}/{{instance_group}}/{{instance}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupMembership:InstanceGroupMembership default {{zone}}/{{instance_group}}/{{instance}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupMembership:InstanceGroupMembership default {{instance_group}}/{{instance}}\n```\n\n", + "description": "Represents the Instance membership to the Instance Group.\n\n\u003e **NOTE** You can use this resource instead of the `instances` field in the\n`gcp.compute.InstanceGroup`, however it's not recommended to use it alongside this field.\nIt might cause inconsistencies, as they can end up competing over control.\n\n\u003e **NOTE** This resource has been added to avoid a situation, where after\nInstance is recreated, it's removed from Instance Group and it's needed to\nperform `apply` twice. To avoid situations like this, please use this resource\nwith the lifecycle `replace_triggered_by` method, with the passed Instance's ID.\n\n\nTo get more information about InstanceGroupMembership, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups)\n* How-to Guides\n * [Add instances](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups/addInstances)\n * [List instances](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups/listInstances)\n * [Remove instances](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups/removeInstances)\n\n## Example Usage\n\n### Instance Group Membership\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default_network = new gcp.compute.Network(\"default-network\", {name: \"network\"});\nconst default_instance = new gcp.compute.Instance(\"default-instance\", {\n name: \"instance\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [{\n network: default_network.name,\n }],\n});\nconst default_instance_group = new gcp.compute.InstanceGroup(\"default-instance-group\", {name: \"instance-group\"});\nconst default_ig_membership = new gcp.compute.InstanceGroupMembership(\"default-ig-membership\", {\n instance: default_instance.selfLink,\n instanceGroup: default_instance_group.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default-network\", name=\"network\")\ndefault_instance = gcp.compute.Instance(\"default-instance\",\n name=\"instance\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n network_interfaces=[{\n \"network\": default_network.name,\n }])\ndefault_instance_group = gcp.compute.InstanceGroup(\"default-instance-group\", name=\"instance-group\")\ndefault_ig_membership = gcp.compute.InstanceGroupMembership(\"default-ig-membership\",\n instance=default_instance.self_link,\n instance_group=default_instance_group.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 default_network = new Gcp.Compute.Network(\"default-network\", new()\n {\n Name = \"network\",\n });\n\n var default_instance = new Gcp.Compute.Instance(\"default-instance\", new()\n {\n Name = \"instance\",\n MachineType = \"e2-medium\",\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_network.Name,\n },\n },\n });\n\n var default_instance_group = new Gcp.Compute.InstanceGroup(\"default-instance-group\", new()\n {\n Name = \"instance-group\",\n });\n\n var default_ig_membership = new Gcp.Compute.InstanceGroupMembership(\"default-ig-membership\", new()\n {\n Instance = default_instance.SelfLink,\n InstanceGroup = default_instance_group.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default-network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"default-instance\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\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: default_network.Name,\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.NewInstanceGroup(ctx, \"default-instance-group\", \u0026compute.InstanceGroupArgs{\n\t\t\tName: pulumi.String(\"instance-group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceGroupMembership(ctx, \"default-ig-membership\", \u0026compute.InstanceGroupMembershipArgs{\n\t\t\tInstance: default_instance.SelfLink,\n\t\t\tInstanceGroup: default_instance_group.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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\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.compute.InstanceGroup;\nimport com.pulumi.gcp.compute.InstanceGroupArgs;\nimport com.pulumi.gcp.compute.InstanceGroupMembership;\nimport com.pulumi.gcp.compute.InstanceGroupMembershipArgs;\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_network = new Network(\"default-network\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var default_instance = new Instance(\"default-instance\", InstanceArgs.builder()\n .name(\"instance\")\n .machineType(\"e2-medium\")\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_network.name())\n .build())\n .build());\n\n var default_instance_group = new InstanceGroup(\"default-instance-group\", InstanceGroupArgs.builder()\n .name(\"instance-group\")\n .build());\n\n var default_ig_membership = new InstanceGroupMembership(\"default-ig-membership\", InstanceGroupMembershipArgs.builder()\n .instance(default_instance.selfLink())\n .instanceGroup(default_instance_group.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-network:\n type: gcp:compute:Network\n properties:\n name: network\n default-instance:\n type: gcp:compute:Instance\n properties:\n name: instance\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - network: ${[\"default-network\"].name}\n default-instance-group:\n type: gcp:compute:InstanceGroup\n properties:\n name: instance-group\n default-ig-membership:\n type: gcp:compute:InstanceGroupMembership\n properties:\n instance: ${[\"default-instance\"].selfLink}\n instanceGroup: ${[\"default-instance-group\"].name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstanceGroupMembership can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instanceGroups/{{instance_group}}/{{instance}}`\n\n* `{{project}}/{{zone}}/{{instance_group}}/{{instance}}`\n\n* `{{zone}}/{{instance_group}}/{{instance}}`\n\n* `{{instance_group}}/{{instance}}`\n\nWhen using the `pulumi import` command, InstanceGroupMembership can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/instanceGroupMembership:InstanceGroupMembership default projects/{{project}}/zones/{{zone}}/instanceGroups/{{instance_group}}/{{instance}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupMembership:InstanceGroupMembership default {{project}}/{{zone}}/{{instance_group}}/{{instance}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupMembership:InstanceGroupMembership default {{zone}}/{{instance_group}}/{{instance}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupMembership:InstanceGroupMembership default {{instance_group}}/{{instance}}\n```\n\n", "properties": { "instance": { "type": "string", @@ -149887,7 +149887,7 @@ } }, "gcp:compute/instanceGroupNamedPort:InstanceGroupNamedPort": { - "description": "Mange the named ports setting for a managed instance group without\nmanaging the group as whole. This resource is primarily intended for use\nwith GKE-generated groups that shouldn't otherwise be managed by other\ntools.\n\n\nTo get more information about InstanceGroupNamedPort, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroup)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/instance-groups/)\n\n## Example Usage\n\n### Instance Group Named Port Gke\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst containerNetwork = new gcp.compute.Network(\"container_network\", {\n name: \"container-network\",\n autoCreateSubnetworks: false,\n});\nconst containerSubnetwork = new gcp.compute.Subnetwork(\"container_subnetwork\", {\n name: \"container-subnetwork\",\n region: \"us-central1\",\n network: containerNetwork.name,\n ipCidrRange: \"10.0.36.0/24\",\n});\nconst myCluster = new gcp.container.Cluster(\"my_cluster\", {\n name: \"my-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n network: containerNetwork.name,\n subnetwork: containerSubnetwork.name,\n ipAllocationPolicy: {\n clusterIpv4CidrBlock: \"/19\",\n servicesIpv4CidrBlock: \"/22\",\n },\n deletionProtection: true,\n});\nconst myPort = new gcp.compute.InstanceGroupNamedPort(\"my_port\", {\n group: myCluster.nodePools.apply(nodePools =\u003e nodePools[0].instanceGroupUrls?.[0]),\n zone: \"us-central1-a\",\n name: \"http\",\n port: 8080,\n});\nconst myPorts = new gcp.compute.InstanceGroupNamedPort(\"my_ports\", {\n group: myCluster.nodePools.apply(nodePools =\u003e nodePools[0].instanceGroupUrls?.[0]),\n zone: \"us-central1-a\",\n name: \"https\",\n port: 4443,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncontainer_network = gcp.compute.Network(\"container_network\",\n name=\"container-network\",\n auto_create_subnetworks=False)\ncontainer_subnetwork = gcp.compute.Subnetwork(\"container_subnetwork\",\n name=\"container-subnetwork\",\n region=\"us-central1\",\n network=container_network.name,\n ip_cidr_range=\"10.0.36.0/24\")\nmy_cluster = gcp.container.Cluster(\"my_cluster\",\n name=\"my-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n network=container_network.name,\n subnetwork=container_subnetwork.name,\n ip_allocation_policy={\n \"clusterIpv4CidrBlock\": \"/19\",\n \"servicesIpv4CidrBlock\": \"/22\",\n },\n deletion_protection=True)\nmy_port = gcp.compute.InstanceGroupNamedPort(\"my_port\",\n group=my_cluster.node_pools[0].instance_group_urls[0],\n zone=\"us-central1-a\",\n name=\"http\",\n port=8080)\nmy_ports = gcp.compute.InstanceGroupNamedPort(\"my_ports\",\n group=my_cluster.node_pools[0].instance_group_urls[0],\n zone=\"us-central1-a\",\n name=\"https\",\n port=4443)\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 containerNetwork = new Gcp.Compute.Network(\"container_network\", new()\n {\n Name = \"container-network\",\n AutoCreateSubnetworks = false,\n });\n\n var containerSubnetwork = new Gcp.Compute.Subnetwork(\"container_subnetwork\", new()\n {\n Name = \"container-subnetwork\",\n Region = \"us-central1\",\n Network = containerNetwork.Name,\n IpCidrRange = \"10.0.36.0/24\",\n });\n\n var myCluster = new Gcp.Container.Cluster(\"my_cluster\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n Network = containerNetwork.Name,\n Subnetwork = containerSubnetwork.Name,\n IpAllocationPolicy = new Gcp.Container.Inputs.ClusterIpAllocationPolicyArgs\n {\n ClusterIpv4CidrBlock = \"/19\",\n ServicesIpv4CidrBlock = \"/22\",\n },\n DeletionProtection = true,\n });\n\n var myPort = new Gcp.Compute.InstanceGroupNamedPort(\"my_port\", new()\n {\n Group = myCluster.NodePools.Apply(nodePools =\u003e nodePools[0].InstanceGroupUrls[0]),\n Zone = \"us-central1-a\",\n Name = \"http\",\n Port = 8080,\n });\n\n var myPorts = new Gcp.Compute.InstanceGroupNamedPort(\"my_ports\", new()\n {\n Group = myCluster.NodePools.Apply(nodePools =\u003e nodePools[0].InstanceGroupUrls[0]),\n Zone = \"us-central1-a\",\n Name = \"https\",\n Port = 4443,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tcontainerNetwork, err := compute.NewNetwork(ctx, \"container_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"container-network\"),\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\tcontainerSubnetwork, err := compute.NewSubnetwork(ctx, \"container_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"container-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: containerNetwork.Name,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.36.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyCluster, err := container.NewCluster(ctx, \"my_cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tNetwork: containerNetwork.Name,\n\t\t\tSubnetwork: containerSubnetwork.Name,\n\t\t\tIpAllocationPolicy: \u0026container.ClusterIpAllocationPolicyArgs{\n\t\t\t\tClusterIpv4CidrBlock: pulumi.String(\"/19\"),\n\t\t\t\tServicesIpv4CidrBlock: pulumi.String(\"/22\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceGroupNamedPort(ctx, \"my_port\", \u0026compute.InstanceGroupNamedPortArgs{\n\t\t\tGroup: myCluster.NodePools.ApplyT(func(nodePools []container.ClusterNodePool) (*string, error) {\n\t\t\t\treturn \u0026nodePools[0].InstanceGroupUrls[0], nil\n\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tName: pulumi.String(\"http\"),\n\t\t\tPort: pulumi.Int(8080),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceGroupNamedPort(ctx, \"my_ports\", \u0026compute.InstanceGroupNamedPortArgs{\n\t\t\tGroup: myCluster.NodePools.ApplyT(func(nodePools []container.ClusterNodePool) (*string, error) {\n\t\t\t\treturn \u0026nodePools[0].InstanceGroupUrls[0], nil\n\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tName: pulumi.String(\"https\"),\n\t\t\tPort: pulumi.Int(4443),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterIpAllocationPolicyArgs;\nimport com.pulumi.gcp.compute.InstanceGroupNamedPort;\nimport com.pulumi.gcp.compute.InstanceGroupNamedPortArgs;\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 containerNetwork = new Network(\"containerNetwork\", NetworkArgs.builder()\n .name(\"container-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var containerSubnetwork = new Subnetwork(\"containerSubnetwork\", SubnetworkArgs.builder()\n .name(\"container-subnetwork\")\n .region(\"us-central1\")\n .network(containerNetwork.name())\n .ipCidrRange(\"10.0.36.0/24\")\n .build());\n\n var myCluster = new Cluster(\"myCluster\", ClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .network(containerNetwork.name())\n .subnetwork(containerSubnetwork.name())\n .ipAllocationPolicy(ClusterIpAllocationPolicyArgs.builder()\n .clusterIpv4CidrBlock(\"/19\")\n .servicesIpv4CidrBlock(\"/22\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var myPort = new InstanceGroupNamedPort(\"myPort\", InstanceGroupNamedPortArgs.builder()\n .group(myCluster.nodePools().applyValue(nodePools -\u003e nodePools[0].instanceGroupUrls()[0]))\n .zone(\"us-central1-a\")\n .name(\"http\")\n .port(8080)\n .build());\n\n var myPorts = new InstanceGroupNamedPort(\"myPorts\", InstanceGroupNamedPortArgs.builder()\n .group(myCluster.nodePools().applyValue(nodePools -\u003e nodePools[0].instanceGroupUrls()[0]))\n .zone(\"us-central1-a\")\n .name(\"https\")\n .port(4443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myPort:\n type: gcp:compute:InstanceGroupNamedPort\n name: my_port\n properties:\n group: ${myCluster.nodePools[0].instanceGroupUrls[0]}\n zone: us-central1-a\n name: http\n port: 8080\n myPorts:\n type: gcp:compute:InstanceGroupNamedPort\n name: my_ports\n properties:\n group: ${myCluster.nodePools[0].instanceGroupUrls[0]}\n zone: us-central1-a\n name: https\n port: 4443\n containerNetwork:\n type: gcp:compute:Network\n name: container_network\n properties:\n name: container-network\n autoCreateSubnetworks: false\n containerSubnetwork:\n type: gcp:compute:Subnetwork\n name: container_subnetwork\n properties:\n name: container-subnetwork\n region: us-central1\n network: ${containerNetwork.name}\n ipCidrRange: 10.0.36.0/24\n myCluster:\n type: gcp:container:Cluster\n name: my_cluster\n properties:\n name: my-cluster\n location: us-central1-a\n initialNodeCount: 1\n network: ${containerNetwork.name}\n subnetwork: ${containerSubnetwork.name}\n ipAllocationPolicy:\n clusterIpv4CidrBlock: /19\n servicesIpv4CidrBlock: /22\n deletionProtection: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstanceGroupNamedPort can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instanceGroups/{{group}}/{{port}}/{{name}}`\n\n* `{{project}}/{{zone}}/{{group}}/{{port}}/{{name}}`\n\n* `{{zone}}/{{group}}/{{port}}/{{name}}`\n\n* `{{group}}/{{port}}/{{name}}`\n\nWhen using the `pulumi import` command, InstanceGroupNamedPort can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/instanceGroupNamedPort:InstanceGroupNamedPort default projects/{{project}}/zones/{{zone}}/instanceGroups/{{group}}/{{port}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupNamedPort:InstanceGroupNamedPort default {{project}}/{{zone}}/{{group}}/{{port}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupNamedPort:InstanceGroupNamedPort default {{zone}}/{{group}}/{{port}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupNamedPort:InstanceGroupNamedPort default {{group}}/{{port}}/{{name}}\n```\n\n", + "description": "Mange the named ports setting for a managed instance group without\nmanaging the group as whole. This resource is primarily intended for use\nwith GKE-generated groups that shouldn't otherwise be managed by other\ntools.\n\n\nTo get more information about InstanceGroupNamedPort, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroup)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/instance-groups/)\n\n## Example Usage\n\n### Instance Group Named Port Gke\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst containerNetwork = new gcp.compute.Network(\"container_network\", {\n name: \"container-network\",\n autoCreateSubnetworks: false,\n});\nconst containerSubnetwork = new gcp.compute.Subnetwork(\"container_subnetwork\", {\n name: \"container-subnetwork\",\n region: \"us-central1\",\n network: containerNetwork.name,\n ipCidrRange: \"10.0.36.0/24\",\n});\nconst myCluster = new gcp.container.Cluster(\"my_cluster\", {\n name: \"my-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n network: containerNetwork.name,\n subnetwork: containerSubnetwork.name,\n ipAllocationPolicy: {\n clusterIpv4CidrBlock: \"/19\",\n servicesIpv4CidrBlock: \"/22\",\n },\n deletionProtection: true,\n});\nconst myPort = new gcp.compute.InstanceGroupNamedPort(\"my_port\", {\n group: myCluster.nodePools.apply(nodePools =\u003e nodePools[0].instanceGroupUrls?.[0]),\n zone: \"us-central1-a\",\n name: \"http\",\n port: 8080,\n});\nconst myPorts = new gcp.compute.InstanceGroupNamedPort(\"my_ports\", {\n group: myCluster.nodePools.apply(nodePools =\u003e nodePools[0].instanceGroupUrls?.[0]),\n zone: \"us-central1-a\",\n name: \"https\",\n port: 4443,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncontainer_network = gcp.compute.Network(\"container_network\",\n name=\"container-network\",\n auto_create_subnetworks=False)\ncontainer_subnetwork = gcp.compute.Subnetwork(\"container_subnetwork\",\n name=\"container-subnetwork\",\n region=\"us-central1\",\n network=container_network.name,\n ip_cidr_range=\"10.0.36.0/24\")\nmy_cluster = gcp.container.Cluster(\"my_cluster\",\n name=\"my-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n network=container_network.name,\n subnetwork=container_subnetwork.name,\n ip_allocation_policy={\n \"cluster_ipv4_cidr_block\": \"/19\",\n \"services_ipv4_cidr_block\": \"/22\",\n },\n deletion_protection=True)\nmy_port = gcp.compute.InstanceGroupNamedPort(\"my_port\",\n group=my_cluster.node_pools[0].instance_group_urls[0],\n zone=\"us-central1-a\",\n name=\"http\",\n port=8080)\nmy_ports = gcp.compute.InstanceGroupNamedPort(\"my_ports\",\n group=my_cluster.node_pools[0].instance_group_urls[0],\n zone=\"us-central1-a\",\n name=\"https\",\n port=4443)\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 containerNetwork = new Gcp.Compute.Network(\"container_network\", new()\n {\n Name = \"container-network\",\n AutoCreateSubnetworks = false,\n });\n\n var containerSubnetwork = new Gcp.Compute.Subnetwork(\"container_subnetwork\", new()\n {\n Name = \"container-subnetwork\",\n Region = \"us-central1\",\n Network = containerNetwork.Name,\n IpCidrRange = \"10.0.36.0/24\",\n });\n\n var myCluster = new Gcp.Container.Cluster(\"my_cluster\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n Network = containerNetwork.Name,\n Subnetwork = containerSubnetwork.Name,\n IpAllocationPolicy = new Gcp.Container.Inputs.ClusterIpAllocationPolicyArgs\n {\n ClusterIpv4CidrBlock = \"/19\",\n ServicesIpv4CidrBlock = \"/22\",\n },\n DeletionProtection = true,\n });\n\n var myPort = new Gcp.Compute.InstanceGroupNamedPort(\"my_port\", new()\n {\n Group = myCluster.NodePools.Apply(nodePools =\u003e nodePools[0].InstanceGroupUrls[0]),\n Zone = \"us-central1-a\",\n Name = \"http\",\n Port = 8080,\n });\n\n var myPorts = new Gcp.Compute.InstanceGroupNamedPort(\"my_ports\", new()\n {\n Group = myCluster.NodePools.Apply(nodePools =\u003e nodePools[0].InstanceGroupUrls[0]),\n Zone = \"us-central1-a\",\n Name = \"https\",\n Port = 4443,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tcontainerNetwork, err := compute.NewNetwork(ctx, \"container_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"container-network\"),\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\tcontainerSubnetwork, err := compute.NewSubnetwork(ctx, \"container_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"container-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: containerNetwork.Name,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.36.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyCluster, err := container.NewCluster(ctx, \"my_cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tNetwork: containerNetwork.Name,\n\t\t\tSubnetwork: containerSubnetwork.Name,\n\t\t\tIpAllocationPolicy: \u0026container.ClusterIpAllocationPolicyArgs{\n\t\t\t\tClusterIpv4CidrBlock: pulumi.String(\"/19\"),\n\t\t\t\tServicesIpv4CidrBlock: pulumi.String(\"/22\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceGroupNamedPort(ctx, \"my_port\", \u0026compute.InstanceGroupNamedPortArgs{\n\t\t\tGroup: pulumi.String(myCluster.NodePools.ApplyT(func(nodePools []container.ClusterNodePool) (*string, error) {\n\t\t\t\treturn \u0026nodePools[0].InstanceGroupUrls[0], nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tName: pulumi.String(\"http\"),\n\t\t\tPort: pulumi.Int(8080),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceGroupNamedPort(ctx, \"my_ports\", \u0026compute.InstanceGroupNamedPortArgs{\n\t\t\tGroup: pulumi.String(myCluster.NodePools.ApplyT(func(nodePools []container.ClusterNodePool) (*string, error) {\n\t\t\t\treturn \u0026nodePools[0].InstanceGroupUrls[0], nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tName: pulumi.String(\"https\"),\n\t\t\tPort: pulumi.Int(4443),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterIpAllocationPolicyArgs;\nimport com.pulumi.gcp.compute.InstanceGroupNamedPort;\nimport com.pulumi.gcp.compute.InstanceGroupNamedPortArgs;\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 containerNetwork = new Network(\"containerNetwork\", NetworkArgs.builder()\n .name(\"container-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var containerSubnetwork = new Subnetwork(\"containerSubnetwork\", SubnetworkArgs.builder()\n .name(\"container-subnetwork\")\n .region(\"us-central1\")\n .network(containerNetwork.name())\n .ipCidrRange(\"10.0.36.0/24\")\n .build());\n\n var myCluster = new Cluster(\"myCluster\", ClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .network(containerNetwork.name())\n .subnetwork(containerSubnetwork.name())\n .ipAllocationPolicy(ClusterIpAllocationPolicyArgs.builder()\n .clusterIpv4CidrBlock(\"/19\")\n .servicesIpv4CidrBlock(\"/22\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var myPort = new InstanceGroupNamedPort(\"myPort\", InstanceGroupNamedPortArgs.builder()\n .group(myCluster.nodePools().applyValue(nodePools -\u003e nodePools[0].instanceGroupUrls()[0]))\n .zone(\"us-central1-a\")\n .name(\"http\")\n .port(8080)\n .build());\n\n var myPorts = new InstanceGroupNamedPort(\"myPorts\", InstanceGroupNamedPortArgs.builder()\n .group(myCluster.nodePools().applyValue(nodePools -\u003e nodePools[0].instanceGroupUrls()[0]))\n .zone(\"us-central1-a\")\n .name(\"https\")\n .port(4443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myPort:\n type: gcp:compute:InstanceGroupNamedPort\n name: my_port\n properties:\n group: ${myCluster.nodePools[0].instanceGroupUrls[0]}\n zone: us-central1-a\n name: http\n port: 8080\n myPorts:\n type: gcp:compute:InstanceGroupNamedPort\n name: my_ports\n properties:\n group: ${myCluster.nodePools[0].instanceGroupUrls[0]}\n zone: us-central1-a\n name: https\n port: 4443\n containerNetwork:\n type: gcp:compute:Network\n name: container_network\n properties:\n name: container-network\n autoCreateSubnetworks: false\n containerSubnetwork:\n type: gcp:compute:Subnetwork\n name: container_subnetwork\n properties:\n name: container-subnetwork\n region: us-central1\n network: ${containerNetwork.name}\n ipCidrRange: 10.0.36.0/24\n myCluster:\n type: gcp:container:Cluster\n name: my_cluster\n properties:\n name: my-cluster\n location: us-central1-a\n initialNodeCount: 1\n network: ${containerNetwork.name}\n subnetwork: ${containerSubnetwork.name}\n ipAllocationPolicy:\n clusterIpv4CidrBlock: /19\n servicesIpv4CidrBlock: /22\n deletionProtection: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstanceGroupNamedPort can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instanceGroups/{{group}}/{{port}}/{{name}}`\n\n* `{{project}}/{{zone}}/{{group}}/{{port}}/{{name}}`\n\n* `{{zone}}/{{group}}/{{port}}/{{name}}`\n\n* `{{group}}/{{port}}/{{name}}`\n\nWhen using the `pulumi import` command, InstanceGroupNamedPort can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/instanceGroupNamedPort:InstanceGroupNamedPort default projects/{{project}}/zones/{{zone}}/instanceGroups/{{group}}/{{port}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupNamedPort:InstanceGroupNamedPort default {{project}}/{{zone}}/{{group}}/{{port}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupNamedPort:InstanceGroupNamedPort default {{zone}}/{{group}}/{{port}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupNamedPort:InstanceGroupNamedPort default {{group}}/{{port}}/{{name}}\n```\n\n", "properties": { "group": { "type": "string", @@ -150377,7 +150377,7 @@ } }, "gcp:compute/instanceTemplate:InstanceTemplate": { - "description": "\u003e **Note**: Global instance templates can be used in any region. To lower the impact of outages outside your region and gain data residency within your region, use google_compute_region_instance_template.\n\nManages a VM instance template resource within GCE. For more information see\n[the official documentation](https://cloud.google.com/compute/docs/instance-templates)\nand\n[API](https://cloud.google.com/compute/docs/reference/latest/instanceTemplates).\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst foobar = new gcp.compute.Disk(\"foobar\", {\n name: \"existing-disk\",\n image: myImage.then(myImage =\u003e myImage.selfLink),\n size: 10,\n type: \"pd-ssd\",\n zone: \"us-central1-a\",\n});\nconst dailyBackup = new gcp.compute.ResourcePolicy(\"daily_backup\", {\n name: \"every-day-4am\",\n region: \"us-central1\",\n snapshotSchedulePolicy: {\n schedule: {\n dailySchedule: {\n daysInCycle: 1,\n startTime: \"04:00\",\n },\n },\n },\n});\nconst defaultInstanceTemplate = new gcp.compute.InstanceTemplate(\"default\", {\n name: \"appserver-template\",\n description: \"This template is used to create app server instances.\",\n tags: [\n \"foo\",\n \"bar\",\n ],\n labels: {\n environment: \"dev\",\n },\n instanceDescription: \"description assigned to instances\",\n machineType: \"e2-medium\",\n canIpForward: false,\n scheduling: {\n automaticRestart: true,\n onHostMaintenance: \"MIGRATE\",\n },\n disks: [\n {\n sourceImage: \"debian-cloud/debian-11\",\n autoDelete: true,\n boot: true,\n resourcePolicies: dailyBackup.id,\n },\n {\n source: foobar.name,\n autoDelete: false,\n boot: false,\n },\n ],\n networkInterfaces: [{\n network: \"default\",\n }],\n metadata: {\n foo: \"bar\",\n },\n serviceAccount: {\n email: _default.email,\n scopes: [\"cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nfoobar = gcp.compute.Disk(\"foobar\",\n name=\"existing-disk\",\n image=my_image.self_link,\n size=10,\n type=\"pd-ssd\",\n zone=\"us-central1-a\")\ndaily_backup = gcp.compute.ResourcePolicy(\"daily_backup\",\n name=\"every-day-4am\",\n region=\"us-central1\",\n snapshot_schedule_policy={\n \"schedule\": {\n \"dailySchedule\": {\n \"daysInCycle\": 1,\n \"startTime\": \"04:00\",\n },\n },\n })\ndefault_instance_template = gcp.compute.InstanceTemplate(\"default\",\n name=\"appserver-template\",\n description=\"This template is used to create app server instances.\",\n tags=[\n \"foo\",\n \"bar\",\n ],\n labels={\n \"environment\": \"dev\",\n },\n instance_description=\"description assigned to instances\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n scheduling={\n \"automaticRestart\": True,\n \"onHostMaintenance\": \"MIGRATE\",\n },\n disks=[\n {\n \"sourceImage\": \"debian-cloud/debian-11\",\n \"autoDelete\": True,\n \"boot\": True,\n \"resourcePolicies\": daily_backup.id,\n },\n {\n \"source\": foobar.name,\n \"autoDelete\": False,\n \"boot\": False,\n },\n ],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n metadata={\n \"foo\": \"bar\",\n },\n service_account={\n \"email\": default.email,\n \"scopes\": [\"cloud-platform\"],\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 @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var foobar = new Gcp.Compute.Disk(\"foobar\", new()\n {\n Name = \"existing-disk\",\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n Size = 10,\n Type = \"pd-ssd\",\n Zone = \"us-central1-a\",\n });\n\n var dailyBackup = new Gcp.Compute.ResourcePolicy(\"daily_backup\", new()\n {\n Name = \"every-day-4am\",\n Region = \"us-central1\",\n SnapshotSchedulePolicy = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyArgs\n {\n Schedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs\n {\n DailySchedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs\n {\n DaysInCycle = 1,\n StartTime = \"04:00\",\n },\n },\n },\n });\n\n var defaultInstanceTemplate = new Gcp.Compute.InstanceTemplate(\"default\", new()\n {\n Name = \"appserver-template\",\n Description = \"This template is used to create app server instances.\",\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Labels = \n {\n { \"environment\", \"dev\" },\n },\n InstanceDescription = \"description assigned to instances\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Scheduling = new Gcp.Compute.Inputs.InstanceTemplateSchedulingArgs\n {\n AutomaticRestart = true,\n OnHostMaintenance = \"MIGRATE\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = \"debian-cloud/debian-11\",\n AutoDelete = true,\n Boot = true,\n ResourcePolicies = dailyBackup.Id,\n },\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n Source = foobar.Name,\n AutoDelete = false,\n Boot = false,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Email = @default.Email,\n Scopes = new[]\n {\n \"cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobar, err := compute.NewDisk(ctx, \"foobar\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"existing-disk\"),\n\t\t\tImage: pulumi.String(myImage.SelfLink),\n\t\t\tSize: pulumi.Int(10),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdailyBackup, err := compute.NewResourcePolicy(ctx, \"daily_backup\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"every-day-4am\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSnapshotSchedulePolicy: \u0026compute.ResourcePolicySnapshotSchedulePolicyArgs{\n\t\t\t\tSchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleArgs{\n\t\t\t\t\tDailySchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs{\n\t\t\t\t\t\tDaysInCycle: pulumi.Int(1),\n\t\t\t\t\t\tStartTime: pulumi.String(\"04:00\"),\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 = compute.NewInstanceTemplate(ctx, \"default\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"appserver-template\"),\n\t\t\tDescription: pulumi.String(\"This template is used to create app server instances.\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"environment\": pulumi.String(\"dev\"),\n\t\t\t},\n\t\t\tInstanceDescription: pulumi.String(\"description assigned to instances\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tScheduling: \u0026compute.InstanceTemplateSchedulingArgs{\n\t\t\t\tAutomaticRestart: pulumi.Bool(true),\n\t\t\t\tOnHostMaintenance: pulumi.String(\"MIGRATE\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t\tResourcePolicies: dailyBackup.ID(),\n\t\t\t\t},\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSource: foobar.Name,\n\t\t\t\t\tAutoDelete: pulumi.Bool(false),\n\t\t\t\t\tBoot: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.Map{\n\t\t\t\t\"foo\": pulumi.Any(\"bar\"),\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tEmail: _default.Email,\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"cloud-platform\"),\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateSchedulingArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\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 Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var foobar = new Disk(\"foobar\", DiskArgs.builder()\n .name(\"existing-disk\")\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .size(10)\n .type(\"pd-ssd\")\n .zone(\"us-central1-a\")\n .build());\n\n var dailyBackup = new ResourcePolicy(\"dailyBackup\", ResourcePolicyArgs.builder()\n .name(\"every-day-4am\")\n .region(\"us-central1\")\n .snapshotSchedulePolicy(ResourcePolicySnapshotSchedulePolicyArgs.builder()\n .schedule(ResourcePolicySnapshotSchedulePolicyScheduleArgs.builder()\n .dailySchedule(ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs.builder()\n .daysInCycle(1)\n .startTime(\"04:00\")\n .build())\n .build())\n .build())\n .build());\n\n var defaultInstanceTemplate = new InstanceTemplate(\"defaultInstanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"appserver-template\")\n .description(\"This template is used to create app server instances.\")\n .tags( \n \"foo\",\n \"bar\")\n .labels(Map.of(\"environment\", \"dev\"))\n .instanceDescription(\"description assigned to instances\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .scheduling(InstanceTemplateSchedulingArgs.builder()\n .automaticRestart(true)\n .onHostMaintenance(\"MIGRATE\")\n .build())\n .disks( \n InstanceTemplateDiskArgs.builder()\n .sourceImage(\"debian-cloud/debian-11\")\n .autoDelete(true)\n .boot(true)\n .resourcePolicies(dailyBackup.id())\n .build(),\n InstanceTemplateDiskArgs.builder()\n .source(foobar.name())\n .autoDelete(false)\n .boot(false)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .email(default_.email())\n .scopes(\"cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n defaultInstanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: default\n properties:\n name: appserver-template\n description: This template is used to create app server instances.\n tags:\n - foo\n - bar\n labels:\n environment: dev\n instanceDescription: description assigned to instances\n machineType: e2-medium\n canIpForward: false\n scheduling:\n automaticRestart: true\n onHostMaintenance: MIGRATE\n disks:\n - sourceImage: debian-cloud/debian-11\n autoDelete: true\n boot: true\n resourcePolicies: ${dailyBackup.id}\n - source: ${foobar.name}\n autoDelete: false\n boot: false\n networkInterfaces:\n - network: default\n metadata:\n foo: bar\n serviceAccount:\n email: ${default.email}\n scopes:\n - cloud-platform\n foobar:\n type: gcp:compute:Disk\n properties:\n name: existing-disk\n image: ${myImage.selfLink}\n size: 10\n type: pd-ssd\n zone: us-central1-a\n dailyBackup:\n type: gcp:compute:ResourcePolicy\n name: daily_backup\n properties:\n name: every-day-4am\n region: us-central1\n snapshotSchedulePolicy:\n schedule:\n dailySchedule:\n daysInCycle: 1\n startTime: 04:00\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Automatic Envoy Deployment\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst foobar = new gcp.compute.InstanceTemplate(\"foobar\", {\n name: \"appserver-template\",\n machineType: \"e2-medium\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n disks: [{\n sourceImage: myImage.then(myImage =\u003e myImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n networkInterfaces: [{\n network: \"default\",\n }],\n scheduling: {\n preemptible: false,\n automaticRestart: true,\n },\n metadata: {\n \"gce-software-declaration\": `{\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\\\nZONE=(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\\\nexport SERVICE_PROXY_AGENT_DIRECTORY=(mktemp -d)\\\\nsudo gsutil cp gs://gce-service-proxy-\"ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"SERVICE_PROXY_AGENT_DIRECTORY\"\\\\nsudo tar -xzf \"SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"SERVICE_PROXY_AGENT_DIRECTORY\"\\\\n\"SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n}\n`,\n \"gce-service-proxy\": `{\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n}\n`,\n \"enable-guest-attributes\": \"true\",\n \"enable-osconfig\": \"true\",\n },\n serviceAccount: {\n email: _default.then(_default =\u003e _default.email),\n scopes: [\"cloud-platform\"],\n },\n labels: {\n \"gce-service-proxy\": \"on\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nfoobar = gcp.compute.InstanceTemplate(\"foobar\",\n name=\"appserver-template\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n disks=[{\n \"sourceImage\": my_image.self_link,\n \"autoDelete\": True,\n \"boot\": True,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n scheduling={\n \"preemptible\": False,\n \"automaticRestart\": True,\n },\n metadata={\n \"gce-software-declaration\": \"\"\"{\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"$ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\nsudo tar -xzf \"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\n\"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n}\n\"\"\",\n \"gce-service-proxy\": \"\"\"{\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n}\n\"\"\",\n \"enable-guest-attributes\": \"true\",\n \"enable-osconfig\": \"true\",\n },\n service_account={\n \"email\": default.email,\n \"scopes\": [\"cloud-platform\"],\n },\n labels={\n \"gce-service-proxy\": \"on\",\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 @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var foobar = new Gcp.Compute.InstanceTemplate(\"foobar\", new()\n {\n Name = \"appserver-template\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Scheduling = new Gcp.Compute.Inputs.InstanceTemplateSchedulingArgs\n {\n Preemptible = false,\n AutomaticRestart = true,\n },\n Metadata = \n {\n { \"gce-software-declaration\", @\"{\n \"\"softwareRecipes\"\": [{\n \"\"name\"\": \"\"install-gce-service-proxy-agent\"\",\n \"\"desired_state\"\": \"\"INSTALLED\"\",\n \"\"installSteps\"\": [{\n \"\"scriptRun\"\": {\n \"\"script\"\": \"\"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"\"$ZONE\"\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\"\\nsudo tar -xzf \"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\"/service-proxy-agent-0.2.tgz -C \"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\"\\n\"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\"\n }\n }]\n }]\n}\n\" },\n { \"gce-service-proxy\", @\"{\n \"\"api-version\"\": \"\"0.2\"\",\n \"\"proxy-spec\"\": {\n \"\"proxy-port\"\": 15001,\n \"\"network\"\": \"\"my-network\"\",\n \"\"tracing\"\": \"\"ON\"\",\n \"\"access-log\"\": \"\"/var/log/envoy/access.log\"\"\n }\n \"\"service\"\": {\n \"\"serving-ports\"\": [80, 81]\n },\n \"\"labels\"\": {\n \"\"app_name\"\": \"\"bookserver_app\"\",\n \"\"app_version\"\": \"\"STABLE\"\"\n }\n}\n\" },\n { \"enable-guest-attributes\", \"true\" },\n { \"enable-osconfig\", \"true\" },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Email = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Scopes = new[]\n {\n \"cloud-platform\",\n },\n },\n Labels = \n {\n { \"gce-service-proxy\", \"on\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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_default, err := compute.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceTemplate(ctx, \"foobar\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"appserver-template\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tScheduling: \u0026compute.InstanceTemplateSchedulingArgs{\n\t\t\t\tPreemptible: pulumi.Bool(false),\n\t\t\t\tAutomaticRestart: pulumi.Bool(true),\n\t\t\t},\n\t\t\tMetadata: pulumi.Map{\n\t\t\t\t\"gce-software-declaration\": pulumi.Any(`{\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"$ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\nsudo tar -xzf \"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\n\"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n}\n`),\n\t\t\t\t\"gce-service-proxy\": pulumi.Any(`{\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n}\n`),\n\t\t\t\t\"enable-guest-attributes\": pulumi.Any(\"true\"),\n\t\t\t\t\"enable-osconfig\": pulumi.Any(\"true\"),\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tEmail: pulumi.String(_default.Email),\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"gce-service-proxy\": pulumi.String(\"on\"),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateSchedulingArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\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 default = ComputeFunctions.getDefaultServiceAccount();\n\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var foobar = new InstanceTemplate(\"foobar\", InstanceTemplateArgs.builder()\n .name(\"appserver-template\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .scheduling(InstanceTemplateSchedulingArgs.builder()\n .preemptible(false)\n .automaticRestart(true)\n .build())\n .metadata(Map.ofEntries(\n Map.entry(\"gce-software-declaration\", \"\"\"\n{\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"$ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\nsudo tar -xzf \"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\n\"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n}\n \"\"\"),\n Map.entry(\"gce-service-proxy\", \"\"\"\n{\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n}\n \"\"\"),\n Map.entry(\"enable-guest-attributes\", \"true\"),\n Map.entry(\"enable-osconfig\", \"true\")\n ))\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .email(default_.email())\n .scopes(\"cloud-platform\")\n .build())\n .labels(Map.of(\"gce-service-proxy\", \"on\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:InstanceTemplate\n properties:\n name: appserver-template\n machineType: e2-medium\n canIpForward: false\n tags:\n - foo\n - bar\n disks:\n - sourceImage: ${myImage.selfLink}\n autoDelete: true\n boot: true\n networkInterfaces:\n - network: default\n scheduling:\n preemptible: false\n automaticRestart: true\n metadata:\n gce-software-declaration: |\n {\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"$ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\nsudo tar -xzf \"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\n\"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n }\n gce-service-proxy: |\n {\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n }\n enable-guest-attributes: 'true'\n enable-osconfig: 'true'\n serviceAccount:\n email: ${default.email}\n scopes:\n - cloud-platform\n labels:\n gce-service-proxy: on\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Deploying the Latest Image\n\nA common way to use instance templates and managed instance groups is to deploy the\nlatest image in a family, usually the latest build of your application. There are two\nways to do this in the provider, and they have their pros and cons. The difference ends\nup being in how \"latest\" is interpreted. You can either deploy the latest image available\nwhen the provider runs, or you can have each instance check what the latest image is when\nit's being created, either as part of a scaling event or being rebuilt by the instance\ngroup manager.\n\nIf you're not sure, we recommend deploying the latest image available when the provider runs,\nbecause this means all the instances in your group will be based on the same image, always,\nand means that no upgrades or changes to your instances happen outside of a `pulumi up`.\nYou can achieve this by using the `gcp.compute.Image`\ndata source, which will retrieve the latest image on every `pulumi apply`, and will update\nthe template to use that specific image:\n\n```tf\ndata \"google_compute_image\" \"my_image\" {\n family = \"debian-11\"\n project = \"debian-cloud\"\n}\n\nresource \"google_compute_instance_template\" \"instance_template\" {\n name_prefix = \"instance-template-\"\n machine_type = \"e2-medium\"\n region = \"us-central1\"\n\n // boot disk\n disk {\n source_image = data.google_compute_image.my_image.self_link\n }\n}\n```\n\nTo have instances update to the latest on every scaling event or instance re-creation,\nuse the family as the image for the disk, and it will use GCP's default behavior, setting\nthe image for the template to the family:\n\n```tf\nresource \"google_compute_instance_template\" \"instance_template\" {\n name_prefix = \"instance-template-\"\n machine_type = \"e2-medium\"\n region = \"us-central1\"\n\n // boot disk\n disk {\n source_image = \"debian-cloud/debian-11\"\n }\n}\n```\n\n## Import\n\nInstance templates can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/instanceTemplates/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, instance templates can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/instanceTemplate:InstanceTemplate default projects/{{project}}/global/instanceTemplates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceTemplate:InstanceTemplate default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceTemplate:InstanceTemplate default {{name}}\n```\n\n", + "description": "\u003e **Note**: Global instance templates can be used in any region. To lower the impact of outages outside your region and gain data residency within your region, use google_compute_region_instance_template.\n\nManages a VM instance template resource within GCE. For more information see\n[the official documentation](https://cloud.google.com/compute/docs/instance-templates)\nand\n[API](https://cloud.google.com/compute/docs/reference/latest/instanceTemplates).\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst foobar = new gcp.compute.Disk(\"foobar\", {\n name: \"existing-disk\",\n image: myImage.then(myImage =\u003e myImage.selfLink),\n size: 10,\n type: \"pd-ssd\",\n zone: \"us-central1-a\",\n});\nconst dailyBackup = new gcp.compute.ResourcePolicy(\"daily_backup\", {\n name: \"every-day-4am\",\n region: \"us-central1\",\n snapshotSchedulePolicy: {\n schedule: {\n dailySchedule: {\n daysInCycle: 1,\n startTime: \"04:00\",\n },\n },\n },\n});\nconst defaultInstanceTemplate = new gcp.compute.InstanceTemplate(\"default\", {\n name: \"appserver-template\",\n description: \"This template is used to create app server instances.\",\n tags: [\n \"foo\",\n \"bar\",\n ],\n labels: {\n environment: \"dev\",\n },\n instanceDescription: \"description assigned to instances\",\n machineType: \"e2-medium\",\n canIpForward: false,\n scheduling: {\n automaticRestart: true,\n onHostMaintenance: \"MIGRATE\",\n },\n disks: [\n {\n sourceImage: \"debian-cloud/debian-11\",\n autoDelete: true,\n boot: true,\n resourcePolicies: dailyBackup.id,\n },\n {\n source: foobar.name,\n autoDelete: false,\n boot: false,\n },\n ],\n networkInterfaces: [{\n network: \"default\",\n }],\n metadata: {\n foo: \"bar\",\n },\n serviceAccount: {\n email: _default.email,\n scopes: [\"cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nfoobar = gcp.compute.Disk(\"foobar\",\n name=\"existing-disk\",\n image=my_image.self_link,\n size=10,\n type=\"pd-ssd\",\n zone=\"us-central1-a\")\ndaily_backup = gcp.compute.ResourcePolicy(\"daily_backup\",\n name=\"every-day-4am\",\n region=\"us-central1\",\n snapshot_schedule_policy={\n \"schedule\": {\n \"daily_schedule\": {\n \"days_in_cycle\": 1,\n \"start_time\": \"04:00\",\n },\n },\n })\ndefault_instance_template = gcp.compute.InstanceTemplate(\"default\",\n name=\"appserver-template\",\n description=\"This template is used to create app server instances.\",\n tags=[\n \"foo\",\n \"bar\",\n ],\n labels={\n \"environment\": \"dev\",\n },\n instance_description=\"description assigned to instances\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n scheduling={\n \"automatic_restart\": True,\n \"on_host_maintenance\": \"MIGRATE\",\n },\n disks=[\n {\n \"source_image\": \"debian-cloud/debian-11\",\n \"auto_delete\": True,\n \"boot\": True,\n \"resource_policies\": daily_backup.id,\n },\n {\n \"source\": foobar.name,\n \"auto_delete\": False,\n \"boot\": False,\n },\n ],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n metadata={\n \"foo\": \"bar\",\n },\n service_account={\n \"email\": default.email,\n \"scopes\": [\"cloud-platform\"],\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 @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var foobar = new Gcp.Compute.Disk(\"foobar\", new()\n {\n Name = \"existing-disk\",\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n Size = 10,\n Type = \"pd-ssd\",\n Zone = \"us-central1-a\",\n });\n\n var dailyBackup = new Gcp.Compute.ResourcePolicy(\"daily_backup\", new()\n {\n Name = \"every-day-4am\",\n Region = \"us-central1\",\n SnapshotSchedulePolicy = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyArgs\n {\n Schedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs\n {\n DailySchedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs\n {\n DaysInCycle = 1,\n StartTime = \"04:00\",\n },\n },\n },\n });\n\n var defaultInstanceTemplate = new Gcp.Compute.InstanceTemplate(\"default\", new()\n {\n Name = \"appserver-template\",\n Description = \"This template is used to create app server instances.\",\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Labels = \n {\n { \"environment\", \"dev\" },\n },\n InstanceDescription = \"description assigned to instances\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Scheduling = new Gcp.Compute.Inputs.InstanceTemplateSchedulingArgs\n {\n AutomaticRestart = true,\n OnHostMaintenance = \"MIGRATE\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = \"debian-cloud/debian-11\",\n AutoDelete = true,\n Boot = true,\n ResourcePolicies = dailyBackup.Id,\n },\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n Source = foobar.Name,\n AutoDelete = false,\n Boot = false,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Email = @default.Email,\n Scopes = new[]\n {\n \"cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobar, err := compute.NewDisk(ctx, \"foobar\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"existing-disk\"),\n\t\t\tImage: pulumi.String(myImage.SelfLink),\n\t\t\tSize: pulumi.Int(10),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdailyBackup, err := compute.NewResourcePolicy(ctx, \"daily_backup\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"every-day-4am\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSnapshotSchedulePolicy: \u0026compute.ResourcePolicySnapshotSchedulePolicyArgs{\n\t\t\t\tSchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleArgs{\n\t\t\t\t\tDailySchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs{\n\t\t\t\t\t\tDaysInCycle: pulumi.Int(1),\n\t\t\t\t\t\tStartTime: pulumi.String(\"04:00\"),\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 = compute.NewInstanceTemplate(ctx, \"default\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"appserver-template\"),\n\t\t\tDescription: pulumi.String(\"This template is used to create app server instances.\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"environment\": pulumi.String(\"dev\"),\n\t\t\t},\n\t\t\tInstanceDescription: pulumi.String(\"description assigned to instances\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tScheduling: \u0026compute.InstanceTemplateSchedulingArgs{\n\t\t\t\tAutomaticRestart: pulumi.Bool(true),\n\t\t\t\tOnHostMaintenance: pulumi.String(\"MIGRATE\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t\tResourcePolicies: dailyBackup.ID(),\n\t\t\t\t},\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSource: foobar.Name,\n\t\t\t\t\tAutoDelete: pulumi.Bool(false),\n\t\t\t\t\tBoot: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.Map{\n\t\t\t\t\"foo\": pulumi.Any(\"bar\"),\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tEmail: _default.Email,\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"cloud-platform\"),\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateSchedulingArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\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 Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var foobar = new Disk(\"foobar\", DiskArgs.builder()\n .name(\"existing-disk\")\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .size(10)\n .type(\"pd-ssd\")\n .zone(\"us-central1-a\")\n .build());\n\n var dailyBackup = new ResourcePolicy(\"dailyBackup\", ResourcePolicyArgs.builder()\n .name(\"every-day-4am\")\n .region(\"us-central1\")\n .snapshotSchedulePolicy(ResourcePolicySnapshotSchedulePolicyArgs.builder()\n .schedule(ResourcePolicySnapshotSchedulePolicyScheduleArgs.builder()\n .dailySchedule(ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs.builder()\n .daysInCycle(1)\n .startTime(\"04:00\")\n .build())\n .build())\n .build())\n .build());\n\n var defaultInstanceTemplate = new InstanceTemplate(\"defaultInstanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"appserver-template\")\n .description(\"This template is used to create app server instances.\")\n .tags( \n \"foo\",\n \"bar\")\n .labels(Map.of(\"environment\", \"dev\"))\n .instanceDescription(\"description assigned to instances\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .scheduling(InstanceTemplateSchedulingArgs.builder()\n .automaticRestart(true)\n .onHostMaintenance(\"MIGRATE\")\n .build())\n .disks( \n InstanceTemplateDiskArgs.builder()\n .sourceImage(\"debian-cloud/debian-11\")\n .autoDelete(true)\n .boot(true)\n .resourcePolicies(dailyBackup.id())\n .build(),\n InstanceTemplateDiskArgs.builder()\n .source(foobar.name())\n .autoDelete(false)\n .boot(false)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .email(default_.email())\n .scopes(\"cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n defaultInstanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: default\n properties:\n name: appserver-template\n description: This template is used to create app server instances.\n tags:\n - foo\n - bar\n labels:\n environment: dev\n instanceDescription: description assigned to instances\n machineType: e2-medium\n canIpForward: false\n scheduling:\n automaticRestart: true\n onHostMaintenance: MIGRATE\n disks:\n - sourceImage: debian-cloud/debian-11\n autoDelete: true\n boot: true\n resourcePolicies: ${dailyBackup.id}\n - source: ${foobar.name}\n autoDelete: false\n boot: false\n networkInterfaces:\n - network: default\n metadata:\n foo: bar\n serviceAccount:\n email: ${default.email}\n scopes:\n - cloud-platform\n foobar:\n type: gcp:compute:Disk\n properties:\n name: existing-disk\n image: ${myImage.selfLink}\n size: 10\n type: pd-ssd\n zone: us-central1-a\n dailyBackup:\n type: gcp:compute:ResourcePolicy\n name: daily_backup\n properties:\n name: every-day-4am\n region: us-central1\n snapshotSchedulePolicy:\n schedule:\n dailySchedule:\n daysInCycle: 1\n startTime: 04:00\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Automatic Envoy Deployment\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst foobar = new gcp.compute.InstanceTemplate(\"foobar\", {\n name: \"appserver-template\",\n machineType: \"e2-medium\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n disks: [{\n sourceImage: myImage.then(myImage =\u003e myImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n networkInterfaces: [{\n network: \"default\",\n }],\n scheduling: {\n preemptible: false,\n automaticRestart: true,\n },\n metadata: {\n \"gce-software-declaration\": `{\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\\\nZONE=(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\\\nexport SERVICE_PROXY_AGENT_DIRECTORY=(mktemp -d)\\\\nsudo gsutil cp gs://gce-service-proxy-\"ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"SERVICE_PROXY_AGENT_DIRECTORY\"\\\\nsudo tar -xzf \"SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"SERVICE_PROXY_AGENT_DIRECTORY\"\\\\n\"SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n}\n`,\n \"gce-service-proxy\": `{\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n}\n`,\n \"enable-guest-attributes\": \"true\",\n \"enable-osconfig\": \"true\",\n },\n serviceAccount: {\n email: _default.then(_default =\u003e _default.email),\n scopes: [\"cloud-platform\"],\n },\n labels: {\n \"gce-service-proxy\": \"on\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nfoobar = gcp.compute.InstanceTemplate(\"foobar\",\n name=\"appserver-template\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n disks=[{\n \"source_image\": my_image.self_link,\n \"auto_delete\": True,\n \"boot\": True,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n scheduling={\n \"preemptible\": False,\n \"automatic_restart\": True,\n },\n metadata={\n \"gce-software-declaration\": \"\"\"{\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"$ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\nsudo tar -xzf \"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\n\"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n}\n\"\"\",\n \"gce-service-proxy\": \"\"\"{\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n}\n\"\"\",\n \"enable-guest-attributes\": \"true\",\n \"enable-osconfig\": \"true\",\n },\n service_account={\n \"email\": default.email,\n \"scopes\": [\"cloud-platform\"],\n },\n labels={\n \"gce-service-proxy\": \"on\",\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 @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var foobar = new Gcp.Compute.InstanceTemplate(\"foobar\", new()\n {\n Name = \"appserver-template\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Scheduling = new Gcp.Compute.Inputs.InstanceTemplateSchedulingArgs\n {\n Preemptible = false,\n AutomaticRestart = true,\n },\n Metadata = \n {\n { \"gce-software-declaration\", @\"{\n \"\"softwareRecipes\"\": [{\n \"\"name\"\": \"\"install-gce-service-proxy-agent\"\",\n \"\"desired_state\"\": \"\"INSTALLED\"\",\n \"\"installSteps\"\": [{\n \"\"scriptRun\"\": {\n \"\"script\"\": \"\"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"\"$ZONE\"\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\"\\nsudo tar -xzf \"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\"/service-proxy-agent-0.2.tgz -C \"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\"\\n\"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\"\n }\n }]\n }]\n}\n\" },\n { \"gce-service-proxy\", @\"{\n \"\"api-version\"\": \"\"0.2\"\",\n \"\"proxy-spec\"\": {\n \"\"proxy-port\"\": 15001,\n \"\"network\"\": \"\"my-network\"\",\n \"\"tracing\"\": \"\"ON\"\",\n \"\"access-log\"\": \"\"/var/log/envoy/access.log\"\"\n }\n \"\"service\"\": {\n \"\"serving-ports\"\": [80, 81]\n },\n \"\"labels\"\": {\n \"\"app_name\"\": \"\"bookserver_app\"\",\n \"\"app_version\"\": \"\"STABLE\"\"\n }\n}\n\" },\n { \"enable-guest-attributes\", \"true\" },\n { \"enable-osconfig\", \"true\" },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Email = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Scopes = new[]\n {\n \"cloud-platform\",\n },\n },\n Labels = \n {\n { \"gce-service-proxy\", \"on\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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_default, err := compute.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceTemplate(ctx, \"foobar\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"appserver-template\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tScheduling: \u0026compute.InstanceTemplateSchedulingArgs{\n\t\t\t\tPreemptible: pulumi.Bool(false),\n\t\t\t\tAutomaticRestart: pulumi.Bool(true),\n\t\t\t},\n\t\t\tMetadata: pulumi.Map{\n\t\t\t\t\"gce-software-declaration\": pulumi.Any(`{\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"$ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\nsudo tar -xzf \"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\n\"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n}\n`),\n\t\t\t\t\"gce-service-proxy\": pulumi.Any(`{\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n}\n`),\n\t\t\t\t\"enable-guest-attributes\": pulumi.Any(\"true\"),\n\t\t\t\t\"enable-osconfig\": pulumi.Any(\"true\"),\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tEmail: pulumi.String(_default.Email),\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"gce-service-proxy\": pulumi.String(\"on\"),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateSchedulingArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\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 default = ComputeFunctions.getDefaultServiceAccount();\n\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var foobar = new InstanceTemplate(\"foobar\", InstanceTemplateArgs.builder()\n .name(\"appserver-template\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .scheduling(InstanceTemplateSchedulingArgs.builder()\n .preemptible(false)\n .automaticRestart(true)\n .build())\n .metadata(Map.ofEntries(\n Map.entry(\"gce-software-declaration\", \"\"\"\n{\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"$ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\nsudo tar -xzf \"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\n\"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n}\n \"\"\"),\n Map.entry(\"gce-service-proxy\", \"\"\"\n{\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n}\n \"\"\"),\n Map.entry(\"enable-guest-attributes\", \"true\"),\n Map.entry(\"enable-osconfig\", \"true\")\n ))\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .email(default_.email())\n .scopes(\"cloud-platform\")\n .build())\n .labels(Map.of(\"gce-service-proxy\", \"on\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:InstanceTemplate\n properties:\n name: appserver-template\n machineType: e2-medium\n canIpForward: false\n tags:\n - foo\n - bar\n disks:\n - sourceImage: ${myImage.selfLink}\n autoDelete: true\n boot: true\n networkInterfaces:\n - network: default\n scheduling:\n preemptible: false\n automaticRestart: true\n metadata:\n gce-software-declaration: |\n {\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"$ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\nsudo tar -xzf \"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\n\"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n }\n gce-service-proxy: |\n {\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n }\n enable-guest-attributes: 'true'\n enable-osconfig: 'true'\n serviceAccount:\n email: ${default.email}\n scopes:\n - cloud-platform\n labels:\n gce-service-proxy: on\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Deploying the Latest Image\n\nA common way to use instance templates and managed instance groups is to deploy the\nlatest image in a family, usually the latest build of your application. There are two\nways to do this in the provider, and they have their pros and cons. The difference ends\nup being in how \"latest\" is interpreted. You can either deploy the latest image available\nwhen the provider runs, or you can have each instance check what the latest image is when\nit's being created, either as part of a scaling event or being rebuilt by the instance\ngroup manager.\n\nIf you're not sure, we recommend deploying the latest image available when the provider runs,\nbecause this means all the instances in your group will be based on the same image, always,\nand means that no upgrades or changes to your instances happen outside of a `pulumi up`.\nYou can achieve this by using the `gcp.compute.Image`\ndata source, which will retrieve the latest image on every `pulumi apply`, and will update\nthe template to use that specific image:\n\n```tf\ndata \"google_compute_image\" \"my_image\" {\n family = \"debian-11\"\n project = \"debian-cloud\"\n}\n\nresource \"google_compute_instance_template\" \"instance_template\" {\n name_prefix = \"instance-template-\"\n machine_type = \"e2-medium\"\n region = \"us-central1\"\n\n // boot disk\n disk {\n source_image = data.google_compute_image.my_image.self_link\n }\n}\n```\n\nTo have instances update to the latest on every scaling event or instance re-creation,\nuse the family as the image for the disk, and it will use GCP's default behavior, setting\nthe image for the template to the family:\n\n```tf\nresource \"google_compute_instance_template\" \"instance_template\" {\n name_prefix = \"instance-template-\"\n machine_type = \"e2-medium\"\n region = \"us-central1\"\n\n // boot disk\n disk {\n source_image = \"debian-cloud/debian-11\"\n }\n}\n```\n\n## Import\n\nInstance templates can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/instanceTemplates/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, instance templates can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/instanceTemplate:InstanceTemplate default projects/{{project}}/global/instanceTemplates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceTemplate:InstanceTemplate default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceTemplate:InstanceTemplate default {{name}}\n```\n\n", "properties": { "advancedMachineFeatures": { "$ref": "#/types/gcp:compute/InstanceTemplateAdvancedMachineFeatures:InstanceTemplateAdvancedMachineFeatures", @@ -151734,7 +151734,7 @@ } }, "gcp:compute/machineImage:MachineImage": { - "description": "Represents a Machine Image resource. Machine images store all the configuration,\nmetadata, permissions, and data from one or more disks required to create a\nVirtual machine (VM) instance.\n\nTo get more information about MachineImage, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/machineImages)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/machine-images)\n\n## Example Usage\n\n### Machine Image Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vm = new gcp.compute.Instance(\"vm\", {\n name: \"my-vm\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n});\nconst image = new gcp.compute.MachineImage(\"image\", {\n name: \"my-image\",\n sourceInstance: vm.selfLink,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvm = gcp.compute.Instance(\"vm\",\n name=\"my-vm\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initializeParams\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }])\nimage = gcp.compute.MachineImage(\"image\",\n name=\"my-image\",\n source_instance=vm.self_link)\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 vm = new Gcp.Compute.Instance(\"vm\", new()\n {\n Name = \"my-vm\",\n MachineType = \"e2-medium\",\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 },\n },\n });\n\n var image = new Gcp.Compute.MachineImage(\"image\", new()\n {\n Name = \"my-image\",\n SourceInstance = vm.SelfLink,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tvm, err := compute.NewInstance(ctx, \"vm\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\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},\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.NewMachineImage(ctx, \"image\", \u0026compute.MachineImageArgs{\n\t\t\tName: pulumi.String(\"my-image\"),\n\t\t\tSourceInstance: vm.SelfLink,\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.compute.MachineImage;\nimport com.pulumi.gcp.compute.MachineImageArgs;\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 vm = new Instance(\"vm\", InstanceArgs.builder()\n .name(\"my-vm\")\n .machineType(\"e2-medium\")\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 .build())\n .build());\n\n var image = new MachineImage(\"image\", MachineImageArgs.builder()\n .name(\"my-image\")\n .sourceInstance(vm.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vm:\n type: gcp:compute:Instance\n properties:\n name: my-vm\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - network: default\n image:\n type: gcp:compute:MachineImage\n properties:\n name: my-image\n sourceInstance: ${vm.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Compute Machine Image Kms\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vm = new gcp.compute.Instance(\"vm\", {\n name: \"my-vm\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"keyring\",\n location: \"us\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"key\",\n keyRing: keyRing.id,\n});\nconst image = new gcp.compute.MachineImage(\"image\", {\n name: \"my-image\",\n sourceInstance: vm.selfLink,\n machineImageEncryptionKey: {\n kmsKeyName: cryptoKey.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvm = gcp.compute.Instance(\"vm\",\n name=\"my-vm\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initializeParams\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }])\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"keyring\",\n location=\"us\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"key\",\n key_ring=key_ring.id)\nimage = gcp.compute.MachineImage(\"image\",\n name=\"my-image\",\n source_instance=vm.self_link,\n machine_image_encryption_key={\n \"kmsKeyName\": crypto_key.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 vm = new Gcp.Compute.Instance(\"vm\", new()\n {\n Name = \"my-vm\",\n MachineType = \"e2-medium\",\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 },\n },\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"keyring\",\n Location = \"us\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"key\",\n KeyRing = keyRing.Id,\n });\n\n var image = new Gcp.Compute.MachineImage(\"image\", new()\n {\n Name = \"my-image\",\n SourceInstance = vm.SelfLink,\n MachineImageEncryptionKey = new Gcp.Compute.Inputs.MachineImageMachineImageEncryptionKeyArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tvm, err := compute.NewInstance(ctx, \"vm\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\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},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"keyring\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewMachineImage(ctx, \"image\", \u0026compute.MachineImageArgs{\n\t\t\tName: pulumi.String(\"my-image\"),\n\t\t\tSourceInstance: vm.SelfLink,\n\t\t\tMachineImageEncryptionKey: \u0026compute.MachineImageMachineImageEncryptionKeyArgs{\n\t\t\t\tKmsKeyName: cryptoKey.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.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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.compute.MachineImage;\nimport com.pulumi.gcp.compute.MachineImageArgs;\nimport com.pulumi.gcp.compute.inputs.MachineImageMachineImageEncryptionKeyArgs;\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 vm = new Instance(\"vm\", InstanceArgs.builder()\n .name(\"my-vm\")\n .machineType(\"e2-medium\")\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 .build())\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"keyring\")\n .location(\"us\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"key\")\n .keyRing(keyRing.id())\n .build());\n\n var image = new MachineImage(\"image\", MachineImageArgs.builder()\n .name(\"my-image\")\n .sourceInstance(vm.selfLink())\n .machineImageEncryptionKey(MachineImageMachineImageEncryptionKeyArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vm:\n type: gcp:compute:Instance\n properties:\n name: my-vm\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - network: default\n image:\n type: gcp:compute:MachineImage\n properties:\n name: my-image\n sourceInstance: ${vm.selfLink}\n machineImageEncryptionKey:\n kmsKeyName: ${cryptoKey.id}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: keyring\n location: us\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMachineImage can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/machineImages/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, MachineImage can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/machineImage:MachineImage default projects/{{project}}/global/machineImages/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/machineImage:MachineImage default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/machineImage:MachineImage default {{name}}\n```\n\n", + "description": "Represents a Machine Image resource. Machine images store all the configuration,\nmetadata, permissions, and data from one or more disks required to create a\nVirtual machine (VM) instance.\n\nTo get more information about MachineImage, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/machineImages)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/machine-images)\n\n## Example Usage\n\n### Machine Image Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vm = new gcp.compute.Instance(\"vm\", {\n name: \"my-vm\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n});\nconst image = new gcp.compute.MachineImage(\"image\", {\n name: \"my-image\",\n sourceInstance: vm.selfLink,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvm = gcp.compute.Instance(\"vm\",\n name=\"my-vm\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }])\nimage = gcp.compute.MachineImage(\"image\",\n name=\"my-image\",\n source_instance=vm.self_link)\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 vm = new Gcp.Compute.Instance(\"vm\", new()\n {\n Name = \"my-vm\",\n MachineType = \"e2-medium\",\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 },\n },\n });\n\n var image = new Gcp.Compute.MachineImage(\"image\", new()\n {\n Name = \"my-image\",\n SourceInstance = vm.SelfLink,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tvm, err := compute.NewInstance(ctx, \"vm\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\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},\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.NewMachineImage(ctx, \"image\", \u0026compute.MachineImageArgs{\n\t\t\tName: pulumi.String(\"my-image\"),\n\t\t\tSourceInstance: vm.SelfLink,\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.compute.MachineImage;\nimport com.pulumi.gcp.compute.MachineImageArgs;\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 vm = new Instance(\"vm\", InstanceArgs.builder()\n .name(\"my-vm\")\n .machineType(\"e2-medium\")\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 .build())\n .build());\n\n var image = new MachineImage(\"image\", MachineImageArgs.builder()\n .name(\"my-image\")\n .sourceInstance(vm.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vm:\n type: gcp:compute:Instance\n properties:\n name: my-vm\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - network: default\n image:\n type: gcp:compute:MachineImage\n properties:\n name: my-image\n sourceInstance: ${vm.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Compute Machine Image Kms\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vm = new gcp.compute.Instance(\"vm\", {\n name: \"my-vm\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"keyring\",\n location: \"us\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"key\",\n keyRing: keyRing.id,\n});\nconst image = new gcp.compute.MachineImage(\"image\", {\n name: \"my-image\",\n sourceInstance: vm.selfLink,\n machineImageEncryptionKey: {\n kmsKeyName: cryptoKey.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvm = gcp.compute.Instance(\"vm\",\n name=\"my-vm\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }])\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"keyring\",\n location=\"us\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"key\",\n key_ring=key_ring.id)\nimage = gcp.compute.MachineImage(\"image\",\n name=\"my-image\",\n source_instance=vm.self_link,\n machine_image_encryption_key={\n \"kms_key_name\": crypto_key.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 vm = new Gcp.Compute.Instance(\"vm\", new()\n {\n Name = \"my-vm\",\n MachineType = \"e2-medium\",\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 },\n },\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"keyring\",\n Location = \"us\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"key\",\n KeyRing = keyRing.Id,\n });\n\n var image = new Gcp.Compute.MachineImage(\"image\", new()\n {\n Name = \"my-image\",\n SourceInstance = vm.SelfLink,\n MachineImageEncryptionKey = new Gcp.Compute.Inputs.MachineImageMachineImageEncryptionKeyArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tvm, err := compute.NewInstance(ctx, \"vm\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\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},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"keyring\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewMachineImage(ctx, \"image\", \u0026compute.MachineImageArgs{\n\t\t\tName: pulumi.String(\"my-image\"),\n\t\t\tSourceInstance: vm.SelfLink,\n\t\t\tMachineImageEncryptionKey: \u0026compute.MachineImageMachineImageEncryptionKeyArgs{\n\t\t\t\tKmsKeyName: cryptoKey.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.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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.compute.MachineImage;\nimport com.pulumi.gcp.compute.MachineImageArgs;\nimport com.pulumi.gcp.compute.inputs.MachineImageMachineImageEncryptionKeyArgs;\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 vm = new Instance(\"vm\", InstanceArgs.builder()\n .name(\"my-vm\")\n .machineType(\"e2-medium\")\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 .build())\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"keyring\")\n .location(\"us\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"key\")\n .keyRing(keyRing.id())\n .build());\n\n var image = new MachineImage(\"image\", MachineImageArgs.builder()\n .name(\"my-image\")\n .sourceInstance(vm.selfLink())\n .machineImageEncryptionKey(MachineImageMachineImageEncryptionKeyArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vm:\n type: gcp:compute:Instance\n properties:\n name: my-vm\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - network: default\n image:\n type: gcp:compute:MachineImage\n properties:\n name: my-image\n sourceInstance: ${vm.selfLink}\n machineImageEncryptionKey:\n kmsKeyName: ${cryptoKey.id}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: keyring\n location: us\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMachineImage can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/machineImages/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, MachineImage can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/machineImage:MachineImage default projects/{{project}}/global/machineImages/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/machineImage:MachineImage default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/machineImage:MachineImage default {{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -152147,7 +152147,7 @@ } }, "gcp:compute/managedSslCertificate:ManagedSslCertificate": { - "description": "An SslCertificate resource, used for HTTPS load balancing. This resource\nrepresents a certificate for which the certificate secrets are created and\nmanaged by Google.\n\nFor a resource where you provide the key, see the\nSSL Certificate resource.\n\n\nTo get more information about ManagedSslCertificate, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/sslCertificates)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/ssl-certificates)\n\n\u003e **Warning:** This resource should be used with extreme caution! Provisioning an SSL\ncertificate is complex. Ensure that you understand the lifecycle of a\ncertificate before attempting complex tasks like cert rotation automatically.\nThis resource will \"return\" as soon as the certificate object is created,\nbut post-creation the certificate object will go through a \"provisioning\"\nprocess. The provisioning process can complete only when the domain name\nfor which the certificate is created points to a target pool which, itself,\npoints at the certificate. Depending on your DNS provider, this may take\nsome time, and migrating from self-managed certificates to Google-managed\ncertificates may entail some downtime while the certificate provisions.\n\nIn conclusion: Be extremely cautious.\n\n## Example Usage\n\n### Managed Ssl Certificate Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.ManagedSslCertificate(\"default\", {\n name: \"test-cert\",\n managed: {\n domains: [\"sslcert.tf-test.club.\"],\n },\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpsProxy = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-proxy\",\n urlMap: defaultURLMap.id,\n sslCertificates: [_default.id],\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"forwarding-rule\",\n target: defaultTargetHttpsProxy.id,\n portRange: \"443\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.ManagedSslCertificate(\"default\",\n name=\"test-cert\",\n managed={\n \"domains\": [\"sslcert.tf-test.club.\"],\n })\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": default_backend_service.id,\n \"pathRules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_https_proxy = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-proxy\",\n url_map=default_url_map.id,\n ssl_certificates=[default.id])\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"forwarding-rule\",\n target=default_target_https_proxy.id,\n port_range=\"443\")\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.ManagedSslCertificate(\"default\", new()\n {\n Name = \"test-cert\",\n Managed = new Gcp.Compute.Inputs.ManagedSslCertificateManagedArgs\n {\n Domains = new[]\n {\n \"sslcert.tf-test.club.\",\n },\n },\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpsProxy = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-proxy\",\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n @default.Id,\n },\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"forwarding-rule\",\n Target = defaultTargetHttpsProxy.Id,\n PortRange = \"443\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewManagedSslCertificate(ctx, \"default\", \u0026compute.ManagedSslCertificateArgs{\n\t\t\tName: pulumi.String(\"test-cert\"),\n\t\t\tManaged: \u0026compute.ManagedSslCertificateManagedArgs{\n\t\t\t\tDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club.\"),\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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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\tdefaultTargetHttpsProxy, err := compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\t_default.ID(),\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.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"forwarding-rule\"),\n\t\t\tTarget: defaultTargetHttpsProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"443\"),\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.ManagedSslCertificate;\nimport com.pulumi.gcp.compute.ManagedSslCertificateArgs;\nimport com.pulumi.gcp.compute.inputs.ManagedSslCertificateManagedArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\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 ManagedSslCertificate(\"default\", ManagedSslCertificateArgs.builder()\n .name(\"test-cert\")\n .managed(ManagedSslCertificateManagedArgs.builder()\n .domains(\"sslcert.tf-test.club.\")\n .build())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpsProxy = new TargetHttpsProxy(\"defaultTargetHttpsProxy\", TargetHttpsProxyArgs.builder()\n .name(\"test-proxy\")\n .urlMap(defaultURLMap.id())\n .sslCertificates(default_.id())\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .name(\"forwarding-rule\")\n .target(defaultTargetHttpsProxy.id())\n .portRange(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:ManagedSslCertificate\n properties:\n name: test-cert\n managed:\n domains:\n - sslcert.tf-test.club.\n defaultTargetHttpsProxy:\n type: gcp:compute:TargetHttpsProxy\n name: default\n properties:\n name: test-proxy\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${default.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - sslcert.tf-test.club\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n name: forwarding-rule\n target: ${defaultTargetHttpsProxy.id}\n portRange: 443\n```\n\u003c!--End PulumiCodeChooser --\u003e\n## Import\n\nManagedSslCertificate can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/sslCertificates/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ManagedSslCertificate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/managedSslCertificate:ManagedSslCertificate default projects/{{project}}/global/sslCertificates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/managedSslCertificate:ManagedSslCertificate default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/managedSslCertificate:ManagedSslCertificate default {{name}}\n```\n\n", + "description": "An SslCertificate resource, used for HTTPS load balancing. This resource\nrepresents a certificate for which the certificate secrets are created and\nmanaged by Google.\n\nFor a resource where you provide the key, see the\nSSL Certificate resource.\n\n\nTo get more information about ManagedSslCertificate, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/sslCertificates)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/ssl-certificates)\n\n\u003e **Warning:** This resource should be used with extreme caution! Provisioning an SSL\ncertificate is complex. Ensure that you understand the lifecycle of a\ncertificate before attempting complex tasks like cert rotation automatically.\nThis resource will \"return\" as soon as the certificate object is created,\nbut post-creation the certificate object will go through a \"provisioning\"\nprocess. The provisioning process can complete only when the domain name\nfor which the certificate is created points to a target pool which, itself,\npoints at the certificate. Depending on your DNS provider, this may take\nsome time, and migrating from self-managed certificates to Google-managed\ncertificates may entail some downtime while the certificate provisions.\n\nIn conclusion: Be extremely cautious.\n\n## Example Usage\n\n### Managed Ssl Certificate Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.ManagedSslCertificate(\"default\", {\n name: \"test-cert\",\n managed: {\n domains: [\"sslcert.tf-test.club.\"],\n },\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpsProxy = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-proxy\",\n urlMap: defaultURLMap.id,\n sslCertificates: [_default.id],\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"forwarding-rule\",\n target: defaultTargetHttpsProxy.id,\n portRange: \"443\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.ManagedSslCertificate(\"default\",\n name=\"test-cert\",\n managed={\n \"domains\": [\"sslcert.tf-test.club.\"],\n })\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_https_proxy = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-proxy\",\n url_map=default_url_map.id,\n ssl_certificates=[default.id])\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"forwarding-rule\",\n target=default_target_https_proxy.id,\n port_range=\"443\")\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.ManagedSslCertificate(\"default\", new()\n {\n Name = \"test-cert\",\n Managed = new Gcp.Compute.Inputs.ManagedSslCertificateManagedArgs\n {\n Domains = new[]\n {\n \"sslcert.tf-test.club.\",\n },\n },\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpsProxy = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-proxy\",\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n @default.Id,\n },\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"forwarding-rule\",\n Target = defaultTargetHttpsProxy.Id,\n PortRange = \"443\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewManagedSslCertificate(ctx, \"default\", \u0026compute.ManagedSslCertificateArgs{\n\t\t\tName: pulumi.String(\"test-cert\"),\n\t\t\tManaged: \u0026compute.ManagedSslCertificateManagedArgs{\n\t\t\t\tDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club.\"),\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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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\tdefaultTargetHttpsProxy, err := compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\t_default.ID(),\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.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"forwarding-rule\"),\n\t\t\tTarget: defaultTargetHttpsProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"443\"),\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.ManagedSslCertificate;\nimport com.pulumi.gcp.compute.ManagedSslCertificateArgs;\nimport com.pulumi.gcp.compute.inputs.ManagedSslCertificateManagedArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\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 ManagedSslCertificate(\"default\", ManagedSslCertificateArgs.builder()\n .name(\"test-cert\")\n .managed(ManagedSslCertificateManagedArgs.builder()\n .domains(\"sslcert.tf-test.club.\")\n .build())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpsProxy = new TargetHttpsProxy(\"defaultTargetHttpsProxy\", TargetHttpsProxyArgs.builder()\n .name(\"test-proxy\")\n .urlMap(defaultURLMap.id())\n .sslCertificates(default_.id())\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .name(\"forwarding-rule\")\n .target(defaultTargetHttpsProxy.id())\n .portRange(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:ManagedSslCertificate\n properties:\n name: test-cert\n managed:\n domains:\n - sslcert.tf-test.club.\n defaultTargetHttpsProxy:\n type: gcp:compute:TargetHttpsProxy\n name: default\n properties:\n name: test-proxy\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${default.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - sslcert.tf-test.club\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n name: forwarding-rule\n target: ${defaultTargetHttpsProxy.id}\n portRange: 443\n```\n\u003c!--End PulumiCodeChooser --\u003e\n## Import\n\nManagedSslCertificate can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/sslCertificates/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ManagedSslCertificate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/managedSslCertificate:ManagedSslCertificate default projects/{{project}}/global/sslCertificates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/managedSslCertificate:ManagedSslCertificate default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/managedSslCertificate:ManagedSslCertificate default {{name}}\n```\n\n", "properties": { "certificateId": { "type": "integer", @@ -152294,7 +152294,7 @@ ] }, "gcp:compute/mangedSslCertificate:MangedSslCertificate": { - "description": "An SslCertificate resource, used for HTTPS load balancing. This resource\nrepresents a certificate for which the certificate secrets are created and\nmanaged by Google.\n\nFor a resource where you provide the key, see the\nSSL Certificate resource.\n\n\nTo get more information about ManagedSslCertificate, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/sslCertificates)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/ssl-certificates)\n\n\u003e **Warning:** This resource should be used with extreme caution! Provisioning an SSL\ncertificate is complex. Ensure that you understand the lifecycle of a\ncertificate before attempting complex tasks like cert rotation automatically.\nThis resource will \"return\" as soon as the certificate object is created,\nbut post-creation the certificate object will go through a \"provisioning\"\nprocess. The provisioning process can complete only when the domain name\nfor which the certificate is created points to a target pool which, itself,\npoints at the certificate. Depending on your DNS provider, this may take\nsome time, and migrating from self-managed certificates to Google-managed\ncertificates may entail some downtime while the certificate provisions.\n\nIn conclusion: Be extremely cautious.\n\n## Example Usage\n\n### Managed Ssl Certificate Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.ManagedSslCertificate(\"default\", {\n name: \"test-cert\",\n managed: {\n domains: [\"sslcert.tf-test.club.\"],\n },\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpsProxy = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-proxy\",\n urlMap: defaultURLMap.id,\n sslCertificates: [_default.id],\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"forwarding-rule\",\n target: defaultTargetHttpsProxy.id,\n portRange: \"443\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.ManagedSslCertificate(\"default\",\n name=\"test-cert\",\n managed={\n \"domains\": [\"sslcert.tf-test.club.\"],\n })\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": default_backend_service.id,\n \"pathRules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_https_proxy = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-proxy\",\n url_map=default_url_map.id,\n ssl_certificates=[default.id])\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"forwarding-rule\",\n target=default_target_https_proxy.id,\n port_range=\"443\")\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.ManagedSslCertificate(\"default\", new()\n {\n Name = \"test-cert\",\n Managed = new Gcp.Compute.Inputs.ManagedSslCertificateManagedArgs\n {\n Domains = new[]\n {\n \"sslcert.tf-test.club.\",\n },\n },\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpsProxy = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-proxy\",\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n @default.Id,\n },\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"forwarding-rule\",\n Target = defaultTargetHttpsProxy.Id,\n PortRange = \"443\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewManagedSslCertificate(ctx, \"default\", \u0026compute.ManagedSslCertificateArgs{\n\t\t\tName: pulumi.String(\"test-cert\"),\n\t\t\tManaged: \u0026compute.ManagedSslCertificateManagedArgs{\n\t\t\t\tDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club.\"),\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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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\tdefaultTargetHttpsProxy, err := compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\t_default.ID(),\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.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"forwarding-rule\"),\n\t\t\tTarget: defaultTargetHttpsProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"443\"),\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.ManagedSslCertificate;\nimport com.pulumi.gcp.compute.ManagedSslCertificateArgs;\nimport com.pulumi.gcp.compute.inputs.ManagedSslCertificateManagedArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\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 ManagedSslCertificate(\"default\", ManagedSslCertificateArgs.builder()\n .name(\"test-cert\")\n .managed(ManagedSslCertificateManagedArgs.builder()\n .domains(\"sslcert.tf-test.club.\")\n .build())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpsProxy = new TargetHttpsProxy(\"defaultTargetHttpsProxy\", TargetHttpsProxyArgs.builder()\n .name(\"test-proxy\")\n .urlMap(defaultURLMap.id())\n .sslCertificates(default_.id())\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .name(\"forwarding-rule\")\n .target(defaultTargetHttpsProxy.id())\n .portRange(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:ManagedSslCertificate\n properties:\n name: test-cert\n managed:\n domains:\n - sslcert.tf-test.club.\n defaultTargetHttpsProxy:\n type: gcp:compute:TargetHttpsProxy\n name: default\n properties:\n name: test-proxy\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${default.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - sslcert.tf-test.club\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n name: forwarding-rule\n target: ${defaultTargetHttpsProxy.id}\n portRange: 443\n```\n\u003c!--End PulumiCodeChooser --\u003e\n## Import\n\nManagedSslCertificate can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/sslCertificates/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ManagedSslCertificate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/mangedSslCertificate:MangedSslCertificate default projects/{{project}}/global/sslCertificates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/mangedSslCertificate:MangedSslCertificate default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/mangedSslCertificate:MangedSslCertificate default {{name}}\n```\n\n", + "description": "An SslCertificate resource, used for HTTPS load balancing. This resource\nrepresents a certificate for which the certificate secrets are created and\nmanaged by Google.\n\nFor a resource where you provide the key, see the\nSSL Certificate resource.\n\n\nTo get more information about ManagedSslCertificate, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/sslCertificates)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/ssl-certificates)\n\n\u003e **Warning:** This resource should be used with extreme caution! Provisioning an SSL\ncertificate is complex. Ensure that you understand the lifecycle of a\ncertificate before attempting complex tasks like cert rotation automatically.\nThis resource will \"return\" as soon as the certificate object is created,\nbut post-creation the certificate object will go through a \"provisioning\"\nprocess. The provisioning process can complete only when the domain name\nfor which the certificate is created points to a target pool which, itself,\npoints at the certificate. Depending on your DNS provider, this may take\nsome time, and migrating from self-managed certificates to Google-managed\ncertificates may entail some downtime while the certificate provisions.\n\nIn conclusion: Be extremely cautious.\n\n## Example Usage\n\n### Managed Ssl Certificate Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.ManagedSslCertificate(\"default\", {\n name: \"test-cert\",\n managed: {\n domains: [\"sslcert.tf-test.club.\"],\n },\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpsProxy = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-proxy\",\n urlMap: defaultURLMap.id,\n sslCertificates: [_default.id],\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"forwarding-rule\",\n target: defaultTargetHttpsProxy.id,\n portRange: \"443\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.ManagedSslCertificate(\"default\",\n name=\"test-cert\",\n managed={\n \"domains\": [\"sslcert.tf-test.club.\"],\n })\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_https_proxy = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-proxy\",\n url_map=default_url_map.id,\n ssl_certificates=[default.id])\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"forwarding-rule\",\n target=default_target_https_proxy.id,\n port_range=\"443\")\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.ManagedSslCertificate(\"default\", new()\n {\n Name = \"test-cert\",\n Managed = new Gcp.Compute.Inputs.ManagedSslCertificateManagedArgs\n {\n Domains = new[]\n {\n \"sslcert.tf-test.club.\",\n },\n },\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpsProxy = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-proxy\",\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n @default.Id,\n },\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"forwarding-rule\",\n Target = defaultTargetHttpsProxy.Id,\n PortRange = \"443\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewManagedSslCertificate(ctx, \"default\", \u0026compute.ManagedSslCertificateArgs{\n\t\t\tName: pulumi.String(\"test-cert\"),\n\t\t\tManaged: \u0026compute.ManagedSslCertificateManagedArgs{\n\t\t\t\tDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club.\"),\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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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\tdefaultTargetHttpsProxy, err := compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\t_default.ID(),\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.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"forwarding-rule\"),\n\t\t\tTarget: defaultTargetHttpsProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"443\"),\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.ManagedSslCertificate;\nimport com.pulumi.gcp.compute.ManagedSslCertificateArgs;\nimport com.pulumi.gcp.compute.inputs.ManagedSslCertificateManagedArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\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 ManagedSslCertificate(\"default\", ManagedSslCertificateArgs.builder()\n .name(\"test-cert\")\n .managed(ManagedSslCertificateManagedArgs.builder()\n .domains(\"sslcert.tf-test.club.\")\n .build())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpsProxy = new TargetHttpsProxy(\"defaultTargetHttpsProxy\", TargetHttpsProxyArgs.builder()\n .name(\"test-proxy\")\n .urlMap(defaultURLMap.id())\n .sslCertificates(default_.id())\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .name(\"forwarding-rule\")\n .target(defaultTargetHttpsProxy.id())\n .portRange(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:ManagedSslCertificate\n properties:\n name: test-cert\n managed:\n domains:\n - sslcert.tf-test.club.\n defaultTargetHttpsProxy:\n type: gcp:compute:TargetHttpsProxy\n name: default\n properties:\n name: test-proxy\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${default.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - sslcert.tf-test.club\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n name: forwarding-rule\n target: ${defaultTargetHttpsProxy.id}\n portRange: 443\n```\n\u003c!--End PulumiCodeChooser --\u003e\n## Import\n\nManagedSslCertificate can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/sslCertificates/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ManagedSslCertificate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/mangedSslCertificate:MangedSslCertificate default projects/{{project}}/global/sslCertificates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/mangedSslCertificate:MangedSslCertificate default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/mangedSslCertificate:MangedSslCertificate default {{name}}\n```\n\n", "properties": { "certificateId": { "type": "integer", @@ -152618,7 +152618,7 @@ } }, "gcp:compute/networkAttachment:NetworkAttachment": { - "description": "A network attachment is a resource that lets a producer Virtual Private Cloud (VPC) network initiate connections to a consumer VPC network through a Private Service Connect interface.\n\n\nTo get more information about NetworkAttachment, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/networkAttachments)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vpc/docs/about-network-attachments)\n\n## Example Usage\n\n### Network Attachment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"basic-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"basic-subnetwork\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst rejectedProducerProject = new gcp.organizations.Project(\"rejected_producer_project\", {\n projectId: \"prj-rejected\",\n name: \"prj-rejected\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst acceptedProducerProject = new gcp.organizations.Project(\"accepted_producer_project\", {\n projectId: \"prj-accepted\",\n name: \"prj-accepted\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst _default = new gcp.compute.NetworkAttachment(\"default\", {\n name: \"basic-network-attachment\",\n region: \"us-central1\",\n description: \"basic network attachment description\",\n connectionPreference: \"ACCEPT_MANUAL\",\n subnetworks: [defaultSubnetwork.selfLink],\n producerAcceptLists: [acceptedProducerProject.projectId],\n producerRejectLists: [rejectedProducerProject.projectId],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\",\n name=\"basic-network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"basic-subnetwork\",\n region=\"us-central1\",\n network=default_network.id,\n ip_cidr_range=\"10.0.0.0/16\")\nrejected_producer_project = gcp.organizations.Project(\"rejected_producer_project\",\n project_id=\"prj-rejected\",\n name=\"prj-rejected\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\naccepted_producer_project = gcp.organizations.Project(\"accepted_producer_project\",\n project_id=\"prj-accepted\",\n name=\"prj-accepted\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\ndefault = gcp.compute.NetworkAttachment(\"default\",\n name=\"basic-network-attachment\",\n region=\"us-central1\",\n description=\"basic network attachment description\",\n connection_preference=\"ACCEPT_MANUAL\",\n subnetworks=[default_subnetwork.self_link],\n producer_accept_lists=[accepted_producer_project.project_id],\n producer_reject_lists=[rejected_producer_project.project_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 defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"basic-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"basic-subnetwork\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var rejectedProducerProject = new Gcp.Organizations.Project(\"rejected_producer_project\", new()\n {\n ProjectId = \"prj-rejected\",\n Name = \"prj-rejected\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var acceptedProducerProject = new Gcp.Organizations.Project(\"accepted_producer_project\", new()\n {\n ProjectId = \"prj-accepted\",\n Name = \"prj-accepted\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var @default = new Gcp.Compute.NetworkAttachment(\"default\", new()\n {\n Name = \"basic-network-attachment\",\n Region = \"us-central1\",\n Description = \"basic network attachment description\",\n ConnectionPreference = \"ACCEPT_MANUAL\",\n Subnetworks = new[]\n {\n defaultSubnetwork.SelfLink,\n },\n ProducerAcceptLists = new[]\n {\n acceptedProducerProject.ProjectId,\n },\n ProducerRejectLists = new[]\n {\n rejectedProducerProject.ProjectId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"basic-network\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"basic-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trejectedProducerProject, err := organizations.NewProject(ctx, \"rejected_producer_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"prj-rejected\"),\n\t\t\tName: pulumi.String(\"prj-rejected\"),\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\tacceptedProducerProject, err := organizations.NewProject(ctx, \"accepted_producer_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"prj-accepted\"),\n\t\t\tName: pulumi.String(\"prj-accepted\"),\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 = compute.NewNetworkAttachment(ctx, \"default\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"basic-network-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"basic network attachment description\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_MANUAL\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tdefaultSubnetwork.SelfLink,\n\t\t\t},\n\t\t\tProducerAcceptLists: pulumi.StringArray{\n\t\t\t\tacceptedProducerProject.ProjectId,\n\t\t\t},\n\t\t\tProducerRejectLists: pulumi.StringArray{\n\t\t\t\trejectedProducerProject.ProjectId,\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.compute.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\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.builder()\n .name(\"basic-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"basic-subnetwork\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var rejectedProducerProject = new Project(\"rejectedProducerProject\", ProjectArgs.builder()\n .projectId(\"prj-rejected\")\n .name(\"prj-rejected\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n var acceptedProducerProject = new Project(\"acceptedProducerProject\", ProjectArgs.builder()\n .projectId(\"prj-accepted\")\n .name(\"prj-accepted\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n var default_ = new NetworkAttachment(\"default\", NetworkAttachmentArgs.builder()\n .name(\"basic-network-attachment\")\n .region(\"us-central1\")\n .description(\"basic network attachment description\")\n .connectionPreference(\"ACCEPT_MANUAL\")\n .subnetworks(defaultSubnetwork.selfLink())\n .producerAcceptLists(acceptedProducerProject.projectId())\n .producerRejectLists(rejectedProducerProject.projectId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:NetworkAttachment\n properties:\n name: basic-network-attachment\n region: us-central1\n description: basic network attachment description\n connectionPreference: ACCEPT_MANUAL\n subnetworks:\n - ${defaultSubnetwork.selfLink}\n producerAcceptLists:\n - ${acceptedProducerProject.projectId}\n producerRejectLists:\n - ${rejectedProducerProject.projectId}\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: basic-network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: basic-subnetwork\n region: us-central1\n network: ${defaultNetwork.id}\n ipCidrRange: 10.0.0.0/16\n rejectedProducerProject:\n type: gcp:organizations:Project\n name: rejected_producer_project\n properties:\n projectId: prj-rejected\n name: prj-rejected\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n acceptedProducerProject:\n type: gcp:organizations:Project\n name: accepted_producer_project\n properties:\n projectId: prj-accepted\n name: prj-accepted\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Attachment Instance Usage\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"basic-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"basic-subnetwork\",\n region: \"us-central1\",\n network: _default.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst defaultNetworkAttachment = new gcp.compute.NetworkAttachment(\"default\", {\n name: \"basic-network-attachment\",\n region: \"us-central1\",\n description: \"my basic network attachment\",\n subnetworks: [defaultSubnetwork.id],\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n});\nconst defaultInstance = new gcp.compute.Instance(\"default\", {\n name: \"basic-instance\",\n zone: \"us-central1-a\",\n machineType: \"e2-micro\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [\n {\n network: \"default\",\n },\n {\n networkAttachment: defaultNetworkAttachment.selfLink,\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"basic-network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"basic-subnetwork\",\n region=\"us-central1\",\n network=default.id,\n ip_cidr_range=\"10.0.0.0/16\")\ndefault_network_attachment = gcp.compute.NetworkAttachment(\"default\",\n name=\"basic-network-attachment\",\n region=\"us-central1\",\n description=\"my basic network attachment\",\n subnetworks=[default_subnetwork.id],\n connection_preference=\"ACCEPT_AUTOMATIC\")\ndefault_instance = gcp.compute.Instance(\"default\",\n name=\"basic-instance\",\n zone=\"us-central1-a\",\n machine_type=\"e2-micro\",\n boot_disk={\n \"initializeParams\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n network_interfaces=[\n {\n \"network\": \"default\",\n },\n {\n \"networkAttachment\": default_network_attachment.self_link,\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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"basic-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"basic-subnetwork\",\n Region = \"us-central1\",\n Network = @default.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var defaultNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"default\", new()\n {\n Name = \"basic-network-attachment\",\n Region = \"us-central1\",\n Description = \"my basic network attachment\",\n Subnetworks = new[]\n {\n defaultSubnetwork.Id,\n },\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n });\n\n var defaultInstance = new Gcp.Compute.Instance(\"default\", new()\n {\n Name = \"basic-instance\",\n Zone = \"us-central1-a\",\n MachineType = \"e2-micro\",\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 },\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n NetworkAttachment = defaultNetworkAttachment.SelfLink,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"basic-network\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"basic-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"default\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"basic-network-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"my basic network attachment\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tdefaultSubnetwork.ID(),\n\t\t\t},\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"basic-instance\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tMachineType: pulumi.String(\"e2-micro\"),\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},\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tNetworkAttachment: defaultNetworkAttachment.SelfLink,\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.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\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 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 Network(\"default\", NetworkArgs.builder()\n .name(\"basic-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"basic-subnetwork\")\n .region(\"us-central1\")\n .network(default_.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var defaultNetworkAttachment = new NetworkAttachment(\"defaultNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"basic-network-attachment\")\n .region(\"us-central1\")\n .description(\"my basic network attachment\")\n .subnetworks(defaultSubnetwork.id())\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .build());\n\n var defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .name(\"basic-instance\")\n .zone(\"us-central1-a\")\n .machineType(\"e2-micro\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .networkInterfaces( \n InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build(),\n InstanceNetworkInterfaceArgs.builder()\n .networkAttachment(defaultNetworkAttachment.selfLink())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: basic-network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: basic-subnetwork\n region: us-central1\n network: ${default.id}\n ipCidrRange: 10.0.0.0/16\n defaultNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: default\n properties:\n name: basic-network-attachment\n region: us-central1\n description: my basic network attachment\n subnetworks:\n - ${defaultSubnetwork.id}\n connectionPreference: ACCEPT_AUTOMATIC\n defaultInstance:\n type: gcp:compute:Instance\n name: default\n properties:\n name: basic-instance\n zone: us-central1-a\n machineType: e2-micro\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - network: default\n - networkAttachment: ${defaultNetworkAttachment.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkAttachment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/networkAttachments/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, NetworkAttachment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkAttachment:NetworkAttachment default projects/{{project}}/regions/{{region}}/networkAttachments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkAttachment:NetworkAttachment default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkAttachment:NetworkAttachment default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkAttachment:NetworkAttachment default {{name}}\n```\n\n", + "description": "A network attachment is a resource that lets a producer Virtual Private Cloud (VPC) network initiate connections to a consumer VPC network through a Private Service Connect interface.\n\n\nTo get more information about NetworkAttachment, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/networkAttachments)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vpc/docs/about-network-attachments)\n\n## Example Usage\n\n### Network Attachment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"basic-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"basic-subnetwork\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst rejectedProducerProject = new gcp.organizations.Project(\"rejected_producer_project\", {\n projectId: \"prj-rejected\",\n name: \"prj-rejected\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst acceptedProducerProject = new gcp.organizations.Project(\"accepted_producer_project\", {\n projectId: \"prj-accepted\",\n name: \"prj-accepted\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst _default = new gcp.compute.NetworkAttachment(\"default\", {\n name: \"basic-network-attachment\",\n region: \"us-central1\",\n description: \"basic network attachment description\",\n connectionPreference: \"ACCEPT_MANUAL\",\n subnetworks: [defaultSubnetwork.selfLink],\n producerAcceptLists: [acceptedProducerProject.projectId],\n producerRejectLists: [rejectedProducerProject.projectId],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\",\n name=\"basic-network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"basic-subnetwork\",\n region=\"us-central1\",\n network=default_network.id,\n ip_cidr_range=\"10.0.0.0/16\")\nrejected_producer_project = gcp.organizations.Project(\"rejected_producer_project\",\n project_id=\"prj-rejected\",\n name=\"prj-rejected\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\naccepted_producer_project = gcp.organizations.Project(\"accepted_producer_project\",\n project_id=\"prj-accepted\",\n name=\"prj-accepted\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\ndefault = gcp.compute.NetworkAttachment(\"default\",\n name=\"basic-network-attachment\",\n region=\"us-central1\",\n description=\"basic network attachment description\",\n connection_preference=\"ACCEPT_MANUAL\",\n subnetworks=[default_subnetwork.self_link],\n producer_accept_lists=[accepted_producer_project.project_id],\n producer_reject_lists=[rejected_producer_project.project_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 defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"basic-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"basic-subnetwork\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var rejectedProducerProject = new Gcp.Organizations.Project(\"rejected_producer_project\", new()\n {\n ProjectId = \"prj-rejected\",\n Name = \"prj-rejected\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var acceptedProducerProject = new Gcp.Organizations.Project(\"accepted_producer_project\", new()\n {\n ProjectId = \"prj-accepted\",\n Name = \"prj-accepted\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var @default = new Gcp.Compute.NetworkAttachment(\"default\", new()\n {\n Name = \"basic-network-attachment\",\n Region = \"us-central1\",\n Description = \"basic network attachment description\",\n ConnectionPreference = \"ACCEPT_MANUAL\",\n Subnetworks = new[]\n {\n defaultSubnetwork.SelfLink,\n },\n ProducerAcceptLists = new[]\n {\n acceptedProducerProject.ProjectId,\n },\n ProducerRejectLists = new[]\n {\n rejectedProducerProject.ProjectId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"basic-network\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"basic-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trejectedProducerProject, err := organizations.NewProject(ctx, \"rejected_producer_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"prj-rejected\"),\n\t\t\tName: pulumi.String(\"prj-rejected\"),\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\tacceptedProducerProject, err := organizations.NewProject(ctx, \"accepted_producer_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"prj-accepted\"),\n\t\t\tName: pulumi.String(\"prj-accepted\"),\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 = compute.NewNetworkAttachment(ctx, \"default\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"basic-network-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"basic network attachment description\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_MANUAL\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tdefaultSubnetwork.SelfLink,\n\t\t\t},\n\t\t\tProducerAcceptLists: pulumi.StringArray{\n\t\t\t\tacceptedProducerProject.ProjectId,\n\t\t\t},\n\t\t\tProducerRejectLists: pulumi.StringArray{\n\t\t\t\trejectedProducerProject.ProjectId,\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.compute.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\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.builder()\n .name(\"basic-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"basic-subnetwork\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var rejectedProducerProject = new Project(\"rejectedProducerProject\", ProjectArgs.builder()\n .projectId(\"prj-rejected\")\n .name(\"prj-rejected\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n var acceptedProducerProject = new Project(\"acceptedProducerProject\", ProjectArgs.builder()\n .projectId(\"prj-accepted\")\n .name(\"prj-accepted\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n var default_ = new NetworkAttachment(\"default\", NetworkAttachmentArgs.builder()\n .name(\"basic-network-attachment\")\n .region(\"us-central1\")\n .description(\"basic network attachment description\")\n .connectionPreference(\"ACCEPT_MANUAL\")\n .subnetworks(defaultSubnetwork.selfLink())\n .producerAcceptLists(acceptedProducerProject.projectId())\n .producerRejectLists(rejectedProducerProject.projectId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:NetworkAttachment\n properties:\n name: basic-network-attachment\n region: us-central1\n description: basic network attachment description\n connectionPreference: ACCEPT_MANUAL\n subnetworks:\n - ${defaultSubnetwork.selfLink}\n producerAcceptLists:\n - ${acceptedProducerProject.projectId}\n producerRejectLists:\n - ${rejectedProducerProject.projectId}\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: basic-network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: basic-subnetwork\n region: us-central1\n network: ${defaultNetwork.id}\n ipCidrRange: 10.0.0.0/16\n rejectedProducerProject:\n type: gcp:organizations:Project\n name: rejected_producer_project\n properties:\n projectId: prj-rejected\n name: prj-rejected\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n acceptedProducerProject:\n type: gcp:organizations:Project\n name: accepted_producer_project\n properties:\n projectId: prj-accepted\n name: prj-accepted\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Attachment Instance Usage\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"basic-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"basic-subnetwork\",\n region: \"us-central1\",\n network: _default.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst defaultNetworkAttachment = new gcp.compute.NetworkAttachment(\"default\", {\n name: \"basic-network-attachment\",\n region: \"us-central1\",\n description: \"my basic network attachment\",\n subnetworks: [defaultSubnetwork.id],\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n});\nconst defaultInstance = new gcp.compute.Instance(\"default\", {\n name: \"basic-instance\",\n zone: \"us-central1-a\",\n machineType: \"e2-micro\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [\n {\n network: \"default\",\n },\n {\n networkAttachment: defaultNetworkAttachment.selfLink,\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"basic-network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"basic-subnetwork\",\n region=\"us-central1\",\n network=default.id,\n ip_cidr_range=\"10.0.0.0/16\")\ndefault_network_attachment = gcp.compute.NetworkAttachment(\"default\",\n name=\"basic-network-attachment\",\n region=\"us-central1\",\n description=\"my basic network attachment\",\n subnetworks=[default_subnetwork.id],\n connection_preference=\"ACCEPT_AUTOMATIC\")\ndefault_instance = gcp.compute.Instance(\"default\",\n name=\"basic-instance\",\n zone=\"us-central1-a\",\n machine_type=\"e2-micro\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n network_interfaces=[\n {\n \"network\": \"default\",\n },\n {\n \"network_attachment\": default_network_attachment.self_link,\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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"basic-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"basic-subnetwork\",\n Region = \"us-central1\",\n Network = @default.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var defaultNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"default\", new()\n {\n Name = \"basic-network-attachment\",\n Region = \"us-central1\",\n Description = \"my basic network attachment\",\n Subnetworks = new[]\n {\n defaultSubnetwork.Id,\n },\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n });\n\n var defaultInstance = new Gcp.Compute.Instance(\"default\", new()\n {\n Name = \"basic-instance\",\n Zone = \"us-central1-a\",\n MachineType = \"e2-micro\",\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 },\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n NetworkAttachment = defaultNetworkAttachment.SelfLink,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"basic-network\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"basic-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"default\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"basic-network-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"my basic network attachment\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tdefaultSubnetwork.ID(),\n\t\t\t},\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"basic-instance\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tMachineType: pulumi.String(\"e2-micro\"),\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},\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tNetworkAttachment: defaultNetworkAttachment.SelfLink,\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.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\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 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 Network(\"default\", NetworkArgs.builder()\n .name(\"basic-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"basic-subnetwork\")\n .region(\"us-central1\")\n .network(default_.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var defaultNetworkAttachment = new NetworkAttachment(\"defaultNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"basic-network-attachment\")\n .region(\"us-central1\")\n .description(\"my basic network attachment\")\n .subnetworks(defaultSubnetwork.id())\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .build());\n\n var defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .name(\"basic-instance\")\n .zone(\"us-central1-a\")\n .machineType(\"e2-micro\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .networkInterfaces( \n InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build(),\n InstanceNetworkInterfaceArgs.builder()\n .networkAttachment(defaultNetworkAttachment.selfLink())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: basic-network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: basic-subnetwork\n region: us-central1\n network: ${default.id}\n ipCidrRange: 10.0.0.0/16\n defaultNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: default\n properties:\n name: basic-network-attachment\n region: us-central1\n description: my basic network attachment\n subnetworks:\n - ${defaultSubnetwork.id}\n connectionPreference: ACCEPT_AUTOMATIC\n defaultInstance:\n type: gcp:compute:Instance\n name: default\n properties:\n name: basic-instance\n zone: us-central1-a\n machineType: e2-micro\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - network: default\n - networkAttachment: ${defaultNetworkAttachment.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkAttachment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/networkAttachments/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, NetworkAttachment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkAttachment:NetworkAttachment default projects/{{project}}/regions/{{region}}/networkAttachments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkAttachment:NetworkAttachment default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkAttachment:NetworkAttachment default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkAttachment:NetworkAttachment default {{name}}\n```\n\n", "properties": { "connectionEndpoints": { "type": "array", @@ -152978,7 +152978,7 @@ } }, "gcp:compute/networkEndpoint:NetworkEndpoint": { - "description": "A Network endpoint represents a IP address and port combination that is\npart of a specific network endpoint group (NEG). NEGs are zonal\ncollections of these endpoints for GCP resources within a\nsingle subnet. **NOTE**: Network endpoints cannot be created outside of a\nnetwork endpoint group.\n\n\u003e **NOTE** In case the Endpoint's Instance is recreated, it's needed to\nperform `apply` twice. To avoid situations like this, please use this resource\nwith the lifecycle `replace_triggered_by` method, with the passed Instance's ID.\n\n\nTo get more information about NetworkEndpoint, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/networkEndpointGroups)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/negs/)\n\n## Example Usage\n\n### Network Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"neg-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"neg-subnetwork\",\n ipCidrRange: \"10.0.0.1/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst endpoint_instance = new gcp.compute.Instance(\"endpoint-instance\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n subnetwork: defaultSubnetwork.id,\n }],\n name: \"endpoint-instance\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n});\nconst default_endpoint = new gcp.compute.NetworkEndpoint(\"default-endpoint\", {\n networkEndpointGroup: neg.name,\n instance: endpoint_instance.name,\n port: neg.defaultPort,\n ipAddress: endpoint_instance.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].networkIp),\n});\nconst group = new gcp.compute.NetworkEndpointGroup(\"group\", {\n name: \"my-lb-neg\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n defaultPort: 90,\n zone: \"us-central1-a\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault = gcp.compute.Network(\"default\",\n name=\"neg-network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"neg-subnetwork\",\n ip_cidr_range=\"10.0.0.1/16\",\n region=\"us-central1\",\n network=default.id)\nendpoint_instance = gcp.compute.Instance(\"endpoint-instance\",\n network_interfaces=[{\n \"accessConfigs\": [{}],\n \"subnetwork\": default_subnetwork.id,\n }],\n name=\"endpoint-instance\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initializeParams\": {\n \"image\": my_image.self_link,\n },\n })\ndefault_endpoint = gcp.compute.NetworkEndpoint(\"default-endpoint\",\n network_endpoint_group=neg[\"name\"],\n instance=endpoint_instance.name,\n port=neg[\"defaultPort\"],\n ip_address=endpoint_instance.network_interfaces[0].network_ip)\ngroup = gcp.compute.NetworkEndpointGroup(\"group\",\n name=\"my-lb-neg\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n default_port=90,\n zone=\"us-central1-a\")\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 myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"neg-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"neg-subnetwork\",\n IpCidrRange = \"10.0.0.1/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var endpoint_instance = new Gcp.Compute.Instance(\"endpoint-instance\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Name = \"endpoint-instance\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var default_endpoint = new Gcp.Compute.NetworkEndpoint(\"default-endpoint\", new()\n {\n NetworkEndpointGroup = neg.Name,\n Instance = endpoint_instance.Name,\n Port = neg.DefaultPort,\n IpAddress = endpoint_instance.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].NetworkIp),\n });\n\n var @group = new Gcp.Compute.NetworkEndpointGroup(\"group\", new()\n {\n Name = \"my-lb-neg\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n DefaultPort = 90,\n Zone = \"us-central1-a\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"neg-network\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"neg-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.1/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"endpoint-instance\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"endpoint-instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\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.NewNetworkEndpoint(ctx, \"default-endpoint\", \u0026compute.NetworkEndpointArgs{\n\t\t\tNetworkEndpointGroup: pulumi.Any(neg.Name),\n\t\t\tInstance: endpoint_instance.Name,\n\t\t\tPort: pulumi.Any(neg.DefaultPort),\n\t\t\tIpAddress: endpoint_instance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\treturn \u0026networkInterfaces[0].NetworkIp, nil\n\t\t\t}).(pulumi.StringPtrOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkEndpointGroup(ctx, \"group\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"my-lb-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDefaultPort: pulumi.Int(90),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\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.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.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.gcp.compute.NetworkEndpoint;\nimport com.pulumi.gcp.compute.NetworkEndpointArgs;\nimport com.pulumi.gcp.compute.NetworkEndpointGroup;\nimport com.pulumi.gcp.compute.NetworkEndpointGroupArgs;\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 myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"neg-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"neg-subnetwork\")\n .ipCidrRange(\"10.0.0.1/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var endpoint_instance = new Instance(\"endpoint-instance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .subnetwork(defaultSubnetwork.id())\n .build())\n .name(\"endpoint-instance\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var default_endpoint = new NetworkEndpoint(\"default-endpoint\", NetworkEndpointArgs.builder()\n .networkEndpointGroup(neg.name())\n .instance(endpoint_instance.name())\n .port(neg.defaultPort())\n .ipAddress(endpoint_instance.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].networkIp()))\n .build());\n\n var group = new NetworkEndpointGroup(\"group\", NetworkEndpointGroupArgs.builder()\n .name(\"my-lb-neg\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .defaultPort(\"90\")\n .zone(\"us-central1-a\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-endpoint:\n type: gcp:compute:NetworkEndpoint\n properties:\n networkEndpointGroup: ${neg.name}\n instance: ${[\"endpoint-instance\"].name}\n port: ${neg.defaultPort}\n ipAddress: ${[\"endpoint-instance\"].networkInterfaces[0].networkIp}\n endpoint-instance:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n subnetwork: ${defaultSubnetwork.id}\n name: endpoint-instance\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\n group:\n type: gcp:compute:NetworkEndpointGroup\n properties:\n name: my-lb-neg\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n defaultPort: '90'\n zone: us-central1-a\n default:\n type: gcp:compute:Network\n properties:\n name: neg-network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: neg-subnetwork\n ipCidrRange: 10.0.0.1/16\n region: us-central1\n network: ${default.id}\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkEndpoint can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}`\n\n* `{{project}}/{{zone}}/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}`\n\n* `{{zone}}/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}`\n\n* `{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}`\n\nWhen using the `pulumi import` command, NetworkEndpoint can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkEndpoint:NetworkEndpoint default projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpoint:NetworkEndpoint default {{project}}/{{zone}}/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpoint:NetworkEndpoint default {{zone}}/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpoint:NetworkEndpoint default {{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}\n```\n\n", + "description": "A Network endpoint represents a IP address and port combination that is\npart of a specific network endpoint group (NEG). NEGs are zonal\ncollections of these endpoints for GCP resources within a\nsingle subnet. **NOTE**: Network endpoints cannot be created outside of a\nnetwork endpoint group.\n\n\u003e **NOTE** In case the Endpoint's Instance is recreated, it's needed to\nperform `apply` twice. To avoid situations like this, please use this resource\nwith the lifecycle `replace_triggered_by` method, with the passed Instance's ID.\n\n\nTo get more information about NetworkEndpoint, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/networkEndpointGroups)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/negs/)\n\n## Example Usage\n\n### Network Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"neg-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"neg-subnetwork\",\n ipCidrRange: \"10.0.0.1/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst endpoint_instance = new gcp.compute.Instance(\"endpoint-instance\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n subnetwork: defaultSubnetwork.id,\n }],\n name: \"endpoint-instance\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n});\nconst default_endpoint = new gcp.compute.NetworkEndpoint(\"default-endpoint\", {\n networkEndpointGroup: neg.name,\n instance: endpoint_instance.name,\n port: neg.defaultPort,\n ipAddress: endpoint_instance.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].networkIp),\n});\nconst group = new gcp.compute.NetworkEndpointGroup(\"group\", {\n name: \"my-lb-neg\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n defaultPort: 90,\n zone: \"us-central1-a\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault = gcp.compute.Network(\"default\",\n name=\"neg-network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"neg-subnetwork\",\n ip_cidr_range=\"10.0.0.1/16\",\n region=\"us-central1\",\n network=default.id)\nendpoint_instance = gcp.compute.Instance(\"endpoint-instance\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"subnetwork\": default_subnetwork.id,\n }],\n name=\"endpoint-instance\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": my_image.self_link,\n },\n })\ndefault_endpoint = gcp.compute.NetworkEndpoint(\"default-endpoint\",\n network_endpoint_group=neg[\"name\"],\n instance=endpoint_instance.name,\n port=neg[\"defaultPort\"],\n ip_address=endpoint_instance.network_interfaces[0].network_ip)\ngroup = gcp.compute.NetworkEndpointGroup(\"group\",\n name=\"my-lb-neg\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n default_port=90,\n zone=\"us-central1-a\")\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 myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"neg-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"neg-subnetwork\",\n IpCidrRange = \"10.0.0.1/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var endpoint_instance = new Gcp.Compute.Instance(\"endpoint-instance\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Name = \"endpoint-instance\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var default_endpoint = new Gcp.Compute.NetworkEndpoint(\"default-endpoint\", new()\n {\n NetworkEndpointGroup = neg.Name,\n Instance = endpoint_instance.Name,\n Port = neg.DefaultPort,\n IpAddress = endpoint_instance.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].NetworkIp),\n });\n\n var @group = new Gcp.Compute.NetworkEndpointGroup(\"group\", new()\n {\n Name = \"my-lb-neg\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n DefaultPort = 90,\n Zone = \"us-central1-a\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"neg-network\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"neg-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.1/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"endpoint-instance\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"endpoint-instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\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.NewNetworkEndpoint(ctx, \"default-endpoint\", \u0026compute.NetworkEndpointArgs{\n\t\t\tNetworkEndpointGroup: pulumi.Any(neg.Name),\n\t\t\tInstance: endpoint_instance.Name,\n\t\t\tPort: pulumi.Any(neg.DefaultPort),\n\t\t\tIpAddress: pulumi.String(endpoint_instance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\treturn \u0026networkInterfaces[0].NetworkIp, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkEndpointGroup(ctx, \"group\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"my-lb-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDefaultPort: pulumi.Int(90),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\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.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.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.gcp.compute.NetworkEndpoint;\nimport com.pulumi.gcp.compute.NetworkEndpointArgs;\nimport com.pulumi.gcp.compute.NetworkEndpointGroup;\nimport com.pulumi.gcp.compute.NetworkEndpointGroupArgs;\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 myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"neg-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"neg-subnetwork\")\n .ipCidrRange(\"10.0.0.1/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var endpoint_instance = new Instance(\"endpoint-instance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .subnetwork(defaultSubnetwork.id())\n .build())\n .name(\"endpoint-instance\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var default_endpoint = new NetworkEndpoint(\"default-endpoint\", NetworkEndpointArgs.builder()\n .networkEndpointGroup(neg.name())\n .instance(endpoint_instance.name())\n .port(neg.defaultPort())\n .ipAddress(endpoint_instance.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].networkIp()))\n .build());\n\n var group = new NetworkEndpointGroup(\"group\", NetworkEndpointGroupArgs.builder()\n .name(\"my-lb-neg\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .defaultPort(\"90\")\n .zone(\"us-central1-a\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-endpoint:\n type: gcp:compute:NetworkEndpoint\n properties:\n networkEndpointGroup: ${neg.name}\n instance: ${[\"endpoint-instance\"].name}\n port: ${neg.defaultPort}\n ipAddress: ${[\"endpoint-instance\"].networkInterfaces[0].networkIp}\n endpoint-instance:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n subnetwork: ${defaultSubnetwork.id}\n name: endpoint-instance\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\n group:\n type: gcp:compute:NetworkEndpointGroup\n properties:\n name: my-lb-neg\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n defaultPort: '90'\n zone: us-central1-a\n default:\n type: gcp:compute:Network\n properties:\n name: neg-network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: neg-subnetwork\n ipCidrRange: 10.0.0.1/16\n region: us-central1\n network: ${default.id}\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkEndpoint can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}`\n\n* `{{project}}/{{zone}}/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}`\n\n* `{{zone}}/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}`\n\n* `{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}`\n\nWhen using the `pulumi import` command, NetworkEndpoint can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkEndpoint:NetworkEndpoint default projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpoint:NetworkEndpoint default {{project}}/{{zone}}/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpoint:NetworkEndpoint default {{zone}}/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpoint:NetworkEndpoint default {{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}\n```\n\n", "properties": { "instance": { "type": "string", @@ -153237,7 +153237,7 @@ } }, "gcp:compute/networkEndpointList:NetworkEndpointList": { - "description": "A set of network endpoints belonging to a network endpoint group (NEG). A\nsingle network endpoint represents a IP address and port combination that is\npart of a specific network endpoint group (NEG). NEGs are zonal collections\nof these endpoints for GCP resources within a single subnet. **NOTE**:\nNetwork endpoints cannot be created outside of a network endpoint group.\n\nThis resource is authoritative for a single NEG. Any endpoints not specified\nby this resource will be deleted when the resource configuration is applied.\n\n\u003e **NOTE** In case the Endpoint's Instance is recreated, it's needed to\nperform `apply` twice. To avoid situations like this, please use this resource\nwith the lifecycle `replace_triggered_by` method, with the passed Instance's ID.\n\n\nTo get more information about NetworkEndpoints, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/networkEndpointGroups)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/negs/)\n\n## Example Usage\n\n### Network Endpoints\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"neg-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"neg-subnetwork\",\n ipCidrRange: \"10.0.0.1/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst endpoint_instance1 = new gcp.compute.Instance(\"endpoint-instance1\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n subnetwork: defaultSubnetwork.id,\n }],\n name: \"endpoint-instance1\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n});\nconst endpoint_instance2 = new gcp.compute.Instance(\"endpoint-instance2\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n subnetwork: defaultSubnetwork.id,\n }],\n name: \"endpoint-instance2\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n});\nconst default_endpoints = new gcp.compute.NetworkEndpointList(\"default-endpoints\", {\n networkEndpointGroup: neg.name,\n networkEndpoints: [\n {\n instance: endpoint_instance1.name,\n port: neg.defaultPort,\n ipAddress: endpoint_instance1.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].networkIp),\n },\n {\n instance: endpoint_instance2.name,\n port: neg.defaultPort,\n ipAddress: endpoint_instance2.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].networkIp),\n },\n ],\n});\nconst group = new gcp.compute.NetworkEndpointGroup(\"group\", {\n name: \"my-lb-neg\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n defaultPort: 90,\n zone: \"us-central1-a\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault = gcp.compute.Network(\"default\",\n name=\"neg-network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"neg-subnetwork\",\n ip_cidr_range=\"10.0.0.1/16\",\n region=\"us-central1\",\n network=default.id)\nendpoint_instance1 = gcp.compute.Instance(\"endpoint-instance1\",\n network_interfaces=[{\n \"accessConfigs\": [{}],\n \"subnetwork\": default_subnetwork.id,\n }],\n name=\"endpoint-instance1\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initializeParams\": {\n \"image\": my_image.self_link,\n },\n })\nendpoint_instance2 = gcp.compute.Instance(\"endpoint-instance2\",\n network_interfaces=[{\n \"accessConfigs\": [{}],\n \"subnetwork\": default_subnetwork.id,\n }],\n name=\"endpoint-instance2\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initializeParams\": {\n \"image\": my_image.self_link,\n },\n })\ndefault_endpoints = gcp.compute.NetworkEndpointList(\"default-endpoints\",\n network_endpoint_group=neg[\"name\"],\n network_endpoints=[\n {\n \"instance\": endpoint_instance1.name,\n \"port\": neg[\"defaultPort\"],\n \"ipAddress\": endpoint_instance1.network_interfaces[0].network_ip,\n },\n {\n \"instance\": endpoint_instance2.name,\n \"port\": neg[\"defaultPort\"],\n \"ipAddress\": endpoint_instance2.network_interfaces[0].network_ip,\n },\n ])\ngroup = gcp.compute.NetworkEndpointGroup(\"group\",\n name=\"my-lb-neg\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n default_port=90,\n zone=\"us-central1-a\")\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 myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"neg-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"neg-subnetwork\",\n IpCidrRange = \"10.0.0.1/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var endpoint_instance1 = new Gcp.Compute.Instance(\"endpoint-instance1\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Name = \"endpoint-instance1\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var endpoint_instance2 = new Gcp.Compute.Instance(\"endpoint-instance2\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Name = \"endpoint-instance2\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var default_endpoints = new Gcp.Compute.NetworkEndpointList(\"default-endpoints\", new()\n {\n NetworkEndpointGroup = neg.Name,\n NetworkEndpoints = new[]\n {\n new Gcp.Compute.Inputs.NetworkEndpointListNetworkEndpointArgs\n {\n Instance = endpoint_instance1.Name,\n Port = neg.DefaultPort,\n IpAddress = endpoint_instance1.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].NetworkIp),\n },\n new Gcp.Compute.Inputs.NetworkEndpointListNetworkEndpointArgs\n {\n Instance = endpoint_instance2.Name,\n Port = neg.DefaultPort,\n IpAddress = endpoint_instance2.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].NetworkIp),\n },\n },\n });\n\n var @group = new Gcp.Compute.NetworkEndpointGroup(\"group\", new()\n {\n Name = \"my-lb-neg\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n DefaultPort = 90,\n Zone = \"us-central1-a\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"neg-network\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"neg-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.1/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"endpoint-instance1\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"endpoint-instance1\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\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.NewInstance(ctx, \"endpoint-instance2\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"endpoint-instance2\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\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.NewNetworkEndpointList(ctx, \"default-endpoints\", \u0026compute.NetworkEndpointListArgs{\n\t\t\tNetworkEndpointGroup: pulumi.Any(neg.Name),\n\t\t\tNetworkEndpoints: compute.NetworkEndpointListNetworkEndpointArray{\n\t\t\t\t\u0026compute.NetworkEndpointListNetworkEndpointArgs{\n\t\t\t\t\tInstance: endpoint_instance1.Name,\n\t\t\t\t\tPort: pulumi.Any(neg.DefaultPort),\n\t\t\t\t\tIpAddress: endpoint_instance1.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\t\t\treturn \u0026networkInterfaces[0].NetworkIp, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t},\n\t\t\t\t\u0026compute.NetworkEndpointListNetworkEndpointArgs{\n\t\t\t\t\tInstance: endpoint_instance2.Name,\n\t\t\t\t\tPort: pulumi.Any(neg.DefaultPort),\n\t\t\t\t\tIpAddress: endpoint_instance2.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\t\t\treturn \u0026networkInterfaces[0].NetworkIp, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\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.NewNetworkEndpointGroup(ctx, \"group\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"my-lb-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDefaultPort: pulumi.Int(90),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\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.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.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.gcp.compute.NetworkEndpointList;\nimport com.pulumi.gcp.compute.NetworkEndpointListArgs;\nimport com.pulumi.gcp.compute.inputs.NetworkEndpointListNetworkEndpointArgs;\nimport com.pulumi.gcp.compute.NetworkEndpointGroup;\nimport com.pulumi.gcp.compute.NetworkEndpointGroupArgs;\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 myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"neg-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"neg-subnetwork\")\n .ipCidrRange(\"10.0.0.1/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var endpoint_instance1 = new Instance(\"endpoint-instance1\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .subnetwork(defaultSubnetwork.id())\n .build())\n .name(\"endpoint-instance1\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var endpoint_instance2 = new Instance(\"endpoint-instance2\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .subnetwork(defaultSubnetwork.id())\n .build())\n .name(\"endpoint-instance2\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var default_endpoints = new NetworkEndpointList(\"default-endpoints\", NetworkEndpointListArgs.builder()\n .networkEndpointGroup(neg.name())\n .networkEndpoints( \n NetworkEndpointListNetworkEndpointArgs.builder()\n .instance(endpoint_instance1.name())\n .port(neg.defaultPort())\n .ipAddress(endpoint_instance1.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].networkIp()))\n .build(),\n NetworkEndpointListNetworkEndpointArgs.builder()\n .instance(endpoint_instance2.name())\n .port(neg.defaultPort())\n .ipAddress(endpoint_instance2.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].networkIp()))\n .build())\n .build());\n\n var group = new NetworkEndpointGroup(\"group\", NetworkEndpointGroupArgs.builder()\n .name(\"my-lb-neg\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .defaultPort(\"90\")\n .zone(\"us-central1-a\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-endpoints:\n type: gcp:compute:NetworkEndpointList\n properties:\n networkEndpointGroup: ${neg.name}\n networkEndpoints:\n - instance: ${[\"endpoint-instance1\"].name}\n port: ${neg.defaultPort}\n ipAddress: ${[\"endpoint-instance1\"].networkInterfaces[0].networkIp}\n - instance: ${[\"endpoint-instance2\"].name}\n port: ${neg.defaultPort}\n ipAddress: ${[\"endpoint-instance2\"].networkInterfaces[0].networkIp}\n endpoint-instance1:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n subnetwork: ${defaultSubnetwork.id}\n name: endpoint-instance1\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\n endpoint-instance2:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n subnetwork: ${defaultSubnetwork.id}\n name: endpoint-instance2\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\n group:\n type: gcp:compute:NetworkEndpointGroup\n properties:\n name: my-lb-neg\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n defaultPort: '90'\n zone: us-central1-a\n default:\n type: gcp:compute:Network\n properties:\n name: neg-network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: neg-subnetwork\n ipCidrRange: 10.0.0.1/16\n region: us-central1\n network: ${default.id}\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkEndpoints can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{network_endpoint_group}}`\n\n* `{{project}}/{{zone}}/{{network_endpoint_group}}`\n\n* `{{zone}}/{{network_endpoint_group}}`\n\n* `{{network_endpoint_group}}`\n\nWhen using the `pulumi import` command, NetworkEndpoints can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkEndpointList:NetworkEndpointList default projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{network_endpoint_group}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpointList:NetworkEndpointList default {{project}}/{{zone}}/{{network_endpoint_group}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpointList:NetworkEndpointList default {{zone}}/{{network_endpoint_group}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpointList:NetworkEndpointList default {{network_endpoint_group}}\n```\n\n", + "description": "A set of network endpoints belonging to a network endpoint group (NEG). A\nsingle network endpoint represents a IP address and port combination that is\npart of a specific network endpoint group (NEG). NEGs are zonal collections\nof these endpoints for GCP resources within a single subnet. **NOTE**:\nNetwork endpoints cannot be created outside of a network endpoint group.\n\nThis resource is authoritative for a single NEG. Any endpoints not specified\nby this resource will be deleted when the resource configuration is applied.\n\n\u003e **NOTE** In case the Endpoint's Instance is recreated, it's needed to\nperform `apply` twice. To avoid situations like this, please use this resource\nwith the lifecycle `replace_triggered_by` method, with the passed Instance's ID.\n\n\nTo get more information about NetworkEndpoints, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/networkEndpointGroups)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/negs/)\n\n## Example Usage\n\n### Network Endpoints\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"neg-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"neg-subnetwork\",\n ipCidrRange: \"10.0.0.1/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst endpoint_instance1 = new gcp.compute.Instance(\"endpoint-instance1\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n subnetwork: defaultSubnetwork.id,\n }],\n name: \"endpoint-instance1\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n});\nconst endpoint_instance2 = new gcp.compute.Instance(\"endpoint-instance2\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n subnetwork: defaultSubnetwork.id,\n }],\n name: \"endpoint-instance2\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n});\nconst default_endpoints = new gcp.compute.NetworkEndpointList(\"default-endpoints\", {\n networkEndpointGroup: neg.name,\n networkEndpoints: [\n {\n instance: endpoint_instance1.name,\n port: neg.defaultPort,\n ipAddress: endpoint_instance1.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].networkIp),\n },\n {\n instance: endpoint_instance2.name,\n port: neg.defaultPort,\n ipAddress: endpoint_instance2.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].networkIp),\n },\n ],\n});\nconst group = new gcp.compute.NetworkEndpointGroup(\"group\", {\n name: \"my-lb-neg\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n defaultPort: 90,\n zone: \"us-central1-a\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault = gcp.compute.Network(\"default\",\n name=\"neg-network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"neg-subnetwork\",\n ip_cidr_range=\"10.0.0.1/16\",\n region=\"us-central1\",\n network=default.id)\nendpoint_instance1 = gcp.compute.Instance(\"endpoint-instance1\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"subnetwork\": default_subnetwork.id,\n }],\n name=\"endpoint-instance1\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": my_image.self_link,\n },\n })\nendpoint_instance2 = gcp.compute.Instance(\"endpoint-instance2\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"subnetwork\": default_subnetwork.id,\n }],\n name=\"endpoint-instance2\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": my_image.self_link,\n },\n })\ndefault_endpoints = gcp.compute.NetworkEndpointList(\"default-endpoints\",\n network_endpoint_group=neg[\"name\"],\n network_endpoints=[\n {\n \"instance\": endpoint_instance1.name,\n \"port\": neg[\"defaultPort\"],\n \"ip_address\": endpoint_instance1.network_interfaces[0].network_ip,\n },\n {\n \"instance\": endpoint_instance2.name,\n \"port\": neg[\"defaultPort\"],\n \"ip_address\": endpoint_instance2.network_interfaces[0].network_ip,\n },\n ])\ngroup = gcp.compute.NetworkEndpointGroup(\"group\",\n name=\"my-lb-neg\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n default_port=90,\n zone=\"us-central1-a\")\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 myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"neg-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"neg-subnetwork\",\n IpCidrRange = \"10.0.0.1/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var endpoint_instance1 = new Gcp.Compute.Instance(\"endpoint-instance1\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Name = \"endpoint-instance1\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var endpoint_instance2 = new Gcp.Compute.Instance(\"endpoint-instance2\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Name = \"endpoint-instance2\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var default_endpoints = new Gcp.Compute.NetworkEndpointList(\"default-endpoints\", new()\n {\n NetworkEndpointGroup = neg.Name,\n NetworkEndpoints = new[]\n {\n new Gcp.Compute.Inputs.NetworkEndpointListNetworkEndpointArgs\n {\n Instance = endpoint_instance1.Name,\n Port = neg.DefaultPort,\n IpAddress = endpoint_instance1.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].NetworkIp),\n },\n new Gcp.Compute.Inputs.NetworkEndpointListNetworkEndpointArgs\n {\n Instance = endpoint_instance2.Name,\n Port = neg.DefaultPort,\n IpAddress = endpoint_instance2.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].NetworkIp),\n },\n },\n });\n\n var @group = new Gcp.Compute.NetworkEndpointGroup(\"group\", new()\n {\n Name = \"my-lb-neg\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n DefaultPort = 90,\n Zone = \"us-central1-a\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"neg-network\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"neg-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.1/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"endpoint-instance1\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"endpoint-instance1\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\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.NewInstance(ctx, \"endpoint-instance2\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"endpoint-instance2\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\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.NewNetworkEndpointList(ctx, \"default-endpoints\", \u0026compute.NetworkEndpointListArgs{\n\t\t\tNetworkEndpointGroup: pulumi.Any(neg.Name),\n\t\t\tNetworkEndpoints: compute.NetworkEndpointListNetworkEndpointArray{\n\t\t\t\t\u0026compute.NetworkEndpointListNetworkEndpointArgs{\n\t\t\t\t\tInstance: endpoint_instance1.Name,\n\t\t\t\t\tPort: pulumi.Any(neg.DefaultPort),\n\t\t\t\t\tIpAddress: endpoint_instance1.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\t\t\treturn \u0026networkInterfaces[0].NetworkIp, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t},\n\t\t\t\t\u0026compute.NetworkEndpointListNetworkEndpointArgs{\n\t\t\t\t\tInstance: endpoint_instance2.Name,\n\t\t\t\t\tPort: pulumi.Any(neg.DefaultPort),\n\t\t\t\t\tIpAddress: endpoint_instance2.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\t\t\treturn \u0026networkInterfaces[0].NetworkIp, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\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.NewNetworkEndpointGroup(ctx, \"group\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"my-lb-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDefaultPort: pulumi.Int(90),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\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.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.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.gcp.compute.NetworkEndpointList;\nimport com.pulumi.gcp.compute.NetworkEndpointListArgs;\nimport com.pulumi.gcp.compute.inputs.NetworkEndpointListNetworkEndpointArgs;\nimport com.pulumi.gcp.compute.NetworkEndpointGroup;\nimport com.pulumi.gcp.compute.NetworkEndpointGroupArgs;\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 myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"neg-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"neg-subnetwork\")\n .ipCidrRange(\"10.0.0.1/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var endpoint_instance1 = new Instance(\"endpoint-instance1\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .subnetwork(defaultSubnetwork.id())\n .build())\n .name(\"endpoint-instance1\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var endpoint_instance2 = new Instance(\"endpoint-instance2\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .subnetwork(defaultSubnetwork.id())\n .build())\n .name(\"endpoint-instance2\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var default_endpoints = new NetworkEndpointList(\"default-endpoints\", NetworkEndpointListArgs.builder()\n .networkEndpointGroup(neg.name())\n .networkEndpoints( \n NetworkEndpointListNetworkEndpointArgs.builder()\n .instance(endpoint_instance1.name())\n .port(neg.defaultPort())\n .ipAddress(endpoint_instance1.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].networkIp()))\n .build(),\n NetworkEndpointListNetworkEndpointArgs.builder()\n .instance(endpoint_instance2.name())\n .port(neg.defaultPort())\n .ipAddress(endpoint_instance2.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].networkIp()))\n .build())\n .build());\n\n var group = new NetworkEndpointGroup(\"group\", NetworkEndpointGroupArgs.builder()\n .name(\"my-lb-neg\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .defaultPort(\"90\")\n .zone(\"us-central1-a\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-endpoints:\n type: gcp:compute:NetworkEndpointList\n properties:\n networkEndpointGroup: ${neg.name}\n networkEndpoints:\n - instance: ${[\"endpoint-instance1\"].name}\n port: ${neg.defaultPort}\n ipAddress: ${[\"endpoint-instance1\"].networkInterfaces[0].networkIp}\n - instance: ${[\"endpoint-instance2\"].name}\n port: ${neg.defaultPort}\n ipAddress: ${[\"endpoint-instance2\"].networkInterfaces[0].networkIp}\n endpoint-instance1:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n subnetwork: ${defaultSubnetwork.id}\n name: endpoint-instance1\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\n endpoint-instance2:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n subnetwork: ${defaultSubnetwork.id}\n name: endpoint-instance2\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\n group:\n type: gcp:compute:NetworkEndpointGroup\n properties:\n name: my-lb-neg\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n defaultPort: '90'\n zone: us-central1-a\n default:\n type: gcp:compute:Network\n properties:\n name: neg-network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: neg-subnetwork\n ipCidrRange: 10.0.0.1/16\n region: us-central1\n network: ${default.id}\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkEndpoints can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{network_endpoint_group}}`\n\n* `{{project}}/{{zone}}/{{network_endpoint_group}}`\n\n* `{{zone}}/{{network_endpoint_group}}`\n\n* `{{network_endpoint_group}}`\n\nWhen using the `pulumi import` command, NetworkEndpoints can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkEndpointList:NetworkEndpointList default projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{network_endpoint_group}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpointList:NetworkEndpointList default {{project}}/{{zone}}/{{network_endpoint_group}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpointList:NetworkEndpointList default {{zone}}/{{network_endpoint_group}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpointList:NetworkEndpointList default {{network_endpoint_group}}\n```\n\n", "properties": { "networkEndpointGroup": { "type": "string", @@ -153516,7 +153516,7 @@ } }, "gcp:compute/networkFirewallPolicyRule:NetworkFirewallPolicyRule": { - "description": "The Compute NetworkFirewallPolicyRule resource\n\n## Example Usage\n\n### Global\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicGlobalNetworksecurityAddressGroup = new gcp.networksecurity.AddressGroup(\"basic_global_networksecurity_address_group\", {\n name: \"policy\",\n parent: \"projects/my-project-name\",\n description: \"Sample global networksecurity_address_group\",\n location: \"global\",\n items: [\"208.80.154.224/32\"],\n type: \"IPV4\",\n capacity: 100,\n});\nconst basicNetworkFirewallPolicy = new gcp.compute.NetworkFirewallPolicy(\"basic_network_firewall_policy\", {\n name: \"policy\",\n description: \"Sample global network firewall policy\",\n project: \"my-project-name\",\n});\nconst basicNetwork = new gcp.compute.Network(\"basic_network\", {name: \"network\"});\nconst basicKey = new gcp.tags.TagKey(\"basic_key\", {\n description: \"For keyname resources.\",\n parent: \"organizations/123456789\",\n purpose: \"GCE_FIREWALL\",\n shortName: \"tagkey\",\n purposeData: {\n network: pulumi.interpolate`my-project-name/${basicNetwork.name}`,\n },\n});\nconst basicValue = new gcp.tags.TagValue(\"basic_value\", {\n description: \"For valuename resources.\",\n parent: pulumi.interpolate`tagKeys/${basicKey.name}`,\n shortName: \"tagvalue\",\n});\nconst primary = new gcp.compute.NetworkFirewallPolicyRule(\"primary\", {\n action: \"allow\",\n description: \"This is a simple rule description\",\n direction: \"INGRESS\",\n disabled: false,\n enableLogging: true,\n firewallPolicy: basicNetworkFirewallPolicy.name,\n priority: 1000,\n ruleName: \"test-rule\",\n targetServiceAccounts: [\"my@service-account.com\"],\n match: {\n srcIpRanges: [\"10.100.0.1/32\"],\n srcFqdns: [\"google.com\"],\n srcRegionCodes: [\"US\"],\n srcThreatIntelligences: [\"iplist-known-malicious-ips\"],\n srcSecureTags: [{\n name: pulumi.interpolate`tagValues/${basicValue.name}`,\n }],\n layer4Configs: [{\n ipProtocol: \"all\",\n }],\n srcAddressGroups: [basicGlobalNetworksecurityAddressGroup.id],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_global_networksecurity_address_group = gcp.networksecurity.AddressGroup(\"basic_global_networksecurity_address_group\",\n name=\"policy\",\n parent=\"projects/my-project-name\",\n description=\"Sample global networksecurity_address_group\",\n location=\"global\",\n items=[\"208.80.154.224/32\"],\n type=\"IPV4\",\n capacity=100)\nbasic_network_firewall_policy = gcp.compute.NetworkFirewallPolicy(\"basic_network_firewall_policy\",\n name=\"policy\",\n description=\"Sample global network firewall policy\",\n project=\"my-project-name\")\nbasic_network = gcp.compute.Network(\"basic_network\", name=\"network\")\nbasic_key = gcp.tags.TagKey(\"basic_key\",\n description=\"For keyname resources.\",\n parent=\"organizations/123456789\",\n purpose=\"GCE_FIREWALL\",\n short_name=\"tagkey\",\n purpose_data={\n \"network\": basic_network.name.apply(lambda name: f\"my-project-name/{name}\"),\n })\nbasic_value = gcp.tags.TagValue(\"basic_value\",\n description=\"For valuename resources.\",\n parent=basic_key.name.apply(lambda name: f\"tagKeys/{name}\"),\n short_name=\"tagvalue\")\nprimary = gcp.compute.NetworkFirewallPolicyRule(\"primary\",\n action=\"allow\",\n description=\"This is a simple rule description\",\n direction=\"INGRESS\",\n disabled=False,\n enable_logging=True,\n firewall_policy=basic_network_firewall_policy.name,\n priority=1000,\n rule_name=\"test-rule\",\n target_service_accounts=[\"my@service-account.com\"],\n match={\n \"srcIpRanges\": [\"10.100.0.1/32\"],\n \"srcFqdns\": [\"google.com\"],\n \"srcRegionCodes\": [\"US\"],\n \"srcThreatIntelligences\": [\"iplist-known-malicious-ips\"],\n \"srcSecureTags\": [{\n \"name\": basic_value.name.apply(lambda name: f\"tagValues/{name}\"),\n }],\n \"layer4Configs\": [{\n \"ipProtocol\": \"all\",\n }],\n \"srcAddressGroups\": [basic_global_networksecurity_address_group.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 basicGlobalNetworksecurityAddressGroup = new Gcp.NetworkSecurity.AddressGroup(\"basic_global_networksecurity_address_group\", new()\n {\n Name = \"policy\",\n Parent = \"projects/my-project-name\",\n Description = \"Sample global networksecurity_address_group\",\n Location = \"global\",\n Items = new[]\n {\n \"208.80.154.224/32\",\n },\n Type = \"IPV4\",\n Capacity = 100,\n });\n\n var basicNetworkFirewallPolicy = new Gcp.Compute.NetworkFirewallPolicy(\"basic_network_firewall_policy\", new()\n {\n Name = \"policy\",\n Description = \"Sample global network firewall policy\",\n Project = \"my-project-name\",\n });\n\n var basicNetwork = new Gcp.Compute.Network(\"basic_network\", new()\n {\n Name = \"network\",\n });\n\n var basicKey = new Gcp.Tags.TagKey(\"basic_key\", new()\n {\n Description = \"For keyname resources.\",\n Parent = \"organizations/123456789\",\n Purpose = \"GCE_FIREWALL\",\n ShortName = \"tagkey\",\n PurposeData = \n {\n { \"network\", basicNetwork.Name.Apply(name =\u003e $\"my-project-name/{name}\") },\n },\n });\n\n var basicValue = new Gcp.Tags.TagValue(\"basic_value\", new()\n {\n Description = \"For valuename resources.\",\n Parent = basicKey.Name.Apply(name =\u003e $\"tagKeys/{name}\"),\n ShortName = \"tagvalue\",\n });\n\n var primary = new Gcp.Compute.NetworkFirewallPolicyRule(\"primary\", new()\n {\n Action = \"allow\",\n Description = \"This is a simple rule description\",\n Direction = \"INGRESS\",\n Disabled = false,\n EnableLogging = true,\n FirewallPolicy = basicNetworkFirewallPolicy.Name,\n Priority = 1000,\n RuleName = \"test-rule\",\n TargetServiceAccounts = new[]\n {\n \"my@service-account.com\",\n },\n Match = new Gcp.Compute.Inputs.NetworkFirewallPolicyRuleMatchArgs\n {\n SrcIpRanges = new[]\n {\n \"10.100.0.1/32\",\n },\n SrcFqdns = new[]\n {\n \"google.com\",\n },\n SrcRegionCodes = new[]\n {\n \"US\",\n },\n SrcThreatIntelligences = new[]\n {\n \"iplist-known-malicious-ips\",\n },\n SrcSecureTags = new[]\n {\n new Gcp.Compute.Inputs.NetworkFirewallPolicyRuleMatchSrcSecureTagArgs\n {\n Name = basicValue.Name.Apply(name =\u003e $\"tagValues/{name}\"),\n },\n },\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.NetworkFirewallPolicyRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"all\",\n },\n },\n SrcAddressGroups = new[]\n {\n basicGlobalNetworksecurityAddressGroup.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/tags\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasicGlobalNetworksecurityAddressGroup, err := networksecurity.NewAddressGroup(ctx, \"basic_global_networksecurity_address_group\", \u0026networksecurity.AddressGroupArgs{\n\t\t\tName: pulumi.String(\"policy\"),\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Sample global networksecurity_address_group\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tItems: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"208.80.154.224/32\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"IPV4\"),\n\t\t\tCapacity: pulumi.Int(100),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicNetworkFirewallPolicy, err := compute.NewNetworkFirewallPolicy(ctx, \"basic_network_firewall_policy\", \u0026compute.NetworkFirewallPolicyArgs{\n\t\t\tName: pulumi.String(\"policy\"),\n\t\t\tDescription: pulumi.String(\"Sample global network firewall policy\"),\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\tbasicNetwork, err := compute.NewNetwork(ctx, \"basic_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicKey, err := tags.NewTagKey(ctx, \"basic_key\", \u0026tags.TagKeyArgs{\n\t\t\tDescription: pulumi.String(\"For keyname resources.\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tPurpose: pulumi.String(\"GCE_FIREWALL\"),\n\t\t\tShortName: pulumi.String(\"tagkey\"),\n\t\t\tPurposeData: pulumi.StringMap{\n\t\t\t\t\"network\": basicNetwork.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"my-project-name/%v\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicValue, err := tags.NewTagValue(ctx, \"basic_value\", \u0026tags.TagValueArgs{\n\t\t\tDescription: pulumi.String(\"For valuename resources.\"),\n\t\t\tParent: basicKey.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"tagKeys/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tShortName: pulumi.String(\"tagvalue\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkFirewallPolicyRule(ctx, \"primary\", \u0026compute.NetworkFirewallPolicyRuleArgs{\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tDescription: pulumi.String(\"This is a simple rule description\"),\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\tDisabled: pulumi.Bool(false),\n\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\tFirewallPolicy: basicNetworkFirewallPolicy.Name,\n\t\t\tPriority: pulumi.Int(1000),\n\t\t\tRuleName: pulumi.String(\"test-rule\"),\n\t\t\tTargetServiceAccounts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my@service-account.com\"),\n\t\t\t},\n\t\t\tMatch: \u0026compute.NetworkFirewallPolicyRuleMatchArgs{\n\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.100.0.1/32\"),\n\t\t\t\t},\n\t\t\t\tSrcFqdns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"google.com\"),\n\t\t\t\t},\n\t\t\t\tSrcRegionCodes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t},\n\t\t\t\tSrcThreatIntelligences: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"iplist-known-malicious-ips\"),\n\t\t\t\t},\n\t\t\t\tSrcSecureTags: compute.NetworkFirewallPolicyRuleMatchSrcSecureTagArray{\n\t\t\t\t\t\u0026compute.NetworkFirewallPolicyRuleMatchSrcSecureTagArgs{\n\t\t\t\t\t\tName: basicValue.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"tagValues/%v\", name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tLayer4Configs: compute.NetworkFirewallPolicyRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\u0026compute.NetworkFirewallPolicyRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\tIpProtocol: pulumi.String(\"all\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSrcAddressGroups: pulumi.StringArray{\n\t\t\t\t\tbasicGlobalNetworksecurityAddressGroup.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.networksecurity.AddressGroup;\nimport com.pulumi.gcp.networksecurity.AddressGroupArgs;\nimport com.pulumi.gcp.compute.NetworkFirewallPolicy;\nimport com.pulumi.gcp.compute.NetworkFirewallPolicyArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.tags.TagKey;\nimport com.pulumi.gcp.tags.TagKeyArgs;\nimport com.pulumi.gcp.tags.TagValue;\nimport com.pulumi.gcp.tags.TagValueArgs;\nimport com.pulumi.gcp.compute.NetworkFirewallPolicyRule;\nimport com.pulumi.gcp.compute.NetworkFirewallPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.NetworkFirewallPolicyRuleMatchArgs;\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 basicGlobalNetworksecurityAddressGroup = new AddressGroup(\"basicGlobalNetworksecurityAddressGroup\", AddressGroupArgs.builder()\n .name(\"policy\")\n .parent(\"projects/my-project-name\")\n .description(\"Sample global networksecurity_address_group\")\n .location(\"global\")\n .items(\"208.80.154.224/32\")\n .type(\"IPV4\")\n .capacity(100)\n .build());\n\n var basicNetworkFirewallPolicy = new NetworkFirewallPolicy(\"basicNetworkFirewallPolicy\", NetworkFirewallPolicyArgs.builder()\n .name(\"policy\")\n .description(\"Sample global network firewall policy\")\n .project(\"my-project-name\")\n .build());\n\n var basicNetwork = new Network(\"basicNetwork\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var basicKey = new TagKey(\"basicKey\", TagKeyArgs.builder()\n .description(\"For keyname resources.\")\n .parent(\"organizations/123456789\")\n .purpose(\"GCE_FIREWALL\")\n .shortName(\"tagkey\")\n .purposeData(Map.of(\"network\", basicNetwork.name().applyValue(name -\u003e String.format(\"my-project-name/%s\", name))))\n .build());\n\n var basicValue = new TagValue(\"basicValue\", TagValueArgs.builder()\n .description(\"For valuename resources.\")\n .parent(basicKey.name().applyValue(name -\u003e String.format(\"tagKeys/%s\", name)))\n .shortName(\"tagvalue\")\n .build());\n\n var primary = new NetworkFirewallPolicyRule(\"primary\", NetworkFirewallPolicyRuleArgs.builder()\n .action(\"allow\")\n .description(\"This is a simple rule description\")\n .direction(\"INGRESS\")\n .disabled(false)\n .enableLogging(true)\n .firewallPolicy(basicNetworkFirewallPolicy.name())\n .priority(1000)\n .ruleName(\"test-rule\")\n .targetServiceAccounts(\"my@service-account.com\")\n .match(NetworkFirewallPolicyRuleMatchArgs.builder()\n .srcIpRanges(\"10.100.0.1/32\")\n .srcFqdns(\"google.com\")\n .srcRegionCodes(\"US\")\n .srcThreatIntelligences(\"iplist-known-malicious-ips\")\n .srcSecureTags(NetworkFirewallPolicyRuleMatchSrcSecureTagArgs.builder()\n .name(basicValue.name().applyValue(name -\u003e String.format(\"tagValues/%s\", name)))\n .build())\n .layer4Configs(NetworkFirewallPolicyRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"all\")\n .build())\n .srcAddressGroups(basicGlobalNetworksecurityAddressGroup.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicGlobalNetworksecurityAddressGroup:\n type: gcp:networksecurity:AddressGroup\n name: basic_global_networksecurity_address_group\n properties:\n name: policy\n parent: projects/my-project-name\n description: Sample global networksecurity_address_group\n location: global\n items:\n - 208.80.154.224/32\n type: IPV4\n capacity: 100\n basicNetworkFirewallPolicy:\n type: gcp:compute:NetworkFirewallPolicy\n name: basic_network_firewall_policy\n properties:\n name: policy\n description: Sample global network firewall policy\n project: my-project-name\n primary:\n type: gcp:compute:NetworkFirewallPolicyRule\n properties:\n action: allow\n description: This is a simple rule description\n direction: INGRESS\n disabled: false\n enableLogging: true\n firewallPolicy: ${basicNetworkFirewallPolicy.name}\n priority: 1000\n ruleName: test-rule\n targetServiceAccounts:\n - my@service-account.com\n match:\n srcIpRanges:\n - 10.100.0.1/32\n srcFqdns:\n - google.com\n srcRegionCodes:\n - US\n srcThreatIntelligences:\n - iplist-known-malicious-ips\n srcSecureTags:\n - name: tagValues/${basicValue.name}\n layer4Configs:\n - ipProtocol: all\n srcAddressGroups:\n - ${basicGlobalNetworksecurityAddressGroup.id}\n basicNetwork:\n type: gcp:compute:Network\n name: basic_network\n properties:\n name: network\n basicKey:\n type: gcp:tags:TagKey\n name: basic_key\n properties:\n description: For keyname resources.\n parent: organizations/123456789\n purpose: GCE_FIREWALL\n shortName: tagkey\n purposeData:\n network: my-project-name/${basicNetwork.name}\n basicValue:\n type: gcp:tags:TagValue\n name: basic_value\n properties:\n description: For valuename resources.\n parent: tagKeys/${basicKey.name}\n shortName: tagvalue\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkFirewallPolicyRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/firewallPolicies/{{firewall_policy}}/rules/{{priority}}`\n\n* `{{project}}/{{firewall_policy}}/{{priority}}`\n\n* `{{firewall_policy}}/{{priority}}`\n\nWhen using the `pulumi import` command, NetworkFirewallPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkFirewallPolicyRule:NetworkFirewallPolicyRule default projects/{{project}}/global/firewallPolicies/{{firewall_policy}}/rules/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkFirewallPolicyRule:NetworkFirewallPolicyRule default {{project}}/{{firewall_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkFirewallPolicyRule:NetworkFirewallPolicyRule default {{firewall_policy}}/{{priority}}\n```\n\n", + "description": "The Compute NetworkFirewallPolicyRule resource\n\n## Example Usage\n\n### Global\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicGlobalNetworksecurityAddressGroup = new gcp.networksecurity.AddressGroup(\"basic_global_networksecurity_address_group\", {\n name: \"policy\",\n parent: \"projects/my-project-name\",\n description: \"Sample global networksecurity_address_group\",\n location: \"global\",\n items: [\"208.80.154.224/32\"],\n type: \"IPV4\",\n capacity: 100,\n});\nconst basicNetworkFirewallPolicy = new gcp.compute.NetworkFirewallPolicy(\"basic_network_firewall_policy\", {\n name: \"policy\",\n description: \"Sample global network firewall policy\",\n project: \"my-project-name\",\n});\nconst basicNetwork = new gcp.compute.Network(\"basic_network\", {name: \"network\"});\nconst basicKey = new gcp.tags.TagKey(\"basic_key\", {\n description: \"For keyname resources.\",\n parent: \"organizations/123456789\",\n purpose: \"GCE_FIREWALL\",\n shortName: \"tagkey\",\n purposeData: {\n network: pulumi.interpolate`my-project-name/${basicNetwork.name}`,\n },\n});\nconst basicValue = new gcp.tags.TagValue(\"basic_value\", {\n description: \"For valuename resources.\",\n parent: pulumi.interpolate`tagKeys/${basicKey.name}`,\n shortName: \"tagvalue\",\n});\nconst primary = new gcp.compute.NetworkFirewallPolicyRule(\"primary\", {\n action: \"allow\",\n description: \"This is a simple rule description\",\n direction: \"INGRESS\",\n disabled: false,\n enableLogging: true,\n firewallPolicy: basicNetworkFirewallPolicy.name,\n priority: 1000,\n ruleName: \"test-rule\",\n targetServiceAccounts: [\"my@service-account.com\"],\n match: {\n srcIpRanges: [\"10.100.0.1/32\"],\n srcFqdns: [\"google.com\"],\n srcRegionCodes: [\"US\"],\n srcThreatIntelligences: [\"iplist-known-malicious-ips\"],\n srcSecureTags: [{\n name: pulumi.interpolate`tagValues/${basicValue.name}`,\n }],\n layer4Configs: [{\n ipProtocol: \"all\",\n }],\n srcAddressGroups: [basicGlobalNetworksecurityAddressGroup.id],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_global_networksecurity_address_group = gcp.networksecurity.AddressGroup(\"basic_global_networksecurity_address_group\",\n name=\"policy\",\n parent=\"projects/my-project-name\",\n description=\"Sample global networksecurity_address_group\",\n location=\"global\",\n items=[\"208.80.154.224/32\"],\n type=\"IPV4\",\n capacity=100)\nbasic_network_firewall_policy = gcp.compute.NetworkFirewallPolicy(\"basic_network_firewall_policy\",\n name=\"policy\",\n description=\"Sample global network firewall policy\",\n project=\"my-project-name\")\nbasic_network = gcp.compute.Network(\"basic_network\", name=\"network\")\nbasic_key = gcp.tags.TagKey(\"basic_key\",\n description=\"For keyname resources.\",\n parent=\"organizations/123456789\",\n purpose=\"GCE_FIREWALL\",\n short_name=\"tagkey\",\n purpose_data={\n \"network\": basic_network.name.apply(lambda name: f\"my-project-name/{name}\"),\n })\nbasic_value = gcp.tags.TagValue(\"basic_value\",\n description=\"For valuename resources.\",\n parent=basic_key.name.apply(lambda name: f\"tagKeys/{name}\"),\n short_name=\"tagvalue\")\nprimary = gcp.compute.NetworkFirewallPolicyRule(\"primary\",\n action=\"allow\",\n description=\"This is a simple rule description\",\n direction=\"INGRESS\",\n disabled=False,\n enable_logging=True,\n firewall_policy=basic_network_firewall_policy.name,\n priority=1000,\n rule_name=\"test-rule\",\n target_service_accounts=[\"my@service-account.com\"],\n match={\n \"src_ip_ranges\": [\"10.100.0.1/32\"],\n \"src_fqdns\": [\"google.com\"],\n \"src_region_codes\": [\"US\"],\n \"src_threat_intelligences\": [\"iplist-known-malicious-ips\"],\n \"src_secure_tags\": [{\n \"name\": basic_value.name.apply(lambda name: f\"tagValues/{name}\"),\n }],\n \"layer4_configs\": [{\n \"ip_protocol\": \"all\",\n }],\n \"src_address_groups\": [basic_global_networksecurity_address_group.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 basicGlobalNetworksecurityAddressGroup = new Gcp.NetworkSecurity.AddressGroup(\"basic_global_networksecurity_address_group\", new()\n {\n Name = \"policy\",\n Parent = \"projects/my-project-name\",\n Description = \"Sample global networksecurity_address_group\",\n Location = \"global\",\n Items = new[]\n {\n \"208.80.154.224/32\",\n },\n Type = \"IPV4\",\n Capacity = 100,\n });\n\n var basicNetworkFirewallPolicy = new Gcp.Compute.NetworkFirewallPolicy(\"basic_network_firewall_policy\", new()\n {\n Name = \"policy\",\n Description = \"Sample global network firewall policy\",\n Project = \"my-project-name\",\n });\n\n var basicNetwork = new Gcp.Compute.Network(\"basic_network\", new()\n {\n Name = \"network\",\n });\n\n var basicKey = new Gcp.Tags.TagKey(\"basic_key\", new()\n {\n Description = \"For keyname resources.\",\n Parent = \"organizations/123456789\",\n Purpose = \"GCE_FIREWALL\",\n ShortName = \"tagkey\",\n PurposeData = \n {\n { \"network\", basicNetwork.Name.Apply(name =\u003e $\"my-project-name/{name}\") },\n },\n });\n\n var basicValue = new Gcp.Tags.TagValue(\"basic_value\", new()\n {\n Description = \"For valuename resources.\",\n Parent = basicKey.Name.Apply(name =\u003e $\"tagKeys/{name}\"),\n ShortName = \"tagvalue\",\n });\n\n var primary = new Gcp.Compute.NetworkFirewallPolicyRule(\"primary\", new()\n {\n Action = \"allow\",\n Description = \"This is a simple rule description\",\n Direction = \"INGRESS\",\n Disabled = false,\n EnableLogging = true,\n FirewallPolicy = basicNetworkFirewallPolicy.Name,\n Priority = 1000,\n RuleName = \"test-rule\",\n TargetServiceAccounts = new[]\n {\n \"my@service-account.com\",\n },\n Match = new Gcp.Compute.Inputs.NetworkFirewallPolicyRuleMatchArgs\n {\n SrcIpRanges = new[]\n {\n \"10.100.0.1/32\",\n },\n SrcFqdns = new[]\n {\n \"google.com\",\n },\n SrcRegionCodes = new[]\n {\n \"US\",\n },\n SrcThreatIntelligences = new[]\n {\n \"iplist-known-malicious-ips\",\n },\n SrcSecureTags = new[]\n {\n new Gcp.Compute.Inputs.NetworkFirewallPolicyRuleMatchSrcSecureTagArgs\n {\n Name = basicValue.Name.Apply(name =\u003e $\"tagValues/{name}\"),\n },\n },\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.NetworkFirewallPolicyRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"all\",\n },\n },\n SrcAddressGroups = new[]\n {\n basicGlobalNetworksecurityAddressGroup.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/tags\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasicGlobalNetworksecurityAddressGroup, err := networksecurity.NewAddressGroup(ctx, \"basic_global_networksecurity_address_group\", \u0026networksecurity.AddressGroupArgs{\n\t\t\tName: pulumi.String(\"policy\"),\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Sample global networksecurity_address_group\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tItems: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"208.80.154.224/32\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"IPV4\"),\n\t\t\tCapacity: pulumi.Int(100),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicNetworkFirewallPolicy, err := compute.NewNetworkFirewallPolicy(ctx, \"basic_network_firewall_policy\", \u0026compute.NetworkFirewallPolicyArgs{\n\t\t\tName: pulumi.String(\"policy\"),\n\t\t\tDescription: pulumi.String(\"Sample global network firewall policy\"),\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\tbasicNetwork, err := compute.NewNetwork(ctx, \"basic_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicKey, err := tags.NewTagKey(ctx, \"basic_key\", \u0026tags.TagKeyArgs{\n\t\t\tDescription: pulumi.String(\"For keyname resources.\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tPurpose: pulumi.String(\"GCE_FIREWALL\"),\n\t\t\tShortName: pulumi.String(\"tagkey\"),\n\t\t\tPurposeData: pulumi.StringMap{\n\t\t\t\t\"network\": basicNetwork.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"my-project-name/%v\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicValue, err := tags.NewTagValue(ctx, \"basic_value\", \u0026tags.TagValueArgs{\n\t\t\tDescription: pulumi.String(\"For valuename resources.\"),\n\t\t\tParent: basicKey.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"tagKeys/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tShortName: pulumi.String(\"tagvalue\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkFirewallPolicyRule(ctx, \"primary\", \u0026compute.NetworkFirewallPolicyRuleArgs{\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tDescription: pulumi.String(\"This is a simple rule description\"),\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\tDisabled: pulumi.Bool(false),\n\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\tFirewallPolicy: basicNetworkFirewallPolicy.Name,\n\t\t\tPriority: pulumi.Int(1000),\n\t\t\tRuleName: pulumi.String(\"test-rule\"),\n\t\t\tTargetServiceAccounts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my@service-account.com\"),\n\t\t\t},\n\t\t\tMatch: \u0026compute.NetworkFirewallPolicyRuleMatchArgs{\n\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.100.0.1/32\"),\n\t\t\t\t},\n\t\t\t\tSrcFqdns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"google.com\"),\n\t\t\t\t},\n\t\t\t\tSrcRegionCodes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t},\n\t\t\t\tSrcThreatIntelligences: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"iplist-known-malicious-ips\"),\n\t\t\t\t},\n\t\t\t\tSrcSecureTags: compute.NetworkFirewallPolicyRuleMatchSrcSecureTagArray{\n\t\t\t\t\t\u0026compute.NetworkFirewallPolicyRuleMatchSrcSecureTagArgs{\n\t\t\t\t\t\tName: basicValue.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"tagValues/%v\", name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tLayer4Configs: compute.NetworkFirewallPolicyRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\u0026compute.NetworkFirewallPolicyRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\tIpProtocol: pulumi.String(\"all\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSrcAddressGroups: pulumi.StringArray{\n\t\t\t\t\tbasicGlobalNetworksecurityAddressGroup.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.networksecurity.AddressGroup;\nimport com.pulumi.gcp.networksecurity.AddressGroupArgs;\nimport com.pulumi.gcp.compute.NetworkFirewallPolicy;\nimport com.pulumi.gcp.compute.NetworkFirewallPolicyArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.tags.TagKey;\nimport com.pulumi.gcp.tags.TagKeyArgs;\nimport com.pulumi.gcp.tags.TagValue;\nimport com.pulumi.gcp.tags.TagValueArgs;\nimport com.pulumi.gcp.compute.NetworkFirewallPolicyRule;\nimport com.pulumi.gcp.compute.NetworkFirewallPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.NetworkFirewallPolicyRuleMatchArgs;\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 basicGlobalNetworksecurityAddressGroup = new AddressGroup(\"basicGlobalNetworksecurityAddressGroup\", AddressGroupArgs.builder()\n .name(\"policy\")\n .parent(\"projects/my-project-name\")\n .description(\"Sample global networksecurity_address_group\")\n .location(\"global\")\n .items(\"208.80.154.224/32\")\n .type(\"IPV4\")\n .capacity(100)\n .build());\n\n var basicNetworkFirewallPolicy = new NetworkFirewallPolicy(\"basicNetworkFirewallPolicy\", NetworkFirewallPolicyArgs.builder()\n .name(\"policy\")\n .description(\"Sample global network firewall policy\")\n .project(\"my-project-name\")\n .build());\n\n var basicNetwork = new Network(\"basicNetwork\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var basicKey = new TagKey(\"basicKey\", TagKeyArgs.builder()\n .description(\"For keyname resources.\")\n .parent(\"organizations/123456789\")\n .purpose(\"GCE_FIREWALL\")\n .shortName(\"tagkey\")\n .purposeData(Map.of(\"network\", basicNetwork.name().applyValue(name -\u003e String.format(\"my-project-name/%s\", name))))\n .build());\n\n var basicValue = new TagValue(\"basicValue\", TagValueArgs.builder()\n .description(\"For valuename resources.\")\n .parent(basicKey.name().applyValue(name -\u003e String.format(\"tagKeys/%s\", name)))\n .shortName(\"tagvalue\")\n .build());\n\n var primary = new NetworkFirewallPolicyRule(\"primary\", NetworkFirewallPolicyRuleArgs.builder()\n .action(\"allow\")\n .description(\"This is a simple rule description\")\n .direction(\"INGRESS\")\n .disabled(false)\n .enableLogging(true)\n .firewallPolicy(basicNetworkFirewallPolicy.name())\n .priority(1000)\n .ruleName(\"test-rule\")\n .targetServiceAccounts(\"my@service-account.com\")\n .match(NetworkFirewallPolicyRuleMatchArgs.builder()\n .srcIpRanges(\"10.100.0.1/32\")\n .srcFqdns(\"google.com\")\n .srcRegionCodes(\"US\")\n .srcThreatIntelligences(\"iplist-known-malicious-ips\")\n .srcSecureTags(NetworkFirewallPolicyRuleMatchSrcSecureTagArgs.builder()\n .name(basicValue.name().applyValue(name -\u003e String.format(\"tagValues/%s\", name)))\n .build())\n .layer4Configs(NetworkFirewallPolicyRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"all\")\n .build())\n .srcAddressGroups(basicGlobalNetworksecurityAddressGroup.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicGlobalNetworksecurityAddressGroup:\n type: gcp:networksecurity:AddressGroup\n name: basic_global_networksecurity_address_group\n properties:\n name: policy\n parent: projects/my-project-name\n description: Sample global networksecurity_address_group\n location: global\n items:\n - 208.80.154.224/32\n type: IPV4\n capacity: 100\n basicNetworkFirewallPolicy:\n type: gcp:compute:NetworkFirewallPolicy\n name: basic_network_firewall_policy\n properties:\n name: policy\n description: Sample global network firewall policy\n project: my-project-name\n primary:\n type: gcp:compute:NetworkFirewallPolicyRule\n properties:\n action: allow\n description: This is a simple rule description\n direction: INGRESS\n disabled: false\n enableLogging: true\n firewallPolicy: ${basicNetworkFirewallPolicy.name}\n priority: 1000\n ruleName: test-rule\n targetServiceAccounts:\n - my@service-account.com\n match:\n srcIpRanges:\n - 10.100.0.1/32\n srcFqdns:\n - google.com\n srcRegionCodes:\n - US\n srcThreatIntelligences:\n - iplist-known-malicious-ips\n srcSecureTags:\n - name: tagValues/${basicValue.name}\n layer4Configs:\n - ipProtocol: all\n srcAddressGroups:\n - ${basicGlobalNetworksecurityAddressGroup.id}\n basicNetwork:\n type: gcp:compute:Network\n name: basic_network\n properties:\n name: network\n basicKey:\n type: gcp:tags:TagKey\n name: basic_key\n properties:\n description: For keyname resources.\n parent: organizations/123456789\n purpose: GCE_FIREWALL\n shortName: tagkey\n purposeData:\n network: my-project-name/${basicNetwork.name}\n basicValue:\n type: gcp:tags:TagValue\n name: basic_value\n properties:\n description: For valuename resources.\n parent: tagKeys/${basicKey.name}\n shortName: tagvalue\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkFirewallPolicyRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/firewallPolicies/{{firewall_policy}}/rules/{{priority}}`\n\n* `{{project}}/{{firewall_policy}}/{{priority}}`\n\n* `{{firewall_policy}}/{{priority}}`\n\nWhen using the `pulumi import` command, NetworkFirewallPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkFirewallPolicyRule:NetworkFirewallPolicyRule default projects/{{project}}/global/firewallPolicies/{{firewall_policy}}/rules/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkFirewallPolicyRule:NetworkFirewallPolicyRule default {{project}}/{{firewall_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkFirewallPolicyRule:NetworkFirewallPolicyRule default {{firewall_policy}}/{{priority}}\n```\n\n", "properties": { "action": { "type": "string", @@ -153900,7 +153900,7 @@ } }, "gcp:compute/networkPeeringRoutesConfig:NetworkPeeringRoutesConfig": { - "description": "Manage a network peering's route settings without managing the peering as\na whole. This resource is primarily intended for use with GCP-generated\npeerings that shouldn't otherwise be managed by other tools. Deleting this\nresource is a no-op and the peering will not be modified.\n\n\nTo get more information about NetworkPeeringRoutesConfig, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/networks/updatePeering)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vpc/docs/vpc-peering)\n\n## Example Usage\n\n### Network Peering Routes Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst networkPrimary = new gcp.compute.Network(\"network_primary\", {\n name: \"primary-network\",\n autoCreateSubnetworks: false,\n});\nconst networkSecondary = new gcp.compute.Network(\"network_secondary\", {\n name: \"secondary-network\",\n autoCreateSubnetworks: false,\n});\nconst peeringPrimary = new gcp.compute.NetworkPeering(\"peering_primary\", {\n name: \"primary-peering\",\n network: networkPrimary.id,\n peerNetwork: networkSecondary.id,\n importCustomRoutes: true,\n exportCustomRoutes: true,\n});\nconst peeringPrimaryRoutes = new gcp.compute.NetworkPeeringRoutesConfig(\"peering_primary_routes\", {\n peering: peeringPrimary.name,\n network: networkPrimary.name,\n importCustomRoutes: true,\n exportCustomRoutes: true,\n});\nconst peeringSecondary = new gcp.compute.NetworkPeering(\"peering_secondary\", {\n name: \"secondary-peering\",\n network: networkSecondary.id,\n peerNetwork: networkPrimary.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_primary = gcp.compute.Network(\"network_primary\",\n name=\"primary-network\",\n auto_create_subnetworks=False)\nnetwork_secondary = gcp.compute.Network(\"network_secondary\",\n name=\"secondary-network\",\n auto_create_subnetworks=False)\npeering_primary = gcp.compute.NetworkPeering(\"peering_primary\",\n name=\"primary-peering\",\n network=network_primary.id,\n peer_network=network_secondary.id,\n import_custom_routes=True,\n export_custom_routes=True)\npeering_primary_routes = gcp.compute.NetworkPeeringRoutesConfig(\"peering_primary_routes\",\n peering=peering_primary.name,\n network=network_primary.name,\n import_custom_routes=True,\n export_custom_routes=True)\npeering_secondary = gcp.compute.NetworkPeering(\"peering_secondary\",\n name=\"secondary-peering\",\n network=network_secondary.id,\n peer_network=network_primary.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 networkPrimary = new Gcp.Compute.Network(\"network_primary\", new()\n {\n Name = \"primary-network\",\n AutoCreateSubnetworks = false,\n });\n\n var networkSecondary = new Gcp.Compute.Network(\"network_secondary\", new()\n {\n Name = \"secondary-network\",\n AutoCreateSubnetworks = false,\n });\n\n var peeringPrimary = new Gcp.Compute.NetworkPeering(\"peering_primary\", new()\n {\n Name = \"primary-peering\",\n Network = networkPrimary.Id,\n PeerNetwork = networkSecondary.Id,\n ImportCustomRoutes = true,\n ExportCustomRoutes = true,\n });\n\n var peeringPrimaryRoutes = new Gcp.Compute.NetworkPeeringRoutesConfig(\"peering_primary_routes\", new()\n {\n Peering = peeringPrimary.Name,\n Network = networkPrimary.Name,\n ImportCustomRoutes = true,\n ExportCustomRoutes = true,\n });\n\n var peeringSecondary = new Gcp.Compute.NetworkPeering(\"peering_secondary\", new()\n {\n Name = \"secondary-peering\",\n Network = networkSecondary.Id,\n PeerNetwork = networkPrimary.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnetworkPrimary, err := compute.NewNetwork(ctx, \"network_primary\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"primary-network\"),\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\tnetworkSecondary, err := compute.NewNetwork(ctx, \"network_secondary\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"secondary-network\"),\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\tpeeringPrimary, err := compute.NewNetworkPeering(ctx, \"peering_primary\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"primary-peering\"),\n\t\t\tNetwork: networkPrimary.ID(),\n\t\t\tPeerNetwork: networkSecondary.ID(),\n\t\t\tImportCustomRoutes: pulumi.Bool(true),\n\t\t\tExportCustomRoutes: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkPeeringRoutesConfig(ctx, \"peering_primary_routes\", \u0026compute.NetworkPeeringRoutesConfigArgs{\n\t\t\tPeering: peeringPrimary.Name,\n\t\t\tNetwork: networkPrimary.Name,\n\t\t\tImportCustomRoutes: pulumi.Bool(true),\n\t\t\tExportCustomRoutes: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkPeering(ctx, \"peering_secondary\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"secondary-peering\"),\n\t\t\tNetwork: networkSecondary.ID(),\n\t\t\tPeerNetwork: networkPrimary.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.NetworkPeering;\nimport com.pulumi.gcp.compute.NetworkPeeringArgs;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfig;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfigArgs;\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 networkPrimary = new Network(\"networkPrimary\", NetworkArgs.builder()\n .name(\"primary-network\")\n .autoCreateSubnetworks(\"false\")\n .build());\n\n var networkSecondary = new Network(\"networkSecondary\", NetworkArgs.builder()\n .name(\"secondary-network\")\n .autoCreateSubnetworks(\"false\")\n .build());\n\n var peeringPrimary = new NetworkPeering(\"peeringPrimary\", NetworkPeeringArgs.builder()\n .name(\"primary-peering\")\n .network(networkPrimary.id())\n .peerNetwork(networkSecondary.id())\n .importCustomRoutes(true)\n .exportCustomRoutes(true)\n .build());\n\n var peeringPrimaryRoutes = new NetworkPeeringRoutesConfig(\"peeringPrimaryRoutes\", NetworkPeeringRoutesConfigArgs.builder()\n .peering(peeringPrimary.name())\n .network(networkPrimary.name())\n .importCustomRoutes(true)\n .exportCustomRoutes(true)\n .build());\n\n var peeringSecondary = new NetworkPeering(\"peeringSecondary\", NetworkPeeringArgs.builder()\n .name(\"secondary-peering\")\n .network(networkSecondary.id())\n .peerNetwork(networkPrimary.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peeringPrimaryRoutes:\n type: gcp:compute:NetworkPeeringRoutesConfig\n name: peering_primary_routes\n properties:\n peering: ${peeringPrimary.name}\n network: ${networkPrimary.name}\n importCustomRoutes: true\n exportCustomRoutes: true\n peeringPrimary:\n type: gcp:compute:NetworkPeering\n name: peering_primary\n properties:\n name: primary-peering\n network: ${networkPrimary.id}\n peerNetwork: ${networkSecondary.id}\n importCustomRoutes: true\n exportCustomRoutes: true\n peeringSecondary:\n type: gcp:compute:NetworkPeering\n name: peering_secondary\n properties:\n name: secondary-peering\n network: ${networkSecondary.id}\n peerNetwork: ${networkPrimary.id}\n networkPrimary:\n type: gcp:compute:Network\n name: network_primary\n properties:\n name: primary-network\n autoCreateSubnetworks: 'false'\n networkSecondary:\n type: gcp:compute:Network\n name: network_secondary\n properties:\n name: secondary-network\n autoCreateSubnetworks: 'false'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Peering Routes Config Gke\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst containerNetwork = new gcp.compute.Network(\"container_network\", {\n name: \"container-network\",\n autoCreateSubnetworks: false,\n});\nconst containerSubnetwork = new gcp.compute.Subnetwork(\"container_subnetwork\", {\n name: \"container-subnetwork\",\n region: \"us-central1\",\n network: containerNetwork.name,\n ipCidrRange: \"10.0.36.0/24\",\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 privateCluster = new gcp.container.Cluster(\"private_cluster\", {\n name: \"private-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n network: containerNetwork.name,\n subnetwork: containerSubnetwork.name,\n privateClusterConfig: {\n enablePrivateEndpoint: true,\n enablePrivateNodes: true,\n masterIpv4CidrBlock: \"10.42.0.0/28\",\n },\n masterAuthorizedNetworksConfig: {},\n ipAllocationPolicy: {\n clusterSecondaryRangeName: containerSubnetwork.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[0].rangeName),\n servicesSecondaryRangeName: containerSubnetwork.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[1].rangeName),\n },\n deletionProtection: true,\n});\nconst peeringGkeRoutes = new gcp.compute.NetworkPeeringRoutesConfig(\"peering_gke_routes\", {\n peering: privateCluster.privateClusterConfig.apply(privateClusterConfig =\u003e privateClusterConfig.peeringName),\n network: containerNetwork.name,\n importCustomRoutes: true,\n exportCustomRoutes: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncontainer_network = gcp.compute.Network(\"container_network\",\n name=\"container-network\",\n auto_create_subnetworks=False)\ncontainer_subnetwork = gcp.compute.Subnetwork(\"container_subnetwork\",\n name=\"container-subnetwork\",\n region=\"us-central1\",\n network=container_network.name,\n ip_cidr_range=\"10.0.36.0/24\",\n private_ip_google_access=True,\n secondary_ip_ranges=[\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 ])\nprivate_cluster = gcp.container.Cluster(\"private_cluster\",\n name=\"private-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n network=container_network.name,\n subnetwork=container_subnetwork.name,\n private_cluster_config={\n \"enablePrivateEndpoint\": True,\n \"enablePrivateNodes\": True,\n \"masterIpv4CidrBlock\": \"10.42.0.0/28\",\n },\n master_authorized_networks_config={},\n ip_allocation_policy={\n \"clusterSecondaryRangeName\": container_subnetwork.secondary_ip_ranges[0].range_name,\n \"servicesSecondaryRangeName\": container_subnetwork.secondary_ip_ranges[1].range_name,\n },\n deletion_protection=True)\npeering_gke_routes = gcp.compute.NetworkPeeringRoutesConfig(\"peering_gke_routes\",\n peering=private_cluster.private_cluster_config.peering_name,\n network=container_network.name,\n import_custom_routes=True,\n export_custom_routes=True)\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 containerNetwork = new Gcp.Compute.Network(\"container_network\", new()\n {\n Name = \"container-network\",\n AutoCreateSubnetworks = false,\n });\n\n var containerSubnetwork = new Gcp.Compute.Subnetwork(\"container_subnetwork\", new()\n {\n Name = \"container-subnetwork\",\n Region = \"us-central1\",\n Network = containerNetwork.Name,\n IpCidrRange = \"10.0.36.0/24\",\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 privateCluster = new Gcp.Container.Cluster(\"private_cluster\", new()\n {\n Name = \"private-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n Network = containerNetwork.Name,\n Subnetwork = containerSubnetwork.Name,\n PrivateClusterConfig = new Gcp.Container.Inputs.ClusterPrivateClusterConfigArgs\n {\n EnablePrivateEndpoint = true,\n EnablePrivateNodes = true,\n MasterIpv4CidrBlock = \"10.42.0.0/28\",\n },\n MasterAuthorizedNetworksConfig = null,\n IpAllocationPolicy = new Gcp.Container.Inputs.ClusterIpAllocationPolicyArgs\n {\n ClusterSecondaryRangeName = containerSubnetwork.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[0].RangeName),\n ServicesSecondaryRangeName = containerSubnetwork.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[1].RangeName),\n },\n DeletionProtection = true,\n });\n\n var peeringGkeRoutes = new Gcp.Compute.NetworkPeeringRoutesConfig(\"peering_gke_routes\", new()\n {\n Peering = privateCluster.PrivateClusterConfig.Apply(privateClusterConfig =\u003e privateClusterConfig.PeeringName),\n Network = containerNetwork.Name,\n ImportCustomRoutes = true,\n ExportCustomRoutes = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tcontainerNetwork, err := compute.NewNetwork(ctx, \"container_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"container-network\"),\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\tcontainerSubnetwork, err := compute.NewSubnetwork(ctx, \"container_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"container-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: containerNetwork.Name,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.36.0/24\"),\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\tprivateCluster, err := container.NewCluster(ctx, \"private_cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"private-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tNetwork: containerNetwork.Name,\n\t\t\tSubnetwork: containerSubnetwork.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},\n\t\t\tMasterAuthorizedNetworksConfig: nil,\n\t\t\tIpAllocationPolicy: \u0026container.ClusterIpAllocationPolicyArgs{\n\t\t\t\tClusterSecondaryRangeName: containerSubnetwork.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: containerSubnetwork.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\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkPeeringRoutesConfig(ctx, \"peering_gke_routes\", \u0026compute.NetworkPeeringRoutesConfigArgs{\n\t\t\tPeering: privateCluster.PrivateClusterConfig.ApplyT(func(privateClusterConfig container.ClusterPrivateClusterConfig) (*string, error) {\n\t\t\t\treturn \u0026privateClusterConfig.PeeringName, nil\n\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\tNetwork: containerNetwork.Name,\n\t\t\tImportCustomRoutes: pulumi.Bool(true),\n\t\t\tExportCustomRoutes: pulumi.Bool(true),\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.ClusterPrivateClusterConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterMasterAuthorizedNetworksConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterIpAllocationPolicyArgs;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfig;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfigArgs;\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 containerNetwork = new Network(\"containerNetwork\", NetworkArgs.builder()\n .name(\"container-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var containerSubnetwork = new Subnetwork(\"containerSubnetwork\", SubnetworkArgs.builder()\n .name(\"container-subnetwork\")\n .region(\"us-central1\")\n .network(containerNetwork.name())\n .ipCidrRange(\"10.0.36.0/24\")\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 privateCluster = new Cluster(\"privateCluster\", ClusterArgs.builder()\n .name(\"private-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .network(containerNetwork.name())\n .subnetwork(containerSubnetwork.name())\n .privateClusterConfig(ClusterPrivateClusterConfigArgs.builder()\n .enablePrivateEndpoint(true)\n .enablePrivateNodes(true)\n .masterIpv4CidrBlock(\"10.42.0.0/28\")\n .build())\n .masterAuthorizedNetworksConfig()\n .ipAllocationPolicy(ClusterIpAllocationPolicyArgs.builder()\n .clusterSecondaryRangeName(containerSubnetwork.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[0].rangeName()))\n .servicesSecondaryRangeName(containerSubnetwork.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[1].rangeName()))\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var peeringGkeRoutes = new NetworkPeeringRoutesConfig(\"peeringGkeRoutes\", NetworkPeeringRoutesConfigArgs.builder()\n .peering(privateCluster.privateClusterConfig().applyValue(privateClusterConfig -\u003e privateClusterConfig.peeringName()))\n .network(containerNetwork.name())\n .importCustomRoutes(true)\n .exportCustomRoutes(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peeringGkeRoutes:\n type: gcp:compute:NetworkPeeringRoutesConfig\n name: peering_gke_routes\n properties:\n peering: ${privateCluster.privateClusterConfig.peeringName}\n network: ${containerNetwork.name}\n importCustomRoutes: true\n exportCustomRoutes: true\n containerNetwork:\n type: gcp:compute:Network\n name: container_network\n properties:\n name: container-network\n autoCreateSubnetworks: false\n containerSubnetwork:\n type: gcp:compute:Subnetwork\n name: container_subnetwork\n properties:\n name: container-subnetwork\n region: us-central1\n network: ${containerNetwork.name}\n ipCidrRange: 10.0.36.0/24\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 privateCluster:\n type: gcp:container:Cluster\n name: private_cluster\n properties:\n name: private-cluster\n location: us-central1-a\n initialNodeCount: 1\n network: ${containerNetwork.name}\n subnetwork: ${containerSubnetwork.name}\n privateClusterConfig:\n enablePrivateEndpoint: true\n enablePrivateNodes: true\n masterIpv4CidrBlock: 10.42.0.0/28\n masterAuthorizedNetworksConfig: {}\n ipAllocationPolicy:\n clusterSecondaryRangeName: ${containerSubnetwork.secondaryIpRanges[0].rangeName}\n servicesSecondaryRangeName: ${containerSubnetwork.secondaryIpRanges[1].rangeName}\n deletionProtection: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkPeeringRoutesConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/networks/{{network}}/networkPeerings/{{peering}}`\n\n* `{{project}}/{{network}}/{{peering}}`\n\n* `{{network}}/{{peering}}`\n\nWhen using the `pulumi import` command, NetworkPeeringRoutesConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkPeeringRoutesConfig:NetworkPeeringRoutesConfig default projects/{{project}}/global/networks/{{network}}/networkPeerings/{{peering}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkPeeringRoutesConfig:NetworkPeeringRoutesConfig default {{project}}/{{network}}/{{peering}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkPeeringRoutesConfig:NetworkPeeringRoutesConfig default {{network}}/{{peering}}\n```\n\n", + "description": "Manage a network peering's route settings without managing the peering as\na whole. This resource is primarily intended for use with GCP-generated\npeerings that shouldn't otherwise be managed by other tools. Deleting this\nresource is a no-op and the peering will not be modified.\n\n\nTo get more information about NetworkPeeringRoutesConfig, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/networks/updatePeering)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vpc/docs/vpc-peering)\n\n## Example Usage\n\n### Network Peering Routes Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst networkPrimary = new gcp.compute.Network(\"network_primary\", {\n name: \"primary-network\",\n autoCreateSubnetworks: false,\n});\nconst networkSecondary = new gcp.compute.Network(\"network_secondary\", {\n name: \"secondary-network\",\n autoCreateSubnetworks: false,\n});\nconst peeringPrimary = new gcp.compute.NetworkPeering(\"peering_primary\", {\n name: \"primary-peering\",\n network: networkPrimary.id,\n peerNetwork: networkSecondary.id,\n importCustomRoutes: true,\n exportCustomRoutes: true,\n});\nconst peeringPrimaryRoutes = new gcp.compute.NetworkPeeringRoutesConfig(\"peering_primary_routes\", {\n peering: peeringPrimary.name,\n network: networkPrimary.name,\n importCustomRoutes: true,\n exportCustomRoutes: true,\n});\nconst peeringSecondary = new gcp.compute.NetworkPeering(\"peering_secondary\", {\n name: \"secondary-peering\",\n network: networkSecondary.id,\n peerNetwork: networkPrimary.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_primary = gcp.compute.Network(\"network_primary\",\n name=\"primary-network\",\n auto_create_subnetworks=False)\nnetwork_secondary = gcp.compute.Network(\"network_secondary\",\n name=\"secondary-network\",\n auto_create_subnetworks=False)\npeering_primary = gcp.compute.NetworkPeering(\"peering_primary\",\n name=\"primary-peering\",\n network=network_primary.id,\n peer_network=network_secondary.id,\n import_custom_routes=True,\n export_custom_routes=True)\npeering_primary_routes = gcp.compute.NetworkPeeringRoutesConfig(\"peering_primary_routes\",\n peering=peering_primary.name,\n network=network_primary.name,\n import_custom_routes=True,\n export_custom_routes=True)\npeering_secondary = gcp.compute.NetworkPeering(\"peering_secondary\",\n name=\"secondary-peering\",\n network=network_secondary.id,\n peer_network=network_primary.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 networkPrimary = new Gcp.Compute.Network(\"network_primary\", new()\n {\n Name = \"primary-network\",\n AutoCreateSubnetworks = false,\n });\n\n var networkSecondary = new Gcp.Compute.Network(\"network_secondary\", new()\n {\n Name = \"secondary-network\",\n AutoCreateSubnetworks = false,\n });\n\n var peeringPrimary = new Gcp.Compute.NetworkPeering(\"peering_primary\", new()\n {\n Name = \"primary-peering\",\n Network = networkPrimary.Id,\n PeerNetwork = networkSecondary.Id,\n ImportCustomRoutes = true,\n ExportCustomRoutes = true,\n });\n\n var peeringPrimaryRoutes = new Gcp.Compute.NetworkPeeringRoutesConfig(\"peering_primary_routes\", new()\n {\n Peering = peeringPrimary.Name,\n Network = networkPrimary.Name,\n ImportCustomRoutes = true,\n ExportCustomRoutes = true,\n });\n\n var peeringSecondary = new Gcp.Compute.NetworkPeering(\"peering_secondary\", new()\n {\n Name = \"secondary-peering\",\n Network = networkSecondary.Id,\n PeerNetwork = networkPrimary.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnetworkPrimary, err := compute.NewNetwork(ctx, \"network_primary\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"primary-network\"),\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\tnetworkSecondary, err := compute.NewNetwork(ctx, \"network_secondary\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"secondary-network\"),\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\tpeeringPrimary, err := compute.NewNetworkPeering(ctx, \"peering_primary\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"primary-peering\"),\n\t\t\tNetwork: networkPrimary.ID(),\n\t\t\tPeerNetwork: networkSecondary.ID(),\n\t\t\tImportCustomRoutes: pulumi.Bool(true),\n\t\t\tExportCustomRoutes: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkPeeringRoutesConfig(ctx, \"peering_primary_routes\", \u0026compute.NetworkPeeringRoutesConfigArgs{\n\t\t\tPeering: peeringPrimary.Name,\n\t\t\tNetwork: networkPrimary.Name,\n\t\t\tImportCustomRoutes: pulumi.Bool(true),\n\t\t\tExportCustomRoutes: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkPeering(ctx, \"peering_secondary\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"secondary-peering\"),\n\t\t\tNetwork: networkSecondary.ID(),\n\t\t\tPeerNetwork: networkPrimary.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.NetworkPeering;\nimport com.pulumi.gcp.compute.NetworkPeeringArgs;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfig;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfigArgs;\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 networkPrimary = new Network(\"networkPrimary\", NetworkArgs.builder()\n .name(\"primary-network\")\n .autoCreateSubnetworks(\"false\")\n .build());\n\n var networkSecondary = new Network(\"networkSecondary\", NetworkArgs.builder()\n .name(\"secondary-network\")\n .autoCreateSubnetworks(\"false\")\n .build());\n\n var peeringPrimary = new NetworkPeering(\"peeringPrimary\", NetworkPeeringArgs.builder()\n .name(\"primary-peering\")\n .network(networkPrimary.id())\n .peerNetwork(networkSecondary.id())\n .importCustomRoutes(true)\n .exportCustomRoutes(true)\n .build());\n\n var peeringPrimaryRoutes = new NetworkPeeringRoutesConfig(\"peeringPrimaryRoutes\", NetworkPeeringRoutesConfigArgs.builder()\n .peering(peeringPrimary.name())\n .network(networkPrimary.name())\n .importCustomRoutes(true)\n .exportCustomRoutes(true)\n .build());\n\n var peeringSecondary = new NetworkPeering(\"peeringSecondary\", NetworkPeeringArgs.builder()\n .name(\"secondary-peering\")\n .network(networkSecondary.id())\n .peerNetwork(networkPrimary.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peeringPrimaryRoutes:\n type: gcp:compute:NetworkPeeringRoutesConfig\n name: peering_primary_routes\n properties:\n peering: ${peeringPrimary.name}\n network: ${networkPrimary.name}\n importCustomRoutes: true\n exportCustomRoutes: true\n peeringPrimary:\n type: gcp:compute:NetworkPeering\n name: peering_primary\n properties:\n name: primary-peering\n network: ${networkPrimary.id}\n peerNetwork: ${networkSecondary.id}\n importCustomRoutes: true\n exportCustomRoutes: true\n peeringSecondary:\n type: gcp:compute:NetworkPeering\n name: peering_secondary\n properties:\n name: secondary-peering\n network: ${networkSecondary.id}\n peerNetwork: ${networkPrimary.id}\n networkPrimary:\n type: gcp:compute:Network\n name: network_primary\n properties:\n name: primary-network\n autoCreateSubnetworks: 'false'\n networkSecondary:\n type: gcp:compute:Network\n name: network_secondary\n properties:\n name: secondary-network\n autoCreateSubnetworks: 'false'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Peering Routes Config Gke\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst containerNetwork = new gcp.compute.Network(\"container_network\", {\n name: \"container-network\",\n autoCreateSubnetworks: false,\n});\nconst containerSubnetwork = new gcp.compute.Subnetwork(\"container_subnetwork\", {\n name: \"container-subnetwork\",\n region: \"us-central1\",\n network: containerNetwork.name,\n ipCidrRange: \"10.0.36.0/24\",\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 privateCluster = new gcp.container.Cluster(\"private_cluster\", {\n name: \"private-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n network: containerNetwork.name,\n subnetwork: containerSubnetwork.name,\n privateClusterConfig: {\n enablePrivateEndpoint: true,\n enablePrivateNodes: true,\n masterIpv4CidrBlock: \"10.42.0.0/28\",\n },\n masterAuthorizedNetworksConfig: {},\n ipAllocationPolicy: {\n clusterSecondaryRangeName: containerSubnetwork.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[0].rangeName),\n servicesSecondaryRangeName: containerSubnetwork.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[1].rangeName),\n },\n deletionProtection: true,\n});\nconst peeringGkeRoutes = new gcp.compute.NetworkPeeringRoutesConfig(\"peering_gke_routes\", {\n peering: privateCluster.privateClusterConfig.apply(privateClusterConfig =\u003e privateClusterConfig.peeringName),\n network: containerNetwork.name,\n importCustomRoutes: true,\n exportCustomRoutes: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncontainer_network = gcp.compute.Network(\"container_network\",\n name=\"container-network\",\n auto_create_subnetworks=False)\ncontainer_subnetwork = gcp.compute.Subnetwork(\"container_subnetwork\",\n name=\"container-subnetwork\",\n region=\"us-central1\",\n network=container_network.name,\n ip_cidr_range=\"10.0.36.0/24\",\n private_ip_google_access=True,\n secondary_ip_ranges=[\n {\n \"range_name\": \"pod\",\n \"ip_cidr_range\": \"10.0.0.0/19\",\n },\n {\n \"range_name\": \"svc\",\n \"ip_cidr_range\": \"10.0.32.0/22\",\n },\n ])\nprivate_cluster = gcp.container.Cluster(\"private_cluster\",\n name=\"private-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n network=container_network.name,\n subnetwork=container_subnetwork.name,\n private_cluster_config={\n \"enable_private_endpoint\": True,\n \"enable_private_nodes\": True,\n \"master_ipv4_cidr_block\": \"10.42.0.0/28\",\n },\n master_authorized_networks_config={},\n ip_allocation_policy={\n \"cluster_secondary_range_name\": container_subnetwork.secondary_ip_ranges[0].range_name,\n \"services_secondary_range_name\": container_subnetwork.secondary_ip_ranges[1].range_name,\n },\n deletion_protection=True)\npeering_gke_routes = gcp.compute.NetworkPeeringRoutesConfig(\"peering_gke_routes\",\n peering=private_cluster.private_cluster_config.peering_name,\n network=container_network.name,\n import_custom_routes=True,\n export_custom_routes=True)\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 containerNetwork = new Gcp.Compute.Network(\"container_network\", new()\n {\n Name = \"container-network\",\n AutoCreateSubnetworks = false,\n });\n\n var containerSubnetwork = new Gcp.Compute.Subnetwork(\"container_subnetwork\", new()\n {\n Name = \"container-subnetwork\",\n Region = \"us-central1\",\n Network = containerNetwork.Name,\n IpCidrRange = \"10.0.36.0/24\",\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 privateCluster = new Gcp.Container.Cluster(\"private_cluster\", new()\n {\n Name = \"private-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n Network = containerNetwork.Name,\n Subnetwork = containerSubnetwork.Name,\n PrivateClusterConfig = new Gcp.Container.Inputs.ClusterPrivateClusterConfigArgs\n {\n EnablePrivateEndpoint = true,\n EnablePrivateNodes = true,\n MasterIpv4CidrBlock = \"10.42.0.0/28\",\n },\n MasterAuthorizedNetworksConfig = null,\n IpAllocationPolicy = new Gcp.Container.Inputs.ClusterIpAllocationPolicyArgs\n {\n ClusterSecondaryRangeName = containerSubnetwork.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[0].RangeName),\n ServicesSecondaryRangeName = containerSubnetwork.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[1].RangeName),\n },\n DeletionProtection = true,\n });\n\n var peeringGkeRoutes = new Gcp.Compute.NetworkPeeringRoutesConfig(\"peering_gke_routes\", new()\n {\n Peering = privateCluster.PrivateClusterConfig.Apply(privateClusterConfig =\u003e privateClusterConfig.PeeringName),\n Network = containerNetwork.Name,\n ImportCustomRoutes = true,\n ExportCustomRoutes = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tcontainerNetwork, err := compute.NewNetwork(ctx, \"container_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"container-network\"),\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\tcontainerSubnetwork, err := compute.NewSubnetwork(ctx, \"container_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"container-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: containerNetwork.Name,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.36.0/24\"),\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\tprivateCluster, err := container.NewCluster(ctx, \"private_cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"private-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tNetwork: containerNetwork.Name,\n\t\t\tSubnetwork: containerSubnetwork.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},\n\t\t\tMasterAuthorizedNetworksConfig: nil,\n\t\t\tIpAllocationPolicy: \u0026container.ClusterIpAllocationPolicyArgs{\n\t\t\t\tClusterSecondaryRangeName: containerSubnetwork.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: containerSubnetwork.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\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkPeeringRoutesConfig(ctx, \"peering_gke_routes\", \u0026compute.NetworkPeeringRoutesConfigArgs{\n\t\t\tPeering: pulumi.String(privateCluster.PrivateClusterConfig.ApplyT(func(privateClusterConfig container.ClusterPrivateClusterConfig) (*string, error) {\n\t\t\t\treturn \u0026privateClusterConfig.PeeringName, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tNetwork: containerNetwork.Name,\n\t\t\tImportCustomRoutes: pulumi.Bool(true),\n\t\t\tExportCustomRoutes: pulumi.Bool(true),\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.ClusterPrivateClusterConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterMasterAuthorizedNetworksConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterIpAllocationPolicyArgs;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfig;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfigArgs;\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 containerNetwork = new Network(\"containerNetwork\", NetworkArgs.builder()\n .name(\"container-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var containerSubnetwork = new Subnetwork(\"containerSubnetwork\", SubnetworkArgs.builder()\n .name(\"container-subnetwork\")\n .region(\"us-central1\")\n .network(containerNetwork.name())\n .ipCidrRange(\"10.0.36.0/24\")\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 privateCluster = new Cluster(\"privateCluster\", ClusterArgs.builder()\n .name(\"private-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .network(containerNetwork.name())\n .subnetwork(containerSubnetwork.name())\n .privateClusterConfig(ClusterPrivateClusterConfigArgs.builder()\n .enablePrivateEndpoint(true)\n .enablePrivateNodes(true)\n .masterIpv4CidrBlock(\"10.42.0.0/28\")\n .build())\n .masterAuthorizedNetworksConfig()\n .ipAllocationPolicy(ClusterIpAllocationPolicyArgs.builder()\n .clusterSecondaryRangeName(containerSubnetwork.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[0].rangeName()))\n .servicesSecondaryRangeName(containerSubnetwork.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[1].rangeName()))\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var peeringGkeRoutes = new NetworkPeeringRoutesConfig(\"peeringGkeRoutes\", NetworkPeeringRoutesConfigArgs.builder()\n .peering(privateCluster.privateClusterConfig().applyValue(privateClusterConfig -\u003e privateClusterConfig.peeringName()))\n .network(containerNetwork.name())\n .importCustomRoutes(true)\n .exportCustomRoutes(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peeringGkeRoutes:\n type: gcp:compute:NetworkPeeringRoutesConfig\n name: peering_gke_routes\n properties:\n peering: ${privateCluster.privateClusterConfig.peeringName}\n network: ${containerNetwork.name}\n importCustomRoutes: true\n exportCustomRoutes: true\n containerNetwork:\n type: gcp:compute:Network\n name: container_network\n properties:\n name: container-network\n autoCreateSubnetworks: false\n containerSubnetwork:\n type: gcp:compute:Subnetwork\n name: container_subnetwork\n properties:\n name: container-subnetwork\n region: us-central1\n network: ${containerNetwork.name}\n ipCidrRange: 10.0.36.0/24\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 privateCluster:\n type: gcp:container:Cluster\n name: private_cluster\n properties:\n name: private-cluster\n location: us-central1-a\n initialNodeCount: 1\n network: ${containerNetwork.name}\n subnetwork: ${containerSubnetwork.name}\n privateClusterConfig:\n enablePrivateEndpoint: true\n enablePrivateNodes: true\n masterIpv4CidrBlock: 10.42.0.0/28\n masterAuthorizedNetworksConfig: {}\n ipAllocationPolicy:\n clusterSecondaryRangeName: ${containerSubnetwork.secondaryIpRanges[0].rangeName}\n servicesSecondaryRangeName: ${containerSubnetwork.secondaryIpRanges[1].rangeName}\n deletionProtection: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkPeeringRoutesConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/networks/{{network}}/networkPeerings/{{peering}}`\n\n* `{{project}}/{{network}}/{{peering}}`\n\n* `{{network}}/{{peering}}`\n\nWhen using the `pulumi import` command, NetworkPeeringRoutesConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkPeeringRoutesConfig:NetworkPeeringRoutesConfig default projects/{{project}}/global/networks/{{network}}/networkPeerings/{{peering}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkPeeringRoutesConfig:NetworkPeeringRoutesConfig default {{project}}/{{network}}/{{peering}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkPeeringRoutesConfig:NetworkPeeringRoutesConfig default {{network}}/{{peering}}\n```\n\n", "properties": { "exportCustomRoutes": { "type": "boolean", @@ -153988,7 +153988,7 @@ } }, "gcp:compute/nodeGroup:NodeGroup": { - "description": "Represents a NodeGroup resource to manage a group of sole-tenant nodes.\n\n\nTo get more information about NodeGroup, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/nodeGroups)\n* How-to Guides\n * [Sole-Tenant Nodes](https://cloud.google.com/compute/docs/nodes/)\n\n\u003e **Warning:** Due to limitations of the API, this provider cannot update the\nnumber of nodes in a node group and changes to node group size either\nthrough provider config or through external changes will cause\nthe provider to delete and recreate the node group.\n\n## Example Usage\n\n### Node Group Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst soletenant_tmpl = new gcp.compute.NodeTemplate(\"soletenant-tmpl\", {\n name: \"soletenant-tmpl\",\n region: \"us-central1\",\n nodeType: \"n1-node-96-624\",\n});\nconst nodes = new gcp.compute.NodeGroup(\"nodes\", {\n name: \"soletenant-group\",\n zone: \"us-central1-a\",\n description: \"example google_compute_node_group for the Google Provider\",\n initialSize: 1,\n nodeTemplate: soletenant_tmpl.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsoletenant_tmpl = gcp.compute.NodeTemplate(\"soletenant-tmpl\",\n name=\"soletenant-tmpl\",\n region=\"us-central1\",\n node_type=\"n1-node-96-624\")\nnodes = gcp.compute.NodeGroup(\"nodes\",\n name=\"soletenant-group\",\n zone=\"us-central1-a\",\n description=\"example google_compute_node_group for the Google Provider\",\n initial_size=1,\n node_template=soletenant_tmpl.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 soletenant_tmpl = new Gcp.Compute.NodeTemplate(\"soletenant-tmpl\", new()\n {\n Name = \"soletenant-tmpl\",\n Region = \"us-central1\",\n NodeType = \"n1-node-96-624\",\n });\n\n var nodes = new Gcp.Compute.NodeGroup(\"nodes\", new()\n {\n Name = \"soletenant-group\",\n Zone = \"us-central1-a\",\n Description = \"example google_compute_node_group for the Google Provider\",\n InitialSize = 1,\n NodeTemplate = soletenant_tmpl.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewNodeTemplate(ctx, \"soletenant-tmpl\", \u0026compute.NodeTemplateArgs{\n\t\t\tName: pulumi.String(\"soletenant-tmpl\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNodeType: pulumi.String(\"n1-node-96-624\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNodeGroup(ctx, \"nodes\", \u0026compute.NodeGroupArgs{\n\t\t\tName: pulumi.String(\"soletenant-group\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"example google_compute_node_group for the Google Provider\"),\n\t\t\tInitialSize: pulumi.Int(1),\n\t\t\tNodeTemplate: soletenant_tmpl.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.NodeTemplate;\nimport com.pulumi.gcp.compute.NodeTemplateArgs;\nimport com.pulumi.gcp.compute.NodeGroup;\nimport com.pulumi.gcp.compute.NodeGroupArgs;\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 soletenant_tmpl = new NodeTemplate(\"soletenant-tmpl\", NodeTemplateArgs.builder()\n .name(\"soletenant-tmpl\")\n .region(\"us-central1\")\n .nodeType(\"n1-node-96-624\")\n .build());\n\n var nodes = new NodeGroup(\"nodes\", NodeGroupArgs.builder()\n .name(\"soletenant-group\")\n .zone(\"us-central1-a\")\n .description(\"example google_compute_node_group for the Google Provider\")\n .initialSize(1)\n .nodeTemplate(soletenant_tmpl.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n soletenant-tmpl:\n type: gcp:compute:NodeTemplate\n properties:\n name: soletenant-tmpl\n region: us-central1\n nodeType: n1-node-96-624\n nodes:\n type: gcp:compute:NodeGroup\n properties:\n name: soletenant-group\n zone: us-central1-a\n description: example google_compute_node_group for the Google Provider\n initialSize: 1\n nodeTemplate: ${[\"soletenant-tmpl\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Node Group Maintenance Interval\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst soletenant_tmpl = new gcp.compute.NodeTemplate(\"soletenant-tmpl\", {\n name: \"soletenant-tmpl\",\n region: \"us-central1\",\n nodeType: \"c2-node-60-240\",\n});\nconst nodes = new gcp.compute.NodeGroup(\"nodes\", {\n name: \"soletenant-group\",\n zone: \"us-central1-a\",\n description: \"example google_compute_node_group for Terraform Google Provider\",\n initialSize: 1,\n nodeTemplate: soletenant_tmpl.id,\n maintenanceInterval: \"RECURRENT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsoletenant_tmpl = gcp.compute.NodeTemplate(\"soletenant-tmpl\",\n name=\"soletenant-tmpl\",\n region=\"us-central1\",\n node_type=\"c2-node-60-240\")\nnodes = gcp.compute.NodeGroup(\"nodes\",\n name=\"soletenant-group\",\n zone=\"us-central1-a\",\n description=\"example google_compute_node_group for Terraform Google Provider\",\n initial_size=1,\n node_template=soletenant_tmpl.id,\n maintenance_interval=\"RECURRENT\")\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 soletenant_tmpl = new Gcp.Compute.NodeTemplate(\"soletenant-tmpl\", new()\n {\n Name = \"soletenant-tmpl\",\n Region = \"us-central1\",\n NodeType = \"c2-node-60-240\",\n });\n\n var nodes = new Gcp.Compute.NodeGroup(\"nodes\", new()\n {\n Name = \"soletenant-group\",\n Zone = \"us-central1-a\",\n Description = \"example google_compute_node_group for Terraform Google Provider\",\n InitialSize = 1,\n NodeTemplate = soletenant_tmpl.Id,\n MaintenanceInterval = \"RECURRENT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewNodeTemplate(ctx, \"soletenant-tmpl\", \u0026compute.NodeTemplateArgs{\n\t\t\tName: pulumi.String(\"soletenant-tmpl\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNodeType: pulumi.String(\"c2-node-60-240\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNodeGroup(ctx, \"nodes\", \u0026compute.NodeGroupArgs{\n\t\t\tName: pulumi.String(\"soletenant-group\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"example google_compute_node_group for Terraform Google Provider\"),\n\t\t\tInitialSize: pulumi.Int(1),\n\t\t\tNodeTemplate: soletenant_tmpl.ID(),\n\t\t\tMaintenanceInterval: pulumi.String(\"RECURRENT\"),\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.NodeTemplate;\nimport com.pulumi.gcp.compute.NodeTemplateArgs;\nimport com.pulumi.gcp.compute.NodeGroup;\nimport com.pulumi.gcp.compute.NodeGroupArgs;\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 soletenant_tmpl = new NodeTemplate(\"soletenant-tmpl\", NodeTemplateArgs.builder()\n .name(\"soletenant-tmpl\")\n .region(\"us-central1\")\n .nodeType(\"c2-node-60-240\")\n .build());\n\n var nodes = new NodeGroup(\"nodes\", NodeGroupArgs.builder()\n .name(\"soletenant-group\")\n .zone(\"us-central1-a\")\n .description(\"example google_compute_node_group for Terraform Google Provider\")\n .initialSize(1)\n .nodeTemplate(soletenant_tmpl.id())\n .maintenanceInterval(\"RECURRENT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n soletenant-tmpl:\n type: gcp:compute:NodeTemplate\n properties:\n name: soletenant-tmpl\n region: us-central1\n nodeType: c2-node-60-240\n nodes:\n type: gcp:compute:NodeGroup\n properties:\n name: soletenant-group\n zone: us-central1-a\n description: example google_compute_node_group for Terraform Google Provider\n initialSize: 1\n nodeTemplate: ${[\"soletenant-tmpl\"].id}\n maintenanceInterval: RECURRENT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Node Group Autoscaling Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst soletenant_tmpl = new gcp.compute.NodeTemplate(\"soletenant-tmpl\", {\n name: \"soletenant-tmpl\",\n region: \"us-central1\",\n nodeType: \"n1-node-96-624\",\n});\nconst nodes = new gcp.compute.NodeGroup(\"nodes\", {\n name: \"soletenant-group\",\n zone: \"us-central1-a\",\n description: \"example google_compute_node_group for Google Provider\",\n maintenancePolicy: \"RESTART_IN_PLACE\",\n maintenanceWindow: {\n startTime: \"08:00\",\n },\n initialSize: 1,\n nodeTemplate: soletenant_tmpl.id,\n autoscalingPolicy: {\n mode: \"ONLY_SCALE_OUT\",\n minNodes: 1,\n maxNodes: 10,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsoletenant_tmpl = gcp.compute.NodeTemplate(\"soletenant-tmpl\",\n name=\"soletenant-tmpl\",\n region=\"us-central1\",\n node_type=\"n1-node-96-624\")\nnodes = gcp.compute.NodeGroup(\"nodes\",\n name=\"soletenant-group\",\n zone=\"us-central1-a\",\n description=\"example google_compute_node_group for Google Provider\",\n maintenance_policy=\"RESTART_IN_PLACE\",\n maintenance_window={\n \"startTime\": \"08:00\",\n },\n initial_size=1,\n node_template=soletenant_tmpl.id,\n autoscaling_policy={\n \"mode\": \"ONLY_SCALE_OUT\",\n \"minNodes\": 1,\n \"maxNodes\": 10,\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 soletenant_tmpl = new Gcp.Compute.NodeTemplate(\"soletenant-tmpl\", new()\n {\n Name = \"soletenant-tmpl\",\n Region = \"us-central1\",\n NodeType = \"n1-node-96-624\",\n });\n\n var nodes = new Gcp.Compute.NodeGroup(\"nodes\", new()\n {\n Name = \"soletenant-group\",\n Zone = \"us-central1-a\",\n Description = \"example google_compute_node_group for Google Provider\",\n MaintenancePolicy = \"RESTART_IN_PLACE\",\n MaintenanceWindow = new Gcp.Compute.Inputs.NodeGroupMaintenanceWindowArgs\n {\n StartTime = \"08:00\",\n },\n InitialSize = 1,\n NodeTemplate = soletenant_tmpl.Id,\n AutoscalingPolicy = new Gcp.Compute.Inputs.NodeGroupAutoscalingPolicyArgs\n {\n Mode = \"ONLY_SCALE_OUT\",\n MinNodes = 1,\n MaxNodes = 10,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewNodeTemplate(ctx, \"soletenant-tmpl\", \u0026compute.NodeTemplateArgs{\n\t\t\tName: pulumi.String(\"soletenant-tmpl\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNodeType: pulumi.String(\"n1-node-96-624\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNodeGroup(ctx, \"nodes\", \u0026compute.NodeGroupArgs{\n\t\t\tName: pulumi.String(\"soletenant-group\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"example google_compute_node_group for Google Provider\"),\n\t\t\tMaintenancePolicy: pulumi.String(\"RESTART_IN_PLACE\"),\n\t\t\tMaintenanceWindow: \u0026compute.NodeGroupMaintenanceWindowArgs{\n\t\t\t\tStartTime: pulumi.String(\"08:00\"),\n\t\t\t},\n\t\t\tInitialSize: pulumi.Int(1),\n\t\t\tNodeTemplate: soletenant_tmpl.ID(),\n\t\t\tAutoscalingPolicy: \u0026compute.NodeGroupAutoscalingPolicyArgs{\n\t\t\t\tMode: pulumi.String(\"ONLY_SCALE_OUT\"),\n\t\t\t\tMinNodes: pulumi.Int(1),\n\t\t\t\tMaxNodes: pulumi.Int(10),\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.NodeTemplate;\nimport com.pulumi.gcp.compute.NodeTemplateArgs;\nimport com.pulumi.gcp.compute.NodeGroup;\nimport com.pulumi.gcp.compute.NodeGroupArgs;\nimport com.pulumi.gcp.compute.inputs.NodeGroupMaintenanceWindowArgs;\nimport com.pulumi.gcp.compute.inputs.NodeGroupAutoscalingPolicyArgs;\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 soletenant_tmpl = new NodeTemplate(\"soletenant-tmpl\", NodeTemplateArgs.builder()\n .name(\"soletenant-tmpl\")\n .region(\"us-central1\")\n .nodeType(\"n1-node-96-624\")\n .build());\n\n var nodes = new NodeGroup(\"nodes\", NodeGroupArgs.builder()\n .name(\"soletenant-group\")\n .zone(\"us-central1-a\")\n .description(\"example google_compute_node_group for Google Provider\")\n .maintenancePolicy(\"RESTART_IN_PLACE\")\n .maintenanceWindow(NodeGroupMaintenanceWindowArgs.builder()\n .startTime(\"08:00\")\n .build())\n .initialSize(1)\n .nodeTemplate(soletenant_tmpl.id())\n .autoscalingPolicy(NodeGroupAutoscalingPolicyArgs.builder()\n .mode(\"ONLY_SCALE_OUT\")\n .minNodes(1)\n .maxNodes(10)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n soletenant-tmpl:\n type: gcp:compute:NodeTemplate\n properties:\n name: soletenant-tmpl\n region: us-central1\n nodeType: n1-node-96-624\n nodes:\n type: gcp:compute:NodeGroup\n properties:\n name: soletenant-group\n zone: us-central1-a\n description: example google_compute_node_group for Google Provider\n maintenancePolicy: RESTART_IN_PLACE\n maintenanceWindow:\n startTime: 08:00\n initialSize: 1\n nodeTemplate: ${[\"soletenant-tmpl\"].id}\n autoscalingPolicy:\n mode: ONLY_SCALE_OUT\n minNodes: 1\n maxNodes: 10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Node Group Share Settings\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst guestProject = new gcp.organizations.Project(\"guest_project\", {\n projectId: \"project-id\",\n name: \"project-name\",\n orgId: \"123456789\",\n});\nconst soletenant_tmpl = new gcp.compute.NodeTemplate(\"soletenant-tmpl\", {\n name: \"soletenant-tmpl\",\n region: \"us-central1\",\n nodeType: \"n1-node-96-624\",\n});\nconst nodes = new gcp.compute.NodeGroup(\"nodes\", {\n name: \"soletenant-group\",\n zone: \"us-central1-f\",\n description: \"example google_compute_node_group for Terraform Google Provider\",\n initialSize: 1,\n nodeTemplate: soletenant_tmpl.id,\n shareSettings: {\n shareType: \"SPECIFIC_PROJECTS\",\n projectMaps: [{\n id: guestProject.projectId,\n projectId: guestProject.projectId,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nguest_project = gcp.organizations.Project(\"guest_project\",\n project_id=\"project-id\",\n name=\"project-name\",\n org_id=\"123456789\")\nsoletenant_tmpl = gcp.compute.NodeTemplate(\"soletenant-tmpl\",\n name=\"soletenant-tmpl\",\n region=\"us-central1\",\n node_type=\"n1-node-96-624\")\nnodes = gcp.compute.NodeGroup(\"nodes\",\n name=\"soletenant-group\",\n zone=\"us-central1-f\",\n description=\"example google_compute_node_group for Terraform Google Provider\",\n initial_size=1,\n node_template=soletenant_tmpl.id,\n share_settings={\n \"shareType\": \"SPECIFIC_PROJECTS\",\n \"projectMaps\": [{\n \"id\": guest_project.project_id,\n \"projectId\": guest_project.project_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 guestProject = new Gcp.Organizations.Project(\"guest_project\", new()\n {\n ProjectId = \"project-id\",\n Name = \"project-name\",\n OrgId = \"123456789\",\n });\n\n var soletenant_tmpl = new Gcp.Compute.NodeTemplate(\"soletenant-tmpl\", new()\n {\n Name = \"soletenant-tmpl\",\n Region = \"us-central1\",\n NodeType = \"n1-node-96-624\",\n });\n\n var nodes = new Gcp.Compute.NodeGroup(\"nodes\", new()\n {\n Name = \"soletenant-group\",\n Zone = \"us-central1-f\",\n Description = \"example google_compute_node_group for Terraform Google Provider\",\n InitialSize = 1,\n NodeTemplate = soletenant_tmpl.Id,\n ShareSettings = new Gcp.Compute.Inputs.NodeGroupShareSettingsArgs\n {\n ShareType = \"SPECIFIC_PROJECTS\",\n ProjectMaps = new[]\n {\n new Gcp.Compute.Inputs.NodeGroupShareSettingsProjectMapArgs\n {\n Id = guestProject.ProjectId,\n ProjectId = guestProject.ProjectId,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tguestProject, err := organizations.NewProject(ctx, \"guest_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"project-id\"),\n\t\t\tName: pulumi.String(\"project-name\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNodeTemplate(ctx, \"soletenant-tmpl\", \u0026compute.NodeTemplateArgs{\n\t\t\tName: pulumi.String(\"soletenant-tmpl\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNodeType: pulumi.String(\"n1-node-96-624\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNodeGroup(ctx, \"nodes\", \u0026compute.NodeGroupArgs{\n\t\t\tName: pulumi.String(\"soletenant-group\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tDescription: pulumi.String(\"example google_compute_node_group for Terraform Google Provider\"),\n\t\t\tInitialSize: pulumi.Int(1),\n\t\t\tNodeTemplate: soletenant_tmpl.ID(),\n\t\t\tShareSettings: \u0026compute.NodeGroupShareSettingsArgs{\n\t\t\t\tShareType: pulumi.String(\"SPECIFIC_PROJECTS\"),\n\t\t\t\tProjectMaps: compute.NodeGroupShareSettingsProjectMapArray{\n\t\t\t\t\t\u0026compute.NodeGroupShareSettingsProjectMapArgs{\n\t\t\t\t\t\tId: guestProject.ProjectId,\n\t\t\t\t\t\tProjectId: guestProject.ProjectId,\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.compute.NodeTemplate;\nimport com.pulumi.gcp.compute.NodeTemplateArgs;\nimport com.pulumi.gcp.compute.NodeGroup;\nimport com.pulumi.gcp.compute.NodeGroupArgs;\nimport com.pulumi.gcp.compute.inputs.NodeGroupShareSettingsArgs;\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 guestProject = new Project(\"guestProject\", ProjectArgs.builder()\n .projectId(\"project-id\")\n .name(\"project-name\")\n .orgId(\"123456789\")\n .build());\n\n var soletenant_tmpl = new NodeTemplate(\"soletenant-tmpl\", NodeTemplateArgs.builder()\n .name(\"soletenant-tmpl\")\n .region(\"us-central1\")\n .nodeType(\"n1-node-96-624\")\n .build());\n\n var nodes = new NodeGroup(\"nodes\", NodeGroupArgs.builder()\n .name(\"soletenant-group\")\n .zone(\"us-central1-f\")\n .description(\"example google_compute_node_group for Terraform Google Provider\")\n .initialSize(1)\n .nodeTemplate(soletenant_tmpl.id())\n .shareSettings(NodeGroupShareSettingsArgs.builder()\n .shareType(\"SPECIFIC_PROJECTS\")\n .projectMaps(NodeGroupShareSettingsProjectMapArgs.builder()\n .id(guestProject.projectId())\n .projectId(guestProject.projectId())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n guestProject:\n type: gcp:organizations:Project\n name: guest_project\n properties:\n projectId: project-id\n name: project-name\n orgId: '123456789'\n soletenant-tmpl:\n type: gcp:compute:NodeTemplate\n properties:\n name: soletenant-tmpl\n region: us-central1\n nodeType: n1-node-96-624\n nodes:\n type: gcp:compute:NodeGroup\n properties:\n name: soletenant-group\n zone: us-central1-f\n description: example google_compute_node_group for Terraform Google Provider\n initialSize: 1\n nodeTemplate: ${[\"soletenant-tmpl\"].id}\n shareSettings:\n shareType: SPECIFIC_PROJECTS\n projectMaps:\n - id: ${guestProject.projectId}\n projectId: ${guestProject.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNodeGroup can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/nodeGroups/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, NodeGroup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/nodeGroup:NodeGroup default projects/{{project}}/zones/{{zone}}/nodeGroups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/nodeGroup:NodeGroup default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/nodeGroup:NodeGroup default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/nodeGroup:NodeGroup default {{name}}\n```\n\n", + "description": "Represents a NodeGroup resource to manage a group of sole-tenant nodes.\n\n\nTo get more information about NodeGroup, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/nodeGroups)\n* How-to Guides\n * [Sole-Tenant Nodes](https://cloud.google.com/compute/docs/nodes/)\n\n\u003e **Warning:** Due to limitations of the API, this provider cannot update the\nnumber of nodes in a node group and changes to node group size either\nthrough provider config or through external changes will cause\nthe provider to delete and recreate the node group.\n\n## Example Usage\n\n### Node Group Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst soletenant_tmpl = new gcp.compute.NodeTemplate(\"soletenant-tmpl\", {\n name: \"soletenant-tmpl\",\n region: \"us-central1\",\n nodeType: \"n1-node-96-624\",\n});\nconst nodes = new gcp.compute.NodeGroup(\"nodes\", {\n name: \"soletenant-group\",\n zone: \"us-central1-a\",\n description: \"example google_compute_node_group for the Google Provider\",\n initialSize: 1,\n nodeTemplate: soletenant_tmpl.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsoletenant_tmpl = gcp.compute.NodeTemplate(\"soletenant-tmpl\",\n name=\"soletenant-tmpl\",\n region=\"us-central1\",\n node_type=\"n1-node-96-624\")\nnodes = gcp.compute.NodeGroup(\"nodes\",\n name=\"soletenant-group\",\n zone=\"us-central1-a\",\n description=\"example google_compute_node_group for the Google Provider\",\n initial_size=1,\n node_template=soletenant_tmpl.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 soletenant_tmpl = new Gcp.Compute.NodeTemplate(\"soletenant-tmpl\", new()\n {\n Name = \"soletenant-tmpl\",\n Region = \"us-central1\",\n NodeType = \"n1-node-96-624\",\n });\n\n var nodes = new Gcp.Compute.NodeGroup(\"nodes\", new()\n {\n Name = \"soletenant-group\",\n Zone = \"us-central1-a\",\n Description = \"example google_compute_node_group for the Google Provider\",\n InitialSize = 1,\n NodeTemplate = soletenant_tmpl.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewNodeTemplate(ctx, \"soletenant-tmpl\", \u0026compute.NodeTemplateArgs{\n\t\t\tName: pulumi.String(\"soletenant-tmpl\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNodeType: pulumi.String(\"n1-node-96-624\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNodeGroup(ctx, \"nodes\", \u0026compute.NodeGroupArgs{\n\t\t\tName: pulumi.String(\"soletenant-group\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"example google_compute_node_group for the Google Provider\"),\n\t\t\tInitialSize: pulumi.Int(1),\n\t\t\tNodeTemplate: soletenant_tmpl.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.NodeTemplate;\nimport com.pulumi.gcp.compute.NodeTemplateArgs;\nimport com.pulumi.gcp.compute.NodeGroup;\nimport com.pulumi.gcp.compute.NodeGroupArgs;\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 soletenant_tmpl = new NodeTemplate(\"soletenant-tmpl\", NodeTemplateArgs.builder()\n .name(\"soletenant-tmpl\")\n .region(\"us-central1\")\n .nodeType(\"n1-node-96-624\")\n .build());\n\n var nodes = new NodeGroup(\"nodes\", NodeGroupArgs.builder()\n .name(\"soletenant-group\")\n .zone(\"us-central1-a\")\n .description(\"example google_compute_node_group for the Google Provider\")\n .initialSize(1)\n .nodeTemplate(soletenant_tmpl.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n soletenant-tmpl:\n type: gcp:compute:NodeTemplate\n properties:\n name: soletenant-tmpl\n region: us-central1\n nodeType: n1-node-96-624\n nodes:\n type: gcp:compute:NodeGroup\n properties:\n name: soletenant-group\n zone: us-central1-a\n description: example google_compute_node_group for the Google Provider\n initialSize: 1\n nodeTemplate: ${[\"soletenant-tmpl\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Node Group Maintenance Interval\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst soletenant_tmpl = new gcp.compute.NodeTemplate(\"soletenant-tmpl\", {\n name: \"soletenant-tmpl\",\n region: \"us-central1\",\n nodeType: \"c2-node-60-240\",\n});\nconst nodes = new gcp.compute.NodeGroup(\"nodes\", {\n name: \"soletenant-group\",\n zone: \"us-central1-a\",\n description: \"example google_compute_node_group for Terraform Google Provider\",\n initialSize: 1,\n nodeTemplate: soletenant_tmpl.id,\n maintenanceInterval: \"RECURRENT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsoletenant_tmpl = gcp.compute.NodeTemplate(\"soletenant-tmpl\",\n name=\"soletenant-tmpl\",\n region=\"us-central1\",\n node_type=\"c2-node-60-240\")\nnodes = gcp.compute.NodeGroup(\"nodes\",\n name=\"soletenant-group\",\n zone=\"us-central1-a\",\n description=\"example google_compute_node_group for Terraform Google Provider\",\n initial_size=1,\n node_template=soletenant_tmpl.id,\n maintenance_interval=\"RECURRENT\")\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 soletenant_tmpl = new Gcp.Compute.NodeTemplate(\"soletenant-tmpl\", new()\n {\n Name = \"soletenant-tmpl\",\n Region = \"us-central1\",\n NodeType = \"c2-node-60-240\",\n });\n\n var nodes = new Gcp.Compute.NodeGroup(\"nodes\", new()\n {\n Name = \"soletenant-group\",\n Zone = \"us-central1-a\",\n Description = \"example google_compute_node_group for Terraform Google Provider\",\n InitialSize = 1,\n NodeTemplate = soletenant_tmpl.Id,\n MaintenanceInterval = \"RECURRENT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewNodeTemplate(ctx, \"soletenant-tmpl\", \u0026compute.NodeTemplateArgs{\n\t\t\tName: pulumi.String(\"soletenant-tmpl\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNodeType: pulumi.String(\"c2-node-60-240\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNodeGroup(ctx, \"nodes\", \u0026compute.NodeGroupArgs{\n\t\t\tName: pulumi.String(\"soletenant-group\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"example google_compute_node_group for Terraform Google Provider\"),\n\t\t\tInitialSize: pulumi.Int(1),\n\t\t\tNodeTemplate: soletenant_tmpl.ID(),\n\t\t\tMaintenanceInterval: pulumi.String(\"RECURRENT\"),\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.NodeTemplate;\nimport com.pulumi.gcp.compute.NodeTemplateArgs;\nimport com.pulumi.gcp.compute.NodeGroup;\nimport com.pulumi.gcp.compute.NodeGroupArgs;\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 soletenant_tmpl = new NodeTemplate(\"soletenant-tmpl\", NodeTemplateArgs.builder()\n .name(\"soletenant-tmpl\")\n .region(\"us-central1\")\n .nodeType(\"c2-node-60-240\")\n .build());\n\n var nodes = new NodeGroup(\"nodes\", NodeGroupArgs.builder()\n .name(\"soletenant-group\")\n .zone(\"us-central1-a\")\n .description(\"example google_compute_node_group for Terraform Google Provider\")\n .initialSize(1)\n .nodeTemplate(soletenant_tmpl.id())\n .maintenanceInterval(\"RECURRENT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n soletenant-tmpl:\n type: gcp:compute:NodeTemplate\n properties:\n name: soletenant-tmpl\n region: us-central1\n nodeType: c2-node-60-240\n nodes:\n type: gcp:compute:NodeGroup\n properties:\n name: soletenant-group\n zone: us-central1-a\n description: example google_compute_node_group for Terraform Google Provider\n initialSize: 1\n nodeTemplate: ${[\"soletenant-tmpl\"].id}\n maintenanceInterval: RECURRENT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Node Group Autoscaling Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst soletenant_tmpl = new gcp.compute.NodeTemplate(\"soletenant-tmpl\", {\n name: \"soletenant-tmpl\",\n region: \"us-central1\",\n nodeType: \"n1-node-96-624\",\n});\nconst nodes = new gcp.compute.NodeGroup(\"nodes\", {\n name: \"soletenant-group\",\n zone: \"us-central1-a\",\n description: \"example google_compute_node_group for Google Provider\",\n maintenancePolicy: \"RESTART_IN_PLACE\",\n maintenanceWindow: {\n startTime: \"08:00\",\n },\n initialSize: 1,\n nodeTemplate: soletenant_tmpl.id,\n autoscalingPolicy: {\n mode: \"ONLY_SCALE_OUT\",\n minNodes: 1,\n maxNodes: 10,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsoletenant_tmpl = gcp.compute.NodeTemplate(\"soletenant-tmpl\",\n name=\"soletenant-tmpl\",\n region=\"us-central1\",\n node_type=\"n1-node-96-624\")\nnodes = gcp.compute.NodeGroup(\"nodes\",\n name=\"soletenant-group\",\n zone=\"us-central1-a\",\n description=\"example google_compute_node_group for Google Provider\",\n maintenance_policy=\"RESTART_IN_PLACE\",\n maintenance_window={\n \"start_time\": \"08:00\",\n },\n initial_size=1,\n node_template=soletenant_tmpl.id,\n autoscaling_policy={\n \"mode\": \"ONLY_SCALE_OUT\",\n \"min_nodes\": 1,\n \"max_nodes\": 10,\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 soletenant_tmpl = new Gcp.Compute.NodeTemplate(\"soletenant-tmpl\", new()\n {\n Name = \"soletenant-tmpl\",\n Region = \"us-central1\",\n NodeType = \"n1-node-96-624\",\n });\n\n var nodes = new Gcp.Compute.NodeGroup(\"nodes\", new()\n {\n Name = \"soletenant-group\",\n Zone = \"us-central1-a\",\n Description = \"example google_compute_node_group for Google Provider\",\n MaintenancePolicy = \"RESTART_IN_PLACE\",\n MaintenanceWindow = new Gcp.Compute.Inputs.NodeGroupMaintenanceWindowArgs\n {\n StartTime = \"08:00\",\n },\n InitialSize = 1,\n NodeTemplate = soletenant_tmpl.Id,\n AutoscalingPolicy = new Gcp.Compute.Inputs.NodeGroupAutoscalingPolicyArgs\n {\n Mode = \"ONLY_SCALE_OUT\",\n MinNodes = 1,\n MaxNodes = 10,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewNodeTemplate(ctx, \"soletenant-tmpl\", \u0026compute.NodeTemplateArgs{\n\t\t\tName: pulumi.String(\"soletenant-tmpl\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNodeType: pulumi.String(\"n1-node-96-624\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNodeGroup(ctx, \"nodes\", \u0026compute.NodeGroupArgs{\n\t\t\tName: pulumi.String(\"soletenant-group\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"example google_compute_node_group for Google Provider\"),\n\t\t\tMaintenancePolicy: pulumi.String(\"RESTART_IN_PLACE\"),\n\t\t\tMaintenanceWindow: \u0026compute.NodeGroupMaintenanceWindowArgs{\n\t\t\t\tStartTime: pulumi.String(\"08:00\"),\n\t\t\t},\n\t\t\tInitialSize: pulumi.Int(1),\n\t\t\tNodeTemplate: soletenant_tmpl.ID(),\n\t\t\tAutoscalingPolicy: \u0026compute.NodeGroupAutoscalingPolicyArgs{\n\t\t\t\tMode: pulumi.String(\"ONLY_SCALE_OUT\"),\n\t\t\t\tMinNodes: pulumi.Int(1),\n\t\t\t\tMaxNodes: pulumi.Int(10),\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.NodeTemplate;\nimport com.pulumi.gcp.compute.NodeTemplateArgs;\nimport com.pulumi.gcp.compute.NodeGroup;\nimport com.pulumi.gcp.compute.NodeGroupArgs;\nimport com.pulumi.gcp.compute.inputs.NodeGroupMaintenanceWindowArgs;\nimport com.pulumi.gcp.compute.inputs.NodeGroupAutoscalingPolicyArgs;\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 soletenant_tmpl = new NodeTemplate(\"soletenant-tmpl\", NodeTemplateArgs.builder()\n .name(\"soletenant-tmpl\")\n .region(\"us-central1\")\n .nodeType(\"n1-node-96-624\")\n .build());\n\n var nodes = new NodeGroup(\"nodes\", NodeGroupArgs.builder()\n .name(\"soletenant-group\")\n .zone(\"us-central1-a\")\n .description(\"example google_compute_node_group for Google Provider\")\n .maintenancePolicy(\"RESTART_IN_PLACE\")\n .maintenanceWindow(NodeGroupMaintenanceWindowArgs.builder()\n .startTime(\"08:00\")\n .build())\n .initialSize(1)\n .nodeTemplate(soletenant_tmpl.id())\n .autoscalingPolicy(NodeGroupAutoscalingPolicyArgs.builder()\n .mode(\"ONLY_SCALE_OUT\")\n .minNodes(1)\n .maxNodes(10)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n soletenant-tmpl:\n type: gcp:compute:NodeTemplate\n properties:\n name: soletenant-tmpl\n region: us-central1\n nodeType: n1-node-96-624\n nodes:\n type: gcp:compute:NodeGroup\n properties:\n name: soletenant-group\n zone: us-central1-a\n description: example google_compute_node_group for Google Provider\n maintenancePolicy: RESTART_IN_PLACE\n maintenanceWindow:\n startTime: 08:00\n initialSize: 1\n nodeTemplate: ${[\"soletenant-tmpl\"].id}\n autoscalingPolicy:\n mode: ONLY_SCALE_OUT\n minNodes: 1\n maxNodes: 10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Node Group Share Settings\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst guestProject = new gcp.organizations.Project(\"guest_project\", {\n projectId: \"project-id\",\n name: \"project-name\",\n orgId: \"123456789\",\n});\nconst soletenant_tmpl = new gcp.compute.NodeTemplate(\"soletenant-tmpl\", {\n name: \"soletenant-tmpl\",\n region: \"us-central1\",\n nodeType: \"n1-node-96-624\",\n});\nconst nodes = new gcp.compute.NodeGroup(\"nodes\", {\n name: \"soletenant-group\",\n zone: \"us-central1-f\",\n description: \"example google_compute_node_group for Terraform Google Provider\",\n initialSize: 1,\n nodeTemplate: soletenant_tmpl.id,\n shareSettings: {\n shareType: \"SPECIFIC_PROJECTS\",\n projectMaps: [{\n id: guestProject.projectId,\n projectId: guestProject.projectId,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nguest_project = gcp.organizations.Project(\"guest_project\",\n project_id=\"project-id\",\n name=\"project-name\",\n org_id=\"123456789\")\nsoletenant_tmpl = gcp.compute.NodeTemplate(\"soletenant-tmpl\",\n name=\"soletenant-tmpl\",\n region=\"us-central1\",\n node_type=\"n1-node-96-624\")\nnodes = gcp.compute.NodeGroup(\"nodes\",\n name=\"soletenant-group\",\n zone=\"us-central1-f\",\n description=\"example google_compute_node_group for Terraform Google Provider\",\n initial_size=1,\n node_template=soletenant_tmpl.id,\n share_settings={\n \"share_type\": \"SPECIFIC_PROJECTS\",\n \"project_maps\": [{\n \"id\": guest_project.project_id,\n \"project_id\": guest_project.project_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 guestProject = new Gcp.Organizations.Project(\"guest_project\", new()\n {\n ProjectId = \"project-id\",\n Name = \"project-name\",\n OrgId = \"123456789\",\n });\n\n var soletenant_tmpl = new Gcp.Compute.NodeTemplate(\"soletenant-tmpl\", new()\n {\n Name = \"soletenant-tmpl\",\n Region = \"us-central1\",\n NodeType = \"n1-node-96-624\",\n });\n\n var nodes = new Gcp.Compute.NodeGroup(\"nodes\", new()\n {\n Name = \"soletenant-group\",\n Zone = \"us-central1-f\",\n Description = \"example google_compute_node_group for Terraform Google Provider\",\n InitialSize = 1,\n NodeTemplate = soletenant_tmpl.Id,\n ShareSettings = new Gcp.Compute.Inputs.NodeGroupShareSettingsArgs\n {\n ShareType = \"SPECIFIC_PROJECTS\",\n ProjectMaps = new[]\n {\n new Gcp.Compute.Inputs.NodeGroupShareSettingsProjectMapArgs\n {\n Id = guestProject.ProjectId,\n ProjectId = guestProject.ProjectId,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tguestProject, err := organizations.NewProject(ctx, \"guest_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"project-id\"),\n\t\t\tName: pulumi.String(\"project-name\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNodeTemplate(ctx, \"soletenant-tmpl\", \u0026compute.NodeTemplateArgs{\n\t\t\tName: pulumi.String(\"soletenant-tmpl\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNodeType: pulumi.String(\"n1-node-96-624\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNodeGroup(ctx, \"nodes\", \u0026compute.NodeGroupArgs{\n\t\t\tName: pulumi.String(\"soletenant-group\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tDescription: pulumi.String(\"example google_compute_node_group for Terraform Google Provider\"),\n\t\t\tInitialSize: pulumi.Int(1),\n\t\t\tNodeTemplate: soletenant_tmpl.ID(),\n\t\t\tShareSettings: \u0026compute.NodeGroupShareSettingsArgs{\n\t\t\t\tShareType: pulumi.String(\"SPECIFIC_PROJECTS\"),\n\t\t\t\tProjectMaps: compute.NodeGroupShareSettingsProjectMapArray{\n\t\t\t\t\t\u0026compute.NodeGroupShareSettingsProjectMapArgs{\n\t\t\t\t\t\tId: guestProject.ProjectId,\n\t\t\t\t\t\tProjectId: guestProject.ProjectId,\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.compute.NodeTemplate;\nimport com.pulumi.gcp.compute.NodeTemplateArgs;\nimport com.pulumi.gcp.compute.NodeGroup;\nimport com.pulumi.gcp.compute.NodeGroupArgs;\nimport com.pulumi.gcp.compute.inputs.NodeGroupShareSettingsArgs;\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 guestProject = new Project(\"guestProject\", ProjectArgs.builder()\n .projectId(\"project-id\")\n .name(\"project-name\")\n .orgId(\"123456789\")\n .build());\n\n var soletenant_tmpl = new NodeTemplate(\"soletenant-tmpl\", NodeTemplateArgs.builder()\n .name(\"soletenant-tmpl\")\n .region(\"us-central1\")\n .nodeType(\"n1-node-96-624\")\n .build());\n\n var nodes = new NodeGroup(\"nodes\", NodeGroupArgs.builder()\n .name(\"soletenant-group\")\n .zone(\"us-central1-f\")\n .description(\"example google_compute_node_group for Terraform Google Provider\")\n .initialSize(1)\n .nodeTemplate(soletenant_tmpl.id())\n .shareSettings(NodeGroupShareSettingsArgs.builder()\n .shareType(\"SPECIFIC_PROJECTS\")\n .projectMaps(NodeGroupShareSettingsProjectMapArgs.builder()\n .id(guestProject.projectId())\n .projectId(guestProject.projectId())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n guestProject:\n type: gcp:organizations:Project\n name: guest_project\n properties:\n projectId: project-id\n name: project-name\n orgId: '123456789'\n soletenant-tmpl:\n type: gcp:compute:NodeTemplate\n properties:\n name: soletenant-tmpl\n region: us-central1\n nodeType: n1-node-96-624\n nodes:\n type: gcp:compute:NodeGroup\n properties:\n name: soletenant-group\n zone: us-central1-f\n description: example google_compute_node_group for Terraform Google Provider\n initialSize: 1\n nodeTemplate: ${[\"soletenant-tmpl\"].id}\n shareSettings:\n shareType: SPECIFIC_PROJECTS\n projectMaps:\n - id: ${guestProject.projectId}\n projectId: ${guestProject.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNodeGroup can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/nodeGroups/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, NodeGroup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/nodeGroup:NodeGroup default projects/{{project}}/zones/{{zone}}/nodeGroups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/nodeGroup:NodeGroup default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/nodeGroup:NodeGroup default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/nodeGroup:NodeGroup default {{name}}\n```\n\n", "properties": { "autoscalingPolicy": { "$ref": "#/types/gcp:compute/NodeGroupAutoscalingPolicy:NodeGroupAutoscalingPolicy", @@ -154439,7 +154439,7 @@ } }, "gcp:compute/organizationSecurityPolicyAssociation:OrganizationSecurityPolicyAssociation": { - "description": "An association for the OrganizationSecurityPolicy.\n\nTo get more information about OrganizationSecurityPolicyAssociation, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/organizationSecurityPolicies/addAssociation)\n* How-to Guides\n * [Associating a policy with the organization or folder](https://cloud.google.com/vpc/docs/using-firewall-policies#associate)\n\n## Example Usage\n\n### Organization Security Policy Association Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst securityPolicyTarget = new gcp.organizations.Folder(\"security_policy_target\", {\n displayName: \"tf-test-secpol\",\n parent: \"organizations/123456789\",\n});\nconst policy = new gcp.compute.OrganizationSecurityPolicy(\"policy\", {\n displayName: \"tf-test\",\n parent: securityPolicyTarget.name,\n});\nconst policyOrganizationSecurityPolicyRule = new gcp.compute.OrganizationSecurityPolicyRule(\"policy\", {\n policyId: policy.id,\n action: \"allow\",\n direction: \"INGRESS\",\n enableLogging: true,\n match: {\n config: {\n srcIpRanges: [\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n ],\n layer4Configs: [\n {\n ipProtocol: \"tcp\",\n ports: [\"22\"],\n },\n {\n ipProtocol: \"icmp\",\n },\n ],\n },\n },\n priority: 100,\n});\nconst policyOrganizationSecurityPolicyAssociation = new gcp.compute.OrganizationSecurityPolicyAssociation(\"policy\", {\n name: \"tf-test\",\n attachmentId: policy.parent,\n policyId: policy.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecurity_policy_target = gcp.organizations.Folder(\"security_policy_target\",\n display_name=\"tf-test-secpol\",\n parent=\"organizations/123456789\")\npolicy = gcp.compute.OrganizationSecurityPolicy(\"policy\",\n display_name=\"tf-test\",\n parent=security_policy_target.name)\npolicy_organization_security_policy_rule = gcp.compute.OrganizationSecurityPolicyRule(\"policy\",\n policy_id=policy.id,\n action=\"allow\",\n direction=\"INGRESS\",\n enable_logging=True,\n match={\n \"config\": {\n \"srcIpRanges\": [\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n ],\n \"layer4Configs\": [\n {\n \"ipProtocol\": \"tcp\",\n \"ports\": [\"22\"],\n },\n {\n \"ipProtocol\": \"icmp\",\n },\n ],\n },\n },\n priority=100)\npolicy_organization_security_policy_association = gcp.compute.OrganizationSecurityPolicyAssociation(\"policy\",\n name=\"tf-test\",\n attachment_id=policy.parent,\n policy_id=policy.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 securityPolicyTarget = new Gcp.Organizations.Folder(\"security_policy_target\", new()\n {\n DisplayName = \"tf-test-secpol\",\n Parent = \"organizations/123456789\",\n });\n\n var policy = new Gcp.Compute.OrganizationSecurityPolicy(\"policy\", new()\n {\n DisplayName = \"tf-test\",\n Parent = securityPolicyTarget.Name,\n });\n\n var policyOrganizationSecurityPolicyRule = new Gcp.Compute.OrganizationSecurityPolicyRule(\"policy\", new()\n {\n PolicyId = policy.Id,\n Action = \"allow\",\n Direction = \"INGRESS\",\n EnableLogging = true,\n Match = new Gcp.Compute.Inputs.OrganizationSecurityPolicyRuleMatchArgs\n {\n Config = new Gcp.Compute.Inputs.OrganizationSecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n },\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs\n {\n IpProtocol = \"tcp\",\n Ports = new[]\n {\n \"22\",\n },\n },\n new Gcp.Compute.Inputs.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs\n {\n IpProtocol = \"icmp\",\n },\n },\n },\n },\n Priority = 100,\n });\n\n var policyOrganizationSecurityPolicyAssociation = new Gcp.Compute.OrganizationSecurityPolicyAssociation(\"policy\", new()\n {\n Name = \"tf-test\",\n AttachmentId = policy.Parent,\n PolicyId = policy.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsecurityPolicyTarget, err := organizations.NewFolder(ctx, \"security_policy_target\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"tf-test-secpol\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicy, err := compute.NewOrganizationSecurityPolicy(ctx, \"policy\", \u0026compute.OrganizationSecurityPolicyArgs{\n\t\t\tDisplayName: pulumi.String(\"tf-test\"),\n\t\t\tParent: securityPolicyTarget.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewOrganizationSecurityPolicyRule(ctx, \"policy\", \u0026compute.OrganizationSecurityPolicyRuleArgs{\n\t\t\tPolicyId: policy.ID(),\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\tMatch: \u0026compute.OrganizationSecurityPolicyRuleMatchArgs{\n\t\t\t\tConfig: \u0026compute.OrganizationSecurityPolicyRuleMatchConfigArgs{\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\tLayer4Configs: compute.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArray{\n\t\t\t\t\t\t\u0026compute.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs{\n\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"22\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs{\n\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"icmp\"),\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\tPriority: pulumi.Int(100),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewOrganizationSecurityPolicyAssociation(ctx, \"policy\", \u0026compute.OrganizationSecurityPolicyAssociationArgs{\n\t\t\tName: pulumi.String(\"tf-test\"),\n\t\t\tAttachmentId: policy.Parent,\n\t\t\tPolicyId: policy.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.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.compute.OrganizationSecurityPolicy;\nimport com.pulumi.gcp.compute.OrganizationSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.OrganizationSecurityPolicyRule;\nimport com.pulumi.gcp.compute.OrganizationSecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.OrganizationSecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.OrganizationSecurityPolicyRuleMatchConfigArgs;\nimport com.pulumi.gcp.compute.OrganizationSecurityPolicyAssociation;\nimport com.pulumi.gcp.compute.OrganizationSecurityPolicyAssociationArgs;\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 securityPolicyTarget = new Folder(\"securityPolicyTarget\", FolderArgs.builder()\n .displayName(\"tf-test-secpol\")\n .parent(\"organizations/123456789\")\n .build());\n\n var policy = new OrganizationSecurityPolicy(\"policy\", OrganizationSecurityPolicyArgs.builder()\n .displayName(\"tf-test\")\n .parent(securityPolicyTarget.name())\n .build());\n\n var policyOrganizationSecurityPolicyRule = new OrganizationSecurityPolicyRule(\"policyOrganizationSecurityPolicyRule\", OrganizationSecurityPolicyRuleArgs.builder()\n .policyId(policy.id())\n .action(\"allow\")\n .direction(\"INGRESS\")\n .enableLogging(true)\n .match(OrganizationSecurityPolicyRuleMatchArgs.builder()\n .config(OrganizationSecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges( \n \"192.168.0.0/16\",\n \"10.0.0.0/8\")\n .layer4Configs( \n OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs.builder()\n .ipProtocol(\"tcp\")\n .ports(\"22\")\n .build(),\n OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs.builder()\n .ipProtocol(\"icmp\")\n .build())\n .build())\n .build())\n .priority(100)\n .build());\n\n var policyOrganizationSecurityPolicyAssociation = new OrganizationSecurityPolicyAssociation(\"policyOrganizationSecurityPolicyAssociation\", OrganizationSecurityPolicyAssociationArgs.builder()\n .name(\"tf-test\")\n .attachmentId(policy.parent())\n .policyId(policy.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n securityPolicyTarget:\n type: gcp:organizations:Folder\n name: security_policy_target\n properties:\n displayName: tf-test-secpol\n parent: organizations/123456789\n policy:\n type: gcp:compute:OrganizationSecurityPolicy\n properties:\n displayName: tf-test\n parent: ${securityPolicyTarget.name}\n policyOrganizationSecurityPolicyRule:\n type: gcp:compute:OrganizationSecurityPolicyRule\n name: policy\n properties:\n policyId: ${policy.id}\n action: allow\n direction: INGRESS\n enableLogging: true\n match:\n config:\n srcIpRanges:\n - 192.168.0.0/16\n - 10.0.0.0/8\n layer4Configs:\n - ipProtocol: tcp\n ports:\n - '22'\n - ipProtocol: icmp\n priority: 100\n policyOrganizationSecurityPolicyAssociation:\n type: gcp:compute:OrganizationSecurityPolicyAssociation\n name: policy\n properties:\n name: tf-test\n attachmentId: ${policy.parent}\n policyId: ${policy.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganizationSecurityPolicyAssociation can be imported using any of these accepted formats:\n\n* `{{policy_id}}/association/{{name}}`\n\nWhen using the `pulumi import` command, OrganizationSecurityPolicyAssociation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/organizationSecurityPolicyAssociation:OrganizationSecurityPolicyAssociation default {{policy_id}}/association/{{name}}\n```\n\n", + "description": "An association for the OrganizationSecurityPolicy.\n\nTo get more information about OrganizationSecurityPolicyAssociation, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/organizationSecurityPolicies/addAssociation)\n* How-to Guides\n * [Associating a policy with the organization or folder](https://cloud.google.com/vpc/docs/using-firewall-policies#associate)\n\n## Example Usage\n\n### Organization Security Policy Association Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst securityPolicyTarget = new gcp.organizations.Folder(\"security_policy_target\", {\n displayName: \"tf-test-secpol\",\n parent: \"organizations/123456789\",\n});\nconst policy = new gcp.compute.OrganizationSecurityPolicy(\"policy\", {\n displayName: \"tf-test\",\n parent: securityPolicyTarget.name,\n});\nconst policyOrganizationSecurityPolicyRule = new gcp.compute.OrganizationSecurityPolicyRule(\"policy\", {\n policyId: policy.id,\n action: \"allow\",\n direction: \"INGRESS\",\n enableLogging: true,\n match: {\n config: {\n srcIpRanges: [\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n ],\n layer4Configs: [\n {\n ipProtocol: \"tcp\",\n ports: [\"22\"],\n },\n {\n ipProtocol: \"icmp\",\n },\n ],\n },\n },\n priority: 100,\n});\nconst policyOrganizationSecurityPolicyAssociation = new gcp.compute.OrganizationSecurityPolicyAssociation(\"policy\", {\n name: \"tf-test\",\n attachmentId: policy.parent,\n policyId: policy.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecurity_policy_target = gcp.organizations.Folder(\"security_policy_target\",\n display_name=\"tf-test-secpol\",\n parent=\"organizations/123456789\")\npolicy = gcp.compute.OrganizationSecurityPolicy(\"policy\",\n display_name=\"tf-test\",\n parent=security_policy_target.name)\npolicy_organization_security_policy_rule = gcp.compute.OrganizationSecurityPolicyRule(\"policy\",\n policy_id=policy.id,\n action=\"allow\",\n direction=\"INGRESS\",\n enable_logging=True,\n match={\n \"config\": {\n \"src_ip_ranges\": [\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n ],\n \"layer4_configs\": [\n {\n \"ip_protocol\": \"tcp\",\n \"ports\": [\"22\"],\n },\n {\n \"ip_protocol\": \"icmp\",\n },\n ],\n },\n },\n priority=100)\npolicy_organization_security_policy_association = gcp.compute.OrganizationSecurityPolicyAssociation(\"policy\",\n name=\"tf-test\",\n attachment_id=policy.parent,\n policy_id=policy.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 securityPolicyTarget = new Gcp.Organizations.Folder(\"security_policy_target\", new()\n {\n DisplayName = \"tf-test-secpol\",\n Parent = \"organizations/123456789\",\n });\n\n var policy = new Gcp.Compute.OrganizationSecurityPolicy(\"policy\", new()\n {\n DisplayName = \"tf-test\",\n Parent = securityPolicyTarget.Name,\n });\n\n var policyOrganizationSecurityPolicyRule = new Gcp.Compute.OrganizationSecurityPolicyRule(\"policy\", new()\n {\n PolicyId = policy.Id,\n Action = \"allow\",\n Direction = \"INGRESS\",\n EnableLogging = true,\n Match = new Gcp.Compute.Inputs.OrganizationSecurityPolicyRuleMatchArgs\n {\n Config = new Gcp.Compute.Inputs.OrganizationSecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n },\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs\n {\n IpProtocol = \"tcp\",\n Ports = new[]\n {\n \"22\",\n },\n },\n new Gcp.Compute.Inputs.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs\n {\n IpProtocol = \"icmp\",\n },\n },\n },\n },\n Priority = 100,\n });\n\n var policyOrganizationSecurityPolicyAssociation = new Gcp.Compute.OrganizationSecurityPolicyAssociation(\"policy\", new()\n {\n Name = \"tf-test\",\n AttachmentId = policy.Parent,\n PolicyId = policy.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsecurityPolicyTarget, err := organizations.NewFolder(ctx, \"security_policy_target\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"tf-test-secpol\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicy, err := compute.NewOrganizationSecurityPolicy(ctx, \"policy\", \u0026compute.OrganizationSecurityPolicyArgs{\n\t\t\tDisplayName: pulumi.String(\"tf-test\"),\n\t\t\tParent: securityPolicyTarget.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewOrganizationSecurityPolicyRule(ctx, \"policy\", \u0026compute.OrganizationSecurityPolicyRuleArgs{\n\t\t\tPolicyId: policy.ID(),\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\tMatch: \u0026compute.OrganizationSecurityPolicyRuleMatchArgs{\n\t\t\t\tConfig: \u0026compute.OrganizationSecurityPolicyRuleMatchConfigArgs{\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\tLayer4Configs: compute.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArray{\n\t\t\t\t\t\t\u0026compute.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs{\n\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"22\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs{\n\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"icmp\"),\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\tPriority: pulumi.Int(100),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewOrganizationSecurityPolicyAssociation(ctx, \"policy\", \u0026compute.OrganizationSecurityPolicyAssociationArgs{\n\t\t\tName: pulumi.String(\"tf-test\"),\n\t\t\tAttachmentId: policy.Parent,\n\t\t\tPolicyId: policy.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.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.compute.OrganizationSecurityPolicy;\nimport com.pulumi.gcp.compute.OrganizationSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.OrganizationSecurityPolicyRule;\nimport com.pulumi.gcp.compute.OrganizationSecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.OrganizationSecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.OrganizationSecurityPolicyRuleMatchConfigArgs;\nimport com.pulumi.gcp.compute.OrganizationSecurityPolicyAssociation;\nimport com.pulumi.gcp.compute.OrganizationSecurityPolicyAssociationArgs;\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 securityPolicyTarget = new Folder(\"securityPolicyTarget\", FolderArgs.builder()\n .displayName(\"tf-test-secpol\")\n .parent(\"organizations/123456789\")\n .build());\n\n var policy = new OrganizationSecurityPolicy(\"policy\", OrganizationSecurityPolicyArgs.builder()\n .displayName(\"tf-test\")\n .parent(securityPolicyTarget.name())\n .build());\n\n var policyOrganizationSecurityPolicyRule = new OrganizationSecurityPolicyRule(\"policyOrganizationSecurityPolicyRule\", OrganizationSecurityPolicyRuleArgs.builder()\n .policyId(policy.id())\n .action(\"allow\")\n .direction(\"INGRESS\")\n .enableLogging(true)\n .match(OrganizationSecurityPolicyRuleMatchArgs.builder()\n .config(OrganizationSecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges( \n \"192.168.0.0/16\",\n \"10.0.0.0/8\")\n .layer4Configs( \n OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs.builder()\n .ipProtocol(\"tcp\")\n .ports(\"22\")\n .build(),\n OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs.builder()\n .ipProtocol(\"icmp\")\n .build())\n .build())\n .build())\n .priority(100)\n .build());\n\n var policyOrganizationSecurityPolicyAssociation = new OrganizationSecurityPolicyAssociation(\"policyOrganizationSecurityPolicyAssociation\", OrganizationSecurityPolicyAssociationArgs.builder()\n .name(\"tf-test\")\n .attachmentId(policy.parent())\n .policyId(policy.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n securityPolicyTarget:\n type: gcp:organizations:Folder\n name: security_policy_target\n properties:\n displayName: tf-test-secpol\n parent: organizations/123456789\n policy:\n type: gcp:compute:OrganizationSecurityPolicy\n properties:\n displayName: tf-test\n parent: ${securityPolicyTarget.name}\n policyOrganizationSecurityPolicyRule:\n type: gcp:compute:OrganizationSecurityPolicyRule\n name: policy\n properties:\n policyId: ${policy.id}\n action: allow\n direction: INGRESS\n enableLogging: true\n match:\n config:\n srcIpRanges:\n - 192.168.0.0/16\n - 10.0.0.0/8\n layer4Configs:\n - ipProtocol: tcp\n ports:\n - '22'\n - ipProtocol: icmp\n priority: 100\n policyOrganizationSecurityPolicyAssociation:\n type: gcp:compute:OrganizationSecurityPolicyAssociation\n name: policy\n properties:\n name: tf-test\n attachmentId: ${policy.parent}\n policyId: ${policy.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganizationSecurityPolicyAssociation can be imported using any of these accepted formats:\n\n* `{{policy_id}}/association/{{name}}`\n\nWhen using the `pulumi import` command, OrganizationSecurityPolicyAssociation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/organizationSecurityPolicyAssociation:OrganizationSecurityPolicyAssociation default {{policy_id}}/association/{{name}}\n```\n\n", "properties": { "attachmentId": { "type": "string", @@ -154512,7 +154512,7 @@ } }, "gcp:compute/organizationSecurityPolicyRule:OrganizationSecurityPolicyRule": { - "description": "A rule for the OrganizationSecurityPolicy.\n\nTo get more information about OrganizationSecurityPolicyRule, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/organizationSecurityPolicies/addRule)\n* How-to Guides\n * [Creating firewall rules](https://cloud.google.com/vpc/docs/using-firewall-policies#create-rules)\n\n## Example Usage\n\n### Organization Security Policy Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst policy = new gcp.compute.OrganizationSecurityPolicy(\"policy\", {\n displayName: \"tf-test\",\n parent: \"organizations/123456789\",\n});\nconst policyOrganizationSecurityPolicyRule = new gcp.compute.OrganizationSecurityPolicyRule(\"policy\", {\n policyId: policy.id,\n action: \"allow\",\n direction: \"INGRESS\",\n enableLogging: true,\n match: {\n config: {\n srcIpRanges: [\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n ],\n layer4Configs: [\n {\n ipProtocol: \"tcp\",\n ports: [\"22\"],\n },\n {\n ipProtocol: \"icmp\",\n },\n ],\n },\n },\n priority: 100,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npolicy = gcp.compute.OrganizationSecurityPolicy(\"policy\",\n display_name=\"tf-test\",\n parent=\"organizations/123456789\")\npolicy_organization_security_policy_rule = gcp.compute.OrganizationSecurityPolicyRule(\"policy\",\n policy_id=policy.id,\n action=\"allow\",\n direction=\"INGRESS\",\n enable_logging=True,\n match={\n \"config\": {\n \"srcIpRanges\": [\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n ],\n \"layer4Configs\": [\n {\n \"ipProtocol\": \"tcp\",\n \"ports\": [\"22\"],\n },\n {\n \"ipProtocol\": \"icmp\",\n },\n ],\n },\n },\n priority=100)\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 policy = new Gcp.Compute.OrganizationSecurityPolicy(\"policy\", new()\n {\n DisplayName = \"tf-test\",\n Parent = \"organizations/123456789\",\n });\n\n var policyOrganizationSecurityPolicyRule = new Gcp.Compute.OrganizationSecurityPolicyRule(\"policy\", new()\n {\n PolicyId = policy.Id,\n Action = \"allow\",\n Direction = \"INGRESS\",\n EnableLogging = true,\n Match = new Gcp.Compute.Inputs.OrganizationSecurityPolicyRuleMatchArgs\n {\n Config = new Gcp.Compute.Inputs.OrganizationSecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n },\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs\n {\n IpProtocol = \"tcp\",\n Ports = new[]\n {\n \"22\",\n },\n },\n new Gcp.Compute.Inputs.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs\n {\n IpProtocol = \"icmp\",\n },\n },\n },\n },\n Priority = 100,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tpolicy, err := compute.NewOrganizationSecurityPolicy(ctx, \"policy\", \u0026compute.OrganizationSecurityPolicyArgs{\n\t\t\tDisplayName: pulumi.String(\"tf-test\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewOrganizationSecurityPolicyRule(ctx, \"policy\", \u0026compute.OrganizationSecurityPolicyRuleArgs{\n\t\t\tPolicyId: policy.ID(),\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\tMatch: \u0026compute.OrganizationSecurityPolicyRuleMatchArgs{\n\t\t\t\tConfig: \u0026compute.OrganizationSecurityPolicyRuleMatchConfigArgs{\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\tLayer4Configs: compute.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArray{\n\t\t\t\t\t\t\u0026compute.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs{\n\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"22\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs{\n\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"icmp\"),\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\tPriority: pulumi.Int(100),\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.OrganizationSecurityPolicy;\nimport com.pulumi.gcp.compute.OrganizationSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.OrganizationSecurityPolicyRule;\nimport com.pulumi.gcp.compute.OrganizationSecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.OrganizationSecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.OrganizationSecurityPolicyRuleMatchConfigArgs;\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 policy = new OrganizationSecurityPolicy(\"policy\", OrganizationSecurityPolicyArgs.builder()\n .displayName(\"tf-test\")\n .parent(\"organizations/123456789\")\n .build());\n\n var policyOrganizationSecurityPolicyRule = new OrganizationSecurityPolicyRule(\"policyOrganizationSecurityPolicyRule\", OrganizationSecurityPolicyRuleArgs.builder()\n .policyId(policy.id())\n .action(\"allow\")\n .direction(\"INGRESS\")\n .enableLogging(true)\n .match(OrganizationSecurityPolicyRuleMatchArgs.builder()\n .config(OrganizationSecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges( \n \"192.168.0.0/16\",\n \"10.0.0.0/8\")\n .layer4Configs( \n OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs.builder()\n .ipProtocol(\"tcp\")\n .ports(\"22\")\n .build(),\n OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs.builder()\n .ipProtocol(\"icmp\")\n .build())\n .build())\n .build())\n .priority(100)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n policy:\n type: gcp:compute:OrganizationSecurityPolicy\n properties:\n displayName: tf-test\n parent: organizations/123456789\n policyOrganizationSecurityPolicyRule:\n type: gcp:compute:OrganizationSecurityPolicyRule\n name: policy\n properties:\n policyId: ${policy.id}\n action: allow\n direction: INGRESS\n enableLogging: true\n match:\n config:\n srcIpRanges:\n - 192.168.0.0/16\n - 10.0.0.0/8\n layer4Configs:\n - ipProtocol: tcp\n ports:\n - '22'\n - ipProtocol: icmp\n priority: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganizationSecurityPolicyRule can be imported using any of these accepted formats:\n\n* `{{policy_id}}/priority/{{priority}}`\n\nWhen using the `pulumi import` command, OrganizationSecurityPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/organizationSecurityPolicyRule:OrganizationSecurityPolicyRule default {{policy_id}}/priority/{{priority}}\n```\n\n", + "description": "A rule for the OrganizationSecurityPolicy.\n\nTo get more information about OrganizationSecurityPolicyRule, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/organizationSecurityPolicies/addRule)\n* How-to Guides\n * [Creating firewall rules](https://cloud.google.com/vpc/docs/using-firewall-policies#create-rules)\n\n## Example Usage\n\n### Organization Security Policy Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst policy = new gcp.compute.OrganizationSecurityPolicy(\"policy\", {\n displayName: \"tf-test\",\n parent: \"organizations/123456789\",\n});\nconst policyOrganizationSecurityPolicyRule = new gcp.compute.OrganizationSecurityPolicyRule(\"policy\", {\n policyId: policy.id,\n action: \"allow\",\n direction: \"INGRESS\",\n enableLogging: true,\n match: {\n config: {\n srcIpRanges: [\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n ],\n layer4Configs: [\n {\n ipProtocol: \"tcp\",\n ports: [\"22\"],\n },\n {\n ipProtocol: \"icmp\",\n },\n ],\n },\n },\n priority: 100,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npolicy = gcp.compute.OrganizationSecurityPolicy(\"policy\",\n display_name=\"tf-test\",\n parent=\"organizations/123456789\")\npolicy_organization_security_policy_rule = gcp.compute.OrganizationSecurityPolicyRule(\"policy\",\n policy_id=policy.id,\n action=\"allow\",\n direction=\"INGRESS\",\n enable_logging=True,\n match={\n \"config\": {\n \"src_ip_ranges\": [\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n ],\n \"layer4_configs\": [\n {\n \"ip_protocol\": \"tcp\",\n \"ports\": [\"22\"],\n },\n {\n \"ip_protocol\": \"icmp\",\n },\n ],\n },\n },\n priority=100)\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 policy = new Gcp.Compute.OrganizationSecurityPolicy(\"policy\", new()\n {\n DisplayName = \"tf-test\",\n Parent = \"organizations/123456789\",\n });\n\n var policyOrganizationSecurityPolicyRule = new Gcp.Compute.OrganizationSecurityPolicyRule(\"policy\", new()\n {\n PolicyId = policy.Id,\n Action = \"allow\",\n Direction = \"INGRESS\",\n EnableLogging = true,\n Match = new Gcp.Compute.Inputs.OrganizationSecurityPolicyRuleMatchArgs\n {\n Config = new Gcp.Compute.Inputs.OrganizationSecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n },\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs\n {\n IpProtocol = \"tcp\",\n Ports = new[]\n {\n \"22\",\n },\n },\n new Gcp.Compute.Inputs.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs\n {\n IpProtocol = \"icmp\",\n },\n },\n },\n },\n Priority = 100,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tpolicy, err := compute.NewOrganizationSecurityPolicy(ctx, \"policy\", \u0026compute.OrganizationSecurityPolicyArgs{\n\t\t\tDisplayName: pulumi.String(\"tf-test\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewOrganizationSecurityPolicyRule(ctx, \"policy\", \u0026compute.OrganizationSecurityPolicyRuleArgs{\n\t\t\tPolicyId: policy.ID(),\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\tMatch: \u0026compute.OrganizationSecurityPolicyRuleMatchArgs{\n\t\t\t\tConfig: \u0026compute.OrganizationSecurityPolicyRuleMatchConfigArgs{\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\tLayer4Configs: compute.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArray{\n\t\t\t\t\t\t\u0026compute.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs{\n\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"22\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs{\n\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"icmp\"),\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\tPriority: pulumi.Int(100),\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.OrganizationSecurityPolicy;\nimport com.pulumi.gcp.compute.OrganizationSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.OrganizationSecurityPolicyRule;\nimport com.pulumi.gcp.compute.OrganizationSecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.OrganizationSecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.OrganizationSecurityPolicyRuleMatchConfigArgs;\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 policy = new OrganizationSecurityPolicy(\"policy\", OrganizationSecurityPolicyArgs.builder()\n .displayName(\"tf-test\")\n .parent(\"organizations/123456789\")\n .build());\n\n var policyOrganizationSecurityPolicyRule = new OrganizationSecurityPolicyRule(\"policyOrganizationSecurityPolicyRule\", OrganizationSecurityPolicyRuleArgs.builder()\n .policyId(policy.id())\n .action(\"allow\")\n .direction(\"INGRESS\")\n .enableLogging(true)\n .match(OrganizationSecurityPolicyRuleMatchArgs.builder()\n .config(OrganizationSecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges( \n \"192.168.0.0/16\",\n \"10.0.0.0/8\")\n .layer4Configs( \n OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs.builder()\n .ipProtocol(\"tcp\")\n .ports(\"22\")\n .build(),\n OrganizationSecurityPolicyRuleMatchConfigLayer4ConfigArgs.builder()\n .ipProtocol(\"icmp\")\n .build())\n .build())\n .build())\n .priority(100)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n policy:\n type: gcp:compute:OrganizationSecurityPolicy\n properties:\n displayName: tf-test\n parent: organizations/123456789\n policyOrganizationSecurityPolicyRule:\n type: gcp:compute:OrganizationSecurityPolicyRule\n name: policy\n properties:\n policyId: ${policy.id}\n action: allow\n direction: INGRESS\n enableLogging: true\n match:\n config:\n srcIpRanges:\n - 192.168.0.0/16\n - 10.0.0.0/8\n layer4Configs:\n - ipProtocol: tcp\n ports:\n - '22'\n - ipProtocol: icmp\n priority: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganizationSecurityPolicyRule can be imported using any of these accepted formats:\n\n* `{{policy_id}}/priority/{{priority}}`\n\nWhen using the `pulumi import` command, OrganizationSecurityPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/organizationSecurityPolicyRule:OrganizationSecurityPolicyRule default {{policy_id}}/priority/{{priority}}\n```\n\n", "properties": { "action": { "type": "string", @@ -154679,7 +154679,7 @@ } }, "gcp:compute/packetMirroring:PacketMirroring": { - "description": "Packet Mirroring mirrors traffic to and from particular VM instances.\nYou can use the collected traffic to help you detect security threats\nand monitor application performance.\n\n\nTo get more information about PacketMirroring, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/packetMirrorings)\n* How-to Guides\n * [Using Packet Mirroring](https://cloud.google.com/vpc/docs/using-packet-mirroring#creating)\n\n## Example Usage\n\n### Compute Packet Mirroring Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"my-network\"});\nconst mirror = new gcp.compute.Instance(\"mirror\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: _default.id,\n }],\n name: \"my-instance\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"my-subnetwork\",\n network: _default.id,\n ipCidrRange: \"10.2.0.0/16\",\n});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"my-healthcheck\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n name: \"my-service\",\n healthChecks: defaultHealthCheck.id,\n});\nconst defaultForwardingRule = new gcp.compute.ForwardingRule(\"default\", {\n name: \"my-ilb\",\n isMirroringCollector: true,\n ipProtocol: \"TCP\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: defaultRegionBackendService.id,\n allPorts: true,\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n networkTier: \"PREMIUM\",\n}, {\n dependsOn: [defaultSubnetwork],\n});\nconst foobar = new gcp.compute.PacketMirroring(\"foobar\", {\n name: \"my-mirroring\",\n description: \"bar\",\n network: {\n url: _default.id,\n },\n collectorIlb: {\n url: defaultForwardingRule.id,\n },\n mirroredResources: {\n tags: [\"foo\"],\n instances: [{\n url: mirror.id,\n }],\n },\n filter: {\n ipProtocols: [\"tcp\"],\n cidrRanges: [\"0.0.0.0/0\"],\n direction: \"BOTH\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"my-network\")\nmirror = gcp.compute.Instance(\"mirror\",\n network_interfaces=[{\n \"accessConfigs\": [{}],\n \"network\": default.id,\n }],\n name=\"my-instance\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initializeParams\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n })\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"my-subnetwork\",\n network=default.id,\n ip_cidr_range=\"10.2.0.0/16\")\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"my-healthcheck\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n name=\"my-service\",\n health_checks=default_health_check.id)\ndefault_forwarding_rule = gcp.compute.ForwardingRule(\"default\",\n name=\"my-ilb\",\n is_mirroring_collector=True,\n ip_protocol=\"TCP\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=default_region_backend_service.id,\n all_ports=True,\n network=default.id,\n subnetwork=default_subnetwork.id,\n network_tier=\"PREMIUM\",\n opts = pulumi.ResourceOptions(depends_on=[default_subnetwork]))\nfoobar = gcp.compute.PacketMirroring(\"foobar\",\n name=\"my-mirroring\",\n description=\"bar\",\n network={\n \"url\": default.id,\n },\n collector_ilb={\n \"url\": default_forwarding_rule.id,\n },\n mirrored_resources={\n \"tags\": [\"foo\"],\n \"instances\": [{\n \"url\": mirror.id,\n }],\n },\n filter={\n \"ipProtocols\": [\"tcp\"],\n \"cidrRanges\": [\"0.0.0.0/0\"],\n \"direction\": \"BOTH\",\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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n });\n\n var mirror = new Gcp.Compute.Instance(\"mirror\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = @default.Id,\n },\n },\n Name = \"my-instance\",\n MachineType = \"e2-medium\",\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 });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"my-subnetwork\",\n Network = @default.Id,\n IpCidrRange = \"10.2.0.0/16\",\n });\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"my-healthcheck\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"my-service\",\n HealthChecks = defaultHealthCheck.Id,\n });\n\n var defaultForwardingRule = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"my-ilb\",\n IsMirroringCollector = true,\n IpProtocol = \"TCP\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = defaultRegionBackendService.Id,\n AllPorts = true,\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n NetworkTier = \"PREMIUM\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultSubnetwork,\n },\n });\n\n var foobar = new Gcp.Compute.PacketMirroring(\"foobar\", new()\n {\n Name = \"my-mirroring\",\n Description = \"bar\",\n Network = new Gcp.Compute.Inputs.PacketMirroringNetworkArgs\n {\n Url = @default.Id,\n },\n CollectorIlb = new Gcp.Compute.Inputs.PacketMirroringCollectorIlbArgs\n {\n Url = defaultForwardingRule.Id,\n },\n MirroredResources = new Gcp.Compute.Inputs.PacketMirroringMirroredResourcesArgs\n {\n Tags = new[]\n {\n \"foo\",\n },\n Instances = new[]\n {\n new Gcp.Compute.Inputs.PacketMirroringMirroredResourcesInstanceArgs\n {\n Url = mirror.Id,\n },\n },\n },\n Filter = new Gcp.Compute.Inputs.PacketMirroringFilterArgs\n {\n IpProtocols = new[]\n {\n \"tcp\",\n },\n CidrRanges = new[]\n {\n \"0.0.0.0/0\",\n },\n Direction = \"BOTH\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmirror, err := compute.NewInstance(ctx, \"mirror\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tNetwork: _default.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"my-healthcheck\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultForwardingRule, err := compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"my-ilb\"),\n\t\t\tIsMirroringCollector: pulumi.Bool(true),\n\t\t\tIpProtocol: pulumi.String(\"TCP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: defaultRegionBackendService.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tNetworkTier: pulumi.String(\"PREMIUM\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultSubnetwork,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewPacketMirroring(ctx, \"foobar\", \u0026compute.PacketMirroringArgs{\n\t\t\tName: pulumi.String(\"my-mirroring\"),\n\t\t\tDescription: pulumi.String(\"bar\"),\n\t\t\tNetwork: \u0026compute.PacketMirroringNetworkArgs{\n\t\t\t\tUrl: _default.ID(),\n\t\t\t},\n\t\t\tCollectorIlb: \u0026compute.PacketMirroringCollectorIlbArgs{\n\t\t\t\tUrl: defaultForwardingRule.ID(),\n\t\t\t},\n\t\t\tMirroredResources: \u0026compute.PacketMirroringMirroredResourcesArgs{\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t},\n\t\t\t\tInstances: compute.PacketMirroringMirroredResourcesInstanceArray{\n\t\t\t\t\t\u0026compute.PacketMirroringMirroredResourcesInstanceArgs{\n\t\t\t\t\t\tUrl: mirror.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilter: \u0026compute.PacketMirroringFilterArgs{\n\t\t\t\tIpProtocols: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"tcp\"),\n\t\t\t\t},\n\t\t\t\tCidrRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t},\n\t\t\t\tDirection: pulumi.String(\"BOTH\"),\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.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.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.PacketMirroring;\nimport com.pulumi.gcp.compute.PacketMirroringArgs;\nimport com.pulumi.gcp.compute.inputs.PacketMirroringNetworkArgs;\nimport com.pulumi.gcp.compute.inputs.PacketMirroringCollectorIlbArgs;\nimport com.pulumi.gcp.compute.inputs.PacketMirroringMirroredResourcesArgs;\nimport com.pulumi.gcp.compute.inputs.PacketMirroringFilterArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"my-network\")\n .build());\n\n var mirror = new Instance(\"mirror\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(default_.id())\n .build())\n .name(\"my-instance\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\n .network(default_.id())\n .ipCidrRange(\"10.2.0.0/16\")\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"my-healthcheck\")\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 .name(\"my-service\")\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder()\n .name(\"my-ilb\")\n .isMirroringCollector(true)\n .ipProtocol(\"TCP\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(defaultRegionBackendService.id())\n .allPorts(true)\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .networkTier(\"PREMIUM\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultSubnetwork)\n .build());\n\n var foobar = new PacketMirroring(\"foobar\", PacketMirroringArgs.builder()\n .name(\"my-mirroring\")\n .description(\"bar\")\n .network(PacketMirroringNetworkArgs.builder()\n .url(default_.id())\n .build())\n .collectorIlb(PacketMirroringCollectorIlbArgs.builder()\n .url(defaultForwardingRule.id())\n .build())\n .mirroredResources(PacketMirroringMirroredResourcesArgs.builder()\n .tags(\"foo\")\n .instances(PacketMirroringMirroredResourcesInstanceArgs.builder()\n .url(mirror.id())\n .build())\n .build())\n .filter(PacketMirroringFilterArgs.builder()\n .ipProtocols(\"tcp\")\n .cidrRanges(\"0.0.0.0/0\")\n .direction(\"BOTH\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mirror:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: ${default.id}\n name: my-instance\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: my-subnetwork\n network: ${default.id}\n ipCidrRange: 10.2.0.0/16\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n name: my-service\n healthChecks: ${defaultHealthCheck.id}\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: my-healthcheck\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n name: default\n properties:\n name: my-ilb\n isMirroringCollector: true\n ipProtocol: TCP\n loadBalancingScheme: INTERNAL\n backendService: ${defaultRegionBackendService.id}\n allPorts: true\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n networkTier: PREMIUM\n options:\n dependson:\n - ${defaultSubnetwork}\n foobar:\n type: gcp:compute:PacketMirroring\n properties:\n name: my-mirroring\n description: bar\n network:\n url: ${default.id}\n collectorIlb:\n url: ${defaultForwardingRule.id}\n mirroredResources:\n tags:\n - foo\n instances:\n - url: ${mirror.id}\n filter:\n ipProtocols:\n - tcp\n cidrRanges:\n - 0.0.0.0/0\n direction: BOTH\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPacketMirroring can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/packetMirrorings/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, PacketMirroring can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/packetMirroring:PacketMirroring default projects/{{project}}/regions/{{region}}/packetMirrorings/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/packetMirroring:PacketMirroring default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/packetMirroring:PacketMirroring default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/packetMirroring:PacketMirroring default {{name}}\n```\n\n", + "description": "Packet Mirroring mirrors traffic to and from particular VM instances.\nYou can use the collected traffic to help you detect security threats\nand monitor application performance.\n\n\nTo get more information about PacketMirroring, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/packetMirrorings)\n* How-to Guides\n * [Using Packet Mirroring](https://cloud.google.com/vpc/docs/using-packet-mirroring#creating)\n\n## Example Usage\n\n### Compute Packet Mirroring Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"my-network\"});\nconst mirror = new gcp.compute.Instance(\"mirror\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: _default.id,\n }],\n name: \"my-instance\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"my-subnetwork\",\n network: _default.id,\n ipCidrRange: \"10.2.0.0/16\",\n});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"my-healthcheck\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n name: \"my-service\",\n healthChecks: defaultHealthCheck.id,\n});\nconst defaultForwardingRule = new gcp.compute.ForwardingRule(\"default\", {\n name: \"my-ilb\",\n isMirroringCollector: true,\n ipProtocol: \"TCP\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: defaultRegionBackendService.id,\n allPorts: true,\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n networkTier: \"PREMIUM\",\n}, {\n dependsOn: [defaultSubnetwork],\n});\nconst foobar = new gcp.compute.PacketMirroring(\"foobar\", {\n name: \"my-mirroring\",\n description: \"bar\",\n network: {\n url: _default.id,\n },\n collectorIlb: {\n url: defaultForwardingRule.id,\n },\n mirroredResources: {\n tags: [\"foo\"],\n instances: [{\n url: mirror.id,\n }],\n },\n filter: {\n ipProtocols: [\"tcp\"],\n cidrRanges: [\"0.0.0.0/0\"],\n direction: \"BOTH\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"my-network\")\nmirror = gcp.compute.Instance(\"mirror\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": default.id,\n }],\n name=\"my-instance\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n })\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"my-subnetwork\",\n network=default.id,\n ip_cidr_range=\"10.2.0.0/16\")\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"my-healthcheck\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n name=\"my-service\",\n health_checks=default_health_check.id)\ndefault_forwarding_rule = gcp.compute.ForwardingRule(\"default\",\n name=\"my-ilb\",\n is_mirroring_collector=True,\n ip_protocol=\"TCP\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=default_region_backend_service.id,\n all_ports=True,\n network=default.id,\n subnetwork=default_subnetwork.id,\n network_tier=\"PREMIUM\",\n opts = pulumi.ResourceOptions(depends_on=[default_subnetwork]))\nfoobar = gcp.compute.PacketMirroring(\"foobar\",\n name=\"my-mirroring\",\n description=\"bar\",\n network={\n \"url\": default.id,\n },\n collector_ilb={\n \"url\": default_forwarding_rule.id,\n },\n mirrored_resources={\n \"tags\": [\"foo\"],\n \"instances\": [{\n \"url\": mirror.id,\n }],\n },\n filter={\n \"ip_protocols\": [\"tcp\"],\n \"cidr_ranges\": [\"0.0.0.0/0\"],\n \"direction\": \"BOTH\",\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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n });\n\n var mirror = new Gcp.Compute.Instance(\"mirror\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = @default.Id,\n },\n },\n Name = \"my-instance\",\n MachineType = \"e2-medium\",\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 });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"my-subnetwork\",\n Network = @default.Id,\n IpCidrRange = \"10.2.0.0/16\",\n });\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"my-healthcheck\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"my-service\",\n HealthChecks = defaultHealthCheck.Id,\n });\n\n var defaultForwardingRule = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"my-ilb\",\n IsMirroringCollector = true,\n IpProtocol = \"TCP\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = defaultRegionBackendService.Id,\n AllPorts = true,\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n NetworkTier = \"PREMIUM\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultSubnetwork,\n },\n });\n\n var foobar = new Gcp.Compute.PacketMirroring(\"foobar\", new()\n {\n Name = \"my-mirroring\",\n Description = \"bar\",\n Network = new Gcp.Compute.Inputs.PacketMirroringNetworkArgs\n {\n Url = @default.Id,\n },\n CollectorIlb = new Gcp.Compute.Inputs.PacketMirroringCollectorIlbArgs\n {\n Url = defaultForwardingRule.Id,\n },\n MirroredResources = new Gcp.Compute.Inputs.PacketMirroringMirroredResourcesArgs\n {\n Tags = new[]\n {\n \"foo\",\n },\n Instances = new[]\n {\n new Gcp.Compute.Inputs.PacketMirroringMirroredResourcesInstanceArgs\n {\n Url = mirror.Id,\n },\n },\n },\n Filter = new Gcp.Compute.Inputs.PacketMirroringFilterArgs\n {\n IpProtocols = new[]\n {\n \"tcp\",\n },\n CidrRanges = new[]\n {\n \"0.0.0.0/0\",\n },\n Direction = \"BOTH\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmirror, err := compute.NewInstance(ctx, \"mirror\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tNetwork: _default.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"my-healthcheck\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultForwardingRule, err := compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"my-ilb\"),\n\t\t\tIsMirroringCollector: pulumi.Bool(true),\n\t\t\tIpProtocol: pulumi.String(\"TCP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: defaultRegionBackendService.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tNetworkTier: pulumi.String(\"PREMIUM\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultSubnetwork,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewPacketMirroring(ctx, \"foobar\", \u0026compute.PacketMirroringArgs{\n\t\t\tName: pulumi.String(\"my-mirroring\"),\n\t\t\tDescription: pulumi.String(\"bar\"),\n\t\t\tNetwork: \u0026compute.PacketMirroringNetworkArgs{\n\t\t\t\tUrl: _default.ID(),\n\t\t\t},\n\t\t\tCollectorIlb: \u0026compute.PacketMirroringCollectorIlbArgs{\n\t\t\t\tUrl: defaultForwardingRule.ID(),\n\t\t\t},\n\t\t\tMirroredResources: \u0026compute.PacketMirroringMirroredResourcesArgs{\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t},\n\t\t\t\tInstances: compute.PacketMirroringMirroredResourcesInstanceArray{\n\t\t\t\t\t\u0026compute.PacketMirroringMirroredResourcesInstanceArgs{\n\t\t\t\t\t\tUrl: mirror.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilter: \u0026compute.PacketMirroringFilterArgs{\n\t\t\t\tIpProtocols: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"tcp\"),\n\t\t\t\t},\n\t\t\t\tCidrRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t},\n\t\t\t\tDirection: pulumi.String(\"BOTH\"),\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.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.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.PacketMirroring;\nimport com.pulumi.gcp.compute.PacketMirroringArgs;\nimport com.pulumi.gcp.compute.inputs.PacketMirroringNetworkArgs;\nimport com.pulumi.gcp.compute.inputs.PacketMirroringCollectorIlbArgs;\nimport com.pulumi.gcp.compute.inputs.PacketMirroringMirroredResourcesArgs;\nimport com.pulumi.gcp.compute.inputs.PacketMirroringFilterArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"my-network\")\n .build());\n\n var mirror = new Instance(\"mirror\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(default_.id())\n .build())\n .name(\"my-instance\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\n .network(default_.id())\n .ipCidrRange(\"10.2.0.0/16\")\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"my-healthcheck\")\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 .name(\"my-service\")\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder()\n .name(\"my-ilb\")\n .isMirroringCollector(true)\n .ipProtocol(\"TCP\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(defaultRegionBackendService.id())\n .allPorts(true)\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .networkTier(\"PREMIUM\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultSubnetwork)\n .build());\n\n var foobar = new PacketMirroring(\"foobar\", PacketMirroringArgs.builder()\n .name(\"my-mirroring\")\n .description(\"bar\")\n .network(PacketMirroringNetworkArgs.builder()\n .url(default_.id())\n .build())\n .collectorIlb(PacketMirroringCollectorIlbArgs.builder()\n .url(defaultForwardingRule.id())\n .build())\n .mirroredResources(PacketMirroringMirroredResourcesArgs.builder()\n .tags(\"foo\")\n .instances(PacketMirroringMirroredResourcesInstanceArgs.builder()\n .url(mirror.id())\n .build())\n .build())\n .filter(PacketMirroringFilterArgs.builder()\n .ipProtocols(\"tcp\")\n .cidrRanges(\"0.0.0.0/0\")\n .direction(\"BOTH\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mirror:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: ${default.id}\n name: my-instance\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: my-subnetwork\n network: ${default.id}\n ipCidrRange: 10.2.0.0/16\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n name: my-service\n healthChecks: ${defaultHealthCheck.id}\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: my-healthcheck\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n name: default\n properties:\n name: my-ilb\n isMirroringCollector: true\n ipProtocol: TCP\n loadBalancingScheme: INTERNAL\n backendService: ${defaultRegionBackendService.id}\n allPorts: true\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n networkTier: PREMIUM\n options:\n dependson:\n - ${defaultSubnetwork}\n foobar:\n type: gcp:compute:PacketMirroring\n properties:\n name: my-mirroring\n description: bar\n network:\n url: ${default.id}\n collectorIlb:\n url: ${defaultForwardingRule.id}\n mirroredResources:\n tags:\n - foo\n instances:\n - url: ${mirror.id}\n filter:\n ipProtocols:\n - tcp\n cidrRanges:\n - 0.0.0.0/0\n direction: BOTH\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPacketMirroring can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/packetMirrorings/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, PacketMirroring can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/packetMirroring:PacketMirroring default projects/{{project}}/regions/{{region}}/packetMirrorings/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/packetMirroring:PacketMirroring default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/packetMirroring:PacketMirroring default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/packetMirroring:PacketMirroring default {{name}}\n```\n\n", "properties": { "collectorIlb": { "$ref": "#/types/gcp:compute/PacketMirroringCollectorIlb:PacketMirroringCollectorIlb", @@ -154817,7 +154817,7 @@ } }, "gcp:compute/perInstanceConfig:PerInstanceConfig": { - "description": "A config defined for a single managed instance that belongs to an instance group manager. It preserves the instance name\nacross instance group manager operations and can define stateful disks or metadata that are unique to the instance.\n\n\nTo get more information about PerInstanceConfig, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/instance-groups/stateful-migs#per-instance_configs)\n\n## Example Usage\n\n### Stateful Igm\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst igm_basic = new gcp.compute.InstanceTemplate(\"igm-basic\", {\n name: \"my-template\",\n machineType: \"e2-medium\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n disks: [{\n sourceImage: myImage.then(myImage =\u003e myImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n networkInterfaces: [{\n network: \"default\",\n }],\n serviceAccount: {\n scopes: [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n },\n});\nconst igm_no_tp = new gcp.compute.InstanceGroupManager(\"igm-no-tp\", {\n description: \"Test instance group manager\",\n name: \"my-igm\",\n versions: [{\n name: \"prod\",\n instanceTemplate: igm_basic.selfLink,\n }],\n baseInstanceName: \"igm-no-tp\",\n zone: \"us-central1-c\",\n targetSize: 2,\n});\nconst _default = new gcp.compute.Disk(\"default\", {\n name: \"my-disk-name\",\n type: \"pd-ssd\",\n zone: igm.zone,\n image: \"debian-11-bullseye-v20220719\",\n physicalBlockSizeBytes: 4096,\n});\nconst withDisk = new gcp.compute.PerInstanceConfig(\"with_disk\", {\n zone: igm.zone,\n instanceGroupManager: igm.name,\n name: \"instance-1\",\n preservedState: {\n metadata: {\n foo: \"bar\",\n instance_template: igm_basic.selfLink,\n },\n disks: [{\n deviceName: \"my-stateful-disk\",\n source: _default.id,\n mode: \"READ_ONLY\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nigm_basic = gcp.compute.InstanceTemplate(\"igm-basic\",\n name=\"my-template\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n disks=[{\n \"sourceImage\": my_image.self_link,\n \"autoDelete\": True,\n \"boot\": True,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n service_account={\n \"scopes\": [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n })\nigm_no_tp = gcp.compute.InstanceGroupManager(\"igm-no-tp\",\n description=\"Test instance group manager\",\n name=\"my-igm\",\n versions=[{\n \"name\": \"prod\",\n \"instanceTemplate\": igm_basic.self_link,\n }],\n base_instance_name=\"igm-no-tp\",\n zone=\"us-central1-c\",\n target_size=2)\ndefault = gcp.compute.Disk(\"default\",\n name=\"my-disk-name\",\n type=\"pd-ssd\",\n zone=igm[\"zone\"],\n image=\"debian-11-bullseye-v20220719\",\n physical_block_size_bytes=4096)\nwith_disk = gcp.compute.PerInstanceConfig(\"with_disk\",\n zone=igm[\"zone\"],\n instance_group_manager=igm[\"name\"],\n name=\"instance-1\",\n preserved_state={\n \"metadata\": {\n \"foo\": \"bar\",\n \"instance_template\": igm_basic.self_link,\n },\n \"disks\": [{\n \"deviceName\": \"my-stateful-disk\",\n \"source\": default.id,\n \"mode\": \"READ_ONLY\",\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 myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var igm_basic = new Gcp.Compute.InstanceTemplate(\"igm-basic\", new()\n {\n Name = \"my-template\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Scopes = new[]\n {\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n },\n },\n });\n\n var igm_no_tp = new Gcp.Compute.InstanceGroupManager(\"igm-no-tp\", new()\n {\n Description = \"Test instance group manager\",\n Name = \"my-igm\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n Name = \"prod\",\n InstanceTemplate = igm_basic.SelfLink,\n },\n },\n BaseInstanceName = \"igm-no-tp\",\n Zone = \"us-central1-c\",\n TargetSize = 2,\n });\n\n var @default = new Gcp.Compute.Disk(\"default\", new()\n {\n Name = \"my-disk-name\",\n Type = \"pd-ssd\",\n Zone = igm.Zone,\n Image = \"debian-11-bullseye-v20220719\",\n PhysicalBlockSizeBytes = 4096,\n });\n\n var withDisk = new Gcp.Compute.PerInstanceConfig(\"with_disk\", new()\n {\n Zone = igm.Zone,\n InstanceGroupManager = igm.Name,\n Name = \"instance-1\",\n PreservedState = new Gcp.Compute.Inputs.PerInstanceConfigPreservedStateArgs\n {\n Metadata = \n {\n { \"foo\", \"bar\" },\n { \"instance_template\", igm_basic.SelfLink },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.PerInstanceConfigPreservedStateDiskArgs\n {\n DeviceName = \"my-stateful-disk\",\n Source = @default.Id,\n Mode = \"READ_ONLY\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceTemplate(ctx, \"igm-basic\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"my-template\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"userinfo-email\"),\n\t\t\t\t\tpulumi.String(\"compute-ro\"),\n\t\t\t\t\tpulumi.String(\"storage-ro\"),\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.NewInstanceGroupManager(ctx, \"igm-no-tp\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tDescription: pulumi.String(\"Test instance group manager\"),\n\t\t\tName: pulumi.String(\"my-igm\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tName: pulumi.String(\"prod\"),\n\t\t\t\t\tInstanceTemplate: igm_basic.SelfLink,\n\t\t\t\t},\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"igm-no-tp\"),\n\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t\tTargetSize: pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewDisk(ctx, \"default\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"my-disk-name\"),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.Any(igm.Zone),\n\t\t\tImage: pulumi.String(\"debian-11-bullseye-v20220719\"),\n\t\t\tPhysicalBlockSizeBytes: pulumi.Int(4096),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewPerInstanceConfig(ctx, \"with_disk\", \u0026compute.PerInstanceConfigArgs{\n\t\t\tZone: pulumi.Any(igm.Zone),\n\t\t\tInstanceGroupManager: pulumi.Any(igm.Name),\n\t\t\tName: pulumi.String(\"instance-1\"),\n\t\t\tPreservedState: \u0026compute.PerInstanceConfigPreservedStateArgs{\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"instance_template\": igm_basic.SelfLink,\n\t\t\t\t},\n\t\t\t\tDisks: compute.PerInstanceConfigPreservedStateDiskArray{\n\t\t\t\t\t\u0026compute.PerInstanceConfigPreservedStateDiskArgs{\n\t\t\t\t\t\tDeviceName: pulumi.String(\"my-stateful-disk\"),\n\t\t\t\t\t\tSource: _default.ID(),\n\t\t\t\t\t\tMode: pulumi.String(\"READ_ONLY\"),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.PerInstanceConfig;\nimport com.pulumi.gcp.compute.PerInstanceConfigArgs;\nimport com.pulumi.gcp.compute.inputs.PerInstanceConfigPreservedStateArgs;\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 myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var igm_basic = new InstanceTemplate(\"igm-basic\", InstanceTemplateArgs.builder()\n .name(\"my-template\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .scopes( \n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\")\n .build())\n .build());\n\n var igm_no_tp = new InstanceGroupManager(\"igm-no-tp\", InstanceGroupManagerArgs.builder()\n .description(\"Test instance group manager\")\n .name(\"my-igm\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .name(\"prod\")\n .instanceTemplate(igm_basic.selfLink())\n .build())\n .baseInstanceName(\"igm-no-tp\")\n .zone(\"us-central1-c\")\n .targetSize(2)\n .build());\n\n var default_ = new Disk(\"default\", DiskArgs.builder()\n .name(\"my-disk-name\")\n .type(\"pd-ssd\")\n .zone(igm.zone())\n .image(\"debian-11-bullseye-v20220719\")\n .physicalBlockSizeBytes(4096)\n .build());\n\n var withDisk = new PerInstanceConfig(\"withDisk\", PerInstanceConfigArgs.builder()\n .zone(igm.zone())\n .instanceGroupManager(igm.name())\n .name(\"instance-1\")\n .preservedState(PerInstanceConfigPreservedStateArgs.builder()\n .metadata(Map.ofEntries(\n Map.entry(\"foo\", \"bar\"),\n Map.entry(\"instance_template\", igm_basic.selfLink())\n ))\n .disks(PerInstanceConfigPreservedStateDiskArgs.builder()\n .deviceName(\"my-stateful-disk\")\n .source(default_.id())\n .mode(\"READ_ONLY\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n igm-basic:\n type: gcp:compute:InstanceTemplate\n properties:\n name: my-template\n machineType: e2-medium\n canIpForward: false\n tags:\n - foo\n - bar\n disks:\n - sourceImage: ${myImage.selfLink}\n autoDelete: true\n boot: true\n networkInterfaces:\n - network: default\n serviceAccount:\n scopes:\n - userinfo-email\n - compute-ro\n - storage-ro\n igm-no-tp:\n type: gcp:compute:InstanceGroupManager\n properties:\n description: Test instance group manager\n name: my-igm\n versions:\n - name: prod\n instanceTemplate: ${[\"igm-basic\"].selfLink}\n baseInstanceName: igm-no-tp\n zone: us-central1-c\n targetSize: 2\n default:\n type: gcp:compute:Disk\n properties:\n name: my-disk-name\n type: pd-ssd\n zone: ${igm.zone}\n image: debian-11-bullseye-v20220719\n physicalBlockSizeBytes: 4096\n withDisk:\n type: gcp:compute:PerInstanceConfig\n name: with_disk\n properties:\n zone: ${igm.zone}\n instanceGroupManager: ${igm.name}\n name: instance-1\n preservedState:\n metadata:\n foo: bar\n instance_template: ${[\"igm-basic\"].selfLink}\n disks:\n - deviceName: my-stateful-disk\n source: ${default.id}\n mode: READ_ONLY\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPerInstanceConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/{{name}}`\n\n* `{{project}}/{{zone}}/{{instance_group_manager}}/{{name}}`\n\n* `{{zone}}/{{instance_group_manager}}/{{name}}`\n\n* `{{instance_group_manager}}/{{name}}`\n\nWhen using the `pulumi import` command, PerInstanceConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default {{project}}/{{zone}}/{{instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default {{zone}}/{{instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default {{instance_group_manager}}/{{name}}\n```\n\n", + "description": "A config defined for a single managed instance that belongs to an instance group manager. It preserves the instance name\nacross instance group manager operations and can define stateful disks or metadata that are unique to the instance.\n\n\nTo get more information about PerInstanceConfig, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/instance-groups/stateful-migs#per-instance_configs)\n\n## Example Usage\n\n### Stateful Igm\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst igm_basic = new gcp.compute.InstanceTemplate(\"igm-basic\", {\n name: \"my-template\",\n machineType: \"e2-medium\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n disks: [{\n sourceImage: myImage.then(myImage =\u003e myImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n networkInterfaces: [{\n network: \"default\",\n }],\n serviceAccount: {\n scopes: [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n },\n});\nconst igm_no_tp = new gcp.compute.InstanceGroupManager(\"igm-no-tp\", {\n description: \"Test instance group manager\",\n name: \"my-igm\",\n versions: [{\n name: \"prod\",\n instanceTemplate: igm_basic.selfLink,\n }],\n baseInstanceName: \"igm-no-tp\",\n zone: \"us-central1-c\",\n targetSize: 2,\n});\nconst _default = new gcp.compute.Disk(\"default\", {\n name: \"my-disk-name\",\n type: \"pd-ssd\",\n zone: igm.zone,\n image: \"debian-11-bullseye-v20220719\",\n physicalBlockSizeBytes: 4096,\n});\nconst withDisk = new gcp.compute.PerInstanceConfig(\"with_disk\", {\n zone: igm.zone,\n instanceGroupManager: igm.name,\n name: \"instance-1\",\n preservedState: {\n metadata: {\n foo: \"bar\",\n instance_template: igm_basic.selfLink,\n },\n disks: [{\n deviceName: \"my-stateful-disk\",\n source: _default.id,\n mode: \"READ_ONLY\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nigm_basic = gcp.compute.InstanceTemplate(\"igm-basic\",\n name=\"my-template\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n disks=[{\n \"source_image\": my_image.self_link,\n \"auto_delete\": True,\n \"boot\": True,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n service_account={\n \"scopes\": [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n })\nigm_no_tp = gcp.compute.InstanceGroupManager(\"igm-no-tp\",\n description=\"Test instance group manager\",\n name=\"my-igm\",\n versions=[{\n \"name\": \"prod\",\n \"instance_template\": igm_basic.self_link,\n }],\n base_instance_name=\"igm-no-tp\",\n zone=\"us-central1-c\",\n target_size=2)\ndefault = gcp.compute.Disk(\"default\",\n name=\"my-disk-name\",\n type=\"pd-ssd\",\n zone=igm[\"zone\"],\n image=\"debian-11-bullseye-v20220719\",\n physical_block_size_bytes=4096)\nwith_disk = gcp.compute.PerInstanceConfig(\"with_disk\",\n zone=igm[\"zone\"],\n instance_group_manager=igm[\"name\"],\n name=\"instance-1\",\n preserved_state={\n \"metadata\": {\n \"foo\": \"bar\",\n \"instance_template\": igm_basic.self_link,\n },\n \"disks\": [{\n \"device_name\": \"my-stateful-disk\",\n \"source\": default.id,\n \"mode\": \"READ_ONLY\",\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 myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var igm_basic = new Gcp.Compute.InstanceTemplate(\"igm-basic\", new()\n {\n Name = \"my-template\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Scopes = new[]\n {\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n },\n },\n });\n\n var igm_no_tp = new Gcp.Compute.InstanceGroupManager(\"igm-no-tp\", new()\n {\n Description = \"Test instance group manager\",\n Name = \"my-igm\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n Name = \"prod\",\n InstanceTemplate = igm_basic.SelfLink,\n },\n },\n BaseInstanceName = \"igm-no-tp\",\n Zone = \"us-central1-c\",\n TargetSize = 2,\n });\n\n var @default = new Gcp.Compute.Disk(\"default\", new()\n {\n Name = \"my-disk-name\",\n Type = \"pd-ssd\",\n Zone = igm.Zone,\n Image = \"debian-11-bullseye-v20220719\",\n PhysicalBlockSizeBytes = 4096,\n });\n\n var withDisk = new Gcp.Compute.PerInstanceConfig(\"with_disk\", new()\n {\n Zone = igm.Zone,\n InstanceGroupManager = igm.Name,\n Name = \"instance-1\",\n PreservedState = new Gcp.Compute.Inputs.PerInstanceConfigPreservedStateArgs\n {\n Metadata = \n {\n { \"foo\", \"bar\" },\n { \"instance_template\", igm_basic.SelfLink },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.PerInstanceConfigPreservedStateDiskArgs\n {\n DeviceName = \"my-stateful-disk\",\n Source = @default.Id,\n Mode = \"READ_ONLY\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceTemplate(ctx, \"igm-basic\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"my-template\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"userinfo-email\"),\n\t\t\t\t\tpulumi.String(\"compute-ro\"),\n\t\t\t\t\tpulumi.String(\"storage-ro\"),\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.NewInstanceGroupManager(ctx, \"igm-no-tp\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tDescription: pulumi.String(\"Test instance group manager\"),\n\t\t\tName: pulumi.String(\"my-igm\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tName: pulumi.String(\"prod\"),\n\t\t\t\t\tInstanceTemplate: igm_basic.SelfLink,\n\t\t\t\t},\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"igm-no-tp\"),\n\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t\tTargetSize: pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewDisk(ctx, \"default\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"my-disk-name\"),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.Any(igm.Zone),\n\t\t\tImage: pulumi.String(\"debian-11-bullseye-v20220719\"),\n\t\t\tPhysicalBlockSizeBytes: pulumi.Int(4096),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewPerInstanceConfig(ctx, \"with_disk\", \u0026compute.PerInstanceConfigArgs{\n\t\t\tZone: pulumi.Any(igm.Zone),\n\t\t\tInstanceGroupManager: pulumi.Any(igm.Name),\n\t\t\tName: pulumi.String(\"instance-1\"),\n\t\t\tPreservedState: \u0026compute.PerInstanceConfigPreservedStateArgs{\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"instance_template\": igm_basic.SelfLink,\n\t\t\t\t},\n\t\t\t\tDisks: compute.PerInstanceConfigPreservedStateDiskArray{\n\t\t\t\t\t\u0026compute.PerInstanceConfigPreservedStateDiskArgs{\n\t\t\t\t\t\tDeviceName: pulumi.String(\"my-stateful-disk\"),\n\t\t\t\t\t\tSource: _default.ID(),\n\t\t\t\t\t\tMode: pulumi.String(\"READ_ONLY\"),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.PerInstanceConfig;\nimport com.pulumi.gcp.compute.PerInstanceConfigArgs;\nimport com.pulumi.gcp.compute.inputs.PerInstanceConfigPreservedStateArgs;\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 myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var igm_basic = new InstanceTemplate(\"igm-basic\", InstanceTemplateArgs.builder()\n .name(\"my-template\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .scopes( \n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\")\n .build())\n .build());\n\n var igm_no_tp = new InstanceGroupManager(\"igm-no-tp\", InstanceGroupManagerArgs.builder()\n .description(\"Test instance group manager\")\n .name(\"my-igm\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .name(\"prod\")\n .instanceTemplate(igm_basic.selfLink())\n .build())\n .baseInstanceName(\"igm-no-tp\")\n .zone(\"us-central1-c\")\n .targetSize(2)\n .build());\n\n var default_ = new Disk(\"default\", DiskArgs.builder()\n .name(\"my-disk-name\")\n .type(\"pd-ssd\")\n .zone(igm.zone())\n .image(\"debian-11-bullseye-v20220719\")\n .physicalBlockSizeBytes(4096)\n .build());\n\n var withDisk = new PerInstanceConfig(\"withDisk\", PerInstanceConfigArgs.builder()\n .zone(igm.zone())\n .instanceGroupManager(igm.name())\n .name(\"instance-1\")\n .preservedState(PerInstanceConfigPreservedStateArgs.builder()\n .metadata(Map.ofEntries(\n Map.entry(\"foo\", \"bar\"),\n Map.entry(\"instance_template\", igm_basic.selfLink())\n ))\n .disks(PerInstanceConfigPreservedStateDiskArgs.builder()\n .deviceName(\"my-stateful-disk\")\n .source(default_.id())\n .mode(\"READ_ONLY\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n igm-basic:\n type: gcp:compute:InstanceTemplate\n properties:\n name: my-template\n machineType: e2-medium\n canIpForward: false\n tags:\n - foo\n - bar\n disks:\n - sourceImage: ${myImage.selfLink}\n autoDelete: true\n boot: true\n networkInterfaces:\n - network: default\n serviceAccount:\n scopes:\n - userinfo-email\n - compute-ro\n - storage-ro\n igm-no-tp:\n type: gcp:compute:InstanceGroupManager\n properties:\n description: Test instance group manager\n name: my-igm\n versions:\n - name: prod\n instanceTemplate: ${[\"igm-basic\"].selfLink}\n baseInstanceName: igm-no-tp\n zone: us-central1-c\n targetSize: 2\n default:\n type: gcp:compute:Disk\n properties:\n name: my-disk-name\n type: pd-ssd\n zone: ${igm.zone}\n image: debian-11-bullseye-v20220719\n physicalBlockSizeBytes: 4096\n withDisk:\n type: gcp:compute:PerInstanceConfig\n name: with_disk\n properties:\n zone: ${igm.zone}\n instanceGroupManager: ${igm.name}\n name: instance-1\n preservedState:\n metadata:\n foo: bar\n instance_template: ${[\"igm-basic\"].selfLink}\n disks:\n - deviceName: my-stateful-disk\n source: ${default.id}\n mode: READ_ONLY\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPerInstanceConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/{{name}}`\n\n* `{{project}}/{{zone}}/{{instance_group_manager}}/{{name}}`\n\n* `{{zone}}/{{instance_group_manager}}/{{name}}`\n\n* `{{instance_group_manager}}/{{name}}`\n\nWhen using the `pulumi import` command, PerInstanceConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default {{project}}/{{zone}}/{{instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default {{zone}}/{{instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default {{instance_group_manager}}/{{name}}\n```\n\n", "properties": { "instanceGroupManager": { "type": "string", @@ -155398,7 +155398,7 @@ } }, "gcp:compute/regionAutoscaler:RegionAutoscaler": { - "description": "Represents an Autoscaler resource.\n\nAutoscalers allow you to automatically scale virtual machine instances in\nmanaged instance groups according to an autoscaling policy that you\ndefine.\n\n\nTo get more information about RegionAutoscaler, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/regionAutoscalers)\n* How-to Guides\n * [Autoscaling Groups of Instances](https://cloud.google.com/compute/docs/autoscaler/)\n\n## Example Usage\n\n### Region Autoscaler Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst foobarInstanceTemplate = new gcp.compute.InstanceTemplate(\"foobar\", {\n name: \"my-instance-template\",\n machineType: \"e2-standard-4\",\n disks: [{\n sourceImage: \"debian-cloud/debian-11\",\n diskSizeGb: 250,\n }],\n networkInterfaces: [{\n network: \"default\",\n accessConfigs: [{\n networkTier: \"PREMIUM\",\n }],\n }],\n serviceAccount: {\n scopes: [\n \"https://www.googleapis.com/auth/devstorage.read_only\",\n \"https://www.googleapis.com/auth/logging.write\",\n \"https://www.googleapis.com/auth/monitoring.write\",\n \"https://www.googleapis.com/auth/pubsub\",\n \"https://www.googleapis.com/auth/service.management.readonly\",\n \"https://www.googleapis.com/auth/servicecontrol\",\n \"https://www.googleapis.com/auth/trace.append\",\n ],\n },\n});\nconst foobarTargetPool = new gcp.compute.TargetPool(\"foobar\", {name: \"my-target-pool\"});\nconst foobarRegionInstanceGroupManager = new gcp.compute.RegionInstanceGroupManager(\"foobar\", {\n name: \"my-region-igm\",\n region: \"us-central1\",\n versions: [{\n instanceTemplate: foobarInstanceTemplate.id,\n name: \"primary\",\n }],\n targetPools: [foobarTargetPool.id],\n baseInstanceName: \"foobar\",\n});\nconst foobar = new gcp.compute.RegionAutoscaler(\"foobar\", {\n name: \"my-region-autoscaler\",\n region: \"us-central1\",\n target: foobarRegionInstanceGroupManager.id,\n autoscalingPolicy: {\n maxReplicas: 5,\n minReplicas: 1,\n cooldownPeriod: 60,\n cpuUtilization: {\n target: 0.5,\n },\n },\n});\nconst debian9 = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfoobar_instance_template = gcp.compute.InstanceTemplate(\"foobar\",\n name=\"my-instance-template\",\n machine_type=\"e2-standard-4\",\n disks=[{\n \"sourceImage\": \"debian-cloud/debian-11\",\n \"diskSizeGb\": 250,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n \"accessConfigs\": [{\n \"networkTier\": \"PREMIUM\",\n }],\n }],\n service_account={\n \"scopes\": [\n \"https://www.googleapis.com/auth/devstorage.read_only\",\n \"https://www.googleapis.com/auth/logging.write\",\n \"https://www.googleapis.com/auth/monitoring.write\",\n \"https://www.googleapis.com/auth/pubsub\",\n \"https://www.googleapis.com/auth/service.management.readonly\",\n \"https://www.googleapis.com/auth/servicecontrol\",\n \"https://www.googleapis.com/auth/trace.append\",\n ],\n })\nfoobar_target_pool = gcp.compute.TargetPool(\"foobar\", name=\"my-target-pool\")\nfoobar_region_instance_group_manager = gcp.compute.RegionInstanceGroupManager(\"foobar\",\n name=\"my-region-igm\",\n region=\"us-central1\",\n versions=[{\n \"instanceTemplate\": foobar_instance_template.id,\n \"name\": \"primary\",\n }],\n target_pools=[foobar_target_pool.id],\n base_instance_name=\"foobar\")\nfoobar = gcp.compute.RegionAutoscaler(\"foobar\",\n name=\"my-region-autoscaler\",\n region=\"us-central1\",\n target=foobar_region_instance_group_manager.id,\n autoscaling_policy={\n \"maxReplicas\": 5,\n \"minReplicas\": 1,\n \"cooldownPeriod\": 60,\n \"cpuUtilization\": {\n \"target\": 0.5,\n },\n })\ndebian9 = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\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 foobarInstanceTemplate = new Gcp.Compute.InstanceTemplate(\"foobar\", new()\n {\n Name = \"my-instance-template\",\n MachineType = \"e2-standard-4\",\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = \"debian-cloud/debian-11\",\n DiskSizeGb = 250,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n AccessConfigs = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceAccessConfigArgs\n {\n NetworkTier = \"PREMIUM\",\n },\n },\n },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Scopes = new[]\n {\n \"https://www.googleapis.com/auth/devstorage.read_only\",\n \"https://www.googleapis.com/auth/logging.write\",\n \"https://www.googleapis.com/auth/monitoring.write\",\n \"https://www.googleapis.com/auth/pubsub\",\n \"https://www.googleapis.com/auth/service.management.readonly\",\n \"https://www.googleapis.com/auth/servicecontrol\",\n \"https://www.googleapis.com/auth/trace.append\",\n },\n },\n });\n\n var foobarTargetPool = new Gcp.Compute.TargetPool(\"foobar\", new()\n {\n Name = \"my-target-pool\",\n });\n\n var foobarRegionInstanceGroupManager = new Gcp.Compute.RegionInstanceGroupManager(\"foobar\", new()\n {\n Name = \"my-region-igm\",\n Region = \"us-central1\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = foobarInstanceTemplate.Id,\n Name = \"primary\",\n },\n },\n TargetPools = new[]\n {\n foobarTargetPool.Id,\n },\n BaseInstanceName = \"foobar\",\n });\n\n var foobar = new Gcp.Compute.RegionAutoscaler(\"foobar\", new()\n {\n Name = \"my-region-autoscaler\",\n Region = \"us-central1\",\n Target = foobarRegionInstanceGroupManager.Id,\n AutoscalingPolicy = new Gcp.Compute.Inputs.RegionAutoscalerAutoscalingPolicyArgs\n {\n MaxReplicas = 5,\n MinReplicas = 1,\n CooldownPeriod = 60,\n CpuUtilization = new Gcp.Compute.Inputs.RegionAutoscalerAutoscalingPolicyCpuUtilizationArgs\n {\n Target = 0.5,\n },\n },\n });\n\n var debian9 = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tfoobarInstanceTemplate, err := compute.NewInstanceTemplate(ctx, \"foobar\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"my-instance-template\"),\n\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(250),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tAccessConfigs: compute.InstanceTemplateNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceAccessConfigArgs{\n\t\t\t\t\t\t\tNetworkTier: pulumi.String(\"PREMIUM\"),\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\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/devstorage.read_only\"),\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/logging.write\"),\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/monitoring.write\"),\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/pubsub\"),\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/service.management.readonly\"),\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/servicecontrol\"),\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/trace.append\"),\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\tfoobarTargetPool, err := compute.NewTargetPool(ctx, \"foobar\", \u0026compute.TargetPoolArgs{\n\t\t\tName: pulumi.String(\"my-target-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobarRegionInstanceGroupManager, err := compute.NewRegionInstanceGroupManager(ctx, \"foobar\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"my-region-igm\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: foobarInstanceTemplate.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetPools: pulumi.StringArray{\n\t\t\t\tfoobarTargetPool.ID(),\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"foobar\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionAutoscaler(ctx, \"foobar\", \u0026compute.RegionAutoscalerArgs{\n\t\t\tName: pulumi.String(\"my-region-autoscaler\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTarget: foobarRegionInstanceGroupManager.ID(),\n\t\t\tAutoscalingPolicy: \u0026compute.RegionAutoscalerAutoscalingPolicyArgs{\n\t\t\t\tMaxReplicas: pulumi.Int(5),\n\t\t\t\tMinReplicas: pulumi.Int(1),\n\t\t\t\tCooldownPeriod: pulumi.Int(60),\n\t\t\t\tCpuUtilization: \u0026compute.RegionAutoscalerAutoscalingPolicyCpuUtilizationArgs{\n\t\t\t\t\tTarget: pulumi.Float64(0.5),\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.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, 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.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport com.pulumi.gcp.compute.TargetPool;\nimport com.pulumi.gcp.compute.TargetPoolArgs;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.RegionAutoscaler;\nimport com.pulumi.gcp.compute.RegionAutoscalerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionAutoscalerAutoscalingPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionAutoscalerAutoscalingPolicyCpuUtilizationArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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 foobarInstanceTemplate = new InstanceTemplate(\"foobarInstanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"my-instance-template\")\n .machineType(\"e2-standard-4\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(\"debian-cloud/debian-11\")\n .diskSizeGb(250)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .accessConfigs(InstanceTemplateNetworkInterfaceAccessConfigArgs.builder()\n .networkTier(\"PREMIUM\")\n .build())\n .build())\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .scopes( \n \"https://www.googleapis.com/auth/devstorage.read_only\",\n \"https://www.googleapis.com/auth/logging.write\",\n \"https://www.googleapis.com/auth/monitoring.write\",\n \"https://www.googleapis.com/auth/pubsub\",\n \"https://www.googleapis.com/auth/service.management.readonly\",\n \"https://www.googleapis.com/auth/servicecontrol\",\n \"https://www.googleapis.com/auth/trace.append\")\n .build())\n .build());\n\n var foobarTargetPool = new TargetPool(\"foobarTargetPool\", TargetPoolArgs.builder()\n .name(\"my-target-pool\")\n .build());\n\n var foobarRegionInstanceGroupManager = new RegionInstanceGroupManager(\"foobarRegionInstanceGroupManager\", RegionInstanceGroupManagerArgs.builder()\n .name(\"my-region-igm\")\n .region(\"us-central1\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(foobarInstanceTemplate.id())\n .name(\"primary\")\n .build())\n .targetPools(foobarTargetPool.id())\n .baseInstanceName(\"foobar\")\n .build());\n\n var foobar = new RegionAutoscaler(\"foobar\", RegionAutoscalerArgs.builder()\n .name(\"my-region-autoscaler\")\n .region(\"us-central1\")\n .target(foobarRegionInstanceGroupManager.id())\n .autoscalingPolicy(RegionAutoscalerAutoscalingPolicyArgs.builder()\n .maxReplicas(5)\n .minReplicas(1)\n .cooldownPeriod(60)\n .cpuUtilization(RegionAutoscalerAutoscalingPolicyCpuUtilizationArgs.builder()\n .target(0.5)\n .build())\n .build())\n .build());\n\n final var debian9 = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:RegionAutoscaler\n properties:\n name: my-region-autoscaler\n region: us-central1\n target: ${foobarRegionInstanceGroupManager.id}\n autoscalingPolicy:\n maxReplicas: 5\n minReplicas: 1\n cooldownPeriod: 60\n cpuUtilization:\n target: 0.5\n foobarInstanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: foobar\n properties:\n name: my-instance-template\n machineType: e2-standard-4\n disks:\n - sourceImage: debian-cloud/debian-11\n diskSizeGb: 250\n networkInterfaces:\n - network: default\n accessConfigs:\n - networkTier: PREMIUM\n serviceAccount:\n scopes:\n - https://www.googleapis.com/auth/devstorage.read_only\n - https://www.googleapis.com/auth/logging.write\n - https://www.googleapis.com/auth/monitoring.write\n - https://www.googleapis.com/auth/pubsub\n - https://www.googleapis.com/auth/service.management.readonly\n - https://www.googleapis.com/auth/servicecontrol\n - https://www.googleapis.com/auth/trace.append\n foobarTargetPool:\n type: gcp:compute:TargetPool\n name: foobar\n properties:\n name: my-target-pool\n foobarRegionInstanceGroupManager:\n type: gcp:compute:RegionInstanceGroupManager\n name: foobar\n properties:\n name: my-region-igm\n region: us-central1\n versions:\n - instanceTemplate: ${foobarInstanceTemplate.id}\n name: primary\n targetPools:\n - ${foobarTargetPool.id}\n baseInstanceName: foobar\nvariables:\n debian9:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionAutoscaler can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/autoscalers/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionAutoscaler can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionAutoscaler:RegionAutoscaler default projects/{{project}}/regions/{{region}}/autoscalers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionAutoscaler:RegionAutoscaler default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionAutoscaler:RegionAutoscaler default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionAutoscaler:RegionAutoscaler default {{name}}\n```\n\n", + "description": "Represents an Autoscaler resource.\n\nAutoscalers allow you to automatically scale virtual machine instances in\nmanaged instance groups according to an autoscaling policy that you\ndefine.\n\n\nTo get more information about RegionAutoscaler, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/regionAutoscalers)\n* How-to Guides\n * [Autoscaling Groups of Instances](https://cloud.google.com/compute/docs/autoscaler/)\n\n## Example Usage\n\n### Region Autoscaler Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst foobarInstanceTemplate = new gcp.compute.InstanceTemplate(\"foobar\", {\n name: \"my-instance-template\",\n machineType: \"e2-standard-4\",\n disks: [{\n sourceImage: \"debian-cloud/debian-11\",\n diskSizeGb: 250,\n }],\n networkInterfaces: [{\n network: \"default\",\n accessConfigs: [{\n networkTier: \"PREMIUM\",\n }],\n }],\n serviceAccount: {\n scopes: [\n \"https://www.googleapis.com/auth/devstorage.read_only\",\n \"https://www.googleapis.com/auth/logging.write\",\n \"https://www.googleapis.com/auth/monitoring.write\",\n \"https://www.googleapis.com/auth/pubsub\",\n \"https://www.googleapis.com/auth/service.management.readonly\",\n \"https://www.googleapis.com/auth/servicecontrol\",\n \"https://www.googleapis.com/auth/trace.append\",\n ],\n },\n});\nconst foobarTargetPool = new gcp.compute.TargetPool(\"foobar\", {name: \"my-target-pool\"});\nconst foobarRegionInstanceGroupManager = new gcp.compute.RegionInstanceGroupManager(\"foobar\", {\n name: \"my-region-igm\",\n region: \"us-central1\",\n versions: [{\n instanceTemplate: foobarInstanceTemplate.id,\n name: \"primary\",\n }],\n targetPools: [foobarTargetPool.id],\n baseInstanceName: \"foobar\",\n});\nconst foobar = new gcp.compute.RegionAutoscaler(\"foobar\", {\n name: \"my-region-autoscaler\",\n region: \"us-central1\",\n target: foobarRegionInstanceGroupManager.id,\n autoscalingPolicy: {\n maxReplicas: 5,\n minReplicas: 1,\n cooldownPeriod: 60,\n cpuUtilization: {\n target: 0.5,\n },\n },\n});\nconst debian9 = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfoobar_instance_template = gcp.compute.InstanceTemplate(\"foobar\",\n name=\"my-instance-template\",\n machine_type=\"e2-standard-4\",\n disks=[{\n \"source_image\": \"debian-cloud/debian-11\",\n \"disk_size_gb\": 250,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n \"access_configs\": [{\n \"network_tier\": \"PREMIUM\",\n }],\n }],\n service_account={\n \"scopes\": [\n \"https://www.googleapis.com/auth/devstorage.read_only\",\n \"https://www.googleapis.com/auth/logging.write\",\n \"https://www.googleapis.com/auth/monitoring.write\",\n \"https://www.googleapis.com/auth/pubsub\",\n \"https://www.googleapis.com/auth/service.management.readonly\",\n \"https://www.googleapis.com/auth/servicecontrol\",\n \"https://www.googleapis.com/auth/trace.append\",\n ],\n })\nfoobar_target_pool = gcp.compute.TargetPool(\"foobar\", name=\"my-target-pool\")\nfoobar_region_instance_group_manager = gcp.compute.RegionInstanceGroupManager(\"foobar\",\n name=\"my-region-igm\",\n region=\"us-central1\",\n versions=[{\n \"instance_template\": foobar_instance_template.id,\n \"name\": \"primary\",\n }],\n target_pools=[foobar_target_pool.id],\n base_instance_name=\"foobar\")\nfoobar = gcp.compute.RegionAutoscaler(\"foobar\",\n name=\"my-region-autoscaler\",\n region=\"us-central1\",\n target=foobar_region_instance_group_manager.id,\n autoscaling_policy={\n \"max_replicas\": 5,\n \"min_replicas\": 1,\n \"cooldown_period\": 60,\n \"cpu_utilization\": {\n \"target\": 0.5,\n },\n })\ndebian9 = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\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 foobarInstanceTemplate = new Gcp.Compute.InstanceTemplate(\"foobar\", new()\n {\n Name = \"my-instance-template\",\n MachineType = \"e2-standard-4\",\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = \"debian-cloud/debian-11\",\n DiskSizeGb = 250,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n AccessConfigs = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceAccessConfigArgs\n {\n NetworkTier = \"PREMIUM\",\n },\n },\n },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Scopes = new[]\n {\n \"https://www.googleapis.com/auth/devstorage.read_only\",\n \"https://www.googleapis.com/auth/logging.write\",\n \"https://www.googleapis.com/auth/monitoring.write\",\n \"https://www.googleapis.com/auth/pubsub\",\n \"https://www.googleapis.com/auth/service.management.readonly\",\n \"https://www.googleapis.com/auth/servicecontrol\",\n \"https://www.googleapis.com/auth/trace.append\",\n },\n },\n });\n\n var foobarTargetPool = new Gcp.Compute.TargetPool(\"foobar\", new()\n {\n Name = \"my-target-pool\",\n });\n\n var foobarRegionInstanceGroupManager = new Gcp.Compute.RegionInstanceGroupManager(\"foobar\", new()\n {\n Name = \"my-region-igm\",\n Region = \"us-central1\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = foobarInstanceTemplate.Id,\n Name = \"primary\",\n },\n },\n TargetPools = new[]\n {\n foobarTargetPool.Id,\n },\n BaseInstanceName = \"foobar\",\n });\n\n var foobar = new Gcp.Compute.RegionAutoscaler(\"foobar\", new()\n {\n Name = \"my-region-autoscaler\",\n Region = \"us-central1\",\n Target = foobarRegionInstanceGroupManager.Id,\n AutoscalingPolicy = new Gcp.Compute.Inputs.RegionAutoscalerAutoscalingPolicyArgs\n {\n MaxReplicas = 5,\n MinReplicas = 1,\n CooldownPeriod = 60,\n CpuUtilization = new Gcp.Compute.Inputs.RegionAutoscalerAutoscalingPolicyCpuUtilizationArgs\n {\n Target = 0.5,\n },\n },\n });\n\n var debian9 = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tfoobarInstanceTemplate, err := compute.NewInstanceTemplate(ctx, \"foobar\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"my-instance-template\"),\n\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(250),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tAccessConfigs: compute.InstanceTemplateNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceAccessConfigArgs{\n\t\t\t\t\t\t\tNetworkTier: pulumi.String(\"PREMIUM\"),\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\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/devstorage.read_only\"),\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/logging.write\"),\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/monitoring.write\"),\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/pubsub\"),\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/service.management.readonly\"),\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/servicecontrol\"),\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/trace.append\"),\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\tfoobarTargetPool, err := compute.NewTargetPool(ctx, \"foobar\", \u0026compute.TargetPoolArgs{\n\t\t\tName: pulumi.String(\"my-target-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobarRegionInstanceGroupManager, err := compute.NewRegionInstanceGroupManager(ctx, \"foobar\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"my-region-igm\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: foobarInstanceTemplate.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetPools: pulumi.StringArray{\n\t\t\t\tfoobarTargetPool.ID(),\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"foobar\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionAutoscaler(ctx, \"foobar\", \u0026compute.RegionAutoscalerArgs{\n\t\t\tName: pulumi.String(\"my-region-autoscaler\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTarget: foobarRegionInstanceGroupManager.ID(),\n\t\t\tAutoscalingPolicy: \u0026compute.RegionAutoscalerAutoscalingPolicyArgs{\n\t\t\t\tMaxReplicas: pulumi.Int(5),\n\t\t\t\tMinReplicas: pulumi.Int(1),\n\t\t\t\tCooldownPeriod: pulumi.Int(60),\n\t\t\t\tCpuUtilization: \u0026compute.RegionAutoscalerAutoscalingPolicyCpuUtilizationArgs{\n\t\t\t\t\tTarget: pulumi.Float64(0.5),\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.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, 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.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport com.pulumi.gcp.compute.TargetPool;\nimport com.pulumi.gcp.compute.TargetPoolArgs;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.RegionAutoscaler;\nimport com.pulumi.gcp.compute.RegionAutoscalerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionAutoscalerAutoscalingPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionAutoscalerAutoscalingPolicyCpuUtilizationArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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 foobarInstanceTemplate = new InstanceTemplate(\"foobarInstanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"my-instance-template\")\n .machineType(\"e2-standard-4\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(\"debian-cloud/debian-11\")\n .diskSizeGb(250)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .accessConfigs(InstanceTemplateNetworkInterfaceAccessConfigArgs.builder()\n .networkTier(\"PREMIUM\")\n .build())\n .build())\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .scopes( \n \"https://www.googleapis.com/auth/devstorage.read_only\",\n \"https://www.googleapis.com/auth/logging.write\",\n \"https://www.googleapis.com/auth/monitoring.write\",\n \"https://www.googleapis.com/auth/pubsub\",\n \"https://www.googleapis.com/auth/service.management.readonly\",\n \"https://www.googleapis.com/auth/servicecontrol\",\n \"https://www.googleapis.com/auth/trace.append\")\n .build())\n .build());\n\n var foobarTargetPool = new TargetPool(\"foobarTargetPool\", TargetPoolArgs.builder()\n .name(\"my-target-pool\")\n .build());\n\n var foobarRegionInstanceGroupManager = new RegionInstanceGroupManager(\"foobarRegionInstanceGroupManager\", RegionInstanceGroupManagerArgs.builder()\n .name(\"my-region-igm\")\n .region(\"us-central1\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(foobarInstanceTemplate.id())\n .name(\"primary\")\n .build())\n .targetPools(foobarTargetPool.id())\n .baseInstanceName(\"foobar\")\n .build());\n\n var foobar = new RegionAutoscaler(\"foobar\", RegionAutoscalerArgs.builder()\n .name(\"my-region-autoscaler\")\n .region(\"us-central1\")\n .target(foobarRegionInstanceGroupManager.id())\n .autoscalingPolicy(RegionAutoscalerAutoscalingPolicyArgs.builder()\n .maxReplicas(5)\n .minReplicas(1)\n .cooldownPeriod(60)\n .cpuUtilization(RegionAutoscalerAutoscalingPolicyCpuUtilizationArgs.builder()\n .target(0.5)\n .build())\n .build())\n .build());\n\n final var debian9 = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:RegionAutoscaler\n properties:\n name: my-region-autoscaler\n region: us-central1\n target: ${foobarRegionInstanceGroupManager.id}\n autoscalingPolicy:\n maxReplicas: 5\n minReplicas: 1\n cooldownPeriod: 60\n cpuUtilization:\n target: 0.5\n foobarInstanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: foobar\n properties:\n name: my-instance-template\n machineType: e2-standard-4\n disks:\n - sourceImage: debian-cloud/debian-11\n diskSizeGb: 250\n networkInterfaces:\n - network: default\n accessConfigs:\n - networkTier: PREMIUM\n serviceAccount:\n scopes:\n - https://www.googleapis.com/auth/devstorage.read_only\n - https://www.googleapis.com/auth/logging.write\n - https://www.googleapis.com/auth/monitoring.write\n - https://www.googleapis.com/auth/pubsub\n - https://www.googleapis.com/auth/service.management.readonly\n - https://www.googleapis.com/auth/servicecontrol\n - https://www.googleapis.com/auth/trace.append\n foobarTargetPool:\n type: gcp:compute:TargetPool\n name: foobar\n properties:\n name: my-target-pool\n foobarRegionInstanceGroupManager:\n type: gcp:compute:RegionInstanceGroupManager\n name: foobar\n properties:\n name: my-region-igm\n region: us-central1\n versions:\n - instanceTemplate: ${foobarInstanceTemplate.id}\n name: primary\n targetPools:\n - ${foobarTargetPool.id}\n baseInstanceName: foobar\nvariables:\n debian9:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionAutoscaler can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/autoscalers/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionAutoscaler can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionAutoscaler:RegionAutoscaler default projects/{{project}}/regions/{{region}}/autoscalers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionAutoscaler:RegionAutoscaler default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionAutoscaler:RegionAutoscaler default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionAutoscaler:RegionAutoscaler default {{name}}\n```\n\n", "properties": { "autoscalingPolicy": { "$ref": "#/types/gcp:compute/RegionAutoscalerAutoscalingPolicy:RegionAutoscalerAutoscalingPolicy", @@ -155515,7 +155515,7 @@ } }, "gcp:compute/regionBackendService:RegionBackendService": { - "description": "A Region Backend Service defines a regionally-scoped group of virtual\nmachines that will serve traffic for load balancing.\n\n\nTo get more information about RegionBackendService, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/latest/regionBackendServices)\n* How-to Guides\n * [Internal TCP/UDP Load Balancing](https://cloud.google.com/compute/docs/load-balancing/internal/)\n\n\n\n## Example Usage\n\n### Region Backend Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"rbs-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n name: \"region-service\",\n region: \"us-central1\",\n healthChecks: defaultHealthCheck.id,\n connectionDrainingTimeoutSec: 10,\n sessionAffinity: \"CLIENT_IP\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"rbs-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.RegionBackendService(\"default\",\n name=\"region-service\",\n region=\"us-central1\",\n health_checks=default_health_check.id,\n connection_draining_timeout_sec=10,\n session_affinity=\"CLIENT_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 defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"rbs-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"region-service\",\n Region = \"us-central1\",\n HealthChecks = defaultHealthCheck.Id,\n ConnectionDrainingTimeoutSec = 10,\n SessionAffinity = \"CLIENT_IP\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"rbs-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"region-service\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t\tConnectionDrainingTimeoutSec: pulumi.Int(10),\n\t\t\tSessionAffinity: pulumi.String(\"CLIENT_IP\"),\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.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 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 defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"rbs-health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var default_ = new RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .name(\"region-service\")\n .region(\"us-central1\")\n .healthChecks(defaultHealthCheck.id())\n .connectionDrainingTimeoutSec(10)\n .sessionAffinity(\"CLIENT_IP\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n name: region-service\n region: us-central1\n healthChecks: ${defaultHealthCheck.id}\n connectionDrainingTimeoutSec: 10\n sessionAffinity: CLIENT_IP\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: rbs-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Backend Service External Iap\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n name: \"tf-test-region-service-external\",\n region: \"us-central1\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"EXTERNAL\",\n iap: {\n oauth2ClientId: \"abc\",\n oauth2ClientSecret: \"xyz\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionBackendService(\"default\",\n name=\"tf-test-region-service-external\",\n region=\"us-central1\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"EXTERNAL\",\n iap={\n \"oauth2ClientId\": \"abc\",\n \"oauth2ClientSecret\": \"xyz\",\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 @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"tf-test-region-service-external\",\n Region = \"us-central1\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"EXTERNAL\",\n Iap = new Gcp.Compute.Inputs.RegionBackendServiceIapArgs\n {\n Oauth2ClientId = \"abc\",\n Oauth2ClientSecret = \"xyz\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"tf-test-region-service-external\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL\"),\n\t\t\tIap: \u0026compute.RegionBackendServiceIapArgs{\n\t\t\t\tOauth2ClientId: pulumi.String(\"abc\"),\n\t\t\t\tOauth2ClientSecret: pulumi.String(\"xyz\"),\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.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceIapArgs;\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 RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .name(\"tf-test-region-service-external\")\n .region(\"us-central1\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"EXTERNAL\")\n .iap(RegionBackendServiceIapArgs.builder()\n .oauth2ClientId(\"abc\")\n .oauth2ClientSecret(\"xyz\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n name: tf-test-region-service-external\n region: us-central1\n protocol: HTTP\n loadBalancingScheme: EXTERNAL\n iap:\n oauth2ClientId: abc\n oauth2ClientSecret: xyz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Backend Service Cache\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n name: \"rbs-health-check\",\n region: \"us-central1\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n name: \"region-service\",\n region: \"us-central1\",\n healthChecks: defaultRegionHealthCheck.id,\n enableCdn: true,\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: 3600,\n clientTtl: 7200,\n maxTtl: 10800,\n negativeCaching: true,\n signedUrlCacheMaxAgeSec: 7200,\n },\n loadBalancingScheme: \"EXTERNAL\",\n protocol: \"HTTP\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n name=\"rbs-health-check\",\n region=\"us-central1\",\n http_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.RegionBackendService(\"default\",\n name=\"region-service\",\n region=\"us-central1\",\n health_checks=default_region_health_check.id,\n enable_cdn=True,\n cdn_policy={\n \"cacheMode\": \"CACHE_ALL_STATIC\",\n \"defaultTtl\": 3600,\n \"clientTtl\": 7200,\n \"maxTtl\": 10800,\n \"negativeCaching\": True,\n \"signedUrlCacheMaxAgeSec\": 7200,\n },\n load_balancing_scheme=\"EXTERNAL\",\n protocol=\"HTTP\")\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 defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Name = \"rbs-health-check\",\n Region = \"us-central1\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"region-service\",\n Region = \"us-central1\",\n HealthChecks = defaultRegionHealthCheck.Id,\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.RegionBackendServiceCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = 3600,\n ClientTtl = 7200,\n MaxTtl = 10800,\n NegativeCaching = true,\n SignedUrlCacheMaxAgeSec = 7200,\n },\n LoadBalancingScheme = \"EXTERNAL\",\n Protocol = \"HTTP\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"rbs-health-check\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"region-service\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: defaultRegionHealthCheck.ID(),\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.RegionBackendServiceCdnPolicyArgs{\n\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\tDefaultTtl: pulumi.Int(3600),\n\t\t\t\tClientTtl: pulumi.Int(7200),\n\t\t\t\tMaxTtl: pulumi.Int(10800),\n\t\t\t\tNegativeCaching: pulumi.Bool(true),\n\t\t\t\tSignedUrlCacheMaxAgeSec: pulumi.Int(7200),\n\t\t\t},\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\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.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.RegionBackendServiceCdnPolicyArgs;\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 defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .name(\"rbs-health-check\")\n .region(\"us-central1\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var default_ = new RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .name(\"region-service\")\n .region(\"us-central1\")\n .healthChecks(defaultRegionHealthCheck.id())\n .enableCdn(true)\n .cdnPolicy(RegionBackendServiceCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(3600)\n .clientTtl(7200)\n .maxTtl(10800)\n .negativeCaching(true)\n .signedUrlCacheMaxAgeSec(7200)\n .build())\n .loadBalancingScheme(\"EXTERNAL\")\n .protocol(\"HTTP\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n name: region-service\n region: us-central1\n healthChecks: ${defaultRegionHealthCheck.id}\n enableCdn: true\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600\n clientTtl: 7200\n maxTtl: 10800\n negativeCaching: true\n signedUrlCacheMaxAgeSec: 7200\n loadBalancingScheme: EXTERNAL\n protocol: HTTP\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n name: rbs-health-check\n region: us-central1\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Backend Service Ilb Round Robin\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.HealthCheck(\"health_check\", {\n name: \"rbs-health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"region-service\",\n healthChecks: healthCheck.id,\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n localityLbPolicy: \"ROUND_ROBIN\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.HealthCheck(\"health_check\",\n name=\"rbs-health-check\",\n http_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"region-service\",\n health_checks=health_check.id,\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n locality_lb_policy=\"ROUND_ROBIN\")\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 healthCheck = new Gcp.Compute.HealthCheck(\"health_check\", new()\n {\n Name = \"rbs-health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"region-service\",\n HealthChecks = healthCheck.Id,\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n LocalityLbPolicy = \"ROUND_ROBIN\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thealthCheck, err := compute.NewHealthCheck(ctx, \"health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"rbs-health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"region-service\"),\n\t\t\tHealthChecks: healthCheck.ID(),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tLocalityLbPolicy: pulumi.String(\"ROUND_ROBIN\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\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 HealthCheck(\"healthCheck\", HealthCheckArgs.builder()\n .name(\"rbs-health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var default_ = new RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"region-service\")\n .healthChecks(healthCheck.id())\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .localityLbPolicy(\"ROUND_ROBIN\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: region-service\n healthChecks: ${healthCheck.id}\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n localityLbPolicy: ROUND_ROBIN\n healthCheck:\n type: gcp:compute:HealthCheck\n name: health_check\n properties:\n name: rbs-health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Backend Service External\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.RegionHealthCheck(\"health_check\", {\n name: \"rbs-health-check\",\n region: \"us-central1\",\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"region-service\",\n healthChecks: healthCheck.id,\n protocol: \"TCP\",\n loadBalancingScheme: \"EXTERNAL\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.RegionHealthCheck(\"health_check\",\n name=\"rbs-health-check\",\n region=\"us-central1\",\n tcp_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"region-service\",\n health_checks=health_check.id,\n protocol=\"TCP\",\n load_balancing_scheme=\"EXTERNAL\")\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 healthCheck = new Gcp.Compute.RegionHealthCheck(\"health_check\", new()\n {\n Name = \"rbs-health-check\",\n Region = \"us-central1\",\n TcpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"region-service\",\n HealthChecks = healthCheck.Id,\n Protocol = \"TCP\",\n LoadBalancingScheme = \"EXTERNAL\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thealthCheck, err := compute.NewRegionHealthCheck(ctx, \"health_check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"rbs-health-check\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTcpHealthCheck: \u0026compute.RegionHealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"region-service\"),\n\t\t\tHealthChecks: healthCheck.ID(),\n\t\t\tProtocol: pulumi.String(\"TCP\"),\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\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.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 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 .name(\"rbs-health-check\")\n .region(\"us-central1\")\n .tcpHealthCheck(RegionHealthCheckTcpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var default_ = new RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"region-service\")\n .healthChecks(healthCheck.id())\n .protocol(\"TCP\")\n .loadBalancingScheme(\"EXTERNAL\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: region-service\n healthChecks: ${healthCheck.id}\n protocol: TCP\n loadBalancingScheme: EXTERNAL\n healthCheck:\n type: gcp:compute:RegionHealthCheck\n name: health_check\n properties:\n name: rbs-health-check\n region: us-central1\n tcpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Backend Service External Weighted\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.RegionHealthCheck(\"health_check\", {\n name: \"rbs-health-check\",\n region: \"us-central1\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"region-service\",\n healthChecks: healthCheck.id,\n protocol: \"TCP\",\n loadBalancingScheme: \"EXTERNAL\",\n localityLbPolicy: \"WEIGHTED_MAGLEV\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.RegionHealthCheck(\"health_check\",\n name=\"rbs-health-check\",\n region=\"us-central1\",\n http_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"region-service\",\n health_checks=health_check.id,\n protocol=\"TCP\",\n load_balancing_scheme=\"EXTERNAL\",\n locality_lb_policy=\"WEIGHTED_MAGLEV\")\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 healthCheck = new Gcp.Compute.RegionHealthCheck(\"health_check\", new()\n {\n Name = \"rbs-health-check\",\n Region = \"us-central1\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"region-service\",\n HealthChecks = healthCheck.Id,\n Protocol = \"TCP\",\n LoadBalancingScheme = \"EXTERNAL\",\n LocalityLbPolicy = \"WEIGHTED_MAGLEV\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thealthCheck, err := compute.NewRegionHealthCheck(ctx, \"health_check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"rbs-health-check\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"region-service\"),\n\t\t\tHealthChecks: healthCheck.ID(),\n\t\t\tProtocol: pulumi.String(\"TCP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL\"),\n\t\t\tLocalityLbPolicy: pulumi.String(\"WEIGHTED_MAGLEV\"),\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.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 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 .name(\"rbs-health-check\")\n .region(\"us-central1\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var default_ = new RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"region-service\")\n .healthChecks(healthCheck.id())\n .protocol(\"TCP\")\n .loadBalancingScheme(\"EXTERNAL\")\n .localityLbPolicy(\"WEIGHTED_MAGLEV\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: region-service\n healthChecks: ${healthCheck.id}\n protocol: TCP\n loadBalancingScheme: EXTERNAL\n localityLbPolicy: WEIGHTED_MAGLEV\n healthCheck:\n type: gcp:compute:RegionHealthCheck\n name: health_check\n properties:\n name: rbs-health-check\n region: us-central1\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Backend Service Ilb Ring Hash\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.HealthCheck(\"health_check\", {\n name: \"rbs-health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"region-service\",\n healthChecks: healthCheck.id,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n localityLbPolicy: \"RING_HASH\",\n sessionAffinity: \"HTTP_COOKIE\",\n protocol: \"HTTP\",\n circuitBreakers: {\n maxConnections: 10,\n },\n consistentHash: {\n httpCookie: {\n ttl: {\n seconds: 11,\n nanos: 1111,\n },\n name: \"mycookie\",\n },\n },\n outlierDetection: {\n consecutiveErrors: 2,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.HealthCheck(\"health_check\",\n name=\"rbs-health-check\",\n http_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"region-service\",\n health_checks=health_check.id,\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n locality_lb_policy=\"RING_HASH\",\n session_affinity=\"HTTP_COOKIE\",\n protocol=\"HTTP\",\n circuit_breakers={\n \"maxConnections\": 10,\n },\n consistent_hash={\n \"httpCookie\": {\n \"ttl\": {\n \"seconds\": 11,\n \"nanos\": 1111,\n },\n \"name\": \"mycookie\",\n },\n },\n outlier_detection={\n \"consecutiveErrors\": 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 healthCheck = new Gcp.Compute.HealthCheck(\"health_check\", new()\n {\n Name = \"rbs-health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"region-service\",\n HealthChecks = healthCheck.Id,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n LocalityLbPolicy = \"RING_HASH\",\n SessionAffinity = \"HTTP_COOKIE\",\n Protocol = \"HTTP\",\n CircuitBreakers = new Gcp.Compute.Inputs.RegionBackendServiceCircuitBreakersArgs\n {\n MaxConnections = 10,\n },\n ConsistentHash = new Gcp.Compute.Inputs.RegionBackendServiceConsistentHashArgs\n {\n HttpCookie = new Gcp.Compute.Inputs.RegionBackendServiceConsistentHashHttpCookieArgs\n {\n Ttl = new Gcp.Compute.Inputs.RegionBackendServiceConsistentHashHttpCookieTtlArgs\n {\n Seconds = 11,\n Nanos = 1111,\n },\n Name = \"mycookie\",\n },\n },\n OutlierDetection = new Gcp.Compute.Inputs.RegionBackendServiceOutlierDetectionArgs\n {\n ConsecutiveErrors = 2,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thealthCheck, err := compute.NewHealthCheck(ctx, \"health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"rbs-health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"region-service\"),\n\t\t\tHealthChecks: healthCheck.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tLocalityLbPolicy: pulumi.String(\"RING_HASH\"),\n\t\t\tSessionAffinity: pulumi.String(\"HTTP_COOKIE\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tCircuitBreakers: \u0026compute.RegionBackendServiceCircuitBreakersArgs{\n\t\t\t\tMaxConnections: pulumi.Int(10),\n\t\t\t},\n\t\t\tConsistentHash: \u0026compute.RegionBackendServiceConsistentHashArgs{\n\t\t\t\tHttpCookie: \u0026compute.RegionBackendServiceConsistentHashHttpCookieArgs{\n\t\t\t\t\tTtl: \u0026compute.RegionBackendServiceConsistentHashHttpCookieTtlArgs{\n\t\t\t\t\t\tSeconds: pulumi.Int(11),\n\t\t\t\t\t\tNanos: pulumi.Int(1111),\n\t\t\t\t\t},\n\t\t\t\t\tName: pulumi.String(\"mycookie\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOutlierDetection: \u0026compute.RegionBackendServiceOutlierDetectionArgs{\n\t\t\t\tConsecutiveErrors: pulumi.Int(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.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceCircuitBreakersArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceConsistentHashArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceConsistentHashHttpCookieArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceConsistentHashHttpCookieTtlArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceOutlierDetectionArgs;\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 HealthCheck(\"healthCheck\", HealthCheckArgs.builder()\n .name(\"rbs-health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var default_ = new RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"region-service\")\n .healthChecks(healthCheck.id())\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .localityLbPolicy(\"RING_HASH\")\n .sessionAffinity(\"HTTP_COOKIE\")\n .protocol(\"HTTP\")\n .circuitBreakers(RegionBackendServiceCircuitBreakersArgs.builder()\n .maxConnections(10)\n .build())\n .consistentHash(RegionBackendServiceConsistentHashArgs.builder()\n .httpCookie(RegionBackendServiceConsistentHashHttpCookieArgs.builder()\n .ttl(RegionBackendServiceConsistentHashHttpCookieTtlArgs.builder()\n .seconds(11)\n .nanos(1111)\n .build())\n .name(\"mycookie\")\n .build())\n .build())\n .outlierDetection(RegionBackendServiceOutlierDetectionArgs.builder()\n .consecutiveErrors(2)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: region-service\n healthChecks: ${healthCheck.id}\n loadBalancingScheme: INTERNAL_MANAGED\n localityLbPolicy: RING_HASH\n sessionAffinity: HTTP_COOKIE\n protocol: HTTP\n circuitBreakers:\n maxConnections: 10\n consistentHash:\n httpCookie:\n ttl:\n seconds: 11\n nanos: 1111\n name: mycookie\n outlierDetection:\n consecutiveErrors: 2\n healthCheck:\n type: gcp:compute:HealthCheck\n name: health_check\n properties:\n name: rbs-health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Backend Service Balancing Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst debianImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"rbs-net\",\n autoCreateSubnetworks: false,\n routingMode: \"REGIONAL\",\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"rbs-net-default\",\n ipCidrRange: \"10.1.2.0/24\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n});\nconst instanceTemplate = new gcp.compute.InstanceTemplate(\"instance_template\", {\n name: \"template-region-service\",\n machineType: \"e2-medium\",\n networkInterfaces: [{\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n }],\n disks: [{\n sourceImage: debianImage.then(debianImage =\u003e debianImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n tags: [\n \"allow-ssh\",\n \"load-balanced-backend\",\n ],\n});\nconst rigm = new gcp.compute.RegionInstanceGroupManager(\"rigm\", {\n region: \"us-central1\",\n name: \"rbs-rigm\",\n versions: [{\n instanceTemplate: instanceTemplate.id,\n name: \"primary\",\n }],\n baseInstanceName: \"internal-glb\",\n targetSize: 1,\n});\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"rbs-health-check\",\n httpHealthCheck: {\n portSpecification: \"USE_SERVING_PORT\",\n },\n});\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n backends: [{\n group: rigm.instanceGroup,\n balancingMode: \"UTILIZATION\",\n capacityScaler: 1,\n }],\n region: \"us-central1\",\n name: \"region-service\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultRegionHealthCheck.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndebian_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault_network = gcp.compute.Network(\"default\",\n name=\"rbs-net\",\n auto_create_subnetworks=False,\n routing_mode=\"REGIONAL\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"rbs-net-default\",\n ip_cidr_range=\"10.1.2.0/24\",\n region=\"us-central1\",\n network=default_network.id)\ninstance_template = gcp.compute.InstanceTemplate(\"instance_template\",\n name=\"template-region-service\",\n machine_type=\"e2-medium\",\n network_interfaces=[{\n \"network\": default_network.id,\n \"subnetwork\": default_subnetwork.id,\n }],\n disks=[{\n \"sourceImage\": debian_image.self_link,\n \"autoDelete\": True,\n \"boot\": True,\n }],\n tags=[\n \"allow-ssh\",\n \"load-balanced-backend\",\n ])\nrigm = gcp.compute.RegionInstanceGroupManager(\"rigm\",\n region=\"us-central1\",\n name=\"rbs-rigm\",\n versions=[{\n \"instanceTemplate\": instance_template.id,\n \"name\": \"primary\",\n }],\n base_instance_name=\"internal-glb\",\n target_size=1)\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"rbs-health-check\",\n http_health_check={\n \"portSpecification\": \"USE_SERVING_PORT\",\n })\ndefault = gcp.compute.RegionBackendService(\"default\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n backends=[{\n \"group\": rigm.instance_group,\n \"balancingMode\": \"UTILIZATION\",\n \"capacityScaler\": 1,\n }],\n region=\"us-central1\",\n name=\"region-service\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_region_health_check.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 debianImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"rbs-net\",\n AutoCreateSubnetworks = false,\n RoutingMode = \"REGIONAL\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"rbs-net-default\",\n IpCidrRange = \"10.1.2.0/24\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n });\n\n var instanceTemplate = new Gcp.Compute.InstanceTemplate(\"instance_template\", new()\n {\n Name = \"template-region-service\",\n MachineType = \"e2-medium\",\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = debianImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n Tags = new[]\n {\n \"allow-ssh\",\n \"load-balanced-backend\",\n },\n });\n\n var rigm = new Gcp.Compute.RegionInstanceGroupManager(\"rigm\", new()\n {\n Region = \"us-central1\",\n Name = \"rbs-rigm\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = instanceTemplate.Id,\n Name = \"primary\",\n },\n },\n BaseInstanceName = \"internal-glb\",\n TargetSize = 1,\n });\n\n var defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"rbs-health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n PortSpecification = \"USE_SERVING_PORT\",\n },\n });\n\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n Backends = new[]\n {\n new Gcp.Compute.Inputs.RegionBackendServiceBackendArgs\n {\n Group = rigm.InstanceGroup,\n BalancingMode = \"UTILIZATION\",\n CapacityScaler = 1,\n },\n },\n Region = \"us-central1\",\n Name = \"region-service\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultRegionHealthCheck.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdebianImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"rbs-net\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t\tRoutingMode: pulumi.String(\"REGIONAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"rbs-net-default\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.2.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstanceTemplate, err := compute.NewInstanceTemplate(ctx, \"instance_template\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"template-region-service\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(debianImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"allow-ssh\"),\n\t\t\t\tpulumi.String(\"load-balanced-backend\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trigm, err := compute.NewRegionInstanceGroupManager(ctx, \"rigm\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"rbs-rigm\"),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: instanceTemplate.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"internal-glb\"),\n\t\t\tTargetSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"rbs-health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPortSpecification: pulumi.String(\"USE_SERVING_PORT\"),\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.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tBackends: compute.RegionBackendServiceBackendArray{\n\t\t\t\t\u0026compute.RegionBackendServiceBackendArgs{\n\t\t\t\t\tGroup: rigm.InstanceGroup,\n\t\t\t\t\tBalancingMode: pulumi.String(\"UTILIZATION\"),\n\t\t\t\t\tCapacityScaler: pulumi.Float64(1),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"region-service\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultRegionHealthCheck.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.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.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 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 .name(\"rbs-net\")\n .autoCreateSubnetworks(false)\n .routingMode(\"REGIONAL\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"rbs-net-default\")\n .ipCidrRange(\"10.1.2.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .build());\n\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"template-region-service\")\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());\n\n var rigm = new RegionInstanceGroupManager(\"rigm\", RegionInstanceGroupManagerArgs.builder()\n .region(\"us-central1\")\n .name(\"rbs-rigm\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(instanceTemplate.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"internal-glb\")\n .targetSize(1)\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"rbs-health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .portSpecification(\"USE_SERVING_PORT\")\n .build())\n .build());\n\n var default_ = new RegionBackendService(\"default\", 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 .name(\"region-service\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultRegionHealthCheck.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\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 name: region-service\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultRegionHealthCheck.id}\n rigm:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n region: us-central1\n name: rbs-rigm\n versions:\n - instanceTemplate: ${instanceTemplate.id}\n name: primary\n baseInstanceName: internal-glb\n targetSize: 1\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: instance_template\n properties:\n name: template-region-service\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 defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n region: us-central1\n name: rbs-health-check\n httpHealthCheck:\n portSpecification: USE_SERVING_PORT\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: rbs-net\n autoCreateSubnetworks: false\n routingMode: REGIONAL\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: rbs-net-default\n ipCidrRange: 10.1.2.0/24\n region: us-central1\n network: ${defaultNetwork.id}\nvariables:\n debianImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Backend Service Connection Tracking\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.RegionHealthCheck(\"health_check\", {\n name: \"rbs-health-check\",\n region: \"us-central1\",\n tcpHealthCheck: {\n port: 22,\n },\n});\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n name: \"region-service\",\n region: \"us-central1\",\n healthChecks: healthCheck.id,\n connectionDrainingTimeoutSec: 10,\n sessionAffinity: \"CLIENT_IP\",\n protocol: \"TCP\",\n loadBalancingScheme: \"EXTERNAL\",\n connectionTrackingPolicy: {\n trackingMode: \"PER_SESSION\",\n connectionPersistenceOnUnhealthyBackends: \"NEVER_PERSIST\",\n idleTimeoutSec: 60,\n enableStrongAffinity: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.RegionHealthCheck(\"health_check\",\n name=\"rbs-health-check\",\n region=\"us-central1\",\n tcp_health_check={\n \"port\": 22,\n })\ndefault = gcp.compute.RegionBackendService(\"default\",\n name=\"region-service\",\n region=\"us-central1\",\n health_checks=health_check.id,\n connection_draining_timeout_sec=10,\n session_affinity=\"CLIENT_IP\",\n protocol=\"TCP\",\n load_balancing_scheme=\"EXTERNAL\",\n connection_tracking_policy={\n \"trackingMode\": \"PER_SESSION\",\n \"connectionPersistenceOnUnhealthyBackends\": \"NEVER_PERSIST\",\n \"idleTimeoutSec\": 60,\n \"enableStrongAffinity\": 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 healthCheck = new Gcp.Compute.RegionHealthCheck(\"health_check\", new()\n {\n Name = \"rbs-health-check\",\n Region = \"us-central1\",\n TcpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckTcpHealthCheckArgs\n {\n Port = 22,\n },\n });\n\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"region-service\",\n Region = \"us-central1\",\n HealthChecks = healthCheck.Id,\n ConnectionDrainingTimeoutSec = 10,\n SessionAffinity = \"CLIENT_IP\",\n Protocol = \"TCP\",\n LoadBalancingScheme = \"EXTERNAL\",\n ConnectionTrackingPolicy = new Gcp.Compute.Inputs.RegionBackendServiceConnectionTrackingPolicyArgs\n {\n TrackingMode = \"PER_SESSION\",\n ConnectionPersistenceOnUnhealthyBackends = \"NEVER_PERSIST\",\n IdleTimeoutSec = 60,\n EnableStrongAffinity = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thealthCheck, err := compute.NewRegionHealthCheck(ctx, \"health_check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"rbs-health-check\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTcpHealthCheck: \u0026compute.RegionHealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(22),\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.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"region-service\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: healthCheck.ID(),\n\t\t\tConnectionDrainingTimeoutSec: pulumi.Int(10),\n\t\t\tSessionAffinity: pulumi.String(\"CLIENT_IP\"),\n\t\t\tProtocol: pulumi.String(\"TCP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL\"),\n\t\t\tConnectionTrackingPolicy: \u0026compute.RegionBackendServiceConnectionTrackingPolicyArgs{\n\t\t\t\tTrackingMode: pulumi.String(\"PER_SESSION\"),\n\t\t\t\tConnectionPersistenceOnUnhealthyBackends: pulumi.String(\"NEVER_PERSIST\"),\n\t\t\t\tIdleTimeoutSec: pulumi.Int(60),\n\t\t\t\tEnableStrongAffinity: 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.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.inputs.RegionBackendServiceConnectionTrackingPolicyArgs;\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 .name(\"rbs-health-check\")\n .region(\"us-central1\")\n .tcpHealthCheck(RegionHealthCheckTcpHealthCheckArgs.builder()\n .port(22)\n .build())\n .build());\n\n var default_ = new RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .name(\"region-service\")\n .region(\"us-central1\")\n .healthChecks(healthCheck.id())\n .connectionDrainingTimeoutSec(10)\n .sessionAffinity(\"CLIENT_IP\")\n .protocol(\"TCP\")\n .loadBalancingScheme(\"EXTERNAL\")\n .connectionTrackingPolicy(RegionBackendServiceConnectionTrackingPolicyArgs.builder()\n .trackingMode(\"PER_SESSION\")\n .connectionPersistenceOnUnhealthyBackends(\"NEVER_PERSIST\")\n .idleTimeoutSec(60)\n .enableStrongAffinity(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n name: region-service\n region: us-central1\n healthChecks: ${healthCheck.id}\n connectionDrainingTimeoutSec: 10\n sessionAffinity: CLIENT_IP\n protocol: TCP\n loadBalancingScheme: EXTERNAL\n connectionTrackingPolicy:\n trackingMode: PER_SESSION\n connectionPersistenceOnUnhealthyBackends: NEVER_PERSIST\n idleTimeoutSec: 60\n enableStrongAffinity: true\n healthCheck:\n type: gcp:compute:RegionHealthCheck\n name: health_check\n properties:\n name: rbs-health-check\n region: us-central1\n tcpHealthCheck:\n port: 22\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionBackendService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/backendServices/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionBackendService can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionBackendService:RegionBackendService default projects/{{project}}/regions/{{region}}/backendServices/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionBackendService:RegionBackendService default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionBackendService:RegionBackendService default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionBackendService:RegionBackendService default {{name}}\n```\n\n", + "description": "A Region Backend Service defines a regionally-scoped group of virtual\nmachines that will serve traffic for load balancing.\n\n\nTo get more information about RegionBackendService, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/latest/regionBackendServices)\n* How-to Guides\n * [Internal TCP/UDP Load Balancing](https://cloud.google.com/compute/docs/load-balancing/internal/)\n\n\n\n## Example Usage\n\n### Region Backend Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"rbs-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n name: \"region-service\",\n region: \"us-central1\",\n healthChecks: defaultHealthCheck.id,\n connectionDrainingTimeoutSec: 10,\n sessionAffinity: \"CLIENT_IP\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"rbs-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.RegionBackendService(\"default\",\n name=\"region-service\",\n region=\"us-central1\",\n health_checks=default_health_check.id,\n connection_draining_timeout_sec=10,\n session_affinity=\"CLIENT_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 defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"rbs-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"region-service\",\n Region = \"us-central1\",\n HealthChecks = defaultHealthCheck.Id,\n ConnectionDrainingTimeoutSec = 10,\n SessionAffinity = \"CLIENT_IP\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"rbs-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"region-service\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t\tConnectionDrainingTimeoutSec: pulumi.Int(10),\n\t\t\tSessionAffinity: pulumi.String(\"CLIENT_IP\"),\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.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 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 defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"rbs-health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var default_ = new RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .name(\"region-service\")\n .region(\"us-central1\")\n .healthChecks(defaultHealthCheck.id())\n .connectionDrainingTimeoutSec(10)\n .sessionAffinity(\"CLIENT_IP\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n name: region-service\n region: us-central1\n healthChecks: ${defaultHealthCheck.id}\n connectionDrainingTimeoutSec: 10\n sessionAffinity: CLIENT_IP\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: rbs-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Backend Service External Iap\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n name: \"tf-test-region-service-external\",\n region: \"us-central1\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"EXTERNAL\",\n iap: {\n oauth2ClientId: \"abc\",\n oauth2ClientSecret: \"xyz\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionBackendService(\"default\",\n name=\"tf-test-region-service-external\",\n region=\"us-central1\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"EXTERNAL\",\n iap={\n \"oauth2_client_id\": \"abc\",\n \"oauth2_client_secret\": \"xyz\",\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 @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"tf-test-region-service-external\",\n Region = \"us-central1\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"EXTERNAL\",\n Iap = new Gcp.Compute.Inputs.RegionBackendServiceIapArgs\n {\n Oauth2ClientId = \"abc\",\n Oauth2ClientSecret = \"xyz\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"tf-test-region-service-external\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL\"),\n\t\t\tIap: \u0026compute.RegionBackendServiceIapArgs{\n\t\t\t\tOauth2ClientId: pulumi.String(\"abc\"),\n\t\t\t\tOauth2ClientSecret: pulumi.String(\"xyz\"),\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.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceIapArgs;\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 RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .name(\"tf-test-region-service-external\")\n .region(\"us-central1\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"EXTERNAL\")\n .iap(RegionBackendServiceIapArgs.builder()\n .oauth2ClientId(\"abc\")\n .oauth2ClientSecret(\"xyz\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n name: tf-test-region-service-external\n region: us-central1\n protocol: HTTP\n loadBalancingScheme: EXTERNAL\n iap:\n oauth2ClientId: abc\n oauth2ClientSecret: xyz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Backend Service Cache\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n name: \"rbs-health-check\",\n region: \"us-central1\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n name: \"region-service\",\n region: \"us-central1\",\n healthChecks: defaultRegionHealthCheck.id,\n enableCdn: true,\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: 3600,\n clientTtl: 7200,\n maxTtl: 10800,\n negativeCaching: true,\n signedUrlCacheMaxAgeSec: 7200,\n },\n loadBalancingScheme: \"EXTERNAL\",\n protocol: \"HTTP\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n name=\"rbs-health-check\",\n region=\"us-central1\",\n http_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.RegionBackendService(\"default\",\n name=\"region-service\",\n region=\"us-central1\",\n health_checks=default_region_health_check.id,\n enable_cdn=True,\n cdn_policy={\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": 3600,\n \"client_ttl\": 7200,\n \"max_ttl\": 10800,\n \"negative_caching\": True,\n \"signed_url_cache_max_age_sec\": 7200,\n },\n load_balancing_scheme=\"EXTERNAL\",\n protocol=\"HTTP\")\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 defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Name = \"rbs-health-check\",\n Region = \"us-central1\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"region-service\",\n Region = \"us-central1\",\n HealthChecks = defaultRegionHealthCheck.Id,\n EnableCdn = true,\n CdnPolicy = new Gcp.Compute.Inputs.RegionBackendServiceCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = 3600,\n ClientTtl = 7200,\n MaxTtl = 10800,\n NegativeCaching = true,\n SignedUrlCacheMaxAgeSec = 7200,\n },\n LoadBalancingScheme = \"EXTERNAL\",\n Protocol = \"HTTP\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"rbs-health-check\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"region-service\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: defaultRegionHealthCheck.ID(),\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tCdnPolicy: \u0026compute.RegionBackendServiceCdnPolicyArgs{\n\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\tDefaultTtl: pulumi.Int(3600),\n\t\t\t\tClientTtl: pulumi.Int(7200),\n\t\t\t\tMaxTtl: pulumi.Int(10800),\n\t\t\t\tNegativeCaching: pulumi.Bool(true),\n\t\t\t\tSignedUrlCacheMaxAgeSec: pulumi.Int(7200),\n\t\t\t},\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\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.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.RegionBackendServiceCdnPolicyArgs;\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 defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .name(\"rbs-health-check\")\n .region(\"us-central1\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var default_ = new RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .name(\"region-service\")\n .region(\"us-central1\")\n .healthChecks(defaultRegionHealthCheck.id())\n .enableCdn(true)\n .cdnPolicy(RegionBackendServiceCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(3600)\n .clientTtl(7200)\n .maxTtl(10800)\n .negativeCaching(true)\n .signedUrlCacheMaxAgeSec(7200)\n .build())\n .loadBalancingScheme(\"EXTERNAL\")\n .protocol(\"HTTP\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n name: region-service\n region: us-central1\n healthChecks: ${defaultRegionHealthCheck.id}\n enableCdn: true\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600\n clientTtl: 7200\n maxTtl: 10800\n negativeCaching: true\n signedUrlCacheMaxAgeSec: 7200\n loadBalancingScheme: EXTERNAL\n protocol: HTTP\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n name: rbs-health-check\n region: us-central1\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Backend Service Ilb Round Robin\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.HealthCheck(\"health_check\", {\n name: \"rbs-health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"region-service\",\n healthChecks: healthCheck.id,\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n localityLbPolicy: \"ROUND_ROBIN\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.HealthCheck(\"health_check\",\n name=\"rbs-health-check\",\n http_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"region-service\",\n health_checks=health_check.id,\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n locality_lb_policy=\"ROUND_ROBIN\")\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 healthCheck = new Gcp.Compute.HealthCheck(\"health_check\", new()\n {\n Name = \"rbs-health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"region-service\",\n HealthChecks = healthCheck.Id,\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n LocalityLbPolicy = \"ROUND_ROBIN\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thealthCheck, err := compute.NewHealthCheck(ctx, \"health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"rbs-health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"region-service\"),\n\t\t\tHealthChecks: healthCheck.ID(),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tLocalityLbPolicy: pulumi.String(\"ROUND_ROBIN\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\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 HealthCheck(\"healthCheck\", HealthCheckArgs.builder()\n .name(\"rbs-health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var default_ = new RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"region-service\")\n .healthChecks(healthCheck.id())\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .localityLbPolicy(\"ROUND_ROBIN\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: region-service\n healthChecks: ${healthCheck.id}\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n localityLbPolicy: ROUND_ROBIN\n healthCheck:\n type: gcp:compute:HealthCheck\n name: health_check\n properties:\n name: rbs-health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Backend Service External\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.RegionHealthCheck(\"health_check\", {\n name: \"rbs-health-check\",\n region: \"us-central1\",\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"region-service\",\n healthChecks: healthCheck.id,\n protocol: \"TCP\",\n loadBalancingScheme: \"EXTERNAL\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.RegionHealthCheck(\"health_check\",\n name=\"rbs-health-check\",\n region=\"us-central1\",\n tcp_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"region-service\",\n health_checks=health_check.id,\n protocol=\"TCP\",\n load_balancing_scheme=\"EXTERNAL\")\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 healthCheck = new Gcp.Compute.RegionHealthCheck(\"health_check\", new()\n {\n Name = \"rbs-health-check\",\n Region = \"us-central1\",\n TcpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"region-service\",\n HealthChecks = healthCheck.Id,\n Protocol = \"TCP\",\n LoadBalancingScheme = \"EXTERNAL\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thealthCheck, err := compute.NewRegionHealthCheck(ctx, \"health_check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"rbs-health-check\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTcpHealthCheck: \u0026compute.RegionHealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"region-service\"),\n\t\t\tHealthChecks: healthCheck.ID(),\n\t\t\tProtocol: pulumi.String(\"TCP\"),\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\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.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 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 .name(\"rbs-health-check\")\n .region(\"us-central1\")\n .tcpHealthCheck(RegionHealthCheckTcpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var default_ = new RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"region-service\")\n .healthChecks(healthCheck.id())\n .protocol(\"TCP\")\n .loadBalancingScheme(\"EXTERNAL\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: region-service\n healthChecks: ${healthCheck.id}\n protocol: TCP\n loadBalancingScheme: EXTERNAL\n healthCheck:\n type: gcp:compute:RegionHealthCheck\n name: health_check\n properties:\n name: rbs-health-check\n region: us-central1\n tcpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Backend Service External Weighted\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.RegionHealthCheck(\"health_check\", {\n name: \"rbs-health-check\",\n region: \"us-central1\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"region-service\",\n healthChecks: healthCheck.id,\n protocol: \"TCP\",\n loadBalancingScheme: \"EXTERNAL\",\n localityLbPolicy: \"WEIGHTED_MAGLEV\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.RegionHealthCheck(\"health_check\",\n name=\"rbs-health-check\",\n region=\"us-central1\",\n http_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"region-service\",\n health_checks=health_check.id,\n protocol=\"TCP\",\n load_balancing_scheme=\"EXTERNAL\",\n locality_lb_policy=\"WEIGHTED_MAGLEV\")\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 healthCheck = new Gcp.Compute.RegionHealthCheck(\"health_check\", new()\n {\n Name = \"rbs-health-check\",\n Region = \"us-central1\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"region-service\",\n HealthChecks = healthCheck.Id,\n Protocol = \"TCP\",\n LoadBalancingScheme = \"EXTERNAL\",\n LocalityLbPolicy = \"WEIGHTED_MAGLEV\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thealthCheck, err := compute.NewRegionHealthCheck(ctx, \"health_check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"rbs-health-check\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"region-service\"),\n\t\t\tHealthChecks: healthCheck.ID(),\n\t\t\tProtocol: pulumi.String(\"TCP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL\"),\n\t\t\tLocalityLbPolicy: pulumi.String(\"WEIGHTED_MAGLEV\"),\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.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 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 .name(\"rbs-health-check\")\n .region(\"us-central1\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var default_ = new RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"region-service\")\n .healthChecks(healthCheck.id())\n .protocol(\"TCP\")\n .loadBalancingScheme(\"EXTERNAL\")\n .localityLbPolicy(\"WEIGHTED_MAGLEV\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: region-service\n healthChecks: ${healthCheck.id}\n protocol: TCP\n loadBalancingScheme: EXTERNAL\n localityLbPolicy: WEIGHTED_MAGLEV\n healthCheck:\n type: gcp:compute:RegionHealthCheck\n name: health_check\n properties:\n name: rbs-health-check\n region: us-central1\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Backend Service Ilb Ring Hash\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.HealthCheck(\"health_check\", {\n name: \"rbs-health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"region-service\",\n healthChecks: healthCheck.id,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n localityLbPolicy: \"RING_HASH\",\n sessionAffinity: \"HTTP_COOKIE\",\n protocol: \"HTTP\",\n circuitBreakers: {\n maxConnections: 10,\n },\n consistentHash: {\n httpCookie: {\n ttl: {\n seconds: 11,\n nanos: 1111,\n },\n name: \"mycookie\",\n },\n },\n outlierDetection: {\n consecutiveErrors: 2,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.HealthCheck(\"health_check\",\n name=\"rbs-health-check\",\n http_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"region-service\",\n health_checks=health_check.id,\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n locality_lb_policy=\"RING_HASH\",\n session_affinity=\"HTTP_COOKIE\",\n protocol=\"HTTP\",\n circuit_breakers={\n \"max_connections\": 10,\n },\n consistent_hash={\n \"http_cookie\": {\n \"ttl\": {\n \"seconds\": 11,\n \"nanos\": 1111,\n },\n \"name\": \"mycookie\",\n },\n },\n outlier_detection={\n \"consecutive_errors\": 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 healthCheck = new Gcp.Compute.HealthCheck(\"health_check\", new()\n {\n Name = \"rbs-health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"region-service\",\n HealthChecks = healthCheck.Id,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n LocalityLbPolicy = \"RING_HASH\",\n SessionAffinity = \"HTTP_COOKIE\",\n Protocol = \"HTTP\",\n CircuitBreakers = new Gcp.Compute.Inputs.RegionBackendServiceCircuitBreakersArgs\n {\n MaxConnections = 10,\n },\n ConsistentHash = new Gcp.Compute.Inputs.RegionBackendServiceConsistentHashArgs\n {\n HttpCookie = new Gcp.Compute.Inputs.RegionBackendServiceConsistentHashHttpCookieArgs\n {\n Ttl = new Gcp.Compute.Inputs.RegionBackendServiceConsistentHashHttpCookieTtlArgs\n {\n Seconds = 11,\n Nanos = 1111,\n },\n Name = \"mycookie\",\n },\n },\n OutlierDetection = new Gcp.Compute.Inputs.RegionBackendServiceOutlierDetectionArgs\n {\n ConsecutiveErrors = 2,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thealthCheck, err := compute.NewHealthCheck(ctx, \"health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"rbs-health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"region-service\"),\n\t\t\tHealthChecks: healthCheck.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tLocalityLbPolicy: pulumi.String(\"RING_HASH\"),\n\t\t\tSessionAffinity: pulumi.String(\"HTTP_COOKIE\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tCircuitBreakers: \u0026compute.RegionBackendServiceCircuitBreakersArgs{\n\t\t\t\tMaxConnections: pulumi.Int(10),\n\t\t\t},\n\t\t\tConsistentHash: \u0026compute.RegionBackendServiceConsistentHashArgs{\n\t\t\t\tHttpCookie: \u0026compute.RegionBackendServiceConsistentHashHttpCookieArgs{\n\t\t\t\t\tTtl: \u0026compute.RegionBackendServiceConsistentHashHttpCookieTtlArgs{\n\t\t\t\t\t\tSeconds: pulumi.Int(11),\n\t\t\t\t\t\tNanos: pulumi.Int(1111),\n\t\t\t\t\t},\n\t\t\t\t\tName: pulumi.String(\"mycookie\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOutlierDetection: \u0026compute.RegionBackendServiceOutlierDetectionArgs{\n\t\t\t\tConsecutiveErrors: pulumi.Int(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.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceCircuitBreakersArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceConsistentHashArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceConsistentHashHttpCookieArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceConsistentHashHttpCookieTtlArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceOutlierDetectionArgs;\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 HealthCheck(\"healthCheck\", HealthCheckArgs.builder()\n .name(\"rbs-health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var default_ = new RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"region-service\")\n .healthChecks(healthCheck.id())\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .localityLbPolicy(\"RING_HASH\")\n .sessionAffinity(\"HTTP_COOKIE\")\n .protocol(\"HTTP\")\n .circuitBreakers(RegionBackendServiceCircuitBreakersArgs.builder()\n .maxConnections(10)\n .build())\n .consistentHash(RegionBackendServiceConsistentHashArgs.builder()\n .httpCookie(RegionBackendServiceConsistentHashHttpCookieArgs.builder()\n .ttl(RegionBackendServiceConsistentHashHttpCookieTtlArgs.builder()\n .seconds(11)\n .nanos(1111)\n .build())\n .name(\"mycookie\")\n .build())\n .build())\n .outlierDetection(RegionBackendServiceOutlierDetectionArgs.builder()\n .consecutiveErrors(2)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: region-service\n healthChecks: ${healthCheck.id}\n loadBalancingScheme: INTERNAL_MANAGED\n localityLbPolicy: RING_HASH\n sessionAffinity: HTTP_COOKIE\n protocol: HTTP\n circuitBreakers:\n maxConnections: 10\n consistentHash:\n httpCookie:\n ttl:\n seconds: 11\n nanos: 1111\n name: mycookie\n outlierDetection:\n consecutiveErrors: 2\n healthCheck:\n type: gcp:compute:HealthCheck\n name: health_check\n properties:\n name: rbs-health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Backend Service Balancing Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst debianImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"rbs-net\",\n autoCreateSubnetworks: false,\n routingMode: \"REGIONAL\",\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"rbs-net-default\",\n ipCidrRange: \"10.1.2.0/24\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n});\nconst instanceTemplate = new gcp.compute.InstanceTemplate(\"instance_template\", {\n name: \"template-region-service\",\n machineType: \"e2-medium\",\n networkInterfaces: [{\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n }],\n disks: [{\n sourceImage: debianImage.then(debianImage =\u003e debianImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n tags: [\n \"allow-ssh\",\n \"load-balanced-backend\",\n ],\n});\nconst rigm = new gcp.compute.RegionInstanceGroupManager(\"rigm\", {\n region: \"us-central1\",\n name: \"rbs-rigm\",\n versions: [{\n instanceTemplate: instanceTemplate.id,\n name: \"primary\",\n }],\n baseInstanceName: \"internal-glb\",\n targetSize: 1,\n});\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"rbs-health-check\",\n httpHealthCheck: {\n portSpecification: \"USE_SERVING_PORT\",\n },\n});\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n backends: [{\n group: rigm.instanceGroup,\n balancingMode: \"UTILIZATION\",\n capacityScaler: 1,\n }],\n region: \"us-central1\",\n name: \"region-service\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultRegionHealthCheck.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndebian_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault_network = gcp.compute.Network(\"default\",\n name=\"rbs-net\",\n auto_create_subnetworks=False,\n routing_mode=\"REGIONAL\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"rbs-net-default\",\n ip_cidr_range=\"10.1.2.0/24\",\n region=\"us-central1\",\n network=default_network.id)\ninstance_template = gcp.compute.InstanceTemplate(\"instance_template\",\n name=\"template-region-service\",\n machine_type=\"e2-medium\",\n network_interfaces=[{\n \"network\": default_network.id,\n \"subnetwork\": default_subnetwork.id,\n }],\n disks=[{\n \"source_image\": debian_image.self_link,\n \"auto_delete\": True,\n \"boot\": True,\n }],\n tags=[\n \"allow-ssh\",\n \"load-balanced-backend\",\n ])\nrigm = gcp.compute.RegionInstanceGroupManager(\"rigm\",\n region=\"us-central1\",\n name=\"rbs-rigm\",\n versions=[{\n \"instance_template\": instance_template.id,\n \"name\": \"primary\",\n }],\n base_instance_name=\"internal-glb\",\n target_size=1)\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"rbs-health-check\",\n http_health_check={\n \"port_specification\": \"USE_SERVING_PORT\",\n })\ndefault = gcp.compute.RegionBackendService(\"default\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n backends=[{\n \"group\": rigm.instance_group,\n \"balancing_mode\": \"UTILIZATION\",\n \"capacity_scaler\": 1,\n }],\n region=\"us-central1\",\n name=\"region-service\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_region_health_check.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 debianImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"rbs-net\",\n AutoCreateSubnetworks = false,\n RoutingMode = \"REGIONAL\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"rbs-net-default\",\n IpCidrRange = \"10.1.2.0/24\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n });\n\n var instanceTemplate = new Gcp.Compute.InstanceTemplate(\"instance_template\", new()\n {\n Name = \"template-region-service\",\n MachineType = \"e2-medium\",\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = debianImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n Tags = new[]\n {\n \"allow-ssh\",\n \"load-balanced-backend\",\n },\n });\n\n var rigm = new Gcp.Compute.RegionInstanceGroupManager(\"rigm\", new()\n {\n Region = \"us-central1\",\n Name = \"rbs-rigm\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = instanceTemplate.Id,\n Name = \"primary\",\n },\n },\n BaseInstanceName = \"internal-glb\",\n TargetSize = 1,\n });\n\n var defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"rbs-health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n PortSpecification = \"USE_SERVING_PORT\",\n },\n });\n\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n Backends = new[]\n {\n new Gcp.Compute.Inputs.RegionBackendServiceBackendArgs\n {\n Group = rigm.InstanceGroup,\n BalancingMode = \"UTILIZATION\",\n CapacityScaler = 1,\n },\n },\n Region = \"us-central1\",\n Name = \"region-service\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultRegionHealthCheck.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdebianImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"rbs-net\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t\tRoutingMode: pulumi.String(\"REGIONAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"rbs-net-default\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.2.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstanceTemplate, err := compute.NewInstanceTemplate(ctx, \"instance_template\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"template-region-service\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(debianImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"allow-ssh\"),\n\t\t\t\tpulumi.String(\"load-balanced-backend\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trigm, err := compute.NewRegionInstanceGroupManager(ctx, \"rigm\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"rbs-rigm\"),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: instanceTemplate.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"internal-glb\"),\n\t\t\tTargetSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"rbs-health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPortSpecification: pulumi.String(\"USE_SERVING_PORT\"),\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.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tBackends: compute.RegionBackendServiceBackendArray{\n\t\t\t\t\u0026compute.RegionBackendServiceBackendArgs{\n\t\t\t\t\tGroup: rigm.InstanceGroup,\n\t\t\t\t\tBalancingMode: pulumi.String(\"UTILIZATION\"),\n\t\t\t\t\tCapacityScaler: pulumi.Float64(1),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"region-service\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultRegionHealthCheck.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.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.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 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 .name(\"rbs-net\")\n .autoCreateSubnetworks(false)\n .routingMode(\"REGIONAL\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"rbs-net-default\")\n .ipCidrRange(\"10.1.2.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .build());\n\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"template-region-service\")\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());\n\n var rigm = new RegionInstanceGroupManager(\"rigm\", RegionInstanceGroupManagerArgs.builder()\n .region(\"us-central1\")\n .name(\"rbs-rigm\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(instanceTemplate.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"internal-glb\")\n .targetSize(1)\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"rbs-health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .portSpecification(\"USE_SERVING_PORT\")\n .build())\n .build());\n\n var default_ = new RegionBackendService(\"default\", 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 .name(\"region-service\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultRegionHealthCheck.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\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 name: region-service\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultRegionHealthCheck.id}\n rigm:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n region: us-central1\n name: rbs-rigm\n versions:\n - instanceTemplate: ${instanceTemplate.id}\n name: primary\n baseInstanceName: internal-glb\n targetSize: 1\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: instance_template\n properties:\n name: template-region-service\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 defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n region: us-central1\n name: rbs-health-check\n httpHealthCheck:\n portSpecification: USE_SERVING_PORT\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: rbs-net\n autoCreateSubnetworks: false\n routingMode: REGIONAL\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: rbs-net-default\n ipCidrRange: 10.1.2.0/24\n region: us-central1\n network: ${defaultNetwork.id}\nvariables:\n debianImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Backend Service Connection Tracking\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst healthCheck = new gcp.compute.RegionHealthCheck(\"health_check\", {\n name: \"rbs-health-check\",\n region: \"us-central1\",\n tcpHealthCheck: {\n port: 22,\n },\n});\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n name: \"region-service\",\n region: \"us-central1\",\n healthChecks: healthCheck.id,\n connectionDrainingTimeoutSec: 10,\n sessionAffinity: \"CLIENT_IP\",\n protocol: \"TCP\",\n loadBalancingScheme: \"EXTERNAL\",\n connectionTrackingPolicy: {\n trackingMode: \"PER_SESSION\",\n connectionPersistenceOnUnhealthyBackends: \"NEVER_PERSIST\",\n idleTimeoutSec: 60,\n enableStrongAffinity: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhealth_check = gcp.compute.RegionHealthCheck(\"health_check\",\n name=\"rbs-health-check\",\n region=\"us-central1\",\n tcp_health_check={\n \"port\": 22,\n })\ndefault = gcp.compute.RegionBackendService(\"default\",\n name=\"region-service\",\n region=\"us-central1\",\n health_checks=health_check.id,\n connection_draining_timeout_sec=10,\n session_affinity=\"CLIENT_IP\",\n protocol=\"TCP\",\n load_balancing_scheme=\"EXTERNAL\",\n connection_tracking_policy={\n \"tracking_mode\": \"PER_SESSION\",\n \"connection_persistence_on_unhealthy_backends\": \"NEVER_PERSIST\",\n \"idle_timeout_sec\": 60,\n \"enable_strong_affinity\": 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 healthCheck = new Gcp.Compute.RegionHealthCheck(\"health_check\", new()\n {\n Name = \"rbs-health-check\",\n Region = \"us-central1\",\n TcpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckTcpHealthCheckArgs\n {\n Port = 22,\n },\n });\n\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"region-service\",\n Region = \"us-central1\",\n HealthChecks = healthCheck.Id,\n ConnectionDrainingTimeoutSec = 10,\n SessionAffinity = \"CLIENT_IP\",\n Protocol = \"TCP\",\n LoadBalancingScheme = \"EXTERNAL\",\n ConnectionTrackingPolicy = new Gcp.Compute.Inputs.RegionBackendServiceConnectionTrackingPolicyArgs\n {\n TrackingMode = \"PER_SESSION\",\n ConnectionPersistenceOnUnhealthyBackends = \"NEVER_PERSIST\",\n IdleTimeoutSec = 60,\n EnableStrongAffinity = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\thealthCheck, err := compute.NewRegionHealthCheck(ctx, \"health_check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"rbs-health-check\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTcpHealthCheck: \u0026compute.RegionHealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(22),\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.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"region-service\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: healthCheck.ID(),\n\t\t\tConnectionDrainingTimeoutSec: pulumi.Int(10),\n\t\t\tSessionAffinity: pulumi.String(\"CLIENT_IP\"),\n\t\t\tProtocol: pulumi.String(\"TCP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL\"),\n\t\t\tConnectionTrackingPolicy: \u0026compute.RegionBackendServiceConnectionTrackingPolicyArgs{\n\t\t\t\tTrackingMode: pulumi.String(\"PER_SESSION\"),\n\t\t\t\tConnectionPersistenceOnUnhealthyBackends: pulumi.String(\"NEVER_PERSIST\"),\n\t\t\t\tIdleTimeoutSec: pulumi.Int(60),\n\t\t\t\tEnableStrongAffinity: 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.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.inputs.RegionBackendServiceConnectionTrackingPolicyArgs;\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 .name(\"rbs-health-check\")\n .region(\"us-central1\")\n .tcpHealthCheck(RegionHealthCheckTcpHealthCheckArgs.builder()\n .port(22)\n .build())\n .build());\n\n var default_ = new RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .name(\"region-service\")\n .region(\"us-central1\")\n .healthChecks(healthCheck.id())\n .connectionDrainingTimeoutSec(10)\n .sessionAffinity(\"CLIENT_IP\")\n .protocol(\"TCP\")\n .loadBalancingScheme(\"EXTERNAL\")\n .connectionTrackingPolicy(RegionBackendServiceConnectionTrackingPolicyArgs.builder()\n .trackingMode(\"PER_SESSION\")\n .connectionPersistenceOnUnhealthyBackends(\"NEVER_PERSIST\")\n .idleTimeoutSec(60)\n .enableStrongAffinity(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n name: region-service\n region: us-central1\n healthChecks: ${healthCheck.id}\n connectionDrainingTimeoutSec: 10\n sessionAffinity: CLIENT_IP\n protocol: TCP\n loadBalancingScheme: EXTERNAL\n connectionTrackingPolicy:\n trackingMode: PER_SESSION\n connectionPersistenceOnUnhealthyBackends: NEVER_PERSIST\n idleTimeoutSec: 60\n enableStrongAffinity: true\n healthCheck:\n type: gcp:compute:RegionHealthCheck\n name: health_check\n properties:\n name: rbs-health-check\n region: us-central1\n tcpHealthCheck:\n port: 22\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionBackendService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/backendServices/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionBackendService can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionBackendService:RegionBackendService default projects/{{project}}/regions/{{region}}/backendServices/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionBackendService:RegionBackendService default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionBackendService:RegionBackendService default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionBackendService:RegionBackendService default {{name}}\n```\n\n", "properties": { "affinityCookieTtlSec": { "type": "integer", @@ -157193,7 +157193,7 @@ } }, "gcp:compute/regionDiskResourcePolicyAttachment:RegionDiskResourcePolicyAttachment": { - "description": "Adds existing resource policies to a disk. You can only add one policy\nwhich will be applied to this disk for scheduling snapshot creation.\n\n\u003e **Note:** This resource does not support zonal disks (`gcp.compute.Disk`). For zonal disks, please refer to the `gcp.compute.DiskResourcePolicyAttachment` resource.\n\n\n\n\n## Example Usage\n\n### Region Disk Resource Policy Attachment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst disk = new gcp.compute.Disk(\"disk\", {\n name: \"my-base-disk\",\n image: \"debian-cloud/debian-11\",\n size: 50,\n type: \"pd-ssd\",\n zone: \"us-central1-a\",\n});\nconst snapdisk = new gcp.compute.Snapshot(\"snapdisk\", {\n name: \"my-snapshot\",\n sourceDisk: disk.name,\n zone: \"us-central1-a\",\n});\nconst ssd = new gcp.compute.RegionDisk(\"ssd\", {\n name: \"my-disk\",\n replicaZones: [\n \"us-central1-a\",\n \"us-central1-f\",\n ],\n snapshot: snapdisk.id,\n size: 50,\n type: \"pd-ssd\",\n region: \"us-central1\",\n});\nconst policy = new gcp.compute.ResourcePolicy(\"policy\", {\n name: \"my-resource-policy\",\n region: \"us-central1\",\n snapshotSchedulePolicy: {\n schedule: {\n dailySchedule: {\n daysInCycle: 1,\n startTime: \"04:00\",\n },\n },\n },\n});\nconst attachment = new gcp.compute.RegionDiskResourcePolicyAttachment(\"attachment\", {\n name: policy.name,\n disk: ssd.name,\n region: \"us-central1\",\n});\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndisk = gcp.compute.Disk(\"disk\",\n name=\"my-base-disk\",\n image=\"debian-cloud/debian-11\",\n size=50,\n type=\"pd-ssd\",\n zone=\"us-central1-a\")\nsnapdisk = gcp.compute.Snapshot(\"snapdisk\",\n name=\"my-snapshot\",\n source_disk=disk.name,\n zone=\"us-central1-a\")\nssd = gcp.compute.RegionDisk(\"ssd\",\n name=\"my-disk\",\n replica_zones=[\n \"us-central1-a\",\n \"us-central1-f\",\n ],\n snapshot=snapdisk.id,\n size=50,\n type=\"pd-ssd\",\n region=\"us-central1\")\npolicy = gcp.compute.ResourcePolicy(\"policy\",\n name=\"my-resource-policy\",\n region=\"us-central1\",\n snapshot_schedule_policy={\n \"schedule\": {\n \"dailySchedule\": {\n \"daysInCycle\": 1,\n \"startTime\": \"04:00\",\n },\n },\n })\nattachment = gcp.compute.RegionDiskResourcePolicyAttachment(\"attachment\",\n name=policy.name,\n disk=ssd.name,\n region=\"us-central1\")\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\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 disk = new Gcp.Compute.Disk(\"disk\", new()\n {\n Name = \"my-base-disk\",\n Image = \"debian-cloud/debian-11\",\n Size = 50,\n Type = \"pd-ssd\",\n Zone = \"us-central1-a\",\n });\n\n var snapdisk = new Gcp.Compute.Snapshot(\"snapdisk\", new()\n {\n Name = \"my-snapshot\",\n SourceDisk = disk.Name,\n Zone = \"us-central1-a\",\n });\n\n var ssd = new Gcp.Compute.RegionDisk(\"ssd\", new()\n {\n Name = \"my-disk\",\n ReplicaZones = new[]\n {\n \"us-central1-a\",\n \"us-central1-f\",\n },\n Snapshot = snapdisk.Id,\n Size = 50,\n Type = \"pd-ssd\",\n Region = \"us-central1\",\n });\n\n var policy = new Gcp.Compute.ResourcePolicy(\"policy\", new()\n {\n Name = \"my-resource-policy\",\n Region = \"us-central1\",\n SnapshotSchedulePolicy = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyArgs\n {\n Schedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs\n {\n DailySchedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs\n {\n DaysInCycle = 1,\n StartTime = \"04:00\",\n },\n },\n },\n });\n\n var attachment = new Gcp.Compute.RegionDiskResourcePolicyAttachment(\"attachment\", new()\n {\n Name = policy.Name,\n Disk = ssd.Name,\n Region = \"us-central1\",\n });\n\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdisk, err := compute.NewDisk(ctx, \"disk\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"my-base-disk\"),\n\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\tSize: pulumi.Int(50),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsnapdisk, err := compute.NewSnapshot(ctx, \"snapdisk\", \u0026compute.SnapshotArgs{\n\t\t\tName: pulumi.String(\"my-snapshot\"),\n\t\t\tSourceDisk: disk.Name,\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tssd, err := compute.NewRegionDisk(ctx, \"ssd\", \u0026compute.RegionDiskArgs{\n\t\t\tName: pulumi.String(\"my-disk\"),\n\t\t\tReplicaZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-central1-a\"),\n\t\t\t\tpulumi.String(\"us-central1-f\"),\n\t\t\t},\n\t\t\tSnapshot: snapdisk.ID(),\n\t\t\tSize: pulumi.Int(50),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\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\tpolicy, err := compute.NewResourcePolicy(ctx, \"policy\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"my-resource-policy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSnapshotSchedulePolicy: \u0026compute.ResourcePolicySnapshotSchedulePolicyArgs{\n\t\t\t\tSchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleArgs{\n\t\t\t\t\tDailySchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs{\n\t\t\t\t\t\tDaysInCycle: pulumi.Int(1),\n\t\t\t\t\t\tStartTime: pulumi.String(\"04:00\"),\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 = compute.NewRegionDiskResourcePolicyAttachment(ctx, \"attachment\", \u0026compute.RegionDiskResourcePolicyAttachmentArgs{\n\t\t\tName: policy.Name,\n\t\t\tDisk: ssd.Name,\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\t_, err = compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, 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.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.Snapshot;\nimport com.pulumi.gcp.compute.SnapshotArgs;\nimport com.pulumi.gcp.compute.RegionDisk;\nimport com.pulumi.gcp.compute.RegionDiskArgs;\nimport com.pulumi.gcp.compute.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs;\nimport com.pulumi.gcp.compute.RegionDiskResourcePolicyAttachment;\nimport com.pulumi.gcp.compute.RegionDiskResourcePolicyAttachmentArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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 disk = new Disk(\"disk\", DiskArgs.builder()\n .name(\"my-base-disk\")\n .image(\"debian-cloud/debian-11\")\n .size(50)\n .type(\"pd-ssd\")\n .zone(\"us-central1-a\")\n .build());\n\n var snapdisk = new Snapshot(\"snapdisk\", SnapshotArgs.builder()\n .name(\"my-snapshot\")\n .sourceDisk(disk.name())\n .zone(\"us-central1-a\")\n .build());\n\n var ssd = new RegionDisk(\"ssd\", RegionDiskArgs.builder()\n .name(\"my-disk\")\n .replicaZones( \n \"us-central1-a\",\n \"us-central1-f\")\n .snapshot(snapdisk.id())\n .size(50)\n .type(\"pd-ssd\")\n .region(\"us-central1\")\n .build());\n\n var policy = new ResourcePolicy(\"policy\", ResourcePolicyArgs.builder()\n .name(\"my-resource-policy\")\n .region(\"us-central1\")\n .snapshotSchedulePolicy(ResourcePolicySnapshotSchedulePolicyArgs.builder()\n .schedule(ResourcePolicySnapshotSchedulePolicyScheduleArgs.builder()\n .dailySchedule(ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs.builder()\n .daysInCycle(1)\n .startTime(\"04:00\")\n .build())\n .build())\n .build())\n .build());\n\n var attachment = new RegionDiskResourcePolicyAttachment(\"attachment\", RegionDiskResourcePolicyAttachmentArgs.builder()\n .name(policy.name())\n .disk(ssd.name())\n .region(\"us-central1\")\n .build());\n\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n attachment:\n type: gcp:compute:RegionDiskResourcePolicyAttachment\n properties:\n name: ${policy.name}\n disk: ${ssd.name}\n region: us-central1\n disk:\n type: gcp:compute:Disk\n properties:\n name: my-base-disk\n image: debian-cloud/debian-11\n size: 50\n type: pd-ssd\n zone: us-central1-a\n snapdisk:\n type: gcp:compute:Snapshot\n properties:\n name: my-snapshot\n sourceDisk: ${disk.name}\n zone: us-central1-a\n ssd:\n type: gcp:compute:RegionDisk\n properties:\n name: my-disk\n replicaZones:\n - us-central1-a\n - us-central1-f\n snapshot: ${snapdisk.id}\n size: 50\n type: pd-ssd\n region: us-central1\n policy:\n type: gcp:compute:ResourcePolicy\n properties:\n name: my-resource-policy\n region: us-central1\n snapshotSchedulePolicy:\n schedule:\n dailySchedule:\n daysInCycle: 1\n startTime: 04:00\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionDiskResourcePolicyAttachment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/disks/{{disk}}/{{name}}`\n\n* `{{project}}/{{region}}/{{disk}}/{{name}}`\n\n* `{{region}}/{{disk}}/{{name}}`\n\n* `{{disk}}/{{name}}`\n\nWhen using the `pulumi import` command, RegionDiskResourcePolicyAttachment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionDiskResourcePolicyAttachment:RegionDiskResourcePolicyAttachment default projects/{{project}}/regions/{{region}}/disks/{{disk}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionDiskResourcePolicyAttachment:RegionDiskResourcePolicyAttachment default {{project}}/{{region}}/{{disk}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionDiskResourcePolicyAttachment:RegionDiskResourcePolicyAttachment default {{region}}/{{disk}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionDiskResourcePolicyAttachment:RegionDiskResourcePolicyAttachment default {{disk}}/{{name}}\n```\n\n", + "description": "Adds existing resource policies to a disk. You can only add one policy\nwhich will be applied to this disk for scheduling snapshot creation.\n\n\u003e **Note:** This resource does not support zonal disks (`gcp.compute.Disk`). For zonal disks, please refer to the `gcp.compute.DiskResourcePolicyAttachment` resource.\n\n\n\n\n## Example Usage\n\n### Region Disk Resource Policy Attachment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst disk = new gcp.compute.Disk(\"disk\", {\n name: \"my-base-disk\",\n image: \"debian-cloud/debian-11\",\n size: 50,\n type: \"pd-ssd\",\n zone: \"us-central1-a\",\n});\nconst snapdisk = new gcp.compute.Snapshot(\"snapdisk\", {\n name: \"my-snapshot\",\n sourceDisk: disk.name,\n zone: \"us-central1-a\",\n});\nconst ssd = new gcp.compute.RegionDisk(\"ssd\", {\n name: \"my-disk\",\n replicaZones: [\n \"us-central1-a\",\n \"us-central1-f\",\n ],\n snapshot: snapdisk.id,\n size: 50,\n type: \"pd-ssd\",\n region: \"us-central1\",\n});\nconst policy = new gcp.compute.ResourcePolicy(\"policy\", {\n name: \"my-resource-policy\",\n region: \"us-central1\",\n snapshotSchedulePolicy: {\n schedule: {\n dailySchedule: {\n daysInCycle: 1,\n startTime: \"04:00\",\n },\n },\n },\n});\nconst attachment = new gcp.compute.RegionDiskResourcePolicyAttachment(\"attachment\", {\n name: policy.name,\n disk: ssd.name,\n region: \"us-central1\",\n});\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndisk = gcp.compute.Disk(\"disk\",\n name=\"my-base-disk\",\n image=\"debian-cloud/debian-11\",\n size=50,\n type=\"pd-ssd\",\n zone=\"us-central1-a\")\nsnapdisk = gcp.compute.Snapshot(\"snapdisk\",\n name=\"my-snapshot\",\n source_disk=disk.name,\n zone=\"us-central1-a\")\nssd = gcp.compute.RegionDisk(\"ssd\",\n name=\"my-disk\",\n replica_zones=[\n \"us-central1-a\",\n \"us-central1-f\",\n ],\n snapshot=snapdisk.id,\n size=50,\n type=\"pd-ssd\",\n region=\"us-central1\")\npolicy = gcp.compute.ResourcePolicy(\"policy\",\n name=\"my-resource-policy\",\n region=\"us-central1\",\n snapshot_schedule_policy={\n \"schedule\": {\n \"daily_schedule\": {\n \"days_in_cycle\": 1,\n \"start_time\": \"04:00\",\n },\n },\n })\nattachment = gcp.compute.RegionDiskResourcePolicyAttachment(\"attachment\",\n name=policy.name,\n disk=ssd.name,\n region=\"us-central1\")\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\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 disk = new Gcp.Compute.Disk(\"disk\", new()\n {\n Name = \"my-base-disk\",\n Image = \"debian-cloud/debian-11\",\n Size = 50,\n Type = \"pd-ssd\",\n Zone = \"us-central1-a\",\n });\n\n var snapdisk = new Gcp.Compute.Snapshot(\"snapdisk\", new()\n {\n Name = \"my-snapshot\",\n SourceDisk = disk.Name,\n Zone = \"us-central1-a\",\n });\n\n var ssd = new Gcp.Compute.RegionDisk(\"ssd\", new()\n {\n Name = \"my-disk\",\n ReplicaZones = new[]\n {\n \"us-central1-a\",\n \"us-central1-f\",\n },\n Snapshot = snapdisk.Id,\n Size = 50,\n Type = \"pd-ssd\",\n Region = \"us-central1\",\n });\n\n var policy = new Gcp.Compute.ResourcePolicy(\"policy\", new()\n {\n Name = \"my-resource-policy\",\n Region = \"us-central1\",\n SnapshotSchedulePolicy = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyArgs\n {\n Schedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs\n {\n DailySchedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs\n {\n DaysInCycle = 1,\n StartTime = \"04:00\",\n },\n },\n },\n });\n\n var attachment = new Gcp.Compute.RegionDiskResourcePolicyAttachment(\"attachment\", new()\n {\n Name = policy.Name,\n Disk = ssd.Name,\n Region = \"us-central1\",\n });\n\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdisk, err := compute.NewDisk(ctx, \"disk\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"my-base-disk\"),\n\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\tSize: pulumi.Int(50),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsnapdisk, err := compute.NewSnapshot(ctx, \"snapdisk\", \u0026compute.SnapshotArgs{\n\t\t\tName: pulumi.String(\"my-snapshot\"),\n\t\t\tSourceDisk: disk.Name,\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tssd, err := compute.NewRegionDisk(ctx, \"ssd\", \u0026compute.RegionDiskArgs{\n\t\t\tName: pulumi.String(\"my-disk\"),\n\t\t\tReplicaZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-central1-a\"),\n\t\t\t\tpulumi.String(\"us-central1-f\"),\n\t\t\t},\n\t\t\tSnapshot: snapdisk.ID(),\n\t\t\tSize: pulumi.Int(50),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\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\tpolicy, err := compute.NewResourcePolicy(ctx, \"policy\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"my-resource-policy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSnapshotSchedulePolicy: \u0026compute.ResourcePolicySnapshotSchedulePolicyArgs{\n\t\t\t\tSchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleArgs{\n\t\t\t\t\tDailySchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs{\n\t\t\t\t\t\tDaysInCycle: pulumi.Int(1),\n\t\t\t\t\t\tStartTime: pulumi.String(\"04:00\"),\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 = compute.NewRegionDiskResourcePolicyAttachment(ctx, \"attachment\", \u0026compute.RegionDiskResourcePolicyAttachmentArgs{\n\t\t\tName: policy.Name,\n\t\t\tDisk: ssd.Name,\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\t_, err = compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, 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.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.Snapshot;\nimport com.pulumi.gcp.compute.SnapshotArgs;\nimport com.pulumi.gcp.compute.RegionDisk;\nimport com.pulumi.gcp.compute.RegionDiskArgs;\nimport com.pulumi.gcp.compute.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs;\nimport com.pulumi.gcp.compute.RegionDiskResourcePolicyAttachment;\nimport com.pulumi.gcp.compute.RegionDiskResourcePolicyAttachmentArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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 disk = new Disk(\"disk\", DiskArgs.builder()\n .name(\"my-base-disk\")\n .image(\"debian-cloud/debian-11\")\n .size(50)\n .type(\"pd-ssd\")\n .zone(\"us-central1-a\")\n .build());\n\n var snapdisk = new Snapshot(\"snapdisk\", SnapshotArgs.builder()\n .name(\"my-snapshot\")\n .sourceDisk(disk.name())\n .zone(\"us-central1-a\")\n .build());\n\n var ssd = new RegionDisk(\"ssd\", RegionDiskArgs.builder()\n .name(\"my-disk\")\n .replicaZones( \n \"us-central1-a\",\n \"us-central1-f\")\n .snapshot(snapdisk.id())\n .size(50)\n .type(\"pd-ssd\")\n .region(\"us-central1\")\n .build());\n\n var policy = new ResourcePolicy(\"policy\", ResourcePolicyArgs.builder()\n .name(\"my-resource-policy\")\n .region(\"us-central1\")\n .snapshotSchedulePolicy(ResourcePolicySnapshotSchedulePolicyArgs.builder()\n .schedule(ResourcePolicySnapshotSchedulePolicyScheduleArgs.builder()\n .dailySchedule(ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs.builder()\n .daysInCycle(1)\n .startTime(\"04:00\")\n .build())\n .build())\n .build())\n .build());\n\n var attachment = new RegionDiskResourcePolicyAttachment(\"attachment\", RegionDiskResourcePolicyAttachmentArgs.builder()\n .name(policy.name())\n .disk(ssd.name())\n .region(\"us-central1\")\n .build());\n\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n attachment:\n type: gcp:compute:RegionDiskResourcePolicyAttachment\n properties:\n name: ${policy.name}\n disk: ${ssd.name}\n region: us-central1\n disk:\n type: gcp:compute:Disk\n properties:\n name: my-base-disk\n image: debian-cloud/debian-11\n size: 50\n type: pd-ssd\n zone: us-central1-a\n snapdisk:\n type: gcp:compute:Snapshot\n properties:\n name: my-snapshot\n sourceDisk: ${disk.name}\n zone: us-central1-a\n ssd:\n type: gcp:compute:RegionDisk\n properties:\n name: my-disk\n replicaZones:\n - us-central1-a\n - us-central1-f\n snapshot: ${snapdisk.id}\n size: 50\n type: pd-ssd\n region: us-central1\n policy:\n type: gcp:compute:ResourcePolicy\n properties:\n name: my-resource-policy\n region: us-central1\n snapshotSchedulePolicy:\n schedule:\n dailySchedule:\n daysInCycle: 1\n startTime: 04:00\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionDiskResourcePolicyAttachment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/disks/{{disk}}/{{name}}`\n\n* `{{project}}/{{region}}/{{disk}}/{{name}}`\n\n* `{{region}}/{{disk}}/{{name}}`\n\n* `{{disk}}/{{name}}`\n\nWhen using the `pulumi import` command, RegionDiskResourcePolicyAttachment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionDiskResourcePolicyAttachment:RegionDiskResourcePolicyAttachment default projects/{{project}}/regions/{{region}}/disks/{{disk}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionDiskResourcePolicyAttachment:RegionDiskResourcePolicyAttachment default {{project}}/{{region}}/{{disk}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionDiskResourcePolicyAttachment:RegionDiskResourcePolicyAttachment default {{region}}/{{disk}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionDiskResourcePolicyAttachment:RegionDiskResourcePolicyAttachment default {{disk}}/{{name}}\n```\n\n", "properties": { "disk": { "type": "string", @@ -157271,7 +157271,7 @@ } }, "gcp:compute/regionHealthCheck:RegionHealthCheck": { - "description": "Health Checks determine whether instances are responsive and able to do work.\nThey are an important part of a comprehensive load balancing configuration,\nas they enable monitoring instances behind load balancers.\n\nHealth Checks poll instances at a specified interval. Instances that\ndo not respond successfully to some number of probes in a row are marked\nas unhealthy. No new connections are sent to unhealthy instances,\nthough existing connections will continue. The health check will\ncontinue to poll unhealthy instances. If an instance later responds\nsuccessfully to some number of consecutive probes, it is marked\nhealthy again and can receive new connections.\n\n\nTo get more information about RegionHealthCheck, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/regionHealthChecks)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/health-checks)\n\n## Example Usage\n\n### Region Health Check Tcp\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tcp_region_health_check = new gcp.compute.RegionHealthCheck(\"tcp-region-health-check\", {\n name: \"tcp-region-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntcp_region_health_check = gcp.compute.RegionHealthCheck(\"tcp-region-health-check\",\n name=\"tcp-region-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n tcp_health_check={\n \"port\": 80,\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 tcp_region_health_check = new Gcp.Compute.RegionHealthCheck(\"tcp-region-health-check\", new()\n {\n Name = \"tcp-region-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"tcp-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"tcp-region-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.RegionHealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckTcpHealthCheckArgs;\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 tcp_region_health_check = new RegionHealthCheck(\"tcp-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"tcp-region-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .tcpHealthCheck(RegionHealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tcp-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: tcp-region-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n tcpHealthCheck:\n port: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Tcp Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tcp_region_health_check = new gcp.compute.RegionHealthCheck(\"tcp-region-health-check\", {\n name: \"tcp-region-health-check\",\n description: \"Health check via tcp\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n tcpHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n request: \"ARE YOU HEALTHY?\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntcp_region_health_check = gcp.compute.RegionHealthCheck(\"tcp-region-health-check\",\n name=\"tcp-region-health-check\",\n description=\"Health check via tcp\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n tcp_health_check={\n \"portName\": \"health-check-port\",\n \"portSpecification\": \"USE_NAMED_PORT\",\n \"request\": \"ARE YOU HEALTHY?\",\n \"proxyHeader\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 tcp_region_health_check = new Gcp.Compute.RegionHealthCheck(\"tcp-region-health-check\", new()\n {\n Name = \"tcp-region-health-check\",\n Description = \"Health check via tcp\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n TcpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckTcpHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Request = \"ARE YOU HEALTHY?\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"tcp-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"tcp-region-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via tcp\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tTcpHealthCheck: \u0026compute.RegionHealthCheckTcpHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tRequest: pulumi.String(\"ARE YOU HEALTHY?\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckTcpHealthCheckArgs;\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 tcp_region_health_check = new RegionHealthCheck(\"tcp-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"tcp-region-health-check\")\n .description(\"Health check via tcp\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .tcpHealthCheck(RegionHealthCheckTcpHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .request(\"ARE YOU HEALTHY?\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tcp-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: tcp-region-health-check\n description: Health check via tcp\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n tcpHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n request: ARE YOU HEALTHY?\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Ssl\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ssl_region_health_check = new gcp.compute.RegionHealthCheck(\"ssl-region-health-check\", {\n name: \"ssl-region-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n sslHealthCheck: {\n port: 443,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nssl_region_health_check = gcp.compute.RegionHealthCheck(\"ssl-region-health-check\",\n name=\"ssl-region-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n ssl_health_check={\n \"port\": 443,\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 ssl_region_health_check = new Gcp.Compute.RegionHealthCheck(\"ssl-region-health-check\", new()\n {\n Name = \"ssl-region-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n SslHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckSslHealthCheckArgs\n {\n Port = 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"ssl-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"ssl-region-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tSslHealthCheck: \u0026compute.RegionHealthCheckSslHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(443),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckSslHealthCheckArgs;\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 ssl_region_health_check = new RegionHealthCheck(\"ssl-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"ssl-region-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .sslHealthCheck(RegionHealthCheckSslHealthCheckArgs.builder()\n .port(\"443\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ssl-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: ssl-region-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n sslHealthCheck:\n port: '443'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Ssl Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ssl_region_health_check = new gcp.compute.RegionHealthCheck(\"ssl-region-health-check\", {\n name: \"ssl-region-health-check\",\n description: \"Health check via ssl\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n sslHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n request: \"ARE YOU HEALTHY?\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nssl_region_health_check = gcp.compute.RegionHealthCheck(\"ssl-region-health-check\",\n name=\"ssl-region-health-check\",\n description=\"Health check via ssl\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n ssl_health_check={\n \"portName\": \"health-check-port\",\n \"portSpecification\": \"USE_NAMED_PORT\",\n \"request\": \"ARE YOU HEALTHY?\",\n \"proxyHeader\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 ssl_region_health_check = new Gcp.Compute.RegionHealthCheck(\"ssl-region-health-check\", new()\n {\n Name = \"ssl-region-health-check\",\n Description = \"Health check via ssl\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n SslHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckSslHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Request = \"ARE YOU HEALTHY?\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"ssl-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"ssl-region-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via ssl\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tSslHealthCheck: \u0026compute.RegionHealthCheckSslHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tRequest: pulumi.String(\"ARE YOU HEALTHY?\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckSslHealthCheckArgs;\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 ssl_region_health_check = new RegionHealthCheck(\"ssl-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"ssl-region-health-check\")\n .description(\"Health check via ssl\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .sslHealthCheck(RegionHealthCheckSslHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .request(\"ARE YOU HEALTHY?\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ssl-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: ssl-region-health-check\n description: Health check via ssl\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n sslHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n request: ARE YOU HEALTHY?\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Http\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http_region_health_check = new gcp.compute.RegionHealthCheck(\"http-region-health-check\", {\n name: \"http-region-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n httpHealthCheck: {\n port: 80,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp_region_health_check = gcp.compute.RegionHealthCheck(\"http-region-health-check\",\n name=\"http-region-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n http_health_check={\n \"port\": 80,\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 http_region_health_check = new Gcp.Compute.RegionHealthCheck(\"http-region-health-check\", new()\n {\n Name = \"http-region-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"http-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-region-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\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 http_region_health_check = new RegionHealthCheck(\"http-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"http-region-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: http-region-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n httpHealthCheck:\n port: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Http Logs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http_region_health_check = new gcp.compute.RegionHealthCheck(\"http-region-health-check\", {\n name: \"http-region-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n httpHealthCheck: {\n port: 80,\n },\n logConfig: {\n enable: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp_region_health_check = gcp.compute.RegionHealthCheck(\"http-region-health-check\",\n name=\"http-region-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n http_health_check={\n \"port\": 80,\n },\n log_config={\n \"enable\": 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 http_region_health_check = new Gcp.Compute.RegionHealthCheck(\"http-region-health-check\", new()\n {\n Name = \"http-region-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n LogConfig = new Gcp.Compute.Inputs.RegionHealthCheckLogConfigArgs\n {\n Enable = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"http-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-region-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t\tLogConfig: \u0026compute.RegionHealthCheckLogConfigArgs{\n\t\t\t\tEnable: 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.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckLogConfigArgs;\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 http_region_health_check = new RegionHealthCheck(\"http-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"http-region-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .logConfig(RegionHealthCheckLogConfigArgs.builder()\n .enable(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: http-region-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n httpHealthCheck:\n port: '80'\n logConfig:\n enable: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Http Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http_region_health_check = new gcp.compute.RegionHealthCheck(\"http-region-health-check\", {\n name: \"http-region-health-check\",\n description: \"Health check via http\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n httpHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n host: \"1.2.3.4\",\n requestPath: \"/mypath\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp_region_health_check = gcp.compute.RegionHealthCheck(\"http-region-health-check\",\n name=\"http-region-health-check\",\n description=\"Health check via http\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n http_health_check={\n \"portName\": \"health-check-port\",\n \"portSpecification\": \"USE_NAMED_PORT\",\n \"host\": \"1.2.3.4\",\n \"requestPath\": \"/mypath\",\n \"proxyHeader\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 http_region_health_check = new Gcp.Compute.RegionHealthCheck(\"http-region-health-check\", new()\n {\n Name = \"http-region-health-check\",\n Description = \"Health check via http\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Host = \"1.2.3.4\",\n RequestPath = \"/mypath\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"http-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-region-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via http\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tHost: pulumi.String(\"1.2.3.4\"),\n\t\t\t\tRequestPath: pulumi.String(\"/mypath\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\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 http_region_health_check = new RegionHealthCheck(\"http-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"http-region-health-check\")\n .description(\"Health check via http\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .host(\"1.2.3.4\")\n .requestPath(\"/mypath\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: http-region-health-check\n description: Health check via http\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n httpHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n host: 1.2.3.4\n requestPath: /mypath\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Https\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst https_region_health_check = new gcp.compute.RegionHealthCheck(\"https-region-health-check\", {\n name: \"https-region-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n httpsHealthCheck: {\n port: 443,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttps_region_health_check = gcp.compute.RegionHealthCheck(\"https-region-health-check\",\n name=\"https-region-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n https_health_check={\n \"port\": 443,\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 https_region_health_check = new Gcp.Compute.RegionHealthCheck(\"https-region-health-check\", new()\n {\n Name = \"https-region-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HttpsHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpsHealthCheckArgs\n {\n Port = 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"https-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"https-region-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHttpsHealthCheck: \u0026compute.RegionHealthCheckHttpsHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(443),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpsHealthCheckArgs;\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 https_region_health_check = new RegionHealthCheck(\"https-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"https-region-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .httpsHealthCheck(RegionHealthCheckHttpsHealthCheckArgs.builder()\n .port(\"443\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n https-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: https-region-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n httpsHealthCheck:\n port: '443'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Https Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst https_region_health_check = new gcp.compute.RegionHealthCheck(\"https-region-health-check\", {\n name: \"https-region-health-check\",\n description: \"Health check via https\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n httpsHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n host: \"1.2.3.4\",\n requestPath: \"/mypath\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttps_region_health_check = gcp.compute.RegionHealthCheck(\"https-region-health-check\",\n name=\"https-region-health-check\",\n description=\"Health check via https\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n https_health_check={\n \"portName\": \"health-check-port\",\n \"portSpecification\": \"USE_NAMED_PORT\",\n \"host\": \"1.2.3.4\",\n \"requestPath\": \"/mypath\",\n \"proxyHeader\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 https_region_health_check = new Gcp.Compute.RegionHealthCheck(\"https-region-health-check\", new()\n {\n Name = \"https-region-health-check\",\n Description = \"Health check via https\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n HttpsHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpsHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Host = \"1.2.3.4\",\n RequestPath = \"/mypath\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"https-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"https-region-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via https\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tHttpsHealthCheck: \u0026compute.RegionHealthCheckHttpsHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tHost: pulumi.String(\"1.2.3.4\"),\n\t\t\t\tRequestPath: pulumi.String(\"/mypath\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpsHealthCheckArgs;\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 https_region_health_check = new RegionHealthCheck(\"https-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"https-region-health-check\")\n .description(\"Health check via https\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .httpsHealthCheck(RegionHealthCheckHttpsHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .host(\"1.2.3.4\")\n .requestPath(\"/mypath\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n https-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: https-region-health-check\n description: Health check via https\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n httpsHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n host: 1.2.3.4\n requestPath: /mypath\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Http2\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http2_region_health_check = new gcp.compute.RegionHealthCheck(\"http2-region-health-check\", {\n name: \"http2-region-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n http2HealthCheck: {\n port: 443,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp2_region_health_check = gcp.compute.RegionHealthCheck(\"http2-region-health-check\",\n name=\"http2-region-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n http2_health_check={\n \"port\": 443,\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 http2_region_health_check = new Gcp.Compute.RegionHealthCheck(\"http2-region-health-check\", new()\n {\n Name = \"http2-region-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n Http2HealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttp2HealthCheckArgs\n {\n Port = 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"http2-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http2-region-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHttp2HealthCheck: \u0026compute.RegionHealthCheckHttp2HealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(443),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttp2HealthCheckArgs;\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 http2_region_health_check = new RegionHealthCheck(\"http2-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"http2-region-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .http2HealthCheck(RegionHealthCheckHttp2HealthCheckArgs.builder()\n .port(\"443\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http2-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: http2-region-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n http2HealthCheck:\n port: '443'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Http2 Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http2_region_health_check = new gcp.compute.RegionHealthCheck(\"http2-region-health-check\", {\n name: \"http2-region-health-check\",\n description: \"Health check via http2\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n http2HealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n host: \"1.2.3.4\",\n requestPath: \"/mypath\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp2_region_health_check = gcp.compute.RegionHealthCheck(\"http2-region-health-check\",\n name=\"http2-region-health-check\",\n description=\"Health check via http2\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n http2_health_check={\n \"portName\": \"health-check-port\",\n \"portSpecification\": \"USE_NAMED_PORT\",\n \"host\": \"1.2.3.4\",\n \"requestPath\": \"/mypath\",\n \"proxyHeader\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 http2_region_health_check = new Gcp.Compute.RegionHealthCheck(\"http2-region-health-check\", new()\n {\n Name = \"http2-region-health-check\",\n Description = \"Health check via http2\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n Http2HealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttp2HealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Host = \"1.2.3.4\",\n RequestPath = \"/mypath\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"http2-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http2-region-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via http2\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tHttp2HealthCheck: \u0026compute.RegionHealthCheckHttp2HealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tHost: pulumi.String(\"1.2.3.4\"),\n\t\t\t\tRequestPath: pulumi.String(\"/mypath\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttp2HealthCheckArgs;\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 http2_region_health_check = new RegionHealthCheck(\"http2-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"http2-region-health-check\")\n .description(\"Health check via http2\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .http2HealthCheck(RegionHealthCheckHttp2HealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .host(\"1.2.3.4\")\n .requestPath(\"/mypath\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http2-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: http2-region-health-check\n description: Health check via http2\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n http2HealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n host: 1.2.3.4\n requestPath: /mypath\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Grpc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst grpc_region_health_check = new gcp.compute.RegionHealthCheck(\"grpc-region-health-check\", {\n name: \"grpc-region-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n grpcHealthCheck: {\n port: 443,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngrpc_region_health_check = gcp.compute.RegionHealthCheck(\"grpc-region-health-check\",\n name=\"grpc-region-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n grpc_health_check={\n \"port\": 443,\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 grpc_region_health_check = new Gcp.Compute.RegionHealthCheck(\"grpc-region-health-check\", new()\n {\n Name = \"grpc-region-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n GrpcHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckGrpcHealthCheckArgs\n {\n Port = 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"grpc-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"grpc-region-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tGrpcHealthCheck: \u0026compute.RegionHealthCheckGrpcHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(443),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckGrpcHealthCheckArgs;\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 grpc_region_health_check = new RegionHealthCheck(\"grpc-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"grpc-region-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .grpcHealthCheck(RegionHealthCheckGrpcHealthCheckArgs.builder()\n .port(\"443\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n grpc-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: grpc-region-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n grpcHealthCheck:\n port: '443'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Grpc Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst grpc_region_health_check = new gcp.compute.RegionHealthCheck(\"grpc-region-health-check\", {\n name: \"grpc-region-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n grpcHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n grpcServiceName: \"testservice\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngrpc_region_health_check = gcp.compute.RegionHealthCheck(\"grpc-region-health-check\",\n name=\"grpc-region-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n grpc_health_check={\n \"portName\": \"health-check-port\",\n \"portSpecification\": \"USE_NAMED_PORT\",\n \"grpcServiceName\": \"testservice\",\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 grpc_region_health_check = new Gcp.Compute.RegionHealthCheck(\"grpc-region-health-check\", new()\n {\n Name = \"grpc-region-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n GrpcHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckGrpcHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n GrpcServiceName = \"testservice\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"grpc-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"grpc-region-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tGrpcHealthCheck: \u0026compute.RegionHealthCheckGrpcHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tGrpcServiceName: pulumi.String(\"testservice\"),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckGrpcHealthCheckArgs;\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 grpc_region_health_check = new RegionHealthCheck(\"grpc-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"grpc-region-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .grpcHealthCheck(RegionHealthCheckGrpcHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .grpcServiceName(\"testservice\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n grpc-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: grpc-region-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n grpcHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n grpcServiceName: testservice\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionHealthCheck can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/healthChecks/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionHealthCheck can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionHealthCheck:RegionHealthCheck default projects/{{project}}/regions/{{region}}/healthChecks/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionHealthCheck:RegionHealthCheck default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionHealthCheck:RegionHealthCheck default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionHealthCheck:RegionHealthCheck default {{name}}\n```\n\n", + "description": "Health Checks determine whether instances are responsive and able to do work.\nThey are an important part of a comprehensive load balancing configuration,\nas they enable monitoring instances behind load balancers.\n\nHealth Checks poll instances at a specified interval. Instances that\ndo not respond successfully to some number of probes in a row are marked\nas unhealthy. No new connections are sent to unhealthy instances,\nthough existing connections will continue. The health check will\ncontinue to poll unhealthy instances. If an instance later responds\nsuccessfully to some number of consecutive probes, it is marked\nhealthy again and can receive new connections.\n\n\nTo get more information about RegionHealthCheck, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/regionHealthChecks)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/health-checks)\n\n## Example Usage\n\n### Region Health Check Tcp\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tcp_region_health_check = new gcp.compute.RegionHealthCheck(\"tcp-region-health-check\", {\n name: \"tcp-region-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntcp_region_health_check = gcp.compute.RegionHealthCheck(\"tcp-region-health-check\",\n name=\"tcp-region-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n tcp_health_check={\n \"port\": 80,\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 tcp_region_health_check = new Gcp.Compute.RegionHealthCheck(\"tcp-region-health-check\", new()\n {\n Name = \"tcp-region-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"tcp-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"tcp-region-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.RegionHealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckTcpHealthCheckArgs;\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 tcp_region_health_check = new RegionHealthCheck(\"tcp-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"tcp-region-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .tcpHealthCheck(RegionHealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tcp-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: tcp-region-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n tcpHealthCheck:\n port: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Tcp Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tcp_region_health_check = new gcp.compute.RegionHealthCheck(\"tcp-region-health-check\", {\n name: \"tcp-region-health-check\",\n description: \"Health check via tcp\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n tcpHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n request: \"ARE YOU HEALTHY?\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntcp_region_health_check = gcp.compute.RegionHealthCheck(\"tcp-region-health-check\",\n name=\"tcp-region-health-check\",\n description=\"Health check via tcp\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n tcp_health_check={\n \"port_name\": \"health-check-port\",\n \"port_specification\": \"USE_NAMED_PORT\",\n \"request\": \"ARE YOU HEALTHY?\",\n \"proxy_header\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 tcp_region_health_check = new Gcp.Compute.RegionHealthCheck(\"tcp-region-health-check\", new()\n {\n Name = \"tcp-region-health-check\",\n Description = \"Health check via tcp\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n TcpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckTcpHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Request = \"ARE YOU HEALTHY?\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"tcp-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"tcp-region-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via tcp\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tTcpHealthCheck: \u0026compute.RegionHealthCheckTcpHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tRequest: pulumi.String(\"ARE YOU HEALTHY?\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckTcpHealthCheckArgs;\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 tcp_region_health_check = new RegionHealthCheck(\"tcp-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"tcp-region-health-check\")\n .description(\"Health check via tcp\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .tcpHealthCheck(RegionHealthCheckTcpHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .request(\"ARE YOU HEALTHY?\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tcp-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: tcp-region-health-check\n description: Health check via tcp\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n tcpHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n request: ARE YOU HEALTHY?\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Ssl\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ssl_region_health_check = new gcp.compute.RegionHealthCheck(\"ssl-region-health-check\", {\n name: \"ssl-region-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n sslHealthCheck: {\n port: 443,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nssl_region_health_check = gcp.compute.RegionHealthCheck(\"ssl-region-health-check\",\n name=\"ssl-region-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n ssl_health_check={\n \"port\": 443,\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 ssl_region_health_check = new Gcp.Compute.RegionHealthCheck(\"ssl-region-health-check\", new()\n {\n Name = \"ssl-region-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n SslHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckSslHealthCheckArgs\n {\n Port = 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"ssl-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"ssl-region-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tSslHealthCheck: \u0026compute.RegionHealthCheckSslHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(443),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckSslHealthCheckArgs;\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 ssl_region_health_check = new RegionHealthCheck(\"ssl-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"ssl-region-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .sslHealthCheck(RegionHealthCheckSslHealthCheckArgs.builder()\n .port(\"443\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ssl-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: ssl-region-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n sslHealthCheck:\n port: '443'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Ssl Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ssl_region_health_check = new gcp.compute.RegionHealthCheck(\"ssl-region-health-check\", {\n name: \"ssl-region-health-check\",\n description: \"Health check via ssl\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n sslHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n request: \"ARE YOU HEALTHY?\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nssl_region_health_check = gcp.compute.RegionHealthCheck(\"ssl-region-health-check\",\n name=\"ssl-region-health-check\",\n description=\"Health check via ssl\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n ssl_health_check={\n \"port_name\": \"health-check-port\",\n \"port_specification\": \"USE_NAMED_PORT\",\n \"request\": \"ARE YOU HEALTHY?\",\n \"proxy_header\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 ssl_region_health_check = new Gcp.Compute.RegionHealthCheck(\"ssl-region-health-check\", new()\n {\n Name = \"ssl-region-health-check\",\n Description = \"Health check via ssl\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n SslHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckSslHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Request = \"ARE YOU HEALTHY?\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"ssl-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"ssl-region-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via ssl\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tSslHealthCheck: \u0026compute.RegionHealthCheckSslHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tRequest: pulumi.String(\"ARE YOU HEALTHY?\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckSslHealthCheckArgs;\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 ssl_region_health_check = new RegionHealthCheck(\"ssl-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"ssl-region-health-check\")\n .description(\"Health check via ssl\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .sslHealthCheck(RegionHealthCheckSslHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .request(\"ARE YOU HEALTHY?\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ssl-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: ssl-region-health-check\n description: Health check via ssl\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n sslHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n request: ARE YOU HEALTHY?\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Http\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http_region_health_check = new gcp.compute.RegionHealthCheck(\"http-region-health-check\", {\n name: \"http-region-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n httpHealthCheck: {\n port: 80,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp_region_health_check = gcp.compute.RegionHealthCheck(\"http-region-health-check\",\n name=\"http-region-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n http_health_check={\n \"port\": 80,\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 http_region_health_check = new Gcp.Compute.RegionHealthCheck(\"http-region-health-check\", new()\n {\n Name = \"http-region-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"http-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-region-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\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 http_region_health_check = new RegionHealthCheck(\"http-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"http-region-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: http-region-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n httpHealthCheck:\n port: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Http Logs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http_region_health_check = new gcp.compute.RegionHealthCheck(\"http-region-health-check\", {\n name: \"http-region-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n httpHealthCheck: {\n port: 80,\n },\n logConfig: {\n enable: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp_region_health_check = gcp.compute.RegionHealthCheck(\"http-region-health-check\",\n name=\"http-region-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n http_health_check={\n \"port\": 80,\n },\n log_config={\n \"enable\": 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 http_region_health_check = new Gcp.Compute.RegionHealthCheck(\"http-region-health-check\", new()\n {\n Name = \"http-region-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n LogConfig = new Gcp.Compute.Inputs.RegionHealthCheckLogConfigArgs\n {\n Enable = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"http-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-region-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t\tLogConfig: \u0026compute.RegionHealthCheckLogConfigArgs{\n\t\t\t\tEnable: 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.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckLogConfigArgs;\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 http_region_health_check = new RegionHealthCheck(\"http-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"http-region-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .logConfig(RegionHealthCheckLogConfigArgs.builder()\n .enable(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: http-region-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n httpHealthCheck:\n port: '80'\n logConfig:\n enable: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Http Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http_region_health_check = new gcp.compute.RegionHealthCheck(\"http-region-health-check\", {\n name: \"http-region-health-check\",\n description: \"Health check via http\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n httpHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n host: \"1.2.3.4\",\n requestPath: \"/mypath\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp_region_health_check = gcp.compute.RegionHealthCheck(\"http-region-health-check\",\n name=\"http-region-health-check\",\n description=\"Health check via http\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n http_health_check={\n \"port_name\": \"health-check-port\",\n \"port_specification\": \"USE_NAMED_PORT\",\n \"host\": \"1.2.3.4\",\n \"request_path\": \"/mypath\",\n \"proxy_header\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 http_region_health_check = new Gcp.Compute.RegionHealthCheck(\"http-region-health-check\", new()\n {\n Name = \"http-region-health-check\",\n Description = \"Health check via http\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Host = \"1.2.3.4\",\n RequestPath = \"/mypath\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"http-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-region-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via http\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tHost: pulumi.String(\"1.2.3.4\"),\n\t\t\t\tRequestPath: pulumi.String(\"/mypath\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\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 http_region_health_check = new RegionHealthCheck(\"http-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"http-region-health-check\")\n .description(\"Health check via http\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .host(\"1.2.3.4\")\n .requestPath(\"/mypath\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: http-region-health-check\n description: Health check via http\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n httpHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n host: 1.2.3.4\n requestPath: /mypath\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Https\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst https_region_health_check = new gcp.compute.RegionHealthCheck(\"https-region-health-check\", {\n name: \"https-region-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n httpsHealthCheck: {\n port: 443,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttps_region_health_check = gcp.compute.RegionHealthCheck(\"https-region-health-check\",\n name=\"https-region-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n https_health_check={\n \"port\": 443,\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 https_region_health_check = new Gcp.Compute.RegionHealthCheck(\"https-region-health-check\", new()\n {\n Name = \"https-region-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HttpsHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpsHealthCheckArgs\n {\n Port = 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"https-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"https-region-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHttpsHealthCheck: \u0026compute.RegionHealthCheckHttpsHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(443),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpsHealthCheckArgs;\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 https_region_health_check = new RegionHealthCheck(\"https-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"https-region-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .httpsHealthCheck(RegionHealthCheckHttpsHealthCheckArgs.builder()\n .port(\"443\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n https-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: https-region-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n httpsHealthCheck:\n port: '443'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Https Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst https_region_health_check = new gcp.compute.RegionHealthCheck(\"https-region-health-check\", {\n name: \"https-region-health-check\",\n description: \"Health check via https\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n httpsHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n host: \"1.2.3.4\",\n requestPath: \"/mypath\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttps_region_health_check = gcp.compute.RegionHealthCheck(\"https-region-health-check\",\n name=\"https-region-health-check\",\n description=\"Health check via https\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n https_health_check={\n \"port_name\": \"health-check-port\",\n \"port_specification\": \"USE_NAMED_PORT\",\n \"host\": \"1.2.3.4\",\n \"request_path\": \"/mypath\",\n \"proxy_header\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 https_region_health_check = new Gcp.Compute.RegionHealthCheck(\"https-region-health-check\", new()\n {\n Name = \"https-region-health-check\",\n Description = \"Health check via https\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n HttpsHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpsHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Host = \"1.2.3.4\",\n RequestPath = \"/mypath\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"https-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"https-region-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via https\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tHttpsHealthCheck: \u0026compute.RegionHealthCheckHttpsHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tHost: pulumi.String(\"1.2.3.4\"),\n\t\t\t\tRequestPath: pulumi.String(\"/mypath\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpsHealthCheckArgs;\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 https_region_health_check = new RegionHealthCheck(\"https-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"https-region-health-check\")\n .description(\"Health check via https\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .httpsHealthCheck(RegionHealthCheckHttpsHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .host(\"1.2.3.4\")\n .requestPath(\"/mypath\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n https-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: https-region-health-check\n description: Health check via https\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n httpsHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n host: 1.2.3.4\n requestPath: /mypath\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Http2\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http2_region_health_check = new gcp.compute.RegionHealthCheck(\"http2-region-health-check\", {\n name: \"http2-region-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n http2HealthCheck: {\n port: 443,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp2_region_health_check = gcp.compute.RegionHealthCheck(\"http2-region-health-check\",\n name=\"http2-region-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n http2_health_check={\n \"port\": 443,\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 http2_region_health_check = new Gcp.Compute.RegionHealthCheck(\"http2-region-health-check\", new()\n {\n Name = \"http2-region-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n Http2HealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttp2HealthCheckArgs\n {\n Port = 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"http2-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http2-region-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHttp2HealthCheck: \u0026compute.RegionHealthCheckHttp2HealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(443),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttp2HealthCheckArgs;\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 http2_region_health_check = new RegionHealthCheck(\"http2-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"http2-region-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .http2HealthCheck(RegionHealthCheckHttp2HealthCheckArgs.builder()\n .port(\"443\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http2-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: http2-region-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n http2HealthCheck:\n port: '443'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Http2 Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http2_region_health_check = new gcp.compute.RegionHealthCheck(\"http2-region-health-check\", {\n name: \"http2-region-health-check\",\n description: \"Health check via http2\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n http2HealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n host: \"1.2.3.4\",\n requestPath: \"/mypath\",\n proxyHeader: \"NONE\",\n response: \"I AM HEALTHY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp2_region_health_check = gcp.compute.RegionHealthCheck(\"http2-region-health-check\",\n name=\"http2-region-health-check\",\n description=\"Health check via http2\",\n timeout_sec=1,\n check_interval_sec=1,\n healthy_threshold=4,\n unhealthy_threshold=5,\n http2_health_check={\n \"port_name\": \"health-check-port\",\n \"port_specification\": \"USE_NAMED_PORT\",\n \"host\": \"1.2.3.4\",\n \"request_path\": \"/mypath\",\n \"proxy_header\": \"NONE\",\n \"response\": \"I AM HEALTHY\",\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 http2_region_health_check = new Gcp.Compute.RegionHealthCheck(\"http2-region-health-check\", new()\n {\n Name = \"http2-region-health-check\",\n Description = \"Health check via http2\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n Http2HealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttp2HealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n Host = \"1.2.3.4\",\n RequestPath = \"/mypath\",\n ProxyHeader = \"NONE\",\n Response = \"I AM HEALTHY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"http2-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http2-region-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via http2\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tHttp2HealthCheck: \u0026compute.RegionHealthCheckHttp2HealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tHost: pulumi.String(\"1.2.3.4\"),\n\t\t\t\tRequestPath: pulumi.String(\"/mypath\"),\n\t\t\t\tProxyHeader: pulumi.String(\"NONE\"),\n\t\t\t\tResponse: pulumi.String(\"I AM HEALTHY\"),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttp2HealthCheckArgs;\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 http2_region_health_check = new RegionHealthCheck(\"http2-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"http2-region-health-check\")\n .description(\"Health check via http2\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .http2HealthCheck(RegionHealthCheckHttp2HealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .host(\"1.2.3.4\")\n .requestPath(\"/mypath\")\n .proxyHeader(\"NONE\")\n .response(\"I AM HEALTHY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http2-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: http2-region-health-check\n description: Health check via http2\n timeoutSec: 1\n checkIntervalSec: 1\n healthyThreshold: 4\n unhealthyThreshold: 5\n http2HealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n host: 1.2.3.4\n requestPath: /mypath\n proxyHeader: NONE\n response: I AM HEALTHY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Grpc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst grpc_region_health_check = new gcp.compute.RegionHealthCheck(\"grpc-region-health-check\", {\n name: \"grpc-region-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n grpcHealthCheck: {\n port: 443,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngrpc_region_health_check = gcp.compute.RegionHealthCheck(\"grpc-region-health-check\",\n name=\"grpc-region-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n grpc_health_check={\n \"port\": 443,\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 grpc_region_health_check = new Gcp.Compute.RegionHealthCheck(\"grpc-region-health-check\", new()\n {\n Name = \"grpc-region-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n GrpcHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckGrpcHealthCheckArgs\n {\n Port = 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"grpc-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"grpc-region-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tGrpcHealthCheck: \u0026compute.RegionHealthCheckGrpcHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(443),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckGrpcHealthCheckArgs;\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 grpc_region_health_check = new RegionHealthCheck(\"grpc-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"grpc-region-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .grpcHealthCheck(RegionHealthCheckGrpcHealthCheckArgs.builder()\n .port(\"443\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n grpc-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: grpc-region-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n grpcHealthCheck:\n port: '443'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Health Check Grpc Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst grpc_region_health_check = new gcp.compute.RegionHealthCheck(\"grpc-region-health-check\", {\n name: \"grpc-region-health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n grpcHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n grpcServiceName: \"testservice\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngrpc_region_health_check = gcp.compute.RegionHealthCheck(\"grpc-region-health-check\",\n name=\"grpc-region-health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n grpc_health_check={\n \"port_name\": \"health-check-port\",\n \"port_specification\": \"USE_NAMED_PORT\",\n \"grpc_service_name\": \"testservice\",\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 grpc_region_health_check = new Gcp.Compute.RegionHealthCheck(\"grpc-region-health-check\", new()\n {\n Name = \"grpc-region-health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n GrpcHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckGrpcHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n GrpcServiceName = \"testservice\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"grpc-region-health-check\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"grpc-region-health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tGrpcHealthCheck: \u0026compute.RegionHealthCheckGrpcHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tGrpcServiceName: pulumi.String(\"testservice\"),\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.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckGrpcHealthCheckArgs;\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 grpc_region_health_check = new RegionHealthCheck(\"grpc-region-health-check\", RegionHealthCheckArgs.builder()\n .name(\"grpc-region-health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .grpcHealthCheck(RegionHealthCheckGrpcHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .grpcServiceName(\"testservice\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n grpc-region-health-check:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: grpc-region-health-check\n timeoutSec: 1\n checkIntervalSec: 1\n grpcHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n grpcServiceName: testservice\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionHealthCheck can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/healthChecks/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionHealthCheck can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionHealthCheck:RegionHealthCheck default projects/{{project}}/regions/{{region}}/healthChecks/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionHealthCheck:RegionHealthCheck default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionHealthCheck:RegionHealthCheck default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionHealthCheck:RegionHealthCheck default {{name}}\n```\n\n", "properties": { "checkIntervalSec": { "type": "integer", @@ -157503,7 +157503,7 @@ } }, "gcp:compute/regionInstanceGroupManager:RegionInstanceGroupManager": { - "description": "The Google Compute Engine Regional Instance Group Manager API creates and manages pools\nof homogeneous Compute Engine virtual machine instances from a common instance\ntemplate.\n\nTo get more information about regionInstanceGroupManagers, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/latest/regionInstanceGroupManagers)\n* How-to Guides\n * [Regional Instance Groups Guide](https://cloud.google.com/compute/docs/instance-groups/distributing-instances-with-regional-instance-groups)\n\n\u003e **Note:** Use [gcp.compute.InstanceGroupManager](https://www.terraform.io/docs/providers/google/r/compute_instance_group_manager.html) to create a zonal instance group manager.\n\n## Example Usage\n\n### With Top Level Instance Template (`Google` Provider)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst autohealing = new gcp.compute.HealthCheck(\"autohealing\", {\n name: \"autohealing-health-check\",\n checkIntervalSec: 5,\n timeoutSec: 5,\n healthyThreshold: 2,\n unhealthyThreshold: 10,\n httpHealthCheck: {\n requestPath: \"/healthz\",\n port: 8080,\n },\n});\nconst appserver = new gcp.compute.RegionInstanceGroupManager(\"appserver\", {\n name: \"appserver-igm\",\n baseInstanceName: \"app\",\n region: \"us-central1\",\n distributionPolicyZones: [\n \"us-central1-a\",\n \"us-central1-f\",\n ],\n versions: [{\n instanceTemplate: appserverGoogleComputeInstanceTemplate.selfLinkUnique,\n }],\n allInstancesConfig: {\n metadata: {\n metadata_key: \"metadata_value\",\n },\n labels: {\n label_key: \"label_value\",\n },\n },\n targetPools: [appserverGoogleComputeTargetPool.id],\n targetSize: 2,\n namedPorts: [{\n name: \"custom\",\n port: 8888,\n }],\n autoHealingPolicies: {\n healthCheck: autohealing.id,\n initialDelaySec: 300,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nautohealing = gcp.compute.HealthCheck(\"autohealing\",\n name=\"autohealing-health-check\",\n check_interval_sec=5,\n timeout_sec=5,\n healthy_threshold=2,\n unhealthy_threshold=10,\n http_health_check={\n \"requestPath\": \"/healthz\",\n \"port\": 8080,\n })\nappserver = gcp.compute.RegionInstanceGroupManager(\"appserver\",\n name=\"appserver-igm\",\n base_instance_name=\"app\",\n region=\"us-central1\",\n distribution_policy_zones=[\n \"us-central1-a\",\n \"us-central1-f\",\n ],\n versions=[{\n \"instanceTemplate\": appserver_google_compute_instance_template[\"selfLinkUnique\"],\n }],\n all_instances_config={\n \"metadata\": {\n \"metadata_key\": \"metadata_value\",\n },\n \"labels\": {\n \"label_key\": \"label_value\",\n },\n },\n target_pools=[appserver_google_compute_target_pool[\"id\"]],\n target_size=2,\n named_ports=[{\n \"name\": \"custom\",\n \"port\": 8888,\n }],\n auto_healing_policies={\n \"healthCheck\": autohealing.id,\n \"initialDelaySec\": 300,\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 autohealing = new Gcp.Compute.HealthCheck(\"autohealing\", new()\n {\n Name = \"autohealing-health-check\",\n CheckIntervalSec = 5,\n TimeoutSec = 5,\n HealthyThreshold = 2,\n UnhealthyThreshold = 10,\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n RequestPath = \"/healthz\",\n Port = 8080,\n },\n });\n\n var appserver = new Gcp.Compute.RegionInstanceGroupManager(\"appserver\", new()\n {\n Name = \"appserver-igm\",\n BaseInstanceName = \"app\",\n Region = \"us-central1\",\n DistributionPolicyZones = new[]\n {\n \"us-central1-a\",\n \"us-central1-f\",\n },\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = appserverGoogleComputeInstanceTemplate.SelfLinkUnique,\n },\n },\n AllInstancesConfig = new Gcp.Compute.Inputs.RegionInstanceGroupManagerAllInstancesConfigArgs\n {\n Metadata = \n {\n { \"metadata_key\", \"metadata_value\" },\n },\n Labels = \n {\n { \"label_key\", \"label_value\" },\n },\n },\n TargetPools = new[]\n {\n appserverGoogleComputeTargetPool.Id,\n },\n TargetSize = 2,\n NamedPorts = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerNamedPortArgs\n {\n Name = \"custom\",\n Port = 8888,\n },\n },\n AutoHealingPolicies = new Gcp.Compute.Inputs.RegionInstanceGroupManagerAutoHealingPoliciesArgs\n {\n HealthCheck = autohealing.Id,\n InitialDelaySec = 300,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tautohealing, err := compute.NewHealthCheck(ctx, \"autohealing\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"autohealing-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(5),\n\t\t\tTimeoutSec: pulumi.Int(5),\n\t\t\tHealthyThreshold: pulumi.Int(2),\n\t\t\tUnhealthyThreshold: pulumi.Int(10),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tRequestPath: pulumi.String(\"/healthz\"),\n\t\t\t\tPort: pulumi.Int(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 = compute.NewRegionInstanceGroupManager(ctx, \"appserver\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"appserver-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"app\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDistributionPolicyZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-central1-a\"),\n\t\t\t\tpulumi.String(\"us-central1-f\"),\n\t\t\t},\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserverGoogleComputeInstanceTemplate.SelfLinkUnique),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllInstancesConfig: \u0026compute.RegionInstanceGroupManagerAllInstancesConfigArgs{\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"metadata_key\": pulumi.String(\"metadata_value\"),\n\t\t\t\t},\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label_key\": pulumi.String(\"label_value\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetPools: pulumi.StringArray{\n\t\t\t\tappserverGoogleComputeTargetPool.Id,\n\t\t\t},\n\t\t\tTargetSize: pulumi.Int(2),\n\t\t\tNamedPorts: compute.RegionInstanceGroupManagerNamedPortArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerNamedPortArgs{\n\t\t\t\t\tName: pulumi.String(\"custom\"),\n\t\t\t\t\tPort: pulumi.Int(8888),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutoHealingPolicies: \u0026compute.RegionInstanceGroupManagerAutoHealingPoliciesArgs{\n\t\t\t\tHealthCheck: autohealing.ID(),\n\t\t\t\tInitialDelaySec: pulumi.Int(300),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerAllInstancesConfigArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerNamedPortArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerAutoHealingPoliciesArgs;\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 autohealing = new HealthCheck(\"autohealing\", HealthCheckArgs.builder()\n .name(\"autohealing-health-check\")\n .checkIntervalSec(5)\n .timeoutSec(5)\n .healthyThreshold(2)\n .unhealthyThreshold(10)\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .requestPath(\"/healthz\")\n .port(\"8080\")\n .build())\n .build());\n\n var appserver = new RegionInstanceGroupManager(\"appserver\", RegionInstanceGroupManagerArgs.builder()\n .name(\"appserver-igm\")\n .baseInstanceName(\"app\")\n .region(\"us-central1\")\n .distributionPolicyZones( \n \"us-central1-a\",\n \"us-central1-f\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(appserverGoogleComputeInstanceTemplate.selfLinkUnique())\n .build())\n .allInstancesConfig(RegionInstanceGroupManagerAllInstancesConfigArgs.builder()\n .metadata(Map.of(\"metadata_key\", \"metadata_value\"))\n .labels(Map.of(\"label_key\", \"label_value\"))\n .build())\n .targetPools(appserverGoogleComputeTargetPool.id())\n .targetSize(2)\n .namedPorts(RegionInstanceGroupManagerNamedPortArgs.builder()\n .name(\"custom\")\n .port(8888)\n .build())\n .autoHealingPolicies(RegionInstanceGroupManagerAutoHealingPoliciesArgs.builder()\n .healthCheck(autohealing.id())\n .initialDelaySec(300)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n autohealing:\n type: gcp:compute:HealthCheck\n properties:\n name: autohealing-health-check\n checkIntervalSec: 5\n timeoutSec: 5\n healthyThreshold: 2\n unhealthyThreshold: 10 # 50 seconds\n httpHealthCheck:\n requestPath: /healthz\n port: '8080'\n appserver:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n name: appserver-igm\n baseInstanceName: app\n region: us-central1\n distributionPolicyZones:\n - us-central1-a\n - us-central1-f\n versions:\n - instanceTemplate: ${appserverGoogleComputeInstanceTemplate.selfLinkUnique}\n allInstancesConfig:\n metadata:\n metadata_key: metadata_value\n labels:\n label_key: label_value\n targetPools:\n - ${appserverGoogleComputeTargetPool.id}\n targetSize: 2\n namedPorts:\n - name: custom\n port: 8888\n autoHealingPolicies:\n healthCheck: ${autohealing.id}\n initialDelaySec: 300\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Multiple Versions\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst appserver = new gcp.compute.RegionInstanceGroupManager(\"appserver\", {\n name: \"appserver-igm\",\n baseInstanceName: \"app\",\n region: \"us-central1\",\n targetSize: 5,\n versions: [\n {\n instanceTemplate: appserverGoogleComputeInstanceTemplate.selfLinkUnique,\n },\n {\n instanceTemplate: appserver_canary.selfLinkUnique,\n targetSize: {\n fixed: 1,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nappserver = gcp.compute.RegionInstanceGroupManager(\"appserver\",\n name=\"appserver-igm\",\n base_instance_name=\"app\",\n region=\"us-central1\",\n target_size=5,\n versions=[\n {\n \"instanceTemplate\": appserver_google_compute_instance_template[\"selfLinkUnique\"],\n },\n {\n \"instanceTemplate\": appserver_canary[\"selfLinkUnique\"],\n \"targetSize\": {\n \"fixed\": 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 appserver = new Gcp.Compute.RegionInstanceGroupManager(\"appserver\", new()\n {\n Name = \"appserver-igm\",\n BaseInstanceName = \"app\",\n Region = \"us-central1\",\n TargetSize = 5,\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = appserverGoogleComputeInstanceTemplate.SelfLinkUnique,\n },\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = appserver_canary.SelfLinkUnique,\n TargetSize = new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionTargetSizeArgs\n {\n Fixed = 1,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionInstanceGroupManager(ctx, \"appserver\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"appserver-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"app\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTargetSize: pulumi.Int(5),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserverGoogleComputeInstanceTemplate.SelfLinkUnique),\n\t\t\t\t},\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserver_canary.SelfLinkUnique),\n\t\t\t\t\tTargetSize: \u0026compute.RegionInstanceGroupManagerVersionTargetSizeArgs{\n\t\t\t\t\t\tFixed: pulumi.Int(1),\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.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionTargetSizeArgs;\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 appserver = new RegionInstanceGroupManager(\"appserver\", RegionInstanceGroupManagerArgs.builder()\n .name(\"appserver-igm\")\n .baseInstanceName(\"app\")\n .region(\"us-central1\")\n .targetSize(5)\n .versions( \n RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(appserverGoogleComputeInstanceTemplate.selfLinkUnique())\n .build(),\n RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(appserver_canary.selfLinkUnique())\n .targetSize(RegionInstanceGroupManagerVersionTargetSizeArgs.builder()\n .fixed(1)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n appserver:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n name: appserver-igm\n baseInstanceName: app\n region: us-central1\n targetSize: 5\n versions:\n - instanceTemplate: ${appserverGoogleComputeInstanceTemplate.selfLinkUnique}\n - instanceTemplate: ${[\"appserver-canary\"].selfLinkUnique}\n targetSize:\n fixed: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Standby Policy (`Google-Beta` Provider)\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst igm_sr = new gcp.compute.RegionInstanceGroupManager(\"igm-sr\", {\n name: \"tf-sr-igm\",\n baseInstanceName: \"tf-sr-igm-instance\",\n region: \"us-central1\",\n targetSize: 5,\n versions: [{\n instanceTemplate: sr_igm.selfLink,\n name: \"primary\",\n }],\n standbyPolicy: {\n initialDelaySec: 50,\n mode: \"SCALE_OUT_POOL\",\n },\n targetSuspendedSize: 1,\n targetStoppedSize: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nigm_sr = gcp.compute.RegionInstanceGroupManager(\"igm-sr\",\n name=\"tf-sr-igm\",\n base_instance_name=\"tf-sr-igm-instance\",\n region=\"us-central1\",\n target_size=5,\n versions=[{\n \"instanceTemplate\": sr_igm[\"selfLink\"],\n \"name\": \"primary\",\n }],\n standby_policy={\n \"initialDelaySec\": 50,\n \"mode\": \"SCALE_OUT_POOL\",\n },\n target_suspended_size=1,\n target_stopped_size=1)\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 igm_sr = new Gcp.Compute.RegionInstanceGroupManager(\"igm-sr\", new()\n {\n Name = \"tf-sr-igm\",\n BaseInstanceName = \"tf-sr-igm-instance\",\n Region = \"us-central1\",\n TargetSize = 5,\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = sr_igm.SelfLink,\n Name = \"primary\",\n },\n },\n StandbyPolicy = new Gcp.Compute.Inputs.RegionInstanceGroupManagerStandbyPolicyArgs\n {\n InitialDelaySec = 50,\n Mode = \"SCALE_OUT_POOL\",\n },\n TargetSuspendedSize = 1,\n TargetStoppedSize = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionInstanceGroupManager(ctx, \"igm-sr\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"tf-sr-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"tf-sr-igm-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTargetSize: pulumi.Int(5),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(sr_igm.SelfLink),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStandbyPolicy: \u0026compute.RegionInstanceGroupManagerStandbyPolicyArgs{\n\t\t\t\tInitialDelaySec: pulumi.Int(50),\n\t\t\t\tMode: pulumi.String(\"SCALE_OUT_POOL\"),\n\t\t\t},\n\t\t\tTargetSuspendedSize: pulumi.Int(1),\n\t\t\tTargetStoppedSize: pulumi.Int(1),\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.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerStandbyPolicyArgs;\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 igm_sr = new RegionInstanceGroupManager(\"igm-sr\", RegionInstanceGroupManagerArgs.builder()\n .name(\"tf-sr-igm\")\n .baseInstanceName(\"tf-sr-igm-instance\")\n .region(\"us-central1\")\n .targetSize(5)\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(sr_igm.selfLink())\n .name(\"primary\")\n .build())\n .standbyPolicy(RegionInstanceGroupManagerStandbyPolicyArgs.builder()\n .initialDelaySec(50)\n .mode(\"SCALE_OUT_POOL\")\n .build())\n .targetSuspendedSize(1)\n .targetStoppedSize(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n igm-sr:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n name: tf-sr-igm\n baseInstanceName: tf-sr-igm-instance\n region: us-central1\n targetSize: 5\n versions:\n - instanceTemplate: ${[\"sr-igm\"].selfLink}\n name: primary\n standbyPolicy:\n initialDelaySec: 50\n mode: SCALE_OUT_POOL\n targetSuspendedSize: 1\n targetStoppedSize: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance group managers can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, instance group managers can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionInstanceGroupManager:RegionInstanceGroupManager default {{name}}\n```\n\n", + "description": "The Google Compute Engine Regional Instance Group Manager API creates and manages pools\nof homogeneous Compute Engine virtual machine instances from a common instance\ntemplate.\n\nTo get more information about regionInstanceGroupManagers, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/latest/regionInstanceGroupManagers)\n* How-to Guides\n * [Regional Instance Groups Guide](https://cloud.google.com/compute/docs/instance-groups/distributing-instances-with-regional-instance-groups)\n\n\u003e **Note:** Use [gcp.compute.InstanceGroupManager](https://www.terraform.io/docs/providers/google/r/compute_instance_group_manager.html) to create a zonal instance group manager.\n\n## Example Usage\n\n### With Top Level Instance Template (`Google` Provider)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst autohealing = new gcp.compute.HealthCheck(\"autohealing\", {\n name: \"autohealing-health-check\",\n checkIntervalSec: 5,\n timeoutSec: 5,\n healthyThreshold: 2,\n unhealthyThreshold: 10,\n httpHealthCheck: {\n requestPath: \"/healthz\",\n port: 8080,\n },\n});\nconst appserver = new gcp.compute.RegionInstanceGroupManager(\"appserver\", {\n name: \"appserver-igm\",\n baseInstanceName: \"app\",\n region: \"us-central1\",\n distributionPolicyZones: [\n \"us-central1-a\",\n \"us-central1-f\",\n ],\n versions: [{\n instanceTemplate: appserverGoogleComputeInstanceTemplate.selfLinkUnique,\n }],\n allInstancesConfig: {\n metadata: {\n metadata_key: \"metadata_value\",\n },\n labels: {\n label_key: \"label_value\",\n },\n },\n targetPools: [appserverGoogleComputeTargetPool.id],\n targetSize: 2,\n namedPorts: [{\n name: \"custom\",\n port: 8888,\n }],\n autoHealingPolicies: {\n healthCheck: autohealing.id,\n initialDelaySec: 300,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nautohealing = gcp.compute.HealthCheck(\"autohealing\",\n name=\"autohealing-health-check\",\n check_interval_sec=5,\n timeout_sec=5,\n healthy_threshold=2,\n unhealthy_threshold=10,\n http_health_check={\n \"request_path\": \"/healthz\",\n \"port\": 8080,\n })\nappserver = gcp.compute.RegionInstanceGroupManager(\"appserver\",\n name=\"appserver-igm\",\n base_instance_name=\"app\",\n region=\"us-central1\",\n distribution_policy_zones=[\n \"us-central1-a\",\n \"us-central1-f\",\n ],\n versions=[{\n \"instance_template\": appserver_google_compute_instance_template[\"selfLinkUnique\"],\n }],\n all_instances_config={\n \"metadata\": {\n \"metadata_key\": \"metadata_value\",\n },\n \"labels\": {\n \"label_key\": \"label_value\",\n },\n },\n target_pools=[appserver_google_compute_target_pool[\"id\"]],\n target_size=2,\n named_ports=[{\n \"name\": \"custom\",\n \"port\": 8888,\n }],\n auto_healing_policies={\n \"health_check\": autohealing.id,\n \"initial_delay_sec\": 300,\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 autohealing = new Gcp.Compute.HealthCheck(\"autohealing\", new()\n {\n Name = \"autohealing-health-check\",\n CheckIntervalSec = 5,\n TimeoutSec = 5,\n HealthyThreshold = 2,\n UnhealthyThreshold = 10,\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n RequestPath = \"/healthz\",\n Port = 8080,\n },\n });\n\n var appserver = new Gcp.Compute.RegionInstanceGroupManager(\"appserver\", new()\n {\n Name = \"appserver-igm\",\n BaseInstanceName = \"app\",\n Region = \"us-central1\",\n DistributionPolicyZones = new[]\n {\n \"us-central1-a\",\n \"us-central1-f\",\n },\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = appserverGoogleComputeInstanceTemplate.SelfLinkUnique,\n },\n },\n AllInstancesConfig = new Gcp.Compute.Inputs.RegionInstanceGroupManagerAllInstancesConfigArgs\n {\n Metadata = \n {\n { \"metadata_key\", \"metadata_value\" },\n },\n Labels = \n {\n { \"label_key\", \"label_value\" },\n },\n },\n TargetPools = new[]\n {\n appserverGoogleComputeTargetPool.Id,\n },\n TargetSize = 2,\n NamedPorts = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerNamedPortArgs\n {\n Name = \"custom\",\n Port = 8888,\n },\n },\n AutoHealingPolicies = new Gcp.Compute.Inputs.RegionInstanceGroupManagerAutoHealingPoliciesArgs\n {\n HealthCheck = autohealing.Id,\n InitialDelaySec = 300,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tautohealing, err := compute.NewHealthCheck(ctx, \"autohealing\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"autohealing-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(5),\n\t\t\tTimeoutSec: pulumi.Int(5),\n\t\t\tHealthyThreshold: pulumi.Int(2),\n\t\t\tUnhealthyThreshold: pulumi.Int(10),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tRequestPath: pulumi.String(\"/healthz\"),\n\t\t\t\tPort: pulumi.Int(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 = compute.NewRegionInstanceGroupManager(ctx, \"appserver\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"appserver-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"app\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDistributionPolicyZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-central1-a\"),\n\t\t\t\tpulumi.String(\"us-central1-f\"),\n\t\t\t},\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserverGoogleComputeInstanceTemplate.SelfLinkUnique),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllInstancesConfig: \u0026compute.RegionInstanceGroupManagerAllInstancesConfigArgs{\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"metadata_key\": pulumi.String(\"metadata_value\"),\n\t\t\t\t},\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label_key\": pulumi.String(\"label_value\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTargetPools: pulumi.StringArray{\n\t\t\t\tappserverGoogleComputeTargetPool.Id,\n\t\t\t},\n\t\t\tTargetSize: pulumi.Int(2),\n\t\t\tNamedPorts: compute.RegionInstanceGroupManagerNamedPortArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerNamedPortArgs{\n\t\t\t\t\tName: pulumi.String(\"custom\"),\n\t\t\t\t\tPort: pulumi.Int(8888),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutoHealingPolicies: \u0026compute.RegionInstanceGroupManagerAutoHealingPoliciesArgs{\n\t\t\t\tHealthCheck: autohealing.ID(),\n\t\t\t\tInitialDelaySec: pulumi.Int(300),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerAllInstancesConfigArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerNamedPortArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerAutoHealingPoliciesArgs;\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 autohealing = new HealthCheck(\"autohealing\", HealthCheckArgs.builder()\n .name(\"autohealing-health-check\")\n .checkIntervalSec(5)\n .timeoutSec(5)\n .healthyThreshold(2)\n .unhealthyThreshold(10)\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .requestPath(\"/healthz\")\n .port(\"8080\")\n .build())\n .build());\n\n var appserver = new RegionInstanceGroupManager(\"appserver\", RegionInstanceGroupManagerArgs.builder()\n .name(\"appserver-igm\")\n .baseInstanceName(\"app\")\n .region(\"us-central1\")\n .distributionPolicyZones( \n \"us-central1-a\",\n \"us-central1-f\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(appserverGoogleComputeInstanceTemplate.selfLinkUnique())\n .build())\n .allInstancesConfig(RegionInstanceGroupManagerAllInstancesConfigArgs.builder()\n .metadata(Map.of(\"metadata_key\", \"metadata_value\"))\n .labels(Map.of(\"label_key\", \"label_value\"))\n .build())\n .targetPools(appserverGoogleComputeTargetPool.id())\n .targetSize(2)\n .namedPorts(RegionInstanceGroupManagerNamedPortArgs.builder()\n .name(\"custom\")\n .port(8888)\n .build())\n .autoHealingPolicies(RegionInstanceGroupManagerAutoHealingPoliciesArgs.builder()\n .healthCheck(autohealing.id())\n .initialDelaySec(300)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n autohealing:\n type: gcp:compute:HealthCheck\n properties:\n name: autohealing-health-check\n checkIntervalSec: 5\n timeoutSec: 5\n healthyThreshold: 2\n unhealthyThreshold: 10 # 50 seconds\n httpHealthCheck:\n requestPath: /healthz\n port: '8080'\n appserver:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n name: appserver-igm\n baseInstanceName: app\n region: us-central1\n distributionPolicyZones:\n - us-central1-a\n - us-central1-f\n versions:\n - instanceTemplate: ${appserverGoogleComputeInstanceTemplate.selfLinkUnique}\n allInstancesConfig:\n metadata:\n metadata_key: metadata_value\n labels:\n label_key: label_value\n targetPools:\n - ${appserverGoogleComputeTargetPool.id}\n targetSize: 2\n namedPorts:\n - name: custom\n port: 8888\n autoHealingPolicies:\n healthCheck: ${autohealing.id}\n initialDelaySec: 300\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Multiple Versions\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst appserver = new gcp.compute.RegionInstanceGroupManager(\"appserver\", {\n name: \"appserver-igm\",\n baseInstanceName: \"app\",\n region: \"us-central1\",\n targetSize: 5,\n versions: [\n {\n instanceTemplate: appserverGoogleComputeInstanceTemplate.selfLinkUnique,\n },\n {\n instanceTemplate: appserver_canary.selfLinkUnique,\n targetSize: {\n fixed: 1,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nappserver = gcp.compute.RegionInstanceGroupManager(\"appserver\",\n name=\"appserver-igm\",\n base_instance_name=\"app\",\n region=\"us-central1\",\n target_size=5,\n versions=[\n {\n \"instance_template\": appserver_google_compute_instance_template[\"selfLinkUnique\"],\n },\n {\n \"instance_template\": appserver_canary[\"selfLinkUnique\"],\n \"target_size\": {\n \"fixed\": 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 appserver = new Gcp.Compute.RegionInstanceGroupManager(\"appserver\", new()\n {\n Name = \"appserver-igm\",\n BaseInstanceName = \"app\",\n Region = \"us-central1\",\n TargetSize = 5,\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = appserverGoogleComputeInstanceTemplate.SelfLinkUnique,\n },\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = appserver_canary.SelfLinkUnique,\n TargetSize = new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionTargetSizeArgs\n {\n Fixed = 1,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionInstanceGroupManager(ctx, \"appserver\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"appserver-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"app\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTargetSize: pulumi.Int(5),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserverGoogleComputeInstanceTemplate.SelfLinkUnique),\n\t\t\t\t},\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(appserver_canary.SelfLinkUnique),\n\t\t\t\t\tTargetSize: \u0026compute.RegionInstanceGroupManagerVersionTargetSizeArgs{\n\t\t\t\t\t\tFixed: pulumi.Int(1),\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.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionTargetSizeArgs;\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 appserver = new RegionInstanceGroupManager(\"appserver\", RegionInstanceGroupManagerArgs.builder()\n .name(\"appserver-igm\")\n .baseInstanceName(\"app\")\n .region(\"us-central1\")\n .targetSize(5)\n .versions( \n RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(appserverGoogleComputeInstanceTemplate.selfLinkUnique())\n .build(),\n RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(appserver_canary.selfLinkUnique())\n .targetSize(RegionInstanceGroupManagerVersionTargetSizeArgs.builder()\n .fixed(1)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n appserver:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n name: appserver-igm\n baseInstanceName: app\n region: us-central1\n targetSize: 5\n versions:\n - instanceTemplate: ${appserverGoogleComputeInstanceTemplate.selfLinkUnique}\n - instanceTemplate: ${[\"appserver-canary\"].selfLinkUnique}\n targetSize:\n fixed: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Standby Policy (`Google-Beta` Provider)\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst igm_sr = new gcp.compute.RegionInstanceGroupManager(\"igm-sr\", {\n name: \"tf-sr-igm\",\n baseInstanceName: \"tf-sr-igm-instance\",\n region: \"us-central1\",\n targetSize: 5,\n versions: [{\n instanceTemplate: sr_igm.selfLink,\n name: \"primary\",\n }],\n standbyPolicy: {\n initialDelaySec: 50,\n mode: \"SCALE_OUT_POOL\",\n },\n targetSuspendedSize: 1,\n targetStoppedSize: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nigm_sr = gcp.compute.RegionInstanceGroupManager(\"igm-sr\",\n name=\"tf-sr-igm\",\n base_instance_name=\"tf-sr-igm-instance\",\n region=\"us-central1\",\n target_size=5,\n versions=[{\n \"instance_template\": sr_igm[\"selfLink\"],\n \"name\": \"primary\",\n }],\n standby_policy={\n \"initial_delay_sec\": 50,\n \"mode\": \"SCALE_OUT_POOL\",\n },\n target_suspended_size=1,\n target_stopped_size=1)\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 igm_sr = new Gcp.Compute.RegionInstanceGroupManager(\"igm-sr\", new()\n {\n Name = \"tf-sr-igm\",\n BaseInstanceName = \"tf-sr-igm-instance\",\n Region = \"us-central1\",\n TargetSize = 5,\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n InstanceTemplate = sr_igm.SelfLink,\n Name = \"primary\",\n },\n },\n StandbyPolicy = new Gcp.Compute.Inputs.RegionInstanceGroupManagerStandbyPolicyArgs\n {\n InitialDelaySec = 50,\n Mode = \"SCALE_OUT_POOL\",\n },\n TargetSuspendedSize = 1,\n TargetStoppedSize = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionInstanceGroupManager(ctx, \"igm-sr\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"tf-sr-igm\"),\n\t\t\tBaseInstanceName: pulumi.String(\"tf-sr-igm-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTargetSize: pulumi.Int(5),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: pulumi.Any(sr_igm.SelfLink),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStandbyPolicy: \u0026compute.RegionInstanceGroupManagerStandbyPolicyArgs{\n\t\t\t\tInitialDelaySec: pulumi.Int(50),\n\t\t\t\tMode: pulumi.String(\"SCALE_OUT_POOL\"),\n\t\t\t},\n\t\t\tTargetSuspendedSize: pulumi.Int(1),\n\t\t\tTargetStoppedSize: pulumi.Int(1),\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.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerStandbyPolicyArgs;\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 igm_sr = new RegionInstanceGroupManager(\"igm-sr\", RegionInstanceGroupManagerArgs.builder()\n .name(\"tf-sr-igm\")\n .baseInstanceName(\"tf-sr-igm-instance\")\n .region(\"us-central1\")\n .targetSize(5)\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(sr_igm.selfLink())\n .name(\"primary\")\n .build())\n .standbyPolicy(RegionInstanceGroupManagerStandbyPolicyArgs.builder()\n .initialDelaySec(50)\n .mode(\"SCALE_OUT_POOL\")\n .build())\n .targetSuspendedSize(1)\n .targetStoppedSize(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n igm-sr:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n name: tf-sr-igm\n baseInstanceName: tf-sr-igm-instance\n region: us-central1\n targetSize: 5\n versions:\n - instanceTemplate: ${[\"sr-igm\"].selfLink}\n name: primary\n standbyPolicy:\n initialDelaySec: 50\n mode: SCALE_OUT_POOL\n targetSuspendedSize: 1\n targetStoppedSize: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance group managers can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, instance group managers can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionInstanceGroupManager:RegionInstanceGroupManager default {{name}}\n```\n\n", "properties": { "allInstancesConfig": { "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerAllInstancesConfig:RegionInstanceGroupManagerAllInstancesConfig", @@ -158499,7 +158499,7 @@ } }, "gcp:compute/regionNetworkEndpoint:RegionNetworkEndpoint": { - "description": "A Region network endpoint represents a IP address/FQDN and port combination that is\npart of a specific network endpoint group (NEG).\n\n\u003e **NOTE**: Network endpoints cannot be created outside of a network endpoint group.\n\n\nTo get more information about RegionNetworkEndpoint, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/regionNetworkEndpointGroups)\n* How-to Guides\n * [Internet NEGs Official Documentation](https://cloud.google.com/load-balancing/docs/negs/internet-neg-concepts)\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/negs/)\n\n## Example Usage\n\n### Region Network Endpoint Internet Ip Port\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\nconst group = new gcp.compute.RegionNetworkEndpointGroup(\"group\", {\n name: \"ip-port-neg\",\n network: _default.id,\n region: \"us-central1\",\n networkEndpointType: \"INTERNET_IP_PORT\",\n});\nconst region_internet_ip_port_endpoint = new gcp.compute.RegionNetworkEndpoint(\"region-internet-ip-port-endpoint\", {\n regionNetworkEndpointGroup: group.name,\n region: \"us-central1\",\n ipAddress: \"8.8.8.8\",\n port: 443,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"network\",\n auto_create_subnetworks=False)\ngroup = gcp.compute.RegionNetworkEndpointGroup(\"group\",\n name=\"ip-port-neg\",\n network=default.id,\n region=\"us-central1\",\n network_endpoint_type=\"INTERNET_IP_PORT\")\nregion_internet_ip_port_endpoint = gcp.compute.RegionNetworkEndpoint(\"region-internet-ip-port-endpoint\",\n region_network_endpoint_group=group.name,\n region=\"us-central1\",\n ip_address=\"8.8.8.8\",\n port=443)\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.Network(\"default\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var @group = new Gcp.Compute.RegionNetworkEndpointGroup(\"group\", new()\n {\n Name = \"ip-port-neg\",\n Network = @default.Id,\n Region = \"us-central1\",\n NetworkEndpointType = \"INTERNET_IP_PORT\",\n });\n\n var region_internet_ip_port_endpoint = new Gcp.Compute.RegionNetworkEndpoint(\"region-internet-ip-port-endpoint\", new()\n {\n RegionNetworkEndpointGroup = @group.Name,\n Region = \"us-central1\",\n IpAddress = \"8.8.8.8\",\n Port = 443,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\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\tgroup, err := compute.NewRegionNetworkEndpointGroup(ctx, \"group\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"ip-port-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_IP_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpoint(ctx, \"region-internet-ip-port-endpoint\", \u0026compute.RegionNetworkEndpointArgs{\n\t\t\tRegionNetworkEndpointGroup: group.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: pulumi.String(\"8.8.8.8\"),\n\t\t\tPort: pulumi.Int(443),\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.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpoint;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var group = new RegionNetworkEndpointGroup(\"group\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"ip-port-neg\")\n .network(default_.id())\n .region(\"us-central1\")\n .networkEndpointType(\"INTERNET_IP_PORT\")\n .build());\n\n var region_internet_ip_port_endpoint = new RegionNetworkEndpoint(\"region-internet-ip-port-endpoint\", RegionNetworkEndpointArgs.builder()\n .regionNetworkEndpointGroup(group.name())\n .region(\"us-central1\")\n .ipAddress(\"8.8.8.8\")\n .port(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n region-internet-ip-port-endpoint:\n type: gcp:compute:RegionNetworkEndpoint\n properties:\n regionNetworkEndpointGroup: ${group.name}\n region: us-central1\n ipAddress: 8.8.8.8\n port: 443\n group:\n type: gcp:compute:RegionNetworkEndpointGroup\n properties:\n name: ip-port-neg\n network: ${default.id}\n region: us-central1\n networkEndpointType: INTERNET_IP_PORT\n default:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Internet Fqdn Port\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\nconst group = new gcp.compute.RegionNetworkEndpointGroup(\"group\", {\n name: \"fqdn-port-neg\",\n network: _default.id,\n region: \"us-central1\",\n networkEndpointType: \"INTERNET_FQDN_PORT\",\n});\nconst region_internet_fqdn_port_endpoint = new gcp.compute.RegionNetworkEndpoint(\"region-internet-fqdn-port-endpoint\", {\n regionNetworkEndpointGroup: group.name,\n region: \"us-central1\",\n fqdn: \"backend.example.com\",\n port: 443,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"network\",\n auto_create_subnetworks=False)\ngroup = gcp.compute.RegionNetworkEndpointGroup(\"group\",\n name=\"fqdn-port-neg\",\n network=default.id,\n region=\"us-central1\",\n network_endpoint_type=\"INTERNET_FQDN_PORT\")\nregion_internet_fqdn_port_endpoint = gcp.compute.RegionNetworkEndpoint(\"region-internet-fqdn-port-endpoint\",\n region_network_endpoint_group=group.name,\n region=\"us-central1\",\n fqdn=\"backend.example.com\",\n port=443)\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.Network(\"default\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var @group = new Gcp.Compute.RegionNetworkEndpointGroup(\"group\", new()\n {\n Name = \"fqdn-port-neg\",\n Network = @default.Id,\n Region = \"us-central1\",\n NetworkEndpointType = \"INTERNET_FQDN_PORT\",\n });\n\n var region_internet_fqdn_port_endpoint = new Gcp.Compute.RegionNetworkEndpoint(\"region-internet-fqdn-port-endpoint\", new()\n {\n RegionNetworkEndpointGroup = @group.Name,\n Region = \"us-central1\",\n Fqdn = \"backend.example.com\",\n Port = 443,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\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\tgroup, err := compute.NewRegionNetworkEndpointGroup(ctx, \"group\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"fqdn-port-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_FQDN_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpoint(ctx, \"region-internet-fqdn-port-endpoint\", \u0026compute.RegionNetworkEndpointArgs{\n\t\t\tRegionNetworkEndpointGroup: group.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFqdn: pulumi.String(\"backend.example.com\"),\n\t\t\tPort: pulumi.Int(443),\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.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpoint;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var group = new RegionNetworkEndpointGroup(\"group\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"fqdn-port-neg\")\n .network(default_.id())\n .region(\"us-central1\")\n .networkEndpointType(\"INTERNET_FQDN_PORT\")\n .build());\n\n var region_internet_fqdn_port_endpoint = new RegionNetworkEndpoint(\"region-internet-fqdn-port-endpoint\", RegionNetworkEndpointArgs.builder()\n .regionNetworkEndpointGroup(group.name())\n .region(\"us-central1\")\n .fqdn(\"backend.example.com\")\n .port(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n region-internet-fqdn-port-endpoint:\n type: gcp:compute:RegionNetworkEndpoint\n properties:\n regionNetworkEndpointGroup: ${group.name}\n region: us-central1\n fqdn: backend.example.com\n port: 443\n group:\n type: gcp:compute:RegionNetworkEndpointGroup\n properties:\n name: fqdn-port-neg\n network: ${default.id}\n region: us-central1\n networkEndpointType: INTERNET_FQDN_PORT\n default:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Portmap\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"subnetwork\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst defaultRegionNetworkEndpointGroup = new gcp.compute.RegionNetworkEndpointGroup(\"default\", {\n name: \"portmap-neg\",\n region: \"us-central1\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n networkEndpointType: \"GCE_VM_IP_PORTMAP\",\n});\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst defaultInstance = new gcp.compute.Instance(\"default\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n subnetwork: defaultSubnetwork.id,\n }],\n name: \"instance\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n});\nconst regionNetworkEndpointPortmap = new gcp.compute.RegionNetworkEndpoint(\"region_network_endpoint_portmap\", {\n regionNetworkEndpointGroup: defaultRegionNetworkEndpointGroup.name,\n region: \"us-central1\",\n instance: defaultInstance.selfLink,\n port: 80,\n ipAddress: defaultInstance.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].networkIp),\n clientDestinationPort: 8080,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"subnetwork\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=default.id)\ndefault_region_network_endpoint_group = gcp.compute.RegionNetworkEndpointGroup(\"default\",\n name=\"portmap-neg\",\n region=\"us-central1\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n network_endpoint_type=\"GCE_VM_IP_PORTMAP\")\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault_instance = gcp.compute.Instance(\"default\",\n network_interfaces=[{\n \"accessConfigs\": [{}],\n \"subnetwork\": default_subnetwork.id,\n }],\n name=\"instance\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initializeParams\": {\n \"image\": my_image.self_link,\n },\n })\nregion_network_endpoint_portmap = gcp.compute.RegionNetworkEndpoint(\"region_network_endpoint_portmap\",\n region_network_endpoint_group=default_region_network_endpoint_group.name,\n region=\"us-central1\",\n instance=default_instance.self_link,\n port=80,\n ip_address=default_instance.network_interfaces[0].network_ip,\n client_destination_port=8080)\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.Network(\"default\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"subnetwork\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var defaultRegionNetworkEndpointGroup = new Gcp.Compute.RegionNetworkEndpointGroup(\"default\", new()\n {\n Name = \"portmap-neg\",\n Region = \"us-central1\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n NetworkEndpointType = \"GCE_VM_IP_PORTMAP\",\n });\n\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var defaultInstance = new Gcp.Compute.Instance(\"default\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Name = \"instance\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var regionNetworkEndpointPortmap = new Gcp.Compute.RegionNetworkEndpoint(\"region_network_endpoint_portmap\", new()\n {\n RegionNetworkEndpointGroup = defaultRegionNetworkEndpointGroup.Name,\n Region = \"us-central1\",\n Instance = defaultInstance.SelfLink,\n Port = 80,\n IpAddress = defaultInstance.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].NetworkIp),\n ClientDestinationPort = 8080,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionNetworkEndpointGroup, err := compute.NewRegionNetworkEndpointGroup(ctx, \"default\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"portmap-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tNetworkEndpointType: pulumi.String(\"GCE_VM_IP_PORTMAP\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultInstance, err := compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\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.NewRegionNetworkEndpoint(ctx, \"region_network_endpoint_portmap\", \u0026compute.RegionNetworkEndpointArgs{\n\t\t\tRegionNetworkEndpointGroup: defaultRegionNetworkEndpointGroup.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tInstance: defaultInstance.SelfLink,\n\t\t\tPort: pulumi.Int(80),\n\t\t\tIpAddress: defaultInstance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\treturn \u0026networkInterfaces[0].NetworkIp, nil\n\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\tClientDestinationPort: pulumi.Int(8080),\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.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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.gcp.compute.RegionNetworkEndpoint;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"subnetwork\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var defaultRegionNetworkEndpointGroup = new RegionNetworkEndpointGroup(\"defaultRegionNetworkEndpointGroup\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"portmap-neg\")\n .region(\"us-central1\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .networkEndpointType(\"GCE_VM_IP_PORTMAP\")\n .build());\n\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .subnetwork(defaultSubnetwork.id())\n .build())\n .name(\"instance\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var regionNetworkEndpointPortmap = new RegionNetworkEndpoint(\"regionNetworkEndpointPortmap\", RegionNetworkEndpointArgs.builder()\n .regionNetworkEndpointGroup(defaultRegionNetworkEndpointGroup.name())\n .region(\"us-central1\")\n .instance(defaultInstance.selfLink())\n .port(80)\n .ipAddress(defaultInstance.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].networkIp()))\n .clientDestinationPort(8080)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: subnetwork\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${default.id}\n defaultRegionNetworkEndpointGroup:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: default\n properties:\n name: portmap-neg\n region: us-central1\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n networkEndpointType: GCE_VM_IP_PORTMAP\n regionNetworkEndpointPortmap:\n type: gcp:compute:RegionNetworkEndpoint\n name: region_network_endpoint_portmap\n properties:\n regionNetworkEndpointGroup: ${defaultRegionNetworkEndpointGroup.name}\n region: us-central1\n instance: ${defaultInstance.selfLink}\n port: 80\n ipAddress: ${defaultInstance.networkInterfaces[0].networkIp}\n clientDestinationPort: 8080\n defaultInstance:\n type: gcp:compute:Instance\n name: default\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n subnetwork: ${defaultSubnetwork.id}\n name: instance\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionNetworkEndpoint can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/networkEndpointGroups/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}`\n\n* `{{project}}/{{region}}/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}`\n\n* `{{region}}/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}`\n\n* `{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}`\n\nWhen using the `pulumi import` command, RegionNetworkEndpoint can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpoint:RegionNetworkEndpoint default projects/{{project}}/regions/{{region}}/networkEndpointGroups/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpoint:RegionNetworkEndpoint default {{project}}/{{region}}/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpoint:RegionNetworkEndpoint default {{region}}/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpoint:RegionNetworkEndpoint default {{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}\n```\n\n", + "description": "A Region network endpoint represents a IP address/FQDN and port combination that is\npart of a specific network endpoint group (NEG).\n\n\u003e **NOTE**: Network endpoints cannot be created outside of a network endpoint group.\n\n\nTo get more information about RegionNetworkEndpoint, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/regionNetworkEndpointGroups)\n* How-to Guides\n * [Internet NEGs Official Documentation](https://cloud.google.com/load-balancing/docs/negs/internet-neg-concepts)\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/negs/)\n\n## Example Usage\n\n### Region Network Endpoint Internet Ip Port\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\nconst group = new gcp.compute.RegionNetworkEndpointGroup(\"group\", {\n name: \"ip-port-neg\",\n network: _default.id,\n region: \"us-central1\",\n networkEndpointType: \"INTERNET_IP_PORT\",\n});\nconst region_internet_ip_port_endpoint = new gcp.compute.RegionNetworkEndpoint(\"region-internet-ip-port-endpoint\", {\n regionNetworkEndpointGroup: group.name,\n region: \"us-central1\",\n ipAddress: \"8.8.8.8\",\n port: 443,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"network\",\n auto_create_subnetworks=False)\ngroup = gcp.compute.RegionNetworkEndpointGroup(\"group\",\n name=\"ip-port-neg\",\n network=default.id,\n region=\"us-central1\",\n network_endpoint_type=\"INTERNET_IP_PORT\")\nregion_internet_ip_port_endpoint = gcp.compute.RegionNetworkEndpoint(\"region-internet-ip-port-endpoint\",\n region_network_endpoint_group=group.name,\n region=\"us-central1\",\n ip_address=\"8.8.8.8\",\n port=443)\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.Network(\"default\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var @group = new Gcp.Compute.RegionNetworkEndpointGroup(\"group\", new()\n {\n Name = \"ip-port-neg\",\n Network = @default.Id,\n Region = \"us-central1\",\n NetworkEndpointType = \"INTERNET_IP_PORT\",\n });\n\n var region_internet_ip_port_endpoint = new Gcp.Compute.RegionNetworkEndpoint(\"region-internet-ip-port-endpoint\", new()\n {\n RegionNetworkEndpointGroup = @group.Name,\n Region = \"us-central1\",\n IpAddress = \"8.8.8.8\",\n Port = 443,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\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\tgroup, err := compute.NewRegionNetworkEndpointGroup(ctx, \"group\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"ip-port-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_IP_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpoint(ctx, \"region-internet-ip-port-endpoint\", \u0026compute.RegionNetworkEndpointArgs{\n\t\t\tRegionNetworkEndpointGroup: group.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: pulumi.String(\"8.8.8.8\"),\n\t\t\tPort: pulumi.Int(443),\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.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpoint;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var group = new RegionNetworkEndpointGroup(\"group\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"ip-port-neg\")\n .network(default_.id())\n .region(\"us-central1\")\n .networkEndpointType(\"INTERNET_IP_PORT\")\n .build());\n\n var region_internet_ip_port_endpoint = new RegionNetworkEndpoint(\"region-internet-ip-port-endpoint\", RegionNetworkEndpointArgs.builder()\n .regionNetworkEndpointGroup(group.name())\n .region(\"us-central1\")\n .ipAddress(\"8.8.8.8\")\n .port(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n region-internet-ip-port-endpoint:\n type: gcp:compute:RegionNetworkEndpoint\n properties:\n regionNetworkEndpointGroup: ${group.name}\n region: us-central1\n ipAddress: 8.8.8.8\n port: 443\n group:\n type: gcp:compute:RegionNetworkEndpointGroup\n properties:\n name: ip-port-neg\n network: ${default.id}\n region: us-central1\n networkEndpointType: INTERNET_IP_PORT\n default:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Internet Fqdn Port\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\nconst group = new gcp.compute.RegionNetworkEndpointGroup(\"group\", {\n name: \"fqdn-port-neg\",\n network: _default.id,\n region: \"us-central1\",\n networkEndpointType: \"INTERNET_FQDN_PORT\",\n});\nconst region_internet_fqdn_port_endpoint = new gcp.compute.RegionNetworkEndpoint(\"region-internet-fqdn-port-endpoint\", {\n regionNetworkEndpointGroup: group.name,\n region: \"us-central1\",\n fqdn: \"backend.example.com\",\n port: 443,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"network\",\n auto_create_subnetworks=False)\ngroup = gcp.compute.RegionNetworkEndpointGroup(\"group\",\n name=\"fqdn-port-neg\",\n network=default.id,\n region=\"us-central1\",\n network_endpoint_type=\"INTERNET_FQDN_PORT\")\nregion_internet_fqdn_port_endpoint = gcp.compute.RegionNetworkEndpoint(\"region-internet-fqdn-port-endpoint\",\n region_network_endpoint_group=group.name,\n region=\"us-central1\",\n fqdn=\"backend.example.com\",\n port=443)\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.Network(\"default\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var @group = new Gcp.Compute.RegionNetworkEndpointGroup(\"group\", new()\n {\n Name = \"fqdn-port-neg\",\n Network = @default.Id,\n Region = \"us-central1\",\n NetworkEndpointType = \"INTERNET_FQDN_PORT\",\n });\n\n var region_internet_fqdn_port_endpoint = new Gcp.Compute.RegionNetworkEndpoint(\"region-internet-fqdn-port-endpoint\", new()\n {\n RegionNetworkEndpointGroup = @group.Name,\n Region = \"us-central1\",\n Fqdn = \"backend.example.com\",\n Port = 443,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\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\tgroup, err := compute.NewRegionNetworkEndpointGroup(ctx, \"group\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"fqdn-port-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_FQDN_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpoint(ctx, \"region-internet-fqdn-port-endpoint\", \u0026compute.RegionNetworkEndpointArgs{\n\t\t\tRegionNetworkEndpointGroup: group.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFqdn: pulumi.String(\"backend.example.com\"),\n\t\t\tPort: pulumi.Int(443),\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.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpoint;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var group = new RegionNetworkEndpointGroup(\"group\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"fqdn-port-neg\")\n .network(default_.id())\n .region(\"us-central1\")\n .networkEndpointType(\"INTERNET_FQDN_PORT\")\n .build());\n\n var region_internet_fqdn_port_endpoint = new RegionNetworkEndpoint(\"region-internet-fqdn-port-endpoint\", RegionNetworkEndpointArgs.builder()\n .regionNetworkEndpointGroup(group.name())\n .region(\"us-central1\")\n .fqdn(\"backend.example.com\")\n .port(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n region-internet-fqdn-port-endpoint:\n type: gcp:compute:RegionNetworkEndpoint\n properties:\n regionNetworkEndpointGroup: ${group.name}\n region: us-central1\n fqdn: backend.example.com\n port: 443\n group:\n type: gcp:compute:RegionNetworkEndpointGroup\n properties:\n name: fqdn-port-neg\n network: ${default.id}\n region: us-central1\n networkEndpointType: INTERNET_FQDN_PORT\n default:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Portmap\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"subnetwork\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst defaultRegionNetworkEndpointGroup = new gcp.compute.RegionNetworkEndpointGroup(\"default\", {\n name: \"portmap-neg\",\n region: \"us-central1\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n networkEndpointType: \"GCE_VM_IP_PORTMAP\",\n});\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst defaultInstance = new gcp.compute.Instance(\"default\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n subnetwork: defaultSubnetwork.id,\n }],\n name: \"instance\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n});\nconst regionNetworkEndpointPortmap = new gcp.compute.RegionNetworkEndpoint(\"region_network_endpoint_portmap\", {\n regionNetworkEndpointGroup: defaultRegionNetworkEndpointGroup.name,\n region: \"us-central1\",\n instance: defaultInstance.selfLink,\n port: 80,\n ipAddress: defaultInstance.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].networkIp),\n clientDestinationPort: 8080,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"subnetwork\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=default.id)\ndefault_region_network_endpoint_group = gcp.compute.RegionNetworkEndpointGroup(\"default\",\n name=\"portmap-neg\",\n region=\"us-central1\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n network_endpoint_type=\"GCE_VM_IP_PORTMAP\")\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault_instance = gcp.compute.Instance(\"default\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"subnetwork\": default_subnetwork.id,\n }],\n name=\"instance\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": my_image.self_link,\n },\n })\nregion_network_endpoint_portmap = gcp.compute.RegionNetworkEndpoint(\"region_network_endpoint_portmap\",\n region_network_endpoint_group=default_region_network_endpoint_group.name,\n region=\"us-central1\",\n instance=default_instance.self_link,\n port=80,\n ip_address=default_instance.network_interfaces[0].network_ip,\n client_destination_port=8080)\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.Network(\"default\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"subnetwork\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var defaultRegionNetworkEndpointGroup = new Gcp.Compute.RegionNetworkEndpointGroup(\"default\", new()\n {\n Name = \"portmap-neg\",\n Region = \"us-central1\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n NetworkEndpointType = \"GCE_VM_IP_PORTMAP\",\n });\n\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var defaultInstance = new Gcp.Compute.Instance(\"default\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Name = \"instance\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var regionNetworkEndpointPortmap = new Gcp.Compute.RegionNetworkEndpoint(\"region_network_endpoint_portmap\", new()\n {\n RegionNetworkEndpointGroup = defaultRegionNetworkEndpointGroup.Name,\n Region = \"us-central1\",\n Instance = defaultInstance.SelfLink,\n Port = 80,\n IpAddress = defaultInstance.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].NetworkIp),\n ClientDestinationPort = 8080,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionNetworkEndpointGroup, err := compute.NewRegionNetworkEndpointGroup(ctx, \"default\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"portmap-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tNetworkEndpointType: pulumi.String(\"GCE_VM_IP_PORTMAP\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultInstance, err := compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\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.NewRegionNetworkEndpoint(ctx, \"region_network_endpoint_portmap\", \u0026compute.RegionNetworkEndpointArgs{\n\t\t\tRegionNetworkEndpointGroup: defaultRegionNetworkEndpointGroup.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tInstance: defaultInstance.SelfLink,\n\t\t\tPort: pulumi.Int(80),\n\t\t\tIpAddress: pulumi.String(defaultInstance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\treturn \u0026networkInterfaces[0].NetworkIp, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tClientDestinationPort: pulumi.Int(8080),\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.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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.gcp.compute.RegionNetworkEndpoint;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"subnetwork\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var defaultRegionNetworkEndpointGroup = new RegionNetworkEndpointGroup(\"defaultRegionNetworkEndpointGroup\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"portmap-neg\")\n .region(\"us-central1\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .networkEndpointType(\"GCE_VM_IP_PORTMAP\")\n .build());\n\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .subnetwork(defaultSubnetwork.id())\n .build())\n .name(\"instance\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var regionNetworkEndpointPortmap = new RegionNetworkEndpoint(\"regionNetworkEndpointPortmap\", RegionNetworkEndpointArgs.builder()\n .regionNetworkEndpointGroup(defaultRegionNetworkEndpointGroup.name())\n .region(\"us-central1\")\n .instance(defaultInstance.selfLink())\n .port(80)\n .ipAddress(defaultInstance.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].networkIp()))\n .clientDestinationPort(8080)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: subnetwork\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${default.id}\n defaultRegionNetworkEndpointGroup:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: default\n properties:\n name: portmap-neg\n region: us-central1\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n networkEndpointType: GCE_VM_IP_PORTMAP\n regionNetworkEndpointPortmap:\n type: gcp:compute:RegionNetworkEndpoint\n name: region_network_endpoint_portmap\n properties:\n regionNetworkEndpointGroup: ${defaultRegionNetworkEndpointGroup.name}\n region: us-central1\n instance: ${defaultInstance.selfLink}\n port: 80\n ipAddress: ${defaultInstance.networkInterfaces[0].networkIp}\n clientDestinationPort: 8080\n defaultInstance:\n type: gcp:compute:Instance\n name: default\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n subnetwork: ${defaultSubnetwork.id}\n name: instance\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionNetworkEndpoint can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/networkEndpointGroups/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}`\n\n* `{{project}}/{{region}}/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}`\n\n* `{{region}}/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}`\n\n* `{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}`\n\nWhen using the `pulumi import` command, RegionNetworkEndpoint can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpoint:RegionNetworkEndpoint default projects/{{project}}/regions/{{region}}/networkEndpointGroups/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpoint:RegionNetworkEndpoint default {{project}}/{{region}}/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpoint:RegionNetworkEndpoint default {{region}}/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpoint:RegionNetworkEndpoint default {{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}\n```\n\n", "properties": { "clientDestinationPort": { "type": "integer", @@ -158634,7 +158634,7 @@ } }, "gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup": { - "description": "A regional NEG that can support Serverless Products, proxying traffic to\nexternal backends and providing traffic to the PSC port mapping endpoints.\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 * [Internet NEGs Official Documentation](https://cloud.google.com/load-balancing/docs/negs/internet-neg-concepts)\n * [Serverless NEGs Official Documentation](https://cloud.google.com/load-balancing/docs/negs/serverless-neg-concepts)\n\n## Example Usage\n\n### Region Network Endpoint Group Functions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"cloudfunctions-function-example-bucket\",\n location: \"US\",\n});\nconst archive = new gcp.storage.BucketObject(\"archive\", {\n name: \"index.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"path/to/index.zip\"),\n});\nconst functionNegFunction = new gcp.cloudfunctions.Function(\"function_neg\", {\n name: \"function-neg\",\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 functionNeg = new gcp.compute.RegionNetworkEndpointGroup(\"function_neg\", {\n name: \"function-neg\",\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\",\n name=\"cloudfunctions-function-example-bucket\",\n location=\"US\")\narchive = gcp.storage.BucketObject(\"archive\",\n name=\"index.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"path/to/index.zip\"))\nfunction_neg_function = gcp.cloudfunctions.Function(\"function_neg\",\n name=\"function-neg\",\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 = gcp.compute.RegionNetworkEndpointGroup(\"function_neg\",\n name=\"function-neg\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n cloud_function={\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 Name = \"cloudfunctions-function-example-bucket\",\n Location = \"US\",\n });\n\n var archive = new Gcp.Storage.BucketObject(\"archive\", new()\n {\n Name = \"index.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"path/to/index.zip\"),\n });\n\n var functionNegFunction = new Gcp.CloudFunctions.Function(\"function_neg\", new()\n {\n Name = \"function-neg\",\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 functionNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"function_neg\", new()\n {\n Name = \"function-neg\",\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/v7/go/gcp/cloudfunctions\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"cloudfunctions-function-example-bucket\"),\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\tName: pulumi.String(\"index.zip\"),\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, \"function_neg\", \u0026cloudfunctions.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-neg\"),\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// Cloud Functions Example\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"function_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"function-neg\"),\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 .name(\"cloudfunctions-function-example-bucket\")\n .location(\"US\")\n .build());\n\n var archive = new BucketObject(\"archive\", BucketObjectArgs.builder()\n .name(\"index.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"path/to/index.zip\"))\n .build());\n\n var functionNegFunction = new Function(\"functionNegFunction\", FunctionArgs.builder()\n .name(\"function-neg\")\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 // Cloud Functions Example\n var functionNeg = new RegionNetworkEndpointGroup(\"functionNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"function-neg\")\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 functionNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: function_neg\n properties:\n name: function-neg\n networkEndpointType: SERVERLESS\n region: us-central1\n cloudFunction:\n function: ${functionNegFunction.name}\n functionNegFunction:\n type: gcp:cloudfunctions:Function\n name: function_neg\n properties:\n name: function-neg\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 name: cloudfunctions-function-example-bucket\n location: US\n archive:\n type: gcp:storage:BucketObject\n properties:\n name: index.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: path/to/index.zip\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Cloudrun\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cloudrunNegService = new gcp.cloudrun.Service(\"cloudrun_neg\", {\n name: \"cloudrun-neg\",\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 cloudrunNeg = new gcp.compute.RegionNetworkEndpointGroup(\"cloudrun_neg\", {\n name: \"cloudrun-neg\",\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(\"cloudrun_neg\",\n name=\"cloudrun-neg\",\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# Cloud Run Example\ncloudrun_neg = gcp.compute.RegionNetworkEndpointGroup(\"cloudrun_neg\",\n name=\"cloudrun-neg\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n cloud_run={\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(\"cloudrun_neg\", new()\n {\n Name = \"cloudrun-neg\",\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 cloudrunNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"cloudrun_neg\", new()\n {\n Name = \"cloudrun-neg\",\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/v7/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"cloudrun_neg\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-neg\"),\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// Cloud Run Example\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"cloudrun_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"cloudrun-neg\"),\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 .name(\"cloudrun-neg\")\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 // Cloud Run Example\n var cloudrunNeg = new RegionNetworkEndpointGroup(\"cloudrunNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"cloudrun-neg\")\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 cloudrunNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: cloudrun_neg\n properties:\n name: cloudrun-neg\n networkEndpointType: SERVERLESS\n region: us-central1\n cloudRun:\n service: ${cloudrunNegService.name}\n cloudrunNegService:\n type: gcp:cloudrun:Service\n name: cloudrun_neg\n properties:\n name: cloudrun-neg\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\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Appengine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst appengineNegBucket = new gcp.storage.Bucket(\"appengine_neg\", {\n name: \"appengine-neg\",\n location: \"US\",\n});\nconst appengineNegBucketObject = new gcp.storage.BucketObject(\"appengine_neg\", {\n name: \"hello-world.zip\",\n bucket: appengineNegBucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst appengineNegFlexibleAppVersion = new gcp.appengine.FlexibleAppVersion(\"appengine_neg\", {\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 appengineNeg = new gcp.compute.RegionNetworkEndpointGroup(\"appengine_neg\", {\n name: \"appengine-neg\",\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(\"appengine_neg\",\n name=\"appengine-neg\",\n location=\"US\")\nappengine_neg_bucket_object = gcp.storage.BucketObject(\"appengine_neg\",\n name=\"hello-world.zip\",\n bucket=appengine_neg_bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nappengine_neg_flexible_app_version = gcp.appengine.FlexibleAppVersion(\"appengine_neg\",\n version_id=\"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.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={\n \"path\": \"/\",\n },\n readiness_check={\n \"path\": \"/\",\n },\n env_variables={\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 automatic_scaling={\n \"coolDownPeriod\": \"120s\",\n \"cpuUtilization\": {\n \"targetUtilization\": 0.5,\n },\n },\n delete_service_on_destroy=True)\n# App Engine Example\nappengine_neg = gcp.compute.RegionNetworkEndpointGroup(\"appengine_neg\",\n name=\"appengine-neg\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n app_engine={\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(\"appengine_neg\", new()\n {\n Name = \"appengine-neg\",\n Location = \"US\",\n });\n\n var appengineNegBucketObject = new Gcp.Storage.BucketObject(\"appengine_neg\", new()\n {\n Name = \"hello-world.zip\",\n Bucket = appengineNegBucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var appengineNegFlexibleAppVersion = new Gcp.AppEngine.FlexibleAppVersion(\"appengine_neg\", 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 appengineNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"appengine_neg\", new()\n {\n Name = \"appengine-neg\",\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/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"appengine_neg\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"appengine-neg\"),\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, \"appengine_neg\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"hello-world.zip\"),\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, \"appengine_neg\", \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// App Engine Example\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"appengine_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"appengine-neg\"),\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 .name(\"appengine-neg\")\n .location(\"US\")\n .build());\n\n var appengineNegBucketObject = new BucketObject(\"appengineNegBucketObject\", BucketObjectArgs.builder()\n .name(\"hello-world.zip\")\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 // App Engine Example\n var appengineNeg = new RegionNetworkEndpointGroup(\"appengineNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"appengine-neg\")\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 appengineNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: appengine_neg\n properties:\n name: appengine-neg\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 name: appengine_neg\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 name: appengine_neg\n properties:\n name: appengine-neg\n location: US\n appengineNegBucketObject:\n type: gcp:storage:BucketObject\n name: appengine_neg\n properties:\n name: hello-world.zip\n bucket: ${appengineNegBucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Appengine Empty\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// App Engine Example\nconst appengineNeg = new gcp.compute.RegionNetworkEndpointGroup(\"appengine_neg\", {\n name: \"appengine-neg\",\n networkEndpointType: \"SERVERLESS\",\n region: \"us-central1\",\n appEngine: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# App Engine Example\nappengine_neg = gcp.compute.RegionNetworkEndpointGroup(\"appengine_neg\",\n name=\"appengine-neg\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n app_engine={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // App Engine Example\n var appengineNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"appengine_neg\", new()\n {\n Name = \"appengine-neg\",\n NetworkEndpointType = \"SERVERLESS\",\n Region = \"us-central1\",\n AppEngine = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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// App Engine Example\n\t\t_, err := compute.NewRegionNetworkEndpointGroup(ctx, \"appengine_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"appengine-neg\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"SERVERLESS\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tAppEngine: nil,\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 com.pulumi.gcp.compute.inputs.RegionNetworkEndpointGroupAppEngineArgs;\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 // App Engine Example\n var appengineNeg = new RegionNetworkEndpointGroup(\"appengineNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"appengine-neg\")\n .networkEndpointType(\"SERVERLESS\")\n .region(\"us-central1\")\n .appEngine()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # App Engine Example\n appengineNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: appengine_neg\n properties:\n name: appengine-neg\n networkEndpointType: SERVERLESS\n region: us-central1\n appEngine: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pscNeg = new gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\", {\n name: \"psc-neg\",\n region: \"asia-northeast3\",\n networkEndpointType: \"PRIVATE_SERVICE_CONNECT\",\n pscTargetService: \"asia-northeast3-cloudkms.googleapis.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc_neg = gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\",\n name=\"psc-neg\",\n region=\"asia-northeast3\",\n network_endpoint_type=\"PRIVATE_SERVICE_CONNECT\",\n psc_target_service=\"asia-northeast3-cloudkms.googleapis.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 pscNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"psc_neg\", new()\n {\n Name = \"psc-neg\",\n Region = \"asia-northeast3\",\n NetworkEndpointType = \"PRIVATE_SERVICE_CONNECT\",\n PscTargetService = \"asia-northeast3-cloudkms.googleapis.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"psc_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"psc-neg\"),\n\t\t\tRegion: pulumi.String(\"asia-northeast3\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tPscTargetService: pulumi.String(\"asia-northeast3-cloudkms.googleapis.com\"),\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 .name(\"psc-neg\")\n .region(\"asia-northeast3\")\n .networkEndpointType(\"PRIVATE_SERVICE_CONNECT\")\n .pscTargetService(\"asia-northeast3-cloudkms.googleapis.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: psc_neg\n properties:\n name: psc-neg\n region: asia-northeast3\n networkEndpointType: PRIVATE_SERVICE_CONNECT\n pscTargetService: asia-northeast3-cloudkms.googleapis.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Psc Service Attachment\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"psc-network\"});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"psc-subnetwork\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"europe-west4\",\n network: _default.id,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc_subnetwork\", {\n name: \"psc-subnetwork-nat\",\n ipCidrRange: \"10.1.0.0/16\",\n region: \"europe-west4\",\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n network: _default.id,\n});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"psc-healthcheck\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n name: \"psc-backend\",\n region: \"europe-west4\",\n healthChecks: defaultHealthCheck.id,\n});\nconst defaultForwardingRule = new gcp.compute.ForwardingRule(\"default\", {\n name: \"psc-forwarding-rule\",\n region: \"europe-west4\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: defaultRegionBackendService.id,\n allPorts: true,\n network: _default.name,\n subnetwork: defaultSubnetwork.name,\n});\nconst defaultServiceAttachment = new gcp.compute.ServiceAttachment(\"default\", {\n name: \"psc-service-attachment\",\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});\nconst pscNegServiceAttachment = new gcp.compute.RegionNetworkEndpointGroup(\"psc_neg_service_attachment\", {\n name: \"psc-neg\",\n region: \"europe-west4\",\n networkEndpointType: \"PRIVATE_SERVICE_CONNECT\",\n pscTargetService: defaultServiceAttachment.selfLink,\n network: _default.selfLink,\n subnetwork: defaultSubnetwork.selfLink,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"psc-network\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"psc-subnetwork\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"europe-west4\",\n network=default.id)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc_subnetwork\",\n name=\"psc-subnetwork-nat\",\n ip_cidr_range=\"10.1.0.0/16\",\n region=\"europe-west4\",\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n network=default.id)\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"psc-healthcheck\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n name=\"psc-backend\",\n region=\"europe-west4\",\n health_checks=default_health_check.id)\ndefault_forwarding_rule = gcp.compute.ForwardingRule(\"default\",\n name=\"psc-forwarding-rule\",\n region=\"europe-west4\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=default_region_backend_service.id,\n all_ports=True,\n network=default.name,\n subnetwork=default_subnetwork.name)\ndefault_service_attachment = gcp.compute.ServiceAttachment(\"default\",\n name=\"psc-service-attachment\",\n region=\"europe-west4\",\n description=\"A service attachment configured with Terraform\",\n enable_proxy_protocol=False,\n connection_preference=\"ACCEPT_AUTOMATIC\",\n nat_subnets=[psc_subnetwork.self_link],\n target_service=default_forwarding_rule.self_link)\npsc_neg_service_attachment = gcp.compute.RegionNetworkEndpointGroup(\"psc_neg_service_attachment\",\n name=\"psc-neg\",\n region=\"europe-west4\",\n network_endpoint_type=\"PRIVATE_SERVICE_CONNECT\",\n psc_target_service=default_service_attachment.self_link,\n network=default.self_link,\n subnetwork=default_subnetwork.self_link)\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.Network(\"default\", new()\n {\n Name = \"psc-network\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"psc-subnetwork\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"europe-west4\",\n Network = @default.Id,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc_subnetwork\", new()\n {\n Name = \"psc-subnetwork-nat\",\n IpCidrRange = \"10.1.0.0/16\",\n Region = \"europe-west4\",\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n Network = @default.Id,\n });\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"psc-healthcheck\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"psc-backend\",\n Region = \"europe-west4\",\n HealthChecks = defaultHealthCheck.Id,\n });\n\n var defaultForwardingRule = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"psc-forwarding-rule\",\n Region = \"europe-west4\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = defaultRegionBackendService.Id,\n AllPorts = true,\n Network = @default.Name,\n Subnetwork = defaultSubnetwork.Name,\n });\n\n var defaultServiceAttachment = new Gcp.Compute.ServiceAttachment(\"default\", new()\n {\n Name = \"psc-service-attachment\",\n Region = \"europe-west4\",\n Description = \"A service attachment configured with Terraform\",\n EnableProxyProtocol = false,\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n NatSubnets = new[]\n {\n pscSubnetwork.SelfLink,\n },\n TargetService = defaultForwardingRule.SelfLink,\n });\n\n var pscNegServiceAttachment = new Gcp.Compute.RegionNetworkEndpointGroup(\"psc_neg_service_attachment\", new()\n {\n Name = \"psc-neg\",\n Region = \"europe-west4\",\n NetworkEndpointType = \"PRIVATE_SERVICE_CONNECT\",\n PscTargetService = defaultServiceAttachment.SelfLink,\n Network = @default.SelfLink,\n Subnetwork = defaultSubnetwork.SelfLink,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"psc-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-subnetwork-nat\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"psc-healthcheck\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"psc-backend\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultForwardingRule, err := compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"psc-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: defaultRegionBackendService.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: _default.Name,\n\t\t\tSubnetwork: defaultSubnetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultServiceAttachment, err := compute.NewServiceAttachment(ctx, \"default\", \u0026compute.ServiceAttachmentArgs{\n\t\t\tName: pulumi.String(\"psc-service-attachment\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tDescription: pulumi.String(\"A service attachment configured with Terraform\"),\n\t\t\tEnableProxyProtocol: pulumi.Bool(false),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tNatSubnets: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t\tTargetService: defaultForwardingRule.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"psc_neg_service_attachment\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"psc-neg\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tPscTargetService: defaultServiceAttachment.SelfLink,\n\t\t\tNetwork: _default.SelfLink,\n\t\t\tSubnetwork: defaultSubnetwork.SelfLink,\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.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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"psc-network\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"psc-subnetwork\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"europe-west4\")\n .network(default_.id())\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"psc-subnetwork-nat\")\n .ipCidrRange(\"10.1.0.0/16\")\n .region(\"europe-west4\")\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .network(default_.id())\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"psc-healthcheck\")\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 .name(\"psc-backend\")\n .region(\"europe-west4\")\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder()\n .name(\"psc-forwarding-rule\")\n .region(\"europe-west4\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(defaultRegionBackendService.id())\n .allPorts(true)\n .network(default_.name())\n .subnetwork(defaultSubnetwork.name())\n .build());\n\n var defaultServiceAttachment = new ServiceAttachment(\"defaultServiceAttachment\", ServiceAttachmentArgs.builder()\n .name(\"psc-service-attachment\")\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 .name(\"psc-neg\")\n .region(\"europe-west4\")\n .networkEndpointType(\"PRIVATE_SERVICE_CONNECT\")\n .pscTargetService(defaultServiceAttachment.selfLink())\n .network(default_.selfLink())\n .subnetwork(defaultSubnetwork.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: psc-network\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: psc-subnetwork\n ipCidrRange: 10.0.0.0/16\n region: europe-west4\n network: ${default.id}\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc_subnetwork\n properties:\n name: psc-subnetwork-nat\n ipCidrRange: 10.1.0.0/16\n region: europe-west4\n purpose: PRIVATE_SERVICE_CONNECT\n network: ${default.id}\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: psc-healthcheck\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n name: psc-backend\n region: europe-west4\n healthChecks: ${defaultHealthCheck.id}\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n name: default\n properties:\n name: psc-forwarding-rule\n region: europe-west4\n loadBalancingScheme: INTERNAL\n backendService: ${defaultRegionBackendService.id}\n allPorts: true\n network: ${default.name}\n subnetwork: ${defaultSubnetwork.name}\n defaultServiceAttachment:\n type: gcp:compute:ServiceAttachment\n name: default\n properties:\n name: psc-service-attachment\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 name: psc_neg_service_attachment\n properties:\n name: psc-neg\n region: europe-west4\n networkEndpointType: PRIVATE_SERVICE_CONNECT\n pscTargetService: ${defaultServiceAttachment.selfLink}\n network: ${default.selfLink}\n subnetwork: ${defaultSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Internet Ip Port\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"network\"});\nconst regionNetworkEndpointGroupInternetIpPort = new gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_ip_port\", {\n name: \"ip-port-neg\",\n region: \"us-central1\",\n network: _default.id,\n networkEndpointType: \"INTERNET_IP_PORT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"network\")\nregion_network_endpoint_group_internet_ip_port = gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_ip_port\",\n name=\"ip-port-neg\",\n region=\"us-central1\",\n network=default.id,\n network_endpoint_type=\"INTERNET_IP_PORT\")\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.Network(\"default\", new()\n {\n Name = \"network\",\n });\n\n var regionNetworkEndpointGroupInternetIpPort = new Gcp.Compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_ip_port\", new()\n {\n Name = \"ip-port-neg\",\n Region = \"us-central1\",\n Network = @default.Id,\n NetworkEndpointType = \"INTERNET_IP_PORT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"region_network_endpoint_group_internet_ip_port\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"ip-port-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_IP_PORT\"),\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.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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var regionNetworkEndpointGroupInternetIpPort = new RegionNetworkEndpointGroup(\"regionNetworkEndpointGroupInternetIpPort\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"ip-port-neg\")\n .region(\"us-central1\")\n .network(default_.id())\n .networkEndpointType(\"INTERNET_IP_PORT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionNetworkEndpointGroupInternetIpPort:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: region_network_endpoint_group_internet_ip_port\n properties:\n name: ip-port-neg\n region: us-central1\n network: ${default.id}\n networkEndpointType: INTERNET_IP_PORT\n default:\n type: gcp:compute:Network\n properties:\n name: network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Internet Fqdn Port\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"network\"});\nconst regionNetworkEndpointGroupInternetFqdnPort = new gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_fqdn_port\", {\n name: \"ip-port-neg\",\n region: \"us-central1\",\n network: _default.id,\n networkEndpointType: \"INTERNET_FQDN_PORT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"network\")\nregion_network_endpoint_group_internet_fqdn_port = gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_fqdn_port\",\n name=\"ip-port-neg\",\n region=\"us-central1\",\n network=default.id,\n network_endpoint_type=\"INTERNET_FQDN_PORT\")\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.Network(\"default\", new()\n {\n Name = \"network\",\n });\n\n var regionNetworkEndpointGroupInternetFqdnPort = new Gcp.Compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_fqdn_port\", new()\n {\n Name = \"ip-port-neg\",\n Region = \"us-central1\",\n Network = @default.Id,\n NetworkEndpointType = \"INTERNET_FQDN_PORT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"region_network_endpoint_group_internet_fqdn_port\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"ip-port-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_FQDN_PORT\"),\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.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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var regionNetworkEndpointGroupInternetFqdnPort = new RegionNetworkEndpointGroup(\"regionNetworkEndpointGroupInternetFqdnPort\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"ip-port-neg\")\n .region(\"us-central1\")\n .network(default_.id())\n .networkEndpointType(\"INTERNET_FQDN_PORT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionNetworkEndpointGroupInternetFqdnPort:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: region_network_endpoint_group_internet_fqdn_port\n properties:\n name: ip-port-neg\n region: us-central1\n network: ${default.id}\n networkEndpointType: INTERNET_FQDN_PORT\n default:\n type: gcp:compute:Network\n properties:\n name: network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Portmap\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"network\"});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"subnetwork\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst regionNetworkEndpointGroupPortmap = new gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_portmap\", {\n name: \"portmap-neg\",\n region: \"us-central1\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n networkEndpointType: \"GCE_VM_IP_PORTMAP\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"network\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"subnetwork\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=default.id)\nregion_network_endpoint_group_portmap = gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_portmap\",\n name=\"portmap-neg\",\n region=\"us-central1\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n network_endpoint_type=\"GCE_VM_IP_PORTMAP\")\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.Network(\"default\", new()\n {\n Name = \"network\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"subnetwork\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var regionNetworkEndpointGroupPortmap = new Gcp.Compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_portmap\", new()\n {\n Name = \"portmap-neg\",\n Region = \"us-central1\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n NetworkEndpointType = \"GCE_VM_IP_PORTMAP\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"region_network_endpoint_group_portmap\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"portmap-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tNetworkEndpointType: pulumi.String(\"GCE_VM_IP_PORTMAP\"),\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.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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"subnetwork\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var regionNetworkEndpointGroupPortmap = new RegionNetworkEndpointGroup(\"regionNetworkEndpointGroupPortmap\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"portmap-neg\")\n .region(\"us-central1\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .networkEndpointType(\"GCE_VM_IP_PORTMAP\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionNetworkEndpointGroupPortmap:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: region_network_endpoint_group_portmap\n properties:\n name: portmap-neg\n region: us-central1\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n networkEndpointType: GCE_VM_IP_PORTMAP\n default:\n type: gcp:compute:Network\n properties:\n name: network\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: subnetwork\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${default.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionNetworkEndpointGroup can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/networkEndpointGroups/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionNetworkEndpointGroup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default projects/{{project}}/regions/{{region}}/networkEndpointGroups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default {{region}}/{{name}}\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, proxying traffic to\nexternal backends and providing traffic to the PSC port mapping endpoints.\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 * [Internet NEGs Official Documentation](https://cloud.google.com/load-balancing/docs/negs/internet-neg-concepts)\n * [Serverless NEGs Official Documentation](https://cloud.google.com/load-balancing/docs/negs/serverless-neg-concepts)\n\n## Example Usage\n\n### Region Network Endpoint Group Functions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"cloudfunctions-function-example-bucket\",\n location: \"US\",\n});\nconst archive = new gcp.storage.BucketObject(\"archive\", {\n name: \"index.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"path/to/index.zip\"),\n});\nconst functionNegFunction = new gcp.cloudfunctions.Function(\"function_neg\", {\n name: \"function-neg\",\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 functionNeg = new gcp.compute.RegionNetworkEndpointGroup(\"function_neg\", {\n name: \"function-neg\",\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\",\n name=\"cloudfunctions-function-example-bucket\",\n location=\"US\")\narchive = gcp.storage.BucketObject(\"archive\",\n name=\"index.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"path/to/index.zip\"))\nfunction_neg_function = gcp.cloudfunctions.Function(\"function_neg\",\n name=\"function-neg\",\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 = gcp.compute.RegionNetworkEndpointGroup(\"function_neg\",\n name=\"function-neg\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n cloud_function={\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 Name = \"cloudfunctions-function-example-bucket\",\n Location = \"US\",\n });\n\n var archive = new Gcp.Storage.BucketObject(\"archive\", new()\n {\n Name = \"index.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"path/to/index.zip\"),\n });\n\n var functionNegFunction = new Gcp.CloudFunctions.Function(\"function_neg\", new()\n {\n Name = \"function-neg\",\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 functionNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"function_neg\", new()\n {\n Name = \"function-neg\",\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/v7/go/gcp/cloudfunctions\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"cloudfunctions-function-example-bucket\"),\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\tName: pulumi.String(\"index.zip\"),\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, \"function_neg\", \u0026cloudfunctions.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-neg\"),\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// Cloud Functions Example\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"function_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"function-neg\"),\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 .name(\"cloudfunctions-function-example-bucket\")\n .location(\"US\")\n .build());\n\n var archive = new BucketObject(\"archive\", BucketObjectArgs.builder()\n .name(\"index.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"path/to/index.zip\"))\n .build());\n\n var functionNegFunction = new Function(\"functionNegFunction\", FunctionArgs.builder()\n .name(\"function-neg\")\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 // Cloud Functions Example\n var functionNeg = new RegionNetworkEndpointGroup(\"functionNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"function-neg\")\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 functionNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: function_neg\n properties:\n name: function-neg\n networkEndpointType: SERVERLESS\n region: us-central1\n cloudFunction:\n function: ${functionNegFunction.name}\n functionNegFunction:\n type: gcp:cloudfunctions:Function\n name: function_neg\n properties:\n name: function-neg\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 name: cloudfunctions-function-example-bucket\n location: US\n archive:\n type: gcp:storage:BucketObject\n properties:\n name: index.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: path/to/index.zip\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Cloudrun\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cloudrunNegService = new gcp.cloudrun.Service(\"cloudrun_neg\", {\n name: \"cloudrun-neg\",\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 cloudrunNeg = new gcp.compute.RegionNetworkEndpointGroup(\"cloudrun_neg\", {\n name: \"cloudrun-neg\",\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(\"cloudrun_neg\",\n name=\"cloudrun-neg\",\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 \"latest_revision\": True,\n }])\n# Cloud Run Example\ncloudrun_neg = gcp.compute.RegionNetworkEndpointGroup(\"cloudrun_neg\",\n name=\"cloudrun-neg\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n cloud_run={\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(\"cloudrun_neg\", new()\n {\n Name = \"cloudrun-neg\",\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 cloudrunNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"cloudrun_neg\", new()\n {\n Name = \"cloudrun-neg\",\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/v7/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"cloudrun_neg\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-neg\"),\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// Cloud Run Example\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"cloudrun_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"cloudrun-neg\"),\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 .name(\"cloudrun-neg\")\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 // Cloud Run Example\n var cloudrunNeg = new RegionNetworkEndpointGroup(\"cloudrunNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"cloudrun-neg\")\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 cloudrunNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: cloudrun_neg\n properties:\n name: cloudrun-neg\n networkEndpointType: SERVERLESS\n region: us-central1\n cloudRun:\n service: ${cloudrunNegService.name}\n cloudrunNegService:\n type: gcp:cloudrun:Service\n name: cloudrun_neg\n properties:\n name: cloudrun-neg\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\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Appengine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst appengineNegBucket = new gcp.storage.Bucket(\"appengine_neg\", {\n name: \"appengine-neg\",\n location: \"US\",\n});\nconst appengineNegBucketObject = new gcp.storage.BucketObject(\"appengine_neg\", {\n name: \"hello-world.zip\",\n bucket: appengineNegBucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst appengineNegFlexibleAppVersion = new gcp.appengine.FlexibleAppVersion(\"appengine_neg\", {\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 appengineNeg = new gcp.compute.RegionNetworkEndpointGroup(\"appengine_neg\", {\n name: \"appengine-neg\",\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(\"appengine_neg\",\n name=\"appengine-neg\",\n location=\"US\")\nappengine_neg_bucket_object = gcp.storage.BucketObject(\"appengine_neg\",\n name=\"hello-world.zip\",\n bucket=appengine_neg_bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nappengine_neg_flexible_app_version = gcp.appengine.FlexibleAppVersion(\"appengine_neg\",\n version_id=\"v1\",\n service=\"appengine-network-endpoint-group\",\n runtime=\"nodejs\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\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={\n \"path\": \"/\",\n },\n readiness_check={\n \"path\": \"/\",\n },\n env_variables={\n \"port\": \"8080\",\n },\n handlers=[{\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\": {\n \"path\": \"my-other-path\",\n \"upload_path_regex\": \".*\\\\/my-path\\\\/*\",\n },\n }],\n automatic_scaling={\n \"cool_down_period\": \"120s\",\n \"cpu_utilization\": {\n \"target_utilization\": 0.5,\n },\n },\n delete_service_on_destroy=True)\n# App Engine Example\nappengine_neg = gcp.compute.RegionNetworkEndpointGroup(\"appengine_neg\",\n name=\"appengine-neg\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n app_engine={\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(\"appengine_neg\", new()\n {\n Name = \"appengine-neg\",\n Location = \"US\",\n });\n\n var appengineNegBucketObject = new Gcp.Storage.BucketObject(\"appengine_neg\", new()\n {\n Name = \"hello-world.zip\",\n Bucket = appengineNegBucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var appengineNegFlexibleAppVersion = new Gcp.AppEngine.FlexibleAppVersion(\"appengine_neg\", 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 appengineNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"appengine_neg\", new()\n {\n Name = \"appengine-neg\",\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/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"appengine_neg\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"appengine-neg\"),\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, \"appengine_neg\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"hello-world.zip\"),\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, \"appengine_neg\", \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// App Engine Example\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"appengine_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"appengine-neg\"),\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 .name(\"appengine-neg\")\n .location(\"US\")\n .build());\n\n var appengineNegBucketObject = new BucketObject(\"appengineNegBucketObject\", BucketObjectArgs.builder()\n .name(\"hello-world.zip\")\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 // App Engine Example\n var appengineNeg = new RegionNetworkEndpointGroup(\"appengineNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"appengine-neg\")\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 appengineNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: appengine_neg\n properties:\n name: appengine-neg\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 name: appengine_neg\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 name: appengine_neg\n properties:\n name: appengine-neg\n location: US\n appengineNegBucketObject:\n type: gcp:storage:BucketObject\n name: appengine_neg\n properties:\n name: hello-world.zip\n bucket: ${appengineNegBucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Appengine Empty\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// App Engine Example\nconst appengineNeg = new gcp.compute.RegionNetworkEndpointGroup(\"appengine_neg\", {\n name: \"appengine-neg\",\n networkEndpointType: \"SERVERLESS\",\n region: \"us-central1\",\n appEngine: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# App Engine Example\nappengine_neg = gcp.compute.RegionNetworkEndpointGroup(\"appengine_neg\",\n name=\"appengine-neg\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n app_engine={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // App Engine Example\n var appengineNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"appengine_neg\", new()\n {\n Name = \"appengine-neg\",\n NetworkEndpointType = \"SERVERLESS\",\n Region = \"us-central1\",\n AppEngine = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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// App Engine Example\n\t\t_, err := compute.NewRegionNetworkEndpointGroup(ctx, \"appengine_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"appengine-neg\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"SERVERLESS\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tAppEngine: nil,\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 com.pulumi.gcp.compute.inputs.RegionNetworkEndpointGroupAppEngineArgs;\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 // App Engine Example\n var appengineNeg = new RegionNetworkEndpointGroup(\"appengineNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"appengine-neg\")\n .networkEndpointType(\"SERVERLESS\")\n .region(\"us-central1\")\n .appEngine()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # App Engine Example\n appengineNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: appengine_neg\n properties:\n name: appengine-neg\n networkEndpointType: SERVERLESS\n region: us-central1\n appEngine: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pscNeg = new gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\", {\n name: \"psc-neg\",\n region: \"asia-northeast3\",\n networkEndpointType: \"PRIVATE_SERVICE_CONNECT\",\n pscTargetService: \"asia-northeast3-cloudkms.googleapis.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc_neg = gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\",\n name=\"psc-neg\",\n region=\"asia-northeast3\",\n network_endpoint_type=\"PRIVATE_SERVICE_CONNECT\",\n psc_target_service=\"asia-northeast3-cloudkms.googleapis.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 pscNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"psc_neg\", new()\n {\n Name = \"psc-neg\",\n Region = \"asia-northeast3\",\n NetworkEndpointType = \"PRIVATE_SERVICE_CONNECT\",\n PscTargetService = \"asia-northeast3-cloudkms.googleapis.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"psc_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"psc-neg\"),\n\t\t\tRegion: pulumi.String(\"asia-northeast3\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tPscTargetService: pulumi.String(\"asia-northeast3-cloudkms.googleapis.com\"),\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 .name(\"psc-neg\")\n .region(\"asia-northeast3\")\n .networkEndpointType(\"PRIVATE_SERVICE_CONNECT\")\n .pscTargetService(\"asia-northeast3-cloudkms.googleapis.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: psc_neg\n properties:\n name: psc-neg\n region: asia-northeast3\n networkEndpointType: PRIVATE_SERVICE_CONNECT\n pscTargetService: asia-northeast3-cloudkms.googleapis.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Psc Service Attachment\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"psc-network\"});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"psc-subnetwork\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"europe-west4\",\n network: _default.id,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc_subnetwork\", {\n name: \"psc-subnetwork-nat\",\n ipCidrRange: \"10.1.0.0/16\",\n region: \"europe-west4\",\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n network: _default.id,\n});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"psc-healthcheck\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n name: \"psc-backend\",\n region: \"europe-west4\",\n healthChecks: defaultHealthCheck.id,\n});\nconst defaultForwardingRule = new gcp.compute.ForwardingRule(\"default\", {\n name: \"psc-forwarding-rule\",\n region: \"europe-west4\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: defaultRegionBackendService.id,\n allPorts: true,\n network: _default.name,\n subnetwork: defaultSubnetwork.name,\n});\nconst defaultServiceAttachment = new gcp.compute.ServiceAttachment(\"default\", {\n name: \"psc-service-attachment\",\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});\nconst pscNegServiceAttachment = new gcp.compute.RegionNetworkEndpointGroup(\"psc_neg_service_attachment\", {\n name: \"psc-neg\",\n region: \"europe-west4\",\n networkEndpointType: \"PRIVATE_SERVICE_CONNECT\",\n pscTargetService: defaultServiceAttachment.selfLink,\n network: _default.selfLink,\n subnetwork: defaultSubnetwork.selfLink,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"psc-network\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"psc-subnetwork\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"europe-west4\",\n network=default.id)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc_subnetwork\",\n name=\"psc-subnetwork-nat\",\n ip_cidr_range=\"10.1.0.0/16\",\n region=\"europe-west4\",\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n network=default.id)\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"psc-healthcheck\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n name=\"psc-backend\",\n region=\"europe-west4\",\n health_checks=default_health_check.id)\ndefault_forwarding_rule = gcp.compute.ForwardingRule(\"default\",\n name=\"psc-forwarding-rule\",\n region=\"europe-west4\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=default_region_backend_service.id,\n all_ports=True,\n network=default.name,\n subnetwork=default_subnetwork.name)\ndefault_service_attachment = gcp.compute.ServiceAttachment(\"default\",\n name=\"psc-service-attachment\",\n region=\"europe-west4\",\n description=\"A service attachment configured with Terraform\",\n enable_proxy_protocol=False,\n connection_preference=\"ACCEPT_AUTOMATIC\",\n nat_subnets=[psc_subnetwork.self_link],\n target_service=default_forwarding_rule.self_link)\npsc_neg_service_attachment = gcp.compute.RegionNetworkEndpointGroup(\"psc_neg_service_attachment\",\n name=\"psc-neg\",\n region=\"europe-west4\",\n network_endpoint_type=\"PRIVATE_SERVICE_CONNECT\",\n psc_target_service=default_service_attachment.self_link,\n network=default.self_link,\n subnetwork=default_subnetwork.self_link)\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.Network(\"default\", new()\n {\n Name = \"psc-network\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"psc-subnetwork\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"europe-west4\",\n Network = @default.Id,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc_subnetwork\", new()\n {\n Name = \"psc-subnetwork-nat\",\n IpCidrRange = \"10.1.0.0/16\",\n Region = \"europe-west4\",\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n Network = @default.Id,\n });\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"psc-healthcheck\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"psc-backend\",\n Region = \"europe-west4\",\n HealthChecks = defaultHealthCheck.Id,\n });\n\n var defaultForwardingRule = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"psc-forwarding-rule\",\n Region = \"europe-west4\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = defaultRegionBackendService.Id,\n AllPorts = true,\n Network = @default.Name,\n Subnetwork = defaultSubnetwork.Name,\n });\n\n var defaultServiceAttachment = new Gcp.Compute.ServiceAttachment(\"default\", new()\n {\n Name = \"psc-service-attachment\",\n Region = \"europe-west4\",\n Description = \"A service attachment configured with Terraform\",\n EnableProxyProtocol = false,\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n NatSubnets = new[]\n {\n pscSubnetwork.SelfLink,\n },\n TargetService = defaultForwardingRule.SelfLink,\n });\n\n var pscNegServiceAttachment = new Gcp.Compute.RegionNetworkEndpointGroup(\"psc_neg_service_attachment\", new()\n {\n Name = \"psc-neg\",\n Region = \"europe-west4\",\n NetworkEndpointType = \"PRIVATE_SERVICE_CONNECT\",\n PscTargetService = defaultServiceAttachment.SelfLink,\n Network = @default.SelfLink,\n Subnetwork = defaultSubnetwork.SelfLink,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"psc-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-subnetwork-nat\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"psc-healthcheck\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"psc-backend\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultForwardingRule, err := compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"psc-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: defaultRegionBackendService.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: _default.Name,\n\t\t\tSubnetwork: defaultSubnetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultServiceAttachment, err := compute.NewServiceAttachment(ctx, \"default\", \u0026compute.ServiceAttachmentArgs{\n\t\t\tName: pulumi.String(\"psc-service-attachment\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tDescription: pulumi.String(\"A service attachment configured with Terraform\"),\n\t\t\tEnableProxyProtocol: pulumi.Bool(false),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tNatSubnets: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t\tTargetService: defaultForwardingRule.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"psc_neg_service_attachment\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"psc-neg\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tPscTargetService: defaultServiceAttachment.SelfLink,\n\t\t\tNetwork: _default.SelfLink,\n\t\t\tSubnetwork: defaultSubnetwork.SelfLink,\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.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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"psc-network\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"psc-subnetwork\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"europe-west4\")\n .network(default_.id())\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"psc-subnetwork-nat\")\n .ipCidrRange(\"10.1.0.0/16\")\n .region(\"europe-west4\")\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .network(default_.id())\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"psc-healthcheck\")\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 .name(\"psc-backend\")\n .region(\"europe-west4\")\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder()\n .name(\"psc-forwarding-rule\")\n .region(\"europe-west4\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(defaultRegionBackendService.id())\n .allPorts(true)\n .network(default_.name())\n .subnetwork(defaultSubnetwork.name())\n .build());\n\n var defaultServiceAttachment = new ServiceAttachment(\"defaultServiceAttachment\", ServiceAttachmentArgs.builder()\n .name(\"psc-service-attachment\")\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 .name(\"psc-neg\")\n .region(\"europe-west4\")\n .networkEndpointType(\"PRIVATE_SERVICE_CONNECT\")\n .pscTargetService(defaultServiceAttachment.selfLink())\n .network(default_.selfLink())\n .subnetwork(defaultSubnetwork.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: psc-network\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: psc-subnetwork\n ipCidrRange: 10.0.0.0/16\n region: europe-west4\n network: ${default.id}\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc_subnetwork\n properties:\n name: psc-subnetwork-nat\n ipCidrRange: 10.1.0.0/16\n region: europe-west4\n purpose: PRIVATE_SERVICE_CONNECT\n network: ${default.id}\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: psc-healthcheck\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n name: psc-backend\n region: europe-west4\n healthChecks: ${defaultHealthCheck.id}\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n name: default\n properties:\n name: psc-forwarding-rule\n region: europe-west4\n loadBalancingScheme: INTERNAL\n backendService: ${defaultRegionBackendService.id}\n allPorts: true\n network: ${default.name}\n subnetwork: ${defaultSubnetwork.name}\n defaultServiceAttachment:\n type: gcp:compute:ServiceAttachment\n name: default\n properties:\n name: psc-service-attachment\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 name: psc_neg_service_attachment\n properties:\n name: psc-neg\n region: europe-west4\n networkEndpointType: PRIVATE_SERVICE_CONNECT\n pscTargetService: ${defaultServiceAttachment.selfLink}\n network: ${default.selfLink}\n subnetwork: ${defaultSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Internet Ip Port\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"network\"});\nconst regionNetworkEndpointGroupInternetIpPort = new gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_ip_port\", {\n name: \"ip-port-neg\",\n region: \"us-central1\",\n network: _default.id,\n networkEndpointType: \"INTERNET_IP_PORT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"network\")\nregion_network_endpoint_group_internet_ip_port = gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_ip_port\",\n name=\"ip-port-neg\",\n region=\"us-central1\",\n network=default.id,\n network_endpoint_type=\"INTERNET_IP_PORT\")\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.Network(\"default\", new()\n {\n Name = \"network\",\n });\n\n var regionNetworkEndpointGroupInternetIpPort = new Gcp.Compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_ip_port\", new()\n {\n Name = \"ip-port-neg\",\n Region = \"us-central1\",\n Network = @default.Id,\n NetworkEndpointType = \"INTERNET_IP_PORT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"region_network_endpoint_group_internet_ip_port\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"ip-port-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_IP_PORT\"),\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.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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var regionNetworkEndpointGroupInternetIpPort = new RegionNetworkEndpointGroup(\"regionNetworkEndpointGroupInternetIpPort\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"ip-port-neg\")\n .region(\"us-central1\")\n .network(default_.id())\n .networkEndpointType(\"INTERNET_IP_PORT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionNetworkEndpointGroupInternetIpPort:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: region_network_endpoint_group_internet_ip_port\n properties:\n name: ip-port-neg\n region: us-central1\n network: ${default.id}\n networkEndpointType: INTERNET_IP_PORT\n default:\n type: gcp:compute:Network\n properties:\n name: network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Internet Fqdn Port\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"network\"});\nconst regionNetworkEndpointGroupInternetFqdnPort = new gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_fqdn_port\", {\n name: \"ip-port-neg\",\n region: \"us-central1\",\n network: _default.id,\n networkEndpointType: \"INTERNET_FQDN_PORT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"network\")\nregion_network_endpoint_group_internet_fqdn_port = gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_fqdn_port\",\n name=\"ip-port-neg\",\n region=\"us-central1\",\n network=default.id,\n network_endpoint_type=\"INTERNET_FQDN_PORT\")\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.Network(\"default\", new()\n {\n Name = \"network\",\n });\n\n var regionNetworkEndpointGroupInternetFqdnPort = new Gcp.Compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_fqdn_port\", new()\n {\n Name = \"ip-port-neg\",\n Region = \"us-central1\",\n Network = @default.Id,\n NetworkEndpointType = \"INTERNET_FQDN_PORT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"region_network_endpoint_group_internet_fqdn_port\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"ip-port-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_FQDN_PORT\"),\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.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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var regionNetworkEndpointGroupInternetFqdnPort = new RegionNetworkEndpointGroup(\"regionNetworkEndpointGroupInternetFqdnPort\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"ip-port-neg\")\n .region(\"us-central1\")\n .network(default_.id())\n .networkEndpointType(\"INTERNET_FQDN_PORT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionNetworkEndpointGroupInternetFqdnPort:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: region_network_endpoint_group_internet_fqdn_port\n properties:\n name: ip-port-neg\n region: us-central1\n network: ${default.id}\n networkEndpointType: INTERNET_FQDN_PORT\n default:\n type: gcp:compute:Network\n properties:\n name: network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Portmap\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"network\"});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"subnetwork\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst regionNetworkEndpointGroupPortmap = new gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_portmap\", {\n name: \"portmap-neg\",\n region: \"us-central1\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n networkEndpointType: \"GCE_VM_IP_PORTMAP\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"network\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"subnetwork\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=default.id)\nregion_network_endpoint_group_portmap = gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_portmap\",\n name=\"portmap-neg\",\n region=\"us-central1\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n network_endpoint_type=\"GCE_VM_IP_PORTMAP\")\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.Network(\"default\", new()\n {\n Name = \"network\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"subnetwork\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var regionNetworkEndpointGroupPortmap = new Gcp.Compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_portmap\", new()\n {\n Name = \"portmap-neg\",\n Region = \"us-central1\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n NetworkEndpointType = \"GCE_VM_IP_PORTMAP\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"region_network_endpoint_group_portmap\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"portmap-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tNetworkEndpointType: pulumi.String(\"GCE_VM_IP_PORTMAP\"),\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.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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"subnetwork\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var regionNetworkEndpointGroupPortmap = new RegionNetworkEndpointGroup(\"regionNetworkEndpointGroupPortmap\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"portmap-neg\")\n .region(\"us-central1\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .networkEndpointType(\"GCE_VM_IP_PORTMAP\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionNetworkEndpointGroupPortmap:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: region_network_endpoint_group_portmap\n properties:\n name: portmap-neg\n region: us-central1\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n networkEndpointType: GCE_VM_IP_PORTMAP\n default:\n type: gcp:compute:Network\n properties:\n name: network\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: subnetwork\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${default.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionNetworkEndpointGroup can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/networkEndpointGroups/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionNetworkEndpointGroup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default projects/{{project}}/regions/{{region}}/networkEndpointGroups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default {{name}}\n```\n\n", "properties": { "appEngine": { "$ref": "#/types/gcp:compute/RegionNetworkEndpointGroupAppEngine:RegionNetworkEndpointGroupAppEngine", @@ -159061,7 +159061,7 @@ } }, "gcp:compute/regionNetworkFirewallPolicyRule:RegionNetworkFirewallPolicyRule": { - "description": "The Compute NetworkFirewallPolicyRule resource\n\n## Example Usage\n\n### Regional\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicRegionalNetworksecurityAddressGroup = new gcp.networksecurity.AddressGroup(\"basic_regional_networksecurity_address_group\", {\n name: \"policy\",\n parent: \"projects/my-project-name\",\n description: \"Sample regional networksecurity_address_group\",\n location: \"us-west1\",\n items: [\"208.80.154.224/32\"],\n type: \"IPV4\",\n capacity: 100,\n});\nconst basicRegionalNetworkFirewallPolicy = new gcp.compute.RegionNetworkFirewallPolicy(\"basic_regional_network_firewall_policy\", {\n name: \"policy\",\n description: \"Sample regional network firewall policy\",\n project: \"my-project-name\",\n region: \"us-west1\",\n});\nconst basicNetwork = new gcp.compute.Network(\"basic_network\", {name: \"network\"});\nconst basicKey = new gcp.tags.TagKey(\"basic_key\", {\n description: \"For keyname resources.\",\n parent: \"organizations/123456789\",\n purpose: \"GCE_FIREWALL\",\n shortName: \"tagkey\",\n purposeData: {\n network: pulumi.interpolate`my-project-name/${basicNetwork.name}`,\n },\n});\nconst basicValue = new gcp.tags.TagValue(\"basic_value\", {\n description: \"For valuename resources.\",\n parent: pulumi.interpolate`tagKeys/${basicKey.name}`,\n shortName: \"tagvalue\",\n});\nconst primary = new gcp.compute.RegionNetworkFirewallPolicyRule(\"primary\", {\n action: \"allow\",\n description: \"This is a simple rule description\",\n direction: \"INGRESS\",\n disabled: false,\n enableLogging: true,\n firewallPolicy: basicRegionalNetworkFirewallPolicy.name,\n priority: 1000,\n region: \"us-west1\",\n ruleName: \"test-rule\",\n targetServiceAccounts: [\"my@service-account.com\"],\n match: {\n srcIpRanges: [\"10.100.0.1/32\"],\n srcFqdns: [\"example.com\"],\n srcRegionCodes: [\"US\"],\n srcThreatIntelligences: [\"iplist-known-malicious-ips\"],\n layer4Configs: [{\n ipProtocol: \"all\",\n }],\n srcSecureTags: [{\n name: pulumi.interpolate`tagValues/${basicValue.name}`,\n }],\n srcAddressGroups: [basicRegionalNetworksecurityAddressGroup.id],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_regional_networksecurity_address_group = gcp.networksecurity.AddressGroup(\"basic_regional_networksecurity_address_group\",\n name=\"policy\",\n parent=\"projects/my-project-name\",\n description=\"Sample regional networksecurity_address_group\",\n location=\"us-west1\",\n items=[\"208.80.154.224/32\"],\n type=\"IPV4\",\n capacity=100)\nbasic_regional_network_firewall_policy = gcp.compute.RegionNetworkFirewallPolicy(\"basic_regional_network_firewall_policy\",\n name=\"policy\",\n description=\"Sample regional network firewall policy\",\n project=\"my-project-name\",\n region=\"us-west1\")\nbasic_network = gcp.compute.Network(\"basic_network\", name=\"network\")\nbasic_key = gcp.tags.TagKey(\"basic_key\",\n description=\"For keyname resources.\",\n parent=\"organizations/123456789\",\n purpose=\"GCE_FIREWALL\",\n short_name=\"tagkey\",\n purpose_data={\n \"network\": basic_network.name.apply(lambda name: f\"my-project-name/{name}\"),\n })\nbasic_value = gcp.tags.TagValue(\"basic_value\",\n description=\"For valuename resources.\",\n parent=basic_key.name.apply(lambda name: f\"tagKeys/{name}\"),\n short_name=\"tagvalue\")\nprimary = gcp.compute.RegionNetworkFirewallPolicyRule(\"primary\",\n action=\"allow\",\n description=\"This is a simple rule description\",\n direction=\"INGRESS\",\n disabled=False,\n enable_logging=True,\n firewall_policy=basic_regional_network_firewall_policy.name,\n priority=1000,\n region=\"us-west1\",\n rule_name=\"test-rule\",\n target_service_accounts=[\"my@service-account.com\"],\n match={\n \"srcIpRanges\": [\"10.100.0.1/32\"],\n \"srcFqdns\": [\"example.com\"],\n \"srcRegionCodes\": [\"US\"],\n \"srcThreatIntelligences\": [\"iplist-known-malicious-ips\"],\n \"layer4Configs\": [{\n \"ipProtocol\": \"all\",\n }],\n \"srcSecureTags\": [{\n \"name\": basic_value.name.apply(lambda name: f\"tagValues/{name}\"),\n }],\n \"srcAddressGroups\": [basic_regional_networksecurity_address_group.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 basicRegionalNetworksecurityAddressGroup = new Gcp.NetworkSecurity.AddressGroup(\"basic_regional_networksecurity_address_group\", new()\n {\n Name = \"policy\",\n Parent = \"projects/my-project-name\",\n Description = \"Sample regional networksecurity_address_group\",\n Location = \"us-west1\",\n Items = new[]\n {\n \"208.80.154.224/32\",\n },\n Type = \"IPV4\",\n Capacity = 100,\n });\n\n var basicRegionalNetworkFirewallPolicy = new Gcp.Compute.RegionNetworkFirewallPolicy(\"basic_regional_network_firewall_policy\", new()\n {\n Name = \"policy\",\n Description = \"Sample regional network firewall policy\",\n Project = \"my-project-name\",\n Region = \"us-west1\",\n });\n\n var basicNetwork = new Gcp.Compute.Network(\"basic_network\", new()\n {\n Name = \"network\",\n });\n\n var basicKey = new Gcp.Tags.TagKey(\"basic_key\", new()\n {\n Description = \"For keyname resources.\",\n Parent = \"organizations/123456789\",\n Purpose = \"GCE_FIREWALL\",\n ShortName = \"tagkey\",\n PurposeData = \n {\n { \"network\", basicNetwork.Name.Apply(name =\u003e $\"my-project-name/{name}\") },\n },\n });\n\n var basicValue = new Gcp.Tags.TagValue(\"basic_value\", new()\n {\n Description = \"For valuename resources.\",\n Parent = basicKey.Name.Apply(name =\u003e $\"tagKeys/{name}\"),\n ShortName = \"tagvalue\",\n });\n\n var primary = new Gcp.Compute.RegionNetworkFirewallPolicyRule(\"primary\", new()\n {\n Action = \"allow\",\n Description = \"This is a simple rule description\",\n Direction = \"INGRESS\",\n Disabled = false,\n EnableLogging = true,\n FirewallPolicy = basicRegionalNetworkFirewallPolicy.Name,\n Priority = 1000,\n Region = \"us-west1\",\n RuleName = \"test-rule\",\n TargetServiceAccounts = new[]\n {\n \"my@service-account.com\",\n },\n Match = new Gcp.Compute.Inputs.RegionNetworkFirewallPolicyRuleMatchArgs\n {\n SrcIpRanges = new[]\n {\n \"10.100.0.1/32\",\n },\n SrcFqdns = new[]\n {\n \"example.com\",\n },\n SrcRegionCodes = new[]\n {\n \"US\",\n },\n SrcThreatIntelligences = new[]\n {\n \"iplist-known-malicious-ips\",\n },\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.RegionNetworkFirewallPolicyRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"all\",\n },\n },\n SrcSecureTags = new[]\n {\n new Gcp.Compute.Inputs.RegionNetworkFirewallPolicyRuleMatchSrcSecureTagArgs\n {\n Name = basicValue.Name.Apply(name =\u003e $\"tagValues/{name}\"),\n },\n },\n SrcAddressGroups = new[]\n {\n basicRegionalNetworksecurityAddressGroup.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/tags\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasicRegionalNetworksecurityAddressGroup, err := networksecurity.NewAddressGroup(ctx, \"basic_regional_networksecurity_address_group\", \u0026networksecurity.AddressGroupArgs{\n\t\t\tName: pulumi.String(\"policy\"),\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Sample regional networksecurity_address_group\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tItems: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"208.80.154.224/32\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"IPV4\"),\n\t\t\tCapacity: pulumi.Int(100),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicRegionalNetworkFirewallPolicy, err := compute.NewRegionNetworkFirewallPolicy(ctx, \"basic_regional_network_firewall_policy\", \u0026compute.RegionNetworkFirewallPolicyArgs{\n\t\t\tName: pulumi.String(\"policy\"),\n\t\t\tDescription: pulumi.String(\"Sample regional network firewall policy\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRegion: pulumi.String(\"us-west1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicNetwork, err := compute.NewNetwork(ctx, \"basic_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicKey, err := tags.NewTagKey(ctx, \"basic_key\", \u0026tags.TagKeyArgs{\n\t\t\tDescription: pulumi.String(\"For keyname resources.\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tPurpose: pulumi.String(\"GCE_FIREWALL\"),\n\t\t\tShortName: pulumi.String(\"tagkey\"),\n\t\t\tPurposeData: pulumi.StringMap{\n\t\t\t\t\"network\": basicNetwork.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"my-project-name/%v\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicValue, err := tags.NewTagValue(ctx, \"basic_value\", \u0026tags.TagValueArgs{\n\t\t\tDescription: pulumi.String(\"For valuename resources.\"),\n\t\t\tParent: basicKey.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"tagKeys/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tShortName: pulumi.String(\"tagvalue\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkFirewallPolicyRule(ctx, \"primary\", \u0026compute.RegionNetworkFirewallPolicyRuleArgs{\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tDescription: pulumi.String(\"This is a simple rule description\"),\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\tDisabled: pulumi.Bool(false),\n\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\tFirewallPolicy: basicRegionalNetworkFirewallPolicy.Name,\n\t\t\tPriority: pulumi.Int(1000),\n\t\t\tRegion: pulumi.String(\"us-west1\"),\n\t\t\tRuleName: pulumi.String(\"test-rule\"),\n\t\t\tTargetServiceAccounts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my@service-account.com\"),\n\t\t\t},\n\t\t\tMatch: \u0026compute.RegionNetworkFirewallPolicyRuleMatchArgs{\n\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.100.0.1/32\"),\n\t\t\t\t},\n\t\t\t\tSrcFqdns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t},\n\t\t\t\tSrcRegionCodes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t},\n\t\t\t\tSrcThreatIntelligences: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"iplist-known-malicious-ips\"),\n\t\t\t\t},\n\t\t\t\tLayer4Configs: compute.RegionNetworkFirewallPolicyRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\u0026compute.RegionNetworkFirewallPolicyRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\tIpProtocol: pulumi.String(\"all\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSrcSecureTags: compute.RegionNetworkFirewallPolicyRuleMatchSrcSecureTagArray{\n\t\t\t\t\t\u0026compute.RegionNetworkFirewallPolicyRuleMatchSrcSecureTagArgs{\n\t\t\t\t\t\tName: basicValue.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"tagValues/%v\", name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSrcAddressGroups: pulumi.StringArray{\n\t\t\t\t\tbasicRegionalNetworksecurityAddressGroup.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.networksecurity.AddressGroup;\nimport com.pulumi.gcp.networksecurity.AddressGroupArgs;\nimport com.pulumi.gcp.compute.RegionNetworkFirewallPolicy;\nimport com.pulumi.gcp.compute.RegionNetworkFirewallPolicyArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.tags.TagKey;\nimport com.pulumi.gcp.tags.TagKeyArgs;\nimport com.pulumi.gcp.tags.TagValue;\nimport com.pulumi.gcp.tags.TagValueArgs;\nimport com.pulumi.gcp.compute.RegionNetworkFirewallPolicyRule;\nimport com.pulumi.gcp.compute.RegionNetworkFirewallPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionNetworkFirewallPolicyRuleMatchArgs;\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 basicRegionalNetworksecurityAddressGroup = new AddressGroup(\"basicRegionalNetworksecurityAddressGroup\", AddressGroupArgs.builder()\n .name(\"policy\")\n .parent(\"projects/my-project-name\")\n .description(\"Sample regional networksecurity_address_group\")\n .location(\"us-west1\")\n .items(\"208.80.154.224/32\")\n .type(\"IPV4\")\n .capacity(100)\n .build());\n\n var basicRegionalNetworkFirewallPolicy = new RegionNetworkFirewallPolicy(\"basicRegionalNetworkFirewallPolicy\", RegionNetworkFirewallPolicyArgs.builder()\n .name(\"policy\")\n .description(\"Sample regional network firewall policy\")\n .project(\"my-project-name\")\n .region(\"us-west1\")\n .build());\n\n var basicNetwork = new Network(\"basicNetwork\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var basicKey = new TagKey(\"basicKey\", TagKeyArgs.builder()\n .description(\"For keyname resources.\")\n .parent(\"organizations/123456789\")\n .purpose(\"GCE_FIREWALL\")\n .shortName(\"tagkey\")\n .purposeData(Map.of(\"network\", basicNetwork.name().applyValue(name -\u003e String.format(\"my-project-name/%s\", name))))\n .build());\n\n var basicValue = new TagValue(\"basicValue\", TagValueArgs.builder()\n .description(\"For valuename resources.\")\n .parent(basicKey.name().applyValue(name -\u003e String.format(\"tagKeys/%s\", name)))\n .shortName(\"tagvalue\")\n .build());\n\n var primary = new RegionNetworkFirewallPolicyRule(\"primary\", RegionNetworkFirewallPolicyRuleArgs.builder()\n .action(\"allow\")\n .description(\"This is a simple rule description\")\n .direction(\"INGRESS\")\n .disabled(false)\n .enableLogging(true)\n .firewallPolicy(basicRegionalNetworkFirewallPolicy.name())\n .priority(1000)\n .region(\"us-west1\")\n .ruleName(\"test-rule\")\n .targetServiceAccounts(\"my@service-account.com\")\n .match(RegionNetworkFirewallPolicyRuleMatchArgs.builder()\n .srcIpRanges(\"10.100.0.1/32\")\n .srcFqdns(\"example.com\")\n .srcRegionCodes(\"US\")\n .srcThreatIntelligences(\"iplist-known-malicious-ips\")\n .layer4Configs(RegionNetworkFirewallPolicyRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"all\")\n .build())\n .srcSecureTags(RegionNetworkFirewallPolicyRuleMatchSrcSecureTagArgs.builder()\n .name(basicValue.name().applyValue(name -\u003e String.format(\"tagValues/%s\", name)))\n .build())\n .srcAddressGroups(basicRegionalNetworksecurityAddressGroup.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicRegionalNetworksecurityAddressGroup:\n type: gcp:networksecurity:AddressGroup\n name: basic_regional_networksecurity_address_group\n properties:\n name: policy\n parent: projects/my-project-name\n description: Sample regional networksecurity_address_group\n location: us-west1\n items:\n - 208.80.154.224/32\n type: IPV4\n capacity: 100\n basicRegionalNetworkFirewallPolicy:\n type: gcp:compute:RegionNetworkFirewallPolicy\n name: basic_regional_network_firewall_policy\n properties:\n name: policy\n description: Sample regional network firewall policy\n project: my-project-name\n region: us-west1\n primary:\n type: gcp:compute:RegionNetworkFirewallPolicyRule\n properties:\n action: allow\n description: This is a simple rule description\n direction: INGRESS\n disabled: false\n enableLogging: true\n firewallPolicy: ${basicRegionalNetworkFirewallPolicy.name}\n priority: 1000\n region: us-west1\n ruleName: test-rule\n targetServiceAccounts:\n - my@service-account.com\n match:\n srcIpRanges:\n - 10.100.0.1/32\n srcFqdns:\n - example.com\n srcRegionCodes:\n - US\n srcThreatIntelligences:\n - iplist-known-malicious-ips\n layer4Configs:\n - ipProtocol: all\n srcSecureTags:\n - name: tagValues/${basicValue.name}\n srcAddressGroups:\n - ${basicRegionalNetworksecurityAddressGroup.id}\n basicNetwork:\n type: gcp:compute:Network\n name: basic_network\n properties:\n name: network\n basicKey:\n type: gcp:tags:TagKey\n name: basic_key\n properties:\n description: For keyname resources.\n parent: organizations/123456789\n purpose: GCE_FIREWALL\n shortName: tagkey\n purposeData:\n network: my-project-name/${basicNetwork.name}\n basicValue:\n type: gcp:tags:TagValue\n name: basic_value\n properties:\n description: For valuename resources.\n parent: tagKeys/${basicKey.name}\n shortName: tagvalue\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkFirewallPolicyRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/firewallPolicies/{{firewall_policy}}/{{priority}}`\n\n* `{{project}}/{{region}}/{{firewall_policy}}/{{priority}}`\n\n* `{{region}}/{{firewall_policy}}/{{priority}}`\n\n* `{{firewall_policy}}/{{priority}}`\n\nWhen using the `pulumi import` command, NetworkFirewallPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionNetworkFirewallPolicyRule:RegionNetworkFirewallPolicyRule default projects/{{project}}/regions/{{region}}/firewallPolicies/{{firewall_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkFirewallPolicyRule:RegionNetworkFirewallPolicyRule default {{project}}/{{region}}/{{firewall_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkFirewallPolicyRule:RegionNetworkFirewallPolicyRule default {{region}}/{{firewall_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkFirewallPolicyRule:RegionNetworkFirewallPolicyRule default {{firewall_policy}}/{{priority}}\n```\n\n", + "description": "The Compute NetworkFirewallPolicyRule resource\n\n## Example Usage\n\n### Regional\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicRegionalNetworksecurityAddressGroup = new gcp.networksecurity.AddressGroup(\"basic_regional_networksecurity_address_group\", {\n name: \"policy\",\n parent: \"projects/my-project-name\",\n description: \"Sample regional networksecurity_address_group\",\n location: \"us-west1\",\n items: [\"208.80.154.224/32\"],\n type: \"IPV4\",\n capacity: 100,\n});\nconst basicRegionalNetworkFirewallPolicy = new gcp.compute.RegionNetworkFirewallPolicy(\"basic_regional_network_firewall_policy\", {\n name: \"policy\",\n description: \"Sample regional network firewall policy\",\n project: \"my-project-name\",\n region: \"us-west1\",\n});\nconst basicNetwork = new gcp.compute.Network(\"basic_network\", {name: \"network\"});\nconst basicKey = new gcp.tags.TagKey(\"basic_key\", {\n description: \"For keyname resources.\",\n parent: \"organizations/123456789\",\n purpose: \"GCE_FIREWALL\",\n shortName: \"tagkey\",\n purposeData: {\n network: pulumi.interpolate`my-project-name/${basicNetwork.name}`,\n },\n});\nconst basicValue = new gcp.tags.TagValue(\"basic_value\", {\n description: \"For valuename resources.\",\n parent: pulumi.interpolate`tagKeys/${basicKey.name}`,\n shortName: \"tagvalue\",\n});\nconst primary = new gcp.compute.RegionNetworkFirewallPolicyRule(\"primary\", {\n action: \"allow\",\n description: \"This is a simple rule description\",\n direction: \"INGRESS\",\n disabled: false,\n enableLogging: true,\n firewallPolicy: basicRegionalNetworkFirewallPolicy.name,\n priority: 1000,\n region: \"us-west1\",\n ruleName: \"test-rule\",\n targetServiceAccounts: [\"my@service-account.com\"],\n match: {\n srcIpRanges: [\"10.100.0.1/32\"],\n srcFqdns: [\"example.com\"],\n srcRegionCodes: [\"US\"],\n srcThreatIntelligences: [\"iplist-known-malicious-ips\"],\n layer4Configs: [{\n ipProtocol: \"all\",\n }],\n srcSecureTags: [{\n name: pulumi.interpolate`tagValues/${basicValue.name}`,\n }],\n srcAddressGroups: [basicRegionalNetworksecurityAddressGroup.id],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_regional_networksecurity_address_group = gcp.networksecurity.AddressGroup(\"basic_regional_networksecurity_address_group\",\n name=\"policy\",\n parent=\"projects/my-project-name\",\n description=\"Sample regional networksecurity_address_group\",\n location=\"us-west1\",\n items=[\"208.80.154.224/32\"],\n type=\"IPV4\",\n capacity=100)\nbasic_regional_network_firewall_policy = gcp.compute.RegionNetworkFirewallPolicy(\"basic_regional_network_firewall_policy\",\n name=\"policy\",\n description=\"Sample regional network firewall policy\",\n project=\"my-project-name\",\n region=\"us-west1\")\nbasic_network = gcp.compute.Network(\"basic_network\", name=\"network\")\nbasic_key = gcp.tags.TagKey(\"basic_key\",\n description=\"For keyname resources.\",\n parent=\"organizations/123456789\",\n purpose=\"GCE_FIREWALL\",\n short_name=\"tagkey\",\n purpose_data={\n \"network\": basic_network.name.apply(lambda name: f\"my-project-name/{name}\"),\n })\nbasic_value = gcp.tags.TagValue(\"basic_value\",\n description=\"For valuename resources.\",\n parent=basic_key.name.apply(lambda name: f\"tagKeys/{name}\"),\n short_name=\"tagvalue\")\nprimary = gcp.compute.RegionNetworkFirewallPolicyRule(\"primary\",\n action=\"allow\",\n description=\"This is a simple rule description\",\n direction=\"INGRESS\",\n disabled=False,\n enable_logging=True,\n firewall_policy=basic_regional_network_firewall_policy.name,\n priority=1000,\n region=\"us-west1\",\n rule_name=\"test-rule\",\n target_service_accounts=[\"my@service-account.com\"],\n match={\n \"src_ip_ranges\": [\"10.100.0.1/32\"],\n \"src_fqdns\": [\"example.com\"],\n \"src_region_codes\": [\"US\"],\n \"src_threat_intelligences\": [\"iplist-known-malicious-ips\"],\n \"layer4_configs\": [{\n \"ip_protocol\": \"all\",\n }],\n \"src_secure_tags\": [{\n \"name\": basic_value.name.apply(lambda name: f\"tagValues/{name}\"),\n }],\n \"src_address_groups\": [basic_regional_networksecurity_address_group.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 basicRegionalNetworksecurityAddressGroup = new Gcp.NetworkSecurity.AddressGroup(\"basic_regional_networksecurity_address_group\", new()\n {\n Name = \"policy\",\n Parent = \"projects/my-project-name\",\n Description = \"Sample regional networksecurity_address_group\",\n Location = \"us-west1\",\n Items = new[]\n {\n \"208.80.154.224/32\",\n },\n Type = \"IPV4\",\n Capacity = 100,\n });\n\n var basicRegionalNetworkFirewallPolicy = new Gcp.Compute.RegionNetworkFirewallPolicy(\"basic_regional_network_firewall_policy\", new()\n {\n Name = \"policy\",\n Description = \"Sample regional network firewall policy\",\n Project = \"my-project-name\",\n Region = \"us-west1\",\n });\n\n var basicNetwork = new Gcp.Compute.Network(\"basic_network\", new()\n {\n Name = \"network\",\n });\n\n var basicKey = new Gcp.Tags.TagKey(\"basic_key\", new()\n {\n Description = \"For keyname resources.\",\n Parent = \"organizations/123456789\",\n Purpose = \"GCE_FIREWALL\",\n ShortName = \"tagkey\",\n PurposeData = \n {\n { \"network\", basicNetwork.Name.Apply(name =\u003e $\"my-project-name/{name}\") },\n },\n });\n\n var basicValue = new Gcp.Tags.TagValue(\"basic_value\", new()\n {\n Description = \"For valuename resources.\",\n Parent = basicKey.Name.Apply(name =\u003e $\"tagKeys/{name}\"),\n ShortName = \"tagvalue\",\n });\n\n var primary = new Gcp.Compute.RegionNetworkFirewallPolicyRule(\"primary\", new()\n {\n Action = \"allow\",\n Description = \"This is a simple rule description\",\n Direction = \"INGRESS\",\n Disabled = false,\n EnableLogging = true,\n FirewallPolicy = basicRegionalNetworkFirewallPolicy.Name,\n Priority = 1000,\n Region = \"us-west1\",\n RuleName = \"test-rule\",\n TargetServiceAccounts = new[]\n {\n \"my@service-account.com\",\n },\n Match = new Gcp.Compute.Inputs.RegionNetworkFirewallPolicyRuleMatchArgs\n {\n SrcIpRanges = new[]\n {\n \"10.100.0.1/32\",\n },\n SrcFqdns = new[]\n {\n \"example.com\",\n },\n SrcRegionCodes = new[]\n {\n \"US\",\n },\n SrcThreatIntelligences = new[]\n {\n \"iplist-known-malicious-ips\",\n },\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.RegionNetworkFirewallPolicyRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"all\",\n },\n },\n SrcSecureTags = new[]\n {\n new Gcp.Compute.Inputs.RegionNetworkFirewallPolicyRuleMatchSrcSecureTagArgs\n {\n Name = basicValue.Name.Apply(name =\u003e $\"tagValues/{name}\"),\n },\n },\n SrcAddressGroups = new[]\n {\n basicRegionalNetworksecurityAddressGroup.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/tags\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasicRegionalNetworksecurityAddressGroup, err := networksecurity.NewAddressGroup(ctx, \"basic_regional_networksecurity_address_group\", \u0026networksecurity.AddressGroupArgs{\n\t\t\tName: pulumi.String(\"policy\"),\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Sample regional networksecurity_address_group\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tItems: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"208.80.154.224/32\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"IPV4\"),\n\t\t\tCapacity: pulumi.Int(100),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicRegionalNetworkFirewallPolicy, err := compute.NewRegionNetworkFirewallPolicy(ctx, \"basic_regional_network_firewall_policy\", \u0026compute.RegionNetworkFirewallPolicyArgs{\n\t\t\tName: pulumi.String(\"policy\"),\n\t\t\tDescription: pulumi.String(\"Sample regional network firewall policy\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRegion: pulumi.String(\"us-west1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicNetwork, err := compute.NewNetwork(ctx, \"basic_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicKey, err := tags.NewTagKey(ctx, \"basic_key\", \u0026tags.TagKeyArgs{\n\t\t\tDescription: pulumi.String(\"For keyname resources.\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tPurpose: pulumi.String(\"GCE_FIREWALL\"),\n\t\t\tShortName: pulumi.String(\"tagkey\"),\n\t\t\tPurposeData: pulumi.StringMap{\n\t\t\t\t\"network\": basicNetwork.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"my-project-name/%v\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicValue, err := tags.NewTagValue(ctx, \"basic_value\", \u0026tags.TagValueArgs{\n\t\t\tDescription: pulumi.String(\"For valuename resources.\"),\n\t\t\tParent: basicKey.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"tagKeys/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tShortName: pulumi.String(\"tagvalue\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkFirewallPolicyRule(ctx, \"primary\", \u0026compute.RegionNetworkFirewallPolicyRuleArgs{\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tDescription: pulumi.String(\"This is a simple rule description\"),\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\tDisabled: pulumi.Bool(false),\n\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\tFirewallPolicy: basicRegionalNetworkFirewallPolicy.Name,\n\t\t\tPriority: pulumi.Int(1000),\n\t\t\tRegion: pulumi.String(\"us-west1\"),\n\t\t\tRuleName: pulumi.String(\"test-rule\"),\n\t\t\tTargetServiceAccounts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my@service-account.com\"),\n\t\t\t},\n\t\t\tMatch: \u0026compute.RegionNetworkFirewallPolicyRuleMatchArgs{\n\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.100.0.1/32\"),\n\t\t\t\t},\n\t\t\t\tSrcFqdns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t},\n\t\t\t\tSrcRegionCodes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t},\n\t\t\t\tSrcThreatIntelligences: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"iplist-known-malicious-ips\"),\n\t\t\t\t},\n\t\t\t\tLayer4Configs: compute.RegionNetworkFirewallPolicyRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\u0026compute.RegionNetworkFirewallPolicyRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\tIpProtocol: pulumi.String(\"all\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSrcSecureTags: compute.RegionNetworkFirewallPolicyRuleMatchSrcSecureTagArray{\n\t\t\t\t\t\u0026compute.RegionNetworkFirewallPolicyRuleMatchSrcSecureTagArgs{\n\t\t\t\t\t\tName: basicValue.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"tagValues/%v\", name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSrcAddressGroups: pulumi.StringArray{\n\t\t\t\t\tbasicRegionalNetworksecurityAddressGroup.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.networksecurity.AddressGroup;\nimport com.pulumi.gcp.networksecurity.AddressGroupArgs;\nimport com.pulumi.gcp.compute.RegionNetworkFirewallPolicy;\nimport com.pulumi.gcp.compute.RegionNetworkFirewallPolicyArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.tags.TagKey;\nimport com.pulumi.gcp.tags.TagKeyArgs;\nimport com.pulumi.gcp.tags.TagValue;\nimport com.pulumi.gcp.tags.TagValueArgs;\nimport com.pulumi.gcp.compute.RegionNetworkFirewallPolicyRule;\nimport com.pulumi.gcp.compute.RegionNetworkFirewallPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionNetworkFirewallPolicyRuleMatchArgs;\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 basicRegionalNetworksecurityAddressGroup = new AddressGroup(\"basicRegionalNetworksecurityAddressGroup\", AddressGroupArgs.builder()\n .name(\"policy\")\n .parent(\"projects/my-project-name\")\n .description(\"Sample regional networksecurity_address_group\")\n .location(\"us-west1\")\n .items(\"208.80.154.224/32\")\n .type(\"IPV4\")\n .capacity(100)\n .build());\n\n var basicRegionalNetworkFirewallPolicy = new RegionNetworkFirewallPolicy(\"basicRegionalNetworkFirewallPolicy\", RegionNetworkFirewallPolicyArgs.builder()\n .name(\"policy\")\n .description(\"Sample regional network firewall policy\")\n .project(\"my-project-name\")\n .region(\"us-west1\")\n .build());\n\n var basicNetwork = new Network(\"basicNetwork\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var basicKey = new TagKey(\"basicKey\", TagKeyArgs.builder()\n .description(\"For keyname resources.\")\n .parent(\"organizations/123456789\")\n .purpose(\"GCE_FIREWALL\")\n .shortName(\"tagkey\")\n .purposeData(Map.of(\"network\", basicNetwork.name().applyValue(name -\u003e String.format(\"my-project-name/%s\", name))))\n .build());\n\n var basicValue = new TagValue(\"basicValue\", TagValueArgs.builder()\n .description(\"For valuename resources.\")\n .parent(basicKey.name().applyValue(name -\u003e String.format(\"tagKeys/%s\", name)))\n .shortName(\"tagvalue\")\n .build());\n\n var primary = new RegionNetworkFirewallPolicyRule(\"primary\", RegionNetworkFirewallPolicyRuleArgs.builder()\n .action(\"allow\")\n .description(\"This is a simple rule description\")\n .direction(\"INGRESS\")\n .disabled(false)\n .enableLogging(true)\n .firewallPolicy(basicRegionalNetworkFirewallPolicy.name())\n .priority(1000)\n .region(\"us-west1\")\n .ruleName(\"test-rule\")\n .targetServiceAccounts(\"my@service-account.com\")\n .match(RegionNetworkFirewallPolicyRuleMatchArgs.builder()\n .srcIpRanges(\"10.100.0.1/32\")\n .srcFqdns(\"example.com\")\n .srcRegionCodes(\"US\")\n .srcThreatIntelligences(\"iplist-known-malicious-ips\")\n .layer4Configs(RegionNetworkFirewallPolicyRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"all\")\n .build())\n .srcSecureTags(RegionNetworkFirewallPolicyRuleMatchSrcSecureTagArgs.builder()\n .name(basicValue.name().applyValue(name -\u003e String.format(\"tagValues/%s\", name)))\n .build())\n .srcAddressGroups(basicRegionalNetworksecurityAddressGroup.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicRegionalNetworksecurityAddressGroup:\n type: gcp:networksecurity:AddressGroup\n name: basic_regional_networksecurity_address_group\n properties:\n name: policy\n parent: projects/my-project-name\n description: Sample regional networksecurity_address_group\n location: us-west1\n items:\n - 208.80.154.224/32\n type: IPV4\n capacity: 100\n basicRegionalNetworkFirewallPolicy:\n type: gcp:compute:RegionNetworkFirewallPolicy\n name: basic_regional_network_firewall_policy\n properties:\n name: policy\n description: Sample regional network firewall policy\n project: my-project-name\n region: us-west1\n primary:\n type: gcp:compute:RegionNetworkFirewallPolicyRule\n properties:\n action: allow\n description: This is a simple rule description\n direction: INGRESS\n disabled: false\n enableLogging: true\n firewallPolicy: ${basicRegionalNetworkFirewallPolicy.name}\n priority: 1000\n region: us-west1\n ruleName: test-rule\n targetServiceAccounts:\n - my@service-account.com\n match:\n srcIpRanges:\n - 10.100.0.1/32\n srcFqdns:\n - example.com\n srcRegionCodes:\n - US\n srcThreatIntelligences:\n - iplist-known-malicious-ips\n layer4Configs:\n - ipProtocol: all\n srcSecureTags:\n - name: tagValues/${basicValue.name}\n srcAddressGroups:\n - ${basicRegionalNetworksecurityAddressGroup.id}\n basicNetwork:\n type: gcp:compute:Network\n name: basic_network\n properties:\n name: network\n basicKey:\n type: gcp:tags:TagKey\n name: basic_key\n properties:\n description: For keyname resources.\n parent: organizations/123456789\n purpose: GCE_FIREWALL\n shortName: tagkey\n purposeData:\n network: my-project-name/${basicNetwork.name}\n basicValue:\n type: gcp:tags:TagValue\n name: basic_value\n properties:\n description: For valuename resources.\n parent: tagKeys/${basicKey.name}\n shortName: tagvalue\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkFirewallPolicyRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/firewallPolicies/{{firewall_policy}}/{{priority}}`\n\n* `{{project}}/{{region}}/{{firewall_policy}}/{{priority}}`\n\n* `{{region}}/{{firewall_policy}}/{{priority}}`\n\n* `{{firewall_policy}}/{{priority}}`\n\nWhen using the `pulumi import` command, NetworkFirewallPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionNetworkFirewallPolicyRule:RegionNetworkFirewallPolicyRule default projects/{{project}}/regions/{{region}}/firewallPolicies/{{firewall_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkFirewallPolicyRule:RegionNetworkFirewallPolicyRule default {{project}}/{{region}}/{{firewall_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkFirewallPolicyRule:RegionNetworkFirewallPolicyRule default {{region}}/{{firewall_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkFirewallPolicyRule:RegionNetworkFirewallPolicyRule default {{firewall_policy}}/{{priority}}\n```\n\n", "properties": { "action": { "type": "string", @@ -159314,7 +159314,7 @@ } }, "gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig": { - "description": "A config defined for a single managed instance that belongs to an instance group manager. It preserves the instance name\nacross instance group manager operations and can define stateful disks or metadata that are unique to the instance.\nThis resource works with regional instance group managers.\n\n\nTo get more information about RegionPerInstanceConfig, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/instance-groups/stateful-migs#per-instance_configs)\n\n## Example Usage\n\n### Stateful Rigm\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst igm_basic = new gcp.compute.InstanceTemplate(\"igm-basic\", {\n name: \"my-template\",\n machineType: \"e2-medium\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n disks: [{\n sourceImage: myImage.then(myImage =\u003e myImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n networkInterfaces: [{\n network: \"default\",\n }],\n serviceAccount: {\n scopes: [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n },\n});\nconst rigm = new gcp.compute.RegionInstanceGroupManager(\"rigm\", {\n description: \"Demo test instance group manager\",\n name: \"my-rigm\",\n versions: [{\n name: \"prod\",\n instanceTemplate: igm_basic.selfLink,\n }],\n updatePolicy: {\n type: \"OPPORTUNISTIC\",\n instanceRedistributionType: \"NONE\",\n minimalAction: \"RESTART\",\n },\n baseInstanceName: \"rigm\",\n region: \"us-central1\",\n targetSize: 2,\n});\nconst _default = new gcp.compute.Disk(\"default\", {\n name: \"my-disk-name\",\n type: \"pd-ssd\",\n zone: \"us-central1-a\",\n image: \"debian-11-bullseye-v20220719\",\n physicalBlockSizeBytes: 4096,\n});\nconst withDisk = new gcp.compute.RegionPerInstanceConfig(\"with_disk\", {\n region: igm.region,\n regionInstanceGroupManager: rigm.name,\n name: \"instance-1\",\n preservedState: {\n metadata: {\n foo: \"bar\",\n instance_template: igm_basic.selfLink,\n },\n disks: [{\n deviceName: \"my-stateful-disk\",\n source: _default.id,\n mode: \"READ_ONLY\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nigm_basic = gcp.compute.InstanceTemplate(\"igm-basic\",\n name=\"my-template\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n disks=[{\n \"sourceImage\": my_image.self_link,\n \"autoDelete\": True,\n \"boot\": True,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n service_account={\n \"scopes\": [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n })\nrigm = gcp.compute.RegionInstanceGroupManager(\"rigm\",\n description=\"Demo test instance group manager\",\n name=\"my-rigm\",\n versions=[{\n \"name\": \"prod\",\n \"instanceTemplate\": igm_basic.self_link,\n }],\n update_policy={\n \"type\": \"OPPORTUNISTIC\",\n \"instanceRedistributionType\": \"NONE\",\n \"minimalAction\": \"RESTART\",\n },\n base_instance_name=\"rigm\",\n region=\"us-central1\",\n target_size=2)\ndefault = gcp.compute.Disk(\"default\",\n name=\"my-disk-name\",\n type=\"pd-ssd\",\n zone=\"us-central1-a\",\n image=\"debian-11-bullseye-v20220719\",\n physical_block_size_bytes=4096)\nwith_disk = gcp.compute.RegionPerInstanceConfig(\"with_disk\",\n region=igm[\"region\"],\n region_instance_group_manager=rigm.name,\n name=\"instance-1\",\n preserved_state={\n \"metadata\": {\n \"foo\": \"bar\",\n \"instance_template\": igm_basic.self_link,\n },\n \"disks\": [{\n \"deviceName\": \"my-stateful-disk\",\n \"source\": default.id,\n \"mode\": \"READ_ONLY\",\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 myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var igm_basic = new Gcp.Compute.InstanceTemplate(\"igm-basic\", new()\n {\n Name = \"my-template\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Scopes = new[]\n {\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n },\n },\n });\n\n var rigm = new Gcp.Compute.RegionInstanceGroupManager(\"rigm\", new()\n {\n Description = \"Demo test instance group manager\",\n Name = \"my-rigm\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n Name = \"prod\",\n InstanceTemplate = igm_basic.SelfLink,\n },\n },\n UpdatePolicy = new Gcp.Compute.Inputs.RegionInstanceGroupManagerUpdatePolicyArgs\n {\n Type = \"OPPORTUNISTIC\",\n InstanceRedistributionType = \"NONE\",\n MinimalAction = \"RESTART\",\n },\n BaseInstanceName = \"rigm\",\n Region = \"us-central1\",\n TargetSize = 2,\n });\n\n var @default = new Gcp.Compute.Disk(\"default\", new()\n {\n Name = \"my-disk-name\",\n Type = \"pd-ssd\",\n Zone = \"us-central1-a\",\n Image = \"debian-11-bullseye-v20220719\",\n PhysicalBlockSizeBytes = 4096,\n });\n\n var withDisk = new Gcp.Compute.RegionPerInstanceConfig(\"with_disk\", new()\n {\n Region = igm.Region,\n RegionInstanceGroupManager = rigm.Name,\n Name = \"instance-1\",\n PreservedState = new Gcp.Compute.Inputs.RegionPerInstanceConfigPreservedStateArgs\n {\n Metadata = \n {\n { \"foo\", \"bar\" },\n { \"instance_template\", igm_basic.SelfLink },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.RegionPerInstanceConfigPreservedStateDiskArgs\n {\n DeviceName = \"my-stateful-disk\",\n Source = @default.Id,\n Mode = \"READ_ONLY\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceTemplate(ctx, \"igm-basic\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"my-template\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"userinfo-email\"),\n\t\t\t\t\tpulumi.String(\"compute-ro\"),\n\t\t\t\t\tpulumi.String(\"storage-ro\"),\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\trigm, err := compute.NewRegionInstanceGroupManager(ctx, \"rigm\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tDescription: pulumi.String(\"Demo test instance group manager\"),\n\t\t\tName: pulumi.String(\"my-rigm\"),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tName: pulumi.String(\"prod\"),\n\t\t\t\t\tInstanceTemplate: igm_basic.SelfLink,\n\t\t\t\t},\n\t\t\t},\n\t\t\tUpdatePolicy: \u0026compute.RegionInstanceGroupManagerUpdatePolicyArgs{\n\t\t\t\tType: pulumi.String(\"OPPORTUNISTIC\"),\n\t\t\t\tInstanceRedistributionType: pulumi.String(\"NONE\"),\n\t\t\t\tMinimalAction: pulumi.String(\"RESTART\"),\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"rigm\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTargetSize: pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewDisk(ctx, \"default\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"my-disk-name\"),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tImage: pulumi.String(\"debian-11-bullseye-v20220719\"),\n\t\t\tPhysicalBlockSizeBytes: pulumi.Int(4096),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionPerInstanceConfig(ctx, \"with_disk\", \u0026compute.RegionPerInstanceConfigArgs{\n\t\t\tRegion: pulumi.Any(igm.Region),\n\t\t\tRegionInstanceGroupManager: rigm.Name,\n\t\t\tName: pulumi.String(\"instance-1\"),\n\t\t\tPreservedState: \u0026compute.RegionPerInstanceConfigPreservedStateArgs{\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"instance_template\": igm_basic.SelfLink,\n\t\t\t\t},\n\t\t\t\tDisks: compute.RegionPerInstanceConfigPreservedStateDiskArray{\n\t\t\t\t\t\u0026compute.RegionPerInstanceConfigPreservedStateDiskArgs{\n\t\t\t\t\t\tDeviceName: pulumi.String(\"my-stateful-disk\"),\n\t\t\t\t\t\tSource: _default.ID(),\n\t\t\t\t\t\tMode: pulumi.String(\"READ_ONLY\"),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerUpdatePolicyArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.RegionPerInstanceConfig;\nimport com.pulumi.gcp.compute.RegionPerInstanceConfigArgs;\nimport com.pulumi.gcp.compute.inputs.RegionPerInstanceConfigPreservedStateArgs;\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 myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var igm_basic = new InstanceTemplate(\"igm-basic\", InstanceTemplateArgs.builder()\n .name(\"my-template\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .scopes( \n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\")\n .build())\n .build());\n\n var rigm = new RegionInstanceGroupManager(\"rigm\", RegionInstanceGroupManagerArgs.builder()\n .description(\"Demo test instance group manager\")\n .name(\"my-rigm\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .name(\"prod\")\n .instanceTemplate(igm_basic.selfLink())\n .build())\n .updatePolicy(RegionInstanceGroupManagerUpdatePolicyArgs.builder()\n .type(\"OPPORTUNISTIC\")\n .instanceRedistributionType(\"NONE\")\n .minimalAction(\"RESTART\")\n .build())\n .baseInstanceName(\"rigm\")\n .region(\"us-central1\")\n .targetSize(2)\n .build());\n\n var default_ = new Disk(\"default\", DiskArgs.builder()\n .name(\"my-disk-name\")\n .type(\"pd-ssd\")\n .zone(\"us-central1-a\")\n .image(\"debian-11-bullseye-v20220719\")\n .physicalBlockSizeBytes(4096)\n .build());\n\n var withDisk = new RegionPerInstanceConfig(\"withDisk\", RegionPerInstanceConfigArgs.builder()\n .region(igm.region())\n .regionInstanceGroupManager(rigm.name())\n .name(\"instance-1\")\n .preservedState(RegionPerInstanceConfigPreservedStateArgs.builder()\n .metadata(Map.ofEntries(\n Map.entry(\"foo\", \"bar\"),\n Map.entry(\"instance_template\", igm_basic.selfLink())\n ))\n .disks(RegionPerInstanceConfigPreservedStateDiskArgs.builder()\n .deviceName(\"my-stateful-disk\")\n .source(default_.id())\n .mode(\"READ_ONLY\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n igm-basic:\n type: gcp:compute:InstanceTemplate\n properties:\n name: my-template\n machineType: e2-medium\n canIpForward: false\n tags:\n - foo\n - bar\n disks:\n - sourceImage: ${myImage.selfLink}\n autoDelete: true\n boot: true\n networkInterfaces:\n - network: default\n serviceAccount:\n scopes:\n - userinfo-email\n - compute-ro\n - storage-ro\n rigm:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n description: Demo test instance group manager\n name: my-rigm\n versions:\n - name: prod\n instanceTemplate: ${[\"igm-basic\"].selfLink}\n updatePolicy:\n type: OPPORTUNISTIC\n instanceRedistributionType: NONE\n minimalAction: RESTART\n baseInstanceName: rigm\n region: us-central1\n targetSize: 2\n default:\n type: gcp:compute:Disk\n properties:\n name: my-disk-name\n type: pd-ssd\n zone: us-central1-a\n image: debian-11-bullseye-v20220719\n physicalBlockSizeBytes: 4096\n withDisk:\n type: gcp:compute:RegionPerInstanceConfig\n name: with_disk\n properties:\n region: ${igm.region}\n regionInstanceGroupManager: ${rigm.name}\n name: instance-1\n preservedState:\n metadata:\n foo: bar\n instance_template: ${[\"igm-basic\"].selfLink}\n disks:\n - deviceName: my-stateful-disk\n source: ${default.id}\n mode: READ_ONLY\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionPerInstanceConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/instanceGroupManagers/{{region_instance_group_manager}}/{{name}}`\n\n* `{{project}}/{{region}}/{{region_instance_group_manager}}/{{name}}`\n\n* `{{region}}/{{region_instance_group_manager}}/{{name}}`\n\n* `{{region_instance_group_manager}}/{{name}}`\n\nWhen using the `pulumi import` command, RegionPerInstanceConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig default projects/{{project}}/regions/{{region}}/instanceGroupManagers/{{region_instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig default {{project}}/{{region}}/{{region_instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig default {{region}}/{{region_instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig default {{region_instance_group_manager}}/{{name}}\n```\n\n", + "description": "A config defined for a single managed instance that belongs to an instance group manager. It preserves the instance name\nacross instance group manager operations and can define stateful disks or metadata that are unique to the instance.\nThis resource works with regional instance group managers.\n\n\nTo get more information about RegionPerInstanceConfig, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/instance-groups/stateful-migs#per-instance_configs)\n\n## Example Usage\n\n### Stateful Rigm\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst igm_basic = new gcp.compute.InstanceTemplate(\"igm-basic\", {\n name: \"my-template\",\n machineType: \"e2-medium\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n disks: [{\n sourceImage: myImage.then(myImage =\u003e myImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n networkInterfaces: [{\n network: \"default\",\n }],\n serviceAccount: {\n scopes: [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n },\n});\nconst rigm = new gcp.compute.RegionInstanceGroupManager(\"rigm\", {\n description: \"Demo test instance group manager\",\n name: \"my-rigm\",\n versions: [{\n name: \"prod\",\n instanceTemplate: igm_basic.selfLink,\n }],\n updatePolicy: {\n type: \"OPPORTUNISTIC\",\n instanceRedistributionType: \"NONE\",\n minimalAction: \"RESTART\",\n },\n baseInstanceName: \"rigm\",\n region: \"us-central1\",\n targetSize: 2,\n});\nconst _default = new gcp.compute.Disk(\"default\", {\n name: \"my-disk-name\",\n type: \"pd-ssd\",\n zone: \"us-central1-a\",\n image: \"debian-11-bullseye-v20220719\",\n physicalBlockSizeBytes: 4096,\n});\nconst withDisk = new gcp.compute.RegionPerInstanceConfig(\"with_disk\", {\n region: igm.region,\n regionInstanceGroupManager: rigm.name,\n name: \"instance-1\",\n preservedState: {\n metadata: {\n foo: \"bar\",\n instance_template: igm_basic.selfLink,\n },\n disks: [{\n deviceName: \"my-stateful-disk\",\n source: _default.id,\n mode: \"READ_ONLY\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nigm_basic = gcp.compute.InstanceTemplate(\"igm-basic\",\n name=\"my-template\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n disks=[{\n \"source_image\": my_image.self_link,\n \"auto_delete\": True,\n \"boot\": True,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n service_account={\n \"scopes\": [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n })\nrigm = gcp.compute.RegionInstanceGroupManager(\"rigm\",\n description=\"Demo test instance group manager\",\n name=\"my-rigm\",\n versions=[{\n \"name\": \"prod\",\n \"instance_template\": igm_basic.self_link,\n }],\n update_policy={\n \"type\": \"OPPORTUNISTIC\",\n \"instance_redistribution_type\": \"NONE\",\n \"minimal_action\": \"RESTART\",\n },\n base_instance_name=\"rigm\",\n region=\"us-central1\",\n target_size=2)\ndefault = gcp.compute.Disk(\"default\",\n name=\"my-disk-name\",\n type=\"pd-ssd\",\n zone=\"us-central1-a\",\n image=\"debian-11-bullseye-v20220719\",\n physical_block_size_bytes=4096)\nwith_disk = gcp.compute.RegionPerInstanceConfig(\"with_disk\",\n region=igm[\"region\"],\n region_instance_group_manager=rigm.name,\n name=\"instance-1\",\n preserved_state={\n \"metadata\": {\n \"foo\": \"bar\",\n \"instance_template\": igm_basic.self_link,\n },\n \"disks\": [{\n \"device_name\": \"my-stateful-disk\",\n \"source\": default.id,\n \"mode\": \"READ_ONLY\",\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 myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var igm_basic = new Gcp.Compute.InstanceTemplate(\"igm-basic\", new()\n {\n Name = \"my-template\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Scopes = new[]\n {\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n },\n },\n });\n\n var rigm = new Gcp.Compute.RegionInstanceGroupManager(\"rigm\", new()\n {\n Description = \"Demo test instance group manager\",\n Name = \"my-rigm\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n Name = \"prod\",\n InstanceTemplate = igm_basic.SelfLink,\n },\n },\n UpdatePolicy = new Gcp.Compute.Inputs.RegionInstanceGroupManagerUpdatePolicyArgs\n {\n Type = \"OPPORTUNISTIC\",\n InstanceRedistributionType = \"NONE\",\n MinimalAction = \"RESTART\",\n },\n BaseInstanceName = \"rigm\",\n Region = \"us-central1\",\n TargetSize = 2,\n });\n\n var @default = new Gcp.Compute.Disk(\"default\", new()\n {\n Name = \"my-disk-name\",\n Type = \"pd-ssd\",\n Zone = \"us-central1-a\",\n Image = \"debian-11-bullseye-v20220719\",\n PhysicalBlockSizeBytes = 4096,\n });\n\n var withDisk = new Gcp.Compute.RegionPerInstanceConfig(\"with_disk\", new()\n {\n Region = igm.Region,\n RegionInstanceGroupManager = rigm.Name,\n Name = \"instance-1\",\n PreservedState = new Gcp.Compute.Inputs.RegionPerInstanceConfigPreservedStateArgs\n {\n Metadata = \n {\n { \"foo\", \"bar\" },\n { \"instance_template\", igm_basic.SelfLink },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.RegionPerInstanceConfigPreservedStateDiskArgs\n {\n DeviceName = \"my-stateful-disk\",\n Source = @default.Id,\n Mode = \"READ_ONLY\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceTemplate(ctx, \"igm-basic\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"my-template\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"userinfo-email\"),\n\t\t\t\t\tpulumi.String(\"compute-ro\"),\n\t\t\t\t\tpulumi.String(\"storage-ro\"),\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\trigm, err := compute.NewRegionInstanceGroupManager(ctx, \"rigm\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tDescription: pulumi.String(\"Demo test instance group manager\"),\n\t\t\tName: pulumi.String(\"my-rigm\"),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tName: pulumi.String(\"prod\"),\n\t\t\t\t\tInstanceTemplate: igm_basic.SelfLink,\n\t\t\t\t},\n\t\t\t},\n\t\t\tUpdatePolicy: \u0026compute.RegionInstanceGroupManagerUpdatePolicyArgs{\n\t\t\t\tType: pulumi.String(\"OPPORTUNISTIC\"),\n\t\t\t\tInstanceRedistributionType: pulumi.String(\"NONE\"),\n\t\t\t\tMinimalAction: pulumi.String(\"RESTART\"),\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"rigm\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTargetSize: pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewDisk(ctx, \"default\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"my-disk-name\"),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tImage: pulumi.String(\"debian-11-bullseye-v20220719\"),\n\t\t\tPhysicalBlockSizeBytes: pulumi.Int(4096),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionPerInstanceConfig(ctx, \"with_disk\", \u0026compute.RegionPerInstanceConfigArgs{\n\t\t\tRegion: pulumi.Any(igm.Region),\n\t\t\tRegionInstanceGroupManager: rigm.Name,\n\t\t\tName: pulumi.String(\"instance-1\"),\n\t\t\tPreservedState: \u0026compute.RegionPerInstanceConfigPreservedStateArgs{\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"instance_template\": igm_basic.SelfLink,\n\t\t\t\t},\n\t\t\t\tDisks: compute.RegionPerInstanceConfigPreservedStateDiskArray{\n\t\t\t\t\t\u0026compute.RegionPerInstanceConfigPreservedStateDiskArgs{\n\t\t\t\t\t\tDeviceName: pulumi.String(\"my-stateful-disk\"),\n\t\t\t\t\t\tSource: _default.ID(),\n\t\t\t\t\t\tMode: pulumi.String(\"READ_ONLY\"),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerUpdatePolicyArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.RegionPerInstanceConfig;\nimport com.pulumi.gcp.compute.RegionPerInstanceConfigArgs;\nimport com.pulumi.gcp.compute.inputs.RegionPerInstanceConfigPreservedStateArgs;\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 myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var igm_basic = new InstanceTemplate(\"igm-basic\", InstanceTemplateArgs.builder()\n .name(\"my-template\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .scopes( \n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\")\n .build())\n .build());\n\n var rigm = new RegionInstanceGroupManager(\"rigm\", RegionInstanceGroupManagerArgs.builder()\n .description(\"Demo test instance group manager\")\n .name(\"my-rigm\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .name(\"prod\")\n .instanceTemplate(igm_basic.selfLink())\n .build())\n .updatePolicy(RegionInstanceGroupManagerUpdatePolicyArgs.builder()\n .type(\"OPPORTUNISTIC\")\n .instanceRedistributionType(\"NONE\")\n .minimalAction(\"RESTART\")\n .build())\n .baseInstanceName(\"rigm\")\n .region(\"us-central1\")\n .targetSize(2)\n .build());\n\n var default_ = new Disk(\"default\", DiskArgs.builder()\n .name(\"my-disk-name\")\n .type(\"pd-ssd\")\n .zone(\"us-central1-a\")\n .image(\"debian-11-bullseye-v20220719\")\n .physicalBlockSizeBytes(4096)\n .build());\n\n var withDisk = new RegionPerInstanceConfig(\"withDisk\", RegionPerInstanceConfigArgs.builder()\n .region(igm.region())\n .regionInstanceGroupManager(rigm.name())\n .name(\"instance-1\")\n .preservedState(RegionPerInstanceConfigPreservedStateArgs.builder()\n .metadata(Map.ofEntries(\n Map.entry(\"foo\", \"bar\"),\n Map.entry(\"instance_template\", igm_basic.selfLink())\n ))\n .disks(RegionPerInstanceConfigPreservedStateDiskArgs.builder()\n .deviceName(\"my-stateful-disk\")\n .source(default_.id())\n .mode(\"READ_ONLY\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n igm-basic:\n type: gcp:compute:InstanceTemplate\n properties:\n name: my-template\n machineType: e2-medium\n canIpForward: false\n tags:\n - foo\n - bar\n disks:\n - sourceImage: ${myImage.selfLink}\n autoDelete: true\n boot: true\n networkInterfaces:\n - network: default\n serviceAccount:\n scopes:\n - userinfo-email\n - compute-ro\n - storage-ro\n rigm:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n description: Demo test instance group manager\n name: my-rigm\n versions:\n - name: prod\n instanceTemplate: ${[\"igm-basic\"].selfLink}\n updatePolicy:\n type: OPPORTUNISTIC\n instanceRedistributionType: NONE\n minimalAction: RESTART\n baseInstanceName: rigm\n region: us-central1\n targetSize: 2\n default:\n type: gcp:compute:Disk\n properties:\n name: my-disk-name\n type: pd-ssd\n zone: us-central1-a\n image: debian-11-bullseye-v20220719\n physicalBlockSizeBytes: 4096\n withDisk:\n type: gcp:compute:RegionPerInstanceConfig\n name: with_disk\n properties:\n region: ${igm.region}\n regionInstanceGroupManager: ${rigm.name}\n name: instance-1\n preservedState:\n metadata:\n foo: bar\n instance_template: ${[\"igm-basic\"].selfLink}\n disks:\n - deviceName: my-stateful-disk\n source: ${default.id}\n mode: READ_ONLY\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionPerInstanceConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/instanceGroupManagers/{{region_instance_group_manager}}/{{name}}`\n\n* `{{project}}/{{region}}/{{region_instance_group_manager}}/{{name}}`\n\n* `{{region}}/{{region_instance_group_manager}}/{{name}}`\n\n* `{{region_instance_group_manager}}/{{name}}`\n\nWhen using the `pulumi import` command, RegionPerInstanceConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig default projects/{{project}}/regions/{{region}}/instanceGroupManagers/{{region_instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig default {{project}}/{{region}}/{{region_instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig default {{region}}/{{region_instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig default {{region_instance_group_manager}}/{{name}}\n```\n\n", "properties": { "minimalAction": { "type": "string", @@ -159452,7 +159452,7 @@ } }, "gcp:compute/regionSecurityPolicy:RegionSecurityPolicy": { - "description": "## Example Usage\n\n### Region Security Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"my-sec-policy-basic\",\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nregion_sec_policy_basic = gcp.compute.RegionSecurityPolicy(\"region-sec-policy-basic\",\n name=\"my-sec-policy-basic\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\")\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 Name = \"my-sec-policy-basic\",\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-sec-policy-basic\"),\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\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.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\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 .name(\"my-sec-policy-basic\")\n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n region-sec-policy-basic:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n name: my-sec-policy-basic\n description: basic region security policy\n type: CLOUD_ARMOR\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Security Policy With Ddos Protection Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"my-sec-policy-ddos-protection\",\n description: \"with ddos protection config\",\n type: \"CLOUD_ARMOR_NETWORK\",\n ddosProtectionConfig: {\n ddosProtection: \"ADVANCED_PREVIEW\",\n },\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 name=\"my-sec-policy-ddos-protection\",\n description=\"with ddos protection config\",\n type=\"CLOUD_ARMOR_NETWORK\",\n ddos_protection_config={\n \"ddosProtection\": \"ADVANCED_PREVIEW\",\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 region_sec_policy_ddos_protection = new Gcp.Compute.RegionSecurityPolicy(\"region-sec-policy-ddos-protection\", new()\n {\n Name = \"my-sec-policy-ddos-protection\",\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-sec-policy-ddos-protection\"),\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})\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 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 .name(\"my-sec-policy-ddos-protection\")\n .description(\"with ddos protection config\")\n .type(\"CLOUD_ARMOR_NETWORK\")\n .ddosProtectionConfig(RegionSecurityPolicyDdosProtectionConfigArgs.builder()\n .ddosProtection(\"ADVANCED_PREVIEW\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n region-sec-policy-ddos-protection:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n name: my-sec-policy-ddos-protection\n description: with ddos protection config\n type: CLOUD_ARMOR_NETWORK\n ddosProtectionConfig:\n ddosProtection: ADVANCED_PREVIEW\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Security Policy With User Defined Fields\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"my-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```\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 name=\"my-sec-policy-user-defined-fields\",\n description=\"with user defined fields\",\n type=\"CLOUD_ARMOR_NETWORK\",\n user_defined_fields=[\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```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 Name = \"my-sec-policy-user-defined-fields\",\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-sec-policy-user-defined-fields\"),\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})\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 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 .name(\"my-sec-policy-user-defined-fields\")\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());\n\n }\n}\n```\n```yaml\nresources:\n region-sec-policy-user-defined-fields:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n name: my-sec-policy-user-defined-fields\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```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionSecurityPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/securityPolicies/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionSecurityPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicy:RegionSecurityPolicy default projects/{{project}}/regions/{{region}}/securityPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicy:RegionSecurityPolicy default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicy:RegionSecurityPolicy default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicy:RegionSecurityPolicy default {{name}}\n```\n\n", + "description": "## Example Usage\n\n### Region Security Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"my-sec-policy-basic\",\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nregion_sec_policy_basic = gcp.compute.RegionSecurityPolicy(\"region-sec-policy-basic\",\n name=\"my-sec-policy-basic\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\")\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 Name = \"my-sec-policy-basic\",\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-sec-policy-basic\"),\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\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.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\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 .name(\"my-sec-policy-basic\")\n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n region-sec-policy-basic:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n name: my-sec-policy-basic\n description: basic region security policy\n type: CLOUD_ARMOR\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Security Policy With Ddos Protection Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"my-sec-policy-ddos-protection\",\n description: \"with ddos protection config\",\n type: \"CLOUD_ARMOR_NETWORK\",\n ddosProtectionConfig: {\n ddosProtection: \"ADVANCED_PREVIEW\",\n },\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 name=\"my-sec-policy-ddos-protection\",\n description=\"with ddos protection config\",\n type=\"CLOUD_ARMOR_NETWORK\",\n ddos_protection_config={\n \"ddos_protection\": \"ADVANCED_PREVIEW\",\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 region_sec_policy_ddos_protection = new Gcp.Compute.RegionSecurityPolicy(\"region-sec-policy-ddos-protection\", new()\n {\n Name = \"my-sec-policy-ddos-protection\",\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-sec-policy-ddos-protection\"),\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})\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 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 .name(\"my-sec-policy-ddos-protection\")\n .description(\"with ddos protection config\")\n .type(\"CLOUD_ARMOR_NETWORK\")\n .ddosProtectionConfig(RegionSecurityPolicyDdosProtectionConfigArgs.builder()\n .ddosProtection(\"ADVANCED_PREVIEW\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n region-sec-policy-ddos-protection:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n name: my-sec-policy-ddos-protection\n description: with ddos protection config\n type: CLOUD_ARMOR_NETWORK\n ddosProtectionConfig:\n ddosProtection: ADVANCED_PREVIEW\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Security Policy With User Defined Fields\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"my-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```\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 name=\"my-sec-policy-user-defined-fields\",\n description=\"with user defined fields\",\n type=\"CLOUD_ARMOR_NETWORK\",\n user_defined_fields=[\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```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 Name = \"my-sec-policy-user-defined-fields\",\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-sec-policy-user-defined-fields\"),\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})\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 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 .name(\"my-sec-policy-user-defined-fields\")\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());\n\n }\n}\n```\n```yaml\nresources:\n region-sec-policy-user-defined-fields:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n name: my-sec-policy-user-defined-fields\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```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionSecurityPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/securityPolicies/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionSecurityPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicy:RegionSecurityPolicy default projects/{{project}}/regions/{{region}}/securityPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicy:RegionSecurityPolicy default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicy:RegionSecurityPolicy default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicy:RegionSecurityPolicy default {{name}}\n```\n\n", "properties": { "ddosProtectionConfig": { "$ref": "#/types/gcp:compute/RegionSecurityPolicyDdosProtectionConfig:RegionSecurityPolicyDdosProtectionConfig", @@ -159607,7 +159607,7 @@ } }, "gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule": { - "description": "## Example Usage\n\n### Region Security Policy Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"policyruletest\",\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRule = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule\", {\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```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionSecurityPolicy(\"default\",\n region=\"us-west2\",\n name=\"policyruletest\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule = gcp.compute.RegionSecurityPolicyRule(\"policy_rule\",\n region=\"us-west2\",\n security_policy=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```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 Name = \"policyruletest\",\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRule = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule\", 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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"policyruletest\"),\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policy_rule\", \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})\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 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 .name(\"policyruletest\")\n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\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());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n name: policyruletest\n description: basic region security policy\n type: CLOUD_ARMOR\n policyRule:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule\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```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Security Policy Rule Multiple Rules\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"policywithmultiplerules\",\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRuleOne = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule_one\", {\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});\nconst policyRuleTwo = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule_two\", {\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```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionSecurityPolicy(\"default\",\n region=\"us-west2\",\n name=\"policywithmultiplerules\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule_one = gcp.compute.RegionSecurityPolicyRule(\"policy_rule_one\",\n region=\"us-west2\",\n security_policy=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)\npolicy_rule_two = gcp.compute.RegionSecurityPolicyRule(\"policy_rule_two\",\n region=\"us-west2\",\n security_policy=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```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 Name = \"policywithmultiplerules\",\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRuleOne = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule_one\", 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 });\n\n var policyRuleTwo = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule_two\", 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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"policywithmultiplerules\"),\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policy_rule_one\", \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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policy_rule_two\", \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})\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 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 .name(\"policywithmultiplerules\")\n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\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());\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());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n name: policywithmultiplerules\n description: basic region security policy\n type: CLOUD_ARMOR\n policyRuleOne:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule_one\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 policyRuleTwo:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule_two\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```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Security Policy Rule With Preconfigured Waf Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionSecurityPolicy(\"default\", {\n region: \"asia-southeast1\",\n name: \"policyruletest\",\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRule = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule\", {\n region: \"asia-southeast1\",\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 preconfiguredWafConfig: {\n exclusions: [\n {\n requestUris: [{\n operator: \"STARTS_WITH\",\n value: \"/admin\",\n }],\n targetRuleSet: \"rce-stable\",\n },\n {\n requestQueryParams: [\n {\n operator: \"CONTAINS\",\n value: \"password\",\n },\n {\n operator: \"STARTS_WITH\",\n value: \"freeform\",\n },\n {\n operator: \"EQUALS\",\n value: \"description\",\n },\n ],\n targetRuleSet: \"xss-stable\",\n targetRuleIds: [\n \"owasp-crs-v030001-id941330-xss\",\n \"owasp-crs-v030001-id941340-xss\",\n ],\n },\n ],\n },\n action: \"allow\",\n preview: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionSecurityPolicy(\"default\",\n region=\"asia-southeast1\",\n name=\"policyruletest\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule = gcp.compute.RegionSecurityPolicyRule(\"policy_rule\",\n region=\"asia-southeast1\",\n security_policy=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 preconfigured_waf_config={\n \"exclusions\": [\n {\n \"requestUris\": [{\n \"operator\": \"STARTS_WITH\",\n \"value\": \"/admin\",\n }],\n \"targetRuleSet\": \"rce-stable\",\n },\n {\n \"requestQueryParams\": [\n {\n \"operator\": \"CONTAINS\",\n \"value\": \"password\",\n },\n {\n \"operator\": \"STARTS_WITH\",\n \"value\": \"freeform\",\n },\n {\n \"operator\": \"EQUALS\",\n \"value\": \"description\",\n },\n ],\n \"targetRuleSet\": \"xss-stable\",\n \"targetRuleIds\": [\n \"owasp-crs-v030001-id941330-xss\",\n \"owasp-crs-v030001-id941340-xss\",\n ],\n },\n ],\n },\n action=\"allow\",\n preview=True)\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 = \"asia-southeast1\",\n Name = \"policyruletest\",\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRule = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule\", new()\n {\n Region = \"asia-southeast1\",\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 PreconfiguredWafConfig = new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigArgs\n {\n Exclusions = new[]\n {\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs\n {\n RequestUris = new[]\n {\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArgs\n {\n Operator = \"STARTS_WITH\",\n Value = \"/admin\",\n },\n },\n TargetRuleSet = \"rce-stable\",\n },\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs\n {\n RequestQueryParams = new[]\n {\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs\n {\n Operator = \"CONTAINS\",\n Value = \"password\",\n },\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs\n {\n Operator = \"STARTS_WITH\",\n Value = \"freeform\",\n },\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs\n {\n Operator = \"EQUALS\",\n Value = \"description\",\n },\n },\n TargetRuleSet = \"xss-stable\",\n TargetRuleIds = new[]\n {\n \"owasp-crs-v030001-id941330-xss\",\n \"owasp-crs-v030001-id941340-xss\",\n },\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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(\"asia-southeast1\"),\n\t\t\tName: pulumi.String(\"policyruletest\"),\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policy_rule\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"asia-southeast1\"),\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\tPreconfiguredWafConfig: \u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigArgs{\n\t\t\t\tExclusions: compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArray{\n\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs{\n\t\t\t\t\t\tRequestUris: compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArray{\n\t\t\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArgs{\n\t\t\t\t\t\t\t\tOperator: pulumi.String(\"STARTS_WITH\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"/admin\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetRuleSet: pulumi.String(\"rce-stable\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs{\n\t\t\t\t\t\tRequestQueryParams: compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArray{\n\t\t\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs{\n\t\t\t\t\t\t\t\tOperator: pulumi.String(\"CONTAINS\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"password\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs{\n\t\t\t\t\t\t\t\tOperator: pulumi.String(\"STARTS_WITH\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"freeform\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs{\n\t\t\t\t\t\t\t\tOperator: pulumi.String(\"EQUALS\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"description\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetRuleSet: pulumi.String(\"xss-stable\"),\n\t\t\t\t\t\tTargetRuleIds: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"owasp-crs-v030001-id941330-xss\"),\n\t\t\t\t\t\t\tpulumi.String(\"owasp-crs-v030001-id941340-xss\"),\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})\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.gcp.compute.inputs.RegionSecurityPolicyRulePreconfiguredWafConfigArgs;\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(\"asia-southeast1\")\n .name(\"policyruletest\")\n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var policyRule = new RegionSecurityPolicyRule(\"policyRule\", RegionSecurityPolicyRuleArgs.builder()\n .region(\"asia-southeast1\")\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 .preconfiguredWafConfig(RegionSecurityPolicyRulePreconfiguredWafConfigArgs.builder()\n .exclusions( \n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs.builder()\n .requestUris(RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArgs.builder()\n .operator(\"STARTS_WITH\")\n .value(\"/admin\")\n .build())\n .targetRuleSet(\"rce-stable\")\n .build(),\n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs.builder()\n .requestQueryParams( \n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs.builder()\n .operator(\"CONTAINS\")\n .value(\"password\")\n .build(),\n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs.builder()\n .operator(\"STARTS_WITH\")\n .value(\"freeform\")\n .build(),\n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs.builder()\n .operator(\"EQUALS\")\n .value(\"description\")\n .build())\n .targetRuleSet(\"xss-stable\")\n .targetRuleIds( \n \"owasp-crs-v030001-id941330-xss\",\n \"owasp-crs-v030001-id941340-xss\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: asia-southeast1\n name: policyruletest\n description: basic region security policy\n type: CLOUD_ARMOR\n policyRule:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule\n properties:\n region: asia-southeast1\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 preconfiguredWafConfig:\n exclusions:\n - requestUris:\n - operator: STARTS_WITH\n value: /admin\n targetRuleSet: rce-stable\n - requestQueryParams:\n - operator: CONTAINS\n value: password\n - operator: STARTS_WITH\n value: freeform\n - operator: EQUALS\n value: description\n targetRuleSet: xss-stable\n targetRuleIds:\n - owasp-crs-v030001-id941330-xss\n - owasp-crs-v030001-id941340-xss\n action: allow\n preview: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Security Policy Rule With Network Match\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"policyddosprotection\",\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});\nconst edgeSecService = new gcp.compute.NetworkEdgeSecurityService(\"edge_sec_service\", {\n region: \"us-west2\",\n name: \"edgesecservice\",\n description: \"linking policy to edge security service\",\n securityPolicy: policyddosprotection.selfLink,\n});\n// Add the desired policy and custom rule.\nconst policynetworkmatch = new gcp.compute.RegionSecurityPolicy(\"policynetworkmatch\", {\n region: \"us-west2\",\n name: \"policyfornetworkmatch\",\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 dependsOn: [edgeSecService],\n});\nconst policyRuleNetworkMatch = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule_network_match\", {\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```\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 name=\"policyddosprotection\",\n description=\"policy for activating network DDoS protection for the desired region\",\n type=\"CLOUD_ARMOR_NETWORK\",\n ddos_protection_config={\n \"ddosProtection\": \"ADVANCED_PREVIEW\",\n })\nedge_sec_service = gcp.compute.NetworkEdgeSecurityService(\"edge_sec_service\",\n region=\"us-west2\",\n name=\"edgesecservice\",\n description=\"linking policy to edge security service\",\n security_policy=policyddosprotection.self_link)\n# Add the desired policy and custom rule.\npolicynetworkmatch = gcp.compute.RegionSecurityPolicy(\"policynetworkmatch\",\n region=\"us-west2\",\n name=\"policyfornetworkmatch\",\n description=\"region security policy for network match\",\n type=\"CLOUD_ARMOR_NETWORK\",\n user_defined_fields=[{\n \"name\": \"SIG1_AT_0\",\n \"base\": \"TCP\",\n \"offset\": 8,\n \"size\": 2,\n \"mask\": \"0x8F00\",\n }],\n opts = pulumi.ResourceOptions(depends_on=[edge_sec_service]))\npolicy_rule_network_match = gcp.compute.RegionSecurityPolicyRule(\"policy_rule_network_match\",\n region=\"us-west2\",\n security_policy=policynetworkmatch.name,\n description=\"custom rule for network match\",\n priority=100,\n network_match={\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```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 Name = \"policyddosprotection\",\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 });\n\n var edgeSecService = new Gcp.Compute.NetworkEdgeSecurityService(\"edge_sec_service\", new()\n {\n Region = \"us-west2\",\n Name = \"edgesecservice\",\n Description = \"linking policy to edge security service\",\n SecurityPolicy = policyddosprotection.SelfLink,\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 Name = \"policyfornetworkmatch\",\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 DependsOn =\n {\n edgeSecService,\n },\n });\n\n var policyRuleNetworkMatch = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule_network_match\", 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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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// First activate advanced network DDoS protection for the desired region\n\t\tpolicyddosprotection, err := compute.NewRegionSecurityPolicy(ctx, \"policyddosprotection\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"policyddosprotection\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tedgeSecService, err := compute.NewNetworkEdgeSecurityService(ctx, \"edge_sec_service\", \u0026compute.NetworkEdgeSecurityServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"edgesecservice\"),\n\t\t\tDescription: pulumi.String(\"linking policy to edge security service\"),\n\t\t\tSecurityPolicy: policyddosprotection.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Add the desired policy and custom rule.\n\t\tpolicynetworkmatch, err := compute.NewRegionSecurityPolicy(ctx, \"policynetworkmatch\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"policyfornetworkmatch\"),\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.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, \"policy_rule_network_match\", \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})\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 // First activate advanced network DDoS protection for the desired region\n var policyddosprotection = new RegionSecurityPolicy(\"policyddosprotection\", RegionSecurityPolicyArgs.builder()\n .region(\"us-west2\")\n .name(\"policyddosprotection\")\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());\n\n var edgeSecService = new NetworkEdgeSecurityService(\"edgeSecService\", NetworkEdgeSecurityServiceArgs.builder()\n .region(\"us-west2\")\n .name(\"edgesecservice\")\n .description(\"linking policy to edge security service\")\n .securityPolicy(policyddosprotection.selfLink())\n .build());\n\n // Add the desired policy and custom rule.\n var policynetworkmatch = new RegionSecurityPolicy(\"policynetworkmatch\", RegionSecurityPolicyArgs.builder()\n .region(\"us-west2\")\n .name(\"policyfornetworkmatch\")\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 .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());\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 name: policyddosprotection\n description: policy for activating network DDoS protection for the desired region\n type: CLOUD_ARMOR_NETWORK\n ddosProtectionConfig:\n ddosProtection: ADVANCED_PREVIEW\n edgeSecService:\n type: gcp:compute:NetworkEdgeSecurityService\n name: edge_sec_service\n properties:\n region: us-west2\n name: edgesecservice\n description: linking policy to edge security service\n securityPolicy: ${policyddosprotection.selfLink}\n # Add the desired policy and custom rule.\n policynetworkmatch:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n name: policyfornetworkmatch\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 dependson:\n - ${edgeSecService}\n policyRuleNetworkMatch:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule_network_match\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```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionSecurityPolicyRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/securityPolicies/{{security_policy}}/priority/{{priority}}`\n\n* `{{project}}/{{region}}/{{security_policy}}/{{priority}}`\n\n* `{{region}}/{{security_policy}}/{{priority}}`\n\n* `{{security_policy}}/{{priority}}`\n\nWhen using the `pulumi import` command, RegionSecurityPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default projects/{{project}}/regions/{{region}}/securityPolicies/{{security_policy}}/priority/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{project}}/{{region}}/{{security_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{region}}/{{security_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{security_policy}}/{{priority}}\n```\n\n", + "description": "## Example Usage\n\n### Region Security Policy Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"policyruletest\",\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRule = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule\", {\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```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionSecurityPolicy(\"default\",\n region=\"us-west2\",\n name=\"policyruletest\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule = gcp.compute.RegionSecurityPolicyRule(\"policy_rule\",\n region=\"us-west2\",\n security_policy=default.name,\n description=\"new rule\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n action=\"allow\",\n preview=True)\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 Name = \"policyruletest\",\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRule = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule\", 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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"policyruletest\"),\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policy_rule\", \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})\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 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 .name(\"policyruletest\")\n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\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());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n name: policyruletest\n description: basic region security policy\n type: CLOUD_ARMOR\n policyRule:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule\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```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Security Policy Rule Multiple Rules\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"policywithmultiplerules\",\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRuleOne = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule_one\", {\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});\nconst policyRuleTwo = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule_two\", {\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```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionSecurityPolicy(\"default\",\n region=\"us-west2\",\n name=\"policywithmultiplerules\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule_one = gcp.compute.RegionSecurityPolicyRule(\"policy_rule_one\",\n region=\"us-west2\",\n security_policy=default.name,\n description=\"new rule one\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n action=\"allow\",\n preview=True)\npolicy_rule_two = gcp.compute.RegionSecurityPolicyRule(\"policy_rule_two\",\n region=\"us-west2\",\n security_policy=default.name,\n description=\"new rule two\",\n priority=101,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\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```\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 Name = \"policywithmultiplerules\",\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRuleOne = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule_one\", 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 });\n\n var policyRuleTwo = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule_two\", 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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"policywithmultiplerules\"),\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policy_rule_one\", \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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policy_rule_two\", \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})\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 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 .name(\"policywithmultiplerules\")\n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\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());\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());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n name: policywithmultiplerules\n description: basic region security policy\n type: CLOUD_ARMOR\n policyRuleOne:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule_one\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 policyRuleTwo:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule_two\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```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Security Policy Rule With Preconfigured Waf Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionSecurityPolicy(\"default\", {\n region: \"asia-southeast1\",\n name: \"policyruletest\",\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRule = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule\", {\n region: \"asia-southeast1\",\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 preconfiguredWafConfig: {\n exclusions: [\n {\n requestUris: [{\n operator: \"STARTS_WITH\",\n value: \"/admin\",\n }],\n targetRuleSet: \"rce-stable\",\n },\n {\n requestQueryParams: [\n {\n operator: \"CONTAINS\",\n value: \"password\",\n },\n {\n operator: \"STARTS_WITH\",\n value: \"freeform\",\n },\n {\n operator: \"EQUALS\",\n value: \"description\",\n },\n ],\n targetRuleSet: \"xss-stable\",\n targetRuleIds: [\n \"owasp-crs-v030001-id941330-xss\",\n \"owasp-crs-v030001-id941340-xss\",\n ],\n },\n ],\n },\n action: \"allow\",\n preview: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionSecurityPolicy(\"default\",\n region=\"asia-southeast1\",\n name=\"policyruletest\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule = gcp.compute.RegionSecurityPolicyRule(\"policy_rule\",\n region=\"asia-southeast1\",\n security_policy=default.name,\n description=\"new rule\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n preconfigured_waf_config={\n \"exclusions\": [\n {\n \"request_uris\": [{\n \"operator\": \"STARTS_WITH\",\n \"value\": \"/admin\",\n }],\n \"target_rule_set\": \"rce-stable\",\n },\n {\n \"request_query_params\": [\n {\n \"operator\": \"CONTAINS\",\n \"value\": \"password\",\n },\n {\n \"operator\": \"STARTS_WITH\",\n \"value\": \"freeform\",\n },\n {\n \"operator\": \"EQUALS\",\n \"value\": \"description\",\n },\n ],\n \"target_rule_set\": \"xss-stable\",\n \"target_rule_ids\": [\n \"owasp-crs-v030001-id941330-xss\",\n \"owasp-crs-v030001-id941340-xss\",\n ],\n },\n ],\n },\n action=\"allow\",\n preview=True)\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 = \"asia-southeast1\",\n Name = \"policyruletest\",\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRule = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule\", new()\n {\n Region = \"asia-southeast1\",\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 PreconfiguredWafConfig = new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigArgs\n {\n Exclusions = new[]\n {\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs\n {\n RequestUris = new[]\n {\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArgs\n {\n Operator = \"STARTS_WITH\",\n Value = \"/admin\",\n },\n },\n TargetRuleSet = \"rce-stable\",\n },\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs\n {\n RequestQueryParams = new[]\n {\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs\n {\n Operator = \"CONTAINS\",\n Value = \"password\",\n },\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs\n {\n Operator = \"STARTS_WITH\",\n Value = \"freeform\",\n },\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs\n {\n Operator = \"EQUALS\",\n Value = \"description\",\n },\n },\n TargetRuleSet = \"xss-stable\",\n TargetRuleIds = new[]\n {\n \"owasp-crs-v030001-id941330-xss\",\n \"owasp-crs-v030001-id941340-xss\",\n },\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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(\"asia-southeast1\"),\n\t\t\tName: pulumi.String(\"policyruletest\"),\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policy_rule\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"asia-southeast1\"),\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\tPreconfiguredWafConfig: \u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigArgs{\n\t\t\t\tExclusions: compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArray{\n\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs{\n\t\t\t\t\t\tRequestUris: compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArray{\n\t\t\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArgs{\n\t\t\t\t\t\t\t\tOperator: pulumi.String(\"STARTS_WITH\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"/admin\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetRuleSet: pulumi.String(\"rce-stable\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs{\n\t\t\t\t\t\tRequestQueryParams: compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArray{\n\t\t\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs{\n\t\t\t\t\t\t\t\tOperator: pulumi.String(\"CONTAINS\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"password\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs{\n\t\t\t\t\t\t\t\tOperator: pulumi.String(\"STARTS_WITH\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"freeform\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs{\n\t\t\t\t\t\t\t\tOperator: pulumi.String(\"EQUALS\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"description\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetRuleSet: pulumi.String(\"xss-stable\"),\n\t\t\t\t\t\tTargetRuleIds: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"owasp-crs-v030001-id941330-xss\"),\n\t\t\t\t\t\t\tpulumi.String(\"owasp-crs-v030001-id941340-xss\"),\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})\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.gcp.compute.inputs.RegionSecurityPolicyRulePreconfiguredWafConfigArgs;\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(\"asia-southeast1\")\n .name(\"policyruletest\")\n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var policyRule = new RegionSecurityPolicyRule(\"policyRule\", RegionSecurityPolicyRuleArgs.builder()\n .region(\"asia-southeast1\")\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 .preconfiguredWafConfig(RegionSecurityPolicyRulePreconfiguredWafConfigArgs.builder()\n .exclusions( \n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs.builder()\n .requestUris(RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArgs.builder()\n .operator(\"STARTS_WITH\")\n .value(\"/admin\")\n .build())\n .targetRuleSet(\"rce-stable\")\n .build(),\n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs.builder()\n .requestQueryParams( \n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs.builder()\n .operator(\"CONTAINS\")\n .value(\"password\")\n .build(),\n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs.builder()\n .operator(\"STARTS_WITH\")\n .value(\"freeform\")\n .build(),\n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs.builder()\n .operator(\"EQUALS\")\n .value(\"description\")\n .build())\n .targetRuleSet(\"xss-stable\")\n .targetRuleIds( \n \"owasp-crs-v030001-id941330-xss\",\n \"owasp-crs-v030001-id941340-xss\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: asia-southeast1\n name: policyruletest\n description: basic region security policy\n type: CLOUD_ARMOR\n policyRule:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule\n properties:\n region: asia-southeast1\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 preconfiguredWafConfig:\n exclusions:\n - requestUris:\n - operator: STARTS_WITH\n value: /admin\n targetRuleSet: rce-stable\n - requestQueryParams:\n - operator: CONTAINS\n value: password\n - operator: STARTS_WITH\n value: freeform\n - operator: EQUALS\n value: description\n targetRuleSet: xss-stable\n targetRuleIds:\n - owasp-crs-v030001-id941330-xss\n - owasp-crs-v030001-id941340-xss\n action: allow\n preview: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Security Policy Rule With Network Match\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"policyddosprotection\",\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});\nconst edgeSecService = new gcp.compute.NetworkEdgeSecurityService(\"edge_sec_service\", {\n region: \"us-west2\",\n name: \"edgesecservice\",\n description: \"linking policy to edge security service\",\n securityPolicy: policyddosprotection.selfLink,\n});\n// Add the desired policy and custom rule.\nconst policynetworkmatch = new gcp.compute.RegionSecurityPolicy(\"policynetworkmatch\", {\n region: \"us-west2\",\n name: \"policyfornetworkmatch\",\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 dependsOn: [edgeSecService],\n});\nconst policyRuleNetworkMatch = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule_network_match\", {\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```\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 name=\"policyddosprotection\",\n description=\"policy for activating network DDoS protection for the desired region\",\n type=\"CLOUD_ARMOR_NETWORK\",\n ddos_protection_config={\n \"ddos_protection\": \"ADVANCED_PREVIEW\",\n })\nedge_sec_service = gcp.compute.NetworkEdgeSecurityService(\"edge_sec_service\",\n region=\"us-west2\",\n name=\"edgesecservice\",\n description=\"linking policy to edge security service\",\n security_policy=policyddosprotection.self_link)\n# Add the desired policy and custom rule.\npolicynetworkmatch = gcp.compute.RegionSecurityPolicy(\"policynetworkmatch\",\n region=\"us-west2\",\n name=\"policyfornetworkmatch\",\n description=\"region security policy for network match\",\n type=\"CLOUD_ARMOR_NETWORK\",\n user_defined_fields=[{\n \"name\": \"SIG1_AT_0\",\n \"base\": \"TCP\",\n \"offset\": 8,\n \"size\": 2,\n \"mask\": \"0x8F00\",\n }],\n opts = pulumi.ResourceOptions(depends_on=[edge_sec_service]))\npolicy_rule_network_match = gcp.compute.RegionSecurityPolicyRule(\"policy_rule_network_match\",\n region=\"us-west2\",\n security_policy=policynetworkmatch.name,\n description=\"custom rule for network match\",\n priority=100,\n network_match={\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n \"user_defined_fields\": [{\n \"name\": \"SIG1_AT_0\",\n \"values\": [\"0x8F00\"],\n }],\n },\n action=\"allow\",\n preview=True)\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 Name = \"policyddosprotection\",\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 });\n\n var edgeSecService = new Gcp.Compute.NetworkEdgeSecurityService(\"edge_sec_service\", new()\n {\n Region = \"us-west2\",\n Name = \"edgesecservice\",\n Description = \"linking policy to edge security service\",\n SecurityPolicy = policyddosprotection.SelfLink,\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 Name = \"policyfornetworkmatch\",\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 DependsOn =\n {\n edgeSecService,\n },\n });\n\n var policyRuleNetworkMatch = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule_network_match\", 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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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// First activate advanced network DDoS protection for the desired region\n\t\tpolicyddosprotection, err := compute.NewRegionSecurityPolicy(ctx, \"policyddosprotection\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"policyddosprotection\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tedgeSecService, err := compute.NewNetworkEdgeSecurityService(ctx, \"edge_sec_service\", \u0026compute.NetworkEdgeSecurityServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"edgesecservice\"),\n\t\t\tDescription: pulumi.String(\"linking policy to edge security service\"),\n\t\t\tSecurityPolicy: policyddosprotection.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Add the desired policy and custom rule.\n\t\tpolicynetworkmatch, err := compute.NewRegionSecurityPolicy(ctx, \"policynetworkmatch\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"policyfornetworkmatch\"),\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.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, \"policy_rule_network_match\", \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})\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 // First activate advanced network DDoS protection for the desired region\n var policyddosprotection = new RegionSecurityPolicy(\"policyddosprotection\", RegionSecurityPolicyArgs.builder()\n .region(\"us-west2\")\n .name(\"policyddosprotection\")\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());\n\n var edgeSecService = new NetworkEdgeSecurityService(\"edgeSecService\", NetworkEdgeSecurityServiceArgs.builder()\n .region(\"us-west2\")\n .name(\"edgesecservice\")\n .description(\"linking policy to edge security service\")\n .securityPolicy(policyddosprotection.selfLink())\n .build());\n\n // Add the desired policy and custom rule.\n var policynetworkmatch = new RegionSecurityPolicy(\"policynetworkmatch\", RegionSecurityPolicyArgs.builder()\n .region(\"us-west2\")\n .name(\"policyfornetworkmatch\")\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 .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());\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 name: policyddosprotection\n description: policy for activating network DDoS protection for the desired region\n type: CLOUD_ARMOR_NETWORK\n ddosProtectionConfig:\n ddosProtection: ADVANCED_PREVIEW\n edgeSecService:\n type: gcp:compute:NetworkEdgeSecurityService\n name: edge_sec_service\n properties:\n region: us-west2\n name: edgesecservice\n description: linking policy to edge security service\n securityPolicy: ${policyddosprotection.selfLink}\n # Add the desired policy and custom rule.\n policynetworkmatch:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n name: policyfornetworkmatch\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 dependson:\n - ${edgeSecService}\n policyRuleNetworkMatch:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule_network_match\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```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionSecurityPolicyRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/securityPolicies/{{security_policy}}/priority/{{priority}}`\n\n* `{{project}}/{{region}}/{{security_policy}}/{{priority}}`\n\n* `{{region}}/{{security_policy}}/{{priority}}`\n\n* `{{security_policy}}/{{priority}}`\n\nWhen using the `pulumi import` command, RegionSecurityPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default projects/{{project}}/regions/{{region}}/securityPolicies/{{security_policy}}/priority/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{project}}/{{region}}/{{security_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{region}}/{{security_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{security_policy}}/{{priority}}\n```\n\n", "properties": { "action": { "type": "string", @@ -160099,7 +160099,7 @@ } }, "gcp:compute/regionTargetHttpProxy:RegionTargetHttpProxy": { - "description": "Represents a RegionTargetHttpProxy resource, which is used by one or more\nforwarding rules to route incoming HTTP requests to a URL map.\n\n\nTo get more information about RegionTargetHttpProxy, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/regionTargetHttpProxies)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/load-balancing/http/target-proxies)\n\n## Example Usage\n\n### Region Target Http Proxy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"http-health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"backend-service\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n healthChecks: defaultRegionHealthCheck.id,\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n region: \"us-central1\",\n name: \"url-map\",\n defaultService: defaultRegionBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultRegionBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultRegionBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.RegionTargetHttpProxy(\"default\", {\n region: \"us-central1\",\n name: \"test-proxy\",\n urlMap: defaultRegionUrlMap.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"http-health-check\",\n http_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"backend-service\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n health_checks=default_region_health_check.id)\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n region=\"us-central1\",\n name=\"url-map\",\n default_service=default_region_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": default_region_backend_service.id,\n \"pathRules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_region_backend_service.id,\n }],\n }])\ndefault = gcp.compute.RegionTargetHttpProxy(\"default\",\n region=\"us-central1\",\n name=\"test-proxy\",\n url_map=default_region_url_map.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 defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"http-health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"backend-service\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n HealthChecks = defaultRegionHealthCheck.Id,\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"url-map\",\n DefaultService = defaultRegionBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultRegionBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultRegionBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.RegionTargetHttpProxy(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"test-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tHealthChecks: defaultRegionHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultRegionBackendService.ID(),\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 = compute.NewRegionTargetHttpProxy(ctx, \"default\", \u0026compute.RegionTargetHttpProxyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.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.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.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxyArgs;\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 defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"http-health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"backend-service\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .healthChecks(defaultRegionHealthCheck.id())\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"url-map\")\n .defaultService(defaultRegionBackendService.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultRegionBackendService.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultRegionBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new RegionTargetHttpProxy(\"default\", RegionTargetHttpProxyArgs.builder()\n .region(\"us-central1\")\n .name(\"test-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionTargetHttpProxy\n properties:\n region: us-central1\n name: test-proxy\n urlMap: ${defaultRegionUrlMap.id}\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n region: us-central1\n name: url-map\n defaultService: ${defaultRegionBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultRegionBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultRegionBackendService.id}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n region: us-central1\n name: backend-service\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: INTERNAL_MANAGED\n healthChecks: ${defaultRegionHealthCheck.id}\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n region: us-central1\n name: http-health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Target Http Proxy Https Redirect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n region: \"us-central1\",\n name: \"url-map\",\n defaultUrlRedirect: {\n httpsRedirect: true,\n stripQuery: false,\n },\n});\nconst _default = new gcp.compute.RegionTargetHttpProxy(\"default\", {\n region: \"us-central1\",\n name: \"test-https-redirect-proxy\",\n urlMap: defaultRegionUrlMap.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n region=\"us-central1\",\n name=\"url-map\",\n default_url_redirect={\n \"httpsRedirect\": True,\n \"stripQuery\": False,\n })\ndefault = gcp.compute.RegionTargetHttpProxy(\"default\",\n region=\"us-central1\",\n name=\"test-https-redirect-proxy\",\n url_map=default_region_url_map.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 defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"url-map\",\n DefaultUrlRedirect = new Gcp.Compute.Inputs.RegionUrlMapDefaultUrlRedirectArgs\n {\n HttpsRedirect = true,\n StripQuery = false,\n },\n });\n\n var @default = new Gcp.Compute.RegionTargetHttpProxy(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"test-https-redirect-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDefaultUrlRedirect: \u0026compute.RegionUrlMapDefaultUrlRedirectArgs{\n\t\t\t\tHttpsRedirect: pulumi.Bool(true),\n\t\t\t\tStripQuery: pulumi.Bool(false),\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.NewRegionTargetHttpProxy(ctx, \"default\", \u0026compute.RegionTargetHttpProxyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"test-https-redirect-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.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.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultUrlRedirectArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxyArgs;\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 defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"url-map\")\n .defaultUrlRedirect(RegionUrlMapDefaultUrlRedirectArgs.builder()\n .httpsRedirect(true)\n .stripQuery(false)\n .build())\n .build());\n\n var default_ = new RegionTargetHttpProxy(\"default\", RegionTargetHttpProxyArgs.builder()\n .region(\"us-central1\")\n .name(\"test-https-redirect-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionTargetHttpProxy\n properties:\n region: us-central1\n name: test-https-redirect-proxy\n urlMap: ${defaultRegionUrlMap.id}\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n region: us-central1\n name: url-map\n defaultUrlRedirect:\n httpsRedirect: true\n stripQuery: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionTargetHttpProxy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/targetHttpProxies/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionTargetHttpProxy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpProxy:RegionTargetHttpProxy default projects/{{project}}/regions/{{region}}/targetHttpProxies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpProxy:RegionTargetHttpProxy default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpProxy:RegionTargetHttpProxy default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpProxy:RegionTargetHttpProxy default {{name}}\n```\n\n", + "description": "Represents a RegionTargetHttpProxy resource, which is used by one or more\nforwarding rules to route incoming HTTP requests to a URL map.\n\n\nTo get more information about RegionTargetHttpProxy, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/regionTargetHttpProxies)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/load-balancing/http/target-proxies)\n\n## Example Usage\n\n### Region Target Http Proxy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"http-health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"backend-service\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n healthChecks: defaultRegionHealthCheck.id,\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n region: \"us-central1\",\n name: \"url-map\",\n defaultService: defaultRegionBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultRegionBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultRegionBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.RegionTargetHttpProxy(\"default\", {\n region: \"us-central1\",\n name: \"test-proxy\",\n urlMap: defaultRegionUrlMap.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"http-health-check\",\n http_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"backend-service\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n health_checks=default_region_health_check.id)\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n region=\"us-central1\",\n name=\"url-map\",\n default_service=default_region_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_region_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_region_backend_service.id,\n }],\n }])\ndefault = gcp.compute.RegionTargetHttpProxy(\"default\",\n region=\"us-central1\",\n name=\"test-proxy\",\n url_map=default_region_url_map.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 defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"http-health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"backend-service\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n HealthChecks = defaultRegionHealthCheck.Id,\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"url-map\",\n DefaultService = defaultRegionBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultRegionBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultRegionBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.RegionTargetHttpProxy(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"test-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tHealthChecks: defaultRegionHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultRegionBackendService.ID(),\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 = compute.NewRegionTargetHttpProxy(ctx, \"default\", \u0026compute.RegionTargetHttpProxyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.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.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.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxyArgs;\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 defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"http-health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"backend-service\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .healthChecks(defaultRegionHealthCheck.id())\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"url-map\")\n .defaultService(defaultRegionBackendService.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultRegionBackendService.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultRegionBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new RegionTargetHttpProxy(\"default\", RegionTargetHttpProxyArgs.builder()\n .region(\"us-central1\")\n .name(\"test-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionTargetHttpProxy\n properties:\n region: us-central1\n name: test-proxy\n urlMap: ${defaultRegionUrlMap.id}\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n region: us-central1\n name: url-map\n defaultService: ${defaultRegionBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultRegionBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultRegionBackendService.id}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n region: us-central1\n name: backend-service\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: INTERNAL_MANAGED\n healthChecks: ${defaultRegionHealthCheck.id}\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n region: us-central1\n name: http-health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Target Http Proxy Https Redirect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n region: \"us-central1\",\n name: \"url-map\",\n defaultUrlRedirect: {\n httpsRedirect: true,\n stripQuery: false,\n },\n});\nconst _default = new gcp.compute.RegionTargetHttpProxy(\"default\", {\n region: \"us-central1\",\n name: \"test-https-redirect-proxy\",\n urlMap: defaultRegionUrlMap.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n region=\"us-central1\",\n name=\"url-map\",\n default_url_redirect={\n \"https_redirect\": True,\n \"strip_query\": False,\n })\ndefault = gcp.compute.RegionTargetHttpProxy(\"default\",\n region=\"us-central1\",\n name=\"test-https-redirect-proxy\",\n url_map=default_region_url_map.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 defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"url-map\",\n DefaultUrlRedirect = new Gcp.Compute.Inputs.RegionUrlMapDefaultUrlRedirectArgs\n {\n HttpsRedirect = true,\n StripQuery = false,\n },\n });\n\n var @default = new Gcp.Compute.RegionTargetHttpProxy(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"test-https-redirect-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDefaultUrlRedirect: \u0026compute.RegionUrlMapDefaultUrlRedirectArgs{\n\t\t\t\tHttpsRedirect: pulumi.Bool(true),\n\t\t\t\tStripQuery: pulumi.Bool(false),\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.NewRegionTargetHttpProxy(ctx, \"default\", \u0026compute.RegionTargetHttpProxyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"test-https-redirect-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.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.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultUrlRedirectArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxyArgs;\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 defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"url-map\")\n .defaultUrlRedirect(RegionUrlMapDefaultUrlRedirectArgs.builder()\n .httpsRedirect(true)\n .stripQuery(false)\n .build())\n .build());\n\n var default_ = new RegionTargetHttpProxy(\"default\", RegionTargetHttpProxyArgs.builder()\n .region(\"us-central1\")\n .name(\"test-https-redirect-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionTargetHttpProxy\n properties:\n region: us-central1\n name: test-https-redirect-proxy\n urlMap: ${defaultRegionUrlMap.id}\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n region: us-central1\n name: url-map\n defaultUrlRedirect:\n httpsRedirect: true\n stripQuery: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionTargetHttpProxy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/targetHttpProxies/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionTargetHttpProxy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpProxy:RegionTargetHttpProxy default projects/{{project}}/regions/{{region}}/targetHttpProxies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpProxy:RegionTargetHttpProxy default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpProxy:RegionTargetHttpProxy default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpProxy:RegionTargetHttpProxy default {{name}}\n```\n\n", "properties": { "creationTimestamp": { "type": "string", @@ -160216,7 +160216,7 @@ } }, "gcp:compute/regionTargetHttpsProxy:RegionTargetHttpsProxy": { - "description": "Represents a RegionTargetHttpsProxy resource, which is used by one or more\nforwarding rules to route incoming HTTPS requests to a URL map.\n\n\nTo get more information about RegionTargetHttpsProxy, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/regionTargetHttpsProxies)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/load-balancing/http/target-proxies)\n\n## Example Usage\n\n### Region Target Https Proxy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultRegionSslCertificate = new gcp.compute.RegionSslCertificate(\"default\", {\n region: \"us-central1\",\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"http-health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"backend-service\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: defaultRegionHealthCheck.id,\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n region: \"us-central1\",\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultRegionBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultRegionBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultRegionBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.RegionTargetHttpsProxy(\"default\", {\n region: \"us-central1\",\n name: \"test-proxy\",\n urlMap: defaultRegionUrlMap.id,\n sslCertificates: [defaultRegionSslCertificate.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_region_ssl_certificate = gcp.compute.RegionSslCertificate(\"default\",\n region=\"us-central1\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"http-health-check\",\n http_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"backend-service\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default_region_health_check.id)\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n region=\"us-central1\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_region_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": default_region_backend_service.id,\n \"pathRules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_region_backend_service.id,\n }],\n }])\ndefault = gcp.compute.RegionTargetHttpsProxy(\"default\",\n region=\"us-central1\",\n name=\"test-proxy\",\n url_map=default_region_url_map.id,\n ssl_certificates=[default_region_ssl_certificate.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultRegionSslCertificate = new Gcp.Compute.RegionSslCertificate(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"http-health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"backend-service\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = defaultRegionHealthCheck.Id,\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultRegionBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultRegionBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultRegionBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.RegionTargetHttpsProxy(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"test-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n SslCertificates = new[]\n {\n defaultRegionSslCertificate.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionSslCertificate, err := compute.NewRegionSslCertificate(ctx, \"default\", \u0026compute.RegionSslCertificateArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: invokeFile.Result,\n\t\t\tCertificate: invokeFile1.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultRegionHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultRegionBackendService.ID(),\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 = compute.NewRegionTargetHttpsProxy(ctx, \"default\", \u0026compute.RegionTargetHttpsProxyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultRegionSslCertificate.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.compute.RegionSslCertificate;\nimport com.pulumi.gcp.compute.RegionSslCertificateArgs;\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.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxyArgs;\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 defaultRegionSslCertificate = new RegionSslCertificate(\"defaultRegionSslCertificate\", RegionSslCertificateArgs.builder()\n .region(\"us-central1\")\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"http-health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"backend-service\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(defaultRegionHealthCheck.id())\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultRegionBackendService.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultRegionBackendService.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultRegionBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new RegionTargetHttpsProxy(\"default\", RegionTargetHttpsProxyArgs.builder()\n .region(\"us-central1\")\n .name(\"test-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .sslCertificates(defaultRegionSslCertificate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionTargetHttpsProxy\n properties:\n region: us-central1\n name: test-proxy\n urlMap: ${defaultRegionUrlMap.id}\n sslCertificates:\n - ${defaultRegionSslCertificate.id}\n defaultRegionSslCertificate:\n type: gcp:compute:RegionSslCertificate\n name: default\n properties:\n region: us-central1\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n region: us-central1\n name: url-map\n description: a description\n defaultService: ${defaultRegionBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultRegionBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultRegionBackendService.id}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n region: us-central1\n name: backend-service\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${defaultRegionHealthCheck.id}\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n region: us-central1\n name: http-health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Target Https Proxy Mtls\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst defaultTrustConfig = new gcp.certificatemanager.TrustConfig(\"default\", {\n location: \"us-central1\",\n name: \"my-trust-config\",\n description: \"sample description for trust config\",\n trustStores: [{\n trustAnchors: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n intermediateCas: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n }],\n labels: {\n foo: \"bar\",\n },\n});\nconst defaultServerTlsPolicy = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n location: \"us-central1\",\n name: \"my-tls-policy\",\n description: \"my description\",\n allowOpen: false,\n mtlsPolicy: {\n clientValidationMode: \"REJECT_INVALID\",\n clientValidationTrustConfig: pulumi.all([project, defaultTrustConfig.name]).apply(([project, name]) =\u003e `projects/${project.number}/locations/us-central1/trustConfigs/${name}`),\n },\n});\nconst defaultRegionSslCertificate = new gcp.compute.RegionSslCertificate(\"default\", {\n region: \"us-central1\",\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"http-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n httpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n healthChecks: defaultRegionHealthCheck.id,\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n region: \"us-central1\",\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultRegionBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultRegionBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultRegionBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.RegionTargetHttpsProxy(\"default\", {\n region: \"us-central1\",\n name: \"test-mtls-proxy\",\n urlMap: defaultRegionUrlMap.id,\n sslCertificates: [defaultRegionSslCertificate.id],\n serverTlsPolicy: defaultServerTlsPolicy.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\ndefault_trust_config = gcp.certificatemanager.TrustConfig(\"default\",\n location=\"us-central1\",\n name=\"my-trust-config\",\n description=\"sample description for trust config\",\n trust_stores=[{\n \"trustAnchors\": [{\n \"pemCertificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n \"intermediateCas\": [{\n \"pemCertificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n }],\n labels={\n \"foo\": \"bar\",\n })\ndefault_server_tls_policy = gcp.networksecurity.ServerTlsPolicy(\"default\",\n location=\"us-central1\",\n name=\"my-tls-policy\",\n description=\"my description\",\n allow_open=False,\n mtls_policy={\n \"clientValidationMode\": \"REJECT_INVALID\",\n \"clientValidationTrustConfig\": default_trust_config.name.apply(lambda name: f\"projects/{project.number}/locations/us-central1/trustConfigs/{name}\"),\n })\ndefault_region_ssl_certificate = gcp.compute.RegionSslCertificate(\"default\",\n region=\"us-central1\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"http-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n http_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n health_checks=default_region_health_check.id)\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n region=\"us-central1\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_region_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": default_region_backend_service.id,\n \"pathRules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_region_backend_service.id,\n }],\n }])\ndefault = gcp.compute.RegionTargetHttpsProxy(\"default\",\n region=\"us-central1\",\n name=\"test-mtls-proxy\",\n url_map=default_region_url_map.id,\n ssl_certificates=[default_region_ssl_certificate.id],\n server_tls_policy=default_server_tls_policy.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var defaultTrustConfig = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-trust-config\",\n Description = \"sample description for trust config\",\n TrustStores = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreArgs\n {\n TrustAnchors = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreTrustAnchorArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n IntermediateCas = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreIntermediateCaArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var defaultServerTlsPolicy = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-tls-policy\",\n Description = \"my description\",\n AllowOpen = false,\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationMode = \"REJECT_INVALID\",\n ClientValidationTrustConfig = Output.Tuple(project, defaultTrustConfig.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/locations/us-central1/trustConfigs/{name}\";\n }),\n },\n });\n\n var defaultRegionSslCertificate = new Gcp.Compute.RegionSslCertificate(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"http-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n HealthChecks = defaultRegionHealthCheck.Id,\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultRegionBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultRegionBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultRegionBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.RegionTargetHttpsProxy(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"test-mtls-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n SslCertificates = new[]\n {\n defaultRegionSslCertificate.Id,\n },\n ServerTlsPolicy = defaultServerTlsPolicy.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTrustConfig, err := certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-trust-config\"),\n\t\t\tDescription: pulumi.String(\"sample description for trust config\"),\n\t\t\tTrustStores: certificatemanager.TrustConfigTrustStoreArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreArgs{\n\t\t\t\t\tTrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{\n\t\t\t\t\t\t\tPemCertificate: invokeFile.Result,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{\n\t\t\t\t\t\t\tPemCertificate: invokeFile1.Result,\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\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\tdefaultServerTlsPolicy, err := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-tls-policy\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationMode: pulumi.String(\"REJECT_INVALID\"),\n\t\t\t\tClientValidationTrustConfig: defaultTrustConfig.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"projects/%v/locations/us-central1/trustConfigs/%v\", project.Number, name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile2, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile3, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionSslCertificate, err := compute.NewRegionSslCertificate(ctx, \"default\", \u0026compute.RegionSslCertificateArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: invokeFile2.Result,\n\t\t\tCertificate: invokeFile3.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tHealthChecks: defaultRegionHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultRegionBackendService.ID(),\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 = compute.NewRegionTargetHttpsProxy(ctx, \"default\", \u0026compute.RegionTargetHttpsProxyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"test-mtls-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultRegionSslCertificate.ID(),\n\t\t\t},\n\t\t\tServerTlsPolicy: defaultServerTlsPolicy.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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigTrustStoreArgs;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\nimport com.pulumi.gcp.compute.RegionSslCertificate;\nimport com.pulumi.gcp.compute.RegionSslCertificateArgs;\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.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxyArgs;\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 defaultTrustConfig = new TrustConfig(\"defaultTrustConfig\", TrustConfigArgs.builder()\n .location(\"us-central1\")\n .name(\"my-trust-config\")\n .description(\"sample description for trust config\")\n .trustStores(TrustConfigTrustStoreArgs.builder()\n .trustAnchors(TrustConfigTrustStoreTrustAnchorArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .intermediateCas(TrustConfigTrustStoreIntermediateCaArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var defaultServerTlsPolicy = new ServerTlsPolicy(\"defaultServerTlsPolicy\", ServerTlsPolicyArgs.builder()\n .location(\"us-central1\")\n .name(\"my-tls-policy\")\n .description(\"my description\")\n .allowOpen(\"false\")\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationMode(\"REJECT_INVALID\")\n .clientValidationTrustConfig(defaultTrustConfig.name().applyValue(name -\u003e String.format(\"projects/%s/locations/us-central1/trustConfigs/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build())\n .build());\n\n var defaultRegionSslCertificate = new RegionSslCertificate(\"defaultRegionSslCertificate\", RegionSslCertificateArgs.builder()\n .region(\"us-central1\")\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"http-health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .healthChecks(defaultRegionHealthCheck.id())\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultRegionBackendService.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultRegionBackendService.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultRegionBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new RegionTargetHttpsProxy(\"default\", RegionTargetHttpsProxyArgs.builder()\n .region(\"us-central1\")\n .name(\"test-mtls-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .sslCertificates(defaultRegionSslCertificate.id())\n .serverTlsPolicy(defaultServerTlsPolicy.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionTargetHttpsProxy\n properties:\n region: us-central1\n name: test-mtls-proxy\n urlMap: ${defaultRegionUrlMap.id}\n sslCertificates:\n - ${defaultRegionSslCertificate.id}\n serverTlsPolicy: ${defaultServerTlsPolicy.id}\n defaultTrustConfig:\n type: gcp:certificatemanager:TrustConfig\n name: default\n properties:\n location: us-central1\n name: my-trust-config\n description: sample description for trust config\n trustStores:\n - trustAnchors:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n intermediateCas:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n labels:\n foo: bar\n defaultServerTlsPolicy:\n type: gcp:networksecurity:ServerTlsPolicy\n name: default\n properties:\n location: us-central1\n name: my-tls-policy\n description: my description\n allowOpen: 'false'\n mtlsPolicy:\n clientValidationMode: REJECT_INVALID\n clientValidationTrustConfig: projects/${project.number}/locations/us-central1/trustConfigs/${defaultTrustConfig.name}\n defaultRegionSslCertificate:\n type: gcp:compute:RegionSslCertificate\n name: default\n properties:\n region: us-central1\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n region: us-central1\n name: url-map\n description: a description\n defaultService: ${defaultRegionBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultRegionBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultRegionBackendService.id}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n region: us-central1\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: INTERNAL_MANAGED\n healthChecks: ${defaultRegionHealthCheck.id}\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n region: us-central1\n name: http-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n httpHealthCheck:\n port: 80\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Target Https Proxy Certificate Manager Certificate\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultCertificate = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"my-certificate\",\n location: \"us-central1\",\n selfManaged: {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n pemPrivateKey: std.file({\n input: \"test-fixtures/private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n name: \"backend-service\",\n region: \"us-central1\",\n protocol: \"HTTPS\",\n timeoutSec: 30,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n name: \"url-map\",\n defaultService: defaultRegionBackendService.id,\n region: \"us-central1\",\n});\nconst _default = new gcp.compute.RegionTargetHttpsProxy(\"default\", {\n name: \"target-http-proxy\",\n urlMap: defaultRegionUrlMap.id,\n certificateManagerCertificates: [pulumi.interpolate`//certificatemanager.googleapis.com/${defaultCertificate.id}`],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_certificate = gcp.certificatemanager.Certificate(\"default\",\n name=\"my-certificate\",\n location=\"us-central1\",\n self_managed={\n \"pemCertificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n \"pemPrivateKey\": std.file(input=\"test-fixtures/private-key.pem\").result,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n name=\"backend-service\",\n region=\"us-central1\",\n protocol=\"HTTPS\",\n timeout_sec=30,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n name=\"url-map\",\n default_service=default_region_backend_service.id,\n region=\"us-central1\")\ndefault = gcp.compute.RegionTargetHttpsProxy(\"default\",\n name=\"target-http-proxy\",\n url_map=default_region_url_map.id,\n certificate_manager_certificates=[default_certificate.id.apply(lambda id: f\"//certificatemanager.googleapis.com/{id}\")])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultCertificate = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"my-certificate\",\n Location = \"us-central1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n PemPrivateKey = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"backend-service\",\n Region = \"us-central1\",\n Protocol = \"HTTPS\",\n TimeoutSec = 30,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Name = \"url-map\",\n DefaultService = defaultRegionBackendService.Id,\n Region = \"us-central1\",\n });\n\n var @default = new Gcp.Compute.RegionTargetHttpsProxy(\"default\", new()\n {\n Name = \"target-http-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n CertificateManagerCertificates = new[]\n {\n defaultCertificate.Id.Apply(id =\u003e $\"//certificatemanager.googleapis.com/{id}\"),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCertificate, err := certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: invokeFile.Result,\n\t\t\t\tPemPrivateKey: invokeFile1.Result,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tProtocol: pulumi.String(\"HTTPS\"),\n\t\t\tTimeoutSec: pulumi.Int(30),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\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\t_, err = compute.NewRegionTargetHttpsProxy(ctx, \"default\", \u0026compute.RegionTargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"target-http-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.ID(),\n\t\t\tCertificateManagerCertificates: pulumi.StringArray{\n\t\t\t\tdefaultCertificate.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"//certificatemanager.googleapis.com/%v\", id), nil\n\t\t\t\t}).(pulumi.StringOutput),\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 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.RegionTargetHttpsProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxyArgs;\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 .name(\"my-certificate\")\n .location(\"us-central1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .pemPrivateKey(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/private-key.pem\")\n .build()).result())\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .name(\"backend-service\")\n .region(\"us-central1\")\n .protocol(\"HTTPS\")\n .timeoutSec(30)\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .name(\"url-map\")\n .defaultService(defaultRegionBackendService.id())\n .region(\"us-central1\")\n .build());\n\n var default_ = new RegionTargetHttpsProxy(\"default\", RegionTargetHttpsProxyArgs.builder()\n .name(\"target-http-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .certificateManagerCertificates(defaultCertificate.id().applyValue(id -\u003e String.format(\"//certificatemanager.googleapis.com/%s\", id)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionTargetHttpsProxy\n properties:\n name: target-http-proxy\n urlMap: ${defaultRegionUrlMap.id}\n certificateManagerCertificates: # [google_certificate_manager_certificate.default.id] is also acceptable\n - //certificatemanager.googleapis.com/${defaultCertificate.id}\n defaultCertificate:\n type: gcp:certificatemanager:Certificate\n name: default\n properties:\n name: my-certificate\n location: us-central1\n selfManaged:\n pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n pemPrivateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/private-key.pem\n Return: result\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n name: url-map\n defaultService: ${defaultRegionBackendService.id}\n region: us-central1\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n name: backend-service\n region: us-central1\n protocol: HTTPS\n timeoutSec: 30\n loadBalancingScheme: INTERNAL_MANAGED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionTargetHttpsProxy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/targetHttpsProxies/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionTargetHttpsProxy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpsProxy:RegionTargetHttpsProxy default projects/{{project}}/regions/{{region}}/targetHttpsProxies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpsProxy:RegionTargetHttpsProxy default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpsProxy:RegionTargetHttpsProxy default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpsProxy:RegionTargetHttpsProxy default {{name}}\n```\n\n", + "description": "Represents a RegionTargetHttpsProxy resource, which is used by one or more\nforwarding rules to route incoming HTTPS requests to a URL map.\n\n\nTo get more information about RegionTargetHttpsProxy, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/regionTargetHttpsProxies)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/load-balancing/http/target-proxies)\n\n## Example Usage\n\n### Region Target Https Proxy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultRegionSslCertificate = new gcp.compute.RegionSslCertificate(\"default\", {\n region: \"us-central1\",\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"http-health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"backend-service\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: defaultRegionHealthCheck.id,\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n region: \"us-central1\",\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultRegionBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultRegionBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultRegionBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.RegionTargetHttpsProxy(\"default\", {\n region: \"us-central1\",\n name: \"test-proxy\",\n urlMap: defaultRegionUrlMap.id,\n sslCertificates: [defaultRegionSslCertificate.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_region_ssl_certificate = gcp.compute.RegionSslCertificate(\"default\",\n region=\"us-central1\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"http-health-check\",\n http_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"backend-service\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default_region_health_check.id)\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n region=\"us-central1\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_region_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_region_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_region_backend_service.id,\n }],\n }])\ndefault = gcp.compute.RegionTargetHttpsProxy(\"default\",\n region=\"us-central1\",\n name=\"test-proxy\",\n url_map=default_region_url_map.id,\n ssl_certificates=[default_region_ssl_certificate.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultRegionSslCertificate = new Gcp.Compute.RegionSslCertificate(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"http-health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"backend-service\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = defaultRegionHealthCheck.Id,\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultRegionBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultRegionBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultRegionBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.RegionTargetHttpsProxy(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"test-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n SslCertificates = new[]\n {\n defaultRegionSslCertificate.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionSslCertificate, err := compute.NewRegionSslCertificate(ctx, \"default\", \u0026compute.RegionSslCertificateArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile.Result),\n\t\t\tCertificate: pulumi.String(invokeFile1.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultRegionHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultRegionBackendService.ID(),\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 = compute.NewRegionTargetHttpsProxy(ctx, \"default\", \u0026compute.RegionTargetHttpsProxyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultRegionSslCertificate.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.compute.RegionSslCertificate;\nimport com.pulumi.gcp.compute.RegionSslCertificateArgs;\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.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxyArgs;\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 defaultRegionSslCertificate = new RegionSslCertificate(\"defaultRegionSslCertificate\", RegionSslCertificateArgs.builder()\n .region(\"us-central1\")\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"http-health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"backend-service\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(defaultRegionHealthCheck.id())\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultRegionBackendService.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultRegionBackendService.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultRegionBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new RegionTargetHttpsProxy(\"default\", RegionTargetHttpsProxyArgs.builder()\n .region(\"us-central1\")\n .name(\"test-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .sslCertificates(defaultRegionSslCertificate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionTargetHttpsProxy\n properties:\n region: us-central1\n name: test-proxy\n urlMap: ${defaultRegionUrlMap.id}\n sslCertificates:\n - ${defaultRegionSslCertificate.id}\n defaultRegionSslCertificate:\n type: gcp:compute:RegionSslCertificate\n name: default\n properties:\n region: us-central1\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n region: us-central1\n name: url-map\n description: a description\n defaultService: ${defaultRegionBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultRegionBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultRegionBackendService.id}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n region: us-central1\n name: backend-service\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${defaultRegionHealthCheck.id}\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n region: us-central1\n name: http-health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Target Https Proxy Mtls\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst defaultTrustConfig = new gcp.certificatemanager.TrustConfig(\"default\", {\n location: \"us-central1\",\n name: \"my-trust-config\",\n description: \"sample description for trust config\",\n trustStores: [{\n trustAnchors: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n intermediateCas: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n }],\n labels: {\n foo: \"bar\",\n },\n});\nconst defaultServerTlsPolicy = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n location: \"us-central1\",\n name: \"my-tls-policy\",\n description: \"my description\",\n allowOpen: false,\n mtlsPolicy: {\n clientValidationMode: \"REJECT_INVALID\",\n clientValidationTrustConfig: pulumi.all([project, defaultTrustConfig.name]).apply(([project, name]) =\u003e `projects/${project.number}/locations/us-central1/trustConfigs/${name}`),\n },\n});\nconst defaultRegionSslCertificate = new gcp.compute.RegionSslCertificate(\"default\", {\n region: \"us-central1\",\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"http-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n httpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n healthChecks: defaultRegionHealthCheck.id,\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n region: \"us-central1\",\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultRegionBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultRegionBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultRegionBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.RegionTargetHttpsProxy(\"default\", {\n region: \"us-central1\",\n name: \"test-mtls-proxy\",\n urlMap: defaultRegionUrlMap.id,\n sslCertificates: [defaultRegionSslCertificate.id],\n serverTlsPolicy: defaultServerTlsPolicy.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\ndefault_trust_config = gcp.certificatemanager.TrustConfig(\"default\",\n location=\"us-central1\",\n name=\"my-trust-config\",\n description=\"sample description for trust config\",\n trust_stores=[{\n \"trust_anchors\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n \"intermediate_cas\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n }],\n labels={\n \"foo\": \"bar\",\n })\ndefault_server_tls_policy = gcp.networksecurity.ServerTlsPolicy(\"default\",\n location=\"us-central1\",\n name=\"my-tls-policy\",\n description=\"my description\",\n allow_open=False,\n mtls_policy={\n \"client_validation_mode\": \"REJECT_INVALID\",\n \"client_validation_trust_config\": default_trust_config.name.apply(lambda name: f\"projects/{project.number}/locations/us-central1/trustConfigs/{name}\"),\n })\ndefault_region_ssl_certificate = gcp.compute.RegionSslCertificate(\"default\",\n region=\"us-central1\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"http-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n http_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n health_checks=default_region_health_check.id)\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n region=\"us-central1\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_region_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_region_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_region_backend_service.id,\n }],\n }])\ndefault = gcp.compute.RegionTargetHttpsProxy(\"default\",\n region=\"us-central1\",\n name=\"test-mtls-proxy\",\n url_map=default_region_url_map.id,\n ssl_certificates=[default_region_ssl_certificate.id],\n server_tls_policy=default_server_tls_policy.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var defaultTrustConfig = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-trust-config\",\n Description = \"sample description for trust config\",\n TrustStores = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreArgs\n {\n TrustAnchors = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreTrustAnchorArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n IntermediateCas = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreIntermediateCaArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var defaultServerTlsPolicy = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-tls-policy\",\n Description = \"my description\",\n AllowOpen = false,\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationMode = \"REJECT_INVALID\",\n ClientValidationTrustConfig = Output.Tuple(project, defaultTrustConfig.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/locations/us-central1/trustConfigs/{name}\";\n }),\n },\n });\n\n var defaultRegionSslCertificate = new Gcp.Compute.RegionSslCertificate(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"http-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n HealthChecks = defaultRegionHealthCheck.Id,\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultRegionBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultRegionBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultRegionBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.RegionTargetHttpsProxy(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"test-mtls-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n SslCertificates = new[]\n {\n defaultRegionSslCertificate.Id,\n },\n ServerTlsPolicy = defaultServerTlsPolicy.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTrustConfig, err := certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-trust-config\"),\n\t\t\tDescription: pulumi.String(\"sample description for trust config\"),\n\t\t\tTrustStores: certificatemanager.TrustConfigTrustStoreArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreArgs{\n\t\t\t\t\tTrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile1.Result),\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\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\tdefaultServerTlsPolicy, err := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-tls-policy\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationMode: pulumi.String(\"REJECT_INVALID\"),\n\t\t\t\tClientValidationTrustConfig: defaultTrustConfig.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"projects/%v/locations/us-central1/trustConfigs/%v\", project.Number, name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile2, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile3, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionSslCertificate, err := compute.NewRegionSslCertificate(ctx, \"default\", \u0026compute.RegionSslCertificateArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile2.Result),\n\t\t\tCertificate: pulumi.String(invokeFile3.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tHealthChecks: defaultRegionHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultRegionBackendService.ID(),\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 = compute.NewRegionTargetHttpsProxy(ctx, \"default\", \u0026compute.RegionTargetHttpsProxyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"test-mtls-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultRegionSslCertificate.ID(),\n\t\t\t},\n\t\t\tServerTlsPolicy: defaultServerTlsPolicy.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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigTrustStoreArgs;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\nimport com.pulumi.gcp.compute.RegionSslCertificate;\nimport com.pulumi.gcp.compute.RegionSslCertificateArgs;\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.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxyArgs;\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 defaultTrustConfig = new TrustConfig(\"defaultTrustConfig\", TrustConfigArgs.builder()\n .location(\"us-central1\")\n .name(\"my-trust-config\")\n .description(\"sample description for trust config\")\n .trustStores(TrustConfigTrustStoreArgs.builder()\n .trustAnchors(TrustConfigTrustStoreTrustAnchorArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .intermediateCas(TrustConfigTrustStoreIntermediateCaArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var defaultServerTlsPolicy = new ServerTlsPolicy(\"defaultServerTlsPolicy\", ServerTlsPolicyArgs.builder()\n .location(\"us-central1\")\n .name(\"my-tls-policy\")\n .description(\"my description\")\n .allowOpen(\"false\")\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationMode(\"REJECT_INVALID\")\n .clientValidationTrustConfig(defaultTrustConfig.name().applyValue(name -\u003e String.format(\"projects/%s/locations/us-central1/trustConfigs/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build())\n .build());\n\n var defaultRegionSslCertificate = new RegionSslCertificate(\"defaultRegionSslCertificate\", RegionSslCertificateArgs.builder()\n .region(\"us-central1\")\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"http-health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .healthChecks(defaultRegionHealthCheck.id())\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultRegionBackendService.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultRegionBackendService.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultRegionBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new RegionTargetHttpsProxy(\"default\", RegionTargetHttpsProxyArgs.builder()\n .region(\"us-central1\")\n .name(\"test-mtls-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .sslCertificates(defaultRegionSslCertificate.id())\n .serverTlsPolicy(defaultServerTlsPolicy.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionTargetHttpsProxy\n properties:\n region: us-central1\n name: test-mtls-proxy\n urlMap: ${defaultRegionUrlMap.id}\n sslCertificates:\n - ${defaultRegionSslCertificate.id}\n serverTlsPolicy: ${defaultServerTlsPolicy.id}\n defaultTrustConfig:\n type: gcp:certificatemanager:TrustConfig\n name: default\n properties:\n location: us-central1\n name: my-trust-config\n description: sample description for trust config\n trustStores:\n - trustAnchors:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n intermediateCas:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n labels:\n foo: bar\n defaultServerTlsPolicy:\n type: gcp:networksecurity:ServerTlsPolicy\n name: default\n properties:\n location: us-central1\n name: my-tls-policy\n description: my description\n allowOpen: 'false'\n mtlsPolicy:\n clientValidationMode: REJECT_INVALID\n clientValidationTrustConfig: projects/${project.number}/locations/us-central1/trustConfigs/${defaultTrustConfig.name}\n defaultRegionSslCertificate:\n type: gcp:compute:RegionSslCertificate\n name: default\n properties:\n region: us-central1\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n region: us-central1\n name: url-map\n description: a description\n defaultService: ${defaultRegionBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultRegionBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultRegionBackendService.id}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n region: us-central1\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: INTERNAL_MANAGED\n healthChecks: ${defaultRegionHealthCheck.id}\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n region: us-central1\n name: http-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n httpHealthCheck:\n port: 80\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Target Https Proxy Certificate Manager Certificate\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultCertificate = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"my-certificate\",\n location: \"us-central1\",\n selfManaged: {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n pemPrivateKey: std.file({\n input: \"test-fixtures/private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n name: \"backend-service\",\n region: \"us-central1\",\n protocol: \"HTTPS\",\n timeoutSec: 30,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n name: \"url-map\",\n defaultService: defaultRegionBackendService.id,\n region: \"us-central1\",\n});\nconst _default = new gcp.compute.RegionTargetHttpsProxy(\"default\", {\n name: \"target-http-proxy\",\n urlMap: defaultRegionUrlMap.id,\n certificateManagerCertificates: [pulumi.interpolate`//certificatemanager.googleapis.com/${defaultCertificate.id}`],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_certificate = gcp.certificatemanager.Certificate(\"default\",\n name=\"my-certificate\",\n location=\"us-central1\",\n self_managed={\n \"pem_certificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n \"pem_private_key\": std.file(input=\"test-fixtures/private-key.pem\").result,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n name=\"backend-service\",\n region=\"us-central1\",\n protocol=\"HTTPS\",\n timeout_sec=30,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n name=\"url-map\",\n default_service=default_region_backend_service.id,\n region=\"us-central1\")\ndefault = gcp.compute.RegionTargetHttpsProxy(\"default\",\n name=\"target-http-proxy\",\n url_map=default_region_url_map.id,\n certificate_manager_certificates=[default_certificate.id.apply(lambda id: f\"//certificatemanager.googleapis.com/{id}\")])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultCertificate = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"my-certificate\",\n Location = \"us-central1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n PemPrivateKey = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"backend-service\",\n Region = \"us-central1\",\n Protocol = \"HTTPS\",\n TimeoutSec = 30,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Name = \"url-map\",\n DefaultService = defaultRegionBackendService.Id,\n Region = \"us-central1\",\n });\n\n var @default = new Gcp.Compute.RegionTargetHttpsProxy(\"default\", new()\n {\n Name = \"target-http-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n CertificateManagerCertificates = new[]\n {\n defaultCertificate.Id.Apply(id =\u003e $\"//certificatemanager.googleapis.com/{id}\"),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCertificate, err := certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\tPemPrivateKey: pulumi.String(invokeFile1.Result),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tProtocol: pulumi.String(\"HTTPS\"),\n\t\t\tTimeoutSec: pulumi.Int(30),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\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\t_, err = compute.NewRegionTargetHttpsProxy(ctx, \"default\", \u0026compute.RegionTargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"target-http-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.ID(),\n\t\t\tCertificateManagerCertificates: pulumi.StringArray{\n\t\t\t\tdefaultCertificate.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"//certificatemanager.googleapis.com/%v\", id), nil\n\t\t\t\t}).(pulumi.StringOutput),\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 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.RegionTargetHttpsProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxyArgs;\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 .name(\"my-certificate\")\n .location(\"us-central1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .pemPrivateKey(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/private-key.pem\")\n .build()).result())\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .name(\"backend-service\")\n .region(\"us-central1\")\n .protocol(\"HTTPS\")\n .timeoutSec(30)\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .name(\"url-map\")\n .defaultService(defaultRegionBackendService.id())\n .region(\"us-central1\")\n .build());\n\n var default_ = new RegionTargetHttpsProxy(\"default\", RegionTargetHttpsProxyArgs.builder()\n .name(\"target-http-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .certificateManagerCertificates(defaultCertificate.id().applyValue(id -\u003e String.format(\"//certificatemanager.googleapis.com/%s\", id)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionTargetHttpsProxy\n properties:\n name: target-http-proxy\n urlMap: ${defaultRegionUrlMap.id}\n certificateManagerCertificates: # [google_certificate_manager_certificate.default.id] is also acceptable\n - //certificatemanager.googleapis.com/${defaultCertificate.id}\n defaultCertificate:\n type: gcp:certificatemanager:Certificate\n name: default\n properties:\n name: my-certificate\n location: us-central1\n selfManaged:\n pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n pemPrivateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/private-key.pem\n Return: result\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n name: url-map\n defaultService: ${defaultRegionBackendService.id}\n region: us-central1\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n name: backend-service\n region: us-central1\n protocol: HTTPS\n timeoutSec: 30\n loadBalancingScheme: INTERNAL_MANAGED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionTargetHttpsProxy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/targetHttpsProxies/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionTargetHttpsProxy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpsProxy:RegionTargetHttpsProxy default projects/{{project}}/regions/{{region}}/targetHttpsProxies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpsProxy:RegionTargetHttpsProxy default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpsProxy:RegionTargetHttpsProxy default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpsProxy:RegionTargetHttpsProxy default {{name}}\n```\n\n", "properties": { "certificateManagerCertificates": { "type": "array", @@ -160549,7 +160549,7 @@ } }, "gcp:compute/regionUrlMap:RegionUrlMap": { - "description": "UrlMaps are used to route requests to a backend service based on rules\nthat you define for the host and path of an incoming URL.\n\n\n\n## Example Usage\n\n### Region Url Map Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n httpHealthCheck: {\n port: 80,\n requestPath: \"/\",\n },\n});\nconst login = new gcp.compute.RegionBackendService(\"login\", {\n region: \"us-central1\",\n name: \"login\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n region: \"us-central1\",\n name: \"home\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n region: \"us-central1\",\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [\n {\n paths: [\"/home\"],\n service: home.id,\n },\n {\n paths: [\"/login\"],\n service: login.id,\n },\n ],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n http_health_check={\n \"port\": 80,\n \"requestPath\": \"/\",\n })\nlogin = gcp.compute.RegionBackendService(\"login\",\n region=\"us-central1\",\n name=\"login\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default.id)\nhome = gcp.compute.RegionBackendService(\"home\",\n region=\"us-central1\",\n name=\"home\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default.id)\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n region=\"us-central1\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": home.id,\n \"pathRules\": [\n {\n \"paths\": [\"/home\"],\n \"service\": home.id,\n },\n {\n \"paths\": [\"/login\"],\n \"service\": login.id,\n },\n ],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n RequestPath = \"/\",\n },\n });\n\n var login = new Gcp.Compute.RegionBackendService(\"login\", new()\n {\n Region = \"us-central1\",\n Name = \"login\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Region = \"us-central1\",\n Name = \"home\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Region = \"us-central1\",\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n Service = home.Id,\n },\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/login\",\n },\n Service = login.Id,\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogin, err := compute.NewRegionBackendService(ctx, \"login\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"login\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: home.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/login\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: login.ID(),\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\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.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.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\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 RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .requestPath(\"/\")\n .build())\n .build());\n\n var login = new RegionBackendService(\"login\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"login\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"home\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules( \n RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .service(home.id())\n .build(),\n RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/login\")\n .service(login.id())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n region: us-central1\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n service: ${home.id}\n - paths:\n - /login\n service: ${login.id}\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n login:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: login\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${default.id}\n home:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: home\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${default.id}\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: us-central1\n name: health-check\n checkIntervalSec: 1\n timeoutSec: 1\n httpHealthCheck:\n port: 80\n requestPath: /\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map Default Route Action\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n httpHealthCheck: {\n port: 80,\n requestPath: \"/\",\n },\n});\nconst login = new gcp.compute.RegionBackendService(\"login\", {\n region: \"us-central1\",\n name: \"login\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n region: \"us-central1\",\n name: \"home\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n region: \"us-central1\",\n name: \"regionurlmap\",\n description: \"a description\",\n defaultRouteAction: {\n retryPolicy: {\n retryConditions: [\n \"5xx\",\n \"gateway-error\",\n ],\n numRetries: 3,\n perTryTimeout: {\n seconds: \"0\",\n nanos: 500,\n },\n },\n requestMirrorPolicy: {\n backendService: home.id,\n },\n weightedBackendServices: [\n {\n backendService: login.id,\n weight: 200,\n headerAction: {\n requestHeadersToAdds: [{\n headerName: \"foo-request-1\",\n headerValue: \"bar\",\n replace: true,\n }],\n requestHeadersToRemoves: [\"fizz\"],\n responseHeadersToAdds: [{\n headerName: \"foo-response-1\",\n headerValue: \"bar\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"buzz\"],\n },\n },\n {\n backendService: home.id,\n weight: 100,\n headerAction: {\n requestHeadersToAdds: [\n {\n headerName: \"foo-request-1\",\n headerValue: \"bar\",\n replace: true,\n },\n {\n headerName: \"foo-request-2\",\n headerValue: \"bar\",\n replace: true,\n },\n ],\n requestHeadersToRemoves: [\"fizz\"],\n responseHeadersToAdds: [\n {\n headerName: \"foo-response-2\",\n headerValue: \"bar\",\n replace: true,\n },\n {\n headerName: \"foo-response-1\",\n headerValue: \"bar\",\n replace: true,\n },\n ],\n responseHeadersToRemoves: [\"buzz\"],\n },\n },\n ],\n urlRewrite: {\n hostRewrite: \"dev.example.com\",\n pathPrefixRewrite: \"/v1/api/\",\n },\n corsPolicy: {\n disabled: false,\n allowCredentials: true,\n allowHeaders: [\"foobar\"],\n allowMethods: [\n \"GET\",\n \"POST\",\n ],\n allowOrigins: [\"example.com\"],\n exposeHeaders: [\"foobar\"],\n maxAge: 60,\n },\n faultInjectionPolicy: {\n delay: {\n fixedDelay: {\n seconds: \"0\",\n nanos: 500,\n },\n percentage: 0.5,\n },\n abort: {\n httpStatus: 500,\n percentage: 0.5,\n },\n },\n timeout: {\n seconds: \"0\",\n nanos: 500,\n },\n },\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [\n {\n paths: [\"/home\"],\n service: home.id,\n },\n {\n paths: [\"/login\"],\n service: login.id,\n },\n ],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n http_health_check={\n \"port\": 80,\n \"requestPath\": \"/\",\n })\nlogin = gcp.compute.RegionBackendService(\"login\",\n region=\"us-central1\",\n name=\"login\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default.id)\nhome = gcp.compute.RegionBackendService(\"home\",\n region=\"us-central1\",\n name=\"home\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default.id)\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n region=\"us-central1\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_route_action={\n \"retryPolicy\": {\n \"retryConditions\": [\n \"5xx\",\n \"gateway-error\",\n ],\n \"numRetries\": 3,\n \"perTryTimeout\": {\n \"seconds\": \"0\",\n \"nanos\": 500,\n },\n },\n \"requestMirrorPolicy\": {\n \"backendService\": home.id,\n },\n \"weightedBackendServices\": [\n {\n \"backendService\": login.id,\n \"weight\": 200,\n \"headerAction\": {\n \"requestHeadersToAdds\": [{\n \"headerName\": \"foo-request-1\",\n \"headerValue\": \"bar\",\n \"replace\": True,\n }],\n \"requestHeadersToRemoves\": [\"fizz\"],\n \"responseHeadersToAdds\": [{\n \"headerName\": \"foo-response-1\",\n \"headerValue\": \"bar\",\n \"replace\": True,\n }],\n \"responseHeadersToRemoves\": [\"buzz\"],\n },\n },\n {\n \"backendService\": home.id,\n \"weight\": 100,\n \"headerAction\": {\n \"requestHeadersToAdds\": [\n {\n \"headerName\": \"foo-request-1\",\n \"headerValue\": \"bar\",\n \"replace\": True,\n },\n {\n \"headerName\": \"foo-request-2\",\n \"headerValue\": \"bar\",\n \"replace\": True,\n },\n ],\n \"requestHeadersToRemoves\": [\"fizz\"],\n \"responseHeadersToAdds\": [\n {\n \"headerName\": \"foo-response-2\",\n \"headerValue\": \"bar\",\n \"replace\": True,\n },\n {\n \"headerName\": \"foo-response-1\",\n \"headerValue\": \"bar\",\n \"replace\": True,\n },\n ],\n \"responseHeadersToRemoves\": [\"buzz\"],\n },\n },\n ],\n \"urlRewrite\": {\n \"hostRewrite\": \"dev.example.com\",\n \"pathPrefixRewrite\": \"/v1/api/\",\n },\n \"corsPolicy\": {\n \"disabled\": False,\n \"allowCredentials\": True,\n \"allowHeaders\": [\"foobar\"],\n \"allowMethods\": [\n \"GET\",\n \"POST\",\n ],\n \"allowOrigins\": [\"example.com\"],\n \"exposeHeaders\": [\"foobar\"],\n \"maxAge\": 60,\n },\n \"faultInjectionPolicy\": {\n \"delay\": {\n \"fixedDelay\": {\n \"seconds\": \"0\",\n \"nanos\": 500,\n },\n \"percentage\": 0.5,\n },\n \"abort\": {\n \"httpStatus\": 500,\n \"percentage\": 0.5,\n },\n },\n \"timeout\": {\n \"seconds\": \"0\",\n \"nanos\": 500,\n },\n },\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": home.id,\n \"pathRules\": [\n {\n \"paths\": [\"/home\"],\n \"service\": home.id,\n },\n {\n \"paths\": [\"/login\"],\n \"service\": login.id,\n },\n ],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n RequestPath = \"/\",\n },\n });\n\n var login = new Gcp.Compute.RegionBackendService(\"login\", new()\n {\n Region = \"us-central1\",\n Name = \"login\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Region = \"us-central1\",\n Name = \"home\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Region = \"us-central1\",\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultRouteAction = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionArgs\n {\n RetryPolicy = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"5xx\",\n \"gateway-error\",\n },\n NumRetries = 3,\n PerTryTimeout = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeoutArgs\n {\n Seconds = \"0\",\n Nanos = 500,\n },\n },\n RequestMirrorPolicy = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionRequestMirrorPolicyArgs\n {\n BackendService = home.Id,\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs\n {\n BackendService = login.Id,\n Weight = 200,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"foo-request-1\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n },\n RequestHeadersToRemoves = new[]\n {\n \"fizz\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"foo-response-1\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"buzz\",\n },\n },\n },\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 100,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"foo-request-1\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"foo-request-2\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n },\n RequestHeadersToRemoves = new[]\n {\n \"fizz\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"foo-response-2\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"foo-response-1\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"buzz\",\n },\n },\n },\n },\n UrlRewrite = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionUrlRewriteArgs\n {\n HostRewrite = \"dev.example.com\",\n PathPrefixRewrite = \"/v1/api/\",\n },\n CorsPolicy = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionCorsPolicyArgs\n {\n Disabled = false,\n AllowCredentials = true,\n AllowHeaders = new[]\n {\n \"foobar\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n \"POST\",\n },\n AllowOrigins = new[]\n {\n \"example.com\",\n },\n ExposeHeaders = new[]\n {\n \"foobar\",\n },\n MaxAge = 60,\n },\n FaultInjectionPolicy = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyArgs\n {\n Delay = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelayArgs\n {\n Seconds = \"0\",\n Nanos = 500,\n },\n Percentage = 0.5,\n },\n Abort = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 500,\n Percentage = 0.5,\n },\n },\n Timeout = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionTimeoutArgs\n {\n Seconds = \"0\",\n Nanos = 500,\n },\n },\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n Service = home.Id,\n },\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/login\",\n },\n Service = login.Id,\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogin, err := compute.NewRegionBackendService(ctx, \"login\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"login\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultRouteAction: \u0026compute.RegionUrlMapDefaultRouteActionArgs{\n\t\t\t\tRetryPolicy: \u0026compute.RegionUrlMapDefaultRouteActionRetryPolicyArgs{\n\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\tpulumi.String(\"gateway-error\"),\n\t\t\t\t\t},\n\t\t\t\t\tNumRetries: pulumi.Int(3),\n\t\t\t\t\tPerTryTimeout: \u0026compute.RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeoutArgs{\n\t\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\t\tNanos: pulumi.Int(500),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRequestMirrorPolicy: \u0026compute.RegionUrlMapDefaultRouteActionRequestMirrorPolicyArgs{\n\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t},\n\t\t\t\tWeightedBackendServices: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\tBackendService: login.ID(),\n\t\t\t\t\t\tWeight: pulumi.Int(200),\n\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\tRequestHeadersToAdds: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-request-1\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"fizz\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-response-1\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"buzz\"),\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\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\tWeight: pulumi.Int(100),\n\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\tRequestHeadersToAdds: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-request-1\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-request-2\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"fizz\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-response-2\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-response-1\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"buzz\"),\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\tUrlRewrite: \u0026compute.RegionUrlMapDefaultRouteActionUrlRewriteArgs{\n\t\t\t\t\tHostRewrite: pulumi.String(\"dev.example.com\"),\n\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/v1/api/\"),\n\t\t\t\t},\n\t\t\t\tCorsPolicy: \u0026compute.RegionUrlMapDefaultRouteActionCorsPolicyArgs{\n\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"foobar\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\tpulumi.String(\"POST\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"foobar\"),\n\t\t\t\t\t},\n\t\t\t\t\tMaxAge: pulumi.Int(60),\n\t\t\t\t},\n\t\t\t\tFaultInjectionPolicy: \u0026compute.RegionUrlMapDefaultRouteActionFaultInjectionPolicyArgs{\n\t\t\t\t\tDelay: \u0026compute.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\tFixedDelay: \u0026compute.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelayArgs{\n\t\t\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\t\t\tNanos: pulumi.Int(500),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPercentage: pulumi.Float64(0.5),\n\t\t\t\t\t},\n\t\t\t\t\tAbort: \u0026compute.RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\tHttpStatus: pulumi.Int(500),\n\t\t\t\t\t\tPercentage: pulumi.Float64(0.5),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTimeout: \u0026compute.RegionUrlMapDefaultRouteActionTimeoutArgs{\n\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\tNanos: pulumi.Int(500),\n\t\t\t\t},\n\t\t\t},\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: home.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/login\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: login.ID(),\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\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.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.inputs.RegionUrlMapDefaultRouteActionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionRetryPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeoutArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionRequestMirrorPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionUrlRewriteArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionCorsPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelayArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbortArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionTimeoutArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\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 RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .requestPath(\"/\")\n .build())\n .build());\n\n var login = new RegionBackendService(\"login\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"login\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"home\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultRouteAction(RegionUrlMapDefaultRouteActionArgs.builder()\n .retryPolicy(RegionUrlMapDefaultRouteActionRetryPolicyArgs.builder()\n .retryConditions( \n \"5xx\",\n \"gateway-error\")\n .numRetries(3)\n .perTryTimeout(RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeoutArgs.builder()\n .seconds(0)\n .nanos(500)\n .build())\n .build())\n .requestMirrorPolicy(RegionUrlMapDefaultRouteActionRequestMirrorPolicyArgs.builder()\n .backendService(home.id())\n .build())\n .weightedBackendServices( \n RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs.builder()\n .backendService(login.id())\n .weight(200)\n .headerAction(RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToAdds(RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"foo-request-1\")\n .headerValue(\"bar\")\n .replace(true)\n .build())\n .requestHeadersToRemoves(\"fizz\")\n .responseHeadersToAdds(RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"foo-response-1\")\n .headerValue(\"bar\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"buzz\")\n .build())\n .build(),\n RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(100)\n .headerAction(RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToAdds( \n RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"foo-request-1\")\n .headerValue(\"bar\")\n .replace(true)\n .build(),\n RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"foo-request-2\")\n .headerValue(\"bar\")\n .replace(true)\n .build())\n .requestHeadersToRemoves(\"fizz\")\n .responseHeadersToAdds( \n RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"foo-response-2\")\n .headerValue(\"bar\")\n .replace(true)\n .build(),\n RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"foo-response-1\")\n .headerValue(\"bar\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"buzz\")\n .build())\n .build())\n .urlRewrite(RegionUrlMapDefaultRouteActionUrlRewriteArgs.builder()\n .hostRewrite(\"dev.example.com\")\n .pathPrefixRewrite(\"/v1/api/\")\n .build())\n .corsPolicy(RegionUrlMapDefaultRouteActionCorsPolicyArgs.builder()\n .disabled(false)\n .allowCredentials(true)\n .allowHeaders(\"foobar\")\n .allowMethods( \n \"GET\",\n \"POST\")\n .allowOrigins(\"example.com\")\n .exposeHeaders(\"foobar\")\n .maxAge(60)\n .build())\n .faultInjectionPolicy(RegionUrlMapDefaultRouteActionFaultInjectionPolicyArgs.builder()\n .delay(RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelayArgs.builder()\n .seconds(0)\n .nanos(500)\n .build())\n .percentage(0.5)\n .build())\n .abort(RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(500)\n .percentage(0.5)\n .build())\n .build())\n .timeout(RegionUrlMapDefaultRouteActionTimeoutArgs.builder()\n .seconds(0)\n .nanos(500)\n .build())\n .build())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules( \n RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .service(home.id())\n .build(),\n RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/login\")\n .service(login.id())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n region: us-central1\n name: regionurlmap\n description: a description\n defaultRouteAction:\n retryPolicy:\n retryConditions:\n - 5xx\n - gateway-error\n numRetries: 3\n perTryTimeout:\n seconds: 0\n nanos: 500\n requestMirrorPolicy:\n backendService: ${home.id}\n weightedBackendServices:\n - backendService: ${login.id}\n weight: 200\n headerAction:\n requestHeadersToAdds:\n - headerName: foo-request-1\n headerValue: bar\n replace: true\n requestHeadersToRemoves:\n - fizz\n responseHeadersToAdds:\n - headerName: foo-response-1\n headerValue: bar\n replace: true\n responseHeadersToRemoves:\n - buzz\n - backendService: ${home.id}\n weight: 100\n headerAction:\n requestHeadersToAdds:\n - headerName: foo-request-1\n headerValue: bar\n replace: true\n - headerName: foo-request-2\n headerValue: bar\n replace: true\n requestHeadersToRemoves:\n - fizz\n responseHeadersToAdds:\n - headerName: foo-response-2\n headerValue: bar\n replace: true\n - headerName: foo-response-1\n headerValue: bar\n replace: true\n responseHeadersToRemoves:\n - buzz\n urlRewrite:\n hostRewrite: dev.example.com\n pathPrefixRewrite: /v1/api/\n corsPolicy:\n disabled: false\n allowCredentials: true\n allowHeaders:\n - foobar\n allowMethods:\n - GET\n - POST\n allowOrigins:\n - example.com\n exposeHeaders:\n - foobar\n maxAge: 60\n faultInjectionPolicy:\n delay:\n fixedDelay:\n seconds: 0\n nanos: 500\n percentage: 0.5\n abort:\n httpStatus: 500\n percentage: 0.5\n timeout:\n seconds: 0\n nanos: 500\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n service: ${home.id}\n - paths:\n - /login\n service: ${login.id}\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n login:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: login\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${default.id}\n home:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: home\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${default.id}\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: us-central1\n name: health-check\n checkIntervalSec: 1\n timeoutSec: 1\n httpHealthCheck:\n port: 80\n requestPath: /\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map L7 Ilb Path\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n name: \"home\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [{\n paths: [\"/home\"],\n routeAction: {\n corsPolicy: {\n allowCredentials: true,\n allowHeaders: [\"Allowed content\"],\n allowMethods: [\"GET\"],\n allowOrigins: [\"Allowed origin\"],\n exposeHeaders: [\"Exposed header\"],\n maxAge: 30,\n disabled: false,\n },\n faultInjectionPolicy: {\n abort: {\n httpStatus: 234,\n percentage: 5.6,\n },\n delay: {\n fixedDelay: {\n seconds: \"0\",\n nanos: 50000,\n },\n percentage: 7.8,\n },\n },\n requestMirrorPolicy: {\n backendService: home.id,\n },\n retryPolicy: {\n numRetries: 4,\n perTryTimeout: {\n seconds: \"30\",\n },\n retryConditions: [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n timeout: {\n seconds: \"20\",\n nanos: 750000000,\n },\n urlRewrite: {\n hostRewrite: \"dev.example.com\",\n pathPrefixRewrite: \"/v1/api/\",\n },\n weightedBackendServices: [{\n backendService: home.id,\n weight: 400,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe\"],\n requestHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n }],\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.RegionBackendService(\"home\",\n name=\"home\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": home.id,\n \"pathRules\": [{\n \"paths\": [\"/home\"],\n \"routeAction\": {\n \"corsPolicy\": {\n \"allowCredentials\": True,\n \"allowHeaders\": [\"Allowed content\"],\n \"allowMethods\": [\"GET\"],\n \"allowOrigins\": [\"Allowed origin\"],\n \"exposeHeaders\": [\"Exposed header\"],\n \"maxAge\": 30,\n \"disabled\": False,\n },\n \"faultInjectionPolicy\": {\n \"abort\": {\n \"httpStatus\": 234,\n \"percentage\": 5.6,\n },\n \"delay\": {\n \"fixedDelay\": {\n \"seconds\": \"0\",\n \"nanos\": 50000,\n },\n \"percentage\": 7.8,\n },\n },\n \"requestMirrorPolicy\": {\n \"backendService\": home.id,\n },\n \"retryPolicy\": {\n \"numRetries\": 4,\n \"perTryTimeout\": {\n \"seconds\": \"30\",\n },\n \"retryConditions\": [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n \"timeout\": {\n \"seconds\": \"20\",\n \"nanos\": 750000000,\n },\n \"urlRewrite\": {\n \"hostRewrite\": \"dev.example.com\",\n \"pathPrefixRewrite\": \"/v1/api/\",\n },\n \"weightedBackendServices\": [{\n \"backendService\": home.id,\n \"weight\": 400,\n \"headerAction\": {\n \"requestHeadersToRemoves\": [\"RemoveMe\"],\n \"requestHeadersToAdds\": [{\n \"headerName\": \"AddMe\",\n \"headerValue\": \"MyValue\",\n \"replace\": True,\n }],\n \"responseHeadersToRemoves\": [\"RemoveMe\"],\n \"responseHeadersToAdds\": [{\n \"headerName\": \"AddMe\",\n \"headerValue\": \"MyValue\",\n \"replace\": False,\n }],\n },\n }],\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Name = \"home\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n RouteAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionArgs\n {\n CorsPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionCorsPolicyArgs\n {\n AllowCredentials = true,\n AllowHeaders = new[]\n {\n \"Allowed content\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n },\n AllowOrigins = new[]\n {\n \"Allowed origin\",\n },\n ExposeHeaders = new[]\n {\n \"Exposed header\",\n },\n MaxAge = 30,\n Disabled = false,\n },\n FaultInjectionPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs\n {\n Abort = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 234,\n Percentage = 5.6,\n },\n Delay = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs\n {\n Seconds = \"0\",\n Nanos = 50000,\n },\n Percentage = 7.8,\n },\n },\n RequestMirrorPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs\n {\n BackendService = home.Id,\n },\n RetryPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs\n {\n NumRetries = 4,\n PerTryTimeout = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs\n {\n Seconds = \"30\",\n },\n RetryConditions = new[]\n {\n \"5xx\",\n \"deadline-exceeded\",\n },\n },\n Timeout = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs\n {\n Seconds = \"20\",\n Nanos = 750000000,\n },\n UrlRewrite = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs\n {\n HostRewrite = \"dev.example.com\",\n PathPrefixRewrite = \"/v1/api/\",\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 400,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRouteAction: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tCorsPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed content\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed origin\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Exposed header\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMaxAge: pulumi.Int(30),\n\t\t\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tFaultInjectionPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs{\n\t\t\t\t\t\t\t\t\tAbort: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\t\t\t\t\tHttpStatus: pulumi.Int(234),\n\t\t\t\t\t\t\t\t\t\tPercentage: pulumi.Float64(5.6),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tDelay: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\t\t\t\t\tFixedDelay: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs{\n\t\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(50000),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tPercentage: pulumi.Float64(7.8),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRequestMirrorPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRetryPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs{\n\t\t\t\t\t\t\t\t\tNumRetries: pulumi.Int(4),\n\t\t\t\t\t\t\t\t\tPerTryTimeout: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs{\n\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"30\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"deadline-exceeded\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tTimeout: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs{\n\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"20\"),\n\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(750000000),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"dev.example.com\"),\n\t\t\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/v1/api/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tWeightedBackendServices: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t\t\tWeight: pulumi.Int(400),\n\t\t\t\t\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.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.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\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 RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .name(\"home\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .routeAction(RegionUrlMapPathMatcherPathRuleRouteActionArgs.builder()\n .corsPolicy(RegionUrlMapPathMatcherPathRuleRouteActionCorsPolicyArgs.builder()\n .allowCredentials(true)\n .allowHeaders(\"Allowed content\")\n .allowMethods(\"GET\")\n .allowOrigins(\"Allowed origin\")\n .exposeHeaders(\"Exposed header\")\n .maxAge(30)\n .disabled(false)\n .build())\n .faultInjectionPolicy(RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs.builder()\n .abort(RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(234)\n .percentage(5.6)\n .build())\n .delay(RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs.builder()\n .seconds(0)\n .nanos(50000)\n .build())\n .percentage(7.8)\n .build())\n .build())\n .requestMirrorPolicy(RegionUrlMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs.builder()\n .backendService(home.id())\n .build())\n .retryPolicy(RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs.builder()\n .numRetries(4)\n .perTryTimeout(RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs.builder()\n .seconds(30)\n .build())\n .retryConditions( \n \"5xx\",\n \"deadline-exceeded\")\n .build())\n .timeout(RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs.builder()\n .seconds(20)\n .nanos(750000000)\n .build())\n .urlRewrite(RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs.builder()\n .hostRewrite(\"dev.example.com\")\n .pathPrefixRewrite(\"/v1/api/\")\n .build())\n .weightedBackendServices(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(400)\n .headerAction(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe\")\n .requestHeadersToAdds(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe\")\n .responseHeadersToAdds(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n routeAction:\n corsPolicy:\n allowCredentials: true\n allowHeaders:\n - Allowed content\n allowMethods:\n - GET\n allowOrigins:\n - Allowed origin\n exposeHeaders:\n - Exposed header\n maxAge: 30\n disabled: false\n faultInjectionPolicy:\n abort:\n httpStatus: 234\n percentage: 5.6\n delay:\n fixedDelay:\n seconds: 0\n nanos: 50000\n percentage: 7.8\n requestMirrorPolicy:\n backendService: ${home.id}\n retryPolicy:\n numRetries: 4\n perTryTimeout:\n seconds: 30\n retryConditions:\n - 5xx\n - deadline-exceeded\n timeout:\n seconds: 20\n nanos: 7.5e+08\n urlRewrite:\n hostRewrite: dev.example.com\n pathPrefixRewrite: /v1/api/\n weightedBackendServices:\n - backendService: ${home.id}\n weight: 400\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe\n requestHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:RegionBackendService\n properties:\n name: home\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_MANAGED\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map L7 Ilb Path Partial\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n name: \"home\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [{\n paths: [\"/home\"],\n routeAction: {\n retryPolicy: {\n numRetries: 4,\n perTryTimeout: {\n seconds: \"30\",\n },\n retryConditions: [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n timeout: {\n seconds: \"20\",\n nanos: 750000000,\n },\n urlRewrite: {\n hostRewrite: \"dev.example.com\",\n pathPrefixRewrite: \"/v1/api/\",\n },\n weightedBackendServices: [{\n backendService: home.id,\n weight: 400,\n headerAction: {\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n }],\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.RegionBackendService(\"home\",\n name=\"home\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": home.id,\n \"pathRules\": [{\n \"paths\": [\"/home\"],\n \"routeAction\": {\n \"retryPolicy\": {\n \"numRetries\": 4,\n \"perTryTimeout\": {\n \"seconds\": \"30\",\n },\n \"retryConditions\": [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n \"timeout\": {\n \"seconds\": \"20\",\n \"nanos\": 750000000,\n },\n \"urlRewrite\": {\n \"hostRewrite\": \"dev.example.com\",\n \"pathPrefixRewrite\": \"/v1/api/\",\n },\n \"weightedBackendServices\": [{\n \"backendService\": home.id,\n \"weight\": 400,\n \"headerAction\": {\n \"responseHeadersToAdds\": [{\n \"headerName\": \"AddMe\",\n \"headerValue\": \"MyValue\",\n \"replace\": False,\n }],\n },\n }],\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Name = \"home\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n RouteAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionArgs\n {\n RetryPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs\n {\n NumRetries = 4,\n PerTryTimeout = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs\n {\n Seconds = \"30\",\n },\n RetryConditions = new[]\n {\n \"5xx\",\n \"deadline-exceeded\",\n },\n },\n Timeout = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs\n {\n Seconds = \"20\",\n Nanos = 750000000,\n },\n UrlRewrite = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs\n {\n HostRewrite = \"dev.example.com\",\n PathPrefixRewrite = \"/v1/api/\",\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 400,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs\n {\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRouteAction: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tRetryPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs{\n\t\t\t\t\t\t\t\t\tNumRetries: pulumi.Int(4),\n\t\t\t\t\t\t\t\t\tPerTryTimeout: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs{\n\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"30\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"deadline-exceeded\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tTimeout: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs{\n\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"20\"),\n\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(750000000),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"dev.example.com\"),\n\t\t\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/v1/api/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tWeightedBackendServices: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t\t\tWeight: pulumi.Int(400),\n\t\t\t\t\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.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.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\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 RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .name(\"home\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .routeAction(RegionUrlMapPathMatcherPathRuleRouteActionArgs.builder()\n .retryPolicy(RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs.builder()\n .numRetries(4)\n .perTryTimeout(RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs.builder()\n .seconds(30)\n .build())\n .retryConditions( \n \"5xx\",\n \"deadline-exceeded\")\n .build())\n .timeout(RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs.builder()\n .seconds(20)\n .nanos(750000000)\n .build())\n .urlRewrite(RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs.builder()\n .hostRewrite(\"dev.example.com\")\n .pathPrefixRewrite(\"/v1/api/\")\n .build())\n .weightedBackendServices(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(400)\n .headerAction(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .responseHeadersToAdds(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n routeAction:\n retryPolicy:\n numRetries: 4\n perTryTimeout:\n seconds: 30\n retryConditions:\n - 5xx\n - deadline-exceeded\n timeout:\n seconds: 20\n nanos: 7.5e+08\n urlRewrite:\n hostRewrite: dev.example.com\n pathPrefixRewrite: /v1/api/\n weightedBackendServices:\n - backendService: ${home.id}\n weight: 400\n headerAction:\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:RegionBackendService\n properties:\n name: home\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_MANAGED\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map L7 Ilb Route\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n name: \"home\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n routeRules: [{\n priority: 1,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe2\"],\n requestHeadersToAdds: [{\n headerName: \"AddSomethingElse\",\n headerValue: \"MyOtherValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe3\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n matchRules: [{\n fullPathMatch: \"a full path\",\n headerMatches: [{\n headerName: \"someheader\",\n exactMatch: \"match this exactly\",\n invertMatch: true,\n }],\n ignoreCase: true,\n metadataFilters: [{\n filterMatchCriteria: \"MATCH_ANY\",\n filterLabels: [{\n name: \"PLANET\",\n value: \"MARS\",\n }],\n }],\n queryParameterMatches: [{\n name: \"a query parameter\",\n presentMatch: true,\n }],\n }],\n urlRedirect: {\n hostRedirect: \"A host\",\n httpsRedirect: false,\n pathRedirect: \"some/path\",\n redirectResponseCode: \"TEMPORARY_REDIRECT\",\n stripQuery: true,\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.RegionBackendService(\"home\",\n name=\"home\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": home.id,\n \"routeRules\": [{\n \"priority\": 1,\n \"headerAction\": {\n \"requestHeadersToRemoves\": [\"RemoveMe2\"],\n \"requestHeadersToAdds\": [{\n \"headerName\": \"AddSomethingElse\",\n \"headerValue\": \"MyOtherValue\",\n \"replace\": True,\n }],\n \"responseHeadersToRemoves\": [\"RemoveMe3\"],\n \"responseHeadersToAdds\": [{\n \"headerName\": \"AddMe\",\n \"headerValue\": \"MyValue\",\n \"replace\": False,\n }],\n },\n \"matchRules\": [{\n \"fullPathMatch\": \"a full path\",\n \"headerMatches\": [{\n \"headerName\": \"someheader\",\n \"exactMatch\": \"match this exactly\",\n \"invertMatch\": True,\n }],\n \"ignoreCase\": True,\n \"metadataFilters\": [{\n \"filterMatchCriteria\": \"MATCH_ANY\",\n \"filterLabels\": [{\n \"name\": \"PLANET\",\n \"value\": \"MARS\",\n }],\n }],\n \"queryParameterMatches\": [{\n \"name\": \"a query parameter\",\n \"presentMatch\": True,\n }],\n }],\n \"urlRedirect\": {\n \"hostRedirect\": \"A host\",\n \"httpsRedirect\": False,\n \"pathRedirect\": \"some/path\",\n \"redirectResponseCode\": \"TEMPORARY_REDIRECT\",\n \"stripQuery\": True,\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Name = \"home\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe2\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddSomethingElse\",\n HeaderValue = \"MyOtherValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe3\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"a full path\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"someheader\",\n ExactMatch = \"match this exactly\",\n InvertMatch = true,\n },\n },\n IgnoreCase = true,\n MetadataFilters = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs\n {\n FilterMatchCriteria = \"MATCH_ANY\",\n FilterLabels = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs\n {\n Name = \"PLANET\",\n Value = \"MARS\",\n },\n },\n },\n },\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"a query parameter\",\n PresentMatch = true,\n },\n },\n },\n },\n UrlRedirect = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleUrlRedirectArgs\n {\n HostRedirect = \"A host\",\n HttpsRedirect = false,\n PathRedirect = \"some/path\",\n RedirectResponseCode = \"TEMPORARY_REDIRECT\",\n StripQuery = true,\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tRouteRules: compute.RegionUrlMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddSomethingElse\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyOtherValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMatchRules: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"a full path\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"someheader\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"match this exactly\"),\n\t\t\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tMetadataFilters: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs{\n\t\t\t\t\t\t\t\t\t\t\tFilterMatchCriteria: pulumi.String(\"MATCH_ANY\"),\n\t\t\t\t\t\t\t\t\t\t\tFilterLabels: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PLANET\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"MARS\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"a query parameter\"),\n\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tUrlRedirect: \u0026compute.RegionUrlMapPathMatcherRouteRuleUrlRedirectArgs{\n\t\t\t\t\t\t\t\tHostRedirect: pulumi.String(\"A host\"),\n\t\t\t\t\t\t\t\tHttpsRedirect: pulumi.Bool(false),\n\t\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"some/path\"),\n\t\t\t\t\t\t\t\tRedirectResponseCode: pulumi.String(\"TEMPORARY_REDIRECT\"),\n\t\t\t\t\t\t\t\tStripQuery: pulumi.Bool(true),\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\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.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.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\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 RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .name(\"home\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .routeRules(RegionUrlMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .headerAction(RegionUrlMapPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe2\")\n .requestHeadersToAdds(RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddSomethingElse\")\n .headerValue(\"MyOtherValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe3\")\n .responseHeadersToAdds(RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .matchRules(RegionUrlMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"a full path\")\n .headerMatches(RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"someheader\")\n .exactMatch(\"match this exactly\")\n .invertMatch(true)\n .build())\n .ignoreCase(true)\n .metadataFilters(RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs.builder()\n .filterMatchCriteria(\"MATCH_ANY\")\n .filterLabels(RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs.builder()\n .name(\"PLANET\")\n .value(\"MARS\")\n .build())\n .build())\n .queryParameterMatches(RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"a query parameter\")\n .presentMatch(true)\n .build())\n .build())\n .urlRedirect(RegionUrlMapPathMatcherRouteRuleUrlRedirectArgs.builder()\n .hostRedirect(\"A host\")\n .httpsRedirect(false)\n .pathRedirect(\"some/path\")\n .redirectResponseCode(\"TEMPORARY_REDIRECT\")\n .stripQuery(true)\n .build())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n routeRules:\n - priority: 1\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe2\n requestHeadersToAdds:\n - headerName: AddSomethingElse\n headerValue: MyOtherValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe3\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n matchRules:\n - fullPathMatch: a full path\n headerMatches:\n - headerName: someheader\n exactMatch: match this exactly\n invertMatch: true\n ignoreCase: true\n metadataFilters:\n - filterMatchCriteria: MATCH_ANY\n filterLabels:\n - name: PLANET\n value: MARS\n queryParameterMatches:\n - name: a query parameter\n presentMatch: true\n urlRedirect:\n hostRedirect: A host\n httpsRedirect: false\n pathRedirect: some/path\n redirectResponseCode: TEMPORARY_REDIRECT\n stripQuery: true\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:RegionBackendService\n properties:\n name: home\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_MANAGED\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map L7 Ilb Route Partial\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n name: \"home\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n routeRules: [{\n priority: 1,\n service: home.id,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe2\"],\n },\n matchRules: [{\n fullPathMatch: \"a full path\",\n headerMatches: [{\n headerName: \"someheader\",\n exactMatch: \"match this exactly\",\n invertMatch: true,\n }],\n queryParameterMatches: [{\n name: \"a query parameter\",\n presentMatch: true,\n }],\n }],\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.RegionBackendService(\"home\",\n name=\"home\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": home.id,\n \"routeRules\": [{\n \"priority\": 1,\n \"service\": home.id,\n \"headerAction\": {\n \"requestHeadersToRemoves\": [\"RemoveMe2\"],\n },\n \"matchRules\": [{\n \"fullPathMatch\": \"a full path\",\n \"headerMatches\": [{\n \"headerName\": \"someheader\",\n \"exactMatch\": \"match this exactly\",\n \"invertMatch\": True,\n }],\n \"queryParameterMatches\": [{\n \"name\": \"a query parameter\",\n \"presentMatch\": True,\n }],\n }],\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Name = \"home\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n Service = home.Id,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe2\",\n },\n },\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"a full path\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"someheader\",\n ExactMatch = \"match this exactly\",\n InvertMatch = true,\n },\n },\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"a query parameter\",\n PresentMatch = true,\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tRouteRules: compute.RegionUrlMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tService: home.ID(),\n\t\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMatchRules: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"a full path\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"someheader\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"match this exactly\"),\n\t\t\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"a query parameter\"),\n\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.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.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\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 RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .name(\"home\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .routeRules(RegionUrlMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .service(home.id())\n .headerAction(RegionUrlMapPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe2\")\n .build())\n .matchRules(RegionUrlMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"a full path\")\n .headerMatches(RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"someheader\")\n .exactMatch(\"match this exactly\")\n .invertMatch(true)\n .build())\n .queryParameterMatches(RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"a query parameter\")\n .presentMatch(true)\n .build())\n .build())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n routeRules:\n - priority: 1\n service: ${home.id}\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe2\n matchRules:\n - fullPathMatch: a full path\n headerMatches:\n - headerName: someheader\n exactMatch: match this exactly\n invertMatch: true\n queryParameterMatches:\n - name: a query parameter\n presentMatch: true\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:RegionBackendService\n properties:\n name: home\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_MANAGED\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map Path Template Match\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n httpHealthCheck: {\n port: 80,\n requestPath: \"/\",\n },\n});\nconst home_backend = new gcp.compute.RegionBackendService(\"home-backend\", {\n region: \"us-central1\",\n name: \"home-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst cart_backend = new gcp.compute.RegionBackendService(\"cart-backend\", {\n region: \"us-central1\",\n name: \"cart-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst user_backend = new gcp.compute.RegionBackendService(\"user-backend\", {\n region: \"us-central1\",\n name: \"user-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst urlmap = new gcp.compute.RegionUrlMap(\"urlmap\", {\n region: \"us-central1\",\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home_backend.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"mysite\",\n }],\n pathMatchers: [{\n name: \"mysite\",\n defaultService: home_backend.id,\n routeRules: [\n {\n matchRules: [{\n pathTemplateMatch: \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n }],\n service: cart_backend.id,\n priority: 1,\n routeAction: {\n urlRewrite: {\n pathTemplateRewrite: \"/{username}-{cartid}/\",\n },\n },\n },\n {\n matchRules: [{\n pathTemplateMatch: \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n }],\n service: user_backend.id,\n priority: 2,\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n http_health_check={\n \"port\": 80,\n \"requestPath\": \"/\",\n })\nhome_backend = gcp.compute.RegionBackendService(\"home-backend\",\n region=\"us-central1\",\n name=\"home-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\ncart_backend = gcp.compute.RegionBackendService(\"cart-backend\",\n region=\"us-central1\",\n name=\"cart-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nuser_backend = gcp.compute.RegionBackendService(\"user-backend\",\n region=\"us-central1\",\n name=\"user-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nurlmap = gcp.compute.RegionUrlMap(\"urlmap\",\n region=\"us-central1\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home_backend.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"mysite\",\n }],\n path_matchers=[{\n \"name\": \"mysite\",\n \"defaultService\": home_backend.id,\n \"routeRules\": [\n {\n \"matchRules\": [{\n \"pathTemplateMatch\": \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n }],\n \"service\": cart_backend.id,\n \"priority\": 1,\n \"routeAction\": {\n \"urlRewrite\": {\n \"pathTemplateRewrite\": \"/{username}-{cartid}/\",\n },\n },\n },\n {\n \"matchRules\": [{\n \"pathTemplateMatch\": \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n }],\n \"service\": user_backend.id,\n \"priority\": 2,\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 @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n RequestPath = \"/\",\n },\n });\n\n var home_backend = new Gcp.Compute.RegionBackendService(\"home-backend\", new()\n {\n Region = \"us-central1\",\n Name = \"home-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var cart_backend = new Gcp.Compute.RegionBackendService(\"cart-backend\", new()\n {\n Region = \"us-central1\",\n Name = \"cart-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var user_backend = new Gcp.Compute.RegionBackendService(\"user-backend\", new()\n {\n Region = \"us-central1\",\n Name = \"user-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var urlmap = new Gcp.Compute.RegionUrlMap(\"urlmap\", new()\n {\n Region = \"us-central1\",\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home_backend.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"mysite\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"mysite\",\n DefaultService = home_backend.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleArgs\n {\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n },\n },\n Service = cart_backend.Id,\n Priority = 1,\n RouteAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleRouteActionArgs\n {\n UrlRewrite = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleRouteActionUrlRewriteArgs\n {\n PathTemplateRewrite = \"/{username}-{cartid}/\",\n },\n },\n },\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleArgs\n {\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n },\n },\n Service = user_backend.Id,\n Priority = 2,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\tRequestPath: pulumi.String(\"/\"),\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.NewRegionBackendService(ctx, \"home-backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"home-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionBackendService(ctx, \"cart-backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"cart-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionBackendService(ctx, \"user-backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"user-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"urlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home_backend.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"mysite\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"mysite\"),\n\t\t\t\t\tDefaultService: home_backend.ID(),\n\t\t\t\t\tRouteRules: compute.RegionUrlMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tMatchRules: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: cart_backend.ID(),\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tRouteAction: \u0026compute.RegionUrlMapPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.RegionUrlMapPathMatcherRouteRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateRewrite: pulumi.String(\"/{username}-{cartid}/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tMatchRules: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/xyzwebservices/v2/xyz/users/*/accountinfo/*\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: user_backend.ID(),\n\t\t\t\t\t\t\tPriority: pulumi.Int(2),\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.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.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\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 RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .requestPath(\"/\")\n .build())\n .build());\n\n var home_backend = new RegionBackendService(\"home-backend\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"home-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var cart_backend = new RegionBackendService(\"cart-backend\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"cart-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var user_backend = new RegionBackendService(\"user-backend\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"user-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var urlmap = new RegionUrlMap(\"urlmap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home_backend.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"mysite\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"mysite\")\n .defaultService(home_backend.id())\n .routeRules( \n RegionUrlMapPathMatcherRouteRuleArgs.builder()\n .matchRules(RegionUrlMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\")\n .build())\n .service(cart_backend.id())\n .priority(1)\n .routeAction(RegionUrlMapPathMatcherRouteRuleRouteActionArgs.builder()\n .urlRewrite(RegionUrlMapPathMatcherRouteRuleRouteActionUrlRewriteArgs.builder()\n .pathTemplateRewrite(\"/{username}-{cartid}/\")\n .build())\n .build())\n .build(),\n RegionUrlMapPathMatcherRouteRuleArgs.builder()\n .matchRules(RegionUrlMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/xyzwebservices/v2/xyz/users/*/accountinfo/*\")\n .build())\n .service(user_backend.id())\n .priority(2)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n region: us-central1\n name: urlmap\n description: a description\n defaultService: ${[\"home-backend\"].id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: mysite\n pathMatchers:\n - name: mysite\n defaultService: ${[\"home-backend\"].id}\n routeRules:\n - matchRules:\n - pathTemplateMatch: /xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\n service: ${[\"cart-backend\"].id}\n priority: 1\n routeAction:\n urlRewrite:\n pathTemplateRewrite: /{username}-{cartid}/\n - matchRules:\n - pathTemplateMatch: /xyzwebservices/v2/xyz/users/*/accountinfo/*\n service: ${[\"user-backend\"].id}\n priority: 2\n home-backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: home-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n cart-backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: cart-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n user-backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: user-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: us-central1\n name: health-check\n checkIntervalSec: 1\n timeoutSec: 1\n httpHealthCheck:\n port: 80\n requestPath: /\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionUrlMap can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/urlMaps/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionUrlMap can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionUrlMap:RegionUrlMap default projects/{{project}}/regions/{{region}}/urlMaps/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionUrlMap:RegionUrlMap default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionUrlMap:RegionUrlMap default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionUrlMap:RegionUrlMap default {{name}}\n```\n\n", + "description": "UrlMaps are used to route requests to a backend service based on rules\nthat you define for the host and path of an incoming URL.\n\n\n\n## Example Usage\n\n### Region Url Map Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n httpHealthCheck: {\n port: 80,\n requestPath: \"/\",\n },\n});\nconst login = new gcp.compute.RegionBackendService(\"login\", {\n region: \"us-central1\",\n name: \"login\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n region: \"us-central1\",\n name: \"home\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n region: \"us-central1\",\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [\n {\n paths: [\"/home\"],\n service: home.id,\n },\n {\n paths: [\"/login\"],\n service: login.id,\n },\n ],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n http_health_check={\n \"port\": 80,\n \"request_path\": \"/\",\n })\nlogin = gcp.compute.RegionBackendService(\"login\",\n region=\"us-central1\",\n name=\"login\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default.id)\nhome = gcp.compute.RegionBackendService(\"home\",\n region=\"us-central1\",\n name=\"home\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default.id)\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n region=\"us-central1\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"path_rules\": [\n {\n \"paths\": [\"/home\"],\n \"service\": home.id,\n },\n {\n \"paths\": [\"/login\"],\n \"service\": login.id,\n },\n ],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n RequestPath = \"/\",\n },\n });\n\n var login = new Gcp.Compute.RegionBackendService(\"login\", new()\n {\n Region = \"us-central1\",\n Name = \"login\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Region = \"us-central1\",\n Name = \"home\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Region = \"us-central1\",\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n Service = home.Id,\n },\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/login\",\n },\n Service = login.Id,\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogin, err := compute.NewRegionBackendService(ctx, \"login\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"login\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: home.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/login\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: login.ID(),\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\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.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.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\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 RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .requestPath(\"/\")\n .build())\n .build());\n\n var login = new RegionBackendService(\"login\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"login\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"home\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules( \n RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .service(home.id())\n .build(),\n RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/login\")\n .service(login.id())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n region: us-central1\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n service: ${home.id}\n - paths:\n - /login\n service: ${login.id}\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n login:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: login\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${default.id}\n home:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: home\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${default.id}\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: us-central1\n name: health-check\n checkIntervalSec: 1\n timeoutSec: 1\n httpHealthCheck:\n port: 80\n requestPath: /\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map Default Route Action\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n httpHealthCheck: {\n port: 80,\n requestPath: \"/\",\n },\n});\nconst login = new gcp.compute.RegionBackendService(\"login\", {\n region: \"us-central1\",\n name: \"login\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n region: \"us-central1\",\n name: \"home\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n region: \"us-central1\",\n name: \"regionurlmap\",\n description: \"a description\",\n defaultRouteAction: {\n retryPolicy: {\n retryConditions: [\n \"5xx\",\n \"gateway-error\",\n ],\n numRetries: 3,\n perTryTimeout: {\n seconds: \"0\",\n nanos: 500,\n },\n },\n requestMirrorPolicy: {\n backendService: home.id,\n },\n weightedBackendServices: [\n {\n backendService: login.id,\n weight: 200,\n headerAction: {\n requestHeadersToAdds: [{\n headerName: \"foo-request-1\",\n headerValue: \"bar\",\n replace: true,\n }],\n requestHeadersToRemoves: [\"fizz\"],\n responseHeadersToAdds: [{\n headerName: \"foo-response-1\",\n headerValue: \"bar\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"buzz\"],\n },\n },\n {\n backendService: home.id,\n weight: 100,\n headerAction: {\n requestHeadersToAdds: [\n {\n headerName: \"foo-request-1\",\n headerValue: \"bar\",\n replace: true,\n },\n {\n headerName: \"foo-request-2\",\n headerValue: \"bar\",\n replace: true,\n },\n ],\n requestHeadersToRemoves: [\"fizz\"],\n responseHeadersToAdds: [\n {\n headerName: \"foo-response-2\",\n headerValue: \"bar\",\n replace: true,\n },\n {\n headerName: \"foo-response-1\",\n headerValue: \"bar\",\n replace: true,\n },\n ],\n responseHeadersToRemoves: [\"buzz\"],\n },\n },\n ],\n urlRewrite: {\n hostRewrite: \"dev.example.com\",\n pathPrefixRewrite: \"/v1/api/\",\n },\n corsPolicy: {\n disabled: false,\n allowCredentials: true,\n allowHeaders: [\"foobar\"],\n allowMethods: [\n \"GET\",\n \"POST\",\n ],\n allowOrigins: [\"example.com\"],\n exposeHeaders: [\"foobar\"],\n maxAge: 60,\n },\n faultInjectionPolicy: {\n delay: {\n fixedDelay: {\n seconds: \"0\",\n nanos: 500,\n },\n percentage: 0.5,\n },\n abort: {\n httpStatus: 500,\n percentage: 0.5,\n },\n },\n timeout: {\n seconds: \"0\",\n nanos: 500,\n },\n },\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [\n {\n paths: [\"/home\"],\n service: home.id,\n },\n {\n paths: [\"/login\"],\n service: login.id,\n },\n ],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n http_health_check={\n \"port\": 80,\n \"request_path\": \"/\",\n })\nlogin = gcp.compute.RegionBackendService(\"login\",\n region=\"us-central1\",\n name=\"login\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default.id)\nhome = gcp.compute.RegionBackendService(\"home\",\n region=\"us-central1\",\n name=\"home\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default.id)\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n region=\"us-central1\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_route_action={\n \"retry_policy\": {\n \"retry_conditions\": [\n \"5xx\",\n \"gateway-error\",\n ],\n \"num_retries\": 3,\n \"per_try_timeout\": {\n \"seconds\": \"0\",\n \"nanos\": 500,\n },\n },\n \"request_mirror_policy\": {\n \"backend_service\": home.id,\n },\n \"weighted_backend_services\": [\n {\n \"backend_service\": login.id,\n \"weight\": 200,\n \"header_action\": {\n \"request_headers_to_adds\": [{\n \"header_name\": \"foo-request-1\",\n \"header_value\": \"bar\",\n \"replace\": True,\n }],\n \"request_headers_to_removes\": [\"fizz\"],\n \"response_headers_to_adds\": [{\n \"header_name\": \"foo-response-1\",\n \"header_value\": \"bar\",\n \"replace\": True,\n }],\n \"response_headers_to_removes\": [\"buzz\"],\n },\n },\n {\n \"backend_service\": home.id,\n \"weight\": 100,\n \"header_action\": {\n \"request_headers_to_adds\": [\n {\n \"header_name\": \"foo-request-1\",\n \"header_value\": \"bar\",\n \"replace\": True,\n },\n {\n \"header_name\": \"foo-request-2\",\n \"header_value\": \"bar\",\n \"replace\": True,\n },\n ],\n \"request_headers_to_removes\": [\"fizz\"],\n \"response_headers_to_adds\": [\n {\n \"header_name\": \"foo-response-2\",\n \"header_value\": \"bar\",\n \"replace\": True,\n },\n {\n \"header_name\": \"foo-response-1\",\n \"header_value\": \"bar\",\n \"replace\": True,\n },\n ],\n \"response_headers_to_removes\": [\"buzz\"],\n },\n },\n ],\n \"url_rewrite\": {\n \"host_rewrite\": \"dev.example.com\",\n \"path_prefix_rewrite\": \"/v1/api/\",\n },\n \"cors_policy\": {\n \"disabled\": False,\n \"allow_credentials\": True,\n \"allow_headers\": [\"foobar\"],\n \"allow_methods\": [\n \"GET\",\n \"POST\",\n ],\n \"allow_origins\": [\"example.com\"],\n \"expose_headers\": [\"foobar\"],\n \"max_age\": 60,\n },\n \"fault_injection_policy\": {\n \"delay\": {\n \"fixed_delay\": {\n \"seconds\": \"0\",\n \"nanos\": 500,\n },\n \"percentage\": 0.5,\n },\n \"abort\": {\n \"http_status\": 500,\n \"percentage\": 0.5,\n },\n },\n \"timeout\": {\n \"seconds\": \"0\",\n \"nanos\": 500,\n },\n },\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"path_rules\": [\n {\n \"paths\": [\"/home\"],\n \"service\": home.id,\n },\n {\n \"paths\": [\"/login\"],\n \"service\": login.id,\n },\n ],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n RequestPath = \"/\",\n },\n });\n\n var login = new Gcp.Compute.RegionBackendService(\"login\", new()\n {\n Region = \"us-central1\",\n Name = \"login\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Region = \"us-central1\",\n Name = \"home\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Region = \"us-central1\",\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultRouteAction = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionArgs\n {\n RetryPolicy = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"5xx\",\n \"gateway-error\",\n },\n NumRetries = 3,\n PerTryTimeout = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeoutArgs\n {\n Seconds = \"0\",\n Nanos = 500,\n },\n },\n RequestMirrorPolicy = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionRequestMirrorPolicyArgs\n {\n BackendService = home.Id,\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs\n {\n BackendService = login.Id,\n Weight = 200,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"foo-request-1\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n },\n RequestHeadersToRemoves = new[]\n {\n \"fizz\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"foo-response-1\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"buzz\",\n },\n },\n },\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 100,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"foo-request-1\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"foo-request-2\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n },\n RequestHeadersToRemoves = new[]\n {\n \"fizz\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"foo-response-2\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"foo-response-1\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"buzz\",\n },\n },\n },\n },\n UrlRewrite = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionUrlRewriteArgs\n {\n HostRewrite = \"dev.example.com\",\n PathPrefixRewrite = \"/v1/api/\",\n },\n CorsPolicy = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionCorsPolicyArgs\n {\n Disabled = false,\n AllowCredentials = true,\n AllowHeaders = new[]\n {\n \"foobar\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n \"POST\",\n },\n AllowOrigins = new[]\n {\n \"example.com\",\n },\n ExposeHeaders = new[]\n {\n \"foobar\",\n },\n MaxAge = 60,\n },\n FaultInjectionPolicy = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyArgs\n {\n Delay = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelayArgs\n {\n Seconds = \"0\",\n Nanos = 500,\n },\n Percentage = 0.5,\n },\n Abort = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 500,\n Percentage = 0.5,\n },\n },\n Timeout = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionTimeoutArgs\n {\n Seconds = \"0\",\n Nanos = 500,\n },\n },\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n Service = home.Id,\n },\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/login\",\n },\n Service = login.Id,\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogin, err := compute.NewRegionBackendService(ctx, \"login\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"login\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultRouteAction: \u0026compute.RegionUrlMapDefaultRouteActionArgs{\n\t\t\t\tRetryPolicy: \u0026compute.RegionUrlMapDefaultRouteActionRetryPolicyArgs{\n\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\tpulumi.String(\"gateway-error\"),\n\t\t\t\t\t},\n\t\t\t\t\tNumRetries: pulumi.Int(3),\n\t\t\t\t\tPerTryTimeout: \u0026compute.RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeoutArgs{\n\t\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\t\tNanos: pulumi.Int(500),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRequestMirrorPolicy: \u0026compute.RegionUrlMapDefaultRouteActionRequestMirrorPolicyArgs{\n\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t},\n\t\t\t\tWeightedBackendServices: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\tBackendService: login.ID(),\n\t\t\t\t\t\tWeight: pulumi.Int(200),\n\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\tRequestHeadersToAdds: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-request-1\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"fizz\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-response-1\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"buzz\"),\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\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\tWeight: pulumi.Int(100),\n\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\tRequestHeadersToAdds: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-request-1\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-request-2\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"fizz\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-response-2\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-response-1\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"buzz\"),\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\tUrlRewrite: \u0026compute.RegionUrlMapDefaultRouteActionUrlRewriteArgs{\n\t\t\t\t\tHostRewrite: pulumi.String(\"dev.example.com\"),\n\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/v1/api/\"),\n\t\t\t\t},\n\t\t\t\tCorsPolicy: \u0026compute.RegionUrlMapDefaultRouteActionCorsPolicyArgs{\n\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"foobar\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\tpulumi.String(\"POST\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"foobar\"),\n\t\t\t\t\t},\n\t\t\t\t\tMaxAge: pulumi.Int(60),\n\t\t\t\t},\n\t\t\t\tFaultInjectionPolicy: \u0026compute.RegionUrlMapDefaultRouteActionFaultInjectionPolicyArgs{\n\t\t\t\t\tDelay: \u0026compute.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\tFixedDelay: \u0026compute.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelayArgs{\n\t\t\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\t\t\tNanos: pulumi.Int(500),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPercentage: pulumi.Float64(0.5),\n\t\t\t\t\t},\n\t\t\t\t\tAbort: \u0026compute.RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\tHttpStatus: pulumi.Int(500),\n\t\t\t\t\t\tPercentage: pulumi.Float64(0.5),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTimeout: \u0026compute.RegionUrlMapDefaultRouteActionTimeoutArgs{\n\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\tNanos: pulumi.Int(500),\n\t\t\t\t},\n\t\t\t},\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: home.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/login\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: login.ID(),\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\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.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.inputs.RegionUrlMapDefaultRouteActionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionRetryPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeoutArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionRequestMirrorPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionUrlRewriteArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionCorsPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelayArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbortArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionTimeoutArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\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 RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .requestPath(\"/\")\n .build())\n .build());\n\n var login = new RegionBackendService(\"login\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"login\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"home\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultRouteAction(RegionUrlMapDefaultRouteActionArgs.builder()\n .retryPolicy(RegionUrlMapDefaultRouteActionRetryPolicyArgs.builder()\n .retryConditions( \n \"5xx\",\n \"gateway-error\")\n .numRetries(3)\n .perTryTimeout(RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeoutArgs.builder()\n .seconds(0)\n .nanos(500)\n .build())\n .build())\n .requestMirrorPolicy(RegionUrlMapDefaultRouteActionRequestMirrorPolicyArgs.builder()\n .backendService(home.id())\n .build())\n .weightedBackendServices( \n RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs.builder()\n .backendService(login.id())\n .weight(200)\n .headerAction(RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToAdds(RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"foo-request-1\")\n .headerValue(\"bar\")\n .replace(true)\n .build())\n .requestHeadersToRemoves(\"fizz\")\n .responseHeadersToAdds(RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"foo-response-1\")\n .headerValue(\"bar\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"buzz\")\n .build())\n .build(),\n RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(100)\n .headerAction(RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToAdds( \n RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"foo-request-1\")\n .headerValue(\"bar\")\n .replace(true)\n .build(),\n RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"foo-request-2\")\n .headerValue(\"bar\")\n .replace(true)\n .build())\n .requestHeadersToRemoves(\"fizz\")\n .responseHeadersToAdds( \n RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"foo-response-2\")\n .headerValue(\"bar\")\n .replace(true)\n .build(),\n RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"foo-response-1\")\n .headerValue(\"bar\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"buzz\")\n .build())\n .build())\n .urlRewrite(RegionUrlMapDefaultRouteActionUrlRewriteArgs.builder()\n .hostRewrite(\"dev.example.com\")\n .pathPrefixRewrite(\"/v1/api/\")\n .build())\n .corsPolicy(RegionUrlMapDefaultRouteActionCorsPolicyArgs.builder()\n .disabled(false)\n .allowCredentials(true)\n .allowHeaders(\"foobar\")\n .allowMethods( \n \"GET\",\n \"POST\")\n .allowOrigins(\"example.com\")\n .exposeHeaders(\"foobar\")\n .maxAge(60)\n .build())\n .faultInjectionPolicy(RegionUrlMapDefaultRouteActionFaultInjectionPolicyArgs.builder()\n .delay(RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelayArgs.builder()\n .seconds(0)\n .nanos(500)\n .build())\n .percentage(0.5)\n .build())\n .abort(RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(500)\n .percentage(0.5)\n .build())\n .build())\n .timeout(RegionUrlMapDefaultRouteActionTimeoutArgs.builder()\n .seconds(0)\n .nanos(500)\n .build())\n .build())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules( \n RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .service(home.id())\n .build(),\n RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/login\")\n .service(login.id())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n region: us-central1\n name: regionurlmap\n description: a description\n defaultRouteAction:\n retryPolicy:\n retryConditions:\n - 5xx\n - gateway-error\n numRetries: 3\n perTryTimeout:\n seconds: 0\n nanos: 500\n requestMirrorPolicy:\n backendService: ${home.id}\n weightedBackendServices:\n - backendService: ${login.id}\n weight: 200\n headerAction:\n requestHeadersToAdds:\n - headerName: foo-request-1\n headerValue: bar\n replace: true\n requestHeadersToRemoves:\n - fizz\n responseHeadersToAdds:\n - headerName: foo-response-1\n headerValue: bar\n replace: true\n responseHeadersToRemoves:\n - buzz\n - backendService: ${home.id}\n weight: 100\n headerAction:\n requestHeadersToAdds:\n - headerName: foo-request-1\n headerValue: bar\n replace: true\n - headerName: foo-request-2\n headerValue: bar\n replace: true\n requestHeadersToRemoves:\n - fizz\n responseHeadersToAdds:\n - headerName: foo-response-2\n headerValue: bar\n replace: true\n - headerName: foo-response-1\n headerValue: bar\n replace: true\n responseHeadersToRemoves:\n - buzz\n urlRewrite:\n hostRewrite: dev.example.com\n pathPrefixRewrite: /v1/api/\n corsPolicy:\n disabled: false\n allowCredentials: true\n allowHeaders:\n - foobar\n allowMethods:\n - GET\n - POST\n allowOrigins:\n - example.com\n exposeHeaders:\n - foobar\n maxAge: 60\n faultInjectionPolicy:\n delay:\n fixedDelay:\n seconds: 0\n nanos: 500\n percentage: 0.5\n abort:\n httpStatus: 500\n percentage: 0.5\n timeout:\n seconds: 0\n nanos: 500\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n service: ${home.id}\n - paths:\n - /login\n service: ${login.id}\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n login:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: login\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${default.id}\n home:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: home\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${default.id}\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: us-central1\n name: health-check\n checkIntervalSec: 1\n timeoutSec: 1\n httpHealthCheck:\n port: 80\n requestPath: /\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map L7 Ilb Path\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n name: \"home\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [{\n paths: [\"/home\"],\n routeAction: {\n corsPolicy: {\n allowCredentials: true,\n allowHeaders: [\"Allowed content\"],\n allowMethods: [\"GET\"],\n allowOrigins: [\"Allowed origin\"],\n exposeHeaders: [\"Exposed header\"],\n maxAge: 30,\n disabled: false,\n },\n faultInjectionPolicy: {\n abort: {\n httpStatus: 234,\n percentage: 5.6,\n },\n delay: {\n fixedDelay: {\n seconds: \"0\",\n nanos: 50000,\n },\n percentage: 7.8,\n },\n },\n requestMirrorPolicy: {\n backendService: home.id,\n },\n retryPolicy: {\n numRetries: 4,\n perTryTimeout: {\n seconds: \"30\",\n },\n retryConditions: [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n timeout: {\n seconds: \"20\",\n nanos: 750000000,\n },\n urlRewrite: {\n hostRewrite: \"dev.example.com\",\n pathPrefixRewrite: \"/v1/api/\",\n },\n weightedBackendServices: [{\n backendService: home.id,\n weight: 400,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe\"],\n requestHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n }],\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.RegionBackendService(\"home\",\n name=\"home\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"path_rules\": [{\n \"paths\": [\"/home\"],\n \"route_action\": {\n \"cors_policy\": {\n \"allow_credentials\": True,\n \"allow_headers\": [\"Allowed content\"],\n \"allow_methods\": [\"GET\"],\n \"allow_origins\": [\"Allowed origin\"],\n \"expose_headers\": [\"Exposed header\"],\n \"max_age\": 30,\n \"disabled\": False,\n },\n \"fault_injection_policy\": {\n \"abort\": {\n \"http_status\": 234,\n \"percentage\": 5.6,\n },\n \"delay\": {\n \"fixed_delay\": {\n \"seconds\": \"0\",\n \"nanos\": 50000,\n },\n \"percentage\": 7.8,\n },\n },\n \"request_mirror_policy\": {\n \"backend_service\": home.id,\n },\n \"retry_policy\": {\n \"num_retries\": 4,\n \"per_try_timeout\": {\n \"seconds\": \"30\",\n },\n \"retry_conditions\": [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n \"timeout\": {\n \"seconds\": \"20\",\n \"nanos\": 750000000,\n },\n \"url_rewrite\": {\n \"host_rewrite\": \"dev.example.com\",\n \"path_prefix_rewrite\": \"/v1/api/\",\n },\n \"weighted_backend_services\": [{\n \"backend_service\": home.id,\n \"weight\": 400,\n \"header_action\": {\n \"request_headers_to_removes\": [\"RemoveMe\"],\n \"request_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": True,\n }],\n \"response_headers_to_removes\": [\"RemoveMe\"],\n \"response_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": False,\n }],\n },\n }],\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Name = \"home\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n RouteAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionArgs\n {\n CorsPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionCorsPolicyArgs\n {\n AllowCredentials = true,\n AllowHeaders = new[]\n {\n \"Allowed content\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n },\n AllowOrigins = new[]\n {\n \"Allowed origin\",\n },\n ExposeHeaders = new[]\n {\n \"Exposed header\",\n },\n MaxAge = 30,\n Disabled = false,\n },\n FaultInjectionPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs\n {\n Abort = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 234,\n Percentage = 5.6,\n },\n Delay = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs\n {\n Seconds = \"0\",\n Nanos = 50000,\n },\n Percentage = 7.8,\n },\n },\n RequestMirrorPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs\n {\n BackendService = home.Id,\n },\n RetryPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs\n {\n NumRetries = 4,\n PerTryTimeout = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs\n {\n Seconds = \"30\",\n },\n RetryConditions = new[]\n {\n \"5xx\",\n \"deadline-exceeded\",\n },\n },\n Timeout = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs\n {\n Seconds = \"20\",\n Nanos = 750000000,\n },\n UrlRewrite = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs\n {\n HostRewrite = \"dev.example.com\",\n PathPrefixRewrite = \"/v1/api/\",\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 400,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRouteAction: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tCorsPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed content\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed origin\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Exposed header\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMaxAge: pulumi.Int(30),\n\t\t\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tFaultInjectionPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs{\n\t\t\t\t\t\t\t\t\tAbort: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\t\t\t\t\tHttpStatus: pulumi.Int(234),\n\t\t\t\t\t\t\t\t\t\tPercentage: pulumi.Float64(5.6),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tDelay: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\t\t\t\t\tFixedDelay: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs{\n\t\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(50000),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tPercentage: pulumi.Float64(7.8),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRequestMirrorPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRetryPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs{\n\t\t\t\t\t\t\t\t\tNumRetries: pulumi.Int(4),\n\t\t\t\t\t\t\t\t\tPerTryTimeout: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs{\n\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"30\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"deadline-exceeded\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tTimeout: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs{\n\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"20\"),\n\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(750000000),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"dev.example.com\"),\n\t\t\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/v1/api/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tWeightedBackendServices: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t\t\tWeight: pulumi.Int(400),\n\t\t\t\t\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.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.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\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 RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .name(\"home\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .routeAction(RegionUrlMapPathMatcherPathRuleRouteActionArgs.builder()\n .corsPolicy(RegionUrlMapPathMatcherPathRuleRouteActionCorsPolicyArgs.builder()\n .allowCredentials(true)\n .allowHeaders(\"Allowed content\")\n .allowMethods(\"GET\")\n .allowOrigins(\"Allowed origin\")\n .exposeHeaders(\"Exposed header\")\n .maxAge(30)\n .disabled(false)\n .build())\n .faultInjectionPolicy(RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs.builder()\n .abort(RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(234)\n .percentage(5.6)\n .build())\n .delay(RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs.builder()\n .seconds(0)\n .nanos(50000)\n .build())\n .percentage(7.8)\n .build())\n .build())\n .requestMirrorPolicy(RegionUrlMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs.builder()\n .backendService(home.id())\n .build())\n .retryPolicy(RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs.builder()\n .numRetries(4)\n .perTryTimeout(RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs.builder()\n .seconds(30)\n .build())\n .retryConditions( \n \"5xx\",\n \"deadline-exceeded\")\n .build())\n .timeout(RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs.builder()\n .seconds(20)\n .nanos(750000000)\n .build())\n .urlRewrite(RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs.builder()\n .hostRewrite(\"dev.example.com\")\n .pathPrefixRewrite(\"/v1/api/\")\n .build())\n .weightedBackendServices(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(400)\n .headerAction(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe\")\n .requestHeadersToAdds(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe\")\n .responseHeadersToAdds(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n routeAction:\n corsPolicy:\n allowCredentials: true\n allowHeaders:\n - Allowed content\n allowMethods:\n - GET\n allowOrigins:\n - Allowed origin\n exposeHeaders:\n - Exposed header\n maxAge: 30\n disabled: false\n faultInjectionPolicy:\n abort:\n httpStatus: 234\n percentage: 5.6\n delay:\n fixedDelay:\n seconds: 0\n nanos: 50000\n percentage: 7.8\n requestMirrorPolicy:\n backendService: ${home.id}\n retryPolicy:\n numRetries: 4\n perTryTimeout:\n seconds: 30\n retryConditions:\n - 5xx\n - deadline-exceeded\n timeout:\n seconds: 20\n nanos: 7.5e+08\n urlRewrite:\n hostRewrite: dev.example.com\n pathPrefixRewrite: /v1/api/\n weightedBackendServices:\n - backendService: ${home.id}\n weight: 400\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe\n requestHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:RegionBackendService\n properties:\n name: home\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_MANAGED\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map L7 Ilb Path Partial\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n name: \"home\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [{\n paths: [\"/home\"],\n routeAction: {\n retryPolicy: {\n numRetries: 4,\n perTryTimeout: {\n seconds: \"30\",\n },\n retryConditions: [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n timeout: {\n seconds: \"20\",\n nanos: 750000000,\n },\n urlRewrite: {\n hostRewrite: \"dev.example.com\",\n pathPrefixRewrite: \"/v1/api/\",\n },\n weightedBackendServices: [{\n backendService: home.id,\n weight: 400,\n headerAction: {\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n }],\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.RegionBackendService(\"home\",\n name=\"home\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"path_rules\": [{\n \"paths\": [\"/home\"],\n \"route_action\": {\n \"retry_policy\": {\n \"num_retries\": 4,\n \"per_try_timeout\": {\n \"seconds\": \"30\",\n },\n \"retry_conditions\": [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n \"timeout\": {\n \"seconds\": \"20\",\n \"nanos\": 750000000,\n },\n \"url_rewrite\": {\n \"host_rewrite\": \"dev.example.com\",\n \"path_prefix_rewrite\": \"/v1/api/\",\n },\n \"weighted_backend_services\": [{\n \"backend_service\": home.id,\n \"weight\": 400,\n \"header_action\": {\n \"response_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": False,\n }],\n },\n }],\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Name = \"home\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n RouteAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionArgs\n {\n RetryPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs\n {\n NumRetries = 4,\n PerTryTimeout = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs\n {\n Seconds = \"30\",\n },\n RetryConditions = new[]\n {\n \"5xx\",\n \"deadline-exceeded\",\n },\n },\n Timeout = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs\n {\n Seconds = \"20\",\n Nanos = 750000000,\n },\n UrlRewrite = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs\n {\n HostRewrite = \"dev.example.com\",\n PathPrefixRewrite = \"/v1/api/\",\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 400,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs\n {\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRouteAction: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tRetryPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs{\n\t\t\t\t\t\t\t\t\tNumRetries: pulumi.Int(4),\n\t\t\t\t\t\t\t\t\tPerTryTimeout: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs{\n\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"30\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"deadline-exceeded\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tTimeout: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs{\n\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"20\"),\n\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(750000000),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"dev.example.com\"),\n\t\t\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/v1/api/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tWeightedBackendServices: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t\t\tWeight: pulumi.Int(400),\n\t\t\t\t\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.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.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\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 RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .name(\"home\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .routeAction(RegionUrlMapPathMatcherPathRuleRouteActionArgs.builder()\n .retryPolicy(RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs.builder()\n .numRetries(4)\n .perTryTimeout(RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs.builder()\n .seconds(30)\n .build())\n .retryConditions( \n \"5xx\",\n \"deadline-exceeded\")\n .build())\n .timeout(RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs.builder()\n .seconds(20)\n .nanos(750000000)\n .build())\n .urlRewrite(RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs.builder()\n .hostRewrite(\"dev.example.com\")\n .pathPrefixRewrite(\"/v1/api/\")\n .build())\n .weightedBackendServices(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(400)\n .headerAction(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .responseHeadersToAdds(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n routeAction:\n retryPolicy:\n numRetries: 4\n perTryTimeout:\n seconds: 30\n retryConditions:\n - 5xx\n - deadline-exceeded\n timeout:\n seconds: 20\n nanos: 7.5e+08\n urlRewrite:\n hostRewrite: dev.example.com\n pathPrefixRewrite: /v1/api/\n weightedBackendServices:\n - backendService: ${home.id}\n weight: 400\n headerAction:\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:RegionBackendService\n properties:\n name: home\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_MANAGED\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map L7 Ilb Route\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n name: \"home\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n routeRules: [{\n priority: 1,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe2\"],\n requestHeadersToAdds: [{\n headerName: \"AddSomethingElse\",\n headerValue: \"MyOtherValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe3\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n matchRules: [{\n fullPathMatch: \"a full path\",\n headerMatches: [{\n headerName: \"someheader\",\n exactMatch: \"match this exactly\",\n invertMatch: true,\n }],\n ignoreCase: true,\n metadataFilters: [{\n filterMatchCriteria: \"MATCH_ANY\",\n filterLabels: [{\n name: \"PLANET\",\n value: \"MARS\",\n }],\n }],\n queryParameterMatches: [{\n name: \"a query parameter\",\n presentMatch: true,\n }],\n }],\n urlRedirect: {\n hostRedirect: \"A host\",\n httpsRedirect: false,\n pathRedirect: \"some/path\",\n redirectResponseCode: \"TEMPORARY_REDIRECT\",\n stripQuery: true,\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.RegionBackendService(\"home\",\n name=\"home\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"route_rules\": [{\n \"priority\": 1,\n \"header_action\": {\n \"request_headers_to_removes\": [\"RemoveMe2\"],\n \"request_headers_to_adds\": [{\n \"header_name\": \"AddSomethingElse\",\n \"header_value\": \"MyOtherValue\",\n \"replace\": True,\n }],\n \"response_headers_to_removes\": [\"RemoveMe3\"],\n \"response_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": False,\n }],\n },\n \"match_rules\": [{\n \"full_path_match\": \"a full path\",\n \"header_matches\": [{\n \"header_name\": \"someheader\",\n \"exact_match\": \"match this exactly\",\n \"invert_match\": True,\n }],\n \"ignore_case\": True,\n \"metadata_filters\": [{\n \"filter_match_criteria\": \"MATCH_ANY\",\n \"filter_labels\": [{\n \"name\": \"PLANET\",\n \"value\": \"MARS\",\n }],\n }],\n \"query_parameter_matches\": [{\n \"name\": \"a query parameter\",\n \"present_match\": True,\n }],\n }],\n \"url_redirect\": {\n \"host_redirect\": \"A host\",\n \"https_redirect\": False,\n \"path_redirect\": \"some/path\",\n \"redirect_response_code\": \"TEMPORARY_REDIRECT\",\n \"strip_query\": True,\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Name = \"home\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe2\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddSomethingElse\",\n HeaderValue = \"MyOtherValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe3\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"a full path\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"someheader\",\n ExactMatch = \"match this exactly\",\n InvertMatch = true,\n },\n },\n IgnoreCase = true,\n MetadataFilters = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs\n {\n FilterMatchCriteria = \"MATCH_ANY\",\n FilterLabels = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs\n {\n Name = \"PLANET\",\n Value = \"MARS\",\n },\n },\n },\n },\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"a query parameter\",\n PresentMatch = true,\n },\n },\n },\n },\n UrlRedirect = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleUrlRedirectArgs\n {\n HostRedirect = \"A host\",\n HttpsRedirect = false,\n PathRedirect = \"some/path\",\n RedirectResponseCode = \"TEMPORARY_REDIRECT\",\n StripQuery = true,\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tRouteRules: compute.RegionUrlMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddSomethingElse\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyOtherValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMatchRules: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"a full path\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"someheader\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"match this exactly\"),\n\t\t\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tMetadataFilters: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs{\n\t\t\t\t\t\t\t\t\t\t\tFilterMatchCriteria: pulumi.String(\"MATCH_ANY\"),\n\t\t\t\t\t\t\t\t\t\t\tFilterLabels: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PLANET\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"MARS\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"a query parameter\"),\n\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tUrlRedirect: \u0026compute.RegionUrlMapPathMatcherRouteRuleUrlRedirectArgs{\n\t\t\t\t\t\t\t\tHostRedirect: pulumi.String(\"A host\"),\n\t\t\t\t\t\t\t\tHttpsRedirect: pulumi.Bool(false),\n\t\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"some/path\"),\n\t\t\t\t\t\t\t\tRedirectResponseCode: pulumi.String(\"TEMPORARY_REDIRECT\"),\n\t\t\t\t\t\t\t\tStripQuery: pulumi.Bool(true),\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\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.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.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\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 RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .name(\"home\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .routeRules(RegionUrlMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .headerAction(RegionUrlMapPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe2\")\n .requestHeadersToAdds(RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddSomethingElse\")\n .headerValue(\"MyOtherValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe3\")\n .responseHeadersToAdds(RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .matchRules(RegionUrlMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"a full path\")\n .headerMatches(RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"someheader\")\n .exactMatch(\"match this exactly\")\n .invertMatch(true)\n .build())\n .ignoreCase(true)\n .metadataFilters(RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs.builder()\n .filterMatchCriteria(\"MATCH_ANY\")\n .filterLabels(RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs.builder()\n .name(\"PLANET\")\n .value(\"MARS\")\n .build())\n .build())\n .queryParameterMatches(RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"a query parameter\")\n .presentMatch(true)\n .build())\n .build())\n .urlRedirect(RegionUrlMapPathMatcherRouteRuleUrlRedirectArgs.builder()\n .hostRedirect(\"A host\")\n .httpsRedirect(false)\n .pathRedirect(\"some/path\")\n .redirectResponseCode(\"TEMPORARY_REDIRECT\")\n .stripQuery(true)\n .build())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n routeRules:\n - priority: 1\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe2\n requestHeadersToAdds:\n - headerName: AddSomethingElse\n headerValue: MyOtherValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe3\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n matchRules:\n - fullPathMatch: a full path\n headerMatches:\n - headerName: someheader\n exactMatch: match this exactly\n invertMatch: true\n ignoreCase: true\n metadataFilters:\n - filterMatchCriteria: MATCH_ANY\n filterLabels:\n - name: PLANET\n value: MARS\n queryParameterMatches:\n - name: a query parameter\n presentMatch: true\n urlRedirect:\n hostRedirect: A host\n httpsRedirect: false\n pathRedirect: some/path\n redirectResponseCode: TEMPORARY_REDIRECT\n stripQuery: true\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:RegionBackendService\n properties:\n name: home\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_MANAGED\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map L7 Ilb Route Partial\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n name: \"home\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n routeRules: [{\n priority: 1,\n service: home.id,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe2\"],\n },\n matchRules: [{\n fullPathMatch: \"a full path\",\n headerMatches: [{\n headerName: \"someheader\",\n exactMatch: \"match this exactly\",\n invertMatch: true,\n }],\n queryParameterMatches: [{\n name: \"a query parameter\",\n presentMatch: true,\n }],\n }],\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.RegionBackendService(\"home\",\n name=\"home\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"route_rules\": [{\n \"priority\": 1,\n \"service\": home.id,\n \"header_action\": {\n \"request_headers_to_removes\": [\"RemoveMe2\"],\n },\n \"match_rules\": [{\n \"full_path_match\": \"a full path\",\n \"header_matches\": [{\n \"header_name\": \"someheader\",\n \"exact_match\": \"match this exactly\",\n \"invert_match\": True,\n }],\n \"query_parameter_matches\": [{\n \"name\": \"a query parameter\",\n \"present_match\": True,\n }],\n }],\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Name = \"home\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n Service = home.Id,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe2\",\n },\n },\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"a full path\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"someheader\",\n ExactMatch = \"match this exactly\",\n InvertMatch = true,\n },\n },\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"a query parameter\",\n PresentMatch = true,\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tRouteRules: compute.RegionUrlMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tService: home.ID(),\n\t\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMatchRules: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"a full path\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"someheader\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"match this exactly\"),\n\t\t\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"a query parameter\"),\n\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.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.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\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 RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .name(\"home\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .routeRules(RegionUrlMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .service(home.id())\n .headerAction(RegionUrlMapPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe2\")\n .build())\n .matchRules(RegionUrlMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"a full path\")\n .headerMatches(RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"someheader\")\n .exactMatch(\"match this exactly\")\n .invertMatch(true)\n .build())\n .queryParameterMatches(RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"a query parameter\")\n .presentMatch(true)\n .build())\n .build())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n routeRules:\n - priority: 1\n service: ${home.id}\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe2\n matchRules:\n - fullPathMatch: a full path\n headerMatches:\n - headerName: someheader\n exactMatch: match this exactly\n invertMatch: true\n queryParameterMatches:\n - name: a query parameter\n presentMatch: true\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:RegionBackendService\n properties:\n name: home\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_MANAGED\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map Path Template Match\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n httpHealthCheck: {\n port: 80,\n requestPath: \"/\",\n },\n});\nconst home_backend = new gcp.compute.RegionBackendService(\"home-backend\", {\n region: \"us-central1\",\n name: \"home-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst cart_backend = new gcp.compute.RegionBackendService(\"cart-backend\", {\n region: \"us-central1\",\n name: \"cart-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst user_backend = new gcp.compute.RegionBackendService(\"user-backend\", {\n region: \"us-central1\",\n name: \"user-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst urlmap = new gcp.compute.RegionUrlMap(\"urlmap\", {\n region: \"us-central1\",\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home_backend.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"mysite\",\n }],\n pathMatchers: [{\n name: \"mysite\",\n defaultService: home_backend.id,\n routeRules: [\n {\n matchRules: [{\n pathTemplateMatch: \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n }],\n service: cart_backend.id,\n priority: 1,\n routeAction: {\n urlRewrite: {\n pathTemplateRewrite: \"/{username}-{cartid}/\",\n },\n },\n },\n {\n matchRules: [{\n pathTemplateMatch: \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n }],\n service: user_backend.id,\n priority: 2,\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n http_health_check={\n \"port\": 80,\n \"request_path\": \"/\",\n })\nhome_backend = gcp.compute.RegionBackendService(\"home-backend\",\n region=\"us-central1\",\n name=\"home-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\ncart_backend = gcp.compute.RegionBackendService(\"cart-backend\",\n region=\"us-central1\",\n name=\"cart-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nuser_backend = gcp.compute.RegionBackendService(\"user-backend\",\n region=\"us-central1\",\n name=\"user-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nurlmap = gcp.compute.RegionUrlMap(\"urlmap\",\n region=\"us-central1\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home_backend.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"mysite\",\n }],\n path_matchers=[{\n \"name\": \"mysite\",\n \"default_service\": home_backend.id,\n \"route_rules\": [\n {\n \"match_rules\": [{\n \"path_template_match\": \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n }],\n \"service\": cart_backend.id,\n \"priority\": 1,\n \"route_action\": {\n \"url_rewrite\": {\n \"path_template_rewrite\": \"/{username}-{cartid}/\",\n },\n },\n },\n {\n \"match_rules\": [{\n \"path_template_match\": \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n }],\n \"service\": user_backend.id,\n \"priority\": 2,\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 @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n RequestPath = \"/\",\n },\n });\n\n var home_backend = new Gcp.Compute.RegionBackendService(\"home-backend\", new()\n {\n Region = \"us-central1\",\n Name = \"home-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var cart_backend = new Gcp.Compute.RegionBackendService(\"cart-backend\", new()\n {\n Region = \"us-central1\",\n Name = \"cart-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var user_backend = new Gcp.Compute.RegionBackendService(\"user-backend\", new()\n {\n Region = \"us-central1\",\n Name = \"user-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var urlmap = new Gcp.Compute.RegionUrlMap(\"urlmap\", new()\n {\n Region = \"us-central1\",\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home_backend.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"mysite\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"mysite\",\n DefaultService = home_backend.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleArgs\n {\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n },\n },\n Service = cart_backend.Id,\n Priority = 1,\n RouteAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleRouteActionArgs\n {\n UrlRewrite = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleRouteActionUrlRewriteArgs\n {\n PathTemplateRewrite = \"/{username}-{cartid}/\",\n },\n },\n },\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleArgs\n {\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n },\n },\n Service = user_backend.Id,\n Priority = 2,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\tRequestPath: pulumi.String(\"/\"),\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.NewRegionBackendService(ctx, \"home-backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"home-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionBackendService(ctx, \"cart-backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"cart-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionBackendService(ctx, \"user-backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"user-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"urlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home_backend.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"mysite\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"mysite\"),\n\t\t\t\t\tDefaultService: home_backend.ID(),\n\t\t\t\t\tRouteRules: compute.RegionUrlMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tMatchRules: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: cart_backend.ID(),\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tRouteAction: \u0026compute.RegionUrlMapPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.RegionUrlMapPathMatcherRouteRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateRewrite: pulumi.String(\"/{username}-{cartid}/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tMatchRules: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/xyzwebservices/v2/xyz/users/*/accountinfo/*\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: user_backend.ID(),\n\t\t\t\t\t\t\tPriority: pulumi.Int(2),\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.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.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\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 RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .requestPath(\"/\")\n .build())\n .build());\n\n var home_backend = new RegionBackendService(\"home-backend\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"home-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var cart_backend = new RegionBackendService(\"cart-backend\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"cart-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var user_backend = new RegionBackendService(\"user-backend\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"user-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var urlmap = new RegionUrlMap(\"urlmap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home_backend.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"mysite\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"mysite\")\n .defaultService(home_backend.id())\n .routeRules( \n RegionUrlMapPathMatcherRouteRuleArgs.builder()\n .matchRules(RegionUrlMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\")\n .build())\n .service(cart_backend.id())\n .priority(1)\n .routeAction(RegionUrlMapPathMatcherRouteRuleRouteActionArgs.builder()\n .urlRewrite(RegionUrlMapPathMatcherRouteRuleRouteActionUrlRewriteArgs.builder()\n .pathTemplateRewrite(\"/{username}-{cartid}/\")\n .build())\n .build())\n .build(),\n RegionUrlMapPathMatcherRouteRuleArgs.builder()\n .matchRules(RegionUrlMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/xyzwebservices/v2/xyz/users/*/accountinfo/*\")\n .build())\n .service(user_backend.id())\n .priority(2)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n region: us-central1\n name: urlmap\n description: a description\n defaultService: ${[\"home-backend\"].id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: mysite\n pathMatchers:\n - name: mysite\n defaultService: ${[\"home-backend\"].id}\n routeRules:\n - matchRules:\n - pathTemplateMatch: /xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\n service: ${[\"cart-backend\"].id}\n priority: 1\n routeAction:\n urlRewrite:\n pathTemplateRewrite: /{username}-{cartid}/\n - matchRules:\n - pathTemplateMatch: /xyzwebservices/v2/xyz/users/*/accountinfo/*\n service: ${[\"user-backend\"].id}\n priority: 2\n home-backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: home-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n cart-backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: cart-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n user-backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: user-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: us-central1\n name: health-check\n checkIntervalSec: 1\n timeoutSec: 1\n httpHealthCheck:\n port: 80\n requestPath: /\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionUrlMap can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/urlMaps/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionUrlMap can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionUrlMap:RegionUrlMap default projects/{{project}}/regions/{{region}}/urlMaps/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionUrlMap:RegionUrlMap default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionUrlMap:RegionUrlMap default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionUrlMap:RegionUrlMap default {{name}}\n```\n\n", "properties": { "creationTimestamp": { "type": "string", @@ -160754,7 +160754,7 @@ } }, "gcp:compute/reservation:Reservation": { - "description": "Represents a reservation resource. A reservation ensures that capacity is\nheld in a specific zone even if the reserved VMs are not running.\n\nReservations apply only to Compute Engine, Cloud Dataproc, and Google\nKubernetes Engine VM usage.Reservations do not apply to `f1-micro` or\n`g1-small` machine types, preemptible VMs, sole tenant nodes, or other\nservices not listed above\nlike Cloud SQL and Dataflow.\n\n\nTo get more information about Reservation, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/reservations)\n* How-to Guides\n * [Reserving zonal resources](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources)\n\n## Example Usage\n\n### Reservation Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst gceReservation = new gcp.compute.Reservation(\"gce_reservation\", {\n name: \"gce-reservation\",\n zone: \"us-central1-a\",\n specificReservation: {\n count: 1,\n instanceProperties: {\n minCpuPlatform: \"Intel Cascade Lake\",\n machineType: \"n2-standard-2\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngce_reservation = gcp.compute.Reservation(\"gce_reservation\",\n name=\"gce-reservation\",\n zone=\"us-central1-a\",\n specific_reservation={\n \"count\": 1,\n \"instanceProperties\": {\n \"minCpuPlatform\": \"Intel Cascade Lake\",\n \"machineType\": \"n2-standard-2\",\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 gceReservation = new Gcp.Compute.Reservation(\"gce_reservation\", new()\n {\n Name = \"gce-reservation\",\n Zone = \"us-central1-a\",\n SpecificReservation = new Gcp.Compute.Inputs.ReservationSpecificReservationArgs\n {\n Count = 1,\n InstanceProperties = new Gcp.Compute.Inputs.ReservationSpecificReservationInstancePropertiesArgs\n {\n MinCpuPlatform = \"Intel Cascade Lake\",\n MachineType = \"n2-standard-2\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewReservation(ctx, \"gce_reservation\", \u0026compute.ReservationArgs{\n\t\t\tName: pulumi.String(\"gce-reservation\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tSpecificReservation: \u0026compute.ReservationSpecificReservationArgs{\n\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\tInstanceProperties: \u0026compute.ReservationSpecificReservationInstancePropertiesArgs{\n\t\t\t\t\tMinCpuPlatform: pulumi.String(\"Intel Cascade Lake\"),\n\t\t\t\t\tMachineType: pulumi.String(\"n2-standard-2\"),\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.Reservation;\nimport com.pulumi.gcp.compute.ReservationArgs;\nimport com.pulumi.gcp.compute.inputs.ReservationSpecificReservationArgs;\nimport com.pulumi.gcp.compute.inputs.ReservationSpecificReservationInstancePropertiesArgs;\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 gceReservation = new Reservation(\"gceReservation\", ReservationArgs.builder()\n .name(\"gce-reservation\")\n .zone(\"us-central1-a\")\n .specificReservation(ReservationSpecificReservationArgs.builder()\n .count(1)\n .instanceProperties(ReservationSpecificReservationInstancePropertiesArgs.builder()\n .minCpuPlatform(\"Intel Cascade Lake\")\n .machineType(\"n2-standard-2\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n gceReservation:\n type: gcp:compute:Reservation\n name: gce_reservation\n properties:\n name: gce-reservation\n zone: us-central1-a\n specificReservation:\n count: 1\n instanceProperties:\n minCpuPlatform: Intel Cascade Lake\n machineType: n2-standard-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nReservation can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/reservations/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Reservation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/reservation:Reservation default projects/{{project}}/zones/{{zone}}/reservations/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/reservation:Reservation default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/reservation:Reservation default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/reservation:Reservation default {{name}}\n```\n\n", + "description": "Represents a reservation resource. A reservation ensures that capacity is\nheld in a specific zone even if the reserved VMs are not running.\n\nReservations apply only to Compute Engine, Cloud Dataproc, and Google\nKubernetes Engine VM usage.Reservations do not apply to `f1-micro` or\n`g1-small` machine types, preemptible VMs, sole tenant nodes, or other\nservices not listed above\nlike Cloud SQL and Dataflow.\n\n\nTo get more information about Reservation, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/reservations)\n* How-to Guides\n * [Reserving zonal resources](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources)\n\n## Example Usage\n\n### Reservation Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst gceReservation = new gcp.compute.Reservation(\"gce_reservation\", {\n name: \"gce-reservation\",\n zone: \"us-central1-a\",\n specificReservation: {\n count: 1,\n instanceProperties: {\n minCpuPlatform: \"Intel Cascade Lake\",\n machineType: \"n2-standard-2\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngce_reservation = gcp.compute.Reservation(\"gce_reservation\",\n name=\"gce-reservation\",\n zone=\"us-central1-a\",\n specific_reservation={\n \"count\": 1,\n \"instance_properties\": {\n \"min_cpu_platform\": \"Intel Cascade Lake\",\n \"machine_type\": \"n2-standard-2\",\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 gceReservation = new Gcp.Compute.Reservation(\"gce_reservation\", new()\n {\n Name = \"gce-reservation\",\n Zone = \"us-central1-a\",\n SpecificReservation = new Gcp.Compute.Inputs.ReservationSpecificReservationArgs\n {\n Count = 1,\n InstanceProperties = new Gcp.Compute.Inputs.ReservationSpecificReservationInstancePropertiesArgs\n {\n MinCpuPlatform = \"Intel Cascade Lake\",\n MachineType = \"n2-standard-2\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewReservation(ctx, \"gce_reservation\", \u0026compute.ReservationArgs{\n\t\t\tName: pulumi.String(\"gce-reservation\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tSpecificReservation: \u0026compute.ReservationSpecificReservationArgs{\n\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\tInstanceProperties: \u0026compute.ReservationSpecificReservationInstancePropertiesArgs{\n\t\t\t\t\tMinCpuPlatform: pulumi.String(\"Intel Cascade Lake\"),\n\t\t\t\t\tMachineType: pulumi.String(\"n2-standard-2\"),\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.Reservation;\nimport com.pulumi.gcp.compute.ReservationArgs;\nimport com.pulumi.gcp.compute.inputs.ReservationSpecificReservationArgs;\nimport com.pulumi.gcp.compute.inputs.ReservationSpecificReservationInstancePropertiesArgs;\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 gceReservation = new Reservation(\"gceReservation\", ReservationArgs.builder()\n .name(\"gce-reservation\")\n .zone(\"us-central1-a\")\n .specificReservation(ReservationSpecificReservationArgs.builder()\n .count(1)\n .instanceProperties(ReservationSpecificReservationInstancePropertiesArgs.builder()\n .minCpuPlatform(\"Intel Cascade Lake\")\n .machineType(\"n2-standard-2\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n gceReservation:\n type: gcp:compute:Reservation\n name: gce_reservation\n properties:\n name: gce-reservation\n zone: us-central1-a\n specificReservation:\n count: 1\n instanceProperties:\n minCpuPlatform: Intel Cascade Lake\n machineType: n2-standard-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nReservation can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/reservations/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Reservation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/reservation:Reservation default projects/{{project}}/zones/{{zone}}/reservations/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/reservation:Reservation default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/reservation:Reservation default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/reservation:Reservation default {{name}}\n```\n\n", "properties": { "commitment": { "type": "string", @@ -160905,7 +160905,7 @@ } }, "gcp:compute/resourcePolicy:ResourcePolicy": { - "description": "A policy that can be attached to a resource to specify or schedule actions on that resource.\n\n\nTo get more information about ResourcePolicy, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/resourcePolicies)\n\n## Example Usage\n\n### Resource Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst foo = new gcp.compute.ResourcePolicy(\"foo\", {\n name: \"gce-policy\",\n region: \"us-central1\",\n snapshotSchedulePolicy: {\n schedule: {\n dailySchedule: {\n daysInCycle: 1,\n startTime: \"04:00\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfoo = gcp.compute.ResourcePolicy(\"foo\",\n name=\"gce-policy\",\n region=\"us-central1\",\n snapshot_schedule_policy={\n \"schedule\": {\n \"dailySchedule\": {\n \"daysInCycle\": 1,\n \"startTime\": \"04:00\",\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 foo = new Gcp.Compute.ResourcePolicy(\"foo\", new()\n {\n Name = \"gce-policy\",\n Region = \"us-central1\",\n SnapshotSchedulePolicy = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyArgs\n {\n Schedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs\n {\n DailySchedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs\n {\n DaysInCycle = 1,\n StartTime = \"04:00\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewResourcePolicy(ctx, \"foo\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"gce-policy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSnapshotSchedulePolicy: \u0026compute.ResourcePolicySnapshotSchedulePolicyArgs{\n\t\t\t\tSchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleArgs{\n\t\t\t\t\tDailySchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs{\n\t\t\t\t\t\tDaysInCycle: pulumi.Int(1),\n\t\t\t\t\t\tStartTime: pulumi.String(\"04:00\"),\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.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs;\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 foo = new ResourcePolicy(\"foo\", ResourcePolicyArgs.builder()\n .name(\"gce-policy\")\n .region(\"us-central1\")\n .snapshotSchedulePolicy(ResourcePolicySnapshotSchedulePolicyArgs.builder()\n .schedule(ResourcePolicySnapshotSchedulePolicyScheduleArgs.builder()\n .dailySchedule(ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs.builder()\n .daysInCycle(1)\n .startTime(\"04:00\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: gcp:compute:ResourcePolicy\n properties:\n name: gce-policy\n region: us-central1\n snapshotSchedulePolicy:\n schedule:\n dailySchedule:\n daysInCycle: 1\n startTime: 04:00\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Resource Policy Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bar = new gcp.compute.ResourcePolicy(\"bar\", {\n name: \"gce-policy\",\n region: \"us-central1\",\n snapshotSchedulePolicy: {\n schedule: {\n hourlySchedule: {\n hoursInCycle: 20,\n startTime: \"23:00\",\n },\n },\n retentionPolicy: {\n maxRetentionDays: 10,\n onSourceDiskDelete: \"KEEP_AUTO_SNAPSHOTS\",\n },\n snapshotProperties: {\n labels: {\n my_label: \"value\",\n },\n storageLocations: \"us\",\n guestFlush: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbar = gcp.compute.ResourcePolicy(\"bar\",\n name=\"gce-policy\",\n region=\"us-central1\",\n snapshot_schedule_policy={\n \"schedule\": {\n \"hourlySchedule\": {\n \"hoursInCycle\": 20,\n \"startTime\": \"23:00\",\n },\n },\n \"retentionPolicy\": {\n \"maxRetentionDays\": 10,\n \"onSourceDiskDelete\": \"KEEP_AUTO_SNAPSHOTS\",\n },\n \"snapshotProperties\": {\n \"labels\": {\n \"my_label\": \"value\",\n },\n \"storageLocations\": \"us\",\n \"guestFlush\": 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 bar = new Gcp.Compute.ResourcePolicy(\"bar\", new()\n {\n Name = \"gce-policy\",\n Region = \"us-central1\",\n SnapshotSchedulePolicy = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyArgs\n {\n Schedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs\n {\n HourlySchedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleHourlyScheduleArgs\n {\n HoursInCycle = 20,\n StartTime = \"23:00\",\n },\n },\n RetentionPolicy = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyRetentionPolicyArgs\n {\n MaxRetentionDays = 10,\n OnSourceDiskDelete = \"KEEP_AUTO_SNAPSHOTS\",\n },\n SnapshotProperties = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicySnapshotPropertiesArgs\n {\n Labels = \n {\n { \"my_label\", \"value\" },\n },\n StorageLocations = \"us\",\n GuestFlush = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewResourcePolicy(ctx, \"bar\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"gce-policy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSnapshotSchedulePolicy: \u0026compute.ResourcePolicySnapshotSchedulePolicyArgs{\n\t\t\t\tSchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleArgs{\n\t\t\t\t\tHourlySchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleHourlyScheduleArgs{\n\t\t\t\t\t\tHoursInCycle: pulumi.Int(20),\n\t\t\t\t\t\tStartTime: pulumi.String(\"23:00\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRetentionPolicy: \u0026compute.ResourcePolicySnapshotSchedulePolicyRetentionPolicyArgs{\n\t\t\t\t\tMaxRetentionDays: pulumi.Int(10),\n\t\t\t\t\tOnSourceDiskDelete: pulumi.String(\"KEEP_AUTO_SNAPSHOTS\"),\n\t\t\t\t},\n\t\t\t\tSnapshotProperties: \u0026compute.ResourcePolicySnapshotSchedulePolicySnapshotPropertiesArgs{\n\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\"my_label\": pulumi.String(\"value\"),\n\t\t\t\t\t},\n\t\t\t\t\tStorageLocations: pulumi.String(\"us\"),\n\t\t\t\t\tGuestFlush: 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.compute.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleHourlyScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyRetentionPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicySnapshotPropertiesArgs;\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 ResourcePolicy(\"bar\", ResourcePolicyArgs.builder()\n .name(\"gce-policy\")\n .region(\"us-central1\")\n .snapshotSchedulePolicy(ResourcePolicySnapshotSchedulePolicyArgs.builder()\n .schedule(ResourcePolicySnapshotSchedulePolicyScheduleArgs.builder()\n .hourlySchedule(ResourcePolicySnapshotSchedulePolicyScheduleHourlyScheduleArgs.builder()\n .hoursInCycle(20)\n .startTime(\"23:00\")\n .build())\n .build())\n .retentionPolicy(ResourcePolicySnapshotSchedulePolicyRetentionPolicyArgs.builder()\n .maxRetentionDays(10)\n .onSourceDiskDelete(\"KEEP_AUTO_SNAPSHOTS\")\n .build())\n .snapshotProperties(ResourcePolicySnapshotSchedulePolicySnapshotPropertiesArgs.builder()\n .labels(Map.of(\"my_label\", \"value\"))\n .storageLocations(\"us\")\n .guestFlush(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bar:\n type: gcp:compute:ResourcePolicy\n properties:\n name: gce-policy\n region: us-central1\n snapshotSchedulePolicy:\n schedule:\n hourlySchedule:\n hoursInCycle: 20\n startTime: 23:00\n retentionPolicy:\n maxRetentionDays: 10\n onSourceDiskDelete: KEEP_AUTO_SNAPSHOTS\n snapshotProperties:\n labels:\n my_label: value\n storageLocations: us\n guestFlush: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Resource Policy Placement Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst baz = new gcp.compute.ResourcePolicy(\"baz\", {\n name: \"gce-policy\",\n region: \"us-central1\",\n groupPlacementPolicy: {\n vmCount: 2,\n collocation: \"COLLOCATED\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbaz = gcp.compute.ResourcePolicy(\"baz\",\n name=\"gce-policy\",\n region=\"us-central1\",\n group_placement_policy={\n \"vmCount\": 2,\n \"collocation\": \"COLLOCATED\",\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 baz = new Gcp.Compute.ResourcePolicy(\"baz\", new()\n {\n Name = \"gce-policy\",\n Region = \"us-central1\",\n GroupPlacementPolicy = new Gcp.Compute.Inputs.ResourcePolicyGroupPlacementPolicyArgs\n {\n VmCount = 2,\n Collocation = \"COLLOCATED\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewResourcePolicy(ctx, \"baz\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"gce-policy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tGroupPlacementPolicy: \u0026compute.ResourcePolicyGroupPlacementPolicyArgs{\n\t\t\t\tVmCount: pulumi.Int(2),\n\t\t\t\tCollocation: pulumi.String(\"COLLOCATED\"),\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.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicyGroupPlacementPolicyArgs;\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 baz = new ResourcePolicy(\"baz\", ResourcePolicyArgs.builder()\n .name(\"gce-policy\")\n .region(\"us-central1\")\n .groupPlacementPolicy(ResourcePolicyGroupPlacementPolicyArgs.builder()\n .vmCount(2)\n .collocation(\"COLLOCATED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n baz:\n type: gcp:compute:ResourcePolicy\n properties:\n name: gce-policy\n region: us-central1\n groupPlacementPolicy:\n vmCount: 2\n collocation: COLLOCATED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Resource Policy Placement Policy Max Distance\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst baz = new gcp.compute.ResourcePolicy(\"baz\", {\n name: \"gce-policy\",\n region: \"us-central1\",\n groupPlacementPolicy: {\n vmCount: 2,\n collocation: \"COLLOCATED\",\n maxDistance: 2,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbaz = gcp.compute.ResourcePolicy(\"baz\",\n name=\"gce-policy\",\n region=\"us-central1\",\n group_placement_policy={\n \"vmCount\": 2,\n \"collocation\": \"COLLOCATED\",\n \"maxDistance\": 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 baz = new Gcp.Compute.ResourcePolicy(\"baz\", new()\n {\n Name = \"gce-policy\",\n Region = \"us-central1\",\n GroupPlacementPolicy = new Gcp.Compute.Inputs.ResourcePolicyGroupPlacementPolicyArgs\n {\n VmCount = 2,\n Collocation = \"COLLOCATED\",\n MaxDistance = 2,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewResourcePolicy(ctx, \"baz\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"gce-policy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tGroupPlacementPolicy: \u0026compute.ResourcePolicyGroupPlacementPolicyArgs{\n\t\t\t\tVmCount: pulumi.Int(2),\n\t\t\t\tCollocation: pulumi.String(\"COLLOCATED\"),\n\t\t\t\tMaxDistance: pulumi.Int(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.compute.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicyGroupPlacementPolicyArgs;\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 baz = new ResourcePolicy(\"baz\", ResourcePolicyArgs.builder()\n .name(\"gce-policy\")\n .region(\"us-central1\")\n .groupPlacementPolicy(ResourcePolicyGroupPlacementPolicyArgs.builder()\n .vmCount(2)\n .collocation(\"COLLOCATED\")\n .maxDistance(2)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n baz:\n type: gcp:compute:ResourcePolicy\n properties:\n name: gce-policy\n region: us-central1\n groupPlacementPolicy:\n vmCount: 2\n collocation: COLLOCATED\n maxDistance: 2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Resource Policy Instance Schedule Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst hourly = new gcp.compute.ResourcePolicy(\"hourly\", {\n name: \"gce-policy\",\n region: \"us-central1\",\n description: \"Start and stop instances\",\n instanceSchedulePolicy: {\n vmStartSchedule: {\n schedule: \"0 * * * *\",\n },\n vmStopSchedule: {\n schedule: \"15 * * * *\",\n },\n timeZone: \"US/Central\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhourly = gcp.compute.ResourcePolicy(\"hourly\",\n name=\"gce-policy\",\n region=\"us-central1\",\n description=\"Start and stop instances\",\n instance_schedule_policy={\n \"vmStartSchedule\": {\n \"schedule\": \"0 * * * *\",\n },\n \"vmStopSchedule\": {\n \"schedule\": \"15 * * * *\",\n },\n \"timeZone\": \"US/Central\",\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 hourly = new Gcp.Compute.ResourcePolicy(\"hourly\", new()\n {\n Name = \"gce-policy\",\n Region = \"us-central1\",\n Description = \"Start and stop instances\",\n InstanceSchedulePolicy = new Gcp.Compute.Inputs.ResourcePolicyInstanceSchedulePolicyArgs\n {\n VmStartSchedule = new Gcp.Compute.Inputs.ResourcePolicyInstanceSchedulePolicyVmStartScheduleArgs\n {\n Schedule = \"0 * * * *\",\n },\n VmStopSchedule = new Gcp.Compute.Inputs.ResourcePolicyInstanceSchedulePolicyVmStopScheduleArgs\n {\n Schedule = \"15 * * * *\",\n },\n TimeZone = \"US/Central\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewResourcePolicy(ctx, \"hourly\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"gce-policy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"Start and stop instances\"),\n\t\t\tInstanceSchedulePolicy: \u0026compute.ResourcePolicyInstanceSchedulePolicyArgs{\n\t\t\t\tVmStartSchedule: \u0026compute.ResourcePolicyInstanceSchedulePolicyVmStartScheduleArgs{\n\t\t\t\t\tSchedule: pulumi.String(\"0 * * * *\"),\n\t\t\t\t},\n\t\t\t\tVmStopSchedule: \u0026compute.ResourcePolicyInstanceSchedulePolicyVmStopScheduleArgs{\n\t\t\t\t\tSchedule: pulumi.String(\"15 * * * *\"),\n\t\t\t\t},\n\t\t\t\tTimeZone: pulumi.String(\"US/Central\"),\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.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicyInstanceSchedulePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicyInstanceSchedulePolicyVmStartScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicyInstanceSchedulePolicyVmStopScheduleArgs;\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 hourly = new ResourcePolicy(\"hourly\", ResourcePolicyArgs.builder()\n .name(\"gce-policy\")\n .region(\"us-central1\")\n .description(\"Start and stop instances\")\n .instanceSchedulePolicy(ResourcePolicyInstanceSchedulePolicyArgs.builder()\n .vmStartSchedule(ResourcePolicyInstanceSchedulePolicyVmStartScheduleArgs.builder()\n .schedule(\"0 * * * *\")\n .build())\n .vmStopSchedule(ResourcePolicyInstanceSchedulePolicyVmStopScheduleArgs.builder()\n .schedule(\"15 * * * *\")\n .build())\n .timeZone(\"US/Central\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n hourly:\n type: gcp:compute:ResourcePolicy\n properties:\n name: gce-policy\n region: us-central1\n description: Start and stop instances\n instanceSchedulePolicy:\n vmStartSchedule:\n schedule: 0 * * * *\n vmStopSchedule:\n schedule: 15 * * * *\n timeZone: US/Central\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Resource Policy Snapshot Schedule Chain Name\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst hourly = new gcp.compute.ResourcePolicy(\"hourly\", {\n name: \"gce-policy\",\n region: \"us-central1\",\n description: \"chain name snapshot\",\n snapshotSchedulePolicy: {\n schedule: {\n hourlySchedule: {\n hoursInCycle: 20,\n startTime: \"23:00\",\n },\n },\n retentionPolicy: {\n maxRetentionDays: 14,\n onSourceDiskDelete: \"KEEP_AUTO_SNAPSHOTS\",\n },\n snapshotProperties: {\n labels: {\n my_label: \"value\",\n },\n storageLocations: \"us\",\n guestFlush: true,\n chainName: \"test-schedule-chain-name\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhourly = gcp.compute.ResourcePolicy(\"hourly\",\n name=\"gce-policy\",\n region=\"us-central1\",\n description=\"chain name snapshot\",\n snapshot_schedule_policy={\n \"schedule\": {\n \"hourlySchedule\": {\n \"hoursInCycle\": 20,\n \"startTime\": \"23:00\",\n },\n },\n \"retentionPolicy\": {\n \"maxRetentionDays\": 14,\n \"onSourceDiskDelete\": \"KEEP_AUTO_SNAPSHOTS\",\n },\n \"snapshotProperties\": {\n \"labels\": {\n \"my_label\": \"value\",\n },\n \"storageLocations\": \"us\",\n \"guestFlush\": True,\n \"chainName\": \"test-schedule-chain-name\",\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 hourly = new Gcp.Compute.ResourcePolicy(\"hourly\", new()\n {\n Name = \"gce-policy\",\n Region = \"us-central1\",\n Description = \"chain name snapshot\",\n SnapshotSchedulePolicy = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyArgs\n {\n Schedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs\n {\n HourlySchedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleHourlyScheduleArgs\n {\n HoursInCycle = 20,\n StartTime = \"23:00\",\n },\n },\n RetentionPolicy = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyRetentionPolicyArgs\n {\n MaxRetentionDays = 14,\n OnSourceDiskDelete = \"KEEP_AUTO_SNAPSHOTS\",\n },\n SnapshotProperties = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicySnapshotPropertiesArgs\n {\n Labels = \n {\n { \"my_label\", \"value\" },\n },\n StorageLocations = \"us\",\n GuestFlush = true,\n ChainName = \"test-schedule-chain-name\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewResourcePolicy(ctx, \"hourly\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"gce-policy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"chain name snapshot\"),\n\t\t\tSnapshotSchedulePolicy: \u0026compute.ResourcePolicySnapshotSchedulePolicyArgs{\n\t\t\t\tSchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleArgs{\n\t\t\t\t\tHourlySchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleHourlyScheduleArgs{\n\t\t\t\t\t\tHoursInCycle: pulumi.Int(20),\n\t\t\t\t\t\tStartTime: pulumi.String(\"23:00\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRetentionPolicy: \u0026compute.ResourcePolicySnapshotSchedulePolicyRetentionPolicyArgs{\n\t\t\t\t\tMaxRetentionDays: pulumi.Int(14),\n\t\t\t\t\tOnSourceDiskDelete: pulumi.String(\"KEEP_AUTO_SNAPSHOTS\"),\n\t\t\t\t},\n\t\t\t\tSnapshotProperties: \u0026compute.ResourcePolicySnapshotSchedulePolicySnapshotPropertiesArgs{\n\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\"my_label\": pulumi.String(\"value\"),\n\t\t\t\t\t},\n\t\t\t\t\tStorageLocations: pulumi.String(\"us\"),\n\t\t\t\t\tGuestFlush: pulumi.Bool(true),\n\t\t\t\t\tChainName: pulumi.String(\"test-schedule-chain-name\"),\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.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleHourlyScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyRetentionPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicySnapshotPropertiesArgs;\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 hourly = new ResourcePolicy(\"hourly\", ResourcePolicyArgs.builder()\n .name(\"gce-policy\")\n .region(\"us-central1\")\n .description(\"chain name snapshot\")\n .snapshotSchedulePolicy(ResourcePolicySnapshotSchedulePolicyArgs.builder()\n .schedule(ResourcePolicySnapshotSchedulePolicyScheduleArgs.builder()\n .hourlySchedule(ResourcePolicySnapshotSchedulePolicyScheduleHourlyScheduleArgs.builder()\n .hoursInCycle(20)\n .startTime(\"23:00\")\n .build())\n .build())\n .retentionPolicy(ResourcePolicySnapshotSchedulePolicyRetentionPolicyArgs.builder()\n .maxRetentionDays(14)\n .onSourceDiskDelete(\"KEEP_AUTO_SNAPSHOTS\")\n .build())\n .snapshotProperties(ResourcePolicySnapshotSchedulePolicySnapshotPropertiesArgs.builder()\n .labels(Map.of(\"my_label\", \"value\"))\n .storageLocations(\"us\")\n .guestFlush(true)\n .chainName(\"test-schedule-chain-name\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n hourly:\n type: gcp:compute:ResourcePolicy\n properties:\n name: gce-policy\n region: us-central1\n description: chain name snapshot\n snapshotSchedulePolicy:\n schedule:\n hourlySchedule:\n hoursInCycle: 20\n startTime: 23:00\n retentionPolicy:\n maxRetentionDays: 14\n onSourceDiskDelete: KEEP_AUTO_SNAPSHOTS\n snapshotProperties:\n labels:\n my_label: value\n storageLocations: us\n guestFlush: true\n chainName: test-schedule-chain-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Resource Policy Consistency Group\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cgroup = new gcp.compute.ResourcePolicy(\"cgroup\", {\n name: \"gce-policy\",\n region: \"europe-west1\",\n diskConsistencyGroupPolicy: {\n enabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncgroup = gcp.compute.ResourcePolicy(\"cgroup\",\n name=\"gce-policy\",\n region=\"europe-west1\",\n disk_consistency_group_policy={\n \"enabled\": 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 cgroup = new Gcp.Compute.ResourcePolicy(\"cgroup\", new()\n {\n Name = \"gce-policy\",\n Region = \"europe-west1\",\n DiskConsistencyGroupPolicy = new Gcp.Compute.Inputs.ResourcePolicyDiskConsistencyGroupPolicyArgs\n {\n Enabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewResourcePolicy(ctx, \"cgroup\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"gce-policy\"),\n\t\t\tRegion: pulumi.String(\"europe-west1\"),\n\t\t\tDiskConsistencyGroupPolicy: \u0026compute.ResourcePolicyDiskConsistencyGroupPolicyArgs{\n\t\t\t\tEnabled: 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.compute.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicyDiskConsistencyGroupPolicyArgs;\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 cgroup = new ResourcePolicy(\"cgroup\", ResourcePolicyArgs.builder()\n .name(\"gce-policy\")\n .region(\"europe-west1\")\n .diskConsistencyGroupPolicy(ResourcePolicyDiskConsistencyGroupPolicyArgs.builder()\n .enabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cgroup:\n type: gcp:compute:ResourcePolicy\n properties:\n name: gce-policy\n region: europe-west1\n diskConsistencyGroupPolicy:\n enabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResourcePolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/resourcePolicies/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ResourcePolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/resourcePolicy:ResourcePolicy default projects/{{project}}/regions/{{region}}/resourcePolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/resourcePolicy:ResourcePolicy default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/resourcePolicy:ResourcePolicy default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/resourcePolicy:ResourcePolicy default {{name}}\n```\n\n", + "description": "A policy that can be attached to a resource to specify or schedule actions on that resource.\n\n\nTo get more information about ResourcePolicy, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/resourcePolicies)\n\n## Example Usage\n\n### Resource Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst foo = new gcp.compute.ResourcePolicy(\"foo\", {\n name: \"gce-policy\",\n region: \"us-central1\",\n snapshotSchedulePolicy: {\n schedule: {\n dailySchedule: {\n daysInCycle: 1,\n startTime: \"04:00\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfoo = gcp.compute.ResourcePolicy(\"foo\",\n name=\"gce-policy\",\n region=\"us-central1\",\n snapshot_schedule_policy={\n \"schedule\": {\n \"daily_schedule\": {\n \"days_in_cycle\": 1,\n \"start_time\": \"04:00\",\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 foo = new Gcp.Compute.ResourcePolicy(\"foo\", new()\n {\n Name = \"gce-policy\",\n Region = \"us-central1\",\n SnapshotSchedulePolicy = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyArgs\n {\n Schedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs\n {\n DailySchedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs\n {\n DaysInCycle = 1,\n StartTime = \"04:00\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewResourcePolicy(ctx, \"foo\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"gce-policy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSnapshotSchedulePolicy: \u0026compute.ResourcePolicySnapshotSchedulePolicyArgs{\n\t\t\t\tSchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleArgs{\n\t\t\t\t\tDailySchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs{\n\t\t\t\t\t\tDaysInCycle: pulumi.Int(1),\n\t\t\t\t\t\tStartTime: pulumi.String(\"04:00\"),\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.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs;\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 foo = new ResourcePolicy(\"foo\", ResourcePolicyArgs.builder()\n .name(\"gce-policy\")\n .region(\"us-central1\")\n .snapshotSchedulePolicy(ResourcePolicySnapshotSchedulePolicyArgs.builder()\n .schedule(ResourcePolicySnapshotSchedulePolicyScheduleArgs.builder()\n .dailySchedule(ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs.builder()\n .daysInCycle(1)\n .startTime(\"04:00\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: gcp:compute:ResourcePolicy\n properties:\n name: gce-policy\n region: us-central1\n snapshotSchedulePolicy:\n schedule:\n dailySchedule:\n daysInCycle: 1\n startTime: 04:00\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Resource Policy Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bar = new gcp.compute.ResourcePolicy(\"bar\", {\n name: \"gce-policy\",\n region: \"us-central1\",\n snapshotSchedulePolicy: {\n schedule: {\n hourlySchedule: {\n hoursInCycle: 20,\n startTime: \"23:00\",\n },\n },\n retentionPolicy: {\n maxRetentionDays: 10,\n onSourceDiskDelete: \"KEEP_AUTO_SNAPSHOTS\",\n },\n snapshotProperties: {\n labels: {\n my_label: \"value\",\n },\n storageLocations: \"us\",\n guestFlush: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbar = gcp.compute.ResourcePolicy(\"bar\",\n name=\"gce-policy\",\n region=\"us-central1\",\n snapshot_schedule_policy={\n \"schedule\": {\n \"hourly_schedule\": {\n \"hours_in_cycle\": 20,\n \"start_time\": \"23:00\",\n },\n },\n \"retention_policy\": {\n \"max_retention_days\": 10,\n \"on_source_disk_delete\": \"KEEP_AUTO_SNAPSHOTS\",\n },\n \"snapshot_properties\": {\n \"labels\": {\n \"my_label\": \"value\",\n },\n \"storage_locations\": \"us\",\n \"guest_flush\": 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 bar = new Gcp.Compute.ResourcePolicy(\"bar\", new()\n {\n Name = \"gce-policy\",\n Region = \"us-central1\",\n SnapshotSchedulePolicy = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyArgs\n {\n Schedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs\n {\n HourlySchedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleHourlyScheduleArgs\n {\n HoursInCycle = 20,\n StartTime = \"23:00\",\n },\n },\n RetentionPolicy = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyRetentionPolicyArgs\n {\n MaxRetentionDays = 10,\n OnSourceDiskDelete = \"KEEP_AUTO_SNAPSHOTS\",\n },\n SnapshotProperties = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicySnapshotPropertiesArgs\n {\n Labels = \n {\n { \"my_label\", \"value\" },\n },\n StorageLocations = \"us\",\n GuestFlush = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewResourcePolicy(ctx, \"bar\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"gce-policy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSnapshotSchedulePolicy: \u0026compute.ResourcePolicySnapshotSchedulePolicyArgs{\n\t\t\t\tSchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleArgs{\n\t\t\t\t\tHourlySchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleHourlyScheduleArgs{\n\t\t\t\t\t\tHoursInCycle: pulumi.Int(20),\n\t\t\t\t\t\tStartTime: pulumi.String(\"23:00\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRetentionPolicy: \u0026compute.ResourcePolicySnapshotSchedulePolicyRetentionPolicyArgs{\n\t\t\t\t\tMaxRetentionDays: pulumi.Int(10),\n\t\t\t\t\tOnSourceDiskDelete: pulumi.String(\"KEEP_AUTO_SNAPSHOTS\"),\n\t\t\t\t},\n\t\t\t\tSnapshotProperties: \u0026compute.ResourcePolicySnapshotSchedulePolicySnapshotPropertiesArgs{\n\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\"my_label\": pulumi.String(\"value\"),\n\t\t\t\t\t},\n\t\t\t\t\tStorageLocations: pulumi.String(\"us\"),\n\t\t\t\t\tGuestFlush: 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.compute.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleHourlyScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyRetentionPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicySnapshotPropertiesArgs;\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 ResourcePolicy(\"bar\", ResourcePolicyArgs.builder()\n .name(\"gce-policy\")\n .region(\"us-central1\")\n .snapshotSchedulePolicy(ResourcePolicySnapshotSchedulePolicyArgs.builder()\n .schedule(ResourcePolicySnapshotSchedulePolicyScheduleArgs.builder()\n .hourlySchedule(ResourcePolicySnapshotSchedulePolicyScheduleHourlyScheduleArgs.builder()\n .hoursInCycle(20)\n .startTime(\"23:00\")\n .build())\n .build())\n .retentionPolicy(ResourcePolicySnapshotSchedulePolicyRetentionPolicyArgs.builder()\n .maxRetentionDays(10)\n .onSourceDiskDelete(\"KEEP_AUTO_SNAPSHOTS\")\n .build())\n .snapshotProperties(ResourcePolicySnapshotSchedulePolicySnapshotPropertiesArgs.builder()\n .labels(Map.of(\"my_label\", \"value\"))\n .storageLocations(\"us\")\n .guestFlush(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bar:\n type: gcp:compute:ResourcePolicy\n properties:\n name: gce-policy\n region: us-central1\n snapshotSchedulePolicy:\n schedule:\n hourlySchedule:\n hoursInCycle: 20\n startTime: 23:00\n retentionPolicy:\n maxRetentionDays: 10\n onSourceDiskDelete: KEEP_AUTO_SNAPSHOTS\n snapshotProperties:\n labels:\n my_label: value\n storageLocations: us\n guestFlush: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Resource Policy Placement Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst baz = new gcp.compute.ResourcePolicy(\"baz\", {\n name: \"gce-policy\",\n region: \"us-central1\",\n groupPlacementPolicy: {\n vmCount: 2,\n collocation: \"COLLOCATED\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbaz = gcp.compute.ResourcePolicy(\"baz\",\n name=\"gce-policy\",\n region=\"us-central1\",\n group_placement_policy={\n \"vm_count\": 2,\n \"collocation\": \"COLLOCATED\",\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 baz = new Gcp.Compute.ResourcePolicy(\"baz\", new()\n {\n Name = \"gce-policy\",\n Region = \"us-central1\",\n GroupPlacementPolicy = new Gcp.Compute.Inputs.ResourcePolicyGroupPlacementPolicyArgs\n {\n VmCount = 2,\n Collocation = \"COLLOCATED\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewResourcePolicy(ctx, \"baz\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"gce-policy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tGroupPlacementPolicy: \u0026compute.ResourcePolicyGroupPlacementPolicyArgs{\n\t\t\t\tVmCount: pulumi.Int(2),\n\t\t\t\tCollocation: pulumi.String(\"COLLOCATED\"),\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.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicyGroupPlacementPolicyArgs;\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 baz = new ResourcePolicy(\"baz\", ResourcePolicyArgs.builder()\n .name(\"gce-policy\")\n .region(\"us-central1\")\n .groupPlacementPolicy(ResourcePolicyGroupPlacementPolicyArgs.builder()\n .vmCount(2)\n .collocation(\"COLLOCATED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n baz:\n type: gcp:compute:ResourcePolicy\n properties:\n name: gce-policy\n region: us-central1\n groupPlacementPolicy:\n vmCount: 2\n collocation: COLLOCATED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Resource Policy Placement Policy Max Distance\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst baz = new gcp.compute.ResourcePolicy(\"baz\", {\n name: \"gce-policy\",\n region: \"us-central1\",\n groupPlacementPolicy: {\n vmCount: 2,\n collocation: \"COLLOCATED\",\n maxDistance: 2,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbaz = gcp.compute.ResourcePolicy(\"baz\",\n name=\"gce-policy\",\n region=\"us-central1\",\n group_placement_policy={\n \"vm_count\": 2,\n \"collocation\": \"COLLOCATED\",\n \"max_distance\": 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 baz = new Gcp.Compute.ResourcePolicy(\"baz\", new()\n {\n Name = \"gce-policy\",\n Region = \"us-central1\",\n GroupPlacementPolicy = new Gcp.Compute.Inputs.ResourcePolicyGroupPlacementPolicyArgs\n {\n VmCount = 2,\n Collocation = \"COLLOCATED\",\n MaxDistance = 2,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewResourcePolicy(ctx, \"baz\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"gce-policy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tGroupPlacementPolicy: \u0026compute.ResourcePolicyGroupPlacementPolicyArgs{\n\t\t\t\tVmCount: pulumi.Int(2),\n\t\t\t\tCollocation: pulumi.String(\"COLLOCATED\"),\n\t\t\t\tMaxDistance: pulumi.Int(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.compute.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicyGroupPlacementPolicyArgs;\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 baz = new ResourcePolicy(\"baz\", ResourcePolicyArgs.builder()\n .name(\"gce-policy\")\n .region(\"us-central1\")\n .groupPlacementPolicy(ResourcePolicyGroupPlacementPolicyArgs.builder()\n .vmCount(2)\n .collocation(\"COLLOCATED\")\n .maxDistance(2)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n baz:\n type: gcp:compute:ResourcePolicy\n properties:\n name: gce-policy\n region: us-central1\n groupPlacementPolicy:\n vmCount: 2\n collocation: COLLOCATED\n maxDistance: 2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Resource Policy Instance Schedule Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst hourly = new gcp.compute.ResourcePolicy(\"hourly\", {\n name: \"gce-policy\",\n region: \"us-central1\",\n description: \"Start and stop instances\",\n instanceSchedulePolicy: {\n vmStartSchedule: {\n schedule: \"0 * * * *\",\n },\n vmStopSchedule: {\n schedule: \"15 * * * *\",\n },\n timeZone: \"US/Central\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhourly = gcp.compute.ResourcePolicy(\"hourly\",\n name=\"gce-policy\",\n region=\"us-central1\",\n description=\"Start and stop instances\",\n instance_schedule_policy={\n \"vm_start_schedule\": {\n \"schedule\": \"0 * * * *\",\n },\n \"vm_stop_schedule\": {\n \"schedule\": \"15 * * * *\",\n },\n \"time_zone\": \"US/Central\",\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 hourly = new Gcp.Compute.ResourcePolicy(\"hourly\", new()\n {\n Name = \"gce-policy\",\n Region = \"us-central1\",\n Description = \"Start and stop instances\",\n InstanceSchedulePolicy = new Gcp.Compute.Inputs.ResourcePolicyInstanceSchedulePolicyArgs\n {\n VmStartSchedule = new Gcp.Compute.Inputs.ResourcePolicyInstanceSchedulePolicyVmStartScheduleArgs\n {\n Schedule = \"0 * * * *\",\n },\n VmStopSchedule = new Gcp.Compute.Inputs.ResourcePolicyInstanceSchedulePolicyVmStopScheduleArgs\n {\n Schedule = \"15 * * * *\",\n },\n TimeZone = \"US/Central\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewResourcePolicy(ctx, \"hourly\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"gce-policy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"Start and stop instances\"),\n\t\t\tInstanceSchedulePolicy: \u0026compute.ResourcePolicyInstanceSchedulePolicyArgs{\n\t\t\t\tVmStartSchedule: \u0026compute.ResourcePolicyInstanceSchedulePolicyVmStartScheduleArgs{\n\t\t\t\t\tSchedule: pulumi.String(\"0 * * * *\"),\n\t\t\t\t},\n\t\t\t\tVmStopSchedule: \u0026compute.ResourcePolicyInstanceSchedulePolicyVmStopScheduleArgs{\n\t\t\t\t\tSchedule: pulumi.String(\"15 * * * *\"),\n\t\t\t\t},\n\t\t\t\tTimeZone: pulumi.String(\"US/Central\"),\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.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicyInstanceSchedulePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicyInstanceSchedulePolicyVmStartScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicyInstanceSchedulePolicyVmStopScheduleArgs;\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 hourly = new ResourcePolicy(\"hourly\", ResourcePolicyArgs.builder()\n .name(\"gce-policy\")\n .region(\"us-central1\")\n .description(\"Start and stop instances\")\n .instanceSchedulePolicy(ResourcePolicyInstanceSchedulePolicyArgs.builder()\n .vmStartSchedule(ResourcePolicyInstanceSchedulePolicyVmStartScheduleArgs.builder()\n .schedule(\"0 * * * *\")\n .build())\n .vmStopSchedule(ResourcePolicyInstanceSchedulePolicyVmStopScheduleArgs.builder()\n .schedule(\"15 * * * *\")\n .build())\n .timeZone(\"US/Central\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n hourly:\n type: gcp:compute:ResourcePolicy\n properties:\n name: gce-policy\n region: us-central1\n description: Start and stop instances\n instanceSchedulePolicy:\n vmStartSchedule:\n schedule: 0 * * * *\n vmStopSchedule:\n schedule: 15 * * * *\n timeZone: US/Central\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Resource Policy Snapshot Schedule Chain Name\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst hourly = new gcp.compute.ResourcePolicy(\"hourly\", {\n name: \"gce-policy\",\n region: \"us-central1\",\n description: \"chain name snapshot\",\n snapshotSchedulePolicy: {\n schedule: {\n hourlySchedule: {\n hoursInCycle: 20,\n startTime: \"23:00\",\n },\n },\n retentionPolicy: {\n maxRetentionDays: 14,\n onSourceDiskDelete: \"KEEP_AUTO_SNAPSHOTS\",\n },\n snapshotProperties: {\n labels: {\n my_label: \"value\",\n },\n storageLocations: \"us\",\n guestFlush: true,\n chainName: \"test-schedule-chain-name\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhourly = gcp.compute.ResourcePolicy(\"hourly\",\n name=\"gce-policy\",\n region=\"us-central1\",\n description=\"chain name snapshot\",\n snapshot_schedule_policy={\n \"schedule\": {\n \"hourly_schedule\": {\n \"hours_in_cycle\": 20,\n \"start_time\": \"23:00\",\n },\n },\n \"retention_policy\": {\n \"max_retention_days\": 14,\n \"on_source_disk_delete\": \"KEEP_AUTO_SNAPSHOTS\",\n },\n \"snapshot_properties\": {\n \"labels\": {\n \"my_label\": \"value\",\n },\n \"storage_locations\": \"us\",\n \"guest_flush\": True,\n \"chain_name\": \"test-schedule-chain-name\",\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 hourly = new Gcp.Compute.ResourcePolicy(\"hourly\", new()\n {\n Name = \"gce-policy\",\n Region = \"us-central1\",\n Description = \"chain name snapshot\",\n SnapshotSchedulePolicy = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyArgs\n {\n Schedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs\n {\n HourlySchedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleHourlyScheduleArgs\n {\n HoursInCycle = 20,\n StartTime = \"23:00\",\n },\n },\n RetentionPolicy = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyRetentionPolicyArgs\n {\n MaxRetentionDays = 14,\n OnSourceDiskDelete = \"KEEP_AUTO_SNAPSHOTS\",\n },\n SnapshotProperties = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicySnapshotPropertiesArgs\n {\n Labels = \n {\n { \"my_label\", \"value\" },\n },\n StorageLocations = \"us\",\n GuestFlush = true,\n ChainName = \"test-schedule-chain-name\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewResourcePolicy(ctx, \"hourly\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"gce-policy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"chain name snapshot\"),\n\t\t\tSnapshotSchedulePolicy: \u0026compute.ResourcePolicySnapshotSchedulePolicyArgs{\n\t\t\t\tSchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleArgs{\n\t\t\t\t\tHourlySchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleHourlyScheduleArgs{\n\t\t\t\t\t\tHoursInCycle: pulumi.Int(20),\n\t\t\t\t\t\tStartTime: pulumi.String(\"23:00\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRetentionPolicy: \u0026compute.ResourcePolicySnapshotSchedulePolicyRetentionPolicyArgs{\n\t\t\t\t\tMaxRetentionDays: pulumi.Int(14),\n\t\t\t\t\tOnSourceDiskDelete: pulumi.String(\"KEEP_AUTO_SNAPSHOTS\"),\n\t\t\t\t},\n\t\t\t\tSnapshotProperties: \u0026compute.ResourcePolicySnapshotSchedulePolicySnapshotPropertiesArgs{\n\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\"my_label\": pulumi.String(\"value\"),\n\t\t\t\t\t},\n\t\t\t\t\tStorageLocations: pulumi.String(\"us\"),\n\t\t\t\t\tGuestFlush: pulumi.Bool(true),\n\t\t\t\t\tChainName: pulumi.String(\"test-schedule-chain-name\"),\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.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleHourlyScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyRetentionPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicySnapshotPropertiesArgs;\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 hourly = new ResourcePolicy(\"hourly\", ResourcePolicyArgs.builder()\n .name(\"gce-policy\")\n .region(\"us-central1\")\n .description(\"chain name snapshot\")\n .snapshotSchedulePolicy(ResourcePolicySnapshotSchedulePolicyArgs.builder()\n .schedule(ResourcePolicySnapshotSchedulePolicyScheduleArgs.builder()\n .hourlySchedule(ResourcePolicySnapshotSchedulePolicyScheduleHourlyScheduleArgs.builder()\n .hoursInCycle(20)\n .startTime(\"23:00\")\n .build())\n .build())\n .retentionPolicy(ResourcePolicySnapshotSchedulePolicyRetentionPolicyArgs.builder()\n .maxRetentionDays(14)\n .onSourceDiskDelete(\"KEEP_AUTO_SNAPSHOTS\")\n .build())\n .snapshotProperties(ResourcePolicySnapshotSchedulePolicySnapshotPropertiesArgs.builder()\n .labels(Map.of(\"my_label\", \"value\"))\n .storageLocations(\"us\")\n .guestFlush(true)\n .chainName(\"test-schedule-chain-name\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n hourly:\n type: gcp:compute:ResourcePolicy\n properties:\n name: gce-policy\n region: us-central1\n description: chain name snapshot\n snapshotSchedulePolicy:\n schedule:\n hourlySchedule:\n hoursInCycle: 20\n startTime: 23:00\n retentionPolicy:\n maxRetentionDays: 14\n onSourceDiskDelete: KEEP_AUTO_SNAPSHOTS\n snapshotProperties:\n labels:\n my_label: value\n storageLocations: us\n guestFlush: true\n chainName: test-schedule-chain-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Resource Policy Consistency Group\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cgroup = new gcp.compute.ResourcePolicy(\"cgroup\", {\n name: \"gce-policy\",\n region: \"europe-west1\",\n diskConsistencyGroupPolicy: {\n enabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncgroup = gcp.compute.ResourcePolicy(\"cgroup\",\n name=\"gce-policy\",\n region=\"europe-west1\",\n disk_consistency_group_policy={\n \"enabled\": 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 cgroup = new Gcp.Compute.ResourcePolicy(\"cgroup\", new()\n {\n Name = \"gce-policy\",\n Region = \"europe-west1\",\n DiskConsistencyGroupPolicy = new Gcp.Compute.Inputs.ResourcePolicyDiskConsistencyGroupPolicyArgs\n {\n Enabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewResourcePolicy(ctx, \"cgroup\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"gce-policy\"),\n\t\t\tRegion: pulumi.String(\"europe-west1\"),\n\t\t\tDiskConsistencyGroupPolicy: \u0026compute.ResourcePolicyDiskConsistencyGroupPolicyArgs{\n\t\t\t\tEnabled: 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.compute.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicyDiskConsistencyGroupPolicyArgs;\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 cgroup = new ResourcePolicy(\"cgroup\", ResourcePolicyArgs.builder()\n .name(\"gce-policy\")\n .region(\"europe-west1\")\n .diskConsistencyGroupPolicy(ResourcePolicyDiskConsistencyGroupPolicyArgs.builder()\n .enabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cgroup:\n type: gcp:compute:ResourcePolicy\n properties:\n name: gce-policy\n region: europe-west1\n diskConsistencyGroupPolicy:\n enabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResourcePolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/resourcePolicies/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ResourcePolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/resourcePolicy:ResourcePolicy default projects/{{project}}/regions/{{region}}/resourcePolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/resourcePolicy:ResourcePolicy default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/resourcePolicy:ResourcePolicy default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/resourcePolicy:ResourcePolicy default {{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -161266,7 +161266,7 @@ } }, "gcp:compute/router:Router": { - "description": "Represents a Router resource.\n\n\nTo get more information about Router, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/routers)\n* How-to Guides\n * [Google Cloud Router](https://cloud.google.com/router/docs/)\n\n## Example Usage\n\n### Router Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst foobarNetwork = new gcp.compute.Network(\"foobar\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst foobar = new gcp.compute.Router(\"foobar\", {\n name: \"my-router\",\n network: foobarNetwork.name,\n bgp: {\n asn: 64514,\n advertiseMode: \"CUSTOM\",\n advertisedGroups: [\"ALL_SUBNETS\"],\n advertisedIpRanges: [\n {\n range: \"1.2.3.4\",\n },\n {\n range: \"6.7.0.0/16\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfoobar_network = gcp.compute.Network(\"foobar\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nfoobar = gcp.compute.Router(\"foobar\",\n name=\"my-router\",\n network=foobar_network.name,\n bgp={\n \"asn\": 64514,\n \"advertiseMode\": \"CUSTOM\",\n \"advertisedGroups\": [\"ALL_SUBNETS\"],\n \"advertisedIpRanges\": [\n {\n \"range\": \"1.2.3.4\",\n },\n {\n \"range\": \"6.7.0.0/16\",\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 foobarNetwork = new Gcp.Compute.Network(\"foobar\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var foobar = new Gcp.Compute.Router(\"foobar\", new()\n {\n Name = \"my-router\",\n Network = foobarNetwork.Name,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 64514,\n AdvertiseMode = \"CUSTOM\",\n AdvertisedGroups = new[]\n {\n \"ALL_SUBNETS\",\n },\n AdvertisedIpRanges = new[]\n {\n new Gcp.Compute.Inputs.RouterBgpAdvertisedIpRangeArgs\n {\n Range = \"1.2.3.4\",\n },\n new Gcp.Compute.Inputs.RouterBgpAdvertisedIpRangeArgs\n {\n Range = \"6.7.0.0/16\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tfoobarNetwork, err := compute.NewNetwork(ctx, \"foobar\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\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.NewRouter(ctx, \"foobar\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"my-router\"),\n\t\t\tNetwork: foobarNetwork.Name,\n\t\t\tBgp: \u0026compute.RouterBgpArgs{\n\t\t\t\tAsn: pulumi.Int(64514),\n\t\t\t\tAdvertiseMode: pulumi.String(\"CUSTOM\"),\n\t\t\t\tAdvertisedGroups: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALL_SUBNETS\"),\n\t\t\t\t},\n\t\t\t\tAdvertisedIpRanges: compute.RouterBgpAdvertisedIpRangeArray{\n\t\t\t\t\t\u0026compute.RouterBgpAdvertisedIpRangeArgs{\n\t\t\t\t\t\tRange: pulumi.String(\"1.2.3.4\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026compute.RouterBgpAdvertisedIpRangeArgs{\n\t\t\t\t\t\tRange: pulumi.String(\"6.7.0.0/16\"),\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.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\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 foobarNetwork = new Network(\"foobarNetwork\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var foobar = new Router(\"foobar\", RouterArgs.builder()\n .name(\"my-router\")\n .network(foobarNetwork.name())\n .bgp(RouterBgpArgs.builder()\n .asn(64514)\n .advertiseMode(\"CUSTOM\")\n .advertisedGroups(\"ALL_SUBNETS\")\n .advertisedIpRanges( \n RouterBgpAdvertisedIpRangeArgs.builder()\n .range(\"1.2.3.4\")\n .build(),\n RouterBgpAdvertisedIpRangeArgs.builder()\n .range(\"6.7.0.0/16\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:Router\n properties:\n name: my-router\n network: ${foobarNetwork.name}\n bgp:\n asn: 64514\n advertiseMode: CUSTOM\n advertisedGroups:\n - ALL_SUBNETS\n advertisedIpRanges:\n - range: 1.2.3.4\n - range: 6.7.0.0/16\n foobarNetwork:\n type: gcp:compute:Network\n name: foobar\n properties:\n name: my-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Compute Router Encrypted Interconnect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"test-network\",\n autoCreateSubnetworks: false,\n});\nconst encrypted_interconnect_router = new gcp.compute.Router(\"encrypted-interconnect-router\", {\n name: \"test-router\",\n network: network.name,\n encryptedInterconnectRouter: true,\n bgp: {\n asn: 64514,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"test-network\",\n auto_create_subnetworks=False)\nencrypted_interconnect_router = gcp.compute.Router(\"encrypted-interconnect-router\",\n name=\"test-router\",\n network=network.name,\n encrypted_interconnect_router=True,\n bgp={\n \"asn\": 64514,\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 = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var encrypted_interconnect_router = new Gcp.Compute.Router(\"encrypted-interconnect-router\", new()\n {\n Name = \"test-router\",\n Network = network.Name,\n EncryptedInterconnectRouter = true,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 64514,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"test-network\"),\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.NewRouter(ctx, \"encrypted-interconnect-router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"test-router\"),\n\t\t\tNetwork: network.Name,\n\t\t\tEncryptedInterconnectRouter: pulumi.Bool(true),\n\t\t\tBgp: \u0026compute.RouterBgpArgs{\n\t\t\t\tAsn: pulumi.Int(64514),\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.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\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 = new Network(\"network\", NetworkArgs.builder()\n .name(\"test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var encrypted_interconnect_router = new Router(\"encrypted-interconnect-router\", RouterArgs.builder()\n .name(\"test-router\")\n .network(network.name())\n .encryptedInterconnectRouter(true)\n .bgp(RouterBgpArgs.builder()\n .asn(64514)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n encrypted-interconnect-router:\n type: gcp:compute:Router\n properties:\n name: test-router\n network: ${network.name}\n encryptedInterconnectRouter: true\n bgp:\n asn: 64514\n network:\n type: gcp:compute:Network\n properties:\n name: test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRouter can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/routers/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Router can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/router:Router default projects/{{project}}/regions/{{region}}/routers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/router:Router default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/router:Router default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/router:Router default {{name}}\n```\n\n", + "description": "Represents a Router resource.\n\n\nTo get more information about Router, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/routers)\n* How-to Guides\n * [Google Cloud Router](https://cloud.google.com/router/docs/)\n\n## Example Usage\n\n### Router Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst foobarNetwork = new gcp.compute.Network(\"foobar\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst foobar = new gcp.compute.Router(\"foobar\", {\n name: \"my-router\",\n network: foobarNetwork.name,\n bgp: {\n asn: 64514,\n advertiseMode: \"CUSTOM\",\n advertisedGroups: [\"ALL_SUBNETS\"],\n advertisedIpRanges: [\n {\n range: \"1.2.3.4\",\n },\n {\n range: \"6.7.0.0/16\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfoobar_network = gcp.compute.Network(\"foobar\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nfoobar = gcp.compute.Router(\"foobar\",\n name=\"my-router\",\n network=foobar_network.name,\n bgp={\n \"asn\": 64514,\n \"advertise_mode\": \"CUSTOM\",\n \"advertised_groups\": [\"ALL_SUBNETS\"],\n \"advertised_ip_ranges\": [\n {\n \"range\": \"1.2.3.4\",\n },\n {\n \"range\": \"6.7.0.0/16\",\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 foobarNetwork = new Gcp.Compute.Network(\"foobar\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var foobar = new Gcp.Compute.Router(\"foobar\", new()\n {\n Name = \"my-router\",\n Network = foobarNetwork.Name,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 64514,\n AdvertiseMode = \"CUSTOM\",\n AdvertisedGroups = new[]\n {\n \"ALL_SUBNETS\",\n },\n AdvertisedIpRanges = new[]\n {\n new Gcp.Compute.Inputs.RouterBgpAdvertisedIpRangeArgs\n {\n Range = \"1.2.3.4\",\n },\n new Gcp.Compute.Inputs.RouterBgpAdvertisedIpRangeArgs\n {\n Range = \"6.7.0.0/16\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tfoobarNetwork, err := compute.NewNetwork(ctx, \"foobar\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\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.NewRouter(ctx, \"foobar\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"my-router\"),\n\t\t\tNetwork: foobarNetwork.Name,\n\t\t\tBgp: \u0026compute.RouterBgpArgs{\n\t\t\t\tAsn: pulumi.Int(64514),\n\t\t\t\tAdvertiseMode: pulumi.String(\"CUSTOM\"),\n\t\t\t\tAdvertisedGroups: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALL_SUBNETS\"),\n\t\t\t\t},\n\t\t\t\tAdvertisedIpRanges: compute.RouterBgpAdvertisedIpRangeArray{\n\t\t\t\t\t\u0026compute.RouterBgpAdvertisedIpRangeArgs{\n\t\t\t\t\t\tRange: pulumi.String(\"1.2.3.4\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026compute.RouterBgpAdvertisedIpRangeArgs{\n\t\t\t\t\t\tRange: pulumi.String(\"6.7.0.0/16\"),\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.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\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 foobarNetwork = new Network(\"foobarNetwork\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var foobar = new Router(\"foobar\", RouterArgs.builder()\n .name(\"my-router\")\n .network(foobarNetwork.name())\n .bgp(RouterBgpArgs.builder()\n .asn(64514)\n .advertiseMode(\"CUSTOM\")\n .advertisedGroups(\"ALL_SUBNETS\")\n .advertisedIpRanges( \n RouterBgpAdvertisedIpRangeArgs.builder()\n .range(\"1.2.3.4\")\n .build(),\n RouterBgpAdvertisedIpRangeArgs.builder()\n .range(\"6.7.0.0/16\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:Router\n properties:\n name: my-router\n network: ${foobarNetwork.name}\n bgp:\n asn: 64514\n advertiseMode: CUSTOM\n advertisedGroups:\n - ALL_SUBNETS\n advertisedIpRanges:\n - range: 1.2.3.4\n - range: 6.7.0.0/16\n foobarNetwork:\n type: gcp:compute:Network\n name: foobar\n properties:\n name: my-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Compute Router Encrypted Interconnect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"test-network\",\n autoCreateSubnetworks: false,\n});\nconst encrypted_interconnect_router = new gcp.compute.Router(\"encrypted-interconnect-router\", {\n name: \"test-router\",\n network: network.name,\n encryptedInterconnectRouter: true,\n bgp: {\n asn: 64514,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"test-network\",\n auto_create_subnetworks=False)\nencrypted_interconnect_router = gcp.compute.Router(\"encrypted-interconnect-router\",\n name=\"test-router\",\n network=network.name,\n encrypted_interconnect_router=True,\n bgp={\n \"asn\": 64514,\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 = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var encrypted_interconnect_router = new Gcp.Compute.Router(\"encrypted-interconnect-router\", new()\n {\n Name = \"test-router\",\n Network = network.Name,\n EncryptedInterconnectRouter = true,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 64514,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"test-network\"),\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.NewRouter(ctx, \"encrypted-interconnect-router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"test-router\"),\n\t\t\tNetwork: network.Name,\n\t\t\tEncryptedInterconnectRouter: pulumi.Bool(true),\n\t\t\tBgp: \u0026compute.RouterBgpArgs{\n\t\t\t\tAsn: pulumi.Int(64514),\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.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\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 = new Network(\"network\", NetworkArgs.builder()\n .name(\"test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var encrypted_interconnect_router = new Router(\"encrypted-interconnect-router\", RouterArgs.builder()\n .name(\"test-router\")\n .network(network.name())\n .encryptedInterconnectRouter(true)\n .bgp(RouterBgpArgs.builder()\n .asn(64514)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n encrypted-interconnect-router:\n type: gcp:compute:Router\n properties:\n name: test-router\n network: ${network.name}\n encryptedInterconnectRouter: true\n bgp:\n asn: 64514\n network:\n type: gcp:compute:Network\n properties:\n name: test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRouter can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/routers/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Router can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/router:Router default projects/{{project}}/regions/{{region}}/routers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/router:Router default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/router:Router default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/router:Router default {{name}}\n```\n\n", "properties": { "bgp": { "$ref": "#/types/gcp:compute/RouterBgp:RouterBgp", @@ -161579,7 +161579,7 @@ } }, "gcp:compute/routerNat:RouterNat": { - "description": "A NAT service created in a router.\n\n\nTo get more information about RouterNat, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/routers)\n* How-to Guides\n * [Google Cloud Router](https://cloud.google.com/router/docs/)\n\n## Example Usage\n\n### Router Nat Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst net = new gcp.compute.Network(\"net\", {name: \"my-network\"});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnetwork\",\n network: net.id,\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"my-router\",\n region: subnet.region,\n network: net.id,\n bgp: {\n asn: 64514,\n },\n});\nconst nat = new gcp.compute.RouterNat(\"nat\", {\n name: \"my-router-nat\",\n router: router.name,\n region: router.region,\n natIpAllocateOption: \"AUTO_ONLY\",\n sourceSubnetworkIpRangesToNat: \"ALL_SUBNETWORKS_ALL_IP_RANGES\",\n logConfig: {\n enable: true,\n filter: \"ERRORS_ONLY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnet = gcp.compute.Network(\"net\", name=\"my-network\")\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnetwork\",\n network=net.id,\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\")\nrouter = gcp.compute.Router(\"router\",\n name=\"my-router\",\n region=subnet.region,\n network=net.id,\n bgp={\n \"asn\": 64514,\n })\nnat = gcp.compute.RouterNat(\"nat\",\n name=\"my-router-nat\",\n router=router.name,\n region=router.region,\n nat_ip_allocate_option=\"AUTO_ONLY\",\n source_subnetwork_ip_ranges_to_nat=\"ALL_SUBNETWORKS_ALL_IP_RANGES\",\n log_config={\n \"enable\": True,\n \"filter\": \"ERRORS_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 net = new Gcp.Compute.Network(\"net\", new()\n {\n Name = \"my-network\",\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnetwork\",\n Network = net.Id,\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"my-router\",\n Region = subnet.Region,\n Network = net.Id,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 64514,\n },\n });\n\n var nat = new Gcp.Compute.RouterNat(\"nat\", new()\n {\n Name = \"my-router-nat\",\n Router = router.Name,\n Region = router.Region,\n NatIpAllocateOption = \"AUTO_ONLY\",\n SourceSubnetworkIpRangesToNat = \"ALL_SUBNETWORKS_ALL_IP_RANGES\",\n LogConfig = new Gcp.Compute.Inputs.RouterNatLogConfigArgs\n {\n Enable = true,\n Filter = \"ERRORS_ONLY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnet, err := compute.NewNetwork(ctx, \"net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\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\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tNetwork: net.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\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\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"my-router\"),\n\t\t\tRegion: subnet.Region,\n\t\t\tNetwork: net.ID(),\n\t\t\tBgp: \u0026compute.RouterBgpArgs{\n\t\t\t\tAsn: pulumi.Int(64514),\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.NewRouterNat(ctx, \"nat\", \u0026compute.RouterNatArgs{\n\t\t\tName: pulumi.String(\"my-router-nat\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: router.Region,\n\t\t\tNatIpAllocateOption: pulumi.String(\"AUTO_ONLY\"),\n\t\t\tSourceSubnetworkIpRangesToNat: pulumi.String(\"ALL_SUBNETWORKS_ALL_IP_RANGES\"),\n\t\t\tLogConfig: \u0026compute.RouterNatLogConfigArgs{\n\t\t\t\tEnable: pulumi.Bool(true),\n\t\t\t\tFilter: pulumi.String(\"ERRORS_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.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.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\nimport com.pulumi.gcp.compute.RouterNat;\nimport com.pulumi.gcp.compute.RouterNatArgs;\nimport com.pulumi.gcp.compute.inputs.RouterNatLogConfigArgs;\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 .name(\"my-network\")\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\n .network(net.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"my-router\")\n .region(subnet.region())\n .network(net.id())\n .bgp(RouterBgpArgs.builder()\n .asn(64514)\n .build())\n .build());\n\n var nat = new RouterNat(\"nat\", RouterNatArgs.builder()\n .name(\"my-router-nat\")\n .router(router.name())\n .region(router.region())\n .natIpAllocateOption(\"AUTO_ONLY\")\n .sourceSubnetworkIpRangesToNat(\"ALL_SUBNETWORKS_ALL_IP_RANGES\")\n .logConfig(RouterNatLogConfigArgs.builder()\n .enable(true)\n .filter(\"ERRORS_ONLY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n net:\n type: gcp:compute:Network\n properties:\n name: my-network\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-subnetwork\n network: ${net.id}\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n router:\n type: gcp:compute:Router\n properties:\n name: my-router\n region: ${subnet.region}\n network: ${net.id}\n bgp:\n asn: 64514\n nat:\n type: gcp:compute:RouterNat\n properties:\n name: my-router-nat\n router: ${router.name}\n region: ${router.region}\n natIpAllocateOption: AUTO_ONLY\n sourceSubnetworkIpRangesToNat: ALL_SUBNETWORKS_ALL_IP_RANGES\n logConfig:\n enable: true\n filter: ERRORS_ONLY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Nat Manual Ips\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst net = new gcp.compute.Network(\"net\", {name: \"my-network\"});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnetwork\",\n network: net.id,\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"my-router\",\n region: subnet.region,\n network: net.id,\n});\nconst address: gcp.compute.Address[] = [];\nfor (const range = {value: 0}; range.value \u003c 2; range.value++) {\n address.push(new gcp.compute.Address(`address-${range.value}`, {\n name: `nat-manual-ip-${range.value}`,\n region: subnet.region,\n }));\n}\nconst natManual = new gcp.compute.RouterNat(\"nat_manual\", {\n name: \"my-router-nat\",\n router: router.name,\n region: router.region,\n natIpAllocateOption: \"MANUAL_ONLY\",\n natIps: address.map(__item =\u003e __item.selfLink),\n sourceSubnetworkIpRangesToNat: \"LIST_OF_SUBNETWORKS\",\n subnetworks: [{\n name: subnet.id,\n sourceIpRangesToNats: [\"ALL_IP_RANGES\"],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnet = gcp.compute.Network(\"net\", name=\"my-network\")\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnetwork\",\n network=net.id,\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\")\nrouter = gcp.compute.Router(\"router\",\n name=\"my-router\",\n region=subnet.region,\n network=net.id)\naddress = []\nfor range in [{\"value\": i} for i in range(0, 2)]:\n address.append(gcp.compute.Address(f\"address-{range['value']}\",\n name=f\"nat-manual-ip-{range['value']}\",\n region=subnet.region))\nnat_manual = gcp.compute.RouterNat(\"nat_manual\",\n name=\"my-router-nat\",\n router=router.name,\n region=router.region,\n nat_ip_allocate_option=\"MANUAL_ONLY\",\n nat_ips=[__item.self_link for __item in address],\n source_subnetwork_ip_ranges_to_nat=\"LIST_OF_SUBNETWORKS\",\n subnetworks=[{\n \"name\": subnet.id,\n \"sourceIpRangesToNats\": [\"ALL_IP_RANGES\"],\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 Name = \"my-network\",\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnetwork\",\n Network = net.Id,\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"my-router\",\n Region = subnet.Region,\n Network = net.Id,\n });\n\n var address = new List\u003cGcp.Compute.Address\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c 2; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n address.Add(new Gcp.Compute.Address($\"address-{range.Value}\", new()\n {\n Name = $\"nat-manual-ip-{range.Value}\",\n Region = subnet.Region,\n }));\n }\n var natManual = new Gcp.Compute.RouterNat(\"nat_manual\", new()\n {\n Name = \"my-router-nat\",\n Router = router.Name,\n Region = router.Region,\n NatIpAllocateOption = \"MANUAL_ONLY\",\n NatIps = address.Select(__item =\u003e __item.SelfLink).ToList(),\n SourceSubnetworkIpRangesToNat = \"LIST_OF_SUBNETWORKS\",\n Subnetworks = new[]\n {\n new Gcp.Compute.Inputs.RouterNatSubnetworkArgs\n {\n Name = subnet.Id,\n SourceIpRangesToNats = new[]\n {\n \"ALL_IP_RANGES\",\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/v7/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\tnet, err := compute.NewNetwork(ctx, \"net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\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\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tNetwork: net.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\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\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"my-router\"),\n\t\t\tRegion: subnet.Region,\n\t\t\tNetwork: net.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar address []*compute.Address\n\t\tfor index := 0; index \u003c 2; index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := compute.NewAddress(ctx, fmt.Sprintf(\"address-%v\", key0), \u0026compute.AddressArgs{\n\t\t\t\tName: pulumi.String(fmt.Sprintf(\"nat-manual-ip-%v\", val0)),\n\t\t\t\tRegion: subnet.Region,\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\taddress = append(address, __res)\n\t\t}\n\t\tvar splat0 pulumi.StringArray\n\t\tfor _, val0 := range address {\n\t\t\tsplat0 = append(splat0, val0.SelfLink)\n\t\t}\n\t\t_, err = compute.NewRouterNat(ctx, \"nat_manual\", \u0026compute.RouterNatArgs{\n\t\t\tName: pulumi.String(\"my-router-nat\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: router.Region,\n\t\t\tNatIpAllocateOption: pulumi.String(\"MANUAL_ONLY\"),\n\t\t\tNatIps: splat0,\n\t\t\tSourceSubnetworkIpRangesToNat: pulumi.String(\"LIST_OF_SUBNETWORKS\"),\n\t\t\tSubnetworks: compute.RouterNatSubnetworkArray{\n\t\t\t\t\u0026compute.RouterNatSubnetworkArgs{\n\t\t\t\t\tName: subnet.ID(),\n\t\t\t\t\tSourceIpRangesToNats: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ALL_IP_RANGES\"),\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.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.RouterNat;\nimport com.pulumi.gcp.compute.RouterNatArgs;\nimport com.pulumi.gcp.compute.inputs.RouterNatSubnetworkArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\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 .name(\"my-network\")\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\n .network(net.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"my-router\")\n .region(subnet.region())\n .network(net.id())\n .build());\n\n for (var i = 0; i \u003c 2; i++) {\n new Address(\"address-\" + i, AddressArgs.builder()\n .name(String.format(\"nat-manual-ip-%s\", range.value()))\n .region(subnet.region())\n .build());\n\n \n}\n var natManual = new RouterNat(\"natManual\", RouterNatArgs.builder()\n .name(\"my-router-nat\")\n .router(router.name())\n .region(router.region())\n .natIpAllocateOption(\"MANUAL_ONLY\")\n .natIps(address.stream().map(element -\u003e element.selfLink()).collect(toList()))\n .sourceSubnetworkIpRangesToNat(\"LIST_OF_SUBNETWORKS\")\n .subnetworks(RouterNatSubnetworkArgs.builder()\n .name(subnet.id())\n .sourceIpRangesToNats(\"ALL_IP_RANGES\")\n .build())\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Nat Rules\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst net = new gcp.compute.Network(\"net\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnetwork\",\n network: net.id,\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"my-router\",\n region: subnet.region,\n network: net.id,\n});\nconst addr1 = new gcp.compute.Address(\"addr1\", {\n name: \"nat-address1\",\n region: subnet.region,\n});\nconst addr2 = new gcp.compute.Address(\"addr2\", {\n name: \"nat-address2\",\n region: subnet.region,\n});\nconst addr3 = new gcp.compute.Address(\"addr3\", {\n name: \"nat-address3\",\n region: subnet.region,\n});\nconst natRules = new gcp.compute.RouterNat(\"nat_rules\", {\n name: \"my-router-nat\",\n router: router.name,\n region: router.region,\n natIpAllocateOption: \"MANUAL_ONLY\",\n natIps: [addr1.selfLink],\n sourceSubnetworkIpRangesToNat: \"LIST_OF_SUBNETWORKS\",\n subnetworks: [{\n name: subnet.id,\n sourceIpRangesToNats: [\"ALL_IP_RANGES\"],\n }],\n rules: [{\n ruleNumber: 100,\n description: \"nat rules example\",\n match: \"inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')\",\n action: {\n sourceNatActiveIps: [\n addr2.selfLink,\n addr3.selfLink,\n ],\n },\n }],\n enableEndpointIndependentMapping: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnet = gcp.compute.Network(\"net\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnetwork\",\n network=net.id,\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\")\nrouter = gcp.compute.Router(\"router\",\n name=\"my-router\",\n region=subnet.region,\n network=net.id)\naddr1 = gcp.compute.Address(\"addr1\",\n name=\"nat-address1\",\n region=subnet.region)\naddr2 = gcp.compute.Address(\"addr2\",\n name=\"nat-address2\",\n region=subnet.region)\naddr3 = gcp.compute.Address(\"addr3\",\n name=\"nat-address3\",\n region=subnet.region)\nnat_rules = gcp.compute.RouterNat(\"nat_rules\",\n name=\"my-router-nat\",\n router=router.name,\n region=router.region,\n nat_ip_allocate_option=\"MANUAL_ONLY\",\n nat_ips=[addr1.self_link],\n source_subnetwork_ip_ranges_to_nat=\"LIST_OF_SUBNETWORKS\",\n subnetworks=[{\n \"name\": subnet.id,\n \"sourceIpRangesToNats\": [\"ALL_IP_RANGES\"],\n }],\n rules=[{\n \"ruleNumber\": 100,\n \"description\": \"nat rules example\",\n \"match\": \"inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')\",\n \"action\": {\n \"sourceNatActiveIps\": [\n addr2.self_link,\n addr3.self_link,\n ],\n },\n }],\n enable_endpoint_independent_mapping=False)\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 Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnetwork\",\n Network = net.Id,\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"my-router\",\n Region = subnet.Region,\n Network = net.Id,\n });\n\n var addr1 = new Gcp.Compute.Address(\"addr1\", new()\n {\n Name = \"nat-address1\",\n Region = subnet.Region,\n });\n\n var addr2 = new Gcp.Compute.Address(\"addr2\", new()\n {\n Name = \"nat-address2\",\n Region = subnet.Region,\n });\n\n var addr3 = new Gcp.Compute.Address(\"addr3\", new()\n {\n Name = \"nat-address3\",\n Region = subnet.Region,\n });\n\n var natRules = new Gcp.Compute.RouterNat(\"nat_rules\", new()\n {\n Name = \"my-router-nat\",\n Router = router.Name,\n Region = router.Region,\n NatIpAllocateOption = \"MANUAL_ONLY\",\n NatIps = new[]\n {\n addr1.SelfLink,\n },\n SourceSubnetworkIpRangesToNat = \"LIST_OF_SUBNETWORKS\",\n Subnetworks = new[]\n {\n new Gcp.Compute.Inputs.RouterNatSubnetworkArgs\n {\n Name = subnet.Id,\n SourceIpRangesToNats = new[]\n {\n \"ALL_IP_RANGES\",\n },\n },\n },\n Rules = new[]\n {\n new Gcp.Compute.Inputs.RouterNatRuleArgs\n {\n RuleNumber = 100,\n Description = \"nat rules example\",\n Match = \"inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')\",\n Action = new Gcp.Compute.Inputs.RouterNatRuleActionArgs\n {\n SourceNatActiveIps = new[]\n {\n addr2.SelfLink,\n addr3.SelfLink,\n },\n },\n },\n },\n EnableEndpointIndependentMapping = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnet, err := compute.NewNetwork(ctx, \"net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\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\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tNetwork: net.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\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\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"my-router\"),\n\t\t\tRegion: subnet.Region,\n\t\t\tNetwork: net.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddr1, err := compute.NewAddress(ctx, \"addr1\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"nat-address1\"),\n\t\t\tRegion: subnet.Region,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddr2, err := compute.NewAddress(ctx, \"addr2\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"nat-address2\"),\n\t\t\tRegion: subnet.Region,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddr3, err := compute.NewAddress(ctx, \"addr3\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"nat-address3\"),\n\t\t\tRegion: subnet.Region,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRouterNat(ctx, \"nat_rules\", \u0026compute.RouterNatArgs{\n\t\t\tName: pulumi.String(\"my-router-nat\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: router.Region,\n\t\t\tNatIpAllocateOption: pulumi.String(\"MANUAL_ONLY\"),\n\t\t\tNatIps: pulumi.StringArray{\n\t\t\t\taddr1.SelfLink,\n\t\t\t},\n\t\t\tSourceSubnetworkIpRangesToNat: pulumi.String(\"LIST_OF_SUBNETWORKS\"),\n\t\t\tSubnetworks: compute.RouterNatSubnetworkArray{\n\t\t\t\t\u0026compute.RouterNatSubnetworkArgs{\n\t\t\t\t\tName: subnet.ID(),\n\t\t\t\t\tSourceIpRangesToNats: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ALL_IP_RANGES\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRules: compute.RouterNatRuleArray{\n\t\t\t\t\u0026compute.RouterNatRuleArgs{\n\t\t\t\t\tRuleNumber: pulumi.Int(100),\n\t\t\t\t\tDescription: pulumi.String(\"nat rules example\"),\n\t\t\t\t\tMatch: pulumi.String(\"inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')\"),\n\t\t\t\t\tAction: \u0026compute.RouterNatRuleActionArgs{\n\t\t\t\t\t\tSourceNatActiveIps: pulumi.StringArray{\n\t\t\t\t\t\t\taddr2.SelfLink,\n\t\t\t\t\t\t\taddr3.SelfLink,\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\tEnableEndpointIndependentMapping: pulumi.Bool(false),\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.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.RouterNat;\nimport com.pulumi.gcp.compute.RouterNatArgs;\nimport com.pulumi.gcp.compute.inputs.RouterNatSubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.RouterNatRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RouterNatRuleActionArgs;\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 .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\n .network(net.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"my-router\")\n .region(subnet.region())\n .network(net.id())\n .build());\n\n var addr1 = new Address(\"addr1\", AddressArgs.builder()\n .name(\"nat-address1\")\n .region(subnet.region())\n .build());\n\n var addr2 = new Address(\"addr2\", AddressArgs.builder()\n .name(\"nat-address2\")\n .region(subnet.region())\n .build());\n\n var addr3 = new Address(\"addr3\", AddressArgs.builder()\n .name(\"nat-address3\")\n .region(subnet.region())\n .build());\n\n var natRules = new RouterNat(\"natRules\", RouterNatArgs.builder()\n .name(\"my-router-nat\")\n .router(router.name())\n .region(router.region())\n .natIpAllocateOption(\"MANUAL_ONLY\")\n .natIps(addr1.selfLink())\n .sourceSubnetworkIpRangesToNat(\"LIST_OF_SUBNETWORKS\")\n .subnetworks(RouterNatSubnetworkArgs.builder()\n .name(subnet.id())\n .sourceIpRangesToNats(\"ALL_IP_RANGES\")\n .build())\n .rules(RouterNatRuleArgs.builder()\n .ruleNumber(100)\n .description(\"nat rules example\")\n .match(\"inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')\")\n .action(RouterNatRuleActionArgs.builder()\n .sourceNatActiveIps( \n addr2.selfLink(),\n addr3.selfLink())\n .build())\n .build())\n .enableEndpointIndependentMapping(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n net:\n type: gcp:compute:Network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-subnetwork\n network: ${net.id}\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n router:\n type: gcp:compute:Router\n properties:\n name: my-router\n region: ${subnet.region}\n network: ${net.id}\n addr1:\n type: gcp:compute:Address\n properties:\n name: nat-address1\n region: ${subnet.region}\n addr2:\n type: gcp:compute:Address\n properties:\n name: nat-address2\n region: ${subnet.region}\n addr3:\n type: gcp:compute:Address\n properties:\n name: nat-address3\n region: ${subnet.region}\n natRules:\n type: gcp:compute:RouterNat\n name: nat_rules\n properties:\n name: my-router-nat\n router: ${router.name}\n region: ${router.region}\n natIpAllocateOption: MANUAL_ONLY\n natIps:\n - ${addr1.selfLink}\n sourceSubnetworkIpRangesToNat: LIST_OF_SUBNETWORKS\n subnetworks:\n - name: ${subnet.id}\n sourceIpRangesToNats:\n - ALL_IP_RANGES\n rules:\n - ruleNumber: 100\n description: nat rules example\n match: inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')\n action:\n sourceNatActiveIps:\n - ${addr2.selfLink}\n - ${addr3.selfLink}\n enableEndpointIndependentMapping: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Nat Private\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst net = new gcp.compute.Network(\"net\", {name: \"my-network\"});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnetwork\",\n network: net.id,\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n purpose: \"PRIVATE_NAT\",\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"my-router\",\n region: subnet.region,\n network: net.id,\n});\nconst hub = new gcp.networkconnectivity.Hub(\"hub\", {\n name: \"my-hub\",\n description: \"vpc hub for inter vpc nat\",\n});\nconst spoke = new gcp.networkconnectivity.Spoke(\"spoke\", {\n name: \"my-spoke\",\n location: \"global\",\n description: \"vpc spoke for inter vpc nat\",\n hub: hub.id,\n linkedVpcNetwork: {\n excludeExportRanges: [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n uri: net.selfLink,\n },\n});\nconst natType = new gcp.compute.RouterNat(\"nat_type\", {\n name: \"my-router-nat\",\n router: router.name,\n region: router.region,\n sourceSubnetworkIpRangesToNat: \"LIST_OF_SUBNETWORKS\",\n enableDynamicPortAllocation: false,\n enableEndpointIndependentMapping: false,\n minPortsPerVm: 32,\n type: \"PRIVATE\",\n subnetworks: [{\n name: subnet.id,\n sourceIpRangesToNats: [\"ALL_IP_RANGES\"],\n }],\n rules: [{\n ruleNumber: 100,\n description: \"rule for private nat\",\n match: \"nexthop.hub == \\\"//networkconnectivity.googleapis.com/projects/acm-test-proj-123/locations/global/hubs/my-hub\\\"\",\n action: {\n sourceNatActiveRanges: [subnet.selfLink],\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnet = gcp.compute.Network(\"net\", name=\"my-network\")\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnetwork\",\n network=net.id,\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n purpose=\"PRIVATE_NAT\")\nrouter = gcp.compute.Router(\"router\",\n name=\"my-router\",\n region=subnet.region,\n network=net.id)\nhub = gcp.networkconnectivity.Hub(\"hub\",\n name=\"my-hub\",\n description=\"vpc hub for inter vpc nat\")\nspoke = gcp.networkconnectivity.Spoke(\"spoke\",\n name=\"my-spoke\",\n location=\"global\",\n description=\"vpc spoke for inter vpc nat\",\n hub=hub.id,\n linked_vpc_network={\n \"excludeExportRanges\": [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n \"uri\": net.self_link,\n })\nnat_type = gcp.compute.RouterNat(\"nat_type\",\n name=\"my-router-nat\",\n router=router.name,\n region=router.region,\n source_subnetwork_ip_ranges_to_nat=\"LIST_OF_SUBNETWORKS\",\n enable_dynamic_port_allocation=False,\n enable_endpoint_independent_mapping=False,\n min_ports_per_vm=32,\n type=\"PRIVATE\",\n subnetworks=[{\n \"name\": subnet.id,\n \"sourceIpRangesToNats\": [\"ALL_IP_RANGES\"],\n }],\n rules=[{\n \"ruleNumber\": 100,\n \"description\": \"rule for private nat\",\n \"match\": \"nexthop.hub == \\\"//networkconnectivity.googleapis.com/projects/acm-test-proj-123/locations/global/hubs/my-hub\\\"\",\n \"action\": {\n \"sourceNatActiveRanges\": [subnet.self_link],\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 Name = \"my-network\",\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnetwork\",\n Network = net.Id,\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Purpose = \"PRIVATE_NAT\",\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"my-router\",\n Region = subnet.Region,\n Network = net.Id,\n });\n\n var hub = new Gcp.NetworkConnectivity.Hub(\"hub\", new()\n {\n Name = \"my-hub\",\n Description = \"vpc hub for inter vpc nat\",\n });\n\n var spoke = new Gcp.NetworkConnectivity.Spoke(\"spoke\", new()\n {\n Name = \"my-spoke\",\n Location = \"global\",\n Description = \"vpc spoke for inter vpc nat\",\n Hub = hub.Id,\n LinkedVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpcNetworkArgs\n {\n ExcludeExportRanges = new[]\n {\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n },\n Uri = net.SelfLink,\n },\n });\n\n var natType = new Gcp.Compute.RouterNat(\"nat_type\", new()\n {\n Name = \"my-router-nat\",\n Router = router.Name,\n Region = router.Region,\n SourceSubnetworkIpRangesToNat = \"LIST_OF_SUBNETWORKS\",\n EnableDynamicPortAllocation = false,\n EnableEndpointIndependentMapping = false,\n MinPortsPerVm = 32,\n Type = \"PRIVATE\",\n Subnetworks = new[]\n {\n new Gcp.Compute.Inputs.RouterNatSubnetworkArgs\n {\n Name = subnet.Id,\n SourceIpRangesToNats = new[]\n {\n \"ALL_IP_RANGES\",\n },\n },\n },\n Rules = new[]\n {\n new Gcp.Compute.Inputs.RouterNatRuleArgs\n {\n RuleNumber = 100,\n Description = \"rule for private nat\",\n Match = \"nexthop.hub == \\\"//networkconnectivity.googleapis.com/projects/acm-test-proj-123/locations/global/hubs/my-hub\\\"\",\n Action = new Gcp.Compute.Inputs.RouterNatRuleActionArgs\n {\n SourceNatActiveRanges = new[]\n {\n subnet.SelfLink,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkconnectivity\"\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\tName: pulumi.String(\"my-network\"),\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\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tNetwork: net.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_NAT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"my-router\"),\n\t\t\tRegion: subnet.Region,\n\t\t\tNetwork: net.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thub, err := networkconnectivity.NewHub(ctx, \"hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"my-hub\"),\n\t\t\tDescription: pulumi.String(\"vpc hub for inter vpc nat\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"spoke\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"my-spoke\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"vpc spoke for inter vpc nat\"),\n\t\t\tHub: hub.ID(),\n\t\t\tLinkedVpcNetwork: \u0026networkconnectivity.SpokeLinkedVpcNetworkArgs{\n\t\t\t\tExcludeExportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"198.51.100.0/24\"),\n\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tUri: net.SelfLink,\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.NewRouterNat(ctx, \"nat_type\", \u0026compute.RouterNatArgs{\n\t\t\tName: pulumi.String(\"my-router-nat\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: router.Region,\n\t\t\tSourceSubnetworkIpRangesToNat: pulumi.String(\"LIST_OF_SUBNETWORKS\"),\n\t\t\tEnableDynamicPortAllocation: pulumi.Bool(false),\n\t\t\tEnableEndpointIndependentMapping: pulumi.Bool(false),\n\t\t\tMinPortsPerVm: pulumi.Int(32),\n\t\t\tType: pulumi.String(\"PRIVATE\"),\n\t\t\tSubnetworks: compute.RouterNatSubnetworkArray{\n\t\t\t\t\u0026compute.RouterNatSubnetworkArgs{\n\t\t\t\t\tName: subnet.ID(),\n\t\t\t\t\tSourceIpRangesToNats: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ALL_IP_RANGES\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRules: compute.RouterNatRuleArray{\n\t\t\t\t\u0026compute.RouterNatRuleArgs{\n\t\t\t\t\tRuleNumber: pulumi.Int(100),\n\t\t\t\t\tDescription: pulumi.String(\"rule for private nat\"),\n\t\t\t\t\tMatch: pulumi.String(\"nexthop.hub == \\\"//networkconnectivity.googleapis.com/projects/acm-test-proj-123/locations/global/hubs/my-hub\\\"\"),\n\t\t\t\t\tAction: \u0026compute.RouterNatRuleActionArgs{\n\t\t\t\t\t\tSourceNatActiveRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tsubnet.SelfLink,\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.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.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedVpcNetworkArgs;\nimport com.pulumi.gcp.compute.RouterNat;\nimport com.pulumi.gcp.compute.RouterNatArgs;\nimport com.pulumi.gcp.compute.inputs.RouterNatSubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.RouterNatRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RouterNatRuleActionArgs;\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 .name(\"my-network\")\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\n .network(net.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .purpose(\"PRIVATE_NAT\")\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"my-router\")\n .region(subnet.region())\n .network(net.id())\n .build());\n\n var hub = new Hub(\"hub\", HubArgs.builder()\n .name(\"my-hub\")\n .description(\"vpc hub for inter vpc nat\")\n .build());\n\n var spoke = new Spoke(\"spoke\", SpokeArgs.builder()\n .name(\"my-spoke\")\n .location(\"global\")\n .description(\"vpc spoke for inter vpc nat\")\n .hub(hub.id())\n .linkedVpcNetwork(SpokeLinkedVpcNetworkArgs.builder()\n .excludeExportRanges( \n \"198.51.100.0/24\",\n \"10.10.0.0/16\")\n .uri(net.selfLink())\n .build())\n .build());\n\n var natType = new RouterNat(\"natType\", RouterNatArgs.builder()\n .name(\"my-router-nat\")\n .router(router.name())\n .region(router.region())\n .sourceSubnetworkIpRangesToNat(\"LIST_OF_SUBNETWORKS\")\n .enableDynamicPortAllocation(false)\n .enableEndpointIndependentMapping(false)\n .minPortsPerVm(32)\n .type(\"PRIVATE\")\n .subnetworks(RouterNatSubnetworkArgs.builder()\n .name(subnet.id())\n .sourceIpRangesToNats(\"ALL_IP_RANGES\")\n .build())\n .rules(RouterNatRuleArgs.builder()\n .ruleNumber(100)\n .description(\"rule for private nat\")\n .match(\"nexthop.hub == \\\"//networkconnectivity.googleapis.com/projects/acm-test-proj-123/locations/global/hubs/my-hub\\\"\")\n .action(RouterNatRuleActionArgs.builder()\n .sourceNatActiveRanges(subnet.selfLink())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n net:\n type: gcp:compute:Network\n properties:\n name: my-network\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-subnetwork\n network: ${net.id}\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n purpose: PRIVATE_NAT\n router:\n type: gcp:compute:Router\n properties:\n name: my-router\n region: ${subnet.region}\n network: ${net.id}\n hub:\n type: gcp:networkconnectivity:Hub\n properties:\n name: my-hub\n description: vpc hub for inter vpc nat\n spoke:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: my-spoke\n location: global\n description: vpc spoke for inter vpc nat\n hub: ${hub.id}\n linkedVpcNetwork:\n excludeExportRanges:\n - 198.51.100.0/24\n - 10.10.0.0/16\n uri: ${net.selfLink}\n natType:\n type: gcp:compute:RouterNat\n name: nat_type\n properties:\n name: my-router-nat\n router: ${router.name}\n region: ${router.region}\n sourceSubnetworkIpRangesToNat: LIST_OF_SUBNETWORKS\n enableDynamicPortAllocation: false\n enableEndpointIndependentMapping: false\n minPortsPerVm: 32\n type: PRIVATE\n subnetworks:\n - name: ${subnet.id}\n sourceIpRangesToNats:\n - ALL_IP_RANGES\n rules:\n - ruleNumber: 100\n description: rule for private nat\n match: nexthop.hub == \"//networkconnectivity.googleapis.com/projects/acm-test-proj-123/locations/global/hubs/my-hub\"\n action:\n sourceNatActiveRanges:\n - ${subnet.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRouterNat can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/routers/{{router}}/{{name}}`\n\n* `{{project}}/{{region}}/{{router}}/{{name}}`\n\n* `{{region}}/{{router}}/{{name}}`\n\n* `{{router}}/{{name}}`\n\nWhen using the `pulumi import` command, RouterNat can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/routerNat:RouterNat default projects/{{project}}/regions/{{region}}/routers/{{router}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/routerNat:RouterNat default {{project}}/{{region}}/{{router}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/routerNat:RouterNat default {{region}}/{{router}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/routerNat:RouterNat default {{router}}/{{name}}\n```\n\n", + "description": "A NAT service created in a router.\n\n\nTo get more information about RouterNat, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/routers)\n* How-to Guides\n * [Google Cloud Router](https://cloud.google.com/router/docs/)\n\n## Example Usage\n\n### Router Nat Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst net = new gcp.compute.Network(\"net\", {name: \"my-network\"});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnetwork\",\n network: net.id,\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"my-router\",\n region: subnet.region,\n network: net.id,\n bgp: {\n asn: 64514,\n },\n});\nconst nat = new gcp.compute.RouterNat(\"nat\", {\n name: \"my-router-nat\",\n router: router.name,\n region: router.region,\n natIpAllocateOption: \"AUTO_ONLY\",\n sourceSubnetworkIpRangesToNat: \"ALL_SUBNETWORKS_ALL_IP_RANGES\",\n logConfig: {\n enable: true,\n filter: \"ERRORS_ONLY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnet = gcp.compute.Network(\"net\", name=\"my-network\")\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnetwork\",\n network=net.id,\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\")\nrouter = gcp.compute.Router(\"router\",\n name=\"my-router\",\n region=subnet.region,\n network=net.id,\n bgp={\n \"asn\": 64514,\n })\nnat = gcp.compute.RouterNat(\"nat\",\n name=\"my-router-nat\",\n router=router.name,\n region=router.region,\n nat_ip_allocate_option=\"AUTO_ONLY\",\n source_subnetwork_ip_ranges_to_nat=\"ALL_SUBNETWORKS_ALL_IP_RANGES\",\n log_config={\n \"enable\": True,\n \"filter\": \"ERRORS_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 net = new Gcp.Compute.Network(\"net\", new()\n {\n Name = \"my-network\",\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnetwork\",\n Network = net.Id,\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"my-router\",\n Region = subnet.Region,\n Network = net.Id,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 64514,\n },\n });\n\n var nat = new Gcp.Compute.RouterNat(\"nat\", new()\n {\n Name = \"my-router-nat\",\n Router = router.Name,\n Region = router.Region,\n NatIpAllocateOption = \"AUTO_ONLY\",\n SourceSubnetworkIpRangesToNat = \"ALL_SUBNETWORKS_ALL_IP_RANGES\",\n LogConfig = new Gcp.Compute.Inputs.RouterNatLogConfigArgs\n {\n Enable = true,\n Filter = \"ERRORS_ONLY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnet, err := compute.NewNetwork(ctx, \"net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\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\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tNetwork: net.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\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\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"my-router\"),\n\t\t\tRegion: subnet.Region,\n\t\t\tNetwork: net.ID(),\n\t\t\tBgp: \u0026compute.RouterBgpArgs{\n\t\t\t\tAsn: pulumi.Int(64514),\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.NewRouterNat(ctx, \"nat\", \u0026compute.RouterNatArgs{\n\t\t\tName: pulumi.String(\"my-router-nat\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: router.Region,\n\t\t\tNatIpAllocateOption: pulumi.String(\"AUTO_ONLY\"),\n\t\t\tSourceSubnetworkIpRangesToNat: pulumi.String(\"ALL_SUBNETWORKS_ALL_IP_RANGES\"),\n\t\t\tLogConfig: \u0026compute.RouterNatLogConfigArgs{\n\t\t\t\tEnable: pulumi.Bool(true),\n\t\t\t\tFilter: pulumi.String(\"ERRORS_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.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.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\nimport com.pulumi.gcp.compute.RouterNat;\nimport com.pulumi.gcp.compute.RouterNatArgs;\nimport com.pulumi.gcp.compute.inputs.RouterNatLogConfigArgs;\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 .name(\"my-network\")\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\n .network(net.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"my-router\")\n .region(subnet.region())\n .network(net.id())\n .bgp(RouterBgpArgs.builder()\n .asn(64514)\n .build())\n .build());\n\n var nat = new RouterNat(\"nat\", RouterNatArgs.builder()\n .name(\"my-router-nat\")\n .router(router.name())\n .region(router.region())\n .natIpAllocateOption(\"AUTO_ONLY\")\n .sourceSubnetworkIpRangesToNat(\"ALL_SUBNETWORKS_ALL_IP_RANGES\")\n .logConfig(RouterNatLogConfigArgs.builder()\n .enable(true)\n .filter(\"ERRORS_ONLY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n net:\n type: gcp:compute:Network\n properties:\n name: my-network\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-subnetwork\n network: ${net.id}\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n router:\n type: gcp:compute:Router\n properties:\n name: my-router\n region: ${subnet.region}\n network: ${net.id}\n bgp:\n asn: 64514\n nat:\n type: gcp:compute:RouterNat\n properties:\n name: my-router-nat\n router: ${router.name}\n region: ${router.region}\n natIpAllocateOption: AUTO_ONLY\n sourceSubnetworkIpRangesToNat: ALL_SUBNETWORKS_ALL_IP_RANGES\n logConfig:\n enable: true\n filter: ERRORS_ONLY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Nat Manual Ips\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst net = new gcp.compute.Network(\"net\", {name: \"my-network\"});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnetwork\",\n network: net.id,\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"my-router\",\n region: subnet.region,\n network: net.id,\n});\nconst address: gcp.compute.Address[] = [];\nfor (const range = {value: 0}; range.value \u003c 2; range.value++) {\n address.push(new gcp.compute.Address(`address-${range.value}`, {\n name: `nat-manual-ip-${range.value}`,\n region: subnet.region,\n }));\n}\nconst natManual = new gcp.compute.RouterNat(\"nat_manual\", {\n name: \"my-router-nat\",\n router: router.name,\n region: router.region,\n natIpAllocateOption: \"MANUAL_ONLY\",\n natIps: address.map(__item =\u003e __item.selfLink),\n sourceSubnetworkIpRangesToNat: \"LIST_OF_SUBNETWORKS\",\n subnetworks: [{\n name: subnet.id,\n sourceIpRangesToNats: [\"ALL_IP_RANGES\"],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnet = gcp.compute.Network(\"net\", name=\"my-network\")\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnetwork\",\n network=net.id,\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\")\nrouter = gcp.compute.Router(\"router\",\n name=\"my-router\",\n region=subnet.region,\n network=net.id)\naddress = []\nfor range in [{\"value\": i} for i in range(0, 2)]:\n address.append(gcp.compute.Address(f\"address-{range['value']}\",\n name=f\"nat-manual-ip-{range['value']}\",\n region=subnet.region))\nnat_manual = gcp.compute.RouterNat(\"nat_manual\",\n name=\"my-router-nat\",\n router=router.name,\n region=router.region,\n nat_ip_allocate_option=\"MANUAL_ONLY\",\n nat_ips=[__item.self_link for __item in address],\n source_subnetwork_ip_ranges_to_nat=\"LIST_OF_SUBNETWORKS\",\n subnetworks=[{\n \"name\": subnet.id,\n \"source_ip_ranges_to_nats\": [\"ALL_IP_RANGES\"],\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 Name = \"my-network\",\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnetwork\",\n Network = net.Id,\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"my-router\",\n Region = subnet.Region,\n Network = net.Id,\n });\n\n var address = new List\u003cGcp.Compute.Address\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c 2; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n address.Add(new Gcp.Compute.Address($\"address-{range.Value}\", new()\n {\n Name = $\"nat-manual-ip-{range.Value}\",\n Region = subnet.Region,\n }));\n }\n var natManual = new Gcp.Compute.RouterNat(\"nat_manual\", new()\n {\n Name = \"my-router-nat\",\n Router = router.Name,\n Region = router.Region,\n NatIpAllocateOption = \"MANUAL_ONLY\",\n NatIps = address.Select(__item =\u003e __item.SelfLink).ToList(),\n SourceSubnetworkIpRangesToNat = \"LIST_OF_SUBNETWORKS\",\n Subnetworks = new[]\n {\n new Gcp.Compute.Inputs.RouterNatSubnetworkArgs\n {\n Name = subnet.Id,\n SourceIpRangesToNats = new[]\n {\n \"ALL_IP_RANGES\",\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/v7/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\tnet, err := compute.NewNetwork(ctx, \"net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\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\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tNetwork: net.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\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\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"my-router\"),\n\t\t\tRegion: subnet.Region,\n\t\t\tNetwork: net.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar address []*compute.Address\n\t\tfor index := 0; index \u003c 2; index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := compute.NewAddress(ctx, fmt.Sprintf(\"address-%v\", key0), \u0026compute.AddressArgs{\n\t\t\t\tName: pulumi.String(fmt.Sprintf(\"nat-manual-ip-%v\", val0)),\n\t\t\t\tRegion: subnet.Region,\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\taddress = append(address, __res)\n\t\t}\n\t\tvar splat0 pulumi.StringArray\n\t\tfor _, val0 := range address {\n\t\t\tsplat0 = append(splat0, val0.SelfLink)\n\t\t}\n\t\t_, err = compute.NewRouterNat(ctx, \"nat_manual\", \u0026compute.RouterNatArgs{\n\t\t\tName: pulumi.String(\"my-router-nat\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: router.Region,\n\t\t\tNatIpAllocateOption: pulumi.String(\"MANUAL_ONLY\"),\n\t\t\tNatIps: splat0,\n\t\t\tSourceSubnetworkIpRangesToNat: pulumi.String(\"LIST_OF_SUBNETWORKS\"),\n\t\t\tSubnetworks: compute.RouterNatSubnetworkArray{\n\t\t\t\t\u0026compute.RouterNatSubnetworkArgs{\n\t\t\t\t\tName: subnet.ID(),\n\t\t\t\t\tSourceIpRangesToNats: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ALL_IP_RANGES\"),\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.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.RouterNat;\nimport com.pulumi.gcp.compute.RouterNatArgs;\nimport com.pulumi.gcp.compute.inputs.RouterNatSubnetworkArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\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 .name(\"my-network\")\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\n .network(net.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"my-router\")\n .region(subnet.region())\n .network(net.id())\n .build());\n\n for (var i = 0; i \u003c 2; i++) {\n new Address(\"address-\" + i, AddressArgs.builder()\n .name(String.format(\"nat-manual-ip-%s\", range.value()))\n .region(subnet.region())\n .build());\n\n \n}\n var natManual = new RouterNat(\"natManual\", RouterNatArgs.builder()\n .name(\"my-router-nat\")\n .router(router.name())\n .region(router.region())\n .natIpAllocateOption(\"MANUAL_ONLY\")\n .natIps(address.stream().map(element -\u003e element.selfLink()).collect(toList()))\n .sourceSubnetworkIpRangesToNat(\"LIST_OF_SUBNETWORKS\")\n .subnetworks(RouterNatSubnetworkArgs.builder()\n .name(subnet.id())\n .sourceIpRangesToNats(\"ALL_IP_RANGES\")\n .build())\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Nat Rules\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst net = new gcp.compute.Network(\"net\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnetwork\",\n network: net.id,\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"my-router\",\n region: subnet.region,\n network: net.id,\n});\nconst addr1 = new gcp.compute.Address(\"addr1\", {\n name: \"nat-address1\",\n region: subnet.region,\n});\nconst addr2 = new gcp.compute.Address(\"addr2\", {\n name: \"nat-address2\",\n region: subnet.region,\n});\nconst addr3 = new gcp.compute.Address(\"addr3\", {\n name: \"nat-address3\",\n region: subnet.region,\n});\nconst natRules = new gcp.compute.RouterNat(\"nat_rules\", {\n name: \"my-router-nat\",\n router: router.name,\n region: router.region,\n natIpAllocateOption: \"MANUAL_ONLY\",\n natIps: [addr1.selfLink],\n sourceSubnetworkIpRangesToNat: \"LIST_OF_SUBNETWORKS\",\n subnetworks: [{\n name: subnet.id,\n sourceIpRangesToNats: [\"ALL_IP_RANGES\"],\n }],\n rules: [{\n ruleNumber: 100,\n description: \"nat rules example\",\n match: \"inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')\",\n action: {\n sourceNatActiveIps: [\n addr2.selfLink,\n addr3.selfLink,\n ],\n },\n }],\n enableEndpointIndependentMapping: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnet = gcp.compute.Network(\"net\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnetwork\",\n network=net.id,\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\")\nrouter = gcp.compute.Router(\"router\",\n name=\"my-router\",\n region=subnet.region,\n network=net.id)\naddr1 = gcp.compute.Address(\"addr1\",\n name=\"nat-address1\",\n region=subnet.region)\naddr2 = gcp.compute.Address(\"addr2\",\n name=\"nat-address2\",\n region=subnet.region)\naddr3 = gcp.compute.Address(\"addr3\",\n name=\"nat-address3\",\n region=subnet.region)\nnat_rules = gcp.compute.RouterNat(\"nat_rules\",\n name=\"my-router-nat\",\n router=router.name,\n region=router.region,\n nat_ip_allocate_option=\"MANUAL_ONLY\",\n nat_ips=[addr1.self_link],\n source_subnetwork_ip_ranges_to_nat=\"LIST_OF_SUBNETWORKS\",\n subnetworks=[{\n \"name\": subnet.id,\n \"source_ip_ranges_to_nats\": [\"ALL_IP_RANGES\"],\n }],\n rules=[{\n \"rule_number\": 100,\n \"description\": \"nat rules example\",\n \"match\": \"inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')\",\n \"action\": {\n \"source_nat_active_ips\": [\n addr2.self_link,\n addr3.self_link,\n ],\n },\n }],\n enable_endpoint_independent_mapping=False)\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 Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnetwork\",\n Network = net.Id,\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"my-router\",\n Region = subnet.Region,\n Network = net.Id,\n });\n\n var addr1 = new Gcp.Compute.Address(\"addr1\", new()\n {\n Name = \"nat-address1\",\n Region = subnet.Region,\n });\n\n var addr2 = new Gcp.Compute.Address(\"addr2\", new()\n {\n Name = \"nat-address2\",\n Region = subnet.Region,\n });\n\n var addr3 = new Gcp.Compute.Address(\"addr3\", new()\n {\n Name = \"nat-address3\",\n Region = subnet.Region,\n });\n\n var natRules = new Gcp.Compute.RouterNat(\"nat_rules\", new()\n {\n Name = \"my-router-nat\",\n Router = router.Name,\n Region = router.Region,\n NatIpAllocateOption = \"MANUAL_ONLY\",\n NatIps = new[]\n {\n addr1.SelfLink,\n },\n SourceSubnetworkIpRangesToNat = \"LIST_OF_SUBNETWORKS\",\n Subnetworks = new[]\n {\n new Gcp.Compute.Inputs.RouterNatSubnetworkArgs\n {\n Name = subnet.Id,\n SourceIpRangesToNats = new[]\n {\n \"ALL_IP_RANGES\",\n },\n },\n },\n Rules = new[]\n {\n new Gcp.Compute.Inputs.RouterNatRuleArgs\n {\n RuleNumber = 100,\n Description = \"nat rules example\",\n Match = \"inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')\",\n Action = new Gcp.Compute.Inputs.RouterNatRuleActionArgs\n {\n SourceNatActiveIps = new[]\n {\n addr2.SelfLink,\n addr3.SelfLink,\n },\n },\n },\n },\n EnableEndpointIndependentMapping = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tnet, err := compute.NewNetwork(ctx, \"net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\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\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tNetwork: net.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\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\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"my-router\"),\n\t\t\tRegion: subnet.Region,\n\t\t\tNetwork: net.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddr1, err := compute.NewAddress(ctx, \"addr1\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"nat-address1\"),\n\t\t\tRegion: subnet.Region,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddr2, err := compute.NewAddress(ctx, \"addr2\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"nat-address2\"),\n\t\t\tRegion: subnet.Region,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddr3, err := compute.NewAddress(ctx, \"addr3\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"nat-address3\"),\n\t\t\tRegion: subnet.Region,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRouterNat(ctx, \"nat_rules\", \u0026compute.RouterNatArgs{\n\t\t\tName: pulumi.String(\"my-router-nat\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: router.Region,\n\t\t\tNatIpAllocateOption: pulumi.String(\"MANUAL_ONLY\"),\n\t\t\tNatIps: pulumi.StringArray{\n\t\t\t\taddr1.SelfLink,\n\t\t\t},\n\t\t\tSourceSubnetworkIpRangesToNat: pulumi.String(\"LIST_OF_SUBNETWORKS\"),\n\t\t\tSubnetworks: compute.RouterNatSubnetworkArray{\n\t\t\t\t\u0026compute.RouterNatSubnetworkArgs{\n\t\t\t\t\tName: subnet.ID(),\n\t\t\t\t\tSourceIpRangesToNats: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ALL_IP_RANGES\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRules: compute.RouterNatRuleArray{\n\t\t\t\t\u0026compute.RouterNatRuleArgs{\n\t\t\t\t\tRuleNumber: pulumi.Int(100),\n\t\t\t\t\tDescription: pulumi.String(\"nat rules example\"),\n\t\t\t\t\tMatch: pulumi.String(\"inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')\"),\n\t\t\t\t\tAction: \u0026compute.RouterNatRuleActionArgs{\n\t\t\t\t\t\tSourceNatActiveIps: pulumi.StringArray{\n\t\t\t\t\t\t\taddr2.SelfLink,\n\t\t\t\t\t\t\taddr3.SelfLink,\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\tEnableEndpointIndependentMapping: pulumi.Bool(false),\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.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.RouterNat;\nimport com.pulumi.gcp.compute.RouterNatArgs;\nimport com.pulumi.gcp.compute.inputs.RouterNatSubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.RouterNatRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RouterNatRuleActionArgs;\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 .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\n .network(net.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"my-router\")\n .region(subnet.region())\n .network(net.id())\n .build());\n\n var addr1 = new Address(\"addr1\", AddressArgs.builder()\n .name(\"nat-address1\")\n .region(subnet.region())\n .build());\n\n var addr2 = new Address(\"addr2\", AddressArgs.builder()\n .name(\"nat-address2\")\n .region(subnet.region())\n .build());\n\n var addr3 = new Address(\"addr3\", AddressArgs.builder()\n .name(\"nat-address3\")\n .region(subnet.region())\n .build());\n\n var natRules = new RouterNat(\"natRules\", RouterNatArgs.builder()\n .name(\"my-router-nat\")\n .router(router.name())\n .region(router.region())\n .natIpAllocateOption(\"MANUAL_ONLY\")\n .natIps(addr1.selfLink())\n .sourceSubnetworkIpRangesToNat(\"LIST_OF_SUBNETWORKS\")\n .subnetworks(RouterNatSubnetworkArgs.builder()\n .name(subnet.id())\n .sourceIpRangesToNats(\"ALL_IP_RANGES\")\n .build())\n .rules(RouterNatRuleArgs.builder()\n .ruleNumber(100)\n .description(\"nat rules example\")\n .match(\"inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')\")\n .action(RouterNatRuleActionArgs.builder()\n .sourceNatActiveIps( \n addr2.selfLink(),\n addr3.selfLink())\n .build())\n .build())\n .enableEndpointIndependentMapping(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n net:\n type: gcp:compute:Network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-subnetwork\n network: ${net.id}\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n router:\n type: gcp:compute:Router\n properties:\n name: my-router\n region: ${subnet.region}\n network: ${net.id}\n addr1:\n type: gcp:compute:Address\n properties:\n name: nat-address1\n region: ${subnet.region}\n addr2:\n type: gcp:compute:Address\n properties:\n name: nat-address2\n region: ${subnet.region}\n addr3:\n type: gcp:compute:Address\n properties:\n name: nat-address3\n region: ${subnet.region}\n natRules:\n type: gcp:compute:RouterNat\n name: nat_rules\n properties:\n name: my-router-nat\n router: ${router.name}\n region: ${router.region}\n natIpAllocateOption: MANUAL_ONLY\n natIps:\n - ${addr1.selfLink}\n sourceSubnetworkIpRangesToNat: LIST_OF_SUBNETWORKS\n subnetworks:\n - name: ${subnet.id}\n sourceIpRangesToNats:\n - ALL_IP_RANGES\n rules:\n - ruleNumber: 100\n description: nat rules example\n match: inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')\n action:\n sourceNatActiveIps:\n - ${addr2.selfLink}\n - ${addr3.selfLink}\n enableEndpointIndependentMapping: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Nat Private\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst net = new gcp.compute.Network(\"net\", {name: \"my-network\"});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnetwork\",\n network: net.id,\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n purpose: \"PRIVATE_NAT\",\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"my-router\",\n region: subnet.region,\n network: net.id,\n});\nconst hub = new gcp.networkconnectivity.Hub(\"hub\", {\n name: \"my-hub\",\n description: \"vpc hub for inter vpc nat\",\n});\nconst spoke = new gcp.networkconnectivity.Spoke(\"spoke\", {\n name: \"my-spoke\",\n location: \"global\",\n description: \"vpc spoke for inter vpc nat\",\n hub: hub.id,\n linkedVpcNetwork: {\n excludeExportRanges: [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n uri: net.selfLink,\n },\n});\nconst natType = new gcp.compute.RouterNat(\"nat_type\", {\n name: \"my-router-nat\",\n router: router.name,\n region: router.region,\n sourceSubnetworkIpRangesToNat: \"LIST_OF_SUBNETWORKS\",\n enableDynamicPortAllocation: false,\n enableEndpointIndependentMapping: false,\n minPortsPerVm: 32,\n type: \"PRIVATE\",\n subnetworks: [{\n name: subnet.id,\n sourceIpRangesToNats: [\"ALL_IP_RANGES\"],\n }],\n rules: [{\n ruleNumber: 100,\n description: \"rule for private nat\",\n match: \"nexthop.hub == \\\"//networkconnectivity.googleapis.com/projects/acm-test-proj-123/locations/global/hubs/my-hub\\\"\",\n action: {\n sourceNatActiveRanges: [subnet.selfLink],\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnet = gcp.compute.Network(\"net\", name=\"my-network\")\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnetwork\",\n network=net.id,\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n purpose=\"PRIVATE_NAT\")\nrouter = gcp.compute.Router(\"router\",\n name=\"my-router\",\n region=subnet.region,\n network=net.id)\nhub = gcp.networkconnectivity.Hub(\"hub\",\n name=\"my-hub\",\n description=\"vpc hub for inter vpc nat\")\nspoke = gcp.networkconnectivity.Spoke(\"spoke\",\n name=\"my-spoke\",\n location=\"global\",\n description=\"vpc spoke for inter vpc nat\",\n hub=hub.id,\n linked_vpc_network={\n \"exclude_export_ranges\": [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n \"uri\": net.self_link,\n })\nnat_type = gcp.compute.RouterNat(\"nat_type\",\n name=\"my-router-nat\",\n router=router.name,\n region=router.region,\n source_subnetwork_ip_ranges_to_nat=\"LIST_OF_SUBNETWORKS\",\n enable_dynamic_port_allocation=False,\n enable_endpoint_independent_mapping=False,\n min_ports_per_vm=32,\n type=\"PRIVATE\",\n subnetworks=[{\n \"name\": subnet.id,\n \"source_ip_ranges_to_nats\": [\"ALL_IP_RANGES\"],\n }],\n rules=[{\n \"rule_number\": 100,\n \"description\": \"rule for private nat\",\n \"match\": \"nexthop.hub == \\\"//networkconnectivity.googleapis.com/projects/acm-test-proj-123/locations/global/hubs/my-hub\\\"\",\n \"action\": {\n \"source_nat_active_ranges\": [subnet.self_link],\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 Name = \"my-network\",\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnetwork\",\n Network = net.Id,\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Purpose = \"PRIVATE_NAT\",\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"my-router\",\n Region = subnet.Region,\n Network = net.Id,\n });\n\n var hub = new Gcp.NetworkConnectivity.Hub(\"hub\", new()\n {\n Name = \"my-hub\",\n Description = \"vpc hub for inter vpc nat\",\n });\n\n var spoke = new Gcp.NetworkConnectivity.Spoke(\"spoke\", new()\n {\n Name = \"my-spoke\",\n Location = \"global\",\n Description = \"vpc spoke for inter vpc nat\",\n Hub = hub.Id,\n LinkedVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpcNetworkArgs\n {\n ExcludeExportRanges = new[]\n {\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n },\n Uri = net.SelfLink,\n },\n });\n\n var natType = new Gcp.Compute.RouterNat(\"nat_type\", new()\n {\n Name = \"my-router-nat\",\n Router = router.Name,\n Region = router.Region,\n SourceSubnetworkIpRangesToNat = \"LIST_OF_SUBNETWORKS\",\n EnableDynamicPortAllocation = false,\n EnableEndpointIndependentMapping = false,\n MinPortsPerVm = 32,\n Type = \"PRIVATE\",\n Subnetworks = new[]\n {\n new Gcp.Compute.Inputs.RouterNatSubnetworkArgs\n {\n Name = subnet.Id,\n SourceIpRangesToNats = new[]\n {\n \"ALL_IP_RANGES\",\n },\n },\n },\n Rules = new[]\n {\n new Gcp.Compute.Inputs.RouterNatRuleArgs\n {\n RuleNumber = 100,\n Description = \"rule for private nat\",\n Match = \"nexthop.hub == \\\"//networkconnectivity.googleapis.com/projects/acm-test-proj-123/locations/global/hubs/my-hub\\\"\",\n Action = new Gcp.Compute.Inputs.RouterNatRuleActionArgs\n {\n SourceNatActiveRanges = new[]\n {\n subnet.SelfLink,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkconnectivity\"\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\tName: pulumi.String(\"my-network\"),\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\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tNetwork: net.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_NAT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"my-router\"),\n\t\t\tRegion: subnet.Region,\n\t\t\tNetwork: net.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thub, err := networkconnectivity.NewHub(ctx, \"hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"my-hub\"),\n\t\t\tDescription: pulumi.String(\"vpc hub for inter vpc nat\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"spoke\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"my-spoke\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"vpc spoke for inter vpc nat\"),\n\t\t\tHub: hub.ID(),\n\t\t\tLinkedVpcNetwork: \u0026networkconnectivity.SpokeLinkedVpcNetworkArgs{\n\t\t\t\tExcludeExportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"198.51.100.0/24\"),\n\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tUri: net.SelfLink,\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.NewRouterNat(ctx, \"nat_type\", \u0026compute.RouterNatArgs{\n\t\t\tName: pulumi.String(\"my-router-nat\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: router.Region,\n\t\t\tSourceSubnetworkIpRangesToNat: pulumi.String(\"LIST_OF_SUBNETWORKS\"),\n\t\t\tEnableDynamicPortAllocation: pulumi.Bool(false),\n\t\t\tEnableEndpointIndependentMapping: pulumi.Bool(false),\n\t\t\tMinPortsPerVm: pulumi.Int(32),\n\t\t\tType: pulumi.String(\"PRIVATE\"),\n\t\t\tSubnetworks: compute.RouterNatSubnetworkArray{\n\t\t\t\t\u0026compute.RouterNatSubnetworkArgs{\n\t\t\t\t\tName: subnet.ID(),\n\t\t\t\t\tSourceIpRangesToNats: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ALL_IP_RANGES\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRules: compute.RouterNatRuleArray{\n\t\t\t\t\u0026compute.RouterNatRuleArgs{\n\t\t\t\t\tRuleNumber: pulumi.Int(100),\n\t\t\t\t\tDescription: pulumi.String(\"rule for private nat\"),\n\t\t\t\t\tMatch: pulumi.String(\"nexthop.hub == \\\"//networkconnectivity.googleapis.com/projects/acm-test-proj-123/locations/global/hubs/my-hub\\\"\"),\n\t\t\t\t\tAction: \u0026compute.RouterNatRuleActionArgs{\n\t\t\t\t\t\tSourceNatActiveRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tsubnet.SelfLink,\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.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.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedVpcNetworkArgs;\nimport com.pulumi.gcp.compute.RouterNat;\nimport com.pulumi.gcp.compute.RouterNatArgs;\nimport com.pulumi.gcp.compute.inputs.RouterNatSubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.RouterNatRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RouterNatRuleActionArgs;\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 .name(\"my-network\")\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\n .network(net.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .purpose(\"PRIVATE_NAT\")\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"my-router\")\n .region(subnet.region())\n .network(net.id())\n .build());\n\n var hub = new Hub(\"hub\", HubArgs.builder()\n .name(\"my-hub\")\n .description(\"vpc hub for inter vpc nat\")\n .build());\n\n var spoke = new Spoke(\"spoke\", SpokeArgs.builder()\n .name(\"my-spoke\")\n .location(\"global\")\n .description(\"vpc spoke for inter vpc nat\")\n .hub(hub.id())\n .linkedVpcNetwork(SpokeLinkedVpcNetworkArgs.builder()\n .excludeExportRanges( \n \"198.51.100.0/24\",\n \"10.10.0.0/16\")\n .uri(net.selfLink())\n .build())\n .build());\n\n var natType = new RouterNat(\"natType\", RouterNatArgs.builder()\n .name(\"my-router-nat\")\n .router(router.name())\n .region(router.region())\n .sourceSubnetworkIpRangesToNat(\"LIST_OF_SUBNETWORKS\")\n .enableDynamicPortAllocation(false)\n .enableEndpointIndependentMapping(false)\n .minPortsPerVm(32)\n .type(\"PRIVATE\")\n .subnetworks(RouterNatSubnetworkArgs.builder()\n .name(subnet.id())\n .sourceIpRangesToNats(\"ALL_IP_RANGES\")\n .build())\n .rules(RouterNatRuleArgs.builder()\n .ruleNumber(100)\n .description(\"rule for private nat\")\n .match(\"nexthop.hub == \\\"//networkconnectivity.googleapis.com/projects/acm-test-proj-123/locations/global/hubs/my-hub\\\"\")\n .action(RouterNatRuleActionArgs.builder()\n .sourceNatActiveRanges(subnet.selfLink())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n net:\n type: gcp:compute:Network\n properties:\n name: my-network\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-subnetwork\n network: ${net.id}\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n purpose: PRIVATE_NAT\n router:\n type: gcp:compute:Router\n properties:\n name: my-router\n region: ${subnet.region}\n network: ${net.id}\n hub:\n type: gcp:networkconnectivity:Hub\n properties:\n name: my-hub\n description: vpc hub for inter vpc nat\n spoke:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: my-spoke\n location: global\n description: vpc spoke for inter vpc nat\n hub: ${hub.id}\n linkedVpcNetwork:\n excludeExportRanges:\n - 198.51.100.0/24\n - 10.10.0.0/16\n uri: ${net.selfLink}\n natType:\n type: gcp:compute:RouterNat\n name: nat_type\n properties:\n name: my-router-nat\n router: ${router.name}\n region: ${router.region}\n sourceSubnetworkIpRangesToNat: LIST_OF_SUBNETWORKS\n enableDynamicPortAllocation: false\n enableEndpointIndependentMapping: false\n minPortsPerVm: 32\n type: PRIVATE\n subnetworks:\n - name: ${subnet.id}\n sourceIpRangesToNats:\n - ALL_IP_RANGES\n rules:\n - ruleNumber: 100\n description: rule for private nat\n match: nexthop.hub == \"//networkconnectivity.googleapis.com/projects/acm-test-proj-123/locations/global/hubs/my-hub\"\n action:\n sourceNatActiveRanges:\n - ${subnet.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRouterNat can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/routers/{{router}}/{{name}}`\n\n* `{{project}}/{{region}}/{{router}}/{{name}}`\n\n* `{{region}}/{{router}}/{{name}}`\n\n* `{{router}}/{{name}}`\n\nWhen using the `pulumi import` command, RouterNat can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/routerNat:RouterNat default projects/{{project}}/regions/{{region}}/routers/{{router}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/routerNat:RouterNat default {{project}}/{{region}}/{{router}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/routerNat:RouterNat default {{region}}/{{router}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/routerNat:RouterNat default {{router}}/{{name}}\n```\n\n", "properties": { "autoNetworkTier": { "type": "string", @@ -161941,7 +161941,7 @@ } }, "gcp:compute/routerPeer:RouterPeer": { - "description": "BGP information that must be configured into the routing stack to\nestablish BGP peering. This information must specify the peer ASN\nand either the interface name, IP address, or peer IP address.\nPlease refer to RFC4273.\n\n\nTo get more information about RouterBgpPeer, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/routers)\n* How-to Guides\n * [Google Cloud Router](https://cloud.google.com/router/docs/)\n\n## Example Usage\n\n### Router Peer Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst peer = new gcp.compute.RouterPeer(\"peer\", {\n name: \"my-router-peer\",\n router: \"my-router\",\n region: \"us-central1\",\n peerAsn: 65513,\n advertisedRoutePriority: 100,\n \"interface\": \"interface-1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npeer = gcp.compute.RouterPeer(\"peer\",\n name=\"my-router-peer\",\n router=\"my-router\",\n region=\"us-central1\",\n peer_asn=65513,\n advertised_route_priority=100,\n interface=\"interface-1\")\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 peer = new Gcp.Compute.RouterPeer(\"peer\", new()\n {\n Name = \"my-router-peer\",\n Router = \"my-router\",\n Region = \"us-central1\",\n PeerAsn = 65513,\n AdvertisedRoutePriority = 100,\n Interface = \"interface-1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRouterPeer(ctx, \"peer\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"my-router-peer\"),\n\t\t\tRouter: pulumi.String(\"my-router\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerAsn: pulumi.Int(65513),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: pulumi.String(\"interface-1\"),\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.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\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 peer = new RouterPeer(\"peer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(\"my-router\")\n .region(\"us-central1\")\n .peerAsn(65513)\n .advertisedRoutePriority(100)\n .interface_(\"interface-1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peer:\n type: gcp:compute:RouterPeer\n properties:\n name: my-router-peer\n router: my-router\n region: us-central1\n peerAsn: 65513\n advertisedRoutePriority: 100\n interface: interface-1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Peer Disabled\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst peer = new gcp.compute.RouterPeer(\"peer\", {\n name: \"my-router-peer\",\n router: \"my-router\",\n region: \"us-central1\",\n peerIpAddress: \"169.254.1.2\",\n peerAsn: 65513,\n advertisedRoutePriority: 100,\n \"interface\": \"interface-1\",\n enable: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npeer = gcp.compute.RouterPeer(\"peer\",\n name=\"my-router-peer\",\n router=\"my-router\",\n region=\"us-central1\",\n peer_ip_address=\"169.254.1.2\",\n peer_asn=65513,\n advertised_route_priority=100,\n interface=\"interface-1\",\n enable=False)\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 peer = new Gcp.Compute.RouterPeer(\"peer\", new()\n {\n Name = \"my-router-peer\",\n Router = \"my-router\",\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.1.2\",\n PeerAsn = 65513,\n AdvertisedRoutePriority = 100,\n Interface = \"interface-1\",\n Enable = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRouterPeer(ctx, \"peer\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"my-router-peer\"),\n\t\t\tRouter: pulumi.String(\"my-router\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.1.2\"),\n\t\t\tPeerAsn: pulumi.Int(65513),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: pulumi.String(\"interface-1\"),\n\t\t\tEnable: pulumi.Bool(false),\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.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\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 peer = new RouterPeer(\"peer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(\"my-router\")\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.1.2\")\n .peerAsn(65513)\n .advertisedRoutePriority(100)\n .interface_(\"interface-1\")\n .enable(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peer:\n type: gcp:compute:RouterPeer\n properties:\n name: my-router-peer\n router: my-router\n region: us-central1\n peerIpAddress: 169.254.1.2\n peerAsn: 65513\n advertisedRoutePriority: 100\n interface: interface-1\n enable: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Peer Bfd\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst peer = new gcp.compute.RouterPeer(\"peer\", {\n name: \"my-router-peer\",\n router: \"my-router\",\n region: \"us-central1\",\n peerIpAddress: \"169.254.1.2\",\n peerAsn: 65513,\n advertisedRoutePriority: 100,\n \"interface\": \"interface-1\",\n bfd: {\n minReceiveInterval: 1000,\n minTransmitInterval: 1000,\n multiplier: 5,\n sessionInitializationMode: \"ACTIVE\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npeer = gcp.compute.RouterPeer(\"peer\",\n name=\"my-router-peer\",\n router=\"my-router\",\n region=\"us-central1\",\n peer_ip_address=\"169.254.1.2\",\n peer_asn=65513,\n advertised_route_priority=100,\n interface=\"interface-1\",\n bfd={\n \"minReceiveInterval\": 1000,\n \"minTransmitInterval\": 1000,\n \"multiplier\": 5,\n \"sessionInitializationMode\": \"ACTIVE\",\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 peer = new Gcp.Compute.RouterPeer(\"peer\", new()\n {\n Name = \"my-router-peer\",\n Router = \"my-router\",\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.1.2\",\n PeerAsn = 65513,\n AdvertisedRoutePriority = 100,\n Interface = \"interface-1\",\n Bfd = new Gcp.Compute.Inputs.RouterPeerBfdArgs\n {\n MinReceiveInterval = 1000,\n MinTransmitInterval = 1000,\n Multiplier = 5,\n SessionInitializationMode = \"ACTIVE\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRouterPeer(ctx, \"peer\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"my-router-peer\"),\n\t\t\tRouter: pulumi.String(\"my-router\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.1.2\"),\n\t\t\tPeerAsn: pulumi.Int(65513),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: pulumi.String(\"interface-1\"),\n\t\t\tBfd: \u0026compute.RouterPeerBfdArgs{\n\t\t\t\tMinReceiveInterval: pulumi.Int(1000),\n\t\t\t\tMinTransmitInterval: pulumi.Int(1000),\n\t\t\t\tMultiplier: pulumi.Int(5),\n\t\t\t\tSessionInitializationMode: pulumi.String(\"ACTIVE\"),\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.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport com.pulumi.gcp.compute.inputs.RouterPeerBfdArgs;\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 peer = new RouterPeer(\"peer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(\"my-router\")\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.1.2\")\n .peerAsn(65513)\n .advertisedRoutePriority(100)\n .interface_(\"interface-1\")\n .bfd(RouterPeerBfdArgs.builder()\n .minReceiveInterval(1000)\n .minTransmitInterval(1000)\n .multiplier(5)\n .sessionInitializationMode(\"ACTIVE\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peer:\n type: gcp:compute:RouterPeer\n properties:\n name: my-router-peer\n router: my-router\n region: us-central1\n peerIpAddress: 169.254.1.2\n peerAsn: 65513\n advertisedRoutePriority: 100\n interface: interface-1\n bfd:\n minReceiveInterval: 1000\n minTransmitInterval: 1000\n multiplier: 5\n sessionInitializationMode: ACTIVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Peer Router Appliance\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"my-router-net\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork = new gcp.compute.Subnetwork(\"subnetwork\", {\n name: \"my-router-sub\",\n network: network.selfLink,\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n});\nconst addrIntf = new gcp.compute.Address(\"addr_intf\", {\n name: \"my-router-addr-intf\",\n region: subnetwork.region,\n subnetwork: subnetwork.id,\n addressType: \"INTERNAL\",\n});\nconst addrIntfRedundant = new gcp.compute.Address(\"addr_intf_redundant\", {\n name: \"my-router-addr-intf-red\",\n region: subnetwork.region,\n subnetwork: subnetwork.id,\n addressType: \"INTERNAL\",\n});\nconst addrPeer = new gcp.compute.Address(\"addr_peer\", {\n name: \"my-router-addr-peer\",\n region: subnetwork.region,\n subnetwork: subnetwork.id,\n addressType: \"INTERNAL\",\n});\nconst instance = new gcp.compute.Instance(\"instance\", {\n name: \"router-appliance\",\n zone: \"us-central1-a\",\n machineType: \"e2-medium\",\n canIpForward: true,\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [{\n networkIp: addrPeer.address,\n subnetwork: subnetwork.selfLink,\n }],\n});\nconst hub = new gcp.networkconnectivity.Hub(\"hub\", {name: \"my-router-hub\"});\nconst spoke = new gcp.networkconnectivity.Spoke(\"spoke\", {\n name: \"my-router-spoke\",\n location: subnetwork.region,\n hub: hub.id,\n linkedRouterApplianceInstances: {\n instances: [{\n virtualMachine: instance.selfLink,\n ipAddress: addrPeer.address,\n }],\n siteToSiteDataTransfer: false,\n },\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"my-router-router\",\n region: subnetwork.region,\n network: network.selfLink,\n bgp: {\n asn: 64514,\n },\n});\nconst interfaceRedundant = new gcp.compute.RouterInterface(\"interface_redundant\", {\n name: \"my-router-intf-red\",\n region: router.region,\n router: router.name,\n subnetwork: subnetwork.selfLink,\n privateIpAddress: addrIntfRedundant.address,\n});\nconst _interface = new gcp.compute.RouterInterface(\"interface\", {\n name: \"my-router-intf\",\n region: router.region,\n router: router.name,\n subnetwork: subnetwork.selfLink,\n privateIpAddress: addrIntf.address,\n redundantInterface: interfaceRedundant.name,\n});\nconst peer = new gcp.compute.RouterPeer(\"peer\", {\n name: \"my-router-peer\",\n router: router.name,\n region: router.region,\n \"interface\": _interface.name,\n routerApplianceInstance: instance.selfLink,\n peerAsn: 65513,\n peerIpAddress: addrPeer.address,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"my-router-net\",\n auto_create_subnetworks=False)\nsubnetwork = gcp.compute.Subnetwork(\"subnetwork\",\n name=\"my-router-sub\",\n network=network.self_link,\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\")\naddr_intf = gcp.compute.Address(\"addr_intf\",\n name=\"my-router-addr-intf\",\n region=subnetwork.region,\n subnetwork=subnetwork.id,\n address_type=\"INTERNAL\")\naddr_intf_redundant = gcp.compute.Address(\"addr_intf_redundant\",\n name=\"my-router-addr-intf-red\",\n region=subnetwork.region,\n subnetwork=subnetwork.id,\n address_type=\"INTERNAL\")\naddr_peer = gcp.compute.Address(\"addr_peer\",\n name=\"my-router-addr-peer\",\n region=subnetwork.region,\n subnetwork=subnetwork.id,\n address_type=\"INTERNAL\")\ninstance = gcp.compute.Instance(\"instance\",\n name=\"router-appliance\",\n zone=\"us-central1-a\",\n machine_type=\"e2-medium\",\n can_ip_forward=True,\n boot_disk={\n \"initializeParams\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n network_interfaces=[{\n \"networkIp\": addr_peer.address,\n \"subnetwork\": subnetwork.self_link,\n }])\nhub = gcp.networkconnectivity.Hub(\"hub\", name=\"my-router-hub\")\nspoke = gcp.networkconnectivity.Spoke(\"spoke\",\n name=\"my-router-spoke\",\n location=subnetwork.region,\n hub=hub.id,\n linked_router_appliance_instances={\n \"instances\": [{\n \"virtualMachine\": instance.self_link,\n \"ipAddress\": addr_peer.address,\n }],\n \"siteToSiteDataTransfer\": False,\n })\nrouter = gcp.compute.Router(\"router\",\n name=\"my-router-router\",\n region=subnetwork.region,\n network=network.self_link,\n bgp={\n \"asn\": 64514,\n })\ninterface_redundant = gcp.compute.RouterInterface(\"interface_redundant\",\n name=\"my-router-intf-red\",\n region=router.region,\n router=router.name,\n subnetwork=subnetwork.self_link,\n private_ip_address=addr_intf_redundant.address)\ninterface = gcp.compute.RouterInterface(\"interface\",\n name=\"my-router-intf\",\n region=router.region,\n router=router.name,\n subnetwork=subnetwork.self_link,\n private_ip_address=addr_intf.address,\n redundant_interface=interface_redundant.name)\npeer = gcp.compute.RouterPeer(\"peer\",\n name=\"my-router-peer\",\n router=router.name,\n region=router.region,\n interface=interface.name,\n router_appliance_instance=instance.self_link,\n peer_asn=65513,\n peer_ip_address=addr_peer.address)\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 = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"my-router-net\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork = new Gcp.Compute.Subnetwork(\"subnetwork\", new()\n {\n Name = \"my-router-sub\",\n Network = network.SelfLink,\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n });\n\n var addrIntf = new Gcp.Compute.Address(\"addr_intf\", new()\n {\n Name = \"my-router-addr-intf\",\n Region = subnetwork.Region,\n Subnetwork = subnetwork.Id,\n AddressType = \"INTERNAL\",\n });\n\n var addrIntfRedundant = new Gcp.Compute.Address(\"addr_intf_redundant\", new()\n {\n Name = \"my-router-addr-intf-red\",\n Region = subnetwork.Region,\n Subnetwork = subnetwork.Id,\n AddressType = \"INTERNAL\",\n });\n\n var addrPeer = new Gcp.Compute.Address(\"addr_peer\", new()\n {\n Name = \"my-router-addr-peer\",\n Region = subnetwork.Region,\n Subnetwork = subnetwork.Id,\n AddressType = \"INTERNAL\",\n });\n\n var instance = new Gcp.Compute.Instance(\"instance\", new()\n {\n Name = \"router-appliance\",\n Zone = \"us-central1-a\",\n MachineType = \"e2-medium\",\n CanIpForward = true,\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 NetworkIp = addrPeer.IPAddress,\n Subnetwork = subnetwork.SelfLink,\n },\n },\n });\n\n var hub = new Gcp.NetworkConnectivity.Hub(\"hub\", new()\n {\n Name = \"my-router-hub\",\n });\n\n var spoke = new Gcp.NetworkConnectivity.Spoke(\"spoke\", new()\n {\n Name = \"my-router-spoke\",\n Location = subnetwork.Region,\n Hub = hub.Id,\n LinkedRouterApplianceInstances = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedRouterApplianceInstancesArgs\n {\n Instances = new[]\n {\n new Gcp.NetworkConnectivity.Inputs.SpokeLinkedRouterApplianceInstancesInstanceArgs\n {\n VirtualMachine = instance.SelfLink,\n IpAddress = addrPeer.IPAddress,\n },\n },\n SiteToSiteDataTransfer = false,\n },\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"my-router-router\",\n Region = subnetwork.Region,\n Network = network.SelfLink,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 64514,\n },\n });\n\n var interfaceRedundant = new Gcp.Compute.RouterInterface(\"interface_redundant\", new()\n {\n Name = \"my-router-intf-red\",\n Region = router.Region,\n Router = router.Name,\n Subnetwork = subnetwork.SelfLink,\n PrivateIpAddress = addrIntfRedundant.IPAddress,\n });\n\n var @interface = new Gcp.Compute.RouterInterface(\"interface\", new()\n {\n Name = \"my-router-intf\",\n Region = router.Region,\n Router = router.Name,\n Subnetwork = subnetwork.SelfLink,\n PrivateIpAddress = addrIntf.IPAddress,\n RedundantInterface = interfaceRedundant.Name,\n });\n\n var peer = new Gcp.Compute.RouterPeer(\"peer\", new()\n {\n Name = \"my-router-peer\",\n Router = router.Name,\n Region = router.Region,\n Interface = @interface.Name,\n RouterApplianceInstance = instance.SelfLink,\n PeerAsn = 65513,\n PeerIpAddress = addrPeer.IPAddress,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\nName: pulumi.String(\"my-router-net\"),\nAutoCreateSubnetworks: pulumi.Bool(false),\n})\nif err != nil {\nreturn err\n}\nsubnetwork, err := compute.NewSubnetwork(ctx, \"subnetwork\", \u0026compute.SubnetworkArgs{\nName: pulumi.String(\"my-router-sub\"),\nNetwork: network.SelfLink,\nIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\nRegion: pulumi.String(\"us-central1\"),\n})\nif err != nil {\nreturn err\n}\naddrIntf, err := compute.NewAddress(ctx, \"addr_intf\", \u0026compute.AddressArgs{\nName: pulumi.String(\"my-router-addr-intf\"),\nRegion: subnetwork.Region,\nSubnetwork: subnetwork.ID(),\nAddressType: pulumi.String(\"INTERNAL\"),\n})\nif err != nil {\nreturn err\n}\naddrIntfRedundant, err := compute.NewAddress(ctx, \"addr_intf_redundant\", \u0026compute.AddressArgs{\nName: pulumi.String(\"my-router-addr-intf-red\"),\nRegion: subnetwork.Region,\nSubnetwork: subnetwork.ID(),\nAddressType: pulumi.String(\"INTERNAL\"),\n})\nif err != nil {\nreturn err\n}\naddrPeer, err := compute.NewAddress(ctx, \"addr_peer\", \u0026compute.AddressArgs{\nName: pulumi.String(\"my-router-addr-peer\"),\nRegion: subnetwork.Region,\nSubnetwork: subnetwork.ID(),\nAddressType: pulumi.String(\"INTERNAL\"),\n})\nif err != nil {\nreturn err\n}\ninstance, err := compute.NewInstance(ctx, \"instance\", \u0026compute.InstanceArgs{\nName: pulumi.String(\"router-appliance\"),\nZone: pulumi.String(\"us-central1-a\"),\nMachineType: pulumi.String(\"e2-medium\"),\nCanIpForward: pulumi.Bool(true),\nBootDisk: \u0026compute.InstanceBootDiskArgs{\nInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\nImage: pulumi.String(\"debian-cloud/debian-11\"),\n},\n},\nNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\u0026compute.InstanceNetworkInterfaceArgs{\nNetworkIp: addrPeer.Address,\nSubnetwork: subnetwork.SelfLink,\n},\n},\n})\nif err != nil {\nreturn err\n}\nhub, err := networkconnectivity.NewHub(ctx, \"hub\", \u0026networkconnectivity.HubArgs{\nName: pulumi.String(\"my-router-hub\"),\n})\nif err != nil {\nreturn err\n}\n_, err = networkconnectivity.NewSpoke(ctx, \"spoke\", \u0026networkconnectivity.SpokeArgs{\nName: pulumi.String(\"my-router-spoke\"),\nLocation: subnetwork.Region,\nHub: hub.ID(),\nLinkedRouterApplianceInstances: \u0026networkconnectivity.SpokeLinkedRouterApplianceInstancesArgs{\nInstances: networkconnectivity.SpokeLinkedRouterApplianceInstancesInstanceArray{\n\u0026networkconnectivity.SpokeLinkedRouterApplianceInstancesInstanceArgs{\nVirtualMachine: instance.SelfLink,\nIpAddress: addrPeer.Address,\n},\n},\nSiteToSiteDataTransfer: pulumi.Bool(false),\n},\n})\nif err != nil {\nreturn err\n}\nrouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\nName: pulumi.String(\"my-router-router\"),\nRegion: subnetwork.Region,\nNetwork: network.SelfLink,\nBgp: \u0026compute.RouterBgpArgs{\nAsn: pulumi.Int(64514),\n},\n})\nif err != nil {\nreturn err\n}\ninterfaceRedundant, err := compute.NewRouterInterface(ctx, \"interface_redundant\", \u0026compute.RouterInterfaceArgs{\nName: pulumi.String(\"my-router-intf-red\"),\nRegion: router.Region,\nRouter: router.Name,\nSubnetwork: subnetwork.SelfLink,\nPrivateIpAddress: addrIntfRedundant.Address,\n})\nif err != nil {\nreturn err\n}\ninterface, err := compute.NewRouterInterface(ctx, \"interface\", \u0026compute.RouterInterfaceArgs{\nName: pulumi.String(\"my-router-intf\"),\nRegion: router.Region,\nRouter: router.Name,\nSubnetwork: subnetwork.SelfLink,\nPrivateIpAddress: addrIntf.Address,\nRedundantInterface: interfaceRedundant.Name,\n})\nif err != nil {\nreturn err\n}\n_, err = compute.NewRouterPeer(ctx, \"peer\", \u0026compute.RouterPeerArgs{\nName: pulumi.String(\"my-router-peer\"),\nRouter: router.Name,\nRegion: router.Region,\nInterface: interface.Name,\nRouterApplianceInstance: instance.SelfLink,\nPeerAsn: pulumi.Int(65513),\nPeerIpAddress: addrPeer.Address,\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\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.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.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedRouterApplianceInstancesArgs;\nimport com.pulumi.gcp.compute.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\nimport com.pulumi.gcp.compute.RouterInterface;\nimport com.pulumi.gcp.compute.RouterInterfaceArgs;\nimport com.pulumi.gcp.compute.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\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 = new Network(\"network\", NetworkArgs.builder()\n .name(\"my-router-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork = new Subnetwork(\"subnetwork\", SubnetworkArgs.builder()\n .name(\"my-router-sub\")\n .network(network.selfLink())\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .build());\n\n var addrIntf = new Address(\"addrIntf\", AddressArgs.builder()\n .name(\"my-router-addr-intf\")\n .region(subnetwork.region())\n .subnetwork(subnetwork.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var addrIntfRedundant = new Address(\"addrIntfRedundant\", AddressArgs.builder()\n .name(\"my-router-addr-intf-red\")\n .region(subnetwork.region())\n .subnetwork(subnetwork.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var addrPeer = new Address(\"addrPeer\", AddressArgs.builder()\n .name(\"my-router-addr-peer\")\n .region(subnetwork.region())\n .subnetwork(subnetwork.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .name(\"router-appliance\")\n .zone(\"us-central1-a\")\n .machineType(\"e2-medium\")\n .canIpForward(true)\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .networkIp(addrPeer.address())\n .subnetwork(subnetwork.selfLink())\n .build())\n .build());\n\n var hub = new Hub(\"hub\", HubArgs.builder()\n .name(\"my-router-hub\")\n .build());\n\n var spoke = new Spoke(\"spoke\", SpokeArgs.builder()\n .name(\"my-router-spoke\")\n .location(subnetwork.region())\n .hub(hub.id())\n .linkedRouterApplianceInstances(SpokeLinkedRouterApplianceInstancesArgs.builder()\n .instances(SpokeLinkedRouterApplianceInstancesInstanceArgs.builder()\n .virtualMachine(instance.selfLink())\n .ipAddress(addrPeer.address())\n .build())\n .siteToSiteDataTransfer(false)\n .build())\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"my-router-router\")\n .region(subnetwork.region())\n .network(network.selfLink())\n .bgp(RouterBgpArgs.builder()\n .asn(64514)\n .build())\n .build());\n\n var interfaceRedundant = new RouterInterface(\"interfaceRedundant\", RouterInterfaceArgs.builder()\n .name(\"my-router-intf-red\")\n .region(router.region())\n .router(router.name())\n .subnetwork(subnetwork.selfLink())\n .privateIpAddress(addrIntfRedundant.address())\n .build());\n\n var interface_ = new RouterInterface(\"interface\", RouterInterfaceArgs.builder()\n .name(\"my-router-intf\")\n .region(router.region())\n .router(router.name())\n .subnetwork(subnetwork.selfLink())\n .privateIpAddress(addrIntf.address())\n .redundantInterface(interfaceRedundant.name())\n .build());\n\n var peer = new RouterPeer(\"peer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(router.name())\n .region(router.region())\n .interface_(interface_.name())\n .routerApplianceInstance(instance.selfLink())\n .peerAsn(65513)\n .peerIpAddress(addrPeer.address())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: my-router-net\n autoCreateSubnetworks: false\n subnetwork:\n type: gcp:compute:Subnetwork\n properties:\n name: my-router-sub\n network: ${network.selfLink}\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n addrIntf:\n type: gcp:compute:Address\n name: addr_intf\n properties:\n name: my-router-addr-intf\n region: ${subnetwork.region}\n subnetwork: ${subnetwork.id}\n addressType: INTERNAL\n addrIntfRedundant:\n type: gcp:compute:Address\n name: addr_intf_redundant\n properties:\n name: my-router-addr-intf-red\n region: ${subnetwork.region}\n subnetwork: ${subnetwork.id}\n addressType: INTERNAL\n addrPeer:\n type: gcp:compute:Address\n name: addr_peer\n properties:\n name: my-router-addr-peer\n region: ${subnetwork.region}\n subnetwork: ${subnetwork.id}\n addressType: INTERNAL\n instance:\n type: gcp:compute:Instance\n properties:\n name: router-appliance\n zone: us-central1-a\n machineType: e2-medium\n canIpForward: true\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - networkIp: ${addrPeer.address}\n subnetwork: ${subnetwork.selfLink}\n hub:\n type: gcp:networkconnectivity:Hub\n properties:\n name: my-router-hub\n spoke:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: my-router-spoke\n location: ${subnetwork.region}\n hub: ${hub.id}\n linkedRouterApplianceInstances:\n instances:\n - virtualMachine: ${instance.selfLink}\n ipAddress: ${addrPeer.address}\n siteToSiteDataTransfer: false\n router:\n type: gcp:compute:Router\n properties:\n name: my-router-router\n region: ${subnetwork.region}\n network: ${network.selfLink}\n bgp:\n asn: 64514\n interfaceRedundant:\n type: gcp:compute:RouterInterface\n name: interface_redundant\n properties:\n name: my-router-intf-red\n region: ${router.region}\n router: ${router.name}\n subnetwork: ${subnetwork.selfLink}\n privateIpAddress: ${addrIntfRedundant.address}\n interface:\n type: gcp:compute:RouterInterface\n properties:\n name: my-router-intf\n region: ${router.region}\n router: ${router.name}\n subnetwork: ${subnetwork.selfLink}\n privateIpAddress: ${addrIntf.address}\n redundantInterface: ${interfaceRedundant.name}\n peer:\n type: gcp:compute:RouterPeer\n properties:\n name: my-router-peer\n router: ${router.name}\n region: ${router.region}\n interface: ${interface.name}\n routerApplianceInstance: ${instance.selfLink}\n peerAsn: 65513\n peerIpAddress: ${addrPeer.address}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Router Peer Md5 Authentication Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst foobar = new gcp.compute.RouterPeer(\"foobar\", {\n name: \"%s-peer\",\n router: foobarGoogleComputeRouter.name,\n region: foobarGoogleComputeRouter.region,\n peerAsn: 65515,\n advertisedRoutePriority: 100,\n \"interface\": foobarGoogleComputeRouterInterface.name,\n peerIpAddress: \"169.254.3.2\",\n md5AuthenticationKey: {\n name: \"%s-peer-key\",\n key: \"%s-peer-key-value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfoobar = gcp.compute.RouterPeer(\"foobar\",\n name=\"%s-peer\",\n router=foobar_google_compute_router[\"name\"],\n region=foobar_google_compute_router[\"region\"],\n peer_asn=65515,\n advertised_route_priority=100,\n interface=foobar_google_compute_router_interface[\"name\"],\n peer_ip_address=\"169.254.3.2\",\n md5_authentication_key={\n \"name\": \"%s-peer-key\",\n \"key\": \"%s-peer-key-value\",\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 foobar = new Gcp.Compute.RouterPeer(\"foobar\", new()\n {\n Name = \"%s-peer\",\n Router = foobarGoogleComputeRouter.Name,\n Region = foobarGoogleComputeRouter.Region,\n PeerAsn = 65515,\n AdvertisedRoutePriority = 100,\n Interface = foobarGoogleComputeRouterInterface.Name,\n PeerIpAddress = \"169.254.3.2\",\n Md5AuthenticationKey = new Gcp.Compute.Inputs.RouterPeerMd5AuthenticationKeyArgs\n {\n Name = \"%s-peer-key\",\n Key = \"%s-peer-key-value\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRouterPeer(ctx, \"foobar\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"%s-peer\"),\n\t\t\tRouter: pulumi.Any(foobarGoogleComputeRouter.Name),\n\t\t\tRegion: pulumi.Any(foobarGoogleComputeRouter.Region),\n\t\t\tPeerAsn: pulumi.Int(65515),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: pulumi.Any(foobarGoogleComputeRouterInterface.Name),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.3.2\"),\n\t\t\tMd5AuthenticationKey: \u0026compute.RouterPeerMd5AuthenticationKeyArgs{\n\t\t\t\tName: pulumi.String(\"%s-peer-key\"),\n\t\t\t\tKey: pulumi.String(\"%s-peer-key-value\"),\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.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport com.pulumi.gcp.compute.inputs.RouterPeerMd5AuthenticationKeyArgs;\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 foobar = new RouterPeer(\"foobar\", RouterPeerArgs.builder()\n .name(\"%s-peer\")\n .router(foobarGoogleComputeRouter.name())\n .region(foobarGoogleComputeRouter.region())\n .peerAsn(65515)\n .advertisedRoutePriority(100)\n .interface_(foobarGoogleComputeRouterInterface.name())\n .peerIpAddress(\"169.254.3.2\")\n .md5AuthenticationKey(RouterPeerMd5AuthenticationKeyArgs.builder()\n .name(\"%s-peer-key\")\n .key(\"%s-peer-key-value\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:RouterPeer\n properties:\n name: '%s-peer'\n router: ${foobarGoogleComputeRouter.name}\n region: ${foobarGoogleComputeRouter.region}\n peerAsn: 65515\n advertisedRoutePriority: 100\n interface: ${foobarGoogleComputeRouterInterface.name}\n peerIpAddress: 169.254.3.2\n md5AuthenticationKey:\n name: '%s-peer-key'\n key: '%s-peer-key-value'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRouterBgpPeer can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/routers/{{router}}/{{name}}`\n\n* `{{project}}/{{region}}/{{router}}/{{name}}`\n\n* `{{region}}/{{router}}/{{name}}`\n\n* `{{router}}/{{name}}`\n\nWhen using the `pulumi import` command, RouterBgpPeer can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/routerPeer:RouterPeer default projects/{{project}}/regions/{{region}}/routers/{{router}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/routerPeer:RouterPeer default {{project}}/{{region}}/{{router}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/routerPeer:RouterPeer default {{region}}/{{router}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/routerPeer:RouterPeer default {{router}}/{{name}}\n```\n\n", + "description": "BGP information that must be configured into the routing stack to\nestablish BGP peering. This information must specify the peer ASN\nand either the interface name, IP address, or peer IP address.\nPlease refer to RFC4273.\n\n\nTo get more information about RouterBgpPeer, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/routers)\n* How-to Guides\n * [Google Cloud Router](https://cloud.google.com/router/docs/)\n\n## Example Usage\n\n### Router Peer Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst peer = new gcp.compute.RouterPeer(\"peer\", {\n name: \"my-router-peer\",\n router: \"my-router\",\n region: \"us-central1\",\n peerAsn: 65513,\n advertisedRoutePriority: 100,\n \"interface\": \"interface-1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npeer = gcp.compute.RouterPeer(\"peer\",\n name=\"my-router-peer\",\n router=\"my-router\",\n region=\"us-central1\",\n peer_asn=65513,\n advertised_route_priority=100,\n interface=\"interface-1\")\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 peer = new Gcp.Compute.RouterPeer(\"peer\", new()\n {\n Name = \"my-router-peer\",\n Router = \"my-router\",\n Region = \"us-central1\",\n PeerAsn = 65513,\n AdvertisedRoutePriority = 100,\n Interface = \"interface-1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRouterPeer(ctx, \"peer\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"my-router-peer\"),\n\t\t\tRouter: pulumi.String(\"my-router\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerAsn: pulumi.Int(65513),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: pulumi.String(\"interface-1\"),\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.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\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 peer = new RouterPeer(\"peer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(\"my-router\")\n .region(\"us-central1\")\n .peerAsn(65513)\n .advertisedRoutePriority(100)\n .interface_(\"interface-1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peer:\n type: gcp:compute:RouterPeer\n properties:\n name: my-router-peer\n router: my-router\n region: us-central1\n peerAsn: 65513\n advertisedRoutePriority: 100\n interface: interface-1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Peer Disabled\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst peer = new gcp.compute.RouterPeer(\"peer\", {\n name: \"my-router-peer\",\n router: \"my-router\",\n region: \"us-central1\",\n peerIpAddress: \"169.254.1.2\",\n peerAsn: 65513,\n advertisedRoutePriority: 100,\n \"interface\": \"interface-1\",\n enable: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npeer = gcp.compute.RouterPeer(\"peer\",\n name=\"my-router-peer\",\n router=\"my-router\",\n region=\"us-central1\",\n peer_ip_address=\"169.254.1.2\",\n peer_asn=65513,\n advertised_route_priority=100,\n interface=\"interface-1\",\n enable=False)\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 peer = new Gcp.Compute.RouterPeer(\"peer\", new()\n {\n Name = \"my-router-peer\",\n Router = \"my-router\",\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.1.2\",\n PeerAsn = 65513,\n AdvertisedRoutePriority = 100,\n Interface = \"interface-1\",\n Enable = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRouterPeer(ctx, \"peer\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"my-router-peer\"),\n\t\t\tRouter: pulumi.String(\"my-router\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.1.2\"),\n\t\t\tPeerAsn: pulumi.Int(65513),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: pulumi.String(\"interface-1\"),\n\t\t\tEnable: pulumi.Bool(false),\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.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\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 peer = new RouterPeer(\"peer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(\"my-router\")\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.1.2\")\n .peerAsn(65513)\n .advertisedRoutePriority(100)\n .interface_(\"interface-1\")\n .enable(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peer:\n type: gcp:compute:RouterPeer\n properties:\n name: my-router-peer\n router: my-router\n region: us-central1\n peerIpAddress: 169.254.1.2\n peerAsn: 65513\n advertisedRoutePriority: 100\n interface: interface-1\n enable: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Peer Bfd\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst peer = new gcp.compute.RouterPeer(\"peer\", {\n name: \"my-router-peer\",\n router: \"my-router\",\n region: \"us-central1\",\n peerIpAddress: \"169.254.1.2\",\n peerAsn: 65513,\n advertisedRoutePriority: 100,\n \"interface\": \"interface-1\",\n bfd: {\n minReceiveInterval: 1000,\n minTransmitInterval: 1000,\n multiplier: 5,\n sessionInitializationMode: \"ACTIVE\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npeer = gcp.compute.RouterPeer(\"peer\",\n name=\"my-router-peer\",\n router=\"my-router\",\n region=\"us-central1\",\n peer_ip_address=\"169.254.1.2\",\n peer_asn=65513,\n advertised_route_priority=100,\n interface=\"interface-1\",\n bfd={\n \"min_receive_interval\": 1000,\n \"min_transmit_interval\": 1000,\n \"multiplier\": 5,\n \"session_initialization_mode\": \"ACTIVE\",\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 peer = new Gcp.Compute.RouterPeer(\"peer\", new()\n {\n Name = \"my-router-peer\",\n Router = \"my-router\",\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.1.2\",\n PeerAsn = 65513,\n AdvertisedRoutePriority = 100,\n Interface = \"interface-1\",\n Bfd = new Gcp.Compute.Inputs.RouterPeerBfdArgs\n {\n MinReceiveInterval = 1000,\n MinTransmitInterval = 1000,\n Multiplier = 5,\n SessionInitializationMode = \"ACTIVE\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRouterPeer(ctx, \"peer\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"my-router-peer\"),\n\t\t\tRouter: pulumi.String(\"my-router\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.1.2\"),\n\t\t\tPeerAsn: pulumi.Int(65513),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: pulumi.String(\"interface-1\"),\n\t\t\tBfd: \u0026compute.RouterPeerBfdArgs{\n\t\t\t\tMinReceiveInterval: pulumi.Int(1000),\n\t\t\t\tMinTransmitInterval: pulumi.Int(1000),\n\t\t\t\tMultiplier: pulumi.Int(5),\n\t\t\t\tSessionInitializationMode: pulumi.String(\"ACTIVE\"),\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.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport com.pulumi.gcp.compute.inputs.RouterPeerBfdArgs;\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 peer = new RouterPeer(\"peer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(\"my-router\")\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.1.2\")\n .peerAsn(65513)\n .advertisedRoutePriority(100)\n .interface_(\"interface-1\")\n .bfd(RouterPeerBfdArgs.builder()\n .minReceiveInterval(1000)\n .minTransmitInterval(1000)\n .multiplier(5)\n .sessionInitializationMode(\"ACTIVE\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peer:\n type: gcp:compute:RouterPeer\n properties:\n name: my-router-peer\n router: my-router\n region: us-central1\n peerIpAddress: 169.254.1.2\n peerAsn: 65513\n advertisedRoutePriority: 100\n interface: interface-1\n bfd:\n minReceiveInterval: 1000\n minTransmitInterval: 1000\n multiplier: 5\n sessionInitializationMode: ACTIVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Peer Router Appliance\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"my-router-net\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork = new gcp.compute.Subnetwork(\"subnetwork\", {\n name: \"my-router-sub\",\n network: network.selfLink,\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n});\nconst addrIntf = new gcp.compute.Address(\"addr_intf\", {\n name: \"my-router-addr-intf\",\n region: subnetwork.region,\n subnetwork: subnetwork.id,\n addressType: \"INTERNAL\",\n});\nconst addrIntfRedundant = new gcp.compute.Address(\"addr_intf_redundant\", {\n name: \"my-router-addr-intf-red\",\n region: subnetwork.region,\n subnetwork: subnetwork.id,\n addressType: \"INTERNAL\",\n});\nconst addrPeer = new gcp.compute.Address(\"addr_peer\", {\n name: \"my-router-addr-peer\",\n region: subnetwork.region,\n subnetwork: subnetwork.id,\n addressType: \"INTERNAL\",\n});\nconst instance = new gcp.compute.Instance(\"instance\", {\n name: \"router-appliance\",\n zone: \"us-central1-a\",\n machineType: \"e2-medium\",\n canIpForward: true,\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [{\n networkIp: addrPeer.address,\n subnetwork: subnetwork.selfLink,\n }],\n});\nconst hub = new gcp.networkconnectivity.Hub(\"hub\", {name: \"my-router-hub\"});\nconst spoke = new gcp.networkconnectivity.Spoke(\"spoke\", {\n name: \"my-router-spoke\",\n location: subnetwork.region,\n hub: hub.id,\n linkedRouterApplianceInstances: {\n instances: [{\n virtualMachine: instance.selfLink,\n ipAddress: addrPeer.address,\n }],\n siteToSiteDataTransfer: false,\n },\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"my-router-router\",\n region: subnetwork.region,\n network: network.selfLink,\n bgp: {\n asn: 64514,\n },\n});\nconst interfaceRedundant = new gcp.compute.RouterInterface(\"interface_redundant\", {\n name: \"my-router-intf-red\",\n region: router.region,\n router: router.name,\n subnetwork: subnetwork.selfLink,\n privateIpAddress: addrIntfRedundant.address,\n});\nconst _interface = new gcp.compute.RouterInterface(\"interface\", {\n name: \"my-router-intf\",\n region: router.region,\n router: router.name,\n subnetwork: subnetwork.selfLink,\n privateIpAddress: addrIntf.address,\n redundantInterface: interfaceRedundant.name,\n});\nconst peer = new gcp.compute.RouterPeer(\"peer\", {\n name: \"my-router-peer\",\n router: router.name,\n region: router.region,\n \"interface\": _interface.name,\n routerApplianceInstance: instance.selfLink,\n peerAsn: 65513,\n peerIpAddress: addrPeer.address,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"my-router-net\",\n auto_create_subnetworks=False)\nsubnetwork = gcp.compute.Subnetwork(\"subnetwork\",\n name=\"my-router-sub\",\n network=network.self_link,\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\")\naddr_intf = gcp.compute.Address(\"addr_intf\",\n name=\"my-router-addr-intf\",\n region=subnetwork.region,\n subnetwork=subnetwork.id,\n address_type=\"INTERNAL\")\naddr_intf_redundant = gcp.compute.Address(\"addr_intf_redundant\",\n name=\"my-router-addr-intf-red\",\n region=subnetwork.region,\n subnetwork=subnetwork.id,\n address_type=\"INTERNAL\")\naddr_peer = gcp.compute.Address(\"addr_peer\",\n name=\"my-router-addr-peer\",\n region=subnetwork.region,\n subnetwork=subnetwork.id,\n address_type=\"INTERNAL\")\ninstance = gcp.compute.Instance(\"instance\",\n name=\"router-appliance\",\n zone=\"us-central1-a\",\n machine_type=\"e2-medium\",\n can_ip_forward=True,\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n network_interfaces=[{\n \"network_ip\": addr_peer.address,\n \"subnetwork\": subnetwork.self_link,\n }])\nhub = gcp.networkconnectivity.Hub(\"hub\", name=\"my-router-hub\")\nspoke = gcp.networkconnectivity.Spoke(\"spoke\",\n name=\"my-router-spoke\",\n location=subnetwork.region,\n hub=hub.id,\n linked_router_appliance_instances={\n \"instances\": [{\n \"virtual_machine\": instance.self_link,\n \"ip_address\": addr_peer.address,\n }],\n \"site_to_site_data_transfer\": False,\n })\nrouter = gcp.compute.Router(\"router\",\n name=\"my-router-router\",\n region=subnetwork.region,\n network=network.self_link,\n bgp={\n \"asn\": 64514,\n })\ninterface_redundant = gcp.compute.RouterInterface(\"interface_redundant\",\n name=\"my-router-intf-red\",\n region=router.region,\n router=router.name,\n subnetwork=subnetwork.self_link,\n private_ip_address=addr_intf_redundant.address)\ninterface = gcp.compute.RouterInterface(\"interface\",\n name=\"my-router-intf\",\n region=router.region,\n router=router.name,\n subnetwork=subnetwork.self_link,\n private_ip_address=addr_intf.address,\n redundant_interface=interface_redundant.name)\npeer = gcp.compute.RouterPeer(\"peer\",\n name=\"my-router-peer\",\n router=router.name,\n region=router.region,\n interface=interface.name,\n router_appliance_instance=instance.self_link,\n peer_asn=65513,\n peer_ip_address=addr_peer.address)\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 = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"my-router-net\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork = new Gcp.Compute.Subnetwork(\"subnetwork\", new()\n {\n Name = \"my-router-sub\",\n Network = network.SelfLink,\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n });\n\n var addrIntf = new Gcp.Compute.Address(\"addr_intf\", new()\n {\n Name = \"my-router-addr-intf\",\n Region = subnetwork.Region,\n Subnetwork = subnetwork.Id,\n AddressType = \"INTERNAL\",\n });\n\n var addrIntfRedundant = new Gcp.Compute.Address(\"addr_intf_redundant\", new()\n {\n Name = \"my-router-addr-intf-red\",\n Region = subnetwork.Region,\n Subnetwork = subnetwork.Id,\n AddressType = \"INTERNAL\",\n });\n\n var addrPeer = new Gcp.Compute.Address(\"addr_peer\", new()\n {\n Name = \"my-router-addr-peer\",\n Region = subnetwork.Region,\n Subnetwork = subnetwork.Id,\n AddressType = \"INTERNAL\",\n });\n\n var instance = new Gcp.Compute.Instance(\"instance\", new()\n {\n Name = \"router-appliance\",\n Zone = \"us-central1-a\",\n MachineType = \"e2-medium\",\n CanIpForward = true,\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 NetworkIp = addrPeer.IPAddress,\n Subnetwork = subnetwork.SelfLink,\n },\n },\n });\n\n var hub = new Gcp.NetworkConnectivity.Hub(\"hub\", new()\n {\n Name = \"my-router-hub\",\n });\n\n var spoke = new Gcp.NetworkConnectivity.Spoke(\"spoke\", new()\n {\n Name = \"my-router-spoke\",\n Location = subnetwork.Region,\n Hub = hub.Id,\n LinkedRouterApplianceInstances = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedRouterApplianceInstancesArgs\n {\n Instances = new[]\n {\n new Gcp.NetworkConnectivity.Inputs.SpokeLinkedRouterApplianceInstancesInstanceArgs\n {\n VirtualMachine = instance.SelfLink,\n IpAddress = addrPeer.IPAddress,\n },\n },\n SiteToSiteDataTransfer = false,\n },\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"my-router-router\",\n Region = subnetwork.Region,\n Network = network.SelfLink,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 64514,\n },\n });\n\n var interfaceRedundant = new Gcp.Compute.RouterInterface(\"interface_redundant\", new()\n {\n Name = \"my-router-intf-red\",\n Region = router.Region,\n Router = router.Name,\n Subnetwork = subnetwork.SelfLink,\n PrivateIpAddress = addrIntfRedundant.IPAddress,\n });\n\n var @interface = new Gcp.Compute.RouterInterface(\"interface\", new()\n {\n Name = \"my-router-intf\",\n Region = router.Region,\n Router = router.Name,\n Subnetwork = subnetwork.SelfLink,\n PrivateIpAddress = addrIntf.IPAddress,\n RedundantInterface = interfaceRedundant.Name,\n });\n\n var peer = new Gcp.Compute.RouterPeer(\"peer\", new()\n {\n Name = \"my-router-peer\",\n Router = router.Name,\n Region = router.Region,\n Interface = @interface.Name,\n RouterApplianceInstance = instance.SelfLink,\n PeerAsn = 65513,\n PeerIpAddress = addrPeer.IPAddress,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\nName: pulumi.String(\"my-router-net\"),\nAutoCreateSubnetworks: pulumi.Bool(false),\n})\nif err != nil {\nreturn err\n}\nsubnetwork, err := compute.NewSubnetwork(ctx, \"subnetwork\", \u0026compute.SubnetworkArgs{\nName: pulumi.String(\"my-router-sub\"),\nNetwork: network.SelfLink,\nIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\nRegion: pulumi.String(\"us-central1\"),\n})\nif err != nil {\nreturn err\n}\naddrIntf, err := compute.NewAddress(ctx, \"addr_intf\", \u0026compute.AddressArgs{\nName: pulumi.String(\"my-router-addr-intf\"),\nRegion: subnetwork.Region,\nSubnetwork: subnetwork.ID(),\nAddressType: pulumi.String(\"INTERNAL\"),\n})\nif err != nil {\nreturn err\n}\naddrIntfRedundant, err := compute.NewAddress(ctx, \"addr_intf_redundant\", \u0026compute.AddressArgs{\nName: pulumi.String(\"my-router-addr-intf-red\"),\nRegion: subnetwork.Region,\nSubnetwork: subnetwork.ID(),\nAddressType: pulumi.String(\"INTERNAL\"),\n})\nif err != nil {\nreturn err\n}\naddrPeer, err := compute.NewAddress(ctx, \"addr_peer\", \u0026compute.AddressArgs{\nName: pulumi.String(\"my-router-addr-peer\"),\nRegion: subnetwork.Region,\nSubnetwork: subnetwork.ID(),\nAddressType: pulumi.String(\"INTERNAL\"),\n})\nif err != nil {\nreturn err\n}\ninstance, err := compute.NewInstance(ctx, \"instance\", \u0026compute.InstanceArgs{\nName: pulumi.String(\"router-appliance\"),\nZone: pulumi.String(\"us-central1-a\"),\nMachineType: pulumi.String(\"e2-medium\"),\nCanIpForward: pulumi.Bool(true),\nBootDisk: \u0026compute.InstanceBootDiskArgs{\nInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\nImage: pulumi.String(\"debian-cloud/debian-11\"),\n},\n},\nNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\u0026compute.InstanceNetworkInterfaceArgs{\nNetworkIp: addrPeer.Address,\nSubnetwork: subnetwork.SelfLink,\n},\n},\n})\nif err != nil {\nreturn err\n}\nhub, err := networkconnectivity.NewHub(ctx, \"hub\", \u0026networkconnectivity.HubArgs{\nName: pulumi.String(\"my-router-hub\"),\n})\nif err != nil {\nreturn err\n}\n_, err = networkconnectivity.NewSpoke(ctx, \"spoke\", \u0026networkconnectivity.SpokeArgs{\nName: pulumi.String(\"my-router-spoke\"),\nLocation: subnetwork.Region,\nHub: hub.ID(),\nLinkedRouterApplianceInstances: \u0026networkconnectivity.SpokeLinkedRouterApplianceInstancesArgs{\nInstances: networkconnectivity.SpokeLinkedRouterApplianceInstancesInstanceArray{\n\u0026networkconnectivity.SpokeLinkedRouterApplianceInstancesInstanceArgs{\nVirtualMachine: instance.SelfLink,\nIpAddress: addrPeer.Address,\n},\n},\nSiteToSiteDataTransfer: pulumi.Bool(false),\n},\n})\nif err != nil {\nreturn err\n}\nrouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\nName: pulumi.String(\"my-router-router\"),\nRegion: subnetwork.Region,\nNetwork: network.SelfLink,\nBgp: \u0026compute.RouterBgpArgs{\nAsn: pulumi.Int(64514),\n},\n})\nif err != nil {\nreturn err\n}\ninterfaceRedundant, err := compute.NewRouterInterface(ctx, \"interface_redundant\", \u0026compute.RouterInterfaceArgs{\nName: pulumi.String(\"my-router-intf-red\"),\nRegion: router.Region,\nRouter: router.Name,\nSubnetwork: subnetwork.SelfLink,\nPrivateIpAddress: addrIntfRedundant.Address,\n})\nif err != nil {\nreturn err\n}\ninterface, err := compute.NewRouterInterface(ctx, \"interface\", \u0026compute.RouterInterfaceArgs{\nName: pulumi.String(\"my-router-intf\"),\nRegion: router.Region,\nRouter: router.Name,\nSubnetwork: subnetwork.SelfLink,\nPrivateIpAddress: addrIntf.Address,\nRedundantInterface: interfaceRedundant.Name,\n})\nif err != nil {\nreturn err\n}\n_, err = compute.NewRouterPeer(ctx, \"peer\", \u0026compute.RouterPeerArgs{\nName: pulumi.String(\"my-router-peer\"),\nRouter: router.Name,\nRegion: router.Region,\nInterface: interface.Name,\nRouterApplianceInstance: instance.SelfLink,\nPeerAsn: pulumi.Int(65513),\nPeerIpAddress: addrPeer.Address,\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\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.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.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedRouterApplianceInstancesArgs;\nimport com.pulumi.gcp.compute.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\nimport com.pulumi.gcp.compute.RouterInterface;\nimport com.pulumi.gcp.compute.RouterInterfaceArgs;\nimport com.pulumi.gcp.compute.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\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 = new Network(\"network\", NetworkArgs.builder()\n .name(\"my-router-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork = new Subnetwork(\"subnetwork\", SubnetworkArgs.builder()\n .name(\"my-router-sub\")\n .network(network.selfLink())\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .build());\n\n var addrIntf = new Address(\"addrIntf\", AddressArgs.builder()\n .name(\"my-router-addr-intf\")\n .region(subnetwork.region())\n .subnetwork(subnetwork.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var addrIntfRedundant = new Address(\"addrIntfRedundant\", AddressArgs.builder()\n .name(\"my-router-addr-intf-red\")\n .region(subnetwork.region())\n .subnetwork(subnetwork.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var addrPeer = new Address(\"addrPeer\", AddressArgs.builder()\n .name(\"my-router-addr-peer\")\n .region(subnetwork.region())\n .subnetwork(subnetwork.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .name(\"router-appliance\")\n .zone(\"us-central1-a\")\n .machineType(\"e2-medium\")\n .canIpForward(true)\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .networkIp(addrPeer.address())\n .subnetwork(subnetwork.selfLink())\n .build())\n .build());\n\n var hub = new Hub(\"hub\", HubArgs.builder()\n .name(\"my-router-hub\")\n .build());\n\n var spoke = new Spoke(\"spoke\", SpokeArgs.builder()\n .name(\"my-router-spoke\")\n .location(subnetwork.region())\n .hub(hub.id())\n .linkedRouterApplianceInstances(SpokeLinkedRouterApplianceInstancesArgs.builder()\n .instances(SpokeLinkedRouterApplianceInstancesInstanceArgs.builder()\n .virtualMachine(instance.selfLink())\n .ipAddress(addrPeer.address())\n .build())\n .siteToSiteDataTransfer(false)\n .build())\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"my-router-router\")\n .region(subnetwork.region())\n .network(network.selfLink())\n .bgp(RouterBgpArgs.builder()\n .asn(64514)\n .build())\n .build());\n\n var interfaceRedundant = new RouterInterface(\"interfaceRedundant\", RouterInterfaceArgs.builder()\n .name(\"my-router-intf-red\")\n .region(router.region())\n .router(router.name())\n .subnetwork(subnetwork.selfLink())\n .privateIpAddress(addrIntfRedundant.address())\n .build());\n\n var interface_ = new RouterInterface(\"interface\", RouterInterfaceArgs.builder()\n .name(\"my-router-intf\")\n .region(router.region())\n .router(router.name())\n .subnetwork(subnetwork.selfLink())\n .privateIpAddress(addrIntf.address())\n .redundantInterface(interfaceRedundant.name())\n .build());\n\n var peer = new RouterPeer(\"peer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(router.name())\n .region(router.region())\n .interface_(interface_.name())\n .routerApplianceInstance(instance.selfLink())\n .peerAsn(65513)\n .peerIpAddress(addrPeer.address())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: my-router-net\n autoCreateSubnetworks: false\n subnetwork:\n type: gcp:compute:Subnetwork\n properties:\n name: my-router-sub\n network: ${network.selfLink}\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n addrIntf:\n type: gcp:compute:Address\n name: addr_intf\n properties:\n name: my-router-addr-intf\n region: ${subnetwork.region}\n subnetwork: ${subnetwork.id}\n addressType: INTERNAL\n addrIntfRedundant:\n type: gcp:compute:Address\n name: addr_intf_redundant\n properties:\n name: my-router-addr-intf-red\n region: ${subnetwork.region}\n subnetwork: ${subnetwork.id}\n addressType: INTERNAL\n addrPeer:\n type: gcp:compute:Address\n name: addr_peer\n properties:\n name: my-router-addr-peer\n region: ${subnetwork.region}\n subnetwork: ${subnetwork.id}\n addressType: INTERNAL\n instance:\n type: gcp:compute:Instance\n properties:\n name: router-appliance\n zone: us-central1-a\n machineType: e2-medium\n canIpForward: true\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - networkIp: ${addrPeer.address}\n subnetwork: ${subnetwork.selfLink}\n hub:\n type: gcp:networkconnectivity:Hub\n properties:\n name: my-router-hub\n spoke:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: my-router-spoke\n location: ${subnetwork.region}\n hub: ${hub.id}\n linkedRouterApplianceInstances:\n instances:\n - virtualMachine: ${instance.selfLink}\n ipAddress: ${addrPeer.address}\n siteToSiteDataTransfer: false\n router:\n type: gcp:compute:Router\n properties:\n name: my-router-router\n region: ${subnetwork.region}\n network: ${network.selfLink}\n bgp:\n asn: 64514\n interfaceRedundant:\n type: gcp:compute:RouterInterface\n name: interface_redundant\n properties:\n name: my-router-intf-red\n region: ${router.region}\n router: ${router.name}\n subnetwork: ${subnetwork.selfLink}\n privateIpAddress: ${addrIntfRedundant.address}\n interface:\n type: gcp:compute:RouterInterface\n properties:\n name: my-router-intf\n region: ${router.region}\n router: ${router.name}\n subnetwork: ${subnetwork.selfLink}\n privateIpAddress: ${addrIntf.address}\n redundantInterface: ${interfaceRedundant.name}\n peer:\n type: gcp:compute:RouterPeer\n properties:\n name: my-router-peer\n router: ${router.name}\n region: ${router.region}\n interface: ${interface.name}\n routerApplianceInstance: ${instance.selfLink}\n peerAsn: 65513\n peerIpAddress: ${addrPeer.address}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Router Peer Md5 Authentication Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst foobar = new gcp.compute.RouterPeer(\"foobar\", {\n name: \"%s-peer\",\n router: foobarGoogleComputeRouter.name,\n region: foobarGoogleComputeRouter.region,\n peerAsn: 65515,\n advertisedRoutePriority: 100,\n \"interface\": foobarGoogleComputeRouterInterface.name,\n peerIpAddress: \"169.254.3.2\",\n md5AuthenticationKey: {\n name: \"%s-peer-key\",\n key: \"%s-peer-key-value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfoobar = gcp.compute.RouterPeer(\"foobar\",\n name=\"%s-peer\",\n router=foobar_google_compute_router[\"name\"],\n region=foobar_google_compute_router[\"region\"],\n peer_asn=65515,\n advertised_route_priority=100,\n interface=foobar_google_compute_router_interface[\"name\"],\n peer_ip_address=\"169.254.3.2\",\n md5_authentication_key={\n \"name\": \"%s-peer-key\",\n \"key\": \"%s-peer-key-value\",\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 foobar = new Gcp.Compute.RouterPeer(\"foobar\", new()\n {\n Name = \"%s-peer\",\n Router = foobarGoogleComputeRouter.Name,\n Region = foobarGoogleComputeRouter.Region,\n PeerAsn = 65515,\n AdvertisedRoutePriority = 100,\n Interface = foobarGoogleComputeRouterInterface.Name,\n PeerIpAddress = \"169.254.3.2\",\n Md5AuthenticationKey = new Gcp.Compute.Inputs.RouterPeerMd5AuthenticationKeyArgs\n {\n Name = \"%s-peer-key\",\n Key = \"%s-peer-key-value\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewRouterPeer(ctx, \"foobar\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"%s-peer\"),\n\t\t\tRouter: pulumi.Any(foobarGoogleComputeRouter.Name),\n\t\t\tRegion: pulumi.Any(foobarGoogleComputeRouter.Region),\n\t\t\tPeerAsn: pulumi.Int(65515),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: pulumi.Any(foobarGoogleComputeRouterInterface.Name),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.3.2\"),\n\t\t\tMd5AuthenticationKey: \u0026compute.RouterPeerMd5AuthenticationKeyArgs{\n\t\t\t\tName: pulumi.String(\"%s-peer-key\"),\n\t\t\t\tKey: pulumi.String(\"%s-peer-key-value\"),\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.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport com.pulumi.gcp.compute.inputs.RouterPeerMd5AuthenticationKeyArgs;\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 foobar = new RouterPeer(\"foobar\", RouterPeerArgs.builder()\n .name(\"%s-peer\")\n .router(foobarGoogleComputeRouter.name())\n .region(foobarGoogleComputeRouter.region())\n .peerAsn(65515)\n .advertisedRoutePriority(100)\n .interface_(foobarGoogleComputeRouterInterface.name())\n .peerIpAddress(\"169.254.3.2\")\n .md5AuthenticationKey(RouterPeerMd5AuthenticationKeyArgs.builder()\n .name(\"%s-peer-key\")\n .key(\"%s-peer-key-value\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:RouterPeer\n properties:\n name: '%s-peer'\n router: ${foobarGoogleComputeRouter.name}\n region: ${foobarGoogleComputeRouter.region}\n peerAsn: 65515\n advertisedRoutePriority: 100\n interface: ${foobarGoogleComputeRouterInterface.name}\n peerIpAddress: 169.254.3.2\n md5AuthenticationKey:\n name: '%s-peer-key'\n key: '%s-peer-key-value'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRouterBgpPeer can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/routers/{{router}}/{{name}}`\n\n* `{{project}}/{{region}}/{{router}}/{{name}}`\n\n* `{{region}}/{{router}}/{{name}}`\n\n* `{{router}}/{{name}}`\n\nWhen using the `pulumi import` command, RouterBgpPeer can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/routerPeer:RouterPeer default projects/{{project}}/regions/{{region}}/routers/{{router}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/routerPeer:RouterPeer default {{project}}/{{region}}/{{router}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/routerPeer:RouterPeer default {{region}}/{{router}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/routerPeer:RouterPeer default {{router}}/{{name}}\n```\n\n", "properties": { "advertiseMode": { "type": "string", @@ -162572,7 +162572,7 @@ } }, "gcp:compute/securityPolicy:SecurityPolicy": { - "description": "A Security Policy defines an IP blacklist or whitelist that protects load balanced Google Cloud services by denying or permitting traffic from specified IP ranges. For more information\nsee the [official documentation](https://cloud.google.com/armor/docs/configure-security-policies)\nand the [API](https://cloud.google.com/compute/docs/reference/rest/beta/securityPolicies).\n\nSecurity Policy is used by google_compute_backend_service.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst policy = new gcp.compute.SecurityPolicy(\"policy\", {\n name: \"my-policy\",\n rules: [\n {\n action: \"deny(403)\",\n priority: 1000,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"9.9.9.0/24\"],\n },\n },\n description: \"Deny access to IPs in 9.9.9.0/24\",\n },\n {\n action: \"allow\",\n priority: 2147483647,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"*\"],\n },\n },\n description: \"default rule\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npolicy = gcp.compute.SecurityPolicy(\"policy\",\n name=\"my-policy\",\n rules=[\n {\n \"action\": \"deny(403)\",\n \"priority\": 1000,\n \"match\": {\n \"versionedExpr\": \"SRC_IPS_V1\",\n \"config\": {\n \"srcIpRanges\": [\"9.9.9.0/24\"],\n },\n },\n \"description\": \"Deny access to IPs in 9.9.9.0/24\",\n },\n {\n \"action\": \"allow\",\n \"priority\": 2147483647,\n \"match\": {\n \"versionedExpr\": \"SRC_IPS_V1\",\n \"config\": {\n \"srcIpRanges\": [\"*\"],\n },\n },\n \"description\": \"default rule\",\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 policy = new Gcp.Compute.SecurityPolicy(\"policy\", new()\n {\n Name = \"my-policy\",\n Rules = new[]\n {\n new Gcp.Compute.Inputs.SecurityPolicyRuleArgs\n {\n Action = \"deny(403)\",\n Priority = 1000,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"9.9.9.0/24\",\n },\n },\n },\n Description = \"Deny access to IPs in 9.9.9.0/24\",\n },\n new Gcp.Compute.Inputs.SecurityPolicyRuleArgs\n {\n Action = \"allow\",\n Priority = 2147483647,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"*\",\n },\n },\n },\n Description = \"default rule\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewSecurityPolicy(ctx, \"policy\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy\"),\n\t\t\tRules: compute.SecurityPolicyRuleTypeArray{\n\t\t\t\t\u0026compute.SecurityPolicyRuleTypeArgs{\n\t\t\t\t\tAction: pulumi.String(\"deny(403)\"),\n\t\t\t\t\tPriority: pulumi.Int(1000),\n\t\t\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"9.9.9.0/24\"),\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\tDescription: pulumi.String(\"Deny access to IPs in 9.9.9.0/24\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.SecurityPolicyRuleTypeArgs{\n\t\t\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\t\t\tPriority: pulumi.Int(2147483647),\n\t\t\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"*\"),\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\tDescription: pulumi.String(\"default rule\"),\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.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchConfigArgs;\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 policy = new SecurityPolicy(\"policy\", SecurityPolicyArgs.builder()\n .name(\"my-policy\")\n .rules( \n SecurityPolicyRuleArgs.builder()\n .action(\"deny(403)\")\n .priority(\"1000\")\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"9.9.9.0/24\")\n .build())\n .build())\n .description(\"Deny access to IPs in 9.9.9.0/24\")\n .build(),\n SecurityPolicyRuleArgs.builder()\n .action(\"allow\")\n .priority(\"2147483647\")\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"*\")\n .build())\n .build())\n .description(\"default rule\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n policy:\n type: gcp:compute:SecurityPolicy\n properties:\n name: my-policy\n rules:\n - action: deny(403)\n priority: '1000'\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 9.9.9.0/24\n description: Deny access to IPs in 9.9.9.0/24\n - action: allow\n priority: '2147483647'\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - '*'\n description: default rule\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With ReCAPTCHA Configuration Options\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name\",\n labels: {\n \"label-one\": \"value-one\",\n },\n project: \"my-project-name\",\n webSettings: {\n integrationType: \"INVISIBLE\",\n allowAllDomains: true,\n allowedDomains: [\"localhost\"],\n },\n});\nconst policy = new gcp.compute.SecurityPolicy(\"policy\", {\n name: \"my-policy\",\n description: \"basic security policy\",\n type: \"CLOUD_ARMOR\",\n recaptchaOptionsConfig: {\n redirectSiteKey: primary.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name\",\n labels={\n \"label-one\": \"value-one\",\n },\n project=\"my-project-name\",\n web_settings={\n \"integrationType\": \"INVISIBLE\",\n \"allowAllDomains\": True,\n \"allowedDomains\": [\"localhost\"],\n })\npolicy = gcp.compute.SecurityPolicy(\"policy\",\n name=\"my-policy\",\n description=\"basic security policy\",\n type=\"CLOUD_ARMOR\",\n recaptcha_options_config={\n \"redirectSiteKey\": primary.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 primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Project = \"my-project-name\",\n WebSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWebSettingsArgs\n {\n IntegrationType = \"INVISIBLE\",\n AllowAllDomains = true,\n AllowedDomains = new[]\n {\n \"localhost\",\n },\n },\n });\n\n var policy = new Gcp.Compute.SecurityPolicy(\"policy\", new()\n {\n Name = \"my-policy\",\n Description = \"basic security policy\",\n Type = \"CLOUD_ARMOR\",\n RecaptchaOptionsConfig = new Gcp.Compute.Inputs.SecurityPolicyRecaptchaOptionsConfigArgs\n {\n RedirectSiteKey = primary.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/recaptcha\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name\"),\n\t\t\tLabels: 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\tWebSettings: \u0026recaptcha.EnterpriseKeyWebSettingsArgs{\n\t\t\t\tIntegrationType: pulumi.String(\"INVISIBLE\"),\n\t\t\t\tAllowAllDomains: pulumi.Bool(true),\n\t\t\t\tAllowedDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"localhost\"),\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.NewSecurityPolicy(ctx, \"policy\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy\"),\n\t\t\tDescription: pulumi.String(\"basic security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t\tRecaptchaOptionsConfig: \u0026compute.SecurityPolicyRecaptchaOptionsConfigArgs{\n\t\t\t\tRedirectSiteKey: primary.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.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWebSettingsArgs;\nimport com.pulumi.gcp.compute.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRecaptchaOptionsConfigArgs;\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 primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .project(\"my-project-name\")\n .webSettings(EnterpriseKeyWebSettingsArgs.builder()\n .integrationType(\"INVISIBLE\")\n .allowAllDomains(true)\n .allowedDomains(\"localhost\")\n .build())\n .build());\n\n var policy = new SecurityPolicy(\"policy\", SecurityPolicyArgs.builder()\n .name(\"my-policy\")\n .description(\"basic security policy\")\n .type(\"CLOUD_ARMOR\")\n .recaptchaOptionsConfig(SecurityPolicyRecaptchaOptionsConfigArgs.builder()\n .redirectSiteKey(primary.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name\n labels:\n label-one: value-one\n project: my-project-name\n webSettings:\n integrationType: INVISIBLE\n allowAllDomains: true\n allowedDomains:\n - localhost\n policy:\n type: gcp:compute:SecurityPolicy\n properties:\n name: my-policy\n description: basic security policy\n type: CLOUD_ARMOR\n recaptchaOptionsConfig:\n redirectSiteKey: ${primary.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Header Actions\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst policy = new gcp.compute.SecurityPolicy(\"policy\", {\n name: \"my-policy\",\n rules: [\n {\n action: \"allow\",\n priority: 2147483647,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"*\"],\n },\n },\n description: \"default rule\",\n },\n {\n action: \"allow\",\n priority: 1000,\n match: {\n expr: {\n expression: \"request.path.matches(\\\"/login.html\\\") \u0026\u0026 token.recaptcha_session.score \u003c 0.2\",\n },\n },\n headerAction: {\n requestHeadersToAdds: [\n {\n headerName: \"reCAPTCHA-Warning\",\n headerValue: \"high\",\n },\n {\n headerName: \"X-Resource\",\n headerValue: \"test\",\n },\n ],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npolicy = gcp.compute.SecurityPolicy(\"policy\",\n name=\"my-policy\",\n rules=[\n {\n \"action\": \"allow\",\n \"priority\": 2147483647,\n \"match\": {\n \"versionedExpr\": \"SRC_IPS_V1\",\n \"config\": {\n \"srcIpRanges\": [\"*\"],\n },\n },\n \"description\": \"default rule\",\n },\n {\n \"action\": \"allow\",\n \"priority\": 1000,\n \"match\": {\n \"expr\": {\n \"expression\": \"request.path.matches(\\\"/login.html\\\") \u0026\u0026 token.recaptcha_session.score \u003c 0.2\",\n },\n },\n \"headerAction\": {\n \"requestHeadersToAdds\": [\n {\n \"headerName\": \"reCAPTCHA-Warning\",\n \"headerValue\": \"high\",\n },\n {\n \"headerName\": \"X-Resource\",\n \"headerValue\": \"test\",\n },\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 policy = new Gcp.Compute.SecurityPolicy(\"policy\", new()\n {\n Name = \"my-policy\",\n Rules = new[]\n {\n new Gcp.Compute.Inputs.SecurityPolicyRuleArgs\n {\n Action = \"allow\",\n Priority = 2147483647,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"*\",\n },\n },\n },\n Description = \"default rule\",\n },\n new Gcp.Compute.Inputs.SecurityPolicyRuleArgs\n {\n Action = \"allow\",\n Priority = 1000,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n Expr = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchExprArgs\n {\n Expression = \"request.path.matches(\\\"/login.html\\\") \u0026\u0026 token.recaptcha_session.score \u003c 0.2\",\n },\n },\n HeaderAction = new Gcp.Compute.Inputs.SecurityPolicyRuleHeaderActionArgs\n {\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.SecurityPolicyRuleHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"reCAPTCHA-Warning\",\n HeaderValue = \"high\",\n },\n new Gcp.Compute.Inputs.SecurityPolicyRuleHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"X-Resource\",\n HeaderValue = \"test\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewSecurityPolicy(ctx, \"policy\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy\"),\n\t\t\tRules: compute.SecurityPolicyRuleTypeArray{\n\t\t\t\t\u0026compute.SecurityPolicyRuleTypeArgs{\n\t\t\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\t\t\tPriority: pulumi.Int(2147483647),\n\t\t\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"*\"),\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\tDescription: pulumi.String(\"default rule\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.SecurityPolicyRuleTypeArgs{\n\t\t\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\t\t\tPriority: pulumi.Int(1000),\n\t\t\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\t\t\tExpr: \u0026compute.SecurityPolicyRuleMatchExprArgs{\n\t\t\t\t\t\t\tExpression: pulumi.String(\"request.path.matches(\\\"/login.html\\\") \u0026\u0026 token.recaptcha_session.score \u003c 0.2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tHeaderAction: \u0026compute.SecurityPolicyRuleHeaderActionArgs{\n\t\t\t\t\t\tRequestHeadersToAdds: compute.SecurityPolicyRuleHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\u0026compute.SecurityPolicyRuleHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"reCAPTCHA-Warning\"),\n\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"high\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026compute.SecurityPolicyRuleHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"X-Resource\"),\n\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"test\"),\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.compute.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchConfigArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchExprArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleHeaderActionArgs;\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 policy = new SecurityPolicy(\"policy\", SecurityPolicyArgs.builder()\n .name(\"my-policy\")\n .rules( \n SecurityPolicyRuleArgs.builder()\n .action(\"allow\")\n .priority(\"2147483647\")\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"*\")\n .build())\n .build())\n .description(\"default rule\")\n .build(),\n SecurityPolicyRuleArgs.builder()\n .action(\"allow\")\n .priority(\"1000\")\n .match(SecurityPolicyRuleMatchArgs.builder()\n .expr(SecurityPolicyRuleMatchExprArgs.builder()\n .expression(\"request.path.matches(\\\"/login.html\\\") \u0026\u0026 token.recaptcha_session.score \u003c 0.2\")\n .build())\n .build())\n .headerAction(SecurityPolicyRuleHeaderActionArgs.builder()\n .requestHeadersToAdds( \n SecurityPolicyRuleHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"reCAPTCHA-Warning\")\n .headerValue(\"high\")\n .build(),\n SecurityPolicyRuleHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"X-Resource\")\n .headerValue(\"test\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n policy:\n type: gcp:compute:SecurityPolicy\n properties:\n name: my-policy\n rules:\n - action: allow\n priority: '2147483647'\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - '*'\n description: default rule\n - action: allow\n priority: '1000'\n match:\n expr:\n expression: request.path.matches(\"/login.html\") \u0026\u0026 token.recaptcha_session.score \u003c 0.2\n headerAction:\n requestHeadersToAdds:\n - headerName: reCAPTCHA-Warning\n headerValue: high\n - headerName: X-Resource\n headerValue: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With EnforceOnKey Value As Empty String\nA scenario example that won't cause any conflict between `enforce_on_key` and `enforce_on_key_configs`, because `enforce_on_key` was specified as an empty string:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst policy = new gcp.compute.SecurityPolicy(\"policy\", {\n name: \"%s\",\n description: \"throttle rule with enforce_on_key_configs\",\n rules: [{\n action: \"throttle\",\n priority: 2147483647,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"*\"],\n },\n },\n description: \"default rule\",\n rateLimitOptions: {\n conformAction: \"allow\",\n exceedAction: \"redirect\",\n enforceOnKey: \"\",\n enforceOnKeyConfigs: [{\n enforceOnKeyType: \"IP\",\n }],\n exceedRedirectOptions: {\n type: \"EXTERNAL_302\",\n target: \"\u003chttps://www.example.com\u003e\",\n },\n rateLimitThreshold: {\n count: 10,\n intervalSec: 60,\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npolicy = gcp.compute.SecurityPolicy(\"policy\",\n name=\"%s\",\n description=\"throttle rule with enforce_on_key_configs\",\n rules=[{\n \"action\": \"throttle\",\n \"priority\": 2147483647,\n \"match\": {\n \"versionedExpr\": \"SRC_IPS_V1\",\n \"config\": {\n \"srcIpRanges\": [\"*\"],\n },\n },\n \"description\": \"default rule\",\n \"rateLimitOptions\": {\n \"conformAction\": \"allow\",\n \"exceedAction\": \"redirect\",\n \"enforceOnKey\": \"\",\n \"enforceOnKeyConfigs\": [{\n \"enforceOnKeyType\": \"IP\",\n }],\n \"exceedRedirectOptions\": {\n \"type\": \"EXTERNAL_302\",\n \"target\": \"\u003chttps://www.example.com\u003e\",\n },\n \"rateLimitThreshold\": {\n \"count\": 10,\n \"intervalSec\": 60,\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 policy = new Gcp.Compute.SecurityPolicy(\"policy\", new()\n {\n Name = \"%s\",\n Description = \"throttle rule with enforce_on_key_configs\",\n Rules = new[]\n {\n new Gcp.Compute.Inputs.SecurityPolicyRuleArgs\n {\n Action = \"throttle\",\n Priority = 2147483647,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"*\",\n },\n },\n },\n Description = \"default rule\",\n RateLimitOptions = new Gcp.Compute.Inputs.SecurityPolicyRuleRateLimitOptionsArgs\n {\n ConformAction = \"allow\",\n ExceedAction = \"redirect\",\n EnforceOnKey = \"\",\n EnforceOnKeyConfigs = new[]\n {\n new Gcp.Compute.Inputs.SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs\n {\n EnforceOnKeyType = \"IP\",\n },\n },\n ExceedRedirectOptions = new Gcp.Compute.Inputs.SecurityPolicyRuleRateLimitOptionsExceedRedirectOptionsArgs\n {\n Type = \"EXTERNAL_302\",\n Target = \"\u003chttps://www.example.com\u003e\",\n },\n RateLimitThreshold = new Gcp.Compute.Inputs.SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs\n {\n Count = 10,\n IntervalSec = 60,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewSecurityPolicy(ctx, \"policy\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"%s\"),\n\t\t\tDescription: pulumi.String(\"throttle rule with enforce_on_key_configs\"),\n\t\t\tRules: compute.SecurityPolicyRuleTypeArray{\n\t\t\t\t\u0026compute.SecurityPolicyRuleTypeArgs{\n\t\t\t\t\tAction: pulumi.String(\"throttle\"),\n\t\t\t\t\tPriority: pulumi.Int(2147483647),\n\t\t\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"*\"),\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\tDescription: pulumi.String(\"default rule\"),\n\t\t\t\t\tRateLimitOptions: \u0026compute.SecurityPolicyRuleRateLimitOptionsArgs{\n\t\t\t\t\t\tConformAction: pulumi.String(\"allow\"),\n\t\t\t\t\t\tExceedAction: pulumi.String(\"redirect\"),\n\t\t\t\t\t\tEnforceOnKey: pulumi.String(\"\"),\n\t\t\t\t\t\tEnforceOnKeyConfigs: compute.SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArray{\n\t\t\t\t\t\t\t\u0026compute.SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs{\n\t\t\t\t\t\t\t\tEnforceOnKeyType: pulumi.String(\"IP\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExceedRedirectOptions: \u0026compute.SecurityPolicyRuleRateLimitOptionsExceedRedirectOptionsArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"EXTERNAL_302\"),\n\t\t\t\t\t\t\tTarget: pulumi.String(\"\u003chttps://www.example.com\u003e\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRateLimitThreshold: \u0026compute.SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs{\n\t\t\t\t\t\t\tCount: pulumi.Int(10),\n\t\t\t\t\t\t\tIntervalSec: pulumi.Int(60),\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.compute.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchConfigArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleRateLimitOptionsArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleRateLimitOptionsExceedRedirectOptionsArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs;\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 policy = new SecurityPolicy(\"policy\", SecurityPolicyArgs.builder()\n .name(\"%s\")\n .description(\"throttle rule with enforce_on_key_configs\")\n .rules(SecurityPolicyRuleArgs.builder()\n .action(\"throttle\")\n .priority(\"2147483647\")\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"*\")\n .build())\n .build())\n .description(\"default rule\")\n .rateLimitOptions(SecurityPolicyRuleRateLimitOptionsArgs.builder()\n .conformAction(\"allow\")\n .exceedAction(\"redirect\")\n .enforceOnKey(\"\")\n .enforceOnKeyConfigs(SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs.builder()\n .enforceOnKeyType(\"IP\")\n .build())\n .exceedRedirectOptions(SecurityPolicyRuleRateLimitOptionsExceedRedirectOptionsArgs.builder()\n .type(\"EXTERNAL_302\")\n .target(\"\u003chttps://www.example.com\u003e\")\n .build())\n .rateLimitThreshold(SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs.builder()\n .count(10)\n .intervalSec(60)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n policy:\n type: gcp:compute:SecurityPolicy\n properties:\n name: '%s'\n description: throttle rule with enforce_on_key_configs\n rules:\n - action: throttle\n priority: '2147483647'\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - '*'\n description: default rule\n rateLimitOptions:\n conformAction: allow\n exceedAction: redirect\n enforceOnKey:\n enforceOnKeyConfigs:\n - enforceOnKeyType: IP\n exceedRedirectOptions:\n type: EXTERNAL_302\n target: \u003chttps://www.example.com\u003e\n rateLimitThreshold:\n count: 10\n intervalSec: 60\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecurity policies can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/securityPolicies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, security policies can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/securityPolicy:SecurityPolicy default projects/{{project}}/global/securityPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/securityPolicy:SecurityPolicy default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/securityPolicy:SecurityPolicy default {{name}}\n```\n\n", + "description": "A Security Policy defines an IP blacklist or whitelist that protects load balanced Google Cloud services by denying or permitting traffic from specified IP ranges. For more information\nsee the [official documentation](https://cloud.google.com/armor/docs/configure-security-policies)\nand the [API](https://cloud.google.com/compute/docs/reference/rest/beta/securityPolicies).\n\nSecurity Policy is used by google_compute_backend_service.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst policy = new gcp.compute.SecurityPolicy(\"policy\", {\n name: \"my-policy\",\n rules: [\n {\n action: \"deny(403)\",\n priority: 1000,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"9.9.9.0/24\"],\n },\n },\n description: \"Deny access to IPs in 9.9.9.0/24\",\n },\n {\n action: \"allow\",\n priority: 2147483647,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"*\"],\n },\n },\n description: \"default rule\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npolicy = gcp.compute.SecurityPolicy(\"policy\",\n name=\"my-policy\",\n rules=[\n {\n \"action\": \"deny(403)\",\n \"priority\": 1000,\n \"match\": {\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"9.9.9.0/24\"],\n },\n },\n \"description\": \"Deny access to IPs in 9.9.9.0/24\",\n },\n {\n \"action\": \"allow\",\n \"priority\": 2147483647,\n \"match\": {\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"*\"],\n },\n },\n \"description\": \"default rule\",\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 policy = new Gcp.Compute.SecurityPolicy(\"policy\", new()\n {\n Name = \"my-policy\",\n Rules = new[]\n {\n new Gcp.Compute.Inputs.SecurityPolicyRuleArgs\n {\n Action = \"deny(403)\",\n Priority = 1000,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"9.9.9.0/24\",\n },\n },\n },\n Description = \"Deny access to IPs in 9.9.9.0/24\",\n },\n new Gcp.Compute.Inputs.SecurityPolicyRuleArgs\n {\n Action = \"allow\",\n Priority = 2147483647,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"*\",\n },\n },\n },\n Description = \"default rule\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewSecurityPolicy(ctx, \"policy\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy\"),\n\t\t\tRules: compute.SecurityPolicyRuleTypeArray{\n\t\t\t\t\u0026compute.SecurityPolicyRuleTypeArgs{\n\t\t\t\t\tAction: pulumi.String(\"deny(403)\"),\n\t\t\t\t\tPriority: pulumi.Int(1000),\n\t\t\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"9.9.9.0/24\"),\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\tDescription: pulumi.String(\"Deny access to IPs in 9.9.9.0/24\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.SecurityPolicyRuleTypeArgs{\n\t\t\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\t\t\tPriority: pulumi.Int(2147483647),\n\t\t\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"*\"),\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\tDescription: pulumi.String(\"default rule\"),\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.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchConfigArgs;\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 policy = new SecurityPolicy(\"policy\", SecurityPolicyArgs.builder()\n .name(\"my-policy\")\n .rules( \n SecurityPolicyRuleArgs.builder()\n .action(\"deny(403)\")\n .priority(\"1000\")\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"9.9.9.0/24\")\n .build())\n .build())\n .description(\"Deny access to IPs in 9.9.9.0/24\")\n .build(),\n SecurityPolicyRuleArgs.builder()\n .action(\"allow\")\n .priority(\"2147483647\")\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"*\")\n .build())\n .build())\n .description(\"default rule\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n policy:\n type: gcp:compute:SecurityPolicy\n properties:\n name: my-policy\n rules:\n - action: deny(403)\n priority: '1000'\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 9.9.9.0/24\n description: Deny access to IPs in 9.9.9.0/24\n - action: allow\n priority: '2147483647'\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - '*'\n description: default rule\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With ReCAPTCHA Configuration Options\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name\",\n labels: {\n \"label-one\": \"value-one\",\n },\n project: \"my-project-name\",\n webSettings: {\n integrationType: \"INVISIBLE\",\n allowAllDomains: true,\n allowedDomains: [\"localhost\"],\n },\n});\nconst policy = new gcp.compute.SecurityPolicy(\"policy\", {\n name: \"my-policy\",\n description: \"basic security policy\",\n type: \"CLOUD_ARMOR\",\n recaptchaOptionsConfig: {\n redirectSiteKey: primary.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name\",\n labels={\n \"label-one\": \"value-one\",\n },\n project=\"my-project-name\",\n web_settings={\n \"integration_type\": \"INVISIBLE\",\n \"allow_all_domains\": True,\n \"allowed_domains\": [\"localhost\"],\n })\npolicy = gcp.compute.SecurityPolicy(\"policy\",\n name=\"my-policy\",\n description=\"basic security policy\",\n type=\"CLOUD_ARMOR\",\n recaptcha_options_config={\n \"redirect_site_key\": primary.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 primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Project = \"my-project-name\",\n WebSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWebSettingsArgs\n {\n IntegrationType = \"INVISIBLE\",\n AllowAllDomains = true,\n AllowedDomains = new[]\n {\n \"localhost\",\n },\n },\n });\n\n var policy = new Gcp.Compute.SecurityPolicy(\"policy\", new()\n {\n Name = \"my-policy\",\n Description = \"basic security policy\",\n Type = \"CLOUD_ARMOR\",\n RecaptchaOptionsConfig = new Gcp.Compute.Inputs.SecurityPolicyRecaptchaOptionsConfigArgs\n {\n RedirectSiteKey = primary.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/recaptcha\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name\"),\n\t\t\tLabels: 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\tWebSettings: \u0026recaptcha.EnterpriseKeyWebSettingsArgs{\n\t\t\t\tIntegrationType: pulumi.String(\"INVISIBLE\"),\n\t\t\t\tAllowAllDomains: pulumi.Bool(true),\n\t\t\t\tAllowedDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"localhost\"),\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.NewSecurityPolicy(ctx, \"policy\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy\"),\n\t\t\tDescription: pulumi.String(\"basic security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t\tRecaptchaOptionsConfig: \u0026compute.SecurityPolicyRecaptchaOptionsConfigArgs{\n\t\t\t\tRedirectSiteKey: primary.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.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWebSettingsArgs;\nimport com.pulumi.gcp.compute.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRecaptchaOptionsConfigArgs;\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 primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .project(\"my-project-name\")\n .webSettings(EnterpriseKeyWebSettingsArgs.builder()\n .integrationType(\"INVISIBLE\")\n .allowAllDomains(true)\n .allowedDomains(\"localhost\")\n .build())\n .build());\n\n var policy = new SecurityPolicy(\"policy\", SecurityPolicyArgs.builder()\n .name(\"my-policy\")\n .description(\"basic security policy\")\n .type(\"CLOUD_ARMOR\")\n .recaptchaOptionsConfig(SecurityPolicyRecaptchaOptionsConfigArgs.builder()\n .redirectSiteKey(primary.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name\n labels:\n label-one: value-one\n project: my-project-name\n webSettings:\n integrationType: INVISIBLE\n allowAllDomains: true\n allowedDomains:\n - localhost\n policy:\n type: gcp:compute:SecurityPolicy\n properties:\n name: my-policy\n description: basic security policy\n type: CLOUD_ARMOR\n recaptchaOptionsConfig:\n redirectSiteKey: ${primary.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Header Actions\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst policy = new gcp.compute.SecurityPolicy(\"policy\", {\n name: \"my-policy\",\n rules: [\n {\n action: \"allow\",\n priority: 2147483647,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"*\"],\n },\n },\n description: \"default rule\",\n },\n {\n action: \"allow\",\n priority: 1000,\n match: {\n expr: {\n expression: \"request.path.matches(\\\"/login.html\\\") \u0026\u0026 token.recaptcha_session.score \u003c 0.2\",\n },\n },\n headerAction: {\n requestHeadersToAdds: [\n {\n headerName: \"reCAPTCHA-Warning\",\n headerValue: \"high\",\n },\n {\n headerName: \"X-Resource\",\n headerValue: \"test\",\n },\n ],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npolicy = gcp.compute.SecurityPolicy(\"policy\",\n name=\"my-policy\",\n rules=[\n {\n \"action\": \"allow\",\n \"priority\": 2147483647,\n \"match\": {\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"*\"],\n },\n },\n \"description\": \"default rule\",\n },\n {\n \"action\": \"allow\",\n \"priority\": 1000,\n \"match\": {\n \"expr\": {\n \"expression\": \"request.path.matches(\\\"/login.html\\\") \u0026\u0026 token.recaptcha_session.score \u003c 0.2\",\n },\n },\n \"header_action\": {\n \"request_headers_to_adds\": [\n {\n \"header_name\": \"reCAPTCHA-Warning\",\n \"header_value\": \"high\",\n },\n {\n \"header_name\": \"X-Resource\",\n \"header_value\": \"test\",\n },\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 policy = new Gcp.Compute.SecurityPolicy(\"policy\", new()\n {\n Name = \"my-policy\",\n Rules = new[]\n {\n new Gcp.Compute.Inputs.SecurityPolicyRuleArgs\n {\n Action = \"allow\",\n Priority = 2147483647,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"*\",\n },\n },\n },\n Description = \"default rule\",\n },\n new Gcp.Compute.Inputs.SecurityPolicyRuleArgs\n {\n Action = \"allow\",\n Priority = 1000,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n Expr = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchExprArgs\n {\n Expression = \"request.path.matches(\\\"/login.html\\\") \u0026\u0026 token.recaptcha_session.score \u003c 0.2\",\n },\n },\n HeaderAction = new Gcp.Compute.Inputs.SecurityPolicyRuleHeaderActionArgs\n {\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.SecurityPolicyRuleHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"reCAPTCHA-Warning\",\n HeaderValue = \"high\",\n },\n new Gcp.Compute.Inputs.SecurityPolicyRuleHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"X-Resource\",\n HeaderValue = \"test\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewSecurityPolicy(ctx, \"policy\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy\"),\n\t\t\tRules: compute.SecurityPolicyRuleTypeArray{\n\t\t\t\t\u0026compute.SecurityPolicyRuleTypeArgs{\n\t\t\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\t\t\tPriority: pulumi.Int(2147483647),\n\t\t\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"*\"),\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\tDescription: pulumi.String(\"default rule\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.SecurityPolicyRuleTypeArgs{\n\t\t\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\t\t\tPriority: pulumi.Int(1000),\n\t\t\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\t\t\tExpr: \u0026compute.SecurityPolicyRuleMatchExprArgs{\n\t\t\t\t\t\t\tExpression: pulumi.String(\"request.path.matches(\\\"/login.html\\\") \u0026\u0026 token.recaptcha_session.score \u003c 0.2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tHeaderAction: \u0026compute.SecurityPolicyRuleHeaderActionArgs{\n\t\t\t\t\t\tRequestHeadersToAdds: compute.SecurityPolicyRuleHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\u0026compute.SecurityPolicyRuleHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"reCAPTCHA-Warning\"),\n\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"high\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026compute.SecurityPolicyRuleHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"X-Resource\"),\n\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"test\"),\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.compute.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchConfigArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchExprArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleHeaderActionArgs;\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 policy = new SecurityPolicy(\"policy\", SecurityPolicyArgs.builder()\n .name(\"my-policy\")\n .rules( \n SecurityPolicyRuleArgs.builder()\n .action(\"allow\")\n .priority(\"2147483647\")\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"*\")\n .build())\n .build())\n .description(\"default rule\")\n .build(),\n SecurityPolicyRuleArgs.builder()\n .action(\"allow\")\n .priority(\"1000\")\n .match(SecurityPolicyRuleMatchArgs.builder()\n .expr(SecurityPolicyRuleMatchExprArgs.builder()\n .expression(\"request.path.matches(\\\"/login.html\\\") \u0026\u0026 token.recaptcha_session.score \u003c 0.2\")\n .build())\n .build())\n .headerAction(SecurityPolicyRuleHeaderActionArgs.builder()\n .requestHeadersToAdds( \n SecurityPolicyRuleHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"reCAPTCHA-Warning\")\n .headerValue(\"high\")\n .build(),\n SecurityPolicyRuleHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"X-Resource\")\n .headerValue(\"test\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n policy:\n type: gcp:compute:SecurityPolicy\n properties:\n name: my-policy\n rules:\n - action: allow\n priority: '2147483647'\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - '*'\n description: default rule\n - action: allow\n priority: '1000'\n match:\n expr:\n expression: request.path.matches(\"/login.html\") \u0026\u0026 token.recaptcha_session.score \u003c 0.2\n headerAction:\n requestHeadersToAdds:\n - headerName: reCAPTCHA-Warning\n headerValue: high\n - headerName: X-Resource\n headerValue: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With EnforceOnKey Value As Empty String\nA scenario example that won't cause any conflict between `enforce_on_key` and `enforce_on_key_configs`, because `enforce_on_key` was specified as an empty string:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst policy = new gcp.compute.SecurityPolicy(\"policy\", {\n name: \"%s\",\n description: \"throttle rule with enforce_on_key_configs\",\n rules: [{\n action: \"throttle\",\n priority: 2147483647,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"*\"],\n },\n },\n description: \"default rule\",\n rateLimitOptions: {\n conformAction: \"allow\",\n exceedAction: \"redirect\",\n enforceOnKey: \"\",\n enforceOnKeyConfigs: [{\n enforceOnKeyType: \"IP\",\n }],\n exceedRedirectOptions: {\n type: \"EXTERNAL_302\",\n target: \"\u003chttps://www.example.com\u003e\",\n },\n rateLimitThreshold: {\n count: 10,\n intervalSec: 60,\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npolicy = gcp.compute.SecurityPolicy(\"policy\",\n name=\"%s\",\n description=\"throttle rule with enforce_on_key_configs\",\n rules=[{\n \"action\": \"throttle\",\n \"priority\": 2147483647,\n \"match\": {\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"*\"],\n },\n },\n \"description\": \"default rule\",\n \"rate_limit_options\": {\n \"conform_action\": \"allow\",\n \"exceed_action\": \"redirect\",\n \"enforce_on_key\": \"\",\n \"enforce_on_key_configs\": [{\n \"enforce_on_key_type\": \"IP\",\n }],\n \"exceed_redirect_options\": {\n \"type\": \"EXTERNAL_302\",\n \"target\": \"\u003chttps://www.example.com\u003e\",\n },\n \"rate_limit_threshold\": {\n \"count\": 10,\n \"interval_sec\": 60,\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 policy = new Gcp.Compute.SecurityPolicy(\"policy\", new()\n {\n Name = \"%s\",\n Description = \"throttle rule with enforce_on_key_configs\",\n Rules = new[]\n {\n new Gcp.Compute.Inputs.SecurityPolicyRuleArgs\n {\n Action = \"throttle\",\n Priority = 2147483647,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"*\",\n },\n },\n },\n Description = \"default rule\",\n RateLimitOptions = new Gcp.Compute.Inputs.SecurityPolicyRuleRateLimitOptionsArgs\n {\n ConformAction = \"allow\",\n ExceedAction = \"redirect\",\n EnforceOnKey = \"\",\n EnforceOnKeyConfigs = new[]\n {\n new Gcp.Compute.Inputs.SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs\n {\n EnforceOnKeyType = \"IP\",\n },\n },\n ExceedRedirectOptions = new Gcp.Compute.Inputs.SecurityPolicyRuleRateLimitOptionsExceedRedirectOptionsArgs\n {\n Type = \"EXTERNAL_302\",\n Target = \"\u003chttps://www.example.com\u003e\",\n },\n RateLimitThreshold = new Gcp.Compute.Inputs.SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs\n {\n Count = 10,\n IntervalSec = 60,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewSecurityPolicy(ctx, \"policy\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"%s\"),\n\t\t\tDescription: pulumi.String(\"throttle rule with enforce_on_key_configs\"),\n\t\t\tRules: compute.SecurityPolicyRuleTypeArray{\n\t\t\t\t\u0026compute.SecurityPolicyRuleTypeArgs{\n\t\t\t\t\tAction: pulumi.String(\"throttle\"),\n\t\t\t\t\tPriority: pulumi.Int(2147483647),\n\t\t\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"*\"),\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\tDescription: pulumi.String(\"default rule\"),\n\t\t\t\t\tRateLimitOptions: \u0026compute.SecurityPolicyRuleRateLimitOptionsArgs{\n\t\t\t\t\t\tConformAction: pulumi.String(\"allow\"),\n\t\t\t\t\t\tExceedAction: pulumi.String(\"redirect\"),\n\t\t\t\t\t\tEnforceOnKey: pulumi.String(\"\"),\n\t\t\t\t\t\tEnforceOnKeyConfigs: compute.SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArray{\n\t\t\t\t\t\t\t\u0026compute.SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs{\n\t\t\t\t\t\t\t\tEnforceOnKeyType: pulumi.String(\"IP\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExceedRedirectOptions: \u0026compute.SecurityPolicyRuleRateLimitOptionsExceedRedirectOptionsArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"EXTERNAL_302\"),\n\t\t\t\t\t\t\tTarget: pulumi.String(\"\u003chttps://www.example.com\u003e\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRateLimitThreshold: \u0026compute.SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs{\n\t\t\t\t\t\t\tCount: pulumi.Int(10),\n\t\t\t\t\t\t\tIntervalSec: pulumi.Int(60),\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.compute.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchConfigArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleRateLimitOptionsArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleRateLimitOptionsExceedRedirectOptionsArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs;\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 policy = new SecurityPolicy(\"policy\", SecurityPolicyArgs.builder()\n .name(\"%s\")\n .description(\"throttle rule with enforce_on_key_configs\")\n .rules(SecurityPolicyRuleArgs.builder()\n .action(\"throttle\")\n .priority(\"2147483647\")\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"*\")\n .build())\n .build())\n .description(\"default rule\")\n .rateLimitOptions(SecurityPolicyRuleRateLimitOptionsArgs.builder()\n .conformAction(\"allow\")\n .exceedAction(\"redirect\")\n .enforceOnKey(\"\")\n .enforceOnKeyConfigs(SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs.builder()\n .enforceOnKeyType(\"IP\")\n .build())\n .exceedRedirectOptions(SecurityPolicyRuleRateLimitOptionsExceedRedirectOptionsArgs.builder()\n .type(\"EXTERNAL_302\")\n .target(\"\u003chttps://www.example.com\u003e\")\n .build())\n .rateLimitThreshold(SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs.builder()\n .count(10)\n .intervalSec(60)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n policy:\n type: gcp:compute:SecurityPolicy\n properties:\n name: '%s'\n description: throttle rule with enforce_on_key_configs\n rules:\n - action: throttle\n priority: '2147483647'\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - '*'\n description: default rule\n rateLimitOptions:\n conformAction: allow\n exceedAction: redirect\n enforceOnKey:\n enforceOnKeyConfigs:\n - enforceOnKeyType: IP\n exceedRedirectOptions:\n type: EXTERNAL_302\n target: \u003chttps://www.example.com\u003e\n rateLimitThreshold:\n count: 10\n intervalSec: 60\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecurity policies can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/securityPolicies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, security policies can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/securityPolicy:SecurityPolicy default projects/{{project}}/global/securityPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/securityPolicy:SecurityPolicy default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/securityPolicy:SecurityPolicy default {{name}}\n```\n\n", "properties": { "adaptiveProtectionConfig": { "$ref": "#/types/gcp:compute/SecurityPolicyAdaptiveProtectionConfig:SecurityPolicyAdaptiveProtectionConfig", @@ -162719,7 +162719,7 @@ } }, "gcp:compute/securityPolicyRule:SecurityPolicyRule": { - "description": "A rule for the SecurityPolicy.\n\n\nTo get more information about SecurityPolicyRule, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/securityPolicies/addRule)\n* How-to Guides\n * [Creating global security policy rules](https://cloud.google.com/armor/docs/configure-security-policies)\n\n## Example Usage\n\n### Security Policy Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.SecurityPolicy(\"default\", {\n name: \"policyruletest\",\n description: \"basic global security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRule = new gcp.compute.SecurityPolicyRule(\"policy_rule\", {\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```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.SecurityPolicy(\"default\",\n name=\"policyruletest\",\n description=\"basic global security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule = gcp.compute.SecurityPolicyRule(\"policy_rule\",\n security_policy=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```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.SecurityPolicy(\"default\", new()\n {\n Name = \"policyruletest\",\n Description = \"basic global security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRule = new Gcp.Compute.SecurityPolicyRule(\"policy_rule\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"new rule\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewSecurityPolicy(ctx, \"default\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"policyruletest\"),\n\t\t\tDescription: pulumi.String(\"basic global security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSecurityPolicyRule(ctx, \"policy_rule\", \u0026compute.SecurityPolicyRuleArgs{\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.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\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})\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.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.SecurityPolicyRule;\nimport com.pulumi.gcp.compute.SecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchConfigArgs;\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 SecurityPolicy(\"default\", SecurityPolicyArgs.builder()\n .name(\"policyruletest\")\n .description(\"basic global security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var policyRule = new SecurityPolicyRule(\"policyRule\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"new rule\")\n .priority(100)\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:SecurityPolicy\n properties:\n name: policyruletest\n description: basic global security policy\n type: CLOUD_ARMOR\n policyRule:\n type: gcp:compute:SecurityPolicyRule\n name: policy_rule\n properties:\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```\n\u003c!--End PulumiCodeChooser --\u003e\n### Security Policy Rule Default Rule\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.SecurityPolicy(\"default\", {\n name: \"policyruletest\",\n description: \"basic global security policy\",\n type: \"CLOUD_ARMOR\",\n});\n// A default rule is generated when creating the security_policy resource, import is needed to patch it\n// import {\n// id = \"projects//global/securityPolicies/policyruletest/priority/2147483647\"\n// to = google_compute_security_policy_rule.default_rule\n// }\nconst defaultRule = new gcp.compute.SecurityPolicyRule(\"default_rule\", {\n securityPolicy: _default.name,\n description: \"default rule\",\n action: \"allow\",\n priority: 2147483647,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"*\"],\n },\n },\n});\nconst policyRule = new gcp.compute.SecurityPolicyRule(\"policy_rule\", {\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```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.SecurityPolicy(\"default\",\n name=\"policyruletest\",\n description=\"basic global security policy\",\n type=\"CLOUD_ARMOR\")\n# A default rule is generated when creating the security_policy resource, import is needed to patch it\n# import {\n# id = \"projects//global/securityPolicies/policyruletest/priority/2147483647\"\n# to = google_compute_security_policy_rule.default_rule\n# }\ndefault_rule = gcp.compute.SecurityPolicyRule(\"default_rule\",\n security_policy=default.name,\n description=\"default rule\",\n action=\"allow\",\n priority=2147483647,\n match={\n \"versionedExpr\": \"SRC_IPS_V1\",\n \"config\": {\n \"srcIpRanges\": [\"*\"],\n },\n })\npolicy_rule = gcp.compute.SecurityPolicyRule(\"policy_rule\",\n security_policy=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```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.SecurityPolicy(\"default\", new()\n {\n Name = \"policyruletest\",\n Description = \"basic global security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n // A default rule is generated when creating the security_policy resource, import is needed to patch it\n // import {\n // id = \"projects//global/securityPolicies/policyruletest/priority/2147483647\"\n // to = google_compute_security_policy_rule.default_rule\n // }\n var defaultRule = new Gcp.Compute.SecurityPolicyRule(\"default_rule\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"default rule\",\n Action = \"allow\",\n Priority = 2147483647,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n var policyRule = new Gcp.Compute.SecurityPolicyRule(\"policy_rule\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"new rule\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewSecurityPolicy(ctx, \"default\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"policyruletest\"),\n\t\t\tDescription: pulumi.String(\"basic global security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// A default rule is generated when creating the security_policy resource, import is needed to patch it\n\t\t//\n\t\t//\timport {\n\t\t//\t id = \"projects//global/securityPolicies/policyruletest/priority/2147483647\"\n\t\t//\t to = google_compute_security_policy_rule.default_rule\n\t\t//\t}\n\t\t_, err = compute.NewSecurityPolicyRule(ctx, \"default_rule\", \u0026compute.SecurityPolicyRuleArgs{\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"default rule\"),\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPriority: pulumi.Int(2147483647),\n\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\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 = compute.NewSecurityPolicyRule(ctx, \"policy_rule\", \u0026compute.SecurityPolicyRuleArgs{\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.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\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})\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.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.SecurityPolicyRule;\nimport com.pulumi.gcp.compute.SecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchConfigArgs;\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 SecurityPolicy(\"default\", SecurityPolicyArgs.builder()\n .name(\"policyruletest\")\n .description(\"basic global security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n // A default rule is generated when creating the security_policy resource, import is needed to patch it\n // import {\n // id = \"projects//global/securityPolicies/policyruletest/priority/2147483647\"\n // to = google_compute_security_policy_rule.default_rule\n // }\n var defaultRule = new SecurityPolicyRule(\"defaultRule\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"default rule\")\n .action(\"allow\")\n .priority(\"2147483647\")\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"*\")\n .build())\n .build())\n .build());\n\n var policyRule = new SecurityPolicyRule(\"policyRule\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"new rule\")\n .priority(100)\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:SecurityPolicy\n properties:\n name: policyruletest\n description: basic global security policy\n type: CLOUD_ARMOR\n # A default rule is generated when creating the security_policy resource, import is needed to patch it\n # import {\n # id = \"projects//global/securityPolicies/policyruletest/priority/2147483647\"\n # to = google_compute_security_policy_rule.default_rule\n # }\n defaultRule:\n type: gcp:compute:SecurityPolicyRule\n name: default_rule\n properties:\n securityPolicy: ${default.name}\n description: default rule\n action: allow\n priority: '2147483647'\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - '*'\n policyRule:\n type: gcp:compute:SecurityPolicyRule\n name: policy_rule\n properties:\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```\n\u003c!--End PulumiCodeChooser --\u003e\n### Security Policy Rule Multiple Rules\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.SecurityPolicy(\"default\", {\n name: \"policywithmultiplerules\",\n description: \"basic global security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRuleOne = new gcp.compute.SecurityPolicyRule(\"policy_rule_one\", {\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});\nconst policyRuleTwo = new gcp.compute.SecurityPolicyRule(\"policy_rule_two\", {\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```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.SecurityPolicy(\"default\",\n name=\"policywithmultiplerules\",\n description=\"basic global security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule_one = gcp.compute.SecurityPolicyRule(\"policy_rule_one\",\n security_policy=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)\npolicy_rule_two = gcp.compute.SecurityPolicyRule(\"policy_rule_two\",\n security_policy=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```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.SecurityPolicy(\"default\", new()\n {\n Name = \"policywithmultiplerules\",\n Description = \"basic global security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRuleOne = new Gcp.Compute.SecurityPolicyRule(\"policy_rule_one\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"new rule one\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n var policyRuleTwo = new Gcp.Compute.SecurityPolicyRule(\"policy_rule_two\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"new rule two\",\n Priority = 101,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewSecurityPolicy(ctx, \"default\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"policywithmultiplerules\"),\n\t\t\tDescription: pulumi.String(\"basic global security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSecurityPolicyRule(ctx, \"policy_rule_one\", \u0026compute.SecurityPolicyRuleArgs{\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.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSecurityPolicyRule(ctx, \"policy_rule_two\", \u0026compute.SecurityPolicyRuleArgs{\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.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\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})\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.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.SecurityPolicyRule;\nimport com.pulumi.gcp.compute.SecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchConfigArgs;\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 SecurityPolicy(\"default\", SecurityPolicyArgs.builder()\n .name(\"policywithmultiplerules\")\n .description(\"basic global security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var policyRuleOne = new SecurityPolicyRule(\"policyRuleOne\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"new rule one\")\n .priority(100)\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n var policyRuleTwo = new SecurityPolicyRule(\"policyRuleTwo\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"new rule two\")\n .priority(101)\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.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());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:SecurityPolicy\n properties:\n name: policywithmultiplerules\n description: basic global security policy\n type: CLOUD_ARMOR\n policyRuleOne:\n type: gcp:compute:SecurityPolicyRule\n name: policy_rule_one\n properties:\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 policyRuleTwo:\n type: gcp:compute:SecurityPolicyRule\n name: policy_rule_two\n properties:\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```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecurityPolicyRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/securityPolicies/{{security_policy}}/priority/{{priority}}`\n\n* `{{project}}/{{security_policy}}/{{priority}}`\n\n* `{{security_policy}}/{{priority}}`\n\nWhen using the `pulumi import` command, SecurityPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/securityPolicyRule:SecurityPolicyRule default projects/{{project}}/global/securityPolicies/{{security_policy}}/priority/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/securityPolicyRule:SecurityPolicyRule default {{project}}/{{security_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/securityPolicyRule:SecurityPolicyRule default {{security_policy}}/{{priority}}\n```\n\n", + "description": "A rule for the SecurityPolicy.\n\n\nTo get more information about SecurityPolicyRule, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/securityPolicies/addRule)\n* How-to Guides\n * [Creating global security policy rules](https://cloud.google.com/armor/docs/configure-security-policies)\n\n## Example Usage\n\n### Security Policy Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.SecurityPolicy(\"default\", {\n name: \"policyruletest\",\n description: \"basic global security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRule = new gcp.compute.SecurityPolicyRule(\"policy_rule\", {\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```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.SecurityPolicy(\"default\",\n name=\"policyruletest\",\n description=\"basic global security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule = gcp.compute.SecurityPolicyRule(\"policy_rule\",\n security_policy=default.name,\n description=\"new rule\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n action=\"allow\",\n preview=True)\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.SecurityPolicy(\"default\", new()\n {\n Name = \"policyruletest\",\n Description = \"basic global security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRule = new Gcp.Compute.SecurityPolicyRule(\"policy_rule\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"new rule\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewSecurityPolicy(ctx, \"default\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"policyruletest\"),\n\t\t\tDescription: pulumi.String(\"basic global security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSecurityPolicyRule(ctx, \"policy_rule\", \u0026compute.SecurityPolicyRuleArgs{\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.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\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})\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.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.SecurityPolicyRule;\nimport com.pulumi.gcp.compute.SecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchConfigArgs;\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 SecurityPolicy(\"default\", SecurityPolicyArgs.builder()\n .name(\"policyruletest\")\n .description(\"basic global security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var policyRule = new SecurityPolicyRule(\"policyRule\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"new rule\")\n .priority(100)\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:SecurityPolicy\n properties:\n name: policyruletest\n description: basic global security policy\n type: CLOUD_ARMOR\n policyRule:\n type: gcp:compute:SecurityPolicyRule\n name: policy_rule\n properties:\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```\n\u003c!--End PulumiCodeChooser --\u003e\n### Security Policy Rule Default Rule\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.SecurityPolicy(\"default\", {\n name: \"policyruletest\",\n description: \"basic global security policy\",\n type: \"CLOUD_ARMOR\",\n});\n// A default rule is generated when creating the security_policy resource, import is needed to patch it\n// import {\n// id = \"projects//global/securityPolicies/policyruletest/priority/2147483647\"\n// to = google_compute_security_policy_rule.default_rule\n// }\nconst defaultRule = new gcp.compute.SecurityPolicyRule(\"default_rule\", {\n securityPolicy: _default.name,\n description: \"default rule\",\n action: \"allow\",\n priority: 2147483647,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"*\"],\n },\n },\n});\nconst policyRule = new gcp.compute.SecurityPolicyRule(\"policy_rule\", {\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```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.SecurityPolicy(\"default\",\n name=\"policyruletest\",\n description=\"basic global security policy\",\n type=\"CLOUD_ARMOR\")\n# A default rule is generated when creating the security_policy resource, import is needed to patch it\n# import {\n# id = \"projects//global/securityPolicies/policyruletest/priority/2147483647\"\n# to = google_compute_security_policy_rule.default_rule\n# }\ndefault_rule = gcp.compute.SecurityPolicyRule(\"default_rule\",\n security_policy=default.name,\n description=\"default rule\",\n action=\"allow\",\n priority=2147483647,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"*\"],\n },\n })\npolicy_rule = gcp.compute.SecurityPolicyRule(\"policy_rule\",\n security_policy=default.name,\n description=\"new rule\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n action=\"allow\",\n preview=True)\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.SecurityPolicy(\"default\", new()\n {\n Name = \"policyruletest\",\n Description = \"basic global security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n // A default rule is generated when creating the security_policy resource, import is needed to patch it\n // import {\n // id = \"projects//global/securityPolicies/policyruletest/priority/2147483647\"\n // to = google_compute_security_policy_rule.default_rule\n // }\n var defaultRule = new Gcp.Compute.SecurityPolicyRule(\"default_rule\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"default rule\",\n Action = \"allow\",\n Priority = 2147483647,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n var policyRule = new Gcp.Compute.SecurityPolicyRule(\"policy_rule\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"new rule\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewSecurityPolicy(ctx, \"default\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"policyruletest\"),\n\t\t\tDescription: pulumi.String(\"basic global security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// A default rule is generated when creating the security_policy resource, import is needed to patch it\n\t\t//\n\t\t//\timport {\n\t\t//\t id = \"projects//global/securityPolicies/policyruletest/priority/2147483647\"\n\t\t//\t to = google_compute_security_policy_rule.default_rule\n\t\t//\t}\n\t\t_, err = compute.NewSecurityPolicyRule(ctx, \"default_rule\", \u0026compute.SecurityPolicyRuleArgs{\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"default rule\"),\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPriority: pulumi.Int(2147483647),\n\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\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 = compute.NewSecurityPolicyRule(ctx, \"policy_rule\", \u0026compute.SecurityPolicyRuleArgs{\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.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\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})\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.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.SecurityPolicyRule;\nimport com.pulumi.gcp.compute.SecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchConfigArgs;\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 SecurityPolicy(\"default\", SecurityPolicyArgs.builder()\n .name(\"policyruletest\")\n .description(\"basic global security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n // A default rule is generated when creating the security_policy resource, import is needed to patch it\n // import {\n // id = \"projects//global/securityPolicies/policyruletest/priority/2147483647\"\n // to = google_compute_security_policy_rule.default_rule\n // }\n var defaultRule = new SecurityPolicyRule(\"defaultRule\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"default rule\")\n .action(\"allow\")\n .priority(\"2147483647\")\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"*\")\n .build())\n .build())\n .build());\n\n var policyRule = new SecurityPolicyRule(\"policyRule\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"new rule\")\n .priority(100)\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:SecurityPolicy\n properties:\n name: policyruletest\n description: basic global security policy\n type: CLOUD_ARMOR\n # A default rule is generated when creating the security_policy resource, import is needed to patch it\n # import {\n # id = \"projects//global/securityPolicies/policyruletest/priority/2147483647\"\n # to = google_compute_security_policy_rule.default_rule\n # }\n defaultRule:\n type: gcp:compute:SecurityPolicyRule\n name: default_rule\n properties:\n securityPolicy: ${default.name}\n description: default rule\n action: allow\n priority: '2147483647'\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - '*'\n policyRule:\n type: gcp:compute:SecurityPolicyRule\n name: policy_rule\n properties:\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```\n\u003c!--End PulumiCodeChooser --\u003e\n### Security Policy Rule Multiple Rules\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.SecurityPolicy(\"default\", {\n name: \"policywithmultiplerules\",\n description: \"basic global security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRuleOne = new gcp.compute.SecurityPolicyRule(\"policy_rule_one\", {\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});\nconst policyRuleTwo = new gcp.compute.SecurityPolicyRule(\"policy_rule_two\", {\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```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.SecurityPolicy(\"default\",\n name=\"policywithmultiplerules\",\n description=\"basic global security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule_one = gcp.compute.SecurityPolicyRule(\"policy_rule_one\",\n security_policy=default.name,\n description=\"new rule one\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n action=\"allow\",\n preview=True)\npolicy_rule_two = gcp.compute.SecurityPolicyRule(\"policy_rule_two\",\n security_policy=default.name,\n description=\"new rule two\",\n priority=101,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\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```\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.SecurityPolicy(\"default\", new()\n {\n Name = \"policywithmultiplerules\",\n Description = \"basic global security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRuleOne = new Gcp.Compute.SecurityPolicyRule(\"policy_rule_one\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"new rule one\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n var policyRuleTwo = new Gcp.Compute.SecurityPolicyRule(\"policy_rule_two\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"new rule two\",\n Priority = 101,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewSecurityPolicy(ctx, \"default\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"policywithmultiplerules\"),\n\t\t\tDescription: pulumi.String(\"basic global security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSecurityPolicyRule(ctx, \"policy_rule_one\", \u0026compute.SecurityPolicyRuleArgs{\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.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSecurityPolicyRule(ctx, \"policy_rule_two\", \u0026compute.SecurityPolicyRuleArgs{\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.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\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})\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.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.SecurityPolicyRule;\nimport com.pulumi.gcp.compute.SecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchConfigArgs;\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 SecurityPolicy(\"default\", SecurityPolicyArgs.builder()\n .name(\"policywithmultiplerules\")\n .description(\"basic global security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var policyRuleOne = new SecurityPolicyRule(\"policyRuleOne\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"new rule one\")\n .priority(100)\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n var policyRuleTwo = new SecurityPolicyRule(\"policyRuleTwo\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"new rule two\")\n .priority(101)\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.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());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:SecurityPolicy\n properties:\n name: policywithmultiplerules\n description: basic global security policy\n type: CLOUD_ARMOR\n policyRuleOne:\n type: gcp:compute:SecurityPolicyRule\n name: policy_rule_one\n properties:\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 policyRuleTwo:\n type: gcp:compute:SecurityPolicyRule\n name: policy_rule_two\n properties:\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```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecurityPolicyRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/securityPolicies/{{security_policy}}/priority/{{priority}}`\n\n* `{{project}}/{{security_policy}}/{{priority}}`\n\n* `{{security_policy}}/{{priority}}`\n\nWhen using the `pulumi import` command, SecurityPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/securityPolicyRule:SecurityPolicyRule default projects/{{project}}/global/securityPolicies/{{security_policy}}/priority/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/securityPolicyRule:SecurityPolicyRule default {{project}}/{{security_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/securityPolicyRule:SecurityPolicyRule default {{security_policy}}/{{priority}}\n```\n\n", "properties": { "action": { "type": "string", @@ -163037,7 +163037,7 @@ } }, "gcp:compute/serviceAttachment:ServiceAttachment": { - "description": "Represents a ServiceAttachment resource.\n\n\nTo get more information about ServiceAttachment, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/beta/serviceAttachments)\n* How-to Guides\n * [Configuring Private Service Connect to access services](https://cloud.google.com/vpc/docs/configure-private-service-connect-services)\n\n## Example Usage\n\n### Service Attachment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst producerServiceHealthCheck = new gcp.compute.HealthCheck(\"producer_service_health_check\", {\n name: \"producer-service-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst producerServiceBackend = new gcp.compute.RegionBackendService(\"producer_service_backend\", {\n name: \"producer-service\",\n region: \"us-west2\",\n healthChecks: producerServiceHealthCheck.id,\n});\nconst pscIlbNetwork = new gcp.compute.Network(\"psc_ilb_network\", {\n name: \"psc-ilb-network\",\n autoCreateSubnetworks: false,\n});\nconst pscIlbProducerSubnetwork = new gcp.compute.Subnetwork(\"psc_ilb_producer_subnetwork\", {\n name: \"psc-ilb-producer-subnetwork\",\n region: \"us-west2\",\n network: pscIlbNetwork.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscIlbTargetService = new gcp.compute.ForwardingRule(\"psc_ilb_target_service\", {\n name: \"producer-forwarding-rule\",\n region: \"us-west2\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: producerServiceBackend.id,\n allPorts: true,\n network: pscIlbNetwork.name,\n subnetwork: pscIlbProducerSubnetwork.name,\n});\nconst pscIlbNat = new gcp.compute.Subnetwork(\"psc_ilb_nat\", {\n name: \"psc-ilb-nat\",\n region: \"us-west2\",\n network: pscIlbNetwork.id,\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n ipCidrRange: \"10.1.0.0/16\",\n});\nconst pscIlbServiceAttachment = new gcp.compute.ServiceAttachment(\"psc_ilb_service_attachment\", {\n name: \"my-psc-ilb\",\n region: \"us-west2\",\n description: \"A service attachment configured with Terraform\",\n domainNames: [\"gcp.tfacc.hashicorptest.com.\"],\n enableProxyProtocol: true,\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n natSubnets: [pscIlbNat.id],\n targetService: pscIlbTargetService.id,\n});\nconst pscIlbConsumerAddress = new gcp.compute.Address(\"psc_ilb_consumer_address\", {\n name: \"psc-ilb-consumer-address\",\n region: \"us-west2\",\n subnetwork: \"default\",\n addressType: \"INTERNAL\",\n});\nconst pscIlbConsumer = new gcp.compute.ForwardingRule(\"psc_ilb_consumer\", {\n name: \"psc-ilb-consumer-forwarding-rule\",\n region: \"us-west2\",\n target: pscIlbServiceAttachment.id,\n loadBalancingScheme: \"\",\n network: \"default\",\n ipAddress: pscIlbConsumerAddress.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproducer_service_health_check = gcp.compute.HealthCheck(\"producer_service_health_check\",\n name=\"producer-service-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nproducer_service_backend = gcp.compute.RegionBackendService(\"producer_service_backend\",\n name=\"producer-service\",\n region=\"us-west2\",\n health_checks=producer_service_health_check.id)\npsc_ilb_network = gcp.compute.Network(\"psc_ilb_network\",\n name=\"psc-ilb-network\",\n auto_create_subnetworks=False)\npsc_ilb_producer_subnetwork = gcp.compute.Subnetwork(\"psc_ilb_producer_subnetwork\",\n name=\"psc-ilb-producer-subnetwork\",\n region=\"us-west2\",\n network=psc_ilb_network.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_ilb_target_service = gcp.compute.ForwardingRule(\"psc_ilb_target_service\",\n name=\"producer-forwarding-rule\",\n region=\"us-west2\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=producer_service_backend.id,\n all_ports=True,\n network=psc_ilb_network.name,\n subnetwork=psc_ilb_producer_subnetwork.name)\npsc_ilb_nat = gcp.compute.Subnetwork(\"psc_ilb_nat\",\n name=\"psc-ilb-nat\",\n region=\"us-west2\",\n network=psc_ilb_network.id,\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n ip_cidr_range=\"10.1.0.0/16\")\npsc_ilb_service_attachment = gcp.compute.ServiceAttachment(\"psc_ilb_service_attachment\",\n name=\"my-psc-ilb\",\n region=\"us-west2\",\n description=\"A service attachment configured with Terraform\",\n domain_names=[\"gcp.tfacc.hashicorptest.com.\"],\n enable_proxy_protocol=True,\n connection_preference=\"ACCEPT_AUTOMATIC\",\n nat_subnets=[psc_ilb_nat.id],\n target_service=psc_ilb_target_service.id)\npsc_ilb_consumer_address = gcp.compute.Address(\"psc_ilb_consumer_address\",\n name=\"psc-ilb-consumer-address\",\n region=\"us-west2\",\n subnetwork=\"default\",\n address_type=\"INTERNAL\")\npsc_ilb_consumer = gcp.compute.ForwardingRule(\"psc_ilb_consumer\",\n name=\"psc-ilb-consumer-forwarding-rule\",\n region=\"us-west2\",\n target=psc_ilb_service_attachment.id,\n load_balancing_scheme=\"\",\n network=\"default\",\n ip_address=psc_ilb_consumer_address.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 producerServiceHealthCheck = new Gcp.Compute.HealthCheck(\"producer_service_health_check\", new()\n {\n Name = \"producer-service-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var producerServiceBackend = new Gcp.Compute.RegionBackendService(\"producer_service_backend\", new()\n {\n Name = \"producer-service\",\n Region = \"us-west2\",\n HealthChecks = producerServiceHealthCheck.Id,\n });\n\n var pscIlbNetwork = new Gcp.Compute.Network(\"psc_ilb_network\", new()\n {\n Name = \"psc-ilb-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscIlbProducerSubnetwork = new Gcp.Compute.Subnetwork(\"psc_ilb_producer_subnetwork\", new()\n {\n Name = \"psc-ilb-producer-subnetwork\",\n Region = \"us-west2\",\n Network = pscIlbNetwork.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscIlbTargetService = new Gcp.Compute.ForwardingRule(\"psc_ilb_target_service\", new()\n {\n Name = \"producer-forwarding-rule\",\n Region = \"us-west2\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = producerServiceBackend.Id,\n AllPorts = true,\n Network = pscIlbNetwork.Name,\n Subnetwork = pscIlbProducerSubnetwork.Name,\n });\n\n var pscIlbNat = new Gcp.Compute.Subnetwork(\"psc_ilb_nat\", new()\n {\n Name = \"psc-ilb-nat\",\n Region = \"us-west2\",\n Network = pscIlbNetwork.Id,\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n IpCidrRange = \"10.1.0.0/16\",\n });\n\n var pscIlbServiceAttachment = new Gcp.Compute.ServiceAttachment(\"psc_ilb_service_attachment\", new()\n {\n Name = \"my-psc-ilb\",\n Region = \"us-west2\",\n Description = \"A service attachment configured with Terraform\",\n DomainNames = new[]\n {\n \"gcp.tfacc.hashicorptest.com.\",\n },\n EnableProxyProtocol = true,\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n NatSubnets = new[]\n {\n pscIlbNat.Id,\n },\n TargetService = pscIlbTargetService.Id,\n });\n\n var pscIlbConsumerAddress = new Gcp.Compute.Address(\"psc_ilb_consumer_address\", new()\n {\n Name = \"psc-ilb-consumer-address\",\n Region = \"us-west2\",\n Subnetwork = \"default\",\n AddressType = \"INTERNAL\",\n });\n\n var pscIlbConsumer = new Gcp.Compute.ForwardingRule(\"psc_ilb_consumer\", new()\n {\n Name = \"psc-ilb-consumer-forwarding-rule\",\n Region = \"us-west2\",\n Target = pscIlbServiceAttachment.Id,\n LoadBalancingScheme = \"\",\n Network = \"default\",\n IpAddress = pscIlbConsumerAddress.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproducerServiceHealthCheck, err := compute.NewHealthCheck(ctx, \"producer_service_health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"producer-service-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceBackend, err := compute.NewRegionBackendService(ctx, \"producer_service_backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"producer-service\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tHealthChecks: producerServiceHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbNetwork, err := compute.NewNetwork(ctx, \"psc_ilb_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-network\"),\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\tpscIlbProducerSubnetwork, err := compute.NewSubnetwork(ctx, \"psc_ilb_producer_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-producer-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tNetwork: pscIlbNetwork.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbTargetService, err := compute.NewForwardingRule(ctx, \"psc_ilb_target_service\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"producer-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: producerServiceBackend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: pscIlbNetwork.Name,\n\t\t\tSubnetwork: pscIlbProducerSubnetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbNat, err := compute.NewSubnetwork(ctx, \"psc_ilb_nat\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-nat\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tNetwork: pscIlbNetwork.ID(),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbServiceAttachment, err := compute.NewServiceAttachment(ctx, \"psc_ilb_service_attachment\", \u0026compute.ServiceAttachmentArgs{\n\t\t\tName: pulumi.String(\"my-psc-ilb\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tDescription: pulumi.String(\"A service attachment configured with Terraform\"),\n\t\t\tDomainNames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"gcp.tfacc.hashicorptest.com.\"),\n\t\t\t},\n\t\t\tEnableProxyProtocol: pulumi.Bool(true),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tNatSubnets: pulumi.StringArray{\n\t\t\t\tpscIlbNat.ID(),\n\t\t\t},\n\t\t\tTargetService: pscIlbTargetService.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbConsumerAddress, err := compute.NewAddress(ctx, \"psc_ilb_consumer_address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-consumer-address\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewForwardingRule(ctx, \"psc_ilb_consumer\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-consumer-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tTarget: pscIlbServiceAttachment.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tIpAddress: pscIlbConsumerAddress.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.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 com.pulumi.gcp.compute.ServiceAttachment;\nimport com.pulumi.gcp.compute.ServiceAttachmentArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\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 producerServiceHealthCheck = new HealthCheck(\"producerServiceHealthCheck\", HealthCheckArgs.builder()\n .name(\"producer-service-health-check\")\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 .name(\"producer-service\")\n .region(\"us-west2\")\n .healthChecks(producerServiceHealthCheck.id())\n .build());\n\n var pscIlbNetwork = new Network(\"pscIlbNetwork\", NetworkArgs.builder()\n .name(\"psc-ilb-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscIlbProducerSubnetwork = new Subnetwork(\"pscIlbProducerSubnetwork\", SubnetworkArgs.builder()\n .name(\"psc-ilb-producer-subnetwork\")\n .region(\"us-west2\")\n .network(pscIlbNetwork.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscIlbTargetService = new ForwardingRule(\"pscIlbTargetService\", ForwardingRuleArgs.builder()\n .name(\"producer-forwarding-rule\")\n .region(\"us-west2\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(producerServiceBackend.id())\n .allPorts(true)\n .network(pscIlbNetwork.name())\n .subnetwork(pscIlbProducerSubnetwork.name())\n .build());\n\n var pscIlbNat = new Subnetwork(\"pscIlbNat\", SubnetworkArgs.builder()\n .name(\"psc-ilb-nat\")\n .region(\"us-west2\")\n .network(pscIlbNetwork.id())\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .ipCidrRange(\"10.1.0.0/16\")\n .build());\n\n var pscIlbServiceAttachment = new ServiceAttachment(\"pscIlbServiceAttachment\", ServiceAttachmentArgs.builder()\n .name(\"my-psc-ilb\")\n .region(\"us-west2\")\n .description(\"A service attachment configured with Terraform\")\n .domainNames(\"gcp.tfacc.hashicorptest.com.\")\n .enableProxyProtocol(true)\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .natSubnets(pscIlbNat.id())\n .targetService(pscIlbTargetService.id())\n .build());\n\n var pscIlbConsumerAddress = new Address(\"pscIlbConsumerAddress\", AddressArgs.builder()\n .name(\"psc-ilb-consumer-address\")\n .region(\"us-west2\")\n .subnetwork(\"default\")\n .addressType(\"INTERNAL\")\n .build());\n\n var pscIlbConsumer = new ForwardingRule(\"pscIlbConsumer\", ForwardingRuleArgs.builder()\n .name(\"psc-ilb-consumer-forwarding-rule\")\n .region(\"us-west2\")\n .target(pscIlbServiceAttachment.id())\n .loadBalancingScheme(\"\")\n .network(\"default\")\n .ipAddress(pscIlbConsumerAddress.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscIlbServiceAttachment:\n type: gcp:compute:ServiceAttachment\n name: psc_ilb_service_attachment\n properties:\n name: my-psc-ilb\n region: us-west2\n description: A service attachment configured with Terraform\n domainNames:\n - gcp.tfacc.hashicorptest.com.\n enableProxyProtocol: true\n connectionPreference: ACCEPT_AUTOMATIC\n natSubnets:\n - ${pscIlbNat.id}\n targetService: ${pscIlbTargetService.id}\n pscIlbConsumerAddress:\n type: gcp:compute:Address\n name: psc_ilb_consumer_address\n properties:\n name: psc-ilb-consumer-address\n region: us-west2\n subnetwork: default\n addressType: INTERNAL\n pscIlbConsumer:\n type: gcp:compute:ForwardingRule\n name: psc_ilb_consumer\n properties:\n name: psc-ilb-consumer-forwarding-rule\n region: us-west2\n target: ${pscIlbServiceAttachment.id}\n loadBalancingScheme:\n network: default\n ipAddress: ${pscIlbConsumerAddress.id}\n pscIlbTargetService:\n type: gcp:compute:ForwardingRule\n name: psc_ilb_target_service\n properties:\n name: producer-forwarding-rule\n region: us-west2\n loadBalancingScheme: INTERNAL\n backendService: ${producerServiceBackend.id}\n allPorts: true\n network: ${pscIlbNetwork.name}\n subnetwork: ${pscIlbProducerSubnetwork.name}\n producerServiceBackend:\n type: gcp:compute:RegionBackendService\n name: producer_service_backend\n properties:\n name: producer-service\n region: us-west2\n healthChecks: ${producerServiceHealthCheck.id}\n producerServiceHealthCheck:\n type: gcp:compute:HealthCheck\n name: producer_service_health_check\n properties:\n name: producer-service-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n pscIlbNetwork:\n type: gcp:compute:Network\n name: psc_ilb_network\n properties:\n name: psc-ilb-network\n autoCreateSubnetworks: false\n pscIlbProducerSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc_ilb_producer_subnetwork\n properties:\n name: psc-ilb-producer-subnetwork\n region: us-west2\n network: ${pscIlbNetwork.id}\n ipCidrRange: 10.0.0.0/16\n pscIlbNat:\n type: gcp:compute:Subnetwork\n name: psc_ilb_nat\n properties:\n name: psc-ilb-nat\n region: us-west2\n network: ${pscIlbNetwork.id}\n purpose: PRIVATE_SERVICE_CONNECT\n ipCidrRange: 10.1.0.0/16\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Service Attachment Explicit Projects\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst producerServiceHealthCheck = new gcp.compute.HealthCheck(\"producer_service_health_check\", {\n name: \"producer-service-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst producerServiceBackend = new gcp.compute.RegionBackendService(\"producer_service_backend\", {\n name: \"producer-service\",\n region: \"us-west2\",\n healthChecks: producerServiceHealthCheck.id,\n});\nconst pscIlbNetwork = new gcp.compute.Network(\"psc_ilb_network\", {\n name: \"psc-ilb-network\",\n autoCreateSubnetworks: false,\n});\nconst pscIlbProducerSubnetwork = new gcp.compute.Subnetwork(\"psc_ilb_producer_subnetwork\", {\n name: \"psc-ilb-producer-subnetwork\",\n region: \"us-west2\",\n network: pscIlbNetwork.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscIlbTargetService = new gcp.compute.ForwardingRule(\"psc_ilb_target_service\", {\n name: \"producer-forwarding-rule\",\n region: \"us-west2\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: producerServiceBackend.id,\n allPorts: true,\n network: pscIlbNetwork.name,\n subnetwork: pscIlbProducerSubnetwork.name,\n});\nconst pscIlbNat = new gcp.compute.Subnetwork(\"psc_ilb_nat\", {\n name: \"psc-ilb-nat\",\n region: \"us-west2\",\n network: pscIlbNetwork.id,\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n ipCidrRange: \"10.1.0.0/16\",\n});\nconst pscIlbServiceAttachment = new gcp.compute.ServiceAttachment(\"psc_ilb_service_attachment\", {\n name: \"my-psc-ilb\",\n region: \"us-west2\",\n description: \"A service attachment configured with Terraform\",\n domainNames: [\"gcp.tfacc.hashicorptest.com.\"],\n enableProxyProtocol: true,\n connectionPreference: \"ACCEPT_MANUAL\",\n natSubnets: [pscIlbNat.id],\n targetService: pscIlbTargetService.id,\n consumerRejectLists: [\n \"673497134629\",\n \"482878270665\",\n ],\n consumerAcceptLists: [{\n projectIdOrNum: \"658859330310\",\n connectionLimit: 4,\n }],\n});\nconst pscIlbConsumerAddress = new gcp.compute.Address(\"psc_ilb_consumer_address\", {\n name: \"psc-ilb-consumer-address\",\n region: \"us-west2\",\n subnetwork: \"default\",\n addressType: \"INTERNAL\",\n});\nconst pscIlbConsumer = new gcp.compute.ForwardingRule(\"psc_ilb_consumer\", {\n name: \"psc-ilb-consumer-forwarding-rule\",\n region: \"us-west2\",\n target: pscIlbServiceAttachment.id,\n loadBalancingScheme: \"\",\n network: \"default\",\n ipAddress: pscIlbConsumerAddress.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproducer_service_health_check = gcp.compute.HealthCheck(\"producer_service_health_check\",\n name=\"producer-service-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nproducer_service_backend = gcp.compute.RegionBackendService(\"producer_service_backend\",\n name=\"producer-service\",\n region=\"us-west2\",\n health_checks=producer_service_health_check.id)\npsc_ilb_network = gcp.compute.Network(\"psc_ilb_network\",\n name=\"psc-ilb-network\",\n auto_create_subnetworks=False)\npsc_ilb_producer_subnetwork = gcp.compute.Subnetwork(\"psc_ilb_producer_subnetwork\",\n name=\"psc-ilb-producer-subnetwork\",\n region=\"us-west2\",\n network=psc_ilb_network.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_ilb_target_service = gcp.compute.ForwardingRule(\"psc_ilb_target_service\",\n name=\"producer-forwarding-rule\",\n region=\"us-west2\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=producer_service_backend.id,\n all_ports=True,\n network=psc_ilb_network.name,\n subnetwork=psc_ilb_producer_subnetwork.name)\npsc_ilb_nat = gcp.compute.Subnetwork(\"psc_ilb_nat\",\n name=\"psc-ilb-nat\",\n region=\"us-west2\",\n network=psc_ilb_network.id,\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n ip_cidr_range=\"10.1.0.0/16\")\npsc_ilb_service_attachment = gcp.compute.ServiceAttachment(\"psc_ilb_service_attachment\",\n name=\"my-psc-ilb\",\n region=\"us-west2\",\n description=\"A service attachment configured with Terraform\",\n domain_names=[\"gcp.tfacc.hashicorptest.com.\"],\n enable_proxy_protocol=True,\n connection_preference=\"ACCEPT_MANUAL\",\n nat_subnets=[psc_ilb_nat.id],\n target_service=psc_ilb_target_service.id,\n consumer_reject_lists=[\n \"673497134629\",\n \"482878270665\",\n ],\n consumer_accept_lists=[{\n \"projectIdOrNum\": \"658859330310\",\n \"connectionLimit\": 4,\n }])\npsc_ilb_consumer_address = gcp.compute.Address(\"psc_ilb_consumer_address\",\n name=\"psc-ilb-consumer-address\",\n region=\"us-west2\",\n subnetwork=\"default\",\n address_type=\"INTERNAL\")\npsc_ilb_consumer = gcp.compute.ForwardingRule(\"psc_ilb_consumer\",\n name=\"psc-ilb-consumer-forwarding-rule\",\n region=\"us-west2\",\n target=psc_ilb_service_attachment.id,\n load_balancing_scheme=\"\",\n network=\"default\",\n ip_address=psc_ilb_consumer_address.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 producerServiceHealthCheck = new Gcp.Compute.HealthCheck(\"producer_service_health_check\", new()\n {\n Name = \"producer-service-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var producerServiceBackend = new Gcp.Compute.RegionBackendService(\"producer_service_backend\", new()\n {\n Name = \"producer-service\",\n Region = \"us-west2\",\n HealthChecks = producerServiceHealthCheck.Id,\n });\n\n var pscIlbNetwork = new Gcp.Compute.Network(\"psc_ilb_network\", new()\n {\n Name = \"psc-ilb-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscIlbProducerSubnetwork = new Gcp.Compute.Subnetwork(\"psc_ilb_producer_subnetwork\", new()\n {\n Name = \"psc-ilb-producer-subnetwork\",\n Region = \"us-west2\",\n Network = pscIlbNetwork.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscIlbTargetService = new Gcp.Compute.ForwardingRule(\"psc_ilb_target_service\", new()\n {\n Name = \"producer-forwarding-rule\",\n Region = \"us-west2\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = producerServiceBackend.Id,\n AllPorts = true,\n Network = pscIlbNetwork.Name,\n Subnetwork = pscIlbProducerSubnetwork.Name,\n });\n\n var pscIlbNat = new Gcp.Compute.Subnetwork(\"psc_ilb_nat\", new()\n {\n Name = \"psc-ilb-nat\",\n Region = \"us-west2\",\n Network = pscIlbNetwork.Id,\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n IpCidrRange = \"10.1.0.0/16\",\n });\n\n var pscIlbServiceAttachment = new Gcp.Compute.ServiceAttachment(\"psc_ilb_service_attachment\", new()\n {\n Name = \"my-psc-ilb\",\n Region = \"us-west2\",\n Description = \"A service attachment configured with Terraform\",\n DomainNames = new[]\n {\n \"gcp.tfacc.hashicorptest.com.\",\n },\n EnableProxyProtocol = true,\n ConnectionPreference = \"ACCEPT_MANUAL\",\n NatSubnets = new[]\n {\n pscIlbNat.Id,\n },\n TargetService = pscIlbTargetService.Id,\n ConsumerRejectLists = new[]\n {\n \"673497134629\",\n \"482878270665\",\n },\n ConsumerAcceptLists = new[]\n {\n new Gcp.Compute.Inputs.ServiceAttachmentConsumerAcceptListArgs\n {\n ProjectIdOrNum = \"658859330310\",\n ConnectionLimit = 4,\n },\n },\n });\n\n var pscIlbConsumerAddress = new Gcp.Compute.Address(\"psc_ilb_consumer_address\", new()\n {\n Name = \"psc-ilb-consumer-address\",\n Region = \"us-west2\",\n Subnetwork = \"default\",\n AddressType = \"INTERNAL\",\n });\n\n var pscIlbConsumer = new Gcp.Compute.ForwardingRule(\"psc_ilb_consumer\", new()\n {\n Name = \"psc-ilb-consumer-forwarding-rule\",\n Region = \"us-west2\",\n Target = pscIlbServiceAttachment.Id,\n LoadBalancingScheme = \"\",\n Network = \"default\",\n IpAddress = pscIlbConsumerAddress.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproducerServiceHealthCheck, err := compute.NewHealthCheck(ctx, \"producer_service_health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"producer-service-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceBackend, err := compute.NewRegionBackendService(ctx, \"producer_service_backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"producer-service\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tHealthChecks: producerServiceHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbNetwork, err := compute.NewNetwork(ctx, \"psc_ilb_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-network\"),\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\tpscIlbProducerSubnetwork, err := compute.NewSubnetwork(ctx, \"psc_ilb_producer_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-producer-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tNetwork: pscIlbNetwork.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbTargetService, err := compute.NewForwardingRule(ctx, \"psc_ilb_target_service\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"producer-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: producerServiceBackend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: pscIlbNetwork.Name,\n\t\t\tSubnetwork: pscIlbProducerSubnetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbNat, err := compute.NewSubnetwork(ctx, \"psc_ilb_nat\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-nat\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tNetwork: pscIlbNetwork.ID(),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbServiceAttachment, err := compute.NewServiceAttachment(ctx, \"psc_ilb_service_attachment\", \u0026compute.ServiceAttachmentArgs{\n\t\t\tName: pulumi.String(\"my-psc-ilb\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tDescription: pulumi.String(\"A service attachment configured with Terraform\"),\n\t\t\tDomainNames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"gcp.tfacc.hashicorptest.com.\"),\n\t\t\t},\n\t\t\tEnableProxyProtocol: pulumi.Bool(true),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_MANUAL\"),\n\t\t\tNatSubnets: pulumi.StringArray{\n\t\t\t\tpscIlbNat.ID(),\n\t\t\t},\n\t\t\tTargetService: pscIlbTargetService.ID(),\n\t\t\tConsumerRejectLists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"673497134629\"),\n\t\t\t\tpulumi.String(\"482878270665\"),\n\t\t\t},\n\t\t\tConsumerAcceptLists: compute.ServiceAttachmentConsumerAcceptListArray{\n\t\t\t\t\u0026compute.ServiceAttachmentConsumerAcceptListArgs{\n\t\t\t\t\tProjectIdOrNum: pulumi.String(\"658859330310\"),\n\t\t\t\t\tConnectionLimit: pulumi.Int(4),\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\tpscIlbConsumerAddress, err := compute.NewAddress(ctx, \"psc_ilb_consumer_address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-consumer-address\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewForwardingRule(ctx, \"psc_ilb_consumer\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-consumer-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tTarget: pscIlbServiceAttachment.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tIpAddress: pscIlbConsumerAddress.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.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 com.pulumi.gcp.compute.ServiceAttachment;\nimport com.pulumi.gcp.compute.ServiceAttachmentArgs;\nimport com.pulumi.gcp.compute.inputs.ServiceAttachmentConsumerAcceptListArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\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 producerServiceHealthCheck = new HealthCheck(\"producerServiceHealthCheck\", HealthCheckArgs.builder()\n .name(\"producer-service-health-check\")\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 .name(\"producer-service\")\n .region(\"us-west2\")\n .healthChecks(producerServiceHealthCheck.id())\n .build());\n\n var pscIlbNetwork = new Network(\"pscIlbNetwork\", NetworkArgs.builder()\n .name(\"psc-ilb-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscIlbProducerSubnetwork = new Subnetwork(\"pscIlbProducerSubnetwork\", SubnetworkArgs.builder()\n .name(\"psc-ilb-producer-subnetwork\")\n .region(\"us-west2\")\n .network(pscIlbNetwork.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscIlbTargetService = new ForwardingRule(\"pscIlbTargetService\", ForwardingRuleArgs.builder()\n .name(\"producer-forwarding-rule\")\n .region(\"us-west2\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(producerServiceBackend.id())\n .allPorts(true)\n .network(pscIlbNetwork.name())\n .subnetwork(pscIlbProducerSubnetwork.name())\n .build());\n\n var pscIlbNat = new Subnetwork(\"pscIlbNat\", SubnetworkArgs.builder()\n .name(\"psc-ilb-nat\")\n .region(\"us-west2\")\n .network(pscIlbNetwork.id())\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .ipCidrRange(\"10.1.0.0/16\")\n .build());\n\n var pscIlbServiceAttachment = new ServiceAttachment(\"pscIlbServiceAttachment\", ServiceAttachmentArgs.builder()\n .name(\"my-psc-ilb\")\n .region(\"us-west2\")\n .description(\"A service attachment configured with Terraform\")\n .domainNames(\"gcp.tfacc.hashicorptest.com.\")\n .enableProxyProtocol(true)\n .connectionPreference(\"ACCEPT_MANUAL\")\n .natSubnets(pscIlbNat.id())\n .targetService(pscIlbTargetService.id())\n .consumerRejectLists( \n \"673497134629\",\n \"482878270665\")\n .consumerAcceptLists(ServiceAttachmentConsumerAcceptListArgs.builder()\n .projectIdOrNum(\"658859330310\")\n .connectionLimit(4)\n .build())\n .build());\n\n var pscIlbConsumerAddress = new Address(\"pscIlbConsumerAddress\", AddressArgs.builder()\n .name(\"psc-ilb-consumer-address\")\n .region(\"us-west2\")\n .subnetwork(\"default\")\n .addressType(\"INTERNAL\")\n .build());\n\n var pscIlbConsumer = new ForwardingRule(\"pscIlbConsumer\", ForwardingRuleArgs.builder()\n .name(\"psc-ilb-consumer-forwarding-rule\")\n .region(\"us-west2\")\n .target(pscIlbServiceAttachment.id())\n .loadBalancingScheme(\"\")\n .network(\"default\")\n .ipAddress(pscIlbConsumerAddress.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscIlbServiceAttachment:\n type: gcp:compute:ServiceAttachment\n name: psc_ilb_service_attachment\n properties:\n name: my-psc-ilb\n region: us-west2\n description: A service attachment configured with Terraform\n domainNames:\n - gcp.tfacc.hashicorptest.com.\n enableProxyProtocol: true\n connectionPreference: ACCEPT_MANUAL\n natSubnets:\n - ${pscIlbNat.id}\n targetService: ${pscIlbTargetService.id}\n consumerRejectLists:\n - '673497134629'\n - '482878270665'\n consumerAcceptLists:\n - projectIdOrNum: '658859330310'\n connectionLimit: 4\n pscIlbConsumerAddress:\n type: gcp:compute:Address\n name: psc_ilb_consumer_address\n properties:\n name: psc-ilb-consumer-address\n region: us-west2\n subnetwork: default\n addressType: INTERNAL\n pscIlbConsumer:\n type: gcp:compute:ForwardingRule\n name: psc_ilb_consumer\n properties:\n name: psc-ilb-consumer-forwarding-rule\n region: us-west2\n target: ${pscIlbServiceAttachment.id}\n loadBalancingScheme:\n network: default\n ipAddress: ${pscIlbConsumerAddress.id}\n pscIlbTargetService:\n type: gcp:compute:ForwardingRule\n name: psc_ilb_target_service\n properties:\n name: producer-forwarding-rule\n region: us-west2\n loadBalancingScheme: INTERNAL\n backendService: ${producerServiceBackend.id}\n allPorts: true\n network: ${pscIlbNetwork.name}\n subnetwork: ${pscIlbProducerSubnetwork.name}\n producerServiceBackend:\n type: gcp:compute:RegionBackendService\n name: producer_service_backend\n properties:\n name: producer-service\n region: us-west2\n healthChecks: ${producerServiceHealthCheck.id}\n producerServiceHealthCheck:\n type: gcp:compute:HealthCheck\n name: producer_service_health_check\n properties:\n name: producer-service-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n pscIlbNetwork:\n type: gcp:compute:Network\n name: psc_ilb_network\n properties:\n name: psc-ilb-network\n autoCreateSubnetworks: false\n pscIlbProducerSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc_ilb_producer_subnetwork\n properties:\n name: psc-ilb-producer-subnetwork\n region: us-west2\n network: ${pscIlbNetwork.id}\n ipCidrRange: 10.0.0.0/16\n pscIlbNat:\n type: gcp:compute:Subnetwork\n name: psc_ilb_nat\n properties:\n name: psc-ilb-nat\n region: us-west2\n network: ${pscIlbNetwork.id}\n purpose: PRIVATE_SERVICE_CONNECT\n ipCidrRange: 10.1.0.0/16\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Service Attachment Explicit Networks\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pscIlbConsumerNetwork = new gcp.compute.Network(\"psc_ilb_consumer_network\", {\n name: \"psc-ilb-consumer-network\",\n autoCreateSubnetworks: false,\n});\nconst producerServiceHealthCheck = new gcp.compute.HealthCheck(\"producer_service_health_check\", {\n name: \"producer-service-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst producerServiceBackend = new gcp.compute.RegionBackendService(\"producer_service_backend\", {\n name: \"producer-service\",\n region: \"us-west2\",\n healthChecks: producerServiceHealthCheck.id,\n});\nconst pscIlbNetwork = new gcp.compute.Network(\"psc_ilb_network\", {\n name: \"psc-ilb-network\",\n autoCreateSubnetworks: false,\n});\nconst pscIlbProducerSubnetwork = new gcp.compute.Subnetwork(\"psc_ilb_producer_subnetwork\", {\n name: \"psc-ilb-producer-subnetwork\",\n region: \"us-west2\",\n network: pscIlbNetwork.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscIlbTargetService = new gcp.compute.ForwardingRule(\"psc_ilb_target_service\", {\n name: \"producer-forwarding-rule\",\n region: \"us-west2\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: producerServiceBackend.id,\n allPorts: true,\n network: pscIlbNetwork.name,\n subnetwork: pscIlbProducerSubnetwork.name,\n});\nconst pscIlbNat = new gcp.compute.Subnetwork(\"psc_ilb_nat\", {\n name: \"psc-ilb-nat\",\n region: \"us-west2\",\n network: pscIlbNetwork.id,\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n ipCidrRange: \"10.1.0.0/16\",\n});\nconst pscIlbServiceAttachment = new gcp.compute.ServiceAttachment(\"psc_ilb_service_attachment\", {\n name: \"my-psc-ilb\",\n region: \"us-west2\",\n description: \"A service attachment configured with Terraform\",\n enableProxyProtocol: false,\n connectionPreference: \"ACCEPT_MANUAL\",\n natSubnets: [pscIlbNat.id],\n targetService: pscIlbTargetService.id,\n consumerAcceptLists: [{\n networkUrl: pscIlbConsumerNetwork.selfLink,\n connectionLimit: 1,\n }],\n});\nconst pscIlbConsumerSubnetwork = new gcp.compute.Subnetwork(\"psc_ilb_consumer_subnetwork\", {\n name: \"psc-ilb-consumer-network\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-west2\",\n network: pscIlbConsumerNetwork.id,\n});\nconst pscIlbConsumerAddress = new gcp.compute.Address(\"psc_ilb_consumer_address\", {\n name: \"psc-ilb-consumer-address\",\n region: \"us-west2\",\n subnetwork: pscIlbConsumerSubnetwork.id,\n addressType: \"INTERNAL\",\n});\nconst pscIlbConsumer = new gcp.compute.ForwardingRule(\"psc_ilb_consumer\", {\n name: \"psc-ilb-consumer-forwarding-rule\",\n region: \"us-west2\",\n target: pscIlbServiceAttachment.id,\n loadBalancingScheme: \"\",\n network: pscIlbConsumerNetwork.id,\n subnetwork: pscIlbConsumerSubnetwork.id,\n ipAddress: pscIlbConsumerAddress.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc_ilb_consumer_network = gcp.compute.Network(\"psc_ilb_consumer_network\",\n name=\"psc-ilb-consumer-network\",\n auto_create_subnetworks=False)\nproducer_service_health_check = gcp.compute.HealthCheck(\"producer_service_health_check\",\n name=\"producer-service-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nproducer_service_backend = gcp.compute.RegionBackendService(\"producer_service_backend\",\n name=\"producer-service\",\n region=\"us-west2\",\n health_checks=producer_service_health_check.id)\npsc_ilb_network = gcp.compute.Network(\"psc_ilb_network\",\n name=\"psc-ilb-network\",\n auto_create_subnetworks=False)\npsc_ilb_producer_subnetwork = gcp.compute.Subnetwork(\"psc_ilb_producer_subnetwork\",\n name=\"psc-ilb-producer-subnetwork\",\n region=\"us-west2\",\n network=psc_ilb_network.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_ilb_target_service = gcp.compute.ForwardingRule(\"psc_ilb_target_service\",\n name=\"producer-forwarding-rule\",\n region=\"us-west2\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=producer_service_backend.id,\n all_ports=True,\n network=psc_ilb_network.name,\n subnetwork=psc_ilb_producer_subnetwork.name)\npsc_ilb_nat = gcp.compute.Subnetwork(\"psc_ilb_nat\",\n name=\"psc-ilb-nat\",\n region=\"us-west2\",\n network=psc_ilb_network.id,\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n ip_cidr_range=\"10.1.0.0/16\")\npsc_ilb_service_attachment = gcp.compute.ServiceAttachment(\"psc_ilb_service_attachment\",\n name=\"my-psc-ilb\",\n region=\"us-west2\",\n description=\"A service attachment configured with Terraform\",\n enable_proxy_protocol=False,\n connection_preference=\"ACCEPT_MANUAL\",\n nat_subnets=[psc_ilb_nat.id],\n target_service=psc_ilb_target_service.id,\n consumer_accept_lists=[{\n \"networkUrl\": psc_ilb_consumer_network.self_link,\n \"connectionLimit\": 1,\n }])\npsc_ilb_consumer_subnetwork = gcp.compute.Subnetwork(\"psc_ilb_consumer_subnetwork\",\n name=\"psc-ilb-consumer-network\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-west2\",\n network=psc_ilb_consumer_network.id)\npsc_ilb_consumer_address = gcp.compute.Address(\"psc_ilb_consumer_address\",\n name=\"psc-ilb-consumer-address\",\n region=\"us-west2\",\n subnetwork=psc_ilb_consumer_subnetwork.id,\n address_type=\"INTERNAL\")\npsc_ilb_consumer = gcp.compute.ForwardingRule(\"psc_ilb_consumer\",\n name=\"psc-ilb-consumer-forwarding-rule\",\n region=\"us-west2\",\n target=psc_ilb_service_attachment.id,\n load_balancing_scheme=\"\",\n network=psc_ilb_consumer_network.id,\n subnetwork=psc_ilb_consumer_subnetwork.id,\n ip_address=psc_ilb_consumer_address.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 pscIlbConsumerNetwork = new Gcp.Compute.Network(\"psc_ilb_consumer_network\", new()\n {\n Name = \"psc-ilb-consumer-network\",\n AutoCreateSubnetworks = false,\n });\n\n var producerServiceHealthCheck = new Gcp.Compute.HealthCheck(\"producer_service_health_check\", new()\n {\n Name = \"producer-service-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var producerServiceBackend = new Gcp.Compute.RegionBackendService(\"producer_service_backend\", new()\n {\n Name = \"producer-service\",\n Region = \"us-west2\",\n HealthChecks = producerServiceHealthCheck.Id,\n });\n\n var pscIlbNetwork = new Gcp.Compute.Network(\"psc_ilb_network\", new()\n {\n Name = \"psc-ilb-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscIlbProducerSubnetwork = new Gcp.Compute.Subnetwork(\"psc_ilb_producer_subnetwork\", new()\n {\n Name = \"psc-ilb-producer-subnetwork\",\n Region = \"us-west2\",\n Network = pscIlbNetwork.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscIlbTargetService = new Gcp.Compute.ForwardingRule(\"psc_ilb_target_service\", new()\n {\n Name = \"producer-forwarding-rule\",\n Region = \"us-west2\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = producerServiceBackend.Id,\n AllPorts = true,\n Network = pscIlbNetwork.Name,\n Subnetwork = pscIlbProducerSubnetwork.Name,\n });\n\n var pscIlbNat = new Gcp.Compute.Subnetwork(\"psc_ilb_nat\", new()\n {\n Name = \"psc-ilb-nat\",\n Region = \"us-west2\",\n Network = pscIlbNetwork.Id,\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n IpCidrRange = \"10.1.0.0/16\",\n });\n\n var pscIlbServiceAttachment = new Gcp.Compute.ServiceAttachment(\"psc_ilb_service_attachment\", new()\n {\n Name = \"my-psc-ilb\",\n Region = \"us-west2\",\n Description = \"A service attachment configured with Terraform\",\n EnableProxyProtocol = false,\n ConnectionPreference = \"ACCEPT_MANUAL\",\n NatSubnets = new[]\n {\n pscIlbNat.Id,\n },\n TargetService = pscIlbTargetService.Id,\n ConsumerAcceptLists = new[]\n {\n new Gcp.Compute.Inputs.ServiceAttachmentConsumerAcceptListArgs\n {\n NetworkUrl = pscIlbConsumerNetwork.SelfLink,\n ConnectionLimit = 1,\n },\n },\n });\n\n var pscIlbConsumerSubnetwork = new Gcp.Compute.Subnetwork(\"psc_ilb_consumer_subnetwork\", new()\n {\n Name = \"psc-ilb-consumer-network\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-west2\",\n Network = pscIlbConsumerNetwork.Id,\n });\n\n var pscIlbConsumerAddress = new Gcp.Compute.Address(\"psc_ilb_consumer_address\", new()\n {\n Name = \"psc-ilb-consumer-address\",\n Region = \"us-west2\",\n Subnetwork = pscIlbConsumerSubnetwork.Id,\n AddressType = \"INTERNAL\",\n });\n\n var pscIlbConsumer = new Gcp.Compute.ForwardingRule(\"psc_ilb_consumer\", new()\n {\n Name = \"psc-ilb-consumer-forwarding-rule\",\n Region = \"us-west2\",\n Target = pscIlbServiceAttachment.Id,\n LoadBalancingScheme = \"\",\n Network = pscIlbConsumerNetwork.Id,\n Subnetwork = pscIlbConsumerSubnetwork.Id,\n IpAddress = pscIlbConsumerAddress.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tpscIlbConsumerNetwork, err := compute.NewNetwork(ctx, \"psc_ilb_consumer_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-consumer-network\"),\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\tproducerServiceHealthCheck, err := compute.NewHealthCheck(ctx, \"producer_service_health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"producer-service-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceBackend, err := compute.NewRegionBackendService(ctx, \"producer_service_backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"producer-service\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tHealthChecks: producerServiceHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbNetwork, err := compute.NewNetwork(ctx, \"psc_ilb_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-network\"),\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\tpscIlbProducerSubnetwork, err := compute.NewSubnetwork(ctx, \"psc_ilb_producer_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-producer-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tNetwork: pscIlbNetwork.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbTargetService, err := compute.NewForwardingRule(ctx, \"psc_ilb_target_service\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"producer-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: producerServiceBackend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: pscIlbNetwork.Name,\n\t\t\tSubnetwork: pscIlbProducerSubnetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbNat, err := compute.NewSubnetwork(ctx, \"psc_ilb_nat\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-nat\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tNetwork: pscIlbNetwork.ID(),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbServiceAttachment, err := compute.NewServiceAttachment(ctx, \"psc_ilb_service_attachment\", \u0026compute.ServiceAttachmentArgs{\n\t\t\tName: pulumi.String(\"my-psc-ilb\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tDescription: pulumi.String(\"A service attachment configured with Terraform\"),\n\t\t\tEnableProxyProtocol: pulumi.Bool(false),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_MANUAL\"),\n\t\t\tNatSubnets: pulumi.StringArray{\n\t\t\t\tpscIlbNat.ID(),\n\t\t\t},\n\t\t\tTargetService: pscIlbTargetService.ID(),\n\t\t\tConsumerAcceptLists: compute.ServiceAttachmentConsumerAcceptListArray{\n\t\t\t\t\u0026compute.ServiceAttachmentConsumerAcceptListArgs{\n\t\t\t\t\tNetworkUrl: pscIlbConsumerNetwork.SelfLink,\n\t\t\t\t\tConnectionLimit: pulumi.Int(1),\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\tpscIlbConsumerSubnetwork, err := compute.NewSubnetwork(ctx, \"psc_ilb_consumer_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-consumer-network\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tNetwork: pscIlbConsumerNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbConsumerAddress, err := compute.NewAddress(ctx, \"psc_ilb_consumer_address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-consumer-address\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSubnetwork: pscIlbConsumerSubnetwork.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewForwardingRule(ctx, \"psc_ilb_consumer\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-consumer-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tTarget: pscIlbServiceAttachment.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNetwork: pscIlbConsumerNetwork.ID(),\n\t\t\tSubnetwork: pscIlbConsumerSubnetwork.ID(),\n\t\t\tIpAddress: pscIlbConsumerAddress.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.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.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\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.inputs.ServiceAttachmentConsumerAcceptListArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\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 pscIlbConsumerNetwork = new Network(\"pscIlbConsumerNetwork\", NetworkArgs.builder()\n .name(\"psc-ilb-consumer-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var producerServiceHealthCheck = new HealthCheck(\"producerServiceHealthCheck\", HealthCheckArgs.builder()\n .name(\"producer-service-health-check\")\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 .name(\"producer-service\")\n .region(\"us-west2\")\n .healthChecks(producerServiceHealthCheck.id())\n .build());\n\n var pscIlbNetwork = new Network(\"pscIlbNetwork\", NetworkArgs.builder()\n .name(\"psc-ilb-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscIlbProducerSubnetwork = new Subnetwork(\"pscIlbProducerSubnetwork\", SubnetworkArgs.builder()\n .name(\"psc-ilb-producer-subnetwork\")\n .region(\"us-west2\")\n .network(pscIlbNetwork.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscIlbTargetService = new ForwardingRule(\"pscIlbTargetService\", ForwardingRuleArgs.builder()\n .name(\"producer-forwarding-rule\")\n .region(\"us-west2\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(producerServiceBackend.id())\n .allPorts(true)\n .network(pscIlbNetwork.name())\n .subnetwork(pscIlbProducerSubnetwork.name())\n .build());\n\n var pscIlbNat = new Subnetwork(\"pscIlbNat\", SubnetworkArgs.builder()\n .name(\"psc-ilb-nat\")\n .region(\"us-west2\")\n .network(pscIlbNetwork.id())\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .ipCidrRange(\"10.1.0.0/16\")\n .build());\n\n var pscIlbServiceAttachment = new ServiceAttachment(\"pscIlbServiceAttachment\", ServiceAttachmentArgs.builder()\n .name(\"my-psc-ilb\")\n .region(\"us-west2\")\n .description(\"A service attachment configured with Terraform\")\n .enableProxyProtocol(false)\n .connectionPreference(\"ACCEPT_MANUAL\")\n .natSubnets(pscIlbNat.id())\n .targetService(pscIlbTargetService.id())\n .consumerAcceptLists(ServiceAttachmentConsumerAcceptListArgs.builder()\n .networkUrl(pscIlbConsumerNetwork.selfLink())\n .connectionLimit(1)\n .build())\n .build());\n\n var pscIlbConsumerSubnetwork = new Subnetwork(\"pscIlbConsumerSubnetwork\", SubnetworkArgs.builder()\n .name(\"psc-ilb-consumer-network\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-west2\")\n .network(pscIlbConsumerNetwork.id())\n .build());\n\n var pscIlbConsumerAddress = new Address(\"pscIlbConsumerAddress\", AddressArgs.builder()\n .name(\"psc-ilb-consumer-address\")\n .region(\"us-west2\")\n .subnetwork(pscIlbConsumerSubnetwork.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var pscIlbConsumer = new ForwardingRule(\"pscIlbConsumer\", ForwardingRuleArgs.builder()\n .name(\"psc-ilb-consumer-forwarding-rule\")\n .region(\"us-west2\")\n .target(pscIlbServiceAttachment.id())\n .loadBalancingScheme(\"\")\n .network(pscIlbConsumerNetwork.id())\n .subnetwork(pscIlbConsumerSubnetwork.id())\n .ipAddress(pscIlbConsumerAddress.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscIlbServiceAttachment:\n type: gcp:compute:ServiceAttachment\n name: psc_ilb_service_attachment\n properties:\n name: my-psc-ilb\n region: us-west2\n description: A service attachment configured with Terraform\n enableProxyProtocol: false\n connectionPreference: ACCEPT_MANUAL\n natSubnets:\n - ${pscIlbNat.id}\n targetService: ${pscIlbTargetService.id}\n consumerAcceptLists:\n - networkUrl: ${pscIlbConsumerNetwork.selfLink}\n connectionLimit: 1\n pscIlbConsumerNetwork:\n type: gcp:compute:Network\n name: psc_ilb_consumer_network\n properties:\n name: psc-ilb-consumer-network\n autoCreateSubnetworks: false\n pscIlbConsumerSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc_ilb_consumer_subnetwork\n properties:\n name: psc-ilb-consumer-network\n ipCidrRange: 10.0.0.0/16\n region: us-west2\n network: ${pscIlbConsumerNetwork.id}\n pscIlbConsumerAddress:\n type: gcp:compute:Address\n name: psc_ilb_consumer_address\n properties:\n name: psc-ilb-consumer-address\n region: us-west2\n subnetwork: ${pscIlbConsumerSubnetwork.id}\n addressType: INTERNAL\n pscIlbConsumer:\n type: gcp:compute:ForwardingRule\n name: psc_ilb_consumer\n properties:\n name: psc-ilb-consumer-forwarding-rule\n region: us-west2\n target: ${pscIlbServiceAttachment.id}\n loadBalancingScheme:\n network: ${pscIlbConsumerNetwork.id}\n subnetwork: ${pscIlbConsumerSubnetwork.id}\n ipAddress: ${pscIlbConsumerAddress.id}\n pscIlbTargetService:\n type: gcp:compute:ForwardingRule\n name: psc_ilb_target_service\n properties:\n name: producer-forwarding-rule\n region: us-west2\n loadBalancingScheme: INTERNAL\n backendService: ${producerServiceBackend.id}\n allPorts: true\n network: ${pscIlbNetwork.name}\n subnetwork: ${pscIlbProducerSubnetwork.name}\n producerServiceBackend:\n type: gcp:compute:RegionBackendService\n name: producer_service_backend\n properties:\n name: producer-service\n region: us-west2\n healthChecks: ${producerServiceHealthCheck.id}\n producerServiceHealthCheck:\n type: gcp:compute:HealthCheck\n name: producer_service_health_check\n properties:\n name: producer-service-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n pscIlbNetwork:\n type: gcp:compute:Network\n name: psc_ilb_network\n properties:\n name: psc-ilb-network\n autoCreateSubnetworks: false\n pscIlbProducerSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc_ilb_producer_subnetwork\n properties:\n name: psc-ilb-producer-subnetwork\n region: us-west2\n network: ${pscIlbNetwork.id}\n ipCidrRange: 10.0.0.0/16\n pscIlbNat:\n type: gcp:compute:Subnetwork\n name: psc_ilb_nat\n properties:\n name: psc-ilb-nat\n region: us-west2\n network: ${pscIlbNetwork.id}\n purpose: PRIVATE_SERVICE_CONNECT\n ipCidrRange: 10.1.0.0/16\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Service Attachment Reconcile Connections\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst producerServiceHealthCheck = new gcp.compute.HealthCheck(\"producer_service_health_check\", {\n name: \"producer-service-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst producerServiceBackend = new gcp.compute.RegionBackendService(\"producer_service_backend\", {\n name: \"producer-service\",\n region: \"us-west2\",\n healthChecks: producerServiceHealthCheck.id,\n});\nconst pscIlbNetwork = new gcp.compute.Network(\"psc_ilb_network\", {\n name: \"psc-ilb-network\",\n autoCreateSubnetworks: false,\n});\nconst pscIlbProducerSubnetwork = new gcp.compute.Subnetwork(\"psc_ilb_producer_subnetwork\", {\n name: \"psc-ilb-producer-subnetwork\",\n region: \"us-west2\",\n network: pscIlbNetwork.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscIlbTargetService = new gcp.compute.ForwardingRule(\"psc_ilb_target_service\", {\n name: \"producer-forwarding-rule\",\n region: \"us-west2\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: producerServiceBackend.id,\n allPorts: true,\n network: pscIlbNetwork.name,\n subnetwork: pscIlbProducerSubnetwork.name,\n});\nconst pscIlbNat = new gcp.compute.Subnetwork(\"psc_ilb_nat\", {\n name: \"psc-ilb-nat\",\n region: \"us-west2\",\n network: pscIlbNetwork.id,\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n ipCidrRange: \"10.1.0.0/16\",\n});\nconst pscIlbServiceAttachment = new gcp.compute.ServiceAttachment(\"psc_ilb_service_attachment\", {\n name: \"my-psc-ilb\",\n region: \"us-west2\",\n description: \"A service attachment configured with Terraform\",\n domainNames: [\"gcp.tfacc.hashicorptest.com.\"],\n enableProxyProtocol: true,\n connectionPreference: \"ACCEPT_MANUAL\",\n natSubnets: [pscIlbNat.id],\n targetService: pscIlbTargetService.id,\n consumerRejectLists: [\n \"673497134629\",\n \"482878270665\",\n ],\n consumerAcceptLists: [{\n projectIdOrNum: \"658859330310\",\n connectionLimit: 4,\n }],\n reconcileConnections: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproducer_service_health_check = gcp.compute.HealthCheck(\"producer_service_health_check\",\n name=\"producer-service-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nproducer_service_backend = gcp.compute.RegionBackendService(\"producer_service_backend\",\n name=\"producer-service\",\n region=\"us-west2\",\n health_checks=producer_service_health_check.id)\npsc_ilb_network = gcp.compute.Network(\"psc_ilb_network\",\n name=\"psc-ilb-network\",\n auto_create_subnetworks=False)\npsc_ilb_producer_subnetwork = gcp.compute.Subnetwork(\"psc_ilb_producer_subnetwork\",\n name=\"psc-ilb-producer-subnetwork\",\n region=\"us-west2\",\n network=psc_ilb_network.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_ilb_target_service = gcp.compute.ForwardingRule(\"psc_ilb_target_service\",\n name=\"producer-forwarding-rule\",\n region=\"us-west2\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=producer_service_backend.id,\n all_ports=True,\n network=psc_ilb_network.name,\n subnetwork=psc_ilb_producer_subnetwork.name)\npsc_ilb_nat = gcp.compute.Subnetwork(\"psc_ilb_nat\",\n name=\"psc-ilb-nat\",\n region=\"us-west2\",\n network=psc_ilb_network.id,\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n ip_cidr_range=\"10.1.0.0/16\")\npsc_ilb_service_attachment = gcp.compute.ServiceAttachment(\"psc_ilb_service_attachment\",\n name=\"my-psc-ilb\",\n region=\"us-west2\",\n description=\"A service attachment configured with Terraform\",\n domain_names=[\"gcp.tfacc.hashicorptest.com.\"],\n enable_proxy_protocol=True,\n connection_preference=\"ACCEPT_MANUAL\",\n nat_subnets=[psc_ilb_nat.id],\n target_service=psc_ilb_target_service.id,\n consumer_reject_lists=[\n \"673497134629\",\n \"482878270665\",\n ],\n consumer_accept_lists=[{\n \"projectIdOrNum\": \"658859330310\",\n \"connectionLimit\": 4,\n }],\n reconcile_connections=False)\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 producerServiceHealthCheck = new Gcp.Compute.HealthCheck(\"producer_service_health_check\", new()\n {\n Name = \"producer-service-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var producerServiceBackend = new Gcp.Compute.RegionBackendService(\"producer_service_backend\", new()\n {\n Name = \"producer-service\",\n Region = \"us-west2\",\n HealthChecks = producerServiceHealthCheck.Id,\n });\n\n var pscIlbNetwork = new Gcp.Compute.Network(\"psc_ilb_network\", new()\n {\n Name = \"psc-ilb-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscIlbProducerSubnetwork = new Gcp.Compute.Subnetwork(\"psc_ilb_producer_subnetwork\", new()\n {\n Name = \"psc-ilb-producer-subnetwork\",\n Region = \"us-west2\",\n Network = pscIlbNetwork.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscIlbTargetService = new Gcp.Compute.ForwardingRule(\"psc_ilb_target_service\", new()\n {\n Name = \"producer-forwarding-rule\",\n Region = \"us-west2\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = producerServiceBackend.Id,\n AllPorts = true,\n Network = pscIlbNetwork.Name,\n Subnetwork = pscIlbProducerSubnetwork.Name,\n });\n\n var pscIlbNat = new Gcp.Compute.Subnetwork(\"psc_ilb_nat\", new()\n {\n Name = \"psc-ilb-nat\",\n Region = \"us-west2\",\n Network = pscIlbNetwork.Id,\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n IpCidrRange = \"10.1.0.0/16\",\n });\n\n var pscIlbServiceAttachment = new Gcp.Compute.ServiceAttachment(\"psc_ilb_service_attachment\", new()\n {\n Name = \"my-psc-ilb\",\n Region = \"us-west2\",\n Description = \"A service attachment configured with Terraform\",\n DomainNames = new[]\n {\n \"gcp.tfacc.hashicorptest.com.\",\n },\n EnableProxyProtocol = true,\n ConnectionPreference = \"ACCEPT_MANUAL\",\n NatSubnets = new[]\n {\n pscIlbNat.Id,\n },\n TargetService = pscIlbTargetService.Id,\n ConsumerRejectLists = new[]\n {\n \"673497134629\",\n \"482878270665\",\n },\n ConsumerAcceptLists = new[]\n {\n new Gcp.Compute.Inputs.ServiceAttachmentConsumerAcceptListArgs\n {\n ProjectIdOrNum = \"658859330310\",\n ConnectionLimit = 4,\n },\n },\n ReconcileConnections = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproducerServiceHealthCheck, err := compute.NewHealthCheck(ctx, \"producer_service_health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"producer-service-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceBackend, err := compute.NewRegionBackendService(ctx, \"producer_service_backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"producer-service\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tHealthChecks: producerServiceHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbNetwork, err := compute.NewNetwork(ctx, \"psc_ilb_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-network\"),\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\tpscIlbProducerSubnetwork, err := compute.NewSubnetwork(ctx, \"psc_ilb_producer_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-producer-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tNetwork: pscIlbNetwork.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbTargetService, err := compute.NewForwardingRule(ctx, \"psc_ilb_target_service\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"producer-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: producerServiceBackend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: pscIlbNetwork.Name,\n\t\t\tSubnetwork: pscIlbProducerSubnetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbNat, err := compute.NewSubnetwork(ctx, \"psc_ilb_nat\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-nat\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tNetwork: pscIlbNetwork.ID(),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewServiceAttachment(ctx, \"psc_ilb_service_attachment\", \u0026compute.ServiceAttachmentArgs{\n\t\t\tName: pulumi.String(\"my-psc-ilb\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tDescription: pulumi.String(\"A service attachment configured with Terraform\"),\n\t\t\tDomainNames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"gcp.tfacc.hashicorptest.com.\"),\n\t\t\t},\n\t\t\tEnableProxyProtocol: pulumi.Bool(true),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_MANUAL\"),\n\t\t\tNatSubnets: pulumi.StringArray{\n\t\t\t\tpscIlbNat.ID(),\n\t\t\t},\n\t\t\tTargetService: pscIlbTargetService.ID(),\n\t\t\tConsumerRejectLists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"673497134629\"),\n\t\t\t\tpulumi.String(\"482878270665\"),\n\t\t\t},\n\t\t\tConsumerAcceptLists: compute.ServiceAttachmentConsumerAcceptListArray{\n\t\t\t\t\u0026compute.ServiceAttachmentConsumerAcceptListArgs{\n\t\t\t\t\tProjectIdOrNum: pulumi.String(\"658859330310\"),\n\t\t\t\t\tConnectionLimit: pulumi.Int(4),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReconcileConnections: pulumi.Bool(false),\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.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 com.pulumi.gcp.compute.ServiceAttachment;\nimport com.pulumi.gcp.compute.ServiceAttachmentArgs;\nimport com.pulumi.gcp.compute.inputs.ServiceAttachmentConsumerAcceptListArgs;\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 producerServiceHealthCheck = new HealthCheck(\"producerServiceHealthCheck\", HealthCheckArgs.builder()\n .name(\"producer-service-health-check\")\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 .name(\"producer-service\")\n .region(\"us-west2\")\n .healthChecks(producerServiceHealthCheck.id())\n .build());\n\n var pscIlbNetwork = new Network(\"pscIlbNetwork\", NetworkArgs.builder()\n .name(\"psc-ilb-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscIlbProducerSubnetwork = new Subnetwork(\"pscIlbProducerSubnetwork\", SubnetworkArgs.builder()\n .name(\"psc-ilb-producer-subnetwork\")\n .region(\"us-west2\")\n .network(pscIlbNetwork.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscIlbTargetService = new ForwardingRule(\"pscIlbTargetService\", ForwardingRuleArgs.builder()\n .name(\"producer-forwarding-rule\")\n .region(\"us-west2\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(producerServiceBackend.id())\n .allPorts(true)\n .network(pscIlbNetwork.name())\n .subnetwork(pscIlbProducerSubnetwork.name())\n .build());\n\n var pscIlbNat = new Subnetwork(\"pscIlbNat\", SubnetworkArgs.builder()\n .name(\"psc-ilb-nat\")\n .region(\"us-west2\")\n .network(pscIlbNetwork.id())\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .ipCidrRange(\"10.1.0.0/16\")\n .build());\n\n var pscIlbServiceAttachment = new ServiceAttachment(\"pscIlbServiceAttachment\", ServiceAttachmentArgs.builder()\n .name(\"my-psc-ilb\")\n .region(\"us-west2\")\n .description(\"A service attachment configured with Terraform\")\n .domainNames(\"gcp.tfacc.hashicorptest.com.\")\n .enableProxyProtocol(true)\n .connectionPreference(\"ACCEPT_MANUAL\")\n .natSubnets(pscIlbNat.id())\n .targetService(pscIlbTargetService.id())\n .consumerRejectLists( \n \"673497134629\",\n \"482878270665\")\n .consumerAcceptLists(ServiceAttachmentConsumerAcceptListArgs.builder()\n .projectIdOrNum(\"658859330310\")\n .connectionLimit(4)\n .build())\n .reconcileConnections(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscIlbServiceAttachment:\n type: gcp:compute:ServiceAttachment\n name: psc_ilb_service_attachment\n properties:\n name: my-psc-ilb\n region: us-west2\n description: A service attachment configured with Terraform\n domainNames:\n - gcp.tfacc.hashicorptest.com.\n enableProxyProtocol: true\n connectionPreference: ACCEPT_MANUAL\n natSubnets:\n - ${pscIlbNat.id}\n targetService: ${pscIlbTargetService.id}\n consumerRejectLists:\n - '673497134629'\n - '482878270665'\n consumerAcceptLists:\n - projectIdOrNum: '658859330310'\n connectionLimit: 4\n reconcileConnections: false\n pscIlbTargetService:\n type: gcp:compute:ForwardingRule\n name: psc_ilb_target_service\n properties:\n name: producer-forwarding-rule\n region: us-west2\n loadBalancingScheme: INTERNAL\n backendService: ${producerServiceBackend.id}\n allPorts: true\n network: ${pscIlbNetwork.name}\n subnetwork: ${pscIlbProducerSubnetwork.name}\n producerServiceBackend:\n type: gcp:compute:RegionBackendService\n name: producer_service_backend\n properties:\n name: producer-service\n region: us-west2\n healthChecks: ${producerServiceHealthCheck.id}\n producerServiceHealthCheck:\n type: gcp:compute:HealthCheck\n name: producer_service_health_check\n properties:\n name: producer-service-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n pscIlbNetwork:\n type: gcp:compute:Network\n name: psc_ilb_network\n properties:\n name: psc-ilb-network\n autoCreateSubnetworks: false\n pscIlbProducerSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc_ilb_producer_subnetwork\n properties:\n name: psc-ilb-producer-subnetwork\n region: us-west2\n network: ${pscIlbNetwork.id}\n ipCidrRange: 10.0.0.0/16\n pscIlbNat:\n type: gcp:compute:Subnetwork\n name: psc_ilb_nat\n properties:\n name: psc-ilb-nat\n region: us-west2\n network: ${pscIlbNetwork.id}\n purpose: PRIVATE_SERVICE_CONNECT\n ipCidrRange: 10.1.0.0/16\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServiceAttachment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/serviceAttachments/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ServiceAttachment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/serviceAttachment:ServiceAttachment default projects/{{project}}/regions/{{region}}/serviceAttachments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/serviceAttachment:ServiceAttachment default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/serviceAttachment:ServiceAttachment default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/serviceAttachment:ServiceAttachment default {{name}}\n```\n\n", + "description": "Represents a ServiceAttachment resource.\n\n\nTo get more information about ServiceAttachment, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/beta/serviceAttachments)\n* How-to Guides\n * [Configuring Private Service Connect to access services](https://cloud.google.com/vpc/docs/configure-private-service-connect-services)\n\n## Example Usage\n\n### Service Attachment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst producerServiceHealthCheck = new gcp.compute.HealthCheck(\"producer_service_health_check\", {\n name: \"producer-service-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst producerServiceBackend = new gcp.compute.RegionBackendService(\"producer_service_backend\", {\n name: \"producer-service\",\n region: \"us-west2\",\n healthChecks: producerServiceHealthCheck.id,\n});\nconst pscIlbNetwork = new gcp.compute.Network(\"psc_ilb_network\", {\n name: \"psc-ilb-network\",\n autoCreateSubnetworks: false,\n});\nconst pscIlbProducerSubnetwork = new gcp.compute.Subnetwork(\"psc_ilb_producer_subnetwork\", {\n name: \"psc-ilb-producer-subnetwork\",\n region: \"us-west2\",\n network: pscIlbNetwork.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscIlbTargetService = new gcp.compute.ForwardingRule(\"psc_ilb_target_service\", {\n name: \"producer-forwarding-rule\",\n region: \"us-west2\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: producerServiceBackend.id,\n allPorts: true,\n network: pscIlbNetwork.name,\n subnetwork: pscIlbProducerSubnetwork.name,\n});\nconst pscIlbNat = new gcp.compute.Subnetwork(\"psc_ilb_nat\", {\n name: \"psc-ilb-nat\",\n region: \"us-west2\",\n network: pscIlbNetwork.id,\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n ipCidrRange: \"10.1.0.0/16\",\n});\nconst pscIlbServiceAttachment = new gcp.compute.ServiceAttachment(\"psc_ilb_service_attachment\", {\n name: \"my-psc-ilb\",\n region: \"us-west2\",\n description: \"A service attachment configured with Terraform\",\n domainNames: [\"gcp.tfacc.hashicorptest.com.\"],\n enableProxyProtocol: true,\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n natSubnets: [pscIlbNat.id],\n targetService: pscIlbTargetService.id,\n});\nconst pscIlbConsumerAddress = new gcp.compute.Address(\"psc_ilb_consumer_address\", {\n name: \"psc-ilb-consumer-address\",\n region: \"us-west2\",\n subnetwork: \"default\",\n addressType: \"INTERNAL\",\n});\nconst pscIlbConsumer = new gcp.compute.ForwardingRule(\"psc_ilb_consumer\", {\n name: \"psc-ilb-consumer-forwarding-rule\",\n region: \"us-west2\",\n target: pscIlbServiceAttachment.id,\n loadBalancingScheme: \"\",\n network: \"default\",\n ipAddress: pscIlbConsumerAddress.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproducer_service_health_check = gcp.compute.HealthCheck(\"producer_service_health_check\",\n name=\"producer-service-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nproducer_service_backend = gcp.compute.RegionBackendService(\"producer_service_backend\",\n name=\"producer-service\",\n region=\"us-west2\",\n health_checks=producer_service_health_check.id)\npsc_ilb_network = gcp.compute.Network(\"psc_ilb_network\",\n name=\"psc-ilb-network\",\n auto_create_subnetworks=False)\npsc_ilb_producer_subnetwork = gcp.compute.Subnetwork(\"psc_ilb_producer_subnetwork\",\n name=\"psc-ilb-producer-subnetwork\",\n region=\"us-west2\",\n network=psc_ilb_network.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_ilb_target_service = gcp.compute.ForwardingRule(\"psc_ilb_target_service\",\n name=\"producer-forwarding-rule\",\n region=\"us-west2\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=producer_service_backend.id,\n all_ports=True,\n network=psc_ilb_network.name,\n subnetwork=psc_ilb_producer_subnetwork.name)\npsc_ilb_nat = gcp.compute.Subnetwork(\"psc_ilb_nat\",\n name=\"psc-ilb-nat\",\n region=\"us-west2\",\n network=psc_ilb_network.id,\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n ip_cidr_range=\"10.1.0.0/16\")\npsc_ilb_service_attachment = gcp.compute.ServiceAttachment(\"psc_ilb_service_attachment\",\n name=\"my-psc-ilb\",\n region=\"us-west2\",\n description=\"A service attachment configured with Terraform\",\n domain_names=[\"gcp.tfacc.hashicorptest.com.\"],\n enable_proxy_protocol=True,\n connection_preference=\"ACCEPT_AUTOMATIC\",\n nat_subnets=[psc_ilb_nat.id],\n target_service=psc_ilb_target_service.id)\npsc_ilb_consumer_address = gcp.compute.Address(\"psc_ilb_consumer_address\",\n name=\"psc-ilb-consumer-address\",\n region=\"us-west2\",\n subnetwork=\"default\",\n address_type=\"INTERNAL\")\npsc_ilb_consumer = gcp.compute.ForwardingRule(\"psc_ilb_consumer\",\n name=\"psc-ilb-consumer-forwarding-rule\",\n region=\"us-west2\",\n target=psc_ilb_service_attachment.id,\n load_balancing_scheme=\"\",\n network=\"default\",\n ip_address=psc_ilb_consumer_address.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 producerServiceHealthCheck = new Gcp.Compute.HealthCheck(\"producer_service_health_check\", new()\n {\n Name = \"producer-service-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var producerServiceBackend = new Gcp.Compute.RegionBackendService(\"producer_service_backend\", new()\n {\n Name = \"producer-service\",\n Region = \"us-west2\",\n HealthChecks = producerServiceHealthCheck.Id,\n });\n\n var pscIlbNetwork = new Gcp.Compute.Network(\"psc_ilb_network\", new()\n {\n Name = \"psc-ilb-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscIlbProducerSubnetwork = new Gcp.Compute.Subnetwork(\"psc_ilb_producer_subnetwork\", new()\n {\n Name = \"psc-ilb-producer-subnetwork\",\n Region = \"us-west2\",\n Network = pscIlbNetwork.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscIlbTargetService = new Gcp.Compute.ForwardingRule(\"psc_ilb_target_service\", new()\n {\n Name = \"producer-forwarding-rule\",\n Region = \"us-west2\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = producerServiceBackend.Id,\n AllPorts = true,\n Network = pscIlbNetwork.Name,\n Subnetwork = pscIlbProducerSubnetwork.Name,\n });\n\n var pscIlbNat = new Gcp.Compute.Subnetwork(\"psc_ilb_nat\", new()\n {\n Name = \"psc-ilb-nat\",\n Region = \"us-west2\",\n Network = pscIlbNetwork.Id,\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n IpCidrRange = \"10.1.0.0/16\",\n });\n\n var pscIlbServiceAttachment = new Gcp.Compute.ServiceAttachment(\"psc_ilb_service_attachment\", new()\n {\n Name = \"my-psc-ilb\",\n Region = \"us-west2\",\n Description = \"A service attachment configured with Terraform\",\n DomainNames = new[]\n {\n \"gcp.tfacc.hashicorptest.com.\",\n },\n EnableProxyProtocol = true,\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n NatSubnets = new[]\n {\n pscIlbNat.Id,\n },\n TargetService = pscIlbTargetService.Id,\n });\n\n var pscIlbConsumerAddress = new Gcp.Compute.Address(\"psc_ilb_consumer_address\", new()\n {\n Name = \"psc-ilb-consumer-address\",\n Region = \"us-west2\",\n Subnetwork = \"default\",\n AddressType = \"INTERNAL\",\n });\n\n var pscIlbConsumer = new Gcp.Compute.ForwardingRule(\"psc_ilb_consumer\", new()\n {\n Name = \"psc-ilb-consumer-forwarding-rule\",\n Region = \"us-west2\",\n Target = pscIlbServiceAttachment.Id,\n LoadBalancingScheme = \"\",\n Network = \"default\",\n IpAddress = pscIlbConsumerAddress.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproducerServiceHealthCheck, err := compute.NewHealthCheck(ctx, \"producer_service_health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"producer-service-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceBackend, err := compute.NewRegionBackendService(ctx, \"producer_service_backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"producer-service\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tHealthChecks: producerServiceHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbNetwork, err := compute.NewNetwork(ctx, \"psc_ilb_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-network\"),\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\tpscIlbProducerSubnetwork, err := compute.NewSubnetwork(ctx, \"psc_ilb_producer_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-producer-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tNetwork: pscIlbNetwork.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbTargetService, err := compute.NewForwardingRule(ctx, \"psc_ilb_target_service\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"producer-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: producerServiceBackend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: pscIlbNetwork.Name,\n\t\t\tSubnetwork: pscIlbProducerSubnetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbNat, err := compute.NewSubnetwork(ctx, \"psc_ilb_nat\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-nat\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tNetwork: pscIlbNetwork.ID(),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbServiceAttachment, err := compute.NewServiceAttachment(ctx, \"psc_ilb_service_attachment\", \u0026compute.ServiceAttachmentArgs{\n\t\t\tName: pulumi.String(\"my-psc-ilb\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tDescription: pulumi.String(\"A service attachment configured with Terraform\"),\n\t\t\tDomainNames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"gcp.tfacc.hashicorptest.com.\"),\n\t\t\t},\n\t\t\tEnableProxyProtocol: pulumi.Bool(true),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tNatSubnets: pulumi.StringArray{\n\t\t\t\tpscIlbNat.ID(),\n\t\t\t},\n\t\t\tTargetService: pscIlbTargetService.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbConsumerAddress, err := compute.NewAddress(ctx, \"psc_ilb_consumer_address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-consumer-address\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewForwardingRule(ctx, \"psc_ilb_consumer\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-consumer-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tTarget: pscIlbServiceAttachment.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tIpAddress: pscIlbConsumerAddress.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.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 com.pulumi.gcp.compute.ServiceAttachment;\nimport com.pulumi.gcp.compute.ServiceAttachmentArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\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 producerServiceHealthCheck = new HealthCheck(\"producerServiceHealthCheck\", HealthCheckArgs.builder()\n .name(\"producer-service-health-check\")\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 .name(\"producer-service\")\n .region(\"us-west2\")\n .healthChecks(producerServiceHealthCheck.id())\n .build());\n\n var pscIlbNetwork = new Network(\"pscIlbNetwork\", NetworkArgs.builder()\n .name(\"psc-ilb-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscIlbProducerSubnetwork = new Subnetwork(\"pscIlbProducerSubnetwork\", SubnetworkArgs.builder()\n .name(\"psc-ilb-producer-subnetwork\")\n .region(\"us-west2\")\n .network(pscIlbNetwork.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscIlbTargetService = new ForwardingRule(\"pscIlbTargetService\", ForwardingRuleArgs.builder()\n .name(\"producer-forwarding-rule\")\n .region(\"us-west2\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(producerServiceBackend.id())\n .allPorts(true)\n .network(pscIlbNetwork.name())\n .subnetwork(pscIlbProducerSubnetwork.name())\n .build());\n\n var pscIlbNat = new Subnetwork(\"pscIlbNat\", SubnetworkArgs.builder()\n .name(\"psc-ilb-nat\")\n .region(\"us-west2\")\n .network(pscIlbNetwork.id())\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .ipCidrRange(\"10.1.0.0/16\")\n .build());\n\n var pscIlbServiceAttachment = new ServiceAttachment(\"pscIlbServiceAttachment\", ServiceAttachmentArgs.builder()\n .name(\"my-psc-ilb\")\n .region(\"us-west2\")\n .description(\"A service attachment configured with Terraform\")\n .domainNames(\"gcp.tfacc.hashicorptest.com.\")\n .enableProxyProtocol(true)\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .natSubnets(pscIlbNat.id())\n .targetService(pscIlbTargetService.id())\n .build());\n\n var pscIlbConsumerAddress = new Address(\"pscIlbConsumerAddress\", AddressArgs.builder()\n .name(\"psc-ilb-consumer-address\")\n .region(\"us-west2\")\n .subnetwork(\"default\")\n .addressType(\"INTERNAL\")\n .build());\n\n var pscIlbConsumer = new ForwardingRule(\"pscIlbConsumer\", ForwardingRuleArgs.builder()\n .name(\"psc-ilb-consumer-forwarding-rule\")\n .region(\"us-west2\")\n .target(pscIlbServiceAttachment.id())\n .loadBalancingScheme(\"\")\n .network(\"default\")\n .ipAddress(pscIlbConsumerAddress.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscIlbServiceAttachment:\n type: gcp:compute:ServiceAttachment\n name: psc_ilb_service_attachment\n properties:\n name: my-psc-ilb\n region: us-west2\n description: A service attachment configured with Terraform\n domainNames:\n - gcp.tfacc.hashicorptest.com.\n enableProxyProtocol: true\n connectionPreference: ACCEPT_AUTOMATIC\n natSubnets:\n - ${pscIlbNat.id}\n targetService: ${pscIlbTargetService.id}\n pscIlbConsumerAddress:\n type: gcp:compute:Address\n name: psc_ilb_consumer_address\n properties:\n name: psc-ilb-consumer-address\n region: us-west2\n subnetwork: default\n addressType: INTERNAL\n pscIlbConsumer:\n type: gcp:compute:ForwardingRule\n name: psc_ilb_consumer\n properties:\n name: psc-ilb-consumer-forwarding-rule\n region: us-west2\n target: ${pscIlbServiceAttachment.id}\n loadBalancingScheme:\n network: default\n ipAddress: ${pscIlbConsumerAddress.id}\n pscIlbTargetService:\n type: gcp:compute:ForwardingRule\n name: psc_ilb_target_service\n properties:\n name: producer-forwarding-rule\n region: us-west2\n loadBalancingScheme: INTERNAL\n backendService: ${producerServiceBackend.id}\n allPorts: true\n network: ${pscIlbNetwork.name}\n subnetwork: ${pscIlbProducerSubnetwork.name}\n producerServiceBackend:\n type: gcp:compute:RegionBackendService\n name: producer_service_backend\n properties:\n name: producer-service\n region: us-west2\n healthChecks: ${producerServiceHealthCheck.id}\n producerServiceHealthCheck:\n type: gcp:compute:HealthCheck\n name: producer_service_health_check\n properties:\n name: producer-service-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n pscIlbNetwork:\n type: gcp:compute:Network\n name: psc_ilb_network\n properties:\n name: psc-ilb-network\n autoCreateSubnetworks: false\n pscIlbProducerSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc_ilb_producer_subnetwork\n properties:\n name: psc-ilb-producer-subnetwork\n region: us-west2\n network: ${pscIlbNetwork.id}\n ipCidrRange: 10.0.0.0/16\n pscIlbNat:\n type: gcp:compute:Subnetwork\n name: psc_ilb_nat\n properties:\n name: psc-ilb-nat\n region: us-west2\n network: ${pscIlbNetwork.id}\n purpose: PRIVATE_SERVICE_CONNECT\n ipCidrRange: 10.1.0.0/16\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Service Attachment Explicit Projects\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst producerServiceHealthCheck = new gcp.compute.HealthCheck(\"producer_service_health_check\", {\n name: \"producer-service-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst producerServiceBackend = new gcp.compute.RegionBackendService(\"producer_service_backend\", {\n name: \"producer-service\",\n region: \"us-west2\",\n healthChecks: producerServiceHealthCheck.id,\n});\nconst pscIlbNetwork = new gcp.compute.Network(\"psc_ilb_network\", {\n name: \"psc-ilb-network\",\n autoCreateSubnetworks: false,\n});\nconst pscIlbProducerSubnetwork = new gcp.compute.Subnetwork(\"psc_ilb_producer_subnetwork\", {\n name: \"psc-ilb-producer-subnetwork\",\n region: \"us-west2\",\n network: pscIlbNetwork.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscIlbTargetService = new gcp.compute.ForwardingRule(\"psc_ilb_target_service\", {\n name: \"producer-forwarding-rule\",\n region: \"us-west2\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: producerServiceBackend.id,\n allPorts: true,\n network: pscIlbNetwork.name,\n subnetwork: pscIlbProducerSubnetwork.name,\n});\nconst pscIlbNat = new gcp.compute.Subnetwork(\"psc_ilb_nat\", {\n name: \"psc-ilb-nat\",\n region: \"us-west2\",\n network: pscIlbNetwork.id,\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n ipCidrRange: \"10.1.0.0/16\",\n});\nconst pscIlbServiceAttachment = new gcp.compute.ServiceAttachment(\"psc_ilb_service_attachment\", {\n name: \"my-psc-ilb\",\n region: \"us-west2\",\n description: \"A service attachment configured with Terraform\",\n domainNames: [\"gcp.tfacc.hashicorptest.com.\"],\n enableProxyProtocol: true,\n connectionPreference: \"ACCEPT_MANUAL\",\n natSubnets: [pscIlbNat.id],\n targetService: pscIlbTargetService.id,\n consumerRejectLists: [\n \"673497134629\",\n \"482878270665\",\n ],\n consumerAcceptLists: [{\n projectIdOrNum: \"658859330310\",\n connectionLimit: 4,\n }],\n});\nconst pscIlbConsumerAddress = new gcp.compute.Address(\"psc_ilb_consumer_address\", {\n name: \"psc-ilb-consumer-address\",\n region: \"us-west2\",\n subnetwork: \"default\",\n addressType: \"INTERNAL\",\n});\nconst pscIlbConsumer = new gcp.compute.ForwardingRule(\"psc_ilb_consumer\", {\n name: \"psc-ilb-consumer-forwarding-rule\",\n region: \"us-west2\",\n target: pscIlbServiceAttachment.id,\n loadBalancingScheme: \"\",\n network: \"default\",\n ipAddress: pscIlbConsumerAddress.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproducer_service_health_check = gcp.compute.HealthCheck(\"producer_service_health_check\",\n name=\"producer-service-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nproducer_service_backend = gcp.compute.RegionBackendService(\"producer_service_backend\",\n name=\"producer-service\",\n region=\"us-west2\",\n health_checks=producer_service_health_check.id)\npsc_ilb_network = gcp.compute.Network(\"psc_ilb_network\",\n name=\"psc-ilb-network\",\n auto_create_subnetworks=False)\npsc_ilb_producer_subnetwork = gcp.compute.Subnetwork(\"psc_ilb_producer_subnetwork\",\n name=\"psc-ilb-producer-subnetwork\",\n region=\"us-west2\",\n network=psc_ilb_network.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_ilb_target_service = gcp.compute.ForwardingRule(\"psc_ilb_target_service\",\n name=\"producer-forwarding-rule\",\n region=\"us-west2\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=producer_service_backend.id,\n all_ports=True,\n network=psc_ilb_network.name,\n subnetwork=psc_ilb_producer_subnetwork.name)\npsc_ilb_nat = gcp.compute.Subnetwork(\"psc_ilb_nat\",\n name=\"psc-ilb-nat\",\n region=\"us-west2\",\n network=psc_ilb_network.id,\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n ip_cidr_range=\"10.1.0.0/16\")\npsc_ilb_service_attachment = gcp.compute.ServiceAttachment(\"psc_ilb_service_attachment\",\n name=\"my-psc-ilb\",\n region=\"us-west2\",\n description=\"A service attachment configured with Terraform\",\n domain_names=[\"gcp.tfacc.hashicorptest.com.\"],\n enable_proxy_protocol=True,\n connection_preference=\"ACCEPT_MANUAL\",\n nat_subnets=[psc_ilb_nat.id],\n target_service=psc_ilb_target_service.id,\n consumer_reject_lists=[\n \"673497134629\",\n \"482878270665\",\n ],\n consumer_accept_lists=[{\n \"project_id_or_num\": \"658859330310\",\n \"connection_limit\": 4,\n }])\npsc_ilb_consumer_address = gcp.compute.Address(\"psc_ilb_consumer_address\",\n name=\"psc-ilb-consumer-address\",\n region=\"us-west2\",\n subnetwork=\"default\",\n address_type=\"INTERNAL\")\npsc_ilb_consumer = gcp.compute.ForwardingRule(\"psc_ilb_consumer\",\n name=\"psc-ilb-consumer-forwarding-rule\",\n region=\"us-west2\",\n target=psc_ilb_service_attachment.id,\n load_balancing_scheme=\"\",\n network=\"default\",\n ip_address=psc_ilb_consumer_address.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 producerServiceHealthCheck = new Gcp.Compute.HealthCheck(\"producer_service_health_check\", new()\n {\n Name = \"producer-service-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var producerServiceBackend = new Gcp.Compute.RegionBackendService(\"producer_service_backend\", new()\n {\n Name = \"producer-service\",\n Region = \"us-west2\",\n HealthChecks = producerServiceHealthCheck.Id,\n });\n\n var pscIlbNetwork = new Gcp.Compute.Network(\"psc_ilb_network\", new()\n {\n Name = \"psc-ilb-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscIlbProducerSubnetwork = new Gcp.Compute.Subnetwork(\"psc_ilb_producer_subnetwork\", new()\n {\n Name = \"psc-ilb-producer-subnetwork\",\n Region = \"us-west2\",\n Network = pscIlbNetwork.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscIlbTargetService = new Gcp.Compute.ForwardingRule(\"psc_ilb_target_service\", new()\n {\n Name = \"producer-forwarding-rule\",\n Region = \"us-west2\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = producerServiceBackend.Id,\n AllPorts = true,\n Network = pscIlbNetwork.Name,\n Subnetwork = pscIlbProducerSubnetwork.Name,\n });\n\n var pscIlbNat = new Gcp.Compute.Subnetwork(\"psc_ilb_nat\", new()\n {\n Name = \"psc-ilb-nat\",\n Region = \"us-west2\",\n Network = pscIlbNetwork.Id,\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n IpCidrRange = \"10.1.0.0/16\",\n });\n\n var pscIlbServiceAttachment = new Gcp.Compute.ServiceAttachment(\"psc_ilb_service_attachment\", new()\n {\n Name = \"my-psc-ilb\",\n Region = \"us-west2\",\n Description = \"A service attachment configured with Terraform\",\n DomainNames = new[]\n {\n \"gcp.tfacc.hashicorptest.com.\",\n },\n EnableProxyProtocol = true,\n ConnectionPreference = \"ACCEPT_MANUAL\",\n NatSubnets = new[]\n {\n pscIlbNat.Id,\n },\n TargetService = pscIlbTargetService.Id,\n ConsumerRejectLists = new[]\n {\n \"673497134629\",\n \"482878270665\",\n },\n ConsumerAcceptLists = new[]\n {\n new Gcp.Compute.Inputs.ServiceAttachmentConsumerAcceptListArgs\n {\n ProjectIdOrNum = \"658859330310\",\n ConnectionLimit = 4,\n },\n },\n });\n\n var pscIlbConsumerAddress = new Gcp.Compute.Address(\"psc_ilb_consumer_address\", new()\n {\n Name = \"psc-ilb-consumer-address\",\n Region = \"us-west2\",\n Subnetwork = \"default\",\n AddressType = \"INTERNAL\",\n });\n\n var pscIlbConsumer = new Gcp.Compute.ForwardingRule(\"psc_ilb_consumer\", new()\n {\n Name = \"psc-ilb-consumer-forwarding-rule\",\n Region = \"us-west2\",\n Target = pscIlbServiceAttachment.Id,\n LoadBalancingScheme = \"\",\n Network = \"default\",\n IpAddress = pscIlbConsumerAddress.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproducerServiceHealthCheck, err := compute.NewHealthCheck(ctx, \"producer_service_health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"producer-service-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceBackend, err := compute.NewRegionBackendService(ctx, \"producer_service_backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"producer-service\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tHealthChecks: producerServiceHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbNetwork, err := compute.NewNetwork(ctx, \"psc_ilb_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-network\"),\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\tpscIlbProducerSubnetwork, err := compute.NewSubnetwork(ctx, \"psc_ilb_producer_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-producer-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tNetwork: pscIlbNetwork.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbTargetService, err := compute.NewForwardingRule(ctx, \"psc_ilb_target_service\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"producer-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: producerServiceBackend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: pscIlbNetwork.Name,\n\t\t\tSubnetwork: pscIlbProducerSubnetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbNat, err := compute.NewSubnetwork(ctx, \"psc_ilb_nat\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-nat\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tNetwork: pscIlbNetwork.ID(),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbServiceAttachment, err := compute.NewServiceAttachment(ctx, \"psc_ilb_service_attachment\", \u0026compute.ServiceAttachmentArgs{\n\t\t\tName: pulumi.String(\"my-psc-ilb\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tDescription: pulumi.String(\"A service attachment configured with Terraform\"),\n\t\t\tDomainNames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"gcp.tfacc.hashicorptest.com.\"),\n\t\t\t},\n\t\t\tEnableProxyProtocol: pulumi.Bool(true),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_MANUAL\"),\n\t\t\tNatSubnets: pulumi.StringArray{\n\t\t\t\tpscIlbNat.ID(),\n\t\t\t},\n\t\t\tTargetService: pscIlbTargetService.ID(),\n\t\t\tConsumerRejectLists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"673497134629\"),\n\t\t\t\tpulumi.String(\"482878270665\"),\n\t\t\t},\n\t\t\tConsumerAcceptLists: compute.ServiceAttachmentConsumerAcceptListArray{\n\t\t\t\t\u0026compute.ServiceAttachmentConsumerAcceptListArgs{\n\t\t\t\t\tProjectIdOrNum: pulumi.String(\"658859330310\"),\n\t\t\t\t\tConnectionLimit: pulumi.Int(4),\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\tpscIlbConsumerAddress, err := compute.NewAddress(ctx, \"psc_ilb_consumer_address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-consumer-address\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewForwardingRule(ctx, \"psc_ilb_consumer\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-consumer-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tTarget: pscIlbServiceAttachment.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tIpAddress: pscIlbConsumerAddress.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.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 com.pulumi.gcp.compute.ServiceAttachment;\nimport com.pulumi.gcp.compute.ServiceAttachmentArgs;\nimport com.pulumi.gcp.compute.inputs.ServiceAttachmentConsumerAcceptListArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\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 producerServiceHealthCheck = new HealthCheck(\"producerServiceHealthCheck\", HealthCheckArgs.builder()\n .name(\"producer-service-health-check\")\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 .name(\"producer-service\")\n .region(\"us-west2\")\n .healthChecks(producerServiceHealthCheck.id())\n .build());\n\n var pscIlbNetwork = new Network(\"pscIlbNetwork\", NetworkArgs.builder()\n .name(\"psc-ilb-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscIlbProducerSubnetwork = new Subnetwork(\"pscIlbProducerSubnetwork\", SubnetworkArgs.builder()\n .name(\"psc-ilb-producer-subnetwork\")\n .region(\"us-west2\")\n .network(pscIlbNetwork.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscIlbTargetService = new ForwardingRule(\"pscIlbTargetService\", ForwardingRuleArgs.builder()\n .name(\"producer-forwarding-rule\")\n .region(\"us-west2\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(producerServiceBackend.id())\n .allPorts(true)\n .network(pscIlbNetwork.name())\n .subnetwork(pscIlbProducerSubnetwork.name())\n .build());\n\n var pscIlbNat = new Subnetwork(\"pscIlbNat\", SubnetworkArgs.builder()\n .name(\"psc-ilb-nat\")\n .region(\"us-west2\")\n .network(pscIlbNetwork.id())\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .ipCidrRange(\"10.1.0.0/16\")\n .build());\n\n var pscIlbServiceAttachment = new ServiceAttachment(\"pscIlbServiceAttachment\", ServiceAttachmentArgs.builder()\n .name(\"my-psc-ilb\")\n .region(\"us-west2\")\n .description(\"A service attachment configured with Terraform\")\n .domainNames(\"gcp.tfacc.hashicorptest.com.\")\n .enableProxyProtocol(true)\n .connectionPreference(\"ACCEPT_MANUAL\")\n .natSubnets(pscIlbNat.id())\n .targetService(pscIlbTargetService.id())\n .consumerRejectLists( \n \"673497134629\",\n \"482878270665\")\n .consumerAcceptLists(ServiceAttachmentConsumerAcceptListArgs.builder()\n .projectIdOrNum(\"658859330310\")\n .connectionLimit(4)\n .build())\n .build());\n\n var pscIlbConsumerAddress = new Address(\"pscIlbConsumerAddress\", AddressArgs.builder()\n .name(\"psc-ilb-consumer-address\")\n .region(\"us-west2\")\n .subnetwork(\"default\")\n .addressType(\"INTERNAL\")\n .build());\n\n var pscIlbConsumer = new ForwardingRule(\"pscIlbConsumer\", ForwardingRuleArgs.builder()\n .name(\"psc-ilb-consumer-forwarding-rule\")\n .region(\"us-west2\")\n .target(pscIlbServiceAttachment.id())\n .loadBalancingScheme(\"\")\n .network(\"default\")\n .ipAddress(pscIlbConsumerAddress.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscIlbServiceAttachment:\n type: gcp:compute:ServiceAttachment\n name: psc_ilb_service_attachment\n properties:\n name: my-psc-ilb\n region: us-west2\n description: A service attachment configured with Terraform\n domainNames:\n - gcp.tfacc.hashicorptest.com.\n enableProxyProtocol: true\n connectionPreference: ACCEPT_MANUAL\n natSubnets:\n - ${pscIlbNat.id}\n targetService: ${pscIlbTargetService.id}\n consumerRejectLists:\n - '673497134629'\n - '482878270665'\n consumerAcceptLists:\n - projectIdOrNum: '658859330310'\n connectionLimit: 4\n pscIlbConsumerAddress:\n type: gcp:compute:Address\n name: psc_ilb_consumer_address\n properties:\n name: psc-ilb-consumer-address\n region: us-west2\n subnetwork: default\n addressType: INTERNAL\n pscIlbConsumer:\n type: gcp:compute:ForwardingRule\n name: psc_ilb_consumer\n properties:\n name: psc-ilb-consumer-forwarding-rule\n region: us-west2\n target: ${pscIlbServiceAttachment.id}\n loadBalancingScheme:\n network: default\n ipAddress: ${pscIlbConsumerAddress.id}\n pscIlbTargetService:\n type: gcp:compute:ForwardingRule\n name: psc_ilb_target_service\n properties:\n name: producer-forwarding-rule\n region: us-west2\n loadBalancingScheme: INTERNAL\n backendService: ${producerServiceBackend.id}\n allPorts: true\n network: ${pscIlbNetwork.name}\n subnetwork: ${pscIlbProducerSubnetwork.name}\n producerServiceBackend:\n type: gcp:compute:RegionBackendService\n name: producer_service_backend\n properties:\n name: producer-service\n region: us-west2\n healthChecks: ${producerServiceHealthCheck.id}\n producerServiceHealthCheck:\n type: gcp:compute:HealthCheck\n name: producer_service_health_check\n properties:\n name: producer-service-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n pscIlbNetwork:\n type: gcp:compute:Network\n name: psc_ilb_network\n properties:\n name: psc-ilb-network\n autoCreateSubnetworks: false\n pscIlbProducerSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc_ilb_producer_subnetwork\n properties:\n name: psc-ilb-producer-subnetwork\n region: us-west2\n network: ${pscIlbNetwork.id}\n ipCidrRange: 10.0.0.0/16\n pscIlbNat:\n type: gcp:compute:Subnetwork\n name: psc_ilb_nat\n properties:\n name: psc-ilb-nat\n region: us-west2\n network: ${pscIlbNetwork.id}\n purpose: PRIVATE_SERVICE_CONNECT\n ipCidrRange: 10.1.0.0/16\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Service Attachment Explicit Networks\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pscIlbConsumerNetwork = new gcp.compute.Network(\"psc_ilb_consumer_network\", {\n name: \"psc-ilb-consumer-network\",\n autoCreateSubnetworks: false,\n});\nconst producerServiceHealthCheck = new gcp.compute.HealthCheck(\"producer_service_health_check\", {\n name: \"producer-service-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst producerServiceBackend = new gcp.compute.RegionBackendService(\"producer_service_backend\", {\n name: \"producer-service\",\n region: \"us-west2\",\n healthChecks: producerServiceHealthCheck.id,\n});\nconst pscIlbNetwork = new gcp.compute.Network(\"psc_ilb_network\", {\n name: \"psc-ilb-network\",\n autoCreateSubnetworks: false,\n});\nconst pscIlbProducerSubnetwork = new gcp.compute.Subnetwork(\"psc_ilb_producer_subnetwork\", {\n name: \"psc-ilb-producer-subnetwork\",\n region: \"us-west2\",\n network: pscIlbNetwork.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscIlbTargetService = new gcp.compute.ForwardingRule(\"psc_ilb_target_service\", {\n name: \"producer-forwarding-rule\",\n region: \"us-west2\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: producerServiceBackend.id,\n allPorts: true,\n network: pscIlbNetwork.name,\n subnetwork: pscIlbProducerSubnetwork.name,\n});\nconst pscIlbNat = new gcp.compute.Subnetwork(\"psc_ilb_nat\", {\n name: \"psc-ilb-nat\",\n region: \"us-west2\",\n network: pscIlbNetwork.id,\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n ipCidrRange: \"10.1.0.0/16\",\n});\nconst pscIlbServiceAttachment = new gcp.compute.ServiceAttachment(\"psc_ilb_service_attachment\", {\n name: \"my-psc-ilb\",\n region: \"us-west2\",\n description: \"A service attachment configured with Terraform\",\n enableProxyProtocol: false,\n connectionPreference: \"ACCEPT_MANUAL\",\n natSubnets: [pscIlbNat.id],\n targetService: pscIlbTargetService.id,\n consumerAcceptLists: [{\n networkUrl: pscIlbConsumerNetwork.selfLink,\n connectionLimit: 1,\n }],\n});\nconst pscIlbConsumerSubnetwork = new gcp.compute.Subnetwork(\"psc_ilb_consumer_subnetwork\", {\n name: \"psc-ilb-consumer-network\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-west2\",\n network: pscIlbConsumerNetwork.id,\n});\nconst pscIlbConsumerAddress = new gcp.compute.Address(\"psc_ilb_consumer_address\", {\n name: \"psc-ilb-consumer-address\",\n region: \"us-west2\",\n subnetwork: pscIlbConsumerSubnetwork.id,\n addressType: \"INTERNAL\",\n});\nconst pscIlbConsumer = new gcp.compute.ForwardingRule(\"psc_ilb_consumer\", {\n name: \"psc-ilb-consumer-forwarding-rule\",\n region: \"us-west2\",\n target: pscIlbServiceAttachment.id,\n loadBalancingScheme: \"\",\n network: pscIlbConsumerNetwork.id,\n subnetwork: pscIlbConsumerSubnetwork.id,\n ipAddress: pscIlbConsumerAddress.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc_ilb_consumer_network = gcp.compute.Network(\"psc_ilb_consumer_network\",\n name=\"psc-ilb-consumer-network\",\n auto_create_subnetworks=False)\nproducer_service_health_check = gcp.compute.HealthCheck(\"producer_service_health_check\",\n name=\"producer-service-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nproducer_service_backend = gcp.compute.RegionBackendService(\"producer_service_backend\",\n name=\"producer-service\",\n region=\"us-west2\",\n health_checks=producer_service_health_check.id)\npsc_ilb_network = gcp.compute.Network(\"psc_ilb_network\",\n name=\"psc-ilb-network\",\n auto_create_subnetworks=False)\npsc_ilb_producer_subnetwork = gcp.compute.Subnetwork(\"psc_ilb_producer_subnetwork\",\n name=\"psc-ilb-producer-subnetwork\",\n region=\"us-west2\",\n network=psc_ilb_network.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_ilb_target_service = gcp.compute.ForwardingRule(\"psc_ilb_target_service\",\n name=\"producer-forwarding-rule\",\n region=\"us-west2\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=producer_service_backend.id,\n all_ports=True,\n network=psc_ilb_network.name,\n subnetwork=psc_ilb_producer_subnetwork.name)\npsc_ilb_nat = gcp.compute.Subnetwork(\"psc_ilb_nat\",\n name=\"psc-ilb-nat\",\n region=\"us-west2\",\n network=psc_ilb_network.id,\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n ip_cidr_range=\"10.1.0.0/16\")\npsc_ilb_service_attachment = gcp.compute.ServiceAttachment(\"psc_ilb_service_attachment\",\n name=\"my-psc-ilb\",\n region=\"us-west2\",\n description=\"A service attachment configured with Terraform\",\n enable_proxy_protocol=False,\n connection_preference=\"ACCEPT_MANUAL\",\n nat_subnets=[psc_ilb_nat.id],\n target_service=psc_ilb_target_service.id,\n consumer_accept_lists=[{\n \"network_url\": psc_ilb_consumer_network.self_link,\n \"connection_limit\": 1,\n }])\npsc_ilb_consumer_subnetwork = gcp.compute.Subnetwork(\"psc_ilb_consumer_subnetwork\",\n name=\"psc-ilb-consumer-network\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-west2\",\n network=psc_ilb_consumer_network.id)\npsc_ilb_consumer_address = gcp.compute.Address(\"psc_ilb_consumer_address\",\n name=\"psc-ilb-consumer-address\",\n region=\"us-west2\",\n subnetwork=psc_ilb_consumer_subnetwork.id,\n address_type=\"INTERNAL\")\npsc_ilb_consumer = gcp.compute.ForwardingRule(\"psc_ilb_consumer\",\n name=\"psc-ilb-consumer-forwarding-rule\",\n region=\"us-west2\",\n target=psc_ilb_service_attachment.id,\n load_balancing_scheme=\"\",\n network=psc_ilb_consumer_network.id,\n subnetwork=psc_ilb_consumer_subnetwork.id,\n ip_address=psc_ilb_consumer_address.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 pscIlbConsumerNetwork = new Gcp.Compute.Network(\"psc_ilb_consumer_network\", new()\n {\n Name = \"psc-ilb-consumer-network\",\n AutoCreateSubnetworks = false,\n });\n\n var producerServiceHealthCheck = new Gcp.Compute.HealthCheck(\"producer_service_health_check\", new()\n {\n Name = \"producer-service-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var producerServiceBackend = new Gcp.Compute.RegionBackendService(\"producer_service_backend\", new()\n {\n Name = \"producer-service\",\n Region = \"us-west2\",\n HealthChecks = producerServiceHealthCheck.Id,\n });\n\n var pscIlbNetwork = new Gcp.Compute.Network(\"psc_ilb_network\", new()\n {\n Name = \"psc-ilb-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscIlbProducerSubnetwork = new Gcp.Compute.Subnetwork(\"psc_ilb_producer_subnetwork\", new()\n {\n Name = \"psc-ilb-producer-subnetwork\",\n Region = \"us-west2\",\n Network = pscIlbNetwork.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscIlbTargetService = new Gcp.Compute.ForwardingRule(\"psc_ilb_target_service\", new()\n {\n Name = \"producer-forwarding-rule\",\n Region = \"us-west2\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = producerServiceBackend.Id,\n AllPorts = true,\n Network = pscIlbNetwork.Name,\n Subnetwork = pscIlbProducerSubnetwork.Name,\n });\n\n var pscIlbNat = new Gcp.Compute.Subnetwork(\"psc_ilb_nat\", new()\n {\n Name = \"psc-ilb-nat\",\n Region = \"us-west2\",\n Network = pscIlbNetwork.Id,\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n IpCidrRange = \"10.1.0.0/16\",\n });\n\n var pscIlbServiceAttachment = new Gcp.Compute.ServiceAttachment(\"psc_ilb_service_attachment\", new()\n {\n Name = \"my-psc-ilb\",\n Region = \"us-west2\",\n Description = \"A service attachment configured with Terraform\",\n EnableProxyProtocol = false,\n ConnectionPreference = \"ACCEPT_MANUAL\",\n NatSubnets = new[]\n {\n pscIlbNat.Id,\n },\n TargetService = pscIlbTargetService.Id,\n ConsumerAcceptLists = new[]\n {\n new Gcp.Compute.Inputs.ServiceAttachmentConsumerAcceptListArgs\n {\n NetworkUrl = pscIlbConsumerNetwork.SelfLink,\n ConnectionLimit = 1,\n },\n },\n });\n\n var pscIlbConsumerSubnetwork = new Gcp.Compute.Subnetwork(\"psc_ilb_consumer_subnetwork\", new()\n {\n Name = \"psc-ilb-consumer-network\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-west2\",\n Network = pscIlbConsumerNetwork.Id,\n });\n\n var pscIlbConsumerAddress = new Gcp.Compute.Address(\"psc_ilb_consumer_address\", new()\n {\n Name = \"psc-ilb-consumer-address\",\n Region = \"us-west2\",\n Subnetwork = pscIlbConsumerSubnetwork.Id,\n AddressType = \"INTERNAL\",\n });\n\n var pscIlbConsumer = new Gcp.Compute.ForwardingRule(\"psc_ilb_consumer\", new()\n {\n Name = \"psc-ilb-consumer-forwarding-rule\",\n Region = \"us-west2\",\n Target = pscIlbServiceAttachment.Id,\n LoadBalancingScheme = \"\",\n Network = pscIlbConsumerNetwork.Id,\n Subnetwork = pscIlbConsumerSubnetwork.Id,\n IpAddress = pscIlbConsumerAddress.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tpscIlbConsumerNetwork, err := compute.NewNetwork(ctx, \"psc_ilb_consumer_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-consumer-network\"),\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\tproducerServiceHealthCheck, err := compute.NewHealthCheck(ctx, \"producer_service_health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"producer-service-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceBackend, err := compute.NewRegionBackendService(ctx, \"producer_service_backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"producer-service\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tHealthChecks: producerServiceHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbNetwork, err := compute.NewNetwork(ctx, \"psc_ilb_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-network\"),\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\tpscIlbProducerSubnetwork, err := compute.NewSubnetwork(ctx, \"psc_ilb_producer_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-producer-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tNetwork: pscIlbNetwork.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbTargetService, err := compute.NewForwardingRule(ctx, \"psc_ilb_target_service\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"producer-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: producerServiceBackend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: pscIlbNetwork.Name,\n\t\t\tSubnetwork: pscIlbProducerSubnetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbNat, err := compute.NewSubnetwork(ctx, \"psc_ilb_nat\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-nat\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tNetwork: pscIlbNetwork.ID(),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbServiceAttachment, err := compute.NewServiceAttachment(ctx, \"psc_ilb_service_attachment\", \u0026compute.ServiceAttachmentArgs{\n\t\t\tName: pulumi.String(\"my-psc-ilb\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tDescription: pulumi.String(\"A service attachment configured with Terraform\"),\n\t\t\tEnableProxyProtocol: pulumi.Bool(false),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_MANUAL\"),\n\t\t\tNatSubnets: pulumi.StringArray{\n\t\t\t\tpscIlbNat.ID(),\n\t\t\t},\n\t\t\tTargetService: pscIlbTargetService.ID(),\n\t\t\tConsumerAcceptLists: compute.ServiceAttachmentConsumerAcceptListArray{\n\t\t\t\t\u0026compute.ServiceAttachmentConsumerAcceptListArgs{\n\t\t\t\t\tNetworkUrl: pscIlbConsumerNetwork.SelfLink,\n\t\t\t\t\tConnectionLimit: pulumi.Int(1),\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\tpscIlbConsumerSubnetwork, err := compute.NewSubnetwork(ctx, \"psc_ilb_consumer_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-consumer-network\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tNetwork: pscIlbConsumerNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbConsumerAddress, err := compute.NewAddress(ctx, \"psc_ilb_consumer_address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-consumer-address\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSubnetwork: pscIlbConsumerSubnetwork.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewForwardingRule(ctx, \"psc_ilb_consumer\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-consumer-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tTarget: pscIlbServiceAttachment.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNetwork: pscIlbConsumerNetwork.ID(),\n\t\t\tSubnetwork: pscIlbConsumerSubnetwork.ID(),\n\t\t\tIpAddress: pscIlbConsumerAddress.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.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.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\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.inputs.ServiceAttachmentConsumerAcceptListArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\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 pscIlbConsumerNetwork = new Network(\"pscIlbConsumerNetwork\", NetworkArgs.builder()\n .name(\"psc-ilb-consumer-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var producerServiceHealthCheck = new HealthCheck(\"producerServiceHealthCheck\", HealthCheckArgs.builder()\n .name(\"producer-service-health-check\")\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 .name(\"producer-service\")\n .region(\"us-west2\")\n .healthChecks(producerServiceHealthCheck.id())\n .build());\n\n var pscIlbNetwork = new Network(\"pscIlbNetwork\", NetworkArgs.builder()\n .name(\"psc-ilb-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscIlbProducerSubnetwork = new Subnetwork(\"pscIlbProducerSubnetwork\", SubnetworkArgs.builder()\n .name(\"psc-ilb-producer-subnetwork\")\n .region(\"us-west2\")\n .network(pscIlbNetwork.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscIlbTargetService = new ForwardingRule(\"pscIlbTargetService\", ForwardingRuleArgs.builder()\n .name(\"producer-forwarding-rule\")\n .region(\"us-west2\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(producerServiceBackend.id())\n .allPorts(true)\n .network(pscIlbNetwork.name())\n .subnetwork(pscIlbProducerSubnetwork.name())\n .build());\n\n var pscIlbNat = new Subnetwork(\"pscIlbNat\", SubnetworkArgs.builder()\n .name(\"psc-ilb-nat\")\n .region(\"us-west2\")\n .network(pscIlbNetwork.id())\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .ipCidrRange(\"10.1.0.0/16\")\n .build());\n\n var pscIlbServiceAttachment = new ServiceAttachment(\"pscIlbServiceAttachment\", ServiceAttachmentArgs.builder()\n .name(\"my-psc-ilb\")\n .region(\"us-west2\")\n .description(\"A service attachment configured with Terraform\")\n .enableProxyProtocol(false)\n .connectionPreference(\"ACCEPT_MANUAL\")\n .natSubnets(pscIlbNat.id())\n .targetService(pscIlbTargetService.id())\n .consumerAcceptLists(ServiceAttachmentConsumerAcceptListArgs.builder()\n .networkUrl(pscIlbConsumerNetwork.selfLink())\n .connectionLimit(1)\n .build())\n .build());\n\n var pscIlbConsumerSubnetwork = new Subnetwork(\"pscIlbConsumerSubnetwork\", SubnetworkArgs.builder()\n .name(\"psc-ilb-consumer-network\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-west2\")\n .network(pscIlbConsumerNetwork.id())\n .build());\n\n var pscIlbConsumerAddress = new Address(\"pscIlbConsumerAddress\", AddressArgs.builder()\n .name(\"psc-ilb-consumer-address\")\n .region(\"us-west2\")\n .subnetwork(pscIlbConsumerSubnetwork.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var pscIlbConsumer = new ForwardingRule(\"pscIlbConsumer\", ForwardingRuleArgs.builder()\n .name(\"psc-ilb-consumer-forwarding-rule\")\n .region(\"us-west2\")\n .target(pscIlbServiceAttachment.id())\n .loadBalancingScheme(\"\")\n .network(pscIlbConsumerNetwork.id())\n .subnetwork(pscIlbConsumerSubnetwork.id())\n .ipAddress(pscIlbConsumerAddress.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscIlbServiceAttachment:\n type: gcp:compute:ServiceAttachment\n name: psc_ilb_service_attachment\n properties:\n name: my-psc-ilb\n region: us-west2\n description: A service attachment configured with Terraform\n enableProxyProtocol: false\n connectionPreference: ACCEPT_MANUAL\n natSubnets:\n - ${pscIlbNat.id}\n targetService: ${pscIlbTargetService.id}\n consumerAcceptLists:\n - networkUrl: ${pscIlbConsumerNetwork.selfLink}\n connectionLimit: 1\n pscIlbConsumerNetwork:\n type: gcp:compute:Network\n name: psc_ilb_consumer_network\n properties:\n name: psc-ilb-consumer-network\n autoCreateSubnetworks: false\n pscIlbConsumerSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc_ilb_consumer_subnetwork\n properties:\n name: psc-ilb-consumer-network\n ipCidrRange: 10.0.0.0/16\n region: us-west2\n network: ${pscIlbConsumerNetwork.id}\n pscIlbConsumerAddress:\n type: gcp:compute:Address\n name: psc_ilb_consumer_address\n properties:\n name: psc-ilb-consumer-address\n region: us-west2\n subnetwork: ${pscIlbConsumerSubnetwork.id}\n addressType: INTERNAL\n pscIlbConsumer:\n type: gcp:compute:ForwardingRule\n name: psc_ilb_consumer\n properties:\n name: psc-ilb-consumer-forwarding-rule\n region: us-west2\n target: ${pscIlbServiceAttachment.id}\n loadBalancingScheme:\n network: ${pscIlbConsumerNetwork.id}\n subnetwork: ${pscIlbConsumerSubnetwork.id}\n ipAddress: ${pscIlbConsumerAddress.id}\n pscIlbTargetService:\n type: gcp:compute:ForwardingRule\n name: psc_ilb_target_service\n properties:\n name: producer-forwarding-rule\n region: us-west2\n loadBalancingScheme: INTERNAL\n backendService: ${producerServiceBackend.id}\n allPorts: true\n network: ${pscIlbNetwork.name}\n subnetwork: ${pscIlbProducerSubnetwork.name}\n producerServiceBackend:\n type: gcp:compute:RegionBackendService\n name: producer_service_backend\n properties:\n name: producer-service\n region: us-west2\n healthChecks: ${producerServiceHealthCheck.id}\n producerServiceHealthCheck:\n type: gcp:compute:HealthCheck\n name: producer_service_health_check\n properties:\n name: producer-service-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n pscIlbNetwork:\n type: gcp:compute:Network\n name: psc_ilb_network\n properties:\n name: psc-ilb-network\n autoCreateSubnetworks: false\n pscIlbProducerSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc_ilb_producer_subnetwork\n properties:\n name: psc-ilb-producer-subnetwork\n region: us-west2\n network: ${pscIlbNetwork.id}\n ipCidrRange: 10.0.0.0/16\n pscIlbNat:\n type: gcp:compute:Subnetwork\n name: psc_ilb_nat\n properties:\n name: psc-ilb-nat\n region: us-west2\n network: ${pscIlbNetwork.id}\n purpose: PRIVATE_SERVICE_CONNECT\n ipCidrRange: 10.1.0.0/16\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Service Attachment Reconcile Connections\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst producerServiceHealthCheck = new gcp.compute.HealthCheck(\"producer_service_health_check\", {\n name: \"producer-service-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst producerServiceBackend = new gcp.compute.RegionBackendService(\"producer_service_backend\", {\n name: \"producer-service\",\n region: \"us-west2\",\n healthChecks: producerServiceHealthCheck.id,\n});\nconst pscIlbNetwork = new gcp.compute.Network(\"psc_ilb_network\", {\n name: \"psc-ilb-network\",\n autoCreateSubnetworks: false,\n});\nconst pscIlbProducerSubnetwork = new gcp.compute.Subnetwork(\"psc_ilb_producer_subnetwork\", {\n name: \"psc-ilb-producer-subnetwork\",\n region: \"us-west2\",\n network: pscIlbNetwork.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscIlbTargetService = new gcp.compute.ForwardingRule(\"psc_ilb_target_service\", {\n name: \"producer-forwarding-rule\",\n region: \"us-west2\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: producerServiceBackend.id,\n allPorts: true,\n network: pscIlbNetwork.name,\n subnetwork: pscIlbProducerSubnetwork.name,\n});\nconst pscIlbNat = new gcp.compute.Subnetwork(\"psc_ilb_nat\", {\n name: \"psc-ilb-nat\",\n region: \"us-west2\",\n network: pscIlbNetwork.id,\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n ipCidrRange: \"10.1.0.0/16\",\n});\nconst pscIlbServiceAttachment = new gcp.compute.ServiceAttachment(\"psc_ilb_service_attachment\", {\n name: \"my-psc-ilb\",\n region: \"us-west2\",\n description: \"A service attachment configured with Terraform\",\n domainNames: [\"gcp.tfacc.hashicorptest.com.\"],\n enableProxyProtocol: true,\n connectionPreference: \"ACCEPT_MANUAL\",\n natSubnets: [pscIlbNat.id],\n targetService: pscIlbTargetService.id,\n consumerRejectLists: [\n \"673497134629\",\n \"482878270665\",\n ],\n consumerAcceptLists: [{\n projectIdOrNum: \"658859330310\",\n connectionLimit: 4,\n }],\n reconcileConnections: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproducer_service_health_check = gcp.compute.HealthCheck(\"producer_service_health_check\",\n name=\"producer-service-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nproducer_service_backend = gcp.compute.RegionBackendService(\"producer_service_backend\",\n name=\"producer-service\",\n region=\"us-west2\",\n health_checks=producer_service_health_check.id)\npsc_ilb_network = gcp.compute.Network(\"psc_ilb_network\",\n name=\"psc-ilb-network\",\n auto_create_subnetworks=False)\npsc_ilb_producer_subnetwork = gcp.compute.Subnetwork(\"psc_ilb_producer_subnetwork\",\n name=\"psc-ilb-producer-subnetwork\",\n region=\"us-west2\",\n network=psc_ilb_network.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_ilb_target_service = gcp.compute.ForwardingRule(\"psc_ilb_target_service\",\n name=\"producer-forwarding-rule\",\n region=\"us-west2\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=producer_service_backend.id,\n all_ports=True,\n network=psc_ilb_network.name,\n subnetwork=psc_ilb_producer_subnetwork.name)\npsc_ilb_nat = gcp.compute.Subnetwork(\"psc_ilb_nat\",\n name=\"psc-ilb-nat\",\n region=\"us-west2\",\n network=psc_ilb_network.id,\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n ip_cidr_range=\"10.1.0.0/16\")\npsc_ilb_service_attachment = gcp.compute.ServiceAttachment(\"psc_ilb_service_attachment\",\n name=\"my-psc-ilb\",\n region=\"us-west2\",\n description=\"A service attachment configured with Terraform\",\n domain_names=[\"gcp.tfacc.hashicorptest.com.\"],\n enable_proxy_protocol=True,\n connection_preference=\"ACCEPT_MANUAL\",\n nat_subnets=[psc_ilb_nat.id],\n target_service=psc_ilb_target_service.id,\n consumer_reject_lists=[\n \"673497134629\",\n \"482878270665\",\n ],\n consumer_accept_lists=[{\n \"project_id_or_num\": \"658859330310\",\n \"connection_limit\": 4,\n }],\n reconcile_connections=False)\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 producerServiceHealthCheck = new Gcp.Compute.HealthCheck(\"producer_service_health_check\", new()\n {\n Name = \"producer-service-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var producerServiceBackend = new Gcp.Compute.RegionBackendService(\"producer_service_backend\", new()\n {\n Name = \"producer-service\",\n Region = \"us-west2\",\n HealthChecks = producerServiceHealthCheck.Id,\n });\n\n var pscIlbNetwork = new Gcp.Compute.Network(\"psc_ilb_network\", new()\n {\n Name = \"psc-ilb-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscIlbProducerSubnetwork = new Gcp.Compute.Subnetwork(\"psc_ilb_producer_subnetwork\", new()\n {\n Name = \"psc-ilb-producer-subnetwork\",\n Region = \"us-west2\",\n Network = pscIlbNetwork.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscIlbTargetService = new Gcp.Compute.ForwardingRule(\"psc_ilb_target_service\", new()\n {\n Name = \"producer-forwarding-rule\",\n Region = \"us-west2\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = producerServiceBackend.Id,\n AllPorts = true,\n Network = pscIlbNetwork.Name,\n Subnetwork = pscIlbProducerSubnetwork.Name,\n });\n\n var pscIlbNat = new Gcp.Compute.Subnetwork(\"psc_ilb_nat\", new()\n {\n Name = \"psc-ilb-nat\",\n Region = \"us-west2\",\n Network = pscIlbNetwork.Id,\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n IpCidrRange = \"10.1.0.0/16\",\n });\n\n var pscIlbServiceAttachment = new Gcp.Compute.ServiceAttachment(\"psc_ilb_service_attachment\", new()\n {\n Name = \"my-psc-ilb\",\n Region = \"us-west2\",\n Description = \"A service attachment configured with Terraform\",\n DomainNames = new[]\n {\n \"gcp.tfacc.hashicorptest.com.\",\n },\n EnableProxyProtocol = true,\n ConnectionPreference = \"ACCEPT_MANUAL\",\n NatSubnets = new[]\n {\n pscIlbNat.Id,\n },\n TargetService = pscIlbTargetService.Id,\n ConsumerRejectLists = new[]\n {\n \"673497134629\",\n \"482878270665\",\n },\n ConsumerAcceptLists = new[]\n {\n new Gcp.Compute.Inputs.ServiceAttachmentConsumerAcceptListArgs\n {\n ProjectIdOrNum = \"658859330310\",\n ConnectionLimit = 4,\n },\n },\n ReconcileConnections = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproducerServiceHealthCheck, err := compute.NewHealthCheck(ctx, \"producer_service_health_check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"producer-service-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerServiceBackend, err := compute.NewRegionBackendService(ctx, \"producer_service_backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"producer-service\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tHealthChecks: producerServiceHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbNetwork, err := compute.NewNetwork(ctx, \"psc_ilb_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-network\"),\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\tpscIlbProducerSubnetwork, err := compute.NewSubnetwork(ctx, \"psc_ilb_producer_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-producer-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tNetwork: pscIlbNetwork.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbTargetService, err := compute.NewForwardingRule(ctx, \"psc_ilb_target_service\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"producer-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: producerServiceBackend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: pscIlbNetwork.Name,\n\t\t\tSubnetwork: pscIlbProducerSubnetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscIlbNat, err := compute.NewSubnetwork(ctx, \"psc_ilb_nat\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-ilb-nat\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tNetwork: pscIlbNetwork.ID(),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewServiceAttachment(ctx, \"psc_ilb_service_attachment\", \u0026compute.ServiceAttachmentArgs{\n\t\t\tName: pulumi.String(\"my-psc-ilb\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tDescription: pulumi.String(\"A service attachment configured with Terraform\"),\n\t\t\tDomainNames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"gcp.tfacc.hashicorptest.com.\"),\n\t\t\t},\n\t\t\tEnableProxyProtocol: pulumi.Bool(true),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_MANUAL\"),\n\t\t\tNatSubnets: pulumi.StringArray{\n\t\t\t\tpscIlbNat.ID(),\n\t\t\t},\n\t\t\tTargetService: pscIlbTargetService.ID(),\n\t\t\tConsumerRejectLists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"673497134629\"),\n\t\t\t\tpulumi.String(\"482878270665\"),\n\t\t\t},\n\t\t\tConsumerAcceptLists: compute.ServiceAttachmentConsumerAcceptListArray{\n\t\t\t\t\u0026compute.ServiceAttachmentConsumerAcceptListArgs{\n\t\t\t\t\tProjectIdOrNum: pulumi.String(\"658859330310\"),\n\t\t\t\t\tConnectionLimit: pulumi.Int(4),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReconcileConnections: pulumi.Bool(false),\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.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 com.pulumi.gcp.compute.ServiceAttachment;\nimport com.pulumi.gcp.compute.ServiceAttachmentArgs;\nimport com.pulumi.gcp.compute.inputs.ServiceAttachmentConsumerAcceptListArgs;\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 producerServiceHealthCheck = new HealthCheck(\"producerServiceHealthCheck\", HealthCheckArgs.builder()\n .name(\"producer-service-health-check\")\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 .name(\"producer-service\")\n .region(\"us-west2\")\n .healthChecks(producerServiceHealthCheck.id())\n .build());\n\n var pscIlbNetwork = new Network(\"pscIlbNetwork\", NetworkArgs.builder()\n .name(\"psc-ilb-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscIlbProducerSubnetwork = new Subnetwork(\"pscIlbProducerSubnetwork\", SubnetworkArgs.builder()\n .name(\"psc-ilb-producer-subnetwork\")\n .region(\"us-west2\")\n .network(pscIlbNetwork.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscIlbTargetService = new ForwardingRule(\"pscIlbTargetService\", ForwardingRuleArgs.builder()\n .name(\"producer-forwarding-rule\")\n .region(\"us-west2\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(producerServiceBackend.id())\n .allPorts(true)\n .network(pscIlbNetwork.name())\n .subnetwork(pscIlbProducerSubnetwork.name())\n .build());\n\n var pscIlbNat = new Subnetwork(\"pscIlbNat\", SubnetworkArgs.builder()\n .name(\"psc-ilb-nat\")\n .region(\"us-west2\")\n .network(pscIlbNetwork.id())\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .ipCidrRange(\"10.1.0.0/16\")\n .build());\n\n var pscIlbServiceAttachment = new ServiceAttachment(\"pscIlbServiceAttachment\", ServiceAttachmentArgs.builder()\n .name(\"my-psc-ilb\")\n .region(\"us-west2\")\n .description(\"A service attachment configured with Terraform\")\n .domainNames(\"gcp.tfacc.hashicorptest.com.\")\n .enableProxyProtocol(true)\n .connectionPreference(\"ACCEPT_MANUAL\")\n .natSubnets(pscIlbNat.id())\n .targetService(pscIlbTargetService.id())\n .consumerRejectLists( \n \"673497134629\",\n \"482878270665\")\n .consumerAcceptLists(ServiceAttachmentConsumerAcceptListArgs.builder()\n .projectIdOrNum(\"658859330310\")\n .connectionLimit(4)\n .build())\n .reconcileConnections(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscIlbServiceAttachment:\n type: gcp:compute:ServiceAttachment\n name: psc_ilb_service_attachment\n properties:\n name: my-psc-ilb\n region: us-west2\n description: A service attachment configured with Terraform\n domainNames:\n - gcp.tfacc.hashicorptest.com.\n enableProxyProtocol: true\n connectionPreference: ACCEPT_MANUAL\n natSubnets:\n - ${pscIlbNat.id}\n targetService: ${pscIlbTargetService.id}\n consumerRejectLists:\n - '673497134629'\n - '482878270665'\n consumerAcceptLists:\n - projectIdOrNum: '658859330310'\n connectionLimit: 4\n reconcileConnections: false\n pscIlbTargetService:\n type: gcp:compute:ForwardingRule\n name: psc_ilb_target_service\n properties:\n name: producer-forwarding-rule\n region: us-west2\n loadBalancingScheme: INTERNAL\n backendService: ${producerServiceBackend.id}\n allPorts: true\n network: ${pscIlbNetwork.name}\n subnetwork: ${pscIlbProducerSubnetwork.name}\n producerServiceBackend:\n type: gcp:compute:RegionBackendService\n name: producer_service_backend\n properties:\n name: producer-service\n region: us-west2\n healthChecks: ${producerServiceHealthCheck.id}\n producerServiceHealthCheck:\n type: gcp:compute:HealthCheck\n name: producer_service_health_check\n properties:\n name: producer-service-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n pscIlbNetwork:\n type: gcp:compute:Network\n name: psc_ilb_network\n properties:\n name: psc-ilb-network\n autoCreateSubnetworks: false\n pscIlbProducerSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc_ilb_producer_subnetwork\n properties:\n name: psc-ilb-producer-subnetwork\n region: us-west2\n network: ${pscIlbNetwork.id}\n ipCidrRange: 10.0.0.0/16\n pscIlbNat:\n type: gcp:compute:Subnetwork\n name: psc_ilb_nat\n properties:\n name: psc-ilb-nat\n region: us-west2\n network: ${pscIlbNetwork.id}\n purpose: PRIVATE_SERVICE_CONNECT\n ipCidrRange: 10.1.0.0/16\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServiceAttachment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/serviceAttachments/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ServiceAttachment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/serviceAttachment:ServiceAttachment default projects/{{project}}/regions/{{region}}/serviceAttachments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/serviceAttachment:ServiceAttachment default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/serviceAttachment:ServiceAttachment default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/serviceAttachment:ServiceAttachment default {{name}}\n```\n\n", "properties": { "connectedEndpoints": { "type": "array", @@ -163940,7 +163940,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 * [Cloud Networking](https://cloud.google.com/vpc/docs/using-vpc)\n * [Private Google Access](https://cloud.google.com/vpc/docs/configure-private-google-access)\n\n## Example Usage\n\n### Subnetwork Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"test-network\",\n autoCreateSubnetworks: false,\n});\nconst network_with_private_secondary_ip_ranges = new gcp.compute.Subnetwork(\"network-with-private-secondary-ip-ranges\", {\n name: \"test-subnetwork\",\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\",\n name=\"test-network\",\n auto_create_subnetworks=False)\nnetwork_with_private_secondary_ip_ranges = gcp.compute.Subnetwork(\"network-with-private-secondary-ip-ranges\",\n name=\"test-subnetwork\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=custom_test.id,\n secondary_ip_ranges=[{\n \"rangeName\": \"tf-test-secondary-range-update1\",\n \"ipCidrRange\": \"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 Name = \"test-network\",\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 Name = \"test-subnetwork\",\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/v7/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\tName: pulumi.String(\"test-network\"),\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\tName: pulumi.String(\"test-subnetwork\"),\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 .name(\"test-network\")\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 .name(\"test-subnetwork\")\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 name: test-subnetwork\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 name: test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Logging Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"log-test-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet_with_logging = new gcp.compute.Subnetwork(\"subnet-with-logging\", {\n name: \"log-test-subnetwork\",\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\",\n name=\"log-test-network\",\n auto_create_subnetworks=False)\nsubnet_with_logging = gcp.compute.Subnetwork(\"subnet-with-logging\",\n name=\"log-test-subnetwork\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=custom_test.id,\n log_config={\n \"aggregationInterval\": \"INTERVAL_10_MIN\",\n \"flowSampling\": 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 Name = \"log-test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet_with_logging = new Gcp.Compute.Subnetwork(\"subnet-with-logging\", new()\n {\n Name = \"log-test-subnetwork\",\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/v7/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\tName: pulumi.String(\"log-test-network\"),\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\tName: pulumi.String(\"log-test-subnetwork\"),\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 .name(\"log-test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet_with_logging = new Subnetwork(\"subnet-with-logging\", SubnetworkArgs.builder()\n .name(\"log-test-subnetwork\")\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 name: log-test-subnetwork\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 name: log-test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Internal L7lb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"l7lb-test-network\",\n autoCreateSubnetworks: false,\n});\nconst network_for_l7lb = new gcp.compute.Subnetwork(\"network-for-l7lb\", {\n name: \"l7lb-test-subnetwork\",\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```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\",\n name=\"l7lb-test-network\",\n auto_create_subnetworks=False)\nnetwork_for_l7lb = gcp.compute.Subnetwork(\"network-for-l7lb\",\n name=\"l7lb-test-subnetwork\",\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```\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 Name = \"l7lb-test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var network_for_l7lb = new Gcp.Compute.Subnetwork(\"network-for-l7lb\", new()\n {\n Name = \"l7lb-test-subnetwork\",\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\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"l7lb-test-network\"),\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-for-l7lb\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"l7lb-test-subnetwork\"),\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})\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 .name(\"l7lb-test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_for_l7lb = new Subnetwork(\"network-for-l7lb\", SubnetworkArgs.builder()\n .name(\"l7lb-test-subnetwork\")\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());\n\n }\n}\n```\n```yaml\nresources:\n network-for-l7lb:\n type: gcp:compute:Subnetwork\n properties:\n name: l7lb-test-subnetwork\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 custom-test:\n type: gcp:compute:Network\n properties:\n name: l7lb-test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Ipv6\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"ipv6-test-network\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_ipv6 = new gcp.compute.Subnetwork(\"subnetwork-ipv6\", {\n name: \"ipv6-test-subnetwork\",\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\",\n name=\"ipv6-test-network\",\n auto_create_subnetworks=False)\nsubnetwork_ipv6 = gcp.compute.Subnetwork(\"subnetwork-ipv6\",\n name=\"ipv6-test-subnetwork\",\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 Name = \"ipv6-test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_ipv6 = new Gcp.Compute.Subnetwork(\"subnetwork-ipv6\", new()\n {\n Name = \"ipv6-test-subnetwork\",\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/v7/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\tName: pulumi.String(\"ipv6-test-network\"),\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\tName: pulumi.String(\"ipv6-test-subnetwork\"),\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 .name(\"ipv6-test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_ipv6 = new Subnetwork(\"subnetwork-ipv6\", SubnetworkArgs.builder()\n .name(\"ipv6-test-subnetwork\")\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 name: ipv6-test-subnetwork\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 name: ipv6-test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Internal Ipv6\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"internal-ipv6-test-network\",\n autoCreateSubnetworks: false,\n enableUlaInternalIpv6: true,\n});\nconst subnetwork_internal_ipv6 = new gcp.compute.Subnetwork(\"subnetwork-internal-ipv6\", {\n name: \"internal-ipv6-test-subnetwork\",\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 name=\"internal-ipv6-test-network\",\n auto_create_subnetworks=False,\n enable_ula_internal_ipv6=True)\nsubnetwork_internal_ipv6 = gcp.compute.Subnetwork(\"subnetwork-internal-ipv6\",\n name=\"internal-ipv6-test-subnetwork\",\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 Name = \"internal-ipv6-test-network\",\n AutoCreateSubnetworks = false,\n EnableUlaInternalIpv6 = true,\n });\n\n var subnetwork_internal_ipv6 = new Gcp.Compute.Subnetwork(\"subnetwork-internal-ipv6\", new()\n {\n Name = \"internal-ipv6-test-subnetwork\",\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/v7/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\tName: pulumi.String(\"internal-ipv6-test-network\"),\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\tName: pulumi.String(\"internal-ipv6-test-subnetwork\"),\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 .name(\"internal-ipv6-test-network\")\n .autoCreateSubnetworks(false)\n .enableUlaInternalIpv6(true)\n .build());\n\n var subnetwork_internal_ipv6 = new Subnetwork(\"subnetwork-internal-ipv6\", SubnetworkArgs.builder()\n .name(\"internal-ipv6-test-subnetwork\")\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 name: internal-ipv6-test-subnetwork\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 name: internal-ipv6-test-network\n autoCreateSubnetworks: false\n enableUlaInternalIpv6: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Purpose Private Nat\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"subnet-purpose-test-network\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_purpose_private_nat = new gcp.compute.Subnetwork(\"subnetwork-purpose-private-nat\", {\n name: \"subnet-purpose-test-subnetwork\",\n region: \"us-west2\",\n ipCidrRange: \"192.168.1.0/24\",\n purpose: \"PRIVATE_NAT\",\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 name=\"subnet-purpose-test-network\",\n auto_create_subnetworks=False)\nsubnetwork_purpose_private_nat = gcp.compute.Subnetwork(\"subnetwork-purpose-private-nat\",\n name=\"subnet-purpose-test-subnetwork\",\n region=\"us-west2\",\n ip_cidr_range=\"192.168.1.0/24\",\n purpose=\"PRIVATE_NAT\",\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 Name = \"subnet-purpose-test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_purpose_private_nat = new Gcp.Compute.Subnetwork(\"subnetwork-purpose-private-nat\", new()\n {\n Name = \"subnet-purpose-test-subnetwork\",\n Region = \"us-west2\",\n IpCidrRange = \"192.168.1.0/24\",\n Purpose = \"PRIVATE_NAT\",\n Network = custom_test.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"subnet-purpose-test-network\"),\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-purpose-private-nat\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-purpose-test-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.1.0/24\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_NAT\"),\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 .name(\"subnet-purpose-test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_purpose_private_nat = new Subnetwork(\"subnetwork-purpose-private-nat\", SubnetworkArgs.builder()\n .name(\"subnet-purpose-test-subnetwork\")\n .region(\"us-west2\")\n .ipCidrRange(\"192.168.1.0/24\")\n .purpose(\"PRIVATE_NAT\")\n .network(custom_test.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-purpose-private-nat:\n type: gcp:compute:Subnetwork\n properties:\n name: subnet-purpose-test-subnetwork\n region: us-west2\n ipCidrRange: 192.168.1.0/24\n purpose: PRIVATE_NAT\n network: ${[\"custom-test\"].id}\n custom-test:\n type: gcp:compute:Network\n properties:\n name: subnet-purpose-test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Cidr Overlap\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst net_cidr_overlap = new gcp.compute.Network(\"net-cidr-overlap\", {\n name: \"net-cidr-overlap\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_cidr_overlap = new gcp.compute.Subnetwork(\"subnetwork-cidr-overlap\", {\n name: \"subnet-cidr-overlap\",\n region: \"us-west2\",\n ipCidrRange: \"192.168.1.0/24\",\n allowSubnetCidrRoutesOverlap: true,\n network: net_cidr_overlap.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnet_cidr_overlap = gcp.compute.Network(\"net-cidr-overlap\",\n name=\"net-cidr-overlap\",\n auto_create_subnetworks=False)\nsubnetwork_cidr_overlap = gcp.compute.Subnetwork(\"subnetwork-cidr-overlap\",\n name=\"subnet-cidr-overlap\",\n region=\"us-west2\",\n ip_cidr_range=\"192.168.1.0/24\",\n allow_subnet_cidr_routes_overlap=True,\n network=net_cidr_overlap.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 net_cidr_overlap = new Gcp.Compute.Network(\"net-cidr-overlap\", new()\n {\n Name = \"net-cidr-overlap\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_cidr_overlap = new Gcp.Compute.Subnetwork(\"subnetwork-cidr-overlap\", new()\n {\n Name = \"subnet-cidr-overlap\",\n Region = \"us-west2\",\n IpCidrRange = \"192.168.1.0/24\",\n AllowSubnetCidrRoutesOverlap = true,\n Network = net_cidr_overlap.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"net-cidr-overlap\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"net-cidr-overlap\"),\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-cidr-overlap\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-cidr-overlap\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.1.0/24\"),\n\t\t\tAllowSubnetCidrRoutesOverlap: pulumi.Bool(true),\n\t\t\tNetwork: net_cidr_overlap.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 net_cidr_overlap = new Network(\"net-cidr-overlap\", NetworkArgs.builder()\n .name(\"net-cidr-overlap\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_cidr_overlap = new Subnetwork(\"subnetwork-cidr-overlap\", SubnetworkArgs.builder()\n .name(\"subnet-cidr-overlap\")\n .region(\"us-west2\")\n .ipCidrRange(\"192.168.1.0/24\")\n .allowSubnetCidrRoutesOverlap(true)\n .network(net_cidr_overlap.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-cidr-overlap:\n type: gcp:compute:Subnetwork\n properties:\n name: subnet-cidr-overlap\n region: us-west2\n ipCidrRange: 192.168.1.0/24\n allowSubnetCidrRoutesOverlap: true\n network: ${[\"net-cidr-overlap\"].id}\n net-cidr-overlap:\n type: gcp:compute:Network\n properties:\n name: net-cidr-overlap\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubnetwork can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/subnetworks/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Subnetwork can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/subnetwork:Subnetwork default projects/{{project}}/regions/{{region}}/subnetworks/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/subnetwork:Subnetwork default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/subnetwork:Subnetwork default {{region}}/{{name}}\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 * [Cloud Networking](https://cloud.google.com/vpc/docs/using-vpc)\n * [Private Google Access](https://cloud.google.com/vpc/docs/configure-private-google-access)\n\n## Example Usage\n\n### Subnetwork Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"test-network\",\n autoCreateSubnetworks: false,\n});\nconst network_with_private_secondary_ip_ranges = new gcp.compute.Subnetwork(\"network-with-private-secondary-ip-ranges\", {\n name: \"test-subnetwork\",\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\",\n name=\"test-network\",\n auto_create_subnetworks=False)\nnetwork_with_private_secondary_ip_ranges = gcp.compute.Subnetwork(\"network-with-private-secondary-ip-ranges\",\n name=\"test-subnetwork\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=custom_test.id,\n secondary_ip_ranges=[{\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 Name = \"test-network\",\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 Name = \"test-subnetwork\",\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/v7/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\tName: pulumi.String(\"test-network\"),\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\tName: pulumi.String(\"test-subnetwork\"),\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 .name(\"test-network\")\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 .name(\"test-subnetwork\")\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 name: test-subnetwork\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 name: test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Logging Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"log-test-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet_with_logging = new gcp.compute.Subnetwork(\"subnet-with-logging\", {\n name: \"log-test-subnetwork\",\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\",\n name=\"log-test-network\",\n auto_create_subnetworks=False)\nsubnet_with_logging = gcp.compute.Subnetwork(\"subnet-with-logging\",\n name=\"log-test-subnetwork\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=custom_test.id,\n log_config={\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 Name = \"log-test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet_with_logging = new Gcp.Compute.Subnetwork(\"subnet-with-logging\", new()\n {\n Name = \"log-test-subnetwork\",\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/v7/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\tName: pulumi.String(\"log-test-network\"),\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\tName: pulumi.String(\"log-test-subnetwork\"),\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 .name(\"log-test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet_with_logging = new Subnetwork(\"subnet-with-logging\", SubnetworkArgs.builder()\n .name(\"log-test-subnetwork\")\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 name: log-test-subnetwork\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 name: log-test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Internal L7lb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"l7lb-test-network\",\n autoCreateSubnetworks: false,\n});\nconst network_for_l7lb = new gcp.compute.Subnetwork(\"network-for-l7lb\", {\n name: \"l7lb-test-subnetwork\",\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```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\",\n name=\"l7lb-test-network\",\n auto_create_subnetworks=False)\nnetwork_for_l7lb = gcp.compute.Subnetwork(\"network-for-l7lb\",\n name=\"l7lb-test-subnetwork\",\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```\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 Name = \"l7lb-test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var network_for_l7lb = new Gcp.Compute.Subnetwork(\"network-for-l7lb\", new()\n {\n Name = \"l7lb-test-subnetwork\",\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\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"l7lb-test-network\"),\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-for-l7lb\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"l7lb-test-subnetwork\"),\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})\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 .name(\"l7lb-test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_for_l7lb = new Subnetwork(\"network-for-l7lb\", SubnetworkArgs.builder()\n .name(\"l7lb-test-subnetwork\")\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());\n\n }\n}\n```\n```yaml\nresources:\n network-for-l7lb:\n type: gcp:compute:Subnetwork\n properties:\n name: l7lb-test-subnetwork\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 custom-test:\n type: gcp:compute:Network\n properties:\n name: l7lb-test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Ipv6\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"ipv6-test-network\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_ipv6 = new gcp.compute.Subnetwork(\"subnetwork-ipv6\", {\n name: \"ipv6-test-subnetwork\",\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\",\n name=\"ipv6-test-network\",\n auto_create_subnetworks=False)\nsubnetwork_ipv6 = gcp.compute.Subnetwork(\"subnetwork-ipv6\",\n name=\"ipv6-test-subnetwork\",\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 Name = \"ipv6-test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_ipv6 = new Gcp.Compute.Subnetwork(\"subnetwork-ipv6\", new()\n {\n Name = \"ipv6-test-subnetwork\",\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/v7/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\tName: pulumi.String(\"ipv6-test-network\"),\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\tName: pulumi.String(\"ipv6-test-subnetwork\"),\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 .name(\"ipv6-test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_ipv6 = new Subnetwork(\"subnetwork-ipv6\", SubnetworkArgs.builder()\n .name(\"ipv6-test-subnetwork\")\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 name: ipv6-test-subnetwork\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 name: ipv6-test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Internal Ipv6\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"internal-ipv6-test-network\",\n autoCreateSubnetworks: false,\n enableUlaInternalIpv6: true,\n});\nconst subnetwork_internal_ipv6 = new gcp.compute.Subnetwork(\"subnetwork-internal-ipv6\", {\n name: \"internal-ipv6-test-subnetwork\",\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 name=\"internal-ipv6-test-network\",\n auto_create_subnetworks=False,\n enable_ula_internal_ipv6=True)\nsubnetwork_internal_ipv6 = gcp.compute.Subnetwork(\"subnetwork-internal-ipv6\",\n name=\"internal-ipv6-test-subnetwork\",\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 Name = \"internal-ipv6-test-network\",\n AutoCreateSubnetworks = false,\n EnableUlaInternalIpv6 = true,\n });\n\n var subnetwork_internal_ipv6 = new Gcp.Compute.Subnetwork(\"subnetwork-internal-ipv6\", new()\n {\n Name = \"internal-ipv6-test-subnetwork\",\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/v7/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\tName: pulumi.String(\"internal-ipv6-test-network\"),\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\tName: pulumi.String(\"internal-ipv6-test-subnetwork\"),\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 .name(\"internal-ipv6-test-network\")\n .autoCreateSubnetworks(false)\n .enableUlaInternalIpv6(true)\n .build());\n\n var subnetwork_internal_ipv6 = new Subnetwork(\"subnetwork-internal-ipv6\", SubnetworkArgs.builder()\n .name(\"internal-ipv6-test-subnetwork\")\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 name: internal-ipv6-test-subnetwork\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 name: internal-ipv6-test-network\n autoCreateSubnetworks: false\n enableUlaInternalIpv6: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Purpose Private Nat\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"subnet-purpose-test-network\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_purpose_private_nat = new gcp.compute.Subnetwork(\"subnetwork-purpose-private-nat\", {\n name: \"subnet-purpose-test-subnetwork\",\n region: \"us-west2\",\n ipCidrRange: \"192.168.1.0/24\",\n purpose: \"PRIVATE_NAT\",\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 name=\"subnet-purpose-test-network\",\n auto_create_subnetworks=False)\nsubnetwork_purpose_private_nat = gcp.compute.Subnetwork(\"subnetwork-purpose-private-nat\",\n name=\"subnet-purpose-test-subnetwork\",\n region=\"us-west2\",\n ip_cidr_range=\"192.168.1.0/24\",\n purpose=\"PRIVATE_NAT\",\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 Name = \"subnet-purpose-test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_purpose_private_nat = new Gcp.Compute.Subnetwork(\"subnetwork-purpose-private-nat\", new()\n {\n Name = \"subnet-purpose-test-subnetwork\",\n Region = \"us-west2\",\n IpCidrRange = \"192.168.1.0/24\",\n Purpose = \"PRIVATE_NAT\",\n Network = custom_test.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"subnet-purpose-test-network\"),\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-purpose-private-nat\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-purpose-test-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.1.0/24\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_NAT\"),\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 .name(\"subnet-purpose-test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_purpose_private_nat = new Subnetwork(\"subnetwork-purpose-private-nat\", SubnetworkArgs.builder()\n .name(\"subnet-purpose-test-subnetwork\")\n .region(\"us-west2\")\n .ipCidrRange(\"192.168.1.0/24\")\n .purpose(\"PRIVATE_NAT\")\n .network(custom_test.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-purpose-private-nat:\n type: gcp:compute:Subnetwork\n properties:\n name: subnet-purpose-test-subnetwork\n region: us-west2\n ipCidrRange: 192.168.1.0/24\n purpose: PRIVATE_NAT\n network: ${[\"custom-test\"].id}\n custom-test:\n type: gcp:compute:Network\n properties:\n name: subnet-purpose-test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Cidr Overlap\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst net_cidr_overlap = new gcp.compute.Network(\"net-cidr-overlap\", {\n name: \"net-cidr-overlap\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_cidr_overlap = new gcp.compute.Subnetwork(\"subnetwork-cidr-overlap\", {\n name: \"subnet-cidr-overlap\",\n region: \"us-west2\",\n ipCidrRange: \"192.168.1.0/24\",\n allowSubnetCidrRoutesOverlap: true,\n network: net_cidr_overlap.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnet_cidr_overlap = gcp.compute.Network(\"net-cidr-overlap\",\n name=\"net-cidr-overlap\",\n auto_create_subnetworks=False)\nsubnetwork_cidr_overlap = gcp.compute.Subnetwork(\"subnetwork-cidr-overlap\",\n name=\"subnet-cidr-overlap\",\n region=\"us-west2\",\n ip_cidr_range=\"192.168.1.0/24\",\n allow_subnet_cidr_routes_overlap=True,\n network=net_cidr_overlap.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 net_cidr_overlap = new Gcp.Compute.Network(\"net-cidr-overlap\", new()\n {\n Name = \"net-cidr-overlap\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_cidr_overlap = new Gcp.Compute.Subnetwork(\"subnetwork-cidr-overlap\", new()\n {\n Name = \"subnet-cidr-overlap\",\n Region = \"us-west2\",\n IpCidrRange = \"192.168.1.0/24\",\n AllowSubnetCidrRoutesOverlap = true,\n Network = net_cidr_overlap.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"net-cidr-overlap\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"net-cidr-overlap\"),\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-cidr-overlap\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-cidr-overlap\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.1.0/24\"),\n\t\t\tAllowSubnetCidrRoutesOverlap: pulumi.Bool(true),\n\t\t\tNetwork: net_cidr_overlap.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 net_cidr_overlap = new Network(\"net-cidr-overlap\", NetworkArgs.builder()\n .name(\"net-cidr-overlap\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_cidr_overlap = new Subnetwork(\"subnetwork-cidr-overlap\", SubnetworkArgs.builder()\n .name(\"subnet-cidr-overlap\")\n .region(\"us-west2\")\n .ipCidrRange(\"192.168.1.0/24\")\n .allowSubnetCidrRoutesOverlap(true)\n .network(net_cidr_overlap.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-cidr-overlap:\n type: gcp:compute:Subnetwork\n properties:\n name: subnet-cidr-overlap\n region: us-west2\n ipCidrRange: 192.168.1.0/24\n allowSubnetCidrRoutesOverlap: true\n network: ${[\"net-cidr-overlap\"].id}\n net-cidr-overlap:\n type: gcp:compute:Network\n properties:\n name: net-cidr-overlap\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubnetwork can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/subnetworks/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Subnetwork can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/subnetwork:Subnetwork default projects/{{project}}/regions/{{region}}/subnetworks/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/subnetwork:Subnetwork default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/subnetwork:Subnetwork default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/subnetwork:Subnetwork default {{name}}\n```\n\n", "properties": { "allowSubnetCidrRoutesOverlap": { "type": "boolean", @@ -164571,7 +164571,7 @@ } }, "gcp:compute/targetGrpcProxy:TargetGrpcProxy": { - "description": "Represents a Target gRPC Proxy resource. A target gRPC proxy is a component\nof load balancers intended for load balancing gRPC traffic. Global forwarding\nrules reference a target gRPC proxy. The Target gRPC Proxy references\na URL map which specifies how traffic routes to gRPC backend services.\n\n\nTo get more information about TargetGrpcProxy, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/targetGrpcProxies)\n* How-to Guides\n * [Using Target gRPC Proxies](https://cloud.google.com/traffic-director/docs/proxyless-overview)\n\n## Example Usage\n\n### Target Grpc Proxy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"healthcheck\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n grpcHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n grpcServiceName: \"testservice\",\n },\n});\nconst home = new gcp.compute.BackendService(\"home\", {\n name: \"backend\",\n portName: \"grpc\",\n protocol: \"GRPC\",\n timeoutSec: 10,\n healthChecks: defaultHealthCheck.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n routeRules: [{\n priority: 1,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe2\"],\n requestHeadersToAdds: [{\n headerName: \"AddSomethingElse\",\n headerValue: \"MyOtherValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe3\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n matchRules: [{\n fullPathMatch: \"a full path\",\n headerMatches: [{\n headerName: \"someheader\",\n exactMatch: \"match this exactly\",\n invertMatch: true,\n }],\n ignoreCase: true,\n metadataFilters: [{\n filterMatchCriteria: \"MATCH_ANY\",\n filterLabels: [{\n name: \"PLANET\",\n value: \"MARS\",\n }],\n }],\n queryParameterMatches: [{\n name: \"a query parameter\",\n presentMatch: true,\n }],\n }],\n urlRedirect: {\n hostRedirect: \"A host\",\n httpsRedirect: false,\n pathRedirect: \"some/path\",\n redirectResponseCode: \"TEMPORARY_REDIRECT\",\n stripQuery: true,\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\nconst _default = new gcp.compute.TargetGrpcProxy(\"default\", {\n name: \"proxy\",\n urlMap: urlmap.id,\n validateForProxyless: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"healthcheck\",\n timeout_sec=1,\n check_interval_sec=1,\n grpc_health_check={\n \"portName\": \"health-check-port\",\n \"portSpecification\": \"USE_NAMED_PORT\",\n \"grpcServiceName\": \"testservice\",\n })\nhome = gcp.compute.BackendService(\"home\",\n name=\"backend\",\n port_name=\"grpc\",\n protocol=\"GRPC\",\n timeout_sec=10,\n health_checks=default_health_check.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\")\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": home.id,\n \"routeRules\": [{\n \"priority\": 1,\n \"headerAction\": {\n \"requestHeadersToRemoves\": [\"RemoveMe2\"],\n \"requestHeadersToAdds\": [{\n \"headerName\": \"AddSomethingElse\",\n \"headerValue\": \"MyOtherValue\",\n \"replace\": True,\n }],\n \"responseHeadersToRemoves\": [\"RemoveMe3\"],\n \"responseHeadersToAdds\": [{\n \"headerName\": \"AddMe\",\n \"headerValue\": \"MyValue\",\n \"replace\": False,\n }],\n },\n \"matchRules\": [{\n \"fullPathMatch\": \"a full path\",\n \"headerMatches\": [{\n \"headerName\": \"someheader\",\n \"exactMatch\": \"match this exactly\",\n \"invertMatch\": True,\n }],\n \"ignoreCase\": True,\n \"metadataFilters\": [{\n \"filterMatchCriteria\": \"MATCH_ANY\",\n \"filterLabels\": [{\n \"name\": \"PLANET\",\n \"value\": \"MARS\",\n }],\n }],\n \"queryParameterMatches\": [{\n \"name\": \"a query parameter\",\n \"presentMatch\": True,\n }],\n }],\n \"urlRedirect\": {\n \"hostRedirect\": \"A host\",\n \"httpsRedirect\": False,\n \"pathRedirect\": \"some/path\",\n \"redirectResponseCode\": \"TEMPORARY_REDIRECT\",\n \"stripQuery\": True,\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\ndefault = gcp.compute.TargetGrpcProxy(\"default\",\n name=\"proxy\",\n url_map=urlmap.id,\n validate_for_proxyless=True)\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 defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"healthcheck\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n GrpcHealthCheck = new Gcp.Compute.Inputs.HealthCheckGrpcHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n GrpcServiceName = \"testservice\",\n },\n });\n\n var home = new Gcp.Compute.BackendService(\"home\", new()\n {\n Name = \"backend\",\n PortName = \"grpc\",\n Protocol = \"GRPC\",\n TimeoutSec = 10,\n HealthChecks = defaultHealthCheck.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n HeaderAction = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe2\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddSomethingElse\",\n HeaderValue = \"MyOtherValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe3\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"a full path\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"someheader\",\n ExactMatch = \"match this exactly\",\n InvertMatch = true,\n },\n },\n IgnoreCase = true,\n MetadataFilters = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs\n {\n FilterMatchCriteria = \"MATCH_ANY\",\n FilterLabels = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs\n {\n Name = \"PLANET\",\n Value = \"MARS\",\n },\n },\n },\n },\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"a query parameter\",\n PresentMatch = true,\n },\n },\n },\n },\n UrlRedirect = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleUrlRedirectArgs\n {\n HostRedirect = \"A host\",\n HttpsRedirect = false,\n PathRedirect = \"some/path\",\n RedirectResponseCode = \"TEMPORARY_REDIRECT\",\n StripQuery = true,\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetGrpcProxy(\"default\", new()\n {\n Name = \"proxy\",\n UrlMap = urlmap.Id,\n ValidateForProxyless = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"healthcheck\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tGrpcHealthCheck: \u0026compute.HealthCheckGrpcHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tGrpcServiceName: pulumi.String(\"testservice\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewBackendService(ctx, \"home\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend\"),\n\t\t\tPortName: pulumi.String(\"grpc\"),\n\t\t\tProtocol: pulumi.String(\"GRPC\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\turlmap, err := compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tHeaderAction: \u0026compute.URLMapPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddSomethingElse\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyOtherValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"a full path\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"someheader\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"match this exactly\"),\n\t\t\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tMetadataFilters: compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs{\n\t\t\t\t\t\t\t\t\t\t\tFilterMatchCriteria: pulumi.String(\"MATCH_ANY\"),\n\t\t\t\t\t\t\t\t\t\t\tFilterLabels: compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PLANET\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"MARS\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"a query parameter\"),\n\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tUrlRedirect: \u0026compute.URLMapPathMatcherRouteRuleUrlRedirectArgs{\n\t\t\t\t\t\t\t\tHostRedirect: pulumi.String(\"A host\"),\n\t\t\t\t\t\t\t\tHttpsRedirect: pulumi.Bool(false),\n\t\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"some/path\"),\n\t\t\t\t\t\t\t\tRedirectResponseCode: pulumi.String(\"TEMPORARY_REDIRECT\"),\n\t\t\t\t\t\t\t\tStripQuery: pulumi.Bool(true),\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\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.NewTargetGrpcProxy(ctx, \"default\", \u0026compute.TargetGrpcProxyArgs{\n\t\t\tName: pulumi.String(\"proxy\"),\n\t\t\tUrlMap: urlmap.ID(),\n\t\t\tValidateForProxyless: pulumi.Bool(true),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckGrpcHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\nimport com.pulumi.gcp.compute.TargetGrpcProxy;\nimport com.pulumi.gcp.compute.TargetGrpcProxyArgs;\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 defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"healthcheck\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .grpcHealthCheck(HealthCheckGrpcHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .grpcServiceName(\"testservice\")\n .build())\n .build());\n\n var home = new BackendService(\"home\", BackendServiceArgs.builder()\n .name(\"backend\")\n .portName(\"grpc\")\n .protocol(\"GRPC\")\n .timeoutSec(10)\n .healthChecks(defaultHealthCheck.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .routeRules(URLMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .headerAction(URLMapPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe2\")\n .requestHeadersToAdds(URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddSomethingElse\")\n .headerValue(\"MyOtherValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe3\")\n .responseHeadersToAdds(URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"a full path\")\n .headerMatches(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"someheader\")\n .exactMatch(\"match this exactly\")\n .invertMatch(true)\n .build())\n .ignoreCase(true)\n .metadataFilters(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs.builder()\n .filterMatchCriteria(\"MATCH_ANY\")\n .filterLabels(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs.builder()\n .name(\"PLANET\")\n .value(\"MARS\")\n .build())\n .build())\n .queryParameterMatches(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"a query parameter\")\n .presentMatch(true)\n .build())\n .build())\n .urlRedirect(URLMapPathMatcherRouteRuleUrlRedirectArgs.builder()\n .hostRedirect(\"A host\")\n .httpsRedirect(false)\n .pathRedirect(\"some/path\")\n .redirectResponseCode(\"TEMPORARY_REDIRECT\")\n .stripQuery(true)\n .build())\n .build())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n var default_ = new TargetGrpcProxy(\"default\", TargetGrpcProxyArgs.builder()\n .name(\"proxy\")\n .urlMap(urlmap.id())\n .validateForProxyless(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetGrpcProxy\n properties:\n name: proxy\n urlMap: ${urlmap.id}\n validateForProxyless: true\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n routeRules:\n - priority: 1\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe2\n requestHeadersToAdds:\n - headerName: AddSomethingElse\n headerValue: MyOtherValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe3\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n matchRules:\n - fullPathMatch: a full path\n headerMatches:\n - headerName: someheader\n exactMatch: match this exactly\n invertMatch: true\n ignoreCase: true\n metadataFilters:\n - filterMatchCriteria: MATCH_ANY\n filterLabels:\n - name: PLANET\n value: MARS\n queryParameterMatches:\n - name: a query parameter\n presentMatch: true\n urlRedirect:\n hostRedirect: A host\n httpsRedirect: false\n pathRedirect: some/path\n redirectResponseCode: TEMPORARY_REDIRECT\n stripQuery: true\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:BackendService\n properties:\n name: backend\n portName: grpc\n protocol: GRPC\n timeoutSec: 10\n healthChecks: ${defaultHealthCheck.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: healthcheck\n timeoutSec: 1\n checkIntervalSec: 1\n grpcHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n grpcServiceName: testservice\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTargetGrpcProxy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/targetGrpcProxies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TargetGrpcProxy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/targetGrpcProxy:TargetGrpcProxy default projects/{{project}}/global/targetGrpcProxies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetGrpcProxy:TargetGrpcProxy default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetGrpcProxy:TargetGrpcProxy default {{name}}\n```\n\n", + "description": "Represents a Target gRPC Proxy resource. A target gRPC proxy is a component\nof load balancers intended for load balancing gRPC traffic. Global forwarding\nrules reference a target gRPC proxy. The Target gRPC Proxy references\na URL map which specifies how traffic routes to gRPC backend services.\n\n\nTo get more information about TargetGrpcProxy, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/targetGrpcProxies)\n* How-to Guides\n * [Using Target gRPC Proxies](https://cloud.google.com/traffic-director/docs/proxyless-overview)\n\n## Example Usage\n\n### Target Grpc Proxy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"healthcheck\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n grpcHealthCheck: {\n portName: \"health-check-port\",\n portSpecification: \"USE_NAMED_PORT\",\n grpcServiceName: \"testservice\",\n },\n});\nconst home = new gcp.compute.BackendService(\"home\", {\n name: \"backend\",\n portName: \"grpc\",\n protocol: \"GRPC\",\n timeoutSec: 10,\n healthChecks: defaultHealthCheck.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n routeRules: [{\n priority: 1,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe2\"],\n requestHeadersToAdds: [{\n headerName: \"AddSomethingElse\",\n headerValue: \"MyOtherValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe3\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n matchRules: [{\n fullPathMatch: \"a full path\",\n headerMatches: [{\n headerName: \"someheader\",\n exactMatch: \"match this exactly\",\n invertMatch: true,\n }],\n ignoreCase: true,\n metadataFilters: [{\n filterMatchCriteria: \"MATCH_ANY\",\n filterLabels: [{\n name: \"PLANET\",\n value: \"MARS\",\n }],\n }],\n queryParameterMatches: [{\n name: \"a query parameter\",\n presentMatch: true,\n }],\n }],\n urlRedirect: {\n hostRedirect: \"A host\",\n httpsRedirect: false,\n pathRedirect: \"some/path\",\n redirectResponseCode: \"TEMPORARY_REDIRECT\",\n stripQuery: true,\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\nconst _default = new gcp.compute.TargetGrpcProxy(\"default\", {\n name: \"proxy\",\n urlMap: urlmap.id,\n validateForProxyless: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"healthcheck\",\n timeout_sec=1,\n check_interval_sec=1,\n grpc_health_check={\n \"port_name\": \"health-check-port\",\n \"port_specification\": \"USE_NAMED_PORT\",\n \"grpc_service_name\": \"testservice\",\n })\nhome = gcp.compute.BackendService(\"home\",\n name=\"backend\",\n port_name=\"grpc\",\n protocol=\"GRPC\",\n timeout_sec=10,\n health_checks=default_health_check.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\")\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"route_rules\": [{\n \"priority\": 1,\n \"header_action\": {\n \"request_headers_to_removes\": [\"RemoveMe2\"],\n \"request_headers_to_adds\": [{\n \"header_name\": \"AddSomethingElse\",\n \"header_value\": \"MyOtherValue\",\n \"replace\": True,\n }],\n \"response_headers_to_removes\": [\"RemoveMe3\"],\n \"response_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": False,\n }],\n },\n \"match_rules\": [{\n \"full_path_match\": \"a full path\",\n \"header_matches\": [{\n \"header_name\": \"someheader\",\n \"exact_match\": \"match this exactly\",\n \"invert_match\": True,\n }],\n \"ignore_case\": True,\n \"metadata_filters\": [{\n \"filter_match_criteria\": \"MATCH_ANY\",\n \"filter_labels\": [{\n \"name\": \"PLANET\",\n \"value\": \"MARS\",\n }],\n }],\n \"query_parameter_matches\": [{\n \"name\": \"a query parameter\",\n \"present_match\": True,\n }],\n }],\n \"url_redirect\": {\n \"host_redirect\": \"A host\",\n \"https_redirect\": False,\n \"path_redirect\": \"some/path\",\n \"redirect_response_code\": \"TEMPORARY_REDIRECT\",\n \"strip_query\": True,\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\ndefault = gcp.compute.TargetGrpcProxy(\"default\",\n name=\"proxy\",\n url_map=urlmap.id,\n validate_for_proxyless=True)\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 defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"healthcheck\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n GrpcHealthCheck = new Gcp.Compute.Inputs.HealthCheckGrpcHealthCheckArgs\n {\n PortName = \"health-check-port\",\n PortSpecification = \"USE_NAMED_PORT\",\n GrpcServiceName = \"testservice\",\n },\n });\n\n var home = new Gcp.Compute.BackendService(\"home\", new()\n {\n Name = \"backend\",\n PortName = \"grpc\",\n Protocol = \"GRPC\",\n TimeoutSec = 10,\n HealthChecks = defaultHealthCheck.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n HeaderAction = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe2\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddSomethingElse\",\n HeaderValue = \"MyOtherValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe3\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"a full path\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"someheader\",\n ExactMatch = \"match this exactly\",\n InvertMatch = true,\n },\n },\n IgnoreCase = true,\n MetadataFilters = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs\n {\n FilterMatchCriteria = \"MATCH_ANY\",\n FilterLabels = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs\n {\n Name = \"PLANET\",\n Value = \"MARS\",\n },\n },\n },\n },\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"a query parameter\",\n PresentMatch = true,\n },\n },\n },\n },\n UrlRedirect = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleUrlRedirectArgs\n {\n HostRedirect = \"A host\",\n HttpsRedirect = false,\n PathRedirect = \"some/path\",\n RedirectResponseCode = \"TEMPORARY_REDIRECT\",\n StripQuery = true,\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetGrpcProxy(\"default\", new()\n {\n Name = \"proxy\",\n UrlMap = urlmap.Id,\n ValidateForProxyless = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"healthcheck\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tGrpcHealthCheck: \u0026compute.HealthCheckGrpcHealthCheckArgs{\n\t\t\t\tPortName: pulumi.String(\"health-check-port\"),\n\t\t\t\tPortSpecification: pulumi.String(\"USE_NAMED_PORT\"),\n\t\t\t\tGrpcServiceName: pulumi.String(\"testservice\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewBackendService(ctx, \"home\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend\"),\n\t\t\tPortName: pulumi.String(\"grpc\"),\n\t\t\tProtocol: pulumi.String(\"GRPC\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\turlmap, err := compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tHeaderAction: \u0026compute.URLMapPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddSomethingElse\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyOtherValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"a full path\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"someheader\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"match this exactly\"),\n\t\t\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tMetadataFilters: compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs{\n\t\t\t\t\t\t\t\t\t\t\tFilterMatchCriteria: pulumi.String(\"MATCH_ANY\"),\n\t\t\t\t\t\t\t\t\t\t\tFilterLabels: compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PLANET\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"MARS\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"a query parameter\"),\n\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tUrlRedirect: \u0026compute.URLMapPathMatcherRouteRuleUrlRedirectArgs{\n\t\t\t\t\t\t\t\tHostRedirect: pulumi.String(\"A host\"),\n\t\t\t\t\t\t\t\tHttpsRedirect: pulumi.Bool(false),\n\t\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"some/path\"),\n\t\t\t\t\t\t\t\tRedirectResponseCode: pulumi.String(\"TEMPORARY_REDIRECT\"),\n\t\t\t\t\t\t\t\tStripQuery: pulumi.Bool(true),\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\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.NewTargetGrpcProxy(ctx, \"default\", \u0026compute.TargetGrpcProxyArgs{\n\t\t\tName: pulumi.String(\"proxy\"),\n\t\t\tUrlMap: urlmap.ID(),\n\t\t\tValidateForProxyless: pulumi.Bool(true),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckGrpcHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\nimport com.pulumi.gcp.compute.TargetGrpcProxy;\nimport com.pulumi.gcp.compute.TargetGrpcProxyArgs;\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 defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"healthcheck\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .grpcHealthCheck(HealthCheckGrpcHealthCheckArgs.builder()\n .portName(\"health-check-port\")\n .portSpecification(\"USE_NAMED_PORT\")\n .grpcServiceName(\"testservice\")\n .build())\n .build());\n\n var home = new BackendService(\"home\", BackendServiceArgs.builder()\n .name(\"backend\")\n .portName(\"grpc\")\n .protocol(\"GRPC\")\n .timeoutSec(10)\n .healthChecks(defaultHealthCheck.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .routeRules(URLMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .headerAction(URLMapPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe2\")\n .requestHeadersToAdds(URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddSomethingElse\")\n .headerValue(\"MyOtherValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe3\")\n .responseHeadersToAdds(URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"a full path\")\n .headerMatches(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"someheader\")\n .exactMatch(\"match this exactly\")\n .invertMatch(true)\n .build())\n .ignoreCase(true)\n .metadataFilters(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs.builder()\n .filterMatchCriteria(\"MATCH_ANY\")\n .filterLabels(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs.builder()\n .name(\"PLANET\")\n .value(\"MARS\")\n .build())\n .build())\n .queryParameterMatches(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"a query parameter\")\n .presentMatch(true)\n .build())\n .build())\n .urlRedirect(URLMapPathMatcherRouteRuleUrlRedirectArgs.builder()\n .hostRedirect(\"A host\")\n .httpsRedirect(false)\n .pathRedirect(\"some/path\")\n .redirectResponseCode(\"TEMPORARY_REDIRECT\")\n .stripQuery(true)\n .build())\n .build())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n var default_ = new TargetGrpcProxy(\"default\", TargetGrpcProxyArgs.builder()\n .name(\"proxy\")\n .urlMap(urlmap.id())\n .validateForProxyless(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetGrpcProxy\n properties:\n name: proxy\n urlMap: ${urlmap.id}\n validateForProxyless: true\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n routeRules:\n - priority: 1\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe2\n requestHeadersToAdds:\n - headerName: AddSomethingElse\n headerValue: MyOtherValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe3\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n matchRules:\n - fullPathMatch: a full path\n headerMatches:\n - headerName: someheader\n exactMatch: match this exactly\n invertMatch: true\n ignoreCase: true\n metadataFilters:\n - filterMatchCriteria: MATCH_ANY\n filterLabels:\n - name: PLANET\n value: MARS\n queryParameterMatches:\n - name: a query parameter\n presentMatch: true\n urlRedirect:\n hostRedirect: A host\n httpsRedirect: false\n pathRedirect: some/path\n redirectResponseCode: TEMPORARY_REDIRECT\n stripQuery: true\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:BackendService\n properties:\n name: backend\n portName: grpc\n protocol: GRPC\n timeoutSec: 10\n healthChecks: ${defaultHealthCheck.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: healthcheck\n timeoutSec: 1\n checkIntervalSec: 1\n grpcHealthCheck:\n portName: health-check-port\n portSpecification: USE_NAMED_PORT\n grpcServiceName: testservice\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTargetGrpcProxy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/targetGrpcProxies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TargetGrpcProxy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/targetGrpcProxy:TargetGrpcProxy default projects/{{project}}/global/targetGrpcProxies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetGrpcProxy:TargetGrpcProxy default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetGrpcProxy:TargetGrpcProxy default {{name}}\n```\n\n", "properties": { "creationTimestamp": { "type": "string", @@ -164692,7 +164692,7 @@ } }, "gcp:compute/targetHttpProxy:TargetHttpProxy": { - "description": "Represents a TargetHttpProxy resource, which is used by one or more global\nforwarding rule to route incoming HTTP requests to a URL map.\n\n\nTo get more information about TargetHttpProxy, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/targetHttpProxies)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/load-balancing/http/target-proxies)\n\n## Example Usage\n\n### Target Http Proxy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"test-proxy\",\n urlMap: defaultURLMap.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": default_backend_service.id,\n \"pathRules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpProxy(\"default\",\n name=\"test-proxy\",\n url_map=default_url_map.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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"test-proxy\",\n UrlMap = defaultURLMap.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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 = compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultURLMap.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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpProxy(\"default\", TargetHttpProxyArgs.builder()\n .name(\"test-proxy\")\n .urlMap(defaultURLMap.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpProxy\n properties:\n name: test-proxy\n urlMap: ${defaultURLMap.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Http Proxy Http Keep Alive Timeout\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"test-http-keep-alive-timeout-proxy\",\n httpKeepAliveTimeoutSec: 610,\n urlMap: defaultURLMap.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": default_backend_service.id,\n \"pathRules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpProxy(\"default\",\n name=\"test-http-keep-alive-timeout-proxy\",\n http_keep_alive_timeout_sec=610,\n url_map=default_url_map.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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"test-http-keep-alive-timeout-proxy\",\n HttpKeepAliveTimeoutSec = 610,\n UrlMap = defaultURLMap.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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 = compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"test-http-keep-alive-timeout-proxy\"),\n\t\t\tHttpKeepAliveTimeoutSec: pulumi.Int(610),\n\t\t\tUrlMap: defaultURLMap.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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpProxy(\"default\", TargetHttpProxyArgs.builder()\n .name(\"test-http-keep-alive-timeout-proxy\")\n .httpKeepAliveTimeoutSec(610)\n .urlMap(defaultURLMap.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpProxy\n properties:\n name: test-http-keep-alive-timeout-proxy\n httpKeepAliveTimeoutSec: 610\n urlMap: ${defaultURLMap.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Http Proxy Https Redirect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n defaultUrlRedirect: {\n httpsRedirect: true,\n stripQuery: false,\n },\n});\nconst _default = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"test-https-redirect-proxy\",\n urlMap: defaultURLMap.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n default_url_redirect={\n \"httpsRedirect\": True,\n \"stripQuery\": False,\n })\ndefault = gcp.compute.TargetHttpProxy(\"default\",\n name=\"test-https-redirect-proxy\",\n url_map=default_url_map.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 defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n DefaultUrlRedirect = new Gcp.Compute.Inputs.URLMapDefaultUrlRedirectArgs\n {\n HttpsRedirect = true,\n StripQuery = false,\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"test-https-redirect-proxy\",\n UrlMap = defaultURLMap.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDefaultUrlRedirect: \u0026compute.URLMapDefaultUrlRedirectArgs{\n\t\t\t\tHttpsRedirect: pulumi.Bool(true),\n\t\t\t\tStripQuery: pulumi.Bool(false),\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.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"test-https-redirect-proxy\"),\n\t\t\tUrlMap: defaultURLMap.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.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapDefaultUrlRedirectArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\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 defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .defaultUrlRedirect(URLMapDefaultUrlRedirectArgs.builder()\n .httpsRedirect(true)\n .stripQuery(false)\n .build())\n .build());\n\n var default_ = new TargetHttpProxy(\"default\", TargetHttpProxyArgs.builder()\n .name(\"test-https-redirect-proxy\")\n .urlMap(defaultURLMap.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpProxy\n properties:\n name: test-https-redirect-proxy\n urlMap: ${defaultURLMap.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n defaultUrlRedirect:\n httpsRedirect: true\n stripQuery: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTargetHttpProxy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/targetHttpProxies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TargetHttpProxy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/targetHttpProxy:TargetHttpProxy default projects/{{project}}/global/targetHttpProxies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetHttpProxy:TargetHttpProxy default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetHttpProxy:TargetHttpProxy default {{name}}\n```\n\n", + "description": "Represents a TargetHttpProxy resource, which is used by one or more global\nforwarding rule to route incoming HTTP requests to a URL map.\n\n\nTo get more information about TargetHttpProxy, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/targetHttpProxies)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/load-balancing/http/target-proxies)\n\n## Example Usage\n\n### Target Http Proxy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"test-proxy\",\n urlMap: defaultURLMap.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpProxy(\"default\",\n name=\"test-proxy\",\n url_map=default_url_map.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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"test-proxy\",\n UrlMap = defaultURLMap.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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 = compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultURLMap.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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpProxy(\"default\", TargetHttpProxyArgs.builder()\n .name(\"test-proxy\")\n .urlMap(defaultURLMap.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpProxy\n properties:\n name: test-proxy\n urlMap: ${defaultURLMap.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Http Proxy Http Keep Alive Timeout\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"test-http-keep-alive-timeout-proxy\",\n httpKeepAliveTimeoutSec: 610,\n urlMap: defaultURLMap.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpProxy(\"default\",\n name=\"test-http-keep-alive-timeout-proxy\",\n http_keep_alive_timeout_sec=610,\n url_map=default_url_map.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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"test-http-keep-alive-timeout-proxy\",\n HttpKeepAliveTimeoutSec = 610,\n UrlMap = defaultURLMap.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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 = compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"test-http-keep-alive-timeout-proxy\"),\n\t\t\tHttpKeepAliveTimeoutSec: pulumi.Int(610),\n\t\t\tUrlMap: defaultURLMap.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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpProxy(\"default\", TargetHttpProxyArgs.builder()\n .name(\"test-http-keep-alive-timeout-proxy\")\n .httpKeepAliveTimeoutSec(610)\n .urlMap(defaultURLMap.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpProxy\n properties:\n name: test-http-keep-alive-timeout-proxy\n httpKeepAliveTimeoutSec: 610\n urlMap: ${defaultURLMap.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Http Proxy Https Redirect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n defaultUrlRedirect: {\n httpsRedirect: true,\n stripQuery: false,\n },\n});\nconst _default = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"test-https-redirect-proxy\",\n urlMap: defaultURLMap.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n default_url_redirect={\n \"https_redirect\": True,\n \"strip_query\": False,\n })\ndefault = gcp.compute.TargetHttpProxy(\"default\",\n name=\"test-https-redirect-proxy\",\n url_map=default_url_map.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 defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n DefaultUrlRedirect = new Gcp.Compute.Inputs.URLMapDefaultUrlRedirectArgs\n {\n HttpsRedirect = true,\n StripQuery = false,\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"test-https-redirect-proxy\",\n UrlMap = defaultURLMap.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDefaultUrlRedirect: \u0026compute.URLMapDefaultUrlRedirectArgs{\n\t\t\t\tHttpsRedirect: pulumi.Bool(true),\n\t\t\t\tStripQuery: pulumi.Bool(false),\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.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"test-https-redirect-proxy\"),\n\t\t\tUrlMap: defaultURLMap.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.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapDefaultUrlRedirectArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\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 defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .defaultUrlRedirect(URLMapDefaultUrlRedirectArgs.builder()\n .httpsRedirect(true)\n .stripQuery(false)\n .build())\n .build());\n\n var default_ = new TargetHttpProxy(\"default\", TargetHttpProxyArgs.builder()\n .name(\"test-https-redirect-proxy\")\n .urlMap(defaultURLMap.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpProxy\n properties:\n name: test-https-redirect-proxy\n urlMap: ${defaultURLMap.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n defaultUrlRedirect:\n httpsRedirect: true\n stripQuery: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTargetHttpProxy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/targetHttpProxies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TargetHttpProxy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/targetHttpProxy:TargetHttpProxy default projects/{{project}}/global/targetHttpProxies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetHttpProxy:TargetHttpProxy default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetHttpProxy:TargetHttpProxy default {{name}}\n```\n\n", "properties": { "creationTimestamp": { "type": "string", @@ -164823,7 +164823,7 @@ } }, "gcp:compute/targetHttpsProxy:TargetHttpsProxy": { - "description": "Represents a TargetHttpsProxy resource, which is used by one or more\nglobal forwarding rule to route incoming HTTPS requests to a URL map.\n\n\nTo get more information about TargetHttpsProxy, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/targetHttpsProxies)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/load-balancing/http/target-proxies)\n\n## Example Usage\n\n### Target Https Proxy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultSSLCertificate = new gcp.compute.SSLCertificate(\"default\", {\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-proxy\",\n urlMap: defaultURLMap.id,\n sslCertificates: [defaultSSLCertificate.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_ssl_certificate = gcp.compute.SSLCertificate(\"default\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": default_backend_service.id,\n \"pathRules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-proxy\",\n url_map=default_url_map.id,\n ssl_certificates=[default_ssl_certificate.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultSSLCertificate = new Gcp.Compute.SSLCertificate(\"default\", new()\n {\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-proxy\",\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n defaultSSLCertificate.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSSLCertificate, err := compute.NewSSLCertificate(ctx, \"default\", \u0026compute.SSLCertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: invokeFile.Result,\n\t\t\tCertificate: invokeFile1.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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 = compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultSSLCertificate.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.compute.SSLCertificate;\nimport com.pulumi.gcp.compute.SSLCertificateArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\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 defaultSSLCertificate = new SSLCertificate(\"defaultSSLCertificate\", SSLCertificateArgs.builder()\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpsProxy(\"default\", TargetHttpsProxyArgs.builder()\n .name(\"test-proxy\")\n .urlMap(defaultURLMap.id())\n .sslCertificates(defaultSSLCertificate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpsProxy\n properties:\n name: test-proxy\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${defaultSSLCertificate.id}\n defaultSSLCertificate:\n type: gcp:compute:SSLCertificate\n name: default\n properties:\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Https Proxy Http Keep Alive Timeout\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultSSLCertificate = new gcp.compute.SSLCertificate(\"default\", {\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-http-keep-alive-timeout-proxy\",\n httpKeepAliveTimeoutSec: 610,\n urlMap: defaultURLMap.id,\n sslCertificates: [defaultSSLCertificate.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_ssl_certificate = gcp.compute.SSLCertificate(\"default\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": default_backend_service.id,\n \"pathRules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-http-keep-alive-timeout-proxy\",\n http_keep_alive_timeout_sec=610,\n url_map=default_url_map.id,\n ssl_certificates=[default_ssl_certificate.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultSSLCertificate = new Gcp.Compute.SSLCertificate(\"default\", new()\n {\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-http-keep-alive-timeout-proxy\",\n HttpKeepAliveTimeoutSec = 610,\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n defaultSSLCertificate.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSSLCertificate, err := compute.NewSSLCertificate(ctx, \"default\", \u0026compute.SSLCertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: invokeFile.Result,\n\t\t\tCertificate: invokeFile1.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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 = compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-http-keep-alive-timeout-proxy\"),\n\t\t\tHttpKeepAliveTimeoutSec: pulumi.Int(610),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultSSLCertificate.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.compute.SSLCertificate;\nimport com.pulumi.gcp.compute.SSLCertificateArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\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 defaultSSLCertificate = new SSLCertificate(\"defaultSSLCertificate\", SSLCertificateArgs.builder()\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpsProxy(\"default\", TargetHttpsProxyArgs.builder()\n .name(\"test-http-keep-alive-timeout-proxy\")\n .httpKeepAliveTimeoutSec(610)\n .urlMap(defaultURLMap.id())\n .sslCertificates(defaultSSLCertificate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpsProxy\n properties:\n name: test-http-keep-alive-timeout-proxy\n httpKeepAliveTimeoutSec: 610\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${defaultSSLCertificate.id}\n defaultSSLCertificate:\n type: gcp:compute:SSLCertificate\n name: default\n properties:\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Https Proxy Mtls\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst defaultTrustConfig = new gcp.certificatemanager.TrustConfig(\"default\", {\n name: \"my-trust-config\",\n description: \"sample description for the trust config\",\n location: \"global\",\n trustStores: [{\n trustAnchors: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n intermediateCas: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n }],\n labels: {\n foo: \"bar\",\n },\n});\nconst defaultServerTlsPolicy = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-tls-policy\",\n description: \"my description\",\n location: \"global\",\n allowOpen: false,\n mtlsPolicy: {\n clientValidationMode: \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n clientValidationTrustConfig: pulumi.all([project, defaultTrustConfig.name]).apply(([project, name]) =\u003e `projects/${project.number}/locations/global/trustConfigs/${name}`),\n },\n});\nconst defaultSSLCertificate = new gcp.compute.SSLCertificate(\"default\", {\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-mtls-proxy\",\n urlMap: defaultURLMap.id,\n sslCertificates: [defaultSSLCertificate.id],\n serverTlsPolicy: defaultServerTlsPolicy.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\ndefault_trust_config = gcp.certificatemanager.TrustConfig(\"default\",\n name=\"my-trust-config\",\n description=\"sample description for the trust config\",\n location=\"global\",\n trust_stores=[{\n \"trustAnchors\": [{\n \"pemCertificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n \"intermediateCas\": [{\n \"pemCertificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n }],\n labels={\n \"foo\": \"bar\",\n })\ndefault_server_tls_policy = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-tls-policy\",\n description=\"my description\",\n location=\"global\",\n allow_open=False,\n mtls_policy={\n \"clientValidationMode\": \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n \"clientValidationTrustConfig\": default_trust_config.name.apply(lambda name: f\"projects/{project.number}/locations/global/trustConfigs/{name}\"),\n })\ndefault_ssl_certificate = gcp.compute.SSLCertificate(\"default\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": default_backend_service.id,\n \"pathRules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-mtls-proxy\",\n url_map=default_url_map.id,\n ssl_certificates=[default_ssl_certificate.id],\n server_tls_policy=default_server_tls_policy.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var defaultTrustConfig = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Name = \"my-trust-config\",\n Description = \"sample description for the trust config\",\n Location = \"global\",\n TrustStores = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreArgs\n {\n TrustAnchors = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreTrustAnchorArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n IntermediateCas = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreIntermediateCaArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var defaultServerTlsPolicy = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-tls-policy\",\n Description = \"my description\",\n Location = \"global\",\n AllowOpen = false,\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationMode = \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n ClientValidationTrustConfig = Output.Tuple(project, defaultTrustConfig.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/locations/global/trustConfigs/{name}\";\n }),\n },\n });\n\n var defaultSSLCertificate = new Gcp.Compute.SSLCertificate(\"default\", new()\n {\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-mtls-proxy\",\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n defaultSSLCertificate.Id,\n },\n ServerTlsPolicy = defaultServerTlsPolicy.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTrustConfig, err := certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tName: pulumi.String(\"my-trust-config\"),\n\t\t\tDescription: pulumi.String(\"sample description for the trust config\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTrustStores: certificatemanager.TrustConfigTrustStoreArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreArgs{\n\t\t\t\t\tTrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{\n\t\t\t\t\t\t\tPemCertificate: invokeFile.Result,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{\n\t\t\t\t\t\t\tPemCertificate: invokeFile1.Result,\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\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\tdefaultServerTlsPolicy, err := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-tls-policy\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationMode: pulumi.String(\"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\"),\n\t\t\t\tClientValidationTrustConfig: defaultTrustConfig.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"projects/%v/locations/global/trustConfigs/%v\", project.Number, name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile2, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile3, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSSLCertificate, err := compute.NewSSLCertificate(ctx, \"default\", \u0026compute.SSLCertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: invokeFile2.Result,\n\t\t\tCertificate: invokeFile3.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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 = compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-mtls-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultSSLCertificate.ID(),\n\t\t\t},\n\t\t\tServerTlsPolicy: defaultServerTlsPolicy.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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigTrustStoreArgs;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\nimport com.pulumi.gcp.compute.SSLCertificate;\nimport com.pulumi.gcp.compute.SSLCertificateArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\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 defaultTrustConfig = new TrustConfig(\"defaultTrustConfig\", TrustConfigArgs.builder()\n .name(\"my-trust-config\")\n .description(\"sample description for the trust config\")\n .location(\"global\")\n .trustStores(TrustConfigTrustStoreArgs.builder()\n .trustAnchors(TrustConfigTrustStoreTrustAnchorArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .intermediateCas(TrustConfigTrustStoreIntermediateCaArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var defaultServerTlsPolicy = new ServerTlsPolicy(\"defaultServerTlsPolicy\", ServerTlsPolicyArgs.builder()\n .name(\"my-tls-policy\")\n .description(\"my description\")\n .location(\"global\")\n .allowOpen(\"false\")\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationMode(\"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\")\n .clientValidationTrustConfig(defaultTrustConfig.name().applyValue(name -\u003e String.format(\"projects/%s/locations/global/trustConfigs/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build())\n .build());\n\n var defaultSSLCertificate = new SSLCertificate(\"defaultSSLCertificate\", SSLCertificateArgs.builder()\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpsProxy(\"default\", TargetHttpsProxyArgs.builder()\n .name(\"test-mtls-proxy\")\n .urlMap(defaultURLMap.id())\n .sslCertificates(defaultSSLCertificate.id())\n .serverTlsPolicy(defaultServerTlsPolicy.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpsProxy\n properties:\n name: test-mtls-proxy\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${defaultSSLCertificate.id}\n serverTlsPolicy: ${defaultServerTlsPolicy.id}\n defaultTrustConfig:\n type: gcp:certificatemanager:TrustConfig\n name: default\n properties:\n name: my-trust-config\n description: sample description for the trust config\n location: global\n trustStores:\n - trustAnchors:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n intermediateCas:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n labels:\n foo: bar\n defaultServerTlsPolicy:\n type: gcp:networksecurity:ServerTlsPolicy\n name: default\n properties:\n name: my-tls-policy\n description: my description\n location: global\n allowOpen: 'false'\n mtlsPolicy:\n clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT\n clientValidationTrustConfig: projects/${project.number}/locations/global/trustConfigs/${defaultTrustConfig.name}\n defaultSSLCertificate:\n type: gcp:compute:SSLCertificate\n name: default\n properties:\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Https Proxy Certificate Manager Certificate\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultCertificate = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"my-certificate\",\n scope: \"ALL_REGIONS\",\n selfManaged: {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n pemPrivateKey: std.file({\n input: \"test-fixtures/private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"target-http-proxy\",\n urlMap: defaultURLMap.id,\n certificateManagerCertificates: [pulumi.interpolate`//certificatemanager.googleapis.com/${defaultCertificate.id}`],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_certificate = gcp.certificatemanager.Certificate(\"default\",\n name=\"my-certificate\",\n scope=\"ALL_REGIONS\",\n self_managed={\n \"pemCertificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n \"pemPrivateKey\": std.file(input=\"test-fixtures/private-key.pem\").result,\n })\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": default_backend_service.id,\n \"pathRules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"target-http-proxy\",\n url_map=default_url_map.id,\n certificate_manager_certificates=[default_certificate.id.apply(lambda id: f\"//certificatemanager.googleapis.com/{id}\")])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultCertificate = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"my-certificate\",\n Scope = \"ALL_REGIONS\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n PemPrivateKey = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"target-http-proxy\",\n UrlMap = defaultURLMap.Id,\n CertificateManagerCertificates = new[]\n {\n defaultCertificate.Id.Apply(id =\u003e $\"//certificatemanager.googleapis.com/{id}\"),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCertificate, err := certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tScope: pulumi.String(\"ALL_REGIONS\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: invokeFile.Result,\n\t\t\t\tPemPrivateKey: invokeFile1.Result,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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 = compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"target-http-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tCertificateManagerCertificates: pulumi.StringArray{\n\t\t\t\tdefaultCertificate.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"//certificatemanager.googleapis.com/%v\", id), nil\n\t\t\t\t}).(pulumi.StringOutput),\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 com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\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 .name(\"my-certificate\")\n .scope(\"ALL_REGIONS\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .pemPrivateKey(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/private-key.pem\")\n .build()).result())\n .build())\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpsProxy(\"default\", TargetHttpsProxyArgs.builder()\n .name(\"target-http-proxy\")\n .urlMap(defaultURLMap.id())\n .certificateManagerCertificates(defaultCertificate.id().applyValue(id -\u003e String.format(\"//certificatemanager.googleapis.com/%s\", id)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpsProxy\n properties:\n name: target-http-proxy\n urlMap: ${defaultURLMap.id}\n certificateManagerCertificates: # [google_certificate_manager_certificate.default.id] is also acceptable\n - //certificatemanager.googleapis.com/${defaultCertificate.id}\n defaultCertificate:\n type: gcp:certificatemanager:Certificate\n name: default\n properties:\n name: my-certificate\n scope: ALL_REGIONS\n selfManaged:\n pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n pemPrivateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/private-key.pem\n Return: result\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: INTERNAL_MANAGED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTargetHttpsProxy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/targetHttpsProxies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TargetHttpsProxy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/targetHttpsProxy:TargetHttpsProxy default projects/{{project}}/global/targetHttpsProxies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetHttpsProxy:TargetHttpsProxy default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetHttpsProxy:TargetHttpsProxy default {{name}}\n```\n\n", + "description": "Represents a TargetHttpsProxy resource, which is used by one or more\nglobal forwarding rule to route incoming HTTPS requests to a URL map.\n\n\nTo get more information about TargetHttpsProxy, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/targetHttpsProxies)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/load-balancing/http/target-proxies)\n\n## Example Usage\n\n### Target Https Proxy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultSSLCertificate = new gcp.compute.SSLCertificate(\"default\", {\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-proxy\",\n urlMap: defaultURLMap.id,\n sslCertificates: [defaultSSLCertificate.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_ssl_certificate = gcp.compute.SSLCertificate(\"default\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-proxy\",\n url_map=default_url_map.id,\n ssl_certificates=[default_ssl_certificate.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultSSLCertificate = new Gcp.Compute.SSLCertificate(\"default\", new()\n {\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-proxy\",\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n defaultSSLCertificate.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSSLCertificate, err := compute.NewSSLCertificate(ctx, \"default\", \u0026compute.SSLCertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile.Result),\n\t\t\tCertificate: pulumi.String(invokeFile1.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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 = compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultSSLCertificate.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.compute.SSLCertificate;\nimport com.pulumi.gcp.compute.SSLCertificateArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\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 defaultSSLCertificate = new SSLCertificate(\"defaultSSLCertificate\", SSLCertificateArgs.builder()\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpsProxy(\"default\", TargetHttpsProxyArgs.builder()\n .name(\"test-proxy\")\n .urlMap(defaultURLMap.id())\n .sslCertificates(defaultSSLCertificate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpsProxy\n properties:\n name: test-proxy\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${defaultSSLCertificate.id}\n defaultSSLCertificate:\n type: gcp:compute:SSLCertificate\n name: default\n properties:\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Https Proxy Http Keep Alive Timeout\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultSSLCertificate = new gcp.compute.SSLCertificate(\"default\", {\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-http-keep-alive-timeout-proxy\",\n httpKeepAliveTimeoutSec: 610,\n urlMap: defaultURLMap.id,\n sslCertificates: [defaultSSLCertificate.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_ssl_certificate = gcp.compute.SSLCertificate(\"default\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-http-keep-alive-timeout-proxy\",\n http_keep_alive_timeout_sec=610,\n url_map=default_url_map.id,\n ssl_certificates=[default_ssl_certificate.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultSSLCertificate = new Gcp.Compute.SSLCertificate(\"default\", new()\n {\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-http-keep-alive-timeout-proxy\",\n HttpKeepAliveTimeoutSec = 610,\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n defaultSSLCertificate.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSSLCertificate, err := compute.NewSSLCertificate(ctx, \"default\", \u0026compute.SSLCertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile.Result),\n\t\t\tCertificate: pulumi.String(invokeFile1.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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 = compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-http-keep-alive-timeout-proxy\"),\n\t\t\tHttpKeepAliveTimeoutSec: pulumi.Int(610),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultSSLCertificate.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.compute.SSLCertificate;\nimport com.pulumi.gcp.compute.SSLCertificateArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\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 defaultSSLCertificate = new SSLCertificate(\"defaultSSLCertificate\", SSLCertificateArgs.builder()\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpsProxy(\"default\", TargetHttpsProxyArgs.builder()\n .name(\"test-http-keep-alive-timeout-proxy\")\n .httpKeepAliveTimeoutSec(610)\n .urlMap(defaultURLMap.id())\n .sslCertificates(defaultSSLCertificate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpsProxy\n properties:\n name: test-http-keep-alive-timeout-proxy\n httpKeepAliveTimeoutSec: 610\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${defaultSSLCertificate.id}\n defaultSSLCertificate:\n type: gcp:compute:SSLCertificate\n name: default\n properties:\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Https Proxy Mtls\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst defaultTrustConfig = new gcp.certificatemanager.TrustConfig(\"default\", {\n name: \"my-trust-config\",\n description: \"sample description for the trust config\",\n location: \"global\",\n trustStores: [{\n trustAnchors: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n intermediateCas: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n }],\n labels: {\n foo: \"bar\",\n },\n});\nconst defaultServerTlsPolicy = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-tls-policy\",\n description: \"my description\",\n location: \"global\",\n allowOpen: false,\n mtlsPolicy: {\n clientValidationMode: \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n clientValidationTrustConfig: pulumi.all([project, defaultTrustConfig.name]).apply(([project, name]) =\u003e `projects/${project.number}/locations/global/trustConfigs/${name}`),\n },\n});\nconst defaultSSLCertificate = new gcp.compute.SSLCertificate(\"default\", {\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-mtls-proxy\",\n urlMap: defaultURLMap.id,\n sslCertificates: [defaultSSLCertificate.id],\n serverTlsPolicy: defaultServerTlsPolicy.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\ndefault_trust_config = gcp.certificatemanager.TrustConfig(\"default\",\n name=\"my-trust-config\",\n description=\"sample description for the trust config\",\n location=\"global\",\n trust_stores=[{\n \"trust_anchors\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n \"intermediate_cas\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n }],\n labels={\n \"foo\": \"bar\",\n })\ndefault_server_tls_policy = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-tls-policy\",\n description=\"my description\",\n location=\"global\",\n allow_open=False,\n mtls_policy={\n \"client_validation_mode\": \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n \"client_validation_trust_config\": default_trust_config.name.apply(lambda name: f\"projects/{project.number}/locations/global/trustConfigs/{name}\"),\n })\ndefault_ssl_certificate = gcp.compute.SSLCertificate(\"default\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-mtls-proxy\",\n url_map=default_url_map.id,\n ssl_certificates=[default_ssl_certificate.id],\n server_tls_policy=default_server_tls_policy.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var defaultTrustConfig = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Name = \"my-trust-config\",\n Description = \"sample description for the trust config\",\n Location = \"global\",\n TrustStores = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreArgs\n {\n TrustAnchors = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreTrustAnchorArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n IntermediateCas = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreIntermediateCaArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var defaultServerTlsPolicy = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-tls-policy\",\n Description = \"my description\",\n Location = \"global\",\n AllowOpen = false,\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationMode = \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n ClientValidationTrustConfig = Output.Tuple(project, defaultTrustConfig.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/locations/global/trustConfigs/{name}\";\n }),\n },\n });\n\n var defaultSSLCertificate = new Gcp.Compute.SSLCertificate(\"default\", new()\n {\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-mtls-proxy\",\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n defaultSSLCertificate.Id,\n },\n ServerTlsPolicy = defaultServerTlsPolicy.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTrustConfig, err := certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tName: pulumi.String(\"my-trust-config\"),\n\t\t\tDescription: pulumi.String(\"sample description for the trust config\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTrustStores: certificatemanager.TrustConfigTrustStoreArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreArgs{\n\t\t\t\t\tTrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile1.Result),\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\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\tdefaultServerTlsPolicy, err := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-tls-policy\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationMode: pulumi.String(\"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\"),\n\t\t\t\tClientValidationTrustConfig: defaultTrustConfig.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"projects/%v/locations/global/trustConfigs/%v\", project.Number, name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile2, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile3, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSSLCertificate, err := compute.NewSSLCertificate(ctx, \"default\", \u0026compute.SSLCertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile2.Result),\n\t\t\tCertificate: pulumi.String(invokeFile3.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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 = compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-mtls-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultSSLCertificate.ID(),\n\t\t\t},\n\t\t\tServerTlsPolicy: defaultServerTlsPolicy.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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigTrustStoreArgs;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\nimport com.pulumi.gcp.compute.SSLCertificate;\nimport com.pulumi.gcp.compute.SSLCertificateArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\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 defaultTrustConfig = new TrustConfig(\"defaultTrustConfig\", TrustConfigArgs.builder()\n .name(\"my-trust-config\")\n .description(\"sample description for the trust config\")\n .location(\"global\")\n .trustStores(TrustConfigTrustStoreArgs.builder()\n .trustAnchors(TrustConfigTrustStoreTrustAnchorArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .intermediateCas(TrustConfigTrustStoreIntermediateCaArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var defaultServerTlsPolicy = new ServerTlsPolicy(\"defaultServerTlsPolicy\", ServerTlsPolicyArgs.builder()\n .name(\"my-tls-policy\")\n .description(\"my description\")\n .location(\"global\")\n .allowOpen(\"false\")\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationMode(\"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\")\n .clientValidationTrustConfig(defaultTrustConfig.name().applyValue(name -\u003e String.format(\"projects/%s/locations/global/trustConfigs/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build())\n .build());\n\n var defaultSSLCertificate = new SSLCertificate(\"defaultSSLCertificate\", SSLCertificateArgs.builder()\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpsProxy(\"default\", TargetHttpsProxyArgs.builder()\n .name(\"test-mtls-proxy\")\n .urlMap(defaultURLMap.id())\n .sslCertificates(defaultSSLCertificate.id())\n .serverTlsPolicy(defaultServerTlsPolicy.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpsProxy\n properties:\n name: test-mtls-proxy\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${defaultSSLCertificate.id}\n serverTlsPolicy: ${defaultServerTlsPolicy.id}\n defaultTrustConfig:\n type: gcp:certificatemanager:TrustConfig\n name: default\n properties:\n name: my-trust-config\n description: sample description for the trust config\n location: global\n trustStores:\n - trustAnchors:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n intermediateCas:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n labels:\n foo: bar\n defaultServerTlsPolicy:\n type: gcp:networksecurity:ServerTlsPolicy\n name: default\n properties:\n name: my-tls-policy\n description: my description\n location: global\n allowOpen: 'false'\n mtlsPolicy:\n clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT\n clientValidationTrustConfig: projects/${project.number}/locations/global/trustConfigs/${defaultTrustConfig.name}\n defaultSSLCertificate:\n type: gcp:compute:SSLCertificate\n name: default\n properties:\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Https Proxy Certificate Manager Certificate\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultCertificate = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"my-certificate\",\n scope: \"ALL_REGIONS\",\n selfManaged: {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n pemPrivateKey: std.file({\n input: \"test-fixtures/private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"target-http-proxy\",\n urlMap: defaultURLMap.id,\n certificateManagerCertificates: [pulumi.interpolate`//certificatemanager.googleapis.com/${defaultCertificate.id}`],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_certificate = gcp.certificatemanager.Certificate(\"default\",\n name=\"my-certificate\",\n scope=\"ALL_REGIONS\",\n self_managed={\n \"pem_certificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n \"pem_private_key\": std.file(input=\"test-fixtures/private-key.pem\").result,\n })\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"target-http-proxy\",\n url_map=default_url_map.id,\n certificate_manager_certificates=[default_certificate.id.apply(lambda id: f\"//certificatemanager.googleapis.com/{id}\")])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultCertificate = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"my-certificate\",\n Scope = \"ALL_REGIONS\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n PemPrivateKey = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"target-http-proxy\",\n UrlMap = defaultURLMap.Id,\n CertificateManagerCertificates = new[]\n {\n defaultCertificate.Id.Apply(id =\u003e $\"//certificatemanager.googleapis.com/{id}\"),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCertificate, err := certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tScope: pulumi.String(\"ALL_REGIONS\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\tPemPrivateKey: pulumi.String(invokeFile1.Result),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\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 = compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"target-http-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tCertificateManagerCertificates: pulumi.StringArray{\n\t\t\t\tdefaultCertificate.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"//certificatemanager.googleapis.com/%v\", id), nil\n\t\t\t\t}).(pulumi.StringOutput),\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 com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\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 .name(\"my-certificate\")\n .scope(\"ALL_REGIONS\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .pemPrivateKey(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/private-key.pem\")\n .build()).result())\n .build())\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpsProxy(\"default\", TargetHttpsProxyArgs.builder()\n .name(\"target-http-proxy\")\n .urlMap(defaultURLMap.id())\n .certificateManagerCertificates(defaultCertificate.id().applyValue(id -\u003e String.format(\"//certificatemanager.googleapis.com/%s\", id)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpsProxy\n properties:\n name: target-http-proxy\n urlMap: ${defaultURLMap.id}\n certificateManagerCertificates: # [google_certificate_manager_certificate.default.id] is also acceptable\n - //certificatemanager.googleapis.com/${defaultCertificate.id}\n defaultCertificate:\n type: gcp:certificatemanager:Certificate\n name: default\n properties:\n name: my-certificate\n scope: ALL_REGIONS\n selfManaged:\n pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n pemPrivateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/private-key.pem\n Return: result\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: INTERNAL_MANAGED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTargetHttpsProxy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/targetHttpsProxies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TargetHttpsProxy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/targetHttpsProxy:TargetHttpsProxy default projects/{{project}}/global/targetHttpsProxies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetHttpsProxy:TargetHttpsProxy default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetHttpsProxy:TargetHttpsProxy default {{name}}\n```\n\n", "properties": { "certificateManagerCertificates": { "type": "array", @@ -165061,7 +165061,7 @@ } }, "gcp:compute/targetInstance:TargetInstance": { - "description": "Represents a TargetInstance resource which defines an endpoint instance\nthat terminates traffic of certain protocols. In particular, they are used\nin Protocol Forwarding, where forwarding rules can send packets to a\nnon-NAT'ed target instance. Each target instance contains a single\nvirtual machine instance that receives and handles traffic from the\ncorresponding forwarding rules.\n\n\nTo get more information about TargetInstance, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/targetInstances)\n* How-to Guides\n * [Using Protocol Forwarding](https://cloud.google.com/compute/docs/protocol-forwarding)\n\n## Example Usage\n\n### Target Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vmimage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst target_vm = new gcp.compute.Instance(\"target-vm\", {\n name: \"target-vm\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: vmimage.then(vmimage =\u003e vmimage.selfLink),\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n});\nconst _default = new gcp.compute.TargetInstance(\"default\", {\n name: \"target\",\n instance: target_vm.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvmimage = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ntarget_vm = gcp.compute.Instance(\"target-vm\",\n name=\"target-vm\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initializeParams\": {\n \"image\": vmimage.self_link,\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }])\ndefault = gcp.compute.TargetInstance(\"default\",\n name=\"target\",\n instance=target_vm.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 vmimage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var target_vm = new Gcp.Compute.Instance(\"target-vm\", new()\n {\n Name = \"target-vm\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = vmimage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetInstance(\"default\", new()\n {\n Name = \"target\",\n Instance = target_vm.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tvmimage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"target-vm\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"target-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(vmimage.SelfLink),\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},\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.NewTargetInstance(ctx, \"default\", \u0026compute.TargetInstanceArgs{\n\t\t\tName: pulumi.String(\"target\"),\n\t\t\tInstance: target_vm.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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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.compute.TargetInstance;\nimport com.pulumi.gcp.compute.TargetInstanceArgs;\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 vmimage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var target_vm = new Instance(\"target-vm\", InstanceArgs.builder()\n .name(\"target-vm\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(vmimage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .build());\n\n var default_ = new TargetInstance(\"default\", TargetInstanceArgs.builder()\n .name(\"target\")\n .instance(target_vm.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetInstance\n properties:\n name: target\n instance: ${[\"target-vm\"].id}\n target-vm:\n type: gcp:compute:Instance\n properties:\n name: target-vm\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: ${vmimage.selfLink}\n networkInterfaces:\n - network: default\nvariables:\n vmimage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Instance Custom Network\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst target-vm = gcp.compute.getNetwork({\n name: \"default\",\n});\nconst vmimage = gcp.compute.getImage({\n family: \"debian-12\",\n project: \"debian-cloud\",\n});\nconst target_vmInstance = new gcp.compute.Instance(\"target-vm\", {\n name: \"custom-network-target-vm\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: vmimage.then(vmimage =\u003e vmimage.selfLink),\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n});\nconst customNetwork = new gcp.compute.TargetInstance(\"custom_network\", {\n name: \"custom-network\",\n instance: target_vmInstance.id,\n network: target_vm.then(target_vm =\u003e target_vm.selfLink),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntarget_vm = gcp.compute.get_network(name=\"default\")\nvmimage = gcp.compute.get_image(family=\"debian-12\",\n project=\"debian-cloud\")\ntarget_vm_instance = gcp.compute.Instance(\"target-vm\",\n name=\"custom-network-target-vm\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initializeParams\": {\n \"image\": vmimage.self_link,\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }])\ncustom_network = gcp.compute.TargetInstance(\"custom_network\",\n name=\"custom-network\",\n instance=target_vm_instance.id,\n network=target_vm.self_link)\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 target_vm = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"default\",\n });\n\n var vmimage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-12\",\n Project = \"debian-cloud\",\n });\n\n var target_vmInstance = new Gcp.Compute.Instance(\"target-vm\", new()\n {\n Name = \"custom-network-target-vm\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = vmimage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n });\n\n var customNetwork = new Gcp.Compute.TargetInstance(\"custom_network\", new()\n {\n Name = \"custom-network\",\n Instance = target_vmInstance.Id,\n Network = target_vm.Apply(target_vm =\u003e target_vm.Apply(getNetworkResult =\u003e getNetworkResult.SelfLink)),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttarget_vm, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"default\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvmimage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-12\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"target-vm\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"custom-network-target-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(vmimage.SelfLink),\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},\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.NewTargetInstance(ctx, \"custom_network\", \u0026compute.TargetInstanceArgs{\n\t\t\tName: pulumi.String(\"custom-network\"),\n\t\t\tInstance: target_vmInstance.ID(),\n\t\t\tNetwork: pulumi.String(target_vm.SelfLink),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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.compute.TargetInstance;\nimport com.pulumi.gcp.compute.TargetInstanceArgs;\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 target-vm = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"default\")\n .build());\n\n final var vmimage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-12\")\n .project(\"debian-cloud\")\n .build());\n\n var target_vmInstance = new Instance(\"target-vmInstance\", InstanceArgs.builder()\n .name(\"custom-network-target-vm\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(vmimage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .build());\n\n var customNetwork = new TargetInstance(\"customNetwork\", TargetInstanceArgs.builder()\n .name(\"custom-network\")\n .instance(target_vmInstance.id())\n .network(target_vm.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customNetwork:\n type: gcp:compute:TargetInstance\n name: custom_network\n properties:\n name: custom-network\n instance: ${[\"target-vmInstance\"].id}\n network: ${[\"target-vm\"].selfLink}\n target-vmInstance:\n type: gcp:compute:Instance\n name: target-vm\n properties:\n name: custom-network-target-vm\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: ${vmimage.selfLink}\n networkInterfaces:\n - network: default\nvariables:\n target-vm:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: default\n vmimage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-12\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Instance With Security Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"custom-default-network\",\n autoCreateSubnetworks: false,\n routingMode: \"REGIONAL\",\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"custom-default-subnet\",\n ipCidrRange: \"10.1.2.0/24\",\n network: _default.id,\n privateIpv6GoogleAccess: \"DISABLE_GOOGLE_ACCESS\",\n purpose: \"PRIVATE\",\n region: \"southamerica-west1\",\n stackType: \"IPV4_ONLY\",\n});\nconst vmimage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst target_vm = new gcp.compute.Instance(\"target-vm\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: _default.selfLink,\n subnetwork: defaultSubnetwork.selfLink,\n }],\n name: \"target-vm\",\n machineType: \"e2-medium\",\n zone: \"southamerica-west1-a\",\n bootDisk: {\n initializeParams: {\n image: vmimage.then(vmimage =\u003e vmimage.selfLink),\n },\n },\n});\nconst policyddosprotection = new gcp.compute.RegionSecurityPolicy(\"policyddosprotection\", {\n region: \"southamerica-west1\",\n name: \"tf-test-policyddos_85794\",\n description: \"ddos protection security policy to set target instance\",\n type: \"CLOUD_ARMOR_NETWORK\",\n ddosProtectionConfig: {\n ddosProtection: \"ADVANCED_PREVIEW\",\n },\n});\nconst edgeSecService = new gcp.compute.NetworkEdgeSecurityService(\"edge_sec_service\", {\n region: \"southamerica-west1\",\n name: \"tf-test-edgesec_21197\",\n securityPolicy: policyddosprotection.selfLink,\n});\nconst regionsecuritypolicy = new gcp.compute.RegionSecurityPolicy(\"regionsecuritypolicy\", {\n name: \"region-secpolicy\",\n region: \"southamerica-west1\",\n description: \"basic security policy for target instance\",\n type: \"CLOUD_ARMOR_NETWORK\",\n}, {\n dependsOn: [edgeSecService],\n});\nconst defaultTargetInstance = new gcp.compute.TargetInstance(\"default\", {\n name: \"target-instance\",\n zone: \"southamerica-west1-a\",\n instance: target_vm.id,\n securityPolicy: regionsecuritypolicy.selfLink,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"custom-default-network\",\n auto_create_subnetworks=False,\n routing_mode=\"REGIONAL\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"custom-default-subnet\",\n ip_cidr_range=\"10.1.2.0/24\",\n network=default.id,\n private_ipv6_google_access=\"DISABLE_GOOGLE_ACCESS\",\n purpose=\"PRIVATE\",\n region=\"southamerica-west1\",\n stack_type=\"IPV4_ONLY\")\nvmimage = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ntarget_vm = gcp.compute.Instance(\"target-vm\",\n network_interfaces=[{\n \"accessConfigs\": [{}],\n \"network\": default.self_link,\n \"subnetwork\": default_subnetwork.self_link,\n }],\n name=\"target-vm\",\n machine_type=\"e2-medium\",\n zone=\"southamerica-west1-a\",\n boot_disk={\n \"initializeParams\": {\n \"image\": vmimage.self_link,\n },\n })\npolicyddosprotection = gcp.compute.RegionSecurityPolicy(\"policyddosprotection\",\n region=\"southamerica-west1\",\n name=\"tf-test-policyddos_85794\",\n description=\"ddos protection security policy to set target instance\",\n type=\"CLOUD_ARMOR_NETWORK\",\n ddos_protection_config={\n \"ddosProtection\": \"ADVANCED_PREVIEW\",\n })\nedge_sec_service = gcp.compute.NetworkEdgeSecurityService(\"edge_sec_service\",\n region=\"southamerica-west1\",\n name=\"tf-test-edgesec_21197\",\n security_policy=policyddosprotection.self_link)\nregionsecuritypolicy = gcp.compute.RegionSecurityPolicy(\"regionsecuritypolicy\",\n name=\"region-secpolicy\",\n region=\"southamerica-west1\",\n description=\"basic security policy for target instance\",\n type=\"CLOUD_ARMOR_NETWORK\",\n opts = pulumi.ResourceOptions(depends_on=[edge_sec_service]))\ndefault_target_instance = gcp.compute.TargetInstance(\"default\",\n name=\"target-instance\",\n zone=\"southamerica-west1-a\",\n instance=target_vm.id,\n security_policy=regionsecuritypolicy.self_link)\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.Network(\"default\", new()\n {\n Name = \"custom-default-network\",\n AutoCreateSubnetworks = false,\n RoutingMode = \"REGIONAL\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"custom-default-subnet\",\n IpCidrRange = \"10.1.2.0/24\",\n Network = @default.Id,\n PrivateIpv6GoogleAccess = \"DISABLE_GOOGLE_ACCESS\",\n Purpose = \"PRIVATE\",\n Region = \"southamerica-west1\",\n StackType = \"IPV4_ONLY\",\n });\n\n var vmimage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var target_vm = new Gcp.Compute.Instance(\"target-vm\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = @default.SelfLink,\n Subnetwork = defaultSubnetwork.SelfLink,\n },\n },\n Name = \"target-vm\",\n MachineType = \"e2-medium\",\n Zone = \"southamerica-west1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = vmimage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var policyddosprotection = new Gcp.Compute.RegionSecurityPolicy(\"policyddosprotection\", new()\n {\n Region = \"southamerica-west1\",\n Name = \"tf-test-policyddos_85794\",\n Description = \"ddos protection security policy to set target instance\",\n Type = \"CLOUD_ARMOR_NETWORK\",\n DdosProtectionConfig = new Gcp.Compute.Inputs.RegionSecurityPolicyDdosProtectionConfigArgs\n {\n DdosProtection = \"ADVANCED_PREVIEW\",\n },\n });\n\n var edgeSecService = new Gcp.Compute.NetworkEdgeSecurityService(\"edge_sec_service\", new()\n {\n Region = \"southamerica-west1\",\n Name = \"tf-test-edgesec_21197\",\n SecurityPolicy = policyddosprotection.SelfLink,\n });\n\n var regionsecuritypolicy = new Gcp.Compute.RegionSecurityPolicy(\"regionsecuritypolicy\", new()\n {\n Name = \"region-secpolicy\",\n Region = \"southamerica-west1\",\n Description = \"basic security policy for target instance\",\n Type = \"CLOUD_ARMOR_NETWORK\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n edgeSecService,\n },\n });\n\n var defaultTargetInstance = new Gcp.Compute.TargetInstance(\"default\", new()\n {\n Name = \"target-instance\",\n Zone = \"southamerica-west1-a\",\n Instance = target_vm.Id,\n SecurityPolicy = regionsecuritypolicy.SelfLink,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"custom-default-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t\tRoutingMode: pulumi.String(\"REGIONAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"custom-default-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.2.0/24\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tPrivateIpv6GoogleAccess: pulumi.String(\"DISABLE_GOOGLE_ACCESS\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE\"),\n\t\t\tRegion: pulumi.String(\"southamerica-west1\"),\n\t\t\tStackType: pulumi.String(\"IPV4_ONLY\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvmimage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"target-vm\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tNetwork: _default.SelfLink,\n\t\t\t\t\tSubnetwork: defaultSubnetwork.SelfLink,\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"target-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"southamerica-west1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(vmimage.SelfLink),\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\tpolicyddosprotection, err := compute.NewRegionSecurityPolicy(ctx, \"policyddosprotection\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"southamerica-west1\"),\n\t\t\tName: pulumi.String(\"tf-test-policyddos_85794\"),\n\t\t\tDescription: pulumi.String(\"ddos protection security policy to set target instance\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tedgeSecService, err := compute.NewNetworkEdgeSecurityService(ctx, \"edge_sec_service\", \u0026compute.NetworkEdgeSecurityServiceArgs{\n\t\t\tRegion: pulumi.String(\"southamerica-west1\"),\n\t\t\tName: pulumi.String(\"tf-test-edgesec_21197\"),\n\t\t\tSecurityPolicy: policyddosprotection.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tregionsecuritypolicy, err := compute.NewRegionSecurityPolicy(ctx, \"regionsecuritypolicy\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"region-secpolicy\"),\n\t\t\tRegion: pulumi.String(\"southamerica-west1\"),\n\t\t\tDescription: pulumi.String(\"basic security policy for target instance\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR_NETWORK\"),\n\t\t}, 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.NewTargetInstance(ctx, \"default\", \u0026compute.TargetInstanceArgs{\n\t\t\tName: pulumi.String(\"target-instance\"),\n\t\t\tZone: pulumi.String(\"southamerica-west1-a\"),\n\t\t\tInstance: target_vm.ID(),\n\t\t\tSecurityPolicy: regionsecuritypolicy.SelfLink,\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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.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.TargetInstance;\nimport com.pulumi.gcp.compute.TargetInstanceArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"custom-default-network\")\n .autoCreateSubnetworks(false)\n .routingMode(\"REGIONAL\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"custom-default-subnet\")\n .ipCidrRange(\"10.1.2.0/24\")\n .network(default_.id())\n .privateIpv6GoogleAccess(\"DISABLE_GOOGLE_ACCESS\")\n .purpose(\"PRIVATE\")\n .region(\"southamerica-west1\")\n .stackType(\"IPV4_ONLY\")\n .build());\n\n final var vmimage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var target_vm = new Instance(\"target-vm\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(default_.selfLink())\n .subnetwork(defaultSubnetwork.selfLink())\n .build())\n .name(\"target-vm\")\n .machineType(\"e2-medium\")\n .zone(\"southamerica-west1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(vmimage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var policyddosprotection = new RegionSecurityPolicy(\"policyddosprotection\", RegionSecurityPolicyArgs.builder()\n .region(\"southamerica-west1\")\n .name(\"tf-test-policyddos_85794\")\n .description(\"ddos protection security policy to set target instance\")\n .type(\"CLOUD_ARMOR_NETWORK\")\n .ddosProtectionConfig(RegionSecurityPolicyDdosProtectionConfigArgs.builder()\n .ddosProtection(\"ADVANCED_PREVIEW\")\n .build())\n .build());\n\n var edgeSecService = new NetworkEdgeSecurityService(\"edgeSecService\", NetworkEdgeSecurityServiceArgs.builder()\n .region(\"southamerica-west1\")\n .name(\"tf-test-edgesec_21197\")\n .securityPolicy(policyddosprotection.selfLink())\n .build());\n\n var regionsecuritypolicy = new RegionSecurityPolicy(\"regionsecuritypolicy\", RegionSecurityPolicyArgs.builder()\n .name(\"region-secpolicy\")\n .region(\"southamerica-west1\")\n .description(\"basic security policy for target instance\")\n .type(\"CLOUD_ARMOR_NETWORK\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(edgeSecService)\n .build());\n\n var defaultTargetInstance = new TargetInstance(\"defaultTargetInstance\", TargetInstanceArgs.builder()\n .name(\"target-instance\")\n .zone(\"southamerica-west1-a\")\n .instance(target_vm.id())\n .securityPolicy(regionsecuritypolicy.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: custom-default-network\n autoCreateSubnetworks: false\n routingMode: REGIONAL\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: custom-default-subnet\n ipCidrRange: 10.1.2.0/24\n network: ${default.id}\n privateIpv6GoogleAccess: DISABLE_GOOGLE_ACCESS\n purpose: PRIVATE\n region: southamerica-west1\n stackType: IPV4_ONLY\n target-vm:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: ${default.selfLink}\n subnetwork: ${defaultSubnetwork.selfLink}\n name: target-vm\n machineType: e2-medium\n zone: southamerica-west1-a\n bootDisk:\n initializeParams:\n image: ${vmimage.selfLink}\n policyddosprotection:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: southamerica-west1\n name: tf-test-policyddos_85794\n description: ddos protection security policy to set target instance\n type: CLOUD_ARMOR_NETWORK\n ddosProtectionConfig:\n ddosProtection: ADVANCED_PREVIEW\n edgeSecService:\n type: gcp:compute:NetworkEdgeSecurityService\n name: edge_sec_service\n properties:\n region: southamerica-west1\n name: tf-test-edgesec_21197\n securityPolicy: ${policyddosprotection.selfLink}\n regionsecuritypolicy:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n name: region-secpolicy\n region: southamerica-west1\n description: basic security policy for target instance\n type: CLOUD_ARMOR_NETWORK\n options:\n dependson:\n - ${edgeSecService}\n defaultTargetInstance:\n type: gcp:compute:TargetInstance\n name: default\n properties:\n name: target-instance\n zone: southamerica-west1-a\n instance: ${[\"target-vm\"].id}\n securityPolicy: ${regionsecuritypolicy.selfLink}\nvariables:\n vmimage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTargetInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/targetInstances/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TargetInstance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/targetInstance:TargetInstance default projects/{{project}}/zones/{{zone}}/targetInstances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetInstance:TargetInstance default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetInstance:TargetInstance default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetInstance:TargetInstance default {{name}}\n```\n\n", + "description": "Represents a TargetInstance resource which defines an endpoint instance\nthat terminates traffic of certain protocols. In particular, they are used\nin Protocol Forwarding, where forwarding rules can send packets to a\nnon-NAT'ed target instance. Each target instance contains a single\nvirtual machine instance that receives and handles traffic from the\ncorresponding forwarding rules.\n\n\nTo get more information about TargetInstance, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/targetInstances)\n* How-to Guides\n * [Using Protocol Forwarding](https://cloud.google.com/compute/docs/protocol-forwarding)\n\n## Example Usage\n\n### Target Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vmimage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst target_vm = new gcp.compute.Instance(\"target-vm\", {\n name: \"target-vm\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: vmimage.then(vmimage =\u003e vmimage.selfLink),\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n});\nconst _default = new gcp.compute.TargetInstance(\"default\", {\n name: \"target\",\n instance: target_vm.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvmimage = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ntarget_vm = gcp.compute.Instance(\"target-vm\",\n name=\"target-vm\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": vmimage.self_link,\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }])\ndefault = gcp.compute.TargetInstance(\"default\",\n name=\"target\",\n instance=target_vm.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 vmimage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var target_vm = new Gcp.Compute.Instance(\"target-vm\", new()\n {\n Name = \"target-vm\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = vmimage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetInstance(\"default\", new()\n {\n Name = \"target\",\n Instance = target_vm.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tvmimage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"target-vm\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"target-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(vmimage.SelfLink),\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},\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.NewTargetInstance(ctx, \"default\", \u0026compute.TargetInstanceArgs{\n\t\t\tName: pulumi.String(\"target\"),\n\t\t\tInstance: target_vm.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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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.compute.TargetInstance;\nimport com.pulumi.gcp.compute.TargetInstanceArgs;\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 vmimage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var target_vm = new Instance(\"target-vm\", InstanceArgs.builder()\n .name(\"target-vm\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(vmimage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .build());\n\n var default_ = new TargetInstance(\"default\", TargetInstanceArgs.builder()\n .name(\"target\")\n .instance(target_vm.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetInstance\n properties:\n name: target\n instance: ${[\"target-vm\"].id}\n target-vm:\n type: gcp:compute:Instance\n properties:\n name: target-vm\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: ${vmimage.selfLink}\n networkInterfaces:\n - network: default\nvariables:\n vmimage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Instance Custom Network\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst target-vm = gcp.compute.getNetwork({\n name: \"default\",\n});\nconst vmimage = gcp.compute.getImage({\n family: \"debian-12\",\n project: \"debian-cloud\",\n});\nconst target_vmInstance = new gcp.compute.Instance(\"target-vm\", {\n name: \"custom-network-target-vm\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: vmimage.then(vmimage =\u003e vmimage.selfLink),\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n});\nconst customNetwork = new gcp.compute.TargetInstance(\"custom_network\", {\n name: \"custom-network\",\n instance: target_vmInstance.id,\n network: target_vm.then(target_vm =\u003e target_vm.selfLink),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntarget_vm = gcp.compute.get_network(name=\"default\")\nvmimage = gcp.compute.get_image(family=\"debian-12\",\n project=\"debian-cloud\")\ntarget_vm_instance = gcp.compute.Instance(\"target-vm\",\n name=\"custom-network-target-vm\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": vmimage.self_link,\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }])\ncustom_network = gcp.compute.TargetInstance(\"custom_network\",\n name=\"custom-network\",\n instance=target_vm_instance.id,\n network=target_vm.self_link)\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 target_vm = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"default\",\n });\n\n var vmimage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-12\",\n Project = \"debian-cloud\",\n });\n\n var target_vmInstance = new Gcp.Compute.Instance(\"target-vm\", new()\n {\n Name = \"custom-network-target-vm\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = vmimage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n });\n\n var customNetwork = new Gcp.Compute.TargetInstance(\"custom_network\", new()\n {\n Name = \"custom-network\",\n Instance = target_vmInstance.Id,\n Network = target_vm.Apply(target_vm =\u003e target_vm.Apply(getNetworkResult =\u003e getNetworkResult.SelfLink)),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttarget_vm, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"default\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvmimage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-12\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"target-vm\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"custom-network-target-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(vmimage.SelfLink),\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},\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.NewTargetInstance(ctx, \"custom_network\", \u0026compute.TargetInstanceArgs{\n\t\t\tName: pulumi.String(\"custom-network\"),\n\t\t\tInstance: target_vmInstance.ID(),\n\t\t\tNetwork: pulumi.String(target_vm.SelfLink),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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.compute.TargetInstance;\nimport com.pulumi.gcp.compute.TargetInstanceArgs;\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 target-vm = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"default\")\n .build());\n\n final var vmimage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-12\")\n .project(\"debian-cloud\")\n .build());\n\n var target_vmInstance = new Instance(\"target-vmInstance\", InstanceArgs.builder()\n .name(\"custom-network-target-vm\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(vmimage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .build());\n\n var customNetwork = new TargetInstance(\"customNetwork\", TargetInstanceArgs.builder()\n .name(\"custom-network\")\n .instance(target_vmInstance.id())\n .network(target_vm.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customNetwork:\n type: gcp:compute:TargetInstance\n name: custom_network\n properties:\n name: custom-network\n instance: ${[\"target-vmInstance\"].id}\n network: ${[\"target-vm\"].selfLink}\n target-vmInstance:\n type: gcp:compute:Instance\n name: target-vm\n properties:\n name: custom-network-target-vm\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: ${vmimage.selfLink}\n networkInterfaces:\n - network: default\nvariables:\n target-vm:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: default\n vmimage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-12\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Instance With Security Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"custom-default-network\",\n autoCreateSubnetworks: false,\n routingMode: \"REGIONAL\",\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"custom-default-subnet\",\n ipCidrRange: \"10.1.2.0/24\",\n network: _default.id,\n privateIpv6GoogleAccess: \"DISABLE_GOOGLE_ACCESS\",\n purpose: \"PRIVATE\",\n region: \"southamerica-west1\",\n stackType: \"IPV4_ONLY\",\n});\nconst vmimage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst target_vm = new gcp.compute.Instance(\"target-vm\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: _default.selfLink,\n subnetwork: defaultSubnetwork.selfLink,\n }],\n name: \"target-vm\",\n machineType: \"e2-medium\",\n zone: \"southamerica-west1-a\",\n bootDisk: {\n initializeParams: {\n image: vmimage.then(vmimage =\u003e vmimage.selfLink),\n },\n },\n});\nconst policyddosprotection = new gcp.compute.RegionSecurityPolicy(\"policyddosprotection\", {\n region: \"southamerica-west1\",\n name: \"tf-test-policyddos_85794\",\n description: \"ddos protection security policy to set target instance\",\n type: \"CLOUD_ARMOR_NETWORK\",\n ddosProtectionConfig: {\n ddosProtection: \"ADVANCED_PREVIEW\",\n },\n});\nconst edgeSecService = new gcp.compute.NetworkEdgeSecurityService(\"edge_sec_service\", {\n region: \"southamerica-west1\",\n name: \"tf-test-edgesec_21197\",\n securityPolicy: policyddosprotection.selfLink,\n});\nconst regionsecuritypolicy = new gcp.compute.RegionSecurityPolicy(\"regionsecuritypolicy\", {\n name: \"region-secpolicy\",\n region: \"southamerica-west1\",\n description: \"basic security policy for target instance\",\n type: \"CLOUD_ARMOR_NETWORK\",\n}, {\n dependsOn: [edgeSecService],\n});\nconst defaultTargetInstance = new gcp.compute.TargetInstance(\"default\", {\n name: \"target-instance\",\n zone: \"southamerica-west1-a\",\n instance: target_vm.id,\n securityPolicy: regionsecuritypolicy.selfLink,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"custom-default-network\",\n auto_create_subnetworks=False,\n routing_mode=\"REGIONAL\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"custom-default-subnet\",\n ip_cidr_range=\"10.1.2.0/24\",\n network=default.id,\n private_ipv6_google_access=\"DISABLE_GOOGLE_ACCESS\",\n purpose=\"PRIVATE\",\n region=\"southamerica-west1\",\n stack_type=\"IPV4_ONLY\")\nvmimage = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ntarget_vm = gcp.compute.Instance(\"target-vm\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": default.self_link,\n \"subnetwork\": default_subnetwork.self_link,\n }],\n name=\"target-vm\",\n machine_type=\"e2-medium\",\n zone=\"southamerica-west1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": vmimage.self_link,\n },\n })\npolicyddosprotection = gcp.compute.RegionSecurityPolicy(\"policyddosprotection\",\n region=\"southamerica-west1\",\n name=\"tf-test-policyddos_85794\",\n description=\"ddos protection security policy to set target instance\",\n type=\"CLOUD_ARMOR_NETWORK\",\n ddos_protection_config={\n \"ddos_protection\": \"ADVANCED_PREVIEW\",\n })\nedge_sec_service = gcp.compute.NetworkEdgeSecurityService(\"edge_sec_service\",\n region=\"southamerica-west1\",\n name=\"tf-test-edgesec_21197\",\n security_policy=policyddosprotection.self_link)\nregionsecuritypolicy = gcp.compute.RegionSecurityPolicy(\"regionsecuritypolicy\",\n name=\"region-secpolicy\",\n region=\"southamerica-west1\",\n description=\"basic security policy for target instance\",\n type=\"CLOUD_ARMOR_NETWORK\",\n opts = pulumi.ResourceOptions(depends_on=[edge_sec_service]))\ndefault_target_instance = gcp.compute.TargetInstance(\"default\",\n name=\"target-instance\",\n zone=\"southamerica-west1-a\",\n instance=target_vm.id,\n security_policy=regionsecuritypolicy.self_link)\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.Network(\"default\", new()\n {\n Name = \"custom-default-network\",\n AutoCreateSubnetworks = false,\n RoutingMode = \"REGIONAL\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"custom-default-subnet\",\n IpCidrRange = \"10.1.2.0/24\",\n Network = @default.Id,\n PrivateIpv6GoogleAccess = \"DISABLE_GOOGLE_ACCESS\",\n Purpose = \"PRIVATE\",\n Region = \"southamerica-west1\",\n StackType = \"IPV4_ONLY\",\n });\n\n var vmimage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var target_vm = new Gcp.Compute.Instance(\"target-vm\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = @default.SelfLink,\n Subnetwork = defaultSubnetwork.SelfLink,\n },\n },\n Name = \"target-vm\",\n MachineType = \"e2-medium\",\n Zone = \"southamerica-west1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = vmimage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var policyddosprotection = new Gcp.Compute.RegionSecurityPolicy(\"policyddosprotection\", new()\n {\n Region = \"southamerica-west1\",\n Name = \"tf-test-policyddos_85794\",\n Description = \"ddos protection security policy to set target instance\",\n Type = \"CLOUD_ARMOR_NETWORK\",\n DdosProtectionConfig = new Gcp.Compute.Inputs.RegionSecurityPolicyDdosProtectionConfigArgs\n {\n DdosProtection = \"ADVANCED_PREVIEW\",\n },\n });\n\n var edgeSecService = new Gcp.Compute.NetworkEdgeSecurityService(\"edge_sec_service\", new()\n {\n Region = \"southamerica-west1\",\n Name = \"tf-test-edgesec_21197\",\n SecurityPolicy = policyddosprotection.SelfLink,\n });\n\n var regionsecuritypolicy = new Gcp.Compute.RegionSecurityPolicy(\"regionsecuritypolicy\", new()\n {\n Name = \"region-secpolicy\",\n Region = \"southamerica-west1\",\n Description = \"basic security policy for target instance\",\n Type = \"CLOUD_ARMOR_NETWORK\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n edgeSecService,\n },\n });\n\n var defaultTargetInstance = new Gcp.Compute.TargetInstance(\"default\", new()\n {\n Name = \"target-instance\",\n Zone = \"southamerica-west1-a\",\n Instance = target_vm.Id,\n SecurityPolicy = regionsecuritypolicy.SelfLink,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"custom-default-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t\tRoutingMode: pulumi.String(\"REGIONAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"custom-default-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.2.0/24\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tPrivateIpv6GoogleAccess: pulumi.String(\"DISABLE_GOOGLE_ACCESS\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE\"),\n\t\t\tRegion: pulumi.String(\"southamerica-west1\"),\n\t\t\tStackType: pulumi.String(\"IPV4_ONLY\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvmimage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"target-vm\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tNetwork: _default.SelfLink,\n\t\t\t\t\tSubnetwork: defaultSubnetwork.SelfLink,\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"target-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"southamerica-west1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(vmimage.SelfLink),\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\tpolicyddosprotection, err := compute.NewRegionSecurityPolicy(ctx, \"policyddosprotection\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"southamerica-west1\"),\n\t\t\tName: pulumi.String(\"tf-test-policyddos_85794\"),\n\t\t\tDescription: pulumi.String(\"ddos protection security policy to set target instance\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tedgeSecService, err := compute.NewNetworkEdgeSecurityService(ctx, \"edge_sec_service\", \u0026compute.NetworkEdgeSecurityServiceArgs{\n\t\t\tRegion: pulumi.String(\"southamerica-west1\"),\n\t\t\tName: pulumi.String(\"tf-test-edgesec_21197\"),\n\t\t\tSecurityPolicy: policyddosprotection.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tregionsecuritypolicy, err := compute.NewRegionSecurityPolicy(ctx, \"regionsecuritypolicy\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"region-secpolicy\"),\n\t\t\tRegion: pulumi.String(\"southamerica-west1\"),\n\t\t\tDescription: pulumi.String(\"basic security policy for target instance\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR_NETWORK\"),\n\t\t}, 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.NewTargetInstance(ctx, \"default\", \u0026compute.TargetInstanceArgs{\n\t\t\tName: pulumi.String(\"target-instance\"),\n\t\t\tZone: pulumi.String(\"southamerica-west1-a\"),\n\t\t\tInstance: target_vm.ID(),\n\t\t\tSecurityPolicy: regionsecuritypolicy.SelfLink,\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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.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.TargetInstance;\nimport com.pulumi.gcp.compute.TargetInstanceArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"custom-default-network\")\n .autoCreateSubnetworks(false)\n .routingMode(\"REGIONAL\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"custom-default-subnet\")\n .ipCidrRange(\"10.1.2.0/24\")\n .network(default_.id())\n .privateIpv6GoogleAccess(\"DISABLE_GOOGLE_ACCESS\")\n .purpose(\"PRIVATE\")\n .region(\"southamerica-west1\")\n .stackType(\"IPV4_ONLY\")\n .build());\n\n final var vmimage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var target_vm = new Instance(\"target-vm\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(default_.selfLink())\n .subnetwork(defaultSubnetwork.selfLink())\n .build())\n .name(\"target-vm\")\n .machineType(\"e2-medium\")\n .zone(\"southamerica-west1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(vmimage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var policyddosprotection = new RegionSecurityPolicy(\"policyddosprotection\", RegionSecurityPolicyArgs.builder()\n .region(\"southamerica-west1\")\n .name(\"tf-test-policyddos_85794\")\n .description(\"ddos protection security policy to set target instance\")\n .type(\"CLOUD_ARMOR_NETWORK\")\n .ddosProtectionConfig(RegionSecurityPolicyDdosProtectionConfigArgs.builder()\n .ddosProtection(\"ADVANCED_PREVIEW\")\n .build())\n .build());\n\n var edgeSecService = new NetworkEdgeSecurityService(\"edgeSecService\", NetworkEdgeSecurityServiceArgs.builder()\n .region(\"southamerica-west1\")\n .name(\"tf-test-edgesec_21197\")\n .securityPolicy(policyddosprotection.selfLink())\n .build());\n\n var regionsecuritypolicy = new RegionSecurityPolicy(\"regionsecuritypolicy\", RegionSecurityPolicyArgs.builder()\n .name(\"region-secpolicy\")\n .region(\"southamerica-west1\")\n .description(\"basic security policy for target instance\")\n .type(\"CLOUD_ARMOR_NETWORK\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(edgeSecService)\n .build());\n\n var defaultTargetInstance = new TargetInstance(\"defaultTargetInstance\", TargetInstanceArgs.builder()\n .name(\"target-instance\")\n .zone(\"southamerica-west1-a\")\n .instance(target_vm.id())\n .securityPolicy(regionsecuritypolicy.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: custom-default-network\n autoCreateSubnetworks: false\n routingMode: REGIONAL\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: custom-default-subnet\n ipCidrRange: 10.1.2.0/24\n network: ${default.id}\n privateIpv6GoogleAccess: DISABLE_GOOGLE_ACCESS\n purpose: PRIVATE\n region: southamerica-west1\n stackType: IPV4_ONLY\n target-vm:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: ${default.selfLink}\n subnetwork: ${defaultSubnetwork.selfLink}\n name: target-vm\n machineType: e2-medium\n zone: southamerica-west1-a\n bootDisk:\n initializeParams:\n image: ${vmimage.selfLink}\n policyddosprotection:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: southamerica-west1\n name: tf-test-policyddos_85794\n description: ddos protection security policy to set target instance\n type: CLOUD_ARMOR_NETWORK\n ddosProtectionConfig:\n ddosProtection: ADVANCED_PREVIEW\n edgeSecService:\n type: gcp:compute:NetworkEdgeSecurityService\n name: edge_sec_service\n properties:\n region: southamerica-west1\n name: tf-test-edgesec_21197\n securityPolicy: ${policyddosprotection.selfLink}\n regionsecuritypolicy:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n name: region-secpolicy\n region: southamerica-west1\n description: basic security policy for target instance\n type: CLOUD_ARMOR_NETWORK\n options:\n dependson:\n - ${edgeSecService}\n defaultTargetInstance:\n type: gcp:compute:TargetInstance\n name: default\n properties:\n name: target-instance\n zone: southamerica-west1-a\n instance: ${[\"target-vm\"].id}\n securityPolicy: ${regionsecuritypolicy.selfLink}\nvariables:\n vmimage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTargetInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/targetInstances/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TargetInstance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/targetInstance:TargetInstance default projects/{{project}}/zones/{{zone}}/targetInstances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetInstance:TargetInstance default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetInstance:TargetInstance default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetInstance:TargetInstance default {{name}}\n```\n\n", "properties": { "creationTimestamp": { "type": "string", @@ -165380,7 +165380,7 @@ } }, "gcp:compute/targetSSLProxy:TargetSSLProxy": { - "description": "Represents a TargetSslProxy resource, which is used by one or more\nglobal forwarding rule to route incoming SSL requests to a backend\nservice.\n\n\nTo get more information about TargetSslProxy, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/targetSslProxies)\n* How-to Guides\n * [Setting Up SSL proxy for Google Cloud Load Balancing](https://cloud.google.com/compute/docs/load-balancing/tcp-ssl/)\n\n## Example Usage\n\n### Target Ssl Proxy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultSSLCertificate = new gcp.compute.SSLCertificate(\"default\", {\n name: \"default-cert\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 443,\n },\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n protocol: \"SSL\",\n healthChecks: defaultHealthCheck.id,\n});\nconst _default = new gcp.compute.TargetSSLProxy(\"default\", {\n name: \"test-proxy\",\n backendService: defaultBackendService.id,\n sslCertificates: [defaultSSLCertificate.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_ssl_certificate = gcp.compute.SSLCertificate(\"default\",\n name=\"default-cert\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 443,\n })\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n protocol=\"SSL\",\n health_checks=default_health_check.id)\ndefault = gcp.compute.TargetSSLProxy(\"default\",\n name=\"test-proxy\",\n backend_service=default_backend_service.id,\n ssl_certificates=[default_ssl_certificate.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultSSLCertificate = new Gcp.Compute.SSLCertificate(\"default\", new()\n {\n Name = \"default-cert\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 443,\n },\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n Protocol = \"SSL\",\n HealthChecks = defaultHealthCheck.Id,\n });\n\n var @default = new Gcp.Compute.TargetSSLProxy(\"default\", new()\n {\n Name = \"test-proxy\",\n BackendService = defaultBackendService.Id,\n SslCertificates = new[]\n {\n defaultSSLCertificate.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSSLCertificate, err := compute.NewSSLCertificate(ctx, \"default\", \u0026compute.SSLCertificateArgs{\n\t\t\tName: pulumi.String(\"default-cert\"),\n\t\t\tPrivateKey: invokeFile.Result,\n\t\t\tCertificate: invokeFile1.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(443),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tProtocol: pulumi.String(\"SSL\"),\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewTargetSSLProxy(ctx, \"default\", \u0026compute.TargetSSLProxyArgs{\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tBackendService: defaultBackendService.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultSSLCertificate.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.compute.SSLCertificate;\nimport com.pulumi.gcp.compute.SSLCertificateArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.TargetSSLProxy;\nimport com.pulumi.gcp.compute.TargetSSLProxyArgs;\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 defaultSSLCertificate = new SSLCertificate(\"defaultSSLCertificate\", SSLCertificateArgs.builder()\n .name(\"default-cert\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"443\")\n .build())\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .protocol(\"SSL\")\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var default_ = new TargetSSLProxy(\"default\", TargetSSLProxyArgs.builder()\n .name(\"test-proxy\")\n .backendService(defaultBackendService.id())\n .sslCertificates(defaultSSLCertificate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetSSLProxy\n properties:\n name: test-proxy\n backendService: ${defaultBackendService.id}\n sslCertificates:\n - ${defaultSSLCertificate.id}\n defaultSSLCertificate:\n type: gcp:compute:SSLCertificate\n name: default\n properties:\n name: default-cert\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n protocol: SSL\n healthChecks: ${defaultHealthCheck.id}\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '443'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTargetSslProxy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/targetSslProxies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TargetSslProxy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/targetSSLProxy:TargetSSLProxy default projects/{{project}}/global/targetSslProxies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetSSLProxy:TargetSSLProxy default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetSSLProxy:TargetSSLProxy default {{name}}\n```\n\n", + "description": "Represents a TargetSslProxy resource, which is used by one or more\nglobal forwarding rule to route incoming SSL requests to a backend\nservice.\n\n\nTo get more information about TargetSslProxy, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/targetSslProxies)\n* How-to Guides\n * [Setting Up SSL proxy for Google Cloud Load Balancing](https://cloud.google.com/compute/docs/load-balancing/tcp-ssl/)\n\n## Example Usage\n\n### Target Ssl Proxy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultSSLCertificate = new gcp.compute.SSLCertificate(\"default\", {\n name: \"default-cert\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 443,\n },\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n protocol: \"SSL\",\n healthChecks: defaultHealthCheck.id,\n});\nconst _default = new gcp.compute.TargetSSLProxy(\"default\", {\n name: \"test-proxy\",\n backendService: defaultBackendService.id,\n sslCertificates: [defaultSSLCertificate.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_ssl_certificate = gcp.compute.SSLCertificate(\"default\",\n name=\"default-cert\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 443,\n })\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n protocol=\"SSL\",\n health_checks=default_health_check.id)\ndefault = gcp.compute.TargetSSLProxy(\"default\",\n name=\"test-proxy\",\n backend_service=default_backend_service.id,\n ssl_certificates=[default_ssl_certificate.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultSSLCertificate = new Gcp.Compute.SSLCertificate(\"default\", new()\n {\n Name = \"default-cert\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 443,\n },\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n Protocol = \"SSL\",\n HealthChecks = defaultHealthCheck.Id,\n });\n\n var @default = new Gcp.Compute.TargetSSLProxy(\"default\", new()\n {\n Name = \"test-proxy\",\n BackendService = defaultBackendService.Id,\n SslCertificates = new[]\n {\n defaultSSLCertificate.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSSLCertificate, err := compute.NewSSLCertificate(ctx, \"default\", \u0026compute.SSLCertificateArgs{\n\t\t\tName: pulumi.String(\"default-cert\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile.Result),\n\t\t\tCertificate: pulumi.String(invokeFile1.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(443),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tProtocol: pulumi.String(\"SSL\"),\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewTargetSSLProxy(ctx, \"default\", \u0026compute.TargetSSLProxyArgs{\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tBackendService: defaultBackendService.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultSSLCertificate.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.compute.SSLCertificate;\nimport com.pulumi.gcp.compute.SSLCertificateArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.TargetSSLProxy;\nimport com.pulumi.gcp.compute.TargetSSLProxyArgs;\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 defaultSSLCertificate = new SSLCertificate(\"defaultSSLCertificate\", SSLCertificateArgs.builder()\n .name(\"default-cert\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"443\")\n .build())\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .protocol(\"SSL\")\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var default_ = new TargetSSLProxy(\"default\", TargetSSLProxyArgs.builder()\n .name(\"test-proxy\")\n .backendService(defaultBackendService.id())\n .sslCertificates(defaultSSLCertificate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetSSLProxy\n properties:\n name: test-proxy\n backendService: ${defaultBackendService.id}\n sslCertificates:\n - ${defaultSSLCertificate.id}\n defaultSSLCertificate:\n type: gcp:compute:SSLCertificate\n name: default\n properties:\n name: default-cert\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n protocol: SSL\n healthChecks: ${defaultHealthCheck.id}\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '443'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTargetSslProxy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/targetSslProxies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TargetSslProxy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/targetSSLProxy:TargetSSLProxy default projects/{{project}}/global/targetSslProxies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetSSLProxy:TargetSSLProxy default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetSSLProxy:TargetSSLProxy default {{name}}\n```\n\n", "properties": { "backendService": { "type": "string", @@ -165668,7 +165668,7 @@ } }, "gcp:compute/uRLMap:URLMap": { - "description": "UrlMaps are used to route requests to a backend service based on rules\nthat you define for the host and path of an incoming URL.\n\n\nTo get more information about UrlMap, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/urlMaps)\n\n## Example Usage\n\n### Url Map Bucket And Service\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst login = new gcp.compute.BackendService(\"login\", {\n name: \"login\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst staticBucket = new gcp.storage.Bucket(\"static\", {\n name: \"static-asset-bucket\",\n location: \"US\",\n});\nconst static = new gcp.compute.BackendBucket(\"static\", {\n name: \"static-asset-backend-bucket\",\n bucketName: staticBucket.name,\n enableCdn: true,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: static.id,\n hostRules: [\n {\n hosts: [\"mysite.com\"],\n pathMatcher: \"mysite\",\n },\n {\n hosts: [\"myothersite.com\"],\n pathMatcher: \"otherpaths\",\n },\n ],\n pathMatchers: [\n {\n name: \"mysite\",\n defaultService: static.id,\n pathRules: [\n {\n paths: [\"/home\"],\n service: static.id,\n },\n {\n paths: [\"/login\"],\n service: login.id,\n },\n {\n paths: [\"/static\"],\n service: static.id,\n },\n ],\n },\n {\n name: \"otherpaths\",\n defaultService: static.id,\n },\n ],\n tests: [{\n service: static.id,\n host: \"example.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\nlogin = gcp.compute.BackendService(\"login\",\n name=\"login\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id)\nstatic_bucket = gcp.storage.Bucket(\"static\",\n name=\"static-asset-bucket\",\n location=\"US\")\nstatic = gcp.compute.BackendBucket(\"static\",\n name=\"static-asset-backend-bucket\",\n bucket_name=static_bucket.name,\n enable_cdn=True)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=static.id,\n host_rules=[\n {\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"mysite\",\n },\n {\n \"hosts\": [\"myothersite.com\"],\n \"pathMatcher\": \"otherpaths\",\n },\n ],\n path_matchers=[\n {\n \"name\": \"mysite\",\n \"defaultService\": static.id,\n \"pathRules\": [\n {\n \"paths\": [\"/home\"],\n \"service\": static.id,\n },\n {\n \"paths\": [\"/login\"],\n \"service\": login.id,\n },\n {\n \"paths\": [\"/static\"],\n \"service\": static.id,\n },\n ],\n },\n {\n \"name\": \"otherpaths\",\n \"defaultService\": static.id,\n },\n ],\n tests=[{\n \"service\": static.id,\n \"host\": \"example.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var login = new Gcp.Compute.BackendService(\"login\", new()\n {\n Name = \"login\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var staticBucket = new Gcp.Storage.Bucket(\"static\", new()\n {\n Name = \"static-asset-bucket\",\n Location = \"US\",\n });\n\n var @static = new Gcp.Compute.BackendBucket(\"static\", new()\n {\n Name = \"static-asset-backend-bucket\",\n BucketName = staticBucket.Name,\n EnableCdn = true,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = @static.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"mysite\",\n },\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"myothersite.com\",\n },\n PathMatcher = \"otherpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"mysite\",\n DefaultService = @static.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n Service = @static.Id,\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/login\",\n },\n Service = login.Id,\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/static\",\n },\n Service = @static.Id,\n },\n },\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"otherpaths\",\n DefaultService = @static.Id,\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = @static.Id,\n Host = \"example.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogin, err := compute.NewBackendService(ctx, \"login\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"login\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstaticBucket, err := storage.NewBucket(ctx, \"static\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-bucket\"),\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\tstatic, err := compute.NewBackendBucket(ctx, \"static\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-backend-bucket\"),\n\t\t\tBucketName: staticBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: static.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"mysite\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"myothersite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"otherpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"mysite\"),\n\t\t\t\t\tDefaultService: static.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: static.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/login\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: login.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/static\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: static.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"otherpaths\"),\n\t\t\t\t\tDefaultService: static.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: static.ID(),\n\t\t\t\t\tHost: pulumi.String(\"example.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\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 HttpHealthCheck(\"default\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var login = new BackendService(\"login\", BackendServiceArgs.builder()\n .name(\"login\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var staticBucket = new Bucket(\"staticBucket\", BucketArgs.builder()\n .name(\"static-asset-bucket\")\n .location(\"US\")\n .build());\n\n var static_ = new BackendBucket(\"static\", BackendBucketArgs.builder()\n .name(\"static-asset-backend-bucket\")\n .bucketName(staticBucket.name())\n .enableCdn(true)\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(static_.id())\n .hostRules( \n URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"mysite\")\n .build(),\n URLMapHostRuleArgs.builder()\n .hosts(\"myothersite.com\")\n .pathMatcher(\"otherpaths\")\n .build())\n .pathMatchers( \n URLMapPathMatcherArgs.builder()\n .name(\"mysite\")\n .defaultService(static_.id())\n .pathRules( \n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .service(static_.id())\n .build(),\n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/login\")\n .service(login.id())\n .build(),\n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/static\")\n .service(static_.id())\n .build())\n .build(),\n URLMapPathMatcherArgs.builder()\n .name(\"otherpaths\")\n .defaultService(static_.id())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(static_.id())\n .host(\"example.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${static.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: mysite\n - hosts:\n - myothersite.com\n pathMatcher: otherpaths\n pathMatchers:\n - name: mysite\n defaultService: ${static.id}\n pathRules:\n - paths:\n - /home\n service: ${static.id}\n - paths:\n - /login\n service: ${login.id}\n - paths:\n - /static\n service: ${static.id}\n - name: otherpaths\n defaultService: ${static.id}\n tests:\n - service: ${static.id}\n host: example.com\n path: /home\n login:\n type: gcp:compute:BackendService\n properties:\n name: login\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n default:\n type: gcp:compute:HttpHealthCheck\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n static:\n type: gcp:compute:BackendBucket\n properties:\n name: static-asset-backend-bucket\n bucketName: ${staticBucket.name}\n enableCdn: true\n staticBucket:\n type: gcp:storage:Bucket\n name: static\n properties:\n name: static-asset-bucket\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Traffic Director Route\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.BackendService(\"home\", {\n name: \"home\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n routeRules: [{\n priority: 1,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe2\"],\n requestHeadersToAdds: [{\n headerName: \"AddSomethingElse\",\n headerValue: \"MyOtherValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe3\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n matchRules: [{\n fullPathMatch: \"a full path\",\n headerMatches: [{\n headerName: \"someheader\",\n exactMatch: \"match this exactly\",\n invertMatch: true,\n }],\n ignoreCase: true,\n metadataFilters: [{\n filterMatchCriteria: \"MATCH_ANY\",\n filterLabels: [{\n name: \"PLANET\",\n value: \"MARS\",\n }],\n }],\n queryParameterMatches: [{\n name: \"a query parameter\",\n presentMatch: true,\n }],\n }],\n urlRedirect: {\n hostRedirect: \"A host\",\n httpsRedirect: false,\n pathRedirect: \"some/path\",\n redirectResponseCode: \"TEMPORARY_REDIRECT\",\n stripQuery: true,\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.BackendService(\"home\",\n name=\"home\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\")\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": home.id,\n \"routeRules\": [{\n \"priority\": 1,\n \"headerAction\": {\n \"requestHeadersToRemoves\": [\"RemoveMe2\"],\n \"requestHeadersToAdds\": [{\n \"headerName\": \"AddSomethingElse\",\n \"headerValue\": \"MyOtherValue\",\n \"replace\": True,\n }],\n \"responseHeadersToRemoves\": [\"RemoveMe3\"],\n \"responseHeadersToAdds\": [{\n \"headerName\": \"AddMe\",\n \"headerValue\": \"MyValue\",\n \"replace\": False,\n }],\n },\n \"matchRules\": [{\n \"fullPathMatch\": \"a full path\",\n \"headerMatches\": [{\n \"headerName\": \"someheader\",\n \"exactMatch\": \"match this exactly\",\n \"invertMatch\": True,\n }],\n \"ignoreCase\": True,\n \"metadataFilters\": [{\n \"filterMatchCriteria\": \"MATCH_ANY\",\n \"filterLabels\": [{\n \"name\": \"PLANET\",\n \"value\": \"MARS\",\n }],\n }],\n \"queryParameterMatches\": [{\n \"name\": \"a query parameter\",\n \"presentMatch\": True,\n }],\n }],\n \"urlRedirect\": {\n \"hostRedirect\": \"A host\",\n \"httpsRedirect\": False,\n \"pathRedirect\": \"some/path\",\n \"redirectResponseCode\": \"TEMPORARY_REDIRECT\",\n \"stripQuery\": True,\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.BackendService(\"home\", new()\n {\n Name = \"home\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n HeaderAction = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe2\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddSomethingElse\",\n HeaderValue = \"MyOtherValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe3\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"a full path\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"someheader\",\n ExactMatch = \"match this exactly\",\n InvertMatch = true,\n },\n },\n IgnoreCase = true,\n MetadataFilters = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs\n {\n FilterMatchCriteria = \"MATCH_ANY\",\n FilterLabels = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs\n {\n Name = \"PLANET\",\n Value = \"MARS\",\n },\n },\n },\n },\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"a query parameter\",\n PresentMatch = true,\n },\n },\n },\n },\n UrlRedirect = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleUrlRedirectArgs\n {\n HostRedirect = \"A host\",\n HttpsRedirect = false,\n PathRedirect = \"some/path\",\n RedirectResponseCode = \"TEMPORARY_REDIRECT\",\n StripQuery = true,\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewBackendService(ctx, \"home\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tHeaderAction: \u0026compute.URLMapPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddSomethingElse\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyOtherValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"a full path\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"someheader\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"match this exactly\"),\n\t\t\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tMetadataFilters: compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs{\n\t\t\t\t\t\t\t\t\t\t\tFilterMatchCriteria: pulumi.String(\"MATCH_ANY\"),\n\t\t\t\t\t\t\t\t\t\t\tFilterLabels: compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PLANET\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"MARS\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"a query parameter\"),\n\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tUrlRedirect: \u0026compute.URLMapPathMatcherRouteRuleUrlRedirectArgs{\n\t\t\t\t\t\t\t\tHostRedirect: pulumi.String(\"A host\"),\n\t\t\t\t\t\t\t\tHttpsRedirect: pulumi.Bool(false),\n\t\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"some/path\"),\n\t\t\t\t\t\t\t\tRedirectResponseCode: pulumi.String(\"TEMPORARY_REDIRECT\"),\n\t\t\t\t\t\t\t\tStripQuery: pulumi.Bool(true),\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\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\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 HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new BackendService(\"home\", BackendServiceArgs.builder()\n .name(\"home\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .routeRules(URLMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .headerAction(URLMapPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe2\")\n .requestHeadersToAdds(URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddSomethingElse\")\n .headerValue(\"MyOtherValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe3\")\n .responseHeadersToAdds(URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"a full path\")\n .headerMatches(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"someheader\")\n .exactMatch(\"match this exactly\")\n .invertMatch(true)\n .build())\n .ignoreCase(true)\n .metadataFilters(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs.builder()\n .filterMatchCriteria(\"MATCH_ANY\")\n .filterLabels(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs.builder()\n .name(\"PLANET\")\n .value(\"MARS\")\n .build())\n .build())\n .queryParameterMatches(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"a query parameter\")\n .presentMatch(true)\n .build())\n .build())\n .urlRedirect(URLMapPathMatcherRouteRuleUrlRedirectArgs.builder()\n .hostRedirect(\"A host\")\n .httpsRedirect(false)\n .pathRedirect(\"some/path\")\n .redirectResponseCode(\"TEMPORARY_REDIRECT\")\n .stripQuery(true)\n .build())\n .build())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n routeRules:\n - priority: 1\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe2\n requestHeadersToAdds:\n - headerName: AddSomethingElse\n headerValue: MyOtherValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe3\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n matchRules:\n - fullPathMatch: a full path\n headerMatches:\n - headerName: someheader\n exactMatch: match this exactly\n invertMatch: true\n ignoreCase: true\n metadataFilters:\n - filterMatchCriteria: MATCH_ANY\n filterLabels:\n - name: PLANET\n value: MARS\n queryParameterMatches:\n - name: a query parameter\n presentMatch: true\n urlRedirect:\n hostRedirect: A host\n httpsRedirect: false\n pathRedirect: some/path\n redirectResponseCode: TEMPORARY_REDIRECT\n stripQuery: true\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:BackendService\n properties:\n name: home\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Traffic Director Route Partial\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.BackendService(\"home\", {\n name: \"home\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n routeRules: [{\n priority: 1,\n matchRules: [{\n prefixMatch: \"/someprefix\",\n headerMatches: [{\n headerName: \"someheader\",\n exactMatch: \"match this exactly\",\n invertMatch: true,\n }],\n }],\n urlRedirect: {\n pathRedirect: \"some/path\",\n redirectResponseCode: \"TEMPORARY_REDIRECT\",\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.BackendService(\"home\",\n name=\"home\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\")\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": home.id,\n \"routeRules\": [{\n \"priority\": 1,\n \"matchRules\": [{\n \"prefixMatch\": \"/someprefix\",\n \"headerMatches\": [{\n \"headerName\": \"someheader\",\n \"exactMatch\": \"match this exactly\",\n \"invertMatch\": True,\n }],\n }],\n \"urlRedirect\": {\n \"pathRedirect\": \"some/path\",\n \"redirectResponseCode\": \"TEMPORARY_REDIRECT\",\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.BackendService(\"home\", new()\n {\n Name = \"home\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/someprefix\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"someheader\",\n ExactMatch = \"match this exactly\",\n InvertMatch = true,\n },\n },\n },\n },\n UrlRedirect = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleUrlRedirectArgs\n {\n PathRedirect = \"some/path\",\n RedirectResponseCode = \"TEMPORARY_REDIRECT\",\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewBackendService(ctx, \"home\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/someprefix\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"someheader\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"match this exactly\"),\n\t\t\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tUrlRedirect: \u0026compute.URLMapPathMatcherRouteRuleUrlRedirectArgs{\n\t\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"some/path\"),\n\t\t\t\t\t\t\t\tRedirectResponseCode: pulumi.String(\"TEMPORARY_REDIRECT\"),\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\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\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 HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new BackendService(\"home\", BackendServiceArgs.builder()\n .name(\"home\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .routeRules(URLMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/someprefix\")\n .headerMatches(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"someheader\")\n .exactMatch(\"match this exactly\")\n .invertMatch(true)\n .build())\n .build())\n .urlRedirect(URLMapPathMatcherRouteRuleUrlRedirectArgs.builder()\n .pathRedirect(\"some/path\")\n .redirectResponseCode(\"TEMPORARY_REDIRECT\")\n .build())\n .build())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n routeRules:\n - priority: 1\n matchRules:\n - prefixMatch: /someprefix\n headerMatches:\n - headerName: someheader\n exactMatch: match this exactly\n invertMatch: true\n urlRedirect:\n pathRedirect: some/path\n redirectResponseCode: TEMPORARY_REDIRECT\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:BackendService\n properties:\n name: home\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Traffic Director Path\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.BackendService(\"home\", {\n name: \"home\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [{\n paths: [\"/home\"],\n routeAction: {\n corsPolicy: {\n allowCredentials: true,\n allowHeaders: [\"Allowed content\"],\n allowMethods: [\"GET\"],\n allowOriginRegexes: [\"abc.*\"],\n allowOrigins: [\"Allowed origin\"],\n exposeHeaders: [\"Exposed header\"],\n maxAge: 30,\n disabled: false,\n },\n faultInjectionPolicy: {\n abort: {\n httpStatus: 234,\n percentage: 5.6,\n },\n delay: {\n fixedDelay: {\n seconds: \"0\",\n nanos: 50000,\n },\n percentage: 7.8,\n },\n },\n requestMirrorPolicy: {\n backendService: home.id,\n },\n retryPolicy: {\n numRetries: 4,\n perTryTimeout: {\n seconds: \"30\",\n },\n retryConditions: [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n timeout: {\n seconds: \"20\",\n nanos: 750000000,\n },\n urlRewrite: {\n hostRewrite: \"dev.example.com\",\n pathPrefixRewrite: \"/v1/api/\",\n },\n weightedBackendServices: [{\n backendService: home.id,\n weight: 400,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe\"],\n requestHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n }],\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.BackendService(\"home\",\n name=\"home\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\")\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": home.id,\n \"pathRules\": [{\n \"paths\": [\"/home\"],\n \"routeAction\": {\n \"corsPolicy\": {\n \"allowCredentials\": True,\n \"allowHeaders\": [\"Allowed content\"],\n \"allowMethods\": [\"GET\"],\n \"allowOriginRegexes\": [\"abc.*\"],\n \"allowOrigins\": [\"Allowed origin\"],\n \"exposeHeaders\": [\"Exposed header\"],\n \"maxAge\": 30,\n \"disabled\": False,\n },\n \"faultInjectionPolicy\": {\n \"abort\": {\n \"httpStatus\": 234,\n \"percentage\": 5.6,\n },\n \"delay\": {\n \"fixedDelay\": {\n \"seconds\": \"0\",\n \"nanos\": 50000,\n },\n \"percentage\": 7.8,\n },\n },\n \"requestMirrorPolicy\": {\n \"backendService\": home.id,\n },\n \"retryPolicy\": {\n \"numRetries\": 4,\n \"perTryTimeout\": {\n \"seconds\": \"30\",\n },\n \"retryConditions\": [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n \"timeout\": {\n \"seconds\": \"20\",\n \"nanos\": 750000000,\n },\n \"urlRewrite\": {\n \"hostRewrite\": \"dev.example.com\",\n \"pathPrefixRewrite\": \"/v1/api/\",\n },\n \"weightedBackendServices\": [{\n \"backendService\": home.id,\n \"weight\": 400,\n \"headerAction\": {\n \"requestHeadersToRemoves\": [\"RemoveMe\"],\n \"requestHeadersToAdds\": [{\n \"headerName\": \"AddMe\",\n \"headerValue\": \"MyValue\",\n \"replace\": True,\n }],\n \"responseHeadersToRemoves\": [\"RemoveMe\"],\n \"responseHeadersToAdds\": [{\n \"headerName\": \"AddMe\",\n \"headerValue\": \"MyValue\",\n \"replace\": False,\n }],\n },\n }],\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.BackendService(\"home\", new()\n {\n Name = \"home\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n RouteAction = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionArgs\n {\n CorsPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs\n {\n AllowCredentials = true,\n AllowHeaders = new[]\n {\n \"Allowed content\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n },\n AllowOriginRegexes = new[]\n {\n \"abc.*\",\n },\n AllowOrigins = new[]\n {\n \"Allowed origin\",\n },\n ExposeHeaders = new[]\n {\n \"Exposed header\",\n },\n MaxAge = 30,\n Disabled = false,\n },\n FaultInjectionPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs\n {\n Abort = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 234,\n Percentage = 5.6,\n },\n Delay = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs\n {\n Seconds = \"0\",\n Nanos = 50000,\n },\n Percentage = 7.8,\n },\n },\n RequestMirrorPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs\n {\n BackendService = home.Id,\n },\n RetryPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionRetryPolicyArgs\n {\n NumRetries = 4,\n PerTryTimeout = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs\n {\n Seconds = \"30\",\n },\n RetryConditions = new[]\n {\n \"5xx\",\n \"deadline-exceeded\",\n },\n },\n Timeout = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionTimeoutArgs\n {\n Seconds = \"20\",\n Nanos = 750000000,\n },\n UrlRewrite = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionUrlRewriteArgs\n {\n HostRewrite = \"dev.example.com\",\n PathPrefixRewrite = \"/v1/api/\",\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 400,\n HeaderAction = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewBackendService(ctx, \"home\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRouteAction: \u0026compute.URLMapPathMatcherPathRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tCorsPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed content\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOriginRegexes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"abc.*\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed origin\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Exposed header\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMaxAge: pulumi.Int(30),\n\t\t\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tFaultInjectionPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs{\n\t\t\t\t\t\t\t\t\tAbort: \u0026compute.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\t\t\t\t\tHttpStatus: pulumi.Int(234),\n\t\t\t\t\t\t\t\t\t\tPercentage: pulumi.Float64(5.6),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tDelay: \u0026compute.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\t\t\t\t\tFixedDelay: \u0026compute.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs{\n\t\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(50000),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tPercentage: pulumi.Float64(7.8),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRequestMirrorPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRetryPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionRetryPolicyArgs{\n\t\t\t\t\t\t\t\t\tNumRetries: pulumi.Int(4),\n\t\t\t\t\t\t\t\t\tPerTryTimeout: \u0026compute.URLMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs{\n\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"30\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"deadline-exceeded\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tTimeout: \u0026compute.URLMapPathMatcherPathRuleRouteActionTimeoutArgs{\n\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"20\"),\n\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(750000000),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.URLMapPathMatcherPathRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"dev.example.com\"),\n\t\t\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/v1/api/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tWeightedBackendServices: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t\t\tWeight: pulumi.Int(400),\n\t\t\t\t\t\t\t\t\t\tHeaderAction: \u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\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 HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new BackendService(\"home\", BackendServiceArgs.builder()\n .name(\"home\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .routeAction(URLMapPathMatcherPathRuleRouteActionArgs.builder()\n .corsPolicy(URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs.builder()\n .allowCredentials(true)\n .allowHeaders(\"Allowed content\")\n .allowMethods(\"GET\")\n .allowOriginRegexes(\"abc.*\")\n .allowOrigins(\"Allowed origin\")\n .exposeHeaders(\"Exposed header\")\n .maxAge(30)\n .disabled(false)\n .build())\n .faultInjectionPolicy(URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs.builder()\n .abort(URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(234)\n .percentage(5.6)\n .build())\n .delay(URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs.builder()\n .seconds(0)\n .nanos(50000)\n .build())\n .percentage(7.8)\n .build())\n .build())\n .requestMirrorPolicy(URLMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs.builder()\n .backendService(home.id())\n .build())\n .retryPolicy(URLMapPathMatcherPathRuleRouteActionRetryPolicyArgs.builder()\n .numRetries(4)\n .perTryTimeout(URLMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs.builder()\n .seconds(30)\n .build())\n .retryConditions( \n \"5xx\",\n \"deadline-exceeded\")\n .build())\n .timeout(URLMapPathMatcherPathRuleRouteActionTimeoutArgs.builder()\n .seconds(20)\n .nanos(750000000)\n .build())\n .urlRewrite(URLMapPathMatcherPathRuleRouteActionUrlRewriteArgs.builder()\n .hostRewrite(\"dev.example.com\")\n .pathPrefixRewrite(\"/v1/api/\")\n .build())\n .weightedBackendServices(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(400)\n .headerAction(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe\")\n .requestHeadersToAdds(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe\")\n .responseHeadersToAdds(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n routeAction:\n corsPolicy:\n allowCredentials: true\n allowHeaders:\n - Allowed content\n allowMethods:\n - GET\n allowOriginRegexes:\n - abc.*\n allowOrigins:\n - Allowed origin\n exposeHeaders:\n - Exposed header\n maxAge: 30\n disabled: false\n faultInjectionPolicy:\n abort:\n httpStatus: 234\n percentage: 5.6\n delay:\n fixedDelay:\n seconds: 0\n nanos: 50000\n percentage: 7.8\n requestMirrorPolicy:\n backendService: ${home.id}\n retryPolicy:\n numRetries: 4\n perTryTimeout:\n seconds: 30\n retryConditions:\n - 5xx\n - deadline-exceeded\n timeout:\n seconds: 20\n nanos: 7.5e+08\n urlRewrite:\n hostRewrite: dev.example.com\n pathPrefixRewrite: /v1/api/\n weightedBackendServices:\n - backendService: ${home.id}\n weight: 400\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe\n requestHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:BackendService\n properties:\n name: home\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Traffic Director Path Partial\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.BackendService(\"home\", {\n name: \"home\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [{\n paths: [\"/home\"],\n routeAction: {\n corsPolicy: {\n allowCredentials: true,\n allowHeaders: [\"Allowed content\"],\n allowMethods: [\"GET\"],\n allowOriginRegexes: [\"abc.*\"],\n allowOrigins: [\"Allowed origin\"],\n exposeHeaders: [\"Exposed header\"],\n maxAge: 30,\n disabled: false,\n },\n weightedBackendServices: [{\n backendService: home.id,\n weight: 400,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe\"],\n requestHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n }],\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.BackendService(\"home\",\n name=\"home\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\")\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": home.id,\n \"pathRules\": [{\n \"paths\": [\"/home\"],\n \"routeAction\": {\n \"corsPolicy\": {\n \"allowCredentials\": True,\n \"allowHeaders\": [\"Allowed content\"],\n \"allowMethods\": [\"GET\"],\n \"allowOriginRegexes\": [\"abc.*\"],\n \"allowOrigins\": [\"Allowed origin\"],\n \"exposeHeaders\": [\"Exposed header\"],\n \"maxAge\": 30,\n \"disabled\": False,\n },\n \"weightedBackendServices\": [{\n \"backendService\": home.id,\n \"weight\": 400,\n \"headerAction\": {\n \"requestHeadersToRemoves\": [\"RemoveMe\"],\n \"requestHeadersToAdds\": [{\n \"headerName\": \"AddMe\",\n \"headerValue\": \"MyValue\",\n \"replace\": True,\n }],\n \"responseHeadersToRemoves\": [\"RemoveMe\"],\n \"responseHeadersToAdds\": [{\n \"headerName\": \"AddMe\",\n \"headerValue\": \"MyValue\",\n \"replace\": False,\n }],\n },\n }],\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.BackendService(\"home\", new()\n {\n Name = \"home\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n RouteAction = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionArgs\n {\n CorsPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs\n {\n AllowCredentials = true,\n AllowHeaders = new[]\n {\n \"Allowed content\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n },\n AllowOriginRegexes = new[]\n {\n \"abc.*\",\n },\n AllowOrigins = new[]\n {\n \"Allowed origin\",\n },\n ExposeHeaders = new[]\n {\n \"Exposed header\",\n },\n MaxAge = 30,\n Disabled = false,\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 400,\n HeaderAction = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewBackendService(ctx, \"home\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRouteAction: \u0026compute.URLMapPathMatcherPathRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tCorsPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed content\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOriginRegexes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"abc.*\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed origin\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Exposed header\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMaxAge: pulumi.Int(30),\n\t\t\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tWeightedBackendServices: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t\t\tWeight: pulumi.Int(400),\n\t\t\t\t\t\t\t\t\t\tHeaderAction: \u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\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 HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new BackendService(\"home\", BackendServiceArgs.builder()\n .name(\"home\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .routeAction(URLMapPathMatcherPathRuleRouteActionArgs.builder()\n .corsPolicy(URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs.builder()\n .allowCredentials(true)\n .allowHeaders(\"Allowed content\")\n .allowMethods(\"GET\")\n .allowOriginRegexes(\"abc.*\")\n .allowOrigins(\"Allowed origin\")\n .exposeHeaders(\"Exposed header\")\n .maxAge(30)\n .disabled(false)\n .build())\n .weightedBackendServices(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(400)\n .headerAction(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe\")\n .requestHeadersToAdds(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe\")\n .responseHeadersToAdds(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n routeAction:\n corsPolicy:\n allowCredentials: true\n allowHeaders:\n - Allowed content\n allowMethods:\n - GET\n allowOriginRegexes:\n - abc.*\n allowOrigins:\n - Allowed origin\n exposeHeaders:\n - Exposed header\n maxAge: 30\n disabled: false\n weightedBackendServices:\n - backendService: ${home.id}\n weight: 400\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe\n requestHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:BackendService\n properties:\n name: home\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Header Based Routing\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"default\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst service_a = new gcp.compute.BackendService(\"service-a\", {\n name: \"service-a\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst service_b = new gcp.compute.BackendService(\"service-b\", {\n name: \"service-b\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"header-based routing example\",\n defaultService: _default.id,\n hostRules: [{\n hosts: [\"*\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: _default.id,\n routeRules: [\n {\n priority: 1,\n service: service_a.id,\n matchRules: [{\n prefixMatch: \"/\",\n ignoreCase: true,\n headerMatches: [{\n headerName: \"abtest\",\n exactMatch: \"a\",\n }],\n }],\n },\n {\n priority: 2,\n service: service_b.id,\n matchRules: [{\n ignoreCase: true,\n prefixMatch: \"/\",\n headerMatches: [{\n headerName: \"abtest\",\n exactMatch: \"b\",\n }],\n }],\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"default\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nservice_a = gcp.compute.BackendService(\"service-a\",\n name=\"service-a\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nservice_b = gcp.compute.BackendService(\"service-b\",\n name=\"service-b\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"header-based routing example\",\n default_service=default.id,\n host_rules=[{\n \"hosts\": [\"*\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": default.id,\n \"routeRules\": [\n {\n \"priority\": 1,\n \"service\": service_a.id,\n \"matchRules\": [{\n \"prefixMatch\": \"/\",\n \"ignoreCase\": True,\n \"headerMatches\": [{\n \"headerName\": \"abtest\",\n \"exactMatch\": \"a\",\n }],\n }],\n },\n {\n \"priority\": 2,\n \"service\": service_b.id,\n \"matchRules\": [{\n \"ignoreCase\": True,\n \"prefixMatch\": \"/\",\n \"headerMatches\": [{\n \"headerName\": \"abtest\",\n \"exactMatch\": \"b\",\n }],\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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"default\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var service_a = new Gcp.Compute.BackendService(\"service-a\", new()\n {\n Name = \"service-a\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var service_b = new Gcp.Compute.BackendService(\"service-b\", new()\n {\n Name = \"service-b\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"header-based routing example\",\n DefaultService = @default.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"*\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = @default.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n Service = service_a.Id,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n IgnoreCase = true,\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"abtest\",\n ExactMatch = \"a\",\n },\n },\n },\n },\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 2,\n Service = service_b.Id,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n IgnoreCase = true,\n PrefixMatch = \"/\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"abtest\",\n ExactMatch = \"b\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"service-a\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"service-a\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"service-b\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"service-b\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"header-based routing example\"),\n\t\t\tDefaultService: _default.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: _default.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tService: service_a.ID(),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"abtest\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"a\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(2),\n\t\t\t\t\t\t\tService: service_b.ID(),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"abtest\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"b\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"default\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var service_a = new BackendService(\"service-a\", BackendServiceArgs.builder()\n .name(\"service-a\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var service_b = new BackendService(\"service-b\", BackendServiceArgs.builder()\n .name(\"service-b\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"header-based routing example\")\n .defaultService(default_.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"*\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(default_.id())\n .routeRules( \n URLMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .service(service_a.id())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .ignoreCase(true)\n .headerMatches(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"abtest\")\n .exactMatch(\"a\")\n .build())\n .build())\n .build(),\n URLMapPathMatcherRouteRuleArgs.builder()\n .priority(2)\n .service(service_b.id())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .ignoreCase(true)\n .prefixMatch(\"/\")\n .headerMatches(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"abtest\")\n .exactMatch(\"b\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: header-based routing example\n defaultService: ${default.id}\n hostRules:\n - hosts:\n - '*'\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${default.id}\n routeRules:\n - priority: 1\n service: ${[\"service-a\"].id}\n matchRules:\n - prefixMatch: /\n ignoreCase: true\n headerMatches:\n - headerName: abtest\n exactMatch: a\n - priority: 2\n service: ${[\"service-b\"].id}\n matchRules:\n - ignoreCase: true\n prefixMatch: /\n headerMatches:\n - headerName: abtest\n exactMatch: b\n default:\n type: gcp:compute:BackendService\n properties:\n name: default\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n service-a:\n type: gcp:compute:BackendService\n properties:\n name: service-a\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n service-b:\n type: gcp:compute:BackendService\n properties:\n name: service-b\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Parameter Based Routing\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"default\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst service_a = new gcp.compute.BackendService(\"service-a\", {\n name: \"service-a\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst service_b = new gcp.compute.BackendService(\"service-b\", {\n name: \"service-b\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"parameter-based routing example\",\n defaultService: _default.id,\n hostRules: [{\n hosts: [\"*\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: _default.id,\n routeRules: [\n {\n priority: 1,\n service: service_a.id,\n matchRules: [{\n prefixMatch: \"/\",\n ignoreCase: true,\n queryParameterMatches: [{\n name: \"abtest\",\n exactMatch: \"a\",\n }],\n }],\n },\n {\n priority: 2,\n service: service_b.id,\n matchRules: [{\n ignoreCase: true,\n prefixMatch: \"/\",\n queryParameterMatches: [{\n name: \"abtest\",\n exactMatch: \"b\",\n }],\n }],\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"default\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nservice_a = gcp.compute.BackendService(\"service-a\",\n name=\"service-a\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nservice_b = gcp.compute.BackendService(\"service-b\",\n name=\"service-b\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"parameter-based routing example\",\n default_service=default.id,\n host_rules=[{\n \"hosts\": [\"*\"],\n \"pathMatcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"defaultService\": default.id,\n \"routeRules\": [\n {\n \"priority\": 1,\n \"service\": service_a.id,\n \"matchRules\": [{\n \"prefixMatch\": \"/\",\n \"ignoreCase\": True,\n \"queryParameterMatches\": [{\n \"name\": \"abtest\",\n \"exactMatch\": \"a\",\n }],\n }],\n },\n {\n \"priority\": 2,\n \"service\": service_b.id,\n \"matchRules\": [{\n \"ignoreCase\": True,\n \"prefixMatch\": \"/\",\n \"queryParameterMatches\": [{\n \"name\": \"abtest\",\n \"exactMatch\": \"b\",\n }],\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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"default\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var service_a = new Gcp.Compute.BackendService(\"service-a\", new()\n {\n Name = \"service-a\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var service_b = new Gcp.Compute.BackendService(\"service-b\", new()\n {\n Name = \"service-b\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"parameter-based routing example\",\n DefaultService = @default.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"*\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = @default.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n Service = service_a.Id,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n IgnoreCase = true,\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"abtest\",\n ExactMatch = \"a\",\n },\n },\n },\n },\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 2,\n Service = service_b.Id,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n IgnoreCase = true,\n PrefixMatch = \"/\",\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"abtest\",\n ExactMatch = \"b\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"service-a\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"service-a\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"service-b\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"service-b\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"parameter-based routing example\"),\n\t\t\tDefaultService: _default.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: _default.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tService: service_a.ID(),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"abtest\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"a\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(2),\n\t\t\t\t\t\t\tService: service_b.ID(),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"abtest\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"b\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"default\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var service_a = new BackendService(\"service-a\", BackendServiceArgs.builder()\n .name(\"service-a\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var service_b = new BackendService(\"service-b\", BackendServiceArgs.builder()\n .name(\"service-b\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"parameter-based routing example\")\n .defaultService(default_.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"*\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(default_.id())\n .routeRules( \n URLMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .service(service_a.id())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .ignoreCase(true)\n .queryParameterMatches(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"abtest\")\n .exactMatch(\"a\")\n .build())\n .build())\n .build(),\n URLMapPathMatcherRouteRuleArgs.builder()\n .priority(2)\n .service(service_b.id())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .ignoreCase(true)\n .prefixMatch(\"/\")\n .queryParameterMatches(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"abtest\")\n .exactMatch(\"b\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: parameter-based routing example\n defaultService: ${default.id}\n hostRules:\n - hosts:\n - '*'\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${default.id}\n routeRules:\n - priority: 1\n service: ${[\"service-a\"].id}\n matchRules:\n - prefixMatch: /\n ignoreCase: true\n queryParameterMatches:\n - name: abtest\n exactMatch: a\n - priority: 2\n service: ${[\"service-b\"].id}\n matchRules:\n - ignoreCase: true\n prefixMatch: /\n queryParameterMatches:\n - name: abtest\n exactMatch: b\n default:\n type: gcp:compute:BackendService\n properties:\n name: default\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n service-a:\n type: gcp:compute:BackendService\n properties:\n name: service-a\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n service-b:\n type: gcp:compute:BackendService\n properties:\n name: service-b\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Path Template Match\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst cart_backend = new gcp.compute.BackendService(\"cart-backend\", {\n name: \"cart-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst user_backend = new gcp.compute.BackendService(\"user-backend\", {\n name: \"user-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst staticBucket = new gcp.storage.Bucket(\"static\", {\n name: \"static-asset-bucket\",\n location: \"US\",\n});\nconst static = new gcp.compute.BackendBucket(\"static\", {\n name: \"static-asset-backend-bucket\",\n bucketName: staticBucket.name,\n enableCdn: true,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: static.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"mysite\",\n }],\n pathMatchers: [{\n name: \"mysite\",\n defaultService: static.id,\n routeRules: [\n {\n matchRules: [{\n pathTemplateMatch: \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n }],\n service: cart_backend.id,\n priority: 1,\n routeAction: {\n urlRewrite: {\n pathTemplateRewrite: \"/{username}-{cartid}/\",\n },\n },\n },\n {\n matchRules: [{\n pathTemplateMatch: \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n }],\n service: user_backend.id,\n priority: 2,\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ncart_backend = gcp.compute.BackendService(\"cart-backend\",\n name=\"cart-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nuser_backend = gcp.compute.BackendService(\"user-backend\",\n name=\"user-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nstatic_bucket = gcp.storage.Bucket(\"static\",\n name=\"static-asset-bucket\",\n location=\"US\")\nstatic = gcp.compute.BackendBucket(\"static\",\n name=\"static-asset-backend-bucket\",\n bucket_name=static_bucket.name,\n enable_cdn=True)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=static.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"mysite\",\n }],\n path_matchers=[{\n \"name\": \"mysite\",\n \"defaultService\": static.id,\n \"routeRules\": [\n {\n \"matchRules\": [{\n \"pathTemplateMatch\": \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n }],\n \"service\": cart_backend.id,\n \"priority\": 1,\n \"routeAction\": {\n \"urlRewrite\": {\n \"pathTemplateRewrite\": \"/{username}-{cartid}/\",\n },\n },\n },\n {\n \"matchRules\": [{\n \"pathTemplateMatch\": \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n }],\n \"service\": user_backend.id,\n \"priority\": 2,\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 @default = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var cart_backend = new Gcp.Compute.BackendService(\"cart-backend\", new()\n {\n Name = \"cart-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var user_backend = new Gcp.Compute.BackendService(\"user-backend\", new()\n {\n Name = \"user-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var staticBucket = new Gcp.Storage.Bucket(\"static\", new()\n {\n Name = \"static-asset-bucket\",\n Location = \"US\",\n });\n\n var @static = new Gcp.Compute.BackendBucket(\"static\", new()\n {\n Name = \"static-asset-backend-bucket\",\n BucketName = staticBucket.Name,\n EnableCdn = true,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = @static.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"mysite\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"mysite\",\n DefaultService = @static.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n },\n },\n Service = cart_backend.Id,\n Priority = 1,\n RouteAction = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleRouteActionArgs\n {\n UrlRewrite = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleRouteActionUrlRewriteArgs\n {\n PathTemplateRewrite = \"/{username}-{cartid}/\",\n },\n },\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n },\n },\n Service = user_backend.Id,\n Priority = 2,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"cart-backend\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"cart-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"user-backend\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"user-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstaticBucket, err := storage.NewBucket(ctx, \"static\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-bucket\"),\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\tstatic, err := compute.NewBackendBucket(ctx, \"static\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-backend-bucket\"),\n\t\t\tBucketName: staticBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: static.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"mysite\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"mysite\"),\n\t\t\t\t\tDefaultService: static.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: cart_backend.ID(),\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tRouteAction: \u0026compute.URLMapPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.URLMapPathMatcherRouteRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateRewrite: pulumi.String(\"/{username}-{cartid}/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/xyzwebservices/v2/xyz/users/*/accountinfo/*\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: user_backend.ID(),\n\t\t\t\t\t\t\tPriority: pulumi.Int(2),\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.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\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 HttpHealthCheck(\"default\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var cart_backend = new BackendService(\"cart-backend\", BackendServiceArgs.builder()\n .name(\"cart-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var user_backend = new BackendService(\"user-backend\", BackendServiceArgs.builder()\n .name(\"user-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var staticBucket = new Bucket(\"staticBucket\", BucketArgs.builder()\n .name(\"static-asset-bucket\")\n .location(\"US\")\n .build());\n\n var static_ = new BackendBucket(\"static\", BackendBucketArgs.builder()\n .name(\"static-asset-backend-bucket\")\n .bucketName(staticBucket.name())\n .enableCdn(true)\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(static_.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"mysite\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"mysite\")\n .defaultService(static_.id())\n .routeRules( \n URLMapPathMatcherRouteRuleArgs.builder()\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\")\n .build())\n .service(cart_backend.id())\n .priority(1)\n .routeAction(URLMapPathMatcherRouteRuleRouteActionArgs.builder()\n .urlRewrite(URLMapPathMatcherRouteRuleRouteActionUrlRewriteArgs.builder()\n .pathTemplateRewrite(\"/{username}-{cartid}/\")\n .build())\n .build())\n .build(),\n URLMapPathMatcherRouteRuleArgs.builder()\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/xyzwebservices/v2/xyz/users/*/accountinfo/*\")\n .build())\n .service(user_backend.id())\n .priority(2)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${static.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: mysite\n pathMatchers:\n - name: mysite\n defaultService: ${static.id}\n routeRules:\n - matchRules:\n - pathTemplateMatch: /xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\n service: ${[\"cart-backend\"].id}\n priority: 1\n routeAction:\n urlRewrite:\n pathTemplateRewrite: /{username}-{cartid}/\n - matchRules:\n - pathTemplateMatch: /xyzwebservices/v2/xyz/users/*/accountinfo/*\n service: ${[\"user-backend\"].id}\n priority: 2\n cart-backend:\n type: gcp:compute:BackendService\n properties:\n name: cart-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n user-backend:\n type: gcp:compute:BackendService\n properties:\n name: user-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n default:\n type: gcp:compute:HttpHealthCheck\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n static:\n type: gcp:compute:BackendBucket\n properties:\n name: static-asset-backend-bucket\n bucketName: ${staticBucket.name}\n enableCdn: true\n staticBucket:\n type: gcp:storage:Bucket\n name: static\n properties:\n name: static-asset-bucket\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Custom Error Response Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst example = new gcp.compute.BackendService(\"example\", {\n name: \"login\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst errorBucket = new gcp.storage.Bucket(\"error\", {\n name: \"static-asset-bucket\",\n location: \"US\",\n});\nconst error = new gcp.compute.BackendBucket(\"error\", {\n name: \"error-backend-bucket\",\n bucketName: errorBucket.name,\n enableCdn: true,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: example.id,\n defaultCustomErrorResponsePolicy: {\n errorResponseRules: [{\n matchResponseCodes: [\"5xx\"],\n path: \"/*\",\n overrideResponseCode: 502,\n }],\n errorService: error.id,\n },\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"mysite\",\n }],\n pathMatchers: [{\n name: \"mysite\",\n defaultService: example.id,\n defaultCustomErrorResponsePolicy: {\n errorResponseRules: [\n {\n matchResponseCodes: [\n \"4xx\",\n \"5xx\",\n ],\n path: \"/login\",\n overrideResponseCode: 404,\n },\n {\n matchResponseCodes: [\"503\"],\n path: \"/example\",\n overrideResponseCode: 502,\n },\n ],\n errorService: error.id,\n },\n pathRules: [{\n paths: [\"/*\"],\n service: example.id,\n customErrorResponsePolicy: {\n errorResponseRules: [{\n matchResponseCodes: [\"4xx\"],\n path: \"/register\",\n overrideResponseCode: 401,\n }],\n errorService: error.id,\n },\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\nexample = gcp.compute.BackendService(\"example\",\n name=\"login\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nerror_bucket = gcp.storage.Bucket(\"error\",\n name=\"static-asset-bucket\",\n location=\"US\")\nerror = gcp.compute.BackendBucket(\"error\",\n name=\"error-backend-bucket\",\n bucket_name=error_bucket.name,\n enable_cdn=True)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=example.id,\n default_custom_error_response_policy={\n \"errorResponseRules\": [{\n \"matchResponseCodes\": [\"5xx\"],\n \"path\": \"/*\",\n \"overrideResponseCode\": 502,\n }],\n \"errorService\": error.id,\n },\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"pathMatcher\": \"mysite\",\n }],\n path_matchers=[{\n \"name\": \"mysite\",\n \"defaultService\": example.id,\n \"defaultCustomErrorResponsePolicy\": {\n \"errorResponseRules\": [\n {\n \"matchResponseCodes\": [\n \"4xx\",\n \"5xx\",\n ],\n \"path\": \"/login\",\n \"overrideResponseCode\": 404,\n },\n {\n \"matchResponseCodes\": [\"503\"],\n \"path\": \"/example\",\n \"overrideResponseCode\": 502,\n },\n ],\n \"errorService\": error.id,\n },\n \"pathRules\": [{\n \"paths\": [\"/*\"],\n \"service\": example.id,\n \"customErrorResponsePolicy\": {\n \"errorResponseRules\": [{\n \"matchResponseCodes\": [\"4xx\"],\n \"path\": \"/register\",\n \"overrideResponseCode\": 401,\n }],\n \"errorService\": error.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 @default = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var example = new Gcp.Compute.BackendService(\"example\", new()\n {\n Name = \"login\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var errorBucket = new Gcp.Storage.Bucket(\"error\", new()\n {\n Name = \"static-asset-bucket\",\n Location = \"US\",\n });\n\n var error = new Gcp.Compute.BackendBucket(\"error\", new()\n {\n Name = \"error-backend-bucket\",\n BucketName = errorBucket.Name,\n EnableCdn = true,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = example.Id,\n DefaultCustomErrorResponsePolicy = new Gcp.Compute.Inputs.URLMapDefaultCustomErrorResponsePolicyArgs\n {\n ErrorResponseRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapDefaultCustomErrorResponsePolicyErrorResponseRuleArgs\n {\n MatchResponseCodes = new[]\n {\n \"5xx\",\n },\n Path = \"/*\",\n OverrideResponseCode = 502,\n },\n },\n ErrorService = error.Id,\n },\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"mysite\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"mysite\",\n DefaultService = example.Id,\n DefaultCustomErrorResponsePolicy = new Gcp.Compute.Inputs.URLMapPathMatcherDefaultCustomErrorResponsePolicyArgs\n {\n ErrorResponseRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs\n {\n MatchResponseCodes = new[]\n {\n \"4xx\",\n \"5xx\",\n },\n Path = \"/login\",\n OverrideResponseCode = 404,\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs\n {\n MatchResponseCodes = new[]\n {\n \"503\",\n },\n Path = \"/example\",\n OverrideResponseCode = 502,\n },\n },\n ErrorService = error.Id,\n },\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = example.Id,\n CustomErrorResponsePolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleCustomErrorResponsePolicyArgs\n {\n ErrorResponseRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRuleArgs\n {\n MatchResponseCodes = new[]\n {\n \"4xx\",\n },\n Path = \"/register\",\n OverrideResponseCode = 401,\n },\n },\n ErrorService = error.Id,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := compute.NewBackendService(ctx, \"example\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"login\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terrorBucket, err := storage.NewBucket(ctx, \"error\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-bucket\"),\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\terror, err := compute.NewBackendBucket(ctx, \"error\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"error-backend-bucket\"),\n\t\t\tBucketName: errorBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: example.ID(),\n\t\t\tDefaultCustomErrorResponsePolicy: \u0026compute.URLMapDefaultCustomErrorResponsePolicyArgs{\n\t\t\t\tErrorResponseRules: compute.URLMapDefaultCustomErrorResponsePolicyErrorResponseRuleArray{\n\t\t\t\t\t\u0026compute.URLMapDefaultCustomErrorResponsePolicyErrorResponseRuleArgs{\n\t\t\t\t\t\tMatchResponseCodes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPath: pulumi.String(\"/*\"),\n\t\t\t\t\t\tOverrideResponseCode: pulumi.Int(502),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tErrorService: error.ID(),\n\t\t\t},\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"mysite\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"mysite\"),\n\t\t\t\t\tDefaultService: example.ID(),\n\t\t\t\t\tDefaultCustomErrorResponsePolicy: \u0026compute.URLMapPathMatcherDefaultCustomErrorResponsePolicyArgs{\n\t\t\t\t\t\tErrorResponseRules: compute.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArray{\n\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs{\n\t\t\t\t\t\t\t\tMatchResponseCodes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"4xx\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/login\"),\n\t\t\t\t\t\t\t\tOverrideResponseCode: pulumi.Int(404),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs{\n\t\t\t\t\t\t\t\tMatchResponseCodes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"503\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/example\"),\n\t\t\t\t\t\t\t\tOverrideResponseCode: pulumi.Int(502),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tErrorService: error.ID(),\n\t\t\t\t\t},\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: example.ID(),\n\t\t\t\t\t\t\tCustomErrorResponsePolicy: \u0026compute.URLMapPathMatcherPathRuleCustomErrorResponsePolicyArgs{\n\t\t\t\t\t\t\t\tErrorResponseRules: compute.URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRuleArgs{\n\t\t\t\t\t\t\t\t\t\tMatchResponseCodes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"4xx\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"/register\"),\n\t\t\t\t\t\t\t\t\t\tOverrideResponseCode: pulumi.Int(401),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tErrorService: error.ID(),\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.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapDefaultCustomErrorResponsePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherDefaultCustomErrorResponsePolicyArgs;\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 HttpHealthCheck(\"default\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var example = new BackendService(\"example\", BackendServiceArgs.builder()\n .name(\"login\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var errorBucket = new Bucket(\"errorBucket\", BucketArgs.builder()\n .name(\"static-asset-bucket\")\n .location(\"US\")\n .build());\n\n var error = new BackendBucket(\"error\", BackendBucketArgs.builder()\n .name(\"error-backend-bucket\")\n .bucketName(errorBucket.name())\n .enableCdn(true)\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(example.id())\n .defaultCustomErrorResponsePolicy(URLMapDefaultCustomErrorResponsePolicyArgs.builder()\n .errorResponseRules(URLMapDefaultCustomErrorResponsePolicyErrorResponseRuleArgs.builder()\n .matchResponseCodes(\"5xx\")\n .path(\"/*\")\n .overrideResponseCode(502)\n .build())\n .errorService(error.id())\n .build())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"mysite\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"mysite\")\n .defaultService(example.id())\n .defaultCustomErrorResponsePolicy(URLMapPathMatcherDefaultCustomErrorResponsePolicyArgs.builder()\n .errorResponseRules( \n URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs.builder()\n .matchResponseCodes( \n \"4xx\",\n \"5xx\")\n .path(\"/login\")\n .overrideResponseCode(404)\n .build(),\n URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs.builder()\n .matchResponseCodes(\"503\")\n .path(\"/example\")\n .overrideResponseCode(502)\n .build())\n .errorService(error.id())\n .build())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(example.id())\n .customErrorResponsePolicy(URLMapPathMatcherPathRuleCustomErrorResponsePolicyArgs.builder()\n .errorResponseRules(URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRuleArgs.builder()\n .matchResponseCodes(\"4xx\")\n .path(\"/register\")\n .overrideResponseCode(401)\n .build())\n .errorService(error.id())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${example.id}\n defaultCustomErrorResponsePolicy:\n errorResponseRules:\n - matchResponseCodes:\n - 5xx\n path: /*\n overrideResponseCode: 502\n errorService: ${error.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: mysite\n pathMatchers:\n - name: mysite\n defaultService: ${example.id}\n defaultCustomErrorResponsePolicy:\n errorResponseRules:\n - matchResponseCodes:\n - 4xx\n - 5xx\n path: /login\n overrideResponseCode: 404\n - matchResponseCodes:\n - '503'\n path: /example\n overrideResponseCode: 502\n errorService: ${error.id}\n pathRules:\n - paths:\n - /*\n service: ${example.id}\n customErrorResponsePolicy:\n errorResponseRules:\n - matchResponseCodes:\n - 4xx\n path: /register\n overrideResponseCode: 401\n errorService: ${error.id}\n example:\n type: gcp:compute:BackendService\n properties:\n name: login\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n default:\n type: gcp:compute:HttpHealthCheck\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n error:\n type: gcp:compute:BackendBucket\n properties:\n name: error-backend-bucket\n bucketName: ${errorBucket.name}\n enableCdn: true\n errorBucket:\n type: gcp:storage:Bucket\n name: error\n properties:\n name: static-asset-bucket\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUrlMap can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/urlMaps/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, UrlMap can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/uRLMap:URLMap default projects/{{project}}/global/urlMaps/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/uRLMap:URLMap default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/uRLMap:URLMap default {{name}}\n```\n\n", + "description": "UrlMaps are used to route requests to a backend service based on rules\nthat you define for the host and path of an incoming URL.\n\n\nTo get more information about UrlMap, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/urlMaps)\n\n## Example Usage\n\n### Url Map Bucket And Service\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst login = new gcp.compute.BackendService(\"login\", {\n name: \"login\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst staticBucket = new gcp.storage.Bucket(\"static\", {\n name: \"static-asset-bucket\",\n location: \"US\",\n});\nconst static = new gcp.compute.BackendBucket(\"static\", {\n name: \"static-asset-backend-bucket\",\n bucketName: staticBucket.name,\n enableCdn: true,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: static.id,\n hostRules: [\n {\n hosts: [\"mysite.com\"],\n pathMatcher: \"mysite\",\n },\n {\n hosts: [\"myothersite.com\"],\n pathMatcher: \"otherpaths\",\n },\n ],\n pathMatchers: [\n {\n name: \"mysite\",\n defaultService: static.id,\n pathRules: [\n {\n paths: [\"/home\"],\n service: static.id,\n },\n {\n paths: [\"/login\"],\n service: login.id,\n },\n {\n paths: [\"/static\"],\n service: static.id,\n },\n ],\n },\n {\n name: \"otherpaths\",\n defaultService: static.id,\n },\n ],\n tests: [{\n service: static.id,\n host: \"example.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\nlogin = gcp.compute.BackendService(\"login\",\n name=\"login\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id)\nstatic_bucket = gcp.storage.Bucket(\"static\",\n name=\"static-asset-bucket\",\n location=\"US\")\nstatic = gcp.compute.BackendBucket(\"static\",\n name=\"static-asset-backend-bucket\",\n bucket_name=static_bucket.name,\n enable_cdn=True)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=static.id,\n host_rules=[\n {\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"mysite\",\n },\n {\n \"hosts\": [\"myothersite.com\"],\n \"path_matcher\": \"otherpaths\",\n },\n ],\n path_matchers=[\n {\n \"name\": \"mysite\",\n \"default_service\": static.id,\n \"path_rules\": [\n {\n \"paths\": [\"/home\"],\n \"service\": static.id,\n },\n {\n \"paths\": [\"/login\"],\n \"service\": login.id,\n },\n {\n \"paths\": [\"/static\"],\n \"service\": static.id,\n },\n ],\n },\n {\n \"name\": \"otherpaths\",\n \"default_service\": static.id,\n },\n ],\n tests=[{\n \"service\": static.id,\n \"host\": \"example.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var login = new Gcp.Compute.BackendService(\"login\", new()\n {\n Name = \"login\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var staticBucket = new Gcp.Storage.Bucket(\"static\", new()\n {\n Name = \"static-asset-bucket\",\n Location = \"US\",\n });\n\n var @static = new Gcp.Compute.BackendBucket(\"static\", new()\n {\n Name = \"static-asset-backend-bucket\",\n BucketName = staticBucket.Name,\n EnableCdn = true,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = @static.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"mysite\",\n },\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"myothersite.com\",\n },\n PathMatcher = \"otherpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"mysite\",\n DefaultService = @static.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n Service = @static.Id,\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/login\",\n },\n Service = login.Id,\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/static\",\n },\n Service = @static.Id,\n },\n },\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"otherpaths\",\n DefaultService = @static.Id,\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = @static.Id,\n Host = \"example.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogin, err := compute.NewBackendService(ctx, \"login\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"login\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstaticBucket, err := storage.NewBucket(ctx, \"static\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-bucket\"),\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\tstatic, err := compute.NewBackendBucket(ctx, \"static\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-backend-bucket\"),\n\t\t\tBucketName: staticBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: static.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"mysite\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"myothersite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"otherpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"mysite\"),\n\t\t\t\t\tDefaultService: static.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: static.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/login\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: login.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/static\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: static.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"otherpaths\"),\n\t\t\t\t\tDefaultService: static.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: static.ID(),\n\t\t\t\t\tHost: pulumi.String(\"example.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\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 HttpHealthCheck(\"default\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var login = new BackendService(\"login\", BackendServiceArgs.builder()\n .name(\"login\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var staticBucket = new Bucket(\"staticBucket\", BucketArgs.builder()\n .name(\"static-asset-bucket\")\n .location(\"US\")\n .build());\n\n var static_ = new BackendBucket(\"static\", BackendBucketArgs.builder()\n .name(\"static-asset-backend-bucket\")\n .bucketName(staticBucket.name())\n .enableCdn(true)\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(static_.id())\n .hostRules( \n URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"mysite\")\n .build(),\n URLMapHostRuleArgs.builder()\n .hosts(\"myothersite.com\")\n .pathMatcher(\"otherpaths\")\n .build())\n .pathMatchers( \n URLMapPathMatcherArgs.builder()\n .name(\"mysite\")\n .defaultService(static_.id())\n .pathRules( \n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .service(static_.id())\n .build(),\n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/login\")\n .service(login.id())\n .build(),\n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/static\")\n .service(static_.id())\n .build())\n .build(),\n URLMapPathMatcherArgs.builder()\n .name(\"otherpaths\")\n .defaultService(static_.id())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(static_.id())\n .host(\"example.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${static.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: mysite\n - hosts:\n - myothersite.com\n pathMatcher: otherpaths\n pathMatchers:\n - name: mysite\n defaultService: ${static.id}\n pathRules:\n - paths:\n - /home\n service: ${static.id}\n - paths:\n - /login\n service: ${login.id}\n - paths:\n - /static\n service: ${static.id}\n - name: otherpaths\n defaultService: ${static.id}\n tests:\n - service: ${static.id}\n host: example.com\n path: /home\n login:\n type: gcp:compute:BackendService\n properties:\n name: login\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n default:\n type: gcp:compute:HttpHealthCheck\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n static:\n type: gcp:compute:BackendBucket\n properties:\n name: static-asset-backend-bucket\n bucketName: ${staticBucket.name}\n enableCdn: true\n staticBucket:\n type: gcp:storage:Bucket\n name: static\n properties:\n name: static-asset-bucket\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Traffic Director Route\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.BackendService(\"home\", {\n name: \"home\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n routeRules: [{\n priority: 1,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe2\"],\n requestHeadersToAdds: [{\n headerName: \"AddSomethingElse\",\n headerValue: \"MyOtherValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe3\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n matchRules: [{\n fullPathMatch: \"a full path\",\n headerMatches: [{\n headerName: \"someheader\",\n exactMatch: \"match this exactly\",\n invertMatch: true,\n }],\n ignoreCase: true,\n metadataFilters: [{\n filterMatchCriteria: \"MATCH_ANY\",\n filterLabels: [{\n name: \"PLANET\",\n value: \"MARS\",\n }],\n }],\n queryParameterMatches: [{\n name: \"a query parameter\",\n presentMatch: true,\n }],\n }],\n urlRedirect: {\n hostRedirect: \"A host\",\n httpsRedirect: false,\n pathRedirect: \"some/path\",\n redirectResponseCode: \"TEMPORARY_REDIRECT\",\n stripQuery: true,\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.BackendService(\"home\",\n name=\"home\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\")\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"route_rules\": [{\n \"priority\": 1,\n \"header_action\": {\n \"request_headers_to_removes\": [\"RemoveMe2\"],\n \"request_headers_to_adds\": [{\n \"header_name\": \"AddSomethingElse\",\n \"header_value\": \"MyOtherValue\",\n \"replace\": True,\n }],\n \"response_headers_to_removes\": [\"RemoveMe3\"],\n \"response_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": False,\n }],\n },\n \"match_rules\": [{\n \"full_path_match\": \"a full path\",\n \"header_matches\": [{\n \"header_name\": \"someheader\",\n \"exact_match\": \"match this exactly\",\n \"invert_match\": True,\n }],\n \"ignore_case\": True,\n \"metadata_filters\": [{\n \"filter_match_criteria\": \"MATCH_ANY\",\n \"filter_labels\": [{\n \"name\": \"PLANET\",\n \"value\": \"MARS\",\n }],\n }],\n \"query_parameter_matches\": [{\n \"name\": \"a query parameter\",\n \"present_match\": True,\n }],\n }],\n \"url_redirect\": {\n \"host_redirect\": \"A host\",\n \"https_redirect\": False,\n \"path_redirect\": \"some/path\",\n \"redirect_response_code\": \"TEMPORARY_REDIRECT\",\n \"strip_query\": True,\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.BackendService(\"home\", new()\n {\n Name = \"home\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n HeaderAction = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe2\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddSomethingElse\",\n HeaderValue = \"MyOtherValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe3\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"a full path\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"someheader\",\n ExactMatch = \"match this exactly\",\n InvertMatch = true,\n },\n },\n IgnoreCase = true,\n MetadataFilters = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs\n {\n FilterMatchCriteria = \"MATCH_ANY\",\n FilterLabels = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs\n {\n Name = \"PLANET\",\n Value = \"MARS\",\n },\n },\n },\n },\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"a query parameter\",\n PresentMatch = true,\n },\n },\n },\n },\n UrlRedirect = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleUrlRedirectArgs\n {\n HostRedirect = \"A host\",\n HttpsRedirect = false,\n PathRedirect = \"some/path\",\n RedirectResponseCode = \"TEMPORARY_REDIRECT\",\n StripQuery = true,\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewBackendService(ctx, \"home\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tHeaderAction: \u0026compute.URLMapPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddSomethingElse\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyOtherValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"a full path\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"someheader\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"match this exactly\"),\n\t\t\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tMetadataFilters: compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs{\n\t\t\t\t\t\t\t\t\t\t\tFilterMatchCriteria: pulumi.String(\"MATCH_ANY\"),\n\t\t\t\t\t\t\t\t\t\t\tFilterLabels: compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PLANET\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"MARS\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"a query parameter\"),\n\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tUrlRedirect: \u0026compute.URLMapPathMatcherRouteRuleUrlRedirectArgs{\n\t\t\t\t\t\t\t\tHostRedirect: pulumi.String(\"A host\"),\n\t\t\t\t\t\t\t\tHttpsRedirect: pulumi.Bool(false),\n\t\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"some/path\"),\n\t\t\t\t\t\t\t\tRedirectResponseCode: pulumi.String(\"TEMPORARY_REDIRECT\"),\n\t\t\t\t\t\t\t\tStripQuery: pulumi.Bool(true),\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\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\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 HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new BackendService(\"home\", BackendServiceArgs.builder()\n .name(\"home\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .routeRules(URLMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .headerAction(URLMapPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe2\")\n .requestHeadersToAdds(URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddSomethingElse\")\n .headerValue(\"MyOtherValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe3\")\n .responseHeadersToAdds(URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"a full path\")\n .headerMatches(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"someheader\")\n .exactMatch(\"match this exactly\")\n .invertMatch(true)\n .build())\n .ignoreCase(true)\n .metadataFilters(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs.builder()\n .filterMatchCriteria(\"MATCH_ANY\")\n .filterLabels(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs.builder()\n .name(\"PLANET\")\n .value(\"MARS\")\n .build())\n .build())\n .queryParameterMatches(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"a query parameter\")\n .presentMatch(true)\n .build())\n .build())\n .urlRedirect(URLMapPathMatcherRouteRuleUrlRedirectArgs.builder()\n .hostRedirect(\"A host\")\n .httpsRedirect(false)\n .pathRedirect(\"some/path\")\n .redirectResponseCode(\"TEMPORARY_REDIRECT\")\n .stripQuery(true)\n .build())\n .build())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n routeRules:\n - priority: 1\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe2\n requestHeadersToAdds:\n - headerName: AddSomethingElse\n headerValue: MyOtherValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe3\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n matchRules:\n - fullPathMatch: a full path\n headerMatches:\n - headerName: someheader\n exactMatch: match this exactly\n invertMatch: true\n ignoreCase: true\n metadataFilters:\n - filterMatchCriteria: MATCH_ANY\n filterLabels:\n - name: PLANET\n value: MARS\n queryParameterMatches:\n - name: a query parameter\n presentMatch: true\n urlRedirect:\n hostRedirect: A host\n httpsRedirect: false\n pathRedirect: some/path\n redirectResponseCode: TEMPORARY_REDIRECT\n stripQuery: true\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:BackendService\n properties:\n name: home\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Traffic Director Route Partial\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.BackendService(\"home\", {\n name: \"home\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n routeRules: [{\n priority: 1,\n matchRules: [{\n prefixMatch: \"/someprefix\",\n headerMatches: [{\n headerName: \"someheader\",\n exactMatch: \"match this exactly\",\n invertMatch: true,\n }],\n }],\n urlRedirect: {\n pathRedirect: \"some/path\",\n redirectResponseCode: \"TEMPORARY_REDIRECT\",\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.BackendService(\"home\",\n name=\"home\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\")\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"route_rules\": [{\n \"priority\": 1,\n \"match_rules\": [{\n \"prefix_match\": \"/someprefix\",\n \"header_matches\": [{\n \"header_name\": \"someheader\",\n \"exact_match\": \"match this exactly\",\n \"invert_match\": True,\n }],\n }],\n \"url_redirect\": {\n \"path_redirect\": \"some/path\",\n \"redirect_response_code\": \"TEMPORARY_REDIRECT\",\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.BackendService(\"home\", new()\n {\n Name = \"home\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/someprefix\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"someheader\",\n ExactMatch = \"match this exactly\",\n InvertMatch = true,\n },\n },\n },\n },\n UrlRedirect = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleUrlRedirectArgs\n {\n PathRedirect = \"some/path\",\n RedirectResponseCode = \"TEMPORARY_REDIRECT\",\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewBackendService(ctx, \"home\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/someprefix\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"someheader\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"match this exactly\"),\n\t\t\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tUrlRedirect: \u0026compute.URLMapPathMatcherRouteRuleUrlRedirectArgs{\n\t\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"some/path\"),\n\t\t\t\t\t\t\t\tRedirectResponseCode: pulumi.String(\"TEMPORARY_REDIRECT\"),\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\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\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 HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new BackendService(\"home\", BackendServiceArgs.builder()\n .name(\"home\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .routeRules(URLMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/someprefix\")\n .headerMatches(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"someheader\")\n .exactMatch(\"match this exactly\")\n .invertMatch(true)\n .build())\n .build())\n .urlRedirect(URLMapPathMatcherRouteRuleUrlRedirectArgs.builder()\n .pathRedirect(\"some/path\")\n .redirectResponseCode(\"TEMPORARY_REDIRECT\")\n .build())\n .build())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n routeRules:\n - priority: 1\n matchRules:\n - prefixMatch: /someprefix\n headerMatches:\n - headerName: someheader\n exactMatch: match this exactly\n invertMatch: true\n urlRedirect:\n pathRedirect: some/path\n redirectResponseCode: TEMPORARY_REDIRECT\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:BackendService\n properties:\n name: home\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Traffic Director Path\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.BackendService(\"home\", {\n name: \"home\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [{\n paths: [\"/home\"],\n routeAction: {\n corsPolicy: {\n allowCredentials: true,\n allowHeaders: [\"Allowed content\"],\n allowMethods: [\"GET\"],\n allowOriginRegexes: [\"abc.*\"],\n allowOrigins: [\"Allowed origin\"],\n exposeHeaders: [\"Exposed header\"],\n maxAge: 30,\n disabled: false,\n },\n faultInjectionPolicy: {\n abort: {\n httpStatus: 234,\n percentage: 5.6,\n },\n delay: {\n fixedDelay: {\n seconds: \"0\",\n nanos: 50000,\n },\n percentage: 7.8,\n },\n },\n requestMirrorPolicy: {\n backendService: home.id,\n },\n retryPolicy: {\n numRetries: 4,\n perTryTimeout: {\n seconds: \"30\",\n },\n retryConditions: [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n timeout: {\n seconds: \"20\",\n nanos: 750000000,\n },\n urlRewrite: {\n hostRewrite: \"dev.example.com\",\n pathPrefixRewrite: \"/v1/api/\",\n },\n weightedBackendServices: [{\n backendService: home.id,\n weight: 400,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe\"],\n requestHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n }],\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.BackendService(\"home\",\n name=\"home\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\")\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"path_rules\": [{\n \"paths\": [\"/home\"],\n \"route_action\": {\n \"cors_policy\": {\n \"allow_credentials\": True,\n \"allow_headers\": [\"Allowed content\"],\n \"allow_methods\": [\"GET\"],\n \"allow_origin_regexes\": [\"abc.*\"],\n \"allow_origins\": [\"Allowed origin\"],\n \"expose_headers\": [\"Exposed header\"],\n \"max_age\": 30,\n \"disabled\": False,\n },\n \"fault_injection_policy\": {\n \"abort\": {\n \"http_status\": 234,\n \"percentage\": 5.6,\n },\n \"delay\": {\n \"fixed_delay\": {\n \"seconds\": \"0\",\n \"nanos\": 50000,\n },\n \"percentage\": 7.8,\n },\n },\n \"request_mirror_policy\": {\n \"backend_service\": home.id,\n },\n \"retry_policy\": {\n \"num_retries\": 4,\n \"per_try_timeout\": {\n \"seconds\": \"30\",\n },\n \"retry_conditions\": [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n \"timeout\": {\n \"seconds\": \"20\",\n \"nanos\": 750000000,\n },\n \"url_rewrite\": {\n \"host_rewrite\": \"dev.example.com\",\n \"path_prefix_rewrite\": \"/v1/api/\",\n },\n \"weighted_backend_services\": [{\n \"backend_service\": home.id,\n \"weight\": 400,\n \"header_action\": {\n \"request_headers_to_removes\": [\"RemoveMe\"],\n \"request_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": True,\n }],\n \"response_headers_to_removes\": [\"RemoveMe\"],\n \"response_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": False,\n }],\n },\n }],\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.BackendService(\"home\", new()\n {\n Name = \"home\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n RouteAction = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionArgs\n {\n CorsPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs\n {\n AllowCredentials = true,\n AllowHeaders = new[]\n {\n \"Allowed content\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n },\n AllowOriginRegexes = new[]\n {\n \"abc.*\",\n },\n AllowOrigins = new[]\n {\n \"Allowed origin\",\n },\n ExposeHeaders = new[]\n {\n \"Exposed header\",\n },\n MaxAge = 30,\n Disabled = false,\n },\n FaultInjectionPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs\n {\n Abort = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 234,\n Percentage = 5.6,\n },\n Delay = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs\n {\n Seconds = \"0\",\n Nanos = 50000,\n },\n Percentage = 7.8,\n },\n },\n RequestMirrorPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs\n {\n BackendService = home.Id,\n },\n RetryPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionRetryPolicyArgs\n {\n NumRetries = 4,\n PerTryTimeout = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs\n {\n Seconds = \"30\",\n },\n RetryConditions = new[]\n {\n \"5xx\",\n \"deadline-exceeded\",\n },\n },\n Timeout = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionTimeoutArgs\n {\n Seconds = \"20\",\n Nanos = 750000000,\n },\n UrlRewrite = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionUrlRewriteArgs\n {\n HostRewrite = \"dev.example.com\",\n PathPrefixRewrite = \"/v1/api/\",\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 400,\n HeaderAction = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewBackendService(ctx, \"home\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRouteAction: \u0026compute.URLMapPathMatcherPathRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tCorsPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed content\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOriginRegexes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"abc.*\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed origin\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Exposed header\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMaxAge: pulumi.Int(30),\n\t\t\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tFaultInjectionPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs{\n\t\t\t\t\t\t\t\t\tAbort: \u0026compute.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\t\t\t\t\tHttpStatus: pulumi.Int(234),\n\t\t\t\t\t\t\t\t\t\tPercentage: pulumi.Float64(5.6),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tDelay: \u0026compute.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\t\t\t\t\tFixedDelay: \u0026compute.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs{\n\t\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(50000),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tPercentage: pulumi.Float64(7.8),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRequestMirrorPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRetryPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionRetryPolicyArgs{\n\t\t\t\t\t\t\t\t\tNumRetries: pulumi.Int(4),\n\t\t\t\t\t\t\t\t\tPerTryTimeout: \u0026compute.URLMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs{\n\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"30\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"deadline-exceeded\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tTimeout: \u0026compute.URLMapPathMatcherPathRuleRouteActionTimeoutArgs{\n\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"20\"),\n\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(750000000),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.URLMapPathMatcherPathRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"dev.example.com\"),\n\t\t\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/v1/api/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tWeightedBackendServices: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t\t\tWeight: pulumi.Int(400),\n\t\t\t\t\t\t\t\t\t\tHeaderAction: \u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\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 HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new BackendService(\"home\", BackendServiceArgs.builder()\n .name(\"home\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .routeAction(URLMapPathMatcherPathRuleRouteActionArgs.builder()\n .corsPolicy(URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs.builder()\n .allowCredentials(true)\n .allowHeaders(\"Allowed content\")\n .allowMethods(\"GET\")\n .allowOriginRegexes(\"abc.*\")\n .allowOrigins(\"Allowed origin\")\n .exposeHeaders(\"Exposed header\")\n .maxAge(30)\n .disabled(false)\n .build())\n .faultInjectionPolicy(URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs.builder()\n .abort(URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(234)\n .percentage(5.6)\n .build())\n .delay(URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs.builder()\n .seconds(0)\n .nanos(50000)\n .build())\n .percentage(7.8)\n .build())\n .build())\n .requestMirrorPolicy(URLMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs.builder()\n .backendService(home.id())\n .build())\n .retryPolicy(URLMapPathMatcherPathRuleRouteActionRetryPolicyArgs.builder()\n .numRetries(4)\n .perTryTimeout(URLMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs.builder()\n .seconds(30)\n .build())\n .retryConditions( \n \"5xx\",\n \"deadline-exceeded\")\n .build())\n .timeout(URLMapPathMatcherPathRuleRouteActionTimeoutArgs.builder()\n .seconds(20)\n .nanos(750000000)\n .build())\n .urlRewrite(URLMapPathMatcherPathRuleRouteActionUrlRewriteArgs.builder()\n .hostRewrite(\"dev.example.com\")\n .pathPrefixRewrite(\"/v1/api/\")\n .build())\n .weightedBackendServices(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(400)\n .headerAction(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe\")\n .requestHeadersToAdds(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe\")\n .responseHeadersToAdds(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n routeAction:\n corsPolicy:\n allowCredentials: true\n allowHeaders:\n - Allowed content\n allowMethods:\n - GET\n allowOriginRegexes:\n - abc.*\n allowOrigins:\n - Allowed origin\n exposeHeaders:\n - Exposed header\n maxAge: 30\n disabled: false\n faultInjectionPolicy:\n abort:\n httpStatus: 234\n percentage: 5.6\n delay:\n fixedDelay:\n seconds: 0\n nanos: 50000\n percentage: 7.8\n requestMirrorPolicy:\n backendService: ${home.id}\n retryPolicy:\n numRetries: 4\n perTryTimeout:\n seconds: 30\n retryConditions:\n - 5xx\n - deadline-exceeded\n timeout:\n seconds: 20\n nanos: 7.5e+08\n urlRewrite:\n hostRewrite: dev.example.com\n pathPrefixRewrite: /v1/api/\n weightedBackendServices:\n - backendService: ${home.id}\n weight: 400\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe\n requestHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:BackendService\n properties:\n name: home\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Traffic Director Path Partial\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.BackendService(\"home\", {\n name: \"home\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [{\n paths: [\"/home\"],\n routeAction: {\n corsPolicy: {\n allowCredentials: true,\n allowHeaders: [\"Allowed content\"],\n allowMethods: [\"GET\"],\n allowOriginRegexes: [\"abc.*\"],\n allowOrigins: [\"Allowed origin\"],\n exposeHeaders: [\"Exposed header\"],\n maxAge: 30,\n disabled: false,\n },\n weightedBackendServices: [{\n backendService: home.id,\n weight: 400,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe\"],\n requestHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n }],\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.BackendService(\"home\",\n name=\"home\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\")\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"path_rules\": [{\n \"paths\": [\"/home\"],\n \"route_action\": {\n \"cors_policy\": {\n \"allow_credentials\": True,\n \"allow_headers\": [\"Allowed content\"],\n \"allow_methods\": [\"GET\"],\n \"allow_origin_regexes\": [\"abc.*\"],\n \"allow_origins\": [\"Allowed origin\"],\n \"expose_headers\": [\"Exposed header\"],\n \"max_age\": 30,\n \"disabled\": False,\n },\n \"weighted_backend_services\": [{\n \"backend_service\": home.id,\n \"weight\": 400,\n \"header_action\": {\n \"request_headers_to_removes\": [\"RemoveMe\"],\n \"request_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": True,\n }],\n \"response_headers_to_removes\": [\"RemoveMe\"],\n \"response_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": False,\n }],\n },\n }],\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\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 @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.BackendService(\"home\", new()\n {\n Name = \"home\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n RouteAction = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionArgs\n {\n CorsPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs\n {\n AllowCredentials = true,\n AllowHeaders = new[]\n {\n \"Allowed content\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n },\n AllowOriginRegexes = new[]\n {\n \"abc.*\",\n },\n AllowOrigins = new[]\n {\n \"Allowed origin\",\n },\n ExposeHeaders = new[]\n {\n \"Exposed header\",\n },\n MaxAge = 30,\n Disabled = false,\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 400,\n HeaderAction = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewBackendService(ctx, \"home\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRouteAction: \u0026compute.URLMapPathMatcherPathRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tCorsPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed content\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOriginRegexes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"abc.*\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed origin\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Exposed header\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMaxAge: pulumi.Int(30),\n\t\t\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tWeightedBackendServices: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t\t\tWeight: pulumi.Int(400),\n\t\t\t\t\t\t\t\t\t\tHeaderAction: \u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\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.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\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 HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new BackendService(\"home\", BackendServiceArgs.builder()\n .name(\"home\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .routeAction(URLMapPathMatcherPathRuleRouteActionArgs.builder()\n .corsPolicy(URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs.builder()\n .allowCredentials(true)\n .allowHeaders(\"Allowed content\")\n .allowMethods(\"GET\")\n .allowOriginRegexes(\"abc.*\")\n .allowOrigins(\"Allowed origin\")\n .exposeHeaders(\"Exposed header\")\n .maxAge(30)\n .disabled(false)\n .build())\n .weightedBackendServices(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(400)\n .headerAction(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe\")\n .requestHeadersToAdds(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe\")\n .responseHeadersToAdds(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n routeAction:\n corsPolicy:\n allowCredentials: true\n allowHeaders:\n - Allowed content\n allowMethods:\n - GET\n allowOriginRegexes:\n - abc.*\n allowOrigins:\n - Allowed origin\n exposeHeaders:\n - Exposed header\n maxAge: 30\n disabled: false\n weightedBackendServices:\n - backendService: ${home.id}\n weight: 400\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe\n requestHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:BackendService\n properties:\n name: home\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Header Based Routing\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"default\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst service_a = new gcp.compute.BackendService(\"service-a\", {\n name: \"service-a\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst service_b = new gcp.compute.BackendService(\"service-b\", {\n name: \"service-b\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"header-based routing example\",\n defaultService: _default.id,\n hostRules: [{\n hosts: [\"*\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: _default.id,\n routeRules: [\n {\n priority: 1,\n service: service_a.id,\n matchRules: [{\n prefixMatch: \"/\",\n ignoreCase: true,\n headerMatches: [{\n headerName: \"abtest\",\n exactMatch: \"a\",\n }],\n }],\n },\n {\n priority: 2,\n service: service_b.id,\n matchRules: [{\n ignoreCase: true,\n prefixMatch: \"/\",\n headerMatches: [{\n headerName: \"abtest\",\n exactMatch: \"b\",\n }],\n }],\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"default\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nservice_a = gcp.compute.BackendService(\"service-a\",\n name=\"service-a\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nservice_b = gcp.compute.BackendService(\"service-b\",\n name=\"service-b\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"header-based routing example\",\n default_service=default.id,\n host_rules=[{\n \"hosts\": [\"*\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default.id,\n \"route_rules\": [\n {\n \"priority\": 1,\n \"service\": service_a.id,\n \"match_rules\": [{\n \"prefix_match\": \"/\",\n \"ignore_case\": True,\n \"header_matches\": [{\n \"header_name\": \"abtest\",\n \"exact_match\": \"a\",\n }],\n }],\n },\n {\n \"priority\": 2,\n \"service\": service_b.id,\n \"match_rules\": [{\n \"ignore_case\": True,\n \"prefix_match\": \"/\",\n \"header_matches\": [{\n \"header_name\": \"abtest\",\n \"exact_match\": \"b\",\n }],\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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"default\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var service_a = new Gcp.Compute.BackendService(\"service-a\", new()\n {\n Name = \"service-a\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var service_b = new Gcp.Compute.BackendService(\"service-b\", new()\n {\n Name = \"service-b\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"header-based routing example\",\n DefaultService = @default.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"*\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = @default.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n Service = service_a.Id,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n IgnoreCase = true,\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"abtest\",\n ExactMatch = \"a\",\n },\n },\n },\n },\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 2,\n Service = service_b.Id,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n IgnoreCase = true,\n PrefixMatch = \"/\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"abtest\",\n ExactMatch = \"b\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"service-a\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"service-a\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"service-b\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"service-b\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"header-based routing example\"),\n\t\t\tDefaultService: _default.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: _default.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tService: service_a.ID(),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"abtest\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"a\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(2),\n\t\t\t\t\t\t\tService: service_b.ID(),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"abtest\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"b\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"default\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var service_a = new BackendService(\"service-a\", BackendServiceArgs.builder()\n .name(\"service-a\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var service_b = new BackendService(\"service-b\", BackendServiceArgs.builder()\n .name(\"service-b\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"header-based routing example\")\n .defaultService(default_.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"*\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(default_.id())\n .routeRules( \n URLMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .service(service_a.id())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .ignoreCase(true)\n .headerMatches(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"abtest\")\n .exactMatch(\"a\")\n .build())\n .build())\n .build(),\n URLMapPathMatcherRouteRuleArgs.builder()\n .priority(2)\n .service(service_b.id())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .ignoreCase(true)\n .prefixMatch(\"/\")\n .headerMatches(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"abtest\")\n .exactMatch(\"b\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: header-based routing example\n defaultService: ${default.id}\n hostRules:\n - hosts:\n - '*'\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${default.id}\n routeRules:\n - priority: 1\n service: ${[\"service-a\"].id}\n matchRules:\n - prefixMatch: /\n ignoreCase: true\n headerMatches:\n - headerName: abtest\n exactMatch: a\n - priority: 2\n service: ${[\"service-b\"].id}\n matchRules:\n - ignoreCase: true\n prefixMatch: /\n headerMatches:\n - headerName: abtest\n exactMatch: b\n default:\n type: gcp:compute:BackendService\n properties:\n name: default\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n service-a:\n type: gcp:compute:BackendService\n properties:\n name: service-a\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n service-b:\n type: gcp:compute:BackendService\n properties:\n name: service-b\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Parameter Based Routing\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"default\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst service_a = new gcp.compute.BackendService(\"service-a\", {\n name: \"service-a\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst service_b = new gcp.compute.BackendService(\"service-b\", {\n name: \"service-b\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"parameter-based routing example\",\n defaultService: _default.id,\n hostRules: [{\n hosts: [\"*\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: _default.id,\n routeRules: [\n {\n priority: 1,\n service: service_a.id,\n matchRules: [{\n prefixMatch: \"/\",\n ignoreCase: true,\n queryParameterMatches: [{\n name: \"abtest\",\n exactMatch: \"a\",\n }],\n }],\n },\n {\n priority: 2,\n service: service_b.id,\n matchRules: [{\n ignoreCase: true,\n prefixMatch: \"/\",\n queryParameterMatches: [{\n name: \"abtest\",\n exactMatch: \"b\",\n }],\n }],\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"default\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nservice_a = gcp.compute.BackendService(\"service-a\",\n name=\"service-a\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nservice_b = gcp.compute.BackendService(\"service-b\",\n name=\"service-b\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"parameter-based routing example\",\n default_service=default.id,\n host_rules=[{\n \"hosts\": [\"*\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default.id,\n \"route_rules\": [\n {\n \"priority\": 1,\n \"service\": service_a.id,\n \"match_rules\": [{\n \"prefix_match\": \"/\",\n \"ignore_case\": True,\n \"query_parameter_matches\": [{\n \"name\": \"abtest\",\n \"exact_match\": \"a\",\n }],\n }],\n },\n {\n \"priority\": 2,\n \"service\": service_b.id,\n \"match_rules\": [{\n \"ignore_case\": True,\n \"prefix_match\": \"/\",\n \"query_parameter_matches\": [{\n \"name\": \"abtest\",\n \"exact_match\": \"b\",\n }],\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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"default\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var service_a = new Gcp.Compute.BackendService(\"service-a\", new()\n {\n Name = \"service-a\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var service_b = new Gcp.Compute.BackendService(\"service-b\", new()\n {\n Name = \"service-b\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"parameter-based routing example\",\n DefaultService = @default.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"*\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = @default.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n Service = service_a.Id,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n IgnoreCase = true,\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"abtest\",\n ExactMatch = \"a\",\n },\n },\n },\n },\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 2,\n Service = service_b.Id,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n IgnoreCase = true,\n PrefixMatch = \"/\",\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"abtest\",\n ExactMatch = \"b\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"service-a\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"service-a\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"service-b\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"service-b\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"parameter-based routing example\"),\n\t\t\tDefaultService: _default.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: _default.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tService: service_a.ID(),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"abtest\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"a\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(2),\n\t\t\t\t\t\t\tService: service_b.ID(),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"abtest\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"b\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"default\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var service_a = new BackendService(\"service-a\", BackendServiceArgs.builder()\n .name(\"service-a\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var service_b = new BackendService(\"service-b\", BackendServiceArgs.builder()\n .name(\"service-b\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"parameter-based routing example\")\n .defaultService(default_.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"*\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(default_.id())\n .routeRules( \n URLMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .service(service_a.id())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .ignoreCase(true)\n .queryParameterMatches(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"abtest\")\n .exactMatch(\"a\")\n .build())\n .build())\n .build(),\n URLMapPathMatcherRouteRuleArgs.builder()\n .priority(2)\n .service(service_b.id())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .ignoreCase(true)\n .prefixMatch(\"/\")\n .queryParameterMatches(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"abtest\")\n .exactMatch(\"b\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: parameter-based routing example\n defaultService: ${default.id}\n hostRules:\n - hosts:\n - '*'\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${default.id}\n routeRules:\n - priority: 1\n service: ${[\"service-a\"].id}\n matchRules:\n - prefixMatch: /\n ignoreCase: true\n queryParameterMatches:\n - name: abtest\n exactMatch: a\n - priority: 2\n service: ${[\"service-b\"].id}\n matchRules:\n - ignoreCase: true\n prefixMatch: /\n queryParameterMatches:\n - name: abtest\n exactMatch: b\n default:\n type: gcp:compute:BackendService\n properties:\n name: default\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n service-a:\n type: gcp:compute:BackendService\n properties:\n name: service-a\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n service-b:\n type: gcp:compute:BackendService\n properties:\n name: service-b\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Path Template Match\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst cart_backend = new gcp.compute.BackendService(\"cart-backend\", {\n name: \"cart-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst user_backend = new gcp.compute.BackendService(\"user-backend\", {\n name: \"user-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst staticBucket = new gcp.storage.Bucket(\"static\", {\n name: \"static-asset-bucket\",\n location: \"US\",\n});\nconst static = new gcp.compute.BackendBucket(\"static\", {\n name: \"static-asset-backend-bucket\",\n bucketName: staticBucket.name,\n enableCdn: true,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: static.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"mysite\",\n }],\n pathMatchers: [{\n name: \"mysite\",\n defaultService: static.id,\n routeRules: [\n {\n matchRules: [{\n pathTemplateMatch: \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n }],\n service: cart_backend.id,\n priority: 1,\n routeAction: {\n urlRewrite: {\n pathTemplateRewrite: \"/{username}-{cartid}/\",\n },\n },\n },\n {\n matchRules: [{\n pathTemplateMatch: \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n }],\n service: user_backend.id,\n priority: 2,\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ncart_backend = gcp.compute.BackendService(\"cart-backend\",\n name=\"cart-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nuser_backend = gcp.compute.BackendService(\"user-backend\",\n name=\"user-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nstatic_bucket = gcp.storage.Bucket(\"static\",\n name=\"static-asset-bucket\",\n location=\"US\")\nstatic = gcp.compute.BackendBucket(\"static\",\n name=\"static-asset-backend-bucket\",\n bucket_name=static_bucket.name,\n enable_cdn=True)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=static.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"mysite\",\n }],\n path_matchers=[{\n \"name\": \"mysite\",\n \"default_service\": static.id,\n \"route_rules\": [\n {\n \"match_rules\": [{\n \"path_template_match\": \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n }],\n \"service\": cart_backend.id,\n \"priority\": 1,\n \"route_action\": {\n \"url_rewrite\": {\n \"path_template_rewrite\": \"/{username}-{cartid}/\",\n },\n },\n },\n {\n \"match_rules\": [{\n \"path_template_match\": \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n }],\n \"service\": user_backend.id,\n \"priority\": 2,\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 @default = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var cart_backend = new Gcp.Compute.BackendService(\"cart-backend\", new()\n {\n Name = \"cart-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var user_backend = new Gcp.Compute.BackendService(\"user-backend\", new()\n {\n Name = \"user-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var staticBucket = new Gcp.Storage.Bucket(\"static\", new()\n {\n Name = \"static-asset-bucket\",\n Location = \"US\",\n });\n\n var @static = new Gcp.Compute.BackendBucket(\"static\", new()\n {\n Name = \"static-asset-backend-bucket\",\n BucketName = staticBucket.Name,\n EnableCdn = true,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = @static.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"mysite\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"mysite\",\n DefaultService = @static.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n },\n },\n Service = cart_backend.Id,\n Priority = 1,\n RouteAction = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleRouteActionArgs\n {\n UrlRewrite = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleRouteActionUrlRewriteArgs\n {\n PathTemplateRewrite = \"/{username}-{cartid}/\",\n },\n },\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n },\n },\n Service = user_backend.Id,\n Priority = 2,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"cart-backend\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"cart-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"user-backend\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"user-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstaticBucket, err := storage.NewBucket(ctx, \"static\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-bucket\"),\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\tstatic, err := compute.NewBackendBucket(ctx, \"static\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-backend-bucket\"),\n\t\t\tBucketName: staticBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: static.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"mysite\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"mysite\"),\n\t\t\t\t\tDefaultService: static.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: cart_backend.ID(),\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tRouteAction: \u0026compute.URLMapPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.URLMapPathMatcherRouteRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateRewrite: pulumi.String(\"/{username}-{cartid}/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/xyzwebservices/v2/xyz/users/*/accountinfo/*\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: user_backend.ID(),\n\t\t\t\t\t\t\tPriority: pulumi.Int(2),\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.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\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 HttpHealthCheck(\"default\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var cart_backend = new BackendService(\"cart-backend\", BackendServiceArgs.builder()\n .name(\"cart-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var user_backend = new BackendService(\"user-backend\", BackendServiceArgs.builder()\n .name(\"user-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var staticBucket = new Bucket(\"staticBucket\", BucketArgs.builder()\n .name(\"static-asset-bucket\")\n .location(\"US\")\n .build());\n\n var static_ = new BackendBucket(\"static\", BackendBucketArgs.builder()\n .name(\"static-asset-backend-bucket\")\n .bucketName(staticBucket.name())\n .enableCdn(true)\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(static_.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"mysite\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"mysite\")\n .defaultService(static_.id())\n .routeRules( \n URLMapPathMatcherRouteRuleArgs.builder()\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\")\n .build())\n .service(cart_backend.id())\n .priority(1)\n .routeAction(URLMapPathMatcherRouteRuleRouteActionArgs.builder()\n .urlRewrite(URLMapPathMatcherRouteRuleRouteActionUrlRewriteArgs.builder()\n .pathTemplateRewrite(\"/{username}-{cartid}/\")\n .build())\n .build())\n .build(),\n URLMapPathMatcherRouteRuleArgs.builder()\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/xyzwebservices/v2/xyz/users/*/accountinfo/*\")\n .build())\n .service(user_backend.id())\n .priority(2)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${static.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: mysite\n pathMatchers:\n - name: mysite\n defaultService: ${static.id}\n routeRules:\n - matchRules:\n - pathTemplateMatch: /xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\n service: ${[\"cart-backend\"].id}\n priority: 1\n routeAction:\n urlRewrite:\n pathTemplateRewrite: /{username}-{cartid}/\n - matchRules:\n - pathTemplateMatch: /xyzwebservices/v2/xyz/users/*/accountinfo/*\n service: ${[\"user-backend\"].id}\n priority: 2\n cart-backend:\n type: gcp:compute:BackendService\n properties:\n name: cart-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n user-backend:\n type: gcp:compute:BackendService\n properties:\n name: user-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n default:\n type: gcp:compute:HttpHealthCheck\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n static:\n type: gcp:compute:BackendBucket\n properties:\n name: static-asset-backend-bucket\n bucketName: ${staticBucket.name}\n enableCdn: true\n staticBucket:\n type: gcp:storage:Bucket\n name: static\n properties:\n name: static-asset-bucket\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Custom Error Response Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst example = new gcp.compute.BackendService(\"example\", {\n name: \"login\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst errorBucket = new gcp.storage.Bucket(\"error\", {\n name: \"static-asset-bucket\",\n location: \"US\",\n});\nconst error = new gcp.compute.BackendBucket(\"error\", {\n name: \"error-backend-bucket\",\n bucketName: errorBucket.name,\n enableCdn: true,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: example.id,\n defaultCustomErrorResponsePolicy: {\n errorResponseRules: [{\n matchResponseCodes: [\"5xx\"],\n path: \"/*\",\n overrideResponseCode: 502,\n }],\n errorService: error.id,\n },\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"mysite\",\n }],\n pathMatchers: [{\n name: \"mysite\",\n defaultService: example.id,\n defaultCustomErrorResponsePolicy: {\n errorResponseRules: [\n {\n matchResponseCodes: [\n \"4xx\",\n \"5xx\",\n ],\n path: \"/login\",\n overrideResponseCode: 404,\n },\n {\n matchResponseCodes: [\"503\"],\n path: \"/example\",\n overrideResponseCode: 502,\n },\n ],\n errorService: error.id,\n },\n pathRules: [{\n paths: [\"/*\"],\n service: example.id,\n customErrorResponsePolicy: {\n errorResponseRules: [{\n matchResponseCodes: [\"4xx\"],\n path: \"/register\",\n overrideResponseCode: 401,\n }],\n errorService: error.id,\n },\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\nexample = gcp.compute.BackendService(\"example\",\n name=\"login\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nerror_bucket = gcp.storage.Bucket(\"error\",\n name=\"static-asset-bucket\",\n location=\"US\")\nerror = gcp.compute.BackendBucket(\"error\",\n name=\"error-backend-bucket\",\n bucket_name=error_bucket.name,\n enable_cdn=True)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=example.id,\n default_custom_error_response_policy={\n \"error_response_rules\": [{\n \"match_response_codes\": [\"5xx\"],\n \"path\": \"/*\",\n \"override_response_code\": 502,\n }],\n \"error_service\": error.id,\n },\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"mysite\",\n }],\n path_matchers=[{\n \"name\": \"mysite\",\n \"default_service\": example.id,\n \"default_custom_error_response_policy\": {\n \"error_response_rules\": [\n {\n \"match_response_codes\": [\n \"4xx\",\n \"5xx\",\n ],\n \"path\": \"/login\",\n \"override_response_code\": 404,\n },\n {\n \"match_response_codes\": [\"503\"],\n \"path\": \"/example\",\n \"override_response_code\": 502,\n },\n ],\n \"error_service\": error.id,\n },\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": example.id,\n \"custom_error_response_policy\": {\n \"error_response_rules\": [{\n \"match_response_codes\": [\"4xx\"],\n \"path\": \"/register\",\n \"override_response_code\": 401,\n }],\n \"error_service\": error.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 @default = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var example = new Gcp.Compute.BackendService(\"example\", new()\n {\n Name = \"login\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var errorBucket = new Gcp.Storage.Bucket(\"error\", new()\n {\n Name = \"static-asset-bucket\",\n Location = \"US\",\n });\n\n var error = new Gcp.Compute.BackendBucket(\"error\", new()\n {\n Name = \"error-backend-bucket\",\n BucketName = errorBucket.Name,\n EnableCdn = true,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = example.Id,\n DefaultCustomErrorResponsePolicy = new Gcp.Compute.Inputs.URLMapDefaultCustomErrorResponsePolicyArgs\n {\n ErrorResponseRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapDefaultCustomErrorResponsePolicyErrorResponseRuleArgs\n {\n MatchResponseCodes = new[]\n {\n \"5xx\",\n },\n Path = \"/*\",\n OverrideResponseCode = 502,\n },\n },\n ErrorService = error.Id,\n },\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"mysite\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"mysite\",\n DefaultService = example.Id,\n DefaultCustomErrorResponsePolicy = new Gcp.Compute.Inputs.URLMapPathMatcherDefaultCustomErrorResponsePolicyArgs\n {\n ErrorResponseRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs\n {\n MatchResponseCodes = new[]\n {\n \"4xx\",\n \"5xx\",\n },\n Path = \"/login\",\n OverrideResponseCode = 404,\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs\n {\n MatchResponseCodes = new[]\n {\n \"503\",\n },\n Path = \"/example\",\n OverrideResponseCode = 502,\n },\n },\n ErrorService = error.Id,\n },\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = example.Id,\n CustomErrorResponsePolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleCustomErrorResponsePolicyArgs\n {\n ErrorResponseRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRuleArgs\n {\n MatchResponseCodes = new[]\n {\n \"4xx\",\n },\n Path = \"/register\",\n OverrideResponseCode = 401,\n },\n },\n ErrorService = error.Id,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := compute.NewBackendService(ctx, \"example\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"login\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terrorBucket, err := storage.NewBucket(ctx, \"error\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-bucket\"),\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\terror, err := compute.NewBackendBucket(ctx, \"error\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"error-backend-bucket\"),\n\t\t\tBucketName: errorBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: example.ID(),\n\t\t\tDefaultCustomErrorResponsePolicy: \u0026compute.URLMapDefaultCustomErrorResponsePolicyArgs{\n\t\t\t\tErrorResponseRules: compute.URLMapDefaultCustomErrorResponsePolicyErrorResponseRuleArray{\n\t\t\t\t\t\u0026compute.URLMapDefaultCustomErrorResponsePolicyErrorResponseRuleArgs{\n\t\t\t\t\t\tMatchResponseCodes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPath: pulumi.String(\"/*\"),\n\t\t\t\t\t\tOverrideResponseCode: pulumi.Int(502),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tErrorService: error.ID(),\n\t\t\t},\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"mysite\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"mysite\"),\n\t\t\t\t\tDefaultService: example.ID(),\n\t\t\t\t\tDefaultCustomErrorResponsePolicy: \u0026compute.URLMapPathMatcherDefaultCustomErrorResponsePolicyArgs{\n\t\t\t\t\t\tErrorResponseRules: compute.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArray{\n\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs{\n\t\t\t\t\t\t\t\tMatchResponseCodes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"4xx\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/login\"),\n\t\t\t\t\t\t\t\tOverrideResponseCode: pulumi.Int(404),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs{\n\t\t\t\t\t\t\t\tMatchResponseCodes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"503\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/example\"),\n\t\t\t\t\t\t\t\tOverrideResponseCode: pulumi.Int(502),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tErrorService: error.ID(),\n\t\t\t\t\t},\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: example.ID(),\n\t\t\t\t\t\t\tCustomErrorResponsePolicy: \u0026compute.URLMapPathMatcherPathRuleCustomErrorResponsePolicyArgs{\n\t\t\t\t\t\t\t\tErrorResponseRules: compute.URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRuleArgs{\n\t\t\t\t\t\t\t\t\t\tMatchResponseCodes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"4xx\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"/register\"),\n\t\t\t\t\t\t\t\t\t\tOverrideResponseCode: pulumi.Int(401),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tErrorService: error.ID(),\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.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapDefaultCustomErrorResponsePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherDefaultCustomErrorResponsePolicyArgs;\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 HttpHealthCheck(\"default\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var example = new BackendService(\"example\", BackendServiceArgs.builder()\n .name(\"login\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var errorBucket = new Bucket(\"errorBucket\", BucketArgs.builder()\n .name(\"static-asset-bucket\")\n .location(\"US\")\n .build());\n\n var error = new BackendBucket(\"error\", BackendBucketArgs.builder()\n .name(\"error-backend-bucket\")\n .bucketName(errorBucket.name())\n .enableCdn(true)\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(example.id())\n .defaultCustomErrorResponsePolicy(URLMapDefaultCustomErrorResponsePolicyArgs.builder()\n .errorResponseRules(URLMapDefaultCustomErrorResponsePolicyErrorResponseRuleArgs.builder()\n .matchResponseCodes(\"5xx\")\n .path(\"/*\")\n .overrideResponseCode(502)\n .build())\n .errorService(error.id())\n .build())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"mysite\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"mysite\")\n .defaultService(example.id())\n .defaultCustomErrorResponsePolicy(URLMapPathMatcherDefaultCustomErrorResponsePolicyArgs.builder()\n .errorResponseRules( \n URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs.builder()\n .matchResponseCodes( \n \"4xx\",\n \"5xx\")\n .path(\"/login\")\n .overrideResponseCode(404)\n .build(),\n URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs.builder()\n .matchResponseCodes(\"503\")\n .path(\"/example\")\n .overrideResponseCode(502)\n .build())\n .errorService(error.id())\n .build())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(example.id())\n .customErrorResponsePolicy(URLMapPathMatcherPathRuleCustomErrorResponsePolicyArgs.builder()\n .errorResponseRules(URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRuleArgs.builder()\n .matchResponseCodes(\"4xx\")\n .path(\"/register\")\n .overrideResponseCode(401)\n .build())\n .errorService(error.id())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${example.id}\n defaultCustomErrorResponsePolicy:\n errorResponseRules:\n - matchResponseCodes:\n - 5xx\n path: /*\n overrideResponseCode: 502\n errorService: ${error.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: mysite\n pathMatchers:\n - name: mysite\n defaultService: ${example.id}\n defaultCustomErrorResponsePolicy:\n errorResponseRules:\n - matchResponseCodes:\n - 4xx\n - 5xx\n path: /login\n overrideResponseCode: 404\n - matchResponseCodes:\n - '503'\n path: /example\n overrideResponseCode: 502\n errorService: ${error.id}\n pathRules:\n - paths:\n - /*\n service: ${example.id}\n customErrorResponsePolicy:\n errorResponseRules:\n - matchResponseCodes:\n - 4xx\n path: /register\n overrideResponseCode: 401\n errorService: ${error.id}\n example:\n type: gcp:compute:BackendService\n properties:\n name: login\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n default:\n type: gcp:compute:HttpHealthCheck\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n error:\n type: gcp:compute:BackendBucket\n properties:\n name: error-backend-bucket\n bucketName: ${errorBucket.name}\n enableCdn: true\n errorBucket:\n type: gcp:storage:Bucket\n name: error\n properties:\n name: static-asset-bucket\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUrlMap can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/urlMaps/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, UrlMap can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/uRLMap:URLMap default projects/{{project}}/global/urlMaps/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/uRLMap:URLMap default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/uRLMap:URLMap default {{name}}\n```\n\n", "properties": { "creationTimestamp": { "type": "string", @@ -166382,7 +166382,7 @@ } }, "gcp:container/attachedCluster:AttachedCluster": { - "description": "An Anthos cluster running on customer owned infrastructure.\n\n\nTo get more information about Cluster, see:\n\n* [API documentation](https://cloud.google.com/anthos/clusters/docs/multi-cloud/reference/rest)\n* How-to Guides\n * [API reference](https://cloud.google.com/anthos/clusters/docs/multi-cloud/reference/rest/v1/projects.locations.attachedClusters)\n * [Multicloud overview](https://cloud.google.com/anthos/clusters/docs/multi-cloud)\n\n## Example Usage\n\n### Container Attached Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst versions = project.then(project =\u003e gcp.container.getAttachedVersions({\n location: \"us-west1\",\n project: project.projectId,\n}));\nconst primary = new gcp.container.AttachedCluster(\"primary\", {\n name: \"basic\",\n location: \"us-west1\",\n project: project.then(project =\u003e project.projectId),\n description: \"Test cluster\",\n distribution: \"aks\",\n oidcConfig: {\n issuerUrl: \"https://oidc.issuer.url\",\n },\n platformVersion: versions.then(versions =\u003e versions.validVersions?.[0]),\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nversions = gcp.container.get_attached_versions(location=\"us-west1\",\n project=project.project_id)\nprimary = gcp.container.AttachedCluster(\"primary\",\n name=\"basic\",\n location=\"us-west1\",\n project=project.project_id,\n description=\"Test cluster\",\n distribution=\"aks\",\n oidc_config={\n \"issuerUrl\": \"https://oidc.issuer.url\",\n },\n platform_version=versions.valid_versions[0],\n fleet={\n \"project\": f\"projects/{project.number}\",\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 versions = Gcp.Container.GetAttachedVersions.Invoke(new()\n {\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n });\n\n var primary = new Gcp.Container.AttachedCluster(\"primary\", new()\n {\n Name = \"basic\",\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Description = \"Test cluster\",\n Distribution = \"aks\",\n OidcConfig = new Gcp.Container.Inputs.AttachedClusterOidcConfigArgs\n {\n IssuerUrl = \"https://oidc.issuer.url\",\n },\n PlatformVersion = versions.Apply(getAttachedVersionsResult =\u003e getAttachedVersionsResult.ValidVersions[0]),\n Fleet = new Gcp.Container.Inputs.AttachedClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tversions, err := container.GetAttachedVersions(ctx, \u0026container.GetAttachedVersionsArgs{\n\t\t\tLocation: \"us-west1\",\n\t\t\tProject: project.ProjectId,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAttachedCluster(ctx, \"primary\", \u0026container.AttachedClusterArgs{\n\t\t\tName: pulumi.String(\"basic\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tDescription: pulumi.String(\"Test cluster\"),\n\t\t\tDistribution: pulumi.String(\"aks\"),\n\t\t\tOidcConfig: \u0026container.AttachedClusterOidcConfigArgs{\n\t\t\t\tIssuerUrl: pulumi.String(\"https://oidc.issuer.url\"),\n\t\t\t},\n\t\t\tPlatformVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tFleet: \u0026container.AttachedClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAttachedVersionsArgs;\nimport com.pulumi.gcp.container.AttachedCluster;\nimport com.pulumi.gcp.container.AttachedClusterArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterOidcConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterFleetArgs;\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 final var versions = ContainerFunctions.getAttachedVersions(GetAttachedVersionsArgs.builder()\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build());\n\n var primary = new AttachedCluster(\"primary\", AttachedClusterArgs.builder()\n .name(\"basic\")\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .description(\"Test cluster\")\n .distribution(\"aks\")\n .oidcConfig(AttachedClusterOidcConfigArgs.builder()\n .issuerUrl(\"https://oidc.issuer.url\")\n .build())\n .platformVersion(versions.applyValue(getAttachedVersionsResult -\u003e getAttachedVersionsResult.validVersions()[0]))\n .fleet(AttachedClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AttachedCluster\n properties:\n name: basic\n location: us-west1\n project: ${project.projectId}\n description: Test cluster\n distribution: aks\n oidcConfig:\n issuerUrl: https://oidc.issuer.url\n platformVersion: ${versions.validVersions[0]}\n fleet:\n project: projects/${project.number}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n versions:\n fn::invoke:\n Function: gcp:container:getAttachedVersions\n Arguments:\n location: us-west1\n project: ${project.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Container Attached Cluster Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst versions = project.then(project =\u003e gcp.container.getAttachedVersions({\n location: \"us-west1\",\n project: project.projectId,\n}));\nconst primary = new gcp.container.AttachedCluster(\"primary\", {\n name: \"basic\",\n project: project.then(project =\u003e project.projectId),\n location: \"us-west1\",\n description: \"Test cluster\",\n distribution: \"aks\",\n annotations: {\n \"label-one\": \"value-one\",\n },\n authorization: {\n adminUsers: [\n \"user1@example.com\",\n \"user2@example.com\",\n ],\n adminGroups: [\n \"group1@example.com\",\n \"group2@example.com\",\n ],\n },\n oidcConfig: {\n issuerUrl: \"https://oidc.issuer.url\",\n jwks: std.base64encode({\n input: \"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\",\n }).then(invoke =\u003e invoke.result),\n },\n platformVersion: versions.then(versions =\u003e versions.validVersions?.[0]),\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n loggingConfig: {\n componentConfig: {\n enableComponents: [\n \"SYSTEM_COMPONENTS\",\n \"WORKLOADS\",\n ],\n },\n },\n monitoringConfig: {\n managedPrometheusConfig: {\n enabled: true,\n },\n },\n binaryAuthorization: {\n evaluationMode: \"PROJECT_SINGLETON_POLICY_ENFORCE\",\n },\n proxyConfig: {\n kubernetesSecret: {\n name: \"proxy-config\",\n namespace: \"default\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\nversions = gcp.container.get_attached_versions(location=\"us-west1\",\n project=project.project_id)\nprimary = gcp.container.AttachedCluster(\"primary\",\n name=\"basic\",\n project=project.project_id,\n location=\"us-west1\",\n description=\"Test cluster\",\n distribution=\"aks\",\n annotations={\n \"label-one\": \"value-one\",\n },\n authorization={\n \"adminUsers\": [\n \"user1@example.com\",\n \"user2@example.com\",\n ],\n \"adminGroups\": [\n \"group1@example.com\",\n \"group2@example.com\",\n ],\n },\n oidc_config={\n \"issuerUrl\": \"https://oidc.issuer.url\",\n \"jwks\": std.base64encode(input=\"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\").result,\n },\n platform_version=versions.valid_versions[0],\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n logging_config={\n \"componentConfig\": {\n \"enableComponents\": [\n \"SYSTEM_COMPONENTS\",\n \"WORKLOADS\",\n ],\n },\n },\n monitoring_config={\n \"managedPrometheusConfig\": {\n \"enabled\": True,\n },\n },\n binary_authorization={\n \"evaluationMode\": \"PROJECT_SINGLETON_POLICY_ENFORCE\",\n },\n proxy_config={\n \"kubernetesSecret\": {\n \"name\": \"proxy-config\",\n \"namespace\": \"default\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var versions = Gcp.Container.GetAttachedVersions.Invoke(new()\n {\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n });\n\n var primary = new Gcp.Container.AttachedCluster(\"primary\", new()\n {\n Name = \"basic\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Location = \"us-west1\",\n Description = \"Test cluster\",\n Distribution = \"aks\",\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Authorization = new Gcp.Container.Inputs.AttachedClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n \"user1@example.com\",\n \"user2@example.com\",\n },\n AdminGroups = new[]\n {\n \"group1@example.com\",\n \"group2@example.com\",\n },\n },\n OidcConfig = new Gcp.Container.Inputs.AttachedClusterOidcConfigArgs\n {\n IssuerUrl = \"https://oidc.issuer.url\",\n Jwks = Std.Base64encode.Invoke(new()\n {\n Input = \"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n PlatformVersion = versions.Apply(getAttachedVersionsResult =\u003e getAttachedVersionsResult.ValidVersions[0]),\n Fleet = new Gcp.Container.Inputs.AttachedClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n LoggingConfig = new Gcp.Container.Inputs.AttachedClusterLoggingConfigArgs\n {\n ComponentConfig = new Gcp.Container.Inputs.AttachedClusterLoggingConfigComponentConfigArgs\n {\n EnableComponents = new[]\n {\n \"SYSTEM_COMPONENTS\",\n \"WORKLOADS\",\n },\n },\n },\n MonitoringConfig = new Gcp.Container.Inputs.AttachedClusterMonitoringConfigArgs\n {\n ManagedPrometheusConfig = new Gcp.Container.Inputs.AttachedClusterMonitoringConfigManagedPrometheusConfigArgs\n {\n Enabled = true,\n },\n },\n BinaryAuthorization = new Gcp.Container.Inputs.AttachedClusterBinaryAuthorizationArgs\n {\n EvaluationMode = \"PROJECT_SINGLETON_POLICY_ENFORCE\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AttachedClusterProxyConfigArgs\n {\n KubernetesSecret = new Gcp.Container.Inputs.AttachedClusterProxyConfigKubernetesSecretArgs\n {\n Name = \"proxy-config\",\n Namespace = \"default\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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\tversions, err := container.GetAttachedVersions(ctx, \u0026container.GetAttachedVersionsArgs{\n\t\t\tLocation: \"us-west1\",\n\t\t\tProject: project.ProjectId,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAttachedCluster(ctx, \"primary\", \u0026container.AttachedClusterArgs{\n\t\t\tName: pulumi.String(\"basic\"),\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tDescription: pulumi.String(\"Test cluster\"),\n\t\t\tDistribution: pulumi.String(\"aks\"),\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.AttachedClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"user1@example.com\"),\n\t\t\t\t\tpulumi.String(\"user2@example.com\"),\n\t\t\t\t},\n\t\t\t\tAdminGroups: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"group1@example.com\"),\n\t\t\t\t\tpulumi.String(\"group2@example.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOidcConfig: \u0026container.AttachedClusterOidcConfigArgs{\n\t\t\t\tIssuerUrl: pulumi.String(\"https://oidc.issuer.url\"),\n\t\t\t\tJwks: invokeBase64encode.Result,\n\t\t\t},\n\t\t\tPlatformVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tFleet: \u0026container.AttachedClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t},\n\t\t\tLoggingConfig: \u0026container.AttachedClusterLoggingConfigArgs{\n\t\t\t\tComponentConfig: \u0026container.AttachedClusterLoggingConfigComponentConfigArgs{\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\tMonitoringConfig: \u0026container.AttachedClusterMonitoringConfigArgs{\n\t\t\t\tManagedPrometheusConfig: \u0026container.AttachedClusterMonitoringConfigManagedPrometheusConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBinaryAuthorization: \u0026container.AttachedClusterBinaryAuthorizationArgs{\n\t\t\t\tEvaluationMode: pulumi.String(\"PROJECT_SINGLETON_POLICY_ENFORCE\"),\n\t\t\t},\n\t\t\tProxyConfig: \u0026container.AttachedClusterProxyConfigArgs{\n\t\t\t\tKubernetesSecret: \u0026container.AttachedClusterProxyConfigKubernetesSecretArgs{\n\t\t\t\t\tName: pulumi.String(\"proxy-config\"),\n\t\t\t\t\tNamespace: pulumi.String(\"default\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAttachedVersionsArgs;\nimport com.pulumi.gcp.container.AttachedCluster;\nimport com.pulumi.gcp.container.AttachedClusterArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterOidcConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterLoggingConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterLoggingConfigComponentConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterMonitoringConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterMonitoringConfigManagedPrometheusConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterBinaryAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterProxyConfigKubernetesSecretArgs;\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 final var versions = ContainerFunctions.getAttachedVersions(GetAttachedVersionsArgs.builder()\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build());\n\n var primary = new AttachedCluster(\"primary\", AttachedClusterArgs.builder()\n .name(\"basic\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .location(\"us-west1\")\n .description(\"Test cluster\")\n .distribution(\"aks\")\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .authorization(AttachedClusterAuthorizationArgs.builder()\n .adminUsers( \n \"user1@example.com\",\n \"user2@example.com\")\n .adminGroups( \n \"group1@example.com\",\n \"group2@example.com\")\n .build())\n .oidcConfig(AttachedClusterOidcConfigArgs.builder()\n .issuerUrl(\"https://oidc.issuer.url\")\n .jwks(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\")\n .build()).result())\n .build())\n .platformVersion(versions.applyValue(getAttachedVersionsResult -\u003e getAttachedVersionsResult.validVersions()[0]))\n .fleet(AttachedClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .loggingConfig(AttachedClusterLoggingConfigArgs.builder()\n .componentConfig(AttachedClusterLoggingConfigComponentConfigArgs.builder()\n .enableComponents( \n \"SYSTEM_COMPONENTS\",\n \"WORKLOADS\")\n .build())\n .build())\n .monitoringConfig(AttachedClusterMonitoringConfigArgs.builder()\n .managedPrometheusConfig(AttachedClusterMonitoringConfigManagedPrometheusConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .binaryAuthorization(AttachedClusterBinaryAuthorizationArgs.builder()\n .evaluationMode(\"PROJECT_SINGLETON_POLICY_ENFORCE\")\n .build())\n .proxyConfig(AttachedClusterProxyConfigArgs.builder()\n .kubernetesSecret(AttachedClusterProxyConfigKubernetesSecretArgs.builder()\n .name(\"proxy-config\")\n .namespace(\"default\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AttachedCluster\n properties:\n name: basic\n project: ${project.projectId}\n location: us-west1\n description: Test cluster\n distribution: aks\n annotations:\n label-one: value-one\n authorization:\n adminUsers:\n - user1@example.com\n - user2@example.com\n adminGroups:\n - group1@example.com\n - group2@example.com\n oidcConfig:\n issuerUrl: https://oidc.issuer.url\n jwks:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: '{\"keys\":[{\"use\":\"sig\",\"kty\":\"RSA\",\"kid\":\"testid\",\"alg\":\"RS256\",\"n\":\"somedata\",\"e\":\"AQAB\"}]}'\n Return: result\n platformVersion: ${versions.validVersions[0]}\n fleet:\n project: projects/${project.number}\n loggingConfig:\n componentConfig:\n enableComponents:\n - SYSTEM_COMPONENTS\n - WORKLOADS\n monitoringConfig:\n managedPrometheusConfig:\n enabled: true\n binaryAuthorization:\n evaluationMode: PROJECT_SINGLETON_POLICY_ENFORCE\n proxyConfig:\n kubernetesSecret:\n name: proxy-config\n namespace: default\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n versions:\n fn::invoke:\n Function: gcp:container:getAttachedVersions\n Arguments:\n location: us-west1\n project: ${project.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Container Attached Cluster Ignore Errors\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst versions = project.then(project =\u003e gcp.container.getAttachedVersions({\n location: \"us-west1\",\n project: project.projectId,\n}));\nconst primary = new gcp.container.AttachedCluster(\"primary\", {\n name: \"basic\",\n location: \"us-west1\",\n project: project.then(project =\u003e project.projectId),\n description: \"Test cluster\",\n distribution: \"aks\",\n oidcConfig: {\n issuerUrl: \"https://oidc.issuer.url\",\n },\n platformVersion: versions.then(versions =\u003e versions.validVersions?.[0]),\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n deletionPolicy: \"DELETE_IGNORE_ERRORS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nversions = gcp.container.get_attached_versions(location=\"us-west1\",\n project=project.project_id)\nprimary = gcp.container.AttachedCluster(\"primary\",\n name=\"basic\",\n location=\"us-west1\",\n project=project.project_id,\n description=\"Test cluster\",\n distribution=\"aks\",\n oidc_config={\n \"issuerUrl\": \"https://oidc.issuer.url\",\n },\n platform_version=versions.valid_versions[0],\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n deletion_policy=\"DELETE_IGNORE_ERRORS\")\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 versions = Gcp.Container.GetAttachedVersions.Invoke(new()\n {\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n });\n\n var primary = new Gcp.Container.AttachedCluster(\"primary\", new()\n {\n Name = \"basic\",\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Description = \"Test cluster\",\n Distribution = \"aks\",\n OidcConfig = new Gcp.Container.Inputs.AttachedClusterOidcConfigArgs\n {\n IssuerUrl = \"https://oidc.issuer.url\",\n },\n PlatformVersion = versions.Apply(getAttachedVersionsResult =\u003e getAttachedVersionsResult.ValidVersions[0]),\n Fleet = new Gcp.Container.Inputs.AttachedClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n DeletionPolicy = \"DELETE_IGNORE_ERRORS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tversions, err := container.GetAttachedVersions(ctx, \u0026container.GetAttachedVersionsArgs{\n\t\t\tLocation: \"us-west1\",\n\t\t\tProject: project.ProjectId,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAttachedCluster(ctx, \"primary\", \u0026container.AttachedClusterArgs{\n\t\t\tName: pulumi.String(\"basic\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tDescription: pulumi.String(\"Test cluster\"),\n\t\t\tDistribution: pulumi.String(\"aks\"),\n\t\t\tOidcConfig: \u0026container.AttachedClusterOidcConfigArgs{\n\t\t\t\tIssuerUrl: pulumi.String(\"https://oidc.issuer.url\"),\n\t\t\t},\n\t\t\tPlatformVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tFleet: \u0026container.AttachedClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t},\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE_IGNORE_ERRORS\"),\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.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAttachedVersionsArgs;\nimport com.pulumi.gcp.container.AttachedCluster;\nimport com.pulumi.gcp.container.AttachedClusterArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterOidcConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterFleetArgs;\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 final var versions = ContainerFunctions.getAttachedVersions(GetAttachedVersionsArgs.builder()\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build());\n\n var primary = new AttachedCluster(\"primary\", AttachedClusterArgs.builder()\n .name(\"basic\")\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .description(\"Test cluster\")\n .distribution(\"aks\")\n .oidcConfig(AttachedClusterOidcConfigArgs.builder()\n .issuerUrl(\"https://oidc.issuer.url\")\n .build())\n .platformVersion(versions.applyValue(getAttachedVersionsResult -\u003e getAttachedVersionsResult.validVersions()[0]))\n .fleet(AttachedClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .deletionPolicy(\"DELETE_IGNORE_ERRORS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AttachedCluster\n properties:\n name: basic\n location: us-west1\n project: ${project.projectId}\n description: Test cluster\n distribution: aks\n oidcConfig:\n issuerUrl: https://oidc.issuer.url\n platformVersion: ${versions.validVersions[0]}\n fleet:\n project: projects/${project.number}\n deletionPolicy: DELETE_IGNORE_ERRORS\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n versions:\n fn::invoke:\n Function: gcp:container:getAttachedVersions\n Arguments:\n location: us-west1\n project: ${project.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/attachedClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/attachedCluster:AttachedCluster default projects/{{project}}/locations/{{location}}/attachedClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/attachedCluster:AttachedCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/attachedCluster:AttachedCluster default {{location}}/{{name}}\n```\n\n", + "description": "An Anthos cluster running on customer owned infrastructure.\n\n\nTo get more information about Cluster, see:\n\n* [API documentation](https://cloud.google.com/anthos/clusters/docs/multi-cloud/reference/rest)\n* How-to Guides\n * [API reference](https://cloud.google.com/anthos/clusters/docs/multi-cloud/reference/rest/v1/projects.locations.attachedClusters)\n * [Multicloud overview](https://cloud.google.com/anthos/clusters/docs/multi-cloud)\n\n## Example Usage\n\n### Container Attached Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst versions = project.then(project =\u003e gcp.container.getAttachedVersions({\n location: \"us-west1\",\n project: project.projectId,\n}));\nconst primary = new gcp.container.AttachedCluster(\"primary\", {\n name: \"basic\",\n location: \"us-west1\",\n project: project.then(project =\u003e project.projectId),\n description: \"Test cluster\",\n distribution: \"aks\",\n oidcConfig: {\n issuerUrl: \"https://oidc.issuer.url\",\n },\n platformVersion: versions.then(versions =\u003e versions.validVersions?.[0]),\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nversions = gcp.container.get_attached_versions(location=\"us-west1\",\n project=project.project_id)\nprimary = gcp.container.AttachedCluster(\"primary\",\n name=\"basic\",\n location=\"us-west1\",\n project=project.project_id,\n description=\"Test cluster\",\n distribution=\"aks\",\n oidc_config={\n \"issuer_url\": \"https://oidc.issuer.url\",\n },\n platform_version=versions.valid_versions[0],\n fleet={\n \"project\": f\"projects/{project.number}\",\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 versions = Gcp.Container.GetAttachedVersions.Invoke(new()\n {\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n });\n\n var primary = new Gcp.Container.AttachedCluster(\"primary\", new()\n {\n Name = \"basic\",\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Description = \"Test cluster\",\n Distribution = \"aks\",\n OidcConfig = new Gcp.Container.Inputs.AttachedClusterOidcConfigArgs\n {\n IssuerUrl = \"https://oidc.issuer.url\",\n },\n PlatformVersion = versions.Apply(getAttachedVersionsResult =\u003e getAttachedVersionsResult.ValidVersions[0]),\n Fleet = new Gcp.Container.Inputs.AttachedClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tversions, err := container.GetAttachedVersions(ctx, \u0026container.GetAttachedVersionsArgs{\n\t\t\tLocation: \"us-west1\",\n\t\t\tProject: project.ProjectId,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAttachedCluster(ctx, \"primary\", \u0026container.AttachedClusterArgs{\n\t\t\tName: pulumi.String(\"basic\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tDescription: pulumi.String(\"Test cluster\"),\n\t\t\tDistribution: pulumi.String(\"aks\"),\n\t\t\tOidcConfig: \u0026container.AttachedClusterOidcConfigArgs{\n\t\t\t\tIssuerUrl: pulumi.String(\"https://oidc.issuer.url\"),\n\t\t\t},\n\t\t\tPlatformVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tFleet: \u0026container.AttachedClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAttachedVersionsArgs;\nimport com.pulumi.gcp.container.AttachedCluster;\nimport com.pulumi.gcp.container.AttachedClusterArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterOidcConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterFleetArgs;\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 final var versions = ContainerFunctions.getAttachedVersions(GetAttachedVersionsArgs.builder()\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build());\n\n var primary = new AttachedCluster(\"primary\", AttachedClusterArgs.builder()\n .name(\"basic\")\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .description(\"Test cluster\")\n .distribution(\"aks\")\n .oidcConfig(AttachedClusterOidcConfigArgs.builder()\n .issuerUrl(\"https://oidc.issuer.url\")\n .build())\n .platformVersion(versions.applyValue(getAttachedVersionsResult -\u003e getAttachedVersionsResult.validVersions()[0]))\n .fleet(AttachedClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AttachedCluster\n properties:\n name: basic\n location: us-west1\n project: ${project.projectId}\n description: Test cluster\n distribution: aks\n oidcConfig:\n issuerUrl: https://oidc.issuer.url\n platformVersion: ${versions.validVersions[0]}\n fleet:\n project: projects/${project.number}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n versions:\n fn::invoke:\n Function: gcp:container:getAttachedVersions\n Arguments:\n location: us-west1\n project: ${project.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Container Attached Cluster Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst versions = project.then(project =\u003e gcp.container.getAttachedVersions({\n location: \"us-west1\",\n project: project.projectId,\n}));\nconst primary = new gcp.container.AttachedCluster(\"primary\", {\n name: \"basic\",\n project: project.then(project =\u003e project.projectId),\n location: \"us-west1\",\n description: \"Test cluster\",\n distribution: \"aks\",\n annotations: {\n \"label-one\": \"value-one\",\n },\n authorization: {\n adminUsers: [\n \"user1@example.com\",\n \"user2@example.com\",\n ],\n adminGroups: [\n \"group1@example.com\",\n \"group2@example.com\",\n ],\n },\n oidcConfig: {\n issuerUrl: \"https://oidc.issuer.url\",\n jwks: std.base64encode({\n input: \"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\",\n }).then(invoke =\u003e invoke.result),\n },\n platformVersion: versions.then(versions =\u003e versions.validVersions?.[0]),\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n loggingConfig: {\n componentConfig: {\n enableComponents: [\n \"SYSTEM_COMPONENTS\",\n \"WORKLOADS\",\n ],\n },\n },\n monitoringConfig: {\n managedPrometheusConfig: {\n enabled: true,\n },\n },\n binaryAuthorization: {\n evaluationMode: \"PROJECT_SINGLETON_POLICY_ENFORCE\",\n },\n proxyConfig: {\n kubernetesSecret: {\n name: \"proxy-config\",\n namespace: \"default\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\nversions = gcp.container.get_attached_versions(location=\"us-west1\",\n project=project.project_id)\nprimary = gcp.container.AttachedCluster(\"primary\",\n name=\"basic\",\n project=project.project_id,\n location=\"us-west1\",\n description=\"Test cluster\",\n distribution=\"aks\",\n annotations={\n \"label-one\": \"value-one\",\n },\n authorization={\n \"admin_users\": [\n \"user1@example.com\",\n \"user2@example.com\",\n ],\n \"admin_groups\": [\n \"group1@example.com\",\n \"group2@example.com\",\n ],\n },\n oidc_config={\n \"issuer_url\": \"https://oidc.issuer.url\",\n \"jwks\": std.base64encode(input=\"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\").result,\n },\n platform_version=versions.valid_versions[0],\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n logging_config={\n \"component_config\": {\n \"enable_components\": [\n \"SYSTEM_COMPONENTS\",\n \"WORKLOADS\",\n ],\n },\n },\n monitoring_config={\n \"managed_prometheus_config\": {\n \"enabled\": True,\n },\n },\n binary_authorization={\n \"evaluation_mode\": \"PROJECT_SINGLETON_POLICY_ENFORCE\",\n },\n proxy_config={\n \"kubernetes_secret\": {\n \"name\": \"proxy-config\",\n \"namespace\": \"default\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var versions = Gcp.Container.GetAttachedVersions.Invoke(new()\n {\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n });\n\n var primary = new Gcp.Container.AttachedCluster(\"primary\", new()\n {\n Name = \"basic\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Location = \"us-west1\",\n Description = \"Test cluster\",\n Distribution = \"aks\",\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Authorization = new Gcp.Container.Inputs.AttachedClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n \"user1@example.com\",\n \"user2@example.com\",\n },\n AdminGroups = new[]\n {\n \"group1@example.com\",\n \"group2@example.com\",\n },\n },\n OidcConfig = new Gcp.Container.Inputs.AttachedClusterOidcConfigArgs\n {\n IssuerUrl = \"https://oidc.issuer.url\",\n Jwks = Std.Base64encode.Invoke(new()\n {\n Input = \"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n PlatformVersion = versions.Apply(getAttachedVersionsResult =\u003e getAttachedVersionsResult.ValidVersions[0]),\n Fleet = new Gcp.Container.Inputs.AttachedClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n LoggingConfig = new Gcp.Container.Inputs.AttachedClusterLoggingConfigArgs\n {\n ComponentConfig = new Gcp.Container.Inputs.AttachedClusterLoggingConfigComponentConfigArgs\n {\n EnableComponents = new[]\n {\n \"SYSTEM_COMPONENTS\",\n \"WORKLOADS\",\n },\n },\n },\n MonitoringConfig = new Gcp.Container.Inputs.AttachedClusterMonitoringConfigArgs\n {\n ManagedPrometheusConfig = new Gcp.Container.Inputs.AttachedClusterMonitoringConfigManagedPrometheusConfigArgs\n {\n Enabled = true,\n },\n },\n BinaryAuthorization = new Gcp.Container.Inputs.AttachedClusterBinaryAuthorizationArgs\n {\n EvaluationMode = \"PROJECT_SINGLETON_POLICY_ENFORCE\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AttachedClusterProxyConfigArgs\n {\n KubernetesSecret = new Gcp.Container.Inputs.AttachedClusterProxyConfigKubernetesSecretArgs\n {\n Name = \"proxy-config\",\n Namespace = \"default\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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\tversions, err := container.GetAttachedVersions(ctx, \u0026container.GetAttachedVersionsArgs{\n\t\t\tLocation: \"us-west1\",\n\t\t\tProject: project.ProjectId,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAttachedCluster(ctx, \"primary\", \u0026container.AttachedClusterArgs{\n\t\t\tName: pulumi.String(\"basic\"),\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tDescription: pulumi.String(\"Test cluster\"),\n\t\t\tDistribution: pulumi.String(\"aks\"),\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.AttachedClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"user1@example.com\"),\n\t\t\t\t\tpulumi.String(\"user2@example.com\"),\n\t\t\t\t},\n\t\t\t\tAdminGroups: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"group1@example.com\"),\n\t\t\t\t\tpulumi.String(\"group2@example.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOidcConfig: \u0026container.AttachedClusterOidcConfigArgs{\n\t\t\t\tIssuerUrl: pulumi.String(\"https://oidc.issuer.url\"),\n\t\t\t\tJwks: pulumi.String(invokeBase64encode.Result),\n\t\t\t},\n\t\t\tPlatformVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tFleet: \u0026container.AttachedClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t},\n\t\t\tLoggingConfig: \u0026container.AttachedClusterLoggingConfigArgs{\n\t\t\t\tComponentConfig: \u0026container.AttachedClusterLoggingConfigComponentConfigArgs{\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\tMonitoringConfig: \u0026container.AttachedClusterMonitoringConfigArgs{\n\t\t\t\tManagedPrometheusConfig: \u0026container.AttachedClusterMonitoringConfigManagedPrometheusConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBinaryAuthorization: \u0026container.AttachedClusterBinaryAuthorizationArgs{\n\t\t\t\tEvaluationMode: pulumi.String(\"PROJECT_SINGLETON_POLICY_ENFORCE\"),\n\t\t\t},\n\t\t\tProxyConfig: \u0026container.AttachedClusterProxyConfigArgs{\n\t\t\t\tKubernetesSecret: \u0026container.AttachedClusterProxyConfigKubernetesSecretArgs{\n\t\t\t\t\tName: pulumi.String(\"proxy-config\"),\n\t\t\t\t\tNamespace: pulumi.String(\"default\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAttachedVersionsArgs;\nimport com.pulumi.gcp.container.AttachedCluster;\nimport com.pulumi.gcp.container.AttachedClusterArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterOidcConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterLoggingConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterLoggingConfigComponentConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterMonitoringConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterMonitoringConfigManagedPrometheusConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterBinaryAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterProxyConfigKubernetesSecretArgs;\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 final var versions = ContainerFunctions.getAttachedVersions(GetAttachedVersionsArgs.builder()\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build());\n\n var primary = new AttachedCluster(\"primary\", AttachedClusterArgs.builder()\n .name(\"basic\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .location(\"us-west1\")\n .description(\"Test cluster\")\n .distribution(\"aks\")\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .authorization(AttachedClusterAuthorizationArgs.builder()\n .adminUsers( \n \"user1@example.com\",\n \"user2@example.com\")\n .adminGroups( \n \"group1@example.com\",\n \"group2@example.com\")\n .build())\n .oidcConfig(AttachedClusterOidcConfigArgs.builder()\n .issuerUrl(\"https://oidc.issuer.url\")\n .jwks(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\")\n .build()).result())\n .build())\n .platformVersion(versions.applyValue(getAttachedVersionsResult -\u003e getAttachedVersionsResult.validVersions()[0]))\n .fleet(AttachedClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .loggingConfig(AttachedClusterLoggingConfigArgs.builder()\n .componentConfig(AttachedClusterLoggingConfigComponentConfigArgs.builder()\n .enableComponents( \n \"SYSTEM_COMPONENTS\",\n \"WORKLOADS\")\n .build())\n .build())\n .monitoringConfig(AttachedClusterMonitoringConfigArgs.builder()\n .managedPrometheusConfig(AttachedClusterMonitoringConfigManagedPrometheusConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .binaryAuthorization(AttachedClusterBinaryAuthorizationArgs.builder()\n .evaluationMode(\"PROJECT_SINGLETON_POLICY_ENFORCE\")\n .build())\n .proxyConfig(AttachedClusterProxyConfigArgs.builder()\n .kubernetesSecret(AttachedClusterProxyConfigKubernetesSecretArgs.builder()\n .name(\"proxy-config\")\n .namespace(\"default\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AttachedCluster\n properties:\n name: basic\n project: ${project.projectId}\n location: us-west1\n description: Test cluster\n distribution: aks\n annotations:\n label-one: value-one\n authorization:\n adminUsers:\n - user1@example.com\n - user2@example.com\n adminGroups:\n - group1@example.com\n - group2@example.com\n oidcConfig:\n issuerUrl: https://oidc.issuer.url\n jwks:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: '{\"keys\":[{\"use\":\"sig\",\"kty\":\"RSA\",\"kid\":\"testid\",\"alg\":\"RS256\",\"n\":\"somedata\",\"e\":\"AQAB\"}]}'\n Return: result\n platformVersion: ${versions.validVersions[0]}\n fleet:\n project: projects/${project.number}\n loggingConfig:\n componentConfig:\n enableComponents:\n - SYSTEM_COMPONENTS\n - WORKLOADS\n monitoringConfig:\n managedPrometheusConfig:\n enabled: true\n binaryAuthorization:\n evaluationMode: PROJECT_SINGLETON_POLICY_ENFORCE\n proxyConfig:\n kubernetesSecret:\n name: proxy-config\n namespace: default\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n versions:\n fn::invoke:\n Function: gcp:container:getAttachedVersions\n Arguments:\n location: us-west1\n project: ${project.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Container Attached Cluster Ignore Errors\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst versions = project.then(project =\u003e gcp.container.getAttachedVersions({\n location: \"us-west1\",\n project: project.projectId,\n}));\nconst primary = new gcp.container.AttachedCluster(\"primary\", {\n name: \"basic\",\n location: \"us-west1\",\n project: project.then(project =\u003e project.projectId),\n description: \"Test cluster\",\n distribution: \"aks\",\n oidcConfig: {\n issuerUrl: \"https://oidc.issuer.url\",\n },\n platformVersion: versions.then(versions =\u003e versions.validVersions?.[0]),\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n deletionPolicy: \"DELETE_IGNORE_ERRORS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nversions = gcp.container.get_attached_versions(location=\"us-west1\",\n project=project.project_id)\nprimary = gcp.container.AttachedCluster(\"primary\",\n name=\"basic\",\n location=\"us-west1\",\n project=project.project_id,\n description=\"Test cluster\",\n distribution=\"aks\",\n oidc_config={\n \"issuer_url\": \"https://oidc.issuer.url\",\n },\n platform_version=versions.valid_versions[0],\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n deletion_policy=\"DELETE_IGNORE_ERRORS\")\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 versions = Gcp.Container.GetAttachedVersions.Invoke(new()\n {\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n });\n\n var primary = new Gcp.Container.AttachedCluster(\"primary\", new()\n {\n Name = \"basic\",\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Description = \"Test cluster\",\n Distribution = \"aks\",\n OidcConfig = new Gcp.Container.Inputs.AttachedClusterOidcConfigArgs\n {\n IssuerUrl = \"https://oidc.issuer.url\",\n },\n PlatformVersion = versions.Apply(getAttachedVersionsResult =\u003e getAttachedVersionsResult.ValidVersions[0]),\n Fleet = new Gcp.Container.Inputs.AttachedClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n DeletionPolicy = \"DELETE_IGNORE_ERRORS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tversions, err := container.GetAttachedVersions(ctx, \u0026container.GetAttachedVersionsArgs{\n\t\t\tLocation: \"us-west1\",\n\t\t\tProject: project.ProjectId,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAttachedCluster(ctx, \"primary\", \u0026container.AttachedClusterArgs{\n\t\t\tName: pulumi.String(\"basic\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tDescription: pulumi.String(\"Test cluster\"),\n\t\t\tDistribution: pulumi.String(\"aks\"),\n\t\t\tOidcConfig: \u0026container.AttachedClusterOidcConfigArgs{\n\t\t\t\tIssuerUrl: pulumi.String(\"https://oidc.issuer.url\"),\n\t\t\t},\n\t\t\tPlatformVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tFleet: \u0026container.AttachedClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t},\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE_IGNORE_ERRORS\"),\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.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAttachedVersionsArgs;\nimport com.pulumi.gcp.container.AttachedCluster;\nimport com.pulumi.gcp.container.AttachedClusterArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterOidcConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterFleetArgs;\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 final var versions = ContainerFunctions.getAttachedVersions(GetAttachedVersionsArgs.builder()\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build());\n\n var primary = new AttachedCluster(\"primary\", AttachedClusterArgs.builder()\n .name(\"basic\")\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .description(\"Test cluster\")\n .distribution(\"aks\")\n .oidcConfig(AttachedClusterOidcConfigArgs.builder()\n .issuerUrl(\"https://oidc.issuer.url\")\n .build())\n .platformVersion(versions.applyValue(getAttachedVersionsResult -\u003e getAttachedVersionsResult.validVersions()[0]))\n .fleet(AttachedClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .deletionPolicy(\"DELETE_IGNORE_ERRORS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AttachedCluster\n properties:\n name: basic\n location: us-west1\n project: ${project.projectId}\n description: Test cluster\n distribution: aks\n oidcConfig:\n issuerUrl: https://oidc.issuer.url\n platformVersion: ${versions.validVersions[0]}\n fleet:\n project: projects/${project.number}\n deletionPolicy: DELETE_IGNORE_ERRORS\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n versions:\n fn::invoke:\n Function: gcp:container:getAttachedVersions\n Arguments:\n location: us-west1\n project: ${project.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/attachedClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/attachedCluster:AttachedCluster default projects/{{project}}/locations/{{location}}/attachedClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/attachedCluster:AttachedCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/attachedCluster:AttachedCluster default {{location}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -166713,7 +166713,7 @@ } }, "gcp:container/awsCluster:AwsCluster": { - "description": "An Anthos cluster running on AWS.\n\nFor more information, see:\n* [Multicloud overview](https://cloud.google.com/kubernetes-engine/multi-cloud/docs)\n## Example Usage\n\n### Basic_aws_cluster\nA basic example of a containeraws cluster\n\u003c!--Start PulumiCodeChooser --\u003e\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 adminGroups: [{\n group: \"group@domain.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 name: \"name\",\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```\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={\n \"adminUsers\": [{\n \"username\": \"my@service-account.com\",\n }],\n \"adminGroups\": [{\n \"group\": \"group@domain.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\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.valid_versions[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 name=\"name\",\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```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 AdminGroups = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminGroupArgs\n {\n Group = \"group@domain.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 Name = \"name\",\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});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tAdminGroups: container.AwsClusterAuthorizationAdminGroupArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminGroupArgs{\n\t\t\t\t\t\tGroup: pulumi.String(\"group@domain.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\tName: pulumi.String(\"name\"),\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\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 .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 .adminGroups(AwsClusterAuthorizationAdminGroupArgs.builder()\n .group(\"group@domain.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 .name(\"name\")\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 }\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 adminGroups:\n - group: group@domain.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 name: name\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\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Basic_enum_aws_cluster\nA basic example of a containeraws cluster with lowercase enums\n\u003c!--Start PulumiCodeChooser --\u003e\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 },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\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```\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={\n \"adminUsers\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\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.valid_versions[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 name=\"name\",\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```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 },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\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});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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},\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\tName: pulumi.String(\"name\"),\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\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 .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 .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\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 }\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 fleet:\n project: my-project-number\n location: us-west1\n name: name\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\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Beta_basic_enum_aws_cluster\nA basic example of a containeraws cluster with lowercase enums (beta)\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"name\",\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```\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={\n \"adminUsers\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\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.valid_versions[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 name=\"name\",\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 logging_config={\n \"componentConfig\": {\n \"enableComponents\": [\n \"system_components\",\n \"workloads\",\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 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 Name = \"name\",\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"name\"),\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})\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 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 .name(\"name\")\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());\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 name: name\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\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/awsClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/awsCluster:AwsCluster default projects/{{project}}/locations/{{location}}/awsClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/awsCluster:AwsCluster default {{project}}/{{location}}/{{name}}\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/kubernetes-engine/multi-cloud/docs)\n## Example Usage\n\n### Basic_aws_cluster\nA basic example of a containeraws cluster\n\u003c!--Start PulumiCodeChooser --\u003e\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 adminGroups: [{\n group: \"group@domain.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 name: \"name\",\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```\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={\n \"admin_users\": [{\n \"username\": \"my@service-account.com\",\n }],\n \"admin_groups\": [{\n \"group\": \"group@domain.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\n \"aws_services_authentication\": {\n \"role_arn\": \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n \"role_session_name\": \"my--1p-dev-session\",\n },\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"database_encryption\": {\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\": {\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\": {\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\": {\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\": {\n \"ec2_key_pair\": \"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 name=\"name\",\n networking={\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```\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 AdminGroups = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminGroupArgs\n {\n Group = \"group@domain.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 Name = \"name\",\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});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tAdminGroups: container.AwsClusterAuthorizationAdminGroupArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminGroupArgs{\n\t\t\t\t\t\tGroup: pulumi.String(\"group@domain.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\tName: pulumi.String(\"name\"),\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\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 .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 .adminGroups(AwsClusterAuthorizationAdminGroupArgs.builder()\n .group(\"group@domain.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 .name(\"name\")\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 }\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 adminGroups:\n - group: group@domain.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 name: name\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\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Basic_enum_aws_cluster\nA basic example of a containeraws cluster with lowercase enums\n\u003c!--Start PulumiCodeChooser --\u003e\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 },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\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```\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={\n \"admin_users\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\n \"aws_services_authentication\": {\n \"role_arn\": \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n \"role_session_name\": \"my--1p-dev-session\",\n },\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"database_encryption\": {\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\": {\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\": {\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\": {\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\": {\n \"ec2_key_pair\": \"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 name=\"name\",\n networking={\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```\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 },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\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});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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},\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\tName: pulumi.String(\"name\"),\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\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 .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 .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\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 }\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 fleet:\n project: my-project-number\n location: us-west1\n name: name\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\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Beta_basic_enum_aws_cluster\nA basic example of a containeraws cluster with lowercase enums (beta)\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"name\",\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```\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={\n \"admin_users\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\n \"aws_services_authentication\": {\n \"role_arn\": \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n \"role_session_name\": \"my--1p-dev-session\",\n },\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"database_encryption\": {\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\": {\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\": {\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\": {\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\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"owner\": \"my@service-account.com\",\n },\n \"instance_placement\": {\n \"tenancy\": \"dedicated\",\n },\n },\n fleet={\n \"project\": \"my-project-number\",\n },\n location=\"us-west1\",\n name=\"name\",\n networking={\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={\n \"component_config\": {\n \"enable_components\": [\n \"system_components\",\n \"workloads\",\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 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 Name = \"name\",\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"name\"),\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})\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 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 .name(\"name\")\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());\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 name: name\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\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/awsClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/awsCluster:AwsCluster default projects/{{project}}/locations/{{location}}/awsClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/awsCluster:AwsCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/awsCluster:AwsCluster default {{location}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -167000,7 +167000,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/kubernetes-engine/multi-cloud/docs)\n## Example Usage\n\n### Basic_aws_cluster\nA basic example of a containeraws node pool\n\u003c!--Start PulumiCodeChooser --\u003e\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 },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\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(\"primary\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primary.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 name: \"node-pool-name\",\n subnetId: \"subnet-00000000000000000\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"label-one\": \"value-one\",\n },\n management: {\n autoRepair: true,\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 = gcp.container.AwsCluster(\"primary\",\n authorization={\n \"adminUsers\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\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.valid_versions[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 name=\"name\",\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\")\nprimary_aws_node_pool = gcp.container.AwsNodePool(\"primary\",\n autoscaling={\n \"maxNodeCount\": 5,\n \"minNodeCount\": 1,\n },\n cluster=primary.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 max_pods_constraint={\n \"maxPodsPerNode\": 110,\n },\n name=\"node-pool-name\",\n subnet_id=\"subnet-00000000000000000\",\n version=versions.valid_versions[0],\n annotations={\n \"label-one\": \"value-one\",\n },\n management={\n \"autoRepair\": True,\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 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 },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\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(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primary.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 Name = \"node-pool-name\",\n SubnetId = \"subnet-00000000000000000\",\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Management = new Gcp.Container.Inputs.AwsNodePoolManagementArgs\n {\n AutoRepair = true,\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tprimary, 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},\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\tName: pulumi.String(\"name\"),\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, \"primary\", \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: primary.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\tName: pulumi.String(\"node-pool-name\"),\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\tManagement: \u0026container.AwsNodePoolManagementArgs{\n\t\t\t\tAutoRepair: pulumi.Bool(true),\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 com.pulumi.gcp.container.inputs.AwsNodePoolManagementArgs;\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 .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\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(primary.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 .name(\"node-pool-name\")\n .subnetId(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .management(AwsNodePoolManagementArgs.builder()\n .autoRepair(true)\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 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 name: name\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 name: primary\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primary.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 name: node-pool-name\n subnetId: subnet-00000000000000000\n version: ${versions.validVersions[0]}\n annotations:\n label-one: value-one\n management:\n autoRepair: true\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\u003c!--End PulumiCodeChooser --\u003e\n### Basic_enum_aws_cluster\nA basic example of a containeraws node pool with lowercase enums\n\u003c!--Start PulumiCodeChooser --\u003e\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 },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\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(\"primary\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primary.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 name: \"node-pool-name\",\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 = gcp.container.AwsCluster(\"primary\",\n authorization={\n \"adminUsers\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\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.valid_versions[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 name=\"name\",\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\")\nprimary_aws_node_pool = gcp.container.AwsNodePool(\"primary\",\n autoscaling={\n \"maxNodeCount\": 5,\n \"minNodeCount\": 1,\n },\n cluster=primary.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 max_pods_constraint={\n \"maxPodsPerNode\": 110,\n },\n name=\"node-pool-name\",\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 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 },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\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(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primary.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 Name = \"node-pool-name\",\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/v7/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\tprimary, 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},\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\tName: pulumi.String(\"name\"),\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, \"primary\", \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: primary.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\tName: pulumi.String(\"node-pool-name\"),\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 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 .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\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(primary.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 .name(\"node-pool-name\")\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 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 fleet:\n project: my-project-number\n location: us-west1\n name: name\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 name: primary\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primary.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 name: node-pool-name\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\u003c!--End PulumiCodeChooser --\u003e\n### Beta_basic_enum_aws_cluster\nA basic example of a containeraws node pool with lowercase enums (beta)\n\u003c!--Start PulumiCodeChooser --\u003e\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 },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\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(\"primary\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primary.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 name: \"node-pool-name\",\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 = gcp.container.AwsCluster(\"primary\",\n authorization={\n \"adminUsers\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\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.valid_versions[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 name=\"name\",\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\")\nprimary_aws_node_pool = gcp.container.AwsNodePool(\"primary\",\n autoscaling={\n \"maxNodeCount\": 5,\n \"minNodeCount\": 1,\n },\n cluster=primary.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 max_pods_constraint={\n \"maxPodsPerNode\": 110,\n },\n name=\"node-pool-name\",\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 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 },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\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(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primary.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 Name = \"node-pool-name\",\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/v7/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\tprimary, 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},\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\tName: pulumi.String(\"name\"),\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, \"primary\", \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: primary.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\tName: pulumi.String(\"node-pool-name\"),\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.AwsNodePoolConfigInstancePlacementArgs;\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 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 .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\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(primary.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 .name(\"node-pool-name\")\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 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 fleet:\n project: my-project-number\n location: us-west1\n name: name\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 name: primary\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primary.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 name: node-pool-name\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\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/awsClusters/{{cluster}}/awsNodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{name}}`\n\n* `{{location}}/{{cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, NodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/awsNodePool:AwsNodePool default projects/{{project}}/locations/{{location}}/awsClusters/{{cluster}}/awsNodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/awsNodePool:AwsNodePool default {{project}}/{{location}}/{{cluster}}/{{name}}\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/kubernetes-engine/multi-cloud/docs)\n## Example Usage\n\n### Basic_aws_cluster\nA basic example of a containeraws node pool\n\u003c!--Start PulumiCodeChooser --\u003e\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 },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\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(\"primary\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primary.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 name: \"node-pool-name\",\n subnetId: \"subnet-00000000000000000\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"label-one\": \"value-one\",\n },\n management: {\n autoRepair: true,\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 = gcp.container.AwsCluster(\"primary\",\n authorization={\n \"admin_users\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\n \"aws_services_authentication\": {\n \"role_arn\": \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n \"role_session_name\": \"my--1p-dev-session\",\n },\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"database_encryption\": {\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\": {\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\": {\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\": {\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\": {\n \"ec2_key_pair\": \"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 name=\"name\",\n networking={\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(\"primary\",\n autoscaling={\n \"max_node_count\": 5,\n \"min_node_count\": 1,\n },\n cluster=primary.name,\n config={\n \"config_encryption\": {\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\": {\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\": {\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\": {\n \"ec2_key_pair\": \"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 max_pods_constraint={\n \"max_pods_per_node\": 110,\n },\n name=\"node-pool-name\",\n subnet_id=\"subnet-00000000000000000\",\n version=versions.valid_versions[0],\n annotations={\n \"label-one\": \"value-one\",\n },\n management={\n \"auto_repair\": True,\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 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 },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\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(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primary.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 Name = \"node-pool-name\",\n SubnetId = \"subnet-00000000000000000\",\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Management = new Gcp.Container.Inputs.AwsNodePoolManagementArgs\n {\n AutoRepair = true,\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tprimary, 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},\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\tName: pulumi.String(\"name\"),\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, \"primary\", \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: primary.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\tName: pulumi.String(\"node-pool-name\"),\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\tManagement: \u0026container.AwsNodePoolManagementArgs{\n\t\t\t\tAutoRepair: pulumi.Bool(true),\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 com.pulumi.gcp.container.inputs.AwsNodePoolManagementArgs;\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 .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\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(primary.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 .name(\"node-pool-name\")\n .subnetId(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .management(AwsNodePoolManagementArgs.builder()\n .autoRepair(true)\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 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 name: name\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 name: primary\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primary.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 name: node-pool-name\n subnetId: subnet-00000000000000000\n version: ${versions.validVersions[0]}\n annotations:\n label-one: value-one\n management:\n autoRepair: true\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\u003c!--End PulumiCodeChooser --\u003e\n### Basic_enum_aws_cluster\nA basic example of a containeraws node pool with lowercase enums\n\u003c!--Start PulumiCodeChooser --\u003e\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 },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\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(\"primary\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primary.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 name: \"node-pool-name\",\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 = gcp.container.AwsCluster(\"primary\",\n authorization={\n \"admin_users\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\n \"aws_services_authentication\": {\n \"role_arn\": \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n \"role_session_name\": \"my--1p-dev-session\",\n },\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"database_encryption\": {\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\": {\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\": {\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\": {\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\": {\n \"ec2_key_pair\": \"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 name=\"name\",\n networking={\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(\"primary\",\n autoscaling={\n \"max_node_count\": 5,\n \"min_node_count\": 1,\n },\n cluster=primary.name,\n config={\n \"config_encryption\": {\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\": {\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\": {\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\": {\n \"ec2_key_pair\": \"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 max_pods_constraint={\n \"max_pods_per_node\": 110,\n },\n name=\"node-pool-name\",\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 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 },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\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(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primary.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 Name = \"node-pool-name\",\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/v7/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\tprimary, 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},\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\tName: pulumi.String(\"name\"),\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, \"primary\", \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: primary.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\tName: pulumi.String(\"node-pool-name\"),\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 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 .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\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(primary.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 .name(\"node-pool-name\")\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 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 fleet:\n project: my-project-number\n location: us-west1\n name: name\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 name: primary\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primary.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 name: node-pool-name\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\u003c!--End PulumiCodeChooser --\u003e\n### Beta_basic_enum_aws_cluster\nA basic example of a containeraws node pool with lowercase enums (beta)\n\u003c!--Start PulumiCodeChooser --\u003e\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 },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\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(\"primary\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primary.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 name: \"node-pool-name\",\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 = gcp.container.AwsCluster(\"primary\",\n authorization={\n \"admin_users\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\n \"aws_services_authentication\": {\n \"role_arn\": \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n \"role_session_name\": \"my--1p-dev-session\",\n },\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"database_encryption\": {\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\": {\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\": {\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\": {\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\": {\n \"ec2_key_pair\": \"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 name=\"name\",\n networking={\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(\"primary\",\n autoscaling={\n \"max_node_count\": 5,\n \"min_node_count\": 1,\n },\n cluster=primary.name,\n config={\n \"config_encryption\": {\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\": {\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\": {\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\": {\n \"ec2_key_pair\": \"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 \"instance_placement\": {\n \"tenancy\": \"dedicated\",\n },\n \"image_type\": \"ubuntu\",\n },\n location=\"us-west1\",\n max_pods_constraint={\n \"max_pods_per_node\": 110,\n },\n name=\"node-pool-name\",\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 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 },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\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(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primary.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 Name = \"node-pool-name\",\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/v7/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\tprimary, 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},\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\tName: pulumi.String(\"name\"),\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, \"primary\", \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: primary.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\tName: pulumi.String(\"node-pool-name\"),\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.AwsNodePoolConfigInstancePlacementArgs;\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 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 .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\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(primary.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 .name(\"node-pool-name\")\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 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 fleet:\n project: my-project-number\n location: us-west1\n name: name\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 name: primary\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primary.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 name: node-pool-name\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\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/awsClusters/{{cluster}}/awsNodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{name}}`\n\n* `{{location}}/{{cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, NodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/awsNodePool:AwsNodePool default projects/{{project}}/locations/{{location}}/awsClusters/{{cluster}}/awsNodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/awsNodePool:AwsNodePool default {{project}}/{{location}}/{{cluster}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/awsNodePool:AwsNodePool default {{location}}/{{cluster}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -167389,7 +167389,7 @@ } }, "gcp:container/azureCluster:AzureCluster": { - "description": "An Anthos cluster running on Azure.\n\nFor more information, see:\n* [Multicloud overview](https://cloud.google.com/kubernetes-engine/multi-cloud/docs)\n## Example Usage\n\n### Basic_azure_cluster\nA basic example of a containerazure azure cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAzureVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst basic = new gcp.container.AzureClient(\"basic\", {\n applicationId: \"12345678-1234-1234-1234-123456789111\",\n location: \"us-west1\",\n name: \"client-name\",\n tenantId: \"12345678-1234-1234-1234-123456789111\",\n project: \"my-project-name\",\n});\nconst primary = new gcp.container.AzureCluster(\"primary\", {\n authorization: {\n adminUsers: [{\n username: \"mmv2@google.com\",\n }],\n adminGroups: [{\n group: \"group@domain.com\",\n }],\n },\n azureRegion: \"westus2\",\n client: pulumi.interpolate`projects/my-project-number/locations/us-west1/azureClients/${basic.name}`,\n controlPlane: {\n sshConfig: {\n authorizedKey: \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n subnetId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\n networking: {\n podAddressCidrBlocks: [\"10.200.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.32.0.0/24\"],\n virtualNetworkId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\",\n },\n resourceGroupId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_azure_versions(project=\"my-project-name\",\n location=\"us-west1\")\nbasic = gcp.container.AzureClient(\"basic\",\n application_id=\"12345678-1234-1234-1234-123456789111\",\n location=\"us-west1\",\n name=\"client-name\",\n tenant_id=\"12345678-1234-1234-1234-123456789111\",\n project=\"my-project-name\")\nprimary = gcp.container.AzureCluster(\"primary\",\n authorization={\n \"adminUsers\": [{\n \"username\": \"mmv2@google.com\",\n }],\n \"adminGroups\": [{\n \"group\": \"group@domain.com\",\n }],\n },\n azure_region=\"westus2\",\n client=basic.name.apply(lambda name: f\"projects/my-project-number/locations/us-west1/azureClients/{name}\"),\n control_plane={\n \"sshConfig\": {\n \"authorizedKey\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n \"subnetId\": \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n \"version\": versions.valid_versions[0],\n },\n fleet={\n \"project\": \"my-project-number\",\n },\n location=\"us-west1\",\n name=\"name\",\n networking={\n \"podAddressCidrBlocks\": [\"10.200.0.0/16\"],\n \"serviceAddressCidrBlocks\": [\"10.32.0.0/24\"],\n \"virtualNetworkId\": \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\",\n },\n resource_group_id=\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\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.GetAzureVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var basic = new Gcp.Container.AzureClient(\"basic\", new()\n {\n ApplicationId = \"12345678-1234-1234-1234-123456789111\",\n Location = \"us-west1\",\n Name = \"client-name\",\n TenantId = \"12345678-1234-1234-1234-123456789111\",\n Project = \"my-project-name\",\n });\n\n var primary = new Gcp.Container.AzureCluster(\"primary\", new()\n {\n Authorization = new Gcp.Container.Inputs.AzureClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AzureClusterAuthorizationAdminUserArgs\n {\n Username = \"mmv2@google.com\",\n },\n },\n AdminGroups = new[]\n {\n new Gcp.Container.Inputs.AzureClusterAuthorizationAdminGroupArgs\n {\n Group = \"group@domain.com\",\n },\n },\n },\n AzureRegion = \"westus2\",\n Client = basic.Name.Apply(name =\u003e $\"projects/my-project-number/locations/us-west1/azureClients/{name}\"),\n ControlPlane = new Gcp.Container.Inputs.AzureClusterControlPlaneArgs\n {\n SshConfig = new Gcp.Container.Inputs.AzureClusterControlPlaneSshConfigArgs\n {\n AuthorizedKey = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n SubnetId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n Version = versions.Apply(getAzureVersionsResult =\u003e getAzureVersionsResult.ValidVersions[0]),\n },\n Fleet = new Gcp.Container.Inputs.AzureClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\n Networking = new Gcp.Container.Inputs.AzureClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.200.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.32.0.0/24\",\n },\n VirtualNetworkId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\",\n },\n ResourceGroupId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.GetAzureVersions(ctx, \u0026container.GetAzureVersionsArgs{\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\tbasic, err := container.NewAzureClient(ctx, \"basic\", \u0026container.AzureClientArgs{\n\t\t\tApplicationId: pulumi.String(\"12345678-1234-1234-1234-123456789111\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"client-name\"),\n\t\t\tTenantId: pulumi.String(\"12345678-1234-1234-1234-123456789111\"),\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.NewAzureCluster(ctx, \"primary\", \u0026container.AzureClusterArgs{\n\t\t\tAuthorization: \u0026container.AzureClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AzureClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AzureClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"mmv2@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAdminGroups: container.AzureClusterAuthorizationAdminGroupArray{\n\t\t\t\t\t\u0026container.AzureClusterAuthorizationAdminGroupArgs{\n\t\t\t\t\t\tGroup: pulumi.String(\"group@domain.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAzureRegion: pulumi.String(\"westus2\"),\n\t\t\tClient: basic.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/my-project-number/locations/us-west1/azureClients/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tControlPlane: \u0026container.AzureClusterControlPlaneArgs{\n\t\t\t\tSshConfig: \u0026container.AzureClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tAuthorizedKey: pulumi.String(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\"),\n\t\t\t\t},\n\t\t\t\tSubnetId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\"),\n\t\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\t},\n\t\t\tFleet: \u0026container.AzureClusterFleetArgs{\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\tName: pulumi.String(\"name\"),\n\t\t\tNetworking: \u0026container.AzureClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.200.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.32.0.0/24\"),\n\t\t\t\t},\n\t\t\t\tVirtualNetworkId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\"),\n\t\t\t},\n\t\t\tResourceGroupId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-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\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.GetAzureVersionsArgs;\nimport com.pulumi.gcp.container.AzureClient;\nimport com.pulumi.gcp.container.AzureClientArgs;\nimport com.pulumi.gcp.container.AzureCluster;\nimport com.pulumi.gcp.container.AzureClusterArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterNetworkingArgs;\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.getAzureVersions(GetAzureVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var basic = new AzureClient(\"basic\", AzureClientArgs.builder()\n .applicationId(\"12345678-1234-1234-1234-123456789111\")\n .location(\"us-west1\")\n .name(\"client-name\")\n .tenantId(\"12345678-1234-1234-1234-123456789111\")\n .project(\"my-project-name\")\n .build());\n\n var primary = new AzureCluster(\"primary\", AzureClusterArgs.builder()\n .authorization(AzureClusterAuthorizationArgs.builder()\n .adminUsers(AzureClusterAuthorizationAdminUserArgs.builder()\n .username(\"mmv2@google.com\")\n .build())\n .adminGroups(AzureClusterAuthorizationAdminGroupArgs.builder()\n .group(\"group@domain.com\")\n .build())\n .build())\n .azureRegion(\"westus2\")\n .client(basic.name().applyValue(name -\u003e String.format(\"projects/my-project-number/locations/us-west1/azureClients/%s\", name)))\n .controlPlane(AzureClusterControlPlaneArgs.builder()\n .sshConfig(AzureClusterControlPlaneSshConfigArgs.builder()\n .authorizedKey(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\")\n .build())\n .subnetId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\")\n .version(versions.applyValue(getAzureVersionsResult -\u003e getAzureVersionsResult.validVersions()[0]))\n .build())\n .fleet(AzureClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\n .networking(AzureClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.200.0.0/16\")\n .serviceAddressCidrBlocks(\"10.32.0.0/24\")\n .virtualNetworkId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\")\n .build())\n .resourceGroupId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\")\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AzureCluster\n properties:\n authorization:\n adminUsers:\n - username: mmv2@google.com\n adminGroups:\n - group: group@domain.com\n azureRegion: westus2\n client: projects/my-project-number/locations/us-west1/azureClients/${basic.name}\n controlPlane:\n sshConfig:\n authorizedKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\n subnetId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\n version: ${versions.validVersions[0]}\n fleet:\n project: my-project-number\n location: us-west1\n name: name\n networking:\n podAddressCidrBlocks:\n - 10.200.0.0/16\n serviceAddressCidrBlocks:\n - 10.32.0.0/24\n virtualNetworkId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\n resourceGroupId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\n project: my-project-name\n basic:\n type: gcp:container:AzureClient\n properties:\n applicationId: 12345678-1234-1234-1234-123456789111\n location: us-west1\n name: client-name\n tenantId: 12345678-1234-1234-1234-123456789111\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAzureVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Beta_basic_enum_azure_cluster\nA basic example of a containerazure azure cluster with lowercase enums (beta)\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAzureVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst basic = new gcp.container.AzureClient(\"basic\", {\n applicationId: \"12345678-1234-1234-1234-123456789111\",\n location: \"us-west1\",\n name: \"client-name\",\n tenantId: \"12345678-1234-1234-1234-123456789111\",\n project: \"my-project-name\",\n});\nconst primary = new gcp.container.AzureCluster(\"primary\", {\n authorization: {\n adminUsers: [{\n username: \"mmv2@google.com\",\n }],\n },\n azureRegion: \"westus2\",\n client: pulumi.interpolate`projects/my-project-number/locations/us-west1/azureClients/${basic.name}`,\n controlPlane: {\n sshConfig: {\n authorizedKey: \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n subnetId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\n networking: {\n podAddressCidrBlocks: [\"10.200.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.32.0.0/24\"],\n virtualNetworkId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\",\n },\n resourceGroupId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n project: \"my-project-name\",\n loggingConfig: {\n componentConfig: {\n enableComponents: [\n \"system_components\",\n \"workloads\",\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_azure_versions(project=\"my-project-name\",\n location=\"us-west1\")\nbasic = gcp.container.AzureClient(\"basic\",\n application_id=\"12345678-1234-1234-1234-123456789111\",\n location=\"us-west1\",\n name=\"client-name\",\n tenant_id=\"12345678-1234-1234-1234-123456789111\",\n project=\"my-project-name\")\nprimary = gcp.container.AzureCluster(\"primary\",\n authorization={\n \"adminUsers\": [{\n \"username\": \"mmv2@google.com\",\n }],\n },\n azure_region=\"westus2\",\n client=basic.name.apply(lambda name: f\"projects/my-project-number/locations/us-west1/azureClients/{name}\"),\n control_plane={\n \"sshConfig\": {\n \"authorizedKey\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n \"subnetId\": \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n \"version\": versions.valid_versions[0],\n },\n fleet={\n \"project\": \"my-project-number\",\n },\n location=\"us-west1\",\n name=\"name\",\n networking={\n \"podAddressCidrBlocks\": [\"10.200.0.0/16\"],\n \"serviceAddressCidrBlocks\": [\"10.32.0.0/24\"],\n \"virtualNetworkId\": \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\",\n },\n resource_group_id=\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n project=\"my-project-name\",\n logging_config={\n \"componentConfig\": {\n \"enableComponents\": [\n \"system_components\",\n \"workloads\",\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 versions = Gcp.Container.GetAzureVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var basic = new Gcp.Container.AzureClient(\"basic\", new()\n {\n ApplicationId = \"12345678-1234-1234-1234-123456789111\",\n Location = \"us-west1\",\n Name = \"client-name\",\n TenantId = \"12345678-1234-1234-1234-123456789111\",\n Project = \"my-project-name\",\n });\n\n var primary = new Gcp.Container.AzureCluster(\"primary\", new()\n {\n Authorization = new Gcp.Container.Inputs.AzureClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AzureClusterAuthorizationAdminUserArgs\n {\n Username = \"mmv2@google.com\",\n },\n },\n },\n AzureRegion = \"westus2\",\n Client = basic.Name.Apply(name =\u003e $\"projects/my-project-number/locations/us-west1/azureClients/{name}\"),\n ControlPlane = new Gcp.Container.Inputs.AzureClusterControlPlaneArgs\n {\n SshConfig = new Gcp.Container.Inputs.AzureClusterControlPlaneSshConfigArgs\n {\n AuthorizedKey = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n SubnetId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n Version = versions.Apply(getAzureVersionsResult =\u003e getAzureVersionsResult.ValidVersions[0]),\n },\n Fleet = new Gcp.Container.Inputs.AzureClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\n Networking = new Gcp.Container.Inputs.AzureClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.200.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.32.0.0/24\",\n },\n VirtualNetworkId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\",\n },\n ResourceGroupId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n Project = \"my-project-name\",\n LoggingConfig = new Gcp.Container.Inputs.AzureClusterLoggingConfigArgs\n {\n ComponentConfig = new Gcp.Container.Inputs.AzureClusterLoggingConfigComponentConfigArgs\n {\n EnableComponents = new[]\n {\n \"system_components\",\n \"workloads\",\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/v7/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.GetAzureVersions(ctx, \u0026container.GetAzureVersionsArgs{\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\tbasic, err := container.NewAzureClient(ctx, \"basic\", \u0026container.AzureClientArgs{\n\t\t\tApplicationId: pulumi.String(\"12345678-1234-1234-1234-123456789111\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"client-name\"),\n\t\t\tTenantId: pulumi.String(\"12345678-1234-1234-1234-123456789111\"),\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.NewAzureCluster(ctx, \"primary\", \u0026container.AzureClusterArgs{\n\t\t\tAuthorization: \u0026container.AzureClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AzureClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AzureClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"mmv2@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAzureRegion: pulumi.String(\"westus2\"),\n\t\t\tClient: basic.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/my-project-number/locations/us-west1/azureClients/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tControlPlane: \u0026container.AzureClusterControlPlaneArgs{\n\t\t\t\tSshConfig: \u0026container.AzureClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tAuthorizedKey: pulumi.String(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\"),\n\t\t\t\t},\n\t\t\t\tSubnetId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\"),\n\t\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\t},\n\t\t\tFleet: \u0026container.AzureClusterFleetArgs{\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\tName: pulumi.String(\"name\"),\n\t\t\tNetworking: \u0026container.AzureClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.200.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.32.0.0/24\"),\n\t\t\t\t},\n\t\t\t\tVirtualNetworkId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\"),\n\t\t\t},\n\t\t\tResourceGroupId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tLoggingConfig: \u0026container.AzureClusterLoggingConfigArgs{\n\t\t\t\tComponentConfig: \u0026container.AzureClusterLoggingConfigComponentConfigArgs{\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})\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.GetAzureVersionsArgs;\nimport com.pulumi.gcp.container.AzureClient;\nimport com.pulumi.gcp.container.AzureClientArgs;\nimport com.pulumi.gcp.container.AzureCluster;\nimport com.pulumi.gcp.container.AzureClusterArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterNetworkingArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterLoggingConfigArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterLoggingConfigComponentConfigArgs;\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.getAzureVersions(GetAzureVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var basic = new AzureClient(\"basic\", AzureClientArgs.builder()\n .applicationId(\"12345678-1234-1234-1234-123456789111\")\n .location(\"us-west1\")\n .name(\"client-name\")\n .tenantId(\"12345678-1234-1234-1234-123456789111\")\n .project(\"my-project-name\")\n .build());\n\n var primary = new AzureCluster(\"primary\", AzureClusterArgs.builder()\n .authorization(AzureClusterAuthorizationArgs.builder()\n .adminUsers(AzureClusterAuthorizationAdminUserArgs.builder()\n .username(\"mmv2@google.com\")\n .build())\n .build())\n .azureRegion(\"westus2\")\n .client(basic.name().applyValue(name -\u003e String.format(\"projects/my-project-number/locations/us-west1/azureClients/%s\", name)))\n .controlPlane(AzureClusterControlPlaneArgs.builder()\n .sshConfig(AzureClusterControlPlaneSshConfigArgs.builder()\n .authorizedKey(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\")\n .build())\n .subnetId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\")\n .version(versions.applyValue(getAzureVersionsResult -\u003e getAzureVersionsResult.validVersions()[0]))\n .build())\n .fleet(AzureClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\n .networking(AzureClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.200.0.0/16\")\n .serviceAddressCidrBlocks(\"10.32.0.0/24\")\n .virtualNetworkId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\")\n .build())\n .resourceGroupId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\")\n .project(\"my-project-name\")\n .loggingConfig(AzureClusterLoggingConfigArgs.builder()\n .componentConfig(AzureClusterLoggingConfigComponentConfigArgs.builder()\n .enableComponents( \n \"system_components\",\n \"workloads\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AzureCluster\n properties:\n authorization:\n adminUsers:\n - username: mmv2@google.com\n azureRegion: westus2\n client: projects/my-project-number/locations/us-west1/azureClients/${basic.name}\n controlPlane:\n sshConfig:\n authorizedKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\n subnetId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\n version: ${versions.validVersions[0]}\n fleet:\n project: my-project-number\n location: us-west1\n name: name\n networking:\n podAddressCidrBlocks:\n - 10.200.0.0/16\n serviceAddressCidrBlocks:\n - 10.32.0.0/24\n virtualNetworkId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\n resourceGroupId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\n project: my-project-name\n loggingConfig:\n componentConfig:\n enableComponents:\n - system_components\n - workloads\n basic:\n type: gcp:container:AzureClient\n properties:\n applicationId: 12345678-1234-1234-1234-123456789111\n location: us-west1\n name: client-name\n tenantId: 12345678-1234-1234-1234-123456789111\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAzureVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/azureClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/azureCluster:AzureCluster default projects/{{project}}/locations/{{location}}/azureClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/azureCluster:AzureCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/azureCluster:AzureCluster default {{location}}/{{name}}\n```\n\n", + "description": "An Anthos cluster running on Azure.\n\nFor more information, see:\n* [Multicloud overview](https://cloud.google.com/kubernetes-engine/multi-cloud/docs)\n## Example Usage\n\n### Basic_azure_cluster\nA basic example of a containerazure azure cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAzureVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst basic = new gcp.container.AzureClient(\"basic\", {\n applicationId: \"12345678-1234-1234-1234-123456789111\",\n location: \"us-west1\",\n name: \"client-name\",\n tenantId: \"12345678-1234-1234-1234-123456789111\",\n project: \"my-project-name\",\n});\nconst primary = new gcp.container.AzureCluster(\"primary\", {\n authorization: {\n adminUsers: [{\n username: \"mmv2@google.com\",\n }],\n adminGroups: [{\n group: \"group@domain.com\",\n }],\n },\n azureRegion: \"westus2\",\n client: pulumi.interpolate`projects/my-project-number/locations/us-west1/azureClients/${basic.name}`,\n controlPlane: {\n sshConfig: {\n authorizedKey: \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n subnetId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\n networking: {\n podAddressCidrBlocks: [\"10.200.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.32.0.0/24\"],\n virtualNetworkId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\",\n },\n resourceGroupId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_azure_versions(project=\"my-project-name\",\n location=\"us-west1\")\nbasic = gcp.container.AzureClient(\"basic\",\n application_id=\"12345678-1234-1234-1234-123456789111\",\n location=\"us-west1\",\n name=\"client-name\",\n tenant_id=\"12345678-1234-1234-1234-123456789111\",\n project=\"my-project-name\")\nprimary = gcp.container.AzureCluster(\"primary\",\n authorization={\n \"admin_users\": [{\n \"username\": \"mmv2@google.com\",\n }],\n \"admin_groups\": [{\n \"group\": \"group@domain.com\",\n }],\n },\n azure_region=\"westus2\",\n client=basic.name.apply(lambda name: f\"projects/my-project-number/locations/us-west1/azureClients/{name}\"),\n control_plane={\n \"ssh_config\": {\n \"authorized_key\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n \"subnet_id\": \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n \"version\": versions.valid_versions[0],\n },\n fleet={\n \"project\": \"my-project-number\",\n },\n location=\"us-west1\",\n name=\"name\",\n networking={\n \"pod_address_cidr_blocks\": [\"10.200.0.0/16\"],\n \"service_address_cidr_blocks\": [\"10.32.0.0/24\"],\n \"virtual_network_id\": \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\",\n },\n resource_group_id=\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\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.GetAzureVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var basic = new Gcp.Container.AzureClient(\"basic\", new()\n {\n ApplicationId = \"12345678-1234-1234-1234-123456789111\",\n Location = \"us-west1\",\n Name = \"client-name\",\n TenantId = \"12345678-1234-1234-1234-123456789111\",\n Project = \"my-project-name\",\n });\n\n var primary = new Gcp.Container.AzureCluster(\"primary\", new()\n {\n Authorization = new Gcp.Container.Inputs.AzureClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AzureClusterAuthorizationAdminUserArgs\n {\n Username = \"mmv2@google.com\",\n },\n },\n AdminGroups = new[]\n {\n new Gcp.Container.Inputs.AzureClusterAuthorizationAdminGroupArgs\n {\n Group = \"group@domain.com\",\n },\n },\n },\n AzureRegion = \"westus2\",\n Client = basic.Name.Apply(name =\u003e $\"projects/my-project-number/locations/us-west1/azureClients/{name}\"),\n ControlPlane = new Gcp.Container.Inputs.AzureClusterControlPlaneArgs\n {\n SshConfig = new Gcp.Container.Inputs.AzureClusterControlPlaneSshConfigArgs\n {\n AuthorizedKey = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n SubnetId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n Version = versions.Apply(getAzureVersionsResult =\u003e getAzureVersionsResult.ValidVersions[0]),\n },\n Fleet = new Gcp.Container.Inputs.AzureClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\n Networking = new Gcp.Container.Inputs.AzureClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.200.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.32.0.0/24\",\n },\n VirtualNetworkId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\",\n },\n ResourceGroupId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.GetAzureVersions(ctx, \u0026container.GetAzureVersionsArgs{\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\tbasic, err := container.NewAzureClient(ctx, \"basic\", \u0026container.AzureClientArgs{\n\t\t\tApplicationId: pulumi.String(\"12345678-1234-1234-1234-123456789111\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"client-name\"),\n\t\t\tTenantId: pulumi.String(\"12345678-1234-1234-1234-123456789111\"),\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.NewAzureCluster(ctx, \"primary\", \u0026container.AzureClusterArgs{\n\t\t\tAuthorization: \u0026container.AzureClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AzureClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AzureClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"mmv2@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAdminGroups: container.AzureClusterAuthorizationAdminGroupArray{\n\t\t\t\t\t\u0026container.AzureClusterAuthorizationAdminGroupArgs{\n\t\t\t\t\t\tGroup: pulumi.String(\"group@domain.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAzureRegion: pulumi.String(\"westus2\"),\n\t\t\tClient: basic.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/my-project-number/locations/us-west1/azureClients/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tControlPlane: \u0026container.AzureClusterControlPlaneArgs{\n\t\t\t\tSshConfig: \u0026container.AzureClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tAuthorizedKey: pulumi.String(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\"),\n\t\t\t\t},\n\t\t\t\tSubnetId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\"),\n\t\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\t},\n\t\t\tFleet: \u0026container.AzureClusterFleetArgs{\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\tName: pulumi.String(\"name\"),\n\t\t\tNetworking: \u0026container.AzureClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.200.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.32.0.0/24\"),\n\t\t\t\t},\n\t\t\t\tVirtualNetworkId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\"),\n\t\t\t},\n\t\t\tResourceGroupId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-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\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.GetAzureVersionsArgs;\nimport com.pulumi.gcp.container.AzureClient;\nimport com.pulumi.gcp.container.AzureClientArgs;\nimport com.pulumi.gcp.container.AzureCluster;\nimport com.pulumi.gcp.container.AzureClusterArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterNetworkingArgs;\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.getAzureVersions(GetAzureVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var basic = new AzureClient(\"basic\", AzureClientArgs.builder()\n .applicationId(\"12345678-1234-1234-1234-123456789111\")\n .location(\"us-west1\")\n .name(\"client-name\")\n .tenantId(\"12345678-1234-1234-1234-123456789111\")\n .project(\"my-project-name\")\n .build());\n\n var primary = new AzureCluster(\"primary\", AzureClusterArgs.builder()\n .authorization(AzureClusterAuthorizationArgs.builder()\n .adminUsers(AzureClusterAuthorizationAdminUserArgs.builder()\n .username(\"mmv2@google.com\")\n .build())\n .adminGroups(AzureClusterAuthorizationAdminGroupArgs.builder()\n .group(\"group@domain.com\")\n .build())\n .build())\n .azureRegion(\"westus2\")\n .client(basic.name().applyValue(name -\u003e String.format(\"projects/my-project-number/locations/us-west1/azureClients/%s\", name)))\n .controlPlane(AzureClusterControlPlaneArgs.builder()\n .sshConfig(AzureClusterControlPlaneSshConfigArgs.builder()\n .authorizedKey(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\")\n .build())\n .subnetId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\")\n .version(versions.applyValue(getAzureVersionsResult -\u003e getAzureVersionsResult.validVersions()[0]))\n .build())\n .fleet(AzureClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\n .networking(AzureClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.200.0.0/16\")\n .serviceAddressCidrBlocks(\"10.32.0.0/24\")\n .virtualNetworkId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\")\n .build())\n .resourceGroupId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\")\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AzureCluster\n properties:\n authorization:\n adminUsers:\n - username: mmv2@google.com\n adminGroups:\n - group: group@domain.com\n azureRegion: westus2\n client: projects/my-project-number/locations/us-west1/azureClients/${basic.name}\n controlPlane:\n sshConfig:\n authorizedKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\n subnetId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\n version: ${versions.validVersions[0]}\n fleet:\n project: my-project-number\n location: us-west1\n name: name\n networking:\n podAddressCidrBlocks:\n - 10.200.0.0/16\n serviceAddressCidrBlocks:\n - 10.32.0.0/24\n virtualNetworkId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\n resourceGroupId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\n project: my-project-name\n basic:\n type: gcp:container:AzureClient\n properties:\n applicationId: 12345678-1234-1234-1234-123456789111\n location: us-west1\n name: client-name\n tenantId: 12345678-1234-1234-1234-123456789111\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAzureVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Beta_basic_enum_azure_cluster\nA basic example of a containerazure azure cluster with lowercase enums (beta)\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAzureVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst basic = new gcp.container.AzureClient(\"basic\", {\n applicationId: \"12345678-1234-1234-1234-123456789111\",\n location: \"us-west1\",\n name: \"client-name\",\n tenantId: \"12345678-1234-1234-1234-123456789111\",\n project: \"my-project-name\",\n});\nconst primary = new gcp.container.AzureCluster(\"primary\", {\n authorization: {\n adminUsers: [{\n username: \"mmv2@google.com\",\n }],\n },\n azureRegion: \"westus2\",\n client: pulumi.interpolate`projects/my-project-number/locations/us-west1/azureClients/${basic.name}`,\n controlPlane: {\n sshConfig: {\n authorizedKey: \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n subnetId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\n networking: {\n podAddressCidrBlocks: [\"10.200.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.32.0.0/24\"],\n virtualNetworkId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\",\n },\n resourceGroupId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n project: \"my-project-name\",\n loggingConfig: {\n componentConfig: {\n enableComponents: [\n \"system_components\",\n \"workloads\",\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_azure_versions(project=\"my-project-name\",\n location=\"us-west1\")\nbasic = gcp.container.AzureClient(\"basic\",\n application_id=\"12345678-1234-1234-1234-123456789111\",\n location=\"us-west1\",\n name=\"client-name\",\n tenant_id=\"12345678-1234-1234-1234-123456789111\",\n project=\"my-project-name\")\nprimary = gcp.container.AzureCluster(\"primary\",\n authorization={\n \"admin_users\": [{\n \"username\": \"mmv2@google.com\",\n }],\n },\n azure_region=\"westus2\",\n client=basic.name.apply(lambda name: f\"projects/my-project-number/locations/us-west1/azureClients/{name}\"),\n control_plane={\n \"ssh_config\": {\n \"authorized_key\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n \"subnet_id\": \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n \"version\": versions.valid_versions[0],\n },\n fleet={\n \"project\": \"my-project-number\",\n },\n location=\"us-west1\",\n name=\"name\",\n networking={\n \"pod_address_cidr_blocks\": [\"10.200.0.0/16\"],\n \"service_address_cidr_blocks\": [\"10.32.0.0/24\"],\n \"virtual_network_id\": \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\",\n },\n resource_group_id=\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n project=\"my-project-name\",\n logging_config={\n \"component_config\": {\n \"enable_components\": [\n \"system_components\",\n \"workloads\",\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 versions = Gcp.Container.GetAzureVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var basic = new Gcp.Container.AzureClient(\"basic\", new()\n {\n ApplicationId = \"12345678-1234-1234-1234-123456789111\",\n Location = \"us-west1\",\n Name = \"client-name\",\n TenantId = \"12345678-1234-1234-1234-123456789111\",\n Project = \"my-project-name\",\n });\n\n var primary = new Gcp.Container.AzureCluster(\"primary\", new()\n {\n Authorization = new Gcp.Container.Inputs.AzureClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AzureClusterAuthorizationAdminUserArgs\n {\n Username = \"mmv2@google.com\",\n },\n },\n },\n AzureRegion = \"westus2\",\n Client = basic.Name.Apply(name =\u003e $\"projects/my-project-number/locations/us-west1/azureClients/{name}\"),\n ControlPlane = new Gcp.Container.Inputs.AzureClusterControlPlaneArgs\n {\n SshConfig = new Gcp.Container.Inputs.AzureClusterControlPlaneSshConfigArgs\n {\n AuthorizedKey = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n SubnetId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n Version = versions.Apply(getAzureVersionsResult =\u003e getAzureVersionsResult.ValidVersions[0]),\n },\n Fleet = new Gcp.Container.Inputs.AzureClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\n Networking = new Gcp.Container.Inputs.AzureClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.200.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.32.0.0/24\",\n },\n VirtualNetworkId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\",\n },\n ResourceGroupId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n Project = \"my-project-name\",\n LoggingConfig = new Gcp.Container.Inputs.AzureClusterLoggingConfigArgs\n {\n ComponentConfig = new Gcp.Container.Inputs.AzureClusterLoggingConfigComponentConfigArgs\n {\n EnableComponents = new[]\n {\n \"system_components\",\n \"workloads\",\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/v7/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.GetAzureVersions(ctx, \u0026container.GetAzureVersionsArgs{\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\tbasic, err := container.NewAzureClient(ctx, \"basic\", \u0026container.AzureClientArgs{\n\t\t\tApplicationId: pulumi.String(\"12345678-1234-1234-1234-123456789111\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"client-name\"),\n\t\t\tTenantId: pulumi.String(\"12345678-1234-1234-1234-123456789111\"),\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.NewAzureCluster(ctx, \"primary\", \u0026container.AzureClusterArgs{\n\t\t\tAuthorization: \u0026container.AzureClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AzureClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AzureClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"mmv2@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAzureRegion: pulumi.String(\"westus2\"),\n\t\t\tClient: basic.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/my-project-number/locations/us-west1/azureClients/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tControlPlane: \u0026container.AzureClusterControlPlaneArgs{\n\t\t\t\tSshConfig: \u0026container.AzureClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tAuthorizedKey: pulumi.String(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\"),\n\t\t\t\t},\n\t\t\t\tSubnetId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\"),\n\t\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\t},\n\t\t\tFleet: \u0026container.AzureClusterFleetArgs{\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\tName: pulumi.String(\"name\"),\n\t\t\tNetworking: \u0026container.AzureClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.200.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.32.0.0/24\"),\n\t\t\t\t},\n\t\t\t\tVirtualNetworkId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\"),\n\t\t\t},\n\t\t\tResourceGroupId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tLoggingConfig: \u0026container.AzureClusterLoggingConfigArgs{\n\t\t\t\tComponentConfig: \u0026container.AzureClusterLoggingConfigComponentConfigArgs{\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})\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.GetAzureVersionsArgs;\nimport com.pulumi.gcp.container.AzureClient;\nimport com.pulumi.gcp.container.AzureClientArgs;\nimport com.pulumi.gcp.container.AzureCluster;\nimport com.pulumi.gcp.container.AzureClusterArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterNetworkingArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterLoggingConfigArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterLoggingConfigComponentConfigArgs;\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.getAzureVersions(GetAzureVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var basic = new AzureClient(\"basic\", AzureClientArgs.builder()\n .applicationId(\"12345678-1234-1234-1234-123456789111\")\n .location(\"us-west1\")\n .name(\"client-name\")\n .tenantId(\"12345678-1234-1234-1234-123456789111\")\n .project(\"my-project-name\")\n .build());\n\n var primary = new AzureCluster(\"primary\", AzureClusterArgs.builder()\n .authorization(AzureClusterAuthorizationArgs.builder()\n .adminUsers(AzureClusterAuthorizationAdminUserArgs.builder()\n .username(\"mmv2@google.com\")\n .build())\n .build())\n .azureRegion(\"westus2\")\n .client(basic.name().applyValue(name -\u003e String.format(\"projects/my-project-number/locations/us-west1/azureClients/%s\", name)))\n .controlPlane(AzureClusterControlPlaneArgs.builder()\n .sshConfig(AzureClusterControlPlaneSshConfigArgs.builder()\n .authorizedKey(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\")\n .build())\n .subnetId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\")\n .version(versions.applyValue(getAzureVersionsResult -\u003e getAzureVersionsResult.validVersions()[0]))\n .build())\n .fleet(AzureClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\n .networking(AzureClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.200.0.0/16\")\n .serviceAddressCidrBlocks(\"10.32.0.0/24\")\n .virtualNetworkId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\")\n .build())\n .resourceGroupId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\")\n .project(\"my-project-name\")\n .loggingConfig(AzureClusterLoggingConfigArgs.builder()\n .componentConfig(AzureClusterLoggingConfigComponentConfigArgs.builder()\n .enableComponents( \n \"system_components\",\n \"workloads\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AzureCluster\n properties:\n authorization:\n adminUsers:\n - username: mmv2@google.com\n azureRegion: westus2\n client: projects/my-project-number/locations/us-west1/azureClients/${basic.name}\n controlPlane:\n sshConfig:\n authorizedKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\n subnetId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\n version: ${versions.validVersions[0]}\n fleet:\n project: my-project-number\n location: us-west1\n name: name\n networking:\n podAddressCidrBlocks:\n - 10.200.0.0/16\n serviceAddressCidrBlocks:\n - 10.32.0.0/24\n virtualNetworkId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\n resourceGroupId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\n project: my-project-name\n loggingConfig:\n componentConfig:\n enableComponents:\n - system_components\n - workloads\n basic:\n type: gcp:container:AzureClient\n properties:\n applicationId: 12345678-1234-1234-1234-123456789111\n location: us-west1\n name: client-name\n tenantId: 12345678-1234-1234-1234-123456789111\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAzureVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/azureClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/azureCluster:AzureCluster default projects/{{project}}/locations/{{location}}/azureClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/azureCluster:AzureCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/azureCluster:AzureCluster default {{location}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -167708,7 +167708,7 @@ } }, "gcp:container/azureNodePool:AzureNodePool": { - "description": "An Anthos node pool running on Azure.\n\nFor more information, see:\n* [Multicloud overview](https://cloud.google.com/kubernetes-engine/multi-cloud/docs)\n## Example Usage\n\n### Basic_azure_node_pool\nA basic example of a containerazure azure node pool\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAzureVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst basic = new gcp.container.AzureClient(\"basic\", {\n applicationId: \"12345678-1234-1234-1234-123456789111\",\n location: \"us-west1\",\n name: \"client-name\",\n tenantId: \"12345678-1234-1234-1234-123456789111\",\n project: \"my-project-name\",\n});\nconst primary = new gcp.container.AzureCluster(\"primary\", {\n authorization: {\n adminUsers: [{\n username: \"mmv2@google.com\",\n }],\n },\n azureRegion: \"westus2\",\n client: pulumi.interpolate`projects/my-project-number/locations/us-west1/azureClients/${basic.name}`,\n controlPlane: {\n sshConfig: {\n authorizedKey: \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n subnetId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\n networking: {\n podAddressCidrBlocks: [\"10.200.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.32.0.0/24\"],\n virtualNetworkId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\",\n },\n resourceGroupId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n project: \"my-project-name\",\n});\nconst primaryAzureNodePool = new gcp.container.AzureNodePool(\"primary\", {\n autoscaling: {\n maxNodeCount: 3,\n minNodeCount: 2,\n },\n cluster: primary.name,\n config: {\n sshConfig: {\n authorizedKey: \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n proxyConfig: {\n resourceGroupId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n secretId: \"https://my--dev-keyvault.vault.azure.net/secrets/my--dev-secret/0000000000000000000000000000000000\",\n },\n rootVolume: {\n sizeGib: 32,\n },\n tags: {\n owner: \"mmv2\",\n },\n labels: {\n key_one: \"label_one\",\n },\n vmSize: \"Standard_DS2_v2\",\n },\n location: \"us-west1\",\n maxPodsConstraint: {\n maxPodsPerNode: 110,\n },\n name: \"node-pool-name\",\n subnetId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"annotation-one\": \"value-one\",\n },\n management: {\n autoRepair: true,\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_azure_versions(project=\"my-project-name\",\n location=\"us-west1\")\nbasic = gcp.container.AzureClient(\"basic\",\n application_id=\"12345678-1234-1234-1234-123456789111\",\n location=\"us-west1\",\n name=\"client-name\",\n tenant_id=\"12345678-1234-1234-1234-123456789111\",\n project=\"my-project-name\")\nprimary = gcp.container.AzureCluster(\"primary\",\n authorization={\n \"adminUsers\": [{\n \"username\": \"mmv2@google.com\",\n }],\n },\n azure_region=\"westus2\",\n client=basic.name.apply(lambda name: f\"projects/my-project-number/locations/us-west1/azureClients/{name}\"),\n control_plane={\n \"sshConfig\": {\n \"authorizedKey\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n \"subnetId\": \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n \"version\": versions.valid_versions[0],\n },\n fleet={\n \"project\": \"my-project-number\",\n },\n location=\"us-west1\",\n name=\"name\",\n networking={\n \"podAddressCidrBlocks\": [\"10.200.0.0/16\"],\n \"serviceAddressCidrBlocks\": [\"10.32.0.0/24\"],\n \"virtualNetworkId\": \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\",\n },\n resource_group_id=\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n project=\"my-project-name\")\nprimary_azure_node_pool = gcp.container.AzureNodePool(\"primary\",\n autoscaling={\n \"maxNodeCount\": 3,\n \"minNodeCount\": 2,\n },\n cluster=primary.name,\n config={\n \"sshConfig\": {\n \"authorizedKey\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n \"proxyConfig\": {\n \"resourceGroupId\": \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n \"secretId\": \"https://my--dev-keyvault.vault.azure.net/secrets/my--dev-secret/0000000000000000000000000000000000\",\n },\n \"rootVolume\": {\n \"sizeGib\": 32,\n },\n \"tags\": {\n \"owner\": \"mmv2\",\n },\n \"labels\": {\n \"key_one\": \"label_one\",\n },\n \"vmSize\": \"Standard_DS2_v2\",\n },\n location=\"us-west1\",\n max_pods_constraint={\n \"maxPodsPerNode\": 110,\n },\n name=\"node-pool-name\",\n subnet_id=\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n version=versions.valid_versions[0],\n annotations={\n \"annotation-one\": \"value-one\",\n },\n management={\n \"autoRepair\": True,\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.GetAzureVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var basic = new Gcp.Container.AzureClient(\"basic\", new()\n {\n ApplicationId = \"12345678-1234-1234-1234-123456789111\",\n Location = \"us-west1\",\n Name = \"client-name\",\n TenantId = \"12345678-1234-1234-1234-123456789111\",\n Project = \"my-project-name\",\n });\n\n var primary = new Gcp.Container.AzureCluster(\"primary\", new()\n {\n Authorization = new Gcp.Container.Inputs.AzureClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AzureClusterAuthorizationAdminUserArgs\n {\n Username = \"mmv2@google.com\",\n },\n },\n },\n AzureRegion = \"westus2\",\n Client = basic.Name.Apply(name =\u003e $\"projects/my-project-number/locations/us-west1/azureClients/{name}\"),\n ControlPlane = new Gcp.Container.Inputs.AzureClusterControlPlaneArgs\n {\n SshConfig = new Gcp.Container.Inputs.AzureClusterControlPlaneSshConfigArgs\n {\n AuthorizedKey = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n SubnetId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n Version = versions.Apply(getAzureVersionsResult =\u003e getAzureVersionsResult.ValidVersions[0]),\n },\n Fleet = new Gcp.Container.Inputs.AzureClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\n Networking = new Gcp.Container.Inputs.AzureClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.200.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.32.0.0/24\",\n },\n VirtualNetworkId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\",\n },\n ResourceGroupId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n Project = \"my-project-name\",\n });\n\n var primaryAzureNodePool = new Gcp.Container.AzureNodePool(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AzureNodePoolAutoscalingArgs\n {\n MaxNodeCount = 3,\n MinNodeCount = 2,\n },\n Cluster = primary.Name,\n Config = new Gcp.Container.Inputs.AzureNodePoolConfigArgs\n {\n SshConfig = new Gcp.Container.Inputs.AzureNodePoolConfigSshConfigArgs\n {\n AuthorizedKey = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AzureNodePoolConfigProxyConfigArgs\n {\n ResourceGroupId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n SecretId = \"https://my--dev-keyvault.vault.azure.net/secrets/my--dev-secret/0000000000000000000000000000000000\",\n },\n RootVolume = new Gcp.Container.Inputs.AzureNodePoolConfigRootVolumeArgs\n {\n SizeGib = 32,\n },\n Tags = \n {\n { \"owner\", \"mmv2\" },\n },\n Labels = \n {\n { \"key_one\", \"label_one\" },\n },\n VmSize = \"Standard_DS2_v2\",\n },\n Location = \"us-west1\",\n MaxPodsConstraint = new Gcp.Container.Inputs.AzureNodePoolMaxPodsConstraintArgs\n {\n MaxPodsPerNode = 110,\n },\n Name = \"node-pool-name\",\n SubnetId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n Version = versions.Apply(getAzureVersionsResult =\u003e getAzureVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"annotation-one\", \"value-one\" },\n },\n Management = new Gcp.Container.Inputs.AzureNodePoolManagementArgs\n {\n AutoRepair = true,\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.GetAzureVersions(ctx, \u0026container.GetAzureVersionsArgs{\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\tbasic, err := container.NewAzureClient(ctx, \"basic\", \u0026container.AzureClientArgs{\n\t\t\tApplicationId: pulumi.String(\"12345678-1234-1234-1234-123456789111\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"client-name\"),\n\t\t\tTenantId: pulumi.String(\"12345678-1234-1234-1234-123456789111\"),\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\tprimary, err := container.NewAzureCluster(ctx, \"primary\", \u0026container.AzureClusterArgs{\n\t\t\tAuthorization: \u0026container.AzureClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AzureClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AzureClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"mmv2@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAzureRegion: pulumi.String(\"westus2\"),\n\t\t\tClient: basic.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/my-project-number/locations/us-west1/azureClients/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tControlPlane: \u0026container.AzureClusterControlPlaneArgs{\n\t\t\t\tSshConfig: \u0026container.AzureClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tAuthorizedKey: pulumi.String(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\"),\n\t\t\t\t},\n\t\t\t\tSubnetId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\"),\n\t\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\t},\n\t\t\tFleet: \u0026container.AzureClusterFleetArgs{\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\tName: pulumi.String(\"name\"),\n\t\t\tNetworking: \u0026container.AzureClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.200.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.32.0.0/24\"),\n\t\t\t\t},\n\t\t\t\tVirtualNetworkId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\"),\n\t\t\t},\n\t\t\tResourceGroupId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-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.NewAzureNodePool(ctx, \"primary\", \u0026container.AzureNodePoolArgs{\n\t\t\tAutoscaling: \u0026container.AzureNodePoolAutoscalingArgs{\n\t\t\t\tMaxNodeCount: pulumi.Int(3),\n\t\t\t\tMinNodeCount: pulumi.Int(2),\n\t\t\t},\n\t\t\tCluster: primary.Name,\n\t\t\tConfig: \u0026container.AzureNodePoolConfigArgs{\n\t\t\t\tSshConfig: \u0026container.AzureNodePoolConfigSshConfigArgs{\n\t\t\t\t\tAuthorizedKey: pulumi.String(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AzureNodePoolConfigProxyConfigArgs{\n\t\t\t\t\tResourceGroupId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\"),\n\t\t\t\t\tSecretId: pulumi.String(\"https://my--dev-keyvault.vault.azure.net/secrets/my--dev-secret/0000000000000000000000000000000000\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AzureNodePoolConfigRootVolumeArgs{\n\t\t\t\t\tSizeGib: pulumi.Int(32),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"mmv2\"),\n\t\t\t\t},\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"key_one\": pulumi.String(\"label_one\"),\n\t\t\t\t},\n\t\t\t\tVmSize: pulumi.String(\"Standard_DS2_v2\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tMaxPodsConstraint: \u0026container.AzureNodePoolMaxPodsConstraintArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(110),\n\t\t\t},\n\t\t\tName: pulumi.String(\"node-pool-name\"),\n\t\t\tSubnetId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\"),\n\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"annotation-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tManagement: \u0026container.AzureNodePoolManagementArgs{\n\t\t\t\tAutoRepair: pulumi.Bool(true),\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.GetAzureVersionsArgs;\nimport com.pulumi.gcp.container.AzureClient;\nimport com.pulumi.gcp.container.AzureClientArgs;\nimport com.pulumi.gcp.container.AzureCluster;\nimport com.pulumi.gcp.container.AzureClusterArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterNetworkingArgs;\nimport com.pulumi.gcp.container.AzureNodePool;\nimport com.pulumi.gcp.container.AzureNodePoolArgs;\nimport com.pulumi.gcp.container.inputs.AzureNodePoolAutoscalingArgs;\nimport com.pulumi.gcp.container.inputs.AzureNodePoolConfigArgs;\nimport com.pulumi.gcp.container.inputs.AzureNodePoolConfigSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AzureNodePoolConfigProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AzureNodePoolConfigRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AzureNodePoolMaxPodsConstraintArgs;\nimport com.pulumi.gcp.container.inputs.AzureNodePoolManagementArgs;\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.getAzureVersions(GetAzureVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var basic = new AzureClient(\"basic\", AzureClientArgs.builder()\n .applicationId(\"12345678-1234-1234-1234-123456789111\")\n .location(\"us-west1\")\n .name(\"client-name\")\n .tenantId(\"12345678-1234-1234-1234-123456789111\")\n .project(\"my-project-name\")\n .build());\n\n var primary = new AzureCluster(\"primary\", AzureClusterArgs.builder()\n .authorization(AzureClusterAuthorizationArgs.builder()\n .adminUsers(AzureClusterAuthorizationAdminUserArgs.builder()\n .username(\"mmv2@google.com\")\n .build())\n .build())\n .azureRegion(\"westus2\")\n .client(basic.name().applyValue(name -\u003e String.format(\"projects/my-project-number/locations/us-west1/azureClients/%s\", name)))\n .controlPlane(AzureClusterControlPlaneArgs.builder()\n .sshConfig(AzureClusterControlPlaneSshConfigArgs.builder()\n .authorizedKey(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\")\n .build())\n .subnetId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\")\n .version(versions.applyValue(getAzureVersionsResult -\u003e getAzureVersionsResult.validVersions()[0]))\n .build())\n .fleet(AzureClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\n .networking(AzureClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.200.0.0/16\")\n .serviceAddressCidrBlocks(\"10.32.0.0/24\")\n .virtualNetworkId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\")\n .build())\n .resourceGroupId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\")\n .project(\"my-project-name\")\n .build());\n\n var primaryAzureNodePool = new AzureNodePool(\"primaryAzureNodePool\", AzureNodePoolArgs.builder()\n .autoscaling(AzureNodePoolAutoscalingArgs.builder()\n .maxNodeCount(3)\n .minNodeCount(2)\n .build())\n .cluster(primary.name())\n .config(AzureNodePoolConfigArgs.builder()\n .sshConfig(AzureNodePoolConfigSshConfigArgs.builder()\n .authorizedKey(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\")\n .build())\n .proxyConfig(AzureNodePoolConfigProxyConfigArgs.builder()\n .resourceGroupId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\")\n .secretId(\"https://my--dev-keyvault.vault.azure.net/secrets/my--dev-secret/0000000000000000000000000000000000\")\n .build())\n .rootVolume(AzureNodePoolConfigRootVolumeArgs.builder()\n .sizeGib(32)\n .build())\n .tags(Map.of(\"owner\", \"mmv2\"))\n .labels(Map.of(\"key_one\", \"label_one\"))\n .vmSize(\"Standard_DS2_v2\")\n .build())\n .location(\"us-west1\")\n .maxPodsConstraint(AzureNodePoolMaxPodsConstraintArgs.builder()\n .maxPodsPerNode(110)\n .build())\n .name(\"node-pool-name\")\n .subnetId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\")\n .version(versions.applyValue(getAzureVersionsResult -\u003e getAzureVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"annotation-one\", \"value-one\"))\n .management(AzureNodePoolManagementArgs.builder()\n .autoRepair(true)\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AzureCluster\n properties:\n authorization:\n adminUsers:\n - username: mmv2@google.com\n azureRegion: westus2\n client: projects/my-project-number/locations/us-west1/azureClients/${basic.name}\n controlPlane:\n sshConfig:\n authorizedKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\n subnetId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\n version: ${versions.validVersions[0]}\n fleet:\n project: my-project-number\n location: us-west1\n name: name\n networking:\n podAddressCidrBlocks:\n - 10.200.0.0/16\n serviceAddressCidrBlocks:\n - 10.32.0.0/24\n virtualNetworkId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\n resourceGroupId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\n project: my-project-name\n basic:\n type: gcp:container:AzureClient\n properties:\n applicationId: 12345678-1234-1234-1234-123456789111\n location: us-west1\n name: client-name\n tenantId: 12345678-1234-1234-1234-123456789111\n project: my-project-name\n primaryAzureNodePool:\n type: gcp:container:AzureNodePool\n name: primary\n properties:\n autoscaling:\n maxNodeCount: 3\n minNodeCount: 2\n cluster: ${primary.name}\n config:\n sshConfig:\n authorizedKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\n proxyConfig:\n resourceGroupId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\n secretId: https://my--dev-keyvault.vault.azure.net/secrets/my--dev-secret/0000000000000000000000000000000000\n rootVolume:\n sizeGib: 32\n tags:\n owner: mmv2\n labels:\n key_one: label_one\n vmSize: Standard_DS2_v2\n location: us-west1\n maxPodsConstraint:\n maxPodsPerNode: 110\n name: node-pool-name\n subnetId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\n version: ${versions.validVersions[0]}\n annotations:\n annotation-one: value-one\n management:\n autoRepair: true\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAzureVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/azureClusters/{{cluster}}/azureNodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{name}}`\n\n* `{{location}}/{{cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, NodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/azureNodePool:AzureNodePool default projects/{{project}}/locations/{{location}}/azureClusters/{{cluster}}/azureNodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/azureNodePool:AzureNodePool default {{project}}/{{location}}/{{cluster}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/azureNodePool:AzureNodePool default {{location}}/{{cluster}}/{{name}}\n```\n\n", + "description": "An Anthos node pool running on Azure.\n\nFor more information, see:\n* [Multicloud overview](https://cloud.google.com/kubernetes-engine/multi-cloud/docs)\n## Example Usage\n\n### Basic_azure_node_pool\nA basic example of a containerazure azure node pool\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAzureVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst basic = new gcp.container.AzureClient(\"basic\", {\n applicationId: \"12345678-1234-1234-1234-123456789111\",\n location: \"us-west1\",\n name: \"client-name\",\n tenantId: \"12345678-1234-1234-1234-123456789111\",\n project: \"my-project-name\",\n});\nconst primary = new gcp.container.AzureCluster(\"primary\", {\n authorization: {\n adminUsers: [{\n username: \"mmv2@google.com\",\n }],\n },\n azureRegion: \"westus2\",\n client: pulumi.interpolate`projects/my-project-number/locations/us-west1/azureClients/${basic.name}`,\n controlPlane: {\n sshConfig: {\n authorizedKey: \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n subnetId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\n networking: {\n podAddressCidrBlocks: [\"10.200.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.32.0.0/24\"],\n virtualNetworkId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\",\n },\n resourceGroupId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n project: \"my-project-name\",\n});\nconst primaryAzureNodePool = new gcp.container.AzureNodePool(\"primary\", {\n autoscaling: {\n maxNodeCount: 3,\n minNodeCount: 2,\n },\n cluster: primary.name,\n config: {\n sshConfig: {\n authorizedKey: \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n proxyConfig: {\n resourceGroupId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n secretId: \"https://my--dev-keyvault.vault.azure.net/secrets/my--dev-secret/0000000000000000000000000000000000\",\n },\n rootVolume: {\n sizeGib: 32,\n },\n tags: {\n owner: \"mmv2\",\n },\n labels: {\n key_one: \"label_one\",\n },\n vmSize: \"Standard_DS2_v2\",\n },\n location: \"us-west1\",\n maxPodsConstraint: {\n maxPodsPerNode: 110,\n },\n name: \"node-pool-name\",\n subnetId: \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"annotation-one\": \"value-one\",\n },\n management: {\n autoRepair: true,\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_azure_versions(project=\"my-project-name\",\n location=\"us-west1\")\nbasic = gcp.container.AzureClient(\"basic\",\n application_id=\"12345678-1234-1234-1234-123456789111\",\n location=\"us-west1\",\n name=\"client-name\",\n tenant_id=\"12345678-1234-1234-1234-123456789111\",\n project=\"my-project-name\")\nprimary = gcp.container.AzureCluster(\"primary\",\n authorization={\n \"admin_users\": [{\n \"username\": \"mmv2@google.com\",\n }],\n },\n azure_region=\"westus2\",\n client=basic.name.apply(lambda name: f\"projects/my-project-number/locations/us-west1/azureClients/{name}\"),\n control_plane={\n \"ssh_config\": {\n \"authorized_key\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n \"subnet_id\": \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n \"version\": versions.valid_versions[0],\n },\n fleet={\n \"project\": \"my-project-number\",\n },\n location=\"us-west1\",\n name=\"name\",\n networking={\n \"pod_address_cidr_blocks\": [\"10.200.0.0/16\"],\n \"service_address_cidr_blocks\": [\"10.32.0.0/24\"],\n \"virtual_network_id\": \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\",\n },\n resource_group_id=\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n project=\"my-project-name\")\nprimary_azure_node_pool = gcp.container.AzureNodePool(\"primary\",\n autoscaling={\n \"max_node_count\": 3,\n \"min_node_count\": 2,\n },\n cluster=primary.name,\n config={\n \"ssh_config\": {\n \"authorized_key\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n \"proxy_config\": {\n \"resource_group_id\": \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n \"secret_id\": \"https://my--dev-keyvault.vault.azure.net/secrets/my--dev-secret/0000000000000000000000000000000000\",\n },\n \"root_volume\": {\n \"size_gib\": 32,\n },\n \"tags\": {\n \"owner\": \"mmv2\",\n },\n \"labels\": {\n \"key_one\": \"label_one\",\n },\n \"vm_size\": \"Standard_DS2_v2\",\n },\n location=\"us-west1\",\n max_pods_constraint={\n \"max_pods_per_node\": 110,\n },\n name=\"node-pool-name\",\n subnet_id=\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n version=versions.valid_versions[0],\n annotations={\n \"annotation-one\": \"value-one\",\n },\n management={\n \"auto_repair\": True,\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.GetAzureVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var basic = new Gcp.Container.AzureClient(\"basic\", new()\n {\n ApplicationId = \"12345678-1234-1234-1234-123456789111\",\n Location = \"us-west1\",\n Name = \"client-name\",\n TenantId = \"12345678-1234-1234-1234-123456789111\",\n Project = \"my-project-name\",\n });\n\n var primary = new Gcp.Container.AzureCluster(\"primary\", new()\n {\n Authorization = new Gcp.Container.Inputs.AzureClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AzureClusterAuthorizationAdminUserArgs\n {\n Username = \"mmv2@google.com\",\n },\n },\n },\n AzureRegion = \"westus2\",\n Client = basic.Name.Apply(name =\u003e $\"projects/my-project-number/locations/us-west1/azureClients/{name}\"),\n ControlPlane = new Gcp.Container.Inputs.AzureClusterControlPlaneArgs\n {\n SshConfig = new Gcp.Container.Inputs.AzureClusterControlPlaneSshConfigArgs\n {\n AuthorizedKey = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n SubnetId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n Version = versions.Apply(getAzureVersionsResult =\u003e getAzureVersionsResult.ValidVersions[0]),\n },\n Fleet = new Gcp.Container.Inputs.AzureClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\n Networking = new Gcp.Container.Inputs.AzureClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.200.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.32.0.0/24\",\n },\n VirtualNetworkId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\",\n },\n ResourceGroupId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n Project = \"my-project-name\",\n });\n\n var primaryAzureNodePool = new Gcp.Container.AzureNodePool(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AzureNodePoolAutoscalingArgs\n {\n MaxNodeCount = 3,\n MinNodeCount = 2,\n },\n Cluster = primary.Name,\n Config = new Gcp.Container.Inputs.AzureNodePoolConfigArgs\n {\n SshConfig = new Gcp.Container.Inputs.AzureNodePoolConfigSshConfigArgs\n {\n AuthorizedKey = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AzureNodePoolConfigProxyConfigArgs\n {\n ResourceGroupId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\",\n SecretId = \"https://my--dev-keyvault.vault.azure.net/secrets/my--dev-secret/0000000000000000000000000000000000\",\n },\n RootVolume = new Gcp.Container.Inputs.AzureNodePoolConfigRootVolumeArgs\n {\n SizeGib = 32,\n },\n Tags = \n {\n { \"owner\", \"mmv2\" },\n },\n Labels = \n {\n { \"key_one\", \"label_one\" },\n },\n VmSize = \"Standard_DS2_v2\",\n },\n Location = \"us-west1\",\n MaxPodsConstraint = new Gcp.Container.Inputs.AzureNodePoolMaxPodsConstraintArgs\n {\n MaxPodsPerNode = 110,\n },\n Name = \"node-pool-name\",\n SubnetId = \"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\",\n Version = versions.Apply(getAzureVersionsResult =\u003e getAzureVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"annotation-one\", \"value-one\" },\n },\n Management = new Gcp.Container.Inputs.AzureNodePoolManagementArgs\n {\n AutoRepair = true,\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.GetAzureVersions(ctx, \u0026container.GetAzureVersionsArgs{\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\tbasic, err := container.NewAzureClient(ctx, \"basic\", \u0026container.AzureClientArgs{\n\t\t\tApplicationId: pulumi.String(\"12345678-1234-1234-1234-123456789111\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"client-name\"),\n\t\t\tTenantId: pulumi.String(\"12345678-1234-1234-1234-123456789111\"),\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\tprimary, err := container.NewAzureCluster(ctx, \"primary\", \u0026container.AzureClusterArgs{\n\t\t\tAuthorization: \u0026container.AzureClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AzureClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AzureClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"mmv2@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAzureRegion: pulumi.String(\"westus2\"),\n\t\t\tClient: basic.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/my-project-number/locations/us-west1/azureClients/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tControlPlane: \u0026container.AzureClusterControlPlaneArgs{\n\t\t\t\tSshConfig: \u0026container.AzureClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tAuthorizedKey: pulumi.String(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\"),\n\t\t\t\t},\n\t\t\t\tSubnetId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\"),\n\t\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\t},\n\t\t\tFleet: \u0026container.AzureClusterFleetArgs{\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\tName: pulumi.String(\"name\"),\n\t\t\tNetworking: \u0026container.AzureClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.200.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.32.0.0/24\"),\n\t\t\t\t},\n\t\t\t\tVirtualNetworkId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\"),\n\t\t\t},\n\t\t\tResourceGroupId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-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.NewAzureNodePool(ctx, \"primary\", \u0026container.AzureNodePoolArgs{\n\t\t\tAutoscaling: \u0026container.AzureNodePoolAutoscalingArgs{\n\t\t\t\tMaxNodeCount: pulumi.Int(3),\n\t\t\t\tMinNodeCount: pulumi.Int(2),\n\t\t\t},\n\t\t\tCluster: primary.Name,\n\t\t\tConfig: \u0026container.AzureNodePoolConfigArgs{\n\t\t\t\tSshConfig: \u0026container.AzureNodePoolConfigSshConfigArgs{\n\t\t\t\t\tAuthorizedKey: pulumi.String(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AzureNodePoolConfigProxyConfigArgs{\n\t\t\t\t\tResourceGroupId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\"),\n\t\t\t\t\tSecretId: pulumi.String(\"https://my--dev-keyvault.vault.azure.net/secrets/my--dev-secret/0000000000000000000000000000000000\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AzureNodePoolConfigRootVolumeArgs{\n\t\t\t\t\tSizeGib: pulumi.Int(32),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"mmv2\"),\n\t\t\t\t},\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"key_one\": pulumi.String(\"label_one\"),\n\t\t\t\t},\n\t\t\t\tVmSize: pulumi.String(\"Standard_DS2_v2\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tMaxPodsConstraint: \u0026container.AzureNodePoolMaxPodsConstraintArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(110),\n\t\t\t},\n\t\t\tName: pulumi.String(\"node-pool-name\"),\n\t\t\tSubnetId: pulumi.String(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\"),\n\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"annotation-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tManagement: \u0026container.AzureNodePoolManagementArgs{\n\t\t\t\tAutoRepair: pulumi.Bool(true),\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.GetAzureVersionsArgs;\nimport com.pulumi.gcp.container.AzureClient;\nimport com.pulumi.gcp.container.AzureClientArgs;\nimport com.pulumi.gcp.container.AzureCluster;\nimport com.pulumi.gcp.container.AzureClusterArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AzureClusterNetworkingArgs;\nimport com.pulumi.gcp.container.AzureNodePool;\nimport com.pulumi.gcp.container.AzureNodePoolArgs;\nimport com.pulumi.gcp.container.inputs.AzureNodePoolAutoscalingArgs;\nimport com.pulumi.gcp.container.inputs.AzureNodePoolConfigArgs;\nimport com.pulumi.gcp.container.inputs.AzureNodePoolConfigSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AzureNodePoolConfigProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AzureNodePoolConfigRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AzureNodePoolMaxPodsConstraintArgs;\nimport com.pulumi.gcp.container.inputs.AzureNodePoolManagementArgs;\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.getAzureVersions(GetAzureVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var basic = new AzureClient(\"basic\", AzureClientArgs.builder()\n .applicationId(\"12345678-1234-1234-1234-123456789111\")\n .location(\"us-west1\")\n .name(\"client-name\")\n .tenantId(\"12345678-1234-1234-1234-123456789111\")\n .project(\"my-project-name\")\n .build());\n\n var primary = new AzureCluster(\"primary\", AzureClusterArgs.builder()\n .authorization(AzureClusterAuthorizationArgs.builder()\n .adminUsers(AzureClusterAuthorizationAdminUserArgs.builder()\n .username(\"mmv2@google.com\")\n .build())\n .build())\n .azureRegion(\"westus2\")\n .client(basic.name().applyValue(name -\u003e String.format(\"projects/my-project-number/locations/us-west1/azureClients/%s\", name)))\n .controlPlane(AzureClusterControlPlaneArgs.builder()\n .sshConfig(AzureClusterControlPlaneSshConfigArgs.builder()\n .authorizedKey(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\")\n .build())\n .subnetId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\")\n .version(versions.applyValue(getAzureVersionsResult -\u003e getAzureVersionsResult.validVersions()[0]))\n .build())\n .fleet(AzureClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\n .networking(AzureClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.200.0.0/16\")\n .serviceAddressCidrBlocks(\"10.32.0.0/24\")\n .virtualNetworkId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\")\n .build())\n .resourceGroupId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\")\n .project(\"my-project-name\")\n .build());\n\n var primaryAzureNodePool = new AzureNodePool(\"primaryAzureNodePool\", AzureNodePoolArgs.builder()\n .autoscaling(AzureNodePoolAutoscalingArgs.builder()\n .maxNodeCount(3)\n .minNodeCount(2)\n .build())\n .cluster(primary.name())\n .config(AzureNodePoolConfigArgs.builder()\n .sshConfig(AzureNodePoolConfigSshConfigArgs.builder()\n .authorizedKey(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\")\n .build())\n .proxyConfig(AzureNodePoolConfigProxyConfigArgs.builder()\n .resourceGroupId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\")\n .secretId(\"https://my--dev-keyvault.vault.azure.net/secrets/my--dev-secret/0000000000000000000000000000000000\")\n .build())\n .rootVolume(AzureNodePoolConfigRootVolumeArgs.builder()\n .sizeGib(32)\n .build())\n .tags(Map.of(\"owner\", \"mmv2\"))\n .labels(Map.of(\"key_one\", \"label_one\"))\n .vmSize(\"Standard_DS2_v2\")\n .build())\n .location(\"us-west1\")\n .maxPodsConstraint(AzureNodePoolMaxPodsConstraintArgs.builder()\n .maxPodsPerNode(110)\n .build())\n .name(\"node-pool-name\")\n .subnetId(\"/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\")\n .version(versions.applyValue(getAzureVersionsResult -\u003e getAzureVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"annotation-one\", \"value-one\"))\n .management(AzureNodePoolManagementArgs.builder()\n .autoRepair(true)\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AzureCluster\n properties:\n authorization:\n adminUsers:\n - username: mmv2@google.com\n azureRegion: westus2\n client: projects/my-project-number/locations/us-west1/azureClients/${basic.name}\n controlPlane:\n sshConfig:\n authorizedKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\n subnetId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\n version: ${versions.validVersions[0]}\n fleet:\n project: my-project-number\n location: us-west1\n name: name\n networking:\n podAddressCidrBlocks:\n - 10.200.0.0/16\n serviceAddressCidrBlocks:\n - 10.32.0.0/24\n virtualNetworkId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet\n resourceGroupId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\n project: my-project-name\n basic:\n type: gcp:container:AzureClient\n properties:\n applicationId: 12345678-1234-1234-1234-123456789111\n location: us-west1\n name: client-name\n tenantId: 12345678-1234-1234-1234-123456789111\n project: my-project-name\n primaryAzureNodePool:\n type: gcp:container:AzureNodePool\n name: primary\n properties:\n autoscaling:\n maxNodeCount: 3\n minNodeCount: 2\n cluster: ${primary.name}\n config:\n sshConfig:\n authorizedKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers\n proxyConfig:\n resourceGroupId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster\n secretId: https://my--dev-keyvault.vault.azure.net/secrets/my--dev-secret/0000000000000000000000000000000000\n rootVolume:\n sizeGib: 32\n tags:\n owner: mmv2\n labels:\n key_one: label_one\n vmSize: Standard_DS2_v2\n location: us-west1\n maxPodsConstraint:\n maxPodsPerNode: 110\n name: node-pool-name\n subnetId: /subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default\n version: ${versions.validVersions[0]}\n annotations:\n annotation-one: value-one\n management:\n autoRepair: true\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAzureVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/azureClusters/{{cluster}}/azureNodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{name}}`\n\n* `{{location}}/{{cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, NodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/azureNodePool:AzureNodePool default projects/{{project}}/locations/{{location}}/azureClusters/{{cluster}}/azureNodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/azureNodePool:AzureNodePool default {{project}}/{{location}}/{{cluster}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/azureNodePool:AzureNodePool default {{location}}/{{cluster}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -167977,7 +167977,7 @@ } }, "gcp:container/cluster:Cluster": { - "description": "Manages a Google Kubernetes Engine (GKE) cluster.\n\nTo get more information about GKE clusters, see:\n * [The API reference](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters)\n * How-to guides\n * [GKE overview](https://cloud.google.com/kubernetes-engine/docs/concepts/kubernetes-engine-overview)\n * [About cluster configuration choices](https://cloud.google.com/kubernetes-engine/docs/concepts/types-of-clusters)\n\n\u003e On version 5.0.0+ of the provider, you must explicitly set `deletion_protection = false`\nand run `pulumi up` to write the field to state in order to destroy a cluster.\n\n\u003e All arguments and attributes (including certificate outputs) will be stored in the raw state as\nplaintext. [Read more about secrets in state](https://www.pulumi.com/docs/intro/concepts/programming-model/#secrets).\n\n## Example Usage\n\n### With A Separately Managed Node Pool (Recommended)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"my-gke-cluster\",\n location: \"us-central1\",\n removeDefaultNodePool: true,\n initialNodeCount: 1,\n});\nconst primaryPreemptibleNodes = new gcp.container.NodePool(\"primary_preemptible_nodes\", {\n name: \"my-node-pool\",\n location: \"us-central1\",\n cluster: primary.name,\n nodeCount: 1,\n nodeConfig: {\n preemptible: true,\n machineType: \"e2-medium\",\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"my-gke-cluster\",\n location=\"us-central1\",\n remove_default_node_pool=True,\n initial_node_count=1)\nprimary_preemptible_nodes = gcp.container.NodePool(\"primary_preemptible_nodes\",\n name=\"my-node-pool\",\n location=\"us-central1\",\n cluster=primary.name,\n node_count=1,\n node_config={\n \"preemptible\": True,\n \"machineType\": \"e2-medium\",\n \"serviceAccount\": default.email,\n \"oauthScopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\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 @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"my-gke-cluster\",\n Location = \"us-central1\",\n RemoveDefaultNodePool = true,\n InitialNodeCount = 1,\n });\n\n var primaryPreemptibleNodes = new Gcp.Container.NodePool(\"primary_preemptible_nodes\", new()\n {\n Name = \"my-node-pool\",\n Location = \"us-central1\",\n Cluster = primary.Name,\n NodeCount = 1,\n NodeConfig = new Gcp.Container.Inputs.NodePoolNodeConfigArgs\n {\n Preemptible = true,\n MachineType = \"e2-medium\",\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-gke-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRemoveDefaultNodePool: pulumi.Bool(true),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewNodePool(ctx, \"primary_preemptible_nodes\", \u0026container.NodePoolArgs{\n\t\t\tName: pulumi.String(\"my-node-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCluster: primary.Name,\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t\tNodeConfig: \u0026container.NodePoolNodeConfigArgs{\n\t\t\t\tPreemptible: pulumi.Bool(true),\n\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.NodePool;\nimport com.pulumi.gcp.container.NodePoolArgs;\nimport com.pulumi.gcp.container.inputs.NodePoolNodeConfigArgs;\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 Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"my-gke-cluster\")\n .location(\"us-central1\")\n .removeDefaultNodePool(true)\n .initialNodeCount(1)\n .build());\n\n var primaryPreemptibleNodes = new NodePool(\"primaryPreemptibleNodes\", NodePoolArgs.builder()\n .name(\"my-node-pool\")\n .location(\"us-central1\")\n .cluster(primary.name())\n .nodeCount(1)\n .nodeConfig(NodePoolNodeConfigArgs.builder()\n .preemptible(true)\n .machineType(\"e2-medium\")\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n primary:\n type: gcp:container:Cluster\n properties:\n name: my-gke-cluster\n location: us-central1\n removeDefaultNodePool: true\n initialNodeCount: 1\n primaryPreemptibleNodes:\n type: gcp:container:NodePool\n name: primary_preemptible_nodes\n properties:\n name: my-node-pool\n location: us-central1\n cluster: ${primary.name}\n nodeCount: 1\n nodeConfig:\n preemptible: true\n machineType: e2-medium\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e **Note:** It is recommended that node pools be created and managed as separate resources as in the example above.\nThis allows node pools to be added and removed without recreating the cluster. Node pools defined directly in the\n`gcp.container.Cluster` resource cannot be removed without re-creating the cluster.\n\n### With The Default Node Pool\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"marcellus-wallace\",\n location: \"us-central1-a\",\n initialNodeCount: 3,\n nodeConfig: {\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n labels: {\n foo: \"bar\",\n },\n tags: [\n \"foo\",\n \"bar\",\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"marcellus-wallace\",\n location=\"us-central1-a\",\n initial_node_count=3,\n node_config={\n \"serviceAccount\": default.email,\n \"oauthScopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\n \"labels\": {\n \"foo\": \"bar\",\n },\n \"tags\": [\n \"foo\",\n \"bar\",\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 @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"marcellus-wallace\",\n Location = \"us-central1-a\",\n InitialNodeCount = 3,\n NodeConfig = new Gcp.Container.Inputs.ClusterNodeConfigArgs\n {\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"marcellus-wallace\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(3),\n\t\t\tNodeConfig: \u0026container.ClusterNodeConfigArgs{\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\t},\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\tpulumi.String(\"bar\"),\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterNodeConfigArgs;\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 Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"marcellus-wallace\")\n .location(\"us-central1-a\")\n .initialNodeCount(3)\n .nodeConfig(ClusterNodeConfigArgs.builder()\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .labels(Map.of(\"foo\", \"bar\"))\n .tags( \n \"foo\",\n \"bar\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n primary:\n type: gcp:container:Cluster\n properties:\n name: marcellus-wallace\n location: us-central1-a\n initialNodeCount: 3\n nodeConfig:\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n labels:\n foo: bar\n tags:\n - foo\n - bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Autopilot\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"marcellus-wallace\",\n location: \"us-central1-a\",\n enableAutopilot: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"marcellus-wallace\",\n location=\"us-central1-a\",\n enable_autopilot=True)\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.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"marcellus-wallace\",\n Location = \"us-central1-a\",\n EnableAutopilot = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"marcellus-wallace\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tEnableAutopilot: pulumi.Bool(true),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\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 Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"marcellus-wallace\")\n .location(\"us-central1-a\")\n .enableAutopilot(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n primary:\n type: gcp:container:Cluster\n properties:\n name: marcellus-wallace\n location: us-central1-a\n enableAutopilot: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGKE clusters can be imported using the `project` , `location`, and `name`. If the project is omitted, the default\n\nprovider value will be used. Examples:\n\n* `projects/{{project_id}}/locations/{{location}}/clusters/{{cluster_id}}`\n\n* `{{project_id}}/{{location}}/{{cluster_id}}`\n\n* `{{location}}/{{cluster_id}}`\n\nWhen using the `pulumi import` command, GKE clusters can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/cluster:Cluster default projects/{{project_id}}/locations/{{location}}/clusters/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:container/cluster:Cluster default {{project_id}}/{{location}}/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:container/cluster:Cluster default {{location}}/{{cluster_id}}\n```\n\nFor example, the following fields will show diffs if set in config:\n\n- `min_master_version`\n\n- `remove_default_node_pool`\n\n", + "description": "Manages a Google Kubernetes Engine (GKE) cluster.\n\nTo get more information about GKE clusters, see:\n * [The API reference](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters)\n * How-to guides\n * [GKE overview](https://cloud.google.com/kubernetes-engine/docs/concepts/kubernetes-engine-overview)\n * [About cluster configuration choices](https://cloud.google.com/kubernetes-engine/docs/concepts/types-of-clusters)\n\n\u003e On version 5.0.0+ of the provider, you must explicitly set `deletion_protection = false`\nand run `pulumi up` to write the field to state in order to destroy a cluster.\n\n\u003e All arguments and attributes (including certificate outputs) will be stored in the raw state as\nplaintext. [Read more about secrets in state](https://www.pulumi.com/docs/intro/concepts/programming-model/#secrets).\n\n## Example Usage\n\n### With A Separately Managed Node Pool (Recommended)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"my-gke-cluster\",\n location: \"us-central1\",\n removeDefaultNodePool: true,\n initialNodeCount: 1,\n});\nconst primaryPreemptibleNodes = new gcp.container.NodePool(\"primary_preemptible_nodes\", {\n name: \"my-node-pool\",\n location: \"us-central1\",\n cluster: primary.name,\n nodeCount: 1,\n nodeConfig: {\n preemptible: true,\n machineType: \"e2-medium\",\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"my-gke-cluster\",\n location=\"us-central1\",\n remove_default_node_pool=True,\n initial_node_count=1)\nprimary_preemptible_nodes = gcp.container.NodePool(\"primary_preemptible_nodes\",\n name=\"my-node-pool\",\n location=\"us-central1\",\n cluster=primary.name,\n node_count=1,\n node_config={\n \"preemptible\": True,\n \"machine_type\": \"e2-medium\",\n \"service_account\": default.email,\n \"oauth_scopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\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 @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"my-gke-cluster\",\n Location = \"us-central1\",\n RemoveDefaultNodePool = true,\n InitialNodeCount = 1,\n });\n\n var primaryPreemptibleNodes = new Gcp.Container.NodePool(\"primary_preemptible_nodes\", new()\n {\n Name = \"my-node-pool\",\n Location = \"us-central1\",\n Cluster = primary.Name,\n NodeCount = 1,\n NodeConfig = new Gcp.Container.Inputs.NodePoolNodeConfigArgs\n {\n Preemptible = true,\n MachineType = \"e2-medium\",\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-gke-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRemoveDefaultNodePool: pulumi.Bool(true),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewNodePool(ctx, \"primary_preemptible_nodes\", \u0026container.NodePoolArgs{\n\t\t\tName: pulumi.String(\"my-node-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCluster: primary.Name,\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t\tNodeConfig: \u0026container.NodePoolNodeConfigArgs{\n\t\t\t\tPreemptible: pulumi.Bool(true),\n\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.NodePool;\nimport com.pulumi.gcp.container.NodePoolArgs;\nimport com.pulumi.gcp.container.inputs.NodePoolNodeConfigArgs;\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 Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"my-gke-cluster\")\n .location(\"us-central1\")\n .removeDefaultNodePool(true)\n .initialNodeCount(1)\n .build());\n\n var primaryPreemptibleNodes = new NodePool(\"primaryPreemptibleNodes\", NodePoolArgs.builder()\n .name(\"my-node-pool\")\n .location(\"us-central1\")\n .cluster(primary.name())\n .nodeCount(1)\n .nodeConfig(NodePoolNodeConfigArgs.builder()\n .preemptible(true)\n .machineType(\"e2-medium\")\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n primary:\n type: gcp:container:Cluster\n properties:\n name: my-gke-cluster\n location: us-central1\n removeDefaultNodePool: true\n initialNodeCount: 1\n primaryPreemptibleNodes:\n type: gcp:container:NodePool\n name: primary_preemptible_nodes\n properties:\n name: my-node-pool\n location: us-central1\n cluster: ${primary.name}\n nodeCount: 1\n nodeConfig:\n preemptible: true\n machineType: e2-medium\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e **Note:** It is recommended that node pools be created and managed as separate resources as in the example above.\nThis allows node pools to be added and removed without recreating the cluster. Node pools defined directly in the\n`gcp.container.Cluster` resource cannot be removed without re-creating the cluster.\n\n### With The Default Node Pool\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"marcellus-wallace\",\n location: \"us-central1-a\",\n initialNodeCount: 3,\n nodeConfig: {\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n labels: {\n foo: \"bar\",\n },\n tags: [\n \"foo\",\n \"bar\",\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"marcellus-wallace\",\n location=\"us-central1-a\",\n initial_node_count=3,\n node_config={\n \"service_account\": default.email,\n \"oauth_scopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\n \"labels\": {\n \"foo\": \"bar\",\n },\n \"tags\": [\n \"foo\",\n \"bar\",\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 @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"marcellus-wallace\",\n Location = \"us-central1-a\",\n InitialNodeCount = 3,\n NodeConfig = new Gcp.Container.Inputs.ClusterNodeConfigArgs\n {\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"marcellus-wallace\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(3),\n\t\t\tNodeConfig: \u0026container.ClusterNodeConfigArgs{\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\t},\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\tpulumi.String(\"bar\"),\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterNodeConfigArgs;\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 Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"marcellus-wallace\")\n .location(\"us-central1-a\")\n .initialNodeCount(3)\n .nodeConfig(ClusterNodeConfigArgs.builder()\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .labels(Map.of(\"foo\", \"bar\"))\n .tags( \n \"foo\",\n \"bar\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n primary:\n type: gcp:container:Cluster\n properties:\n name: marcellus-wallace\n location: us-central1-a\n initialNodeCount: 3\n nodeConfig:\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n labels:\n foo: bar\n tags:\n - foo\n - bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Autopilot\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"marcellus-wallace\",\n location: \"us-central1-a\",\n enableAutopilot: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"marcellus-wallace\",\n location=\"us-central1-a\",\n enable_autopilot=True)\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.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"marcellus-wallace\",\n Location = \"us-central1-a\",\n EnableAutopilot = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"marcellus-wallace\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tEnableAutopilot: pulumi.Bool(true),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\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 Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"marcellus-wallace\")\n .location(\"us-central1-a\")\n .enableAutopilot(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n primary:\n type: gcp:container:Cluster\n properties:\n name: marcellus-wallace\n location: us-central1-a\n enableAutopilot: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGKE clusters can be imported using the `project` , `location`, and `name`. If the project is omitted, the default\n\nprovider value will be used. Examples:\n\n* `projects/{{project_id}}/locations/{{location}}/clusters/{{cluster_id}}`\n\n* `{{project_id}}/{{location}}/{{cluster_id}}`\n\n* `{{location}}/{{cluster_id}}`\n\nWhen using the `pulumi import` command, GKE clusters can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/cluster:Cluster default projects/{{project_id}}/locations/{{location}}/clusters/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:container/cluster:Cluster default {{project_id}}/{{location}}/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:container/cluster:Cluster default {{location}}/{{cluster_id}}\n```\n\nFor example, the following fields will show diffs if set in config:\n\n- `min_master_version`\n\n- `remove_default_node_pool`\n\n", "properties": { "addonsConfig": { "$ref": "#/types/gcp:container/ClusterAddonsConfig:ClusterAddonsConfig", @@ -169000,7 +169000,7 @@ } }, "gcp:container/nodePool:NodePool": { - "description": "Manages a node pool in a Google Kubernetes Engine (GKE) cluster separately from\nthe cluster control plane. For more information see [the official documentation](https://cloud.google.com/container-engine/docs/node-pools)\nand [the API reference](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters.nodePools).\n\n## Example Usage\n\n### Using A Separately Managed Node Pool (Recommended)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"my-gke-cluster\",\n location: \"us-central1\",\n removeDefaultNodePool: true,\n initialNodeCount: 1,\n});\nconst primaryPreemptibleNodes = new gcp.container.NodePool(\"primary_preemptible_nodes\", {\n name: \"my-node-pool\",\n cluster: primary.id,\n nodeCount: 1,\n nodeConfig: {\n preemptible: true,\n machineType: \"e2-medium\",\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"my-gke-cluster\",\n location=\"us-central1\",\n remove_default_node_pool=True,\n initial_node_count=1)\nprimary_preemptible_nodes = gcp.container.NodePool(\"primary_preemptible_nodes\",\n name=\"my-node-pool\",\n cluster=primary.id,\n node_count=1,\n node_config={\n \"preemptible\": True,\n \"machineType\": \"e2-medium\",\n \"serviceAccount\": default.email,\n \"oauthScopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\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 @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"my-gke-cluster\",\n Location = \"us-central1\",\n RemoveDefaultNodePool = true,\n InitialNodeCount = 1,\n });\n\n var primaryPreemptibleNodes = new Gcp.Container.NodePool(\"primary_preemptible_nodes\", new()\n {\n Name = \"my-node-pool\",\n Cluster = primary.Id,\n NodeCount = 1,\n NodeConfig = new Gcp.Container.Inputs.NodePoolNodeConfigArgs\n {\n Preemptible = true,\n MachineType = \"e2-medium\",\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-gke-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRemoveDefaultNodePool: pulumi.Bool(true),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewNodePool(ctx, \"primary_preemptible_nodes\", \u0026container.NodePoolArgs{\n\t\t\tName: pulumi.String(\"my-node-pool\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t\tNodeConfig: \u0026container.NodePoolNodeConfigArgs{\n\t\t\t\tPreemptible: pulumi.Bool(true),\n\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.NodePool;\nimport com.pulumi.gcp.container.NodePoolArgs;\nimport com.pulumi.gcp.container.inputs.NodePoolNodeConfigArgs;\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 Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"my-gke-cluster\")\n .location(\"us-central1\")\n .removeDefaultNodePool(true)\n .initialNodeCount(1)\n .build());\n\n var primaryPreemptibleNodes = new NodePool(\"primaryPreemptibleNodes\", NodePoolArgs.builder()\n .name(\"my-node-pool\")\n .cluster(primary.id())\n .nodeCount(1)\n .nodeConfig(NodePoolNodeConfigArgs.builder()\n .preemptible(true)\n .machineType(\"e2-medium\")\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n primary:\n type: gcp:container:Cluster\n properties:\n name: my-gke-cluster\n location: us-central1\n removeDefaultNodePool: true\n initialNodeCount: 1\n primaryPreemptibleNodes:\n type: gcp:container:NodePool\n name: primary_preemptible_nodes\n properties:\n name: my-node-pool\n cluster: ${primary.id}\n nodeCount: 1\n nodeConfig:\n preemptible: true\n machineType: e2-medium\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### 2 Node Pools, 1 Separately Managed + The Default Node Pool\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"marcellus-wallace\",\n location: \"us-central1-a\",\n initialNodeCount: 3,\n nodeLocations: [\"us-central1-c\"],\n nodeConfig: {\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n guestAccelerators: [{\n type: \"nvidia-tesla-k80\",\n count: 1,\n }],\n },\n});\nconst np = new gcp.container.NodePool(\"np\", {\n name: \"my-node-pool\",\n cluster: primary.id,\n nodeConfig: {\n machineType: \"e2-medium\",\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"marcellus-wallace\",\n location=\"us-central1-a\",\n initial_node_count=3,\n node_locations=[\"us-central1-c\"],\n node_config={\n \"serviceAccount\": default.email,\n \"oauthScopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\n \"guestAccelerators\": [{\n \"type\": \"nvidia-tesla-k80\",\n \"count\": 1,\n }],\n })\nnp = gcp.container.NodePool(\"np\",\n name=\"my-node-pool\",\n cluster=primary.id,\n node_config={\n \"machineType\": \"e2-medium\",\n \"serviceAccount\": default.email,\n \"oauthScopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\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 @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"marcellus-wallace\",\n Location = \"us-central1-a\",\n InitialNodeCount = 3,\n NodeLocations = new[]\n {\n \"us-central1-c\",\n },\n NodeConfig = new Gcp.Container.Inputs.ClusterNodeConfigArgs\n {\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n GuestAccelerators = new[]\n {\n new Gcp.Container.Inputs.ClusterNodeConfigGuestAcceleratorArgs\n {\n Type = \"nvidia-tesla-k80\",\n Count = 1,\n },\n },\n },\n });\n\n var np = new Gcp.Container.NodePool(\"np\", new()\n {\n Name = \"my-node-pool\",\n Cluster = primary.Id,\n NodeConfig = new Gcp.Container.Inputs.NodePoolNodeConfigArgs\n {\n MachineType = \"e2-medium\",\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"marcellus-wallace\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(3),\n\t\t\tNodeLocations: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-central1-c\"),\n\t\t\t},\n\t\t\tNodeConfig: \u0026container.ClusterNodeConfigArgs{\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\t},\n\t\t\t\tGuestAccelerators: container.ClusterNodeConfigGuestAcceleratorArray{\n\t\t\t\t\t\u0026container.ClusterNodeConfigGuestAcceleratorArgs{\n\t\t\t\t\t\tType: pulumi.String(\"nvidia-tesla-k80\"),\n\t\t\t\t\t\tCount: pulumi.Int(1),\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 = container.NewNodePool(ctx, \"np\", \u0026container.NodePoolArgs{\n\t\t\tName: pulumi.String(\"my-node-pool\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tNodeConfig: \u0026container.NodePoolNodeConfigArgs{\n\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterNodeConfigArgs;\nimport com.pulumi.gcp.container.NodePool;\nimport com.pulumi.gcp.container.NodePoolArgs;\nimport com.pulumi.gcp.container.inputs.NodePoolNodeConfigArgs;\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 Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"marcellus-wallace\")\n .location(\"us-central1-a\")\n .initialNodeCount(3)\n .nodeLocations(\"us-central1-c\")\n .nodeConfig(ClusterNodeConfigArgs.builder()\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .guestAccelerators(ClusterNodeConfigGuestAcceleratorArgs.builder()\n .type(\"nvidia-tesla-k80\")\n .count(1)\n .build())\n .build())\n .build());\n\n var np = new NodePool(\"np\", NodePoolArgs.builder()\n .name(\"my-node-pool\")\n .cluster(primary.id())\n .nodeConfig(NodePoolNodeConfigArgs.builder()\n .machineType(\"e2-medium\")\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n np:\n type: gcp:container:NodePool\n properties:\n name: my-node-pool\n cluster: ${primary.id}\n nodeConfig:\n machineType: e2-medium\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n primary:\n type: gcp:container:Cluster\n properties:\n name: marcellus-wallace\n location: us-central1-a\n initialNodeCount: 3\n nodeLocations:\n - us-central1-c\n nodeConfig:\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n guestAccelerators:\n - type: nvidia-tesla-k80\n count: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNode pools can be imported using the `project`, `location`, `cluster` and `name`. If\n\nthe project is omitted, the project value in the provider configuration will be used. Examples:\n\n* `{{project_id}}/{{location}}/{{cluster_id}}/{{pool_id}}`\n\n* `{{location}}/{{cluster_id}}/{{pool_id}}`\n\nWhen using the `pulumi import` command, node pools can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/nodePool:NodePool default {{project_id}}/{{location}}/{{cluster_id}}/{{pool_id}}\n```\n\n```sh\n$ pulumi import gcp:container/nodePool:NodePool default {{location}}/{{cluster_id}}/{{pool_id}}\n```\n\n", + "description": "Manages a node pool in a Google Kubernetes Engine (GKE) cluster separately from\nthe cluster control plane. For more information see [the official documentation](https://cloud.google.com/container-engine/docs/node-pools)\nand [the API reference](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters.nodePools).\n\n## Example Usage\n\n### Using A Separately Managed Node Pool (Recommended)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"my-gke-cluster\",\n location: \"us-central1\",\n removeDefaultNodePool: true,\n initialNodeCount: 1,\n});\nconst primaryPreemptibleNodes = new gcp.container.NodePool(\"primary_preemptible_nodes\", {\n name: \"my-node-pool\",\n cluster: primary.id,\n nodeCount: 1,\n nodeConfig: {\n preemptible: true,\n machineType: \"e2-medium\",\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"my-gke-cluster\",\n location=\"us-central1\",\n remove_default_node_pool=True,\n initial_node_count=1)\nprimary_preemptible_nodes = gcp.container.NodePool(\"primary_preemptible_nodes\",\n name=\"my-node-pool\",\n cluster=primary.id,\n node_count=1,\n node_config={\n \"preemptible\": True,\n \"machine_type\": \"e2-medium\",\n \"service_account\": default.email,\n \"oauth_scopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\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 @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"my-gke-cluster\",\n Location = \"us-central1\",\n RemoveDefaultNodePool = true,\n InitialNodeCount = 1,\n });\n\n var primaryPreemptibleNodes = new Gcp.Container.NodePool(\"primary_preemptible_nodes\", new()\n {\n Name = \"my-node-pool\",\n Cluster = primary.Id,\n NodeCount = 1,\n NodeConfig = new Gcp.Container.Inputs.NodePoolNodeConfigArgs\n {\n Preemptible = true,\n MachineType = \"e2-medium\",\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-gke-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRemoveDefaultNodePool: pulumi.Bool(true),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewNodePool(ctx, \"primary_preemptible_nodes\", \u0026container.NodePoolArgs{\n\t\t\tName: pulumi.String(\"my-node-pool\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t\tNodeConfig: \u0026container.NodePoolNodeConfigArgs{\n\t\t\t\tPreemptible: pulumi.Bool(true),\n\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.NodePool;\nimport com.pulumi.gcp.container.NodePoolArgs;\nimport com.pulumi.gcp.container.inputs.NodePoolNodeConfigArgs;\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 Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"my-gke-cluster\")\n .location(\"us-central1\")\n .removeDefaultNodePool(true)\n .initialNodeCount(1)\n .build());\n\n var primaryPreemptibleNodes = new NodePool(\"primaryPreemptibleNodes\", NodePoolArgs.builder()\n .name(\"my-node-pool\")\n .cluster(primary.id())\n .nodeCount(1)\n .nodeConfig(NodePoolNodeConfigArgs.builder()\n .preemptible(true)\n .machineType(\"e2-medium\")\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n primary:\n type: gcp:container:Cluster\n properties:\n name: my-gke-cluster\n location: us-central1\n removeDefaultNodePool: true\n initialNodeCount: 1\n primaryPreemptibleNodes:\n type: gcp:container:NodePool\n name: primary_preemptible_nodes\n properties:\n name: my-node-pool\n cluster: ${primary.id}\n nodeCount: 1\n nodeConfig:\n preemptible: true\n machineType: e2-medium\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### 2 Node Pools, 1 Separately Managed + The Default Node Pool\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"marcellus-wallace\",\n location: \"us-central1-a\",\n initialNodeCount: 3,\n nodeLocations: [\"us-central1-c\"],\n nodeConfig: {\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n guestAccelerators: [{\n type: \"nvidia-tesla-k80\",\n count: 1,\n }],\n },\n});\nconst np = new gcp.container.NodePool(\"np\", {\n name: \"my-node-pool\",\n cluster: primary.id,\n nodeConfig: {\n machineType: \"e2-medium\",\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"marcellus-wallace\",\n location=\"us-central1-a\",\n initial_node_count=3,\n node_locations=[\"us-central1-c\"],\n node_config={\n \"service_account\": default.email,\n \"oauth_scopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\n \"guest_accelerators\": [{\n \"type\": \"nvidia-tesla-k80\",\n \"count\": 1,\n }],\n })\nnp = gcp.container.NodePool(\"np\",\n name=\"my-node-pool\",\n cluster=primary.id,\n node_config={\n \"machine_type\": \"e2-medium\",\n \"service_account\": default.email,\n \"oauth_scopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\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 @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"marcellus-wallace\",\n Location = \"us-central1-a\",\n InitialNodeCount = 3,\n NodeLocations = new[]\n {\n \"us-central1-c\",\n },\n NodeConfig = new Gcp.Container.Inputs.ClusterNodeConfigArgs\n {\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n GuestAccelerators = new[]\n {\n new Gcp.Container.Inputs.ClusterNodeConfigGuestAcceleratorArgs\n {\n Type = \"nvidia-tesla-k80\",\n Count = 1,\n },\n },\n },\n });\n\n var np = new Gcp.Container.NodePool(\"np\", new()\n {\n Name = \"my-node-pool\",\n Cluster = primary.Id,\n NodeConfig = new Gcp.Container.Inputs.NodePoolNodeConfigArgs\n {\n MachineType = \"e2-medium\",\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"marcellus-wallace\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(3),\n\t\t\tNodeLocations: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-central1-c\"),\n\t\t\t},\n\t\t\tNodeConfig: \u0026container.ClusterNodeConfigArgs{\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\t},\n\t\t\t\tGuestAccelerators: container.ClusterNodeConfigGuestAcceleratorArray{\n\t\t\t\t\t\u0026container.ClusterNodeConfigGuestAcceleratorArgs{\n\t\t\t\t\t\tType: pulumi.String(\"nvidia-tesla-k80\"),\n\t\t\t\t\t\tCount: pulumi.Int(1),\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 = container.NewNodePool(ctx, \"np\", \u0026container.NodePoolArgs{\n\t\t\tName: pulumi.String(\"my-node-pool\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tNodeConfig: \u0026container.NodePoolNodeConfigArgs{\n\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterNodeConfigArgs;\nimport com.pulumi.gcp.container.NodePool;\nimport com.pulumi.gcp.container.NodePoolArgs;\nimport com.pulumi.gcp.container.inputs.NodePoolNodeConfigArgs;\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 Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"marcellus-wallace\")\n .location(\"us-central1-a\")\n .initialNodeCount(3)\n .nodeLocations(\"us-central1-c\")\n .nodeConfig(ClusterNodeConfigArgs.builder()\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .guestAccelerators(ClusterNodeConfigGuestAcceleratorArgs.builder()\n .type(\"nvidia-tesla-k80\")\n .count(1)\n .build())\n .build())\n .build());\n\n var np = new NodePool(\"np\", NodePoolArgs.builder()\n .name(\"my-node-pool\")\n .cluster(primary.id())\n .nodeConfig(NodePoolNodeConfigArgs.builder()\n .machineType(\"e2-medium\")\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n np:\n type: gcp:container:NodePool\n properties:\n name: my-node-pool\n cluster: ${primary.id}\n nodeConfig:\n machineType: e2-medium\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n primary:\n type: gcp:container:Cluster\n properties:\n name: marcellus-wallace\n location: us-central1-a\n initialNodeCount: 3\n nodeLocations:\n - us-central1-c\n nodeConfig:\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n guestAccelerators:\n - type: nvidia-tesla-k80\n count: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNode pools can be imported using the `project`, `location`, `cluster` and `name`. If\n\nthe project is omitted, the project value in the provider configuration will be used. Examples:\n\n* `{{project_id}}/{{location}}/{{cluster_id}}/{{pool_id}}`\n\n* `{{location}}/{{cluster_id}}/{{pool_id}}`\n\nWhen using the `pulumi import` command, node pools can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/nodePool:NodePool default {{project_id}}/{{location}}/{{cluster_id}}/{{pool_id}}\n```\n\n```sh\n$ pulumi import gcp:container/nodePool:NodePool default {{location}}/{{cluster_id}}/{{pool_id}}\n```\n\n", "properties": { "autoscaling": { "$ref": "#/types/gcp:container/NodePoolAutoscaling:NodePoolAutoscaling", @@ -169355,7 +169355,7 @@ } }, "gcp:containeranalysis/note:Note": { - "description": "A Container Analysis note is a high-level piece of metadata that\ndescribes a type of analysis that can be done for a resource.\n\n\nTo get more information about Note, see:\n\n* [API documentation](https://cloud.google.com/container-analysis/api/reference/rest/)\n* How-to Guides\n * [Creating Attestations (Occurrences)](https://cloud.google.com/binary-authorization/docs/making-attestations)\n * [Official Documentation](https://cloud.google.com/container-analysis/)\n\n## Example Usage\n\n### Container Analysis Note Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst note = new gcp.containeranalysis.Note(\"note\", {\n name: \"attestor-note\",\n attestationAuthority: {\n hint: {\n humanReadableName: \"Attestor Note\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnote = gcp.containeranalysis.Note(\"note\",\n name=\"attestor-note\",\n attestation_authority={\n \"hint\": {\n \"humanReadableName\": \"Attestor Note\",\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 note = new Gcp.ContainerAnalysis.Note(\"note\", new()\n {\n Name = \"attestor-note\",\n AttestationAuthority = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityArgs\n {\n Hint = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityHintArgs\n {\n HumanReadableName = \"Attestor Note\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/containeranalysis\"\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 := containeranalysis.NewNote(ctx, \"note\", \u0026containeranalysis.NoteArgs{\n\t\t\tName: pulumi.String(\"attestor-note\"),\n\t\t\tAttestationAuthority: \u0026containeranalysis.NoteAttestationAuthorityArgs{\n\t\t\t\tHint: \u0026containeranalysis.NoteAttestationAuthorityHintArgs{\n\t\t\t\t\tHumanReadableName: pulumi.String(\"Attestor Note\"),\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.containeranalysis.Note;\nimport com.pulumi.gcp.containeranalysis.NoteArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityHintArgs;\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 note = new Note(\"note\", NoteArgs.builder()\n .name(\"attestor-note\")\n .attestationAuthority(NoteAttestationAuthorityArgs.builder()\n .hint(NoteAttestationAuthorityHintArgs.builder()\n .humanReadableName(\"Attestor Note\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n note:\n type: gcp:containeranalysis:Note\n properties:\n name: attestor-note\n attestationAuthority:\n hint:\n humanReadableName: Attestor Note\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Container Analysis Note Attestation Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst note = new gcp.containeranalysis.Note(\"note\", {\n name: \"attestor-note\",\n shortDescription: \"test note\",\n longDescription: \"a longer description of test note\",\n expirationTime: \"2120-10-02T15:01:23.045123456Z\",\n relatedUrls: [\n {\n url: \"some.url\",\n label: \"foo\",\n },\n {\n url: \"google.com\",\n },\n ],\n attestationAuthority: {\n hint: {\n humanReadableName: \"Attestor Note\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnote = gcp.containeranalysis.Note(\"note\",\n name=\"attestor-note\",\n short_description=\"test note\",\n long_description=\"a longer description of test note\",\n expiration_time=\"2120-10-02T15:01:23.045123456Z\",\n related_urls=[\n {\n \"url\": \"some.url\",\n \"label\": \"foo\",\n },\n {\n \"url\": \"google.com\",\n },\n ],\n attestation_authority={\n \"hint\": {\n \"humanReadableName\": \"Attestor Note\",\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 note = new Gcp.ContainerAnalysis.Note(\"note\", new()\n {\n Name = \"attestor-note\",\n ShortDescription = \"test note\",\n LongDescription = \"a longer description of test note\",\n ExpirationTime = \"2120-10-02T15:01:23.045123456Z\",\n RelatedUrls = new[]\n {\n new Gcp.ContainerAnalysis.Inputs.NoteRelatedUrlArgs\n {\n Url = \"some.url\",\n Label = \"foo\",\n },\n new Gcp.ContainerAnalysis.Inputs.NoteRelatedUrlArgs\n {\n Url = \"google.com\",\n },\n },\n AttestationAuthority = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityArgs\n {\n Hint = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityHintArgs\n {\n HumanReadableName = \"Attestor Note\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/containeranalysis\"\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 := containeranalysis.NewNote(ctx, \"note\", \u0026containeranalysis.NoteArgs{\n\t\t\tName: pulumi.String(\"attestor-note\"),\n\t\t\tShortDescription: pulumi.String(\"test note\"),\n\t\t\tLongDescription: pulumi.String(\"a longer description of test note\"),\n\t\t\tExpirationTime: pulumi.String(\"2120-10-02T15:01:23.045123456Z\"),\n\t\t\tRelatedUrls: containeranalysis.NoteRelatedUrlArray{\n\t\t\t\t\u0026containeranalysis.NoteRelatedUrlArgs{\n\t\t\t\t\tUrl: pulumi.String(\"some.url\"),\n\t\t\t\t\tLabel: pulumi.String(\"foo\"),\n\t\t\t\t},\n\t\t\t\t\u0026containeranalysis.NoteRelatedUrlArgs{\n\t\t\t\t\tUrl: pulumi.String(\"google.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAttestationAuthority: \u0026containeranalysis.NoteAttestationAuthorityArgs{\n\t\t\t\tHint: \u0026containeranalysis.NoteAttestationAuthorityHintArgs{\n\t\t\t\t\tHumanReadableName: pulumi.String(\"Attestor Note\"),\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.containeranalysis.Note;\nimport com.pulumi.gcp.containeranalysis.NoteArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteRelatedUrlArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityHintArgs;\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 note = new Note(\"note\", NoteArgs.builder()\n .name(\"attestor-note\")\n .shortDescription(\"test note\")\n .longDescription(\"a longer description of test note\")\n .expirationTime(\"2120-10-02T15:01:23.045123456Z\")\n .relatedUrls( \n NoteRelatedUrlArgs.builder()\n .url(\"some.url\")\n .label(\"foo\")\n .build(),\n NoteRelatedUrlArgs.builder()\n .url(\"google.com\")\n .build())\n .attestationAuthority(NoteAttestationAuthorityArgs.builder()\n .hint(NoteAttestationAuthorityHintArgs.builder()\n .humanReadableName(\"Attestor Note\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n note:\n type: gcp:containeranalysis:Note\n properties:\n name: attestor-note\n shortDescription: test note\n longDescription: a longer description of test note\n expirationTime: 2120-10-02T15:01:23.045123456Z\n relatedUrls:\n - url: some.url\n label: foo\n - url: google.com\n attestationAuthority:\n hint:\n humanReadableName: Attestor Note\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNote can be imported using any of these accepted formats:\n\n* `projects/{{project}}/notes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Note can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:containeranalysis/note:Note default projects/{{project}}/notes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:containeranalysis/note:Note default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:containeranalysis/note:Note default {{name}}\n```\n\n", + "description": "A Container Analysis note is a high-level piece of metadata that\ndescribes a type of analysis that can be done for a resource.\n\n\nTo get more information about Note, see:\n\n* [API documentation](https://cloud.google.com/container-analysis/api/reference/rest/)\n* How-to Guides\n * [Creating Attestations (Occurrences)](https://cloud.google.com/binary-authorization/docs/making-attestations)\n * [Official Documentation](https://cloud.google.com/container-analysis/)\n\n## Example Usage\n\n### Container Analysis Note Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst note = new gcp.containeranalysis.Note(\"note\", {\n name: \"attestor-note\",\n attestationAuthority: {\n hint: {\n humanReadableName: \"Attestor Note\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnote = gcp.containeranalysis.Note(\"note\",\n name=\"attestor-note\",\n attestation_authority={\n \"hint\": {\n \"human_readable_name\": \"Attestor Note\",\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 note = new Gcp.ContainerAnalysis.Note(\"note\", new()\n {\n Name = \"attestor-note\",\n AttestationAuthority = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityArgs\n {\n Hint = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityHintArgs\n {\n HumanReadableName = \"Attestor Note\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/containeranalysis\"\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 := containeranalysis.NewNote(ctx, \"note\", \u0026containeranalysis.NoteArgs{\n\t\t\tName: pulumi.String(\"attestor-note\"),\n\t\t\tAttestationAuthority: \u0026containeranalysis.NoteAttestationAuthorityArgs{\n\t\t\t\tHint: \u0026containeranalysis.NoteAttestationAuthorityHintArgs{\n\t\t\t\t\tHumanReadableName: pulumi.String(\"Attestor Note\"),\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.containeranalysis.Note;\nimport com.pulumi.gcp.containeranalysis.NoteArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityHintArgs;\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 note = new Note(\"note\", NoteArgs.builder()\n .name(\"attestor-note\")\n .attestationAuthority(NoteAttestationAuthorityArgs.builder()\n .hint(NoteAttestationAuthorityHintArgs.builder()\n .humanReadableName(\"Attestor Note\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n note:\n type: gcp:containeranalysis:Note\n properties:\n name: attestor-note\n attestationAuthority:\n hint:\n humanReadableName: Attestor Note\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Container Analysis Note Attestation Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst note = new gcp.containeranalysis.Note(\"note\", {\n name: \"attestor-note\",\n shortDescription: \"test note\",\n longDescription: \"a longer description of test note\",\n expirationTime: \"2120-10-02T15:01:23.045123456Z\",\n relatedUrls: [\n {\n url: \"some.url\",\n label: \"foo\",\n },\n {\n url: \"google.com\",\n },\n ],\n attestationAuthority: {\n hint: {\n humanReadableName: \"Attestor Note\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnote = gcp.containeranalysis.Note(\"note\",\n name=\"attestor-note\",\n short_description=\"test note\",\n long_description=\"a longer description of test note\",\n expiration_time=\"2120-10-02T15:01:23.045123456Z\",\n related_urls=[\n {\n \"url\": \"some.url\",\n \"label\": \"foo\",\n },\n {\n \"url\": \"google.com\",\n },\n ],\n attestation_authority={\n \"hint\": {\n \"human_readable_name\": \"Attestor Note\",\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 note = new Gcp.ContainerAnalysis.Note(\"note\", new()\n {\n Name = \"attestor-note\",\n ShortDescription = \"test note\",\n LongDescription = \"a longer description of test note\",\n ExpirationTime = \"2120-10-02T15:01:23.045123456Z\",\n RelatedUrls = new[]\n {\n new Gcp.ContainerAnalysis.Inputs.NoteRelatedUrlArgs\n {\n Url = \"some.url\",\n Label = \"foo\",\n },\n new Gcp.ContainerAnalysis.Inputs.NoteRelatedUrlArgs\n {\n Url = \"google.com\",\n },\n },\n AttestationAuthority = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityArgs\n {\n Hint = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityHintArgs\n {\n HumanReadableName = \"Attestor Note\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/containeranalysis\"\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 := containeranalysis.NewNote(ctx, \"note\", \u0026containeranalysis.NoteArgs{\n\t\t\tName: pulumi.String(\"attestor-note\"),\n\t\t\tShortDescription: pulumi.String(\"test note\"),\n\t\t\tLongDescription: pulumi.String(\"a longer description of test note\"),\n\t\t\tExpirationTime: pulumi.String(\"2120-10-02T15:01:23.045123456Z\"),\n\t\t\tRelatedUrls: containeranalysis.NoteRelatedUrlArray{\n\t\t\t\t\u0026containeranalysis.NoteRelatedUrlArgs{\n\t\t\t\t\tUrl: pulumi.String(\"some.url\"),\n\t\t\t\t\tLabel: pulumi.String(\"foo\"),\n\t\t\t\t},\n\t\t\t\t\u0026containeranalysis.NoteRelatedUrlArgs{\n\t\t\t\t\tUrl: pulumi.String(\"google.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAttestationAuthority: \u0026containeranalysis.NoteAttestationAuthorityArgs{\n\t\t\t\tHint: \u0026containeranalysis.NoteAttestationAuthorityHintArgs{\n\t\t\t\t\tHumanReadableName: pulumi.String(\"Attestor Note\"),\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.containeranalysis.Note;\nimport com.pulumi.gcp.containeranalysis.NoteArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteRelatedUrlArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityHintArgs;\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 note = new Note(\"note\", NoteArgs.builder()\n .name(\"attestor-note\")\n .shortDescription(\"test note\")\n .longDescription(\"a longer description of test note\")\n .expirationTime(\"2120-10-02T15:01:23.045123456Z\")\n .relatedUrls( \n NoteRelatedUrlArgs.builder()\n .url(\"some.url\")\n .label(\"foo\")\n .build(),\n NoteRelatedUrlArgs.builder()\n .url(\"google.com\")\n .build())\n .attestationAuthority(NoteAttestationAuthorityArgs.builder()\n .hint(NoteAttestationAuthorityHintArgs.builder()\n .humanReadableName(\"Attestor Note\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n note:\n type: gcp:containeranalysis:Note\n properties:\n name: attestor-note\n shortDescription: test note\n longDescription: a longer description of test note\n expirationTime: 2120-10-02T15:01:23.045123456Z\n relatedUrls:\n - url: some.url\n label: foo\n - url: google.com\n attestationAuthority:\n hint:\n humanReadableName: Attestor Note\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNote can be imported using any of these accepted formats:\n\n* `projects/{{project}}/notes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Note can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:containeranalysis/note:Note default projects/{{project}}/notes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:containeranalysis/note:Note default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:containeranalysis/note:Note default {{name}}\n```\n\n", "properties": { "attestationAuthority": { "$ref": "#/types/gcp:containeranalysis/NoteAttestationAuthority:NoteAttestationAuthority", @@ -169919,7 +169919,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\n\n## Example Usage\n\n### Database Migration Service Connection Profile Cloudsql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"my-database\",\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(\"sql_client_cert\", {\n commonName: \"my-cert\",\n instance: cloudsqldb.name,\n}, {\n dependsOn: [cloudsqldb],\n});\nconst sqldbUser = new gcp.sql.User(\"sqldb_user\", {\n name: \"my-username\",\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(\"cloudsqlprofile_destination\", {\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 name=\"my-database\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-n1-standard-1\",\n \"deletionProtectionEnabled\": False,\n },\n deletion_protection=False)\nsql_client_cert = gcp.sql.SslCert(\"sql_client_cert\",\n common_name=\"my-cert\",\n instance=cloudsqldb.name,\n opts = pulumi.ResourceOptions(depends_on=[cloudsqldb]))\nsqldb_user = gcp.sql.User(\"sqldb_user\",\n name=\"my-username\",\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={\n \"host\": cloudsqldb.ip_addresses[0].ip_address,\n \"port\": 3306,\n \"username\": sqldb_user.name,\n \"password\": sqldb_user.password,\n \"ssl\": {\n \"clientKey\": sql_client_cert.private_key,\n \"clientCertificate\": sql_client_cert.cert,\n \"caCertificate\": sql_client_cert.server_ca_cert,\n },\n \"cloudSqlId\": \"my-database\",\n },\n opts = pulumi.ResourceOptions(depends_on=[sqldb_user]))\ncloudsqlprofile_destination = gcp.databasemigrationservice.ConnectionProfile(\"cloudsqlprofile_destination\",\n location=\"us-central1\",\n connection_profile_id=\"my-toprofileid\",\n display_name=\"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\": f\"projects/{project.project_id}/locations/us-central1/connectionProfiles/my-fromprofileid\",\n \"rootPassword\": \"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 Name = \"my-database\",\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(\"sql_client_cert\", new()\n {\n CommonName = \"my-cert\",\n Instance = cloudsqldb.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cloudsqldb,\n },\n });\n\n var sqldbUser = new Gcp.Sql.User(\"sqldb_user\", new()\n {\n Name = \"my-username\",\n Instance = cloudsqldb.Name,\n Password = \"my-password\",\n }, new CustomResourceOptions\n {\n DependsOn =\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 =\n {\n sqldbUser,\n },\n });\n\n var cloudsqlprofileDestination = new Gcp.DatabaseMigrationService.ConnectionProfile(\"cloudsqlprofile_destination\", 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 =\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/v7/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-database\"),\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, \"sql_client_cert\", \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, \"sqldb_user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"my-username\"),\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, \"cloudsqlprofile_destination\", \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 .name(\"my-database\")\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 .name(\"my-username\")\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 name: my-database\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 name: sql_client_cert\n properties:\n commonName: my-cert\n instance: ${cloudsqldb.name}\n options:\n dependson:\n - ${cloudsqldb}\n sqldbUser:\n type: gcp:sql:User\n name: sqldb_user\n properties:\n name: my-username\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 name: cloudsqlprofile_destination\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\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Connection Profile Postgres\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst postgresqldb = new gcp.sql.DatabaseInstance(\"postgresqldb\", {\n name: \"my-database\",\n databaseVersion: \"POSTGRES_12\",\n settings: {\n tier: \"db-custom-2-13312\",\n },\n deletionProtection: false,\n});\nconst sqlClientCert = new gcp.sql.SslCert(\"sql_client_cert\", {\n commonName: \"my-cert\",\n instance: postgresqldb.name,\n}, {\n dependsOn: [postgresqldb],\n});\nconst sqldbUser = new gcp.sql.User(\"sqldb_user\", {\n name: \"my-username\",\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 name=\"my-database\",\n database_version=\"POSTGRES_12\",\n settings={\n \"tier\": \"db-custom-2-13312\",\n },\n deletion_protection=False)\nsql_client_cert = gcp.sql.SslCert(\"sql_client_cert\",\n common_name=\"my-cert\",\n instance=postgresqldb.name,\n opts = pulumi.ResourceOptions(depends_on=[postgresqldb]))\nsqldb_user = gcp.sql.User(\"sqldb_user\",\n name=\"my-username\",\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={\n \"host\": postgresqldb.ip_addresses[0].ip_address,\n \"port\": 5432,\n \"username\": sqldb_user.name,\n \"password\": sqldb_user.password,\n \"ssl\": {\n \"clientKey\": sql_client_cert.private_key,\n \"clientCertificate\": sql_client_cert.cert,\n \"caCertificate\": sql_client_cert.server_ca_cert,\n },\n \"cloudSqlId\": \"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 Name = \"my-database\",\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(\"sql_client_cert\", new()\n {\n CommonName = \"my-cert\",\n Instance = postgresqldb.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n postgresqldb,\n },\n });\n\n var sqldbUser = new Gcp.Sql.User(\"sqldb_user\", new()\n {\n Name = \"my-username\",\n Instance = postgresqldb.Name,\n Password = \"my-password\",\n }, new CustomResourceOptions\n {\n DependsOn =\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 =\n {\n sqldbUser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-database\"),\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, \"sql_client_cert\", \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, \"sqldb_user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"my-username\"),\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 .name(\"my-database\")\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 .name(\"my-username\")\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 name: my-database\n databaseVersion: POSTGRES_12\n settings:\n tier: db-custom-2-13312\n deletionProtection: false\n sqlClientCert:\n type: gcp:sql:SslCert\n name: sql_client_cert\n properties:\n commonName: my-cert\n instance: ${postgresqldb.name}\n options:\n dependson:\n - ${postgresqldb}\n sqldbUser:\n type: gcp:sql:User\n name: sqldb_user\n properties:\n name: my-username\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\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Connection Profile Oracle\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst oracleprofile = new gcp.databasemigrationservice.ConnectionProfile(\"oracleprofile\", {\n location: \"us-central1\",\n connectionProfileId: \"my-profileid\",\n displayName: \"my-profileid_display\",\n labels: {\n foo: \"bar\",\n },\n oracle: {\n host: \"host\",\n port: 1521,\n username: \"username\",\n password: \"password\",\n databaseService: \"dbprovider\",\n staticServiceIpConnectivity: {},\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\noracleprofile = gcp.databasemigrationservice.ConnectionProfile(\"oracleprofile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profileid\",\n display_name=\"my-profileid_display\",\n labels={\n \"foo\": \"bar\",\n },\n oracle={\n \"host\": \"host\",\n \"port\": 1521,\n \"username\": \"username\",\n \"password\": \"password\",\n \"databaseService\": \"dbprovider\",\n \"staticServiceIpConnectivity\": {},\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 oracleprofile = new Gcp.DatabaseMigrationService.ConnectionProfile(\"oracleprofile\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profileid\",\n DisplayName = \"my-profileid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Oracle = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileOracleArgs\n {\n Host = \"host\",\n Port = 1521,\n Username = \"username\",\n Password = \"password\",\n DatabaseService = \"dbprovider\",\n StaticServiceIpConnectivity = null,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/databasemigrationservice\"\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 := databasemigrationservice.NewConnectionProfile(ctx, \"oracleprofile\", \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\tOracle: \u0026databasemigrationservice.ConnectionProfileOracleArgs{\n\t\t\t\tHost: pulumi.String(\"host\"),\n\t\t\t\tPort: pulumi.Int(1521),\n\t\t\t\tUsername: pulumi.String(\"username\"),\n\t\t\t\tPassword: pulumi.String(\"password\"),\n\t\t\t\tDatabaseService: pulumi.String(\"dbprovider\"),\n\t\t\t\tStaticServiceIpConnectivity: nil,\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.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileOracleArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileOracleStaticServiceIpConnectivityArgs;\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 oracleprofile = new ConnectionProfile(\"oracleprofile\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"my-profileid\")\n .displayName(\"my-profileid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .oracle(ConnectionProfileOracleArgs.builder()\n .host(\"host\")\n .port(1521)\n .username(\"username\")\n .password(\"password\")\n .databaseService(\"dbprovider\")\n .staticServiceIpConnectivity()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n oracleprofile:\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 oracle:\n host: host\n port: 1521\n username: username\n password: password\n databaseService: dbprovider\n staticServiceIpConnectivity: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Connection Profile Alloydb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.compute.Network(\"default\", {name: \"vpc-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"private-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: _default.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst alloydbprofile = new gcp.databasemigrationservice.ConnectionProfile(\"alloydbprofile\", {\n location: \"us-central1\",\n connectionProfileId: \"my-profileid\",\n displayName: \"my-profileid_display\",\n labels: {\n foo: \"bar\",\n },\n alloydb: {\n clusterId: \"tf-test-dbmsalloycluster_52865\",\n settings: {\n initialUser: {\n user: \"alloyuser_85840\",\n password: \"alloypass_60302\",\n },\n vpcNetwork: _default.id,\n labels: {\n alloyfoo: \"alloybar\",\n },\n primaryInstanceSettings: {\n id: \"priminstid\",\n machineConfig: {\n cpuCount: 2,\n },\n databaseFlags: {},\n labels: {\n alloysinstfoo: \"allowinstbar\",\n },\n },\n },\n },\n}, {\n dependsOn: [vpcConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.compute.Network(\"default\", name=\"vpc-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"private-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\nalloydbprofile = gcp.databasemigrationservice.ConnectionProfile(\"alloydbprofile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profileid\",\n display_name=\"my-profileid_display\",\n labels={\n \"foo\": \"bar\",\n },\n alloydb={\n \"clusterId\": \"tf-test-dbmsalloycluster_52865\",\n \"settings\": {\n \"initialUser\": {\n \"user\": \"alloyuser_85840\",\n \"password\": \"alloypass_60302\",\n },\n \"vpcNetwork\": default.id,\n \"labels\": {\n \"alloyfoo\": \"alloybar\",\n },\n \"primaryInstanceSettings\": {\n \"id\": \"priminstid\",\n \"machineConfig\": {\n \"cpuCount\": 2,\n },\n \"databaseFlags\": {},\n \"labels\": {\n \"alloysinstfoo\": \"allowinstbar\",\n },\n },\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_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 project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"vpc-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"private-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var alloydbprofile = new Gcp.DatabaseMigrationService.ConnectionProfile(\"alloydbprofile\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profileid\",\n DisplayName = \"my-profileid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Alloydb = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbArgs\n {\n ClusterId = \"tf-test-dbmsalloycluster_52865\",\n Settings = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsArgs\n {\n InitialUser = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsInitialUserArgs\n {\n User = \"alloyuser_85840\",\n Password = \"alloypass_60302\",\n },\n VpcNetwork = @default.Id,\n Labels = \n {\n { \"alloyfoo\", \"alloybar\" },\n },\n PrimaryInstanceSettings = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsArgs\n {\n Id = \"priminstid\",\n MachineConfig = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsMachineConfigArgs\n {\n CpuCount = 2,\n },\n DatabaseFlags = null,\n Labels = \n {\n { \"alloysinstfoo\", \"allowinstbar\" },\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"vpc-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"private-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewConnectionProfile(ctx, \"alloydbprofile\", \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\tAlloydb: \u0026databasemigrationservice.ConnectionProfileAlloydbArgs{\n\t\t\t\tClusterId: pulumi.String(\"tf-test-dbmsalloycluster_52865\"),\n\t\t\t\tSettings: \u0026databasemigrationservice.ConnectionProfileAlloydbSettingsArgs{\n\t\t\t\t\tInitialUser: \u0026databasemigrationservice.ConnectionProfileAlloydbSettingsInitialUserArgs{\n\t\t\t\t\t\tUser: pulumi.String(\"alloyuser_85840\"),\n\t\t\t\t\t\tPassword: pulumi.String(\"alloypass_60302\"),\n\t\t\t\t\t},\n\t\t\t\t\tVpcNetwork: _default.ID(),\n\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\"alloyfoo\": pulumi.String(\"alloybar\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrimaryInstanceSettings: \u0026databasemigrationservice.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"priminstid\"),\n\t\t\t\t\t\tMachineConfig: \u0026databasemigrationservice.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsMachineConfigArgs{\n\t\t\t\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDatabaseFlags: nil,\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"alloysinstfoo\": pulumi.String(\"allowinstbar\"),\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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\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.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.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbSettingsArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbSettingsInitialUserArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsMachineConfigArgs;\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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"vpc-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"private-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var alloydbprofile = new ConnectionProfile(\"alloydbprofile\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"my-profileid\")\n .displayName(\"my-profileid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .alloydb(ConnectionProfileAlloydbArgs.builder()\n .clusterId(\"tf-test-dbmsalloycluster_52865\")\n .settings(ConnectionProfileAlloydbSettingsArgs.builder()\n .initialUser(ConnectionProfileAlloydbSettingsInitialUserArgs.builder()\n .user(\"alloyuser_85840\")\n .password(\"alloypass_60302\")\n .build())\n .vpcNetwork(default_.id())\n .labels(Map.of(\"alloyfoo\", \"alloybar\"))\n .primaryInstanceSettings(ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsArgs.builder()\n .id(\"priminstid\")\n .machineConfig(ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .databaseFlags()\n .labels(Map.of(\"alloysinstfoo\", \"allowinstbar\"))\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: vpc-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: private-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n alloydbprofile:\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 alloydb:\n clusterId: tf-test-dbmsalloycluster_52865\n settings:\n initialUser:\n user: alloyuser_85840\n password: alloypass_60302\n vpcNetwork: ${default.id}\n labels:\n alloyfoo: alloybar\n primaryInstanceSettings:\n id: priminstid\n machineConfig:\n cpuCount: 2\n databaseFlags: {}\n labels:\n alloysinstfoo: allowinstbar\n options:\n dependson:\n - ${vpcConnection}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnectionProfile can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}`\n\n* `{{project}}/{{location}}/{{connection_profile_id}}`\n\n* `{{location}}/{{connection_profile_id}}`\n\nWhen using the `pulumi import` command, ConnectionProfile can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:databasemigrationservice/connectionProfile:ConnectionProfile default projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}\n```\n\n```sh\n$ pulumi import gcp:databasemigrationservice/connectionProfile:ConnectionProfile default {{project}}/{{location}}/{{connection_profile_id}}\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\n\n## Example Usage\n\n### Database Migration Service Connection Profile Cloudsql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"my-database\",\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(\"sql_client_cert\", {\n commonName: \"my-cert\",\n instance: cloudsqldb.name,\n}, {\n dependsOn: [cloudsqldb],\n});\nconst sqldbUser = new gcp.sql.User(\"sqldb_user\", {\n name: \"my-username\",\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(\"cloudsqlprofile_destination\", {\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 name=\"my-database\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-n1-standard-1\",\n \"deletion_protection_enabled\": False,\n },\n deletion_protection=False)\nsql_client_cert = gcp.sql.SslCert(\"sql_client_cert\",\n common_name=\"my-cert\",\n instance=cloudsqldb.name,\n opts = pulumi.ResourceOptions(depends_on=[cloudsqldb]))\nsqldb_user = gcp.sql.User(\"sqldb_user\",\n name=\"my-username\",\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={\n \"host\": cloudsqldb.ip_addresses[0].ip_address,\n \"port\": 3306,\n \"username\": sqldb_user.name,\n \"password\": sqldb_user.password,\n \"ssl\": {\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(\"cloudsqlprofile_destination\",\n location=\"us-central1\",\n connection_profile_id=\"my-toprofileid\",\n display_name=\"my-toprofileid_displayname\",\n labels={\n \"foo\": \"bar\",\n },\n cloudsql={\n \"settings\": {\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\": {\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 Name = \"my-database\",\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(\"sql_client_cert\", new()\n {\n CommonName = \"my-cert\",\n Instance = cloudsqldb.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cloudsqldb,\n },\n });\n\n var sqldbUser = new Gcp.Sql.User(\"sqldb_user\", new()\n {\n Name = \"my-username\",\n Instance = cloudsqldb.Name,\n Password = \"my-password\",\n }, new CustomResourceOptions\n {\n DependsOn =\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 =\n {\n sqldbUser,\n },\n });\n\n var cloudsqlprofileDestination = new Gcp.DatabaseMigrationService.ConnectionProfile(\"cloudsqlprofile_destination\", 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 =\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/v7/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-database\"),\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, \"sql_client_cert\", \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, \"sqldb_user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"my-username\"),\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, \"cloudsqlprofile_destination\", \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 .name(\"my-database\")\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 .name(\"my-username\")\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 name: my-database\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 name: sql_client_cert\n properties:\n commonName: my-cert\n instance: ${cloudsqldb.name}\n options:\n dependson:\n - ${cloudsqldb}\n sqldbUser:\n type: gcp:sql:User\n name: sqldb_user\n properties:\n name: my-username\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 name: cloudsqlprofile_destination\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\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Connection Profile Postgres\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst postgresqldb = new gcp.sql.DatabaseInstance(\"postgresqldb\", {\n name: \"my-database\",\n databaseVersion: \"POSTGRES_12\",\n settings: {\n tier: \"db-custom-2-13312\",\n },\n deletionProtection: false,\n});\nconst sqlClientCert = new gcp.sql.SslCert(\"sql_client_cert\", {\n commonName: \"my-cert\",\n instance: postgresqldb.name,\n}, {\n dependsOn: [postgresqldb],\n});\nconst sqldbUser = new gcp.sql.User(\"sqldb_user\", {\n name: \"my-username\",\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 name=\"my-database\",\n database_version=\"POSTGRES_12\",\n settings={\n \"tier\": \"db-custom-2-13312\",\n },\n deletion_protection=False)\nsql_client_cert = gcp.sql.SslCert(\"sql_client_cert\",\n common_name=\"my-cert\",\n instance=postgresqldb.name,\n opts = pulumi.ResourceOptions(depends_on=[postgresqldb]))\nsqldb_user = gcp.sql.User(\"sqldb_user\",\n name=\"my-username\",\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={\n \"host\": postgresqldb.ip_addresses[0].ip_address,\n \"port\": 5432,\n \"username\": sqldb_user.name,\n \"password\": sqldb_user.password,\n \"ssl\": {\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 Name = \"my-database\",\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(\"sql_client_cert\", new()\n {\n CommonName = \"my-cert\",\n Instance = postgresqldb.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n postgresqldb,\n },\n });\n\n var sqldbUser = new Gcp.Sql.User(\"sqldb_user\", new()\n {\n Name = \"my-username\",\n Instance = postgresqldb.Name,\n Password = \"my-password\",\n }, new CustomResourceOptions\n {\n DependsOn =\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 =\n {\n sqldbUser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-database\"),\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, \"sql_client_cert\", \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, \"sqldb_user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"my-username\"),\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 .name(\"my-database\")\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 .name(\"my-username\")\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 name: my-database\n databaseVersion: POSTGRES_12\n settings:\n tier: db-custom-2-13312\n deletionProtection: false\n sqlClientCert:\n type: gcp:sql:SslCert\n name: sql_client_cert\n properties:\n commonName: my-cert\n instance: ${postgresqldb.name}\n options:\n dependson:\n - ${postgresqldb}\n sqldbUser:\n type: gcp:sql:User\n name: sqldb_user\n properties:\n name: my-username\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\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Connection Profile Oracle\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst oracleprofile = new gcp.databasemigrationservice.ConnectionProfile(\"oracleprofile\", {\n location: \"us-central1\",\n connectionProfileId: \"my-profileid\",\n displayName: \"my-profileid_display\",\n labels: {\n foo: \"bar\",\n },\n oracle: {\n host: \"host\",\n port: 1521,\n username: \"username\",\n password: \"password\",\n databaseService: \"dbprovider\",\n staticServiceIpConnectivity: {},\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\noracleprofile = gcp.databasemigrationservice.ConnectionProfile(\"oracleprofile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profileid\",\n display_name=\"my-profileid_display\",\n labels={\n \"foo\": \"bar\",\n },\n oracle={\n \"host\": \"host\",\n \"port\": 1521,\n \"username\": \"username\",\n \"password\": \"password\",\n \"database_service\": \"dbprovider\",\n \"static_service_ip_connectivity\": {},\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 oracleprofile = new Gcp.DatabaseMigrationService.ConnectionProfile(\"oracleprofile\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profileid\",\n DisplayName = \"my-profileid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Oracle = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileOracleArgs\n {\n Host = \"host\",\n Port = 1521,\n Username = \"username\",\n Password = \"password\",\n DatabaseService = \"dbprovider\",\n StaticServiceIpConnectivity = null,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/databasemigrationservice\"\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 := databasemigrationservice.NewConnectionProfile(ctx, \"oracleprofile\", \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\tOracle: \u0026databasemigrationservice.ConnectionProfileOracleArgs{\n\t\t\t\tHost: pulumi.String(\"host\"),\n\t\t\t\tPort: pulumi.Int(1521),\n\t\t\t\tUsername: pulumi.String(\"username\"),\n\t\t\t\tPassword: pulumi.String(\"password\"),\n\t\t\t\tDatabaseService: pulumi.String(\"dbprovider\"),\n\t\t\t\tStaticServiceIpConnectivity: nil,\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.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileOracleArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileOracleStaticServiceIpConnectivityArgs;\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 oracleprofile = new ConnectionProfile(\"oracleprofile\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"my-profileid\")\n .displayName(\"my-profileid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .oracle(ConnectionProfileOracleArgs.builder()\n .host(\"host\")\n .port(1521)\n .username(\"username\")\n .password(\"password\")\n .databaseService(\"dbprovider\")\n .staticServiceIpConnectivity()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n oracleprofile:\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 oracle:\n host: host\n port: 1521\n username: username\n password: password\n databaseService: dbprovider\n staticServiceIpConnectivity: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Connection Profile Alloydb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.compute.Network(\"default\", {name: \"vpc-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"private-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: _default.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst alloydbprofile = new gcp.databasemigrationservice.ConnectionProfile(\"alloydbprofile\", {\n location: \"us-central1\",\n connectionProfileId: \"my-profileid\",\n displayName: \"my-profileid_display\",\n labels: {\n foo: \"bar\",\n },\n alloydb: {\n clusterId: \"tf-test-dbmsalloycluster_52865\",\n settings: {\n initialUser: {\n user: \"alloyuser_85840\",\n password: \"alloypass_60302\",\n },\n vpcNetwork: _default.id,\n labels: {\n alloyfoo: \"alloybar\",\n },\n primaryInstanceSettings: {\n id: \"priminstid\",\n machineConfig: {\n cpuCount: 2,\n },\n databaseFlags: {},\n labels: {\n alloysinstfoo: \"allowinstbar\",\n },\n },\n },\n },\n}, {\n dependsOn: [vpcConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.compute.Network(\"default\", name=\"vpc-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"private-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\nalloydbprofile = gcp.databasemigrationservice.ConnectionProfile(\"alloydbprofile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profileid\",\n display_name=\"my-profileid_display\",\n labels={\n \"foo\": \"bar\",\n },\n alloydb={\n \"cluster_id\": \"tf-test-dbmsalloycluster_52865\",\n \"settings\": {\n \"initial_user\": {\n \"user\": \"alloyuser_85840\",\n \"password\": \"alloypass_60302\",\n },\n \"vpc_network\": default.id,\n \"labels\": {\n \"alloyfoo\": \"alloybar\",\n },\n \"primary_instance_settings\": {\n \"id\": \"priminstid\",\n \"machine_config\": {\n \"cpu_count\": 2,\n },\n \"database_flags\": {},\n \"labels\": {\n \"alloysinstfoo\": \"allowinstbar\",\n },\n },\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_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 project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"vpc-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"private-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var alloydbprofile = new Gcp.DatabaseMigrationService.ConnectionProfile(\"alloydbprofile\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profileid\",\n DisplayName = \"my-profileid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Alloydb = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbArgs\n {\n ClusterId = \"tf-test-dbmsalloycluster_52865\",\n Settings = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsArgs\n {\n InitialUser = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsInitialUserArgs\n {\n User = \"alloyuser_85840\",\n Password = \"alloypass_60302\",\n },\n VpcNetwork = @default.Id,\n Labels = \n {\n { \"alloyfoo\", \"alloybar\" },\n },\n PrimaryInstanceSettings = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsArgs\n {\n Id = \"priminstid\",\n MachineConfig = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsMachineConfigArgs\n {\n CpuCount = 2,\n },\n DatabaseFlags = null,\n Labels = \n {\n { \"alloysinstfoo\", \"allowinstbar\" },\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"vpc-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"private-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewConnectionProfile(ctx, \"alloydbprofile\", \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\tAlloydb: \u0026databasemigrationservice.ConnectionProfileAlloydbArgs{\n\t\t\t\tClusterId: pulumi.String(\"tf-test-dbmsalloycluster_52865\"),\n\t\t\t\tSettings: \u0026databasemigrationservice.ConnectionProfileAlloydbSettingsArgs{\n\t\t\t\t\tInitialUser: \u0026databasemigrationservice.ConnectionProfileAlloydbSettingsInitialUserArgs{\n\t\t\t\t\t\tUser: pulumi.String(\"alloyuser_85840\"),\n\t\t\t\t\t\tPassword: pulumi.String(\"alloypass_60302\"),\n\t\t\t\t\t},\n\t\t\t\t\tVpcNetwork: _default.ID(),\n\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\"alloyfoo\": pulumi.String(\"alloybar\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrimaryInstanceSettings: \u0026databasemigrationservice.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"priminstid\"),\n\t\t\t\t\t\tMachineConfig: \u0026databasemigrationservice.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsMachineConfigArgs{\n\t\t\t\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDatabaseFlags: nil,\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"alloysinstfoo\": pulumi.String(\"allowinstbar\"),\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}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\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.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.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbSettingsArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbSettingsInitialUserArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsMachineConfigArgs;\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 default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"vpc-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"private-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var alloydbprofile = new ConnectionProfile(\"alloydbprofile\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"my-profileid\")\n .displayName(\"my-profileid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .alloydb(ConnectionProfileAlloydbArgs.builder()\n .clusterId(\"tf-test-dbmsalloycluster_52865\")\n .settings(ConnectionProfileAlloydbSettingsArgs.builder()\n .initialUser(ConnectionProfileAlloydbSettingsInitialUserArgs.builder()\n .user(\"alloyuser_85840\")\n .password(\"alloypass_60302\")\n .build())\n .vpcNetwork(default_.id())\n .labels(Map.of(\"alloyfoo\", \"alloybar\"))\n .primaryInstanceSettings(ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsArgs.builder()\n .id(\"priminstid\")\n .machineConfig(ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .databaseFlags()\n .labels(Map.of(\"alloysinstfoo\", \"allowinstbar\"))\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: vpc-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: private-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n alloydbprofile:\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 alloydb:\n clusterId: tf-test-dbmsalloycluster_52865\n settings:\n initialUser:\n user: alloyuser_85840\n password: alloypass_60302\n vpcNetwork: ${default.id}\n labels:\n alloyfoo: alloybar\n primaryInstanceSettings:\n id: priminstid\n machineConfig:\n cpuCount: 2\n databaseFlags: {}\n labels:\n alloysinstfoo: allowinstbar\n options:\n dependson:\n - ${vpcConnection}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnectionProfile can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}`\n\n* `{{project}}/{{location}}/{{connection_profile_id}}`\n\n* `{{location}}/{{connection_profile_id}}`\n\nWhen using the `pulumi import` command, ConnectionProfile can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:databasemigrationservice/connectionProfile:ConnectionProfile default projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}\n```\n\n```sh\n$ pulumi import gcp:databasemigrationservice/connectionProfile:ConnectionProfile default {{project}}/{{location}}/{{connection_profile_id}}\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", @@ -170159,7 +170159,7 @@ } }, "gcp:databasemigrationservice/privateConnection:PrivateConnection": { - "description": "The PrivateConnection resource is used to establish private connectivity between Database Migration Service and a customer's network.\n\n\nTo get more information about PrivateConnection, see:\n\n* [API documentation](https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.privateConnections)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/database-migration/docs/oracle-to-postgresql/create-private-connectivity-configuration)\n\n## Example Usage\n\n### Database Migration Service Private Connection\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getNetwork({\n name: \"my-network\",\n});\nconst defaultPrivateConnection = new gcp.databasemigrationservice.PrivateConnection(\"default\", {\n displayName: \"dbms_pc\",\n location: \"us-central1\",\n privateConnectionId: \"my-connection\",\n labels: {\n key: \"value\",\n },\n vpcPeeringConfig: {\n vpcName: _default.then(_default =\u003e _default.id),\n subnet: \"10.0.0.0/29\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"my-network\")\ndefault_private_connection = gcp.databasemigrationservice.PrivateConnection(\"default\",\n display_name=\"dbms_pc\",\n location=\"us-central1\",\n private_connection_id=\"my-connection\",\n labels={\n \"key\": \"value\",\n },\n vpc_peering_config={\n \"vpcName\": default.id,\n \"subnet\": \"10.0.0.0/29\",\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 @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"my-network\",\n });\n\n var defaultPrivateConnection = new Gcp.DatabaseMigrationService.PrivateConnection(\"default\", new()\n {\n DisplayName = \"dbms_pc\",\n Location = \"us-central1\",\n PrivateConnectionId = \"my-connection\",\n Labels = \n {\n { \"key\", \"value\" },\n },\n VpcPeeringConfig = new Gcp.DatabaseMigrationService.Inputs.PrivateConnectionVpcPeeringConfigArgs\n {\n VpcName = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n Subnet = \"10.0.0.0/29\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/databasemigrationservice\"\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_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"my-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewPrivateConnection(ctx, \"default\", \u0026databasemigrationservice.PrivateConnectionArgs{\n\t\t\tDisplayName: pulumi.String(\"dbms_pc\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t\tVpcPeeringConfig: \u0026databasemigrationservice.PrivateConnectionVpcPeeringConfigArgs{\n\t\t\t\tVpcName: pulumi.String(_default.Id),\n\t\t\t\tSubnet: pulumi.String(\"10.0.0.0/29\"),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.databasemigrationservice.PrivateConnection;\nimport com.pulumi.gcp.databasemigrationservice.PrivateConnectionArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.PrivateConnectionVpcPeeringConfigArgs;\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 default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"my-network\")\n .build());\n\n var defaultPrivateConnection = new PrivateConnection(\"defaultPrivateConnection\", PrivateConnectionArgs.builder()\n .displayName(\"dbms_pc\")\n .location(\"us-central1\")\n .privateConnectionId(\"my-connection\")\n .labels(Map.of(\"key\", \"value\"))\n .vpcPeeringConfig(PrivateConnectionVpcPeeringConfigArgs.builder()\n .vpcName(default_.id())\n .subnet(\"10.0.0.0/29\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultPrivateConnection:\n type: gcp:databasemigrationservice:PrivateConnection\n name: default\n properties:\n displayName: dbms_pc\n location: us-central1\n privateConnectionId: my-connection\n labels:\n key: value\n vpcPeeringConfig:\n vpcName: ${default.id}\n subnet: 10.0.0.0/29\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: my-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPrivateConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/privateConnections/{{private_connection_id}}`\n\n* `{{project}}/{{location}}/{{private_connection_id}}`\n\n* `{{location}}/{{private_connection_id}}`\n\nWhen using the `pulumi import` command, PrivateConnection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:databasemigrationservice/privateConnection:PrivateConnection default projects/{{project}}/locations/{{location}}/privateConnections/{{private_connection_id}}\n```\n\n```sh\n$ pulumi import gcp:databasemigrationservice/privateConnection:PrivateConnection default {{project}}/{{location}}/{{private_connection_id}}\n```\n\n```sh\n$ pulumi import gcp:databasemigrationservice/privateConnection:PrivateConnection default {{location}}/{{private_connection_id}}\n```\n\n", + "description": "The PrivateConnection resource is used to establish private connectivity between Database Migration Service and a customer's network.\n\n\nTo get more information about PrivateConnection, see:\n\n* [API documentation](https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.privateConnections)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/database-migration/docs/oracle-to-postgresql/create-private-connectivity-configuration)\n\n## Example Usage\n\n### Database Migration Service Private Connection\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getNetwork({\n name: \"my-network\",\n});\nconst defaultPrivateConnection = new gcp.databasemigrationservice.PrivateConnection(\"default\", {\n displayName: \"dbms_pc\",\n location: \"us-central1\",\n privateConnectionId: \"my-connection\",\n labels: {\n key: \"value\",\n },\n vpcPeeringConfig: {\n vpcName: _default.then(_default =\u003e _default.id),\n subnet: \"10.0.0.0/29\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"my-network\")\ndefault_private_connection = gcp.databasemigrationservice.PrivateConnection(\"default\",\n display_name=\"dbms_pc\",\n location=\"us-central1\",\n private_connection_id=\"my-connection\",\n labels={\n \"key\": \"value\",\n },\n vpc_peering_config={\n \"vpc_name\": default.id,\n \"subnet\": \"10.0.0.0/29\",\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 @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"my-network\",\n });\n\n var defaultPrivateConnection = new Gcp.DatabaseMigrationService.PrivateConnection(\"default\", new()\n {\n DisplayName = \"dbms_pc\",\n Location = \"us-central1\",\n PrivateConnectionId = \"my-connection\",\n Labels = \n {\n { \"key\", \"value\" },\n },\n VpcPeeringConfig = new Gcp.DatabaseMigrationService.Inputs.PrivateConnectionVpcPeeringConfigArgs\n {\n VpcName = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n Subnet = \"10.0.0.0/29\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/databasemigrationservice\"\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_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"my-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewPrivateConnection(ctx, \"default\", \u0026databasemigrationservice.PrivateConnectionArgs{\n\t\t\tDisplayName: pulumi.String(\"dbms_pc\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t\tVpcPeeringConfig: \u0026databasemigrationservice.PrivateConnectionVpcPeeringConfigArgs{\n\t\t\t\tVpcName: pulumi.String(_default.Id),\n\t\t\t\tSubnet: pulumi.String(\"10.0.0.0/29\"),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.databasemigrationservice.PrivateConnection;\nimport com.pulumi.gcp.databasemigrationservice.PrivateConnectionArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.PrivateConnectionVpcPeeringConfigArgs;\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 default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"my-network\")\n .build());\n\n var defaultPrivateConnection = new PrivateConnection(\"defaultPrivateConnection\", PrivateConnectionArgs.builder()\n .displayName(\"dbms_pc\")\n .location(\"us-central1\")\n .privateConnectionId(\"my-connection\")\n .labels(Map.of(\"key\", \"value\"))\n .vpcPeeringConfig(PrivateConnectionVpcPeeringConfigArgs.builder()\n .vpcName(default_.id())\n .subnet(\"10.0.0.0/29\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultPrivateConnection:\n type: gcp:databasemigrationservice:PrivateConnection\n name: default\n properties:\n displayName: dbms_pc\n location: us-central1\n privateConnectionId: my-connection\n labels:\n key: value\n vpcPeeringConfig:\n vpcName: ${default.id}\n subnet: 10.0.0.0/29\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: my-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPrivateConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/privateConnections/{{private_connection_id}}`\n\n* `{{project}}/{{location}}/{{private_connection_id}}`\n\n* `{{location}}/{{private_connection_id}}`\n\nWhen using the `pulumi import` command, PrivateConnection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:databasemigrationservice/privateConnection:PrivateConnection default projects/{{project}}/locations/{{location}}/privateConnections/{{private_connection_id}}\n```\n\n```sh\n$ pulumi import gcp:databasemigrationservice/privateConnection:PrivateConnection default {{project}}/{{location}}/{{private_connection_id}}\n```\n\n```sh\n$ pulumi import gcp:databasemigrationservice/privateConnection:PrivateConnection default {{location}}/{{private_connection_id}}\n```\n\n", "properties": { "displayName": { "type": "string", @@ -170340,7 +170340,7 @@ } }, "gcp:datacatalog/entry:Entry": { - "description": "Entry Metadata. A Data Catalog Entry resource represents another resource in Google Cloud Platform\n(such as a BigQuery dataset or a Pub/Sub topic) or outside of Google Cloud Platform. Clients can use\nthe linkedResource field in the Entry resource to refer to the original resource ID of the source system.\n\nAn Entry resource contains resource details, such as its schema. An Entry can also be used to attach\nflexible metadata, such as a Tag.\n\n\nTo get more information about Entry, see:\n\n* [API documentation](https://cloud.google.com/data-catalog/docs/reference/rest/v1/projects.locations.entryGroups.entries)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-catalog/docs)\n\n## Example Usage\n\n### Data Catalog Entry Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst entryGroup = new gcp.datacatalog.EntryGroup(\"entry_group\", {entryGroupId: \"my_group\"});\nconst basicEntry = new gcp.datacatalog.Entry(\"basic_entry\", {\n entryGroup: entryGroup.id,\n entryId: \"my_entry\",\n userSpecifiedType: \"my_custom_type\",\n userSpecifiedSystem: \"SomethingExternal\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nentry_group = gcp.datacatalog.EntryGroup(\"entry_group\", entry_group_id=\"my_group\")\nbasic_entry = gcp.datacatalog.Entry(\"basic_entry\",\n entry_group=entry_group.id,\n entry_id=\"my_entry\",\n user_specified_type=\"my_custom_type\",\n user_specified_system=\"SomethingExternal\")\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 entryGroup = new Gcp.DataCatalog.EntryGroup(\"entry_group\", new()\n {\n EntryGroupId = \"my_group\",\n });\n\n var basicEntry = new Gcp.DataCatalog.Entry(\"basic_entry\", new()\n {\n EntryGroup = entryGroup.Id,\n EntryId = \"my_entry\",\n UserSpecifiedType = \"my_custom_type\",\n UserSpecifiedSystem = \"SomethingExternal\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datacatalog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tentryGroup, err := datacatalog.NewEntryGroup(ctx, \"entry_group\", \u0026datacatalog.EntryGroupArgs{\n\t\t\tEntryGroupId: pulumi.String(\"my_group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datacatalog.NewEntry(ctx, \"basic_entry\", \u0026datacatalog.EntryArgs{\n\t\t\tEntryGroup: entryGroup.ID(),\n\t\t\tEntryId: pulumi.String(\"my_entry\"),\n\t\t\tUserSpecifiedType: pulumi.String(\"my_custom_type\"),\n\t\t\tUserSpecifiedSystem: pulumi.String(\"SomethingExternal\"),\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.datacatalog.EntryGroup;\nimport com.pulumi.gcp.datacatalog.EntryGroupArgs;\nimport com.pulumi.gcp.datacatalog.Entry;\nimport com.pulumi.gcp.datacatalog.EntryArgs;\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 entryGroup = new EntryGroup(\"entryGroup\", EntryGroupArgs.builder()\n .entryGroupId(\"my_group\")\n .build());\n\n var basicEntry = new Entry(\"basicEntry\", EntryArgs.builder()\n .entryGroup(entryGroup.id())\n .entryId(\"my_entry\")\n .userSpecifiedType(\"my_custom_type\")\n .userSpecifiedSystem(\"SomethingExternal\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicEntry:\n type: gcp:datacatalog:Entry\n name: basic_entry\n properties:\n entryGroup: ${entryGroup.id}\n entryId: my_entry\n userSpecifiedType: my_custom_type\n userSpecifiedSystem: SomethingExternal\n entryGroup:\n type: gcp:datacatalog:EntryGroup\n name: entry_group\n properties:\n entryGroupId: my_group\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Catalog Entry Fileset\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst entryGroup = new gcp.datacatalog.EntryGroup(\"entry_group\", {entryGroupId: \"my_group\"});\nconst basicEntry = new gcp.datacatalog.Entry(\"basic_entry\", {\n entryGroup: entryGroup.id,\n entryId: \"my_entry\",\n type: \"FILESET\",\n gcsFilesetSpec: {\n filePatterns: [\"gs://fake_bucket/dir/*\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nentry_group = gcp.datacatalog.EntryGroup(\"entry_group\", entry_group_id=\"my_group\")\nbasic_entry = gcp.datacatalog.Entry(\"basic_entry\",\n entry_group=entry_group.id,\n entry_id=\"my_entry\",\n type=\"FILESET\",\n gcs_fileset_spec={\n \"filePatterns\": [\"gs://fake_bucket/dir/*\"],\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 entryGroup = new Gcp.DataCatalog.EntryGroup(\"entry_group\", new()\n {\n EntryGroupId = \"my_group\",\n });\n\n var basicEntry = new Gcp.DataCatalog.Entry(\"basic_entry\", new()\n {\n EntryGroup = entryGroup.Id,\n EntryId = \"my_entry\",\n Type = \"FILESET\",\n GcsFilesetSpec = new Gcp.DataCatalog.Inputs.EntryGcsFilesetSpecArgs\n {\n FilePatterns = new[]\n {\n \"gs://fake_bucket/dir/*\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datacatalog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tentryGroup, err := datacatalog.NewEntryGroup(ctx, \"entry_group\", \u0026datacatalog.EntryGroupArgs{\n\t\t\tEntryGroupId: pulumi.String(\"my_group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datacatalog.NewEntry(ctx, \"basic_entry\", \u0026datacatalog.EntryArgs{\n\t\t\tEntryGroup: entryGroup.ID(),\n\t\t\tEntryId: pulumi.String(\"my_entry\"),\n\t\t\tType: pulumi.String(\"FILESET\"),\n\t\t\tGcsFilesetSpec: \u0026datacatalog.EntryGcsFilesetSpecArgs{\n\t\t\t\tFilePatterns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://fake_bucket/dir/*\"),\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.datacatalog.EntryGroup;\nimport com.pulumi.gcp.datacatalog.EntryGroupArgs;\nimport com.pulumi.gcp.datacatalog.Entry;\nimport com.pulumi.gcp.datacatalog.EntryArgs;\nimport com.pulumi.gcp.datacatalog.inputs.EntryGcsFilesetSpecArgs;\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 entryGroup = new EntryGroup(\"entryGroup\", EntryGroupArgs.builder()\n .entryGroupId(\"my_group\")\n .build());\n\n var basicEntry = new Entry(\"basicEntry\", EntryArgs.builder()\n .entryGroup(entryGroup.id())\n .entryId(\"my_entry\")\n .type(\"FILESET\")\n .gcsFilesetSpec(EntryGcsFilesetSpecArgs.builder()\n .filePatterns(\"gs://fake_bucket/dir/*\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicEntry:\n type: gcp:datacatalog:Entry\n name: basic_entry\n properties:\n entryGroup: ${entryGroup.id}\n entryId: my_entry\n type: FILESET\n gcsFilesetSpec:\n filePatterns:\n - gs://fake_bucket/dir/*\n entryGroup:\n type: gcp:datacatalog:EntryGroup\n name: entry_group\n properties:\n entryGroupId: my_group\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Catalog Entry Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst entryGroup = new gcp.datacatalog.EntryGroup(\"entry_group\", {entryGroupId: \"my_group\"});\nconst basicEntry = new gcp.datacatalog.Entry(\"basic_entry\", {\n entryGroup: entryGroup.id,\n entryId: \"my_entry\",\n userSpecifiedType: \"my_user_specified_type\",\n userSpecifiedSystem: \"Something_custom\",\n linkedResource: \"my/linked/resource\",\n displayName: \"my custom type entry\",\n description: \"a custom type entry for a user specified system\",\n schema: `{\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\n }\n ]\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nentry_group = gcp.datacatalog.EntryGroup(\"entry_group\", entry_group_id=\"my_group\")\nbasic_entry = gcp.datacatalog.Entry(\"basic_entry\",\n entry_group=entry_group.id,\n entry_id=\"my_entry\",\n user_specified_type=\"my_user_specified_type\",\n user_specified_system=\"Something_custom\",\n linked_resource=\"my/linked/resource\",\n display_name=\"my custom type entry\",\n description=\"a custom type entry for a user specified system\",\n schema=\"\"\"{\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\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 entryGroup = new Gcp.DataCatalog.EntryGroup(\"entry_group\", new()\n {\n EntryGroupId = \"my_group\",\n });\n\n var basicEntry = new Gcp.DataCatalog.Entry(\"basic_entry\", new()\n {\n EntryGroup = entryGroup.Id,\n EntryId = \"my_entry\",\n UserSpecifiedType = \"my_user_specified_type\",\n UserSpecifiedSystem = \"Something_custom\",\n LinkedResource = \"my/linked/resource\",\n DisplayName = \"my custom type entry\",\n Description = \"a custom type entry for a user specified system\",\n Schema = @\"{\n \"\"columns\"\": [\n {\n \"\"column\"\": \"\"first_name\"\",\n \"\"description\"\": \"\"First name\"\",\n \"\"mode\"\": \"\"REQUIRED\"\",\n \"\"type\"\": \"\"STRING\"\"\n },\n {\n \"\"column\"\": \"\"last_name\"\",\n \"\"description\"\": \"\"Last name\"\",\n \"\"mode\"\": \"\"REQUIRED\"\",\n \"\"type\"\": \"\"STRING\"\"\n },\n {\n \"\"column\"\": \"\"address\"\",\n \"\"description\"\": \"\"Address\"\",\n \"\"mode\"\": \"\"REPEATED\"\",\n \"\"subcolumns\"\": [\n {\n \"\"column\"\": \"\"city\"\",\n \"\"description\"\": \"\"City\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\"\n },\n {\n \"\"column\"\": \"\"state\"\",\n \"\"description\"\": \"\"State\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\"\n }\n ],\n \"\"type\"\": \"\"RECORD\"\"\n }\n ]\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datacatalog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tentryGroup, err := datacatalog.NewEntryGroup(ctx, \"entry_group\", \u0026datacatalog.EntryGroupArgs{\n\t\t\tEntryGroupId: pulumi.String(\"my_group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datacatalog.NewEntry(ctx, \"basic_entry\", \u0026datacatalog.EntryArgs{\n\t\t\tEntryGroup: entryGroup.ID(),\n\t\t\tEntryId: pulumi.String(\"my_entry\"),\n\t\t\tUserSpecifiedType: pulumi.String(\"my_user_specified_type\"),\n\t\t\tUserSpecifiedSystem: pulumi.String(\"Something_custom\"),\n\t\t\tLinkedResource: pulumi.String(\"my/linked/resource\"),\n\t\t\tDisplayName: pulumi.String(\"my custom type entry\"),\n\t\t\tDescription: pulumi.String(\"a custom type entry for a user specified system\"),\n\t\t\tSchema: pulumi.String(`{\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\n }\n ]\n}\n`),\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.datacatalog.EntryGroup;\nimport com.pulumi.gcp.datacatalog.EntryGroupArgs;\nimport com.pulumi.gcp.datacatalog.Entry;\nimport com.pulumi.gcp.datacatalog.EntryArgs;\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 entryGroup = new EntryGroup(\"entryGroup\", EntryGroupArgs.builder()\n .entryGroupId(\"my_group\")\n .build());\n\n var basicEntry = new Entry(\"basicEntry\", EntryArgs.builder()\n .entryGroup(entryGroup.id())\n .entryId(\"my_entry\")\n .userSpecifiedType(\"my_user_specified_type\")\n .userSpecifiedSystem(\"Something_custom\")\n .linkedResource(\"my/linked/resource\")\n .displayName(\"my custom type entry\")\n .description(\"a custom type entry for a user specified system\")\n .schema(\"\"\"\n{\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\n }\n ]\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicEntry:\n type: gcp:datacatalog:Entry\n name: basic_entry\n properties:\n entryGroup: ${entryGroup.id}\n entryId: my_entry\n userSpecifiedType: my_user_specified_type\n userSpecifiedSystem: Something_custom\n linkedResource: my/linked/resource\n displayName: my custom type entry\n description: a custom type entry for a user specified system\n schema: |\n {\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\n }\n ]\n }\n entryGroup:\n type: gcp:datacatalog:EntryGroup\n name: entry_group\n properties:\n entryGroupId: my_group\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEntry can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Entry can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:datacatalog/entry:Entry default {{name}}\n```\n\n", + "description": "Entry Metadata. A Data Catalog Entry resource represents another resource in Google Cloud Platform\n(such as a BigQuery dataset or a Pub/Sub topic) or outside of Google Cloud Platform. Clients can use\nthe linkedResource field in the Entry resource to refer to the original resource ID of the source system.\n\nAn Entry resource contains resource details, such as its schema. An Entry can also be used to attach\nflexible metadata, such as a Tag.\n\n\nTo get more information about Entry, see:\n\n* [API documentation](https://cloud.google.com/data-catalog/docs/reference/rest/v1/projects.locations.entryGroups.entries)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-catalog/docs)\n\n## Example Usage\n\n### Data Catalog Entry Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst entryGroup = new gcp.datacatalog.EntryGroup(\"entry_group\", {entryGroupId: \"my_group\"});\nconst basicEntry = new gcp.datacatalog.Entry(\"basic_entry\", {\n entryGroup: entryGroup.id,\n entryId: \"my_entry\",\n userSpecifiedType: \"my_custom_type\",\n userSpecifiedSystem: \"SomethingExternal\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nentry_group = gcp.datacatalog.EntryGroup(\"entry_group\", entry_group_id=\"my_group\")\nbasic_entry = gcp.datacatalog.Entry(\"basic_entry\",\n entry_group=entry_group.id,\n entry_id=\"my_entry\",\n user_specified_type=\"my_custom_type\",\n user_specified_system=\"SomethingExternal\")\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 entryGroup = new Gcp.DataCatalog.EntryGroup(\"entry_group\", new()\n {\n EntryGroupId = \"my_group\",\n });\n\n var basicEntry = new Gcp.DataCatalog.Entry(\"basic_entry\", new()\n {\n EntryGroup = entryGroup.Id,\n EntryId = \"my_entry\",\n UserSpecifiedType = \"my_custom_type\",\n UserSpecifiedSystem = \"SomethingExternal\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datacatalog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tentryGroup, err := datacatalog.NewEntryGroup(ctx, \"entry_group\", \u0026datacatalog.EntryGroupArgs{\n\t\t\tEntryGroupId: pulumi.String(\"my_group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datacatalog.NewEntry(ctx, \"basic_entry\", \u0026datacatalog.EntryArgs{\n\t\t\tEntryGroup: entryGroup.ID(),\n\t\t\tEntryId: pulumi.String(\"my_entry\"),\n\t\t\tUserSpecifiedType: pulumi.String(\"my_custom_type\"),\n\t\t\tUserSpecifiedSystem: pulumi.String(\"SomethingExternal\"),\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.datacatalog.EntryGroup;\nimport com.pulumi.gcp.datacatalog.EntryGroupArgs;\nimport com.pulumi.gcp.datacatalog.Entry;\nimport com.pulumi.gcp.datacatalog.EntryArgs;\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 entryGroup = new EntryGroup(\"entryGroup\", EntryGroupArgs.builder()\n .entryGroupId(\"my_group\")\n .build());\n\n var basicEntry = new Entry(\"basicEntry\", EntryArgs.builder()\n .entryGroup(entryGroup.id())\n .entryId(\"my_entry\")\n .userSpecifiedType(\"my_custom_type\")\n .userSpecifiedSystem(\"SomethingExternal\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicEntry:\n type: gcp:datacatalog:Entry\n name: basic_entry\n properties:\n entryGroup: ${entryGroup.id}\n entryId: my_entry\n userSpecifiedType: my_custom_type\n userSpecifiedSystem: SomethingExternal\n entryGroup:\n type: gcp:datacatalog:EntryGroup\n name: entry_group\n properties:\n entryGroupId: my_group\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Catalog Entry Fileset\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst entryGroup = new gcp.datacatalog.EntryGroup(\"entry_group\", {entryGroupId: \"my_group\"});\nconst basicEntry = new gcp.datacatalog.Entry(\"basic_entry\", {\n entryGroup: entryGroup.id,\n entryId: \"my_entry\",\n type: \"FILESET\",\n gcsFilesetSpec: {\n filePatterns: [\"gs://fake_bucket/dir/*\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nentry_group = gcp.datacatalog.EntryGroup(\"entry_group\", entry_group_id=\"my_group\")\nbasic_entry = gcp.datacatalog.Entry(\"basic_entry\",\n entry_group=entry_group.id,\n entry_id=\"my_entry\",\n type=\"FILESET\",\n gcs_fileset_spec={\n \"file_patterns\": [\"gs://fake_bucket/dir/*\"],\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 entryGroup = new Gcp.DataCatalog.EntryGroup(\"entry_group\", new()\n {\n EntryGroupId = \"my_group\",\n });\n\n var basicEntry = new Gcp.DataCatalog.Entry(\"basic_entry\", new()\n {\n EntryGroup = entryGroup.Id,\n EntryId = \"my_entry\",\n Type = \"FILESET\",\n GcsFilesetSpec = new Gcp.DataCatalog.Inputs.EntryGcsFilesetSpecArgs\n {\n FilePatterns = new[]\n {\n \"gs://fake_bucket/dir/*\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datacatalog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tentryGroup, err := datacatalog.NewEntryGroup(ctx, \"entry_group\", \u0026datacatalog.EntryGroupArgs{\n\t\t\tEntryGroupId: pulumi.String(\"my_group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datacatalog.NewEntry(ctx, \"basic_entry\", \u0026datacatalog.EntryArgs{\n\t\t\tEntryGroup: entryGroup.ID(),\n\t\t\tEntryId: pulumi.String(\"my_entry\"),\n\t\t\tType: pulumi.String(\"FILESET\"),\n\t\t\tGcsFilesetSpec: \u0026datacatalog.EntryGcsFilesetSpecArgs{\n\t\t\t\tFilePatterns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://fake_bucket/dir/*\"),\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.datacatalog.EntryGroup;\nimport com.pulumi.gcp.datacatalog.EntryGroupArgs;\nimport com.pulumi.gcp.datacatalog.Entry;\nimport com.pulumi.gcp.datacatalog.EntryArgs;\nimport com.pulumi.gcp.datacatalog.inputs.EntryGcsFilesetSpecArgs;\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 entryGroup = new EntryGroup(\"entryGroup\", EntryGroupArgs.builder()\n .entryGroupId(\"my_group\")\n .build());\n\n var basicEntry = new Entry(\"basicEntry\", EntryArgs.builder()\n .entryGroup(entryGroup.id())\n .entryId(\"my_entry\")\n .type(\"FILESET\")\n .gcsFilesetSpec(EntryGcsFilesetSpecArgs.builder()\n .filePatterns(\"gs://fake_bucket/dir/*\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicEntry:\n type: gcp:datacatalog:Entry\n name: basic_entry\n properties:\n entryGroup: ${entryGroup.id}\n entryId: my_entry\n type: FILESET\n gcsFilesetSpec:\n filePatterns:\n - gs://fake_bucket/dir/*\n entryGroup:\n type: gcp:datacatalog:EntryGroup\n name: entry_group\n properties:\n entryGroupId: my_group\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Catalog Entry Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst entryGroup = new gcp.datacatalog.EntryGroup(\"entry_group\", {entryGroupId: \"my_group\"});\nconst basicEntry = new gcp.datacatalog.Entry(\"basic_entry\", {\n entryGroup: entryGroup.id,\n entryId: \"my_entry\",\n userSpecifiedType: \"my_user_specified_type\",\n userSpecifiedSystem: \"Something_custom\",\n linkedResource: \"my/linked/resource\",\n displayName: \"my custom type entry\",\n description: \"a custom type entry for a user specified system\",\n schema: `{\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\n }\n ]\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nentry_group = gcp.datacatalog.EntryGroup(\"entry_group\", entry_group_id=\"my_group\")\nbasic_entry = gcp.datacatalog.Entry(\"basic_entry\",\n entry_group=entry_group.id,\n entry_id=\"my_entry\",\n user_specified_type=\"my_user_specified_type\",\n user_specified_system=\"Something_custom\",\n linked_resource=\"my/linked/resource\",\n display_name=\"my custom type entry\",\n description=\"a custom type entry for a user specified system\",\n schema=\"\"\"{\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\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 entryGroup = new Gcp.DataCatalog.EntryGroup(\"entry_group\", new()\n {\n EntryGroupId = \"my_group\",\n });\n\n var basicEntry = new Gcp.DataCatalog.Entry(\"basic_entry\", new()\n {\n EntryGroup = entryGroup.Id,\n EntryId = \"my_entry\",\n UserSpecifiedType = \"my_user_specified_type\",\n UserSpecifiedSystem = \"Something_custom\",\n LinkedResource = \"my/linked/resource\",\n DisplayName = \"my custom type entry\",\n Description = \"a custom type entry for a user specified system\",\n Schema = @\"{\n \"\"columns\"\": [\n {\n \"\"column\"\": \"\"first_name\"\",\n \"\"description\"\": \"\"First name\"\",\n \"\"mode\"\": \"\"REQUIRED\"\",\n \"\"type\"\": \"\"STRING\"\"\n },\n {\n \"\"column\"\": \"\"last_name\"\",\n \"\"description\"\": \"\"Last name\"\",\n \"\"mode\"\": \"\"REQUIRED\"\",\n \"\"type\"\": \"\"STRING\"\"\n },\n {\n \"\"column\"\": \"\"address\"\",\n \"\"description\"\": \"\"Address\"\",\n \"\"mode\"\": \"\"REPEATED\"\",\n \"\"subcolumns\"\": [\n {\n \"\"column\"\": \"\"city\"\",\n \"\"description\"\": \"\"City\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\"\n },\n {\n \"\"column\"\": \"\"state\"\",\n \"\"description\"\": \"\"State\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\"\n }\n ],\n \"\"type\"\": \"\"RECORD\"\"\n }\n ]\n}\n\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datacatalog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tentryGroup, err := datacatalog.NewEntryGroup(ctx, \"entry_group\", \u0026datacatalog.EntryGroupArgs{\n\t\t\tEntryGroupId: pulumi.String(\"my_group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datacatalog.NewEntry(ctx, \"basic_entry\", \u0026datacatalog.EntryArgs{\n\t\t\tEntryGroup: entryGroup.ID(),\n\t\t\tEntryId: pulumi.String(\"my_entry\"),\n\t\t\tUserSpecifiedType: pulumi.String(\"my_user_specified_type\"),\n\t\t\tUserSpecifiedSystem: pulumi.String(\"Something_custom\"),\n\t\t\tLinkedResource: pulumi.String(\"my/linked/resource\"),\n\t\t\tDisplayName: pulumi.String(\"my custom type entry\"),\n\t\t\tDescription: pulumi.String(\"a custom type entry for a user specified system\"),\n\t\t\tSchema: pulumi.String(`{\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\n }\n ]\n}\n`),\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.datacatalog.EntryGroup;\nimport com.pulumi.gcp.datacatalog.EntryGroupArgs;\nimport com.pulumi.gcp.datacatalog.Entry;\nimport com.pulumi.gcp.datacatalog.EntryArgs;\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 entryGroup = new EntryGroup(\"entryGroup\", EntryGroupArgs.builder()\n .entryGroupId(\"my_group\")\n .build());\n\n var basicEntry = new Entry(\"basicEntry\", EntryArgs.builder()\n .entryGroup(entryGroup.id())\n .entryId(\"my_entry\")\n .userSpecifiedType(\"my_user_specified_type\")\n .userSpecifiedSystem(\"Something_custom\")\n .linkedResource(\"my/linked/resource\")\n .displayName(\"my custom type entry\")\n .description(\"a custom type entry for a user specified system\")\n .schema(\"\"\"\n{\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\n }\n ]\n}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicEntry:\n type: gcp:datacatalog:Entry\n name: basic_entry\n properties:\n entryGroup: ${entryGroup.id}\n entryId: my_entry\n userSpecifiedType: my_user_specified_type\n userSpecifiedSystem: Something_custom\n linkedResource: my/linked/resource\n displayName: my custom type entry\n description: a custom type entry for a user specified system\n schema: |\n {\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\n }\n ]\n }\n entryGroup:\n type: gcp:datacatalog:EntryGroup\n name: entry_group\n properties:\n entryGroupId: my_group\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEntry can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Entry can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:datacatalog/entry:Entry default {{name}}\n```\n\n", "properties": { "bigqueryDateShardedSpecs": { "type": "array", @@ -171274,7 +171274,7 @@ } }, "gcp:datacatalog/tag:Tag": { - "description": "Tags are used to attach custom metadata to Data Catalog resources. Tags conform to the specifications within their tag template.\n\nSee [Data Catalog IAM](https://cloud.google.com/data-catalog/docs/concepts/iam) for information on the permissions needed to create or view tags.\n\n\nTo get more information about Tag, see:\n\n* [API documentation](https://cloud.google.com/data-catalog/docs/reference/rest/v1/projects.locations.entryGroups.tags)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-catalog/docs)\n\n## Example Usage\n\n### Data Catalog Entry Tag Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst entryGroup = new gcp.datacatalog.EntryGroup(\"entry_group\", {entryGroupId: \"my_entry_group\"});\nconst entry = new gcp.datacatalog.Entry(\"entry\", {\n entryGroup: entryGroup.id,\n entryId: \"my_entry\",\n userSpecifiedType: \"my_custom_type\",\n userSpecifiedSystem: \"SomethingExternal\",\n});\nconst tagTemplate = new gcp.datacatalog.TagTemplate(\"tag_template\", {\n tagTemplateId: \"my_template\",\n region: \"us-central1\",\n displayName: \"Demo Tag Template\",\n fields: [\n {\n fieldId: \"source\",\n displayName: \"Source of data asset\",\n type: {\n primitiveType: \"STRING\",\n },\n isRequired: true,\n },\n {\n fieldId: \"num_rows\",\n displayName: \"Number of rows in the data asset\",\n type: {\n primitiveType: \"DOUBLE\",\n },\n },\n {\n fieldId: \"pii_type\",\n displayName: \"PII type\",\n type: {\n enumType: {\n allowedValues: [\n {\n displayName: \"EMAIL\",\n },\n {\n displayName: \"SOCIAL SECURITY NUMBER\",\n },\n {\n displayName: \"NONE\",\n },\n ],\n },\n },\n },\n ],\n forceDelete: false,\n});\nconst basicTag = new gcp.datacatalog.Tag(\"basic_tag\", {\n parent: entry.id,\n template: tagTemplate.id,\n fields: [{\n fieldName: \"source\",\n stringValue: \"my-string\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nentry_group = gcp.datacatalog.EntryGroup(\"entry_group\", entry_group_id=\"my_entry_group\")\nentry = gcp.datacatalog.Entry(\"entry\",\n entry_group=entry_group.id,\n entry_id=\"my_entry\",\n user_specified_type=\"my_custom_type\",\n user_specified_system=\"SomethingExternal\")\ntag_template = gcp.datacatalog.TagTemplate(\"tag_template\",\n tag_template_id=\"my_template\",\n region=\"us-central1\",\n display_name=\"Demo Tag Template\",\n fields=[\n {\n \"fieldId\": \"source\",\n \"displayName\": \"Source of data asset\",\n \"type\": {\n \"primitiveType\": \"STRING\",\n },\n \"isRequired\": True,\n },\n {\n \"fieldId\": \"num_rows\",\n \"displayName\": \"Number of rows in the data asset\",\n \"type\": {\n \"primitiveType\": \"DOUBLE\",\n },\n },\n {\n \"fieldId\": \"pii_type\",\n \"displayName\": \"PII type\",\n \"type\": {\n \"enumType\": {\n \"allowedValues\": [\n {\n \"displayName\": \"EMAIL\",\n },\n {\n \"displayName\": \"SOCIAL SECURITY NUMBER\",\n },\n {\n \"displayName\": \"NONE\",\n },\n ],\n },\n },\n },\n ],\n force_delete=False)\nbasic_tag = gcp.datacatalog.Tag(\"basic_tag\",\n parent=entry.id,\n template=tag_template.id,\n fields=[{\n \"fieldName\": \"source\",\n \"stringValue\": \"my-string\",\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 entryGroup = new Gcp.DataCatalog.EntryGroup(\"entry_group\", new()\n {\n EntryGroupId = \"my_entry_group\",\n });\n\n var entry = new Gcp.DataCatalog.Entry(\"entry\", new()\n {\n EntryGroup = entryGroup.Id,\n EntryId = \"my_entry\",\n UserSpecifiedType = \"my_custom_type\",\n UserSpecifiedSystem = \"SomethingExternal\",\n });\n\n var tagTemplate = new Gcp.DataCatalog.TagTemplate(\"tag_template\", new()\n {\n TagTemplateId = \"my_template\",\n Region = \"us-central1\",\n DisplayName = \"Demo Tag Template\",\n Fields = new[]\n {\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"source\",\n DisplayName = \"Source of data asset\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n PrimitiveType = \"STRING\",\n },\n IsRequired = true,\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"num_rows\",\n DisplayName = \"Number of rows in the data asset\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n PrimitiveType = \"DOUBLE\",\n },\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"pii_type\",\n DisplayName = \"PII type\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n EnumType = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeArgs\n {\n AllowedValues = new[]\n {\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"EMAIL\",\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"SOCIAL SECURITY NUMBER\",\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"NONE\",\n },\n },\n },\n },\n },\n },\n ForceDelete = false,\n });\n\n var basicTag = new Gcp.DataCatalog.Tag(\"basic_tag\", new()\n {\n Parent = entry.Id,\n Template = tagTemplate.Id,\n Fields = new[]\n {\n new Gcp.DataCatalog.Inputs.TagFieldArgs\n {\n FieldName = \"source\",\n StringValue = \"my-string\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datacatalog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tentryGroup, err := datacatalog.NewEntryGroup(ctx, \"entry_group\", \u0026datacatalog.EntryGroupArgs{\n\t\t\tEntryGroupId: pulumi.String(\"my_entry_group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tentry, err := datacatalog.NewEntry(ctx, \"entry\", \u0026datacatalog.EntryArgs{\n\t\t\tEntryGroup: entryGroup.ID(),\n\t\t\tEntryId: pulumi.String(\"my_entry\"),\n\t\t\tUserSpecifiedType: pulumi.String(\"my_custom_type\"),\n\t\t\tUserSpecifiedSystem: pulumi.String(\"SomethingExternal\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttagTemplate, err := datacatalog.NewTagTemplate(ctx, \"tag_template\", \u0026datacatalog.TagTemplateArgs{\n\t\t\tTagTemplateId: pulumi.String(\"my_template\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Demo Tag Template\"),\n\t\t\tFields: datacatalog.TagTemplateFieldArray{\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"source\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Source of data asset\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tPrimitiveType: pulumi.String(\"STRING\"),\n\t\t\t\t\t},\n\t\t\t\t\tIsRequired: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"num_rows\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Number of rows in the data asset\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tPrimitiveType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"pii_type\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"PII type\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tEnumType: \u0026datacatalog.TagTemplateFieldTypeEnumTypeArgs{\n\t\t\t\t\t\t\tAllowedValues: datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArray{\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"EMAIL\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"SOCIAL SECURITY NUMBER\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"NONE\"),\n\t\t\t\t\t\t\t\t},\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\tForceDelete: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datacatalog.NewTag(ctx, \"basic_tag\", \u0026datacatalog.TagArgs{\n\t\t\tParent: entry.ID(),\n\t\t\tTemplate: tagTemplate.ID(),\n\t\t\tFields: datacatalog.TagFieldArray{\n\t\t\t\t\u0026datacatalog.TagFieldArgs{\n\t\t\t\t\tFieldName: pulumi.String(\"source\"),\n\t\t\t\t\tStringValue: pulumi.String(\"my-string\"),\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.datacatalog.EntryGroup;\nimport com.pulumi.gcp.datacatalog.EntryGroupArgs;\nimport com.pulumi.gcp.datacatalog.Entry;\nimport com.pulumi.gcp.datacatalog.EntryArgs;\nimport com.pulumi.gcp.datacatalog.TagTemplate;\nimport com.pulumi.gcp.datacatalog.TagTemplateArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldTypeArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldTypeEnumTypeArgs;\nimport com.pulumi.gcp.datacatalog.Tag;\nimport com.pulumi.gcp.datacatalog.TagArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagFieldArgs;\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 entryGroup = new EntryGroup(\"entryGroup\", EntryGroupArgs.builder()\n .entryGroupId(\"my_entry_group\")\n .build());\n\n var entry = new Entry(\"entry\", EntryArgs.builder()\n .entryGroup(entryGroup.id())\n .entryId(\"my_entry\")\n .userSpecifiedType(\"my_custom_type\")\n .userSpecifiedSystem(\"SomethingExternal\")\n .build());\n\n var tagTemplate = new TagTemplate(\"tagTemplate\", TagTemplateArgs.builder()\n .tagTemplateId(\"my_template\")\n .region(\"us-central1\")\n .displayName(\"Demo Tag Template\")\n .fields( \n TagTemplateFieldArgs.builder()\n .fieldId(\"source\")\n .displayName(\"Source of data asset\")\n .type(TagTemplateFieldTypeArgs.builder()\n .primitiveType(\"STRING\")\n .build())\n .isRequired(true)\n .build(),\n TagTemplateFieldArgs.builder()\n .fieldId(\"num_rows\")\n .displayName(\"Number of rows in the data asset\")\n .type(TagTemplateFieldTypeArgs.builder()\n .primitiveType(\"DOUBLE\")\n .build())\n .build(),\n TagTemplateFieldArgs.builder()\n .fieldId(\"pii_type\")\n .displayName(\"PII type\")\n .type(TagTemplateFieldTypeArgs.builder()\n .enumType(TagTemplateFieldTypeEnumTypeArgs.builder()\n .allowedValues( \n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"EMAIL\")\n .build(),\n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"SOCIAL SECURITY NUMBER\")\n .build(),\n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"NONE\")\n .build())\n .build())\n .build())\n .build())\n .forceDelete(\"false\")\n .build());\n\n var basicTag = new Tag(\"basicTag\", TagArgs.builder()\n .parent(entry.id())\n .template(tagTemplate.id())\n .fields(TagFieldArgs.builder()\n .fieldName(\"source\")\n .stringValue(\"my-string\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n entry:\n type: gcp:datacatalog:Entry\n properties:\n entryGroup: ${entryGroup.id}\n entryId: my_entry\n userSpecifiedType: my_custom_type\n userSpecifiedSystem: SomethingExternal\n entryGroup:\n type: gcp:datacatalog:EntryGroup\n name: entry_group\n properties:\n entryGroupId: my_entry_group\n tagTemplate:\n type: gcp:datacatalog:TagTemplate\n name: tag_template\n properties:\n tagTemplateId: my_template\n region: us-central1\n displayName: Demo Tag Template\n fields:\n - fieldId: source\n displayName: Source of data asset\n type:\n primitiveType: STRING\n isRequired: true\n - fieldId: num_rows\n displayName: Number of rows in the data asset\n type:\n primitiveType: DOUBLE\n - fieldId: pii_type\n displayName: PII type\n type:\n enumType:\n allowedValues:\n - displayName: EMAIL\n - displayName: SOCIAL SECURITY NUMBER\n - displayName: NONE\n forceDelete: 'false'\n basicTag:\n type: gcp:datacatalog:Tag\n name: basic_tag\n properties:\n parent: ${entry.id}\n template: ${tagTemplate.id}\n fields:\n - fieldName: source\n stringValue: my-string\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Catalog Entry Group Tag\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst entryGroup = new gcp.datacatalog.EntryGroup(\"entry_group\", {entryGroupId: \"my_entry_group\"});\nconst firstEntry = new gcp.datacatalog.Entry(\"first_entry\", {\n entryGroup: entryGroup.id,\n entryId: \"first_entry\",\n userSpecifiedType: \"my_custom_type\",\n userSpecifiedSystem: \"SomethingExternal\",\n});\nconst secondEntry = new gcp.datacatalog.Entry(\"second_entry\", {\n entryGroup: entryGroup.id,\n entryId: \"second_entry\",\n userSpecifiedType: \"another_custom_type\",\n userSpecifiedSystem: \"SomethingElseExternal\",\n});\nconst tagTemplate = new gcp.datacatalog.TagTemplate(\"tag_template\", {\n tagTemplateId: \"my_template\",\n region: \"us-central1\",\n displayName: \"Demo Tag Template\",\n fields: [\n {\n fieldId: \"source\",\n displayName: \"Source of data asset\",\n type: {\n primitiveType: \"STRING\",\n },\n isRequired: true,\n },\n {\n fieldId: \"num_rows\",\n displayName: \"Number of rows in the data asset\",\n type: {\n primitiveType: \"DOUBLE\",\n },\n },\n {\n fieldId: \"pii_type\",\n displayName: \"PII type\",\n type: {\n enumType: {\n allowedValues: [\n {\n displayName: \"EMAIL\",\n },\n {\n displayName: \"SOCIAL SECURITY NUMBER\",\n },\n {\n displayName: \"NONE\",\n },\n ],\n },\n },\n },\n ],\n forceDelete: false,\n});\nconst entryGroupTag = new gcp.datacatalog.Tag(\"entry_group_tag\", {\n parent: entryGroup.id,\n template: tagTemplate.id,\n fields: [{\n fieldName: \"source\",\n stringValue: \"my-string\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nentry_group = gcp.datacatalog.EntryGroup(\"entry_group\", entry_group_id=\"my_entry_group\")\nfirst_entry = gcp.datacatalog.Entry(\"first_entry\",\n entry_group=entry_group.id,\n entry_id=\"first_entry\",\n user_specified_type=\"my_custom_type\",\n user_specified_system=\"SomethingExternal\")\nsecond_entry = gcp.datacatalog.Entry(\"second_entry\",\n entry_group=entry_group.id,\n entry_id=\"second_entry\",\n user_specified_type=\"another_custom_type\",\n user_specified_system=\"SomethingElseExternal\")\ntag_template = gcp.datacatalog.TagTemplate(\"tag_template\",\n tag_template_id=\"my_template\",\n region=\"us-central1\",\n display_name=\"Demo Tag Template\",\n fields=[\n {\n \"fieldId\": \"source\",\n \"displayName\": \"Source of data asset\",\n \"type\": {\n \"primitiveType\": \"STRING\",\n },\n \"isRequired\": True,\n },\n {\n \"fieldId\": \"num_rows\",\n \"displayName\": \"Number of rows in the data asset\",\n \"type\": {\n \"primitiveType\": \"DOUBLE\",\n },\n },\n {\n \"fieldId\": \"pii_type\",\n \"displayName\": \"PII type\",\n \"type\": {\n \"enumType\": {\n \"allowedValues\": [\n {\n \"displayName\": \"EMAIL\",\n },\n {\n \"displayName\": \"SOCIAL SECURITY NUMBER\",\n },\n {\n \"displayName\": \"NONE\",\n },\n ],\n },\n },\n },\n ],\n force_delete=False)\nentry_group_tag = gcp.datacatalog.Tag(\"entry_group_tag\",\n parent=entry_group.id,\n template=tag_template.id,\n fields=[{\n \"fieldName\": \"source\",\n \"stringValue\": \"my-string\",\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 entryGroup = new Gcp.DataCatalog.EntryGroup(\"entry_group\", new()\n {\n EntryGroupId = \"my_entry_group\",\n });\n\n var firstEntry = new Gcp.DataCatalog.Entry(\"first_entry\", new()\n {\n EntryGroup = entryGroup.Id,\n EntryId = \"first_entry\",\n UserSpecifiedType = \"my_custom_type\",\n UserSpecifiedSystem = \"SomethingExternal\",\n });\n\n var secondEntry = new Gcp.DataCatalog.Entry(\"second_entry\", new()\n {\n EntryGroup = entryGroup.Id,\n EntryId = \"second_entry\",\n UserSpecifiedType = \"another_custom_type\",\n UserSpecifiedSystem = \"SomethingElseExternal\",\n });\n\n var tagTemplate = new Gcp.DataCatalog.TagTemplate(\"tag_template\", new()\n {\n TagTemplateId = \"my_template\",\n Region = \"us-central1\",\n DisplayName = \"Demo Tag Template\",\n Fields = new[]\n {\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"source\",\n DisplayName = \"Source of data asset\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n PrimitiveType = \"STRING\",\n },\n IsRequired = true,\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"num_rows\",\n DisplayName = \"Number of rows in the data asset\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n PrimitiveType = \"DOUBLE\",\n },\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"pii_type\",\n DisplayName = \"PII type\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n EnumType = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeArgs\n {\n AllowedValues = new[]\n {\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"EMAIL\",\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"SOCIAL SECURITY NUMBER\",\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"NONE\",\n },\n },\n },\n },\n },\n },\n ForceDelete = false,\n });\n\n var entryGroupTag = new Gcp.DataCatalog.Tag(\"entry_group_tag\", new()\n {\n Parent = entryGroup.Id,\n Template = tagTemplate.Id,\n Fields = new[]\n {\n new Gcp.DataCatalog.Inputs.TagFieldArgs\n {\n FieldName = \"source\",\n StringValue = \"my-string\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datacatalog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tentryGroup, err := datacatalog.NewEntryGroup(ctx, \"entry_group\", \u0026datacatalog.EntryGroupArgs{\n\t\t\tEntryGroupId: pulumi.String(\"my_entry_group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datacatalog.NewEntry(ctx, \"first_entry\", \u0026datacatalog.EntryArgs{\n\t\t\tEntryGroup: entryGroup.ID(),\n\t\t\tEntryId: pulumi.String(\"first_entry\"),\n\t\t\tUserSpecifiedType: pulumi.String(\"my_custom_type\"),\n\t\t\tUserSpecifiedSystem: pulumi.String(\"SomethingExternal\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datacatalog.NewEntry(ctx, \"second_entry\", \u0026datacatalog.EntryArgs{\n\t\t\tEntryGroup: entryGroup.ID(),\n\t\t\tEntryId: pulumi.String(\"second_entry\"),\n\t\t\tUserSpecifiedType: pulumi.String(\"another_custom_type\"),\n\t\t\tUserSpecifiedSystem: pulumi.String(\"SomethingElseExternal\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttagTemplate, err := datacatalog.NewTagTemplate(ctx, \"tag_template\", \u0026datacatalog.TagTemplateArgs{\n\t\t\tTagTemplateId: pulumi.String(\"my_template\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Demo Tag Template\"),\n\t\t\tFields: datacatalog.TagTemplateFieldArray{\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"source\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Source of data asset\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tPrimitiveType: pulumi.String(\"STRING\"),\n\t\t\t\t\t},\n\t\t\t\t\tIsRequired: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"num_rows\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Number of rows in the data asset\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tPrimitiveType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"pii_type\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"PII type\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tEnumType: \u0026datacatalog.TagTemplateFieldTypeEnumTypeArgs{\n\t\t\t\t\t\t\tAllowedValues: datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArray{\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"EMAIL\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"SOCIAL SECURITY NUMBER\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"NONE\"),\n\t\t\t\t\t\t\t\t},\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\tForceDelete: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datacatalog.NewTag(ctx, \"entry_group_tag\", \u0026datacatalog.TagArgs{\n\t\t\tParent: entryGroup.ID(),\n\t\t\tTemplate: tagTemplate.ID(),\n\t\t\tFields: datacatalog.TagFieldArray{\n\t\t\t\t\u0026datacatalog.TagFieldArgs{\n\t\t\t\t\tFieldName: pulumi.String(\"source\"),\n\t\t\t\t\tStringValue: pulumi.String(\"my-string\"),\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.datacatalog.EntryGroup;\nimport com.pulumi.gcp.datacatalog.EntryGroupArgs;\nimport com.pulumi.gcp.datacatalog.Entry;\nimport com.pulumi.gcp.datacatalog.EntryArgs;\nimport com.pulumi.gcp.datacatalog.TagTemplate;\nimport com.pulumi.gcp.datacatalog.TagTemplateArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldTypeArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldTypeEnumTypeArgs;\nimport com.pulumi.gcp.datacatalog.Tag;\nimport com.pulumi.gcp.datacatalog.TagArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagFieldArgs;\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 entryGroup = new EntryGroup(\"entryGroup\", EntryGroupArgs.builder()\n .entryGroupId(\"my_entry_group\")\n .build());\n\n var firstEntry = new Entry(\"firstEntry\", EntryArgs.builder()\n .entryGroup(entryGroup.id())\n .entryId(\"first_entry\")\n .userSpecifiedType(\"my_custom_type\")\n .userSpecifiedSystem(\"SomethingExternal\")\n .build());\n\n var secondEntry = new Entry(\"secondEntry\", EntryArgs.builder()\n .entryGroup(entryGroup.id())\n .entryId(\"second_entry\")\n .userSpecifiedType(\"another_custom_type\")\n .userSpecifiedSystem(\"SomethingElseExternal\")\n .build());\n\n var tagTemplate = new TagTemplate(\"tagTemplate\", TagTemplateArgs.builder()\n .tagTemplateId(\"my_template\")\n .region(\"us-central1\")\n .displayName(\"Demo Tag Template\")\n .fields( \n TagTemplateFieldArgs.builder()\n .fieldId(\"source\")\n .displayName(\"Source of data asset\")\n .type(TagTemplateFieldTypeArgs.builder()\n .primitiveType(\"STRING\")\n .build())\n .isRequired(true)\n .build(),\n TagTemplateFieldArgs.builder()\n .fieldId(\"num_rows\")\n .displayName(\"Number of rows in the data asset\")\n .type(TagTemplateFieldTypeArgs.builder()\n .primitiveType(\"DOUBLE\")\n .build())\n .build(),\n TagTemplateFieldArgs.builder()\n .fieldId(\"pii_type\")\n .displayName(\"PII type\")\n .type(TagTemplateFieldTypeArgs.builder()\n .enumType(TagTemplateFieldTypeEnumTypeArgs.builder()\n .allowedValues( \n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"EMAIL\")\n .build(),\n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"SOCIAL SECURITY NUMBER\")\n .build(),\n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"NONE\")\n .build())\n .build())\n .build())\n .build())\n .forceDelete(\"false\")\n .build());\n\n var entryGroupTag = new Tag(\"entryGroupTag\", TagArgs.builder()\n .parent(entryGroup.id())\n .template(tagTemplate.id())\n .fields(TagFieldArgs.builder()\n .fieldName(\"source\")\n .stringValue(\"my-string\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n firstEntry:\n type: gcp:datacatalog:Entry\n name: first_entry\n properties:\n entryGroup: ${entryGroup.id}\n entryId: first_entry\n userSpecifiedType: my_custom_type\n userSpecifiedSystem: SomethingExternal\n secondEntry:\n type: gcp:datacatalog:Entry\n name: second_entry\n properties:\n entryGroup: ${entryGroup.id}\n entryId: second_entry\n userSpecifiedType: another_custom_type\n userSpecifiedSystem: SomethingElseExternal\n entryGroup:\n type: gcp:datacatalog:EntryGroup\n name: entry_group\n properties:\n entryGroupId: my_entry_group\n tagTemplate:\n type: gcp:datacatalog:TagTemplate\n name: tag_template\n properties:\n tagTemplateId: my_template\n region: us-central1\n displayName: Demo Tag Template\n fields:\n - fieldId: source\n displayName: Source of data asset\n type:\n primitiveType: STRING\n isRequired: true\n - fieldId: num_rows\n displayName: Number of rows in the data asset\n type:\n primitiveType: DOUBLE\n - fieldId: pii_type\n displayName: PII type\n type:\n enumType:\n allowedValues:\n - displayName: EMAIL\n - displayName: SOCIAL SECURITY NUMBER\n - displayName: NONE\n forceDelete: 'false'\n entryGroupTag:\n type: gcp:datacatalog:Tag\n name: entry_group_tag\n properties:\n parent: ${entryGroup.id}\n template: ${tagTemplate.id}\n fields:\n - fieldName: source\n stringValue: my-string\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Catalog Entry Tag Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst entryGroup = new gcp.datacatalog.EntryGroup(\"entry_group\", {entryGroupId: \"my_entry_group\"});\nconst entry = new gcp.datacatalog.Entry(\"entry\", {\n entryGroup: entryGroup.id,\n entryId: \"my_entry\",\n userSpecifiedType: \"my_custom_type\",\n userSpecifiedSystem: \"SomethingExternal\",\n schema: `{\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\n }\n ]\n}\n`,\n});\nconst tagTemplate = new gcp.datacatalog.TagTemplate(\"tag_template\", {\n tagTemplateId: \"my_template\",\n region: \"us-central1\",\n displayName: \"Demo Tag Template\",\n fields: [\n {\n fieldId: \"source\",\n displayName: \"Source of data asset\",\n type: {\n primitiveType: \"STRING\",\n },\n isRequired: true,\n },\n {\n fieldId: \"num_rows\",\n displayName: \"Number of rows in the data asset\",\n type: {\n primitiveType: \"DOUBLE\",\n },\n },\n {\n fieldId: \"pii_type\",\n displayName: \"PII type\",\n type: {\n enumType: {\n allowedValues: [\n {\n displayName: \"EMAIL\",\n },\n {\n displayName: \"SOCIAL SECURITY NUMBER\",\n },\n {\n displayName: \"NONE\",\n },\n ],\n },\n },\n },\n ],\n forceDelete: false,\n});\nconst basicTag = new gcp.datacatalog.Tag(\"basic_tag\", {\n parent: entry.id,\n template: tagTemplate.id,\n fields: [\n {\n fieldName: \"source\",\n stringValue: \"my-string\",\n },\n {\n fieldName: \"num_rows\",\n doubleValue: 5,\n },\n {\n fieldName: \"pii_type\",\n enumValue: \"EMAIL\",\n },\n ],\n column: \"address\",\n});\nconst second_tag = new gcp.datacatalog.Tag(\"second-tag\", {\n parent: entry.id,\n template: tagTemplate.id,\n fields: [\n {\n fieldName: \"source\",\n stringValue: \"my-string\",\n },\n {\n fieldName: \"pii_type\",\n enumValue: \"NONE\",\n },\n ],\n column: \"first_name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nentry_group = gcp.datacatalog.EntryGroup(\"entry_group\", entry_group_id=\"my_entry_group\")\nentry = gcp.datacatalog.Entry(\"entry\",\n entry_group=entry_group.id,\n entry_id=\"my_entry\",\n user_specified_type=\"my_custom_type\",\n user_specified_system=\"SomethingExternal\",\n schema=\"\"\"{\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\n }\n ]\n}\n\"\"\")\ntag_template = gcp.datacatalog.TagTemplate(\"tag_template\",\n tag_template_id=\"my_template\",\n region=\"us-central1\",\n display_name=\"Demo Tag Template\",\n fields=[\n {\n \"fieldId\": \"source\",\n \"displayName\": \"Source of data asset\",\n \"type\": {\n \"primitiveType\": \"STRING\",\n },\n \"isRequired\": True,\n },\n {\n \"fieldId\": \"num_rows\",\n \"displayName\": \"Number of rows in the data asset\",\n \"type\": {\n \"primitiveType\": \"DOUBLE\",\n },\n },\n {\n \"fieldId\": \"pii_type\",\n \"displayName\": \"PII type\",\n \"type\": {\n \"enumType\": {\n \"allowedValues\": [\n {\n \"displayName\": \"EMAIL\",\n },\n {\n \"displayName\": \"SOCIAL SECURITY NUMBER\",\n },\n {\n \"displayName\": \"NONE\",\n },\n ],\n },\n },\n },\n ],\n force_delete=False)\nbasic_tag = gcp.datacatalog.Tag(\"basic_tag\",\n parent=entry.id,\n template=tag_template.id,\n fields=[\n {\n \"fieldName\": \"source\",\n \"stringValue\": \"my-string\",\n },\n {\n \"fieldName\": \"num_rows\",\n \"doubleValue\": 5,\n },\n {\n \"fieldName\": \"pii_type\",\n \"enumValue\": \"EMAIL\",\n },\n ],\n column=\"address\")\nsecond_tag = gcp.datacatalog.Tag(\"second-tag\",\n parent=entry.id,\n template=tag_template.id,\n fields=[\n {\n \"fieldName\": \"source\",\n \"stringValue\": \"my-string\",\n },\n {\n \"fieldName\": \"pii_type\",\n \"enumValue\": \"NONE\",\n },\n ],\n column=\"first_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 entryGroup = new Gcp.DataCatalog.EntryGroup(\"entry_group\", new()\n {\n EntryGroupId = \"my_entry_group\",\n });\n\n var entry = new Gcp.DataCatalog.Entry(\"entry\", new()\n {\n EntryGroup = entryGroup.Id,\n EntryId = \"my_entry\",\n UserSpecifiedType = \"my_custom_type\",\n UserSpecifiedSystem = \"SomethingExternal\",\n Schema = @\"{\n \"\"columns\"\": [\n {\n \"\"column\"\": \"\"first_name\"\",\n \"\"description\"\": \"\"First name\"\",\n \"\"mode\"\": \"\"REQUIRED\"\",\n \"\"type\"\": \"\"STRING\"\"\n },\n {\n \"\"column\"\": \"\"last_name\"\",\n \"\"description\"\": \"\"Last name\"\",\n \"\"mode\"\": \"\"REQUIRED\"\",\n \"\"type\"\": \"\"STRING\"\"\n },\n {\n \"\"column\"\": \"\"address\"\",\n \"\"description\"\": \"\"Address\"\",\n \"\"mode\"\": \"\"REPEATED\"\",\n \"\"subcolumns\"\": [\n {\n \"\"column\"\": \"\"city\"\",\n \"\"description\"\": \"\"City\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\"\n },\n {\n \"\"column\"\": \"\"state\"\",\n \"\"description\"\": \"\"State\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\"\n }\n ],\n \"\"type\"\": \"\"RECORD\"\"\n }\n ]\n}\n\",\n });\n\n var tagTemplate = new Gcp.DataCatalog.TagTemplate(\"tag_template\", new()\n {\n TagTemplateId = \"my_template\",\n Region = \"us-central1\",\n DisplayName = \"Demo Tag Template\",\n Fields = new[]\n {\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"source\",\n DisplayName = \"Source of data asset\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n PrimitiveType = \"STRING\",\n },\n IsRequired = true,\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"num_rows\",\n DisplayName = \"Number of rows in the data asset\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n PrimitiveType = \"DOUBLE\",\n },\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"pii_type\",\n DisplayName = \"PII type\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n EnumType = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeArgs\n {\n AllowedValues = new[]\n {\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"EMAIL\",\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"SOCIAL SECURITY NUMBER\",\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"NONE\",\n },\n },\n },\n },\n },\n },\n ForceDelete = false,\n });\n\n var basicTag = new Gcp.DataCatalog.Tag(\"basic_tag\", new()\n {\n Parent = entry.Id,\n Template = tagTemplate.Id,\n Fields = new[]\n {\n new Gcp.DataCatalog.Inputs.TagFieldArgs\n {\n FieldName = \"source\",\n StringValue = \"my-string\",\n },\n new Gcp.DataCatalog.Inputs.TagFieldArgs\n {\n FieldName = \"num_rows\",\n DoubleValue = 5,\n },\n new Gcp.DataCatalog.Inputs.TagFieldArgs\n {\n FieldName = \"pii_type\",\n EnumValue = \"EMAIL\",\n },\n },\n Column = \"address\",\n });\n\n var second_tag = new Gcp.DataCatalog.Tag(\"second-tag\", new()\n {\n Parent = entry.Id,\n Template = tagTemplate.Id,\n Fields = new[]\n {\n new Gcp.DataCatalog.Inputs.TagFieldArgs\n {\n FieldName = \"source\",\n StringValue = \"my-string\",\n },\n new Gcp.DataCatalog.Inputs.TagFieldArgs\n {\n FieldName = \"pii_type\",\n EnumValue = \"NONE\",\n },\n },\n Column = \"first_name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datacatalog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tentryGroup, err := datacatalog.NewEntryGroup(ctx, \"entry_group\", \u0026datacatalog.EntryGroupArgs{\n\t\t\tEntryGroupId: pulumi.String(\"my_entry_group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tentry, err := datacatalog.NewEntry(ctx, \"entry\", \u0026datacatalog.EntryArgs{\n\t\t\tEntryGroup: entryGroup.ID(),\n\t\t\tEntryId: pulumi.String(\"my_entry\"),\n\t\t\tUserSpecifiedType: pulumi.String(\"my_custom_type\"),\n\t\t\tUserSpecifiedSystem: pulumi.String(\"SomethingExternal\"),\n\t\t\tSchema: pulumi.String(`{\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\n }\n ]\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttagTemplate, err := datacatalog.NewTagTemplate(ctx, \"tag_template\", \u0026datacatalog.TagTemplateArgs{\n\t\t\tTagTemplateId: pulumi.String(\"my_template\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Demo Tag Template\"),\n\t\t\tFields: datacatalog.TagTemplateFieldArray{\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"source\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Source of data asset\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tPrimitiveType: pulumi.String(\"STRING\"),\n\t\t\t\t\t},\n\t\t\t\t\tIsRequired: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"num_rows\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Number of rows in the data asset\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tPrimitiveType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"pii_type\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"PII type\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tEnumType: \u0026datacatalog.TagTemplateFieldTypeEnumTypeArgs{\n\t\t\t\t\t\t\tAllowedValues: datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArray{\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"EMAIL\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"SOCIAL SECURITY NUMBER\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"NONE\"),\n\t\t\t\t\t\t\t\t},\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\tForceDelete: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datacatalog.NewTag(ctx, \"basic_tag\", \u0026datacatalog.TagArgs{\n\t\t\tParent: entry.ID(),\n\t\t\tTemplate: tagTemplate.ID(),\n\t\t\tFields: datacatalog.TagFieldArray{\n\t\t\t\t\u0026datacatalog.TagFieldArgs{\n\t\t\t\t\tFieldName: pulumi.String(\"source\"),\n\t\t\t\t\tStringValue: pulumi.String(\"my-string\"),\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagFieldArgs{\n\t\t\t\t\tFieldName: pulumi.String(\"num_rows\"),\n\t\t\t\t\tDoubleValue: pulumi.Float64(5),\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagFieldArgs{\n\t\t\t\t\tFieldName: pulumi.String(\"pii_type\"),\n\t\t\t\t\tEnumValue: pulumi.String(\"EMAIL\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tColumn: pulumi.String(\"address\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datacatalog.NewTag(ctx, \"second-tag\", \u0026datacatalog.TagArgs{\n\t\t\tParent: entry.ID(),\n\t\t\tTemplate: tagTemplate.ID(),\n\t\t\tFields: datacatalog.TagFieldArray{\n\t\t\t\t\u0026datacatalog.TagFieldArgs{\n\t\t\t\t\tFieldName: pulumi.String(\"source\"),\n\t\t\t\t\tStringValue: pulumi.String(\"my-string\"),\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagFieldArgs{\n\t\t\t\t\tFieldName: pulumi.String(\"pii_type\"),\n\t\t\t\t\tEnumValue: pulumi.String(\"NONE\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tColumn: pulumi.String(\"first_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.datacatalog.EntryGroup;\nimport com.pulumi.gcp.datacatalog.EntryGroupArgs;\nimport com.pulumi.gcp.datacatalog.Entry;\nimport com.pulumi.gcp.datacatalog.EntryArgs;\nimport com.pulumi.gcp.datacatalog.TagTemplate;\nimport com.pulumi.gcp.datacatalog.TagTemplateArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldTypeArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldTypeEnumTypeArgs;\nimport com.pulumi.gcp.datacatalog.Tag;\nimport com.pulumi.gcp.datacatalog.TagArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagFieldArgs;\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 entryGroup = new EntryGroup(\"entryGroup\", EntryGroupArgs.builder()\n .entryGroupId(\"my_entry_group\")\n .build());\n\n var entry = new Entry(\"entry\", EntryArgs.builder()\n .entryGroup(entryGroup.id())\n .entryId(\"my_entry\")\n .userSpecifiedType(\"my_custom_type\")\n .userSpecifiedSystem(\"SomethingExternal\")\n .schema(\"\"\"\n{\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\n }\n ]\n}\n \"\"\")\n .build());\n\n var tagTemplate = new TagTemplate(\"tagTemplate\", TagTemplateArgs.builder()\n .tagTemplateId(\"my_template\")\n .region(\"us-central1\")\n .displayName(\"Demo Tag Template\")\n .fields( \n TagTemplateFieldArgs.builder()\n .fieldId(\"source\")\n .displayName(\"Source of data asset\")\n .type(TagTemplateFieldTypeArgs.builder()\n .primitiveType(\"STRING\")\n .build())\n .isRequired(true)\n .build(),\n TagTemplateFieldArgs.builder()\n .fieldId(\"num_rows\")\n .displayName(\"Number of rows in the data asset\")\n .type(TagTemplateFieldTypeArgs.builder()\n .primitiveType(\"DOUBLE\")\n .build())\n .build(),\n TagTemplateFieldArgs.builder()\n .fieldId(\"pii_type\")\n .displayName(\"PII type\")\n .type(TagTemplateFieldTypeArgs.builder()\n .enumType(TagTemplateFieldTypeEnumTypeArgs.builder()\n .allowedValues( \n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"EMAIL\")\n .build(),\n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"SOCIAL SECURITY NUMBER\")\n .build(),\n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"NONE\")\n .build())\n .build())\n .build())\n .build())\n .forceDelete(\"false\")\n .build());\n\n var basicTag = new Tag(\"basicTag\", TagArgs.builder()\n .parent(entry.id())\n .template(tagTemplate.id())\n .fields( \n TagFieldArgs.builder()\n .fieldName(\"source\")\n .stringValue(\"my-string\")\n .build(),\n TagFieldArgs.builder()\n .fieldName(\"num_rows\")\n .doubleValue(5)\n .build(),\n TagFieldArgs.builder()\n .fieldName(\"pii_type\")\n .enumValue(\"EMAIL\")\n .build())\n .column(\"address\")\n .build());\n\n var second_tag = new Tag(\"second-tag\", TagArgs.builder()\n .parent(entry.id())\n .template(tagTemplate.id())\n .fields( \n TagFieldArgs.builder()\n .fieldName(\"source\")\n .stringValue(\"my-string\")\n .build(),\n TagFieldArgs.builder()\n .fieldName(\"pii_type\")\n .enumValue(\"NONE\")\n .build())\n .column(\"first_name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n entry:\n type: gcp:datacatalog:Entry\n properties:\n entryGroup: ${entryGroup.id}\n entryId: my_entry\n userSpecifiedType: my_custom_type\n userSpecifiedSystem: SomethingExternal\n schema: |\n {\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\n }\n ]\n }\n entryGroup:\n type: gcp:datacatalog:EntryGroup\n name: entry_group\n properties:\n entryGroupId: my_entry_group\n tagTemplate:\n type: gcp:datacatalog:TagTemplate\n name: tag_template\n properties:\n tagTemplateId: my_template\n region: us-central1\n displayName: Demo Tag Template\n fields:\n - fieldId: source\n displayName: Source of data asset\n type:\n primitiveType: STRING\n isRequired: true\n - fieldId: num_rows\n displayName: Number of rows in the data asset\n type:\n primitiveType: DOUBLE\n - fieldId: pii_type\n displayName: PII type\n type:\n enumType:\n allowedValues:\n - displayName: EMAIL\n - displayName: SOCIAL SECURITY NUMBER\n - displayName: NONE\n forceDelete: 'false'\n basicTag:\n type: gcp:datacatalog:Tag\n name: basic_tag\n properties:\n parent: ${entry.id}\n template: ${tagTemplate.id}\n fields:\n - fieldName: source\n stringValue: my-string\n - fieldName: num_rows\n doubleValue: 5\n - fieldName: pii_type\n enumValue: EMAIL\n column: address\n second-tag:\n type: gcp:datacatalog:Tag\n properties:\n parent: ${entry.id}\n template: ${tagTemplate.id}\n fields:\n - fieldName: source\n stringValue: my-string\n - fieldName: pii_type\n enumValue: NONE\n column: first_name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTag can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Tag can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:datacatalog/tag:Tag default {{name}}\n```\n\n", + "description": "Tags are used to attach custom metadata to Data Catalog resources. Tags conform to the specifications within their tag template.\n\nSee [Data Catalog IAM](https://cloud.google.com/data-catalog/docs/concepts/iam) for information on the permissions needed to create or view tags.\n\n\nTo get more information about Tag, see:\n\n* [API documentation](https://cloud.google.com/data-catalog/docs/reference/rest/v1/projects.locations.entryGroups.tags)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-catalog/docs)\n\n## Example Usage\n\n### Data Catalog Entry Tag Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst entryGroup = new gcp.datacatalog.EntryGroup(\"entry_group\", {entryGroupId: \"my_entry_group\"});\nconst entry = new gcp.datacatalog.Entry(\"entry\", {\n entryGroup: entryGroup.id,\n entryId: \"my_entry\",\n userSpecifiedType: \"my_custom_type\",\n userSpecifiedSystem: \"SomethingExternal\",\n});\nconst tagTemplate = new gcp.datacatalog.TagTemplate(\"tag_template\", {\n tagTemplateId: \"my_template\",\n region: \"us-central1\",\n displayName: \"Demo Tag Template\",\n fields: [\n {\n fieldId: \"source\",\n displayName: \"Source of data asset\",\n type: {\n primitiveType: \"STRING\",\n },\n isRequired: true,\n },\n {\n fieldId: \"num_rows\",\n displayName: \"Number of rows in the data asset\",\n type: {\n primitiveType: \"DOUBLE\",\n },\n },\n {\n fieldId: \"pii_type\",\n displayName: \"PII type\",\n type: {\n enumType: {\n allowedValues: [\n {\n displayName: \"EMAIL\",\n },\n {\n displayName: \"SOCIAL SECURITY NUMBER\",\n },\n {\n displayName: \"NONE\",\n },\n ],\n },\n },\n },\n ],\n forceDelete: false,\n});\nconst basicTag = new gcp.datacatalog.Tag(\"basic_tag\", {\n parent: entry.id,\n template: tagTemplate.id,\n fields: [{\n fieldName: \"source\",\n stringValue: \"my-string\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nentry_group = gcp.datacatalog.EntryGroup(\"entry_group\", entry_group_id=\"my_entry_group\")\nentry = gcp.datacatalog.Entry(\"entry\",\n entry_group=entry_group.id,\n entry_id=\"my_entry\",\n user_specified_type=\"my_custom_type\",\n user_specified_system=\"SomethingExternal\")\ntag_template = gcp.datacatalog.TagTemplate(\"tag_template\",\n tag_template_id=\"my_template\",\n region=\"us-central1\",\n display_name=\"Demo Tag Template\",\n fields=[\n {\n \"field_id\": \"source\",\n \"display_name\": \"Source of data asset\",\n \"type\": {\n \"primitive_type\": \"STRING\",\n },\n \"is_required\": True,\n },\n {\n \"field_id\": \"num_rows\",\n \"display_name\": \"Number of rows in the data asset\",\n \"type\": {\n \"primitive_type\": \"DOUBLE\",\n },\n },\n {\n \"field_id\": \"pii_type\",\n \"display_name\": \"PII type\",\n \"type\": {\n \"enum_type\": {\n \"allowed_values\": [\n {\n \"display_name\": \"EMAIL\",\n },\n {\n \"display_name\": \"SOCIAL SECURITY NUMBER\",\n },\n {\n \"display_name\": \"NONE\",\n },\n ],\n },\n },\n },\n ],\n force_delete=False)\nbasic_tag = gcp.datacatalog.Tag(\"basic_tag\",\n parent=entry.id,\n template=tag_template.id,\n fields=[{\n \"field_name\": \"source\",\n \"string_value\": \"my-string\",\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 entryGroup = new Gcp.DataCatalog.EntryGroup(\"entry_group\", new()\n {\n EntryGroupId = \"my_entry_group\",\n });\n\n var entry = new Gcp.DataCatalog.Entry(\"entry\", new()\n {\n EntryGroup = entryGroup.Id,\n EntryId = \"my_entry\",\n UserSpecifiedType = \"my_custom_type\",\n UserSpecifiedSystem = \"SomethingExternal\",\n });\n\n var tagTemplate = new Gcp.DataCatalog.TagTemplate(\"tag_template\", new()\n {\n TagTemplateId = \"my_template\",\n Region = \"us-central1\",\n DisplayName = \"Demo Tag Template\",\n Fields = new[]\n {\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"source\",\n DisplayName = \"Source of data asset\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n PrimitiveType = \"STRING\",\n },\n IsRequired = true,\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"num_rows\",\n DisplayName = \"Number of rows in the data asset\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n PrimitiveType = \"DOUBLE\",\n },\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"pii_type\",\n DisplayName = \"PII type\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n EnumType = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeArgs\n {\n AllowedValues = new[]\n {\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"EMAIL\",\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"SOCIAL SECURITY NUMBER\",\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"NONE\",\n },\n },\n },\n },\n },\n },\n ForceDelete = false,\n });\n\n var basicTag = new Gcp.DataCatalog.Tag(\"basic_tag\", new()\n {\n Parent = entry.Id,\n Template = tagTemplate.Id,\n Fields = new[]\n {\n new Gcp.DataCatalog.Inputs.TagFieldArgs\n {\n FieldName = \"source\",\n StringValue = \"my-string\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datacatalog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tentryGroup, err := datacatalog.NewEntryGroup(ctx, \"entry_group\", \u0026datacatalog.EntryGroupArgs{\n\t\t\tEntryGroupId: pulumi.String(\"my_entry_group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tentry, err := datacatalog.NewEntry(ctx, \"entry\", \u0026datacatalog.EntryArgs{\n\t\t\tEntryGroup: entryGroup.ID(),\n\t\t\tEntryId: pulumi.String(\"my_entry\"),\n\t\t\tUserSpecifiedType: pulumi.String(\"my_custom_type\"),\n\t\t\tUserSpecifiedSystem: pulumi.String(\"SomethingExternal\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttagTemplate, err := datacatalog.NewTagTemplate(ctx, \"tag_template\", \u0026datacatalog.TagTemplateArgs{\n\t\t\tTagTemplateId: pulumi.String(\"my_template\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Demo Tag Template\"),\n\t\t\tFields: datacatalog.TagTemplateFieldArray{\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"source\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Source of data asset\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tPrimitiveType: pulumi.String(\"STRING\"),\n\t\t\t\t\t},\n\t\t\t\t\tIsRequired: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"num_rows\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Number of rows in the data asset\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tPrimitiveType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"pii_type\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"PII type\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tEnumType: \u0026datacatalog.TagTemplateFieldTypeEnumTypeArgs{\n\t\t\t\t\t\t\tAllowedValues: datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArray{\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"EMAIL\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"SOCIAL SECURITY NUMBER\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"NONE\"),\n\t\t\t\t\t\t\t\t},\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\tForceDelete: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datacatalog.NewTag(ctx, \"basic_tag\", \u0026datacatalog.TagArgs{\n\t\t\tParent: entry.ID(),\n\t\t\tTemplate: tagTemplate.ID(),\n\t\t\tFields: datacatalog.TagFieldArray{\n\t\t\t\t\u0026datacatalog.TagFieldArgs{\n\t\t\t\t\tFieldName: pulumi.String(\"source\"),\n\t\t\t\t\tStringValue: pulumi.String(\"my-string\"),\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.datacatalog.EntryGroup;\nimport com.pulumi.gcp.datacatalog.EntryGroupArgs;\nimport com.pulumi.gcp.datacatalog.Entry;\nimport com.pulumi.gcp.datacatalog.EntryArgs;\nimport com.pulumi.gcp.datacatalog.TagTemplate;\nimport com.pulumi.gcp.datacatalog.TagTemplateArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldTypeArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldTypeEnumTypeArgs;\nimport com.pulumi.gcp.datacatalog.Tag;\nimport com.pulumi.gcp.datacatalog.TagArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagFieldArgs;\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 entryGroup = new EntryGroup(\"entryGroup\", EntryGroupArgs.builder()\n .entryGroupId(\"my_entry_group\")\n .build());\n\n var entry = new Entry(\"entry\", EntryArgs.builder()\n .entryGroup(entryGroup.id())\n .entryId(\"my_entry\")\n .userSpecifiedType(\"my_custom_type\")\n .userSpecifiedSystem(\"SomethingExternal\")\n .build());\n\n var tagTemplate = new TagTemplate(\"tagTemplate\", TagTemplateArgs.builder()\n .tagTemplateId(\"my_template\")\n .region(\"us-central1\")\n .displayName(\"Demo Tag Template\")\n .fields( \n TagTemplateFieldArgs.builder()\n .fieldId(\"source\")\n .displayName(\"Source of data asset\")\n .type(TagTemplateFieldTypeArgs.builder()\n .primitiveType(\"STRING\")\n .build())\n .isRequired(true)\n .build(),\n TagTemplateFieldArgs.builder()\n .fieldId(\"num_rows\")\n .displayName(\"Number of rows in the data asset\")\n .type(TagTemplateFieldTypeArgs.builder()\n .primitiveType(\"DOUBLE\")\n .build())\n .build(),\n TagTemplateFieldArgs.builder()\n .fieldId(\"pii_type\")\n .displayName(\"PII type\")\n .type(TagTemplateFieldTypeArgs.builder()\n .enumType(TagTemplateFieldTypeEnumTypeArgs.builder()\n .allowedValues( \n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"EMAIL\")\n .build(),\n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"SOCIAL SECURITY NUMBER\")\n .build(),\n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"NONE\")\n .build())\n .build())\n .build())\n .build())\n .forceDelete(\"false\")\n .build());\n\n var basicTag = new Tag(\"basicTag\", TagArgs.builder()\n .parent(entry.id())\n .template(tagTemplate.id())\n .fields(TagFieldArgs.builder()\n .fieldName(\"source\")\n .stringValue(\"my-string\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n entry:\n type: gcp:datacatalog:Entry\n properties:\n entryGroup: ${entryGroup.id}\n entryId: my_entry\n userSpecifiedType: my_custom_type\n userSpecifiedSystem: SomethingExternal\n entryGroup:\n type: gcp:datacatalog:EntryGroup\n name: entry_group\n properties:\n entryGroupId: my_entry_group\n tagTemplate:\n type: gcp:datacatalog:TagTemplate\n name: tag_template\n properties:\n tagTemplateId: my_template\n region: us-central1\n displayName: Demo Tag Template\n fields:\n - fieldId: source\n displayName: Source of data asset\n type:\n primitiveType: STRING\n isRequired: true\n - fieldId: num_rows\n displayName: Number of rows in the data asset\n type:\n primitiveType: DOUBLE\n - fieldId: pii_type\n displayName: PII type\n type:\n enumType:\n allowedValues:\n - displayName: EMAIL\n - displayName: SOCIAL SECURITY NUMBER\n - displayName: NONE\n forceDelete: 'false'\n basicTag:\n type: gcp:datacatalog:Tag\n name: basic_tag\n properties:\n parent: ${entry.id}\n template: ${tagTemplate.id}\n fields:\n - fieldName: source\n stringValue: my-string\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Catalog Entry Group Tag\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst entryGroup = new gcp.datacatalog.EntryGroup(\"entry_group\", {entryGroupId: \"my_entry_group\"});\nconst firstEntry = new gcp.datacatalog.Entry(\"first_entry\", {\n entryGroup: entryGroup.id,\n entryId: \"first_entry\",\n userSpecifiedType: \"my_custom_type\",\n userSpecifiedSystem: \"SomethingExternal\",\n});\nconst secondEntry = new gcp.datacatalog.Entry(\"second_entry\", {\n entryGroup: entryGroup.id,\n entryId: \"second_entry\",\n userSpecifiedType: \"another_custom_type\",\n userSpecifiedSystem: \"SomethingElseExternal\",\n});\nconst tagTemplate = new gcp.datacatalog.TagTemplate(\"tag_template\", {\n tagTemplateId: \"my_template\",\n region: \"us-central1\",\n displayName: \"Demo Tag Template\",\n fields: [\n {\n fieldId: \"source\",\n displayName: \"Source of data asset\",\n type: {\n primitiveType: \"STRING\",\n },\n isRequired: true,\n },\n {\n fieldId: \"num_rows\",\n displayName: \"Number of rows in the data asset\",\n type: {\n primitiveType: \"DOUBLE\",\n },\n },\n {\n fieldId: \"pii_type\",\n displayName: \"PII type\",\n type: {\n enumType: {\n allowedValues: [\n {\n displayName: \"EMAIL\",\n },\n {\n displayName: \"SOCIAL SECURITY NUMBER\",\n },\n {\n displayName: \"NONE\",\n },\n ],\n },\n },\n },\n ],\n forceDelete: false,\n});\nconst entryGroupTag = new gcp.datacatalog.Tag(\"entry_group_tag\", {\n parent: entryGroup.id,\n template: tagTemplate.id,\n fields: [{\n fieldName: \"source\",\n stringValue: \"my-string\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nentry_group = gcp.datacatalog.EntryGroup(\"entry_group\", entry_group_id=\"my_entry_group\")\nfirst_entry = gcp.datacatalog.Entry(\"first_entry\",\n entry_group=entry_group.id,\n entry_id=\"first_entry\",\n user_specified_type=\"my_custom_type\",\n user_specified_system=\"SomethingExternal\")\nsecond_entry = gcp.datacatalog.Entry(\"second_entry\",\n entry_group=entry_group.id,\n entry_id=\"second_entry\",\n user_specified_type=\"another_custom_type\",\n user_specified_system=\"SomethingElseExternal\")\ntag_template = gcp.datacatalog.TagTemplate(\"tag_template\",\n tag_template_id=\"my_template\",\n region=\"us-central1\",\n display_name=\"Demo Tag Template\",\n fields=[\n {\n \"field_id\": \"source\",\n \"display_name\": \"Source of data asset\",\n \"type\": {\n \"primitive_type\": \"STRING\",\n },\n \"is_required\": True,\n },\n {\n \"field_id\": \"num_rows\",\n \"display_name\": \"Number of rows in the data asset\",\n \"type\": {\n \"primitive_type\": \"DOUBLE\",\n },\n },\n {\n \"field_id\": \"pii_type\",\n \"display_name\": \"PII type\",\n \"type\": {\n \"enum_type\": {\n \"allowed_values\": [\n {\n \"display_name\": \"EMAIL\",\n },\n {\n \"display_name\": \"SOCIAL SECURITY NUMBER\",\n },\n {\n \"display_name\": \"NONE\",\n },\n ],\n },\n },\n },\n ],\n force_delete=False)\nentry_group_tag = gcp.datacatalog.Tag(\"entry_group_tag\",\n parent=entry_group.id,\n template=tag_template.id,\n fields=[{\n \"field_name\": \"source\",\n \"string_value\": \"my-string\",\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 entryGroup = new Gcp.DataCatalog.EntryGroup(\"entry_group\", new()\n {\n EntryGroupId = \"my_entry_group\",\n });\n\n var firstEntry = new Gcp.DataCatalog.Entry(\"first_entry\", new()\n {\n EntryGroup = entryGroup.Id,\n EntryId = \"first_entry\",\n UserSpecifiedType = \"my_custom_type\",\n UserSpecifiedSystem = \"SomethingExternal\",\n });\n\n var secondEntry = new Gcp.DataCatalog.Entry(\"second_entry\", new()\n {\n EntryGroup = entryGroup.Id,\n EntryId = \"second_entry\",\n UserSpecifiedType = \"another_custom_type\",\n UserSpecifiedSystem = \"SomethingElseExternal\",\n });\n\n var tagTemplate = new Gcp.DataCatalog.TagTemplate(\"tag_template\", new()\n {\n TagTemplateId = \"my_template\",\n Region = \"us-central1\",\n DisplayName = \"Demo Tag Template\",\n Fields = new[]\n {\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"source\",\n DisplayName = \"Source of data asset\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n PrimitiveType = \"STRING\",\n },\n IsRequired = true,\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"num_rows\",\n DisplayName = \"Number of rows in the data asset\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n PrimitiveType = \"DOUBLE\",\n },\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"pii_type\",\n DisplayName = \"PII type\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n EnumType = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeArgs\n {\n AllowedValues = new[]\n {\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"EMAIL\",\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"SOCIAL SECURITY NUMBER\",\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"NONE\",\n },\n },\n },\n },\n },\n },\n ForceDelete = false,\n });\n\n var entryGroupTag = new Gcp.DataCatalog.Tag(\"entry_group_tag\", new()\n {\n Parent = entryGroup.Id,\n Template = tagTemplate.Id,\n Fields = new[]\n {\n new Gcp.DataCatalog.Inputs.TagFieldArgs\n {\n FieldName = \"source\",\n StringValue = \"my-string\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datacatalog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tentryGroup, err := datacatalog.NewEntryGroup(ctx, \"entry_group\", \u0026datacatalog.EntryGroupArgs{\n\t\t\tEntryGroupId: pulumi.String(\"my_entry_group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datacatalog.NewEntry(ctx, \"first_entry\", \u0026datacatalog.EntryArgs{\n\t\t\tEntryGroup: entryGroup.ID(),\n\t\t\tEntryId: pulumi.String(\"first_entry\"),\n\t\t\tUserSpecifiedType: pulumi.String(\"my_custom_type\"),\n\t\t\tUserSpecifiedSystem: pulumi.String(\"SomethingExternal\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datacatalog.NewEntry(ctx, \"second_entry\", \u0026datacatalog.EntryArgs{\n\t\t\tEntryGroup: entryGroup.ID(),\n\t\t\tEntryId: pulumi.String(\"second_entry\"),\n\t\t\tUserSpecifiedType: pulumi.String(\"another_custom_type\"),\n\t\t\tUserSpecifiedSystem: pulumi.String(\"SomethingElseExternal\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttagTemplate, err := datacatalog.NewTagTemplate(ctx, \"tag_template\", \u0026datacatalog.TagTemplateArgs{\n\t\t\tTagTemplateId: pulumi.String(\"my_template\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Demo Tag Template\"),\n\t\t\tFields: datacatalog.TagTemplateFieldArray{\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"source\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Source of data asset\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tPrimitiveType: pulumi.String(\"STRING\"),\n\t\t\t\t\t},\n\t\t\t\t\tIsRequired: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"num_rows\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Number of rows in the data asset\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tPrimitiveType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"pii_type\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"PII type\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tEnumType: \u0026datacatalog.TagTemplateFieldTypeEnumTypeArgs{\n\t\t\t\t\t\t\tAllowedValues: datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArray{\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"EMAIL\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"SOCIAL SECURITY NUMBER\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"NONE\"),\n\t\t\t\t\t\t\t\t},\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\tForceDelete: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datacatalog.NewTag(ctx, \"entry_group_tag\", \u0026datacatalog.TagArgs{\n\t\t\tParent: entryGroup.ID(),\n\t\t\tTemplate: tagTemplate.ID(),\n\t\t\tFields: datacatalog.TagFieldArray{\n\t\t\t\t\u0026datacatalog.TagFieldArgs{\n\t\t\t\t\tFieldName: pulumi.String(\"source\"),\n\t\t\t\t\tStringValue: pulumi.String(\"my-string\"),\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.datacatalog.EntryGroup;\nimport com.pulumi.gcp.datacatalog.EntryGroupArgs;\nimport com.pulumi.gcp.datacatalog.Entry;\nimport com.pulumi.gcp.datacatalog.EntryArgs;\nimport com.pulumi.gcp.datacatalog.TagTemplate;\nimport com.pulumi.gcp.datacatalog.TagTemplateArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldTypeArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldTypeEnumTypeArgs;\nimport com.pulumi.gcp.datacatalog.Tag;\nimport com.pulumi.gcp.datacatalog.TagArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagFieldArgs;\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 entryGroup = new EntryGroup(\"entryGroup\", EntryGroupArgs.builder()\n .entryGroupId(\"my_entry_group\")\n .build());\n\n var firstEntry = new Entry(\"firstEntry\", EntryArgs.builder()\n .entryGroup(entryGroup.id())\n .entryId(\"first_entry\")\n .userSpecifiedType(\"my_custom_type\")\n .userSpecifiedSystem(\"SomethingExternal\")\n .build());\n\n var secondEntry = new Entry(\"secondEntry\", EntryArgs.builder()\n .entryGroup(entryGroup.id())\n .entryId(\"second_entry\")\n .userSpecifiedType(\"another_custom_type\")\n .userSpecifiedSystem(\"SomethingElseExternal\")\n .build());\n\n var tagTemplate = new TagTemplate(\"tagTemplate\", TagTemplateArgs.builder()\n .tagTemplateId(\"my_template\")\n .region(\"us-central1\")\n .displayName(\"Demo Tag Template\")\n .fields( \n TagTemplateFieldArgs.builder()\n .fieldId(\"source\")\n .displayName(\"Source of data asset\")\n .type(TagTemplateFieldTypeArgs.builder()\n .primitiveType(\"STRING\")\n .build())\n .isRequired(true)\n .build(),\n TagTemplateFieldArgs.builder()\n .fieldId(\"num_rows\")\n .displayName(\"Number of rows in the data asset\")\n .type(TagTemplateFieldTypeArgs.builder()\n .primitiveType(\"DOUBLE\")\n .build())\n .build(),\n TagTemplateFieldArgs.builder()\n .fieldId(\"pii_type\")\n .displayName(\"PII type\")\n .type(TagTemplateFieldTypeArgs.builder()\n .enumType(TagTemplateFieldTypeEnumTypeArgs.builder()\n .allowedValues( \n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"EMAIL\")\n .build(),\n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"SOCIAL SECURITY NUMBER\")\n .build(),\n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"NONE\")\n .build())\n .build())\n .build())\n .build())\n .forceDelete(\"false\")\n .build());\n\n var entryGroupTag = new Tag(\"entryGroupTag\", TagArgs.builder()\n .parent(entryGroup.id())\n .template(tagTemplate.id())\n .fields(TagFieldArgs.builder()\n .fieldName(\"source\")\n .stringValue(\"my-string\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n firstEntry:\n type: gcp:datacatalog:Entry\n name: first_entry\n properties:\n entryGroup: ${entryGroup.id}\n entryId: first_entry\n userSpecifiedType: my_custom_type\n userSpecifiedSystem: SomethingExternal\n secondEntry:\n type: gcp:datacatalog:Entry\n name: second_entry\n properties:\n entryGroup: ${entryGroup.id}\n entryId: second_entry\n userSpecifiedType: another_custom_type\n userSpecifiedSystem: SomethingElseExternal\n entryGroup:\n type: gcp:datacatalog:EntryGroup\n name: entry_group\n properties:\n entryGroupId: my_entry_group\n tagTemplate:\n type: gcp:datacatalog:TagTemplate\n name: tag_template\n properties:\n tagTemplateId: my_template\n region: us-central1\n displayName: Demo Tag Template\n fields:\n - fieldId: source\n displayName: Source of data asset\n type:\n primitiveType: STRING\n isRequired: true\n - fieldId: num_rows\n displayName: Number of rows in the data asset\n type:\n primitiveType: DOUBLE\n - fieldId: pii_type\n displayName: PII type\n type:\n enumType:\n allowedValues:\n - displayName: EMAIL\n - displayName: SOCIAL SECURITY NUMBER\n - displayName: NONE\n forceDelete: 'false'\n entryGroupTag:\n type: gcp:datacatalog:Tag\n name: entry_group_tag\n properties:\n parent: ${entryGroup.id}\n template: ${tagTemplate.id}\n fields:\n - fieldName: source\n stringValue: my-string\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Catalog Entry Tag Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst entryGroup = new gcp.datacatalog.EntryGroup(\"entry_group\", {entryGroupId: \"my_entry_group\"});\nconst entry = new gcp.datacatalog.Entry(\"entry\", {\n entryGroup: entryGroup.id,\n entryId: \"my_entry\",\n userSpecifiedType: \"my_custom_type\",\n userSpecifiedSystem: \"SomethingExternal\",\n schema: `{\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\n }\n ]\n}\n`,\n});\nconst tagTemplate = new gcp.datacatalog.TagTemplate(\"tag_template\", {\n tagTemplateId: \"my_template\",\n region: \"us-central1\",\n displayName: \"Demo Tag Template\",\n fields: [\n {\n fieldId: \"source\",\n displayName: \"Source of data asset\",\n type: {\n primitiveType: \"STRING\",\n },\n isRequired: true,\n },\n {\n fieldId: \"num_rows\",\n displayName: \"Number of rows in the data asset\",\n type: {\n primitiveType: \"DOUBLE\",\n },\n },\n {\n fieldId: \"pii_type\",\n displayName: \"PII type\",\n type: {\n enumType: {\n allowedValues: [\n {\n displayName: \"EMAIL\",\n },\n {\n displayName: \"SOCIAL SECURITY NUMBER\",\n },\n {\n displayName: \"NONE\",\n },\n ],\n },\n },\n },\n ],\n forceDelete: false,\n});\nconst basicTag = new gcp.datacatalog.Tag(\"basic_tag\", {\n parent: entry.id,\n template: tagTemplate.id,\n fields: [\n {\n fieldName: \"source\",\n stringValue: \"my-string\",\n },\n {\n fieldName: \"num_rows\",\n doubleValue: 5,\n },\n {\n fieldName: \"pii_type\",\n enumValue: \"EMAIL\",\n },\n ],\n column: \"address\",\n});\nconst second_tag = new gcp.datacatalog.Tag(\"second-tag\", {\n parent: entry.id,\n template: tagTemplate.id,\n fields: [\n {\n fieldName: \"source\",\n stringValue: \"my-string\",\n },\n {\n fieldName: \"pii_type\",\n enumValue: \"NONE\",\n },\n ],\n column: \"first_name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nentry_group = gcp.datacatalog.EntryGroup(\"entry_group\", entry_group_id=\"my_entry_group\")\nentry = gcp.datacatalog.Entry(\"entry\",\n entry_group=entry_group.id,\n entry_id=\"my_entry\",\n user_specified_type=\"my_custom_type\",\n user_specified_system=\"SomethingExternal\",\n schema=\"\"\"{\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\n }\n ]\n}\n\"\"\")\ntag_template = gcp.datacatalog.TagTemplate(\"tag_template\",\n tag_template_id=\"my_template\",\n region=\"us-central1\",\n display_name=\"Demo Tag Template\",\n fields=[\n {\n \"field_id\": \"source\",\n \"display_name\": \"Source of data asset\",\n \"type\": {\n \"primitive_type\": \"STRING\",\n },\n \"is_required\": True,\n },\n {\n \"field_id\": \"num_rows\",\n \"display_name\": \"Number of rows in the data asset\",\n \"type\": {\n \"primitive_type\": \"DOUBLE\",\n },\n },\n {\n \"field_id\": \"pii_type\",\n \"display_name\": \"PII type\",\n \"type\": {\n \"enum_type\": {\n \"allowed_values\": [\n {\n \"display_name\": \"EMAIL\",\n },\n {\n \"display_name\": \"SOCIAL SECURITY NUMBER\",\n },\n {\n \"display_name\": \"NONE\",\n },\n ],\n },\n },\n },\n ],\n force_delete=False)\nbasic_tag = gcp.datacatalog.Tag(\"basic_tag\",\n parent=entry.id,\n template=tag_template.id,\n fields=[\n {\n \"field_name\": \"source\",\n \"string_value\": \"my-string\",\n },\n {\n \"field_name\": \"num_rows\",\n \"double_value\": 5,\n },\n {\n \"field_name\": \"pii_type\",\n \"enum_value\": \"EMAIL\",\n },\n ],\n column=\"address\")\nsecond_tag = gcp.datacatalog.Tag(\"second-tag\",\n parent=entry.id,\n template=tag_template.id,\n fields=[\n {\n \"field_name\": \"source\",\n \"string_value\": \"my-string\",\n },\n {\n \"field_name\": \"pii_type\",\n \"enum_value\": \"NONE\",\n },\n ],\n column=\"first_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 entryGroup = new Gcp.DataCatalog.EntryGroup(\"entry_group\", new()\n {\n EntryGroupId = \"my_entry_group\",\n });\n\n var entry = new Gcp.DataCatalog.Entry(\"entry\", new()\n {\n EntryGroup = entryGroup.Id,\n EntryId = \"my_entry\",\n UserSpecifiedType = \"my_custom_type\",\n UserSpecifiedSystem = \"SomethingExternal\",\n Schema = @\"{\n \"\"columns\"\": [\n {\n \"\"column\"\": \"\"first_name\"\",\n \"\"description\"\": \"\"First name\"\",\n \"\"mode\"\": \"\"REQUIRED\"\",\n \"\"type\"\": \"\"STRING\"\"\n },\n {\n \"\"column\"\": \"\"last_name\"\",\n \"\"description\"\": \"\"Last name\"\",\n \"\"mode\"\": \"\"REQUIRED\"\",\n \"\"type\"\": \"\"STRING\"\"\n },\n {\n \"\"column\"\": \"\"address\"\",\n \"\"description\"\": \"\"Address\"\",\n \"\"mode\"\": \"\"REPEATED\"\",\n \"\"subcolumns\"\": [\n {\n \"\"column\"\": \"\"city\"\",\n \"\"description\"\": \"\"City\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\"\n },\n {\n \"\"column\"\": \"\"state\"\",\n \"\"description\"\": \"\"State\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\"\n }\n ],\n \"\"type\"\": \"\"RECORD\"\"\n }\n ]\n}\n\",\n });\n\n var tagTemplate = new Gcp.DataCatalog.TagTemplate(\"tag_template\", new()\n {\n TagTemplateId = \"my_template\",\n Region = \"us-central1\",\n DisplayName = \"Demo Tag Template\",\n Fields = new[]\n {\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"source\",\n DisplayName = \"Source of data asset\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n PrimitiveType = \"STRING\",\n },\n IsRequired = true,\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"num_rows\",\n DisplayName = \"Number of rows in the data asset\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n PrimitiveType = \"DOUBLE\",\n },\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"pii_type\",\n DisplayName = \"PII type\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n EnumType = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeArgs\n {\n AllowedValues = new[]\n {\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"EMAIL\",\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"SOCIAL SECURITY NUMBER\",\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"NONE\",\n },\n },\n },\n },\n },\n },\n ForceDelete = false,\n });\n\n var basicTag = new Gcp.DataCatalog.Tag(\"basic_tag\", new()\n {\n Parent = entry.Id,\n Template = tagTemplate.Id,\n Fields = new[]\n {\n new Gcp.DataCatalog.Inputs.TagFieldArgs\n {\n FieldName = \"source\",\n StringValue = \"my-string\",\n },\n new Gcp.DataCatalog.Inputs.TagFieldArgs\n {\n FieldName = \"num_rows\",\n DoubleValue = 5,\n },\n new Gcp.DataCatalog.Inputs.TagFieldArgs\n {\n FieldName = \"pii_type\",\n EnumValue = \"EMAIL\",\n },\n },\n Column = \"address\",\n });\n\n var second_tag = new Gcp.DataCatalog.Tag(\"second-tag\", new()\n {\n Parent = entry.Id,\n Template = tagTemplate.Id,\n Fields = new[]\n {\n new Gcp.DataCatalog.Inputs.TagFieldArgs\n {\n FieldName = \"source\",\n StringValue = \"my-string\",\n },\n new Gcp.DataCatalog.Inputs.TagFieldArgs\n {\n FieldName = \"pii_type\",\n EnumValue = \"NONE\",\n },\n },\n Column = \"first_name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datacatalog\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tentryGroup, err := datacatalog.NewEntryGroup(ctx, \"entry_group\", \u0026datacatalog.EntryGroupArgs{\n\t\t\tEntryGroupId: pulumi.String(\"my_entry_group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tentry, err := datacatalog.NewEntry(ctx, \"entry\", \u0026datacatalog.EntryArgs{\n\t\t\tEntryGroup: entryGroup.ID(),\n\t\t\tEntryId: pulumi.String(\"my_entry\"),\n\t\t\tUserSpecifiedType: pulumi.String(\"my_custom_type\"),\n\t\t\tUserSpecifiedSystem: pulumi.String(\"SomethingExternal\"),\n\t\t\tSchema: pulumi.String(`{\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\n }\n ]\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttagTemplate, err := datacatalog.NewTagTemplate(ctx, \"tag_template\", \u0026datacatalog.TagTemplateArgs{\n\t\t\tTagTemplateId: pulumi.String(\"my_template\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Demo Tag Template\"),\n\t\t\tFields: datacatalog.TagTemplateFieldArray{\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"source\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Source of data asset\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tPrimitiveType: pulumi.String(\"STRING\"),\n\t\t\t\t\t},\n\t\t\t\t\tIsRequired: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"num_rows\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Number of rows in the data asset\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tPrimitiveType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"pii_type\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"PII type\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tEnumType: \u0026datacatalog.TagTemplateFieldTypeEnumTypeArgs{\n\t\t\t\t\t\t\tAllowedValues: datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArray{\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"EMAIL\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"SOCIAL SECURITY NUMBER\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"NONE\"),\n\t\t\t\t\t\t\t\t},\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\tForceDelete: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datacatalog.NewTag(ctx, \"basic_tag\", \u0026datacatalog.TagArgs{\n\t\t\tParent: entry.ID(),\n\t\t\tTemplate: tagTemplate.ID(),\n\t\t\tFields: datacatalog.TagFieldArray{\n\t\t\t\t\u0026datacatalog.TagFieldArgs{\n\t\t\t\t\tFieldName: pulumi.String(\"source\"),\n\t\t\t\t\tStringValue: pulumi.String(\"my-string\"),\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagFieldArgs{\n\t\t\t\t\tFieldName: pulumi.String(\"num_rows\"),\n\t\t\t\t\tDoubleValue: pulumi.Float64(5),\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagFieldArgs{\n\t\t\t\t\tFieldName: pulumi.String(\"pii_type\"),\n\t\t\t\t\tEnumValue: pulumi.String(\"EMAIL\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tColumn: pulumi.String(\"address\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datacatalog.NewTag(ctx, \"second-tag\", \u0026datacatalog.TagArgs{\n\t\t\tParent: entry.ID(),\n\t\t\tTemplate: tagTemplate.ID(),\n\t\t\tFields: datacatalog.TagFieldArray{\n\t\t\t\t\u0026datacatalog.TagFieldArgs{\n\t\t\t\t\tFieldName: pulumi.String(\"source\"),\n\t\t\t\t\tStringValue: pulumi.String(\"my-string\"),\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagFieldArgs{\n\t\t\t\t\tFieldName: pulumi.String(\"pii_type\"),\n\t\t\t\t\tEnumValue: pulumi.String(\"NONE\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tColumn: pulumi.String(\"first_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.datacatalog.EntryGroup;\nimport com.pulumi.gcp.datacatalog.EntryGroupArgs;\nimport com.pulumi.gcp.datacatalog.Entry;\nimport com.pulumi.gcp.datacatalog.EntryArgs;\nimport com.pulumi.gcp.datacatalog.TagTemplate;\nimport com.pulumi.gcp.datacatalog.TagTemplateArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldTypeArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldTypeEnumTypeArgs;\nimport com.pulumi.gcp.datacatalog.Tag;\nimport com.pulumi.gcp.datacatalog.TagArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagFieldArgs;\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 entryGroup = new EntryGroup(\"entryGroup\", EntryGroupArgs.builder()\n .entryGroupId(\"my_entry_group\")\n .build());\n\n var entry = new Entry(\"entry\", EntryArgs.builder()\n .entryGroup(entryGroup.id())\n .entryId(\"my_entry\")\n .userSpecifiedType(\"my_custom_type\")\n .userSpecifiedSystem(\"SomethingExternal\")\n .schema(\"\"\"\n{\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\n }\n ]\n}\n \"\"\")\n .build());\n\n var tagTemplate = new TagTemplate(\"tagTemplate\", TagTemplateArgs.builder()\n .tagTemplateId(\"my_template\")\n .region(\"us-central1\")\n .displayName(\"Demo Tag Template\")\n .fields( \n TagTemplateFieldArgs.builder()\n .fieldId(\"source\")\n .displayName(\"Source of data asset\")\n .type(TagTemplateFieldTypeArgs.builder()\n .primitiveType(\"STRING\")\n .build())\n .isRequired(true)\n .build(),\n TagTemplateFieldArgs.builder()\n .fieldId(\"num_rows\")\n .displayName(\"Number of rows in the data asset\")\n .type(TagTemplateFieldTypeArgs.builder()\n .primitiveType(\"DOUBLE\")\n .build())\n .build(),\n TagTemplateFieldArgs.builder()\n .fieldId(\"pii_type\")\n .displayName(\"PII type\")\n .type(TagTemplateFieldTypeArgs.builder()\n .enumType(TagTemplateFieldTypeEnumTypeArgs.builder()\n .allowedValues( \n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"EMAIL\")\n .build(),\n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"SOCIAL SECURITY NUMBER\")\n .build(),\n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"NONE\")\n .build())\n .build())\n .build())\n .build())\n .forceDelete(\"false\")\n .build());\n\n var basicTag = new Tag(\"basicTag\", TagArgs.builder()\n .parent(entry.id())\n .template(tagTemplate.id())\n .fields( \n TagFieldArgs.builder()\n .fieldName(\"source\")\n .stringValue(\"my-string\")\n .build(),\n TagFieldArgs.builder()\n .fieldName(\"num_rows\")\n .doubleValue(5)\n .build(),\n TagFieldArgs.builder()\n .fieldName(\"pii_type\")\n .enumValue(\"EMAIL\")\n .build())\n .column(\"address\")\n .build());\n\n var second_tag = new Tag(\"second-tag\", TagArgs.builder()\n .parent(entry.id())\n .template(tagTemplate.id())\n .fields( \n TagFieldArgs.builder()\n .fieldName(\"source\")\n .stringValue(\"my-string\")\n .build(),\n TagFieldArgs.builder()\n .fieldName(\"pii_type\")\n .enumValue(\"NONE\")\n .build())\n .column(\"first_name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n entry:\n type: gcp:datacatalog:Entry\n properties:\n entryGroup: ${entryGroup.id}\n entryId: my_entry\n userSpecifiedType: my_custom_type\n userSpecifiedSystem: SomethingExternal\n schema: |\n {\n \"columns\": [\n {\n \"column\": \"first_name\",\n \"description\": \"First name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"last_name\",\n \"description\": \"Last name\",\n \"mode\": \"REQUIRED\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"address\",\n \"description\": \"Address\",\n \"mode\": \"REPEATED\",\n \"subcolumns\": [\n {\n \"column\": \"city\",\n \"description\": \"City\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n },\n {\n \"column\": \"state\",\n \"description\": \"State\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\"\n }\n ],\n \"type\": \"RECORD\"\n }\n ]\n }\n entryGroup:\n type: gcp:datacatalog:EntryGroup\n name: entry_group\n properties:\n entryGroupId: my_entry_group\n tagTemplate:\n type: gcp:datacatalog:TagTemplate\n name: tag_template\n properties:\n tagTemplateId: my_template\n region: us-central1\n displayName: Demo Tag Template\n fields:\n - fieldId: source\n displayName: Source of data asset\n type:\n primitiveType: STRING\n isRequired: true\n - fieldId: num_rows\n displayName: Number of rows in the data asset\n type:\n primitiveType: DOUBLE\n - fieldId: pii_type\n displayName: PII type\n type:\n enumType:\n allowedValues:\n - displayName: EMAIL\n - displayName: SOCIAL SECURITY NUMBER\n - displayName: NONE\n forceDelete: 'false'\n basicTag:\n type: gcp:datacatalog:Tag\n name: basic_tag\n properties:\n parent: ${entry.id}\n template: ${tagTemplate.id}\n fields:\n - fieldName: source\n stringValue: my-string\n - fieldName: num_rows\n doubleValue: 5\n - fieldName: pii_type\n enumValue: EMAIL\n column: address\n second-tag:\n type: gcp:datacatalog:Tag\n properties:\n parent: ${entry.id}\n template: ${tagTemplate.id}\n fields:\n - fieldName: source\n stringValue: my-string\n - fieldName: pii_type\n enumValue: NONE\n column: first_name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTag can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Tag can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:datacatalog/tag:Tag default {{name}}\n```\n\n", "properties": { "column": { "type": "string", @@ -171374,7 +171374,7 @@ } }, "gcp:datacatalog/tagTemplate:TagTemplate": { - "description": "A tag template defines a tag, which can have one or more typed fields.\nThe template is used to create and attach the tag to GCP resources.\n\n\nTo get more information about TagTemplate, see:\n\n* [API documentation](https://cloud.google.com/data-catalog/docs/reference/rest/v1/projects.locations.tagTemplates)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-catalog/docs)\n\n## Example Usage\n\n### Data Catalog Tag Template Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicTagTemplate = new gcp.datacatalog.TagTemplate(\"basic_tag_template\", {\n tagTemplateId: \"my_template\",\n region: \"us-central1\",\n displayName: \"Demo Tag Template\",\n fields: [\n {\n fieldId: \"source\",\n displayName: \"Source of data asset\",\n type: {\n primitiveType: \"STRING\",\n },\n isRequired: true,\n },\n {\n fieldId: \"num_rows\",\n displayName: \"Number of rows in the data asset\",\n type: {\n primitiveType: \"DOUBLE\",\n },\n },\n {\n fieldId: \"pii_type\",\n displayName: \"PII type\",\n type: {\n enumType: {\n allowedValues: [\n {\n displayName: \"EMAIL\",\n },\n {\n displayName: \"SOCIAL SECURITY NUMBER\",\n },\n {\n displayName: \"NONE\",\n },\n ],\n },\n },\n },\n ],\n forceDelete: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_tag_template = gcp.datacatalog.TagTemplate(\"basic_tag_template\",\n tag_template_id=\"my_template\",\n region=\"us-central1\",\n display_name=\"Demo Tag Template\",\n fields=[\n {\n \"fieldId\": \"source\",\n \"displayName\": \"Source of data asset\",\n \"type\": {\n \"primitiveType\": \"STRING\",\n },\n \"isRequired\": True,\n },\n {\n \"fieldId\": \"num_rows\",\n \"displayName\": \"Number of rows in the data asset\",\n \"type\": {\n \"primitiveType\": \"DOUBLE\",\n },\n },\n {\n \"fieldId\": \"pii_type\",\n \"displayName\": \"PII type\",\n \"type\": {\n \"enumType\": {\n \"allowedValues\": [\n {\n \"displayName\": \"EMAIL\",\n },\n {\n \"displayName\": \"SOCIAL SECURITY NUMBER\",\n },\n {\n \"displayName\": \"NONE\",\n },\n ],\n },\n },\n },\n ],\n force_delete=False)\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 basicTagTemplate = new Gcp.DataCatalog.TagTemplate(\"basic_tag_template\", new()\n {\n TagTemplateId = \"my_template\",\n Region = \"us-central1\",\n DisplayName = \"Demo Tag Template\",\n Fields = new[]\n {\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"source\",\n DisplayName = \"Source of data asset\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n PrimitiveType = \"STRING\",\n },\n IsRequired = true,\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"num_rows\",\n DisplayName = \"Number of rows in the data asset\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n PrimitiveType = \"DOUBLE\",\n },\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"pii_type\",\n DisplayName = \"PII type\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n EnumType = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeArgs\n {\n AllowedValues = new[]\n {\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"EMAIL\",\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"SOCIAL SECURITY NUMBER\",\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"NONE\",\n },\n },\n },\n },\n },\n },\n ForceDelete = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datacatalog\"\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 := datacatalog.NewTagTemplate(ctx, \"basic_tag_template\", \u0026datacatalog.TagTemplateArgs{\n\t\t\tTagTemplateId: pulumi.String(\"my_template\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Demo Tag Template\"),\n\t\t\tFields: datacatalog.TagTemplateFieldArray{\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"source\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Source of data asset\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tPrimitiveType: pulumi.String(\"STRING\"),\n\t\t\t\t\t},\n\t\t\t\t\tIsRequired: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"num_rows\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Number of rows in the data asset\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tPrimitiveType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"pii_type\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"PII type\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tEnumType: \u0026datacatalog.TagTemplateFieldTypeEnumTypeArgs{\n\t\t\t\t\t\t\tAllowedValues: datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArray{\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"EMAIL\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"SOCIAL SECURITY NUMBER\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"NONE\"),\n\t\t\t\t\t\t\t\t},\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\tForceDelete: pulumi.Bool(false),\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.datacatalog.TagTemplate;\nimport com.pulumi.gcp.datacatalog.TagTemplateArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldTypeArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldTypeEnumTypeArgs;\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 basicTagTemplate = new TagTemplate(\"basicTagTemplate\", TagTemplateArgs.builder()\n .tagTemplateId(\"my_template\")\n .region(\"us-central1\")\n .displayName(\"Demo Tag Template\")\n .fields( \n TagTemplateFieldArgs.builder()\n .fieldId(\"source\")\n .displayName(\"Source of data asset\")\n .type(TagTemplateFieldTypeArgs.builder()\n .primitiveType(\"STRING\")\n .build())\n .isRequired(true)\n .build(),\n TagTemplateFieldArgs.builder()\n .fieldId(\"num_rows\")\n .displayName(\"Number of rows in the data asset\")\n .type(TagTemplateFieldTypeArgs.builder()\n .primitiveType(\"DOUBLE\")\n .build())\n .build(),\n TagTemplateFieldArgs.builder()\n .fieldId(\"pii_type\")\n .displayName(\"PII type\")\n .type(TagTemplateFieldTypeArgs.builder()\n .enumType(TagTemplateFieldTypeEnumTypeArgs.builder()\n .allowedValues( \n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"EMAIL\")\n .build(),\n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"SOCIAL SECURITY NUMBER\")\n .build(),\n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"NONE\")\n .build())\n .build())\n .build())\n .build())\n .forceDelete(\"false\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicTagTemplate:\n type: gcp:datacatalog:TagTemplate\n name: basic_tag_template\n properties:\n tagTemplateId: my_template\n region: us-central1\n displayName: Demo Tag Template\n fields:\n - fieldId: source\n displayName: Source of data asset\n type:\n primitiveType: STRING\n isRequired: true\n - fieldId: num_rows\n displayName: Number of rows in the data asset\n type:\n primitiveType: DOUBLE\n - fieldId: pii_type\n displayName: PII type\n type:\n enumType:\n allowedValues:\n - displayName: EMAIL\n - displayName: SOCIAL SECURITY NUMBER\n - displayName: NONE\n forceDelete: 'false'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTagTemplate can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TagTemplate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:datacatalog/tagTemplate:TagTemplate default {{name}}\n```\n\n", + "description": "A tag template defines a tag, which can have one or more typed fields.\nThe template is used to create and attach the tag to GCP resources.\n\n\nTo get more information about TagTemplate, see:\n\n* [API documentation](https://cloud.google.com/data-catalog/docs/reference/rest/v1/projects.locations.tagTemplates)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-catalog/docs)\n\n## Example Usage\n\n### Data Catalog Tag Template Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicTagTemplate = new gcp.datacatalog.TagTemplate(\"basic_tag_template\", {\n tagTemplateId: \"my_template\",\n region: \"us-central1\",\n displayName: \"Demo Tag Template\",\n fields: [\n {\n fieldId: \"source\",\n displayName: \"Source of data asset\",\n type: {\n primitiveType: \"STRING\",\n },\n isRequired: true,\n },\n {\n fieldId: \"num_rows\",\n displayName: \"Number of rows in the data asset\",\n type: {\n primitiveType: \"DOUBLE\",\n },\n },\n {\n fieldId: \"pii_type\",\n displayName: \"PII type\",\n type: {\n enumType: {\n allowedValues: [\n {\n displayName: \"EMAIL\",\n },\n {\n displayName: \"SOCIAL SECURITY NUMBER\",\n },\n {\n displayName: \"NONE\",\n },\n ],\n },\n },\n },\n ],\n forceDelete: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_tag_template = gcp.datacatalog.TagTemplate(\"basic_tag_template\",\n tag_template_id=\"my_template\",\n region=\"us-central1\",\n display_name=\"Demo Tag Template\",\n fields=[\n {\n \"field_id\": \"source\",\n \"display_name\": \"Source of data asset\",\n \"type\": {\n \"primitive_type\": \"STRING\",\n },\n \"is_required\": True,\n },\n {\n \"field_id\": \"num_rows\",\n \"display_name\": \"Number of rows in the data asset\",\n \"type\": {\n \"primitive_type\": \"DOUBLE\",\n },\n },\n {\n \"field_id\": \"pii_type\",\n \"display_name\": \"PII type\",\n \"type\": {\n \"enum_type\": {\n \"allowed_values\": [\n {\n \"display_name\": \"EMAIL\",\n },\n {\n \"display_name\": \"SOCIAL SECURITY NUMBER\",\n },\n {\n \"display_name\": \"NONE\",\n },\n ],\n },\n },\n },\n ],\n force_delete=False)\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 basicTagTemplate = new Gcp.DataCatalog.TagTemplate(\"basic_tag_template\", new()\n {\n TagTemplateId = \"my_template\",\n Region = \"us-central1\",\n DisplayName = \"Demo Tag Template\",\n Fields = new[]\n {\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"source\",\n DisplayName = \"Source of data asset\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n PrimitiveType = \"STRING\",\n },\n IsRequired = true,\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"num_rows\",\n DisplayName = \"Number of rows in the data asset\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n PrimitiveType = \"DOUBLE\",\n },\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldArgs\n {\n FieldId = \"pii_type\",\n DisplayName = \"PII type\",\n Type = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeArgs\n {\n EnumType = new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeArgs\n {\n AllowedValues = new[]\n {\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"EMAIL\",\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"SOCIAL SECURITY NUMBER\",\n },\n new Gcp.DataCatalog.Inputs.TagTemplateFieldTypeEnumTypeAllowedValueArgs\n {\n DisplayName = \"NONE\",\n },\n },\n },\n },\n },\n },\n ForceDelete = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datacatalog\"\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 := datacatalog.NewTagTemplate(ctx, \"basic_tag_template\", \u0026datacatalog.TagTemplateArgs{\n\t\t\tTagTemplateId: pulumi.String(\"my_template\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Demo Tag Template\"),\n\t\t\tFields: datacatalog.TagTemplateFieldArray{\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"source\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Source of data asset\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tPrimitiveType: pulumi.String(\"STRING\"),\n\t\t\t\t\t},\n\t\t\t\t\tIsRequired: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"num_rows\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Number of rows in the data asset\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tPrimitiveType: pulumi.String(\"DOUBLE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026datacatalog.TagTemplateFieldArgs{\n\t\t\t\t\tFieldId: pulumi.String(\"pii_type\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"PII type\"),\n\t\t\t\t\tType: \u0026datacatalog.TagTemplateFieldTypeArgs{\n\t\t\t\t\t\tEnumType: \u0026datacatalog.TagTemplateFieldTypeEnumTypeArgs{\n\t\t\t\t\t\t\tAllowedValues: datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArray{\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"EMAIL\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"SOCIAL SECURITY NUMBER\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026datacatalog.TagTemplateFieldTypeEnumTypeAllowedValueArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"NONE\"),\n\t\t\t\t\t\t\t\t},\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\tForceDelete: pulumi.Bool(false),\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.datacatalog.TagTemplate;\nimport com.pulumi.gcp.datacatalog.TagTemplateArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldTypeArgs;\nimport com.pulumi.gcp.datacatalog.inputs.TagTemplateFieldTypeEnumTypeArgs;\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 basicTagTemplate = new TagTemplate(\"basicTagTemplate\", TagTemplateArgs.builder()\n .tagTemplateId(\"my_template\")\n .region(\"us-central1\")\n .displayName(\"Demo Tag Template\")\n .fields( \n TagTemplateFieldArgs.builder()\n .fieldId(\"source\")\n .displayName(\"Source of data asset\")\n .type(TagTemplateFieldTypeArgs.builder()\n .primitiveType(\"STRING\")\n .build())\n .isRequired(true)\n .build(),\n TagTemplateFieldArgs.builder()\n .fieldId(\"num_rows\")\n .displayName(\"Number of rows in the data asset\")\n .type(TagTemplateFieldTypeArgs.builder()\n .primitiveType(\"DOUBLE\")\n .build())\n .build(),\n TagTemplateFieldArgs.builder()\n .fieldId(\"pii_type\")\n .displayName(\"PII type\")\n .type(TagTemplateFieldTypeArgs.builder()\n .enumType(TagTemplateFieldTypeEnumTypeArgs.builder()\n .allowedValues( \n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"EMAIL\")\n .build(),\n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"SOCIAL SECURITY NUMBER\")\n .build(),\n TagTemplateFieldTypeEnumTypeAllowedValueArgs.builder()\n .displayName(\"NONE\")\n .build())\n .build())\n .build())\n .build())\n .forceDelete(\"false\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicTagTemplate:\n type: gcp:datacatalog:TagTemplate\n name: basic_tag_template\n properties:\n tagTemplateId: my_template\n region: us-central1\n displayName: Demo Tag Template\n fields:\n - fieldId: source\n displayName: Source of data asset\n type:\n primitiveType: STRING\n isRequired: true\n - fieldId: num_rows\n displayName: Number of rows in the data asset\n type:\n primitiveType: DOUBLE\n - fieldId: pii_type\n displayName: PII type\n type:\n enumType:\n allowedValues:\n - displayName: EMAIL\n - displayName: SOCIAL SECURITY NUMBER\n - displayName: NONE\n forceDelete: 'false'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTagTemplate can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TagTemplate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:datacatalog/tagTemplate:TagTemplate default {{name}}\n```\n\n", "properties": { "displayName": { "type": "string", @@ -172648,7 +172648,7 @@ } }, "gcp:dataflow/job:Job": { - "description": "Creates a job on Dataflow, which is an implementation of Apache Beam running on Google Compute Engine. For more information see\nthe official documentation for\n[Beam](https://beam.apache.org) and [Dataflow](https://cloud.google.com/dataflow/).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bigDataJob = new gcp.dataflow.Job(\"big_data_job\", {\n name: \"dataflow-job\",\n templateGcsPath: \"gs://my-bucket/templates/template_file\",\n tempGcsLocation: \"gs://my-bucket/tmp_dir\",\n parameters: {\n foo: \"bar\",\n baz: \"qux\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbig_data_job = gcp.dataflow.Job(\"big_data_job\",\n name=\"dataflow-job\",\n template_gcs_path=\"gs://my-bucket/templates/template_file\",\n temp_gcs_location=\"gs://my-bucket/tmp_dir\",\n parameters={\n \"foo\": \"bar\",\n \"baz\": \"qux\",\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 bigDataJob = new Gcp.Dataflow.Job(\"big_data_job\", new()\n {\n Name = \"dataflow-job\",\n TemplateGcsPath = \"gs://my-bucket/templates/template_file\",\n TempGcsLocation = \"gs://my-bucket/tmp_dir\",\n Parameters = \n {\n { \"foo\", \"bar\" },\n { \"baz\", \"qux\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataflow\"\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 := dataflow.NewJob(ctx, \"big_data_job\", \u0026dataflow.JobArgs{\n\t\t\tName: pulumi.String(\"dataflow-job\"),\n\t\t\tTemplateGcsPath: pulumi.String(\"gs://my-bucket/templates/template_file\"),\n\t\t\tTempGcsLocation: pulumi.String(\"gs://my-bucket/tmp_dir\"),\n\t\t\tParameters: pulumi.Map{\n\t\t\t\t\"foo\": pulumi.Any(\"bar\"),\n\t\t\t\t\"baz\": pulumi.Any(\"qux\"),\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.dataflow.Job;\nimport com.pulumi.gcp.dataflow.JobArgs;\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 bigDataJob = new Job(\"bigDataJob\", JobArgs.builder()\n .name(\"dataflow-job\")\n .templateGcsPath(\"gs://my-bucket/templates/template_file\")\n .tempGcsLocation(\"gs://my-bucket/tmp_dir\")\n .parameters(Map.ofEntries(\n Map.entry(\"foo\", \"bar\"),\n Map.entry(\"baz\", \"qux\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bigDataJob:\n type: gcp:dataflow:Job\n name: big_data_job\n properties:\n name: dataflow-job\n templateGcsPath: gs://my-bucket/templates/template_file\n tempGcsLocation: gs://my-bucket/tmp_dir\n parameters:\n foo: bar\n baz: qux\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Streaming Job\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"dataflow-job1\"});\nconst bucket1 = new gcp.storage.Bucket(\"bucket1\", {\n name: \"tf-test-bucket1\",\n location: \"US\",\n forceDestroy: true,\n});\nconst bucket2 = new gcp.storage.Bucket(\"bucket2\", {\n name: \"tf-test-bucket2\",\n location: \"US\",\n forceDestroy: true,\n});\nconst pubsubStream = new gcp.dataflow.Job(\"pubsub_stream\", {\n name: \"tf-test-dataflow-job1\",\n templateGcsPath: \"gs://my-bucket/templates/template_file\",\n tempGcsLocation: \"gs://my-bucket/tmp_dir\",\n enableStreamingEngine: true,\n parameters: {\n inputFilePattern: pulumi.interpolate`${bucket1.url}/*.json`,\n outputTopic: topic.id,\n },\n transformNameMapping: {\n name: \"test_job\",\n env: \"test\",\n },\n onDelete: \"cancel\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntopic = gcp.pubsub.Topic(\"topic\", name=\"dataflow-job1\")\nbucket1 = gcp.storage.Bucket(\"bucket1\",\n name=\"tf-test-bucket1\",\n location=\"US\",\n force_destroy=True)\nbucket2 = gcp.storage.Bucket(\"bucket2\",\n name=\"tf-test-bucket2\",\n location=\"US\",\n force_destroy=True)\npubsub_stream = gcp.dataflow.Job(\"pubsub_stream\",\n name=\"tf-test-dataflow-job1\",\n template_gcs_path=\"gs://my-bucket/templates/template_file\",\n temp_gcs_location=\"gs://my-bucket/tmp_dir\",\n enable_streaming_engine=True,\n parameters={\n \"inputFilePattern\": bucket1.url.apply(lambda url: f\"{url}/*.json\"),\n \"outputTopic\": topic.id,\n },\n transform_name_mapping={\n \"name\": \"test_job\",\n \"env\": \"test\",\n },\n on_delete=\"cancel\")\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 Name = \"dataflow-job1\",\n });\n\n var bucket1 = new Gcp.Storage.Bucket(\"bucket1\", new()\n {\n Name = \"tf-test-bucket1\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var bucket2 = new Gcp.Storage.Bucket(\"bucket2\", new()\n {\n Name = \"tf-test-bucket2\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var pubsubStream = new Gcp.Dataflow.Job(\"pubsub_stream\", new()\n {\n Name = \"tf-test-dataflow-job1\",\n TemplateGcsPath = \"gs://my-bucket/templates/template_file\",\n TempGcsLocation = \"gs://my-bucket/tmp_dir\",\n EnableStreamingEngine = true,\n Parameters = \n {\n { \"inputFilePattern\", bucket1.Url.Apply(url =\u003e $\"{url}/*.json\") },\n { \"outputTopic\", topic.Id },\n },\n TransformNameMapping = \n {\n { \"name\", \"test_job\" },\n { \"env\", \"test\" },\n },\n OnDelete = \"cancel\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataflow\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"dataflow-job1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket1, err := storage.NewBucket(ctx, \"bucket1\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"tf-test-bucket1\"),\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 = storage.NewBucket(ctx, \"bucket2\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"tf-test-bucket2\"),\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 = dataflow.NewJob(ctx, \"pubsub_stream\", \u0026dataflow.JobArgs{\n\t\t\tName: pulumi.String(\"tf-test-dataflow-job1\"),\n\t\t\tTemplateGcsPath: pulumi.String(\"gs://my-bucket/templates/template_file\"),\n\t\t\tTempGcsLocation: pulumi.String(\"gs://my-bucket/tmp_dir\"),\n\t\t\tEnableStreamingEngine: pulumi.Bool(true),\n\t\t\tParameters: pulumi.Map{\n\t\t\t\t\"inputFilePattern\": bucket1.Url.ApplyT(func(url string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"%v/*.json\", url), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\"outputTopic\": topic.ID(),\n\t\t\t},\n\t\t\tTransformNameMapping: pulumi.Map{\n\t\t\t\t\"name\": pulumi.Any(\"test_job\"),\n\t\t\t\t\"env\": pulumi.Any(\"test\"),\n\t\t\t},\n\t\t\tOnDelete: pulumi.String(\"cancel\"),\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.pubsub.TopicArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.dataflow.Job;\nimport com.pulumi.gcp.dataflow.JobArgs;\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.builder()\n .name(\"dataflow-job1\")\n .build());\n\n var bucket1 = new Bucket(\"bucket1\", BucketArgs.builder()\n .name(\"tf-test-bucket1\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var bucket2 = new Bucket(\"bucket2\", BucketArgs.builder()\n .name(\"tf-test-bucket2\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var pubsubStream = new Job(\"pubsubStream\", JobArgs.builder()\n .name(\"tf-test-dataflow-job1\")\n .templateGcsPath(\"gs://my-bucket/templates/template_file\")\n .tempGcsLocation(\"gs://my-bucket/tmp_dir\")\n .enableStreamingEngine(true)\n .parameters(Map.ofEntries(\n Map.entry(\"inputFilePattern\", bucket1.url().applyValue(url -\u003e String.format(\"%s/*.json\", url))),\n Map.entry(\"outputTopic\", topic.id())\n ))\n .transformNameMapping(Map.ofEntries(\n Map.entry(\"name\", \"test_job\"),\n Map.entry(\"env\", \"test\")\n ))\n .onDelete(\"cancel\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: dataflow-job1\n bucket1:\n type: gcp:storage:Bucket\n properties:\n name: tf-test-bucket1\n location: US\n forceDestroy: true\n bucket2:\n type: gcp:storage:Bucket\n properties:\n name: tf-test-bucket2\n location: US\n forceDestroy: true\n pubsubStream:\n type: gcp:dataflow:Job\n name: pubsub_stream\n properties:\n name: tf-test-dataflow-job1\n templateGcsPath: gs://my-bucket/templates/template_file\n tempGcsLocation: gs://my-bucket/tmp_dir\n enableStreamingEngine: true\n parameters:\n inputFilePattern: ${bucket1.url}/*.json\n outputTopic: ${topic.id}\n transformNameMapping:\n name: test_job\n env: test\n onDelete: cancel\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Note on \"destroy\" / \"apply\"\n\nThere are many types of Dataflow jobs. Some Dataflow jobs run constantly, getting new data from (e.g.) a GCS bucket, and outputting data continuously. Some jobs process a set amount of data then terminate. All jobs can fail while running due to programming errors or other issues. In this way, Dataflow jobs are different from most other Google resources.\n\nThe Dataflow resource is considered 'existing' while it is in a nonterminal state. If it reaches a terminal state (e.g. 'FAILED', 'COMPLETE', 'CANCELLED'), it will be recreated on the next 'apply'. This is as expected for jobs which run continuously, but may surprise users who use this resource for other kinds of Dataflow jobs.\n\nA Dataflow job which is 'destroyed' may be \"cancelled\" or \"drained\". If \"cancelled\", the job terminates - any data written remains where it is, but no new data will be processed. If \"drained\", no new data will enter the pipeline, but any data currently in the pipeline will finish being processed. The default is \"drain\". When `on_delete` is set to `\"drain\"` in the configuration, you may experience a long wait for your `pulumi destroy` to complete.\n\nYou can potentially short-circuit the wait by setting `skip_wait_on_job_termination` to `true`, but beware that unless you take active steps to ensure that the job `name` parameter changes between instances, the name will conflict and the launch of the new job will fail. One way to do this is with a random_id resource, for example:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst config = new pulumi.Config();\nconst bigDataJobSubscriptionId = config.get(\"bigDataJobSubscriptionId\") || \"projects/myproject/subscriptions/messages\";\nconst bigDataJobNameSuffix = new random.RandomId(\"big_data_job_name_suffix\", {\n byteLength: 4,\n keepers: {\n region: region,\n subscription_id: bigDataJobSubscriptionId,\n },\n});\nconst bigDataJob = new gcp.dataflow.FlexTemplateJob(\"big_data_job\", {\n name: pulumi.interpolate`dataflow-flextemplates-job-${bigDataJobNameSuffix.dec}`,\n region: region,\n containerSpecGcsPath: \"gs://my-bucket/templates/template.json\",\n skipWaitOnJobTermination: true,\n parameters: {\n inputSubscription: bigDataJobSubscriptionId,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nconfig = pulumi.Config()\nbig_data_job_subscription_id = config.get(\"bigDataJobSubscriptionId\")\nif big_data_job_subscription_id is None:\n big_data_job_subscription_id = \"projects/myproject/subscriptions/messages\"\nbig_data_job_name_suffix = random.RandomId(\"big_data_job_name_suffix\",\n byte_length=4,\n keepers={\n \"region\": region,\n \"subscription_id\": big_data_job_subscription_id,\n })\nbig_data_job = gcp.dataflow.FlexTemplateJob(\"big_data_job\",\n name=big_data_job_name_suffix.dec.apply(lambda dec: f\"dataflow-flextemplates-job-{dec}\"),\n region=region,\n container_spec_gcs_path=\"gs://my-bucket/templates/template.json\",\n skip_wait_on_job_termination=True,\n parameters={\n \"inputSubscription\": big_data_job_subscription_id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var bigDataJobSubscriptionId = config.Get(\"bigDataJobSubscriptionId\") ?? \"projects/myproject/subscriptions/messages\";\n var bigDataJobNameSuffix = new Random.RandomId(\"big_data_job_name_suffix\", new()\n {\n ByteLength = 4,\n Keepers = \n {\n { \"region\", region },\n { \"subscription_id\", bigDataJobSubscriptionId },\n },\n });\n\n var bigDataJob = new Gcp.Dataflow.FlexTemplateJob(\"big_data_job\", new()\n {\n Name = bigDataJobNameSuffix.Dec.Apply(dec =\u003e $\"dataflow-flextemplates-job-{dec}\"),\n Region = region,\n ContainerSpecGcsPath = \"gs://my-bucket/templates/template.json\",\n SkipWaitOnJobTermination = true,\n Parameters = \n {\n { \"inputSubscription\", bigDataJobSubscriptionId },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataflow\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tbigDataJobSubscriptionId := \"projects/myproject/subscriptions/messages\"\n\t\tif param := cfg.Get(\"bigDataJobSubscriptionId\"); param != \"\" {\n\t\t\tbigDataJobSubscriptionId = param\n\t\t}\n\t\tbigDataJobNameSuffix, err := random.NewRandomId(ctx, \"big_data_job_name_suffix\", \u0026random.RandomIdArgs{\n\t\t\tByteLength: pulumi.Int(4),\n\t\t\tKeepers: pulumi.StringMap{\n\t\t\t\t\"region\": pulumi.Any(region),\n\t\t\t\t\"subscription_id\": pulumi.String(bigDataJobSubscriptionId),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataflow.NewFlexTemplateJob(ctx, \"big_data_job\", \u0026dataflow.FlexTemplateJobArgs{\n\t\t\tName: bigDataJobNameSuffix.Dec.ApplyT(func(dec string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"dataflow-flextemplates-job-%v\", dec), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tRegion: pulumi.Any(region),\n\t\t\tContainerSpecGcsPath: pulumi.String(\"gs://my-bucket/templates/template.json\"),\n\t\t\tSkipWaitOnJobTermination: pulumi.Bool(true),\n\t\t\tParameters: pulumi.Map{\n\t\t\t\t\"inputSubscription\": pulumi.String(bigDataJobSubscriptionId),\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.random.RandomId;\nimport com.pulumi.random.RandomIdArgs;\nimport com.pulumi.gcp.dataflow.FlexTemplateJob;\nimport com.pulumi.gcp.dataflow.FlexTemplateJobArgs;\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 config = ctx.config();\n final var bigDataJobSubscriptionId = config.get(\"bigDataJobSubscriptionId\").orElse(\"projects/myproject/subscriptions/messages\");\n var bigDataJobNameSuffix = new RandomId(\"bigDataJobNameSuffix\", RandomIdArgs.builder()\n .byteLength(4)\n .keepers(Map.ofEntries(\n Map.entry(\"region\", region),\n Map.entry(\"subscription_id\", bigDataJobSubscriptionId)\n ))\n .build());\n\n var bigDataJob = new FlexTemplateJob(\"bigDataJob\", FlexTemplateJobArgs.builder()\n .name(bigDataJobNameSuffix.dec().applyValue(dec -\u003e String.format(\"dataflow-flextemplates-job-%s\", dec)))\n .region(region)\n .containerSpecGcsPath(\"gs://my-bucket/templates/template.json\")\n .skipWaitOnJobTermination(true)\n .parameters(Map.of(\"inputSubscription\", bigDataJobSubscriptionId))\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n bigDataJobSubscriptionId:\n type: string\n default: projects/myproject/subscriptions/messages\nresources:\n bigDataJobNameSuffix:\n type: random:RandomId\n name: big_data_job_name_suffix\n properties:\n byteLength: 4\n keepers:\n region: ${region}\n subscription_id: ${bigDataJobSubscriptionId}\n bigDataJob:\n type: gcp:dataflow:FlexTemplateJob\n name: big_data_job\n properties:\n name: dataflow-flextemplates-job-${bigDataJobNameSuffix.dec}\n region: ${region}\n containerSpecGcsPath: gs://my-bucket/templates/template.json\n skipWaitOnJobTermination: true\n parameters:\n inputSubscription: ${bigDataJobSubscriptionId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataflow jobs can be imported using the job `id` e.g.\n\n* `{{id}}`\n\nWhen using the `pulumi import` command, dataflow jobs can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataflow/job:Job default {{id}}\n```\n\n", + "description": "Creates a job on Dataflow, which is an implementation of Apache Beam running on Google Compute Engine. For more information see\nthe official documentation for\n[Beam](https://beam.apache.org) and [Dataflow](https://cloud.google.com/dataflow/).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bigDataJob = new gcp.dataflow.Job(\"big_data_job\", {\n name: \"dataflow-job\",\n templateGcsPath: \"gs://my-bucket/templates/template_file\",\n tempGcsLocation: \"gs://my-bucket/tmp_dir\",\n parameters: {\n foo: \"bar\",\n baz: \"qux\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbig_data_job = gcp.dataflow.Job(\"big_data_job\",\n name=\"dataflow-job\",\n template_gcs_path=\"gs://my-bucket/templates/template_file\",\n temp_gcs_location=\"gs://my-bucket/tmp_dir\",\n parameters={\n \"foo\": \"bar\",\n \"baz\": \"qux\",\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 bigDataJob = new Gcp.Dataflow.Job(\"big_data_job\", new()\n {\n Name = \"dataflow-job\",\n TemplateGcsPath = \"gs://my-bucket/templates/template_file\",\n TempGcsLocation = \"gs://my-bucket/tmp_dir\",\n Parameters = \n {\n { \"foo\", \"bar\" },\n { \"baz\", \"qux\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataflow\"\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 := dataflow.NewJob(ctx, \"big_data_job\", \u0026dataflow.JobArgs{\n\t\t\tName: pulumi.String(\"dataflow-job\"),\n\t\t\tTemplateGcsPath: pulumi.String(\"gs://my-bucket/templates/template_file\"),\n\t\t\tTempGcsLocation: pulumi.String(\"gs://my-bucket/tmp_dir\"),\n\t\t\tParameters: pulumi.Map{\n\t\t\t\t\"foo\": pulumi.Any(\"bar\"),\n\t\t\t\t\"baz\": pulumi.Any(\"qux\"),\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.dataflow.Job;\nimport com.pulumi.gcp.dataflow.JobArgs;\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 bigDataJob = new Job(\"bigDataJob\", JobArgs.builder()\n .name(\"dataflow-job\")\n .templateGcsPath(\"gs://my-bucket/templates/template_file\")\n .tempGcsLocation(\"gs://my-bucket/tmp_dir\")\n .parameters(Map.ofEntries(\n Map.entry(\"foo\", \"bar\"),\n Map.entry(\"baz\", \"qux\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bigDataJob:\n type: gcp:dataflow:Job\n name: big_data_job\n properties:\n name: dataflow-job\n templateGcsPath: gs://my-bucket/templates/template_file\n tempGcsLocation: gs://my-bucket/tmp_dir\n parameters:\n foo: bar\n baz: qux\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Streaming Job\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"dataflow-job1\"});\nconst bucket1 = new gcp.storage.Bucket(\"bucket1\", {\n name: \"tf-test-bucket1\",\n location: \"US\",\n forceDestroy: true,\n});\nconst bucket2 = new gcp.storage.Bucket(\"bucket2\", {\n name: \"tf-test-bucket2\",\n location: \"US\",\n forceDestroy: true,\n});\nconst pubsubStream = new gcp.dataflow.Job(\"pubsub_stream\", {\n name: \"tf-test-dataflow-job1\",\n templateGcsPath: \"gs://my-bucket/templates/template_file\",\n tempGcsLocation: \"gs://my-bucket/tmp_dir\",\n enableStreamingEngine: true,\n parameters: {\n inputFilePattern: pulumi.interpolate`${bucket1.url}/*.json`,\n outputTopic: topic.id,\n },\n transformNameMapping: {\n name: \"test_job\",\n env: \"test\",\n },\n onDelete: \"cancel\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntopic = gcp.pubsub.Topic(\"topic\", name=\"dataflow-job1\")\nbucket1 = gcp.storage.Bucket(\"bucket1\",\n name=\"tf-test-bucket1\",\n location=\"US\",\n force_destroy=True)\nbucket2 = gcp.storage.Bucket(\"bucket2\",\n name=\"tf-test-bucket2\",\n location=\"US\",\n force_destroy=True)\npubsub_stream = gcp.dataflow.Job(\"pubsub_stream\",\n name=\"tf-test-dataflow-job1\",\n template_gcs_path=\"gs://my-bucket/templates/template_file\",\n temp_gcs_location=\"gs://my-bucket/tmp_dir\",\n enable_streaming_engine=True,\n parameters={\n \"inputFilePattern\": bucket1.url.apply(lambda url: f\"{url}/*.json\"),\n \"outputTopic\": topic.id,\n },\n transform_name_mapping={\n \"name\": \"test_job\",\n \"env\": \"test\",\n },\n on_delete=\"cancel\")\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 Name = \"dataflow-job1\",\n });\n\n var bucket1 = new Gcp.Storage.Bucket(\"bucket1\", new()\n {\n Name = \"tf-test-bucket1\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var bucket2 = new Gcp.Storage.Bucket(\"bucket2\", new()\n {\n Name = \"tf-test-bucket2\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var pubsubStream = new Gcp.Dataflow.Job(\"pubsub_stream\", new()\n {\n Name = \"tf-test-dataflow-job1\",\n TemplateGcsPath = \"gs://my-bucket/templates/template_file\",\n TempGcsLocation = \"gs://my-bucket/tmp_dir\",\n EnableStreamingEngine = true,\n Parameters = \n {\n { \"inputFilePattern\", bucket1.Url.Apply(url =\u003e $\"{url}/*.json\") },\n { \"outputTopic\", topic.Id },\n },\n TransformNameMapping = \n {\n { \"name\", \"test_job\" },\n { \"env\", \"test\" },\n },\n OnDelete = \"cancel\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataflow\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"dataflow-job1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket1, err := storage.NewBucket(ctx, \"bucket1\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"tf-test-bucket1\"),\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 = storage.NewBucket(ctx, \"bucket2\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"tf-test-bucket2\"),\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 = dataflow.NewJob(ctx, \"pubsub_stream\", \u0026dataflow.JobArgs{\n\t\t\tName: pulumi.String(\"tf-test-dataflow-job1\"),\n\t\t\tTemplateGcsPath: pulumi.String(\"gs://my-bucket/templates/template_file\"),\n\t\t\tTempGcsLocation: pulumi.String(\"gs://my-bucket/tmp_dir\"),\n\t\t\tEnableStreamingEngine: pulumi.Bool(true),\n\t\t\tParameters: pulumi.Map{\n\t\t\t\t\"inputFilePattern\": interface{}(bucket1.Url.ApplyT(func(url string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"%v/*.json\", url), nil\n\t\t\t\t}).(pulumi.StringOutput)),\n\t\t\t\t\"outputTopic\": topic.ID(),\n\t\t\t},\n\t\t\tTransformNameMapping: pulumi.Map{\n\t\t\t\t\"name\": pulumi.Any(\"test_job\"),\n\t\t\t\t\"env\": pulumi.Any(\"test\"),\n\t\t\t},\n\t\t\tOnDelete: pulumi.String(\"cancel\"),\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.pubsub.TopicArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.dataflow.Job;\nimport com.pulumi.gcp.dataflow.JobArgs;\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.builder()\n .name(\"dataflow-job1\")\n .build());\n\n var bucket1 = new Bucket(\"bucket1\", BucketArgs.builder()\n .name(\"tf-test-bucket1\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var bucket2 = new Bucket(\"bucket2\", BucketArgs.builder()\n .name(\"tf-test-bucket2\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var pubsubStream = new Job(\"pubsubStream\", JobArgs.builder()\n .name(\"tf-test-dataflow-job1\")\n .templateGcsPath(\"gs://my-bucket/templates/template_file\")\n .tempGcsLocation(\"gs://my-bucket/tmp_dir\")\n .enableStreamingEngine(true)\n .parameters(Map.ofEntries(\n Map.entry(\"inputFilePattern\", bucket1.url().applyValue(url -\u003e String.format(\"%s/*.json\", url))),\n Map.entry(\"outputTopic\", topic.id())\n ))\n .transformNameMapping(Map.ofEntries(\n Map.entry(\"name\", \"test_job\"),\n Map.entry(\"env\", \"test\")\n ))\n .onDelete(\"cancel\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: dataflow-job1\n bucket1:\n type: gcp:storage:Bucket\n properties:\n name: tf-test-bucket1\n location: US\n forceDestroy: true\n bucket2:\n type: gcp:storage:Bucket\n properties:\n name: tf-test-bucket2\n location: US\n forceDestroy: true\n pubsubStream:\n type: gcp:dataflow:Job\n name: pubsub_stream\n properties:\n name: tf-test-dataflow-job1\n templateGcsPath: gs://my-bucket/templates/template_file\n tempGcsLocation: gs://my-bucket/tmp_dir\n enableStreamingEngine: true\n parameters:\n inputFilePattern: ${bucket1.url}/*.json\n outputTopic: ${topic.id}\n transformNameMapping:\n name: test_job\n env: test\n onDelete: cancel\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Note on \"destroy\" / \"apply\"\n\nThere are many types of Dataflow jobs. Some Dataflow jobs run constantly, getting new data from (e.g.) a GCS bucket, and outputting data continuously. Some jobs process a set amount of data then terminate. All jobs can fail while running due to programming errors or other issues. In this way, Dataflow jobs are different from most other Google resources.\n\nThe Dataflow resource is considered 'existing' while it is in a nonterminal state. If it reaches a terminal state (e.g. 'FAILED', 'COMPLETE', 'CANCELLED'), it will be recreated on the next 'apply'. This is as expected for jobs which run continuously, but may surprise users who use this resource for other kinds of Dataflow jobs.\n\nA Dataflow job which is 'destroyed' may be \"cancelled\" or \"drained\". If \"cancelled\", the job terminates - any data written remains where it is, but no new data will be processed. If \"drained\", no new data will enter the pipeline, but any data currently in the pipeline will finish being processed. The default is \"drain\". When `on_delete` is set to `\"drain\"` in the configuration, you may experience a long wait for your `pulumi destroy` to complete.\n\nYou can potentially short-circuit the wait by setting `skip_wait_on_job_termination` to `true`, but beware that unless you take active steps to ensure that the job `name` parameter changes between instances, the name will conflict and the launch of the new job will fail. One way to do this is with a random_id resource, for example:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst config = new pulumi.Config();\nconst bigDataJobSubscriptionId = config.get(\"bigDataJobSubscriptionId\") || \"projects/myproject/subscriptions/messages\";\nconst bigDataJobNameSuffix = new random.RandomId(\"big_data_job_name_suffix\", {\n byteLength: 4,\n keepers: {\n region: region,\n subscription_id: bigDataJobSubscriptionId,\n },\n});\nconst bigDataJob = new gcp.dataflow.FlexTemplateJob(\"big_data_job\", {\n name: pulumi.interpolate`dataflow-flextemplates-job-${bigDataJobNameSuffix.dec}`,\n region: region,\n containerSpecGcsPath: \"gs://my-bucket/templates/template.json\",\n skipWaitOnJobTermination: true,\n parameters: {\n inputSubscription: bigDataJobSubscriptionId,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nconfig = pulumi.Config()\nbig_data_job_subscription_id = config.get(\"bigDataJobSubscriptionId\")\nif big_data_job_subscription_id is None:\n big_data_job_subscription_id = \"projects/myproject/subscriptions/messages\"\nbig_data_job_name_suffix = random.RandomId(\"big_data_job_name_suffix\",\n byte_length=4,\n keepers={\n \"region\": region,\n \"subscription_id\": big_data_job_subscription_id,\n })\nbig_data_job = gcp.dataflow.FlexTemplateJob(\"big_data_job\",\n name=big_data_job_name_suffix.dec.apply(lambda dec: f\"dataflow-flextemplates-job-{dec}\"),\n region=region,\n container_spec_gcs_path=\"gs://my-bucket/templates/template.json\",\n skip_wait_on_job_termination=True,\n parameters={\n \"inputSubscription\": big_data_job_subscription_id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var bigDataJobSubscriptionId = config.Get(\"bigDataJobSubscriptionId\") ?? \"projects/myproject/subscriptions/messages\";\n var bigDataJobNameSuffix = new Random.RandomId(\"big_data_job_name_suffix\", new()\n {\n ByteLength = 4,\n Keepers = \n {\n { \"region\", region },\n { \"subscription_id\", bigDataJobSubscriptionId },\n },\n });\n\n var bigDataJob = new Gcp.Dataflow.FlexTemplateJob(\"big_data_job\", new()\n {\n Name = bigDataJobNameSuffix.Dec.Apply(dec =\u003e $\"dataflow-flextemplates-job-{dec}\"),\n Region = region,\n ContainerSpecGcsPath = \"gs://my-bucket/templates/template.json\",\n SkipWaitOnJobTermination = true,\n Parameters = \n {\n { \"inputSubscription\", bigDataJobSubscriptionId },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataflow\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tbigDataJobSubscriptionId := \"projects/myproject/subscriptions/messages\"\n\t\tif param := cfg.Get(\"bigDataJobSubscriptionId\"); param != \"\" {\n\t\t\tbigDataJobSubscriptionId = param\n\t\t}\n\t\tbigDataJobNameSuffix, err := random.NewRandomId(ctx, \"big_data_job_name_suffix\", \u0026random.RandomIdArgs{\n\t\t\tByteLength: pulumi.Int(4),\n\t\t\tKeepers: pulumi.StringMap{\n\t\t\t\t\"region\": pulumi.Any(region),\n\t\t\t\t\"subscription_id\": pulumi.String(bigDataJobSubscriptionId),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataflow.NewFlexTemplateJob(ctx, \"big_data_job\", \u0026dataflow.FlexTemplateJobArgs{\n\t\t\tName: bigDataJobNameSuffix.Dec.ApplyT(func(dec string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"dataflow-flextemplates-job-%v\", dec), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tRegion: pulumi.Any(region),\n\t\t\tContainerSpecGcsPath: pulumi.String(\"gs://my-bucket/templates/template.json\"),\n\t\t\tSkipWaitOnJobTermination: pulumi.Bool(true),\n\t\t\tParameters: pulumi.Map{\n\t\t\t\t\"inputSubscription\": pulumi.String(bigDataJobSubscriptionId),\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.random.RandomId;\nimport com.pulumi.random.RandomIdArgs;\nimport com.pulumi.gcp.dataflow.FlexTemplateJob;\nimport com.pulumi.gcp.dataflow.FlexTemplateJobArgs;\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 config = ctx.config();\n final var bigDataJobSubscriptionId = config.get(\"bigDataJobSubscriptionId\").orElse(\"projects/myproject/subscriptions/messages\");\n var bigDataJobNameSuffix = new RandomId(\"bigDataJobNameSuffix\", RandomIdArgs.builder()\n .byteLength(4)\n .keepers(Map.ofEntries(\n Map.entry(\"region\", region),\n Map.entry(\"subscription_id\", bigDataJobSubscriptionId)\n ))\n .build());\n\n var bigDataJob = new FlexTemplateJob(\"bigDataJob\", FlexTemplateJobArgs.builder()\n .name(bigDataJobNameSuffix.dec().applyValue(dec -\u003e String.format(\"dataflow-flextemplates-job-%s\", dec)))\n .region(region)\n .containerSpecGcsPath(\"gs://my-bucket/templates/template.json\")\n .skipWaitOnJobTermination(true)\n .parameters(Map.of(\"inputSubscription\", bigDataJobSubscriptionId))\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n bigDataJobSubscriptionId:\n type: string\n default: projects/myproject/subscriptions/messages\nresources:\n bigDataJobNameSuffix:\n type: random:RandomId\n name: big_data_job_name_suffix\n properties:\n byteLength: 4\n keepers:\n region: ${region}\n subscription_id: ${bigDataJobSubscriptionId}\n bigDataJob:\n type: gcp:dataflow:FlexTemplateJob\n name: big_data_job\n properties:\n name: dataflow-flextemplates-job-${bigDataJobNameSuffix.dec}\n region: ${region}\n containerSpecGcsPath: gs://my-bucket/templates/template.json\n skipWaitOnJobTermination: true\n parameters:\n inputSubscription: ${bigDataJobSubscriptionId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataflow jobs can be imported using the job `id` e.g.\n\n* `{{id}}`\n\nWhen using the `pulumi import` command, dataflow jobs can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataflow/job:Job default {{id}}\n```\n\n", "properties": { "additionalExperiments": { "type": "array", @@ -173019,7 +173019,7 @@ } }, "gcp:dataflow/pipeline:Pipeline": { - "description": "The main pipeline entity and all the necessary metadata for launching and managing linked jobs.\n\n\nTo get more information about Pipeline, see:\n\n* [API documentation](https://cloud.google.com/dataflow/docs/reference/data-pipelines/rest/v1/projects.locations.pipelines)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataflow)\n\n## Example Usage\n\n### Data Pipeline Pipeline\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serviceAccount = new gcp.serviceaccount.Account(\"service_account\", {\n accountId: \"my-account\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.dataflow.Pipeline(\"primary\", {\n name: \"my-pipeline\",\n displayName: \"my-pipeline\",\n type: \"PIPELINE_TYPE_BATCH\",\n state: \"STATE_ACTIVE\",\n region: \"us-central1\",\n workload: {\n dataflowLaunchTemplateRequest: {\n projectId: \"my-project\",\n gcsPath: \"gs://my-bucket/path\",\n launchParameters: {\n jobName: \"my-job\",\n parameters: {\n name: \"wrench\",\n },\n environment: {\n numWorkers: 5,\n maxWorkers: 5,\n zone: \"us-centra1-a\",\n serviceAccountEmail: serviceAccount.email,\n network: \"default\",\n tempLocation: \"gs://my-bucket/tmp_dir\",\n bypassTempDirValidation: false,\n machineType: \"E2\",\n additionalUserLabels: {\n context: \"test\",\n },\n workerRegion: \"us-central1\",\n workerZone: \"us-central1-a\",\n enableStreamingEngine: false,\n },\n update: false,\n transformNameMapping: {\n name: \"wrench\",\n },\n },\n location: \"us-central1\",\n },\n },\n scheduleInfo: {\n schedule: \"* */2 * * *\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservice_account = gcp.serviceaccount.Account(\"service_account\",\n account_id=\"my-account\",\n display_name=\"Service Account\")\nprimary = gcp.dataflow.Pipeline(\"primary\",\n name=\"my-pipeline\",\n display_name=\"my-pipeline\",\n type=\"PIPELINE_TYPE_BATCH\",\n state=\"STATE_ACTIVE\",\n region=\"us-central1\",\n workload={\n \"dataflowLaunchTemplateRequest\": {\n \"projectId\": \"my-project\",\n \"gcsPath\": \"gs://my-bucket/path\",\n \"launchParameters\": {\n \"jobName\": \"my-job\",\n \"parameters\": {\n \"name\": \"wrench\",\n },\n \"environment\": {\n \"numWorkers\": 5,\n \"maxWorkers\": 5,\n \"zone\": \"us-centra1-a\",\n \"serviceAccountEmail\": service_account.email,\n \"network\": \"default\",\n \"tempLocation\": \"gs://my-bucket/tmp_dir\",\n \"bypassTempDirValidation\": False,\n \"machineType\": \"E2\",\n \"additionalUserLabels\": {\n \"context\": \"test\",\n },\n \"workerRegion\": \"us-central1\",\n \"workerZone\": \"us-central1-a\",\n \"enableStreamingEngine\": False,\n },\n \"update\": False,\n \"transformNameMapping\": {\n \"name\": \"wrench\",\n },\n },\n \"location\": \"us-central1\",\n },\n },\n schedule_info={\n \"schedule\": \"* */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 serviceAccount = new Gcp.ServiceAccount.Account(\"service_account\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Dataflow.Pipeline(\"primary\", new()\n {\n Name = \"my-pipeline\",\n DisplayName = \"my-pipeline\",\n Type = \"PIPELINE_TYPE_BATCH\",\n State = \"STATE_ACTIVE\",\n Region = \"us-central1\",\n Workload = new Gcp.Dataflow.Inputs.PipelineWorkloadArgs\n {\n DataflowLaunchTemplateRequest = new Gcp.Dataflow.Inputs.PipelineWorkloadDataflowLaunchTemplateRequestArgs\n {\n ProjectId = \"my-project\",\n GcsPath = \"gs://my-bucket/path\",\n LaunchParameters = new Gcp.Dataflow.Inputs.PipelineWorkloadDataflowLaunchTemplateRequestLaunchParametersArgs\n {\n JobName = \"my-job\",\n Parameters = \n {\n { \"name\", \"wrench\" },\n },\n Environment = new Gcp.Dataflow.Inputs.PipelineWorkloadDataflowLaunchTemplateRequestLaunchParametersEnvironmentArgs\n {\n NumWorkers = 5,\n MaxWorkers = 5,\n Zone = \"us-centra1-a\",\n ServiceAccountEmail = serviceAccount.Email,\n Network = \"default\",\n TempLocation = \"gs://my-bucket/tmp_dir\",\n BypassTempDirValidation = false,\n MachineType = \"E2\",\n AdditionalUserLabels = \n {\n { \"context\", \"test\" },\n },\n WorkerRegion = \"us-central1\",\n WorkerZone = \"us-central1-a\",\n EnableStreamingEngine = false,\n },\n Update = false,\n TransformNameMapping = \n {\n { \"name\", \"wrench\" },\n },\n },\n Location = \"us-central1\",\n },\n },\n ScheduleInfo = new Gcp.Dataflow.Inputs.PipelineScheduleInfoArgs\n {\n Schedule = \"* */2 * * *\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataflow\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataflow.NewPipeline(ctx, \"primary\", \u0026dataflow.PipelineArgs{\n\t\t\tName: pulumi.String(\"my-pipeline\"),\n\t\t\tDisplayName: pulumi.String(\"my-pipeline\"),\n\t\t\tType: pulumi.String(\"PIPELINE_TYPE_BATCH\"),\n\t\t\tState: pulumi.String(\"STATE_ACTIVE\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tWorkload: \u0026dataflow.PipelineWorkloadArgs{\n\t\t\t\tDataflowLaunchTemplateRequest: \u0026dataflow.PipelineWorkloadDataflowLaunchTemplateRequestArgs{\n\t\t\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\t\t\tGcsPath: pulumi.String(\"gs://my-bucket/path\"),\n\t\t\t\t\tLaunchParameters: \u0026dataflow.PipelineWorkloadDataflowLaunchTemplateRequestLaunchParametersArgs{\n\t\t\t\t\t\tJobName: pulumi.String(\"my-job\"),\n\t\t\t\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tEnvironment: \u0026dataflow.PipelineWorkloadDataflowLaunchTemplateRequestLaunchParametersEnvironmentArgs{\n\t\t\t\t\t\t\tNumWorkers: pulumi.Int(5),\n\t\t\t\t\t\t\tMaxWorkers: pulumi.Int(5),\n\t\t\t\t\t\t\tZone: pulumi.String(\"us-centra1-a\"),\n\t\t\t\t\t\t\tServiceAccountEmail: serviceAccount.Email,\n\t\t\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tTempLocation: pulumi.String(\"gs://my-bucket/tmp_dir\"),\n\t\t\t\t\t\t\tBypassTempDirValidation: pulumi.Bool(false),\n\t\t\t\t\t\t\tMachineType: pulumi.String(\"E2\"),\n\t\t\t\t\t\t\tAdditionalUserLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"context\": pulumi.String(\"test\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tWorkerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t\tWorkerZone: pulumi.String(\"us-central1-a\"),\n\t\t\t\t\t\t\tEnableStreamingEngine: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tUpdate: pulumi.Bool(false),\n\t\t\t\t\t\tTransformNameMapping: pulumi.StringMap{\n\t\t\t\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tScheduleInfo: \u0026dataflow.PipelineScheduleInfoArgs{\n\t\t\t\tSchedule: pulumi.String(\"* */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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.dataflow.Pipeline;\nimport com.pulumi.gcp.dataflow.PipelineArgs;\nimport com.pulumi.gcp.dataflow.inputs.PipelineWorkloadArgs;\nimport com.pulumi.gcp.dataflow.inputs.PipelineWorkloadDataflowLaunchTemplateRequestArgs;\nimport com.pulumi.gcp.dataflow.inputs.PipelineWorkloadDataflowLaunchTemplateRequestLaunchParametersArgs;\nimport com.pulumi.gcp.dataflow.inputs.PipelineWorkloadDataflowLaunchTemplateRequestLaunchParametersEnvironmentArgs;\nimport com.pulumi.gcp.dataflow.inputs.PipelineScheduleInfoArgs;\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(\"Service Account\")\n .build());\n\n var primary = new Pipeline(\"primary\", PipelineArgs.builder()\n .name(\"my-pipeline\")\n .displayName(\"my-pipeline\")\n .type(\"PIPELINE_TYPE_BATCH\")\n .state(\"STATE_ACTIVE\")\n .region(\"us-central1\")\n .workload(PipelineWorkloadArgs.builder()\n .dataflowLaunchTemplateRequest(PipelineWorkloadDataflowLaunchTemplateRequestArgs.builder()\n .projectId(\"my-project\")\n .gcsPath(\"gs://my-bucket/path\")\n .launchParameters(PipelineWorkloadDataflowLaunchTemplateRequestLaunchParametersArgs.builder()\n .jobName(\"my-job\")\n .parameters(Map.of(\"name\", \"wrench\"))\n .environment(PipelineWorkloadDataflowLaunchTemplateRequestLaunchParametersEnvironmentArgs.builder()\n .numWorkers(5)\n .maxWorkers(5)\n .zone(\"us-centra1-a\")\n .serviceAccountEmail(serviceAccount.email())\n .network(\"default\")\n .tempLocation(\"gs://my-bucket/tmp_dir\")\n .bypassTempDirValidation(false)\n .machineType(\"E2\")\n .additionalUserLabels(Map.of(\"context\", \"test\"))\n .workerRegion(\"us-central1\")\n .workerZone(\"us-central1-a\")\n .enableStreamingEngine(\"false\")\n .build())\n .update(false)\n .transformNameMapping(Map.of(\"name\", \"wrench\"))\n .build())\n .location(\"us-central1\")\n .build())\n .build())\n .scheduleInfo(PipelineScheduleInfoArgs.builder()\n .schedule(\"* */2 * * *\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n serviceAccount:\n type: gcp:serviceaccount:Account\n name: service_account\n properties:\n accountId: my-account\n displayName: Service Account\n primary:\n type: gcp:dataflow:Pipeline\n properties:\n name: my-pipeline\n displayName: my-pipeline\n type: PIPELINE_TYPE_BATCH\n state: STATE_ACTIVE\n region: us-central1\n workload:\n dataflowLaunchTemplateRequest:\n projectId: my-project\n gcsPath: gs://my-bucket/path\n launchParameters:\n jobName: my-job\n parameters:\n name: wrench\n environment:\n numWorkers: 5\n maxWorkers: 5\n zone: us-centra1-a\n serviceAccountEmail: ${serviceAccount.email}\n network: default\n tempLocation: gs://my-bucket/tmp_dir\n bypassTempDirValidation: false\n machineType: E2\n additionalUserLabels:\n context: test\n workerRegion: us-central1\n workerZone: us-central1-a\n enableStreamingEngine: 'false'\n update: false\n transformNameMapping:\n name: wrench\n location: us-central1\n scheduleInfo:\n schedule: '* */2 * * *'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPipeline can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/pipelines/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Pipeline can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataflow/pipeline:Pipeline default projects/{{project}}/locations/{{region}}/pipelines/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataflow/pipeline:Pipeline default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataflow/pipeline:Pipeline default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataflow/pipeline:Pipeline default {{name}}\n```\n\n", + "description": "The main pipeline entity and all the necessary metadata for launching and managing linked jobs.\n\n\nTo get more information about Pipeline, see:\n\n* [API documentation](https://cloud.google.com/dataflow/docs/reference/data-pipelines/rest/v1/projects.locations.pipelines)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataflow)\n\n## Example Usage\n\n### Data Pipeline Pipeline\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serviceAccount = new gcp.serviceaccount.Account(\"service_account\", {\n accountId: \"my-account\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.dataflow.Pipeline(\"primary\", {\n name: \"my-pipeline\",\n displayName: \"my-pipeline\",\n type: \"PIPELINE_TYPE_BATCH\",\n state: \"STATE_ACTIVE\",\n region: \"us-central1\",\n workload: {\n dataflowLaunchTemplateRequest: {\n projectId: \"my-project\",\n gcsPath: \"gs://my-bucket/path\",\n launchParameters: {\n jobName: \"my-job\",\n parameters: {\n name: \"wrench\",\n },\n environment: {\n numWorkers: 5,\n maxWorkers: 5,\n zone: \"us-centra1-a\",\n serviceAccountEmail: serviceAccount.email,\n network: \"default\",\n tempLocation: \"gs://my-bucket/tmp_dir\",\n bypassTempDirValidation: false,\n machineType: \"E2\",\n additionalUserLabels: {\n context: \"test\",\n },\n workerRegion: \"us-central1\",\n workerZone: \"us-central1-a\",\n enableStreamingEngine: false,\n },\n update: false,\n transformNameMapping: {\n name: \"wrench\",\n },\n },\n location: \"us-central1\",\n },\n },\n scheduleInfo: {\n schedule: \"* */2 * * *\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservice_account = gcp.serviceaccount.Account(\"service_account\",\n account_id=\"my-account\",\n display_name=\"Service Account\")\nprimary = gcp.dataflow.Pipeline(\"primary\",\n name=\"my-pipeline\",\n display_name=\"my-pipeline\",\n type=\"PIPELINE_TYPE_BATCH\",\n state=\"STATE_ACTIVE\",\n region=\"us-central1\",\n workload={\n \"dataflow_launch_template_request\": {\n \"project_id\": \"my-project\",\n \"gcs_path\": \"gs://my-bucket/path\",\n \"launch_parameters\": {\n \"job_name\": \"my-job\",\n \"parameters\": {\n \"name\": \"wrench\",\n },\n \"environment\": {\n \"num_workers\": 5,\n \"max_workers\": 5,\n \"zone\": \"us-centra1-a\",\n \"service_account_email\": service_account.email,\n \"network\": \"default\",\n \"temp_location\": \"gs://my-bucket/tmp_dir\",\n \"bypass_temp_dir_validation\": False,\n \"machine_type\": \"E2\",\n \"additional_user_labels\": {\n \"context\": \"test\",\n },\n \"worker_region\": \"us-central1\",\n \"worker_zone\": \"us-central1-a\",\n \"enable_streaming_engine\": False,\n },\n \"update\": False,\n \"transform_name_mapping\": {\n \"name\": \"wrench\",\n },\n },\n \"location\": \"us-central1\",\n },\n },\n schedule_info={\n \"schedule\": \"* */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 serviceAccount = new Gcp.ServiceAccount.Account(\"service_account\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Dataflow.Pipeline(\"primary\", new()\n {\n Name = \"my-pipeline\",\n DisplayName = \"my-pipeline\",\n Type = \"PIPELINE_TYPE_BATCH\",\n State = \"STATE_ACTIVE\",\n Region = \"us-central1\",\n Workload = new Gcp.Dataflow.Inputs.PipelineWorkloadArgs\n {\n DataflowLaunchTemplateRequest = new Gcp.Dataflow.Inputs.PipelineWorkloadDataflowLaunchTemplateRequestArgs\n {\n ProjectId = \"my-project\",\n GcsPath = \"gs://my-bucket/path\",\n LaunchParameters = new Gcp.Dataflow.Inputs.PipelineWorkloadDataflowLaunchTemplateRequestLaunchParametersArgs\n {\n JobName = \"my-job\",\n Parameters = \n {\n { \"name\", \"wrench\" },\n },\n Environment = new Gcp.Dataflow.Inputs.PipelineWorkloadDataflowLaunchTemplateRequestLaunchParametersEnvironmentArgs\n {\n NumWorkers = 5,\n MaxWorkers = 5,\n Zone = \"us-centra1-a\",\n ServiceAccountEmail = serviceAccount.Email,\n Network = \"default\",\n TempLocation = \"gs://my-bucket/tmp_dir\",\n BypassTempDirValidation = false,\n MachineType = \"E2\",\n AdditionalUserLabels = \n {\n { \"context\", \"test\" },\n },\n WorkerRegion = \"us-central1\",\n WorkerZone = \"us-central1-a\",\n EnableStreamingEngine = false,\n },\n Update = false,\n TransformNameMapping = \n {\n { \"name\", \"wrench\" },\n },\n },\n Location = \"us-central1\",\n },\n },\n ScheduleInfo = new Gcp.Dataflow.Inputs.PipelineScheduleInfoArgs\n {\n Schedule = \"* */2 * * *\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataflow\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataflow.NewPipeline(ctx, \"primary\", \u0026dataflow.PipelineArgs{\n\t\t\tName: pulumi.String(\"my-pipeline\"),\n\t\t\tDisplayName: pulumi.String(\"my-pipeline\"),\n\t\t\tType: pulumi.String(\"PIPELINE_TYPE_BATCH\"),\n\t\t\tState: pulumi.String(\"STATE_ACTIVE\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tWorkload: \u0026dataflow.PipelineWorkloadArgs{\n\t\t\t\tDataflowLaunchTemplateRequest: \u0026dataflow.PipelineWorkloadDataflowLaunchTemplateRequestArgs{\n\t\t\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\t\t\tGcsPath: pulumi.String(\"gs://my-bucket/path\"),\n\t\t\t\t\tLaunchParameters: \u0026dataflow.PipelineWorkloadDataflowLaunchTemplateRequestLaunchParametersArgs{\n\t\t\t\t\t\tJobName: pulumi.String(\"my-job\"),\n\t\t\t\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tEnvironment: \u0026dataflow.PipelineWorkloadDataflowLaunchTemplateRequestLaunchParametersEnvironmentArgs{\n\t\t\t\t\t\t\tNumWorkers: pulumi.Int(5),\n\t\t\t\t\t\t\tMaxWorkers: pulumi.Int(5),\n\t\t\t\t\t\t\tZone: pulumi.String(\"us-centra1-a\"),\n\t\t\t\t\t\t\tServiceAccountEmail: serviceAccount.Email,\n\t\t\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tTempLocation: pulumi.String(\"gs://my-bucket/tmp_dir\"),\n\t\t\t\t\t\t\tBypassTempDirValidation: pulumi.Bool(false),\n\t\t\t\t\t\t\tMachineType: pulumi.String(\"E2\"),\n\t\t\t\t\t\t\tAdditionalUserLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"context\": pulumi.String(\"test\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tWorkerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t\tWorkerZone: pulumi.String(\"us-central1-a\"),\n\t\t\t\t\t\t\tEnableStreamingEngine: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tUpdate: pulumi.Bool(false),\n\t\t\t\t\t\tTransformNameMapping: pulumi.StringMap{\n\t\t\t\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tScheduleInfo: \u0026dataflow.PipelineScheduleInfoArgs{\n\t\t\t\tSchedule: pulumi.String(\"* */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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.dataflow.Pipeline;\nimport com.pulumi.gcp.dataflow.PipelineArgs;\nimport com.pulumi.gcp.dataflow.inputs.PipelineWorkloadArgs;\nimport com.pulumi.gcp.dataflow.inputs.PipelineWorkloadDataflowLaunchTemplateRequestArgs;\nimport com.pulumi.gcp.dataflow.inputs.PipelineWorkloadDataflowLaunchTemplateRequestLaunchParametersArgs;\nimport com.pulumi.gcp.dataflow.inputs.PipelineWorkloadDataflowLaunchTemplateRequestLaunchParametersEnvironmentArgs;\nimport com.pulumi.gcp.dataflow.inputs.PipelineScheduleInfoArgs;\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(\"Service Account\")\n .build());\n\n var primary = new Pipeline(\"primary\", PipelineArgs.builder()\n .name(\"my-pipeline\")\n .displayName(\"my-pipeline\")\n .type(\"PIPELINE_TYPE_BATCH\")\n .state(\"STATE_ACTIVE\")\n .region(\"us-central1\")\n .workload(PipelineWorkloadArgs.builder()\n .dataflowLaunchTemplateRequest(PipelineWorkloadDataflowLaunchTemplateRequestArgs.builder()\n .projectId(\"my-project\")\n .gcsPath(\"gs://my-bucket/path\")\n .launchParameters(PipelineWorkloadDataflowLaunchTemplateRequestLaunchParametersArgs.builder()\n .jobName(\"my-job\")\n .parameters(Map.of(\"name\", \"wrench\"))\n .environment(PipelineWorkloadDataflowLaunchTemplateRequestLaunchParametersEnvironmentArgs.builder()\n .numWorkers(5)\n .maxWorkers(5)\n .zone(\"us-centra1-a\")\n .serviceAccountEmail(serviceAccount.email())\n .network(\"default\")\n .tempLocation(\"gs://my-bucket/tmp_dir\")\n .bypassTempDirValidation(false)\n .machineType(\"E2\")\n .additionalUserLabels(Map.of(\"context\", \"test\"))\n .workerRegion(\"us-central1\")\n .workerZone(\"us-central1-a\")\n .enableStreamingEngine(\"false\")\n .build())\n .update(false)\n .transformNameMapping(Map.of(\"name\", \"wrench\"))\n .build())\n .location(\"us-central1\")\n .build())\n .build())\n .scheduleInfo(PipelineScheduleInfoArgs.builder()\n .schedule(\"* */2 * * *\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n serviceAccount:\n type: gcp:serviceaccount:Account\n name: service_account\n properties:\n accountId: my-account\n displayName: Service Account\n primary:\n type: gcp:dataflow:Pipeline\n properties:\n name: my-pipeline\n displayName: my-pipeline\n type: PIPELINE_TYPE_BATCH\n state: STATE_ACTIVE\n region: us-central1\n workload:\n dataflowLaunchTemplateRequest:\n projectId: my-project\n gcsPath: gs://my-bucket/path\n launchParameters:\n jobName: my-job\n parameters:\n name: wrench\n environment:\n numWorkers: 5\n maxWorkers: 5\n zone: us-centra1-a\n serviceAccountEmail: ${serviceAccount.email}\n network: default\n tempLocation: gs://my-bucket/tmp_dir\n bypassTempDirValidation: false\n machineType: E2\n additionalUserLabels:\n context: test\n workerRegion: us-central1\n workerZone: us-central1-a\n enableStreamingEngine: 'false'\n update: false\n transformNameMapping:\n name: wrench\n location: us-central1\n scheduleInfo:\n schedule: '* */2 * * *'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPipeline can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/pipelines/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Pipeline can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataflow/pipeline:Pipeline default projects/{{project}}/locations/{{region}}/pipelines/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataflow/pipeline:Pipeline default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataflow/pipeline:Pipeline default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataflow/pipeline:Pipeline default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -173209,7 +173209,7 @@ } }, "gcp:dataform/repository:Repository": { - "description": "## Example Usage\n\n### Dataform Repository\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"my-secret\",\n replication: {\n auto: {},\n },\n});\nconst secretVersion = new gcp.secretmanager.SecretVersion(\"secret_version\", {\n secret: secret.id,\n secretData: \"secret-data\",\n});\nconst dataformRepository = new gcp.dataform.Repository(\"dataform_repository\", {\n name: \"dataform_repository\",\n displayName: \"dataform_repository\",\n npmrcEnvironmentVariablesSecretVersion: secretVersion.id,\n labels: {\n label_foo1: \"label-bar1\",\n },\n gitRemoteSettings: {\n url: \"https://github.com/OWNER/REPOSITORY.git\",\n defaultBranch: \"main\",\n authenticationTokenSecretVersion: secretVersion.id,\n },\n workspaceCompilationOverrides: {\n defaultDatabase: \"database\",\n schemaSuffix: \"_suffix\",\n tablePrefix: \"prefix_\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"my-secret\",\n replication={\n \"auto\": {},\n })\nsecret_version = gcp.secretmanager.SecretVersion(\"secret_version\",\n secret=secret.id,\n secret_data=\"secret-data\")\ndataform_repository = gcp.dataform.Repository(\"dataform_repository\",\n name=\"dataform_repository\",\n display_name=\"dataform_repository\",\n npmrc_environment_variables_secret_version=secret_version.id,\n labels={\n \"label_foo1\": \"label-bar1\",\n },\n git_remote_settings={\n \"url\": \"https://github.com/OWNER/REPOSITORY.git\",\n \"defaultBranch\": \"main\",\n \"authenticationTokenSecretVersion\": secret_version.id,\n },\n workspace_compilation_overrides={\n \"defaultDatabase\": \"database\",\n \"schemaSuffix\": \"_suffix\",\n \"tablePrefix\": \"prefix_\",\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 secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"my-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secretVersion = new Gcp.SecretManager.SecretVersion(\"secret_version\", new()\n {\n Secret = secret.Id,\n SecretData = \"secret-data\",\n });\n\n var dataformRepository = new Gcp.Dataform.Repository(\"dataform_repository\", new()\n {\n Name = \"dataform_repository\",\n DisplayName = \"dataform_repository\",\n NpmrcEnvironmentVariablesSecretVersion = secretVersion.Id,\n Labels = \n {\n { \"label_foo1\", \"label-bar1\" },\n },\n GitRemoteSettings = new Gcp.Dataform.Inputs.RepositoryGitRemoteSettingsArgs\n {\n Url = \"https://github.com/OWNER/REPOSITORY.git\",\n DefaultBranch = \"main\",\n AuthenticationTokenSecretVersion = secretVersion.Id,\n },\n WorkspaceCompilationOverrides = new Gcp.Dataform.Inputs.RepositoryWorkspaceCompilationOverridesArgs\n {\n DefaultDatabase = \"database\",\n SchemaSuffix = \"_suffix\",\n TablePrefix = \"prefix_\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataform\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"my-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataform.NewRepository(ctx, \"dataform_repository\", \u0026dataform.RepositoryArgs{\n\t\t\tName: pulumi.String(\"dataform_repository\"),\n\t\t\tDisplayName: pulumi.String(\"dataform_repository\"),\n\t\t\tNpmrcEnvironmentVariablesSecretVersion: secretVersion.ID(),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label_foo1\": pulumi.String(\"label-bar1\"),\n\t\t\t},\n\t\t\tGitRemoteSettings: \u0026dataform.RepositoryGitRemoteSettingsArgs{\n\t\t\t\tUrl: pulumi.String(\"https://github.com/OWNER/REPOSITORY.git\"),\n\t\t\t\tDefaultBranch: pulumi.String(\"main\"),\n\t\t\t\tAuthenticationTokenSecretVersion: secretVersion.ID(),\n\t\t\t},\n\t\t\tWorkspaceCompilationOverrides: \u0026dataform.RepositoryWorkspaceCompilationOverridesArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"database\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"_suffix\"),\n\t\t\t\tTablePrefix: pulumi.String(\"prefix_\"),\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.dataform.Repository;\nimport com.pulumi.gcp.dataform.RepositoryArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryGitRemoteSettingsArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryWorkspaceCompilationOverridesArgs;\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 secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"my-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secretVersion = new SecretVersion(\"secretVersion\", SecretVersionArgs.builder()\n .secret(secret.id())\n .secretData(\"secret-data\")\n .build());\n\n var dataformRepository = new Repository(\"dataformRepository\", RepositoryArgs.builder()\n .name(\"dataform_repository\")\n .displayName(\"dataform_repository\")\n .npmrcEnvironmentVariablesSecretVersion(secretVersion.id())\n .labels(Map.of(\"label_foo1\", \"label-bar1\"))\n .gitRemoteSettings(RepositoryGitRemoteSettingsArgs.builder()\n .url(\"https://github.com/OWNER/REPOSITORY.git\")\n .defaultBranch(\"main\")\n .authenticationTokenSecretVersion(secretVersion.id())\n .build())\n .workspaceCompilationOverrides(RepositoryWorkspaceCompilationOverridesArgs.builder()\n .defaultDatabase(\"database\")\n .schemaSuffix(\"_suffix\")\n .tablePrefix(\"prefix_\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: my-secret\n replication:\n auto: {}\n secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret_version\n properties:\n secret: ${secret.id}\n secretData: secret-data\n dataformRepository:\n type: gcp:dataform:Repository\n name: dataform_repository\n properties:\n name: dataform_repository\n displayName: dataform_repository\n npmrcEnvironmentVariablesSecretVersion: ${secretVersion.id}\n labels:\n label_foo1: label-bar1\n gitRemoteSettings:\n url: https://github.com/OWNER/REPOSITORY.git\n defaultBranch: main\n authenticationTokenSecretVersion: ${secretVersion.id}\n workspaceCompilationOverrides:\n defaultDatabase: database\n schemaSuffix: _suffix\n tablePrefix: prefix_\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/repositories/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataform/repository:Repository default projects/{{project}}/locations/{{region}}/repositories/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repository:Repository default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repository:Repository default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repository:Repository default {{name}}\n```\n\n", + "description": "## Example Usage\n\n### Dataform Repository\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"my-secret\",\n replication: {\n auto: {},\n },\n});\nconst secretVersion = new gcp.secretmanager.SecretVersion(\"secret_version\", {\n secret: secret.id,\n secretData: \"secret-data\",\n});\nconst dataformRepository = new gcp.dataform.Repository(\"dataform_repository\", {\n name: \"dataform_repository\",\n displayName: \"dataform_repository\",\n npmrcEnvironmentVariablesSecretVersion: secretVersion.id,\n labels: {\n label_foo1: \"label-bar1\",\n },\n gitRemoteSettings: {\n url: \"https://github.com/OWNER/REPOSITORY.git\",\n defaultBranch: \"main\",\n authenticationTokenSecretVersion: secretVersion.id,\n },\n workspaceCompilationOverrides: {\n defaultDatabase: \"database\",\n schemaSuffix: \"_suffix\",\n tablePrefix: \"prefix_\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"my-secret\",\n replication={\n \"auto\": {},\n })\nsecret_version = gcp.secretmanager.SecretVersion(\"secret_version\",\n secret=secret.id,\n secret_data=\"secret-data\")\ndataform_repository = gcp.dataform.Repository(\"dataform_repository\",\n name=\"dataform_repository\",\n display_name=\"dataform_repository\",\n npmrc_environment_variables_secret_version=secret_version.id,\n labels={\n \"label_foo1\": \"label-bar1\",\n },\n git_remote_settings={\n \"url\": \"https://github.com/OWNER/REPOSITORY.git\",\n \"default_branch\": \"main\",\n \"authentication_token_secret_version\": secret_version.id,\n },\n workspace_compilation_overrides={\n \"default_database\": \"database\",\n \"schema_suffix\": \"_suffix\",\n \"table_prefix\": \"prefix_\",\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 secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"my-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secretVersion = new Gcp.SecretManager.SecretVersion(\"secret_version\", new()\n {\n Secret = secret.Id,\n SecretData = \"secret-data\",\n });\n\n var dataformRepository = new Gcp.Dataform.Repository(\"dataform_repository\", new()\n {\n Name = \"dataform_repository\",\n DisplayName = \"dataform_repository\",\n NpmrcEnvironmentVariablesSecretVersion = secretVersion.Id,\n Labels = \n {\n { \"label_foo1\", \"label-bar1\" },\n },\n GitRemoteSettings = new Gcp.Dataform.Inputs.RepositoryGitRemoteSettingsArgs\n {\n Url = \"https://github.com/OWNER/REPOSITORY.git\",\n DefaultBranch = \"main\",\n AuthenticationTokenSecretVersion = secretVersion.Id,\n },\n WorkspaceCompilationOverrides = new Gcp.Dataform.Inputs.RepositoryWorkspaceCompilationOverridesArgs\n {\n DefaultDatabase = \"database\",\n SchemaSuffix = \"_suffix\",\n TablePrefix = \"prefix_\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataform\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"my-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataform.NewRepository(ctx, \"dataform_repository\", \u0026dataform.RepositoryArgs{\n\t\t\tName: pulumi.String(\"dataform_repository\"),\n\t\t\tDisplayName: pulumi.String(\"dataform_repository\"),\n\t\t\tNpmrcEnvironmentVariablesSecretVersion: secretVersion.ID(),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label_foo1\": pulumi.String(\"label-bar1\"),\n\t\t\t},\n\t\t\tGitRemoteSettings: \u0026dataform.RepositoryGitRemoteSettingsArgs{\n\t\t\t\tUrl: pulumi.String(\"https://github.com/OWNER/REPOSITORY.git\"),\n\t\t\t\tDefaultBranch: pulumi.String(\"main\"),\n\t\t\t\tAuthenticationTokenSecretVersion: secretVersion.ID(),\n\t\t\t},\n\t\t\tWorkspaceCompilationOverrides: \u0026dataform.RepositoryWorkspaceCompilationOverridesArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"database\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"_suffix\"),\n\t\t\t\tTablePrefix: pulumi.String(\"prefix_\"),\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.dataform.Repository;\nimport com.pulumi.gcp.dataform.RepositoryArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryGitRemoteSettingsArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryWorkspaceCompilationOverridesArgs;\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 secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"my-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secretVersion = new SecretVersion(\"secretVersion\", SecretVersionArgs.builder()\n .secret(secret.id())\n .secretData(\"secret-data\")\n .build());\n\n var dataformRepository = new Repository(\"dataformRepository\", RepositoryArgs.builder()\n .name(\"dataform_repository\")\n .displayName(\"dataform_repository\")\n .npmrcEnvironmentVariablesSecretVersion(secretVersion.id())\n .labels(Map.of(\"label_foo1\", \"label-bar1\"))\n .gitRemoteSettings(RepositoryGitRemoteSettingsArgs.builder()\n .url(\"https://github.com/OWNER/REPOSITORY.git\")\n .defaultBranch(\"main\")\n .authenticationTokenSecretVersion(secretVersion.id())\n .build())\n .workspaceCompilationOverrides(RepositoryWorkspaceCompilationOverridesArgs.builder()\n .defaultDatabase(\"database\")\n .schemaSuffix(\"_suffix\")\n .tablePrefix(\"prefix_\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: my-secret\n replication:\n auto: {}\n secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret_version\n properties:\n secret: ${secret.id}\n secretData: secret-data\n dataformRepository:\n type: gcp:dataform:Repository\n name: dataform_repository\n properties:\n name: dataform_repository\n displayName: dataform_repository\n npmrcEnvironmentVariablesSecretVersion: ${secretVersion.id}\n labels:\n label_foo1: label-bar1\n gitRemoteSettings:\n url: https://github.com/OWNER/REPOSITORY.git\n defaultBranch: main\n authenticationTokenSecretVersion: ${secretVersion.id}\n workspaceCompilationOverrides:\n defaultDatabase: database\n schemaSuffix: _suffix\n tablePrefix: prefix_\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/repositories/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataform/repository:Repository default projects/{{project}}/locations/{{region}}/repositories/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repository:Repository default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repository:Repository default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repository:Repository default {{name}}\n```\n\n", "properties": { "displayName": { "type": "string", @@ -173655,7 +173655,7 @@ } }, "gcp:dataform/repositoryReleaseConfig:RepositoryReleaseConfig": { - "description": "## Example Usage\n\n### Dataform Repository Release Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst gitRepository = new gcp.sourcerepo.Repository(\"git_repository\", {name: \"my/repository\"});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"my_secret\",\n replication: {\n auto: {},\n },\n});\nconst secretVersion = new gcp.secretmanager.SecretVersion(\"secret_version\", {\n secret: secret.id,\n secretData: \"secret-data\",\n});\nconst repository = new gcp.dataform.Repository(\"repository\", {\n name: \"dataform_repository\",\n region: \"us-central1\",\n gitRemoteSettings: {\n url: gitRepository.url,\n defaultBranch: \"main\",\n authenticationTokenSecretVersion: secretVersion.id,\n },\n workspaceCompilationOverrides: {\n defaultDatabase: \"database\",\n schemaSuffix: \"_suffix\",\n tablePrefix: \"prefix_\",\n },\n});\nconst release = new gcp.dataform.RepositoryReleaseConfig(\"release\", {\n project: repository.project,\n region: repository.region,\n repository: repository.name,\n name: \"my_release\",\n gitCommitish: \"main\",\n cronSchedule: \"0 7 * * *\",\n timeZone: \"America/New_York\",\n codeCompilationConfig: {\n defaultDatabase: \"gcp-example-project\",\n defaultSchema: \"example-dataset\",\n defaultLocation: \"us-central1\",\n assertionSchema: \"example-assertion-dataset\",\n databaseSuffix: \"\",\n schemaSuffix: \"\",\n tablePrefix: \"\",\n vars: {\n var1: \"value\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngit_repository = gcp.sourcerepo.Repository(\"git_repository\", name=\"my/repository\")\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"my_secret\",\n replication={\n \"auto\": {},\n })\nsecret_version = gcp.secretmanager.SecretVersion(\"secret_version\",\n secret=secret.id,\n secret_data=\"secret-data\")\nrepository = gcp.dataform.Repository(\"repository\",\n name=\"dataform_repository\",\n region=\"us-central1\",\n git_remote_settings={\n \"url\": git_repository.url,\n \"defaultBranch\": \"main\",\n \"authenticationTokenSecretVersion\": secret_version.id,\n },\n workspace_compilation_overrides={\n \"defaultDatabase\": \"database\",\n \"schemaSuffix\": \"_suffix\",\n \"tablePrefix\": \"prefix_\",\n })\nrelease = gcp.dataform.RepositoryReleaseConfig(\"release\",\n project=repository.project,\n region=repository.region,\n repository=repository.name,\n name=\"my_release\",\n git_commitish=\"main\",\n cron_schedule=\"0 7 * * *\",\n time_zone=\"America/New_York\",\n code_compilation_config={\n \"defaultDatabase\": \"gcp-example-project\",\n \"defaultSchema\": \"example-dataset\",\n \"defaultLocation\": \"us-central1\",\n \"assertionSchema\": \"example-assertion-dataset\",\n \"databaseSuffix\": \"\",\n \"schemaSuffix\": \"\",\n \"tablePrefix\": \"\",\n \"vars\": {\n \"var1\": \"value\",\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 gitRepository = new Gcp.SourceRepo.Repository(\"git_repository\", new()\n {\n Name = \"my/repository\",\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"my_secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secretVersion = new Gcp.SecretManager.SecretVersion(\"secret_version\", new()\n {\n Secret = secret.Id,\n SecretData = \"secret-data\",\n });\n\n var repository = new Gcp.Dataform.Repository(\"repository\", new()\n {\n Name = \"dataform_repository\",\n Region = \"us-central1\",\n GitRemoteSettings = new Gcp.Dataform.Inputs.RepositoryGitRemoteSettingsArgs\n {\n Url = gitRepository.Url,\n DefaultBranch = \"main\",\n AuthenticationTokenSecretVersion = secretVersion.Id,\n },\n WorkspaceCompilationOverrides = new Gcp.Dataform.Inputs.RepositoryWorkspaceCompilationOverridesArgs\n {\n DefaultDatabase = \"database\",\n SchemaSuffix = \"_suffix\",\n TablePrefix = \"prefix_\",\n },\n });\n\n var release = new Gcp.Dataform.RepositoryReleaseConfig(\"release\", new()\n {\n Project = repository.Project,\n Region = repository.Region,\n Repository = repository.Name,\n Name = \"my_release\",\n GitCommitish = \"main\",\n CronSchedule = \"0 7 * * *\",\n TimeZone = \"America/New_York\",\n CodeCompilationConfig = new Gcp.Dataform.Inputs.RepositoryReleaseConfigCodeCompilationConfigArgs\n {\n DefaultDatabase = \"gcp-example-project\",\n DefaultSchema = \"example-dataset\",\n DefaultLocation = \"us-central1\",\n AssertionSchema = \"example-assertion-dataset\",\n DatabaseSuffix = \"\",\n SchemaSuffix = \"\",\n TablePrefix = \"\",\n Vars = \n {\n { \"var1\", \"value\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataform\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sourcerepo\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgitRepository, err := sourcerepo.NewRepository(ctx, \"git_repository\", \u0026sourcerepo.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my/repository\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"my_secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trepository, err := dataform.NewRepository(ctx, \"repository\", \u0026dataform.RepositoryArgs{\n\t\t\tName: pulumi.String(\"dataform_repository\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tGitRemoteSettings: \u0026dataform.RepositoryGitRemoteSettingsArgs{\n\t\t\t\tUrl: gitRepository.Url,\n\t\t\t\tDefaultBranch: pulumi.String(\"main\"),\n\t\t\t\tAuthenticationTokenSecretVersion: secretVersion.ID(),\n\t\t\t},\n\t\t\tWorkspaceCompilationOverrides: \u0026dataform.RepositoryWorkspaceCompilationOverridesArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"database\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"_suffix\"),\n\t\t\t\tTablePrefix: pulumi.String(\"prefix_\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataform.NewRepositoryReleaseConfig(ctx, \"release\", \u0026dataform.RepositoryReleaseConfigArgs{\n\t\t\tProject: repository.Project,\n\t\t\tRegion: repository.Region,\n\t\t\tRepository: repository.Name,\n\t\t\tName: pulumi.String(\"my_release\"),\n\t\t\tGitCommitish: pulumi.String(\"main\"),\n\t\t\tCronSchedule: pulumi.String(\"0 7 * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tCodeCompilationConfig: \u0026dataform.RepositoryReleaseConfigCodeCompilationConfigArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"gcp-example-project\"),\n\t\t\t\tDefaultSchema: pulumi.String(\"example-dataset\"),\n\t\t\t\tDefaultLocation: pulumi.String(\"us-central1\"),\n\t\t\t\tAssertionSchema: pulumi.String(\"example-assertion-dataset\"),\n\t\t\t\tDatabaseSuffix: pulumi.String(\"\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"\"),\n\t\t\t\tTablePrefix: pulumi.String(\"\"),\n\t\t\t\tVars: pulumi.StringMap{\n\t\t\t\t\t\"var1\": pulumi.String(\"value\"),\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.sourcerepo.Repository;\nimport com.pulumi.gcp.sourcerepo.RepositoryArgs;\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.dataform.Repository;\nimport com.pulumi.gcp.dataform.RepositoryArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryGitRemoteSettingsArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryWorkspaceCompilationOverridesArgs;\nimport com.pulumi.gcp.dataform.RepositoryReleaseConfig;\nimport com.pulumi.gcp.dataform.RepositoryReleaseConfigArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryReleaseConfigCodeCompilationConfigArgs;\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 gitRepository = new Repository(\"gitRepository\", RepositoryArgs.builder()\n .name(\"my/repository\")\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"my_secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secretVersion = new SecretVersion(\"secretVersion\", SecretVersionArgs.builder()\n .secret(secret.id())\n .secretData(\"secret-data\")\n .build());\n\n var repository = new Repository(\"repository\", RepositoryArgs.builder()\n .name(\"dataform_repository\")\n .region(\"us-central1\")\n .gitRemoteSettings(RepositoryGitRemoteSettingsArgs.builder()\n .url(gitRepository.url())\n .defaultBranch(\"main\")\n .authenticationTokenSecretVersion(secretVersion.id())\n .build())\n .workspaceCompilationOverrides(RepositoryWorkspaceCompilationOverridesArgs.builder()\n .defaultDatabase(\"database\")\n .schemaSuffix(\"_suffix\")\n .tablePrefix(\"prefix_\")\n .build())\n .build());\n\n var release = new RepositoryReleaseConfig(\"release\", RepositoryReleaseConfigArgs.builder()\n .project(repository.project())\n .region(repository.region())\n .repository(repository.name())\n .name(\"my_release\")\n .gitCommitish(\"main\")\n .cronSchedule(\"0 7 * * *\")\n .timeZone(\"America/New_York\")\n .codeCompilationConfig(RepositoryReleaseConfigCodeCompilationConfigArgs.builder()\n .defaultDatabase(\"gcp-example-project\")\n .defaultSchema(\"example-dataset\")\n .defaultLocation(\"us-central1\")\n .assertionSchema(\"example-assertion-dataset\")\n .databaseSuffix(\"\")\n .schemaSuffix(\"\")\n .tablePrefix(\"\")\n .vars(Map.of(\"var1\", \"value\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n gitRepository:\n type: gcp:sourcerepo:Repository\n name: git_repository\n properties:\n name: my/repository\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: my_secret\n replication:\n auto: {}\n secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret_version\n properties:\n secret: ${secret.id}\n secretData: secret-data\n repository:\n type: gcp:dataform:Repository\n properties:\n name: dataform_repository\n region: us-central1\n gitRemoteSettings:\n url: ${gitRepository.url}\n defaultBranch: main\n authenticationTokenSecretVersion: ${secretVersion.id}\n workspaceCompilationOverrides:\n defaultDatabase: database\n schemaSuffix: _suffix\n tablePrefix: prefix_\n release:\n type: gcp:dataform:RepositoryReleaseConfig\n properties:\n project: ${repository.project}\n region: ${repository.region}\n repository: ${repository.name}\n name: my_release\n gitCommitish: main\n cronSchedule: 0 7 * * *\n timeZone: America/New_York\n codeCompilationConfig:\n defaultDatabase: gcp-example-project\n defaultSchema: example-dataset\n defaultLocation: us-central1\n assertionSchema: example-assertion-dataset\n databaseSuffix:\n schemaSuffix:\n tablePrefix:\n vars:\n var1: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepositoryReleaseConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/repositories/{{repository}}/releaseConfigs/{{name}}`\n\n* `{{project}}/{{region}}/{{repository}}/{{name}}`\n\n* `{{region}}/{{repository}}/{{name}}`\n\n* `{{repository}}/{{name}}`\n\nWhen using the `pulumi import` command, RepositoryReleaseConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataform/repositoryReleaseConfig:RepositoryReleaseConfig default projects/{{project}}/locations/{{region}}/repositories/{{repository}}/releaseConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryReleaseConfig:RepositoryReleaseConfig default {{project}}/{{region}}/{{repository}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryReleaseConfig:RepositoryReleaseConfig default {{region}}/{{repository}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryReleaseConfig:RepositoryReleaseConfig default {{repository}}/{{name}}\n```\n\n", + "description": "## Example Usage\n\n### Dataform Repository Release Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst gitRepository = new gcp.sourcerepo.Repository(\"git_repository\", {name: \"my/repository\"});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"my_secret\",\n replication: {\n auto: {},\n },\n});\nconst secretVersion = new gcp.secretmanager.SecretVersion(\"secret_version\", {\n secret: secret.id,\n secretData: \"secret-data\",\n});\nconst repository = new gcp.dataform.Repository(\"repository\", {\n name: \"dataform_repository\",\n region: \"us-central1\",\n gitRemoteSettings: {\n url: gitRepository.url,\n defaultBranch: \"main\",\n authenticationTokenSecretVersion: secretVersion.id,\n },\n workspaceCompilationOverrides: {\n defaultDatabase: \"database\",\n schemaSuffix: \"_suffix\",\n tablePrefix: \"prefix_\",\n },\n});\nconst release = new gcp.dataform.RepositoryReleaseConfig(\"release\", {\n project: repository.project,\n region: repository.region,\n repository: repository.name,\n name: \"my_release\",\n gitCommitish: \"main\",\n cronSchedule: \"0 7 * * *\",\n timeZone: \"America/New_York\",\n codeCompilationConfig: {\n defaultDatabase: \"gcp-example-project\",\n defaultSchema: \"example-dataset\",\n defaultLocation: \"us-central1\",\n assertionSchema: \"example-assertion-dataset\",\n databaseSuffix: \"\",\n schemaSuffix: \"\",\n tablePrefix: \"\",\n vars: {\n var1: \"value\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngit_repository = gcp.sourcerepo.Repository(\"git_repository\", name=\"my/repository\")\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"my_secret\",\n replication={\n \"auto\": {},\n })\nsecret_version = gcp.secretmanager.SecretVersion(\"secret_version\",\n secret=secret.id,\n secret_data=\"secret-data\")\nrepository = gcp.dataform.Repository(\"repository\",\n name=\"dataform_repository\",\n region=\"us-central1\",\n git_remote_settings={\n \"url\": git_repository.url,\n \"default_branch\": \"main\",\n \"authentication_token_secret_version\": secret_version.id,\n },\n workspace_compilation_overrides={\n \"default_database\": \"database\",\n \"schema_suffix\": \"_suffix\",\n \"table_prefix\": \"prefix_\",\n })\nrelease = gcp.dataform.RepositoryReleaseConfig(\"release\",\n project=repository.project,\n region=repository.region,\n repository=repository.name,\n name=\"my_release\",\n git_commitish=\"main\",\n cron_schedule=\"0 7 * * *\",\n time_zone=\"America/New_York\",\n code_compilation_config={\n \"default_database\": \"gcp-example-project\",\n \"default_schema\": \"example-dataset\",\n \"default_location\": \"us-central1\",\n \"assertion_schema\": \"example-assertion-dataset\",\n \"database_suffix\": \"\",\n \"schema_suffix\": \"\",\n \"table_prefix\": \"\",\n \"vars\": {\n \"var1\": \"value\",\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 gitRepository = new Gcp.SourceRepo.Repository(\"git_repository\", new()\n {\n Name = \"my/repository\",\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"my_secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secretVersion = new Gcp.SecretManager.SecretVersion(\"secret_version\", new()\n {\n Secret = secret.Id,\n SecretData = \"secret-data\",\n });\n\n var repository = new Gcp.Dataform.Repository(\"repository\", new()\n {\n Name = \"dataform_repository\",\n Region = \"us-central1\",\n GitRemoteSettings = new Gcp.Dataform.Inputs.RepositoryGitRemoteSettingsArgs\n {\n Url = gitRepository.Url,\n DefaultBranch = \"main\",\n AuthenticationTokenSecretVersion = secretVersion.Id,\n },\n WorkspaceCompilationOverrides = new Gcp.Dataform.Inputs.RepositoryWorkspaceCompilationOverridesArgs\n {\n DefaultDatabase = \"database\",\n SchemaSuffix = \"_suffix\",\n TablePrefix = \"prefix_\",\n },\n });\n\n var release = new Gcp.Dataform.RepositoryReleaseConfig(\"release\", new()\n {\n Project = repository.Project,\n Region = repository.Region,\n Repository = repository.Name,\n Name = \"my_release\",\n GitCommitish = \"main\",\n CronSchedule = \"0 7 * * *\",\n TimeZone = \"America/New_York\",\n CodeCompilationConfig = new Gcp.Dataform.Inputs.RepositoryReleaseConfigCodeCompilationConfigArgs\n {\n DefaultDatabase = \"gcp-example-project\",\n DefaultSchema = \"example-dataset\",\n DefaultLocation = \"us-central1\",\n AssertionSchema = \"example-assertion-dataset\",\n DatabaseSuffix = \"\",\n SchemaSuffix = \"\",\n TablePrefix = \"\",\n Vars = \n {\n { \"var1\", \"value\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataform\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sourcerepo\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgitRepository, err := sourcerepo.NewRepository(ctx, \"git_repository\", \u0026sourcerepo.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my/repository\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"my_secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trepository, err := dataform.NewRepository(ctx, \"repository\", \u0026dataform.RepositoryArgs{\n\t\t\tName: pulumi.String(\"dataform_repository\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tGitRemoteSettings: \u0026dataform.RepositoryGitRemoteSettingsArgs{\n\t\t\t\tUrl: gitRepository.Url,\n\t\t\t\tDefaultBranch: pulumi.String(\"main\"),\n\t\t\t\tAuthenticationTokenSecretVersion: secretVersion.ID(),\n\t\t\t},\n\t\t\tWorkspaceCompilationOverrides: \u0026dataform.RepositoryWorkspaceCompilationOverridesArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"database\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"_suffix\"),\n\t\t\t\tTablePrefix: pulumi.String(\"prefix_\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataform.NewRepositoryReleaseConfig(ctx, \"release\", \u0026dataform.RepositoryReleaseConfigArgs{\n\t\t\tProject: repository.Project,\n\t\t\tRegion: repository.Region,\n\t\t\tRepository: repository.Name,\n\t\t\tName: pulumi.String(\"my_release\"),\n\t\t\tGitCommitish: pulumi.String(\"main\"),\n\t\t\tCronSchedule: pulumi.String(\"0 7 * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tCodeCompilationConfig: \u0026dataform.RepositoryReleaseConfigCodeCompilationConfigArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"gcp-example-project\"),\n\t\t\t\tDefaultSchema: pulumi.String(\"example-dataset\"),\n\t\t\t\tDefaultLocation: pulumi.String(\"us-central1\"),\n\t\t\t\tAssertionSchema: pulumi.String(\"example-assertion-dataset\"),\n\t\t\t\tDatabaseSuffix: pulumi.String(\"\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"\"),\n\t\t\t\tTablePrefix: pulumi.String(\"\"),\n\t\t\t\tVars: pulumi.StringMap{\n\t\t\t\t\t\"var1\": pulumi.String(\"value\"),\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.sourcerepo.Repository;\nimport com.pulumi.gcp.sourcerepo.RepositoryArgs;\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.dataform.Repository;\nimport com.pulumi.gcp.dataform.RepositoryArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryGitRemoteSettingsArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryWorkspaceCompilationOverridesArgs;\nimport com.pulumi.gcp.dataform.RepositoryReleaseConfig;\nimport com.pulumi.gcp.dataform.RepositoryReleaseConfigArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryReleaseConfigCodeCompilationConfigArgs;\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 gitRepository = new Repository(\"gitRepository\", RepositoryArgs.builder()\n .name(\"my/repository\")\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"my_secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secretVersion = new SecretVersion(\"secretVersion\", SecretVersionArgs.builder()\n .secret(secret.id())\n .secretData(\"secret-data\")\n .build());\n\n var repository = new Repository(\"repository\", RepositoryArgs.builder()\n .name(\"dataform_repository\")\n .region(\"us-central1\")\n .gitRemoteSettings(RepositoryGitRemoteSettingsArgs.builder()\n .url(gitRepository.url())\n .defaultBranch(\"main\")\n .authenticationTokenSecretVersion(secretVersion.id())\n .build())\n .workspaceCompilationOverrides(RepositoryWorkspaceCompilationOverridesArgs.builder()\n .defaultDatabase(\"database\")\n .schemaSuffix(\"_suffix\")\n .tablePrefix(\"prefix_\")\n .build())\n .build());\n\n var release = new RepositoryReleaseConfig(\"release\", RepositoryReleaseConfigArgs.builder()\n .project(repository.project())\n .region(repository.region())\n .repository(repository.name())\n .name(\"my_release\")\n .gitCommitish(\"main\")\n .cronSchedule(\"0 7 * * *\")\n .timeZone(\"America/New_York\")\n .codeCompilationConfig(RepositoryReleaseConfigCodeCompilationConfigArgs.builder()\n .defaultDatabase(\"gcp-example-project\")\n .defaultSchema(\"example-dataset\")\n .defaultLocation(\"us-central1\")\n .assertionSchema(\"example-assertion-dataset\")\n .databaseSuffix(\"\")\n .schemaSuffix(\"\")\n .tablePrefix(\"\")\n .vars(Map.of(\"var1\", \"value\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n gitRepository:\n type: gcp:sourcerepo:Repository\n name: git_repository\n properties:\n name: my/repository\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: my_secret\n replication:\n auto: {}\n secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret_version\n properties:\n secret: ${secret.id}\n secretData: secret-data\n repository:\n type: gcp:dataform:Repository\n properties:\n name: dataform_repository\n region: us-central1\n gitRemoteSettings:\n url: ${gitRepository.url}\n defaultBranch: main\n authenticationTokenSecretVersion: ${secretVersion.id}\n workspaceCompilationOverrides:\n defaultDatabase: database\n schemaSuffix: _suffix\n tablePrefix: prefix_\n release:\n type: gcp:dataform:RepositoryReleaseConfig\n properties:\n project: ${repository.project}\n region: ${repository.region}\n repository: ${repository.name}\n name: my_release\n gitCommitish: main\n cronSchedule: 0 7 * * *\n timeZone: America/New_York\n codeCompilationConfig:\n defaultDatabase: gcp-example-project\n defaultSchema: example-dataset\n defaultLocation: us-central1\n assertionSchema: example-assertion-dataset\n databaseSuffix:\n schemaSuffix:\n tablePrefix:\n vars:\n var1: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepositoryReleaseConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/repositories/{{repository}}/releaseConfigs/{{name}}`\n\n* `{{project}}/{{region}}/{{repository}}/{{name}}`\n\n* `{{region}}/{{repository}}/{{name}}`\n\n* `{{repository}}/{{name}}`\n\nWhen using the `pulumi import` command, RepositoryReleaseConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataform/repositoryReleaseConfig:RepositoryReleaseConfig default projects/{{project}}/locations/{{region}}/repositories/{{repository}}/releaseConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryReleaseConfig:RepositoryReleaseConfig default {{project}}/{{region}}/{{repository}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryReleaseConfig:RepositoryReleaseConfig default {{region}}/{{repository}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryReleaseConfig:RepositoryReleaseConfig default {{repository}}/{{name}}\n```\n\n", "properties": { "codeCompilationConfig": { "$ref": "#/types/gcp:dataform/RepositoryReleaseConfigCodeCompilationConfig:RepositoryReleaseConfigCodeCompilationConfig", @@ -173795,7 +173795,7 @@ } }, "gcp:dataform/repositoryWorkflowConfig:RepositoryWorkflowConfig": { - "description": "## Example Usage\n\n### Dataform Repository Workflow Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst gitRepository = new gcp.sourcerepo.Repository(\"git_repository\", {name: \"my/repository\"});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"my_secret\",\n replication: {\n auto: {},\n },\n});\nconst secretVersion = new gcp.secretmanager.SecretVersion(\"secret_version\", {\n secret: secret.id,\n secretData: \"secret-data\",\n});\nconst repository = new gcp.dataform.Repository(\"repository\", {\n name: \"dataform_repository\",\n region: \"us-central1\",\n gitRemoteSettings: {\n url: gitRepository.url,\n defaultBranch: \"main\",\n authenticationTokenSecretVersion: secretVersion.id,\n },\n workspaceCompilationOverrides: {\n defaultDatabase: \"database\",\n schemaSuffix: \"_suffix\",\n tablePrefix: \"prefix_\",\n },\n});\nconst releaseConfig = new gcp.dataform.RepositoryReleaseConfig(\"release_config\", {\n project: repository.project,\n region: repository.region,\n repository: repository.name,\n name: \"my_release\",\n gitCommitish: \"main\",\n cronSchedule: \"0 7 * * *\",\n timeZone: \"America/New_York\",\n codeCompilationConfig: {\n defaultDatabase: \"gcp-example-project\",\n defaultSchema: \"example-dataset\",\n defaultLocation: \"us-central1\",\n assertionSchema: \"example-assertion-dataset\",\n databaseSuffix: \"\",\n schemaSuffix: \"\",\n tablePrefix: \"\",\n vars: {\n var1: \"value\",\n },\n },\n});\nconst dataformSa = new gcp.serviceaccount.Account(\"dataform_sa\", {\n accountId: \"dataform-sa\",\n displayName: \"Dataform Service Account\",\n});\nconst workflow = new gcp.dataform.RepositoryWorkflowConfig(\"workflow\", {\n project: repository.project,\n region: repository.region,\n repository: repository.name,\n name: \"my_workflow\",\n releaseConfig: releaseConfig.id,\n invocationConfig: {\n includedTargets: [\n {\n database: \"gcp-example-project\",\n schema: \"example-dataset\",\n name: \"target_1\",\n },\n {\n database: \"gcp-example-project\",\n schema: \"example-dataset\",\n name: \"target_2\",\n },\n ],\n includedTags: [\"tag_1\"],\n transitiveDependenciesIncluded: true,\n transitiveDependentsIncluded: true,\n fullyRefreshIncrementalTablesEnabled: false,\n serviceAccount: dataformSa.email,\n },\n cronSchedule: \"0 7 * * *\",\n timeZone: \"America/New_York\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngit_repository = gcp.sourcerepo.Repository(\"git_repository\", name=\"my/repository\")\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"my_secret\",\n replication={\n \"auto\": {},\n })\nsecret_version = gcp.secretmanager.SecretVersion(\"secret_version\",\n secret=secret.id,\n secret_data=\"secret-data\")\nrepository = gcp.dataform.Repository(\"repository\",\n name=\"dataform_repository\",\n region=\"us-central1\",\n git_remote_settings={\n \"url\": git_repository.url,\n \"defaultBranch\": \"main\",\n \"authenticationTokenSecretVersion\": secret_version.id,\n },\n workspace_compilation_overrides={\n \"defaultDatabase\": \"database\",\n \"schemaSuffix\": \"_suffix\",\n \"tablePrefix\": \"prefix_\",\n })\nrelease_config = gcp.dataform.RepositoryReleaseConfig(\"release_config\",\n project=repository.project,\n region=repository.region,\n repository=repository.name,\n name=\"my_release\",\n git_commitish=\"main\",\n cron_schedule=\"0 7 * * *\",\n time_zone=\"America/New_York\",\n code_compilation_config={\n \"defaultDatabase\": \"gcp-example-project\",\n \"defaultSchema\": \"example-dataset\",\n \"defaultLocation\": \"us-central1\",\n \"assertionSchema\": \"example-assertion-dataset\",\n \"databaseSuffix\": \"\",\n \"schemaSuffix\": \"\",\n \"tablePrefix\": \"\",\n \"vars\": {\n \"var1\": \"value\",\n },\n })\ndataform_sa = gcp.serviceaccount.Account(\"dataform_sa\",\n account_id=\"dataform-sa\",\n display_name=\"Dataform Service Account\")\nworkflow = gcp.dataform.RepositoryWorkflowConfig(\"workflow\",\n project=repository.project,\n region=repository.region,\n repository=repository.name,\n name=\"my_workflow\",\n release_config=release_config.id,\n invocation_config={\n \"includedTargets\": [\n {\n \"database\": \"gcp-example-project\",\n \"schema\": \"example-dataset\",\n \"name\": \"target_1\",\n },\n {\n \"database\": \"gcp-example-project\",\n \"schema\": \"example-dataset\",\n \"name\": \"target_2\",\n },\n ],\n \"includedTags\": [\"tag_1\"],\n \"transitiveDependenciesIncluded\": True,\n \"transitiveDependentsIncluded\": True,\n \"fullyRefreshIncrementalTablesEnabled\": False,\n \"serviceAccount\": dataform_sa.email,\n },\n cron_schedule=\"0 7 * * *\",\n time_zone=\"America/New_York\")\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 gitRepository = new Gcp.SourceRepo.Repository(\"git_repository\", new()\n {\n Name = \"my/repository\",\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"my_secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secretVersion = new Gcp.SecretManager.SecretVersion(\"secret_version\", new()\n {\n Secret = secret.Id,\n SecretData = \"secret-data\",\n });\n\n var repository = new Gcp.Dataform.Repository(\"repository\", new()\n {\n Name = \"dataform_repository\",\n Region = \"us-central1\",\n GitRemoteSettings = new Gcp.Dataform.Inputs.RepositoryGitRemoteSettingsArgs\n {\n Url = gitRepository.Url,\n DefaultBranch = \"main\",\n AuthenticationTokenSecretVersion = secretVersion.Id,\n },\n WorkspaceCompilationOverrides = new Gcp.Dataform.Inputs.RepositoryWorkspaceCompilationOverridesArgs\n {\n DefaultDatabase = \"database\",\n SchemaSuffix = \"_suffix\",\n TablePrefix = \"prefix_\",\n },\n });\n\n var releaseConfig = new Gcp.Dataform.RepositoryReleaseConfig(\"release_config\", new()\n {\n Project = repository.Project,\n Region = repository.Region,\n Repository = repository.Name,\n Name = \"my_release\",\n GitCommitish = \"main\",\n CronSchedule = \"0 7 * * *\",\n TimeZone = \"America/New_York\",\n CodeCompilationConfig = new Gcp.Dataform.Inputs.RepositoryReleaseConfigCodeCompilationConfigArgs\n {\n DefaultDatabase = \"gcp-example-project\",\n DefaultSchema = \"example-dataset\",\n DefaultLocation = \"us-central1\",\n AssertionSchema = \"example-assertion-dataset\",\n DatabaseSuffix = \"\",\n SchemaSuffix = \"\",\n TablePrefix = \"\",\n Vars = \n {\n { \"var1\", \"value\" },\n },\n },\n });\n\n var dataformSa = new Gcp.ServiceAccount.Account(\"dataform_sa\", new()\n {\n AccountId = \"dataform-sa\",\n DisplayName = \"Dataform Service Account\",\n });\n\n var workflow = new Gcp.Dataform.RepositoryWorkflowConfig(\"workflow\", new()\n {\n Project = repository.Project,\n Region = repository.Region,\n Repository = repository.Name,\n Name = \"my_workflow\",\n ReleaseConfig = releaseConfig.Id,\n InvocationConfig = new Gcp.Dataform.Inputs.RepositoryWorkflowConfigInvocationConfigArgs\n {\n IncludedTargets = new[]\n {\n new Gcp.Dataform.Inputs.RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs\n {\n Database = \"gcp-example-project\",\n Schema = \"example-dataset\",\n Name = \"target_1\",\n },\n new Gcp.Dataform.Inputs.RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs\n {\n Database = \"gcp-example-project\",\n Schema = \"example-dataset\",\n Name = \"target_2\",\n },\n },\n IncludedTags = new[]\n {\n \"tag_1\",\n },\n TransitiveDependenciesIncluded = true,\n TransitiveDependentsIncluded = true,\n FullyRefreshIncrementalTablesEnabled = false,\n ServiceAccount = dataformSa.Email,\n },\n CronSchedule = \"0 7 * * *\",\n TimeZone = \"America/New_York\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataform\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sourcerepo\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgitRepository, err := sourcerepo.NewRepository(ctx, \"git_repository\", \u0026sourcerepo.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my/repository\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"my_secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trepository, err := dataform.NewRepository(ctx, \"repository\", \u0026dataform.RepositoryArgs{\n\t\t\tName: pulumi.String(\"dataform_repository\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tGitRemoteSettings: \u0026dataform.RepositoryGitRemoteSettingsArgs{\n\t\t\t\tUrl: gitRepository.Url,\n\t\t\t\tDefaultBranch: pulumi.String(\"main\"),\n\t\t\t\tAuthenticationTokenSecretVersion: secretVersion.ID(),\n\t\t\t},\n\t\t\tWorkspaceCompilationOverrides: \u0026dataform.RepositoryWorkspaceCompilationOverridesArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"database\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"_suffix\"),\n\t\t\t\tTablePrefix: pulumi.String(\"prefix_\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treleaseConfig, err := dataform.NewRepositoryReleaseConfig(ctx, \"release_config\", \u0026dataform.RepositoryReleaseConfigArgs{\n\t\t\tProject: repository.Project,\n\t\t\tRegion: repository.Region,\n\t\t\tRepository: repository.Name,\n\t\t\tName: pulumi.String(\"my_release\"),\n\t\t\tGitCommitish: pulumi.String(\"main\"),\n\t\t\tCronSchedule: pulumi.String(\"0 7 * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tCodeCompilationConfig: \u0026dataform.RepositoryReleaseConfigCodeCompilationConfigArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"gcp-example-project\"),\n\t\t\t\tDefaultSchema: pulumi.String(\"example-dataset\"),\n\t\t\t\tDefaultLocation: pulumi.String(\"us-central1\"),\n\t\t\t\tAssertionSchema: pulumi.String(\"example-assertion-dataset\"),\n\t\t\t\tDatabaseSuffix: pulumi.String(\"\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"\"),\n\t\t\t\tTablePrefix: pulumi.String(\"\"),\n\t\t\t\tVars: pulumi.StringMap{\n\t\t\t\t\t\"var1\": pulumi.String(\"value\"),\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\tdataformSa, err := serviceaccount.NewAccount(ctx, \"dataform_sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"dataform-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Dataform Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataform.NewRepositoryWorkflowConfig(ctx, \"workflow\", \u0026dataform.RepositoryWorkflowConfigArgs{\n\t\t\tProject: repository.Project,\n\t\t\tRegion: repository.Region,\n\t\t\tRepository: repository.Name,\n\t\t\tName: pulumi.String(\"my_workflow\"),\n\t\t\tReleaseConfig: releaseConfig.ID(),\n\t\t\tInvocationConfig: \u0026dataform.RepositoryWorkflowConfigInvocationConfigArgs{\n\t\t\t\tIncludedTargets: dataform.RepositoryWorkflowConfigInvocationConfigIncludedTargetArray{\n\t\t\t\t\t\u0026dataform.RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs{\n\t\t\t\t\t\tDatabase: pulumi.String(\"gcp-example-project\"),\n\t\t\t\t\t\tSchema: pulumi.String(\"example-dataset\"),\n\t\t\t\t\t\tName: pulumi.String(\"target_1\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataform.RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs{\n\t\t\t\t\t\tDatabase: pulumi.String(\"gcp-example-project\"),\n\t\t\t\t\t\tSchema: pulumi.String(\"example-dataset\"),\n\t\t\t\t\t\tName: pulumi.String(\"target_2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tIncludedTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"tag_1\"),\n\t\t\t\t},\n\t\t\t\tTransitiveDependenciesIncluded: pulumi.Bool(true),\n\t\t\t\tTransitiveDependentsIncluded: pulumi.Bool(true),\n\t\t\t\tFullyRefreshIncrementalTablesEnabled: pulumi.Bool(false),\n\t\t\t\tServiceAccount: dataformSa.Email,\n\t\t\t},\n\t\t\tCronSchedule: pulumi.String(\"0 7 * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\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.sourcerepo.Repository;\nimport com.pulumi.gcp.sourcerepo.RepositoryArgs;\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.dataform.Repository;\nimport com.pulumi.gcp.dataform.RepositoryArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryGitRemoteSettingsArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryWorkspaceCompilationOverridesArgs;\nimport com.pulumi.gcp.dataform.RepositoryReleaseConfig;\nimport com.pulumi.gcp.dataform.RepositoryReleaseConfigArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryReleaseConfigCodeCompilationConfigArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.dataform.RepositoryWorkflowConfig;\nimport com.pulumi.gcp.dataform.RepositoryWorkflowConfigArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryWorkflowConfigInvocationConfigArgs;\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 gitRepository = new Repository(\"gitRepository\", RepositoryArgs.builder()\n .name(\"my/repository\")\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"my_secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secretVersion = new SecretVersion(\"secretVersion\", SecretVersionArgs.builder()\n .secret(secret.id())\n .secretData(\"secret-data\")\n .build());\n\n var repository = new Repository(\"repository\", RepositoryArgs.builder()\n .name(\"dataform_repository\")\n .region(\"us-central1\")\n .gitRemoteSettings(RepositoryGitRemoteSettingsArgs.builder()\n .url(gitRepository.url())\n .defaultBranch(\"main\")\n .authenticationTokenSecretVersion(secretVersion.id())\n .build())\n .workspaceCompilationOverrides(RepositoryWorkspaceCompilationOverridesArgs.builder()\n .defaultDatabase(\"database\")\n .schemaSuffix(\"_suffix\")\n .tablePrefix(\"prefix_\")\n .build())\n .build());\n\n var releaseConfig = new RepositoryReleaseConfig(\"releaseConfig\", RepositoryReleaseConfigArgs.builder()\n .project(repository.project())\n .region(repository.region())\n .repository(repository.name())\n .name(\"my_release\")\n .gitCommitish(\"main\")\n .cronSchedule(\"0 7 * * *\")\n .timeZone(\"America/New_York\")\n .codeCompilationConfig(RepositoryReleaseConfigCodeCompilationConfigArgs.builder()\n .defaultDatabase(\"gcp-example-project\")\n .defaultSchema(\"example-dataset\")\n .defaultLocation(\"us-central1\")\n .assertionSchema(\"example-assertion-dataset\")\n .databaseSuffix(\"\")\n .schemaSuffix(\"\")\n .tablePrefix(\"\")\n .vars(Map.of(\"var1\", \"value\"))\n .build())\n .build());\n\n var dataformSa = new Account(\"dataformSa\", AccountArgs.builder()\n .accountId(\"dataform-sa\")\n .displayName(\"Dataform Service Account\")\n .build());\n\n var workflow = new RepositoryWorkflowConfig(\"workflow\", RepositoryWorkflowConfigArgs.builder()\n .project(repository.project())\n .region(repository.region())\n .repository(repository.name())\n .name(\"my_workflow\")\n .releaseConfig(releaseConfig.id())\n .invocationConfig(RepositoryWorkflowConfigInvocationConfigArgs.builder()\n .includedTargets( \n RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs.builder()\n .database(\"gcp-example-project\")\n .schema(\"example-dataset\")\n .name(\"target_1\")\n .build(),\n RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs.builder()\n .database(\"gcp-example-project\")\n .schema(\"example-dataset\")\n .name(\"target_2\")\n .build())\n .includedTags(\"tag_1\")\n .transitiveDependenciesIncluded(true)\n .transitiveDependentsIncluded(true)\n .fullyRefreshIncrementalTablesEnabled(false)\n .serviceAccount(dataformSa.email())\n .build())\n .cronSchedule(\"0 7 * * *\")\n .timeZone(\"America/New_York\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n gitRepository:\n type: gcp:sourcerepo:Repository\n name: git_repository\n properties:\n name: my/repository\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: my_secret\n replication:\n auto: {}\n secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret_version\n properties:\n secret: ${secret.id}\n secretData: secret-data\n repository:\n type: gcp:dataform:Repository\n properties:\n name: dataform_repository\n region: us-central1\n gitRemoteSettings:\n url: ${gitRepository.url}\n defaultBranch: main\n authenticationTokenSecretVersion: ${secretVersion.id}\n workspaceCompilationOverrides:\n defaultDatabase: database\n schemaSuffix: _suffix\n tablePrefix: prefix_\n releaseConfig:\n type: gcp:dataform:RepositoryReleaseConfig\n name: release_config\n properties:\n project: ${repository.project}\n region: ${repository.region}\n repository: ${repository.name}\n name: my_release\n gitCommitish: main\n cronSchedule: 0 7 * * *\n timeZone: America/New_York\n codeCompilationConfig:\n defaultDatabase: gcp-example-project\n defaultSchema: example-dataset\n defaultLocation: us-central1\n assertionSchema: example-assertion-dataset\n databaseSuffix:\n schemaSuffix:\n tablePrefix:\n vars:\n var1: value\n dataformSa:\n type: gcp:serviceaccount:Account\n name: dataform_sa\n properties:\n accountId: dataform-sa\n displayName: Dataform Service Account\n workflow:\n type: gcp:dataform:RepositoryWorkflowConfig\n properties:\n project: ${repository.project}\n region: ${repository.region}\n repository: ${repository.name}\n name: my_workflow\n releaseConfig: ${releaseConfig.id}\n invocationConfig:\n includedTargets:\n - database: gcp-example-project\n schema: example-dataset\n name: target_1\n - database: gcp-example-project\n schema: example-dataset\n name: target_2\n includedTags:\n - tag_1\n transitiveDependenciesIncluded: true\n transitiveDependentsIncluded: true\n fullyRefreshIncrementalTablesEnabled: false\n serviceAccount: ${dataformSa.email}\n cronSchedule: 0 7 * * *\n timeZone: America/New_York\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepositoryWorkflowConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/repositories/{{repository}}/workflowConfigs/{{name}}`\n\n* `{{project}}/{{region}}/{{repository}}/{{name}}`\n\n* `{{region}}/{{repository}}/{{name}}`\n\n* `{{repository}}/{{name}}`\n\nWhen using the `pulumi import` command, RepositoryWorkflowConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataform/repositoryWorkflowConfig:RepositoryWorkflowConfig default projects/{{project}}/locations/{{region}}/repositories/{{repository}}/workflowConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryWorkflowConfig:RepositoryWorkflowConfig default {{project}}/{{region}}/{{repository}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryWorkflowConfig:RepositoryWorkflowConfig default {{region}}/{{repository}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryWorkflowConfig:RepositoryWorkflowConfig default {{repository}}/{{name}}\n```\n\n", + "description": "## Example Usage\n\n### Dataform Repository Workflow Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst gitRepository = new gcp.sourcerepo.Repository(\"git_repository\", {name: \"my/repository\"});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"my_secret\",\n replication: {\n auto: {},\n },\n});\nconst secretVersion = new gcp.secretmanager.SecretVersion(\"secret_version\", {\n secret: secret.id,\n secretData: \"secret-data\",\n});\nconst repository = new gcp.dataform.Repository(\"repository\", {\n name: \"dataform_repository\",\n region: \"us-central1\",\n gitRemoteSettings: {\n url: gitRepository.url,\n defaultBranch: \"main\",\n authenticationTokenSecretVersion: secretVersion.id,\n },\n workspaceCompilationOverrides: {\n defaultDatabase: \"database\",\n schemaSuffix: \"_suffix\",\n tablePrefix: \"prefix_\",\n },\n});\nconst releaseConfig = new gcp.dataform.RepositoryReleaseConfig(\"release_config\", {\n project: repository.project,\n region: repository.region,\n repository: repository.name,\n name: \"my_release\",\n gitCommitish: \"main\",\n cronSchedule: \"0 7 * * *\",\n timeZone: \"America/New_York\",\n codeCompilationConfig: {\n defaultDatabase: \"gcp-example-project\",\n defaultSchema: \"example-dataset\",\n defaultLocation: \"us-central1\",\n assertionSchema: \"example-assertion-dataset\",\n databaseSuffix: \"\",\n schemaSuffix: \"\",\n tablePrefix: \"\",\n vars: {\n var1: \"value\",\n },\n },\n});\nconst dataformSa = new gcp.serviceaccount.Account(\"dataform_sa\", {\n accountId: \"dataform-sa\",\n displayName: \"Dataform Service Account\",\n});\nconst workflow = new gcp.dataform.RepositoryWorkflowConfig(\"workflow\", {\n project: repository.project,\n region: repository.region,\n repository: repository.name,\n name: \"my_workflow\",\n releaseConfig: releaseConfig.id,\n invocationConfig: {\n includedTargets: [\n {\n database: \"gcp-example-project\",\n schema: \"example-dataset\",\n name: \"target_1\",\n },\n {\n database: \"gcp-example-project\",\n schema: \"example-dataset\",\n name: \"target_2\",\n },\n ],\n includedTags: [\"tag_1\"],\n transitiveDependenciesIncluded: true,\n transitiveDependentsIncluded: true,\n fullyRefreshIncrementalTablesEnabled: false,\n serviceAccount: dataformSa.email,\n },\n cronSchedule: \"0 7 * * *\",\n timeZone: \"America/New_York\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngit_repository = gcp.sourcerepo.Repository(\"git_repository\", name=\"my/repository\")\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"my_secret\",\n replication={\n \"auto\": {},\n })\nsecret_version = gcp.secretmanager.SecretVersion(\"secret_version\",\n secret=secret.id,\n secret_data=\"secret-data\")\nrepository = gcp.dataform.Repository(\"repository\",\n name=\"dataform_repository\",\n region=\"us-central1\",\n git_remote_settings={\n \"url\": git_repository.url,\n \"default_branch\": \"main\",\n \"authentication_token_secret_version\": secret_version.id,\n },\n workspace_compilation_overrides={\n \"default_database\": \"database\",\n \"schema_suffix\": \"_suffix\",\n \"table_prefix\": \"prefix_\",\n })\nrelease_config = gcp.dataform.RepositoryReleaseConfig(\"release_config\",\n project=repository.project,\n region=repository.region,\n repository=repository.name,\n name=\"my_release\",\n git_commitish=\"main\",\n cron_schedule=\"0 7 * * *\",\n time_zone=\"America/New_York\",\n code_compilation_config={\n \"default_database\": \"gcp-example-project\",\n \"default_schema\": \"example-dataset\",\n \"default_location\": \"us-central1\",\n \"assertion_schema\": \"example-assertion-dataset\",\n \"database_suffix\": \"\",\n \"schema_suffix\": \"\",\n \"table_prefix\": \"\",\n \"vars\": {\n \"var1\": \"value\",\n },\n })\ndataform_sa = gcp.serviceaccount.Account(\"dataform_sa\",\n account_id=\"dataform-sa\",\n display_name=\"Dataform Service Account\")\nworkflow = gcp.dataform.RepositoryWorkflowConfig(\"workflow\",\n project=repository.project,\n region=repository.region,\n repository=repository.name,\n name=\"my_workflow\",\n release_config=release_config.id,\n invocation_config={\n \"included_targets\": [\n {\n \"database\": \"gcp-example-project\",\n \"schema\": \"example-dataset\",\n \"name\": \"target_1\",\n },\n {\n \"database\": \"gcp-example-project\",\n \"schema\": \"example-dataset\",\n \"name\": \"target_2\",\n },\n ],\n \"included_tags\": [\"tag_1\"],\n \"transitive_dependencies_included\": True,\n \"transitive_dependents_included\": True,\n \"fully_refresh_incremental_tables_enabled\": False,\n \"service_account\": dataform_sa.email,\n },\n cron_schedule=\"0 7 * * *\",\n time_zone=\"America/New_York\")\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 gitRepository = new Gcp.SourceRepo.Repository(\"git_repository\", new()\n {\n Name = \"my/repository\",\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"my_secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secretVersion = new Gcp.SecretManager.SecretVersion(\"secret_version\", new()\n {\n Secret = secret.Id,\n SecretData = \"secret-data\",\n });\n\n var repository = new Gcp.Dataform.Repository(\"repository\", new()\n {\n Name = \"dataform_repository\",\n Region = \"us-central1\",\n GitRemoteSettings = new Gcp.Dataform.Inputs.RepositoryGitRemoteSettingsArgs\n {\n Url = gitRepository.Url,\n DefaultBranch = \"main\",\n AuthenticationTokenSecretVersion = secretVersion.Id,\n },\n WorkspaceCompilationOverrides = new Gcp.Dataform.Inputs.RepositoryWorkspaceCompilationOverridesArgs\n {\n DefaultDatabase = \"database\",\n SchemaSuffix = \"_suffix\",\n TablePrefix = \"prefix_\",\n },\n });\n\n var releaseConfig = new Gcp.Dataform.RepositoryReleaseConfig(\"release_config\", new()\n {\n Project = repository.Project,\n Region = repository.Region,\n Repository = repository.Name,\n Name = \"my_release\",\n GitCommitish = \"main\",\n CronSchedule = \"0 7 * * *\",\n TimeZone = \"America/New_York\",\n CodeCompilationConfig = new Gcp.Dataform.Inputs.RepositoryReleaseConfigCodeCompilationConfigArgs\n {\n DefaultDatabase = \"gcp-example-project\",\n DefaultSchema = \"example-dataset\",\n DefaultLocation = \"us-central1\",\n AssertionSchema = \"example-assertion-dataset\",\n DatabaseSuffix = \"\",\n SchemaSuffix = \"\",\n TablePrefix = \"\",\n Vars = \n {\n { \"var1\", \"value\" },\n },\n },\n });\n\n var dataformSa = new Gcp.ServiceAccount.Account(\"dataform_sa\", new()\n {\n AccountId = \"dataform-sa\",\n DisplayName = \"Dataform Service Account\",\n });\n\n var workflow = new Gcp.Dataform.RepositoryWorkflowConfig(\"workflow\", new()\n {\n Project = repository.Project,\n Region = repository.Region,\n Repository = repository.Name,\n Name = \"my_workflow\",\n ReleaseConfig = releaseConfig.Id,\n InvocationConfig = new Gcp.Dataform.Inputs.RepositoryWorkflowConfigInvocationConfigArgs\n {\n IncludedTargets = new[]\n {\n new Gcp.Dataform.Inputs.RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs\n {\n Database = \"gcp-example-project\",\n Schema = \"example-dataset\",\n Name = \"target_1\",\n },\n new Gcp.Dataform.Inputs.RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs\n {\n Database = \"gcp-example-project\",\n Schema = \"example-dataset\",\n Name = \"target_2\",\n },\n },\n IncludedTags = new[]\n {\n \"tag_1\",\n },\n TransitiveDependenciesIncluded = true,\n TransitiveDependentsIncluded = true,\n FullyRefreshIncrementalTablesEnabled = false,\n ServiceAccount = dataformSa.Email,\n },\n CronSchedule = \"0 7 * * *\",\n TimeZone = \"America/New_York\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataform\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sourcerepo\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgitRepository, err := sourcerepo.NewRepository(ctx, \"git_repository\", \u0026sourcerepo.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my/repository\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"my_secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trepository, err := dataform.NewRepository(ctx, \"repository\", \u0026dataform.RepositoryArgs{\n\t\t\tName: pulumi.String(\"dataform_repository\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tGitRemoteSettings: \u0026dataform.RepositoryGitRemoteSettingsArgs{\n\t\t\t\tUrl: gitRepository.Url,\n\t\t\t\tDefaultBranch: pulumi.String(\"main\"),\n\t\t\t\tAuthenticationTokenSecretVersion: secretVersion.ID(),\n\t\t\t},\n\t\t\tWorkspaceCompilationOverrides: \u0026dataform.RepositoryWorkspaceCompilationOverridesArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"database\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"_suffix\"),\n\t\t\t\tTablePrefix: pulumi.String(\"prefix_\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treleaseConfig, err := dataform.NewRepositoryReleaseConfig(ctx, \"release_config\", \u0026dataform.RepositoryReleaseConfigArgs{\n\t\t\tProject: repository.Project,\n\t\t\tRegion: repository.Region,\n\t\t\tRepository: repository.Name,\n\t\t\tName: pulumi.String(\"my_release\"),\n\t\t\tGitCommitish: pulumi.String(\"main\"),\n\t\t\tCronSchedule: pulumi.String(\"0 7 * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tCodeCompilationConfig: \u0026dataform.RepositoryReleaseConfigCodeCompilationConfigArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"gcp-example-project\"),\n\t\t\t\tDefaultSchema: pulumi.String(\"example-dataset\"),\n\t\t\t\tDefaultLocation: pulumi.String(\"us-central1\"),\n\t\t\t\tAssertionSchema: pulumi.String(\"example-assertion-dataset\"),\n\t\t\t\tDatabaseSuffix: pulumi.String(\"\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"\"),\n\t\t\t\tTablePrefix: pulumi.String(\"\"),\n\t\t\t\tVars: pulumi.StringMap{\n\t\t\t\t\t\"var1\": pulumi.String(\"value\"),\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\tdataformSa, err := serviceaccount.NewAccount(ctx, \"dataform_sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"dataform-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Dataform Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataform.NewRepositoryWorkflowConfig(ctx, \"workflow\", \u0026dataform.RepositoryWorkflowConfigArgs{\n\t\t\tProject: repository.Project,\n\t\t\tRegion: repository.Region,\n\t\t\tRepository: repository.Name,\n\t\t\tName: pulumi.String(\"my_workflow\"),\n\t\t\tReleaseConfig: releaseConfig.ID(),\n\t\t\tInvocationConfig: \u0026dataform.RepositoryWorkflowConfigInvocationConfigArgs{\n\t\t\t\tIncludedTargets: dataform.RepositoryWorkflowConfigInvocationConfigIncludedTargetArray{\n\t\t\t\t\t\u0026dataform.RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs{\n\t\t\t\t\t\tDatabase: pulumi.String(\"gcp-example-project\"),\n\t\t\t\t\t\tSchema: pulumi.String(\"example-dataset\"),\n\t\t\t\t\t\tName: pulumi.String(\"target_1\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataform.RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs{\n\t\t\t\t\t\tDatabase: pulumi.String(\"gcp-example-project\"),\n\t\t\t\t\t\tSchema: pulumi.String(\"example-dataset\"),\n\t\t\t\t\t\tName: pulumi.String(\"target_2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tIncludedTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"tag_1\"),\n\t\t\t\t},\n\t\t\t\tTransitiveDependenciesIncluded: pulumi.Bool(true),\n\t\t\t\tTransitiveDependentsIncluded: pulumi.Bool(true),\n\t\t\t\tFullyRefreshIncrementalTablesEnabled: pulumi.Bool(false),\n\t\t\t\tServiceAccount: dataformSa.Email,\n\t\t\t},\n\t\t\tCronSchedule: pulumi.String(\"0 7 * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\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.sourcerepo.Repository;\nimport com.pulumi.gcp.sourcerepo.RepositoryArgs;\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.dataform.Repository;\nimport com.pulumi.gcp.dataform.RepositoryArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryGitRemoteSettingsArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryWorkspaceCompilationOverridesArgs;\nimport com.pulumi.gcp.dataform.RepositoryReleaseConfig;\nimport com.pulumi.gcp.dataform.RepositoryReleaseConfigArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryReleaseConfigCodeCompilationConfigArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.dataform.RepositoryWorkflowConfig;\nimport com.pulumi.gcp.dataform.RepositoryWorkflowConfigArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryWorkflowConfigInvocationConfigArgs;\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 gitRepository = new Repository(\"gitRepository\", RepositoryArgs.builder()\n .name(\"my/repository\")\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"my_secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secretVersion = new SecretVersion(\"secretVersion\", SecretVersionArgs.builder()\n .secret(secret.id())\n .secretData(\"secret-data\")\n .build());\n\n var repository = new Repository(\"repository\", RepositoryArgs.builder()\n .name(\"dataform_repository\")\n .region(\"us-central1\")\n .gitRemoteSettings(RepositoryGitRemoteSettingsArgs.builder()\n .url(gitRepository.url())\n .defaultBranch(\"main\")\n .authenticationTokenSecretVersion(secretVersion.id())\n .build())\n .workspaceCompilationOverrides(RepositoryWorkspaceCompilationOverridesArgs.builder()\n .defaultDatabase(\"database\")\n .schemaSuffix(\"_suffix\")\n .tablePrefix(\"prefix_\")\n .build())\n .build());\n\n var releaseConfig = new RepositoryReleaseConfig(\"releaseConfig\", RepositoryReleaseConfigArgs.builder()\n .project(repository.project())\n .region(repository.region())\n .repository(repository.name())\n .name(\"my_release\")\n .gitCommitish(\"main\")\n .cronSchedule(\"0 7 * * *\")\n .timeZone(\"America/New_York\")\n .codeCompilationConfig(RepositoryReleaseConfigCodeCompilationConfigArgs.builder()\n .defaultDatabase(\"gcp-example-project\")\n .defaultSchema(\"example-dataset\")\n .defaultLocation(\"us-central1\")\n .assertionSchema(\"example-assertion-dataset\")\n .databaseSuffix(\"\")\n .schemaSuffix(\"\")\n .tablePrefix(\"\")\n .vars(Map.of(\"var1\", \"value\"))\n .build())\n .build());\n\n var dataformSa = new Account(\"dataformSa\", AccountArgs.builder()\n .accountId(\"dataform-sa\")\n .displayName(\"Dataform Service Account\")\n .build());\n\n var workflow = new RepositoryWorkflowConfig(\"workflow\", RepositoryWorkflowConfigArgs.builder()\n .project(repository.project())\n .region(repository.region())\n .repository(repository.name())\n .name(\"my_workflow\")\n .releaseConfig(releaseConfig.id())\n .invocationConfig(RepositoryWorkflowConfigInvocationConfigArgs.builder()\n .includedTargets( \n RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs.builder()\n .database(\"gcp-example-project\")\n .schema(\"example-dataset\")\n .name(\"target_1\")\n .build(),\n RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs.builder()\n .database(\"gcp-example-project\")\n .schema(\"example-dataset\")\n .name(\"target_2\")\n .build())\n .includedTags(\"tag_1\")\n .transitiveDependenciesIncluded(true)\n .transitiveDependentsIncluded(true)\n .fullyRefreshIncrementalTablesEnabled(false)\n .serviceAccount(dataformSa.email())\n .build())\n .cronSchedule(\"0 7 * * *\")\n .timeZone(\"America/New_York\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n gitRepository:\n type: gcp:sourcerepo:Repository\n name: git_repository\n properties:\n name: my/repository\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: my_secret\n replication:\n auto: {}\n secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret_version\n properties:\n secret: ${secret.id}\n secretData: secret-data\n repository:\n type: gcp:dataform:Repository\n properties:\n name: dataform_repository\n region: us-central1\n gitRemoteSettings:\n url: ${gitRepository.url}\n defaultBranch: main\n authenticationTokenSecretVersion: ${secretVersion.id}\n workspaceCompilationOverrides:\n defaultDatabase: database\n schemaSuffix: _suffix\n tablePrefix: prefix_\n releaseConfig:\n type: gcp:dataform:RepositoryReleaseConfig\n name: release_config\n properties:\n project: ${repository.project}\n region: ${repository.region}\n repository: ${repository.name}\n name: my_release\n gitCommitish: main\n cronSchedule: 0 7 * * *\n timeZone: America/New_York\n codeCompilationConfig:\n defaultDatabase: gcp-example-project\n defaultSchema: example-dataset\n defaultLocation: us-central1\n assertionSchema: example-assertion-dataset\n databaseSuffix:\n schemaSuffix:\n tablePrefix:\n vars:\n var1: value\n dataformSa:\n type: gcp:serviceaccount:Account\n name: dataform_sa\n properties:\n accountId: dataform-sa\n displayName: Dataform Service Account\n workflow:\n type: gcp:dataform:RepositoryWorkflowConfig\n properties:\n project: ${repository.project}\n region: ${repository.region}\n repository: ${repository.name}\n name: my_workflow\n releaseConfig: ${releaseConfig.id}\n invocationConfig:\n includedTargets:\n - database: gcp-example-project\n schema: example-dataset\n name: target_1\n - database: gcp-example-project\n schema: example-dataset\n name: target_2\n includedTags:\n - tag_1\n transitiveDependenciesIncluded: true\n transitiveDependentsIncluded: true\n fullyRefreshIncrementalTablesEnabled: false\n serviceAccount: ${dataformSa.email}\n cronSchedule: 0 7 * * *\n timeZone: America/New_York\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepositoryWorkflowConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/repositories/{{repository}}/workflowConfigs/{{name}}`\n\n* `{{project}}/{{region}}/{{repository}}/{{name}}`\n\n* `{{region}}/{{repository}}/{{name}}`\n\n* `{{repository}}/{{name}}`\n\nWhen using the `pulumi import` command, RepositoryWorkflowConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataform/repositoryWorkflowConfig:RepositoryWorkflowConfig default projects/{{project}}/locations/{{region}}/repositories/{{repository}}/workflowConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryWorkflowConfig:RepositoryWorkflowConfig default {{project}}/{{region}}/{{repository}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryWorkflowConfig:RepositoryWorkflowConfig default {{region}}/{{repository}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryWorkflowConfig:RepositoryWorkflowConfig default {{repository}}/{{name}}\n```\n\n", "properties": { "cronSchedule": { "type": "string", @@ -173935,7 +173935,7 @@ } }, "gcp:datafusion/instance:Instance": { - "description": "Represents a Data Fusion instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/data-fusion/docs/reference/rest/v1beta1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-fusion/docs/)\n\n## Example Usage\n\n### Data Fusion Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicInstance = new gcp.datafusion.Instance(\"basic_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_instance = gcp.datafusion.Instance(\"basic_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\")\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 basicInstance = new Gcp.DataFusion.Instance(\"basic_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"basic_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 basicInstance = new Instance(\"basicInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicInstance:\n type: gcp:datafusion:Instance\n name: basic_instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.appengine.getDefaultServiceAccount({});\nconst network = new gcp.compute.Network(\"network\", {name: \"datafusion-full-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"datafusion-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 22,\n network: network.id,\n});\nconst extendedInstance = new gcp.datafusion.Instance(\"extended_instance\", {\n name: \"my-instance\",\n description: \"My Data Fusion instance\",\n displayName: \"My Data Fusion instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n enableStackdriverLogging: true,\n enableStackdriverMonitoring: true,\n privateInstance: true,\n dataprocServiceAccount: _default.then(_default =\u003e _default.email),\n labels: {\n example_key: \"example_value\",\n },\n networkConfig: {\n network: \"default\",\n ipAllocation: pulumi.interpolate`${privateIpAlloc.address}/${privateIpAlloc.prefixLength}`,\n },\n accelerators: [{\n acceleratorType: \"CDC\",\n state: \"ENABLED\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.appengine.get_default_service_account()\nnetwork = gcp.compute.Network(\"network\", name=\"datafusion-full-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"datafusion-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=22,\n network=network.id)\nextended_instance = gcp.datafusion.Instance(\"extended_instance\",\n name=\"my-instance\",\n description=\"My Data Fusion instance\",\n display_name=\"My Data Fusion instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n enable_stackdriver_logging=True,\n enable_stackdriver_monitoring=True,\n private_instance=True,\n dataproc_service_account=default.email,\n labels={\n \"example_key\": \"example_value\",\n },\n network_config={\n \"network\": \"default\",\n \"ipAllocation\": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f\"{address}/{prefix_length}\"),\n },\n accelerators=[{\n \"acceleratorType\": \"CDC\",\n \"state\": \"ENABLED\",\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 @default = Gcp.AppEngine.GetDefaultServiceAccount.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"datafusion-full-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"datafusion-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 22,\n Network = network.Id,\n });\n\n var extendedInstance = new Gcp.DataFusion.Instance(\"extended_instance\", new()\n {\n Name = \"my-instance\",\n Description = \"My Data Fusion instance\",\n DisplayName = \"My Data Fusion instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EnableStackdriverLogging = true,\n EnableStackdriverMonitoring = true,\n PrivateInstance = true,\n DataprocServiceAccount = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Labels = \n {\n { \"example_key\", \"example_value\" },\n },\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n Network = \"default\",\n IpAllocation = Output.Tuple(privateIpAlloc.Address, privateIpAlloc.PrefixLength).Apply(values =\u003e\n {\n var address = values.Item1;\n var prefixLength = values.Item2;\n return $\"{address}/{prefixLength}\";\n }),\n },\n Accelerators = new[]\n {\n new Gcp.DataFusion.Inputs.InstanceAcceleratorArgs\n {\n AcceleratorType = \"CDC\",\n State = \"ENABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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_default, err := appengine.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-full-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"datafusion-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"extended_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDescription: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tDisplayName: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableStackdriverMonitoring: pulumi.Bool(true),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tDataprocServiceAccount: pulumi.String(_default.Email),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example_key\": pulumi.String(\"example_value\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\tIpAllocation: pulumi.All(privateIpAlloc.Address, privateIpAlloc.PrefixLength).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\taddress := _args[0].(string)\n\t\t\t\t\tprefixLength := _args[1].(int)\n\t\t\t\t\treturn fmt.Sprintf(\"%v/%v\", address, prefixLength), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tAccelerators: datafusion.InstanceAcceleratorArray{\n\t\t\t\t\u0026datafusion.InstanceAcceleratorArgs{\n\t\t\t\t\tAcceleratorType: pulumi.String(\"CDC\"),\n\t\t\t\t\tState: pulumi.String(\"ENABLED\"),\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.appengine.AppengineFunctions;\nimport com.pulumi.gcp.appengine.inputs.GetDefaultServiceAccountArgs;\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceAcceleratorArgs;\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 default = AppengineFunctions.getDefaultServiceAccount();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"datafusion-full-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"datafusion-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(22)\n .network(network.id())\n .build());\n\n var extendedInstance = new Instance(\"extendedInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .description(\"My Data Fusion instance\")\n .displayName(\"My Data Fusion instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .enableStackdriverLogging(true)\n .enableStackdriverMonitoring(true)\n .privateInstance(true)\n .dataprocServiceAccount(default_.email())\n .labels(Map.of(\"example_key\", \"example_value\"))\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .network(\"default\")\n .ipAllocation(Output.tuple(privateIpAlloc.address(), privateIpAlloc.prefixLength()).applyValue(values -\u003e {\n var address = values.t1;\n var prefixLength = values.t2;\n return String.format(\"%s/%s\", address,prefixLength);\n }))\n .build())\n .accelerators(InstanceAcceleratorArgs.builder()\n .acceleratorType(\"CDC\")\n .state(\"ENABLED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedInstance:\n type: gcp:datafusion:Instance\n name: extended_instance\n properties:\n name: my-instance\n description: My Data Fusion instance\n displayName: My Data Fusion instance\n region: us-central1\n type: BASIC\n enableStackdriverLogging: true\n enableStackdriverMonitoring: true\n privateInstance: true\n dataprocServiceAccount: ${default.email}\n labels:\n example_key: example_value\n networkConfig:\n network: default\n ipAllocation: ${privateIpAlloc.address}/${privateIpAlloc.prefixLength}\n accelerators:\n - acceleratorType: CDC\n state: ENABLED\n network:\n type: gcp:compute:Network\n properties:\n name: datafusion-full-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: datafusion-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 22\n network: ${network.id}\nvariables:\n default:\n fn::invoke:\n Function: gcp:appengine:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst psc = new gcp.compute.Network(\"psc\", {\n name: \"datafusion-psc-network\",\n autoCreateSubnetworks: false,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc\", {\n name: \"datafusion-psc-subnet\",\n region: \"us-central1\",\n network: psc.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscNetworkAttachment = new gcp.compute.NetworkAttachment(\"psc\", {\n name: \"datafusion-psc-attachment\",\n region: \"us-central1\",\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n subnetworks: [pscSubnetwork.selfLink],\n});\nconst pscInstance = new gcp.datafusion.Instance(\"psc_instance\", {\n name: \"psc-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n privateInstance: true,\n networkConfig: {\n connectionType: \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n privateServiceConnectConfig: {\n networkAttachment: pscNetworkAttachment.id,\n unreachableCidrBlock: \"192.168.0.0/25\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc = gcp.compute.Network(\"psc\",\n name=\"datafusion-psc-network\",\n auto_create_subnetworks=False)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc\",\n name=\"datafusion-psc-subnet\",\n region=\"us-central1\",\n network=psc.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_network_attachment = gcp.compute.NetworkAttachment(\"psc\",\n name=\"datafusion-psc-attachment\",\n region=\"us-central1\",\n connection_preference=\"ACCEPT_AUTOMATIC\",\n subnetworks=[psc_subnetwork.self_link])\npsc_instance = gcp.datafusion.Instance(\"psc_instance\",\n name=\"psc-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n private_instance=True,\n network_config={\n \"connectionType\": \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n \"privateServiceConnectConfig\": {\n \"networkAttachment\": psc_network_attachment.id,\n \"unreachableCidrBlock\": \"192.168.0.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 psc = new Gcp.Compute.Network(\"psc\", new()\n {\n Name = \"datafusion-psc-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc\", new()\n {\n Name = \"datafusion-psc-subnet\",\n Region = \"us-central1\",\n Network = psc.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"psc\", new()\n {\n Name = \"datafusion-psc-attachment\",\n Region = \"us-central1\",\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n Subnetworks = new[]\n {\n pscSubnetwork.SelfLink,\n },\n });\n\n var pscInstance = new Gcp.DataFusion.Instance(\"psc_instance\", new()\n {\n Name = \"psc-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n PrivateInstance = true,\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n ConnectionType = \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n PrivateServiceConnectConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs\n {\n NetworkAttachment = pscNetworkAttachment.Id,\n UnreachableCidrBlock = \"192.168.0.0/25\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpsc, err := compute.NewNetwork(ctx, \"psc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-network\"),\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\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: psc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"psc\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"psc_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"psc-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tConnectionType: pulumi.String(\"PRIVATE_SERVICE_CONNECT_INTERFACES\"),\n\t\t\t\tPrivateServiceConnectConfig: \u0026datafusion.InstanceNetworkConfigPrivateServiceConnectConfigArgs{\n\t\t\t\t\tNetworkAttachment: pscNetworkAttachment.ID(),\n\t\t\t\t\tUnreachableCidrBlock: pulumi.String(\"192.168.0.0/25\"),\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.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs;\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 psc = new Network(\"psc\", NetworkArgs.builder()\n .name(\"datafusion-psc-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"datafusion-psc-subnet\")\n .region(\"us-central1\")\n .network(psc.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscNetworkAttachment = new NetworkAttachment(\"pscNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"datafusion-psc-attachment\")\n .region(\"us-central1\")\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .subnetworks(pscSubnetwork.selfLink())\n .build());\n\n var pscInstance = new Instance(\"pscInstance\", InstanceArgs.builder()\n .name(\"psc-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .privateInstance(true)\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .connectionType(\"PRIVATE_SERVICE_CONNECT_INTERFACES\")\n .privateServiceConnectConfig(InstanceNetworkConfigPrivateServiceConnectConfigArgs.builder()\n .networkAttachment(pscNetworkAttachment.id())\n .unreachableCidrBlock(\"192.168.0.0/25\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscInstance:\n type: gcp:datafusion:Instance\n name: psc_instance\n properties:\n name: psc-instance\n region: us-central1\n type: BASIC\n privateInstance: true\n networkConfig:\n connectionType: PRIVATE_SERVICE_CONNECT_INTERFACES\n privateServiceConnectConfig:\n networkAttachment: ${pscNetworkAttachment.id}\n unreachableCidrBlock: 192.168.0.0/25\n psc:\n type: gcp:compute:Network\n properties:\n name: datafusion-psc-network\n autoCreateSubnetworks: false\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc\n properties:\n name: datafusion-psc-subnet\n region: us-central1\n network: ${psc.id}\n ipCidrRange: 10.0.0.0/16\n pscNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: psc\n properties:\n name: datafusion-psc-attachment\n region: us-central1\n connectionPreference: ACCEPT_AUTOMATIC\n subnetworks:\n - ${pscSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-instance\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-instance\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyMember = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com`),\n});\nconst cmek = new gcp.datafusion.Instance(\"cmek\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n cryptoKeyConfig: {\n keyReference: cryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKeyMember],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-instance\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-instance\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_member = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\")\ncmek = gcp.datafusion.Instance(\"cmek\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n crypto_key_config={\n \"keyReference\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member]))\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(\"key_ring\", new()\n {\n Name = \"my-instance\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-instance\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyMember = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datafusion.iam.gserviceaccount.com\",\n });\n\n var cmek = new Gcp.DataFusion.Instance(\"cmek\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n CryptoKeyConfig = new Gcp.DataFusion.Inputs.InstanceCryptoKeyConfigArgs\n {\n KeyReference = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tKeyRing: keyRing.ID(),\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\tcryptoKeyMember, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-datafusion.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"cmek\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tCryptoKeyConfig: \u0026datafusion.InstanceCryptoKeyConfigArgs{\n\t\t\t\tKeyReference: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceCryptoKeyConfigArgs;\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 .name(\"my-instance\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-instance\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyMember = new CryptoKeyIAMMember(\"cryptoKeyMember\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datafusion.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var cmek = new Instance(\"cmek\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .cryptoKeyConfig(InstanceCryptoKeyConfigArgs.builder()\n .keyReference(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cmek:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n cryptoKeyConfig:\n keyReference: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyMember}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-instance\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-instance\n location: us-central1\n cryptoKeyMember:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst enterpriseInstance = new gcp.datafusion.Instance(\"enterprise_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"ENTERPRISE\",\n enableRbac: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nenterprise_instance = gcp.datafusion.Instance(\"enterprise_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"ENTERPRISE\",\n enable_rbac=True)\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 enterpriseInstance = new Gcp.DataFusion.Instance(\"enterprise_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"ENTERPRISE\",\n EnableRbac = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"enterprise_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"ENTERPRISE\"),\n\t\t\tEnableRbac: pulumi.Bool(true),\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 enterpriseInstance = new Instance(\"enterpriseInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"ENTERPRISE\")\n .enableRbac(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n enterpriseInstance:\n type: gcp:datafusion:Instance\n name: enterprise_instance\n properties:\n name: my-instance\n region: us-central1\n type: ENTERPRISE\n enableRbac: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Event\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst eventTopic = new gcp.pubsub.Topic(\"event\", {name: \"my-instance\"});\nconst event = new gcp.datafusion.Instance(\"event\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n eventPublishConfig: {\n enabled: true,\n topic: eventTopic.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nevent_topic = gcp.pubsub.Topic(\"event\", name=\"my-instance\")\nevent = gcp.datafusion.Instance(\"event\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n event_publish_config={\n \"enabled\": True,\n \"topic\": event_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 eventTopic = new Gcp.PubSub.Topic(\"event\", new()\n {\n Name = \"my-instance\",\n });\n\n var @event = new Gcp.DataFusion.Instance(\"event\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EventPublishConfig = new Gcp.DataFusion.Inputs.InstanceEventPublishConfigArgs\n {\n Enabled = true,\n Topic = eventTopic.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\teventTopic, err := pubsub.NewTopic(ctx, \"event\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"event\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEventPublishConfig: \u0026datafusion.InstanceEventPublishConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tTopic: eventTopic.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.pubsub.TopicArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceEventPublishConfigArgs;\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 eventTopic = new Topic(\"eventTopic\", TopicArgs.builder()\n .name(\"my-instance\")\n .build());\n\n var event = new Instance(\"event\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .eventPublishConfig(InstanceEventPublishConfigArgs.builder()\n .enabled(true)\n .topic(eventTopic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n event:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n eventPublishConfig:\n enabled: true\n topic: ${eventTopic.id}\n eventTopic:\n type: gcp:pubsub:Topic\n name: event\n properties:\n name: my-instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst zone = new gcp.datafusion.Instance(\"zone\", {\n name: \"my-instance\",\n region: \"us-central1\",\n zone: \"us-central1-a\",\n type: \"DEVELOPER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nzone = gcp.datafusion.Instance(\"zone\",\n name=\"my-instance\",\n region=\"us-central1\",\n zone=\"us-central1-a\",\n type=\"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 zone = new Gcp.DataFusion.Instance(\"zone\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Zone = \"us-central1-a\",\n Type = \"DEVELOPER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"zone\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tType: 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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 zone = new Instance(\"zone\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .zone(\"us-central1-a\")\n .type(\"DEVELOPER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n zone:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n zone: us-central1-a\n type: DEVELOPER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:datafusion/instance:Instance default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:datafusion/instance:Instance default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:datafusion/instance:Instance default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:datafusion/instance:Instance default {{name}}\n```\n\n", + "description": "Represents a Data Fusion instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/data-fusion/docs/reference/rest/v1beta1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-fusion/docs/)\n\n## Example Usage\n\n### Data Fusion Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicInstance = new gcp.datafusion.Instance(\"basic_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_instance = gcp.datafusion.Instance(\"basic_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\")\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 basicInstance = new Gcp.DataFusion.Instance(\"basic_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"basic_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 basicInstance = new Instance(\"basicInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicInstance:\n type: gcp:datafusion:Instance\n name: basic_instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.appengine.getDefaultServiceAccount({});\nconst network = new gcp.compute.Network(\"network\", {name: \"datafusion-full-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"datafusion-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 22,\n network: network.id,\n});\nconst extendedInstance = new gcp.datafusion.Instance(\"extended_instance\", {\n name: \"my-instance\",\n description: \"My Data Fusion instance\",\n displayName: \"My Data Fusion instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n enableStackdriverLogging: true,\n enableStackdriverMonitoring: true,\n privateInstance: true,\n dataprocServiceAccount: _default.then(_default =\u003e _default.email),\n labels: {\n example_key: \"example_value\",\n },\n networkConfig: {\n network: \"default\",\n ipAllocation: pulumi.interpolate`${privateIpAlloc.address}/${privateIpAlloc.prefixLength}`,\n },\n accelerators: [{\n acceleratorType: \"CDC\",\n state: \"ENABLED\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.appengine.get_default_service_account()\nnetwork = gcp.compute.Network(\"network\", name=\"datafusion-full-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"datafusion-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=22,\n network=network.id)\nextended_instance = gcp.datafusion.Instance(\"extended_instance\",\n name=\"my-instance\",\n description=\"My Data Fusion instance\",\n display_name=\"My Data Fusion instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n enable_stackdriver_logging=True,\n enable_stackdriver_monitoring=True,\n private_instance=True,\n dataproc_service_account=default.email,\n labels={\n \"example_key\": \"example_value\",\n },\n network_config={\n \"network\": \"default\",\n \"ip_allocation\": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f\"{address}/{prefix_length}\"),\n },\n accelerators=[{\n \"accelerator_type\": \"CDC\",\n \"state\": \"ENABLED\",\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 @default = Gcp.AppEngine.GetDefaultServiceAccount.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"datafusion-full-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"datafusion-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 22,\n Network = network.Id,\n });\n\n var extendedInstance = new Gcp.DataFusion.Instance(\"extended_instance\", new()\n {\n Name = \"my-instance\",\n Description = \"My Data Fusion instance\",\n DisplayName = \"My Data Fusion instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EnableStackdriverLogging = true,\n EnableStackdriverMonitoring = true,\n PrivateInstance = true,\n DataprocServiceAccount = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Labels = \n {\n { \"example_key\", \"example_value\" },\n },\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n Network = \"default\",\n IpAllocation = Output.Tuple(privateIpAlloc.Address, privateIpAlloc.PrefixLength).Apply(values =\u003e\n {\n var address = values.Item1;\n var prefixLength = values.Item2;\n return $\"{address}/{prefixLength}\";\n }),\n },\n Accelerators = new[]\n {\n new Gcp.DataFusion.Inputs.InstanceAcceleratorArgs\n {\n AcceleratorType = \"CDC\",\n State = \"ENABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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_default, err := appengine.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-full-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"datafusion-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"extended_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDescription: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tDisplayName: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableStackdriverMonitoring: pulumi.Bool(true),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tDataprocServiceAccount: pulumi.String(_default.Email),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example_key\": pulumi.String(\"example_value\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\tIpAllocation: pulumi.All(privateIpAlloc.Address, privateIpAlloc.PrefixLength).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\taddress := _args[0].(string)\n\t\t\t\t\tprefixLength := _args[1].(int)\n\t\t\t\t\treturn fmt.Sprintf(\"%v/%v\", address, prefixLength), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tAccelerators: datafusion.InstanceAcceleratorArray{\n\t\t\t\t\u0026datafusion.InstanceAcceleratorArgs{\n\t\t\t\t\tAcceleratorType: pulumi.String(\"CDC\"),\n\t\t\t\t\tState: pulumi.String(\"ENABLED\"),\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.appengine.AppengineFunctions;\nimport com.pulumi.gcp.appengine.inputs.GetDefaultServiceAccountArgs;\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceAcceleratorArgs;\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 default = AppengineFunctions.getDefaultServiceAccount();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"datafusion-full-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"datafusion-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(22)\n .network(network.id())\n .build());\n\n var extendedInstance = new Instance(\"extendedInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .description(\"My Data Fusion instance\")\n .displayName(\"My Data Fusion instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .enableStackdriverLogging(true)\n .enableStackdriverMonitoring(true)\n .privateInstance(true)\n .dataprocServiceAccount(default_.email())\n .labels(Map.of(\"example_key\", \"example_value\"))\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .network(\"default\")\n .ipAllocation(Output.tuple(privateIpAlloc.address(), privateIpAlloc.prefixLength()).applyValue(values -\u003e {\n var address = values.t1;\n var prefixLength = values.t2;\n return String.format(\"%s/%s\", address,prefixLength);\n }))\n .build())\n .accelerators(InstanceAcceleratorArgs.builder()\n .acceleratorType(\"CDC\")\n .state(\"ENABLED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedInstance:\n type: gcp:datafusion:Instance\n name: extended_instance\n properties:\n name: my-instance\n description: My Data Fusion instance\n displayName: My Data Fusion instance\n region: us-central1\n type: BASIC\n enableStackdriverLogging: true\n enableStackdriverMonitoring: true\n privateInstance: true\n dataprocServiceAccount: ${default.email}\n labels:\n example_key: example_value\n networkConfig:\n network: default\n ipAllocation: ${privateIpAlloc.address}/${privateIpAlloc.prefixLength}\n accelerators:\n - acceleratorType: CDC\n state: ENABLED\n network:\n type: gcp:compute:Network\n properties:\n name: datafusion-full-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: datafusion-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 22\n network: ${network.id}\nvariables:\n default:\n fn::invoke:\n Function: gcp:appengine:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst psc = new gcp.compute.Network(\"psc\", {\n name: \"datafusion-psc-network\",\n autoCreateSubnetworks: false,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc\", {\n name: \"datafusion-psc-subnet\",\n region: \"us-central1\",\n network: psc.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscNetworkAttachment = new gcp.compute.NetworkAttachment(\"psc\", {\n name: \"datafusion-psc-attachment\",\n region: \"us-central1\",\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n subnetworks: [pscSubnetwork.selfLink],\n});\nconst pscInstance = new gcp.datafusion.Instance(\"psc_instance\", {\n name: \"psc-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n privateInstance: true,\n networkConfig: {\n connectionType: \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n privateServiceConnectConfig: {\n networkAttachment: pscNetworkAttachment.id,\n unreachableCidrBlock: \"192.168.0.0/25\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc = gcp.compute.Network(\"psc\",\n name=\"datafusion-psc-network\",\n auto_create_subnetworks=False)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc\",\n name=\"datafusion-psc-subnet\",\n region=\"us-central1\",\n network=psc.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_network_attachment = gcp.compute.NetworkAttachment(\"psc\",\n name=\"datafusion-psc-attachment\",\n region=\"us-central1\",\n connection_preference=\"ACCEPT_AUTOMATIC\",\n subnetworks=[psc_subnetwork.self_link])\npsc_instance = gcp.datafusion.Instance(\"psc_instance\",\n name=\"psc-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n private_instance=True,\n network_config={\n \"connection_type\": \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n \"private_service_connect_config\": {\n \"network_attachment\": psc_network_attachment.id,\n \"unreachable_cidr_block\": \"192.168.0.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 psc = new Gcp.Compute.Network(\"psc\", new()\n {\n Name = \"datafusion-psc-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc\", new()\n {\n Name = \"datafusion-psc-subnet\",\n Region = \"us-central1\",\n Network = psc.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"psc\", new()\n {\n Name = \"datafusion-psc-attachment\",\n Region = \"us-central1\",\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n Subnetworks = new[]\n {\n pscSubnetwork.SelfLink,\n },\n });\n\n var pscInstance = new Gcp.DataFusion.Instance(\"psc_instance\", new()\n {\n Name = \"psc-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n PrivateInstance = true,\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n ConnectionType = \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n PrivateServiceConnectConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs\n {\n NetworkAttachment = pscNetworkAttachment.Id,\n UnreachableCidrBlock = \"192.168.0.0/25\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpsc, err := compute.NewNetwork(ctx, \"psc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-network\"),\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\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: psc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"psc\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"psc_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"psc-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tConnectionType: pulumi.String(\"PRIVATE_SERVICE_CONNECT_INTERFACES\"),\n\t\t\t\tPrivateServiceConnectConfig: \u0026datafusion.InstanceNetworkConfigPrivateServiceConnectConfigArgs{\n\t\t\t\t\tNetworkAttachment: pscNetworkAttachment.ID(),\n\t\t\t\t\tUnreachableCidrBlock: pulumi.String(\"192.168.0.0/25\"),\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.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs;\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 psc = new Network(\"psc\", NetworkArgs.builder()\n .name(\"datafusion-psc-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"datafusion-psc-subnet\")\n .region(\"us-central1\")\n .network(psc.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscNetworkAttachment = new NetworkAttachment(\"pscNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"datafusion-psc-attachment\")\n .region(\"us-central1\")\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .subnetworks(pscSubnetwork.selfLink())\n .build());\n\n var pscInstance = new Instance(\"pscInstance\", InstanceArgs.builder()\n .name(\"psc-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .privateInstance(true)\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .connectionType(\"PRIVATE_SERVICE_CONNECT_INTERFACES\")\n .privateServiceConnectConfig(InstanceNetworkConfigPrivateServiceConnectConfigArgs.builder()\n .networkAttachment(pscNetworkAttachment.id())\n .unreachableCidrBlock(\"192.168.0.0/25\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscInstance:\n type: gcp:datafusion:Instance\n name: psc_instance\n properties:\n name: psc-instance\n region: us-central1\n type: BASIC\n privateInstance: true\n networkConfig:\n connectionType: PRIVATE_SERVICE_CONNECT_INTERFACES\n privateServiceConnectConfig:\n networkAttachment: ${pscNetworkAttachment.id}\n unreachableCidrBlock: 192.168.0.0/25\n psc:\n type: gcp:compute:Network\n properties:\n name: datafusion-psc-network\n autoCreateSubnetworks: false\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc\n properties:\n name: datafusion-psc-subnet\n region: us-central1\n network: ${psc.id}\n ipCidrRange: 10.0.0.0/16\n pscNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: psc\n properties:\n name: datafusion-psc-attachment\n region: us-central1\n connectionPreference: ACCEPT_AUTOMATIC\n subnetworks:\n - ${pscSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-instance\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-instance\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyMember = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com`),\n});\nconst cmek = new gcp.datafusion.Instance(\"cmek\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n cryptoKeyConfig: {\n keyReference: cryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKeyMember],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-instance\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-instance\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_member = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\")\ncmek = gcp.datafusion.Instance(\"cmek\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n crypto_key_config={\n \"key_reference\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member]))\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(\"key_ring\", new()\n {\n Name = \"my-instance\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-instance\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyMember = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datafusion.iam.gserviceaccount.com\",\n });\n\n var cmek = new Gcp.DataFusion.Instance(\"cmek\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n CryptoKeyConfig = new Gcp.DataFusion.Inputs.InstanceCryptoKeyConfigArgs\n {\n KeyReference = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tKeyRing: keyRing.ID(),\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\tcryptoKeyMember, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-datafusion.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"cmek\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tCryptoKeyConfig: \u0026datafusion.InstanceCryptoKeyConfigArgs{\n\t\t\t\tKeyReference: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceCryptoKeyConfigArgs;\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 .name(\"my-instance\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-instance\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyMember = new CryptoKeyIAMMember(\"cryptoKeyMember\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datafusion.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var cmek = new Instance(\"cmek\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .cryptoKeyConfig(InstanceCryptoKeyConfigArgs.builder()\n .keyReference(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cmek:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n cryptoKeyConfig:\n keyReference: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyMember}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-instance\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-instance\n location: us-central1\n cryptoKeyMember:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst enterpriseInstance = new gcp.datafusion.Instance(\"enterprise_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"ENTERPRISE\",\n enableRbac: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nenterprise_instance = gcp.datafusion.Instance(\"enterprise_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"ENTERPRISE\",\n enable_rbac=True)\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 enterpriseInstance = new Gcp.DataFusion.Instance(\"enterprise_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"ENTERPRISE\",\n EnableRbac = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"enterprise_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"ENTERPRISE\"),\n\t\t\tEnableRbac: pulumi.Bool(true),\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 enterpriseInstance = new Instance(\"enterpriseInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"ENTERPRISE\")\n .enableRbac(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n enterpriseInstance:\n type: gcp:datafusion:Instance\n name: enterprise_instance\n properties:\n name: my-instance\n region: us-central1\n type: ENTERPRISE\n enableRbac: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Event\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst eventTopic = new gcp.pubsub.Topic(\"event\", {name: \"my-instance\"});\nconst event = new gcp.datafusion.Instance(\"event\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n eventPublishConfig: {\n enabled: true,\n topic: eventTopic.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nevent_topic = gcp.pubsub.Topic(\"event\", name=\"my-instance\")\nevent = gcp.datafusion.Instance(\"event\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n event_publish_config={\n \"enabled\": True,\n \"topic\": event_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 eventTopic = new Gcp.PubSub.Topic(\"event\", new()\n {\n Name = \"my-instance\",\n });\n\n var @event = new Gcp.DataFusion.Instance(\"event\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EventPublishConfig = new Gcp.DataFusion.Inputs.InstanceEventPublishConfigArgs\n {\n Enabled = true,\n Topic = eventTopic.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\teventTopic, err := pubsub.NewTopic(ctx, \"event\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"event\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEventPublishConfig: \u0026datafusion.InstanceEventPublishConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tTopic: eventTopic.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.pubsub.TopicArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceEventPublishConfigArgs;\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 eventTopic = new Topic(\"eventTopic\", TopicArgs.builder()\n .name(\"my-instance\")\n .build());\n\n var event = new Instance(\"event\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .eventPublishConfig(InstanceEventPublishConfigArgs.builder()\n .enabled(true)\n .topic(eventTopic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n event:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n eventPublishConfig:\n enabled: true\n topic: ${eventTopic.id}\n eventTopic:\n type: gcp:pubsub:Topic\n name: event\n properties:\n name: my-instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst zone = new gcp.datafusion.Instance(\"zone\", {\n name: \"my-instance\",\n region: \"us-central1\",\n zone: \"us-central1-a\",\n type: \"DEVELOPER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nzone = gcp.datafusion.Instance(\"zone\",\n name=\"my-instance\",\n region=\"us-central1\",\n zone=\"us-central1-a\",\n type=\"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 zone = new Gcp.DataFusion.Instance(\"zone\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Zone = \"us-central1-a\",\n Type = \"DEVELOPER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"zone\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tType: 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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 zone = new Instance(\"zone\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .zone(\"us-central1-a\")\n .type(\"DEVELOPER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n zone:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n zone: us-central1-a\n type: DEVELOPER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:datafusion/instance:Instance default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:datafusion/instance:Instance default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:datafusion/instance:Instance default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:datafusion/instance:Instance default {{name}}\n```\n\n", "properties": { "accelerators": { "type": "array", @@ -174365,7 +174365,7 @@ } }, "gcp:dataloss/preventionDeidentifyTemplate:PreventionDeidentifyTemplate": { - "description": "Allows creation of templates to de-identify content.\n\n\nTo get more information about DeidentifyTemplate, see:\n\n* [API documentation](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.deidentifyTemplates)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dlp/docs/concepts-templates)\n\n\n\n## Example Usage\n\n### Dlp Deidentify Template Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionDeidentifyTemplate(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n deidentifyConfig: {\n infoTypeTransformations: {\n transformations: [\n {\n infoTypes: [{\n name: \"FIRST_NAME\",\n }],\n primitiveTransformation: {\n replaceWithInfoTypeConfig: true,\n },\n },\n {\n infoTypes: [\n {\n name: \"PHONE_NUMBER\",\n },\n {\n name: \"AGE\",\n },\n ],\n primitiveTransformation: {\n replaceConfig: {\n newValue: {\n integerValue: 9,\n },\n },\n },\n },\n {\n infoTypes: [\n {\n name: \"EMAIL_ADDRESS\",\n },\n {\n name: \"LAST_NAME\",\n },\n ],\n primitiveTransformation: {\n characterMaskConfig: {\n maskingCharacter: \"X\",\n numberToMask: 4,\n reverseOrder: true,\n charactersToIgnores: [{\n commonCharactersToIgnore: \"PUNCTUATION\",\n }],\n },\n },\n },\n {\n infoTypes: [{\n name: \"DATE_OF_BIRTH\",\n }],\n primitiveTransformation: {\n replaceConfig: {\n newValue: {\n dateValue: {\n year: 2020,\n month: 1,\n day: 1,\n },\n },\n },\n },\n },\n {\n infoTypes: [{\n name: \"CREDIT_CARD_NUMBER\",\n }],\n primitiveTransformation: {\n cryptoDeterministicConfig: {\n context: {\n name: \"sometweak\",\n },\n cryptoKey: {\n transient: {\n name: \"beep\",\n },\n },\n surrogateInfoType: {\n name: \"abc\",\n },\n },\n },\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionDeidentifyTemplate(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n deidentify_config={\n \"infoTypeTransformations\": {\n \"transformations\": [\n {\n \"infoTypes\": [{\n \"name\": \"FIRST_NAME\",\n }],\n \"primitiveTransformation\": {\n \"replaceWithInfoTypeConfig\": True,\n },\n },\n {\n \"infoTypes\": [\n {\n \"name\": \"PHONE_NUMBER\",\n },\n {\n \"name\": \"AGE\",\n },\n ],\n \"primitiveTransformation\": {\n \"replaceConfig\": {\n \"newValue\": {\n \"integerValue\": 9,\n },\n },\n },\n },\n {\n \"infoTypes\": [\n {\n \"name\": \"EMAIL_ADDRESS\",\n },\n {\n \"name\": \"LAST_NAME\",\n },\n ],\n \"primitiveTransformation\": {\n \"characterMaskConfig\": {\n \"maskingCharacter\": \"X\",\n \"numberToMask\": 4,\n \"reverseOrder\": True,\n \"charactersToIgnores\": [{\n \"commonCharactersToIgnore\": \"PUNCTUATION\",\n }],\n },\n },\n },\n {\n \"infoTypes\": [{\n \"name\": \"DATE_OF_BIRTH\",\n }],\n \"primitiveTransformation\": {\n \"replaceConfig\": {\n \"newValue\": {\n \"dateValue\": {\n \"year\": 2020,\n \"month\": 1,\n \"day\": 1,\n },\n },\n },\n },\n },\n {\n \"infoTypes\": [{\n \"name\": \"CREDIT_CARD_NUMBER\",\n }],\n \"primitiveTransformation\": {\n \"cryptoDeterministicConfig\": {\n \"context\": {\n \"name\": \"sometweak\",\n },\n \"cryptoKey\": {\n \"transient\": {\n \"name\": \"beep\",\n },\n },\n \"surrogateInfoType\": {\n \"name\": \"abc\",\n },\n },\n },\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 basic = new Gcp.DataLoss.PreventionDeidentifyTemplate(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n DeidentifyConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs\n {\n InfoTypeTransformations = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs\n {\n Transformations = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"FIRST_NAME\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n ReplaceWithInfoTypeConfig = true,\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"PHONE_NUMBER\",\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"AGE\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n ReplaceConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs\n {\n NewValue = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs\n {\n IntegerValue = 9,\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"LAST_NAME\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n CharacterMaskConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigArgs\n {\n MaskingCharacter = \"X\",\n NumberToMask = 4,\n ReverseOrder = true,\n CharactersToIgnores = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigCharactersToIgnoreArgs\n {\n CommonCharactersToIgnore = \"PUNCTUATION\",\n },\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"DATE_OF_BIRTH\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n ReplaceConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs\n {\n NewValue = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs\n {\n DateValue = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueDateValueArgs\n {\n Year = 2020,\n Month = 1,\n Day = 1,\n },\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"CREDIT_CARD_NUMBER\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n CryptoDeterministicConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigArgs\n {\n Context = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigContextArgs\n {\n Name = \"sometweak\",\n },\n CryptoKey = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyArgs\n {\n Transient = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyTransientArgs\n {\n Name = \"beep\",\n },\n },\n SurrogateInfoType = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigSurrogateInfoTypeArgs\n {\n Name = \"abc\",\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionDeidentifyTemplate(ctx, \"basic\", \u0026dataloss.PreventionDeidentifyTemplateArgs{\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\tDeidentifyConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigArgs{\n\t\t\t\tInfoTypeTransformations: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs{\n\t\t\t\t\tTransformations: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"FIRST_NAME\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tReplaceWithInfoTypeConfig: pulumi.Bool(true),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PHONE_NUMBER\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"AGE\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tReplaceConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs{\n\t\t\t\t\t\t\t\t\tNewValue: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs{\n\t\t\t\t\t\t\t\t\t\tIntegerValue: pulumi.Int(9),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"LAST_NAME\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tCharacterMaskConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigArgs{\n\t\t\t\t\t\t\t\t\tMaskingCharacter: pulumi.String(\"X\"),\n\t\t\t\t\t\t\t\t\tNumberToMask: pulumi.Int(4),\n\t\t\t\t\t\t\t\t\tReverseOrder: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tCharactersToIgnores: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigCharactersToIgnoreArray{\n\t\t\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigCharactersToIgnoreArgs{\n\t\t\t\t\t\t\t\t\t\t\tCommonCharactersToIgnore: pulumi.String(\"PUNCTUATION\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"DATE_OF_BIRTH\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tReplaceConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs{\n\t\t\t\t\t\t\t\t\tNewValue: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs{\n\t\t\t\t\t\t\t\t\t\tDateValue: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueDateValueArgs{\n\t\t\t\t\t\t\t\t\t\t\tYear: pulumi.Int(2020),\n\t\t\t\t\t\t\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\t\t\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"CREDIT_CARD_NUMBER\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tCryptoDeterministicConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigArgs{\n\t\t\t\t\t\t\t\t\tContext: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigContextArgs{\n\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"sometweak\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tCryptoKey: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyArgs{\n\t\t\t\t\t\t\t\t\t\tTransient: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyTransientArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"beep\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tSurrogateInfoType: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigSurrogateInfoTypeArgs{\n\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"abc\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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.dataloss.PreventionDeidentifyTemplate;\nimport com.pulumi.gcp.dataloss.PreventionDeidentifyTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs;\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 PreventionDeidentifyTemplate(\"basic\", PreventionDeidentifyTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .deidentifyConfig(PreventionDeidentifyTemplateDeidentifyConfigArgs.builder()\n .infoTypeTransformations(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs.builder()\n .transformations( \n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"FIRST_NAME\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .replaceWithInfoTypeConfig(true)\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes( \n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"PHONE_NUMBER\")\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"AGE\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .replaceConfig(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs.builder()\n .newValue(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs.builder()\n .integerValue(9)\n .build())\n .build())\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes( \n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"LAST_NAME\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .characterMaskConfig(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigArgs.builder()\n .maskingCharacter(\"X\")\n .numberToMask(4)\n .reverseOrder(true)\n .charactersToIgnores(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigCharactersToIgnoreArgs.builder()\n .commonCharactersToIgnore(\"PUNCTUATION\")\n .build())\n .build())\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"DATE_OF_BIRTH\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .replaceConfig(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs.builder()\n .newValue(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs.builder()\n .dateValue(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueDateValueArgs.builder()\n .year(2020)\n .month(1)\n .day(1)\n .build())\n .build())\n .build())\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"CREDIT_CARD_NUMBER\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .cryptoDeterministicConfig(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigArgs.builder()\n .context(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigContextArgs.builder()\n .name(\"sometweak\")\n .build())\n .cryptoKey(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyArgs.builder()\n .transient_(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyTransientArgs.builder()\n .name(\"beep\")\n .build())\n .build())\n .surrogateInfoType(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigSurrogateInfoTypeArgs.builder()\n .name(\"abc\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionDeidentifyTemplate\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n deidentifyConfig:\n infoTypeTransformations:\n transformations:\n - infoTypes:\n - name: FIRST_NAME\n primitiveTransformation:\n replaceWithInfoTypeConfig: true\n - infoTypes:\n - name: PHONE_NUMBER\n - name: AGE\n primitiveTransformation:\n replaceConfig:\n newValue:\n integerValue: 9\n - infoTypes:\n - name: EMAIL_ADDRESS\n - name: LAST_NAME\n primitiveTransformation:\n characterMaskConfig:\n maskingCharacter: X\n numberToMask: 4\n reverseOrder: true\n charactersToIgnores:\n - commonCharactersToIgnore: PUNCTUATION\n - infoTypes:\n - name: DATE_OF_BIRTH\n primitiveTransformation:\n replaceConfig:\n newValue:\n dateValue:\n year: 2020\n month: 1\n day: 1\n - infoTypes:\n - name: CREDIT_CARD_NUMBER\n primitiveTransformation:\n cryptoDeterministicConfig:\n context:\n name: sometweak\n cryptoKey:\n transient:\n name: beep\n surrogateInfoType:\n name: abc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Deidentify Template Image Transformations\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionDeidentifyTemplate(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n deidentifyConfig: {\n imageTransformations: {\n transforms: [\n {\n redactionColor: {\n red: 0.5,\n blue: 1,\n green: 0.2,\n },\n selectedInfoTypes: {\n infoTypes: [{\n name: \"COLOR_INFO\",\n version: \"latest\",\n }],\n },\n },\n {\n allInfoTypes: {},\n },\n {\n allText: {},\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionDeidentifyTemplate(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n deidentify_config={\n \"imageTransformations\": {\n \"transforms\": [\n {\n \"redactionColor\": {\n \"red\": 0.5,\n \"blue\": 1,\n \"green\": 0.2,\n },\n \"selectedInfoTypes\": {\n \"infoTypes\": [{\n \"name\": \"COLOR_INFO\",\n \"version\": \"latest\",\n }],\n },\n },\n {\n \"allInfoTypes\": {},\n },\n {\n \"allText\": {},\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 basic = new Gcp.DataLoss.PreventionDeidentifyTemplate(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n DeidentifyConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs\n {\n ImageTransformations = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsArgs\n {\n Transforms = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs\n {\n RedactionColor = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformRedactionColorArgs\n {\n Red = 0.5,\n Blue = 1,\n Green = 0.2,\n },\n SelectedInfoTypes = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesInfoTypeArgs\n {\n Name = \"COLOR_INFO\",\n Version = \"latest\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs\n {\n AllInfoTypes = null,\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs\n {\n AllText = null,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionDeidentifyTemplate(ctx, \"basic\", \u0026dataloss.PreventionDeidentifyTemplateArgs{\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\tDeidentifyConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigArgs{\n\t\t\t\tImageTransformations: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsArgs{\n\t\t\t\t\tTransforms: dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs{\n\t\t\t\t\t\t\tRedactionColor: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformRedactionColorArgs{\n\t\t\t\t\t\t\t\tRed: pulumi.Float64(0.5),\n\t\t\t\t\t\t\t\tBlue: pulumi.Float64(1),\n\t\t\t\t\t\t\t\tGreen: pulumi.Float64(0.2),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tSelectedInfoTypes: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesArgs{\n\t\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesInfoTypeArray{\n\t\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesInfoTypeArgs{\n\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"COLOR_INFO\"),\n\t\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs{\n\t\t\t\t\t\t\tAllInfoTypes: nil,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs{\n\t\t\t\t\t\t\tAllText: nil,\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.dataloss.PreventionDeidentifyTemplate;\nimport com.pulumi.gcp.dataloss.PreventionDeidentifyTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsArgs;\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 PreventionDeidentifyTemplate(\"basic\", PreventionDeidentifyTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .deidentifyConfig(PreventionDeidentifyTemplateDeidentifyConfigArgs.builder()\n .imageTransformations(PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsArgs.builder()\n .transforms( \n PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs.builder()\n .redactionColor(PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformRedactionColorArgs.builder()\n .red(0.5)\n .blue(1)\n .green(0.2)\n .build())\n .selectedInfoTypes(PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesArgs.builder()\n .infoTypes(PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesInfoTypeArgs.builder()\n .name(\"COLOR_INFO\")\n .version(\"latest\")\n .build())\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs.builder()\n .allInfoTypes()\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs.builder()\n .allText()\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionDeidentifyTemplate\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n deidentifyConfig:\n imageTransformations:\n transforms:\n - redactionColor:\n red: 0.5\n blue: 1\n green: 0.2\n selectedInfoTypes:\n infoTypes:\n - name: COLOR_INFO\n version: latest\n - allInfoTypes: {}\n - allText: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDeidentifyTemplate can be imported using any of these accepted formats:\n\n* `{{parent}}/deidentifyTemplates/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, DeidentifyTemplate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataloss/preventionDeidentifyTemplate:PreventionDeidentifyTemplate default {{parent}}/deidentifyTemplates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataloss/preventionDeidentifyTemplate:PreventionDeidentifyTemplate default {{parent}}/{{name}}\n```\n\n", + "description": "Allows creation of templates to de-identify content.\n\n\nTo get more information about DeidentifyTemplate, see:\n\n* [API documentation](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.deidentifyTemplates)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dlp/docs/concepts-templates)\n\n\n\n## Example Usage\n\n### Dlp Deidentify Template Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionDeidentifyTemplate(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n deidentifyConfig: {\n infoTypeTransformations: {\n transformations: [\n {\n infoTypes: [{\n name: \"FIRST_NAME\",\n }],\n primitiveTransformation: {\n replaceWithInfoTypeConfig: true,\n },\n },\n {\n infoTypes: [\n {\n name: \"PHONE_NUMBER\",\n },\n {\n name: \"AGE\",\n },\n ],\n primitiveTransformation: {\n replaceConfig: {\n newValue: {\n integerValue: 9,\n },\n },\n },\n },\n {\n infoTypes: [\n {\n name: \"EMAIL_ADDRESS\",\n },\n {\n name: \"LAST_NAME\",\n },\n ],\n primitiveTransformation: {\n characterMaskConfig: {\n maskingCharacter: \"X\",\n numberToMask: 4,\n reverseOrder: true,\n charactersToIgnores: [{\n commonCharactersToIgnore: \"PUNCTUATION\",\n }],\n },\n },\n },\n {\n infoTypes: [{\n name: \"DATE_OF_BIRTH\",\n }],\n primitiveTransformation: {\n replaceConfig: {\n newValue: {\n dateValue: {\n year: 2020,\n month: 1,\n day: 1,\n },\n },\n },\n },\n },\n {\n infoTypes: [{\n name: \"CREDIT_CARD_NUMBER\",\n }],\n primitiveTransformation: {\n cryptoDeterministicConfig: {\n context: {\n name: \"sometweak\",\n },\n cryptoKey: {\n transient: {\n name: \"beep\",\n },\n },\n surrogateInfoType: {\n name: \"abc\",\n },\n },\n },\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionDeidentifyTemplate(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n deidentify_config={\n \"info_type_transformations\": {\n \"transformations\": [\n {\n \"info_types\": [{\n \"name\": \"FIRST_NAME\",\n }],\n \"primitive_transformation\": {\n \"replace_with_info_type_config\": True,\n },\n },\n {\n \"info_types\": [\n {\n \"name\": \"PHONE_NUMBER\",\n },\n {\n \"name\": \"AGE\",\n },\n ],\n \"primitive_transformation\": {\n \"replace_config\": {\n \"new_value\": {\n \"integer_value\": 9,\n },\n },\n },\n },\n {\n \"info_types\": [\n {\n \"name\": \"EMAIL_ADDRESS\",\n },\n {\n \"name\": \"LAST_NAME\",\n },\n ],\n \"primitive_transformation\": {\n \"character_mask_config\": {\n \"masking_character\": \"X\",\n \"number_to_mask\": 4,\n \"reverse_order\": True,\n \"characters_to_ignores\": [{\n \"common_characters_to_ignore\": \"PUNCTUATION\",\n }],\n },\n },\n },\n {\n \"info_types\": [{\n \"name\": \"DATE_OF_BIRTH\",\n }],\n \"primitive_transformation\": {\n \"replace_config\": {\n \"new_value\": {\n \"date_value\": {\n \"year\": 2020,\n \"month\": 1,\n \"day\": 1,\n },\n },\n },\n },\n },\n {\n \"info_types\": [{\n \"name\": \"CREDIT_CARD_NUMBER\",\n }],\n \"primitive_transformation\": {\n \"crypto_deterministic_config\": {\n \"context\": {\n \"name\": \"sometweak\",\n },\n \"crypto_key\": {\n \"transient\": {\n \"name\": \"beep\",\n },\n },\n \"surrogate_info_type\": {\n \"name\": \"abc\",\n },\n },\n },\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 basic = new Gcp.DataLoss.PreventionDeidentifyTemplate(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n DeidentifyConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs\n {\n InfoTypeTransformations = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs\n {\n Transformations = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"FIRST_NAME\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n ReplaceWithInfoTypeConfig = true,\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"PHONE_NUMBER\",\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"AGE\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n ReplaceConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs\n {\n NewValue = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs\n {\n IntegerValue = 9,\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"LAST_NAME\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n CharacterMaskConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigArgs\n {\n MaskingCharacter = \"X\",\n NumberToMask = 4,\n ReverseOrder = true,\n CharactersToIgnores = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigCharactersToIgnoreArgs\n {\n CommonCharactersToIgnore = \"PUNCTUATION\",\n },\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"DATE_OF_BIRTH\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n ReplaceConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs\n {\n NewValue = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs\n {\n DateValue = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueDateValueArgs\n {\n Year = 2020,\n Month = 1,\n Day = 1,\n },\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"CREDIT_CARD_NUMBER\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n CryptoDeterministicConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigArgs\n {\n Context = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigContextArgs\n {\n Name = \"sometweak\",\n },\n CryptoKey = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyArgs\n {\n Transient = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyTransientArgs\n {\n Name = \"beep\",\n },\n },\n SurrogateInfoType = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigSurrogateInfoTypeArgs\n {\n Name = \"abc\",\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionDeidentifyTemplate(ctx, \"basic\", \u0026dataloss.PreventionDeidentifyTemplateArgs{\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\tDeidentifyConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigArgs{\n\t\t\t\tInfoTypeTransformations: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs{\n\t\t\t\t\tTransformations: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"FIRST_NAME\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tReplaceWithInfoTypeConfig: pulumi.Bool(true),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PHONE_NUMBER\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"AGE\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tReplaceConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs{\n\t\t\t\t\t\t\t\t\tNewValue: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs{\n\t\t\t\t\t\t\t\t\t\tIntegerValue: pulumi.Int(9),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"LAST_NAME\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tCharacterMaskConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigArgs{\n\t\t\t\t\t\t\t\t\tMaskingCharacter: pulumi.String(\"X\"),\n\t\t\t\t\t\t\t\t\tNumberToMask: pulumi.Int(4),\n\t\t\t\t\t\t\t\t\tReverseOrder: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tCharactersToIgnores: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigCharactersToIgnoreArray{\n\t\t\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigCharactersToIgnoreArgs{\n\t\t\t\t\t\t\t\t\t\t\tCommonCharactersToIgnore: pulumi.String(\"PUNCTUATION\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"DATE_OF_BIRTH\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tReplaceConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs{\n\t\t\t\t\t\t\t\t\tNewValue: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs{\n\t\t\t\t\t\t\t\t\t\tDateValue: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueDateValueArgs{\n\t\t\t\t\t\t\t\t\t\t\tYear: pulumi.Int(2020),\n\t\t\t\t\t\t\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\t\t\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"CREDIT_CARD_NUMBER\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tCryptoDeterministicConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigArgs{\n\t\t\t\t\t\t\t\t\tContext: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigContextArgs{\n\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"sometweak\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tCryptoKey: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyArgs{\n\t\t\t\t\t\t\t\t\t\tTransient: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyTransientArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"beep\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tSurrogateInfoType: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigSurrogateInfoTypeArgs{\n\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"abc\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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.dataloss.PreventionDeidentifyTemplate;\nimport com.pulumi.gcp.dataloss.PreventionDeidentifyTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs;\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 PreventionDeidentifyTemplate(\"basic\", PreventionDeidentifyTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .deidentifyConfig(PreventionDeidentifyTemplateDeidentifyConfigArgs.builder()\n .infoTypeTransformations(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs.builder()\n .transformations( \n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"FIRST_NAME\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .replaceWithInfoTypeConfig(true)\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes( \n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"PHONE_NUMBER\")\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"AGE\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .replaceConfig(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs.builder()\n .newValue(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs.builder()\n .integerValue(9)\n .build())\n .build())\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes( \n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"LAST_NAME\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .characterMaskConfig(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigArgs.builder()\n .maskingCharacter(\"X\")\n .numberToMask(4)\n .reverseOrder(true)\n .charactersToIgnores(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigCharactersToIgnoreArgs.builder()\n .commonCharactersToIgnore(\"PUNCTUATION\")\n .build())\n .build())\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"DATE_OF_BIRTH\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .replaceConfig(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs.builder()\n .newValue(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs.builder()\n .dateValue(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueDateValueArgs.builder()\n .year(2020)\n .month(1)\n .day(1)\n .build())\n .build())\n .build())\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"CREDIT_CARD_NUMBER\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .cryptoDeterministicConfig(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigArgs.builder()\n .context(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigContextArgs.builder()\n .name(\"sometweak\")\n .build())\n .cryptoKey(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyArgs.builder()\n .transient_(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyTransientArgs.builder()\n .name(\"beep\")\n .build())\n .build())\n .surrogateInfoType(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigSurrogateInfoTypeArgs.builder()\n .name(\"abc\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionDeidentifyTemplate\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n deidentifyConfig:\n infoTypeTransformations:\n transformations:\n - infoTypes:\n - name: FIRST_NAME\n primitiveTransformation:\n replaceWithInfoTypeConfig: true\n - infoTypes:\n - name: PHONE_NUMBER\n - name: AGE\n primitiveTransformation:\n replaceConfig:\n newValue:\n integerValue: 9\n - infoTypes:\n - name: EMAIL_ADDRESS\n - name: LAST_NAME\n primitiveTransformation:\n characterMaskConfig:\n maskingCharacter: X\n numberToMask: 4\n reverseOrder: true\n charactersToIgnores:\n - commonCharactersToIgnore: PUNCTUATION\n - infoTypes:\n - name: DATE_OF_BIRTH\n primitiveTransformation:\n replaceConfig:\n newValue:\n dateValue:\n year: 2020\n month: 1\n day: 1\n - infoTypes:\n - name: CREDIT_CARD_NUMBER\n primitiveTransformation:\n cryptoDeterministicConfig:\n context:\n name: sometweak\n cryptoKey:\n transient:\n name: beep\n surrogateInfoType:\n name: abc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Deidentify Template Image Transformations\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionDeidentifyTemplate(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n deidentifyConfig: {\n imageTransformations: {\n transforms: [\n {\n redactionColor: {\n red: 0.5,\n blue: 1,\n green: 0.2,\n },\n selectedInfoTypes: {\n infoTypes: [{\n name: \"COLOR_INFO\",\n version: \"latest\",\n }],\n },\n },\n {\n allInfoTypes: {},\n },\n {\n allText: {},\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionDeidentifyTemplate(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n deidentify_config={\n \"image_transformations\": {\n \"transforms\": [\n {\n \"redaction_color\": {\n \"red\": 0.5,\n \"blue\": 1,\n \"green\": 0.2,\n },\n \"selected_info_types\": {\n \"info_types\": [{\n \"name\": \"COLOR_INFO\",\n \"version\": \"latest\",\n }],\n },\n },\n {\n \"all_info_types\": {},\n },\n {\n \"all_text\": {},\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 basic = new Gcp.DataLoss.PreventionDeidentifyTemplate(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n DeidentifyConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs\n {\n ImageTransformations = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsArgs\n {\n Transforms = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs\n {\n RedactionColor = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformRedactionColorArgs\n {\n Red = 0.5,\n Blue = 1,\n Green = 0.2,\n },\n SelectedInfoTypes = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesInfoTypeArgs\n {\n Name = \"COLOR_INFO\",\n Version = \"latest\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs\n {\n AllInfoTypes = null,\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs\n {\n AllText = null,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionDeidentifyTemplate(ctx, \"basic\", \u0026dataloss.PreventionDeidentifyTemplateArgs{\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\tDeidentifyConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigArgs{\n\t\t\t\tImageTransformations: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsArgs{\n\t\t\t\t\tTransforms: dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs{\n\t\t\t\t\t\t\tRedactionColor: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformRedactionColorArgs{\n\t\t\t\t\t\t\t\tRed: pulumi.Float64(0.5),\n\t\t\t\t\t\t\t\tBlue: pulumi.Float64(1),\n\t\t\t\t\t\t\t\tGreen: pulumi.Float64(0.2),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tSelectedInfoTypes: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesArgs{\n\t\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesInfoTypeArray{\n\t\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesInfoTypeArgs{\n\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"COLOR_INFO\"),\n\t\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs{\n\t\t\t\t\t\t\tAllInfoTypes: nil,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs{\n\t\t\t\t\t\t\tAllText: nil,\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.dataloss.PreventionDeidentifyTemplate;\nimport com.pulumi.gcp.dataloss.PreventionDeidentifyTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsArgs;\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 PreventionDeidentifyTemplate(\"basic\", PreventionDeidentifyTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .deidentifyConfig(PreventionDeidentifyTemplateDeidentifyConfigArgs.builder()\n .imageTransformations(PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsArgs.builder()\n .transforms( \n PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs.builder()\n .redactionColor(PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformRedactionColorArgs.builder()\n .red(0.5)\n .blue(1)\n .green(0.2)\n .build())\n .selectedInfoTypes(PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesArgs.builder()\n .infoTypes(PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesInfoTypeArgs.builder()\n .name(\"COLOR_INFO\")\n .version(\"latest\")\n .build())\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs.builder()\n .allInfoTypes()\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs.builder()\n .allText()\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionDeidentifyTemplate\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n deidentifyConfig:\n imageTransformations:\n transforms:\n - redactionColor:\n red: 0.5\n blue: 1\n green: 0.2\n selectedInfoTypes:\n infoTypes:\n - name: COLOR_INFO\n version: latest\n - allInfoTypes: {}\n - allText: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDeidentifyTemplate can be imported using any of these accepted formats:\n\n* `{{parent}}/deidentifyTemplates/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, DeidentifyTemplate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataloss/preventionDeidentifyTemplate:PreventionDeidentifyTemplate default {{parent}}/deidentifyTemplates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataloss/preventionDeidentifyTemplate:PreventionDeidentifyTemplate default {{parent}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -174677,7 +174677,7 @@ } }, "gcp:dataloss/preventionInspectTemplate:PreventionInspectTemplate": { - "description": "An inspect job template.\n\n\nTo get more information about InspectTemplate, see:\n\n* [API documentation](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.inspectTemplates)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dlp/docs/creating-templates-inspect)\n\n## Example Usage\n\n### Dlp Inspect Template Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionInspectTemplate(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"My description\",\n displayName: \"display_name\",\n inspectConfig: {\n infoTypes: [\n {\n name: \"EMAIL_ADDRESS\",\n },\n {\n name: \"PERSON_NAME\",\n },\n {\n name: \"LAST_NAME\",\n },\n {\n name: \"DOMAIN_NAME\",\n },\n {\n name: \"PHONE_NUMBER\",\n },\n {\n name: \"FIRST_NAME\",\n },\n ],\n minLikelihood: \"UNLIKELY\",\n ruleSets: [\n {\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n rules: [{\n exclusionRule: {\n regex: {\n pattern: \".+@example.com\",\n },\n matchingType: \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [\n {\n name: \"EMAIL_ADDRESS\",\n },\n {\n name: \"DOMAIN_NAME\",\n },\n {\n name: \"PHONE_NUMBER\",\n },\n {\n name: \"PERSON_NAME\",\n },\n {\n name: \"FIRST_NAME\",\n },\n ],\n rules: [{\n exclusionRule: {\n dictionary: {\n wordList: {\n words: [\"TEST\"],\n },\n },\n matchingType: \"MATCHING_TYPE_PARTIAL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [{\n name: \"PERSON_NAME\",\n }],\n rules: [{\n hotwordRule: {\n hotwordRegex: {\n pattern: \"patient\",\n },\n proximity: {\n windowBefore: 50,\n },\n likelihoodAdjustment: {\n fixedLikelihood: \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n limits: {\n maxFindingsPerItem: 10,\n maxFindingsPerRequest: 50,\n maxFindingsPerInfoTypes: [\n {\n maxFindings: 75,\n infoType: {\n name: \"PERSON_NAME\",\n },\n },\n {\n maxFindings: 80,\n infoType: {\n name: \"LAST_NAME\",\n },\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionInspectTemplate(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"My description\",\n display_name=\"display_name\",\n inspect_config={\n \"infoTypes\": [\n {\n \"name\": \"EMAIL_ADDRESS\",\n },\n {\n \"name\": \"PERSON_NAME\",\n },\n {\n \"name\": \"LAST_NAME\",\n },\n {\n \"name\": \"DOMAIN_NAME\",\n },\n {\n \"name\": \"PHONE_NUMBER\",\n },\n {\n \"name\": \"FIRST_NAME\",\n },\n ],\n \"minLikelihood\": \"UNLIKELY\",\n \"ruleSets\": [\n {\n \"infoTypes\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"rules\": [{\n \"exclusionRule\": {\n \"regex\": {\n \"pattern\": \".+@example.com\",\n },\n \"matchingType\": \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n \"infoTypes\": [\n {\n \"name\": \"EMAIL_ADDRESS\",\n },\n {\n \"name\": \"DOMAIN_NAME\",\n },\n {\n \"name\": \"PHONE_NUMBER\",\n },\n {\n \"name\": \"PERSON_NAME\",\n },\n {\n \"name\": \"FIRST_NAME\",\n },\n ],\n \"rules\": [{\n \"exclusionRule\": {\n \"dictionary\": {\n \"wordList\": {\n \"words\": [\"TEST\"],\n },\n },\n \"matchingType\": \"MATCHING_TYPE_PARTIAL_MATCH\",\n },\n }],\n },\n {\n \"infoTypes\": [{\n \"name\": \"PERSON_NAME\",\n }],\n \"rules\": [{\n \"hotwordRule\": {\n \"hotwordRegex\": {\n \"pattern\": \"patient\",\n },\n \"proximity\": {\n \"windowBefore\": 50,\n },\n \"likelihoodAdjustment\": {\n \"fixedLikelihood\": \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n \"limits\": {\n \"maxFindingsPerItem\": 10,\n \"maxFindingsPerRequest\": 50,\n \"maxFindingsPerInfoTypes\": [\n {\n \"maxFindings\": 75,\n \"infoType\": {\n \"name\": \"PERSON_NAME\",\n },\n },\n {\n \"maxFindings\": 80,\n \"infoType\": {\n \"name\": \"LAST_NAME\",\n },\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 basic = new Gcp.DataLoss.PreventionInspectTemplate(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"My description\",\n DisplayName = \"display_name\",\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"LAST_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"DOMAIN_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"PHONE_NUMBER\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"FIRST_NAME\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n RuleSets = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Regex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs\n {\n Pattern = \".+@example.com\",\n },\n MatchingType = \"MATCHING_TYPE_FULL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"DOMAIN_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"PHONE_NUMBER\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"FIRST_NAME\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Dictionary = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryArgs\n {\n WordList = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryWordListArgs\n {\n Words = new[]\n {\n \"TEST\",\n },\n },\n },\n MatchingType = \"MATCHING_TYPE_PARTIAL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n HotwordRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs\n {\n HotwordRegex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs\n {\n Pattern = \"patient\",\n },\n Proximity = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs\n {\n WindowBefore = 50,\n },\n LikelihoodAdjustment = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs\n {\n FixedLikelihood = \"VERY_LIKELY\",\n },\n },\n },\n },\n },\n },\n Limits = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsArgs\n {\n MaxFindingsPerItem = 10,\n MaxFindingsPerRequest = 50,\n MaxFindingsPerInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs\n {\n MaxFindings = 75,\n InfoType = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs\n {\n MaxFindings = 80,\n InfoType = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs\n {\n Name = \"LAST_NAME\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionInspectTemplate(ctx, \"basic\", \u0026dataloss.PreventionInspectTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"My description\"),\n\t\t\tDisplayName: pulumi.String(\"display_name\"),\n\t\t\tInspectConfig: \u0026dataloss.PreventionInspectTemplateInspectConfigArgs{\n\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"LAST_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"DOMAIN_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"PHONE_NUMBER\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"FIRST_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\tRuleSets: dataloss.PreventionInspectTemplateInspectConfigRuleSetArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\".+@example.com\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_FULL_MATCH\"),\n\t\t\t\t\t\t\t\t},\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\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"DOMAIN_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PHONE_NUMBER\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"FIRST_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\tDictionary: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryArgs{\n\t\t\t\t\t\t\t\t\t\tWordList: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryWordListArgs{\n\t\t\t\t\t\t\t\t\t\t\tWords: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"TEST\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_PARTIAL_MATCH\"),\n\t\t\t\t\t\t\t\t},\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\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tHotwordRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs{\n\t\t\t\t\t\t\t\t\tHotwordRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\"patient\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tProximity: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs{\n\t\t\t\t\t\t\t\t\t\tWindowBefore: pulumi.Int(50),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tLikelihoodAdjustment: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs{\n\t\t\t\t\t\t\t\t\t\tFixedLikelihood: pulumi.String(\"VERY_LIKELY\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tLimits: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsArgs{\n\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(10),\n\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(50),\n\t\t\t\t\tMaxFindingsPerInfoTypes: dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs{\n\t\t\t\t\t\t\tMaxFindings: pulumi.Int(75),\n\t\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs{\n\t\t\t\t\t\t\tMaxFindings: pulumi.Int(80),\n\t\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"LAST_NAME\"),\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.dataloss.PreventionInspectTemplate;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigLimitsArgs;\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 PreventionInspectTemplate(\"basic\", PreventionInspectTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"My description\")\n .displayName(\"display_name\")\n .inspectConfig(PreventionInspectTemplateInspectConfigArgs.builder()\n .infoTypes( \n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"LAST_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"DOMAIN_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"PHONE_NUMBER\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"FIRST_NAME\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .ruleSets( \n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .regex(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs.builder()\n .pattern(\".+@example.com\")\n .build())\n .matchingType(\"MATCHING_TYPE_FULL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes( \n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"DOMAIN_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"PHONE_NUMBER\")\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"FIRST_NAME\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .dictionary(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryArgs.builder()\n .wordList(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryWordListArgs.builder()\n .words(\"TEST\")\n .build())\n .build())\n .matchingType(\"MATCHING_TYPE_PARTIAL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .hotwordRule(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs.builder()\n .hotwordRegex(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs.builder()\n .pattern(\"patient\")\n .build())\n .proximity(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs.builder()\n .windowBefore(50)\n .build())\n .likelihoodAdjustment(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs.builder()\n .fixedLikelihood(\"VERY_LIKELY\")\n .build())\n .build())\n .build())\n .build())\n .limits(PreventionInspectTemplateInspectConfigLimitsArgs.builder()\n .maxFindingsPerItem(10)\n .maxFindingsPerRequest(50)\n .maxFindingsPerInfoTypes( \n PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs.builder()\n .maxFindings(\"75\")\n .infoType(PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs.builder()\n .maxFindings(\"80\")\n .infoType(PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs.builder()\n .name(\"LAST_NAME\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionInspectTemplate\n properties:\n parent: projects/my-project-name\n description: My description\n displayName: display_name\n inspectConfig:\n infoTypes:\n - name: EMAIL_ADDRESS\n - name: PERSON_NAME\n - name: LAST_NAME\n - name: DOMAIN_NAME\n - name: PHONE_NUMBER\n - name: FIRST_NAME\n minLikelihood: UNLIKELY\n ruleSets:\n - infoTypes:\n - name: EMAIL_ADDRESS\n rules:\n - exclusionRule:\n regex:\n pattern: .+@example.com\n matchingType: MATCHING_TYPE_FULL_MATCH\n - infoTypes:\n - name: EMAIL_ADDRESS\n - name: DOMAIN_NAME\n - name: PHONE_NUMBER\n - name: PERSON_NAME\n - name: FIRST_NAME\n rules:\n - exclusionRule:\n dictionary:\n wordList:\n words:\n - TEST\n matchingType: MATCHING_TYPE_PARTIAL_MATCH\n - infoTypes:\n - name: PERSON_NAME\n rules:\n - hotwordRule:\n hotwordRegex:\n pattern: patient\n proximity:\n windowBefore: 50\n likelihoodAdjustment:\n fixedLikelihood: VERY_LIKELY\n limits:\n maxFindingsPerItem: 10\n maxFindingsPerRequest: 50\n maxFindingsPerInfoTypes:\n - maxFindings: '75'\n infoType:\n name: PERSON_NAME\n - maxFindings: '80'\n infoType:\n name: LAST_NAME\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Inspect Template Custom Type\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom = new gcp.dataloss.PreventionInspectTemplate(\"custom\", {\n parent: \"projects/my-project-name\",\n description: \"My description\",\n displayName: \"display_name\",\n inspectConfig: {\n customInfoTypes: [{\n infoType: {\n name: \"MY_CUSTOM_TYPE\",\n },\n likelihood: \"UNLIKELY\",\n regex: {\n pattern: \"test*\",\n },\n }],\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n minLikelihood: \"UNLIKELY\",\n ruleSets: [\n {\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n rules: [{\n exclusionRule: {\n regex: {\n pattern: \".+@example.com\",\n },\n matchingType: \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [{\n name: \"MY_CUSTOM_TYPE\",\n }],\n rules: [{\n hotwordRule: {\n hotwordRegex: {\n pattern: \"example*\",\n },\n proximity: {\n windowBefore: 50,\n },\n likelihoodAdjustment: {\n fixedLikelihood: \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n limits: {\n maxFindingsPerItem: 10,\n maxFindingsPerRequest: 50,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom = gcp.dataloss.PreventionInspectTemplate(\"custom\",\n parent=\"projects/my-project-name\",\n description=\"My description\",\n display_name=\"display_name\",\n inspect_config={\n \"customInfoTypes\": [{\n \"infoType\": {\n \"name\": \"MY_CUSTOM_TYPE\",\n },\n \"likelihood\": \"UNLIKELY\",\n \"regex\": {\n \"pattern\": \"test*\",\n },\n }],\n \"infoTypes\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"minLikelihood\": \"UNLIKELY\",\n \"ruleSets\": [\n {\n \"infoTypes\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"rules\": [{\n \"exclusionRule\": {\n \"regex\": {\n \"pattern\": \".+@example.com\",\n },\n \"matchingType\": \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n \"infoTypes\": [{\n \"name\": \"MY_CUSTOM_TYPE\",\n }],\n \"rules\": [{\n \"hotwordRule\": {\n \"hotwordRegex\": {\n \"pattern\": \"example*\",\n },\n \"proximity\": {\n \"windowBefore\": 50,\n },\n \"likelihoodAdjustment\": {\n \"fixedLikelihood\": \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n \"limits\": {\n \"maxFindingsPerItem\": 10,\n \"maxFindingsPerRequest\": 50,\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 custom = new Gcp.DataLoss.PreventionInspectTemplate(\"custom\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"My description\",\n DisplayName = \"display_name\",\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigArgs\n {\n CustomInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeArgs\n {\n InfoType = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n Likelihood = \"UNLIKELY\",\n Regex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeRegexArgs\n {\n Pattern = \"test*\",\n },\n },\n },\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n RuleSets = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Regex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs\n {\n Pattern = \".+@example.com\",\n },\n MatchingType = \"MATCHING_TYPE_FULL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n HotwordRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs\n {\n HotwordRegex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs\n {\n Pattern = \"example*\",\n },\n Proximity = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs\n {\n WindowBefore = 50,\n },\n LikelihoodAdjustment = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs\n {\n FixedLikelihood = \"VERY_LIKELY\",\n },\n },\n },\n },\n },\n },\n Limits = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsArgs\n {\n MaxFindingsPerItem = 10,\n MaxFindingsPerRequest = 50,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionInspectTemplate(ctx, \"custom\", \u0026dataloss.PreventionInspectTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"My description\"),\n\t\t\tDisplayName: pulumi.String(\"display_name\"),\n\t\t\tInspectConfig: \u0026dataloss.PreventionInspectTemplateInspectConfigArgs{\n\t\t\t\tCustomInfoTypes: dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeArgs{\n\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\t\t\tRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeRegexArgs{\n\t\t\t\t\t\t\tPattern: pulumi.String(\"test*\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\tRuleSets: dataloss.PreventionInspectTemplateInspectConfigRuleSetArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\".+@example.com\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_FULL_MATCH\"),\n\t\t\t\t\t\t\t\t},\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\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tHotwordRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs{\n\t\t\t\t\t\t\t\t\tHotwordRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\"example*\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tProximity: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs{\n\t\t\t\t\t\t\t\t\t\tWindowBefore: pulumi.Int(50),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tLikelihoodAdjustment: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs{\n\t\t\t\t\t\t\t\t\t\tFixedLikelihood: pulumi.String(\"VERY_LIKELY\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tLimits: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsArgs{\n\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(10),\n\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(50),\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.dataloss.PreventionInspectTemplate;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigLimitsArgs;\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 = new PreventionInspectTemplate(\"custom\", PreventionInspectTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"My description\")\n .displayName(\"display_name\")\n .inspectConfig(PreventionInspectTemplateInspectConfigArgs.builder()\n .customInfoTypes(PreventionInspectTemplateInspectConfigCustomInfoTypeArgs.builder()\n .infoType(PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .likelihood(\"UNLIKELY\")\n .regex(PreventionInspectTemplateInspectConfigCustomInfoTypeRegexArgs.builder()\n .pattern(\"test*\")\n .build())\n .build())\n .infoTypes(PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .ruleSets( \n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .regex(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs.builder()\n .pattern(\".+@example.com\")\n .build())\n .matchingType(\"MATCHING_TYPE_FULL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .hotwordRule(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs.builder()\n .hotwordRegex(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs.builder()\n .pattern(\"example*\")\n .build())\n .proximity(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs.builder()\n .windowBefore(50)\n .build())\n .likelihoodAdjustment(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs.builder()\n .fixedLikelihood(\"VERY_LIKELY\")\n .build())\n .build())\n .build())\n .build())\n .limits(PreventionInspectTemplateInspectConfigLimitsArgs.builder()\n .maxFindingsPerItem(10)\n .maxFindingsPerRequest(50)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n custom:\n type: gcp:dataloss:PreventionInspectTemplate\n properties:\n parent: projects/my-project-name\n description: My description\n displayName: display_name\n inspectConfig:\n customInfoTypes:\n - infoType:\n name: MY_CUSTOM_TYPE\n likelihood: UNLIKELY\n regex:\n pattern: test*\n infoTypes:\n - name: EMAIL_ADDRESS\n minLikelihood: UNLIKELY\n ruleSets:\n - infoTypes:\n - name: EMAIL_ADDRESS\n rules:\n - exclusionRule:\n regex:\n pattern: .+@example.com\n matchingType: MATCHING_TYPE_FULL_MATCH\n - infoTypes:\n - name: MY_CUSTOM_TYPE\n rules:\n - hotwordRule:\n hotwordRegex:\n pattern: example*\n proximity:\n windowBefore: 50\n likelihoodAdjustment:\n fixedLikelihood: VERY_LIKELY\n limits:\n maxFindingsPerItem: 10\n maxFindingsPerRequest: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Inspect Template Custom Type Surrogate\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customTypeSurrogate = new gcp.dataloss.PreventionInspectTemplate(\"custom_type_surrogate\", {\n parent: \"projects/my-project-name\",\n description: \"My description\",\n displayName: \"display_name\",\n inspectConfig: {\n customInfoTypes: [{\n infoType: {\n name: \"MY_CUSTOM_TYPE\",\n },\n likelihood: \"UNLIKELY\",\n surrogateType: {},\n }],\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n minLikelihood: \"UNLIKELY\",\n ruleSets: [\n {\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n rules: [{\n exclusionRule: {\n regex: {\n pattern: \".+@example.com\",\n },\n matchingType: \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [{\n name: \"MY_CUSTOM_TYPE\",\n }],\n rules: [{\n hotwordRule: {\n hotwordRegex: {\n pattern: \"example*\",\n },\n proximity: {\n windowBefore: 50,\n },\n likelihoodAdjustment: {\n fixedLikelihood: \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n limits: {\n maxFindingsPerItem: 10,\n maxFindingsPerRequest: 50,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_type_surrogate = gcp.dataloss.PreventionInspectTemplate(\"custom_type_surrogate\",\n parent=\"projects/my-project-name\",\n description=\"My description\",\n display_name=\"display_name\",\n inspect_config={\n \"customInfoTypes\": [{\n \"infoType\": {\n \"name\": \"MY_CUSTOM_TYPE\",\n },\n \"likelihood\": \"UNLIKELY\",\n \"surrogateType\": {},\n }],\n \"infoTypes\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"minLikelihood\": \"UNLIKELY\",\n \"ruleSets\": [\n {\n \"infoTypes\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"rules\": [{\n \"exclusionRule\": {\n \"regex\": {\n \"pattern\": \".+@example.com\",\n },\n \"matchingType\": \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n \"infoTypes\": [{\n \"name\": \"MY_CUSTOM_TYPE\",\n }],\n \"rules\": [{\n \"hotwordRule\": {\n \"hotwordRegex\": {\n \"pattern\": \"example*\",\n },\n \"proximity\": {\n \"windowBefore\": 50,\n },\n \"likelihoodAdjustment\": {\n \"fixedLikelihood\": \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n \"limits\": {\n \"maxFindingsPerItem\": 10,\n \"maxFindingsPerRequest\": 50,\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 customTypeSurrogate = new Gcp.DataLoss.PreventionInspectTemplate(\"custom_type_surrogate\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"My description\",\n DisplayName = \"display_name\",\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigArgs\n {\n CustomInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeArgs\n {\n InfoType = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n Likelihood = \"UNLIKELY\",\n SurrogateType = null,\n },\n },\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n RuleSets = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Regex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs\n {\n Pattern = \".+@example.com\",\n },\n MatchingType = \"MATCHING_TYPE_FULL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n HotwordRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs\n {\n HotwordRegex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs\n {\n Pattern = \"example*\",\n },\n Proximity = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs\n {\n WindowBefore = 50,\n },\n LikelihoodAdjustment = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs\n {\n FixedLikelihood = \"VERY_LIKELY\",\n },\n },\n },\n },\n },\n },\n Limits = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsArgs\n {\n MaxFindingsPerItem = 10,\n MaxFindingsPerRequest = 50,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionInspectTemplate(ctx, \"custom_type_surrogate\", \u0026dataloss.PreventionInspectTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"My description\"),\n\t\t\tDisplayName: pulumi.String(\"display_name\"),\n\t\t\tInspectConfig: \u0026dataloss.PreventionInspectTemplateInspectConfigArgs{\n\t\t\t\tCustomInfoTypes: dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeArgs{\n\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\t\t\tSurrogateType: nil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\tRuleSets: dataloss.PreventionInspectTemplateInspectConfigRuleSetArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\".+@example.com\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_FULL_MATCH\"),\n\t\t\t\t\t\t\t\t},\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\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tHotwordRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs{\n\t\t\t\t\t\t\t\t\tHotwordRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\"example*\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tProximity: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs{\n\t\t\t\t\t\t\t\t\t\tWindowBefore: pulumi.Int(50),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tLikelihoodAdjustment: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs{\n\t\t\t\t\t\t\t\t\t\tFixedLikelihood: pulumi.String(\"VERY_LIKELY\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tLimits: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsArgs{\n\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(10),\n\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(50),\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.dataloss.PreventionInspectTemplate;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigLimitsArgs;\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 customTypeSurrogate = new PreventionInspectTemplate(\"customTypeSurrogate\", PreventionInspectTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"My description\")\n .displayName(\"display_name\")\n .inspectConfig(PreventionInspectTemplateInspectConfigArgs.builder()\n .customInfoTypes(PreventionInspectTemplateInspectConfigCustomInfoTypeArgs.builder()\n .infoType(PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .likelihood(\"UNLIKELY\")\n .surrogateType()\n .build())\n .infoTypes(PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .ruleSets( \n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .regex(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs.builder()\n .pattern(\".+@example.com\")\n .build())\n .matchingType(\"MATCHING_TYPE_FULL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .hotwordRule(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs.builder()\n .hotwordRegex(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs.builder()\n .pattern(\"example*\")\n .build())\n .proximity(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs.builder()\n .windowBefore(50)\n .build())\n .likelihoodAdjustment(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs.builder()\n .fixedLikelihood(\"VERY_LIKELY\")\n .build())\n .build())\n .build())\n .build())\n .limits(PreventionInspectTemplateInspectConfigLimitsArgs.builder()\n .maxFindingsPerItem(10)\n .maxFindingsPerRequest(50)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customTypeSurrogate:\n type: gcp:dataloss:PreventionInspectTemplate\n name: custom_type_surrogate\n properties:\n parent: projects/my-project-name\n description: My description\n displayName: display_name\n inspectConfig:\n customInfoTypes:\n - infoType:\n name: MY_CUSTOM_TYPE\n likelihood: UNLIKELY\n surrogateType: {}\n infoTypes:\n - name: EMAIL_ADDRESS\n minLikelihood: UNLIKELY\n ruleSets:\n - infoTypes:\n - name: EMAIL_ADDRESS\n rules:\n - exclusionRule:\n regex:\n pattern: .+@example.com\n matchingType: MATCHING_TYPE_FULL_MATCH\n - infoTypes:\n - name: MY_CUSTOM_TYPE\n rules:\n - hotwordRule:\n hotwordRegex:\n pattern: example*\n proximity:\n windowBefore: 50\n likelihoodAdjustment:\n fixedLikelihood: VERY_LIKELY\n limits:\n maxFindingsPerItem: 10\n maxFindingsPerRequest: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Inspect Template Max Infotype Per Finding Default\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst maxInfotypePerFindingDefault = new gcp.dataloss.PreventionInspectTemplate(\"max_infotype_per_finding_default\", {\n parent: \"projects/my-project-name\",\n inspectConfig: {\n infoTypes: [\n {\n name: \"EMAIL_ADDRESS\",\n },\n {\n name: \"PERSON_NAME\",\n },\n ],\n minLikelihood: \"UNLIKELY\",\n limits: {\n maxFindingsPerRequest: 333,\n maxFindingsPerItem: 222,\n maxFindingsPerInfoTypes: [{\n maxFindings: 111,\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmax_infotype_per_finding_default = gcp.dataloss.PreventionInspectTemplate(\"max_infotype_per_finding_default\",\n parent=\"projects/my-project-name\",\n inspect_config={\n \"infoTypes\": [\n {\n \"name\": \"EMAIL_ADDRESS\",\n },\n {\n \"name\": \"PERSON_NAME\",\n },\n ],\n \"minLikelihood\": \"UNLIKELY\",\n \"limits\": {\n \"maxFindingsPerRequest\": 333,\n \"maxFindingsPerItem\": 222,\n \"maxFindingsPerInfoTypes\": [{\n \"maxFindings\": 111,\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 maxInfotypePerFindingDefault = new Gcp.DataLoss.PreventionInspectTemplate(\"max_infotype_per_finding_default\", new()\n {\n Parent = \"projects/my-project-name\",\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n Limits = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsArgs\n {\n MaxFindingsPerRequest = 333,\n MaxFindingsPerItem = 222,\n MaxFindingsPerInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs\n {\n MaxFindings = 111,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionInspectTemplate(ctx, \"max_infotype_per_finding_default\", \u0026dataloss.PreventionInspectTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tInspectConfig: \u0026dataloss.PreventionInspectTemplateInspectConfigArgs{\n\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\tLimits: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsArgs{\n\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(333),\n\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(222),\n\t\t\t\t\tMaxFindingsPerInfoTypes: dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs{\n\t\t\t\t\t\t\tMaxFindings: pulumi.Int(111),\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.dataloss.PreventionInspectTemplate;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigLimitsArgs;\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 maxInfotypePerFindingDefault = new PreventionInspectTemplate(\"maxInfotypePerFindingDefault\", PreventionInspectTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .inspectConfig(PreventionInspectTemplateInspectConfigArgs.builder()\n .infoTypes( \n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .limits(PreventionInspectTemplateInspectConfigLimitsArgs.builder()\n .maxFindingsPerRequest(333)\n .maxFindingsPerItem(222)\n .maxFindingsPerInfoTypes(PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs.builder()\n .maxFindings(111)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n maxInfotypePerFindingDefault:\n type: gcp:dataloss:PreventionInspectTemplate\n name: max_infotype_per_finding_default\n properties:\n parent: projects/my-project-name\n inspectConfig:\n infoTypes:\n - name: EMAIL_ADDRESS\n - name: PERSON_NAME\n minLikelihood: UNLIKELY\n limits:\n maxFindingsPerRequest: 333\n maxFindingsPerItem: 222\n maxFindingsPerInfoTypes:\n - maxFindings: 111\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInspectTemplate can be imported using any of these accepted formats:\n\n* `{{parent}}/inspectTemplates/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, InspectTemplate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataloss/preventionInspectTemplate:PreventionInspectTemplate default {{parent}}/inspectTemplates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataloss/preventionInspectTemplate:PreventionInspectTemplate default {{parent}}/{{name}}\n```\n\n", + "description": "An inspect job template.\n\n\nTo get more information about InspectTemplate, see:\n\n* [API documentation](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.inspectTemplates)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dlp/docs/creating-templates-inspect)\n\n## Example Usage\n\n### Dlp Inspect Template Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionInspectTemplate(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"My description\",\n displayName: \"display_name\",\n inspectConfig: {\n infoTypes: [\n {\n name: \"EMAIL_ADDRESS\",\n },\n {\n name: \"PERSON_NAME\",\n },\n {\n name: \"LAST_NAME\",\n },\n {\n name: \"DOMAIN_NAME\",\n },\n {\n name: \"PHONE_NUMBER\",\n },\n {\n name: \"FIRST_NAME\",\n },\n ],\n minLikelihood: \"UNLIKELY\",\n ruleSets: [\n {\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n rules: [{\n exclusionRule: {\n regex: {\n pattern: \".+@example.com\",\n },\n matchingType: \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [\n {\n name: \"EMAIL_ADDRESS\",\n },\n {\n name: \"DOMAIN_NAME\",\n },\n {\n name: \"PHONE_NUMBER\",\n },\n {\n name: \"PERSON_NAME\",\n },\n {\n name: \"FIRST_NAME\",\n },\n ],\n rules: [{\n exclusionRule: {\n dictionary: {\n wordList: {\n words: [\"TEST\"],\n },\n },\n matchingType: \"MATCHING_TYPE_PARTIAL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [{\n name: \"PERSON_NAME\",\n }],\n rules: [{\n hotwordRule: {\n hotwordRegex: {\n pattern: \"patient\",\n },\n proximity: {\n windowBefore: 50,\n },\n likelihoodAdjustment: {\n fixedLikelihood: \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n limits: {\n maxFindingsPerItem: 10,\n maxFindingsPerRequest: 50,\n maxFindingsPerInfoTypes: [\n {\n maxFindings: 75,\n infoType: {\n name: \"PERSON_NAME\",\n },\n },\n {\n maxFindings: 80,\n infoType: {\n name: \"LAST_NAME\",\n },\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionInspectTemplate(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"My description\",\n display_name=\"display_name\",\n inspect_config={\n \"info_types\": [\n {\n \"name\": \"EMAIL_ADDRESS\",\n },\n {\n \"name\": \"PERSON_NAME\",\n },\n {\n \"name\": \"LAST_NAME\",\n },\n {\n \"name\": \"DOMAIN_NAME\",\n },\n {\n \"name\": \"PHONE_NUMBER\",\n },\n {\n \"name\": \"FIRST_NAME\",\n },\n ],\n \"min_likelihood\": \"UNLIKELY\",\n \"rule_sets\": [\n {\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"rules\": [{\n \"exclusion_rule\": {\n \"regex\": {\n \"pattern\": \".+@example.com\",\n },\n \"matching_type\": \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n \"info_types\": [\n {\n \"name\": \"EMAIL_ADDRESS\",\n },\n {\n \"name\": \"DOMAIN_NAME\",\n },\n {\n \"name\": \"PHONE_NUMBER\",\n },\n {\n \"name\": \"PERSON_NAME\",\n },\n {\n \"name\": \"FIRST_NAME\",\n },\n ],\n \"rules\": [{\n \"exclusion_rule\": {\n \"dictionary\": {\n \"word_list\": {\n \"words\": [\"TEST\"],\n },\n },\n \"matching_type\": \"MATCHING_TYPE_PARTIAL_MATCH\",\n },\n }],\n },\n {\n \"info_types\": [{\n \"name\": \"PERSON_NAME\",\n }],\n \"rules\": [{\n \"hotword_rule\": {\n \"hotword_regex\": {\n \"pattern\": \"patient\",\n },\n \"proximity\": {\n \"window_before\": 50,\n },\n \"likelihood_adjustment\": {\n \"fixed_likelihood\": \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n \"limits\": {\n \"max_findings_per_item\": 10,\n \"max_findings_per_request\": 50,\n \"max_findings_per_info_types\": [\n {\n \"max_findings\": 75,\n \"info_type\": {\n \"name\": \"PERSON_NAME\",\n },\n },\n {\n \"max_findings\": 80,\n \"info_type\": {\n \"name\": \"LAST_NAME\",\n },\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 basic = new Gcp.DataLoss.PreventionInspectTemplate(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"My description\",\n DisplayName = \"display_name\",\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"LAST_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"DOMAIN_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"PHONE_NUMBER\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"FIRST_NAME\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n RuleSets = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Regex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs\n {\n Pattern = \".+@example.com\",\n },\n MatchingType = \"MATCHING_TYPE_FULL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"DOMAIN_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"PHONE_NUMBER\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"FIRST_NAME\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Dictionary = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryArgs\n {\n WordList = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryWordListArgs\n {\n Words = new[]\n {\n \"TEST\",\n },\n },\n },\n MatchingType = \"MATCHING_TYPE_PARTIAL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n HotwordRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs\n {\n HotwordRegex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs\n {\n Pattern = \"patient\",\n },\n Proximity = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs\n {\n WindowBefore = 50,\n },\n LikelihoodAdjustment = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs\n {\n FixedLikelihood = \"VERY_LIKELY\",\n },\n },\n },\n },\n },\n },\n Limits = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsArgs\n {\n MaxFindingsPerItem = 10,\n MaxFindingsPerRequest = 50,\n MaxFindingsPerInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs\n {\n MaxFindings = 75,\n InfoType = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs\n {\n MaxFindings = 80,\n InfoType = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs\n {\n Name = \"LAST_NAME\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionInspectTemplate(ctx, \"basic\", \u0026dataloss.PreventionInspectTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"My description\"),\n\t\t\tDisplayName: pulumi.String(\"display_name\"),\n\t\t\tInspectConfig: \u0026dataloss.PreventionInspectTemplateInspectConfigArgs{\n\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"LAST_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"DOMAIN_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"PHONE_NUMBER\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"FIRST_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\tRuleSets: dataloss.PreventionInspectTemplateInspectConfigRuleSetArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\".+@example.com\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_FULL_MATCH\"),\n\t\t\t\t\t\t\t\t},\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\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"DOMAIN_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PHONE_NUMBER\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"FIRST_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\tDictionary: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryArgs{\n\t\t\t\t\t\t\t\t\t\tWordList: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryWordListArgs{\n\t\t\t\t\t\t\t\t\t\t\tWords: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"TEST\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_PARTIAL_MATCH\"),\n\t\t\t\t\t\t\t\t},\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\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tHotwordRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs{\n\t\t\t\t\t\t\t\t\tHotwordRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\"patient\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tProximity: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs{\n\t\t\t\t\t\t\t\t\t\tWindowBefore: pulumi.Int(50),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tLikelihoodAdjustment: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs{\n\t\t\t\t\t\t\t\t\t\tFixedLikelihood: pulumi.String(\"VERY_LIKELY\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tLimits: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsArgs{\n\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(10),\n\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(50),\n\t\t\t\t\tMaxFindingsPerInfoTypes: dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs{\n\t\t\t\t\t\t\tMaxFindings: pulumi.Int(75),\n\t\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs{\n\t\t\t\t\t\t\tMaxFindings: pulumi.Int(80),\n\t\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"LAST_NAME\"),\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.dataloss.PreventionInspectTemplate;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigLimitsArgs;\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 PreventionInspectTemplate(\"basic\", PreventionInspectTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"My description\")\n .displayName(\"display_name\")\n .inspectConfig(PreventionInspectTemplateInspectConfigArgs.builder()\n .infoTypes( \n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"LAST_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"DOMAIN_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"PHONE_NUMBER\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"FIRST_NAME\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .ruleSets( \n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .regex(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs.builder()\n .pattern(\".+@example.com\")\n .build())\n .matchingType(\"MATCHING_TYPE_FULL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes( \n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"DOMAIN_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"PHONE_NUMBER\")\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"FIRST_NAME\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .dictionary(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryArgs.builder()\n .wordList(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryWordListArgs.builder()\n .words(\"TEST\")\n .build())\n .build())\n .matchingType(\"MATCHING_TYPE_PARTIAL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .hotwordRule(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs.builder()\n .hotwordRegex(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs.builder()\n .pattern(\"patient\")\n .build())\n .proximity(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs.builder()\n .windowBefore(50)\n .build())\n .likelihoodAdjustment(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs.builder()\n .fixedLikelihood(\"VERY_LIKELY\")\n .build())\n .build())\n .build())\n .build())\n .limits(PreventionInspectTemplateInspectConfigLimitsArgs.builder()\n .maxFindingsPerItem(10)\n .maxFindingsPerRequest(50)\n .maxFindingsPerInfoTypes( \n PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs.builder()\n .maxFindings(\"75\")\n .infoType(PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs.builder()\n .maxFindings(\"80\")\n .infoType(PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs.builder()\n .name(\"LAST_NAME\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionInspectTemplate\n properties:\n parent: projects/my-project-name\n description: My description\n displayName: display_name\n inspectConfig:\n infoTypes:\n - name: EMAIL_ADDRESS\n - name: PERSON_NAME\n - name: LAST_NAME\n - name: DOMAIN_NAME\n - name: PHONE_NUMBER\n - name: FIRST_NAME\n minLikelihood: UNLIKELY\n ruleSets:\n - infoTypes:\n - name: EMAIL_ADDRESS\n rules:\n - exclusionRule:\n regex:\n pattern: .+@example.com\n matchingType: MATCHING_TYPE_FULL_MATCH\n - infoTypes:\n - name: EMAIL_ADDRESS\n - name: DOMAIN_NAME\n - name: PHONE_NUMBER\n - name: PERSON_NAME\n - name: FIRST_NAME\n rules:\n - exclusionRule:\n dictionary:\n wordList:\n words:\n - TEST\n matchingType: MATCHING_TYPE_PARTIAL_MATCH\n - infoTypes:\n - name: PERSON_NAME\n rules:\n - hotwordRule:\n hotwordRegex:\n pattern: patient\n proximity:\n windowBefore: 50\n likelihoodAdjustment:\n fixedLikelihood: VERY_LIKELY\n limits:\n maxFindingsPerItem: 10\n maxFindingsPerRequest: 50\n maxFindingsPerInfoTypes:\n - maxFindings: '75'\n infoType:\n name: PERSON_NAME\n - maxFindings: '80'\n infoType:\n name: LAST_NAME\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Inspect Template Custom Type\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom = new gcp.dataloss.PreventionInspectTemplate(\"custom\", {\n parent: \"projects/my-project-name\",\n description: \"My description\",\n displayName: \"display_name\",\n inspectConfig: {\n customInfoTypes: [{\n infoType: {\n name: \"MY_CUSTOM_TYPE\",\n },\n likelihood: \"UNLIKELY\",\n regex: {\n pattern: \"test*\",\n },\n }],\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n minLikelihood: \"UNLIKELY\",\n ruleSets: [\n {\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n rules: [{\n exclusionRule: {\n regex: {\n pattern: \".+@example.com\",\n },\n matchingType: \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [{\n name: \"MY_CUSTOM_TYPE\",\n }],\n rules: [{\n hotwordRule: {\n hotwordRegex: {\n pattern: \"example*\",\n },\n proximity: {\n windowBefore: 50,\n },\n likelihoodAdjustment: {\n fixedLikelihood: \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n limits: {\n maxFindingsPerItem: 10,\n maxFindingsPerRequest: 50,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom = gcp.dataloss.PreventionInspectTemplate(\"custom\",\n parent=\"projects/my-project-name\",\n description=\"My description\",\n display_name=\"display_name\",\n inspect_config={\n \"custom_info_types\": [{\n \"info_type\": {\n \"name\": \"MY_CUSTOM_TYPE\",\n },\n \"likelihood\": \"UNLIKELY\",\n \"regex\": {\n \"pattern\": \"test*\",\n },\n }],\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"min_likelihood\": \"UNLIKELY\",\n \"rule_sets\": [\n {\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"rules\": [{\n \"exclusion_rule\": {\n \"regex\": {\n \"pattern\": \".+@example.com\",\n },\n \"matching_type\": \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n \"info_types\": [{\n \"name\": \"MY_CUSTOM_TYPE\",\n }],\n \"rules\": [{\n \"hotword_rule\": {\n \"hotword_regex\": {\n \"pattern\": \"example*\",\n },\n \"proximity\": {\n \"window_before\": 50,\n },\n \"likelihood_adjustment\": {\n \"fixed_likelihood\": \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n \"limits\": {\n \"max_findings_per_item\": 10,\n \"max_findings_per_request\": 50,\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 custom = new Gcp.DataLoss.PreventionInspectTemplate(\"custom\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"My description\",\n DisplayName = \"display_name\",\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigArgs\n {\n CustomInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeArgs\n {\n InfoType = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n Likelihood = \"UNLIKELY\",\n Regex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeRegexArgs\n {\n Pattern = \"test*\",\n },\n },\n },\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n RuleSets = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Regex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs\n {\n Pattern = \".+@example.com\",\n },\n MatchingType = \"MATCHING_TYPE_FULL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n HotwordRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs\n {\n HotwordRegex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs\n {\n Pattern = \"example*\",\n },\n Proximity = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs\n {\n WindowBefore = 50,\n },\n LikelihoodAdjustment = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs\n {\n FixedLikelihood = \"VERY_LIKELY\",\n },\n },\n },\n },\n },\n },\n Limits = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsArgs\n {\n MaxFindingsPerItem = 10,\n MaxFindingsPerRequest = 50,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionInspectTemplate(ctx, \"custom\", \u0026dataloss.PreventionInspectTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"My description\"),\n\t\t\tDisplayName: pulumi.String(\"display_name\"),\n\t\t\tInspectConfig: \u0026dataloss.PreventionInspectTemplateInspectConfigArgs{\n\t\t\t\tCustomInfoTypes: dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeArgs{\n\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\t\t\tRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeRegexArgs{\n\t\t\t\t\t\t\tPattern: pulumi.String(\"test*\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\tRuleSets: dataloss.PreventionInspectTemplateInspectConfigRuleSetArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\".+@example.com\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_FULL_MATCH\"),\n\t\t\t\t\t\t\t\t},\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\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tHotwordRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs{\n\t\t\t\t\t\t\t\t\tHotwordRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\"example*\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tProximity: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs{\n\t\t\t\t\t\t\t\t\t\tWindowBefore: pulumi.Int(50),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tLikelihoodAdjustment: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs{\n\t\t\t\t\t\t\t\t\t\tFixedLikelihood: pulumi.String(\"VERY_LIKELY\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tLimits: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsArgs{\n\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(10),\n\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(50),\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.dataloss.PreventionInspectTemplate;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigLimitsArgs;\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 = new PreventionInspectTemplate(\"custom\", PreventionInspectTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"My description\")\n .displayName(\"display_name\")\n .inspectConfig(PreventionInspectTemplateInspectConfigArgs.builder()\n .customInfoTypes(PreventionInspectTemplateInspectConfigCustomInfoTypeArgs.builder()\n .infoType(PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .likelihood(\"UNLIKELY\")\n .regex(PreventionInspectTemplateInspectConfigCustomInfoTypeRegexArgs.builder()\n .pattern(\"test*\")\n .build())\n .build())\n .infoTypes(PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .ruleSets( \n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .regex(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs.builder()\n .pattern(\".+@example.com\")\n .build())\n .matchingType(\"MATCHING_TYPE_FULL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .hotwordRule(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs.builder()\n .hotwordRegex(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs.builder()\n .pattern(\"example*\")\n .build())\n .proximity(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs.builder()\n .windowBefore(50)\n .build())\n .likelihoodAdjustment(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs.builder()\n .fixedLikelihood(\"VERY_LIKELY\")\n .build())\n .build())\n .build())\n .build())\n .limits(PreventionInspectTemplateInspectConfigLimitsArgs.builder()\n .maxFindingsPerItem(10)\n .maxFindingsPerRequest(50)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n custom:\n type: gcp:dataloss:PreventionInspectTemplate\n properties:\n parent: projects/my-project-name\n description: My description\n displayName: display_name\n inspectConfig:\n customInfoTypes:\n - infoType:\n name: MY_CUSTOM_TYPE\n likelihood: UNLIKELY\n regex:\n pattern: test*\n infoTypes:\n - name: EMAIL_ADDRESS\n minLikelihood: UNLIKELY\n ruleSets:\n - infoTypes:\n - name: EMAIL_ADDRESS\n rules:\n - exclusionRule:\n regex:\n pattern: .+@example.com\n matchingType: MATCHING_TYPE_FULL_MATCH\n - infoTypes:\n - name: MY_CUSTOM_TYPE\n rules:\n - hotwordRule:\n hotwordRegex:\n pattern: example*\n proximity:\n windowBefore: 50\n likelihoodAdjustment:\n fixedLikelihood: VERY_LIKELY\n limits:\n maxFindingsPerItem: 10\n maxFindingsPerRequest: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Inspect Template Custom Type Surrogate\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customTypeSurrogate = new gcp.dataloss.PreventionInspectTemplate(\"custom_type_surrogate\", {\n parent: \"projects/my-project-name\",\n description: \"My description\",\n displayName: \"display_name\",\n inspectConfig: {\n customInfoTypes: [{\n infoType: {\n name: \"MY_CUSTOM_TYPE\",\n },\n likelihood: \"UNLIKELY\",\n surrogateType: {},\n }],\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n minLikelihood: \"UNLIKELY\",\n ruleSets: [\n {\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n rules: [{\n exclusionRule: {\n regex: {\n pattern: \".+@example.com\",\n },\n matchingType: \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [{\n name: \"MY_CUSTOM_TYPE\",\n }],\n rules: [{\n hotwordRule: {\n hotwordRegex: {\n pattern: \"example*\",\n },\n proximity: {\n windowBefore: 50,\n },\n likelihoodAdjustment: {\n fixedLikelihood: \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n limits: {\n maxFindingsPerItem: 10,\n maxFindingsPerRequest: 50,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_type_surrogate = gcp.dataloss.PreventionInspectTemplate(\"custom_type_surrogate\",\n parent=\"projects/my-project-name\",\n description=\"My description\",\n display_name=\"display_name\",\n inspect_config={\n \"custom_info_types\": [{\n \"info_type\": {\n \"name\": \"MY_CUSTOM_TYPE\",\n },\n \"likelihood\": \"UNLIKELY\",\n \"surrogate_type\": {},\n }],\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"min_likelihood\": \"UNLIKELY\",\n \"rule_sets\": [\n {\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"rules\": [{\n \"exclusion_rule\": {\n \"regex\": {\n \"pattern\": \".+@example.com\",\n },\n \"matching_type\": \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n \"info_types\": [{\n \"name\": \"MY_CUSTOM_TYPE\",\n }],\n \"rules\": [{\n \"hotword_rule\": {\n \"hotword_regex\": {\n \"pattern\": \"example*\",\n },\n \"proximity\": {\n \"window_before\": 50,\n },\n \"likelihood_adjustment\": {\n \"fixed_likelihood\": \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n \"limits\": {\n \"max_findings_per_item\": 10,\n \"max_findings_per_request\": 50,\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 customTypeSurrogate = new Gcp.DataLoss.PreventionInspectTemplate(\"custom_type_surrogate\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"My description\",\n DisplayName = \"display_name\",\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigArgs\n {\n CustomInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeArgs\n {\n InfoType = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n Likelihood = \"UNLIKELY\",\n SurrogateType = null,\n },\n },\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n RuleSets = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Regex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs\n {\n Pattern = \".+@example.com\",\n },\n MatchingType = \"MATCHING_TYPE_FULL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n HotwordRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs\n {\n HotwordRegex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs\n {\n Pattern = \"example*\",\n },\n Proximity = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs\n {\n WindowBefore = 50,\n },\n LikelihoodAdjustment = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs\n {\n FixedLikelihood = \"VERY_LIKELY\",\n },\n },\n },\n },\n },\n },\n Limits = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsArgs\n {\n MaxFindingsPerItem = 10,\n MaxFindingsPerRequest = 50,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionInspectTemplate(ctx, \"custom_type_surrogate\", \u0026dataloss.PreventionInspectTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"My description\"),\n\t\t\tDisplayName: pulumi.String(\"display_name\"),\n\t\t\tInspectConfig: \u0026dataloss.PreventionInspectTemplateInspectConfigArgs{\n\t\t\t\tCustomInfoTypes: dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeArgs{\n\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\t\t\tSurrogateType: nil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\tRuleSets: dataloss.PreventionInspectTemplateInspectConfigRuleSetArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\".+@example.com\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_FULL_MATCH\"),\n\t\t\t\t\t\t\t\t},\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\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tHotwordRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs{\n\t\t\t\t\t\t\t\t\tHotwordRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\"example*\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tProximity: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs{\n\t\t\t\t\t\t\t\t\t\tWindowBefore: pulumi.Int(50),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tLikelihoodAdjustment: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs{\n\t\t\t\t\t\t\t\t\t\tFixedLikelihood: pulumi.String(\"VERY_LIKELY\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tLimits: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsArgs{\n\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(10),\n\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(50),\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.dataloss.PreventionInspectTemplate;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigLimitsArgs;\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 customTypeSurrogate = new PreventionInspectTemplate(\"customTypeSurrogate\", PreventionInspectTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"My description\")\n .displayName(\"display_name\")\n .inspectConfig(PreventionInspectTemplateInspectConfigArgs.builder()\n .customInfoTypes(PreventionInspectTemplateInspectConfigCustomInfoTypeArgs.builder()\n .infoType(PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .likelihood(\"UNLIKELY\")\n .surrogateType()\n .build())\n .infoTypes(PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .ruleSets( \n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .regex(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs.builder()\n .pattern(\".+@example.com\")\n .build())\n .matchingType(\"MATCHING_TYPE_FULL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .hotwordRule(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs.builder()\n .hotwordRegex(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs.builder()\n .pattern(\"example*\")\n .build())\n .proximity(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs.builder()\n .windowBefore(50)\n .build())\n .likelihoodAdjustment(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs.builder()\n .fixedLikelihood(\"VERY_LIKELY\")\n .build())\n .build())\n .build())\n .build())\n .limits(PreventionInspectTemplateInspectConfigLimitsArgs.builder()\n .maxFindingsPerItem(10)\n .maxFindingsPerRequest(50)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customTypeSurrogate:\n type: gcp:dataloss:PreventionInspectTemplate\n name: custom_type_surrogate\n properties:\n parent: projects/my-project-name\n description: My description\n displayName: display_name\n inspectConfig:\n customInfoTypes:\n - infoType:\n name: MY_CUSTOM_TYPE\n likelihood: UNLIKELY\n surrogateType: {}\n infoTypes:\n - name: EMAIL_ADDRESS\n minLikelihood: UNLIKELY\n ruleSets:\n - infoTypes:\n - name: EMAIL_ADDRESS\n rules:\n - exclusionRule:\n regex:\n pattern: .+@example.com\n matchingType: MATCHING_TYPE_FULL_MATCH\n - infoTypes:\n - name: MY_CUSTOM_TYPE\n rules:\n - hotwordRule:\n hotwordRegex:\n pattern: example*\n proximity:\n windowBefore: 50\n likelihoodAdjustment:\n fixedLikelihood: VERY_LIKELY\n limits:\n maxFindingsPerItem: 10\n maxFindingsPerRequest: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Inspect Template Max Infotype Per Finding Default\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst maxInfotypePerFindingDefault = new gcp.dataloss.PreventionInspectTemplate(\"max_infotype_per_finding_default\", {\n parent: \"projects/my-project-name\",\n inspectConfig: {\n infoTypes: [\n {\n name: \"EMAIL_ADDRESS\",\n },\n {\n name: \"PERSON_NAME\",\n },\n ],\n minLikelihood: \"UNLIKELY\",\n limits: {\n maxFindingsPerRequest: 333,\n maxFindingsPerItem: 222,\n maxFindingsPerInfoTypes: [{\n maxFindings: 111,\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmax_infotype_per_finding_default = gcp.dataloss.PreventionInspectTemplate(\"max_infotype_per_finding_default\",\n parent=\"projects/my-project-name\",\n inspect_config={\n \"info_types\": [\n {\n \"name\": \"EMAIL_ADDRESS\",\n },\n {\n \"name\": \"PERSON_NAME\",\n },\n ],\n \"min_likelihood\": \"UNLIKELY\",\n \"limits\": {\n \"max_findings_per_request\": 333,\n \"max_findings_per_item\": 222,\n \"max_findings_per_info_types\": [{\n \"max_findings\": 111,\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 maxInfotypePerFindingDefault = new Gcp.DataLoss.PreventionInspectTemplate(\"max_infotype_per_finding_default\", new()\n {\n Parent = \"projects/my-project-name\",\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n Limits = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsArgs\n {\n MaxFindingsPerRequest = 333,\n MaxFindingsPerItem = 222,\n MaxFindingsPerInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs\n {\n MaxFindings = 111,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionInspectTemplate(ctx, \"max_infotype_per_finding_default\", \u0026dataloss.PreventionInspectTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tInspectConfig: \u0026dataloss.PreventionInspectTemplateInspectConfigArgs{\n\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\tLimits: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsArgs{\n\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(333),\n\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(222),\n\t\t\t\t\tMaxFindingsPerInfoTypes: dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs{\n\t\t\t\t\t\t\tMaxFindings: pulumi.Int(111),\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.dataloss.PreventionInspectTemplate;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigLimitsArgs;\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 maxInfotypePerFindingDefault = new PreventionInspectTemplate(\"maxInfotypePerFindingDefault\", PreventionInspectTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .inspectConfig(PreventionInspectTemplateInspectConfigArgs.builder()\n .infoTypes( \n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .limits(PreventionInspectTemplateInspectConfigLimitsArgs.builder()\n .maxFindingsPerRequest(333)\n .maxFindingsPerItem(222)\n .maxFindingsPerInfoTypes(PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs.builder()\n .maxFindings(111)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n maxInfotypePerFindingDefault:\n type: gcp:dataloss:PreventionInspectTemplate\n name: max_infotype_per_finding_default\n properties:\n parent: projects/my-project-name\n inspectConfig:\n infoTypes:\n - name: EMAIL_ADDRESS\n - name: PERSON_NAME\n minLikelihood: UNLIKELY\n limits:\n maxFindingsPerRequest: 333\n maxFindingsPerItem: 222\n maxFindingsPerInfoTypes:\n - maxFindings: 111\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInspectTemplate can be imported using any of these accepted formats:\n\n* `{{parent}}/inspectTemplates/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, InspectTemplate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataloss/preventionInspectTemplate:PreventionInspectTemplate default {{parent}}/inspectTemplates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataloss/preventionInspectTemplate:PreventionInspectTemplate default {{parent}}/{{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -174770,7 +174770,7 @@ } }, "gcp:dataloss/preventionJobTrigger:PreventionJobTrigger": { - "description": "A job trigger configuration.\n\n\nTo get more information about JobTrigger, see:\n\n* [API documentation](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.jobTriggers)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dlp/docs/creating-job-triggers)\n\n## Example Usage\n\n### Dlp Job Trigger Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionJobTrigger(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionJobTrigger(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrencePeriodDuration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspectTemplateName\": \"fake\",\n \"actions\": [{\n \"saveFindings\": {\n \"outputConfig\": {\n \"table\": {\n \"projectId\": \"project\",\n \"datasetId\": \"dataset\",\n },\n },\n },\n }],\n \"storageConfig\": {\n \"cloudStorageOptions\": {\n \"fileSet\": {\n \"url\": \"gs://mybucket/directory/\",\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 basic = new Gcp.DataLoss.PreventionJobTrigger(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"basic\", \u0026dataloss.PreventionJobTriggerArgs{\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\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\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\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\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 PreventionJobTrigger(\"basic\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Bigquery Row Limit\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bigqueryRowLimit = new gcp.dataloss.PreventionJobTrigger(\"bigquery_row_limit\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n bigQueryOptions: {\n tableReference: {\n projectId: \"project\",\n datasetId: \"dataset\",\n tableId: \"table_to_scan\",\n },\n rowsLimit: 1000,\n sampleMethod: \"RANDOM_START\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbigquery_row_limit = gcp.dataloss.PreventionJobTrigger(\"bigquery_row_limit\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrencePeriodDuration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspectTemplateName\": \"fake\",\n \"actions\": [{\n \"saveFindings\": {\n \"outputConfig\": {\n \"table\": {\n \"projectId\": \"project\",\n \"datasetId\": \"dataset\",\n },\n },\n },\n }],\n \"storageConfig\": {\n \"bigQueryOptions\": {\n \"tableReference\": {\n \"projectId\": \"project\",\n \"datasetId\": \"dataset\",\n \"tableId\": \"table_to_scan\",\n },\n \"rowsLimit\": 1000,\n \"sampleMethod\": \"RANDOM_START\",\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 bigqueryRowLimit = new Gcp.DataLoss.PreventionJobTrigger(\"bigquery_row_limit\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n BigQueryOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs\n {\n TableReference = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n TableId = \"table_to_scan\",\n },\n RowsLimit = 1000,\n SampleMethod = \"RANDOM_START\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"bigquery_row_limit\", \u0026dataloss.PreventionJobTriggerArgs{\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\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\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\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tBigQueryOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs{\n\t\t\t\t\t\tTableReference: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs{\n\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\tTableId: pulumi.String(\"table_to_scan\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRowsLimit: pulumi.Int(1000),\n\t\t\t\t\t\tSampleMethod: pulumi.String(\"RANDOM_START\"),\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs;\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 bigqueryRowLimit = new PreventionJobTrigger(\"bigqueryRowLimit\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .bigQueryOptions(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs.builder()\n .tableReference(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .tableId(\"table_to_scan\")\n .build())\n .rowsLimit(1000)\n .sampleMethod(\"RANDOM_START\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bigqueryRowLimit:\n type: gcp:dataloss:PreventionJobTrigger\n name: bigquery_row_limit\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n bigQueryOptions:\n tableReference:\n projectId: project\n datasetId: dataset\n tableId: table_to_scan\n rowsLimit: 1000\n sampleMethod: RANDOM_START\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Bigquery Row Limit Percentage\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bigqueryRowLimitPercentage = new gcp.dataloss.PreventionJobTrigger(\"bigquery_row_limit_percentage\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n bigQueryOptions: {\n tableReference: {\n projectId: \"project\",\n datasetId: \"dataset\",\n tableId: \"table_to_scan\",\n },\n rowsLimitPercent: 50,\n sampleMethod: \"RANDOM_START\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbigquery_row_limit_percentage = gcp.dataloss.PreventionJobTrigger(\"bigquery_row_limit_percentage\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrencePeriodDuration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspectTemplateName\": \"fake\",\n \"actions\": [{\n \"saveFindings\": {\n \"outputConfig\": {\n \"table\": {\n \"projectId\": \"project\",\n \"datasetId\": \"dataset\",\n },\n },\n },\n }],\n \"storageConfig\": {\n \"bigQueryOptions\": {\n \"tableReference\": {\n \"projectId\": \"project\",\n \"datasetId\": \"dataset\",\n \"tableId\": \"table_to_scan\",\n },\n \"rowsLimitPercent\": 50,\n \"sampleMethod\": \"RANDOM_START\",\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 bigqueryRowLimitPercentage = new Gcp.DataLoss.PreventionJobTrigger(\"bigquery_row_limit_percentage\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n BigQueryOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs\n {\n TableReference = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n TableId = \"table_to_scan\",\n },\n RowsLimitPercent = 50,\n SampleMethod = \"RANDOM_START\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"bigquery_row_limit_percentage\", \u0026dataloss.PreventionJobTriggerArgs{\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\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\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\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tBigQueryOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs{\n\t\t\t\t\t\tTableReference: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs{\n\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\tTableId: pulumi.String(\"table_to_scan\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRowsLimitPercent: pulumi.Int(50),\n\t\t\t\t\t\tSampleMethod: pulumi.String(\"RANDOM_START\"),\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs;\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 bigqueryRowLimitPercentage = new PreventionJobTrigger(\"bigqueryRowLimitPercentage\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .bigQueryOptions(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs.builder()\n .tableReference(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .tableId(\"table_to_scan\")\n .build())\n .rowsLimitPercent(50)\n .sampleMethod(\"RANDOM_START\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bigqueryRowLimitPercentage:\n type: gcp:dataloss:PreventionJobTrigger\n name: bigquery_row_limit_percentage\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n bigQueryOptions:\n tableReference:\n projectId: project\n datasetId: dataset\n tableId: table_to_scan\n rowsLimitPercent: 50\n sampleMethod: RANDOM_START\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Job Notification Emails\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst jobNotificationEmails = new gcp.dataloss.PreventionJobTrigger(\"job_notification_emails\", {\n parent: \"projects/my-project-name\",\n description: \"Description for the job_trigger created by terraform\",\n displayName: \"TerraformDisplayName\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"sample-inspect-template\",\n actions: [{\n jobNotificationEmails: {},\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\njob_notification_emails = gcp.dataloss.PreventionJobTrigger(\"job_notification_emails\",\n parent=\"projects/my-project-name\",\n description=\"Description for the job_trigger created by terraform\",\n display_name=\"TerraformDisplayName\",\n triggers=[{\n \"schedule\": {\n \"recurrencePeriodDuration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspectTemplateName\": \"sample-inspect-template\",\n \"actions\": [{\n \"jobNotificationEmails\": {},\n }],\n \"storageConfig\": {\n \"cloudStorageOptions\": {\n \"fileSet\": {\n \"url\": \"gs://mybucket/directory/\",\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 jobNotificationEmails = new Gcp.DataLoss.PreventionJobTrigger(\"job_notification_emails\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description for the job_trigger created by terraform\",\n DisplayName = \"TerraformDisplayName\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"sample-inspect-template\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n JobNotificationEmails = null,\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"job_notification_emails\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description for the job_trigger created by terraform\"),\n\t\t\tDisplayName: pulumi.String(\"TerraformDisplayName\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"sample-inspect-template\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tJobNotificationEmails: nil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\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 jobNotificationEmails = new PreventionJobTrigger(\"jobNotificationEmails\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description for the job_trigger created by terraform\")\n .displayName(\"TerraformDisplayName\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"sample-inspect-template\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .jobNotificationEmails()\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n jobNotificationEmails:\n type: gcp:dataloss:PreventionJobTrigger\n name: job_notification_emails\n properties:\n parent: projects/my-project-name\n description: Description for the job_trigger created by terraform\n displayName: TerraformDisplayName\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: sample-inspect-template\n actions:\n - jobNotificationEmails: {}\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Deidentify\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.bigquery.Dataset(\"default\", {\n datasetId: \"tf_test\",\n friendlyName: \"terraform-test\",\n description: \"Description for the dataset created by terraform\",\n location: \"US\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n});\nconst defaultTable = new gcp.bigquery.Table(\"default\", {\n datasetId: _default.datasetId,\n tableId: \"tf_test\",\n deletionProtection: false,\n timePartitioning: {\n type: \"DAY\",\n },\n labels: {\n env: \"default\",\n },\n schema: ` [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n`,\n});\nconst deidentify = new gcp.dataloss.PreventionJobTrigger(\"deidentify\", {\n parent: \"projects/my-project-name\",\n description: \"Description for the job_trigger created by terraform\",\n displayName: \"TerraformDisplayName\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"sample-inspect-template\",\n actions: [{\n deidentify: {\n cloudStorageOutput: \"gs://samplebucket/dir/\",\n fileTypesToTransforms: [\n \"CSV\",\n \"TSV\",\n ],\n transformationDetailsStorageConfig: {\n table: {\n projectId: \"my-project-name\",\n datasetId: _default.datasetId,\n tableId: defaultTable.tableId,\n },\n },\n transformationConfig: {\n deidentifyTemplate: \"sample-deidentify-template\",\n imageRedactTemplate: \"sample-image-redact-template\",\n structuredDeidentifyTemplate: \"sample-structured-deidentify-template\",\n },\n },\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.bigquery.Dataset(\"default\",\n dataset_id=\"tf_test\",\n friendly_name=\"terraform-test\",\n description=\"Description for the dataset created by terraform\",\n location=\"US\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n })\ndefault_table = gcp.bigquery.Table(\"default\",\n dataset_id=default.dataset_id,\n table_id=\"tf_test\",\n deletion_protection=False,\n time_partitioning={\n \"type\": \"DAY\",\n },\n labels={\n \"env\": \"default\",\n },\n schema=\"\"\" [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n\"\"\")\ndeidentify = gcp.dataloss.PreventionJobTrigger(\"deidentify\",\n parent=\"projects/my-project-name\",\n description=\"Description for the job_trigger created by terraform\",\n display_name=\"TerraformDisplayName\",\n triggers=[{\n \"schedule\": {\n \"recurrencePeriodDuration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspectTemplateName\": \"sample-inspect-template\",\n \"actions\": [{\n \"deidentify\": {\n \"cloudStorageOutput\": \"gs://samplebucket/dir/\",\n \"fileTypesToTransforms\": [\n \"CSV\",\n \"TSV\",\n ],\n \"transformationDetailsStorageConfig\": {\n \"table\": {\n \"projectId\": \"my-project-name\",\n \"datasetId\": default.dataset_id,\n \"tableId\": default_table.table_id,\n },\n },\n \"transformationConfig\": {\n \"deidentifyTemplate\": \"sample-deidentify-template\",\n \"imageRedactTemplate\": \"sample-image-redact-template\",\n \"structuredDeidentifyTemplate\": \"sample-structured-deidentify-template\",\n },\n },\n }],\n \"storageConfig\": {\n \"cloudStorageOptions\": {\n \"fileSet\": {\n \"url\": \"gs://mybucket/directory/\",\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 @default = new Gcp.BigQuery.Dataset(\"default\", new()\n {\n DatasetId = \"tf_test\",\n FriendlyName = \"terraform-test\",\n Description = \"Description for the dataset created by terraform\",\n Location = \"US\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n });\n\n var defaultTable = new Gcp.BigQuery.Table(\"default\", new()\n {\n DatasetId = @default.DatasetId,\n TableId = \"tf_test\",\n DeletionProtection = false,\n TimePartitioning = new Gcp.BigQuery.Inputs.TableTimePartitioningArgs\n {\n Type = \"DAY\",\n },\n Labels = \n {\n { \"env\", \"default\" },\n },\n Schema = @\" [\n {\n \"\"name\"\": \"\"quantity\"\",\n \"\"type\"\": \"\"NUMERIC\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The quantity\"\"\n },\n {\n \"\"name\"\": \"\"name\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"Name of the object\"\"\n }\n ]\n\",\n });\n\n var deidentify = new Gcp.DataLoss.PreventionJobTrigger(\"deidentify\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description for the job_trigger created by terraform\",\n DisplayName = \"TerraformDisplayName\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"sample-inspect-template\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n Deidentify = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionDeidentifyArgs\n {\n CloudStorageOutput = \"gs://samplebucket/dir/\",\n FileTypesToTransforms = new[]\n {\n \"CSV\",\n \"TSV\",\n },\n TransformationDetailsStorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigTableArgs\n {\n ProjectId = \"my-project-name\",\n DatasetId = @default.DatasetId,\n TableId = defaultTable.TableId,\n },\n },\n TransformationConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionDeidentifyTransformationConfigArgs\n {\n DeidentifyTemplate = \"sample-deidentify-template\",\n ImageRedactTemplate = \"sample-image-redact-template\",\n StructuredDeidentifyTemplate = \"sample-structured-deidentify-template\",\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := bigquery.NewDataset(ctx, \"default\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"tf_test\"),\n\t\t\tFriendlyName: pulumi.String(\"terraform-test\"),\n\t\t\tDescription: pulumi.String(\"Description for the dataset created by terraform\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTable, err := bigquery.NewTable(ctx, \"default\", \u0026bigquery.TableArgs{\n\t\t\tDatasetId: _default.DatasetId,\n\t\t\tTableId: pulumi.String(\"tf_test\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTimePartitioning: \u0026bigquery.TableTimePartitioningArgs{\n\t\t\t\tType: pulumi.String(\"DAY\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tSchema: pulumi.String(` [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataloss.NewPreventionJobTrigger(ctx, \"deidentify\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description for the job_trigger created by terraform\"),\n\t\t\tDisplayName: pulumi.String(\"TerraformDisplayName\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"sample-inspect-template\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tDeidentify: \u0026dataloss.PreventionJobTriggerInspectJobActionDeidentifyArgs{\n\t\t\t\t\t\t\tCloudStorageOutput: pulumi.String(\"gs://samplebucket/dir/\"),\n\t\t\t\t\t\t\tFileTypesToTransforms: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"CSV\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"TSV\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTransformationDetailsStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"my-project-name\"),\n\t\t\t\t\t\t\t\t\tDatasetId: _default.DatasetId,\n\t\t\t\t\t\t\t\t\tTableId: defaultTable.TableId,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTransformationConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionDeidentifyTransformationConfigArgs{\n\t\t\t\t\t\t\t\tDeidentifyTemplate: pulumi.String(\"sample-deidentify-template\"),\n\t\t\t\t\t\t\t\tImageRedactTemplate: pulumi.String(\"sample-image-redact-template\"),\n\t\t\t\t\t\t\t\tStructuredDeidentifyTemplate: pulumi.String(\"sample-structured-deidentify-template\"),\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\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\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.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.inputs.TableTimePartitioningArgs;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\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 Dataset(\"default\", DatasetArgs.builder()\n .datasetId(\"tf_test\")\n .friendlyName(\"terraform-test\")\n .description(\"Description for the dataset created by terraform\")\n .location(\"US\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .build());\n\n var defaultTable = new Table(\"defaultTable\", TableArgs.builder()\n .datasetId(default_.datasetId())\n .tableId(\"tf_test\")\n .deletionProtection(false)\n .timePartitioning(TableTimePartitioningArgs.builder()\n .type(\"DAY\")\n .build())\n .labels(Map.of(\"env\", \"default\"))\n .schema(\"\"\"\n [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n \"\"\")\n .build());\n\n var deidentify = new PreventionJobTrigger(\"deidentify\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description for the job_trigger created by terraform\")\n .displayName(\"TerraformDisplayName\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"sample-inspect-template\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .deidentify(PreventionJobTriggerInspectJobActionDeidentifyArgs.builder()\n .cloudStorageOutput(\"gs://samplebucket/dir/\")\n .fileTypesToTransforms( \n \"CSV\",\n \"TSV\")\n .transformationDetailsStorageConfig(PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigTableArgs.builder()\n .projectId(\"my-project-name\")\n .datasetId(default_.datasetId())\n .tableId(defaultTable.tableId())\n .build())\n .build())\n .transformationConfig(PreventionJobTriggerInspectJobActionDeidentifyTransformationConfigArgs.builder()\n .deidentifyTemplate(\"sample-deidentify-template\")\n .imageRedactTemplate(\"sample-image-redact-template\")\n .structuredDeidentifyTemplate(\"sample-structured-deidentify-template\")\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n deidentify:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description for the job_trigger created by terraform\n displayName: TerraformDisplayName\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: sample-inspect-template\n actions:\n - deidentify:\n cloudStorageOutput: gs://samplebucket/dir/\n fileTypesToTransforms:\n - CSV\n - TSV\n transformationDetailsStorageConfig:\n table:\n projectId: my-project-name\n datasetId: ${default.datasetId}\n tableId: ${defaultTable.tableId}\n transformationConfig:\n deidentifyTemplate: sample-deidentify-template\n imageRedactTemplate: sample-image-redact-template\n structuredDeidentifyTemplate: sample-structured-deidentify-template\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n default:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: tf_test\n friendlyName: terraform-test\n description: Description for the dataset created by terraform\n location: US\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n defaultTable:\n type: gcp:bigquery:Table\n name: default\n properties:\n datasetId: ${default.datasetId}\n tableId: tf_test\n deletionProtection: false\n timePartitioning:\n type: DAY\n labels:\n env: default\n schema: |2\n [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Hybrid\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst hybridTrigger = new gcp.dataloss.PreventionJobTrigger(\"hybrid_trigger\", {\n parent: \"projects/my-project-name\",\n triggers: [{\n manual: {},\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n hybridOptions: {\n description: \"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\",\n requiredFindingLabelKeys: [\"appointment-bookings-comments\"],\n labels: {\n env: \"prod\",\n },\n tableOptions: {\n identifyingFields: [{\n name: \"booking_id\",\n }],\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhybrid_trigger = gcp.dataloss.PreventionJobTrigger(\"hybrid_trigger\",\n parent=\"projects/my-project-name\",\n triggers=[{\n \"manual\": {},\n }],\n inspect_job={\n \"inspectTemplateName\": \"fake\",\n \"actions\": [{\n \"saveFindings\": {\n \"outputConfig\": {\n \"table\": {\n \"projectId\": \"project\",\n \"datasetId\": \"dataset\",\n },\n },\n },\n }],\n \"storageConfig\": {\n \"hybridOptions\": {\n \"description\": \"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\",\n \"requiredFindingLabelKeys\": [\"appointment-bookings-comments\"],\n \"labels\": {\n \"env\": \"prod\",\n },\n \"tableOptions\": {\n \"identifyingFields\": [{\n \"name\": \"booking_id\",\n }],\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 hybridTrigger = new Gcp.DataLoss.PreventionJobTrigger(\"hybrid_trigger\", new()\n {\n Parent = \"projects/my-project-name\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Manual = null,\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n HybridOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsArgs\n {\n Description = \"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\",\n RequiredFindingLabelKeys = new[]\n {\n \"appointment-bookings-comments\",\n },\n Labels = \n {\n { \"env\", \"prod\" },\n },\n TableOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsArgs\n {\n IdentifyingFields = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsIdentifyingFieldArgs\n {\n Name = \"booking_id\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"hybrid_trigger\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tManual: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\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\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tHybridOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigHybridOptionsArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\"),\n\t\t\t\t\t\tRequiredFindingLabelKeys: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"appointment-bookings-comments\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"env\": pulumi.String(\"prod\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTableOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsArgs{\n\t\t\t\t\t\t\tIdentifyingFields: dataloss.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsIdentifyingFieldArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsIdentifyingFieldArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"booking_id\"),\n\t\t\t\t\t\t\t\t},\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerManualArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsArgs;\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 hybridTrigger = new PreventionJobTrigger(\"hybridTrigger\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .manual()\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .hybridOptions(PreventionJobTriggerInspectJobStorageConfigHybridOptionsArgs.builder()\n .description(\"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\")\n .requiredFindingLabelKeys(\"appointment-bookings-comments\")\n .labels(Map.of(\"env\", \"prod\"))\n .tableOptions(PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsArgs.builder()\n .identifyingFields(PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsIdentifyingFieldArgs.builder()\n .name(\"booking_id\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n hybridTrigger:\n type: gcp:dataloss:PreventionJobTrigger\n name: hybrid_trigger\n properties:\n parent: projects/my-project-name\n triggers:\n - manual: {}\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n hybridOptions:\n description: Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\n requiredFindingLabelKeys:\n - appointment-bookings-comments\n labels:\n env: prod\n tableOptions:\n identifyingFields:\n - name: booking_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Inspect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst inspect = new gcp.dataloss.PreventionJobTrigger(\"inspect\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n inspectConfig: {\n customInfoTypes: [{\n infoType: {\n name: \"MY_CUSTOM_TYPE\",\n },\n likelihood: \"UNLIKELY\",\n regex: {\n pattern: \"test*\",\n },\n }],\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n minLikelihood: \"UNLIKELY\",\n ruleSets: [\n {\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n rules: [{\n exclusionRule: {\n regex: {\n pattern: \".+@example.com\",\n },\n matchingType: \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [{\n name: \"MY_CUSTOM_TYPE\",\n }],\n rules: [{\n hotwordRule: {\n hotwordRegex: {\n pattern: \"example*\",\n },\n proximity: {\n windowBefore: 50,\n },\n likelihoodAdjustment: {\n fixedLikelihood: \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n limits: {\n maxFindingsPerItem: 10,\n maxFindingsPerRequest: 50,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninspect = gcp.dataloss.PreventionJobTrigger(\"inspect\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrencePeriodDuration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspectTemplateName\": \"fake\",\n \"actions\": [{\n \"saveFindings\": {\n \"outputConfig\": {\n \"table\": {\n \"projectId\": \"project\",\n \"datasetId\": \"dataset\",\n },\n },\n },\n }],\n \"storageConfig\": {\n \"cloudStorageOptions\": {\n \"fileSet\": {\n \"url\": \"gs://mybucket/directory/\",\n },\n },\n },\n \"inspectConfig\": {\n \"customInfoTypes\": [{\n \"infoType\": {\n \"name\": \"MY_CUSTOM_TYPE\",\n },\n \"likelihood\": \"UNLIKELY\",\n \"regex\": {\n \"pattern\": \"test*\",\n },\n }],\n \"infoTypes\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"minLikelihood\": \"UNLIKELY\",\n \"ruleSets\": [\n {\n \"infoTypes\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"rules\": [{\n \"exclusionRule\": {\n \"regex\": {\n \"pattern\": \".+@example.com\",\n },\n \"matchingType\": \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n \"infoTypes\": [{\n \"name\": \"MY_CUSTOM_TYPE\",\n }],\n \"rules\": [{\n \"hotwordRule\": {\n \"hotwordRegex\": {\n \"pattern\": \"example*\",\n },\n \"proximity\": {\n \"windowBefore\": 50,\n },\n \"likelihoodAdjustment\": {\n \"fixedLikelihood\": \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n \"limits\": {\n \"maxFindingsPerItem\": 10,\n \"maxFindingsPerRequest\": 50,\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 inspect = new Gcp.DataLoss.PreventionJobTrigger(\"inspect\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigArgs\n {\n CustomInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeArgs\n {\n InfoType = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n Likelihood = \"UNLIKELY\",\n Regex = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeRegexArgs\n {\n Pattern = \"test*\",\n },\n },\n },\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n RuleSets = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Regex = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleRegexArgs\n {\n Pattern = \".+@example.com\",\n },\n MatchingType = \"MATCHING_TYPE_FULL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs\n {\n HotwordRule = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleArgs\n {\n HotwordRegex = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs\n {\n Pattern = \"example*\",\n },\n Proximity = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleProximityArgs\n {\n WindowBefore = 50,\n },\n LikelihoodAdjustment = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs\n {\n FixedLikelihood = \"VERY_LIKELY\",\n },\n },\n },\n },\n },\n },\n Limits = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigLimitsArgs\n {\n MaxFindingsPerItem = 10,\n MaxFindingsPerRequest = 50,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"inspect\", \u0026dataloss.PreventionJobTriggerArgs{\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\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\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\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInspectConfig: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigArgs{\n\t\t\t\t\tCustomInfoTypes: dataloss.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeArgs{\n\t\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeRegexArgs{\n\t\t\t\t\t\t\t\tPattern: pulumi.String(\"test*\"),\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\tInfoTypes: dataloss.PreventionJobTriggerInspectJobInspectConfigInfoTypeArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigInfoTypeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\t\tRuleSets: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRules: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleRegexArgs{\n\t\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\".+@example.com\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_FULL_MATCH\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRules: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\t\tHotwordRule: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleArgs{\n\t\t\t\t\t\t\t\t\t\tHotwordRegex: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs{\n\t\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\"example*\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tProximity: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleProximityArgs{\n\t\t\t\t\t\t\t\t\t\t\tWindowBefore: pulumi.Int(50),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tLikelihoodAdjustment: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs{\n\t\t\t\t\t\t\t\t\t\t\tFixedLikelihood: pulumi.String(\"VERY_LIKELY\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tLimits: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigLimitsArgs{\n\t\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(10),\n\t\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(50),\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobInspectConfigLimitsArgs;\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 inspect = new PreventionJobTrigger(\"inspect\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .inspectConfig(PreventionJobTriggerInspectJobInspectConfigArgs.builder()\n .customInfoTypes(PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeArgs.builder()\n .infoType(PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .likelihood(\"UNLIKELY\")\n .regex(PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeRegexArgs.builder()\n .pattern(\"test*\")\n .build())\n .build())\n .infoTypes(PreventionJobTriggerInspectJobInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .ruleSets( \n PreventionJobTriggerInspectJobInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .rules(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .regex(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleRegexArgs.builder()\n .pattern(\".+@example.com\")\n .build())\n .matchingType(\"MATCHING_TYPE_FULL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionJobTriggerInspectJobInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .rules(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs.builder()\n .hotwordRule(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleArgs.builder()\n .hotwordRegex(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs.builder()\n .pattern(\"example*\")\n .build())\n .proximity(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleProximityArgs.builder()\n .windowBefore(50)\n .build())\n .likelihoodAdjustment(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs.builder()\n .fixedLikelihood(\"VERY_LIKELY\")\n .build())\n .build())\n .build())\n .build())\n .limits(PreventionJobTriggerInspectJobInspectConfigLimitsArgs.builder()\n .maxFindingsPerItem(10)\n .maxFindingsPerRequest(50)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n inspect:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n inspectConfig:\n customInfoTypes:\n - infoType:\n name: MY_CUSTOM_TYPE\n likelihood: UNLIKELY\n regex:\n pattern: test*\n infoTypes:\n - name: EMAIL_ADDRESS\n minLikelihood: UNLIKELY\n ruleSets:\n - infoTypes:\n - name: EMAIL_ADDRESS\n rules:\n - exclusionRule:\n regex:\n pattern: .+@example.com\n matchingType: MATCHING_TYPE_FULL_MATCH\n - infoTypes:\n - name: MY_CUSTOM_TYPE\n rules:\n - hotwordRule:\n hotwordRegex:\n pattern: example*\n proximity:\n windowBefore: 50\n likelihoodAdjustment:\n fixedLikelihood: VERY_LIKELY\n limits:\n maxFindingsPerItem: 10\n maxFindingsPerRequest: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Publish To Stackdriver\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst publishToStackdriver = new gcp.dataloss.PreventionJobTrigger(\"publish_to_stackdriver\", {\n parent: \"projects/my-project-name\",\n description: \"Description for the job_trigger created by terraform\",\n displayName: \"TerraformDisplayName\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"sample-inspect-template\",\n actions: [{\n publishToStackdriver: {},\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npublish_to_stackdriver = gcp.dataloss.PreventionJobTrigger(\"publish_to_stackdriver\",\n parent=\"projects/my-project-name\",\n description=\"Description for the job_trigger created by terraform\",\n display_name=\"TerraformDisplayName\",\n triggers=[{\n \"schedule\": {\n \"recurrencePeriodDuration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspectTemplateName\": \"sample-inspect-template\",\n \"actions\": [{\n \"publishToStackdriver\": {},\n }],\n \"storageConfig\": {\n \"cloudStorageOptions\": {\n \"fileSet\": {\n \"url\": \"gs://mybucket/directory/\",\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 publishToStackdriver = new Gcp.DataLoss.PreventionJobTrigger(\"publish_to_stackdriver\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description for the job_trigger created by terraform\",\n DisplayName = \"TerraformDisplayName\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"sample-inspect-template\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n PublishToStackdriver = null,\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"publish_to_stackdriver\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description for the job_trigger created by terraform\"),\n\t\t\tDisplayName: pulumi.String(\"TerraformDisplayName\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"sample-inspect-template\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tPublishToStackdriver: nil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\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 publishToStackdriver = new PreventionJobTrigger(\"publishToStackdriver\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description for the job_trigger created by terraform\")\n .displayName(\"TerraformDisplayName\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"sample-inspect-template\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .publishToStackdriver()\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n publishToStackdriver:\n type: gcp:dataloss:PreventionJobTrigger\n name: publish_to_stackdriver\n properties:\n parent: projects/my-project-name\n description: Description for the job_trigger created by terraform\n displayName: TerraformDisplayName\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: sample-inspect-template\n actions:\n - publishToStackdriver: {}\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger With Id\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst withTriggerId = new gcp.dataloss.PreventionJobTrigger(\"with_trigger_id\", {\n parent: \"projects/my-project-name\",\n description: \"Starting description\",\n displayName: \"display\",\n triggerId: \"id-\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset123\",\n },\n },\n },\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nwith_trigger_id = gcp.dataloss.PreventionJobTrigger(\"with_trigger_id\",\n parent=\"projects/my-project-name\",\n description=\"Starting description\",\n display_name=\"display\",\n trigger_id=\"id-\",\n triggers=[{\n \"schedule\": {\n \"recurrencePeriodDuration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspectTemplateName\": \"fake\",\n \"actions\": [{\n \"saveFindings\": {\n \"outputConfig\": {\n \"table\": {\n \"projectId\": \"project\",\n \"datasetId\": \"dataset123\",\n },\n },\n },\n }],\n \"storageConfig\": {\n \"cloudStorageOptions\": {\n \"fileSet\": {\n \"url\": \"gs://mybucket/directory/\",\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 withTriggerId = new Gcp.DataLoss.PreventionJobTrigger(\"with_trigger_id\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Starting description\",\n DisplayName = \"display\",\n TriggerId = \"id-\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset123\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"with_trigger_id\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Starting description\"),\n\t\t\tDisplayName: pulumi.String(\"display\"),\n\t\t\tTriggerId: pulumi.String(\"id-\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset123\"),\n\t\t\t\t\t\t\t\t},\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\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\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 withTriggerId = new PreventionJobTrigger(\"withTriggerId\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Starting description\")\n .displayName(\"display\")\n .triggerId(\"id-\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset123\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n withTriggerId:\n type: gcp:dataloss:PreventionJobTrigger\n name: with_trigger_id\n properties:\n parent: projects/my-project-name\n description: Starting description\n displayName: display\n triggerId: id-\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset123\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Multiple Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionJobTrigger(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [\n {\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n },\n {\n pubSub: {\n topic: \"projects/project/topics/topic-name\",\n },\n },\n ],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionJobTrigger(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrencePeriodDuration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspectTemplateName\": \"fake\",\n \"actions\": [\n {\n \"saveFindings\": {\n \"outputConfig\": {\n \"table\": {\n \"projectId\": \"project\",\n \"datasetId\": \"dataset\",\n },\n },\n },\n },\n {\n \"pubSub\": {\n \"topic\": \"projects/project/topics/topic-name\",\n },\n },\n ],\n \"storageConfig\": {\n \"cloudStorageOptions\": {\n \"fileSet\": {\n \"url\": \"gs://mybucket/directory/\",\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 basic = new Gcp.DataLoss.PreventionJobTrigger(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n PubSub = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionPubSubArgs\n {\n Topic = \"projects/project/topics/topic-name\",\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"basic\", \u0026dataloss.PreventionJobTriggerArgs{\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\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\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\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tPubSub: \u0026dataloss.PreventionJobTriggerInspectJobActionPubSubArgs{\n\t\t\t\t\t\t\tTopic: pulumi.String(\"projects/project/topics/topic-name\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\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 PreventionJobTrigger(\"basic\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions( \n PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build(),\n PreventionJobTriggerInspectJobActionArgs.builder()\n .pubSub(PreventionJobTriggerInspectJobActionPubSubArgs.builder()\n .topic(\"projects/project/topics/topic-name\")\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n - pubSub:\n topic: projects/project/topics/topic-name\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Cloud Storage Optional Timespan Autopopulation\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionJobTrigger(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n timespanConfig: {\n enableAutoPopulationOfTimespanConfig: true,\n },\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionJobTrigger(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrencePeriodDuration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspectTemplateName\": \"fake\",\n \"actions\": [{\n \"saveFindings\": {\n \"outputConfig\": {\n \"table\": {\n \"projectId\": \"project\",\n \"datasetId\": \"dataset\",\n },\n },\n },\n }],\n \"storageConfig\": {\n \"timespanConfig\": {\n \"enableAutoPopulationOfTimespanConfig\": True,\n },\n \"cloudStorageOptions\": {\n \"fileSet\": {\n \"url\": \"gs://mybucket/directory/\",\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 basic = new Gcp.DataLoss.PreventionJobTrigger(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n TimespanConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs\n {\n EnableAutoPopulationOfTimespanConfig = true,\n },\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"basic\", \u0026dataloss.PreventionJobTriggerArgs{\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\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\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\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tTimespanConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs{\n\t\t\t\t\t\tEnableAutoPopulationOfTimespanConfig: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\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 PreventionJobTrigger(\"basic\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .timespanConfig(PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs.builder()\n .enableAutoPopulationOfTimespanConfig(true)\n .build())\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n timespanConfig:\n enableAutoPopulationOfTimespanConfig: true\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Timespan Config Big Query\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst timespanConfigBigQuery = new gcp.dataloss.PreventionJobTrigger(\"timespan_config_big_query\", {\n parent: \"projects/my-project-name\",\n description: \"BigQuery DLP Job Trigger with timespan config and row limit\",\n displayName: \"bigquery-dlp-job-trigger-limit-timespan\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"projects/test/locations/global/inspectTemplates/6425492983381733900\",\n storageConfig: {\n bigQueryOptions: {\n tableReference: {\n projectId: \"project\",\n datasetId: \"dataset\",\n tableId: \"table\",\n },\n sampleMethod: \"\",\n },\n timespanConfig: {\n startTime: \"2023-01-01T00:00:23Z\",\n timestampField: {\n name: \"timestamp\",\n },\n },\n },\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"output\",\n },\n },\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntimespan_config_big_query = gcp.dataloss.PreventionJobTrigger(\"timespan_config_big_query\",\n parent=\"projects/my-project-name\",\n description=\"BigQuery DLP Job Trigger with timespan config and row limit\",\n display_name=\"bigquery-dlp-job-trigger-limit-timespan\",\n triggers=[{\n \"schedule\": {\n \"recurrencePeriodDuration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspectTemplateName\": \"projects/test/locations/global/inspectTemplates/6425492983381733900\",\n \"storageConfig\": {\n \"bigQueryOptions\": {\n \"tableReference\": {\n \"projectId\": \"project\",\n \"datasetId\": \"dataset\",\n \"tableId\": \"table\",\n },\n \"sampleMethod\": \"\",\n },\n \"timespanConfig\": {\n \"startTime\": \"2023-01-01T00:00:23Z\",\n \"timestampField\": {\n \"name\": \"timestamp\",\n },\n },\n },\n \"actions\": [{\n \"saveFindings\": {\n \"outputConfig\": {\n \"table\": {\n \"projectId\": \"project\",\n \"datasetId\": \"output\",\n },\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 timespanConfigBigQuery = new Gcp.DataLoss.PreventionJobTrigger(\"timespan_config_big_query\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"BigQuery DLP Job Trigger with timespan config and row limit\",\n DisplayName = \"bigquery-dlp-job-trigger-limit-timespan\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"projects/test/locations/global/inspectTemplates/6425492983381733900\",\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n BigQueryOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs\n {\n TableReference = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n TableId = \"table\",\n },\n SampleMethod = \"\",\n },\n TimespanConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs\n {\n StartTime = \"2023-01-01T00:00:23Z\",\n TimestampField = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigTimestampFieldArgs\n {\n Name = \"timestamp\",\n },\n },\n },\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"output\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"timespan_config_big_query\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"BigQuery DLP Job Trigger with timespan config and row limit\"),\n\t\t\tDisplayName: pulumi.String(\"bigquery-dlp-job-trigger-limit-timespan\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"projects/test/locations/global/inspectTemplates/6425492983381733900\"),\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tBigQueryOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs{\n\t\t\t\t\t\tTableReference: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs{\n\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\tTableId: pulumi.String(\"table\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSampleMethod: pulumi.String(\"\"),\n\t\t\t\t\t},\n\t\t\t\t\tTimespanConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs{\n\t\t\t\t\t\tStartTime: pulumi.String(\"2023-01-01T00:00:23Z\"),\n\t\t\t\t\t\tTimestampField: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigTimespanConfigTimestampFieldArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"timestamp\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"output\"),\n\t\t\t\t\t\t\t\t},\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigTimestampFieldArgs;\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 timespanConfigBigQuery = new PreventionJobTrigger(\"timespanConfigBigQuery\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"BigQuery DLP Job Trigger with timespan config and row limit\")\n .displayName(\"bigquery-dlp-job-trigger-limit-timespan\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"projects/test/locations/global/inspectTemplates/6425492983381733900\")\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .bigQueryOptions(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs.builder()\n .tableReference(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .tableId(\"table\")\n .build())\n .sampleMethod(\"\")\n .build())\n .timespanConfig(PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs.builder()\n .startTime(\"2023-01-01T00:00:23Z\")\n .timestampField(PreventionJobTriggerInspectJobStorageConfigTimespanConfigTimestampFieldArgs.builder()\n .name(\"timestamp\")\n .build())\n .build())\n .build())\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"output\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n timespanConfigBigQuery:\n type: gcp:dataloss:PreventionJobTrigger\n name: timespan_config_big_query\n properties:\n parent: projects/my-project-name\n description: BigQuery DLP Job Trigger with timespan config and row limit\n displayName: bigquery-dlp-job-trigger-limit-timespan\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: projects/test/locations/global/inspectTemplates/6425492983381733900\n storageConfig:\n bigQueryOptions:\n tableReference:\n projectId: project\n datasetId: dataset\n tableId: table\n sampleMethod:\n timespanConfig:\n startTime: 2023-01-01T00:00:23Z\n timestampField:\n name: timestamp\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: output\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJobTrigger can be imported using any of these accepted formats:\n\n* `{{parent}}/jobTriggers/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, JobTrigger can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataloss/preventionJobTrigger:PreventionJobTrigger default {{parent}}/jobTriggers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataloss/preventionJobTrigger:PreventionJobTrigger default {{parent}}/{{name}}\n```\n\n", + "description": "A job trigger configuration.\n\n\nTo get more information about JobTrigger, see:\n\n* [API documentation](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.jobTriggers)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dlp/docs/creating-job-triggers)\n\n## Example Usage\n\n### Dlp Job Trigger Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionJobTrigger(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionJobTrigger(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\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 basic = new Gcp.DataLoss.PreventionJobTrigger(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"basic\", \u0026dataloss.PreventionJobTriggerArgs{\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\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\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\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\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 PreventionJobTrigger(\"basic\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Bigquery Row Limit\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bigqueryRowLimit = new gcp.dataloss.PreventionJobTrigger(\"bigquery_row_limit\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n bigQueryOptions: {\n tableReference: {\n projectId: \"project\",\n datasetId: \"dataset\",\n tableId: \"table_to_scan\",\n },\n rowsLimit: 1000,\n sampleMethod: \"RANDOM_START\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbigquery_row_limit = gcp.dataloss.PreventionJobTrigger(\"bigquery_row_limit\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"big_query_options\": {\n \"table_reference\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n \"table_id\": \"table_to_scan\",\n },\n \"rows_limit\": 1000,\n \"sample_method\": \"RANDOM_START\",\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 bigqueryRowLimit = new Gcp.DataLoss.PreventionJobTrigger(\"bigquery_row_limit\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n BigQueryOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs\n {\n TableReference = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n TableId = \"table_to_scan\",\n },\n RowsLimit = 1000,\n SampleMethod = \"RANDOM_START\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"bigquery_row_limit\", \u0026dataloss.PreventionJobTriggerArgs{\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\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\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\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tBigQueryOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs{\n\t\t\t\t\t\tTableReference: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs{\n\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\tTableId: pulumi.String(\"table_to_scan\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRowsLimit: pulumi.Int(1000),\n\t\t\t\t\t\tSampleMethod: pulumi.String(\"RANDOM_START\"),\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs;\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 bigqueryRowLimit = new PreventionJobTrigger(\"bigqueryRowLimit\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .bigQueryOptions(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs.builder()\n .tableReference(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .tableId(\"table_to_scan\")\n .build())\n .rowsLimit(1000)\n .sampleMethod(\"RANDOM_START\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bigqueryRowLimit:\n type: gcp:dataloss:PreventionJobTrigger\n name: bigquery_row_limit\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n bigQueryOptions:\n tableReference:\n projectId: project\n datasetId: dataset\n tableId: table_to_scan\n rowsLimit: 1000\n sampleMethod: RANDOM_START\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Bigquery Row Limit Percentage\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bigqueryRowLimitPercentage = new gcp.dataloss.PreventionJobTrigger(\"bigquery_row_limit_percentage\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n bigQueryOptions: {\n tableReference: {\n projectId: \"project\",\n datasetId: \"dataset\",\n tableId: \"table_to_scan\",\n },\n rowsLimitPercent: 50,\n sampleMethod: \"RANDOM_START\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbigquery_row_limit_percentage = gcp.dataloss.PreventionJobTrigger(\"bigquery_row_limit_percentage\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"big_query_options\": {\n \"table_reference\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n \"table_id\": \"table_to_scan\",\n },\n \"rows_limit_percent\": 50,\n \"sample_method\": \"RANDOM_START\",\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 bigqueryRowLimitPercentage = new Gcp.DataLoss.PreventionJobTrigger(\"bigquery_row_limit_percentage\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n BigQueryOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs\n {\n TableReference = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n TableId = \"table_to_scan\",\n },\n RowsLimitPercent = 50,\n SampleMethod = \"RANDOM_START\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"bigquery_row_limit_percentage\", \u0026dataloss.PreventionJobTriggerArgs{\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\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\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\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tBigQueryOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs{\n\t\t\t\t\t\tTableReference: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs{\n\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\tTableId: pulumi.String(\"table_to_scan\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRowsLimitPercent: pulumi.Int(50),\n\t\t\t\t\t\tSampleMethod: pulumi.String(\"RANDOM_START\"),\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs;\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 bigqueryRowLimitPercentage = new PreventionJobTrigger(\"bigqueryRowLimitPercentage\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .bigQueryOptions(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs.builder()\n .tableReference(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .tableId(\"table_to_scan\")\n .build())\n .rowsLimitPercent(50)\n .sampleMethod(\"RANDOM_START\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bigqueryRowLimitPercentage:\n type: gcp:dataloss:PreventionJobTrigger\n name: bigquery_row_limit_percentage\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n bigQueryOptions:\n tableReference:\n projectId: project\n datasetId: dataset\n tableId: table_to_scan\n rowsLimitPercent: 50\n sampleMethod: RANDOM_START\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Job Notification Emails\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst jobNotificationEmails = new gcp.dataloss.PreventionJobTrigger(\"job_notification_emails\", {\n parent: \"projects/my-project-name\",\n description: \"Description for the job_trigger created by terraform\",\n displayName: \"TerraformDisplayName\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"sample-inspect-template\",\n actions: [{\n jobNotificationEmails: {},\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\njob_notification_emails = gcp.dataloss.PreventionJobTrigger(\"job_notification_emails\",\n parent=\"projects/my-project-name\",\n description=\"Description for the job_trigger created by terraform\",\n display_name=\"TerraformDisplayName\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"sample-inspect-template\",\n \"actions\": [{\n \"job_notification_emails\": {},\n }],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\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 jobNotificationEmails = new Gcp.DataLoss.PreventionJobTrigger(\"job_notification_emails\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description for the job_trigger created by terraform\",\n DisplayName = \"TerraformDisplayName\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"sample-inspect-template\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n JobNotificationEmails = null,\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"job_notification_emails\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description for the job_trigger created by terraform\"),\n\t\t\tDisplayName: pulumi.String(\"TerraformDisplayName\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"sample-inspect-template\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tJobNotificationEmails: nil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\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 jobNotificationEmails = new PreventionJobTrigger(\"jobNotificationEmails\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description for the job_trigger created by terraform\")\n .displayName(\"TerraformDisplayName\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"sample-inspect-template\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .jobNotificationEmails()\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n jobNotificationEmails:\n type: gcp:dataloss:PreventionJobTrigger\n name: job_notification_emails\n properties:\n parent: projects/my-project-name\n description: Description for the job_trigger created by terraform\n displayName: TerraformDisplayName\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: sample-inspect-template\n actions:\n - jobNotificationEmails: {}\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Deidentify\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.bigquery.Dataset(\"default\", {\n datasetId: \"tf_test\",\n friendlyName: \"terraform-test\",\n description: \"Description for the dataset created by terraform\",\n location: \"US\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n});\nconst defaultTable = new gcp.bigquery.Table(\"default\", {\n datasetId: _default.datasetId,\n tableId: \"tf_test\",\n deletionProtection: false,\n timePartitioning: {\n type: \"DAY\",\n },\n labels: {\n env: \"default\",\n },\n schema: ` [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n`,\n});\nconst deidentify = new gcp.dataloss.PreventionJobTrigger(\"deidentify\", {\n parent: \"projects/my-project-name\",\n description: \"Description for the job_trigger created by terraform\",\n displayName: \"TerraformDisplayName\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"sample-inspect-template\",\n actions: [{\n deidentify: {\n cloudStorageOutput: \"gs://samplebucket/dir/\",\n fileTypesToTransforms: [\n \"CSV\",\n \"TSV\",\n ],\n transformationDetailsStorageConfig: {\n table: {\n projectId: \"my-project-name\",\n datasetId: _default.datasetId,\n tableId: defaultTable.tableId,\n },\n },\n transformationConfig: {\n deidentifyTemplate: \"sample-deidentify-template\",\n imageRedactTemplate: \"sample-image-redact-template\",\n structuredDeidentifyTemplate: \"sample-structured-deidentify-template\",\n },\n },\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.bigquery.Dataset(\"default\",\n dataset_id=\"tf_test\",\n friendly_name=\"terraform-test\",\n description=\"Description for the dataset created by terraform\",\n location=\"US\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n })\ndefault_table = gcp.bigquery.Table(\"default\",\n dataset_id=default.dataset_id,\n table_id=\"tf_test\",\n deletion_protection=False,\n time_partitioning={\n \"type\": \"DAY\",\n },\n labels={\n \"env\": \"default\",\n },\n schema=\"\"\" [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n\"\"\")\ndeidentify = gcp.dataloss.PreventionJobTrigger(\"deidentify\",\n parent=\"projects/my-project-name\",\n description=\"Description for the job_trigger created by terraform\",\n display_name=\"TerraformDisplayName\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"sample-inspect-template\",\n \"actions\": [{\n \"deidentify\": {\n \"cloud_storage_output\": \"gs://samplebucket/dir/\",\n \"file_types_to_transforms\": [\n \"CSV\",\n \"TSV\",\n ],\n \"transformation_details_storage_config\": {\n \"table\": {\n \"project_id\": \"my-project-name\",\n \"dataset_id\": default.dataset_id,\n \"table_id\": default_table.table_id,\n },\n },\n \"transformation_config\": {\n \"deidentify_template\": \"sample-deidentify-template\",\n \"image_redact_template\": \"sample-image-redact-template\",\n \"structured_deidentify_template\": \"sample-structured-deidentify-template\",\n },\n },\n }],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\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 @default = new Gcp.BigQuery.Dataset(\"default\", new()\n {\n DatasetId = \"tf_test\",\n FriendlyName = \"terraform-test\",\n Description = \"Description for the dataset created by terraform\",\n Location = \"US\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n });\n\n var defaultTable = new Gcp.BigQuery.Table(\"default\", new()\n {\n DatasetId = @default.DatasetId,\n TableId = \"tf_test\",\n DeletionProtection = false,\n TimePartitioning = new Gcp.BigQuery.Inputs.TableTimePartitioningArgs\n {\n Type = \"DAY\",\n },\n Labels = \n {\n { \"env\", \"default\" },\n },\n Schema = @\" [\n {\n \"\"name\"\": \"\"quantity\"\",\n \"\"type\"\": \"\"NUMERIC\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The quantity\"\"\n },\n {\n \"\"name\"\": \"\"name\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"Name of the object\"\"\n }\n ]\n\",\n });\n\n var deidentify = new Gcp.DataLoss.PreventionJobTrigger(\"deidentify\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description for the job_trigger created by terraform\",\n DisplayName = \"TerraformDisplayName\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"sample-inspect-template\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n Deidentify = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionDeidentifyArgs\n {\n CloudStorageOutput = \"gs://samplebucket/dir/\",\n FileTypesToTransforms = new[]\n {\n \"CSV\",\n \"TSV\",\n },\n TransformationDetailsStorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigTableArgs\n {\n ProjectId = \"my-project-name\",\n DatasetId = @default.DatasetId,\n TableId = defaultTable.TableId,\n },\n },\n TransformationConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionDeidentifyTransformationConfigArgs\n {\n DeidentifyTemplate = \"sample-deidentify-template\",\n ImageRedactTemplate = \"sample-image-redact-template\",\n StructuredDeidentifyTemplate = \"sample-structured-deidentify-template\",\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := bigquery.NewDataset(ctx, \"default\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"tf_test\"),\n\t\t\tFriendlyName: pulumi.String(\"terraform-test\"),\n\t\t\tDescription: pulumi.String(\"Description for the dataset created by terraform\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTable, err := bigquery.NewTable(ctx, \"default\", \u0026bigquery.TableArgs{\n\t\t\tDatasetId: _default.DatasetId,\n\t\t\tTableId: pulumi.String(\"tf_test\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTimePartitioning: \u0026bigquery.TableTimePartitioningArgs{\n\t\t\t\tType: pulumi.String(\"DAY\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tSchema: pulumi.String(` [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataloss.NewPreventionJobTrigger(ctx, \"deidentify\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description for the job_trigger created by terraform\"),\n\t\t\tDisplayName: pulumi.String(\"TerraformDisplayName\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"sample-inspect-template\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tDeidentify: \u0026dataloss.PreventionJobTriggerInspectJobActionDeidentifyArgs{\n\t\t\t\t\t\t\tCloudStorageOutput: pulumi.String(\"gs://samplebucket/dir/\"),\n\t\t\t\t\t\t\tFileTypesToTransforms: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"CSV\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"TSV\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTransformationDetailsStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"my-project-name\"),\n\t\t\t\t\t\t\t\t\tDatasetId: _default.DatasetId,\n\t\t\t\t\t\t\t\t\tTableId: defaultTable.TableId,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTransformationConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionDeidentifyTransformationConfigArgs{\n\t\t\t\t\t\t\t\tDeidentifyTemplate: pulumi.String(\"sample-deidentify-template\"),\n\t\t\t\t\t\t\t\tImageRedactTemplate: pulumi.String(\"sample-image-redact-template\"),\n\t\t\t\t\t\t\t\tStructuredDeidentifyTemplate: pulumi.String(\"sample-structured-deidentify-template\"),\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\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\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.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.inputs.TableTimePartitioningArgs;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\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 Dataset(\"default\", DatasetArgs.builder()\n .datasetId(\"tf_test\")\n .friendlyName(\"terraform-test\")\n .description(\"Description for the dataset created by terraform\")\n .location(\"US\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .build());\n\n var defaultTable = new Table(\"defaultTable\", TableArgs.builder()\n .datasetId(default_.datasetId())\n .tableId(\"tf_test\")\n .deletionProtection(false)\n .timePartitioning(TableTimePartitioningArgs.builder()\n .type(\"DAY\")\n .build())\n .labels(Map.of(\"env\", \"default\"))\n .schema(\"\"\"\n [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n \"\"\")\n .build());\n\n var deidentify = new PreventionJobTrigger(\"deidentify\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description for the job_trigger created by terraform\")\n .displayName(\"TerraformDisplayName\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"sample-inspect-template\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .deidentify(PreventionJobTriggerInspectJobActionDeidentifyArgs.builder()\n .cloudStorageOutput(\"gs://samplebucket/dir/\")\n .fileTypesToTransforms( \n \"CSV\",\n \"TSV\")\n .transformationDetailsStorageConfig(PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigTableArgs.builder()\n .projectId(\"my-project-name\")\n .datasetId(default_.datasetId())\n .tableId(defaultTable.tableId())\n .build())\n .build())\n .transformationConfig(PreventionJobTriggerInspectJobActionDeidentifyTransformationConfigArgs.builder()\n .deidentifyTemplate(\"sample-deidentify-template\")\n .imageRedactTemplate(\"sample-image-redact-template\")\n .structuredDeidentifyTemplate(\"sample-structured-deidentify-template\")\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n deidentify:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description for the job_trigger created by terraform\n displayName: TerraformDisplayName\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: sample-inspect-template\n actions:\n - deidentify:\n cloudStorageOutput: gs://samplebucket/dir/\n fileTypesToTransforms:\n - CSV\n - TSV\n transformationDetailsStorageConfig:\n table:\n projectId: my-project-name\n datasetId: ${default.datasetId}\n tableId: ${defaultTable.tableId}\n transformationConfig:\n deidentifyTemplate: sample-deidentify-template\n imageRedactTemplate: sample-image-redact-template\n structuredDeidentifyTemplate: sample-structured-deidentify-template\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n default:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: tf_test\n friendlyName: terraform-test\n description: Description for the dataset created by terraform\n location: US\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n defaultTable:\n type: gcp:bigquery:Table\n name: default\n properties:\n datasetId: ${default.datasetId}\n tableId: tf_test\n deletionProtection: false\n timePartitioning:\n type: DAY\n labels:\n env: default\n schema: |2\n [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Hybrid\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst hybridTrigger = new gcp.dataloss.PreventionJobTrigger(\"hybrid_trigger\", {\n parent: \"projects/my-project-name\",\n triggers: [{\n manual: {},\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n hybridOptions: {\n description: \"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\",\n requiredFindingLabelKeys: [\"appointment-bookings-comments\"],\n labels: {\n env: \"prod\",\n },\n tableOptions: {\n identifyingFields: [{\n name: \"booking_id\",\n }],\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhybrid_trigger = gcp.dataloss.PreventionJobTrigger(\"hybrid_trigger\",\n parent=\"projects/my-project-name\",\n triggers=[{\n \"manual\": {},\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"hybrid_options\": {\n \"description\": \"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\",\n \"required_finding_label_keys\": [\"appointment-bookings-comments\"],\n \"labels\": {\n \"env\": \"prod\",\n },\n \"table_options\": {\n \"identifying_fields\": [{\n \"name\": \"booking_id\",\n }],\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 hybridTrigger = new Gcp.DataLoss.PreventionJobTrigger(\"hybrid_trigger\", new()\n {\n Parent = \"projects/my-project-name\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Manual = null,\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n HybridOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsArgs\n {\n Description = \"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\",\n RequiredFindingLabelKeys = new[]\n {\n \"appointment-bookings-comments\",\n },\n Labels = \n {\n { \"env\", \"prod\" },\n },\n TableOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsArgs\n {\n IdentifyingFields = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsIdentifyingFieldArgs\n {\n Name = \"booking_id\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"hybrid_trigger\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tManual: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\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\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tHybridOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigHybridOptionsArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\"),\n\t\t\t\t\t\tRequiredFindingLabelKeys: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"appointment-bookings-comments\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"env\": pulumi.String(\"prod\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTableOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsArgs{\n\t\t\t\t\t\t\tIdentifyingFields: dataloss.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsIdentifyingFieldArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsIdentifyingFieldArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"booking_id\"),\n\t\t\t\t\t\t\t\t},\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerManualArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsArgs;\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 hybridTrigger = new PreventionJobTrigger(\"hybridTrigger\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .manual()\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .hybridOptions(PreventionJobTriggerInspectJobStorageConfigHybridOptionsArgs.builder()\n .description(\"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\")\n .requiredFindingLabelKeys(\"appointment-bookings-comments\")\n .labels(Map.of(\"env\", \"prod\"))\n .tableOptions(PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsArgs.builder()\n .identifyingFields(PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsIdentifyingFieldArgs.builder()\n .name(\"booking_id\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n hybridTrigger:\n type: gcp:dataloss:PreventionJobTrigger\n name: hybrid_trigger\n properties:\n parent: projects/my-project-name\n triggers:\n - manual: {}\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n hybridOptions:\n description: Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\n requiredFindingLabelKeys:\n - appointment-bookings-comments\n labels:\n env: prod\n tableOptions:\n identifyingFields:\n - name: booking_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Inspect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst inspect = new gcp.dataloss.PreventionJobTrigger(\"inspect\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n inspectConfig: {\n customInfoTypes: [{\n infoType: {\n name: \"MY_CUSTOM_TYPE\",\n },\n likelihood: \"UNLIKELY\",\n regex: {\n pattern: \"test*\",\n },\n }],\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n minLikelihood: \"UNLIKELY\",\n ruleSets: [\n {\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n rules: [{\n exclusionRule: {\n regex: {\n pattern: \".+@example.com\",\n },\n matchingType: \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [{\n name: \"MY_CUSTOM_TYPE\",\n }],\n rules: [{\n hotwordRule: {\n hotwordRegex: {\n pattern: \"example*\",\n },\n proximity: {\n windowBefore: 50,\n },\n likelihoodAdjustment: {\n fixedLikelihood: \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n limits: {\n maxFindingsPerItem: 10,\n maxFindingsPerRequest: 50,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninspect = gcp.dataloss.PreventionJobTrigger(\"inspect\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\n },\n },\n },\n \"inspect_config\": {\n \"custom_info_types\": [{\n \"info_type\": {\n \"name\": \"MY_CUSTOM_TYPE\",\n },\n \"likelihood\": \"UNLIKELY\",\n \"regex\": {\n \"pattern\": \"test*\",\n },\n }],\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"min_likelihood\": \"UNLIKELY\",\n \"rule_sets\": [\n {\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"rules\": [{\n \"exclusion_rule\": {\n \"regex\": {\n \"pattern\": \".+@example.com\",\n },\n \"matching_type\": \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n \"info_types\": [{\n \"name\": \"MY_CUSTOM_TYPE\",\n }],\n \"rules\": [{\n \"hotword_rule\": {\n \"hotword_regex\": {\n \"pattern\": \"example*\",\n },\n \"proximity\": {\n \"window_before\": 50,\n },\n \"likelihood_adjustment\": {\n \"fixed_likelihood\": \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n \"limits\": {\n \"max_findings_per_item\": 10,\n \"max_findings_per_request\": 50,\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 inspect = new Gcp.DataLoss.PreventionJobTrigger(\"inspect\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigArgs\n {\n CustomInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeArgs\n {\n InfoType = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n Likelihood = \"UNLIKELY\",\n Regex = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeRegexArgs\n {\n Pattern = \"test*\",\n },\n },\n },\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n RuleSets = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Regex = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleRegexArgs\n {\n Pattern = \".+@example.com\",\n },\n MatchingType = \"MATCHING_TYPE_FULL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs\n {\n HotwordRule = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleArgs\n {\n HotwordRegex = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs\n {\n Pattern = \"example*\",\n },\n Proximity = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleProximityArgs\n {\n WindowBefore = 50,\n },\n LikelihoodAdjustment = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs\n {\n FixedLikelihood = \"VERY_LIKELY\",\n },\n },\n },\n },\n },\n },\n Limits = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigLimitsArgs\n {\n MaxFindingsPerItem = 10,\n MaxFindingsPerRequest = 50,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"inspect\", \u0026dataloss.PreventionJobTriggerArgs{\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\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\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\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInspectConfig: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigArgs{\n\t\t\t\t\tCustomInfoTypes: dataloss.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeArgs{\n\t\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeRegexArgs{\n\t\t\t\t\t\t\t\tPattern: pulumi.String(\"test*\"),\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\tInfoTypes: dataloss.PreventionJobTriggerInspectJobInspectConfigInfoTypeArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigInfoTypeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\t\tRuleSets: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRules: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleRegexArgs{\n\t\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\".+@example.com\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_FULL_MATCH\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRules: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\t\tHotwordRule: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleArgs{\n\t\t\t\t\t\t\t\t\t\tHotwordRegex: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs{\n\t\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\"example*\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tProximity: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleProximityArgs{\n\t\t\t\t\t\t\t\t\t\t\tWindowBefore: pulumi.Int(50),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tLikelihoodAdjustment: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs{\n\t\t\t\t\t\t\t\t\t\t\tFixedLikelihood: pulumi.String(\"VERY_LIKELY\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tLimits: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigLimitsArgs{\n\t\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(10),\n\t\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(50),\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobInspectConfigLimitsArgs;\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 inspect = new PreventionJobTrigger(\"inspect\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .inspectConfig(PreventionJobTriggerInspectJobInspectConfigArgs.builder()\n .customInfoTypes(PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeArgs.builder()\n .infoType(PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .likelihood(\"UNLIKELY\")\n .regex(PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeRegexArgs.builder()\n .pattern(\"test*\")\n .build())\n .build())\n .infoTypes(PreventionJobTriggerInspectJobInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .ruleSets( \n PreventionJobTriggerInspectJobInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .rules(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .regex(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleRegexArgs.builder()\n .pattern(\".+@example.com\")\n .build())\n .matchingType(\"MATCHING_TYPE_FULL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionJobTriggerInspectJobInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .rules(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs.builder()\n .hotwordRule(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleArgs.builder()\n .hotwordRegex(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs.builder()\n .pattern(\"example*\")\n .build())\n .proximity(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleProximityArgs.builder()\n .windowBefore(50)\n .build())\n .likelihoodAdjustment(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs.builder()\n .fixedLikelihood(\"VERY_LIKELY\")\n .build())\n .build())\n .build())\n .build())\n .limits(PreventionJobTriggerInspectJobInspectConfigLimitsArgs.builder()\n .maxFindingsPerItem(10)\n .maxFindingsPerRequest(50)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n inspect:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n inspectConfig:\n customInfoTypes:\n - infoType:\n name: MY_CUSTOM_TYPE\n likelihood: UNLIKELY\n regex:\n pattern: test*\n infoTypes:\n - name: EMAIL_ADDRESS\n minLikelihood: UNLIKELY\n ruleSets:\n - infoTypes:\n - name: EMAIL_ADDRESS\n rules:\n - exclusionRule:\n regex:\n pattern: .+@example.com\n matchingType: MATCHING_TYPE_FULL_MATCH\n - infoTypes:\n - name: MY_CUSTOM_TYPE\n rules:\n - hotwordRule:\n hotwordRegex:\n pattern: example*\n proximity:\n windowBefore: 50\n likelihoodAdjustment:\n fixedLikelihood: VERY_LIKELY\n limits:\n maxFindingsPerItem: 10\n maxFindingsPerRequest: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Publish To Stackdriver\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst publishToStackdriver = new gcp.dataloss.PreventionJobTrigger(\"publish_to_stackdriver\", {\n parent: \"projects/my-project-name\",\n description: \"Description for the job_trigger created by terraform\",\n displayName: \"TerraformDisplayName\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"sample-inspect-template\",\n actions: [{\n publishToStackdriver: {},\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npublish_to_stackdriver = gcp.dataloss.PreventionJobTrigger(\"publish_to_stackdriver\",\n parent=\"projects/my-project-name\",\n description=\"Description for the job_trigger created by terraform\",\n display_name=\"TerraformDisplayName\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"sample-inspect-template\",\n \"actions\": [{\n \"publish_to_stackdriver\": {},\n }],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\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 publishToStackdriver = new Gcp.DataLoss.PreventionJobTrigger(\"publish_to_stackdriver\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description for the job_trigger created by terraform\",\n DisplayName = \"TerraformDisplayName\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"sample-inspect-template\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n PublishToStackdriver = null,\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"publish_to_stackdriver\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description for the job_trigger created by terraform\"),\n\t\t\tDisplayName: pulumi.String(\"TerraformDisplayName\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"sample-inspect-template\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tPublishToStackdriver: nil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\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 publishToStackdriver = new PreventionJobTrigger(\"publishToStackdriver\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description for the job_trigger created by terraform\")\n .displayName(\"TerraformDisplayName\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"sample-inspect-template\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .publishToStackdriver()\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n publishToStackdriver:\n type: gcp:dataloss:PreventionJobTrigger\n name: publish_to_stackdriver\n properties:\n parent: projects/my-project-name\n description: Description for the job_trigger created by terraform\n displayName: TerraformDisplayName\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: sample-inspect-template\n actions:\n - publishToStackdriver: {}\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger With Id\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst withTriggerId = new gcp.dataloss.PreventionJobTrigger(\"with_trigger_id\", {\n parent: \"projects/my-project-name\",\n description: \"Starting description\",\n displayName: \"display\",\n triggerId: \"id-\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset123\",\n },\n },\n },\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nwith_trigger_id = gcp.dataloss.PreventionJobTrigger(\"with_trigger_id\",\n parent=\"projects/my-project-name\",\n description=\"Starting description\",\n display_name=\"display\",\n trigger_id=\"id-\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset123\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\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 withTriggerId = new Gcp.DataLoss.PreventionJobTrigger(\"with_trigger_id\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Starting description\",\n DisplayName = \"display\",\n TriggerId = \"id-\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset123\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"with_trigger_id\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Starting description\"),\n\t\t\tDisplayName: pulumi.String(\"display\"),\n\t\t\tTriggerId: pulumi.String(\"id-\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset123\"),\n\t\t\t\t\t\t\t\t},\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\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\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 withTriggerId = new PreventionJobTrigger(\"withTriggerId\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Starting description\")\n .displayName(\"display\")\n .triggerId(\"id-\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset123\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n withTriggerId:\n type: gcp:dataloss:PreventionJobTrigger\n name: with_trigger_id\n properties:\n parent: projects/my-project-name\n description: Starting description\n displayName: display\n triggerId: id-\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset123\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Multiple Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionJobTrigger(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [\n {\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n },\n {\n pubSub: {\n topic: \"projects/project/topics/topic-name\",\n },\n },\n ],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionJobTrigger(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [\n {\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n },\n {\n \"pub_sub\": {\n \"topic\": \"projects/project/topics/topic-name\",\n },\n },\n ],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\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 basic = new Gcp.DataLoss.PreventionJobTrigger(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n PubSub = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionPubSubArgs\n {\n Topic = \"projects/project/topics/topic-name\",\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"basic\", \u0026dataloss.PreventionJobTriggerArgs{\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\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\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\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tPubSub: \u0026dataloss.PreventionJobTriggerInspectJobActionPubSubArgs{\n\t\t\t\t\t\t\tTopic: pulumi.String(\"projects/project/topics/topic-name\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\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 PreventionJobTrigger(\"basic\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions( \n PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build(),\n PreventionJobTriggerInspectJobActionArgs.builder()\n .pubSub(PreventionJobTriggerInspectJobActionPubSubArgs.builder()\n .topic(\"projects/project/topics/topic-name\")\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n - pubSub:\n topic: projects/project/topics/topic-name\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Cloud Storage Optional Timespan Autopopulation\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionJobTrigger(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n timespanConfig: {\n enableAutoPopulationOfTimespanConfig: true,\n },\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionJobTrigger(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"timespan_config\": {\n \"enable_auto_population_of_timespan_config\": True,\n },\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\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 basic = new Gcp.DataLoss.PreventionJobTrigger(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n TimespanConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs\n {\n EnableAutoPopulationOfTimespanConfig = true,\n },\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"basic\", \u0026dataloss.PreventionJobTriggerArgs{\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\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\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\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tTimespanConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs{\n\t\t\t\t\t\tEnableAutoPopulationOfTimespanConfig: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\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 PreventionJobTrigger(\"basic\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .timespanConfig(PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs.builder()\n .enableAutoPopulationOfTimespanConfig(true)\n .build())\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n timespanConfig:\n enableAutoPopulationOfTimespanConfig: true\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Timespan Config Big Query\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst timespanConfigBigQuery = new gcp.dataloss.PreventionJobTrigger(\"timespan_config_big_query\", {\n parent: \"projects/my-project-name\",\n description: \"BigQuery DLP Job Trigger with timespan config and row limit\",\n displayName: \"bigquery-dlp-job-trigger-limit-timespan\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"projects/test/locations/global/inspectTemplates/6425492983381733900\",\n storageConfig: {\n bigQueryOptions: {\n tableReference: {\n projectId: \"project\",\n datasetId: \"dataset\",\n tableId: \"table\",\n },\n sampleMethod: \"\",\n },\n timespanConfig: {\n startTime: \"2023-01-01T00:00:23Z\",\n timestampField: {\n name: \"timestamp\",\n },\n },\n },\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"output\",\n },\n },\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntimespan_config_big_query = gcp.dataloss.PreventionJobTrigger(\"timespan_config_big_query\",\n parent=\"projects/my-project-name\",\n description=\"BigQuery DLP Job Trigger with timespan config and row limit\",\n display_name=\"bigquery-dlp-job-trigger-limit-timespan\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"projects/test/locations/global/inspectTemplates/6425492983381733900\",\n \"storage_config\": {\n \"big_query_options\": {\n \"table_reference\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n \"table_id\": \"table\",\n },\n \"sample_method\": \"\",\n },\n \"timespan_config\": {\n \"start_time\": \"2023-01-01T00:00:23Z\",\n \"timestamp_field\": {\n \"name\": \"timestamp\",\n },\n },\n },\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"output\",\n },\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 timespanConfigBigQuery = new Gcp.DataLoss.PreventionJobTrigger(\"timespan_config_big_query\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"BigQuery DLP Job Trigger with timespan config and row limit\",\n DisplayName = \"bigquery-dlp-job-trigger-limit-timespan\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"projects/test/locations/global/inspectTemplates/6425492983381733900\",\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n BigQueryOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs\n {\n TableReference = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n TableId = \"table\",\n },\n SampleMethod = \"\",\n },\n TimespanConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs\n {\n StartTime = \"2023-01-01T00:00:23Z\",\n TimestampField = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigTimestampFieldArgs\n {\n Name = \"timestamp\",\n },\n },\n },\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"output\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewPreventionJobTrigger(ctx, \"timespan_config_big_query\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"BigQuery DLP Job Trigger with timespan config and row limit\"),\n\t\t\tDisplayName: pulumi.String(\"bigquery-dlp-job-trigger-limit-timespan\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"projects/test/locations/global/inspectTemplates/6425492983381733900\"),\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tBigQueryOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs{\n\t\t\t\t\t\tTableReference: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs{\n\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\tTableId: pulumi.String(\"table\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSampleMethod: pulumi.String(\"\"),\n\t\t\t\t\t},\n\t\t\t\t\tTimespanConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs{\n\t\t\t\t\t\tStartTime: pulumi.String(\"2023-01-01T00:00:23Z\"),\n\t\t\t\t\t\tTimestampField: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigTimespanConfigTimestampFieldArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"timestamp\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"output\"),\n\t\t\t\t\t\t\t\t},\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.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigTimestampFieldArgs;\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 timespanConfigBigQuery = new PreventionJobTrigger(\"timespanConfigBigQuery\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"BigQuery DLP Job Trigger with timespan config and row limit\")\n .displayName(\"bigquery-dlp-job-trigger-limit-timespan\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"projects/test/locations/global/inspectTemplates/6425492983381733900\")\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .bigQueryOptions(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs.builder()\n .tableReference(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .tableId(\"table\")\n .build())\n .sampleMethod(\"\")\n .build())\n .timespanConfig(PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs.builder()\n .startTime(\"2023-01-01T00:00:23Z\")\n .timestampField(PreventionJobTriggerInspectJobStorageConfigTimespanConfigTimestampFieldArgs.builder()\n .name(\"timestamp\")\n .build())\n .build())\n .build())\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"output\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n timespanConfigBigQuery:\n type: gcp:dataloss:PreventionJobTrigger\n name: timespan_config_big_query\n properties:\n parent: projects/my-project-name\n description: BigQuery DLP Job Trigger with timespan config and row limit\n displayName: bigquery-dlp-job-trigger-limit-timespan\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: projects/test/locations/global/inspectTemplates/6425492983381733900\n storageConfig:\n bigQueryOptions:\n tableReference:\n projectId: project\n datasetId: dataset\n tableId: table\n sampleMethod:\n timespanConfig:\n startTime: 2023-01-01T00:00:23Z\n timestampField:\n name: timestamp\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: output\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJobTrigger can be imported using any of these accepted formats:\n\n* `{{parent}}/jobTriggers/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, JobTrigger can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataloss/preventionJobTrigger:PreventionJobTrigger default {{parent}}/jobTriggers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataloss/preventionJobTrigger:PreventionJobTrigger default {{parent}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -174925,7 +174925,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## Example Usage\n\n### Dlp Stored Info Type Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionStoredInfoType(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n regex: {\n pattern: \"patient\",\n groupIndexes: [2],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionStoredInfoType(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n regex={\n \"pattern\": \"patient\",\n \"groupIndexes\": [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 basic = new Gcp.DataLoss.PreventionStoredInfoType(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Regex = new Gcp.DataLoss.Inputs.PreventionStoredInfoTypeRegexArgs\n {\n Pattern = \"patient\",\n GroupIndexes = new[]\n {\n 2,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tRegex: \u0026dataloss.PreventionStoredInfoTypeRegexArgs{\n\t\t\t\tPattern: pulumi.String(\"patient\"),\n\t\t\t\tGroupIndexes: pulumi.IntArray{\n\t\t\t\t\tpulumi.Int(2),\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.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 .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .regex(PreventionStoredInfoTypeRegexArgs.builder()\n .pattern(\"patient\")\n .groupIndexes(2)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionStoredInfoType\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n regex:\n pattern: patient\n groupIndexes:\n - 2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Stored Info Type Dictionary\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dictionary = new gcp.dataloss.PreventionStoredInfoType(\"dictionary\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n dictionary: {\n wordList: {\n words: [\n \"word\",\n \"word2\",\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndictionary = gcp.dataloss.PreventionStoredInfoType(\"dictionary\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n dictionary={\n \"wordList\": {\n \"words\": [\n \"word\",\n \"word2\",\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 dictionary = new Gcp.DataLoss.PreventionStoredInfoType(\"dictionary\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\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})\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 .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .dictionary(PreventionStoredInfoTypeDictionaryArgs.builder()\n .wordList(PreventionStoredInfoTypeDictionaryWordListArgs.builder()\n .words( \n \"word\",\n \"word2\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dictionary:\n type: gcp:dataloss:PreventionStoredInfoType\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n dictionary:\n wordList:\n words:\n - word\n - word2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Stored Info Type Large Custom Dictionary\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"tf-test-bucket\",\n location: \"US\",\n forceDestroy: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"tf-test-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 name=\"tf-test-bucket\",\n location=\"US\",\n force_destroy=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"tf-test-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={\n \"cloudStorageFileSet\": {\n \"url\": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"gs://{bucket_name}/{object_name}\"),\n },\n \"outputPath\": {\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 Name = \"tf-test-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"tf-test-object\",\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/v7/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"tf-test-bucket\"),\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\tName: pulumi.String(\"tf-test-object\"),\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 .name(\"tf-test-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"tf-test-object\")\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 name: tf-test-bucket\n location: US\n forceDestroy: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: tf-test-object\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/words.txt\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Stored Info Type With Id\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst withStoredInfoTypeId = new gcp.dataloss.PreventionStoredInfoType(\"with_stored_info_type_id\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n storedInfoTypeId: \"id-\",\n regex: {\n pattern: \"patient\",\n groupIndexes: [2],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nwith_stored_info_type_id = gcp.dataloss.PreventionStoredInfoType(\"with_stored_info_type_id\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n stored_info_type_id=\"id-\",\n regex={\n \"pattern\": \"patient\",\n \"groupIndexes\": [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 withStoredInfoTypeId = new Gcp.DataLoss.PreventionStoredInfoType(\"with_stored_info_type_id\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n StoredInfoTypeId = \"id-\",\n Regex = new Gcp.DataLoss.Inputs.PreventionStoredInfoTypeRegexArgs\n {\n Pattern = \"patient\",\n GroupIndexes = new[]\n {\n 2,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"with_stored_info_type_id\", \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\tStoredInfoTypeId: pulumi.String(\"id-\"),\n\t\t\tRegex: \u0026dataloss.PreventionStoredInfoTypeRegexArgs{\n\t\t\t\tPattern: pulumi.String(\"patient\"),\n\t\t\t\tGroupIndexes: pulumi.IntArray{\n\t\t\t\t\tpulumi.Int(2),\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.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 .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .storedInfoTypeId(\"id-\")\n .regex(PreventionStoredInfoTypeRegexArgs.builder()\n .pattern(\"patient\")\n .groupIndexes(2)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n withStoredInfoTypeId:\n type: gcp:dataloss:PreventionStoredInfoType\n name: with_stored_info_type_id\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n storedInfoTypeId: id-\n regex:\n pattern: patient\n groupIndexes:\n - 2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nStoredInfoType can be imported using any of these accepted formats:\n\n* `{{parent}}/storedInfoTypes/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, StoredInfoType can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataloss/preventionStoredInfoType:PreventionStoredInfoType default {{parent}}/storedInfoTypes/{{name}}\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## Example Usage\n\n### Dlp Stored Info Type Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionStoredInfoType(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n regex: {\n pattern: \"patient\",\n groupIndexes: [2],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionStoredInfoType(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n regex={\n \"pattern\": \"patient\",\n \"group_indexes\": [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 basic = new Gcp.DataLoss.PreventionStoredInfoType(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Regex = new Gcp.DataLoss.Inputs.PreventionStoredInfoTypeRegexArgs\n {\n Pattern = \"patient\",\n GroupIndexes = new[]\n {\n 2,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tRegex: \u0026dataloss.PreventionStoredInfoTypeRegexArgs{\n\t\t\t\tPattern: pulumi.String(\"patient\"),\n\t\t\t\tGroupIndexes: pulumi.IntArray{\n\t\t\t\t\tpulumi.Int(2),\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.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 .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .regex(PreventionStoredInfoTypeRegexArgs.builder()\n .pattern(\"patient\")\n .groupIndexes(2)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionStoredInfoType\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n regex:\n pattern: patient\n groupIndexes:\n - 2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Stored Info Type Dictionary\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dictionary = new gcp.dataloss.PreventionStoredInfoType(\"dictionary\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n dictionary: {\n wordList: {\n words: [\n \"word\",\n \"word2\",\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndictionary = gcp.dataloss.PreventionStoredInfoType(\"dictionary\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n dictionary={\n \"word_list\": {\n \"words\": [\n \"word\",\n \"word2\",\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 dictionary = new Gcp.DataLoss.PreventionStoredInfoType(\"dictionary\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\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})\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 .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .dictionary(PreventionStoredInfoTypeDictionaryArgs.builder()\n .wordList(PreventionStoredInfoTypeDictionaryWordListArgs.builder()\n .words( \n \"word\",\n \"word2\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dictionary:\n type: gcp:dataloss:PreventionStoredInfoType\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n dictionary:\n wordList:\n words:\n - word\n - word2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Stored Info Type Large Custom Dictionary\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"tf-test-bucket\",\n location: \"US\",\n forceDestroy: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"tf-test-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 name=\"tf-test-bucket\",\n location=\"US\",\n force_destroy=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"tf-test-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={\n \"cloud_storage_file_set\": {\n \"url\": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"gs://{bucket_name}/{object_name}\"),\n },\n \"output_path\": {\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 Name = \"tf-test-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"tf-test-object\",\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/v7/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"tf-test-bucket\"),\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\tName: pulumi.String(\"tf-test-object\"),\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 .name(\"tf-test-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"tf-test-object\")\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 name: tf-test-bucket\n location: US\n forceDestroy: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: tf-test-object\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/words.txt\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Stored Info Type With Id\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst withStoredInfoTypeId = new gcp.dataloss.PreventionStoredInfoType(\"with_stored_info_type_id\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n storedInfoTypeId: \"id-\",\n regex: {\n pattern: \"patient\",\n groupIndexes: [2],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nwith_stored_info_type_id = gcp.dataloss.PreventionStoredInfoType(\"with_stored_info_type_id\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n stored_info_type_id=\"id-\",\n regex={\n \"pattern\": \"patient\",\n \"group_indexes\": [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 withStoredInfoTypeId = new Gcp.DataLoss.PreventionStoredInfoType(\"with_stored_info_type_id\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n StoredInfoTypeId = \"id-\",\n Regex = new Gcp.DataLoss.Inputs.PreventionStoredInfoTypeRegexArgs\n {\n Pattern = \"patient\",\n GroupIndexes = new[]\n {\n 2,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"with_stored_info_type_id\", \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\tStoredInfoTypeId: pulumi.String(\"id-\"),\n\t\t\tRegex: \u0026dataloss.PreventionStoredInfoTypeRegexArgs{\n\t\t\t\tPattern: pulumi.String(\"patient\"),\n\t\t\t\tGroupIndexes: pulumi.IntArray{\n\t\t\t\t\tpulumi.Int(2),\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.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 .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .storedInfoTypeId(\"id-\")\n .regex(PreventionStoredInfoTypeRegexArgs.builder()\n .pattern(\"patient\")\n .groupIndexes(2)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n withStoredInfoTypeId:\n type: gcp:dataloss:PreventionStoredInfoType\n name: with_stored_info_type_id\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n storedInfoTypeId: id-\n regex:\n pattern: patient\n groupIndexes:\n - 2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nStoredInfoType can be imported using any of these accepted formats:\n\n* `{{parent}}/storedInfoTypes/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, StoredInfoType can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataloss/preventionStoredInfoType:PreventionStoredInfoType default {{parent}}/storedInfoTypes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataloss/preventionStoredInfoType:PreventionStoredInfoType default {{parent}}/{{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -175550,7 +175550,7 @@ } }, "gcp:dataplex/asset:Asset": { - "description": "The Dataplex Asset resource\n\n## Example Usage\n\n### Basic_asset\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicBucket = new gcp.storage.Bucket(\"basic_bucket\", {\n name: \"bucket\",\n location: \"us-west1\",\n uniformBucketLevelAccess: true,\n project: \"my-project-name\",\n});\nconst basicLake = new gcp.dataplex.Lake(\"basic_lake\", {\n name: \"lake\",\n location: \"us-west1\",\n project: \"my-project-name\",\n});\nconst basicZone = new gcp.dataplex.Zone(\"basic_zone\", {\n name: \"zone\",\n location: \"us-west1\",\n lake: basicLake.name,\n type: \"RAW\",\n discoverySpec: {\n enabled: false,\n },\n resourceSpec: {\n locationType: \"SINGLE_REGION\",\n },\n project: \"my-project-name\",\n});\nconst primary = new gcp.dataplex.Asset(\"primary\", {\n name: \"asset\",\n location: \"us-west1\",\n lake: basicLake.name,\n dataplexZone: basicZone.name,\n discoverySpec: {\n enabled: false,\n },\n resourceSpec: {\n name: \"projects/my-project-name/buckets/bucket\",\n type: \"STORAGE_BUCKET\",\n },\n labels: {\n env: \"foo\",\n \"my-asset\": \"exists\",\n },\n project: \"my-project-name\",\n}, {\n dependsOn: [basicBucket],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_bucket = gcp.storage.Bucket(\"basic_bucket\",\n name=\"bucket\",\n location=\"us-west1\",\n uniform_bucket_level_access=True,\n project=\"my-project-name\")\nbasic_lake = gcp.dataplex.Lake(\"basic_lake\",\n name=\"lake\",\n location=\"us-west1\",\n project=\"my-project-name\")\nbasic_zone = gcp.dataplex.Zone(\"basic_zone\",\n name=\"zone\",\n location=\"us-west1\",\n lake=basic_lake.name,\n type=\"RAW\",\n discovery_spec={\n \"enabled\": False,\n },\n resource_spec={\n \"locationType\": \"SINGLE_REGION\",\n },\n project=\"my-project-name\")\nprimary = gcp.dataplex.Asset(\"primary\",\n name=\"asset\",\n location=\"us-west1\",\n lake=basic_lake.name,\n dataplex_zone=basic_zone.name,\n discovery_spec={\n \"enabled\": False,\n },\n resource_spec={\n \"name\": \"projects/my-project-name/buckets/bucket\",\n \"type\": \"STORAGE_BUCKET\",\n },\n labels={\n \"env\": \"foo\",\n \"my-asset\": \"exists\",\n },\n project=\"my-project-name\",\n opts = pulumi.ResourceOptions(depends_on=[basic_bucket]))\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 basicBucket = new Gcp.Storage.Bucket(\"basic_bucket\", new()\n {\n Name = \"bucket\",\n Location = \"us-west1\",\n UniformBucketLevelAccess = true,\n Project = \"my-project-name\",\n });\n\n var basicLake = new Gcp.DataPlex.Lake(\"basic_lake\", new()\n {\n Name = \"lake\",\n Location = \"us-west1\",\n Project = \"my-project-name\",\n });\n\n var basicZone = new Gcp.DataPlex.Zone(\"basic_zone\", new()\n {\n Name = \"zone\",\n Location = \"us-west1\",\n Lake = basicLake.Name,\n Type = \"RAW\",\n DiscoverySpec = new Gcp.DataPlex.Inputs.ZoneDiscoverySpecArgs\n {\n Enabled = false,\n },\n ResourceSpec = new Gcp.DataPlex.Inputs.ZoneResourceSpecArgs\n {\n LocationType = \"SINGLE_REGION\",\n },\n Project = \"my-project-name\",\n });\n\n var primary = new Gcp.DataPlex.Asset(\"primary\", new()\n {\n Name = \"asset\",\n Location = \"us-west1\",\n Lake = basicLake.Name,\n DataplexZone = basicZone.Name,\n DiscoverySpec = new Gcp.DataPlex.Inputs.AssetDiscoverySpecArgs\n {\n Enabled = false,\n },\n ResourceSpec = new Gcp.DataPlex.Inputs.AssetResourceSpecArgs\n {\n Name = \"projects/my-project-name/buckets/bucket\",\n Type = \"STORAGE_BUCKET\",\n },\n Labels = \n {\n { \"env\", \"foo\" },\n { \"my-asset\", \"exists\" },\n },\n Project = \"my-project-name\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n basicBucket,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tbasicBucket, err := storage.NewBucket(ctx, \"basic_bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"bucket\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\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\tbasicLake, err := dataplex.NewLake(ctx, \"basic_lake\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"lake\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\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\tbasicZone, err := dataplex.NewZone(ctx, \"basic_zone\", \u0026dataplex.ZoneArgs{\n\t\t\tName: pulumi.String(\"zone\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tLake: basicLake.Name,\n\t\t\tType: pulumi.String(\"RAW\"),\n\t\t\tDiscoverySpec: \u0026dataplex.ZoneDiscoverySpecArgs{\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tResourceSpec: \u0026dataplex.ZoneResourceSpecArgs{\n\t\t\t\tLocationType: pulumi.String(\"SINGLE_REGION\"),\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\t_, err = dataplex.NewAsset(ctx, \"primary\", \u0026dataplex.AssetArgs{\n\t\t\tName: pulumi.String(\"asset\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tLake: basicLake.Name,\n\t\t\tDataplexZone: basicZone.Name,\n\t\t\tDiscoverySpec: \u0026dataplex.AssetDiscoverySpecArgs{\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tResourceSpec: \u0026dataplex.AssetResourceSpecArgs{\n\t\t\t\tName: pulumi.String(\"projects/my-project-name/buckets/bucket\"),\n\t\t\t\tType: pulumi.String(\"STORAGE_BUCKET\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"foo\"),\n\t\t\t\t\"my-asset\": pulumi.String(\"exists\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbasicBucket,\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.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Zone;\nimport com.pulumi.gcp.dataplex.ZoneArgs;\nimport com.pulumi.gcp.dataplex.inputs.ZoneDiscoverySpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.ZoneResourceSpecArgs;\nimport com.pulumi.gcp.dataplex.Asset;\nimport com.pulumi.gcp.dataplex.AssetArgs;\nimport com.pulumi.gcp.dataplex.inputs.AssetDiscoverySpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.AssetResourceSpecArgs;\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 basicBucket = new Bucket(\"basicBucket\", BucketArgs.builder()\n .name(\"bucket\")\n .location(\"us-west1\")\n .uniformBucketLevelAccess(true)\n .project(\"my-project-name\")\n .build());\n\n var basicLake = new Lake(\"basicLake\", LakeArgs.builder()\n .name(\"lake\")\n .location(\"us-west1\")\n .project(\"my-project-name\")\n .build());\n\n var basicZone = new Zone(\"basicZone\", ZoneArgs.builder()\n .name(\"zone\")\n .location(\"us-west1\")\n .lake(basicLake.name())\n .type(\"RAW\")\n .discoverySpec(ZoneDiscoverySpecArgs.builder()\n .enabled(false)\n .build())\n .resourceSpec(ZoneResourceSpecArgs.builder()\n .locationType(\"SINGLE_REGION\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n var primary = new Asset(\"primary\", AssetArgs.builder()\n .name(\"asset\")\n .location(\"us-west1\")\n .lake(basicLake.name())\n .dataplexZone(basicZone.name())\n .discoverySpec(AssetDiscoverySpecArgs.builder()\n .enabled(false)\n .build())\n .resourceSpec(AssetResourceSpecArgs.builder()\n .name(\"projects/my-project-name/buckets/bucket\")\n .type(\"STORAGE_BUCKET\")\n .build())\n .labels(Map.ofEntries(\n Map.entry(\"env\", \"foo\"),\n Map.entry(\"my-asset\", \"exists\")\n ))\n .project(\"my-project-name\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(basicBucket)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicBucket:\n type: gcp:storage:Bucket\n name: basic_bucket\n properties:\n name: bucket\n location: us-west1\n uniformBucketLevelAccess: true\n project: my-project-name\n basicLake:\n type: gcp:dataplex:Lake\n name: basic_lake\n properties:\n name: lake\n location: us-west1\n project: my-project-name\n basicZone:\n type: gcp:dataplex:Zone\n name: basic_zone\n properties:\n name: zone\n location: us-west1\n lake: ${basicLake.name}\n type: RAW\n discoverySpec:\n enabled: false\n resourceSpec:\n locationType: SINGLE_REGION\n project: my-project-name\n primary:\n type: gcp:dataplex:Asset\n properties:\n name: asset\n location: us-west1\n lake: ${basicLake.name}\n dataplexZone: ${basicZone.name}\n discoverySpec:\n enabled: false\n resourceSpec:\n name: projects/my-project-name/buckets/bucket\n type: STORAGE_BUCKET\n labels:\n env: foo\n my-asset: exists\n project: my-project-name\n options:\n dependson:\n - ${basicBucket}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAsset can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/lakes/{{lake}}/zones/{{dataplex_zone}}/assets/{{name}}`\n\n* `{{project}}/{{location}}/{{lake}}/{{dataplex_zone}}/{{name}}`\n\n* `{{location}}/{{lake}}/{{dataplex_zone}}/{{name}}`\n\nWhen using the `pulumi import` command, Asset can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataplex/asset:Asset default projects/{{project}}/locations/{{location}}/lakes/{{lake}}/zones/{{dataplex_zone}}/assets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/asset:Asset default {{project}}/{{location}}/{{lake}}/{{dataplex_zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/asset:Asset default {{location}}/{{lake}}/{{dataplex_zone}}/{{name}}\n```\n\n", + "description": "The Dataplex Asset resource\n\n## Example Usage\n\n### Basic_asset\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicBucket = new gcp.storage.Bucket(\"basic_bucket\", {\n name: \"bucket\",\n location: \"us-west1\",\n uniformBucketLevelAccess: true,\n project: \"my-project-name\",\n});\nconst basicLake = new gcp.dataplex.Lake(\"basic_lake\", {\n name: \"lake\",\n location: \"us-west1\",\n project: \"my-project-name\",\n});\nconst basicZone = new gcp.dataplex.Zone(\"basic_zone\", {\n name: \"zone\",\n location: \"us-west1\",\n lake: basicLake.name,\n type: \"RAW\",\n discoverySpec: {\n enabled: false,\n },\n resourceSpec: {\n locationType: \"SINGLE_REGION\",\n },\n project: \"my-project-name\",\n});\nconst primary = new gcp.dataplex.Asset(\"primary\", {\n name: \"asset\",\n location: \"us-west1\",\n lake: basicLake.name,\n dataplexZone: basicZone.name,\n discoverySpec: {\n enabled: false,\n },\n resourceSpec: {\n name: \"projects/my-project-name/buckets/bucket\",\n type: \"STORAGE_BUCKET\",\n },\n labels: {\n env: \"foo\",\n \"my-asset\": \"exists\",\n },\n project: \"my-project-name\",\n}, {\n dependsOn: [basicBucket],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_bucket = gcp.storage.Bucket(\"basic_bucket\",\n name=\"bucket\",\n location=\"us-west1\",\n uniform_bucket_level_access=True,\n project=\"my-project-name\")\nbasic_lake = gcp.dataplex.Lake(\"basic_lake\",\n name=\"lake\",\n location=\"us-west1\",\n project=\"my-project-name\")\nbasic_zone = gcp.dataplex.Zone(\"basic_zone\",\n name=\"zone\",\n location=\"us-west1\",\n lake=basic_lake.name,\n type=\"RAW\",\n discovery_spec={\n \"enabled\": False,\n },\n resource_spec={\n \"location_type\": \"SINGLE_REGION\",\n },\n project=\"my-project-name\")\nprimary = gcp.dataplex.Asset(\"primary\",\n name=\"asset\",\n location=\"us-west1\",\n lake=basic_lake.name,\n dataplex_zone=basic_zone.name,\n discovery_spec={\n \"enabled\": False,\n },\n resource_spec={\n \"name\": \"projects/my-project-name/buckets/bucket\",\n \"type\": \"STORAGE_BUCKET\",\n },\n labels={\n \"env\": \"foo\",\n \"my-asset\": \"exists\",\n },\n project=\"my-project-name\",\n opts = pulumi.ResourceOptions(depends_on=[basic_bucket]))\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 basicBucket = new Gcp.Storage.Bucket(\"basic_bucket\", new()\n {\n Name = \"bucket\",\n Location = \"us-west1\",\n UniformBucketLevelAccess = true,\n Project = \"my-project-name\",\n });\n\n var basicLake = new Gcp.DataPlex.Lake(\"basic_lake\", new()\n {\n Name = \"lake\",\n Location = \"us-west1\",\n Project = \"my-project-name\",\n });\n\n var basicZone = new Gcp.DataPlex.Zone(\"basic_zone\", new()\n {\n Name = \"zone\",\n Location = \"us-west1\",\n Lake = basicLake.Name,\n Type = \"RAW\",\n DiscoverySpec = new Gcp.DataPlex.Inputs.ZoneDiscoverySpecArgs\n {\n Enabled = false,\n },\n ResourceSpec = new Gcp.DataPlex.Inputs.ZoneResourceSpecArgs\n {\n LocationType = \"SINGLE_REGION\",\n },\n Project = \"my-project-name\",\n });\n\n var primary = new Gcp.DataPlex.Asset(\"primary\", new()\n {\n Name = \"asset\",\n Location = \"us-west1\",\n Lake = basicLake.Name,\n DataplexZone = basicZone.Name,\n DiscoverySpec = new Gcp.DataPlex.Inputs.AssetDiscoverySpecArgs\n {\n Enabled = false,\n },\n ResourceSpec = new Gcp.DataPlex.Inputs.AssetResourceSpecArgs\n {\n Name = \"projects/my-project-name/buckets/bucket\",\n Type = \"STORAGE_BUCKET\",\n },\n Labels = \n {\n { \"env\", \"foo\" },\n { \"my-asset\", \"exists\" },\n },\n Project = \"my-project-name\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n basicBucket,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tbasicBucket, err := storage.NewBucket(ctx, \"basic_bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"bucket\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\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\tbasicLake, err := dataplex.NewLake(ctx, \"basic_lake\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"lake\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\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\tbasicZone, err := dataplex.NewZone(ctx, \"basic_zone\", \u0026dataplex.ZoneArgs{\n\t\t\tName: pulumi.String(\"zone\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tLake: basicLake.Name,\n\t\t\tType: pulumi.String(\"RAW\"),\n\t\t\tDiscoverySpec: \u0026dataplex.ZoneDiscoverySpecArgs{\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tResourceSpec: \u0026dataplex.ZoneResourceSpecArgs{\n\t\t\t\tLocationType: pulumi.String(\"SINGLE_REGION\"),\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\t_, err = dataplex.NewAsset(ctx, \"primary\", \u0026dataplex.AssetArgs{\n\t\t\tName: pulumi.String(\"asset\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tLake: basicLake.Name,\n\t\t\tDataplexZone: basicZone.Name,\n\t\t\tDiscoverySpec: \u0026dataplex.AssetDiscoverySpecArgs{\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tResourceSpec: \u0026dataplex.AssetResourceSpecArgs{\n\t\t\t\tName: pulumi.String(\"projects/my-project-name/buckets/bucket\"),\n\t\t\t\tType: pulumi.String(\"STORAGE_BUCKET\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"foo\"),\n\t\t\t\t\"my-asset\": pulumi.String(\"exists\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbasicBucket,\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.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Zone;\nimport com.pulumi.gcp.dataplex.ZoneArgs;\nimport com.pulumi.gcp.dataplex.inputs.ZoneDiscoverySpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.ZoneResourceSpecArgs;\nimport com.pulumi.gcp.dataplex.Asset;\nimport com.pulumi.gcp.dataplex.AssetArgs;\nimport com.pulumi.gcp.dataplex.inputs.AssetDiscoverySpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.AssetResourceSpecArgs;\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 basicBucket = new Bucket(\"basicBucket\", BucketArgs.builder()\n .name(\"bucket\")\n .location(\"us-west1\")\n .uniformBucketLevelAccess(true)\n .project(\"my-project-name\")\n .build());\n\n var basicLake = new Lake(\"basicLake\", LakeArgs.builder()\n .name(\"lake\")\n .location(\"us-west1\")\n .project(\"my-project-name\")\n .build());\n\n var basicZone = new Zone(\"basicZone\", ZoneArgs.builder()\n .name(\"zone\")\n .location(\"us-west1\")\n .lake(basicLake.name())\n .type(\"RAW\")\n .discoverySpec(ZoneDiscoverySpecArgs.builder()\n .enabled(false)\n .build())\n .resourceSpec(ZoneResourceSpecArgs.builder()\n .locationType(\"SINGLE_REGION\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n var primary = new Asset(\"primary\", AssetArgs.builder()\n .name(\"asset\")\n .location(\"us-west1\")\n .lake(basicLake.name())\n .dataplexZone(basicZone.name())\n .discoverySpec(AssetDiscoverySpecArgs.builder()\n .enabled(false)\n .build())\n .resourceSpec(AssetResourceSpecArgs.builder()\n .name(\"projects/my-project-name/buckets/bucket\")\n .type(\"STORAGE_BUCKET\")\n .build())\n .labels(Map.ofEntries(\n Map.entry(\"env\", \"foo\"),\n Map.entry(\"my-asset\", \"exists\")\n ))\n .project(\"my-project-name\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(basicBucket)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicBucket:\n type: gcp:storage:Bucket\n name: basic_bucket\n properties:\n name: bucket\n location: us-west1\n uniformBucketLevelAccess: true\n project: my-project-name\n basicLake:\n type: gcp:dataplex:Lake\n name: basic_lake\n properties:\n name: lake\n location: us-west1\n project: my-project-name\n basicZone:\n type: gcp:dataplex:Zone\n name: basic_zone\n properties:\n name: zone\n location: us-west1\n lake: ${basicLake.name}\n type: RAW\n discoverySpec:\n enabled: false\n resourceSpec:\n locationType: SINGLE_REGION\n project: my-project-name\n primary:\n type: gcp:dataplex:Asset\n properties:\n name: asset\n location: us-west1\n lake: ${basicLake.name}\n dataplexZone: ${basicZone.name}\n discoverySpec:\n enabled: false\n resourceSpec:\n name: projects/my-project-name/buckets/bucket\n type: STORAGE_BUCKET\n labels:\n env: foo\n my-asset: exists\n project: my-project-name\n options:\n dependson:\n - ${basicBucket}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAsset can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/lakes/{{lake}}/zones/{{dataplex_zone}}/assets/{{name}}`\n\n* `{{project}}/{{location}}/{{lake}}/{{dataplex_zone}}/{{name}}`\n\n* `{{location}}/{{lake}}/{{dataplex_zone}}/{{name}}`\n\nWhen using the `pulumi import` command, Asset can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataplex/asset:Asset default projects/{{project}}/locations/{{location}}/lakes/{{lake}}/zones/{{dataplex_zone}}/assets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/asset:Asset default {{project}}/{{location}}/{{lake}}/{{dataplex_zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/asset:Asset default {{location}}/{{lake}}/{{dataplex_zone}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -176223,7 +176223,7 @@ } }, "gcp:dataplex/datascan:Datascan": { - "description": "Represents a user-visible job which provides the insights for the related data source.\n\n\nTo get more information about Datascan, see:\n\n* [API documentation](https://cloud.google.com/dataplex/docs/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataplex/docs)\n\n## Example Usage\n\n### Dataplex Datascan Basic Profile\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicProfile = new gcp.dataplex.Datascan(\"basic_profile\", {\n location: \"us-central1\",\n dataScanId: \"dataprofile-basic\",\n data: {\n resource: \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n executionSpec: {\n trigger: {\n onDemand: {},\n },\n },\n dataProfileSpec: {},\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_profile = gcp.dataplex.Datascan(\"basic_profile\",\n location=\"us-central1\",\n data_scan_id=\"dataprofile-basic\",\n data={\n \"resource\": \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n execution_spec={\n \"trigger\": {\n \"onDemand\": {},\n },\n },\n data_profile_spec={},\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 basicProfile = new Gcp.DataPlex.Datascan(\"basic_profile\", new()\n {\n Location = \"us-central1\",\n DataScanId = \"dataprofile-basic\",\n Data = new Gcp.DataPlex.Inputs.DatascanDataArgs\n {\n Resource = \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.DatascanExecutionSpecArgs\n {\n Trigger = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerArgs\n {\n OnDemand = null,\n },\n },\n DataProfileSpec = null,\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataplex\"\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 := dataplex.NewDatascan(ctx, \"basic_profile\", \u0026dataplex.DatascanArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDataScanId: pulumi.String(\"dataprofile-basic\"),\n\t\t\tData: \u0026dataplex.DatascanDataArgs{\n\t\t\t\tResource: pulumi.String(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.DatascanExecutionSpecArgs{\n\t\t\t\tTrigger: \u0026dataplex.DatascanExecutionSpecTriggerArgs{\n\t\t\t\t\tOnDemand: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataProfileSpec: nil,\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.dataplex.Datascan;\nimport com.pulumi.gcp.dataplex.DatascanArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerOnDemandArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecArgs;\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 basicProfile = new Datascan(\"basicProfile\", DatascanArgs.builder()\n .location(\"us-central1\")\n .dataScanId(\"dataprofile-basic\")\n .data(DatascanDataArgs.builder()\n .resource(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\")\n .build())\n .executionSpec(DatascanExecutionSpecArgs.builder()\n .trigger(DatascanExecutionSpecTriggerArgs.builder()\n .onDemand()\n .build())\n .build())\n .dataProfileSpec()\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicProfile:\n type: gcp:dataplex:Datascan\n name: basic_profile\n properties:\n location: us-central1\n dataScanId: dataprofile-basic\n data:\n resource: //bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\n executionSpec:\n trigger:\n onDemand: {}\n dataProfileSpec: {}\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Datascan Full Profile\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source = new gcp.bigquery.Dataset(\"source\", {\n datasetId: \"dataplex_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n deleteContentsOnDestroy: true,\n});\nconst fullProfile = new gcp.dataplex.Datascan(\"full_profile\", {\n location: \"us-central1\",\n displayName: \"Full Datascan Profile\",\n dataScanId: \"dataprofile-full\",\n description: \"Example resource - Full Datascan Profile\",\n labels: {\n author: \"billing\",\n },\n data: {\n resource: \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n executionSpec: {\n trigger: {\n schedule: {\n cron: \"TZ=America/New_York 1 1 * * *\",\n },\n },\n },\n dataProfileSpec: {\n samplingPercent: 80,\n rowFilter: \"word_count \u003e 10\",\n includeFields: {\n fieldNames: [\"word_count\"],\n },\n excludeFields: {\n fieldNames: [\"property_type\"],\n },\n postScanActions: {\n bigqueryExport: {\n resultsTable: \"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\",\n },\n },\n },\n project: \"my-project-name\",\n}, {\n dependsOn: [source],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource = gcp.bigquery.Dataset(\"source\",\n dataset_id=\"dataplex_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n delete_contents_on_destroy=True)\nfull_profile = gcp.dataplex.Datascan(\"full_profile\",\n location=\"us-central1\",\n display_name=\"Full Datascan Profile\",\n data_scan_id=\"dataprofile-full\",\n description=\"Example resource - Full Datascan Profile\",\n labels={\n \"author\": \"billing\",\n },\n data={\n \"resource\": \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n execution_spec={\n \"trigger\": {\n \"schedule\": {\n \"cron\": \"TZ=America/New_York 1 1 * * *\",\n },\n },\n },\n data_profile_spec={\n \"samplingPercent\": 80,\n \"rowFilter\": \"word_count \u003e 10\",\n \"includeFields\": {\n \"fieldNames\": [\"word_count\"],\n },\n \"excludeFields\": {\n \"fieldNames\": [\"property_type\"],\n },\n \"postScanActions\": {\n \"bigqueryExport\": {\n \"resultsTable\": \"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\",\n },\n },\n },\n project=\"my-project-name\",\n opts = pulumi.ResourceOptions(depends_on=[source]))\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 = new Gcp.BigQuery.Dataset(\"source\", new()\n {\n DatasetId = \"dataplex_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DeleteContentsOnDestroy = true,\n });\n\n var fullProfile = new Gcp.DataPlex.Datascan(\"full_profile\", new()\n {\n Location = \"us-central1\",\n DisplayName = \"Full Datascan Profile\",\n DataScanId = \"dataprofile-full\",\n Description = \"Example resource - Full Datascan Profile\",\n Labels = \n {\n { \"author\", \"billing\" },\n },\n Data = new Gcp.DataPlex.Inputs.DatascanDataArgs\n {\n Resource = \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.DatascanExecutionSpecArgs\n {\n Trigger = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerArgs\n {\n Schedule = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerScheduleArgs\n {\n Cron = \"TZ=America/New_York 1 1 * * *\",\n },\n },\n },\n DataProfileSpec = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecArgs\n {\n SamplingPercent = 80,\n RowFilter = \"word_count \u003e 10\",\n IncludeFields = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecIncludeFieldsArgs\n {\n FieldNames = new[]\n {\n \"word_count\",\n },\n },\n ExcludeFields = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecExcludeFieldsArgs\n {\n FieldNames = new[]\n {\n \"property_type\",\n },\n },\n PostScanActions = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecPostScanActionsArgs\n {\n BigqueryExport = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecPostScanActionsBigqueryExportArgs\n {\n ResultsTable = \"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\",\n },\n },\n },\n Project = \"my-project-name\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n source,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsource, err := bigquery.NewDataset(ctx, \"source\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataplex_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 = dataplex.NewDatascan(ctx, \"full_profile\", \u0026dataplex.DatascanArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Full Datascan Profile\"),\n\t\t\tDataScanId: pulumi.String(\"dataprofile-full\"),\n\t\t\tDescription: pulumi.String(\"Example resource - Full Datascan Profile\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"author\": pulumi.String(\"billing\"),\n\t\t\t},\n\t\t\tData: \u0026dataplex.DatascanDataArgs{\n\t\t\t\tResource: pulumi.String(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.DatascanExecutionSpecArgs{\n\t\t\t\tTrigger: \u0026dataplex.DatascanExecutionSpecTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataplex.DatascanExecutionSpecTriggerScheduleArgs{\n\t\t\t\t\t\tCron: pulumi.String(\"TZ=America/New_York 1 1 * * *\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataProfileSpec: \u0026dataplex.DatascanDataProfileSpecArgs{\n\t\t\t\tSamplingPercent: pulumi.Float64(80),\n\t\t\t\tRowFilter: pulumi.String(\"word_count \u003e 10\"),\n\t\t\t\tIncludeFields: \u0026dataplex.DatascanDataProfileSpecIncludeFieldsArgs{\n\t\t\t\t\tFieldNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"word_count\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tExcludeFields: \u0026dataplex.DatascanDataProfileSpecExcludeFieldsArgs{\n\t\t\t\t\tFieldNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"property_type\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPostScanActions: \u0026dataplex.DatascanDataProfileSpecPostScanActionsArgs{\n\t\t\t\t\tBigqueryExport: \u0026dataplex.DatascanDataProfileSpecPostScanActionsBigqueryExportArgs{\n\t\t\t\t\t\tResultsTable: pulumi.String(\"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsource,\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.dataplex.Datascan;\nimport com.pulumi.gcp.dataplex.DatascanArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerScheduleArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecIncludeFieldsArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecExcludeFieldsArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecPostScanActionsArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecPostScanActionsBigqueryExportArgs;\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 source = new Dataset(\"source\", DatasetArgs.builder()\n .datasetId(\"dataplex_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .deleteContentsOnDestroy(true)\n .build());\n\n var fullProfile = new Datascan(\"fullProfile\", DatascanArgs.builder()\n .location(\"us-central1\")\n .displayName(\"Full Datascan Profile\")\n .dataScanId(\"dataprofile-full\")\n .description(\"Example resource - Full Datascan Profile\")\n .labels(Map.of(\"author\", \"billing\"))\n .data(DatascanDataArgs.builder()\n .resource(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\")\n .build())\n .executionSpec(DatascanExecutionSpecArgs.builder()\n .trigger(DatascanExecutionSpecTriggerArgs.builder()\n .schedule(DatascanExecutionSpecTriggerScheduleArgs.builder()\n .cron(\"TZ=America/New_York 1 1 * * *\")\n .build())\n .build())\n .build())\n .dataProfileSpec(DatascanDataProfileSpecArgs.builder()\n .samplingPercent(80)\n .rowFilter(\"word_count \u003e 10\")\n .includeFields(DatascanDataProfileSpecIncludeFieldsArgs.builder()\n .fieldNames(\"word_count\")\n .build())\n .excludeFields(DatascanDataProfileSpecExcludeFieldsArgs.builder()\n .fieldNames(\"property_type\")\n .build())\n .postScanActions(DatascanDataProfileSpecPostScanActionsArgs.builder()\n .bigqueryExport(DatascanDataProfileSpecPostScanActionsBigqueryExportArgs.builder()\n .resultsTable(\"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\")\n .build())\n .build())\n .build())\n .project(\"my-project-name\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(source)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n fullProfile:\n type: gcp:dataplex:Datascan\n name: full_profile\n properties:\n location: us-central1\n displayName: Full Datascan Profile\n dataScanId: dataprofile-full\n description: Example resource - Full Datascan Profile\n labels:\n author: billing\n data:\n resource: //bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\n executionSpec:\n trigger:\n schedule:\n cron: TZ=America/New_York 1 1 * * *\n dataProfileSpec:\n samplingPercent: 80\n rowFilter: word_count \u003e 10\n includeFields:\n fieldNames:\n - word_count\n excludeFields:\n fieldNames:\n - property_type\n postScanActions:\n bigqueryExport:\n resultsTable: //bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\n project: my-project-name\n options:\n dependson:\n - ${source}\n source:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataplex_dataset\n friendlyName: test\n description: This is a test description\n location: US\n deleteContentsOnDestroy: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Datascan Basic Quality\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicQuality = new gcp.dataplex.Datascan(\"basic_quality\", {\n location: \"us-central1\",\n dataScanId: \"dataquality-basic\",\n data: {\n resource: \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n executionSpec: {\n trigger: {\n onDemand: {},\n },\n },\n dataQualitySpec: {\n rules: [{\n dimension: \"VALIDITY\",\n name: \"rule1\",\n description: \"rule 1 for validity dimension\",\n tableConditionExpectation: {\n sqlExpression: \"COUNT(*) \u003e 0\",\n },\n }],\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_quality = gcp.dataplex.Datascan(\"basic_quality\",\n location=\"us-central1\",\n data_scan_id=\"dataquality-basic\",\n data={\n \"resource\": \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n execution_spec={\n \"trigger\": {\n \"onDemand\": {},\n },\n },\n data_quality_spec={\n \"rules\": [{\n \"dimension\": \"VALIDITY\",\n \"name\": \"rule1\",\n \"description\": \"rule 1 for validity dimension\",\n \"tableConditionExpectation\": {\n \"sqlExpression\": \"COUNT(*) \u003e 0\",\n },\n }],\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 basicQuality = new Gcp.DataPlex.Datascan(\"basic_quality\", new()\n {\n Location = \"us-central1\",\n DataScanId = \"dataquality-basic\",\n Data = new Gcp.DataPlex.Inputs.DatascanDataArgs\n {\n Resource = \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.DatascanExecutionSpecArgs\n {\n Trigger = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerArgs\n {\n OnDemand = null,\n },\n },\n DataQualitySpec = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecArgs\n {\n Rules = new[]\n {\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Dimension = \"VALIDITY\",\n Name = \"rule1\",\n Description = \"rule 1 for validity dimension\",\n TableConditionExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleTableConditionExpectationArgs\n {\n SqlExpression = \"COUNT(*) \u003e 0\",\n },\n },\n },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataplex\"\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 := dataplex.NewDatascan(ctx, \"basic_quality\", \u0026dataplex.DatascanArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDataScanId: pulumi.String(\"dataquality-basic\"),\n\t\t\tData: \u0026dataplex.DatascanDataArgs{\n\t\t\t\tResource: pulumi.String(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.DatascanExecutionSpecArgs{\n\t\t\t\tTrigger: \u0026dataplex.DatascanExecutionSpecTriggerArgs{\n\t\t\t\t\tOnDemand: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataQualitySpec: \u0026dataplex.DatascanDataQualitySpecArgs{\n\t\t\t\tRules: dataplex.DatascanDataQualitySpecRuleArray{\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tName: pulumi.String(\"rule1\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"rule 1 for validity dimension\"),\n\t\t\t\t\t\tTableConditionExpectation: \u0026dataplex.DatascanDataQualitySpecRuleTableConditionExpectationArgs{\n\t\t\t\t\t\t\tSqlExpression: pulumi.String(\"COUNT(*) \u003e 0\"),\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\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.dataplex.Datascan;\nimport com.pulumi.gcp.dataplex.DatascanArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerOnDemandArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataQualitySpecArgs;\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 basicQuality = new Datascan(\"basicQuality\", DatascanArgs.builder()\n .location(\"us-central1\")\n .dataScanId(\"dataquality-basic\")\n .data(DatascanDataArgs.builder()\n .resource(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\")\n .build())\n .executionSpec(DatascanExecutionSpecArgs.builder()\n .trigger(DatascanExecutionSpecTriggerArgs.builder()\n .onDemand()\n .build())\n .build())\n .dataQualitySpec(DatascanDataQualitySpecArgs.builder()\n .rules(DatascanDataQualitySpecRuleArgs.builder()\n .dimension(\"VALIDITY\")\n .name(\"rule1\")\n .description(\"rule 1 for validity dimension\")\n .tableConditionExpectation(DatascanDataQualitySpecRuleTableConditionExpectationArgs.builder()\n .sqlExpression(\"COUNT(*) \u003e 0\")\n .build())\n .build())\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicQuality:\n type: gcp:dataplex:Datascan\n name: basic_quality\n properties:\n location: us-central1\n dataScanId: dataquality-basic\n data:\n resource: //bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\n executionSpec:\n trigger:\n onDemand: {}\n dataQualitySpec:\n rules:\n - dimension: VALIDITY\n name: rule1\n description: rule 1 for validity dimension\n tableConditionExpectation:\n sqlExpression: COUNT(*) \u003e 0\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Datascan Full Quality\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst fullQuality = new gcp.dataplex.Datascan(\"full_quality\", {\n location: \"us-central1\",\n displayName: \"Full Datascan Quality\",\n dataScanId: \"dataquality-full\",\n description: \"Example resource - Full Datascan Quality\",\n labels: {\n author: \"billing\",\n },\n data: {\n resource: \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\",\n },\n executionSpec: {\n trigger: {\n schedule: {\n cron: \"TZ=America/New_York 1 1 * * *\",\n },\n },\n field: \"modified_date\",\n },\n dataQualitySpec: {\n samplingPercent: 5,\n rowFilter: \"station_id \u003e 1000\",\n rules: [\n {\n column: \"address\",\n dimension: \"VALIDITY\",\n threshold: 0.99,\n nonNullExpectation: {},\n },\n {\n column: \"council_district\",\n dimension: \"VALIDITY\",\n ignoreNull: true,\n threshold: 0.9,\n rangeExpectation: {\n minValue: \"1\",\n maxValue: \"10\",\n strictMinEnabled: true,\n strictMaxEnabled: false,\n },\n },\n {\n column: \"power_type\",\n dimension: \"VALIDITY\",\n ignoreNull: false,\n regexExpectation: {\n regex: \".*solar.*\",\n },\n },\n {\n column: \"property_type\",\n dimension: \"VALIDITY\",\n ignoreNull: false,\n setExpectation: {\n values: [\n \"sidewalk\",\n \"parkland\",\n ],\n },\n },\n {\n column: \"address\",\n dimension: \"UNIQUENESS\",\n uniquenessExpectation: {},\n },\n {\n column: \"number_of_docks\",\n dimension: \"VALIDITY\",\n statisticRangeExpectation: {\n statistic: \"MEAN\",\n minValue: \"5\",\n maxValue: \"15\",\n strictMinEnabled: true,\n strictMaxEnabled: true,\n },\n },\n {\n column: \"footprint_length\",\n dimension: \"VALIDITY\",\n rowConditionExpectation: {\n sqlExpression: \"footprint_length \u003e 0 AND footprint_length \u003c= 10\",\n },\n },\n {\n dimension: \"VALIDITY\",\n tableConditionExpectation: {\n sqlExpression: \"COUNT(*) \u003e 0\",\n },\n },\n {\n dimension: \"VALIDITY\",\n sqlAssertion: {\n sqlStatement: \"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\",\n },\n },\n ],\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfull_quality = gcp.dataplex.Datascan(\"full_quality\",\n location=\"us-central1\",\n display_name=\"Full Datascan Quality\",\n data_scan_id=\"dataquality-full\",\n description=\"Example resource - Full Datascan Quality\",\n labels={\n \"author\": \"billing\",\n },\n data={\n \"resource\": \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\",\n },\n execution_spec={\n \"trigger\": {\n \"schedule\": {\n \"cron\": \"TZ=America/New_York 1 1 * * *\",\n },\n },\n \"field\": \"modified_date\",\n },\n data_quality_spec={\n \"samplingPercent\": 5,\n \"rowFilter\": \"station_id \u003e 1000\",\n \"rules\": [\n {\n \"column\": \"address\",\n \"dimension\": \"VALIDITY\",\n \"threshold\": 0.99,\n \"nonNullExpectation\": {},\n },\n {\n \"column\": \"council_district\",\n \"dimension\": \"VALIDITY\",\n \"ignoreNull\": True,\n \"threshold\": 0.9,\n \"rangeExpectation\": {\n \"minValue\": \"1\",\n \"maxValue\": \"10\",\n \"strictMinEnabled\": True,\n \"strictMaxEnabled\": False,\n },\n },\n {\n \"column\": \"power_type\",\n \"dimension\": \"VALIDITY\",\n \"ignoreNull\": False,\n \"regexExpectation\": {\n \"regex\": \".*solar.*\",\n },\n },\n {\n \"column\": \"property_type\",\n \"dimension\": \"VALIDITY\",\n \"ignoreNull\": False,\n \"setExpectation\": {\n \"values\": [\n \"sidewalk\",\n \"parkland\",\n ],\n },\n },\n {\n \"column\": \"address\",\n \"dimension\": \"UNIQUENESS\",\n \"uniquenessExpectation\": {},\n },\n {\n \"column\": \"number_of_docks\",\n \"dimension\": \"VALIDITY\",\n \"statisticRangeExpectation\": {\n \"statistic\": \"MEAN\",\n \"minValue\": \"5\",\n \"maxValue\": \"15\",\n \"strictMinEnabled\": True,\n \"strictMaxEnabled\": True,\n },\n },\n {\n \"column\": \"footprint_length\",\n \"dimension\": \"VALIDITY\",\n \"rowConditionExpectation\": {\n \"sqlExpression\": \"footprint_length \u003e 0 AND footprint_length \u003c= 10\",\n },\n },\n {\n \"dimension\": \"VALIDITY\",\n \"tableConditionExpectation\": {\n \"sqlExpression\": \"COUNT(*) \u003e 0\",\n },\n },\n {\n \"dimension\": \"VALIDITY\",\n \"sqlAssertion\": {\n \"sqlStatement\": \"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\",\n },\n },\n ],\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 fullQuality = new Gcp.DataPlex.Datascan(\"full_quality\", new()\n {\n Location = \"us-central1\",\n DisplayName = \"Full Datascan Quality\",\n DataScanId = \"dataquality-full\",\n Description = \"Example resource - Full Datascan Quality\",\n Labels = \n {\n { \"author\", \"billing\" },\n },\n Data = new Gcp.DataPlex.Inputs.DatascanDataArgs\n {\n Resource = \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.DatascanExecutionSpecArgs\n {\n Trigger = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerArgs\n {\n Schedule = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerScheduleArgs\n {\n Cron = \"TZ=America/New_York 1 1 * * *\",\n },\n },\n Field = \"modified_date\",\n },\n DataQualitySpec = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecArgs\n {\n SamplingPercent = 5,\n RowFilter = \"station_id \u003e 1000\",\n Rules = new[]\n {\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"address\",\n Dimension = \"VALIDITY\",\n Threshold = 0.99,\n NonNullExpectation = null,\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"council_district\",\n Dimension = \"VALIDITY\",\n IgnoreNull = true,\n Threshold = 0.9,\n RangeExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleRangeExpectationArgs\n {\n MinValue = \"1\",\n MaxValue = \"10\",\n StrictMinEnabled = true,\n StrictMaxEnabled = false,\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"power_type\",\n Dimension = \"VALIDITY\",\n IgnoreNull = false,\n RegexExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleRegexExpectationArgs\n {\n Regex = \".*solar.*\",\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"property_type\",\n Dimension = \"VALIDITY\",\n IgnoreNull = false,\n SetExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleSetExpectationArgs\n {\n Values = new[]\n {\n \"sidewalk\",\n \"parkland\",\n },\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"address\",\n Dimension = \"UNIQUENESS\",\n UniquenessExpectation = null,\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"number_of_docks\",\n Dimension = \"VALIDITY\",\n StatisticRangeExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleStatisticRangeExpectationArgs\n {\n Statistic = \"MEAN\",\n MinValue = \"5\",\n MaxValue = \"15\",\n StrictMinEnabled = true,\n StrictMaxEnabled = true,\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"footprint_length\",\n Dimension = \"VALIDITY\",\n RowConditionExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleRowConditionExpectationArgs\n {\n SqlExpression = \"footprint_length \u003e 0 AND footprint_length \u003c= 10\",\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Dimension = \"VALIDITY\",\n TableConditionExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleTableConditionExpectationArgs\n {\n SqlExpression = \"COUNT(*) \u003e 0\",\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Dimension = \"VALIDITY\",\n SqlAssertion = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleSqlAssertionArgs\n {\n SqlStatement = \"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\",\n },\n },\n },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataplex\"\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 := dataplex.NewDatascan(ctx, \"full_quality\", \u0026dataplex.DatascanArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Full Datascan Quality\"),\n\t\t\tDataScanId: pulumi.String(\"dataquality-full\"),\n\t\t\tDescription: pulumi.String(\"Example resource - Full Datascan Quality\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"author\": pulumi.String(\"billing\"),\n\t\t\t},\n\t\t\tData: \u0026dataplex.DatascanDataArgs{\n\t\t\t\tResource: pulumi.String(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.DatascanExecutionSpecArgs{\n\t\t\t\tTrigger: \u0026dataplex.DatascanExecutionSpecTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataplex.DatascanExecutionSpecTriggerScheduleArgs{\n\t\t\t\t\t\tCron: pulumi.String(\"TZ=America/New_York 1 1 * * *\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tField: pulumi.String(\"modified_date\"),\n\t\t\t},\n\t\t\tDataQualitySpec: \u0026dataplex.DatascanDataQualitySpecArgs{\n\t\t\t\tSamplingPercent: pulumi.Float64(5),\n\t\t\t\tRowFilter: pulumi.String(\"station_id \u003e 1000\"),\n\t\t\t\tRules: dataplex.DatascanDataQualitySpecRuleArray{\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"address\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tThreshold: pulumi.Float64(0.99),\n\t\t\t\t\t\tNonNullExpectation: nil,\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"council_district\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tIgnoreNull: pulumi.Bool(true),\n\t\t\t\t\t\tThreshold: pulumi.Float64(0.9),\n\t\t\t\t\t\tRangeExpectation: \u0026dataplex.DatascanDataQualitySpecRuleRangeExpectationArgs{\n\t\t\t\t\t\t\tMinValue: pulumi.String(\"1\"),\n\t\t\t\t\t\t\tMaxValue: pulumi.String(\"10\"),\n\t\t\t\t\t\t\tStrictMinEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\tStrictMaxEnabled: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"power_type\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tIgnoreNull: pulumi.Bool(false),\n\t\t\t\t\t\tRegexExpectation: \u0026dataplex.DatascanDataQualitySpecRuleRegexExpectationArgs{\n\t\t\t\t\t\t\tRegex: pulumi.String(\".*solar.*\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"property_type\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tIgnoreNull: pulumi.Bool(false),\n\t\t\t\t\t\tSetExpectation: \u0026dataplex.DatascanDataQualitySpecRuleSetExpectationArgs{\n\t\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"sidewalk\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"parkland\"),\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\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"address\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"UNIQUENESS\"),\n\t\t\t\t\t\tUniquenessExpectation: nil,\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"number_of_docks\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tStatisticRangeExpectation: \u0026dataplex.DatascanDataQualitySpecRuleStatisticRangeExpectationArgs{\n\t\t\t\t\t\t\tStatistic: pulumi.String(\"MEAN\"),\n\t\t\t\t\t\t\tMinValue: pulumi.String(\"5\"),\n\t\t\t\t\t\t\tMaxValue: pulumi.String(\"15\"),\n\t\t\t\t\t\t\tStrictMinEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\tStrictMaxEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"footprint_length\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tRowConditionExpectation: \u0026dataplex.DatascanDataQualitySpecRuleRowConditionExpectationArgs{\n\t\t\t\t\t\t\tSqlExpression: pulumi.String(\"footprint_length \u003e 0 AND footprint_length \u003c= 10\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tTableConditionExpectation: \u0026dataplex.DatascanDataQualitySpecRuleTableConditionExpectationArgs{\n\t\t\t\t\t\t\tSqlExpression: pulumi.String(\"COUNT(*) \u003e 0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tSqlAssertion: \u0026dataplex.DatascanDataQualitySpecRuleSqlAssertionArgs{\n\t\t\t\t\t\t\tSqlStatement: pulumi.String(\"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\"),\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\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.dataplex.Datascan;\nimport com.pulumi.gcp.dataplex.DatascanArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerScheduleArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataQualitySpecArgs;\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 fullQuality = new Datascan(\"fullQuality\", DatascanArgs.builder()\n .location(\"us-central1\")\n .displayName(\"Full Datascan Quality\")\n .dataScanId(\"dataquality-full\")\n .description(\"Example resource - Full Datascan Quality\")\n .labels(Map.of(\"author\", \"billing\"))\n .data(DatascanDataArgs.builder()\n .resource(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\")\n .build())\n .executionSpec(DatascanExecutionSpecArgs.builder()\n .trigger(DatascanExecutionSpecTriggerArgs.builder()\n .schedule(DatascanExecutionSpecTriggerScheduleArgs.builder()\n .cron(\"TZ=America/New_York 1 1 * * *\")\n .build())\n .build())\n .field(\"modified_date\")\n .build())\n .dataQualitySpec(DatascanDataQualitySpecArgs.builder()\n .samplingPercent(5)\n .rowFilter(\"station_id \u003e 1000\")\n .rules( \n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"address\")\n .dimension(\"VALIDITY\")\n .threshold(0.99)\n .nonNullExpectation()\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"council_district\")\n .dimension(\"VALIDITY\")\n .ignoreNull(true)\n .threshold(0.9)\n .rangeExpectation(DatascanDataQualitySpecRuleRangeExpectationArgs.builder()\n .minValue(1)\n .maxValue(10)\n .strictMinEnabled(true)\n .strictMaxEnabled(false)\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"power_type\")\n .dimension(\"VALIDITY\")\n .ignoreNull(false)\n .regexExpectation(DatascanDataQualitySpecRuleRegexExpectationArgs.builder()\n .regex(\".*solar.*\")\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"property_type\")\n .dimension(\"VALIDITY\")\n .ignoreNull(false)\n .setExpectation(DatascanDataQualitySpecRuleSetExpectationArgs.builder()\n .values( \n \"sidewalk\",\n \"parkland\")\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"address\")\n .dimension(\"UNIQUENESS\")\n .uniquenessExpectation()\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"number_of_docks\")\n .dimension(\"VALIDITY\")\n .statisticRangeExpectation(DatascanDataQualitySpecRuleStatisticRangeExpectationArgs.builder()\n .statistic(\"MEAN\")\n .minValue(5)\n .maxValue(15)\n .strictMinEnabled(true)\n .strictMaxEnabled(true)\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"footprint_length\")\n .dimension(\"VALIDITY\")\n .rowConditionExpectation(DatascanDataQualitySpecRuleRowConditionExpectationArgs.builder()\n .sqlExpression(\"footprint_length \u003e 0 AND footprint_length \u003c= 10\")\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .dimension(\"VALIDITY\")\n .tableConditionExpectation(DatascanDataQualitySpecRuleTableConditionExpectationArgs.builder()\n .sqlExpression(\"COUNT(*) \u003e 0\")\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .dimension(\"VALIDITY\")\n .sqlAssertion(DatascanDataQualitySpecRuleSqlAssertionArgs.builder()\n .sqlStatement(\"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\")\n .build())\n .build())\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n fullQuality:\n type: gcp:dataplex:Datascan\n name: full_quality\n properties:\n location: us-central1\n displayName: Full Datascan Quality\n dataScanId: dataquality-full\n description: Example resource - Full Datascan Quality\n labels:\n author: billing\n data:\n resource: //bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\n executionSpec:\n trigger:\n schedule:\n cron: TZ=America/New_York 1 1 * * *\n field: modified_date\n dataQualitySpec:\n samplingPercent: 5\n rowFilter: station_id \u003e 1000\n rules:\n - column: address\n dimension: VALIDITY\n threshold: 0.99\n nonNullExpectation: {}\n - column: council_district\n dimension: VALIDITY\n ignoreNull: true\n threshold: 0.9\n rangeExpectation:\n minValue: 1\n maxValue: 10\n strictMinEnabled: true\n strictMaxEnabled: false\n - column: power_type\n dimension: VALIDITY\n ignoreNull: false\n regexExpectation:\n regex: .*solar.*\n - column: property_type\n dimension: VALIDITY\n ignoreNull: false\n setExpectation:\n values:\n - sidewalk\n - parkland\n - column: address\n dimension: UNIQUENESS\n uniquenessExpectation: {}\n - column: number_of_docks\n dimension: VALIDITY\n statisticRangeExpectation:\n statistic: MEAN\n minValue: 5\n maxValue: 15\n strictMinEnabled: true\n strictMaxEnabled: true\n - column: footprint_length\n dimension: VALIDITY\n rowConditionExpectation:\n sqlExpression: footprint_length \u003e 0 AND footprint_length \u003c= 10\n - dimension: VALIDITY\n tableConditionExpectation:\n sqlExpression: COUNT(*) \u003e 0\n - dimension: VALIDITY\n sqlAssertion:\n sqlStatement: select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatascan can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/dataScans/{{data_scan_id}}`\n\n* `{{project}}/{{location}}/{{data_scan_id}}`\n\n* `{{location}}/{{data_scan_id}}`\n\n* `{{data_scan_id}}`\n\nWhen using the `pulumi import` command, Datascan can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataplex/datascan:Datascan default projects/{{project}}/locations/{{location}}/dataScans/{{data_scan_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/datascan:Datascan default {{project}}/{{location}}/{{data_scan_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/datascan:Datascan default {{location}}/{{data_scan_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/datascan:Datascan default {{data_scan_id}}\n```\n\n", + "description": "Represents a user-visible job which provides the insights for the related data source.\n\n\nTo get more information about Datascan, see:\n\n* [API documentation](https://cloud.google.com/dataplex/docs/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataplex/docs)\n\n## Example Usage\n\n### Dataplex Datascan Basic Profile\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicProfile = new gcp.dataplex.Datascan(\"basic_profile\", {\n location: \"us-central1\",\n dataScanId: \"dataprofile-basic\",\n data: {\n resource: \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n executionSpec: {\n trigger: {\n onDemand: {},\n },\n },\n dataProfileSpec: {},\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_profile = gcp.dataplex.Datascan(\"basic_profile\",\n location=\"us-central1\",\n data_scan_id=\"dataprofile-basic\",\n data={\n \"resource\": \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n execution_spec={\n \"trigger\": {\n \"on_demand\": {},\n },\n },\n data_profile_spec={},\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 basicProfile = new Gcp.DataPlex.Datascan(\"basic_profile\", new()\n {\n Location = \"us-central1\",\n DataScanId = \"dataprofile-basic\",\n Data = new Gcp.DataPlex.Inputs.DatascanDataArgs\n {\n Resource = \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.DatascanExecutionSpecArgs\n {\n Trigger = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerArgs\n {\n OnDemand = null,\n },\n },\n DataProfileSpec = null,\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataplex\"\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 := dataplex.NewDatascan(ctx, \"basic_profile\", \u0026dataplex.DatascanArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDataScanId: pulumi.String(\"dataprofile-basic\"),\n\t\t\tData: \u0026dataplex.DatascanDataArgs{\n\t\t\t\tResource: pulumi.String(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.DatascanExecutionSpecArgs{\n\t\t\t\tTrigger: \u0026dataplex.DatascanExecutionSpecTriggerArgs{\n\t\t\t\t\tOnDemand: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataProfileSpec: nil,\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.dataplex.Datascan;\nimport com.pulumi.gcp.dataplex.DatascanArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerOnDemandArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecArgs;\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 basicProfile = new Datascan(\"basicProfile\", DatascanArgs.builder()\n .location(\"us-central1\")\n .dataScanId(\"dataprofile-basic\")\n .data(DatascanDataArgs.builder()\n .resource(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\")\n .build())\n .executionSpec(DatascanExecutionSpecArgs.builder()\n .trigger(DatascanExecutionSpecTriggerArgs.builder()\n .onDemand()\n .build())\n .build())\n .dataProfileSpec()\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicProfile:\n type: gcp:dataplex:Datascan\n name: basic_profile\n properties:\n location: us-central1\n dataScanId: dataprofile-basic\n data:\n resource: //bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\n executionSpec:\n trigger:\n onDemand: {}\n dataProfileSpec: {}\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Datascan Full Profile\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source = new gcp.bigquery.Dataset(\"source\", {\n datasetId: \"dataplex_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n deleteContentsOnDestroy: true,\n});\nconst fullProfile = new gcp.dataplex.Datascan(\"full_profile\", {\n location: \"us-central1\",\n displayName: \"Full Datascan Profile\",\n dataScanId: \"dataprofile-full\",\n description: \"Example resource - Full Datascan Profile\",\n labels: {\n author: \"billing\",\n },\n data: {\n resource: \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n executionSpec: {\n trigger: {\n schedule: {\n cron: \"TZ=America/New_York 1 1 * * *\",\n },\n },\n },\n dataProfileSpec: {\n samplingPercent: 80,\n rowFilter: \"word_count \u003e 10\",\n includeFields: {\n fieldNames: [\"word_count\"],\n },\n excludeFields: {\n fieldNames: [\"property_type\"],\n },\n postScanActions: {\n bigqueryExport: {\n resultsTable: \"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\",\n },\n },\n },\n project: \"my-project-name\",\n}, {\n dependsOn: [source],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource = gcp.bigquery.Dataset(\"source\",\n dataset_id=\"dataplex_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n delete_contents_on_destroy=True)\nfull_profile = gcp.dataplex.Datascan(\"full_profile\",\n location=\"us-central1\",\n display_name=\"Full Datascan Profile\",\n data_scan_id=\"dataprofile-full\",\n description=\"Example resource - Full Datascan Profile\",\n labels={\n \"author\": \"billing\",\n },\n data={\n \"resource\": \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n execution_spec={\n \"trigger\": {\n \"schedule\": {\n \"cron\": \"TZ=America/New_York 1 1 * * *\",\n },\n },\n },\n data_profile_spec={\n \"sampling_percent\": 80,\n \"row_filter\": \"word_count \u003e 10\",\n \"include_fields\": {\n \"field_names\": [\"word_count\"],\n },\n \"exclude_fields\": {\n \"field_names\": [\"property_type\"],\n },\n \"post_scan_actions\": {\n \"bigquery_export\": {\n \"results_table\": \"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\",\n },\n },\n },\n project=\"my-project-name\",\n opts = pulumi.ResourceOptions(depends_on=[source]))\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 = new Gcp.BigQuery.Dataset(\"source\", new()\n {\n DatasetId = \"dataplex_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DeleteContentsOnDestroy = true,\n });\n\n var fullProfile = new Gcp.DataPlex.Datascan(\"full_profile\", new()\n {\n Location = \"us-central1\",\n DisplayName = \"Full Datascan Profile\",\n DataScanId = \"dataprofile-full\",\n Description = \"Example resource - Full Datascan Profile\",\n Labels = \n {\n { \"author\", \"billing\" },\n },\n Data = new Gcp.DataPlex.Inputs.DatascanDataArgs\n {\n Resource = \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.DatascanExecutionSpecArgs\n {\n Trigger = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerArgs\n {\n Schedule = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerScheduleArgs\n {\n Cron = \"TZ=America/New_York 1 1 * * *\",\n },\n },\n },\n DataProfileSpec = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecArgs\n {\n SamplingPercent = 80,\n RowFilter = \"word_count \u003e 10\",\n IncludeFields = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecIncludeFieldsArgs\n {\n FieldNames = new[]\n {\n \"word_count\",\n },\n },\n ExcludeFields = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecExcludeFieldsArgs\n {\n FieldNames = new[]\n {\n \"property_type\",\n },\n },\n PostScanActions = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecPostScanActionsArgs\n {\n BigqueryExport = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecPostScanActionsBigqueryExportArgs\n {\n ResultsTable = \"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\",\n },\n },\n },\n Project = \"my-project-name\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n source,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsource, err := bigquery.NewDataset(ctx, \"source\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataplex_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 = dataplex.NewDatascan(ctx, \"full_profile\", \u0026dataplex.DatascanArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Full Datascan Profile\"),\n\t\t\tDataScanId: pulumi.String(\"dataprofile-full\"),\n\t\t\tDescription: pulumi.String(\"Example resource - Full Datascan Profile\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"author\": pulumi.String(\"billing\"),\n\t\t\t},\n\t\t\tData: \u0026dataplex.DatascanDataArgs{\n\t\t\t\tResource: pulumi.String(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.DatascanExecutionSpecArgs{\n\t\t\t\tTrigger: \u0026dataplex.DatascanExecutionSpecTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataplex.DatascanExecutionSpecTriggerScheduleArgs{\n\t\t\t\t\t\tCron: pulumi.String(\"TZ=America/New_York 1 1 * * *\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataProfileSpec: \u0026dataplex.DatascanDataProfileSpecArgs{\n\t\t\t\tSamplingPercent: pulumi.Float64(80),\n\t\t\t\tRowFilter: pulumi.String(\"word_count \u003e 10\"),\n\t\t\t\tIncludeFields: \u0026dataplex.DatascanDataProfileSpecIncludeFieldsArgs{\n\t\t\t\t\tFieldNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"word_count\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tExcludeFields: \u0026dataplex.DatascanDataProfileSpecExcludeFieldsArgs{\n\t\t\t\t\tFieldNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"property_type\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPostScanActions: \u0026dataplex.DatascanDataProfileSpecPostScanActionsArgs{\n\t\t\t\t\tBigqueryExport: \u0026dataplex.DatascanDataProfileSpecPostScanActionsBigqueryExportArgs{\n\t\t\t\t\t\tResultsTable: pulumi.String(\"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsource,\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.dataplex.Datascan;\nimport com.pulumi.gcp.dataplex.DatascanArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerScheduleArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecIncludeFieldsArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecExcludeFieldsArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecPostScanActionsArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecPostScanActionsBigqueryExportArgs;\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 source = new Dataset(\"source\", DatasetArgs.builder()\n .datasetId(\"dataplex_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .deleteContentsOnDestroy(true)\n .build());\n\n var fullProfile = new Datascan(\"fullProfile\", DatascanArgs.builder()\n .location(\"us-central1\")\n .displayName(\"Full Datascan Profile\")\n .dataScanId(\"dataprofile-full\")\n .description(\"Example resource - Full Datascan Profile\")\n .labels(Map.of(\"author\", \"billing\"))\n .data(DatascanDataArgs.builder()\n .resource(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\")\n .build())\n .executionSpec(DatascanExecutionSpecArgs.builder()\n .trigger(DatascanExecutionSpecTriggerArgs.builder()\n .schedule(DatascanExecutionSpecTriggerScheduleArgs.builder()\n .cron(\"TZ=America/New_York 1 1 * * *\")\n .build())\n .build())\n .build())\n .dataProfileSpec(DatascanDataProfileSpecArgs.builder()\n .samplingPercent(80)\n .rowFilter(\"word_count \u003e 10\")\n .includeFields(DatascanDataProfileSpecIncludeFieldsArgs.builder()\n .fieldNames(\"word_count\")\n .build())\n .excludeFields(DatascanDataProfileSpecExcludeFieldsArgs.builder()\n .fieldNames(\"property_type\")\n .build())\n .postScanActions(DatascanDataProfileSpecPostScanActionsArgs.builder()\n .bigqueryExport(DatascanDataProfileSpecPostScanActionsBigqueryExportArgs.builder()\n .resultsTable(\"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\")\n .build())\n .build())\n .build())\n .project(\"my-project-name\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(source)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n fullProfile:\n type: gcp:dataplex:Datascan\n name: full_profile\n properties:\n location: us-central1\n displayName: Full Datascan Profile\n dataScanId: dataprofile-full\n description: Example resource - Full Datascan Profile\n labels:\n author: billing\n data:\n resource: //bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\n executionSpec:\n trigger:\n schedule:\n cron: TZ=America/New_York 1 1 * * *\n dataProfileSpec:\n samplingPercent: 80\n rowFilter: word_count \u003e 10\n includeFields:\n fieldNames:\n - word_count\n excludeFields:\n fieldNames:\n - property_type\n postScanActions:\n bigqueryExport:\n resultsTable: //bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\n project: my-project-name\n options:\n dependson:\n - ${source}\n source:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataplex_dataset\n friendlyName: test\n description: This is a test description\n location: US\n deleteContentsOnDestroy: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Datascan Basic Quality\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicQuality = new gcp.dataplex.Datascan(\"basic_quality\", {\n location: \"us-central1\",\n dataScanId: \"dataquality-basic\",\n data: {\n resource: \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n executionSpec: {\n trigger: {\n onDemand: {},\n },\n },\n dataQualitySpec: {\n rules: [{\n dimension: \"VALIDITY\",\n name: \"rule1\",\n description: \"rule 1 for validity dimension\",\n tableConditionExpectation: {\n sqlExpression: \"COUNT(*) \u003e 0\",\n },\n }],\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_quality = gcp.dataplex.Datascan(\"basic_quality\",\n location=\"us-central1\",\n data_scan_id=\"dataquality-basic\",\n data={\n \"resource\": \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n execution_spec={\n \"trigger\": {\n \"on_demand\": {},\n },\n },\n data_quality_spec={\n \"rules\": [{\n \"dimension\": \"VALIDITY\",\n \"name\": \"rule1\",\n \"description\": \"rule 1 for validity dimension\",\n \"table_condition_expectation\": {\n \"sql_expression\": \"COUNT(*) \u003e 0\",\n },\n }],\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 basicQuality = new Gcp.DataPlex.Datascan(\"basic_quality\", new()\n {\n Location = \"us-central1\",\n DataScanId = \"dataquality-basic\",\n Data = new Gcp.DataPlex.Inputs.DatascanDataArgs\n {\n Resource = \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.DatascanExecutionSpecArgs\n {\n Trigger = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerArgs\n {\n OnDemand = null,\n },\n },\n DataQualitySpec = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecArgs\n {\n Rules = new[]\n {\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Dimension = \"VALIDITY\",\n Name = \"rule1\",\n Description = \"rule 1 for validity dimension\",\n TableConditionExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleTableConditionExpectationArgs\n {\n SqlExpression = \"COUNT(*) \u003e 0\",\n },\n },\n },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataplex\"\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 := dataplex.NewDatascan(ctx, \"basic_quality\", \u0026dataplex.DatascanArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDataScanId: pulumi.String(\"dataquality-basic\"),\n\t\t\tData: \u0026dataplex.DatascanDataArgs{\n\t\t\t\tResource: pulumi.String(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.DatascanExecutionSpecArgs{\n\t\t\t\tTrigger: \u0026dataplex.DatascanExecutionSpecTriggerArgs{\n\t\t\t\t\tOnDemand: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataQualitySpec: \u0026dataplex.DatascanDataQualitySpecArgs{\n\t\t\t\tRules: dataplex.DatascanDataQualitySpecRuleArray{\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tName: pulumi.String(\"rule1\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"rule 1 for validity dimension\"),\n\t\t\t\t\t\tTableConditionExpectation: \u0026dataplex.DatascanDataQualitySpecRuleTableConditionExpectationArgs{\n\t\t\t\t\t\t\tSqlExpression: pulumi.String(\"COUNT(*) \u003e 0\"),\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\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.dataplex.Datascan;\nimport com.pulumi.gcp.dataplex.DatascanArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerOnDemandArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataQualitySpecArgs;\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 basicQuality = new Datascan(\"basicQuality\", DatascanArgs.builder()\n .location(\"us-central1\")\n .dataScanId(\"dataquality-basic\")\n .data(DatascanDataArgs.builder()\n .resource(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\")\n .build())\n .executionSpec(DatascanExecutionSpecArgs.builder()\n .trigger(DatascanExecutionSpecTriggerArgs.builder()\n .onDemand()\n .build())\n .build())\n .dataQualitySpec(DatascanDataQualitySpecArgs.builder()\n .rules(DatascanDataQualitySpecRuleArgs.builder()\n .dimension(\"VALIDITY\")\n .name(\"rule1\")\n .description(\"rule 1 for validity dimension\")\n .tableConditionExpectation(DatascanDataQualitySpecRuleTableConditionExpectationArgs.builder()\n .sqlExpression(\"COUNT(*) \u003e 0\")\n .build())\n .build())\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicQuality:\n type: gcp:dataplex:Datascan\n name: basic_quality\n properties:\n location: us-central1\n dataScanId: dataquality-basic\n data:\n resource: //bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\n executionSpec:\n trigger:\n onDemand: {}\n dataQualitySpec:\n rules:\n - dimension: VALIDITY\n name: rule1\n description: rule 1 for validity dimension\n tableConditionExpectation:\n sqlExpression: COUNT(*) \u003e 0\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Datascan Full Quality\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst fullQuality = new gcp.dataplex.Datascan(\"full_quality\", {\n location: \"us-central1\",\n displayName: \"Full Datascan Quality\",\n dataScanId: \"dataquality-full\",\n description: \"Example resource - Full Datascan Quality\",\n labels: {\n author: \"billing\",\n },\n data: {\n resource: \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\",\n },\n executionSpec: {\n trigger: {\n schedule: {\n cron: \"TZ=America/New_York 1 1 * * *\",\n },\n },\n field: \"modified_date\",\n },\n dataQualitySpec: {\n samplingPercent: 5,\n rowFilter: \"station_id \u003e 1000\",\n rules: [\n {\n column: \"address\",\n dimension: \"VALIDITY\",\n threshold: 0.99,\n nonNullExpectation: {},\n },\n {\n column: \"council_district\",\n dimension: \"VALIDITY\",\n ignoreNull: true,\n threshold: 0.9,\n rangeExpectation: {\n minValue: \"1\",\n maxValue: \"10\",\n strictMinEnabled: true,\n strictMaxEnabled: false,\n },\n },\n {\n column: \"power_type\",\n dimension: \"VALIDITY\",\n ignoreNull: false,\n regexExpectation: {\n regex: \".*solar.*\",\n },\n },\n {\n column: \"property_type\",\n dimension: \"VALIDITY\",\n ignoreNull: false,\n setExpectation: {\n values: [\n \"sidewalk\",\n \"parkland\",\n ],\n },\n },\n {\n column: \"address\",\n dimension: \"UNIQUENESS\",\n uniquenessExpectation: {},\n },\n {\n column: \"number_of_docks\",\n dimension: \"VALIDITY\",\n statisticRangeExpectation: {\n statistic: \"MEAN\",\n minValue: \"5\",\n maxValue: \"15\",\n strictMinEnabled: true,\n strictMaxEnabled: true,\n },\n },\n {\n column: \"footprint_length\",\n dimension: \"VALIDITY\",\n rowConditionExpectation: {\n sqlExpression: \"footprint_length \u003e 0 AND footprint_length \u003c= 10\",\n },\n },\n {\n dimension: \"VALIDITY\",\n tableConditionExpectation: {\n sqlExpression: \"COUNT(*) \u003e 0\",\n },\n },\n {\n dimension: \"VALIDITY\",\n sqlAssertion: {\n sqlStatement: \"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\",\n },\n },\n ],\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfull_quality = gcp.dataplex.Datascan(\"full_quality\",\n location=\"us-central1\",\n display_name=\"Full Datascan Quality\",\n data_scan_id=\"dataquality-full\",\n description=\"Example resource - Full Datascan Quality\",\n labels={\n \"author\": \"billing\",\n },\n data={\n \"resource\": \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\",\n },\n execution_spec={\n \"trigger\": {\n \"schedule\": {\n \"cron\": \"TZ=America/New_York 1 1 * * *\",\n },\n },\n \"field\": \"modified_date\",\n },\n data_quality_spec={\n \"sampling_percent\": 5,\n \"row_filter\": \"station_id \u003e 1000\",\n \"rules\": [\n {\n \"column\": \"address\",\n \"dimension\": \"VALIDITY\",\n \"threshold\": 0.99,\n \"non_null_expectation\": {},\n },\n {\n \"column\": \"council_district\",\n \"dimension\": \"VALIDITY\",\n \"ignore_null\": True,\n \"threshold\": 0.9,\n \"range_expectation\": {\n \"min_value\": \"1\",\n \"max_value\": \"10\",\n \"strict_min_enabled\": True,\n \"strict_max_enabled\": False,\n },\n },\n {\n \"column\": \"power_type\",\n \"dimension\": \"VALIDITY\",\n \"ignore_null\": False,\n \"regex_expectation\": {\n \"regex\": \".*solar.*\",\n },\n },\n {\n \"column\": \"property_type\",\n \"dimension\": \"VALIDITY\",\n \"ignore_null\": False,\n \"set_expectation\": {\n \"values\": [\n \"sidewalk\",\n \"parkland\",\n ],\n },\n },\n {\n \"column\": \"address\",\n \"dimension\": \"UNIQUENESS\",\n \"uniqueness_expectation\": {},\n },\n {\n \"column\": \"number_of_docks\",\n \"dimension\": \"VALIDITY\",\n \"statistic_range_expectation\": {\n \"statistic\": \"MEAN\",\n \"min_value\": \"5\",\n \"max_value\": \"15\",\n \"strict_min_enabled\": True,\n \"strict_max_enabled\": True,\n },\n },\n {\n \"column\": \"footprint_length\",\n \"dimension\": \"VALIDITY\",\n \"row_condition_expectation\": {\n \"sql_expression\": \"footprint_length \u003e 0 AND footprint_length \u003c= 10\",\n },\n },\n {\n \"dimension\": \"VALIDITY\",\n \"table_condition_expectation\": {\n \"sql_expression\": \"COUNT(*) \u003e 0\",\n },\n },\n {\n \"dimension\": \"VALIDITY\",\n \"sql_assertion\": {\n \"sql_statement\": \"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\",\n },\n },\n ],\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 fullQuality = new Gcp.DataPlex.Datascan(\"full_quality\", new()\n {\n Location = \"us-central1\",\n DisplayName = \"Full Datascan Quality\",\n DataScanId = \"dataquality-full\",\n Description = \"Example resource - Full Datascan Quality\",\n Labels = \n {\n { \"author\", \"billing\" },\n },\n Data = new Gcp.DataPlex.Inputs.DatascanDataArgs\n {\n Resource = \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.DatascanExecutionSpecArgs\n {\n Trigger = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerArgs\n {\n Schedule = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerScheduleArgs\n {\n Cron = \"TZ=America/New_York 1 1 * * *\",\n },\n },\n Field = \"modified_date\",\n },\n DataQualitySpec = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecArgs\n {\n SamplingPercent = 5,\n RowFilter = \"station_id \u003e 1000\",\n Rules = new[]\n {\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"address\",\n Dimension = \"VALIDITY\",\n Threshold = 0.99,\n NonNullExpectation = null,\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"council_district\",\n Dimension = \"VALIDITY\",\n IgnoreNull = true,\n Threshold = 0.9,\n RangeExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleRangeExpectationArgs\n {\n MinValue = \"1\",\n MaxValue = \"10\",\n StrictMinEnabled = true,\n StrictMaxEnabled = false,\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"power_type\",\n Dimension = \"VALIDITY\",\n IgnoreNull = false,\n RegexExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleRegexExpectationArgs\n {\n Regex = \".*solar.*\",\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"property_type\",\n Dimension = \"VALIDITY\",\n IgnoreNull = false,\n SetExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleSetExpectationArgs\n {\n Values = new[]\n {\n \"sidewalk\",\n \"parkland\",\n },\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"address\",\n Dimension = \"UNIQUENESS\",\n UniquenessExpectation = null,\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"number_of_docks\",\n Dimension = \"VALIDITY\",\n StatisticRangeExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleStatisticRangeExpectationArgs\n {\n Statistic = \"MEAN\",\n MinValue = \"5\",\n MaxValue = \"15\",\n StrictMinEnabled = true,\n StrictMaxEnabled = true,\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"footprint_length\",\n Dimension = \"VALIDITY\",\n RowConditionExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleRowConditionExpectationArgs\n {\n SqlExpression = \"footprint_length \u003e 0 AND footprint_length \u003c= 10\",\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Dimension = \"VALIDITY\",\n TableConditionExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleTableConditionExpectationArgs\n {\n SqlExpression = \"COUNT(*) \u003e 0\",\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Dimension = \"VALIDITY\",\n SqlAssertion = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleSqlAssertionArgs\n {\n SqlStatement = \"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\",\n },\n },\n },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataplex\"\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 := dataplex.NewDatascan(ctx, \"full_quality\", \u0026dataplex.DatascanArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Full Datascan Quality\"),\n\t\t\tDataScanId: pulumi.String(\"dataquality-full\"),\n\t\t\tDescription: pulumi.String(\"Example resource - Full Datascan Quality\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"author\": pulumi.String(\"billing\"),\n\t\t\t},\n\t\t\tData: \u0026dataplex.DatascanDataArgs{\n\t\t\t\tResource: pulumi.String(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.DatascanExecutionSpecArgs{\n\t\t\t\tTrigger: \u0026dataplex.DatascanExecutionSpecTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataplex.DatascanExecutionSpecTriggerScheduleArgs{\n\t\t\t\t\t\tCron: pulumi.String(\"TZ=America/New_York 1 1 * * *\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tField: pulumi.String(\"modified_date\"),\n\t\t\t},\n\t\t\tDataQualitySpec: \u0026dataplex.DatascanDataQualitySpecArgs{\n\t\t\t\tSamplingPercent: pulumi.Float64(5),\n\t\t\t\tRowFilter: pulumi.String(\"station_id \u003e 1000\"),\n\t\t\t\tRules: dataplex.DatascanDataQualitySpecRuleArray{\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"address\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tThreshold: pulumi.Float64(0.99),\n\t\t\t\t\t\tNonNullExpectation: nil,\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"council_district\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tIgnoreNull: pulumi.Bool(true),\n\t\t\t\t\t\tThreshold: pulumi.Float64(0.9),\n\t\t\t\t\t\tRangeExpectation: \u0026dataplex.DatascanDataQualitySpecRuleRangeExpectationArgs{\n\t\t\t\t\t\t\tMinValue: pulumi.String(\"1\"),\n\t\t\t\t\t\t\tMaxValue: pulumi.String(\"10\"),\n\t\t\t\t\t\t\tStrictMinEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\tStrictMaxEnabled: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"power_type\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tIgnoreNull: pulumi.Bool(false),\n\t\t\t\t\t\tRegexExpectation: \u0026dataplex.DatascanDataQualitySpecRuleRegexExpectationArgs{\n\t\t\t\t\t\t\tRegex: pulumi.String(\".*solar.*\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"property_type\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tIgnoreNull: pulumi.Bool(false),\n\t\t\t\t\t\tSetExpectation: \u0026dataplex.DatascanDataQualitySpecRuleSetExpectationArgs{\n\t\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"sidewalk\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"parkland\"),\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\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"address\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"UNIQUENESS\"),\n\t\t\t\t\t\tUniquenessExpectation: nil,\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"number_of_docks\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tStatisticRangeExpectation: \u0026dataplex.DatascanDataQualitySpecRuleStatisticRangeExpectationArgs{\n\t\t\t\t\t\t\tStatistic: pulumi.String(\"MEAN\"),\n\t\t\t\t\t\t\tMinValue: pulumi.String(\"5\"),\n\t\t\t\t\t\t\tMaxValue: pulumi.String(\"15\"),\n\t\t\t\t\t\t\tStrictMinEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\tStrictMaxEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"footprint_length\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tRowConditionExpectation: \u0026dataplex.DatascanDataQualitySpecRuleRowConditionExpectationArgs{\n\t\t\t\t\t\t\tSqlExpression: pulumi.String(\"footprint_length \u003e 0 AND footprint_length \u003c= 10\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tTableConditionExpectation: \u0026dataplex.DatascanDataQualitySpecRuleTableConditionExpectationArgs{\n\t\t\t\t\t\t\tSqlExpression: pulumi.String(\"COUNT(*) \u003e 0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tSqlAssertion: \u0026dataplex.DatascanDataQualitySpecRuleSqlAssertionArgs{\n\t\t\t\t\t\t\tSqlStatement: pulumi.String(\"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\"),\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\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.dataplex.Datascan;\nimport com.pulumi.gcp.dataplex.DatascanArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerScheduleArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataQualitySpecArgs;\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 fullQuality = new Datascan(\"fullQuality\", DatascanArgs.builder()\n .location(\"us-central1\")\n .displayName(\"Full Datascan Quality\")\n .dataScanId(\"dataquality-full\")\n .description(\"Example resource - Full Datascan Quality\")\n .labels(Map.of(\"author\", \"billing\"))\n .data(DatascanDataArgs.builder()\n .resource(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\")\n .build())\n .executionSpec(DatascanExecutionSpecArgs.builder()\n .trigger(DatascanExecutionSpecTriggerArgs.builder()\n .schedule(DatascanExecutionSpecTriggerScheduleArgs.builder()\n .cron(\"TZ=America/New_York 1 1 * * *\")\n .build())\n .build())\n .field(\"modified_date\")\n .build())\n .dataQualitySpec(DatascanDataQualitySpecArgs.builder()\n .samplingPercent(5)\n .rowFilter(\"station_id \u003e 1000\")\n .rules( \n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"address\")\n .dimension(\"VALIDITY\")\n .threshold(0.99)\n .nonNullExpectation()\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"council_district\")\n .dimension(\"VALIDITY\")\n .ignoreNull(true)\n .threshold(0.9)\n .rangeExpectation(DatascanDataQualitySpecRuleRangeExpectationArgs.builder()\n .minValue(1)\n .maxValue(10)\n .strictMinEnabled(true)\n .strictMaxEnabled(false)\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"power_type\")\n .dimension(\"VALIDITY\")\n .ignoreNull(false)\n .regexExpectation(DatascanDataQualitySpecRuleRegexExpectationArgs.builder()\n .regex(\".*solar.*\")\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"property_type\")\n .dimension(\"VALIDITY\")\n .ignoreNull(false)\n .setExpectation(DatascanDataQualitySpecRuleSetExpectationArgs.builder()\n .values( \n \"sidewalk\",\n \"parkland\")\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"address\")\n .dimension(\"UNIQUENESS\")\n .uniquenessExpectation()\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"number_of_docks\")\n .dimension(\"VALIDITY\")\n .statisticRangeExpectation(DatascanDataQualitySpecRuleStatisticRangeExpectationArgs.builder()\n .statistic(\"MEAN\")\n .minValue(5)\n .maxValue(15)\n .strictMinEnabled(true)\n .strictMaxEnabled(true)\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"footprint_length\")\n .dimension(\"VALIDITY\")\n .rowConditionExpectation(DatascanDataQualitySpecRuleRowConditionExpectationArgs.builder()\n .sqlExpression(\"footprint_length \u003e 0 AND footprint_length \u003c= 10\")\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .dimension(\"VALIDITY\")\n .tableConditionExpectation(DatascanDataQualitySpecRuleTableConditionExpectationArgs.builder()\n .sqlExpression(\"COUNT(*) \u003e 0\")\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .dimension(\"VALIDITY\")\n .sqlAssertion(DatascanDataQualitySpecRuleSqlAssertionArgs.builder()\n .sqlStatement(\"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\")\n .build())\n .build())\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n fullQuality:\n type: gcp:dataplex:Datascan\n name: full_quality\n properties:\n location: us-central1\n displayName: Full Datascan Quality\n dataScanId: dataquality-full\n description: Example resource - Full Datascan Quality\n labels:\n author: billing\n data:\n resource: //bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\n executionSpec:\n trigger:\n schedule:\n cron: TZ=America/New_York 1 1 * * *\n field: modified_date\n dataQualitySpec:\n samplingPercent: 5\n rowFilter: station_id \u003e 1000\n rules:\n - column: address\n dimension: VALIDITY\n threshold: 0.99\n nonNullExpectation: {}\n - column: council_district\n dimension: VALIDITY\n ignoreNull: true\n threshold: 0.9\n rangeExpectation:\n minValue: 1\n maxValue: 10\n strictMinEnabled: true\n strictMaxEnabled: false\n - column: power_type\n dimension: VALIDITY\n ignoreNull: false\n regexExpectation:\n regex: .*solar.*\n - column: property_type\n dimension: VALIDITY\n ignoreNull: false\n setExpectation:\n values:\n - sidewalk\n - parkland\n - column: address\n dimension: UNIQUENESS\n uniquenessExpectation: {}\n - column: number_of_docks\n dimension: VALIDITY\n statisticRangeExpectation:\n statistic: MEAN\n minValue: 5\n maxValue: 15\n strictMinEnabled: true\n strictMaxEnabled: true\n - column: footprint_length\n dimension: VALIDITY\n rowConditionExpectation:\n sqlExpression: footprint_length \u003e 0 AND footprint_length \u003c= 10\n - dimension: VALIDITY\n tableConditionExpectation:\n sqlExpression: COUNT(*) \u003e 0\n - dimension: VALIDITY\n sqlAssertion:\n sqlStatement: select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatascan can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/dataScans/{{data_scan_id}}`\n\n* `{{project}}/{{location}}/{{data_scan_id}}`\n\n* `{{location}}/{{data_scan_id}}`\n\n* `{{data_scan_id}}`\n\nWhen using the `pulumi import` command, Datascan can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataplex/datascan:Datascan default projects/{{project}}/locations/{{location}}/dataScans/{{data_scan_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/datascan:Datascan default {{project}}/{{location}}/{{data_scan_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/datascan:Datascan default {{location}}/{{data_scan_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/datascan:Datascan default {{data_scan_id}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -178390,7 +178390,7 @@ } }, "gcp:dataplex/task:Task": { - "description": "A Dataplex task represents the work that you want Dataplex to do on a schedule. It encapsulates code, parameters, and the schedule.\n\n\nTo get more information about Task, see:\n\n* [API documentation](https://cloud.google.com/dataplex/docs/reference/rest/v1/projects.locations.lakes.tasks)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataplex/docs)\n\n## Example Usage\n\n### Dataplex Task Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.dataplex.Lake(\"example\", {\n name: \"tf-test-lake_91042\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleTask = new gcp.dataplex.Task(\"example\", {\n taskId: \"tf-test-task_72490\",\n location: \"us-central1\",\n lake: example.name,\n description: \"Test Task Basic\",\n displayName: \"task-basic\",\n labels: {\n count: \"3\",\n },\n triggerSpec: {\n type: \"RECURRING\",\n disabled: false,\n maxRetries: 3,\n startTime: \"2023-10-02T15:01:23Z\",\n schedule: \"1 * * * *\",\n },\n executionSpec: {\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n project: \"my-project-name\",\n maxJobExecutionLifetime: \"100s\",\n kmsKey: \"234jn2kjn42k3n423\",\n },\n spark: {\n pythonScriptFile: \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.dataplex.Lake(\"example\",\n name=\"tf-test-lake_91042\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_task = gcp.dataplex.Task(\"example\",\n task_id=\"tf-test-task_72490\",\n location=\"us-central1\",\n lake=example.name,\n description=\"Test Task Basic\",\n display_name=\"task-basic\",\n labels={\n \"count\": \"3\",\n },\n trigger_spec={\n \"type\": \"RECURRING\",\n \"disabled\": False,\n \"maxRetries\": 3,\n \"startTime\": \"2023-10-02T15:01:23Z\",\n \"schedule\": \"1 * * * *\",\n },\n execution_spec={\n \"serviceAccount\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"project\": \"my-project-name\",\n \"maxJobExecutionLifetime\": \"100s\",\n \"kmsKey\": \"234jn2kjn42k3n423\",\n },\n spark={\n \"pythonScriptFile\": \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\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 project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.DataPlex.Lake(\"example\", new()\n {\n Name = \"tf-test-lake_91042\",\n Location = \"us-central1\",\n Project = \"my-project-name\",\n });\n\n var exampleTask = new Gcp.DataPlex.Task(\"example\", new()\n {\n TaskId = \"tf-test-task_72490\",\n Location = \"us-central1\",\n Lake = example.Name,\n Description = \"Test Task Basic\",\n DisplayName = \"task-basic\",\n Labels = \n {\n { \"count\", \"3\" },\n },\n TriggerSpec = new Gcp.DataPlex.Inputs.TaskTriggerSpecArgs\n {\n Type = \"RECURRING\",\n Disabled = false,\n MaxRetries = 3,\n StartTime = \"2023-10-02T15:01:23Z\",\n Schedule = \"1 * * * *\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.TaskExecutionSpecArgs\n {\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n Project = \"my-project-name\",\n MaxJobExecutionLifetime = \"100s\",\n KmsKey = \"234jn2kjn42k3n423\",\n },\n Spark = new Gcp.DataPlex.Inputs.TaskSparkArgs\n {\n PythonScriptFile = \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\texample, err := dataplex.NewLake(ctx, \"example\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"tf-test-lake_91042\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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 = dataplex.NewTask(ctx, \"example\", \u0026dataplex.TaskArgs{\n\t\t\tTaskId: pulumi.String(\"tf-test-task_72490\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLake: example.Name,\n\t\t\tDescription: pulumi.String(\"Test Task Basic\"),\n\t\t\tDisplayName: pulumi.String(\"task-basic\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t},\n\t\t\tTriggerSpec: \u0026dataplex.TaskTriggerSpecArgs{\n\t\t\t\tType: pulumi.String(\"RECURRING\"),\n\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\tMaxRetries: pulumi.Int(3),\n\t\t\t\tStartTime: pulumi.String(\"2023-10-02T15:01:23Z\"),\n\t\t\t\tSchedule: pulumi.String(\"1 * * * *\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.TaskExecutionSpecArgs{\n\t\t\t\tServiceAccount: pulumi.String(fmt.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number)),\n\t\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\t\tMaxJobExecutionLifetime: pulumi.String(\"100s\"),\n\t\t\t\tKmsKey: pulumi.String(\"234jn2kjn42k3n423\"),\n\t\t\t},\n\t\t\tSpark: \u0026dataplex.TaskSparkArgs{\n\t\t\t\tPythonScriptFile: pulumi.String(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Task;\nimport com.pulumi.gcp.dataplex.TaskArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskTriggerSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkArgs;\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 example = new Lake(\"example\", LakeArgs.builder()\n .name(\"tf-test-lake_91042\")\n .location(\"us-central1\")\n .project(\"my-project-name\")\n .build());\n\n var exampleTask = new Task(\"exampleTask\", TaskArgs.builder()\n .taskId(\"tf-test-task_72490\")\n .location(\"us-central1\")\n .lake(example.name())\n .description(\"Test Task Basic\")\n .displayName(\"task-basic\")\n .labels(Map.of(\"count\", \"3\"))\n .triggerSpec(TaskTriggerSpecArgs.builder()\n .type(\"RECURRING\")\n .disabled(false)\n .maxRetries(3)\n .startTime(\"2023-10-02T15:01:23Z\")\n .schedule(\"1 * * * *\")\n .build())\n .executionSpec(TaskExecutionSpecArgs.builder()\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .project(\"my-project-name\")\n .maxJobExecutionLifetime(\"100s\")\n .kmsKey(\"234jn2kjn42k3n423\")\n .build())\n .spark(TaskSparkArgs.builder()\n .pythonScriptFile(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:dataplex:Lake\n properties:\n name: tf-test-lake_91042\n location: us-central1\n project: my-project-name\n exampleTask:\n type: gcp:dataplex:Task\n name: example\n properties:\n taskId: tf-test-task_72490\n location: us-central1\n lake: ${example.name}\n description: Test Task Basic\n displayName: task-basic\n labels:\n count: '3'\n triggerSpec:\n type: RECURRING\n disabled: false\n maxRetries: 3\n startTime: 2023-10-02T15:01:23Z\n schedule: 1 * * * *\n executionSpec:\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n project: my-project-name\n maxJobExecutionLifetime: 100s\n kmsKey: 234jn2kjn42k3n423\n spark:\n pythonScriptFile: gs://dataproc-examples/pyspark/hello-world/hello-world.py\n project: my-project-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Task Spark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// VPC network\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"tf-test-workstation-cluster_89605\",\n autoCreateSubnetworks: true,\n});\nconst project = gcp.organizations.getProject({});\nconst exampleSpark = new gcp.dataplex.Lake(\"example_spark\", {\n name: \"tf-test-lake_56730\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleSparkTask = new gcp.dataplex.Task(\"example_spark\", {\n taskId: \"tf-test-task_95154\",\n location: \"us-central1\",\n lake: exampleSpark.name,\n triggerSpec: {\n type: \"ON_DEMAND\",\n },\n description: \"task-spark-terraform\",\n executionSpec: {\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n args: {\n TASK_ARGS: \"--output_location,gs://spark-job/task-result, --output_format, json\",\n },\n },\n spark: {\n infrastructureSpec: {\n batch: {\n executorsCount: 2,\n maxExecutorsCount: 100,\n },\n containerImage: {\n image: \"test-image\",\n javaJars: [\"test-java-jars.jar\"],\n pythonPackages: [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n properties: {\n name: \"wrench\",\n mass: \"1.3kg\",\n count: \"3\",\n },\n },\n vpcNetwork: {\n networkTags: [\"test-network-tag\"],\n subNetwork: _default.id,\n },\n },\n fileUris: [\"gs://terrafrom-test/test.csv\"],\n archiveUris: [\"gs://terraform-test/test.csv\"],\n sqlScript: \"show databases\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# VPC network\ndefault = gcp.compute.Network(\"default\",\n name=\"tf-test-workstation-cluster_89605\",\n auto_create_subnetworks=True)\nproject = gcp.organizations.get_project()\nexample_spark = gcp.dataplex.Lake(\"example_spark\",\n name=\"tf-test-lake_56730\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_spark_task = gcp.dataplex.Task(\"example_spark\",\n task_id=\"tf-test-task_95154\",\n location=\"us-central1\",\n lake=example_spark.name,\n trigger_spec={\n \"type\": \"ON_DEMAND\",\n },\n description=\"task-spark-terraform\",\n execution_spec={\n \"serviceAccount\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"args\": {\n \"TASK_ARGS\": \"--output_location,gs://spark-job/task-result, --output_format, json\",\n },\n },\n spark={\n \"infrastructureSpec\": {\n \"batch\": {\n \"executorsCount\": 2,\n \"maxExecutorsCount\": 100,\n },\n \"containerImage\": {\n \"image\": \"test-image\",\n \"javaJars\": [\"test-java-jars.jar\"],\n \"pythonPackages\": [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n \"properties\": {\n \"name\": \"wrench\",\n \"mass\": \"1.3kg\",\n \"count\": \"3\",\n },\n },\n \"vpcNetwork\": {\n \"networkTags\": [\"test-network-tag\"],\n \"subNetwork\": default.id,\n },\n },\n \"fileUris\": [\"gs://terrafrom-test/test.csv\"],\n \"archiveUris\": [\"gs://terraform-test/test.csv\"],\n \"sqlScript\": \"show databases\",\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 // VPC network\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"tf-test-workstation-cluster_89605\",\n AutoCreateSubnetworks = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var exampleSpark = new Gcp.DataPlex.Lake(\"example_spark\", new()\n {\n Name = \"tf-test-lake_56730\",\n Location = \"us-central1\",\n Project = \"my-project-name\",\n });\n\n var exampleSparkTask = new Gcp.DataPlex.Task(\"example_spark\", new()\n {\n TaskId = \"tf-test-task_95154\",\n Location = \"us-central1\",\n Lake = exampleSpark.Name,\n TriggerSpec = new Gcp.DataPlex.Inputs.TaskTriggerSpecArgs\n {\n Type = \"ON_DEMAND\",\n },\n Description = \"task-spark-terraform\",\n ExecutionSpec = new Gcp.DataPlex.Inputs.TaskExecutionSpecArgs\n {\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n Args = \n {\n { \"TASK_ARGS\", \"--output_location,gs://spark-job/task-result, --output_format, json\" },\n },\n },\n Spark = new Gcp.DataPlex.Inputs.TaskSparkArgs\n {\n InfrastructureSpec = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecArgs\n {\n Batch = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecBatchArgs\n {\n ExecutorsCount = 2,\n MaxExecutorsCount = 100,\n },\n ContainerImage = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecContainerImageArgs\n {\n Image = \"test-image\",\n JavaJars = new[]\n {\n \"test-java-jars.jar\",\n },\n PythonPackages = new[]\n {\n \"gs://bucket-name/my/path/to/lib.tar.gz\",\n },\n Properties = \n {\n { \"name\", \"wrench\" },\n { \"mass\", \"1.3kg\" },\n { \"count\", \"3\" },\n },\n },\n VpcNetwork = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecVpcNetworkArgs\n {\n NetworkTags = new[]\n {\n \"test-network-tag\",\n },\n SubNetwork = @default.Id,\n },\n },\n FileUris = new[]\n {\n \"gs://terrafrom-test/test.csv\",\n },\n ArchiveUris = new[]\n {\n \"gs://terraform-test/test.csv\",\n },\n SqlScript = \"show databases\",\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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// VPC network\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tf-test-workstation-cluster_89605\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(true),\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\texampleSpark, err := dataplex.NewLake(ctx, \"example_spark\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"tf-test-lake_56730\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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 = dataplex.NewTask(ctx, \"example_spark\", \u0026dataplex.TaskArgs{\n\t\t\tTaskId: pulumi.String(\"tf-test-task_95154\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLake: exampleSpark.Name,\n\t\t\tTriggerSpec: \u0026dataplex.TaskTriggerSpecArgs{\n\t\t\t\tType: pulumi.String(\"ON_DEMAND\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"task-spark-terraform\"),\n\t\t\tExecutionSpec: \u0026dataplex.TaskExecutionSpecArgs{\n\t\t\t\tServiceAccount: pulumi.String(fmt.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number)),\n\t\t\t\tArgs: pulumi.StringMap{\n\t\t\t\t\t\"TASK_ARGS\": pulumi.String(\"--output_location,gs://spark-job/task-result, --output_format, json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSpark: \u0026dataplex.TaskSparkArgs{\n\t\t\t\tInfrastructureSpec: \u0026dataplex.TaskSparkInfrastructureSpecArgs{\n\t\t\t\t\tBatch: \u0026dataplex.TaskSparkInfrastructureSpecBatchArgs{\n\t\t\t\t\t\tExecutorsCount: pulumi.Int(2),\n\t\t\t\t\t\tMaxExecutorsCount: pulumi.Int(100),\n\t\t\t\t\t},\n\t\t\t\t\tContainerImage: \u0026dataplex.TaskSparkInfrastructureSpecContainerImageArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"test-image\"),\n\t\t\t\t\t\tJavaJars: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-java-jars.jar\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPythonPackages: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"gs://bucket-name/my/path/to/lib.tar.gz\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t\t\t\t\"mass\": pulumi.String(\"1.3kg\"),\n\t\t\t\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcNetwork: \u0026dataplex.TaskSparkInfrastructureSpecVpcNetworkArgs{\n\t\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-network-tag\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSubNetwork: _default.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terrafrom-test/test.csv\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terraform-test/test.csv\"),\n\t\t\t\t},\n\t\t\t\tSqlScript: pulumi.String(\"show databases\"),\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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Task;\nimport com.pulumi.gcp.dataplex.TaskArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskTriggerSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecBatchArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecContainerImageArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecVpcNetworkArgs;\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 // VPC network\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"tf-test-workstation-cluster_89605\")\n .autoCreateSubnetworks(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var exampleSpark = new Lake(\"exampleSpark\", LakeArgs.builder()\n .name(\"tf-test-lake_56730\")\n .location(\"us-central1\")\n .project(\"my-project-name\")\n .build());\n\n var exampleSparkTask = new Task(\"exampleSparkTask\", TaskArgs.builder()\n .taskId(\"tf-test-task_95154\")\n .location(\"us-central1\")\n .lake(exampleSpark.name())\n .triggerSpec(TaskTriggerSpecArgs.builder()\n .type(\"ON_DEMAND\")\n .build())\n .description(\"task-spark-terraform\")\n .executionSpec(TaskExecutionSpecArgs.builder()\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .args(Map.of(\"TASK_ARGS\", \"--output_location,gs://spark-job/task-result, --output_format, json\"))\n .build())\n .spark(TaskSparkArgs.builder()\n .infrastructureSpec(TaskSparkInfrastructureSpecArgs.builder()\n .batch(TaskSparkInfrastructureSpecBatchArgs.builder()\n .executorsCount(2)\n .maxExecutorsCount(100)\n .build())\n .containerImage(TaskSparkInfrastructureSpecContainerImageArgs.builder()\n .image(\"test-image\")\n .javaJars(\"test-java-jars.jar\")\n .pythonPackages(\"gs://bucket-name/my/path/to/lib.tar.gz\")\n .properties(Map.ofEntries(\n Map.entry(\"name\", \"wrench\"),\n Map.entry(\"mass\", \"1.3kg\"),\n Map.entry(\"count\", \"3\")\n ))\n .build())\n .vpcNetwork(TaskSparkInfrastructureSpecVpcNetworkArgs.builder()\n .networkTags(\"test-network-tag\")\n .subNetwork(default_.id())\n .build())\n .build())\n .fileUris(\"gs://terrafrom-test/test.csv\")\n .archiveUris(\"gs://terraform-test/test.csv\")\n .sqlScript(\"show databases\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # VPC network\n default:\n type: gcp:compute:Network\n properties:\n name: tf-test-workstation-cluster_89605\n autoCreateSubnetworks: true\n exampleSpark:\n type: gcp:dataplex:Lake\n name: example_spark\n properties:\n name: tf-test-lake_56730\n location: us-central1\n project: my-project-name\n exampleSparkTask:\n type: gcp:dataplex:Task\n name: example_spark\n properties:\n taskId: tf-test-task_95154\n location: us-central1\n lake: ${exampleSpark.name}\n triggerSpec:\n type: ON_DEMAND\n description: task-spark-terraform\n executionSpec:\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n args:\n TASK_ARGS: --output_location,gs://spark-job/task-result, --output_format, json\n spark:\n infrastructureSpec:\n batch:\n executorsCount: 2\n maxExecutorsCount: 100\n containerImage:\n image: test-image\n javaJars:\n - test-java-jars.jar\n pythonPackages:\n - gs://bucket-name/my/path/to/lib.tar.gz\n properties:\n name: wrench\n mass: 1.3kg\n count: '3'\n vpcNetwork:\n networkTags:\n - test-network-tag\n subNetwork: ${default.id}\n fileUris:\n - gs://terrafrom-test/test.csv\n archiveUris:\n - gs://terraform-test/test.csv\n sqlScript: show databases\n project: my-project-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Task Notebook\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// VPC network\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"tf-test-workstation-cluster_64336\",\n autoCreateSubnetworks: true,\n});\nconst project = gcp.organizations.getProject({});\nconst exampleNotebook = new gcp.dataplex.Lake(\"example_notebook\", {\n name: \"tf-test-lake_34962\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleNotebookTask = new gcp.dataplex.Task(\"example_notebook\", {\n taskId: \"tf-test-task_74000\",\n location: \"us-central1\",\n lake: exampleNotebook.name,\n triggerSpec: {\n type: \"RECURRING\",\n schedule: \"1 * * * *\",\n },\n executionSpec: {\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n args: {\n TASK_ARGS: \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\",\n },\n },\n notebook: {\n notebook: \"gs://terraform-test/test-notebook.ipynb\",\n infrastructureSpec: {\n batch: {\n executorsCount: 2,\n maxExecutorsCount: 100,\n },\n containerImage: {\n image: \"test-image\",\n javaJars: [\"test-java-jars.jar\"],\n pythonPackages: [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n properties: {\n name: \"wrench\",\n mass: \"1.3kg\",\n count: \"3\",\n },\n },\n vpcNetwork: {\n networkTags: [\"test-network-tag\"],\n network: _default.id,\n },\n },\n fileUris: [\"gs://terraform-test/test.csv\"],\n archiveUris: [\"gs://terraform-test/test.csv\"],\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# VPC network\ndefault = gcp.compute.Network(\"default\",\n name=\"tf-test-workstation-cluster_64336\",\n auto_create_subnetworks=True)\nproject = gcp.organizations.get_project()\nexample_notebook = gcp.dataplex.Lake(\"example_notebook\",\n name=\"tf-test-lake_34962\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_notebook_task = gcp.dataplex.Task(\"example_notebook\",\n task_id=\"tf-test-task_74000\",\n location=\"us-central1\",\n lake=example_notebook.name,\n trigger_spec={\n \"type\": \"RECURRING\",\n \"schedule\": \"1 * * * *\",\n },\n execution_spec={\n \"serviceAccount\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"args\": {\n \"TASK_ARGS\": \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\",\n },\n },\n notebook={\n \"notebook\": \"gs://terraform-test/test-notebook.ipynb\",\n \"infrastructureSpec\": {\n \"batch\": {\n \"executorsCount\": 2,\n \"maxExecutorsCount\": 100,\n },\n \"containerImage\": {\n \"image\": \"test-image\",\n \"javaJars\": [\"test-java-jars.jar\"],\n \"pythonPackages\": [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n \"properties\": {\n \"name\": \"wrench\",\n \"mass\": \"1.3kg\",\n \"count\": \"3\",\n },\n },\n \"vpcNetwork\": {\n \"networkTags\": [\"test-network-tag\"],\n \"network\": default.id,\n },\n },\n \"fileUris\": [\"gs://terraform-test/test.csv\"],\n \"archiveUris\": [\"gs://terraform-test/test.csv\"],\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 // VPC network\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"tf-test-workstation-cluster_64336\",\n AutoCreateSubnetworks = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var exampleNotebook = new Gcp.DataPlex.Lake(\"example_notebook\", new()\n {\n Name = \"tf-test-lake_34962\",\n Location = \"us-central1\",\n Project = \"my-project-name\",\n });\n\n var exampleNotebookTask = new Gcp.DataPlex.Task(\"example_notebook\", new()\n {\n TaskId = \"tf-test-task_74000\",\n Location = \"us-central1\",\n Lake = exampleNotebook.Name,\n TriggerSpec = new Gcp.DataPlex.Inputs.TaskTriggerSpecArgs\n {\n Type = \"RECURRING\",\n Schedule = \"1 * * * *\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.TaskExecutionSpecArgs\n {\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n Args = \n {\n { \"TASK_ARGS\", \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\" },\n },\n },\n Notebook = new Gcp.DataPlex.Inputs.TaskNotebookArgs\n {\n Notebook = \"gs://terraform-test/test-notebook.ipynb\",\n InfrastructureSpec = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecArgs\n {\n Batch = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecBatchArgs\n {\n ExecutorsCount = 2,\n MaxExecutorsCount = 100,\n },\n ContainerImage = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecContainerImageArgs\n {\n Image = \"test-image\",\n JavaJars = new[]\n {\n \"test-java-jars.jar\",\n },\n PythonPackages = new[]\n {\n \"gs://bucket-name/my/path/to/lib.tar.gz\",\n },\n Properties = \n {\n { \"name\", \"wrench\" },\n { \"mass\", \"1.3kg\" },\n { \"count\", \"3\" },\n },\n },\n VpcNetwork = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecVpcNetworkArgs\n {\n NetworkTags = new[]\n {\n \"test-network-tag\",\n },\n Network = @default.Id,\n },\n },\n FileUris = new[]\n {\n \"gs://terraform-test/test.csv\",\n },\n ArchiveUris = new[]\n {\n \"gs://terraform-test/test.csv\",\n },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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// VPC network\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tf-test-workstation-cluster_64336\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(true),\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\texampleNotebook, err := dataplex.NewLake(ctx, \"example_notebook\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"tf-test-lake_34962\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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 = dataplex.NewTask(ctx, \"example_notebook\", \u0026dataplex.TaskArgs{\n\t\t\tTaskId: pulumi.String(\"tf-test-task_74000\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLake: exampleNotebook.Name,\n\t\t\tTriggerSpec: \u0026dataplex.TaskTriggerSpecArgs{\n\t\t\t\tType: pulumi.String(\"RECURRING\"),\n\t\t\t\tSchedule: pulumi.String(\"1 * * * *\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.TaskExecutionSpecArgs{\n\t\t\t\tServiceAccount: pulumi.String(fmt.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number)),\n\t\t\t\tArgs: pulumi.StringMap{\n\t\t\t\t\t\"TASK_ARGS\": pulumi.String(\"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNotebook: \u0026dataplex.TaskNotebookArgs{\n\t\t\t\tNotebook: pulumi.String(\"gs://terraform-test/test-notebook.ipynb\"),\n\t\t\t\tInfrastructureSpec: \u0026dataplex.TaskNotebookInfrastructureSpecArgs{\n\t\t\t\t\tBatch: \u0026dataplex.TaskNotebookInfrastructureSpecBatchArgs{\n\t\t\t\t\t\tExecutorsCount: pulumi.Int(2),\n\t\t\t\t\t\tMaxExecutorsCount: pulumi.Int(100),\n\t\t\t\t\t},\n\t\t\t\t\tContainerImage: \u0026dataplex.TaskNotebookInfrastructureSpecContainerImageArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"test-image\"),\n\t\t\t\t\t\tJavaJars: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-java-jars.jar\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPythonPackages: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"gs://bucket-name/my/path/to/lib.tar.gz\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t\t\t\t\"mass\": pulumi.String(\"1.3kg\"),\n\t\t\t\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcNetwork: \u0026dataplex.TaskNotebookInfrastructureSpecVpcNetworkArgs{\n\t\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-network-tag\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tNetwork: _default.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terraform-test/test.csv\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terraform-test/test.csv\"),\n\t\t\t\t},\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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Task;\nimport com.pulumi.gcp.dataplex.TaskArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskTriggerSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecBatchArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecContainerImageArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecVpcNetworkArgs;\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 // VPC network\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"tf-test-workstation-cluster_64336\")\n .autoCreateSubnetworks(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var exampleNotebook = new Lake(\"exampleNotebook\", LakeArgs.builder()\n .name(\"tf-test-lake_34962\")\n .location(\"us-central1\")\n .project(\"my-project-name\")\n .build());\n\n var exampleNotebookTask = new Task(\"exampleNotebookTask\", TaskArgs.builder()\n .taskId(\"tf-test-task_74000\")\n .location(\"us-central1\")\n .lake(exampleNotebook.name())\n .triggerSpec(TaskTriggerSpecArgs.builder()\n .type(\"RECURRING\")\n .schedule(\"1 * * * *\")\n .build())\n .executionSpec(TaskExecutionSpecArgs.builder()\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .args(Map.of(\"TASK_ARGS\", \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\"))\n .build())\n .notebook(TaskNotebookArgs.builder()\n .notebook(\"gs://terraform-test/test-notebook.ipynb\")\n .infrastructureSpec(TaskNotebookInfrastructureSpecArgs.builder()\n .batch(TaskNotebookInfrastructureSpecBatchArgs.builder()\n .executorsCount(2)\n .maxExecutorsCount(100)\n .build())\n .containerImage(TaskNotebookInfrastructureSpecContainerImageArgs.builder()\n .image(\"test-image\")\n .javaJars(\"test-java-jars.jar\")\n .pythonPackages(\"gs://bucket-name/my/path/to/lib.tar.gz\")\n .properties(Map.ofEntries(\n Map.entry(\"name\", \"wrench\"),\n Map.entry(\"mass\", \"1.3kg\"),\n Map.entry(\"count\", \"3\")\n ))\n .build())\n .vpcNetwork(TaskNotebookInfrastructureSpecVpcNetworkArgs.builder()\n .networkTags(\"test-network-tag\")\n .network(default_.id())\n .build())\n .build())\n .fileUris(\"gs://terraform-test/test.csv\")\n .archiveUris(\"gs://terraform-test/test.csv\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # VPC network\n default:\n type: gcp:compute:Network\n properties:\n name: tf-test-workstation-cluster_64336\n autoCreateSubnetworks: true\n exampleNotebook:\n type: gcp:dataplex:Lake\n name: example_notebook\n properties:\n name: tf-test-lake_34962\n location: us-central1\n project: my-project-name\n exampleNotebookTask:\n type: gcp:dataplex:Task\n name: example_notebook\n properties:\n taskId: tf-test-task_74000\n location: us-central1\n lake: ${exampleNotebook.name}\n triggerSpec:\n type: RECURRING\n schedule: 1 * * * *\n executionSpec:\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n args:\n TASK_ARGS: --output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\n notebook:\n notebook: gs://terraform-test/test-notebook.ipynb\n infrastructureSpec:\n batch:\n executorsCount: 2\n maxExecutorsCount: 100\n containerImage:\n image: test-image\n javaJars:\n - test-java-jars.jar\n pythonPackages:\n - gs://bucket-name/my/path/to/lib.tar.gz\n properties:\n name: wrench\n mass: 1.3kg\n count: '3'\n vpcNetwork:\n networkTags:\n - test-network-tag\n network: ${default.id}\n fileUris:\n - gs://terraform-test/test.csv\n archiveUris:\n - gs://terraform-test/test.csv\n project: my-project-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTask can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/lakes/{{lake}}/tasks/{{task_id}}`\n\n* `{{project}}/{{location}}/{{lake}}/{{task_id}}`\n\n* `{{location}}/{{lake}}/{{task_id}}`\n\nWhen using the `pulumi import` command, Task can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataplex/task:Task default projects/{{project}}/locations/{{location}}/lakes/{{lake}}/tasks/{{task_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/task:Task default {{project}}/{{location}}/{{lake}}/{{task_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/task:Task default {{location}}/{{lake}}/{{task_id}}\n```\n\n", + "description": "A Dataplex task represents the work that you want Dataplex to do on a schedule. It encapsulates code, parameters, and the schedule.\n\n\nTo get more information about Task, see:\n\n* [API documentation](https://cloud.google.com/dataplex/docs/reference/rest/v1/projects.locations.lakes.tasks)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataplex/docs)\n\n## Example Usage\n\n### Dataplex Task Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.dataplex.Lake(\"example\", {\n name: \"tf-test-lake_91042\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleTask = new gcp.dataplex.Task(\"example\", {\n taskId: \"tf-test-task_72490\",\n location: \"us-central1\",\n lake: example.name,\n description: \"Test Task Basic\",\n displayName: \"task-basic\",\n labels: {\n count: \"3\",\n },\n triggerSpec: {\n type: \"RECURRING\",\n disabled: false,\n maxRetries: 3,\n startTime: \"2023-10-02T15:01:23Z\",\n schedule: \"1 * * * *\",\n },\n executionSpec: {\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n project: \"my-project-name\",\n maxJobExecutionLifetime: \"100s\",\n kmsKey: \"234jn2kjn42k3n423\",\n },\n spark: {\n pythonScriptFile: \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.dataplex.Lake(\"example\",\n name=\"tf-test-lake_91042\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_task = gcp.dataplex.Task(\"example\",\n task_id=\"tf-test-task_72490\",\n location=\"us-central1\",\n lake=example.name,\n description=\"Test Task Basic\",\n display_name=\"task-basic\",\n labels={\n \"count\": \"3\",\n },\n trigger_spec={\n \"type\": \"RECURRING\",\n \"disabled\": False,\n \"max_retries\": 3,\n \"start_time\": \"2023-10-02T15:01:23Z\",\n \"schedule\": \"1 * * * *\",\n },\n execution_spec={\n \"service_account\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"project\": \"my-project-name\",\n \"max_job_execution_lifetime\": \"100s\",\n \"kms_key\": \"234jn2kjn42k3n423\",\n },\n spark={\n \"python_script_file\": \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\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 project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.DataPlex.Lake(\"example\", new()\n {\n Name = \"tf-test-lake_91042\",\n Location = \"us-central1\",\n Project = \"my-project-name\",\n });\n\n var exampleTask = new Gcp.DataPlex.Task(\"example\", new()\n {\n TaskId = \"tf-test-task_72490\",\n Location = \"us-central1\",\n Lake = example.Name,\n Description = \"Test Task Basic\",\n DisplayName = \"task-basic\",\n Labels = \n {\n { \"count\", \"3\" },\n },\n TriggerSpec = new Gcp.DataPlex.Inputs.TaskTriggerSpecArgs\n {\n Type = \"RECURRING\",\n Disabled = false,\n MaxRetries = 3,\n StartTime = \"2023-10-02T15:01:23Z\",\n Schedule = \"1 * * * *\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.TaskExecutionSpecArgs\n {\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n Project = \"my-project-name\",\n MaxJobExecutionLifetime = \"100s\",\n KmsKey = \"234jn2kjn42k3n423\",\n },\n Spark = new Gcp.DataPlex.Inputs.TaskSparkArgs\n {\n PythonScriptFile = \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\texample, err := dataplex.NewLake(ctx, \"example\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"tf-test-lake_91042\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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 = dataplex.NewTask(ctx, \"example\", \u0026dataplex.TaskArgs{\n\t\t\tTaskId: pulumi.String(\"tf-test-task_72490\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLake: example.Name,\n\t\t\tDescription: pulumi.String(\"Test Task Basic\"),\n\t\t\tDisplayName: pulumi.String(\"task-basic\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t},\n\t\t\tTriggerSpec: \u0026dataplex.TaskTriggerSpecArgs{\n\t\t\t\tType: pulumi.String(\"RECURRING\"),\n\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\tMaxRetries: pulumi.Int(3),\n\t\t\t\tStartTime: pulumi.String(\"2023-10-02T15:01:23Z\"),\n\t\t\t\tSchedule: pulumi.String(\"1 * * * *\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.TaskExecutionSpecArgs{\n\t\t\t\tServiceAccount: pulumi.String(fmt.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number)),\n\t\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\t\tMaxJobExecutionLifetime: pulumi.String(\"100s\"),\n\t\t\t\tKmsKey: pulumi.String(\"234jn2kjn42k3n423\"),\n\t\t\t},\n\t\t\tSpark: \u0026dataplex.TaskSparkArgs{\n\t\t\t\tPythonScriptFile: pulumi.String(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Task;\nimport com.pulumi.gcp.dataplex.TaskArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskTriggerSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkArgs;\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 example = new Lake(\"example\", LakeArgs.builder()\n .name(\"tf-test-lake_91042\")\n .location(\"us-central1\")\n .project(\"my-project-name\")\n .build());\n\n var exampleTask = new Task(\"exampleTask\", TaskArgs.builder()\n .taskId(\"tf-test-task_72490\")\n .location(\"us-central1\")\n .lake(example.name())\n .description(\"Test Task Basic\")\n .displayName(\"task-basic\")\n .labels(Map.of(\"count\", \"3\"))\n .triggerSpec(TaskTriggerSpecArgs.builder()\n .type(\"RECURRING\")\n .disabled(false)\n .maxRetries(3)\n .startTime(\"2023-10-02T15:01:23Z\")\n .schedule(\"1 * * * *\")\n .build())\n .executionSpec(TaskExecutionSpecArgs.builder()\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .project(\"my-project-name\")\n .maxJobExecutionLifetime(\"100s\")\n .kmsKey(\"234jn2kjn42k3n423\")\n .build())\n .spark(TaskSparkArgs.builder()\n .pythonScriptFile(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:dataplex:Lake\n properties:\n name: tf-test-lake_91042\n location: us-central1\n project: my-project-name\n exampleTask:\n type: gcp:dataplex:Task\n name: example\n properties:\n taskId: tf-test-task_72490\n location: us-central1\n lake: ${example.name}\n description: Test Task Basic\n displayName: task-basic\n labels:\n count: '3'\n triggerSpec:\n type: RECURRING\n disabled: false\n maxRetries: 3\n startTime: 2023-10-02T15:01:23Z\n schedule: 1 * * * *\n executionSpec:\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n project: my-project-name\n maxJobExecutionLifetime: 100s\n kmsKey: 234jn2kjn42k3n423\n spark:\n pythonScriptFile: gs://dataproc-examples/pyspark/hello-world/hello-world.py\n project: my-project-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Task Spark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// VPC network\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"tf-test-workstation-cluster_89605\",\n autoCreateSubnetworks: true,\n});\nconst project = gcp.organizations.getProject({});\nconst exampleSpark = new gcp.dataplex.Lake(\"example_spark\", {\n name: \"tf-test-lake_56730\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleSparkTask = new gcp.dataplex.Task(\"example_spark\", {\n taskId: \"tf-test-task_95154\",\n location: \"us-central1\",\n lake: exampleSpark.name,\n triggerSpec: {\n type: \"ON_DEMAND\",\n },\n description: \"task-spark-terraform\",\n executionSpec: {\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n args: {\n TASK_ARGS: \"--output_location,gs://spark-job/task-result, --output_format, json\",\n },\n },\n spark: {\n infrastructureSpec: {\n batch: {\n executorsCount: 2,\n maxExecutorsCount: 100,\n },\n containerImage: {\n image: \"test-image\",\n javaJars: [\"test-java-jars.jar\"],\n pythonPackages: [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n properties: {\n name: \"wrench\",\n mass: \"1.3kg\",\n count: \"3\",\n },\n },\n vpcNetwork: {\n networkTags: [\"test-network-tag\"],\n subNetwork: _default.id,\n },\n },\n fileUris: [\"gs://terrafrom-test/test.csv\"],\n archiveUris: [\"gs://terraform-test/test.csv\"],\n sqlScript: \"show databases\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# VPC network\ndefault = gcp.compute.Network(\"default\",\n name=\"tf-test-workstation-cluster_89605\",\n auto_create_subnetworks=True)\nproject = gcp.organizations.get_project()\nexample_spark = gcp.dataplex.Lake(\"example_spark\",\n name=\"tf-test-lake_56730\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_spark_task = gcp.dataplex.Task(\"example_spark\",\n task_id=\"tf-test-task_95154\",\n location=\"us-central1\",\n lake=example_spark.name,\n trigger_spec={\n \"type\": \"ON_DEMAND\",\n },\n description=\"task-spark-terraform\",\n execution_spec={\n \"service_account\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"args\": {\n \"tas_k__args\": \"--output_location,gs://spark-job/task-result, --output_format, json\",\n },\n },\n spark={\n \"infrastructure_spec\": {\n \"batch\": {\n \"executors_count\": 2,\n \"max_executors_count\": 100,\n },\n \"container_image\": {\n \"image\": \"test-image\",\n \"java_jars\": [\"test-java-jars.jar\"],\n \"python_packages\": [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n \"properties\": {\n \"name\": \"wrench\",\n \"mass\": \"1.3kg\",\n \"count\": \"3\",\n },\n },\n \"vpc_network\": {\n \"network_tags\": [\"test-network-tag\"],\n \"sub_network\": default.id,\n },\n },\n \"file_uris\": [\"gs://terrafrom-test/test.csv\"],\n \"archive_uris\": [\"gs://terraform-test/test.csv\"],\n \"sql_script\": \"show databases\",\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 // VPC network\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"tf-test-workstation-cluster_89605\",\n AutoCreateSubnetworks = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var exampleSpark = new Gcp.DataPlex.Lake(\"example_spark\", new()\n {\n Name = \"tf-test-lake_56730\",\n Location = \"us-central1\",\n Project = \"my-project-name\",\n });\n\n var exampleSparkTask = new Gcp.DataPlex.Task(\"example_spark\", new()\n {\n TaskId = \"tf-test-task_95154\",\n Location = \"us-central1\",\n Lake = exampleSpark.Name,\n TriggerSpec = new Gcp.DataPlex.Inputs.TaskTriggerSpecArgs\n {\n Type = \"ON_DEMAND\",\n },\n Description = \"task-spark-terraform\",\n ExecutionSpec = new Gcp.DataPlex.Inputs.TaskExecutionSpecArgs\n {\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n Args = \n {\n { \"TASK_ARGS\", \"--output_location,gs://spark-job/task-result, --output_format, json\" },\n },\n },\n Spark = new Gcp.DataPlex.Inputs.TaskSparkArgs\n {\n InfrastructureSpec = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecArgs\n {\n Batch = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecBatchArgs\n {\n ExecutorsCount = 2,\n MaxExecutorsCount = 100,\n },\n ContainerImage = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecContainerImageArgs\n {\n Image = \"test-image\",\n JavaJars = new[]\n {\n \"test-java-jars.jar\",\n },\n PythonPackages = new[]\n {\n \"gs://bucket-name/my/path/to/lib.tar.gz\",\n },\n Properties = \n {\n { \"name\", \"wrench\" },\n { \"mass\", \"1.3kg\" },\n { \"count\", \"3\" },\n },\n },\n VpcNetwork = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecVpcNetworkArgs\n {\n NetworkTags = new[]\n {\n \"test-network-tag\",\n },\n SubNetwork = @default.Id,\n },\n },\n FileUris = new[]\n {\n \"gs://terrafrom-test/test.csv\",\n },\n ArchiveUris = new[]\n {\n \"gs://terraform-test/test.csv\",\n },\n SqlScript = \"show databases\",\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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// VPC network\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tf-test-workstation-cluster_89605\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(true),\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\texampleSpark, err := dataplex.NewLake(ctx, \"example_spark\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"tf-test-lake_56730\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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 = dataplex.NewTask(ctx, \"example_spark\", \u0026dataplex.TaskArgs{\n\t\t\tTaskId: pulumi.String(\"tf-test-task_95154\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLake: exampleSpark.Name,\n\t\t\tTriggerSpec: \u0026dataplex.TaskTriggerSpecArgs{\n\t\t\t\tType: pulumi.String(\"ON_DEMAND\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"task-spark-terraform\"),\n\t\t\tExecutionSpec: \u0026dataplex.TaskExecutionSpecArgs{\n\t\t\t\tServiceAccount: pulumi.String(fmt.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number)),\n\t\t\t\tArgs: pulumi.StringMap{\n\t\t\t\t\t\"TASK_ARGS\": pulumi.String(\"--output_location,gs://spark-job/task-result, --output_format, json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSpark: \u0026dataplex.TaskSparkArgs{\n\t\t\t\tInfrastructureSpec: \u0026dataplex.TaskSparkInfrastructureSpecArgs{\n\t\t\t\t\tBatch: \u0026dataplex.TaskSparkInfrastructureSpecBatchArgs{\n\t\t\t\t\t\tExecutorsCount: pulumi.Int(2),\n\t\t\t\t\t\tMaxExecutorsCount: pulumi.Int(100),\n\t\t\t\t\t},\n\t\t\t\t\tContainerImage: \u0026dataplex.TaskSparkInfrastructureSpecContainerImageArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"test-image\"),\n\t\t\t\t\t\tJavaJars: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-java-jars.jar\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPythonPackages: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"gs://bucket-name/my/path/to/lib.tar.gz\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t\t\t\t\"mass\": pulumi.String(\"1.3kg\"),\n\t\t\t\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcNetwork: \u0026dataplex.TaskSparkInfrastructureSpecVpcNetworkArgs{\n\t\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-network-tag\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSubNetwork: _default.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terrafrom-test/test.csv\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terraform-test/test.csv\"),\n\t\t\t\t},\n\t\t\t\tSqlScript: pulumi.String(\"show databases\"),\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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Task;\nimport com.pulumi.gcp.dataplex.TaskArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskTriggerSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecBatchArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecContainerImageArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecVpcNetworkArgs;\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 // VPC network\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"tf-test-workstation-cluster_89605\")\n .autoCreateSubnetworks(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var exampleSpark = new Lake(\"exampleSpark\", LakeArgs.builder()\n .name(\"tf-test-lake_56730\")\n .location(\"us-central1\")\n .project(\"my-project-name\")\n .build());\n\n var exampleSparkTask = new Task(\"exampleSparkTask\", TaskArgs.builder()\n .taskId(\"tf-test-task_95154\")\n .location(\"us-central1\")\n .lake(exampleSpark.name())\n .triggerSpec(TaskTriggerSpecArgs.builder()\n .type(\"ON_DEMAND\")\n .build())\n .description(\"task-spark-terraform\")\n .executionSpec(TaskExecutionSpecArgs.builder()\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .args(Map.of(\"TASK_ARGS\", \"--output_location,gs://spark-job/task-result, --output_format, json\"))\n .build())\n .spark(TaskSparkArgs.builder()\n .infrastructureSpec(TaskSparkInfrastructureSpecArgs.builder()\n .batch(TaskSparkInfrastructureSpecBatchArgs.builder()\n .executorsCount(2)\n .maxExecutorsCount(100)\n .build())\n .containerImage(TaskSparkInfrastructureSpecContainerImageArgs.builder()\n .image(\"test-image\")\n .javaJars(\"test-java-jars.jar\")\n .pythonPackages(\"gs://bucket-name/my/path/to/lib.tar.gz\")\n .properties(Map.ofEntries(\n Map.entry(\"name\", \"wrench\"),\n Map.entry(\"mass\", \"1.3kg\"),\n Map.entry(\"count\", \"3\")\n ))\n .build())\n .vpcNetwork(TaskSparkInfrastructureSpecVpcNetworkArgs.builder()\n .networkTags(\"test-network-tag\")\n .subNetwork(default_.id())\n .build())\n .build())\n .fileUris(\"gs://terrafrom-test/test.csv\")\n .archiveUris(\"gs://terraform-test/test.csv\")\n .sqlScript(\"show databases\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # VPC network\n default:\n type: gcp:compute:Network\n properties:\n name: tf-test-workstation-cluster_89605\n autoCreateSubnetworks: true\n exampleSpark:\n type: gcp:dataplex:Lake\n name: example_spark\n properties:\n name: tf-test-lake_56730\n location: us-central1\n project: my-project-name\n exampleSparkTask:\n type: gcp:dataplex:Task\n name: example_spark\n properties:\n taskId: tf-test-task_95154\n location: us-central1\n lake: ${exampleSpark.name}\n triggerSpec:\n type: ON_DEMAND\n description: task-spark-terraform\n executionSpec:\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n args:\n TASK_ARGS: --output_location,gs://spark-job/task-result, --output_format, json\n spark:\n infrastructureSpec:\n batch:\n executorsCount: 2\n maxExecutorsCount: 100\n containerImage:\n image: test-image\n javaJars:\n - test-java-jars.jar\n pythonPackages:\n - gs://bucket-name/my/path/to/lib.tar.gz\n properties:\n name: wrench\n mass: 1.3kg\n count: '3'\n vpcNetwork:\n networkTags:\n - test-network-tag\n subNetwork: ${default.id}\n fileUris:\n - gs://terrafrom-test/test.csv\n archiveUris:\n - gs://terraform-test/test.csv\n sqlScript: show databases\n project: my-project-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Task Notebook\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// VPC network\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"tf-test-workstation-cluster_64336\",\n autoCreateSubnetworks: true,\n});\nconst project = gcp.organizations.getProject({});\nconst exampleNotebook = new gcp.dataplex.Lake(\"example_notebook\", {\n name: \"tf-test-lake_34962\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleNotebookTask = new gcp.dataplex.Task(\"example_notebook\", {\n taskId: \"tf-test-task_74000\",\n location: \"us-central1\",\n lake: exampleNotebook.name,\n triggerSpec: {\n type: \"RECURRING\",\n schedule: \"1 * * * *\",\n },\n executionSpec: {\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n args: {\n TASK_ARGS: \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\",\n },\n },\n notebook: {\n notebook: \"gs://terraform-test/test-notebook.ipynb\",\n infrastructureSpec: {\n batch: {\n executorsCount: 2,\n maxExecutorsCount: 100,\n },\n containerImage: {\n image: \"test-image\",\n javaJars: [\"test-java-jars.jar\"],\n pythonPackages: [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n properties: {\n name: \"wrench\",\n mass: \"1.3kg\",\n count: \"3\",\n },\n },\n vpcNetwork: {\n networkTags: [\"test-network-tag\"],\n network: _default.id,\n },\n },\n fileUris: [\"gs://terraform-test/test.csv\"],\n archiveUris: [\"gs://terraform-test/test.csv\"],\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# VPC network\ndefault = gcp.compute.Network(\"default\",\n name=\"tf-test-workstation-cluster_64336\",\n auto_create_subnetworks=True)\nproject = gcp.organizations.get_project()\nexample_notebook = gcp.dataplex.Lake(\"example_notebook\",\n name=\"tf-test-lake_34962\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_notebook_task = gcp.dataplex.Task(\"example_notebook\",\n task_id=\"tf-test-task_74000\",\n location=\"us-central1\",\n lake=example_notebook.name,\n trigger_spec={\n \"type\": \"RECURRING\",\n \"schedule\": \"1 * * * *\",\n },\n execution_spec={\n \"service_account\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"args\": {\n \"tas_k__args\": \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\",\n },\n },\n notebook={\n \"notebook\": \"gs://terraform-test/test-notebook.ipynb\",\n \"infrastructure_spec\": {\n \"batch\": {\n \"executors_count\": 2,\n \"max_executors_count\": 100,\n },\n \"container_image\": {\n \"image\": \"test-image\",\n \"java_jars\": [\"test-java-jars.jar\"],\n \"python_packages\": [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n \"properties\": {\n \"name\": \"wrench\",\n \"mass\": \"1.3kg\",\n \"count\": \"3\",\n },\n },\n \"vpc_network\": {\n \"network_tags\": [\"test-network-tag\"],\n \"network\": default.id,\n },\n },\n \"file_uris\": [\"gs://terraform-test/test.csv\"],\n \"archive_uris\": [\"gs://terraform-test/test.csv\"],\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 // VPC network\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"tf-test-workstation-cluster_64336\",\n AutoCreateSubnetworks = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var exampleNotebook = new Gcp.DataPlex.Lake(\"example_notebook\", new()\n {\n Name = \"tf-test-lake_34962\",\n Location = \"us-central1\",\n Project = \"my-project-name\",\n });\n\n var exampleNotebookTask = new Gcp.DataPlex.Task(\"example_notebook\", new()\n {\n TaskId = \"tf-test-task_74000\",\n Location = \"us-central1\",\n Lake = exampleNotebook.Name,\n TriggerSpec = new Gcp.DataPlex.Inputs.TaskTriggerSpecArgs\n {\n Type = \"RECURRING\",\n Schedule = \"1 * * * *\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.TaskExecutionSpecArgs\n {\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n Args = \n {\n { \"TASK_ARGS\", \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\" },\n },\n },\n Notebook = new Gcp.DataPlex.Inputs.TaskNotebookArgs\n {\n Notebook = \"gs://terraform-test/test-notebook.ipynb\",\n InfrastructureSpec = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecArgs\n {\n Batch = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecBatchArgs\n {\n ExecutorsCount = 2,\n MaxExecutorsCount = 100,\n },\n ContainerImage = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecContainerImageArgs\n {\n Image = \"test-image\",\n JavaJars = new[]\n {\n \"test-java-jars.jar\",\n },\n PythonPackages = new[]\n {\n \"gs://bucket-name/my/path/to/lib.tar.gz\",\n },\n Properties = \n {\n { \"name\", \"wrench\" },\n { \"mass\", \"1.3kg\" },\n { \"count\", \"3\" },\n },\n },\n VpcNetwork = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecVpcNetworkArgs\n {\n NetworkTags = new[]\n {\n \"test-network-tag\",\n },\n Network = @default.Id,\n },\n },\n FileUris = new[]\n {\n \"gs://terraform-test/test.csv\",\n },\n ArchiveUris = new[]\n {\n \"gs://terraform-test/test.csv\",\n },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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// VPC network\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tf-test-workstation-cluster_64336\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(true),\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\texampleNotebook, err := dataplex.NewLake(ctx, \"example_notebook\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"tf-test-lake_34962\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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 = dataplex.NewTask(ctx, \"example_notebook\", \u0026dataplex.TaskArgs{\n\t\t\tTaskId: pulumi.String(\"tf-test-task_74000\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLake: exampleNotebook.Name,\n\t\t\tTriggerSpec: \u0026dataplex.TaskTriggerSpecArgs{\n\t\t\t\tType: pulumi.String(\"RECURRING\"),\n\t\t\t\tSchedule: pulumi.String(\"1 * * * *\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.TaskExecutionSpecArgs{\n\t\t\t\tServiceAccount: pulumi.String(fmt.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number)),\n\t\t\t\tArgs: pulumi.StringMap{\n\t\t\t\t\t\"TASK_ARGS\": pulumi.String(\"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNotebook: \u0026dataplex.TaskNotebookArgs{\n\t\t\t\tNotebook: pulumi.String(\"gs://terraform-test/test-notebook.ipynb\"),\n\t\t\t\tInfrastructureSpec: \u0026dataplex.TaskNotebookInfrastructureSpecArgs{\n\t\t\t\t\tBatch: \u0026dataplex.TaskNotebookInfrastructureSpecBatchArgs{\n\t\t\t\t\t\tExecutorsCount: pulumi.Int(2),\n\t\t\t\t\t\tMaxExecutorsCount: pulumi.Int(100),\n\t\t\t\t\t},\n\t\t\t\t\tContainerImage: \u0026dataplex.TaskNotebookInfrastructureSpecContainerImageArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"test-image\"),\n\t\t\t\t\t\tJavaJars: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-java-jars.jar\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPythonPackages: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"gs://bucket-name/my/path/to/lib.tar.gz\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t\t\t\t\"mass\": pulumi.String(\"1.3kg\"),\n\t\t\t\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcNetwork: \u0026dataplex.TaskNotebookInfrastructureSpecVpcNetworkArgs{\n\t\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-network-tag\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tNetwork: _default.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terraform-test/test.csv\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terraform-test/test.csv\"),\n\t\t\t\t},\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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Task;\nimport com.pulumi.gcp.dataplex.TaskArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskTriggerSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecBatchArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecContainerImageArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecVpcNetworkArgs;\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 // VPC network\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"tf-test-workstation-cluster_64336\")\n .autoCreateSubnetworks(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var exampleNotebook = new Lake(\"exampleNotebook\", LakeArgs.builder()\n .name(\"tf-test-lake_34962\")\n .location(\"us-central1\")\n .project(\"my-project-name\")\n .build());\n\n var exampleNotebookTask = new Task(\"exampleNotebookTask\", TaskArgs.builder()\n .taskId(\"tf-test-task_74000\")\n .location(\"us-central1\")\n .lake(exampleNotebook.name())\n .triggerSpec(TaskTriggerSpecArgs.builder()\n .type(\"RECURRING\")\n .schedule(\"1 * * * *\")\n .build())\n .executionSpec(TaskExecutionSpecArgs.builder()\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .args(Map.of(\"TASK_ARGS\", \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\"))\n .build())\n .notebook(TaskNotebookArgs.builder()\n .notebook(\"gs://terraform-test/test-notebook.ipynb\")\n .infrastructureSpec(TaskNotebookInfrastructureSpecArgs.builder()\n .batch(TaskNotebookInfrastructureSpecBatchArgs.builder()\n .executorsCount(2)\n .maxExecutorsCount(100)\n .build())\n .containerImage(TaskNotebookInfrastructureSpecContainerImageArgs.builder()\n .image(\"test-image\")\n .javaJars(\"test-java-jars.jar\")\n .pythonPackages(\"gs://bucket-name/my/path/to/lib.tar.gz\")\n .properties(Map.ofEntries(\n Map.entry(\"name\", \"wrench\"),\n Map.entry(\"mass\", \"1.3kg\"),\n Map.entry(\"count\", \"3\")\n ))\n .build())\n .vpcNetwork(TaskNotebookInfrastructureSpecVpcNetworkArgs.builder()\n .networkTags(\"test-network-tag\")\n .network(default_.id())\n .build())\n .build())\n .fileUris(\"gs://terraform-test/test.csv\")\n .archiveUris(\"gs://terraform-test/test.csv\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # VPC network\n default:\n type: gcp:compute:Network\n properties:\n name: tf-test-workstation-cluster_64336\n autoCreateSubnetworks: true\n exampleNotebook:\n type: gcp:dataplex:Lake\n name: example_notebook\n properties:\n name: tf-test-lake_34962\n location: us-central1\n project: my-project-name\n exampleNotebookTask:\n type: gcp:dataplex:Task\n name: example_notebook\n properties:\n taskId: tf-test-task_74000\n location: us-central1\n lake: ${exampleNotebook.name}\n triggerSpec:\n type: RECURRING\n schedule: 1 * * * *\n executionSpec:\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n args:\n TASK_ARGS: --output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\n notebook:\n notebook: gs://terraform-test/test-notebook.ipynb\n infrastructureSpec:\n batch:\n executorsCount: 2\n maxExecutorsCount: 100\n containerImage:\n image: test-image\n javaJars:\n - test-java-jars.jar\n pythonPackages:\n - gs://bucket-name/my/path/to/lib.tar.gz\n properties:\n name: wrench\n mass: 1.3kg\n count: '3'\n vpcNetwork:\n networkTags:\n - test-network-tag\n network: ${default.id}\n fileUris:\n - gs://terraform-test/test.csv\n archiveUris:\n - gs://terraform-test/test.csv\n project: my-project-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTask can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/lakes/{{lake}}/tasks/{{task_id}}`\n\n* `{{project}}/{{location}}/{{lake}}/{{task_id}}`\n\n* `{{location}}/{{lake}}/{{task_id}}`\n\nWhen using the `pulumi import` command, Task can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataplex/task:Task default projects/{{project}}/locations/{{location}}/lakes/{{lake}}/tasks/{{task_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/task:Task default {{project}}/{{location}}/{{lake}}/{{task_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/task:Task default {{location}}/{{lake}}/{{task_id}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -179014,7 +179014,7 @@ } }, "gcp:dataplex/zone:Zone": { - "description": "The Dataplex Zone resource\n\n## Example Usage\n\n### Basic_zone\nA basic example of a dataplex zone\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataplex.Lake(\"basic\", {\n location: \"us-west1\",\n name: \"lake\",\n description: \"Lake for DCL\",\n displayName: \"Lake for DCL\",\n project: \"my-project-name\",\n labels: {\n \"my-lake\": \"exists\",\n },\n});\nconst primary = new gcp.dataplex.Zone(\"primary\", {\n discoverySpec: {\n enabled: false,\n },\n lake: basic.name,\n location: \"us-west1\",\n name: \"zone\",\n resourceSpec: {\n locationType: \"MULTI_REGION\",\n },\n type: \"RAW\",\n description: \"Zone for DCL\",\n displayName: \"Zone for DCL\",\n project: \"my-project-name\",\n labels: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataplex.Lake(\"basic\",\n location=\"us-west1\",\n name=\"lake\",\n description=\"Lake for DCL\",\n display_name=\"Lake for DCL\",\n project=\"my-project-name\",\n labels={\n \"my-lake\": \"exists\",\n })\nprimary = gcp.dataplex.Zone(\"primary\",\n discovery_spec={\n \"enabled\": False,\n },\n lake=basic.name,\n location=\"us-west1\",\n name=\"zone\",\n resource_spec={\n \"locationType\": \"MULTI_REGION\",\n },\n type=\"RAW\",\n description=\"Zone for DCL\",\n display_name=\"Zone for DCL\",\n project=\"my-project-name\",\n labels={})\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.DataPlex.Lake(\"basic\", new()\n {\n Location = \"us-west1\",\n Name = \"lake\",\n Description = \"Lake for DCL\",\n DisplayName = \"Lake for DCL\",\n Project = \"my-project-name\",\n Labels = \n {\n { \"my-lake\", \"exists\" },\n },\n });\n\n var primary = new Gcp.DataPlex.Zone(\"primary\", new()\n {\n DiscoverySpec = new Gcp.DataPlex.Inputs.ZoneDiscoverySpecArgs\n {\n Enabled = false,\n },\n Lake = basic.Name,\n Location = \"us-west1\",\n Name = \"zone\",\n ResourceSpec = new Gcp.DataPlex.Inputs.ZoneResourceSpecArgs\n {\n LocationType = \"MULTI_REGION\",\n },\n Type = \"RAW\",\n Description = \"Zone for DCL\",\n DisplayName = \"Zone for DCL\",\n Project = \"my-project-name\",\n Labels = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataplex\"\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 := dataplex.NewLake(ctx, \"basic\", \u0026dataplex.LakeArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"lake\"),\n\t\t\tDescription: pulumi.String(\"Lake for DCL\"),\n\t\t\tDisplayName: pulumi.String(\"Lake for DCL\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my-lake\": pulumi.String(\"exists\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataplex.NewZone(ctx, \"primary\", \u0026dataplex.ZoneArgs{\n\t\t\tDiscoverySpec: \u0026dataplex.ZoneDiscoverySpecArgs{\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tLake: basic.Name,\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"zone\"),\n\t\t\tResourceSpec: \u0026dataplex.ZoneResourceSpecArgs{\n\t\t\t\tLocationType: pulumi.String(\"MULTI_REGION\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"RAW\"),\n\t\t\tDescription: pulumi.String(\"Zone for DCL\"),\n\t\t\tDisplayName: pulumi.String(\"Zone for DCL\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tLabels: nil,\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.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Zone;\nimport com.pulumi.gcp.dataplex.ZoneArgs;\nimport com.pulumi.gcp.dataplex.inputs.ZoneDiscoverySpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.ZoneResourceSpecArgs;\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 Lake(\"basic\", LakeArgs.builder()\n .location(\"us-west1\")\n .name(\"lake\")\n .description(\"Lake for DCL\")\n .displayName(\"Lake for DCL\")\n .project(\"my-project-name\")\n .labels(Map.of(\"my-lake\", \"exists\"))\n .build());\n\n var primary = new Zone(\"primary\", ZoneArgs.builder()\n .discoverySpec(ZoneDiscoverySpecArgs.builder()\n .enabled(false)\n .build())\n .lake(basic.name())\n .location(\"us-west1\")\n .name(\"zone\")\n .resourceSpec(ZoneResourceSpecArgs.builder()\n .locationType(\"MULTI_REGION\")\n .build())\n .type(\"RAW\")\n .description(\"Zone for DCL\")\n .displayName(\"Zone for DCL\")\n .project(\"my-project-name\")\n .labels()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:dataplex:Zone\n properties:\n discoverySpec:\n enabled: false\n lake: ${basic.name}\n location: us-west1\n name: zone\n resourceSpec:\n locationType: MULTI_REGION\n type: RAW\n description: Zone for DCL\n displayName: Zone for DCL\n project: my-project-name\n labels: {}\n basic:\n type: gcp:dataplex:Lake\n properties:\n location: us-west1\n name: lake\n description: Lake for DCL\n displayName: Lake for DCL\n project: my-project-name\n labels:\n my-lake: exists\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nZone can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/lakes/{{lake}}/zones/{{name}}`\n\n* `{{project}}/{{location}}/{{lake}}/{{name}}`\n\n* `{{location}}/{{lake}}/{{name}}`\n\nWhen using the `pulumi import` command, Zone can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataplex/zone:Zone default projects/{{project}}/locations/{{location}}/lakes/{{lake}}/zones/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/zone:Zone default {{project}}/{{location}}/{{lake}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/zone:Zone default {{location}}/{{lake}}/{{name}}\n```\n\n", + "description": "The Dataplex Zone resource\n\n## Example Usage\n\n### Basic_zone\nA basic example of a dataplex zone\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataplex.Lake(\"basic\", {\n location: \"us-west1\",\n name: \"lake\",\n description: \"Lake for DCL\",\n displayName: \"Lake for DCL\",\n project: \"my-project-name\",\n labels: {\n \"my-lake\": \"exists\",\n },\n});\nconst primary = new gcp.dataplex.Zone(\"primary\", {\n discoverySpec: {\n enabled: false,\n },\n lake: basic.name,\n location: \"us-west1\",\n name: \"zone\",\n resourceSpec: {\n locationType: \"MULTI_REGION\",\n },\n type: \"RAW\",\n description: \"Zone for DCL\",\n displayName: \"Zone for DCL\",\n project: \"my-project-name\",\n labels: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataplex.Lake(\"basic\",\n location=\"us-west1\",\n name=\"lake\",\n description=\"Lake for DCL\",\n display_name=\"Lake for DCL\",\n project=\"my-project-name\",\n labels={\n \"my-lake\": \"exists\",\n })\nprimary = gcp.dataplex.Zone(\"primary\",\n discovery_spec={\n \"enabled\": False,\n },\n lake=basic.name,\n location=\"us-west1\",\n name=\"zone\",\n resource_spec={\n \"location_type\": \"MULTI_REGION\",\n },\n type=\"RAW\",\n description=\"Zone for DCL\",\n display_name=\"Zone for DCL\",\n project=\"my-project-name\",\n labels={})\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.DataPlex.Lake(\"basic\", new()\n {\n Location = \"us-west1\",\n Name = \"lake\",\n Description = \"Lake for DCL\",\n DisplayName = \"Lake for DCL\",\n Project = \"my-project-name\",\n Labels = \n {\n { \"my-lake\", \"exists\" },\n },\n });\n\n var primary = new Gcp.DataPlex.Zone(\"primary\", new()\n {\n DiscoverySpec = new Gcp.DataPlex.Inputs.ZoneDiscoverySpecArgs\n {\n Enabled = false,\n },\n Lake = basic.Name,\n Location = \"us-west1\",\n Name = \"zone\",\n ResourceSpec = new Gcp.DataPlex.Inputs.ZoneResourceSpecArgs\n {\n LocationType = \"MULTI_REGION\",\n },\n Type = \"RAW\",\n Description = \"Zone for DCL\",\n DisplayName = \"Zone for DCL\",\n Project = \"my-project-name\",\n Labels = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataplex\"\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 := dataplex.NewLake(ctx, \"basic\", \u0026dataplex.LakeArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"lake\"),\n\t\t\tDescription: pulumi.String(\"Lake for DCL\"),\n\t\t\tDisplayName: pulumi.String(\"Lake for DCL\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my-lake\": pulumi.String(\"exists\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataplex.NewZone(ctx, \"primary\", \u0026dataplex.ZoneArgs{\n\t\t\tDiscoverySpec: \u0026dataplex.ZoneDiscoverySpecArgs{\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tLake: basic.Name,\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"zone\"),\n\t\t\tResourceSpec: \u0026dataplex.ZoneResourceSpecArgs{\n\t\t\t\tLocationType: pulumi.String(\"MULTI_REGION\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"RAW\"),\n\t\t\tDescription: pulumi.String(\"Zone for DCL\"),\n\t\t\tDisplayName: pulumi.String(\"Zone for DCL\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tLabels: nil,\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.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Zone;\nimport com.pulumi.gcp.dataplex.ZoneArgs;\nimport com.pulumi.gcp.dataplex.inputs.ZoneDiscoverySpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.ZoneResourceSpecArgs;\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 Lake(\"basic\", LakeArgs.builder()\n .location(\"us-west1\")\n .name(\"lake\")\n .description(\"Lake for DCL\")\n .displayName(\"Lake for DCL\")\n .project(\"my-project-name\")\n .labels(Map.of(\"my-lake\", \"exists\"))\n .build());\n\n var primary = new Zone(\"primary\", ZoneArgs.builder()\n .discoverySpec(ZoneDiscoverySpecArgs.builder()\n .enabled(false)\n .build())\n .lake(basic.name())\n .location(\"us-west1\")\n .name(\"zone\")\n .resourceSpec(ZoneResourceSpecArgs.builder()\n .locationType(\"MULTI_REGION\")\n .build())\n .type(\"RAW\")\n .description(\"Zone for DCL\")\n .displayName(\"Zone for DCL\")\n .project(\"my-project-name\")\n .labels()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:dataplex:Zone\n properties:\n discoverySpec:\n enabled: false\n lake: ${basic.name}\n location: us-west1\n name: zone\n resourceSpec:\n locationType: MULTI_REGION\n type: RAW\n description: Zone for DCL\n displayName: Zone for DCL\n project: my-project-name\n labels: {}\n basic:\n type: gcp:dataplex:Lake\n properties:\n location: us-west1\n name: lake\n description: Lake for DCL\n displayName: Lake for DCL\n project: my-project-name\n labels:\n my-lake: exists\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nZone can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/lakes/{{lake}}/zones/{{name}}`\n\n* `{{project}}/{{location}}/{{lake}}/{{name}}`\n\n* `{{location}}/{{lake}}/{{name}}`\n\nWhen using the `pulumi import` command, Zone can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataplex/zone:Zone default projects/{{project}}/locations/{{location}}/lakes/{{lake}}/zones/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/zone:Zone default {{project}}/{{location}}/{{lake}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/zone:Zone default {{location}}/{{lake}}/{{name}}\n```\n\n", "properties": { "assetStatuses": { "type": "array", @@ -179620,7 +179620,7 @@ } }, "gcp:dataproc/autoscalingPolicy:AutoscalingPolicy": { - "description": "Describes an autoscaling policy for Dataproc cluster autoscaler.\n\n\n\n## Example Usage\n\n### Dataproc Autoscaling Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst asp = new gcp.dataproc.AutoscalingPolicy(\"asp\", {\n policyId: \"dataproc-policy\",\n location: \"us-central1\",\n workerConfig: {\n maxInstances: 3,\n },\n basicAlgorithm: {\n yarnConfig: {\n gracefulDecommissionTimeout: \"30s\",\n scaleUpFactor: 0.5,\n scaleDownFactor: 0.5,\n },\n },\n});\nconst basic = new gcp.dataproc.Cluster(\"basic\", {\n name: \"dataproc-policy\",\n region: \"us-central1\",\n clusterConfig: {\n autoscalingConfig: {\n policyUri: asp.name,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nasp = gcp.dataproc.AutoscalingPolicy(\"asp\",\n policy_id=\"dataproc-policy\",\n location=\"us-central1\",\n worker_config={\n \"maxInstances\": 3,\n },\n basic_algorithm={\n \"yarnConfig\": {\n \"gracefulDecommissionTimeout\": \"30s\",\n \"scaleUpFactor\": 0.5,\n \"scaleDownFactor\": 0.5,\n },\n })\nbasic = gcp.dataproc.Cluster(\"basic\",\n name=\"dataproc-policy\",\n region=\"us-central1\",\n cluster_config={\n \"autoscalingConfig\": {\n \"policyUri\": asp.name,\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 asp = new Gcp.Dataproc.AutoscalingPolicy(\"asp\", new()\n {\n PolicyId = \"dataproc-policy\",\n Location = \"us-central1\",\n WorkerConfig = new Gcp.Dataproc.Inputs.AutoscalingPolicyWorkerConfigArgs\n {\n MaxInstances = 3,\n },\n BasicAlgorithm = new Gcp.Dataproc.Inputs.AutoscalingPolicyBasicAlgorithmArgs\n {\n YarnConfig = new Gcp.Dataproc.Inputs.AutoscalingPolicyBasicAlgorithmYarnConfigArgs\n {\n GracefulDecommissionTimeout = \"30s\",\n ScaleUpFactor = 0.5,\n ScaleDownFactor = 0.5,\n },\n },\n });\n\n var basic = new Gcp.Dataproc.Cluster(\"basic\", new()\n {\n Name = \"dataproc-policy\",\n Region = \"us-central1\",\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n AutoscalingConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigAutoscalingConfigArgs\n {\n PolicyUri = asp.Name,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tasp, err := dataproc.NewAutoscalingPolicy(ctx, \"asp\", \u0026dataproc.AutoscalingPolicyArgs{\n\t\t\tPolicyId: pulumi.String(\"dataproc-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tWorkerConfig: \u0026dataproc.AutoscalingPolicyWorkerConfigArgs{\n\t\t\t\tMaxInstances: pulumi.Int(3),\n\t\t\t},\n\t\t\tBasicAlgorithm: \u0026dataproc.AutoscalingPolicyBasicAlgorithmArgs{\n\t\t\t\tYarnConfig: \u0026dataproc.AutoscalingPolicyBasicAlgorithmYarnConfigArgs{\n\t\t\t\t\tGracefulDecommissionTimeout: pulumi.String(\"30s\"),\n\t\t\t\t\tScaleUpFactor: pulumi.Float64(0.5),\n\t\t\t\t\tScaleDownFactor: pulumi.Float64(0.5),\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 = dataproc.NewCluster(ctx, \"basic\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"dataproc-policy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tAutoscalingConfig: \u0026dataproc.ClusterClusterConfigAutoscalingConfigArgs{\n\t\t\t\t\tPolicyUri: asp.Name,\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.dataproc.AutoscalingPolicy;\nimport com.pulumi.gcp.dataproc.AutoscalingPolicyArgs;\nimport com.pulumi.gcp.dataproc.inputs.AutoscalingPolicyWorkerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.AutoscalingPolicyBasicAlgorithmArgs;\nimport com.pulumi.gcp.dataproc.inputs.AutoscalingPolicyBasicAlgorithmYarnConfigArgs;\nimport com.pulumi.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigAutoscalingConfigArgs;\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 asp = new AutoscalingPolicy(\"asp\", AutoscalingPolicyArgs.builder()\n .policyId(\"dataproc-policy\")\n .location(\"us-central1\")\n .workerConfig(AutoscalingPolicyWorkerConfigArgs.builder()\n .maxInstances(3)\n .build())\n .basicAlgorithm(AutoscalingPolicyBasicAlgorithmArgs.builder()\n .yarnConfig(AutoscalingPolicyBasicAlgorithmYarnConfigArgs.builder()\n .gracefulDecommissionTimeout(\"30s\")\n .scaleUpFactor(0.5)\n .scaleDownFactor(0.5)\n .build())\n .build())\n .build());\n\n var basic = new Cluster(\"basic\", ClusterArgs.builder()\n .name(\"dataproc-policy\")\n .region(\"us-central1\")\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .autoscalingConfig(ClusterClusterConfigAutoscalingConfigArgs.builder()\n .policyUri(asp.name())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataproc:Cluster\n properties:\n name: dataproc-policy\n region: us-central1\n clusterConfig:\n autoscalingConfig:\n policyUri: ${asp.name}\n asp:\n type: gcp:dataproc:AutoscalingPolicy\n properties:\n policyId: dataproc-policy\n location: us-central1\n workerConfig:\n maxInstances: 3\n basicAlgorithm:\n yarnConfig:\n gracefulDecommissionTimeout: 30s\n scaleUpFactor: 0.5\n scaleDownFactor: 0.5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAutoscalingPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/autoscalingPolicies/{{policy_id}}`\n\n* `{{project}}/{{location}}/{{policy_id}}`\n\n* `{{location}}/{{policy_id}}`\n\nWhen using the `pulumi import` command, AutoscalingPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataproc/autoscalingPolicy:AutoscalingPolicy default projects/{{project}}/locations/{{location}}/autoscalingPolicies/{{policy_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/autoscalingPolicy:AutoscalingPolicy default {{project}}/{{location}}/{{policy_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/autoscalingPolicy:AutoscalingPolicy default {{location}}/{{policy_id}}\n```\n\n", + "description": "Describes an autoscaling policy for Dataproc cluster autoscaler.\n\n\n\n## Example Usage\n\n### Dataproc Autoscaling Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst asp = new gcp.dataproc.AutoscalingPolicy(\"asp\", {\n policyId: \"dataproc-policy\",\n location: \"us-central1\",\n workerConfig: {\n maxInstances: 3,\n },\n basicAlgorithm: {\n yarnConfig: {\n gracefulDecommissionTimeout: \"30s\",\n scaleUpFactor: 0.5,\n scaleDownFactor: 0.5,\n },\n },\n});\nconst basic = new gcp.dataproc.Cluster(\"basic\", {\n name: \"dataproc-policy\",\n region: \"us-central1\",\n clusterConfig: {\n autoscalingConfig: {\n policyUri: asp.name,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nasp = gcp.dataproc.AutoscalingPolicy(\"asp\",\n policy_id=\"dataproc-policy\",\n location=\"us-central1\",\n worker_config={\n \"max_instances\": 3,\n },\n basic_algorithm={\n \"yarn_config\": {\n \"graceful_decommission_timeout\": \"30s\",\n \"scale_up_factor\": 0.5,\n \"scale_down_factor\": 0.5,\n },\n })\nbasic = gcp.dataproc.Cluster(\"basic\",\n name=\"dataproc-policy\",\n region=\"us-central1\",\n cluster_config={\n \"autoscaling_config\": {\n \"policy_uri\": asp.name,\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 asp = new Gcp.Dataproc.AutoscalingPolicy(\"asp\", new()\n {\n PolicyId = \"dataproc-policy\",\n Location = \"us-central1\",\n WorkerConfig = new Gcp.Dataproc.Inputs.AutoscalingPolicyWorkerConfigArgs\n {\n MaxInstances = 3,\n },\n BasicAlgorithm = new Gcp.Dataproc.Inputs.AutoscalingPolicyBasicAlgorithmArgs\n {\n YarnConfig = new Gcp.Dataproc.Inputs.AutoscalingPolicyBasicAlgorithmYarnConfigArgs\n {\n GracefulDecommissionTimeout = \"30s\",\n ScaleUpFactor = 0.5,\n ScaleDownFactor = 0.5,\n },\n },\n });\n\n var basic = new Gcp.Dataproc.Cluster(\"basic\", new()\n {\n Name = \"dataproc-policy\",\n Region = \"us-central1\",\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n AutoscalingConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigAutoscalingConfigArgs\n {\n PolicyUri = asp.Name,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tasp, err := dataproc.NewAutoscalingPolicy(ctx, \"asp\", \u0026dataproc.AutoscalingPolicyArgs{\n\t\t\tPolicyId: pulumi.String(\"dataproc-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tWorkerConfig: \u0026dataproc.AutoscalingPolicyWorkerConfigArgs{\n\t\t\t\tMaxInstances: pulumi.Int(3),\n\t\t\t},\n\t\t\tBasicAlgorithm: \u0026dataproc.AutoscalingPolicyBasicAlgorithmArgs{\n\t\t\t\tYarnConfig: \u0026dataproc.AutoscalingPolicyBasicAlgorithmYarnConfigArgs{\n\t\t\t\t\tGracefulDecommissionTimeout: pulumi.String(\"30s\"),\n\t\t\t\t\tScaleUpFactor: pulumi.Float64(0.5),\n\t\t\t\t\tScaleDownFactor: pulumi.Float64(0.5),\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 = dataproc.NewCluster(ctx, \"basic\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"dataproc-policy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tAutoscalingConfig: \u0026dataproc.ClusterClusterConfigAutoscalingConfigArgs{\n\t\t\t\t\tPolicyUri: asp.Name,\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.dataproc.AutoscalingPolicy;\nimport com.pulumi.gcp.dataproc.AutoscalingPolicyArgs;\nimport com.pulumi.gcp.dataproc.inputs.AutoscalingPolicyWorkerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.AutoscalingPolicyBasicAlgorithmArgs;\nimport com.pulumi.gcp.dataproc.inputs.AutoscalingPolicyBasicAlgorithmYarnConfigArgs;\nimport com.pulumi.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigAutoscalingConfigArgs;\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 asp = new AutoscalingPolicy(\"asp\", AutoscalingPolicyArgs.builder()\n .policyId(\"dataproc-policy\")\n .location(\"us-central1\")\n .workerConfig(AutoscalingPolicyWorkerConfigArgs.builder()\n .maxInstances(3)\n .build())\n .basicAlgorithm(AutoscalingPolicyBasicAlgorithmArgs.builder()\n .yarnConfig(AutoscalingPolicyBasicAlgorithmYarnConfigArgs.builder()\n .gracefulDecommissionTimeout(\"30s\")\n .scaleUpFactor(0.5)\n .scaleDownFactor(0.5)\n .build())\n .build())\n .build());\n\n var basic = new Cluster(\"basic\", ClusterArgs.builder()\n .name(\"dataproc-policy\")\n .region(\"us-central1\")\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .autoscalingConfig(ClusterClusterConfigAutoscalingConfigArgs.builder()\n .policyUri(asp.name())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataproc:Cluster\n properties:\n name: dataproc-policy\n region: us-central1\n clusterConfig:\n autoscalingConfig:\n policyUri: ${asp.name}\n asp:\n type: gcp:dataproc:AutoscalingPolicy\n properties:\n policyId: dataproc-policy\n location: us-central1\n workerConfig:\n maxInstances: 3\n basicAlgorithm:\n yarnConfig:\n gracefulDecommissionTimeout: 30s\n scaleUpFactor: 0.5\n scaleDownFactor: 0.5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAutoscalingPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/autoscalingPolicies/{{policy_id}}`\n\n* `{{project}}/{{location}}/{{policy_id}}`\n\n* `{{location}}/{{policy_id}}`\n\nWhen using the `pulumi import` command, AutoscalingPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataproc/autoscalingPolicy:AutoscalingPolicy default projects/{{project}}/locations/{{location}}/autoscalingPolicies/{{policy_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/autoscalingPolicy:AutoscalingPolicy default {{project}}/{{location}}/{{policy_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/autoscalingPolicy:AutoscalingPolicy default {{location}}/{{policy_id}}\n```\n\n", "properties": { "basicAlgorithm": { "$ref": "#/types/gcp:dataproc/AutoscalingPolicyBasicAlgorithm:AutoscalingPolicyBasicAlgorithm", @@ -180048,7 +180048,7 @@ } }, "gcp:dataproc/cluster:Cluster": { - "description": "Manages a Cloud Dataproc cluster resource within GCP.\n\n* [API documentation](https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.clusters)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataproc/docs)\n\n\n!\u003e **Warning:** Due to limitations of the API, all arguments except\n`labels`,`cluster_config.worker_config.num_instances` and `cluster_config.preemptible_worker_config.num_instances` are non-updatable. Changing `cluster_config.worker_config.min_num_instances` will be ignored. Changing others will cause recreation of the\nwhole cluster!\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst simplecluster = new gcp.dataproc.Cluster(\"simplecluster\", {\n name: \"simplecluster\",\n region: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsimplecluster = gcp.dataproc.Cluster(\"simplecluster\",\n name=\"simplecluster\",\n region=\"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 simplecluster = new Gcp.Dataproc.Cluster(\"simplecluster\", new()\n {\n Name = \"simplecluster\",\n Region = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewCluster(ctx, \"simplecluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"simplecluster\"),\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\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.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\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 simplecluster = new Cluster(\"simplecluster\", ClusterArgs.builder()\n .name(\"simplecluster\")\n .region(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n simplecluster:\n type: gcp:dataproc:Cluster\n properties:\n name: simplecluster\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Advanced\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst mycluster = new gcp.dataproc.Cluster(\"mycluster\", {\n name: \"mycluster\",\n region: \"us-central1\",\n gracefulDecommissionTimeout: \"120s\",\n labels: {\n foo: \"bar\",\n },\n clusterConfig: {\n stagingBucket: \"dataproc-staging-bucket\",\n masterConfig: {\n numInstances: 1,\n machineType: \"e2-medium\",\n diskConfig: {\n bootDiskType: \"pd-ssd\",\n bootDiskSizeGb: 30,\n },\n },\n workerConfig: {\n numInstances: 2,\n machineType: \"e2-medium\",\n minCpuPlatform: \"Intel Skylake\",\n diskConfig: {\n bootDiskSizeGb: 30,\n numLocalSsds: 1,\n },\n },\n preemptibleWorkerConfig: {\n numInstances: 0,\n },\n softwareConfig: {\n imageVersion: \"2.0.35-debian10\",\n overrideProperties: {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n },\n },\n gceClusterConfig: {\n tags: [\n \"foo\",\n \"bar\",\n ],\n serviceAccount: _default.email,\n serviceAccountScopes: [\"cloud-platform\"],\n },\n initializationActions: [{\n script: \"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\",\n timeoutSec: 500,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nmycluster = gcp.dataproc.Cluster(\"mycluster\",\n name=\"mycluster\",\n region=\"us-central1\",\n graceful_decommission_timeout=\"120s\",\n labels={\n \"foo\": \"bar\",\n },\n cluster_config={\n \"stagingBucket\": \"dataproc-staging-bucket\",\n \"masterConfig\": {\n \"numInstances\": 1,\n \"machineType\": \"e2-medium\",\n \"diskConfig\": {\n \"bootDiskType\": \"pd-ssd\",\n \"bootDiskSizeGb\": 30,\n },\n },\n \"workerConfig\": {\n \"numInstances\": 2,\n \"machineType\": \"e2-medium\",\n \"minCpuPlatform\": \"Intel Skylake\",\n \"diskConfig\": {\n \"bootDiskSizeGb\": 30,\n \"numLocalSsds\": 1,\n },\n },\n \"preemptibleWorkerConfig\": {\n \"numInstances\": 0,\n },\n \"softwareConfig\": {\n \"imageVersion\": \"2.0.35-debian10\",\n \"overrideProperties\": {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n },\n },\n \"gceClusterConfig\": {\n \"tags\": [\n \"foo\",\n \"bar\",\n ],\n \"serviceAccount\": default.email,\n \"serviceAccountScopes\": [\"cloud-platform\"],\n },\n \"initializationActions\": [{\n \"script\": \"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\",\n \"timeoutSec\": 500,\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 @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var mycluster = new Gcp.Dataproc.Cluster(\"mycluster\", new()\n {\n Name = \"mycluster\",\n Region = \"us-central1\",\n GracefulDecommissionTimeout = \"120s\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n StagingBucket = \"dataproc-staging-bucket\",\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n NumInstances = 1,\n MachineType = \"e2-medium\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigDiskConfigArgs\n {\n BootDiskType = \"pd-ssd\",\n BootDiskSizeGb = 30,\n },\n },\n WorkerConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigWorkerConfigArgs\n {\n NumInstances = 2,\n MachineType = \"e2-medium\",\n MinCpuPlatform = \"Intel Skylake\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigWorkerConfigDiskConfigArgs\n {\n BootDiskSizeGb = 30,\n NumLocalSsds = 1,\n },\n },\n PreemptibleWorkerConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigPreemptibleWorkerConfigArgs\n {\n NumInstances = 0,\n },\n SoftwareConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigSoftwareConfigArgs\n {\n ImageVersion = \"2.0.35-debian10\",\n OverrideProperties = \n {\n { \"dataproc:dataproc.allow.zero.workers\", \"true\" },\n },\n },\n GceClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigGceClusterConfigArgs\n {\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n ServiceAccount = @default.Email,\n ServiceAccountScopes = new[]\n {\n \"cloud-platform\",\n },\n },\n InitializationActions = new[]\n {\n new Gcp.Dataproc.Inputs.ClusterClusterConfigInitializationActionArgs\n {\n Script = \"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\",\n TimeoutSec = 500,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataproc.NewCluster(ctx, \"mycluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"mycluster\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tGracefulDecommissionTimeout: pulumi.String(\"120s\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tStagingBucket: pulumi.String(\"dataproc-staging-bucket\"),\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(1),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigMasterConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskType: pulumi.String(\"pd-ssd\"),\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(30),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWorkerConfig: \u0026dataproc.ClusterClusterConfigWorkerConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(2),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\t\tMinCpuPlatform: pulumi.String(\"Intel Skylake\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigWorkerConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(30),\n\t\t\t\t\t\tNumLocalSsds: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPreemptibleWorkerConfig: \u0026dataproc.ClusterClusterConfigPreemptibleWorkerConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t\tSoftwareConfig: \u0026dataproc.ClusterClusterConfigSoftwareConfigArgs{\n\t\t\t\t\tImageVersion: pulumi.String(\"2.0.35-debian10\"),\n\t\t\t\t\tOverrideProperties: pulumi.StringMap{\n\t\t\t\t\t\t\"dataproc:dataproc.allow.zero.workers\": pulumi.String(\"true\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tGceClusterConfig: \u0026dataproc.ClusterClusterConfigGceClusterConfigArgs{\n\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t\t\t},\n\t\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\t\tServiceAccountScopes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloud-platform\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInitializationActions: dataproc.ClusterClusterConfigInitializationActionArray{\n\t\t\t\t\t\u0026dataproc.ClusterClusterConfigInitializationActionArgs{\n\t\t\t\t\t\tScript: pulumi.String(\"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\"),\n\t\t\t\t\t\tTimeoutSec: pulumi.Int(500),\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigWorkerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigWorkerConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigPreemptibleWorkerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigGceClusterConfigArgs;\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 Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var mycluster = new Cluster(\"mycluster\", ClusterArgs.builder()\n .name(\"mycluster\")\n .region(\"us-central1\")\n .gracefulDecommissionTimeout(\"120s\")\n .labels(Map.of(\"foo\", \"bar\"))\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .stagingBucket(\"dataproc-staging-bucket\")\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .numInstances(1)\n .machineType(\"e2-medium\")\n .diskConfig(ClusterClusterConfigMasterConfigDiskConfigArgs.builder()\n .bootDiskType(\"pd-ssd\")\n .bootDiskSizeGb(30)\n .build())\n .build())\n .workerConfig(ClusterClusterConfigWorkerConfigArgs.builder()\n .numInstances(2)\n .machineType(\"e2-medium\")\n .minCpuPlatform(\"Intel Skylake\")\n .diskConfig(ClusterClusterConfigWorkerConfigDiskConfigArgs.builder()\n .bootDiskSizeGb(30)\n .numLocalSsds(1)\n .build())\n .build())\n .preemptibleWorkerConfig(ClusterClusterConfigPreemptibleWorkerConfigArgs.builder()\n .numInstances(0)\n .build())\n .softwareConfig(ClusterClusterConfigSoftwareConfigArgs.builder()\n .imageVersion(\"2.0.35-debian10\")\n .overrideProperties(Map.of(\"dataproc:dataproc.allow.zero.workers\", \"true\"))\n .build())\n .gceClusterConfig(ClusterClusterConfigGceClusterConfigArgs.builder()\n .tags( \n \"foo\",\n \"bar\")\n .serviceAccount(default_.email())\n .serviceAccountScopes(\"cloud-platform\")\n .build())\n .initializationActions(ClusterClusterConfigInitializationActionArgs.builder()\n .script(\"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\")\n .timeoutSec(500)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n mycluster:\n type: gcp:dataproc:Cluster\n properties:\n name: mycluster\n region: us-central1\n gracefulDecommissionTimeout: 120s\n labels:\n foo: bar\n clusterConfig:\n stagingBucket: dataproc-staging-bucket\n masterConfig:\n numInstances: 1\n machineType: e2-medium\n diskConfig:\n bootDiskType: pd-ssd\n bootDiskSizeGb: 30\n workerConfig:\n numInstances: 2\n machineType: e2-medium\n minCpuPlatform: Intel Skylake\n diskConfig:\n bootDiskSizeGb: 30\n numLocalSsds: 1\n preemptibleWorkerConfig:\n numInstances: 0\n softwareConfig:\n imageVersion: 2.0.35-debian10\n overrideProperties:\n dataproc:dataproc.allow.zero.workers: 'true'\n gceClusterConfig:\n tags:\n - foo\n - bar\n serviceAccount: ${default.email}\n serviceAccountScopes:\n - cloud-platform\n initializationActions:\n - script: gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\n timeoutSec: 500\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Using A GPU Accelerator\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst acceleratedCluster = new gcp.dataproc.Cluster(\"accelerated_cluster\", {\n name: \"my-cluster-with-gpu\",\n region: \"us-central1\",\n clusterConfig: {\n gceClusterConfig: {\n zone: \"us-central1-a\",\n },\n masterConfig: {\n accelerators: [{\n acceleratorType: \"nvidia-tesla-k80\",\n acceleratorCount: 1,\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccelerated_cluster = gcp.dataproc.Cluster(\"accelerated_cluster\",\n name=\"my-cluster-with-gpu\",\n region=\"us-central1\",\n cluster_config={\n \"gceClusterConfig\": {\n \"zone\": \"us-central1-a\",\n },\n \"masterConfig\": {\n \"accelerators\": [{\n \"acceleratorType\": \"nvidia-tesla-k80\",\n \"acceleratorCount\": 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 acceleratedCluster = new Gcp.Dataproc.Cluster(\"accelerated_cluster\", new()\n {\n Name = \"my-cluster-with-gpu\",\n Region = \"us-central1\",\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n GceClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigGceClusterConfigArgs\n {\n Zone = \"us-central1-a\",\n },\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n Accelerators = new[]\n {\n new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigAcceleratorArgs\n {\n AcceleratorType = \"nvidia-tesla-k80\",\n AcceleratorCount = 1,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewCluster(ctx, \"accelerated_cluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster-with-gpu\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tGceClusterConfig: \u0026dataproc.ClusterClusterConfigGceClusterConfigArgs{\n\t\t\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\t\t},\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tAccelerators: dataproc.ClusterClusterConfigMasterConfigAcceleratorArray{\n\t\t\t\t\t\t\u0026dataproc.ClusterClusterConfigMasterConfigAcceleratorArgs{\n\t\t\t\t\t\t\tAcceleratorType: pulumi.String(\"nvidia-tesla-k80\"),\n\t\t\t\t\t\t\tAcceleratorCount: pulumi.Int(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.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigGceClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\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 acceleratedCluster = new Cluster(\"acceleratedCluster\", ClusterArgs.builder()\n .name(\"my-cluster-with-gpu\")\n .region(\"us-central1\")\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .gceClusterConfig(ClusterClusterConfigGceClusterConfigArgs.builder()\n .zone(\"us-central1-a\")\n .build())\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .accelerators(ClusterClusterConfigMasterConfigAcceleratorArgs.builder()\n .acceleratorType(\"nvidia-tesla-k80\")\n .acceleratorCount(\"1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n acceleratedCluster:\n type: gcp:dataproc:Cluster\n name: accelerated_cluster\n properties:\n name: my-cluster-with-gpu\n region: us-central1\n clusterConfig:\n gceClusterConfig:\n zone: us-central1-a\n masterConfig:\n accelerators:\n - acceleratorType: nvidia-tesla-k80\n acceleratorCount: '1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "Manages a Cloud Dataproc cluster resource within GCP.\n\n* [API documentation](https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.clusters)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataproc/docs)\n\n\n!\u003e **Warning:** Due to limitations of the API, all arguments except\n`labels`,`cluster_config.worker_config.num_instances` and `cluster_config.preemptible_worker_config.num_instances` are non-updatable. Changing `cluster_config.worker_config.min_num_instances` will be ignored. Changing others will cause recreation of the\nwhole cluster!\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst simplecluster = new gcp.dataproc.Cluster(\"simplecluster\", {\n name: \"simplecluster\",\n region: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsimplecluster = gcp.dataproc.Cluster(\"simplecluster\",\n name=\"simplecluster\",\n region=\"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 simplecluster = new Gcp.Dataproc.Cluster(\"simplecluster\", new()\n {\n Name = \"simplecluster\",\n Region = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewCluster(ctx, \"simplecluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"simplecluster\"),\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\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.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\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 simplecluster = new Cluster(\"simplecluster\", ClusterArgs.builder()\n .name(\"simplecluster\")\n .region(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n simplecluster:\n type: gcp:dataproc:Cluster\n properties:\n name: simplecluster\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Advanced\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst mycluster = new gcp.dataproc.Cluster(\"mycluster\", {\n name: \"mycluster\",\n region: \"us-central1\",\n gracefulDecommissionTimeout: \"120s\",\n labels: {\n foo: \"bar\",\n },\n clusterConfig: {\n stagingBucket: \"dataproc-staging-bucket\",\n masterConfig: {\n numInstances: 1,\n machineType: \"e2-medium\",\n diskConfig: {\n bootDiskType: \"pd-ssd\",\n bootDiskSizeGb: 30,\n },\n },\n workerConfig: {\n numInstances: 2,\n machineType: \"e2-medium\",\n minCpuPlatform: \"Intel Skylake\",\n diskConfig: {\n bootDiskSizeGb: 30,\n numLocalSsds: 1,\n },\n },\n preemptibleWorkerConfig: {\n numInstances: 0,\n },\n softwareConfig: {\n imageVersion: \"2.0.35-debian10\",\n overrideProperties: {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n },\n },\n gceClusterConfig: {\n tags: [\n \"foo\",\n \"bar\",\n ],\n serviceAccount: _default.email,\n serviceAccountScopes: [\"cloud-platform\"],\n },\n initializationActions: [{\n script: \"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\",\n timeoutSec: 500,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nmycluster = gcp.dataproc.Cluster(\"mycluster\",\n name=\"mycluster\",\n region=\"us-central1\",\n graceful_decommission_timeout=\"120s\",\n labels={\n \"foo\": \"bar\",\n },\n cluster_config={\n \"staging_bucket\": \"dataproc-staging-bucket\",\n \"master_config\": {\n \"num_instances\": 1,\n \"machine_type\": \"e2-medium\",\n \"disk_config\": {\n \"boot_disk_type\": \"pd-ssd\",\n \"boot_disk_size_gb\": 30,\n },\n },\n \"worker_config\": {\n \"num_instances\": 2,\n \"machine_type\": \"e2-medium\",\n \"min_cpu_platform\": \"Intel Skylake\",\n \"disk_config\": {\n \"boot_disk_size_gb\": 30,\n \"num_local_ssds\": 1,\n },\n },\n \"preemptible_worker_config\": {\n \"num_instances\": 0,\n },\n \"software_config\": {\n \"image_version\": \"2.0.35-debian10\",\n \"override_properties\": {\n \"dataproc_dataproc_allow_zero_workers\": \"true\",\n },\n },\n \"gce_cluster_config\": {\n \"tags\": [\n \"foo\",\n \"bar\",\n ],\n \"service_account\": default.email,\n \"service_account_scopes\": [\"cloud-platform\"],\n },\n \"initialization_actions\": [{\n \"script\": \"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\",\n \"timeout_sec\": 500,\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 @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var mycluster = new Gcp.Dataproc.Cluster(\"mycluster\", new()\n {\n Name = \"mycluster\",\n Region = \"us-central1\",\n GracefulDecommissionTimeout = \"120s\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n StagingBucket = \"dataproc-staging-bucket\",\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n NumInstances = 1,\n MachineType = \"e2-medium\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigDiskConfigArgs\n {\n BootDiskType = \"pd-ssd\",\n BootDiskSizeGb = 30,\n },\n },\n WorkerConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigWorkerConfigArgs\n {\n NumInstances = 2,\n MachineType = \"e2-medium\",\n MinCpuPlatform = \"Intel Skylake\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigWorkerConfigDiskConfigArgs\n {\n BootDiskSizeGb = 30,\n NumLocalSsds = 1,\n },\n },\n PreemptibleWorkerConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigPreemptibleWorkerConfigArgs\n {\n NumInstances = 0,\n },\n SoftwareConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigSoftwareConfigArgs\n {\n ImageVersion = \"2.0.35-debian10\",\n OverrideProperties = \n {\n { \"dataproc:dataproc.allow.zero.workers\", \"true\" },\n },\n },\n GceClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigGceClusterConfigArgs\n {\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n ServiceAccount = @default.Email,\n ServiceAccountScopes = new[]\n {\n \"cloud-platform\",\n },\n },\n InitializationActions = new[]\n {\n new Gcp.Dataproc.Inputs.ClusterClusterConfigInitializationActionArgs\n {\n Script = \"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\",\n TimeoutSec = 500,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataproc.NewCluster(ctx, \"mycluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"mycluster\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tGracefulDecommissionTimeout: pulumi.String(\"120s\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tStagingBucket: pulumi.String(\"dataproc-staging-bucket\"),\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(1),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigMasterConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskType: pulumi.String(\"pd-ssd\"),\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(30),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWorkerConfig: \u0026dataproc.ClusterClusterConfigWorkerConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(2),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\t\tMinCpuPlatform: pulumi.String(\"Intel Skylake\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigWorkerConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(30),\n\t\t\t\t\t\tNumLocalSsds: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPreemptibleWorkerConfig: \u0026dataproc.ClusterClusterConfigPreemptibleWorkerConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t\tSoftwareConfig: \u0026dataproc.ClusterClusterConfigSoftwareConfigArgs{\n\t\t\t\t\tImageVersion: pulumi.String(\"2.0.35-debian10\"),\n\t\t\t\t\tOverrideProperties: pulumi.StringMap{\n\t\t\t\t\t\t\"dataproc:dataproc.allow.zero.workers\": pulumi.String(\"true\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tGceClusterConfig: \u0026dataproc.ClusterClusterConfigGceClusterConfigArgs{\n\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t\t\t},\n\t\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\t\tServiceAccountScopes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloud-platform\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInitializationActions: dataproc.ClusterClusterConfigInitializationActionArray{\n\t\t\t\t\t\u0026dataproc.ClusterClusterConfigInitializationActionArgs{\n\t\t\t\t\t\tScript: pulumi.String(\"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\"),\n\t\t\t\t\t\tTimeoutSec: pulumi.Int(500),\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigWorkerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigWorkerConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigPreemptibleWorkerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigGceClusterConfigArgs;\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 Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var mycluster = new Cluster(\"mycluster\", ClusterArgs.builder()\n .name(\"mycluster\")\n .region(\"us-central1\")\n .gracefulDecommissionTimeout(\"120s\")\n .labels(Map.of(\"foo\", \"bar\"))\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .stagingBucket(\"dataproc-staging-bucket\")\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .numInstances(1)\n .machineType(\"e2-medium\")\n .diskConfig(ClusterClusterConfigMasterConfigDiskConfigArgs.builder()\n .bootDiskType(\"pd-ssd\")\n .bootDiskSizeGb(30)\n .build())\n .build())\n .workerConfig(ClusterClusterConfigWorkerConfigArgs.builder()\n .numInstances(2)\n .machineType(\"e2-medium\")\n .minCpuPlatform(\"Intel Skylake\")\n .diskConfig(ClusterClusterConfigWorkerConfigDiskConfigArgs.builder()\n .bootDiskSizeGb(30)\n .numLocalSsds(1)\n .build())\n .build())\n .preemptibleWorkerConfig(ClusterClusterConfigPreemptibleWorkerConfigArgs.builder()\n .numInstances(0)\n .build())\n .softwareConfig(ClusterClusterConfigSoftwareConfigArgs.builder()\n .imageVersion(\"2.0.35-debian10\")\n .overrideProperties(Map.of(\"dataproc:dataproc.allow.zero.workers\", \"true\"))\n .build())\n .gceClusterConfig(ClusterClusterConfigGceClusterConfigArgs.builder()\n .tags( \n \"foo\",\n \"bar\")\n .serviceAccount(default_.email())\n .serviceAccountScopes(\"cloud-platform\")\n .build())\n .initializationActions(ClusterClusterConfigInitializationActionArgs.builder()\n .script(\"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\")\n .timeoutSec(500)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n mycluster:\n type: gcp:dataproc:Cluster\n properties:\n name: mycluster\n region: us-central1\n gracefulDecommissionTimeout: 120s\n labels:\n foo: bar\n clusterConfig:\n stagingBucket: dataproc-staging-bucket\n masterConfig:\n numInstances: 1\n machineType: e2-medium\n diskConfig:\n bootDiskType: pd-ssd\n bootDiskSizeGb: 30\n workerConfig:\n numInstances: 2\n machineType: e2-medium\n minCpuPlatform: Intel Skylake\n diskConfig:\n bootDiskSizeGb: 30\n numLocalSsds: 1\n preemptibleWorkerConfig:\n numInstances: 0\n softwareConfig:\n imageVersion: 2.0.35-debian10\n overrideProperties:\n dataproc:dataproc.allow.zero.workers: 'true'\n gceClusterConfig:\n tags:\n - foo\n - bar\n serviceAccount: ${default.email}\n serviceAccountScopes:\n - cloud-platform\n initializationActions:\n - script: gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\n timeoutSec: 500\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Using A GPU Accelerator\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst acceleratedCluster = new gcp.dataproc.Cluster(\"accelerated_cluster\", {\n name: \"my-cluster-with-gpu\",\n region: \"us-central1\",\n clusterConfig: {\n gceClusterConfig: {\n zone: \"us-central1-a\",\n },\n masterConfig: {\n accelerators: [{\n acceleratorType: \"nvidia-tesla-k80\",\n acceleratorCount: 1,\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccelerated_cluster = gcp.dataproc.Cluster(\"accelerated_cluster\",\n name=\"my-cluster-with-gpu\",\n region=\"us-central1\",\n cluster_config={\n \"gce_cluster_config\": {\n \"zone\": \"us-central1-a\",\n },\n \"master_config\": {\n \"accelerators\": [{\n \"accelerator_type\": \"nvidia-tesla-k80\",\n \"accelerator_count\": 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 acceleratedCluster = new Gcp.Dataproc.Cluster(\"accelerated_cluster\", new()\n {\n Name = \"my-cluster-with-gpu\",\n Region = \"us-central1\",\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n GceClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigGceClusterConfigArgs\n {\n Zone = \"us-central1-a\",\n },\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n Accelerators = new[]\n {\n new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigAcceleratorArgs\n {\n AcceleratorType = \"nvidia-tesla-k80\",\n AcceleratorCount = 1,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewCluster(ctx, \"accelerated_cluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster-with-gpu\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tGceClusterConfig: \u0026dataproc.ClusterClusterConfigGceClusterConfigArgs{\n\t\t\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\t\t},\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tAccelerators: dataproc.ClusterClusterConfigMasterConfigAcceleratorArray{\n\t\t\t\t\t\t\u0026dataproc.ClusterClusterConfigMasterConfigAcceleratorArgs{\n\t\t\t\t\t\t\tAcceleratorType: pulumi.String(\"nvidia-tesla-k80\"),\n\t\t\t\t\t\t\tAcceleratorCount: pulumi.Int(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.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigGceClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\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 acceleratedCluster = new Cluster(\"acceleratedCluster\", ClusterArgs.builder()\n .name(\"my-cluster-with-gpu\")\n .region(\"us-central1\")\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .gceClusterConfig(ClusterClusterConfigGceClusterConfigArgs.builder()\n .zone(\"us-central1-a\")\n .build())\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .accelerators(ClusterClusterConfigMasterConfigAcceleratorArgs.builder()\n .acceleratorType(\"nvidia-tesla-k80\")\n .acceleratorCount(\"1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n acceleratedCluster:\n type: gcp:dataproc:Cluster\n name: accelerated_cluster\n properties:\n name: my-cluster-with-gpu\n region: us-central1\n clusterConfig:\n gceClusterConfig:\n zone: us-central1-a\n masterConfig:\n accelerators:\n - acceleratorType: nvidia-tesla-k80\n acceleratorCount: '1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "clusterConfig": { "$ref": "#/types/gcp:dataproc/ClusterClusterConfig:ClusterClusterConfig", @@ -180520,7 +180520,7 @@ } }, "gcp:dataproc/job:Job": { - "description": "Manages a job resource within a Dataproc cluster within GCE. For more information see\n[the official dataproc documentation](https://cloud.google.com/dataproc/).\n\n!\u003e **Note:** This resource does not support 'update' and changing any attributes will cause the resource to be recreated.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst mycluster = new gcp.dataproc.Cluster(\"mycluster\", {\n name: \"dproc-cluster-unique-name\",\n region: \"us-central1\",\n});\n// Submit an example spark job to a dataproc cluster\nconst spark = new gcp.dataproc.Job(\"spark\", {\n region: mycluster.region,\n forceDelete: true,\n placement: {\n clusterName: mycluster.name,\n },\n sparkConfig: {\n mainClass: \"org.apache.spark.examples.SparkPi\",\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n args: [\"1000\"],\n properties: {\n \"spark.logConf\": \"true\",\n },\n loggingConfig: {\n driverLogLevels: {\n root: \"INFO\",\n },\n },\n },\n});\n// Submit an example pyspark job to a dataproc cluster\nconst pyspark = new gcp.dataproc.Job(\"pyspark\", {\n region: mycluster.region,\n forceDelete: true,\n placement: {\n clusterName: mycluster.name,\n },\n pysparkConfig: {\n mainPythonFileUri: \"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\",\n properties: {\n \"spark.logConf\": \"true\",\n },\n },\n});\nexport const sparkStatus = spark.statuses.apply(statuses =\u003e statuses[0].state);\nexport const pysparkStatus = pyspark.statuses.apply(statuses =\u003e statuses[0].state);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmycluster = gcp.dataproc.Cluster(\"mycluster\",\n name=\"dproc-cluster-unique-name\",\n region=\"us-central1\")\n# Submit an example spark job to a dataproc cluster\nspark = gcp.dataproc.Job(\"spark\",\n region=mycluster.region,\n force_delete=True,\n placement={\n \"clusterName\": mycluster.name,\n },\n spark_config={\n \"mainClass\": \"org.apache.spark.examples.SparkPi\",\n \"jarFileUris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n \"args\": [\"1000\"],\n \"properties\": {\n \"spark.logConf\": \"true\",\n },\n \"loggingConfig\": {\n \"driverLogLevels\": {\n \"root\": \"INFO\",\n },\n },\n })\n# Submit an example pyspark job to a dataproc cluster\npyspark = gcp.dataproc.Job(\"pyspark\",\n region=mycluster.region,\n force_delete=True,\n placement={\n \"clusterName\": mycluster.name,\n },\n pyspark_config={\n \"mainPythonFileUri\": \"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\",\n \"properties\": {\n \"spark.logConf\": \"true\",\n },\n })\npulumi.export(\"sparkStatus\", spark.statuses[0].state)\npulumi.export(\"pysparkStatus\", pyspark.statuses[0].state)\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 mycluster = new Gcp.Dataproc.Cluster(\"mycluster\", new()\n {\n Name = \"dproc-cluster-unique-name\",\n Region = \"us-central1\",\n });\n\n // Submit an example spark job to a dataproc cluster\n var spark = new Gcp.Dataproc.Job(\"spark\", new()\n {\n Region = mycluster.Region,\n ForceDelete = true,\n Placement = new Gcp.Dataproc.Inputs.JobPlacementArgs\n {\n ClusterName = mycluster.Name,\n },\n SparkConfig = new Gcp.Dataproc.Inputs.JobSparkConfigArgs\n {\n MainClass = \"org.apache.spark.examples.SparkPi\",\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n Args = new[]\n {\n \"1000\",\n },\n Properties = \n {\n { \"spark.logConf\", \"true\" },\n },\n LoggingConfig = new Gcp.Dataproc.Inputs.JobSparkConfigLoggingConfigArgs\n {\n DriverLogLevels = \n {\n { \"root\", \"INFO\" },\n },\n },\n },\n });\n\n // Submit an example pyspark job to a dataproc cluster\n var pyspark = new Gcp.Dataproc.Job(\"pyspark\", new()\n {\n Region = mycluster.Region,\n ForceDelete = true,\n Placement = new Gcp.Dataproc.Inputs.JobPlacementArgs\n {\n ClusterName = mycluster.Name,\n },\n PysparkConfig = new Gcp.Dataproc.Inputs.JobPysparkConfigArgs\n {\n MainPythonFileUri = \"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\",\n Properties = \n {\n { \"spark.logConf\", \"true\" },\n },\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"sparkStatus\"] = spark.Statuses.Apply(statuses =\u003e statuses[0].State),\n [\"pysparkStatus\"] = pyspark.Statuses.Apply(statuses =\u003e statuses[0].State),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmycluster, err := dataproc.NewCluster(ctx, \"mycluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"dproc-cluster-unique-name\"),\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\t// Submit an example spark job to a dataproc cluster\n\t\tspark, err := dataproc.NewJob(ctx, \"spark\", \u0026dataproc.JobArgs{\n\t\t\tRegion: mycluster.Region,\n\t\t\tForceDelete: pulumi.Bool(true),\n\t\t\tPlacement: \u0026dataproc.JobPlacementArgs{\n\t\t\t\tClusterName: mycluster.Name,\n\t\t\t},\n\t\t\tSparkConfig: \u0026dataproc.JobSparkConfigArgs{\n\t\t\t\tMainClass: pulumi.String(\"org.apache.spark.examples.SparkPi\"),\n\t\t\t\tJarFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"),\n\t\t\t\t},\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"1000\"),\n\t\t\t\t},\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.logConf\": pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t\tLoggingConfig: \u0026dataproc.JobSparkConfigLoggingConfigArgs{\n\t\t\t\t\tDriverLogLevels: pulumi.StringMap{\n\t\t\t\t\t\t\"root\": pulumi.String(\"INFO\"),\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// Submit an example pyspark job to a dataproc cluster\n\t\tpyspark, err := dataproc.NewJob(ctx, \"pyspark\", \u0026dataproc.JobArgs{\n\t\t\tRegion: mycluster.Region,\n\t\t\tForceDelete: pulumi.Bool(true),\n\t\t\tPlacement: \u0026dataproc.JobPlacementArgs{\n\t\t\t\tClusterName: mycluster.Name,\n\t\t\t},\n\t\t\tPysparkConfig: \u0026dataproc.JobPysparkConfigArgs{\n\t\t\t\tMainPythonFileUri: pulumi.String(\"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\"),\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.logConf\": pulumi.String(\"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\tctx.Export(\"sparkStatus\", spark.Statuses.ApplyT(func(statuses []dataproc.JobStatus) (*string, error) {\n\t\t\treturn \u0026statuses[0].State, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"pysparkStatus\", pyspark.Statuses.ApplyT(func(statuses []dataproc.JobStatus) (*string, error) {\n\t\t\treturn \u0026statuses[0].State, nil\n\t\t}).(pulumi.StringPtrOutput))\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.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.Job;\nimport com.pulumi.gcp.dataproc.JobArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobPlacementArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobSparkConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobSparkConfigLoggingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobPysparkConfigArgs;\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 mycluster = new Cluster(\"mycluster\", ClusterArgs.builder()\n .name(\"dproc-cluster-unique-name\")\n .region(\"us-central1\")\n .build());\n\n // Submit an example spark job to a dataproc cluster\n var spark = new Job(\"spark\", JobArgs.builder()\n .region(mycluster.region())\n .forceDelete(true)\n .placement(JobPlacementArgs.builder()\n .clusterName(mycluster.name())\n .build())\n .sparkConfig(JobSparkConfigArgs.builder()\n .mainClass(\"org.apache.spark.examples.SparkPi\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .args(\"1000\")\n .properties(Map.of(\"spark.logConf\", \"true\"))\n .loggingConfig(JobSparkConfigLoggingConfigArgs.builder()\n .driverLogLevels(Map.of(\"root\", \"INFO\"))\n .build())\n .build())\n .build());\n\n // Submit an example pyspark job to a dataproc cluster\n var pyspark = new Job(\"pyspark\", JobArgs.builder()\n .region(mycluster.region())\n .forceDelete(true)\n .placement(JobPlacementArgs.builder()\n .clusterName(mycluster.name())\n .build())\n .pysparkConfig(JobPysparkConfigArgs.builder()\n .mainPythonFileUri(\"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\")\n .properties(Map.of(\"spark.logConf\", \"true\"))\n .build())\n .build());\n\n ctx.export(\"sparkStatus\", spark.statuses().applyValue(statuses -\u003e statuses[0].state()));\n ctx.export(\"pysparkStatus\", pyspark.statuses().applyValue(statuses -\u003e statuses[0].state()));\n }\n}\n```\n```yaml\nresources:\n mycluster:\n type: gcp:dataproc:Cluster\n properties:\n name: dproc-cluster-unique-name\n region: us-central1\n # Submit an example spark job to a dataproc cluster\n spark:\n type: gcp:dataproc:Job\n properties:\n region: ${mycluster.region}\n forceDelete: true\n placement:\n clusterName: ${mycluster.name}\n sparkConfig:\n mainClass: org.apache.spark.examples.SparkPi\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n args:\n - '1000'\n properties:\n spark.logConf: 'true'\n loggingConfig:\n driverLogLevels:\n root: INFO\n # Submit an example pyspark job to a dataproc cluster\n pyspark:\n type: gcp:dataproc:Job\n properties:\n region: ${mycluster.region}\n forceDelete: true\n placement:\n clusterName: ${mycluster.name}\n pysparkConfig:\n mainPythonFileUri: gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\n properties:\n spark.logConf: 'true'\noutputs:\n # Check out current state of the jobs\n sparkStatus: ${spark.statuses[0].state}\n pysparkStatus: ${pyspark.statuses[0].state}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "Manages a job resource within a Dataproc cluster within GCE. For more information see\n[the official dataproc documentation](https://cloud.google.com/dataproc/).\n\n!\u003e **Note:** This resource does not support 'update' and changing any attributes will cause the resource to be recreated.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst mycluster = new gcp.dataproc.Cluster(\"mycluster\", {\n name: \"dproc-cluster-unique-name\",\n region: \"us-central1\",\n});\n// Submit an example spark job to a dataproc cluster\nconst spark = new gcp.dataproc.Job(\"spark\", {\n region: mycluster.region,\n forceDelete: true,\n placement: {\n clusterName: mycluster.name,\n },\n sparkConfig: {\n mainClass: \"org.apache.spark.examples.SparkPi\",\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n args: [\"1000\"],\n properties: {\n \"spark.logConf\": \"true\",\n },\n loggingConfig: {\n driverLogLevels: {\n root: \"INFO\",\n },\n },\n },\n});\n// Submit an example pyspark job to a dataproc cluster\nconst pyspark = new gcp.dataproc.Job(\"pyspark\", {\n region: mycluster.region,\n forceDelete: true,\n placement: {\n clusterName: mycluster.name,\n },\n pysparkConfig: {\n mainPythonFileUri: \"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\",\n properties: {\n \"spark.logConf\": \"true\",\n },\n },\n});\nexport const sparkStatus = spark.statuses.apply(statuses =\u003e statuses[0].state);\nexport const pysparkStatus = pyspark.statuses.apply(statuses =\u003e statuses[0].state);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmycluster = gcp.dataproc.Cluster(\"mycluster\",\n name=\"dproc-cluster-unique-name\",\n region=\"us-central1\")\n# Submit an example spark job to a dataproc cluster\nspark = gcp.dataproc.Job(\"spark\",\n region=mycluster.region,\n force_delete=True,\n placement={\n \"cluster_name\": mycluster.name,\n },\n spark_config={\n \"main_class\": \"org.apache.spark.examples.SparkPi\",\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n \"args\": [\"1000\"],\n \"properties\": {\n \"spark_log_conf\": \"true\",\n },\n \"logging_config\": {\n \"driver_log_levels\": {\n \"root\": \"INFO\",\n },\n },\n })\n# Submit an example pyspark job to a dataproc cluster\npyspark = gcp.dataproc.Job(\"pyspark\",\n region=mycluster.region,\n force_delete=True,\n placement={\n \"cluster_name\": mycluster.name,\n },\n pyspark_config={\n \"main_python_file_uri\": \"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\",\n \"properties\": {\n \"spark_log_conf\": \"true\",\n },\n })\npulumi.export(\"sparkStatus\", spark.statuses[0].state)\npulumi.export(\"pysparkStatus\", pyspark.statuses[0].state)\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 mycluster = new Gcp.Dataproc.Cluster(\"mycluster\", new()\n {\n Name = \"dproc-cluster-unique-name\",\n Region = \"us-central1\",\n });\n\n // Submit an example spark job to a dataproc cluster\n var spark = new Gcp.Dataproc.Job(\"spark\", new()\n {\n Region = mycluster.Region,\n ForceDelete = true,\n Placement = new Gcp.Dataproc.Inputs.JobPlacementArgs\n {\n ClusterName = mycluster.Name,\n },\n SparkConfig = new Gcp.Dataproc.Inputs.JobSparkConfigArgs\n {\n MainClass = \"org.apache.spark.examples.SparkPi\",\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n Args = new[]\n {\n \"1000\",\n },\n Properties = \n {\n { \"spark.logConf\", \"true\" },\n },\n LoggingConfig = new Gcp.Dataproc.Inputs.JobSparkConfigLoggingConfigArgs\n {\n DriverLogLevels = \n {\n { \"root\", \"INFO\" },\n },\n },\n },\n });\n\n // Submit an example pyspark job to a dataproc cluster\n var pyspark = new Gcp.Dataproc.Job(\"pyspark\", new()\n {\n Region = mycluster.Region,\n ForceDelete = true,\n Placement = new Gcp.Dataproc.Inputs.JobPlacementArgs\n {\n ClusterName = mycluster.Name,\n },\n PysparkConfig = new Gcp.Dataproc.Inputs.JobPysparkConfigArgs\n {\n MainPythonFileUri = \"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\",\n Properties = \n {\n { \"spark.logConf\", \"true\" },\n },\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"sparkStatus\"] = spark.Statuses.Apply(statuses =\u003e statuses[0].State),\n [\"pysparkStatus\"] = pyspark.Statuses.Apply(statuses =\u003e statuses[0].State),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmycluster, err := dataproc.NewCluster(ctx, \"mycluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"dproc-cluster-unique-name\"),\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\t// Submit an example spark job to a dataproc cluster\n\t\tspark, err := dataproc.NewJob(ctx, \"spark\", \u0026dataproc.JobArgs{\n\t\t\tRegion: mycluster.Region,\n\t\t\tForceDelete: pulumi.Bool(true),\n\t\t\tPlacement: \u0026dataproc.JobPlacementArgs{\n\t\t\t\tClusterName: mycluster.Name,\n\t\t\t},\n\t\t\tSparkConfig: \u0026dataproc.JobSparkConfigArgs{\n\t\t\t\tMainClass: pulumi.String(\"org.apache.spark.examples.SparkPi\"),\n\t\t\t\tJarFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"),\n\t\t\t\t},\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"1000\"),\n\t\t\t\t},\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.logConf\": pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t\tLoggingConfig: \u0026dataproc.JobSparkConfigLoggingConfigArgs{\n\t\t\t\t\tDriverLogLevels: pulumi.StringMap{\n\t\t\t\t\t\t\"root\": pulumi.String(\"INFO\"),\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// Submit an example pyspark job to a dataproc cluster\n\t\tpyspark, err := dataproc.NewJob(ctx, \"pyspark\", \u0026dataproc.JobArgs{\n\t\t\tRegion: mycluster.Region,\n\t\t\tForceDelete: pulumi.Bool(true),\n\t\t\tPlacement: \u0026dataproc.JobPlacementArgs{\n\t\t\t\tClusterName: mycluster.Name,\n\t\t\t},\n\t\t\tPysparkConfig: \u0026dataproc.JobPysparkConfigArgs{\n\t\t\t\tMainPythonFileUri: pulumi.String(\"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\"),\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.logConf\": pulumi.String(\"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\tctx.Export(\"sparkStatus\", spark.Statuses.ApplyT(func(statuses []dataproc.JobStatus) (*string, error) {\n\t\t\treturn \u0026statuses[0].State, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"pysparkStatus\", pyspark.Statuses.ApplyT(func(statuses []dataproc.JobStatus) (*string, error) {\n\t\t\treturn \u0026statuses[0].State, nil\n\t\t}).(pulumi.StringPtrOutput))\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.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.Job;\nimport com.pulumi.gcp.dataproc.JobArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobPlacementArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobSparkConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobSparkConfigLoggingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobPysparkConfigArgs;\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 mycluster = new Cluster(\"mycluster\", ClusterArgs.builder()\n .name(\"dproc-cluster-unique-name\")\n .region(\"us-central1\")\n .build());\n\n // Submit an example spark job to a dataproc cluster\n var spark = new Job(\"spark\", JobArgs.builder()\n .region(mycluster.region())\n .forceDelete(true)\n .placement(JobPlacementArgs.builder()\n .clusterName(mycluster.name())\n .build())\n .sparkConfig(JobSparkConfigArgs.builder()\n .mainClass(\"org.apache.spark.examples.SparkPi\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .args(\"1000\")\n .properties(Map.of(\"spark.logConf\", \"true\"))\n .loggingConfig(JobSparkConfigLoggingConfigArgs.builder()\n .driverLogLevels(Map.of(\"root\", \"INFO\"))\n .build())\n .build())\n .build());\n\n // Submit an example pyspark job to a dataproc cluster\n var pyspark = new Job(\"pyspark\", JobArgs.builder()\n .region(mycluster.region())\n .forceDelete(true)\n .placement(JobPlacementArgs.builder()\n .clusterName(mycluster.name())\n .build())\n .pysparkConfig(JobPysparkConfigArgs.builder()\n .mainPythonFileUri(\"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\")\n .properties(Map.of(\"spark.logConf\", \"true\"))\n .build())\n .build());\n\n ctx.export(\"sparkStatus\", spark.statuses().applyValue(statuses -\u003e statuses[0].state()));\n ctx.export(\"pysparkStatus\", pyspark.statuses().applyValue(statuses -\u003e statuses[0].state()));\n }\n}\n```\n```yaml\nresources:\n mycluster:\n type: gcp:dataproc:Cluster\n properties:\n name: dproc-cluster-unique-name\n region: us-central1\n # Submit an example spark job to a dataproc cluster\n spark:\n type: gcp:dataproc:Job\n properties:\n region: ${mycluster.region}\n forceDelete: true\n placement:\n clusterName: ${mycluster.name}\n sparkConfig:\n mainClass: org.apache.spark.examples.SparkPi\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n args:\n - '1000'\n properties:\n spark.logConf: 'true'\n loggingConfig:\n driverLogLevels:\n root: INFO\n # Submit an example pyspark job to a dataproc cluster\n pyspark:\n type: gcp:dataproc:Job\n properties:\n region: ${mycluster.region}\n forceDelete: true\n placement:\n clusterName: ${mycluster.name}\n pysparkConfig:\n mainPythonFileUri: gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\n properties:\n spark.logConf: 'true'\noutputs:\n # Check out current state of the jobs\n sparkStatus: ${spark.statuses[0].state}\n pysparkStatus: ${pyspark.statuses[0].state}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "driverControlsFilesUri": { "type": "string", @@ -181120,7 +181120,7 @@ } }, "gcp:dataproc/metastoreFederation:MetastoreFederation": { - "description": "A managed metastore federation.\n\n\n\n## Example Usage\n\n### Dataproc Metastore Federation Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultMetastoreService = new gcp.dataproc.MetastoreService(\"default\", {\n serviceId: \"\",\n location: \"us-central1\",\n tier: \"DEVELOPER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n endpointProtocol: \"GRPC\",\n },\n});\nconst _default = new gcp.dataproc.MetastoreFederation(\"default\", {\n location: \"us-central1\",\n federationId: \"\",\n version: \"3.1.2\",\n backendMetastores: [{\n rank: \"1\",\n name: defaultMetastoreService.id,\n metastoreType: \"DATAPROC_METASTORE\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_metastore_service = gcp.dataproc.MetastoreService(\"default\",\n service_id=\"\",\n location=\"us-central1\",\n tier=\"DEVELOPER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n \"endpointProtocol\": \"GRPC\",\n })\ndefault = gcp.dataproc.MetastoreFederation(\"default\",\n location=\"us-central1\",\n federation_id=\"\",\n version=\"3.1.2\",\n backend_metastores=[{\n \"rank\": \"1\",\n \"name\": default_metastore_service.id,\n \"metastoreType\": \"DATAPROC_METASTORE\",\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 defaultMetastoreService = new Gcp.Dataproc.MetastoreService(\"default\", new()\n {\n ServiceId = \"\",\n Location = \"us-central1\",\n Tier = \"DEVELOPER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n EndpointProtocol = \"GRPC\",\n },\n });\n\n var @default = new Gcp.Dataproc.MetastoreFederation(\"default\", new()\n {\n Location = \"us-central1\",\n FederationId = \"\",\n Version = \"3.1.2\",\n BackendMetastores = new[]\n {\n new Gcp.Dataproc.Inputs.MetastoreFederationBackendMetastoreArgs\n {\n Rank = \"1\",\n Name = defaultMetastoreService.Id,\n MetastoreType = \"DATAPROC_METASTORE\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultMetastoreService, err := dataproc.NewMetastoreService(ctx, \"default\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVELOPER\"),\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\t\tEndpointProtocol: pulumi.String(\"GRPC\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataproc.NewMetastoreFederation(ctx, \"default\", \u0026dataproc.MetastoreFederationArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFederationId: pulumi.String(\"\"),\n\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\tBackendMetastores: dataproc.MetastoreFederationBackendMetastoreArray{\n\t\t\t\t\u0026dataproc.MetastoreFederationBackendMetastoreArgs{\n\t\t\t\t\tRank: pulumi.String(\"1\"),\n\t\t\t\t\tName: defaultMetastoreService.ID(),\n\t\t\t\t\tMetastoreType: pulumi.String(\"DATAPROC_METASTORE\"),\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.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.MetastoreFederation;\nimport com.pulumi.gcp.dataproc.MetastoreFederationArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreFederationBackendMetastoreArgs;\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 defaultMetastoreService = new MetastoreService(\"defaultMetastoreService\", MetastoreServiceArgs.builder()\n .serviceId(\"\")\n .location(\"us-central1\")\n .tier(\"DEVELOPER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .endpointProtocol(\"GRPC\")\n .build())\n .build());\n\n var default_ = new MetastoreFederation(\"default\", MetastoreFederationArgs.builder()\n .location(\"us-central1\")\n .federationId(\"\")\n .version(\"3.1.2\")\n .backendMetastores(MetastoreFederationBackendMetastoreArgs.builder()\n .rank(\"1\")\n .name(defaultMetastoreService.id())\n .metastoreType(\"DATAPROC_METASTORE\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:dataproc:MetastoreFederation\n properties:\n location: us-central1\n federationId:\n version: 3.1.2\n backendMetastores:\n - rank: '1'\n name: ${defaultMetastoreService.id}\n metastoreType: DATAPROC_METASTORE\n defaultMetastoreService:\n type: gcp:dataproc:MetastoreService\n name: default\n properties:\n serviceId:\n location: us-central1\n tier: DEVELOPER\n hiveMetastoreConfig:\n version: 3.1.2\n endpointProtocol: GRPC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Federation Bigquery\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultMetastoreService = new gcp.dataproc.MetastoreService(\"default\", {\n serviceId: \"\",\n location: \"us-central1\",\n tier: \"DEVELOPER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n endpointProtocol: \"GRPC\",\n },\n});\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.dataproc.MetastoreFederation(\"default\", {\n location: \"us-central1\",\n federationId: \"\",\n version: \"3.1.2\",\n backendMetastores: [\n {\n rank: \"2\",\n name: project.then(project =\u003e project.id),\n metastoreType: \"BIGQUERY\",\n },\n {\n rank: \"1\",\n name: defaultMetastoreService.id,\n metastoreType: \"DATAPROC_METASTORE\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_metastore_service = gcp.dataproc.MetastoreService(\"default\",\n service_id=\"\",\n location=\"us-central1\",\n tier=\"DEVELOPER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n \"endpointProtocol\": \"GRPC\",\n })\nproject = gcp.organizations.get_project()\ndefault = gcp.dataproc.MetastoreFederation(\"default\",\n location=\"us-central1\",\n federation_id=\"\",\n version=\"3.1.2\",\n backend_metastores=[\n {\n \"rank\": \"2\",\n \"name\": project.id,\n \"metastoreType\": \"BIGQUERY\",\n },\n {\n \"rank\": \"1\",\n \"name\": default_metastore_service.id,\n \"metastoreType\": \"DATAPROC_METASTORE\",\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 defaultMetastoreService = new Gcp.Dataproc.MetastoreService(\"default\", new()\n {\n ServiceId = \"\",\n Location = \"us-central1\",\n Tier = \"DEVELOPER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n EndpointProtocol = \"GRPC\",\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.Dataproc.MetastoreFederation(\"default\", new()\n {\n Location = \"us-central1\",\n FederationId = \"\",\n Version = \"3.1.2\",\n BackendMetastores = new[]\n {\n new Gcp.Dataproc.Inputs.MetastoreFederationBackendMetastoreArgs\n {\n Rank = \"2\",\n Name = project.Apply(getProjectResult =\u003e getProjectResult.Id),\n MetastoreType = \"BIGQUERY\",\n },\n new Gcp.Dataproc.Inputs.MetastoreFederationBackendMetastoreArgs\n {\n Rank = \"1\",\n Name = defaultMetastoreService.Id,\n MetastoreType = \"DATAPROC_METASTORE\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultMetastoreService, err := dataproc.NewMetastoreService(ctx, \"default\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVELOPER\"),\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\t\tEndpointProtocol: pulumi.String(\"GRPC\"),\n\t\t\t},\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\t_, err = dataproc.NewMetastoreFederation(ctx, \"default\", \u0026dataproc.MetastoreFederationArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFederationId: pulumi.String(\"\"),\n\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\tBackendMetastores: dataproc.MetastoreFederationBackendMetastoreArray{\n\t\t\t\t\u0026dataproc.MetastoreFederationBackendMetastoreArgs{\n\t\t\t\t\tRank: pulumi.String(\"2\"),\n\t\t\t\t\tName: pulumi.String(project.Id),\n\t\t\t\t\tMetastoreType: pulumi.String(\"BIGQUERY\"),\n\t\t\t\t},\n\t\t\t\t\u0026dataproc.MetastoreFederationBackendMetastoreArgs{\n\t\t\t\t\tRank: pulumi.String(\"1\"),\n\t\t\t\t\tName: defaultMetastoreService.ID(),\n\t\t\t\t\tMetastoreType: pulumi.String(\"DATAPROC_METASTORE\"),\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.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataproc.MetastoreFederation;\nimport com.pulumi.gcp.dataproc.MetastoreFederationArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreFederationBackendMetastoreArgs;\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 defaultMetastoreService = new MetastoreService(\"defaultMetastoreService\", MetastoreServiceArgs.builder()\n .serviceId(\"\")\n .location(\"us-central1\")\n .tier(\"DEVELOPER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .endpointProtocol(\"GRPC\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var default_ = new MetastoreFederation(\"default\", MetastoreFederationArgs.builder()\n .location(\"us-central1\")\n .federationId(\"\")\n .version(\"3.1.2\")\n .backendMetastores( \n MetastoreFederationBackendMetastoreArgs.builder()\n .rank(\"2\")\n .name(project.applyValue(getProjectResult -\u003e getProjectResult.id()))\n .metastoreType(\"BIGQUERY\")\n .build(),\n MetastoreFederationBackendMetastoreArgs.builder()\n .rank(\"1\")\n .name(defaultMetastoreService.id())\n .metastoreType(\"DATAPROC_METASTORE\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:dataproc:MetastoreFederation\n properties:\n location: us-central1\n federationId:\n version: 3.1.2\n backendMetastores:\n - rank: '2'\n name: ${project.id}\n metastoreType: BIGQUERY\n - rank: '1'\n name: ${defaultMetastoreService.id}\n metastoreType: DATAPROC_METASTORE\n defaultMetastoreService:\n type: gcp:dataproc:MetastoreService\n name: default\n properties:\n serviceId:\n location: us-central1\n tier: DEVELOPER\n hiveMetastoreConfig:\n version: 3.1.2\n endpointProtocol: GRPC\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFederation can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/federations/{{federation_id}}`\n\n* `{{project}}/{{location}}/{{federation_id}}`\n\n* `{{location}}/{{federation_id}}`\n\nWhen using the `pulumi import` command, Federation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataproc/metastoreFederation:MetastoreFederation default projects/{{project}}/locations/{{location}}/federations/{{federation_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/metastoreFederation:MetastoreFederation default {{project}}/{{location}}/{{federation_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/metastoreFederation:MetastoreFederation default {{location}}/{{federation_id}}\n```\n\n", + "description": "A managed metastore federation.\n\n\n\n## Example Usage\n\n### Dataproc Metastore Federation Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultMetastoreService = new gcp.dataproc.MetastoreService(\"default\", {\n serviceId: \"\",\n location: \"us-central1\",\n tier: \"DEVELOPER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n endpointProtocol: \"GRPC\",\n },\n});\nconst _default = new gcp.dataproc.MetastoreFederation(\"default\", {\n location: \"us-central1\",\n federationId: \"\",\n version: \"3.1.2\",\n backendMetastores: [{\n rank: \"1\",\n name: defaultMetastoreService.id,\n metastoreType: \"DATAPROC_METASTORE\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_metastore_service = gcp.dataproc.MetastoreService(\"default\",\n service_id=\"\",\n location=\"us-central1\",\n tier=\"DEVELOPER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n \"endpoint_protocol\": \"GRPC\",\n })\ndefault = gcp.dataproc.MetastoreFederation(\"default\",\n location=\"us-central1\",\n federation_id=\"\",\n version=\"3.1.2\",\n backend_metastores=[{\n \"rank\": \"1\",\n \"name\": default_metastore_service.id,\n \"metastore_type\": \"DATAPROC_METASTORE\",\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 defaultMetastoreService = new Gcp.Dataproc.MetastoreService(\"default\", new()\n {\n ServiceId = \"\",\n Location = \"us-central1\",\n Tier = \"DEVELOPER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n EndpointProtocol = \"GRPC\",\n },\n });\n\n var @default = new Gcp.Dataproc.MetastoreFederation(\"default\", new()\n {\n Location = \"us-central1\",\n FederationId = \"\",\n Version = \"3.1.2\",\n BackendMetastores = new[]\n {\n new Gcp.Dataproc.Inputs.MetastoreFederationBackendMetastoreArgs\n {\n Rank = \"1\",\n Name = defaultMetastoreService.Id,\n MetastoreType = \"DATAPROC_METASTORE\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultMetastoreService, err := dataproc.NewMetastoreService(ctx, \"default\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVELOPER\"),\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\t\tEndpointProtocol: pulumi.String(\"GRPC\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataproc.NewMetastoreFederation(ctx, \"default\", \u0026dataproc.MetastoreFederationArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFederationId: pulumi.String(\"\"),\n\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\tBackendMetastores: dataproc.MetastoreFederationBackendMetastoreArray{\n\t\t\t\t\u0026dataproc.MetastoreFederationBackendMetastoreArgs{\n\t\t\t\t\tRank: pulumi.String(\"1\"),\n\t\t\t\t\tName: defaultMetastoreService.ID(),\n\t\t\t\t\tMetastoreType: pulumi.String(\"DATAPROC_METASTORE\"),\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.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.MetastoreFederation;\nimport com.pulumi.gcp.dataproc.MetastoreFederationArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreFederationBackendMetastoreArgs;\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 defaultMetastoreService = new MetastoreService(\"defaultMetastoreService\", MetastoreServiceArgs.builder()\n .serviceId(\"\")\n .location(\"us-central1\")\n .tier(\"DEVELOPER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .endpointProtocol(\"GRPC\")\n .build())\n .build());\n\n var default_ = new MetastoreFederation(\"default\", MetastoreFederationArgs.builder()\n .location(\"us-central1\")\n .federationId(\"\")\n .version(\"3.1.2\")\n .backendMetastores(MetastoreFederationBackendMetastoreArgs.builder()\n .rank(\"1\")\n .name(defaultMetastoreService.id())\n .metastoreType(\"DATAPROC_METASTORE\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:dataproc:MetastoreFederation\n properties:\n location: us-central1\n federationId:\n version: 3.1.2\n backendMetastores:\n - rank: '1'\n name: ${defaultMetastoreService.id}\n metastoreType: DATAPROC_METASTORE\n defaultMetastoreService:\n type: gcp:dataproc:MetastoreService\n name: default\n properties:\n serviceId:\n location: us-central1\n tier: DEVELOPER\n hiveMetastoreConfig:\n version: 3.1.2\n endpointProtocol: GRPC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Federation Bigquery\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultMetastoreService = new gcp.dataproc.MetastoreService(\"default\", {\n serviceId: \"\",\n location: \"us-central1\",\n tier: \"DEVELOPER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n endpointProtocol: \"GRPC\",\n },\n});\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.dataproc.MetastoreFederation(\"default\", {\n location: \"us-central1\",\n federationId: \"\",\n version: \"3.1.2\",\n backendMetastores: [\n {\n rank: \"2\",\n name: project.then(project =\u003e project.id),\n metastoreType: \"BIGQUERY\",\n },\n {\n rank: \"1\",\n name: defaultMetastoreService.id,\n metastoreType: \"DATAPROC_METASTORE\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_metastore_service = gcp.dataproc.MetastoreService(\"default\",\n service_id=\"\",\n location=\"us-central1\",\n tier=\"DEVELOPER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n \"endpoint_protocol\": \"GRPC\",\n })\nproject = gcp.organizations.get_project()\ndefault = gcp.dataproc.MetastoreFederation(\"default\",\n location=\"us-central1\",\n federation_id=\"\",\n version=\"3.1.2\",\n backend_metastores=[\n {\n \"rank\": \"2\",\n \"name\": project.id,\n \"metastore_type\": \"BIGQUERY\",\n },\n {\n \"rank\": \"1\",\n \"name\": default_metastore_service.id,\n \"metastore_type\": \"DATAPROC_METASTORE\",\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 defaultMetastoreService = new Gcp.Dataproc.MetastoreService(\"default\", new()\n {\n ServiceId = \"\",\n Location = \"us-central1\",\n Tier = \"DEVELOPER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n EndpointProtocol = \"GRPC\",\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.Dataproc.MetastoreFederation(\"default\", new()\n {\n Location = \"us-central1\",\n FederationId = \"\",\n Version = \"3.1.2\",\n BackendMetastores = new[]\n {\n new Gcp.Dataproc.Inputs.MetastoreFederationBackendMetastoreArgs\n {\n Rank = \"2\",\n Name = project.Apply(getProjectResult =\u003e getProjectResult.Id),\n MetastoreType = \"BIGQUERY\",\n },\n new Gcp.Dataproc.Inputs.MetastoreFederationBackendMetastoreArgs\n {\n Rank = \"1\",\n Name = defaultMetastoreService.Id,\n MetastoreType = \"DATAPROC_METASTORE\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultMetastoreService, err := dataproc.NewMetastoreService(ctx, \"default\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVELOPER\"),\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\t\tEndpointProtocol: pulumi.String(\"GRPC\"),\n\t\t\t},\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\t_, err = dataproc.NewMetastoreFederation(ctx, \"default\", \u0026dataproc.MetastoreFederationArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFederationId: pulumi.String(\"\"),\n\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\tBackendMetastores: dataproc.MetastoreFederationBackendMetastoreArray{\n\t\t\t\t\u0026dataproc.MetastoreFederationBackendMetastoreArgs{\n\t\t\t\t\tRank: pulumi.String(\"2\"),\n\t\t\t\t\tName: pulumi.String(project.Id),\n\t\t\t\t\tMetastoreType: pulumi.String(\"BIGQUERY\"),\n\t\t\t\t},\n\t\t\t\t\u0026dataproc.MetastoreFederationBackendMetastoreArgs{\n\t\t\t\t\tRank: pulumi.String(\"1\"),\n\t\t\t\t\tName: defaultMetastoreService.ID(),\n\t\t\t\t\tMetastoreType: pulumi.String(\"DATAPROC_METASTORE\"),\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.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataproc.MetastoreFederation;\nimport com.pulumi.gcp.dataproc.MetastoreFederationArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreFederationBackendMetastoreArgs;\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 defaultMetastoreService = new MetastoreService(\"defaultMetastoreService\", MetastoreServiceArgs.builder()\n .serviceId(\"\")\n .location(\"us-central1\")\n .tier(\"DEVELOPER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .endpointProtocol(\"GRPC\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var default_ = new MetastoreFederation(\"default\", MetastoreFederationArgs.builder()\n .location(\"us-central1\")\n .federationId(\"\")\n .version(\"3.1.2\")\n .backendMetastores( \n MetastoreFederationBackendMetastoreArgs.builder()\n .rank(\"2\")\n .name(project.applyValue(getProjectResult -\u003e getProjectResult.id()))\n .metastoreType(\"BIGQUERY\")\n .build(),\n MetastoreFederationBackendMetastoreArgs.builder()\n .rank(\"1\")\n .name(defaultMetastoreService.id())\n .metastoreType(\"DATAPROC_METASTORE\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:dataproc:MetastoreFederation\n properties:\n location: us-central1\n federationId:\n version: 3.1.2\n backendMetastores:\n - rank: '2'\n name: ${project.id}\n metastoreType: BIGQUERY\n - rank: '1'\n name: ${defaultMetastoreService.id}\n metastoreType: DATAPROC_METASTORE\n defaultMetastoreService:\n type: gcp:dataproc:MetastoreService\n name: default\n properties:\n serviceId:\n location: us-central1\n tier: DEVELOPER\n hiveMetastoreConfig:\n version: 3.1.2\n endpointProtocol: GRPC\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFederation can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/federations/{{federation_id}}`\n\n* `{{project}}/{{location}}/{{federation_id}}`\n\n* `{{location}}/{{federation_id}}`\n\nWhen using the `pulumi import` command, Federation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataproc/metastoreFederation:MetastoreFederation default projects/{{project}}/locations/{{location}}/federations/{{federation_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/metastoreFederation:MetastoreFederation default {{project}}/{{location}}/{{federation_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/metastoreFederation:MetastoreFederation default {{location}}/{{federation_id}}\n```\n\n", "properties": { "backendMetastores": { "type": "array", @@ -181632,7 +181632,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## Example Usage\n\n### Dataproc Metastore Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.dataproc.MetastoreService(\"default\", {\n serviceId: \"metastore-srv\",\n location: \"us-central1\",\n port: 9080,\n tier: \"DEVELOPER\",\n maintenanceWindow: {\n hourOfDay: 2,\n dayOfWeek: \"SUNDAY\",\n },\n hiveMetastoreConfig: {\n version: \"2.3.6\",\n },\n labels: {\n env: \"test\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.dataproc.MetastoreService(\"default\",\n service_id=\"metastore-srv\",\n location=\"us-central1\",\n port=9080,\n tier=\"DEVELOPER\",\n maintenance_window={\n \"hourOfDay\": 2,\n \"dayOfWeek\": \"SUNDAY\",\n },\n hive_metastore_config={\n \"version\": \"2.3.6\",\n },\n labels={\n \"env\": \"test\",\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 @default = new Gcp.Dataproc.MetastoreService(\"default\", new()\n {\n ServiceId = \"metastore-srv\",\n Location = \"us-central1\",\n Port = 9080,\n Tier = \"DEVELOPER\",\n MaintenanceWindow = new Gcp.Dataproc.Inputs.MetastoreServiceMaintenanceWindowArgs\n {\n HourOfDay = 2,\n DayOfWeek = \"SUNDAY\",\n },\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"2.3.6\",\n },\n Labels = \n {\n { \"env\", \"test\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tServiceId: pulumi.String(\"metastore-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPort: pulumi.Int(9080),\n\t\t\tTier: pulumi.String(\"DEVELOPER\"),\n\t\t\tMaintenanceWindow: \u0026dataproc.MetastoreServiceMaintenanceWindowArgs{\n\t\t\t\tHourOfDay: pulumi.Int(2),\n\t\t\t\tDayOfWeek: pulumi.String(\"SUNDAY\"),\n\t\t\t},\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"2.3.6\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"test\"),\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.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceMaintenanceWindowArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\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 .serviceId(\"metastore-srv\")\n .location(\"us-central1\")\n .port(9080)\n .tier(\"DEVELOPER\")\n .maintenanceWindow(MetastoreServiceMaintenanceWindowArgs.builder()\n .hourOfDay(2)\n .dayOfWeek(\"SUNDAY\")\n .build())\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"2.3.6\")\n .build())\n .labels(Map.of(\"env\", \"test\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:dataproc:MetastoreService\n properties:\n serviceId: metastore-srv\n location: us-central1\n port: 9080\n tier: DEVELOPER\n maintenanceWindow:\n hourOfDay: 2\n dayOfWeek: SUNDAY\n hiveMetastoreConfig:\n version: 2.3.6\n labels:\n env: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Cmek Example\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n purpose: \"ENCRYPT_DECRYPT\",\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(\"key_ring\",\n name=\"example-keyring\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id,\n purpose=\"ENCRYPT_DECRYPT\")\ndefault = gcp.dataproc.MetastoreService(\"default\",\n service_id=\"example-service\",\n location=\"us-central1\",\n encryption_config={\n \"kmsKey\": crypto_key.id,\n },\n hive_metastore_config={\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(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ENCRYPT_DECRYPT\",\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/v7/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ENCRYPT_DECRYPT\"),\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(\"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 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 .name(\"example-keyring\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .purpose(\"ENCRYPT_DECRYPT\")\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 name: crypto_key\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n purpose: ENCRYPT_DECRYPT\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-keyring\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Private Service Connect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst net = new gcp.compute.Network(\"net\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnetwork\",\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\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnetwork\",\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={\n \"version\": \"3.1.2\",\n },\n network_config={\n \"consumers\": [{\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 Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnetwork\",\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/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-network\"),\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\tName: pulumi.String(\"my-subnetwork\"),\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 .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\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 name: my-network\n autoCreateSubnetworks: false\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-subnetwork\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\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Private Service Connect Custom Routes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst net = new gcp.compute.Network(\"net\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnetwork\",\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 customRoutesEnabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnet = gcp.compute.Network(\"net\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnetwork\",\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={\n \"version\": \"3.1.2\",\n },\n network_config={\n \"consumers\": [{\n \"subnetwork\": subnet.id,\n }],\n \"customRoutesEnabled\": 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 net = new Gcp.Compute.Network(\"net\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnetwork\",\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 CustomRoutesEnabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-network\"),\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\tName: pulumi.String(\"my-subnetwork\"),\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\tCustomRoutesEnabled: 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.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 .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\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 .customRoutesEnabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n net:\n type: gcp:compute:Network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-subnetwork\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 customRoutesEnabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Dpms2\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dpms2 = new gcp.dataproc.MetastoreService(\"dpms2\", {\n serviceId: \"ms-dpms2\",\n location: \"us-central1\",\n databaseType: \"SPANNER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n scalingConfig: {\n instanceSize: \"EXTRA_SMALL\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndpms2 = gcp.dataproc.MetastoreService(\"dpms2\",\n service_id=\"ms-dpms2\",\n location=\"us-central1\",\n database_type=\"SPANNER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n },\n scaling_config={\n \"instanceSize\": \"EXTRA_SMALL\",\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 dpms2 = new Gcp.Dataproc.MetastoreService(\"dpms2\", new()\n {\n ServiceId = \"ms-dpms2\",\n Location = \"us-central1\",\n DatabaseType = \"SPANNER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n ScalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigArgs\n {\n InstanceSize = \"EXTRA_SMALL\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tServiceId: pulumi.String(\"ms-dpms2\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tScalingConfig: \u0026dataproc.MetastoreServiceScalingConfigArgs{\n\t\t\t\tInstanceSize: pulumi.String(\"EXTRA_SMALL\"),\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.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 .serviceId(\"ms-dpms2\")\n .location(\"us-central1\")\n .databaseType(\"SPANNER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .scalingConfig(MetastoreServiceScalingConfigArgs.builder()\n .instanceSize(\"EXTRA_SMALL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dpms2:\n type: gcp:dataproc:MetastoreService\n properties:\n serviceId: ms-dpms2\n location: us-central1\n databaseType: SPANNER\n hiveMetastoreConfig:\n version: 3.1.2\n scalingConfig:\n instanceSize: EXTRA_SMALL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Dpms2 Scaling Factor\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dpms2ScalingFactor = new gcp.dataproc.MetastoreService(\"dpms2_scaling_factor\", {\n serviceId: \"ms-dpms2sf\",\n location: \"us-central1\",\n databaseType: \"SPANNER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n scalingConfig: {\n scalingFactor: 2,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndpms2_scaling_factor = gcp.dataproc.MetastoreService(\"dpms2_scaling_factor\",\n service_id=\"ms-dpms2sf\",\n location=\"us-central1\",\n database_type=\"SPANNER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n },\n scaling_config={\n \"scalingFactor\": 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 dpms2ScalingFactor = new Gcp.Dataproc.MetastoreService(\"dpms2_scaling_factor\", new()\n {\n ServiceId = \"ms-dpms2sf\",\n Location = \"us-central1\",\n DatabaseType = \"SPANNER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n ScalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigArgs\n {\n ScalingFactor = 2,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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_scaling_factor\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"ms-dpms2sf\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tScalingConfig: \u0026dataproc.MetastoreServiceScalingConfigArgs{\n\t\t\t\tScalingFactor: pulumi.Float64(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.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 .serviceId(\"ms-dpms2sf\")\n .location(\"us-central1\")\n .databaseType(\"SPANNER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .scalingConfig(MetastoreServiceScalingConfigArgs.builder()\n .scalingFactor(\"2\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dpms2ScalingFactor:\n type: gcp:dataproc:MetastoreService\n name: dpms2_scaling_factor\n properties:\n serviceId: ms-dpms2sf\n location: us-central1\n databaseType: SPANNER\n hiveMetastoreConfig:\n version: 3.1.2\n scalingConfig:\n scalingFactor: '2'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Scheduled Backup\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"backup\",\n location: \"us-central1\",\n});\nconst backup = new gcp.dataproc.MetastoreService(\"backup\", {\n serviceId: \"backup\",\n location: \"us-central1\",\n port: 9080,\n tier: \"DEVELOPER\",\n maintenanceWindow: {\n hourOfDay: 2,\n dayOfWeek: \"SUNDAY\",\n },\n hiveMetastoreConfig: {\n version: \"2.3.6\",\n },\n scheduledBackup: {\n enabled: true,\n cronSchedule: \"0 0 * * *\",\n timeZone: \"UTC\",\n backupLocation: pulumi.interpolate`gs://${bucket.name}`,\n },\n labels: {\n env: \"test\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"backup\",\n location=\"us-central1\")\nbackup = gcp.dataproc.MetastoreService(\"backup\",\n service_id=\"backup\",\n location=\"us-central1\",\n port=9080,\n tier=\"DEVELOPER\",\n maintenance_window={\n \"hourOfDay\": 2,\n \"dayOfWeek\": \"SUNDAY\",\n },\n hive_metastore_config={\n \"version\": \"2.3.6\",\n },\n scheduled_backup={\n \"enabled\": True,\n \"cronSchedule\": \"0 0 * * *\",\n \"timeZone\": \"UTC\",\n \"backupLocation\": bucket.name.apply(lambda name: f\"gs://{name}\"),\n },\n labels={\n \"env\": \"test\",\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 Name = \"backup\",\n Location = \"us-central1\",\n });\n\n var backup = new Gcp.Dataproc.MetastoreService(\"backup\", new()\n {\n ServiceId = \"backup\",\n Location = \"us-central1\",\n Port = 9080,\n Tier = \"DEVELOPER\",\n MaintenanceWindow = new Gcp.Dataproc.Inputs.MetastoreServiceMaintenanceWindowArgs\n {\n HourOfDay = 2,\n DayOfWeek = \"SUNDAY\",\n },\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"2.3.6\",\n },\n ScheduledBackup = new Gcp.Dataproc.Inputs.MetastoreServiceScheduledBackupArgs\n {\n Enabled = true,\n CronSchedule = \"0 0 * * *\",\n TimeZone = \"UTC\",\n BackupLocation = bucket.Name.Apply(name =\u003e $\"gs://{name}\"),\n },\n Labels = \n {\n { \"env\", \"test\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"backup\"),\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 = dataproc.NewMetastoreService(ctx, \"backup\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"backup\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPort: pulumi.Int(9080),\n\t\t\tTier: pulumi.String(\"DEVELOPER\"),\n\t\t\tMaintenanceWindow: \u0026dataproc.MetastoreServiceMaintenanceWindowArgs{\n\t\t\t\tHourOfDay: pulumi.Int(2),\n\t\t\t\tDayOfWeek: pulumi.String(\"SUNDAY\"),\n\t\t\t},\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"2.3.6\"),\n\t\t\t},\n\t\t\tScheduledBackup: \u0026dataproc.MetastoreServiceScheduledBackupArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tCronSchedule: pulumi.String(\"0 0 * * *\"),\n\t\t\t\tTimeZone: pulumi.String(\"UTC\"),\n\t\t\t\tBackupLocation: bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"test\"),\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.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceMaintenanceWindowArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScheduledBackupArgs;\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 .name(\"backup\")\n .location(\"us-central1\")\n .build());\n\n var backup = new MetastoreService(\"backup\", MetastoreServiceArgs.builder()\n .serviceId(\"backup\")\n .location(\"us-central1\")\n .port(9080)\n .tier(\"DEVELOPER\")\n .maintenanceWindow(MetastoreServiceMaintenanceWindowArgs.builder()\n .hourOfDay(2)\n .dayOfWeek(\"SUNDAY\")\n .build())\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"2.3.6\")\n .build())\n .scheduledBackup(MetastoreServiceScheduledBackupArgs.builder()\n .enabled(true)\n .cronSchedule(\"0 0 * * *\")\n .timeZone(\"UTC\")\n .backupLocation(bucket.name().applyValue(name -\u003e String.format(\"gs://%s\", name)))\n .build())\n .labels(Map.of(\"env\", \"test\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n backup:\n type: gcp:dataproc:MetastoreService\n properties:\n serviceId: backup\n location: us-central1\n port: 9080\n tier: DEVELOPER\n maintenanceWindow:\n hourOfDay: 2\n dayOfWeek: SUNDAY\n hiveMetastoreConfig:\n version: 2.3.6\n scheduledBackup:\n enabled: true\n cronSchedule: 0 0 * * *\n timeZone: UTC\n backupLocation: gs://${bucket.name}\n labels:\n env: test\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: backup\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Autoscaling Max Scaling Factor\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testResource = new gcp.dataproc.MetastoreService(\"test_resource\", {\n serviceId: \"test-service\",\n location: \"us-central1\",\n databaseType: \"SPANNER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n scalingConfig: {\n autoscalingConfig: {\n autoscalingEnabled: true,\n limitConfig: {\n maxScalingFactor: 1,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_resource = gcp.dataproc.MetastoreService(\"test_resource\",\n service_id=\"test-service\",\n location=\"us-central1\",\n database_type=\"SPANNER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n },\n scaling_config={\n \"autoscalingConfig\": {\n \"autoscalingEnabled\": True,\n \"limitConfig\": {\n \"maxScalingFactor\": 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 testResource = new Gcp.Dataproc.MetastoreService(\"test_resource\", new()\n {\n ServiceId = \"test-service\",\n Location = \"us-central1\",\n DatabaseType = \"SPANNER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n ScalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigArgs\n {\n AutoscalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigAutoscalingConfigArgs\n {\n AutoscalingEnabled = true,\n LimitConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs\n {\n MaxScalingFactor = 1,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"test_resource\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"test-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tScalingConfig: \u0026dataproc.MetastoreServiceScalingConfigArgs{\n\t\t\t\tAutoscalingConfig: \u0026dataproc.MetastoreServiceScalingConfigAutoscalingConfigArgs{\n\t\t\t\t\tAutoscalingEnabled: pulumi.Bool(true),\n\t\t\t\t\tLimitConfig: \u0026dataproc.MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs{\n\t\t\t\t\t\tMaxScalingFactor: pulumi.Float64(1),\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.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigAutoscalingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs;\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 testResource = new MetastoreService(\"testResource\", MetastoreServiceArgs.builder()\n .serviceId(\"test-service\")\n .location(\"us-central1\")\n .databaseType(\"SPANNER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .scalingConfig(MetastoreServiceScalingConfigArgs.builder()\n .autoscalingConfig(MetastoreServiceScalingConfigAutoscalingConfigArgs.builder()\n .autoscalingEnabled(true)\n .limitConfig(MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs.builder()\n .maxScalingFactor(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testResource:\n type: gcp:dataproc:MetastoreService\n name: test_resource\n properties:\n serviceId: test-service\n location: us-central1\n databaseType: SPANNER\n hiveMetastoreConfig:\n version: 3.1.2\n scalingConfig:\n autoscalingConfig:\n autoscalingEnabled: true\n limitConfig:\n maxScalingFactor: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Autoscaling Min And Max Scaling Factor\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testResource = new gcp.dataproc.MetastoreService(\"test_resource\", {\n serviceId: \"test-service\",\n location: \"us-central1\",\n databaseType: \"SPANNER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n scalingConfig: {\n autoscalingConfig: {\n autoscalingEnabled: true,\n limitConfig: {\n minScalingFactor: 0.1,\n maxScalingFactor: 1,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_resource = gcp.dataproc.MetastoreService(\"test_resource\",\n service_id=\"test-service\",\n location=\"us-central1\",\n database_type=\"SPANNER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n },\n scaling_config={\n \"autoscalingConfig\": {\n \"autoscalingEnabled\": True,\n \"limitConfig\": {\n \"minScalingFactor\": 0.1,\n \"maxScalingFactor\": 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 testResource = new Gcp.Dataproc.MetastoreService(\"test_resource\", new()\n {\n ServiceId = \"test-service\",\n Location = \"us-central1\",\n DatabaseType = \"SPANNER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n ScalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigArgs\n {\n AutoscalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigAutoscalingConfigArgs\n {\n AutoscalingEnabled = true,\n LimitConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs\n {\n MinScalingFactor = 0.1,\n MaxScalingFactor = 1,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"test_resource\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"test-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tScalingConfig: \u0026dataproc.MetastoreServiceScalingConfigArgs{\n\t\t\t\tAutoscalingConfig: \u0026dataproc.MetastoreServiceScalingConfigAutoscalingConfigArgs{\n\t\t\t\t\tAutoscalingEnabled: pulumi.Bool(true),\n\t\t\t\t\tLimitConfig: \u0026dataproc.MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs{\n\t\t\t\t\t\tMinScalingFactor: pulumi.Float64(0.1),\n\t\t\t\t\t\tMaxScalingFactor: pulumi.Float64(1),\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.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigAutoscalingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs;\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 testResource = new MetastoreService(\"testResource\", MetastoreServiceArgs.builder()\n .serviceId(\"test-service\")\n .location(\"us-central1\")\n .databaseType(\"SPANNER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .scalingConfig(MetastoreServiceScalingConfigArgs.builder()\n .autoscalingConfig(MetastoreServiceScalingConfigAutoscalingConfigArgs.builder()\n .autoscalingEnabled(true)\n .limitConfig(MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs.builder()\n .minScalingFactor(0.1)\n .maxScalingFactor(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testResource:\n type: gcp:dataproc:MetastoreService\n name: test_resource\n properties:\n serviceId: test-service\n location: us-central1\n databaseType: SPANNER\n hiveMetastoreConfig:\n version: 3.1.2\n scalingConfig:\n autoscalingConfig:\n autoscalingEnabled: true\n limitConfig:\n minScalingFactor: 0.1\n maxScalingFactor: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Autoscaling Min Scaling Factor\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testResource = new gcp.dataproc.MetastoreService(\"test_resource\", {\n serviceId: \"test-service\",\n location: \"us-central1\",\n databaseType: \"SPANNER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n scalingConfig: {\n autoscalingConfig: {\n autoscalingEnabled: true,\n limitConfig: {\n minScalingFactor: 0.1,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_resource = gcp.dataproc.MetastoreService(\"test_resource\",\n service_id=\"test-service\",\n location=\"us-central1\",\n database_type=\"SPANNER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n },\n scaling_config={\n \"autoscalingConfig\": {\n \"autoscalingEnabled\": True,\n \"limitConfig\": {\n \"minScalingFactor\": 0.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 testResource = new Gcp.Dataproc.MetastoreService(\"test_resource\", new()\n {\n ServiceId = \"test-service\",\n Location = \"us-central1\",\n DatabaseType = \"SPANNER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n ScalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigArgs\n {\n AutoscalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigAutoscalingConfigArgs\n {\n AutoscalingEnabled = true,\n LimitConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs\n {\n MinScalingFactor = 0.1,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"test_resource\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"test-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tScalingConfig: \u0026dataproc.MetastoreServiceScalingConfigArgs{\n\t\t\t\tAutoscalingConfig: \u0026dataproc.MetastoreServiceScalingConfigAutoscalingConfigArgs{\n\t\t\t\t\tAutoscalingEnabled: pulumi.Bool(true),\n\t\t\t\t\tLimitConfig: \u0026dataproc.MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs{\n\t\t\t\t\t\tMinScalingFactor: pulumi.Float64(0.1),\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.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigAutoscalingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs;\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 testResource = new MetastoreService(\"testResource\", MetastoreServiceArgs.builder()\n .serviceId(\"test-service\")\n .location(\"us-central1\")\n .databaseType(\"SPANNER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .scalingConfig(MetastoreServiceScalingConfigArgs.builder()\n .autoscalingConfig(MetastoreServiceScalingConfigAutoscalingConfigArgs.builder()\n .autoscalingEnabled(true)\n .limitConfig(MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs.builder()\n .minScalingFactor(0.1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testResource:\n type: gcp:dataproc:MetastoreService\n name: test_resource\n properties:\n serviceId: test-service\n location: us-central1\n databaseType: SPANNER\n hiveMetastoreConfig:\n version: 3.1.2\n scalingConfig:\n autoscalingConfig:\n autoscalingEnabled: true\n limitConfig:\n minScalingFactor: 0.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Autoscaling No Limit Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testResource = new gcp.dataproc.MetastoreService(\"test_resource\", {\n serviceId: \"test-service\",\n location: \"us-central1\",\n databaseType: \"SPANNER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n scalingConfig: {\n autoscalingConfig: {\n autoscalingEnabled: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_resource = gcp.dataproc.MetastoreService(\"test_resource\",\n service_id=\"test-service\",\n location=\"us-central1\",\n database_type=\"SPANNER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n },\n scaling_config={\n \"autoscalingConfig\": {\n \"autoscalingEnabled\": 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 testResource = new Gcp.Dataproc.MetastoreService(\"test_resource\", new()\n {\n ServiceId = \"test-service\",\n Location = \"us-central1\",\n DatabaseType = \"SPANNER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n ScalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigArgs\n {\n AutoscalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigAutoscalingConfigArgs\n {\n AutoscalingEnabled = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"test_resource\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"test-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tScalingConfig: \u0026dataproc.MetastoreServiceScalingConfigArgs{\n\t\t\t\tAutoscalingConfig: \u0026dataproc.MetastoreServiceScalingConfigAutoscalingConfigArgs{\n\t\t\t\t\tAutoscalingEnabled: 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.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigAutoscalingConfigArgs;\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 testResource = new MetastoreService(\"testResource\", MetastoreServiceArgs.builder()\n .serviceId(\"test-service\")\n .location(\"us-central1\")\n .databaseType(\"SPANNER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .scalingConfig(MetastoreServiceScalingConfigArgs.builder()\n .autoscalingConfig(MetastoreServiceScalingConfigAutoscalingConfigArgs.builder()\n .autoscalingEnabled(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testResource:\n type: gcp:dataproc:MetastoreService\n name: test_resource\n properties:\n serviceId: test-service\n location: us-central1\n databaseType: SPANNER\n hiveMetastoreConfig:\n version: 3.1.2\n scalingConfig:\n autoscalingConfig:\n autoscalingEnabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/services/{{service_id}}`\n\n* `{{project}}/{{location}}/{{service_id}}`\n\n* `{{location}}/{{service_id}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataproc/metastoreService:MetastoreService default projects/{{project}}/locations/{{location}}/services/{{service_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/metastoreService:MetastoreService default {{project}}/{{location}}/{{service_id}}\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## Example Usage\n\n### Dataproc Metastore Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.dataproc.MetastoreService(\"default\", {\n serviceId: \"metastore-srv\",\n location: \"us-central1\",\n port: 9080,\n tier: \"DEVELOPER\",\n maintenanceWindow: {\n hourOfDay: 2,\n dayOfWeek: \"SUNDAY\",\n },\n hiveMetastoreConfig: {\n version: \"2.3.6\",\n },\n labels: {\n env: \"test\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.dataproc.MetastoreService(\"default\",\n service_id=\"metastore-srv\",\n location=\"us-central1\",\n port=9080,\n tier=\"DEVELOPER\",\n maintenance_window={\n \"hour_of_day\": 2,\n \"day_of_week\": \"SUNDAY\",\n },\n hive_metastore_config={\n \"version\": \"2.3.6\",\n },\n labels={\n \"env\": \"test\",\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 @default = new Gcp.Dataproc.MetastoreService(\"default\", new()\n {\n ServiceId = \"metastore-srv\",\n Location = \"us-central1\",\n Port = 9080,\n Tier = \"DEVELOPER\",\n MaintenanceWindow = new Gcp.Dataproc.Inputs.MetastoreServiceMaintenanceWindowArgs\n {\n HourOfDay = 2,\n DayOfWeek = \"SUNDAY\",\n },\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"2.3.6\",\n },\n Labels = \n {\n { \"env\", \"test\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tServiceId: pulumi.String(\"metastore-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPort: pulumi.Int(9080),\n\t\t\tTier: pulumi.String(\"DEVELOPER\"),\n\t\t\tMaintenanceWindow: \u0026dataproc.MetastoreServiceMaintenanceWindowArgs{\n\t\t\t\tHourOfDay: pulumi.Int(2),\n\t\t\t\tDayOfWeek: pulumi.String(\"SUNDAY\"),\n\t\t\t},\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"2.3.6\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"test\"),\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.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceMaintenanceWindowArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\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 .serviceId(\"metastore-srv\")\n .location(\"us-central1\")\n .port(9080)\n .tier(\"DEVELOPER\")\n .maintenanceWindow(MetastoreServiceMaintenanceWindowArgs.builder()\n .hourOfDay(2)\n .dayOfWeek(\"SUNDAY\")\n .build())\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"2.3.6\")\n .build())\n .labels(Map.of(\"env\", \"test\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:dataproc:MetastoreService\n properties:\n serviceId: metastore-srv\n location: us-central1\n port: 9080\n tier: DEVELOPER\n maintenanceWindow:\n hourOfDay: 2\n dayOfWeek: SUNDAY\n hiveMetastoreConfig:\n version: 2.3.6\n labels:\n env: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Cmek Example\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n purpose: \"ENCRYPT_DECRYPT\",\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(\"key_ring\",\n name=\"example-keyring\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id,\n purpose=\"ENCRYPT_DECRYPT\")\ndefault = gcp.dataproc.MetastoreService(\"default\",\n service_id=\"example-service\",\n location=\"us-central1\",\n encryption_config={\n \"kms_key\": crypto_key.id,\n },\n hive_metastore_config={\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(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ENCRYPT_DECRYPT\",\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/v7/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ENCRYPT_DECRYPT\"),\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(\"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 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 .name(\"example-keyring\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .purpose(\"ENCRYPT_DECRYPT\")\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 name: crypto_key\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n purpose: ENCRYPT_DECRYPT\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-keyring\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Private Service Connect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst net = new gcp.compute.Network(\"net\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnetwork\",\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\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnetwork\",\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={\n \"version\": \"3.1.2\",\n },\n network_config={\n \"consumers\": [{\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 Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnetwork\",\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/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-network\"),\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\tName: pulumi.String(\"my-subnetwork\"),\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 .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\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 name: my-network\n autoCreateSubnetworks: false\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-subnetwork\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\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Private Service Connect Custom Routes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst net = new gcp.compute.Network(\"net\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnetwork\",\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 customRoutesEnabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnet = gcp.compute.Network(\"net\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnetwork\",\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={\n \"version\": \"3.1.2\",\n },\n network_config={\n \"consumers\": [{\n \"subnetwork\": subnet.id,\n }],\n \"custom_routes_enabled\": 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 net = new Gcp.Compute.Network(\"net\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnetwork\",\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 CustomRoutesEnabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-network\"),\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\tName: pulumi.String(\"my-subnetwork\"),\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\tCustomRoutesEnabled: 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.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 .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\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 .customRoutesEnabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n net:\n type: gcp:compute:Network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-subnetwork\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 customRoutesEnabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Dpms2\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dpms2 = new gcp.dataproc.MetastoreService(\"dpms2\", {\n serviceId: \"ms-dpms2\",\n location: \"us-central1\",\n databaseType: \"SPANNER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n scalingConfig: {\n instanceSize: \"EXTRA_SMALL\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndpms2 = gcp.dataproc.MetastoreService(\"dpms2\",\n service_id=\"ms-dpms2\",\n location=\"us-central1\",\n database_type=\"SPANNER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n },\n scaling_config={\n \"instance_size\": \"EXTRA_SMALL\",\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 dpms2 = new Gcp.Dataproc.MetastoreService(\"dpms2\", new()\n {\n ServiceId = \"ms-dpms2\",\n Location = \"us-central1\",\n DatabaseType = \"SPANNER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n ScalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigArgs\n {\n InstanceSize = \"EXTRA_SMALL\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tServiceId: pulumi.String(\"ms-dpms2\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tScalingConfig: \u0026dataproc.MetastoreServiceScalingConfigArgs{\n\t\t\t\tInstanceSize: pulumi.String(\"EXTRA_SMALL\"),\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.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 .serviceId(\"ms-dpms2\")\n .location(\"us-central1\")\n .databaseType(\"SPANNER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .scalingConfig(MetastoreServiceScalingConfigArgs.builder()\n .instanceSize(\"EXTRA_SMALL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dpms2:\n type: gcp:dataproc:MetastoreService\n properties:\n serviceId: ms-dpms2\n location: us-central1\n databaseType: SPANNER\n hiveMetastoreConfig:\n version: 3.1.2\n scalingConfig:\n instanceSize: EXTRA_SMALL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Dpms2 Scaling Factor\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dpms2ScalingFactor = new gcp.dataproc.MetastoreService(\"dpms2_scaling_factor\", {\n serviceId: \"ms-dpms2sf\",\n location: \"us-central1\",\n databaseType: \"SPANNER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n scalingConfig: {\n scalingFactor: 2,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndpms2_scaling_factor = gcp.dataproc.MetastoreService(\"dpms2_scaling_factor\",\n service_id=\"ms-dpms2sf\",\n location=\"us-central1\",\n database_type=\"SPANNER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n },\n scaling_config={\n \"scaling_factor\": 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 dpms2ScalingFactor = new Gcp.Dataproc.MetastoreService(\"dpms2_scaling_factor\", new()\n {\n ServiceId = \"ms-dpms2sf\",\n Location = \"us-central1\",\n DatabaseType = \"SPANNER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n ScalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigArgs\n {\n ScalingFactor = 2,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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_scaling_factor\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"ms-dpms2sf\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tScalingConfig: \u0026dataproc.MetastoreServiceScalingConfigArgs{\n\t\t\t\tScalingFactor: pulumi.Float64(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.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 .serviceId(\"ms-dpms2sf\")\n .location(\"us-central1\")\n .databaseType(\"SPANNER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .scalingConfig(MetastoreServiceScalingConfigArgs.builder()\n .scalingFactor(\"2\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dpms2ScalingFactor:\n type: gcp:dataproc:MetastoreService\n name: dpms2_scaling_factor\n properties:\n serviceId: ms-dpms2sf\n location: us-central1\n databaseType: SPANNER\n hiveMetastoreConfig:\n version: 3.1.2\n scalingConfig:\n scalingFactor: '2'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Scheduled Backup\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"backup\",\n location: \"us-central1\",\n});\nconst backup = new gcp.dataproc.MetastoreService(\"backup\", {\n serviceId: \"backup\",\n location: \"us-central1\",\n port: 9080,\n tier: \"DEVELOPER\",\n maintenanceWindow: {\n hourOfDay: 2,\n dayOfWeek: \"SUNDAY\",\n },\n hiveMetastoreConfig: {\n version: \"2.3.6\",\n },\n scheduledBackup: {\n enabled: true,\n cronSchedule: \"0 0 * * *\",\n timeZone: \"UTC\",\n backupLocation: pulumi.interpolate`gs://${bucket.name}`,\n },\n labels: {\n env: \"test\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"backup\",\n location=\"us-central1\")\nbackup = gcp.dataproc.MetastoreService(\"backup\",\n service_id=\"backup\",\n location=\"us-central1\",\n port=9080,\n tier=\"DEVELOPER\",\n maintenance_window={\n \"hour_of_day\": 2,\n \"day_of_week\": \"SUNDAY\",\n },\n hive_metastore_config={\n \"version\": \"2.3.6\",\n },\n scheduled_backup={\n \"enabled\": True,\n \"cron_schedule\": \"0 0 * * *\",\n \"time_zone\": \"UTC\",\n \"backup_location\": bucket.name.apply(lambda name: f\"gs://{name}\"),\n },\n labels={\n \"env\": \"test\",\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 Name = \"backup\",\n Location = \"us-central1\",\n });\n\n var backup = new Gcp.Dataproc.MetastoreService(\"backup\", new()\n {\n ServiceId = \"backup\",\n Location = \"us-central1\",\n Port = 9080,\n Tier = \"DEVELOPER\",\n MaintenanceWindow = new Gcp.Dataproc.Inputs.MetastoreServiceMaintenanceWindowArgs\n {\n HourOfDay = 2,\n DayOfWeek = \"SUNDAY\",\n },\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"2.3.6\",\n },\n ScheduledBackup = new Gcp.Dataproc.Inputs.MetastoreServiceScheduledBackupArgs\n {\n Enabled = true,\n CronSchedule = \"0 0 * * *\",\n TimeZone = \"UTC\",\n BackupLocation = bucket.Name.Apply(name =\u003e $\"gs://{name}\"),\n },\n Labels = \n {\n { \"env\", \"test\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"backup\"),\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 = dataproc.NewMetastoreService(ctx, \"backup\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"backup\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPort: pulumi.Int(9080),\n\t\t\tTier: pulumi.String(\"DEVELOPER\"),\n\t\t\tMaintenanceWindow: \u0026dataproc.MetastoreServiceMaintenanceWindowArgs{\n\t\t\t\tHourOfDay: pulumi.Int(2),\n\t\t\t\tDayOfWeek: pulumi.String(\"SUNDAY\"),\n\t\t\t},\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"2.3.6\"),\n\t\t\t},\n\t\t\tScheduledBackup: \u0026dataproc.MetastoreServiceScheduledBackupArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tCronSchedule: pulumi.String(\"0 0 * * *\"),\n\t\t\t\tTimeZone: pulumi.String(\"UTC\"),\n\t\t\t\tBackupLocation: bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"test\"),\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.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceMaintenanceWindowArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScheduledBackupArgs;\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 .name(\"backup\")\n .location(\"us-central1\")\n .build());\n\n var backup = new MetastoreService(\"backup\", MetastoreServiceArgs.builder()\n .serviceId(\"backup\")\n .location(\"us-central1\")\n .port(9080)\n .tier(\"DEVELOPER\")\n .maintenanceWindow(MetastoreServiceMaintenanceWindowArgs.builder()\n .hourOfDay(2)\n .dayOfWeek(\"SUNDAY\")\n .build())\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"2.3.6\")\n .build())\n .scheduledBackup(MetastoreServiceScheduledBackupArgs.builder()\n .enabled(true)\n .cronSchedule(\"0 0 * * *\")\n .timeZone(\"UTC\")\n .backupLocation(bucket.name().applyValue(name -\u003e String.format(\"gs://%s\", name)))\n .build())\n .labels(Map.of(\"env\", \"test\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n backup:\n type: gcp:dataproc:MetastoreService\n properties:\n serviceId: backup\n location: us-central1\n port: 9080\n tier: DEVELOPER\n maintenanceWindow:\n hourOfDay: 2\n dayOfWeek: SUNDAY\n hiveMetastoreConfig:\n version: 2.3.6\n scheduledBackup:\n enabled: true\n cronSchedule: 0 0 * * *\n timeZone: UTC\n backupLocation: gs://${bucket.name}\n labels:\n env: test\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: backup\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Autoscaling Max Scaling Factor\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testResource = new gcp.dataproc.MetastoreService(\"test_resource\", {\n serviceId: \"test-service\",\n location: \"us-central1\",\n databaseType: \"SPANNER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n scalingConfig: {\n autoscalingConfig: {\n autoscalingEnabled: true,\n limitConfig: {\n maxScalingFactor: 1,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_resource = gcp.dataproc.MetastoreService(\"test_resource\",\n service_id=\"test-service\",\n location=\"us-central1\",\n database_type=\"SPANNER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n },\n scaling_config={\n \"autoscaling_config\": {\n \"autoscaling_enabled\": True,\n \"limit_config\": {\n \"max_scaling_factor\": 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 testResource = new Gcp.Dataproc.MetastoreService(\"test_resource\", new()\n {\n ServiceId = \"test-service\",\n Location = \"us-central1\",\n DatabaseType = \"SPANNER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n ScalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigArgs\n {\n AutoscalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigAutoscalingConfigArgs\n {\n AutoscalingEnabled = true,\n LimitConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs\n {\n MaxScalingFactor = 1,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"test_resource\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"test-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tScalingConfig: \u0026dataproc.MetastoreServiceScalingConfigArgs{\n\t\t\t\tAutoscalingConfig: \u0026dataproc.MetastoreServiceScalingConfigAutoscalingConfigArgs{\n\t\t\t\t\tAutoscalingEnabled: pulumi.Bool(true),\n\t\t\t\t\tLimitConfig: \u0026dataproc.MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs{\n\t\t\t\t\t\tMaxScalingFactor: pulumi.Float64(1),\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.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigAutoscalingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs;\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 testResource = new MetastoreService(\"testResource\", MetastoreServiceArgs.builder()\n .serviceId(\"test-service\")\n .location(\"us-central1\")\n .databaseType(\"SPANNER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .scalingConfig(MetastoreServiceScalingConfigArgs.builder()\n .autoscalingConfig(MetastoreServiceScalingConfigAutoscalingConfigArgs.builder()\n .autoscalingEnabled(true)\n .limitConfig(MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs.builder()\n .maxScalingFactor(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testResource:\n type: gcp:dataproc:MetastoreService\n name: test_resource\n properties:\n serviceId: test-service\n location: us-central1\n databaseType: SPANNER\n hiveMetastoreConfig:\n version: 3.1.2\n scalingConfig:\n autoscalingConfig:\n autoscalingEnabled: true\n limitConfig:\n maxScalingFactor: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Autoscaling Min And Max Scaling Factor\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testResource = new gcp.dataproc.MetastoreService(\"test_resource\", {\n serviceId: \"test-service\",\n location: \"us-central1\",\n databaseType: \"SPANNER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n scalingConfig: {\n autoscalingConfig: {\n autoscalingEnabled: true,\n limitConfig: {\n minScalingFactor: 0.1,\n maxScalingFactor: 1,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_resource = gcp.dataproc.MetastoreService(\"test_resource\",\n service_id=\"test-service\",\n location=\"us-central1\",\n database_type=\"SPANNER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n },\n scaling_config={\n \"autoscaling_config\": {\n \"autoscaling_enabled\": True,\n \"limit_config\": {\n \"min_scaling_factor\": 0.1,\n \"max_scaling_factor\": 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 testResource = new Gcp.Dataproc.MetastoreService(\"test_resource\", new()\n {\n ServiceId = \"test-service\",\n Location = \"us-central1\",\n DatabaseType = \"SPANNER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n ScalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigArgs\n {\n AutoscalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigAutoscalingConfigArgs\n {\n AutoscalingEnabled = true,\n LimitConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs\n {\n MinScalingFactor = 0.1,\n MaxScalingFactor = 1,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"test_resource\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"test-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tScalingConfig: \u0026dataproc.MetastoreServiceScalingConfigArgs{\n\t\t\t\tAutoscalingConfig: \u0026dataproc.MetastoreServiceScalingConfigAutoscalingConfigArgs{\n\t\t\t\t\tAutoscalingEnabled: pulumi.Bool(true),\n\t\t\t\t\tLimitConfig: \u0026dataproc.MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs{\n\t\t\t\t\t\tMinScalingFactor: pulumi.Float64(0.1),\n\t\t\t\t\t\tMaxScalingFactor: pulumi.Float64(1),\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.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigAutoscalingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs;\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 testResource = new MetastoreService(\"testResource\", MetastoreServiceArgs.builder()\n .serviceId(\"test-service\")\n .location(\"us-central1\")\n .databaseType(\"SPANNER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .scalingConfig(MetastoreServiceScalingConfigArgs.builder()\n .autoscalingConfig(MetastoreServiceScalingConfigAutoscalingConfigArgs.builder()\n .autoscalingEnabled(true)\n .limitConfig(MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs.builder()\n .minScalingFactor(0.1)\n .maxScalingFactor(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testResource:\n type: gcp:dataproc:MetastoreService\n name: test_resource\n properties:\n serviceId: test-service\n location: us-central1\n databaseType: SPANNER\n hiveMetastoreConfig:\n version: 3.1.2\n scalingConfig:\n autoscalingConfig:\n autoscalingEnabled: true\n limitConfig:\n minScalingFactor: 0.1\n maxScalingFactor: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Autoscaling Min Scaling Factor\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testResource = new gcp.dataproc.MetastoreService(\"test_resource\", {\n serviceId: \"test-service\",\n location: \"us-central1\",\n databaseType: \"SPANNER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n scalingConfig: {\n autoscalingConfig: {\n autoscalingEnabled: true,\n limitConfig: {\n minScalingFactor: 0.1,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_resource = gcp.dataproc.MetastoreService(\"test_resource\",\n service_id=\"test-service\",\n location=\"us-central1\",\n database_type=\"SPANNER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n },\n scaling_config={\n \"autoscaling_config\": {\n \"autoscaling_enabled\": True,\n \"limit_config\": {\n \"min_scaling_factor\": 0.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 testResource = new Gcp.Dataproc.MetastoreService(\"test_resource\", new()\n {\n ServiceId = \"test-service\",\n Location = \"us-central1\",\n DatabaseType = \"SPANNER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n ScalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigArgs\n {\n AutoscalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigAutoscalingConfigArgs\n {\n AutoscalingEnabled = true,\n LimitConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs\n {\n MinScalingFactor = 0.1,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"test_resource\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"test-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tScalingConfig: \u0026dataproc.MetastoreServiceScalingConfigArgs{\n\t\t\t\tAutoscalingConfig: \u0026dataproc.MetastoreServiceScalingConfigAutoscalingConfigArgs{\n\t\t\t\t\tAutoscalingEnabled: pulumi.Bool(true),\n\t\t\t\t\tLimitConfig: \u0026dataproc.MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs{\n\t\t\t\t\t\tMinScalingFactor: pulumi.Float64(0.1),\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.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigAutoscalingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs;\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 testResource = new MetastoreService(\"testResource\", MetastoreServiceArgs.builder()\n .serviceId(\"test-service\")\n .location(\"us-central1\")\n .databaseType(\"SPANNER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .scalingConfig(MetastoreServiceScalingConfigArgs.builder()\n .autoscalingConfig(MetastoreServiceScalingConfigAutoscalingConfigArgs.builder()\n .autoscalingEnabled(true)\n .limitConfig(MetastoreServiceScalingConfigAutoscalingConfigLimitConfigArgs.builder()\n .minScalingFactor(0.1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testResource:\n type: gcp:dataproc:MetastoreService\n name: test_resource\n properties:\n serviceId: test-service\n location: us-central1\n databaseType: SPANNER\n hiveMetastoreConfig:\n version: 3.1.2\n scalingConfig:\n autoscalingConfig:\n autoscalingEnabled: true\n limitConfig:\n minScalingFactor: 0.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Service Autoscaling No Limit Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testResource = new gcp.dataproc.MetastoreService(\"test_resource\", {\n serviceId: \"test-service\",\n location: \"us-central1\",\n databaseType: \"SPANNER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n scalingConfig: {\n autoscalingConfig: {\n autoscalingEnabled: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_resource = gcp.dataproc.MetastoreService(\"test_resource\",\n service_id=\"test-service\",\n location=\"us-central1\",\n database_type=\"SPANNER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n },\n scaling_config={\n \"autoscaling_config\": {\n \"autoscaling_enabled\": 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 testResource = new Gcp.Dataproc.MetastoreService(\"test_resource\", new()\n {\n ServiceId = \"test-service\",\n Location = \"us-central1\",\n DatabaseType = \"SPANNER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n ScalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigArgs\n {\n AutoscalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigAutoscalingConfigArgs\n {\n AutoscalingEnabled = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"test_resource\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"test-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\tScalingConfig: \u0026dataproc.MetastoreServiceScalingConfigArgs{\n\t\t\t\tAutoscalingConfig: \u0026dataproc.MetastoreServiceScalingConfigAutoscalingConfigArgs{\n\t\t\t\t\tAutoscalingEnabled: 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.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigAutoscalingConfigArgs;\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 testResource = new MetastoreService(\"testResource\", MetastoreServiceArgs.builder()\n .serviceId(\"test-service\")\n .location(\"us-central1\")\n .databaseType(\"SPANNER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .scalingConfig(MetastoreServiceScalingConfigArgs.builder()\n .autoscalingConfig(MetastoreServiceScalingConfigAutoscalingConfigArgs.builder()\n .autoscalingEnabled(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testResource:\n type: gcp:dataproc:MetastoreService\n name: test_resource\n properties:\n serviceId: test-service\n location: us-central1\n databaseType: SPANNER\n hiveMetastoreConfig:\n version: 3.1.2\n scalingConfig:\n autoscalingConfig:\n autoscalingEnabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/services/{{service_id}}`\n\n* `{{project}}/{{location}}/{{service_id}}`\n\n* `{{location}}/{{service_id}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataproc/metastoreService:MetastoreService default projects/{{project}}/locations/{{location}}/services/{{service_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/metastoreService:MetastoreService default {{project}}/{{location}}/{{service_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/metastoreService:MetastoreService default {{location}}/{{service_id}}\n```\n\n", "properties": { "artifactGcsUri": { "type": "string", @@ -182285,7 +182285,7 @@ } }, "gcp:dataproc/workflowTemplate:WorkflowTemplate": { - "description": "A Workflow Template is a reusable workflow configuration. It defines a graph of jobs with information on where to run those jobs.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst template = new gcp.dataproc.WorkflowTemplate(\"template\", {\n name: \"template-example\",\n location: \"us-central1\",\n placement: {\n managedCluster: {\n clusterName: \"my-cluster\",\n config: {\n gceClusterConfig: {\n zone: \"us-central1-a\",\n tags: [\n \"foo\",\n \"bar\",\n ],\n },\n masterConfig: {\n numInstances: 1,\n machineType: \"n1-standard-1\",\n diskConfig: {\n bootDiskType: \"pd-ssd\",\n bootDiskSizeGb: 15,\n },\n },\n workerConfig: {\n numInstances: 3,\n machineType: \"n1-standard-2\",\n diskConfig: {\n bootDiskSizeGb: 10,\n numLocalSsds: 2,\n },\n },\n secondaryWorkerConfig: {\n numInstances: 2,\n },\n softwareConfig: {\n imageVersion: \"2.0.35-debian10\",\n },\n },\n },\n },\n jobs: [\n {\n stepId: \"someJob\",\n sparkJob: {\n mainClass: \"SomeClass\",\n },\n },\n {\n stepId: \"otherJob\",\n prerequisiteStepIds: [\"someJob\"],\n prestoJob: {\n queryFileUri: \"someuri\",\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntemplate = gcp.dataproc.WorkflowTemplate(\"template\",\n name=\"template-example\",\n location=\"us-central1\",\n placement={\n \"managedCluster\": {\n \"clusterName\": \"my-cluster\",\n \"config\": {\n \"gceClusterConfig\": {\n \"zone\": \"us-central1-a\",\n \"tags\": [\n \"foo\",\n \"bar\",\n ],\n },\n \"masterConfig\": {\n \"numInstances\": 1,\n \"machineType\": \"n1-standard-1\",\n \"diskConfig\": {\n \"bootDiskType\": \"pd-ssd\",\n \"bootDiskSizeGb\": 15,\n },\n },\n \"workerConfig\": {\n \"numInstances\": 3,\n \"machineType\": \"n1-standard-2\",\n \"diskConfig\": {\n \"bootDiskSizeGb\": 10,\n \"numLocalSsds\": 2,\n },\n },\n \"secondaryWorkerConfig\": {\n \"numInstances\": 2,\n },\n \"softwareConfig\": {\n \"imageVersion\": \"2.0.35-debian10\",\n },\n },\n },\n },\n jobs=[\n {\n \"stepId\": \"someJob\",\n \"sparkJob\": {\n \"mainClass\": \"SomeClass\",\n },\n },\n {\n \"stepId\": \"otherJob\",\n \"prerequisiteStepIds\": [\"someJob\"],\n \"prestoJob\": {\n \"queryFileUri\": \"someuri\",\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 template = new Gcp.Dataproc.WorkflowTemplate(\"template\", new()\n {\n Name = \"template-example\",\n Location = \"us-central1\",\n Placement = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementArgs\n {\n ManagedCluster = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementManagedClusterArgs\n {\n ClusterName = \"my-cluster\",\n Config = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementManagedClusterConfigArgs\n {\n GceClusterConfig = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigArgs\n {\n Zone = \"us-central1-a\",\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n },\n MasterConfig = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementManagedClusterConfigMasterConfigArgs\n {\n NumInstances = 1,\n MachineType = \"n1-standard-1\",\n DiskConfig = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementManagedClusterConfigMasterConfigDiskConfigArgs\n {\n BootDiskType = \"pd-ssd\",\n BootDiskSizeGb = 15,\n },\n },\n WorkerConfig = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementManagedClusterConfigWorkerConfigArgs\n {\n NumInstances = 3,\n MachineType = \"n1-standard-2\",\n DiskConfig = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementManagedClusterConfigWorkerConfigDiskConfigArgs\n {\n BootDiskSizeGb = 10,\n NumLocalSsds = 2,\n },\n },\n SecondaryWorkerConfig = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementManagedClusterConfigSecondaryWorkerConfigArgs\n {\n NumInstances = 2,\n },\n SoftwareConfig = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementManagedClusterConfigSoftwareConfigArgs\n {\n ImageVersion = \"2.0.35-debian10\",\n },\n },\n },\n },\n Jobs = new[]\n {\n new Gcp.Dataproc.Inputs.WorkflowTemplateJobArgs\n {\n StepId = \"someJob\",\n SparkJob = new Gcp.Dataproc.Inputs.WorkflowTemplateJobSparkJobArgs\n {\n MainClass = \"SomeClass\",\n },\n },\n new Gcp.Dataproc.Inputs.WorkflowTemplateJobArgs\n {\n StepId = \"otherJob\",\n PrerequisiteStepIds = new[]\n {\n \"someJob\",\n },\n PrestoJob = new Gcp.Dataproc.Inputs.WorkflowTemplateJobPrestoJobArgs\n {\n QueryFileUri = \"someuri\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewWorkflowTemplate(ctx, \"template\", \u0026dataproc.WorkflowTemplateArgs{\n\t\t\tName: pulumi.String(\"template-example\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPlacement: \u0026dataproc.WorkflowTemplatePlacementArgs{\n\t\t\t\tManagedCluster: \u0026dataproc.WorkflowTemplatePlacementManagedClusterArgs{\n\t\t\t\t\tClusterName: pulumi.String(\"my-cluster\"),\n\t\t\t\t\tConfig: \u0026dataproc.WorkflowTemplatePlacementManagedClusterConfigArgs{\n\t\t\t\t\t\tGceClusterConfig: \u0026dataproc.WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigArgs{\n\t\t\t\t\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMasterConfig: \u0026dataproc.WorkflowTemplatePlacementManagedClusterConfigMasterConfigArgs{\n\t\t\t\t\t\t\tNumInstances: pulumi.Int(1),\n\t\t\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-1\"),\n\t\t\t\t\t\t\tDiskConfig: \u0026dataproc.WorkflowTemplatePlacementManagedClusterConfigMasterConfigDiskConfigArgs{\n\t\t\t\t\t\t\t\tBootDiskType: pulumi.String(\"pd-ssd\"),\n\t\t\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(15),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tWorkerConfig: \u0026dataproc.WorkflowTemplatePlacementManagedClusterConfigWorkerConfigArgs{\n\t\t\t\t\t\t\tNumInstances: pulumi.Int(3),\n\t\t\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\t\t\tDiskConfig: \u0026dataproc.WorkflowTemplatePlacementManagedClusterConfigWorkerConfigDiskConfigArgs{\n\t\t\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(10),\n\t\t\t\t\t\t\t\tNumLocalSsds: pulumi.Int(2),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSecondaryWorkerConfig: \u0026dataproc.WorkflowTemplatePlacementManagedClusterConfigSecondaryWorkerConfigArgs{\n\t\t\t\t\t\t\tNumInstances: pulumi.Int(2),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSoftwareConfig: \u0026dataproc.WorkflowTemplatePlacementManagedClusterConfigSoftwareConfigArgs{\n\t\t\t\t\t\t\tImageVersion: pulumi.String(\"2.0.35-debian10\"),\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\tJobs: dataproc.WorkflowTemplateJobArray{\n\t\t\t\t\u0026dataproc.WorkflowTemplateJobArgs{\n\t\t\t\t\tStepId: pulumi.String(\"someJob\"),\n\t\t\t\t\tSparkJob: \u0026dataproc.WorkflowTemplateJobSparkJobArgs{\n\t\t\t\t\t\tMainClass: pulumi.String(\"SomeClass\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026dataproc.WorkflowTemplateJobArgs{\n\t\t\t\t\tStepId: pulumi.String(\"otherJob\"),\n\t\t\t\t\tPrerequisiteStepIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"someJob\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrestoJob: \u0026dataproc.WorkflowTemplateJobPrestoJobArgs{\n\t\t\t\t\t\tQueryFileUri: pulumi.String(\"someuri\"),\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.dataproc.WorkflowTemplate;\nimport com.pulumi.gcp.dataproc.WorkflowTemplateArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterConfigMasterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterConfigMasterConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterConfigWorkerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterConfigWorkerConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterConfigSecondaryWorkerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplateJobArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplateJobSparkJobArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplateJobPrestoJobArgs;\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 template = new WorkflowTemplate(\"template\", WorkflowTemplateArgs.builder()\n .name(\"template-example\")\n .location(\"us-central1\")\n .placement(WorkflowTemplatePlacementArgs.builder()\n .managedCluster(WorkflowTemplatePlacementManagedClusterArgs.builder()\n .clusterName(\"my-cluster\")\n .config(WorkflowTemplatePlacementManagedClusterConfigArgs.builder()\n .gceClusterConfig(WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigArgs.builder()\n .zone(\"us-central1-a\")\n .tags( \n \"foo\",\n \"bar\")\n .build())\n .masterConfig(WorkflowTemplatePlacementManagedClusterConfigMasterConfigArgs.builder()\n .numInstances(1)\n .machineType(\"n1-standard-1\")\n .diskConfig(WorkflowTemplatePlacementManagedClusterConfigMasterConfigDiskConfigArgs.builder()\n .bootDiskType(\"pd-ssd\")\n .bootDiskSizeGb(15)\n .build())\n .build())\n .workerConfig(WorkflowTemplatePlacementManagedClusterConfigWorkerConfigArgs.builder()\n .numInstances(3)\n .machineType(\"n1-standard-2\")\n .diskConfig(WorkflowTemplatePlacementManagedClusterConfigWorkerConfigDiskConfigArgs.builder()\n .bootDiskSizeGb(10)\n .numLocalSsds(2)\n .build())\n .build())\n .secondaryWorkerConfig(WorkflowTemplatePlacementManagedClusterConfigSecondaryWorkerConfigArgs.builder()\n .numInstances(2)\n .build())\n .softwareConfig(WorkflowTemplatePlacementManagedClusterConfigSoftwareConfigArgs.builder()\n .imageVersion(\"2.0.35-debian10\")\n .build())\n .build())\n .build())\n .build())\n .jobs( \n WorkflowTemplateJobArgs.builder()\n .stepId(\"someJob\")\n .sparkJob(WorkflowTemplateJobSparkJobArgs.builder()\n .mainClass(\"SomeClass\")\n .build())\n .build(),\n WorkflowTemplateJobArgs.builder()\n .stepId(\"otherJob\")\n .prerequisiteStepIds(\"someJob\")\n .prestoJob(WorkflowTemplateJobPrestoJobArgs.builder()\n .queryFileUri(\"someuri\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n template:\n type: gcp:dataproc:WorkflowTemplate\n properties:\n name: template-example\n location: us-central1\n placement:\n managedCluster:\n clusterName: my-cluster\n config:\n gceClusterConfig:\n zone: us-central1-a\n tags:\n - foo\n - bar\n masterConfig:\n numInstances: 1\n machineType: n1-standard-1\n diskConfig:\n bootDiskType: pd-ssd\n bootDiskSizeGb: 15\n workerConfig:\n numInstances: 3\n machineType: n1-standard-2\n diskConfig:\n bootDiskSizeGb: 10\n numLocalSsds: 2\n secondaryWorkerConfig:\n numInstances: 2\n softwareConfig:\n imageVersion: 2.0.35-debian10\n jobs:\n - stepId: someJob\n sparkJob:\n mainClass: SomeClass\n - stepId: otherJob\n prerequisiteStepIds:\n - someJob\n prestoJob:\n queryFileUri: someuri\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkflowTemplate can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/workflowTemplates/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, WorkflowTemplate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataproc/workflowTemplate:WorkflowTemplate default projects/{{project}}/locations/{{location}}/workflowTemplates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/workflowTemplate:WorkflowTemplate default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/workflowTemplate:WorkflowTemplate default {{location}}/{{name}}\n```\n\n", + "description": "A Workflow Template is a reusable workflow configuration. It defines a graph of jobs with information on where to run those jobs.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst template = new gcp.dataproc.WorkflowTemplate(\"template\", {\n name: \"template-example\",\n location: \"us-central1\",\n placement: {\n managedCluster: {\n clusterName: \"my-cluster\",\n config: {\n gceClusterConfig: {\n zone: \"us-central1-a\",\n tags: [\n \"foo\",\n \"bar\",\n ],\n },\n masterConfig: {\n numInstances: 1,\n machineType: \"n1-standard-1\",\n diskConfig: {\n bootDiskType: \"pd-ssd\",\n bootDiskSizeGb: 15,\n },\n },\n workerConfig: {\n numInstances: 3,\n machineType: \"n1-standard-2\",\n diskConfig: {\n bootDiskSizeGb: 10,\n numLocalSsds: 2,\n },\n },\n secondaryWorkerConfig: {\n numInstances: 2,\n },\n softwareConfig: {\n imageVersion: \"2.0.35-debian10\",\n },\n },\n },\n },\n jobs: [\n {\n stepId: \"someJob\",\n sparkJob: {\n mainClass: \"SomeClass\",\n },\n },\n {\n stepId: \"otherJob\",\n prerequisiteStepIds: [\"someJob\"],\n prestoJob: {\n queryFileUri: \"someuri\",\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntemplate = gcp.dataproc.WorkflowTemplate(\"template\",\n name=\"template-example\",\n location=\"us-central1\",\n placement={\n \"managed_cluster\": {\n \"cluster_name\": \"my-cluster\",\n \"config\": {\n \"gce_cluster_config\": {\n \"zone\": \"us-central1-a\",\n \"tags\": [\n \"foo\",\n \"bar\",\n ],\n },\n \"master_config\": {\n \"num_instances\": 1,\n \"machine_type\": \"n1-standard-1\",\n \"disk_config\": {\n \"boot_disk_type\": \"pd-ssd\",\n \"boot_disk_size_gb\": 15,\n },\n },\n \"worker_config\": {\n \"num_instances\": 3,\n \"machine_type\": \"n1-standard-2\",\n \"disk_config\": {\n \"boot_disk_size_gb\": 10,\n \"num_local_ssds\": 2,\n },\n },\n \"secondary_worker_config\": {\n \"num_instances\": 2,\n },\n \"software_config\": {\n \"image_version\": \"2.0.35-debian10\",\n },\n },\n },\n },\n jobs=[\n {\n \"step_id\": \"someJob\",\n \"spark_job\": {\n \"main_class\": \"SomeClass\",\n },\n },\n {\n \"step_id\": \"otherJob\",\n \"prerequisite_step_ids\": [\"someJob\"],\n \"presto_job\": {\n \"query_file_uri\": \"someuri\",\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 template = new Gcp.Dataproc.WorkflowTemplate(\"template\", new()\n {\n Name = \"template-example\",\n Location = \"us-central1\",\n Placement = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementArgs\n {\n ManagedCluster = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementManagedClusterArgs\n {\n ClusterName = \"my-cluster\",\n Config = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementManagedClusterConfigArgs\n {\n GceClusterConfig = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigArgs\n {\n Zone = \"us-central1-a\",\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n },\n MasterConfig = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementManagedClusterConfigMasterConfigArgs\n {\n NumInstances = 1,\n MachineType = \"n1-standard-1\",\n DiskConfig = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementManagedClusterConfigMasterConfigDiskConfigArgs\n {\n BootDiskType = \"pd-ssd\",\n BootDiskSizeGb = 15,\n },\n },\n WorkerConfig = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementManagedClusterConfigWorkerConfigArgs\n {\n NumInstances = 3,\n MachineType = \"n1-standard-2\",\n DiskConfig = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementManagedClusterConfigWorkerConfigDiskConfigArgs\n {\n BootDiskSizeGb = 10,\n NumLocalSsds = 2,\n },\n },\n SecondaryWorkerConfig = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementManagedClusterConfigSecondaryWorkerConfigArgs\n {\n NumInstances = 2,\n },\n SoftwareConfig = new Gcp.Dataproc.Inputs.WorkflowTemplatePlacementManagedClusterConfigSoftwareConfigArgs\n {\n ImageVersion = \"2.0.35-debian10\",\n },\n },\n },\n },\n Jobs = new[]\n {\n new Gcp.Dataproc.Inputs.WorkflowTemplateJobArgs\n {\n StepId = \"someJob\",\n SparkJob = new Gcp.Dataproc.Inputs.WorkflowTemplateJobSparkJobArgs\n {\n MainClass = \"SomeClass\",\n },\n },\n new Gcp.Dataproc.Inputs.WorkflowTemplateJobArgs\n {\n StepId = \"otherJob\",\n PrerequisiteStepIds = new[]\n {\n \"someJob\",\n },\n PrestoJob = new Gcp.Dataproc.Inputs.WorkflowTemplateJobPrestoJobArgs\n {\n QueryFileUri = \"someuri\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewWorkflowTemplate(ctx, \"template\", \u0026dataproc.WorkflowTemplateArgs{\n\t\t\tName: pulumi.String(\"template-example\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPlacement: \u0026dataproc.WorkflowTemplatePlacementArgs{\n\t\t\t\tManagedCluster: \u0026dataproc.WorkflowTemplatePlacementManagedClusterArgs{\n\t\t\t\t\tClusterName: pulumi.String(\"my-cluster\"),\n\t\t\t\t\tConfig: \u0026dataproc.WorkflowTemplatePlacementManagedClusterConfigArgs{\n\t\t\t\t\t\tGceClusterConfig: \u0026dataproc.WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigArgs{\n\t\t\t\t\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMasterConfig: \u0026dataproc.WorkflowTemplatePlacementManagedClusterConfigMasterConfigArgs{\n\t\t\t\t\t\t\tNumInstances: pulumi.Int(1),\n\t\t\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-1\"),\n\t\t\t\t\t\t\tDiskConfig: \u0026dataproc.WorkflowTemplatePlacementManagedClusterConfigMasterConfigDiskConfigArgs{\n\t\t\t\t\t\t\t\tBootDiskType: pulumi.String(\"pd-ssd\"),\n\t\t\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(15),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tWorkerConfig: \u0026dataproc.WorkflowTemplatePlacementManagedClusterConfigWorkerConfigArgs{\n\t\t\t\t\t\t\tNumInstances: pulumi.Int(3),\n\t\t\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\t\t\tDiskConfig: \u0026dataproc.WorkflowTemplatePlacementManagedClusterConfigWorkerConfigDiskConfigArgs{\n\t\t\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(10),\n\t\t\t\t\t\t\t\tNumLocalSsds: pulumi.Int(2),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSecondaryWorkerConfig: \u0026dataproc.WorkflowTemplatePlacementManagedClusterConfigSecondaryWorkerConfigArgs{\n\t\t\t\t\t\t\tNumInstances: pulumi.Int(2),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSoftwareConfig: \u0026dataproc.WorkflowTemplatePlacementManagedClusterConfigSoftwareConfigArgs{\n\t\t\t\t\t\t\tImageVersion: pulumi.String(\"2.0.35-debian10\"),\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\tJobs: dataproc.WorkflowTemplateJobArray{\n\t\t\t\t\u0026dataproc.WorkflowTemplateJobArgs{\n\t\t\t\t\tStepId: pulumi.String(\"someJob\"),\n\t\t\t\t\tSparkJob: \u0026dataproc.WorkflowTemplateJobSparkJobArgs{\n\t\t\t\t\t\tMainClass: pulumi.String(\"SomeClass\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026dataproc.WorkflowTemplateJobArgs{\n\t\t\t\t\tStepId: pulumi.String(\"otherJob\"),\n\t\t\t\t\tPrerequisiteStepIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"someJob\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrestoJob: \u0026dataproc.WorkflowTemplateJobPrestoJobArgs{\n\t\t\t\t\t\tQueryFileUri: pulumi.String(\"someuri\"),\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.dataproc.WorkflowTemplate;\nimport com.pulumi.gcp.dataproc.WorkflowTemplateArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterConfigMasterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterConfigMasterConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterConfigWorkerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterConfigWorkerConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterConfigSecondaryWorkerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplatePlacementManagedClusterConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplateJobArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplateJobSparkJobArgs;\nimport com.pulumi.gcp.dataproc.inputs.WorkflowTemplateJobPrestoJobArgs;\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 template = new WorkflowTemplate(\"template\", WorkflowTemplateArgs.builder()\n .name(\"template-example\")\n .location(\"us-central1\")\n .placement(WorkflowTemplatePlacementArgs.builder()\n .managedCluster(WorkflowTemplatePlacementManagedClusterArgs.builder()\n .clusterName(\"my-cluster\")\n .config(WorkflowTemplatePlacementManagedClusterConfigArgs.builder()\n .gceClusterConfig(WorkflowTemplatePlacementManagedClusterConfigGceClusterConfigArgs.builder()\n .zone(\"us-central1-a\")\n .tags( \n \"foo\",\n \"bar\")\n .build())\n .masterConfig(WorkflowTemplatePlacementManagedClusterConfigMasterConfigArgs.builder()\n .numInstances(1)\n .machineType(\"n1-standard-1\")\n .diskConfig(WorkflowTemplatePlacementManagedClusterConfigMasterConfigDiskConfigArgs.builder()\n .bootDiskType(\"pd-ssd\")\n .bootDiskSizeGb(15)\n .build())\n .build())\n .workerConfig(WorkflowTemplatePlacementManagedClusterConfigWorkerConfigArgs.builder()\n .numInstances(3)\n .machineType(\"n1-standard-2\")\n .diskConfig(WorkflowTemplatePlacementManagedClusterConfigWorkerConfigDiskConfigArgs.builder()\n .bootDiskSizeGb(10)\n .numLocalSsds(2)\n .build())\n .build())\n .secondaryWorkerConfig(WorkflowTemplatePlacementManagedClusterConfigSecondaryWorkerConfigArgs.builder()\n .numInstances(2)\n .build())\n .softwareConfig(WorkflowTemplatePlacementManagedClusterConfigSoftwareConfigArgs.builder()\n .imageVersion(\"2.0.35-debian10\")\n .build())\n .build())\n .build())\n .build())\n .jobs( \n WorkflowTemplateJobArgs.builder()\n .stepId(\"someJob\")\n .sparkJob(WorkflowTemplateJobSparkJobArgs.builder()\n .mainClass(\"SomeClass\")\n .build())\n .build(),\n WorkflowTemplateJobArgs.builder()\n .stepId(\"otherJob\")\n .prerequisiteStepIds(\"someJob\")\n .prestoJob(WorkflowTemplateJobPrestoJobArgs.builder()\n .queryFileUri(\"someuri\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n template:\n type: gcp:dataproc:WorkflowTemplate\n properties:\n name: template-example\n location: us-central1\n placement:\n managedCluster:\n clusterName: my-cluster\n config:\n gceClusterConfig:\n zone: us-central1-a\n tags:\n - foo\n - bar\n masterConfig:\n numInstances: 1\n machineType: n1-standard-1\n diskConfig:\n bootDiskType: pd-ssd\n bootDiskSizeGb: 15\n workerConfig:\n numInstances: 3\n machineType: n1-standard-2\n diskConfig:\n bootDiskSizeGb: 10\n numLocalSsds: 2\n secondaryWorkerConfig:\n numInstances: 2\n softwareConfig:\n imageVersion: 2.0.35-debian10\n jobs:\n - stepId: someJob\n sparkJob:\n mainClass: SomeClass\n - stepId: otherJob\n prerequisiteStepIds:\n - someJob\n prestoJob:\n queryFileUri: someuri\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkflowTemplate can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/workflowTemplates/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, WorkflowTemplate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataproc/workflowTemplate:WorkflowTemplate default projects/{{project}}/locations/{{location}}/workflowTemplates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/workflowTemplate:WorkflowTemplate default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/workflowTemplate:WorkflowTemplate default {{location}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -182610,7 +182610,7 @@ } }, "gcp:datastream/connectionProfile:ConnectionProfile": { - "description": "A set of reusable connection configurations to be used as a source or destination for a stream.\n\n\nTo get more information about ConnectionProfile, see:\n\n* [API documentation](https://cloud.google.com/datastream/docs/reference/rest/v1/projects.locations.connectionProfiles)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/datastream/docs/create-connection-profiles)\n\n\n\n## Example Usage\n\n### Datastream Connection Profile Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"my-profile\",\n gcsProfile: {\n bucket: \"my-bucket\",\n rootPath: \"/path\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profile\",\n gcs_profile={\n \"bucket\": \"my-bucket\",\n \"rootPath\": \"/path\",\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 @default = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profile\",\n GcsProfile = new Gcp.Datastream.Inputs.ConnectionProfileGcsProfileArgs\n {\n Bucket = \"my-bucket\",\n RootPath = \"/path\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\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 := datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profile\"),\n\t\t\tGcsProfile: \u0026datastream.ConnectionProfileGcsProfileArgs{\n\t\t\t\tBucket: pulumi.String(\"my-bucket\"),\n\t\t\t\tRootPath: pulumi.String(\"/path\"),\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.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileGcsProfileArgs;\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 ConnectionProfile(\"default\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"my-profile\")\n .gcsProfile(ConnectionProfileGcsProfileArgs.builder()\n .bucket(\"my-bucket\")\n .rootPath(\"/path\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: my-profile\n gcsProfile:\n bucket: my-bucket\n rootPath: /path\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Connection Profile Postgresql Private Connection\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"my-network\"});\nconst privateConnection = new gcp.datastream.PrivateConnection(\"private_connection\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n privateConnectionId: \"my-connection\",\n labels: {\n key: \"value\",\n },\n vpcPeeringConfig: {\n vpc: _default.id,\n subnet: \"10.0.0.0/29\",\n },\n});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-instance\",\n databaseVersion: \"POSTGRES_14\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst defaultConnectionProfile = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"my-profile\",\n postgresqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n database: db.name,\n },\n privateConnectivity: {\n privateConnection: privateConnection.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ndefault = gcp.compute.Network(\"default\", name=\"my-network\")\nprivate_connection = gcp.datastream.PrivateConnection(\"private_connection\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n private_connection_id=\"my-connection\",\n labels={\n \"key\": \"value\",\n },\n vpc_peering_config={\n \"vpc\": default.id,\n \"subnet\": \"10.0.0.0/29\",\n })\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-instance\",\n database_version=\"POSTGRES_14\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"ipConfiguration\": {\n \"authorizedNetworks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\ndefault_connection_profile = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profile\",\n postgresql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n \"database\": db.name,\n },\n private_connectivity={\n \"privateConnection\": private_connection.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n });\n\n var privateConnection = new Gcp.Datastream.PrivateConnection(\"private_connection\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n PrivateConnectionId = \"my-connection\",\n Labels = \n {\n { \"key\", \"value\" },\n },\n VpcPeeringConfig = new Gcp.Datastream.Inputs.PrivateConnectionVpcPeeringConfigArgs\n {\n Vpc = @default.Id,\n Subnet = \"10.0.0.0/29\",\n },\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-instance\",\n DatabaseVersion = \"POSTGRES_14\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var defaultConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profile\",\n PostgresqlProfile = new Gcp.Datastream.Inputs.ConnectionProfilePostgresqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n Database = db.Name,\n },\n PrivateConnectivity = new Gcp.Datastream.Inputs.ConnectionProfilePrivateConnectivityArgs\n {\n PrivateConnection = privateConnection.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateConnection, err := datastream.NewPrivateConnection(ctx, \"private_connection\", \u0026datastream.PrivateConnectionArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t\tVpcPeeringConfig: \u0026datastream.PrivateConnectionVpcPeeringConfigArgs{\n\t\t\t\tVpc: _default.ID(),\n\t\t\t\tSubnet: pulumi.String(\"10.0.0.0/29\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_14\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\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\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profile\"),\n\t\t\tPostgresqlProfile: \u0026datastream.ConnectionProfilePostgresqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t\tDatabase: db.Name,\n\t\t\t},\n\t\t\tPrivateConnectivity: \u0026datastream.ConnectionProfilePrivateConnectivityArgs{\n\t\t\t\tPrivateConnection: privateConnection.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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.datastream.PrivateConnection;\nimport com.pulumi.gcp.datastream.PrivateConnectionArgs;\nimport com.pulumi.gcp.datastream.inputs.PrivateConnectionVpcPeeringConfigArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfilePostgresqlProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfilePrivateConnectivityArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"my-network\")\n .build());\n\n var privateConnection = new PrivateConnection(\"privateConnection\", PrivateConnectionArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .privateConnectionId(\"my-connection\")\n .labels(Map.of(\"key\", \"value\"))\n .vpcPeeringConfig(PrivateConnectionVpcPeeringConfigArgs.builder()\n .vpc(default_.id())\n .subnet(\"10.0.0.0/29\")\n .build())\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-instance\")\n .databaseVersion(\"POSTGRES_14\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var defaultConnectionProfile = new ConnectionProfile(\"defaultConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"my-profile\")\n .postgresqlProfile(ConnectionProfilePostgresqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .database(db.name())\n .build())\n .privateConnectivity(ConnectionProfilePrivateConnectivityArgs.builder()\n .privateConnection(privateConnection.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n privateConnection:\n type: gcp:datastream:PrivateConnection\n name: private_connection\n properties:\n displayName: Connection profile\n location: us-central1\n privateConnectionId: my-connection\n labels:\n key: value\n vpcPeeringConfig:\n vpc: ${default.id}\n subnet: 10.0.0.0/29\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-instance\n databaseVersion: POSTGRES_14\n region: us-central1\n settings:\n tier: db-f1-micro\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n defaultConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: default\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: my-profile\n postgresqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n database: ${db.name}\n privateConnectivity:\n privateConnection: ${privateConnection.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Connection Profile Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"my-profile\",\n gcsProfile: {\n bucket: \"my-bucket\",\n rootPath: \"/path\",\n },\n forwardSshConnectivity: {\n hostname: \"google.com\",\n username: \"my-user\",\n port: 8022,\n password: \"swordfish\",\n },\n labels: {\n key: \"value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profile\",\n gcs_profile={\n \"bucket\": \"my-bucket\",\n \"rootPath\": \"/path\",\n },\n forward_ssh_connectivity={\n \"hostname\": \"google.com\",\n \"username\": \"my-user\",\n \"port\": 8022,\n \"password\": \"swordfish\",\n },\n labels={\n \"key\": \"value\",\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 @default = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profile\",\n GcsProfile = new Gcp.Datastream.Inputs.ConnectionProfileGcsProfileArgs\n {\n Bucket = \"my-bucket\",\n RootPath = \"/path\",\n },\n ForwardSshConnectivity = new Gcp.Datastream.Inputs.ConnectionProfileForwardSshConnectivityArgs\n {\n Hostname = \"google.com\",\n Username = \"my-user\",\n Port = 8022,\n Password = \"swordfish\",\n },\n Labels = \n {\n { \"key\", \"value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\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 := datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profile\"),\n\t\t\tGcsProfile: \u0026datastream.ConnectionProfileGcsProfileArgs{\n\t\t\t\tBucket: pulumi.String(\"my-bucket\"),\n\t\t\t\tRootPath: pulumi.String(\"/path\"),\n\t\t\t},\n\t\t\tForwardSshConnectivity: \u0026datastream.ConnectionProfileForwardSshConnectivityArgs{\n\t\t\t\tHostname: pulumi.String(\"google.com\"),\n\t\t\t\tUsername: pulumi.String(\"my-user\"),\n\t\t\t\tPort: pulumi.Int(8022),\n\t\t\t\tPassword: pulumi.String(\"swordfish\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\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.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileGcsProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileForwardSshConnectivityArgs;\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 ConnectionProfile(\"default\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"my-profile\")\n .gcsProfile(ConnectionProfileGcsProfileArgs.builder()\n .bucket(\"my-bucket\")\n .rootPath(\"/path\")\n .build())\n .forwardSshConnectivity(ConnectionProfileForwardSshConnectivityArgs.builder()\n .hostname(\"google.com\")\n .username(\"my-user\")\n .port(8022)\n .password(\"swordfish\")\n .build())\n .labels(Map.of(\"key\", \"value\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: my-profile\n gcsProfile:\n bucket: my-bucket\n rootPath: /path\n forwardSshConnectivity:\n hostname: google.com\n username: my-user\n port: 8022\n password: swordfish\n labels:\n key: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Connection Profile Postgres\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-instance\",\n databaseVersion: \"POSTGRES_14\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst _default = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"my-profile\",\n postgresqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n database: db.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-instance\",\n database_version=\"POSTGRES_14\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"ipConfiguration\": {\n \"authorizedNetworks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\ndefault = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profile\",\n postgresql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n \"database\": db.name,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-instance\",\n DatabaseVersion = \"POSTGRES_14\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var @default = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profile\",\n PostgresqlProfile = new Gcp.Datastream.Inputs.ConnectionProfilePostgresqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n Database = db.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\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 := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_14\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\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\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profile\"),\n\t\t\tPostgresqlProfile: \u0026datastream.ConnectionProfilePostgresqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t\tDatabase: db.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.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfilePostgresqlProfileArgs;\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 DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-instance\")\n .databaseVersion(\"POSTGRES_14\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var default_ = new ConnectionProfile(\"default\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"my-profile\")\n .postgresqlProfile(ConnectionProfilePostgresqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .database(db.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-instance\n databaseVersion: POSTGRES_14\n region: us-central1\n settings:\n tier: db-f1-micro\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n default:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: my-profile\n postgresqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n database: ${db.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Connection Profile Sql Server\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"sql-server\",\n databaseVersion: \"SQLSERVER_2019_STANDARD\",\n region: \"us-central1\",\n rootPassword: \"root-password\",\n deletionProtection: true,\n settings: {\n tier: \"db-custom-2-4096\",\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n});\nconst db = new gcp.sql.Database(\"db\", {\n name: \"db\",\n instance: instance.name,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: \"password\",\n});\nconst _default = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"SQL Server Source\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n sqlServerProfile: {\n hostname: instance.publicIpAddress,\n port: 1433,\n username: user.name,\n password: user.password,\n database: db.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"sql-server\",\n database_version=\"SQLSERVER_2019_STANDARD\",\n region=\"us-central1\",\n root_password=\"root-password\",\n deletion_protection=True,\n settings={\n \"tier\": \"db-custom-2-4096\",\n \"ipConfiguration\": {\n \"authorizedNetworks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n })\ndb = gcp.sql.Database(\"db\",\n name=\"db\",\n instance=instance.name)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=\"password\")\ndefault = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"SQL Server Source\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n sql_server_profile={\n \"hostname\": instance.public_ip_address,\n \"port\": 1433,\n \"username\": user.name,\n \"password\": user.password,\n \"database\": db.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 instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"sql-server\",\n DatabaseVersion = \"SQLSERVER_2019_STANDARD\",\n Region = \"us-central1\",\n RootPassword = \"root-password\",\n DeletionProtection = true,\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-4096\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Name = \"db\",\n Instance = instance.Name,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = \"password\",\n });\n\n var @default = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"SQL Server Source\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n SqlServerProfile = new Gcp.Datastream.Inputs.ConnectionProfileSqlServerProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Port = 1433,\n Username = user.Name,\n Password = user.Password,\n Database = db.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"sql-server\"),\n\t\t\tDatabaseVersion: pulumi.String(\"SQLSERVER_2019_STANDARD\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tRootPassword: pulumi.String(\"root-password\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-4096\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\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\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tName: pulumi.String(\"db\"),\n\t\t\tInstance: instance.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pulumi.String(\"password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"SQL Server Source\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tSqlServerProfile: \u0026datastream.ConnectionProfileSqlServerProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tPort: pulumi.Int(1433),\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t\tDatabase: db.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.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileSqlServerProfileArgs;\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 DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"sql-server\")\n .databaseVersion(\"SQLSERVER_2019_STANDARD\")\n .region(\"us-central1\")\n .rootPassword(\"root-password\")\n .deletionProtection(\"true\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-4096\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .name(\"db\")\n .instance(instance.name())\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(\"password\")\n .build());\n\n var default_ = new ConnectionProfile(\"default\", ConnectionProfileArgs.builder()\n .displayName(\"SQL Server Source\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .sqlServerProfile(ConnectionProfileSqlServerProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .port(1433)\n .username(user.name())\n .password(user.password())\n .database(db.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: sql-server\n databaseVersion: SQLSERVER_2019_STANDARD\n region: us-central1\n rootPassword: root-password\n deletionProtection: 'true'\n settings:\n tier: db-custom-2-4096\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n db:\n type: gcp:sql:Database\n properties:\n name: db\n instance: ${instance.name}\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: password\n default:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: SQL Server Source\n location: us-central1\n connectionProfileId: source-profile\n sqlServerProfile:\n hostname: ${instance.publicIpAddress}\n port: 1433\n username: ${user.name}\n password: ${user.password}\n database: ${db.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnectionProfile can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}`\n\n* `{{project}}/{{location}}/{{connection_profile_id}}`\n\n* `{{location}}/{{connection_profile_id}}`\n\nWhen using the `pulumi import` command, ConnectionProfile can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:datastream/connectionProfile:ConnectionProfile default projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}\n```\n\n```sh\n$ pulumi import gcp:datastream/connectionProfile:ConnectionProfile default {{project}}/{{location}}/{{connection_profile_id}}\n```\n\n```sh\n$ pulumi import gcp:datastream/connectionProfile:ConnectionProfile default {{location}}/{{connection_profile_id}}\n```\n\n", + "description": "A set of reusable connection configurations to be used as a source or destination for a stream.\n\n\nTo get more information about ConnectionProfile, see:\n\n* [API documentation](https://cloud.google.com/datastream/docs/reference/rest/v1/projects.locations.connectionProfiles)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/datastream/docs/create-connection-profiles)\n\n\n\n## Example Usage\n\n### Datastream Connection Profile Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"my-profile\",\n gcsProfile: {\n bucket: \"my-bucket\",\n rootPath: \"/path\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profile\",\n gcs_profile={\n \"bucket\": \"my-bucket\",\n \"root_path\": \"/path\",\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 @default = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profile\",\n GcsProfile = new Gcp.Datastream.Inputs.ConnectionProfileGcsProfileArgs\n {\n Bucket = \"my-bucket\",\n RootPath = \"/path\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\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 := datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profile\"),\n\t\t\tGcsProfile: \u0026datastream.ConnectionProfileGcsProfileArgs{\n\t\t\t\tBucket: pulumi.String(\"my-bucket\"),\n\t\t\t\tRootPath: pulumi.String(\"/path\"),\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.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileGcsProfileArgs;\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 ConnectionProfile(\"default\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"my-profile\")\n .gcsProfile(ConnectionProfileGcsProfileArgs.builder()\n .bucket(\"my-bucket\")\n .rootPath(\"/path\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: my-profile\n gcsProfile:\n bucket: my-bucket\n rootPath: /path\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Connection Profile Postgresql Private Connection\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"my-network\"});\nconst privateConnection = new gcp.datastream.PrivateConnection(\"private_connection\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n privateConnectionId: \"my-connection\",\n labels: {\n key: \"value\",\n },\n vpcPeeringConfig: {\n vpc: _default.id,\n subnet: \"10.0.0.0/29\",\n },\n});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-instance\",\n databaseVersion: \"POSTGRES_14\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst defaultConnectionProfile = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"my-profile\",\n postgresqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n database: db.name,\n },\n privateConnectivity: {\n privateConnection: privateConnection.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ndefault = gcp.compute.Network(\"default\", name=\"my-network\")\nprivate_connection = gcp.datastream.PrivateConnection(\"private_connection\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n private_connection_id=\"my-connection\",\n labels={\n \"key\": \"value\",\n },\n vpc_peering_config={\n \"vpc\": default.id,\n \"subnet\": \"10.0.0.0/29\",\n })\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-instance\",\n database_version=\"POSTGRES_14\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\ndefault_connection_profile = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profile\",\n postgresql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n \"database\": db.name,\n },\n private_connectivity={\n \"private_connection\": private_connection.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n });\n\n var privateConnection = new Gcp.Datastream.PrivateConnection(\"private_connection\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n PrivateConnectionId = \"my-connection\",\n Labels = \n {\n { \"key\", \"value\" },\n },\n VpcPeeringConfig = new Gcp.Datastream.Inputs.PrivateConnectionVpcPeeringConfigArgs\n {\n Vpc = @default.Id,\n Subnet = \"10.0.0.0/29\",\n },\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-instance\",\n DatabaseVersion = \"POSTGRES_14\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var defaultConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profile\",\n PostgresqlProfile = new Gcp.Datastream.Inputs.ConnectionProfilePostgresqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n Database = db.Name,\n },\n PrivateConnectivity = new Gcp.Datastream.Inputs.ConnectionProfilePrivateConnectivityArgs\n {\n PrivateConnection = privateConnection.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateConnection, err := datastream.NewPrivateConnection(ctx, \"private_connection\", \u0026datastream.PrivateConnectionArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t\tVpcPeeringConfig: \u0026datastream.PrivateConnectionVpcPeeringConfigArgs{\n\t\t\t\tVpc: _default.ID(),\n\t\t\t\tSubnet: pulumi.String(\"10.0.0.0/29\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_14\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\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\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profile\"),\n\t\t\tPostgresqlProfile: \u0026datastream.ConnectionProfilePostgresqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t\tDatabase: db.Name,\n\t\t\t},\n\t\t\tPrivateConnectivity: \u0026datastream.ConnectionProfilePrivateConnectivityArgs{\n\t\t\t\tPrivateConnection: privateConnection.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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.datastream.PrivateConnection;\nimport com.pulumi.gcp.datastream.PrivateConnectionArgs;\nimport com.pulumi.gcp.datastream.inputs.PrivateConnectionVpcPeeringConfigArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfilePostgresqlProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfilePrivateConnectivityArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"my-network\")\n .build());\n\n var privateConnection = new PrivateConnection(\"privateConnection\", PrivateConnectionArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .privateConnectionId(\"my-connection\")\n .labels(Map.of(\"key\", \"value\"))\n .vpcPeeringConfig(PrivateConnectionVpcPeeringConfigArgs.builder()\n .vpc(default_.id())\n .subnet(\"10.0.0.0/29\")\n .build())\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-instance\")\n .databaseVersion(\"POSTGRES_14\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var defaultConnectionProfile = new ConnectionProfile(\"defaultConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"my-profile\")\n .postgresqlProfile(ConnectionProfilePostgresqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .database(db.name())\n .build())\n .privateConnectivity(ConnectionProfilePrivateConnectivityArgs.builder()\n .privateConnection(privateConnection.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n privateConnection:\n type: gcp:datastream:PrivateConnection\n name: private_connection\n properties:\n displayName: Connection profile\n location: us-central1\n privateConnectionId: my-connection\n labels:\n key: value\n vpcPeeringConfig:\n vpc: ${default.id}\n subnet: 10.0.0.0/29\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-instance\n databaseVersion: POSTGRES_14\n region: us-central1\n settings:\n tier: db-f1-micro\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n defaultConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: default\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: my-profile\n postgresqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n database: ${db.name}\n privateConnectivity:\n privateConnection: ${privateConnection.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Connection Profile Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"my-profile\",\n gcsProfile: {\n bucket: \"my-bucket\",\n rootPath: \"/path\",\n },\n forwardSshConnectivity: {\n hostname: \"google.com\",\n username: \"my-user\",\n port: 8022,\n password: \"swordfish\",\n },\n labels: {\n key: \"value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profile\",\n gcs_profile={\n \"bucket\": \"my-bucket\",\n \"root_path\": \"/path\",\n },\n forward_ssh_connectivity={\n \"hostname\": \"google.com\",\n \"username\": \"my-user\",\n \"port\": 8022,\n \"password\": \"swordfish\",\n },\n labels={\n \"key\": \"value\",\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 @default = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profile\",\n GcsProfile = new Gcp.Datastream.Inputs.ConnectionProfileGcsProfileArgs\n {\n Bucket = \"my-bucket\",\n RootPath = \"/path\",\n },\n ForwardSshConnectivity = new Gcp.Datastream.Inputs.ConnectionProfileForwardSshConnectivityArgs\n {\n Hostname = \"google.com\",\n Username = \"my-user\",\n Port = 8022,\n Password = \"swordfish\",\n },\n Labels = \n {\n { \"key\", \"value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\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 := datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profile\"),\n\t\t\tGcsProfile: \u0026datastream.ConnectionProfileGcsProfileArgs{\n\t\t\t\tBucket: pulumi.String(\"my-bucket\"),\n\t\t\t\tRootPath: pulumi.String(\"/path\"),\n\t\t\t},\n\t\t\tForwardSshConnectivity: \u0026datastream.ConnectionProfileForwardSshConnectivityArgs{\n\t\t\t\tHostname: pulumi.String(\"google.com\"),\n\t\t\t\tUsername: pulumi.String(\"my-user\"),\n\t\t\t\tPort: pulumi.Int(8022),\n\t\t\t\tPassword: pulumi.String(\"swordfish\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\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.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileGcsProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileForwardSshConnectivityArgs;\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 ConnectionProfile(\"default\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"my-profile\")\n .gcsProfile(ConnectionProfileGcsProfileArgs.builder()\n .bucket(\"my-bucket\")\n .rootPath(\"/path\")\n .build())\n .forwardSshConnectivity(ConnectionProfileForwardSshConnectivityArgs.builder()\n .hostname(\"google.com\")\n .username(\"my-user\")\n .port(8022)\n .password(\"swordfish\")\n .build())\n .labels(Map.of(\"key\", \"value\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: my-profile\n gcsProfile:\n bucket: my-bucket\n rootPath: /path\n forwardSshConnectivity:\n hostname: google.com\n username: my-user\n port: 8022\n password: swordfish\n labels:\n key: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Connection Profile Postgres\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-instance\",\n databaseVersion: \"POSTGRES_14\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst _default = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"my-profile\",\n postgresqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n database: db.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-instance\",\n database_version=\"POSTGRES_14\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\ndefault = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profile\",\n postgresql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n \"database\": db.name,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-instance\",\n DatabaseVersion = \"POSTGRES_14\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var @default = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profile\",\n PostgresqlProfile = new Gcp.Datastream.Inputs.ConnectionProfilePostgresqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n Database = db.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\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 := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_14\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\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\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profile\"),\n\t\t\tPostgresqlProfile: \u0026datastream.ConnectionProfilePostgresqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t\tDatabase: db.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.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfilePostgresqlProfileArgs;\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 DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-instance\")\n .databaseVersion(\"POSTGRES_14\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var default_ = new ConnectionProfile(\"default\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"my-profile\")\n .postgresqlProfile(ConnectionProfilePostgresqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .database(db.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-instance\n databaseVersion: POSTGRES_14\n region: us-central1\n settings:\n tier: db-f1-micro\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n default:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: my-profile\n postgresqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n database: ${db.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Connection Profile Sql Server\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"sql-server\",\n databaseVersion: \"SQLSERVER_2019_STANDARD\",\n region: \"us-central1\",\n rootPassword: \"root-password\",\n deletionProtection: true,\n settings: {\n tier: \"db-custom-2-4096\",\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n});\nconst db = new gcp.sql.Database(\"db\", {\n name: \"db\",\n instance: instance.name,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: \"password\",\n});\nconst _default = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"SQL Server Source\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n sqlServerProfile: {\n hostname: instance.publicIpAddress,\n port: 1433,\n username: user.name,\n password: user.password,\n database: db.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"sql-server\",\n database_version=\"SQLSERVER_2019_STANDARD\",\n region=\"us-central1\",\n root_password=\"root-password\",\n deletion_protection=True,\n settings={\n \"tier\": \"db-custom-2-4096\",\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n })\ndb = gcp.sql.Database(\"db\",\n name=\"db\",\n instance=instance.name)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=\"password\")\ndefault = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"SQL Server Source\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n sql_server_profile={\n \"hostname\": instance.public_ip_address,\n \"port\": 1433,\n \"username\": user.name,\n \"password\": user.password,\n \"database\": db.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 instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"sql-server\",\n DatabaseVersion = \"SQLSERVER_2019_STANDARD\",\n Region = \"us-central1\",\n RootPassword = \"root-password\",\n DeletionProtection = true,\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-4096\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Name = \"db\",\n Instance = instance.Name,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = \"password\",\n });\n\n var @default = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"SQL Server Source\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n SqlServerProfile = new Gcp.Datastream.Inputs.ConnectionProfileSqlServerProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Port = 1433,\n Username = user.Name,\n Password = user.Password,\n Database = db.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"sql-server\"),\n\t\t\tDatabaseVersion: pulumi.String(\"SQLSERVER_2019_STANDARD\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tRootPassword: pulumi.String(\"root-password\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-4096\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\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\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tName: pulumi.String(\"db\"),\n\t\t\tInstance: instance.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pulumi.String(\"password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"SQL Server Source\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tSqlServerProfile: \u0026datastream.ConnectionProfileSqlServerProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tPort: pulumi.Int(1433),\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t\tDatabase: db.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.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileSqlServerProfileArgs;\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 DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"sql-server\")\n .databaseVersion(\"SQLSERVER_2019_STANDARD\")\n .region(\"us-central1\")\n .rootPassword(\"root-password\")\n .deletionProtection(\"true\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-4096\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .name(\"db\")\n .instance(instance.name())\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(\"password\")\n .build());\n\n var default_ = new ConnectionProfile(\"default\", ConnectionProfileArgs.builder()\n .displayName(\"SQL Server Source\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .sqlServerProfile(ConnectionProfileSqlServerProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .port(1433)\n .username(user.name())\n .password(user.password())\n .database(db.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: sql-server\n databaseVersion: SQLSERVER_2019_STANDARD\n region: us-central1\n rootPassword: root-password\n deletionProtection: 'true'\n settings:\n tier: db-custom-2-4096\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n db:\n type: gcp:sql:Database\n properties:\n name: db\n instance: ${instance.name}\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: password\n default:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: SQL Server Source\n location: us-central1\n connectionProfileId: source-profile\n sqlServerProfile:\n hostname: ${instance.publicIpAddress}\n port: 1433\n username: ${user.name}\n password: ${user.password}\n database: ${db.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnectionProfile can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}`\n\n* `{{project}}/{{location}}/{{connection_profile_id}}`\n\n* `{{location}}/{{connection_profile_id}}`\n\nWhen using the `pulumi import` command, ConnectionProfile can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:datastream/connectionProfile:ConnectionProfile default projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}\n```\n\n```sh\n$ pulumi import gcp:datastream/connectionProfile:ConnectionProfile default {{project}}/{{location}}/{{connection_profile_id}}\n```\n\n```sh\n$ pulumi import gcp:datastream/connectionProfile:ConnectionProfile default {{location}}/{{connection_profile_id}}\n```\n\n", "properties": { "bigqueryProfile": { "$ref": "#/types/gcp:datastream/ConnectionProfileBigqueryProfile:ConnectionProfileBigqueryProfile", @@ -183058,7 +183058,7 @@ } }, "gcp:datastream/stream:Stream": { - "description": "A resource representing streaming data from a source to a destination.\n\n\nTo get more information about Stream, see:\n\n* [API documentation](https://cloud.google.com/datastream/docs/reference/rest/v1/projects.locations.streams)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/datastream/docs/create-a-stream)\n\n## Example Usage\n\n### Datastream Stream Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst project = gcp.organizations.getProject({});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-instance\",\n databaseVersion: \"MYSQL_8_0\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n host: \"%\",\n password: pwd.result,\n});\nconst sourceConnectionProfile = new gcp.datastream.ConnectionProfile(\"source_connection_profile\", {\n displayName: \"Source connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n mysqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n },\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"my-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst viewer = new gcp.storage.BucketIAMMember(\"viewer\", {\n bucket: bucket.name,\n role: \"roles/storage.objectViewer\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com`),\n});\nconst creator = new gcp.storage.BucketIAMMember(\"creator\", {\n bucket: bucket.name,\n role: \"roles/storage.objectCreator\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com`),\n});\nconst reader = new gcp.storage.BucketIAMMember(\"reader\", {\n bucket: bucket.name,\n role: \"roles/storage.legacyBucketReader\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com`),\n});\nconst keyUser = new gcp.kms.CryptoKeyIAMMember(\"key_user\", {\n cryptoKeyId: \"kms-name\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com`),\n});\nconst destinationConnectionProfile = new gcp.datastream.ConnectionProfile(\"destination_connection_profile\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n gcsProfile: {\n bucket: bucket.name,\n rootPath: \"/path\",\n },\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n streamId: \"my-stream\",\n desiredState: \"NOT_STARTED\",\n location: \"us-central1\",\n displayName: \"my stream\",\n labels: {\n key: \"value\",\n },\n sourceConfig: {\n sourceConnectionProfile: sourceConnectionProfile.id,\n mysqlSourceConfig: {\n includeObjects: {\n mysqlDatabases: [{\n database: \"my-database\",\n mysqlTables: [\n {\n table: \"includedTable\",\n mysqlColumns: [{\n column: \"includedColumn\",\n dataType: \"VARCHAR\",\n collation: \"utf8mb4\",\n primaryKey: false,\n nullable: false,\n ordinalPosition: 0,\n }],\n },\n {\n table: \"includedTable_2\",\n },\n ],\n }],\n },\n excludeObjects: {\n mysqlDatabases: [{\n database: \"my-database\",\n mysqlTables: [{\n table: \"excludedTable\",\n mysqlColumns: [{\n column: \"excludedColumn\",\n dataType: \"VARCHAR\",\n collation: \"utf8mb4\",\n primaryKey: false,\n nullable: false,\n ordinalPosition: 0,\n }],\n }],\n }],\n },\n maxConcurrentCdcTasks: 5,\n },\n },\n destinationConfig: {\n destinationConnectionProfile: destinationConnectionProfile.id,\n gcsDestinationConfig: {\n path: \"mydata\",\n fileRotationMb: 200,\n fileRotationInterval: \"60s\",\n jsonFileFormat: {\n schemaFileFormat: \"NO_SCHEMA_FILE\",\n compression: \"GZIP\",\n },\n },\n },\n backfillAll: {\n mysqlExcludedObjects: {\n mysqlDatabases: [{\n database: \"my-database\",\n mysqlTables: [{\n table: \"excludedTable\",\n mysqlColumns: [{\n column: \"excludedColumn\",\n dataType: \"VARCHAR\",\n collation: \"utf8mb4\",\n primaryKey: false,\n nullable: false,\n ordinalPosition: 0,\n }],\n }],\n }],\n },\n },\n customerManagedEncryptionKey: \"kms-name\",\n}, {\n dependsOn: [keyUser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nproject = gcp.organizations.get_project()\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-instance\",\n database_version=\"MYSQL_8_0\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"backupConfiguration\": {\n \"enabled\": True,\n \"binaryLogEnabled\": True,\n },\n \"ipConfiguration\": {\n \"authorizedNetworks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n host=\"%\",\n password=pwd.result)\nsource_connection_profile = gcp.datastream.ConnectionProfile(\"source_connection_profile\",\n display_name=\"Source connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n mysql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n })\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"my-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nviewer = gcp.storage.BucketIAMMember(\"viewer\",\n bucket=bucket.name,\n role=\"roles/storage.objectViewer\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datastream.iam.gserviceaccount.com\")\ncreator = gcp.storage.BucketIAMMember(\"creator\",\n bucket=bucket.name,\n role=\"roles/storage.objectCreator\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datastream.iam.gserviceaccount.com\")\nreader = gcp.storage.BucketIAMMember(\"reader\",\n bucket=bucket.name,\n role=\"roles/storage.legacyBucketReader\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datastream.iam.gserviceaccount.com\")\nkey_user = gcp.kms.CryptoKeyIAMMember(\"key_user\",\n crypto_key_id=\"kms-name\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datastream.iam.gserviceaccount.com\")\ndestination_connection_profile = gcp.datastream.ConnectionProfile(\"destination_connection_profile\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n gcs_profile={\n \"bucket\": bucket.name,\n \"rootPath\": \"/path\",\n })\ndefault = gcp.datastream.Stream(\"default\",\n stream_id=\"my-stream\",\n desired_state=\"NOT_STARTED\",\n location=\"us-central1\",\n display_name=\"my stream\",\n labels={\n \"key\": \"value\",\n },\n source_config={\n \"sourceConnectionProfile\": source_connection_profile.id,\n \"mysqlSourceConfig\": {\n \"includeObjects\": {\n \"mysqlDatabases\": [{\n \"database\": \"my-database\",\n \"mysqlTables\": [\n {\n \"table\": \"includedTable\",\n \"mysqlColumns\": [{\n \"column\": \"includedColumn\",\n \"dataType\": \"VARCHAR\",\n \"collation\": \"utf8mb4\",\n \"primaryKey\": False,\n \"nullable\": False,\n \"ordinalPosition\": 0,\n }],\n },\n {\n \"table\": \"includedTable_2\",\n },\n ],\n }],\n },\n \"excludeObjects\": {\n \"mysqlDatabases\": [{\n \"database\": \"my-database\",\n \"mysqlTables\": [{\n \"table\": \"excludedTable\",\n \"mysqlColumns\": [{\n \"column\": \"excludedColumn\",\n \"dataType\": \"VARCHAR\",\n \"collation\": \"utf8mb4\",\n \"primaryKey\": False,\n \"nullable\": False,\n \"ordinalPosition\": 0,\n }],\n }],\n }],\n },\n \"maxConcurrentCdcTasks\": 5,\n },\n },\n destination_config={\n \"destinationConnectionProfile\": destination_connection_profile.id,\n \"gcsDestinationConfig\": {\n \"path\": \"mydata\",\n \"fileRotationMb\": 200,\n \"fileRotationInterval\": \"60s\",\n \"jsonFileFormat\": {\n \"schemaFileFormat\": \"NO_SCHEMA_FILE\",\n \"compression\": \"GZIP\",\n },\n },\n },\n backfill_all={\n \"mysqlExcludedObjects\": {\n \"mysqlDatabases\": [{\n \"database\": \"my-database\",\n \"mysqlTables\": [{\n \"table\": \"excludedTable\",\n \"mysqlColumns\": [{\n \"column\": \"excludedColumn\",\n \"dataType\": \"VARCHAR\",\n \"collation\": \"utf8mb4\",\n \"primaryKey\": False,\n \"nullable\": False,\n \"ordinalPosition\": 0,\n }],\n }],\n }],\n },\n },\n customer_managed_encryption_key=\"kms-name\",\n opts = pulumi.ResourceOptions(depends_on=[key_user]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-instance\",\n DatabaseVersion = \"MYSQL_8_0\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Host = \"%\",\n Password = pwd.Result,\n });\n\n var sourceConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"source_connection_profile\", new()\n {\n DisplayName = \"Source connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n MysqlProfile = new Gcp.Datastream.Inputs.ConnectionProfileMysqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n },\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"my-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var viewer = new Gcp.Storage.BucketIAMMember(\"viewer\", new()\n {\n Bucket = bucket.Name,\n Role = \"roles/storage.objectViewer\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datastream.iam.gserviceaccount.com\",\n });\n\n var creator = new Gcp.Storage.BucketIAMMember(\"creator\", new()\n {\n Bucket = bucket.Name,\n Role = \"roles/storage.objectCreator\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datastream.iam.gserviceaccount.com\",\n });\n\n var reader = new Gcp.Storage.BucketIAMMember(\"reader\", new()\n {\n Bucket = bucket.Name,\n Role = \"roles/storage.legacyBucketReader\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datastream.iam.gserviceaccount.com\",\n });\n\n var keyUser = new Gcp.Kms.CryptoKeyIAMMember(\"key_user\", new()\n {\n CryptoKeyId = \"kms-name\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datastream.iam.gserviceaccount.com\",\n });\n\n var destinationConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"destination_connection_profile\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n GcsProfile = new Gcp.Datastream.Inputs.ConnectionProfileGcsProfileArgs\n {\n Bucket = bucket.Name,\n RootPath = \"/path\",\n },\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n StreamId = \"my-stream\",\n DesiredState = \"NOT_STARTED\",\n Location = \"us-central1\",\n DisplayName = \"my stream\",\n Labels = \n {\n { \"key\", \"value\" },\n },\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = sourceConnectionProfile.Id,\n MysqlSourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigArgs\n {\n IncludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs\n {\n MysqlDatabases = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseArgs\n {\n Database = \"my-database\",\n MysqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs\n {\n Table = \"includedTable\",\n MysqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs\n {\n Column = \"includedColumn\",\n DataType = \"VARCHAR\",\n Collation = \"utf8mb4\",\n PrimaryKey = false,\n Nullable = false,\n OrdinalPosition = 0,\n },\n },\n },\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs\n {\n Table = \"includedTable_2\",\n },\n },\n },\n },\n },\n ExcludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs\n {\n MysqlDatabases = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseArgs\n {\n Database = \"my-database\",\n MysqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArgs\n {\n Table = \"excludedTable\",\n MysqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs\n {\n Column = \"excludedColumn\",\n DataType = \"VARCHAR\",\n Collation = \"utf8mb4\",\n PrimaryKey = false,\n Nullable = false,\n OrdinalPosition = 0,\n },\n },\n },\n },\n },\n },\n },\n MaxConcurrentCdcTasks = 5,\n },\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destinationConnectionProfile.Id,\n GcsDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigGcsDestinationConfigArgs\n {\n Path = \"mydata\",\n FileRotationMb = 200,\n FileRotationInterval = \"60s\",\n JsonFileFormat = new Gcp.Datastream.Inputs.StreamDestinationConfigGcsDestinationConfigJsonFileFormatArgs\n {\n SchemaFileFormat = \"NO_SCHEMA_FILE\",\n Compression = \"GZIP\",\n },\n },\n },\n BackfillAll = new Gcp.Datastream.Inputs.StreamBackfillAllArgs\n {\n MysqlExcludedObjects = new Gcp.Datastream.Inputs.StreamBackfillAllMysqlExcludedObjectsArgs\n {\n MysqlDatabases = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseArgs\n {\n Database = \"my-database\",\n MysqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableArgs\n {\n Table = \"excludedTable\",\n MysqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableMysqlColumnArgs\n {\n Column = \"excludedColumn\",\n DataType = \"VARCHAR\",\n Collation = \"utf8mb4\",\n PrimaryKey = false,\n Nullable = false,\n OrdinalPosition = 0,\n },\n },\n },\n },\n },\n },\n },\n },\n CustomerManagedEncryptionKey = \"kms-name\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n keyUser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\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\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\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\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tHost: pulumi.String(\"%\"),\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"source_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Source connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tMysqlProfile: \u0026datastream.ConnectionProfileMysqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t},\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\tName: pulumi.String(\"my-bucket\"),\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\t_, err = storage.NewBucketIAMMember(ctx, \"viewer\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.objectViewer\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-datastream.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucketIAMMember(ctx, \"creator\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.objectCreator\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-datastream.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucketIAMMember(ctx, \"reader\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.legacyBucketReader\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-datastream.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyUser, err := kms.NewCryptoKeyIAMMember(ctx, \"key_user\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-name\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-datastream.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"destination_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tGcsProfile: \u0026datastream.ConnectionProfileGcsProfileArgs{\n\t\t\t\tBucket: bucket.Name,\n\t\t\t\tRootPath: pulumi.String(\"/path\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tStreamId: pulumi.String(\"my-stream\"),\n\t\t\tDesiredState: pulumi.String(\"NOT_STARTED\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"my stream\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: sourceConnectionProfile.ID(),\n\t\t\t\tMysqlSourceConfig: \u0026datastream.StreamSourceConfigMysqlSourceConfigArgs{\n\t\t\t\t\tIncludeObjects: \u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs{\n\t\t\t\t\t\tMysqlDatabases: datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseArgs{\n\t\t\t\t\t\t\t\tDatabase: pulumi.String(\"my-database\"),\n\t\t\t\t\t\t\t\tMysqlTables: datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"includedTable\"),\n\t\t\t\t\t\t\t\t\t\tMysqlColumns: datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableMysqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"includedColumn\"),\n\t\t\t\t\t\t\t\t\t\t\t\tDataType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\t\t\t\t\t\tCollation: pulumi.String(\"utf8mb4\"),\n\t\t\t\t\t\t\t\t\t\t\t\tPrimaryKey: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\tNullable: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\tOrdinalPosition: pulumi.Int(0),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"includedTable_2\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tExcludeObjects: \u0026datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs{\n\t\t\t\t\t\tMysqlDatabases: datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseArgs{\n\t\t\t\t\t\t\t\tDatabase: pulumi.String(\"my-database\"),\n\t\t\t\t\t\t\t\tMysqlTables: datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"excludedTable\"),\n\t\t\t\t\t\t\t\t\t\tMysqlColumns: datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"excludedColumn\"),\n\t\t\t\t\t\t\t\t\t\t\t\tDataType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\t\t\t\t\t\tCollation: pulumi.String(\"utf8mb4\"),\n\t\t\t\t\t\t\t\t\t\t\t\tPrimaryKey: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\tNullable: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\tOrdinalPosition: pulumi.Int(0),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tMaxConcurrentCdcTasks: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destinationConnectionProfile.ID(),\n\t\t\t\tGcsDestinationConfig: \u0026datastream.StreamDestinationConfigGcsDestinationConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"mydata\"),\n\t\t\t\t\tFileRotationMb: pulumi.Int(200),\n\t\t\t\t\tFileRotationInterval: pulumi.String(\"60s\"),\n\t\t\t\t\tJsonFileFormat: \u0026datastream.StreamDestinationConfigGcsDestinationConfigJsonFileFormatArgs{\n\t\t\t\t\t\tSchemaFileFormat: pulumi.String(\"NO_SCHEMA_FILE\"),\n\t\t\t\t\t\tCompression: pulumi.String(\"GZIP\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillAll: \u0026datastream.StreamBackfillAllArgs{\n\t\t\t\tMysqlExcludedObjects: \u0026datastream.StreamBackfillAllMysqlExcludedObjectsArgs{\n\t\t\t\t\tMysqlDatabases: datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseArray{\n\t\t\t\t\t\t\u0026datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseArgs{\n\t\t\t\t\t\t\tDatabase: pulumi.String(\"my-database\"),\n\t\t\t\t\t\t\tMysqlTables: datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableArray{\n\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableArgs{\n\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"excludedTable\"),\n\t\t\t\t\t\t\t\t\tMysqlColumns: datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableMysqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableMysqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"excludedColumn\"),\n\t\t\t\t\t\t\t\t\t\t\tDataType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\t\t\t\t\tCollation: pulumi.String(\"utf8mb4\"),\n\t\t\t\t\t\t\t\t\t\t\tPrimaryKey: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\tNullable: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\tOrdinalPosition: pulumi.Int(0),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tCustomerManagedEncryptionKey: pulumi.String(\"kms-name\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tkeyUser,\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.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileMysqlProfileArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileGcsProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigGcsDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigGcsDestinationConfigJsonFileFormatArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllMysqlExcludedObjectsArgs;\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 instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-instance\")\n .databaseVersion(\"MYSQL_8_0\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(true)\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .host(\"%\")\n .password(pwd.result())\n .build());\n\n var sourceConnectionProfile = new ConnectionProfile(\"sourceConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Source connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .mysqlProfile(ConnectionProfileMysqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .build())\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var viewer = new BucketIAMMember(\"viewer\", BucketIAMMemberArgs.builder()\n .bucket(bucket.name())\n .role(\"roles/storage.objectViewer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datastream.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var creator = new BucketIAMMember(\"creator\", BucketIAMMemberArgs.builder()\n .bucket(bucket.name())\n .role(\"roles/storage.objectCreator\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datastream.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var reader = new BucketIAMMember(\"reader\", BucketIAMMemberArgs.builder()\n .bucket(bucket.name())\n .role(\"roles/storage.legacyBucketReader\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datastream.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var keyUser = new CryptoKeyIAMMember(\"keyUser\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-name\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datastream.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var destinationConnectionProfile = new ConnectionProfile(\"destinationConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .gcsProfile(ConnectionProfileGcsProfileArgs.builder()\n .bucket(bucket.name())\n .rootPath(\"/path\")\n .build())\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .streamId(\"my-stream\")\n .desiredState(\"NOT_STARTED\")\n .location(\"us-central1\")\n .displayName(\"my stream\")\n .labels(Map.of(\"key\", \"value\"))\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(sourceConnectionProfile.id())\n .mysqlSourceConfig(StreamSourceConfigMysqlSourceConfigArgs.builder()\n .includeObjects(StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs.builder()\n .mysqlDatabases(StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseArgs.builder()\n .database(\"my-database\")\n .mysqlTables( \n StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs.builder()\n .table(\"includedTable\")\n .mysqlColumns(StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs.builder()\n .column(\"includedColumn\")\n .dataType(\"VARCHAR\")\n .collation(\"utf8mb4\")\n .primaryKey(false)\n .nullable(false)\n .ordinalPosition(0)\n .build())\n .build(),\n StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs.builder()\n .table(\"includedTable_2\")\n .build())\n .build())\n .build())\n .excludeObjects(StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs.builder()\n .mysqlDatabases(StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseArgs.builder()\n .database(\"my-database\")\n .mysqlTables(StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArgs.builder()\n .table(\"excludedTable\")\n .mysqlColumns(StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs.builder()\n .column(\"excludedColumn\")\n .dataType(\"VARCHAR\")\n .collation(\"utf8mb4\")\n .primaryKey(false)\n .nullable(false)\n .ordinalPosition(0)\n .build())\n .build())\n .build())\n .build())\n .maxConcurrentCdcTasks(5)\n .build())\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destinationConnectionProfile.id())\n .gcsDestinationConfig(StreamDestinationConfigGcsDestinationConfigArgs.builder()\n .path(\"mydata\")\n .fileRotationMb(200)\n .fileRotationInterval(\"60s\")\n .jsonFileFormat(StreamDestinationConfigGcsDestinationConfigJsonFileFormatArgs.builder()\n .schemaFileFormat(\"NO_SCHEMA_FILE\")\n .compression(\"GZIP\")\n .build())\n .build())\n .build())\n .backfillAll(StreamBackfillAllArgs.builder()\n .mysqlExcludedObjects(StreamBackfillAllMysqlExcludedObjectsArgs.builder()\n .mysqlDatabases(StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseArgs.builder()\n .database(\"my-database\")\n .mysqlTables(StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableArgs.builder()\n .table(\"excludedTable\")\n .mysqlColumns(StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableMysqlColumnArgs.builder()\n .column(\"excludedColumn\")\n .dataType(\"VARCHAR\")\n .collation(\"utf8mb4\")\n .primaryKey(false)\n .nullable(false)\n .ordinalPosition(0)\n .build())\n .build())\n .build())\n .build())\n .build())\n .customerManagedEncryptionKey(\"kms-name\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(keyUser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-instance\n databaseVersion: MYSQL_8_0\n region: us-central1\n settings:\n tier: db-f1-micro\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: true\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n host: '%'\n password: ${pwd.result}\n sourceConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: source_connection_profile\n properties:\n displayName: Source connection profile\n location: us-central1\n connectionProfileId: source-profile\n mysqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: my-bucket\n location: US\n uniformBucketLevelAccess: true\n viewer:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${bucket.name}\n role: roles/storage.objectViewer\n member: serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com\n creator:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${bucket.name}\n role: roles/storage.objectCreator\n member: serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com\n reader:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${bucket.name}\n role: roles/storage.legacyBucketReader\n member: serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com\n keyUser:\n type: gcp:kms:CryptoKeyIAMMember\n name: key_user\n properties:\n cryptoKeyId: kms-name\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com\n destinationConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: destination_connection_profile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: destination-profile\n gcsProfile:\n bucket: ${bucket.name}\n rootPath: /path\n default:\n type: gcp:datastream:Stream\n properties:\n streamId: my-stream\n desiredState: NOT_STARTED\n location: us-central1\n displayName: my stream\n labels:\n key: value\n sourceConfig:\n sourceConnectionProfile: ${sourceConnectionProfile.id}\n mysqlSourceConfig:\n includeObjects:\n mysqlDatabases:\n - database: my-database\n mysqlTables:\n - table: includedTable\n mysqlColumns:\n - column: includedColumn\n dataType: VARCHAR\n collation: utf8mb4\n primaryKey: false\n nullable: false\n ordinalPosition: 0\n - table: includedTable_2\n excludeObjects:\n mysqlDatabases:\n - database: my-database\n mysqlTables:\n - table: excludedTable\n mysqlColumns:\n - column: excludedColumn\n dataType: VARCHAR\n collation: utf8mb4\n primaryKey: false\n nullable: false\n ordinalPosition: 0\n maxConcurrentCdcTasks: 5\n destinationConfig:\n destinationConnectionProfile: ${destinationConnectionProfile.id}\n gcsDestinationConfig:\n path: mydata\n fileRotationMb: 200\n fileRotationInterval: 60s\n jsonFileFormat:\n schemaFileFormat: NO_SCHEMA_FILE\n compression: GZIP\n backfillAll:\n mysqlExcludedObjects:\n mysqlDatabases:\n - database: my-database\n mysqlTables:\n - table: excludedTable\n mysqlColumns:\n - column: excludedColumn\n dataType: VARCHAR\n collation: utf8mb4\n primaryKey: false\n nullable: false\n ordinalPosition: 0\n customerManagedEncryptionKey: kms-name\n options:\n dependson:\n - ${keyUser}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Postgresql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source = new gcp.datastream.ConnectionProfile(\"source\", {\n displayName: \"Postgresql Source\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n postgresqlProfile: {\n hostname: \"hostname\",\n port: 3306,\n username: \"user\",\n password: \"pass\",\n database: \"postgres\",\n },\n});\nconst destination = new gcp.datastream.ConnectionProfile(\"destination\", {\n displayName: \"BigQuery Destination\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n displayName: \"Postgres to BigQuery\",\n location: \"us-central1\",\n streamId: \"my-stream\",\n desiredState: \"RUNNING\",\n sourceConfig: {\n sourceConnectionProfile: source.id,\n postgresqlSourceConfig: {\n maxConcurrentBackfillTasks: 12,\n publication: \"publication\",\n replicationSlot: \"replication_slot\",\n includeObjects: {\n postgresqlSchemas: [{\n schema: \"schema\",\n postgresqlTables: [{\n table: \"table\",\n postgresqlColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n excludeObjects: {\n postgresqlSchemas: [{\n schema: \"schema\",\n postgresqlTables: [{\n table: \"table\",\n postgresqlColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n },\n },\n destinationConfig: {\n destinationConnectionProfile: destination.id,\n bigqueryDestinationConfig: {\n dataFreshness: \"900s\",\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n },\n },\n },\n },\n backfillAll: {\n postgresqlExcludedObjects: {\n postgresqlSchemas: [{\n schema: \"schema\",\n postgresqlTables: [{\n table: \"table\",\n postgresqlColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource = gcp.datastream.ConnectionProfile(\"source\",\n display_name=\"Postgresql Source\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n postgresql_profile={\n \"hostname\": \"hostname\",\n \"port\": 3306,\n \"username\": \"user\",\n \"password\": \"pass\",\n \"database\": \"postgres\",\n })\ndestination = gcp.datastream.ConnectionProfile(\"destination\",\n display_name=\"BigQuery Destination\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\ndefault = gcp.datastream.Stream(\"default\",\n display_name=\"Postgres to BigQuery\",\n location=\"us-central1\",\n stream_id=\"my-stream\",\n desired_state=\"RUNNING\",\n source_config={\n \"sourceConnectionProfile\": source.id,\n \"postgresqlSourceConfig\": {\n \"maxConcurrentBackfillTasks\": 12,\n \"publication\": \"publication\",\n \"replicationSlot\": \"replication_slot\",\n \"includeObjects\": {\n \"postgresqlSchemas\": [{\n \"schema\": \"schema\",\n \"postgresqlTables\": [{\n \"table\": \"table\",\n \"postgresqlColumns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n \"excludeObjects\": {\n \"postgresqlSchemas\": [{\n \"schema\": \"schema\",\n \"postgresqlTables\": [{\n \"table\": \"table\",\n \"postgresqlColumns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n },\n },\n destination_config={\n \"destinationConnectionProfile\": destination.id,\n \"bigqueryDestinationConfig\": {\n \"dataFreshness\": \"900s\",\n \"sourceHierarchyDatasets\": {\n \"datasetTemplate\": {\n \"location\": \"us-central1\",\n },\n },\n },\n },\n backfill_all={\n \"postgresqlExcludedObjects\": {\n \"postgresqlSchemas\": [{\n \"schema\": \"schema\",\n \"postgresqlTables\": [{\n \"table\": \"table\",\n \"postgresqlColumns\": [{\n \"column\": \"column\",\n }],\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 source = new Gcp.Datastream.ConnectionProfile(\"source\", new()\n {\n DisplayName = \"Postgresql Source\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n PostgresqlProfile = new Gcp.Datastream.Inputs.ConnectionProfilePostgresqlProfileArgs\n {\n Hostname = \"hostname\",\n Port = 3306,\n Username = \"user\",\n Password = \"pass\",\n Database = \"postgres\",\n },\n });\n\n var destination = new Gcp.Datastream.ConnectionProfile(\"destination\", new()\n {\n DisplayName = \"BigQuery Destination\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n DisplayName = \"Postgres to BigQuery\",\n Location = \"us-central1\",\n StreamId = \"my-stream\",\n DesiredState = \"RUNNING\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = source.Id,\n PostgresqlSourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigArgs\n {\n MaxConcurrentBackfillTasks = 12,\n Publication = \"publication\",\n ReplicationSlot = \"replication_slot\",\n IncludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsArgs\n {\n PostgresqlSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaArgs\n {\n Schema = \"schema\",\n PostgresqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTableArgs\n {\n Table = \"table\",\n PostgresqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n ExcludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsArgs\n {\n PostgresqlSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaArgs\n {\n Schema = \"schema\",\n PostgresqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTableArgs\n {\n Table = \"table\",\n PostgresqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destination.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n DataFreshness = \"900s\",\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n BackfillAll = new Gcp.Datastream.Inputs.StreamBackfillAllArgs\n {\n PostgresqlExcludedObjects = new Gcp.Datastream.Inputs.StreamBackfillAllPostgresqlExcludedObjectsArgs\n {\n PostgresqlSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaArgs\n {\n Schema = \"schema\",\n PostgresqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTableArgs\n {\n Table = \"table\",\n PostgresqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsource, err := datastream.NewConnectionProfile(ctx, \"source\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Postgresql Source\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tPostgresqlProfile: \u0026datastream.ConnectionProfilePostgresqlProfileArgs{\n\t\t\t\tHostname: pulumi.String(\"hostname\"),\n\t\t\t\tPort: pulumi.Int(3306),\n\t\t\t\tUsername: pulumi.String(\"user\"),\n\t\t\t\tPassword: pulumi.String(\"pass\"),\n\t\t\t\tDatabase: pulumi.String(\"postgres\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestination, err := datastream.NewConnectionProfile(ctx, \"destination\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"BigQuery Destination\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tDisplayName: pulumi.String(\"Postgres to BigQuery\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStreamId: pulumi.String(\"my-stream\"),\n\t\t\tDesiredState: pulumi.String(\"RUNNING\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: source.ID(),\n\t\t\t\tPostgresqlSourceConfig: \u0026datastream.StreamSourceConfigPostgresqlSourceConfigArgs{\n\t\t\t\t\tMaxConcurrentBackfillTasks: pulumi.Int(12),\n\t\t\t\t\tPublication: pulumi.String(\"publication\"),\n\t\t\t\t\tReplicationSlot: pulumi.String(\"replication_slot\"),\n\t\t\t\t\tIncludeObjects: \u0026datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsArgs{\n\t\t\t\t\t\tPostgresqlSchemas: datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tPostgresqlTables: datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t\tPostgresqlColumns: datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tExcludeObjects: \u0026datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsArgs{\n\t\t\t\t\t\tPostgresqlSchemas: datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tPostgresqlTables: datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t\tPostgresqlColumns: datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destination.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tDataFreshness: pulumi.String(\"900s\"),\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\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\tBackfillAll: \u0026datastream.StreamBackfillAllArgs{\n\t\t\t\tPostgresqlExcludedObjects: \u0026datastream.StreamBackfillAllPostgresqlExcludedObjectsArgs{\n\t\t\t\t\tPostgresqlSchemas: datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaArray{\n\t\t\t\t\t\t\u0026datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaArgs{\n\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\tPostgresqlTables: datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTableArray{\n\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTableArgs{\n\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\tPostgresqlColumns: datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfilePostgresqlProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigPostgresqlSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllPostgresqlExcludedObjectsArgs;\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 = new ConnectionProfile(\"source\", ConnectionProfileArgs.builder()\n .displayName(\"Postgresql Source\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .postgresqlProfile(ConnectionProfilePostgresqlProfileArgs.builder()\n .hostname(\"hostname\")\n .port(3306)\n .username(\"user\")\n .password(\"pass\")\n .database(\"postgres\")\n .build())\n .build());\n\n var destination = new ConnectionProfile(\"destination\", ConnectionProfileArgs.builder()\n .displayName(\"BigQuery Destination\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .displayName(\"Postgres to BigQuery\")\n .location(\"us-central1\")\n .streamId(\"my-stream\")\n .desiredState(\"RUNNING\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(source.id())\n .postgresqlSourceConfig(StreamSourceConfigPostgresqlSourceConfigArgs.builder()\n .maxConcurrentBackfillTasks(12)\n .publication(\"publication\")\n .replicationSlot(\"replication_slot\")\n .includeObjects(StreamSourceConfigPostgresqlSourceConfigIncludeObjectsArgs.builder()\n .postgresqlSchemas(StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaArgs.builder()\n .schema(\"schema\")\n .postgresqlTables(StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTableArgs.builder()\n .table(\"table\")\n .postgresqlColumns(StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .excludeObjects(StreamSourceConfigPostgresqlSourceConfigExcludeObjectsArgs.builder()\n .postgresqlSchemas(StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaArgs.builder()\n .schema(\"schema\")\n .postgresqlTables(StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTableArgs.builder()\n .table(\"table\")\n .postgresqlColumns(StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destination.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .dataFreshness(\"900s\")\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build())\n .backfillAll(StreamBackfillAllArgs.builder()\n .postgresqlExcludedObjects(StreamBackfillAllPostgresqlExcludedObjectsArgs.builder()\n .postgresqlSchemas(StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaArgs.builder()\n .schema(\"schema\")\n .postgresqlTables(StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTableArgs.builder()\n .table(\"table\")\n .postgresqlColumns(StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Postgresql Source\n location: us-central1\n connectionProfileId: source-profile\n postgresqlProfile:\n hostname: hostname\n port: 3306\n username: user\n password: pass\n database: postgres\n destination:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: BigQuery Destination\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n default:\n type: gcp:datastream:Stream\n properties:\n displayName: Postgres to BigQuery\n location: us-central1\n streamId: my-stream\n desiredState: RUNNING\n sourceConfig:\n sourceConnectionProfile: ${source.id}\n postgresqlSourceConfig:\n maxConcurrentBackfillTasks: 12\n publication: publication\n replicationSlot: replication_slot\n includeObjects:\n postgresqlSchemas:\n - schema: schema\n postgresqlTables:\n - table: table\n postgresqlColumns:\n - column: column\n excludeObjects:\n postgresqlSchemas:\n - schema: schema\n postgresqlTables:\n - table: table\n postgresqlColumns:\n - column: column\n destinationConfig:\n destinationConnectionProfile: ${destination.id}\n bigqueryDestinationConfig:\n dataFreshness: 900s\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n backfillAll:\n postgresqlExcludedObjects:\n postgresqlSchemas:\n - schema: schema\n postgresqlTables:\n - table: table\n postgresqlColumns:\n - column: column\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Oracle\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source = new gcp.datastream.ConnectionProfile(\"source\", {\n displayName: \"Oracle Source\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n oracleProfile: {\n hostname: \"hostname\",\n port: 1521,\n username: \"user\",\n password: \"pass\",\n databaseService: \"ORCL\",\n },\n});\nconst destination = new gcp.datastream.ConnectionProfile(\"destination\", {\n displayName: \"BigQuery Destination\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst stream5 = new gcp.datastream.Stream(\"stream5\", {\n displayName: \"Oracle to BigQuery\",\n location: \"us-central1\",\n streamId: \"my-stream\",\n desiredState: \"RUNNING\",\n sourceConfig: {\n sourceConnectionProfile: source.id,\n oracleSourceConfig: {\n maxConcurrentCdcTasks: 8,\n maxConcurrentBackfillTasks: 12,\n includeObjects: {\n oracleSchemas: [{\n schema: \"schema\",\n oracleTables: [{\n table: \"table\",\n oracleColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n excludeObjects: {\n oracleSchemas: [{\n schema: \"schema\",\n oracleTables: [{\n table: \"table\",\n oracleColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n dropLargeObjects: {},\n },\n },\n destinationConfig: {\n destinationConnectionProfile: destination.id,\n bigqueryDestinationConfig: {\n dataFreshness: \"900s\",\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n },\n },\n },\n },\n backfillAll: {\n oracleExcludedObjects: {\n oracleSchemas: [{\n schema: \"schema\",\n oracleTables: [{\n table: \"table\",\n oracleColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource = gcp.datastream.ConnectionProfile(\"source\",\n display_name=\"Oracle Source\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n oracle_profile={\n \"hostname\": \"hostname\",\n \"port\": 1521,\n \"username\": \"user\",\n \"password\": \"pass\",\n \"databaseService\": \"ORCL\",\n })\ndestination = gcp.datastream.ConnectionProfile(\"destination\",\n display_name=\"BigQuery Destination\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\nstream5 = gcp.datastream.Stream(\"stream5\",\n display_name=\"Oracle to BigQuery\",\n location=\"us-central1\",\n stream_id=\"my-stream\",\n desired_state=\"RUNNING\",\n source_config={\n \"sourceConnectionProfile\": source.id,\n \"oracleSourceConfig\": {\n \"maxConcurrentCdcTasks\": 8,\n \"maxConcurrentBackfillTasks\": 12,\n \"includeObjects\": {\n \"oracleSchemas\": [{\n \"schema\": \"schema\",\n \"oracleTables\": [{\n \"table\": \"table\",\n \"oracleColumns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n \"excludeObjects\": {\n \"oracleSchemas\": [{\n \"schema\": \"schema\",\n \"oracleTables\": [{\n \"table\": \"table\",\n \"oracleColumns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n \"dropLargeObjects\": {},\n },\n },\n destination_config={\n \"destinationConnectionProfile\": destination.id,\n \"bigqueryDestinationConfig\": {\n \"dataFreshness\": \"900s\",\n \"sourceHierarchyDatasets\": {\n \"datasetTemplate\": {\n \"location\": \"us-central1\",\n },\n },\n },\n },\n backfill_all={\n \"oracleExcludedObjects\": {\n \"oracleSchemas\": [{\n \"schema\": \"schema\",\n \"oracleTables\": [{\n \"table\": \"table\",\n \"oracleColumns\": [{\n \"column\": \"column\",\n }],\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 source = new Gcp.Datastream.ConnectionProfile(\"source\", new()\n {\n DisplayName = \"Oracle Source\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n OracleProfile = new Gcp.Datastream.Inputs.ConnectionProfileOracleProfileArgs\n {\n Hostname = \"hostname\",\n Port = 1521,\n Username = \"user\",\n Password = \"pass\",\n DatabaseService = \"ORCL\",\n },\n });\n\n var destination = new Gcp.Datastream.ConnectionProfile(\"destination\", new()\n {\n DisplayName = \"BigQuery Destination\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var stream5 = new Gcp.Datastream.Stream(\"stream5\", new()\n {\n DisplayName = \"Oracle to BigQuery\",\n Location = \"us-central1\",\n StreamId = \"my-stream\",\n DesiredState = \"RUNNING\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = source.Id,\n OracleSourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigArgs\n {\n MaxConcurrentCdcTasks = 8,\n MaxConcurrentBackfillTasks = 12,\n IncludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsArgs\n {\n OracleSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaArgs\n {\n Schema = \"schema\",\n OracleTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableArgs\n {\n Table = \"table\",\n OracleColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableOracleColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n ExcludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsArgs\n {\n OracleSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaArgs\n {\n Schema = \"schema\",\n OracleTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableArgs\n {\n Table = \"table\",\n OracleColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableOracleColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n DropLargeObjects = null,\n },\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destination.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n DataFreshness = \"900s\",\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n BackfillAll = new Gcp.Datastream.Inputs.StreamBackfillAllArgs\n {\n OracleExcludedObjects = new Gcp.Datastream.Inputs.StreamBackfillAllOracleExcludedObjectsArgs\n {\n OracleSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllOracleExcludedObjectsOracleSchemaArgs\n {\n Schema = \"schema\",\n OracleTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableArgs\n {\n Table = \"table\",\n OracleColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableOracleColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsource, err := datastream.NewConnectionProfile(ctx, \"source\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Oracle Source\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tOracleProfile: \u0026datastream.ConnectionProfileOracleProfileArgs{\n\t\t\t\tHostname: pulumi.String(\"hostname\"),\n\t\t\t\tPort: pulumi.Int(1521),\n\t\t\t\tUsername: pulumi.String(\"user\"),\n\t\t\t\tPassword: pulumi.String(\"pass\"),\n\t\t\t\tDatabaseService: pulumi.String(\"ORCL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestination, err := datastream.NewConnectionProfile(ctx, \"destination\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"BigQuery Destination\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"stream5\", \u0026datastream.StreamArgs{\n\t\t\tDisplayName: pulumi.String(\"Oracle to BigQuery\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStreamId: pulumi.String(\"my-stream\"),\n\t\t\tDesiredState: pulumi.String(\"RUNNING\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: source.ID(),\n\t\t\t\tOracleSourceConfig: \u0026datastream.StreamSourceConfigOracleSourceConfigArgs{\n\t\t\t\t\tMaxConcurrentCdcTasks: pulumi.Int(8),\n\t\t\t\t\tMaxConcurrentBackfillTasks: pulumi.Int(12),\n\t\t\t\t\tIncludeObjects: \u0026datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsArgs{\n\t\t\t\t\t\tOracleSchemas: datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tOracleTables: datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t\tOracleColumns: datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableOracleColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableOracleColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tExcludeObjects: \u0026datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsArgs{\n\t\t\t\t\t\tOracleSchemas: datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tOracleTables: datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t\tOracleColumns: datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableOracleColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableOracleColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tDropLargeObjects: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destination.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tDataFreshness: pulumi.String(\"900s\"),\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\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\tBackfillAll: \u0026datastream.StreamBackfillAllArgs{\n\t\t\t\tOracleExcludedObjects: \u0026datastream.StreamBackfillAllOracleExcludedObjectsArgs{\n\t\t\t\t\tOracleSchemas: datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaArray{\n\t\t\t\t\t\t\u0026datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaArgs{\n\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\tOracleTables: datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableArray{\n\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableArgs{\n\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\tOracleColumns: datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableOracleColumnArray{\n\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableOracleColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileOracleProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigOracleSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigOracleSourceConfigDropLargeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllOracleExcludedObjectsArgs;\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 = new ConnectionProfile(\"source\", ConnectionProfileArgs.builder()\n .displayName(\"Oracle Source\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .oracleProfile(ConnectionProfileOracleProfileArgs.builder()\n .hostname(\"hostname\")\n .port(1521)\n .username(\"user\")\n .password(\"pass\")\n .databaseService(\"ORCL\")\n .build())\n .build());\n\n var destination = new ConnectionProfile(\"destination\", ConnectionProfileArgs.builder()\n .displayName(\"BigQuery Destination\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var stream5 = new Stream(\"stream5\", StreamArgs.builder()\n .displayName(\"Oracle to BigQuery\")\n .location(\"us-central1\")\n .streamId(\"my-stream\")\n .desiredState(\"RUNNING\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(source.id())\n .oracleSourceConfig(StreamSourceConfigOracleSourceConfigArgs.builder()\n .maxConcurrentCdcTasks(8)\n .maxConcurrentBackfillTasks(12)\n .includeObjects(StreamSourceConfigOracleSourceConfigIncludeObjectsArgs.builder()\n .oracleSchemas(StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaArgs.builder()\n .schema(\"schema\")\n .oracleTables(StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableArgs.builder()\n .table(\"table\")\n .oracleColumns(StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableOracleColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .excludeObjects(StreamSourceConfigOracleSourceConfigExcludeObjectsArgs.builder()\n .oracleSchemas(StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaArgs.builder()\n .schema(\"schema\")\n .oracleTables(StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableArgs.builder()\n .table(\"table\")\n .oracleColumns(StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableOracleColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .dropLargeObjects()\n .build())\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destination.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .dataFreshness(\"900s\")\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build())\n .backfillAll(StreamBackfillAllArgs.builder()\n .oracleExcludedObjects(StreamBackfillAllOracleExcludedObjectsArgs.builder()\n .oracleSchemas(StreamBackfillAllOracleExcludedObjectsOracleSchemaArgs.builder()\n .schema(\"schema\")\n .oracleTables(StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableArgs.builder()\n .table(\"table\")\n .oracleColumns(StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableOracleColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Oracle Source\n location: us-central1\n connectionProfileId: source-profile\n oracleProfile:\n hostname: hostname\n port: 1521\n username: user\n password: pass\n databaseService: ORCL\n destination:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: BigQuery Destination\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n stream5:\n type: gcp:datastream:Stream\n properties:\n displayName: Oracle to BigQuery\n location: us-central1\n streamId: my-stream\n desiredState: RUNNING\n sourceConfig:\n sourceConnectionProfile: ${source.id}\n oracleSourceConfig:\n maxConcurrentCdcTasks: 8\n maxConcurrentBackfillTasks: 12\n includeObjects:\n oracleSchemas:\n - schema: schema\n oracleTables:\n - table: table\n oracleColumns:\n - column: column\n excludeObjects:\n oracleSchemas:\n - schema: schema\n oracleTables:\n - table: table\n oracleColumns:\n - column: column\n dropLargeObjects: {}\n destinationConfig:\n destinationConnectionProfile: ${destination.id}\n bigqueryDestinationConfig:\n dataFreshness: 900s\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n backfillAll:\n oracleExcludedObjects:\n oracleSchemas:\n - schema: schema\n oracleTables:\n - table: table\n oracleColumns:\n - column: column\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Sql Server\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"sql-server\",\n databaseVersion: \"SQLSERVER_2019_STANDARD\",\n region: \"us-central1\",\n rootPassword: \"root-password\",\n deletionProtection: true,\n settings: {\n tier: \"db-custom-2-4096\",\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: \"password\",\n});\nconst db = new gcp.sql.Database(\"db\", {\n name: \"db\",\n instance: instance.name,\n}, {\n dependsOn: [user],\n});\nconst source = new gcp.datastream.ConnectionProfile(\"source\", {\n displayName: \"SQL Server Source\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n sqlServerProfile: {\n hostname: instance.publicIpAddress,\n port: 1433,\n username: user.name,\n password: user.password,\n database: db.name,\n },\n});\nconst destination = new gcp.datastream.ConnectionProfile(\"destination\", {\n displayName: \"BigQuery Destination\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n displayName: \"SQL Server to BigQuery\",\n location: \"us-central1\",\n streamId: \"stream\",\n sourceConfig: {\n sourceConnectionProfile: source.id,\n sqlServerSourceConfig: {\n includeObjects: {\n schemas: [{\n schema: \"schema\",\n tables: [{\n table: \"table\",\n }],\n }],\n },\n },\n },\n destinationConfig: {\n destinationConnectionProfile: destination.id,\n bigqueryDestinationConfig: {\n dataFreshness: \"900s\",\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n },\n },\n },\n },\n backfillNone: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"sql-server\",\n database_version=\"SQLSERVER_2019_STANDARD\",\n region=\"us-central1\",\n root_password=\"root-password\",\n deletion_protection=True,\n settings={\n \"tier\": \"db-custom-2-4096\",\n \"ipConfiguration\": {\n \"authorizedNetworks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n })\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=\"password\")\ndb = gcp.sql.Database(\"db\",\n name=\"db\",\n instance=instance.name,\n opts = pulumi.ResourceOptions(depends_on=[user]))\nsource = gcp.datastream.ConnectionProfile(\"source\",\n display_name=\"SQL Server Source\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n sql_server_profile={\n \"hostname\": instance.public_ip_address,\n \"port\": 1433,\n \"username\": user.name,\n \"password\": user.password,\n \"database\": db.name,\n })\ndestination = gcp.datastream.ConnectionProfile(\"destination\",\n display_name=\"BigQuery Destination\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\ndefault = gcp.datastream.Stream(\"default\",\n display_name=\"SQL Server to BigQuery\",\n location=\"us-central1\",\n stream_id=\"stream\",\n source_config={\n \"sourceConnectionProfile\": source.id,\n \"sqlServerSourceConfig\": {\n \"includeObjects\": {\n \"schemas\": [{\n \"schema\": \"schema\",\n \"tables\": [{\n \"table\": \"table\",\n }],\n }],\n },\n },\n },\n destination_config={\n \"destinationConnectionProfile\": destination.id,\n \"bigqueryDestinationConfig\": {\n \"dataFreshness\": \"900s\",\n \"sourceHierarchyDatasets\": {\n \"datasetTemplate\": {\n \"location\": \"us-central1\",\n },\n },\n },\n },\n backfill_none={})\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.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"sql-server\",\n DatabaseVersion = \"SQLSERVER_2019_STANDARD\",\n Region = \"us-central1\",\n RootPassword = \"root-password\",\n DeletionProtection = true,\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-4096\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = \"password\",\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Name = \"db\",\n Instance = instance.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n user,\n },\n });\n\n var source = new Gcp.Datastream.ConnectionProfile(\"source\", new()\n {\n DisplayName = \"SQL Server Source\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n SqlServerProfile = new Gcp.Datastream.Inputs.ConnectionProfileSqlServerProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Port = 1433,\n Username = user.Name,\n Password = user.Password,\n Database = db.Name,\n },\n });\n\n var destination = new Gcp.Datastream.ConnectionProfile(\"destination\", new()\n {\n DisplayName = \"BigQuery Destination\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n DisplayName = \"SQL Server to BigQuery\",\n Location = \"us-central1\",\n StreamId = \"stream\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = source.Id,\n SqlServerSourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigArgs\n {\n IncludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs\n {\n Schemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArgs\n {\n Schema = \"schema\",\n Tables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArgs\n {\n Table = \"table\",\n },\n },\n },\n },\n },\n },\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destination.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n DataFreshness = \"900s\",\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n BackfillNone = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"sql-server\"),\n\t\t\tDatabaseVersion: pulumi.String(\"SQLSERVER_2019_STANDARD\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tRootPassword: pulumi.String(\"root-password\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-4096\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\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\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pulumi.String(\"password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tName: pulumi.String(\"db\"),\n\t\t\tInstance: instance.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsource, err := datastream.NewConnectionProfile(ctx, \"source\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"SQL Server Source\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tSqlServerProfile: \u0026datastream.ConnectionProfileSqlServerProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tPort: pulumi.Int(1433),\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t\tDatabase: db.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestination, err := datastream.NewConnectionProfile(ctx, \"destination\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"BigQuery Destination\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tDisplayName: pulumi.String(\"SQL Server to BigQuery\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStreamId: pulumi.String(\"stream\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: source.ID(),\n\t\t\t\tSqlServerSourceConfig: \u0026datastream.StreamSourceConfigSqlServerSourceConfigArgs{\n\t\t\t\t\tIncludeObjects: \u0026datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs{\n\t\t\t\t\t\tSchemas: datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tTables: datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destination.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tDataFreshness: pulumi.String(\"900s\"),\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\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\tBackfillNone: nil,\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.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileSqlServerProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigSqlServerSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillNoneArgs;\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 instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"sql-server\")\n .databaseVersion(\"SQLSERVER_2019_STANDARD\")\n .region(\"us-central1\")\n .rootPassword(\"root-password\")\n .deletionProtection(\"true\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-4096\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(\"password\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .name(\"db\")\n .instance(instance.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(user)\n .build());\n\n var source = new ConnectionProfile(\"source\", ConnectionProfileArgs.builder()\n .displayName(\"SQL Server Source\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .sqlServerProfile(ConnectionProfileSqlServerProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .port(1433)\n .username(user.name())\n .password(user.password())\n .database(db.name())\n .build())\n .build());\n\n var destination = new ConnectionProfile(\"destination\", ConnectionProfileArgs.builder()\n .displayName(\"BigQuery Destination\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .displayName(\"SQL Server to BigQuery\")\n .location(\"us-central1\")\n .streamId(\"stream\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(source.id())\n .sqlServerSourceConfig(StreamSourceConfigSqlServerSourceConfigArgs.builder()\n .includeObjects(StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs.builder()\n .schemas(StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArgs.builder()\n .schema(\"schema\")\n .tables(StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArgs.builder()\n .table(\"table\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destination.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .dataFreshness(\"900s\")\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build())\n .backfillNone()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: sql-server\n databaseVersion: SQLSERVER_2019_STANDARD\n region: us-central1\n rootPassword: root-password\n deletionProtection: 'true'\n settings:\n tier: db-custom-2-4096\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n db:\n type: gcp:sql:Database\n properties:\n name: db\n instance: ${instance.name}\n options:\n dependson:\n - ${user}\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: password\n source:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: SQL Server Source\n location: us-central1\n connectionProfileId: source-profile\n sqlServerProfile:\n hostname: ${instance.publicIpAddress}\n port: 1433\n username: ${user.name}\n password: ${user.password}\n database: ${db.name}\n destination:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: BigQuery Destination\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n default:\n type: gcp:datastream:Stream\n properties:\n displayName: SQL Server to BigQuery\n location: us-central1\n streamId: stream\n sourceConfig:\n sourceConnectionProfile: ${source.id}\n sqlServerSourceConfig:\n includeObjects:\n schemas:\n - schema: schema\n tables:\n - table: table\n destinationConfig:\n destinationConnectionProfile: ${destination.id}\n bigqueryDestinationConfig:\n dataFreshness: 900s\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n backfillNone: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Postgresql Bigquery Dataset Id\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst postgres = new gcp.bigquery.Dataset(\"postgres\", {\n datasetId: \"postgres\",\n friendlyName: \"postgres\",\n description: \"Database of postgres\",\n location: \"us-central1\",\n});\nconst destinationConnectionProfile2 = new gcp.datastream.ConnectionProfile(\"destination_connection_profile2\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"dest-profile\",\n bigqueryProfile: {},\n});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"instance-name\",\n databaseVersion: \"MYSQL_8_0\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: false,\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"my-user\",\n instance: instance.name,\n host: \"%\",\n password: pwd.result,\n});\nconst sourceConnectionProfile = new gcp.datastream.ConnectionProfile(\"source_connection_profile\", {\n displayName: \"Source connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n mysqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n },\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n displayName: \"postgres to bigQuery\",\n location: \"us-central1\",\n streamId: \"postgres-bigquery\",\n sourceConfig: {\n sourceConnectionProfile: sourceConnectionProfile.id,\n mysqlSourceConfig: {},\n },\n destinationConfig: {\n destinationConnectionProfile: destinationConnectionProfile2.id,\n bigqueryDestinationConfig: {\n dataFreshness: \"900s\",\n singleTargetDataset: {\n datasetId: postgres.id,\n },\n },\n },\n backfillAll: {},\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\npostgres = gcp.bigquery.Dataset(\"postgres\",\n dataset_id=\"postgres\",\n friendly_name=\"postgres\",\n description=\"Database of postgres\",\n location=\"us-central1\")\ndestination_connection_profile2 = gcp.datastream.ConnectionProfile(\"destination_connection_profile2\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"dest-profile\",\n bigquery_profile={})\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"instance-name\",\n database_version=\"MYSQL_8_0\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"backupConfiguration\": {\n \"enabled\": True,\n \"binaryLogEnabled\": True,\n },\n \"ipConfiguration\": {\n \"authorizedNetworks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=False)\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"my-user\",\n instance=instance.name,\n host=\"%\",\n password=pwd.result)\nsource_connection_profile = gcp.datastream.ConnectionProfile(\"source_connection_profile\",\n display_name=\"Source connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n mysql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n })\ndefault = gcp.datastream.Stream(\"default\",\n display_name=\"postgres to bigQuery\",\n location=\"us-central1\",\n stream_id=\"postgres-bigquery\",\n source_config={\n \"sourceConnectionProfile\": source_connection_profile.id,\n \"mysqlSourceConfig\": {},\n },\n destination_config={\n \"destinationConnectionProfile\": destination_connection_profile2.id,\n \"bigqueryDestinationConfig\": {\n \"dataFreshness\": \"900s\",\n \"singleTargetDataset\": {\n \"datasetId\": postgres.id,\n },\n },\n },\n backfill_all={})\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var postgres = new Gcp.BigQuery.Dataset(\"postgres\", new()\n {\n DatasetId = \"postgres\",\n FriendlyName = \"postgres\",\n Description = \"Database of postgres\",\n Location = \"us-central1\",\n });\n\n var destinationConnectionProfile2 = new Gcp.Datastream.ConnectionProfile(\"destination_connection_profile2\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"dest-profile\",\n BigqueryProfile = null,\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"instance-name\",\n DatabaseVersion = \"MYSQL_8_0\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = false,\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"my-user\",\n Instance = instance.Name,\n Host = \"%\",\n Password = pwd.Result,\n });\n\n var sourceConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"source_connection_profile\", new()\n {\n DisplayName = \"Source connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n MysqlProfile = new Gcp.Datastream.Inputs.ConnectionProfileMysqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n },\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n DisplayName = \"postgres to bigQuery\",\n Location = \"us-central1\",\n StreamId = \"postgres-bigquery\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = sourceConnectionProfile.Id,\n MysqlSourceConfig = null,\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destinationConnectionProfile2.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n DataFreshness = \"900s\",\n SingleTargetDataset = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSingleTargetDatasetArgs\n {\n DatasetId = postgres.Id,\n },\n },\n },\n BackfillAll = null,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpostgres, err := bigquery.NewDataset(ctx, \"postgres\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"postgres\"),\n\t\t\tFriendlyName: pulumi.String(\"postgres\"),\n\t\t\tDescription: pulumi.String(\"Database of postgres\"),\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\tdestinationConnectionProfile2, err := datastream.NewConnectionProfile(ctx, \"destination_connection_profile2\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"dest-profile\"),\n\t\t\tBigqueryProfile: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"instance-name\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\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\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"my-user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tHost: pulumi.String(\"%\"),\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"source_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Source connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tMysqlProfile: \u0026datastream.ConnectionProfileMysqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tDisplayName: pulumi.String(\"postgres to bigQuery\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStreamId: pulumi.String(\"postgres-bigquery\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: sourceConnectionProfile.ID(),\n\t\t\t\tMysqlSourceConfig: nil,\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destinationConnectionProfile2.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tDataFreshness: pulumi.String(\"900s\"),\n\t\t\t\t\tSingleTargetDataset: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSingleTargetDatasetArgs{\n\t\t\t\t\t\tDatasetId: postgres.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillAll: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\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.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileMysqlProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSingleTargetDatasetArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\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 postgres = new Dataset(\"postgres\", DatasetArgs.builder()\n .datasetId(\"postgres\")\n .friendlyName(\"postgres\")\n .description(\"Database of postgres\")\n .location(\"us-central1\")\n .build());\n\n var destinationConnectionProfile2 = new ConnectionProfile(\"destinationConnectionProfile2\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"dest-profile\")\n .bigqueryProfile()\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"instance-name\")\n .databaseVersion(\"MYSQL_8_0\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(false)\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"my-user\")\n .instance(instance.name())\n .host(\"%\")\n .password(pwd.result())\n .build());\n\n var sourceConnectionProfile = new ConnectionProfile(\"sourceConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Source connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .mysqlProfile(ConnectionProfileMysqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .build())\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .displayName(\"postgres to bigQuery\")\n .location(\"us-central1\")\n .streamId(\"postgres-bigquery\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(sourceConnectionProfile.id())\n .mysqlSourceConfig()\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destinationConnectionProfile2.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .dataFreshness(\"900s\")\n .singleTargetDataset(StreamDestinationConfigBigqueryDestinationConfigSingleTargetDatasetArgs.builder()\n .datasetId(postgres.id())\n .build())\n .build())\n .build())\n .backfillAll()\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n postgres:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: postgres\n friendlyName: postgres\n description: Database of postgres\n location: us-central1\n default:\n type: gcp:datastream:Stream\n properties:\n displayName: postgres to bigQuery\n location: us-central1\n streamId: postgres-bigquery\n sourceConfig:\n sourceConnectionProfile: ${sourceConnectionProfile.id}\n mysqlSourceConfig: {}\n destinationConfig:\n destinationConnectionProfile: ${destinationConnectionProfile2.id}\n bigqueryDestinationConfig:\n dataFreshness: 900s\n singleTargetDataset:\n datasetId: ${postgres.id}\n backfillAll: {}\n destinationConnectionProfile2:\n type: gcp:datastream:ConnectionProfile\n name: destination_connection_profile2\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: dest-profile\n bigqueryProfile: {}\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: instance-name\n databaseVersion: MYSQL_8_0\n region: us-central1\n settings:\n tier: db-f1-micro\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: false\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: my-user\n instance: ${instance.name}\n host: '%'\n password: ${pwd.result}\n sourceConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: source_connection_profile\n properties:\n displayName: Source connection profile\n location: us-central1\n connectionProfileId: source-profile\n mysqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Bigquery\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst project = gcp.organizations.getProject({});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-instance\",\n databaseVersion: \"MYSQL_8_0\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n host: \"%\",\n password: pwd.result,\n});\nconst sourceConnectionProfile = new gcp.datastream.ConnectionProfile(\"source_connection_profile\", {\n displayName: \"Source connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n mysqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n },\n});\nconst bqSa = gcp.bigquery.getDefaultServiceAccount({});\nconst bigqueryKeyUser = new gcp.kms.CryptoKeyIAMMember(\"bigquery_key_user\", {\n cryptoKeyId: \"bigquery-kms-name\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: bqSa.then(bqSa =\u003e `serviceAccount:${bqSa.email}`),\n});\nconst destinationConnectionProfile = new gcp.datastream.ConnectionProfile(\"destination_connection_profile\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n streamId: \"my-stream\",\n location: \"us-central1\",\n displayName: \"my stream\",\n sourceConfig: {\n sourceConnectionProfile: sourceConnectionProfile.id,\n mysqlSourceConfig: {},\n },\n destinationConfig: {\n destinationConnectionProfile: destinationConnectionProfile.id,\n bigqueryDestinationConfig: {\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n kmsKeyName: \"bigquery-kms-name\",\n },\n },\n },\n },\n backfillNone: {},\n}, {\n dependsOn: [bigqueryKeyUser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nproject = gcp.organizations.get_project()\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-instance\",\n database_version=\"MYSQL_8_0\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"backupConfiguration\": {\n \"enabled\": True,\n \"binaryLogEnabled\": True,\n },\n \"ipConfiguration\": {\n \"authorizedNetworks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n host=\"%\",\n password=pwd.result)\nsource_connection_profile = gcp.datastream.ConnectionProfile(\"source_connection_profile\",\n display_name=\"Source connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n mysql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n })\nbq_sa = gcp.bigquery.get_default_service_account()\nbigquery_key_user = gcp.kms.CryptoKeyIAMMember(\"bigquery_key_user\",\n crypto_key_id=\"bigquery-kms-name\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:{bq_sa.email}\")\ndestination_connection_profile = gcp.datastream.ConnectionProfile(\"destination_connection_profile\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\ndefault = gcp.datastream.Stream(\"default\",\n stream_id=\"my-stream\",\n location=\"us-central1\",\n display_name=\"my stream\",\n source_config={\n \"sourceConnectionProfile\": source_connection_profile.id,\n \"mysqlSourceConfig\": {},\n },\n destination_config={\n \"destinationConnectionProfile\": destination_connection_profile.id,\n \"bigqueryDestinationConfig\": {\n \"sourceHierarchyDatasets\": {\n \"datasetTemplate\": {\n \"location\": \"us-central1\",\n \"kmsKeyName\": \"bigquery-kms-name\",\n },\n },\n },\n },\n backfill_none={},\n opts = pulumi.ResourceOptions(depends_on=[bigquery_key_user]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-instance\",\n DatabaseVersion = \"MYSQL_8_0\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Host = \"%\",\n Password = pwd.Result,\n });\n\n var sourceConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"source_connection_profile\", new()\n {\n DisplayName = \"Source connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n MysqlProfile = new Gcp.Datastream.Inputs.ConnectionProfileMysqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n },\n });\n\n var bqSa = Gcp.BigQuery.GetDefaultServiceAccount.Invoke();\n\n var bigqueryKeyUser = new Gcp.Kms.CryptoKeyIAMMember(\"bigquery_key_user\", new()\n {\n CryptoKeyId = \"bigquery-kms-name\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:{bqSa.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)}\",\n });\n\n var destinationConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"destination_connection_profile\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n StreamId = \"my-stream\",\n Location = \"us-central1\",\n DisplayName = \"my stream\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = sourceConnectionProfile.Id,\n MysqlSourceConfig = null,\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destinationConnectionProfile.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n KmsKeyName = \"bigquery-kms-name\",\n },\n },\n },\n },\n BackfillNone = null,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n bigqueryKeyUser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\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 := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\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\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tHost: pulumi.String(\"%\"),\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"source_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Source connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tMysqlProfile: \u0026datastream.ConnectionProfileMysqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqSa, err := bigquery.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbigqueryKeyUser, err := kms.NewCryptoKeyIAMMember(ctx, \"bigquery_key_user\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"bigquery-kms-name\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v\", bqSa.Email)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"destination_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tStreamId: pulumi.String(\"my-stream\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"my stream\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: sourceConnectionProfile.ID(),\n\t\t\t\tMysqlSourceConfig: nil,\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destinationConnectionProfile.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"bigquery-kms-name\"),\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\tBackfillNone: nil,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbigqueryKeyUser,\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.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileMysqlProfileArgs;\nimport com.pulumi.gcp.bigquery.BigqueryFunctions;\nimport com.pulumi.gcp.bigquery.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillNoneArgs;\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 instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-instance\")\n .databaseVersion(\"MYSQL_8_0\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(true)\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .host(\"%\")\n .password(pwd.result())\n .build());\n\n var sourceConnectionProfile = new ConnectionProfile(\"sourceConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Source connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .mysqlProfile(ConnectionProfileMysqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .build())\n .build());\n\n final var bqSa = BigqueryFunctions.getDefaultServiceAccount();\n\n var bigqueryKeyUser = new CryptoKeyIAMMember(\"bigqueryKeyUser\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"bigquery-kms-name\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:%s\", bqSa.applyValue(getDefaultServiceAccountResult -\u003e getDefaultServiceAccountResult.email())))\n .build());\n\n var destinationConnectionProfile = new ConnectionProfile(\"destinationConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .streamId(\"my-stream\")\n .location(\"us-central1\")\n .displayName(\"my stream\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(sourceConnectionProfile.id())\n .mysqlSourceConfig()\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destinationConnectionProfile.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .kmsKeyName(\"bigquery-kms-name\")\n .build())\n .build())\n .build())\n .build())\n .backfillNone()\n .build(), CustomResourceOptions.builder()\n .dependsOn(bigqueryKeyUser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-instance\n databaseVersion: MYSQL_8_0\n region: us-central1\n settings:\n tier: db-f1-micro\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: true\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n host: '%'\n password: ${pwd.result}\n sourceConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: source_connection_profile\n properties:\n displayName: Source connection profile\n location: us-central1\n connectionProfileId: source-profile\n mysqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n bigqueryKeyUser:\n type: gcp:kms:CryptoKeyIAMMember\n name: bigquery_key_user\n properties:\n cryptoKeyId: bigquery-kms-name\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:${bqSa.email}\n destinationConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: destination_connection_profile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n default:\n type: gcp:datastream:Stream\n properties:\n streamId: my-stream\n location: us-central1\n displayName: my stream\n sourceConfig:\n sourceConnectionProfile: ${sourceConnectionProfile.id}\n mysqlSourceConfig: {}\n destinationConfig:\n destinationConnectionProfile: ${destinationConnectionProfile.id}\n bigqueryDestinationConfig:\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n kmsKeyName: bigquery-kms-name\n backfillNone: {}\n options:\n dependson:\n - ${bigqueryKeyUser}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n bqSa:\n fn::invoke:\n Function: gcp:bigquery:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nStream can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/streams/{{stream_id}}`\n\n* `{{project}}/{{location}}/{{stream_id}}`\n\n* `{{location}}/{{stream_id}}`\n\nWhen using the `pulumi import` command, Stream can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:datastream/stream:Stream default projects/{{project}}/locations/{{location}}/streams/{{stream_id}}\n```\n\n```sh\n$ pulumi import gcp:datastream/stream:Stream default {{project}}/{{location}}/{{stream_id}}\n```\n\n```sh\n$ pulumi import gcp:datastream/stream:Stream default {{location}}/{{stream_id}}\n```\n\n", + "description": "A resource representing streaming data from a source to a destination.\n\n\nTo get more information about Stream, see:\n\n* [API documentation](https://cloud.google.com/datastream/docs/reference/rest/v1/projects.locations.streams)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/datastream/docs/create-a-stream)\n\n## Example Usage\n\n### Datastream Stream Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst project = gcp.organizations.getProject({});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-instance\",\n databaseVersion: \"MYSQL_8_0\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n host: \"%\",\n password: pwd.result,\n});\nconst sourceConnectionProfile = new gcp.datastream.ConnectionProfile(\"source_connection_profile\", {\n displayName: \"Source connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n mysqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n },\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"my-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst viewer = new gcp.storage.BucketIAMMember(\"viewer\", {\n bucket: bucket.name,\n role: \"roles/storage.objectViewer\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com`),\n});\nconst creator = new gcp.storage.BucketIAMMember(\"creator\", {\n bucket: bucket.name,\n role: \"roles/storage.objectCreator\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com`),\n});\nconst reader = new gcp.storage.BucketIAMMember(\"reader\", {\n bucket: bucket.name,\n role: \"roles/storage.legacyBucketReader\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com`),\n});\nconst keyUser = new gcp.kms.CryptoKeyIAMMember(\"key_user\", {\n cryptoKeyId: \"kms-name\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com`),\n});\nconst destinationConnectionProfile = new gcp.datastream.ConnectionProfile(\"destination_connection_profile\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n gcsProfile: {\n bucket: bucket.name,\n rootPath: \"/path\",\n },\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n streamId: \"my-stream\",\n desiredState: \"NOT_STARTED\",\n location: \"us-central1\",\n displayName: \"my stream\",\n labels: {\n key: \"value\",\n },\n sourceConfig: {\n sourceConnectionProfile: sourceConnectionProfile.id,\n mysqlSourceConfig: {\n includeObjects: {\n mysqlDatabases: [{\n database: \"my-database\",\n mysqlTables: [\n {\n table: \"includedTable\",\n mysqlColumns: [{\n column: \"includedColumn\",\n dataType: \"VARCHAR\",\n collation: \"utf8mb4\",\n primaryKey: false,\n nullable: false,\n ordinalPosition: 0,\n }],\n },\n {\n table: \"includedTable_2\",\n },\n ],\n }],\n },\n excludeObjects: {\n mysqlDatabases: [{\n database: \"my-database\",\n mysqlTables: [{\n table: \"excludedTable\",\n mysqlColumns: [{\n column: \"excludedColumn\",\n dataType: \"VARCHAR\",\n collation: \"utf8mb4\",\n primaryKey: false,\n nullable: false,\n ordinalPosition: 0,\n }],\n }],\n }],\n },\n maxConcurrentCdcTasks: 5,\n },\n },\n destinationConfig: {\n destinationConnectionProfile: destinationConnectionProfile.id,\n gcsDestinationConfig: {\n path: \"mydata\",\n fileRotationMb: 200,\n fileRotationInterval: \"60s\",\n jsonFileFormat: {\n schemaFileFormat: \"NO_SCHEMA_FILE\",\n compression: \"GZIP\",\n },\n },\n },\n backfillAll: {\n mysqlExcludedObjects: {\n mysqlDatabases: [{\n database: \"my-database\",\n mysqlTables: [{\n table: \"excludedTable\",\n mysqlColumns: [{\n column: \"excludedColumn\",\n dataType: \"VARCHAR\",\n collation: \"utf8mb4\",\n primaryKey: false,\n nullable: false,\n ordinalPosition: 0,\n }],\n }],\n }],\n },\n },\n customerManagedEncryptionKey: \"kms-name\",\n}, {\n dependsOn: [keyUser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nproject = gcp.organizations.get_project()\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-instance\",\n database_version=\"MYSQL_8_0\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"backup_configuration\": {\n \"enabled\": True,\n \"binary_log_enabled\": True,\n },\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n host=\"%\",\n password=pwd.result)\nsource_connection_profile = gcp.datastream.ConnectionProfile(\"source_connection_profile\",\n display_name=\"Source connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n mysql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n })\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"my-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nviewer = gcp.storage.BucketIAMMember(\"viewer\",\n bucket=bucket.name,\n role=\"roles/storage.objectViewer\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datastream.iam.gserviceaccount.com\")\ncreator = gcp.storage.BucketIAMMember(\"creator\",\n bucket=bucket.name,\n role=\"roles/storage.objectCreator\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datastream.iam.gserviceaccount.com\")\nreader = gcp.storage.BucketIAMMember(\"reader\",\n bucket=bucket.name,\n role=\"roles/storage.legacyBucketReader\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datastream.iam.gserviceaccount.com\")\nkey_user = gcp.kms.CryptoKeyIAMMember(\"key_user\",\n crypto_key_id=\"kms-name\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datastream.iam.gserviceaccount.com\")\ndestination_connection_profile = gcp.datastream.ConnectionProfile(\"destination_connection_profile\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n gcs_profile={\n \"bucket\": bucket.name,\n \"root_path\": \"/path\",\n })\ndefault = gcp.datastream.Stream(\"default\",\n stream_id=\"my-stream\",\n desired_state=\"NOT_STARTED\",\n location=\"us-central1\",\n display_name=\"my stream\",\n labels={\n \"key\": \"value\",\n },\n source_config={\n \"source_connection_profile\": source_connection_profile.id,\n \"mysql_source_config\": {\n \"include_objects\": {\n \"mysql_databases\": [{\n \"database\": \"my-database\",\n \"mysql_tables\": [\n {\n \"table\": \"includedTable\",\n \"mysql_columns\": [{\n \"column\": \"includedColumn\",\n \"data_type\": \"VARCHAR\",\n \"collation\": \"utf8mb4\",\n \"primary_key\": False,\n \"nullable\": False,\n \"ordinal_position\": 0,\n }],\n },\n {\n \"table\": \"includedTable_2\",\n },\n ],\n }],\n },\n \"exclude_objects\": {\n \"mysql_databases\": [{\n \"database\": \"my-database\",\n \"mysql_tables\": [{\n \"table\": \"excludedTable\",\n \"mysql_columns\": [{\n \"column\": \"excludedColumn\",\n \"data_type\": \"VARCHAR\",\n \"collation\": \"utf8mb4\",\n \"primary_key\": False,\n \"nullable\": False,\n \"ordinal_position\": 0,\n }],\n }],\n }],\n },\n \"max_concurrent_cdc_tasks\": 5,\n },\n },\n destination_config={\n \"destination_connection_profile\": destination_connection_profile.id,\n \"gcs_destination_config\": {\n \"path\": \"mydata\",\n \"file_rotation_mb\": 200,\n \"file_rotation_interval\": \"60s\",\n \"json_file_format\": {\n \"schema_file_format\": \"NO_SCHEMA_FILE\",\n \"compression\": \"GZIP\",\n },\n },\n },\n backfill_all={\n \"mysql_excluded_objects\": {\n \"mysql_databases\": [{\n \"database\": \"my-database\",\n \"mysql_tables\": [{\n \"table\": \"excludedTable\",\n \"mysql_columns\": [{\n \"column\": \"excludedColumn\",\n \"data_type\": \"VARCHAR\",\n \"collation\": \"utf8mb4\",\n \"primary_key\": False,\n \"nullable\": False,\n \"ordinal_position\": 0,\n }],\n }],\n }],\n },\n },\n customer_managed_encryption_key=\"kms-name\",\n opts = pulumi.ResourceOptions(depends_on=[key_user]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-instance\",\n DatabaseVersion = \"MYSQL_8_0\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Host = \"%\",\n Password = pwd.Result,\n });\n\n var sourceConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"source_connection_profile\", new()\n {\n DisplayName = \"Source connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n MysqlProfile = new Gcp.Datastream.Inputs.ConnectionProfileMysqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n },\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"my-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var viewer = new Gcp.Storage.BucketIAMMember(\"viewer\", new()\n {\n Bucket = bucket.Name,\n Role = \"roles/storage.objectViewer\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datastream.iam.gserviceaccount.com\",\n });\n\n var creator = new Gcp.Storage.BucketIAMMember(\"creator\", new()\n {\n Bucket = bucket.Name,\n Role = \"roles/storage.objectCreator\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datastream.iam.gserviceaccount.com\",\n });\n\n var reader = new Gcp.Storage.BucketIAMMember(\"reader\", new()\n {\n Bucket = bucket.Name,\n Role = \"roles/storage.legacyBucketReader\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datastream.iam.gserviceaccount.com\",\n });\n\n var keyUser = new Gcp.Kms.CryptoKeyIAMMember(\"key_user\", new()\n {\n CryptoKeyId = \"kms-name\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datastream.iam.gserviceaccount.com\",\n });\n\n var destinationConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"destination_connection_profile\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n GcsProfile = new Gcp.Datastream.Inputs.ConnectionProfileGcsProfileArgs\n {\n Bucket = bucket.Name,\n RootPath = \"/path\",\n },\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n StreamId = \"my-stream\",\n DesiredState = \"NOT_STARTED\",\n Location = \"us-central1\",\n DisplayName = \"my stream\",\n Labels = \n {\n { \"key\", \"value\" },\n },\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = sourceConnectionProfile.Id,\n MysqlSourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigArgs\n {\n IncludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs\n {\n MysqlDatabases = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseArgs\n {\n Database = \"my-database\",\n MysqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs\n {\n Table = \"includedTable\",\n MysqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs\n {\n Column = \"includedColumn\",\n DataType = \"VARCHAR\",\n Collation = \"utf8mb4\",\n PrimaryKey = false,\n Nullable = false,\n OrdinalPosition = 0,\n },\n },\n },\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs\n {\n Table = \"includedTable_2\",\n },\n },\n },\n },\n },\n ExcludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs\n {\n MysqlDatabases = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseArgs\n {\n Database = \"my-database\",\n MysqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArgs\n {\n Table = \"excludedTable\",\n MysqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs\n {\n Column = \"excludedColumn\",\n DataType = \"VARCHAR\",\n Collation = \"utf8mb4\",\n PrimaryKey = false,\n Nullable = false,\n OrdinalPosition = 0,\n },\n },\n },\n },\n },\n },\n },\n MaxConcurrentCdcTasks = 5,\n },\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destinationConnectionProfile.Id,\n GcsDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigGcsDestinationConfigArgs\n {\n Path = \"mydata\",\n FileRotationMb = 200,\n FileRotationInterval = \"60s\",\n JsonFileFormat = new Gcp.Datastream.Inputs.StreamDestinationConfigGcsDestinationConfigJsonFileFormatArgs\n {\n SchemaFileFormat = \"NO_SCHEMA_FILE\",\n Compression = \"GZIP\",\n },\n },\n },\n BackfillAll = new Gcp.Datastream.Inputs.StreamBackfillAllArgs\n {\n MysqlExcludedObjects = new Gcp.Datastream.Inputs.StreamBackfillAllMysqlExcludedObjectsArgs\n {\n MysqlDatabases = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseArgs\n {\n Database = \"my-database\",\n MysqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableArgs\n {\n Table = \"excludedTable\",\n MysqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableMysqlColumnArgs\n {\n Column = \"excludedColumn\",\n DataType = \"VARCHAR\",\n Collation = \"utf8mb4\",\n PrimaryKey = false,\n Nullable = false,\n OrdinalPosition = 0,\n },\n },\n },\n },\n },\n },\n },\n },\n CustomerManagedEncryptionKey = \"kms-name\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n keyUser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\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\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\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\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tHost: pulumi.String(\"%\"),\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"source_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Source connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tMysqlProfile: \u0026datastream.ConnectionProfileMysqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t},\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\tName: pulumi.String(\"my-bucket\"),\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\t_, err = storage.NewBucketIAMMember(ctx, \"viewer\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.objectViewer\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-datastream.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucketIAMMember(ctx, \"creator\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.objectCreator\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-datastream.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucketIAMMember(ctx, \"reader\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.legacyBucketReader\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-datastream.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyUser, err := kms.NewCryptoKeyIAMMember(ctx, \"key_user\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-name\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-datastream.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"destination_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tGcsProfile: \u0026datastream.ConnectionProfileGcsProfileArgs{\n\t\t\t\tBucket: bucket.Name,\n\t\t\t\tRootPath: pulumi.String(\"/path\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tStreamId: pulumi.String(\"my-stream\"),\n\t\t\tDesiredState: pulumi.String(\"NOT_STARTED\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"my stream\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: sourceConnectionProfile.ID(),\n\t\t\t\tMysqlSourceConfig: \u0026datastream.StreamSourceConfigMysqlSourceConfigArgs{\n\t\t\t\t\tIncludeObjects: \u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs{\n\t\t\t\t\t\tMysqlDatabases: datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseArgs{\n\t\t\t\t\t\t\t\tDatabase: pulumi.String(\"my-database\"),\n\t\t\t\t\t\t\t\tMysqlTables: datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"includedTable\"),\n\t\t\t\t\t\t\t\t\t\tMysqlColumns: datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableMysqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"includedColumn\"),\n\t\t\t\t\t\t\t\t\t\t\t\tDataType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\t\t\t\t\t\tCollation: pulumi.String(\"utf8mb4\"),\n\t\t\t\t\t\t\t\t\t\t\t\tPrimaryKey: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\tNullable: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\tOrdinalPosition: pulumi.Int(0),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"includedTable_2\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tExcludeObjects: \u0026datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs{\n\t\t\t\t\t\tMysqlDatabases: datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseArgs{\n\t\t\t\t\t\t\t\tDatabase: pulumi.String(\"my-database\"),\n\t\t\t\t\t\t\t\tMysqlTables: datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"excludedTable\"),\n\t\t\t\t\t\t\t\t\t\tMysqlColumns: datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"excludedColumn\"),\n\t\t\t\t\t\t\t\t\t\t\t\tDataType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\t\t\t\t\t\tCollation: pulumi.String(\"utf8mb4\"),\n\t\t\t\t\t\t\t\t\t\t\t\tPrimaryKey: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\tNullable: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\tOrdinalPosition: pulumi.Int(0),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tMaxConcurrentCdcTasks: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destinationConnectionProfile.ID(),\n\t\t\t\tGcsDestinationConfig: \u0026datastream.StreamDestinationConfigGcsDestinationConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"mydata\"),\n\t\t\t\t\tFileRotationMb: pulumi.Int(200),\n\t\t\t\t\tFileRotationInterval: pulumi.String(\"60s\"),\n\t\t\t\t\tJsonFileFormat: \u0026datastream.StreamDestinationConfigGcsDestinationConfigJsonFileFormatArgs{\n\t\t\t\t\t\tSchemaFileFormat: pulumi.String(\"NO_SCHEMA_FILE\"),\n\t\t\t\t\t\tCompression: pulumi.String(\"GZIP\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillAll: \u0026datastream.StreamBackfillAllArgs{\n\t\t\t\tMysqlExcludedObjects: \u0026datastream.StreamBackfillAllMysqlExcludedObjectsArgs{\n\t\t\t\t\tMysqlDatabases: datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseArray{\n\t\t\t\t\t\t\u0026datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseArgs{\n\t\t\t\t\t\t\tDatabase: pulumi.String(\"my-database\"),\n\t\t\t\t\t\t\tMysqlTables: datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableArray{\n\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableArgs{\n\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"excludedTable\"),\n\t\t\t\t\t\t\t\t\tMysqlColumns: datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableMysqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableMysqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"excludedColumn\"),\n\t\t\t\t\t\t\t\t\t\t\tDataType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\t\t\t\t\tCollation: pulumi.String(\"utf8mb4\"),\n\t\t\t\t\t\t\t\t\t\t\tPrimaryKey: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\tNullable: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\tOrdinalPosition: pulumi.Int(0),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tCustomerManagedEncryptionKey: pulumi.String(\"kms-name\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tkeyUser,\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.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileMysqlProfileArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileGcsProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigGcsDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigGcsDestinationConfigJsonFileFormatArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllMysqlExcludedObjectsArgs;\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 instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-instance\")\n .databaseVersion(\"MYSQL_8_0\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(true)\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .host(\"%\")\n .password(pwd.result())\n .build());\n\n var sourceConnectionProfile = new ConnectionProfile(\"sourceConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Source connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .mysqlProfile(ConnectionProfileMysqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .build())\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var viewer = new BucketIAMMember(\"viewer\", BucketIAMMemberArgs.builder()\n .bucket(bucket.name())\n .role(\"roles/storage.objectViewer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datastream.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var creator = new BucketIAMMember(\"creator\", BucketIAMMemberArgs.builder()\n .bucket(bucket.name())\n .role(\"roles/storage.objectCreator\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datastream.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var reader = new BucketIAMMember(\"reader\", BucketIAMMemberArgs.builder()\n .bucket(bucket.name())\n .role(\"roles/storage.legacyBucketReader\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datastream.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var keyUser = new CryptoKeyIAMMember(\"keyUser\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-name\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datastream.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var destinationConnectionProfile = new ConnectionProfile(\"destinationConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .gcsProfile(ConnectionProfileGcsProfileArgs.builder()\n .bucket(bucket.name())\n .rootPath(\"/path\")\n .build())\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .streamId(\"my-stream\")\n .desiredState(\"NOT_STARTED\")\n .location(\"us-central1\")\n .displayName(\"my stream\")\n .labels(Map.of(\"key\", \"value\"))\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(sourceConnectionProfile.id())\n .mysqlSourceConfig(StreamSourceConfigMysqlSourceConfigArgs.builder()\n .includeObjects(StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs.builder()\n .mysqlDatabases(StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseArgs.builder()\n .database(\"my-database\")\n .mysqlTables( \n StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs.builder()\n .table(\"includedTable\")\n .mysqlColumns(StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs.builder()\n .column(\"includedColumn\")\n .dataType(\"VARCHAR\")\n .collation(\"utf8mb4\")\n .primaryKey(false)\n .nullable(false)\n .ordinalPosition(0)\n .build())\n .build(),\n StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs.builder()\n .table(\"includedTable_2\")\n .build())\n .build())\n .build())\n .excludeObjects(StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs.builder()\n .mysqlDatabases(StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseArgs.builder()\n .database(\"my-database\")\n .mysqlTables(StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArgs.builder()\n .table(\"excludedTable\")\n .mysqlColumns(StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs.builder()\n .column(\"excludedColumn\")\n .dataType(\"VARCHAR\")\n .collation(\"utf8mb4\")\n .primaryKey(false)\n .nullable(false)\n .ordinalPosition(0)\n .build())\n .build())\n .build())\n .build())\n .maxConcurrentCdcTasks(5)\n .build())\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destinationConnectionProfile.id())\n .gcsDestinationConfig(StreamDestinationConfigGcsDestinationConfigArgs.builder()\n .path(\"mydata\")\n .fileRotationMb(200)\n .fileRotationInterval(\"60s\")\n .jsonFileFormat(StreamDestinationConfigGcsDestinationConfigJsonFileFormatArgs.builder()\n .schemaFileFormat(\"NO_SCHEMA_FILE\")\n .compression(\"GZIP\")\n .build())\n .build())\n .build())\n .backfillAll(StreamBackfillAllArgs.builder()\n .mysqlExcludedObjects(StreamBackfillAllMysqlExcludedObjectsArgs.builder()\n .mysqlDatabases(StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseArgs.builder()\n .database(\"my-database\")\n .mysqlTables(StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableArgs.builder()\n .table(\"excludedTable\")\n .mysqlColumns(StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableMysqlColumnArgs.builder()\n .column(\"excludedColumn\")\n .dataType(\"VARCHAR\")\n .collation(\"utf8mb4\")\n .primaryKey(false)\n .nullable(false)\n .ordinalPosition(0)\n .build())\n .build())\n .build())\n .build())\n .build())\n .customerManagedEncryptionKey(\"kms-name\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(keyUser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-instance\n databaseVersion: MYSQL_8_0\n region: us-central1\n settings:\n tier: db-f1-micro\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: true\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n host: '%'\n password: ${pwd.result}\n sourceConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: source_connection_profile\n properties:\n displayName: Source connection profile\n location: us-central1\n connectionProfileId: source-profile\n mysqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: my-bucket\n location: US\n uniformBucketLevelAccess: true\n viewer:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${bucket.name}\n role: roles/storage.objectViewer\n member: serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com\n creator:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${bucket.name}\n role: roles/storage.objectCreator\n member: serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com\n reader:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${bucket.name}\n role: roles/storage.legacyBucketReader\n member: serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com\n keyUser:\n type: gcp:kms:CryptoKeyIAMMember\n name: key_user\n properties:\n cryptoKeyId: kms-name\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com\n destinationConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: destination_connection_profile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: destination-profile\n gcsProfile:\n bucket: ${bucket.name}\n rootPath: /path\n default:\n type: gcp:datastream:Stream\n properties:\n streamId: my-stream\n desiredState: NOT_STARTED\n location: us-central1\n displayName: my stream\n labels:\n key: value\n sourceConfig:\n sourceConnectionProfile: ${sourceConnectionProfile.id}\n mysqlSourceConfig:\n includeObjects:\n mysqlDatabases:\n - database: my-database\n mysqlTables:\n - table: includedTable\n mysqlColumns:\n - column: includedColumn\n dataType: VARCHAR\n collation: utf8mb4\n primaryKey: false\n nullable: false\n ordinalPosition: 0\n - table: includedTable_2\n excludeObjects:\n mysqlDatabases:\n - database: my-database\n mysqlTables:\n - table: excludedTable\n mysqlColumns:\n - column: excludedColumn\n dataType: VARCHAR\n collation: utf8mb4\n primaryKey: false\n nullable: false\n ordinalPosition: 0\n maxConcurrentCdcTasks: 5\n destinationConfig:\n destinationConnectionProfile: ${destinationConnectionProfile.id}\n gcsDestinationConfig:\n path: mydata\n fileRotationMb: 200\n fileRotationInterval: 60s\n jsonFileFormat:\n schemaFileFormat: NO_SCHEMA_FILE\n compression: GZIP\n backfillAll:\n mysqlExcludedObjects:\n mysqlDatabases:\n - database: my-database\n mysqlTables:\n - table: excludedTable\n mysqlColumns:\n - column: excludedColumn\n dataType: VARCHAR\n collation: utf8mb4\n primaryKey: false\n nullable: false\n ordinalPosition: 0\n customerManagedEncryptionKey: kms-name\n options:\n dependson:\n - ${keyUser}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Postgresql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source = new gcp.datastream.ConnectionProfile(\"source\", {\n displayName: \"Postgresql Source\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n postgresqlProfile: {\n hostname: \"hostname\",\n port: 3306,\n username: \"user\",\n password: \"pass\",\n database: \"postgres\",\n },\n});\nconst destination = new gcp.datastream.ConnectionProfile(\"destination\", {\n displayName: \"BigQuery Destination\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n displayName: \"Postgres to BigQuery\",\n location: \"us-central1\",\n streamId: \"my-stream\",\n desiredState: \"RUNNING\",\n sourceConfig: {\n sourceConnectionProfile: source.id,\n postgresqlSourceConfig: {\n maxConcurrentBackfillTasks: 12,\n publication: \"publication\",\n replicationSlot: \"replication_slot\",\n includeObjects: {\n postgresqlSchemas: [{\n schema: \"schema\",\n postgresqlTables: [{\n table: \"table\",\n postgresqlColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n excludeObjects: {\n postgresqlSchemas: [{\n schema: \"schema\",\n postgresqlTables: [{\n table: \"table\",\n postgresqlColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n },\n },\n destinationConfig: {\n destinationConnectionProfile: destination.id,\n bigqueryDestinationConfig: {\n dataFreshness: \"900s\",\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n },\n },\n },\n },\n backfillAll: {\n postgresqlExcludedObjects: {\n postgresqlSchemas: [{\n schema: \"schema\",\n postgresqlTables: [{\n table: \"table\",\n postgresqlColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource = gcp.datastream.ConnectionProfile(\"source\",\n display_name=\"Postgresql Source\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n postgresql_profile={\n \"hostname\": \"hostname\",\n \"port\": 3306,\n \"username\": \"user\",\n \"password\": \"pass\",\n \"database\": \"postgres\",\n })\ndestination = gcp.datastream.ConnectionProfile(\"destination\",\n display_name=\"BigQuery Destination\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\ndefault = gcp.datastream.Stream(\"default\",\n display_name=\"Postgres to BigQuery\",\n location=\"us-central1\",\n stream_id=\"my-stream\",\n desired_state=\"RUNNING\",\n source_config={\n \"source_connection_profile\": source.id,\n \"postgresql_source_config\": {\n \"max_concurrent_backfill_tasks\": 12,\n \"publication\": \"publication\",\n \"replication_slot\": \"replication_slot\",\n \"include_objects\": {\n \"postgresql_schemas\": [{\n \"schema\": \"schema\",\n \"postgresql_tables\": [{\n \"table\": \"table\",\n \"postgresql_columns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n \"exclude_objects\": {\n \"postgresql_schemas\": [{\n \"schema\": \"schema\",\n \"postgresql_tables\": [{\n \"table\": \"table\",\n \"postgresql_columns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n },\n },\n destination_config={\n \"destination_connection_profile\": destination.id,\n \"bigquery_destination_config\": {\n \"data_freshness\": \"900s\",\n \"source_hierarchy_datasets\": {\n \"dataset_template\": {\n \"location\": \"us-central1\",\n },\n },\n },\n },\n backfill_all={\n \"postgresql_excluded_objects\": {\n \"postgresql_schemas\": [{\n \"schema\": \"schema\",\n \"postgresql_tables\": [{\n \"table\": \"table\",\n \"postgresql_columns\": [{\n \"column\": \"column\",\n }],\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 source = new Gcp.Datastream.ConnectionProfile(\"source\", new()\n {\n DisplayName = \"Postgresql Source\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n PostgresqlProfile = new Gcp.Datastream.Inputs.ConnectionProfilePostgresqlProfileArgs\n {\n Hostname = \"hostname\",\n Port = 3306,\n Username = \"user\",\n Password = \"pass\",\n Database = \"postgres\",\n },\n });\n\n var destination = new Gcp.Datastream.ConnectionProfile(\"destination\", new()\n {\n DisplayName = \"BigQuery Destination\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n DisplayName = \"Postgres to BigQuery\",\n Location = \"us-central1\",\n StreamId = \"my-stream\",\n DesiredState = \"RUNNING\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = source.Id,\n PostgresqlSourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigArgs\n {\n MaxConcurrentBackfillTasks = 12,\n Publication = \"publication\",\n ReplicationSlot = \"replication_slot\",\n IncludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsArgs\n {\n PostgresqlSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaArgs\n {\n Schema = \"schema\",\n PostgresqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTableArgs\n {\n Table = \"table\",\n PostgresqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n ExcludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsArgs\n {\n PostgresqlSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaArgs\n {\n Schema = \"schema\",\n PostgresqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTableArgs\n {\n Table = \"table\",\n PostgresqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destination.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n DataFreshness = \"900s\",\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n BackfillAll = new Gcp.Datastream.Inputs.StreamBackfillAllArgs\n {\n PostgresqlExcludedObjects = new Gcp.Datastream.Inputs.StreamBackfillAllPostgresqlExcludedObjectsArgs\n {\n PostgresqlSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaArgs\n {\n Schema = \"schema\",\n PostgresqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTableArgs\n {\n Table = \"table\",\n PostgresqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsource, err := datastream.NewConnectionProfile(ctx, \"source\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Postgresql Source\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tPostgresqlProfile: \u0026datastream.ConnectionProfilePostgresqlProfileArgs{\n\t\t\t\tHostname: pulumi.String(\"hostname\"),\n\t\t\t\tPort: pulumi.Int(3306),\n\t\t\t\tUsername: pulumi.String(\"user\"),\n\t\t\t\tPassword: pulumi.String(\"pass\"),\n\t\t\t\tDatabase: pulumi.String(\"postgres\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestination, err := datastream.NewConnectionProfile(ctx, \"destination\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"BigQuery Destination\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tDisplayName: pulumi.String(\"Postgres to BigQuery\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStreamId: pulumi.String(\"my-stream\"),\n\t\t\tDesiredState: pulumi.String(\"RUNNING\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: source.ID(),\n\t\t\t\tPostgresqlSourceConfig: \u0026datastream.StreamSourceConfigPostgresqlSourceConfigArgs{\n\t\t\t\t\tMaxConcurrentBackfillTasks: pulumi.Int(12),\n\t\t\t\t\tPublication: pulumi.String(\"publication\"),\n\t\t\t\t\tReplicationSlot: pulumi.String(\"replication_slot\"),\n\t\t\t\t\tIncludeObjects: \u0026datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsArgs{\n\t\t\t\t\t\tPostgresqlSchemas: datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tPostgresqlTables: datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t\tPostgresqlColumns: datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tExcludeObjects: \u0026datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsArgs{\n\t\t\t\t\t\tPostgresqlSchemas: datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tPostgresqlTables: datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t\tPostgresqlColumns: datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destination.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tDataFreshness: pulumi.String(\"900s\"),\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\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\tBackfillAll: \u0026datastream.StreamBackfillAllArgs{\n\t\t\t\tPostgresqlExcludedObjects: \u0026datastream.StreamBackfillAllPostgresqlExcludedObjectsArgs{\n\t\t\t\t\tPostgresqlSchemas: datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaArray{\n\t\t\t\t\t\t\u0026datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaArgs{\n\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\tPostgresqlTables: datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTableArray{\n\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTableArgs{\n\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\tPostgresqlColumns: datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfilePostgresqlProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigPostgresqlSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllPostgresqlExcludedObjectsArgs;\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 = new ConnectionProfile(\"source\", ConnectionProfileArgs.builder()\n .displayName(\"Postgresql Source\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .postgresqlProfile(ConnectionProfilePostgresqlProfileArgs.builder()\n .hostname(\"hostname\")\n .port(3306)\n .username(\"user\")\n .password(\"pass\")\n .database(\"postgres\")\n .build())\n .build());\n\n var destination = new ConnectionProfile(\"destination\", ConnectionProfileArgs.builder()\n .displayName(\"BigQuery Destination\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .displayName(\"Postgres to BigQuery\")\n .location(\"us-central1\")\n .streamId(\"my-stream\")\n .desiredState(\"RUNNING\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(source.id())\n .postgresqlSourceConfig(StreamSourceConfigPostgresqlSourceConfigArgs.builder()\n .maxConcurrentBackfillTasks(12)\n .publication(\"publication\")\n .replicationSlot(\"replication_slot\")\n .includeObjects(StreamSourceConfigPostgresqlSourceConfigIncludeObjectsArgs.builder()\n .postgresqlSchemas(StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaArgs.builder()\n .schema(\"schema\")\n .postgresqlTables(StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTableArgs.builder()\n .table(\"table\")\n .postgresqlColumns(StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .excludeObjects(StreamSourceConfigPostgresqlSourceConfigExcludeObjectsArgs.builder()\n .postgresqlSchemas(StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaArgs.builder()\n .schema(\"schema\")\n .postgresqlTables(StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTableArgs.builder()\n .table(\"table\")\n .postgresqlColumns(StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destination.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .dataFreshness(\"900s\")\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build())\n .backfillAll(StreamBackfillAllArgs.builder()\n .postgresqlExcludedObjects(StreamBackfillAllPostgresqlExcludedObjectsArgs.builder()\n .postgresqlSchemas(StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaArgs.builder()\n .schema(\"schema\")\n .postgresqlTables(StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTableArgs.builder()\n .table(\"table\")\n .postgresqlColumns(StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Postgresql Source\n location: us-central1\n connectionProfileId: source-profile\n postgresqlProfile:\n hostname: hostname\n port: 3306\n username: user\n password: pass\n database: postgres\n destination:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: BigQuery Destination\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n default:\n type: gcp:datastream:Stream\n properties:\n displayName: Postgres to BigQuery\n location: us-central1\n streamId: my-stream\n desiredState: RUNNING\n sourceConfig:\n sourceConnectionProfile: ${source.id}\n postgresqlSourceConfig:\n maxConcurrentBackfillTasks: 12\n publication: publication\n replicationSlot: replication_slot\n includeObjects:\n postgresqlSchemas:\n - schema: schema\n postgresqlTables:\n - table: table\n postgresqlColumns:\n - column: column\n excludeObjects:\n postgresqlSchemas:\n - schema: schema\n postgresqlTables:\n - table: table\n postgresqlColumns:\n - column: column\n destinationConfig:\n destinationConnectionProfile: ${destination.id}\n bigqueryDestinationConfig:\n dataFreshness: 900s\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n backfillAll:\n postgresqlExcludedObjects:\n postgresqlSchemas:\n - schema: schema\n postgresqlTables:\n - table: table\n postgresqlColumns:\n - column: column\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Oracle\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source = new gcp.datastream.ConnectionProfile(\"source\", {\n displayName: \"Oracle Source\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n oracleProfile: {\n hostname: \"hostname\",\n port: 1521,\n username: \"user\",\n password: \"pass\",\n databaseService: \"ORCL\",\n },\n});\nconst destination = new gcp.datastream.ConnectionProfile(\"destination\", {\n displayName: \"BigQuery Destination\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst stream5 = new gcp.datastream.Stream(\"stream5\", {\n displayName: \"Oracle to BigQuery\",\n location: \"us-central1\",\n streamId: \"my-stream\",\n desiredState: \"RUNNING\",\n sourceConfig: {\n sourceConnectionProfile: source.id,\n oracleSourceConfig: {\n maxConcurrentCdcTasks: 8,\n maxConcurrentBackfillTasks: 12,\n includeObjects: {\n oracleSchemas: [{\n schema: \"schema\",\n oracleTables: [{\n table: \"table\",\n oracleColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n excludeObjects: {\n oracleSchemas: [{\n schema: \"schema\",\n oracleTables: [{\n table: \"table\",\n oracleColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n dropLargeObjects: {},\n },\n },\n destinationConfig: {\n destinationConnectionProfile: destination.id,\n bigqueryDestinationConfig: {\n dataFreshness: \"900s\",\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n },\n },\n },\n },\n backfillAll: {\n oracleExcludedObjects: {\n oracleSchemas: [{\n schema: \"schema\",\n oracleTables: [{\n table: \"table\",\n oracleColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource = gcp.datastream.ConnectionProfile(\"source\",\n display_name=\"Oracle Source\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n oracle_profile={\n \"hostname\": \"hostname\",\n \"port\": 1521,\n \"username\": \"user\",\n \"password\": \"pass\",\n \"database_service\": \"ORCL\",\n })\ndestination = gcp.datastream.ConnectionProfile(\"destination\",\n display_name=\"BigQuery Destination\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\nstream5 = gcp.datastream.Stream(\"stream5\",\n display_name=\"Oracle to BigQuery\",\n location=\"us-central1\",\n stream_id=\"my-stream\",\n desired_state=\"RUNNING\",\n source_config={\n \"source_connection_profile\": source.id,\n \"oracle_source_config\": {\n \"max_concurrent_cdc_tasks\": 8,\n \"max_concurrent_backfill_tasks\": 12,\n \"include_objects\": {\n \"oracle_schemas\": [{\n \"schema\": \"schema\",\n \"oracle_tables\": [{\n \"table\": \"table\",\n \"oracle_columns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n \"exclude_objects\": {\n \"oracle_schemas\": [{\n \"schema\": \"schema\",\n \"oracle_tables\": [{\n \"table\": \"table\",\n \"oracle_columns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n \"drop_large_objects\": {},\n },\n },\n destination_config={\n \"destination_connection_profile\": destination.id,\n \"bigquery_destination_config\": {\n \"data_freshness\": \"900s\",\n \"source_hierarchy_datasets\": {\n \"dataset_template\": {\n \"location\": \"us-central1\",\n },\n },\n },\n },\n backfill_all={\n \"oracle_excluded_objects\": {\n \"oracle_schemas\": [{\n \"schema\": \"schema\",\n \"oracle_tables\": [{\n \"table\": \"table\",\n \"oracle_columns\": [{\n \"column\": \"column\",\n }],\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 source = new Gcp.Datastream.ConnectionProfile(\"source\", new()\n {\n DisplayName = \"Oracle Source\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n OracleProfile = new Gcp.Datastream.Inputs.ConnectionProfileOracleProfileArgs\n {\n Hostname = \"hostname\",\n Port = 1521,\n Username = \"user\",\n Password = \"pass\",\n DatabaseService = \"ORCL\",\n },\n });\n\n var destination = new Gcp.Datastream.ConnectionProfile(\"destination\", new()\n {\n DisplayName = \"BigQuery Destination\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var stream5 = new Gcp.Datastream.Stream(\"stream5\", new()\n {\n DisplayName = \"Oracle to BigQuery\",\n Location = \"us-central1\",\n StreamId = \"my-stream\",\n DesiredState = \"RUNNING\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = source.Id,\n OracleSourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigArgs\n {\n MaxConcurrentCdcTasks = 8,\n MaxConcurrentBackfillTasks = 12,\n IncludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsArgs\n {\n OracleSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaArgs\n {\n Schema = \"schema\",\n OracleTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableArgs\n {\n Table = \"table\",\n OracleColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableOracleColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n ExcludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsArgs\n {\n OracleSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaArgs\n {\n Schema = \"schema\",\n OracleTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableArgs\n {\n Table = \"table\",\n OracleColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableOracleColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n DropLargeObjects = null,\n },\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destination.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n DataFreshness = \"900s\",\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n BackfillAll = new Gcp.Datastream.Inputs.StreamBackfillAllArgs\n {\n OracleExcludedObjects = new Gcp.Datastream.Inputs.StreamBackfillAllOracleExcludedObjectsArgs\n {\n OracleSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllOracleExcludedObjectsOracleSchemaArgs\n {\n Schema = \"schema\",\n OracleTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableArgs\n {\n Table = \"table\",\n OracleColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableOracleColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsource, err := datastream.NewConnectionProfile(ctx, \"source\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Oracle Source\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tOracleProfile: \u0026datastream.ConnectionProfileOracleProfileArgs{\n\t\t\t\tHostname: pulumi.String(\"hostname\"),\n\t\t\t\tPort: pulumi.Int(1521),\n\t\t\t\tUsername: pulumi.String(\"user\"),\n\t\t\t\tPassword: pulumi.String(\"pass\"),\n\t\t\t\tDatabaseService: pulumi.String(\"ORCL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestination, err := datastream.NewConnectionProfile(ctx, \"destination\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"BigQuery Destination\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"stream5\", \u0026datastream.StreamArgs{\n\t\t\tDisplayName: pulumi.String(\"Oracle to BigQuery\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStreamId: pulumi.String(\"my-stream\"),\n\t\t\tDesiredState: pulumi.String(\"RUNNING\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: source.ID(),\n\t\t\t\tOracleSourceConfig: \u0026datastream.StreamSourceConfigOracleSourceConfigArgs{\n\t\t\t\t\tMaxConcurrentCdcTasks: pulumi.Int(8),\n\t\t\t\t\tMaxConcurrentBackfillTasks: pulumi.Int(12),\n\t\t\t\t\tIncludeObjects: \u0026datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsArgs{\n\t\t\t\t\t\tOracleSchemas: datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tOracleTables: datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t\tOracleColumns: datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableOracleColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableOracleColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tExcludeObjects: \u0026datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsArgs{\n\t\t\t\t\t\tOracleSchemas: datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tOracleTables: datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t\tOracleColumns: datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableOracleColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableOracleColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tDropLargeObjects: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destination.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tDataFreshness: pulumi.String(\"900s\"),\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\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\tBackfillAll: \u0026datastream.StreamBackfillAllArgs{\n\t\t\t\tOracleExcludedObjects: \u0026datastream.StreamBackfillAllOracleExcludedObjectsArgs{\n\t\t\t\t\tOracleSchemas: datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaArray{\n\t\t\t\t\t\t\u0026datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaArgs{\n\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\tOracleTables: datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableArray{\n\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableArgs{\n\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\tOracleColumns: datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableOracleColumnArray{\n\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableOracleColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileOracleProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigOracleSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigOracleSourceConfigDropLargeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllOracleExcludedObjectsArgs;\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 = new ConnectionProfile(\"source\", ConnectionProfileArgs.builder()\n .displayName(\"Oracle Source\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .oracleProfile(ConnectionProfileOracleProfileArgs.builder()\n .hostname(\"hostname\")\n .port(1521)\n .username(\"user\")\n .password(\"pass\")\n .databaseService(\"ORCL\")\n .build())\n .build());\n\n var destination = new ConnectionProfile(\"destination\", ConnectionProfileArgs.builder()\n .displayName(\"BigQuery Destination\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var stream5 = new Stream(\"stream5\", StreamArgs.builder()\n .displayName(\"Oracle to BigQuery\")\n .location(\"us-central1\")\n .streamId(\"my-stream\")\n .desiredState(\"RUNNING\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(source.id())\n .oracleSourceConfig(StreamSourceConfigOracleSourceConfigArgs.builder()\n .maxConcurrentCdcTasks(8)\n .maxConcurrentBackfillTasks(12)\n .includeObjects(StreamSourceConfigOracleSourceConfigIncludeObjectsArgs.builder()\n .oracleSchemas(StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaArgs.builder()\n .schema(\"schema\")\n .oracleTables(StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableArgs.builder()\n .table(\"table\")\n .oracleColumns(StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableOracleColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .excludeObjects(StreamSourceConfigOracleSourceConfigExcludeObjectsArgs.builder()\n .oracleSchemas(StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaArgs.builder()\n .schema(\"schema\")\n .oracleTables(StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableArgs.builder()\n .table(\"table\")\n .oracleColumns(StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableOracleColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .dropLargeObjects()\n .build())\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destination.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .dataFreshness(\"900s\")\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build())\n .backfillAll(StreamBackfillAllArgs.builder()\n .oracleExcludedObjects(StreamBackfillAllOracleExcludedObjectsArgs.builder()\n .oracleSchemas(StreamBackfillAllOracleExcludedObjectsOracleSchemaArgs.builder()\n .schema(\"schema\")\n .oracleTables(StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableArgs.builder()\n .table(\"table\")\n .oracleColumns(StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableOracleColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Oracle Source\n location: us-central1\n connectionProfileId: source-profile\n oracleProfile:\n hostname: hostname\n port: 1521\n username: user\n password: pass\n databaseService: ORCL\n destination:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: BigQuery Destination\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n stream5:\n type: gcp:datastream:Stream\n properties:\n displayName: Oracle to BigQuery\n location: us-central1\n streamId: my-stream\n desiredState: RUNNING\n sourceConfig:\n sourceConnectionProfile: ${source.id}\n oracleSourceConfig:\n maxConcurrentCdcTasks: 8\n maxConcurrentBackfillTasks: 12\n includeObjects:\n oracleSchemas:\n - schema: schema\n oracleTables:\n - table: table\n oracleColumns:\n - column: column\n excludeObjects:\n oracleSchemas:\n - schema: schema\n oracleTables:\n - table: table\n oracleColumns:\n - column: column\n dropLargeObjects: {}\n destinationConfig:\n destinationConnectionProfile: ${destination.id}\n bigqueryDestinationConfig:\n dataFreshness: 900s\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n backfillAll:\n oracleExcludedObjects:\n oracleSchemas:\n - schema: schema\n oracleTables:\n - table: table\n oracleColumns:\n - column: column\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Sql Server\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"sql-server\",\n databaseVersion: \"SQLSERVER_2019_STANDARD\",\n region: \"us-central1\",\n rootPassword: \"root-password\",\n deletionProtection: true,\n settings: {\n tier: \"db-custom-2-4096\",\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: \"password\",\n});\nconst db = new gcp.sql.Database(\"db\", {\n name: \"db\",\n instance: instance.name,\n}, {\n dependsOn: [user],\n});\nconst source = new gcp.datastream.ConnectionProfile(\"source\", {\n displayName: \"SQL Server Source\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n sqlServerProfile: {\n hostname: instance.publicIpAddress,\n port: 1433,\n username: user.name,\n password: user.password,\n database: db.name,\n },\n});\nconst destination = new gcp.datastream.ConnectionProfile(\"destination\", {\n displayName: \"BigQuery Destination\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n displayName: \"SQL Server to BigQuery\",\n location: \"us-central1\",\n streamId: \"stream\",\n sourceConfig: {\n sourceConnectionProfile: source.id,\n sqlServerSourceConfig: {\n includeObjects: {\n schemas: [{\n schema: \"schema\",\n tables: [{\n table: \"table\",\n }],\n }],\n },\n },\n },\n destinationConfig: {\n destinationConnectionProfile: destination.id,\n bigqueryDestinationConfig: {\n dataFreshness: \"900s\",\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n },\n },\n },\n },\n backfillNone: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"sql-server\",\n database_version=\"SQLSERVER_2019_STANDARD\",\n region=\"us-central1\",\n root_password=\"root-password\",\n deletion_protection=True,\n settings={\n \"tier\": \"db-custom-2-4096\",\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n })\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=\"password\")\ndb = gcp.sql.Database(\"db\",\n name=\"db\",\n instance=instance.name,\n opts = pulumi.ResourceOptions(depends_on=[user]))\nsource = gcp.datastream.ConnectionProfile(\"source\",\n display_name=\"SQL Server Source\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n sql_server_profile={\n \"hostname\": instance.public_ip_address,\n \"port\": 1433,\n \"username\": user.name,\n \"password\": user.password,\n \"database\": db.name,\n })\ndestination = gcp.datastream.ConnectionProfile(\"destination\",\n display_name=\"BigQuery Destination\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\ndefault = gcp.datastream.Stream(\"default\",\n display_name=\"SQL Server to BigQuery\",\n location=\"us-central1\",\n stream_id=\"stream\",\n source_config={\n \"source_connection_profile\": source.id,\n \"sql_server_source_config\": {\n \"include_objects\": {\n \"schemas\": [{\n \"schema\": \"schema\",\n \"tables\": [{\n \"table\": \"table\",\n }],\n }],\n },\n },\n },\n destination_config={\n \"destination_connection_profile\": destination.id,\n \"bigquery_destination_config\": {\n \"data_freshness\": \"900s\",\n \"source_hierarchy_datasets\": {\n \"dataset_template\": {\n \"location\": \"us-central1\",\n },\n },\n },\n },\n backfill_none={})\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.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"sql-server\",\n DatabaseVersion = \"SQLSERVER_2019_STANDARD\",\n Region = \"us-central1\",\n RootPassword = \"root-password\",\n DeletionProtection = true,\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-4096\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = \"password\",\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Name = \"db\",\n Instance = instance.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n user,\n },\n });\n\n var source = new Gcp.Datastream.ConnectionProfile(\"source\", new()\n {\n DisplayName = \"SQL Server Source\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n SqlServerProfile = new Gcp.Datastream.Inputs.ConnectionProfileSqlServerProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Port = 1433,\n Username = user.Name,\n Password = user.Password,\n Database = db.Name,\n },\n });\n\n var destination = new Gcp.Datastream.ConnectionProfile(\"destination\", new()\n {\n DisplayName = \"BigQuery Destination\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n DisplayName = \"SQL Server to BigQuery\",\n Location = \"us-central1\",\n StreamId = \"stream\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = source.Id,\n SqlServerSourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigArgs\n {\n IncludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs\n {\n Schemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArgs\n {\n Schema = \"schema\",\n Tables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArgs\n {\n Table = \"table\",\n },\n },\n },\n },\n },\n },\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destination.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n DataFreshness = \"900s\",\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n BackfillNone = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"sql-server\"),\n\t\t\tDatabaseVersion: pulumi.String(\"SQLSERVER_2019_STANDARD\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tRootPassword: pulumi.String(\"root-password\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-4096\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\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\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pulumi.String(\"password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tName: pulumi.String(\"db\"),\n\t\t\tInstance: instance.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsource, err := datastream.NewConnectionProfile(ctx, \"source\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"SQL Server Source\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tSqlServerProfile: \u0026datastream.ConnectionProfileSqlServerProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tPort: pulumi.Int(1433),\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t\tDatabase: db.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestination, err := datastream.NewConnectionProfile(ctx, \"destination\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"BigQuery Destination\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tDisplayName: pulumi.String(\"SQL Server to BigQuery\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStreamId: pulumi.String(\"stream\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: source.ID(),\n\t\t\t\tSqlServerSourceConfig: \u0026datastream.StreamSourceConfigSqlServerSourceConfigArgs{\n\t\t\t\t\tIncludeObjects: \u0026datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs{\n\t\t\t\t\t\tSchemas: datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tTables: datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destination.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tDataFreshness: pulumi.String(\"900s\"),\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\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\tBackfillNone: nil,\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.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileSqlServerProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigSqlServerSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillNoneArgs;\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 instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"sql-server\")\n .databaseVersion(\"SQLSERVER_2019_STANDARD\")\n .region(\"us-central1\")\n .rootPassword(\"root-password\")\n .deletionProtection(\"true\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-4096\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(\"password\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .name(\"db\")\n .instance(instance.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(user)\n .build());\n\n var source = new ConnectionProfile(\"source\", ConnectionProfileArgs.builder()\n .displayName(\"SQL Server Source\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .sqlServerProfile(ConnectionProfileSqlServerProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .port(1433)\n .username(user.name())\n .password(user.password())\n .database(db.name())\n .build())\n .build());\n\n var destination = new ConnectionProfile(\"destination\", ConnectionProfileArgs.builder()\n .displayName(\"BigQuery Destination\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .displayName(\"SQL Server to BigQuery\")\n .location(\"us-central1\")\n .streamId(\"stream\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(source.id())\n .sqlServerSourceConfig(StreamSourceConfigSqlServerSourceConfigArgs.builder()\n .includeObjects(StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs.builder()\n .schemas(StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArgs.builder()\n .schema(\"schema\")\n .tables(StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArgs.builder()\n .table(\"table\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destination.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .dataFreshness(\"900s\")\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build())\n .backfillNone()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: sql-server\n databaseVersion: SQLSERVER_2019_STANDARD\n region: us-central1\n rootPassword: root-password\n deletionProtection: 'true'\n settings:\n tier: db-custom-2-4096\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n db:\n type: gcp:sql:Database\n properties:\n name: db\n instance: ${instance.name}\n options:\n dependson:\n - ${user}\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: password\n source:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: SQL Server Source\n location: us-central1\n connectionProfileId: source-profile\n sqlServerProfile:\n hostname: ${instance.publicIpAddress}\n port: 1433\n username: ${user.name}\n password: ${user.password}\n database: ${db.name}\n destination:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: BigQuery Destination\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n default:\n type: gcp:datastream:Stream\n properties:\n displayName: SQL Server to BigQuery\n location: us-central1\n streamId: stream\n sourceConfig:\n sourceConnectionProfile: ${source.id}\n sqlServerSourceConfig:\n includeObjects:\n schemas:\n - schema: schema\n tables:\n - table: table\n destinationConfig:\n destinationConnectionProfile: ${destination.id}\n bigqueryDestinationConfig:\n dataFreshness: 900s\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n backfillNone: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Postgresql Bigquery Dataset Id\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst postgres = new gcp.bigquery.Dataset(\"postgres\", {\n datasetId: \"postgres\",\n friendlyName: \"postgres\",\n description: \"Database of postgres\",\n location: \"us-central1\",\n});\nconst destinationConnectionProfile2 = new gcp.datastream.ConnectionProfile(\"destination_connection_profile2\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"dest-profile\",\n bigqueryProfile: {},\n});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"instance-name\",\n databaseVersion: \"MYSQL_8_0\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: false,\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"my-user\",\n instance: instance.name,\n host: \"%\",\n password: pwd.result,\n});\nconst sourceConnectionProfile = new gcp.datastream.ConnectionProfile(\"source_connection_profile\", {\n displayName: \"Source connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n mysqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n },\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n displayName: \"postgres to bigQuery\",\n location: \"us-central1\",\n streamId: \"postgres-bigquery\",\n sourceConfig: {\n sourceConnectionProfile: sourceConnectionProfile.id,\n mysqlSourceConfig: {},\n },\n destinationConfig: {\n destinationConnectionProfile: destinationConnectionProfile2.id,\n bigqueryDestinationConfig: {\n dataFreshness: \"900s\",\n singleTargetDataset: {\n datasetId: postgres.id,\n },\n },\n },\n backfillAll: {},\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\npostgres = gcp.bigquery.Dataset(\"postgres\",\n dataset_id=\"postgres\",\n friendly_name=\"postgres\",\n description=\"Database of postgres\",\n location=\"us-central1\")\ndestination_connection_profile2 = gcp.datastream.ConnectionProfile(\"destination_connection_profile2\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"dest-profile\",\n bigquery_profile={})\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"instance-name\",\n database_version=\"MYSQL_8_0\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"backup_configuration\": {\n \"enabled\": True,\n \"binary_log_enabled\": True,\n },\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=False)\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"my-user\",\n instance=instance.name,\n host=\"%\",\n password=pwd.result)\nsource_connection_profile = gcp.datastream.ConnectionProfile(\"source_connection_profile\",\n display_name=\"Source connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n mysql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n })\ndefault = gcp.datastream.Stream(\"default\",\n display_name=\"postgres to bigQuery\",\n location=\"us-central1\",\n stream_id=\"postgres-bigquery\",\n source_config={\n \"source_connection_profile\": source_connection_profile.id,\n \"mysql_source_config\": {},\n },\n destination_config={\n \"destination_connection_profile\": destination_connection_profile2.id,\n \"bigquery_destination_config\": {\n \"data_freshness\": \"900s\",\n \"single_target_dataset\": {\n \"dataset_id\": postgres.id,\n },\n },\n },\n backfill_all={})\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var postgres = new Gcp.BigQuery.Dataset(\"postgres\", new()\n {\n DatasetId = \"postgres\",\n FriendlyName = \"postgres\",\n Description = \"Database of postgres\",\n Location = \"us-central1\",\n });\n\n var destinationConnectionProfile2 = new Gcp.Datastream.ConnectionProfile(\"destination_connection_profile2\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"dest-profile\",\n BigqueryProfile = null,\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"instance-name\",\n DatabaseVersion = \"MYSQL_8_0\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = false,\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"my-user\",\n Instance = instance.Name,\n Host = \"%\",\n Password = pwd.Result,\n });\n\n var sourceConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"source_connection_profile\", new()\n {\n DisplayName = \"Source connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n MysqlProfile = new Gcp.Datastream.Inputs.ConnectionProfileMysqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n },\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n DisplayName = \"postgres to bigQuery\",\n Location = \"us-central1\",\n StreamId = \"postgres-bigquery\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = sourceConnectionProfile.Id,\n MysqlSourceConfig = null,\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destinationConnectionProfile2.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n DataFreshness = \"900s\",\n SingleTargetDataset = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSingleTargetDatasetArgs\n {\n DatasetId = postgres.Id,\n },\n },\n },\n BackfillAll = null,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpostgres, err := bigquery.NewDataset(ctx, \"postgres\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"postgres\"),\n\t\t\tFriendlyName: pulumi.String(\"postgres\"),\n\t\t\tDescription: pulumi.String(\"Database of postgres\"),\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\tdestinationConnectionProfile2, err := datastream.NewConnectionProfile(ctx, \"destination_connection_profile2\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"dest-profile\"),\n\t\t\tBigqueryProfile: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"instance-name\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\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\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"my-user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tHost: pulumi.String(\"%\"),\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"source_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Source connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tMysqlProfile: \u0026datastream.ConnectionProfileMysqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tDisplayName: pulumi.String(\"postgres to bigQuery\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStreamId: pulumi.String(\"postgres-bigquery\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: sourceConnectionProfile.ID(),\n\t\t\t\tMysqlSourceConfig: nil,\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destinationConnectionProfile2.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tDataFreshness: pulumi.String(\"900s\"),\n\t\t\t\t\tSingleTargetDataset: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSingleTargetDatasetArgs{\n\t\t\t\t\t\tDatasetId: postgres.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillAll: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\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.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileMysqlProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSingleTargetDatasetArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\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 postgres = new Dataset(\"postgres\", DatasetArgs.builder()\n .datasetId(\"postgres\")\n .friendlyName(\"postgres\")\n .description(\"Database of postgres\")\n .location(\"us-central1\")\n .build());\n\n var destinationConnectionProfile2 = new ConnectionProfile(\"destinationConnectionProfile2\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"dest-profile\")\n .bigqueryProfile()\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"instance-name\")\n .databaseVersion(\"MYSQL_8_0\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(false)\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"my-user\")\n .instance(instance.name())\n .host(\"%\")\n .password(pwd.result())\n .build());\n\n var sourceConnectionProfile = new ConnectionProfile(\"sourceConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Source connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .mysqlProfile(ConnectionProfileMysqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .build())\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .displayName(\"postgres to bigQuery\")\n .location(\"us-central1\")\n .streamId(\"postgres-bigquery\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(sourceConnectionProfile.id())\n .mysqlSourceConfig()\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destinationConnectionProfile2.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .dataFreshness(\"900s\")\n .singleTargetDataset(StreamDestinationConfigBigqueryDestinationConfigSingleTargetDatasetArgs.builder()\n .datasetId(postgres.id())\n .build())\n .build())\n .build())\n .backfillAll()\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n postgres:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: postgres\n friendlyName: postgres\n description: Database of postgres\n location: us-central1\n default:\n type: gcp:datastream:Stream\n properties:\n displayName: postgres to bigQuery\n location: us-central1\n streamId: postgres-bigquery\n sourceConfig:\n sourceConnectionProfile: ${sourceConnectionProfile.id}\n mysqlSourceConfig: {}\n destinationConfig:\n destinationConnectionProfile: ${destinationConnectionProfile2.id}\n bigqueryDestinationConfig:\n dataFreshness: 900s\n singleTargetDataset:\n datasetId: ${postgres.id}\n backfillAll: {}\n destinationConnectionProfile2:\n type: gcp:datastream:ConnectionProfile\n name: destination_connection_profile2\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: dest-profile\n bigqueryProfile: {}\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: instance-name\n databaseVersion: MYSQL_8_0\n region: us-central1\n settings:\n tier: db-f1-micro\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: false\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: my-user\n instance: ${instance.name}\n host: '%'\n password: ${pwd.result}\n sourceConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: source_connection_profile\n properties:\n displayName: Source connection profile\n location: us-central1\n connectionProfileId: source-profile\n mysqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Bigquery\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst project = gcp.organizations.getProject({});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-instance\",\n databaseVersion: \"MYSQL_8_0\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n host: \"%\",\n password: pwd.result,\n});\nconst sourceConnectionProfile = new gcp.datastream.ConnectionProfile(\"source_connection_profile\", {\n displayName: \"Source connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n mysqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n },\n});\nconst bqSa = gcp.bigquery.getDefaultServiceAccount({});\nconst bigqueryKeyUser = new gcp.kms.CryptoKeyIAMMember(\"bigquery_key_user\", {\n cryptoKeyId: \"bigquery-kms-name\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: bqSa.then(bqSa =\u003e `serviceAccount:${bqSa.email}`),\n});\nconst destinationConnectionProfile = new gcp.datastream.ConnectionProfile(\"destination_connection_profile\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n streamId: \"my-stream\",\n location: \"us-central1\",\n displayName: \"my stream\",\n sourceConfig: {\n sourceConnectionProfile: sourceConnectionProfile.id,\n mysqlSourceConfig: {},\n },\n destinationConfig: {\n destinationConnectionProfile: destinationConnectionProfile.id,\n bigqueryDestinationConfig: {\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n kmsKeyName: \"bigquery-kms-name\",\n },\n },\n },\n },\n backfillNone: {},\n}, {\n dependsOn: [bigqueryKeyUser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nproject = gcp.organizations.get_project()\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-instance\",\n database_version=\"MYSQL_8_0\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"backup_configuration\": {\n \"enabled\": True,\n \"binary_log_enabled\": True,\n },\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n host=\"%\",\n password=pwd.result)\nsource_connection_profile = gcp.datastream.ConnectionProfile(\"source_connection_profile\",\n display_name=\"Source connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n mysql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n })\nbq_sa = gcp.bigquery.get_default_service_account()\nbigquery_key_user = gcp.kms.CryptoKeyIAMMember(\"bigquery_key_user\",\n crypto_key_id=\"bigquery-kms-name\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:{bq_sa.email}\")\ndestination_connection_profile = gcp.datastream.ConnectionProfile(\"destination_connection_profile\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\ndefault = gcp.datastream.Stream(\"default\",\n stream_id=\"my-stream\",\n location=\"us-central1\",\n display_name=\"my stream\",\n source_config={\n \"source_connection_profile\": source_connection_profile.id,\n \"mysql_source_config\": {},\n },\n destination_config={\n \"destination_connection_profile\": destination_connection_profile.id,\n \"bigquery_destination_config\": {\n \"source_hierarchy_datasets\": {\n \"dataset_template\": {\n \"location\": \"us-central1\",\n \"kms_key_name\": \"bigquery-kms-name\",\n },\n },\n },\n },\n backfill_none={},\n opts = pulumi.ResourceOptions(depends_on=[bigquery_key_user]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-instance\",\n DatabaseVersion = \"MYSQL_8_0\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Host = \"%\",\n Password = pwd.Result,\n });\n\n var sourceConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"source_connection_profile\", new()\n {\n DisplayName = \"Source connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n MysqlProfile = new Gcp.Datastream.Inputs.ConnectionProfileMysqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n },\n });\n\n var bqSa = Gcp.BigQuery.GetDefaultServiceAccount.Invoke();\n\n var bigqueryKeyUser = new Gcp.Kms.CryptoKeyIAMMember(\"bigquery_key_user\", new()\n {\n CryptoKeyId = \"bigquery-kms-name\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:{bqSa.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)}\",\n });\n\n var destinationConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"destination_connection_profile\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n StreamId = \"my-stream\",\n Location = \"us-central1\",\n DisplayName = \"my stream\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = sourceConnectionProfile.Id,\n MysqlSourceConfig = null,\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destinationConnectionProfile.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n KmsKeyName = \"bigquery-kms-name\",\n },\n },\n },\n },\n BackfillNone = null,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n bigqueryKeyUser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\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 := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\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\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tHost: pulumi.String(\"%\"),\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"source_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Source connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tMysqlProfile: \u0026datastream.ConnectionProfileMysqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqSa, err := bigquery.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbigqueryKeyUser, err := kms.NewCryptoKeyIAMMember(ctx, \"bigquery_key_user\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"bigquery-kms-name\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v\", bqSa.Email)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"destination_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tStreamId: pulumi.String(\"my-stream\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"my stream\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: sourceConnectionProfile.ID(),\n\t\t\t\tMysqlSourceConfig: nil,\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destinationConnectionProfile.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"bigquery-kms-name\"),\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\tBackfillNone: nil,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbigqueryKeyUser,\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.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileMysqlProfileArgs;\nimport com.pulumi.gcp.bigquery.BigqueryFunctions;\nimport com.pulumi.gcp.bigquery.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillNoneArgs;\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 instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-instance\")\n .databaseVersion(\"MYSQL_8_0\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(true)\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .host(\"%\")\n .password(pwd.result())\n .build());\n\n var sourceConnectionProfile = new ConnectionProfile(\"sourceConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Source connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .mysqlProfile(ConnectionProfileMysqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .build())\n .build());\n\n final var bqSa = BigqueryFunctions.getDefaultServiceAccount();\n\n var bigqueryKeyUser = new CryptoKeyIAMMember(\"bigqueryKeyUser\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"bigquery-kms-name\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:%s\", bqSa.applyValue(getDefaultServiceAccountResult -\u003e getDefaultServiceAccountResult.email())))\n .build());\n\n var destinationConnectionProfile = new ConnectionProfile(\"destinationConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .streamId(\"my-stream\")\n .location(\"us-central1\")\n .displayName(\"my stream\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(sourceConnectionProfile.id())\n .mysqlSourceConfig()\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destinationConnectionProfile.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .kmsKeyName(\"bigquery-kms-name\")\n .build())\n .build())\n .build())\n .build())\n .backfillNone()\n .build(), CustomResourceOptions.builder()\n .dependsOn(bigqueryKeyUser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-instance\n databaseVersion: MYSQL_8_0\n region: us-central1\n settings:\n tier: db-f1-micro\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: true\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n host: '%'\n password: ${pwd.result}\n sourceConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: source_connection_profile\n properties:\n displayName: Source connection profile\n location: us-central1\n connectionProfileId: source-profile\n mysqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n bigqueryKeyUser:\n type: gcp:kms:CryptoKeyIAMMember\n name: bigquery_key_user\n properties:\n cryptoKeyId: bigquery-kms-name\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:${bqSa.email}\n destinationConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: destination_connection_profile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n default:\n type: gcp:datastream:Stream\n properties:\n streamId: my-stream\n location: us-central1\n displayName: my stream\n sourceConfig:\n sourceConnectionProfile: ${sourceConnectionProfile.id}\n mysqlSourceConfig: {}\n destinationConfig:\n destinationConnectionProfile: ${destinationConnectionProfile.id}\n bigqueryDestinationConfig:\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n kmsKeyName: bigquery-kms-name\n backfillNone: {}\n options:\n dependson:\n - ${bigqueryKeyUser}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n bqSa:\n fn::invoke:\n Function: gcp:bigquery:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nStream can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/streams/{{stream_id}}`\n\n* `{{project}}/{{location}}/{{stream_id}}`\n\n* `{{location}}/{{stream_id}}`\n\nWhen using the `pulumi import` command, Stream can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:datastream/stream:Stream default projects/{{project}}/locations/{{location}}/streams/{{stream_id}}\n```\n\n```sh\n$ pulumi import gcp:datastream/stream:Stream default {{project}}/{{location}}/{{stream_id}}\n```\n\n```sh\n$ pulumi import gcp:datastream/stream:Stream default {{location}}/{{stream_id}}\n```\n\n", "properties": { "backfillAll": { "$ref": "#/types/gcp:datastream/StreamBackfillAll:StreamBackfillAll", @@ -183298,7 +183298,7 @@ } }, "gcp:deploymentmanager/deployment:Deployment": { - "description": "A collection of resources that are deployed and managed together using\na configuration file\n\n\n\n\u003e **Warning:** This resource is intended only to manage a Deployment resource,\nand attempts to manage the Deployment's resources in the provider as well\nwill likely result in errors or unexpected behavior as the two tools\nfight over ownership. We strongly discourage doing so unless you are an\nexperienced user of both tools.\n\nIn addition, due to limitations of the API, the provider will treat\ndeployments in preview as recreate-only for any update operation other\nthan actually deploying an in-preview deployment (i.e. `preview=true` to\n`preview=false`).\n\n## Example Usage\n\n### Deployment Manager Deployment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst deployment = new gcp.deploymentmanager.Deployment(\"deployment\", {\n name: \"my-deployment\",\n target: {\n config: {\n content: std.file({\n input: \"path/to/config.yml\",\n }).then(invoke =\u003e invoke.result),\n },\n },\n labels: [{\n key: \"foo\",\n value: \"bar\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndeployment = gcp.deploymentmanager.Deployment(\"deployment\",\n name=\"my-deployment\",\n target={\n \"config\": {\n \"content\": std.file(input=\"path/to/config.yml\").result,\n },\n },\n labels=[{\n \"key\": \"foo\",\n \"value\": \"bar\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var deployment = new Gcp.DeploymentManager.Deployment(\"deployment\", new()\n {\n Name = \"my-deployment\",\n Target = new Gcp.DeploymentManager.Inputs.DeploymentTargetArgs\n {\n Config = new Gcp.DeploymentManager.Inputs.DeploymentTargetConfigArgs\n {\n Content = Std.File.Invoke(new()\n {\n Input = \"path/to/config.yml\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n Labels = new[]\n {\n new Gcp.DeploymentManager.Inputs.DeploymentLabelArgs\n {\n Key = \"foo\",\n Value = \"bar\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/deploymentmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/config.yml\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = deploymentmanager.NewDeployment(ctx, \"deployment\", \u0026deploymentmanager.DeploymentArgs{\n\t\t\tName: pulumi.String(\"my-deployment\"),\n\t\t\tTarget: \u0026deploymentmanager.DeploymentTargetArgs{\n\t\t\t\tConfig: \u0026deploymentmanager.DeploymentTargetConfigArgs{\n\t\t\t\t\tContent: invokeFile.Result,\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: deploymentmanager.DeploymentLabelArray{\n\t\t\t\t\u0026deploymentmanager.DeploymentLabelArgs{\n\t\t\t\t\tKey: pulumi.String(\"foo\"),\n\t\t\t\t\tValue: pulumi.String(\"bar\"),\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.deploymentmanager.Deployment;\nimport com.pulumi.gcp.deploymentmanager.DeploymentArgs;\nimport com.pulumi.gcp.deploymentmanager.inputs.DeploymentTargetArgs;\nimport com.pulumi.gcp.deploymentmanager.inputs.DeploymentTargetConfigArgs;\nimport com.pulumi.gcp.deploymentmanager.inputs.DeploymentLabelArgs;\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 deployment = new Deployment(\"deployment\", DeploymentArgs.builder()\n .name(\"my-deployment\")\n .target(DeploymentTargetArgs.builder()\n .config(DeploymentTargetConfigArgs.builder()\n .content(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/config.yml\")\n .build()).result())\n .build())\n .build())\n .labels(DeploymentLabelArgs.builder()\n .key(\"foo\")\n .value(\"bar\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n deployment:\n type: gcp:deploymentmanager:Deployment\n properties:\n name: my-deployment\n target:\n config:\n content:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/config.yml\n Return: result\n labels:\n - key: foo\n value: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n## Import\n\nDeployment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/deployments/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Deployment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:deploymentmanager/deployment:Deployment default projects/{{project}}/deployments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:deploymentmanager/deployment:Deployment default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:deploymentmanager/deployment:Deployment default {{name}}\n```\n\n", + "description": "A collection of resources that are deployed and managed together using\na configuration file\n\n\n\n\u003e **Warning:** This resource is intended only to manage a Deployment resource,\nand attempts to manage the Deployment's resources in the provider as well\nwill likely result in errors or unexpected behavior as the two tools\nfight over ownership. We strongly discourage doing so unless you are an\nexperienced user of both tools.\n\nIn addition, due to limitations of the API, the provider will treat\ndeployments in preview as recreate-only for any update operation other\nthan actually deploying an in-preview deployment (i.e. `preview=true` to\n`preview=false`).\n\n## Example Usage\n\n### Deployment Manager Deployment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst deployment = new gcp.deploymentmanager.Deployment(\"deployment\", {\n name: \"my-deployment\",\n target: {\n config: {\n content: std.file({\n input: \"path/to/config.yml\",\n }).then(invoke =\u003e invoke.result),\n },\n },\n labels: [{\n key: \"foo\",\n value: \"bar\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndeployment = gcp.deploymentmanager.Deployment(\"deployment\",\n name=\"my-deployment\",\n target={\n \"config\": {\n \"content\": std.file(input=\"path/to/config.yml\").result,\n },\n },\n labels=[{\n \"key\": \"foo\",\n \"value\": \"bar\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var deployment = new Gcp.DeploymentManager.Deployment(\"deployment\", new()\n {\n Name = \"my-deployment\",\n Target = new Gcp.DeploymentManager.Inputs.DeploymentTargetArgs\n {\n Config = new Gcp.DeploymentManager.Inputs.DeploymentTargetConfigArgs\n {\n Content = Std.File.Invoke(new()\n {\n Input = \"path/to/config.yml\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n Labels = new[]\n {\n new Gcp.DeploymentManager.Inputs.DeploymentLabelArgs\n {\n Key = \"foo\",\n Value = \"bar\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/deploymentmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/config.yml\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = deploymentmanager.NewDeployment(ctx, \"deployment\", \u0026deploymentmanager.DeploymentArgs{\n\t\t\tName: pulumi.String(\"my-deployment\"),\n\t\t\tTarget: \u0026deploymentmanager.DeploymentTargetArgs{\n\t\t\t\tConfig: \u0026deploymentmanager.DeploymentTargetConfigArgs{\n\t\t\t\t\tContent: pulumi.String(invokeFile.Result),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: deploymentmanager.DeploymentLabelArray{\n\t\t\t\t\u0026deploymentmanager.DeploymentLabelArgs{\n\t\t\t\t\tKey: pulumi.String(\"foo\"),\n\t\t\t\t\tValue: pulumi.String(\"bar\"),\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.deploymentmanager.Deployment;\nimport com.pulumi.gcp.deploymentmanager.DeploymentArgs;\nimport com.pulumi.gcp.deploymentmanager.inputs.DeploymentTargetArgs;\nimport com.pulumi.gcp.deploymentmanager.inputs.DeploymentTargetConfigArgs;\nimport com.pulumi.gcp.deploymentmanager.inputs.DeploymentLabelArgs;\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 deployment = new Deployment(\"deployment\", DeploymentArgs.builder()\n .name(\"my-deployment\")\n .target(DeploymentTargetArgs.builder()\n .config(DeploymentTargetConfigArgs.builder()\n .content(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/config.yml\")\n .build()).result())\n .build())\n .build())\n .labels(DeploymentLabelArgs.builder()\n .key(\"foo\")\n .value(\"bar\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n deployment:\n type: gcp:deploymentmanager:Deployment\n properties:\n name: my-deployment\n target:\n config:\n content:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/config.yml\n Return: result\n labels:\n - key: foo\n value: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n## Import\n\nDeployment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/deployments/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Deployment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:deploymentmanager/deployment:Deployment default projects/{{project}}/deployments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:deploymentmanager/deployment:Deployment default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:deploymentmanager/deployment:Deployment default {{name}}\n```\n\n", "properties": { "createPolicy": { "type": "string", @@ -183645,7 +183645,7 @@ } }, "gcp:diagflow/cxAgent:CxAgent": { - "description": "Agents are best described as Natural Language Understanding (NLU) modules that transform user requests into actionable data. You can include agents in your app, product, or service to determine user intent and respond to the user in a natural way.\n\n\nTo get more information about Agent, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n\n\n## Example Usage\n\n### Dialogflowcx Agent Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"dialogflowcx-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst fullAgent = new gcp.diagflow.CxAgent(\"full_agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n advancedSettings: {\n audioExportGcsDestination: {\n uri: pulumi.interpolate`${bucket.url}/prefix-`,\n },\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n gitIntegrationSettings: {\n githubSettings: {\n displayName: \"Github Repo\",\n repositoryUri: \"https://api.github.com/repos/githubtraining/hellogitworld\",\n trackingBranch: \"main\",\n accessToken: \"secret-token\",\n branches: [\"main\"],\n },\n },\n textToSpeechSettings: {\n synthesizeSpeechConfigs: JSON.stringify({\n en: {\n voice: {\n name: \"en-US-Neural2-A\",\n },\n },\n fr: {\n voice: {\n name: \"fr-CA-Neural2-A\",\n },\n },\n }),\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"dialogflowcx-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nfull_agent = gcp.diagflow.CxAgent(\"full_agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enableSpeechAdaptation\": True,\n },\n advanced_settings={\n \"audioExportGcsDestination\": {\n \"uri\": bucket.url.apply(lambda url: f\"{url}/prefix-\"),\n },\n \"dtmfSettings\": {\n \"enabled\": True,\n \"maxDigits\": 1,\n \"finishDigit\": \"#\",\n },\n },\n git_integration_settings={\n \"githubSettings\": {\n \"displayName\": \"Github Repo\",\n \"repositoryUri\": \"https://api.github.com/repos/githubtraining/hellogitworld\",\n \"trackingBranch\": \"main\",\n \"accessToken\": \"secret-token\",\n \"branches\": [\"main\"],\n },\n },\n text_to_speech_settings={\n \"synthesizeSpeechConfigs\": json.dumps({\n \"en\": {\n \"voice\": {\n \"name\": \"en-US-Neural2-A\",\n },\n },\n \"fr\": {\n \"voice\": {\n \"name\": \"fr-CA-Neural2-A\",\n },\n },\n }),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"dialogflowcx-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var fullAgent = new Gcp.Diagflow.CxAgent(\"full_agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxAgentAdvancedSettingsArgs\n {\n AudioExportGcsDestination = new Gcp.Diagflow.Inputs.CxAgentAdvancedSettingsAudioExportGcsDestinationArgs\n {\n Uri = bucket.Url.Apply(url =\u003e $\"{url}/prefix-\"),\n },\n DtmfSettings = new Gcp.Diagflow.Inputs.CxAgentAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\n },\n GitIntegrationSettings = new Gcp.Diagflow.Inputs.CxAgentGitIntegrationSettingsArgs\n {\n GithubSettings = new Gcp.Diagflow.Inputs.CxAgentGitIntegrationSettingsGithubSettingsArgs\n {\n DisplayName = \"Github Repo\",\n RepositoryUri = \"https://api.github.com/repos/githubtraining/hellogitworld\",\n TrackingBranch = \"main\",\n AccessToken = \"secret-token\",\n Branches = new[]\n {\n \"main\",\n },\n },\n },\n TextToSpeechSettings = new Gcp.Diagflow.Inputs.CxAgentTextToSpeechSettingsArgs\n {\n SynthesizeSpeechConfigs = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"en\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"voice\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"en-US-Neural2-A\",\n },\n },\n [\"fr\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"voice\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"fr-CA-Neural2-A\",\n },\n },\n }),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"dialogflowcx-bucket\"),\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\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"en\": map[string]interface{}{\n\t\t\t\t\"voice\": map[string]interface{}{\n\t\t\t\t\t\"name\": \"en-US-Neural2-A\",\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"fr\": map[string]interface{}{\n\t\t\t\t\"voice\": map[string]interface{}{\n\t\t\t\t\t\"name\": \"fr-CA-Neural2-A\",\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\tjson0 := string(tmpJSON0)\n\t\t_, err = diagflow.NewCxAgent(ctx, \"full_agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: pulumi.Bool(true),\n\t\t\t},\n\t\t\tAdvancedSettings: \u0026diagflow.CxAgentAdvancedSettingsArgs{\n\t\t\t\tAudioExportGcsDestination: \u0026diagflow.CxAgentAdvancedSettingsAudioExportGcsDestinationArgs{\n\t\t\t\t\tUri: bucket.Url.ApplyT(func(url string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/prefix-\", url), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tDtmfSettings: \u0026diagflow.CxAgentAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tGitIntegrationSettings: \u0026diagflow.CxAgentGitIntegrationSettingsArgs{\n\t\t\t\tGithubSettings: \u0026diagflow.CxAgentGitIntegrationSettingsGithubSettingsArgs{\n\t\t\t\t\tDisplayName: pulumi.String(\"Github Repo\"),\n\t\t\t\t\tRepositoryUri: pulumi.String(\"https://api.github.com/repos/githubtraining/hellogitworld\"),\n\t\t\t\t\tTrackingBranch: pulumi.String(\"main\"),\n\t\t\t\t\tAccessToken: pulumi.String(\"secret-token\"),\n\t\t\t\t\tBranches: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"main\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTextToSpeechSettings: \u0026diagflow.CxAgentTextToSpeechSettingsArgs{\n\t\t\t\tSynthesizeSpeechConfigs: pulumi.String(json0),\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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentAdvancedSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentAdvancedSettingsAudioExportGcsDestinationArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentAdvancedSettingsDtmfSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentGitIntegrationSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentGitIntegrationSettingsGithubSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentTextToSpeechSettingsArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 .name(\"dialogflowcx-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var fullAgent = new CxAgent(\"fullAgent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .advancedSettings(CxAgentAdvancedSettingsArgs.builder()\n .audioExportGcsDestination(CxAgentAdvancedSettingsAudioExportGcsDestinationArgs.builder()\n .uri(bucket.url().applyValue(url -\u003e String.format(\"%s/prefix-\", url)))\n .build())\n .dtmfSettings(CxAgentAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .gitIntegrationSettings(CxAgentGitIntegrationSettingsArgs.builder()\n .githubSettings(CxAgentGitIntegrationSettingsGithubSettingsArgs.builder()\n .displayName(\"Github Repo\")\n .repositoryUri(\"https://api.github.com/repos/githubtraining/hellogitworld\")\n .trackingBranch(\"main\")\n .accessToken(\"secret-token\")\n .branches(\"main\")\n .build())\n .build())\n .textToSpeechSettings(CxAgentTextToSpeechSettingsArgs.builder()\n .synthesizeSpeechConfigs(serializeJson(\n jsonObject(\n jsonProperty(\"en\", jsonObject(\n jsonProperty(\"voice\", jsonObject(\n jsonProperty(\"name\", \"en-US-Neural2-A\")\n ))\n )),\n jsonProperty(\"fr\", jsonObject(\n jsonProperty(\"voice\", jsonObject(\n jsonProperty(\"name\", \"fr-CA-Neural2-A\")\n ))\n ))\n )))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: dialogflowcx-bucket\n location: US\n uniformBucketLevelAccess: true\n fullAgent:\n type: gcp:diagflow:CxAgent\n name: full_agent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n advancedSettings:\n audioExportGcsDestination:\n uri: ${bucket.url}/prefix-\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n gitIntegrationSettings:\n githubSettings:\n displayName: Github Repo\n repositoryUri: https://api.github.com/repos/githubtraining/hellogitworld\n trackingBranch: main\n accessToken: secret-token\n branches:\n - main\n textToSpeechSettings:\n synthesizeSpeechConfigs:\n fn::toJSON:\n en:\n voice:\n name: en-US-Neural2-A\n fr:\n voice:\n name: fr-CA-Neural2-A\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAgent can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/agents/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Agent can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxAgent:CxAgent default projects/{{project}}/locations/{{location}}/agents/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxAgent:CxAgent default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxAgent:CxAgent default {{location}}/{{name}}\n```\n\n", + "description": "Agents are best described as Natural Language Understanding (NLU) modules that transform user requests into actionable data. You can include agents in your app, product, or service to determine user intent and respond to the user in a natural way.\n\n\nTo get more information about Agent, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n\n\n## Example Usage\n\n### Dialogflowcx Agent Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"dialogflowcx-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst fullAgent = new gcp.diagflow.CxAgent(\"full_agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n advancedSettings: {\n audioExportGcsDestination: {\n uri: pulumi.interpolate`${bucket.url}/prefix-`,\n },\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n gitIntegrationSettings: {\n githubSettings: {\n displayName: \"Github Repo\",\n repositoryUri: \"https://api.github.com/repos/githubtraining/hellogitworld\",\n trackingBranch: \"main\",\n accessToken: \"secret-token\",\n branches: [\"main\"],\n },\n },\n textToSpeechSettings: {\n synthesizeSpeechConfigs: JSON.stringify({\n en: {\n voice: {\n name: \"en-US-Neural2-A\",\n },\n },\n fr: {\n voice: {\n name: \"fr-CA-Neural2-A\",\n },\n },\n }),\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"dialogflowcx-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nfull_agent = gcp.diagflow.CxAgent(\"full_agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n },\n advanced_settings={\n \"audio_export_gcs_destination\": {\n \"uri\": bucket.url.apply(lambda url: f\"{url}/prefix-\"),\n },\n \"dtmf_settings\": {\n \"enabled\": True,\n \"max_digits\": 1,\n \"finish_digit\": \"#\",\n },\n },\n git_integration_settings={\n \"github_settings\": {\n \"display_name\": \"Github Repo\",\n \"repository_uri\": \"https://api.github.com/repos/githubtraining/hellogitworld\",\n \"tracking_branch\": \"main\",\n \"access_token\": \"secret-token\",\n \"branches\": [\"main\"],\n },\n },\n text_to_speech_settings={\n \"synthesize_speech_configs\": json.dumps({\n \"en\": {\n \"voice\": {\n \"name\": \"en-US-Neural2-A\",\n },\n },\n \"fr\": {\n \"voice\": {\n \"name\": \"fr-CA-Neural2-A\",\n },\n },\n }),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"dialogflowcx-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var fullAgent = new Gcp.Diagflow.CxAgent(\"full_agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxAgentAdvancedSettingsArgs\n {\n AudioExportGcsDestination = new Gcp.Diagflow.Inputs.CxAgentAdvancedSettingsAudioExportGcsDestinationArgs\n {\n Uri = bucket.Url.Apply(url =\u003e $\"{url}/prefix-\"),\n },\n DtmfSettings = new Gcp.Diagflow.Inputs.CxAgentAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\n },\n GitIntegrationSettings = new Gcp.Diagflow.Inputs.CxAgentGitIntegrationSettingsArgs\n {\n GithubSettings = new Gcp.Diagflow.Inputs.CxAgentGitIntegrationSettingsGithubSettingsArgs\n {\n DisplayName = \"Github Repo\",\n RepositoryUri = \"https://api.github.com/repos/githubtraining/hellogitworld\",\n TrackingBranch = \"main\",\n AccessToken = \"secret-token\",\n Branches = new[]\n {\n \"main\",\n },\n },\n },\n TextToSpeechSettings = new Gcp.Diagflow.Inputs.CxAgentTextToSpeechSettingsArgs\n {\n SynthesizeSpeechConfigs = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"en\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"voice\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"en-US-Neural2-A\",\n },\n },\n [\"fr\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"voice\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"fr-CA-Neural2-A\",\n },\n },\n }),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"dialogflowcx-bucket\"),\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\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"en\": map[string]interface{}{\n\t\t\t\t\"voice\": map[string]interface{}{\n\t\t\t\t\t\"name\": \"en-US-Neural2-A\",\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"fr\": map[string]interface{}{\n\t\t\t\t\"voice\": map[string]interface{}{\n\t\t\t\t\t\"name\": \"fr-CA-Neural2-A\",\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\tjson0 := string(tmpJSON0)\n\t\t_, err = diagflow.NewCxAgent(ctx, \"full_agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: pulumi.Bool(true),\n\t\t\t},\n\t\t\tAdvancedSettings: \u0026diagflow.CxAgentAdvancedSettingsArgs{\n\t\t\t\tAudioExportGcsDestination: \u0026diagflow.CxAgentAdvancedSettingsAudioExportGcsDestinationArgs{\n\t\t\t\t\tUri: bucket.Url.ApplyT(func(url string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/prefix-\", url), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tDtmfSettings: \u0026diagflow.CxAgentAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tGitIntegrationSettings: \u0026diagflow.CxAgentGitIntegrationSettingsArgs{\n\t\t\t\tGithubSettings: \u0026diagflow.CxAgentGitIntegrationSettingsGithubSettingsArgs{\n\t\t\t\t\tDisplayName: pulumi.String(\"Github Repo\"),\n\t\t\t\t\tRepositoryUri: pulumi.String(\"https://api.github.com/repos/githubtraining/hellogitworld\"),\n\t\t\t\t\tTrackingBranch: pulumi.String(\"main\"),\n\t\t\t\t\tAccessToken: pulumi.String(\"secret-token\"),\n\t\t\t\t\tBranches: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"main\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTextToSpeechSettings: \u0026diagflow.CxAgentTextToSpeechSettingsArgs{\n\t\t\t\tSynthesizeSpeechConfigs: pulumi.String(json0),\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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentAdvancedSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentAdvancedSettingsAudioExportGcsDestinationArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentAdvancedSettingsDtmfSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentGitIntegrationSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentGitIntegrationSettingsGithubSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentTextToSpeechSettingsArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 .name(\"dialogflowcx-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var fullAgent = new CxAgent(\"fullAgent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .advancedSettings(CxAgentAdvancedSettingsArgs.builder()\n .audioExportGcsDestination(CxAgentAdvancedSettingsAudioExportGcsDestinationArgs.builder()\n .uri(bucket.url().applyValue(url -\u003e String.format(\"%s/prefix-\", url)))\n .build())\n .dtmfSettings(CxAgentAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .gitIntegrationSettings(CxAgentGitIntegrationSettingsArgs.builder()\n .githubSettings(CxAgentGitIntegrationSettingsGithubSettingsArgs.builder()\n .displayName(\"Github Repo\")\n .repositoryUri(\"https://api.github.com/repos/githubtraining/hellogitworld\")\n .trackingBranch(\"main\")\n .accessToken(\"secret-token\")\n .branches(\"main\")\n .build())\n .build())\n .textToSpeechSettings(CxAgentTextToSpeechSettingsArgs.builder()\n .synthesizeSpeechConfigs(serializeJson(\n jsonObject(\n jsonProperty(\"en\", jsonObject(\n jsonProperty(\"voice\", jsonObject(\n jsonProperty(\"name\", \"en-US-Neural2-A\")\n ))\n )),\n jsonProperty(\"fr\", jsonObject(\n jsonProperty(\"voice\", jsonObject(\n jsonProperty(\"name\", \"fr-CA-Neural2-A\")\n ))\n ))\n )))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: dialogflowcx-bucket\n location: US\n uniformBucketLevelAccess: true\n fullAgent:\n type: gcp:diagflow:CxAgent\n name: full_agent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n advancedSettings:\n audioExportGcsDestination:\n uri: ${bucket.url}/prefix-\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n gitIntegrationSettings:\n githubSettings:\n displayName: Github Repo\n repositoryUri: https://api.github.com/repos/githubtraining/hellogitworld\n trackingBranch: main\n accessToken: secret-token\n branches:\n - main\n textToSpeechSettings:\n synthesizeSpeechConfigs:\n fn::toJSON:\n en:\n voice:\n name: en-US-Neural2-A\n fr:\n voice:\n name: fr-CA-Neural2-A\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAgent can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/agents/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Agent can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxAgent:CxAgent default projects/{{project}}/locations/{{location}}/agents/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxAgent:CxAgent default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxAgent:CxAgent default {{location}}/{{name}}\n```\n\n", "properties": { "advancedSettings": { "$ref": "#/types/gcp:diagflow/CxAgentAdvancedSettings:CxAgentAdvancedSettings", @@ -183885,7 +183885,7 @@ } }, "gcp:diagflow/cxEntityType:CxEntityType": { - "description": "Entities are extracted from user input and represent parameters that are meaningful to your application.\nFor example, a date range, a proper name such as a geographic location or landmark, and so on. Entities represent actionable data for your application.\n\n\nTo get more information about EntityType, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.entityTypes)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Entity Type Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst basicEntityType = new gcp.diagflow.CxEntityType(\"basic_entity_type\", {\n parent: agent.id,\n displayName: \"MyEntity\",\n kind: \"KIND_MAP\",\n entities: [\n {\n value: \"value1\",\n synonyms: [\n \"synonym1\",\n \"synonym2\",\n ],\n },\n {\n value: \"value2\",\n synonyms: [\n \"synonym3\",\n \"synonym4\",\n ],\n },\n ],\n enableFuzzyExtraction: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enableSpeechAdaptation\": True,\n })\nbasic_entity_type = gcp.diagflow.CxEntityType(\"basic_entity_type\",\n parent=agent.id,\n display_name=\"MyEntity\",\n kind=\"KIND_MAP\",\n entities=[\n {\n \"value\": \"value1\",\n \"synonyms\": [\n \"synonym1\",\n \"synonym2\",\n ],\n },\n {\n \"value\": \"value2\",\n \"synonyms\": [\n \"synonym3\",\n \"synonym4\",\n ],\n },\n ],\n enable_fuzzy_extraction=False)\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 agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var basicEntityType = new Gcp.Diagflow.CxEntityType(\"basic_entity_type\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyEntity\",\n Kind = \"KIND_MAP\",\n Entities = new[]\n {\n new Gcp.Diagflow.Inputs.CxEntityTypeEntityArgs\n {\n Value = \"value1\",\n Synonyms = new[]\n {\n \"synonym1\",\n \"synonym2\",\n },\n },\n new Gcp.Diagflow.Inputs.CxEntityTypeEntityArgs\n {\n Value = \"value2\",\n Synonyms = new[]\n {\n \"synonym3\",\n \"synonym4\",\n },\n },\n },\n EnableFuzzyExtraction = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: 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\t_, err = diagflow.NewCxEntityType(ctx, \"basic_entity_type\", \u0026diagflow.CxEntityTypeArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyEntity\"),\n\t\t\tKind: pulumi.String(\"KIND_MAP\"),\n\t\t\tEntities: diagflow.CxEntityTypeEntityArray{\n\t\t\t\t\u0026diagflow.CxEntityTypeEntityArgs{\n\t\t\t\t\tValue: pulumi.String(\"value1\"),\n\t\t\t\t\tSynonyms: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"synonym1\"),\n\t\t\t\t\t\tpulumi.String(\"synonym2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026diagflow.CxEntityTypeEntityArgs{\n\t\t\t\t\tValue: pulumi.String(\"value2\"),\n\t\t\t\t\tSynonyms: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"synonym3\"),\n\t\t\t\t\t\tpulumi.String(\"synonym4\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnableFuzzyExtraction: pulumi.Bool(false),\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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxEntityType;\nimport com.pulumi.gcp.diagflow.CxEntityTypeArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxEntityTypeEntityArgs;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var basicEntityType = new CxEntityType(\"basicEntityType\", CxEntityTypeArgs.builder()\n .parent(agent.id())\n .displayName(\"MyEntity\")\n .kind(\"KIND_MAP\")\n .entities( \n CxEntityTypeEntityArgs.builder()\n .value(\"value1\")\n .synonyms( \n \"synonym1\",\n \"synonym2\")\n .build(),\n CxEntityTypeEntityArgs.builder()\n .value(\"value2\")\n .synonyms( \n \"synonym3\",\n \"synonym4\")\n .build())\n .enableFuzzyExtraction(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n basicEntityType:\n type: gcp:diagflow:CxEntityType\n name: basic_entity_type\n properties:\n parent: ${agent.id}\n displayName: MyEntity\n kind: KIND_MAP\n entities:\n - value: value1\n synonyms:\n - synonym1\n - synonym2\n - value: value2\n synonyms:\n - synonym3\n - synonym4\n enableFuzzyExtraction: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEntityType can be imported using any of these accepted formats:\n\n* `{{parent}}/entityTypes/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, EntityType can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxEntityType:CxEntityType default {{parent}}/entityTypes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxEntityType:CxEntityType default {{parent}}/{{name}}\n```\n\n", + "description": "Entities are extracted from user input and represent parameters that are meaningful to your application.\nFor example, a date range, a proper name such as a geographic location or landmark, and so on. Entities represent actionable data for your application.\n\n\nTo get more information about EntityType, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.entityTypes)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Entity Type Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst basicEntityType = new gcp.diagflow.CxEntityType(\"basic_entity_type\", {\n parent: agent.id,\n displayName: \"MyEntity\",\n kind: \"KIND_MAP\",\n entities: [\n {\n value: \"value1\",\n synonyms: [\n \"synonym1\",\n \"synonym2\",\n ],\n },\n {\n value: \"value2\",\n synonyms: [\n \"synonym3\",\n \"synonym4\",\n ],\n },\n ],\n enableFuzzyExtraction: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nbasic_entity_type = gcp.diagflow.CxEntityType(\"basic_entity_type\",\n parent=agent.id,\n display_name=\"MyEntity\",\n kind=\"KIND_MAP\",\n entities=[\n {\n \"value\": \"value1\",\n \"synonyms\": [\n \"synonym1\",\n \"synonym2\",\n ],\n },\n {\n \"value\": \"value2\",\n \"synonyms\": [\n \"synonym3\",\n \"synonym4\",\n ],\n },\n ],\n enable_fuzzy_extraction=False)\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 agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var basicEntityType = new Gcp.Diagflow.CxEntityType(\"basic_entity_type\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyEntity\",\n Kind = \"KIND_MAP\",\n Entities = new[]\n {\n new Gcp.Diagflow.Inputs.CxEntityTypeEntityArgs\n {\n Value = \"value1\",\n Synonyms = new[]\n {\n \"synonym1\",\n \"synonym2\",\n },\n },\n new Gcp.Diagflow.Inputs.CxEntityTypeEntityArgs\n {\n Value = \"value2\",\n Synonyms = new[]\n {\n \"synonym3\",\n \"synonym4\",\n },\n },\n },\n EnableFuzzyExtraction = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: 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\t_, err = diagflow.NewCxEntityType(ctx, \"basic_entity_type\", \u0026diagflow.CxEntityTypeArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyEntity\"),\n\t\t\tKind: pulumi.String(\"KIND_MAP\"),\n\t\t\tEntities: diagflow.CxEntityTypeEntityArray{\n\t\t\t\t\u0026diagflow.CxEntityTypeEntityArgs{\n\t\t\t\t\tValue: pulumi.String(\"value1\"),\n\t\t\t\t\tSynonyms: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"synonym1\"),\n\t\t\t\t\t\tpulumi.String(\"synonym2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026diagflow.CxEntityTypeEntityArgs{\n\t\t\t\t\tValue: pulumi.String(\"value2\"),\n\t\t\t\t\tSynonyms: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"synonym3\"),\n\t\t\t\t\t\tpulumi.String(\"synonym4\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnableFuzzyExtraction: pulumi.Bool(false),\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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxEntityType;\nimport com.pulumi.gcp.diagflow.CxEntityTypeArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxEntityTypeEntityArgs;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var basicEntityType = new CxEntityType(\"basicEntityType\", CxEntityTypeArgs.builder()\n .parent(agent.id())\n .displayName(\"MyEntity\")\n .kind(\"KIND_MAP\")\n .entities( \n CxEntityTypeEntityArgs.builder()\n .value(\"value1\")\n .synonyms( \n \"synonym1\",\n \"synonym2\")\n .build(),\n CxEntityTypeEntityArgs.builder()\n .value(\"value2\")\n .synonyms( \n \"synonym3\",\n \"synonym4\")\n .build())\n .enableFuzzyExtraction(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n basicEntityType:\n type: gcp:diagflow:CxEntityType\n name: basic_entity_type\n properties:\n parent: ${agent.id}\n displayName: MyEntity\n kind: KIND_MAP\n entities:\n - value: value1\n synonyms:\n - synonym1\n - synonym2\n - value: value2\n synonyms:\n - synonym3\n - synonym4\n enableFuzzyExtraction: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEntityType can be imported using any of these accepted formats:\n\n* `{{parent}}/entityTypes/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, EntityType can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxEntityType:CxEntityType default {{parent}}/entityTypes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxEntityType:CxEntityType default {{parent}}/{{name}}\n```\n\n", "properties": { "autoExpansionMode": { "type": "string", @@ -184047,7 +184047,7 @@ } }, "gcp:diagflow/cxEnvironment:CxEnvironment": { - "description": "Represents an environment for an agent. You can create multiple versions of your agent and publish them to separate environments.\nWhen you edit an agent, you are editing the draft agent. At any point, you can save the draft agent as an agent version, which is an immutable snapshot of your agent.\nWhen you save the draft agent, it is published to the default environment. When you create agent versions, you can publish them to custom environments. You can create a variety of custom environments for testing, development, production, etc.\n\n\nTo get more information about Environment, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.environments)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Environment Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst version1 = new gcp.diagflow.CxVersion(\"version_1\", {\n parent: agent.startFlow,\n displayName: \"1.0.0\",\n description: \"version 1.0.0\",\n});\nconst development = new gcp.diagflow.CxEnvironment(\"development\", {\n parent: agent.id,\n displayName: \"Development\",\n description: \"Development Environment\",\n versionConfigs: [{\n version: version1.id,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enableSpeechAdaptation\": True,\n })\nversion1 = gcp.diagflow.CxVersion(\"version_1\",\n parent=agent.start_flow,\n display_name=\"1.0.0\",\n description=\"version 1.0.0\")\ndevelopment = gcp.diagflow.CxEnvironment(\"development\",\n parent=agent.id,\n display_name=\"Development\",\n description=\"Development Environment\",\n version_configs=[{\n \"version\": version1.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 agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var version1 = new Gcp.Diagflow.CxVersion(\"version_1\", new()\n {\n Parent = agent.StartFlow,\n DisplayName = \"1.0.0\",\n Description = \"version 1.0.0\",\n });\n\n var development = new Gcp.Diagflow.CxEnvironment(\"development\", new()\n {\n Parent = agent.Id,\n DisplayName = \"Development\",\n Description = \"Development Environment\",\n VersionConfigs = new[]\n {\n new Gcp.Diagflow.Inputs.CxEnvironmentVersionConfigArgs\n {\n Version = version1.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: 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\tversion1, err := diagflow.NewCxVersion(ctx, \"version_1\", \u0026diagflow.CxVersionArgs{\n\t\t\tParent: agent.StartFlow,\n\t\t\tDisplayName: pulumi.String(\"1.0.0\"),\n\t\t\tDescription: pulumi.String(\"version 1.0.0\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = diagflow.NewCxEnvironment(ctx, \"development\", \u0026diagflow.CxEnvironmentArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t\tDescription: pulumi.String(\"Development Environment\"),\n\t\t\tVersionConfigs: diagflow.CxEnvironmentVersionConfigArray{\n\t\t\t\t\u0026diagflow.CxEnvironmentVersionConfigArgs{\n\t\t\t\t\tVersion: version1.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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxVersion;\nimport com.pulumi.gcp.diagflow.CxVersionArgs;\nimport com.pulumi.gcp.diagflow.CxEnvironment;\nimport com.pulumi.gcp.diagflow.CxEnvironmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxEnvironmentVersionConfigArgs;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var version1 = new CxVersion(\"version1\", CxVersionArgs.builder()\n .parent(agent.startFlow())\n .displayName(\"1.0.0\")\n .description(\"version 1.0.0\")\n .build());\n\n var development = new CxEnvironment(\"development\", CxEnvironmentArgs.builder()\n .parent(agent.id())\n .displayName(\"Development\")\n .description(\"Development Environment\")\n .versionConfigs(CxEnvironmentVersionConfigArgs.builder()\n .version(version1.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n version1:\n type: gcp:diagflow:CxVersion\n name: version_1\n properties:\n parent: ${agent.startFlow}\n displayName: 1.0.0\n description: version 1.0.0\n development:\n type: gcp:diagflow:CxEnvironment\n properties:\n parent: ${agent.id}\n displayName: Development\n description: Development Environment\n versionConfigs:\n - version: ${version1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEnvironment can be imported using any of these accepted formats:\n\n* `{{parent}}/environments/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Environment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxEnvironment:CxEnvironment default {{parent}}/environments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxEnvironment:CxEnvironment default {{parent}}/{{name}}\n```\n\n", + "description": "Represents an environment for an agent. You can create multiple versions of your agent and publish them to separate environments.\nWhen you edit an agent, you are editing the draft agent. At any point, you can save the draft agent as an agent version, which is an immutable snapshot of your agent.\nWhen you save the draft agent, it is published to the default environment. When you create agent versions, you can publish them to custom environments. You can create a variety of custom environments for testing, development, production, etc.\n\n\nTo get more information about Environment, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.environments)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Environment Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst version1 = new gcp.diagflow.CxVersion(\"version_1\", {\n parent: agent.startFlow,\n displayName: \"1.0.0\",\n description: \"version 1.0.0\",\n});\nconst development = new gcp.diagflow.CxEnvironment(\"development\", {\n parent: agent.id,\n displayName: \"Development\",\n description: \"Development Environment\",\n versionConfigs: [{\n version: version1.id,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nversion1 = gcp.diagflow.CxVersion(\"version_1\",\n parent=agent.start_flow,\n display_name=\"1.0.0\",\n description=\"version 1.0.0\")\ndevelopment = gcp.diagflow.CxEnvironment(\"development\",\n parent=agent.id,\n display_name=\"Development\",\n description=\"Development Environment\",\n version_configs=[{\n \"version\": version1.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 agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var version1 = new Gcp.Diagflow.CxVersion(\"version_1\", new()\n {\n Parent = agent.StartFlow,\n DisplayName = \"1.0.0\",\n Description = \"version 1.0.0\",\n });\n\n var development = new Gcp.Diagflow.CxEnvironment(\"development\", new()\n {\n Parent = agent.Id,\n DisplayName = \"Development\",\n Description = \"Development Environment\",\n VersionConfigs = new[]\n {\n new Gcp.Diagflow.Inputs.CxEnvironmentVersionConfigArgs\n {\n Version = version1.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: 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\tversion1, err := diagflow.NewCxVersion(ctx, \"version_1\", \u0026diagflow.CxVersionArgs{\n\t\t\tParent: agent.StartFlow,\n\t\t\tDisplayName: pulumi.String(\"1.0.0\"),\n\t\t\tDescription: pulumi.String(\"version 1.0.0\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = diagflow.NewCxEnvironment(ctx, \"development\", \u0026diagflow.CxEnvironmentArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"Development\"),\n\t\t\tDescription: pulumi.String(\"Development Environment\"),\n\t\t\tVersionConfigs: diagflow.CxEnvironmentVersionConfigArray{\n\t\t\t\t\u0026diagflow.CxEnvironmentVersionConfigArgs{\n\t\t\t\t\tVersion: version1.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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxVersion;\nimport com.pulumi.gcp.diagflow.CxVersionArgs;\nimport com.pulumi.gcp.diagflow.CxEnvironment;\nimport com.pulumi.gcp.diagflow.CxEnvironmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxEnvironmentVersionConfigArgs;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var version1 = new CxVersion(\"version1\", CxVersionArgs.builder()\n .parent(agent.startFlow())\n .displayName(\"1.0.0\")\n .description(\"version 1.0.0\")\n .build());\n\n var development = new CxEnvironment(\"development\", CxEnvironmentArgs.builder()\n .parent(agent.id())\n .displayName(\"Development\")\n .description(\"Development Environment\")\n .versionConfigs(CxEnvironmentVersionConfigArgs.builder()\n .version(version1.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n version1:\n type: gcp:diagflow:CxVersion\n name: version_1\n properties:\n parent: ${agent.startFlow}\n displayName: 1.0.0\n description: version 1.0.0\n development:\n type: gcp:diagflow:CxEnvironment\n properties:\n parent: ${agent.id}\n displayName: Development\n description: Development Environment\n versionConfigs:\n - version: ${version1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEnvironment can be imported using any of these accepted formats:\n\n* `{{parent}}/environments/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Environment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxEnvironment:CxEnvironment default {{parent}}/environments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxEnvironment:CxEnvironment default {{parent}}/{{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -184145,7 +184145,7 @@ } }, "gcp:diagflow/cxFlow:CxFlow": { - "description": "Flows represents the conversation flows when you build your chatbot agent.\n\n\nTo get more information about Flow, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.flows)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Flow Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst basicFlow = new gcp.diagflow.CxFlow(\"basic_flow\", {\n parent: agent.id,\n displayName: \"MyFlow\",\n description: \"Test Flow\",\n nluSettings: {\n classificationThreshold: 0.3,\n modelType: \"MODEL_TYPE_STANDARD\",\n },\n eventHandlers: [\n {\n event: \"custom-event\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-match-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-input-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"One more time?\"],\n },\n }],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enableSpeechAdaptation\": True,\n })\nbasic_flow = gcp.diagflow.CxFlow(\"basic_flow\",\n parent=agent.id,\n display_name=\"MyFlow\",\n description=\"Test Flow\",\n nlu_settings={\n \"classificationThreshold\": 0.3,\n \"modelType\": \"MODEL_TYPE_STANDARD\",\n },\n event_handlers=[\n {\n \"event\": \"custom-event\",\n \"triggerFulfillment\": {\n \"returnPartialResponses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-match-default\",\n \"triggerFulfillment\": {\n \"returnPartialResponses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-input-default\",\n \"triggerFulfillment\": {\n \"returnPartialResponses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"One more time?\"],\n },\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 agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var basicFlow = new Gcp.Diagflow.CxFlow(\"basic_flow\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyFlow\",\n Description = \"Test Flow\",\n NluSettings = new Gcp.Diagflow.Inputs.CxFlowNluSettingsArgs\n {\n ClassificationThreshold = 0.3,\n ModelType = \"MODEL_TYPE_STANDARD\",\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"custom-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"I didn't get that. Can you say it again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-match-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Sorry, could you say that again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-input-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"One more time?\",\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: 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\t_, err = diagflow.NewCxFlow(ctx, \"basic_flow\", \u0026diagflow.CxFlowArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyFlow\"),\n\t\t\tDescription: pulumi.String(\"Test Flow\"),\n\t\t\tNluSettings: \u0026diagflow.CxFlowNluSettingsArgs{\n\t\t\t\tClassificationThreshold: pulumi.Float64(0.3),\n\t\t\t\tModelType: pulumi.String(\"MODEL_TYPE_STANDARD\"),\n\t\t\t},\n\t\t\tEventHandlers: diagflow.CxFlowEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"custom-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"I didn't get that. Can you say it again?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Sorry, could you say that again?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-input-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"One more time?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxFlow;\nimport com.pulumi.gcp.diagflow.CxFlowArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowNluSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerTriggerFulfillmentArgs;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var basicFlow = new CxFlow(\"basicFlow\", CxFlowArgs.builder()\n .parent(agent.id())\n .displayName(\"MyFlow\")\n .description(\"Test Flow\")\n .nluSettings(CxFlowNluSettingsArgs.builder()\n .classificationThreshold(0.3)\n .modelType(\"MODEL_TYPE_STANDARD\")\n .build())\n .eventHandlers( \n CxFlowEventHandlerArgs.builder()\n .event(\"custom-event\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"I didn't get that. Can you say it again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-match-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Sorry, could you say that again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-input-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"One more time?\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n basicFlow:\n type: gcp:diagflow:CxFlow\n name: basic_flow\n properties:\n parent: ${agent.id}\n displayName: MyFlow\n description: Test Flow\n nluSettings:\n classificationThreshold: 0.3\n modelType: MODEL_TYPE_STANDARD\n eventHandlers:\n - event: custom-event\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - I didn't get that. Can you say it again?\n - event: sys.no-match-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - Sorry, could you say that again?\n - event: sys.no-input-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - One more time?\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dialogflowcx Flow Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"dialogflowcx-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst basicFlow = new gcp.diagflow.CxFlow(\"basic_flow\", {\n parent: agent.id,\n displayName: \"MyFlow\",\n description: \"Test Flow\",\n nluSettings: {\n classificationThreshold: 0.3,\n modelType: \"MODEL_TYPE_STANDARD\",\n },\n eventHandlers: [\n {\n event: \"custom-event\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-match-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-input-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"One more time?\"],\n },\n }],\n },\n },\n {\n event: \"another-event\",\n triggerFulfillment: {\n returnPartialResponses: true,\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Some text\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n ],\n transitionRoutes: [{\n condition: \"true\",\n triggerFulfillment: {\n returnPartialResponses: true,\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Some text\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n targetFlow: agent.startFlow,\n }],\n advancedSettings: {\n audioExportGcsDestination: {\n uri: pulumi.interpolate`${bucket.url}/prefix-`,\n },\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enableSpeechAdaptation\": True,\n })\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"dialogflowcx-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nbasic_flow = gcp.diagflow.CxFlow(\"basic_flow\",\n parent=agent.id,\n display_name=\"MyFlow\",\n description=\"Test Flow\",\n nlu_settings={\n \"classificationThreshold\": 0.3,\n \"modelType\": \"MODEL_TYPE_STANDARD\",\n },\n event_handlers=[\n {\n \"event\": \"custom-event\",\n \"triggerFulfillment\": {\n \"returnPartialResponses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-match-default\",\n \"triggerFulfillment\": {\n \"returnPartialResponses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-input-default\",\n \"triggerFulfillment\": {\n \"returnPartialResponses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"One more time?\"],\n },\n }],\n },\n },\n {\n \"event\": \"another-event\",\n \"triggerFulfillment\": {\n \"returnPartialResponses\": True,\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Some text\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversationSuccess\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"outputAudioText\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"outputAudioText\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"liveAgentHandoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"playAudio\": {\n \"audioUri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephonyTransferCall\": {\n \"phoneNumber\": \"1-234-567-8901\",\n },\n },\n ],\n \"setParameterActions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditionalCases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n ],\n transition_routes=[{\n \"condition\": \"true\",\n \"triggerFulfillment\": {\n \"returnPartialResponses\": True,\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Some text\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversationSuccess\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"outputAudioText\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"outputAudioText\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"liveAgentHandoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"playAudio\": {\n \"audioUri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephonyTransferCall\": {\n \"phoneNumber\": \"1-234-567-8901\",\n },\n },\n ],\n \"setParameterActions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditionalCases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n \"targetFlow\": agent.start_flow,\n }],\n advanced_settings={\n \"audioExportGcsDestination\": {\n \"uri\": bucket.url.apply(lambda url: f\"{url}/prefix-\"),\n },\n \"dtmfSettings\": {\n \"enabled\": True,\n \"maxDigits\": 1,\n \"finishDigit\": \"#\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"dialogflowcx-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var basicFlow = new Gcp.Diagflow.CxFlow(\"basic_flow\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyFlow\",\n Description = \"Test Flow\",\n NluSettings = new Gcp.Diagflow.Inputs.CxFlowNluSettingsArgs\n {\n ClassificationThreshold = 0.3,\n ModelType = \"MODEL_TYPE_STANDARD\",\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"custom-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"I didn't get that. Can you say it again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-match-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Sorry, could you say that again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-input-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"One more time?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"another-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Some text\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n },\n },\n TransitionRoutes = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteArgs\n {\n Condition = \"true\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Some text\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n TargetFlow = agent.StartFlow,\n },\n },\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsArgs\n {\n AudioExportGcsDestination = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs\n {\n Uri = bucket.Url.Apply(url =\u003e $\"{url}/prefix-\"),\n },\n DtmfSettings = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: 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\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"dialogflowcx-bucket\"),\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\ttmpJSON0, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\ttmpJSON2, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\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\tjson2 := string(tmpJSON2)\n\t\ttmpJSON3, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson3 := string(tmpJSON3)\n\t\ttmpJSON4, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson4 := string(tmpJSON4)\n\t\ttmpJSON5, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\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\tjson5 := string(tmpJSON5)\n\t\t_, err = diagflow.NewCxFlow(ctx, \"basic_flow\", \u0026diagflow.CxFlowArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyFlow\"),\n\t\t\tDescription: pulumi.String(\"Test Flow\"),\n\t\t\tNluSettings: \u0026diagflow.CxFlowNluSettingsArgs{\n\t\t\t\tClassificationThreshold: pulumi.Float64(0.3),\n\t\t\t\tModelType: pulumi.String(\"MODEL_TYPE_STANDARD\"),\n\t\t\t},\n\t\t\tEventHandlers: diagflow.CxFlowEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"custom-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"I didn't get that. Can you say it again?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Sorry, could you say that again?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-input-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"One more time?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"another-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Some text\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSetParameterActions: diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json0),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json2),\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\tTransitionRoutes: diagflow.CxFlowTransitionRouteArray{\n\t\t\t\t\u0026diagflow.CxFlowTransitionRouteArgs{\n\t\t\t\t\tCondition: pulumi.String(\"true\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\tMessages: diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Some text\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSetParameterActions: diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json3),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json4),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json5),\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\tTargetFlow: agent.StartFlow,\n\t\t\t\t},\n\t\t\t},\n\t\t\tAdvancedSettings: \u0026diagflow.CxFlowAdvancedSettingsArgs{\n\t\t\t\tAudioExportGcsDestination: \u0026diagflow.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs{\n\t\t\t\t\tUri: bucket.Url.ApplyT(func(url string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/prefix-\", url), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tDtmfSettings: \u0026diagflow.CxFlowAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.diagflow.CxFlow;\nimport com.pulumi.gcp.diagflow.CxFlowArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowNluSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowTransitionRouteArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowTransitionRouteTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsDtmfSettingsArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"dialogflowcx-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var basicFlow = new CxFlow(\"basicFlow\", CxFlowArgs.builder()\n .parent(agent.id())\n .displayName(\"MyFlow\")\n .description(\"Test Flow\")\n .nluSettings(CxFlowNluSettingsArgs.builder()\n .classificationThreshold(0.3)\n .modelType(\"MODEL_TYPE_STANDARD\")\n .build())\n .eventHandlers( \n CxFlowEventHandlerArgs.builder()\n .event(\"custom-event\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"I didn't get that. Can you say it again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-match-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Sorry, could you say that again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-input-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"One more time?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"another-event\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .messages( \n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Some text\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .build())\n .transitionRoutes(CxFlowTransitionRouteArgs.builder()\n .condition(\"true\")\n .triggerFulfillment(CxFlowTransitionRouteTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .messages( \n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Some text\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .targetFlow(agent.startFlow())\n .build())\n .advancedSettings(CxFlowAdvancedSettingsArgs.builder()\n .audioExportGcsDestination(CxFlowAdvancedSettingsAudioExportGcsDestinationArgs.builder()\n .uri(bucket.url().applyValue(url -\u003e String.format(\"%s/prefix-\", url)))\n .build())\n .dtmfSettings(CxFlowAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: dialogflowcx-bucket\n location: US\n uniformBucketLevelAccess: true\n basicFlow:\n type: gcp:diagflow:CxFlow\n name: basic_flow\n properties:\n parent: ${agent.id}\n displayName: MyFlow\n description: Test Flow\n nluSettings:\n classificationThreshold: 0.3\n modelType: MODEL_TYPE_STANDARD\n eventHandlers:\n - event: custom-event\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - I didn't get that. Can you say it again?\n - event: sys.no-match-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - Sorry, could you say that again?\n - event: sys.no-input-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - One more time?\n - event: another-event\n triggerFulfillment:\n returnPartialResponses: true\n messages:\n - channel: some-channel\n text:\n texts:\n - Some text\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n transitionRoutes:\n - condition: 'true'\n triggerFulfillment:\n returnPartialResponses: true\n messages:\n - channel: some-channel\n text:\n texts:\n - Some text\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n targetFlow: ${agent.startFlow}\n advancedSettings:\n audioExportGcsDestination:\n uri: ${bucket.url}/prefix-\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFlow can be imported using any of these accepted formats:\n\n* `{{parent}}/flows/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Flow can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxFlow:CxFlow default {{parent}}/flows/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxFlow:CxFlow default {{parent}}/{{name}}\n```\n\n", + "description": "Flows represents the conversation flows when you build your chatbot agent.\n\n\nTo get more information about Flow, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.flows)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Flow Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst basicFlow = new gcp.diagflow.CxFlow(\"basic_flow\", {\n parent: agent.id,\n displayName: \"MyFlow\",\n description: \"Test Flow\",\n nluSettings: {\n classificationThreshold: 0.3,\n modelType: \"MODEL_TYPE_STANDARD\",\n },\n eventHandlers: [\n {\n event: \"custom-event\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-match-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-input-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"One more time?\"],\n },\n }],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nbasic_flow = gcp.diagflow.CxFlow(\"basic_flow\",\n parent=agent.id,\n display_name=\"MyFlow\",\n description=\"Test Flow\",\n nlu_settings={\n \"classification_threshold\": 0.3,\n \"model_type\": \"MODEL_TYPE_STANDARD\",\n },\n event_handlers=[\n {\n \"event\": \"custom-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-match-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-input-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"One more time?\"],\n },\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 agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var basicFlow = new Gcp.Diagflow.CxFlow(\"basic_flow\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyFlow\",\n Description = \"Test Flow\",\n NluSettings = new Gcp.Diagflow.Inputs.CxFlowNluSettingsArgs\n {\n ClassificationThreshold = 0.3,\n ModelType = \"MODEL_TYPE_STANDARD\",\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"custom-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"I didn't get that. Can you say it again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-match-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Sorry, could you say that again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-input-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"One more time?\",\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: 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\t_, err = diagflow.NewCxFlow(ctx, \"basic_flow\", \u0026diagflow.CxFlowArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyFlow\"),\n\t\t\tDescription: pulumi.String(\"Test Flow\"),\n\t\t\tNluSettings: \u0026diagflow.CxFlowNluSettingsArgs{\n\t\t\t\tClassificationThreshold: pulumi.Float64(0.3),\n\t\t\t\tModelType: pulumi.String(\"MODEL_TYPE_STANDARD\"),\n\t\t\t},\n\t\t\tEventHandlers: diagflow.CxFlowEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"custom-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"I didn't get that. Can you say it again?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Sorry, could you say that again?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-input-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"One more time?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxFlow;\nimport com.pulumi.gcp.diagflow.CxFlowArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowNluSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerTriggerFulfillmentArgs;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var basicFlow = new CxFlow(\"basicFlow\", CxFlowArgs.builder()\n .parent(agent.id())\n .displayName(\"MyFlow\")\n .description(\"Test Flow\")\n .nluSettings(CxFlowNluSettingsArgs.builder()\n .classificationThreshold(0.3)\n .modelType(\"MODEL_TYPE_STANDARD\")\n .build())\n .eventHandlers( \n CxFlowEventHandlerArgs.builder()\n .event(\"custom-event\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"I didn't get that. Can you say it again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-match-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Sorry, could you say that again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-input-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"One more time?\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n basicFlow:\n type: gcp:diagflow:CxFlow\n name: basic_flow\n properties:\n parent: ${agent.id}\n displayName: MyFlow\n description: Test Flow\n nluSettings:\n classificationThreshold: 0.3\n modelType: MODEL_TYPE_STANDARD\n eventHandlers:\n - event: custom-event\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - I didn't get that. Can you say it again?\n - event: sys.no-match-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - Sorry, could you say that again?\n - event: sys.no-input-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - One more time?\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dialogflowcx Flow Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"dialogflowcx-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst basicFlow = new gcp.diagflow.CxFlow(\"basic_flow\", {\n parent: agent.id,\n displayName: \"MyFlow\",\n description: \"Test Flow\",\n nluSettings: {\n classificationThreshold: 0.3,\n modelType: \"MODEL_TYPE_STANDARD\",\n },\n eventHandlers: [\n {\n event: \"custom-event\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-match-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-input-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"One more time?\"],\n },\n }],\n },\n },\n {\n event: \"another-event\",\n triggerFulfillment: {\n returnPartialResponses: true,\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Some text\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n ],\n transitionRoutes: [{\n condition: \"true\",\n triggerFulfillment: {\n returnPartialResponses: true,\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Some text\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n targetFlow: agent.startFlow,\n }],\n advancedSettings: {\n audioExportGcsDestination: {\n uri: pulumi.interpolate`${bucket.url}/prefix-`,\n },\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"dialogflowcx-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nbasic_flow = gcp.diagflow.CxFlow(\"basic_flow\",\n parent=agent.id,\n display_name=\"MyFlow\",\n description=\"Test Flow\",\n nlu_settings={\n \"classification_threshold\": 0.3,\n \"model_type\": \"MODEL_TYPE_STANDARD\",\n },\n event_handlers=[\n {\n \"event\": \"custom-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-match-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-input-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"One more time?\"],\n },\n }],\n },\n },\n {\n \"event\": \"another-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Some text\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n ],\n transition_routes=[{\n \"condition\": \"true\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Some text\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n \"target_flow\": agent.start_flow,\n }],\n advanced_settings={\n \"audio_export_gcs_destination\": {\n \"uri\": bucket.url.apply(lambda url: f\"{url}/prefix-\"),\n },\n \"dtmf_settings\": {\n \"enabled\": True,\n \"max_digits\": 1,\n \"finish_digit\": \"#\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"dialogflowcx-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var basicFlow = new Gcp.Diagflow.CxFlow(\"basic_flow\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyFlow\",\n Description = \"Test Flow\",\n NluSettings = new Gcp.Diagflow.Inputs.CxFlowNluSettingsArgs\n {\n ClassificationThreshold = 0.3,\n ModelType = \"MODEL_TYPE_STANDARD\",\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"custom-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"I didn't get that. Can you say it again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-match-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Sorry, could you say that again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-input-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"One more time?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"another-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Some text\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n },\n },\n TransitionRoutes = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteArgs\n {\n Condition = \"true\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Some text\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n TargetFlow = agent.StartFlow,\n },\n },\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsArgs\n {\n AudioExportGcsDestination = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs\n {\n Uri = bucket.Url.Apply(url =\u003e $\"{url}/prefix-\"),\n },\n DtmfSettings = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: 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\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"dialogflowcx-bucket\"),\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\ttmpJSON0, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\ttmpJSON2, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\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\tjson2 := string(tmpJSON2)\n\t\ttmpJSON3, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson3 := string(tmpJSON3)\n\t\ttmpJSON4, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson4 := string(tmpJSON4)\n\t\ttmpJSON5, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\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\tjson5 := string(tmpJSON5)\n\t\t_, err = diagflow.NewCxFlow(ctx, \"basic_flow\", \u0026diagflow.CxFlowArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyFlow\"),\n\t\t\tDescription: pulumi.String(\"Test Flow\"),\n\t\t\tNluSettings: \u0026diagflow.CxFlowNluSettingsArgs{\n\t\t\t\tClassificationThreshold: pulumi.Float64(0.3),\n\t\t\t\tModelType: pulumi.String(\"MODEL_TYPE_STANDARD\"),\n\t\t\t},\n\t\t\tEventHandlers: diagflow.CxFlowEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"custom-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"I didn't get that. Can you say it again?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Sorry, could you say that again?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-input-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"One more time?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"another-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Some text\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSetParameterActions: diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json0),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json2),\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\tTransitionRoutes: diagflow.CxFlowTransitionRouteArray{\n\t\t\t\t\u0026diagflow.CxFlowTransitionRouteArgs{\n\t\t\t\t\tCondition: pulumi.String(\"true\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\tMessages: diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Some text\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSetParameterActions: diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json3),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json4),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json5),\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\tTargetFlow: agent.StartFlow,\n\t\t\t\t},\n\t\t\t},\n\t\t\tAdvancedSettings: \u0026diagflow.CxFlowAdvancedSettingsArgs{\n\t\t\t\tAudioExportGcsDestination: \u0026diagflow.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs{\n\t\t\t\t\tUri: bucket.Url.ApplyT(func(url string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/prefix-\", url), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tDtmfSettings: \u0026diagflow.CxFlowAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.diagflow.CxFlow;\nimport com.pulumi.gcp.diagflow.CxFlowArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowNluSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowTransitionRouteArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowTransitionRouteTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsDtmfSettingsArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"dialogflowcx-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var basicFlow = new CxFlow(\"basicFlow\", CxFlowArgs.builder()\n .parent(agent.id())\n .displayName(\"MyFlow\")\n .description(\"Test Flow\")\n .nluSettings(CxFlowNluSettingsArgs.builder()\n .classificationThreshold(0.3)\n .modelType(\"MODEL_TYPE_STANDARD\")\n .build())\n .eventHandlers( \n CxFlowEventHandlerArgs.builder()\n .event(\"custom-event\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"I didn't get that. Can you say it again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-match-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Sorry, could you say that again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-input-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"One more time?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"another-event\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .messages( \n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Some text\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .build())\n .transitionRoutes(CxFlowTransitionRouteArgs.builder()\n .condition(\"true\")\n .triggerFulfillment(CxFlowTransitionRouteTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .messages( \n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Some text\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .targetFlow(agent.startFlow())\n .build())\n .advancedSettings(CxFlowAdvancedSettingsArgs.builder()\n .audioExportGcsDestination(CxFlowAdvancedSettingsAudioExportGcsDestinationArgs.builder()\n .uri(bucket.url().applyValue(url -\u003e String.format(\"%s/prefix-\", url)))\n .build())\n .dtmfSettings(CxFlowAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: dialogflowcx-bucket\n location: US\n uniformBucketLevelAccess: true\n basicFlow:\n type: gcp:diagflow:CxFlow\n name: basic_flow\n properties:\n parent: ${agent.id}\n displayName: MyFlow\n description: Test Flow\n nluSettings:\n classificationThreshold: 0.3\n modelType: MODEL_TYPE_STANDARD\n eventHandlers:\n - event: custom-event\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - I didn't get that. Can you say it again?\n - event: sys.no-match-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - Sorry, could you say that again?\n - event: sys.no-input-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - One more time?\n - event: another-event\n triggerFulfillment:\n returnPartialResponses: true\n messages:\n - channel: some-channel\n text:\n texts:\n - Some text\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n transitionRoutes:\n - condition: 'true'\n triggerFulfillment:\n returnPartialResponses: true\n messages:\n - channel: some-channel\n text:\n texts:\n - Some text\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n targetFlow: ${agent.startFlow}\n advancedSettings:\n audioExportGcsDestination:\n uri: ${bucket.url}/prefix-\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFlow can be imported using any of these accepted formats:\n\n* `{{parent}}/flows/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Flow can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxFlow:CxFlow default {{parent}}/flows/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxFlow:CxFlow default {{parent}}/{{name}}\n```\n\n", "properties": { "advancedSettings": { "$ref": "#/types/gcp:diagflow/CxFlowAdvancedSettings:CxFlowAdvancedSettings", @@ -184327,7 +184327,7 @@ } }, "gcp:diagflow/cxIntent:CxIntent": { - "description": "An intent represents a user's intent to interact with a conversational agent.\n\n\nTo get more information about Intent, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.intents)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Intent Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst basicIntent = new gcp.diagflow.CxIntent(\"basic_intent\", {\n parent: agent.id,\n displayName: \"Example\",\n priority: 1,\n description: \"Intent example\",\n trainingPhrases: [{\n parts: [\n {\n text: \"training\",\n },\n {\n text: \"phrase\",\n },\n {\n text: \"example\",\n },\n ],\n repeatCount: 1,\n }],\n parameters: [{\n id: \"param1\",\n entityType: \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n }],\n labels: {\n label1: \"value1\",\n label2: \"value2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enableSpeechAdaptation\": True,\n })\nbasic_intent = gcp.diagflow.CxIntent(\"basic_intent\",\n parent=agent.id,\n display_name=\"Example\",\n priority=1,\n description=\"Intent example\",\n training_phrases=[{\n \"parts\": [\n {\n \"text\": \"training\",\n },\n {\n \"text\": \"phrase\",\n },\n {\n \"text\": \"example\",\n },\n ],\n \"repeatCount\": 1,\n }],\n parameters=[{\n \"id\": \"param1\",\n \"entityType\": \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n }],\n labels={\n \"label1\": \"value1\",\n \"label2\": \"value2\",\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 agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var basicIntent = new Gcp.Diagflow.CxIntent(\"basic_intent\", new()\n {\n Parent = agent.Id,\n DisplayName = \"Example\",\n Priority = 1,\n Description = \"Intent example\",\n TrainingPhrases = new[]\n {\n new Gcp.Diagflow.Inputs.CxIntentTrainingPhraseArgs\n {\n Parts = new[]\n {\n new Gcp.Diagflow.Inputs.CxIntentTrainingPhrasePartArgs\n {\n Text = \"training\",\n },\n new Gcp.Diagflow.Inputs.CxIntentTrainingPhrasePartArgs\n {\n Text = \"phrase\",\n },\n new Gcp.Diagflow.Inputs.CxIntentTrainingPhrasePartArgs\n {\n Text = \"example\",\n },\n },\n RepeatCount = 1,\n },\n },\n Parameters = new[]\n {\n new Gcp.Diagflow.Inputs.CxIntentParameterArgs\n {\n Id = \"param1\",\n EntityType = \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n },\n },\n Labels = \n {\n { \"label1\", \"value1\" },\n { \"label2\", \"value2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: 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\t_, err = diagflow.NewCxIntent(ctx, \"basic_intent\", \u0026diagflow.CxIntentArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"Example\"),\n\t\t\tPriority: pulumi.Int(1),\n\t\t\tDescription: pulumi.String(\"Intent example\"),\n\t\t\tTrainingPhrases: diagflow.CxIntentTrainingPhraseArray{\n\t\t\t\t\u0026diagflow.CxIntentTrainingPhraseArgs{\n\t\t\t\t\tParts: diagflow.CxIntentTrainingPhrasePartArray{\n\t\t\t\t\t\t\u0026diagflow.CxIntentTrainingPhrasePartArgs{\n\t\t\t\t\t\t\tText: pulumi.String(\"training\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026diagflow.CxIntentTrainingPhrasePartArgs{\n\t\t\t\t\t\t\tText: pulumi.String(\"phrase\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026diagflow.CxIntentTrainingPhrasePartArgs{\n\t\t\t\t\t\t\tText: pulumi.String(\"example\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tRepeatCount: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t},\n\t\t\tParameters: diagflow.CxIntentParameterArray{\n\t\t\t\t\u0026diagflow.CxIntentParameterArgs{\n\t\t\t\t\tId: pulumi.String(\"param1\"),\n\t\t\t\t\tEntityType: pulumi.String(\"projects/-/locations/-/agents/-/entityTypes/sys.date\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label1\": pulumi.String(\"value1\"),\n\t\t\t\t\"label2\": pulumi.String(\"value2\"),\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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxIntent;\nimport com.pulumi.gcp.diagflow.CxIntentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxIntentTrainingPhraseArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxIntentParameterArgs;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var basicIntent = new CxIntent(\"basicIntent\", CxIntentArgs.builder()\n .parent(agent.id())\n .displayName(\"Example\")\n .priority(1)\n .description(\"Intent example\")\n .trainingPhrases(CxIntentTrainingPhraseArgs.builder()\n .parts( \n CxIntentTrainingPhrasePartArgs.builder()\n .text(\"training\")\n .build(),\n CxIntentTrainingPhrasePartArgs.builder()\n .text(\"phrase\")\n .build(),\n CxIntentTrainingPhrasePartArgs.builder()\n .text(\"example\")\n .build())\n .repeatCount(1)\n .build())\n .parameters(CxIntentParameterArgs.builder()\n .id(\"param1\")\n .entityType(\"projects/-/locations/-/agents/-/entityTypes/sys.date\")\n .build())\n .labels(Map.ofEntries(\n Map.entry(\"label1\", \"value1\"),\n Map.entry(\"label2\", \"value2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n basicIntent:\n type: gcp:diagflow:CxIntent\n name: basic_intent\n properties:\n parent: ${agent.id}\n displayName: Example\n priority: 1\n description: Intent example\n trainingPhrases:\n - parts:\n - text: training\n - text: phrase\n - text: example\n repeatCount: 1\n parameters:\n - id: param1\n entityType: projects/-/locations/-/agents/-/entityTypes/sys.date\n labels:\n label1: value1\n label2: value2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIntent can be imported using any of these accepted formats:\n\n* `{{parent}}/intents/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Intent can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxIntent:CxIntent default {{parent}}/intents/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxIntent:CxIntent default {{parent}}/{{name}}\n```\n\n", + "description": "An intent represents a user's intent to interact with a conversational agent.\n\n\nTo get more information about Intent, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.intents)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Intent Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst basicIntent = new gcp.diagflow.CxIntent(\"basic_intent\", {\n parent: agent.id,\n displayName: \"Example\",\n priority: 1,\n description: \"Intent example\",\n trainingPhrases: [{\n parts: [\n {\n text: \"training\",\n },\n {\n text: \"phrase\",\n },\n {\n text: \"example\",\n },\n ],\n repeatCount: 1,\n }],\n parameters: [{\n id: \"param1\",\n entityType: \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n }],\n labels: {\n label1: \"value1\",\n label2: \"value2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nbasic_intent = gcp.diagflow.CxIntent(\"basic_intent\",\n parent=agent.id,\n display_name=\"Example\",\n priority=1,\n description=\"Intent example\",\n training_phrases=[{\n \"parts\": [\n {\n \"text\": \"training\",\n },\n {\n \"text\": \"phrase\",\n },\n {\n \"text\": \"example\",\n },\n ],\n \"repeat_count\": 1,\n }],\n parameters=[{\n \"id\": \"param1\",\n \"entity_type\": \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n }],\n labels={\n \"label1\": \"value1\",\n \"label2\": \"value2\",\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 agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var basicIntent = new Gcp.Diagflow.CxIntent(\"basic_intent\", new()\n {\n Parent = agent.Id,\n DisplayName = \"Example\",\n Priority = 1,\n Description = \"Intent example\",\n TrainingPhrases = new[]\n {\n new Gcp.Diagflow.Inputs.CxIntentTrainingPhraseArgs\n {\n Parts = new[]\n {\n new Gcp.Diagflow.Inputs.CxIntentTrainingPhrasePartArgs\n {\n Text = \"training\",\n },\n new Gcp.Diagflow.Inputs.CxIntentTrainingPhrasePartArgs\n {\n Text = \"phrase\",\n },\n new Gcp.Diagflow.Inputs.CxIntentTrainingPhrasePartArgs\n {\n Text = \"example\",\n },\n },\n RepeatCount = 1,\n },\n },\n Parameters = new[]\n {\n new Gcp.Diagflow.Inputs.CxIntentParameterArgs\n {\n Id = \"param1\",\n EntityType = \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n },\n },\n Labels = \n {\n { \"label1\", \"value1\" },\n { \"label2\", \"value2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: 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\t_, err = diagflow.NewCxIntent(ctx, \"basic_intent\", \u0026diagflow.CxIntentArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"Example\"),\n\t\t\tPriority: pulumi.Int(1),\n\t\t\tDescription: pulumi.String(\"Intent example\"),\n\t\t\tTrainingPhrases: diagflow.CxIntentTrainingPhraseArray{\n\t\t\t\t\u0026diagflow.CxIntentTrainingPhraseArgs{\n\t\t\t\t\tParts: diagflow.CxIntentTrainingPhrasePartArray{\n\t\t\t\t\t\t\u0026diagflow.CxIntentTrainingPhrasePartArgs{\n\t\t\t\t\t\t\tText: pulumi.String(\"training\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026diagflow.CxIntentTrainingPhrasePartArgs{\n\t\t\t\t\t\t\tText: pulumi.String(\"phrase\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026diagflow.CxIntentTrainingPhrasePartArgs{\n\t\t\t\t\t\t\tText: pulumi.String(\"example\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tRepeatCount: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t},\n\t\t\tParameters: diagflow.CxIntentParameterArray{\n\t\t\t\t\u0026diagflow.CxIntentParameterArgs{\n\t\t\t\t\tId: pulumi.String(\"param1\"),\n\t\t\t\t\tEntityType: pulumi.String(\"projects/-/locations/-/agents/-/entityTypes/sys.date\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label1\": pulumi.String(\"value1\"),\n\t\t\t\t\"label2\": pulumi.String(\"value2\"),\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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxIntent;\nimport com.pulumi.gcp.diagflow.CxIntentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxIntentTrainingPhraseArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxIntentParameterArgs;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var basicIntent = new CxIntent(\"basicIntent\", CxIntentArgs.builder()\n .parent(agent.id())\n .displayName(\"Example\")\n .priority(1)\n .description(\"Intent example\")\n .trainingPhrases(CxIntentTrainingPhraseArgs.builder()\n .parts( \n CxIntentTrainingPhrasePartArgs.builder()\n .text(\"training\")\n .build(),\n CxIntentTrainingPhrasePartArgs.builder()\n .text(\"phrase\")\n .build(),\n CxIntentTrainingPhrasePartArgs.builder()\n .text(\"example\")\n .build())\n .repeatCount(1)\n .build())\n .parameters(CxIntentParameterArgs.builder()\n .id(\"param1\")\n .entityType(\"projects/-/locations/-/agents/-/entityTypes/sys.date\")\n .build())\n .labels(Map.ofEntries(\n Map.entry(\"label1\", \"value1\"),\n Map.entry(\"label2\", \"value2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n basicIntent:\n type: gcp:diagflow:CxIntent\n name: basic_intent\n properties:\n parent: ${agent.id}\n displayName: Example\n priority: 1\n description: Intent example\n trainingPhrases:\n - parts:\n - text: training\n - text: phrase\n - text: example\n repeatCount: 1\n parameters:\n - id: param1\n entityType: projects/-/locations/-/agents/-/entityTypes/sys.date\n labels:\n label1: value1\n label2: value2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIntent can be imported using any of these accepted formats:\n\n* `{{parent}}/intents/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Intent can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxIntent:CxIntent default {{parent}}/intents/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxIntent:CxIntent default {{parent}}/{{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -184556,7 +184556,7 @@ } }, "gcp:diagflow/cxPage:CxPage": { - "description": "A Dialogflow CX conversation (session) can be described and visualized as a state machine. The states of a CX session are represented by pages.\n\n\nTo get more information about Page, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.flows.pages)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Page Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst myPage2 = new gcp.diagflow.CxPage(\"my_page2\", {\n parent: agent.startFlow,\n displayName: \"MyPage2\",\n});\nconst myWebhook = new gcp.diagflow.CxWebhook(\"my_webhook\", {\n parent: agent.id,\n displayName: \"MyWebhook\",\n genericWebService: {\n uri: \"https://example.com\",\n },\n});\nconst basicPage = new gcp.diagflow.CxPage(\"basic_page\", {\n parent: agent.startFlow,\n displayName: \"MyPage\",\n entryFulfillment: {\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Welcome to page\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n eventHandlers: [{\n event: \"some-event\",\n triggerFulfillment: {\n returnPartialResponses: true,\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Some text\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n }],\n form: {\n parameters: [{\n displayName: \"param1\",\n entityType: \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n defaultValue: JSON.stringify(\"2000-01-01\"),\n fillBehavior: {\n initialPromptFulfillment: {\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Please provide param1\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n repromptEventHandlers: [\n {\n event: \"sys.no-match-1\",\n triggerFulfillment: {\n returnPartialResponses: true,\n webhook: myWebhook.id,\n tag: \"some-tag\",\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Please provide param1\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n {\n event: \"sys.no-match-2\",\n targetFlow: agent.startFlow,\n },\n {\n event: \"sys.no-match-3\",\n targetPage: myPage2.id,\n },\n ],\n },\n required: true,\n redact: true,\n advancedSettings: {\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n }],\n },\n transitionRoutes: [{\n condition: \"$page.params.status = 'FINAL'\",\n triggerFulfillment: {\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"information completed, navigating to page 2\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n targetPage: myPage2.id,\n }],\n advancedSettings: {\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enableSpeechAdaptation\": True,\n })\nmy_page2 = gcp.diagflow.CxPage(\"my_page2\",\n parent=agent.start_flow,\n display_name=\"MyPage2\")\nmy_webhook = gcp.diagflow.CxWebhook(\"my_webhook\",\n parent=agent.id,\n display_name=\"MyWebhook\",\n generic_web_service={\n \"uri\": \"https://example.com\",\n })\nbasic_page = gcp.diagflow.CxPage(\"basic_page\",\n parent=agent.start_flow,\n display_name=\"MyPage\",\n entry_fulfillment={\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Welcome to page\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversationSuccess\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"outputAudioText\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"outputAudioText\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"liveAgentHandoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"playAudio\": {\n \"audioUri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephonyTransferCall\": {\n \"phoneNumber\": \"1-234-567-8901\",\n },\n },\n ],\n \"setParameterActions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditionalCases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n event_handlers=[{\n \"event\": \"some-event\",\n \"triggerFulfillment\": {\n \"returnPartialResponses\": True,\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Some text\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversationSuccess\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"outputAudioText\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"outputAudioText\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"liveAgentHandoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"playAudio\": {\n \"audioUri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephonyTransferCall\": {\n \"phoneNumber\": \"1-234-567-8901\",\n },\n },\n ],\n \"setParameterActions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditionalCases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n }],\n form={\n \"parameters\": [{\n \"displayName\": \"param1\",\n \"entityType\": \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n \"defaultValue\": json.dumps(\"2000-01-01\"),\n \"fillBehavior\": {\n \"initialPromptFulfillment\": {\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Please provide param1\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversationSuccess\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"outputAudioText\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"outputAudioText\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"liveAgentHandoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"playAudio\": {\n \"audioUri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephonyTransferCall\": {\n \"phoneNumber\": \"1-234-567-8901\",\n },\n },\n ],\n \"setParameterActions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditionalCases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n \"repromptEventHandlers\": [\n {\n \"event\": \"sys.no-match-1\",\n \"triggerFulfillment\": {\n \"returnPartialResponses\": True,\n \"webhook\": my_webhook.id,\n \"tag\": \"some-tag\",\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Please provide param1\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversationSuccess\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"outputAudioText\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"outputAudioText\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"liveAgentHandoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"playAudio\": {\n \"audioUri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephonyTransferCall\": {\n \"phoneNumber\": \"1-234-567-8901\",\n },\n },\n ],\n \"setParameterActions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditionalCases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n {\n \"event\": \"sys.no-match-2\",\n \"targetFlow\": agent.start_flow,\n },\n {\n \"event\": \"sys.no-match-3\",\n \"targetPage\": my_page2.id,\n },\n ],\n },\n \"required\": True,\n \"redact\": True,\n \"advancedSettings\": {\n \"dtmfSettings\": {\n \"enabled\": True,\n \"maxDigits\": 1,\n \"finishDigit\": \"#\",\n },\n },\n }],\n },\n transition_routes=[{\n \"condition\": \"$page.params.status = 'FINAL'\",\n \"triggerFulfillment\": {\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"information completed, navigating to page 2\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversationSuccess\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"outputAudioText\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"outputAudioText\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"liveAgentHandoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"playAudio\": {\n \"audioUri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephonyTransferCall\": {\n \"phoneNumber\": \"1-234-567-8901\",\n },\n },\n ],\n \"setParameterActions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditionalCases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n \"targetPage\": my_page2.id,\n }],\n advanced_settings={\n \"dtmfSettings\": {\n \"enabled\": True,\n \"maxDigits\": 1,\n \"finishDigit\": \"#\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var myPage2 = new Gcp.Diagflow.CxPage(\"my_page2\", new()\n {\n Parent = agent.StartFlow,\n DisplayName = \"MyPage2\",\n });\n\n var myWebhook = new Gcp.Diagflow.CxWebhook(\"my_webhook\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyWebhook\",\n GenericWebService = new Gcp.Diagflow.Inputs.CxWebhookGenericWebServiceArgs\n {\n Uri = \"https://example.com\",\n },\n });\n\n var basicPage = new Gcp.Diagflow.CxPage(\"basic_page\", new()\n {\n Parent = agent.StartFlow,\n DisplayName = \"MyPage\",\n EntryFulfillment = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Welcome to page\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerArgs\n {\n Event = \"some-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Some text\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n },\n },\n Form = new Gcp.Diagflow.Inputs.CxPageFormArgs\n {\n Parameters = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterArgs\n {\n DisplayName = \"param1\",\n EntityType = \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n DefaultValue = JsonSerializer.Serialize(\"2000-01-01\"),\n FillBehavior = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorArgs\n {\n InitialPromptFulfillment = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Please provide param1\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n RepromptEventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs\n {\n Event = \"sys.no-match-1\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Webhook = myWebhook.Id,\n Tag = \"some-tag\",\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Please provide param1\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs\n {\n Event = \"sys.no-match-2\",\n TargetFlow = agent.StartFlow,\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs\n {\n Event = \"sys.no-match-3\",\n TargetPage = myPage2.Id,\n },\n },\n },\n Required = true,\n Redact = true,\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxPageFormParameterAdvancedSettingsArgs\n {\n DtmfSettings = new Gcp.Diagflow.Inputs.CxPageFormParameterAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\n },\n },\n },\n },\n TransitionRoutes = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteArgs\n {\n Condition = \"$page.params.status = 'FINAL'\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"information completed, navigating to page 2\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n TargetPage = myPage2.Id,\n },\n },\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxPageAdvancedSettingsArgs\n {\n DtmfSettings = new Gcp.Diagflow.Inputs.CxPageAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: 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\tmyPage2, err := diagflow.NewCxPage(ctx, \"my_page2\", \u0026diagflow.CxPageArgs{\n\t\t\tParent: agent.StartFlow,\n\t\t\tDisplayName: pulumi.String(\"MyPage2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyWebhook, err := diagflow.NewCxWebhook(ctx, \"my_webhook\", \u0026diagflow.CxWebhookArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyWebhook\"),\n\t\t\tGenericWebService: \u0026diagflow.CxWebhookGenericWebServiceArgs{\n\t\t\t\tUri: pulumi.String(\"https://example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\ttmpJSON2, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\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\tjson2 := string(tmpJSON2)\n\t\ttmpJSON3, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson3 := string(tmpJSON3)\n\t\ttmpJSON4, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson4 := string(tmpJSON4)\n\t\ttmpJSON5, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\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\tjson5 := string(tmpJSON5)\n\t\ttmpJSON6, err := json.Marshal(\"2000-01-01\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson6 := string(tmpJSON6)\n\t\ttmpJSON7, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson7 := string(tmpJSON7)\n\t\ttmpJSON8, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson8 := string(tmpJSON8)\n\t\ttmpJSON9, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\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\tjson9 := string(tmpJSON9)\n\t\ttmpJSON10, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson10 := string(tmpJSON10)\n\t\ttmpJSON11, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson11 := string(tmpJSON11)\n\t\ttmpJSON12, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\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\tjson12 := string(tmpJSON12)\n\t\ttmpJSON13, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson13 := string(tmpJSON13)\n\t\ttmpJSON14, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson14 := string(tmpJSON14)\n\t\ttmpJSON15, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\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\tjson15 := string(tmpJSON15)\n\t\t_, err = diagflow.NewCxPage(ctx, \"basic_page\", \u0026diagflow.CxPageArgs{\n\t\t\tParent: agent.StartFlow,\n\t\t\tDisplayName: pulumi.String(\"MyPage\"),\n\t\t\tEntryFulfillment: \u0026diagflow.CxPageEntryFulfillmentArgs{\n\t\t\t\tMessages: diagflow.CxPageEntryFulfillmentMessageArray{\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\tText: \u0026diagflow.CxPageEntryFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"Welcome to page\"),\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\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageEntryFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEntryFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEntryFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageEntryFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageEntryFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageEntryFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSetParameterActions: diagflow.CxPageEntryFulfillmentSetParameterActionArray{\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\tValue: pulumi.String(json0),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\tValue: pulumi.String(json1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tConditionalCases: diagflow.CxPageEntryFulfillmentConditionalCaseArray{\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\tCases: pulumi.String(json2),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEventHandlers: diagflow.CxPageEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxPageEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"some-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\tMessages: diagflow.CxPageEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Some text\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSetParameterActions: diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json3),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json4),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxPageEventHandlerTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json5),\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\tForm: \u0026diagflow.CxPageFormArgs{\n\t\t\t\tParameters: diagflow.CxPageFormParameterArray{\n\t\t\t\t\t\u0026diagflow.CxPageFormParameterArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"param1\"),\n\t\t\t\t\t\tEntityType: pulumi.String(\"projects/-/locations/-/agents/-/entityTypes/sys.date\"),\n\t\t\t\t\t\tDefaultValue: pulumi.String(json6),\n\t\t\t\t\t\tFillBehavior: \u0026diagflow.CxPageFormParameterFillBehaviorArgs{\n\t\t\t\t\t\t\tInitialPromptFulfillment: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs{\n\t\t\t\t\t\t\t\tMessages: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArray{\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Please provide param1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tSetParameterActions: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json7),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json8),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tConditionalCases: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\t\t\tCases: pulumi.String(json9),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRepromptEventHandlers: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArray{\n\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{\n\t\t\t\t\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-1\"),\n\t\t\t\t\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\tWebhook: myWebhook.ID(),\n\t\t\t\t\t\t\t\t\t\tTag: pulumi.String(\"some-tag\"),\n\t\t\t\t\t\t\t\t\t\tMessages: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Please provide param1\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tSetParameterActions: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json10),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json11),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tConditionalCases: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tCases: pulumi.String(json12),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{\n\t\t\t\t\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-2\"),\n\t\t\t\t\t\t\t\t\tTargetFlow: agent.StartFlow,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{\n\t\t\t\t\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-3\"),\n\t\t\t\t\t\t\t\t\tTargetPage: myPage2.ID(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequired: pulumi.Bool(true),\n\t\t\t\t\t\tRedact: pulumi.Bool(true),\n\t\t\t\t\t\tAdvancedSettings: \u0026diagflow.CxPageFormParameterAdvancedSettingsArgs{\n\t\t\t\t\t\t\tDtmfSettings: \u0026diagflow.CxPageFormParameterAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\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\tTransitionRoutes: diagflow.CxPageTransitionRouteArray{\n\t\t\t\t\u0026diagflow.CxPageTransitionRouteArgs{\n\t\t\t\t\tCondition: pulumi.String(\"$page.params.status = 'FINAL'\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentArgs{\n\t\t\t\t\t\tMessages: diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"information completed, navigating to page 2\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSetParameterActions: diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json13),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json14),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json15),\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\tTargetPage: myPage2.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAdvancedSettings: \u0026diagflow.CxPageAdvancedSettingsArgs{\n\t\t\t\tDtmfSettings: \u0026diagflow.CxPageAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxPage;\nimport com.pulumi.gcp.diagflow.CxPageArgs;\nimport com.pulumi.gcp.diagflow.CxWebhook;\nimport com.pulumi.gcp.diagflow.CxWebhookArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxWebhookGenericWebServiceArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEntryFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEventHandlerTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageFormArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageTransitionRouteArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageTransitionRouteTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageAdvancedSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageAdvancedSettingsDtmfSettingsArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var myPage2 = new CxPage(\"myPage2\", CxPageArgs.builder()\n .parent(agent.startFlow())\n .displayName(\"MyPage2\")\n .build());\n\n var myWebhook = new CxWebhook(\"myWebhook\", CxWebhookArgs.builder()\n .parent(agent.id())\n .displayName(\"MyWebhook\")\n .genericWebService(CxWebhookGenericWebServiceArgs.builder()\n .uri(\"https://example.com\")\n .build())\n .build());\n\n var basicPage = new CxPage(\"basicPage\", CxPageArgs.builder()\n .parent(agent.startFlow())\n .displayName(\"MyPage\")\n .entryFulfillment(CxPageEntryFulfillmentArgs.builder()\n .messages( \n CxPageEntryFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageEntryFulfillmentMessageTextArgs.builder()\n .texts(\"Welcome to page\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageEntryFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEntryFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEntryFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageEntryFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .playAudio(CxPageEntryFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageEntryFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageEntryFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageEntryFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageEntryFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageEntryFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .eventHandlers(CxPageEventHandlerArgs.builder()\n .event(\"some-event\")\n .triggerFulfillment(CxPageEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .messages( \n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Some text\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .build())\n .form(CxPageFormArgs.builder()\n .parameters(CxPageFormParameterArgs.builder()\n .displayName(\"param1\")\n .entityType(\"projects/-/locations/-/agents/-/entityTypes/sys.date\")\n .defaultValue(serializeJson(\n \"2000-01-01\"))\n .fillBehavior(CxPageFormParameterFillBehaviorArgs.builder()\n .initialPromptFulfillment(CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs.builder()\n .messages( \n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs.builder()\n .texts(\"Please provide param1\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .playAudio(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .repromptEventHandlers( \n CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()\n .event(\"sys.no-match-1\")\n .triggerFulfillment(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .webhook(myWebhook.id())\n .tag(\"some-tag\")\n .messages( \n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Please provide param1\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()\n .event(\"sys.no-match-2\")\n .targetFlow(agent.startFlow())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()\n .event(\"sys.no-match-3\")\n .targetPage(myPage2.id())\n .build())\n .build())\n .required(\"true\")\n .redact(\"true\")\n .advancedSettings(CxPageFormParameterAdvancedSettingsArgs.builder()\n .dtmfSettings(CxPageFormParameterAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .build())\n .build())\n .transitionRoutes(CxPageTransitionRouteArgs.builder()\n .condition(\"$page.params.status = 'FINAL'\")\n .triggerFulfillment(CxPageTransitionRouteTriggerFulfillmentArgs.builder()\n .messages( \n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageTransitionRouteTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"information completed, navigating to page 2\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .targetPage(myPage2.id())\n .build())\n .advancedSettings(CxPageAdvancedSettingsArgs.builder()\n .dtmfSettings(CxPageAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n basicPage:\n type: gcp:diagflow:CxPage\n name: basic_page\n properties:\n parent: ${agent.startFlow}\n displayName: MyPage\n entryFulfillment:\n messages:\n - channel: some-channel\n text:\n texts:\n - Welcome to page\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n eventHandlers:\n - event: some-event\n triggerFulfillment:\n returnPartialResponses: true\n messages:\n - channel: some-channel\n text:\n texts:\n - Some text\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n form:\n parameters:\n - displayName: param1\n entityType: projects/-/locations/-/agents/-/entityTypes/sys.date\n defaultValue:\n fn::toJSON: 2000-01-01\n fillBehavior:\n initialPromptFulfillment:\n messages:\n - channel: some-channel\n text:\n texts:\n - Please provide param1\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n repromptEventHandlers:\n - event: sys.no-match-1\n triggerFulfillment:\n returnPartialResponses: true\n webhook: ${myWebhook.id}\n tag: some-tag\n messages:\n - channel: some-channel\n text:\n texts:\n - Please provide param1\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n - event: sys.no-match-2\n targetFlow: ${agent.startFlow}\n - event: sys.no-match-3\n targetPage: ${myPage2.id}\n required: 'true'\n redact: 'true'\n advancedSettings:\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n transitionRoutes:\n - condition: $page.params.status = 'FINAL'\n triggerFulfillment:\n messages:\n - channel: some-channel\n text:\n texts:\n - information completed, navigating to page 2\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n targetPage: ${myPage2.id}\n advancedSettings:\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n myPage2:\n type: gcp:diagflow:CxPage\n name: my_page2\n properties:\n parent: ${agent.startFlow}\n displayName: MyPage2\n myWebhook:\n type: gcp:diagflow:CxWebhook\n name: my_webhook\n properties:\n parent: ${agent.id}\n displayName: MyWebhook\n genericWebService:\n uri: https://example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPage can be imported using any of these accepted formats:\n\n* `{{parent}}/pages/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Page can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxPage:CxPage default {{parent}}/pages/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxPage:CxPage default {{parent}}/{{name}}\n```\n\n", + "description": "A Dialogflow CX conversation (session) can be described and visualized as a state machine. The states of a CX session are represented by pages.\n\n\nTo get more information about Page, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.flows.pages)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Page Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst myPage2 = new gcp.diagflow.CxPage(\"my_page2\", {\n parent: agent.startFlow,\n displayName: \"MyPage2\",\n});\nconst myWebhook = new gcp.diagflow.CxWebhook(\"my_webhook\", {\n parent: agent.id,\n displayName: \"MyWebhook\",\n genericWebService: {\n uri: \"https://example.com\",\n },\n});\nconst basicPage = new gcp.diagflow.CxPage(\"basic_page\", {\n parent: agent.startFlow,\n displayName: \"MyPage\",\n entryFulfillment: {\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Welcome to page\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n eventHandlers: [{\n event: \"some-event\",\n triggerFulfillment: {\n returnPartialResponses: true,\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Some text\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n }],\n form: {\n parameters: [{\n displayName: \"param1\",\n entityType: \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n defaultValue: JSON.stringify(\"2000-01-01\"),\n fillBehavior: {\n initialPromptFulfillment: {\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Please provide param1\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n repromptEventHandlers: [\n {\n event: \"sys.no-match-1\",\n triggerFulfillment: {\n returnPartialResponses: true,\n webhook: myWebhook.id,\n tag: \"some-tag\",\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Please provide param1\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n {\n event: \"sys.no-match-2\",\n targetFlow: agent.startFlow,\n },\n {\n event: \"sys.no-match-3\",\n targetPage: myPage2.id,\n },\n ],\n },\n required: true,\n redact: true,\n advancedSettings: {\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n }],\n },\n transitionRoutes: [{\n condition: \"$page.params.status = 'FINAL'\",\n triggerFulfillment: {\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"information completed, navigating to page 2\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n targetPage: myPage2.id,\n }],\n advancedSettings: {\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nmy_page2 = gcp.diagflow.CxPage(\"my_page2\",\n parent=agent.start_flow,\n display_name=\"MyPage2\")\nmy_webhook = gcp.diagflow.CxWebhook(\"my_webhook\",\n parent=agent.id,\n display_name=\"MyWebhook\",\n generic_web_service={\n \"uri\": \"https://example.com\",\n })\nbasic_page = gcp.diagflow.CxPage(\"basic_page\",\n parent=agent.start_flow,\n display_name=\"MyPage\",\n entry_fulfillment={\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Welcome to page\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n event_handlers=[{\n \"event\": \"some-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Some text\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n }],\n form={\n \"parameters\": [{\n \"display_name\": \"param1\",\n \"entity_type\": \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n \"default_value\": json.dumps(\"2000-01-01\"),\n \"fill_behavior\": {\n \"initial_prompt_fulfillment\": {\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Please provide param1\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n \"reprompt_event_handlers\": [\n {\n \"event\": \"sys.no-match-1\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"webhook\": my_webhook.id,\n \"tag\": \"some-tag\",\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Please provide param1\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n {\n \"event\": \"sys.no-match-2\",\n \"target_flow\": agent.start_flow,\n },\n {\n \"event\": \"sys.no-match-3\",\n \"target_page\": my_page2.id,\n },\n ],\n },\n \"required\": True,\n \"redact\": True,\n \"advanced_settings\": {\n \"dtmf_settings\": {\n \"enabled\": True,\n \"max_digits\": 1,\n \"finish_digit\": \"#\",\n },\n },\n }],\n },\n transition_routes=[{\n \"condition\": \"$page.params.status = 'FINAL'\",\n \"trigger_fulfillment\": {\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"information completed, navigating to page 2\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n \"target_page\": my_page2.id,\n }],\n advanced_settings={\n \"dtmf_settings\": {\n \"enabled\": True,\n \"max_digits\": 1,\n \"finish_digit\": \"#\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var myPage2 = new Gcp.Diagflow.CxPage(\"my_page2\", new()\n {\n Parent = agent.StartFlow,\n DisplayName = \"MyPage2\",\n });\n\n var myWebhook = new Gcp.Diagflow.CxWebhook(\"my_webhook\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyWebhook\",\n GenericWebService = new Gcp.Diagflow.Inputs.CxWebhookGenericWebServiceArgs\n {\n Uri = \"https://example.com\",\n },\n });\n\n var basicPage = new Gcp.Diagflow.CxPage(\"basic_page\", new()\n {\n Parent = agent.StartFlow,\n DisplayName = \"MyPage\",\n EntryFulfillment = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Welcome to page\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerArgs\n {\n Event = \"some-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Some text\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n },\n },\n Form = new Gcp.Diagflow.Inputs.CxPageFormArgs\n {\n Parameters = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterArgs\n {\n DisplayName = \"param1\",\n EntityType = \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n DefaultValue = JsonSerializer.Serialize(\"2000-01-01\"),\n FillBehavior = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorArgs\n {\n InitialPromptFulfillment = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Please provide param1\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n RepromptEventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs\n {\n Event = \"sys.no-match-1\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Webhook = myWebhook.Id,\n Tag = \"some-tag\",\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Please provide param1\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs\n {\n Event = \"sys.no-match-2\",\n TargetFlow = agent.StartFlow,\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs\n {\n Event = \"sys.no-match-3\",\n TargetPage = myPage2.Id,\n },\n },\n },\n Required = true,\n Redact = true,\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxPageFormParameterAdvancedSettingsArgs\n {\n DtmfSettings = new Gcp.Diagflow.Inputs.CxPageFormParameterAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\n },\n },\n },\n },\n TransitionRoutes = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteArgs\n {\n Condition = \"$page.params.status = 'FINAL'\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"information completed, navigating to page 2\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n TargetPage = myPage2.Id,\n },\n },\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxPageAdvancedSettingsArgs\n {\n DtmfSettings = new Gcp.Diagflow.Inputs.CxPageAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: 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\tmyPage2, err := diagflow.NewCxPage(ctx, \"my_page2\", \u0026diagflow.CxPageArgs{\n\t\t\tParent: agent.StartFlow,\n\t\t\tDisplayName: pulumi.String(\"MyPage2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyWebhook, err := diagflow.NewCxWebhook(ctx, \"my_webhook\", \u0026diagflow.CxWebhookArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyWebhook\"),\n\t\t\tGenericWebService: \u0026diagflow.CxWebhookGenericWebServiceArgs{\n\t\t\t\tUri: pulumi.String(\"https://example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\ttmpJSON2, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\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\tjson2 := string(tmpJSON2)\n\t\ttmpJSON3, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson3 := string(tmpJSON3)\n\t\ttmpJSON4, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson4 := string(tmpJSON4)\n\t\ttmpJSON5, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\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\tjson5 := string(tmpJSON5)\n\t\ttmpJSON6, err := json.Marshal(\"2000-01-01\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson6 := string(tmpJSON6)\n\t\ttmpJSON7, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson7 := string(tmpJSON7)\n\t\ttmpJSON8, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson8 := string(tmpJSON8)\n\t\ttmpJSON9, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\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\tjson9 := string(tmpJSON9)\n\t\ttmpJSON10, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson10 := string(tmpJSON10)\n\t\ttmpJSON11, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson11 := string(tmpJSON11)\n\t\ttmpJSON12, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\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\tjson12 := string(tmpJSON12)\n\t\ttmpJSON13, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson13 := string(tmpJSON13)\n\t\ttmpJSON14, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson14 := string(tmpJSON14)\n\t\ttmpJSON15, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\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\tjson15 := string(tmpJSON15)\n\t\t_, err = diagflow.NewCxPage(ctx, \"basic_page\", \u0026diagflow.CxPageArgs{\n\t\t\tParent: agent.StartFlow,\n\t\t\tDisplayName: pulumi.String(\"MyPage\"),\n\t\t\tEntryFulfillment: \u0026diagflow.CxPageEntryFulfillmentArgs{\n\t\t\t\tMessages: diagflow.CxPageEntryFulfillmentMessageArray{\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\tText: \u0026diagflow.CxPageEntryFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"Welcome to page\"),\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\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageEntryFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEntryFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEntryFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageEntryFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageEntryFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageEntryFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSetParameterActions: diagflow.CxPageEntryFulfillmentSetParameterActionArray{\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\tValue: pulumi.String(json0),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\tValue: pulumi.String(json1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tConditionalCases: diagflow.CxPageEntryFulfillmentConditionalCaseArray{\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\tCases: pulumi.String(json2),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEventHandlers: diagflow.CxPageEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxPageEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"some-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\tMessages: diagflow.CxPageEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Some text\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSetParameterActions: diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json3),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json4),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxPageEventHandlerTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json5),\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\tForm: \u0026diagflow.CxPageFormArgs{\n\t\t\t\tParameters: diagflow.CxPageFormParameterArray{\n\t\t\t\t\t\u0026diagflow.CxPageFormParameterArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"param1\"),\n\t\t\t\t\t\tEntityType: pulumi.String(\"projects/-/locations/-/agents/-/entityTypes/sys.date\"),\n\t\t\t\t\t\tDefaultValue: pulumi.String(json6),\n\t\t\t\t\t\tFillBehavior: \u0026diagflow.CxPageFormParameterFillBehaviorArgs{\n\t\t\t\t\t\t\tInitialPromptFulfillment: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs{\n\t\t\t\t\t\t\t\tMessages: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArray{\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Please provide param1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tSetParameterActions: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json7),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json8),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tConditionalCases: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\t\t\tCases: pulumi.String(json9),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRepromptEventHandlers: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArray{\n\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{\n\t\t\t\t\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-1\"),\n\t\t\t\t\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\tWebhook: myWebhook.ID(),\n\t\t\t\t\t\t\t\t\t\tTag: pulumi.String(\"some-tag\"),\n\t\t\t\t\t\t\t\t\t\tMessages: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Please provide param1\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tSetParameterActions: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json10),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json11),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tConditionalCases: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tCases: pulumi.String(json12),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{\n\t\t\t\t\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-2\"),\n\t\t\t\t\t\t\t\t\tTargetFlow: agent.StartFlow,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{\n\t\t\t\t\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-3\"),\n\t\t\t\t\t\t\t\t\tTargetPage: myPage2.ID(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequired: pulumi.Bool(true),\n\t\t\t\t\t\tRedact: pulumi.Bool(true),\n\t\t\t\t\t\tAdvancedSettings: \u0026diagflow.CxPageFormParameterAdvancedSettingsArgs{\n\t\t\t\t\t\t\tDtmfSettings: \u0026diagflow.CxPageFormParameterAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\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\tTransitionRoutes: diagflow.CxPageTransitionRouteArray{\n\t\t\t\t\u0026diagflow.CxPageTransitionRouteArgs{\n\t\t\t\t\tCondition: pulumi.String(\"$page.params.status = 'FINAL'\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentArgs{\n\t\t\t\t\t\tMessages: diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"information completed, navigating to page 2\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSetParameterActions: diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json13),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json14),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json15),\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\tTargetPage: myPage2.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAdvancedSettings: \u0026diagflow.CxPageAdvancedSettingsArgs{\n\t\t\t\tDtmfSettings: \u0026diagflow.CxPageAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxPage;\nimport com.pulumi.gcp.diagflow.CxPageArgs;\nimport com.pulumi.gcp.diagflow.CxWebhook;\nimport com.pulumi.gcp.diagflow.CxWebhookArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxWebhookGenericWebServiceArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEntryFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEventHandlerTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageFormArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageTransitionRouteArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageTransitionRouteTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageAdvancedSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageAdvancedSettingsDtmfSettingsArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var myPage2 = new CxPage(\"myPage2\", CxPageArgs.builder()\n .parent(agent.startFlow())\n .displayName(\"MyPage2\")\n .build());\n\n var myWebhook = new CxWebhook(\"myWebhook\", CxWebhookArgs.builder()\n .parent(agent.id())\n .displayName(\"MyWebhook\")\n .genericWebService(CxWebhookGenericWebServiceArgs.builder()\n .uri(\"https://example.com\")\n .build())\n .build());\n\n var basicPage = new CxPage(\"basicPage\", CxPageArgs.builder()\n .parent(agent.startFlow())\n .displayName(\"MyPage\")\n .entryFulfillment(CxPageEntryFulfillmentArgs.builder()\n .messages( \n CxPageEntryFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageEntryFulfillmentMessageTextArgs.builder()\n .texts(\"Welcome to page\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageEntryFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEntryFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEntryFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageEntryFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .playAudio(CxPageEntryFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageEntryFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageEntryFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageEntryFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageEntryFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageEntryFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .eventHandlers(CxPageEventHandlerArgs.builder()\n .event(\"some-event\")\n .triggerFulfillment(CxPageEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .messages( \n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Some text\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .build())\n .form(CxPageFormArgs.builder()\n .parameters(CxPageFormParameterArgs.builder()\n .displayName(\"param1\")\n .entityType(\"projects/-/locations/-/agents/-/entityTypes/sys.date\")\n .defaultValue(serializeJson(\n \"2000-01-01\"))\n .fillBehavior(CxPageFormParameterFillBehaviorArgs.builder()\n .initialPromptFulfillment(CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs.builder()\n .messages( \n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs.builder()\n .texts(\"Please provide param1\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .playAudio(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .repromptEventHandlers( \n CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()\n .event(\"sys.no-match-1\")\n .triggerFulfillment(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .webhook(myWebhook.id())\n .tag(\"some-tag\")\n .messages( \n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Please provide param1\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()\n .event(\"sys.no-match-2\")\n .targetFlow(agent.startFlow())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()\n .event(\"sys.no-match-3\")\n .targetPage(myPage2.id())\n .build())\n .build())\n .required(\"true\")\n .redact(\"true\")\n .advancedSettings(CxPageFormParameterAdvancedSettingsArgs.builder()\n .dtmfSettings(CxPageFormParameterAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .build())\n .build())\n .transitionRoutes(CxPageTransitionRouteArgs.builder()\n .condition(\"$page.params.status = 'FINAL'\")\n .triggerFulfillment(CxPageTransitionRouteTriggerFulfillmentArgs.builder()\n .messages( \n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageTransitionRouteTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"information completed, navigating to page 2\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .targetPage(myPage2.id())\n .build())\n .advancedSettings(CxPageAdvancedSettingsArgs.builder()\n .dtmfSettings(CxPageAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n basicPage:\n type: gcp:diagflow:CxPage\n name: basic_page\n properties:\n parent: ${agent.startFlow}\n displayName: MyPage\n entryFulfillment:\n messages:\n - channel: some-channel\n text:\n texts:\n - Welcome to page\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n eventHandlers:\n - event: some-event\n triggerFulfillment:\n returnPartialResponses: true\n messages:\n - channel: some-channel\n text:\n texts:\n - Some text\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n form:\n parameters:\n - displayName: param1\n entityType: projects/-/locations/-/agents/-/entityTypes/sys.date\n defaultValue:\n fn::toJSON: 2000-01-01\n fillBehavior:\n initialPromptFulfillment:\n messages:\n - channel: some-channel\n text:\n texts:\n - Please provide param1\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n repromptEventHandlers:\n - event: sys.no-match-1\n triggerFulfillment:\n returnPartialResponses: true\n webhook: ${myWebhook.id}\n tag: some-tag\n messages:\n - channel: some-channel\n text:\n texts:\n - Please provide param1\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n - event: sys.no-match-2\n targetFlow: ${agent.startFlow}\n - event: sys.no-match-3\n targetPage: ${myPage2.id}\n required: 'true'\n redact: 'true'\n advancedSettings:\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n transitionRoutes:\n - condition: $page.params.status = 'FINAL'\n triggerFulfillment:\n messages:\n - channel: some-channel\n text:\n texts:\n - information completed, navigating to page 2\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n targetPage: ${myPage2.id}\n advancedSettings:\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n myPage2:\n type: gcp:diagflow:CxPage\n name: my_page2\n properties:\n parent: ${agent.startFlow}\n displayName: MyPage2\n myWebhook:\n type: gcp:diagflow:CxWebhook\n name: my_webhook\n properties:\n parent: ${agent.id}\n displayName: MyWebhook\n genericWebService:\n uri: https://example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPage can be imported using any of these accepted formats:\n\n* `{{parent}}/pages/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Page can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxPage:CxPage default {{parent}}/pages/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxPage:CxPage default {{parent}}/{{name}}\n```\n\n", "properties": { "advancedSettings": { "$ref": "#/types/gcp:diagflow/CxPageAdvancedSettings:CxPageAdvancedSettings", @@ -184723,7 +184723,7 @@ } }, "gcp:diagflow/cxSecuritySettings:CxSecuritySettings": { - "description": "Represents the settings related to security issues, such as data redaction and data retention. It may take hours for updates on the settings to propagate to all the related components and take effect.\nMultiple security settings can be configured in each location. Each agent can specify the security settings to apply, and each setting can be applied to multiple agents in the same project and location.\n\n\nTo get more information about SecuritySettings, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.securitySettings)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Security Settings Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicSecuritySettings = new gcp.diagflow.CxSecuritySettings(\"basic_security_settings\", {\n displayName: \"dialogflowcx-security-settings\",\n location: \"global\",\n purgeDataTypes: [],\n retentionWindowDays: 7,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_security_settings = gcp.diagflow.CxSecuritySettings(\"basic_security_settings\",\n display_name=\"dialogflowcx-security-settings\",\n location=\"global\",\n purge_data_types=[],\n retention_window_days=7)\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 basicSecuritySettings = new Gcp.Diagflow.CxSecuritySettings(\"basic_security_settings\", new()\n {\n DisplayName = \"dialogflowcx-security-settings\",\n Location = \"global\",\n PurgeDataTypes = new[] {},\n RetentionWindowDays = 7,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\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 := diagflow.NewCxSecuritySettings(ctx, \"basic_security_settings\", \u0026diagflow.CxSecuritySettingsArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-security-settings\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tPurgeDataTypes: pulumi.StringArray{},\n\t\t\tRetentionWindowDays: pulumi.Int(7),\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.diagflow.CxSecuritySettings;\nimport com.pulumi.gcp.diagflow.CxSecuritySettingsArgs;\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 basicSecuritySettings = new CxSecuritySettings(\"basicSecuritySettings\", CxSecuritySettingsArgs.builder()\n .displayName(\"dialogflowcx-security-settings\")\n .location(\"global\")\n .purgeDataTypes()\n .retentionWindowDays(7)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicSecuritySettings:\n type: gcp:diagflow:CxSecuritySettings\n name: basic_security_settings\n properties:\n displayName: dialogflowcx-security-settings\n location: global\n purgeDataTypes: []\n retentionWindowDays: 7\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dialogflowcx Security Settings Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst inspect = new gcp.dataloss.PreventionInspectTemplate(\"inspect\", {\n parent: \"projects/my-project-name/locations/global\",\n displayName: \"dialogflowcx-inspect-template\",\n inspectConfig: {\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n },\n});\nconst deidentify = new gcp.dataloss.PreventionDeidentifyTemplate(\"deidentify\", {\n parent: \"projects/my-project-name/locations/global\",\n displayName: \"dialogflowcx-deidentify-template\",\n deidentifyConfig: {\n infoTypeTransformations: {\n transformations: [{\n primitiveTransformation: {\n replaceConfig: {\n newValue: {\n stringValue: \"[REDACTED]\",\n },\n },\n },\n }],\n },\n },\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"dialogflowcx-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst basicSecuritySettings = new gcp.diagflow.CxSecuritySettings(\"basic_security_settings\", {\n displayName: \"dialogflowcx-security-settings\",\n location: \"global\",\n redactionStrategy: \"REDACT_WITH_SERVICE\",\n redactionScope: \"REDACT_DISK_STORAGE\",\n inspectTemplate: inspect.id,\n deidentifyTemplate: deidentify.id,\n purgeDataTypes: [\"DIALOGFLOW_HISTORY\"],\n audioExportSettings: {\n gcsBucket: bucket.id,\n audioExportPattern: \"export\",\n enableAudioRedaction: true,\n audioFormat: \"OGG\",\n },\n insightsExportSettings: {\n enableInsightsExport: true,\n },\n retentionStrategy: \"REMOVE_AFTER_CONVERSATION\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninspect = gcp.dataloss.PreventionInspectTemplate(\"inspect\",\n parent=\"projects/my-project-name/locations/global\",\n display_name=\"dialogflowcx-inspect-template\",\n inspect_config={\n \"infoTypes\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n })\ndeidentify = gcp.dataloss.PreventionDeidentifyTemplate(\"deidentify\",\n parent=\"projects/my-project-name/locations/global\",\n display_name=\"dialogflowcx-deidentify-template\",\n deidentify_config={\n \"infoTypeTransformations\": {\n \"transformations\": [{\n \"primitiveTransformation\": {\n \"replaceConfig\": {\n \"newValue\": {\n \"stringValue\": \"[REDACTED]\",\n },\n },\n },\n }],\n },\n })\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"dialogflowcx-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nbasic_security_settings = gcp.diagflow.CxSecuritySettings(\"basic_security_settings\",\n display_name=\"dialogflowcx-security-settings\",\n location=\"global\",\n redaction_strategy=\"REDACT_WITH_SERVICE\",\n redaction_scope=\"REDACT_DISK_STORAGE\",\n inspect_template=inspect.id,\n deidentify_template=deidentify.id,\n purge_data_types=[\"DIALOGFLOW_HISTORY\"],\n audio_export_settings={\n \"gcsBucket\": bucket.id,\n \"audioExportPattern\": \"export\",\n \"enableAudioRedaction\": True,\n \"audioFormat\": \"OGG\",\n },\n insights_export_settings={\n \"enableInsightsExport\": True,\n },\n retention_strategy=\"REMOVE_AFTER_CONVERSATION\")\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 inspect = new Gcp.DataLoss.PreventionInspectTemplate(\"inspect\", new()\n {\n Parent = \"projects/my-project-name/locations/global\",\n DisplayName = \"dialogflowcx-inspect-template\",\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n },\n });\n\n var deidentify = new Gcp.DataLoss.PreventionDeidentifyTemplate(\"deidentify\", new()\n {\n Parent = \"projects/my-project-name/locations/global\",\n DisplayName = \"dialogflowcx-deidentify-template\",\n DeidentifyConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs\n {\n InfoTypeTransformations = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs\n {\n Transformations = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n ReplaceConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs\n {\n NewValue = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs\n {\n StringValue = \"[REDACTED]\",\n },\n },\n },\n },\n },\n },\n },\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"dialogflowcx-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var basicSecuritySettings = new Gcp.Diagflow.CxSecuritySettings(\"basic_security_settings\", new()\n {\n DisplayName = \"dialogflowcx-security-settings\",\n Location = \"global\",\n RedactionStrategy = \"REDACT_WITH_SERVICE\",\n RedactionScope = \"REDACT_DISK_STORAGE\",\n InspectTemplate = inspect.Id,\n DeidentifyTemplate = deidentify.Id,\n PurgeDataTypes = new[]\n {\n \"DIALOGFLOW_HISTORY\",\n },\n AudioExportSettings = new Gcp.Diagflow.Inputs.CxSecuritySettingsAudioExportSettingsArgs\n {\n GcsBucket = bucket.Id,\n AudioExportPattern = \"export\",\n EnableAudioRedaction = true,\n AudioFormat = \"OGG\",\n },\n InsightsExportSettings = new Gcp.Diagflow.Inputs.CxSecuritySettingsInsightsExportSettingsArgs\n {\n EnableInsightsExport = true,\n },\n RetentionStrategy = \"REMOVE_AFTER_CONVERSATION\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tinspect, err := dataloss.NewPreventionInspectTemplate(ctx, \"inspect\", \u0026dataloss.PreventionInspectTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name/locations/global\"),\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-inspect-template\"),\n\t\t\tInspectConfig: \u0026dataloss.PreventionInspectTemplateInspectConfigArgs{\n\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\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\tdeidentify, err := dataloss.NewPreventionDeidentifyTemplate(ctx, \"deidentify\", \u0026dataloss.PreventionDeidentifyTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name/locations/global\"),\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-deidentify-template\"),\n\t\t\tDeidentifyConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigArgs{\n\t\t\t\tInfoTypeTransformations: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs{\n\t\t\t\t\tTransformations: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tReplaceConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs{\n\t\t\t\t\t\t\t\t\tNewValue: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs{\n\t\t\t\t\t\t\t\t\t\tStringValue: pulumi.String(\"[REDACTED]\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"dialogflowcx-bucket\"),\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\t_, err = diagflow.NewCxSecuritySettings(ctx, \"basic_security_settings\", \u0026diagflow.CxSecuritySettingsArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-security-settings\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRedactionStrategy: pulumi.String(\"REDACT_WITH_SERVICE\"),\n\t\t\tRedactionScope: pulumi.String(\"REDACT_DISK_STORAGE\"),\n\t\t\tInspectTemplate: inspect.ID(),\n\t\t\tDeidentifyTemplate: deidentify.ID(),\n\t\t\tPurgeDataTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"DIALOGFLOW_HISTORY\"),\n\t\t\t},\n\t\t\tAudioExportSettings: \u0026diagflow.CxSecuritySettingsAudioExportSettingsArgs{\n\t\t\t\tGcsBucket: bucket.ID(),\n\t\t\t\tAudioExportPattern: pulumi.String(\"export\"),\n\t\t\t\tEnableAudioRedaction: pulumi.Bool(true),\n\t\t\t\tAudioFormat: pulumi.String(\"OGG\"),\n\t\t\t},\n\t\t\tInsightsExportSettings: \u0026diagflow.CxSecuritySettingsInsightsExportSettingsArgs{\n\t\t\t\tEnableInsightsExport: pulumi.Bool(true),\n\t\t\t},\n\t\t\tRetentionStrategy: pulumi.String(\"REMOVE_AFTER_CONVERSATION\"),\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.PreventionInspectTemplate;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.PreventionDeidentifyTemplate;\nimport com.pulumi.gcp.dataloss.PreventionDeidentifyTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.diagflow.CxSecuritySettings;\nimport com.pulumi.gcp.diagflow.CxSecuritySettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxSecuritySettingsAudioExportSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxSecuritySettingsInsightsExportSettingsArgs;\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 inspect = new PreventionInspectTemplate(\"inspect\", PreventionInspectTemplateArgs.builder()\n .parent(\"projects/my-project-name/locations/global\")\n .displayName(\"dialogflowcx-inspect-template\")\n .inspectConfig(PreventionInspectTemplateInspectConfigArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .build())\n .build());\n\n var deidentify = new PreventionDeidentifyTemplate(\"deidentify\", PreventionDeidentifyTemplateArgs.builder()\n .parent(\"projects/my-project-name/locations/global\")\n .displayName(\"dialogflowcx-deidentify-template\")\n .deidentifyConfig(PreventionDeidentifyTemplateDeidentifyConfigArgs.builder()\n .infoTypeTransformations(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs.builder()\n .transformations(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .replaceConfig(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs.builder()\n .newValue(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs.builder()\n .stringValue(\"[REDACTED]\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"dialogflowcx-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var basicSecuritySettings = new CxSecuritySettings(\"basicSecuritySettings\", CxSecuritySettingsArgs.builder()\n .displayName(\"dialogflowcx-security-settings\")\n .location(\"global\")\n .redactionStrategy(\"REDACT_WITH_SERVICE\")\n .redactionScope(\"REDACT_DISK_STORAGE\")\n .inspectTemplate(inspect.id())\n .deidentifyTemplate(deidentify.id())\n .purgeDataTypes(\"DIALOGFLOW_HISTORY\")\n .audioExportSettings(CxSecuritySettingsAudioExportSettingsArgs.builder()\n .gcsBucket(bucket.id())\n .audioExportPattern(\"export\")\n .enableAudioRedaction(true)\n .audioFormat(\"OGG\")\n .build())\n .insightsExportSettings(CxSecuritySettingsInsightsExportSettingsArgs.builder()\n .enableInsightsExport(true)\n .build())\n .retentionStrategy(\"REMOVE_AFTER_CONVERSATION\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n inspect:\n type: gcp:dataloss:PreventionInspectTemplate\n properties:\n parent: projects/my-project-name/locations/global\n displayName: dialogflowcx-inspect-template\n inspectConfig:\n infoTypes:\n - name: EMAIL_ADDRESS\n deidentify:\n type: gcp:dataloss:PreventionDeidentifyTemplate\n properties:\n parent: projects/my-project-name/locations/global\n displayName: dialogflowcx-deidentify-template\n deidentifyConfig:\n infoTypeTransformations:\n transformations:\n - primitiveTransformation:\n replaceConfig:\n newValue:\n stringValue: '[REDACTED]'\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: dialogflowcx-bucket\n location: US\n uniformBucketLevelAccess: true\n basicSecuritySettings:\n type: gcp:diagflow:CxSecuritySettings\n name: basic_security_settings\n properties:\n displayName: dialogflowcx-security-settings\n location: global\n redactionStrategy: REDACT_WITH_SERVICE\n redactionScope: REDACT_DISK_STORAGE\n inspectTemplate: ${inspect.id}\n deidentifyTemplate: ${deidentify.id}\n purgeDataTypes:\n - DIALOGFLOW_HISTORY\n audioExportSettings:\n gcsBucket: ${bucket.id}\n audioExportPattern: export\n enableAudioRedaction: true\n audioFormat: OGG\n insightsExportSettings:\n enableInsightsExport: true\n retentionStrategy: REMOVE_AFTER_CONVERSATION\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecuritySettings can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/securitySettings/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, SecuritySettings can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxSecuritySettings:CxSecuritySettings default projects/{{project}}/locations/{{location}}/securitySettings/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxSecuritySettings:CxSecuritySettings default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxSecuritySettings:CxSecuritySettings default {{location}}/{{name}}\n```\n\n", + "description": "Represents the settings related to security issues, such as data redaction and data retention. It may take hours for updates on the settings to propagate to all the related components and take effect.\nMultiple security settings can be configured in each location. Each agent can specify the security settings to apply, and each setting can be applied to multiple agents in the same project and location.\n\n\nTo get more information about SecuritySettings, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.securitySettings)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Security Settings Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicSecuritySettings = new gcp.diagflow.CxSecuritySettings(\"basic_security_settings\", {\n displayName: \"dialogflowcx-security-settings\",\n location: \"global\",\n purgeDataTypes: [],\n retentionWindowDays: 7,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_security_settings = gcp.diagflow.CxSecuritySettings(\"basic_security_settings\",\n display_name=\"dialogflowcx-security-settings\",\n location=\"global\",\n purge_data_types=[],\n retention_window_days=7)\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 basicSecuritySettings = new Gcp.Diagflow.CxSecuritySettings(\"basic_security_settings\", new()\n {\n DisplayName = \"dialogflowcx-security-settings\",\n Location = \"global\",\n PurgeDataTypes = new[] {},\n RetentionWindowDays = 7,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\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 := diagflow.NewCxSecuritySettings(ctx, \"basic_security_settings\", \u0026diagflow.CxSecuritySettingsArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-security-settings\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tPurgeDataTypes: pulumi.StringArray{},\n\t\t\tRetentionWindowDays: pulumi.Int(7),\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.diagflow.CxSecuritySettings;\nimport com.pulumi.gcp.diagflow.CxSecuritySettingsArgs;\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 basicSecuritySettings = new CxSecuritySettings(\"basicSecuritySettings\", CxSecuritySettingsArgs.builder()\n .displayName(\"dialogflowcx-security-settings\")\n .location(\"global\")\n .purgeDataTypes()\n .retentionWindowDays(7)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicSecuritySettings:\n type: gcp:diagflow:CxSecuritySettings\n name: basic_security_settings\n properties:\n displayName: dialogflowcx-security-settings\n location: global\n purgeDataTypes: []\n retentionWindowDays: 7\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dialogflowcx Security Settings Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst inspect = new gcp.dataloss.PreventionInspectTemplate(\"inspect\", {\n parent: \"projects/my-project-name/locations/global\",\n displayName: \"dialogflowcx-inspect-template\",\n inspectConfig: {\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n },\n});\nconst deidentify = new gcp.dataloss.PreventionDeidentifyTemplate(\"deidentify\", {\n parent: \"projects/my-project-name/locations/global\",\n displayName: \"dialogflowcx-deidentify-template\",\n deidentifyConfig: {\n infoTypeTransformations: {\n transformations: [{\n primitiveTransformation: {\n replaceConfig: {\n newValue: {\n stringValue: \"[REDACTED]\",\n },\n },\n },\n }],\n },\n },\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"dialogflowcx-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst basicSecuritySettings = new gcp.diagflow.CxSecuritySettings(\"basic_security_settings\", {\n displayName: \"dialogflowcx-security-settings\",\n location: \"global\",\n redactionStrategy: \"REDACT_WITH_SERVICE\",\n redactionScope: \"REDACT_DISK_STORAGE\",\n inspectTemplate: inspect.id,\n deidentifyTemplate: deidentify.id,\n purgeDataTypes: [\"DIALOGFLOW_HISTORY\"],\n audioExportSettings: {\n gcsBucket: bucket.id,\n audioExportPattern: \"export\",\n enableAudioRedaction: true,\n audioFormat: \"OGG\",\n },\n insightsExportSettings: {\n enableInsightsExport: true,\n },\n retentionStrategy: \"REMOVE_AFTER_CONVERSATION\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninspect = gcp.dataloss.PreventionInspectTemplate(\"inspect\",\n parent=\"projects/my-project-name/locations/global\",\n display_name=\"dialogflowcx-inspect-template\",\n inspect_config={\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n })\ndeidentify = gcp.dataloss.PreventionDeidentifyTemplate(\"deidentify\",\n parent=\"projects/my-project-name/locations/global\",\n display_name=\"dialogflowcx-deidentify-template\",\n deidentify_config={\n \"info_type_transformations\": {\n \"transformations\": [{\n \"primitive_transformation\": {\n \"replace_config\": {\n \"new_value\": {\n \"string_value\": \"[REDACTED]\",\n },\n },\n },\n }],\n },\n })\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"dialogflowcx-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nbasic_security_settings = gcp.diagflow.CxSecuritySettings(\"basic_security_settings\",\n display_name=\"dialogflowcx-security-settings\",\n location=\"global\",\n redaction_strategy=\"REDACT_WITH_SERVICE\",\n redaction_scope=\"REDACT_DISK_STORAGE\",\n inspect_template=inspect.id,\n deidentify_template=deidentify.id,\n purge_data_types=[\"DIALOGFLOW_HISTORY\"],\n audio_export_settings={\n \"gcs_bucket\": bucket.id,\n \"audio_export_pattern\": \"export\",\n \"enable_audio_redaction\": True,\n \"audio_format\": \"OGG\",\n },\n insights_export_settings={\n \"enable_insights_export\": True,\n },\n retention_strategy=\"REMOVE_AFTER_CONVERSATION\")\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 inspect = new Gcp.DataLoss.PreventionInspectTemplate(\"inspect\", new()\n {\n Parent = \"projects/my-project-name/locations/global\",\n DisplayName = \"dialogflowcx-inspect-template\",\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n },\n });\n\n var deidentify = new Gcp.DataLoss.PreventionDeidentifyTemplate(\"deidentify\", new()\n {\n Parent = \"projects/my-project-name/locations/global\",\n DisplayName = \"dialogflowcx-deidentify-template\",\n DeidentifyConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs\n {\n InfoTypeTransformations = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs\n {\n Transformations = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n ReplaceConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs\n {\n NewValue = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs\n {\n StringValue = \"[REDACTED]\",\n },\n },\n },\n },\n },\n },\n },\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"dialogflowcx-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var basicSecuritySettings = new Gcp.Diagflow.CxSecuritySettings(\"basic_security_settings\", new()\n {\n DisplayName = \"dialogflowcx-security-settings\",\n Location = \"global\",\n RedactionStrategy = \"REDACT_WITH_SERVICE\",\n RedactionScope = \"REDACT_DISK_STORAGE\",\n InspectTemplate = inspect.Id,\n DeidentifyTemplate = deidentify.Id,\n PurgeDataTypes = new[]\n {\n \"DIALOGFLOW_HISTORY\",\n },\n AudioExportSettings = new Gcp.Diagflow.Inputs.CxSecuritySettingsAudioExportSettingsArgs\n {\n GcsBucket = bucket.Id,\n AudioExportPattern = \"export\",\n EnableAudioRedaction = true,\n AudioFormat = \"OGG\",\n },\n InsightsExportSettings = new Gcp.Diagflow.Inputs.CxSecuritySettingsInsightsExportSettingsArgs\n {\n EnableInsightsExport = true,\n },\n RetentionStrategy = \"REMOVE_AFTER_CONVERSATION\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tinspect, err := dataloss.NewPreventionInspectTemplate(ctx, \"inspect\", \u0026dataloss.PreventionInspectTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name/locations/global\"),\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-inspect-template\"),\n\t\t\tInspectConfig: \u0026dataloss.PreventionInspectTemplateInspectConfigArgs{\n\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\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\tdeidentify, err := dataloss.NewPreventionDeidentifyTemplate(ctx, \"deidentify\", \u0026dataloss.PreventionDeidentifyTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name/locations/global\"),\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-deidentify-template\"),\n\t\t\tDeidentifyConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigArgs{\n\t\t\t\tInfoTypeTransformations: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs{\n\t\t\t\t\tTransformations: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tReplaceConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs{\n\t\t\t\t\t\t\t\t\tNewValue: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs{\n\t\t\t\t\t\t\t\t\t\tStringValue: pulumi.String(\"[REDACTED]\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"dialogflowcx-bucket\"),\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\t_, err = diagflow.NewCxSecuritySettings(ctx, \"basic_security_settings\", \u0026diagflow.CxSecuritySettingsArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-security-settings\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRedactionStrategy: pulumi.String(\"REDACT_WITH_SERVICE\"),\n\t\t\tRedactionScope: pulumi.String(\"REDACT_DISK_STORAGE\"),\n\t\t\tInspectTemplate: inspect.ID(),\n\t\t\tDeidentifyTemplate: deidentify.ID(),\n\t\t\tPurgeDataTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"DIALOGFLOW_HISTORY\"),\n\t\t\t},\n\t\t\tAudioExportSettings: \u0026diagflow.CxSecuritySettingsAudioExportSettingsArgs{\n\t\t\t\tGcsBucket: bucket.ID(),\n\t\t\t\tAudioExportPattern: pulumi.String(\"export\"),\n\t\t\t\tEnableAudioRedaction: pulumi.Bool(true),\n\t\t\t\tAudioFormat: pulumi.String(\"OGG\"),\n\t\t\t},\n\t\t\tInsightsExportSettings: \u0026diagflow.CxSecuritySettingsInsightsExportSettingsArgs{\n\t\t\t\tEnableInsightsExport: pulumi.Bool(true),\n\t\t\t},\n\t\t\tRetentionStrategy: pulumi.String(\"REMOVE_AFTER_CONVERSATION\"),\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.PreventionInspectTemplate;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.PreventionDeidentifyTemplate;\nimport com.pulumi.gcp.dataloss.PreventionDeidentifyTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.diagflow.CxSecuritySettings;\nimport com.pulumi.gcp.diagflow.CxSecuritySettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxSecuritySettingsAudioExportSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxSecuritySettingsInsightsExportSettingsArgs;\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 inspect = new PreventionInspectTemplate(\"inspect\", PreventionInspectTemplateArgs.builder()\n .parent(\"projects/my-project-name/locations/global\")\n .displayName(\"dialogflowcx-inspect-template\")\n .inspectConfig(PreventionInspectTemplateInspectConfigArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .build())\n .build());\n\n var deidentify = new PreventionDeidentifyTemplate(\"deidentify\", PreventionDeidentifyTemplateArgs.builder()\n .parent(\"projects/my-project-name/locations/global\")\n .displayName(\"dialogflowcx-deidentify-template\")\n .deidentifyConfig(PreventionDeidentifyTemplateDeidentifyConfigArgs.builder()\n .infoTypeTransformations(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs.builder()\n .transformations(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .replaceConfig(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs.builder()\n .newValue(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs.builder()\n .stringValue(\"[REDACTED]\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"dialogflowcx-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var basicSecuritySettings = new CxSecuritySettings(\"basicSecuritySettings\", CxSecuritySettingsArgs.builder()\n .displayName(\"dialogflowcx-security-settings\")\n .location(\"global\")\n .redactionStrategy(\"REDACT_WITH_SERVICE\")\n .redactionScope(\"REDACT_DISK_STORAGE\")\n .inspectTemplate(inspect.id())\n .deidentifyTemplate(deidentify.id())\n .purgeDataTypes(\"DIALOGFLOW_HISTORY\")\n .audioExportSettings(CxSecuritySettingsAudioExportSettingsArgs.builder()\n .gcsBucket(bucket.id())\n .audioExportPattern(\"export\")\n .enableAudioRedaction(true)\n .audioFormat(\"OGG\")\n .build())\n .insightsExportSettings(CxSecuritySettingsInsightsExportSettingsArgs.builder()\n .enableInsightsExport(true)\n .build())\n .retentionStrategy(\"REMOVE_AFTER_CONVERSATION\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n inspect:\n type: gcp:dataloss:PreventionInspectTemplate\n properties:\n parent: projects/my-project-name/locations/global\n displayName: dialogflowcx-inspect-template\n inspectConfig:\n infoTypes:\n - name: EMAIL_ADDRESS\n deidentify:\n type: gcp:dataloss:PreventionDeidentifyTemplate\n properties:\n parent: projects/my-project-name/locations/global\n displayName: dialogflowcx-deidentify-template\n deidentifyConfig:\n infoTypeTransformations:\n transformations:\n - primitiveTransformation:\n replaceConfig:\n newValue:\n stringValue: '[REDACTED]'\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: dialogflowcx-bucket\n location: US\n uniformBucketLevelAccess: true\n basicSecuritySettings:\n type: gcp:diagflow:CxSecuritySettings\n name: basic_security_settings\n properties:\n displayName: dialogflowcx-security-settings\n location: global\n redactionStrategy: REDACT_WITH_SERVICE\n redactionScope: REDACT_DISK_STORAGE\n inspectTemplate: ${inspect.id}\n deidentifyTemplate: ${deidentify.id}\n purgeDataTypes:\n - DIALOGFLOW_HISTORY\n audioExportSettings:\n gcsBucket: ${bucket.id}\n audioExportPattern: export\n enableAudioRedaction: true\n audioFormat: OGG\n insightsExportSettings:\n enableInsightsExport: true\n retentionStrategy: REMOVE_AFTER_CONVERSATION\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecuritySettings can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/securitySettings/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, SecuritySettings can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxSecuritySettings:CxSecuritySettings default projects/{{project}}/locations/{{location}}/securitySettings/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxSecuritySettings:CxSecuritySettings default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxSecuritySettings:CxSecuritySettings default {{location}}/{{name}}\n```\n\n", "properties": { "audioExportSettings": { "$ref": "#/types/gcp:diagflow/CxSecuritySettingsAudioExportSettings:CxSecuritySettingsAudioExportSettings", @@ -184911,7 +184911,7 @@ } }, "gcp:diagflow/cxTestCase:CxTestCase": { - "description": "You can use the built-in test feature to uncover bugs and prevent regressions. A test execution verifies that agent responses have not changed for end-user inputs defined in the test case.\n\n\nTo get more information about TestCase, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.testCases)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Test Case Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://storage.cloud.google.com/dialogflow-test-host-image/cloud-logo.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst intent = new gcp.diagflow.CxIntent(\"intent\", {\n parent: agent.id,\n displayName: \"MyIntent\",\n priority: 1,\n trainingPhrases: [{\n parts: [{\n text: \"training phrase\",\n }],\n repeatCount: 1,\n }],\n});\nconst page = new gcp.diagflow.CxPage(\"page\", {\n parent: agent.startFlow,\n displayName: \"MyPage\",\n transitionRoutes: [{\n intent: intent.id,\n triggerFulfillment: {\n messages: [{\n text: {\n texts: [\"Training phrase response\"],\n },\n }],\n },\n }],\n eventHandlers: [{\n event: \"some-event\",\n triggerFulfillment: {\n messages: [{\n text: {\n texts: [\"Handling some event\"],\n },\n }],\n },\n }],\n});\nconst basicTestCase = new gcp.diagflow.CxTestCase(\"basic_test_case\", {\n parent: agent.id,\n displayName: \"MyTestCase\",\n tags: [\"#tag1\"],\n notes: \"demonstrates a simple training phrase response\",\n testConfig: {\n trackingParameters: [\"some_param\"],\n page: page.id,\n },\n testCaseConversationTurns: [\n {\n userInput: {\n input: {\n languageCode: \"en\",\n text: {\n text: \"training phrase\",\n },\n },\n injectedParameters: JSON.stringify({\n some_param: \"1\",\n }),\n isWebhookEnabled: true,\n enableSentimentAnalysis: true,\n },\n virtualAgentOutput: {\n sessionParameters: JSON.stringify({\n some_param: \"1\",\n }),\n triggeredIntent: {\n name: intent.id,\n },\n currentPage: {\n name: page.id,\n },\n textResponses: [{\n texts: [\"Training phrase response\"],\n }],\n },\n },\n {\n userInput: {\n input: {\n event: {\n event: \"some-event\",\n },\n },\n },\n virtualAgentOutput: {\n currentPage: {\n name: page.id,\n },\n textResponses: [{\n texts: [\"Handling some event\"],\n }],\n },\n },\n {\n userInput: {\n input: {\n dtmf: {\n digits: \"12\",\n finishDigit: \"3\",\n },\n },\n },\n virtualAgentOutput: {\n textResponses: [{\n texts: [\"I didn't get that. Can you say it again?\"],\n }],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://storage.cloud.google.com/dialogflow-test-host-image/cloud-logo.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enableSpeechAdaptation\": True,\n })\nintent = gcp.diagflow.CxIntent(\"intent\",\n parent=agent.id,\n display_name=\"MyIntent\",\n priority=1,\n training_phrases=[{\n \"parts\": [{\n \"text\": \"training phrase\",\n }],\n \"repeatCount\": 1,\n }])\npage = gcp.diagflow.CxPage(\"page\",\n parent=agent.start_flow,\n display_name=\"MyPage\",\n transition_routes=[{\n \"intent\": intent.id,\n \"triggerFulfillment\": {\n \"messages\": [{\n \"text\": {\n \"texts\": [\"Training phrase response\"],\n },\n }],\n },\n }],\n event_handlers=[{\n \"event\": \"some-event\",\n \"triggerFulfillment\": {\n \"messages\": [{\n \"text\": {\n \"texts\": [\"Handling some event\"],\n },\n }],\n },\n }])\nbasic_test_case = gcp.diagflow.CxTestCase(\"basic_test_case\",\n parent=agent.id,\n display_name=\"MyTestCase\",\n tags=[\"#tag1\"],\n notes=\"demonstrates a simple training phrase response\",\n test_config={\n \"trackingParameters\": [\"some_param\"],\n \"page\": page.id,\n },\n test_case_conversation_turns=[\n {\n \"userInput\": {\n \"input\": {\n \"languageCode\": \"en\",\n \"text\": {\n \"text\": \"training phrase\",\n },\n },\n \"injectedParameters\": json.dumps({\n \"some_param\": \"1\",\n }),\n \"isWebhookEnabled\": True,\n \"enableSentimentAnalysis\": True,\n },\n \"virtualAgentOutput\": {\n \"sessionParameters\": json.dumps({\n \"some_param\": \"1\",\n }),\n \"triggeredIntent\": {\n \"name\": intent.id,\n },\n \"currentPage\": {\n \"name\": page.id,\n },\n \"textResponses\": [{\n \"texts\": [\"Training phrase response\"],\n }],\n },\n },\n {\n \"userInput\": {\n \"input\": {\n \"event\": {\n \"event\": \"some-event\",\n },\n },\n },\n \"virtualAgentOutput\": {\n \"currentPage\": {\n \"name\": page.id,\n },\n \"textResponses\": [{\n \"texts\": [\"Handling some event\"],\n }],\n },\n },\n {\n \"userInput\": {\n \"input\": {\n \"dtmf\": {\n \"digits\": \"12\",\n \"finishDigit\": \"3\",\n },\n },\n },\n \"virtualAgentOutput\": {\n \"textResponses\": [{\n \"texts\": [\"I didn't get that. Can you say it again?\"],\n }],\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://storage.cloud.google.com/dialogflow-test-host-image/cloud-logo.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var intent = new Gcp.Diagflow.CxIntent(\"intent\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyIntent\",\n Priority = 1,\n TrainingPhrases = new[]\n {\n new Gcp.Diagflow.Inputs.CxIntentTrainingPhraseArgs\n {\n Parts = new[]\n {\n new Gcp.Diagflow.Inputs.CxIntentTrainingPhrasePartArgs\n {\n Text = \"training phrase\",\n },\n },\n RepeatCount = 1,\n },\n },\n });\n\n var page = new Gcp.Diagflow.CxPage(\"page\", new()\n {\n Parent = agent.StartFlow,\n DisplayName = \"MyPage\",\n TransitionRoutes = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteArgs\n {\n Intent = intent.Id,\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Training phrase response\",\n },\n },\n },\n },\n },\n },\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerArgs\n {\n Event = \"some-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Handling some event\",\n },\n },\n },\n },\n },\n },\n },\n });\n\n var basicTestCase = new Gcp.Diagflow.CxTestCase(\"basic_test_case\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyTestCase\",\n Tags = new[]\n {\n \"#tag1\",\n },\n Notes = \"demonstrates a simple training phrase response\",\n TestConfig = new Gcp.Diagflow.Inputs.CxTestCaseTestConfigArgs\n {\n TrackingParameters = new[]\n {\n \"some_param\",\n },\n Page = page.Id,\n },\n TestCaseConversationTurns = new[]\n {\n new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnArgs\n {\n UserInput = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnUserInputArgs\n {\n Input = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnUserInputInputArgs\n {\n LanguageCode = \"en\",\n Text = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnUserInputInputTextArgs\n {\n Text = \"training phrase\",\n },\n },\n InjectedParameters = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"some_param\"] = \"1\",\n }),\n IsWebhookEnabled = true,\n EnableSentimentAnalysis = true,\n },\n VirtualAgentOutput = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs\n {\n SessionParameters = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"some_param\"] = \"1\",\n }),\n TriggeredIntent = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTriggeredIntentArgs\n {\n Name = intent.Id,\n },\n CurrentPage = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputCurrentPageArgs\n {\n Name = page.Id,\n },\n TextResponses = new[]\n {\n new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArgs\n {\n Texts = new[]\n {\n \"Training phrase response\",\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnArgs\n {\n UserInput = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnUserInputArgs\n {\n Input = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnUserInputInputArgs\n {\n Event = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnUserInputInputEventArgs\n {\n Event = \"some-event\",\n },\n },\n },\n VirtualAgentOutput = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs\n {\n CurrentPage = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputCurrentPageArgs\n {\n Name = page.Id,\n },\n TextResponses = new[]\n {\n new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArgs\n {\n Texts = new[]\n {\n \"Handling some event\",\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnArgs\n {\n UserInput = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnUserInputArgs\n {\n Input = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnUserInputInputArgs\n {\n Dtmf = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnUserInputInputDtmfArgs\n {\n Digits = \"12\",\n FinishDigit = \"3\",\n },\n },\n },\n VirtualAgentOutput = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs\n {\n TextResponses = new[]\n {\n new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArgs\n {\n Texts = new[]\n {\n \"I didn't get that. Can you say it again?\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://storage.cloud.google.com/dialogflow-test-host-image/cloud-logo.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: 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\tintent, err := diagflow.NewCxIntent(ctx, \"intent\", \u0026diagflow.CxIntentArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyIntent\"),\n\t\t\tPriority: pulumi.Int(1),\n\t\t\tTrainingPhrases: diagflow.CxIntentTrainingPhraseArray{\n\t\t\t\t\u0026diagflow.CxIntentTrainingPhraseArgs{\n\t\t\t\t\tParts: diagflow.CxIntentTrainingPhrasePartArray{\n\t\t\t\t\t\t\u0026diagflow.CxIntentTrainingPhrasePartArgs{\n\t\t\t\t\t\t\tText: pulumi.String(\"training phrase\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tRepeatCount: pulumi.Int(1),\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\tpage, err := diagflow.NewCxPage(ctx, \"page\", \u0026diagflow.CxPageArgs{\n\t\t\tParent: agent.StartFlow,\n\t\t\tDisplayName: pulumi.String(\"MyPage\"),\n\t\t\tTransitionRoutes: diagflow.CxPageTransitionRouteArray{\n\t\t\t\t\u0026diagflow.CxPageTransitionRouteArgs{\n\t\t\t\t\tIntent: intent.ID(),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentArgs{\n\t\t\t\t\t\tMessages: diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Training phrase response\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tEventHandlers: diagflow.CxPageEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxPageEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"some-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tMessages: diagflow.CxPageEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Handling some event\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"some_param\": \"1\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"some_param\": \"1\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\t_, err = diagflow.NewCxTestCase(ctx, \"basic_test_case\", \u0026diagflow.CxTestCaseArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyTestCase\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"#tag1\"),\n\t\t\t},\n\t\t\tNotes: pulumi.String(\"demonstrates a simple training phrase response\"),\n\t\t\tTestConfig: \u0026diagflow.CxTestCaseTestConfigArgs{\n\t\t\t\tTrackingParameters: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"some_param\"),\n\t\t\t\t},\n\t\t\t\tPage: page.ID(),\n\t\t\t},\n\t\t\tTestCaseConversationTurns: diagflow.CxTestCaseTestCaseConversationTurnArray{\n\t\t\t\t\u0026diagflow.CxTestCaseTestCaseConversationTurnArgs{\n\t\t\t\t\tUserInput: \u0026diagflow.CxTestCaseTestCaseConversationTurnUserInputArgs{\n\t\t\t\t\t\tInput: \u0026diagflow.CxTestCaseTestCaseConversationTurnUserInputInputTypeArgs{\n\t\t\t\t\t\t\tLanguageCode: pulumi.String(\"en\"),\n\t\t\t\t\t\t\tText: \u0026diagflow.CxTestCaseTestCaseConversationTurnUserInputInputTextArgs{\n\t\t\t\t\t\t\t\tText: pulumi.String(\"training phrase\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tInjectedParameters: pulumi.String(json0),\n\t\t\t\t\t\tIsWebhookEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tEnableSentimentAnalysis: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tVirtualAgentOutput: diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs{\n\t\t\t\t\t\tSessionParameters: pulumi.String(json1),\n\t\t\t\t\t\tTriggeredIntent: \u0026diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTriggeredIntentArgs{\n\t\t\t\t\t\t\tName: intent.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCurrentPage: \u0026diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputCurrentPageArgs{\n\t\t\t\t\t\t\tName: page.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTextResponses: diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArgs{\n\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"Training phrase response\"),\n\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxTestCaseTestCaseConversationTurnArgs{\n\t\t\t\t\tUserInput: \u0026diagflow.CxTestCaseTestCaseConversationTurnUserInputArgs{\n\t\t\t\t\t\tInput: \u0026diagflow.CxTestCaseTestCaseConversationTurnUserInputInputTypeArgs{\n\t\t\t\t\t\t\tEvent: \u0026diagflow.CxTestCaseTestCaseConversationTurnUserInputInputEventArgs{\n\t\t\t\t\t\t\t\tEvent: pulumi.String(\"some-event\"),\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\tVirtualAgentOutput: diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs{\n\t\t\t\t\t\tCurrentPage: \u0026diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputCurrentPageArgs{\n\t\t\t\t\t\t\tName: page.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTextResponses: diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArgs{\n\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"Handling some event\"),\n\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxTestCaseTestCaseConversationTurnArgs{\n\t\t\t\t\tUserInput: \u0026diagflow.CxTestCaseTestCaseConversationTurnUserInputArgs{\n\t\t\t\t\t\tInput: \u0026diagflow.CxTestCaseTestCaseConversationTurnUserInputInputTypeArgs{\n\t\t\t\t\t\t\tDtmf: \u0026diagflow.CxTestCaseTestCaseConversationTurnUserInputInputDtmfArgs{\n\t\t\t\t\t\t\t\tDigits: pulumi.String(\"12\"),\n\t\t\t\t\t\t\t\tFinishDigit: pulumi.String(\"3\"),\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\tVirtualAgentOutput: diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs{\n\t\t\t\t\t\tTextResponses: diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArgs{\n\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"I didn't get that. Can you say it again?\"),\n\t\t\t\t\t\t\t\t},\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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxIntent;\nimport com.pulumi.gcp.diagflow.CxIntentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxIntentTrainingPhraseArgs;\nimport com.pulumi.gcp.diagflow.CxPage;\nimport com.pulumi.gcp.diagflow.CxPageArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageTransitionRouteArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageTransitionRouteTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEventHandlerTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.CxTestCase;\nimport com.pulumi.gcp.diagflow.CxTestCaseArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestConfigArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestCaseConversationTurnArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestCaseConversationTurnUserInputArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestCaseConversationTurnUserInputInputArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestCaseConversationTurnUserInputInputTextArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTriggeredIntentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputCurrentPageArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestCaseConversationTurnUserInputInputEventArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestCaseConversationTurnUserInputInputDtmfArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://storage.cloud.google.com/dialogflow-test-host-image/cloud-logo.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var intent = new CxIntent(\"intent\", CxIntentArgs.builder()\n .parent(agent.id())\n .displayName(\"MyIntent\")\n .priority(1)\n .trainingPhrases(CxIntentTrainingPhraseArgs.builder()\n .parts(CxIntentTrainingPhrasePartArgs.builder()\n .text(\"training phrase\")\n .build())\n .repeatCount(1)\n .build())\n .build());\n\n var page = new CxPage(\"page\", CxPageArgs.builder()\n .parent(agent.startFlow())\n .displayName(\"MyPage\")\n .transitionRoutes(CxPageTransitionRouteArgs.builder()\n .intent(intent.id())\n .triggerFulfillment(CxPageTransitionRouteTriggerFulfillmentArgs.builder()\n .messages(CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .text(CxPageTransitionRouteTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Training phrase response\")\n .build())\n .build())\n .build())\n .build())\n .eventHandlers(CxPageEventHandlerArgs.builder()\n .event(\"some-event\")\n .triggerFulfillment(CxPageEventHandlerTriggerFulfillmentArgs.builder()\n .messages(CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxPageEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Handling some event\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var basicTestCase = new CxTestCase(\"basicTestCase\", CxTestCaseArgs.builder()\n .parent(agent.id())\n .displayName(\"MyTestCase\")\n .tags(\"#tag1\")\n .notes(\"demonstrates a simple training phrase response\")\n .testConfig(CxTestCaseTestConfigArgs.builder()\n .trackingParameters(\"some_param\")\n .page(page.id())\n .build())\n .testCaseConversationTurns( \n CxTestCaseTestCaseConversationTurnArgs.builder()\n .userInput(CxTestCaseTestCaseConversationTurnUserInputArgs.builder()\n .input(CxTestCaseTestCaseConversationTurnUserInputInputArgs.builder()\n .languageCode(\"en\")\n .text(CxTestCaseTestCaseConversationTurnUserInputInputTextArgs.builder()\n .text(\"training phrase\")\n .build())\n .build())\n .injectedParameters(serializeJson(\n jsonObject(\n jsonProperty(\"some_param\", \"1\")\n )))\n .isWebhookEnabled(true)\n .enableSentimentAnalysis(true)\n .build())\n .virtualAgentOutput(CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs.builder()\n .sessionParameters(serializeJson(\n jsonObject(\n jsonProperty(\"some_param\", \"1\")\n )))\n .triggeredIntent(CxTestCaseTestCaseConversationTurnVirtualAgentOutputTriggeredIntentArgs.builder()\n .name(intent.id())\n .build())\n .currentPage(CxTestCaseTestCaseConversationTurnVirtualAgentOutputCurrentPageArgs.builder()\n .name(page.id())\n .build())\n .textResponses(CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArgs.builder()\n .texts(\"Training phrase response\")\n .build())\n .build())\n .build(),\n CxTestCaseTestCaseConversationTurnArgs.builder()\n .userInput(CxTestCaseTestCaseConversationTurnUserInputArgs.builder()\n .input(CxTestCaseTestCaseConversationTurnUserInputInputArgs.builder()\n .event(CxTestCaseTestCaseConversationTurnUserInputInputEventArgs.builder()\n .event(\"some-event\")\n .build())\n .build())\n .build())\n .virtualAgentOutput(CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs.builder()\n .currentPage(CxTestCaseTestCaseConversationTurnVirtualAgentOutputCurrentPageArgs.builder()\n .name(page.id())\n .build())\n .textResponses(CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArgs.builder()\n .texts(\"Handling some event\")\n .build())\n .build())\n .build(),\n CxTestCaseTestCaseConversationTurnArgs.builder()\n .userInput(CxTestCaseTestCaseConversationTurnUserInputArgs.builder()\n .input(CxTestCaseTestCaseConversationTurnUserInputInputArgs.builder()\n .dtmf(CxTestCaseTestCaseConversationTurnUserInputInputDtmfArgs.builder()\n .digits(\"12\")\n .finishDigit(\"3\")\n .build())\n .build())\n .build())\n .virtualAgentOutput(CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs.builder()\n .textResponses(CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArgs.builder()\n .texts(\"I didn't get that. Can you say it again?\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://storage.cloud.google.com/dialogflow-test-host-image/cloud-logo.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n page:\n type: gcp:diagflow:CxPage\n properties:\n parent: ${agent.startFlow}\n displayName: MyPage\n transitionRoutes:\n - intent: ${intent.id}\n triggerFulfillment:\n messages:\n - text:\n texts:\n - Training phrase response\n eventHandlers:\n - event: some-event\n triggerFulfillment:\n messages:\n - text:\n texts:\n - Handling some event\n intent:\n type: gcp:diagflow:CxIntent\n properties:\n parent: ${agent.id}\n displayName: MyIntent\n priority: 1\n trainingPhrases:\n - parts:\n - text: training phrase\n repeatCount: 1\n basicTestCase:\n type: gcp:diagflow:CxTestCase\n name: basic_test_case\n properties:\n parent: ${agent.id}\n displayName: MyTestCase\n tags:\n - '#tag1'\n notes: demonstrates a simple training phrase response\n testConfig:\n trackingParameters:\n - some_param\n page: ${page.id}\n testCaseConversationTurns:\n - userInput:\n input:\n languageCode: en\n text:\n text: training phrase\n injectedParameters:\n fn::toJSON:\n some_param: '1'\n isWebhookEnabled: true\n enableSentimentAnalysis: true\n virtualAgentOutput:\n sessionParameters:\n fn::toJSON:\n some_param: '1'\n triggeredIntent:\n name: ${intent.id}\n currentPage:\n name: ${page.id}\n textResponses:\n - texts:\n - Training phrase response\n - userInput:\n input:\n event:\n event: some-event\n virtualAgentOutput:\n currentPage:\n name: ${page.id}\n textResponses:\n - texts:\n - Handling some event\n - userInput:\n input:\n dtmf:\n digits: '12'\n finishDigit: '3'\n virtualAgentOutput:\n textResponses:\n - texts:\n - I didn't get that. Can you say it again?\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTestCase can be imported using any of these accepted formats:\n\n* `{{parent}}/testCases/{{name}}`\n\nWhen using the `pulumi import` command, TestCase can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxTestCase:CxTestCase default {{parent}}/testCases/{{name}}\n```\n\n", + "description": "You can use the built-in test feature to uncover bugs and prevent regressions. A test execution verifies that agent responses have not changed for end-user inputs defined in the test case.\n\n\nTo get more information about TestCase, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.testCases)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Test Case Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://storage.cloud.google.com/dialogflow-test-host-image/cloud-logo.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst intent = new gcp.diagflow.CxIntent(\"intent\", {\n parent: agent.id,\n displayName: \"MyIntent\",\n priority: 1,\n trainingPhrases: [{\n parts: [{\n text: \"training phrase\",\n }],\n repeatCount: 1,\n }],\n});\nconst page = new gcp.diagflow.CxPage(\"page\", {\n parent: agent.startFlow,\n displayName: \"MyPage\",\n transitionRoutes: [{\n intent: intent.id,\n triggerFulfillment: {\n messages: [{\n text: {\n texts: [\"Training phrase response\"],\n },\n }],\n },\n }],\n eventHandlers: [{\n event: \"some-event\",\n triggerFulfillment: {\n messages: [{\n text: {\n texts: [\"Handling some event\"],\n },\n }],\n },\n }],\n});\nconst basicTestCase = new gcp.diagflow.CxTestCase(\"basic_test_case\", {\n parent: agent.id,\n displayName: \"MyTestCase\",\n tags: [\"#tag1\"],\n notes: \"demonstrates a simple training phrase response\",\n testConfig: {\n trackingParameters: [\"some_param\"],\n page: page.id,\n },\n testCaseConversationTurns: [\n {\n userInput: {\n input: {\n languageCode: \"en\",\n text: {\n text: \"training phrase\",\n },\n },\n injectedParameters: JSON.stringify({\n some_param: \"1\",\n }),\n isWebhookEnabled: true,\n enableSentimentAnalysis: true,\n },\n virtualAgentOutput: {\n sessionParameters: JSON.stringify({\n some_param: \"1\",\n }),\n triggeredIntent: {\n name: intent.id,\n },\n currentPage: {\n name: page.id,\n },\n textResponses: [{\n texts: [\"Training phrase response\"],\n }],\n },\n },\n {\n userInput: {\n input: {\n event: {\n event: \"some-event\",\n },\n },\n },\n virtualAgentOutput: {\n currentPage: {\n name: page.id,\n },\n textResponses: [{\n texts: [\"Handling some event\"],\n }],\n },\n },\n {\n userInput: {\n input: {\n dtmf: {\n digits: \"12\",\n finishDigit: \"3\",\n },\n },\n },\n virtualAgentOutput: {\n textResponses: [{\n texts: [\"I didn't get that. Can you say it again?\"],\n }],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://storage.cloud.google.com/dialogflow-test-host-image/cloud-logo.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nintent = gcp.diagflow.CxIntent(\"intent\",\n parent=agent.id,\n display_name=\"MyIntent\",\n priority=1,\n training_phrases=[{\n \"parts\": [{\n \"text\": \"training phrase\",\n }],\n \"repeat_count\": 1,\n }])\npage = gcp.diagflow.CxPage(\"page\",\n parent=agent.start_flow,\n display_name=\"MyPage\",\n transition_routes=[{\n \"intent\": intent.id,\n \"trigger_fulfillment\": {\n \"messages\": [{\n \"text\": {\n \"texts\": [\"Training phrase response\"],\n },\n }],\n },\n }],\n event_handlers=[{\n \"event\": \"some-event\",\n \"trigger_fulfillment\": {\n \"messages\": [{\n \"text\": {\n \"texts\": [\"Handling some event\"],\n },\n }],\n },\n }])\nbasic_test_case = gcp.diagflow.CxTestCase(\"basic_test_case\",\n parent=agent.id,\n display_name=\"MyTestCase\",\n tags=[\"#tag1\"],\n notes=\"demonstrates a simple training phrase response\",\n test_config={\n \"tracking_parameters\": [\"some_param\"],\n \"page\": page.id,\n },\n test_case_conversation_turns=[\n {\n \"user_input\": {\n \"input\": {\n \"language_code\": \"en\",\n \"text\": {\n \"text\": \"training phrase\",\n },\n },\n \"injected_parameters\": json.dumps({\n \"some_param\": \"1\",\n }),\n \"is_webhook_enabled\": True,\n \"enable_sentiment_analysis\": True,\n },\n \"virtual_agent_output\": {\n \"session_parameters\": json.dumps({\n \"some_param\": \"1\",\n }),\n \"triggered_intent\": {\n \"name\": intent.id,\n },\n \"current_page\": {\n \"name\": page.id,\n },\n \"text_responses\": [{\n \"texts\": [\"Training phrase response\"],\n }],\n },\n },\n {\n \"user_input\": {\n \"input\": {\n \"event\": {\n \"event\": \"some-event\",\n },\n },\n },\n \"virtual_agent_output\": {\n \"current_page\": {\n \"name\": page.id,\n },\n \"text_responses\": [{\n \"texts\": [\"Handling some event\"],\n }],\n },\n },\n {\n \"user_input\": {\n \"input\": {\n \"dtmf\": {\n \"digits\": \"12\",\n \"finish_digit\": \"3\",\n },\n },\n },\n \"virtual_agent_output\": {\n \"text_responses\": [{\n \"texts\": [\"I didn't get that. Can you say it again?\"],\n }],\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://storage.cloud.google.com/dialogflow-test-host-image/cloud-logo.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var intent = new Gcp.Diagflow.CxIntent(\"intent\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyIntent\",\n Priority = 1,\n TrainingPhrases = new[]\n {\n new Gcp.Diagflow.Inputs.CxIntentTrainingPhraseArgs\n {\n Parts = new[]\n {\n new Gcp.Diagflow.Inputs.CxIntentTrainingPhrasePartArgs\n {\n Text = \"training phrase\",\n },\n },\n RepeatCount = 1,\n },\n },\n });\n\n var page = new Gcp.Diagflow.CxPage(\"page\", new()\n {\n Parent = agent.StartFlow,\n DisplayName = \"MyPage\",\n TransitionRoutes = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteArgs\n {\n Intent = intent.Id,\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Training phrase response\",\n },\n },\n },\n },\n },\n },\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerArgs\n {\n Event = \"some-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Handling some event\",\n },\n },\n },\n },\n },\n },\n },\n });\n\n var basicTestCase = new Gcp.Diagflow.CxTestCase(\"basic_test_case\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyTestCase\",\n Tags = new[]\n {\n \"#tag1\",\n },\n Notes = \"demonstrates a simple training phrase response\",\n TestConfig = new Gcp.Diagflow.Inputs.CxTestCaseTestConfigArgs\n {\n TrackingParameters = new[]\n {\n \"some_param\",\n },\n Page = page.Id,\n },\n TestCaseConversationTurns = new[]\n {\n new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnArgs\n {\n UserInput = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnUserInputArgs\n {\n Input = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnUserInputInputArgs\n {\n LanguageCode = \"en\",\n Text = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnUserInputInputTextArgs\n {\n Text = \"training phrase\",\n },\n },\n InjectedParameters = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"some_param\"] = \"1\",\n }),\n IsWebhookEnabled = true,\n EnableSentimentAnalysis = true,\n },\n VirtualAgentOutput = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs\n {\n SessionParameters = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"some_param\"] = \"1\",\n }),\n TriggeredIntent = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTriggeredIntentArgs\n {\n Name = intent.Id,\n },\n CurrentPage = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputCurrentPageArgs\n {\n Name = page.Id,\n },\n TextResponses = new[]\n {\n new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArgs\n {\n Texts = new[]\n {\n \"Training phrase response\",\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnArgs\n {\n UserInput = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnUserInputArgs\n {\n Input = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnUserInputInputArgs\n {\n Event = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnUserInputInputEventArgs\n {\n Event = \"some-event\",\n },\n },\n },\n VirtualAgentOutput = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs\n {\n CurrentPage = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputCurrentPageArgs\n {\n Name = page.Id,\n },\n TextResponses = new[]\n {\n new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArgs\n {\n Texts = new[]\n {\n \"Handling some event\",\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnArgs\n {\n UserInput = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnUserInputArgs\n {\n Input = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnUserInputInputArgs\n {\n Dtmf = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnUserInputInputDtmfArgs\n {\n Digits = \"12\",\n FinishDigit = \"3\",\n },\n },\n },\n VirtualAgentOutput = new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs\n {\n TextResponses = new[]\n {\n new Gcp.Diagflow.Inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArgs\n {\n Texts = new[]\n {\n \"I didn't get that. Can you say it again?\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://storage.cloud.google.com/dialogflow-test-host-image/cloud-logo.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: 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\tintent, err := diagflow.NewCxIntent(ctx, \"intent\", \u0026diagflow.CxIntentArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyIntent\"),\n\t\t\tPriority: pulumi.Int(1),\n\t\t\tTrainingPhrases: diagflow.CxIntentTrainingPhraseArray{\n\t\t\t\t\u0026diagflow.CxIntentTrainingPhraseArgs{\n\t\t\t\t\tParts: diagflow.CxIntentTrainingPhrasePartArray{\n\t\t\t\t\t\t\u0026diagflow.CxIntentTrainingPhrasePartArgs{\n\t\t\t\t\t\t\tText: pulumi.String(\"training phrase\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tRepeatCount: pulumi.Int(1),\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\tpage, err := diagflow.NewCxPage(ctx, \"page\", \u0026diagflow.CxPageArgs{\n\t\t\tParent: agent.StartFlow,\n\t\t\tDisplayName: pulumi.String(\"MyPage\"),\n\t\t\tTransitionRoutes: diagflow.CxPageTransitionRouteArray{\n\t\t\t\t\u0026diagflow.CxPageTransitionRouteArgs{\n\t\t\t\t\tIntent: intent.ID(),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentArgs{\n\t\t\t\t\t\tMessages: diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Training phrase response\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tEventHandlers: diagflow.CxPageEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxPageEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"some-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tMessages: diagflow.CxPageEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Handling some event\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"some_param\": \"1\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"some_param\": \"1\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\t_, err = diagflow.NewCxTestCase(ctx, \"basic_test_case\", \u0026diagflow.CxTestCaseArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyTestCase\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"#tag1\"),\n\t\t\t},\n\t\t\tNotes: pulumi.String(\"demonstrates a simple training phrase response\"),\n\t\t\tTestConfig: \u0026diagflow.CxTestCaseTestConfigArgs{\n\t\t\t\tTrackingParameters: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"some_param\"),\n\t\t\t\t},\n\t\t\t\tPage: page.ID(),\n\t\t\t},\n\t\t\tTestCaseConversationTurns: diagflow.CxTestCaseTestCaseConversationTurnArray{\n\t\t\t\t\u0026diagflow.CxTestCaseTestCaseConversationTurnArgs{\n\t\t\t\t\tUserInput: \u0026diagflow.CxTestCaseTestCaseConversationTurnUserInputArgs{\n\t\t\t\t\t\tInput: \u0026diagflow.CxTestCaseTestCaseConversationTurnUserInputInputTypeArgs{\n\t\t\t\t\t\t\tLanguageCode: pulumi.String(\"en\"),\n\t\t\t\t\t\t\tText: \u0026diagflow.CxTestCaseTestCaseConversationTurnUserInputInputTextArgs{\n\t\t\t\t\t\t\t\tText: pulumi.String(\"training phrase\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tInjectedParameters: pulumi.String(json0),\n\t\t\t\t\t\tIsWebhookEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tEnableSentimentAnalysis: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tVirtualAgentOutput: diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs{\n\t\t\t\t\t\tSessionParameters: pulumi.String(json1),\n\t\t\t\t\t\tTriggeredIntent: \u0026diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTriggeredIntentArgs{\n\t\t\t\t\t\t\tName: intent.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCurrentPage: \u0026diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputCurrentPageArgs{\n\t\t\t\t\t\t\tName: page.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTextResponses: diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArgs{\n\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"Training phrase response\"),\n\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxTestCaseTestCaseConversationTurnArgs{\n\t\t\t\t\tUserInput: \u0026diagflow.CxTestCaseTestCaseConversationTurnUserInputArgs{\n\t\t\t\t\t\tInput: \u0026diagflow.CxTestCaseTestCaseConversationTurnUserInputInputTypeArgs{\n\t\t\t\t\t\t\tEvent: \u0026diagflow.CxTestCaseTestCaseConversationTurnUserInputInputEventArgs{\n\t\t\t\t\t\t\t\tEvent: pulumi.String(\"some-event\"),\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\tVirtualAgentOutput: diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs{\n\t\t\t\t\t\tCurrentPage: \u0026diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputCurrentPageArgs{\n\t\t\t\t\t\t\tName: page.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTextResponses: diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArgs{\n\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"Handling some event\"),\n\t\t\t\t\t\t\t\t},\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\t\u0026diagflow.CxTestCaseTestCaseConversationTurnArgs{\n\t\t\t\t\tUserInput: \u0026diagflow.CxTestCaseTestCaseConversationTurnUserInputArgs{\n\t\t\t\t\t\tInput: \u0026diagflow.CxTestCaseTestCaseConversationTurnUserInputInputTypeArgs{\n\t\t\t\t\t\t\tDtmf: \u0026diagflow.CxTestCaseTestCaseConversationTurnUserInputInputDtmfArgs{\n\t\t\t\t\t\t\t\tDigits: pulumi.String(\"12\"),\n\t\t\t\t\t\t\t\tFinishDigit: pulumi.String(\"3\"),\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\tVirtualAgentOutput: diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs{\n\t\t\t\t\t\tTextResponses: diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArgs{\n\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"I didn't get that. Can you say it again?\"),\n\t\t\t\t\t\t\t\t},\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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxIntent;\nimport com.pulumi.gcp.diagflow.CxIntentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxIntentTrainingPhraseArgs;\nimport com.pulumi.gcp.diagflow.CxPage;\nimport com.pulumi.gcp.diagflow.CxPageArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageTransitionRouteArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageTransitionRouteTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEventHandlerTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.CxTestCase;\nimport com.pulumi.gcp.diagflow.CxTestCaseArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestConfigArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestCaseConversationTurnArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestCaseConversationTurnUserInputArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestCaseConversationTurnUserInputInputArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestCaseConversationTurnUserInputInputTextArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputTriggeredIntentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestCaseConversationTurnVirtualAgentOutputCurrentPageArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestCaseConversationTurnUserInputInputEventArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxTestCaseTestCaseConversationTurnUserInputInputDtmfArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://storage.cloud.google.com/dialogflow-test-host-image/cloud-logo.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var intent = new CxIntent(\"intent\", CxIntentArgs.builder()\n .parent(agent.id())\n .displayName(\"MyIntent\")\n .priority(1)\n .trainingPhrases(CxIntentTrainingPhraseArgs.builder()\n .parts(CxIntentTrainingPhrasePartArgs.builder()\n .text(\"training phrase\")\n .build())\n .repeatCount(1)\n .build())\n .build());\n\n var page = new CxPage(\"page\", CxPageArgs.builder()\n .parent(agent.startFlow())\n .displayName(\"MyPage\")\n .transitionRoutes(CxPageTransitionRouteArgs.builder()\n .intent(intent.id())\n .triggerFulfillment(CxPageTransitionRouteTriggerFulfillmentArgs.builder()\n .messages(CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .text(CxPageTransitionRouteTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Training phrase response\")\n .build())\n .build())\n .build())\n .build())\n .eventHandlers(CxPageEventHandlerArgs.builder()\n .event(\"some-event\")\n .triggerFulfillment(CxPageEventHandlerTriggerFulfillmentArgs.builder()\n .messages(CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxPageEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Handling some event\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var basicTestCase = new CxTestCase(\"basicTestCase\", CxTestCaseArgs.builder()\n .parent(agent.id())\n .displayName(\"MyTestCase\")\n .tags(\"#tag1\")\n .notes(\"demonstrates a simple training phrase response\")\n .testConfig(CxTestCaseTestConfigArgs.builder()\n .trackingParameters(\"some_param\")\n .page(page.id())\n .build())\n .testCaseConversationTurns( \n CxTestCaseTestCaseConversationTurnArgs.builder()\n .userInput(CxTestCaseTestCaseConversationTurnUserInputArgs.builder()\n .input(CxTestCaseTestCaseConversationTurnUserInputInputArgs.builder()\n .languageCode(\"en\")\n .text(CxTestCaseTestCaseConversationTurnUserInputInputTextArgs.builder()\n .text(\"training phrase\")\n .build())\n .build())\n .injectedParameters(serializeJson(\n jsonObject(\n jsonProperty(\"some_param\", \"1\")\n )))\n .isWebhookEnabled(true)\n .enableSentimentAnalysis(true)\n .build())\n .virtualAgentOutput(CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs.builder()\n .sessionParameters(serializeJson(\n jsonObject(\n jsonProperty(\"some_param\", \"1\")\n )))\n .triggeredIntent(CxTestCaseTestCaseConversationTurnVirtualAgentOutputTriggeredIntentArgs.builder()\n .name(intent.id())\n .build())\n .currentPage(CxTestCaseTestCaseConversationTurnVirtualAgentOutputCurrentPageArgs.builder()\n .name(page.id())\n .build())\n .textResponses(CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArgs.builder()\n .texts(\"Training phrase response\")\n .build())\n .build())\n .build(),\n CxTestCaseTestCaseConversationTurnArgs.builder()\n .userInput(CxTestCaseTestCaseConversationTurnUserInputArgs.builder()\n .input(CxTestCaseTestCaseConversationTurnUserInputInputArgs.builder()\n .event(CxTestCaseTestCaseConversationTurnUserInputInputEventArgs.builder()\n .event(\"some-event\")\n .build())\n .build())\n .build())\n .virtualAgentOutput(CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs.builder()\n .currentPage(CxTestCaseTestCaseConversationTurnVirtualAgentOutputCurrentPageArgs.builder()\n .name(page.id())\n .build())\n .textResponses(CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArgs.builder()\n .texts(\"Handling some event\")\n .build())\n .build())\n .build(),\n CxTestCaseTestCaseConversationTurnArgs.builder()\n .userInput(CxTestCaseTestCaseConversationTurnUserInputArgs.builder()\n .input(CxTestCaseTestCaseConversationTurnUserInputInputArgs.builder()\n .dtmf(CxTestCaseTestCaseConversationTurnUserInputInputDtmfArgs.builder()\n .digits(\"12\")\n .finishDigit(\"3\")\n .build())\n .build())\n .build())\n .virtualAgentOutput(CxTestCaseTestCaseConversationTurnVirtualAgentOutputArgs.builder()\n .textResponses(CxTestCaseTestCaseConversationTurnVirtualAgentOutputTextResponseArgs.builder()\n .texts(\"I didn't get that. Can you say it again?\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://storage.cloud.google.com/dialogflow-test-host-image/cloud-logo.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n page:\n type: gcp:diagflow:CxPage\n properties:\n parent: ${agent.startFlow}\n displayName: MyPage\n transitionRoutes:\n - intent: ${intent.id}\n triggerFulfillment:\n messages:\n - text:\n texts:\n - Training phrase response\n eventHandlers:\n - event: some-event\n triggerFulfillment:\n messages:\n - text:\n texts:\n - Handling some event\n intent:\n type: gcp:diagflow:CxIntent\n properties:\n parent: ${agent.id}\n displayName: MyIntent\n priority: 1\n trainingPhrases:\n - parts:\n - text: training phrase\n repeatCount: 1\n basicTestCase:\n type: gcp:diagflow:CxTestCase\n name: basic_test_case\n properties:\n parent: ${agent.id}\n displayName: MyTestCase\n tags:\n - '#tag1'\n notes: demonstrates a simple training phrase response\n testConfig:\n trackingParameters:\n - some_param\n page: ${page.id}\n testCaseConversationTurns:\n - userInput:\n input:\n languageCode: en\n text:\n text: training phrase\n injectedParameters:\n fn::toJSON:\n some_param: '1'\n isWebhookEnabled: true\n enableSentimentAnalysis: true\n virtualAgentOutput:\n sessionParameters:\n fn::toJSON:\n some_param: '1'\n triggeredIntent:\n name: ${intent.id}\n currentPage:\n name: ${page.id}\n textResponses:\n - texts:\n - Training phrase response\n - userInput:\n input:\n event:\n event: some-event\n virtualAgentOutput:\n currentPage:\n name: ${page.id}\n textResponses:\n - texts:\n - Handling some event\n - userInput:\n input:\n dtmf:\n digits: '12'\n finishDigit: '3'\n virtualAgentOutput:\n textResponses:\n - texts:\n - I didn't get that. Can you say it again?\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTestCase can be imported using any of these accepted formats:\n\n* `{{parent}}/testCases/{{name}}`\n\nWhen using the `pulumi import` command, TestCase can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxTestCase:CxTestCase default {{parent}}/testCases/{{name}}\n```\n\n", "properties": { "creationTime": { "type": "string", @@ -185055,7 +185055,7 @@ } }, "gcp:diagflow/cxVersion:CxVersion": { - "description": "You can create multiple versions of your agent flows and deploy them to separate serving environments.\nWhen you edit a flow, you are editing a draft flow. At any point, you can save a draft flow as a flow version. A flow version is an immutable snapshot of your flow data and associated agent data like intents, entities, webhooks, pages, route groups, etc.\n\n\nTo get more information about Version, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.flows.versions)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Version Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst version1 = new gcp.diagflow.CxVersion(\"version_1\", {\n parent: agent.startFlow,\n displayName: \"1.0.0\",\n description: \"version 1.0.0\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enableSpeechAdaptation\": True,\n })\nversion1 = gcp.diagflow.CxVersion(\"version_1\",\n parent=agent.start_flow,\n display_name=\"1.0.0\",\n description=\"version 1.0.0\")\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 agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var version1 = new Gcp.Diagflow.CxVersion(\"version_1\", new()\n {\n Parent = agent.StartFlow,\n DisplayName = \"1.0.0\",\n Description = \"version 1.0.0\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: 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\t_, err = diagflow.NewCxVersion(ctx, \"version_1\", \u0026diagflow.CxVersionArgs{\n\t\t\tParent: agent.StartFlow,\n\t\t\tDisplayName: pulumi.String(\"1.0.0\"),\n\t\t\tDescription: pulumi.String(\"version 1.0.0\"),\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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxVersion;\nimport com.pulumi.gcp.diagflow.CxVersionArgs;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var version1 = new CxVersion(\"version1\", CxVersionArgs.builder()\n .parent(agent.startFlow())\n .displayName(\"1.0.0\")\n .description(\"version 1.0.0\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n version1:\n type: gcp:diagflow:CxVersion\n name: version_1\n properties:\n parent: ${agent.startFlow}\n displayName: 1.0.0\n description: version 1.0.0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVersion can be imported using any of these accepted formats:\n\n* `{{parent}}/versions/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Version can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxVersion:CxVersion default {{parent}}/versions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxVersion:CxVersion default {{parent}}/{{name}}\n```\n\n", + "description": "You can create multiple versions of your agent flows and deploy them to separate serving environments.\nWhen you edit a flow, you are editing a draft flow. At any point, you can save a draft flow as a flow version. A flow version is an immutable snapshot of your flow data and associated agent data like intents, entities, webhooks, pages, route groups, etc.\n\n\nTo get more information about Version, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.flows.versions)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Version Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst version1 = new gcp.diagflow.CxVersion(\"version_1\", {\n parent: agent.startFlow,\n displayName: \"1.0.0\",\n description: \"version 1.0.0\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nversion1 = gcp.diagflow.CxVersion(\"version_1\",\n parent=agent.start_flow,\n display_name=\"1.0.0\",\n description=\"version 1.0.0\")\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 agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var version1 = new Gcp.Diagflow.CxVersion(\"version_1\", new()\n {\n Parent = agent.StartFlow,\n DisplayName = \"1.0.0\",\n Description = \"version 1.0.0\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: 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\t_, err = diagflow.NewCxVersion(ctx, \"version_1\", \u0026diagflow.CxVersionArgs{\n\t\t\tParent: agent.StartFlow,\n\t\t\tDisplayName: pulumi.String(\"1.0.0\"),\n\t\t\tDescription: pulumi.String(\"version 1.0.0\"),\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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxVersion;\nimport com.pulumi.gcp.diagflow.CxVersionArgs;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var version1 = new CxVersion(\"version1\", CxVersionArgs.builder()\n .parent(agent.startFlow())\n .displayName(\"1.0.0\")\n .description(\"version 1.0.0\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n version1:\n type: gcp:diagflow:CxVersion\n name: version_1\n properties:\n parent: ${agent.startFlow}\n displayName: 1.0.0\n description: version 1.0.0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVersion can be imported using any of these accepted formats:\n\n* `{{parent}}/versions/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Version can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxVersion:CxVersion default {{parent}}/versions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxVersion:CxVersion default {{parent}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -185154,7 +185154,7 @@ } }, "gcp:diagflow/cxWebhook:CxWebhook": { - "description": "Webhooks host the developer's business logic. During a session, webhooks allow the developer to use the data extracted by Dialogflow's natural language processing to generate dynamic responses, validate collected data, or trigger actions on the backend.\n\n\nTo get more information about Webhook, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.webhooks)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Webhook Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"it\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst basicWebhook = new gcp.diagflow.CxWebhook(\"basic_webhook\", {\n parent: agent.id,\n displayName: \"MyFlow\",\n genericWebService: {\n uri: \"https://example.com\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"it\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enableSpeechAdaptation\": True,\n })\nbasic_webhook = gcp.diagflow.CxWebhook(\"basic_webhook\",\n parent=agent.id,\n display_name=\"MyFlow\",\n generic_web_service={\n \"uri\": \"https://example.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 agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"it\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var basicWebhook = new Gcp.Diagflow.CxWebhook(\"basic_webhook\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyFlow\",\n GenericWebService = new Gcp.Diagflow.Inputs.CxWebhookGenericWebServiceArgs\n {\n Uri = \"https://example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"it\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: 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\t_, err = diagflow.NewCxWebhook(ctx, \"basic_webhook\", \u0026diagflow.CxWebhookArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyFlow\"),\n\t\t\tGenericWebService: \u0026diagflow.CxWebhookGenericWebServiceArgs{\n\t\t\t\tUri: pulumi.String(\"https://example.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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxWebhook;\nimport com.pulumi.gcp.diagflow.CxWebhookArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxWebhookGenericWebServiceArgs;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"it\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var basicWebhook = new CxWebhook(\"basicWebhook\", CxWebhookArgs.builder()\n .parent(agent.id())\n .displayName(\"MyFlow\")\n .genericWebService(CxWebhookGenericWebServiceArgs.builder()\n .uri(\"https://example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - it\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n basicWebhook:\n type: gcp:diagflow:CxWebhook\n name: basic_webhook\n properties:\n parent: ${agent.id}\n displayName: MyFlow\n genericWebService:\n uri: https://example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWebhook can be imported using any of these accepted formats:\n\n* `{{parent}}/webhooks/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Webhook can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxWebhook:CxWebhook default {{parent}}/webhooks/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxWebhook:CxWebhook default {{parent}}/{{name}}\n```\n\n", + "description": "Webhooks host the developer's business logic. During a session, webhooks allow the developer to use the data extracted by Dialogflow's natural language processing to generate dynamic responses, validate collected data, or trigger actions on the backend.\n\n\nTo get more information about Webhook, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.webhooks)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Webhook Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"it\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst basicWebhook = new gcp.diagflow.CxWebhook(\"basic_webhook\", {\n parent: agent.id,\n displayName: \"MyFlow\",\n genericWebService: {\n uri: \"https://example.com\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"it\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nbasic_webhook = gcp.diagflow.CxWebhook(\"basic_webhook\",\n parent=agent.id,\n display_name=\"MyFlow\",\n generic_web_service={\n \"uri\": \"https://example.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 agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"it\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var basicWebhook = new Gcp.Diagflow.CxWebhook(\"basic_webhook\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyFlow\",\n GenericWebService = new Gcp.Diagflow.Inputs.CxWebhookGenericWebServiceArgs\n {\n Uri = \"https://example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"it\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: 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\t_, err = diagflow.NewCxWebhook(ctx, \"basic_webhook\", \u0026diagflow.CxWebhookArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyFlow\"),\n\t\t\tGenericWebService: \u0026diagflow.CxWebhookGenericWebServiceArgs{\n\t\t\t\tUri: pulumi.String(\"https://example.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.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxWebhook;\nimport com.pulumi.gcp.diagflow.CxWebhookArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxWebhookGenericWebServiceArgs;\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 agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"it\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var basicWebhook = new CxWebhook(\"basicWebhook\", CxWebhookArgs.builder()\n .parent(agent.id())\n .displayName(\"MyFlow\")\n .genericWebService(CxWebhookGenericWebServiceArgs.builder()\n .uri(\"https://example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - it\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n basicWebhook:\n type: gcp:diagflow:CxWebhook\n name: basic_webhook\n properties:\n parent: ${agent.id}\n displayName: MyFlow\n genericWebService:\n uri: https://example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWebhook can be imported using any of these accepted formats:\n\n* `{{parent}}/webhooks/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Webhook can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxWebhook:CxWebhook default {{parent}}/webhooks/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxWebhook:CxWebhook default {{parent}}/{{name}}\n```\n\n", "properties": { "disabled": { "type": "boolean", @@ -185403,7 +185403,7 @@ } }, "gcp:diagflow/fulfillment:Fulfillment": { - "description": "By default, your agent responds to a matched intent with a static response. If you're using one of the integration options, you can provide a more dynamic response by using fulfillment. When you enable fulfillment for an intent, Dialogflow responds to that intent by calling a service that you define. For example, if an end-user wants to schedule a haircut on Friday, your service can check your database and respond to the end-user with availability information for Friday.\n\n\nTo get more information about Fulfillment, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/es/docs/reference/rest/v2/projects.agent/getFulfillment)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/es/docs/fulfillment-overview)\n\n## Example Usage\n\n### Dialogflow Fulfillment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicAgent = new gcp.diagflow.Agent(\"basic_agent\", {\n displayName: \"example_agent\",\n defaultLanguageCode: \"en\",\n timeZone: \"America/New_York\",\n});\nconst basicFulfillment = new gcp.diagflow.Fulfillment(\"basic_fulfillment\", {\n displayName: \"basic-fulfillment\",\n enabled: true,\n genericWebService: {\n uri: \"https://google.com\",\n username: \"admin\",\n password: \"password\",\n requestHeaders: {\n name: \"wrench\",\n },\n },\n}, {\n dependsOn: [basicAgent],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_agent = gcp.diagflow.Agent(\"basic_agent\",\n display_name=\"example_agent\",\n default_language_code=\"en\",\n time_zone=\"America/New_York\")\nbasic_fulfillment = gcp.diagflow.Fulfillment(\"basic_fulfillment\",\n display_name=\"basic-fulfillment\",\n enabled=True,\n generic_web_service={\n \"uri\": \"https://google.com\",\n \"username\": \"admin\",\n \"password\": \"password\",\n \"requestHeaders\": {\n \"name\": \"wrench\",\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[basic_agent]))\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 basicAgent = new Gcp.Diagflow.Agent(\"basic_agent\", new()\n {\n DisplayName = \"example_agent\",\n DefaultLanguageCode = \"en\",\n TimeZone = \"America/New_York\",\n });\n\n var basicFulfillment = new Gcp.Diagflow.Fulfillment(\"basic_fulfillment\", new()\n {\n DisplayName = \"basic-fulfillment\",\n Enabled = true,\n GenericWebService = new Gcp.Diagflow.Inputs.FulfillmentGenericWebServiceArgs\n {\n Uri = \"https://google.com\",\n Username = \"admin\",\n Password = \"password\",\n RequestHeaders = \n {\n { \"name\", \"wrench\" },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n basicAgent,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasicAgent, err := diagflow.NewAgent(ctx, \"basic_agent\", \u0026diagflow.AgentArgs{\n\t\t\tDisplayName: pulumi.String(\"example_agent\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = diagflow.NewFulfillment(ctx, \"basic_fulfillment\", \u0026diagflow.FulfillmentArgs{\n\t\t\tDisplayName: pulumi.String(\"basic-fulfillment\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tGenericWebService: \u0026diagflow.FulfillmentGenericWebServiceArgs{\n\t\t\t\tUri: pulumi.String(\"https://google.com\"),\n\t\t\t\tUsername: pulumi.String(\"admin\"),\n\t\t\t\tPassword: pulumi.String(\"password\"),\n\t\t\t\tRequestHeaders: pulumi.StringMap{\n\t\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbasicAgent,\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.diagflow.Agent;\nimport com.pulumi.gcp.diagflow.AgentArgs;\nimport com.pulumi.gcp.diagflow.Fulfillment;\nimport com.pulumi.gcp.diagflow.FulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.FulfillmentGenericWebServiceArgs;\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 basicAgent = new Agent(\"basicAgent\", AgentArgs.builder()\n .displayName(\"example_agent\")\n .defaultLanguageCode(\"en\")\n .timeZone(\"America/New_York\")\n .build());\n\n var basicFulfillment = new Fulfillment(\"basicFulfillment\", FulfillmentArgs.builder()\n .displayName(\"basic-fulfillment\")\n .enabled(true)\n .genericWebService(FulfillmentGenericWebServiceArgs.builder()\n .uri(\"https://google.com\")\n .username(\"admin\")\n .password(\"password\")\n .requestHeaders(Map.of(\"name\", \"wrench\"))\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(basicAgent)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicAgent:\n type: gcp:diagflow:Agent\n name: basic_agent\n properties:\n displayName: example_agent\n defaultLanguageCode: en\n timeZone: America/New_York\n basicFulfillment:\n type: gcp:diagflow:Fulfillment\n name: basic_fulfillment\n properties:\n displayName: basic-fulfillment\n enabled: true\n genericWebService:\n uri: https://google.com\n username: admin\n password: password\n requestHeaders:\n name: wrench\n options:\n dependson:\n - ${basicAgent}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFulfillment can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Fulfillment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/fulfillment:Fulfillment default {{name}}\n```\n\n", + "description": "By default, your agent responds to a matched intent with a static response. If you're using one of the integration options, you can provide a more dynamic response by using fulfillment. When you enable fulfillment for an intent, Dialogflow responds to that intent by calling a service that you define. For example, if an end-user wants to schedule a haircut on Friday, your service can check your database and respond to the end-user with availability information for Friday.\n\n\nTo get more information about Fulfillment, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/es/docs/reference/rest/v2/projects.agent/getFulfillment)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/es/docs/fulfillment-overview)\n\n## Example Usage\n\n### Dialogflow Fulfillment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicAgent = new gcp.diagflow.Agent(\"basic_agent\", {\n displayName: \"example_agent\",\n defaultLanguageCode: \"en\",\n timeZone: \"America/New_York\",\n});\nconst basicFulfillment = new gcp.diagflow.Fulfillment(\"basic_fulfillment\", {\n displayName: \"basic-fulfillment\",\n enabled: true,\n genericWebService: {\n uri: \"https://google.com\",\n username: \"admin\",\n password: \"password\",\n requestHeaders: {\n name: \"wrench\",\n },\n },\n}, {\n dependsOn: [basicAgent],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_agent = gcp.diagflow.Agent(\"basic_agent\",\n display_name=\"example_agent\",\n default_language_code=\"en\",\n time_zone=\"America/New_York\")\nbasic_fulfillment = gcp.diagflow.Fulfillment(\"basic_fulfillment\",\n display_name=\"basic-fulfillment\",\n enabled=True,\n generic_web_service={\n \"uri\": \"https://google.com\",\n \"username\": \"admin\",\n \"password\": \"password\",\n \"request_headers\": {\n \"name\": \"wrench\",\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[basic_agent]))\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 basicAgent = new Gcp.Diagflow.Agent(\"basic_agent\", new()\n {\n DisplayName = \"example_agent\",\n DefaultLanguageCode = \"en\",\n TimeZone = \"America/New_York\",\n });\n\n var basicFulfillment = new Gcp.Diagflow.Fulfillment(\"basic_fulfillment\", new()\n {\n DisplayName = \"basic-fulfillment\",\n Enabled = true,\n GenericWebService = new Gcp.Diagflow.Inputs.FulfillmentGenericWebServiceArgs\n {\n Uri = \"https://google.com\",\n Username = \"admin\",\n Password = \"password\",\n RequestHeaders = \n {\n { \"name\", \"wrench\" },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n basicAgent,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasicAgent, err := diagflow.NewAgent(ctx, \"basic_agent\", \u0026diagflow.AgentArgs{\n\t\t\tDisplayName: pulumi.String(\"example_agent\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = diagflow.NewFulfillment(ctx, \"basic_fulfillment\", \u0026diagflow.FulfillmentArgs{\n\t\t\tDisplayName: pulumi.String(\"basic-fulfillment\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tGenericWebService: \u0026diagflow.FulfillmentGenericWebServiceArgs{\n\t\t\t\tUri: pulumi.String(\"https://google.com\"),\n\t\t\t\tUsername: pulumi.String(\"admin\"),\n\t\t\t\tPassword: pulumi.String(\"password\"),\n\t\t\t\tRequestHeaders: pulumi.StringMap{\n\t\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbasicAgent,\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.diagflow.Agent;\nimport com.pulumi.gcp.diagflow.AgentArgs;\nimport com.pulumi.gcp.diagflow.Fulfillment;\nimport com.pulumi.gcp.diagflow.FulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.FulfillmentGenericWebServiceArgs;\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 basicAgent = new Agent(\"basicAgent\", AgentArgs.builder()\n .displayName(\"example_agent\")\n .defaultLanguageCode(\"en\")\n .timeZone(\"America/New_York\")\n .build());\n\n var basicFulfillment = new Fulfillment(\"basicFulfillment\", FulfillmentArgs.builder()\n .displayName(\"basic-fulfillment\")\n .enabled(true)\n .genericWebService(FulfillmentGenericWebServiceArgs.builder()\n .uri(\"https://google.com\")\n .username(\"admin\")\n .password(\"password\")\n .requestHeaders(Map.of(\"name\", \"wrench\"))\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(basicAgent)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicAgent:\n type: gcp:diagflow:Agent\n name: basic_agent\n properties:\n displayName: example_agent\n defaultLanguageCode: en\n timeZone: America/New_York\n basicFulfillment:\n type: gcp:diagflow:Fulfillment\n name: basic_fulfillment\n properties:\n displayName: basic-fulfillment\n enabled: true\n genericWebService:\n uri: https://google.com\n username: admin\n password: password\n requestHeaders:\n name: wrench\n options:\n dependson:\n - ${basicAgent}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFulfillment can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Fulfillment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/fulfillment:Fulfillment default {{name}}\n```\n\n", "properties": { "displayName": { "type": "string", @@ -185738,7 +185738,7 @@ } }, "gcp:discoveryengine/chatEngine:ChatEngine": { - "description": "Vertex chat and Conversation Engine Chat type\n\n\nTo get more information about ChatEngine, see:\n\n* [API documentation](https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/projects.locations.collections.engines)\n* How-to Guides\n * [Vertex AI Conversation](https://cloud.google.com/dialogflow/cx/docs/concept/generative)\n\n## Example Usage\n\n### Discoveryengine Chat Engine Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testDataStore = new gcp.discoveryengine.DataStore(\"test_data_store\", {\n location: \"global\",\n dataStoreId: \"data-store\",\n displayName: \"Structured datastore\",\n industryVertical: \"GENERIC\",\n contentConfig: \"NO_CONTENT\",\n solutionTypes: [\"SOLUTION_TYPE_CHAT\"],\n});\nconst testDataStore2 = new gcp.discoveryengine.DataStore(\"test_data_store_2\", {\n location: testDataStore.location,\n dataStoreId: \"data-store-2\",\n displayName: \"Structured datastore 2\",\n industryVertical: \"GENERIC\",\n contentConfig: \"NO_CONTENT\",\n solutionTypes: [\"SOLUTION_TYPE_CHAT\"],\n});\nconst primary = new gcp.discoveryengine.ChatEngine(\"primary\", {\n engineId: \"chat-engine-id\",\n collectionId: \"default_collection\",\n location: testDataStore.location,\n displayName: \"Chat engine\",\n industryVertical: \"GENERIC\",\n dataStoreIds: [\n testDataStore.dataStoreId,\n testDataStore2.dataStoreId,\n ],\n commonConfig: {\n companyName: \"test-company\",\n },\n chatEngineConfig: {\n agentCreationConfig: {\n business: \"test business name\",\n defaultLanguageCode: \"en\",\n timeZone: \"America/Los_Angeles\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_data_store = gcp.discoveryengine.DataStore(\"test_data_store\",\n location=\"global\",\n data_store_id=\"data-store\",\n display_name=\"Structured datastore\",\n industry_vertical=\"GENERIC\",\n content_config=\"NO_CONTENT\",\n solution_types=[\"SOLUTION_TYPE_CHAT\"])\ntest_data_store2 = gcp.discoveryengine.DataStore(\"test_data_store_2\",\n location=test_data_store.location,\n data_store_id=\"data-store-2\",\n display_name=\"Structured datastore 2\",\n industry_vertical=\"GENERIC\",\n content_config=\"NO_CONTENT\",\n solution_types=[\"SOLUTION_TYPE_CHAT\"])\nprimary = gcp.discoveryengine.ChatEngine(\"primary\",\n engine_id=\"chat-engine-id\",\n collection_id=\"default_collection\",\n location=test_data_store.location,\n display_name=\"Chat engine\",\n industry_vertical=\"GENERIC\",\n data_store_ids=[\n test_data_store.data_store_id,\n test_data_store2.data_store_id,\n ],\n common_config={\n \"companyName\": \"test-company\",\n },\n chat_engine_config={\n \"agentCreationConfig\": {\n \"business\": \"test business name\",\n \"defaultLanguageCode\": \"en\",\n \"timeZone\": \"America/Los_Angeles\",\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 testDataStore = new Gcp.DiscoveryEngine.DataStore(\"test_data_store\", new()\n {\n Location = \"global\",\n DataStoreId = \"data-store\",\n DisplayName = \"Structured datastore\",\n IndustryVertical = \"GENERIC\",\n ContentConfig = \"NO_CONTENT\",\n SolutionTypes = new[]\n {\n \"SOLUTION_TYPE_CHAT\",\n },\n });\n\n var testDataStore2 = new Gcp.DiscoveryEngine.DataStore(\"test_data_store_2\", new()\n {\n Location = testDataStore.Location,\n DataStoreId = \"data-store-2\",\n DisplayName = \"Structured datastore 2\",\n IndustryVertical = \"GENERIC\",\n ContentConfig = \"NO_CONTENT\",\n SolutionTypes = new[]\n {\n \"SOLUTION_TYPE_CHAT\",\n },\n });\n\n var primary = new Gcp.DiscoveryEngine.ChatEngine(\"primary\", new()\n {\n EngineId = \"chat-engine-id\",\n CollectionId = \"default_collection\",\n Location = testDataStore.Location,\n DisplayName = \"Chat engine\",\n IndustryVertical = \"GENERIC\",\n DataStoreIds = new[]\n {\n testDataStore.DataStoreId,\n testDataStore2.DataStoreId,\n },\n CommonConfig = new Gcp.DiscoveryEngine.Inputs.ChatEngineCommonConfigArgs\n {\n CompanyName = \"test-company\",\n },\n ChatEngineConfig = new Gcp.DiscoveryEngine.Inputs.ChatEngineChatEngineConfigArgs\n {\n AgentCreationConfig = new Gcp.DiscoveryEngine.Inputs.ChatEngineChatEngineConfigAgentCreationConfigArgs\n {\n Business = \"test business name\",\n DefaultLanguageCode = \"en\",\n TimeZone = \"America/Los_Angeles\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/discoveryengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestDataStore, err := discoveryengine.NewDataStore(ctx, \"test_data_store\", \u0026discoveryengine.DataStoreArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDataStoreId: pulumi.String(\"data-store\"),\n\t\t\tDisplayName: pulumi.String(\"Structured datastore\"),\n\t\t\tIndustryVertical: pulumi.String(\"GENERIC\"),\n\t\t\tContentConfig: pulumi.String(\"NO_CONTENT\"),\n\t\t\tSolutionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"SOLUTION_TYPE_CHAT\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestDataStore2, err := discoveryengine.NewDataStore(ctx, \"test_data_store_2\", \u0026discoveryengine.DataStoreArgs{\n\t\t\tLocation: testDataStore.Location,\n\t\t\tDataStoreId: pulumi.String(\"data-store-2\"),\n\t\t\tDisplayName: pulumi.String(\"Structured datastore 2\"),\n\t\t\tIndustryVertical: pulumi.String(\"GENERIC\"),\n\t\t\tContentConfig: pulumi.String(\"NO_CONTENT\"),\n\t\t\tSolutionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"SOLUTION_TYPE_CHAT\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = discoveryengine.NewChatEngine(ctx, \"primary\", \u0026discoveryengine.ChatEngineArgs{\n\t\t\tEngineId: pulumi.String(\"chat-engine-id\"),\n\t\t\tCollectionId: pulumi.String(\"default_collection\"),\n\t\t\tLocation: testDataStore.Location,\n\t\t\tDisplayName: pulumi.String(\"Chat engine\"),\n\t\t\tIndustryVertical: pulumi.String(\"GENERIC\"),\n\t\t\tDataStoreIds: pulumi.StringArray{\n\t\t\t\ttestDataStore.DataStoreId,\n\t\t\t\ttestDataStore2.DataStoreId,\n\t\t\t},\n\t\t\tCommonConfig: \u0026discoveryengine.ChatEngineCommonConfigArgs{\n\t\t\t\tCompanyName: pulumi.String(\"test-company\"),\n\t\t\t},\n\t\t\tChatEngineConfig: \u0026discoveryengine.ChatEngineChatEngineConfigArgs{\n\t\t\t\tAgentCreationConfig: \u0026discoveryengine.ChatEngineChatEngineConfigAgentCreationConfigArgs{\n\t\t\t\t\tBusiness: pulumi.String(\"test business name\"),\n\t\t\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\t\t\tTimeZone: pulumi.String(\"America/Los_Angeles\"),\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.discoveryengine.DataStore;\nimport com.pulumi.gcp.discoveryengine.DataStoreArgs;\nimport com.pulumi.gcp.discoveryengine.ChatEngine;\nimport com.pulumi.gcp.discoveryengine.ChatEngineArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.ChatEngineCommonConfigArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.ChatEngineChatEngineConfigArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.ChatEngineChatEngineConfigAgentCreationConfigArgs;\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 testDataStore = new DataStore(\"testDataStore\", DataStoreArgs.builder()\n .location(\"global\")\n .dataStoreId(\"data-store\")\n .displayName(\"Structured datastore\")\n .industryVertical(\"GENERIC\")\n .contentConfig(\"NO_CONTENT\")\n .solutionTypes(\"SOLUTION_TYPE_CHAT\")\n .build());\n\n var testDataStore2 = new DataStore(\"testDataStore2\", DataStoreArgs.builder()\n .location(testDataStore.location())\n .dataStoreId(\"data-store-2\")\n .displayName(\"Structured datastore 2\")\n .industryVertical(\"GENERIC\")\n .contentConfig(\"NO_CONTENT\")\n .solutionTypes(\"SOLUTION_TYPE_CHAT\")\n .build());\n\n var primary = new ChatEngine(\"primary\", ChatEngineArgs.builder()\n .engineId(\"chat-engine-id\")\n .collectionId(\"default_collection\")\n .location(testDataStore.location())\n .displayName(\"Chat engine\")\n .industryVertical(\"GENERIC\")\n .dataStoreIds( \n testDataStore.dataStoreId(),\n testDataStore2.dataStoreId())\n .commonConfig(ChatEngineCommonConfigArgs.builder()\n .companyName(\"test-company\")\n .build())\n .chatEngineConfig(ChatEngineChatEngineConfigArgs.builder()\n .agentCreationConfig(ChatEngineChatEngineConfigAgentCreationConfigArgs.builder()\n .business(\"test business name\")\n .defaultLanguageCode(\"en\")\n .timeZone(\"America/Los_Angeles\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testDataStore:\n type: gcp:discoveryengine:DataStore\n name: test_data_store\n properties:\n location: global\n dataStoreId: data-store\n displayName: Structured datastore\n industryVertical: GENERIC\n contentConfig: NO_CONTENT\n solutionTypes:\n - SOLUTION_TYPE_CHAT\n testDataStore2:\n type: gcp:discoveryengine:DataStore\n name: test_data_store_2\n properties:\n location: ${testDataStore.location}\n dataStoreId: data-store-2\n displayName: Structured datastore 2\n industryVertical: GENERIC\n contentConfig: NO_CONTENT\n solutionTypes:\n - SOLUTION_TYPE_CHAT\n primary:\n type: gcp:discoveryengine:ChatEngine\n properties:\n engineId: chat-engine-id\n collectionId: default_collection\n location: ${testDataStore.location}\n displayName: Chat engine\n industryVertical: GENERIC\n dataStoreIds:\n - ${testDataStore.dataStoreId}\n - ${testDataStore2.dataStoreId}\n commonConfig:\n companyName: test-company\n chatEngineConfig:\n agentCreationConfig:\n business: test business name\n defaultLanguageCode: en\n timeZone: America/Los_Angeles\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nChatEngine can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/collections/{{collection_id}}/engines/{{engine_id}}`\n\n* `{{project}}/{{location}}/{{collection_id}}/{{engine_id}}`\n\n* `{{location}}/{{collection_id}}/{{engine_id}}`\n\nWhen using the `pulumi import` command, ChatEngine can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:discoveryengine/chatEngine:ChatEngine default projects/{{project}}/locations/{{location}}/collections/{{collection_id}}/engines/{{engine_id}}\n```\n\n```sh\n$ pulumi import gcp:discoveryengine/chatEngine:ChatEngine default {{project}}/{{location}}/{{collection_id}}/{{engine_id}}\n```\n\n```sh\n$ pulumi import gcp:discoveryengine/chatEngine:ChatEngine default {{location}}/{{collection_id}}/{{engine_id}}\n```\n\n", + "description": "Vertex chat and Conversation Engine Chat type\n\n\nTo get more information about ChatEngine, see:\n\n* [API documentation](https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/projects.locations.collections.engines)\n* How-to Guides\n * [Vertex AI Conversation](https://cloud.google.com/dialogflow/cx/docs/concept/generative)\n\n## Example Usage\n\n### Discoveryengine Chat Engine Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testDataStore = new gcp.discoveryengine.DataStore(\"test_data_store\", {\n location: \"global\",\n dataStoreId: \"data-store\",\n displayName: \"Structured datastore\",\n industryVertical: \"GENERIC\",\n contentConfig: \"NO_CONTENT\",\n solutionTypes: [\"SOLUTION_TYPE_CHAT\"],\n});\nconst testDataStore2 = new gcp.discoveryengine.DataStore(\"test_data_store_2\", {\n location: testDataStore.location,\n dataStoreId: \"data-store-2\",\n displayName: \"Structured datastore 2\",\n industryVertical: \"GENERIC\",\n contentConfig: \"NO_CONTENT\",\n solutionTypes: [\"SOLUTION_TYPE_CHAT\"],\n});\nconst primary = new gcp.discoveryengine.ChatEngine(\"primary\", {\n engineId: \"chat-engine-id\",\n collectionId: \"default_collection\",\n location: testDataStore.location,\n displayName: \"Chat engine\",\n industryVertical: \"GENERIC\",\n dataStoreIds: [\n testDataStore.dataStoreId,\n testDataStore2.dataStoreId,\n ],\n commonConfig: {\n companyName: \"test-company\",\n },\n chatEngineConfig: {\n agentCreationConfig: {\n business: \"test business name\",\n defaultLanguageCode: \"en\",\n timeZone: \"America/Los_Angeles\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_data_store = gcp.discoveryengine.DataStore(\"test_data_store\",\n location=\"global\",\n data_store_id=\"data-store\",\n display_name=\"Structured datastore\",\n industry_vertical=\"GENERIC\",\n content_config=\"NO_CONTENT\",\n solution_types=[\"SOLUTION_TYPE_CHAT\"])\ntest_data_store2 = gcp.discoveryengine.DataStore(\"test_data_store_2\",\n location=test_data_store.location,\n data_store_id=\"data-store-2\",\n display_name=\"Structured datastore 2\",\n industry_vertical=\"GENERIC\",\n content_config=\"NO_CONTENT\",\n solution_types=[\"SOLUTION_TYPE_CHAT\"])\nprimary = gcp.discoveryengine.ChatEngine(\"primary\",\n engine_id=\"chat-engine-id\",\n collection_id=\"default_collection\",\n location=test_data_store.location,\n display_name=\"Chat engine\",\n industry_vertical=\"GENERIC\",\n data_store_ids=[\n test_data_store.data_store_id,\n test_data_store2.data_store_id,\n ],\n common_config={\n \"company_name\": \"test-company\",\n },\n chat_engine_config={\n \"agent_creation_config\": {\n \"business\": \"test business name\",\n \"default_language_code\": \"en\",\n \"time_zone\": \"America/Los_Angeles\",\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 testDataStore = new Gcp.DiscoveryEngine.DataStore(\"test_data_store\", new()\n {\n Location = \"global\",\n DataStoreId = \"data-store\",\n DisplayName = \"Structured datastore\",\n IndustryVertical = \"GENERIC\",\n ContentConfig = \"NO_CONTENT\",\n SolutionTypes = new[]\n {\n \"SOLUTION_TYPE_CHAT\",\n },\n });\n\n var testDataStore2 = new Gcp.DiscoveryEngine.DataStore(\"test_data_store_2\", new()\n {\n Location = testDataStore.Location,\n DataStoreId = \"data-store-2\",\n DisplayName = \"Structured datastore 2\",\n IndustryVertical = \"GENERIC\",\n ContentConfig = \"NO_CONTENT\",\n SolutionTypes = new[]\n {\n \"SOLUTION_TYPE_CHAT\",\n },\n });\n\n var primary = new Gcp.DiscoveryEngine.ChatEngine(\"primary\", new()\n {\n EngineId = \"chat-engine-id\",\n CollectionId = \"default_collection\",\n Location = testDataStore.Location,\n DisplayName = \"Chat engine\",\n IndustryVertical = \"GENERIC\",\n DataStoreIds = new[]\n {\n testDataStore.DataStoreId,\n testDataStore2.DataStoreId,\n },\n CommonConfig = new Gcp.DiscoveryEngine.Inputs.ChatEngineCommonConfigArgs\n {\n CompanyName = \"test-company\",\n },\n ChatEngineConfig = new Gcp.DiscoveryEngine.Inputs.ChatEngineChatEngineConfigArgs\n {\n AgentCreationConfig = new Gcp.DiscoveryEngine.Inputs.ChatEngineChatEngineConfigAgentCreationConfigArgs\n {\n Business = \"test business name\",\n DefaultLanguageCode = \"en\",\n TimeZone = \"America/Los_Angeles\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/discoveryengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestDataStore, err := discoveryengine.NewDataStore(ctx, \"test_data_store\", \u0026discoveryengine.DataStoreArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDataStoreId: pulumi.String(\"data-store\"),\n\t\t\tDisplayName: pulumi.String(\"Structured datastore\"),\n\t\t\tIndustryVertical: pulumi.String(\"GENERIC\"),\n\t\t\tContentConfig: pulumi.String(\"NO_CONTENT\"),\n\t\t\tSolutionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"SOLUTION_TYPE_CHAT\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestDataStore2, err := discoveryengine.NewDataStore(ctx, \"test_data_store_2\", \u0026discoveryengine.DataStoreArgs{\n\t\t\tLocation: testDataStore.Location,\n\t\t\tDataStoreId: pulumi.String(\"data-store-2\"),\n\t\t\tDisplayName: pulumi.String(\"Structured datastore 2\"),\n\t\t\tIndustryVertical: pulumi.String(\"GENERIC\"),\n\t\t\tContentConfig: pulumi.String(\"NO_CONTENT\"),\n\t\t\tSolutionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"SOLUTION_TYPE_CHAT\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = discoveryengine.NewChatEngine(ctx, \"primary\", \u0026discoveryengine.ChatEngineArgs{\n\t\t\tEngineId: pulumi.String(\"chat-engine-id\"),\n\t\t\tCollectionId: pulumi.String(\"default_collection\"),\n\t\t\tLocation: testDataStore.Location,\n\t\t\tDisplayName: pulumi.String(\"Chat engine\"),\n\t\t\tIndustryVertical: pulumi.String(\"GENERIC\"),\n\t\t\tDataStoreIds: pulumi.StringArray{\n\t\t\t\ttestDataStore.DataStoreId,\n\t\t\t\ttestDataStore2.DataStoreId,\n\t\t\t},\n\t\t\tCommonConfig: \u0026discoveryengine.ChatEngineCommonConfigArgs{\n\t\t\t\tCompanyName: pulumi.String(\"test-company\"),\n\t\t\t},\n\t\t\tChatEngineConfig: \u0026discoveryengine.ChatEngineChatEngineConfigArgs{\n\t\t\t\tAgentCreationConfig: \u0026discoveryengine.ChatEngineChatEngineConfigAgentCreationConfigArgs{\n\t\t\t\t\tBusiness: pulumi.String(\"test business name\"),\n\t\t\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\t\t\tTimeZone: pulumi.String(\"America/Los_Angeles\"),\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.discoveryengine.DataStore;\nimport com.pulumi.gcp.discoveryengine.DataStoreArgs;\nimport com.pulumi.gcp.discoveryengine.ChatEngine;\nimport com.pulumi.gcp.discoveryengine.ChatEngineArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.ChatEngineCommonConfigArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.ChatEngineChatEngineConfigArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.ChatEngineChatEngineConfigAgentCreationConfigArgs;\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 testDataStore = new DataStore(\"testDataStore\", DataStoreArgs.builder()\n .location(\"global\")\n .dataStoreId(\"data-store\")\n .displayName(\"Structured datastore\")\n .industryVertical(\"GENERIC\")\n .contentConfig(\"NO_CONTENT\")\n .solutionTypes(\"SOLUTION_TYPE_CHAT\")\n .build());\n\n var testDataStore2 = new DataStore(\"testDataStore2\", DataStoreArgs.builder()\n .location(testDataStore.location())\n .dataStoreId(\"data-store-2\")\n .displayName(\"Structured datastore 2\")\n .industryVertical(\"GENERIC\")\n .contentConfig(\"NO_CONTENT\")\n .solutionTypes(\"SOLUTION_TYPE_CHAT\")\n .build());\n\n var primary = new ChatEngine(\"primary\", ChatEngineArgs.builder()\n .engineId(\"chat-engine-id\")\n .collectionId(\"default_collection\")\n .location(testDataStore.location())\n .displayName(\"Chat engine\")\n .industryVertical(\"GENERIC\")\n .dataStoreIds( \n testDataStore.dataStoreId(),\n testDataStore2.dataStoreId())\n .commonConfig(ChatEngineCommonConfigArgs.builder()\n .companyName(\"test-company\")\n .build())\n .chatEngineConfig(ChatEngineChatEngineConfigArgs.builder()\n .agentCreationConfig(ChatEngineChatEngineConfigAgentCreationConfigArgs.builder()\n .business(\"test business name\")\n .defaultLanguageCode(\"en\")\n .timeZone(\"America/Los_Angeles\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testDataStore:\n type: gcp:discoveryengine:DataStore\n name: test_data_store\n properties:\n location: global\n dataStoreId: data-store\n displayName: Structured datastore\n industryVertical: GENERIC\n contentConfig: NO_CONTENT\n solutionTypes:\n - SOLUTION_TYPE_CHAT\n testDataStore2:\n type: gcp:discoveryengine:DataStore\n name: test_data_store_2\n properties:\n location: ${testDataStore.location}\n dataStoreId: data-store-2\n displayName: Structured datastore 2\n industryVertical: GENERIC\n contentConfig: NO_CONTENT\n solutionTypes:\n - SOLUTION_TYPE_CHAT\n primary:\n type: gcp:discoveryengine:ChatEngine\n properties:\n engineId: chat-engine-id\n collectionId: default_collection\n location: ${testDataStore.location}\n displayName: Chat engine\n industryVertical: GENERIC\n dataStoreIds:\n - ${testDataStore.dataStoreId}\n - ${testDataStore2.dataStoreId}\n commonConfig:\n companyName: test-company\n chatEngineConfig:\n agentCreationConfig:\n business: test business name\n defaultLanguageCode: en\n timeZone: America/Los_Angeles\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nChatEngine can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/collections/{{collection_id}}/engines/{{engine_id}}`\n\n* `{{project}}/{{location}}/{{collection_id}}/{{engine_id}}`\n\n* `{{location}}/{{collection_id}}/{{engine_id}}`\n\nWhen using the `pulumi import` command, ChatEngine can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:discoveryengine/chatEngine:ChatEngine default projects/{{project}}/locations/{{location}}/collections/{{collection_id}}/engines/{{engine_id}}\n```\n\n```sh\n$ pulumi import gcp:discoveryengine/chatEngine:ChatEngine default {{project}}/{{location}}/{{collection_id}}/{{engine_id}}\n```\n\n```sh\n$ pulumi import gcp:discoveryengine/chatEngine:ChatEngine default {{location}}/{{collection_id}}/{{engine_id}}\n```\n\n", "properties": { "chatEngineConfig": { "$ref": "#/types/gcp:discoveryengine/ChatEngineChatEngineConfig:ChatEngineChatEngineConfig", @@ -185940,7 +185940,7 @@ } }, "gcp:discoveryengine/dataStore:DataStore": { - "description": "Data store is a collection of websites and documents used to find answers for\nend-user's questions in Discovery Engine (a.k.a. Vertex AI Search and\nConversation).\n\n\nTo get more information about DataStore, see:\n\n* [API documentation](https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/projects.locations.collections.dataStores)\n* How-to Guides\n * [Create a search data store](https://cloud.google.com/generative-ai-app-builder/docs/create-data-store-es)\n\n## Example Usage\n\n### Discoveryengine Datastore Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.discoveryengine.DataStore(\"basic\", {\n location: \"global\",\n dataStoreId: \"data-store-id\",\n displayName: \"tf-test-structured-datastore\",\n industryVertical: \"GENERIC\",\n contentConfig: \"NO_CONTENT\",\n solutionTypes: [\"SOLUTION_TYPE_SEARCH\"],\n createAdvancedSiteSearch: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.discoveryengine.DataStore(\"basic\",\n location=\"global\",\n data_store_id=\"data-store-id\",\n display_name=\"tf-test-structured-datastore\",\n industry_vertical=\"GENERIC\",\n content_config=\"NO_CONTENT\",\n solution_types=[\"SOLUTION_TYPE_SEARCH\"],\n create_advanced_site_search=False)\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.DiscoveryEngine.DataStore(\"basic\", new()\n {\n Location = \"global\",\n DataStoreId = \"data-store-id\",\n DisplayName = \"tf-test-structured-datastore\",\n IndustryVertical = \"GENERIC\",\n ContentConfig = \"NO_CONTENT\",\n SolutionTypes = new[]\n {\n \"SOLUTION_TYPE_SEARCH\",\n },\n CreateAdvancedSiteSearch = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/discoveryengine\"\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 := discoveryengine.NewDataStore(ctx, \"basic\", \u0026discoveryengine.DataStoreArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDataStoreId: pulumi.String(\"data-store-id\"),\n\t\t\tDisplayName: pulumi.String(\"tf-test-structured-datastore\"),\n\t\t\tIndustryVertical: pulumi.String(\"GENERIC\"),\n\t\t\tContentConfig: pulumi.String(\"NO_CONTENT\"),\n\t\t\tSolutionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"SOLUTION_TYPE_SEARCH\"),\n\t\t\t},\n\t\t\tCreateAdvancedSiteSearch: pulumi.Bool(false),\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.discoveryengine.DataStore;\nimport com.pulumi.gcp.discoveryengine.DataStoreArgs;\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 DataStore(\"basic\", DataStoreArgs.builder()\n .location(\"global\")\n .dataStoreId(\"data-store-id\")\n .displayName(\"tf-test-structured-datastore\")\n .industryVertical(\"GENERIC\")\n .contentConfig(\"NO_CONTENT\")\n .solutionTypes(\"SOLUTION_TYPE_SEARCH\")\n .createAdvancedSiteSearch(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:discoveryengine:DataStore\n properties:\n location: global\n dataStoreId: data-store-id\n displayName: tf-test-structured-datastore\n industryVertical: GENERIC\n contentConfig: NO_CONTENT\n solutionTypes:\n - SOLUTION_TYPE_SEARCH\n createAdvancedSiteSearch: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Discoveryengine Datastore Document Processing Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst documentProcessingConfig = new gcp.discoveryengine.DataStore(\"document_processing_config\", {\n location: \"global\",\n dataStoreId: \"data-store-id\",\n displayName: \"tf-test-structured-datastore\",\n industryVertical: \"GENERIC\",\n contentConfig: \"NO_CONTENT\",\n solutionTypes: [\"SOLUTION_TYPE_SEARCH\"],\n createAdvancedSiteSearch: false,\n documentProcessingConfig: {\n defaultParsingConfig: {\n digitalParsingConfig: {},\n },\n parsingConfigOverrides: [{\n fileType: \"pdf\",\n ocrParsingConfig: {\n useNativeText: true,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndocument_processing_config = gcp.discoveryengine.DataStore(\"document_processing_config\",\n location=\"global\",\n data_store_id=\"data-store-id\",\n display_name=\"tf-test-structured-datastore\",\n industry_vertical=\"GENERIC\",\n content_config=\"NO_CONTENT\",\n solution_types=[\"SOLUTION_TYPE_SEARCH\"],\n create_advanced_site_search=False,\n document_processing_config={\n \"defaultParsingConfig\": {\n \"digitalParsingConfig\": {},\n },\n \"parsingConfigOverrides\": [{\n \"fileType\": \"pdf\",\n \"ocrParsingConfig\": {\n \"useNativeText\": True,\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 documentProcessingConfig = new Gcp.DiscoveryEngine.DataStore(\"document_processing_config\", new()\n {\n Location = \"global\",\n DataStoreId = \"data-store-id\",\n DisplayName = \"tf-test-structured-datastore\",\n IndustryVertical = \"GENERIC\",\n ContentConfig = \"NO_CONTENT\",\n SolutionTypes = new[]\n {\n \"SOLUTION_TYPE_SEARCH\",\n },\n CreateAdvancedSiteSearch = false,\n DocumentProcessingConfig = new Gcp.DiscoveryEngine.Inputs.DataStoreDocumentProcessingConfigArgs\n {\n DefaultParsingConfig = new Gcp.DiscoveryEngine.Inputs.DataStoreDocumentProcessingConfigDefaultParsingConfigArgs\n {\n DigitalParsingConfig = null,\n },\n ParsingConfigOverrides = new[]\n {\n new Gcp.DiscoveryEngine.Inputs.DataStoreDocumentProcessingConfigParsingConfigOverrideArgs\n {\n FileType = \"pdf\",\n OcrParsingConfig = new Gcp.DiscoveryEngine.Inputs.DataStoreDocumentProcessingConfigParsingConfigOverrideOcrParsingConfigArgs\n {\n UseNativeText = true,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/discoveryengine\"\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 := discoveryengine.NewDataStore(ctx, \"document_processing_config\", \u0026discoveryengine.DataStoreArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDataStoreId: pulumi.String(\"data-store-id\"),\n\t\t\tDisplayName: pulumi.String(\"tf-test-structured-datastore\"),\n\t\t\tIndustryVertical: pulumi.String(\"GENERIC\"),\n\t\t\tContentConfig: pulumi.String(\"NO_CONTENT\"),\n\t\t\tSolutionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"SOLUTION_TYPE_SEARCH\"),\n\t\t\t},\n\t\t\tCreateAdvancedSiteSearch: pulumi.Bool(false),\n\t\t\tDocumentProcessingConfig: \u0026discoveryengine.DataStoreDocumentProcessingConfigArgs{\n\t\t\t\tDefaultParsingConfig: \u0026discoveryengine.DataStoreDocumentProcessingConfigDefaultParsingConfigArgs{\n\t\t\t\t\tDigitalParsingConfig: nil,\n\t\t\t\t},\n\t\t\t\tParsingConfigOverrides: discoveryengine.DataStoreDocumentProcessingConfigParsingConfigOverrideArray{\n\t\t\t\t\t\u0026discoveryengine.DataStoreDocumentProcessingConfigParsingConfigOverrideArgs{\n\t\t\t\t\t\tFileType: pulumi.String(\"pdf\"),\n\t\t\t\t\t\tOcrParsingConfig: \u0026discoveryengine.DataStoreDocumentProcessingConfigParsingConfigOverrideOcrParsingConfigArgs{\n\t\t\t\t\t\t\tUseNativeText: 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})\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.discoveryengine.DataStore;\nimport com.pulumi.gcp.discoveryengine.DataStoreArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.DataStoreDocumentProcessingConfigArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.DataStoreDocumentProcessingConfigDefaultParsingConfigArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.DataStoreDocumentProcessingConfigDefaultParsingConfigDigitalParsingConfigArgs;\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 documentProcessingConfig = new DataStore(\"documentProcessingConfig\", DataStoreArgs.builder()\n .location(\"global\")\n .dataStoreId(\"data-store-id\")\n .displayName(\"tf-test-structured-datastore\")\n .industryVertical(\"GENERIC\")\n .contentConfig(\"NO_CONTENT\")\n .solutionTypes(\"SOLUTION_TYPE_SEARCH\")\n .createAdvancedSiteSearch(false)\n .documentProcessingConfig(DataStoreDocumentProcessingConfigArgs.builder()\n .defaultParsingConfig(DataStoreDocumentProcessingConfigDefaultParsingConfigArgs.builder()\n .digitalParsingConfig()\n .build())\n .parsingConfigOverrides(DataStoreDocumentProcessingConfigParsingConfigOverrideArgs.builder()\n .fileType(\"pdf\")\n .ocrParsingConfig(DataStoreDocumentProcessingConfigParsingConfigOverrideOcrParsingConfigArgs.builder()\n .useNativeText(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n documentProcessingConfig:\n type: gcp:discoveryengine:DataStore\n name: document_processing_config\n properties:\n location: global\n dataStoreId: data-store-id\n displayName: tf-test-structured-datastore\n industryVertical: GENERIC\n contentConfig: NO_CONTENT\n solutionTypes:\n - SOLUTION_TYPE_SEARCH\n createAdvancedSiteSearch: false\n documentProcessingConfig:\n defaultParsingConfig:\n digitalParsingConfig: {}\n parsingConfigOverrides:\n - fileType: pdf\n ocrParsingConfig:\n useNativeText: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataStore can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}`\n\n* `{{project}}/{{location}}/{{data_store_id}}`\n\n* `{{location}}/{{data_store_id}}`\n\nWhen using the `pulumi import` command, DataStore can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:discoveryengine/dataStore:DataStore default projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}\n```\n\n```sh\n$ pulumi import gcp:discoveryengine/dataStore:DataStore default {{project}}/{{location}}/{{data_store_id}}\n```\n\n```sh\n$ pulumi import gcp:discoveryengine/dataStore:DataStore default {{location}}/{{data_store_id}}\n```\n\n", + "description": "Data store is a collection of websites and documents used to find answers for\nend-user's questions in Discovery Engine (a.k.a. Vertex AI Search and\nConversation).\n\n\nTo get more information about DataStore, see:\n\n* [API documentation](https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/projects.locations.collections.dataStores)\n* How-to Guides\n * [Create a search data store](https://cloud.google.com/generative-ai-app-builder/docs/create-data-store-es)\n\n## Example Usage\n\n### Discoveryengine Datastore Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.discoveryengine.DataStore(\"basic\", {\n location: \"global\",\n dataStoreId: \"data-store-id\",\n displayName: \"tf-test-structured-datastore\",\n industryVertical: \"GENERIC\",\n contentConfig: \"NO_CONTENT\",\n solutionTypes: [\"SOLUTION_TYPE_SEARCH\"],\n createAdvancedSiteSearch: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.discoveryengine.DataStore(\"basic\",\n location=\"global\",\n data_store_id=\"data-store-id\",\n display_name=\"tf-test-structured-datastore\",\n industry_vertical=\"GENERIC\",\n content_config=\"NO_CONTENT\",\n solution_types=[\"SOLUTION_TYPE_SEARCH\"],\n create_advanced_site_search=False)\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.DiscoveryEngine.DataStore(\"basic\", new()\n {\n Location = \"global\",\n DataStoreId = \"data-store-id\",\n DisplayName = \"tf-test-structured-datastore\",\n IndustryVertical = \"GENERIC\",\n ContentConfig = \"NO_CONTENT\",\n SolutionTypes = new[]\n {\n \"SOLUTION_TYPE_SEARCH\",\n },\n CreateAdvancedSiteSearch = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/discoveryengine\"\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 := discoveryengine.NewDataStore(ctx, \"basic\", \u0026discoveryengine.DataStoreArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDataStoreId: pulumi.String(\"data-store-id\"),\n\t\t\tDisplayName: pulumi.String(\"tf-test-structured-datastore\"),\n\t\t\tIndustryVertical: pulumi.String(\"GENERIC\"),\n\t\t\tContentConfig: pulumi.String(\"NO_CONTENT\"),\n\t\t\tSolutionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"SOLUTION_TYPE_SEARCH\"),\n\t\t\t},\n\t\t\tCreateAdvancedSiteSearch: pulumi.Bool(false),\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.discoveryengine.DataStore;\nimport com.pulumi.gcp.discoveryengine.DataStoreArgs;\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 DataStore(\"basic\", DataStoreArgs.builder()\n .location(\"global\")\n .dataStoreId(\"data-store-id\")\n .displayName(\"tf-test-structured-datastore\")\n .industryVertical(\"GENERIC\")\n .contentConfig(\"NO_CONTENT\")\n .solutionTypes(\"SOLUTION_TYPE_SEARCH\")\n .createAdvancedSiteSearch(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:discoveryengine:DataStore\n properties:\n location: global\n dataStoreId: data-store-id\n displayName: tf-test-structured-datastore\n industryVertical: GENERIC\n contentConfig: NO_CONTENT\n solutionTypes:\n - SOLUTION_TYPE_SEARCH\n createAdvancedSiteSearch: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Discoveryengine Datastore Document Processing Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst documentProcessingConfig = new gcp.discoveryengine.DataStore(\"document_processing_config\", {\n location: \"global\",\n dataStoreId: \"data-store-id\",\n displayName: \"tf-test-structured-datastore\",\n industryVertical: \"GENERIC\",\n contentConfig: \"NO_CONTENT\",\n solutionTypes: [\"SOLUTION_TYPE_SEARCH\"],\n createAdvancedSiteSearch: false,\n documentProcessingConfig: {\n defaultParsingConfig: {\n digitalParsingConfig: {},\n },\n parsingConfigOverrides: [{\n fileType: \"pdf\",\n ocrParsingConfig: {\n useNativeText: true,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndocument_processing_config = gcp.discoveryengine.DataStore(\"document_processing_config\",\n location=\"global\",\n data_store_id=\"data-store-id\",\n display_name=\"tf-test-structured-datastore\",\n industry_vertical=\"GENERIC\",\n content_config=\"NO_CONTENT\",\n solution_types=[\"SOLUTION_TYPE_SEARCH\"],\n create_advanced_site_search=False,\n document_processing_config={\n \"default_parsing_config\": {\n \"digital_parsing_config\": {},\n },\n \"parsing_config_overrides\": [{\n \"file_type\": \"pdf\",\n \"ocr_parsing_config\": {\n \"use_native_text\": True,\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 documentProcessingConfig = new Gcp.DiscoveryEngine.DataStore(\"document_processing_config\", new()\n {\n Location = \"global\",\n DataStoreId = \"data-store-id\",\n DisplayName = \"tf-test-structured-datastore\",\n IndustryVertical = \"GENERIC\",\n ContentConfig = \"NO_CONTENT\",\n SolutionTypes = new[]\n {\n \"SOLUTION_TYPE_SEARCH\",\n },\n CreateAdvancedSiteSearch = false,\n DocumentProcessingConfig = new Gcp.DiscoveryEngine.Inputs.DataStoreDocumentProcessingConfigArgs\n {\n DefaultParsingConfig = new Gcp.DiscoveryEngine.Inputs.DataStoreDocumentProcessingConfigDefaultParsingConfigArgs\n {\n DigitalParsingConfig = null,\n },\n ParsingConfigOverrides = new[]\n {\n new Gcp.DiscoveryEngine.Inputs.DataStoreDocumentProcessingConfigParsingConfigOverrideArgs\n {\n FileType = \"pdf\",\n OcrParsingConfig = new Gcp.DiscoveryEngine.Inputs.DataStoreDocumentProcessingConfigParsingConfigOverrideOcrParsingConfigArgs\n {\n UseNativeText = true,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/discoveryengine\"\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 := discoveryengine.NewDataStore(ctx, \"document_processing_config\", \u0026discoveryengine.DataStoreArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDataStoreId: pulumi.String(\"data-store-id\"),\n\t\t\tDisplayName: pulumi.String(\"tf-test-structured-datastore\"),\n\t\t\tIndustryVertical: pulumi.String(\"GENERIC\"),\n\t\t\tContentConfig: pulumi.String(\"NO_CONTENT\"),\n\t\t\tSolutionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"SOLUTION_TYPE_SEARCH\"),\n\t\t\t},\n\t\t\tCreateAdvancedSiteSearch: pulumi.Bool(false),\n\t\t\tDocumentProcessingConfig: \u0026discoveryengine.DataStoreDocumentProcessingConfigArgs{\n\t\t\t\tDefaultParsingConfig: \u0026discoveryengine.DataStoreDocumentProcessingConfigDefaultParsingConfigArgs{\n\t\t\t\t\tDigitalParsingConfig: nil,\n\t\t\t\t},\n\t\t\t\tParsingConfigOverrides: discoveryengine.DataStoreDocumentProcessingConfigParsingConfigOverrideArray{\n\t\t\t\t\t\u0026discoveryengine.DataStoreDocumentProcessingConfigParsingConfigOverrideArgs{\n\t\t\t\t\t\tFileType: pulumi.String(\"pdf\"),\n\t\t\t\t\t\tOcrParsingConfig: \u0026discoveryengine.DataStoreDocumentProcessingConfigParsingConfigOverrideOcrParsingConfigArgs{\n\t\t\t\t\t\t\tUseNativeText: 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})\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.discoveryengine.DataStore;\nimport com.pulumi.gcp.discoveryengine.DataStoreArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.DataStoreDocumentProcessingConfigArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.DataStoreDocumentProcessingConfigDefaultParsingConfigArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.DataStoreDocumentProcessingConfigDefaultParsingConfigDigitalParsingConfigArgs;\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 documentProcessingConfig = new DataStore(\"documentProcessingConfig\", DataStoreArgs.builder()\n .location(\"global\")\n .dataStoreId(\"data-store-id\")\n .displayName(\"tf-test-structured-datastore\")\n .industryVertical(\"GENERIC\")\n .contentConfig(\"NO_CONTENT\")\n .solutionTypes(\"SOLUTION_TYPE_SEARCH\")\n .createAdvancedSiteSearch(false)\n .documentProcessingConfig(DataStoreDocumentProcessingConfigArgs.builder()\n .defaultParsingConfig(DataStoreDocumentProcessingConfigDefaultParsingConfigArgs.builder()\n .digitalParsingConfig()\n .build())\n .parsingConfigOverrides(DataStoreDocumentProcessingConfigParsingConfigOverrideArgs.builder()\n .fileType(\"pdf\")\n .ocrParsingConfig(DataStoreDocumentProcessingConfigParsingConfigOverrideOcrParsingConfigArgs.builder()\n .useNativeText(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n documentProcessingConfig:\n type: gcp:discoveryengine:DataStore\n name: document_processing_config\n properties:\n location: global\n dataStoreId: data-store-id\n displayName: tf-test-structured-datastore\n industryVertical: GENERIC\n contentConfig: NO_CONTENT\n solutionTypes:\n - SOLUTION_TYPE_SEARCH\n createAdvancedSiteSearch: false\n documentProcessingConfig:\n defaultParsingConfig:\n digitalParsingConfig: {}\n parsingConfigOverrides:\n - fileType: pdf\n ocrParsingConfig:\n useNativeText: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataStore can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}`\n\n* `{{project}}/{{location}}/{{data_store_id}}`\n\n* `{{location}}/{{data_store_id}}`\n\nWhen using the `pulumi import` command, DataStore can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:discoveryengine/dataStore:DataStore default projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}\n```\n\n```sh\n$ pulumi import gcp:discoveryengine/dataStore:DataStore default {{project}}/{{location}}/{{data_store_id}}\n```\n\n```sh\n$ pulumi import gcp:discoveryengine/dataStore:DataStore default {{location}}/{{data_store_id}}\n```\n\n", "properties": { "contentConfig": { "type": "string", @@ -186589,7 +186589,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## Example Usage\n\n### Dns Managed Zone Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"example-zone\",\n dnsName: \"my-domain.com.\",\n description: \"Example DNS zone\",\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 name=\"example-zone\",\n dns_name=\"my-domain.com.\",\n description=\"Example DNS zone\",\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 Name = \"example-zone\",\n DnsName = \"my-domain.com.\",\n Description = \"Example DNS zone\",\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/v7/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\tName: pulumi.String(\"example-zone\"),\n\t\t\tDnsName: pulumi.String(\"my-domain.com.\"),\n\t\t\tDescription: pulumi.String(\"Example DNS zone\"),\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 .name(\"example-zone\")\n .dnsName(\"my-domain.com.\")\n .description(\"Example DNS zone\")\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 name: example-zone\n dnsName: my-domain.com.\n description: Example DNS zone\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Private\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst private_zone = new gcp.dns.ManagedZone(\"private-zone\", {\n name: \"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\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nprivate_zone = gcp.dns.ManagedZone(\"private-zone\",\n name=\"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={\n \"networks\": [\n {\n \"networkUrl\": network_1.id,\n },\n {\n \"networkUrl\": 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 Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var private_zone = new Gcp.Dns.ManagedZone(\"private-zone\", new()\n {\n Name = \"private-zone\",\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/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"network-1\"),\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\tName: pulumi.String(\"network-2\"),\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\tName: pulumi.String(\"private-zone\"),\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 .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var private_zone = new ManagedZone(\"private-zone\", ManagedZoneArgs.builder()\n .name(\"private-zone\")\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 name: private-zone\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 name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Private Forwarding\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst private_zone = new gcp.dns.ManagedZone(\"private-zone\", {\n name: \"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\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nprivate_zone = gcp.dns.ManagedZone(\"private-zone\",\n name=\"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={\n \"networks\": [\n {\n \"networkUrl\": network_1.id,\n },\n {\n \"networkUrl\": network_2.id,\n },\n ],\n },\n forwarding_config={\n \"targetNameServers\": [\n {\n \"ipv4Address\": \"172.16.1.10\",\n },\n {\n \"ipv4Address\": \"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 Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var private_zone = new Gcp.Dns.ManagedZone(\"private-zone\", new()\n {\n Name = \"private-zone\",\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/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"network-1\"),\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\tName: pulumi.String(\"network-2\"),\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\tName: pulumi.String(\"private-zone\"),\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 .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var private_zone = new ManagedZone(\"private-zone\", ManagedZoneArgs.builder()\n .name(\"private-zone\")\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 name: private-zone\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 name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Private Gke\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_1 = new gcp.compute.Subnetwork(\"subnetwork-1\", {\n name: network_1.name,\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 name: \"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 deletionProtection: true,\n});\nconst private_zone_gke = new gcp.dns.ManagedZone(\"private-zone-gke\", {\n name: \"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 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\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nsubnetwork_1 = gcp.compute.Subnetwork(\"subnetwork-1\",\n name=network_1.name,\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 {\n \"rangeName\": \"pod\",\n \"ipCidrRange\": \"10.0.0.0/19\",\n },\n {\n \"rangeName\": \"svc\",\n \"ipCidrRange\": \"10.0.32.0/22\",\n },\n ])\ncluster_1 = gcp.container.Cluster(\"cluster-1\",\n name=\"cluster-1\",\n location=\"us-central1-c\",\n initial_node_count=1,\n networking_mode=\"VPC_NATIVE\",\n default_snat_status={\n \"disabled\": True,\n },\n network=network_1.name,\n subnetwork=subnetwork_1.name,\n private_cluster_config={\n \"enablePrivateEndpoint\": True,\n \"enablePrivateNodes\": True,\n \"masterIpv4CidrBlock\": \"10.42.0.0/28\",\n \"masterGlobalAccessConfig\": {\n \"enabled\": True,\n },\n },\n master_authorized_networks_config={},\n ip_allocation_policy={\n \"clusterSecondaryRangeName\": subnetwork_1.secondary_ip_ranges[0].range_name,\n \"servicesSecondaryRangeName\": subnetwork_1.secondary_ip_ranges[1].range_name,\n },\n deletion_protection=True)\nprivate_zone_gke = gcp.dns.ManagedZone(\"private-zone-gke\",\n name=\"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={\n \"gkeClusters\": [{\n \"gkeClusterName\": 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 Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_1 = new Gcp.Compute.Subnetwork(\"subnetwork-1\", new()\n {\n Name = network_1.Name,\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 Name = \"cluster-1\",\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 DeletionProtection = true,\n });\n\n var private_zone_gke = new Gcp.Dns.ManagedZone(\"private-zone-gke\", new()\n {\n Name = \"private-zone\",\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/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"network-1\"),\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\tName: network_1.Name,\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\tName: pulumi.String(\"cluster-1\"),\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\tDeletionProtection: pulumi.Bool(true),\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\tName: pulumi.String(\"private-zone\"),\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 .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_1 = new Subnetwork(\"subnetwork-1\", SubnetworkArgs.builder()\n .name(network_1.name())\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 .name(\"cluster-1\")\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 .deletionProtection(\"true\")\n .build());\n\n var private_zone_gke = new ManagedZone(\"private-zone-gke\", ManagedZoneArgs.builder()\n .name(\"private-zone\")\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 name: private-zone\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 name: network-1\n autoCreateSubnetworks: false\n subnetwork-1:\n type: gcp:compute:Subnetwork\n properties:\n name: ${[\"network-1\"].name}\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 name: cluster-1\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 deletionProtection: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Private Peering\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_source = new gcp.compute.Network(\"network-source\", {\n name: \"network-source\",\n autoCreateSubnetworks: false,\n});\nconst network_target = new gcp.compute.Network(\"network-target\", {\n name: \"network-target\",\n autoCreateSubnetworks: false,\n});\nconst peering_zone = new gcp.dns.ManagedZone(\"peering-zone\", {\n name: \"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\",\n name=\"network-source\",\n auto_create_subnetworks=False)\nnetwork_target = gcp.compute.Network(\"network-target\",\n name=\"network-target\",\n auto_create_subnetworks=False)\npeering_zone = gcp.dns.ManagedZone(\"peering-zone\",\n name=\"peering-zone\",\n dns_name=\"peering.example.com.\",\n description=\"Example private DNS peering zone\",\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [{\n \"networkUrl\": network_source.id,\n }],\n },\n peering_config={\n \"targetNetwork\": {\n \"networkUrl\": 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 Name = \"network-source\",\n AutoCreateSubnetworks = false,\n });\n\n var network_target = new Gcp.Compute.Network(\"network-target\", new()\n {\n Name = \"network-target\",\n AutoCreateSubnetworks = false,\n });\n\n var peering_zone = new Gcp.Dns.ManagedZone(\"peering-zone\", new()\n {\n Name = \"peering-zone\",\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/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"network-source\"),\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\tName: pulumi.String(\"network-target\"),\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\tName: pulumi.String(\"peering-zone\"),\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 .name(\"network-source\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_target = new Network(\"network-target\", NetworkArgs.builder()\n .name(\"network-target\")\n .autoCreateSubnetworks(false)\n .build());\n\n var peering_zone = new ManagedZone(\"peering-zone\", ManagedZoneArgs.builder()\n .name(\"peering-zone\")\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 name: 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 peeringConfig:\n targetNetwork:\n networkUrl: ${[\"network-target\"].id}\n network-source:\n type: gcp:compute:Network\n properties:\n name: network-source\n autoCreateSubnetworks: false\n network-target:\n type: gcp:compute:Network\n properties:\n name: network-target\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Service Directory\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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});\nconst sd_zone = new gcp.dns.ManagedZone(\"sd-zone\", {\n name: \"peering-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});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"network\",\n autoCreateSubnetworks: false,\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\")\nsd_zone = gcp.dns.ManagedZone(\"sd-zone\",\n name=\"peering-zone\",\n dns_name=\"services.example.com.\",\n description=\"Example private DNS Service Directory zone\",\n visibility=\"private\",\n service_directory_config={\n \"namespace\": {\n \"namespaceUrl\": example.id,\n },\n })\nnetwork = gcp.compute.Network(\"network\",\n name=\"network\",\n auto_create_subnetworks=False)\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 });\n\n var sd_zone = new Gcp.Dns.ManagedZone(\"sd-zone\", new()\n {\n Name = \"peering-zone\",\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 });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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})\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\tName: pulumi.String(\"peering-zone\"),\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})\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\tName: pulumi.String(\"network\"),\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\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 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());\n\n var sd_zone = new ManagedZone(\"sd-zone\", ManagedZoneArgs.builder()\n .name(\"peering-zone\")\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());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sd-zone:\n type: gcp:dns:ManagedZone\n properties:\n name: peering-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 example:\n type: gcp:servicedirectory:Namespace\n properties:\n namespaceId: example\n location: us-central1\n network:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Cloud Logging\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"cloud-logging-enabled-zone\",\n dnsName: \"services.example.com.\",\n description: \"Example cloud logging enabled DNS zone\",\n labels: {\n foo: \"bar\",\n },\n cloudLoggingConfig: {\n enableLogging: true,\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 name=\"cloud-logging-enabled-zone\",\n dns_name=\"services.example.com.\",\n description=\"Example cloud logging enabled DNS zone\",\n labels={\n \"foo\": \"bar\",\n },\n cloud_logging_config={\n \"enableLogging\": 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 cloud_logging_enabled_zone = new Gcp.Dns.ManagedZone(\"cloud-logging-enabled-zone\", new()\n {\n Name = \"cloud-logging-enabled-zone\",\n DnsName = \"services.example.com.\",\n Description = \"Example cloud logging enabled DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n CloudLoggingConfig = new Gcp.Dns.Inputs.ManagedZoneCloudLoggingConfigArgs\n {\n EnableLogging = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"cloud-logging-enabled-zone\"),\n\t\t\tDnsName: pulumi.String(\"services.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example cloud logging enabled DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tCloudLoggingConfig: \u0026dns.ManagedZoneCloudLoggingConfigArgs{\n\t\t\t\tEnableLogging: 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.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 .name(\"cloud-logging-enabled-zone\")\n .dnsName(\"services.example.com.\")\n .description(\"Example cloud logging enabled DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .cloudLoggingConfig(ManagedZoneCloudLoggingConfigArgs.builder()\n .enableLogging(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cloud-logging-enabled-zone:\n type: gcp:dns:ManagedZone\n properties:\n name: cloud-logging-enabled-zone\n dnsName: services.example.com.\n description: Example cloud logging enabled DNS zone\n labels:\n foo: bar\n cloudLoggingConfig:\n enableLogging: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nManagedZone can be imported using any of these accepted formats:\n\n* `projects/{{project}}/managedZones/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ManagedZone can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/managedZone:ManagedZone default projects/{{project}}/managedZones/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dns/managedZone:ManagedZone default {{project}}/{{name}}\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## Example Usage\n\n### Dns Managed Zone Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"example-zone\",\n dnsName: \"my-domain.com.\",\n description: \"Example DNS zone\",\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 name=\"example-zone\",\n dns_name=\"my-domain.com.\",\n description=\"Example DNS zone\",\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 Name = \"example-zone\",\n DnsName = \"my-domain.com.\",\n Description = \"Example DNS zone\",\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/v7/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\tName: pulumi.String(\"example-zone\"),\n\t\t\tDnsName: pulumi.String(\"my-domain.com.\"),\n\t\t\tDescription: pulumi.String(\"Example DNS zone\"),\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 .name(\"example-zone\")\n .dnsName(\"my-domain.com.\")\n .description(\"Example DNS zone\")\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 name: example-zone\n dnsName: my-domain.com.\n description: Example DNS zone\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Private\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst private_zone = new gcp.dns.ManagedZone(\"private-zone\", {\n name: \"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\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nprivate_zone = gcp.dns.ManagedZone(\"private-zone\",\n name=\"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={\n \"networks\": [\n {\n \"network_url\": network_1.id,\n },\n {\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 Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var private_zone = new Gcp.Dns.ManagedZone(\"private-zone\", new()\n {\n Name = \"private-zone\",\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/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"network-1\"),\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\tName: pulumi.String(\"network-2\"),\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\tName: pulumi.String(\"private-zone\"),\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 .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var private_zone = new ManagedZone(\"private-zone\", ManagedZoneArgs.builder()\n .name(\"private-zone\")\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 name: private-zone\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 name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Private Forwarding\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst private_zone = new gcp.dns.ManagedZone(\"private-zone\", {\n name: \"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\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nprivate_zone = gcp.dns.ManagedZone(\"private-zone\",\n name=\"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={\n \"networks\": [\n {\n \"network_url\": network_1.id,\n },\n {\n \"network_url\": network_2.id,\n },\n ],\n },\n forwarding_config={\n \"target_name_servers\": [\n {\n \"ipv4_address\": \"172.16.1.10\",\n },\n {\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 Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var private_zone = new Gcp.Dns.ManagedZone(\"private-zone\", new()\n {\n Name = \"private-zone\",\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/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"network-1\"),\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\tName: pulumi.String(\"network-2\"),\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\tName: pulumi.String(\"private-zone\"),\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 .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var private_zone = new ManagedZone(\"private-zone\", ManagedZoneArgs.builder()\n .name(\"private-zone\")\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 name: private-zone\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 name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Private Gke\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_1 = new gcp.compute.Subnetwork(\"subnetwork-1\", {\n name: network_1.name,\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 name: \"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 deletionProtection: true,\n});\nconst private_zone_gke = new gcp.dns.ManagedZone(\"private-zone-gke\", {\n name: \"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 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\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nsubnetwork_1 = gcp.compute.Subnetwork(\"subnetwork-1\",\n name=network_1.name,\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 {\n \"range_name\": \"pod\",\n \"ip_cidr_range\": \"10.0.0.0/19\",\n },\n {\n \"range_name\": \"svc\",\n \"ip_cidr_range\": \"10.0.32.0/22\",\n },\n ])\ncluster_1 = gcp.container.Cluster(\"cluster-1\",\n name=\"cluster-1\",\n location=\"us-central1-c\",\n initial_node_count=1,\n networking_mode=\"VPC_NATIVE\",\n default_snat_status={\n \"disabled\": True,\n },\n network=network_1.name,\n subnetwork=subnetwork_1.name,\n private_cluster_config={\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\": {\n \"enabled\": True,\n },\n },\n master_authorized_networks_config={},\n ip_allocation_policy={\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 },\n deletion_protection=True)\nprivate_zone_gke = gcp.dns.ManagedZone(\"private-zone-gke\",\n name=\"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={\n \"gke_clusters\": [{\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 Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_1 = new Gcp.Compute.Subnetwork(\"subnetwork-1\", new()\n {\n Name = network_1.Name,\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 Name = \"cluster-1\",\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 DeletionProtection = true,\n });\n\n var private_zone_gke = new Gcp.Dns.ManagedZone(\"private-zone-gke\", new()\n {\n Name = \"private-zone\",\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/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"network-1\"),\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\tName: network_1.Name,\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\tName: pulumi.String(\"cluster-1\"),\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\tDeletionProtection: pulumi.Bool(true),\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\tName: pulumi.String(\"private-zone\"),\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 .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_1 = new Subnetwork(\"subnetwork-1\", SubnetworkArgs.builder()\n .name(network_1.name())\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 .name(\"cluster-1\")\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 .deletionProtection(\"true\")\n .build());\n\n var private_zone_gke = new ManagedZone(\"private-zone-gke\", ManagedZoneArgs.builder()\n .name(\"private-zone\")\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 name: private-zone\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 name: network-1\n autoCreateSubnetworks: false\n subnetwork-1:\n type: gcp:compute:Subnetwork\n properties:\n name: ${[\"network-1\"].name}\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 name: cluster-1\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 deletionProtection: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Private Peering\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_source = new gcp.compute.Network(\"network-source\", {\n name: \"network-source\",\n autoCreateSubnetworks: false,\n});\nconst network_target = new gcp.compute.Network(\"network-target\", {\n name: \"network-target\",\n autoCreateSubnetworks: false,\n});\nconst peering_zone = new gcp.dns.ManagedZone(\"peering-zone\", {\n name: \"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\",\n name=\"network-source\",\n auto_create_subnetworks=False)\nnetwork_target = gcp.compute.Network(\"network-target\",\n name=\"network-target\",\n auto_create_subnetworks=False)\npeering_zone = gcp.dns.ManagedZone(\"peering-zone\",\n name=\"peering-zone\",\n dns_name=\"peering.example.com.\",\n description=\"Example private DNS peering zone\",\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [{\n \"network_url\": network_source.id,\n }],\n },\n peering_config={\n \"target_network\": {\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 Name = \"network-source\",\n AutoCreateSubnetworks = false,\n });\n\n var network_target = new Gcp.Compute.Network(\"network-target\", new()\n {\n Name = \"network-target\",\n AutoCreateSubnetworks = false,\n });\n\n var peering_zone = new Gcp.Dns.ManagedZone(\"peering-zone\", new()\n {\n Name = \"peering-zone\",\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/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"network-source\"),\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\tName: pulumi.String(\"network-target\"),\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\tName: pulumi.String(\"peering-zone\"),\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 .name(\"network-source\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_target = new Network(\"network-target\", NetworkArgs.builder()\n .name(\"network-target\")\n .autoCreateSubnetworks(false)\n .build());\n\n var peering_zone = new ManagedZone(\"peering-zone\", ManagedZoneArgs.builder()\n .name(\"peering-zone\")\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 name: 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 peeringConfig:\n targetNetwork:\n networkUrl: ${[\"network-target\"].id}\n network-source:\n type: gcp:compute:Network\n properties:\n name: network-source\n autoCreateSubnetworks: false\n network-target:\n type: gcp:compute:Network\n properties:\n name: network-target\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Service Directory\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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});\nconst sd_zone = new gcp.dns.ManagedZone(\"sd-zone\", {\n name: \"peering-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});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"network\",\n autoCreateSubnetworks: false,\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\")\nsd_zone = gcp.dns.ManagedZone(\"sd-zone\",\n name=\"peering-zone\",\n dns_name=\"services.example.com.\",\n description=\"Example private DNS Service Directory zone\",\n visibility=\"private\",\n service_directory_config={\n \"namespace\": {\n \"namespace_url\": example.id,\n },\n })\nnetwork = gcp.compute.Network(\"network\",\n name=\"network\",\n auto_create_subnetworks=False)\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 });\n\n var sd_zone = new Gcp.Dns.ManagedZone(\"sd-zone\", new()\n {\n Name = \"peering-zone\",\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 });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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})\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\tName: pulumi.String(\"peering-zone\"),\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})\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\tName: pulumi.String(\"network\"),\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\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 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());\n\n var sd_zone = new ManagedZone(\"sd-zone\", ManagedZoneArgs.builder()\n .name(\"peering-zone\")\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());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sd-zone:\n type: gcp:dns:ManagedZone\n properties:\n name: peering-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 example:\n type: gcp:servicedirectory:Namespace\n properties:\n namespaceId: example\n location: us-central1\n network:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Cloud Logging\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\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 name: \"cloud-logging-enabled-zone\",\n dnsName: \"services.example.com.\",\n description: \"Example cloud logging enabled DNS zone\",\n labels: {\n foo: \"bar\",\n },\n cloudLoggingConfig: {\n enableLogging: true,\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 name=\"cloud-logging-enabled-zone\",\n dns_name=\"services.example.com.\",\n description=\"Example cloud logging enabled DNS zone\",\n labels={\n \"foo\": \"bar\",\n },\n cloud_logging_config={\n \"enable_logging\": 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 cloud_logging_enabled_zone = new Gcp.Dns.ManagedZone(\"cloud-logging-enabled-zone\", new()\n {\n Name = \"cloud-logging-enabled-zone\",\n DnsName = \"services.example.com.\",\n Description = \"Example cloud logging enabled DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n CloudLoggingConfig = new Gcp.Dns.Inputs.ManagedZoneCloudLoggingConfigArgs\n {\n EnableLogging = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"cloud-logging-enabled-zone\"),\n\t\t\tDnsName: pulumi.String(\"services.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example cloud logging enabled DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tCloudLoggingConfig: \u0026dns.ManagedZoneCloudLoggingConfigArgs{\n\t\t\t\tEnableLogging: 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.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 .name(\"cloud-logging-enabled-zone\")\n .dnsName(\"services.example.com.\")\n .description(\"Example cloud logging enabled DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .cloudLoggingConfig(ManagedZoneCloudLoggingConfigArgs.builder()\n .enableLogging(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cloud-logging-enabled-zone:\n type: gcp:dns:ManagedZone\n properties:\n name: cloud-logging-enabled-zone\n dnsName: services.example.com.\n description: Example cloud logging enabled DNS zone\n labels:\n foo: bar\n cloudLoggingConfig:\n enableLogging: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nManagedZone can be imported using any of these accepted formats:\n\n* `projects/{{project}}/managedZones/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ManagedZone can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/managedZone:ManagedZone default projects/{{project}}/managedZones/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dns/managedZone:ManagedZone default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dns/managedZone:ManagedZone default {{name}}\n```\n\n", "properties": { "cloudLoggingConfig": { "$ref": "#/types/gcp:dns/ManagedZoneCloudLoggingConfig:ManagedZoneCloudLoggingConfig", @@ -186871,7 +186871,7 @@ } }, "gcp:dns/policy:Policy": { - "description": "A policy is a collection of DNS rules applied to one or more Virtual\nPrivate Cloud resources.\n\n\nTo get more information about Policy, see:\n\n* [API documentation](https://cloud.google.com/dns/docs/reference/v1beta2/policies)\n* How-to Guides\n * [Using DNS server policies](https://cloud.google.com/dns/zones/#using-dns-server-policies)\n\n## Example Usage\n\n### Dns Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst example_policy = new gcp.dns.Policy(\"example-policy\", {\n name: \"example-policy\",\n enableInboundForwarding: true,\n enableLogging: true,\n alternativeNameServerConfig: {\n targetNameServers: [\n {\n ipv4Address: \"172.16.1.10\",\n forwardingPath: \"private\",\n },\n {\n ipv4Address: \"172.16.1.20\",\n },\n ],\n },\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nexample_policy = gcp.dns.Policy(\"example-policy\",\n name=\"example-policy\",\n enable_inbound_forwarding=True,\n enable_logging=True,\n alternative_name_server_config={\n \"targetNameServers\": [\n {\n \"ipv4Address\": \"172.16.1.10\",\n \"forwardingPath\": \"private\",\n },\n {\n \"ipv4Address\": \"172.16.1.20\",\n },\n ],\n },\n networks=[\n {\n \"networkUrl\": network_1.id,\n },\n {\n \"networkUrl\": network_2.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 Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var example_policy = new Gcp.Dns.Policy(\"example-policy\", new()\n {\n Name = \"example-policy\",\n EnableInboundForwarding = true,\n EnableLogging = true,\n AlternativeNameServerConfig = new Gcp.Dns.Inputs.PolicyAlternativeNameServerConfigArgs\n {\n TargetNameServers = new[]\n {\n new Gcp.Dns.Inputs.PolicyAlternativeNameServerConfigTargetNameServerArgs\n {\n Ipv4Address = \"172.16.1.10\",\n ForwardingPath = \"private\",\n },\n new Gcp.Dns.Inputs.PolicyAlternativeNameServerConfigTargetNameServerArgs\n {\n Ipv4Address = \"172.16.1.20\",\n },\n },\n },\n Networks = new[]\n {\n new Gcp.Dns.Inputs.PolicyNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.PolicyNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"network-1\"),\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\tName: pulumi.String(\"network-2\"),\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.NewPolicy(ctx, \"example-policy\", \u0026dns.PolicyArgs{\n\t\t\tName: pulumi.String(\"example-policy\"),\n\t\t\tEnableInboundForwarding: pulumi.Bool(true),\n\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\tAlternativeNameServerConfig: \u0026dns.PolicyAlternativeNameServerConfigArgs{\n\t\t\t\tTargetNameServers: dns.PolicyAlternativeNameServerConfigTargetNameServerArray{\n\t\t\t\t\t\u0026dns.PolicyAlternativeNameServerConfigTargetNameServerArgs{\n\t\t\t\t\t\tIpv4Address: pulumi.String(\"172.16.1.10\"),\n\t\t\t\t\t\tForwardingPath: pulumi.String(\"private\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.PolicyAlternativeNameServerConfigTargetNameServerArgs{\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\tNetworks: dns.PolicyNetworkArray{\n\t\t\t\t\u0026dns.PolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t},\n\t\t\t\t\u0026dns.PolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_2.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.Policy;\nimport com.pulumi.gcp.dns.PolicyArgs;\nimport com.pulumi.gcp.dns.inputs.PolicyAlternativeNameServerConfigArgs;\nimport com.pulumi.gcp.dns.inputs.PolicyNetworkArgs;\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 .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var example_policy = new Policy(\"example-policy\", PolicyArgs.builder()\n .name(\"example-policy\")\n .enableInboundForwarding(true)\n .enableLogging(true)\n .alternativeNameServerConfig(PolicyAlternativeNameServerConfigArgs.builder()\n .targetNameServers( \n PolicyAlternativeNameServerConfigTargetNameServerArgs.builder()\n .ipv4Address(\"172.16.1.10\")\n .forwardingPath(\"private\")\n .build(),\n PolicyAlternativeNameServerConfigTargetNameServerArgs.builder()\n .ipv4Address(\"172.16.1.20\")\n .build())\n .build())\n .networks( \n PolicyNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n PolicyNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-policy:\n type: gcp:dns:Policy\n properties:\n name: example-policy\n enableInboundForwarding: true\n enableLogging: true\n alternativeNameServerConfig:\n targetNameServers:\n - ipv4Address: 172.16.1.10\n forwardingPath: private\n - ipv4Address: 172.16.1.20\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n network-1:\n type: gcp:compute:Network\n properties:\n name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/policies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Policy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/policy:Policy default projects/{{project}}/policies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dns/policy:Policy default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dns/policy:Policy default {{name}}\n```\n\n", + "description": "A policy is a collection of DNS rules applied to one or more Virtual\nPrivate Cloud resources.\n\n\nTo get more information about Policy, see:\n\n* [API documentation](https://cloud.google.com/dns/docs/reference/v1beta2/policies)\n* How-to Guides\n * [Using DNS server policies](https://cloud.google.com/dns/zones/#using-dns-server-policies)\n\n## Example Usage\n\n### Dns Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst example_policy = new gcp.dns.Policy(\"example-policy\", {\n name: \"example-policy\",\n enableInboundForwarding: true,\n enableLogging: true,\n alternativeNameServerConfig: {\n targetNameServers: [\n {\n ipv4Address: \"172.16.1.10\",\n forwardingPath: \"private\",\n },\n {\n ipv4Address: \"172.16.1.20\",\n },\n ],\n },\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nexample_policy = gcp.dns.Policy(\"example-policy\",\n name=\"example-policy\",\n enable_inbound_forwarding=True,\n enable_logging=True,\n alternative_name_server_config={\n \"target_name_servers\": [\n {\n \"ipv4_address\": \"172.16.1.10\",\n \"forwarding_path\": \"private\",\n },\n {\n \"ipv4_address\": \"172.16.1.20\",\n },\n ],\n },\n networks=[\n {\n \"network_url\": network_1.id,\n },\n {\n \"network_url\": network_2.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 Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var example_policy = new Gcp.Dns.Policy(\"example-policy\", new()\n {\n Name = \"example-policy\",\n EnableInboundForwarding = true,\n EnableLogging = true,\n AlternativeNameServerConfig = new Gcp.Dns.Inputs.PolicyAlternativeNameServerConfigArgs\n {\n TargetNameServers = new[]\n {\n new Gcp.Dns.Inputs.PolicyAlternativeNameServerConfigTargetNameServerArgs\n {\n Ipv4Address = \"172.16.1.10\",\n ForwardingPath = \"private\",\n },\n new Gcp.Dns.Inputs.PolicyAlternativeNameServerConfigTargetNameServerArgs\n {\n Ipv4Address = \"172.16.1.20\",\n },\n },\n },\n Networks = new[]\n {\n new Gcp.Dns.Inputs.PolicyNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.PolicyNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"network-1\"),\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\tName: pulumi.String(\"network-2\"),\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.NewPolicy(ctx, \"example-policy\", \u0026dns.PolicyArgs{\n\t\t\tName: pulumi.String(\"example-policy\"),\n\t\t\tEnableInboundForwarding: pulumi.Bool(true),\n\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\tAlternativeNameServerConfig: \u0026dns.PolicyAlternativeNameServerConfigArgs{\n\t\t\t\tTargetNameServers: dns.PolicyAlternativeNameServerConfigTargetNameServerArray{\n\t\t\t\t\t\u0026dns.PolicyAlternativeNameServerConfigTargetNameServerArgs{\n\t\t\t\t\t\tIpv4Address: pulumi.String(\"172.16.1.10\"),\n\t\t\t\t\t\tForwardingPath: pulumi.String(\"private\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.PolicyAlternativeNameServerConfigTargetNameServerArgs{\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\tNetworks: dns.PolicyNetworkArray{\n\t\t\t\t\u0026dns.PolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t},\n\t\t\t\t\u0026dns.PolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_2.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.Policy;\nimport com.pulumi.gcp.dns.PolicyArgs;\nimport com.pulumi.gcp.dns.inputs.PolicyAlternativeNameServerConfigArgs;\nimport com.pulumi.gcp.dns.inputs.PolicyNetworkArgs;\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 .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var example_policy = new Policy(\"example-policy\", PolicyArgs.builder()\n .name(\"example-policy\")\n .enableInboundForwarding(true)\n .enableLogging(true)\n .alternativeNameServerConfig(PolicyAlternativeNameServerConfigArgs.builder()\n .targetNameServers( \n PolicyAlternativeNameServerConfigTargetNameServerArgs.builder()\n .ipv4Address(\"172.16.1.10\")\n .forwardingPath(\"private\")\n .build(),\n PolicyAlternativeNameServerConfigTargetNameServerArgs.builder()\n .ipv4Address(\"172.16.1.20\")\n .build())\n .build())\n .networks( \n PolicyNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n PolicyNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-policy:\n type: gcp:dns:Policy\n properties:\n name: example-policy\n enableInboundForwarding: true\n enableLogging: true\n alternativeNameServerConfig:\n targetNameServers:\n - ipv4Address: 172.16.1.10\n forwardingPath: private\n - ipv4Address: 172.16.1.20\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n network-1:\n type: gcp:compute:Network\n properties:\n name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/policies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Policy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/policy:Policy default projects/{{project}}/policies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dns/policy:Policy default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dns/policy:Policy default {{name}}\n```\n\n", "properties": { "alternativeNameServerConfig": { "$ref": "#/types/gcp:dns/PolicyAlternativeNameServerConfig:PolicyAlternativeNameServerConfig", @@ -186985,7 +186985,7 @@ } }, "gcp:dns/recordSet:RecordSet": { - "description": "## Example Usage\n\n### Binding a DNS name to the ephemeral IP of a new instance:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst frontendInstance = new gcp.compute.Instance(\"frontend\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"frontend\",\n machineType: \"g1-small\",\n zone: \"us-central1-b\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n});\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst frontend = new gcp.dns.RecordSet(\"frontend\", {\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(\"frontend\",\n network_interfaces=[{\n \"accessConfigs\": [{}],\n \"network\": \"default\",\n }],\n name=\"frontend\",\n machine_type=\"g1-small\",\n zone=\"us-central1-b\",\n boot_disk={\n \"initializeParams\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n })\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nfrontend = gcp.dns.RecordSet(\"frontend\",\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(\"frontend\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"frontend\",\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 });\n\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var frontend = new Gcp.Dns.RecordSet(\"frontend\", 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/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"frontend\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"frontend\"),\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})\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\tName: pulumi.String(\"prod-zone\"),\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, \"frontend\", \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.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\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 .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"frontend\")\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 .build());\n\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var frontend = new RecordSet(\"frontend\", 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 frontend:\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 name: frontend\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: frontend\n machineType: g1-small\n zone: us-central1-b\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding an A record\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst a = new gcp.dns.RecordSet(\"a\", {\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\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\na = gcp.dns.RecordSet(\"a\",\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 Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var a = new Gcp.Dns.RecordSet(\"a\", 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/v7/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\tName: pulumi.String(\"prod-zone\"),\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, \"a\", \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 .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var a = new RecordSet(\"a\", 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 a:\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 name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding an MX record\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\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\",\n name=\"prod-zone\",\n 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 Name = \"prod-zone\",\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/v7/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\tName: pulumi.String(\"prod-zone\"),\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 .name(\"prod-zone\")\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 name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\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\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\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\",\n name=\"prod-zone\",\n 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 Name = \"prod-zone\",\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/v7/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\tName: pulumi.String(\"prod-zone\"),\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 .name(\"prod-zone\")\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 name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\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\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\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\",\n name=\"prod-zone\",\n 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 Name = \"prod-zone\",\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/v7/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\tName: pulumi.String(\"prod-zone\"),\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 .name(\"prod-zone\")\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 name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Setting Routing Policy instead of using rrdatas\n### Geolocation\n\n\u003c!--Start PulumiCodeChooser --\u003e\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.${prod.dnsName}`,\n managedZone: 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.{prod['dnsName']}\",\n managed_zone=prod[\"name\"],\n type=\"A\",\n ttl=300,\n routing_policy={\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```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.{prod.DnsName}\",\n ManagedZone = 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/v7/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\", prod.DnsName)),\n\t\t\tManagedZone: pulumi.Any(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\", prod.dnsName()))\n .managedZone(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.${prod.dnsName}\n managedZone: ${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\u003c!--End PulumiCodeChooser --\u003e\n\n### Failover\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst prodRegionBackendService = new gcp.compute.RegionBackendService(\"prod\", {\n name: \"prod-backend\",\n region: \"us-central1\",\n});\nconst prodNetwork = new gcp.compute.Network(\"prod\", {name: \"prod-network\"});\nconst prodForwardingRule = new gcp.compute.ForwardingRule(\"prod\", {\n name: \"prod-ilb\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: prodRegionBackendService.id,\n allPorts: true,\n network: prodNetwork.name,\n allowGlobalAccess: true,\n});\nconst a = new gcp.dns.RecordSet(\"a\", {\n name: pulumi.interpolate`backend.${prod.dnsName}`,\n managedZone: prod.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 = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nprod_region_backend_service = gcp.compute.RegionBackendService(\"prod\",\n name=\"prod-backend\",\n region=\"us-central1\")\nprod_network = gcp.compute.Network(\"prod\", name=\"prod-network\")\nprod_forwarding_rule = gcp.compute.ForwardingRule(\"prod\",\n name=\"prod-ilb\",\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)\na = gcp.dns.RecordSet(\"a\",\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 routing_policy={\n \"primaryBackup\": {\n \"trickleRatio\": 0.1,\n \"primary\": {\n \"internalLoadBalancers\": [{\n \"loadBalancerType\": \"regionalL4ilb\",\n \"ipAddress\": prod_forwarding_rule.ip_address,\n \"port\": \"80\",\n \"ipProtocol\": \"tcp\",\n \"networkUrl\": prod_network.id,\n \"project\": prod_forwarding_rule.project,\n \"region\": prod_forwarding_rule.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```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 Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var prodRegionBackendService = new Gcp.Compute.RegionBackendService(\"prod\", new()\n {\n Name = \"prod-backend\",\n Region = \"us-central1\",\n });\n\n var prodNetwork = new Gcp.Compute.Network(\"prod\", new()\n {\n Name = \"prod-network\",\n });\n\n var prodForwardingRule = new Gcp.Compute.ForwardingRule(\"prod\", new()\n {\n Name = \"prod-ilb\",\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 a = new Gcp.Dns.RecordSet(\"a\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"backend.{dnsName}\"),\n ManagedZone = prod.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/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"prod-zone\"),\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, \"prod\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"prod-backend\"),\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, \"prod\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"prod-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodForwardingRule, err := compute.NewForwardingRule(ctx, \"prod\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"prod-ilb\"),\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, \"a\", \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\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.NetworkArgs;\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 prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var prodRegionBackendService = new RegionBackendService(\"prodRegionBackendService\", RegionBackendServiceArgs.builder()\n .name(\"prod-backend\")\n .region(\"us-central1\")\n .build());\n\n var prodNetwork = new Network(\"prodNetwork\", NetworkArgs.builder()\n .name(\"prod-network\")\n .build());\n\n var prodForwardingRule = new ForwardingRule(\"prodForwardingRule\", ForwardingRuleArgs.builder()\n .name(\"prod-ilb\")\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 a = new RecordSet(\"a\", 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 .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 a:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prod.dnsName}\n managedZone: ${prod.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 prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n prodForwardingRule:\n type: gcp:compute:ForwardingRule\n name: prod\n properties:\n name: prod-ilb\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 name: prod\n properties:\n name: prod-backend\n region: us-central1\n prodNetwork:\n type: gcp:compute:Network\n name: prod\n properties:\n name: prod-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDNS record sets can be imported using either of these accepted formats:\n\n* `projects/{{project}}/managedZones/{{zone}}/rrsets/{{name}}/{{type}}`\n\n* `{{project}}/{{zone}}/{{name}}/{{type}}`\n\n* `{{zone}}/{{name}}/{{type}}`\n\nWhen using the `pulumi import` command, DNS record sets can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/recordSet:RecordSet default projects/{{project}}/managedZones/{{zone}}/rrsets/{{name}}/{{type}}\n```\n\n```sh\n$ pulumi import gcp:dns/recordSet:RecordSet default {{project}}/{{zone}}/{{name}}/{{type}}\n```\n\n```sh\n$ pulumi import gcp:dns/recordSet:RecordSet default {{zone}}/{{name}}/{{type}}\n```\n\nNote: The record name must include the trailing dot at the end.\n\n", + "description": "## Example Usage\n\n### Binding a DNS name to the ephemeral IP of a new instance:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst frontendInstance = new gcp.compute.Instance(\"frontend\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"frontend\",\n machineType: \"g1-small\",\n zone: \"us-central1-b\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n});\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst frontend = new gcp.dns.RecordSet(\"frontend\", {\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(\"frontend\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"frontend\",\n machine_type=\"g1-small\",\n zone=\"us-central1-b\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n })\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nfrontend = gcp.dns.RecordSet(\"frontend\",\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(\"frontend\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"frontend\",\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 });\n\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var frontend = new Gcp.Dns.RecordSet(\"frontend\", 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/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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, \"frontend\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"frontend\"),\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})\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\tName: pulumi.String(\"prod-zone\"),\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, \"frontend\", \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\tpulumi.String(frontendInstance.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.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\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 .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"frontend\")\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 .build());\n\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var frontend = new RecordSet(\"frontend\", 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 frontend:\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 name: frontend\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: frontend\n machineType: g1-small\n zone: us-central1-b\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding an A record\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst a = new gcp.dns.RecordSet(\"a\", {\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\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\na = gcp.dns.RecordSet(\"a\",\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 Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var a = new Gcp.Dns.RecordSet(\"a\", 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/v7/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\tName: pulumi.String(\"prod-zone\"),\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, \"a\", \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 .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var a = new RecordSet(\"a\", 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 a:\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 name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding an MX record\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\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\",\n name=\"prod-zone\",\n 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 Name = \"prod-zone\",\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/v7/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\tName: pulumi.String(\"prod-zone\"),\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 .name(\"prod-zone\")\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 name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\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\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\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\",\n name=\"prod-zone\",\n 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 Name = \"prod-zone\",\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/v7/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\tName: pulumi.String(\"prod-zone\"),\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 .name(\"prod-zone\")\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 name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\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\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\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\",\n name=\"prod-zone\",\n 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 Name = \"prod-zone\",\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/v7/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\tName: pulumi.String(\"prod-zone\"),\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 .name(\"prod-zone\")\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 name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Setting Routing Policy instead of using rrdatas\n### Geolocation\n\n\u003c!--Start PulumiCodeChooser --\u003e\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.${prod.dnsName}`,\n managedZone: 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.{prod['dnsName']}\",\n managed_zone=prod[\"name\"],\n type=\"A\",\n ttl=300,\n routing_policy={\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```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.{prod.DnsName}\",\n ManagedZone = 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/v7/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\", prod.DnsName)),\n\t\t\tManagedZone: pulumi.Any(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\", prod.dnsName()))\n .managedZone(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.${prod.dnsName}\n managedZone: ${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\u003c!--End PulumiCodeChooser --\u003e\n\n### Failover\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst prodRegionBackendService = new gcp.compute.RegionBackendService(\"prod\", {\n name: \"prod-backend\",\n region: \"us-central1\",\n});\nconst prodNetwork = new gcp.compute.Network(\"prod\", {name: \"prod-network\"});\nconst prodForwardingRule = new gcp.compute.ForwardingRule(\"prod\", {\n name: \"prod-ilb\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: prodRegionBackendService.id,\n allPorts: true,\n network: prodNetwork.name,\n allowGlobalAccess: true,\n});\nconst a = new gcp.dns.RecordSet(\"a\", {\n name: pulumi.interpolate`backend.${prod.dnsName}`,\n managedZone: prod.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 = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nprod_region_backend_service = gcp.compute.RegionBackendService(\"prod\",\n name=\"prod-backend\",\n region=\"us-central1\")\nprod_network = gcp.compute.Network(\"prod\", name=\"prod-network\")\nprod_forwarding_rule = gcp.compute.ForwardingRule(\"prod\",\n name=\"prod-ilb\",\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)\na = gcp.dns.RecordSet(\"a\",\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 routing_policy={\n \"primary_backup\": {\n \"trickle_ratio\": 0.1,\n \"primary\": {\n \"internal_load_balancers\": [{\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 {\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```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 Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var prodRegionBackendService = new Gcp.Compute.RegionBackendService(\"prod\", new()\n {\n Name = \"prod-backend\",\n Region = \"us-central1\",\n });\n\n var prodNetwork = new Gcp.Compute.Network(\"prod\", new()\n {\n Name = \"prod-network\",\n });\n\n var prodForwardingRule = new Gcp.Compute.ForwardingRule(\"prod\", new()\n {\n Name = \"prod-ilb\",\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 a = new Gcp.Dns.RecordSet(\"a\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"backend.{dnsName}\"),\n ManagedZone = prod.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/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"prod-zone\"),\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, \"prod\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"prod-backend\"),\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, \"prod\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"prod-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodForwardingRule, err := compute.NewForwardingRule(ctx, \"prod\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"prod-ilb\"),\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, \"a\", \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\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.NetworkArgs;\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 prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var prodRegionBackendService = new RegionBackendService(\"prodRegionBackendService\", RegionBackendServiceArgs.builder()\n .name(\"prod-backend\")\n .region(\"us-central1\")\n .build());\n\n var prodNetwork = new Network(\"prodNetwork\", NetworkArgs.builder()\n .name(\"prod-network\")\n .build());\n\n var prodForwardingRule = new ForwardingRule(\"prodForwardingRule\", ForwardingRuleArgs.builder()\n .name(\"prod-ilb\")\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 a = new RecordSet(\"a\", 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 .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 a:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prod.dnsName}\n managedZone: ${prod.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 prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n prodForwardingRule:\n type: gcp:compute:ForwardingRule\n name: prod\n properties:\n name: prod-ilb\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 name: prod\n properties:\n name: prod-backend\n region: us-central1\n prodNetwork:\n type: gcp:compute:Network\n name: prod\n properties:\n name: prod-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDNS record sets can be imported using either of these accepted formats:\n\n* `projects/{{project}}/managedZones/{{zone}}/rrsets/{{name}}/{{type}}`\n\n* `{{project}}/{{zone}}/{{name}}/{{type}}`\n\n* `{{zone}}/{{name}}/{{type}}`\n\nWhen using the `pulumi import` command, DNS record sets can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/recordSet:RecordSet default projects/{{project}}/managedZones/{{zone}}/rrsets/{{name}}/{{type}}\n```\n\n```sh\n$ pulumi import gcp:dns/recordSet:RecordSet default {{project}}/{{zone}}/{{name}}/{{type}}\n```\n\n```sh\n$ pulumi import gcp:dns/recordSet:RecordSet default {{zone}}/{{name}}/{{type}}\n```\n\nNote: The record name must include the trailing dot at the end.\n\n", "properties": { "managedZone": { "type": "string", @@ -187105,7 +187105,7 @@ } }, "gcp:dns/responsePolicy:ResponsePolicy": { - "description": "A Response Policy is a collection of selectors that apply to queries\nmade against one or more Virtual Private Cloud networks.\n\n\n\n## Example Usage\n\n### Dns Response Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_1 = new gcp.compute.Subnetwork(\"subnetwork-1\", {\n name: network_1.name,\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 name: \"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 deletionProtection: true,\n});\nconst example_response_policy = new gcp.dns.ResponsePolicy(\"example-response-policy\", {\n responsePolicyName: \"example-response-policy\",\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n gkeClusters: [{\n gkeClusterName: cluster_1.id,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nsubnetwork_1 = gcp.compute.Subnetwork(\"subnetwork-1\",\n name=network_1.name,\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 {\n \"rangeName\": \"pod\",\n \"ipCidrRange\": \"10.0.0.0/19\",\n },\n {\n \"rangeName\": \"svc\",\n \"ipCidrRange\": \"10.0.32.0/22\",\n },\n ])\ncluster_1 = gcp.container.Cluster(\"cluster-1\",\n name=\"cluster-1\",\n location=\"us-central1-c\",\n initial_node_count=1,\n networking_mode=\"VPC_NATIVE\",\n default_snat_status={\n \"disabled\": True,\n },\n network=network_1.name,\n subnetwork=subnetwork_1.name,\n private_cluster_config={\n \"enablePrivateEndpoint\": True,\n \"enablePrivateNodes\": True,\n \"masterIpv4CidrBlock\": \"10.42.0.0/28\",\n \"masterGlobalAccessConfig\": {\n \"enabled\": True,\n },\n },\n master_authorized_networks_config={},\n ip_allocation_policy={\n \"clusterSecondaryRangeName\": subnetwork_1.secondary_ip_ranges[0].range_name,\n \"servicesSecondaryRangeName\": subnetwork_1.secondary_ip_ranges[1].range_name,\n },\n deletion_protection=True)\nexample_response_policy = gcp.dns.ResponsePolicy(\"example-response-policy\",\n response_policy_name=\"example-response-policy\",\n networks=[\n {\n \"networkUrl\": network_1.id,\n },\n {\n \"networkUrl\": network_2.id,\n },\n ],\n gke_clusters=[{\n \"gkeClusterName\": cluster_1.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 network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_1 = new Gcp.Compute.Subnetwork(\"subnetwork-1\", new()\n {\n Name = network_1.Name,\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 Name = \"cluster-1\",\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 DeletionProtection = true,\n });\n\n var example_response_policy = new Gcp.Dns.ResponsePolicy(\"example-response-policy\", new()\n {\n ResponsePolicyName = \"example-response-policy\",\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ResponsePolicyNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.ResponsePolicyNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n GkeClusters = new[]\n {\n new Gcp.Dns.Inputs.ResponsePolicyGkeClusterArgs\n {\n GkeClusterName = cluster_1.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"network-1\"),\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\tName: pulumi.String(\"network-2\"),\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\tName: network_1.Name,\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\tName: pulumi.String(\"cluster-1\"),\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\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewResponsePolicy(ctx, \"example-response-policy\", \u0026dns.ResponsePolicyArgs{\n\t\t\tResponsePolicyName: pulumi.String(\"example-response-policy\"),\n\t\t\tNetworks: dns.ResponsePolicyNetworkArray{\n\t\t\t\t\u0026dns.ResponsePolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t},\n\t\t\t\t\u0026dns.ResponsePolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_2.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tGkeClusters: dns.ResponsePolicyGkeClusterArray{\n\t\t\t\t\u0026dns.ResponsePolicyGkeClusterArgs{\n\t\t\t\t\tGkeClusterName: cluster_1.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.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.ResponsePolicy;\nimport com.pulumi.gcp.dns.ResponsePolicyArgs;\nimport com.pulumi.gcp.dns.inputs.ResponsePolicyNetworkArgs;\nimport com.pulumi.gcp.dns.inputs.ResponsePolicyGkeClusterArgs;\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 .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_1 = new Subnetwork(\"subnetwork-1\", SubnetworkArgs.builder()\n .name(network_1.name())\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 .name(\"cluster-1\")\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 .deletionProtection(\"true\")\n .build());\n\n var example_response_policy = new ResponsePolicy(\"example-response-policy\", ResponsePolicyArgs.builder()\n .responsePolicyName(\"example-response-policy\")\n .networks( \n ResponsePolicyNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n ResponsePolicyNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .gkeClusters(ResponsePolicyGkeClusterArgs.builder()\n .gkeClusterName(cluster_1.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-1:\n type: gcp:compute:Network\n properties:\n name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n subnetwork-1:\n type: gcp:compute:Subnetwork\n properties:\n name: ${[\"network-1\"].name}\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 name: cluster-1\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 deletionProtection: 'true'\n example-response-policy:\n type: gcp:dns:ResponsePolicy\n properties:\n responsePolicyName: example-response-policy\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n gkeClusters:\n - gkeClusterName: ${[\"cluster-1\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResponsePolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/responsePolicies/{{response_policy_name}}`\n\n* `{{project}}/{{response_policy_name}}`\n\n* `{{response_policy_name}}`\n\nWhen using the `pulumi import` command, ResponsePolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/responsePolicy:ResponsePolicy default projects/{{project}}/responsePolicies/{{response_policy_name}}\n```\n\n```sh\n$ pulumi import gcp:dns/responsePolicy:ResponsePolicy default {{project}}/{{response_policy_name}}\n```\n\n```sh\n$ pulumi import gcp:dns/responsePolicy:ResponsePolicy default {{response_policy_name}}\n```\n\n", + "description": "A Response Policy is a collection of selectors that apply to queries\nmade against one or more Virtual Private Cloud networks.\n\n\n\n## Example Usage\n\n### Dns Response Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_1 = new gcp.compute.Subnetwork(\"subnetwork-1\", {\n name: network_1.name,\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 name: \"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 deletionProtection: true,\n});\nconst example_response_policy = new gcp.dns.ResponsePolicy(\"example-response-policy\", {\n responsePolicyName: \"example-response-policy\",\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n gkeClusters: [{\n gkeClusterName: cluster_1.id,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nsubnetwork_1 = gcp.compute.Subnetwork(\"subnetwork-1\",\n name=network_1.name,\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 {\n \"range_name\": \"pod\",\n \"ip_cidr_range\": \"10.0.0.0/19\",\n },\n {\n \"range_name\": \"svc\",\n \"ip_cidr_range\": \"10.0.32.0/22\",\n },\n ])\ncluster_1 = gcp.container.Cluster(\"cluster-1\",\n name=\"cluster-1\",\n location=\"us-central1-c\",\n initial_node_count=1,\n networking_mode=\"VPC_NATIVE\",\n default_snat_status={\n \"disabled\": True,\n },\n network=network_1.name,\n subnetwork=subnetwork_1.name,\n private_cluster_config={\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\": {\n \"enabled\": True,\n },\n },\n master_authorized_networks_config={},\n ip_allocation_policy={\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 },\n deletion_protection=True)\nexample_response_policy = gcp.dns.ResponsePolicy(\"example-response-policy\",\n response_policy_name=\"example-response-policy\",\n networks=[\n {\n \"network_url\": network_1.id,\n },\n {\n \"network_url\": network_2.id,\n },\n ],\n gke_clusters=[{\n \"gke_cluster_name\": cluster_1.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 network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_1 = new Gcp.Compute.Subnetwork(\"subnetwork-1\", new()\n {\n Name = network_1.Name,\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 Name = \"cluster-1\",\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 DeletionProtection = true,\n });\n\n var example_response_policy = new Gcp.Dns.ResponsePolicy(\"example-response-policy\", new()\n {\n ResponsePolicyName = \"example-response-policy\",\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ResponsePolicyNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.ResponsePolicyNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n GkeClusters = new[]\n {\n new Gcp.Dns.Inputs.ResponsePolicyGkeClusterArgs\n {\n GkeClusterName = cluster_1.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"network-1\"),\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\tName: pulumi.String(\"network-2\"),\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\tName: network_1.Name,\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\tName: pulumi.String(\"cluster-1\"),\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\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewResponsePolicy(ctx, \"example-response-policy\", \u0026dns.ResponsePolicyArgs{\n\t\t\tResponsePolicyName: pulumi.String(\"example-response-policy\"),\n\t\t\tNetworks: dns.ResponsePolicyNetworkArray{\n\t\t\t\t\u0026dns.ResponsePolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t},\n\t\t\t\t\u0026dns.ResponsePolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_2.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tGkeClusters: dns.ResponsePolicyGkeClusterArray{\n\t\t\t\t\u0026dns.ResponsePolicyGkeClusterArgs{\n\t\t\t\t\tGkeClusterName: cluster_1.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.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.ResponsePolicy;\nimport com.pulumi.gcp.dns.ResponsePolicyArgs;\nimport com.pulumi.gcp.dns.inputs.ResponsePolicyNetworkArgs;\nimport com.pulumi.gcp.dns.inputs.ResponsePolicyGkeClusterArgs;\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 .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_1 = new Subnetwork(\"subnetwork-1\", SubnetworkArgs.builder()\n .name(network_1.name())\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 .name(\"cluster-1\")\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 .deletionProtection(\"true\")\n .build());\n\n var example_response_policy = new ResponsePolicy(\"example-response-policy\", ResponsePolicyArgs.builder()\n .responsePolicyName(\"example-response-policy\")\n .networks( \n ResponsePolicyNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n ResponsePolicyNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .gkeClusters(ResponsePolicyGkeClusterArgs.builder()\n .gkeClusterName(cluster_1.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-1:\n type: gcp:compute:Network\n properties:\n name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n subnetwork-1:\n type: gcp:compute:Subnetwork\n properties:\n name: ${[\"network-1\"].name}\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 name: cluster-1\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 deletionProtection: 'true'\n example-response-policy:\n type: gcp:dns:ResponsePolicy\n properties:\n responsePolicyName: example-response-policy\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n gkeClusters:\n - gkeClusterName: ${[\"cluster-1\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResponsePolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/responsePolicies/{{response_policy_name}}`\n\n* `{{project}}/{{response_policy_name}}`\n\n* `{{response_policy_name}}`\n\nWhen using the `pulumi import` command, ResponsePolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/responsePolicy:ResponsePolicy default projects/{{project}}/responsePolicies/{{response_policy_name}}\n```\n\n```sh\n$ pulumi import gcp:dns/responsePolicy:ResponsePolicy default {{project}}/{{response_policy_name}}\n```\n\n```sh\n$ pulumi import gcp:dns/responsePolicy:ResponsePolicy default {{response_policy_name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -187207,7 +187207,7 @@ } }, "gcp:dns/responsePolicyRule:ResponsePolicyRule": { - "description": "A Response Policy Rule is a selector that applies its behavior to queries that match the selector.\nSelectors are DNS names, which may be wildcards or exact matches.\nEach DNS query subject to a Response Policy matches at most one ResponsePolicyRule,\nas identified by the dns_name field with the longest matching suffix.\n\n\n\n## Example Usage\n\n### Dns Response Policy Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst response_policy = new gcp.dns.ResponsePolicy(\"response-policy\", {\n responsePolicyName: \"example-response-policy\",\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n});\nconst example_response_policy_rule = new gcp.dns.ResponsePolicyRule(\"example-response-policy-rule\", {\n responsePolicy: response_policy.responsePolicyName,\n ruleName: \"example-rule\",\n dnsName: \"dns.example.com.\",\n localData: {\n localDatas: [{\n name: \"dns.example.com.\",\n type: \"A\",\n ttl: 300,\n rrdatas: [\"192.0.2.91\"],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nresponse_policy = gcp.dns.ResponsePolicy(\"response-policy\",\n response_policy_name=\"example-response-policy\",\n networks=[\n {\n \"networkUrl\": network_1.id,\n },\n {\n \"networkUrl\": network_2.id,\n },\n ])\nexample_response_policy_rule = gcp.dns.ResponsePolicyRule(\"example-response-policy-rule\",\n response_policy=response_policy.response_policy_name,\n rule_name=\"example-rule\",\n dns_name=\"dns.example.com.\",\n local_data={\n \"localDatas\": [{\n \"name\": \"dns.example.com.\",\n \"type\": \"A\",\n \"ttl\": 300,\n \"rrdatas\": [\"192.0.2.91\"],\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 Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var response_policy = new Gcp.Dns.ResponsePolicy(\"response-policy\", new()\n {\n ResponsePolicyName = \"example-response-policy\",\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ResponsePolicyNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.ResponsePolicyNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n });\n\n var example_response_policy_rule = new Gcp.Dns.ResponsePolicyRule(\"example-response-policy-rule\", new()\n {\n ResponsePolicy = response_policy.ResponsePolicyName,\n RuleName = \"example-rule\",\n DnsName = \"dns.example.com.\",\n LocalData = new Gcp.Dns.Inputs.ResponsePolicyRuleLocalDataArgs\n {\n LocalDatas = new[]\n {\n new Gcp.Dns.Inputs.ResponsePolicyRuleLocalDataLocalDataArgs\n {\n Name = \"dns.example.com.\",\n Type = \"A\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"192.0.2.91\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"network-1\"),\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\tName: pulumi.String(\"network-2\"),\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.NewResponsePolicy(ctx, \"response-policy\", \u0026dns.ResponsePolicyArgs{\n\t\t\tResponsePolicyName: pulumi.String(\"example-response-policy\"),\n\t\t\tNetworks: dns.ResponsePolicyNetworkArray{\n\t\t\t\t\u0026dns.ResponsePolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t},\n\t\t\t\t\u0026dns.ResponsePolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_2.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\t_, err = dns.NewResponsePolicyRule(ctx, \"example-response-policy-rule\", \u0026dns.ResponsePolicyRuleArgs{\n\t\t\tResponsePolicy: response_policy.ResponsePolicyName,\n\t\t\tRuleName: pulumi.String(\"example-rule\"),\n\t\t\tDnsName: pulumi.String(\"dns.example.com.\"),\n\t\t\tLocalData: \u0026dns.ResponsePolicyRuleLocalDataArgs{\n\t\t\t\tLocalDatas: dns.ResponsePolicyRuleLocalDataLocalDataArray{\n\t\t\t\t\t\u0026dns.ResponsePolicyRuleLocalDataLocalDataArgs{\n\t\t\t\t\t\tName: pulumi.String(\"dns.example.com.\"),\n\t\t\t\t\t\tType: pulumi.String(\"A\"),\n\t\t\t\t\t\tTtl: pulumi.Int(300),\n\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"192.0.2.91\"),\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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.ResponsePolicy;\nimport com.pulumi.gcp.dns.ResponsePolicyArgs;\nimport com.pulumi.gcp.dns.inputs.ResponsePolicyNetworkArgs;\nimport com.pulumi.gcp.dns.ResponsePolicyRule;\nimport com.pulumi.gcp.dns.ResponsePolicyRuleArgs;\nimport com.pulumi.gcp.dns.inputs.ResponsePolicyRuleLocalDataArgs;\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 .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var response_policy = new ResponsePolicy(\"response-policy\", ResponsePolicyArgs.builder()\n .responsePolicyName(\"example-response-policy\")\n .networks( \n ResponsePolicyNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n ResponsePolicyNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .build());\n\n var example_response_policy_rule = new ResponsePolicyRule(\"example-response-policy-rule\", ResponsePolicyRuleArgs.builder()\n .responsePolicy(response_policy.responsePolicyName())\n .ruleName(\"example-rule\")\n .dnsName(\"dns.example.com.\")\n .localData(ResponsePolicyRuleLocalDataArgs.builder()\n .localDatas(ResponsePolicyRuleLocalDataLocalDataArgs.builder()\n .name(\"dns.example.com.\")\n .type(\"A\")\n .ttl(300)\n .rrdatas(\"192.0.2.91\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-1:\n type: gcp:compute:Network\n properties:\n name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n response-policy:\n type: gcp:dns:ResponsePolicy\n properties:\n responsePolicyName: example-response-policy\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n example-response-policy-rule:\n type: gcp:dns:ResponsePolicyRule\n properties:\n responsePolicy: ${[\"response-policy\"].responsePolicyName}\n ruleName: example-rule\n dnsName: dns.example.com.\n localData:\n localDatas:\n - name: dns.example.com.\n type: A\n ttl: 300\n rrdatas:\n - 192.0.2.91\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResponsePolicyRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/responsePolicies/{{response_policy}}/rules/{{rule_name}}`\n\n* `{{project}}/{{response_policy}}/{{rule_name}}`\n\n* `{{response_policy}}/{{rule_name}}`\n\nWhen using the `pulumi import` command, ResponsePolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/responsePolicyRule:ResponsePolicyRule default projects/{{project}}/responsePolicies/{{response_policy}}/rules/{{rule_name}}\n```\n\n```sh\n$ pulumi import gcp:dns/responsePolicyRule:ResponsePolicyRule default {{project}}/{{response_policy}}/{{rule_name}}\n```\n\n```sh\n$ pulumi import gcp:dns/responsePolicyRule:ResponsePolicyRule default {{response_policy}}/{{rule_name}}\n```\n\n", + "description": "A Response Policy Rule is a selector that applies its behavior to queries that match the selector.\nSelectors are DNS names, which may be wildcards or exact matches.\nEach DNS query subject to a Response Policy matches at most one ResponsePolicyRule,\nas identified by the dns_name field with the longest matching suffix.\n\n\n\n## Example Usage\n\n### Dns Response Policy Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst response_policy = new gcp.dns.ResponsePolicy(\"response-policy\", {\n responsePolicyName: \"example-response-policy\",\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n});\nconst example_response_policy_rule = new gcp.dns.ResponsePolicyRule(\"example-response-policy-rule\", {\n responsePolicy: response_policy.responsePolicyName,\n ruleName: \"example-rule\",\n dnsName: \"dns.example.com.\",\n localData: {\n localDatas: [{\n name: \"dns.example.com.\",\n type: \"A\",\n ttl: 300,\n rrdatas: [\"192.0.2.91\"],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nresponse_policy = gcp.dns.ResponsePolicy(\"response-policy\",\n response_policy_name=\"example-response-policy\",\n networks=[\n {\n \"network_url\": network_1.id,\n },\n {\n \"network_url\": network_2.id,\n },\n ])\nexample_response_policy_rule = gcp.dns.ResponsePolicyRule(\"example-response-policy-rule\",\n response_policy=response_policy.response_policy_name,\n rule_name=\"example-rule\",\n dns_name=\"dns.example.com.\",\n local_data={\n \"local_datas\": [{\n \"name\": \"dns.example.com.\",\n \"type\": \"A\",\n \"ttl\": 300,\n \"rrdatas\": [\"192.0.2.91\"],\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 Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var response_policy = new Gcp.Dns.ResponsePolicy(\"response-policy\", new()\n {\n ResponsePolicyName = \"example-response-policy\",\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ResponsePolicyNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.ResponsePolicyNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n });\n\n var example_response_policy_rule = new Gcp.Dns.ResponsePolicyRule(\"example-response-policy-rule\", new()\n {\n ResponsePolicy = response_policy.ResponsePolicyName,\n RuleName = \"example-rule\",\n DnsName = \"dns.example.com.\",\n LocalData = new Gcp.Dns.Inputs.ResponsePolicyRuleLocalDataArgs\n {\n LocalDatas = new[]\n {\n new Gcp.Dns.Inputs.ResponsePolicyRuleLocalDataLocalDataArgs\n {\n Name = \"dns.example.com.\",\n Type = \"A\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"192.0.2.91\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"network-1\"),\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\tName: pulumi.String(\"network-2\"),\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.NewResponsePolicy(ctx, \"response-policy\", \u0026dns.ResponsePolicyArgs{\n\t\t\tResponsePolicyName: pulumi.String(\"example-response-policy\"),\n\t\t\tNetworks: dns.ResponsePolicyNetworkArray{\n\t\t\t\t\u0026dns.ResponsePolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t},\n\t\t\t\t\u0026dns.ResponsePolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_2.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\t_, err = dns.NewResponsePolicyRule(ctx, \"example-response-policy-rule\", \u0026dns.ResponsePolicyRuleArgs{\n\t\t\tResponsePolicy: response_policy.ResponsePolicyName,\n\t\t\tRuleName: pulumi.String(\"example-rule\"),\n\t\t\tDnsName: pulumi.String(\"dns.example.com.\"),\n\t\t\tLocalData: \u0026dns.ResponsePolicyRuleLocalDataArgs{\n\t\t\t\tLocalDatas: dns.ResponsePolicyRuleLocalDataLocalDataArray{\n\t\t\t\t\t\u0026dns.ResponsePolicyRuleLocalDataLocalDataArgs{\n\t\t\t\t\t\tName: pulumi.String(\"dns.example.com.\"),\n\t\t\t\t\t\tType: pulumi.String(\"A\"),\n\t\t\t\t\t\tTtl: pulumi.Int(300),\n\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"192.0.2.91\"),\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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.ResponsePolicy;\nimport com.pulumi.gcp.dns.ResponsePolicyArgs;\nimport com.pulumi.gcp.dns.inputs.ResponsePolicyNetworkArgs;\nimport com.pulumi.gcp.dns.ResponsePolicyRule;\nimport com.pulumi.gcp.dns.ResponsePolicyRuleArgs;\nimport com.pulumi.gcp.dns.inputs.ResponsePolicyRuleLocalDataArgs;\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 .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var response_policy = new ResponsePolicy(\"response-policy\", ResponsePolicyArgs.builder()\n .responsePolicyName(\"example-response-policy\")\n .networks( \n ResponsePolicyNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n ResponsePolicyNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .build());\n\n var example_response_policy_rule = new ResponsePolicyRule(\"example-response-policy-rule\", ResponsePolicyRuleArgs.builder()\n .responsePolicy(response_policy.responsePolicyName())\n .ruleName(\"example-rule\")\n .dnsName(\"dns.example.com.\")\n .localData(ResponsePolicyRuleLocalDataArgs.builder()\n .localDatas(ResponsePolicyRuleLocalDataLocalDataArgs.builder()\n .name(\"dns.example.com.\")\n .type(\"A\")\n .ttl(300)\n .rrdatas(\"192.0.2.91\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-1:\n type: gcp:compute:Network\n properties:\n name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n response-policy:\n type: gcp:dns:ResponsePolicy\n properties:\n responsePolicyName: example-response-policy\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n example-response-policy-rule:\n type: gcp:dns:ResponsePolicyRule\n properties:\n responsePolicy: ${[\"response-policy\"].responsePolicyName}\n ruleName: example-rule\n dnsName: dns.example.com.\n localData:\n localDatas:\n - name: dns.example.com.\n type: A\n ttl: 300\n rrdatas:\n - 192.0.2.91\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResponsePolicyRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/responsePolicies/{{response_policy}}/rules/{{rule_name}}`\n\n* `{{project}}/{{response_policy}}/{{rule_name}}`\n\n* `{{response_policy}}/{{rule_name}}`\n\nWhen using the `pulumi import` command, ResponsePolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/responsePolicyRule:ResponsePolicyRule default projects/{{project}}/responsePolicies/{{response_policy}}/rules/{{rule_name}}\n```\n\n```sh\n$ pulumi import gcp:dns/responsePolicyRule:ResponsePolicyRule default {{project}}/{{response_policy}}/{{rule_name}}\n```\n\n```sh\n$ pulumi import gcp:dns/responsePolicyRule:ResponsePolicyRule default {{response_policy}}/{{rule_name}}\n```\n\n", "properties": { "behavior": { "type": "string", @@ -187307,7 +187307,7 @@ } }, "gcp:edgecontainer/cluster:Cluster": { - "description": "Cluster contains information about a Google Distributed Cloud Edge Kubernetes cluster.\n\n\nTo get more information about Cluster, see:\n\n* [API documentation](https://cloud.google.com/distributed-cloud/edge/latest/docs/reference/container/rest/v1/projects.locations.clusters)\n* How-to Guides\n * [Create and manage clusters](https://cloud.google.com/distributed-cloud/edge/latest/docs/clusters)\n\n\n\n## Example Usage\n\n### Edgecontainer Cluster\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.edgecontainer.Cluster(\"default\", {\n name: \"basic-cluster\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.edgecontainer.Cluster(\"default\",\n name=\"basic-cluster\",\n location=\"us-central1\",\n authorization={\n \"adminUsers\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"clusterIpv4CidrBlocks\": [\"10.0.0.0/16\"],\n \"servicesIpv4CidrBlocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\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 @default = new Gcp.EdgeContainer.Cluster(\"default\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\t_, err = edgecontainer.NewCluster(ctx, \"default\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\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 default_ = new Cluster(\"default\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:edgecontainer:Cluster\n properties:\n name: basic-cluster\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n labels:\n my_key: my_val\n other_key: other_val\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Edgecontainer Cluster With Maintenance Window\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.edgecontainer.Cluster(\"default\", {\n name: \"cluster-with-maintenance\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n maintenancePolicy: {\n window: {\n recurringWindow: {\n window: {\n startTime: \"2023-01-01T08:00:00Z\",\n endTime: \"2023-01-01T17:00:00Z\",\n },\n recurrence: \"FREQ=WEEKLY;BYDAY=SA\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.edgecontainer.Cluster(\"default\",\n name=\"cluster-with-maintenance\",\n location=\"us-central1\",\n authorization={\n \"adminUsers\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"clusterIpv4CidrBlocks\": [\"10.0.0.0/16\"],\n \"servicesIpv4CidrBlocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n maintenance_policy={\n \"window\": {\n \"recurringWindow\": {\n \"window\": {\n \"startTime\": \"2023-01-01T08:00:00Z\",\n \"endTime\": \"2023-01-01T17:00:00Z\",\n },\n \"recurrence\": \"FREQ=WEEKLY;BYDAY=SA\",\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 project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.EdgeContainer.Cluster(\"default\", new()\n {\n Name = \"cluster-with-maintenance\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n MaintenancePolicy = new Gcp.EdgeContainer.Inputs.ClusterMaintenancePolicyArgs\n {\n Window = new Gcp.EdgeContainer.Inputs.ClusterMaintenancePolicyWindowArgs\n {\n RecurringWindow = new Gcp.EdgeContainer.Inputs.ClusterMaintenancePolicyWindowRecurringWindowArgs\n {\n Window = new Gcp.EdgeContainer.Inputs.ClusterMaintenancePolicyWindowRecurringWindowWindowArgs\n {\n StartTime = \"2023-01-01T08:00:00Z\",\n EndTime = \"2023-01-01T17:00:00Z\",\n },\n Recurrence = \"FREQ=WEEKLY;BYDAY=SA\",\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/v7/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\t_, err = edgecontainer.NewCluster(ctx, \"default\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-with-maintenance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t},\n\t\t\tMaintenancePolicy: \u0026edgecontainer.ClusterMaintenancePolicyArgs{\n\t\t\t\tWindow: \u0026edgecontainer.ClusterMaintenancePolicyWindowArgs{\n\t\t\t\t\tRecurringWindow: \u0026edgecontainer.ClusterMaintenancePolicyWindowRecurringWindowArgs{\n\t\t\t\t\t\tWindow: \u0026edgecontainer.ClusterMaintenancePolicyWindowRecurringWindowWindowArgs{\n\t\t\t\t\t\t\tStartTime: pulumi.String(\"2023-01-01T08:00:00Z\"),\n\t\t\t\t\t\t\tEndTime: pulumi.String(\"2023-01-01T17:00:00Z\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRecurrence: pulumi.String(\"FREQ=WEEKLY;BYDAY=SA\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterMaintenancePolicyArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterMaintenancePolicyWindowArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterMaintenancePolicyWindowRecurringWindowArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterMaintenancePolicyWindowRecurringWindowWindowArgs;\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 default_ = new Cluster(\"default\", ClusterArgs.builder()\n .name(\"cluster-with-maintenance\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .maintenancePolicy(ClusterMaintenancePolicyArgs.builder()\n .window(ClusterMaintenancePolicyWindowArgs.builder()\n .recurringWindow(ClusterMaintenancePolicyWindowRecurringWindowArgs.builder()\n .window(ClusterMaintenancePolicyWindowRecurringWindowWindowArgs.builder()\n .startTime(\"2023-01-01T08:00:00Z\")\n .endTime(\"2023-01-01T17:00:00Z\")\n .build())\n .recurrence(\"FREQ=WEEKLY;BYDAY=SA\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:edgecontainer:Cluster\n properties:\n name: cluster-with-maintenance\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n maintenancePolicy:\n window:\n recurringWindow:\n window:\n startTime: 2023-01-01T08:00:00Z\n endTime: 2023-01-01T17:00:00Z\n recurrence: FREQ=WEEKLY;BYDAY=SA\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Edgecontainer Local Control Plane Cluster\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.edgecontainer.Cluster(\"default\", {\n name: \"local-control-plane-cluster\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n externalLoadBalancerIpv4AddressPools: [\"10.100.0.0-10.100.0.10\"],\n controlPlane: {\n local: {\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 1,\n machineFilter: \"machine-name\",\n sharedDeploymentPolicy: \"ALLOWED\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.edgecontainer.Cluster(\"default\",\n name=\"local-control-plane-cluster\",\n location=\"us-central1\",\n authorization={\n \"adminUsers\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"clusterIpv4CidrBlocks\": [\"10.0.0.0/16\"],\n \"servicesIpv4CidrBlocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n external_load_balancer_ipv4_address_pools=[\"10.100.0.0-10.100.0.10\"],\n control_plane={\n \"local\": {\n \"nodeLocation\": \"us-central1-edge-example-edgesite\",\n \"nodeCount\": 1,\n \"machineFilter\": \"machine-name\",\n \"sharedDeploymentPolicy\": \"ALLOWED\",\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 project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.EdgeContainer.Cluster(\"default\", new()\n {\n Name = \"local-control-plane-cluster\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n ExternalLoadBalancerIpv4AddressPools = new[]\n {\n \"10.100.0.0-10.100.0.10\",\n },\n ControlPlane = new Gcp.EdgeContainer.Inputs.ClusterControlPlaneArgs\n {\n Local = new Gcp.EdgeContainer.Inputs.ClusterControlPlaneLocalArgs\n {\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 1,\n MachineFilter = \"machine-name\",\n SharedDeploymentPolicy = \"ALLOWED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\t_, err = edgecontainer.NewCluster(ctx, \"default\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"local-control-plane-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t},\n\t\t\tExternalLoadBalancerIpv4AddressPools: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.100.0.0-10.100.0.10\"),\n\t\t\t},\n\t\t\tControlPlane: \u0026edgecontainer.ClusterControlPlaneArgs{\n\t\t\t\tLocal: \u0026edgecontainer.ClusterControlPlaneLocalArgs{\n\t\t\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\t\t\tNodeCount: pulumi.Int(1),\n\t\t\t\t\tMachineFilter: pulumi.String(\"machine-name\"),\n\t\t\t\t\tSharedDeploymentPolicy: pulumi.String(\"ALLOWED\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterControlPlaneArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterControlPlaneLocalArgs;\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 default_ = new Cluster(\"default\", ClusterArgs.builder()\n .name(\"local-control-plane-cluster\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .externalLoadBalancerIpv4AddressPools(\"10.100.0.0-10.100.0.10\")\n .controlPlane(ClusterControlPlaneArgs.builder()\n .local(ClusterControlPlaneLocalArgs.builder()\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(1)\n .machineFilter(\"machine-name\")\n .sharedDeploymentPolicy(\"ALLOWED\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:edgecontainer:Cluster\n properties:\n name: local-control-plane-cluster\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n externalLoadBalancerIpv4AddressPools:\n - 10.100.0.0-10.100.0.10\n controlPlane:\n local:\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 1\n machineFilter: machine-name\n sharedDeploymentPolicy: ALLOWED\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:edgecontainer/cluster:Cluster default projects/{{project}}/locations/{{location}}/clusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/cluster:Cluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/cluster:Cluster default {{location}}/{{name}}\n```\n\n", + "description": "Cluster contains information about a Google Distributed Cloud Edge Kubernetes cluster.\n\n\nTo get more information about Cluster, see:\n\n* [API documentation](https://cloud.google.com/distributed-cloud/edge/latest/docs/reference/container/rest/v1/projects.locations.clusters)\n* How-to Guides\n * [Create and manage clusters](https://cloud.google.com/distributed-cloud/edge/latest/docs/clusters)\n\n\n\n## Example Usage\n\n### Edgecontainer Cluster\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.edgecontainer.Cluster(\"default\", {\n name: \"basic-cluster\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.edgecontainer.Cluster(\"default\",\n name=\"basic-cluster\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\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 @default = new Gcp.EdgeContainer.Cluster(\"default\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\t_, err = edgecontainer.NewCluster(ctx, \"default\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\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 default_ = new Cluster(\"default\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:edgecontainer:Cluster\n properties:\n name: basic-cluster\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n labels:\n my_key: my_val\n other_key: other_val\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Edgecontainer Cluster With Maintenance Window\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.edgecontainer.Cluster(\"default\", {\n name: \"cluster-with-maintenance\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n maintenancePolicy: {\n window: {\n recurringWindow: {\n window: {\n startTime: \"2023-01-01T08:00:00Z\",\n endTime: \"2023-01-01T17:00:00Z\",\n },\n recurrence: \"FREQ=WEEKLY;BYDAY=SA\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.edgecontainer.Cluster(\"default\",\n name=\"cluster-with-maintenance\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n maintenance_policy={\n \"window\": {\n \"recurring_window\": {\n \"window\": {\n \"start_time\": \"2023-01-01T08:00:00Z\",\n \"end_time\": \"2023-01-01T17:00:00Z\",\n },\n \"recurrence\": \"FREQ=WEEKLY;BYDAY=SA\",\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 project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.EdgeContainer.Cluster(\"default\", new()\n {\n Name = \"cluster-with-maintenance\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n MaintenancePolicy = new Gcp.EdgeContainer.Inputs.ClusterMaintenancePolicyArgs\n {\n Window = new Gcp.EdgeContainer.Inputs.ClusterMaintenancePolicyWindowArgs\n {\n RecurringWindow = new Gcp.EdgeContainer.Inputs.ClusterMaintenancePolicyWindowRecurringWindowArgs\n {\n Window = new Gcp.EdgeContainer.Inputs.ClusterMaintenancePolicyWindowRecurringWindowWindowArgs\n {\n StartTime = \"2023-01-01T08:00:00Z\",\n EndTime = \"2023-01-01T17:00:00Z\",\n },\n Recurrence = \"FREQ=WEEKLY;BYDAY=SA\",\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/v7/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\t_, err = edgecontainer.NewCluster(ctx, \"default\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-with-maintenance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t},\n\t\t\tMaintenancePolicy: \u0026edgecontainer.ClusterMaintenancePolicyArgs{\n\t\t\t\tWindow: \u0026edgecontainer.ClusterMaintenancePolicyWindowArgs{\n\t\t\t\t\tRecurringWindow: \u0026edgecontainer.ClusterMaintenancePolicyWindowRecurringWindowArgs{\n\t\t\t\t\t\tWindow: \u0026edgecontainer.ClusterMaintenancePolicyWindowRecurringWindowWindowArgs{\n\t\t\t\t\t\t\tStartTime: pulumi.String(\"2023-01-01T08:00:00Z\"),\n\t\t\t\t\t\t\tEndTime: pulumi.String(\"2023-01-01T17:00:00Z\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRecurrence: pulumi.String(\"FREQ=WEEKLY;BYDAY=SA\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterMaintenancePolicyArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterMaintenancePolicyWindowArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterMaintenancePolicyWindowRecurringWindowArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterMaintenancePolicyWindowRecurringWindowWindowArgs;\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 default_ = new Cluster(\"default\", ClusterArgs.builder()\n .name(\"cluster-with-maintenance\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .maintenancePolicy(ClusterMaintenancePolicyArgs.builder()\n .window(ClusterMaintenancePolicyWindowArgs.builder()\n .recurringWindow(ClusterMaintenancePolicyWindowRecurringWindowArgs.builder()\n .window(ClusterMaintenancePolicyWindowRecurringWindowWindowArgs.builder()\n .startTime(\"2023-01-01T08:00:00Z\")\n .endTime(\"2023-01-01T17:00:00Z\")\n .build())\n .recurrence(\"FREQ=WEEKLY;BYDAY=SA\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:edgecontainer:Cluster\n properties:\n name: cluster-with-maintenance\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n maintenancePolicy:\n window:\n recurringWindow:\n window:\n startTime: 2023-01-01T08:00:00Z\n endTime: 2023-01-01T17:00:00Z\n recurrence: FREQ=WEEKLY;BYDAY=SA\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Edgecontainer Local Control Plane Cluster\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.edgecontainer.Cluster(\"default\", {\n name: \"local-control-plane-cluster\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n externalLoadBalancerIpv4AddressPools: [\"10.100.0.0-10.100.0.10\"],\n controlPlane: {\n local: {\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 1,\n machineFilter: \"machine-name\",\n sharedDeploymentPolicy: \"ALLOWED\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.edgecontainer.Cluster(\"default\",\n name=\"local-control-plane-cluster\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n external_load_balancer_ipv4_address_pools=[\"10.100.0.0-10.100.0.10\"],\n control_plane={\n \"local\": {\n \"node_location\": \"us-central1-edge-example-edgesite\",\n \"node_count\": 1,\n \"machine_filter\": \"machine-name\",\n \"shared_deployment_policy\": \"ALLOWED\",\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 project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.EdgeContainer.Cluster(\"default\", new()\n {\n Name = \"local-control-plane-cluster\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n ExternalLoadBalancerIpv4AddressPools = new[]\n {\n \"10.100.0.0-10.100.0.10\",\n },\n ControlPlane = new Gcp.EdgeContainer.Inputs.ClusterControlPlaneArgs\n {\n Local = new Gcp.EdgeContainer.Inputs.ClusterControlPlaneLocalArgs\n {\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 1,\n MachineFilter = \"machine-name\",\n SharedDeploymentPolicy = \"ALLOWED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\t_, err = edgecontainer.NewCluster(ctx, \"default\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"local-control-plane-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t},\n\t\t\tExternalLoadBalancerIpv4AddressPools: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.100.0.0-10.100.0.10\"),\n\t\t\t},\n\t\t\tControlPlane: \u0026edgecontainer.ClusterControlPlaneArgs{\n\t\t\t\tLocal: \u0026edgecontainer.ClusterControlPlaneLocalArgs{\n\t\t\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\t\t\tNodeCount: pulumi.Int(1),\n\t\t\t\t\tMachineFilter: pulumi.String(\"machine-name\"),\n\t\t\t\t\tSharedDeploymentPolicy: pulumi.String(\"ALLOWED\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterControlPlaneArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterControlPlaneLocalArgs;\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 default_ = new Cluster(\"default\", ClusterArgs.builder()\n .name(\"local-control-plane-cluster\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .externalLoadBalancerIpv4AddressPools(\"10.100.0.0-10.100.0.10\")\n .controlPlane(ClusterControlPlaneArgs.builder()\n .local(ClusterControlPlaneLocalArgs.builder()\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(1)\n .machineFilter(\"machine-name\")\n .sharedDeploymentPolicy(\"ALLOWED\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:edgecontainer:Cluster\n properties:\n name: local-control-plane-cluster\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n externalLoadBalancerIpv4AddressPools:\n - 10.100.0.0-10.100.0.10\n controlPlane:\n local:\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 1\n machineFilter: machine-name\n sharedDeploymentPolicy: ALLOWED\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:edgecontainer/cluster:Cluster default projects/{{project}}/locations/{{location}}/clusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/cluster:Cluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/cluster:Cluster default {{location}}/{{name}}\n```\n\n", "properties": { "authorization": { "$ref": "#/types/gcp:edgecontainer/ClusterAuthorization:ClusterAuthorization", @@ -187669,7 +187669,7 @@ } }, "gcp:edgecontainer/nodePool:NodePool": { - "description": "\"A set of Kubernetes nodes in a cluster with common configuration and specification.\"\n\n\nTo get more information about NodePool, see:\n\n* [API documentation](https://cloud.google.com/distributed-cloud/edge/latest/docs/reference/container/rest/v1/projects.locations.clusters.nodePools)\n* How-to Guides\n * [Google Distributed Cloud Edge](https://cloud.google.com/distributed-cloud/edge/latest/docs)\n\n## Example Usage\n\n### Edgecontainer Node Pool\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cluster = new gcp.edgecontainer.Cluster(\"cluster\", {\n name: \"default\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n});\nconst _default = new gcp.edgecontainer.NodePool(\"default\", {\n name: \"nodepool-1\",\n cluster: cluster.name,\n location: \"us-central1\",\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 3,\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncluster = gcp.edgecontainer.Cluster(\"cluster\",\n name=\"default\",\n location=\"us-central1\",\n authorization={\n \"adminUsers\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"clusterIpv4CidrBlocks\": [\"10.0.0.0/16\"],\n \"servicesIpv4CidrBlocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n })\ndefault = gcp.edgecontainer.NodePool(\"default\",\n name=\"nodepool-1\",\n cluster=cluster.name,\n location=\"us-central1\",\n node_location=\"us-central1-edge-example-edgesite\",\n node_count=3,\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\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 cluster = new Gcp.EdgeContainer.Cluster(\"cluster\", new()\n {\n Name = \"default\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n });\n\n var @default = new Gcp.EdgeContainer.NodePool(\"default\", new()\n {\n Name = \"nodepool-1\",\n Cluster = cluster.Name,\n Location = \"us-central1\",\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 3,\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tcluster, err := edgecontainer.NewCluster(ctx, \"cluster\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewNodePool(ctx, \"default\", \u0026edgecontainer.NodePoolArgs{\n\t\t\tName: pulumi.String(\"nodepool-1\"),\n\t\t\tCluster: cluster.Name,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.NodePool;\nimport com.pulumi.gcp.edgecontainer.NodePoolArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"default\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n var default_ = new NodePool(\"default\", NodePoolArgs.builder()\n .name(\"nodepool-1\")\n .cluster(cluster.name())\n .location(\"us-central1\")\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(3)\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:edgecontainer:Cluster\n properties:\n name: default\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n default:\n type: gcp:edgecontainer:NodePool\n properties:\n name: nodepool-1\n cluster: ${cluster.name}\n location: us-central1\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 3\n labels:\n my_key: my_val\n other_key: other_val\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Edgecontainer Node Pool With Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cluster = new gcp.edgecontainer.Cluster(\"cluster\", {\n name: \"default\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"keyring\",\n location: \"us-central1\",\n});\nconst cryptoKeyCryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"key\",\n keyRing: keyRing.id,\n});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: cryptoKeyCryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-edgecontainer.iam.gserviceaccount.com`),\n});\nconst _default = new gcp.edgecontainer.NodePool(\"default\", {\n name: \"nodepool-1\",\n cluster: cluster.name,\n location: \"us-central1\",\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 3,\n localDiskEncryption: {\n kmsKey: cryptoKeyCryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKey],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncluster = gcp.edgecontainer.Cluster(\"cluster\",\n name=\"default\",\n location=\"us-central1\",\n authorization={\n \"adminUsers\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"clusterIpv4CidrBlocks\": [\"10.0.0.0/16\"],\n \"servicesIpv4CidrBlocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n })\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"keyring\",\n location=\"us-central1\")\ncrypto_key_crypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"key\",\n key_ring=key_ring.id)\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=crypto_key_crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-edgecontainer.iam.gserviceaccount.com\")\ndefault = gcp.edgecontainer.NodePool(\"default\",\n name=\"nodepool-1\",\n cluster=cluster.name,\n location=\"us-central1\",\n node_location=\"us-central1-edge-example-edgesite\",\n node_count=3,\n local_disk_encryption={\n \"kmsKey\": crypto_key_crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key]))\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 cluster = new Gcp.EdgeContainer.Cluster(\"cluster\", new()\n {\n Name = \"default\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"keyring\",\n Location = \"us-central1\",\n });\n\n var cryptoKeyCryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"key\",\n KeyRing = keyRing.Id,\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = cryptoKeyCryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-edgecontainer.iam.gserviceaccount.com\",\n });\n\n var @default = new Gcp.EdgeContainer.NodePool(\"default\", new()\n {\n Name = \"nodepool-1\",\n Cluster = cluster.Name,\n Location = \"us-central1\",\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 3,\n LocalDiskEncryption = new Gcp.EdgeContainer.Inputs.NodePoolLocalDiskEncryptionArgs\n {\n KmsKey = cryptoKeyCryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKey,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tcluster, err := edgecontainer.NewCluster(ctx, \"cluster\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"keyring\"),\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\tcryptoKeyCryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKeyCryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-edgecontainer.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewNodePool(ctx, \"default\", \u0026edgecontainer.NodePoolArgs{\n\t\t\tName: pulumi.String(\"nodepool-1\"),\n\t\t\tCluster: cluster.Name,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t\tLocalDiskEncryption: \u0026edgecontainer.NodePoolLocalDiskEncryptionArgs{\n\t\t\t\tKmsKey: cryptoKeyCryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKey,\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.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\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.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.edgecontainer.NodePool;\nimport com.pulumi.gcp.edgecontainer.NodePoolArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.NodePoolLocalDiskEncryptionArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"default\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"keyring\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKeyCryptoKey = new CryptoKey(\"cryptoKeyCryptoKey\", CryptoKeyArgs.builder()\n .name(\"key\")\n .keyRing(keyRing.id())\n .build());\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKeyCryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-edgecontainer.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var default_ = new NodePool(\"default\", NodePoolArgs.builder()\n .name(\"nodepool-1\")\n .cluster(cluster.name())\n .location(\"us-central1\")\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(3)\n .localDiskEncryption(NodePoolLocalDiskEncryptionArgs.builder()\n .kmsKey(cryptoKeyCryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKey)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:edgecontainer:Cluster\n properties:\n name: default\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: ${cryptoKeyCryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-edgecontainer.iam.gserviceaccount.com\n cryptoKeyCryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: keyring\n location: us-central1\n default:\n type: gcp:edgecontainer:NodePool\n properties:\n name: nodepool-1\n cluster: ${cluster.name}\n location: us-central1\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 3\n localDiskEncryption:\n kmsKey: ${cryptoKeyCryptoKey.id}\n options:\n dependson:\n - ${cryptoKey}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Edgecontainer Local Control Plane Node Pool\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.edgecontainer.Cluster(\"default\", {\n name: \"\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n externalLoadBalancerIpv4AddressPools: [\"10.100.0.0-10.100.0.10\"],\n controlPlane: {\n local: {\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 1,\n machineFilter: \"machine-name\",\n sharedDeploymentPolicy: \"ALLOWED\",\n },\n },\n});\nconst defaultNodePool = new gcp.edgecontainer.NodePool(\"default\", {\n name: \"nodepool-1\",\n cluster: cluster.name,\n location: \"us-central1\",\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 3,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.edgecontainer.Cluster(\"default\",\n name=\"\",\n location=\"us-central1\",\n authorization={\n \"adminUsers\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"clusterIpv4CidrBlocks\": [\"10.0.0.0/16\"],\n \"servicesIpv4CidrBlocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n external_load_balancer_ipv4_address_pools=[\"10.100.0.0-10.100.0.10\"],\n control_plane={\n \"local\": {\n \"nodeLocation\": \"us-central1-edge-example-edgesite\",\n \"nodeCount\": 1,\n \"machineFilter\": \"machine-name\",\n \"sharedDeploymentPolicy\": \"ALLOWED\",\n },\n })\ndefault_node_pool = gcp.edgecontainer.NodePool(\"default\",\n name=\"nodepool-1\",\n cluster=cluster[\"name\"],\n location=\"us-central1\",\n node_location=\"us-central1-edge-example-edgesite\",\n node_count=3)\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 @default = new Gcp.EdgeContainer.Cluster(\"default\", new()\n {\n Name = \"\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n ExternalLoadBalancerIpv4AddressPools = new[]\n {\n \"10.100.0.0-10.100.0.10\",\n },\n ControlPlane = new Gcp.EdgeContainer.Inputs.ClusterControlPlaneArgs\n {\n Local = new Gcp.EdgeContainer.Inputs.ClusterControlPlaneLocalArgs\n {\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 1,\n MachineFilter = \"machine-name\",\n SharedDeploymentPolicy = \"ALLOWED\",\n },\n },\n });\n\n var defaultNodePool = new Gcp.EdgeContainer.NodePool(\"default\", new()\n {\n Name = \"nodepool-1\",\n Cluster = cluster.Name,\n Location = \"us-central1\",\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 3,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\t_, err = edgecontainer.NewCluster(ctx, \"default\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t},\n\t\t\tExternalLoadBalancerIpv4AddressPools: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.100.0.0-10.100.0.10\"),\n\t\t\t},\n\t\t\tControlPlane: \u0026edgecontainer.ClusterControlPlaneArgs{\n\t\t\t\tLocal: \u0026edgecontainer.ClusterControlPlaneLocalArgs{\n\t\t\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\t\t\tNodeCount: pulumi.Int(1),\n\t\t\t\t\tMachineFilter: pulumi.String(\"machine-name\"),\n\t\t\t\t\tSharedDeploymentPolicy: pulumi.String(\"ALLOWED\"),\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 = edgecontainer.NewNodePool(ctx, \"default\", \u0026edgecontainer.NodePoolArgs{\n\t\t\tName: pulumi.String(\"nodepool-1\"),\n\t\t\tCluster: pulumi.Any(cluster.Name),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\tNodeCount: pulumi.Int(3),\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.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterControlPlaneArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterControlPlaneLocalArgs;\nimport com.pulumi.gcp.edgecontainer.NodePool;\nimport com.pulumi.gcp.edgecontainer.NodePoolArgs;\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 default_ = new Cluster(\"default\", ClusterArgs.builder()\n .name(\"\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .externalLoadBalancerIpv4AddressPools(\"10.100.0.0-10.100.0.10\")\n .controlPlane(ClusterControlPlaneArgs.builder()\n .local(ClusterControlPlaneLocalArgs.builder()\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(1)\n .machineFilter(\"machine-name\")\n .sharedDeploymentPolicy(\"ALLOWED\")\n .build())\n .build())\n .build());\n\n var defaultNodePool = new NodePool(\"defaultNodePool\", NodePoolArgs.builder()\n .name(\"nodepool-1\")\n .cluster(cluster.name())\n .location(\"us-central1\")\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(3)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:edgecontainer:Cluster\n properties:\n name:\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n externalLoadBalancerIpv4AddressPools:\n - 10.100.0.0-10.100.0.10\n controlPlane:\n local:\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 1\n machineFilter: machine-name\n sharedDeploymentPolicy: ALLOWED\n defaultNodePool:\n type: gcp:edgecontainer:NodePool\n name: default\n properties:\n name: nodepool-1\n cluster: ${cluster.name}\n location: us-central1\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 3\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/nodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{name}}`\n\n* `{{location}}/{{cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, NodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:edgecontainer/nodePool:NodePool default projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/nodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/nodePool:NodePool default {{project}}/{{location}}/{{cluster}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/nodePool:NodePool default {{location}}/{{cluster}}/{{name}}\n```\n\n", + "description": "\"A set of Kubernetes nodes in a cluster with common configuration and specification.\"\n\n\nTo get more information about NodePool, see:\n\n* [API documentation](https://cloud.google.com/distributed-cloud/edge/latest/docs/reference/container/rest/v1/projects.locations.clusters.nodePools)\n* How-to Guides\n * [Google Distributed Cloud Edge](https://cloud.google.com/distributed-cloud/edge/latest/docs)\n\n## Example Usage\n\n### Edgecontainer Node Pool\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cluster = new gcp.edgecontainer.Cluster(\"cluster\", {\n name: \"default\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n});\nconst _default = new gcp.edgecontainer.NodePool(\"default\", {\n name: \"nodepool-1\",\n cluster: cluster.name,\n location: \"us-central1\",\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 3,\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncluster = gcp.edgecontainer.Cluster(\"cluster\",\n name=\"default\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n })\ndefault = gcp.edgecontainer.NodePool(\"default\",\n name=\"nodepool-1\",\n cluster=cluster.name,\n location=\"us-central1\",\n node_location=\"us-central1-edge-example-edgesite\",\n node_count=3,\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\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 cluster = new Gcp.EdgeContainer.Cluster(\"cluster\", new()\n {\n Name = \"default\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n });\n\n var @default = new Gcp.EdgeContainer.NodePool(\"default\", new()\n {\n Name = \"nodepool-1\",\n Cluster = cluster.Name,\n Location = \"us-central1\",\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 3,\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tcluster, err := edgecontainer.NewCluster(ctx, \"cluster\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewNodePool(ctx, \"default\", \u0026edgecontainer.NodePoolArgs{\n\t\t\tName: pulumi.String(\"nodepool-1\"),\n\t\t\tCluster: cluster.Name,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.NodePool;\nimport com.pulumi.gcp.edgecontainer.NodePoolArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"default\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n var default_ = new NodePool(\"default\", NodePoolArgs.builder()\n .name(\"nodepool-1\")\n .cluster(cluster.name())\n .location(\"us-central1\")\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(3)\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:edgecontainer:Cluster\n properties:\n name: default\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n default:\n type: gcp:edgecontainer:NodePool\n properties:\n name: nodepool-1\n cluster: ${cluster.name}\n location: us-central1\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 3\n labels:\n my_key: my_val\n other_key: other_val\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Edgecontainer Node Pool With Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cluster = new gcp.edgecontainer.Cluster(\"cluster\", {\n name: \"default\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"keyring\",\n location: \"us-central1\",\n});\nconst cryptoKeyCryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"key\",\n keyRing: keyRing.id,\n});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: cryptoKeyCryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-edgecontainer.iam.gserviceaccount.com`),\n});\nconst _default = new gcp.edgecontainer.NodePool(\"default\", {\n name: \"nodepool-1\",\n cluster: cluster.name,\n location: \"us-central1\",\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 3,\n localDiskEncryption: {\n kmsKey: cryptoKeyCryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKey],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncluster = gcp.edgecontainer.Cluster(\"cluster\",\n name=\"default\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n })\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"keyring\",\n location=\"us-central1\")\ncrypto_key_crypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"key\",\n key_ring=key_ring.id)\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=crypto_key_crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-edgecontainer.iam.gserviceaccount.com\")\ndefault = gcp.edgecontainer.NodePool(\"default\",\n name=\"nodepool-1\",\n cluster=cluster.name,\n location=\"us-central1\",\n node_location=\"us-central1-edge-example-edgesite\",\n node_count=3,\n local_disk_encryption={\n \"kms_key\": crypto_key_crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key]))\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 cluster = new Gcp.EdgeContainer.Cluster(\"cluster\", new()\n {\n Name = \"default\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"keyring\",\n Location = \"us-central1\",\n });\n\n var cryptoKeyCryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"key\",\n KeyRing = keyRing.Id,\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = cryptoKeyCryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-edgecontainer.iam.gserviceaccount.com\",\n });\n\n var @default = new Gcp.EdgeContainer.NodePool(\"default\", new()\n {\n Name = \"nodepool-1\",\n Cluster = cluster.Name,\n Location = \"us-central1\",\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 3,\n LocalDiskEncryption = new Gcp.EdgeContainer.Inputs.NodePoolLocalDiskEncryptionArgs\n {\n KmsKey = cryptoKeyCryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKey,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tcluster, err := edgecontainer.NewCluster(ctx, \"cluster\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"keyring\"),\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\tcryptoKeyCryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKeyCryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-edgecontainer.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewNodePool(ctx, \"default\", \u0026edgecontainer.NodePoolArgs{\n\t\t\tName: pulumi.String(\"nodepool-1\"),\n\t\t\tCluster: cluster.Name,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t\tLocalDiskEncryption: \u0026edgecontainer.NodePoolLocalDiskEncryptionArgs{\n\t\t\t\tKmsKey: cryptoKeyCryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKey,\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.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\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.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.edgecontainer.NodePool;\nimport com.pulumi.gcp.edgecontainer.NodePoolArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.NodePoolLocalDiskEncryptionArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"default\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"keyring\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKeyCryptoKey = new CryptoKey(\"cryptoKeyCryptoKey\", CryptoKeyArgs.builder()\n .name(\"key\")\n .keyRing(keyRing.id())\n .build());\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKeyCryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-edgecontainer.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var default_ = new NodePool(\"default\", NodePoolArgs.builder()\n .name(\"nodepool-1\")\n .cluster(cluster.name())\n .location(\"us-central1\")\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(3)\n .localDiskEncryption(NodePoolLocalDiskEncryptionArgs.builder()\n .kmsKey(cryptoKeyCryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKey)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:edgecontainer:Cluster\n properties:\n name: default\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: ${cryptoKeyCryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-edgecontainer.iam.gserviceaccount.com\n cryptoKeyCryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: keyring\n location: us-central1\n default:\n type: gcp:edgecontainer:NodePool\n properties:\n name: nodepool-1\n cluster: ${cluster.name}\n location: us-central1\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 3\n localDiskEncryption:\n kmsKey: ${cryptoKeyCryptoKey.id}\n options:\n dependson:\n - ${cryptoKey}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Edgecontainer Local Control Plane Node Pool\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.edgecontainer.Cluster(\"default\", {\n name: \"\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n externalLoadBalancerIpv4AddressPools: [\"10.100.0.0-10.100.0.10\"],\n controlPlane: {\n local: {\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 1,\n machineFilter: \"machine-name\",\n sharedDeploymentPolicy: \"ALLOWED\",\n },\n },\n});\nconst defaultNodePool = new gcp.edgecontainer.NodePool(\"default\", {\n name: \"nodepool-1\",\n cluster: cluster.name,\n location: \"us-central1\",\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 3,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.edgecontainer.Cluster(\"default\",\n name=\"\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n external_load_balancer_ipv4_address_pools=[\"10.100.0.0-10.100.0.10\"],\n control_plane={\n \"local\": {\n \"node_location\": \"us-central1-edge-example-edgesite\",\n \"node_count\": 1,\n \"machine_filter\": \"machine-name\",\n \"shared_deployment_policy\": \"ALLOWED\",\n },\n })\ndefault_node_pool = gcp.edgecontainer.NodePool(\"default\",\n name=\"nodepool-1\",\n cluster=cluster[\"name\"],\n location=\"us-central1\",\n node_location=\"us-central1-edge-example-edgesite\",\n node_count=3)\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 @default = new Gcp.EdgeContainer.Cluster(\"default\", new()\n {\n Name = \"\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n ExternalLoadBalancerIpv4AddressPools = new[]\n {\n \"10.100.0.0-10.100.0.10\",\n },\n ControlPlane = new Gcp.EdgeContainer.Inputs.ClusterControlPlaneArgs\n {\n Local = new Gcp.EdgeContainer.Inputs.ClusterControlPlaneLocalArgs\n {\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 1,\n MachineFilter = \"machine-name\",\n SharedDeploymentPolicy = \"ALLOWED\",\n },\n },\n });\n\n var defaultNodePool = new Gcp.EdgeContainer.NodePool(\"default\", new()\n {\n Name = \"nodepool-1\",\n Cluster = cluster.Name,\n Location = \"us-central1\",\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 3,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\t_, err = edgecontainer.NewCluster(ctx, \"default\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t},\n\t\t\tExternalLoadBalancerIpv4AddressPools: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.100.0.0-10.100.0.10\"),\n\t\t\t},\n\t\t\tControlPlane: \u0026edgecontainer.ClusterControlPlaneArgs{\n\t\t\t\tLocal: \u0026edgecontainer.ClusterControlPlaneLocalArgs{\n\t\t\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\t\t\tNodeCount: pulumi.Int(1),\n\t\t\t\t\tMachineFilter: pulumi.String(\"machine-name\"),\n\t\t\t\t\tSharedDeploymentPolicy: pulumi.String(\"ALLOWED\"),\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 = edgecontainer.NewNodePool(ctx, \"default\", \u0026edgecontainer.NodePoolArgs{\n\t\t\tName: pulumi.String(\"nodepool-1\"),\n\t\t\tCluster: pulumi.Any(cluster.Name),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\tNodeCount: pulumi.Int(3),\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.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterControlPlaneArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterControlPlaneLocalArgs;\nimport com.pulumi.gcp.edgecontainer.NodePool;\nimport com.pulumi.gcp.edgecontainer.NodePoolArgs;\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 default_ = new Cluster(\"default\", ClusterArgs.builder()\n .name(\"\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .externalLoadBalancerIpv4AddressPools(\"10.100.0.0-10.100.0.10\")\n .controlPlane(ClusterControlPlaneArgs.builder()\n .local(ClusterControlPlaneLocalArgs.builder()\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(1)\n .machineFilter(\"machine-name\")\n .sharedDeploymentPolicy(\"ALLOWED\")\n .build())\n .build())\n .build());\n\n var defaultNodePool = new NodePool(\"defaultNodePool\", NodePoolArgs.builder()\n .name(\"nodepool-1\")\n .cluster(cluster.name())\n .location(\"us-central1\")\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(3)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:edgecontainer:Cluster\n properties:\n name:\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n externalLoadBalancerIpv4AddressPools:\n - 10.100.0.0-10.100.0.10\n controlPlane:\n local:\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 1\n machineFilter: machine-name\n sharedDeploymentPolicy: ALLOWED\n defaultNodePool:\n type: gcp:edgecontainer:NodePool\n name: default\n properties:\n name: nodepool-1\n cluster: ${cluster.name}\n location: us-central1\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 3\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/nodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{name}}`\n\n* `{{location}}/{{cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, NodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:edgecontainer/nodePool:NodePool default projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/nodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/nodePool:NodePool default {{project}}/{{location}}/{{cluster}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/nodePool:NodePool default {{location}}/{{cluster}}/{{name}}\n```\n\n", "properties": { "cluster": { "type": "string", @@ -187898,7 +187898,7 @@ } }, "gcp:edgecontainer/vpnConnection:VpnConnection": { - "description": "A VPN connection\n\n\nTo get more information about VpnConnection, see:\n\n* [API documentation](https://cloud.google.com/distributed-cloud/edge/latest/docs/reference/container/rest/v1/projects.locations.vpnConnections)\n* How-to Guides\n * [Google Distributed Cloud Edge](https://cloud.google.com/distributed-cloud/edge/latest/docs)\n\n## Example Usage\n\n### Edgecontainer Vpn Connection\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cluster = new gcp.edgecontainer.Cluster(\"cluster\", {\n name: \"default\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n});\nconst nodePool = new gcp.edgecontainer.NodePool(\"node_pool\", {\n name: \"nodepool-1\",\n cluster: cluster.name,\n location: \"us-central1\",\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 3,\n});\nconst vpc = new gcp.compute.Network(\"vpc\", {name: \"example-vpc\"});\nconst _default = new gcp.edgecontainer.VpnConnection(\"default\", {\n name: \"vpn-connection-1\",\n location: \"us-central1\",\n cluster: pulumi.all([project, cluster.name]).apply(([project, name]) =\u003e `projects/${project.number}/locations/us-east1/clusters/${name}`),\n vpc: vpc.name,\n enableHighAvailability: true,\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n}, {\n dependsOn: [nodePool],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncluster = gcp.edgecontainer.Cluster(\"cluster\",\n name=\"default\",\n location=\"us-central1\",\n authorization={\n \"adminUsers\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"clusterIpv4CidrBlocks\": [\"10.0.0.0/16\"],\n \"servicesIpv4CidrBlocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n })\nnode_pool = gcp.edgecontainer.NodePool(\"node_pool\",\n name=\"nodepool-1\",\n cluster=cluster.name,\n location=\"us-central1\",\n node_location=\"us-central1-edge-example-edgesite\",\n node_count=3)\nvpc = gcp.compute.Network(\"vpc\", name=\"example-vpc\")\ndefault = gcp.edgecontainer.VpnConnection(\"default\",\n name=\"vpn-connection-1\",\n location=\"us-central1\",\n cluster=cluster.name.apply(lambda name: f\"projects/{project.number}/locations/us-east1/clusters/{name}\"),\n vpc=vpc.name,\n enable_high_availability=True,\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\n },\n opts = pulumi.ResourceOptions(depends_on=[node_pool]))\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 cluster = new Gcp.EdgeContainer.Cluster(\"cluster\", new()\n {\n Name = \"default\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n });\n\n var nodePool = new Gcp.EdgeContainer.NodePool(\"node_pool\", new()\n {\n Name = \"nodepool-1\",\n Cluster = cluster.Name,\n Location = \"us-central1\",\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 3,\n });\n\n var vpc = new Gcp.Compute.Network(\"vpc\", new()\n {\n Name = \"example-vpc\",\n });\n\n var @default = new Gcp.EdgeContainer.VpnConnection(\"default\", new()\n {\n Name = \"vpn-connection-1\",\n Location = \"us-central1\",\n Cluster = Output.Tuple(project, cluster.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/locations/us-east1/clusters/{name}\";\n }),\n Vpc = vpc.Name,\n EnableHighAvailability = true,\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n nodePool,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tcluster, err := edgecontainer.NewCluster(ctx, \"cluster\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnodePool, err := edgecontainer.NewNodePool(ctx, \"node_pool\", \u0026edgecontainer.NodePoolArgs{\n\t\t\tName: pulumi.String(\"nodepool-1\"),\n\t\t\tCluster: cluster.Name,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpc, err := compute.NewNetwork(ctx, \"vpc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"example-vpc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewVpnConnection(ctx, \"default\", \u0026edgecontainer.VpnConnectionArgs{\n\t\t\tName: pulumi.String(\"vpn-connection-1\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCluster: cluster.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/locations/us-east1/clusters/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tVpc: vpc.Name,\n\t\t\tEnableHighAvailability: pulumi.Bool(true),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tnodePool,\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.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.NodePool;\nimport com.pulumi.gcp.edgecontainer.NodePoolArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.edgecontainer.VpnConnection;\nimport com.pulumi.gcp.edgecontainer.VpnConnectionArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"default\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n var nodePool = new NodePool(\"nodePool\", NodePoolArgs.builder()\n .name(\"nodepool-1\")\n .cluster(cluster.name())\n .location(\"us-central1\")\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(3)\n .build());\n\n var vpc = new Network(\"vpc\", NetworkArgs.builder()\n .name(\"example-vpc\")\n .build());\n\n var default_ = new VpnConnection(\"default\", VpnConnectionArgs.builder()\n .name(\"vpn-connection-1\")\n .location(\"us-central1\")\n .cluster(cluster.name().applyValue(name -\u003e String.format(\"projects/%s/locations/us-east1/clusters/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .vpc(vpc.name())\n .enableHighAvailability(true)\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .build(), CustomResourceOptions.builder()\n .dependsOn(nodePool)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:edgecontainer:Cluster\n properties:\n name: default\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n nodePool:\n type: gcp:edgecontainer:NodePool\n name: node_pool\n properties:\n name: nodepool-1\n cluster: ${cluster.name}\n location: us-central1\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 3\n default:\n type: gcp:edgecontainer:VpnConnection\n properties:\n name: vpn-connection-1\n location: us-central1\n cluster: projects/${project.number}/locations/us-east1/clusters/${cluster.name}\n vpc: ${vpc.name}\n enableHighAvailability: true\n labels:\n my_key: my_val\n other_key: other_val\n options:\n dependson:\n - ${nodePool}\n vpc:\n type: gcp:compute:Network\n properties:\n name: example-vpc\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVpnConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/vpnConnections/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, VpnConnection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:edgecontainer/vpnConnection:VpnConnection default projects/{{project}}/locations/{{location}}/vpnConnections/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/vpnConnection:VpnConnection default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/vpnConnection:VpnConnection default {{location}}/{{name}}\n```\n\n", + "description": "A VPN connection\n\n\nTo get more information about VpnConnection, see:\n\n* [API documentation](https://cloud.google.com/distributed-cloud/edge/latest/docs/reference/container/rest/v1/projects.locations.vpnConnections)\n* How-to Guides\n * [Google Distributed Cloud Edge](https://cloud.google.com/distributed-cloud/edge/latest/docs)\n\n## Example Usage\n\n### Edgecontainer Vpn Connection\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cluster = new gcp.edgecontainer.Cluster(\"cluster\", {\n name: \"default\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n});\nconst nodePool = new gcp.edgecontainer.NodePool(\"node_pool\", {\n name: \"nodepool-1\",\n cluster: cluster.name,\n location: \"us-central1\",\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 3,\n});\nconst vpc = new gcp.compute.Network(\"vpc\", {name: \"example-vpc\"});\nconst _default = new gcp.edgecontainer.VpnConnection(\"default\", {\n name: \"vpn-connection-1\",\n location: \"us-central1\",\n cluster: pulumi.all([project, cluster.name]).apply(([project, name]) =\u003e `projects/${project.number}/locations/us-east1/clusters/${name}`),\n vpc: vpc.name,\n enableHighAvailability: true,\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n}, {\n dependsOn: [nodePool],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncluster = gcp.edgecontainer.Cluster(\"cluster\",\n name=\"default\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n })\nnode_pool = gcp.edgecontainer.NodePool(\"node_pool\",\n name=\"nodepool-1\",\n cluster=cluster.name,\n location=\"us-central1\",\n node_location=\"us-central1-edge-example-edgesite\",\n node_count=3)\nvpc = gcp.compute.Network(\"vpc\", name=\"example-vpc\")\ndefault = gcp.edgecontainer.VpnConnection(\"default\",\n name=\"vpn-connection-1\",\n location=\"us-central1\",\n cluster=cluster.name.apply(lambda name: f\"projects/{project.number}/locations/us-east1/clusters/{name}\"),\n vpc=vpc.name,\n enable_high_availability=True,\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\n },\n opts = pulumi.ResourceOptions(depends_on=[node_pool]))\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 cluster = new Gcp.EdgeContainer.Cluster(\"cluster\", new()\n {\n Name = \"default\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n });\n\n var nodePool = new Gcp.EdgeContainer.NodePool(\"node_pool\", new()\n {\n Name = \"nodepool-1\",\n Cluster = cluster.Name,\n Location = \"us-central1\",\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 3,\n });\n\n var vpc = new Gcp.Compute.Network(\"vpc\", new()\n {\n Name = \"example-vpc\",\n });\n\n var @default = new Gcp.EdgeContainer.VpnConnection(\"default\", new()\n {\n Name = \"vpn-connection-1\",\n Location = \"us-central1\",\n Cluster = Output.Tuple(project, cluster.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/locations/us-east1/clusters/{name}\";\n }),\n Vpc = vpc.Name,\n EnableHighAvailability = true,\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n nodePool,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tcluster, err := edgecontainer.NewCluster(ctx, \"cluster\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(fmt.Sprintf(\"projects/%v\", project.Number)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnodePool, err := edgecontainer.NewNodePool(ctx, \"node_pool\", \u0026edgecontainer.NodePoolArgs{\n\t\t\tName: pulumi.String(\"nodepool-1\"),\n\t\t\tCluster: cluster.Name,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpc, err := compute.NewNetwork(ctx, \"vpc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"example-vpc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewVpnConnection(ctx, \"default\", \u0026edgecontainer.VpnConnectionArgs{\n\t\t\tName: pulumi.String(\"vpn-connection-1\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCluster: cluster.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/locations/us-east1/clusters/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tVpc: vpc.Name,\n\t\t\tEnableHighAvailability: pulumi.Bool(true),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tnodePool,\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.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.NodePool;\nimport com.pulumi.gcp.edgecontainer.NodePoolArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.edgecontainer.VpnConnection;\nimport com.pulumi.gcp.edgecontainer.VpnConnectionArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"default\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n var nodePool = new NodePool(\"nodePool\", NodePoolArgs.builder()\n .name(\"nodepool-1\")\n .cluster(cluster.name())\n .location(\"us-central1\")\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(3)\n .build());\n\n var vpc = new Network(\"vpc\", NetworkArgs.builder()\n .name(\"example-vpc\")\n .build());\n\n var default_ = new VpnConnection(\"default\", VpnConnectionArgs.builder()\n .name(\"vpn-connection-1\")\n .location(\"us-central1\")\n .cluster(cluster.name().applyValue(name -\u003e String.format(\"projects/%s/locations/us-east1/clusters/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .vpc(vpc.name())\n .enableHighAvailability(true)\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .build(), CustomResourceOptions.builder()\n .dependsOn(nodePool)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:edgecontainer:Cluster\n properties:\n name: default\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n nodePool:\n type: gcp:edgecontainer:NodePool\n name: node_pool\n properties:\n name: nodepool-1\n cluster: ${cluster.name}\n location: us-central1\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 3\n default:\n type: gcp:edgecontainer:VpnConnection\n properties:\n name: vpn-connection-1\n location: us-central1\n cluster: projects/${project.number}/locations/us-east1/clusters/${cluster.name}\n vpc: ${vpc.name}\n enableHighAvailability: true\n labels:\n my_key: my_val\n other_key: other_val\n options:\n dependson:\n - ${nodePool}\n vpc:\n type: gcp:compute:Network\n properties:\n name: example-vpc\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVpnConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/vpnConnections/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, VpnConnection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:edgecontainer/vpnConnection:VpnConnection default projects/{{project}}/locations/{{location}}/vpnConnections/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/vpnConnection:VpnConnection default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/vpnConnection:VpnConnection default {{location}}/{{name}}\n```\n\n", "properties": { "cluster": { "type": "string", @@ -188784,7 +188784,7 @@ } }, "gcp:endpoints/service:Service": { - "description": "This resource creates and rolls out a Cloud Endpoints service using OpenAPI or gRPC. View the relevant docs for [OpenAPI](https://cloud.google.com/endpoints/docs/openapi/) and [gRPC](https://cloud.google.com/endpoints/docs/grpc/).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst openapiService = new gcp.endpoints.Service(\"openapi_service\", {\n serviceName: \"api-name.endpoints.project-id.cloud.goog\",\n project: \"project-id\",\n openapiConfig: std.file({\n input: \"openapi_spec.yml\",\n }).then(invoke =\u003e invoke.result),\n});\nconst grpcService = new gcp.endpoints.Service(\"grpc_service\", {\n serviceName: \"api-name.endpoints.project-id.cloud.goog\",\n project: \"project-id\",\n grpcConfig: std.file({\n input: \"service_spec.yml\",\n }).then(invoke =\u003e invoke.result),\n protocOutputBase64: std.filebase64({\n input: \"compiled_descriptor_file.pb\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nopenapi_service = gcp.endpoints.Service(\"openapi_service\",\n service_name=\"api-name.endpoints.project-id.cloud.goog\",\n project=\"project-id\",\n openapi_config=std.file(input=\"openapi_spec.yml\").result)\ngrpc_service = gcp.endpoints.Service(\"grpc_service\",\n service_name=\"api-name.endpoints.project-id.cloud.goog\",\n project=\"project-id\",\n grpc_config=std.file(input=\"service_spec.yml\").result,\n protoc_output_base64=std.filebase64(input=\"compiled_descriptor_file.pb\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var openapiService = new Gcp.Endpoints.Service(\"openapi_service\", new()\n {\n ServiceName = \"api-name.endpoints.project-id.cloud.goog\",\n Project = \"project-id\",\n OpenapiConfig = Std.File.Invoke(new()\n {\n Input = \"openapi_spec.yml\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var grpcService = new Gcp.Endpoints.Service(\"grpc_service\", new()\n {\n ServiceName = \"api-name.endpoints.project-id.cloud.goog\",\n Project = \"project-id\",\n GrpcConfig = Std.File.Invoke(new()\n {\n Input = \"service_spec.yml\",\n }).Apply(invoke =\u003e invoke.Result),\n ProtocOutputBase64 = Std.Filebase64.Invoke(new()\n {\n Input = \"compiled_descriptor_file.pb\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/endpoints\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"openapi_spec.yml\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = endpoints.NewService(ctx, \"openapi_service\", \u0026endpoints.ServiceArgs{\n\t\t\tServiceName: pulumi.String(\"api-name.endpoints.project-id.cloud.goog\"),\n\t\t\tProject: pulumi.String(\"project-id\"),\n\t\t\tOpenapiConfig: invokeFile.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"service_spec.yml\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilebase642, err := std.Filebase64(ctx, \u0026std.Filebase64Args{\n\t\t\tInput: \"compiled_descriptor_file.pb\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = endpoints.NewService(ctx, \"grpc_service\", \u0026endpoints.ServiceArgs{\n\t\t\tServiceName: pulumi.String(\"api-name.endpoints.project-id.cloud.goog\"),\n\t\t\tProject: pulumi.String(\"project-id\"),\n\t\t\tGrpcConfig: invokeFile1.Result,\n\t\t\tProtocOutputBase64: invokeFilebase642.Result,\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.endpoints.Service;\nimport com.pulumi.gcp.endpoints.ServiceArgs;\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 openapiService = new Service(\"openapiService\", ServiceArgs.builder()\n .serviceName(\"api-name.endpoints.project-id.cloud.goog\")\n .project(\"project-id\")\n .openapiConfig(StdFunctions.file(FileArgs.builder()\n .input(\"openapi_spec.yml\")\n .build()).result())\n .build());\n\n var grpcService = new Service(\"grpcService\", ServiceArgs.builder()\n .serviceName(\"api-name.endpoints.project-id.cloud.goog\")\n .project(\"project-id\")\n .grpcConfig(StdFunctions.file(FileArgs.builder()\n .input(\"service_spec.yml\")\n .build()).result())\n .protocOutputBase64(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"compiled_descriptor_file.pb\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n openapiService:\n type: gcp:endpoints:Service\n name: openapi_service\n properties:\n serviceName: api-name.endpoints.project-id.cloud.goog\n project: project-id\n openapiConfig:\n fn::invoke:\n Function: std:file\n Arguments:\n input: openapi_spec.yml\n Return: result\n grpcService:\n type: gcp:endpoints:Service\n name: grpc_service\n properties:\n serviceName: api-name.endpoints.project-id.cloud.goog\n project: project-id\n grpcConfig:\n fn::invoke:\n Function: std:file\n Arguments:\n input: service_spec.yml\n Return: result\n protocOutputBase64:\n fn::invoke:\n Function: std:filebase64\n Arguments:\n input: compiled_descriptor_file.pb\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe example in `examples/endpoints_on_compute_engine` shows the API from the quickstart running on a Compute Engine VM and reachable through Cloud Endpoints, which may also be useful.\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "This resource creates and rolls out a Cloud Endpoints service using OpenAPI or gRPC. View the relevant docs for [OpenAPI](https://cloud.google.com/endpoints/docs/openapi/) and [gRPC](https://cloud.google.com/endpoints/docs/grpc/).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst openapiService = new gcp.endpoints.Service(\"openapi_service\", {\n serviceName: \"api-name.endpoints.project-id.cloud.goog\",\n project: \"project-id\",\n openapiConfig: std.file({\n input: \"openapi_spec.yml\",\n }).then(invoke =\u003e invoke.result),\n});\nconst grpcService = new gcp.endpoints.Service(\"grpc_service\", {\n serviceName: \"api-name.endpoints.project-id.cloud.goog\",\n project: \"project-id\",\n grpcConfig: std.file({\n input: \"service_spec.yml\",\n }).then(invoke =\u003e invoke.result),\n protocOutputBase64: std.filebase64({\n input: \"compiled_descriptor_file.pb\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nopenapi_service = gcp.endpoints.Service(\"openapi_service\",\n service_name=\"api-name.endpoints.project-id.cloud.goog\",\n project=\"project-id\",\n openapi_config=std.file(input=\"openapi_spec.yml\").result)\ngrpc_service = gcp.endpoints.Service(\"grpc_service\",\n service_name=\"api-name.endpoints.project-id.cloud.goog\",\n project=\"project-id\",\n grpc_config=std.file(input=\"service_spec.yml\").result,\n protoc_output_base64=std.filebase64(input=\"compiled_descriptor_file.pb\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var openapiService = new Gcp.Endpoints.Service(\"openapi_service\", new()\n {\n ServiceName = \"api-name.endpoints.project-id.cloud.goog\",\n Project = \"project-id\",\n OpenapiConfig = Std.File.Invoke(new()\n {\n Input = \"openapi_spec.yml\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var grpcService = new Gcp.Endpoints.Service(\"grpc_service\", new()\n {\n ServiceName = \"api-name.endpoints.project-id.cloud.goog\",\n Project = \"project-id\",\n GrpcConfig = Std.File.Invoke(new()\n {\n Input = \"service_spec.yml\",\n }).Apply(invoke =\u003e invoke.Result),\n ProtocOutputBase64 = Std.Filebase64.Invoke(new()\n {\n Input = \"compiled_descriptor_file.pb\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/endpoints\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"openapi_spec.yml\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = endpoints.NewService(ctx, \"openapi_service\", \u0026endpoints.ServiceArgs{\n\t\t\tServiceName: pulumi.String(\"api-name.endpoints.project-id.cloud.goog\"),\n\t\t\tProject: pulumi.String(\"project-id\"),\n\t\t\tOpenapiConfig: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"service_spec.yml\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilebase642, err := std.Filebase64(ctx, \u0026std.Filebase64Args{\n\t\t\tInput: \"compiled_descriptor_file.pb\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = endpoints.NewService(ctx, \"grpc_service\", \u0026endpoints.ServiceArgs{\n\t\t\tServiceName: pulumi.String(\"api-name.endpoints.project-id.cloud.goog\"),\n\t\t\tProject: pulumi.String(\"project-id\"),\n\t\t\tGrpcConfig: pulumi.String(invokeFile1.Result),\n\t\t\tProtocOutputBase64: pulumi.String(invokeFilebase642.Result),\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.endpoints.Service;\nimport com.pulumi.gcp.endpoints.ServiceArgs;\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 openapiService = new Service(\"openapiService\", ServiceArgs.builder()\n .serviceName(\"api-name.endpoints.project-id.cloud.goog\")\n .project(\"project-id\")\n .openapiConfig(StdFunctions.file(FileArgs.builder()\n .input(\"openapi_spec.yml\")\n .build()).result())\n .build());\n\n var grpcService = new Service(\"grpcService\", ServiceArgs.builder()\n .serviceName(\"api-name.endpoints.project-id.cloud.goog\")\n .project(\"project-id\")\n .grpcConfig(StdFunctions.file(FileArgs.builder()\n .input(\"service_spec.yml\")\n .build()).result())\n .protocOutputBase64(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"compiled_descriptor_file.pb\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n openapiService:\n type: gcp:endpoints:Service\n name: openapi_service\n properties:\n serviceName: api-name.endpoints.project-id.cloud.goog\n project: project-id\n openapiConfig:\n fn::invoke:\n Function: std:file\n Arguments:\n input: openapi_spec.yml\n Return: result\n grpcService:\n type: gcp:endpoints:Service\n name: grpc_service\n properties:\n serviceName: api-name.endpoints.project-id.cloud.goog\n project: project-id\n grpcConfig:\n fn::invoke:\n Function: std:file\n Arguments:\n input: service_spec.yml\n Return: result\n protocOutputBase64:\n fn::invoke:\n Function: std:filebase64\n Arguments:\n input: compiled_descriptor_file.pb\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe example in `examples/endpoints_on_compute_engine` shows the API from the quickstart running on a Compute Engine VM and reachable through Cloud Endpoints, which may also be useful.\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "apis": { "type": "array", @@ -189387,7 +189387,7 @@ } }, "gcp:essentialcontacts/documentAiWarehouseDocumentSchema:DocumentAiWarehouseDocumentSchema": { - "description": "A document schema is used to define document structure.\n\n\nTo get more information about DocumentSchema, see:\n\n* [API documentation](https://cloud.google.com/document-warehouse/docs/reference/rest/v1/projects.locations.documentSchemas)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/document-warehouse/docs/manage-document-schemas)\n\n## Example Usage\n\n### Document Ai Warehouse Document Schema Text\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst exampleText = new gcp.essentialcontacts.DocumentAiWarehouseDocumentSchema(\"example_text\", {\n projectNumber: project.then(project =\u003e project.number),\n displayName: \"test-property-text\",\n location: \"us\",\n documentIsFolder: false,\n propertyDefinitions: [{\n name: \"prop3\",\n displayName: \"propdisp3\",\n isRepeatable: false,\n isFilterable: true,\n isSearchable: true,\n isMetadata: false,\n isRequired: false,\n retrievalImportance: \"HIGHEST\",\n schemaSources: [{\n name: \"dummy_source\",\n processorType: \"dummy_processor\",\n }],\n textTypeOptions: {},\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_text = gcp.essentialcontacts.DocumentAiWarehouseDocumentSchema(\"example_text\",\n project_number=project.number,\n display_name=\"test-property-text\",\n location=\"us\",\n document_is_folder=False,\n property_definitions=[{\n \"name\": \"prop3\",\n \"displayName\": \"propdisp3\",\n \"isRepeatable\": False,\n \"isFilterable\": True,\n \"isSearchable\": True,\n \"isMetadata\": False,\n \"isRequired\": False,\n \"retrievalImportance\": \"HIGHEST\",\n \"schemaSources\": [{\n \"name\": \"dummy_source\",\n \"processorType\": \"dummy_processor\",\n }],\n \"textTypeOptions\": {},\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 exampleText = new Gcp.EssentialContacts.DocumentAiWarehouseDocumentSchema(\"example_text\", new()\n {\n ProjectNumber = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n DisplayName = \"test-property-text\",\n Location = \"us\",\n DocumentIsFolder = false,\n PropertyDefinitions = new[]\n {\n new Gcp.EssentialContacts.Inputs.DocumentAiWarehouseDocumentSchemaPropertyDefinitionArgs\n {\n Name = \"prop3\",\n DisplayName = \"propdisp3\",\n IsRepeatable = false,\n IsFilterable = true,\n IsSearchable = true,\n IsMetadata = false,\n IsRequired = false,\n RetrievalImportance = \"HIGHEST\",\n SchemaSources = new[]\n {\n new Gcp.EssentialContacts.Inputs.DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArgs\n {\n Name = \"dummy_source\",\n ProcessorType = \"dummy_processor\",\n },\n },\n TextTypeOptions = null,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/essentialcontacts\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\t_, err = essentialcontacts.NewDocumentAiWarehouseDocumentSchema(ctx, \"example_text\", \u0026essentialcontacts.DocumentAiWarehouseDocumentSchemaArgs{\n\t\t\tProjectNumber: pulumi.String(project.Number),\n\t\t\tDisplayName: pulumi.String(\"test-property-text\"),\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t\tDocumentIsFolder: pulumi.Bool(false),\n\t\t\tPropertyDefinitions: essentialcontacts.DocumentAiWarehouseDocumentSchemaPropertyDefinitionArray{\n\t\t\t\t\u0026essentialcontacts.DocumentAiWarehouseDocumentSchemaPropertyDefinitionArgs{\n\t\t\t\t\tName: pulumi.String(\"prop3\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"propdisp3\"),\n\t\t\t\t\tIsRepeatable: pulumi.Bool(false),\n\t\t\t\t\tIsFilterable: pulumi.Bool(true),\n\t\t\t\t\tIsSearchable: pulumi.Bool(true),\n\t\t\t\t\tIsMetadata: pulumi.Bool(false),\n\t\t\t\t\tIsRequired: pulumi.Bool(false),\n\t\t\t\t\tRetrievalImportance: pulumi.String(\"HIGHEST\"),\n\t\t\t\t\tSchemaSources: essentialcontacts.DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArray{\n\t\t\t\t\t\t\u0026essentialcontacts.DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"dummy_source\"),\n\t\t\t\t\t\t\tProcessorType: pulumi.String(\"dummy_processor\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTextTypeOptions: nil,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.essentialcontacts.DocumentAiWarehouseDocumentSchema;\nimport com.pulumi.gcp.essentialcontacts.DocumentAiWarehouseDocumentSchemaArgs;\nimport com.pulumi.gcp.essentialcontacts.inputs.DocumentAiWarehouseDocumentSchemaPropertyDefinitionArgs;\nimport com.pulumi.gcp.essentialcontacts.inputs.DocumentAiWarehouseDocumentSchemaPropertyDefinitionTextTypeOptionsArgs;\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 exampleText = new DocumentAiWarehouseDocumentSchema(\"exampleText\", DocumentAiWarehouseDocumentSchemaArgs.builder()\n .projectNumber(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .displayName(\"test-property-text\")\n .location(\"us\")\n .documentIsFolder(false)\n .propertyDefinitions(DocumentAiWarehouseDocumentSchemaPropertyDefinitionArgs.builder()\n .name(\"prop3\")\n .displayName(\"propdisp3\")\n .isRepeatable(false)\n .isFilterable(true)\n .isSearchable(true)\n .isMetadata(false)\n .isRequired(false)\n .retrievalImportance(\"HIGHEST\")\n .schemaSources(DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArgs.builder()\n .name(\"dummy_source\")\n .processorType(\"dummy_processor\")\n .build())\n .textTypeOptions()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleText:\n type: gcp:essentialcontacts:DocumentAiWarehouseDocumentSchema\n name: example_text\n properties:\n projectNumber: ${project.number}\n displayName: test-property-text\n location: us\n documentIsFolder: false\n propertyDefinitions:\n - name: prop3\n displayName: propdisp3\n isRepeatable: false\n isFilterable: true\n isSearchable: true\n isMetadata: false\n isRequired: false\n retrievalImportance: HIGHEST\n schemaSources:\n - name: dummy_source\n processorType: dummy_processor\n textTypeOptions: {}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDocumentSchema can be imported using any of these accepted formats:\n\n* `projects/{{project_number}}/locations/{{location}}/documentSchemas/{{name}}`\n\n* `{{project_number}}/{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, DocumentSchema can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:essentialcontacts/documentAiWarehouseDocumentSchema:DocumentAiWarehouseDocumentSchema default projects/{{project_number}}/locations/{{location}}/documentSchemas/{{name}}\n```\n\n```sh\n$ pulumi import gcp:essentialcontacts/documentAiWarehouseDocumentSchema:DocumentAiWarehouseDocumentSchema default {{project_number}}/{{location}}/{{name}}\n```\n\n", + "description": "A document schema is used to define document structure.\n\n\nTo get more information about DocumentSchema, see:\n\n* [API documentation](https://cloud.google.com/document-warehouse/docs/reference/rest/v1/projects.locations.documentSchemas)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/document-warehouse/docs/manage-document-schemas)\n\n## Example Usage\n\n### Document Ai Warehouse Document Schema Text\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst exampleText = new gcp.essentialcontacts.DocumentAiWarehouseDocumentSchema(\"example_text\", {\n projectNumber: project.then(project =\u003e project.number),\n displayName: \"test-property-text\",\n location: \"us\",\n documentIsFolder: false,\n propertyDefinitions: [{\n name: \"prop3\",\n displayName: \"propdisp3\",\n isRepeatable: false,\n isFilterable: true,\n isSearchable: true,\n isMetadata: false,\n isRequired: false,\n retrievalImportance: \"HIGHEST\",\n schemaSources: [{\n name: \"dummy_source\",\n processorType: \"dummy_processor\",\n }],\n textTypeOptions: {},\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_text = gcp.essentialcontacts.DocumentAiWarehouseDocumentSchema(\"example_text\",\n project_number=project.number,\n display_name=\"test-property-text\",\n location=\"us\",\n document_is_folder=False,\n property_definitions=[{\n \"name\": \"prop3\",\n \"display_name\": \"propdisp3\",\n \"is_repeatable\": False,\n \"is_filterable\": True,\n \"is_searchable\": True,\n \"is_metadata\": False,\n \"is_required\": False,\n \"retrieval_importance\": \"HIGHEST\",\n \"schema_sources\": [{\n \"name\": \"dummy_source\",\n \"processor_type\": \"dummy_processor\",\n }],\n \"text_type_options\": {},\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 exampleText = new Gcp.EssentialContacts.DocumentAiWarehouseDocumentSchema(\"example_text\", new()\n {\n ProjectNumber = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n DisplayName = \"test-property-text\",\n Location = \"us\",\n DocumentIsFolder = false,\n PropertyDefinitions = new[]\n {\n new Gcp.EssentialContacts.Inputs.DocumentAiWarehouseDocumentSchemaPropertyDefinitionArgs\n {\n Name = \"prop3\",\n DisplayName = \"propdisp3\",\n IsRepeatable = false,\n IsFilterable = true,\n IsSearchable = true,\n IsMetadata = false,\n IsRequired = false,\n RetrievalImportance = \"HIGHEST\",\n SchemaSources = new[]\n {\n new Gcp.EssentialContacts.Inputs.DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArgs\n {\n Name = \"dummy_source\",\n ProcessorType = \"dummy_processor\",\n },\n },\n TextTypeOptions = null,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/essentialcontacts\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\t_, err = essentialcontacts.NewDocumentAiWarehouseDocumentSchema(ctx, \"example_text\", \u0026essentialcontacts.DocumentAiWarehouseDocumentSchemaArgs{\n\t\t\tProjectNumber: pulumi.String(project.Number),\n\t\t\tDisplayName: pulumi.String(\"test-property-text\"),\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t\tDocumentIsFolder: pulumi.Bool(false),\n\t\t\tPropertyDefinitions: essentialcontacts.DocumentAiWarehouseDocumentSchemaPropertyDefinitionArray{\n\t\t\t\t\u0026essentialcontacts.DocumentAiWarehouseDocumentSchemaPropertyDefinitionArgs{\n\t\t\t\t\tName: pulumi.String(\"prop3\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"propdisp3\"),\n\t\t\t\t\tIsRepeatable: pulumi.Bool(false),\n\t\t\t\t\tIsFilterable: pulumi.Bool(true),\n\t\t\t\t\tIsSearchable: pulumi.Bool(true),\n\t\t\t\t\tIsMetadata: pulumi.Bool(false),\n\t\t\t\t\tIsRequired: pulumi.Bool(false),\n\t\t\t\t\tRetrievalImportance: pulumi.String(\"HIGHEST\"),\n\t\t\t\t\tSchemaSources: essentialcontacts.DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArray{\n\t\t\t\t\t\t\u0026essentialcontacts.DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"dummy_source\"),\n\t\t\t\t\t\t\tProcessorType: pulumi.String(\"dummy_processor\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTextTypeOptions: nil,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.essentialcontacts.DocumentAiWarehouseDocumentSchema;\nimport com.pulumi.gcp.essentialcontacts.DocumentAiWarehouseDocumentSchemaArgs;\nimport com.pulumi.gcp.essentialcontacts.inputs.DocumentAiWarehouseDocumentSchemaPropertyDefinitionArgs;\nimport com.pulumi.gcp.essentialcontacts.inputs.DocumentAiWarehouseDocumentSchemaPropertyDefinitionTextTypeOptionsArgs;\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 exampleText = new DocumentAiWarehouseDocumentSchema(\"exampleText\", DocumentAiWarehouseDocumentSchemaArgs.builder()\n .projectNumber(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .displayName(\"test-property-text\")\n .location(\"us\")\n .documentIsFolder(false)\n .propertyDefinitions(DocumentAiWarehouseDocumentSchemaPropertyDefinitionArgs.builder()\n .name(\"prop3\")\n .displayName(\"propdisp3\")\n .isRepeatable(false)\n .isFilterable(true)\n .isSearchable(true)\n .isMetadata(false)\n .isRequired(false)\n .retrievalImportance(\"HIGHEST\")\n .schemaSources(DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArgs.builder()\n .name(\"dummy_source\")\n .processorType(\"dummy_processor\")\n .build())\n .textTypeOptions()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleText:\n type: gcp:essentialcontacts:DocumentAiWarehouseDocumentSchema\n name: example_text\n properties:\n projectNumber: ${project.number}\n displayName: test-property-text\n location: us\n documentIsFolder: false\n propertyDefinitions:\n - name: prop3\n displayName: propdisp3\n isRepeatable: false\n isFilterable: true\n isSearchable: true\n isMetadata: false\n isRequired: false\n retrievalImportance: HIGHEST\n schemaSources:\n - name: dummy_source\n processorType: dummy_processor\n textTypeOptions: {}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDocumentSchema can be imported using any of these accepted formats:\n\n* `projects/{{project_number}}/locations/{{location}}/documentSchemas/{{name}}`\n\n* `{{project_number}}/{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, DocumentSchema can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:essentialcontacts/documentAiWarehouseDocumentSchema:DocumentAiWarehouseDocumentSchema default projects/{{project_number}}/locations/{{location}}/documentSchemas/{{name}}\n```\n\n```sh\n$ pulumi import gcp:essentialcontacts/documentAiWarehouseDocumentSchema:DocumentAiWarehouseDocumentSchema default {{project_number}}/{{location}}/{{name}}\n```\n\n", "properties": { "displayName": { "type": "string", @@ -189836,7 +189836,7 @@ } }, "gcp:eventarc/trigger:Trigger": { - "description": "The Eventarc Trigger resource\n\n## Example Usage\n\n### Basic\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"eventarc-service\",\n location: \"europe-west1\",\n metadata: {\n namespace: \"my-project-name\",\n },\n template: {\n spec: {\n containers: [{\n image: \"gcr.io/cloudrun/hello\",\n ports: [{\n containerPort: 8080,\n }],\n }],\n containerConcurrency: 50,\n timeoutSeconds: 100,\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\nconst primary = new gcp.eventarc.Trigger(\"primary\", {\n name: \"name\",\n location: \"europe-west1\",\n matchingCriterias: [{\n attribute: \"type\",\n value: \"google.cloud.pubsub.topic.v1.messagePublished\",\n }],\n destination: {\n cloudRunService: {\n service: _default.name,\n region: \"europe-west1\",\n },\n },\n labels: {\n foo: \"bar\",\n },\n});\nconst foo = new gcp.pubsub.Topic(\"foo\", {name: \"topic\"});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"eventarc-service\",\n location=\"europe-west1\",\n metadata={\n \"namespace\": \"my-project-name\",\n },\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"gcr.io/cloudrun/hello\",\n \"ports\": [{\n \"containerPort\": 8080,\n }],\n }],\n \"containerConcurrency\": 50,\n \"timeoutSeconds\": 100,\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latestRevision\": True,\n }])\nprimary = gcp.eventarc.Trigger(\"primary\",\n name=\"name\",\n location=\"europe-west1\",\n matching_criterias=[{\n \"attribute\": \"type\",\n \"value\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n }],\n destination={\n \"cloudRunService\": {\n \"service\": default.name,\n \"region\": \"europe-west1\",\n },\n },\n labels={\n \"foo\": \"bar\",\n })\nfoo = gcp.pubsub.Topic(\"foo\", name=\"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 @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"eventarc-service\",\n Location = \"europe-west1\",\n Metadata = new Gcp.CloudRun.Inputs.ServiceMetadataArgs\n {\n Namespace = \"my-project-name\",\n },\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 = \"gcr.io/cloudrun/hello\",\n Ports = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerPortArgs\n {\n ContainerPort = 8080,\n },\n },\n },\n },\n ContainerConcurrency = 50,\n TimeoutSeconds = 100,\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n var primary = new Gcp.Eventarc.Trigger(\"primary\", new()\n {\n Name = \"name\",\n Location = \"europe-west1\",\n MatchingCriterias = new[]\n {\n new Gcp.Eventarc.Inputs.TriggerMatchingCriteriaArgs\n {\n Attribute = \"type\",\n Value = \"google.cloud.pubsub.topic.v1.messagePublished\",\n },\n },\n Destination = new Gcp.Eventarc.Inputs.TriggerDestinationArgs\n {\n CloudRunService = new Gcp.Eventarc.Inputs.TriggerDestinationCloudRunServiceArgs\n {\n Service = @default.Name,\n Region = \"europe-west1\",\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var foo = new Gcp.PubSub.Topic(\"foo\", new()\n {\n Name = \"topic\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/eventarc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"eventarc-service\"),\n\t\t\tLocation: pulumi.String(\"europe-west1\"),\n\t\t\tMetadata: \u0026cloudrun.ServiceMetadataArgs{\n\t\t\t\tNamespace: pulumi.String(\"my-project-name\"),\n\t\t\t},\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(\"gcr.io/cloudrun/hello\"),\n\t\t\t\t\t\t\tPorts: cloudrun.ServiceTemplateSpecContainerPortArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerPortArgs{\n\t\t\t\t\t\t\t\t\tContainerPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t\t},\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\tContainerConcurrency: pulumi.Int(50),\n\t\t\t\t\tTimeoutSeconds: pulumi.Int(100),\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 = eventarc.NewTrigger(ctx, \"primary\", \u0026eventarc.TriggerArgs{\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tLocation: pulumi.String(\"europe-west1\"),\n\t\t\tMatchingCriterias: eventarc.TriggerMatchingCriteriaArray{\n\t\t\t\t\u0026eventarc.TriggerMatchingCriteriaArgs{\n\t\t\t\t\tAttribute: pulumi.String(\"type\"),\n\t\t\t\t\tValue: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestination: \u0026eventarc.TriggerDestinationArgs{\n\t\t\t\tCloudRunService: \u0026eventarc.TriggerDestinationCloudRunServiceArgs{\n\t\t\t\t\tService: _default.Name,\n\t\t\t\t\tRegion: pulumi.String(\"europe-west1\"),\n\t\t\t\t},\n\t\t\t},\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\t_, err = pubsub.NewTopic(ctx, \"foo\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"topic\"),\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.ServiceMetadataArgs;\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.eventarc.Trigger;\nimport com.pulumi.gcp.eventarc.TriggerArgs;\nimport com.pulumi.gcp.eventarc.inputs.TriggerMatchingCriteriaArgs;\nimport com.pulumi.gcp.eventarc.inputs.TriggerDestinationArgs;\nimport com.pulumi.gcp.eventarc.inputs.TriggerDestinationCloudRunServiceArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"eventarc-service\")\n .location(\"europe-west1\")\n .metadata(ServiceMetadataArgs.builder()\n .namespace(\"my-project-name\")\n .build())\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"gcr.io/cloudrun/hello\")\n .ports(ServiceTemplateSpecContainerPortArgs.builder()\n .containerPort(8080)\n .build())\n .build())\n .containerConcurrency(50)\n .timeoutSeconds(100)\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n var primary = new Trigger(\"primary\", TriggerArgs.builder()\n .name(\"name\")\n .location(\"europe-west1\")\n .matchingCriterias(TriggerMatchingCriteriaArgs.builder()\n .attribute(\"type\")\n .value(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .build())\n .destination(TriggerDestinationArgs.builder()\n .cloudRunService(TriggerDestinationCloudRunServiceArgs.builder()\n .service(default_.name())\n .region(\"europe-west1\")\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var foo = new Topic(\"foo\", TopicArgs.builder()\n .name(\"topic\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:eventarc:Trigger\n properties:\n name: name\n location: europe-west1\n matchingCriterias:\n - attribute: type\n value: google.cloud.pubsub.topic.v1.messagePublished\n destination:\n cloudRunService:\n service: ${default.name}\n region: europe-west1\n labels:\n foo: bar\n foo:\n type: gcp:pubsub:Topic\n properties:\n name: topic\n default:\n type: gcp:cloudrun:Service\n properties:\n name: eventarc-service\n location: europe-west1\n metadata:\n namespace: my-project-name\n template:\n spec:\n containers:\n - image: gcr.io/cloudrun/hello\n ports:\n - containerPort: 8080\n containerConcurrency: 50\n timeoutSeconds: 100\n traffics:\n - percent: 100\n latestRevision: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTrigger can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/triggers/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Trigger can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:eventarc/trigger:Trigger default projects/{{project}}/locations/{{location}}/triggers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:eventarc/trigger:Trigger default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:eventarc/trigger:Trigger default {{location}}/{{name}}\n```\n\n", + "description": "The Eventarc Trigger resource\n\n## Example Usage\n\n### Basic\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"eventarc-service\",\n location: \"europe-west1\",\n metadata: {\n namespace: \"my-project-name\",\n },\n template: {\n spec: {\n containers: [{\n image: \"gcr.io/cloudrun/hello\",\n ports: [{\n containerPort: 8080,\n }],\n }],\n containerConcurrency: 50,\n timeoutSeconds: 100,\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\nconst primary = new gcp.eventarc.Trigger(\"primary\", {\n name: \"name\",\n location: \"europe-west1\",\n matchingCriterias: [{\n attribute: \"type\",\n value: \"google.cloud.pubsub.topic.v1.messagePublished\",\n }],\n destination: {\n cloudRunService: {\n service: _default.name,\n region: \"europe-west1\",\n },\n },\n labels: {\n foo: \"bar\",\n },\n});\nconst foo = new gcp.pubsub.Topic(\"foo\", {name: \"topic\"});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"eventarc-service\",\n location=\"europe-west1\",\n metadata={\n \"namespace\": \"my-project-name\",\n },\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"gcr.io/cloudrun/hello\",\n \"ports\": [{\n \"container_port\": 8080,\n }],\n }],\n \"container_concurrency\": 50,\n \"timeout_seconds\": 100,\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latest_revision\": True,\n }])\nprimary = gcp.eventarc.Trigger(\"primary\",\n name=\"name\",\n location=\"europe-west1\",\n matching_criterias=[{\n \"attribute\": \"type\",\n \"value\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n }],\n destination={\n \"cloud_run_service\": {\n \"service\": default.name,\n \"region\": \"europe-west1\",\n },\n },\n labels={\n \"foo\": \"bar\",\n })\nfoo = gcp.pubsub.Topic(\"foo\", name=\"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 @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"eventarc-service\",\n Location = \"europe-west1\",\n Metadata = new Gcp.CloudRun.Inputs.ServiceMetadataArgs\n {\n Namespace = \"my-project-name\",\n },\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 = \"gcr.io/cloudrun/hello\",\n Ports = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerPortArgs\n {\n ContainerPort = 8080,\n },\n },\n },\n },\n ContainerConcurrency = 50,\n TimeoutSeconds = 100,\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n var primary = new Gcp.Eventarc.Trigger(\"primary\", new()\n {\n Name = \"name\",\n Location = \"europe-west1\",\n MatchingCriterias = new[]\n {\n new Gcp.Eventarc.Inputs.TriggerMatchingCriteriaArgs\n {\n Attribute = \"type\",\n Value = \"google.cloud.pubsub.topic.v1.messagePublished\",\n },\n },\n Destination = new Gcp.Eventarc.Inputs.TriggerDestinationArgs\n {\n CloudRunService = new Gcp.Eventarc.Inputs.TriggerDestinationCloudRunServiceArgs\n {\n Service = @default.Name,\n Region = \"europe-west1\",\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var foo = new Gcp.PubSub.Topic(\"foo\", new()\n {\n Name = \"topic\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/eventarc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"eventarc-service\"),\n\t\t\tLocation: pulumi.String(\"europe-west1\"),\n\t\t\tMetadata: \u0026cloudrun.ServiceMetadataArgs{\n\t\t\t\tNamespace: pulumi.String(\"my-project-name\"),\n\t\t\t},\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(\"gcr.io/cloudrun/hello\"),\n\t\t\t\t\t\t\tPorts: cloudrun.ServiceTemplateSpecContainerPortArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerPortArgs{\n\t\t\t\t\t\t\t\t\tContainerPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t\t},\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\tContainerConcurrency: pulumi.Int(50),\n\t\t\t\t\tTimeoutSeconds: pulumi.Int(100),\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 = eventarc.NewTrigger(ctx, \"primary\", \u0026eventarc.TriggerArgs{\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tLocation: pulumi.String(\"europe-west1\"),\n\t\t\tMatchingCriterias: eventarc.TriggerMatchingCriteriaArray{\n\t\t\t\t\u0026eventarc.TriggerMatchingCriteriaArgs{\n\t\t\t\t\tAttribute: pulumi.String(\"type\"),\n\t\t\t\t\tValue: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestination: \u0026eventarc.TriggerDestinationArgs{\n\t\t\t\tCloudRunService: \u0026eventarc.TriggerDestinationCloudRunServiceArgs{\n\t\t\t\t\tService: _default.Name,\n\t\t\t\t\tRegion: pulumi.String(\"europe-west1\"),\n\t\t\t\t},\n\t\t\t},\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\t_, err = pubsub.NewTopic(ctx, \"foo\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"topic\"),\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.ServiceMetadataArgs;\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.eventarc.Trigger;\nimport com.pulumi.gcp.eventarc.TriggerArgs;\nimport com.pulumi.gcp.eventarc.inputs.TriggerMatchingCriteriaArgs;\nimport com.pulumi.gcp.eventarc.inputs.TriggerDestinationArgs;\nimport com.pulumi.gcp.eventarc.inputs.TriggerDestinationCloudRunServiceArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\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 Service(\"default\", ServiceArgs.builder()\n .name(\"eventarc-service\")\n .location(\"europe-west1\")\n .metadata(ServiceMetadataArgs.builder()\n .namespace(\"my-project-name\")\n .build())\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"gcr.io/cloudrun/hello\")\n .ports(ServiceTemplateSpecContainerPortArgs.builder()\n .containerPort(8080)\n .build())\n .build())\n .containerConcurrency(50)\n .timeoutSeconds(100)\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n var primary = new Trigger(\"primary\", TriggerArgs.builder()\n .name(\"name\")\n .location(\"europe-west1\")\n .matchingCriterias(TriggerMatchingCriteriaArgs.builder()\n .attribute(\"type\")\n .value(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .build())\n .destination(TriggerDestinationArgs.builder()\n .cloudRunService(TriggerDestinationCloudRunServiceArgs.builder()\n .service(default_.name())\n .region(\"europe-west1\")\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var foo = new Topic(\"foo\", TopicArgs.builder()\n .name(\"topic\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:eventarc:Trigger\n properties:\n name: name\n location: europe-west1\n matchingCriterias:\n - attribute: type\n value: google.cloud.pubsub.topic.v1.messagePublished\n destination:\n cloudRunService:\n service: ${default.name}\n region: europe-west1\n labels:\n foo: bar\n foo:\n type: gcp:pubsub:Topic\n properties:\n name: topic\n default:\n type: gcp:cloudrun:Service\n properties:\n name: eventarc-service\n location: europe-west1\n metadata:\n namespace: my-project-name\n template:\n spec:\n containers:\n - image: gcr.io/cloudrun/hello\n ports:\n - containerPort: 8080\n containerConcurrency: 50\n timeoutSeconds: 100\n traffics:\n - percent: 100\n latestRevision: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTrigger can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/triggers/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Trigger can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:eventarc/trigger:Trigger default projects/{{project}}/locations/{{location}}/triggers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:eventarc/trigger:Trigger default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:eventarc/trigger:Trigger default {{location}}/{{name}}\n```\n\n", "properties": { "channel": { "type": "string", @@ -190096,7 +190096,7 @@ } }, "gcp:filestore/backup:Backup": { - "description": "A Google Cloud Filestore backup.\n\n\nTo get more information about Backup, see:\n\n* [API documentation](https://cloud.google.com/filestore/docs/reference/rest/v1/projects.locations.instances.backups)\n* How-to Guides\n * [Creating Backups](https://cloud.google.com/filestore/docs/create-backups)\n * [Official Documentation](https://cloud.google.com/filestore/docs/backups)\n\n## Example Usage\n\n### Filestore Backup Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.filestore.Instance(\"instance\", {\n name: \"tf-fs-inst\",\n location: \"us-central1-b\",\n tier: \"BASIC_HDD\",\n fileShares: {\n capacityGb: 1024,\n name: \"share1\",\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n connectMode: \"DIRECT_PEERING\",\n }],\n});\nconst backup = new gcp.filestore.Backup(\"backup\", {\n name: \"tf-fs-bkup\",\n location: \"us-central1\",\n description: \"This is a filestore backup for the test instance\",\n sourceInstance: instance.id,\n sourceFileShare: \"share1\",\n labels: {\n files: \"label1\",\n \"other-label\": \"label2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.filestore.Instance(\"instance\",\n name=\"tf-fs-inst\",\n location=\"us-central1-b\",\n tier=\"BASIC_HDD\",\n file_shares={\n \"capacityGb\": 1024,\n \"name\": \"share1\",\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\n \"connectMode\": \"DIRECT_PEERING\",\n }])\nbackup = gcp.filestore.Backup(\"backup\",\n name=\"tf-fs-bkup\",\n location=\"us-central1\",\n description=\"This is a filestore backup for the test instance\",\n source_instance=instance.id,\n source_file_share=\"share1\",\n labels={\n \"files\": \"label1\",\n \"other-label\": \"label2\",\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.Filestore.Instance(\"instance\", new()\n {\n Name = \"tf-fs-inst\",\n Location = \"us-central1-b\",\n Tier = \"BASIC_HDD\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 1024,\n Name = \"share1\",\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n ConnectMode = \"DIRECT_PEERING\",\n },\n },\n });\n\n var backup = new Gcp.Filestore.Backup(\"backup\", new()\n {\n Name = \"tf-fs-bkup\",\n Location = \"us-central1\",\n Description = \"This is a filestore backup for the test instance\",\n SourceInstance = instance.Id,\n SourceFileShare = \"share1\",\n Labels = \n {\n { \"files\", \"label1\" },\n { \"other-label\", \"label2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/filestore\"\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 := filestore.NewInstance(ctx, \"instance\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"tf-fs-inst\"),\n\t\t\tLocation: pulumi.String(\"us-central1-b\"),\n\t\t\tTier: pulumi.String(\"BASIC_HDD\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(1024),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\n\t\t\t\t\t},\n\t\t\t\t\tConnectMode: pulumi.String(\"DIRECT_PEERING\"),\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 = filestore.NewBackup(ctx, \"backup\", \u0026filestore.BackupArgs{\n\t\t\tName: pulumi.String(\"tf-fs-bkup\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"This is a filestore backup for the test instance\"),\n\t\t\tSourceInstance: instance.ID(),\n\t\t\tSourceFileShare: pulumi.String(\"share1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"files\": pulumi.String(\"label1\"),\n\t\t\t\t\"other-label\": pulumi.String(\"label2\"),\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.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\nimport com.pulumi.gcp.filestore.Backup;\nimport com.pulumi.gcp.filestore.BackupArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"tf-fs-inst\")\n .location(\"us-central1-b\")\n .tier(\"BASIC_HDD\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(1024)\n .name(\"share1\")\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .connectMode(\"DIRECT_PEERING\")\n .build())\n .build());\n\n var backup = new Backup(\"backup\", BackupArgs.builder()\n .name(\"tf-fs-bkup\")\n .location(\"us-central1\")\n .description(\"This is a filestore backup for the test instance\")\n .sourceInstance(instance.id())\n .sourceFileShare(\"share1\")\n .labels(Map.ofEntries(\n Map.entry(\"files\", \"label1\"),\n Map.entry(\"other-label\", \"label2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:filestore:Instance\n properties:\n name: tf-fs-inst\n location: us-central1-b\n tier: BASIC_HDD\n fileShares:\n capacityGb: 1024\n name: share1\n networks:\n - network: default\n modes:\n - MODE_IPV4\n connectMode: DIRECT_PEERING\n backup:\n type: gcp:filestore:Backup\n properties:\n name: tf-fs-bkup\n location: us-central1\n description: This is a filestore backup for the test instance\n sourceInstance: ${instance.id}\n sourceFileShare: share1\n labels:\n files: label1\n other-label: label2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackup can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/backups/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Backup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:filestore/backup:Backup default projects/{{project}}/locations/{{location}}/backups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:filestore/backup:Backup default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:filestore/backup:Backup default {{location}}/{{name}}\n```\n\n", + "description": "A Google Cloud Filestore backup.\n\n\nTo get more information about Backup, see:\n\n* [API documentation](https://cloud.google.com/filestore/docs/reference/rest/v1/projects.locations.instances.backups)\n* How-to Guides\n * [Creating Backups](https://cloud.google.com/filestore/docs/create-backups)\n * [Official Documentation](https://cloud.google.com/filestore/docs/backups)\n\n## Example Usage\n\n### Filestore Backup Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.filestore.Instance(\"instance\", {\n name: \"tf-fs-inst\",\n location: \"us-central1-b\",\n tier: \"BASIC_HDD\",\n fileShares: {\n capacityGb: 1024,\n name: \"share1\",\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n connectMode: \"DIRECT_PEERING\",\n }],\n});\nconst backup = new gcp.filestore.Backup(\"backup\", {\n name: \"tf-fs-bkup\",\n location: \"us-central1\",\n description: \"This is a filestore backup for the test instance\",\n sourceInstance: instance.id,\n sourceFileShare: \"share1\",\n labels: {\n files: \"label1\",\n \"other-label\": \"label2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.filestore.Instance(\"instance\",\n name=\"tf-fs-inst\",\n location=\"us-central1-b\",\n tier=\"BASIC_HDD\",\n file_shares={\n \"capacity_gb\": 1024,\n \"name\": \"share1\",\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\n \"connect_mode\": \"DIRECT_PEERING\",\n }])\nbackup = gcp.filestore.Backup(\"backup\",\n name=\"tf-fs-bkup\",\n location=\"us-central1\",\n description=\"This is a filestore backup for the test instance\",\n source_instance=instance.id,\n source_file_share=\"share1\",\n labels={\n \"files\": \"label1\",\n \"other-label\": \"label2\",\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.Filestore.Instance(\"instance\", new()\n {\n Name = \"tf-fs-inst\",\n Location = \"us-central1-b\",\n Tier = \"BASIC_HDD\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 1024,\n Name = \"share1\",\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n ConnectMode = \"DIRECT_PEERING\",\n },\n },\n });\n\n var backup = new Gcp.Filestore.Backup(\"backup\", new()\n {\n Name = \"tf-fs-bkup\",\n Location = \"us-central1\",\n Description = \"This is a filestore backup for the test instance\",\n SourceInstance = instance.Id,\n SourceFileShare = \"share1\",\n Labels = \n {\n { \"files\", \"label1\" },\n { \"other-label\", \"label2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/filestore\"\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 := filestore.NewInstance(ctx, \"instance\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"tf-fs-inst\"),\n\t\t\tLocation: pulumi.String(\"us-central1-b\"),\n\t\t\tTier: pulumi.String(\"BASIC_HDD\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(1024),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\n\t\t\t\t\t},\n\t\t\t\t\tConnectMode: pulumi.String(\"DIRECT_PEERING\"),\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 = filestore.NewBackup(ctx, \"backup\", \u0026filestore.BackupArgs{\n\t\t\tName: pulumi.String(\"tf-fs-bkup\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"This is a filestore backup for the test instance\"),\n\t\t\tSourceInstance: instance.ID(),\n\t\t\tSourceFileShare: pulumi.String(\"share1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"files\": pulumi.String(\"label1\"),\n\t\t\t\t\"other-label\": pulumi.String(\"label2\"),\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.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\nimport com.pulumi.gcp.filestore.Backup;\nimport com.pulumi.gcp.filestore.BackupArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"tf-fs-inst\")\n .location(\"us-central1-b\")\n .tier(\"BASIC_HDD\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(1024)\n .name(\"share1\")\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .connectMode(\"DIRECT_PEERING\")\n .build())\n .build());\n\n var backup = new Backup(\"backup\", BackupArgs.builder()\n .name(\"tf-fs-bkup\")\n .location(\"us-central1\")\n .description(\"This is a filestore backup for the test instance\")\n .sourceInstance(instance.id())\n .sourceFileShare(\"share1\")\n .labels(Map.ofEntries(\n Map.entry(\"files\", \"label1\"),\n Map.entry(\"other-label\", \"label2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:filestore:Instance\n properties:\n name: tf-fs-inst\n location: us-central1-b\n tier: BASIC_HDD\n fileShares:\n capacityGb: 1024\n name: share1\n networks:\n - network: default\n modes:\n - MODE_IPV4\n connectMode: DIRECT_PEERING\n backup:\n type: gcp:filestore:Backup\n properties:\n name: tf-fs-bkup\n location: us-central1\n description: This is a filestore backup for the test instance\n sourceInstance: ${instance.id}\n sourceFileShare: share1\n labels:\n files: label1\n other-label: label2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackup can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/backups/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Backup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:filestore/backup:Backup default projects/{{project}}/locations/{{location}}/backups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:filestore/backup:Backup default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:filestore/backup:Backup default {{location}}/{{name}}\n```\n\n", "properties": { "capacityGb": { "type": "string", @@ -190319,7 +190319,7 @@ } }, "gcp:filestore/instance:Instance": { - "description": "A Google Cloud Filestore instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/filestore/docs/reference/rest/v1beta1/projects.locations.instances/create)\n* How-to Guides\n * [Copying Data In/Out](https://cloud.google.com/filestore/docs/copying-data)\n * [Official Documentation](https://cloud.google.com/filestore/docs/creating-instances)\n * [Use with Kubernetes](https://cloud.google.com/filestore/docs/accessing-fileshares)\n\n## Example Usage\n\n### Filestore Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.filestore.Instance(\"instance\", {\n name: \"test-instance\",\n location: \"us-central1-b\",\n tier: \"BASIC_HDD\",\n fileShares: {\n capacityGb: 1024,\n name: \"share1\",\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.filestore.Instance(\"instance\",\n name=\"test-instance\",\n location=\"us-central1-b\",\n tier=\"BASIC_HDD\",\n file_shares={\n \"capacityGb\": 1024,\n \"name\": \"share1\",\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\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.Filestore.Instance(\"instance\", new()\n {\n Name = \"test-instance\",\n Location = \"us-central1-b\",\n Tier = \"BASIC_HDD\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 1024,\n Name = \"share1\",\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/filestore\"\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 := filestore.NewInstance(ctx, \"instance\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"test-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-b\"),\n\t\t\tTier: pulumi.String(\"BASIC_HDD\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(1024),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\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.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"test-instance\")\n .location(\"us-central1-b\")\n .tier(\"BASIC_HDD\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(1024)\n .name(\"share1\")\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:filestore:Instance\n properties:\n name: test-instance\n location: us-central1-b\n tier: BASIC_HDD\n fileShares:\n capacityGb: 1024\n name: share1\n networks:\n - network: default\n modes:\n - MODE_IPV4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Filestore Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.filestore.Instance(\"instance\", {\n name: \"test-instance\",\n location: \"us-central1-b\",\n tier: \"BASIC_SSD\",\n fileShares: {\n capacityGb: 2560,\n name: \"share1\",\n nfsExportOptions: [\n {\n ipRanges: [\"10.0.0.0/24\"],\n accessMode: \"READ_WRITE\",\n squashMode: \"NO_ROOT_SQUASH\",\n },\n {\n ipRanges: [\"10.10.0.0/24\"],\n accessMode: \"READ_ONLY\",\n squashMode: \"ROOT_SQUASH\",\n anonUid: 123,\n anonGid: 456,\n },\n ],\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n connectMode: \"DIRECT_PEERING\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.filestore.Instance(\"instance\",\n name=\"test-instance\",\n location=\"us-central1-b\",\n tier=\"BASIC_SSD\",\n file_shares={\n \"capacityGb\": 2560,\n \"name\": \"share1\",\n \"nfsExportOptions\": [\n {\n \"ipRanges\": [\"10.0.0.0/24\"],\n \"accessMode\": \"READ_WRITE\",\n \"squashMode\": \"NO_ROOT_SQUASH\",\n },\n {\n \"ipRanges\": [\"10.10.0.0/24\"],\n \"accessMode\": \"READ_ONLY\",\n \"squashMode\": \"ROOT_SQUASH\",\n \"anonUid\": 123,\n \"anonGid\": 456,\n },\n ],\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\n \"connectMode\": \"DIRECT_PEERING\",\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.Filestore.Instance(\"instance\", new()\n {\n Name = \"test-instance\",\n Location = \"us-central1-b\",\n Tier = \"BASIC_SSD\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 2560,\n Name = \"share1\",\n NfsExportOptions = new[]\n {\n new Gcp.Filestore.Inputs.InstanceFileSharesNfsExportOptionArgs\n {\n IpRanges = new[]\n {\n \"10.0.0.0/24\",\n },\n AccessMode = \"READ_WRITE\",\n SquashMode = \"NO_ROOT_SQUASH\",\n },\n new Gcp.Filestore.Inputs.InstanceFileSharesNfsExportOptionArgs\n {\n IpRanges = new[]\n {\n \"10.10.0.0/24\",\n },\n AccessMode = \"READ_ONLY\",\n SquashMode = \"ROOT_SQUASH\",\n AnonUid = 123,\n AnonGid = 456,\n },\n },\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n ConnectMode = \"DIRECT_PEERING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/filestore\"\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 := filestore.NewInstance(ctx, \"instance\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"test-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-b\"),\n\t\t\tTier: pulumi.String(\"BASIC_SSD\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(2560),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t\tNfsExportOptions: filestore.InstanceFileSharesNfsExportOptionArray{\n\t\t\t\t\t\u0026filestore.InstanceFileSharesNfsExportOptionArgs{\n\t\t\t\t\t\tIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.0.0.0/24\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessMode: pulumi.String(\"READ_WRITE\"),\n\t\t\t\t\t\tSquashMode: pulumi.String(\"NO_ROOT_SQUASH\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026filestore.InstanceFileSharesNfsExportOptionArgs{\n\t\t\t\t\t\tIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.10.0.0/24\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessMode: pulumi.String(\"READ_ONLY\"),\n\t\t\t\t\t\tSquashMode: pulumi.String(\"ROOT_SQUASH\"),\n\t\t\t\t\t\tAnonUid: pulumi.Int(123),\n\t\t\t\t\t\tAnonGid: pulumi.Int(456),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\n\t\t\t\t\t},\n\t\t\t\t\tConnectMode: pulumi.String(\"DIRECT_PEERING\"),\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.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"test-instance\")\n .location(\"us-central1-b\")\n .tier(\"BASIC_SSD\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(2560)\n .name(\"share1\")\n .nfsExportOptions( \n InstanceFileSharesNfsExportOptionArgs.builder()\n .ipRanges(\"10.0.0.0/24\")\n .accessMode(\"READ_WRITE\")\n .squashMode(\"NO_ROOT_SQUASH\")\n .build(),\n InstanceFileSharesNfsExportOptionArgs.builder()\n .ipRanges(\"10.10.0.0/24\")\n .accessMode(\"READ_ONLY\")\n .squashMode(\"ROOT_SQUASH\")\n .anonUid(123)\n .anonGid(456)\n .build())\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .connectMode(\"DIRECT_PEERING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:filestore:Instance\n properties:\n name: test-instance\n location: us-central1-b\n tier: BASIC_SSD\n fileShares:\n capacityGb: 2560\n name: share1\n nfsExportOptions:\n - ipRanges:\n - 10.0.0.0/24\n accessMode: READ_WRITE\n squashMode: NO_ROOT_SQUASH\n - ipRanges:\n - 10.10.0.0/24\n accessMode: READ_ONLY\n squashMode: ROOT_SQUASH\n anonUid: 123\n anonGid: 456\n networks:\n - network: default\n modes:\n - MODE_IPV4\n connectMode: DIRECT_PEERING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Filestore Instance Protocol\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.filestore.Instance(\"instance\", {\n name: \"test-instance\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n protocol: \"NFS_V4_1\",\n fileShares: {\n capacityGb: 1024,\n name: \"share1\",\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.filestore.Instance(\"instance\",\n name=\"test-instance\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n protocol=\"NFS_V4_1\",\n file_shares={\n \"capacityGb\": 1024,\n \"name\": \"share1\",\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\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.Filestore.Instance(\"instance\", new()\n {\n Name = \"test-instance\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n Protocol = \"NFS_V4_1\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 1024,\n Name = \"share1\",\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/filestore\"\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 := filestore.NewInstance(ctx, \"instance\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"test-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tProtocol: pulumi.String(\"NFS_V4_1\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(1024),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\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.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"test-instance\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .protocol(\"NFS_V4_1\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(1024)\n .name(\"share1\")\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:filestore:Instance\n properties:\n name: test-instance\n location: us-central1\n tier: ENTERPRISE\n protocol: NFS_V4_1\n fileShares:\n capacityGb: 1024\n name: share1\n networks:\n - network: default\n modes:\n - MODE_IPV4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Filestore Instance Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst filestoreKeyring = new gcp.kms.KeyRing(\"filestore_keyring\", {\n name: \"filestore-keyring\",\n location: \"us-central1\",\n});\nconst filestoreKey = new gcp.kms.CryptoKey(\"filestore_key\", {\n name: \"filestore-key\",\n keyRing: filestoreKeyring.id,\n});\nconst instance = new gcp.filestore.Instance(\"instance\", {\n name: \"test-instance\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n fileShares: {\n capacityGb: 1024,\n name: \"share1\",\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n }],\n kmsKeyName: filestoreKey.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfilestore_keyring = gcp.kms.KeyRing(\"filestore_keyring\",\n name=\"filestore-keyring\",\n location=\"us-central1\")\nfilestore_key = gcp.kms.CryptoKey(\"filestore_key\",\n name=\"filestore-key\",\n key_ring=filestore_keyring.id)\ninstance = gcp.filestore.Instance(\"instance\",\n name=\"test-instance\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n file_shares={\n \"capacityGb\": 1024,\n \"name\": \"share1\",\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\n }],\n kms_key_name=filestore_key.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 filestoreKeyring = new Gcp.Kms.KeyRing(\"filestore_keyring\", new()\n {\n Name = \"filestore-keyring\",\n Location = \"us-central1\",\n });\n\n var filestoreKey = new Gcp.Kms.CryptoKey(\"filestore_key\", new()\n {\n Name = \"filestore-key\",\n KeyRing = filestoreKeyring.Id,\n });\n\n var instance = new Gcp.Filestore.Instance(\"instance\", new()\n {\n Name = \"test-instance\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 1024,\n Name = \"share1\",\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n },\n },\n KmsKeyName = filestoreKey.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/filestore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tfilestoreKeyring, err := kms.NewKeyRing(ctx, \"filestore_keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"filestore-keyring\"),\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\tfilestoreKey, err := kms.NewCryptoKey(ctx, \"filestore_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"filestore-key\"),\n\t\t\tKeyRing: filestoreKeyring.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = filestore.NewInstance(ctx, \"instance\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"test-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(1024),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKmsKeyName: filestoreKey.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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\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 filestoreKeyring = new KeyRing(\"filestoreKeyring\", KeyRingArgs.builder()\n .name(\"filestore-keyring\")\n .location(\"us-central1\")\n .build());\n\n var filestoreKey = new CryptoKey(\"filestoreKey\", CryptoKeyArgs.builder()\n .name(\"filestore-key\")\n .keyRing(filestoreKeyring.id())\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .name(\"test-instance\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(1024)\n .name(\"share1\")\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .build())\n .kmsKeyName(filestoreKey.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:filestore:Instance\n properties:\n name: test-instance\n location: us-central1\n tier: ENTERPRISE\n fileShares:\n capacityGb: 1024\n name: share1\n networks:\n - network: default\n modes:\n - MODE_IPV4\n kmsKeyName: ${filestoreKey.id}\n filestoreKeyring:\n type: gcp:kms:KeyRing\n name: filestore_keyring\n properties:\n name: filestore-keyring\n location: us-central1\n filestoreKey:\n type: gcp:kms:CryptoKey\n name: filestore_key\n properties:\n name: filestore-key\n keyRing: ${filestoreKeyring.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:filestore/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:filestore/instance:Instance default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:filestore/instance:Instance default {{location}}/{{name}}\n```\n\n", + "description": "A Google Cloud Filestore instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/filestore/docs/reference/rest/v1beta1/projects.locations.instances/create)\n* How-to Guides\n * [Copying Data In/Out](https://cloud.google.com/filestore/docs/copying-data)\n * [Official Documentation](https://cloud.google.com/filestore/docs/creating-instances)\n * [Use with Kubernetes](https://cloud.google.com/filestore/docs/accessing-fileshares)\n\n## Example Usage\n\n### Filestore Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.filestore.Instance(\"instance\", {\n name: \"test-instance\",\n location: \"us-central1-b\",\n tier: \"BASIC_HDD\",\n fileShares: {\n capacityGb: 1024,\n name: \"share1\",\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.filestore.Instance(\"instance\",\n name=\"test-instance\",\n location=\"us-central1-b\",\n tier=\"BASIC_HDD\",\n file_shares={\n \"capacity_gb\": 1024,\n \"name\": \"share1\",\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\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.Filestore.Instance(\"instance\", new()\n {\n Name = \"test-instance\",\n Location = \"us-central1-b\",\n Tier = \"BASIC_HDD\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 1024,\n Name = \"share1\",\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/filestore\"\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 := filestore.NewInstance(ctx, \"instance\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"test-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-b\"),\n\t\t\tTier: pulumi.String(\"BASIC_HDD\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(1024),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\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.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"test-instance\")\n .location(\"us-central1-b\")\n .tier(\"BASIC_HDD\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(1024)\n .name(\"share1\")\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:filestore:Instance\n properties:\n name: test-instance\n location: us-central1-b\n tier: BASIC_HDD\n fileShares:\n capacityGb: 1024\n name: share1\n networks:\n - network: default\n modes:\n - MODE_IPV4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Filestore Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.filestore.Instance(\"instance\", {\n name: \"test-instance\",\n location: \"us-central1-b\",\n tier: \"BASIC_SSD\",\n fileShares: {\n capacityGb: 2560,\n name: \"share1\",\n nfsExportOptions: [\n {\n ipRanges: [\"10.0.0.0/24\"],\n accessMode: \"READ_WRITE\",\n squashMode: \"NO_ROOT_SQUASH\",\n },\n {\n ipRanges: [\"10.10.0.0/24\"],\n accessMode: \"READ_ONLY\",\n squashMode: \"ROOT_SQUASH\",\n anonUid: 123,\n anonGid: 456,\n },\n ],\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n connectMode: \"DIRECT_PEERING\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.filestore.Instance(\"instance\",\n name=\"test-instance\",\n location=\"us-central1-b\",\n tier=\"BASIC_SSD\",\n file_shares={\n \"capacity_gb\": 2560,\n \"name\": \"share1\",\n \"nfs_export_options\": [\n {\n \"ip_ranges\": [\"10.0.0.0/24\"],\n \"access_mode\": \"READ_WRITE\",\n \"squash_mode\": \"NO_ROOT_SQUASH\",\n },\n {\n \"ip_ranges\": [\"10.10.0.0/24\"],\n \"access_mode\": \"READ_ONLY\",\n \"squash_mode\": \"ROOT_SQUASH\",\n \"anon_uid\": 123,\n \"anon_gid\": 456,\n },\n ],\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\n \"connect_mode\": \"DIRECT_PEERING\",\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.Filestore.Instance(\"instance\", new()\n {\n Name = \"test-instance\",\n Location = \"us-central1-b\",\n Tier = \"BASIC_SSD\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 2560,\n Name = \"share1\",\n NfsExportOptions = new[]\n {\n new Gcp.Filestore.Inputs.InstanceFileSharesNfsExportOptionArgs\n {\n IpRanges = new[]\n {\n \"10.0.0.0/24\",\n },\n AccessMode = \"READ_WRITE\",\n SquashMode = \"NO_ROOT_SQUASH\",\n },\n new Gcp.Filestore.Inputs.InstanceFileSharesNfsExportOptionArgs\n {\n IpRanges = new[]\n {\n \"10.10.0.0/24\",\n },\n AccessMode = \"READ_ONLY\",\n SquashMode = \"ROOT_SQUASH\",\n AnonUid = 123,\n AnonGid = 456,\n },\n },\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n ConnectMode = \"DIRECT_PEERING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/filestore\"\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 := filestore.NewInstance(ctx, \"instance\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"test-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-b\"),\n\t\t\tTier: pulumi.String(\"BASIC_SSD\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(2560),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t\tNfsExportOptions: filestore.InstanceFileSharesNfsExportOptionArray{\n\t\t\t\t\t\u0026filestore.InstanceFileSharesNfsExportOptionArgs{\n\t\t\t\t\t\tIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.0.0.0/24\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessMode: pulumi.String(\"READ_WRITE\"),\n\t\t\t\t\t\tSquashMode: pulumi.String(\"NO_ROOT_SQUASH\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026filestore.InstanceFileSharesNfsExportOptionArgs{\n\t\t\t\t\t\tIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.10.0.0/24\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAccessMode: pulumi.String(\"READ_ONLY\"),\n\t\t\t\t\t\tSquashMode: pulumi.String(\"ROOT_SQUASH\"),\n\t\t\t\t\t\tAnonUid: pulumi.Int(123),\n\t\t\t\t\t\tAnonGid: pulumi.Int(456),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\n\t\t\t\t\t},\n\t\t\t\t\tConnectMode: pulumi.String(\"DIRECT_PEERING\"),\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.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"test-instance\")\n .location(\"us-central1-b\")\n .tier(\"BASIC_SSD\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(2560)\n .name(\"share1\")\n .nfsExportOptions( \n InstanceFileSharesNfsExportOptionArgs.builder()\n .ipRanges(\"10.0.0.0/24\")\n .accessMode(\"READ_WRITE\")\n .squashMode(\"NO_ROOT_SQUASH\")\n .build(),\n InstanceFileSharesNfsExportOptionArgs.builder()\n .ipRanges(\"10.10.0.0/24\")\n .accessMode(\"READ_ONLY\")\n .squashMode(\"ROOT_SQUASH\")\n .anonUid(123)\n .anonGid(456)\n .build())\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .connectMode(\"DIRECT_PEERING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:filestore:Instance\n properties:\n name: test-instance\n location: us-central1-b\n tier: BASIC_SSD\n fileShares:\n capacityGb: 2560\n name: share1\n nfsExportOptions:\n - ipRanges:\n - 10.0.0.0/24\n accessMode: READ_WRITE\n squashMode: NO_ROOT_SQUASH\n - ipRanges:\n - 10.10.0.0/24\n accessMode: READ_ONLY\n squashMode: ROOT_SQUASH\n anonUid: 123\n anonGid: 456\n networks:\n - network: default\n modes:\n - MODE_IPV4\n connectMode: DIRECT_PEERING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Filestore Instance Protocol\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.filestore.Instance(\"instance\", {\n name: \"test-instance\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n protocol: \"NFS_V4_1\",\n fileShares: {\n capacityGb: 1024,\n name: \"share1\",\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.filestore.Instance(\"instance\",\n name=\"test-instance\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n protocol=\"NFS_V4_1\",\n file_shares={\n \"capacity_gb\": 1024,\n \"name\": \"share1\",\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\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.Filestore.Instance(\"instance\", new()\n {\n Name = \"test-instance\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n Protocol = \"NFS_V4_1\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 1024,\n Name = \"share1\",\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/filestore\"\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 := filestore.NewInstance(ctx, \"instance\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"test-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tProtocol: pulumi.String(\"NFS_V4_1\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(1024),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\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.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"test-instance\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .protocol(\"NFS_V4_1\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(1024)\n .name(\"share1\")\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:filestore:Instance\n properties:\n name: test-instance\n location: us-central1\n tier: ENTERPRISE\n protocol: NFS_V4_1\n fileShares:\n capacityGb: 1024\n name: share1\n networks:\n - network: default\n modes:\n - MODE_IPV4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Filestore Instance Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst filestoreKeyring = new gcp.kms.KeyRing(\"filestore_keyring\", {\n name: \"filestore-keyring\",\n location: \"us-central1\",\n});\nconst filestoreKey = new gcp.kms.CryptoKey(\"filestore_key\", {\n name: \"filestore-key\",\n keyRing: filestoreKeyring.id,\n});\nconst instance = new gcp.filestore.Instance(\"instance\", {\n name: \"test-instance\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n fileShares: {\n capacityGb: 1024,\n name: \"share1\",\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n }],\n kmsKeyName: filestoreKey.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfilestore_keyring = gcp.kms.KeyRing(\"filestore_keyring\",\n name=\"filestore-keyring\",\n location=\"us-central1\")\nfilestore_key = gcp.kms.CryptoKey(\"filestore_key\",\n name=\"filestore-key\",\n key_ring=filestore_keyring.id)\ninstance = gcp.filestore.Instance(\"instance\",\n name=\"test-instance\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n file_shares={\n \"capacity_gb\": 1024,\n \"name\": \"share1\",\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\n }],\n kms_key_name=filestore_key.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 filestoreKeyring = new Gcp.Kms.KeyRing(\"filestore_keyring\", new()\n {\n Name = \"filestore-keyring\",\n Location = \"us-central1\",\n });\n\n var filestoreKey = new Gcp.Kms.CryptoKey(\"filestore_key\", new()\n {\n Name = \"filestore-key\",\n KeyRing = filestoreKeyring.Id,\n });\n\n var instance = new Gcp.Filestore.Instance(\"instance\", new()\n {\n Name = \"test-instance\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 1024,\n Name = \"share1\",\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n },\n },\n KmsKeyName = filestoreKey.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/filestore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tfilestoreKeyring, err := kms.NewKeyRing(ctx, \"filestore_keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"filestore-keyring\"),\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\tfilestoreKey, err := kms.NewCryptoKey(ctx, \"filestore_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"filestore-key\"),\n\t\t\tKeyRing: filestoreKeyring.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = filestore.NewInstance(ctx, \"instance\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"test-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(1024),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKmsKeyName: filestoreKey.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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\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 filestoreKeyring = new KeyRing(\"filestoreKeyring\", KeyRingArgs.builder()\n .name(\"filestore-keyring\")\n .location(\"us-central1\")\n .build());\n\n var filestoreKey = new CryptoKey(\"filestoreKey\", CryptoKeyArgs.builder()\n .name(\"filestore-key\")\n .keyRing(filestoreKeyring.id())\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .name(\"test-instance\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(1024)\n .name(\"share1\")\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .build())\n .kmsKeyName(filestoreKey.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:filestore:Instance\n properties:\n name: test-instance\n location: us-central1\n tier: ENTERPRISE\n fileShares:\n capacityGb: 1024\n name: share1\n networks:\n - network: default\n modes:\n - MODE_IPV4\n kmsKeyName: ${filestoreKey.id}\n filestoreKeyring:\n type: gcp:kms:KeyRing\n name: filestore_keyring\n properties:\n name: filestore-keyring\n location: us-central1\n filestoreKey:\n type: gcp:kms:CryptoKey\n name: filestore_key\n properties:\n name: filestore-key\n keyRing: ${filestoreKeyring.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:filestore/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:filestore/instance:Instance default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:filestore/instance:Instance default {{location}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -190562,7 +190562,7 @@ } }, "gcp:filestore/snapshot:Snapshot": { - "description": "A Google Cloud Filestore snapshot.\n\n\nTo get more information about Snapshot, see:\n\n* [API documentation](https://cloud.google.com/filestore/docs/reference/rest/v1/projects.locations.instances.snapshots)\n* How-to Guides\n * [Creating Snapshots](https://cloud.google.com/filestore/docs/create-snapshots)\n * [Official Documentation](https://cloud.google.com/filestore/docs/snapshots)\n\n## Example Usage\n\n### Filestore Snapshot Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.filestore.Instance(\"instance\", {\n name: \"test-instance-for-snapshot\",\n location: \"us-east1\",\n tier: \"ENTERPRISE\",\n fileShares: {\n capacityGb: 1024,\n name: \"share1\",\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n }],\n});\nconst snapshot = new gcp.filestore.Snapshot(\"snapshot\", {\n name: \"test-snapshot\",\n instance: instance.name,\n location: \"us-east1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.filestore.Instance(\"instance\",\n name=\"test-instance-for-snapshot\",\n location=\"us-east1\",\n tier=\"ENTERPRISE\",\n file_shares={\n \"capacityGb\": 1024,\n \"name\": \"share1\",\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\n }])\nsnapshot = gcp.filestore.Snapshot(\"snapshot\",\n name=\"test-snapshot\",\n instance=instance.name,\n location=\"us-east1\")\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.Filestore.Instance(\"instance\", new()\n {\n Name = \"test-instance-for-snapshot\",\n Location = \"us-east1\",\n Tier = \"ENTERPRISE\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 1024,\n Name = \"share1\",\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n },\n },\n });\n\n var snapshot = new Gcp.Filestore.Snapshot(\"snapshot\", new()\n {\n Name = \"test-snapshot\",\n Instance = instance.Name,\n Location = \"us-east1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/filestore\"\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 := filestore.NewInstance(ctx, \"instance\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"test-instance-for-snapshot\"),\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(1024),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\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 = filestore.NewSnapshot(ctx, \"snapshot\", \u0026filestore.SnapshotArgs{\n\t\t\tName: pulumi.String(\"test-snapshot\"),\n\t\t\tInstance: instance.Name,\n\t\t\tLocation: pulumi.String(\"us-east1\"),\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.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\nimport com.pulumi.gcp.filestore.Snapshot;\nimport com.pulumi.gcp.filestore.SnapshotArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"test-instance-for-snapshot\")\n .location(\"us-east1\")\n .tier(\"ENTERPRISE\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(1024)\n .name(\"share1\")\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .build())\n .build());\n\n var snapshot = new Snapshot(\"snapshot\", SnapshotArgs.builder()\n .name(\"test-snapshot\")\n .instance(instance.name())\n .location(\"us-east1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n snapshot:\n type: gcp:filestore:Snapshot\n properties:\n name: test-snapshot\n instance: ${instance.name}\n location: us-east1\n instance:\n type: gcp:filestore:Instance\n properties:\n name: test-instance-for-snapshot\n location: us-east1\n tier: ENTERPRISE\n fileShares:\n capacityGb: 1024\n name: share1\n networks:\n - network: default\n modes:\n - MODE_IPV4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Filestore Snapshot Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.filestore.Instance(\"instance\", {\n name: \"test-instance-for-snapshot\",\n location: \"us-west1\",\n tier: \"ENTERPRISE\",\n fileShares: {\n capacityGb: 1024,\n name: \"share1\",\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n }],\n});\nconst snapshot = new gcp.filestore.Snapshot(\"snapshot\", {\n name: \"test-snapshot\",\n instance: instance.name,\n location: \"us-west1\",\n description: \"Snapshot of test-instance-for-snapshot\",\n labels: {\n my_label: \"value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.filestore.Instance(\"instance\",\n name=\"test-instance-for-snapshot\",\n location=\"us-west1\",\n tier=\"ENTERPRISE\",\n file_shares={\n \"capacityGb\": 1024,\n \"name\": \"share1\",\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\n }])\nsnapshot = gcp.filestore.Snapshot(\"snapshot\",\n name=\"test-snapshot\",\n instance=instance.name,\n location=\"us-west1\",\n description=\"Snapshot of test-instance-for-snapshot\",\n labels={\n \"my_label\": \"value\",\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.Filestore.Instance(\"instance\", new()\n {\n Name = \"test-instance-for-snapshot\",\n Location = \"us-west1\",\n Tier = \"ENTERPRISE\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 1024,\n Name = \"share1\",\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n },\n },\n });\n\n var snapshot = new Gcp.Filestore.Snapshot(\"snapshot\", new()\n {\n Name = \"test-snapshot\",\n Instance = instance.Name,\n Location = \"us-west1\",\n Description = \"Snapshot of test-instance-for-snapshot\",\n Labels = \n {\n { \"my_label\", \"value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/filestore\"\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 := filestore.NewInstance(ctx, \"instance\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"test-instance-for-snapshot\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(1024),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\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 = filestore.NewSnapshot(ctx, \"snapshot\", \u0026filestore.SnapshotArgs{\n\t\t\tName: pulumi.String(\"test-snapshot\"),\n\t\t\tInstance: instance.Name,\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tDescription: pulumi.String(\"Snapshot of test-instance-for-snapshot\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_label\": pulumi.String(\"value\"),\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.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\nimport com.pulumi.gcp.filestore.Snapshot;\nimport com.pulumi.gcp.filestore.SnapshotArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"test-instance-for-snapshot\")\n .location(\"us-west1\")\n .tier(\"ENTERPRISE\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(1024)\n .name(\"share1\")\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .build())\n .build());\n\n var snapshot = new Snapshot(\"snapshot\", SnapshotArgs.builder()\n .name(\"test-snapshot\")\n .instance(instance.name())\n .location(\"us-west1\")\n .description(\"Snapshot of test-instance-for-snapshot\")\n .labels(Map.of(\"my_label\", \"value\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n snapshot:\n type: gcp:filestore:Snapshot\n properties:\n name: test-snapshot\n instance: ${instance.name}\n location: us-west1\n description: Snapshot of test-instance-for-snapshot\n labels:\n my_label: value\n instance:\n type: gcp:filestore:Instance\n properties:\n name: test-instance-for-snapshot\n location: us-west1\n tier: ENTERPRISE\n fileShares:\n capacityGb: 1024\n name: share1\n networks:\n - network: default\n modes:\n - MODE_IPV4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSnapshot can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{instance}}/snapshots/{{name}}`\n\n* `{{project}}/{{location}}/{{instance}}/{{name}}`\n\n* `{{location}}/{{instance}}/{{name}}`\n\nWhen using the `pulumi import` command, Snapshot can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:filestore/snapshot:Snapshot default projects/{{project}}/locations/{{location}}/instances/{{instance}}/snapshots/{{name}}\n```\n\n```sh\n$ pulumi import gcp:filestore/snapshot:Snapshot default {{project}}/{{location}}/{{instance}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:filestore/snapshot:Snapshot default {{location}}/{{instance}}/{{name}}\n```\n\n", + "description": "A Google Cloud Filestore snapshot.\n\n\nTo get more information about Snapshot, see:\n\n* [API documentation](https://cloud.google.com/filestore/docs/reference/rest/v1/projects.locations.instances.snapshots)\n* How-to Guides\n * [Creating Snapshots](https://cloud.google.com/filestore/docs/create-snapshots)\n * [Official Documentation](https://cloud.google.com/filestore/docs/snapshots)\n\n## Example Usage\n\n### Filestore Snapshot Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.filestore.Instance(\"instance\", {\n name: \"test-instance-for-snapshot\",\n location: \"us-east1\",\n tier: \"ENTERPRISE\",\n fileShares: {\n capacityGb: 1024,\n name: \"share1\",\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n }],\n});\nconst snapshot = new gcp.filestore.Snapshot(\"snapshot\", {\n name: \"test-snapshot\",\n instance: instance.name,\n location: \"us-east1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.filestore.Instance(\"instance\",\n name=\"test-instance-for-snapshot\",\n location=\"us-east1\",\n tier=\"ENTERPRISE\",\n file_shares={\n \"capacity_gb\": 1024,\n \"name\": \"share1\",\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\n }])\nsnapshot = gcp.filestore.Snapshot(\"snapshot\",\n name=\"test-snapshot\",\n instance=instance.name,\n location=\"us-east1\")\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.Filestore.Instance(\"instance\", new()\n {\n Name = \"test-instance-for-snapshot\",\n Location = \"us-east1\",\n Tier = \"ENTERPRISE\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 1024,\n Name = \"share1\",\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n },\n },\n });\n\n var snapshot = new Gcp.Filestore.Snapshot(\"snapshot\", new()\n {\n Name = \"test-snapshot\",\n Instance = instance.Name,\n Location = \"us-east1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/filestore\"\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 := filestore.NewInstance(ctx, \"instance\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"test-instance-for-snapshot\"),\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(1024),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\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 = filestore.NewSnapshot(ctx, \"snapshot\", \u0026filestore.SnapshotArgs{\n\t\t\tName: pulumi.String(\"test-snapshot\"),\n\t\t\tInstance: instance.Name,\n\t\t\tLocation: pulumi.String(\"us-east1\"),\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.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\nimport com.pulumi.gcp.filestore.Snapshot;\nimport com.pulumi.gcp.filestore.SnapshotArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"test-instance-for-snapshot\")\n .location(\"us-east1\")\n .tier(\"ENTERPRISE\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(1024)\n .name(\"share1\")\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .build())\n .build());\n\n var snapshot = new Snapshot(\"snapshot\", SnapshotArgs.builder()\n .name(\"test-snapshot\")\n .instance(instance.name())\n .location(\"us-east1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n snapshot:\n type: gcp:filestore:Snapshot\n properties:\n name: test-snapshot\n instance: ${instance.name}\n location: us-east1\n instance:\n type: gcp:filestore:Instance\n properties:\n name: test-instance-for-snapshot\n location: us-east1\n tier: ENTERPRISE\n fileShares:\n capacityGb: 1024\n name: share1\n networks:\n - network: default\n modes:\n - MODE_IPV4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Filestore Snapshot Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.filestore.Instance(\"instance\", {\n name: \"test-instance-for-snapshot\",\n location: \"us-west1\",\n tier: \"ENTERPRISE\",\n fileShares: {\n capacityGb: 1024,\n name: \"share1\",\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n }],\n});\nconst snapshot = new gcp.filestore.Snapshot(\"snapshot\", {\n name: \"test-snapshot\",\n instance: instance.name,\n location: \"us-west1\",\n description: \"Snapshot of test-instance-for-snapshot\",\n labels: {\n my_label: \"value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.filestore.Instance(\"instance\",\n name=\"test-instance-for-snapshot\",\n location=\"us-west1\",\n tier=\"ENTERPRISE\",\n file_shares={\n \"capacity_gb\": 1024,\n \"name\": \"share1\",\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\n }])\nsnapshot = gcp.filestore.Snapshot(\"snapshot\",\n name=\"test-snapshot\",\n instance=instance.name,\n location=\"us-west1\",\n description=\"Snapshot of test-instance-for-snapshot\",\n labels={\n \"my_label\": \"value\",\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.Filestore.Instance(\"instance\", new()\n {\n Name = \"test-instance-for-snapshot\",\n Location = \"us-west1\",\n Tier = \"ENTERPRISE\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 1024,\n Name = \"share1\",\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n },\n },\n });\n\n var snapshot = new Gcp.Filestore.Snapshot(\"snapshot\", new()\n {\n Name = \"test-snapshot\",\n Instance = instance.Name,\n Location = \"us-west1\",\n Description = \"Snapshot of test-instance-for-snapshot\",\n Labels = \n {\n { \"my_label\", \"value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/filestore\"\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 := filestore.NewInstance(ctx, \"instance\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"test-instance-for-snapshot\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(1024),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\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 = filestore.NewSnapshot(ctx, \"snapshot\", \u0026filestore.SnapshotArgs{\n\t\t\tName: pulumi.String(\"test-snapshot\"),\n\t\t\tInstance: instance.Name,\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tDescription: pulumi.String(\"Snapshot of test-instance-for-snapshot\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_label\": pulumi.String(\"value\"),\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.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\nimport com.pulumi.gcp.filestore.Snapshot;\nimport com.pulumi.gcp.filestore.SnapshotArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"test-instance-for-snapshot\")\n .location(\"us-west1\")\n .tier(\"ENTERPRISE\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(1024)\n .name(\"share1\")\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .build())\n .build());\n\n var snapshot = new Snapshot(\"snapshot\", SnapshotArgs.builder()\n .name(\"test-snapshot\")\n .instance(instance.name())\n .location(\"us-west1\")\n .description(\"Snapshot of test-instance-for-snapshot\")\n .labels(Map.of(\"my_label\", \"value\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n snapshot:\n type: gcp:filestore:Snapshot\n properties:\n name: test-snapshot\n instance: ${instance.name}\n location: us-west1\n description: Snapshot of test-instance-for-snapshot\n labels:\n my_label: value\n instance:\n type: gcp:filestore:Instance\n properties:\n name: test-instance-for-snapshot\n location: us-west1\n tier: ENTERPRISE\n fileShares:\n capacityGb: 1024\n name: share1\n networks:\n - network: default\n modes:\n - MODE_IPV4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSnapshot can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{instance}}/snapshots/{{name}}`\n\n* `{{project}}/{{location}}/{{instance}}/{{name}}`\n\n* `{{location}}/{{instance}}/{{name}}`\n\nWhen using the `pulumi import` command, Snapshot can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:filestore/snapshot:Snapshot default projects/{{project}}/locations/{{location}}/instances/{{instance}}/snapshots/{{name}}\n```\n\n```sh\n$ pulumi import gcp:filestore/snapshot:Snapshot default {{project}}/{{location}}/{{instance}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:filestore/snapshot:Snapshot default {{location}}/{{instance}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -190735,7 +190735,7 @@ } }, "gcp:firebase/androidApp:AndroidApp": { - "description": "## Example Usage\n\n### Firebase Android App Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.firebase.AndroidApp(\"basic\", {\n project: \"my-project-name\",\n displayName: \"Display Name Basic\",\n packageName: \"android.package.app\",\n sha1Hashes: [\"2145bdf698b8715039bd0e83f2069bed435ac21c\"],\n sha256Hashes: [\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.firebase.AndroidApp(\"basic\",\n project=\"my-project-name\",\n display_name=\"Display Name Basic\",\n package_name=\"android.package.app\",\n sha1_hashes=[\"2145bdf698b8715039bd0e83f2069bed435ac21c\"],\n sha256_hashes=[\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"])\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.Firebase.AndroidApp(\"basic\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Display Name Basic\",\n PackageName = \"android.package.app\",\n Sha1Hashes = new[]\n {\n \"2145bdf698b8715039bd0e83f2069bed435ac21c\",\n },\n Sha256Hashes = new[]\n {\n \"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewAndroidApp(ctx, \"basic\", \u0026firebase.AndroidAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name Basic\"),\n\t\t\tPackageName: pulumi.String(\"android.package.app\"),\n\t\t\tSha1Hashes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2145bdf698b8715039bd0e83f2069bed435ac21c\"),\n\t\t\t},\n\t\t\tSha256Hashes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"),\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.firebase.AndroidApp;\nimport com.pulumi.gcp.firebase.AndroidAppArgs;\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 AndroidApp(\"basic\", AndroidAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Display Name Basic\")\n .packageName(\"android.package.app\")\n .sha1Hashes(\"2145bdf698b8715039bd0e83f2069bed435ac21c\")\n .sha256Hashes(\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:firebase:AndroidApp\n properties:\n project: my-project-name\n displayName: Display Name Basic\n packageName: android.package.app\n sha1Hashes:\n - 2145bdf698b8715039bd0e83f2069bed435ac21c\n sha256Hashes:\n - 2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebase Android App Custom Api Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst android = new gcp.projects.ApiKey(\"android\", {\n name: \"api-key\",\n displayName: \"Display Name\",\n project: \"my-project-name\",\n restrictions: {\n androidKeyRestrictions: {\n allowedApplications: [{\n packageName: \"android.package.app\",\n sha1Fingerprint: \"2145bdf698b8715039bd0e83f2069bed435ac21c\",\n }],\n },\n },\n});\nconst _default = new gcp.firebase.AndroidApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Display Name\",\n packageName: \"android.package.app\",\n sha1Hashes: [\"2145bdf698b8715039bd0e83f2069bed435ac21c\"],\n sha256Hashes: [\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"],\n apiKeyId: android.uid,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nandroid = gcp.projects.ApiKey(\"android\",\n name=\"api-key\",\n display_name=\"Display Name\",\n project=\"my-project-name\",\n restrictions={\n \"androidKeyRestrictions\": {\n \"allowedApplications\": [{\n \"packageName\": \"android.package.app\",\n \"sha1Fingerprint\": \"2145bdf698b8715039bd0e83f2069bed435ac21c\",\n }],\n },\n })\ndefault = gcp.firebase.AndroidApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Display Name\",\n package_name=\"android.package.app\",\n sha1_hashes=[\"2145bdf698b8715039bd0e83f2069bed435ac21c\"],\n sha256_hashes=[\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"],\n api_key_id=android.uid)\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 android = new Gcp.Projects.ApiKey(\"android\", new()\n {\n Name = \"api-key\",\n DisplayName = \"Display Name\",\n Project = \"my-project-name\",\n Restrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsArgs\n {\n AndroidKeyRestrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsAndroidKeyRestrictionsArgs\n {\n AllowedApplications = new[]\n {\n new Gcp.Projects.Inputs.ApiKeyRestrictionsAndroidKeyRestrictionsAllowedApplicationArgs\n {\n PackageName = \"android.package.app\",\n Sha1Fingerprint = \"2145bdf698b8715039bd0e83f2069bed435ac21c\",\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Firebase.AndroidApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Display Name\",\n PackageName = \"android.package.app\",\n Sha1Hashes = new[]\n {\n \"2145bdf698b8715039bd0e83f2069bed435ac21c\",\n },\n Sha256Hashes = new[]\n {\n \"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\",\n },\n ApiKeyId = android.Uid,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tandroid, err := projects.NewApiKey(ctx, \"android\", \u0026projects.ApiKeyArgs{\n\t\t\tName: pulumi.String(\"api-key\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRestrictions: \u0026projects.ApiKeyRestrictionsArgs{\n\t\t\t\tAndroidKeyRestrictions: \u0026projects.ApiKeyRestrictionsAndroidKeyRestrictionsArgs{\n\t\t\t\t\tAllowedApplications: projects.ApiKeyRestrictionsAndroidKeyRestrictionsAllowedApplicationArray{\n\t\t\t\t\t\t\u0026projects.ApiKeyRestrictionsAndroidKeyRestrictionsAllowedApplicationArgs{\n\t\t\t\t\t\t\tPackageName: pulumi.String(\"android.package.app\"),\n\t\t\t\t\t\t\tSha1Fingerprint: pulumi.String(\"2145bdf698b8715039bd0e83f2069bed435ac21c\"),\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 = firebase.NewAndroidApp(ctx, \"default\", \u0026firebase.AndroidAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name\"),\n\t\t\tPackageName: pulumi.String(\"android.package.app\"),\n\t\t\tSha1Hashes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2145bdf698b8715039bd0e83f2069bed435ac21c\"),\n\t\t\t},\n\t\t\tSha256Hashes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"),\n\t\t\t},\n\t\t\tApiKeyId: android.Uid,\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.projects.ApiKey;\nimport com.pulumi.gcp.projects.ApiKeyArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsAndroidKeyRestrictionsArgs;\nimport com.pulumi.gcp.firebase.AndroidApp;\nimport com.pulumi.gcp.firebase.AndroidAppArgs;\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 android = new ApiKey(\"android\", ApiKeyArgs.builder()\n .name(\"api-key\")\n .displayName(\"Display Name\")\n .project(\"my-project-name\")\n .restrictions(ApiKeyRestrictionsArgs.builder()\n .androidKeyRestrictions(ApiKeyRestrictionsAndroidKeyRestrictionsArgs.builder()\n .allowedApplications(ApiKeyRestrictionsAndroidKeyRestrictionsAllowedApplicationArgs.builder()\n .packageName(\"android.package.app\")\n .sha1Fingerprint(\"2145bdf698b8715039bd0e83f2069bed435ac21c\")\n .build())\n .build())\n .build())\n .build());\n\n var default_ = new AndroidApp(\"default\", AndroidAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Display Name\")\n .packageName(\"android.package.app\")\n .sha1Hashes(\"2145bdf698b8715039bd0e83f2069bed435ac21c\")\n .sha256Hashes(\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\")\n .apiKeyId(android.uid())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:AndroidApp\n properties:\n project: my-project-name\n displayName: Display Name\n packageName: android.package.app\n sha1Hashes:\n - 2145bdf698b8715039bd0e83f2069bed435ac21c\n sha256Hashes:\n - 2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\n apiKeyId: ${android.uid}\n android:\n type: gcp:projects:ApiKey\n properties:\n name: api-key\n displayName: Display Name\n project: my-project-name\n restrictions:\n androidKeyRestrictions:\n allowedApplications:\n - packageName: android.package.app\n sha1Fingerprint: 2145bdf698b8715039bd0e83f2069bed435ac21c\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAndroidApp can be imported using any of these accepted formats:\n\n* `{{project}} projects/{{project}}/androidApps/{{app_id}}`\n\n* `projects/{{project}}/androidApps/{{app_id}}`\n\n* `{{project}}/{{project}}/{{app_id}}`\n\n* `androidApps/{{app_id}}`\n\n* `{{app_id}}`\n\nWhen using the `pulumi import` command, AndroidApp can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/androidApp:AndroidApp default {{project}} projects/{{project}}/androidApps/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/androidApp:AndroidApp default projects/{{project}}/androidApps/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/androidApp:AndroidApp default {{project}}/{{project}}/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/androidApp:AndroidApp default androidApps/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/androidApp:AndroidApp default {{app_id}}\n```\n\n", + "description": "## Example Usage\n\n### Firebase Android App Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.firebase.AndroidApp(\"basic\", {\n project: \"my-project-name\",\n displayName: \"Display Name Basic\",\n packageName: \"android.package.app\",\n sha1Hashes: [\"2145bdf698b8715039bd0e83f2069bed435ac21c\"],\n sha256Hashes: [\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.firebase.AndroidApp(\"basic\",\n project=\"my-project-name\",\n display_name=\"Display Name Basic\",\n package_name=\"android.package.app\",\n sha1_hashes=[\"2145bdf698b8715039bd0e83f2069bed435ac21c\"],\n sha256_hashes=[\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"])\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.Firebase.AndroidApp(\"basic\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Display Name Basic\",\n PackageName = \"android.package.app\",\n Sha1Hashes = new[]\n {\n \"2145bdf698b8715039bd0e83f2069bed435ac21c\",\n },\n Sha256Hashes = new[]\n {\n \"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewAndroidApp(ctx, \"basic\", \u0026firebase.AndroidAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name Basic\"),\n\t\t\tPackageName: pulumi.String(\"android.package.app\"),\n\t\t\tSha1Hashes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2145bdf698b8715039bd0e83f2069bed435ac21c\"),\n\t\t\t},\n\t\t\tSha256Hashes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"),\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.firebase.AndroidApp;\nimport com.pulumi.gcp.firebase.AndroidAppArgs;\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 AndroidApp(\"basic\", AndroidAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Display Name Basic\")\n .packageName(\"android.package.app\")\n .sha1Hashes(\"2145bdf698b8715039bd0e83f2069bed435ac21c\")\n .sha256Hashes(\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:firebase:AndroidApp\n properties:\n project: my-project-name\n displayName: Display Name Basic\n packageName: android.package.app\n sha1Hashes:\n - 2145bdf698b8715039bd0e83f2069bed435ac21c\n sha256Hashes:\n - 2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebase Android App Custom Api Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst android = new gcp.projects.ApiKey(\"android\", {\n name: \"api-key\",\n displayName: \"Display Name\",\n project: \"my-project-name\",\n restrictions: {\n androidKeyRestrictions: {\n allowedApplications: [{\n packageName: \"android.package.app\",\n sha1Fingerprint: \"2145bdf698b8715039bd0e83f2069bed435ac21c\",\n }],\n },\n },\n});\nconst _default = new gcp.firebase.AndroidApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Display Name\",\n packageName: \"android.package.app\",\n sha1Hashes: [\"2145bdf698b8715039bd0e83f2069bed435ac21c\"],\n sha256Hashes: [\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"],\n apiKeyId: android.uid,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nandroid = gcp.projects.ApiKey(\"android\",\n name=\"api-key\",\n display_name=\"Display Name\",\n project=\"my-project-name\",\n restrictions={\n \"android_key_restrictions\": {\n \"allowed_applications\": [{\n \"package_name\": \"android.package.app\",\n \"sha1_fingerprint\": \"2145bdf698b8715039bd0e83f2069bed435ac21c\",\n }],\n },\n })\ndefault = gcp.firebase.AndroidApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Display Name\",\n package_name=\"android.package.app\",\n sha1_hashes=[\"2145bdf698b8715039bd0e83f2069bed435ac21c\"],\n sha256_hashes=[\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"],\n api_key_id=android.uid)\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 android = new Gcp.Projects.ApiKey(\"android\", new()\n {\n Name = \"api-key\",\n DisplayName = \"Display Name\",\n Project = \"my-project-name\",\n Restrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsArgs\n {\n AndroidKeyRestrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsAndroidKeyRestrictionsArgs\n {\n AllowedApplications = new[]\n {\n new Gcp.Projects.Inputs.ApiKeyRestrictionsAndroidKeyRestrictionsAllowedApplicationArgs\n {\n PackageName = \"android.package.app\",\n Sha1Fingerprint = \"2145bdf698b8715039bd0e83f2069bed435ac21c\",\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Firebase.AndroidApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Display Name\",\n PackageName = \"android.package.app\",\n Sha1Hashes = new[]\n {\n \"2145bdf698b8715039bd0e83f2069bed435ac21c\",\n },\n Sha256Hashes = new[]\n {\n \"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\",\n },\n ApiKeyId = android.Uid,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tandroid, err := projects.NewApiKey(ctx, \"android\", \u0026projects.ApiKeyArgs{\n\t\t\tName: pulumi.String(\"api-key\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRestrictions: \u0026projects.ApiKeyRestrictionsArgs{\n\t\t\t\tAndroidKeyRestrictions: \u0026projects.ApiKeyRestrictionsAndroidKeyRestrictionsArgs{\n\t\t\t\t\tAllowedApplications: projects.ApiKeyRestrictionsAndroidKeyRestrictionsAllowedApplicationArray{\n\t\t\t\t\t\t\u0026projects.ApiKeyRestrictionsAndroidKeyRestrictionsAllowedApplicationArgs{\n\t\t\t\t\t\t\tPackageName: pulumi.String(\"android.package.app\"),\n\t\t\t\t\t\t\tSha1Fingerprint: pulumi.String(\"2145bdf698b8715039bd0e83f2069bed435ac21c\"),\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 = firebase.NewAndroidApp(ctx, \"default\", \u0026firebase.AndroidAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name\"),\n\t\t\tPackageName: pulumi.String(\"android.package.app\"),\n\t\t\tSha1Hashes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2145bdf698b8715039bd0e83f2069bed435ac21c\"),\n\t\t\t},\n\t\t\tSha256Hashes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"),\n\t\t\t},\n\t\t\tApiKeyId: android.Uid,\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.projects.ApiKey;\nimport com.pulumi.gcp.projects.ApiKeyArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsAndroidKeyRestrictionsArgs;\nimport com.pulumi.gcp.firebase.AndroidApp;\nimport com.pulumi.gcp.firebase.AndroidAppArgs;\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 android = new ApiKey(\"android\", ApiKeyArgs.builder()\n .name(\"api-key\")\n .displayName(\"Display Name\")\n .project(\"my-project-name\")\n .restrictions(ApiKeyRestrictionsArgs.builder()\n .androidKeyRestrictions(ApiKeyRestrictionsAndroidKeyRestrictionsArgs.builder()\n .allowedApplications(ApiKeyRestrictionsAndroidKeyRestrictionsAllowedApplicationArgs.builder()\n .packageName(\"android.package.app\")\n .sha1Fingerprint(\"2145bdf698b8715039bd0e83f2069bed435ac21c\")\n .build())\n .build())\n .build())\n .build());\n\n var default_ = new AndroidApp(\"default\", AndroidAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Display Name\")\n .packageName(\"android.package.app\")\n .sha1Hashes(\"2145bdf698b8715039bd0e83f2069bed435ac21c\")\n .sha256Hashes(\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\")\n .apiKeyId(android.uid())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:AndroidApp\n properties:\n project: my-project-name\n displayName: Display Name\n packageName: android.package.app\n sha1Hashes:\n - 2145bdf698b8715039bd0e83f2069bed435ac21c\n sha256Hashes:\n - 2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\n apiKeyId: ${android.uid}\n android:\n type: gcp:projects:ApiKey\n properties:\n name: api-key\n displayName: Display Name\n project: my-project-name\n restrictions:\n androidKeyRestrictions:\n allowedApplications:\n - packageName: android.package.app\n sha1Fingerprint: 2145bdf698b8715039bd0e83f2069bed435ac21c\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAndroidApp can be imported using any of these accepted formats:\n\n* `{{project}} projects/{{project}}/androidApps/{{app_id}}`\n\n* `projects/{{project}}/androidApps/{{app_id}}`\n\n* `{{project}}/{{project}}/{{app_id}}`\n\n* `androidApps/{{app_id}}`\n\n* `{{app_id}}`\n\nWhen using the `pulumi import` command, AndroidApp can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/androidApp:AndroidApp default {{project}} projects/{{project}}/androidApps/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/androidApp:AndroidApp default projects/{{project}}/androidApps/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/androidApp:AndroidApp default {{project}}/{{project}}/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/androidApp:AndroidApp default androidApps/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/androidApp:AndroidApp default {{app_id}}\n```\n\n", "properties": { "apiKeyId": { "type": "string", @@ -191048,7 +191048,7 @@ } }, "gcp:firebase/appCheckDeviceCheckConfig:AppCheckDeviceCheckConfig": { - "description": "An app's DeviceCheck configuration object. Note that the Team ID registered with your\napp is used as part of the validation process. Make sure your `gcp.firebase.AppleApp` has a team_id present.\n\n\nTo get more information about DeviceCheckConfig, see:\n\n* [API documentation](https://firebase.google.com/docs/reference/appcheck/rest/v1/projects.apps.deviceCheckConfig)\n* How-to Guides\n * [Official Documentation](https://firebase.google.com/docs/app-check)\n\n\n\n## Example Usage\n\n### Firebase App Check Device Check Config Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\nimport * as time from \"@pulumi/time\";\n\nconst _default = new gcp.firebase.AppleApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Apple app\",\n bundleId: \"bundle.id.devicecheck\",\n teamId: \"9987654321\",\n});\n// It takes a while for App Check to recognize the new app\n// If your app already exists, you don't have to wait 30 seconds.\nconst wait30s = new time.index.Sleep(\"wait_30s\", {createDuration: \"30s\"}, {\n dependsOn: [_default],\n});\nconst defaultAppCheckDeviceCheckConfig = new gcp.firebase.AppCheckDeviceCheckConfig(\"default\", {\n project: \"my-project-name\",\n appId: _default.appId,\n tokenTtl: \"7200s\",\n keyId: \"Key ID\",\n privateKey: std.file({\n input: \"path/to/private-key.p8\",\n }).then(invoke =\u003e invoke.result),\n}, {\n dependsOn: [wait30s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\nimport pulumi_time as time\n\ndefault = gcp.firebase.AppleApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Apple app\",\n bundle_id=\"bundle.id.devicecheck\",\n team_id=\"9987654321\")\n# It takes a while for App Check to recognize the new app\n# If your app already exists, you don't have to wait 30 seconds.\nwait30s = time.index.Sleep(\"wait_30s\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[default]))\ndefault_app_check_device_check_config = gcp.firebase.AppCheckDeviceCheckConfig(\"default\",\n project=\"my-project-name\",\n app_id=default.app_id,\n token_ttl=\"7200s\",\n key_id=\"Key ID\",\n private_key=std.file(input=\"path/to/private-key.p8\").result,\n opts = pulumi.ResourceOptions(depends_on=[wait30s]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.AppleApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Apple app\",\n BundleId = \"bundle.id.devicecheck\",\n TeamId = \"9987654321\",\n });\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Time.Index.Sleep(\"wait_30s\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var defaultAppCheckDeviceCheckConfig = new Gcp.Firebase.AppCheckDeviceCheckConfig(\"default\", new()\n {\n Project = \"my-project-name\",\n AppId = @default.AppId,\n TokenTtl = \"7200s\",\n KeyId = \"Key ID\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private-key.p8\",\n }).Apply(invoke =\u003e invoke.Result),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait30s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\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 := firebase.NewAppleApp(ctx, \"default\", \u0026firebase.AppleAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Apple app\"),\n\t\t\tBundleId: pulumi.String(\"bundle.id.devicecheck\"),\n\t\t\tTeamId: pulumi.String(\"9987654321\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// It takes a while for App Check to recognize the new app\n\t\t// If your app already exists, you don't have to wait 30 seconds.\n\t\twait30s, err := time.NewSleep(ctx, \"wait_30s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private-key.p8\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewAppCheckDeviceCheckConfig(ctx, \"default\", \u0026firebase.AppCheckDeviceCheckConfigArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tAppId: _default.AppId,\n\t\t\tTokenTtl: pulumi.String(\"7200s\"),\n\t\t\tKeyId: pulumi.String(\"Key ID\"),\n\t\t\tPrivateKey: invokeFile.Result,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait30s,\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.firebase.AppleApp;\nimport com.pulumi.gcp.firebase.AppleAppArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.AppCheckDeviceCheckConfig;\nimport com.pulumi.gcp.firebase.AppCheckDeviceCheckConfigArgs;\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 AppleApp(\"default\", AppleAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Apple app\")\n .bundleId(\"bundle.id.devicecheck\")\n .teamId(\"9987654321\")\n .build());\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Sleep(\"wait30s\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var defaultAppCheckDeviceCheckConfig = new AppCheckDeviceCheckConfig(\"defaultAppCheckDeviceCheckConfig\", AppCheckDeviceCheckConfigArgs.builder()\n .project(\"my-project-name\")\n .appId(default_.appId())\n .tokenTtl(\"7200s\")\n .keyId(\"Key ID\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private-key.p8\")\n .build()).result())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait30s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:AppleApp\n properties:\n project: my-project-name\n displayName: Apple app\n bundleId: bundle.id.devicecheck\n teamId: '9987654321'\n # It takes a while for App Check to recognize the new app\n # If your app already exists, you don't have to wait 30 seconds.\n wait30s:\n type: time:sleep\n name: wait_30s\n properties:\n createDuration: 30s\n options:\n dependson:\n - ${default}\n defaultAppCheckDeviceCheckConfig:\n type: gcp:firebase:AppCheckDeviceCheckConfig\n name: default\n properties:\n project: my-project-name\n appId: ${default.appId}\n tokenTtl: 7200s\n keyId: Key ID\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private-key.p8\n Return: result\n options:\n dependson:\n - ${wait30s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDeviceCheckConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/apps/{{app_id}}/deviceCheckConfig`\n\n* `{{project}}/{{app_id}}`\n\n* `{{app_id}}`\n\nWhen using the `pulumi import` command, DeviceCheckConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/appCheckDeviceCheckConfig:AppCheckDeviceCheckConfig default projects/{{project}}/apps/{{app_id}}/deviceCheckConfig\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckDeviceCheckConfig:AppCheckDeviceCheckConfig default {{project}}/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckDeviceCheckConfig:AppCheckDeviceCheckConfig default {{app_id}}\n```\n\n", + "description": "An app's DeviceCheck configuration object. Note that the Team ID registered with your\napp is used as part of the validation process. Make sure your `gcp.firebase.AppleApp` has a team_id present.\n\n\nTo get more information about DeviceCheckConfig, see:\n\n* [API documentation](https://firebase.google.com/docs/reference/appcheck/rest/v1/projects.apps.deviceCheckConfig)\n* How-to Guides\n * [Official Documentation](https://firebase.google.com/docs/app-check)\n\n\n\n## Example Usage\n\n### Firebase App Check Device Check Config Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\nimport * as time from \"@pulumi/time\";\n\nconst _default = new gcp.firebase.AppleApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Apple app\",\n bundleId: \"bundle.id.devicecheck\",\n teamId: \"9987654321\",\n});\n// It takes a while for App Check to recognize the new app\n// If your app already exists, you don't have to wait 30 seconds.\nconst wait30s = new time.index.Sleep(\"wait_30s\", {createDuration: \"30s\"}, {\n dependsOn: [_default],\n});\nconst defaultAppCheckDeviceCheckConfig = new gcp.firebase.AppCheckDeviceCheckConfig(\"default\", {\n project: \"my-project-name\",\n appId: _default.appId,\n tokenTtl: \"7200s\",\n keyId: \"Key ID\",\n privateKey: std.file({\n input: \"path/to/private-key.p8\",\n }).then(invoke =\u003e invoke.result),\n}, {\n dependsOn: [wait30s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\nimport pulumi_time as time\n\ndefault = gcp.firebase.AppleApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Apple app\",\n bundle_id=\"bundle.id.devicecheck\",\n team_id=\"9987654321\")\n# It takes a while for App Check to recognize the new app\n# If your app already exists, you don't have to wait 30 seconds.\nwait30s = time.index.Sleep(\"wait_30s\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[default]))\ndefault_app_check_device_check_config = gcp.firebase.AppCheckDeviceCheckConfig(\"default\",\n project=\"my-project-name\",\n app_id=default.app_id,\n token_ttl=\"7200s\",\n key_id=\"Key ID\",\n private_key=std.file(input=\"path/to/private-key.p8\").result,\n opts = pulumi.ResourceOptions(depends_on=[wait30s]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.AppleApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Apple app\",\n BundleId = \"bundle.id.devicecheck\",\n TeamId = \"9987654321\",\n });\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Time.Index.Sleep(\"wait_30s\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var defaultAppCheckDeviceCheckConfig = new Gcp.Firebase.AppCheckDeviceCheckConfig(\"default\", new()\n {\n Project = \"my-project-name\",\n AppId = @default.AppId,\n TokenTtl = \"7200s\",\n KeyId = \"Key ID\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private-key.p8\",\n }).Apply(invoke =\u003e invoke.Result),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait30s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\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 := firebase.NewAppleApp(ctx, \"default\", \u0026firebase.AppleAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Apple app\"),\n\t\t\tBundleId: pulumi.String(\"bundle.id.devicecheck\"),\n\t\t\tTeamId: pulumi.String(\"9987654321\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// It takes a while for App Check to recognize the new app\n\t\t// If your app already exists, you don't have to wait 30 seconds.\n\t\twait30s, err := time.NewSleep(ctx, \"wait_30s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private-key.p8\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewAppCheckDeviceCheckConfig(ctx, \"default\", \u0026firebase.AppCheckDeviceCheckConfigArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tAppId: _default.AppId,\n\t\t\tTokenTtl: pulumi.String(\"7200s\"),\n\t\t\tKeyId: pulumi.String(\"Key ID\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile.Result),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait30s,\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.firebase.AppleApp;\nimport com.pulumi.gcp.firebase.AppleAppArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.AppCheckDeviceCheckConfig;\nimport com.pulumi.gcp.firebase.AppCheckDeviceCheckConfigArgs;\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 AppleApp(\"default\", AppleAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Apple app\")\n .bundleId(\"bundle.id.devicecheck\")\n .teamId(\"9987654321\")\n .build());\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Sleep(\"wait30s\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var defaultAppCheckDeviceCheckConfig = new AppCheckDeviceCheckConfig(\"defaultAppCheckDeviceCheckConfig\", AppCheckDeviceCheckConfigArgs.builder()\n .project(\"my-project-name\")\n .appId(default_.appId())\n .tokenTtl(\"7200s\")\n .keyId(\"Key ID\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private-key.p8\")\n .build()).result())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait30s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:AppleApp\n properties:\n project: my-project-name\n displayName: Apple app\n bundleId: bundle.id.devicecheck\n teamId: '9987654321'\n # It takes a while for App Check to recognize the new app\n # If your app already exists, you don't have to wait 30 seconds.\n wait30s:\n type: time:sleep\n name: wait_30s\n properties:\n createDuration: 30s\n options:\n dependson:\n - ${default}\n defaultAppCheckDeviceCheckConfig:\n type: gcp:firebase:AppCheckDeviceCheckConfig\n name: default\n properties:\n project: my-project-name\n appId: ${default.appId}\n tokenTtl: 7200s\n keyId: Key ID\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private-key.p8\n Return: result\n options:\n dependson:\n - ${wait30s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDeviceCheckConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/apps/{{app_id}}/deviceCheckConfig`\n\n* `{{project}}/{{app_id}}`\n\n* `{{app_id}}`\n\nWhen using the `pulumi import` command, DeviceCheckConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/appCheckDeviceCheckConfig:AppCheckDeviceCheckConfig default projects/{{project}}/apps/{{app_id}}/deviceCheckConfig\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckDeviceCheckConfig:AppCheckDeviceCheckConfig default {{project}}/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckDeviceCheckConfig:AppCheckDeviceCheckConfig default {{app_id}}\n```\n\n", "properties": { "appId": { "type": "string", @@ -191474,7 +191474,7 @@ } }, "gcp:firebase/appleApp:AppleApp": { - "description": "## Example Usage\n\n### Firebase Apple App Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.AppleApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Display Name Basic\",\n bundleId: \"apple.app.12345\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.AppleApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Display Name Basic\",\n bundle_id=\"apple.app.12345\")\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.Firebase.AppleApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Display Name Basic\",\n BundleId = \"apple.app.12345\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewAppleApp(ctx, \"default\", \u0026firebase.AppleAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name Basic\"),\n\t\t\tBundleId: pulumi.String(\"apple.app.12345\"),\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.firebase.AppleApp;\nimport com.pulumi.gcp.firebase.AppleAppArgs;\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 AppleApp(\"default\", AppleAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Display Name Basic\")\n .bundleId(\"apple.app.12345\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:AppleApp\n properties:\n project: my-project-name\n displayName: Display Name Basic\n bundleId: apple.app.12345\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebase Apple App Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst apple = new gcp.projects.ApiKey(\"apple\", {\n name: \"api-key\",\n displayName: \"Display Name Full\",\n project: \"my-project-name\",\n restrictions: {\n iosKeyRestrictions: {\n allowedBundleIds: [\"apple.app.12345\"],\n },\n },\n});\nconst full = new gcp.firebase.AppleApp(\"full\", {\n project: \"my-project-name\",\n displayName: \"Display Name Full\",\n bundleId: \"apple.app.12345\",\n appStoreId: \"12345\",\n teamId: \"9987654321\",\n apiKeyId: apple.uid,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\napple = gcp.projects.ApiKey(\"apple\",\n name=\"api-key\",\n display_name=\"Display Name Full\",\n project=\"my-project-name\",\n restrictions={\n \"iosKeyRestrictions\": {\n \"allowedBundleIds\": [\"apple.app.12345\"],\n },\n })\nfull = gcp.firebase.AppleApp(\"full\",\n project=\"my-project-name\",\n display_name=\"Display Name Full\",\n bundle_id=\"apple.app.12345\",\n app_store_id=\"12345\",\n team_id=\"9987654321\",\n api_key_id=apple.uid)\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 apple = new Gcp.Projects.ApiKey(\"apple\", new()\n {\n Name = \"api-key\",\n DisplayName = \"Display Name Full\",\n Project = \"my-project-name\",\n Restrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsArgs\n {\n IosKeyRestrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsIosKeyRestrictionsArgs\n {\n AllowedBundleIds = new[]\n {\n \"apple.app.12345\",\n },\n },\n },\n });\n\n var full = new Gcp.Firebase.AppleApp(\"full\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Display Name Full\",\n BundleId = \"apple.app.12345\",\n AppStoreId = \"12345\",\n TeamId = \"9987654321\",\n ApiKeyId = apple.Uid,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapple, err := projects.NewApiKey(ctx, \"apple\", \u0026projects.ApiKeyArgs{\n\t\t\tName: pulumi.String(\"api-key\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name Full\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRestrictions: \u0026projects.ApiKeyRestrictionsArgs{\n\t\t\t\tIosKeyRestrictions: \u0026projects.ApiKeyRestrictionsIosKeyRestrictionsArgs{\n\t\t\t\t\tAllowedBundleIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"apple.app.12345\"),\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 = firebase.NewAppleApp(ctx, \"full\", \u0026firebase.AppleAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name Full\"),\n\t\t\tBundleId: pulumi.String(\"apple.app.12345\"),\n\t\t\tAppStoreId: pulumi.String(\"12345\"),\n\t\t\tTeamId: pulumi.String(\"9987654321\"),\n\t\t\tApiKeyId: apple.Uid,\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.projects.ApiKey;\nimport com.pulumi.gcp.projects.ApiKeyArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsIosKeyRestrictionsArgs;\nimport com.pulumi.gcp.firebase.AppleApp;\nimport com.pulumi.gcp.firebase.AppleAppArgs;\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 apple = new ApiKey(\"apple\", ApiKeyArgs.builder()\n .name(\"api-key\")\n .displayName(\"Display Name Full\")\n .project(\"my-project-name\")\n .restrictions(ApiKeyRestrictionsArgs.builder()\n .iosKeyRestrictions(ApiKeyRestrictionsIosKeyRestrictionsArgs.builder()\n .allowedBundleIds(\"apple.app.12345\")\n .build())\n .build())\n .build());\n\n var full = new AppleApp(\"full\", AppleAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Display Name Full\")\n .bundleId(\"apple.app.12345\")\n .appStoreId(\"12345\")\n .teamId(\"9987654321\")\n .apiKeyId(apple.uid())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n full:\n type: gcp:firebase:AppleApp\n properties:\n project: my-project-name\n displayName: Display Name Full\n bundleId: apple.app.12345\n appStoreId: '12345'\n teamId: '9987654321'\n apiKeyId: ${apple.uid}\n apple:\n type: gcp:projects:ApiKey\n properties:\n name: api-key\n displayName: Display Name Full\n project: my-project-name\n restrictions:\n iosKeyRestrictions:\n allowedBundleIds:\n - apple.app.12345\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAppleApp can be imported using any of these accepted formats:\n\n* `{{project}} projects/{{project}}/iosApps/{{app_id}}`\n\n* `projects/{{project}}/iosApps/{{app_id}}`\n\n* `{{project}}/{{project}}/{{app_id}}`\n\n* `iosApps/{{app_id}}`\n\n* `{{app_id}}`\n\nWhen using the `pulumi import` command, AppleApp can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/appleApp:AppleApp default {{project}} projects/{{project}}/iosApps/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appleApp:AppleApp default projects/{{project}}/iosApps/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appleApp:AppleApp default {{project}}/{{project}}/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appleApp:AppleApp default iosApps/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appleApp:AppleApp default {{app_id}}\n```\n\n", + "description": "## Example Usage\n\n### Firebase Apple App Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.AppleApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Display Name Basic\",\n bundleId: \"apple.app.12345\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.AppleApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Display Name Basic\",\n bundle_id=\"apple.app.12345\")\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.Firebase.AppleApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Display Name Basic\",\n BundleId = \"apple.app.12345\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewAppleApp(ctx, \"default\", \u0026firebase.AppleAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name Basic\"),\n\t\t\tBundleId: pulumi.String(\"apple.app.12345\"),\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.firebase.AppleApp;\nimport com.pulumi.gcp.firebase.AppleAppArgs;\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 AppleApp(\"default\", AppleAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Display Name Basic\")\n .bundleId(\"apple.app.12345\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:AppleApp\n properties:\n project: my-project-name\n displayName: Display Name Basic\n bundleId: apple.app.12345\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebase Apple App Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst apple = new gcp.projects.ApiKey(\"apple\", {\n name: \"api-key\",\n displayName: \"Display Name Full\",\n project: \"my-project-name\",\n restrictions: {\n iosKeyRestrictions: {\n allowedBundleIds: [\"apple.app.12345\"],\n },\n },\n});\nconst full = new gcp.firebase.AppleApp(\"full\", {\n project: \"my-project-name\",\n displayName: \"Display Name Full\",\n bundleId: \"apple.app.12345\",\n appStoreId: \"12345\",\n teamId: \"9987654321\",\n apiKeyId: apple.uid,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\napple = gcp.projects.ApiKey(\"apple\",\n name=\"api-key\",\n display_name=\"Display Name Full\",\n project=\"my-project-name\",\n restrictions={\n \"ios_key_restrictions\": {\n \"allowed_bundle_ids\": [\"apple.app.12345\"],\n },\n })\nfull = gcp.firebase.AppleApp(\"full\",\n project=\"my-project-name\",\n display_name=\"Display Name Full\",\n bundle_id=\"apple.app.12345\",\n app_store_id=\"12345\",\n team_id=\"9987654321\",\n api_key_id=apple.uid)\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 apple = new Gcp.Projects.ApiKey(\"apple\", new()\n {\n Name = \"api-key\",\n DisplayName = \"Display Name Full\",\n Project = \"my-project-name\",\n Restrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsArgs\n {\n IosKeyRestrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsIosKeyRestrictionsArgs\n {\n AllowedBundleIds = new[]\n {\n \"apple.app.12345\",\n },\n },\n },\n });\n\n var full = new Gcp.Firebase.AppleApp(\"full\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Display Name Full\",\n BundleId = \"apple.app.12345\",\n AppStoreId = \"12345\",\n TeamId = \"9987654321\",\n ApiKeyId = apple.Uid,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapple, err := projects.NewApiKey(ctx, \"apple\", \u0026projects.ApiKeyArgs{\n\t\t\tName: pulumi.String(\"api-key\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name Full\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRestrictions: \u0026projects.ApiKeyRestrictionsArgs{\n\t\t\t\tIosKeyRestrictions: \u0026projects.ApiKeyRestrictionsIosKeyRestrictionsArgs{\n\t\t\t\t\tAllowedBundleIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"apple.app.12345\"),\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 = firebase.NewAppleApp(ctx, \"full\", \u0026firebase.AppleAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name Full\"),\n\t\t\tBundleId: pulumi.String(\"apple.app.12345\"),\n\t\t\tAppStoreId: pulumi.String(\"12345\"),\n\t\t\tTeamId: pulumi.String(\"9987654321\"),\n\t\t\tApiKeyId: apple.Uid,\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.projects.ApiKey;\nimport com.pulumi.gcp.projects.ApiKeyArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsIosKeyRestrictionsArgs;\nimport com.pulumi.gcp.firebase.AppleApp;\nimport com.pulumi.gcp.firebase.AppleAppArgs;\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 apple = new ApiKey(\"apple\", ApiKeyArgs.builder()\n .name(\"api-key\")\n .displayName(\"Display Name Full\")\n .project(\"my-project-name\")\n .restrictions(ApiKeyRestrictionsArgs.builder()\n .iosKeyRestrictions(ApiKeyRestrictionsIosKeyRestrictionsArgs.builder()\n .allowedBundleIds(\"apple.app.12345\")\n .build())\n .build())\n .build());\n\n var full = new AppleApp(\"full\", AppleAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Display Name Full\")\n .bundleId(\"apple.app.12345\")\n .appStoreId(\"12345\")\n .teamId(\"9987654321\")\n .apiKeyId(apple.uid())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n full:\n type: gcp:firebase:AppleApp\n properties:\n project: my-project-name\n displayName: Display Name Full\n bundleId: apple.app.12345\n appStoreId: '12345'\n teamId: '9987654321'\n apiKeyId: ${apple.uid}\n apple:\n type: gcp:projects:ApiKey\n properties:\n name: api-key\n displayName: Display Name Full\n project: my-project-name\n restrictions:\n iosKeyRestrictions:\n allowedBundleIds:\n - apple.app.12345\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAppleApp can be imported using any of these accepted formats:\n\n* `{{project}} projects/{{project}}/iosApps/{{app_id}}`\n\n* `projects/{{project}}/iosApps/{{app_id}}`\n\n* `{{project}}/{{project}}/{{app_id}}`\n\n* `iosApps/{{app_id}}`\n\n* `{{app_id}}`\n\nWhen using the `pulumi import` command, AppleApp can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/appleApp:AppleApp default {{project}} projects/{{project}}/iosApps/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appleApp:AppleApp default projects/{{project}}/iosApps/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appleApp:AppleApp default {{project}}/{{project}}/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appleApp:AppleApp default iosApps/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appleApp:AppleApp default {{app_id}}\n```\n\n", "properties": { "apiKeyId": { "type": "string", @@ -191717,7 +191717,7 @@ } }, "gcp:firebase/extensionsInstance:ExtensionsInstance": { - "description": "## Example Usage\n\n### Firebase Extentions Instance Resize Image\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst images = new gcp.storage.Bucket(\"images\", {\n project: \"my-project-name\",\n name: \"bucket-id\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n forceDestroy: true,\n});\nconst resizeImage = new gcp.firebase.ExtensionsInstance(\"resize_image\", {\n project: \"my-project-name\",\n instanceId: \"storage-resize-images\",\n config: {\n extensionRef: \"firebase/storage-resize-images\",\n extensionVersion: \"0.2.2\",\n params: {\n DELETE_ORIGINAL_FILE: \"false\",\n MAKE_PUBLIC: \"false\",\n IMAGE_TYPE: \"false\",\n IS_ANIMATED: \"true\",\n FUNCTION_MEMORY: \"1024\",\n DO_BACKFILL: \"false\",\n IMG_SIZES: \"200x200\",\n IMG_BUCKET: images.name,\n },\n systemParams: {\n \"firebaseextensions.v1beta.function/location\": \"\",\n \"firebaseextensions.v1beta.function/maxInstances\": \"3000\",\n \"firebaseextensions.v1beta.function/minInstances\": \"0\",\n \"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\": \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\",\n },\n allowedEventTypes: [\"firebase.extensions.storage-resize-images.v1.onCompletion\"],\n eventarcChannel: \"projects/my-project-name/locations//channels/firebase\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimages = gcp.storage.Bucket(\"images\",\n project=\"my-project-name\",\n name=\"bucket-id\",\n location=\"US\",\n uniform_bucket_level_access=True,\n force_destroy=True)\nresize_image = gcp.firebase.ExtensionsInstance(\"resize_image\",\n project=\"my-project-name\",\n instance_id=\"storage-resize-images\",\n config={\n \"extensionRef\": \"firebase/storage-resize-images\",\n \"extensionVersion\": \"0.2.2\",\n \"params\": {\n \"DELETE_ORIGINAL_FILE\": \"false\",\n \"MAKE_PUBLIC\": \"false\",\n \"IMAGE_TYPE\": \"false\",\n \"IS_ANIMATED\": \"true\",\n \"FUNCTION_MEMORY\": \"1024\",\n \"DO_BACKFILL\": \"false\",\n \"IMG_SIZES\": \"200x200\",\n \"IMG_BUCKET\": images.name,\n },\n \"systemParams\": {\n \"firebaseextensions.v1beta.function/location\": \"\",\n \"firebaseextensions.v1beta.function/maxInstances\": \"3000\",\n \"firebaseextensions.v1beta.function/minInstances\": \"0\",\n \"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\": \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\",\n },\n \"allowedEventTypes\": [\"firebase.extensions.storage-resize-images.v1.onCompletion\"],\n \"eventarcChannel\": \"projects/my-project-name/locations//channels/firebase\",\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 images = new Gcp.Storage.Bucket(\"images\", new()\n {\n Project = \"my-project-name\",\n Name = \"bucket-id\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n ForceDestroy = true,\n });\n\n var resizeImage = new Gcp.Firebase.ExtensionsInstance(\"resize_image\", new()\n {\n Project = \"my-project-name\",\n InstanceId = \"storage-resize-images\",\n Config = new Gcp.Firebase.Inputs.ExtensionsInstanceConfigArgs\n {\n ExtensionRef = \"firebase/storage-resize-images\",\n ExtensionVersion = \"0.2.2\",\n Params = \n {\n { \"DELETE_ORIGINAL_FILE\", \"false\" },\n { \"MAKE_PUBLIC\", \"false\" },\n { \"IMAGE_TYPE\", \"false\" },\n { \"IS_ANIMATED\", \"true\" },\n { \"FUNCTION_MEMORY\", \"1024\" },\n { \"DO_BACKFILL\", \"false\" },\n { \"IMG_SIZES\", \"200x200\" },\n { \"IMG_BUCKET\", images.Name },\n },\n SystemParams = \n {\n { \"firebaseextensions.v1beta.function/location\", \"\" },\n { \"firebaseextensions.v1beta.function/maxInstances\", \"3000\" },\n { \"firebaseextensions.v1beta.function/minInstances\", \"0\" },\n { \"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\", \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\" },\n },\n AllowedEventTypes = new[]\n {\n \"firebase.extensions.storage-resize-images.v1.onCompletion\",\n },\n EventarcChannel = \"projects/my-project-name/locations//channels/firebase\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\timages, err := storage.NewBucket(ctx, \"images\", \u0026storage.BucketArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"bucket-id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\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 = firebase.NewExtensionsInstance(ctx, \"resize_image\", \u0026firebase.ExtensionsInstanceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tInstanceId: pulumi.String(\"storage-resize-images\"),\n\t\t\tConfig: \u0026firebase.ExtensionsInstanceConfigArgs{\n\t\t\t\tExtensionRef: pulumi.String(\"firebase/storage-resize-images\"),\n\t\t\t\tExtensionVersion: pulumi.String(\"0.2.2\"),\n\t\t\t\tParams: pulumi.StringMap{\n\t\t\t\t\t\"DELETE_ORIGINAL_FILE\": pulumi.String(\"false\"),\n\t\t\t\t\t\"MAKE_PUBLIC\": pulumi.String(\"false\"),\n\t\t\t\t\t\"IMAGE_TYPE\": pulumi.String(\"false\"),\n\t\t\t\t\t\"IS_ANIMATED\": pulumi.String(\"true\"),\n\t\t\t\t\t\"FUNCTION_MEMORY\": pulumi.String(\"1024\"),\n\t\t\t\t\t\"DO_BACKFILL\": pulumi.String(\"false\"),\n\t\t\t\t\t\"IMG_SIZES\": pulumi.String(\"200x200\"),\n\t\t\t\t\t\"IMG_BUCKET\": images.Name,\n\t\t\t\t},\n\t\t\t\tSystemParams: pulumi.StringMap{\n\t\t\t\t\t\"firebaseextensions.v1beta.function/location\": pulumi.String(\"\"),\n\t\t\t\t\t\"firebaseextensions.v1beta.function/maxInstances\": pulumi.String(\"3000\"),\n\t\t\t\t\t\"firebaseextensions.v1beta.function/minInstances\": pulumi.String(\"0\"),\n\t\t\t\t\t\"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\": pulumi.String(\"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\"),\n\t\t\t\t},\n\t\t\t\tAllowedEventTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"firebase.extensions.storage-resize-images.v1.onCompletion\"),\n\t\t\t\t},\n\t\t\t\tEventarcChannel: pulumi.String(\"projects/my-project-name/locations//channels/firebase\"),\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.firebase.ExtensionsInstance;\nimport com.pulumi.gcp.firebase.ExtensionsInstanceArgs;\nimport com.pulumi.gcp.firebase.inputs.ExtensionsInstanceConfigArgs;\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 images = new Bucket(\"images\", BucketArgs.builder()\n .project(\"my-project-name\")\n .name(\"bucket-id\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .forceDestroy(true)\n .build());\n\n var resizeImage = new ExtensionsInstance(\"resizeImage\", ExtensionsInstanceArgs.builder()\n .project(\"my-project-name\")\n .instanceId(\"storage-resize-images\")\n .config(ExtensionsInstanceConfigArgs.builder()\n .extensionRef(\"firebase/storage-resize-images\")\n .extensionVersion(\"0.2.2\")\n .params(Map.ofEntries(\n Map.entry(\"DELETE_ORIGINAL_FILE\", false),\n Map.entry(\"MAKE_PUBLIC\", false),\n Map.entry(\"IMAGE_TYPE\", false),\n Map.entry(\"IS_ANIMATED\", true),\n Map.entry(\"FUNCTION_MEMORY\", 1024),\n Map.entry(\"DO_BACKFILL\", false),\n Map.entry(\"IMG_SIZES\", \"200x200\"),\n Map.entry(\"IMG_BUCKET\", images.name())\n ))\n .systemParams(Map.ofEntries(\n Map.entry(\"firebaseextensions.v1beta.function/location\", \"\"),\n Map.entry(\"firebaseextensions.v1beta.function/maxInstances\", 3000),\n Map.entry(\"firebaseextensions.v1beta.function/minInstances\", 0),\n Map.entry(\"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\", \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\")\n ))\n .allowedEventTypes(\"firebase.extensions.storage-resize-images.v1.onCompletion\")\n .eventarcChannel(\"projects/my-project-name/locations//channels/firebase\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n images:\n type: gcp:storage:Bucket\n properties:\n project: my-project-name\n name: bucket-id\n location: US\n uniformBucketLevelAccess: true # Delete all objects when the bucket is deleted\n forceDestroy: true\n resizeImage:\n type: gcp:firebase:ExtensionsInstance\n name: resize_image\n properties:\n project: my-project-name\n instanceId: storage-resize-images\n config:\n extensionRef: firebase/storage-resize-images\n extensionVersion: 0.2.2\n params:\n DELETE_ORIGINAL_FILE: false\n MAKE_PUBLIC: false\n IMAGE_TYPE: false\n IS_ANIMATED: true\n FUNCTION_MEMORY: 1024\n DO_BACKFILL: false\n IMG_SIZES: 200x200\n IMG_BUCKET: ${images.name}\n systemParams:\n firebaseextensions.v1beta.function/location:\n firebaseextensions.v1beta.function/maxInstances: 3000\n firebaseextensions.v1beta.function/minInstances: 0\n firebaseextensions.v1beta.function/vpcConnectorEgressSettings: VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\n allowedEventTypes:\n - firebase.extensions.storage-resize-images.v1.onCompletion\n eventarcChannel: projects/my-project-name/locations//channels/firebase\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/instances/{{instance_id}}`\n\n* `{{project}}/{{instance_id}}`\n\n* `{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/extensionsInstance:ExtensionsInstance default projects/{{project}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/extensionsInstance:ExtensionsInstance default {{project}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/extensionsInstance:ExtensionsInstance default {{instance_id}}\n```\n\n", + "description": "## Example Usage\n\n### Firebase Extentions Instance Resize Image\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst images = new gcp.storage.Bucket(\"images\", {\n project: \"my-project-name\",\n name: \"bucket-id\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n forceDestroy: true,\n});\nconst resizeImage = new gcp.firebase.ExtensionsInstance(\"resize_image\", {\n project: \"my-project-name\",\n instanceId: \"storage-resize-images\",\n config: {\n extensionRef: \"firebase/storage-resize-images\",\n extensionVersion: \"0.2.2\",\n params: {\n DELETE_ORIGINAL_FILE: \"false\",\n MAKE_PUBLIC: \"false\",\n IMAGE_TYPE: \"false\",\n IS_ANIMATED: \"true\",\n FUNCTION_MEMORY: \"1024\",\n DO_BACKFILL: \"false\",\n IMG_SIZES: \"200x200\",\n IMG_BUCKET: images.name,\n },\n systemParams: {\n \"firebaseextensions.v1beta.function/location\": \"\",\n \"firebaseextensions.v1beta.function/maxInstances\": \"3000\",\n \"firebaseextensions.v1beta.function/minInstances\": \"0\",\n \"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\": \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\",\n },\n allowedEventTypes: [\"firebase.extensions.storage-resize-images.v1.onCompletion\"],\n eventarcChannel: \"projects/my-project-name/locations//channels/firebase\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimages = gcp.storage.Bucket(\"images\",\n project=\"my-project-name\",\n name=\"bucket-id\",\n location=\"US\",\n uniform_bucket_level_access=True,\n force_destroy=True)\nresize_image = gcp.firebase.ExtensionsInstance(\"resize_image\",\n project=\"my-project-name\",\n instance_id=\"storage-resize-images\",\n config={\n \"extension_ref\": \"firebase/storage-resize-images\",\n \"extension_version\": \"0.2.2\",\n \"params\": {\n \"delet_e__origina_l__file\": \"false\",\n \"mak_e__public\": \"false\",\n \"imag_e__type\": \"false\",\n \"i_s__animated\": \"true\",\n \"functio_n__memory\": \"1024\",\n \"d_o__backfill\": \"false\",\n \"im_g__sizes\": \"200x200\",\n \"im_g__bucket\": images.name,\n },\n \"system_params\": {\n \"firebaseextensions_v1beta_function_location\": \"\",\n \"firebaseextensions_v1beta_function_max_instances\": \"3000\",\n \"firebaseextensions_v1beta_function_min_instances\": \"0\",\n \"firebaseextensions_v1beta_function_vpc_connector_egress_settings\": \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\",\n },\n \"allowed_event_types\": [\"firebase.extensions.storage-resize-images.v1.onCompletion\"],\n \"eventarc_channel\": \"projects/my-project-name/locations//channels/firebase\",\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 images = new Gcp.Storage.Bucket(\"images\", new()\n {\n Project = \"my-project-name\",\n Name = \"bucket-id\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n ForceDestroy = true,\n });\n\n var resizeImage = new Gcp.Firebase.ExtensionsInstance(\"resize_image\", new()\n {\n Project = \"my-project-name\",\n InstanceId = \"storage-resize-images\",\n Config = new Gcp.Firebase.Inputs.ExtensionsInstanceConfigArgs\n {\n ExtensionRef = \"firebase/storage-resize-images\",\n ExtensionVersion = \"0.2.2\",\n Params = \n {\n { \"DELETE_ORIGINAL_FILE\", \"false\" },\n { \"MAKE_PUBLIC\", \"false\" },\n { \"IMAGE_TYPE\", \"false\" },\n { \"IS_ANIMATED\", \"true\" },\n { \"FUNCTION_MEMORY\", \"1024\" },\n { \"DO_BACKFILL\", \"false\" },\n { \"IMG_SIZES\", \"200x200\" },\n { \"IMG_BUCKET\", images.Name },\n },\n SystemParams = \n {\n { \"firebaseextensions.v1beta.function/location\", \"\" },\n { \"firebaseextensions.v1beta.function/maxInstances\", \"3000\" },\n { \"firebaseextensions.v1beta.function/minInstances\", \"0\" },\n { \"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\", \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\" },\n },\n AllowedEventTypes = new[]\n {\n \"firebase.extensions.storage-resize-images.v1.onCompletion\",\n },\n EventarcChannel = \"projects/my-project-name/locations//channels/firebase\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\timages, err := storage.NewBucket(ctx, \"images\", \u0026storage.BucketArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"bucket-id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\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 = firebase.NewExtensionsInstance(ctx, \"resize_image\", \u0026firebase.ExtensionsInstanceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tInstanceId: pulumi.String(\"storage-resize-images\"),\n\t\t\tConfig: \u0026firebase.ExtensionsInstanceConfigArgs{\n\t\t\t\tExtensionRef: pulumi.String(\"firebase/storage-resize-images\"),\n\t\t\t\tExtensionVersion: pulumi.String(\"0.2.2\"),\n\t\t\t\tParams: pulumi.StringMap{\n\t\t\t\t\t\"DELETE_ORIGINAL_FILE\": pulumi.String(\"false\"),\n\t\t\t\t\t\"MAKE_PUBLIC\": pulumi.String(\"false\"),\n\t\t\t\t\t\"IMAGE_TYPE\": pulumi.String(\"false\"),\n\t\t\t\t\t\"IS_ANIMATED\": pulumi.String(\"true\"),\n\t\t\t\t\t\"FUNCTION_MEMORY\": pulumi.String(\"1024\"),\n\t\t\t\t\t\"DO_BACKFILL\": pulumi.String(\"false\"),\n\t\t\t\t\t\"IMG_SIZES\": pulumi.String(\"200x200\"),\n\t\t\t\t\t\"IMG_BUCKET\": images.Name,\n\t\t\t\t},\n\t\t\t\tSystemParams: pulumi.StringMap{\n\t\t\t\t\t\"firebaseextensions.v1beta.function/location\": pulumi.String(\"\"),\n\t\t\t\t\t\"firebaseextensions.v1beta.function/maxInstances\": pulumi.String(\"3000\"),\n\t\t\t\t\t\"firebaseextensions.v1beta.function/minInstances\": pulumi.String(\"0\"),\n\t\t\t\t\t\"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\": pulumi.String(\"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\"),\n\t\t\t\t},\n\t\t\t\tAllowedEventTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"firebase.extensions.storage-resize-images.v1.onCompletion\"),\n\t\t\t\t},\n\t\t\t\tEventarcChannel: pulumi.String(\"projects/my-project-name/locations//channels/firebase\"),\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.firebase.ExtensionsInstance;\nimport com.pulumi.gcp.firebase.ExtensionsInstanceArgs;\nimport com.pulumi.gcp.firebase.inputs.ExtensionsInstanceConfigArgs;\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 images = new Bucket(\"images\", BucketArgs.builder()\n .project(\"my-project-name\")\n .name(\"bucket-id\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .forceDestroy(true)\n .build());\n\n var resizeImage = new ExtensionsInstance(\"resizeImage\", ExtensionsInstanceArgs.builder()\n .project(\"my-project-name\")\n .instanceId(\"storage-resize-images\")\n .config(ExtensionsInstanceConfigArgs.builder()\n .extensionRef(\"firebase/storage-resize-images\")\n .extensionVersion(\"0.2.2\")\n .params(Map.ofEntries(\n Map.entry(\"DELETE_ORIGINAL_FILE\", false),\n Map.entry(\"MAKE_PUBLIC\", false),\n Map.entry(\"IMAGE_TYPE\", false),\n Map.entry(\"IS_ANIMATED\", true),\n Map.entry(\"FUNCTION_MEMORY\", 1024),\n Map.entry(\"DO_BACKFILL\", false),\n Map.entry(\"IMG_SIZES\", \"200x200\"),\n Map.entry(\"IMG_BUCKET\", images.name())\n ))\n .systemParams(Map.ofEntries(\n Map.entry(\"firebaseextensions.v1beta.function/location\", \"\"),\n Map.entry(\"firebaseextensions.v1beta.function/maxInstances\", 3000),\n Map.entry(\"firebaseextensions.v1beta.function/minInstances\", 0),\n Map.entry(\"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\", \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\")\n ))\n .allowedEventTypes(\"firebase.extensions.storage-resize-images.v1.onCompletion\")\n .eventarcChannel(\"projects/my-project-name/locations//channels/firebase\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n images:\n type: gcp:storage:Bucket\n properties:\n project: my-project-name\n name: bucket-id\n location: US\n uniformBucketLevelAccess: true # Delete all objects when the bucket is deleted\n forceDestroy: true\n resizeImage:\n type: gcp:firebase:ExtensionsInstance\n name: resize_image\n properties:\n project: my-project-name\n instanceId: storage-resize-images\n config:\n extensionRef: firebase/storage-resize-images\n extensionVersion: 0.2.2\n params:\n DELETE_ORIGINAL_FILE: false\n MAKE_PUBLIC: false\n IMAGE_TYPE: false\n IS_ANIMATED: true\n FUNCTION_MEMORY: 1024\n DO_BACKFILL: false\n IMG_SIZES: 200x200\n IMG_BUCKET: ${images.name}\n systemParams:\n firebaseextensions.v1beta.function/location:\n firebaseextensions.v1beta.function/maxInstances: 3000\n firebaseextensions.v1beta.function/minInstances: 0\n firebaseextensions.v1beta.function/vpcConnectorEgressSettings: VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\n allowedEventTypes:\n - firebase.extensions.storage-resize-images.v1.onCompletion\n eventarcChannel: projects/my-project-name/locations//channels/firebase\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/instances/{{instance_id}}`\n\n* `{{project}}/{{instance_id}}`\n\n* `{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/extensionsInstance:ExtensionsInstance default projects/{{project}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/extensionsInstance:ExtensionsInstance default {{project}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/extensionsInstance:ExtensionsInstance default {{instance_id}}\n```\n\n", "properties": { "config": { "$ref": "#/types/gcp:firebase/ExtensionsInstanceConfig:ExtensionsInstanceConfig", @@ -192031,7 +192031,7 @@ } }, "gcp:firebase/hostingCustomDomain:HostingCustomDomain": { - "description": "## Example Usage\n\n### Firebasehosting Customdomain Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingCustomDomain(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n customDomain: \"custom.domain.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingCustomDomain(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\",\n custom_domain=\"custom.domain.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 @default = new Gcp.Firebase.HostingCustomDomain(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n CustomDomain = \"custom.domain.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewHostingCustomDomain(ctx, \"default\", \u0026firebase.HostingCustomDomainArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t\tCustomDomain: pulumi.String(\"custom.domain.com\"),\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.firebase.HostingCustomDomain;\nimport com.pulumi.gcp.firebase.HostingCustomDomainArgs;\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 HostingCustomDomain(\"default\", HostingCustomDomainArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .customDomain(\"custom.domain.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingCustomDomain\n properties:\n project: my-project-name\n siteId: site-id\n customDomain: custom.domain.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Customdomain Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id-full\",\n});\nconst defaultHostingCustomDomain = new gcp.firebase.HostingCustomDomain(\"default\", {\n project: \"my-project-name\",\n siteId: _default.siteId,\n customDomain: \"source.domain.com\",\n certPreference: \"GROUPED\",\n redirectTarget: \"destination.domain.com\",\n waitDnsVerification: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id-full\")\ndefault_hosting_custom_domain = gcp.firebase.HostingCustomDomain(\"default\",\n project=\"my-project-name\",\n site_id=default.site_id,\n custom_domain=\"source.domain.com\",\n cert_preference=\"GROUPED\",\n redirect_target=\"destination.domain.com\",\n wait_dns_verification=False)\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.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id-full\",\n });\n\n var defaultHostingCustomDomain = new Gcp.Firebase.HostingCustomDomain(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = @default.SiteId,\n CustomDomain = \"source.domain.com\",\n CertPreference = \"GROUPED\",\n RedirectTarget = \"destination.domain.com\",\n WaitDnsVerification = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id-full\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingCustomDomain(ctx, \"default\", \u0026firebase.HostingCustomDomainArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: _default.SiteId,\n\t\t\tCustomDomain: pulumi.String(\"source.domain.com\"),\n\t\t\tCertPreference: pulumi.String(\"GROUPED\"),\n\t\t\tRedirectTarget: pulumi.String(\"destination.domain.com\"),\n\t\t\tWaitDnsVerification: pulumi.Bool(false),\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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingCustomDomain;\nimport com.pulumi.gcp.firebase.HostingCustomDomainArgs;\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 HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id-full\")\n .build());\n\n var defaultHostingCustomDomain = new HostingCustomDomain(\"defaultHostingCustomDomain\", HostingCustomDomainArgs.builder()\n .project(\"my-project-name\")\n .siteId(default_.siteId())\n .customDomain(\"source.domain.com\")\n .certPreference(\"GROUPED\")\n .redirectTarget(\"destination.domain.com\")\n .waitDnsVerification(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id-full\n defaultHostingCustomDomain:\n type: gcp:firebase:HostingCustomDomain\n name: default\n properties:\n project: my-project-name\n siteId: ${default.siteId}\n customDomain: source.domain.com\n certPreference: GROUPED\n redirectTarget: destination.domain.com\n waitDnsVerification: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Customdomain Cloud Run\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultService = new gcp.cloudrunv2.Service(\"default\", {\n project: \"my-project-name\",\n name: \"cloud-run-service-via-hosting\",\n location: \"us-central1\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n rewrites: [{\n glob: \"/hello/**\",\n run: {\n serviceId: defaultService.name,\n region: defaultService.location,\n },\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Cloud Run Integration\",\n});\nconst defaultHostingCustomDomain = new gcp.firebase.HostingCustomDomain(\"default\", {\n project: \"my-project-name\",\n siteId: _default.siteId,\n customDomain: \"run.custom.domain.com\",\n waitDnsVerification: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_service = gcp.cloudrunv2.Service(\"default\",\n project=\"my-project-name\",\n name=\"cloud-run-service-via-hosting\",\n location=\"us-central1\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n })\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"rewrites\": [{\n \"glob\": \"/hello/**\",\n \"run\": {\n \"serviceId\": default_service.name,\n \"region\": default_service.location,\n },\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Cloud Run Integration\")\ndefault_hosting_custom_domain = gcp.firebase.HostingCustomDomain(\"default\",\n project=\"my-project-name\",\n site_id=default.site_id,\n custom_domain=\"run.custom.domain.com\",\n wait_dns_verification=False)\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.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultService = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Project = \"my-project-name\",\n Name = \"cloud-run-service-via-hosting\",\n Location = \"us-central1\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Rewrites = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRewriteArgs\n {\n Glob = \"/hello/**\",\n Run = new Gcp.Firebase.Inputs.HostingVersionConfigRewriteRunArgs\n {\n ServiceId = defaultService.Name,\n Region = defaultService.Location,\n },\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Cloud Run Integration\",\n });\n\n var defaultHostingCustomDomain = new Gcp.Firebase.HostingCustomDomain(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = @default.SiteId,\n CustomDomain = \"run.custom.domain.com\",\n WaitDnsVerification = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultService, err := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cloud-run-service-via-hosting\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\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\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRewrites: firebase.HostingVersionConfigRewriteArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRewriteArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/hello/**\"),\n\t\t\t\t\t\tRun: \u0026firebase.HostingVersionConfigRewriteRunArgs{\n\t\t\t\t\t\t\tServiceId: defaultService.Name,\n\t\t\t\t\t\t\tRegion: defaultService.Location,\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 = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Cloud Run Integration\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingCustomDomain(ctx, \"default\", \u0026firebase.HostingCustomDomainArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: _default.SiteId,\n\t\t\tCustomDomain: pulumi.String(\"run.custom.domain.com\"),\n\t\t\tWaitDnsVerification: pulumi.Bool(false),\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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport com.pulumi.gcp.firebase.HostingCustomDomain;\nimport com.pulumi.gcp.firebase.HostingCustomDomainArgs;\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 HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultService = new Service(\"defaultService\", ServiceArgs.builder()\n .project(\"my-project-name\")\n .name(\"cloud-run-service-via-hosting\")\n .location(\"us-central1\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .rewrites(HostingVersionConfigRewriteArgs.builder()\n .glob(\"/hello/**\")\n .run(HostingVersionConfigRewriteRunArgs.builder()\n .serviceId(defaultService.name())\n .region(defaultService.location())\n .build())\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Cloud Run Integration\")\n .build());\n\n var defaultHostingCustomDomain = new HostingCustomDomain(\"defaultHostingCustomDomain\", HostingCustomDomainArgs.builder()\n .project(\"my-project-name\")\n .siteId(default_.siteId())\n .customDomain(\"run.custom.domain.com\")\n .waitDnsVerification(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultService:\n type: gcp:cloudrunv2:Service\n name: default\n properties:\n project: my-project-name\n name: cloud-run-service-via-hosting\n location: us-central1\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n rewrites:\n - glob: /hello/**\n run:\n serviceId: ${defaultService.name}\n region: ${defaultService.location}\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Cloud Run Integration\n defaultHostingCustomDomain:\n type: gcp:firebase:HostingCustomDomain\n name: default\n properties:\n project: my-project-name\n siteId: ${default.siteId}\n customDomain: run.custom.domain.com\n waitDnsVerification: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCustomDomain can be imported using any of these accepted formats:\n\n* `projects/{{project}}/sites/{{site_id}}/customDomains/{{custom_domain}}`\n\n* `sites/{{site_id}}/customDomains/{{custom_domain}}`\n\n* `{{project}}/{{site_id}}/{{custom_domain}}`\n\n* `{{site_id}}/{{custom_domain}}`\n\nWhen using the `pulumi import` command, CustomDomain can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default projects/{{project}}/sites/{{site_id}}/customDomains/{{custom_domain}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default sites/{{site_id}}/customDomains/{{custom_domain}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default {{project}}/{{site_id}}/{{custom_domain}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default {{site_id}}/{{custom_domain}}\n```\n\n", + "description": "## Example Usage\n\n### Firebasehosting Customdomain Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingCustomDomain(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n customDomain: \"custom.domain.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingCustomDomain(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\",\n custom_domain=\"custom.domain.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 @default = new Gcp.Firebase.HostingCustomDomain(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n CustomDomain = \"custom.domain.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewHostingCustomDomain(ctx, \"default\", \u0026firebase.HostingCustomDomainArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t\tCustomDomain: pulumi.String(\"custom.domain.com\"),\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.firebase.HostingCustomDomain;\nimport com.pulumi.gcp.firebase.HostingCustomDomainArgs;\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 HostingCustomDomain(\"default\", HostingCustomDomainArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .customDomain(\"custom.domain.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingCustomDomain\n properties:\n project: my-project-name\n siteId: site-id\n customDomain: custom.domain.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Customdomain Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id-full\",\n});\nconst defaultHostingCustomDomain = new gcp.firebase.HostingCustomDomain(\"default\", {\n project: \"my-project-name\",\n siteId: _default.siteId,\n customDomain: \"source.domain.com\",\n certPreference: \"GROUPED\",\n redirectTarget: \"destination.domain.com\",\n waitDnsVerification: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id-full\")\ndefault_hosting_custom_domain = gcp.firebase.HostingCustomDomain(\"default\",\n project=\"my-project-name\",\n site_id=default.site_id,\n custom_domain=\"source.domain.com\",\n cert_preference=\"GROUPED\",\n redirect_target=\"destination.domain.com\",\n wait_dns_verification=False)\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.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id-full\",\n });\n\n var defaultHostingCustomDomain = new Gcp.Firebase.HostingCustomDomain(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = @default.SiteId,\n CustomDomain = \"source.domain.com\",\n CertPreference = \"GROUPED\",\n RedirectTarget = \"destination.domain.com\",\n WaitDnsVerification = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id-full\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingCustomDomain(ctx, \"default\", \u0026firebase.HostingCustomDomainArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: _default.SiteId,\n\t\t\tCustomDomain: pulumi.String(\"source.domain.com\"),\n\t\t\tCertPreference: pulumi.String(\"GROUPED\"),\n\t\t\tRedirectTarget: pulumi.String(\"destination.domain.com\"),\n\t\t\tWaitDnsVerification: pulumi.Bool(false),\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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingCustomDomain;\nimport com.pulumi.gcp.firebase.HostingCustomDomainArgs;\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 HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id-full\")\n .build());\n\n var defaultHostingCustomDomain = new HostingCustomDomain(\"defaultHostingCustomDomain\", HostingCustomDomainArgs.builder()\n .project(\"my-project-name\")\n .siteId(default_.siteId())\n .customDomain(\"source.domain.com\")\n .certPreference(\"GROUPED\")\n .redirectTarget(\"destination.domain.com\")\n .waitDnsVerification(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id-full\n defaultHostingCustomDomain:\n type: gcp:firebase:HostingCustomDomain\n name: default\n properties:\n project: my-project-name\n siteId: ${default.siteId}\n customDomain: source.domain.com\n certPreference: GROUPED\n redirectTarget: destination.domain.com\n waitDnsVerification: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Customdomain Cloud Run\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultService = new gcp.cloudrunv2.Service(\"default\", {\n project: \"my-project-name\",\n name: \"cloud-run-service-via-hosting\",\n location: \"us-central1\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n rewrites: [{\n glob: \"/hello/**\",\n run: {\n serviceId: defaultService.name,\n region: defaultService.location,\n },\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Cloud Run Integration\",\n});\nconst defaultHostingCustomDomain = new gcp.firebase.HostingCustomDomain(\"default\", {\n project: \"my-project-name\",\n siteId: _default.siteId,\n customDomain: \"run.custom.domain.com\",\n waitDnsVerification: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_service = gcp.cloudrunv2.Service(\"default\",\n project=\"my-project-name\",\n name=\"cloud-run-service-via-hosting\",\n location=\"us-central1\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n })\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"rewrites\": [{\n \"glob\": \"/hello/**\",\n \"run\": {\n \"service_id\": default_service.name,\n \"region\": default_service.location,\n },\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Cloud Run Integration\")\ndefault_hosting_custom_domain = gcp.firebase.HostingCustomDomain(\"default\",\n project=\"my-project-name\",\n site_id=default.site_id,\n custom_domain=\"run.custom.domain.com\",\n wait_dns_verification=False)\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.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultService = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Project = \"my-project-name\",\n Name = \"cloud-run-service-via-hosting\",\n Location = \"us-central1\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Rewrites = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRewriteArgs\n {\n Glob = \"/hello/**\",\n Run = new Gcp.Firebase.Inputs.HostingVersionConfigRewriteRunArgs\n {\n ServiceId = defaultService.Name,\n Region = defaultService.Location,\n },\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Cloud Run Integration\",\n });\n\n var defaultHostingCustomDomain = new Gcp.Firebase.HostingCustomDomain(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = @default.SiteId,\n CustomDomain = \"run.custom.domain.com\",\n WaitDnsVerification = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultService, err := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cloud-run-service-via-hosting\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\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\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRewrites: firebase.HostingVersionConfigRewriteArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRewriteArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/hello/**\"),\n\t\t\t\t\t\tRun: \u0026firebase.HostingVersionConfigRewriteRunArgs{\n\t\t\t\t\t\t\tServiceId: defaultService.Name,\n\t\t\t\t\t\t\tRegion: defaultService.Location,\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 = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Cloud Run Integration\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingCustomDomain(ctx, \"default\", \u0026firebase.HostingCustomDomainArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: _default.SiteId,\n\t\t\tCustomDomain: pulumi.String(\"run.custom.domain.com\"),\n\t\t\tWaitDnsVerification: pulumi.Bool(false),\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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport com.pulumi.gcp.firebase.HostingCustomDomain;\nimport com.pulumi.gcp.firebase.HostingCustomDomainArgs;\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 HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultService = new Service(\"defaultService\", ServiceArgs.builder()\n .project(\"my-project-name\")\n .name(\"cloud-run-service-via-hosting\")\n .location(\"us-central1\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .rewrites(HostingVersionConfigRewriteArgs.builder()\n .glob(\"/hello/**\")\n .run(HostingVersionConfigRewriteRunArgs.builder()\n .serviceId(defaultService.name())\n .region(defaultService.location())\n .build())\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Cloud Run Integration\")\n .build());\n\n var defaultHostingCustomDomain = new HostingCustomDomain(\"defaultHostingCustomDomain\", HostingCustomDomainArgs.builder()\n .project(\"my-project-name\")\n .siteId(default_.siteId())\n .customDomain(\"run.custom.domain.com\")\n .waitDnsVerification(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultService:\n type: gcp:cloudrunv2:Service\n name: default\n properties:\n project: my-project-name\n name: cloud-run-service-via-hosting\n location: us-central1\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n rewrites:\n - glob: /hello/**\n run:\n serviceId: ${defaultService.name}\n region: ${defaultService.location}\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Cloud Run Integration\n defaultHostingCustomDomain:\n type: gcp:firebase:HostingCustomDomain\n name: default\n properties:\n project: my-project-name\n siteId: ${default.siteId}\n customDomain: run.custom.domain.com\n waitDnsVerification: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCustomDomain can be imported using any of these accepted formats:\n\n* `projects/{{project}}/sites/{{site_id}}/customDomains/{{custom_domain}}`\n\n* `sites/{{site_id}}/customDomains/{{custom_domain}}`\n\n* `{{project}}/{{site_id}}/{{custom_domain}}`\n\n* `{{site_id}}/{{custom_domain}}`\n\nWhen using the `pulumi import` command, CustomDomain can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default projects/{{project}}/sites/{{site_id}}/customDomains/{{custom_domain}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default sites/{{site_id}}/customDomains/{{custom_domain}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default {{project}}/{{site_id}}/{{custom_domain}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default {{site_id}}/{{custom_domain}}\n```\n\n", "properties": { "certPreference": { "type": "string", @@ -192257,7 +192257,7 @@ } }, "gcp:firebase/hostingRelease:HostingRelease": { - "description": "## Example Usage\n\n### Firebasehosting Release In Site\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n redirects: [{\n glob: \"/google/**\",\n statusCode: 302,\n location: \"https://www.google.com\",\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Test release\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"redirects\": [{\n \"glob\": \"/google/**\",\n \"statusCode\": 302,\n \"location\": \"https://www.google.com\",\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Test release\")\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.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Redirects = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRedirectArgs\n {\n Glob = \"/google/**\",\n StatusCode = 302,\n Location = \"https://www.google.com\",\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Test release\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRedirects: firebase.HostingVersionConfigRedirectArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRedirectArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/google/**\"),\n\t\t\t\t\t\tStatusCode: pulumi.Int(302),\n\t\t\t\t\t\tLocation: pulumi.String(\"https://www.google.com\"),\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 = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Test release\"),\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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\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 HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .redirects(HostingVersionConfigRedirectArgs.builder()\n .glob(\"/google/**\")\n .statusCode(302)\n .location(\"https://www.google.com\")\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Test release\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n redirects:\n - glob: /google/**\n statusCode: 302\n location: https://www.google.com\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Test release\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Release In Channel\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-with-channel\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n redirects: [{\n glob: \"/google/**\",\n statusCode: 302,\n location: \"https://www.google.com\",\n }],\n },\n});\nconst defaultHostingChannel = new gcp.firebase.HostingChannel(\"default\", {\n siteId: _default.siteId,\n channelId: \"channel-id\",\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n channelId: defaultHostingChannel.channelId,\n versionName: defaultHostingVersion.name,\n message: \"Test release in channel\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-with-channel\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"redirects\": [{\n \"glob\": \"/google/**\",\n \"statusCode\": 302,\n \"location\": \"https://www.google.com\",\n }],\n })\ndefault_hosting_channel = gcp.firebase.HostingChannel(\"default\",\n site_id=default.site_id,\n channel_id=\"channel-id\")\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n channel_id=default_hosting_channel.channel_id,\n version_name=default_hosting_version.name,\n message=\"Test release in channel\")\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.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-with-channel\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Redirects = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRedirectArgs\n {\n Glob = \"/google/**\",\n StatusCode = 302,\n Location = \"https://www.google.com\",\n },\n },\n },\n });\n\n var defaultHostingChannel = new Gcp.Firebase.HostingChannel(\"default\", new()\n {\n SiteId = @default.SiteId,\n ChannelId = \"channel-id\",\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n ChannelId = defaultHostingChannel.ChannelId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Test release in channel\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-with-channel\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRedirects: firebase.HostingVersionConfigRedirectArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRedirectArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/google/**\"),\n\t\t\t\t\t\tStatusCode: pulumi.Int(302),\n\t\t\t\t\t\tLocation: pulumi.String(\"https://www.google.com\"),\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\tdefaultHostingChannel, err := firebase.NewHostingChannel(ctx, \"default\", \u0026firebase.HostingChannelArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tChannelId: pulumi.String(\"channel-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tChannelId: defaultHostingChannel.ChannelId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Test release in channel\"),\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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingChannel;\nimport com.pulumi.gcp.firebase.HostingChannelArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\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 HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-with-channel\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .redirects(HostingVersionConfigRedirectArgs.builder()\n .glob(\"/google/**\")\n .statusCode(302)\n .location(\"https://www.google.com\")\n .build())\n .build())\n .build());\n\n var defaultHostingChannel = new HostingChannel(\"defaultHostingChannel\", HostingChannelArgs.builder()\n .siteId(default_.siteId())\n .channelId(\"channel-id\")\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .channelId(defaultHostingChannel.channelId())\n .versionName(defaultHostingVersion.name())\n .message(\"Test release in channel\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-with-channel\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n redirects:\n - glob: /google/**\n statusCode: 302\n location: https://www.google.com\n defaultHostingChannel:\n type: gcp:firebase:HostingChannel\n name: default\n properties:\n siteId: ${default.siteId}\n channelId: channel-id\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n channelId: ${defaultHostingChannel.channelId}\n versionName: ${defaultHostingVersion.name}\n message: Test release in channel\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Release Disable\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n type: \"SITE_DISABLE\",\n message: \"Take down site\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n type=\"SITE_DISABLE\",\n message=\"Take down site\")\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.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n Type = \"SITE_DISABLE\",\n Message = \"Take down site\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tType: pulumi.String(\"SITE_DISABLE\"),\n\t\t\tMessage: pulumi.String(\"Take down site\"),\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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\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 HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .type(\"SITE_DISABLE\")\n .message(\"Take down site\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n type: SITE_DISABLE\n message: Take down site\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRelease can be imported using any of these accepted formats:\n\n* `sites/{{site_id}}/channels/{{channel_id}}/releases/{{release_id}}`\n\n* `sites/{{site_id}}/releases/{{release_id}}`\n\n* `{{site_id}}/{{channel_id}}/{{release_id}}`\n\n* `{{site_id}}/{{release_id}}`\n\nWhen using the `pulumi import` command, Release can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/hostingRelease:HostingRelease default sites/{{site_id}}/channels/{{channel_id}}/releases/{{release_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingRelease:HostingRelease default sites/{{site_id}}/releases/{{release_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingRelease:HostingRelease default {{site_id}}/{{channel_id}}/{{release_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingRelease:HostingRelease default {{site_id}}/{{release_id}}\n```\n\n", + "description": "## Example Usage\n\n### Firebasehosting Release In Site\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n redirects: [{\n glob: \"/google/**\",\n statusCode: 302,\n location: \"https://www.google.com\",\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Test release\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"redirects\": [{\n \"glob\": \"/google/**\",\n \"status_code\": 302,\n \"location\": \"https://www.google.com\",\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Test release\")\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.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Redirects = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRedirectArgs\n {\n Glob = \"/google/**\",\n StatusCode = 302,\n Location = \"https://www.google.com\",\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Test release\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRedirects: firebase.HostingVersionConfigRedirectArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRedirectArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/google/**\"),\n\t\t\t\t\t\tStatusCode: pulumi.Int(302),\n\t\t\t\t\t\tLocation: pulumi.String(\"https://www.google.com\"),\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 = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Test release\"),\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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\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 HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .redirects(HostingVersionConfigRedirectArgs.builder()\n .glob(\"/google/**\")\n .statusCode(302)\n .location(\"https://www.google.com\")\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Test release\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n redirects:\n - glob: /google/**\n statusCode: 302\n location: https://www.google.com\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Test release\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Release In Channel\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-with-channel\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n redirects: [{\n glob: \"/google/**\",\n statusCode: 302,\n location: \"https://www.google.com\",\n }],\n },\n});\nconst defaultHostingChannel = new gcp.firebase.HostingChannel(\"default\", {\n siteId: _default.siteId,\n channelId: \"channel-id\",\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n channelId: defaultHostingChannel.channelId,\n versionName: defaultHostingVersion.name,\n message: \"Test release in channel\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-with-channel\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"redirects\": [{\n \"glob\": \"/google/**\",\n \"status_code\": 302,\n \"location\": \"https://www.google.com\",\n }],\n })\ndefault_hosting_channel = gcp.firebase.HostingChannel(\"default\",\n site_id=default.site_id,\n channel_id=\"channel-id\")\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n channel_id=default_hosting_channel.channel_id,\n version_name=default_hosting_version.name,\n message=\"Test release in channel\")\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.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-with-channel\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Redirects = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRedirectArgs\n {\n Glob = \"/google/**\",\n StatusCode = 302,\n Location = \"https://www.google.com\",\n },\n },\n },\n });\n\n var defaultHostingChannel = new Gcp.Firebase.HostingChannel(\"default\", new()\n {\n SiteId = @default.SiteId,\n ChannelId = \"channel-id\",\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n ChannelId = defaultHostingChannel.ChannelId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Test release in channel\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-with-channel\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRedirects: firebase.HostingVersionConfigRedirectArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRedirectArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/google/**\"),\n\t\t\t\t\t\tStatusCode: pulumi.Int(302),\n\t\t\t\t\t\tLocation: pulumi.String(\"https://www.google.com\"),\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\tdefaultHostingChannel, err := firebase.NewHostingChannel(ctx, \"default\", \u0026firebase.HostingChannelArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tChannelId: pulumi.String(\"channel-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tChannelId: defaultHostingChannel.ChannelId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Test release in channel\"),\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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingChannel;\nimport com.pulumi.gcp.firebase.HostingChannelArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\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 HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-with-channel\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .redirects(HostingVersionConfigRedirectArgs.builder()\n .glob(\"/google/**\")\n .statusCode(302)\n .location(\"https://www.google.com\")\n .build())\n .build())\n .build());\n\n var defaultHostingChannel = new HostingChannel(\"defaultHostingChannel\", HostingChannelArgs.builder()\n .siteId(default_.siteId())\n .channelId(\"channel-id\")\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .channelId(defaultHostingChannel.channelId())\n .versionName(defaultHostingVersion.name())\n .message(\"Test release in channel\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-with-channel\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n redirects:\n - glob: /google/**\n statusCode: 302\n location: https://www.google.com\n defaultHostingChannel:\n type: gcp:firebase:HostingChannel\n name: default\n properties:\n siteId: ${default.siteId}\n channelId: channel-id\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n channelId: ${defaultHostingChannel.channelId}\n versionName: ${defaultHostingVersion.name}\n message: Test release in channel\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Release Disable\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n type: \"SITE_DISABLE\",\n message: \"Take down site\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n type=\"SITE_DISABLE\",\n message=\"Take down site\")\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.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n Type = \"SITE_DISABLE\",\n Message = \"Take down site\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tType: pulumi.String(\"SITE_DISABLE\"),\n\t\t\tMessage: pulumi.String(\"Take down site\"),\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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\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 HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .type(\"SITE_DISABLE\")\n .message(\"Take down site\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n type: SITE_DISABLE\n message: Take down site\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRelease can be imported using any of these accepted formats:\n\n* `sites/{{site_id}}/channels/{{channel_id}}/releases/{{release_id}}`\n\n* `sites/{{site_id}}/releases/{{release_id}}`\n\n* `{{site_id}}/{{channel_id}}/{{release_id}}`\n\n* `{{site_id}}/{{release_id}}`\n\nWhen using the `pulumi import` command, Release can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/hostingRelease:HostingRelease default sites/{{site_id}}/channels/{{channel_id}}/releases/{{release_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingRelease:HostingRelease default sites/{{site_id}}/releases/{{release_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingRelease:HostingRelease default {{site_id}}/{{channel_id}}/{{release_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingRelease:HostingRelease default {{site_id}}/{{release_id}}\n```\n\n", "properties": { "channelId": { "type": "string", @@ -192439,7 +192439,7 @@ } }, "gcp:firebase/hostingVersion:HostingVersion": { - "description": "## Example Usage\n\n### Firebasehosting Version Redirect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n redirects: [{\n glob: \"/google/**\",\n statusCode: 302,\n location: \"https://www.google.com\",\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Redirect to Google\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"redirects\": [{\n \"glob\": \"/google/**\",\n \"statusCode\": 302,\n \"location\": \"https://www.google.com\",\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Redirect to Google\")\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.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Redirects = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRedirectArgs\n {\n Glob = \"/google/**\",\n StatusCode = 302,\n Location = \"https://www.google.com\",\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Redirect to Google\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRedirects: firebase.HostingVersionConfigRedirectArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRedirectArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/google/**\"),\n\t\t\t\t\t\tStatusCode: pulumi.Int(302),\n\t\t\t\t\t\tLocation: pulumi.String(\"https://www.google.com\"),\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 = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Redirect to Google\"),\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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\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 HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .redirects(HostingVersionConfigRedirectArgs.builder()\n .glob(\"/google/**\")\n .statusCode(302)\n .location(\"https://www.google.com\")\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Redirect to Google\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n redirects:\n - glob: /google/**\n statusCode: 302\n location: https://www.google.com\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Redirect to Google\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Version Path\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n rewrites: [{\n glob: \"**\",\n path: \"/index.html\",\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Path Rewrite\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"rewrites\": [{\n \"glob\": \"**\",\n \"path\": \"/index.html\",\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Path Rewrite\")\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.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Rewrites = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRewriteArgs\n {\n Glob = \"**\",\n Path = \"/index.html\",\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Path Rewrite\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRewrites: firebase.HostingVersionConfigRewriteArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRewriteArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"**\"),\n\t\t\t\t\t\tPath: pulumi.String(\"/index.html\"),\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 = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Path Rewrite\"),\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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\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 HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .rewrites(HostingVersionConfigRewriteArgs.builder()\n .glob(\"**\")\n .path(\"/index.html\")\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Path Rewrite\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n rewrites:\n - glob: '**'\n path: /index.html\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Path Rewrite\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Version Cloud Run\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultService = new gcp.cloudrunv2.Service(\"default\", {\n project: \"my-project-name\",\n name: \"cloud-run-service-via-hosting\",\n location: \"us-central1\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n rewrites: [{\n glob: \"/hello/**\",\n run: {\n serviceId: defaultService.name,\n region: defaultService.location,\n },\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Cloud Run Integration\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_service = gcp.cloudrunv2.Service(\"default\",\n project=\"my-project-name\",\n name=\"cloud-run-service-via-hosting\",\n location=\"us-central1\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n })\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"rewrites\": [{\n \"glob\": \"/hello/**\",\n \"run\": {\n \"serviceId\": default_service.name,\n \"region\": default_service.location,\n },\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Cloud Run Integration\")\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.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultService = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Project = \"my-project-name\",\n Name = \"cloud-run-service-via-hosting\",\n Location = \"us-central1\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Rewrites = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRewriteArgs\n {\n Glob = \"/hello/**\",\n Run = new Gcp.Firebase.Inputs.HostingVersionConfigRewriteRunArgs\n {\n ServiceId = defaultService.Name,\n Region = defaultService.Location,\n },\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Cloud Run Integration\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultService, err := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cloud-run-service-via-hosting\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\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\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRewrites: firebase.HostingVersionConfigRewriteArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRewriteArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/hello/**\"),\n\t\t\t\t\t\tRun: \u0026firebase.HostingVersionConfigRewriteRunArgs{\n\t\t\t\t\t\t\tServiceId: defaultService.Name,\n\t\t\t\t\t\t\tRegion: defaultService.Location,\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 = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Cloud Run Integration\"),\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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\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 HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultService = new Service(\"defaultService\", ServiceArgs.builder()\n .project(\"my-project-name\")\n .name(\"cloud-run-service-via-hosting\")\n .location(\"us-central1\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .rewrites(HostingVersionConfigRewriteArgs.builder()\n .glob(\"/hello/**\")\n .run(HostingVersionConfigRewriteRunArgs.builder()\n .serviceId(defaultService.name())\n .region(defaultService.location())\n .build())\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Cloud Run Integration\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultService:\n type: gcp:cloudrunv2:Service\n name: default\n properties:\n project: my-project-name\n name: cloud-run-service-via-hosting\n location: us-central1\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n rewrites:\n - glob: /hello/**\n run:\n serviceId: ${defaultService.name}\n region: ${defaultService.location}\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Cloud Run Integration\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Version Cloud Functions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n project: \"my-project-name\",\n name: \"site-id-function-source\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctions.Function(\"function\", {\n project: \"my-project-name\",\n name: \"cloud-function-via-hosting\",\n description: \"A Cloud Function connected to Firebase Hosing\",\n runtime: \"nodejs16\",\n availableMemoryMb: 128,\n sourceArchiveBucket: bucket.name,\n sourceArchiveObject: object.name,\n triggerHttp: true,\n entryPoint: \"helloHttp\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n rewrites: [{\n glob: \"/hello/**\",\n \"function\": _function.name,\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Cloud Functions Integration\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\nbucket = gcp.storage.Bucket(\"bucket\",\n project=\"my-project-name\",\n name=\"site-id-function-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctions.Function(\"function\",\n project=\"my-project-name\",\n name=\"cloud-function-via-hosting\",\n description=\"A Cloud Function connected to Firebase Hosing\",\n runtime=\"nodejs16\",\n available_memory_mb=128,\n source_archive_bucket=bucket.name,\n source_archive_object=object.name,\n trigger_http=True,\n entry_point=\"helloHttp\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"rewrites\": [{\n \"glob\": \"/hello/**\",\n \"function\": function.name,\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Cloud Functions Integration\")\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.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Project = \"my-project-name\",\n Name = \"site-id-function-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctions.Function(\"function\", new()\n {\n Project = \"my-project-name\",\n Name = \"cloud-function-via-hosting\",\n Description = \"A Cloud Function connected to Firebase Hosing\",\n Runtime = \"nodejs16\",\n AvailableMemoryMb = 128,\n SourceArchiveBucket = bucket.Name,\n SourceArchiveObject = @object.Name,\n TriggerHttp = true,\n EntryPoint = \"helloHttp\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Rewrites = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRewriteArgs\n {\n Glob = \"/hello/**\",\n Function = function.Name,\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Cloud Functions Integration\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctions\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\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: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"site-id-function-source\"),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunction, err := cloudfunctions.NewFunction(ctx, \"function\", \u0026cloudfunctions.FunctionArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cloud-function-via-hosting\"),\n\t\t\tDescription: pulumi.String(\"A Cloud Function connected to Firebase Hosing\"),\n\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\tAvailableMemoryMb: pulumi.Int(128),\n\t\t\tSourceArchiveBucket: bucket.Name,\n\t\t\tSourceArchiveObject: object.Name,\n\t\t\tTriggerHttp: pulumi.Bool(true),\n\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRewrites: firebase.HostingVersionConfigRewriteArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRewriteArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/hello/**\"),\n\t\t\t\t\t\tFunction: function.Name,\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 = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Cloud Functions Integration\"),\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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\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.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\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 default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .project(\"my-project-name\")\n .name(\"site-id-function-source\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .project(\"my-project-name\")\n .name(\"cloud-function-via-hosting\")\n .description(\"A Cloud Function connected to Firebase Hosing\")\n .runtime(\"nodejs16\")\n .availableMemoryMb(128)\n .sourceArchiveBucket(bucket.name())\n .sourceArchiveObject(object.name())\n .triggerHttp(true)\n .entryPoint(\"helloHttp\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .rewrites(HostingVersionConfigRewriteArgs.builder()\n .glob(\"/hello/**\")\n .function(function.name())\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Cloud Functions Integration\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n bucket:\n type: gcp:storage:Bucket\n properties:\n project: my-project-name\n name: site-id-function-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctions:Function\n properties:\n project: my-project-name\n name: cloud-function-via-hosting\n description: A Cloud Function connected to Firebase Hosing\n runtime: nodejs16\n availableMemoryMb: 128\n sourceArchiveBucket: ${bucket.name}\n sourceArchiveObject: ${object.name}\n triggerHttp: true\n entryPoint: helloHttp\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n rewrites:\n - glob: /hello/**\n function: ${function.name}\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Cloud Functions Integration\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVersion can be imported using any of these accepted formats:\n\n* `sites/{{site_id}}/versions/{{version_id}}`\n\n* `{{site_id}}/{{version_id}}`\n\nWhen using the `pulumi import` command, Version can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/hostingVersion:HostingVersion default sites/{{site_id}}/versions/{{version_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingVersion:HostingVersion default {{site_id}}/{{version_id}}\n```\n\n", + "description": "## Example Usage\n\n### Firebasehosting Version Redirect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n redirects: [{\n glob: \"/google/**\",\n statusCode: 302,\n location: \"https://www.google.com\",\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Redirect to Google\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"redirects\": [{\n \"glob\": \"/google/**\",\n \"status_code\": 302,\n \"location\": \"https://www.google.com\",\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Redirect to Google\")\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.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Redirects = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRedirectArgs\n {\n Glob = \"/google/**\",\n StatusCode = 302,\n Location = \"https://www.google.com\",\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Redirect to Google\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRedirects: firebase.HostingVersionConfigRedirectArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRedirectArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/google/**\"),\n\t\t\t\t\t\tStatusCode: pulumi.Int(302),\n\t\t\t\t\t\tLocation: pulumi.String(\"https://www.google.com\"),\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 = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Redirect to Google\"),\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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\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 HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .redirects(HostingVersionConfigRedirectArgs.builder()\n .glob(\"/google/**\")\n .statusCode(302)\n .location(\"https://www.google.com\")\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Redirect to Google\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n redirects:\n - glob: /google/**\n statusCode: 302\n location: https://www.google.com\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Redirect to Google\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Version Path\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n rewrites: [{\n glob: \"**\",\n path: \"/index.html\",\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Path Rewrite\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"rewrites\": [{\n \"glob\": \"**\",\n \"path\": \"/index.html\",\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Path Rewrite\")\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.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Rewrites = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRewriteArgs\n {\n Glob = \"**\",\n Path = \"/index.html\",\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Path Rewrite\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRewrites: firebase.HostingVersionConfigRewriteArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRewriteArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"**\"),\n\t\t\t\t\t\tPath: pulumi.String(\"/index.html\"),\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 = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Path Rewrite\"),\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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\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 HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .rewrites(HostingVersionConfigRewriteArgs.builder()\n .glob(\"**\")\n .path(\"/index.html\")\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Path Rewrite\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n rewrites:\n - glob: '**'\n path: /index.html\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Path Rewrite\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Version Cloud Run\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultService = new gcp.cloudrunv2.Service(\"default\", {\n project: \"my-project-name\",\n name: \"cloud-run-service-via-hosting\",\n location: \"us-central1\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n rewrites: [{\n glob: \"/hello/**\",\n run: {\n serviceId: defaultService.name,\n region: defaultService.location,\n },\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Cloud Run Integration\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_service = gcp.cloudrunv2.Service(\"default\",\n project=\"my-project-name\",\n name=\"cloud-run-service-via-hosting\",\n location=\"us-central1\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n })\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"rewrites\": [{\n \"glob\": \"/hello/**\",\n \"run\": {\n \"service_id\": default_service.name,\n \"region\": default_service.location,\n },\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Cloud Run Integration\")\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.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultService = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Project = \"my-project-name\",\n Name = \"cloud-run-service-via-hosting\",\n Location = \"us-central1\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Rewrites = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRewriteArgs\n {\n Glob = \"/hello/**\",\n Run = new Gcp.Firebase.Inputs.HostingVersionConfigRewriteRunArgs\n {\n ServiceId = defaultService.Name,\n Region = defaultService.Location,\n },\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Cloud Run Integration\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\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 := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultService, err := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cloud-run-service-via-hosting\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\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\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRewrites: firebase.HostingVersionConfigRewriteArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRewriteArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/hello/**\"),\n\t\t\t\t\t\tRun: \u0026firebase.HostingVersionConfigRewriteRunArgs{\n\t\t\t\t\t\t\tServiceId: defaultService.Name,\n\t\t\t\t\t\t\tRegion: defaultService.Location,\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 = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Cloud Run Integration\"),\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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\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 HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultService = new Service(\"defaultService\", ServiceArgs.builder()\n .project(\"my-project-name\")\n .name(\"cloud-run-service-via-hosting\")\n .location(\"us-central1\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .rewrites(HostingVersionConfigRewriteArgs.builder()\n .glob(\"/hello/**\")\n .run(HostingVersionConfigRewriteRunArgs.builder()\n .serviceId(defaultService.name())\n .region(defaultService.location())\n .build())\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Cloud Run Integration\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultService:\n type: gcp:cloudrunv2:Service\n name: default\n properties:\n project: my-project-name\n name: cloud-run-service-via-hosting\n location: us-central1\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n rewrites:\n - glob: /hello/**\n run:\n serviceId: ${defaultService.name}\n region: ${defaultService.location}\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Cloud Run Integration\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Version Cloud Functions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n project: \"my-project-name\",\n name: \"site-id-function-source\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctions.Function(\"function\", {\n project: \"my-project-name\",\n name: \"cloud-function-via-hosting\",\n description: \"A Cloud Function connected to Firebase Hosing\",\n runtime: \"nodejs16\",\n availableMemoryMb: 128,\n sourceArchiveBucket: bucket.name,\n sourceArchiveObject: object.name,\n triggerHttp: true,\n entryPoint: \"helloHttp\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n rewrites: [{\n glob: \"/hello/**\",\n \"function\": _function.name,\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Cloud Functions Integration\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\nbucket = gcp.storage.Bucket(\"bucket\",\n project=\"my-project-name\",\n name=\"site-id-function-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctions.Function(\"function\",\n project=\"my-project-name\",\n name=\"cloud-function-via-hosting\",\n description=\"A Cloud Function connected to Firebase Hosing\",\n runtime=\"nodejs16\",\n available_memory_mb=128,\n source_archive_bucket=bucket.name,\n source_archive_object=object.name,\n trigger_http=True,\n entry_point=\"helloHttp\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"rewrites\": [{\n \"glob\": \"/hello/**\",\n \"function\": function.name,\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Cloud Functions Integration\")\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.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Project = \"my-project-name\",\n Name = \"site-id-function-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctions.Function(\"function\", new()\n {\n Project = \"my-project-name\",\n Name = \"cloud-function-via-hosting\",\n Description = \"A Cloud Function connected to Firebase Hosing\",\n Runtime = \"nodejs16\",\n AvailableMemoryMb = 128,\n SourceArchiveBucket = bucket.Name,\n SourceArchiveObject = @object.Name,\n TriggerHttp = true,\n EntryPoint = \"helloHttp\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Rewrites = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRewriteArgs\n {\n Glob = \"/hello/**\",\n Function = function.Name,\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Cloud Functions Integration\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctions\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\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: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"site-id-function-source\"),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunction, err := cloudfunctions.NewFunction(ctx, \"function\", \u0026cloudfunctions.FunctionArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cloud-function-via-hosting\"),\n\t\t\tDescription: pulumi.String(\"A Cloud Function connected to Firebase Hosing\"),\n\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\tAvailableMemoryMb: pulumi.Int(128),\n\t\t\tSourceArchiveBucket: bucket.Name,\n\t\t\tSourceArchiveObject: object.Name,\n\t\t\tTriggerHttp: pulumi.Bool(true),\n\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRewrites: firebase.HostingVersionConfigRewriteArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRewriteArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/hello/**\"),\n\t\t\t\t\t\tFunction: function.Name,\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 = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Cloud Functions Integration\"),\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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\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.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\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 default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .project(\"my-project-name\")\n .name(\"site-id-function-source\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .project(\"my-project-name\")\n .name(\"cloud-function-via-hosting\")\n .description(\"A Cloud Function connected to Firebase Hosing\")\n .runtime(\"nodejs16\")\n .availableMemoryMb(128)\n .sourceArchiveBucket(bucket.name())\n .sourceArchiveObject(object.name())\n .triggerHttp(true)\n .entryPoint(\"helloHttp\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .rewrites(HostingVersionConfigRewriteArgs.builder()\n .glob(\"/hello/**\")\n .function(function.name())\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Cloud Functions Integration\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n bucket:\n type: gcp:storage:Bucket\n properties:\n project: my-project-name\n name: site-id-function-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctions:Function\n properties:\n project: my-project-name\n name: cloud-function-via-hosting\n description: A Cloud Function connected to Firebase Hosing\n runtime: nodejs16\n availableMemoryMb: 128\n sourceArchiveBucket: ${bucket.name}\n sourceArchiveObject: ${object.name}\n triggerHttp: true\n entryPoint: helloHttp\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n rewrites:\n - glob: /hello/**\n function: ${function.name}\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Cloud Functions Integration\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVersion can be imported using any of these accepted formats:\n\n* `sites/{{site_id}}/versions/{{version_id}}`\n\n* `{{site_id}}/{{version_id}}`\n\nWhen using the `pulumi import` command, Version can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/hostingVersion:HostingVersion default sites/{{site_id}}/versions/{{version_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingVersion:HostingVersion default {{site_id}}/{{version_id}}\n```\n\n", "properties": { "config": { "$ref": "#/types/gcp:firebase/HostingVersionConfig:HostingVersionConfig", @@ -192620,7 +192620,7 @@ } }, "gcp:firebase/webApp:WebApp": { - "description": "A Google Cloud Firebase web application instance\n\nTo get more information about WebApp, see:\n\n* [API documentation](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects.webApps)\n* How-to Guides\n * [Official Documentation](https://firebase.google.com/)\n\n## Example Usage\n\n### Firebase Web App Custom Api Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst web = new gcp.projects.ApiKey(\"web\", {\n project: \"my-project-name\",\n name: \"api-key\",\n displayName: \"Display Name\",\n restrictions: {\n browserKeyRestrictions: {\n allowedReferrers: [\"*\"],\n },\n },\n});\nconst _default = new gcp.firebase.WebApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Display Name\",\n apiKeyId: web.uid,\n deletionPolicy: \"DELETE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nweb = gcp.projects.ApiKey(\"web\",\n project=\"my-project-name\",\n name=\"api-key\",\n display_name=\"Display Name\",\n restrictions={\n \"browserKeyRestrictions\": {\n \"allowedReferrers\": [\"*\"],\n },\n })\ndefault = gcp.firebase.WebApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Display Name\",\n api_key_id=web.uid,\n deletion_policy=\"DELETE\")\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 web = new Gcp.Projects.ApiKey(\"web\", new()\n {\n Project = \"my-project-name\",\n Name = \"api-key\",\n DisplayName = \"Display Name\",\n Restrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsArgs\n {\n BrowserKeyRestrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsBrowserKeyRestrictionsArgs\n {\n AllowedReferrers = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n var @default = new Gcp.Firebase.WebApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Display Name\",\n ApiKeyId = web.Uid,\n DeletionPolicy = \"DELETE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tweb, err := projects.NewApiKey(ctx, \"web\", \u0026projects.ApiKeyArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"api-key\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name\"),\n\t\t\tRestrictions: \u0026projects.ApiKeyRestrictionsArgs{\n\t\t\t\tBrowserKeyRestrictions: \u0026projects.ApiKeyRestrictionsBrowserKeyRestrictionsArgs{\n\t\t\t\t\tAllowedReferrers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\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 = firebase.NewWebApp(ctx, \"default\", \u0026firebase.WebAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name\"),\n\t\t\tApiKeyId: web.Uid,\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\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.projects.ApiKey;\nimport com.pulumi.gcp.projects.ApiKeyArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsBrowserKeyRestrictionsArgs;\nimport com.pulumi.gcp.firebase.WebApp;\nimport com.pulumi.gcp.firebase.WebAppArgs;\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 web = new ApiKey(\"web\", ApiKeyArgs.builder()\n .project(\"my-project-name\")\n .name(\"api-key\")\n .displayName(\"Display Name\")\n .restrictions(ApiKeyRestrictionsArgs.builder()\n .browserKeyRestrictions(ApiKeyRestrictionsBrowserKeyRestrictionsArgs.builder()\n .allowedReferrers(\"*\")\n .build())\n .build())\n .build());\n\n var default_ = new WebApp(\"default\", WebAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Display Name\")\n .apiKeyId(web.uid())\n .deletionPolicy(\"DELETE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:WebApp\n properties:\n project: my-project-name\n displayName: Display Name\n apiKeyId: ${web.uid}\n deletionPolicy: DELETE\n web:\n type: gcp:projects:ApiKey\n properties:\n project: my-project-name\n name: api-key\n displayName: Display Name\n restrictions:\n browserKeyRestrictions:\n allowedReferrers:\n - '*'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWebApp can be imported using any of these accepted formats:\n\n* `{{project}} projects/{{project}}/webApps/{{app_id}}`\n\n* `projects/{{project}}/webApps/{{app_id}}`\n\n* `{{project}}/{{project}}/{{app_id}}`\n\n* `webApps/{{app_id}}`\n\n* `{{app_id}}`\n\nWhen using the `pulumi import` command, WebApp can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/webApp:WebApp default {{project}} projects/{{project}}/webApps/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/webApp:WebApp default projects/{{project}}/webApps/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/webApp:WebApp default {{project}}/{{project}}/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/webApp:WebApp default webApps/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/webApp:WebApp default {{app_id}}\n```\n\n", + "description": "A Google Cloud Firebase web application instance\n\nTo get more information about WebApp, see:\n\n* [API documentation](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects.webApps)\n* How-to Guides\n * [Official Documentation](https://firebase.google.com/)\n\n## Example Usage\n\n### Firebase Web App Custom Api Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst web = new gcp.projects.ApiKey(\"web\", {\n project: \"my-project-name\",\n name: \"api-key\",\n displayName: \"Display Name\",\n restrictions: {\n browserKeyRestrictions: {\n allowedReferrers: [\"*\"],\n },\n },\n});\nconst _default = new gcp.firebase.WebApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Display Name\",\n apiKeyId: web.uid,\n deletionPolicy: \"DELETE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nweb = gcp.projects.ApiKey(\"web\",\n project=\"my-project-name\",\n name=\"api-key\",\n display_name=\"Display Name\",\n restrictions={\n \"browser_key_restrictions\": {\n \"allowed_referrers\": [\"*\"],\n },\n })\ndefault = gcp.firebase.WebApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Display Name\",\n api_key_id=web.uid,\n deletion_policy=\"DELETE\")\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 web = new Gcp.Projects.ApiKey(\"web\", new()\n {\n Project = \"my-project-name\",\n Name = \"api-key\",\n DisplayName = \"Display Name\",\n Restrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsArgs\n {\n BrowserKeyRestrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsBrowserKeyRestrictionsArgs\n {\n AllowedReferrers = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n var @default = new Gcp.Firebase.WebApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Display Name\",\n ApiKeyId = web.Uid,\n DeletionPolicy = \"DELETE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tweb, err := projects.NewApiKey(ctx, \"web\", \u0026projects.ApiKeyArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"api-key\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name\"),\n\t\t\tRestrictions: \u0026projects.ApiKeyRestrictionsArgs{\n\t\t\t\tBrowserKeyRestrictions: \u0026projects.ApiKeyRestrictionsBrowserKeyRestrictionsArgs{\n\t\t\t\t\tAllowedReferrers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\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 = firebase.NewWebApp(ctx, \"default\", \u0026firebase.WebAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name\"),\n\t\t\tApiKeyId: web.Uid,\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\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.projects.ApiKey;\nimport com.pulumi.gcp.projects.ApiKeyArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsBrowserKeyRestrictionsArgs;\nimport com.pulumi.gcp.firebase.WebApp;\nimport com.pulumi.gcp.firebase.WebAppArgs;\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 web = new ApiKey(\"web\", ApiKeyArgs.builder()\n .project(\"my-project-name\")\n .name(\"api-key\")\n .displayName(\"Display Name\")\n .restrictions(ApiKeyRestrictionsArgs.builder()\n .browserKeyRestrictions(ApiKeyRestrictionsBrowserKeyRestrictionsArgs.builder()\n .allowedReferrers(\"*\")\n .build())\n .build())\n .build());\n\n var default_ = new WebApp(\"default\", WebAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Display Name\")\n .apiKeyId(web.uid())\n .deletionPolicy(\"DELETE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:WebApp\n properties:\n project: my-project-name\n displayName: Display Name\n apiKeyId: ${web.uid}\n deletionPolicy: DELETE\n web:\n type: gcp:projects:ApiKey\n properties:\n project: my-project-name\n name: api-key\n displayName: Display Name\n restrictions:\n browserKeyRestrictions:\n allowedReferrers:\n - '*'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWebApp can be imported using any of these accepted formats:\n\n* `{{project}} projects/{{project}}/webApps/{{app_id}}`\n\n* `projects/{{project}}/webApps/{{app_id}}`\n\n* `{{project}}/{{project}}/{{app_id}}`\n\n* `webApps/{{app_id}}`\n\n* `{{app_id}}`\n\nWhen using the `pulumi import` command, WebApp can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/webApp:WebApp default {{project}} projects/{{project}}/webApps/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/webApp:WebApp default projects/{{project}}/webApps/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/webApp:WebApp default {{project}}/{{project}}/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/webApp:WebApp default webApps/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/webApp:WebApp default {{app_id}}\n```\n\n", "properties": { "apiKeyId": { "type": "string", @@ -192989,7 +192989,7 @@ } }, "gcp:firestore/database:Database": { - "description": "A Cloud Firestore Database.\n\nIf you wish to use Firestore with App Engine, use the\n`gcp.appengine.Application`\nresource instead. If you were previously using the `gcp.appengine.Application` resource exclusively for managing a Firestore database\nand would like to use the `gcp.firestore.Database` resource instead, please follow the instructions\n[here](https://cloud.google.com/firestore/docs/app-engine-requirement).\n\n\nTo get more information about Database, see:\n\n* [API documentation](https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/firestore/docs/)\n\n## Example Usage\n\n### Firestore Default Database\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"(default)\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"(default)\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\")\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 database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"(default)\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\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 := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"(default)\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\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 database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"(default)\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: (default)\n locationId: nam5\n type: FIRESTORE_NATIVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Database\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n concurrencyMode: \"OPTIMISTIC\",\n appEngineIntegrationMode: \"DISABLED\",\n pointInTimeRecoveryEnablement: \"POINT_IN_TIME_RECOVERY_ENABLED\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n concurrency_mode=\"OPTIMISTIC\",\n app_engine_integration_mode=\"DISABLED\",\n point_in_time_recovery_enablement=\"POINT_IN_TIME_RECOVERY_ENABLED\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\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 database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n ConcurrencyMode = \"OPTIMISTIC\",\n AppEngineIntegrationMode = \"DISABLED\",\n PointInTimeRecoveryEnablement = \"POINT_IN_TIME_RECOVERY_ENABLED\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\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 := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tConcurrencyMode: pulumi.String(\"OPTIMISTIC\"),\n\t\t\tAppEngineIntegrationMode: pulumi.String(\"DISABLED\"),\n\t\t\tPointInTimeRecoveryEnablement: pulumi.String(\"POINT_IN_TIME_RECOVERY_ENABLED\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\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 database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .concurrencyMode(\"OPTIMISTIC\")\n .appEngineIntegrationMode(\"DISABLED\")\n .pointInTimeRecoveryEnablement(\"POINT_IN_TIME_RECOVERY_ENABLED\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n concurrencyMode: OPTIMISTIC\n appEngineIntegrationMode: DISABLED\n pointInTimeRecoveryEnablement: POINT_IN_TIME_RECOVERY_ENABLED\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Cmek Database\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"kms-key-ring\",\n location: \"us\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"kms-key\",\n keyRing: keyRing.id,\n purpose: \"ENCRYPT_DECRYPT\",\n});\nconst firestoreCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-firestore.iam.gserviceaccount.com`)],\n});\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"cmek-database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n concurrencyMode: \"OPTIMISTIC\",\n appEngineIntegrationMode: \"DISABLED\",\n pointInTimeRecoveryEnablement: \"POINT_IN_TIME_RECOVERY_ENABLED\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n cmekConfig: {\n kmsKeyName: cryptoKey.id,\n },\n}, {\n dependsOn: [firestoreCmekKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"kms-key-ring\",\n location=\"us\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"kms-key\",\n key_ring=key_ring.id,\n purpose=\"ENCRYPT_DECRYPT\")\nfirestore_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-firestore.iam.gserviceaccount.com\"])\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"cmek-database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n concurrency_mode=\"OPTIMISTIC\",\n app_engine_integration_mode=\"DISABLED\",\n point_in_time_recovery_enablement=\"POINT_IN_TIME_RECOVERY_ENABLED\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\",\n cmek_config={\n \"kmsKeyName\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[firestore_cmek_keyuser]))\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 keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"kms-key-ring\",\n Location = \"us\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"kms-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ENCRYPT_DECRYPT\",\n });\n\n var firestoreCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-firestore.iam.gserviceaccount.com\",\n },\n });\n\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"cmek-database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n ConcurrencyMode = \"OPTIMISTIC\",\n AppEngineIntegrationMode = \"DISABLED\",\n PointInTimeRecoveryEnablement = \"POINT_IN_TIME_RECOVERY_ENABLED\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n CmekConfig = new Gcp.Firestore.Inputs.DatabaseCmekConfigArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firestoreCmekKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"kms-key-ring\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"kms-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ENCRYPT_DECRYPT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirestoreCmekKeyuser, err := kms.NewCryptoKeyIAMBinding(ctx, \"firestore_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-firestore.iam.gserviceaccount.com\", project.Number)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cmek-database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tConcurrencyMode: pulumi.String(\"OPTIMISTIC\"),\n\t\t\tAppEngineIntegrationMode: pulumi.String(\"DISABLED\"),\n\t\t\tPointInTimeRecoveryEnablement: pulumi.String(\"POINT_IN_TIME_RECOVERY_ENABLED\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t\tCmekConfig: \u0026firestore.DatabaseCmekConfigArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirestoreCmekKeyuser,\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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.inputs.DatabaseCmekConfigArgs;\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 keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"kms-key-ring\")\n .location(\"us\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"kms-key\")\n .keyRing(keyRing.id())\n .purpose(\"ENCRYPT_DECRYPT\")\n .build());\n\n var firestoreCmekKeyuser = new CryptoKeyIAMBinding(\"firestoreCmekKeyuser\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-firestore.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"cmek-database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .concurrencyMode(\"OPTIMISTIC\")\n .appEngineIntegrationMode(\"DISABLED\")\n .pointInTimeRecoveryEnablement(\"POINT_IN_TIME_RECOVERY_ENABLED\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .cmekConfig(DatabaseCmekConfigArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firestoreCmekKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: cmek-database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n concurrencyMode: OPTIMISTIC\n appEngineIntegrationMode: DISABLED\n pointInTimeRecoveryEnablement: POINT_IN_TIME_RECOVERY_ENABLED\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n cmekConfig:\n kmsKeyName: ${cryptoKey.id}\n options:\n dependson:\n - ${firestoreCmekKeyuser}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: kms-key\n keyRing: ${keyRing.id}\n purpose: ENCRYPT_DECRYPT\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: kms-key-ring\n location: us\n firestoreCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: firestore_cmek_keyuser\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${project.number}@gcp-sa-firestore.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Default Database In Datastore Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst datastoreModeDatabase = new gcp.firestore.Database(\"datastore_mode_database\", {\n project: \"my-project-name\",\n name: \"(default)\",\n locationId: \"nam5\",\n type: \"DATASTORE_MODE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatastore_mode_database = gcp.firestore.Database(\"datastore_mode_database\",\n project=\"my-project-name\",\n name=\"(default)\",\n location_id=\"nam5\",\n type=\"DATASTORE_MODE\")\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 datastoreModeDatabase = new Gcp.Firestore.Database(\"datastore_mode_database\", new()\n {\n Project = \"my-project-name\",\n Name = \"(default)\",\n LocationId = \"nam5\",\n Type = \"DATASTORE_MODE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\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 := firestore.NewDatabase(ctx, \"datastore_mode_database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"(default)\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"DATASTORE_MODE\"),\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\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 datastoreModeDatabase = new Database(\"datastoreModeDatabase\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"(default)\")\n .locationId(\"nam5\")\n .type(\"DATASTORE_MODE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n datastoreModeDatabase:\n type: gcp:firestore:Database\n name: datastore_mode_database\n properties:\n project: my-project-name\n name: (default)\n locationId: nam5\n type: DATASTORE_MODE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Database In Datastore Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst datastoreModeDatabase = new gcp.firestore.Database(\"datastore_mode_database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"DATASTORE_MODE\",\n concurrencyMode: \"OPTIMISTIC\",\n appEngineIntegrationMode: \"DISABLED\",\n pointInTimeRecoveryEnablement: \"POINT_IN_TIME_RECOVERY_ENABLED\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatastore_mode_database = gcp.firestore.Database(\"datastore_mode_database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"DATASTORE_MODE\",\n concurrency_mode=\"OPTIMISTIC\",\n app_engine_integration_mode=\"DISABLED\",\n point_in_time_recovery_enablement=\"POINT_IN_TIME_RECOVERY_ENABLED\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\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 datastoreModeDatabase = new Gcp.Firestore.Database(\"datastore_mode_database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"DATASTORE_MODE\",\n ConcurrencyMode = \"OPTIMISTIC\",\n AppEngineIntegrationMode = \"DISABLED\",\n PointInTimeRecoveryEnablement = \"POINT_IN_TIME_RECOVERY_ENABLED\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\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 := firestore.NewDatabase(ctx, \"datastore_mode_database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"DATASTORE_MODE\"),\n\t\t\tConcurrencyMode: pulumi.String(\"OPTIMISTIC\"),\n\t\t\tAppEngineIntegrationMode: pulumi.String(\"DISABLED\"),\n\t\t\tPointInTimeRecoveryEnablement: pulumi.String(\"POINT_IN_TIME_RECOVERY_ENABLED\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\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 datastoreModeDatabase = new Database(\"datastoreModeDatabase\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"DATASTORE_MODE\")\n .concurrencyMode(\"OPTIMISTIC\")\n .appEngineIntegrationMode(\"DISABLED\")\n .pointInTimeRecoveryEnablement(\"POINT_IN_TIME_RECOVERY_ENABLED\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n datastoreModeDatabase:\n type: gcp:firestore:Database\n name: datastore_mode_database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: DATASTORE_MODE\n concurrencyMode: OPTIMISTIC\n appEngineIntegrationMode: DISABLED\n pointInTimeRecoveryEnablement: POINT_IN_TIME_RECOVERY_ENABLED\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Cmek Database In Datastore Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"kms-key-ring\",\n location: \"us\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"kms-key\",\n keyRing: keyRing.id,\n purpose: \"ENCRYPT_DECRYPT\",\n});\nconst firestoreCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-firestore.iam.gserviceaccount.com`)],\n});\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"cmek-database-id\",\n locationId: \"nam5\",\n type: \"DATASTORE_MODE\",\n concurrencyMode: \"OPTIMISTIC\",\n appEngineIntegrationMode: \"DISABLED\",\n pointInTimeRecoveryEnablement: \"POINT_IN_TIME_RECOVERY_ENABLED\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n cmekConfig: {\n kmsKeyName: cryptoKey.id,\n },\n}, {\n dependsOn: [firestoreCmekKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"kms-key-ring\",\n location=\"us\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"kms-key\",\n key_ring=key_ring.id,\n purpose=\"ENCRYPT_DECRYPT\")\nfirestore_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-firestore.iam.gserviceaccount.com\"])\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"cmek-database-id\",\n location_id=\"nam5\",\n type=\"DATASTORE_MODE\",\n concurrency_mode=\"OPTIMISTIC\",\n app_engine_integration_mode=\"DISABLED\",\n point_in_time_recovery_enablement=\"POINT_IN_TIME_RECOVERY_ENABLED\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\",\n cmek_config={\n \"kmsKeyName\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[firestore_cmek_keyuser]))\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 keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"kms-key-ring\",\n Location = \"us\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"kms-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ENCRYPT_DECRYPT\",\n });\n\n var firestoreCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-firestore.iam.gserviceaccount.com\",\n },\n });\n\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"cmek-database-id\",\n LocationId = \"nam5\",\n Type = \"DATASTORE_MODE\",\n ConcurrencyMode = \"OPTIMISTIC\",\n AppEngineIntegrationMode = \"DISABLED\",\n PointInTimeRecoveryEnablement = \"POINT_IN_TIME_RECOVERY_ENABLED\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n CmekConfig = new Gcp.Firestore.Inputs.DatabaseCmekConfigArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firestoreCmekKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"kms-key-ring\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"kms-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ENCRYPT_DECRYPT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirestoreCmekKeyuser, err := kms.NewCryptoKeyIAMBinding(ctx, \"firestore_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-firestore.iam.gserviceaccount.com\", project.Number)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cmek-database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"DATASTORE_MODE\"),\n\t\t\tConcurrencyMode: pulumi.String(\"OPTIMISTIC\"),\n\t\t\tAppEngineIntegrationMode: pulumi.String(\"DISABLED\"),\n\t\t\tPointInTimeRecoveryEnablement: pulumi.String(\"POINT_IN_TIME_RECOVERY_ENABLED\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t\tCmekConfig: \u0026firestore.DatabaseCmekConfigArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirestoreCmekKeyuser,\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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.inputs.DatabaseCmekConfigArgs;\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 keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"kms-key-ring\")\n .location(\"us\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"kms-key\")\n .keyRing(keyRing.id())\n .purpose(\"ENCRYPT_DECRYPT\")\n .build());\n\n var firestoreCmekKeyuser = new CryptoKeyIAMBinding(\"firestoreCmekKeyuser\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-firestore.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"cmek-database-id\")\n .locationId(\"nam5\")\n .type(\"DATASTORE_MODE\")\n .concurrencyMode(\"OPTIMISTIC\")\n .appEngineIntegrationMode(\"DISABLED\")\n .pointInTimeRecoveryEnablement(\"POINT_IN_TIME_RECOVERY_ENABLED\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .cmekConfig(DatabaseCmekConfigArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firestoreCmekKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: cmek-database-id\n locationId: nam5\n type: DATASTORE_MODE\n concurrencyMode: OPTIMISTIC\n appEngineIntegrationMode: DISABLED\n pointInTimeRecoveryEnablement: POINT_IN_TIME_RECOVERY_ENABLED\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n cmekConfig:\n kmsKeyName: ${cryptoKey.id}\n options:\n dependson:\n - ${firestoreCmekKeyuser}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: kms-key\n keyRing: ${keyRing.id}\n purpose: ENCRYPT_DECRYPT\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: kms-key-ring\n location: us\n firestoreCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: firestore_cmek_keyuser\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${project.number}@gcp-sa-firestore.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase can be imported using any of these accepted formats:\n\n* `projects/{{project}}/databases/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Database can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firestore/database:Database default projects/{{project}}/databases/{{name}}\n```\n\n```sh\n$ pulumi import gcp:firestore/database:Database default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:firestore/database:Database default {{name}}\n```\n\n", + "description": "A Cloud Firestore Database.\n\nIf you wish to use Firestore with App Engine, use the\n`gcp.appengine.Application`\nresource instead. If you were previously using the `gcp.appengine.Application` resource exclusively for managing a Firestore database\nand would like to use the `gcp.firestore.Database` resource instead, please follow the instructions\n[here](https://cloud.google.com/firestore/docs/app-engine-requirement).\n\n\nTo get more information about Database, see:\n\n* [API documentation](https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/firestore/docs/)\n\n## Example Usage\n\n### Firestore Default Database\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"(default)\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"(default)\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\")\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 database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"(default)\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\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 := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"(default)\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\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 database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"(default)\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: (default)\n locationId: nam5\n type: FIRESTORE_NATIVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Database\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n concurrencyMode: \"OPTIMISTIC\",\n appEngineIntegrationMode: \"DISABLED\",\n pointInTimeRecoveryEnablement: \"POINT_IN_TIME_RECOVERY_ENABLED\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n concurrency_mode=\"OPTIMISTIC\",\n app_engine_integration_mode=\"DISABLED\",\n point_in_time_recovery_enablement=\"POINT_IN_TIME_RECOVERY_ENABLED\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\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 database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n ConcurrencyMode = \"OPTIMISTIC\",\n AppEngineIntegrationMode = \"DISABLED\",\n PointInTimeRecoveryEnablement = \"POINT_IN_TIME_RECOVERY_ENABLED\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\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 := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tConcurrencyMode: pulumi.String(\"OPTIMISTIC\"),\n\t\t\tAppEngineIntegrationMode: pulumi.String(\"DISABLED\"),\n\t\t\tPointInTimeRecoveryEnablement: pulumi.String(\"POINT_IN_TIME_RECOVERY_ENABLED\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\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 database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .concurrencyMode(\"OPTIMISTIC\")\n .appEngineIntegrationMode(\"DISABLED\")\n .pointInTimeRecoveryEnablement(\"POINT_IN_TIME_RECOVERY_ENABLED\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n concurrencyMode: OPTIMISTIC\n appEngineIntegrationMode: DISABLED\n pointInTimeRecoveryEnablement: POINT_IN_TIME_RECOVERY_ENABLED\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Cmek Database\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"kms-key-ring\",\n location: \"us\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"kms-key\",\n keyRing: keyRing.id,\n purpose: \"ENCRYPT_DECRYPT\",\n});\nconst firestoreCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-firestore.iam.gserviceaccount.com`)],\n});\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"cmek-database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n concurrencyMode: \"OPTIMISTIC\",\n appEngineIntegrationMode: \"DISABLED\",\n pointInTimeRecoveryEnablement: \"POINT_IN_TIME_RECOVERY_ENABLED\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n cmekConfig: {\n kmsKeyName: cryptoKey.id,\n },\n}, {\n dependsOn: [firestoreCmekKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"kms-key-ring\",\n location=\"us\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"kms-key\",\n key_ring=key_ring.id,\n purpose=\"ENCRYPT_DECRYPT\")\nfirestore_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-firestore.iam.gserviceaccount.com\"])\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"cmek-database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n concurrency_mode=\"OPTIMISTIC\",\n app_engine_integration_mode=\"DISABLED\",\n point_in_time_recovery_enablement=\"POINT_IN_TIME_RECOVERY_ENABLED\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\",\n cmek_config={\n \"kms_key_name\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[firestore_cmek_keyuser]))\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 keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"kms-key-ring\",\n Location = \"us\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"kms-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ENCRYPT_DECRYPT\",\n });\n\n var firestoreCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-firestore.iam.gserviceaccount.com\",\n },\n });\n\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"cmek-database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n ConcurrencyMode = \"OPTIMISTIC\",\n AppEngineIntegrationMode = \"DISABLED\",\n PointInTimeRecoveryEnablement = \"POINT_IN_TIME_RECOVERY_ENABLED\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n CmekConfig = new Gcp.Firestore.Inputs.DatabaseCmekConfigArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firestoreCmekKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"kms-key-ring\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"kms-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ENCRYPT_DECRYPT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirestoreCmekKeyuser, err := kms.NewCryptoKeyIAMBinding(ctx, \"firestore_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-firestore.iam.gserviceaccount.com\", project.Number)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cmek-database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tConcurrencyMode: pulumi.String(\"OPTIMISTIC\"),\n\t\t\tAppEngineIntegrationMode: pulumi.String(\"DISABLED\"),\n\t\t\tPointInTimeRecoveryEnablement: pulumi.String(\"POINT_IN_TIME_RECOVERY_ENABLED\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t\tCmekConfig: \u0026firestore.DatabaseCmekConfigArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirestoreCmekKeyuser,\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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.inputs.DatabaseCmekConfigArgs;\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 keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"kms-key-ring\")\n .location(\"us\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"kms-key\")\n .keyRing(keyRing.id())\n .purpose(\"ENCRYPT_DECRYPT\")\n .build());\n\n var firestoreCmekKeyuser = new CryptoKeyIAMBinding(\"firestoreCmekKeyuser\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-firestore.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"cmek-database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .concurrencyMode(\"OPTIMISTIC\")\n .appEngineIntegrationMode(\"DISABLED\")\n .pointInTimeRecoveryEnablement(\"POINT_IN_TIME_RECOVERY_ENABLED\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .cmekConfig(DatabaseCmekConfigArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firestoreCmekKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: cmek-database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n concurrencyMode: OPTIMISTIC\n appEngineIntegrationMode: DISABLED\n pointInTimeRecoveryEnablement: POINT_IN_TIME_RECOVERY_ENABLED\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n cmekConfig:\n kmsKeyName: ${cryptoKey.id}\n options:\n dependson:\n - ${firestoreCmekKeyuser}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: kms-key\n keyRing: ${keyRing.id}\n purpose: ENCRYPT_DECRYPT\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: kms-key-ring\n location: us\n firestoreCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: firestore_cmek_keyuser\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${project.number}@gcp-sa-firestore.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Default Database In Datastore Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst datastoreModeDatabase = new gcp.firestore.Database(\"datastore_mode_database\", {\n project: \"my-project-name\",\n name: \"(default)\",\n locationId: \"nam5\",\n type: \"DATASTORE_MODE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatastore_mode_database = gcp.firestore.Database(\"datastore_mode_database\",\n project=\"my-project-name\",\n name=\"(default)\",\n location_id=\"nam5\",\n type=\"DATASTORE_MODE\")\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 datastoreModeDatabase = new Gcp.Firestore.Database(\"datastore_mode_database\", new()\n {\n Project = \"my-project-name\",\n Name = \"(default)\",\n LocationId = \"nam5\",\n Type = \"DATASTORE_MODE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\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 := firestore.NewDatabase(ctx, \"datastore_mode_database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"(default)\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"DATASTORE_MODE\"),\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\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 datastoreModeDatabase = new Database(\"datastoreModeDatabase\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"(default)\")\n .locationId(\"nam5\")\n .type(\"DATASTORE_MODE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n datastoreModeDatabase:\n type: gcp:firestore:Database\n name: datastore_mode_database\n properties:\n project: my-project-name\n name: (default)\n locationId: nam5\n type: DATASTORE_MODE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Database In Datastore Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst datastoreModeDatabase = new gcp.firestore.Database(\"datastore_mode_database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"DATASTORE_MODE\",\n concurrencyMode: \"OPTIMISTIC\",\n appEngineIntegrationMode: \"DISABLED\",\n pointInTimeRecoveryEnablement: \"POINT_IN_TIME_RECOVERY_ENABLED\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatastore_mode_database = gcp.firestore.Database(\"datastore_mode_database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"DATASTORE_MODE\",\n concurrency_mode=\"OPTIMISTIC\",\n app_engine_integration_mode=\"DISABLED\",\n point_in_time_recovery_enablement=\"POINT_IN_TIME_RECOVERY_ENABLED\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\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 datastoreModeDatabase = new Gcp.Firestore.Database(\"datastore_mode_database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"DATASTORE_MODE\",\n ConcurrencyMode = \"OPTIMISTIC\",\n AppEngineIntegrationMode = \"DISABLED\",\n PointInTimeRecoveryEnablement = \"POINT_IN_TIME_RECOVERY_ENABLED\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\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 := firestore.NewDatabase(ctx, \"datastore_mode_database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"DATASTORE_MODE\"),\n\t\t\tConcurrencyMode: pulumi.String(\"OPTIMISTIC\"),\n\t\t\tAppEngineIntegrationMode: pulumi.String(\"DISABLED\"),\n\t\t\tPointInTimeRecoveryEnablement: pulumi.String(\"POINT_IN_TIME_RECOVERY_ENABLED\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\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 datastoreModeDatabase = new Database(\"datastoreModeDatabase\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"DATASTORE_MODE\")\n .concurrencyMode(\"OPTIMISTIC\")\n .appEngineIntegrationMode(\"DISABLED\")\n .pointInTimeRecoveryEnablement(\"POINT_IN_TIME_RECOVERY_ENABLED\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n datastoreModeDatabase:\n type: gcp:firestore:Database\n name: datastore_mode_database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: DATASTORE_MODE\n concurrencyMode: OPTIMISTIC\n appEngineIntegrationMode: DISABLED\n pointInTimeRecoveryEnablement: POINT_IN_TIME_RECOVERY_ENABLED\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Cmek Database In Datastore Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"kms-key-ring\",\n location: \"us\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"kms-key\",\n keyRing: keyRing.id,\n purpose: \"ENCRYPT_DECRYPT\",\n});\nconst firestoreCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-firestore.iam.gserviceaccount.com`)],\n});\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"cmek-database-id\",\n locationId: \"nam5\",\n type: \"DATASTORE_MODE\",\n concurrencyMode: \"OPTIMISTIC\",\n appEngineIntegrationMode: \"DISABLED\",\n pointInTimeRecoveryEnablement: \"POINT_IN_TIME_RECOVERY_ENABLED\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n cmekConfig: {\n kmsKeyName: cryptoKey.id,\n },\n}, {\n dependsOn: [firestoreCmekKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"kms-key-ring\",\n location=\"us\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"kms-key\",\n key_ring=key_ring.id,\n purpose=\"ENCRYPT_DECRYPT\")\nfirestore_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-firestore.iam.gserviceaccount.com\"])\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"cmek-database-id\",\n location_id=\"nam5\",\n type=\"DATASTORE_MODE\",\n concurrency_mode=\"OPTIMISTIC\",\n app_engine_integration_mode=\"DISABLED\",\n point_in_time_recovery_enablement=\"POINT_IN_TIME_RECOVERY_ENABLED\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\",\n cmek_config={\n \"kms_key_name\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[firestore_cmek_keyuser]))\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 keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"kms-key-ring\",\n Location = \"us\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"kms-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ENCRYPT_DECRYPT\",\n });\n\n var firestoreCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-firestore.iam.gserviceaccount.com\",\n },\n });\n\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"cmek-database-id\",\n LocationId = \"nam5\",\n Type = \"DATASTORE_MODE\",\n ConcurrencyMode = \"OPTIMISTIC\",\n AppEngineIntegrationMode = \"DISABLED\",\n PointInTimeRecoveryEnablement = \"POINT_IN_TIME_RECOVERY_ENABLED\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n CmekConfig = new Gcp.Firestore.Inputs.DatabaseCmekConfigArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firestoreCmekKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"kms-key-ring\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"kms-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ENCRYPT_DECRYPT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirestoreCmekKeyuser, err := kms.NewCryptoKeyIAMBinding(ctx, \"firestore_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-firestore.iam.gserviceaccount.com\", project.Number)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cmek-database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"DATASTORE_MODE\"),\n\t\t\tConcurrencyMode: pulumi.String(\"OPTIMISTIC\"),\n\t\t\tAppEngineIntegrationMode: pulumi.String(\"DISABLED\"),\n\t\t\tPointInTimeRecoveryEnablement: pulumi.String(\"POINT_IN_TIME_RECOVERY_ENABLED\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t\tCmekConfig: \u0026firestore.DatabaseCmekConfigArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirestoreCmekKeyuser,\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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.inputs.DatabaseCmekConfigArgs;\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 keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"kms-key-ring\")\n .location(\"us\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"kms-key\")\n .keyRing(keyRing.id())\n .purpose(\"ENCRYPT_DECRYPT\")\n .build());\n\n var firestoreCmekKeyuser = new CryptoKeyIAMBinding(\"firestoreCmekKeyuser\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-firestore.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"cmek-database-id\")\n .locationId(\"nam5\")\n .type(\"DATASTORE_MODE\")\n .concurrencyMode(\"OPTIMISTIC\")\n .appEngineIntegrationMode(\"DISABLED\")\n .pointInTimeRecoveryEnablement(\"POINT_IN_TIME_RECOVERY_ENABLED\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .cmekConfig(DatabaseCmekConfigArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firestoreCmekKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: cmek-database-id\n locationId: nam5\n type: DATASTORE_MODE\n concurrencyMode: OPTIMISTIC\n appEngineIntegrationMode: DISABLED\n pointInTimeRecoveryEnablement: POINT_IN_TIME_RECOVERY_ENABLED\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n cmekConfig:\n kmsKeyName: ${cryptoKey.id}\n options:\n dependson:\n - ${firestoreCmekKeyuser}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: kms-key\n keyRing: ${keyRing.id}\n purpose: ENCRYPT_DECRYPT\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: kms-key-ring\n location: us\n firestoreCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: firestore_cmek_keyuser\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${project.number}@gcp-sa-firestore.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase can be imported using any of these accepted formats:\n\n* `projects/{{project}}/databases/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Database can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firestore/database:Database default projects/{{project}}/databases/{{name}}\n```\n\n```sh\n$ pulumi import gcp:firestore/database:Database default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:firestore/database:Database default {{name}}\n```\n\n", "properties": { "appEngineIntegrationMode": { "type": "string", @@ -193322,7 +193322,7 @@ } }, "gcp:firestore/field:Field": { - "description": "Represents a single field in the database.\nFields are grouped by their \"Collection Group\", which represent all collections\nin the database with the same id.\n\n\nTo get more information about Field, see:\n\n* [API documentation](https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.collectionGroups.fields)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/firestore/docs/query-data/indexing)\n\n\u003e **Warning:** This resource creates a Firestore Single Field override on a project that\n already has a Firestore database. If you haven't already created it, you may\ncreate a `gcp.firestore.Database` resource with `location_id` set to your\nchosen location.\n\n## Example Usage\n\n### Firestore Field Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst basic = new gcp.firestore.Field(\"basic\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"chatrooms__75125\",\n field: \"basic\",\n indexConfig: {\n indexes: [\n {\n order: \"ASCENDING\",\n queryScope: \"COLLECTION_GROUP\",\n },\n {\n arrayConfig: \"CONTAINS\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\nbasic = gcp.firestore.Field(\"basic\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"chatrooms__75125\",\n field=\"basic\",\n index_config={\n \"indexes\": [\n {\n \"order\": \"ASCENDING\",\n \"queryScope\": \"COLLECTION_GROUP\",\n },\n {\n \"arrayConfig\": \"CONTAINS\",\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 database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var basic = new Gcp.Firestore.Field(\"basic\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"chatrooms__75125\",\n FieldId = \"basic\",\n IndexConfig = new Gcp.Firestore.Inputs.FieldIndexConfigArgs\n {\n Indexes = new[]\n {\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n Order = \"ASCENDING\",\n QueryScope = \"COLLECTION_GROUP\",\n },\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n ArrayConfig = \"CONTAINS\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewField(ctx, \"basic\", \u0026firestore.FieldArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"chatrooms__75125\"),\n\t\t\tField: pulumi.String(\"basic\"),\n\t\t\tIndexConfig: \u0026firestore.FieldIndexConfigArgs{\n\t\t\t\tIndexes: firestore.FieldIndexConfigIndexArray{\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t\t\tQueryScope: pulumi.String(\"COLLECTION_GROUP\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tArrayConfig: pulumi.String(\"CONTAINS\"),\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Field;\nimport com.pulumi.gcp.firestore.FieldArgs;\nimport com.pulumi.gcp.firestore.inputs.FieldIndexConfigArgs;\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 database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var basic = new Field(\"basic\", FieldArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"chatrooms__75125\")\n .field(\"basic\")\n .indexConfig(FieldIndexConfigArgs.builder()\n .indexes( \n FieldIndexConfigIndexArgs.builder()\n .order(\"ASCENDING\")\n .queryScope(\"COLLECTION_GROUP\")\n .build(),\n FieldIndexConfigIndexArgs.builder()\n .arrayConfig(\"CONTAINS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n basic:\n type: gcp:firestore:Field\n properties:\n project: my-project-name\n database: ${database.name}\n collection: chatrooms__75125\n field: basic\n indexConfig:\n indexes:\n - order: ASCENDING\n queryScope: COLLECTION_GROUP\n - arrayConfig: CONTAINS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Field Timestamp\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst timestamp = new gcp.firestore.Field(\"timestamp\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"chatrooms\",\n field: \"timestamp\",\n ttlConfig: {},\n indexConfig: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\ntimestamp = gcp.firestore.Field(\"timestamp\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"chatrooms\",\n field=\"timestamp\",\n ttl_config={},\n index_config={})\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 database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var timestamp = new Gcp.Firestore.Field(\"timestamp\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"chatrooms\",\n FieldId = \"timestamp\",\n TtlConfig = null,\n IndexConfig = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewField(ctx, \"timestamp\", \u0026firestore.FieldArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"chatrooms\"),\n\t\t\tField: pulumi.String(\"timestamp\"),\n\t\t\tTtlConfig: nil,\n\t\t\tIndexConfig: nil,\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Field;\nimport com.pulumi.gcp.firestore.FieldArgs;\nimport com.pulumi.gcp.firestore.inputs.FieldTtlConfigArgs;\nimport com.pulumi.gcp.firestore.inputs.FieldIndexConfigArgs;\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 database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var timestamp = new Field(\"timestamp\", FieldArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"chatrooms\")\n .field(\"timestamp\")\n .ttlConfig()\n .indexConfig()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n timestamp:\n type: gcp:firestore:Field\n properties:\n project: my-project-name\n database: ${database.name}\n collection: chatrooms\n field: timestamp\n ttlConfig: {}\n indexConfig: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Field Match Override\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst matchOverride = new gcp.firestore.Field(\"match_override\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"chatrooms__88722\",\n field: \"field_with_same_configuration_as_ancestor\",\n indexConfig: {\n indexes: [\n {\n order: \"ASCENDING\",\n },\n {\n order: \"DESCENDING\",\n },\n {\n arrayConfig: \"CONTAINS\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\nmatch_override = gcp.firestore.Field(\"match_override\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"chatrooms__88722\",\n field=\"field_with_same_configuration_as_ancestor\",\n index_config={\n \"indexes\": [\n {\n \"order\": \"ASCENDING\",\n },\n {\n \"order\": \"DESCENDING\",\n },\n {\n \"arrayConfig\": \"CONTAINS\",\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 database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var matchOverride = new Gcp.Firestore.Field(\"match_override\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"chatrooms__88722\",\n FieldId = \"field_with_same_configuration_as_ancestor\",\n IndexConfig = new Gcp.Firestore.Inputs.FieldIndexConfigArgs\n {\n Indexes = new[]\n {\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n Order = \"DESCENDING\",\n },\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n ArrayConfig = \"CONTAINS\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewField(ctx, \"match_override\", \u0026firestore.FieldArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"chatrooms__88722\"),\n\t\t\tField: pulumi.String(\"field_with_same_configuration_as_ancestor\"),\n\t\t\tIndexConfig: \u0026firestore.FieldIndexConfigArgs{\n\t\t\t\tIndexes: firestore.FieldIndexConfigIndexArray{\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tOrder: pulumi.String(\"DESCENDING\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tArrayConfig: pulumi.String(\"CONTAINS\"),\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Field;\nimport com.pulumi.gcp.firestore.FieldArgs;\nimport com.pulumi.gcp.firestore.inputs.FieldIndexConfigArgs;\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 database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var matchOverride = new Field(\"matchOverride\", FieldArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"chatrooms__88722\")\n .field(\"field_with_same_configuration_as_ancestor\")\n .indexConfig(FieldIndexConfigArgs.builder()\n .indexes( \n FieldIndexConfigIndexArgs.builder()\n .order(\"ASCENDING\")\n .build(),\n FieldIndexConfigIndexArgs.builder()\n .order(\"DESCENDING\")\n .build(),\n FieldIndexConfigIndexArgs.builder()\n .arrayConfig(\"CONTAINS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n matchOverride:\n type: gcp:firestore:Field\n name: match_override\n properties:\n project: my-project-name\n database: ${database.name}\n collection: chatrooms__88722\n field: field_with_same_configuration_as_ancestor\n indexConfig:\n indexes:\n - order: ASCENDING\n - order: DESCENDING\n - arrayConfig: CONTAINS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nField can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Field can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firestore/field:Field default {{name}}\n```\n\n", + "description": "Represents a single field in the database.\nFields are grouped by their \"Collection Group\", which represent all collections\nin the database with the same id.\n\n\nTo get more information about Field, see:\n\n* [API documentation](https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.collectionGroups.fields)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/firestore/docs/query-data/indexing)\n\n\u003e **Warning:** This resource creates a Firestore Single Field override on a project that\n already has a Firestore database. If you haven't already created it, you may\ncreate a `gcp.firestore.Database` resource with `location_id` set to your\nchosen location.\n\n## Example Usage\n\n### Firestore Field Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst basic = new gcp.firestore.Field(\"basic\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"chatrooms__75125\",\n field: \"basic\",\n indexConfig: {\n indexes: [\n {\n order: \"ASCENDING\",\n queryScope: \"COLLECTION_GROUP\",\n },\n {\n arrayConfig: \"CONTAINS\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\nbasic = gcp.firestore.Field(\"basic\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"chatrooms__75125\",\n field=\"basic\",\n index_config={\n \"indexes\": [\n {\n \"order\": \"ASCENDING\",\n \"query_scope\": \"COLLECTION_GROUP\",\n },\n {\n \"array_config\": \"CONTAINS\",\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 database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var basic = new Gcp.Firestore.Field(\"basic\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"chatrooms__75125\",\n FieldId = \"basic\",\n IndexConfig = new Gcp.Firestore.Inputs.FieldIndexConfigArgs\n {\n Indexes = new[]\n {\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n Order = \"ASCENDING\",\n QueryScope = \"COLLECTION_GROUP\",\n },\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n ArrayConfig = \"CONTAINS\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewField(ctx, \"basic\", \u0026firestore.FieldArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"chatrooms__75125\"),\n\t\t\tField: pulumi.String(\"basic\"),\n\t\t\tIndexConfig: \u0026firestore.FieldIndexConfigArgs{\n\t\t\t\tIndexes: firestore.FieldIndexConfigIndexArray{\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t\t\tQueryScope: pulumi.String(\"COLLECTION_GROUP\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tArrayConfig: pulumi.String(\"CONTAINS\"),\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Field;\nimport com.pulumi.gcp.firestore.FieldArgs;\nimport com.pulumi.gcp.firestore.inputs.FieldIndexConfigArgs;\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 database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var basic = new Field(\"basic\", FieldArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"chatrooms__75125\")\n .field(\"basic\")\n .indexConfig(FieldIndexConfigArgs.builder()\n .indexes( \n FieldIndexConfigIndexArgs.builder()\n .order(\"ASCENDING\")\n .queryScope(\"COLLECTION_GROUP\")\n .build(),\n FieldIndexConfigIndexArgs.builder()\n .arrayConfig(\"CONTAINS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n basic:\n type: gcp:firestore:Field\n properties:\n project: my-project-name\n database: ${database.name}\n collection: chatrooms__75125\n field: basic\n indexConfig:\n indexes:\n - order: ASCENDING\n queryScope: COLLECTION_GROUP\n - arrayConfig: CONTAINS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Field Timestamp\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst timestamp = new gcp.firestore.Field(\"timestamp\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"chatrooms\",\n field: \"timestamp\",\n ttlConfig: {},\n indexConfig: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\ntimestamp = gcp.firestore.Field(\"timestamp\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"chatrooms\",\n field=\"timestamp\",\n ttl_config={},\n index_config={})\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 database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var timestamp = new Gcp.Firestore.Field(\"timestamp\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"chatrooms\",\n FieldId = \"timestamp\",\n TtlConfig = null,\n IndexConfig = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewField(ctx, \"timestamp\", \u0026firestore.FieldArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"chatrooms\"),\n\t\t\tField: pulumi.String(\"timestamp\"),\n\t\t\tTtlConfig: nil,\n\t\t\tIndexConfig: nil,\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Field;\nimport com.pulumi.gcp.firestore.FieldArgs;\nimport com.pulumi.gcp.firestore.inputs.FieldTtlConfigArgs;\nimport com.pulumi.gcp.firestore.inputs.FieldIndexConfigArgs;\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 database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var timestamp = new Field(\"timestamp\", FieldArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"chatrooms\")\n .field(\"timestamp\")\n .ttlConfig()\n .indexConfig()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n timestamp:\n type: gcp:firestore:Field\n properties:\n project: my-project-name\n database: ${database.name}\n collection: chatrooms\n field: timestamp\n ttlConfig: {}\n indexConfig: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Field Match Override\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst matchOverride = new gcp.firestore.Field(\"match_override\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"chatrooms__88722\",\n field: \"field_with_same_configuration_as_ancestor\",\n indexConfig: {\n indexes: [\n {\n order: \"ASCENDING\",\n },\n {\n order: \"DESCENDING\",\n },\n {\n arrayConfig: \"CONTAINS\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\nmatch_override = gcp.firestore.Field(\"match_override\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"chatrooms__88722\",\n field=\"field_with_same_configuration_as_ancestor\",\n index_config={\n \"indexes\": [\n {\n \"order\": \"ASCENDING\",\n },\n {\n \"order\": \"DESCENDING\",\n },\n {\n \"array_config\": \"CONTAINS\",\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 database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var matchOverride = new Gcp.Firestore.Field(\"match_override\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"chatrooms__88722\",\n FieldId = \"field_with_same_configuration_as_ancestor\",\n IndexConfig = new Gcp.Firestore.Inputs.FieldIndexConfigArgs\n {\n Indexes = new[]\n {\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n Order = \"DESCENDING\",\n },\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n ArrayConfig = \"CONTAINS\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewField(ctx, \"match_override\", \u0026firestore.FieldArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"chatrooms__88722\"),\n\t\t\tField: pulumi.String(\"field_with_same_configuration_as_ancestor\"),\n\t\t\tIndexConfig: \u0026firestore.FieldIndexConfigArgs{\n\t\t\t\tIndexes: firestore.FieldIndexConfigIndexArray{\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tOrder: pulumi.String(\"DESCENDING\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tArrayConfig: pulumi.String(\"CONTAINS\"),\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Field;\nimport com.pulumi.gcp.firestore.FieldArgs;\nimport com.pulumi.gcp.firestore.inputs.FieldIndexConfigArgs;\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 database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var matchOverride = new Field(\"matchOverride\", FieldArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"chatrooms__88722\")\n .field(\"field_with_same_configuration_as_ancestor\")\n .indexConfig(FieldIndexConfigArgs.builder()\n .indexes( \n FieldIndexConfigIndexArgs.builder()\n .order(\"ASCENDING\")\n .build(),\n FieldIndexConfigIndexArgs.builder()\n .order(\"DESCENDING\")\n .build(),\n FieldIndexConfigIndexArgs.builder()\n .arrayConfig(\"CONTAINS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n matchOverride:\n type: gcp:firestore:Field\n name: match_override\n properties:\n project: my-project-name\n database: ${database.name}\n collection: chatrooms__88722\n field: field_with_same_configuration_as_ancestor\n indexConfig:\n indexes:\n - order: ASCENDING\n - order: DESCENDING\n - arrayConfig: CONTAINS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nField can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Field can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firestore/field:Field default {{name}}\n```\n\n", "properties": { "collection": { "type": "string", @@ -193442,7 +193442,7 @@ } }, "gcp:firestore/index:Index": { - "description": "Cloud Firestore indexes enable simple and complex queries against documents in a database.\n This resource manages composite indexes and not single\nfield indexes.\n\n\nTo get more information about Index, see:\n\n* [API documentation](https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.collectionGroups.indexes)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/firestore/docs/query-data/indexing)\n\n\u003e **Warning:** This resource creates a Firestore Index on a project that already has\na Firestore database. If you haven't already created it, you may\ncreate a `gcp.firestore.Database` resource and `location_id` set\nto your chosen location. If you wish to use App Engine, you may\ninstead create a `gcp.appengine.Application` resource with\n`database_type` set to `\"CLOUD_FIRESTORE\"`. Your Firestore location\nwill be the same as the App Engine location specified.\n\n## Example Usage\n\n### Firestore Index Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_DISABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst my_index = new gcp.firestore.Index(\"my-index\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"atestcollection\",\n fields: [\n {\n fieldPath: \"name\",\n order: \"ASCENDING\",\n },\n {\n fieldPath: \"description\",\n order: \"DESCENDING\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_DISABLED\",\n deletion_policy=\"DELETE\")\nmy_index = gcp.firestore.Index(\"my-index\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"atestcollection\",\n fields=[\n {\n \"fieldPath\": \"name\",\n \"order\": \"ASCENDING\",\n },\n {\n \"fieldPath\": \"description\",\n \"order\": \"DESCENDING\",\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 database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_DISABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var my_index = new Gcp.Firestore.Index(\"my-index\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"atestcollection\",\n Fields = new[]\n {\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"name\",\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"description\",\n Order = \"DESCENDING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_DISABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewIndex(ctx, \"my-index\", \u0026firestore.IndexArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"atestcollection\"),\n\t\t\tFields: firestore.IndexFieldArray{\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"name\"),\n\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t},\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"description\"),\n\t\t\t\t\tOrder: pulumi.String(\"DESCENDING\"),\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Index;\nimport com.pulumi.gcp.firestore.IndexArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldArgs;\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 database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_DISABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var my_index = new Index(\"my-index\", IndexArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"atestcollection\")\n .fields( \n IndexFieldArgs.builder()\n .fieldPath(\"name\")\n .order(\"ASCENDING\")\n .build(),\n IndexFieldArgs.builder()\n .fieldPath(\"description\")\n .order(\"DESCENDING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_DISABLED\n deletionPolicy: DELETE\n my-index:\n type: gcp:firestore:Index\n properties:\n project: my-project-name\n database: ${database.name}\n collection: atestcollection\n fields:\n - fieldPath: name\n order: ASCENDING\n - fieldPath: description\n order: DESCENDING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Index Datastore Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id-dm\",\n locationId: \"nam5\",\n type: \"DATASTORE_MODE\",\n deleteProtectionState: \"DELETE_PROTECTION_DISABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst my_index = new gcp.firestore.Index(\"my-index\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"atestcollection\",\n queryScope: \"COLLECTION_RECURSIVE\",\n apiScope: \"DATASTORE_MODE_API\",\n fields: [\n {\n fieldPath: \"name\",\n order: \"ASCENDING\",\n },\n {\n fieldPath: \"description\",\n order: \"DESCENDING\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id-dm\",\n location_id=\"nam5\",\n type=\"DATASTORE_MODE\",\n delete_protection_state=\"DELETE_PROTECTION_DISABLED\",\n deletion_policy=\"DELETE\")\nmy_index = gcp.firestore.Index(\"my-index\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"atestcollection\",\n query_scope=\"COLLECTION_RECURSIVE\",\n api_scope=\"DATASTORE_MODE_API\",\n fields=[\n {\n \"fieldPath\": \"name\",\n \"order\": \"ASCENDING\",\n },\n {\n \"fieldPath\": \"description\",\n \"order\": \"DESCENDING\",\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 database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id-dm\",\n LocationId = \"nam5\",\n Type = \"DATASTORE_MODE\",\n DeleteProtectionState = \"DELETE_PROTECTION_DISABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var my_index = new Gcp.Firestore.Index(\"my-index\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"atestcollection\",\n QueryScope = \"COLLECTION_RECURSIVE\",\n ApiScope = \"DATASTORE_MODE_API\",\n Fields = new[]\n {\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"name\",\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"description\",\n Order = \"DESCENDING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id-dm\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"DATASTORE_MODE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_DISABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewIndex(ctx, \"my-index\", \u0026firestore.IndexArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"atestcollection\"),\n\t\t\tQueryScope: pulumi.String(\"COLLECTION_RECURSIVE\"),\n\t\t\tApiScope: pulumi.String(\"DATASTORE_MODE_API\"),\n\t\t\tFields: firestore.IndexFieldArray{\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"name\"),\n\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t},\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"description\"),\n\t\t\t\t\tOrder: pulumi.String(\"DESCENDING\"),\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Index;\nimport com.pulumi.gcp.firestore.IndexArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldArgs;\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 database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id-dm\")\n .locationId(\"nam5\")\n .type(\"DATASTORE_MODE\")\n .deleteProtectionState(\"DELETE_PROTECTION_DISABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var my_index = new Index(\"my-index\", IndexArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"atestcollection\")\n .queryScope(\"COLLECTION_RECURSIVE\")\n .apiScope(\"DATASTORE_MODE_API\")\n .fields( \n IndexFieldArgs.builder()\n .fieldPath(\"name\")\n .order(\"ASCENDING\")\n .build(),\n IndexFieldArgs.builder()\n .fieldPath(\"description\")\n .order(\"DESCENDING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id-dm\n locationId: nam5\n type: DATASTORE_MODE\n deleteProtectionState: DELETE_PROTECTION_DISABLED\n deletionPolicy: DELETE\n my-index:\n type: gcp:firestore:Index\n properties:\n project: my-project-name\n database: ${database.name}\n collection: atestcollection\n queryScope: COLLECTION_RECURSIVE\n apiScope: DATASTORE_MODE_API\n fields:\n - fieldPath: name\n order: ASCENDING\n - fieldPath: description\n order: DESCENDING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Index Vector\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id-vector\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_DISABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst my_index = new gcp.firestore.Index(\"my-index\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"atestcollection\",\n fields: [\n {\n fieldPath: \"field_name\",\n order: \"ASCENDING\",\n },\n {\n fieldPath: \"__name__\",\n order: \"ASCENDING\",\n },\n {\n fieldPath: \"description\",\n vectorConfig: {\n dimension: 128,\n flat: {},\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id-vector\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_DISABLED\",\n deletion_policy=\"DELETE\")\nmy_index = gcp.firestore.Index(\"my-index\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"atestcollection\",\n fields=[\n {\n \"fieldPath\": \"field_name\",\n \"order\": \"ASCENDING\",\n },\n {\n \"fieldPath\": \"__name__\",\n \"order\": \"ASCENDING\",\n },\n {\n \"fieldPath\": \"description\",\n \"vectorConfig\": {\n \"dimension\": 128,\n \"flat\": {},\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 database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id-vector\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_DISABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var my_index = new Gcp.Firestore.Index(\"my-index\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"atestcollection\",\n Fields = new[]\n {\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"field_name\",\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"__name__\",\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"description\",\n VectorConfig = new Gcp.Firestore.Inputs.IndexFieldVectorConfigArgs\n {\n Dimension = 128,\n Flat = null,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id-vector\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_DISABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewIndex(ctx, \"my-index\", \u0026firestore.IndexArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"atestcollection\"),\n\t\t\tFields: firestore.IndexFieldArray{\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"field_name\"),\n\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t},\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"__name__\"),\n\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t},\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"description\"),\n\t\t\t\t\tVectorConfig: \u0026firestore.IndexFieldVectorConfigArgs{\n\t\t\t\t\t\tDimension: pulumi.Int(128),\n\t\t\t\t\t\tFlat: nil,\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Index;\nimport com.pulumi.gcp.firestore.IndexArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldVectorConfigArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldVectorConfigFlatArgs;\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 database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id-vector\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_DISABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var my_index = new Index(\"my-index\", IndexArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"atestcollection\")\n .fields( \n IndexFieldArgs.builder()\n .fieldPath(\"field_name\")\n .order(\"ASCENDING\")\n .build(),\n IndexFieldArgs.builder()\n .fieldPath(\"__name__\")\n .order(\"ASCENDING\")\n .build(),\n IndexFieldArgs.builder()\n .fieldPath(\"description\")\n .vectorConfig(IndexFieldVectorConfigArgs.builder()\n .dimension(128)\n .flat()\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id-vector\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_DISABLED\n deletionPolicy: DELETE\n my-index:\n type: gcp:firestore:Index\n properties:\n project: my-project-name\n database: ${database.name}\n collection: atestcollection\n fields:\n - fieldPath: field_name\n order: ASCENDING\n - fieldPath: __name__\n order: ASCENDING\n - fieldPath: description\n vectorConfig:\n dimension: 128\n flat: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIndex can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Index can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firestore/index:Index default {{name}}\n```\n\n", + "description": "Cloud Firestore indexes enable simple and complex queries against documents in a database.\n This resource manages composite indexes and not single\nfield indexes.\n\n\nTo get more information about Index, see:\n\n* [API documentation](https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.collectionGroups.indexes)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/firestore/docs/query-data/indexing)\n\n\u003e **Warning:** This resource creates a Firestore Index on a project that already has\na Firestore database. If you haven't already created it, you may\ncreate a `gcp.firestore.Database` resource and `location_id` set\nto your chosen location. If you wish to use App Engine, you may\ninstead create a `gcp.appengine.Application` resource with\n`database_type` set to `\"CLOUD_FIRESTORE\"`. Your Firestore location\nwill be the same as the App Engine location specified.\n\n## Example Usage\n\n### Firestore Index Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_DISABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst my_index = new gcp.firestore.Index(\"my-index\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"atestcollection\",\n fields: [\n {\n fieldPath: \"name\",\n order: \"ASCENDING\",\n },\n {\n fieldPath: \"description\",\n order: \"DESCENDING\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_DISABLED\",\n deletion_policy=\"DELETE\")\nmy_index = gcp.firestore.Index(\"my-index\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"atestcollection\",\n fields=[\n {\n \"field_path\": \"name\",\n \"order\": \"ASCENDING\",\n },\n {\n \"field_path\": \"description\",\n \"order\": \"DESCENDING\",\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 database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_DISABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var my_index = new Gcp.Firestore.Index(\"my-index\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"atestcollection\",\n Fields = new[]\n {\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"name\",\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"description\",\n Order = \"DESCENDING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_DISABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewIndex(ctx, \"my-index\", \u0026firestore.IndexArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"atestcollection\"),\n\t\t\tFields: firestore.IndexFieldArray{\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"name\"),\n\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t},\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"description\"),\n\t\t\t\t\tOrder: pulumi.String(\"DESCENDING\"),\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Index;\nimport com.pulumi.gcp.firestore.IndexArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldArgs;\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 database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_DISABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var my_index = new Index(\"my-index\", IndexArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"atestcollection\")\n .fields( \n IndexFieldArgs.builder()\n .fieldPath(\"name\")\n .order(\"ASCENDING\")\n .build(),\n IndexFieldArgs.builder()\n .fieldPath(\"description\")\n .order(\"DESCENDING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_DISABLED\n deletionPolicy: DELETE\n my-index:\n type: gcp:firestore:Index\n properties:\n project: my-project-name\n database: ${database.name}\n collection: atestcollection\n fields:\n - fieldPath: name\n order: ASCENDING\n - fieldPath: description\n order: DESCENDING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Index Datastore Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id-dm\",\n locationId: \"nam5\",\n type: \"DATASTORE_MODE\",\n deleteProtectionState: \"DELETE_PROTECTION_DISABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst my_index = new gcp.firestore.Index(\"my-index\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"atestcollection\",\n queryScope: \"COLLECTION_RECURSIVE\",\n apiScope: \"DATASTORE_MODE_API\",\n fields: [\n {\n fieldPath: \"name\",\n order: \"ASCENDING\",\n },\n {\n fieldPath: \"description\",\n order: \"DESCENDING\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id-dm\",\n location_id=\"nam5\",\n type=\"DATASTORE_MODE\",\n delete_protection_state=\"DELETE_PROTECTION_DISABLED\",\n deletion_policy=\"DELETE\")\nmy_index = gcp.firestore.Index(\"my-index\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"atestcollection\",\n query_scope=\"COLLECTION_RECURSIVE\",\n api_scope=\"DATASTORE_MODE_API\",\n fields=[\n {\n \"field_path\": \"name\",\n \"order\": \"ASCENDING\",\n },\n {\n \"field_path\": \"description\",\n \"order\": \"DESCENDING\",\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 database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id-dm\",\n LocationId = \"nam5\",\n Type = \"DATASTORE_MODE\",\n DeleteProtectionState = \"DELETE_PROTECTION_DISABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var my_index = new Gcp.Firestore.Index(\"my-index\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"atestcollection\",\n QueryScope = \"COLLECTION_RECURSIVE\",\n ApiScope = \"DATASTORE_MODE_API\",\n Fields = new[]\n {\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"name\",\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"description\",\n Order = \"DESCENDING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id-dm\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"DATASTORE_MODE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_DISABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewIndex(ctx, \"my-index\", \u0026firestore.IndexArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"atestcollection\"),\n\t\t\tQueryScope: pulumi.String(\"COLLECTION_RECURSIVE\"),\n\t\t\tApiScope: pulumi.String(\"DATASTORE_MODE_API\"),\n\t\t\tFields: firestore.IndexFieldArray{\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"name\"),\n\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t},\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"description\"),\n\t\t\t\t\tOrder: pulumi.String(\"DESCENDING\"),\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Index;\nimport com.pulumi.gcp.firestore.IndexArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldArgs;\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 database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id-dm\")\n .locationId(\"nam5\")\n .type(\"DATASTORE_MODE\")\n .deleteProtectionState(\"DELETE_PROTECTION_DISABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var my_index = new Index(\"my-index\", IndexArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"atestcollection\")\n .queryScope(\"COLLECTION_RECURSIVE\")\n .apiScope(\"DATASTORE_MODE_API\")\n .fields( \n IndexFieldArgs.builder()\n .fieldPath(\"name\")\n .order(\"ASCENDING\")\n .build(),\n IndexFieldArgs.builder()\n .fieldPath(\"description\")\n .order(\"DESCENDING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id-dm\n locationId: nam5\n type: DATASTORE_MODE\n deleteProtectionState: DELETE_PROTECTION_DISABLED\n deletionPolicy: DELETE\n my-index:\n type: gcp:firestore:Index\n properties:\n project: my-project-name\n database: ${database.name}\n collection: atestcollection\n queryScope: COLLECTION_RECURSIVE\n apiScope: DATASTORE_MODE_API\n fields:\n - fieldPath: name\n order: ASCENDING\n - fieldPath: description\n order: DESCENDING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Index Vector\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id-vector\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_DISABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst my_index = new gcp.firestore.Index(\"my-index\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"atestcollection\",\n fields: [\n {\n fieldPath: \"field_name\",\n order: \"ASCENDING\",\n },\n {\n fieldPath: \"__name__\",\n order: \"ASCENDING\",\n },\n {\n fieldPath: \"description\",\n vectorConfig: {\n dimension: 128,\n flat: {},\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id-vector\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_DISABLED\",\n deletion_policy=\"DELETE\")\nmy_index = gcp.firestore.Index(\"my-index\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"atestcollection\",\n fields=[\n {\n \"field_path\": \"field_name\",\n \"order\": \"ASCENDING\",\n },\n {\n \"field_path\": \"__name__\",\n \"order\": \"ASCENDING\",\n },\n {\n \"field_path\": \"description\",\n \"vector_config\": {\n \"dimension\": 128,\n \"flat\": {},\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 database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id-vector\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_DISABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var my_index = new Gcp.Firestore.Index(\"my-index\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"atestcollection\",\n Fields = new[]\n {\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"field_name\",\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"__name__\",\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"description\",\n VectorConfig = new Gcp.Firestore.Inputs.IndexFieldVectorConfigArgs\n {\n Dimension = 128,\n Flat = null,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id-vector\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_DISABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewIndex(ctx, \"my-index\", \u0026firestore.IndexArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"atestcollection\"),\n\t\t\tFields: firestore.IndexFieldArray{\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"field_name\"),\n\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t},\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"__name__\"),\n\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t},\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"description\"),\n\t\t\t\t\tVectorConfig: \u0026firestore.IndexFieldVectorConfigArgs{\n\t\t\t\t\t\tDimension: pulumi.Int(128),\n\t\t\t\t\t\tFlat: nil,\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.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Index;\nimport com.pulumi.gcp.firestore.IndexArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldVectorConfigArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldVectorConfigFlatArgs;\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 database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id-vector\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_DISABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var my_index = new Index(\"my-index\", IndexArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"atestcollection\")\n .fields( \n IndexFieldArgs.builder()\n .fieldPath(\"field_name\")\n .order(\"ASCENDING\")\n .build(),\n IndexFieldArgs.builder()\n .fieldPath(\"__name__\")\n .order(\"ASCENDING\")\n .build(),\n IndexFieldArgs.builder()\n .fieldPath(\"description\")\n .vectorConfig(IndexFieldVectorConfigArgs.builder()\n .dimension(128)\n .flat()\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id-vector\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_DISABLED\n deletionPolicy: DELETE\n my-index:\n type: gcp:firestore:Index\n properties:\n project: my-project-name\n database: ${database.name}\n collection: atestcollection\n fields:\n - fieldPath: field_name\n order: ASCENDING\n - fieldPath: __name__\n order: ASCENDING\n - fieldPath: description\n vectorConfig:\n dimension: 128\n flat: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIndex can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Index can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firestore/index:Index default {{name}}\n```\n\n", "properties": { "apiScope": { "type": "string", @@ -193563,7 +193563,7 @@ } }, "gcp:folder/accessApprovalSettings:AccessApprovalSettings": { - "description": "Access Approval enables you to require your explicit approval whenever Google support and engineering need to access your customer content.\n\n\nTo get more information about FolderSettings, see:\n\n* [API documentation](https://cloud.google.com/access-approval/docs/reference/rest/v1/folders)\n\n## Example Usage\n\n### Folder Access Approval Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myFolder = new gcp.organizations.Folder(\"my_folder\", {\n displayName: \"my-folder\",\n parent: \"organizations/123456789\",\n});\nconst folderAccessApproval = new gcp.folder.AccessApprovalSettings(\"folder_access_approval\", {\n folderId: myFolder.folderId,\n notificationEmails: [\n \"testuser@example.com\",\n \"example.user@example.com\",\n ],\n enrolledServices: [{\n cloudProduct: \"all\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_folder = gcp.organizations.Folder(\"my_folder\",\n display_name=\"my-folder\",\n parent=\"organizations/123456789\")\nfolder_access_approval = gcp.folder.AccessApprovalSettings(\"folder_access_approval\",\n folder_id=my_folder.folder_id,\n notification_emails=[\n \"testuser@example.com\",\n \"example.user@example.com\",\n ],\n enrolled_services=[{\n \"cloudProduct\": \"all\",\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 myFolder = new Gcp.Organizations.Folder(\"my_folder\", new()\n {\n DisplayName = \"my-folder\",\n Parent = \"organizations/123456789\",\n });\n\n var folderAccessApproval = new Gcp.Folder.AccessApprovalSettings(\"folder_access_approval\", new()\n {\n FolderId = myFolder.FolderId,\n NotificationEmails = new[]\n {\n \"testuser@example.com\",\n \"example.user@example.com\",\n },\n EnrolledServices = new[]\n {\n new Gcp.Folder.Inputs.AccessApprovalSettingsEnrolledServiceArgs\n {\n CloudProduct = \"all\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyFolder, err := organizations.NewFolder(ctx, \"my_folder\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"my-folder\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = folder.NewAccessApprovalSettings(ctx, \"folder_access_approval\", \u0026folder.AccessApprovalSettingsArgs{\n\t\t\tFolderId: myFolder.FolderId,\n\t\t\tNotificationEmails: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"testuser@example.com\"),\n\t\t\t\tpulumi.String(\"example.user@example.com\"),\n\t\t\t},\n\t\t\tEnrolledServices: folder.AccessApprovalSettingsEnrolledServiceArray{\n\t\t\t\t\u0026folder.AccessApprovalSettingsEnrolledServiceArgs{\n\t\t\t\t\tCloudProduct: pulumi.String(\"all\"),\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.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.folder.AccessApprovalSettings;\nimport com.pulumi.gcp.folder.AccessApprovalSettingsArgs;\nimport com.pulumi.gcp.folder.inputs.AccessApprovalSettingsEnrolledServiceArgs;\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 myFolder = new Folder(\"myFolder\", FolderArgs.builder()\n .displayName(\"my-folder\")\n .parent(\"organizations/123456789\")\n .build());\n\n var folderAccessApproval = new AccessApprovalSettings(\"folderAccessApproval\", AccessApprovalSettingsArgs.builder()\n .folderId(myFolder.folderId())\n .notificationEmails( \n \"testuser@example.com\",\n \"example.user@example.com\")\n .enrolledServices(AccessApprovalSettingsEnrolledServiceArgs.builder()\n .cloudProduct(\"all\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myFolder:\n type: gcp:organizations:Folder\n name: my_folder\n properties:\n displayName: my-folder\n parent: organizations/123456789\n folderAccessApproval:\n type: gcp:folder:AccessApprovalSettings\n name: folder_access_approval\n properties:\n folderId: ${myFolder.folderId}\n notificationEmails:\n - testuser@example.com\n - example.user@example.com\n enrolledServices:\n - cloudProduct: all\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Folder Access Approval Active Key Version\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myFolder = new gcp.organizations.Folder(\"my_folder\", {\n displayName: \"my-folder\",\n parent: \"organizations/123456789\",\n});\nconst myProject = new gcp.organizations.Project(\"my_project\", {\n name: \"My Project\",\n projectId: \"your-project-id\",\n folderId: myFolder.name,\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"key-ring\",\n location: \"global\",\n project: myProject.projectId,\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"crypto-key\",\n keyRing: keyRing.id,\n purpose: \"ASYMMETRIC_SIGN\",\n versionTemplate: {\n algorithm: \"EC_SIGN_P384_SHA384\",\n },\n});\nconst serviceAccount = gcp.accessapproval.getFolderServiceAccountOutput({\n folderId: myFolder.folderId,\n});\nconst iam = new gcp.kms.CryptoKeyIAMMember(\"iam\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.signerVerifier\",\n member: serviceAccount.apply(serviceAccount =\u003e `serviceAccount:${serviceAccount.accountEmail}`),\n});\nconst cryptoKeyVersion = gcp.kms.getKMSCryptoKeyVersionOutput({\n cryptoKey: cryptoKey.id,\n});\nconst folderAccessApproval = new gcp.folder.AccessApprovalSettings(\"folder_access_approval\", {\n folderId: myFolder.folderId,\n activeKeyVersion: cryptoKeyVersion.apply(cryptoKeyVersion =\u003e cryptoKeyVersion.name),\n enrolledServices: [{\n cloudProduct: \"all\",\n }],\n}, {\n dependsOn: [iam],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_folder = gcp.organizations.Folder(\"my_folder\",\n display_name=\"my-folder\",\n parent=\"organizations/123456789\")\nmy_project = gcp.organizations.Project(\"my_project\",\n name=\"My Project\",\n project_id=\"your-project-id\",\n folder_id=my_folder.name)\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"key-ring\",\n location=\"global\",\n project=my_project.project_id)\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"crypto-key\",\n key_ring=key_ring.id,\n purpose=\"ASYMMETRIC_SIGN\",\n version_template={\n \"algorithm\": \"EC_SIGN_P384_SHA384\",\n })\nservice_account = gcp.accessapproval.get_folder_service_account_output(folder_id=my_folder.folder_id)\niam = gcp.kms.CryptoKeyIAMMember(\"iam\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.signerVerifier\",\n member=service_account.apply(lambda service_account: f\"serviceAccount:{service_account.account_email}\"))\ncrypto_key_version = gcp.kms.get_kms_crypto_key_version_output(crypto_key=crypto_key.id)\nfolder_access_approval = gcp.folder.AccessApprovalSettings(\"folder_access_approval\",\n folder_id=my_folder.folder_id,\n active_key_version=crypto_key_version.name,\n enrolled_services=[{\n \"cloudProduct\": \"all\",\n }],\n opts = pulumi.ResourceOptions(depends_on=[iam]))\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 myFolder = new Gcp.Organizations.Folder(\"my_folder\", new()\n {\n DisplayName = \"my-folder\",\n Parent = \"organizations/123456789\",\n });\n\n var myProject = new Gcp.Organizations.Project(\"my_project\", new()\n {\n Name = \"My Project\",\n ProjectId = \"your-project-id\",\n FolderId = myFolder.Name,\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"key-ring\",\n Location = \"global\",\n Project = myProject.ProjectId,\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"crypto-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ASYMMETRIC_SIGN\",\n VersionTemplate = new Gcp.Kms.Inputs.CryptoKeyVersionTemplateArgs\n {\n Algorithm = \"EC_SIGN_P384_SHA384\",\n },\n });\n\n var serviceAccount = Gcp.AccessApproval.GetFolderServiceAccount.Invoke(new()\n {\n FolderId = myFolder.FolderId,\n });\n\n var iam = new Gcp.Kms.CryptoKeyIAMMember(\"iam\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.signerVerifier\",\n Member = $\"serviceAccount:{serviceAccount.Apply(getFolderServiceAccountResult =\u003e getFolderServiceAccountResult.AccountEmail)}\",\n });\n\n var cryptoKeyVersion = Gcp.Kms.GetKMSCryptoKeyVersion.Invoke(new()\n {\n CryptoKey = cryptoKey.Id,\n });\n\n var folderAccessApproval = new Gcp.Folder.AccessApprovalSettings(\"folder_access_approval\", new()\n {\n FolderId = myFolder.FolderId,\n ActiveKeyVersion = cryptoKeyVersion.Apply(getKMSCryptoKeyVersionResult =\u003e getKMSCryptoKeyVersionResult.Name),\n EnrolledServices = new[]\n {\n new Gcp.Folder.Inputs.AccessApprovalSettingsEnrolledServiceArgs\n {\n CloudProduct = \"all\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n iam,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/accessapproval\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyFolder, err := organizations.NewFolder(ctx, \"my_folder\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"my-folder\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyProject, err := organizations.NewProject(ctx, \"my_project\", \u0026organizations.ProjectArgs{\n\t\t\tName: pulumi.String(\"My Project\"),\n\t\t\tProjectId: pulumi.String(\"your-project-id\"),\n\t\t\tFolderId: myFolder.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"key-ring\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tProject: myProject.ProjectId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"crypto-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ASYMMETRIC_SIGN\"),\n\t\t\tVersionTemplate: \u0026kms.CryptoKeyVersionTemplateArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"EC_SIGN_P384_SHA384\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceAccount := accessapproval.GetFolderServiceAccountOutput(ctx, accessapproval.GetFolderServiceAccountOutputArgs{\n\t\t\tFolderId: myFolder.FolderId,\n\t\t}, nil)\n\t\tiam, err := kms.NewCryptoKeyIAMMember(ctx, \"iam\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.signerVerifier\"),\n\t\t\tMember: serviceAccount.ApplyT(func(serviceAccount accessapproval.GetFolderServiceAccountResult) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", serviceAccount.AccountEmail), 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\tcryptoKeyVersion := kms.GetKMSCryptoKeyVersionOutput(ctx, kms.GetKMSCryptoKeyVersionOutputArgs{\n\t\t\tCryptoKey: cryptoKey.ID(),\n\t\t}, nil)\n\t\t_, err = folder.NewAccessApprovalSettings(ctx, \"folder_access_approval\", \u0026folder.AccessApprovalSettingsArgs{\n\t\t\tFolderId: myFolder.FolderId,\n\t\t\tActiveKeyVersion: cryptoKeyVersion.ApplyT(func(cryptoKeyVersion kms.GetKMSCryptoKeyVersionResult) (*string, error) {\n\t\t\t\treturn \u0026cryptoKeyVersion.Name, nil\n\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\tEnrolledServices: folder.AccessApprovalSettingsEnrolledServiceArray{\n\t\t\t\t\u0026folder.AccessApprovalSettingsEnrolledServiceArgs{\n\t\t\t\t\tCloudProduct: pulumi.String(\"all\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tiam,\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.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\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.kms.inputs.CryptoKeyVersionTemplateArgs;\nimport com.pulumi.gcp.accessapproval.AccessapprovalFunctions;\nimport com.pulumi.gcp.accessapproval.inputs.GetFolderServiceAccountArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.kms.KmsFunctions;\nimport com.pulumi.gcp.kms.inputs.GetKMSCryptoKeyVersionArgs;\nimport com.pulumi.gcp.folder.AccessApprovalSettings;\nimport com.pulumi.gcp.folder.AccessApprovalSettingsArgs;\nimport com.pulumi.gcp.folder.inputs.AccessApprovalSettingsEnrolledServiceArgs;\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 myFolder = new Folder(\"myFolder\", FolderArgs.builder()\n .displayName(\"my-folder\")\n .parent(\"organizations/123456789\")\n .build());\n\n var myProject = new Project(\"myProject\", ProjectArgs.builder()\n .name(\"My Project\")\n .projectId(\"your-project-id\")\n .folderId(myFolder.name())\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"key-ring\")\n .location(\"global\")\n .project(myProject.projectId())\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"crypto-key\")\n .keyRing(keyRing.id())\n .purpose(\"ASYMMETRIC_SIGN\")\n .versionTemplate(CryptoKeyVersionTemplateArgs.builder()\n .algorithm(\"EC_SIGN_P384_SHA384\")\n .build())\n .build());\n\n final var serviceAccount = AccessapprovalFunctions.getFolderServiceAccount(GetFolderServiceAccountArgs.builder()\n .folderId(myFolder.folderId())\n .build());\n\n var iam = new CryptoKeyIAMMember(\"iam\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.signerVerifier\")\n .member(serviceAccount.applyValue(getFolderServiceAccountResult -\u003e getFolderServiceAccountResult).applyValue(serviceAccount -\u003e String.format(\"serviceAccount:%s\", serviceAccount.applyValue(getFolderServiceAccountResult -\u003e getFolderServiceAccountResult.accountEmail()))))\n .build());\n\n final var cryptoKeyVersion = KmsFunctions.getKMSCryptoKeyVersion(GetKMSCryptoKeyVersionArgs.builder()\n .cryptoKey(cryptoKey.id())\n .build());\n\n var folderAccessApproval = new AccessApprovalSettings(\"folderAccessApproval\", AccessApprovalSettingsArgs.builder()\n .folderId(myFolder.folderId())\n .activeKeyVersion(cryptoKeyVersion.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult).applyValue(cryptoKeyVersion -\u003e cryptoKeyVersion.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult.name())))\n .enrolledServices(AccessApprovalSettingsEnrolledServiceArgs.builder()\n .cloudProduct(\"all\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(iam)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myFolder:\n type: gcp:organizations:Folder\n name: my_folder\n properties:\n displayName: my-folder\n parent: organizations/123456789\n myProject:\n type: gcp:organizations:Project\n name: my_project\n properties:\n name: My Project\n projectId: your-project-id\n folderId: ${myFolder.name}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: key-ring\n location: global\n project: ${myProject.projectId}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: crypto-key\n keyRing: ${keyRing.id}\n purpose: ASYMMETRIC_SIGN\n versionTemplate:\n algorithm: EC_SIGN_P384_SHA384\n iam:\n type: gcp:kms:CryptoKeyIAMMember\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.signerVerifier\n member: serviceAccount:${serviceAccount.accountEmail}\n folderAccessApproval:\n type: gcp:folder:AccessApprovalSettings\n name: folder_access_approval\n properties:\n folderId: ${myFolder.folderId}\n activeKeyVersion: ${cryptoKeyVersion.name}\n enrolledServices:\n - cloudProduct: all\n options:\n dependson:\n - ${iam}\nvariables:\n serviceAccount:\n fn::invoke:\n Function: gcp:accessapproval:getFolderServiceAccount\n Arguments:\n folderId: ${myFolder.folderId}\n cryptoKeyVersion:\n fn::invoke:\n Function: gcp:kms:getKMSCryptoKeyVersion\n Arguments:\n cryptoKey: ${cryptoKey.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFolderSettings can be imported using any of these accepted formats:\n\n* `folders/{{folder_id}}/accessApprovalSettings`\n\n* `{{folder_id}}`\n\nWhen using the `pulumi import` command, FolderSettings can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:folder/accessApprovalSettings:AccessApprovalSettings default folders/{{folder_id}}/accessApprovalSettings\n```\n\n```sh\n$ pulumi import gcp:folder/accessApprovalSettings:AccessApprovalSettings default {{folder_id}}\n```\n\n", + "description": "Access Approval enables you to require your explicit approval whenever Google support and engineering need to access your customer content.\n\n\nTo get more information about FolderSettings, see:\n\n* [API documentation](https://cloud.google.com/access-approval/docs/reference/rest/v1/folders)\n\n## Example Usage\n\n### Folder Access Approval Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myFolder = new gcp.organizations.Folder(\"my_folder\", {\n displayName: \"my-folder\",\n parent: \"organizations/123456789\",\n});\nconst folderAccessApproval = new gcp.folder.AccessApprovalSettings(\"folder_access_approval\", {\n folderId: myFolder.folderId,\n notificationEmails: [\n \"testuser@example.com\",\n \"example.user@example.com\",\n ],\n enrolledServices: [{\n cloudProduct: \"all\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_folder = gcp.organizations.Folder(\"my_folder\",\n display_name=\"my-folder\",\n parent=\"organizations/123456789\")\nfolder_access_approval = gcp.folder.AccessApprovalSettings(\"folder_access_approval\",\n folder_id=my_folder.folder_id,\n notification_emails=[\n \"testuser@example.com\",\n \"example.user@example.com\",\n ],\n enrolled_services=[{\n \"cloud_product\": \"all\",\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 myFolder = new Gcp.Organizations.Folder(\"my_folder\", new()\n {\n DisplayName = \"my-folder\",\n Parent = \"organizations/123456789\",\n });\n\n var folderAccessApproval = new Gcp.Folder.AccessApprovalSettings(\"folder_access_approval\", new()\n {\n FolderId = myFolder.FolderId,\n NotificationEmails = new[]\n {\n \"testuser@example.com\",\n \"example.user@example.com\",\n },\n EnrolledServices = new[]\n {\n new Gcp.Folder.Inputs.AccessApprovalSettingsEnrolledServiceArgs\n {\n CloudProduct = \"all\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyFolder, err := organizations.NewFolder(ctx, \"my_folder\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"my-folder\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = folder.NewAccessApprovalSettings(ctx, \"folder_access_approval\", \u0026folder.AccessApprovalSettingsArgs{\n\t\t\tFolderId: myFolder.FolderId,\n\t\t\tNotificationEmails: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"testuser@example.com\"),\n\t\t\t\tpulumi.String(\"example.user@example.com\"),\n\t\t\t},\n\t\t\tEnrolledServices: folder.AccessApprovalSettingsEnrolledServiceArray{\n\t\t\t\t\u0026folder.AccessApprovalSettingsEnrolledServiceArgs{\n\t\t\t\t\tCloudProduct: pulumi.String(\"all\"),\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.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.folder.AccessApprovalSettings;\nimport com.pulumi.gcp.folder.AccessApprovalSettingsArgs;\nimport com.pulumi.gcp.folder.inputs.AccessApprovalSettingsEnrolledServiceArgs;\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 myFolder = new Folder(\"myFolder\", FolderArgs.builder()\n .displayName(\"my-folder\")\n .parent(\"organizations/123456789\")\n .build());\n\n var folderAccessApproval = new AccessApprovalSettings(\"folderAccessApproval\", AccessApprovalSettingsArgs.builder()\n .folderId(myFolder.folderId())\n .notificationEmails( \n \"testuser@example.com\",\n \"example.user@example.com\")\n .enrolledServices(AccessApprovalSettingsEnrolledServiceArgs.builder()\n .cloudProduct(\"all\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myFolder:\n type: gcp:organizations:Folder\n name: my_folder\n properties:\n displayName: my-folder\n parent: organizations/123456789\n folderAccessApproval:\n type: gcp:folder:AccessApprovalSettings\n name: folder_access_approval\n properties:\n folderId: ${myFolder.folderId}\n notificationEmails:\n - testuser@example.com\n - example.user@example.com\n enrolledServices:\n - cloudProduct: all\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Folder Access Approval Active Key Version\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myFolder = new gcp.organizations.Folder(\"my_folder\", {\n displayName: \"my-folder\",\n parent: \"organizations/123456789\",\n});\nconst myProject = new gcp.organizations.Project(\"my_project\", {\n name: \"My Project\",\n projectId: \"your-project-id\",\n folderId: myFolder.name,\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"key-ring\",\n location: \"global\",\n project: myProject.projectId,\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"crypto-key\",\n keyRing: keyRing.id,\n purpose: \"ASYMMETRIC_SIGN\",\n versionTemplate: {\n algorithm: \"EC_SIGN_P384_SHA384\",\n },\n});\nconst serviceAccount = gcp.accessapproval.getFolderServiceAccountOutput({\n folderId: myFolder.folderId,\n});\nconst iam = new gcp.kms.CryptoKeyIAMMember(\"iam\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.signerVerifier\",\n member: serviceAccount.apply(serviceAccount =\u003e `serviceAccount:${serviceAccount.accountEmail}`),\n});\nconst cryptoKeyVersion = gcp.kms.getKMSCryptoKeyVersionOutput({\n cryptoKey: cryptoKey.id,\n});\nconst folderAccessApproval = new gcp.folder.AccessApprovalSettings(\"folder_access_approval\", {\n folderId: myFolder.folderId,\n activeKeyVersion: cryptoKeyVersion.apply(cryptoKeyVersion =\u003e cryptoKeyVersion.name),\n enrolledServices: [{\n cloudProduct: \"all\",\n }],\n}, {\n dependsOn: [iam],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_folder = gcp.organizations.Folder(\"my_folder\",\n display_name=\"my-folder\",\n parent=\"organizations/123456789\")\nmy_project = gcp.organizations.Project(\"my_project\",\n name=\"My Project\",\n project_id=\"your-project-id\",\n folder_id=my_folder.name)\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"key-ring\",\n location=\"global\",\n project=my_project.project_id)\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"crypto-key\",\n key_ring=key_ring.id,\n purpose=\"ASYMMETRIC_SIGN\",\n version_template={\n \"algorithm\": \"EC_SIGN_P384_SHA384\",\n })\nservice_account = gcp.accessapproval.get_folder_service_account_output(folder_id=my_folder.folder_id)\niam = gcp.kms.CryptoKeyIAMMember(\"iam\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.signerVerifier\",\n member=service_account.apply(lambda service_account: f\"serviceAccount:{service_account.account_email}\"))\ncrypto_key_version = gcp.kms.get_kms_crypto_key_version_output(crypto_key=crypto_key.id)\nfolder_access_approval = gcp.folder.AccessApprovalSettings(\"folder_access_approval\",\n folder_id=my_folder.folder_id,\n active_key_version=crypto_key_version.name,\n enrolled_services=[{\n \"cloud_product\": \"all\",\n }],\n opts = pulumi.ResourceOptions(depends_on=[iam]))\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 myFolder = new Gcp.Organizations.Folder(\"my_folder\", new()\n {\n DisplayName = \"my-folder\",\n Parent = \"organizations/123456789\",\n });\n\n var myProject = new Gcp.Organizations.Project(\"my_project\", new()\n {\n Name = \"My Project\",\n ProjectId = \"your-project-id\",\n FolderId = myFolder.Name,\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"key-ring\",\n Location = \"global\",\n Project = myProject.ProjectId,\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"crypto-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ASYMMETRIC_SIGN\",\n VersionTemplate = new Gcp.Kms.Inputs.CryptoKeyVersionTemplateArgs\n {\n Algorithm = \"EC_SIGN_P384_SHA384\",\n },\n });\n\n var serviceAccount = Gcp.AccessApproval.GetFolderServiceAccount.Invoke(new()\n {\n FolderId = myFolder.FolderId,\n });\n\n var iam = new Gcp.Kms.CryptoKeyIAMMember(\"iam\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.signerVerifier\",\n Member = $\"serviceAccount:{serviceAccount.Apply(getFolderServiceAccountResult =\u003e getFolderServiceAccountResult.AccountEmail)}\",\n });\n\n var cryptoKeyVersion = Gcp.Kms.GetKMSCryptoKeyVersion.Invoke(new()\n {\n CryptoKey = cryptoKey.Id,\n });\n\n var folderAccessApproval = new Gcp.Folder.AccessApprovalSettings(\"folder_access_approval\", new()\n {\n FolderId = myFolder.FolderId,\n ActiveKeyVersion = cryptoKeyVersion.Apply(getKMSCryptoKeyVersionResult =\u003e getKMSCryptoKeyVersionResult.Name),\n EnrolledServices = new[]\n {\n new Gcp.Folder.Inputs.AccessApprovalSettingsEnrolledServiceArgs\n {\n CloudProduct = \"all\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n iam,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/accessapproval\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyFolder, err := organizations.NewFolder(ctx, \"my_folder\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"my-folder\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyProject, err := organizations.NewProject(ctx, \"my_project\", \u0026organizations.ProjectArgs{\n\t\t\tName: pulumi.String(\"My Project\"),\n\t\t\tProjectId: pulumi.String(\"your-project-id\"),\n\t\t\tFolderId: myFolder.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"key-ring\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tProject: myProject.ProjectId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"crypto-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ASYMMETRIC_SIGN\"),\n\t\t\tVersionTemplate: \u0026kms.CryptoKeyVersionTemplateArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"EC_SIGN_P384_SHA384\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceAccount := accessapproval.GetFolderServiceAccountOutput(ctx, accessapproval.GetFolderServiceAccountOutputArgs{\n\t\t\tFolderId: myFolder.FolderId,\n\t\t}, nil)\n\t\tiam, err := kms.NewCryptoKeyIAMMember(ctx, \"iam\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.signerVerifier\"),\n\t\t\tMember: serviceAccount.ApplyT(func(serviceAccount accessapproval.GetFolderServiceAccountResult) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", serviceAccount.AccountEmail), 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\tcryptoKeyVersion := kms.GetKMSCryptoKeyVersionOutput(ctx, kms.GetKMSCryptoKeyVersionOutputArgs{\n\t\t\tCryptoKey: cryptoKey.ID(),\n\t\t}, nil)\n\t\t_, err = folder.NewAccessApprovalSettings(ctx, \"folder_access_approval\", \u0026folder.AccessApprovalSettingsArgs{\n\t\t\tFolderId: myFolder.FolderId,\n\t\t\tActiveKeyVersion: pulumi.String(cryptoKeyVersion.ApplyT(func(cryptoKeyVersion kms.GetKMSCryptoKeyVersionResult) (*string, error) {\n\t\t\t\treturn \u0026cryptoKeyVersion.Name, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tEnrolledServices: folder.AccessApprovalSettingsEnrolledServiceArray{\n\t\t\t\t\u0026folder.AccessApprovalSettingsEnrolledServiceArgs{\n\t\t\t\t\tCloudProduct: pulumi.String(\"all\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tiam,\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.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\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.kms.inputs.CryptoKeyVersionTemplateArgs;\nimport com.pulumi.gcp.accessapproval.AccessapprovalFunctions;\nimport com.pulumi.gcp.accessapproval.inputs.GetFolderServiceAccountArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.kms.KmsFunctions;\nimport com.pulumi.gcp.kms.inputs.GetKMSCryptoKeyVersionArgs;\nimport com.pulumi.gcp.folder.AccessApprovalSettings;\nimport com.pulumi.gcp.folder.AccessApprovalSettingsArgs;\nimport com.pulumi.gcp.folder.inputs.AccessApprovalSettingsEnrolledServiceArgs;\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 myFolder = new Folder(\"myFolder\", FolderArgs.builder()\n .displayName(\"my-folder\")\n .parent(\"organizations/123456789\")\n .build());\n\n var myProject = new Project(\"myProject\", ProjectArgs.builder()\n .name(\"My Project\")\n .projectId(\"your-project-id\")\n .folderId(myFolder.name())\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"key-ring\")\n .location(\"global\")\n .project(myProject.projectId())\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"crypto-key\")\n .keyRing(keyRing.id())\n .purpose(\"ASYMMETRIC_SIGN\")\n .versionTemplate(CryptoKeyVersionTemplateArgs.builder()\n .algorithm(\"EC_SIGN_P384_SHA384\")\n .build())\n .build());\n\n final var serviceAccount = AccessapprovalFunctions.getFolderServiceAccount(GetFolderServiceAccountArgs.builder()\n .folderId(myFolder.folderId())\n .build());\n\n var iam = new CryptoKeyIAMMember(\"iam\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.signerVerifier\")\n .member(serviceAccount.applyValue(getFolderServiceAccountResult -\u003e getFolderServiceAccountResult).applyValue(serviceAccount -\u003e String.format(\"serviceAccount:%s\", serviceAccount.applyValue(getFolderServiceAccountResult -\u003e getFolderServiceAccountResult.accountEmail()))))\n .build());\n\n final var cryptoKeyVersion = KmsFunctions.getKMSCryptoKeyVersion(GetKMSCryptoKeyVersionArgs.builder()\n .cryptoKey(cryptoKey.id())\n .build());\n\n var folderAccessApproval = new AccessApprovalSettings(\"folderAccessApproval\", AccessApprovalSettingsArgs.builder()\n .folderId(myFolder.folderId())\n .activeKeyVersion(cryptoKeyVersion.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult).applyValue(cryptoKeyVersion -\u003e cryptoKeyVersion.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult.name())))\n .enrolledServices(AccessApprovalSettingsEnrolledServiceArgs.builder()\n .cloudProduct(\"all\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(iam)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myFolder:\n type: gcp:organizations:Folder\n name: my_folder\n properties:\n displayName: my-folder\n parent: organizations/123456789\n myProject:\n type: gcp:organizations:Project\n name: my_project\n properties:\n name: My Project\n projectId: your-project-id\n folderId: ${myFolder.name}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: key-ring\n location: global\n project: ${myProject.projectId}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: crypto-key\n keyRing: ${keyRing.id}\n purpose: ASYMMETRIC_SIGN\n versionTemplate:\n algorithm: EC_SIGN_P384_SHA384\n iam:\n type: gcp:kms:CryptoKeyIAMMember\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.signerVerifier\n member: serviceAccount:${serviceAccount.accountEmail}\n folderAccessApproval:\n type: gcp:folder:AccessApprovalSettings\n name: folder_access_approval\n properties:\n folderId: ${myFolder.folderId}\n activeKeyVersion: ${cryptoKeyVersion.name}\n enrolledServices:\n - cloudProduct: all\n options:\n dependson:\n - ${iam}\nvariables:\n serviceAccount:\n fn::invoke:\n Function: gcp:accessapproval:getFolderServiceAccount\n Arguments:\n folderId: ${myFolder.folderId}\n cryptoKeyVersion:\n fn::invoke:\n Function: gcp:kms:getKMSCryptoKeyVersion\n Arguments:\n cryptoKey: ${cryptoKey.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFolderSettings can be imported using any of these accepted formats:\n\n* `folders/{{folder_id}}/accessApprovalSettings`\n\n* `{{folder_id}}`\n\nWhen using the `pulumi import` command, FolderSettings can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:folder/accessApprovalSettings:AccessApprovalSettings default folders/{{folder_id}}/accessApprovalSettings\n```\n\n```sh\n$ pulumi import gcp:folder/accessApprovalSettings:AccessApprovalSettings default {{folder_id}}\n```\n\n", "properties": { "activeKeyVersion": { "type": "string", @@ -193781,7 +193781,7 @@ } }, "gcp:folder/iAMMember:IAMMember": { - "description": "Four different resources help you manage your IAM policy for a folder. Each of these resources serves a different use case:\n\n* `gcp.folder.IAMPolicy`: Authoritative. Sets the IAM policy for the folder and replaces any existing policy already attached.\n* `gcp.folder.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the folder are preserved.\n* `gcp.folder.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the folder are preserved.\n* `gcp.folder.IamAuditConfig`: Authoritative for a given service. Updates the IAM policy to enable audit logging for the given service.\n\n\n\u003e **Note:** `gcp.folder.IAMPolicy` **cannot** be used in conjunction with `gcp.folder.IAMBinding`, `gcp.folder.IAMMember`, or `gcp.folder.IamAuditConfig` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.folder.IAMBinding` resources **can be** used in conjunction with `gcp.folder.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n\u003e **Note:** The underlying API method `projects.setIamPolicy` has constraints which are documented [here](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). In addition to these constraints, \n IAM Conditions cannot be used with Basic Roles such as Owner. Violating these constraints will result in the API returning a 400 error code so please review these if you encounter errors with this resource.\n\n## gcp.folder.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your folder\n using this resource. Deleting a `gcp.folder.IAMPolicy` removes access\n from anyone without permissions on its parent folder/organization. Proceed with caution.\n It's not recommended to use `gcp.folder.IAMPolicy` with your provider folder\n to avoid locking yourself out, and it should generally only be used with folders\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Folder.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026folder.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\nimport com.pulumi.gcp.folder.inputs.IAMBindingConditionArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Folder.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026folder.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\nimport com.pulumi.gcp.folder.inputs.IAMMemberConditionArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IamAuditConfig(\"folder\", {\n folder: \"folders/1234567\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IamAuditConfig(\"folder\",\n folder=\"folders/1234567\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"logType\": \"ADMIN_READ\",\n },\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\"user:joebloggs@example.com\"],\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 folder = new Gcp.Folder.IamAuditConfig(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIamAuditConfig(ctx, \"folder\", \u0026folder.IamAuditConfigArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: folder.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.folder.IamAuditConfig;\nimport com.pulumi.gcp.folder.IamAuditConfigArgs;\nimport com.pulumi.gcp.folder.inputs.IamAuditConfigAuditLogConfigArgs;\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 folder = new IamAuditConfig(\"folder\", IamAuditConfigArgs.builder()\n .folder(\"folders/1234567\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IamAuditConfig\n properties:\n folder: folders/1234567\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your folder\n using this resource. Deleting a `gcp.folder.IAMPolicy` removes access\n from anyone without permissions on its parent folder/organization. Proceed with caution.\n It's not recommended to use `gcp.folder.IAMPolicy` with your provider folder\n to avoid locking yourself out, and it should generally only be used with folders\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Folder.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026folder.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\nimport com.pulumi.gcp.folder.inputs.IAMBindingConditionArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Folder.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026folder.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\nimport com.pulumi.gcp.folder.inputs.IAMMemberConditionArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IamAuditConfig(\"folder\", {\n folder: \"folders/1234567\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IamAuditConfig(\"folder\",\n folder=\"folders/1234567\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"logType\": \"ADMIN_READ\",\n },\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\"user:joebloggs@example.com\"],\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 folder = new Gcp.Folder.IamAuditConfig(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIamAuditConfig(ctx, \"folder\", \u0026folder.IamAuditConfigArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: folder.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.folder.IamAuditConfig;\nimport com.pulumi.gcp.folder.IamAuditConfigArgs;\nimport com.pulumi.gcp.folder.inputs.IamAuditConfigAuditLogConfigArgs;\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 folder = new IamAuditConfig(\"folder\", IamAuditConfigArgs.builder()\n .folder(\"folders/1234567\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IamAuditConfig\n properties:\n folder: folders/1234567\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing Audit Configs\n\nAn audit config can be imported into a `google_folder_iam_audit_config` resource using the resource's `folder_id` and the `service`, e.g:\n\n* `\"folder/{{folder_id}} foo.googleapis.com\"`\n\nAn `import` block (Terraform v1.5.0 and later) can be used to import audit configs:\n\ntf\n\nimport {\n\n id = \"folder/{{folder_id}} foo.googleapis.com\"\n\n to = google_folder_iam_audit_config.default\n\n}\n\nThe `pulumi import` command can also be used:\n\n```sh\n$ pulumi import gcp:folder/iAMMember:IAMMember default \"folder/{{folder_id}} foo.googleapis.com\"\n```\n\n", + "description": "Four different resources help you manage your IAM policy for a folder. Each of these resources serves a different use case:\n\n* `gcp.folder.IAMPolicy`: Authoritative. Sets the IAM policy for the folder and replaces any existing policy already attached.\n* `gcp.folder.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the folder are preserved.\n* `gcp.folder.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the folder are preserved.\n* `gcp.folder.IamAuditConfig`: Authoritative for a given service. Updates the IAM policy to enable audit logging for the given service.\n\n\n\u003e **Note:** `gcp.folder.IAMPolicy` **cannot** be used in conjunction with `gcp.folder.IAMBinding`, `gcp.folder.IAMMember`, or `gcp.folder.IamAuditConfig` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.folder.IAMBinding` resources **can be** used in conjunction with `gcp.folder.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n\u003e **Note:** The underlying API method `projects.setIamPolicy` has constraints which are documented [here](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). In addition to these constraints, \n IAM Conditions cannot be used with Basic Roles such as Owner. Violating these constraints will result in the API returning a 400 error code so please review these if you encounter errors with this resource.\n\n## gcp.folder.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your folder\n using this resource. Deleting a `gcp.folder.IAMPolicy` removes access\n from anyone without permissions on its parent folder/organization. Proceed with caution.\n It's not recommended to use `gcp.folder.IAMPolicy` with your provider folder\n to avoid locking yourself out, and it should generally only be used with folders\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Folder.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026folder.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\nimport com.pulumi.gcp.folder.inputs.IAMBindingConditionArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Folder.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026folder.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\nimport com.pulumi.gcp.folder.inputs.IAMMemberConditionArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IamAuditConfig(\"folder\", {\n folder: \"folders/1234567\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IamAuditConfig(\"folder\",\n folder=\"folders/1234567\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"log_type\": \"ADMIN_READ\",\n },\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\"user:joebloggs@example.com\"],\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 folder = new Gcp.Folder.IamAuditConfig(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIamAuditConfig(ctx, \"folder\", \u0026folder.IamAuditConfigArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: folder.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.folder.IamAuditConfig;\nimport com.pulumi.gcp.folder.IamAuditConfigArgs;\nimport com.pulumi.gcp.folder.inputs.IamAuditConfigAuditLogConfigArgs;\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 folder = new IamAuditConfig(\"folder\", IamAuditConfigArgs.builder()\n .folder(\"folders/1234567\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IamAuditConfig\n properties:\n folder: folders/1234567\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your folder\n using this resource. Deleting a `gcp.folder.IAMPolicy` removes access\n from anyone without permissions on its parent folder/organization. Proceed with caution.\n It's not recommended to use `gcp.folder.IAMPolicy` with your provider folder\n to avoid locking yourself out, and it should generally only be used with folders\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Folder.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026folder.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\nimport com.pulumi.gcp.folder.inputs.IAMBindingConditionArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Folder.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026folder.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\nimport com.pulumi.gcp.folder.inputs.IAMMemberConditionArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IamAuditConfig(\"folder\", {\n folder: \"folders/1234567\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IamAuditConfig(\"folder\",\n folder=\"folders/1234567\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"log_type\": \"ADMIN_READ\",\n },\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\"user:joebloggs@example.com\"],\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 folder = new Gcp.Folder.IamAuditConfig(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIamAuditConfig(ctx, \"folder\", \u0026folder.IamAuditConfigArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: folder.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.folder.IamAuditConfig;\nimport com.pulumi.gcp.folder.IamAuditConfigArgs;\nimport com.pulumi.gcp.folder.inputs.IamAuditConfigAuditLogConfigArgs;\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 folder = new IamAuditConfig(\"folder\", IamAuditConfigArgs.builder()\n .folder(\"folders/1234567\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IamAuditConfig\n properties:\n folder: folders/1234567\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing Audit Configs\n\nAn audit config can be imported into a `google_folder_iam_audit_config` resource using the resource's `folder_id` and the `service`, e.g:\n\n* `\"folder/{{folder_id}} foo.googleapis.com\"`\n\nAn `import` block (Terraform v1.5.0 and later) can be used to import audit configs:\n\ntf\n\nimport {\n\n id = \"folder/{{folder_id}} foo.googleapis.com\"\n\n to = google_folder_iam_audit_config.default\n\n}\n\nThe `pulumi import` command can also be used:\n\n```sh\n$ pulumi import gcp:folder/iAMMember:IAMMember default \"folder/{{folder_id}} foo.googleapis.com\"\n```\n\n", "properties": { "condition": { "$ref": "#/types/gcp:folder/IAMMemberCondition:IAMMemberCondition", @@ -193869,7 +193869,7 @@ } }, "gcp:folder/iAMPolicy:IAMPolicy": { - "description": "Four different resources help you manage your IAM policy for a folder. Each of these resources serves a different use case:\n\n* `gcp.folder.IAMPolicy`: Authoritative. Sets the IAM policy for the folder and replaces any existing policy already attached.\n* `gcp.folder.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the folder are preserved.\n* `gcp.folder.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the folder are preserved.\n* `gcp.folder.IamAuditConfig`: Authoritative for a given service. Updates the IAM policy to enable audit logging for the given service.\n\n\n\u003e **Note:** `gcp.folder.IAMPolicy` **cannot** be used in conjunction with `gcp.folder.IAMBinding`, `gcp.folder.IAMMember`, or `gcp.folder.IamAuditConfig` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.folder.IAMBinding` resources **can be** used in conjunction with `gcp.folder.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n\u003e **Note:** The underlying API method `projects.setIamPolicy` has constraints which are documented [here](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). In addition to these constraints, \n IAM Conditions cannot be used with Basic Roles such as Owner. Violating these constraints will result in the API returning a 400 error code so please review these if you encounter errors with this resource.\n\n## gcp.folder.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your folder\n using this resource. Deleting a `gcp.folder.IAMPolicy` removes access\n from anyone without permissions on its parent folder/organization. Proceed with caution.\n It's not recommended to use `gcp.folder.IAMPolicy` with your provider folder\n to avoid locking yourself out, and it should generally only be used with folders\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Folder.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026folder.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\nimport com.pulumi.gcp.folder.inputs.IAMBindingConditionArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Folder.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026folder.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\nimport com.pulumi.gcp.folder.inputs.IAMMemberConditionArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IamAuditConfig(\"folder\", {\n folder: \"folders/1234567\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IamAuditConfig(\"folder\",\n folder=\"folders/1234567\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"logType\": \"ADMIN_READ\",\n },\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\"user:joebloggs@example.com\"],\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 folder = new Gcp.Folder.IamAuditConfig(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIamAuditConfig(ctx, \"folder\", \u0026folder.IamAuditConfigArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: folder.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.folder.IamAuditConfig;\nimport com.pulumi.gcp.folder.IamAuditConfigArgs;\nimport com.pulumi.gcp.folder.inputs.IamAuditConfigAuditLogConfigArgs;\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 folder = new IamAuditConfig(\"folder\", IamAuditConfigArgs.builder()\n .folder(\"folders/1234567\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IamAuditConfig\n properties:\n folder: folders/1234567\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your folder\n using this resource. Deleting a `gcp.folder.IAMPolicy` removes access\n from anyone without permissions on its parent folder/organization. Proceed with caution.\n It's not recommended to use `gcp.folder.IAMPolicy` with your provider folder\n to avoid locking yourself out, and it should generally only be used with folders\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Folder.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026folder.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\nimport com.pulumi.gcp.folder.inputs.IAMBindingConditionArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Folder.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026folder.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\nimport com.pulumi.gcp.folder.inputs.IAMMemberConditionArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IamAuditConfig(\"folder\", {\n folder: \"folders/1234567\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IamAuditConfig(\"folder\",\n folder=\"folders/1234567\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"logType\": \"ADMIN_READ\",\n },\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\"user:joebloggs@example.com\"],\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 folder = new Gcp.Folder.IamAuditConfig(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIamAuditConfig(ctx, \"folder\", \u0026folder.IamAuditConfigArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: folder.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.folder.IamAuditConfig;\nimport com.pulumi.gcp.folder.IamAuditConfigArgs;\nimport com.pulumi.gcp.folder.inputs.IamAuditConfigAuditLogConfigArgs;\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 folder = new IamAuditConfig(\"folder\", IamAuditConfigArgs.builder()\n .folder(\"folders/1234567\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IamAuditConfig\n properties:\n folder: folders/1234567\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing Audit Configs\n\nAn audit config can be imported into a `google_folder_iam_audit_config` resource using the resource's `folder_id` and the `service`, e.g:\n\n* `\"folder/{{folder_id}} foo.googleapis.com\"`\n\nAn `import` block (Terraform v1.5.0 and later) can be used to import audit configs:\n\ntf\n\nimport {\n\n id = \"folder/{{folder_id}} foo.googleapis.com\"\n\n to = google_folder_iam_audit_config.default\n\n}\n\nThe `pulumi import` command can also be used:\n\n```sh\n$ pulumi import gcp:folder/iAMPolicy:IAMPolicy default \"folder/{{folder_id}} foo.googleapis.com\"\n```\n\n", + "description": "Four different resources help you manage your IAM policy for a folder. Each of these resources serves a different use case:\n\n* `gcp.folder.IAMPolicy`: Authoritative. Sets the IAM policy for the folder and replaces any existing policy already attached.\n* `gcp.folder.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the folder are preserved.\n* `gcp.folder.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the folder are preserved.\n* `gcp.folder.IamAuditConfig`: Authoritative for a given service. Updates the IAM policy to enable audit logging for the given service.\n\n\n\u003e **Note:** `gcp.folder.IAMPolicy` **cannot** be used in conjunction with `gcp.folder.IAMBinding`, `gcp.folder.IAMMember`, or `gcp.folder.IamAuditConfig` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.folder.IAMBinding` resources **can be** used in conjunction with `gcp.folder.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n\u003e **Note:** The underlying API method `projects.setIamPolicy` has constraints which are documented [here](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). In addition to these constraints, \n IAM Conditions cannot be used with Basic Roles such as Owner. Violating these constraints will result in the API returning a 400 error code so please review these if you encounter errors with this resource.\n\n## gcp.folder.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your folder\n using this resource. Deleting a `gcp.folder.IAMPolicy` removes access\n from anyone without permissions on its parent folder/organization. Proceed with caution.\n It's not recommended to use `gcp.folder.IAMPolicy` with your provider folder\n to avoid locking yourself out, and it should generally only be used with folders\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Folder.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026folder.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\nimport com.pulumi.gcp.folder.inputs.IAMBindingConditionArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Folder.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026folder.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\nimport com.pulumi.gcp.folder.inputs.IAMMemberConditionArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IamAuditConfig(\"folder\", {\n folder: \"folders/1234567\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IamAuditConfig(\"folder\",\n folder=\"folders/1234567\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"log_type\": \"ADMIN_READ\",\n },\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\"user:joebloggs@example.com\"],\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 folder = new Gcp.Folder.IamAuditConfig(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIamAuditConfig(ctx, \"folder\", \u0026folder.IamAuditConfigArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: folder.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.folder.IamAuditConfig;\nimport com.pulumi.gcp.folder.IamAuditConfigArgs;\nimport com.pulumi.gcp.folder.inputs.IamAuditConfigAuditLogConfigArgs;\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 folder = new IamAuditConfig(\"folder\", IamAuditConfigArgs.builder()\n .folder(\"folders/1234567\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IamAuditConfig\n properties:\n folder: folders/1234567\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your folder\n using this resource. Deleting a `gcp.folder.IAMPolicy` removes access\n from anyone without permissions on its parent folder/organization. Proceed with caution.\n It's not recommended to use `gcp.folder.IAMPolicy` with your provider folder\n to avoid locking yourself out, and it should generally only be used with folders\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Folder.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026folder.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\nimport com.pulumi.gcp.folder.inputs.IAMBindingConditionArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Folder.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026folder.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\nimport com.pulumi.gcp.folder.inputs.IAMMemberConditionArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IamAuditConfig(\"folder\", {\n folder: \"folders/1234567\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IamAuditConfig(\"folder\",\n folder=\"folders/1234567\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"log_type\": \"ADMIN_READ\",\n },\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\"user:joebloggs@example.com\"],\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 folder = new Gcp.Folder.IamAuditConfig(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIamAuditConfig(ctx, \"folder\", \u0026folder.IamAuditConfigArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: folder.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.folder.IamAuditConfig;\nimport com.pulumi.gcp.folder.IamAuditConfigArgs;\nimport com.pulumi.gcp.folder.inputs.IamAuditConfigAuditLogConfigArgs;\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 folder = new IamAuditConfig(\"folder\", IamAuditConfigArgs.builder()\n .folder(\"folders/1234567\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IamAuditConfig\n properties:\n folder: folders/1234567\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing Audit Configs\n\nAn audit config can be imported into a `google_folder_iam_audit_config` resource using the resource's `folder_id` and the `service`, e.g:\n\n* `\"folder/{{folder_id}} foo.googleapis.com\"`\n\nAn `import` block (Terraform v1.5.0 and later) can be used to import audit configs:\n\ntf\n\nimport {\n\n id = \"folder/{{folder_id}} foo.googleapis.com\"\n\n to = google_folder_iam_audit_config.default\n\n}\n\nThe `pulumi import` command can also be used:\n\n```sh\n$ pulumi import gcp:folder/iAMPolicy:IAMPolicy default \"folder/{{folder_id}} foo.googleapis.com\"\n```\n\n", "properties": { "etag": { "type": "string", @@ -193925,7 +193925,7 @@ } }, "gcp:folder/iamAuditConfig:IamAuditConfig": { - "description": "Four different resources help you manage your IAM policy for a folder. Each of these resources serves a different use case:\n\n* `gcp.folder.IAMPolicy`: Authoritative. Sets the IAM policy for the folder and replaces any existing policy already attached.\n* `gcp.folder.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the folder are preserved.\n* `gcp.folder.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the folder are preserved.\n* `gcp.folder.IamAuditConfig`: Authoritative for a given service. Updates the IAM policy to enable audit logging for the given service.\n\n\n\u003e **Note:** `gcp.folder.IAMPolicy` **cannot** be used in conjunction with `gcp.folder.IAMBinding`, `gcp.folder.IAMMember`, or `gcp.folder.IamAuditConfig` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.folder.IAMBinding` resources **can be** used in conjunction with `gcp.folder.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n\u003e **Note:** The underlying API method `projects.setIamPolicy` has constraints which are documented [here](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). In addition to these constraints, \n IAM Conditions cannot be used with Basic Roles such as Owner. Violating these constraints will result in the API returning a 400 error code so please review these if you encounter errors with this resource.\n\n## gcp.folder.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your folder\n using this resource. Deleting a `gcp.folder.IAMPolicy` removes access\n from anyone without permissions on its parent folder/organization. Proceed with caution.\n It's not recommended to use `gcp.folder.IAMPolicy` with your provider folder\n to avoid locking yourself out, and it should generally only be used with folders\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Folder.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026folder.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\nimport com.pulumi.gcp.folder.inputs.IAMBindingConditionArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Folder.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026folder.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\nimport com.pulumi.gcp.folder.inputs.IAMMemberConditionArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IamAuditConfig(\"folder\", {\n folder: \"folders/1234567\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IamAuditConfig(\"folder\",\n folder=\"folders/1234567\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"logType\": \"ADMIN_READ\",\n },\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\"user:joebloggs@example.com\"],\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 folder = new Gcp.Folder.IamAuditConfig(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIamAuditConfig(ctx, \"folder\", \u0026folder.IamAuditConfigArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: folder.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.folder.IamAuditConfig;\nimport com.pulumi.gcp.folder.IamAuditConfigArgs;\nimport com.pulumi.gcp.folder.inputs.IamAuditConfigAuditLogConfigArgs;\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 folder = new IamAuditConfig(\"folder\", IamAuditConfigArgs.builder()\n .folder(\"folders/1234567\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IamAuditConfig\n properties:\n folder: folders/1234567\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your folder\n using this resource. Deleting a `gcp.folder.IAMPolicy` removes access\n from anyone without permissions on its parent folder/organization. Proceed with caution.\n It's not recommended to use `gcp.folder.IAMPolicy` with your provider folder\n to avoid locking yourself out, and it should generally only be used with folders\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Folder.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026folder.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\nimport com.pulumi.gcp.folder.inputs.IAMBindingConditionArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Folder.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026folder.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\nimport com.pulumi.gcp.folder.inputs.IAMMemberConditionArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IamAuditConfig(\"folder\", {\n folder: \"folders/1234567\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IamAuditConfig(\"folder\",\n folder=\"folders/1234567\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"logType\": \"ADMIN_READ\",\n },\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\"user:joebloggs@example.com\"],\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 folder = new Gcp.Folder.IamAuditConfig(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIamAuditConfig(ctx, \"folder\", \u0026folder.IamAuditConfigArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: folder.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.folder.IamAuditConfig;\nimport com.pulumi.gcp.folder.IamAuditConfigArgs;\nimport com.pulumi.gcp.folder.inputs.IamAuditConfigAuditLogConfigArgs;\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 folder = new IamAuditConfig(\"folder\", IamAuditConfigArgs.builder()\n .folder(\"folders/1234567\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IamAuditConfig\n properties:\n folder: folders/1234567\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing Audit Configs\n\nAn audit config can be imported into a `google_folder_iam_audit_config` resource using the resource's `folder_id` and the `service`, e.g:\n\n* `\"folder/{{folder_id}} foo.googleapis.com\"`\n\nAn `import` block (Terraform v1.5.0 and later) can be used to import audit configs:\n\ntf\n\nimport {\n\n id = \"folder/{{folder_id}} foo.googleapis.com\"\n\n to = google_folder_iam_audit_config.default\n\n}\n\nThe `pulumi import` command can also be used:\n\n```sh\n$ pulumi import gcp:folder/iamAuditConfig:IamAuditConfig default \"folder/{{folder_id}} foo.googleapis.com\"\n```\n\n", + "description": "Four different resources help you manage your IAM policy for a folder. Each of these resources serves a different use case:\n\n* `gcp.folder.IAMPolicy`: Authoritative. Sets the IAM policy for the folder and replaces any existing policy already attached.\n* `gcp.folder.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the folder are preserved.\n* `gcp.folder.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the folder are preserved.\n* `gcp.folder.IamAuditConfig`: Authoritative for a given service. Updates the IAM policy to enable audit logging for the given service.\n\n\n\u003e **Note:** `gcp.folder.IAMPolicy` **cannot** be used in conjunction with `gcp.folder.IAMBinding`, `gcp.folder.IAMMember`, or `gcp.folder.IamAuditConfig` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.folder.IAMBinding` resources **can be** used in conjunction with `gcp.folder.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n\u003e **Note:** The underlying API method `projects.setIamPolicy` has constraints which are documented [here](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). In addition to these constraints, \n IAM Conditions cannot be used with Basic Roles such as Owner. Violating these constraints will result in the API returning a 400 error code so please review these if you encounter errors with this resource.\n\n## gcp.folder.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your folder\n using this resource. Deleting a `gcp.folder.IAMPolicy` removes access\n from anyone without permissions on its parent folder/organization. Proceed with caution.\n It's not recommended to use `gcp.folder.IAMPolicy` with your provider folder\n to avoid locking yourself out, and it should generally only be used with folders\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Folder.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026folder.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\nimport com.pulumi.gcp.folder.inputs.IAMBindingConditionArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Folder.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026folder.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\nimport com.pulumi.gcp.folder.inputs.IAMMemberConditionArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IamAuditConfig(\"folder\", {\n folder: \"folders/1234567\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IamAuditConfig(\"folder\",\n folder=\"folders/1234567\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"log_type\": \"ADMIN_READ\",\n },\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\"user:joebloggs@example.com\"],\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 folder = new Gcp.Folder.IamAuditConfig(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIamAuditConfig(ctx, \"folder\", \u0026folder.IamAuditConfigArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: folder.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.folder.IamAuditConfig;\nimport com.pulumi.gcp.folder.IamAuditConfigArgs;\nimport com.pulumi.gcp.folder.inputs.IamAuditConfigAuditLogConfigArgs;\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 folder = new IamAuditConfig(\"folder\", IamAuditConfigArgs.builder()\n .folder(\"folders/1234567\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IamAuditConfig\n properties:\n folder: folders/1234567\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your folder\n using this resource. Deleting a `gcp.folder.IAMPolicy` removes access\n from anyone without permissions on its parent folder/organization. Proceed with caution.\n It's not recommended to use `gcp.folder.IAMPolicy` with your provider folder\n to avoid locking yourself out, and it should generally only be used with folders\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst folder = new gcp.folder.IAMPolicy(\"folder\", {\n folder: \"folders/1234567\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nfolder = gcp.folder.IAMPolicy(\"folder\",\n folder=\"folders/1234567\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var folder = new Gcp.Folder.IAMPolicy(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = folder.NewIAMPolicy(ctx, \"folder\", \u0026folder.IAMPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.folder.IAMPolicy;\nimport com.pulumi.gcp.folder.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var folder = new IAMPolicy(\"folder\", IAMPolicyArgs.builder()\n .folder(\"folders/1234567\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMPolicy\n properties:\n folder: folders/1234567\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMBinding(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMBinding(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMBinding(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Folder.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMBinding(ctx, \"folder\", \u0026folder.IAMBindingArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026folder.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMBinding;\nimport com.pulumi.gcp.folder.IAMBindingArgs;\nimport com.pulumi.gcp.folder.inputs.IAMBindingConditionArgs;\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 folder = new IAMBinding(\"folder\", IAMBindingArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMBinding\n properties:\n folder: folders/1234567\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IAMMember(\"folder\", {\n folder: \"folders/1234567\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IAMMember(\"folder\",\n folder=\"folders/1234567\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 folder = new Gcp.Folder.IAMMember(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Folder.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIAMMember(ctx, \"folder\", \u0026folder.IAMMemberArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026folder.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.folder.IAMMember;\nimport com.pulumi.gcp.folder.IAMMemberArgs;\nimport com.pulumi.gcp.folder.inputs.IAMMemberConditionArgs;\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 folder = new IAMMember(\"folder\", IAMMemberArgs.builder()\n .folder(\"folders/1234567\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IAMMember\n properties:\n folder: folders/1234567\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.folder.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.folder.IamAuditConfig(\"folder\", {\n folder: \"folders/1234567\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.folder.IamAuditConfig(\"folder\",\n folder=\"folders/1234567\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"log_type\": \"ADMIN_READ\",\n },\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\"user:joebloggs@example.com\"],\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 folder = new Gcp.Folder.IamAuditConfig(\"folder\", new()\n {\n Folder = \"folders/1234567\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Folder.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewIamAuditConfig(ctx, \"folder\", \u0026folder.IamAuditConfigArgs{\n\t\t\tFolder: pulumi.String(\"folders/1234567\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: folder.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026folder.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.folder.IamAuditConfig;\nimport com.pulumi.gcp.folder.IamAuditConfigArgs;\nimport com.pulumi.gcp.folder.inputs.IamAuditConfigAuditLogConfigArgs;\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 folder = new IamAuditConfig(\"folder\", IamAuditConfigArgs.builder()\n .folder(\"folders/1234567\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:folder:IamAuditConfig\n properties:\n folder: folders/1234567\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing Audit Configs\n\nAn audit config can be imported into a `google_folder_iam_audit_config` resource using the resource's `folder_id` and the `service`, e.g:\n\n* `\"folder/{{folder_id}} foo.googleapis.com\"`\n\nAn `import` block (Terraform v1.5.0 and later) can be used to import audit configs:\n\ntf\n\nimport {\n\n id = \"folder/{{folder_id}} foo.googleapis.com\"\n\n to = google_folder_iam_audit_config.default\n\n}\n\nThe `pulumi import` command can also be used:\n\n```sh\n$ pulumi import gcp:folder/iamAuditConfig:IamAuditConfig default \"folder/{{folder_id}} foo.googleapis.com\"\n```\n\n", "properties": { "auditLogConfigs": { "type": "array", @@ -194004,7 +194004,7 @@ } }, "gcp:folder/organizationPolicy:OrganizationPolicy": { - "description": "Allows management of Organization Policies for a Google Cloud Folder. \n\n\u003e **Warning:** This resource has been superseded by `gcp.orgpolicy.Policy`. `gcp.orgpolicy.Policy` uses Organization Policy API V2 instead of Cloud Resource Manager API V1 and it supports additional features such as tags and conditions.\n\nTo get more information about Organization Policies, see:\n\n* [API documentation](https://cloud.google.com/resource-manager/reference/rest/v1/folders/setOrgPolicy)\n* How-to Guides\n * [Introduction to the Organization Policy Service](https://cloud.google.com/resource-manager/docs/organization-policy/overview)\n\n## Example Usage\n\nTo set policy with a [boolean constraint](https://cloud.google.com/resource-manager/docs/organization-policy/quickstart-boolean-constraints):\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serialPortPolicy = new gcp.folder.OrganizationPolicy(\"serial_port_policy\", {\n folder: \"folders/123456789\",\n constraint: \"compute.disableSerialPortAccess\",\n booleanPolicy: {\n enforced: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nserial_port_policy = gcp.folder.OrganizationPolicy(\"serial_port_policy\",\n folder=\"folders/123456789\",\n constraint=\"compute.disableSerialPortAccess\",\n boolean_policy={\n \"enforced\": 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 serialPortPolicy = new Gcp.Folder.OrganizationPolicy(\"serial_port_policy\", new()\n {\n Folder = \"folders/123456789\",\n Constraint = \"compute.disableSerialPortAccess\",\n BooleanPolicy = new Gcp.Folder.Inputs.OrganizationPolicyBooleanPolicyArgs\n {\n Enforced = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewOrganizationPolicy(ctx, \"serial_port_policy\", \u0026folder.OrganizationPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/123456789\"),\n\t\t\tConstraint: pulumi.String(\"compute.disableSerialPortAccess\"),\n\t\t\tBooleanPolicy: \u0026folder.OrganizationPolicyBooleanPolicyArgs{\n\t\t\t\tEnforced: 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.folder.OrganizationPolicy;\nimport com.pulumi.gcp.folder.OrganizationPolicyArgs;\nimport com.pulumi.gcp.folder.inputs.OrganizationPolicyBooleanPolicyArgs;\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 serialPortPolicy = new OrganizationPolicy(\"serialPortPolicy\", OrganizationPolicyArgs.builder()\n .folder(\"folders/123456789\")\n .constraint(\"compute.disableSerialPortAccess\")\n .booleanPolicy(OrganizationPolicyBooleanPolicyArgs.builder()\n .enforced(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n serialPortPolicy:\n type: gcp:folder:OrganizationPolicy\n name: serial_port_policy\n properties:\n folder: folders/123456789\n constraint: compute.disableSerialPortAccess\n booleanPolicy:\n enforced: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\nTo set a policy with a [list constraint](https://cloud.google.com/resource-manager/docs/organization-policy/quickstart-list-constraints):\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.folder.OrganizationPolicy(\"services_policy\", {\n folder: \"folders/123456789\",\n constraint: \"serviceuser.services\",\n listPolicy: {\n allow: {\n all: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.folder.OrganizationPolicy(\"services_policy\",\n folder=\"folders/123456789\",\n constraint=\"serviceuser.services\",\n list_policy={\n \"allow\": {\n \"all\": 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 servicesPolicy = new Gcp.Folder.OrganizationPolicy(\"services_policy\", new()\n {\n Folder = \"folders/123456789\",\n Constraint = \"serviceuser.services\",\n ListPolicy = new Gcp.Folder.Inputs.OrganizationPolicyListPolicyArgs\n {\n Allow = new Gcp.Folder.Inputs.OrganizationPolicyListPolicyAllowArgs\n {\n All = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewOrganizationPolicy(ctx, \"services_policy\", \u0026folder.OrganizationPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/123456789\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tListPolicy: \u0026folder.OrganizationPolicyListPolicyArgs{\n\t\t\t\tAllow: \u0026folder.OrganizationPolicyListPolicyAllowArgs{\n\t\t\t\t\tAll: 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.folder.OrganizationPolicy;\nimport com.pulumi.gcp.folder.OrganizationPolicyArgs;\nimport com.pulumi.gcp.folder.inputs.OrganizationPolicyListPolicyArgs;\nimport com.pulumi.gcp.folder.inputs.OrganizationPolicyListPolicyAllowArgs;\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 servicesPolicy = new OrganizationPolicy(\"servicesPolicy\", OrganizationPolicyArgs.builder()\n .folder(\"folders/123456789\")\n .constraint(\"serviceuser.services\")\n .listPolicy(OrganizationPolicyListPolicyArgs.builder()\n .allow(OrganizationPolicyListPolicyAllowArgs.builder()\n .all(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:folder:OrganizationPolicy\n name: services_policy\n properties:\n folder: folders/123456789\n constraint: serviceuser.services\n listPolicy:\n allow:\n all: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\nOr to deny some services, use the following instead:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.folder.OrganizationPolicy(\"services_policy\", {\n folder: \"folders/123456789\",\n constraint: \"serviceuser.services\",\n listPolicy: {\n suggestedValue: \"compute.googleapis.com\",\n deny: {\n values: [\"cloudresourcemanager.googleapis.com\"],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.folder.OrganizationPolicy(\"services_policy\",\n folder=\"folders/123456789\",\n constraint=\"serviceuser.services\",\n list_policy={\n \"suggestedValue\": \"compute.googleapis.com\",\n \"deny\": {\n \"values\": [\"cloudresourcemanager.googleapis.com\"],\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 servicesPolicy = new Gcp.Folder.OrganizationPolicy(\"services_policy\", new()\n {\n Folder = \"folders/123456789\",\n Constraint = \"serviceuser.services\",\n ListPolicy = new Gcp.Folder.Inputs.OrganizationPolicyListPolicyArgs\n {\n SuggestedValue = \"compute.googleapis.com\",\n Deny = new Gcp.Folder.Inputs.OrganizationPolicyListPolicyDenyArgs\n {\n Values = new[]\n {\n \"cloudresourcemanager.googleapis.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewOrganizationPolicy(ctx, \"services_policy\", \u0026folder.OrganizationPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/123456789\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tListPolicy: \u0026folder.OrganizationPolicyListPolicyArgs{\n\t\t\t\tSuggestedValue: pulumi.String(\"compute.googleapis.com\"),\n\t\t\t\tDeny: \u0026folder.OrganizationPolicyListPolicyDenyArgs{\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudresourcemanager.googleapis.com\"),\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.folder.OrganizationPolicy;\nimport com.pulumi.gcp.folder.OrganizationPolicyArgs;\nimport com.pulumi.gcp.folder.inputs.OrganizationPolicyListPolicyArgs;\nimport com.pulumi.gcp.folder.inputs.OrganizationPolicyListPolicyDenyArgs;\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 servicesPolicy = new OrganizationPolicy(\"servicesPolicy\", OrganizationPolicyArgs.builder()\n .folder(\"folders/123456789\")\n .constraint(\"serviceuser.services\")\n .listPolicy(OrganizationPolicyListPolicyArgs.builder()\n .suggestedValue(\"compute.googleapis.com\")\n .deny(OrganizationPolicyListPolicyDenyArgs.builder()\n .values(\"cloudresourcemanager.googleapis.com\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:folder:OrganizationPolicy\n name: services_policy\n properties:\n folder: folders/123456789\n constraint: serviceuser.services\n listPolicy:\n suggestedValue: compute.googleapis.com\n deny:\n values:\n - cloudresourcemanager.googleapis.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nTo restore the default folder organization policy, use the following instead:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.folder.OrganizationPolicy(\"services_policy\", {\n folder: \"folders/123456789\",\n constraint: \"serviceuser.services\",\n restorePolicy: {\n \"default\": true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.folder.OrganizationPolicy(\"services_policy\",\n folder=\"folders/123456789\",\n constraint=\"serviceuser.services\",\n restore_policy={\n \"default\": 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 servicesPolicy = new Gcp.Folder.OrganizationPolicy(\"services_policy\", new()\n {\n Folder = \"folders/123456789\",\n Constraint = \"serviceuser.services\",\n RestorePolicy = new Gcp.Folder.Inputs.OrganizationPolicyRestorePolicyArgs\n {\n Default = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewOrganizationPolicy(ctx, \"services_policy\", \u0026folder.OrganizationPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/123456789\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tRestorePolicy: \u0026folder.OrganizationPolicyRestorePolicyArgs{\n\t\t\t\tDefault: 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.folder.OrganizationPolicy;\nimport com.pulumi.gcp.folder.OrganizationPolicyArgs;\nimport com.pulumi.gcp.folder.inputs.OrganizationPolicyRestorePolicyArgs;\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 servicesPolicy = new OrganizationPolicy(\"servicesPolicy\", OrganizationPolicyArgs.builder()\n .folder(\"folders/123456789\")\n .constraint(\"serviceuser.services\")\n .restorePolicy(OrganizationPolicyRestorePolicyArgs.builder()\n .default_(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:folder:OrganizationPolicy\n name: services_policy\n properties:\n folder: folders/123456789\n constraint: serviceuser.services\n restorePolicy:\n default: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFolder organization policies can be imported using any of the follow formats:\n\n* `folders/{{folder_id}}/constraints/serviceuser.services`\n\n* `{{folder_id}}/serviceuser.services`\n\nWhen using the `pulumi import` command, folder organization policies can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:folder/organizationPolicy:OrganizationPolicy * `google_folder_organization_policy.default folders/* ``{{folder_id}}/constraints/serviceuser.services`\n```\n\n```sh\n$ pulumi import gcp:folder/organizationPolicy:OrganizationPolicy * `* `google_folder_organization_policy.default {{folder_id}}/``serviceuser.services\n```\n\n", + "description": "Allows management of Organization Policies for a Google Cloud Folder. \n\n\u003e **Warning:** This resource has been superseded by `gcp.orgpolicy.Policy`. `gcp.orgpolicy.Policy` uses Organization Policy API V2 instead of Cloud Resource Manager API V1 and it supports additional features such as tags and conditions.\n\nTo get more information about Organization Policies, see:\n\n* [API documentation](https://cloud.google.com/resource-manager/reference/rest/v1/folders/setOrgPolicy)\n* How-to Guides\n * [Introduction to the Organization Policy Service](https://cloud.google.com/resource-manager/docs/organization-policy/overview)\n\n## Example Usage\n\nTo set policy with a [boolean constraint](https://cloud.google.com/resource-manager/docs/organization-policy/quickstart-boolean-constraints):\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serialPortPolicy = new gcp.folder.OrganizationPolicy(\"serial_port_policy\", {\n folder: \"folders/123456789\",\n constraint: \"compute.disableSerialPortAccess\",\n booleanPolicy: {\n enforced: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nserial_port_policy = gcp.folder.OrganizationPolicy(\"serial_port_policy\",\n folder=\"folders/123456789\",\n constraint=\"compute.disableSerialPortAccess\",\n boolean_policy={\n \"enforced\": 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 serialPortPolicy = new Gcp.Folder.OrganizationPolicy(\"serial_port_policy\", new()\n {\n Folder = \"folders/123456789\",\n Constraint = \"compute.disableSerialPortAccess\",\n BooleanPolicy = new Gcp.Folder.Inputs.OrganizationPolicyBooleanPolicyArgs\n {\n Enforced = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewOrganizationPolicy(ctx, \"serial_port_policy\", \u0026folder.OrganizationPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/123456789\"),\n\t\t\tConstraint: pulumi.String(\"compute.disableSerialPortAccess\"),\n\t\t\tBooleanPolicy: \u0026folder.OrganizationPolicyBooleanPolicyArgs{\n\t\t\t\tEnforced: 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.folder.OrganizationPolicy;\nimport com.pulumi.gcp.folder.OrganizationPolicyArgs;\nimport com.pulumi.gcp.folder.inputs.OrganizationPolicyBooleanPolicyArgs;\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 serialPortPolicy = new OrganizationPolicy(\"serialPortPolicy\", OrganizationPolicyArgs.builder()\n .folder(\"folders/123456789\")\n .constraint(\"compute.disableSerialPortAccess\")\n .booleanPolicy(OrganizationPolicyBooleanPolicyArgs.builder()\n .enforced(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n serialPortPolicy:\n type: gcp:folder:OrganizationPolicy\n name: serial_port_policy\n properties:\n folder: folders/123456789\n constraint: compute.disableSerialPortAccess\n booleanPolicy:\n enforced: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\nTo set a policy with a [list constraint](https://cloud.google.com/resource-manager/docs/organization-policy/quickstart-list-constraints):\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.folder.OrganizationPolicy(\"services_policy\", {\n folder: \"folders/123456789\",\n constraint: \"serviceuser.services\",\n listPolicy: {\n allow: {\n all: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.folder.OrganizationPolicy(\"services_policy\",\n folder=\"folders/123456789\",\n constraint=\"serviceuser.services\",\n list_policy={\n \"allow\": {\n \"all\": 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 servicesPolicy = new Gcp.Folder.OrganizationPolicy(\"services_policy\", new()\n {\n Folder = \"folders/123456789\",\n Constraint = \"serviceuser.services\",\n ListPolicy = new Gcp.Folder.Inputs.OrganizationPolicyListPolicyArgs\n {\n Allow = new Gcp.Folder.Inputs.OrganizationPolicyListPolicyAllowArgs\n {\n All = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewOrganizationPolicy(ctx, \"services_policy\", \u0026folder.OrganizationPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/123456789\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tListPolicy: \u0026folder.OrganizationPolicyListPolicyArgs{\n\t\t\t\tAllow: \u0026folder.OrganizationPolicyListPolicyAllowArgs{\n\t\t\t\t\tAll: 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.folder.OrganizationPolicy;\nimport com.pulumi.gcp.folder.OrganizationPolicyArgs;\nimport com.pulumi.gcp.folder.inputs.OrganizationPolicyListPolicyArgs;\nimport com.pulumi.gcp.folder.inputs.OrganizationPolicyListPolicyAllowArgs;\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 servicesPolicy = new OrganizationPolicy(\"servicesPolicy\", OrganizationPolicyArgs.builder()\n .folder(\"folders/123456789\")\n .constraint(\"serviceuser.services\")\n .listPolicy(OrganizationPolicyListPolicyArgs.builder()\n .allow(OrganizationPolicyListPolicyAllowArgs.builder()\n .all(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:folder:OrganizationPolicy\n name: services_policy\n properties:\n folder: folders/123456789\n constraint: serviceuser.services\n listPolicy:\n allow:\n all: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\nOr to deny some services, use the following instead:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.folder.OrganizationPolicy(\"services_policy\", {\n folder: \"folders/123456789\",\n constraint: \"serviceuser.services\",\n listPolicy: {\n suggestedValue: \"compute.googleapis.com\",\n deny: {\n values: [\"cloudresourcemanager.googleapis.com\"],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.folder.OrganizationPolicy(\"services_policy\",\n folder=\"folders/123456789\",\n constraint=\"serviceuser.services\",\n list_policy={\n \"suggested_value\": \"compute.googleapis.com\",\n \"deny\": {\n \"values\": [\"cloudresourcemanager.googleapis.com\"],\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 servicesPolicy = new Gcp.Folder.OrganizationPolicy(\"services_policy\", new()\n {\n Folder = \"folders/123456789\",\n Constraint = \"serviceuser.services\",\n ListPolicy = new Gcp.Folder.Inputs.OrganizationPolicyListPolicyArgs\n {\n SuggestedValue = \"compute.googleapis.com\",\n Deny = new Gcp.Folder.Inputs.OrganizationPolicyListPolicyDenyArgs\n {\n Values = new[]\n {\n \"cloudresourcemanager.googleapis.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewOrganizationPolicy(ctx, \"services_policy\", \u0026folder.OrganizationPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/123456789\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tListPolicy: \u0026folder.OrganizationPolicyListPolicyArgs{\n\t\t\t\tSuggestedValue: pulumi.String(\"compute.googleapis.com\"),\n\t\t\t\tDeny: \u0026folder.OrganizationPolicyListPolicyDenyArgs{\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudresourcemanager.googleapis.com\"),\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.folder.OrganizationPolicy;\nimport com.pulumi.gcp.folder.OrganizationPolicyArgs;\nimport com.pulumi.gcp.folder.inputs.OrganizationPolicyListPolicyArgs;\nimport com.pulumi.gcp.folder.inputs.OrganizationPolicyListPolicyDenyArgs;\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 servicesPolicy = new OrganizationPolicy(\"servicesPolicy\", OrganizationPolicyArgs.builder()\n .folder(\"folders/123456789\")\n .constraint(\"serviceuser.services\")\n .listPolicy(OrganizationPolicyListPolicyArgs.builder()\n .suggestedValue(\"compute.googleapis.com\")\n .deny(OrganizationPolicyListPolicyDenyArgs.builder()\n .values(\"cloudresourcemanager.googleapis.com\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:folder:OrganizationPolicy\n name: services_policy\n properties:\n folder: folders/123456789\n constraint: serviceuser.services\n listPolicy:\n suggestedValue: compute.googleapis.com\n deny:\n values:\n - cloudresourcemanager.googleapis.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nTo restore the default folder organization policy, use the following instead:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.folder.OrganizationPolicy(\"services_policy\", {\n folder: \"folders/123456789\",\n constraint: \"serviceuser.services\",\n restorePolicy: {\n \"default\": true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.folder.OrganizationPolicy(\"services_policy\",\n folder=\"folders/123456789\",\n constraint=\"serviceuser.services\",\n restore_policy={\n \"default\": 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 servicesPolicy = new Gcp.Folder.OrganizationPolicy(\"services_policy\", new()\n {\n Folder = \"folders/123456789\",\n Constraint = \"serviceuser.services\",\n RestorePolicy = new Gcp.Folder.Inputs.OrganizationPolicyRestorePolicyArgs\n {\n Default = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/folder\"\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 := folder.NewOrganizationPolicy(ctx, \"services_policy\", \u0026folder.OrganizationPolicyArgs{\n\t\t\tFolder: pulumi.String(\"folders/123456789\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tRestorePolicy: \u0026folder.OrganizationPolicyRestorePolicyArgs{\n\t\t\t\tDefault: 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.folder.OrganizationPolicy;\nimport com.pulumi.gcp.folder.OrganizationPolicyArgs;\nimport com.pulumi.gcp.folder.inputs.OrganizationPolicyRestorePolicyArgs;\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 servicesPolicy = new OrganizationPolicy(\"servicesPolicy\", OrganizationPolicyArgs.builder()\n .folder(\"folders/123456789\")\n .constraint(\"serviceuser.services\")\n .restorePolicy(OrganizationPolicyRestorePolicyArgs.builder()\n .default_(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:folder:OrganizationPolicy\n name: services_policy\n properties:\n folder: folders/123456789\n constraint: serviceuser.services\n restorePolicy:\n default: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFolder organization policies can be imported using any of the follow formats:\n\n* `folders/{{folder_id}}/constraints/serviceuser.services`\n\n* `{{folder_id}}/serviceuser.services`\n\nWhen using the `pulumi import` command, folder organization policies can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:folder/organizationPolicy:OrganizationPolicy * `google_folder_organization_policy.default folders/* ``{{folder_id}}/constraints/serviceuser.services`\n```\n\n```sh\n$ pulumi import gcp:folder/organizationPolicy:OrganizationPolicy * `* `google_folder_organization_policy.default {{folder_id}}/``serviceuser.services\n```\n\n", "properties": { "booleanPolicy": { "$ref": "#/types/gcp:folder/OrganizationPolicyBooleanPolicy:OrganizationPolicyBooleanPolicy", @@ -194120,7 +194120,7 @@ } }, "gcp:gkebackup/backupPlan:BackupPlan": { - "description": "Represents a Backup Plan instance.\n\n\nTo get more information about BackupPlan, see:\n\n* [API documentation](https://cloud.google.com/kubernetes-engine/docs/add-on/backup-for-gke/reference/rest/v1/projects.locations.backupPlans)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/kubernetes-engine/docs/add-on/backup-for-gke)\n\n## Example Usage\n\n### Gkebackup Backupplan Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"basic-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"basic-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"basic-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workloadPool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gkeBackupAgentConfig\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"basic-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"includeVolumeData\": True,\n \"includeSecrets\": True,\n \"allNamespaces\": 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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"basic-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"basic-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"basic-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: basic-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: basic-plan\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Autopilot\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"autopilot-cluster\",\n location: \"us-central1\",\n enableAutopilot: true,\n ipAllocationPolicy: {},\n releaseChannel: {\n channel: \"RAPID\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst autopilot = new gcp.gkebackup.BackupPlan(\"autopilot\", {\n name: \"autopilot-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"autopilot-cluster\",\n location=\"us-central1\",\n enable_autopilot=True,\n ip_allocation_policy={},\n release_channel={\n \"channel\": \"RAPID\",\n },\n addons_config={\n \"gkeBackupAgentConfig\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nautopilot = gcp.gkebackup.BackupPlan(\"autopilot\",\n name=\"autopilot-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"includeVolumeData\": True,\n \"includeSecrets\": True,\n \"allNamespaces\": 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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"autopilot-cluster\",\n Location = \"us-central1\",\n EnableAutopilot = true,\n IpAllocationPolicy = null,\n ReleaseChannel = new Gcp.Container.Inputs.ClusterReleaseChannelArgs\n {\n Channel = \"RAPID\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var autopilot = new Gcp.GkeBackup.BackupPlan(\"autopilot\", new()\n {\n Name = \"autopilot-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"autopilot-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tEnableAutopilot: pulumi.Bool(true),\n\t\t\tIpAllocationPolicy: nil,\n\t\t\tReleaseChannel: \u0026container.ClusterReleaseChannelArgs{\n\t\t\t\tChannel: pulumi.String(\"RAPID\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"autopilot\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"autopilot-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterIpAllocationPolicyArgs;\nimport com.pulumi.gcp.container.inputs.ClusterReleaseChannelArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"autopilot-cluster\")\n .location(\"us-central1\")\n .enableAutopilot(true)\n .ipAllocationPolicy()\n .releaseChannel(ClusterReleaseChannelArgs.builder()\n .channel(\"RAPID\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var autopilot = new BackupPlan(\"autopilot\", BackupPlanArgs.builder()\n .name(\"autopilot-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: autopilot-cluster\n location: us-central1\n enableAutopilot: true\n ipAllocationPolicy: {}\n releaseChannel:\n channel: RAPID\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n autopilot:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: autopilot-plan\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"cmek-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"backup-key\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"backup-key\",\n keyRing: keyRing.id,\n});\nconst cmek = new gcp.gkebackup.BackupPlan(\"cmek\", {\n name: \"cmek-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n selectedNamespaces: {\n namespaces: [\n \"default\",\n \"test\",\n ],\n },\n encryptionKey: {\n gcpKmsEncryptionKey: cryptoKey.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"cmek-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workloadPool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gkeBackupAgentConfig\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"backup-key\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"backup-key\",\n key_ring=key_ring.id)\ncmek = gcp.gkebackup.BackupPlan(\"cmek\",\n name=\"cmek-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"includeVolumeData\": True,\n \"includeSecrets\": True,\n \"selectedNamespaces\": {\n \"namespaces\": [\n \"default\",\n \"test\",\n ],\n },\n \"encryptionKey\": {\n \"gcpKmsEncryptionKey\": crypto_key.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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"cmek-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"backup-key\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"backup-key\",\n KeyRing = keyRing.Id,\n });\n\n var cmek = new Gcp.GkeBackup.BackupPlan(\"cmek\", new()\n {\n Name = \"cmek-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n SelectedNamespaces = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedNamespacesArgs\n {\n Namespaces = new[]\n {\n \"default\",\n \"test\",\n },\n },\n EncryptionKey = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigEncryptionKeyArgs\n {\n GcpKmsEncryptionKey = cryptoKey.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"cmek-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"backup-key\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"backup-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"cmek\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"cmek-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tSelectedNamespaces: \u0026gkebackup.BackupPlanBackupConfigSelectedNamespacesArgs{\n\t\t\t\t\tNamespaces: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"default\"),\n\t\t\t\t\t\tpulumi.String(\"test\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tEncryptionKey: \u0026gkebackup.BackupPlanBackupConfigEncryptionKeyArgs{\n\t\t\t\t\tGcpKmsEncryptionKey: cryptoKey.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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\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.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigSelectedNamespacesArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigEncryptionKeyArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"cmek-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"backup-key\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"backup-key\")\n .keyRing(keyRing.id())\n .build());\n\n var cmek = new BackupPlan(\"cmek\", BackupPlanArgs.builder()\n .name(\"cmek-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .selectedNamespaces(BackupPlanBackupConfigSelectedNamespacesArgs.builder()\n .namespaces( \n \"default\",\n \"test\")\n .build())\n .encryptionKey(BackupPlanBackupConfigEncryptionKeyArgs.builder()\n .gcpKmsEncryptionKey(cryptoKey.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: cmek-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n cmek:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: cmek-plan\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n selectedNamespaces:\n namespaces:\n - default\n - test\n encryptionKey:\n gcpKmsEncryptionKey: ${cryptoKey.id}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: backup-key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: backup-key\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"full-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst full = new gcp.gkebackup.BackupPlan(\"full\", {\n name: \"full-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n retentionPolicy: {\n backupDeleteLockDays: 30,\n backupRetainDays: 180,\n },\n backupSchedule: {\n cronSchedule: \"0 9 * * 1\",\n },\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n selectedApplications: {\n namespacedNames: [\n {\n name: \"app1\",\n namespace: \"ns1\",\n },\n {\n name: \"app2\",\n namespace: \"ns2\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"full-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workloadPool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gkeBackupAgentConfig\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nfull = gcp.gkebackup.BackupPlan(\"full\",\n name=\"full-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n retention_policy={\n \"backupDeleteLockDays\": 30,\n \"backupRetainDays\": 180,\n },\n backup_schedule={\n \"cronSchedule\": \"0 9 * * 1\",\n },\n backup_config={\n \"includeVolumeData\": True,\n \"includeSecrets\": True,\n \"selectedApplications\": {\n \"namespacedNames\": [\n {\n \"name\": \"app1\",\n \"namespace\": \"ns1\",\n },\n {\n \"name\": \"app2\",\n \"namespace\": \"ns2\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"full-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var full = new Gcp.GkeBackup.BackupPlan(\"full\", new()\n {\n Name = \"full-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n RetentionPolicy = new Gcp.GkeBackup.Inputs.BackupPlanRetentionPolicyArgs\n {\n BackupDeleteLockDays = 30,\n BackupRetainDays = 180,\n },\n BackupSchedule = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleArgs\n {\n CronSchedule = \"0 9 * * 1\",\n },\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n SelectedApplications = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsArgs\n {\n NamespacedNames = new[]\n {\n new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs\n {\n Name = \"app1\",\n Namespace = \"ns1\",\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs\n {\n Name = \"app2\",\n Namespace = \"ns2\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"full-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"full\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"full-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionPolicy: \u0026gkebackup.BackupPlanRetentionPolicyArgs{\n\t\t\t\tBackupDeleteLockDays: pulumi.Int(30),\n\t\t\t\tBackupRetainDays: pulumi.Int(180),\n\t\t\t},\n\t\t\tBackupSchedule: \u0026gkebackup.BackupPlanBackupScheduleArgs{\n\t\t\t\tCronSchedule: pulumi.String(\"0 9 * * 1\"),\n\t\t\t},\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tSelectedApplications: \u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsArgs{\n\t\t\t\t\tNamespacedNames: gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArray{\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"app1\"),\n\t\t\t\t\t\t\tNamespace: pulumi.String(\"ns1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"app2\"),\n\t\t\t\t\t\t\tNamespace: pulumi.String(\"ns2\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanRetentionPolicyArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigSelectedApplicationsArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"full-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var full = new BackupPlan(\"full\", BackupPlanArgs.builder()\n .name(\"full-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .retentionPolicy(BackupPlanRetentionPolicyArgs.builder()\n .backupDeleteLockDays(30)\n .backupRetainDays(180)\n .build())\n .backupSchedule(BackupPlanBackupScheduleArgs.builder()\n .cronSchedule(\"0 9 * * 1\")\n .build())\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .selectedApplications(BackupPlanBackupConfigSelectedApplicationsArgs.builder()\n .namespacedNames( \n BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs.builder()\n .name(\"app1\")\n .namespace(\"ns1\")\n .build(),\n BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs.builder()\n .name(\"app2\")\n .namespace(\"ns2\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: full-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n full:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: full-plan\n cluster: ${primary.id}\n location: us-central1\n retentionPolicy:\n backupDeleteLockDays: 30\n backupRetainDays: 180\n backupSchedule:\n cronSchedule: 0 9 * * 1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n selectedApplications:\n namespacedNames:\n - name: app1\n namespace: ns1\n - name: app2\n namespace: ns2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Permissive\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"permissive-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst permissive = new gcp.gkebackup.BackupPlan(\"permissive\", {\n name: \"permissive-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n retentionPolicy: {\n backupDeleteLockDays: 30,\n backupRetainDays: 180,\n },\n backupSchedule: {\n cronSchedule: \"0 9 * * 1\",\n },\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n permissiveMode: true,\n selectedApplications: {\n namespacedNames: [\n {\n name: \"app1\",\n namespace: \"ns1\",\n },\n {\n name: \"app2\",\n namespace: \"ns2\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"permissive-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workloadPool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gkeBackupAgentConfig\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\npermissive = gcp.gkebackup.BackupPlan(\"permissive\",\n name=\"permissive-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n retention_policy={\n \"backupDeleteLockDays\": 30,\n \"backupRetainDays\": 180,\n },\n backup_schedule={\n \"cronSchedule\": \"0 9 * * 1\",\n },\n backup_config={\n \"includeVolumeData\": True,\n \"includeSecrets\": True,\n \"permissiveMode\": True,\n \"selectedApplications\": {\n \"namespacedNames\": [\n {\n \"name\": \"app1\",\n \"namespace\": \"ns1\",\n },\n {\n \"name\": \"app2\",\n \"namespace\": \"ns2\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"permissive-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var permissive = new Gcp.GkeBackup.BackupPlan(\"permissive\", new()\n {\n Name = \"permissive-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n RetentionPolicy = new Gcp.GkeBackup.Inputs.BackupPlanRetentionPolicyArgs\n {\n BackupDeleteLockDays = 30,\n BackupRetainDays = 180,\n },\n BackupSchedule = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleArgs\n {\n CronSchedule = \"0 9 * * 1\",\n },\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n PermissiveMode = true,\n SelectedApplications = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsArgs\n {\n NamespacedNames = new[]\n {\n new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs\n {\n Name = \"app1\",\n Namespace = \"ns1\",\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs\n {\n Name = \"app2\",\n Namespace = \"ns2\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"permissive-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"permissive\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"permissive-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionPolicy: \u0026gkebackup.BackupPlanRetentionPolicyArgs{\n\t\t\t\tBackupDeleteLockDays: pulumi.Int(30),\n\t\t\t\tBackupRetainDays: pulumi.Int(180),\n\t\t\t},\n\t\t\tBackupSchedule: \u0026gkebackup.BackupPlanBackupScheduleArgs{\n\t\t\t\tCronSchedule: pulumi.String(\"0 9 * * 1\"),\n\t\t\t},\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tPermissiveMode: pulumi.Bool(true),\n\t\t\t\tSelectedApplications: \u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsArgs{\n\t\t\t\t\tNamespacedNames: gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArray{\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"app1\"),\n\t\t\t\t\t\t\tNamespace: pulumi.String(\"ns1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"app2\"),\n\t\t\t\t\t\t\tNamespace: pulumi.String(\"ns2\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanRetentionPolicyArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigSelectedApplicationsArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"permissive-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var permissive = new BackupPlan(\"permissive\", BackupPlanArgs.builder()\n .name(\"permissive-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .retentionPolicy(BackupPlanRetentionPolicyArgs.builder()\n .backupDeleteLockDays(30)\n .backupRetainDays(180)\n .build())\n .backupSchedule(BackupPlanBackupScheduleArgs.builder()\n .cronSchedule(\"0 9 * * 1\")\n .build())\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .permissiveMode(true)\n .selectedApplications(BackupPlanBackupConfigSelectedApplicationsArgs.builder()\n .namespacedNames( \n BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs.builder()\n .name(\"app1\")\n .namespace(\"ns1\")\n .build(),\n BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs.builder()\n .name(\"app2\")\n .namespace(\"ns2\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: permissive-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n permissive:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: permissive-plan\n cluster: ${primary.id}\n location: us-central1\n retentionPolicy:\n backupDeleteLockDays: 30\n backupRetainDays: 180\n backupSchedule:\n cronSchedule: 0 9 * * 1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n permissiveMode: true\n selectedApplications:\n namespacedNames:\n - name: app1\n namespace: ns1\n - name: app2\n namespace: ns2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Rpo Daily Window\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"rpo-daily-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst rpoDailyWindow = new gcp.gkebackup.BackupPlan(\"rpo_daily_window\", {\n name: \"rpo-daily-window\",\n cluster: primary.id,\n location: \"us-central1\",\n retentionPolicy: {\n backupDeleteLockDays: 30,\n backupRetainDays: 180,\n },\n backupSchedule: {\n paused: true,\n rpoConfig: {\n targetRpoMinutes: 1440,\n exclusionWindows: [\n {\n startTime: {\n hours: 12,\n },\n duration: \"7200s\",\n daily: true,\n },\n {\n startTime: {\n hours: 8,\n minutes: 40,\n seconds: 1,\n nanos: 100,\n },\n duration: \"3600s\",\n singleOccurrenceDate: {\n year: 2024,\n month: 3,\n day: 16,\n },\n },\n ],\n },\n },\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"rpo-daily-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workloadPool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gkeBackupAgentConfig\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nrpo_daily_window = gcp.gkebackup.BackupPlan(\"rpo_daily_window\",\n name=\"rpo-daily-window\",\n cluster=primary.id,\n location=\"us-central1\",\n retention_policy={\n \"backupDeleteLockDays\": 30,\n \"backupRetainDays\": 180,\n },\n backup_schedule={\n \"paused\": True,\n \"rpoConfig\": {\n \"targetRpoMinutes\": 1440,\n \"exclusionWindows\": [\n {\n \"startTime\": {\n \"hours\": 12,\n },\n \"duration\": \"7200s\",\n \"daily\": True,\n },\n {\n \"startTime\": {\n \"hours\": 8,\n \"minutes\": 40,\n \"seconds\": 1,\n \"nanos\": 100,\n },\n \"duration\": \"3600s\",\n \"singleOccurrenceDate\": {\n \"year\": 2024,\n \"month\": 3,\n \"day\": 16,\n },\n },\n ],\n },\n },\n backup_config={\n \"includeVolumeData\": True,\n \"includeSecrets\": True,\n \"allNamespaces\": 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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"rpo-daily-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var rpoDailyWindow = new Gcp.GkeBackup.BackupPlan(\"rpo_daily_window\", new()\n {\n Name = \"rpo-daily-window\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n RetentionPolicy = new Gcp.GkeBackup.Inputs.BackupPlanRetentionPolicyArgs\n {\n BackupDeleteLockDays = 30,\n BackupRetainDays = 180,\n },\n BackupSchedule = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleArgs\n {\n Paused = true,\n RpoConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigArgs\n {\n TargetRpoMinutes = 1440,\n ExclusionWindows = new[]\n {\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 12,\n },\n Duration = \"7200s\",\n Daily = true,\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 8,\n Minutes = 40,\n Seconds = 1,\n Nanos = 100,\n },\n Duration = \"3600s\",\n SingleOccurrenceDate = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs\n {\n Year = 2024,\n Month = 3,\n Day = 16,\n },\n },\n },\n },\n },\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"rpo-daily-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"rpo_daily_window\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"rpo-daily-window\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionPolicy: \u0026gkebackup.BackupPlanRetentionPolicyArgs{\n\t\t\t\tBackupDeleteLockDays: pulumi.Int(30),\n\t\t\t\tBackupRetainDays: pulumi.Int(180),\n\t\t\t},\n\t\t\tBackupSchedule: \u0026gkebackup.BackupPlanBackupScheduleArgs{\n\t\t\t\tPaused: pulumi.Bool(true),\n\t\t\t\tRpoConfig: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigArgs{\n\t\t\t\t\tTargetRpoMinutes: pulumi.Int(1440),\n\t\t\t\t\tExclusionWindows: gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArray{\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(12),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"7200s\"),\n\t\t\t\t\t\t\tDaily: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(8),\n\t\t\t\t\t\t\t\tMinutes: pulumi.Int(40),\n\t\t\t\t\t\t\t\tSeconds: pulumi.Int(1),\n\t\t\t\t\t\t\t\tNanos: pulumi.Int(100),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\tSingleOccurrenceDate: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs{\n\t\t\t\t\t\t\t\tYear: pulumi.Int(2024),\n\t\t\t\t\t\t\t\tMonth: pulumi.Int(3),\n\t\t\t\t\t\t\t\tDay: pulumi.Int(16),\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\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanRetentionPolicyArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleRpoConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"rpo-daily-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var rpoDailyWindow = new BackupPlan(\"rpoDailyWindow\", BackupPlanArgs.builder()\n .name(\"rpo-daily-window\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .retentionPolicy(BackupPlanRetentionPolicyArgs.builder()\n .backupDeleteLockDays(30)\n .backupRetainDays(180)\n .build())\n .backupSchedule(BackupPlanBackupScheduleArgs.builder()\n .paused(true)\n .rpoConfig(BackupPlanBackupScheduleRpoConfigArgs.builder()\n .targetRpoMinutes(1440)\n .exclusionWindows( \n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(12)\n .build())\n .duration(\"7200s\")\n .daily(true)\n .build(),\n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(8)\n .minutes(40)\n .seconds(1)\n .nanos(100)\n .build())\n .duration(\"3600s\")\n .singleOccurrenceDate(BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs.builder()\n .year(2024)\n .month(3)\n .day(16)\n .build())\n .build())\n .build())\n .build())\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: rpo-daily-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n rpoDailyWindow:\n type: gcp:gkebackup:BackupPlan\n name: rpo_daily_window\n properties:\n name: rpo-daily-window\n cluster: ${primary.id}\n location: us-central1\n retentionPolicy:\n backupDeleteLockDays: 30\n backupRetainDays: 180\n backupSchedule:\n paused: true\n rpoConfig:\n targetRpoMinutes: 1440\n exclusionWindows:\n - startTime:\n hours: 12\n duration: 7200s\n daily: true\n - startTime:\n hours: 8\n minutes: 40\n seconds: 1\n nanos: 100\n duration: 3600s\n singleOccurrenceDate:\n year: 2024\n month: 3\n day: 16\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Rpo Weekly Window\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"rpo-weekly-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst rpoWeeklyWindow = new gcp.gkebackup.BackupPlan(\"rpo_weekly_window\", {\n name: \"rpo-weekly-window\",\n cluster: primary.id,\n location: \"us-central1\",\n retentionPolicy: {\n backupDeleteLockDays: 30,\n backupRetainDays: 180,\n },\n backupSchedule: {\n paused: true,\n rpoConfig: {\n targetRpoMinutes: 1440,\n exclusionWindows: [\n {\n startTime: {\n hours: 1,\n minutes: 23,\n },\n duration: \"1800s\",\n daysOfWeek: {\n daysOfWeeks: [\n \"MONDAY\",\n \"THURSDAY\",\n ],\n },\n },\n {\n startTime: {\n hours: 12,\n },\n duration: \"3600s\",\n singleOccurrenceDate: {\n year: 2024,\n month: 3,\n day: 17,\n },\n },\n {\n startTime: {\n hours: 8,\n minutes: 40,\n },\n duration: \"600s\",\n singleOccurrenceDate: {\n year: 2024,\n month: 3,\n day: 18,\n },\n },\n ],\n },\n },\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"rpo-weekly-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workloadPool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gkeBackupAgentConfig\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nrpo_weekly_window = gcp.gkebackup.BackupPlan(\"rpo_weekly_window\",\n name=\"rpo-weekly-window\",\n cluster=primary.id,\n location=\"us-central1\",\n retention_policy={\n \"backupDeleteLockDays\": 30,\n \"backupRetainDays\": 180,\n },\n backup_schedule={\n \"paused\": True,\n \"rpoConfig\": {\n \"targetRpoMinutes\": 1440,\n \"exclusionWindows\": [\n {\n \"startTime\": {\n \"hours\": 1,\n \"minutes\": 23,\n },\n \"duration\": \"1800s\",\n \"daysOfWeek\": {\n \"daysOfWeeks\": [\n \"MONDAY\",\n \"THURSDAY\",\n ],\n },\n },\n {\n \"startTime\": {\n \"hours\": 12,\n },\n \"duration\": \"3600s\",\n \"singleOccurrenceDate\": {\n \"year\": 2024,\n \"month\": 3,\n \"day\": 17,\n },\n },\n {\n \"startTime\": {\n \"hours\": 8,\n \"minutes\": 40,\n },\n \"duration\": \"600s\",\n \"singleOccurrenceDate\": {\n \"year\": 2024,\n \"month\": 3,\n \"day\": 18,\n },\n },\n ],\n },\n },\n backup_config={\n \"includeVolumeData\": True,\n \"includeSecrets\": True,\n \"allNamespaces\": 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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"rpo-weekly-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var rpoWeeklyWindow = new Gcp.GkeBackup.BackupPlan(\"rpo_weekly_window\", new()\n {\n Name = \"rpo-weekly-window\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n RetentionPolicy = new Gcp.GkeBackup.Inputs.BackupPlanRetentionPolicyArgs\n {\n BackupDeleteLockDays = 30,\n BackupRetainDays = 180,\n },\n BackupSchedule = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleArgs\n {\n Paused = true,\n RpoConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigArgs\n {\n TargetRpoMinutes = 1440,\n ExclusionWindows = new[]\n {\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 1,\n Minutes = 23,\n },\n Duration = \"1800s\",\n DaysOfWeek = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowDaysOfWeekArgs\n {\n DaysOfWeeks = new[]\n {\n \"MONDAY\",\n \"THURSDAY\",\n },\n },\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 12,\n },\n Duration = \"3600s\",\n SingleOccurrenceDate = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs\n {\n Year = 2024,\n Month = 3,\n Day = 17,\n },\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 8,\n Minutes = 40,\n },\n Duration = \"600s\",\n SingleOccurrenceDate = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs\n {\n Year = 2024,\n Month = 3,\n Day = 18,\n },\n },\n },\n },\n },\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"rpo-weekly-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"rpo_weekly_window\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"rpo-weekly-window\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionPolicy: \u0026gkebackup.BackupPlanRetentionPolicyArgs{\n\t\t\t\tBackupDeleteLockDays: pulumi.Int(30),\n\t\t\t\tBackupRetainDays: pulumi.Int(180),\n\t\t\t},\n\t\t\tBackupSchedule: \u0026gkebackup.BackupPlanBackupScheduleArgs{\n\t\t\t\tPaused: pulumi.Bool(true),\n\t\t\t\tRpoConfig: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigArgs{\n\t\t\t\t\tTargetRpoMinutes: pulumi.Int(1440),\n\t\t\t\t\tExclusionWindows: gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArray{\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(1),\n\t\t\t\t\t\t\t\tMinutes: pulumi.Int(23),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"1800s\"),\n\t\t\t\t\t\t\tDaysOfWeek: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowDaysOfWeekArgs{\n\t\t\t\t\t\t\t\tDaysOfWeeks: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"MONDAY\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"THURSDAY\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(12),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\tSingleOccurrenceDate: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs{\n\t\t\t\t\t\t\t\tYear: pulumi.Int(2024),\n\t\t\t\t\t\t\t\tMonth: pulumi.Int(3),\n\t\t\t\t\t\t\t\tDay: pulumi.Int(17),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(8),\n\t\t\t\t\t\t\t\tMinutes: pulumi.Int(40),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"600s\"),\n\t\t\t\t\t\t\tSingleOccurrenceDate: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs{\n\t\t\t\t\t\t\t\tYear: pulumi.Int(2024),\n\t\t\t\t\t\t\t\tMonth: pulumi.Int(3),\n\t\t\t\t\t\t\t\tDay: pulumi.Int(18),\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\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanRetentionPolicyArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleRpoConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"rpo-weekly-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var rpoWeeklyWindow = new BackupPlan(\"rpoWeeklyWindow\", BackupPlanArgs.builder()\n .name(\"rpo-weekly-window\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .retentionPolicy(BackupPlanRetentionPolicyArgs.builder()\n .backupDeleteLockDays(30)\n .backupRetainDays(180)\n .build())\n .backupSchedule(BackupPlanBackupScheduleArgs.builder()\n .paused(true)\n .rpoConfig(BackupPlanBackupScheduleRpoConfigArgs.builder()\n .targetRpoMinutes(1440)\n .exclusionWindows( \n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(1)\n .minutes(23)\n .build())\n .duration(\"1800s\")\n .daysOfWeek(BackupPlanBackupScheduleRpoConfigExclusionWindowDaysOfWeekArgs.builder()\n .daysOfWeeks( \n \"MONDAY\",\n \"THURSDAY\")\n .build())\n .build(),\n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(12)\n .build())\n .duration(\"3600s\")\n .singleOccurrenceDate(BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs.builder()\n .year(2024)\n .month(3)\n .day(17)\n .build())\n .build(),\n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(8)\n .minutes(40)\n .build())\n .duration(\"600s\")\n .singleOccurrenceDate(BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs.builder()\n .year(2024)\n .month(3)\n .day(18)\n .build())\n .build())\n .build())\n .build())\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: rpo-weekly-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n rpoWeeklyWindow:\n type: gcp:gkebackup:BackupPlan\n name: rpo_weekly_window\n properties:\n name: rpo-weekly-window\n cluster: ${primary.id}\n location: us-central1\n retentionPolicy:\n backupDeleteLockDays: 30\n backupRetainDays: 180\n backupSchedule:\n paused: true\n rpoConfig:\n targetRpoMinutes: 1440\n exclusionWindows:\n - startTime:\n hours: 1\n minutes: 23\n duration: 1800s\n daysOfWeek:\n daysOfWeeks:\n - MONDAY\n - THURSDAY\n - startTime:\n hours: 12\n duration: 3600s\n singleOccurrenceDate:\n year: 2024\n month: 3\n day: 17\n - startTime:\n hours: 8\n minutes: 40\n duration: 600s\n singleOccurrenceDate:\n year: 2024\n month: 3\n day: 18\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackupPlan can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/backupPlans/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, BackupPlan can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkebackup/backupPlan:BackupPlan default projects/{{project}}/locations/{{location}}/backupPlans/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkebackup/backupPlan:BackupPlan default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkebackup/backupPlan:BackupPlan default {{location}}/{{name}}\n```\n\n", + "description": "Represents a Backup Plan instance.\n\n\nTo get more information about BackupPlan, see:\n\n* [API documentation](https://cloud.google.com/kubernetes-engine/docs/add-on/backup-for-gke/reference/rest/v1/projects.locations.backupPlans)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/kubernetes-engine/docs/add-on/backup-for-gke)\n\n## Example Usage\n\n### Gkebackup Backupplan Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"basic-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"basic-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"basic-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"basic-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": 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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"basic-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"basic-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"basic-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: basic-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: basic-plan\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Autopilot\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"autopilot-cluster\",\n location: \"us-central1\",\n enableAutopilot: true,\n ipAllocationPolicy: {},\n releaseChannel: {\n channel: \"RAPID\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst autopilot = new gcp.gkebackup.BackupPlan(\"autopilot\", {\n name: \"autopilot-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"autopilot-cluster\",\n location=\"us-central1\",\n enable_autopilot=True,\n ip_allocation_policy={},\n release_channel={\n \"channel\": \"RAPID\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nautopilot = gcp.gkebackup.BackupPlan(\"autopilot\",\n name=\"autopilot-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": 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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"autopilot-cluster\",\n Location = \"us-central1\",\n EnableAutopilot = true,\n IpAllocationPolicy = null,\n ReleaseChannel = new Gcp.Container.Inputs.ClusterReleaseChannelArgs\n {\n Channel = \"RAPID\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var autopilot = new Gcp.GkeBackup.BackupPlan(\"autopilot\", new()\n {\n Name = \"autopilot-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"autopilot-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tEnableAutopilot: pulumi.Bool(true),\n\t\t\tIpAllocationPolicy: nil,\n\t\t\tReleaseChannel: \u0026container.ClusterReleaseChannelArgs{\n\t\t\t\tChannel: pulumi.String(\"RAPID\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"autopilot\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"autopilot-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterIpAllocationPolicyArgs;\nimport com.pulumi.gcp.container.inputs.ClusterReleaseChannelArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"autopilot-cluster\")\n .location(\"us-central1\")\n .enableAutopilot(true)\n .ipAllocationPolicy()\n .releaseChannel(ClusterReleaseChannelArgs.builder()\n .channel(\"RAPID\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var autopilot = new BackupPlan(\"autopilot\", BackupPlanArgs.builder()\n .name(\"autopilot-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: autopilot-cluster\n location: us-central1\n enableAutopilot: true\n ipAllocationPolicy: {}\n releaseChannel:\n channel: RAPID\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n autopilot:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: autopilot-plan\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"cmek-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"backup-key\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"backup-key\",\n keyRing: keyRing.id,\n});\nconst cmek = new gcp.gkebackup.BackupPlan(\"cmek\", {\n name: \"cmek-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n selectedNamespaces: {\n namespaces: [\n \"default\",\n \"test\",\n ],\n },\n encryptionKey: {\n gcpKmsEncryptionKey: cryptoKey.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"cmek-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"backup-key\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"backup-key\",\n key_ring=key_ring.id)\ncmek = gcp.gkebackup.BackupPlan(\"cmek\",\n name=\"cmek-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"selected_namespaces\": {\n \"namespaces\": [\n \"default\",\n \"test\",\n ],\n },\n \"encryption_key\": {\n \"gcp_kms_encryption_key\": crypto_key.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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"cmek-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"backup-key\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"backup-key\",\n KeyRing = keyRing.Id,\n });\n\n var cmek = new Gcp.GkeBackup.BackupPlan(\"cmek\", new()\n {\n Name = \"cmek-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n SelectedNamespaces = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedNamespacesArgs\n {\n Namespaces = new[]\n {\n \"default\",\n \"test\",\n },\n },\n EncryptionKey = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigEncryptionKeyArgs\n {\n GcpKmsEncryptionKey = cryptoKey.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"cmek-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"backup-key\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"backup-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"cmek\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"cmek-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tSelectedNamespaces: \u0026gkebackup.BackupPlanBackupConfigSelectedNamespacesArgs{\n\t\t\t\t\tNamespaces: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"default\"),\n\t\t\t\t\t\tpulumi.String(\"test\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tEncryptionKey: \u0026gkebackup.BackupPlanBackupConfigEncryptionKeyArgs{\n\t\t\t\t\tGcpKmsEncryptionKey: cryptoKey.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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\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.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigSelectedNamespacesArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigEncryptionKeyArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"cmek-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"backup-key\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"backup-key\")\n .keyRing(keyRing.id())\n .build());\n\n var cmek = new BackupPlan(\"cmek\", BackupPlanArgs.builder()\n .name(\"cmek-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .selectedNamespaces(BackupPlanBackupConfigSelectedNamespacesArgs.builder()\n .namespaces( \n \"default\",\n \"test\")\n .build())\n .encryptionKey(BackupPlanBackupConfigEncryptionKeyArgs.builder()\n .gcpKmsEncryptionKey(cryptoKey.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: cmek-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n cmek:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: cmek-plan\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n selectedNamespaces:\n namespaces:\n - default\n - test\n encryptionKey:\n gcpKmsEncryptionKey: ${cryptoKey.id}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: backup-key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: backup-key\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"full-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst full = new gcp.gkebackup.BackupPlan(\"full\", {\n name: \"full-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n retentionPolicy: {\n backupDeleteLockDays: 30,\n backupRetainDays: 180,\n },\n backupSchedule: {\n cronSchedule: \"0 9 * * 1\",\n },\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n selectedApplications: {\n namespacedNames: [\n {\n name: \"app1\",\n namespace: \"ns1\",\n },\n {\n name: \"app2\",\n namespace: \"ns2\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"full-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nfull = gcp.gkebackup.BackupPlan(\"full\",\n name=\"full-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n retention_policy={\n \"backup_delete_lock_days\": 30,\n \"backup_retain_days\": 180,\n },\n backup_schedule={\n \"cron_schedule\": \"0 9 * * 1\",\n },\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"selected_applications\": {\n \"namespaced_names\": [\n {\n \"name\": \"app1\",\n \"namespace\": \"ns1\",\n },\n {\n \"name\": \"app2\",\n \"namespace\": \"ns2\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"full-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var full = new Gcp.GkeBackup.BackupPlan(\"full\", new()\n {\n Name = \"full-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n RetentionPolicy = new Gcp.GkeBackup.Inputs.BackupPlanRetentionPolicyArgs\n {\n BackupDeleteLockDays = 30,\n BackupRetainDays = 180,\n },\n BackupSchedule = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleArgs\n {\n CronSchedule = \"0 9 * * 1\",\n },\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n SelectedApplications = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsArgs\n {\n NamespacedNames = new[]\n {\n new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs\n {\n Name = \"app1\",\n Namespace = \"ns1\",\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs\n {\n Name = \"app2\",\n Namespace = \"ns2\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"full-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"full\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"full-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionPolicy: \u0026gkebackup.BackupPlanRetentionPolicyArgs{\n\t\t\t\tBackupDeleteLockDays: pulumi.Int(30),\n\t\t\t\tBackupRetainDays: pulumi.Int(180),\n\t\t\t},\n\t\t\tBackupSchedule: \u0026gkebackup.BackupPlanBackupScheduleArgs{\n\t\t\t\tCronSchedule: pulumi.String(\"0 9 * * 1\"),\n\t\t\t},\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tSelectedApplications: \u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsArgs{\n\t\t\t\t\tNamespacedNames: gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArray{\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"app1\"),\n\t\t\t\t\t\t\tNamespace: pulumi.String(\"ns1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"app2\"),\n\t\t\t\t\t\t\tNamespace: pulumi.String(\"ns2\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanRetentionPolicyArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigSelectedApplicationsArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"full-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var full = new BackupPlan(\"full\", BackupPlanArgs.builder()\n .name(\"full-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .retentionPolicy(BackupPlanRetentionPolicyArgs.builder()\n .backupDeleteLockDays(30)\n .backupRetainDays(180)\n .build())\n .backupSchedule(BackupPlanBackupScheduleArgs.builder()\n .cronSchedule(\"0 9 * * 1\")\n .build())\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .selectedApplications(BackupPlanBackupConfigSelectedApplicationsArgs.builder()\n .namespacedNames( \n BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs.builder()\n .name(\"app1\")\n .namespace(\"ns1\")\n .build(),\n BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs.builder()\n .name(\"app2\")\n .namespace(\"ns2\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: full-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n full:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: full-plan\n cluster: ${primary.id}\n location: us-central1\n retentionPolicy:\n backupDeleteLockDays: 30\n backupRetainDays: 180\n backupSchedule:\n cronSchedule: 0 9 * * 1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n selectedApplications:\n namespacedNames:\n - name: app1\n namespace: ns1\n - name: app2\n namespace: ns2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Permissive\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"permissive-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst permissive = new gcp.gkebackup.BackupPlan(\"permissive\", {\n name: \"permissive-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n retentionPolicy: {\n backupDeleteLockDays: 30,\n backupRetainDays: 180,\n },\n backupSchedule: {\n cronSchedule: \"0 9 * * 1\",\n },\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n permissiveMode: true,\n selectedApplications: {\n namespacedNames: [\n {\n name: \"app1\",\n namespace: \"ns1\",\n },\n {\n name: \"app2\",\n namespace: \"ns2\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"permissive-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\npermissive = gcp.gkebackup.BackupPlan(\"permissive\",\n name=\"permissive-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n retention_policy={\n \"backup_delete_lock_days\": 30,\n \"backup_retain_days\": 180,\n },\n backup_schedule={\n \"cron_schedule\": \"0 9 * * 1\",\n },\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"permissive_mode\": True,\n \"selected_applications\": {\n \"namespaced_names\": [\n {\n \"name\": \"app1\",\n \"namespace\": \"ns1\",\n },\n {\n \"name\": \"app2\",\n \"namespace\": \"ns2\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"permissive-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var permissive = new Gcp.GkeBackup.BackupPlan(\"permissive\", new()\n {\n Name = \"permissive-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n RetentionPolicy = new Gcp.GkeBackup.Inputs.BackupPlanRetentionPolicyArgs\n {\n BackupDeleteLockDays = 30,\n BackupRetainDays = 180,\n },\n BackupSchedule = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleArgs\n {\n CronSchedule = \"0 9 * * 1\",\n },\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n PermissiveMode = true,\n SelectedApplications = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsArgs\n {\n NamespacedNames = new[]\n {\n new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs\n {\n Name = \"app1\",\n Namespace = \"ns1\",\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs\n {\n Name = \"app2\",\n Namespace = \"ns2\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"permissive-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"permissive\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"permissive-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionPolicy: \u0026gkebackup.BackupPlanRetentionPolicyArgs{\n\t\t\t\tBackupDeleteLockDays: pulumi.Int(30),\n\t\t\t\tBackupRetainDays: pulumi.Int(180),\n\t\t\t},\n\t\t\tBackupSchedule: \u0026gkebackup.BackupPlanBackupScheduleArgs{\n\t\t\t\tCronSchedule: pulumi.String(\"0 9 * * 1\"),\n\t\t\t},\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tPermissiveMode: pulumi.Bool(true),\n\t\t\t\tSelectedApplications: \u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsArgs{\n\t\t\t\t\tNamespacedNames: gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArray{\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"app1\"),\n\t\t\t\t\t\t\tNamespace: pulumi.String(\"ns1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"app2\"),\n\t\t\t\t\t\t\tNamespace: pulumi.String(\"ns2\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanRetentionPolicyArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigSelectedApplicationsArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"permissive-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var permissive = new BackupPlan(\"permissive\", BackupPlanArgs.builder()\n .name(\"permissive-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .retentionPolicy(BackupPlanRetentionPolicyArgs.builder()\n .backupDeleteLockDays(30)\n .backupRetainDays(180)\n .build())\n .backupSchedule(BackupPlanBackupScheduleArgs.builder()\n .cronSchedule(\"0 9 * * 1\")\n .build())\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .permissiveMode(true)\n .selectedApplications(BackupPlanBackupConfigSelectedApplicationsArgs.builder()\n .namespacedNames( \n BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs.builder()\n .name(\"app1\")\n .namespace(\"ns1\")\n .build(),\n BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs.builder()\n .name(\"app2\")\n .namespace(\"ns2\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: permissive-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n permissive:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: permissive-plan\n cluster: ${primary.id}\n location: us-central1\n retentionPolicy:\n backupDeleteLockDays: 30\n backupRetainDays: 180\n backupSchedule:\n cronSchedule: 0 9 * * 1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n permissiveMode: true\n selectedApplications:\n namespacedNames:\n - name: app1\n namespace: ns1\n - name: app2\n namespace: ns2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Rpo Daily Window\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"rpo-daily-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst rpoDailyWindow = new gcp.gkebackup.BackupPlan(\"rpo_daily_window\", {\n name: \"rpo-daily-window\",\n cluster: primary.id,\n location: \"us-central1\",\n retentionPolicy: {\n backupDeleteLockDays: 30,\n backupRetainDays: 180,\n },\n backupSchedule: {\n paused: true,\n rpoConfig: {\n targetRpoMinutes: 1440,\n exclusionWindows: [\n {\n startTime: {\n hours: 12,\n },\n duration: \"7200s\",\n daily: true,\n },\n {\n startTime: {\n hours: 8,\n minutes: 40,\n seconds: 1,\n nanos: 100,\n },\n duration: \"3600s\",\n singleOccurrenceDate: {\n year: 2024,\n month: 3,\n day: 16,\n },\n },\n ],\n },\n },\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"rpo-daily-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nrpo_daily_window = gcp.gkebackup.BackupPlan(\"rpo_daily_window\",\n name=\"rpo-daily-window\",\n cluster=primary.id,\n location=\"us-central1\",\n retention_policy={\n \"backup_delete_lock_days\": 30,\n \"backup_retain_days\": 180,\n },\n backup_schedule={\n \"paused\": True,\n \"rpo_config\": {\n \"target_rpo_minutes\": 1440,\n \"exclusion_windows\": [\n {\n \"start_time\": {\n \"hours\": 12,\n },\n \"duration\": \"7200s\",\n \"daily\": True,\n },\n {\n \"start_time\": {\n \"hours\": 8,\n \"minutes\": 40,\n \"seconds\": 1,\n \"nanos\": 100,\n },\n \"duration\": \"3600s\",\n \"single_occurrence_date\": {\n \"year\": 2024,\n \"month\": 3,\n \"day\": 16,\n },\n },\n ],\n },\n },\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": 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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"rpo-daily-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var rpoDailyWindow = new Gcp.GkeBackup.BackupPlan(\"rpo_daily_window\", new()\n {\n Name = \"rpo-daily-window\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n RetentionPolicy = new Gcp.GkeBackup.Inputs.BackupPlanRetentionPolicyArgs\n {\n BackupDeleteLockDays = 30,\n BackupRetainDays = 180,\n },\n BackupSchedule = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleArgs\n {\n Paused = true,\n RpoConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigArgs\n {\n TargetRpoMinutes = 1440,\n ExclusionWindows = new[]\n {\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 12,\n },\n Duration = \"7200s\",\n Daily = true,\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 8,\n Minutes = 40,\n Seconds = 1,\n Nanos = 100,\n },\n Duration = \"3600s\",\n SingleOccurrenceDate = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs\n {\n Year = 2024,\n Month = 3,\n Day = 16,\n },\n },\n },\n },\n },\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"rpo-daily-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"rpo_daily_window\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"rpo-daily-window\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionPolicy: \u0026gkebackup.BackupPlanRetentionPolicyArgs{\n\t\t\t\tBackupDeleteLockDays: pulumi.Int(30),\n\t\t\t\tBackupRetainDays: pulumi.Int(180),\n\t\t\t},\n\t\t\tBackupSchedule: \u0026gkebackup.BackupPlanBackupScheduleArgs{\n\t\t\t\tPaused: pulumi.Bool(true),\n\t\t\t\tRpoConfig: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigArgs{\n\t\t\t\t\tTargetRpoMinutes: pulumi.Int(1440),\n\t\t\t\t\tExclusionWindows: gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArray{\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(12),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"7200s\"),\n\t\t\t\t\t\t\tDaily: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(8),\n\t\t\t\t\t\t\t\tMinutes: pulumi.Int(40),\n\t\t\t\t\t\t\t\tSeconds: pulumi.Int(1),\n\t\t\t\t\t\t\t\tNanos: pulumi.Int(100),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\tSingleOccurrenceDate: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs{\n\t\t\t\t\t\t\t\tYear: pulumi.Int(2024),\n\t\t\t\t\t\t\t\tMonth: pulumi.Int(3),\n\t\t\t\t\t\t\t\tDay: pulumi.Int(16),\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\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanRetentionPolicyArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleRpoConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"rpo-daily-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var rpoDailyWindow = new BackupPlan(\"rpoDailyWindow\", BackupPlanArgs.builder()\n .name(\"rpo-daily-window\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .retentionPolicy(BackupPlanRetentionPolicyArgs.builder()\n .backupDeleteLockDays(30)\n .backupRetainDays(180)\n .build())\n .backupSchedule(BackupPlanBackupScheduleArgs.builder()\n .paused(true)\n .rpoConfig(BackupPlanBackupScheduleRpoConfigArgs.builder()\n .targetRpoMinutes(1440)\n .exclusionWindows( \n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(12)\n .build())\n .duration(\"7200s\")\n .daily(true)\n .build(),\n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(8)\n .minutes(40)\n .seconds(1)\n .nanos(100)\n .build())\n .duration(\"3600s\")\n .singleOccurrenceDate(BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs.builder()\n .year(2024)\n .month(3)\n .day(16)\n .build())\n .build())\n .build())\n .build())\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: rpo-daily-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n rpoDailyWindow:\n type: gcp:gkebackup:BackupPlan\n name: rpo_daily_window\n properties:\n name: rpo-daily-window\n cluster: ${primary.id}\n location: us-central1\n retentionPolicy:\n backupDeleteLockDays: 30\n backupRetainDays: 180\n backupSchedule:\n paused: true\n rpoConfig:\n targetRpoMinutes: 1440\n exclusionWindows:\n - startTime:\n hours: 12\n duration: 7200s\n daily: true\n - startTime:\n hours: 8\n minutes: 40\n seconds: 1\n nanos: 100\n duration: 3600s\n singleOccurrenceDate:\n year: 2024\n month: 3\n day: 16\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Rpo Weekly Window\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"rpo-weekly-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst rpoWeeklyWindow = new gcp.gkebackup.BackupPlan(\"rpo_weekly_window\", {\n name: \"rpo-weekly-window\",\n cluster: primary.id,\n location: \"us-central1\",\n retentionPolicy: {\n backupDeleteLockDays: 30,\n backupRetainDays: 180,\n },\n backupSchedule: {\n paused: true,\n rpoConfig: {\n targetRpoMinutes: 1440,\n exclusionWindows: [\n {\n startTime: {\n hours: 1,\n minutes: 23,\n },\n duration: \"1800s\",\n daysOfWeek: {\n daysOfWeeks: [\n \"MONDAY\",\n \"THURSDAY\",\n ],\n },\n },\n {\n startTime: {\n hours: 12,\n },\n duration: \"3600s\",\n singleOccurrenceDate: {\n year: 2024,\n month: 3,\n day: 17,\n },\n },\n {\n startTime: {\n hours: 8,\n minutes: 40,\n },\n duration: \"600s\",\n singleOccurrenceDate: {\n year: 2024,\n month: 3,\n day: 18,\n },\n },\n ],\n },\n },\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"rpo-weekly-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nrpo_weekly_window = gcp.gkebackup.BackupPlan(\"rpo_weekly_window\",\n name=\"rpo-weekly-window\",\n cluster=primary.id,\n location=\"us-central1\",\n retention_policy={\n \"backup_delete_lock_days\": 30,\n \"backup_retain_days\": 180,\n },\n backup_schedule={\n \"paused\": True,\n \"rpo_config\": {\n \"target_rpo_minutes\": 1440,\n \"exclusion_windows\": [\n {\n \"start_time\": {\n \"hours\": 1,\n \"minutes\": 23,\n },\n \"duration\": \"1800s\",\n \"days_of_week\": {\n \"days_of_weeks\": [\n \"MONDAY\",\n \"THURSDAY\",\n ],\n },\n },\n {\n \"start_time\": {\n \"hours\": 12,\n },\n \"duration\": \"3600s\",\n \"single_occurrence_date\": {\n \"year\": 2024,\n \"month\": 3,\n \"day\": 17,\n },\n },\n {\n \"start_time\": {\n \"hours\": 8,\n \"minutes\": 40,\n },\n \"duration\": \"600s\",\n \"single_occurrence_date\": {\n \"year\": 2024,\n \"month\": 3,\n \"day\": 18,\n },\n },\n ],\n },\n },\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": 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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"rpo-weekly-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var rpoWeeklyWindow = new Gcp.GkeBackup.BackupPlan(\"rpo_weekly_window\", new()\n {\n Name = \"rpo-weekly-window\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n RetentionPolicy = new Gcp.GkeBackup.Inputs.BackupPlanRetentionPolicyArgs\n {\n BackupDeleteLockDays = 30,\n BackupRetainDays = 180,\n },\n BackupSchedule = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleArgs\n {\n Paused = true,\n RpoConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigArgs\n {\n TargetRpoMinutes = 1440,\n ExclusionWindows = new[]\n {\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 1,\n Minutes = 23,\n },\n Duration = \"1800s\",\n DaysOfWeek = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowDaysOfWeekArgs\n {\n DaysOfWeeks = new[]\n {\n \"MONDAY\",\n \"THURSDAY\",\n },\n },\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 12,\n },\n Duration = \"3600s\",\n SingleOccurrenceDate = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs\n {\n Year = 2024,\n Month = 3,\n Day = 17,\n },\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 8,\n Minutes = 40,\n },\n Duration = \"600s\",\n SingleOccurrenceDate = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs\n {\n Year = 2024,\n Month = 3,\n Day = 18,\n },\n },\n },\n },\n },\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"rpo-weekly-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"rpo_weekly_window\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"rpo-weekly-window\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionPolicy: \u0026gkebackup.BackupPlanRetentionPolicyArgs{\n\t\t\t\tBackupDeleteLockDays: pulumi.Int(30),\n\t\t\t\tBackupRetainDays: pulumi.Int(180),\n\t\t\t},\n\t\t\tBackupSchedule: \u0026gkebackup.BackupPlanBackupScheduleArgs{\n\t\t\t\tPaused: pulumi.Bool(true),\n\t\t\t\tRpoConfig: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigArgs{\n\t\t\t\t\tTargetRpoMinutes: pulumi.Int(1440),\n\t\t\t\t\tExclusionWindows: gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArray{\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(1),\n\t\t\t\t\t\t\t\tMinutes: pulumi.Int(23),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"1800s\"),\n\t\t\t\t\t\t\tDaysOfWeek: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowDaysOfWeekArgs{\n\t\t\t\t\t\t\t\tDaysOfWeeks: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"MONDAY\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"THURSDAY\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(12),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\tSingleOccurrenceDate: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs{\n\t\t\t\t\t\t\t\tYear: pulumi.Int(2024),\n\t\t\t\t\t\t\t\tMonth: pulumi.Int(3),\n\t\t\t\t\t\t\t\tDay: pulumi.Int(17),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(8),\n\t\t\t\t\t\t\t\tMinutes: pulumi.Int(40),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"600s\"),\n\t\t\t\t\t\t\tSingleOccurrenceDate: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs{\n\t\t\t\t\t\t\t\tYear: pulumi.Int(2024),\n\t\t\t\t\t\t\t\tMonth: pulumi.Int(3),\n\t\t\t\t\t\t\t\tDay: pulumi.Int(18),\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\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanRetentionPolicyArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleRpoConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"rpo-weekly-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var rpoWeeklyWindow = new BackupPlan(\"rpoWeeklyWindow\", BackupPlanArgs.builder()\n .name(\"rpo-weekly-window\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .retentionPolicy(BackupPlanRetentionPolicyArgs.builder()\n .backupDeleteLockDays(30)\n .backupRetainDays(180)\n .build())\n .backupSchedule(BackupPlanBackupScheduleArgs.builder()\n .paused(true)\n .rpoConfig(BackupPlanBackupScheduleRpoConfigArgs.builder()\n .targetRpoMinutes(1440)\n .exclusionWindows( \n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(1)\n .minutes(23)\n .build())\n .duration(\"1800s\")\n .daysOfWeek(BackupPlanBackupScheduleRpoConfigExclusionWindowDaysOfWeekArgs.builder()\n .daysOfWeeks( \n \"MONDAY\",\n \"THURSDAY\")\n .build())\n .build(),\n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(12)\n .build())\n .duration(\"3600s\")\n .singleOccurrenceDate(BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs.builder()\n .year(2024)\n .month(3)\n .day(17)\n .build())\n .build(),\n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(8)\n .minutes(40)\n .build())\n .duration(\"600s\")\n .singleOccurrenceDate(BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs.builder()\n .year(2024)\n .month(3)\n .day(18)\n .build())\n .build())\n .build())\n .build())\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: rpo-weekly-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n rpoWeeklyWindow:\n type: gcp:gkebackup:BackupPlan\n name: rpo_weekly_window\n properties:\n name: rpo-weekly-window\n cluster: ${primary.id}\n location: us-central1\n retentionPolicy:\n backupDeleteLockDays: 30\n backupRetainDays: 180\n backupSchedule:\n paused: true\n rpoConfig:\n targetRpoMinutes: 1440\n exclusionWindows:\n - startTime:\n hours: 1\n minutes: 23\n duration: 1800s\n daysOfWeek:\n daysOfWeeks:\n - MONDAY\n - THURSDAY\n - startTime:\n hours: 12\n duration: 3600s\n singleOccurrenceDate:\n year: 2024\n month: 3\n day: 17\n - startTime:\n hours: 8\n minutes: 40\n duration: 600s\n singleOccurrenceDate:\n year: 2024\n month: 3\n day: 18\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackupPlan can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/backupPlans/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, BackupPlan can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkebackup/backupPlan:BackupPlan default projects/{{project}}/locations/{{location}}/backupPlans/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkebackup/backupPlan:BackupPlan default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkebackup/backupPlan:BackupPlan default {{location}}/{{name}}\n```\n\n", "properties": { "backupConfig": { "$ref": "#/types/gcp:gkebackup/BackupPlanBackupConfig:BackupPlanBackupConfig", @@ -194680,7 +194680,7 @@ } }, "gcp:gkebackup/restorePlan:RestorePlan": { - "description": "Represents a Restore Plan instance.\n\n\nTo get more information about RestorePlan, see:\n\n* [API documentation](https://cloud.google.com/kubernetes-engine/docs/add-on/backup-for-gke/reference/rest/v1/projects.locations.restorePlans)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/kubernetes-engine/docs/add-on/backup-for-gke)\n\n## Example Usage\n\n### Gkebackup Restoreplan All Namespaces\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"restore-all-ns-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: \"\",\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"restore-all-ns\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\nconst allNs = new gcp.gkebackup.RestorePlan(\"all_ns\", {\n name: \"restore-all-ns\",\n location: \"us-central1\",\n backupPlan: basic.id,\n cluster: primary.id,\n restoreConfig: {\n allNamespaces: true,\n namespacedResourceRestoreMode: \"FAIL_ON_CONFLICT\",\n volumeDataRestorePolicy: \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n clusterResourceRestoreScope: {\n allGroupKinds: true,\n },\n clusterResourceConflictPolicy: \"USE_EXISTING_VERSION\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"restore-all-ns-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workloadPool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gkeBackupAgentConfig\": {\n \"enabled\": True,\n },\n },\n deletion_protection=\"\",\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"restore-all-ns\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"includeVolumeData\": True,\n \"includeSecrets\": True,\n \"allNamespaces\": True,\n })\nall_ns = gcp.gkebackup.RestorePlan(\"all_ns\",\n name=\"restore-all-ns\",\n location=\"us-central1\",\n backup_plan=basic.id,\n cluster=primary.id,\n restore_config={\n \"allNamespaces\": True,\n \"namespacedResourceRestoreMode\": \"FAIL_ON_CONFLICT\",\n \"volumeDataRestorePolicy\": \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n \"clusterResourceRestoreScope\": {\n \"allGroupKinds\": True,\n },\n \"clusterResourceConflictPolicy\": \"USE_EXISTING_VERSION\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"restore-all-ns-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = \"\",\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"restore-all-ns\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n var allNs = new Gcp.GkeBackup.RestorePlan(\"all_ns\", new()\n {\n Name = \"restore-all-ns\",\n Location = \"us-central1\",\n BackupPlan = basic.Id,\n Cluster = primary.Id,\n RestoreConfig = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigArgs\n {\n AllNamespaces = true,\n NamespacedResourceRestoreMode = \"FAIL_ON_CONFLICT\",\n VolumeDataRestorePolicy = \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n ClusterResourceRestoreScope = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs\n {\n AllGroupKinds = true,\n },\n ClusterResourceConflictPolicy = \"USE_EXISTING_VERSION\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"restore-all-ns-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"restore-all-ns\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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\t_, err = gkebackup.NewRestorePlan(ctx, \"all_ns\", \u0026gkebackup.RestorePlanArgs{\n\t\t\tName: pulumi.String(\"restore-all-ns\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupPlan: basic.ID(),\n\t\t\tCluster: primary.ID(),\n\t\t\tRestoreConfig: \u0026gkebackup.RestorePlanRestoreConfigArgs{\n\t\t\t\tAllNamespaces: pulumi.Bool(true),\n\t\t\t\tNamespacedResourceRestoreMode: pulumi.String(\"FAIL_ON_CONFLICT\"),\n\t\t\t\tVolumeDataRestorePolicy: pulumi.String(\"RESTORE_VOLUME_DATA_FROM_BACKUP\"),\n\t\t\t\tClusterResourceRestoreScope: \u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs{\n\t\t\t\t\tAllGroupKinds: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tClusterResourceConflictPolicy: pulumi.String(\"USE_EXISTING_VERSION\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.RestorePlan;\nimport com.pulumi.gcp.gkebackup.RestorePlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"restore-all-ns-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"restore-all-ns\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n var allNs = new RestorePlan(\"allNs\", RestorePlanArgs.builder()\n .name(\"restore-all-ns\")\n .location(\"us-central1\")\n .backupPlan(basic.id())\n .cluster(primary.id())\n .restoreConfig(RestorePlanRestoreConfigArgs.builder()\n .allNamespaces(true)\n .namespacedResourceRestoreMode(\"FAIL_ON_CONFLICT\")\n .volumeDataRestorePolicy(\"RESTORE_VOLUME_DATA_FROM_BACKUP\")\n .clusterResourceRestoreScope(RestorePlanRestoreConfigClusterResourceRestoreScopeArgs.builder()\n .allGroupKinds(true)\n .build())\n .clusterResourceConflictPolicy(\"USE_EXISTING_VERSION\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: restore-all-ns-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection:\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: restore-all-ns\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n allNs:\n type: gcp:gkebackup:RestorePlan\n name: all_ns\n properties:\n name: restore-all-ns\n location: us-central1\n backupPlan: ${basic.id}\n cluster: ${primary.id}\n restoreConfig:\n allNamespaces: true\n namespacedResourceRestoreMode: FAIL_ON_CONFLICT\n volumeDataRestorePolicy: RESTORE_VOLUME_DATA_FROM_BACKUP\n clusterResourceRestoreScope:\n allGroupKinds: true\n clusterResourceConflictPolicy: USE_EXISTING_VERSION\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Restoreplan Rollback Namespace\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"rollback-ns-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: \"\",\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"rollback-ns\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\nconst rollbackNs = new gcp.gkebackup.RestorePlan(\"rollback_ns\", {\n name: \"rollback-ns-rp\",\n location: \"us-central1\",\n backupPlan: basic.id,\n cluster: primary.id,\n restoreConfig: {\n selectedNamespaces: {\n namespaces: [\"my-ns\"],\n },\n namespacedResourceRestoreMode: \"DELETE_AND_RESTORE\",\n volumeDataRestorePolicy: \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n clusterResourceRestoreScope: {\n selectedGroupKinds: [\n {\n resourceGroup: \"apiextension.k8s.io\",\n resourceKind: \"CustomResourceDefinition\",\n },\n {\n resourceGroup: \"storage.k8s.io\",\n resourceKind: \"StorageClass\",\n },\n ],\n },\n clusterResourceConflictPolicy: \"USE_EXISTING_VERSION\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"rollback-ns-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workloadPool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gkeBackupAgentConfig\": {\n \"enabled\": True,\n },\n },\n deletion_protection=\"\",\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"rollback-ns\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"includeVolumeData\": True,\n \"includeSecrets\": True,\n \"allNamespaces\": True,\n })\nrollback_ns = gcp.gkebackup.RestorePlan(\"rollback_ns\",\n name=\"rollback-ns-rp\",\n location=\"us-central1\",\n backup_plan=basic.id,\n cluster=primary.id,\n restore_config={\n \"selectedNamespaces\": {\n \"namespaces\": [\"my-ns\"],\n },\n \"namespacedResourceRestoreMode\": \"DELETE_AND_RESTORE\",\n \"volumeDataRestorePolicy\": \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n \"clusterResourceRestoreScope\": {\n \"selectedGroupKinds\": [\n {\n \"resourceGroup\": \"apiextension.k8s.io\",\n \"resourceKind\": \"CustomResourceDefinition\",\n },\n {\n \"resourceGroup\": \"storage.k8s.io\",\n \"resourceKind\": \"StorageClass\",\n },\n ],\n },\n \"clusterResourceConflictPolicy\": \"USE_EXISTING_VERSION\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"rollback-ns-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = \"\",\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"rollback-ns\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n var rollbackNs = new Gcp.GkeBackup.RestorePlan(\"rollback_ns\", new()\n {\n Name = \"rollback-ns-rp\",\n Location = \"us-central1\",\n BackupPlan = basic.Id,\n Cluster = primary.Id,\n RestoreConfig = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigArgs\n {\n SelectedNamespaces = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigSelectedNamespacesArgs\n {\n Namespaces = new[]\n {\n \"my-ns\",\n },\n },\n NamespacedResourceRestoreMode = \"DELETE_AND_RESTORE\",\n VolumeDataRestorePolicy = \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n ClusterResourceRestoreScope = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs\n {\n SelectedGroupKinds = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeSelectedGroupKindArgs\n {\n ResourceGroup = \"apiextension.k8s.io\",\n ResourceKind = \"CustomResourceDefinition\",\n },\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeSelectedGroupKindArgs\n {\n ResourceGroup = \"storage.k8s.io\",\n ResourceKind = \"StorageClass\",\n },\n },\n },\n ClusterResourceConflictPolicy = \"USE_EXISTING_VERSION\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"rollback-ns-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"rollback-ns\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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\t_, err = gkebackup.NewRestorePlan(ctx, \"rollback_ns\", \u0026gkebackup.RestorePlanArgs{\n\t\t\tName: pulumi.String(\"rollback-ns-rp\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupPlan: basic.ID(),\n\t\t\tCluster: primary.ID(),\n\t\t\tRestoreConfig: \u0026gkebackup.RestorePlanRestoreConfigArgs{\n\t\t\t\tSelectedNamespaces: \u0026gkebackup.RestorePlanRestoreConfigSelectedNamespacesArgs{\n\t\t\t\t\tNamespaces: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"my-ns\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNamespacedResourceRestoreMode: pulumi.String(\"DELETE_AND_RESTORE\"),\n\t\t\t\tVolumeDataRestorePolicy: pulumi.String(\"RESTORE_VOLUME_DATA_FROM_BACKUP\"),\n\t\t\t\tClusterResourceRestoreScope: \u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs{\n\t\t\t\t\tSelectedGroupKinds: gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeSelectedGroupKindArray{\n\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeSelectedGroupKindArgs{\n\t\t\t\t\t\t\tResourceGroup: pulumi.String(\"apiextension.k8s.io\"),\n\t\t\t\t\t\t\tResourceKind: pulumi.String(\"CustomResourceDefinition\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeSelectedGroupKindArgs{\n\t\t\t\t\t\t\tResourceGroup: pulumi.String(\"storage.k8s.io\"),\n\t\t\t\t\t\t\tResourceKind: pulumi.String(\"StorageClass\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tClusterResourceConflictPolicy: pulumi.String(\"USE_EXISTING_VERSION\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.RestorePlan;\nimport com.pulumi.gcp.gkebackup.RestorePlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigSelectedNamespacesArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"rollback-ns-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"rollback-ns\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n var rollbackNs = new RestorePlan(\"rollbackNs\", RestorePlanArgs.builder()\n .name(\"rollback-ns-rp\")\n .location(\"us-central1\")\n .backupPlan(basic.id())\n .cluster(primary.id())\n .restoreConfig(RestorePlanRestoreConfigArgs.builder()\n .selectedNamespaces(RestorePlanRestoreConfigSelectedNamespacesArgs.builder()\n .namespaces(\"my-ns\")\n .build())\n .namespacedResourceRestoreMode(\"DELETE_AND_RESTORE\")\n .volumeDataRestorePolicy(\"RESTORE_VOLUME_DATA_FROM_BACKUP\")\n .clusterResourceRestoreScope(RestorePlanRestoreConfigClusterResourceRestoreScopeArgs.builder()\n .selectedGroupKinds( \n RestorePlanRestoreConfigClusterResourceRestoreScopeSelectedGroupKindArgs.builder()\n .resourceGroup(\"apiextension.k8s.io\")\n .resourceKind(\"CustomResourceDefinition\")\n .build(),\n RestorePlanRestoreConfigClusterResourceRestoreScopeSelectedGroupKindArgs.builder()\n .resourceGroup(\"storage.k8s.io\")\n .resourceKind(\"StorageClass\")\n .build())\n .build())\n .clusterResourceConflictPolicy(\"USE_EXISTING_VERSION\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: rollback-ns-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection:\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: rollback-ns\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n rollbackNs:\n type: gcp:gkebackup:RestorePlan\n name: rollback_ns\n properties:\n name: rollback-ns-rp\n location: us-central1\n backupPlan: ${basic.id}\n cluster: ${primary.id}\n restoreConfig:\n selectedNamespaces:\n namespaces:\n - my-ns\n namespacedResourceRestoreMode: DELETE_AND_RESTORE\n volumeDataRestorePolicy: RESTORE_VOLUME_DATA_FROM_BACKUP\n clusterResourceRestoreScope:\n selectedGroupKinds:\n - resourceGroup: apiextension.k8s.io\n resourceKind: CustomResourceDefinition\n - resourceGroup: storage.k8s.io\n resourceKind: StorageClass\n clusterResourceConflictPolicy: USE_EXISTING_VERSION\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Restoreplan Protected Application\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"rollback-app-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: \"\",\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"rollback-app\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\nconst rollbackApp = new gcp.gkebackup.RestorePlan(\"rollback_app\", {\n name: \"rollback-app-rp\",\n location: \"us-central1\",\n backupPlan: basic.id,\n cluster: primary.id,\n restoreConfig: {\n selectedApplications: {\n namespacedNames: [{\n name: \"my-app\",\n namespace: \"my-ns\",\n }],\n },\n namespacedResourceRestoreMode: \"DELETE_AND_RESTORE\",\n volumeDataRestorePolicy: \"REUSE_VOLUME_HANDLE_FROM_BACKUP\",\n clusterResourceRestoreScope: {\n noGroupKinds: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"rollback-app-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workloadPool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gkeBackupAgentConfig\": {\n \"enabled\": True,\n },\n },\n deletion_protection=\"\",\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"rollback-app\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"includeVolumeData\": True,\n \"includeSecrets\": True,\n \"allNamespaces\": True,\n })\nrollback_app = gcp.gkebackup.RestorePlan(\"rollback_app\",\n name=\"rollback-app-rp\",\n location=\"us-central1\",\n backup_plan=basic.id,\n cluster=primary.id,\n restore_config={\n \"selectedApplications\": {\n \"namespacedNames\": [{\n \"name\": \"my-app\",\n \"namespace\": \"my-ns\",\n }],\n },\n \"namespacedResourceRestoreMode\": \"DELETE_AND_RESTORE\",\n \"volumeDataRestorePolicy\": \"REUSE_VOLUME_HANDLE_FROM_BACKUP\",\n \"clusterResourceRestoreScope\": {\n \"noGroupKinds\": 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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"rollback-app-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = \"\",\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"rollback-app\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n var rollbackApp = new Gcp.GkeBackup.RestorePlan(\"rollback_app\", new()\n {\n Name = \"rollback-app-rp\",\n Location = \"us-central1\",\n BackupPlan = basic.Id,\n Cluster = primary.Id,\n RestoreConfig = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigArgs\n {\n SelectedApplications = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigSelectedApplicationsArgs\n {\n NamespacedNames = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigSelectedApplicationsNamespacedNameArgs\n {\n Name = \"my-app\",\n Namespace = \"my-ns\",\n },\n },\n },\n NamespacedResourceRestoreMode = \"DELETE_AND_RESTORE\",\n VolumeDataRestorePolicy = \"REUSE_VOLUME_HANDLE_FROM_BACKUP\",\n ClusterResourceRestoreScope = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs\n {\n NoGroupKinds = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"rollback-app-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"rollback-app\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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\t_, err = gkebackup.NewRestorePlan(ctx, \"rollback_app\", \u0026gkebackup.RestorePlanArgs{\n\t\t\tName: pulumi.String(\"rollback-app-rp\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupPlan: basic.ID(),\n\t\t\tCluster: primary.ID(),\n\t\t\tRestoreConfig: \u0026gkebackup.RestorePlanRestoreConfigArgs{\n\t\t\t\tSelectedApplications: \u0026gkebackup.RestorePlanRestoreConfigSelectedApplicationsArgs{\n\t\t\t\t\tNamespacedNames: gkebackup.RestorePlanRestoreConfigSelectedApplicationsNamespacedNameArray{\n\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigSelectedApplicationsNamespacedNameArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"my-app\"),\n\t\t\t\t\t\t\tNamespace: pulumi.String(\"my-ns\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNamespacedResourceRestoreMode: pulumi.String(\"DELETE_AND_RESTORE\"),\n\t\t\t\tVolumeDataRestorePolicy: pulumi.String(\"REUSE_VOLUME_HANDLE_FROM_BACKUP\"),\n\t\t\t\tClusterResourceRestoreScope: \u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs{\n\t\t\t\t\tNoGroupKinds: 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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.RestorePlan;\nimport com.pulumi.gcp.gkebackup.RestorePlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigSelectedApplicationsArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"rollback-app-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"rollback-app\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n var rollbackApp = new RestorePlan(\"rollbackApp\", RestorePlanArgs.builder()\n .name(\"rollback-app-rp\")\n .location(\"us-central1\")\n .backupPlan(basic.id())\n .cluster(primary.id())\n .restoreConfig(RestorePlanRestoreConfigArgs.builder()\n .selectedApplications(RestorePlanRestoreConfigSelectedApplicationsArgs.builder()\n .namespacedNames(RestorePlanRestoreConfigSelectedApplicationsNamespacedNameArgs.builder()\n .name(\"my-app\")\n .namespace(\"my-ns\")\n .build())\n .build())\n .namespacedResourceRestoreMode(\"DELETE_AND_RESTORE\")\n .volumeDataRestorePolicy(\"REUSE_VOLUME_HANDLE_FROM_BACKUP\")\n .clusterResourceRestoreScope(RestorePlanRestoreConfigClusterResourceRestoreScopeArgs.builder()\n .noGroupKinds(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: rollback-app-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection:\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: rollback-app\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n rollbackApp:\n type: gcp:gkebackup:RestorePlan\n name: rollback_app\n properties:\n name: rollback-app-rp\n location: us-central1\n backupPlan: ${basic.id}\n cluster: ${primary.id}\n restoreConfig:\n selectedApplications:\n namespacedNames:\n - name: my-app\n namespace: my-ns\n namespacedResourceRestoreMode: DELETE_AND_RESTORE\n volumeDataRestorePolicy: REUSE_VOLUME_HANDLE_FROM_BACKUP\n clusterResourceRestoreScope:\n noGroupKinds: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Restoreplan All Cluster Resources\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"all-groupkinds-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: \"\",\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"all-groupkinds\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\nconst allClusterResources = new gcp.gkebackup.RestorePlan(\"all_cluster_resources\", {\n name: \"all-groupkinds-rp\",\n location: \"us-central1\",\n backupPlan: basic.id,\n cluster: primary.id,\n restoreConfig: {\n noNamespaces: true,\n namespacedResourceRestoreMode: \"FAIL_ON_CONFLICT\",\n clusterResourceRestoreScope: {\n allGroupKinds: true,\n },\n clusterResourceConflictPolicy: \"USE_EXISTING_VERSION\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"all-groupkinds-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workloadPool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gkeBackupAgentConfig\": {\n \"enabled\": True,\n },\n },\n deletion_protection=\"\",\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"all-groupkinds\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"includeVolumeData\": True,\n \"includeSecrets\": True,\n \"allNamespaces\": True,\n })\nall_cluster_resources = gcp.gkebackup.RestorePlan(\"all_cluster_resources\",\n name=\"all-groupkinds-rp\",\n location=\"us-central1\",\n backup_plan=basic.id,\n cluster=primary.id,\n restore_config={\n \"noNamespaces\": True,\n \"namespacedResourceRestoreMode\": \"FAIL_ON_CONFLICT\",\n \"clusterResourceRestoreScope\": {\n \"allGroupKinds\": True,\n },\n \"clusterResourceConflictPolicy\": \"USE_EXISTING_VERSION\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"all-groupkinds-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = \"\",\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"all-groupkinds\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n var allClusterResources = new Gcp.GkeBackup.RestorePlan(\"all_cluster_resources\", new()\n {\n Name = \"all-groupkinds-rp\",\n Location = \"us-central1\",\n BackupPlan = basic.Id,\n Cluster = primary.Id,\n RestoreConfig = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigArgs\n {\n NoNamespaces = true,\n NamespacedResourceRestoreMode = \"FAIL_ON_CONFLICT\",\n ClusterResourceRestoreScope = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs\n {\n AllGroupKinds = true,\n },\n ClusterResourceConflictPolicy = \"USE_EXISTING_VERSION\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"all-groupkinds-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"all-groupkinds\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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\t_, err = gkebackup.NewRestorePlan(ctx, \"all_cluster_resources\", \u0026gkebackup.RestorePlanArgs{\n\t\t\tName: pulumi.String(\"all-groupkinds-rp\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupPlan: basic.ID(),\n\t\t\tCluster: primary.ID(),\n\t\t\tRestoreConfig: \u0026gkebackup.RestorePlanRestoreConfigArgs{\n\t\t\t\tNoNamespaces: pulumi.Bool(true),\n\t\t\t\tNamespacedResourceRestoreMode: pulumi.String(\"FAIL_ON_CONFLICT\"),\n\t\t\t\tClusterResourceRestoreScope: \u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs{\n\t\t\t\t\tAllGroupKinds: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tClusterResourceConflictPolicy: pulumi.String(\"USE_EXISTING_VERSION\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.RestorePlan;\nimport com.pulumi.gcp.gkebackup.RestorePlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"all-groupkinds-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"all-groupkinds\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n var allClusterResources = new RestorePlan(\"allClusterResources\", RestorePlanArgs.builder()\n .name(\"all-groupkinds-rp\")\n .location(\"us-central1\")\n .backupPlan(basic.id())\n .cluster(primary.id())\n .restoreConfig(RestorePlanRestoreConfigArgs.builder()\n .noNamespaces(true)\n .namespacedResourceRestoreMode(\"FAIL_ON_CONFLICT\")\n .clusterResourceRestoreScope(RestorePlanRestoreConfigClusterResourceRestoreScopeArgs.builder()\n .allGroupKinds(true)\n .build())\n .clusterResourceConflictPolicy(\"USE_EXISTING_VERSION\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: all-groupkinds-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection:\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: all-groupkinds\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n allClusterResources:\n type: gcp:gkebackup:RestorePlan\n name: all_cluster_resources\n properties:\n name: all-groupkinds-rp\n location: us-central1\n backupPlan: ${basic.id}\n cluster: ${primary.id}\n restoreConfig:\n noNamespaces: true\n namespacedResourceRestoreMode: FAIL_ON_CONFLICT\n clusterResourceRestoreScope:\n allGroupKinds: true\n clusterResourceConflictPolicy: USE_EXISTING_VERSION\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Restoreplan Rename Namespace\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"rename-ns-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: \"\",\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"rename-ns\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\nconst renameNs = new gcp.gkebackup.RestorePlan(\"rename_ns\", {\n name: \"rename-ns-rp\",\n location: \"us-central1\",\n backupPlan: basic.id,\n cluster: primary.id,\n restoreConfig: {\n selectedNamespaces: {\n namespaces: [\"ns1\"],\n },\n namespacedResourceRestoreMode: \"FAIL_ON_CONFLICT\",\n volumeDataRestorePolicy: \"REUSE_VOLUME_HANDLE_FROM_BACKUP\",\n clusterResourceRestoreScope: {\n noGroupKinds: true,\n },\n transformationRules: [\n {\n description: \"rename namespace from ns1 to ns2\",\n resourceFilter: {\n groupKinds: [{\n resourceKind: \"Namespace\",\n }],\n jsonPath: \".metadata[?(@.name == 'ns1')]\",\n },\n fieldActions: [{\n op: \"REPLACE\",\n path: \"/metadata/name\",\n value: \"ns2\",\n }],\n },\n {\n description: \"move all resources from ns1 to ns2\",\n resourceFilter: {\n namespaces: [\"ns1\"],\n },\n fieldActions: [{\n op: \"REPLACE\",\n path: \"/metadata/namespace\",\n value: \"ns2\",\n }],\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"rename-ns-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workloadPool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gkeBackupAgentConfig\": {\n \"enabled\": True,\n },\n },\n deletion_protection=\"\",\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"rename-ns\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"includeVolumeData\": True,\n \"includeSecrets\": True,\n \"allNamespaces\": True,\n })\nrename_ns = gcp.gkebackup.RestorePlan(\"rename_ns\",\n name=\"rename-ns-rp\",\n location=\"us-central1\",\n backup_plan=basic.id,\n cluster=primary.id,\n restore_config={\n \"selectedNamespaces\": {\n \"namespaces\": [\"ns1\"],\n },\n \"namespacedResourceRestoreMode\": \"FAIL_ON_CONFLICT\",\n \"volumeDataRestorePolicy\": \"REUSE_VOLUME_HANDLE_FROM_BACKUP\",\n \"clusterResourceRestoreScope\": {\n \"noGroupKinds\": True,\n },\n \"transformationRules\": [\n {\n \"description\": \"rename namespace from ns1 to ns2\",\n \"resourceFilter\": {\n \"groupKinds\": [{\n \"resourceKind\": \"Namespace\",\n }],\n \"jsonPath\": \".metadata[?(@.name == 'ns1')]\",\n },\n \"fieldActions\": [{\n \"op\": \"REPLACE\",\n \"path\": \"/metadata/name\",\n \"value\": \"ns2\",\n }],\n },\n {\n \"description\": \"move all resources from ns1 to ns2\",\n \"resourceFilter\": {\n \"namespaces\": [\"ns1\"],\n },\n \"fieldActions\": [{\n \"op\": \"REPLACE\",\n \"path\": \"/metadata/namespace\",\n \"value\": \"ns2\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"rename-ns-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = \"\",\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"rename-ns\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n var renameNs = new Gcp.GkeBackup.RestorePlan(\"rename_ns\", new()\n {\n Name = \"rename-ns-rp\",\n Location = \"us-central1\",\n BackupPlan = basic.Id,\n Cluster = primary.Id,\n RestoreConfig = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigArgs\n {\n SelectedNamespaces = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigSelectedNamespacesArgs\n {\n Namespaces = new[]\n {\n \"ns1\",\n },\n },\n NamespacedResourceRestoreMode = \"FAIL_ON_CONFLICT\",\n VolumeDataRestorePolicy = \"REUSE_VOLUME_HANDLE_FROM_BACKUP\",\n ClusterResourceRestoreScope = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs\n {\n NoGroupKinds = true,\n },\n TransformationRules = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleArgs\n {\n Description = \"rename namespace from ns1 to ns2\",\n ResourceFilter = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleResourceFilterArgs\n {\n GroupKinds = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleResourceFilterGroupKindArgs\n {\n ResourceKind = \"Namespace\",\n },\n },\n JsonPath = \".metadata[?(@.name == 'ns1')]\",\n },\n FieldActions = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleFieldActionArgs\n {\n Op = \"REPLACE\",\n Path = \"/metadata/name\",\n Value = \"ns2\",\n },\n },\n },\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleArgs\n {\n Description = \"move all resources from ns1 to ns2\",\n ResourceFilter = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleResourceFilterArgs\n {\n Namespaces = new[]\n {\n \"ns1\",\n },\n },\n FieldActions = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleFieldActionArgs\n {\n Op = \"REPLACE\",\n Path = \"/metadata/namespace\",\n Value = \"ns2\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"rename-ns-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"rename-ns\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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\t_, err = gkebackup.NewRestorePlan(ctx, \"rename_ns\", \u0026gkebackup.RestorePlanArgs{\n\t\t\tName: pulumi.String(\"rename-ns-rp\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupPlan: basic.ID(),\n\t\t\tCluster: primary.ID(),\n\t\t\tRestoreConfig: \u0026gkebackup.RestorePlanRestoreConfigArgs{\n\t\t\t\tSelectedNamespaces: \u0026gkebackup.RestorePlanRestoreConfigSelectedNamespacesArgs{\n\t\t\t\t\tNamespaces: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ns1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNamespacedResourceRestoreMode: pulumi.String(\"FAIL_ON_CONFLICT\"),\n\t\t\t\tVolumeDataRestorePolicy: pulumi.String(\"REUSE_VOLUME_HANDLE_FROM_BACKUP\"),\n\t\t\t\tClusterResourceRestoreScope: \u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs{\n\t\t\t\t\tNoGroupKinds: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tTransformationRules: gkebackup.RestorePlanRestoreConfigTransformationRuleArray{\n\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigTransformationRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"rename namespace from ns1 to ns2\"),\n\t\t\t\t\t\tResourceFilter: \u0026gkebackup.RestorePlanRestoreConfigTransformationRuleResourceFilterArgs{\n\t\t\t\t\t\t\tGroupKinds: gkebackup.RestorePlanRestoreConfigTransformationRuleResourceFilterGroupKindArray{\n\t\t\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigTransformationRuleResourceFilterGroupKindArgs{\n\t\t\t\t\t\t\t\t\tResourceKind: pulumi.String(\"Namespace\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tJsonPath: pulumi.String(\".metadata[?(@.name == 'ns1')]\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFieldActions: gkebackup.RestorePlanRestoreConfigTransformationRuleFieldActionArray{\n\t\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigTransformationRuleFieldActionArgs{\n\t\t\t\t\t\t\t\tOp: pulumi.String(\"REPLACE\"),\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/metadata/name\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"ns2\"),\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\t\u0026gkebackup.RestorePlanRestoreConfigTransformationRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"move all resources from ns1 to ns2\"),\n\t\t\t\t\t\tResourceFilter: \u0026gkebackup.RestorePlanRestoreConfigTransformationRuleResourceFilterArgs{\n\t\t\t\t\t\t\tNamespaces: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"ns1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFieldActions: gkebackup.RestorePlanRestoreConfigTransformationRuleFieldActionArray{\n\t\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigTransformationRuleFieldActionArgs{\n\t\t\t\t\t\t\t\tOp: pulumi.String(\"REPLACE\"),\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/metadata/namespace\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"ns2\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.RestorePlan;\nimport com.pulumi.gcp.gkebackup.RestorePlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigSelectedNamespacesArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"rename-ns-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"rename-ns\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n var renameNs = new RestorePlan(\"renameNs\", RestorePlanArgs.builder()\n .name(\"rename-ns-rp\")\n .location(\"us-central1\")\n .backupPlan(basic.id())\n .cluster(primary.id())\n .restoreConfig(RestorePlanRestoreConfigArgs.builder()\n .selectedNamespaces(RestorePlanRestoreConfigSelectedNamespacesArgs.builder()\n .namespaces(\"ns1\")\n .build())\n .namespacedResourceRestoreMode(\"FAIL_ON_CONFLICT\")\n .volumeDataRestorePolicy(\"REUSE_VOLUME_HANDLE_FROM_BACKUP\")\n .clusterResourceRestoreScope(RestorePlanRestoreConfigClusterResourceRestoreScopeArgs.builder()\n .noGroupKinds(true)\n .build())\n .transformationRules( \n RestorePlanRestoreConfigTransformationRuleArgs.builder()\n .description(\"rename namespace from ns1 to ns2\")\n .resourceFilter(RestorePlanRestoreConfigTransformationRuleResourceFilterArgs.builder()\n .groupKinds(RestorePlanRestoreConfigTransformationRuleResourceFilterGroupKindArgs.builder()\n .resourceKind(\"Namespace\")\n .build())\n .jsonPath(\".metadata[?(@.name == 'ns1')]\")\n .build())\n .fieldActions(RestorePlanRestoreConfigTransformationRuleFieldActionArgs.builder()\n .op(\"REPLACE\")\n .path(\"/metadata/name\")\n .value(\"ns2\")\n .build())\n .build(),\n RestorePlanRestoreConfigTransformationRuleArgs.builder()\n .description(\"move all resources from ns1 to ns2\")\n .resourceFilter(RestorePlanRestoreConfigTransformationRuleResourceFilterArgs.builder()\n .namespaces(\"ns1\")\n .build())\n .fieldActions(RestorePlanRestoreConfigTransformationRuleFieldActionArgs.builder()\n .op(\"REPLACE\")\n .path(\"/metadata/namespace\")\n .value(\"ns2\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: rename-ns-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection:\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: rename-ns\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n renameNs:\n type: gcp:gkebackup:RestorePlan\n name: rename_ns\n properties:\n name: rename-ns-rp\n location: us-central1\n backupPlan: ${basic.id}\n cluster: ${primary.id}\n restoreConfig:\n selectedNamespaces:\n namespaces:\n - ns1\n namespacedResourceRestoreMode: FAIL_ON_CONFLICT\n volumeDataRestorePolicy: REUSE_VOLUME_HANDLE_FROM_BACKUP\n clusterResourceRestoreScope:\n noGroupKinds: true\n transformationRules:\n - description: rename namespace from ns1 to ns2\n resourceFilter:\n groupKinds:\n - resourceKind: Namespace\n jsonPath: .metadata[?(@.name == 'ns1')]\n fieldActions:\n - op: REPLACE\n path: /metadata/name\n value: ns2\n - description: move all resources from ns1 to ns2\n resourceFilter:\n namespaces:\n - ns1\n fieldActions:\n - op: REPLACE\n path: /metadata/namespace\n value: ns2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Restoreplan Second Transformation\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"transform-rule-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: \"\",\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"transform-rule\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\nconst transformRule = new gcp.gkebackup.RestorePlan(\"transform_rule\", {\n name: \"transform-rule-rp\",\n description: \"copy nginx env variables\",\n labels: {\n app: \"nginx\",\n },\n location: \"us-central1\",\n backupPlan: basic.id,\n cluster: primary.id,\n restoreConfig: {\n excludedNamespaces: {\n namespaces: [\"my-ns\"],\n },\n namespacedResourceRestoreMode: \"DELETE_AND_RESTORE\",\n volumeDataRestorePolicy: \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n clusterResourceRestoreScope: {\n excludedGroupKinds: [{\n resourceGroup: \"apiextension.k8s.io\",\n resourceKind: \"CustomResourceDefinition\",\n }],\n },\n clusterResourceConflictPolicy: \"USE_EXISTING_VERSION\",\n transformationRules: [{\n description: \"Copy environment variables from the nginx container to the install init container.\",\n resourceFilter: {\n groupKinds: [{\n resourceKind: \"Pod\",\n resourceGroup: \"\",\n }],\n jsonPath: \".metadata[?(@.name == 'nginx')]\",\n },\n fieldActions: [{\n op: \"COPY\",\n path: \"/spec/initContainers/0/env\",\n fromPath: \"/spec/containers/0/env\",\n }],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"transform-rule-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workloadPool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gkeBackupAgentConfig\": {\n \"enabled\": True,\n },\n },\n deletion_protection=\"\",\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"transform-rule\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"includeVolumeData\": True,\n \"includeSecrets\": True,\n \"allNamespaces\": True,\n })\ntransform_rule = gcp.gkebackup.RestorePlan(\"transform_rule\",\n name=\"transform-rule-rp\",\n description=\"copy nginx env variables\",\n labels={\n \"app\": \"nginx\",\n },\n location=\"us-central1\",\n backup_plan=basic.id,\n cluster=primary.id,\n restore_config={\n \"excludedNamespaces\": {\n \"namespaces\": [\"my-ns\"],\n },\n \"namespacedResourceRestoreMode\": \"DELETE_AND_RESTORE\",\n \"volumeDataRestorePolicy\": \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n \"clusterResourceRestoreScope\": {\n \"excludedGroupKinds\": [{\n \"resourceGroup\": \"apiextension.k8s.io\",\n \"resourceKind\": \"CustomResourceDefinition\",\n }],\n },\n \"clusterResourceConflictPolicy\": \"USE_EXISTING_VERSION\",\n \"transformationRules\": [{\n \"description\": \"Copy environment variables from the nginx container to the install init container.\",\n \"resourceFilter\": {\n \"groupKinds\": [{\n \"resourceKind\": \"Pod\",\n \"resourceGroup\": \"\",\n }],\n \"jsonPath\": \".metadata[?(@.name == 'nginx')]\",\n },\n \"fieldActions\": [{\n \"op\": \"COPY\",\n \"path\": \"/spec/initContainers/0/env\",\n \"fromPath\": \"/spec/containers/0/env\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"transform-rule-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = \"\",\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"transform-rule\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n var transformRule = new Gcp.GkeBackup.RestorePlan(\"transform_rule\", new()\n {\n Name = \"transform-rule-rp\",\n Description = \"copy nginx env variables\",\n Labels = \n {\n { \"app\", \"nginx\" },\n },\n Location = \"us-central1\",\n BackupPlan = basic.Id,\n Cluster = primary.Id,\n RestoreConfig = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigArgs\n {\n ExcludedNamespaces = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigExcludedNamespacesArgs\n {\n Namespaces = new[]\n {\n \"my-ns\",\n },\n },\n NamespacedResourceRestoreMode = \"DELETE_AND_RESTORE\",\n VolumeDataRestorePolicy = \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n ClusterResourceRestoreScope = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs\n {\n ExcludedGroupKinds = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeExcludedGroupKindArgs\n {\n ResourceGroup = \"apiextension.k8s.io\",\n ResourceKind = \"CustomResourceDefinition\",\n },\n },\n },\n ClusterResourceConflictPolicy = \"USE_EXISTING_VERSION\",\n TransformationRules = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleArgs\n {\n Description = \"Copy environment variables from the nginx container to the install init container.\",\n ResourceFilter = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleResourceFilterArgs\n {\n GroupKinds = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleResourceFilterGroupKindArgs\n {\n ResourceKind = \"Pod\",\n ResourceGroup = \"\",\n },\n },\n JsonPath = \".metadata[?(@.name == 'nginx')]\",\n },\n FieldActions = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleFieldActionArgs\n {\n Op = \"COPY\",\n Path = \"/spec/initContainers/0/env\",\n FromPath = \"/spec/containers/0/env\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"transform-rule-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"transform-rule\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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\t_, err = gkebackup.NewRestorePlan(ctx, \"transform_rule\", \u0026gkebackup.RestorePlanArgs{\n\t\t\tName: pulumi.String(\"transform-rule-rp\"),\n\t\t\tDescription: pulumi.String(\"copy nginx env variables\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"app\": pulumi.String(\"nginx\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupPlan: basic.ID(),\n\t\t\tCluster: primary.ID(),\n\t\t\tRestoreConfig: \u0026gkebackup.RestorePlanRestoreConfigArgs{\n\t\t\t\tExcludedNamespaces: \u0026gkebackup.RestorePlanRestoreConfigExcludedNamespacesArgs{\n\t\t\t\t\tNamespaces: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"my-ns\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNamespacedResourceRestoreMode: pulumi.String(\"DELETE_AND_RESTORE\"),\n\t\t\t\tVolumeDataRestorePolicy: pulumi.String(\"RESTORE_VOLUME_DATA_FROM_BACKUP\"),\n\t\t\t\tClusterResourceRestoreScope: \u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs{\n\t\t\t\t\tExcludedGroupKinds: gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeExcludedGroupKindArray{\n\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeExcludedGroupKindArgs{\n\t\t\t\t\t\t\tResourceGroup: pulumi.String(\"apiextension.k8s.io\"),\n\t\t\t\t\t\t\tResourceKind: pulumi.String(\"CustomResourceDefinition\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tClusterResourceConflictPolicy: pulumi.String(\"USE_EXISTING_VERSION\"),\n\t\t\t\tTransformationRules: gkebackup.RestorePlanRestoreConfigTransformationRuleArray{\n\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigTransformationRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"Copy environment variables from the nginx container to the install init container.\"),\n\t\t\t\t\t\tResourceFilter: \u0026gkebackup.RestorePlanRestoreConfigTransformationRuleResourceFilterArgs{\n\t\t\t\t\t\t\tGroupKinds: gkebackup.RestorePlanRestoreConfigTransformationRuleResourceFilterGroupKindArray{\n\t\t\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigTransformationRuleResourceFilterGroupKindArgs{\n\t\t\t\t\t\t\t\t\tResourceKind: pulumi.String(\"Pod\"),\n\t\t\t\t\t\t\t\t\tResourceGroup: pulumi.String(\"\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tJsonPath: pulumi.String(\".metadata[?(@.name == 'nginx')]\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFieldActions: gkebackup.RestorePlanRestoreConfigTransformationRuleFieldActionArray{\n\t\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigTransformationRuleFieldActionArgs{\n\t\t\t\t\t\t\t\tOp: pulumi.String(\"COPY\"),\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/spec/initContainers/0/env\"),\n\t\t\t\t\t\t\t\tFromPath: pulumi.String(\"/spec/containers/0/env\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.RestorePlan;\nimport com.pulumi.gcp.gkebackup.RestorePlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigExcludedNamespacesArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"transform-rule-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"transform-rule\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n var transformRule = new RestorePlan(\"transformRule\", RestorePlanArgs.builder()\n .name(\"transform-rule-rp\")\n .description(\"copy nginx env variables\")\n .labels(Map.of(\"app\", \"nginx\"))\n .location(\"us-central1\")\n .backupPlan(basic.id())\n .cluster(primary.id())\n .restoreConfig(RestorePlanRestoreConfigArgs.builder()\n .excludedNamespaces(RestorePlanRestoreConfigExcludedNamespacesArgs.builder()\n .namespaces(\"my-ns\")\n .build())\n .namespacedResourceRestoreMode(\"DELETE_AND_RESTORE\")\n .volumeDataRestorePolicy(\"RESTORE_VOLUME_DATA_FROM_BACKUP\")\n .clusterResourceRestoreScope(RestorePlanRestoreConfigClusterResourceRestoreScopeArgs.builder()\n .excludedGroupKinds(RestorePlanRestoreConfigClusterResourceRestoreScopeExcludedGroupKindArgs.builder()\n .resourceGroup(\"apiextension.k8s.io\")\n .resourceKind(\"CustomResourceDefinition\")\n .build())\n .build())\n .clusterResourceConflictPolicy(\"USE_EXISTING_VERSION\")\n .transformationRules(RestorePlanRestoreConfigTransformationRuleArgs.builder()\n .description(\"Copy environment variables from the nginx container to the install init container.\")\n .resourceFilter(RestorePlanRestoreConfigTransformationRuleResourceFilterArgs.builder()\n .groupKinds(RestorePlanRestoreConfigTransformationRuleResourceFilterGroupKindArgs.builder()\n .resourceKind(\"Pod\")\n .resourceGroup(\"\")\n .build())\n .jsonPath(\".metadata[?(@.name == 'nginx')]\")\n .build())\n .fieldActions(RestorePlanRestoreConfigTransformationRuleFieldActionArgs.builder()\n .op(\"COPY\")\n .path(\"/spec/initContainers/0/env\")\n .fromPath(\"/spec/containers/0/env\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: transform-rule-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection:\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: transform-rule\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n transformRule:\n type: gcp:gkebackup:RestorePlan\n name: transform_rule\n properties:\n name: transform-rule-rp\n description: copy nginx env variables\n labels:\n app: nginx\n location: us-central1\n backupPlan: ${basic.id}\n cluster: ${primary.id}\n restoreConfig:\n excludedNamespaces:\n namespaces:\n - my-ns\n namespacedResourceRestoreMode: DELETE_AND_RESTORE\n volumeDataRestorePolicy: RESTORE_VOLUME_DATA_FROM_BACKUP\n clusterResourceRestoreScope:\n excludedGroupKinds:\n - resourceGroup: apiextension.k8s.io\n resourceKind: CustomResourceDefinition\n clusterResourceConflictPolicy: USE_EXISTING_VERSION\n transformationRules:\n - description: Copy environment variables from the nginx container to the install init container.\n resourceFilter:\n groupKinds:\n - resourceKind: Pod\n resourceGroup:\n jsonPath: .metadata[?(@.name == 'nginx')]\n fieldActions:\n - op: COPY\n path: /spec/initContainers/0/env\n fromPath: /spec/containers/0/env\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Restoreplan Gitops Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"gitops-mode-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: \"\",\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"gitops-mode\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\nconst gitopsMode = new gcp.gkebackup.RestorePlan(\"gitops_mode\", {\n name: \"gitops-mode\",\n location: \"us-central1\",\n backupPlan: basic.id,\n cluster: primary.id,\n restoreConfig: {\n allNamespaces: true,\n namespacedResourceRestoreMode: \"MERGE_SKIP_ON_CONFLICT\",\n volumeDataRestorePolicy: \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n clusterResourceRestoreScope: {\n allGroupKinds: true,\n },\n clusterResourceConflictPolicy: \"USE_EXISTING_VERSION\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"gitops-mode-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workloadPool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gkeBackupAgentConfig\": {\n \"enabled\": True,\n },\n },\n deletion_protection=\"\",\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"gitops-mode\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"includeVolumeData\": True,\n \"includeSecrets\": True,\n \"allNamespaces\": True,\n })\ngitops_mode = gcp.gkebackup.RestorePlan(\"gitops_mode\",\n name=\"gitops-mode\",\n location=\"us-central1\",\n backup_plan=basic.id,\n cluster=primary.id,\n restore_config={\n \"allNamespaces\": True,\n \"namespacedResourceRestoreMode\": \"MERGE_SKIP_ON_CONFLICT\",\n \"volumeDataRestorePolicy\": \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n \"clusterResourceRestoreScope\": {\n \"allGroupKinds\": True,\n },\n \"clusterResourceConflictPolicy\": \"USE_EXISTING_VERSION\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"gitops-mode-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = \"\",\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"gitops-mode\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n var gitopsMode = new Gcp.GkeBackup.RestorePlan(\"gitops_mode\", new()\n {\n Name = \"gitops-mode\",\n Location = \"us-central1\",\n BackupPlan = basic.Id,\n Cluster = primary.Id,\n RestoreConfig = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigArgs\n {\n AllNamespaces = true,\n NamespacedResourceRestoreMode = \"MERGE_SKIP_ON_CONFLICT\",\n VolumeDataRestorePolicy = \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n ClusterResourceRestoreScope = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs\n {\n AllGroupKinds = true,\n },\n ClusterResourceConflictPolicy = \"USE_EXISTING_VERSION\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"gitops-mode-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"gitops-mode\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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\t_, err = gkebackup.NewRestorePlan(ctx, \"gitops_mode\", \u0026gkebackup.RestorePlanArgs{\n\t\t\tName: pulumi.String(\"gitops-mode\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupPlan: basic.ID(),\n\t\t\tCluster: primary.ID(),\n\t\t\tRestoreConfig: \u0026gkebackup.RestorePlanRestoreConfigArgs{\n\t\t\t\tAllNamespaces: pulumi.Bool(true),\n\t\t\t\tNamespacedResourceRestoreMode: pulumi.String(\"MERGE_SKIP_ON_CONFLICT\"),\n\t\t\t\tVolumeDataRestorePolicy: pulumi.String(\"RESTORE_VOLUME_DATA_FROM_BACKUP\"),\n\t\t\t\tClusterResourceRestoreScope: \u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs{\n\t\t\t\t\tAllGroupKinds: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tClusterResourceConflictPolicy: pulumi.String(\"USE_EXISTING_VERSION\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.RestorePlan;\nimport com.pulumi.gcp.gkebackup.RestorePlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"gitops-mode-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"gitops-mode\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n var gitopsMode = new RestorePlan(\"gitopsMode\", RestorePlanArgs.builder()\n .name(\"gitops-mode\")\n .location(\"us-central1\")\n .backupPlan(basic.id())\n .cluster(primary.id())\n .restoreConfig(RestorePlanRestoreConfigArgs.builder()\n .allNamespaces(true)\n .namespacedResourceRestoreMode(\"MERGE_SKIP_ON_CONFLICT\")\n .volumeDataRestorePolicy(\"RESTORE_VOLUME_DATA_FROM_BACKUP\")\n .clusterResourceRestoreScope(RestorePlanRestoreConfigClusterResourceRestoreScopeArgs.builder()\n .allGroupKinds(true)\n .build())\n .clusterResourceConflictPolicy(\"USE_EXISTING_VERSION\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: gitops-mode-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection:\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: gitops-mode\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n gitopsMode:\n type: gcp:gkebackup:RestorePlan\n name: gitops_mode\n properties:\n name: gitops-mode\n location: us-central1\n backupPlan: ${basic.id}\n cluster: ${primary.id}\n restoreConfig:\n allNamespaces: true\n namespacedResourceRestoreMode: MERGE_SKIP_ON_CONFLICT\n volumeDataRestorePolicy: RESTORE_VOLUME_DATA_FROM_BACKUP\n clusterResourceRestoreScope:\n allGroupKinds: true\n clusterResourceConflictPolicy: USE_EXISTING_VERSION\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Restoreplan Restore Order\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"restore-order-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: \"\",\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"restore-order\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\nconst restoreOrder = new gcp.gkebackup.RestorePlan(\"restore_order\", {\n name: \"restore-order\",\n location: \"us-central1\",\n backupPlan: basic.id,\n cluster: primary.id,\n restoreConfig: {\n allNamespaces: true,\n namespacedResourceRestoreMode: \"FAIL_ON_CONFLICT\",\n volumeDataRestorePolicy: \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n clusterResourceRestoreScope: {\n allGroupKinds: true,\n },\n clusterResourceConflictPolicy: \"USE_EXISTING_VERSION\",\n restoreOrder: {\n groupKindDependencies: [\n {\n satisfying: {\n resourceGroup: \"stable.example.com\",\n resourceKind: \"kindA\",\n },\n requiring: {\n resourceGroup: \"stable.example.com\",\n resourceKind: \"kindB\",\n },\n },\n {\n satisfying: {\n resourceGroup: \"stable.example.com\",\n resourceKind: \"kindB\",\n },\n requiring: {\n resourceGroup: \"stable.example.com\",\n resourceKind: \"kindC\",\n },\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"restore-order-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workloadPool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gkeBackupAgentConfig\": {\n \"enabled\": True,\n },\n },\n deletion_protection=\"\",\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"restore-order\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"includeVolumeData\": True,\n \"includeSecrets\": True,\n \"allNamespaces\": True,\n })\nrestore_order = gcp.gkebackup.RestorePlan(\"restore_order\",\n name=\"restore-order\",\n location=\"us-central1\",\n backup_plan=basic.id,\n cluster=primary.id,\n restore_config={\n \"allNamespaces\": True,\n \"namespacedResourceRestoreMode\": \"FAIL_ON_CONFLICT\",\n \"volumeDataRestorePolicy\": \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n \"clusterResourceRestoreScope\": {\n \"allGroupKinds\": True,\n },\n \"clusterResourceConflictPolicy\": \"USE_EXISTING_VERSION\",\n \"restoreOrder\": {\n \"groupKindDependencies\": [\n {\n \"satisfying\": {\n \"resourceGroup\": \"stable.example.com\",\n \"resourceKind\": \"kindA\",\n },\n \"requiring\": {\n \"resourceGroup\": \"stable.example.com\",\n \"resourceKind\": \"kindB\",\n },\n },\n {\n \"satisfying\": {\n \"resourceGroup\": \"stable.example.com\",\n \"resourceKind\": \"kindB\",\n },\n \"requiring\": {\n \"resourceGroup\": \"stable.example.com\",\n \"resourceKind\": \"kindC\",\n },\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"restore-order-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = \"\",\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"restore-order\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n var restoreOrder = new Gcp.GkeBackup.RestorePlan(\"restore_order\", new()\n {\n Name = \"restore-order\",\n Location = \"us-central1\",\n BackupPlan = basic.Id,\n Cluster = primary.Id,\n RestoreConfig = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigArgs\n {\n AllNamespaces = true,\n NamespacedResourceRestoreMode = \"FAIL_ON_CONFLICT\",\n VolumeDataRestorePolicy = \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n ClusterResourceRestoreScope = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs\n {\n AllGroupKinds = true,\n },\n ClusterResourceConflictPolicy = \"USE_EXISTING_VERSION\",\n RestoreOrder = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigRestoreOrderArgs\n {\n GroupKindDependencies = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigRestoreOrderGroupKindDependencyArgs\n {\n Satisfying = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigRestoreOrderGroupKindDependencySatisfyingArgs\n {\n ResourceGroup = \"stable.example.com\",\n ResourceKind = \"kindA\",\n },\n Requiring = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigRestoreOrderGroupKindDependencyRequiringArgs\n {\n ResourceGroup = \"stable.example.com\",\n ResourceKind = \"kindB\",\n },\n },\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigRestoreOrderGroupKindDependencyArgs\n {\n Satisfying = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigRestoreOrderGroupKindDependencySatisfyingArgs\n {\n ResourceGroup = \"stable.example.com\",\n ResourceKind = \"kindB\",\n },\n Requiring = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigRestoreOrderGroupKindDependencyRequiringArgs\n {\n ResourceGroup = \"stable.example.com\",\n ResourceKind = \"kindC\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"restore-order-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"restore-order\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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\t_, err = gkebackup.NewRestorePlan(ctx, \"restore_order\", \u0026gkebackup.RestorePlanArgs{\n\t\t\tName: pulumi.String(\"restore-order\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupPlan: basic.ID(),\n\t\t\tCluster: primary.ID(),\n\t\t\tRestoreConfig: \u0026gkebackup.RestorePlanRestoreConfigArgs{\n\t\t\t\tAllNamespaces: pulumi.Bool(true),\n\t\t\t\tNamespacedResourceRestoreMode: pulumi.String(\"FAIL_ON_CONFLICT\"),\n\t\t\t\tVolumeDataRestorePolicy: pulumi.String(\"RESTORE_VOLUME_DATA_FROM_BACKUP\"),\n\t\t\t\tClusterResourceRestoreScope: \u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs{\n\t\t\t\t\tAllGroupKinds: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tClusterResourceConflictPolicy: pulumi.String(\"USE_EXISTING_VERSION\"),\n\t\t\t\tRestoreOrder: \u0026gkebackup.RestorePlanRestoreConfigRestoreOrderArgs{\n\t\t\t\t\tGroupKindDependencies: gkebackup.RestorePlanRestoreConfigRestoreOrderGroupKindDependencyArray{\n\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigRestoreOrderGroupKindDependencyArgs{\n\t\t\t\t\t\t\tSatisfying: \u0026gkebackup.RestorePlanRestoreConfigRestoreOrderGroupKindDependencySatisfyingArgs{\n\t\t\t\t\t\t\t\tResourceGroup: pulumi.String(\"stable.example.com\"),\n\t\t\t\t\t\t\t\tResourceKind: pulumi.String(\"kindA\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRequiring: \u0026gkebackup.RestorePlanRestoreConfigRestoreOrderGroupKindDependencyRequiringArgs{\n\t\t\t\t\t\t\t\tResourceGroup: pulumi.String(\"stable.example.com\"),\n\t\t\t\t\t\t\t\tResourceKind: pulumi.String(\"kindB\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigRestoreOrderGroupKindDependencyArgs{\n\t\t\t\t\t\t\tSatisfying: \u0026gkebackup.RestorePlanRestoreConfigRestoreOrderGroupKindDependencySatisfyingArgs{\n\t\t\t\t\t\t\t\tResourceGroup: pulumi.String(\"stable.example.com\"),\n\t\t\t\t\t\t\t\tResourceKind: pulumi.String(\"kindB\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRequiring: \u0026gkebackup.RestorePlanRestoreConfigRestoreOrderGroupKindDependencyRequiringArgs{\n\t\t\t\t\t\t\t\tResourceGroup: pulumi.String(\"stable.example.com\"),\n\t\t\t\t\t\t\t\tResourceKind: pulumi.String(\"kindC\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.RestorePlan;\nimport com.pulumi.gcp.gkebackup.RestorePlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigRestoreOrderArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"restore-order-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"restore-order\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n var restoreOrder = new RestorePlan(\"restoreOrder\", RestorePlanArgs.builder()\n .name(\"restore-order\")\n .location(\"us-central1\")\n .backupPlan(basic.id())\n .cluster(primary.id())\n .restoreConfig(RestorePlanRestoreConfigArgs.builder()\n .allNamespaces(true)\n .namespacedResourceRestoreMode(\"FAIL_ON_CONFLICT\")\n .volumeDataRestorePolicy(\"RESTORE_VOLUME_DATA_FROM_BACKUP\")\n .clusterResourceRestoreScope(RestorePlanRestoreConfigClusterResourceRestoreScopeArgs.builder()\n .allGroupKinds(true)\n .build())\n .clusterResourceConflictPolicy(\"USE_EXISTING_VERSION\")\n .restoreOrder(RestorePlanRestoreConfigRestoreOrderArgs.builder()\n .groupKindDependencies( \n RestorePlanRestoreConfigRestoreOrderGroupKindDependencyArgs.builder()\n .satisfying(RestorePlanRestoreConfigRestoreOrderGroupKindDependencySatisfyingArgs.builder()\n .resourceGroup(\"stable.example.com\")\n .resourceKind(\"kindA\")\n .build())\n .requiring(RestorePlanRestoreConfigRestoreOrderGroupKindDependencyRequiringArgs.builder()\n .resourceGroup(\"stable.example.com\")\n .resourceKind(\"kindB\")\n .build())\n .build(),\n RestorePlanRestoreConfigRestoreOrderGroupKindDependencyArgs.builder()\n .satisfying(RestorePlanRestoreConfigRestoreOrderGroupKindDependencySatisfyingArgs.builder()\n .resourceGroup(\"stable.example.com\")\n .resourceKind(\"kindB\")\n .build())\n .requiring(RestorePlanRestoreConfigRestoreOrderGroupKindDependencyRequiringArgs.builder()\n .resourceGroup(\"stable.example.com\")\n .resourceKind(\"kindC\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: restore-order-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection:\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: restore-order\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n restoreOrder:\n type: gcp:gkebackup:RestorePlan\n name: restore_order\n properties:\n name: restore-order\n location: us-central1\n backupPlan: ${basic.id}\n cluster: ${primary.id}\n restoreConfig:\n allNamespaces: true\n namespacedResourceRestoreMode: FAIL_ON_CONFLICT\n volumeDataRestorePolicy: RESTORE_VOLUME_DATA_FROM_BACKUP\n clusterResourceRestoreScope:\n allGroupKinds: true\n clusterResourceConflictPolicy: USE_EXISTING_VERSION\n restoreOrder:\n groupKindDependencies:\n - satisfying:\n resourceGroup: stable.example.com\n resourceKind: kindA\n requiring:\n resourceGroup: stable.example.com\n resourceKind: kindB\n - satisfying:\n resourceGroup: stable.example.com\n resourceKind: kindB\n requiring:\n resourceGroup: stable.example.com\n resourceKind: kindC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Restoreplan Volume Res\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"volume-res-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: \"\",\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"volume-res\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\nconst volumeRes = new gcp.gkebackup.RestorePlan(\"volume_res\", {\n name: \"volume-res\",\n location: \"us-central1\",\n backupPlan: basic.id,\n cluster: primary.id,\n restoreConfig: {\n allNamespaces: true,\n namespacedResourceRestoreMode: \"FAIL_ON_CONFLICT\",\n volumeDataRestorePolicy: \"NO_VOLUME_DATA_RESTORATION\",\n clusterResourceRestoreScope: {\n allGroupKinds: true,\n },\n clusterResourceConflictPolicy: \"USE_EXISTING_VERSION\",\n volumeDataRestorePolicyBindings: [{\n policy: \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n volumeType: \"GCE_PERSISTENT_DISK\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"volume-res-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workloadPool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gkeBackupAgentConfig\": {\n \"enabled\": True,\n },\n },\n deletion_protection=\"\",\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"volume-res\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"includeVolumeData\": True,\n \"includeSecrets\": True,\n \"allNamespaces\": True,\n })\nvolume_res = gcp.gkebackup.RestorePlan(\"volume_res\",\n name=\"volume-res\",\n location=\"us-central1\",\n backup_plan=basic.id,\n cluster=primary.id,\n restore_config={\n \"allNamespaces\": True,\n \"namespacedResourceRestoreMode\": \"FAIL_ON_CONFLICT\",\n \"volumeDataRestorePolicy\": \"NO_VOLUME_DATA_RESTORATION\",\n \"clusterResourceRestoreScope\": {\n \"allGroupKinds\": True,\n },\n \"clusterResourceConflictPolicy\": \"USE_EXISTING_VERSION\",\n \"volumeDataRestorePolicyBindings\": [{\n \"policy\": \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n \"volumeType\": \"GCE_PERSISTENT_DISK\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"volume-res-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = \"\",\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"volume-res\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n var volumeRes = new Gcp.GkeBackup.RestorePlan(\"volume_res\", new()\n {\n Name = \"volume-res\",\n Location = \"us-central1\",\n BackupPlan = basic.Id,\n Cluster = primary.Id,\n RestoreConfig = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigArgs\n {\n AllNamespaces = true,\n NamespacedResourceRestoreMode = \"FAIL_ON_CONFLICT\",\n VolumeDataRestorePolicy = \"NO_VOLUME_DATA_RESTORATION\",\n ClusterResourceRestoreScope = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs\n {\n AllGroupKinds = true,\n },\n ClusterResourceConflictPolicy = \"USE_EXISTING_VERSION\",\n VolumeDataRestorePolicyBindings = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigVolumeDataRestorePolicyBindingArgs\n {\n Policy = \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n VolumeType = \"GCE_PERSISTENT_DISK\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"volume-res-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"volume-res\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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\t_, err = gkebackup.NewRestorePlan(ctx, \"volume_res\", \u0026gkebackup.RestorePlanArgs{\n\t\t\tName: pulumi.String(\"volume-res\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupPlan: basic.ID(),\n\t\t\tCluster: primary.ID(),\n\t\t\tRestoreConfig: \u0026gkebackup.RestorePlanRestoreConfigArgs{\n\t\t\t\tAllNamespaces: pulumi.Bool(true),\n\t\t\t\tNamespacedResourceRestoreMode: pulumi.String(\"FAIL_ON_CONFLICT\"),\n\t\t\t\tVolumeDataRestorePolicy: pulumi.String(\"NO_VOLUME_DATA_RESTORATION\"),\n\t\t\t\tClusterResourceRestoreScope: \u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs{\n\t\t\t\t\tAllGroupKinds: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tClusterResourceConflictPolicy: pulumi.String(\"USE_EXISTING_VERSION\"),\n\t\t\t\tVolumeDataRestorePolicyBindings: gkebackup.RestorePlanRestoreConfigVolumeDataRestorePolicyBindingArray{\n\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigVolumeDataRestorePolicyBindingArgs{\n\t\t\t\t\t\tPolicy: pulumi.String(\"RESTORE_VOLUME_DATA_FROM_BACKUP\"),\n\t\t\t\t\t\tVolumeType: pulumi.String(\"GCE_PERSISTENT_DISK\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.RestorePlan;\nimport com.pulumi.gcp.gkebackup.RestorePlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"volume-res-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"volume-res\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n var volumeRes = new RestorePlan(\"volumeRes\", RestorePlanArgs.builder()\n .name(\"volume-res\")\n .location(\"us-central1\")\n .backupPlan(basic.id())\n .cluster(primary.id())\n .restoreConfig(RestorePlanRestoreConfigArgs.builder()\n .allNamespaces(true)\n .namespacedResourceRestoreMode(\"FAIL_ON_CONFLICT\")\n .volumeDataRestorePolicy(\"NO_VOLUME_DATA_RESTORATION\")\n .clusterResourceRestoreScope(RestorePlanRestoreConfigClusterResourceRestoreScopeArgs.builder()\n .allGroupKinds(true)\n .build())\n .clusterResourceConflictPolicy(\"USE_EXISTING_VERSION\")\n .volumeDataRestorePolicyBindings(RestorePlanRestoreConfigVolumeDataRestorePolicyBindingArgs.builder()\n .policy(\"RESTORE_VOLUME_DATA_FROM_BACKUP\")\n .volumeType(\"GCE_PERSISTENT_DISK\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: volume-res-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection:\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: volume-res\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n volumeRes:\n type: gcp:gkebackup:RestorePlan\n name: volume_res\n properties:\n name: volume-res\n location: us-central1\n backupPlan: ${basic.id}\n cluster: ${primary.id}\n restoreConfig:\n allNamespaces: true\n namespacedResourceRestoreMode: FAIL_ON_CONFLICT\n volumeDataRestorePolicy: NO_VOLUME_DATA_RESTORATION\n clusterResourceRestoreScope:\n allGroupKinds: true\n clusterResourceConflictPolicy: USE_EXISTING_VERSION\n volumeDataRestorePolicyBindings:\n - policy: RESTORE_VOLUME_DATA_FROM_BACKUP\n volumeType: GCE_PERSISTENT_DISK\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRestorePlan can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/restorePlans/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, RestorePlan can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkebackup/restorePlan:RestorePlan default projects/{{project}}/locations/{{location}}/restorePlans/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkebackup/restorePlan:RestorePlan default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkebackup/restorePlan:RestorePlan default {{location}}/{{name}}\n```\n\n", + "description": "Represents a Restore Plan instance.\n\n\nTo get more information about RestorePlan, see:\n\n* [API documentation](https://cloud.google.com/kubernetes-engine/docs/add-on/backup-for-gke/reference/rest/v1/projects.locations.restorePlans)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/kubernetes-engine/docs/add-on/backup-for-gke)\n\n## Example Usage\n\n### Gkebackup Restoreplan All Namespaces\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"restore-all-ns-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: \"\",\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"restore-all-ns\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\nconst allNs = new gcp.gkebackup.RestorePlan(\"all_ns\", {\n name: \"restore-all-ns\",\n location: \"us-central1\",\n backupPlan: basic.id,\n cluster: primary.id,\n restoreConfig: {\n allNamespaces: true,\n namespacedResourceRestoreMode: \"FAIL_ON_CONFLICT\",\n volumeDataRestorePolicy: \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n clusterResourceRestoreScope: {\n allGroupKinds: true,\n },\n clusterResourceConflictPolicy: \"USE_EXISTING_VERSION\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"restore-all-ns-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=\"\",\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"restore-all-ns\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": True,\n })\nall_ns = gcp.gkebackup.RestorePlan(\"all_ns\",\n name=\"restore-all-ns\",\n location=\"us-central1\",\n backup_plan=basic.id,\n cluster=primary.id,\n restore_config={\n \"all_namespaces\": True,\n \"namespaced_resource_restore_mode\": \"FAIL_ON_CONFLICT\",\n \"volume_data_restore_policy\": \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n \"cluster_resource_restore_scope\": {\n \"all_group_kinds\": True,\n },\n \"cluster_resource_conflict_policy\": \"USE_EXISTING_VERSION\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"restore-all-ns-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = \"\",\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"restore-all-ns\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n var allNs = new Gcp.GkeBackup.RestorePlan(\"all_ns\", new()\n {\n Name = \"restore-all-ns\",\n Location = \"us-central1\",\n BackupPlan = basic.Id,\n Cluster = primary.Id,\n RestoreConfig = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigArgs\n {\n AllNamespaces = true,\n NamespacedResourceRestoreMode = \"FAIL_ON_CONFLICT\",\n VolumeDataRestorePolicy = \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n ClusterResourceRestoreScope = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs\n {\n AllGroupKinds = true,\n },\n ClusterResourceConflictPolicy = \"USE_EXISTING_VERSION\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"restore-all-ns-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"restore-all-ns\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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\t_, err = gkebackup.NewRestorePlan(ctx, \"all_ns\", \u0026gkebackup.RestorePlanArgs{\n\t\t\tName: pulumi.String(\"restore-all-ns\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupPlan: basic.ID(),\n\t\t\tCluster: primary.ID(),\n\t\t\tRestoreConfig: \u0026gkebackup.RestorePlanRestoreConfigArgs{\n\t\t\t\tAllNamespaces: pulumi.Bool(true),\n\t\t\t\tNamespacedResourceRestoreMode: pulumi.String(\"FAIL_ON_CONFLICT\"),\n\t\t\t\tVolumeDataRestorePolicy: pulumi.String(\"RESTORE_VOLUME_DATA_FROM_BACKUP\"),\n\t\t\t\tClusterResourceRestoreScope: \u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs{\n\t\t\t\t\tAllGroupKinds: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tClusterResourceConflictPolicy: pulumi.String(\"USE_EXISTING_VERSION\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.RestorePlan;\nimport com.pulumi.gcp.gkebackup.RestorePlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"restore-all-ns-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"restore-all-ns\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n var allNs = new RestorePlan(\"allNs\", RestorePlanArgs.builder()\n .name(\"restore-all-ns\")\n .location(\"us-central1\")\n .backupPlan(basic.id())\n .cluster(primary.id())\n .restoreConfig(RestorePlanRestoreConfigArgs.builder()\n .allNamespaces(true)\n .namespacedResourceRestoreMode(\"FAIL_ON_CONFLICT\")\n .volumeDataRestorePolicy(\"RESTORE_VOLUME_DATA_FROM_BACKUP\")\n .clusterResourceRestoreScope(RestorePlanRestoreConfigClusterResourceRestoreScopeArgs.builder()\n .allGroupKinds(true)\n .build())\n .clusterResourceConflictPolicy(\"USE_EXISTING_VERSION\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: restore-all-ns-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection:\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: restore-all-ns\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n allNs:\n type: gcp:gkebackup:RestorePlan\n name: all_ns\n properties:\n name: restore-all-ns\n location: us-central1\n backupPlan: ${basic.id}\n cluster: ${primary.id}\n restoreConfig:\n allNamespaces: true\n namespacedResourceRestoreMode: FAIL_ON_CONFLICT\n volumeDataRestorePolicy: RESTORE_VOLUME_DATA_FROM_BACKUP\n clusterResourceRestoreScope:\n allGroupKinds: true\n clusterResourceConflictPolicy: USE_EXISTING_VERSION\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Restoreplan Rollback Namespace\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"rollback-ns-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: \"\",\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"rollback-ns\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\nconst rollbackNs = new gcp.gkebackup.RestorePlan(\"rollback_ns\", {\n name: \"rollback-ns-rp\",\n location: \"us-central1\",\n backupPlan: basic.id,\n cluster: primary.id,\n restoreConfig: {\n selectedNamespaces: {\n namespaces: [\"my-ns\"],\n },\n namespacedResourceRestoreMode: \"DELETE_AND_RESTORE\",\n volumeDataRestorePolicy: \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n clusterResourceRestoreScope: {\n selectedGroupKinds: [\n {\n resourceGroup: \"apiextension.k8s.io\",\n resourceKind: \"CustomResourceDefinition\",\n },\n {\n resourceGroup: \"storage.k8s.io\",\n resourceKind: \"StorageClass\",\n },\n ],\n },\n clusterResourceConflictPolicy: \"USE_EXISTING_VERSION\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"rollback-ns-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=\"\",\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"rollback-ns\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": True,\n })\nrollback_ns = gcp.gkebackup.RestorePlan(\"rollback_ns\",\n name=\"rollback-ns-rp\",\n location=\"us-central1\",\n backup_plan=basic.id,\n cluster=primary.id,\n restore_config={\n \"selected_namespaces\": {\n \"namespaces\": [\"my-ns\"],\n },\n \"namespaced_resource_restore_mode\": \"DELETE_AND_RESTORE\",\n \"volume_data_restore_policy\": \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n \"cluster_resource_restore_scope\": {\n \"selected_group_kinds\": [\n {\n \"resource_group\": \"apiextension.k8s.io\",\n \"resource_kind\": \"CustomResourceDefinition\",\n },\n {\n \"resource_group\": \"storage.k8s.io\",\n \"resource_kind\": \"StorageClass\",\n },\n ],\n },\n \"cluster_resource_conflict_policy\": \"USE_EXISTING_VERSION\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"rollback-ns-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = \"\",\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"rollback-ns\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n var rollbackNs = new Gcp.GkeBackup.RestorePlan(\"rollback_ns\", new()\n {\n Name = \"rollback-ns-rp\",\n Location = \"us-central1\",\n BackupPlan = basic.Id,\n Cluster = primary.Id,\n RestoreConfig = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigArgs\n {\n SelectedNamespaces = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigSelectedNamespacesArgs\n {\n Namespaces = new[]\n {\n \"my-ns\",\n },\n },\n NamespacedResourceRestoreMode = \"DELETE_AND_RESTORE\",\n VolumeDataRestorePolicy = \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n ClusterResourceRestoreScope = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs\n {\n SelectedGroupKinds = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeSelectedGroupKindArgs\n {\n ResourceGroup = \"apiextension.k8s.io\",\n ResourceKind = \"CustomResourceDefinition\",\n },\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeSelectedGroupKindArgs\n {\n ResourceGroup = \"storage.k8s.io\",\n ResourceKind = \"StorageClass\",\n },\n },\n },\n ClusterResourceConflictPolicy = \"USE_EXISTING_VERSION\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"rollback-ns-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"rollback-ns\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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\t_, err = gkebackup.NewRestorePlan(ctx, \"rollback_ns\", \u0026gkebackup.RestorePlanArgs{\n\t\t\tName: pulumi.String(\"rollback-ns-rp\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupPlan: basic.ID(),\n\t\t\tCluster: primary.ID(),\n\t\t\tRestoreConfig: \u0026gkebackup.RestorePlanRestoreConfigArgs{\n\t\t\t\tSelectedNamespaces: \u0026gkebackup.RestorePlanRestoreConfigSelectedNamespacesArgs{\n\t\t\t\t\tNamespaces: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"my-ns\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNamespacedResourceRestoreMode: pulumi.String(\"DELETE_AND_RESTORE\"),\n\t\t\t\tVolumeDataRestorePolicy: pulumi.String(\"RESTORE_VOLUME_DATA_FROM_BACKUP\"),\n\t\t\t\tClusterResourceRestoreScope: \u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs{\n\t\t\t\t\tSelectedGroupKinds: gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeSelectedGroupKindArray{\n\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeSelectedGroupKindArgs{\n\t\t\t\t\t\t\tResourceGroup: pulumi.String(\"apiextension.k8s.io\"),\n\t\t\t\t\t\t\tResourceKind: pulumi.String(\"CustomResourceDefinition\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeSelectedGroupKindArgs{\n\t\t\t\t\t\t\tResourceGroup: pulumi.String(\"storage.k8s.io\"),\n\t\t\t\t\t\t\tResourceKind: pulumi.String(\"StorageClass\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tClusterResourceConflictPolicy: pulumi.String(\"USE_EXISTING_VERSION\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.RestorePlan;\nimport com.pulumi.gcp.gkebackup.RestorePlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigSelectedNamespacesArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"rollback-ns-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"rollback-ns\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n var rollbackNs = new RestorePlan(\"rollbackNs\", RestorePlanArgs.builder()\n .name(\"rollback-ns-rp\")\n .location(\"us-central1\")\n .backupPlan(basic.id())\n .cluster(primary.id())\n .restoreConfig(RestorePlanRestoreConfigArgs.builder()\n .selectedNamespaces(RestorePlanRestoreConfigSelectedNamespacesArgs.builder()\n .namespaces(\"my-ns\")\n .build())\n .namespacedResourceRestoreMode(\"DELETE_AND_RESTORE\")\n .volumeDataRestorePolicy(\"RESTORE_VOLUME_DATA_FROM_BACKUP\")\n .clusterResourceRestoreScope(RestorePlanRestoreConfigClusterResourceRestoreScopeArgs.builder()\n .selectedGroupKinds( \n RestorePlanRestoreConfigClusterResourceRestoreScopeSelectedGroupKindArgs.builder()\n .resourceGroup(\"apiextension.k8s.io\")\n .resourceKind(\"CustomResourceDefinition\")\n .build(),\n RestorePlanRestoreConfigClusterResourceRestoreScopeSelectedGroupKindArgs.builder()\n .resourceGroup(\"storage.k8s.io\")\n .resourceKind(\"StorageClass\")\n .build())\n .build())\n .clusterResourceConflictPolicy(\"USE_EXISTING_VERSION\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: rollback-ns-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection:\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: rollback-ns\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n rollbackNs:\n type: gcp:gkebackup:RestorePlan\n name: rollback_ns\n properties:\n name: rollback-ns-rp\n location: us-central1\n backupPlan: ${basic.id}\n cluster: ${primary.id}\n restoreConfig:\n selectedNamespaces:\n namespaces:\n - my-ns\n namespacedResourceRestoreMode: DELETE_AND_RESTORE\n volumeDataRestorePolicy: RESTORE_VOLUME_DATA_FROM_BACKUP\n clusterResourceRestoreScope:\n selectedGroupKinds:\n - resourceGroup: apiextension.k8s.io\n resourceKind: CustomResourceDefinition\n - resourceGroup: storage.k8s.io\n resourceKind: StorageClass\n clusterResourceConflictPolicy: USE_EXISTING_VERSION\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Restoreplan Protected Application\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"rollback-app-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: \"\",\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"rollback-app\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\nconst rollbackApp = new gcp.gkebackup.RestorePlan(\"rollback_app\", {\n name: \"rollback-app-rp\",\n location: \"us-central1\",\n backupPlan: basic.id,\n cluster: primary.id,\n restoreConfig: {\n selectedApplications: {\n namespacedNames: [{\n name: \"my-app\",\n namespace: \"my-ns\",\n }],\n },\n namespacedResourceRestoreMode: \"DELETE_AND_RESTORE\",\n volumeDataRestorePolicy: \"REUSE_VOLUME_HANDLE_FROM_BACKUP\",\n clusterResourceRestoreScope: {\n noGroupKinds: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"rollback-app-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=\"\",\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"rollback-app\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": True,\n })\nrollback_app = gcp.gkebackup.RestorePlan(\"rollback_app\",\n name=\"rollback-app-rp\",\n location=\"us-central1\",\n backup_plan=basic.id,\n cluster=primary.id,\n restore_config={\n \"selected_applications\": {\n \"namespaced_names\": [{\n \"name\": \"my-app\",\n \"namespace\": \"my-ns\",\n }],\n },\n \"namespaced_resource_restore_mode\": \"DELETE_AND_RESTORE\",\n \"volume_data_restore_policy\": \"REUSE_VOLUME_HANDLE_FROM_BACKUP\",\n \"cluster_resource_restore_scope\": {\n \"no_group_kinds\": 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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"rollback-app-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = \"\",\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"rollback-app\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n var rollbackApp = new Gcp.GkeBackup.RestorePlan(\"rollback_app\", new()\n {\n Name = \"rollback-app-rp\",\n Location = \"us-central1\",\n BackupPlan = basic.Id,\n Cluster = primary.Id,\n RestoreConfig = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigArgs\n {\n SelectedApplications = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigSelectedApplicationsArgs\n {\n NamespacedNames = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigSelectedApplicationsNamespacedNameArgs\n {\n Name = \"my-app\",\n Namespace = \"my-ns\",\n },\n },\n },\n NamespacedResourceRestoreMode = \"DELETE_AND_RESTORE\",\n VolumeDataRestorePolicy = \"REUSE_VOLUME_HANDLE_FROM_BACKUP\",\n ClusterResourceRestoreScope = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs\n {\n NoGroupKinds = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"rollback-app-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"rollback-app\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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\t_, err = gkebackup.NewRestorePlan(ctx, \"rollback_app\", \u0026gkebackup.RestorePlanArgs{\n\t\t\tName: pulumi.String(\"rollback-app-rp\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupPlan: basic.ID(),\n\t\t\tCluster: primary.ID(),\n\t\t\tRestoreConfig: \u0026gkebackup.RestorePlanRestoreConfigArgs{\n\t\t\t\tSelectedApplications: \u0026gkebackup.RestorePlanRestoreConfigSelectedApplicationsArgs{\n\t\t\t\t\tNamespacedNames: gkebackup.RestorePlanRestoreConfigSelectedApplicationsNamespacedNameArray{\n\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigSelectedApplicationsNamespacedNameArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"my-app\"),\n\t\t\t\t\t\t\tNamespace: pulumi.String(\"my-ns\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNamespacedResourceRestoreMode: pulumi.String(\"DELETE_AND_RESTORE\"),\n\t\t\t\tVolumeDataRestorePolicy: pulumi.String(\"REUSE_VOLUME_HANDLE_FROM_BACKUP\"),\n\t\t\t\tClusterResourceRestoreScope: \u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs{\n\t\t\t\t\tNoGroupKinds: 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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.RestorePlan;\nimport com.pulumi.gcp.gkebackup.RestorePlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigSelectedApplicationsArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"rollback-app-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"rollback-app\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n var rollbackApp = new RestorePlan(\"rollbackApp\", RestorePlanArgs.builder()\n .name(\"rollback-app-rp\")\n .location(\"us-central1\")\n .backupPlan(basic.id())\n .cluster(primary.id())\n .restoreConfig(RestorePlanRestoreConfigArgs.builder()\n .selectedApplications(RestorePlanRestoreConfigSelectedApplicationsArgs.builder()\n .namespacedNames(RestorePlanRestoreConfigSelectedApplicationsNamespacedNameArgs.builder()\n .name(\"my-app\")\n .namespace(\"my-ns\")\n .build())\n .build())\n .namespacedResourceRestoreMode(\"DELETE_AND_RESTORE\")\n .volumeDataRestorePolicy(\"REUSE_VOLUME_HANDLE_FROM_BACKUP\")\n .clusterResourceRestoreScope(RestorePlanRestoreConfigClusterResourceRestoreScopeArgs.builder()\n .noGroupKinds(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: rollback-app-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection:\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: rollback-app\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n rollbackApp:\n type: gcp:gkebackup:RestorePlan\n name: rollback_app\n properties:\n name: rollback-app-rp\n location: us-central1\n backupPlan: ${basic.id}\n cluster: ${primary.id}\n restoreConfig:\n selectedApplications:\n namespacedNames:\n - name: my-app\n namespace: my-ns\n namespacedResourceRestoreMode: DELETE_AND_RESTORE\n volumeDataRestorePolicy: REUSE_VOLUME_HANDLE_FROM_BACKUP\n clusterResourceRestoreScope:\n noGroupKinds: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Restoreplan All Cluster Resources\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"all-groupkinds-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: \"\",\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"all-groupkinds\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\nconst allClusterResources = new gcp.gkebackup.RestorePlan(\"all_cluster_resources\", {\n name: \"all-groupkinds-rp\",\n location: \"us-central1\",\n backupPlan: basic.id,\n cluster: primary.id,\n restoreConfig: {\n noNamespaces: true,\n namespacedResourceRestoreMode: \"FAIL_ON_CONFLICT\",\n clusterResourceRestoreScope: {\n allGroupKinds: true,\n },\n clusterResourceConflictPolicy: \"USE_EXISTING_VERSION\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"all-groupkinds-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=\"\",\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"all-groupkinds\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": True,\n })\nall_cluster_resources = gcp.gkebackup.RestorePlan(\"all_cluster_resources\",\n name=\"all-groupkinds-rp\",\n location=\"us-central1\",\n backup_plan=basic.id,\n cluster=primary.id,\n restore_config={\n \"no_namespaces\": True,\n \"namespaced_resource_restore_mode\": \"FAIL_ON_CONFLICT\",\n \"cluster_resource_restore_scope\": {\n \"all_group_kinds\": True,\n },\n \"cluster_resource_conflict_policy\": \"USE_EXISTING_VERSION\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"all-groupkinds-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = \"\",\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"all-groupkinds\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n var allClusterResources = new Gcp.GkeBackup.RestorePlan(\"all_cluster_resources\", new()\n {\n Name = \"all-groupkinds-rp\",\n Location = \"us-central1\",\n BackupPlan = basic.Id,\n Cluster = primary.Id,\n RestoreConfig = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigArgs\n {\n NoNamespaces = true,\n NamespacedResourceRestoreMode = \"FAIL_ON_CONFLICT\",\n ClusterResourceRestoreScope = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs\n {\n AllGroupKinds = true,\n },\n ClusterResourceConflictPolicy = \"USE_EXISTING_VERSION\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"all-groupkinds-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"all-groupkinds\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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\t_, err = gkebackup.NewRestorePlan(ctx, \"all_cluster_resources\", \u0026gkebackup.RestorePlanArgs{\n\t\t\tName: pulumi.String(\"all-groupkinds-rp\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupPlan: basic.ID(),\n\t\t\tCluster: primary.ID(),\n\t\t\tRestoreConfig: \u0026gkebackup.RestorePlanRestoreConfigArgs{\n\t\t\t\tNoNamespaces: pulumi.Bool(true),\n\t\t\t\tNamespacedResourceRestoreMode: pulumi.String(\"FAIL_ON_CONFLICT\"),\n\t\t\t\tClusterResourceRestoreScope: \u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs{\n\t\t\t\t\tAllGroupKinds: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tClusterResourceConflictPolicy: pulumi.String(\"USE_EXISTING_VERSION\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.RestorePlan;\nimport com.pulumi.gcp.gkebackup.RestorePlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"all-groupkinds-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"all-groupkinds\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n var allClusterResources = new RestorePlan(\"allClusterResources\", RestorePlanArgs.builder()\n .name(\"all-groupkinds-rp\")\n .location(\"us-central1\")\n .backupPlan(basic.id())\n .cluster(primary.id())\n .restoreConfig(RestorePlanRestoreConfigArgs.builder()\n .noNamespaces(true)\n .namespacedResourceRestoreMode(\"FAIL_ON_CONFLICT\")\n .clusterResourceRestoreScope(RestorePlanRestoreConfigClusterResourceRestoreScopeArgs.builder()\n .allGroupKinds(true)\n .build())\n .clusterResourceConflictPolicy(\"USE_EXISTING_VERSION\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: all-groupkinds-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection:\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: all-groupkinds\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n allClusterResources:\n type: gcp:gkebackup:RestorePlan\n name: all_cluster_resources\n properties:\n name: all-groupkinds-rp\n location: us-central1\n backupPlan: ${basic.id}\n cluster: ${primary.id}\n restoreConfig:\n noNamespaces: true\n namespacedResourceRestoreMode: FAIL_ON_CONFLICT\n clusterResourceRestoreScope:\n allGroupKinds: true\n clusterResourceConflictPolicy: USE_EXISTING_VERSION\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Restoreplan Rename Namespace\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"rename-ns-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: \"\",\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"rename-ns\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\nconst renameNs = new gcp.gkebackup.RestorePlan(\"rename_ns\", {\n name: \"rename-ns-rp\",\n location: \"us-central1\",\n backupPlan: basic.id,\n cluster: primary.id,\n restoreConfig: {\n selectedNamespaces: {\n namespaces: [\"ns1\"],\n },\n namespacedResourceRestoreMode: \"FAIL_ON_CONFLICT\",\n volumeDataRestorePolicy: \"REUSE_VOLUME_HANDLE_FROM_BACKUP\",\n clusterResourceRestoreScope: {\n noGroupKinds: true,\n },\n transformationRules: [\n {\n description: \"rename namespace from ns1 to ns2\",\n resourceFilter: {\n groupKinds: [{\n resourceKind: \"Namespace\",\n }],\n jsonPath: \".metadata[?(@.name == 'ns1')]\",\n },\n fieldActions: [{\n op: \"REPLACE\",\n path: \"/metadata/name\",\n value: \"ns2\",\n }],\n },\n {\n description: \"move all resources from ns1 to ns2\",\n resourceFilter: {\n namespaces: [\"ns1\"],\n },\n fieldActions: [{\n op: \"REPLACE\",\n path: \"/metadata/namespace\",\n value: \"ns2\",\n }],\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"rename-ns-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=\"\",\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"rename-ns\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": True,\n })\nrename_ns = gcp.gkebackup.RestorePlan(\"rename_ns\",\n name=\"rename-ns-rp\",\n location=\"us-central1\",\n backup_plan=basic.id,\n cluster=primary.id,\n restore_config={\n \"selected_namespaces\": {\n \"namespaces\": [\"ns1\"],\n },\n \"namespaced_resource_restore_mode\": \"FAIL_ON_CONFLICT\",\n \"volume_data_restore_policy\": \"REUSE_VOLUME_HANDLE_FROM_BACKUP\",\n \"cluster_resource_restore_scope\": {\n \"no_group_kinds\": True,\n },\n \"transformation_rules\": [\n {\n \"description\": \"rename namespace from ns1 to ns2\",\n \"resource_filter\": {\n \"group_kinds\": [{\n \"resource_kind\": \"Namespace\",\n }],\n \"json_path\": \".metadata[?(@.name == 'ns1')]\",\n },\n \"field_actions\": [{\n \"op\": \"REPLACE\",\n \"path\": \"/metadata/name\",\n \"value\": \"ns2\",\n }],\n },\n {\n \"description\": \"move all resources from ns1 to ns2\",\n \"resource_filter\": {\n \"namespaces\": [\"ns1\"],\n },\n \"field_actions\": [{\n \"op\": \"REPLACE\",\n \"path\": \"/metadata/namespace\",\n \"value\": \"ns2\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"rename-ns-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = \"\",\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"rename-ns\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n var renameNs = new Gcp.GkeBackup.RestorePlan(\"rename_ns\", new()\n {\n Name = \"rename-ns-rp\",\n Location = \"us-central1\",\n BackupPlan = basic.Id,\n Cluster = primary.Id,\n RestoreConfig = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigArgs\n {\n SelectedNamespaces = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigSelectedNamespacesArgs\n {\n Namespaces = new[]\n {\n \"ns1\",\n },\n },\n NamespacedResourceRestoreMode = \"FAIL_ON_CONFLICT\",\n VolumeDataRestorePolicy = \"REUSE_VOLUME_HANDLE_FROM_BACKUP\",\n ClusterResourceRestoreScope = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs\n {\n NoGroupKinds = true,\n },\n TransformationRules = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleArgs\n {\n Description = \"rename namespace from ns1 to ns2\",\n ResourceFilter = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleResourceFilterArgs\n {\n GroupKinds = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleResourceFilterGroupKindArgs\n {\n ResourceKind = \"Namespace\",\n },\n },\n JsonPath = \".metadata[?(@.name == 'ns1')]\",\n },\n FieldActions = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleFieldActionArgs\n {\n Op = \"REPLACE\",\n Path = \"/metadata/name\",\n Value = \"ns2\",\n },\n },\n },\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleArgs\n {\n Description = \"move all resources from ns1 to ns2\",\n ResourceFilter = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleResourceFilterArgs\n {\n Namespaces = new[]\n {\n \"ns1\",\n },\n },\n FieldActions = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleFieldActionArgs\n {\n Op = \"REPLACE\",\n Path = \"/metadata/namespace\",\n Value = \"ns2\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"rename-ns-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"rename-ns\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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\t_, err = gkebackup.NewRestorePlan(ctx, \"rename_ns\", \u0026gkebackup.RestorePlanArgs{\n\t\t\tName: pulumi.String(\"rename-ns-rp\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupPlan: basic.ID(),\n\t\t\tCluster: primary.ID(),\n\t\t\tRestoreConfig: \u0026gkebackup.RestorePlanRestoreConfigArgs{\n\t\t\t\tSelectedNamespaces: \u0026gkebackup.RestorePlanRestoreConfigSelectedNamespacesArgs{\n\t\t\t\t\tNamespaces: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ns1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNamespacedResourceRestoreMode: pulumi.String(\"FAIL_ON_CONFLICT\"),\n\t\t\t\tVolumeDataRestorePolicy: pulumi.String(\"REUSE_VOLUME_HANDLE_FROM_BACKUP\"),\n\t\t\t\tClusterResourceRestoreScope: \u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs{\n\t\t\t\t\tNoGroupKinds: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tTransformationRules: gkebackup.RestorePlanRestoreConfigTransformationRuleArray{\n\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigTransformationRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"rename namespace from ns1 to ns2\"),\n\t\t\t\t\t\tResourceFilter: \u0026gkebackup.RestorePlanRestoreConfigTransformationRuleResourceFilterArgs{\n\t\t\t\t\t\t\tGroupKinds: gkebackup.RestorePlanRestoreConfigTransformationRuleResourceFilterGroupKindArray{\n\t\t\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigTransformationRuleResourceFilterGroupKindArgs{\n\t\t\t\t\t\t\t\t\tResourceKind: pulumi.String(\"Namespace\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tJsonPath: pulumi.String(\".metadata[?(@.name == 'ns1')]\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFieldActions: gkebackup.RestorePlanRestoreConfigTransformationRuleFieldActionArray{\n\t\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigTransformationRuleFieldActionArgs{\n\t\t\t\t\t\t\t\tOp: pulumi.String(\"REPLACE\"),\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/metadata/name\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"ns2\"),\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\t\u0026gkebackup.RestorePlanRestoreConfigTransformationRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"move all resources from ns1 to ns2\"),\n\t\t\t\t\t\tResourceFilter: \u0026gkebackup.RestorePlanRestoreConfigTransformationRuleResourceFilterArgs{\n\t\t\t\t\t\t\tNamespaces: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"ns1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFieldActions: gkebackup.RestorePlanRestoreConfigTransformationRuleFieldActionArray{\n\t\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigTransformationRuleFieldActionArgs{\n\t\t\t\t\t\t\t\tOp: pulumi.String(\"REPLACE\"),\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/metadata/namespace\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"ns2\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.RestorePlan;\nimport com.pulumi.gcp.gkebackup.RestorePlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigSelectedNamespacesArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"rename-ns-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"rename-ns\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n var renameNs = new RestorePlan(\"renameNs\", RestorePlanArgs.builder()\n .name(\"rename-ns-rp\")\n .location(\"us-central1\")\n .backupPlan(basic.id())\n .cluster(primary.id())\n .restoreConfig(RestorePlanRestoreConfigArgs.builder()\n .selectedNamespaces(RestorePlanRestoreConfigSelectedNamespacesArgs.builder()\n .namespaces(\"ns1\")\n .build())\n .namespacedResourceRestoreMode(\"FAIL_ON_CONFLICT\")\n .volumeDataRestorePolicy(\"REUSE_VOLUME_HANDLE_FROM_BACKUP\")\n .clusterResourceRestoreScope(RestorePlanRestoreConfigClusterResourceRestoreScopeArgs.builder()\n .noGroupKinds(true)\n .build())\n .transformationRules( \n RestorePlanRestoreConfigTransformationRuleArgs.builder()\n .description(\"rename namespace from ns1 to ns2\")\n .resourceFilter(RestorePlanRestoreConfigTransformationRuleResourceFilterArgs.builder()\n .groupKinds(RestorePlanRestoreConfigTransformationRuleResourceFilterGroupKindArgs.builder()\n .resourceKind(\"Namespace\")\n .build())\n .jsonPath(\".metadata[?(@.name == 'ns1')]\")\n .build())\n .fieldActions(RestorePlanRestoreConfigTransformationRuleFieldActionArgs.builder()\n .op(\"REPLACE\")\n .path(\"/metadata/name\")\n .value(\"ns2\")\n .build())\n .build(),\n RestorePlanRestoreConfigTransformationRuleArgs.builder()\n .description(\"move all resources from ns1 to ns2\")\n .resourceFilter(RestorePlanRestoreConfigTransformationRuleResourceFilterArgs.builder()\n .namespaces(\"ns1\")\n .build())\n .fieldActions(RestorePlanRestoreConfigTransformationRuleFieldActionArgs.builder()\n .op(\"REPLACE\")\n .path(\"/metadata/namespace\")\n .value(\"ns2\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: rename-ns-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection:\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: rename-ns\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n renameNs:\n type: gcp:gkebackup:RestorePlan\n name: rename_ns\n properties:\n name: rename-ns-rp\n location: us-central1\n backupPlan: ${basic.id}\n cluster: ${primary.id}\n restoreConfig:\n selectedNamespaces:\n namespaces:\n - ns1\n namespacedResourceRestoreMode: FAIL_ON_CONFLICT\n volumeDataRestorePolicy: REUSE_VOLUME_HANDLE_FROM_BACKUP\n clusterResourceRestoreScope:\n noGroupKinds: true\n transformationRules:\n - description: rename namespace from ns1 to ns2\n resourceFilter:\n groupKinds:\n - resourceKind: Namespace\n jsonPath: .metadata[?(@.name == 'ns1')]\n fieldActions:\n - op: REPLACE\n path: /metadata/name\n value: ns2\n - description: move all resources from ns1 to ns2\n resourceFilter:\n namespaces:\n - ns1\n fieldActions:\n - op: REPLACE\n path: /metadata/namespace\n value: ns2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Restoreplan Second Transformation\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"transform-rule-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: \"\",\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"transform-rule\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\nconst transformRule = new gcp.gkebackup.RestorePlan(\"transform_rule\", {\n name: \"transform-rule-rp\",\n description: \"copy nginx env variables\",\n labels: {\n app: \"nginx\",\n },\n location: \"us-central1\",\n backupPlan: basic.id,\n cluster: primary.id,\n restoreConfig: {\n excludedNamespaces: {\n namespaces: [\"my-ns\"],\n },\n namespacedResourceRestoreMode: \"DELETE_AND_RESTORE\",\n volumeDataRestorePolicy: \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n clusterResourceRestoreScope: {\n excludedGroupKinds: [{\n resourceGroup: \"apiextension.k8s.io\",\n resourceKind: \"CustomResourceDefinition\",\n }],\n },\n clusterResourceConflictPolicy: \"USE_EXISTING_VERSION\",\n transformationRules: [{\n description: \"Copy environment variables from the nginx container to the install init container.\",\n resourceFilter: {\n groupKinds: [{\n resourceKind: \"Pod\",\n resourceGroup: \"\",\n }],\n jsonPath: \".metadata[?(@.name == 'nginx')]\",\n },\n fieldActions: [{\n op: \"COPY\",\n path: \"/spec/initContainers/0/env\",\n fromPath: \"/spec/containers/0/env\",\n }],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"transform-rule-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=\"\",\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"transform-rule\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": True,\n })\ntransform_rule = gcp.gkebackup.RestorePlan(\"transform_rule\",\n name=\"transform-rule-rp\",\n description=\"copy nginx env variables\",\n labels={\n \"app\": \"nginx\",\n },\n location=\"us-central1\",\n backup_plan=basic.id,\n cluster=primary.id,\n restore_config={\n \"excluded_namespaces\": {\n \"namespaces\": [\"my-ns\"],\n },\n \"namespaced_resource_restore_mode\": \"DELETE_AND_RESTORE\",\n \"volume_data_restore_policy\": \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n \"cluster_resource_restore_scope\": {\n \"excluded_group_kinds\": [{\n \"resource_group\": \"apiextension.k8s.io\",\n \"resource_kind\": \"CustomResourceDefinition\",\n }],\n },\n \"cluster_resource_conflict_policy\": \"USE_EXISTING_VERSION\",\n \"transformation_rules\": [{\n \"description\": \"Copy environment variables from the nginx container to the install init container.\",\n \"resource_filter\": {\n \"group_kinds\": [{\n \"resource_kind\": \"Pod\",\n \"resource_group\": \"\",\n }],\n \"json_path\": \".metadata[?(@.name == 'nginx')]\",\n },\n \"field_actions\": [{\n \"op\": \"COPY\",\n \"path\": \"/spec/initContainers/0/env\",\n \"from_path\": \"/spec/containers/0/env\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"transform-rule-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = \"\",\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"transform-rule\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n var transformRule = new Gcp.GkeBackup.RestorePlan(\"transform_rule\", new()\n {\n Name = \"transform-rule-rp\",\n Description = \"copy nginx env variables\",\n Labels = \n {\n { \"app\", \"nginx\" },\n },\n Location = \"us-central1\",\n BackupPlan = basic.Id,\n Cluster = primary.Id,\n RestoreConfig = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigArgs\n {\n ExcludedNamespaces = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigExcludedNamespacesArgs\n {\n Namespaces = new[]\n {\n \"my-ns\",\n },\n },\n NamespacedResourceRestoreMode = \"DELETE_AND_RESTORE\",\n VolumeDataRestorePolicy = \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n ClusterResourceRestoreScope = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs\n {\n ExcludedGroupKinds = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeExcludedGroupKindArgs\n {\n ResourceGroup = \"apiextension.k8s.io\",\n ResourceKind = \"CustomResourceDefinition\",\n },\n },\n },\n ClusterResourceConflictPolicy = \"USE_EXISTING_VERSION\",\n TransformationRules = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleArgs\n {\n Description = \"Copy environment variables from the nginx container to the install init container.\",\n ResourceFilter = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleResourceFilterArgs\n {\n GroupKinds = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleResourceFilterGroupKindArgs\n {\n ResourceKind = \"Pod\",\n ResourceGroup = \"\",\n },\n },\n JsonPath = \".metadata[?(@.name == 'nginx')]\",\n },\n FieldActions = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigTransformationRuleFieldActionArgs\n {\n Op = \"COPY\",\n Path = \"/spec/initContainers/0/env\",\n FromPath = \"/spec/containers/0/env\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"transform-rule-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"transform-rule\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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\t_, err = gkebackup.NewRestorePlan(ctx, \"transform_rule\", \u0026gkebackup.RestorePlanArgs{\n\t\t\tName: pulumi.String(\"transform-rule-rp\"),\n\t\t\tDescription: pulumi.String(\"copy nginx env variables\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"app\": pulumi.String(\"nginx\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupPlan: basic.ID(),\n\t\t\tCluster: primary.ID(),\n\t\t\tRestoreConfig: \u0026gkebackup.RestorePlanRestoreConfigArgs{\n\t\t\t\tExcludedNamespaces: \u0026gkebackup.RestorePlanRestoreConfigExcludedNamespacesArgs{\n\t\t\t\t\tNamespaces: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"my-ns\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tNamespacedResourceRestoreMode: pulumi.String(\"DELETE_AND_RESTORE\"),\n\t\t\t\tVolumeDataRestorePolicy: pulumi.String(\"RESTORE_VOLUME_DATA_FROM_BACKUP\"),\n\t\t\t\tClusterResourceRestoreScope: \u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs{\n\t\t\t\t\tExcludedGroupKinds: gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeExcludedGroupKindArray{\n\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeExcludedGroupKindArgs{\n\t\t\t\t\t\t\tResourceGroup: pulumi.String(\"apiextension.k8s.io\"),\n\t\t\t\t\t\t\tResourceKind: pulumi.String(\"CustomResourceDefinition\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tClusterResourceConflictPolicy: pulumi.String(\"USE_EXISTING_VERSION\"),\n\t\t\t\tTransformationRules: gkebackup.RestorePlanRestoreConfigTransformationRuleArray{\n\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigTransformationRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"Copy environment variables from the nginx container to the install init container.\"),\n\t\t\t\t\t\tResourceFilter: \u0026gkebackup.RestorePlanRestoreConfigTransformationRuleResourceFilterArgs{\n\t\t\t\t\t\t\tGroupKinds: gkebackup.RestorePlanRestoreConfigTransformationRuleResourceFilterGroupKindArray{\n\t\t\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigTransformationRuleResourceFilterGroupKindArgs{\n\t\t\t\t\t\t\t\t\tResourceKind: pulumi.String(\"Pod\"),\n\t\t\t\t\t\t\t\t\tResourceGroup: pulumi.String(\"\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tJsonPath: pulumi.String(\".metadata[?(@.name == 'nginx')]\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFieldActions: gkebackup.RestorePlanRestoreConfigTransformationRuleFieldActionArray{\n\t\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigTransformationRuleFieldActionArgs{\n\t\t\t\t\t\t\t\tOp: pulumi.String(\"COPY\"),\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/spec/initContainers/0/env\"),\n\t\t\t\t\t\t\t\tFromPath: pulumi.String(\"/spec/containers/0/env\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.RestorePlan;\nimport com.pulumi.gcp.gkebackup.RestorePlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigExcludedNamespacesArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"transform-rule-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"transform-rule\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n var transformRule = new RestorePlan(\"transformRule\", RestorePlanArgs.builder()\n .name(\"transform-rule-rp\")\n .description(\"copy nginx env variables\")\n .labels(Map.of(\"app\", \"nginx\"))\n .location(\"us-central1\")\n .backupPlan(basic.id())\n .cluster(primary.id())\n .restoreConfig(RestorePlanRestoreConfigArgs.builder()\n .excludedNamespaces(RestorePlanRestoreConfigExcludedNamespacesArgs.builder()\n .namespaces(\"my-ns\")\n .build())\n .namespacedResourceRestoreMode(\"DELETE_AND_RESTORE\")\n .volumeDataRestorePolicy(\"RESTORE_VOLUME_DATA_FROM_BACKUP\")\n .clusterResourceRestoreScope(RestorePlanRestoreConfigClusterResourceRestoreScopeArgs.builder()\n .excludedGroupKinds(RestorePlanRestoreConfigClusterResourceRestoreScopeExcludedGroupKindArgs.builder()\n .resourceGroup(\"apiextension.k8s.io\")\n .resourceKind(\"CustomResourceDefinition\")\n .build())\n .build())\n .clusterResourceConflictPolicy(\"USE_EXISTING_VERSION\")\n .transformationRules(RestorePlanRestoreConfigTransformationRuleArgs.builder()\n .description(\"Copy environment variables from the nginx container to the install init container.\")\n .resourceFilter(RestorePlanRestoreConfigTransformationRuleResourceFilterArgs.builder()\n .groupKinds(RestorePlanRestoreConfigTransformationRuleResourceFilterGroupKindArgs.builder()\n .resourceKind(\"Pod\")\n .resourceGroup(\"\")\n .build())\n .jsonPath(\".metadata[?(@.name == 'nginx')]\")\n .build())\n .fieldActions(RestorePlanRestoreConfigTransformationRuleFieldActionArgs.builder()\n .op(\"COPY\")\n .path(\"/spec/initContainers/0/env\")\n .fromPath(\"/spec/containers/0/env\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: transform-rule-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection:\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: transform-rule\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n transformRule:\n type: gcp:gkebackup:RestorePlan\n name: transform_rule\n properties:\n name: transform-rule-rp\n description: copy nginx env variables\n labels:\n app: nginx\n location: us-central1\n backupPlan: ${basic.id}\n cluster: ${primary.id}\n restoreConfig:\n excludedNamespaces:\n namespaces:\n - my-ns\n namespacedResourceRestoreMode: DELETE_AND_RESTORE\n volumeDataRestorePolicy: RESTORE_VOLUME_DATA_FROM_BACKUP\n clusterResourceRestoreScope:\n excludedGroupKinds:\n - resourceGroup: apiextension.k8s.io\n resourceKind: CustomResourceDefinition\n clusterResourceConflictPolicy: USE_EXISTING_VERSION\n transformationRules:\n - description: Copy environment variables from the nginx container to the install init container.\n resourceFilter:\n groupKinds:\n - resourceKind: Pod\n resourceGroup:\n jsonPath: .metadata[?(@.name == 'nginx')]\n fieldActions:\n - op: COPY\n path: /spec/initContainers/0/env\n fromPath: /spec/containers/0/env\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Restoreplan Gitops Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"gitops-mode-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: \"\",\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"gitops-mode\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\nconst gitopsMode = new gcp.gkebackup.RestorePlan(\"gitops_mode\", {\n name: \"gitops-mode\",\n location: \"us-central1\",\n backupPlan: basic.id,\n cluster: primary.id,\n restoreConfig: {\n allNamespaces: true,\n namespacedResourceRestoreMode: \"MERGE_SKIP_ON_CONFLICT\",\n volumeDataRestorePolicy: \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n clusterResourceRestoreScope: {\n allGroupKinds: true,\n },\n clusterResourceConflictPolicy: \"USE_EXISTING_VERSION\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"gitops-mode-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=\"\",\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"gitops-mode\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": True,\n })\ngitops_mode = gcp.gkebackup.RestorePlan(\"gitops_mode\",\n name=\"gitops-mode\",\n location=\"us-central1\",\n backup_plan=basic.id,\n cluster=primary.id,\n restore_config={\n \"all_namespaces\": True,\n \"namespaced_resource_restore_mode\": \"MERGE_SKIP_ON_CONFLICT\",\n \"volume_data_restore_policy\": \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n \"cluster_resource_restore_scope\": {\n \"all_group_kinds\": True,\n },\n \"cluster_resource_conflict_policy\": \"USE_EXISTING_VERSION\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"gitops-mode-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = \"\",\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"gitops-mode\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n var gitopsMode = new Gcp.GkeBackup.RestorePlan(\"gitops_mode\", new()\n {\n Name = \"gitops-mode\",\n Location = \"us-central1\",\n BackupPlan = basic.Id,\n Cluster = primary.Id,\n RestoreConfig = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigArgs\n {\n AllNamespaces = true,\n NamespacedResourceRestoreMode = \"MERGE_SKIP_ON_CONFLICT\",\n VolumeDataRestorePolicy = \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n ClusterResourceRestoreScope = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs\n {\n AllGroupKinds = true,\n },\n ClusterResourceConflictPolicy = \"USE_EXISTING_VERSION\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"gitops-mode-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"gitops-mode\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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\t_, err = gkebackup.NewRestorePlan(ctx, \"gitops_mode\", \u0026gkebackup.RestorePlanArgs{\n\t\t\tName: pulumi.String(\"gitops-mode\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupPlan: basic.ID(),\n\t\t\tCluster: primary.ID(),\n\t\t\tRestoreConfig: \u0026gkebackup.RestorePlanRestoreConfigArgs{\n\t\t\t\tAllNamespaces: pulumi.Bool(true),\n\t\t\t\tNamespacedResourceRestoreMode: pulumi.String(\"MERGE_SKIP_ON_CONFLICT\"),\n\t\t\t\tVolumeDataRestorePolicy: pulumi.String(\"RESTORE_VOLUME_DATA_FROM_BACKUP\"),\n\t\t\t\tClusterResourceRestoreScope: \u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs{\n\t\t\t\t\tAllGroupKinds: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tClusterResourceConflictPolicy: pulumi.String(\"USE_EXISTING_VERSION\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.RestorePlan;\nimport com.pulumi.gcp.gkebackup.RestorePlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"gitops-mode-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"gitops-mode\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n var gitopsMode = new RestorePlan(\"gitopsMode\", RestorePlanArgs.builder()\n .name(\"gitops-mode\")\n .location(\"us-central1\")\n .backupPlan(basic.id())\n .cluster(primary.id())\n .restoreConfig(RestorePlanRestoreConfigArgs.builder()\n .allNamespaces(true)\n .namespacedResourceRestoreMode(\"MERGE_SKIP_ON_CONFLICT\")\n .volumeDataRestorePolicy(\"RESTORE_VOLUME_DATA_FROM_BACKUP\")\n .clusterResourceRestoreScope(RestorePlanRestoreConfigClusterResourceRestoreScopeArgs.builder()\n .allGroupKinds(true)\n .build())\n .clusterResourceConflictPolicy(\"USE_EXISTING_VERSION\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: gitops-mode-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection:\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: gitops-mode\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n gitopsMode:\n type: gcp:gkebackup:RestorePlan\n name: gitops_mode\n properties:\n name: gitops-mode\n location: us-central1\n backupPlan: ${basic.id}\n cluster: ${primary.id}\n restoreConfig:\n allNamespaces: true\n namespacedResourceRestoreMode: MERGE_SKIP_ON_CONFLICT\n volumeDataRestorePolicy: RESTORE_VOLUME_DATA_FROM_BACKUP\n clusterResourceRestoreScope:\n allGroupKinds: true\n clusterResourceConflictPolicy: USE_EXISTING_VERSION\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Restoreplan Restore Order\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"restore-order-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: \"\",\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"restore-order\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\nconst restoreOrder = new gcp.gkebackup.RestorePlan(\"restore_order\", {\n name: \"restore-order\",\n location: \"us-central1\",\n backupPlan: basic.id,\n cluster: primary.id,\n restoreConfig: {\n allNamespaces: true,\n namespacedResourceRestoreMode: \"FAIL_ON_CONFLICT\",\n volumeDataRestorePolicy: \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n clusterResourceRestoreScope: {\n allGroupKinds: true,\n },\n clusterResourceConflictPolicy: \"USE_EXISTING_VERSION\",\n restoreOrder: {\n groupKindDependencies: [\n {\n satisfying: {\n resourceGroup: \"stable.example.com\",\n resourceKind: \"kindA\",\n },\n requiring: {\n resourceGroup: \"stable.example.com\",\n resourceKind: \"kindB\",\n },\n },\n {\n satisfying: {\n resourceGroup: \"stable.example.com\",\n resourceKind: \"kindB\",\n },\n requiring: {\n resourceGroup: \"stable.example.com\",\n resourceKind: \"kindC\",\n },\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"restore-order-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=\"\",\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"restore-order\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": True,\n })\nrestore_order = gcp.gkebackup.RestorePlan(\"restore_order\",\n name=\"restore-order\",\n location=\"us-central1\",\n backup_plan=basic.id,\n cluster=primary.id,\n restore_config={\n \"all_namespaces\": True,\n \"namespaced_resource_restore_mode\": \"FAIL_ON_CONFLICT\",\n \"volume_data_restore_policy\": \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n \"cluster_resource_restore_scope\": {\n \"all_group_kinds\": True,\n },\n \"cluster_resource_conflict_policy\": \"USE_EXISTING_VERSION\",\n \"restore_order\": {\n \"group_kind_dependencies\": [\n {\n \"satisfying\": {\n \"resource_group\": \"stable.example.com\",\n \"resource_kind\": \"kindA\",\n },\n \"requiring\": {\n \"resource_group\": \"stable.example.com\",\n \"resource_kind\": \"kindB\",\n },\n },\n {\n \"satisfying\": {\n \"resource_group\": \"stable.example.com\",\n \"resource_kind\": \"kindB\",\n },\n \"requiring\": {\n \"resource_group\": \"stable.example.com\",\n \"resource_kind\": \"kindC\",\n },\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"restore-order-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = \"\",\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"restore-order\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n var restoreOrder = new Gcp.GkeBackup.RestorePlan(\"restore_order\", new()\n {\n Name = \"restore-order\",\n Location = \"us-central1\",\n BackupPlan = basic.Id,\n Cluster = primary.Id,\n RestoreConfig = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigArgs\n {\n AllNamespaces = true,\n NamespacedResourceRestoreMode = \"FAIL_ON_CONFLICT\",\n VolumeDataRestorePolicy = \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n ClusterResourceRestoreScope = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs\n {\n AllGroupKinds = true,\n },\n ClusterResourceConflictPolicy = \"USE_EXISTING_VERSION\",\n RestoreOrder = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigRestoreOrderArgs\n {\n GroupKindDependencies = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigRestoreOrderGroupKindDependencyArgs\n {\n Satisfying = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigRestoreOrderGroupKindDependencySatisfyingArgs\n {\n ResourceGroup = \"stable.example.com\",\n ResourceKind = \"kindA\",\n },\n Requiring = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigRestoreOrderGroupKindDependencyRequiringArgs\n {\n ResourceGroup = \"stable.example.com\",\n ResourceKind = \"kindB\",\n },\n },\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigRestoreOrderGroupKindDependencyArgs\n {\n Satisfying = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigRestoreOrderGroupKindDependencySatisfyingArgs\n {\n ResourceGroup = \"stable.example.com\",\n ResourceKind = \"kindB\",\n },\n Requiring = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigRestoreOrderGroupKindDependencyRequiringArgs\n {\n ResourceGroup = \"stable.example.com\",\n ResourceKind = \"kindC\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"restore-order-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"restore-order\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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\t_, err = gkebackup.NewRestorePlan(ctx, \"restore_order\", \u0026gkebackup.RestorePlanArgs{\n\t\t\tName: pulumi.String(\"restore-order\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupPlan: basic.ID(),\n\t\t\tCluster: primary.ID(),\n\t\t\tRestoreConfig: \u0026gkebackup.RestorePlanRestoreConfigArgs{\n\t\t\t\tAllNamespaces: pulumi.Bool(true),\n\t\t\t\tNamespacedResourceRestoreMode: pulumi.String(\"FAIL_ON_CONFLICT\"),\n\t\t\t\tVolumeDataRestorePolicy: pulumi.String(\"RESTORE_VOLUME_DATA_FROM_BACKUP\"),\n\t\t\t\tClusterResourceRestoreScope: \u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs{\n\t\t\t\t\tAllGroupKinds: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tClusterResourceConflictPolicy: pulumi.String(\"USE_EXISTING_VERSION\"),\n\t\t\t\tRestoreOrder: \u0026gkebackup.RestorePlanRestoreConfigRestoreOrderArgs{\n\t\t\t\t\tGroupKindDependencies: gkebackup.RestorePlanRestoreConfigRestoreOrderGroupKindDependencyArray{\n\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigRestoreOrderGroupKindDependencyArgs{\n\t\t\t\t\t\t\tSatisfying: \u0026gkebackup.RestorePlanRestoreConfigRestoreOrderGroupKindDependencySatisfyingArgs{\n\t\t\t\t\t\t\t\tResourceGroup: pulumi.String(\"stable.example.com\"),\n\t\t\t\t\t\t\t\tResourceKind: pulumi.String(\"kindA\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRequiring: \u0026gkebackup.RestorePlanRestoreConfigRestoreOrderGroupKindDependencyRequiringArgs{\n\t\t\t\t\t\t\t\tResourceGroup: pulumi.String(\"stable.example.com\"),\n\t\t\t\t\t\t\t\tResourceKind: pulumi.String(\"kindB\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigRestoreOrderGroupKindDependencyArgs{\n\t\t\t\t\t\t\tSatisfying: \u0026gkebackup.RestorePlanRestoreConfigRestoreOrderGroupKindDependencySatisfyingArgs{\n\t\t\t\t\t\t\t\tResourceGroup: pulumi.String(\"stable.example.com\"),\n\t\t\t\t\t\t\t\tResourceKind: pulumi.String(\"kindB\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRequiring: \u0026gkebackup.RestorePlanRestoreConfigRestoreOrderGroupKindDependencyRequiringArgs{\n\t\t\t\t\t\t\t\tResourceGroup: pulumi.String(\"stable.example.com\"),\n\t\t\t\t\t\t\t\tResourceKind: pulumi.String(\"kindC\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.RestorePlan;\nimport com.pulumi.gcp.gkebackup.RestorePlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigRestoreOrderArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"restore-order-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"restore-order\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n var restoreOrder = new RestorePlan(\"restoreOrder\", RestorePlanArgs.builder()\n .name(\"restore-order\")\n .location(\"us-central1\")\n .backupPlan(basic.id())\n .cluster(primary.id())\n .restoreConfig(RestorePlanRestoreConfigArgs.builder()\n .allNamespaces(true)\n .namespacedResourceRestoreMode(\"FAIL_ON_CONFLICT\")\n .volumeDataRestorePolicy(\"RESTORE_VOLUME_DATA_FROM_BACKUP\")\n .clusterResourceRestoreScope(RestorePlanRestoreConfigClusterResourceRestoreScopeArgs.builder()\n .allGroupKinds(true)\n .build())\n .clusterResourceConflictPolicy(\"USE_EXISTING_VERSION\")\n .restoreOrder(RestorePlanRestoreConfigRestoreOrderArgs.builder()\n .groupKindDependencies( \n RestorePlanRestoreConfigRestoreOrderGroupKindDependencyArgs.builder()\n .satisfying(RestorePlanRestoreConfigRestoreOrderGroupKindDependencySatisfyingArgs.builder()\n .resourceGroup(\"stable.example.com\")\n .resourceKind(\"kindA\")\n .build())\n .requiring(RestorePlanRestoreConfigRestoreOrderGroupKindDependencyRequiringArgs.builder()\n .resourceGroup(\"stable.example.com\")\n .resourceKind(\"kindB\")\n .build())\n .build(),\n RestorePlanRestoreConfigRestoreOrderGroupKindDependencyArgs.builder()\n .satisfying(RestorePlanRestoreConfigRestoreOrderGroupKindDependencySatisfyingArgs.builder()\n .resourceGroup(\"stable.example.com\")\n .resourceKind(\"kindB\")\n .build())\n .requiring(RestorePlanRestoreConfigRestoreOrderGroupKindDependencyRequiringArgs.builder()\n .resourceGroup(\"stable.example.com\")\n .resourceKind(\"kindC\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: restore-order-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection:\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: restore-order\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n restoreOrder:\n type: gcp:gkebackup:RestorePlan\n name: restore_order\n properties:\n name: restore-order\n location: us-central1\n backupPlan: ${basic.id}\n cluster: ${primary.id}\n restoreConfig:\n allNamespaces: true\n namespacedResourceRestoreMode: FAIL_ON_CONFLICT\n volumeDataRestorePolicy: RESTORE_VOLUME_DATA_FROM_BACKUP\n clusterResourceRestoreScope:\n allGroupKinds: true\n clusterResourceConflictPolicy: USE_EXISTING_VERSION\n restoreOrder:\n groupKindDependencies:\n - satisfying:\n resourceGroup: stable.example.com\n resourceKind: kindA\n requiring:\n resourceGroup: stable.example.com\n resourceKind: kindB\n - satisfying:\n resourceGroup: stable.example.com\n resourceKind: kindB\n requiring:\n resourceGroup: stable.example.com\n resourceKind: kindC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Restoreplan Volume Res\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"volume-res-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: \"\",\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"volume-res\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\nconst volumeRes = new gcp.gkebackup.RestorePlan(\"volume_res\", {\n name: \"volume-res\",\n location: \"us-central1\",\n backupPlan: basic.id,\n cluster: primary.id,\n restoreConfig: {\n allNamespaces: true,\n namespacedResourceRestoreMode: \"FAIL_ON_CONFLICT\",\n volumeDataRestorePolicy: \"NO_VOLUME_DATA_RESTORATION\",\n clusterResourceRestoreScope: {\n allGroupKinds: true,\n },\n clusterResourceConflictPolicy: \"USE_EXISTING_VERSION\",\n volumeDataRestorePolicyBindings: [{\n policy: \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n volumeType: \"GCE_PERSISTENT_DISK\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"volume-res-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=\"\",\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"volume-res\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": True,\n })\nvolume_res = gcp.gkebackup.RestorePlan(\"volume_res\",\n name=\"volume-res\",\n location=\"us-central1\",\n backup_plan=basic.id,\n cluster=primary.id,\n restore_config={\n \"all_namespaces\": True,\n \"namespaced_resource_restore_mode\": \"FAIL_ON_CONFLICT\",\n \"volume_data_restore_policy\": \"NO_VOLUME_DATA_RESTORATION\",\n \"cluster_resource_restore_scope\": {\n \"all_group_kinds\": True,\n },\n \"cluster_resource_conflict_policy\": \"USE_EXISTING_VERSION\",\n \"volume_data_restore_policy_bindings\": [{\n \"policy\": \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n \"volume_type\": \"GCE_PERSISTENT_DISK\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"volume-res-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = \"\",\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"volume-res\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n var volumeRes = new Gcp.GkeBackup.RestorePlan(\"volume_res\", new()\n {\n Name = \"volume-res\",\n Location = \"us-central1\",\n BackupPlan = basic.Id,\n Cluster = primary.Id,\n RestoreConfig = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigArgs\n {\n AllNamespaces = true,\n NamespacedResourceRestoreMode = \"FAIL_ON_CONFLICT\",\n VolumeDataRestorePolicy = \"NO_VOLUME_DATA_RESTORATION\",\n ClusterResourceRestoreScope = new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs\n {\n AllGroupKinds = true,\n },\n ClusterResourceConflictPolicy = \"USE_EXISTING_VERSION\",\n VolumeDataRestorePolicyBindings = new[]\n {\n new Gcp.GkeBackup.Inputs.RestorePlanRestoreConfigVolumeDataRestorePolicyBindingArgs\n {\n Policy = \"RESTORE_VOLUME_DATA_FROM_BACKUP\",\n VolumeType = \"GCE_PERSISTENT_DISK\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"volume-res-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(\"\"),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasic, err := gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"volume-res\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: 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\t_, err = gkebackup.NewRestorePlan(ctx, \"volume_res\", \u0026gkebackup.RestorePlanArgs{\n\t\t\tName: pulumi.String(\"volume-res\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupPlan: basic.ID(),\n\t\t\tCluster: primary.ID(),\n\t\t\tRestoreConfig: \u0026gkebackup.RestorePlanRestoreConfigArgs{\n\t\t\t\tAllNamespaces: pulumi.Bool(true),\n\t\t\t\tNamespacedResourceRestoreMode: pulumi.String(\"FAIL_ON_CONFLICT\"),\n\t\t\t\tVolumeDataRestorePolicy: pulumi.String(\"NO_VOLUME_DATA_RESTORATION\"),\n\t\t\t\tClusterResourceRestoreScope: \u0026gkebackup.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs{\n\t\t\t\t\tAllGroupKinds: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tClusterResourceConflictPolicy: pulumi.String(\"USE_EXISTING_VERSION\"),\n\t\t\t\tVolumeDataRestorePolicyBindings: gkebackup.RestorePlanRestoreConfigVolumeDataRestorePolicyBindingArray{\n\t\t\t\t\t\u0026gkebackup.RestorePlanRestoreConfigVolumeDataRestorePolicyBindingArgs{\n\t\t\t\t\t\tPolicy: pulumi.String(\"RESTORE_VOLUME_DATA_FROM_BACKUP\"),\n\t\t\t\t\t\tVolumeType: pulumi.String(\"GCE_PERSISTENT_DISK\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.RestorePlan;\nimport com.pulumi.gcp.gkebackup.RestorePlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.RestorePlanRestoreConfigClusterResourceRestoreScopeArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"volume-res-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"volume-res\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n var volumeRes = new RestorePlan(\"volumeRes\", RestorePlanArgs.builder()\n .name(\"volume-res\")\n .location(\"us-central1\")\n .backupPlan(basic.id())\n .cluster(primary.id())\n .restoreConfig(RestorePlanRestoreConfigArgs.builder()\n .allNamespaces(true)\n .namespacedResourceRestoreMode(\"FAIL_ON_CONFLICT\")\n .volumeDataRestorePolicy(\"NO_VOLUME_DATA_RESTORATION\")\n .clusterResourceRestoreScope(RestorePlanRestoreConfigClusterResourceRestoreScopeArgs.builder()\n .allGroupKinds(true)\n .build())\n .clusterResourceConflictPolicy(\"USE_EXISTING_VERSION\")\n .volumeDataRestorePolicyBindings(RestorePlanRestoreConfigVolumeDataRestorePolicyBindingArgs.builder()\n .policy(\"RESTORE_VOLUME_DATA_FROM_BACKUP\")\n .volumeType(\"GCE_PERSISTENT_DISK\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: volume-res-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection:\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: volume-res\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n volumeRes:\n type: gcp:gkebackup:RestorePlan\n name: volume_res\n properties:\n name: volume-res\n location: us-central1\n backupPlan: ${basic.id}\n cluster: ${primary.id}\n restoreConfig:\n allNamespaces: true\n namespacedResourceRestoreMode: FAIL_ON_CONFLICT\n volumeDataRestorePolicy: NO_VOLUME_DATA_RESTORATION\n clusterResourceRestoreScope:\n allGroupKinds: true\n clusterResourceConflictPolicy: USE_EXISTING_VERSION\n volumeDataRestorePolicyBindings:\n - policy: RESTORE_VOLUME_DATA_FROM_BACKUP\n volumeType: GCE_PERSISTENT_DISK\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRestorePlan can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/restorePlans/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, RestorePlan can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkebackup/restorePlan:RestorePlan default projects/{{project}}/locations/{{location}}/restorePlans/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkebackup/restorePlan:RestorePlan default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkebackup/restorePlan:RestorePlan default {{location}}/{{name}}\n```\n\n", "properties": { "backupPlan": { "type": "string", @@ -195200,7 +195200,7 @@ } }, "gcp:gkehub/feature:Feature": { - "description": "Feature represents the settings and status of any Hub Feature.\n\n\nTo get more information about Feature, see:\n\n* [API documentation](https://cloud.google.com/anthos/fleet-management/docs/reference/rest/v1/projects.locations.features)\n* How-to Guides\n * [Registering a Cluster](https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster#register_cluster)\n\n## Example Usage\n\n### Gkehub Feature Multi Cluster Ingress\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster = new gcp.container.Cluster(\"cluster\", {\n name: \"my-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"my-membership\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${cluster.id}`,\n },\n },\n description: \"Membership\",\n});\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"multiclusteringress\",\n location: \"global\",\n spec: {\n multiclusteringress: {\n configMembership: membership.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster = gcp.container.Cluster(\"cluster\",\n name=\"my-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1)\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"my-membership\",\n endpoint={\n \"gkeCluster\": {\n \"resourceLink\": cluster.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n },\n description=\"Membership\")\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"multiclusteringress\",\n location=\"global\",\n spec={\n \"multiclusteringress\": {\n \"configMembership\": membership.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 cluster = new Gcp.Container.Cluster(\"cluster\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"my-membership\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = cluster.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n Description = \"Membership\",\n });\n\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"multiclusteringress\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Multiclusteringress = new Gcp.GkeHub.Inputs.FeatureSpecMulticlusteringressArgs\n {\n ConfigMembership = membership.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := container.NewCluster(ctx, \"cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"my-membership\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: cluster.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"Membership\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"multiclusteringress\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tMulticlusteringress: \u0026gkehub.FeatureSpecMulticlusteringressArgs{\n\t\t\t\t\tConfigMembership: membership.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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecMulticlusteringressArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"my-membership\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(cluster.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .description(\"Membership\")\n .build());\n\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"multiclusteringress\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .multiclusteringress(FeatureSpecMulticlusteringressArgs.builder()\n .configMembership(membership.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:container:Cluster\n properties:\n name: my-cluster\n location: us-central1-a\n initialNodeCount: 1\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: my-membership\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${cluster.id}\n description: Membership\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: multiclusteringress\n location: global\n spec:\n multiclusteringress:\n configMembership: ${membership.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkehub Feature Multi Cluster Service Discovery\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"multiclusterservicediscovery\",\n location: \"global\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"multiclusterservicediscovery\",\n location=\"global\",\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"multiclusterservicediscovery\",\n Location = \"global\",\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/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"multiclusterservicediscovery\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"multiclusterservicediscovery\")\n .location(\"global\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: multiclusterservicediscovery\n location: global\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkehub Feature Anthos Service Mesh\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"servicemesh\",\n location: \"global\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"servicemesh\",\n location=\"global\")\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"servicemesh\",\n Location = \"global\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"servicemesh\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"servicemesh\")\n .location(\"global\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: servicemesh\n location: global\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Observability For Default Logs With Copy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"fleetobservability\",\n location: \"global\",\n spec: {\n fleetobservability: {\n loggingConfig: {\n defaultConfig: {\n mode: \"COPY\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"fleetobservability\",\n location=\"global\",\n spec={\n \"fleetobservability\": {\n \"loggingConfig\": {\n \"defaultConfig\": {\n \"mode\": \"COPY\",\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"fleetobservability\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Fleetobservability = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityArgs\n {\n LoggingConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigArgs\n {\n DefaultConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs\n {\n Mode = \"COPY\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"fleetobservability\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tFleetobservability: \u0026gkehub.FeatureSpecFleetobservabilityArgs{\n\t\t\t\t\tLoggingConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigArgs{\n\t\t\t\t\t\tDefaultConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs{\n\t\t\t\t\t\t\tMode: pulumi.String(\"COPY\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"fleetobservability\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .fleetobservability(FeatureSpecFleetobservabilityArgs.builder()\n .loggingConfig(FeatureSpecFleetobservabilityLoggingConfigArgs.builder()\n .defaultConfig(FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs.builder()\n .mode(\"COPY\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: fleetobservability\n location: global\n spec:\n fleetobservability:\n loggingConfig:\n defaultConfig:\n mode: COPY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Observability For Scope Logs With Move\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"fleetobservability\",\n location: \"global\",\n spec: {\n fleetobservability: {\n loggingConfig: {\n fleetScopeLogsConfig: {\n mode: \"MOVE\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"fleetobservability\",\n location=\"global\",\n spec={\n \"fleetobservability\": {\n \"loggingConfig\": {\n \"fleetScopeLogsConfig\": {\n \"mode\": \"MOVE\",\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"fleetobservability\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Fleetobservability = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityArgs\n {\n LoggingConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigArgs\n {\n FleetScopeLogsConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs\n {\n Mode = \"MOVE\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"fleetobservability\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tFleetobservability: \u0026gkehub.FeatureSpecFleetobservabilityArgs{\n\t\t\t\t\tLoggingConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigArgs{\n\t\t\t\t\t\tFleetScopeLogsConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs{\n\t\t\t\t\t\t\tMode: pulumi.String(\"MOVE\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"fleetobservability\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .fleetobservability(FeatureSpecFleetobservabilityArgs.builder()\n .loggingConfig(FeatureSpecFleetobservabilityLoggingConfigArgs.builder()\n .fleetScopeLogsConfig(FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs.builder()\n .mode(\"MOVE\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: fleetobservability\n location: global\n spec:\n fleetobservability:\n loggingConfig:\n fleetScopeLogsConfig:\n mode: MOVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Observability For Both Default And Scope Logs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"fleetobservability\",\n location: \"global\",\n spec: {\n fleetobservability: {\n loggingConfig: {\n defaultConfig: {\n mode: \"COPY\",\n },\n fleetScopeLogsConfig: {\n mode: \"MOVE\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"fleetobservability\",\n location=\"global\",\n spec={\n \"fleetobservability\": {\n \"loggingConfig\": {\n \"defaultConfig\": {\n \"mode\": \"COPY\",\n },\n \"fleetScopeLogsConfig\": {\n \"mode\": \"MOVE\",\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"fleetobservability\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Fleetobservability = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityArgs\n {\n LoggingConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigArgs\n {\n DefaultConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs\n {\n Mode = \"COPY\",\n },\n FleetScopeLogsConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs\n {\n Mode = \"MOVE\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"fleetobservability\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tFleetobservability: \u0026gkehub.FeatureSpecFleetobservabilityArgs{\n\t\t\t\t\tLoggingConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigArgs{\n\t\t\t\t\t\tDefaultConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs{\n\t\t\t\t\t\t\tMode: pulumi.String(\"COPY\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFleetScopeLogsConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs{\n\t\t\t\t\t\t\tMode: pulumi.String(\"MOVE\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"fleetobservability\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .fleetobservability(FeatureSpecFleetobservabilityArgs.builder()\n .loggingConfig(FeatureSpecFleetobservabilityLoggingConfigArgs.builder()\n .defaultConfig(FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs.builder()\n .mode(\"COPY\")\n .build())\n .fleetScopeLogsConfig(FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs.builder()\n .mode(\"MOVE\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: fleetobservability\n location: global\n spec:\n fleetobservability:\n loggingConfig:\n defaultConfig:\n mode: COPY\n fleetScopeLogsConfig:\n mode: MOVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Service Mesh\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"servicemesh\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n mesh: {\n management: \"MANAGEMENT_AUTOMATIC\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"servicemesh\",\n location=\"global\",\n fleet_default_member_config={\n \"mesh\": {\n \"management\": \"MANAGEMENT_AUTOMATIC\",\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"servicemesh\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Mesh = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigMeshArgs\n {\n Management = \"MANAGEMENT_AUTOMATIC\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"servicemesh\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tMesh: \u0026gkehub.FeatureFleetDefaultMemberConfigMeshArgs{\n\t\t\t\t\tManagement: pulumi.String(\"MANAGEMENT_AUTOMATIC\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigMeshArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"servicemesh\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .mesh(FeatureFleetDefaultMemberConfigMeshArgs.builder()\n .management(\"MANAGEMENT_AUTOMATIC\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: servicemesh\n location: global\n fleetDefaultMemberConfig:\n mesh:\n management: MANAGEMENT_AUTOMATIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Configmanagement\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"configmanagement\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n configmanagement: {\n configSync: {\n git: {\n syncRepo: \"https://github.com/hashicorp/terraform\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"configmanagement\",\n location=\"global\",\n fleet_default_member_config={\n \"configmanagement\": {\n \"configSync\": {\n \"git\": {\n \"syncRepo\": \"https://github.com/hashicorp/terraform\",\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"configmanagement\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Configmanagement = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigConfigmanagementArgs\n {\n ConfigSync = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs\n {\n Git = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs\n {\n SyncRepo = \"https://github.com/hashicorp/terraform\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"configmanagement\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tConfigmanagement: \u0026gkehub.FeatureFleetDefaultMemberConfigConfigmanagementArgs{\n\t\t\t\t\tConfigSync: \u0026gkehub.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs{\n\t\t\t\t\t\tGit: \u0026gkehub.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs{\n\t\t\t\t\t\t\tSyncRepo: pulumi.String(\"https://github.com/hashicorp/terraform\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigConfigmanagementArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"configmanagement\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .configmanagement(FeatureFleetDefaultMemberConfigConfigmanagementArgs.builder()\n .configSync(FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs.builder()\n .git(FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs.builder()\n .syncRepo(\"https://github.com/hashicorp/terraform\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: configmanagement\n location: global\n fleetDefaultMemberConfig:\n configmanagement:\n configSync:\n git:\n syncRepo: https://github.com/hashicorp/terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Policycontroller\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"policycontroller\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n policycontroller: {\n policyControllerHubConfig: {\n installSpec: \"INSTALL_SPEC_ENABLED\",\n exemptableNamespaces: [\"foo\"],\n policyContent: {\n bundles: [{\n bundle: \"policy-essentials-v2022\",\n exemptedNamespaces: [\n \"foo\",\n \"bar\",\n ],\n }],\n templateLibrary: {\n installation: \"ALL\",\n },\n },\n auditIntervalSeconds: 30,\n referentialRulesEnabled: true,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"policycontroller\",\n location=\"global\",\n fleet_default_member_config={\n \"policycontroller\": {\n \"policyControllerHubConfig\": {\n \"installSpec\": \"INSTALL_SPEC_ENABLED\",\n \"exemptableNamespaces\": [\"foo\"],\n \"policyContent\": {\n \"bundles\": [{\n \"bundle\": \"policy-essentials-v2022\",\n \"exemptedNamespaces\": [\n \"foo\",\n \"bar\",\n ],\n }],\n \"templateLibrary\": {\n \"installation\": \"ALL\",\n },\n },\n \"auditIntervalSeconds\": 30,\n \"referentialRulesEnabled\": True,\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"policycontroller\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Policycontroller = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs\n {\n PolicyControllerHubConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs\n {\n InstallSpec = \"INSTALL_SPEC_ENABLED\",\n ExemptableNamespaces = new[]\n {\n \"foo\",\n },\n PolicyContent = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs\n {\n Bundles = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs\n {\n Bundle = \"policy-essentials-v2022\",\n ExemptedNamespaces = new[]\n {\n \"foo\",\n \"bar\",\n },\n },\n },\n TemplateLibrary = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs\n {\n Installation = \"ALL\",\n },\n },\n AuditIntervalSeconds = 30,\n ReferentialRulesEnabled = true,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"policycontroller\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tPolicycontroller: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerArgs{\n\t\t\t\t\tPolicyControllerHubConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs{\n\t\t\t\t\t\tInstallSpec: pulumi.String(\"INSTALL_SPEC_ENABLED\"),\n\t\t\t\t\t\tExemptableNamespaces: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPolicyContent: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs{\n\t\t\t\t\t\t\tBundles: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArray{\n\t\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs{\n\t\t\t\t\t\t\t\t\tBundle: pulumi.String(\"policy-essentials-v2022\"),\n\t\t\t\t\t\t\t\t\tExemptedNamespaces: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTemplateLibrary: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs{\n\t\t\t\t\t\t\t\tInstallation: pulumi.String(\"ALL\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAuditIntervalSeconds: pulumi.Int(30),\n\t\t\t\t\t\tReferentialRulesEnabled: pulumi.Bool(true),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"policycontroller\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .policycontroller(FeatureFleetDefaultMemberConfigPolicycontrollerArgs.builder()\n .policyControllerHubConfig(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs.builder()\n .installSpec(\"INSTALL_SPEC_ENABLED\")\n .exemptableNamespaces(\"foo\")\n .policyContent(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs.builder()\n .bundles(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs.builder()\n .bundle(\"policy-essentials-v2022\")\n .exemptedNamespaces( \n \"foo\",\n \"bar\")\n .build())\n .templateLibrary(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs.builder()\n .installation(\"ALL\")\n .build())\n .build())\n .auditIntervalSeconds(30)\n .referentialRulesEnabled(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: policycontroller\n location: global\n fleetDefaultMemberConfig:\n policycontroller:\n policyControllerHubConfig:\n installSpec: INSTALL_SPEC_ENABLED\n exemptableNamespaces:\n - foo\n policyContent:\n bundles:\n - bundle: policy-essentials-v2022\n exemptedNamespaces:\n - foo\n - bar\n templateLibrary:\n installation: ALL\n auditIntervalSeconds: 30\n referentialRulesEnabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Policycontroller Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"policycontroller\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n policycontroller: {\n policyControllerHubConfig: {\n installSpec: \"INSTALL_SPEC_SUSPENDED\",\n policyContent: {\n bundles: [\n {\n bundle: \"pci-dss-v3.2.1\",\n exemptedNamespaces: [\n \"baz\",\n \"bar\",\n ],\n },\n {\n bundle: \"nist-sp-800-190\",\n exemptedNamespaces: [],\n },\n ],\n templateLibrary: {\n installation: \"ALL\",\n },\n },\n constraintViolationLimit: 50,\n referentialRulesEnabled: true,\n logDeniesEnabled: true,\n mutationEnabled: true,\n deploymentConfigs: [\n {\n component: \"admission\",\n replicaCount: 2,\n podAffinity: \"ANTI_AFFINITY\",\n },\n {\n component: \"audit\",\n containerResources: {\n limits: {\n memory: \"1Gi\",\n cpu: \"1.5\",\n },\n requests: {\n memory: \"500Mi\",\n cpu: \"150m\",\n },\n },\n podTolerations: [{\n key: \"key1\",\n operator: \"Equal\",\n value: \"value1\",\n effect: \"NoSchedule\",\n }],\n },\n ],\n monitoring: {\n backends: [\"PROMETHEUS\"],\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"policycontroller\",\n location=\"global\",\n fleet_default_member_config={\n \"policycontroller\": {\n \"policyControllerHubConfig\": {\n \"installSpec\": \"INSTALL_SPEC_SUSPENDED\",\n \"policyContent\": {\n \"bundles\": [\n {\n \"bundle\": \"pci-dss-v3.2.1\",\n \"exemptedNamespaces\": [\n \"baz\",\n \"bar\",\n ],\n },\n {\n \"bundle\": \"nist-sp-800-190\",\n \"exemptedNamespaces\": [],\n },\n ],\n \"templateLibrary\": {\n \"installation\": \"ALL\",\n },\n },\n \"constraintViolationLimit\": 50,\n \"referentialRulesEnabled\": True,\n \"logDeniesEnabled\": True,\n \"mutationEnabled\": True,\n \"deploymentConfigs\": [\n {\n \"component\": \"admission\",\n \"replicaCount\": 2,\n \"podAffinity\": \"ANTI_AFFINITY\",\n },\n {\n \"component\": \"audit\",\n \"containerResources\": {\n \"limits\": {\n \"memory\": \"1Gi\",\n \"cpu\": \"1.5\",\n },\n \"requests\": {\n \"memory\": \"500Mi\",\n \"cpu\": \"150m\",\n },\n },\n \"podTolerations\": [{\n \"key\": \"key1\",\n \"operator\": \"Equal\",\n \"value\": \"value1\",\n \"effect\": \"NoSchedule\",\n }],\n },\n ],\n \"monitoring\": {\n \"backends\": [\"PROMETHEUS\"],\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"policycontroller\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Policycontroller = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs\n {\n PolicyControllerHubConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs\n {\n InstallSpec = \"INSTALL_SPEC_SUSPENDED\",\n PolicyContent = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs\n {\n Bundles = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs\n {\n Bundle = \"pci-dss-v3.2.1\",\n ExemptedNamespaces = new[]\n {\n \"baz\",\n \"bar\",\n },\n },\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs\n {\n Bundle = \"nist-sp-800-190\",\n ExemptedNamespaces = new() { },\n },\n },\n TemplateLibrary = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs\n {\n Installation = \"ALL\",\n },\n },\n ConstraintViolationLimit = 50,\n ReferentialRulesEnabled = true,\n LogDeniesEnabled = true,\n MutationEnabled = true,\n DeploymentConfigs = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs\n {\n Component = \"admission\",\n ReplicaCount = 2,\n PodAffinity = \"ANTI_AFFINITY\",\n },\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs\n {\n Component = \"audit\",\n ContainerResources = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesArgs\n {\n Limits = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesLimitsArgs\n {\n Memory = \"1Gi\",\n Cpu = \"1.5\",\n },\n Requests = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesRequestsArgs\n {\n Memory = \"500Mi\",\n Cpu = \"150m\",\n },\n },\n PodTolerations = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs\n {\n Key = \"key1\",\n Operator = \"Equal\",\n Value = \"value1\",\n Effect = \"NoSchedule\",\n },\n },\n },\n },\n Monitoring = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs\n {\n Backends = new[]\n {\n \"PROMETHEUS\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"policycontroller\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tPolicycontroller: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerArgs{\n\t\t\t\t\tPolicyControllerHubConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs{\n\t\t\t\t\t\tInstallSpec: pulumi.String(\"INSTALL_SPEC_SUSPENDED\"),\n\t\t\t\t\t\tPolicyContent: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs{\n\t\t\t\t\t\t\tBundles: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArray{\n\t\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs{\n\t\t\t\t\t\t\t\t\tBundle: pulumi.String(\"pci-dss-v3.2.1\"),\n\t\t\t\t\t\t\t\t\tExemptedNamespaces: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"baz\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs{\n\t\t\t\t\t\t\t\t\tBundle: pulumi.String(\"nist-sp-800-190\"),\n\t\t\t\t\t\t\t\t\tExemptedNamespaces: pulumi.StringArray{},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTemplateLibrary: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs{\n\t\t\t\t\t\t\t\tInstallation: pulumi.String(\"ALL\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConstraintViolationLimit: pulumi.Int(50),\n\t\t\t\t\t\tReferentialRulesEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tLogDeniesEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tMutationEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tDeploymentConfigs: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArray{\n\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs{\n\t\t\t\t\t\t\t\tComponent: pulumi.String(\"admission\"),\n\t\t\t\t\t\t\t\tReplicaCount: pulumi.Int(2),\n\t\t\t\t\t\t\t\tPodAffinity: pulumi.String(\"ANTI_AFFINITY\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs{\n\t\t\t\t\t\t\t\tComponent: pulumi.String(\"audit\"),\n\t\t\t\t\t\t\t\tContainerResources: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesArgs{\n\t\t\t\t\t\t\t\t\tLimits: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesLimitsArgs{\n\t\t\t\t\t\t\t\t\t\tMemory: pulumi.String(\"1Gi\"),\n\t\t\t\t\t\t\t\t\t\tCpu: pulumi.String(\"1.5\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRequests: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesRequestsArgs{\n\t\t\t\t\t\t\t\t\t\tMemory: pulumi.String(\"500Mi\"),\n\t\t\t\t\t\t\t\t\t\tCpu: pulumi.String(\"150m\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tPodTolerations: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArray{\n\t\t\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs{\n\t\t\t\t\t\t\t\t\t\tKey: pulumi.String(\"key1\"),\n\t\t\t\t\t\t\t\t\t\tOperator: pulumi.String(\"Equal\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"value1\"),\n\t\t\t\t\t\t\t\t\t\tEffect: pulumi.String(\"NoSchedule\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMonitoring: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs{\n\t\t\t\t\t\t\tBackends: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"PROMETHEUS\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"policycontroller\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .policycontroller(FeatureFleetDefaultMemberConfigPolicycontrollerArgs.builder()\n .policyControllerHubConfig(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs.builder()\n .installSpec(\"INSTALL_SPEC_SUSPENDED\")\n .policyContent(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs.builder()\n .bundles( \n FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs.builder()\n .bundle(\"pci-dss-v3.2.1\")\n .exemptedNamespaces( \n \"baz\",\n \"bar\")\n .build(),\n FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs.builder()\n .bundle(\"nist-sp-800-190\")\n .exemptedNamespaces()\n .build())\n .templateLibrary(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs.builder()\n .installation(\"ALL\")\n .build())\n .build())\n .constraintViolationLimit(50)\n .referentialRulesEnabled(true)\n .logDeniesEnabled(true)\n .mutationEnabled(true)\n .deploymentConfigs( \n FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs.builder()\n .component(\"admission\")\n .replicaCount(2)\n .podAffinity(\"ANTI_AFFINITY\")\n .build(),\n FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs.builder()\n .component(\"audit\")\n .containerResources(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesArgs.builder()\n .limits(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesLimitsArgs.builder()\n .memory(\"1Gi\")\n .cpu(\"1.5\")\n .build())\n .requests(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesRequestsArgs.builder()\n .memory(\"500Mi\")\n .cpu(\"150m\")\n .build())\n .build())\n .podTolerations(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs.builder()\n .key(\"key1\")\n .operator(\"Equal\")\n .value(\"value1\")\n .effect(\"NoSchedule\")\n .build())\n .build())\n .monitoring(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs.builder()\n .backends(\"PROMETHEUS\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: policycontroller\n location: global\n fleetDefaultMemberConfig:\n policycontroller:\n policyControllerHubConfig:\n installSpec: INSTALL_SPEC_SUSPENDED\n policyContent:\n bundles:\n - bundle: pci-dss-v3.2.1\n exemptedNamespaces:\n - baz\n - bar\n - bundle: nist-sp-800-190\n exemptedNamespaces: []\n templateLibrary:\n installation: ALL\n constraintViolationLimit: 50\n referentialRulesEnabled: true\n logDeniesEnabled: true\n mutationEnabled: true\n deploymentConfigs:\n - component: admission\n replicaCount: 2\n podAffinity: ANTI_AFFINITY\n - component: audit\n containerResources:\n limits:\n memory: 1Gi\n cpu: '1.5'\n requests:\n memory: 500Mi\n cpu: 150m\n podTolerations:\n - key: key1\n operator: Equal\n value: value1\n effect: NoSchedule\n monitoring:\n backends:\n - PROMETHEUS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Policycontroller Minimal\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"policycontroller\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n policycontroller: {\n policyControllerHubConfig: {\n installSpec: \"INSTALL_SPEC_ENABLED\",\n policyContent: {},\n constraintViolationLimit: 50,\n referentialRulesEnabled: true,\n logDeniesEnabled: true,\n mutationEnabled: true,\n deploymentConfigs: [{\n component: \"admission\",\n }],\n monitoring: {},\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"policycontroller\",\n location=\"global\",\n fleet_default_member_config={\n \"policycontroller\": {\n \"policyControllerHubConfig\": {\n \"installSpec\": \"INSTALL_SPEC_ENABLED\",\n \"policyContent\": {},\n \"constraintViolationLimit\": 50,\n \"referentialRulesEnabled\": True,\n \"logDeniesEnabled\": True,\n \"mutationEnabled\": True,\n \"deploymentConfigs\": [{\n \"component\": \"admission\",\n }],\n \"monitoring\": {},\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"policycontroller\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Policycontroller = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs\n {\n PolicyControllerHubConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs\n {\n InstallSpec = \"INSTALL_SPEC_ENABLED\",\n PolicyContent = null,\n ConstraintViolationLimit = 50,\n ReferentialRulesEnabled = true,\n LogDeniesEnabled = true,\n MutationEnabled = true,\n DeploymentConfigs = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs\n {\n Component = \"admission\",\n },\n },\n Monitoring = null,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"policycontroller\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tPolicycontroller: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerArgs{\n\t\t\t\t\tPolicyControllerHubConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs{\n\t\t\t\t\t\tInstallSpec: pulumi.String(\"INSTALL_SPEC_ENABLED\"),\n\t\t\t\t\t\tPolicyContent: nil,\n\t\t\t\t\t\tConstraintViolationLimit: pulumi.Int(50),\n\t\t\t\t\t\tReferentialRulesEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tLogDeniesEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tMutationEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tDeploymentConfigs: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArray{\n\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs{\n\t\t\t\t\t\t\t\tComponent: pulumi.String(\"admission\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMonitoring: nil,\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"policycontroller\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .policycontroller(FeatureFleetDefaultMemberConfigPolicycontrollerArgs.builder()\n .policyControllerHubConfig(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs.builder()\n .installSpec(\"INSTALL_SPEC_ENABLED\")\n .policyContent()\n .constraintViolationLimit(50)\n .referentialRulesEnabled(true)\n .logDeniesEnabled(true)\n .mutationEnabled(true)\n .deploymentConfigs(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs.builder()\n .component(\"admission\")\n .build())\n .monitoring()\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: policycontroller\n location: global\n fleetDefaultMemberConfig:\n policycontroller:\n policyControllerHubConfig:\n installSpec: INSTALL_SPEC_ENABLED\n policyContent: {}\n constraintViolationLimit: 50\n referentialRulesEnabled: true\n logDeniesEnabled: true\n mutationEnabled: true\n deploymentConfigs:\n - component: admission\n monitoring: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkehub Feature Clusterupgrade\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"clusterupgrade\",\n location: \"global\",\n spec: {\n clusterupgrade: {\n upstreamFleets: [],\n postConditions: {\n soaking: \"60s\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"clusterupgrade\",\n location=\"global\",\n spec={\n \"clusterupgrade\": {\n \"upstreamFleets\": [],\n \"postConditions\": {\n \"soaking\": \"60s\",\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"clusterupgrade\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Clusterupgrade = new Gcp.GkeHub.Inputs.FeatureSpecClusterupgradeArgs\n {\n UpstreamFleets = new() { },\n PostConditions = new Gcp.GkeHub.Inputs.FeatureSpecClusterupgradePostConditionsArgs\n {\n Soaking = \"60s\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"clusterupgrade\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tClusterupgrade: \u0026gkehub.FeatureSpecClusterupgradeArgs{\n\t\t\t\t\tUpstreamFleets: pulumi.StringArray{},\n\t\t\t\t\tPostConditions: \u0026gkehub.FeatureSpecClusterupgradePostConditionsArgs{\n\t\t\t\t\t\tSoaking: pulumi.String(\"60s\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecClusterupgradeArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecClusterupgradePostConditionsArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"clusterupgrade\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .clusterupgrade(FeatureSpecClusterupgradeArgs.builder()\n .upstreamFleets()\n .postConditions(FeatureSpecClusterupgradePostConditionsArgs.builder()\n .soaking(\"60s\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: clusterupgrade\n location: global\n spec:\n clusterupgrade:\n upstreamFleets: []\n postConditions:\n soaking: 60s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeature can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/features/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Feature can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkehub/feature:Feature default projects/{{project}}/locations/{{location}}/features/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/feature:Feature default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/feature:Feature default {{location}}/{{name}}\n```\n\n", + "description": "Feature represents the settings and status of any Hub Feature.\n\n\nTo get more information about Feature, see:\n\n* [API documentation](https://cloud.google.com/anthos/fleet-management/docs/reference/rest/v1/projects.locations.features)\n* How-to Guides\n * [Registering a Cluster](https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster#register_cluster)\n\n## Example Usage\n\n### Gkehub Feature Multi Cluster Ingress\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster = new gcp.container.Cluster(\"cluster\", {\n name: \"my-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"my-membership\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${cluster.id}`,\n },\n },\n description: \"Membership\",\n});\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"multiclusteringress\",\n location: \"global\",\n spec: {\n multiclusteringress: {\n configMembership: membership.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster = gcp.container.Cluster(\"cluster\",\n name=\"my-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1)\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"my-membership\",\n endpoint={\n \"gke_cluster\": {\n \"resource_link\": cluster.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n },\n description=\"Membership\")\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"multiclusteringress\",\n location=\"global\",\n spec={\n \"multiclusteringress\": {\n \"config_membership\": membership.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 cluster = new Gcp.Container.Cluster(\"cluster\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"my-membership\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = cluster.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n Description = \"Membership\",\n });\n\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"multiclusteringress\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Multiclusteringress = new Gcp.GkeHub.Inputs.FeatureSpecMulticlusteringressArgs\n {\n ConfigMembership = membership.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := container.NewCluster(ctx, \"cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"my-membership\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: cluster.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"Membership\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"multiclusteringress\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tMulticlusteringress: \u0026gkehub.FeatureSpecMulticlusteringressArgs{\n\t\t\t\t\tConfigMembership: membership.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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecMulticlusteringressArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"my-membership\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(cluster.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .description(\"Membership\")\n .build());\n\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"multiclusteringress\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .multiclusteringress(FeatureSpecMulticlusteringressArgs.builder()\n .configMembership(membership.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:container:Cluster\n properties:\n name: my-cluster\n location: us-central1-a\n initialNodeCount: 1\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: my-membership\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${cluster.id}\n description: Membership\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: multiclusteringress\n location: global\n spec:\n multiclusteringress:\n configMembership: ${membership.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkehub Feature Multi Cluster Service Discovery\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"multiclusterservicediscovery\",\n location: \"global\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"multiclusterservicediscovery\",\n location=\"global\",\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"multiclusterservicediscovery\",\n Location = \"global\",\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/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"multiclusterservicediscovery\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"multiclusterservicediscovery\")\n .location(\"global\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: multiclusterservicediscovery\n location: global\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkehub Feature Anthos Service Mesh\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"servicemesh\",\n location: \"global\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"servicemesh\",\n location=\"global\")\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"servicemesh\",\n Location = \"global\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"servicemesh\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"servicemesh\")\n .location(\"global\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: servicemesh\n location: global\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Observability For Default Logs With Copy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"fleetobservability\",\n location: \"global\",\n spec: {\n fleetobservability: {\n loggingConfig: {\n defaultConfig: {\n mode: \"COPY\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"fleetobservability\",\n location=\"global\",\n spec={\n \"fleetobservability\": {\n \"logging_config\": {\n \"default_config\": {\n \"mode\": \"COPY\",\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"fleetobservability\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Fleetobservability = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityArgs\n {\n LoggingConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigArgs\n {\n DefaultConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs\n {\n Mode = \"COPY\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"fleetobservability\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tFleetobservability: \u0026gkehub.FeatureSpecFleetobservabilityArgs{\n\t\t\t\t\tLoggingConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigArgs{\n\t\t\t\t\t\tDefaultConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs{\n\t\t\t\t\t\t\tMode: pulumi.String(\"COPY\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"fleetobservability\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .fleetobservability(FeatureSpecFleetobservabilityArgs.builder()\n .loggingConfig(FeatureSpecFleetobservabilityLoggingConfigArgs.builder()\n .defaultConfig(FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs.builder()\n .mode(\"COPY\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: fleetobservability\n location: global\n spec:\n fleetobservability:\n loggingConfig:\n defaultConfig:\n mode: COPY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Observability For Scope Logs With Move\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"fleetobservability\",\n location: \"global\",\n spec: {\n fleetobservability: {\n loggingConfig: {\n fleetScopeLogsConfig: {\n mode: \"MOVE\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"fleetobservability\",\n location=\"global\",\n spec={\n \"fleetobservability\": {\n \"logging_config\": {\n \"fleet_scope_logs_config\": {\n \"mode\": \"MOVE\",\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"fleetobservability\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Fleetobservability = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityArgs\n {\n LoggingConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigArgs\n {\n FleetScopeLogsConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs\n {\n Mode = \"MOVE\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"fleetobservability\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tFleetobservability: \u0026gkehub.FeatureSpecFleetobservabilityArgs{\n\t\t\t\t\tLoggingConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigArgs{\n\t\t\t\t\t\tFleetScopeLogsConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs{\n\t\t\t\t\t\t\tMode: pulumi.String(\"MOVE\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"fleetobservability\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .fleetobservability(FeatureSpecFleetobservabilityArgs.builder()\n .loggingConfig(FeatureSpecFleetobservabilityLoggingConfigArgs.builder()\n .fleetScopeLogsConfig(FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs.builder()\n .mode(\"MOVE\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: fleetobservability\n location: global\n spec:\n fleetobservability:\n loggingConfig:\n fleetScopeLogsConfig:\n mode: MOVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Observability For Both Default And Scope Logs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"fleetobservability\",\n location: \"global\",\n spec: {\n fleetobservability: {\n loggingConfig: {\n defaultConfig: {\n mode: \"COPY\",\n },\n fleetScopeLogsConfig: {\n mode: \"MOVE\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"fleetobservability\",\n location=\"global\",\n spec={\n \"fleetobservability\": {\n \"logging_config\": {\n \"default_config\": {\n \"mode\": \"COPY\",\n },\n \"fleet_scope_logs_config\": {\n \"mode\": \"MOVE\",\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"fleetobservability\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Fleetobservability = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityArgs\n {\n LoggingConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigArgs\n {\n DefaultConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs\n {\n Mode = \"COPY\",\n },\n FleetScopeLogsConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs\n {\n Mode = \"MOVE\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"fleetobservability\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tFleetobservability: \u0026gkehub.FeatureSpecFleetobservabilityArgs{\n\t\t\t\t\tLoggingConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigArgs{\n\t\t\t\t\t\tDefaultConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs{\n\t\t\t\t\t\t\tMode: pulumi.String(\"COPY\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFleetScopeLogsConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs{\n\t\t\t\t\t\t\tMode: pulumi.String(\"MOVE\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"fleetobservability\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .fleetobservability(FeatureSpecFleetobservabilityArgs.builder()\n .loggingConfig(FeatureSpecFleetobservabilityLoggingConfigArgs.builder()\n .defaultConfig(FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs.builder()\n .mode(\"COPY\")\n .build())\n .fleetScopeLogsConfig(FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs.builder()\n .mode(\"MOVE\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: fleetobservability\n location: global\n spec:\n fleetobservability:\n loggingConfig:\n defaultConfig:\n mode: COPY\n fleetScopeLogsConfig:\n mode: MOVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Service Mesh\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"servicemesh\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n mesh: {\n management: \"MANAGEMENT_AUTOMATIC\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"servicemesh\",\n location=\"global\",\n fleet_default_member_config={\n \"mesh\": {\n \"management\": \"MANAGEMENT_AUTOMATIC\",\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"servicemesh\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Mesh = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigMeshArgs\n {\n Management = \"MANAGEMENT_AUTOMATIC\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"servicemesh\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tMesh: \u0026gkehub.FeatureFleetDefaultMemberConfigMeshArgs{\n\t\t\t\t\tManagement: pulumi.String(\"MANAGEMENT_AUTOMATIC\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigMeshArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"servicemesh\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .mesh(FeatureFleetDefaultMemberConfigMeshArgs.builder()\n .management(\"MANAGEMENT_AUTOMATIC\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: servicemesh\n location: global\n fleetDefaultMemberConfig:\n mesh:\n management: MANAGEMENT_AUTOMATIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Configmanagement\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"configmanagement\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n configmanagement: {\n configSync: {\n git: {\n syncRepo: \"https://github.com/hashicorp/terraform\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"configmanagement\",\n location=\"global\",\n fleet_default_member_config={\n \"configmanagement\": {\n \"config_sync\": {\n \"git\": {\n \"sync_repo\": \"https://github.com/hashicorp/terraform\",\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"configmanagement\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Configmanagement = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigConfigmanagementArgs\n {\n ConfigSync = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs\n {\n Git = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs\n {\n SyncRepo = \"https://github.com/hashicorp/terraform\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"configmanagement\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tConfigmanagement: \u0026gkehub.FeatureFleetDefaultMemberConfigConfigmanagementArgs{\n\t\t\t\t\tConfigSync: \u0026gkehub.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs{\n\t\t\t\t\t\tGit: \u0026gkehub.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs{\n\t\t\t\t\t\t\tSyncRepo: pulumi.String(\"https://github.com/hashicorp/terraform\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigConfigmanagementArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"configmanagement\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .configmanagement(FeatureFleetDefaultMemberConfigConfigmanagementArgs.builder()\n .configSync(FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs.builder()\n .git(FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs.builder()\n .syncRepo(\"https://github.com/hashicorp/terraform\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: configmanagement\n location: global\n fleetDefaultMemberConfig:\n configmanagement:\n configSync:\n git:\n syncRepo: https://github.com/hashicorp/terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Policycontroller\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"policycontroller\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n policycontroller: {\n policyControllerHubConfig: {\n installSpec: \"INSTALL_SPEC_ENABLED\",\n exemptableNamespaces: [\"foo\"],\n policyContent: {\n bundles: [{\n bundle: \"policy-essentials-v2022\",\n exemptedNamespaces: [\n \"foo\",\n \"bar\",\n ],\n }],\n templateLibrary: {\n installation: \"ALL\",\n },\n },\n auditIntervalSeconds: 30,\n referentialRulesEnabled: true,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"policycontroller\",\n location=\"global\",\n fleet_default_member_config={\n \"policycontroller\": {\n \"policy_controller_hub_config\": {\n \"install_spec\": \"INSTALL_SPEC_ENABLED\",\n \"exemptable_namespaces\": [\"foo\"],\n \"policy_content\": {\n \"bundles\": [{\n \"bundle\": \"policy-essentials-v2022\",\n \"exempted_namespaces\": [\n \"foo\",\n \"bar\",\n ],\n }],\n \"template_library\": {\n \"installation\": \"ALL\",\n },\n },\n \"audit_interval_seconds\": 30,\n \"referential_rules_enabled\": True,\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"policycontroller\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Policycontroller = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs\n {\n PolicyControllerHubConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs\n {\n InstallSpec = \"INSTALL_SPEC_ENABLED\",\n ExemptableNamespaces = new[]\n {\n \"foo\",\n },\n PolicyContent = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs\n {\n Bundles = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs\n {\n Bundle = \"policy-essentials-v2022\",\n ExemptedNamespaces = new[]\n {\n \"foo\",\n \"bar\",\n },\n },\n },\n TemplateLibrary = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs\n {\n Installation = \"ALL\",\n },\n },\n AuditIntervalSeconds = 30,\n ReferentialRulesEnabled = true,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"policycontroller\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tPolicycontroller: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerArgs{\n\t\t\t\t\tPolicyControllerHubConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs{\n\t\t\t\t\t\tInstallSpec: pulumi.String(\"INSTALL_SPEC_ENABLED\"),\n\t\t\t\t\t\tExemptableNamespaces: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPolicyContent: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs{\n\t\t\t\t\t\t\tBundles: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArray{\n\t\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs{\n\t\t\t\t\t\t\t\t\tBundle: pulumi.String(\"policy-essentials-v2022\"),\n\t\t\t\t\t\t\t\t\tExemptedNamespaces: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTemplateLibrary: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs{\n\t\t\t\t\t\t\t\tInstallation: pulumi.String(\"ALL\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAuditIntervalSeconds: pulumi.Int(30),\n\t\t\t\t\t\tReferentialRulesEnabled: pulumi.Bool(true),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"policycontroller\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .policycontroller(FeatureFleetDefaultMemberConfigPolicycontrollerArgs.builder()\n .policyControllerHubConfig(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs.builder()\n .installSpec(\"INSTALL_SPEC_ENABLED\")\n .exemptableNamespaces(\"foo\")\n .policyContent(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs.builder()\n .bundles(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs.builder()\n .bundle(\"policy-essentials-v2022\")\n .exemptedNamespaces( \n \"foo\",\n \"bar\")\n .build())\n .templateLibrary(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs.builder()\n .installation(\"ALL\")\n .build())\n .build())\n .auditIntervalSeconds(30)\n .referentialRulesEnabled(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: policycontroller\n location: global\n fleetDefaultMemberConfig:\n policycontroller:\n policyControllerHubConfig:\n installSpec: INSTALL_SPEC_ENABLED\n exemptableNamespaces:\n - foo\n policyContent:\n bundles:\n - bundle: policy-essentials-v2022\n exemptedNamespaces:\n - foo\n - bar\n templateLibrary:\n installation: ALL\n auditIntervalSeconds: 30\n referentialRulesEnabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Policycontroller Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"policycontroller\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n policycontroller: {\n policyControllerHubConfig: {\n installSpec: \"INSTALL_SPEC_SUSPENDED\",\n policyContent: {\n bundles: [\n {\n bundle: \"pci-dss-v3.2.1\",\n exemptedNamespaces: [\n \"baz\",\n \"bar\",\n ],\n },\n {\n bundle: \"nist-sp-800-190\",\n exemptedNamespaces: [],\n },\n ],\n templateLibrary: {\n installation: \"ALL\",\n },\n },\n constraintViolationLimit: 50,\n referentialRulesEnabled: true,\n logDeniesEnabled: true,\n mutationEnabled: true,\n deploymentConfigs: [\n {\n component: \"admission\",\n replicaCount: 2,\n podAffinity: \"ANTI_AFFINITY\",\n },\n {\n component: \"audit\",\n containerResources: {\n limits: {\n memory: \"1Gi\",\n cpu: \"1.5\",\n },\n requests: {\n memory: \"500Mi\",\n cpu: \"150m\",\n },\n },\n podTolerations: [{\n key: \"key1\",\n operator: \"Equal\",\n value: \"value1\",\n effect: \"NoSchedule\",\n }],\n },\n ],\n monitoring: {\n backends: [\"PROMETHEUS\"],\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"policycontroller\",\n location=\"global\",\n fleet_default_member_config={\n \"policycontroller\": {\n \"policy_controller_hub_config\": {\n \"install_spec\": \"INSTALL_SPEC_SUSPENDED\",\n \"policy_content\": {\n \"bundles\": [\n {\n \"bundle\": \"pci-dss-v3.2.1\",\n \"exempted_namespaces\": [\n \"baz\",\n \"bar\",\n ],\n },\n {\n \"bundle\": \"nist-sp-800-190\",\n \"exempted_namespaces\": [],\n },\n ],\n \"template_library\": {\n \"installation\": \"ALL\",\n },\n },\n \"constraint_violation_limit\": 50,\n \"referential_rules_enabled\": True,\n \"log_denies_enabled\": True,\n \"mutation_enabled\": True,\n \"deployment_configs\": [\n {\n \"component\": \"admission\",\n \"replica_count\": 2,\n \"pod_affinity\": \"ANTI_AFFINITY\",\n },\n {\n \"component\": \"audit\",\n \"container_resources\": {\n \"limits\": {\n \"memory\": \"1Gi\",\n \"cpu\": \"1.5\",\n },\n \"requests\": {\n \"memory\": \"500Mi\",\n \"cpu\": \"150m\",\n },\n },\n \"pod_tolerations\": [{\n \"key\": \"key1\",\n \"operator\": \"Equal\",\n \"value\": \"value1\",\n \"effect\": \"NoSchedule\",\n }],\n },\n ],\n \"monitoring\": {\n \"backends\": [\"PROMETHEUS\"],\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"policycontroller\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Policycontroller = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs\n {\n PolicyControllerHubConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs\n {\n InstallSpec = \"INSTALL_SPEC_SUSPENDED\",\n PolicyContent = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs\n {\n Bundles = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs\n {\n Bundle = \"pci-dss-v3.2.1\",\n ExemptedNamespaces = new[]\n {\n \"baz\",\n \"bar\",\n },\n },\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs\n {\n Bundle = \"nist-sp-800-190\",\n ExemptedNamespaces = new() { },\n },\n },\n TemplateLibrary = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs\n {\n Installation = \"ALL\",\n },\n },\n ConstraintViolationLimit = 50,\n ReferentialRulesEnabled = true,\n LogDeniesEnabled = true,\n MutationEnabled = true,\n DeploymentConfigs = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs\n {\n Component = \"admission\",\n ReplicaCount = 2,\n PodAffinity = \"ANTI_AFFINITY\",\n },\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs\n {\n Component = \"audit\",\n ContainerResources = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesArgs\n {\n Limits = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesLimitsArgs\n {\n Memory = \"1Gi\",\n Cpu = \"1.5\",\n },\n Requests = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesRequestsArgs\n {\n Memory = \"500Mi\",\n Cpu = \"150m\",\n },\n },\n PodTolerations = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs\n {\n Key = \"key1\",\n Operator = \"Equal\",\n Value = \"value1\",\n Effect = \"NoSchedule\",\n },\n },\n },\n },\n Monitoring = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs\n {\n Backends = new[]\n {\n \"PROMETHEUS\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"policycontroller\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tPolicycontroller: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerArgs{\n\t\t\t\t\tPolicyControllerHubConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs{\n\t\t\t\t\t\tInstallSpec: pulumi.String(\"INSTALL_SPEC_SUSPENDED\"),\n\t\t\t\t\t\tPolicyContent: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs{\n\t\t\t\t\t\t\tBundles: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArray{\n\t\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs{\n\t\t\t\t\t\t\t\t\tBundle: pulumi.String(\"pci-dss-v3.2.1\"),\n\t\t\t\t\t\t\t\t\tExemptedNamespaces: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"baz\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs{\n\t\t\t\t\t\t\t\t\tBundle: pulumi.String(\"nist-sp-800-190\"),\n\t\t\t\t\t\t\t\t\tExemptedNamespaces: pulumi.StringArray{},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTemplateLibrary: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs{\n\t\t\t\t\t\t\t\tInstallation: pulumi.String(\"ALL\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConstraintViolationLimit: pulumi.Int(50),\n\t\t\t\t\t\tReferentialRulesEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tLogDeniesEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tMutationEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tDeploymentConfigs: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArray{\n\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs{\n\t\t\t\t\t\t\t\tComponent: pulumi.String(\"admission\"),\n\t\t\t\t\t\t\t\tReplicaCount: pulumi.Int(2),\n\t\t\t\t\t\t\t\tPodAffinity: pulumi.String(\"ANTI_AFFINITY\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs{\n\t\t\t\t\t\t\t\tComponent: pulumi.String(\"audit\"),\n\t\t\t\t\t\t\t\tContainerResources: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesArgs{\n\t\t\t\t\t\t\t\t\tLimits: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesLimitsArgs{\n\t\t\t\t\t\t\t\t\t\tMemory: pulumi.String(\"1Gi\"),\n\t\t\t\t\t\t\t\t\t\tCpu: pulumi.String(\"1.5\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRequests: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesRequestsArgs{\n\t\t\t\t\t\t\t\t\t\tMemory: pulumi.String(\"500Mi\"),\n\t\t\t\t\t\t\t\t\t\tCpu: pulumi.String(\"150m\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tPodTolerations: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArray{\n\t\t\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs{\n\t\t\t\t\t\t\t\t\t\tKey: pulumi.String(\"key1\"),\n\t\t\t\t\t\t\t\t\t\tOperator: pulumi.String(\"Equal\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"value1\"),\n\t\t\t\t\t\t\t\t\t\tEffect: pulumi.String(\"NoSchedule\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMonitoring: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs{\n\t\t\t\t\t\t\tBackends: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"PROMETHEUS\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"policycontroller\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .policycontroller(FeatureFleetDefaultMemberConfigPolicycontrollerArgs.builder()\n .policyControllerHubConfig(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs.builder()\n .installSpec(\"INSTALL_SPEC_SUSPENDED\")\n .policyContent(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs.builder()\n .bundles( \n FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs.builder()\n .bundle(\"pci-dss-v3.2.1\")\n .exemptedNamespaces( \n \"baz\",\n \"bar\")\n .build(),\n FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs.builder()\n .bundle(\"nist-sp-800-190\")\n .exemptedNamespaces()\n .build())\n .templateLibrary(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs.builder()\n .installation(\"ALL\")\n .build())\n .build())\n .constraintViolationLimit(50)\n .referentialRulesEnabled(true)\n .logDeniesEnabled(true)\n .mutationEnabled(true)\n .deploymentConfigs( \n FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs.builder()\n .component(\"admission\")\n .replicaCount(2)\n .podAffinity(\"ANTI_AFFINITY\")\n .build(),\n FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs.builder()\n .component(\"audit\")\n .containerResources(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesArgs.builder()\n .limits(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesLimitsArgs.builder()\n .memory(\"1Gi\")\n .cpu(\"1.5\")\n .build())\n .requests(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesRequestsArgs.builder()\n .memory(\"500Mi\")\n .cpu(\"150m\")\n .build())\n .build())\n .podTolerations(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs.builder()\n .key(\"key1\")\n .operator(\"Equal\")\n .value(\"value1\")\n .effect(\"NoSchedule\")\n .build())\n .build())\n .monitoring(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs.builder()\n .backends(\"PROMETHEUS\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: policycontroller\n location: global\n fleetDefaultMemberConfig:\n policycontroller:\n policyControllerHubConfig:\n installSpec: INSTALL_SPEC_SUSPENDED\n policyContent:\n bundles:\n - bundle: pci-dss-v3.2.1\n exemptedNamespaces:\n - baz\n - bar\n - bundle: nist-sp-800-190\n exemptedNamespaces: []\n templateLibrary:\n installation: ALL\n constraintViolationLimit: 50\n referentialRulesEnabled: true\n logDeniesEnabled: true\n mutationEnabled: true\n deploymentConfigs:\n - component: admission\n replicaCount: 2\n podAffinity: ANTI_AFFINITY\n - component: audit\n containerResources:\n limits:\n memory: 1Gi\n cpu: '1.5'\n requests:\n memory: 500Mi\n cpu: 150m\n podTolerations:\n - key: key1\n operator: Equal\n value: value1\n effect: NoSchedule\n monitoring:\n backends:\n - PROMETHEUS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Policycontroller Minimal\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"policycontroller\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n policycontroller: {\n policyControllerHubConfig: {\n installSpec: \"INSTALL_SPEC_ENABLED\",\n policyContent: {},\n constraintViolationLimit: 50,\n referentialRulesEnabled: true,\n logDeniesEnabled: true,\n mutationEnabled: true,\n deploymentConfigs: [{\n component: \"admission\",\n }],\n monitoring: {},\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"policycontroller\",\n location=\"global\",\n fleet_default_member_config={\n \"policycontroller\": {\n \"policy_controller_hub_config\": {\n \"install_spec\": \"INSTALL_SPEC_ENABLED\",\n \"policy_content\": {},\n \"constraint_violation_limit\": 50,\n \"referential_rules_enabled\": True,\n \"log_denies_enabled\": True,\n \"mutation_enabled\": True,\n \"deployment_configs\": [{\n \"component\": \"admission\",\n }],\n \"monitoring\": {},\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"policycontroller\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Policycontroller = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs\n {\n PolicyControllerHubConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs\n {\n InstallSpec = \"INSTALL_SPEC_ENABLED\",\n PolicyContent = null,\n ConstraintViolationLimit = 50,\n ReferentialRulesEnabled = true,\n LogDeniesEnabled = true,\n MutationEnabled = true,\n DeploymentConfigs = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs\n {\n Component = \"admission\",\n },\n },\n Monitoring = null,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"policycontroller\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tPolicycontroller: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerArgs{\n\t\t\t\t\tPolicyControllerHubConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs{\n\t\t\t\t\t\tInstallSpec: pulumi.String(\"INSTALL_SPEC_ENABLED\"),\n\t\t\t\t\t\tPolicyContent: nil,\n\t\t\t\t\t\tConstraintViolationLimit: pulumi.Int(50),\n\t\t\t\t\t\tReferentialRulesEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tLogDeniesEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tMutationEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tDeploymentConfigs: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArray{\n\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs{\n\t\t\t\t\t\t\t\tComponent: pulumi.String(\"admission\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMonitoring: nil,\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"policycontroller\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .policycontroller(FeatureFleetDefaultMemberConfigPolicycontrollerArgs.builder()\n .policyControllerHubConfig(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs.builder()\n .installSpec(\"INSTALL_SPEC_ENABLED\")\n .policyContent()\n .constraintViolationLimit(50)\n .referentialRulesEnabled(true)\n .logDeniesEnabled(true)\n .mutationEnabled(true)\n .deploymentConfigs(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs.builder()\n .component(\"admission\")\n .build())\n .monitoring()\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: policycontroller\n location: global\n fleetDefaultMemberConfig:\n policycontroller:\n policyControllerHubConfig:\n installSpec: INSTALL_SPEC_ENABLED\n policyContent: {}\n constraintViolationLimit: 50\n referentialRulesEnabled: true\n logDeniesEnabled: true\n mutationEnabled: true\n deploymentConfigs:\n - component: admission\n monitoring: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkehub Feature Clusterupgrade\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"clusterupgrade\",\n location: \"global\",\n spec: {\n clusterupgrade: {\n upstreamFleets: [],\n postConditions: {\n soaking: \"60s\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"clusterupgrade\",\n location=\"global\",\n spec={\n \"clusterupgrade\": {\n \"upstream_fleets\": [],\n \"post_conditions\": {\n \"soaking\": \"60s\",\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"clusterupgrade\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Clusterupgrade = new Gcp.GkeHub.Inputs.FeatureSpecClusterupgradeArgs\n {\n UpstreamFleets = new() { },\n PostConditions = new Gcp.GkeHub.Inputs.FeatureSpecClusterupgradePostConditionsArgs\n {\n Soaking = \"60s\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"clusterupgrade\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tClusterupgrade: \u0026gkehub.FeatureSpecClusterupgradeArgs{\n\t\t\t\t\tUpstreamFleets: pulumi.StringArray{},\n\t\t\t\t\tPostConditions: \u0026gkehub.FeatureSpecClusterupgradePostConditionsArgs{\n\t\t\t\t\t\tSoaking: pulumi.String(\"60s\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecClusterupgradeArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecClusterupgradePostConditionsArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"clusterupgrade\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .clusterupgrade(FeatureSpecClusterupgradeArgs.builder()\n .upstreamFleets()\n .postConditions(FeatureSpecClusterupgradePostConditionsArgs.builder()\n .soaking(\"60s\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: clusterupgrade\n location: global\n spec:\n clusterupgrade:\n upstreamFleets: []\n postConditions:\n soaking: 60s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeature can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/features/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Feature can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkehub/feature:Feature default projects/{{project}}/locations/{{location}}/features/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/feature:Feature default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/feature:Feature default {{location}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -195719,7 +195719,7 @@ } }, "gcp:gkehub/featureMembership:FeatureMembership": { - "description": "Contains information about a GKEHub Feature Memberships. Feature Memberships configure GKEHub Features that apply to specific memberships rather than the project as a whole. The google_gke_hub is the Fleet API.\n\n## Example Usage\n\n### Config Management\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster = new gcp.container.Cluster(\"cluster\", {\n name: \"my-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"my-membership\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${cluster.id}`,\n },\n },\n});\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"configmanagement\",\n location: \"global\",\n labels: {\n foo: \"bar\",\n },\n});\nconst featureMember = new gcp.gkehub.FeatureMembership(\"feature_member\", {\n location: \"global\",\n feature: feature.name,\n membership: membership.membershipId,\n configmanagement: {\n version: \"1.6.2\",\n configSync: {\n git: {\n syncRepo: \"https://github.com/hashicorp/terraform\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster = gcp.container.Cluster(\"cluster\",\n name=\"my-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1)\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"my-membership\",\n endpoint={\n \"gkeCluster\": {\n \"resourceLink\": cluster.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n })\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"configmanagement\",\n location=\"global\",\n labels={\n \"foo\": \"bar\",\n })\nfeature_member = gcp.gkehub.FeatureMembership(\"feature_member\",\n location=\"global\",\n feature=feature.name,\n membership=membership.membership_id,\n configmanagement={\n \"version\": \"1.6.2\",\n \"configSync\": {\n \"git\": {\n \"syncRepo\": \"https://github.com/hashicorp/terraform\",\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 cluster = new Gcp.Container.Cluster(\"cluster\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"my-membership\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = cluster.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n });\n\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"configmanagement\",\n Location = \"global\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var featureMember = new Gcp.GkeHub.FeatureMembership(\"feature_member\", new()\n {\n Location = \"global\",\n Feature = feature.Name,\n Membership = membership.MembershipId,\n Configmanagement = new Gcp.GkeHub.Inputs.FeatureMembershipConfigmanagementArgs\n {\n Version = \"1.6.2\",\n ConfigSync = new Gcp.GkeHub.Inputs.FeatureMembershipConfigmanagementConfigSyncArgs\n {\n Git = new Gcp.GkeHub.Inputs.FeatureMembershipConfigmanagementConfigSyncGitArgs\n {\n SyncRepo = \"https://github.com/hashicorp/terraform\",\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/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := container.NewCluster(ctx, \"cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"my-membership\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: cluster.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), 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\tfeature, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"configmanagement\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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\t_, err = gkehub.NewFeatureMembership(ctx, \"feature_member\", \u0026gkehub.FeatureMembershipArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFeature: feature.Name,\n\t\t\tMembership: membership.MembershipId,\n\t\t\tConfigmanagement: \u0026gkehub.FeatureMembershipConfigmanagementArgs{\n\t\t\t\tVersion: pulumi.String(\"1.6.2\"),\n\t\t\t\tConfigSync: \u0026gkehub.FeatureMembershipConfigmanagementConfigSyncArgs{\n\t\t\t\t\tGit: \u0026gkehub.FeatureMembershipConfigmanagementConfigSyncGitArgs{\n\t\t\t\t\t\tSyncRepo: pulumi.String(\"https://github.com/hashicorp/terraform\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.FeatureMembership;\nimport com.pulumi.gcp.gkehub.FeatureMembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipConfigmanagementArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipConfigmanagementConfigSyncArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipConfigmanagementConfigSyncGitArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"my-membership\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(cluster.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build());\n\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"configmanagement\")\n .location(\"global\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var featureMember = new FeatureMembership(\"featureMember\", FeatureMembershipArgs.builder()\n .location(\"global\")\n .feature(feature.name())\n .membership(membership.membershipId())\n .configmanagement(FeatureMembershipConfigmanagementArgs.builder()\n .version(\"1.6.2\")\n .configSync(FeatureMembershipConfigmanagementConfigSyncArgs.builder()\n .git(FeatureMembershipConfigmanagementConfigSyncGitArgs.builder()\n .syncRepo(\"https://github.com/hashicorp/terraform\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:container:Cluster\n properties:\n name: my-cluster\n location: us-central1-a\n initialNodeCount: 1\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: my-membership\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${cluster.id}\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: configmanagement\n location: global\n labels:\n foo: bar\n featureMember:\n type: gcp:gkehub:FeatureMembership\n name: feature_member\n properties:\n location: global\n feature: ${feature.name}\n membership: ${membership.membershipId}\n configmanagement:\n version: 1.6.2\n configSync:\n git:\n syncRepo: https://github.com/hashicorp/terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Config Management With OCI\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster = new gcp.container.Cluster(\"cluster\", {\n name: \"my-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"my-membership\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${cluster.id}`,\n },\n },\n});\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"configmanagement\",\n location: \"global\",\n labels: {\n foo: \"bar\",\n },\n});\nconst featureMember = new gcp.gkehub.FeatureMembership(\"feature_member\", {\n location: \"global\",\n feature: feature.name,\n membership: membership.membershipId,\n configmanagement: {\n version: \"1.15.1\",\n configSync: {\n oci: {\n syncRepo: \"us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest\",\n policyDir: \"config-connector\",\n syncWaitSecs: \"20\",\n secretType: \"gcpserviceaccount\",\n gcpServiceAccountEmail: \"sa@project-id.iam.gserviceaccount.com\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster = gcp.container.Cluster(\"cluster\",\n name=\"my-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1)\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"my-membership\",\n endpoint={\n \"gkeCluster\": {\n \"resourceLink\": cluster.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n })\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"configmanagement\",\n location=\"global\",\n labels={\n \"foo\": \"bar\",\n })\nfeature_member = gcp.gkehub.FeatureMembership(\"feature_member\",\n location=\"global\",\n feature=feature.name,\n membership=membership.membership_id,\n configmanagement={\n \"version\": \"1.15.1\",\n \"configSync\": {\n \"oci\": {\n \"syncRepo\": \"us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest\",\n \"policyDir\": \"config-connector\",\n \"syncWaitSecs\": \"20\",\n \"secretType\": \"gcpserviceaccount\",\n \"gcpServiceAccountEmail\": \"sa@project-id.iam.gserviceaccount.com\",\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 cluster = new Gcp.Container.Cluster(\"cluster\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"my-membership\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = cluster.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n });\n\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"configmanagement\",\n Location = \"global\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var featureMember = new Gcp.GkeHub.FeatureMembership(\"feature_member\", new()\n {\n Location = \"global\",\n Feature = feature.Name,\n Membership = membership.MembershipId,\n Configmanagement = new Gcp.GkeHub.Inputs.FeatureMembershipConfigmanagementArgs\n {\n Version = \"1.15.1\",\n ConfigSync = new Gcp.GkeHub.Inputs.FeatureMembershipConfigmanagementConfigSyncArgs\n {\n Oci = new Gcp.GkeHub.Inputs.FeatureMembershipConfigmanagementConfigSyncOciArgs\n {\n SyncRepo = \"us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest\",\n PolicyDir = \"config-connector\",\n SyncWaitSecs = \"20\",\n SecretType = \"gcpserviceaccount\",\n GcpServiceAccountEmail = \"sa@project-id.iam.gserviceaccount.com\",\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/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := container.NewCluster(ctx, \"cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"my-membership\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: cluster.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), 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\tfeature, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"configmanagement\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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\t_, err = gkehub.NewFeatureMembership(ctx, \"feature_member\", \u0026gkehub.FeatureMembershipArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFeature: feature.Name,\n\t\t\tMembership: membership.MembershipId,\n\t\t\tConfigmanagement: \u0026gkehub.FeatureMembershipConfigmanagementArgs{\n\t\t\t\tVersion: pulumi.String(\"1.15.1\"),\n\t\t\t\tConfigSync: \u0026gkehub.FeatureMembershipConfigmanagementConfigSyncArgs{\n\t\t\t\t\tOci: \u0026gkehub.FeatureMembershipConfigmanagementConfigSyncOciArgs{\n\t\t\t\t\t\tSyncRepo: pulumi.String(\"us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest\"),\n\t\t\t\t\t\tPolicyDir: pulumi.String(\"config-connector\"),\n\t\t\t\t\t\tSyncWaitSecs: pulumi.String(\"20\"),\n\t\t\t\t\t\tSecretType: pulumi.String(\"gcpserviceaccount\"),\n\t\t\t\t\t\tGcpServiceAccountEmail: pulumi.String(\"sa@project-id.iam.gserviceaccount.com\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.FeatureMembership;\nimport com.pulumi.gcp.gkehub.FeatureMembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipConfigmanagementArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipConfigmanagementConfigSyncArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipConfigmanagementConfigSyncOciArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"my-membership\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(cluster.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build());\n\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"configmanagement\")\n .location(\"global\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var featureMember = new FeatureMembership(\"featureMember\", FeatureMembershipArgs.builder()\n .location(\"global\")\n .feature(feature.name())\n .membership(membership.membershipId())\n .configmanagement(FeatureMembershipConfigmanagementArgs.builder()\n .version(\"1.15.1\")\n .configSync(FeatureMembershipConfigmanagementConfigSyncArgs.builder()\n .oci(FeatureMembershipConfigmanagementConfigSyncOciArgs.builder()\n .syncRepo(\"us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest\")\n .policyDir(\"config-connector\")\n .syncWaitSecs(\"20\")\n .secretType(\"gcpserviceaccount\")\n .gcpServiceAccountEmail(\"sa@project-id.iam.gserviceaccount.com\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:container:Cluster\n properties:\n name: my-cluster\n location: us-central1-a\n initialNodeCount: 1\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: my-membership\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${cluster.id}\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: configmanagement\n location: global\n labels:\n foo: bar\n featureMember:\n type: gcp:gkehub:FeatureMembership\n name: feature_member\n properties:\n location: global\n feature: ${feature.name}\n membership: ${membership.membershipId}\n configmanagement:\n version: 1.15.1\n configSync:\n oci:\n syncRepo: us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest\n policyDir: config-connector\n syncWaitSecs: '20'\n secretType: gcpserviceaccount\n gcpServiceAccountEmail: sa@project-id.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Multi Cluster Service Discovery\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"multiclusterservicediscovery\",\n location: \"global\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"multiclusterservicediscovery\",\n location=\"global\",\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"multiclusterservicediscovery\",\n Location = \"global\",\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/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"multiclusterservicediscovery\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"multiclusterservicediscovery\")\n .location(\"global\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: multiclusterservicediscovery\n location: global\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Mesh\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster = new gcp.container.Cluster(\"cluster\", {\n name: \"my-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"my-membership\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${cluster.id}`,\n },\n },\n});\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"servicemesh\",\n location: \"global\",\n});\nconst featureMember = new gcp.gkehub.FeatureMembership(\"feature_member\", {\n location: \"global\",\n feature: feature.name,\n membership: membership.membershipId,\n mesh: {\n management: \"MANAGEMENT_AUTOMATIC\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster = gcp.container.Cluster(\"cluster\",\n name=\"my-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1)\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"my-membership\",\n endpoint={\n \"gkeCluster\": {\n \"resourceLink\": cluster.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n })\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"servicemesh\",\n location=\"global\")\nfeature_member = gcp.gkehub.FeatureMembership(\"feature_member\",\n location=\"global\",\n feature=feature.name,\n membership=membership.membership_id,\n mesh={\n \"management\": \"MANAGEMENT_AUTOMATIC\",\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 cluster = new Gcp.Container.Cluster(\"cluster\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"my-membership\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = cluster.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n });\n\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"servicemesh\",\n Location = \"global\",\n });\n\n var featureMember = new Gcp.GkeHub.FeatureMembership(\"feature_member\", new()\n {\n Location = \"global\",\n Feature = feature.Name,\n Membership = membership.MembershipId,\n Mesh = new Gcp.GkeHub.Inputs.FeatureMembershipMeshArgs\n {\n Management = \"MANAGEMENT_AUTOMATIC\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := container.NewCluster(ctx, \"cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"my-membership\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: cluster.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), 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\tfeature, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"servicemesh\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewFeatureMembership(ctx, \"feature_member\", \u0026gkehub.FeatureMembershipArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFeature: feature.Name,\n\t\t\tMembership: membership.MembershipId,\n\t\t\tMesh: \u0026gkehub.FeatureMembershipMeshArgs{\n\t\t\t\tManagement: pulumi.String(\"MANAGEMENT_AUTOMATIC\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.FeatureMembership;\nimport com.pulumi.gcp.gkehub.FeatureMembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipMeshArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"my-membership\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(cluster.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build());\n\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"servicemesh\")\n .location(\"global\")\n .build());\n\n var featureMember = new FeatureMembership(\"featureMember\", FeatureMembershipArgs.builder()\n .location(\"global\")\n .feature(feature.name())\n .membership(membership.membershipId())\n .mesh(FeatureMembershipMeshArgs.builder()\n .management(\"MANAGEMENT_AUTOMATIC\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:container:Cluster\n properties:\n name: my-cluster\n location: us-central1-a\n initialNodeCount: 1\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: my-membership\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${cluster.id}\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: servicemesh\n location: global\n featureMember:\n type: gcp:gkehub:FeatureMembership\n name: feature_member\n properties:\n location: global\n feature: ${feature.name}\n membership: ${membership.membershipId}\n mesh:\n management: MANAGEMENT_AUTOMATIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Config Management With Regional Membership\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster = new gcp.container.Cluster(\"cluster\", {\n name: \"my-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"my-membership\",\n location: \"us-central1\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${cluster.id}`,\n },\n },\n});\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"configmanagement\",\n location: \"global\",\n labels: {\n foo: \"bar\",\n },\n});\nconst featureMember = new gcp.gkehub.FeatureMembership(\"feature_member\", {\n location: \"global\",\n feature: feature.name,\n membership: membership.membershipId,\n membershipLocation: membership.location,\n configmanagement: {\n version: \"1.6.2\",\n configSync: {\n git: {\n syncRepo: \"https://github.com/hashicorp/terraform\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster = gcp.container.Cluster(\"cluster\",\n name=\"my-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1)\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"my-membership\",\n location=\"us-central1\",\n endpoint={\n \"gkeCluster\": {\n \"resourceLink\": cluster.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n })\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"configmanagement\",\n location=\"global\",\n labels={\n \"foo\": \"bar\",\n })\nfeature_member = gcp.gkehub.FeatureMembership(\"feature_member\",\n location=\"global\",\n feature=feature.name,\n membership=membership.membership_id,\n membership_location=membership.location,\n configmanagement={\n \"version\": \"1.6.2\",\n \"configSync\": {\n \"git\": {\n \"syncRepo\": \"https://github.com/hashicorp/terraform\",\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 cluster = new Gcp.Container.Cluster(\"cluster\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"my-membership\",\n Location = \"us-central1\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = cluster.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n });\n\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"configmanagement\",\n Location = \"global\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var featureMember = new Gcp.GkeHub.FeatureMembership(\"feature_member\", new()\n {\n Location = \"global\",\n Feature = feature.Name,\n Membership = membership.MembershipId,\n MembershipLocation = membership.Location,\n Configmanagement = new Gcp.GkeHub.Inputs.FeatureMembershipConfigmanagementArgs\n {\n Version = \"1.6.2\",\n ConfigSync = new Gcp.GkeHub.Inputs.FeatureMembershipConfigmanagementConfigSyncArgs\n {\n Git = new Gcp.GkeHub.Inputs.FeatureMembershipConfigmanagementConfigSyncGitArgs\n {\n SyncRepo = \"https://github.com/hashicorp/terraform\",\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/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := container.NewCluster(ctx, \"cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"my-membership\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: cluster.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), 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\tfeature, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"configmanagement\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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\t_, err = gkehub.NewFeatureMembership(ctx, \"feature_member\", \u0026gkehub.FeatureMembershipArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFeature: feature.Name,\n\t\t\tMembership: membership.MembershipId,\n\t\t\tMembershipLocation: membership.Location,\n\t\t\tConfigmanagement: \u0026gkehub.FeatureMembershipConfigmanagementArgs{\n\t\t\t\tVersion: pulumi.String(\"1.6.2\"),\n\t\t\t\tConfigSync: \u0026gkehub.FeatureMembershipConfigmanagementConfigSyncArgs{\n\t\t\t\t\tGit: \u0026gkehub.FeatureMembershipConfigmanagementConfigSyncGitArgs{\n\t\t\t\t\t\tSyncRepo: pulumi.String(\"https://github.com/hashicorp/terraform\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.FeatureMembership;\nimport com.pulumi.gcp.gkehub.FeatureMembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipConfigmanagementArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipConfigmanagementConfigSyncArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipConfigmanagementConfigSyncGitArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"my-membership\")\n .location(\"us-central1\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(cluster.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build());\n\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"configmanagement\")\n .location(\"global\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var featureMember = new FeatureMembership(\"featureMember\", FeatureMembershipArgs.builder()\n .location(\"global\")\n .feature(feature.name())\n .membership(membership.membershipId())\n .membershipLocation(membership.location())\n .configmanagement(FeatureMembershipConfigmanagementArgs.builder()\n .version(\"1.6.2\")\n .configSync(FeatureMembershipConfigmanagementConfigSyncArgs.builder()\n .git(FeatureMembershipConfigmanagementConfigSyncGitArgs.builder()\n .syncRepo(\"https://github.com/hashicorp/terraform\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:container:Cluster\n properties:\n name: my-cluster\n location: us-central1-a\n initialNodeCount: 1\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: my-membership\n location: us-central1\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${cluster.id}\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: configmanagement\n location: global\n labels:\n foo: bar\n featureMember:\n type: gcp:gkehub:FeatureMembership\n name: feature_member\n properties:\n location: global\n feature: ${feature.name}\n membership: ${membership.membershipId}\n membershipLocation: ${membership.location}\n configmanagement:\n version: 1.6.2\n configSync:\n git:\n syncRepo: https://github.com/hashicorp/terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Policy Controller With Minimal Configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster = new gcp.container.Cluster(\"cluster\", {\n name: \"my-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"my-membership\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${cluster.id}`,\n },\n },\n});\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"policycontroller\",\n location: \"global\",\n});\nconst featureMember = new gcp.gkehub.FeatureMembership(\"feature_member\", {\n location: \"global\",\n feature: feature.name,\n membership: membership.membershipId,\n policycontroller: {\n policyControllerHubConfig: {\n installSpec: \"INSTALL_SPEC_ENABLED\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster = gcp.container.Cluster(\"cluster\",\n name=\"my-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1)\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"my-membership\",\n endpoint={\n \"gkeCluster\": {\n \"resourceLink\": cluster.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n })\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"policycontroller\",\n location=\"global\")\nfeature_member = gcp.gkehub.FeatureMembership(\"feature_member\",\n location=\"global\",\n feature=feature.name,\n membership=membership.membership_id,\n policycontroller={\n \"policyControllerHubConfig\": {\n \"installSpec\": \"INSTALL_SPEC_ENABLED\",\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 cluster = new Gcp.Container.Cluster(\"cluster\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"my-membership\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = cluster.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n });\n\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"policycontroller\",\n Location = \"global\",\n });\n\n var featureMember = new Gcp.GkeHub.FeatureMembership(\"feature_member\", new()\n {\n Location = \"global\",\n Feature = feature.Name,\n Membership = membership.MembershipId,\n Policycontroller = new Gcp.GkeHub.Inputs.FeatureMembershipPolicycontrollerArgs\n {\n PolicyControllerHubConfig = new Gcp.GkeHub.Inputs.FeatureMembershipPolicycontrollerPolicyControllerHubConfigArgs\n {\n InstallSpec = \"INSTALL_SPEC_ENABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := container.NewCluster(ctx, \"cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"my-membership\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: cluster.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), 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\tfeature, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"policycontroller\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewFeatureMembership(ctx, \"feature_member\", \u0026gkehub.FeatureMembershipArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFeature: feature.Name,\n\t\t\tMembership: membership.MembershipId,\n\t\t\tPolicycontroller: \u0026gkehub.FeatureMembershipPolicycontrollerArgs{\n\t\t\t\tPolicyControllerHubConfig: \u0026gkehub.FeatureMembershipPolicycontrollerPolicyControllerHubConfigArgs{\n\t\t\t\t\tInstallSpec: pulumi.String(\"INSTALL_SPEC_ENABLED\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.FeatureMembership;\nimport com.pulumi.gcp.gkehub.FeatureMembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipPolicycontrollerArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipPolicycontrollerPolicyControllerHubConfigArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"my-membership\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(cluster.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build());\n\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"policycontroller\")\n .location(\"global\")\n .build());\n\n var featureMember = new FeatureMembership(\"featureMember\", FeatureMembershipArgs.builder()\n .location(\"global\")\n .feature(feature.name())\n .membership(membership.membershipId())\n .policycontroller(FeatureMembershipPolicycontrollerArgs.builder()\n .policyControllerHubConfig(FeatureMembershipPolicycontrollerPolicyControllerHubConfigArgs.builder()\n .installSpec(\"INSTALL_SPEC_ENABLED\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:container:Cluster\n properties:\n name: my-cluster\n location: us-central1-a\n initialNodeCount: 1\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: my-membership\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${cluster.id}\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: policycontroller\n location: global\n featureMember:\n type: gcp:gkehub:FeatureMembership\n name: feature_member\n properties:\n location: global\n feature: ${feature.name}\n membership: ${membership.membershipId}\n policycontroller:\n policyControllerHubConfig:\n installSpec: INSTALL_SPEC_ENABLED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Policy Controller With Custom Configurations\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster = new gcp.container.Cluster(\"cluster\", {\n name: \"my-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"my-membership\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${cluster.id}`,\n },\n },\n});\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"policycontroller\",\n location: \"global\",\n});\nconst featureMember = new gcp.gkehub.FeatureMembership(\"feature_member\", {\n location: \"global\",\n feature: feature.name,\n membership: membership.membershipId,\n policycontroller: {\n policyControllerHubConfig: {\n installSpec: \"INSTALL_SPEC_SUSPENDED\",\n policyContent: {\n templateLibrary: {\n installation: \"NOT_INSTALLED\",\n },\n },\n constraintViolationLimit: 50,\n auditIntervalSeconds: 120,\n referentialRulesEnabled: true,\n logDeniesEnabled: true,\n mutationEnabled: true,\n },\n version: \"1.17.0\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster = gcp.container.Cluster(\"cluster\",\n name=\"my-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1)\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"my-membership\",\n endpoint={\n \"gkeCluster\": {\n \"resourceLink\": cluster.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n })\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"policycontroller\",\n location=\"global\")\nfeature_member = gcp.gkehub.FeatureMembership(\"feature_member\",\n location=\"global\",\n feature=feature.name,\n membership=membership.membership_id,\n policycontroller={\n \"policyControllerHubConfig\": {\n \"installSpec\": \"INSTALL_SPEC_SUSPENDED\",\n \"policyContent\": {\n \"templateLibrary\": {\n \"installation\": \"NOT_INSTALLED\",\n },\n },\n \"constraintViolationLimit\": 50,\n \"auditIntervalSeconds\": 120,\n \"referentialRulesEnabled\": True,\n \"logDeniesEnabled\": True,\n \"mutationEnabled\": True,\n },\n \"version\": \"1.17.0\",\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 cluster = new Gcp.Container.Cluster(\"cluster\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"my-membership\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = cluster.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n });\n\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"policycontroller\",\n Location = \"global\",\n });\n\n var featureMember = new Gcp.GkeHub.FeatureMembership(\"feature_member\", new()\n {\n Location = \"global\",\n Feature = feature.Name,\n Membership = membership.MembershipId,\n Policycontroller = new Gcp.GkeHub.Inputs.FeatureMembershipPolicycontrollerArgs\n {\n PolicyControllerHubConfig = new Gcp.GkeHub.Inputs.FeatureMembershipPolicycontrollerPolicyControllerHubConfigArgs\n {\n InstallSpec = \"INSTALL_SPEC_SUSPENDED\",\n PolicyContent = new Gcp.GkeHub.Inputs.FeatureMembershipPolicycontrollerPolicyControllerHubConfigPolicyContentArgs\n {\n TemplateLibrary = new Gcp.GkeHub.Inputs.FeatureMembershipPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs\n {\n Installation = \"NOT_INSTALLED\",\n },\n },\n ConstraintViolationLimit = 50,\n AuditIntervalSeconds = 120,\n ReferentialRulesEnabled = true,\n LogDeniesEnabled = true,\n MutationEnabled = true,\n },\n Version = \"1.17.0\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := container.NewCluster(ctx, \"cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"my-membership\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: cluster.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), 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\tfeature, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"policycontroller\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewFeatureMembership(ctx, \"feature_member\", \u0026gkehub.FeatureMembershipArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFeature: feature.Name,\n\t\t\tMembership: membership.MembershipId,\n\t\t\tPolicycontroller: \u0026gkehub.FeatureMembershipPolicycontrollerArgs{\n\t\t\t\tPolicyControllerHubConfig: \u0026gkehub.FeatureMembershipPolicycontrollerPolicyControllerHubConfigArgs{\n\t\t\t\t\tInstallSpec: pulumi.String(\"INSTALL_SPEC_SUSPENDED\"),\n\t\t\t\t\tPolicyContent: \u0026gkehub.FeatureMembershipPolicycontrollerPolicyControllerHubConfigPolicyContentArgs{\n\t\t\t\t\t\tTemplateLibrary: \u0026gkehub.FeatureMembershipPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs{\n\t\t\t\t\t\t\tInstallation: pulumi.String(\"NOT_INSTALLED\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tConstraintViolationLimit: pulumi.Int(50),\n\t\t\t\t\tAuditIntervalSeconds: pulumi.Int(120),\n\t\t\t\t\tReferentialRulesEnabled: pulumi.Bool(true),\n\t\t\t\t\tLogDeniesEnabled: pulumi.Bool(true),\n\t\t\t\t\tMutationEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tVersion: pulumi.String(\"1.17.0\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.FeatureMembership;\nimport com.pulumi.gcp.gkehub.FeatureMembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipPolicycontrollerArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipPolicycontrollerPolicyControllerHubConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipPolicycontrollerPolicyControllerHubConfigPolicyContentArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"my-membership\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(cluster.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build());\n\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"policycontroller\")\n .location(\"global\")\n .build());\n\n var featureMember = new FeatureMembership(\"featureMember\", FeatureMembershipArgs.builder()\n .location(\"global\")\n .feature(feature.name())\n .membership(membership.membershipId())\n .policycontroller(FeatureMembershipPolicycontrollerArgs.builder()\n .policyControllerHubConfig(FeatureMembershipPolicycontrollerPolicyControllerHubConfigArgs.builder()\n .installSpec(\"INSTALL_SPEC_SUSPENDED\")\n .policyContent(FeatureMembershipPolicycontrollerPolicyControllerHubConfigPolicyContentArgs.builder()\n .templateLibrary(FeatureMembershipPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs.builder()\n .installation(\"NOT_INSTALLED\")\n .build())\n .build())\n .constraintViolationLimit(50)\n .auditIntervalSeconds(120)\n .referentialRulesEnabled(true)\n .logDeniesEnabled(true)\n .mutationEnabled(true)\n .build())\n .version(\"1.17.0\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:container:Cluster\n properties:\n name: my-cluster\n location: us-central1-a\n initialNodeCount: 1\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: my-membership\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${cluster.id}\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: policycontroller\n location: global\n featureMember:\n type: gcp:gkehub:FeatureMembership\n name: feature_member\n properties:\n location: global\n feature: ${feature.name}\n membership: ${membership.membershipId}\n policycontroller:\n policyControllerHubConfig:\n installSpec: INSTALL_SPEC_SUSPENDED\n policyContent:\n templateLibrary:\n installation: NOT_INSTALLED\n constraintViolationLimit: 50\n auditIntervalSeconds: 120\n referentialRulesEnabled: true\n logDeniesEnabled: true\n mutationEnabled: true\n version: 1.17.0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeatureMembership can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/features/{{feature}}/membershipId/{{membership}}`\n\n* `{{project}}/{{location}}/{{feature}}/{{membership}}`\n\n* `{{location}}/{{feature}}/{{membership}}`\n\nWhen using the `pulumi import` command, FeatureMembership can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkehub/featureMembership:FeatureMembership default projects/{{project}}/locations/{{location}}/features/{{feature}}/membershipId/{{membership}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/featureMembership:FeatureMembership default {{project}}/{{location}}/{{feature}}/{{membership}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/featureMembership:FeatureMembership default {{location}}/{{feature}}/{{membership}}\n```\n\n", + "description": "Contains information about a GKEHub Feature Memberships. Feature Memberships configure GKEHub Features that apply to specific memberships rather than the project as a whole. The google_gke_hub is the Fleet API.\n\n## Example Usage\n\n### Config Management\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster = new gcp.container.Cluster(\"cluster\", {\n name: \"my-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"my-membership\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${cluster.id}`,\n },\n },\n});\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"configmanagement\",\n location: \"global\",\n labels: {\n foo: \"bar\",\n },\n});\nconst featureMember = new gcp.gkehub.FeatureMembership(\"feature_member\", {\n location: \"global\",\n feature: feature.name,\n membership: membership.membershipId,\n configmanagement: {\n version: \"1.6.2\",\n configSync: {\n git: {\n syncRepo: \"https://github.com/hashicorp/terraform\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster = gcp.container.Cluster(\"cluster\",\n name=\"my-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1)\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"my-membership\",\n endpoint={\n \"gke_cluster\": {\n \"resource_link\": cluster.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n })\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"configmanagement\",\n location=\"global\",\n labels={\n \"foo\": \"bar\",\n })\nfeature_member = gcp.gkehub.FeatureMembership(\"feature_member\",\n location=\"global\",\n feature=feature.name,\n membership=membership.membership_id,\n configmanagement={\n \"version\": \"1.6.2\",\n \"config_sync\": {\n \"git\": {\n \"sync_repo\": \"https://github.com/hashicorp/terraform\",\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 cluster = new Gcp.Container.Cluster(\"cluster\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"my-membership\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = cluster.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n });\n\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"configmanagement\",\n Location = \"global\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var featureMember = new Gcp.GkeHub.FeatureMembership(\"feature_member\", new()\n {\n Location = \"global\",\n Feature = feature.Name,\n Membership = membership.MembershipId,\n Configmanagement = new Gcp.GkeHub.Inputs.FeatureMembershipConfigmanagementArgs\n {\n Version = \"1.6.2\",\n ConfigSync = new Gcp.GkeHub.Inputs.FeatureMembershipConfigmanagementConfigSyncArgs\n {\n Git = new Gcp.GkeHub.Inputs.FeatureMembershipConfigmanagementConfigSyncGitArgs\n {\n SyncRepo = \"https://github.com/hashicorp/terraform\",\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/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := container.NewCluster(ctx, \"cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"my-membership\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: cluster.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), 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\tfeature, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"configmanagement\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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\t_, err = gkehub.NewFeatureMembership(ctx, \"feature_member\", \u0026gkehub.FeatureMembershipArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFeature: feature.Name,\n\t\t\tMembership: membership.MembershipId,\n\t\t\tConfigmanagement: \u0026gkehub.FeatureMembershipConfigmanagementArgs{\n\t\t\t\tVersion: pulumi.String(\"1.6.2\"),\n\t\t\t\tConfigSync: \u0026gkehub.FeatureMembershipConfigmanagementConfigSyncArgs{\n\t\t\t\t\tGit: \u0026gkehub.FeatureMembershipConfigmanagementConfigSyncGitArgs{\n\t\t\t\t\t\tSyncRepo: pulumi.String(\"https://github.com/hashicorp/terraform\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.FeatureMembership;\nimport com.pulumi.gcp.gkehub.FeatureMembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipConfigmanagementArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipConfigmanagementConfigSyncArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipConfigmanagementConfigSyncGitArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"my-membership\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(cluster.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build());\n\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"configmanagement\")\n .location(\"global\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var featureMember = new FeatureMembership(\"featureMember\", FeatureMembershipArgs.builder()\n .location(\"global\")\n .feature(feature.name())\n .membership(membership.membershipId())\n .configmanagement(FeatureMembershipConfigmanagementArgs.builder()\n .version(\"1.6.2\")\n .configSync(FeatureMembershipConfigmanagementConfigSyncArgs.builder()\n .git(FeatureMembershipConfigmanagementConfigSyncGitArgs.builder()\n .syncRepo(\"https://github.com/hashicorp/terraform\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:container:Cluster\n properties:\n name: my-cluster\n location: us-central1-a\n initialNodeCount: 1\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: my-membership\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${cluster.id}\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: configmanagement\n location: global\n labels:\n foo: bar\n featureMember:\n type: gcp:gkehub:FeatureMembership\n name: feature_member\n properties:\n location: global\n feature: ${feature.name}\n membership: ${membership.membershipId}\n configmanagement:\n version: 1.6.2\n configSync:\n git:\n syncRepo: https://github.com/hashicorp/terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Config Management With OCI\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster = new gcp.container.Cluster(\"cluster\", {\n name: \"my-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"my-membership\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${cluster.id}`,\n },\n },\n});\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"configmanagement\",\n location: \"global\",\n labels: {\n foo: \"bar\",\n },\n});\nconst featureMember = new gcp.gkehub.FeatureMembership(\"feature_member\", {\n location: \"global\",\n feature: feature.name,\n membership: membership.membershipId,\n configmanagement: {\n version: \"1.15.1\",\n configSync: {\n oci: {\n syncRepo: \"us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest\",\n policyDir: \"config-connector\",\n syncWaitSecs: \"20\",\n secretType: \"gcpserviceaccount\",\n gcpServiceAccountEmail: \"sa@project-id.iam.gserviceaccount.com\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster = gcp.container.Cluster(\"cluster\",\n name=\"my-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1)\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"my-membership\",\n endpoint={\n \"gke_cluster\": {\n \"resource_link\": cluster.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n })\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"configmanagement\",\n location=\"global\",\n labels={\n \"foo\": \"bar\",\n })\nfeature_member = gcp.gkehub.FeatureMembership(\"feature_member\",\n location=\"global\",\n feature=feature.name,\n membership=membership.membership_id,\n configmanagement={\n \"version\": \"1.15.1\",\n \"config_sync\": {\n \"oci\": {\n \"sync_repo\": \"us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest\",\n \"policy_dir\": \"config-connector\",\n \"sync_wait_secs\": \"20\",\n \"secret_type\": \"gcpserviceaccount\",\n \"gcp_service_account_email\": \"sa@project-id.iam.gserviceaccount.com\",\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 cluster = new Gcp.Container.Cluster(\"cluster\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"my-membership\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = cluster.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n });\n\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"configmanagement\",\n Location = \"global\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var featureMember = new Gcp.GkeHub.FeatureMembership(\"feature_member\", new()\n {\n Location = \"global\",\n Feature = feature.Name,\n Membership = membership.MembershipId,\n Configmanagement = new Gcp.GkeHub.Inputs.FeatureMembershipConfigmanagementArgs\n {\n Version = \"1.15.1\",\n ConfigSync = new Gcp.GkeHub.Inputs.FeatureMembershipConfigmanagementConfigSyncArgs\n {\n Oci = new Gcp.GkeHub.Inputs.FeatureMembershipConfigmanagementConfigSyncOciArgs\n {\n SyncRepo = \"us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest\",\n PolicyDir = \"config-connector\",\n SyncWaitSecs = \"20\",\n SecretType = \"gcpserviceaccount\",\n GcpServiceAccountEmail = \"sa@project-id.iam.gserviceaccount.com\",\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/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := container.NewCluster(ctx, \"cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"my-membership\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: cluster.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), 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\tfeature, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"configmanagement\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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\t_, err = gkehub.NewFeatureMembership(ctx, \"feature_member\", \u0026gkehub.FeatureMembershipArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFeature: feature.Name,\n\t\t\tMembership: membership.MembershipId,\n\t\t\tConfigmanagement: \u0026gkehub.FeatureMembershipConfigmanagementArgs{\n\t\t\t\tVersion: pulumi.String(\"1.15.1\"),\n\t\t\t\tConfigSync: \u0026gkehub.FeatureMembershipConfigmanagementConfigSyncArgs{\n\t\t\t\t\tOci: \u0026gkehub.FeatureMembershipConfigmanagementConfigSyncOciArgs{\n\t\t\t\t\t\tSyncRepo: pulumi.String(\"us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest\"),\n\t\t\t\t\t\tPolicyDir: pulumi.String(\"config-connector\"),\n\t\t\t\t\t\tSyncWaitSecs: pulumi.String(\"20\"),\n\t\t\t\t\t\tSecretType: pulumi.String(\"gcpserviceaccount\"),\n\t\t\t\t\t\tGcpServiceAccountEmail: pulumi.String(\"sa@project-id.iam.gserviceaccount.com\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.FeatureMembership;\nimport com.pulumi.gcp.gkehub.FeatureMembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipConfigmanagementArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipConfigmanagementConfigSyncArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipConfigmanagementConfigSyncOciArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"my-membership\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(cluster.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build());\n\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"configmanagement\")\n .location(\"global\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var featureMember = new FeatureMembership(\"featureMember\", FeatureMembershipArgs.builder()\n .location(\"global\")\n .feature(feature.name())\n .membership(membership.membershipId())\n .configmanagement(FeatureMembershipConfigmanagementArgs.builder()\n .version(\"1.15.1\")\n .configSync(FeatureMembershipConfigmanagementConfigSyncArgs.builder()\n .oci(FeatureMembershipConfigmanagementConfigSyncOciArgs.builder()\n .syncRepo(\"us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest\")\n .policyDir(\"config-connector\")\n .syncWaitSecs(\"20\")\n .secretType(\"gcpserviceaccount\")\n .gcpServiceAccountEmail(\"sa@project-id.iam.gserviceaccount.com\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:container:Cluster\n properties:\n name: my-cluster\n location: us-central1-a\n initialNodeCount: 1\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: my-membership\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${cluster.id}\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: configmanagement\n location: global\n labels:\n foo: bar\n featureMember:\n type: gcp:gkehub:FeatureMembership\n name: feature_member\n properties:\n location: global\n feature: ${feature.name}\n membership: ${membership.membershipId}\n configmanagement:\n version: 1.15.1\n configSync:\n oci:\n syncRepo: us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest\n policyDir: config-connector\n syncWaitSecs: '20'\n secretType: gcpserviceaccount\n gcpServiceAccountEmail: sa@project-id.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Multi Cluster Service Discovery\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"multiclusterservicediscovery\",\n location: \"global\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"multiclusterservicediscovery\",\n location=\"global\",\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 feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"multiclusterservicediscovery\",\n Location = \"global\",\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/v7/go/gcp/gkehub\"\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 := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"multiclusterservicediscovery\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\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 feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"multiclusterservicediscovery\")\n .location(\"global\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: multiclusterservicediscovery\n location: global\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Mesh\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster = new gcp.container.Cluster(\"cluster\", {\n name: \"my-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"my-membership\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${cluster.id}`,\n },\n },\n});\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"servicemesh\",\n location: \"global\",\n});\nconst featureMember = new gcp.gkehub.FeatureMembership(\"feature_member\", {\n location: \"global\",\n feature: feature.name,\n membership: membership.membershipId,\n mesh: {\n management: \"MANAGEMENT_AUTOMATIC\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster = gcp.container.Cluster(\"cluster\",\n name=\"my-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1)\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"my-membership\",\n endpoint={\n \"gke_cluster\": {\n \"resource_link\": cluster.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n })\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"servicemesh\",\n location=\"global\")\nfeature_member = gcp.gkehub.FeatureMembership(\"feature_member\",\n location=\"global\",\n feature=feature.name,\n membership=membership.membership_id,\n mesh={\n \"management\": \"MANAGEMENT_AUTOMATIC\",\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 cluster = new Gcp.Container.Cluster(\"cluster\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"my-membership\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = cluster.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n });\n\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"servicemesh\",\n Location = \"global\",\n });\n\n var featureMember = new Gcp.GkeHub.FeatureMembership(\"feature_member\", new()\n {\n Location = \"global\",\n Feature = feature.Name,\n Membership = membership.MembershipId,\n Mesh = new Gcp.GkeHub.Inputs.FeatureMembershipMeshArgs\n {\n Management = \"MANAGEMENT_AUTOMATIC\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := container.NewCluster(ctx, \"cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"my-membership\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: cluster.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), 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\tfeature, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"servicemesh\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewFeatureMembership(ctx, \"feature_member\", \u0026gkehub.FeatureMembershipArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFeature: feature.Name,\n\t\t\tMembership: membership.MembershipId,\n\t\t\tMesh: \u0026gkehub.FeatureMembershipMeshArgs{\n\t\t\t\tManagement: pulumi.String(\"MANAGEMENT_AUTOMATIC\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.FeatureMembership;\nimport com.pulumi.gcp.gkehub.FeatureMembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipMeshArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"my-membership\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(cluster.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build());\n\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"servicemesh\")\n .location(\"global\")\n .build());\n\n var featureMember = new FeatureMembership(\"featureMember\", FeatureMembershipArgs.builder()\n .location(\"global\")\n .feature(feature.name())\n .membership(membership.membershipId())\n .mesh(FeatureMembershipMeshArgs.builder()\n .management(\"MANAGEMENT_AUTOMATIC\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:container:Cluster\n properties:\n name: my-cluster\n location: us-central1-a\n initialNodeCount: 1\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: my-membership\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${cluster.id}\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: servicemesh\n location: global\n featureMember:\n type: gcp:gkehub:FeatureMembership\n name: feature_member\n properties:\n location: global\n feature: ${feature.name}\n membership: ${membership.membershipId}\n mesh:\n management: MANAGEMENT_AUTOMATIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Config Management With Regional Membership\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster = new gcp.container.Cluster(\"cluster\", {\n name: \"my-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"my-membership\",\n location: \"us-central1\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${cluster.id}`,\n },\n },\n});\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"configmanagement\",\n location: \"global\",\n labels: {\n foo: \"bar\",\n },\n});\nconst featureMember = new gcp.gkehub.FeatureMembership(\"feature_member\", {\n location: \"global\",\n feature: feature.name,\n membership: membership.membershipId,\n membershipLocation: membership.location,\n configmanagement: {\n version: \"1.6.2\",\n configSync: {\n git: {\n syncRepo: \"https://github.com/hashicorp/terraform\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster = gcp.container.Cluster(\"cluster\",\n name=\"my-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1)\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"my-membership\",\n location=\"us-central1\",\n endpoint={\n \"gke_cluster\": {\n \"resource_link\": cluster.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n })\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"configmanagement\",\n location=\"global\",\n labels={\n \"foo\": \"bar\",\n })\nfeature_member = gcp.gkehub.FeatureMembership(\"feature_member\",\n location=\"global\",\n feature=feature.name,\n membership=membership.membership_id,\n membership_location=membership.location,\n configmanagement={\n \"version\": \"1.6.2\",\n \"config_sync\": {\n \"git\": {\n \"sync_repo\": \"https://github.com/hashicorp/terraform\",\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 cluster = new Gcp.Container.Cluster(\"cluster\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"my-membership\",\n Location = \"us-central1\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = cluster.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n });\n\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"configmanagement\",\n Location = \"global\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var featureMember = new Gcp.GkeHub.FeatureMembership(\"feature_member\", new()\n {\n Location = \"global\",\n Feature = feature.Name,\n Membership = membership.MembershipId,\n MembershipLocation = membership.Location,\n Configmanagement = new Gcp.GkeHub.Inputs.FeatureMembershipConfigmanagementArgs\n {\n Version = \"1.6.2\",\n ConfigSync = new Gcp.GkeHub.Inputs.FeatureMembershipConfigmanagementConfigSyncArgs\n {\n Git = new Gcp.GkeHub.Inputs.FeatureMembershipConfigmanagementConfigSyncGitArgs\n {\n SyncRepo = \"https://github.com/hashicorp/terraform\",\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/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := container.NewCluster(ctx, \"cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"my-membership\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: cluster.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), 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\tfeature, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"configmanagement\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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\t_, err = gkehub.NewFeatureMembership(ctx, \"feature_member\", \u0026gkehub.FeatureMembershipArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFeature: feature.Name,\n\t\t\tMembership: membership.MembershipId,\n\t\t\tMembershipLocation: membership.Location,\n\t\t\tConfigmanagement: \u0026gkehub.FeatureMembershipConfigmanagementArgs{\n\t\t\t\tVersion: pulumi.String(\"1.6.2\"),\n\t\t\t\tConfigSync: \u0026gkehub.FeatureMembershipConfigmanagementConfigSyncArgs{\n\t\t\t\t\tGit: \u0026gkehub.FeatureMembershipConfigmanagementConfigSyncGitArgs{\n\t\t\t\t\t\tSyncRepo: pulumi.String(\"https://github.com/hashicorp/terraform\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.FeatureMembership;\nimport com.pulumi.gcp.gkehub.FeatureMembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipConfigmanagementArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipConfigmanagementConfigSyncArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipConfigmanagementConfigSyncGitArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"my-membership\")\n .location(\"us-central1\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(cluster.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build());\n\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"configmanagement\")\n .location(\"global\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var featureMember = new FeatureMembership(\"featureMember\", FeatureMembershipArgs.builder()\n .location(\"global\")\n .feature(feature.name())\n .membership(membership.membershipId())\n .membershipLocation(membership.location())\n .configmanagement(FeatureMembershipConfigmanagementArgs.builder()\n .version(\"1.6.2\")\n .configSync(FeatureMembershipConfigmanagementConfigSyncArgs.builder()\n .git(FeatureMembershipConfigmanagementConfigSyncGitArgs.builder()\n .syncRepo(\"https://github.com/hashicorp/terraform\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:container:Cluster\n properties:\n name: my-cluster\n location: us-central1-a\n initialNodeCount: 1\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: my-membership\n location: us-central1\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${cluster.id}\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: configmanagement\n location: global\n labels:\n foo: bar\n featureMember:\n type: gcp:gkehub:FeatureMembership\n name: feature_member\n properties:\n location: global\n feature: ${feature.name}\n membership: ${membership.membershipId}\n membershipLocation: ${membership.location}\n configmanagement:\n version: 1.6.2\n configSync:\n git:\n syncRepo: https://github.com/hashicorp/terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Policy Controller With Minimal Configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster = new gcp.container.Cluster(\"cluster\", {\n name: \"my-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"my-membership\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${cluster.id}`,\n },\n },\n});\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"policycontroller\",\n location: \"global\",\n});\nconst featureMember = new gcp.gkehub.FeatureMembership(\"feature_member\", {\n location: \"global\",\n feature: feature.name,\n membership: membership.membershipId,\n policycontroller: {\n policyControllerHubConfig: {\n installSpec: \"INSTALL_SPEC_ENABLED\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster = gcp.container.Cluster(\"cluster\",\n name=\"my-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1)\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"my-membership\",\n endpoint={\n \"gke_cluster\": {\n \"resource_link\": cluster.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n })\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"policycontroller\",\n location=\"global\")\nfeature_member = gcp.gkehub.FeatureMembership(\"feature_member\",\n location=\"global\",\n feature=feature.name,\n membership=membership.membership_id,\n policycontroller={\n \"policy_controller_hub_config\": {\n \"install_spec\": \"INSTALL_SPEC_ENABLED\",\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 cluster = new Gcp.Container.Cluster(\"cluster\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"my-membership\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = cluster.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n });\n\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"policycontroller\",\n Location = \"global\",\n });\n\n var featureMember = new Gcp.GkeHub.FeatureMembership(\"feature_member\", new()\n {\n Location = \"global\",\n Feature = feature.Name,\n Membership = membership.MembershipId,\n Policycontroller = new Gcp.GkeHub.Inputs.FeatureMembershipPolicycontrollerArgs\n {\n PolicyControllerHubConfig = new Gcp.GkeHub.Inputs.FeatureMembershipPolicycontrollerPolicyControllerHubConfigArgs\n {\n InstallSpec = \"INSTALL_SPEC_ENABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := container.NewCluster(ctx, \"cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"my-membership\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: cluster.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), 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\tfeature, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"policycontroller\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewFeatureMembership(ctx, \"feature_member\", \u0026gkehub.FeatureMembershipArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFeature: feature.Name,\n\t\t\tMembership: membership.MembershipId,\n\t\t\tPolicycontroller: \u0026gkehub.FeatureMembershipPolicycontrollerArgs{\n\t\t\t\tPolicyControllerHubConfig: \u0026gkehub.FeatureMembershipPolicycontrollerPolicyControllerHubConfigArgs{\n\t\t\t\t\tInstallSpec: pulumi.String(\"INSTALL_SPEC_ENABLED\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.FeatureMembership;\nimport com.pulumi.gcp.gkehub.FeatureMembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipPolicycontrollerArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipPolicycontrollerPolicyControllerHubConfigArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"my-membership\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(cluster.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build());\n\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"policycontroller\")\n .location(\"global\")\n .build());\n\n var featureMember = new FeatureMembership(\"featureMember\", FeatureMembershipArgs.builder()\n .location(\"global\")\n .feature(feature.name())\n .membership(membership.membershipId())\n .policycontroller(FeatureMembershipPolicycontrollerArgs.builder()\n .policyControllerHubConfig(FeatureMembershipPolicycontrollerPolicyControllerHubConfigArgs.builder()\n .installSpec(\"INSTALL_SPEC_ENABLED\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:container:Cluster\n properties:\n name: my-cluster\n location: us-central1-a\n initialNodeCount: 1\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: my-membership\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${cluster.id}\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: policycontroller\n location: global\n featureMember:\n type: gcp:gkehub:FeatureMembership\n name: feature_member\n properties:\n location: global\n feature: ${feature.name}\n membership: ${membership.membershipId}\n policycontroller:\n policyControllerHubConfig:\n installSpec: INSTALL_SPEC_ENABLED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Policy Controller With Custom Configurations\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster = new gcp.container.Cluster(\"cluster\", {\n name: \"my-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"my-membership\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${cluster.id}`,\n },\n },\n});\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"policycontroller\",\n location: \"global\",\n});\nconst featureMember = new gcp.gkehub.FeatureMembership(\"feature_member\", {\n location: \"global\",\n feature: feature.name,\n membership: membership.membershipId,\n policycontroller: {\n policyControllerHubConfig: {\n installSpec: \"INSTALL_SPEC_SUSPENDED\",\n policyContent: {\n templateLibrary: {\n installation: \"NOT_INSTALLED\",\n },\n },\n constraintViolationLimit: 50,\n auditIntervalSeconds: 120,\n referentialRulesEnabled: true,\n logDeniesEnabled: true,\n mutationEnabled: true,\n },\n version: \"1.17.0\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster = gcp.container.Cluster(\"cluster\",\n name=\"my-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1)\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"my-membership\",\n endpoint={\n \"gke_cluster\": {\n \"resource_link\": cluster.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n })\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"policycontroller\",\n location=\"global\")\nfeature_member = gcp.gkehub.FeatureMembership(\"feature_member\",\n location=\"global\",\n feature=feature.name,\n membership=membership.membership_id,\n policycontroller={\n \"policy_controller_hub_config\": {\n \"install_spec\": \"INSTALL_SPEC_SUSPENDED\",\n \"policy_content\": {\n \"template_library\": {\n \"installation\": \"NOT_INSTALLED\",\n },\n },\n \"constraint_violation_limit\": 50,\n \"audit_interval_seconds\": 120,\n \"referential_rules_enabled\": True,\n \"log_denies_enabled\": True,\n \"mutation_enabled\": True,\n },\n \"version\": \"1.17.0\",\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 cluster = new Gcp.Container.Cluster(\"cluster\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"my-membership\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = cluster.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n });\n\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"policycontroller\",\n Location = \"global\",\n });\n\n var featureMember = new Gcp.GkeHub.FeatureMembership(\"feature_member\", new()\n {\n Location = \"global\",\n Feature = feature.Name,\n Membership = membership.MembershipId,\n Policycontroller = new Gcp.GkeHub.Inputs.FeatureMembershipPolicycontrollerArgs\n {\n PolicyControllerHubConfig = new Gcp.GkeHub.Inputs.FeatureMembershipPolicycontrollerPolicyControllerHubConfigArgs\n {\n InstallSpec = \"INSTALL_SPEC_SUSPENDED\",\n PolicyContent = new Gcp.GkeHub.Inputs.FeatureMembershipPolicycontrollerPolicyControllerHubConfigPolicyContentArgs\n {\n TemplateLibrary = new Gcp.GkeHub.Inputs.FeatureMembershipPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs\n {\n Installation = \"NOT_INSTALLED\",\n },\n },\n ConstraintViolationLimit = 50,\n AuditIntervalSeconds = 120,\n ReferentialRulesEnabled = true,\n LogDeniesEnabled = true,\n MutationEnabled = true,\n },\n Version = \"1.17.0\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := container.NewCluster(ctx, \"cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"my-membership\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: cluster.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), 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\tfeature, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"policycontroller\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewFeatureMembership(ctx, \"feature_member\", \u0026gkehub.FeatureMembershipArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFeature: feature.Name,\n\t\t\tMembership: membership.MembershipId,\n\t\t\tPolicycontroller: \u0026gkehub.FeatureMembershipPolicycontrollerArgs{\n\t\t\t\tPolicyControllerHubConfig: \u0026gkehub.FeatureMembershipPolicycontrollerPolicyControllerHubConfigArgs{\n\t\t\t\t\tInstallSpec: pulumi.String(\"INSTALL_SPEC_SUSPENDED\"),\n\t\t\t\t\tPolicyContent: \u0026gkehub.FeatureMembershipPolicycontrollerPolicyControllerHubConfigPolicyContentArgs{\n\t\t\t\t\t\tTemplateLibrary: \u0026gkehub.FeatureMembershipPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs{\n\t\t\t\t\t\t\tInstallation: pulumi.String(\"NOT_INSTALLED\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tConstraintViolationLimit: pulumi.Int(50),\n\t\t\t\t\tAuditIntervalSeconds: pulumi.Int(120),\n\t\t\t\t\tReferentialRulesEnabled: pulumi.Bool(true),\n\t\t\t\t\tLogDeniesEnabled: pulumi.Bool(true),\n\t\t\t\t\tMutationEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tVersion: pulumi.String(\"1.17.0\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.FeatureMembership;\nimport com.pulumi.gcp.gkehub.FeatureMembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipPolicycontrollerArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipPolicycontrollerPolicyControllerHubConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipPolicycontrollerPolicyControllerHubConfigPolicyContentArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureMembershipPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"my-membership\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(cluster.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build());\n\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"policycontroller\")\n .location(\"global\")\n .build());\n\n var featureMember = new FeatureMembership(\"featureMember\", FeatureMembershipArgs.builder()\n .location(\"global\")\n .feature(feature.name())\n .membership(membership.membershipId())\n .policycontroller(FeatureMembershipPolicycontrollerArgs.builder()\n .policyControllerHubConfig(FeatureMembershipPolicycontrollerPolicyControllerHubConfigArgs.builder()\n .installSpec(\"INSTALL_SPEC_SUSPENDED\")\n .policyContent(FeatureMembershipPolicycontrollerPolicyControllerHubConfigPolicyContentArgs.builder()\n .templateLibrary(FeatureMembershipPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs.builder()\n .installation(\"NOT_INSTALLED\")\n .build())\n .build())\n .constraintViolationLimit(50)\n .auditIntervalSeconds(120)\n .referentialRulesEnabled(true)\n .logDeniesEnabled(true)\n .mutationEnabled(true)\n .build())\n .version(\"1.17.0\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:container:Cluster\n properties:\n name: my-cluster\n location: us-central1-a\n initialNodeCount: 1\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: my-membership\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${cluster.id}\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: policycontroller\n location: global\n featureMember:\n type: gcp:gkehub:FeatureMembership\n name: feature_member\n properties:\n location: global\n feature: ${feature.name}\n membership: ${membership.membershipId}\n policycontroller:\n policyControllerHubConfig:\n installSpec: INSTALL_SPEC_SUSPENDED\n policyContent:\n templateLibrary:\n installation: NOT_INSTALLED\n constraintViolationLimit: 50\n auditIntervalSeconds: 120\n referentialRulesEnabled: true\n logDeniesEnabled: true\n mutationEnabled: true\n version: 1.17.0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeatureMembership can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/features/{{feature}}/membershipId/{{membership}}`\n\n* `{{project}}/{{location}}/{{feature}}/{{membership}}`\n\n* `{{location}}/{{feature}}/{{membership}}`\n\nWhen using the `pulumi import` command, FeatureMembership can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkehub/featureMembership:FeatureMembership default projects/{{project}}/locations/{{location}}/features/{{feature}}/membershipId/{{membership}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/featureMembership:FeatureMembership default {{project}}/{{location}}/{{feature}}/{{membership}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/featureMembership:FeatureMembership default {{location}}/{{feature}}/{{membership}}\n```\n\n", "properties": { "configmanagement": { "$ref": "#/types/gcp:gkehub/FeatureMembershipConfigmanagement:FeatureMembershipConfigmanagement", @@ -195849,7 +195849,7 @@ } }, "gcp:gkehub/fleet:Fleet": { - "description": "Fleet contains information about a group of clusters.\n\n\nTo get more information about Fleet, see:\n\n* [API documentation](https://cloud.google.com/anthos/multicluster-management/reference/rest/v1/projects.locations.fleets)\n* How-to Guides\n * [Registering a Cluster to a Fleet](https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster#register_cluster)\n\n## Example Usage\n\n### Gkehub Fleet Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.gkehub.Fleet(\"default\", {\n displayName: \"my production fleet\",\n defaultClusterConfig: {\n securityPostureConfig: {\n mode: \"DISABLED\",\n vulnerabilityMode: \"VULNERABILITY_DISABLED\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.gkehub.Fleet(\"default\",\n display_name=\"my production fleet\",\n default_cluster_config={\n \"securityPostureConfig\": {\n \"mode\": \"DISABLED\",\n \"vulnerabilityMode\": \"VULNERABILITY_DISABLED\",\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 @default = new Gcp.GkeHub.Fleet(\"default\", new()\n {\n DisplayName = \"my production fleet\",\n DefaultClusterConfig = new Gcp.GkeHub.Inputs.FleetDefaultClusterConfigArgs\n {\n SecurityPostureConfig = new Gcp.GkeHub.Inputs.FleetDefaultClusterConfigSecurityPostureConfigArgs\n {\n Mode = \"DISABLED\",\n VulnerabilityMode = \"VULNERABILITY_DISABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFleet(ctx, \"default\", \u0026gkehub.FleetArgs{\n\t\t\tDisplayName: pulumi.String(\"my production fleet\"),\n\t\t\tDefaultClusterConfig: \u0026gkehub.FleetDefaultClusterConfigArgs{\n\t\t\t\tSecurityPostureConfig: \u0026gkehub.FleetDefaultClusterConfigSecurityPostureConfigArgs{\n\t\t\t\t\tMode: pulumi.String(\"DISABLED\"),\n\t\t\t\t\tVulnerabilityMode: pulumi.String(\"VULNERABILITY_DISABLED\"),\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.gkehub.Fleet;\nimport com.pulumi.gcp.gkehub.FleetArgs;\nimport com.pulumi.gcp.gkehub.inputs.FleetDefaultClusterConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FleetDefaultClusterConfigSecurityPostureConfigArgs;\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 Fleet(\"default\", FleetArgs.builder()\n .displayName(\"my production fleet\")\n .defaultClusterConfig(FleetDefaultClusterConfigArgs.builder()\n .securityPostureConfig(FleetDefaultClusterConfigSecurityPostureConfigArgs.builder()\n .mode(\"DISABLED\")\n .vulnerabilityMode(\"VULNERABILITY_DISABLED\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:gkehub:Fleet\n properties:\n displayName: my production fleet\n defaultClusterConfig:\n securityPostureConfig:\n mode: DISABLED\n vulnerabilityMode: VULNERABILITY_DISABLED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFleet can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/fleets/default`\n\n* `{{project}}`\n\nWhen using the `pulumi import` command, Fleet can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkehub/fleet:Fleet default projects/{{project}}/locations/global/fleets/default\n```\n\n```sh\n$ pulumi import gcp:gkehub/fleet:Fleet default {{project}}\n```\n\n", + "description": "Fleet contains information about a group of clusters.\n\n\nTo get more information about Fleet, see:\n\n* [API documentation](https://cloud.google.com/anthos/multicluster-management/reference/rest/v1/projects.locations.fleets)\n* How-to Guides\n * [Registering a Cluster to a Fleet](https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster#register_cluster)\n\n## Example Usage\n\n### Gkehub Fleet Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.gkehub.Fleet(\"default\", {\n displayName: \"my production fleet\",\n defaultClusterConfig: {\n securityPostureConfig: {\n mode: \"DISABLED\",\n vulnerabilityMode: \"VULNERABILITY_DISABLED\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.gkehub.Fleet(\"default\",\n display_name=\"my production fleet\",\n default_cluster_config={\n \"security_posture_config\": {\n \"mode\": \"DISABLED\",\n \"vulnerability_mode\": \"VULNERABILITY_DISABLED\",\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 @default = new Gcp.GkeHub.Fleet(\"default\", new()\n {\n DisplayName = \"my production fleet\",\n DefaultClusterConfig = new Gcp.GkeHub.Inputs.FleetDefaultClusterConfigArgs\n {\n SecurityPostureConfig = new Gcp.GkeHub.Inputs.FleetDefaultClusterConfigSecurityPostureConfigArgs\n {\n Mode = \"DISABLED\",\n VulnerabilityMode = \"VULNERABILITY_DISABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\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 := gkehub.NewFleet(ctx, \"default\", \u0026gkehub.FleetArgs{\n\t\t\tDisplayName: pulumi.String(\"my production fleet\"),\n\t\t\tDefaultClusterConfig: \u0026gkehub.FleetDefaultClusterConfigArgs{\n\t\t\t\tSecurityPostureConfig: \u0026gkehub.FleetDefaultClusterConfigSecurityPostureConfigArgs{\n\t\t\t\t\tMode: pulumi.String(\"DISABLED\"),\n\t\t\t\t\tVulnerabilityMode: pulumi.String(\"VULNERABILITY_DISABLED\"),\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.gkehub.Fleet;\nimport com.pulumi.gcp.gkehub.FleetArgs;\nimport com.pulumi.gcp.gkehub.inputs.FleetDefaultClusterConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FleetDefaultClusterConfigSecurityPostureConfigArgs;\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 Fleet(\"default\", FleetArgs.builder()\n .displayName(\"my production fleet\")\n .defaultClusterConfig(FleetDefaultClusterConfigArgs.builder()\n .securityPostureConfig(FleetDefaultClusterConfigSecurityPostureConfigArgs.builder()\n .mode(\"DISABLED\")\n .vulnerabilityMode(\"VULNERABILITY_DISABLED\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:gkehub:Fleet\n properties:\n displayName: my production fleet\n defaultClusterConfig:\n securityPostureConfig:\n mode: DISABLED\n vulnerabilityMode: VULNERABILITY_DISABLED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFleet can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/fleets/default`\n\n* `{{project}}`\n\nWhen using the `pulumi import` command, Fleet can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkehub/fleet:Fleet default projects/{{project}}/locations/global/fleets/default\n```\n\n```sh\n$ pulumi import gcp:gkehub/fleet:Fleet default {{project}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -195954,7 +195954,7 @@ } }, "gcp:gkehub/membership:Membership": { - "description": "Membership contains information about a member cluster.\n\n\nTo get more information about Membership, see:\n\n* [API documentation](https://cloud.google.com/anthos/multicluster-management/reference/rest/v1/projects.locations.memberships)\n* How-to Guides\n * [Registering a Cluster](https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster#register_cluster)\n\n## Example Usage\n\n### Gkehub Membership Regional\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"basic-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n deletionProtection: false,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"basic\",\n location: \"us-west1\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${primary.id}`,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"basic-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n deletion_protection=False,\n network=\"default\",\n subnetwork=\"default\")\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"basic\",\n location=\"us-west1\",\n endpoint={\n \"gkeCluster\": {\n \"resourceLink\": primary.id.apply(lambda id: f\"//container.googleapis.com/{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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n DeletionProtection = false,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"basic\",\n Location = \"us-west1\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = primary.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"basic\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: primary.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), 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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .deletionProtection(false)\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"basic\")\n .location(\"us-west1\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(primary.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: basic-cluster\n location: us-central1-a\n initialNodeCount: 1\n deletionProtection: false\n network: default\n subnetwork: default\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: basic\n location: us-west1\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${primary.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkehub Membership Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"basic-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"basic\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${primary.id}`,\n },\n },\n labels: {\n env: \"test\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"basic-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"basic\",\n endpoint={\n \"gkeCluster\": {\n \"resourceLink\": primary.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n },\n labels={\n \"env\": \"test\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"basic\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = primary.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n Labels = \n {\n { \"env\", \"test\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"basic\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: primary.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"test\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"basic\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(primary.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .labels(Map.of(\"env\", \"test\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: basic-cluster\n location: us-central1-a\n initialNodeCount: 1\n deletionProtection: 'true'\n network: default\n subnetwork: default\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: basic\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${primary.id}\n labels:\n env: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkehub Membership Issuer\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"basic-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"basic\",\n endpoint: {\n gkeCluster: {\n resourceLink: primary.id,\n },\n },\n authority: {\n issuer: pulumi.interpolate`https://container.googleapis.com/v1/${primary.id}`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"basic-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n workload_identity_config={\n \"workloadPool\": \"my-project-name.svc.id.goog\",\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"basic\",\n endpoint={\n \"gkeCluster\": {\n \"resourceLink\": primary.id,\n },\n },\n authority={\n \"issuer\": primary.id.apply(lambda id: f\"https://container.googleapis.com/v1/{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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"basic\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = primary.Id,\n },\n },\n Authority = new Gcp.GkeHub.Inputs.MembershipAuthorityArgs\n {\n Issuer = primary.Id.Apply(id =\u003e $\"https://container.googleapis.com/v1/{id}\"),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"basic\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: primary.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAuthority: \u0026gkehub.MembershipAuthorityArgs{\n\t\t\t\tIssuer: primary.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"https://container.googleapis.com/v1/%v\", id), nil\n\t\t\t\t}).(pulumi.StringOutput),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipAuthorityArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"basic\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(primary.id())\n .build())\n .build())\n .authority(MembershipAuthorityArgs.builder()\n .issuer(primary.id().applyValue(id -\u003e String.format(\"https://container.googleapis.com/v1/%s\", id)))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: basic-cluster\n location: us-central1-a\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n deletionProtection: 'true'\n network: default\n subnetwork: default\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: basic\n endpoint:\n gkeCluster:\n resourceLink: ${primary.id}\n authority:\n issuer: https://container.googleapis.com/v1/${primary.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMembership can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/memberships/{{membership_id}}`\n\n* `{{project}}/{{location}}/{{membership_id}}`\n\n* `{{location}}/{{membership_id}}`\n\nWhen using the `pulumi import` command, Membership can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkehub/membership:Membership default projects/{{project}}/locations/{{location}}/memberships/{{membership_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/membership:Membership default {{project}}/{{location}}/{{membership_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/membership:Membership default {{location}}/{{membership_id}}\n```\n\n", + "description": "Membership contains information about a member cluster.\n\n\nTo get more information about Membership, see:\n\n* [API documentation](https://cloud.google.com/anthos/multicluster-management/reference/rest/v1/projects.locations.memberships)\n* How-to Guides\n * [Registering a Cluster](https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster#register_cluster)\n\n## Example Usage\n\n### Gkehub Membership Regional\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"basic-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n deletionProtection: false,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"basic\",\n location: \"us-west1\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${primary.id}`,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"basic-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n deletion_protection=False,\n network=\"default\",\n subnetwork=\"default\")\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"basic\",\n location=\"us-west1\",\n endpoint={\n \"gke_cluster\": {\n \"resource_link\": primary.id.apply(lambda id: f\"//container.googleapis.com/{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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n DeletionProtection = false,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"basic\",\n Location = \"us-west1\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = primary.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"basic\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: primary.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), 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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .deletionProtection(false)\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"basic\")\n .location(\"us-west1\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(primary.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: basic-cluster\n location: us-central1-a\n initialNodeCount: 1\n deletionProtection: false\n network: default\n subnetwork: default\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: basic\n location: us-west1\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${primary.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkehub Membership Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"basic-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"basic\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${primary.id}`,\n },\n },\n labels: {\n env: \"test\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"basic-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"basic\",\n endpoint={\n \"gke_cluster\": {\n \"resource_link\": primary.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n },\n labels={\n \"env\": \"test\",\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"basic\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = primary.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n Labels = \n {\n { \"env\", \"test\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"basic\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: primary.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"test\"),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"basic\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(primary.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .labels(Map.of(\"env\", \"test\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: basic-cluster\n location: us-central1-a\n initialNodeCount: 1\n deletionProtection: 'true'\n network: default\n subnetwork: default\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: basic\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${primary.id}\n labels:\n env: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkehub Membership Issuer\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"basic-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"basic\",\n endpoint: {\n gkeCluster: {\n resourceLink: primary.id,\n },\n },\n authority: {\n issuer: pulumi.interpolate`https://container.googleapis.com/v1/${primary.id}`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"basic-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"basic\",\n endpoint={\n \"gke_cluster\": {\n \"resource_link\": primary.id,\n },\n },\n authority={\n \"issuer\": primary.id.apply(lambda id: f\"https://container.googleapis.com/v1/{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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"basic\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = primary.Id,\n },\n },\n Authority = new Gcp.GkeHub.Inputs.MembershipAuthorityArgs\n {\n Issuer = primary.Id.Apply(id =\u003e $\"https://container.googleapis.com/v1/{id}\"),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"basic\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: primary.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAuthority: \u0026gkehub.MembershipAuthorityArgs{\n\t\t\t\tIssuer: primary.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"https://container.googleapis.com/v1/%v\", id), nil\n\t\t\t\t}).(pulumi.StringOutput),\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.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipAuthorityArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"basic\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(primary.id())\n .build())\n .build())\n .authority(MembershipAuthorityArgs.builder()\n .issuer(primary.id().applyValue(id -\u003e String.format(\"https://container.googleapis.com/v1/%s\", id)))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: basic-cluster\n location: us-central1-a\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n deletionProtection: 'true'\n network: default\n subnetwork: default\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: basic\n endpoint:\n gkeCluster:\n resourceLink: ${primary.id}\n authority:\n issuer: https://container.googleapis.com/v1/${primary.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMembership can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/memberships/{{membership_id}}`\n\n* `{{project}}/{{location}}/{{membership_id}}`\n\n* `{{location}}/{{membership_id}}`\n\nWhen using the `pulumi import` command, Membership can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkehub/membership:Membership default projects/{{project}}/locations/{{location}}/memberships/{{membership_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/membership:Membership default {{project}}/{{location}}/{{membership_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/membership:Membership default {{location}}/{{membership_id}}\n```\n\n", "properties": { "authority": { "$ref": "#/types/gcp:gkehub/MembershipAuthority:MembershipAuthority", @@ -196121,7 +196121,7 @@ } }, "gcp:gkehub/membershipBinding:MembershipBinding": { - "description": "MembershipBinding is a subresource of a Membership, representing what Fleet Scopes (or other, future Fleet resources) a Membership is bound to.\n\n\nTo get more information about MembershipBinding, see:\n\n* [API documentation](https://cloud.google.com/anthos/fleet-management/docs/reference/rest/v1/projects.locations.memberships.bindings)\n* How-to Guides\n * [Registering a Cluster](https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster#register_cluster)\n\n## Example Usage\n\n### Gkehub Membership Binding Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"basic-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"tf-test-membership_39249\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${primary.id}`,\n },\n },\n}, {\n dependsOn: [primary],\n});\nconst scope = new gcp.gkehub.Scope(\"scope\", {scopeId: \"tf-test-scope_74391\"});\nconst membershipBinding = new gcp.gkehub.MembershipBinding(\"membership_binding\", {\n membershipBindingId: \"tf-test-membership-binding_16511\",\n scope: scope.name,\n membershipId: membership.membershipId,\n location: \"global\",\n labels: {\n keyb: \"valueb\",\n keya: \"valuea\",\n keyc: \"valuec\",\n },\n}, {\n dependsOn: [\n membership,\n scope,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"basic-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"tf-test-membership_39249\",\n endpoint={\n \"gkeCluster\": {\n \"resourceLink\": primary.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[primary]))\nscope = gcp.gkehub.Scope(\"scope\", scope_id=\"tf-test-scope_74391\")\nmembership_binding = gcp.gkehub.MembershipBinding(\"membership_binding\",\n membership_binding_id=\"tf-test-membership-binding_16511\",\n scope=scope.name,\n membership_id=membership.membership_id,\n location=\"global\",\n labels={\n \"keyb\": \"valueb\",\n \"keya\": \"valuea\",\n \"keyc\": \"valuec\",\n },\n opts = pulumi.ResourceOptions(depends_on=[\n membership,\n scope,\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"tf-test-membership_39249\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = primary.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n primary,\n },\n });\n\n var scope = new Gcp.GkeHub.Scope(\"scope\", new()\n {\n ScopeId = \"tf-test-scope_74391\",\n });\n\n var membershipBinding = new Gcp.GkeHub.MembershipBinding(\"membership_binding\", new()\n {\n MembershipBindingId = \"tf-test-membership-binding_16511\",\n Scope = scope.Name,\n MembershipId = membership.MembershipId,\n Location = \"global\",\n Labels = \n {\n { \"keyb\", \"valueb\" },\n { \"keya\", \"valuea\" },\n { \"keyc\", \"valuec\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n membership,\n scope,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"tf-test-membership_39249\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: primary.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprimary,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tscope, err := gkehub.NewScope(ctx, \"scope\", \u0026gkehub.ScopeArgs{\n\t\t\tScopeId: pulumi.String(\"tf-test-scope_74391\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewMembershipBinding(ctx, \"membership_binding\", \u0026gkehub.MembershipBindingArgs{\n\t\t\tMembershipBindingId: pulumi.String(\"tf-test-membership-binding_16511\"),\n\t\t\tScope: scope.Name,\n\t\t\tMembershipId: membership.MembershipId,\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"keyb\": pulumi.String(\"valueb\"),\n\t\t\t\t\"keya\": pulumi.String(\"valuea\"),\n\t\t\t\t\"keyc\": pulumi.String(\"valuec\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmembership,\n\t\t\tscope,\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.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.Scope;\nimport com.pulumi.gcp.gkehub.ScopeArgs;\nimport com.pulumi.gcp.gkehub.MembershipBinding;\nimport com.pulumi.gcp.gkehub.MembershipBindingArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"tf-test-membership_39249\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(primary.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(primary)\n .build());\n\n var scope = new Scope(\"scope\", ScopeArgs.builder()\n .scopeId(\"tf-test-scope_74391\")\n .build());\n\n var membershipBinding = new MembershipBinding(\"membershipBinding\", MembershipBindingArgs.builder()\n .membershipBindingId(\"tf-test-membership-binding_16511\")\n .scope(scope.name())\n .membershipId(membership.membershipId())\n .location(\"global\")\n .labels(Map.ofEntries(\n Map.entry(\"keyb\", \"valueb\"),\n Map.entry(\"keya\", \"valuea\"),\n Map.entry(\"keyc\", \"valuec\")\n ))\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n membership,\n scope)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: basic-cluster\n location: us-central1-a\n initialNodeCount: 1\n deletionProtection: 'true'\n network: default\n subnetwork: default\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: tf-test-membership_39249\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${primary.id}\n options:\n dependson:\n - ${primary}\n scope:\n type: gcp:gkehub:Scope\n properties:\n scopeId: tf-test-scope_74391\n membershipBinding:\n type: gcp:gkehub:MembershipBinding\n name: membership_binding\n properties:\n membershipBindingId: tf-test-membership-binding_16511\n scope: ${scope.name}\n membershipId: ${membership.membershipId}\n location: global\n labels:\n keyb: valueb\n keya: valuea\n keyc: valuec\n options:\n dependson:\n - ${membership}\n - ${scope}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMembershipBinding can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/memberships/{{membership_id}}/bindings/{{membership_binding_id}}`\n\n* `{{project}}/{{location}}/{{membership_id}}/{{membership_binding_id}}`\n\n* `{{location}}/{{membership_id}}/{{membership_binding_id}}`\n\nWhen using the `pulumi import` command, MembershipBinding can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkehub/membershipBinding:MembershipBinding default projects/{{project}}/locations/{{location}}/memberships/{{membership_id}}/bindings/{{membership_binding_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/membershipBinding:MembershipBinding default {{project}}/{{location}}/{{membership_id}}/{{membership_binding_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/membershipBinding:MembershipBinding default {{location}}/{{membership_id}}/{{membership_binding_id}}\n```\n\n", + "description": "MembershipBinding is a subresource of a Membership, representing what Fleet Scopes (or other, future Fleet resources) a Membership is bound to.\n\n\nTo get more information about MembershipBinding, see:\n\n* [API documentation](https://cloud.google.com/anthos/fleet-management/docs/reference/rest/v1/projects.locations.memberships.bindings)\n* How-to Guides\n * [Registering a Cluster](https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster#register_cluster)\n\n## Example Usage\n\n### Gkehub Membership Binding Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"basic-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"tf-test-membership_39249\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${primary.id}`,\n },\n },\n}, {\n dependsOn: [primary],\n});\nconst scope = new gcp.gkehub.Scope(\"scope\", {scopeId: \"tf-test-scope_74391\"});\nconst membershipBinding = new gcp.gkehub.MembershipBinding(\"membership_binding\", {\n membershipBindingId: \"tf-test-membership-binding_16511\",\n scope: scope.name,\n membershipId: membership.membershipId,\n location: \"global\",\n labels: {\n keyb: \"valueb\",\n keya: \"valuea\",\n keyc: \"valuec\",\n },\n}, {\n dependsOn: [\n membership,\n scope,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"basic-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"tf-test-membership_39249\",\n endpoint={\n \"gke_cluster\": {\n \"resource_link\": primary.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[primary]))\nscope = gcp.gkehub.Scope(\"scope\", scope_id=\"tf-test-scope_74391\")\nmembership_binding = gcp.gkehub.MembershipBinding(\"membership_binding\",\n membership_binding_id=\"tf-test-membership-binding_16511\",\n scope=scope.name,\n membership_id=membership.membership_id,\n location=\"global\",\n labels={\n \"keyb\": \"valueb\",\n \"keya\": \"valuea\",\n \"keyc\": \"valuec\",\n },\n opts = pulumi.ResourceOptions(depends_on=[\n membership,\n scope,\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"tf-test-membership_39249\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = primary.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n primary,\n },\n });\n\n var scope = new Gcp.GkeHub.Scope(\"scope\", new()\n {\n ScopeId = \"tf-test-scope_74391\",\n });\n\n var membershipBinding = new Gcp.GkeHub.MembershipBinding(\"membership_binding\", new()\n {\n MembershipBindingId = \"tf-test-membership-binding_16511\",\n Scope = scope.Name,\n MembershipId = membership.MembershipId,\n Location = \"global\",\n Labels = \n {\n { \"keyb\", \"valueb\" },\n { \"keya\", \"valuea\" },\n { \"keyc\", \"valuec\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n membership,\n scope,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"tf-test-membership_39249\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: primary.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprimary,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tscope, err := gkehub.NewScope(ctx, \"scope\", \u0026gkehub.ScopeArgs{\n\t\t\tScopeId: pulumi.String(\"tf-test-scope_74391\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewMembershipBinding(ctx, \"membership_binding\", \u0026gkehub.MembershipBindingArgs{\n\t\t\tMembershipBindingId: pulumi.String(\"tf-test-membership-binding_16511\"),\n\t\t\tScope: scope.Name,\n\t\t\tMembershipId: membership.MembershipId,\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"keyb\": pulumi.String(\"valueb\"),\n\t\t\t\t\"keya\": pulumi.String(\"valuea\"),\n\t\t\t\t\"keyc\": pulumi.String(\"valuec\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmembership,\n\t\t\tscope,\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.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.Scope;\nimport com.pulumi.gcp.gkehub.ScopeArgs;\nimport com.pulumi.gcp.gkehub.MembershipBinding;\nimport com.pulumi.gcp.gkehub.MembershipBindingArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"tf-test-membership_39249\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(primary.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(primary)\n .build());\n\n var scope = new Scope(\"scope\", ScopeArgs.builder()\n .scopeId(\"tf-test-scope_74391\")\n .build());\n\n var membershipBinding = new MembershipBinding(\"membershipBinding\", MembershipBindingArgs.builder()\n .membershipBindingId(\"tf-test-membership-binding_16511\")\n .scope(scope.name())\n .membershipId(membership.membershipId())\n .location(\"global\")\n .labels(Map.ofEntries(\n Map.entry(\"keyb\", \"valueb\"),\n Map.entry(\"keya\", \"valuea\"),\n Map.entry(\"keyc\", \"valuec\")\n ))\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n membership,\n scope)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: basic-cluster\n location: us-central1-a\n initialNodeCount: 1\n deletionProtection: 'true'\n network: default\n subnetwork: default\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: tf-test-membership_39249\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${primary.id}\n options:\n dependson:\n - ${primary}\n scope:\n type: gcp:gkehub:Scope\n properties:\n scopeId: tf-test-scope_74391\n membershipBinding:\n type: gcp:gkehub:MembershipBinding\n name: membership_binding\n properties:\n membershipBindingId: tf-test-membership-binding_16511\n scope: ${scope.name}\n membershipId: ${membership.membershipId}\n location: global\n labels:\n keyb: valueb\n keya: valuea\n keyc: valuec\n options:\n dependson:\n - ${membership}\n - ${scope}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMembershipBinding can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/memberships/{{membership_id}}/bindings/{{membership_binding_id}}`\n\n* `{{project}}/{{location}}/{{membership_id}}/{{membership_binding_id}}`\n\n* `{{location}}/{{membership_id}}/{{membership_binding_id}}`\n\nWhen using the `pulumi import` command, MembershipBinding can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkehub/membershipBinding:MembershipBinding default projects/{{project}}/locations/{{location}}/memberships/{{membership_id}}/bindings/{{membership_binding_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/membershipBinding:MembershipBinding default {{project}}/{{location}}/{{membership_id}}/{{membership_binding_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/membershipBinding:MembershipBinding default {{location}}/{{membership_id}}/{{membership_binding_id}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -196644,7 +196644,7 @@ } }, "gcp:gkehub/membershipRbacRoleBinding:MembershipRbacRoleBinding": { - "description": "## Example Usage\n\n### Gkehub Membership Rbac Role Binding Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"basic-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"tf-test-membership_8493\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${primary.id}`,\n },\n },\n}, {\n dependsOn: [primary],\n});\nconst project = gcp.organizations.getProject({});\nconst membershipRbacRoleBinding = new gcp.gkehub.MembershipRbacRoleBinding(\"membership_rbac_role_binding\", {\n membershipRbacRoleBindingId: \"tf-test-membership-rbac-role-binding_9106\",\n membershipId: membership.membershipId,\n user: project.then(project =\u003e `service-${project.number}@gcp-sa-anthossupport.iam.gserviceaccount.com`),\n role: {\n predefinedRole: \"ANTHOS_SUPPORT\",\n },\n location: \"global\",\n}, {\n dependsOn: [membership],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"basic-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"tf-test-membership_8493\",\n endpoint={\n \"gkeCluster\": {\n \"resourceLink\": primary.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[primary]))\nproject = gcp.organizations.get_project()\nmembership_rbac_role_binding = gcp.gkehub.MembershipRbacRoleBinding(\"membership_rbac_role_binding\",\n membership_rbac_role_binding_id=\"tf-test-membership-rbac-role-binding_9106\",\n membership_id=membership.membership_id,\n user=f\"service-{project.number}@gcp-sa-anthossupport.iam.gserviceaccount.com\",\n role={\n \"predefinedRole\": \"ANTHOS_SUPPORT\",\n },\n location=\"global\",\n opts = pulumi.ResourceOptions(depends_on=[membership]))\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"tf-test-membership_8493\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = primary.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n primary,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var membershipRbacRoleBinding = new Gcp.GkeHub.MembershipRbacRoleBinding(\"membership_rbac_role_binding\", new()\n {\n MembershipRbacRoleBindingId = \"tf-test-membership-rbac-role-binding_9106\",\n MembershipId = membership.MembershipId,\n User = $\"service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-anthossupport.iam.gserviceaccount.com\",\n Role = new Gcp.GkeHub.Inputs.MembershipRbacRoleBindingRoleArgs\n {\n PredefinedRole = \"ANTHOS_SUPPORT\",\n },\n Location = \"global\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n membership,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"tf-test-membership_8493\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: primary.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprimary,\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\t_, err = gkehub.NewMembershipRbacRoleBinding(ctx, \"membership_rbac_role_binding\", \u0026gkehub.MembershipRbacRoleBindingArgs{\n\t\t\tMembershipRbacRoleBindingId: pulumi.String(\"tf-test-membership-rbac-role-binding_9106\"),\n\t\t\tMembershipId: membership.MembershipId,\n\t\t\tUser: pulumi.String(fmt.Sprintf(\"service-%v@gcp-sa-anthossupport.iam.gserviceaccount.com\", project.Number)),\n\t\t\tRole: \u0026gkehub.MembershipRbacRoleBindingRoleArgs{\n\t\t\t\tPredefinedRole: pulumi.String(\"ANTHOS_SUPPORT\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmembership,\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.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.gkehub.MembershipRbacRoleBinding;\nimport com.pulumi.gcp.gkehub.MembershipRbacRoleBindingArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipRbacRoleBindingRoleArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"tf-test-membership_8493\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(primary.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(primary)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var membershipRbacRoleBinding = new MembershipRbacRoleBinding(\"membershipRbacRoleBinding\", MembershipRbacRoleBindingArgs.builder()\n .membershipRbacRoleBindingId(\"tf-test-membership-rbac-role-binding_9106\")\n .membershipId(membership.membershipId())\n .user(String.format(\"service-%s@gcp-sa-anthossupport.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .role(MembershipRbacRoleBindingRoleArgs.builder()\n .predefinedRole(\"ANTHOS_SUPPORT\")\n .build())\n .location(\"global\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(membership)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: basic-cluster\n location: us-central1-a\n initialNodeCount: 1\n deletionProtection: 'true'\n network: default\n subnetwork: default\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: tf-test-membership_8493\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${primary.id}\n options:\n dependson:\n - ${primary}\n membershipRbacRoleBinding:\n type: gcp:gkehub:MembershipRbacRoleBinding\n name: membership_rbac_role_binding\n properties:\n membershipRbacRoleBindingId: tf-test-membership-rbac-role-binding_9106\n membershipId: ${membership.membershipId}\n user: service-${project.number}@gcp-sa-anthossupport.iam.gserviceaccount.com\n role:\n predefinedRole: ANTHOS_SUPPORT\n location: global\n options:\n dependson:\n - ${membership}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMembershipRBACRoleBinding can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/memberships/{{membership_id}}/rbacrolebindings/{{membership_rbac_role_binding_id}}`\n\n* `{{project}}/{{location}}/{{membership_id}}/{{membership_rbac_role_binding_id}}`\n\n* `{{location}}/{{membership_id}}/{{membership_rbac_role_binding_id}}`\n\nWhen using the `pulumi import` command, MembershipRBACRoleBinding can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkehub/membershipRbacRoleBinding:MembershipRbacRoleBinding default projects/{{project}}/locations/{{location}}/memberships/{{membership_id}}/rbacrolebindings/{{membership_rbac_role_binding_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/membershipRbacRoleBinding:MembershipRbacRoleBinding default {{project}}/{{location}}/{{membership_id}}/{{membership_rbac_role_binding_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/membershipRbacRoleBinding:MembershipRbacRoleBinding default {{location}}/{{membership_id}}/{{membership_rbac_role_binding_id}}\n```\n\n", + "description": "## Example Usage\n\n### Gkehub Membership Rbac Role Binding Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"basic-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"tf-test-membership_8493\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${primary.id}`,\n },\n },\n}, {\n dependsOn: [primary],\n});\nconst project = gcp.organizations.getProject({});\nconst membershipRbacRoleBinding = new gcp.gkehub.MembershipRbacRoleBinding(\"membership_rbac_role_binding\", {\n membershipRbacRoleBindingId: \"tf-test-membership-rbac-role-binding_9106\",\n membershipId: membership.membershipId,\n user: project.then(project =\u003e `service-${project.number}@gcp-sa-anthossupport.iam.gserviceaccount.com`),\n role: {\n predefinedRole: \"ANTHOS_SUPPORT\",\n },\n location: \"global\",\n}, {\n dependsOn: [membership],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"basic-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"tf-test-membership_8493\",\n endpoint={\n \"gke_cluster\": {\n \"resource_link\": primary.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[primary]))\nproject = gcp.organizations.get_project()\nmembership_rbac_role_binding = gcp.gkehub.MembershipRbacRoleBinding(\"membership_rbac_role_binding\",\n membership_rbac_role_binding_id=\"tf-test-membership-rbac-role-binding_9106\",\n membership_id=membership.membership_id,\n user=f\"service-{project.number}@gcp-sa-anthossupport.iam.gserviceaccount.com\",\n role={\n \"predefined_role\": \"ANTHOS_SUPPORT\",\n },\n location=\"global\",\n opts = pulumi.ResourceOptions(depends_on=[membership]))\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 primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"tf-test-membership_8493\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = primary.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n primary,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var membershipRbacRoleBinding = new Gcp.GkeHub.MembershipRbacRoleBinding(\"membership_rbac_role_binding\", new()\n {\n MembershipRbacRoleBindingId = \"tf-test-membership-rbac-role-binding_9106\",\n MembershipId = membership.MembershipId,\n User = $\"service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-anthossupport.iam.gserviceaccount.com\",\n Role = new Gcp.GkeHub.Inputs.MembershipRbacRoleBindingRoleArgs\n {\n PredefinedRole = \"ANTHOS_SUPPORT\",\n },\n Location = \"global\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n membership,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"tf-test-membership_8493\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: primary.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprimary,\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\t_, err = gkehub.NewMembershipRbacRoleBinding(ctx, \"membership_rbac_role_binding\", \u0026gkehub.MembershipRbacRoleBindingArgs{\n\t\t\tMembershipRbacRoleBindingId: pulumi.String(\"tf-test-membership-rbac-role-binding_9106\"),\n\t\t\tMembershipId: membership.MembershipId,\n\t\t\tUser: pulumi.String(fmt.Sprintf(\"service-%v@gcp-sa-anthossupport.iam.gserviceaccount.com\", project.Number)),\n\t\t\tRole: \u0026gkehub.MembershipRbacRoleBindingRoleArgs{\n\t\t\t\tPredefinedRole: pulumi.String(\"ANTHOS_SUPPORT\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmembership,\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.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.gkehub.MembershipRbacRoleBinding;\nimport com.pulumi.gcp.gkehub.MembershipRbacRoleBindingArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipRbacRoleBindingRoleArgs;\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 primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"tf-test-membership_8493\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(primary.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(primary)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var membershipRbacRoleBinding = new MembershipRbacRoleBinding(\"membershipRbacRoleBinding\", MembershipRbacRoleBindingArgs.builder()\n .membershipRbacRoleBindingId(\"tf-test-membership-rbac-role-binding_9106\")\n .membershipId(membership.membershipId())\n .user(String.format(\"service-%s@gcp-sa-anthossupport.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .role(MembershipRbacRoleBindingRoleArgs.builder()\n .predefinedRole(\"ANTHOS_SUPPORT\")\n .build())\n .location(\"global\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(membership)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: basic-cluster\n location: us-central1-a\n initialNodeCount: 1\n deletionProtection: 'true'\n network: default\n subnetwork: default\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: tf-test-membership_8493\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${primary.id}\n options:\n dependson:\n - ${primary}\n membershipRbacRoleBinding:\n type: gcp:gkehub:MembershipRbacRoleBinding\n name: membership_rbac_role_binding\n properties:\n membershipRbacRoleBindingId: tf-test-membership-rbac-role-binding_9106\n membershipId: ${membership.membershipId}\n user: service-${project.number}@gcp-sa-anthossupport.iam.gserviceaccount.com\n role:\n predefinedRole: ANTHOS_SUPPORT\n location: global\n options:\n dependson:\n - ${membership}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMembershipRBACRoleBinding can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/memberships/{{membership_id}}/rbacrolebindings/{{membership_rbac_role_binding_id}}`\n\n* `{{project}}/{{location}}/{{membership_id}}/{{membership_rbac_role_binding_id}}`\n\n* `{{location}}/{{membership_id}}/{{membership_rbac_role_binding_id}}`\n\nWhen using the `pulumi import` command, MembershipRBACRoleBinding can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkehub/membershipRbacRoleBinding:MembershipRbacRoleBinding default projects/{{project}}/locations/{{location}}/memberships/{{membership_id}}/rbacrolebindings/{{membership_rbac_role_binding_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/membershipRbacRoleBinding:MembershipRbacRoleBinding default {{project}}/{{location}}/{{membership_id}}/{{membership_rbac_role_binding_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/membershipRbacRoleBinding:MembershipRbacRoleBinding default {{location}}/{{membership_id}}/{{membership_rbac_role_binding_id}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -197482,7 +197482,7 @@ } }, "gcp:gkehub/scopeRbacRoleBinding:ScopeRbacRoleBinding": { - "description": "RBACRoleBinding represents a rbacrolebinding across the Fleet.\n\n\nTo get more information about ScopeRBACRoleBinding, see:\n\n* [API documentation](https://cloud.google.com/anthos/fleet-management/docs/reference/rest/v1/projects.locations.scopes.rbacrolebindings)\n* How-to Guides\n * [Registering a Cluster](https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster#register_cluster)\n\n## Example Usage\n\n### Gkehub Scope Rbac Role Binding Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst scope = new gcp.gkehub.Scope(\"scope\", {scopeId: \"tf-test-scope_41819\"});\nconst scopeRbacRoleBinding = new gcp.gkehub.ScopeRbacRoleBinding(\"scope_rbac_role_binding\", {\n scopeRbacRoleBindingId: \"tf-test-scope-rbac-role-binding_75092\",\n scopeId: scope.scopeId,\n user: \"test-email@gmail.com\",\n role: {\n predefinedRole: \"ADMIN\",\n },\n labels: {\n key: \"value\",\n },\n}, {\n dependsOn: [scope],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nscope = gcp.gkehub.Scope(\"scope\", scope_id=\"tf-test-scope_41819\")\nscope_rbac_role_binding = gcp.gkehub.ScopeRbacRoleBinding(\"scope_rbac_role_binding\",\n scope_rbac_role_binding_id=\"tf-test-scope-rbac-role-binding_75092\",\n scope_id=scope.scope_id,\n user=\"test-email@gmail.com\",\n role={\n \"predefinedRole\": \"ADMIN\",\n },\n labels={\n \"key\": \"value\",\n },\n opts = pulumi.ResourceOptions(depends_on=[scope]))\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 scope = new Gcp.GkeHub.Scope(\"scope\", new()\n {\n ScopeId = \"tf-test-scope_41819\",\n });\n\n var scopeRbacRoleBinding = new Gcp.GkeHub.ScopeRbacRoleBinding(\"scope_rbac_role_binding\", new()\n {\n ScopeRbacRoleBindingId = \"tf-test-scope-rbac-role-binding_75092\",\n ScopeId = scope.ScopeId,\n User = \"test-email@gmail.com\",\n Role = new Gcp.GkeHub.Inputs.ScopeRbacRoleBindingRoleArgs\n {\n PredefinedRole = \"ADMIN\",\n },\n Labels = \n {\n { \"key\", \"value\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n scope,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tscope, err := gkehub.NewScope(ctx, \"scope\", \u0026gkehub.ScopeArgs{\n\t\t\tScopeId: pulumi.String(\"tf-test-scope_41819\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewScopeRbacRoleBinding(ctx, \"scope_rbac_role_binding\", \u0026gkehub.ScopeRbacRoleBindingArgs{\n\t\t\tScopeRbacRoleBindingId: pulumi.String(\"tf-test-scope-rbac-role-binding_75092\"),\n\t\t\tScopeId: scope.ScopeId,\n\t\t\tUser: pulumi.String(\"test-email@gmail.com\"),\n\t\t\tRole: \u0026gkehub.ScopeRbacRoleBindingRoleArgs{\n\t\t\t\tPredefinedRole: pulumi.String(\"ADMIN\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tscope,\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.gkehub.Scope;\nimport com.pulumi.gcp.gkehub.ScopeArgs;\nimport com.pulumi.gcp.gkehub.ScopeRbacRoleBinding;\nimport com.pulumi.gcp.gkehub.ScopeRbacRoleBindingArgs;\nimport com.pulumi.gcp.gkehub.inputs.ScopeRbacRoleBindingRoleArgs;\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 scope = new Scope(\"scope\", ScopeArgs.builder()\n .scopeId(\"tf-test-scope_41819\")\n .build());\n\n var scopeRbacRoleBinding = new ScopeRbacRoleBinding(\"scopeRbacRoleBinding\", ScopeRbacRoleBindingArgs.builder()\n .scopeRbacRoleBindingId(\"tf-test-scope-rbac-role-binding_75092\")\n .scopeId(scope.scopeId())\n .user(\"test-email@gmail.com\")\n .role(ScopeRbacRoleBindingRoleArgs.builder()\n .predefinedRole(\"ADMIN\")\n .build())\n .labels(Map.of(\"key\", \"value\"))\n .build(), CustomResourceOptions.builder()\n .dependsOn(scope)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n scope:\n type: gcp:gkehub:Scope\n properties:\n scopeId: tf-test-scope_41819\n scopeRbacRoleBinding:\n type: gcp:gkehub:ScopeRbacRoleBinding\n name: scope_rbac_role_binding\n properties:\n scopeRbacRoleBindingId: tf-test-scope-rbac-role-binding_75092\n scopeId: ${scope.scopeId}\n user: test-email@gmail.com\n role:\n predefinedRole: ADMIN\n labels:\n key: value\n options:\n dependson:\n - ${scope}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nScopeRBACRoleBinding can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/scopes/{{scope_id}}/rbacrolebindings/{{scope_rbac_role_binding_id}}`\n\n* `{{project}}/{{scope_id}}/{{scope_rbac_role_binding_id}}`\n\n* `{{scope_id}}/{{scope_rbac_role_binding_id}}`\n\nWhen using the `pulumi import` command, ScopeRBACRoleBinding can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkehub/scopeRbacRoleBinding:ScopeRbacRoleBinding default projects/{{project}}/locations/global/scopes/{{scope_id}}/rbacrolebindings/{{scope_rbac_role_binding_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/scopeRbacRoleBinding:ScopeRbacRoleBinding default {{project}}/{{scope_id}}/{{scope_rbac_role_binding_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/scopeRbacRoleBinding:ScopeRbacRoleBinding default {{scope_id}}/{{scope_rbac_role_binding_id}}\n```\n\n", + "description": "RBACRoleBinding represents a rbacrolebinding across the Fleet.\n\n\nTo get more information about ScopeRBACRoleBinding, see:\n\n* [API documentation](https://cloud.google.com/anthos/fleet-management/docs/reference/rest/v1/projects.locations.scopes.rbacrolebindings)\n* How-to Guides\n * [Registering a Cluster](https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster#register_cluster)\n\n## Example Usage\n\n### Gkehub Scope Rbac Role Binding Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst scope = new gcp.gkehub.Scope(\"scope\", {scopeId: \"tf-test-scope_41819\"});\nconst scopeRbacRoleBinding = new gcp.gkehub.ScopeRbacRoleBinding(\"scope_rbac_role_binding\", {\n scopeRbacRoleBindingId: \"tf-test-scope-rbac-role-binding_75092\",\n scopeId: scope.scopeId,\n user: \"test-email@gmail.com\",\n role: {\n predefinedRole: \"ADMIN\",\n },\n labels: {\n key: \"value\",\n },\n}, {\n dependsOn: [scope],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nscope = gcp.gkehub.Scope(\"scope\", scope_id=\"tf-test-scope_41819\")\nscope_rbac_role_binding = gcp.gkehub.ScopeRbacRoleBinding(\"scope_rbac_role_binding\",\n scope_rbac_role_binding_id=\"tf-test-scope-rbac-role-binding_75092\",\n scope_id=scope.scope_id,\n user=\"test-email@gmail.com\",\n role={\n \"predefined_role\": \"ADMIN\",\n },\n labels={\n \"key\": \"value\",\n },\n opts = pulumi.ResourceOptions(depends_on=[scope]))\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 scope = new Gcp.GkeHub.Scope(\"scope\", new()\n {\n ScopeId = \"tf-test-scope_41819\",\n });\n\n var scopeRbacRoleBinding = new Gcp.GkeHub.ScopeRbacRoleBinding(\"scope_rbac_role_binding\", new()\n {\n ScopeRbacRoleBindingId = \"tf-test-scope-rbac-role-binding_75092\",\n ScopeId = scope.ScopeId,\n User = \"test-email@gmail.com\",\n Role = new Gcp.GkeHub.Inputs.ScopeRbacRoleBindingRoleArgs\n {\n PredefinedRole = \"ADMIN\",\n },\n Labels = \n {\n { \"key\", \"value\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n scope,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tscope, err := gkehub.NewScope(ctx, \"scope\", \u0026gkehub.ScopeArgs{\n\t\t\tScopeId: pulumi.String(\"tf-test-scope_41819\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewScopeRbacRoleBinding(ctx, \"scope_rbac_role_binding\", \u0026gkehub.ScopeRbacRoleBindingArgs{\n\t\t\tScopeRbacRoleBindingId: pulumi.String(\"tf-test-scope-rbac-role-binding_75092\"),\n\t\t\tScopeId: scope.ScopeId,\n\t\t\tUser: pulumi.String(\"test-email@gmail.com\"),\n\t\t\tRole: \u0026gkehub.ScopeRbacRoleBindingRoleArgs{\n\t\t\t\tPredefinedRole: pulumi.String(\"ADMIN\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tscope,\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.gkehub.Scope;\nimport com.pulumi.gcp.gkehub.ScopeArgs;\nimport com.pulumi.gcp.gkehub.ScopeRbacRoleBinding;\nimport com.pulumi.gcp.gkehub.ScopeRbacRoleBindingArgs;\nimport com.pulumi.gcp.gkehub.inputs.ScopeRbacRoleBindingRoleArgs;\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 scope = new Scope(\"scope\", ScopeArgs.builder()\n .scopeId(\"tf-test-scope_41819\")\n .build());\n\n var scopeRbacRoleBinding = new ScopeRbacRoleBinding(\"scopeRbacRoleBinding\", ScopeRbacRoleBindingArgs.builder()\n .scopeRbacRoleBindingId(\"tf-test-scope-rbac-role-binding_75092\")\n .scopeId(scope.scopeId())\n .user(\"test-email@gmail.com\")\n .role(ScopeRbacRoleBindingRoleArgs.builder()\n .predefinedRole(\"ADMIN\")\n .build())\n .labels(Map.of(\"key\", \"value\"))\n .build(), CustomResourceOptions.builder()\n .dependsOn(scope)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n scope:\n type: gcp:gkehub:Scope\n properties:\n scopeId: tf-test-scope_41819\n scopeRbacRoleBinding:\n type: gcp:gkehub:ScopeRbacRoleBinding\n name: scope_rbac_role_binding\n properties:\n scopeRbacRoleBindingId: tf-test-scope-rbac-role-binding_75092\n scopeId: ${scope.scopeId}\n user: test-email@gmail.com\n role:\n predefinedRole: ADMIN\n labels:\n key: value\n options:\n dependson:\n - ${scope}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nScopeRBACRoleBinding can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/scopes/{{scope_id}}/rbacrolebindings/{{scope_rbac_role_binding_id}}`\n\n* `{{project}}/{{scope_id}}/{{scope_rbac_role_binding_id}}`\n\n* `{{scope_id}}/{{scope_rbac_role_binding_id}}`\n\nWhen using the `pulumi import` command, ScopeRBACRoleBinding can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkehub/scopeRbacRoleBinding:ScopeRbacRoleBinding default projects/{{project}}/locations/global/scopes/{{scope_id}}/rbacrolebindings/{{scope_rbac_role_binding_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/scopeRbacRoleBinding:ScopeRbacRoleBinding default {{project}}/{{scope_id}}/{{scope_rbac_role_binding_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/scopeRbacRoleBinding:ScopeRbacRoleBinding default {{scope_id}}/{{scope_rbac_role_binding_id}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -197696,7 +197696,7 @@ } }, "gcp:gkeonprem/bareMetalAdminCluster:BareMetalAdminCluster": { - "description": "A Google Bare Metal Admin Cluster.\n\n\n\n## Example Usage\n\n### Gkeonprem Bare Metal Admin Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin_cluster_basic = new gcp.gkeonprem.BareMetalAdminCluster(\"admin-cluster-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n bareMetalVersion: \"1.13.4\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n nodeConfig: {\n maxPodsPerNode: 250,\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [\n {\n labels: {},\n nodeIp: \"10.200.0.2\",\n },\n {\n labels: {},\n nodeIp: \"10.200.0.3\",\n },\n {\n labels: {},\n nodeIp: \"10.200.0.4\",\n },\n ],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.5\",\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n nodeAccessConfig: {\n loginUser: \"root\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin_cluster_basic = gcp.gkeonprem.BareMetalAdminCluster(\"admin-cluster-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n bare_metal_version=\"1.13.4\",\n network_config={\n \"islandModeCidr\": {\n \"serviceAddressCidrBlocks\": [\"172.26.0.0/16\"],\n \"podAddressCidrBlocks\": [\"10.240.0.0/13\"],\n },\n },\n node_config={\n \"maxPodsPerNode\": 250,\n },\n control_plane={\n \"controlPlaneNodePoolConfig\": {\n \"nodePoolConfig\": {\n \"labels\": {},\n \"operatingSystem\": \"LINUX\",\n \"nodeConfigs\": [\n {\n \"labels\": {},\n \"nodeIp\": \"10.200.0.2\",\n },\n {\n \"labels\": {},\n \"nodeIp\": \"10.200.0.3\",\n },\n {\n \"labels\": {},\n \"nodeIp\": \"10.200.0.4\",\n },\n ],\n },\n },\n },\n load_balancer={\n \"portConfig\": {\n \"controlPlaneLoadBalancerPort\": 443,\n },\n \"vipConfig\": {\n \"controlPlaneVip\": \"10.200.0.5\",\n },\n },\n storage={\n \"lvpShareConfig\": {\n \"lvpConfig\": {\n \"path\": \"/mnt/localpv-share\",\n \"storageClass\": \"local-shared\",\n },\n \"sharedPathPvCount\": 5,\n },\n \"lvpNodeMountsConfig\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storageClass\": \"local-disks\",\n },\n },\n node_access_config={\n \"loginUser\": \"root\",\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 admin_cluster_basic = new Gcp.GkeOnPrem.BareMetalAdminCluster(\"admin-cluster-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n BareMetalVersion = \"1.13.4\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n NodeConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNodeConfigArgs\n {\n MaxPodsPerNode = 250,\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.2\",\n },\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.3\",\n },\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.4\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.5\",\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n NodeAccessConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNodeAccessConfigArgs\n {\n LoginUser = \"root\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewBareMetalAdminCluster(ctx, \"admin-cluster-basic\", \u0026gkeonprem.BareMetalAdminClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.13.4\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalAdminClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeConfig: \u0026gkeonprem.BareMetalAdminClusterNodeConfigArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(250),\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalAdminClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.2\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.3\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.4\"),\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\tLoadBalancer: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.5\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalAdminClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeAccessConfig: \u0026gkeonprem.BareMetalAdminClusterNodeAccessConfigArgs{\n\t\t\t\tLoginUser: pulumi.String(\"root\"),\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.gkeonprem.BareMetalAdminCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalAdminClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNodeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNodeAccessConfigArgs;\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 admin_cluster_basic = new BareMetalAdminCluster(\"admin-cluster-basic\", BareMetalAdminClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .bareMetalVersion(\"1.13.4\")\n .networkConfig(BareMetalAdminClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalAdminClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .nodeConfig(BareMetalAdminClusterNodeConfigArgs.builder()\n .maxPodsPerNode(250)\n .build())\n .controlPlane(BareMetalAdminClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs( \n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.2\")\n .build(),\n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.3\")\n .build(),\n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.4\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalAdminClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalAdminClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalAdminClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.5\")\n .build())\n .build())\n .storage(BareMetalAdminClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalAdminClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalAdminClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .nodeAccessConfig(BareMetalAdminClusterNodeAccessConfigArgs.builder()\n .loginUser(\"root\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n admin-cluster-basic:\n type: gcp:gkeonprem:BareMetalAdminCluster\n properties:\n name: my-cluster\n location: us-west1\n bareMetalVersion: 1.13.4\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n nodeConfig:\n maxPodsPerNode: 250\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.2\n - labels: {}\n nodeIp: 10.200.0.3\n - labels: {}\n nodeIp: 10.200.0.4\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.5\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n nodeAccessConfig:\n loginUser: root\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Bare Metal Admin Cluster Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin_cluster_basic = new gcp.gkeonprem.BareMetalAdminCluster(\"admin-cluster-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n description: \"test description\",\n bareMetalVersion: \"1.13.4\",\n annotations: {\n env: \"test\",\n },\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n nodeConfig: {\n maxPodsPerNode: 250,\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [\n {\n labels: {},\n nodeIp: \"10.200.0.2\",\n },\n {\n labels: {},\n nodeIp: \"10.200.0.3\",\n },\n {\n labels: {},\n nodeIp: \"10.200.0.4\",\n },\n ],\n taints: [{\n key: \"test-key\",\n value: \"test-value\",\n effect: \"NO_EXECUTE\",\n }],\n },\n },\n apiServerArgs: [{\n argument: \"test argument\",\n value: \"test value\",\n }],\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.5\",\n },\n manualLbConfig: {\n enabled: true,\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n nodeAccessConfig: {\n loginUser: \"root\",\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n maintenanceConfig: {\n maintenanceAddressCidrBlocks: [\n \"10.0.0.1/32\",\n \"10.0.0.2/32\",\n ],\n },\n clusterOperations: {\n enableApplicationLogs: true,\n },\n proxy: {\n uri: \"test proxy uri\",\n noProxies: [\"127.0.0.1\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin_cluster_basic = gcp.gkeonprem.BareMetalAdminCluster(\"admin-cluster-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n description=\"test description\",\n bare_metal_version=\"1.13.4\",\n annotations={\n \"env\": \"test\",\n },\n network_config={\n \"islandModeCidr\": {\n \"serviceAddressCidrBlocks\": [\"172.26.0.0/16\"],\n \"podAddressCidrBlocks\": [\"10.240.0.0/13\"],\n },\n },\n node_config={\n \"maxPodsPerNode\": 250,\n },\n control_plane={\n \"controlPlaneNodePoolConfig\": {\n \"nodePoolConfig\": {\n \"labels\": {},\n \"operatingSystem\": \"LINUX\",\n \"nodeConfigs\": [\n {\n \"labels\": {},\n \"nodeIp\": \"10.200.0.2\",\n },\n {\n \"labels\": {},\n \"nodeIp\": \"10.200.0.3\",\n },\n {\n \"labels\": {},\n \"nodeIp\": \"10.200.0.4\",\n },\n ],\n \"taints\": [{\n \"key\": \"test-key\",\n \"value\": \"test-value\",\n \"effect\": \"NO_EXECUTE\",\n }],\n },\n },\n \"apiServerArgs\": [{\n \"argument\": \"test argument\",\n \"value\": \"test value\",\n }],\n },\n load_balancer={\n \"portConfig\": {\n \"controlPlaneLoadBalancerPort\": 443,\n },\n \"vipConfig\": {\n \"controlPlaneVip\": \"10.200.0.5\",\n },\n \"manualLbConfig\": {\n \"enabled\": True,\n },\n },\n storage={\n \"lvpShareConfig\": {\n \"lvpConfig\": {\n \"path\": \"/mnt/localpv-share\",\n \"storageClass\": \"local-shared\",\n },\n \"sharedPathPvCount\": 5,\n },\n \"lvpNodeMountsConfig\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storageClass\": \"local-disks\",\n },\n },\n node_access_config={\n \"loginUser\": \"root\",\n },\n security_config={\n \"authorization\": {\n \"adminUsers\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n },\n maintenance_config={\n \"maintenanceAddressCidrBlocks\": [\n \"10.0.0.1/32\",\n \"10.0.0.2/32\",\n ],\n },\n cluster_operations={\n \"enableApplicationLogs\": True,\n },\n proxy={\n \"uri\": \"test proxy uri\",\n \"noProxies\": [\"127.0.0.1\"],\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 admin_cluster_basic = new Gcp.GkeOnPrem.BareMetalAdminCluster(\"admin-cluster-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n Description = \"test description\",\n BareMetalVersion = \"1.13.4\",\n Annotations = \n {\n { \"env\", \"test\" },\n },\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n NodeConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNodeConfigArgs\n {\n MaxPodsPerNode = 250,\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.2\",\n },\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.3\",\n },\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.4\",\n },\n },\n Taints = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs\n {\n Key = \"test-key\",\n Value = \"test-value\",\n Effect = \"NO_EXECUTE\",\n },\n },\n },\n },\n ApiServerArgs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneApiServerArgArgs\n {\n Argument = \"test argument\",\n Value = \"test value\",\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.5\",\n },\n ManualLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerManualLbConfigArgs\n {\n Enabled = true,\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n NodeAccessConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNodeAccessConfigArgs\n {\n LoginUser = \"root\",\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n MaintenanceConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterMaintenanceConfigArgs\n {\n MaintenanceAddressCidrBlocks = new[]\n {\n \"10.0.0.1/32\",\n \"10.0.0.2/32\",\n },\n },\n ClusterOperations = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterClusterOperationsArgs\n {\n EnableApplicationLogs = true,\n },\n Proxy = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterProxyArgs\n {\n Uri = \"test proxy uri\",\n NoProxies = new[]\n {\n \"127.0.0.1\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewBareMetalAdminCluster(ctx, \"admin-cluster-basic\", \u0026gkeonprem.BareMetalAdminClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tDescription: pulumi.String(\"test description\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.13.4\"),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"test\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalAdminClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeConfig: \u0026gkeonprem.BareMetalAdminClusterNodeConfigArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(250),\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalAdminClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.2\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.3\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.4\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTaints: gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs{\n\t\t\t\t\t\t\t\tKey: pulumi.String(\"test-key\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t\t\t\tEffect: pulumi.String(\"NO_EXECUTE\"),\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\tApiServerArgs: gkeonprem.BareMetalAdminClusterControlPlaneApiServerArgArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneApiServerArgArgs{\n\t\t\t\t\t\tArgument: pulumi.String(\"test argument\"),\n\t\t\t\t\t\tValue: pulumi.String(\"test value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.5\"),\n\t\t\t\t},\n\t\t\t\tManualLbConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerManualLbConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalAdminClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeAccessConfig: \u0026gkeonprem.BareMetalAdminClusterNodeAccessConfigArgs{\n\t\t\t\tLoginUser: pulumi.String(\"root\"),\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalAdminClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalAdminClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalAdminClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\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\tMaintenanceConfig: \u0026gkeonprem.BareMetalAdminClusterMaintenanceConfigArgs{\n\t\t\t\tMaintenanceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\tpulumi.String(\"10.0.0.2/32\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tClusterOperations: \u0026gkeonprem.BareMetalAdminClusterClusterOperationsArgs{\n\t\t\t\tEnableApplicationLogs: pulumi.Bool(true),\n\t\t\t},\n\t\t\tProxy: \u0026gkeonprem.BareMetalAdminClusterProxyArgs{\n\t\t\t\tUri: pulumi.String(\"test proxy uri\"),\n\t\t\t\tNoProxies: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"127.0.0.1\"),\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.gkeonprem.BareMetalAdminCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalAdminClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNodeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerManualLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNodeAccessConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterMaintenanceConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterClusterOperationsArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterProxyArgs;\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 admin_cluster_basic = new BareMetalAdminCluster(\"admin-cluster-basic\", BareMetalAdminClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .description(\"test description\")\n .bareMetalVersion(\"1.13.4\")\n .annotations(Map.of(\"env\", \"test\"))\n .networkConfig(BareMetalAdminClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalAdminClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .nodeConfig(BareMetalAdminClusterNodeConfigArgs.builder()\n .maxPodsPerNode(250)\n .build())\n .controlPlane(BareMetalAdminClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs( \n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.2\")\n .build(),\n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.3\")\n .build(),\n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.4\")\n .build())\n .taints(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs.builder()\n .key(\"test-key\")\n .value(\"test-value\")\n .effect(\"NO_EXECUTE\")\n .build())\n .build())\n .build())\n .apiServerArgs(BareMetalAdminClusterControlPlaneApiServerArgArgs.builder()\n .argument(\"test argument\")\n .value(\"test value\")\n .build())\n .build())\n .loadBalancer(BareMetalAdminClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalAdminClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalAdminClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.5\")\n .build())\n .manualLbConfig(BareMetalAdminClusterLoadBalancerManualLbConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .storage(BareMetalAdminClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalAdminClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalAdminClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .nodeAccessConfig(BareMetalAdminClusterNodeAccessConfigArgs.builder()\n .loginUser(\"root\")\n .build())\n .securityConfig(BareMetalAdminClusterSecurityConfigArgs.builder()\n .authorization(BareMetalAdminClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalAdminClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .maintenanceConfig(BareMetalAdminClusterMaintenanceConfigArgs.builder()\n .maintenanceAddressCidrBlocks( \n \"10.0.0.1/32\",\n \"10.0.0.2/32\")\n .build())\n .clusterOperations(BareMetalAdminClusterClusterOperationsArgs.builder()\n .enableApplicationLogs(true)\n .build())\n .proxy(BareMetalAdminClusterProxyArgs.builder()\n .uri(\"test proxy uri\")\n .noProxies(\"127.0.0.1\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n admin-cluster-basic:\n type: gcp:gkeonprem:BareMetalAdminCluster\n properties:\n name: my-cluster\n location: us-west1\n description: test description\n bareMetalVersion: 1.13.4\n annotations:\n env: test\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n nodeConfig:\n maxPodsPerNode: 250\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.2\n - labels: {}\n nodeIp: 10.200.0.3\n - labels: {}\n nodeIp: 10.200.0.4\n taints:\n - key: test-key\n value: test-value\n effect: NO_EXECUTE\n apiServerArgs:\n - argument: test argument\n value: test value\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.5\n manualLbConfig:\n enabled: true\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n nodeAccessConfig:\n loginUser: root\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n maintenanceConfig:\n maintenanceAddressCidrBlocks:\n - 10.0.0.1/32\n - 10.0.0.2/32\n clusterOperations:\n enableApplicationLogs: true\n proxy:\n uri: test proxy uri\n noProxies:\n - 127.0.0.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBareMetalAdminCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/bareMetalAdminClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, BareMetalAdminCluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalAdminCluster:BareMetalAdminCluster default projects/{{project}}/locations/{{location}}/bareMetalAdminClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalAdminCluster:BareMetalAdminCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalAdminCluster:BareMetalAdminCluster default {{location}}/{{name}}\n```\n\n", + "description": "A Google Bare Metal Admin Cluster.\n\n\n\n## Example Usage\n\n### Gkeonprem Bare Metal Admin Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin_cluster_basic = new gcp.gkeonprem.BareMetalAdminCluster(\"admin-cluster-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n bareMetalVersion: \"1.13.4\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n nodeConfig: {\n maxPodsPerNode: 250,\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [\n {\n labels: {},\n nodeIp: \"10.200.0.2\",\n },\n {\n labels: {},\n nodeIp: \"10.200.0.3\",\n },\n {\n labels: {},\n nodeIp: \"10.200.0.4\",\n },\n ],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.5\",\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n nodeAccessConfig: {\n loginUser: \"root\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin_cluster_basic = gcp.gkeonprem.BareMetalAdminCluster(\"admin-cluster-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n bare_metal_version=\"1.13.4\",\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n },\n node_config={\n \"max_pods_per_node\": 250,\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [\n {\n \"labels\": {},\n \"node_ip\": \"10.200.0.2\",\n },\n {\n \"labels\": {},\n \"node_ip\": \"10.200.0.3\",\n },\n {\n \"labels\": {},\n \"node_ip\": \"10.200.0.4\",\n },\n ],\n },\n },\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.5\",\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n node_access_config={\n \"login_user\": \"root\",\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 admin_cluster_basic = new Gcp.GkeOnPrem.BareMetalAdminCluster(\"admin-cluster-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n BareMetalVersion = \"1.13.4\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n NodeConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNodeConfigArgs\n {\n MaxPodsPerNode = 250,\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.2\",\n },\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.3\",\n },\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.4\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.5\",\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n NodeAccessConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNodeAccessConfigArgs\n {\n LoginUser = \"root\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewBareMetalAdminCluster(ctx, \"admin-cluster-basic\", \u0026gkeonprem.BareMetalAdminClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.13.4\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalAdminClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeConfig: \u0026gkeonprem.BareMetalAdminClusterNodeConfigArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(250),\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalAdminClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.2\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.3\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.4\"),\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\tLoadBalancer: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.5\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalAdminClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeAccessConfig: \u0026gkeonprem.BareMetalAdminClusterNodeAccessConfigArgs{\n\t\t\t\tLoginUser: pulumi.String(\"root\"),\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.gkeonprem.BareMetalAdminCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalAdminClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNodeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNodeAccessConfigArgs;\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 admin_cluster_basic = new BareMetalAdminCluster(\"admin-cluster-basic\", BareMetalAdminClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .bareMetalVersion(\"1.13.4\")\n .networkConfig(BareMetalAdminClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalAdminClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .nodeConfig(BareMetalAdminClusterNodeConfigArgs.builder()\n .maxPodsPerNode(250)\n .build())\n .controlPlane(BareMetalAdminClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs( \n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.2\")\n .build(),\n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.3\")\n .build(),\n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.4\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalAdminClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalAdminClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalAdminClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.5\")\n .build())\n .build())\n .storage(BareMetalAdminClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalAdminClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalAdminClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .nodeAccessConfig(BareMetalAdminClusterNodeAccessConfigArgs.builder()\n .loginUser(\"root\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n admin-cluster-basic:\n type: gcp:gkeonprem:BareMetalAdminCluster\n properties:\n name: my-cluster\n location: us-west1\n bareMetalVersion: 1.13.4\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n nodeConfig:\n maxPodsPerNode: 250\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.2\n - labels: {}\n nodeIp: 10.200.0.3\n - labels: {}\n nodeIp: 10.200.0.4\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.5\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n nodeAccessConfig:\n loginUser: root\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Bare Metal Admin Cluster Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin_cluster_basic = new gcp.gkeonprem.BareMetalAdminCluster(\"admin-cluster-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n description: \"test description\",\n bareMetalVersion: \"1.13.4\",\n annotations: {\n env: \"test\",\n },\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n nodeConfig: {\n maxPodsPerNode: 250,\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [\n {\n labels: {},\n nodeIp: \"10.200.0.2\",\n },\n {\n labels: {},\n nodeIp: \"10.200.0.3\",\n },\n {\n labels: {},\n nodeIp: \"10.200.0.4\",\n },\n ],\n taints: [{\n key: \"test-key\",\n value: \"test-value\",\n effect: \"NO_EXECUTE\",\n }],\n },\n },\n apiServerArgs: [{\n argument: \"test argument\",\n value: \"test value\",\n }],\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.5\",\n },\n manualLbConfig: {\n enabled: true,\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n nodeAccessConfig: {\n loginUser: \"root\",\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n maintenanceConfig: {\n maintenanceAddressCidrBlocks: [\n \"10.0.0.1/32\",\n \"10.0.0.2/32\",\n ],\n },\n clusterOperations: {\n enableApplicationLogs: true,\n },\n proxy: {\n uri: \"test proxy uri\",\n noProxies: [\"127.0.0.1\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin_cluster_basic = gcp.gkeonprem.BareMetalAdminCluster(\"admin-cluster-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n description=\"test description\",\n bare_metal_version=\"1.13.4\",\n annotations={\n \"env\": \"test\",\n },\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n },\n node_config={\n \"max_pods_per_node\": 250,\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [\n {\n \"labels\": {},\n \"node_ip\": \"10.200.0.2\",\n },\n {\n \"labels\": {},\n \"node_ip\": \"10.200.0.3\",\n },\n {\n \"labels\": {},\n \"node_ip\": \"10.200.0.4\",\n },\n ],\n \"taints\": [{\n \"key\": \"test-key\",\n \"value\": \"test-value\",\n \"effect\": \"NO_EXECUTE\",\n }],\n },\n },\n \"api_server_args\": [{\n \"argument\": \"test argument\",\n \"value\": \"test value\",\n }],\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.5\",\n },\n \"manual_lb_config\": {\n \"enabled\": True,\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n node_access_config={\n \"login_user\": \"root\",\n },\n security_config={\n \"authorization\": {\n \"admin_users\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n },\n maintenance_config={\n \"maintenance_address_cidr_blocks\": [\n \"10.0.0.1/32\",\n \"10.0.0.2/32\",\n ],\n },\n cluster_operations={\n \"enable_application_logs\": True,\n },\n proxy={\n \"uri\": \"test proxy uri\",\n \"no_proxies\": [\"127.0.0.1\"],\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 admin_cluster_basic = new Gcp.GkeOnPrem.BareMetalAdminCluster(\"admin-cluster-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n Description = \"test description\",\n BareMetalVersion = \"1.13.4\",\n Annotations = \n {\n { \"env\", \"test\" },\n },\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n NodeConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNodeConfigArgs\n {\n MaxPodsPerNode = 250,\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.2\",\n },\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.3\",\n },\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.4\",\n },\n },\n Taints = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs\n {\n Key = \"test-key\",\n Value = \"test-value\",\n Effect = \"NO_EXECUTE\",\n },\n },\n },\n },\n ApiServerArgs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneApiServerArgArgs\n {\n Argument = \"test argument\",\n Value = \"test value\",\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.5\",\n },\n ManualLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerManualLbConfigArgs\n {\n Enabled = true,\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n NodeAccessConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNodeAccessConfigArgs\n {\n LoginUser = \"root\",\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n MaintenanceConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterMaintenanceConfigArgs\n {\n MaintenanceAddressCidrBlocks = new[]\n {\n \"10.0.0.1/32\",\n \"10.0.0.2/32\",\n },\n },\n ClusterOperations = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterClusterOperationsArgs\n {\n EnableApplicationLogs = true,\n },\n Proxy = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterProxyArgs\n {\n Uri = \"test proxy uri\",\n NoProxies = new[]\n {\n \"127.0.0.1\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewBareMetalAdminCluster(ctx, \"admin-cluster-basic\", \u0026gkeonprem.BareMetalAdminClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tDescription: pulumi.String(\"test description\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.13.4\"),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"test\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalAdminClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeConfig: \u0026gkeonprem.BareMetalAdminClusterNodeConfigArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(250),\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalAdminClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.2\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.3\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.4\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTaints: gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs{\n\t\t\t\t\t\t\t\tKey: pulumi.String(\"test-key\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t\t\t\tEffect: pulumi.String(\"NO_EXECUTE\"),\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\tApiServerArgs: gkeonprem.BareMetalAdminClusterControlPlaneApiServerArgArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneApiServerArgArgs{\n\t\t\t\t\t\tArgument: pulumi.String(\"test argument\"),\n\t\t\t\t\t\tValue: pulumi.String(\"test value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.5\"),\n\t\t\t\t},\n\t\t\t\tManualLbConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerManualLbConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalAdminClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeAccessConfig: \u0026gkeonprem.BareMetalAdminClusterNodeAccessConfigArgs{\n\t\t\t\tLoginUser: pulumi.String(\"root\"),\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalAdminClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalAdminClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalAdminClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\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\tMaintenanceConfig: \u0026gkeonprem.BareMetalAdminClusterMaintenanceConfigArgs{\n\t\t\t\tMaintenanceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\tpulumi.String(\"10.0.0.2/32\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tClusterOperations: \u0026gkeonprem.BareMetalAdminClusterClusterOperationsArgs{\n\t\t\t\tEnableApplicationLogs: pulumi.Bool(true),\n\t\t\t},\n\t\t\tProxy: \u0026gkeonprem.BareMetalAdminClusterProxyArgs{\n\t\t\t\tUri: pulumi.String(\"test proxy uri\"),\n\t\t\t\tNoProxies: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"127.0.0.1\"),\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.gkeonprem.BareMetalAdminCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalAdminClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNodeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerManualLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNodeAccessConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterMaintenanceConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterClusterOperationsArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterProxyArgs;\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 admin_cluster_basic = new BareMetalAdminCluster(\"admin-cluster-basic\", BareMetalAdminClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .description(\"test description\")\n .bareMetalVersion(\"1.13.4\")\n .annotations(Map.of(\"env\", \"test\"))\n .networkConfig(BareMetalAdminClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalAdminClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .nodeConfig(BareMetalAdminClusterNodeConfigArgs.builder()\n .maxPodsPerNode(250)\n .build())\n .controlPlane(BareMetalAdminClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs( \n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.2\")\n .build(),\n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.3\")\n .build(),\n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.4\")\n .build())\n .taints(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs.builder()\n .key(\"test-key\")\n .value(\"test-value\")\n .effect(\"NO_EXECUTE\")\n .build())\n .build())\n .build())\n .apiServerArgs(BareMetalAdminClusterControlPlaneApiServerArgArgs.builder()\n .argument(\"test argument\")\n .value(\"test value\")\n .build())\n .build())\n .loadBalancer(BareMetalAdminClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalAdminClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalAdminClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.5\")\n .build())\n .manualLbConfig(BareMetalAdminClusterLoadBalancerManualLbConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .storage(BareMetalAdminClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalAdminClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalAdminClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .nodeAccessConfig(BareMetalAdminClusterNodeAccessConfigArgs.builder()\n .loginUser(\"root\")\n .build())\n .securityConfig(BareMetalAdminClusterSecurityConfigArgs.builder()\n .authorization(BareMetalAdminClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalAdminClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .maintenanceConfig(BareMetalAdminClusterMaintenanceConfigArgs.builder()\n .maintenanceAddressCidrBlocks( \n \"10.0.0.1/32\",\n \"10.0.0.2/32\")\n .build())\n .clusterOperations(BareMetalAdminClusterClusterOperationsArgs.builder()\n .enableApplicationLogs(true)\n .build())\n .proxy(BareMetalAdminClusterProxyArgs.builder()\n .uri(\"test proxy uri\")\n .noProxies(\"127.0.0.1\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n admin-cluster-basic:\n type: gcp:gkeonprem:BareMetalAdminCluster\n properties:\n name: my-cluster\n location: us-west1\n description: test description\n bareMetalVersion: 1.13.4\n annotations:\n env: test\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n nodeConfig:\n maxPodsPerNode: 250\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.2\n - labels: {}\n nodeIp: 10.200.0.3\n - labels: {}\n nodeIp: 10.200.0.4\n taints:\n - key: test-key\n value: test-value\n effect: NO_EXECUTE\n apiServerArgs:\n - argument: test argument\n value: test value\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.5\n manualLbConfig:\n enabled: true\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n nodeAccessConfig:\n loginUser: root\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n maintenanceConfig:\n maintenanceAddressCidrBlocks:\n - 10.0.0.1/32\n - 10.0.0.2/32\n clusterOperations:\n enableApplicationLogs: true\n proxy:\n uri: test proxy uri\n noProxies:\n - 127.0.0.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBareMetalAdminCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/bareMetalAdminClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, BareMetalAdminCluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalAdminCluster:BareMetalAdminCluster default projects/{{project}}/locations/{{location}}/bareMetalAdminClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalAdminCluster:BareMetalAdminCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalAdminCluster:BareMetalAdminCluster default {{location}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -198063,7 +198063,7 @@ } }, "gcp:gkeonprem/bareMetalCluster:BareMetalCluster": { - "description": "A Google Bare Metal User Cluster.\n\n\n\n## Example Usage\n\n### Gkeonprem Bare Metal Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_basic = new gcp.gkeonprem.BareMetalCluster(\"cluster-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n metalLbConfig: {\n addressPools: [{\n pool: \"pool1\",\n addresses: [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n avoidBuggyIps: true,\n manualAssign: true,\n }],\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_basic = gcp.gkeonprem.BareMetalCluster(\"cluster-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"islandModeCidr\": {\n \"serviceAddressCidrBlocks\": [\"172.26.0.0/16\"],\n \"podAddressCidrBlocks\": [\"10.240.0.0/13\"],\n },\n },\n control_plane={\n \"controlPlaneNodePoolConfig\": {\n \"nodePoolConfig\": {\n \"labels\": {},\n \"operatingSystem\": \"LINUX\",\n \"nodeConfigs\": [{\n \"labels\": {},\n \"nodeIp\": \"10.200.0.9\",\n }],\n },\n },\n },\n load_balancer={\n \"portConfig\": {\n \"controlPlaneLoadBalancerPort\": 443,\n },\n \"vipConfig\": {\n \"controlPlaneVip\": \"10.200.0.13\",\n \"ingressVip\": \"10.200.0.14\",\n },\n \"metalLbConfig\": {\n \"addressPools\": [{\n \"pool\": \"pool1\",\n \"addresses\": [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n \"avoidBuggyIps\": True,\n \"manualAssign\": True,\n }],\n },\n },\n storage={\n \"lvpShareConfig\": {\n \"lvpConfig\": {\n \"path\": \"/mnt/localpv-share\",\n \"storageClass\": \"local-shared\",\n },\n \"sharedPathPvCount\": 5,\n },\n \"lvpNodeMountsConfig\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storageClass\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"adminUsers\": [{\n \"username\": \"admin@hashicorptest.com\",\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 cluster_basic = new Gcp.GkeOnPrem.BareMetalCluster(\"cluster-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"pool1\",\n Addresses = new[]\n {\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n },\n AvoidBuggyIps = true,\n ManualAssign = true,\n },\n },\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewBareMetalCluster(ctx, \"cluster-basic\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\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\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"pool1\"),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.14/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.15/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.16/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.17/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.18/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::f/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::10/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::11/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::12/128\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAvoidBuggyIps: pulumi.Bool(true),\n\t\t\t\t\t\t\tManualAssign: 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\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\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.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\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 cluster_basic = new BareMetalCluster(\"cluster-basic\", BareMetalClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .metalLbConfig(BareMetalClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools(BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"pool1\")\n .addresses( \n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\")\n .avoidBuggyIps(true)\n .manualAssign(true)\n .build())\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-basic:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n metalLbConfig:\n addressPools:\n - pool: pool1\n addresses:\n - 10.200.0.14/32\n - 10.200.0.15/32\n - 10.200.0.16/32\n - 10.200.0.17/32\n - 10.200.0.18/32\n - fd00:1::f/128\n - fd00:1::10/128\n - fd00:1::11/128\n - fd00:1::12/128\n avoidBuggyIps: true\n manualAssign: true\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Bare Metal Cluster Manuallb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_manuallb = new gcp.gkeonprem.BareMetalCluster(\"cluster-manuallb\", {\n name: \"cluster-manuallb\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n manualLbConfig: {\n enabled: true,\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n binaryAuthorization: {\n evaluationMode: \"DISABLED\",\n },\n upgradePolicy: {\n policy: \"SERIAL\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_manuallb = gcp.gkeonprem.BareMetalCluster(\"cluster-manuallb\",\n name=\"cluster-manuallb\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"islandModeCidr\": {\n \"serviceAddressCidrBlocks\": [\"172.26.0.0/16\"],\n \"podAddressCidrBlocks\": [\"10.240.0.0/13\"],\n },\n },\n control_plane={\n \"controlPlaneNodePoolConfig\": {\n \"nodePoolConfig\": {\n \"labels\": {},\n \"operatingSystem\": \"LINUX\",\n \"nodeConfigs\": [{\n \"labels\": {},\n \"nodeIp\": \"10.200.0.9\",\n }],\n },\n },\n },\n load_balancer={\n \"portConfig\": {\n \"controlPlaneLoadBalancerPort\": 443,\n },\n \"vipConfig\": {\n \"controlPlaneVip\": \"10.200.0.13\",\n \"ingressVip\": \"10.200.0.14\",\n },\n \"manualLbConfig\": {\n \"enabled\": True,\n },\n },\n storage={\n \"lvpShareConfig\": {\n \"lvpConfig\": {\n \"path\": \"/mnt/localpv-share\",\n \"storageClass\": \"local-shared\",\n },\n \"sharedPathPvCount\": 5,\n },\n \"lvpNodeMountsConfig\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storageClass\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"adminUsers\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n },\n binary_authorization={\n \"evaluationMode\": \"DISABLED\",\n },\n upgrade_policy={\n \"policy\": \"SERIAL\",\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 cluster_manuallb = new Gcp.GkeOnPrem.BareMetalCluster(\"cluster-manuallb\", new()\n {\n Name = \"cluster-manuallb\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n ManualLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerManualLbConfigArgs\n {\n Enabled = true,\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n BinaryAuthorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterBinaryAuthorizationArgs\n {\n EvaluationMode = \"DISABLED\",\n },\n UpgradePolicy = new Gcp.GkeOnPrem.Inputs.BareMetalClusterUpgradePolicyArgs\n {\n Policy = \"SERIAL\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewBareMetalCluster(ctx, \"cluster-manuallb\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-manuallb\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\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\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tManualLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerManualLbConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\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\tBinaryAuthorization: \u0026gkeonprem.BareMetalClusterBinaryAuthorizationArgs{\n\t\t\t\tEvaluationMode: pulumi.String(\"DISABLED\"),\n\t\t\t},\n\t\t\tUpgradePolicy: \u0026gkeonprem.BareMetalClusterUpgradePolicyArgs{\n\t\t\t\tPolicy: pulumi.String(\"SERIAL\"),\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.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerManualLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterBinaryAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterUpgradePolicyArgs;\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 cluster_manuallb = new BareMetalCluster(\"cluster-manuallb\", BareMetalClusterArgs.builder()\n .name(\"cluster-manuallb\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .manualLbConfig(BareMetalClusterLoadBalancerManualLbConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .binaryAuthorization(BareMetalClusterBinaryAuthorizationArgs.builder()\n .evaluationMode(\"DISABLED\")\n .build())\n .upgradePolicy(BareMetalClusterUpgradePolicyArgs.builder()\n .policy(\"SERIAL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-manuallb:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: cluster-manuallb\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n manualLbConfig:\n enabled: true\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n binaryAuthorization:\n evaluationMode: DISABLED\n upgradePolicy:\n policy: SERIAL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Bare Metal Cluster Bgplb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_bgplb = new gcp.gkeonprem.BareMetalCluster(\"cluster-bgplb\", {\n name: \"cluster-bgplb\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n advancedNetworking: true,\n multipleNetworkInterfacesConfig: {\n enabled: true,\n },\n srIovConfig: {\n enabled: true,\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n taints: [{\n key: \"test-key\",\n value: \"test-value\",\n effect: \"NO_EXECUTE\",\n }],\n },\n },\n apiServerArgs: [{\n argument: \"test-argument\",\n value: \"test-value\",\n }],\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n bgpLbConfig: {\n asn: 123456,\n bgpPeerConfigs: [{\n asn: 123457,\n ipAddress: \"10.0.0.1\",\n controlPlaneNodes: [\"test-node\"],\n }],\n addressPools: [{\n pool: \"pool1\",\n addresses: [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n loadBalancerNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n taints: [{\n key: \"test-key\",\n value: \"test-value\",\n effect: \"NO_EXECUTE\",\n }],\n kubeletConfig: {\n registryPullQps: 10,\n registryBurst: 12,\n serializeImagePullsDisabled: true,\n },\n },\n },\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n proxy: {\n uri: \"http://test-domain/test\",\n noProxies: [\"127.0.0.1\"],\n },\n clusterOperations: {\n enableApplicationLogs: true,\n },\n maintenanceConfig: {\n maintenanceAddressCidrBlocks: [\"192.168.0.1/20\"],\n },\n nodeConfig: {\n maxPodsPerNode: 10,\n containerRuntime: \"CONTAINERD\",\n },\n nodeAccessConfig: {\n loginUser: \"test@example.com\",\n },\n osEnvironmentConfig: {\n packageRepoExcluded: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_bgplb = gcp.gkeonprem.BareMetalCluster(\"cluster-bgplb\",\n name=\"cluster-bgplb\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"islandModeCidr\": {\n \"serviceAddressCidrBlocks\": [\"172.26.0.0/16\"],\n \"podAddressCidrBlocks\": [\"10.240.0.0/13\"],\n },\n \"advancedNetworking\": True,\n \"multipleNetworkInterfacesConfig\": {\n \"enabled\": True,\n },\n \"srIovConfig\": {\n \"enabled\": True,\n },\n },\n control_plane={\n \"controlPlaneNodePoolConfig\": {\n \"nodePoolConfig\": {\n \"labels\": {},\n \"operatingSystem\": \"LINUX\",\n \"nodeConfigs\": [{\n \"labels\": {},\n \"nodeIp\": \"10.200.0.9\",\n }],\n \"taints\": [{\n \"key\": \"test-key\",\n \"value\": \"test-value\",\n \"effect\": \"NO_EXECUTE\",\n }],\n },\n },\n \"apiServerArgs\": [{\n \"argument\": \"test-argument\",\n \"value\": \"test-value\",\n }],\n },\n load_balancer={\n \"portConfig\": {\n \"controlPlaneLoadBalancerPort\": 443,\n },\n \"vipConfig\": {\n \"controlPlaneVip\": \"10.200.0.13\",\n \"ingressVip\": \"10.200.0.14\",\n },\n \"bgpLbConfig\": {\n \"asn\": 123456,\n \"bgpPeerConfigs\": [{\n \"asn\": 123457,\n \"ipAddress\": \"10.0.0.1\",\n \"controlPlaneNodes\": [\"test-node\"],\n }],\n \"addressPools\": [{\n \"pool\": \"pool1\",\n \"addresses\": [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n \"loadBalancerNodePoolConfig\": {\n \"nodePoolConfig\": {\n \"labels\": {},\n \"operatingSystem\": \"LINUX\",\n \"nodeConfigs\": [{\n \"labels\": {},\n \"nodeIp\": \"10.200.0.9\",\n }],\n \"taints\": [{\n \"key\": \"test-key\",\n \"value\": \"test-value\",\n \"effect\": \"NO_EXECUTE\",\n }],\n \"kubeletConfig\": {\n \"registryPullQps\": 10,\n \"registryBurst\": 12,\n \"serializeImagePullsDisabled\": True,\n },\n },\n },\n },\n },\n storage={\n \"lvpShareConfig\": {\n \"lvpConfig\": {\n \"path\": \"/mnt/localpv-share\",\n \"storageClass\": \"local-shared\",\n },\n \"sharedPathPvCount\": 5,\n },\n \"lvpNodeMountsConfig\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storageClass\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"adminUsers\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n },\n proxy={\n \"uri\": \"http://test-domain/test\",\n \"noProxies\": [\"127.0.0.1\"],\n },\n cluster_operations={\n \"enableApplicationLogs\": True,\n },\n maintenance_config={\n \"maintenanceAddressCidrBlocks\": [\"192.168.0.1/20\"],\n },\n node_config={\n \"maxPodsPerNode\": 10,\n \"containerRuntime\": \"CONTAINERD\",\n },\n node_access_config={\n \"loginUser\": \"test@example.com\",\n },\n os_environment_config={\n \"packageRepoExcluded\": 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 cluster_bgplb = new Gcp.GkeOnPrem.BareMetalCluster(\"cluster-bgplb\", new()\n {\n Name = \"cluster-bgplb\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n AdvancedNetworking = true,\n MultipleNetworkInterfacesConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigMultipleNetworkInterfacesConfigArgs\n {\n Enabled = true,\n },\n SrIovConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigSrIovConfigArgs\n {\n Enabled = true,\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n Taints = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs\n {\n Key = \"test-key\",\n Value = \"test-value\",\n Effect = \"NO_EXECUTE\",\n },\n },\n },\n },\n ApiServerArgs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneApiServerArgArgs\n {\n Argument = \"test-argument\",\n Value = \"test-value\",\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n BgpLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigArgs\n {\n Asn = 123456,\n BgpPeerConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigBgpPeerConfigArgs\n {\n Asn = 123457,\n IpAddress = \"10.0.0.1\",\n ControlPlaneNodes = new[]\n {\n \"test-node\",\n },\n },\n },\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigAddressPoolArgs\n {\n Pool = \"pool1\",\n Addresses = new[]\n {\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n },\n },\n },\n LoadBalancerNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n Taints = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigTaintArgs\n {\n Key = \"test-key\",\n Value = \"test-value\",\n Effect = \"NO_EXECUTE\",\n },\n },\n KubeletConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigKubeletConfigArgs\n {\n RegistryPullQps = 10,\n RegistryBurst = 12,\n SerializeImagePullsDisabled = true,\n },\n },\n },\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n Proxy = new Gcp.GkeOnPrem.Inputs.BareMetalClusterProxyArgs\n {\n Uri = \"http://test-domain/test\",\n NoProxies = new[]\n {\n \"127.0.0.1\",\n },\n },\n ClusterOperations = new Gcp.GkeOnPrem.Inputs.BareMetalClusterClusterOperationsArgs\n {\n EnableApplicationLogs = true,\n },\n MaintenanceConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterMaintenanceConfigArgs\n {\n MaintenanceAddressCidrBlocks = new[]\n {\n \"192.168.0.1/20\",\n },\n },\n NodeConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNodeConfigArgs\n {\n MaxPodsPerNode = 10,\n ContainerRuntime = \"CONTAINERD\",\n },\n NodeAccessConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNodeAccessConfigArgs\n {\n LoginUser = \"test@example.com\",\n },\n OsEnvironmentConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterOsEnvironmentConfigArgs\n {\n PackageRepoExcluded = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewBareMetalCluster(ctx, \"cluster-bgplb\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-bgplb\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAdvancedNetworking: pulumi.Bool(true),\n\t\t\t\tMultipleNetworkInterfacesConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigMultipleNetworkInterfacesConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tSrIovConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigSrIovConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTaints: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs{\n\t\t\t\t\t\t\t\tKey: pulumi.String(\"test-key\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t\t\t\tEffect: pulumi.String(\"NO_EXECUTE\"),\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\tApiServerArgs: gkeonprem.BareMetalClusterControlPlaneApiServerArgArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneApiServerArgArgs{\n\t\t\t\t\t\tArgument: pulumi.String(\"test-argument\"),\n\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tBgpLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigArgs{\n\t\t\t\t\tAsn: pulumi.Int(123456),\n\t\t\t\t\tBgpPeerConfigs: gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigBgpPeerConfigArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigBgpPeerConfigArgs{\n\t\t\t\t\t\t\tAsn: pulumi.Int(123457),\n\t\t\t\t\t\t\tIpAddress: pulumi.String(\"10.0.0.1\"),\n\t\t\t\t\t\t\tControlPlaneNodes: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"test-node\"),\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\tAddressPools: gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"pool1\"),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.14/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.15/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.16/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.17/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.18/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::f/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::10/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::11/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::12/128\"),\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\tLoadBalancerNodePoolConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigArgs{\n\t\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTaints: gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigTaintArray{\n\t\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigTaintArgs{\n\t\t\t\t\t\t\t\t\tKey: pulumi.String(\"test-key\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t\t\t\t\tEffect: pulumi.String(\"NO_EXECUTE\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tKubeletConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigKubeletConfigArgs{\n\t\t\t\t\t\t\t\tRegistryPullQps: pulumi.Int(10),\n\t\t\t\t\t\t\t\tRegistryBurst: pulumi.Int(12),\n\t\t\t\t\t\t\t\tSerializeImagePullsDisabled: pulumi.Bool(true),\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\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\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\tProxy: \u0026gkeonprem.BareMetalClusterProxyArgs{\n\t\t\t\tUri: pulumi.String(\"http://test-domain/test\"),\n\t\t\t\tNoProxies: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"127.0.0.1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tClusterOperations: \u0026gkeonprem.BareMetalClusterClusterOperationsArgs{\n\t\t\t\tEnableApplicationLogs: pulumi.Bool(true),\n\t\t\t},\n\t\t\tMaintenanceConfig: \u0026gkeonprem.BareMetalClusterMaintenanceConfigArgs{\n\t\t\t\tMaintenanceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.1/20\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeConfig: \u0026gkeonprem.BareMetalClusterNodeConfigArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(10),\n\t\t\t\tContainerRuntime: pulumi.String(\"CONTAINERD\"),\n\t\t\t},\n\t\t\tNodeAccessConfig: \u0026gkeonprem.BareMetalClusterNodeAccessConfigArgs{\n\t\t\t\tLoginUser: pulumi.String(\"test@example.com\"),\n\t\t\t},\n\t\t\tOsEnvironmentConfig: \u0026gkeonprem.BareMetalClusterOsEnvironmentConfigArgs{\n\t\t\t\tPackageRepoExcluded: 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.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigMultipleNetworkInterfacesConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigSrIovConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigKubeletConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterProxyArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterClusterOperationsArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterMaintenanceConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNodeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNodeAccessConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterOsEnvironmentConfigArgs;\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 cluster_bgplb = new BareMetalCluster(\"cluster-bgplb\", BareMetalClusterArgs.builder()\n .name(\"cluster-bgplb\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .advancedNetworking(true)\n .multipleNetworkInterfacesConfig(BareMetalClusterNetworkConfigMultipleNetworkInterfacesConfigArgs.builder()\n .enabled(true)\n .build())\n .srIovConfig(BareMetalClusterNetworkConfigSrIovConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .taints(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs.builder()\n .key(\"test-key\")\n .value(\"test-value\")\n .effect(\"NO_EXECUTE\")\n .build())\n .build())\n .build())\n .apiServerArgs(BareMetalClusterControlPlaneApiServerArgArgs.builder()\n .argument(\"test-argument\")\n .value(\"test-value\")\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .bgpLbConfig(BareMetalClusterLoadBalancerBgpLbConfigArgs.builder()\n .asn(123456)\n .bgpPeerConfigs(BareMetalClusterLoadBalancerBgpLbConfigBgpPeerConfigArgs.builder()\n .asn(123457)\n .ipAddress(\"10.0.0.1\")\n .controlPlaneNodes(\"test-node\")\n .build())\n .addressPools(BareMetalClusterLoadBalancerBgpLbConfigAddressPoolArgs.builder()\n .pool(\"pool1\")\n .addresses( \n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\")\n .build())\n .loadBalancerNodePoolConfig(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .taints(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigTaintArgs.builder()\n .key(\"test-key\")\n .value(\"test-value\")\n .effect(\"NO_EXECUTE\")\n .build())\n .kubeletConfig(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigKubeletConfigArgs.builder()\n .registryPullQps(10)\n .registryBurst(12)\n .serializeImagePullsDisabled(true)\n .build())\n .build())\n .build())\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .proxy(BareMetalClusterProxyArgs.builder()\n .uri(\"http://test-domain/test\")\n .noProxies(\"127.0.0.1\")\n .build())\n .clusterOperations(BareMetalClusterClusterOperationsArgs.builder()\n .enableApplicationLogs(true)\n .build())\n .maintenanceConfig(BareMetalClusterMaintenanceConfigArgs.builder()\n .maintenanceAddressCidrBlocks(\"192.168.0.1/20\")\n .build())\n .nodeConfig(BareMetalClusterNodeConfigArgs.builder()\n .maxPodsPerNode(10)\n .containerRuntime(\"CONTAINERD\")\n .build())\n .nodeAccessConfig(BareMetalClusterNodeAccessConfigArgs.builder()\n .loginUser(\"test@example.com\")\n .build())\n .osEnvironmentConfig(BareMetalClusterOsEnvironmentConfigArgs.builder()\n .packageRepoExcluded(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-bgplb:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: cluster-bgplb\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n advancedNetworking: true\n multipleNetworkInterfacesConfig:\n enabled: true\n srIovConfig:\n enabled: true\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n taints:\n - key: test-key\n value: test-value\n effect: NO_EXECUTE\n apiServerArgs:\n - argument: test-argument\n value: test-value\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n bgpLbConfig:\n asn: 123456\n bgpPeerConfigs:\n - asn: 123457\n ipAddress: 10.0.0.1\n controlPlaneNodes:\n - test-node\n addressPools:\n - pool: pool1\n addresses:\n - 10.200.0.14/32\n - 10.200.0.15/32\n - 10.200.0.16/32\n - 10.200.0.17/32\n - 10.200.0.18/32\n - fd00:1::f/128\n - fd00:1::10/128\n - fd00:1::11/128\n - fd00:1::12/128\n loadBalancerNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n taints:\n - key: test-key\n value: test-value\n effect: NO_EXECUTE\n kubeletConfig:\n registryPullQps: 10\n registryBurst: 12\n serializeImagePullsDisabled: true\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n proxy:\n uri: http://test-domain/test\n noProxies:\n - 127.0.0.1\n clusterOperations:\n enableApplicationLogs: true\n maintenanceConfig:\n maintenanceAddressCidrBlocks:\n - 192.168.0.1/20\n nodeConfig:\n maxPodsPerNode: 10\n containerRuntime: CONTAINERD\n nodeAccessConfig:\n loginUser: test@example.com\n osEnvironmentConfig:\n packageRepoExcluded: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBareMetalCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/bareMetalClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, BareMetalCluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalCluster:BareMetalCluster default projects/{{project}}/locations/{{location}}/bareMetalClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalCluster:BareMetalCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalCluster:BareMetalCluster default {{location}}/{{name}}\n```\n\n", + "description": "A Google Bare Metal User Cluster.\n\n\n\n## Example Usage\n\n### Gkeonprem Bare Metal Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_basic = new gcp.gkeonprem.BareMetalCluster(\"cluster-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n metalLbConfig: {\n addressPools: [{\n pool: \"pool1\",\n addresses: [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n avoidBuggyIps: true,\n manualAssign: true,\n }],\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_basic = gcp.gkeonprem.BareMetalCluster(\"cluster-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"labels\": {},\n \"node_ip\": \"10.200.0.9\",\n }],\n },\n },\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.13\",\n \"ingress_vip\": \"10.200.0.14\",\n },\n \"metal_lb_config\": {\n \"address_pools\": [{\n \"pool\": \"pool1\",\n \"addresses\": [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n \"avoid_buggy_ips\": True,\n \"manual_assign\": True,\n }],\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"admin_users\": [{\n \"username\": \"admin@hashicorptest.com\",\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 cluster_basic = new Gcp.GkeOnPrem.BareMetalCluster(\"cluster-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"pool1\",\n Addresses = new[]\n {\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n },\n AvoidBuggyIps = true,\n ManualAssign = true,\n },\n },\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewBareMetalCluster(ctx, \"cluster-basic\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\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\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"pool1\"),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.14/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.15/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.16/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.17/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.18/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::f/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::10/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::11/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::12/128\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAvoidBuggyIps: pulumi.Bool(true),\n\t\t\t\t\t\t\tManualAssign: 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\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\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.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\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 cluster_basic = new BareMetalCluster(\"cluster-basic\", BareMetalClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .metalLbConfig(BareMetalClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools(BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"pool1\")\n .addresses( \n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\")\n .avoidBuggyIps(true)\n .manualAssign(true)\n .build())\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-basic:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n metalLbConfig:\n addressPools:\n - pool: pool1\n addresses:\n - 10.200.0.14/32\n - 10.200.0.15/32\n - 10.200.0.16/32\n - 10.200.0.17/32\n - 10.200.0.18/32\n - fd00:1::f/128\n - fd00:1::10/128\n - fd00:1::11/128\n - fd00:1::12/128\n avoidBuggyIps: true\n manualAssign: true\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Bare Metal Cluster Manuallb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_manuallb = new gcp.gkeonprem.BareMetalCluster(\"cluster-manuallb\", {\n name: \"cluster-manuallb\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n manualLbConfig: {\n enabled: true,\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n binaryAuthorization: {\n evaluationMode: \"DISABLED\",\n },\n upgradePolicy: {\n policy: \"SERIAL\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_manuallb = gcp.gkeonprem.BareMetalCluster(\"cluster-manuallb\",\n name=\"cluster-manuallb\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"labels\": {},\n \"node_ip\": \"10.200.0.9\",\n }],\n },\n },\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.13\",\n \"ingress_vip\": \"10.200.0.14\",\n },\n \"manual_lb_config\": {\n \"enabled\": True,\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"admin_users\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n },\n binary_authorization={\n \"evaluation_mode\": \"DISABLED\",\n },\n upgrade_policy={\n \"policy\": \"SERIAL\",\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 cluster_manuallb = new Gcp.GkeOnPrem.BareMetalCluster(\"cluster-manuallb\", new()\n {\n Name = \"cluster-manuallb\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n ManualLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerManualLbConfigArgs\n {\n Enabled = true,\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n BinaryAuthorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterBinaryAuthorizationArgs\n {\n EvaluationMode = \"DISABLED\",\n },\n UpgradePolicy = new Gcp.GkeOnPrem.Inputs.BareMetalClusterUpgradePolicyArgs\n {\n Policy = \"SERIAL\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewBareMetalCluster(ctx, \"cluster-manuallb\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-manuallb\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\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\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tManualLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerManualLbConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\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\tBinaryAuthorization: \u0026gkeonprem.BareMetalClusterBinaryAuthorizationArgs{\n\t\t\t\tEvaluationMode: pulumi.String(\"DISABLED\"),\n\t\t\t},\n\t\t\tUpgradePolicy: \u0026gkeonprem.BareMetalClusterUpgradePolicyArgs{\n\t\t\t\tPolicy: pulumi.String(\"SERIAL\"),\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.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerManualLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterBinaryAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterUpgradePolicyArgs;\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 cluster_manuallb = new BareMetalCluster(\"cluster-manuallb\", BareMetalClusterArgs.builder()\n .name(\"cluster-manuallb\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .manualLbConfig(BareMetalClusterLoadBalancerManualLbConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .binaryAuthorization(BareMetalClusterBinaryAuthorizationArgs.builder()\n .evaluationMode(\"DISABLED\")\n .build())\n .upgradePolicy(BareMetalClusterUpgradePolicyArgs.builder()\n .policy(\"SERIAL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-manuallb:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: cluster-manuallb\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n manualLbConfig:\n enabled: true\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n binaryAuthorization:\n evaluationMode: DISABLED\n upgradePolicy:\n policy: SERIAL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Bare Metal Cluster Bgplb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_bgplb = new gcp.gkeonprem.BareMetalCluster(\"cluster-bgplb\", {\n name: \"cluster-bgplb\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n advancedNetworking: true,\n multipleNetworkInterfacesConfig: {\n enabled: true,\n },\n srIovConfig: {\n enabled: true,\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n taints: [{\n key: \"test-key\",\n value: \"test-value\",\n effect: \"NO_EXECUTE\",\n }],\n },\n },\n apiServerArgs: [{\n argument: \"test-argument\",\n value: \"test-value\",\n }],\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n bgpLbConfig: {\n asn: 123456,\n bgpPeerConfigs: [{\n asn: 123457,\n ipAddress: \"10.0.0.1\",\n controlPlaneNodes: [\"test-node\"],\n }],\n addressPools: [{\n pool: \"pool1\",\n addresses: [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n loadBalancerNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n taints: [{\n key: \"test-key\",\n value: \"test-value\",\n effect: \"NO_EXECUTE\",\n }],\n kubeletConfig: {\n registryPullQps: 10,\n registryBurst: 12,\n serializeImagePullsDisabled: true,\n },\n },\n },\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n proxy: {\n uri: \"http://test-domain/test\",\n noProxies: [\"127.0.0.1\"],\n },\n clusterOperations: {\n enableApplicationLogs: true,\n },\n maintenanceConfig: {\n maintenanceAddressCidrBlocks: [\"192.168.0.1/20\"],\n },\n nodeConfig: {\n maxPodsPerNode: 10,\n containerRuntime: \"CONTAINERD\",\n },\n nodeAccessConfig: {\n loginUser: \"test@example.com\",\n },\n osEnvironmentConfig: {\n packageRepoExcluded: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_bgplb = gcp.gkeonprem.BareMetalCluster(\"cluster-bgplb\",\n name=\"cluster-bgplb\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n \"advanced_networking\": True,\n \"multiple_network_interfaces_config\": {\n \"enabled\": True,\n },\n \"sr_iov_config\": {\n \"enabled\": True,\n },\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"labels\": {},\n \"node_ip\": \"10.200.0.9\",\n }],\n \"taints\": [{\n \"key\": \"test-key\",\n \"value\": \"test-value\",\n \"effect\": \"NO_EXECUTE\",\n }],\n },\n },\n \"api_server_args\": [{\n \"argument\": \"test-argument\",\n \"value\": \"test-value\",\n }],\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.13\",\n \"ingress_vip\": \"10.200.0.14\",\n },\n \"bgp_lb_config\": {\n \"asn\": 123456,\n \"bgp_peer_configs\": [{\n \"asn\": 123457,\n \"ip_address\": \"10.0.0.1\",\n \"control_plane_nodes\": [\"test-node\"],\n }],\n \"address_pools\": [{\n \"pool\": \"pool1\",\n \"addresses\": [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n \"load_balancer_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"labels\": {},\n \"node_ip\": \"10.200.0.9\",\n }],\n \"taints\": [{\n \"key\": \"test-key\",\n \"value\": \"test-value\",\n \"effect\": \"NO_EXECUTE\",\n }],\n \"kubelet_config\": {\n \"registry_pull_qps\": 10,\n \"registry_burst\": 12,\n \"serialize_image_pulls_disabled\": True,\n },\n },\n },\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"admin_users\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n },\n proxy={\n \"uri\": \"http://test-domain/test\",\n \"no_proxies\": [\"127.0.0.1\"],\n },\n cluster_operations={\n \"enable_application_logs\": True,\n },\n maintenance_config={\n \"maintenance_address_cidr_blocks\": [\"192.168.0.1/20\"],\n },\n node_config={\n \"max_pods_per_node\": 10,\n \"container_runtime\": \"CONTAINERD\",\n },\n node_access_config={\n \"login_user\": \"test@example.com\",\n },\n os_environment_config={\n \"package_repo_excluded\": 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 cluster_bgplb = new Gcp.GkeOnPrem.BareMetalCluster(\"cluster-bgplb\", new()\n {\n Name = \"cluster-bgplb\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n AdvancedNetworking = true,\n MultipleNetworkInterfacesConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigMultipleNetworkInterfacesConfigArgs\n {\n Enabled = true,\n },\n SrIovConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigSrIovConfigArgs\n {\n Enabled = true,\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n Taints = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs\n {\n Key = \"test-key\",\n Value = \"test-value\",\n Effect = \"NO_EXECUTE\",\n },\n },\n },\n },\n ApiServerArgs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneApiServerArgArgs\n {\n Argument = \"test-argument\",\n Value = \"test-value\",\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n BgpLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigArgs\n {\n Asn = 123456,\n BgpPeerConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigBgpPeerConfigArgs\n {\n Asn = 123457,\n IpAddress = \"10.0.0.1\",\n ControlPlaneNodes = new[]\n {\n \"test-node\",\n },\n },\n },\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigAddressPoolArgs\n {\n Pool = \"pool1\",\n Addresses = new[]\n {\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n },\n },\n },\n LoadBalancerNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n Taints = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigTaintArgs\n {\n Key = \"test-key\",\n Value = \"test-value\",\n Effect = \"NO_EXECUTE\",\n },\n },\n KubeletConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigKubeletConfigArgs\n {\n RegistryPullQps = 10,\n RegistryBurst = 12,\n SerializeImagePullsDisabled = true,\n },\n },\n },\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n Proxy = new Gcp.GkeOnPrem.Inputs.BareMetalClusterProxyArgs\n {\n Uri = \"http://test-domain/test\",\n NoProxies = new[]\n {\n \"127.0.0.1\",\n },\n },\n ClusterOperations = new Gcp.GkeOnPrem.Inputs.BareMetalClusterClusterOperationsArgs\n {\n EnableApplicationLogs = true,\n },\n MaintenanceConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterMaintenanceConfigArgs\n {\n MaintenanceAddressCidrBlocks = new[]\n {\n \"192.168.0.1/20\",\n },\n },\n NodeConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNodeConfigArgs\n {\n MaxPodsPerNode = 10,\n ContainerRuntime = \"CONTAINERD\",\n },\n NodeAccessConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNodeAccessConfigArgs\n {\n LoginUser = \"test@example.com\",\n },\n OsEnvironmentConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterOsEnvironmentConfigArgs\n {\n PackageRepoExcluded = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewBareMetalCluster(ctx, \"cluster-bgplb\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-bgplb\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAdvancedNetworking: pulumi.Bool(true),\n\t\t\t\tMultipleNetworkInterfacesConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigMultipleNetworkInterfacesConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tSrIovConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigSrIovConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTaints: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs{\n\t\t\t\t\t\t\t\tKey: pulumi.String(\"test-key\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t\t\t\tEffect: pulumi.String(\"NO_EXECUTE\"),\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\tApiServerArgs: gkeonprem.BareMetalClusterControlPlaneApiServerArgArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneApiServerArgArgs{\n\t\t\t\t\t\tArgument: pulumi.String(\"test-argument\"),\n\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tBgpLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigArgs{\n\t\t\t\t\tAsn: pulumi.Int(123456),\n\t\t\t\t\tBgpPeerConfigs: gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigBgpPeerConfigArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigBgpPeerConfigArgs{\n\t\t\t\t\t\t\tAsn: pulumi.Int(123457),\n\t\t\t\t\t\t\tIpAddress: pulumi.String(\"10.0.0.1\"),\n\t\t\t\t\t\t\tControlPlaneNodes: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"test-node\"),\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\tAddressPools: gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"pool1\"),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.14/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.15/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.16/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.17/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.18/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::f/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::10/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::11/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::12/128\"),\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\tLoadBalancerNodePoolConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigArgs{\n\t\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTaints: gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigTaintArray{\n\t\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigTaintArgs{\n\t\t\t\t\t\t\t\t\tKey: pulumi.String(\"test-key\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t\t\t\t\tEffect: pulumi.String(\"NO_EXECUTE\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tKubeletConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigKubeletConfigArgs{\n\t\t\t\t\t\t\t\tRegistryPullQps: pulumi.Int(10),\n\t\t\t\t\t\t\t\tRegistryBurst: pulumi.Int(12),\n\t\t\t\t\t\t\t\tSerializeImagePullsDisabled: pulumi.Bool(true),\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\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\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\tProxy: \u0026gkeonprem.BareMetalClusterProxyArgs{\n\t\t\t\tUri: pulumi.String(\"http://test-domain/test\"),\n\t\t\t\tNoProxies: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"127.0.0.1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tClusterOperations: \u0026gkeonprem.BareMetalClusterClusterOperationsArgs{\n\t\t\t\tEnableApplicationLogs: pulumi.Bool(true),\n\t\t\t},\n\t\t\tMaintenanceConfig: \u0026gkeonprem.BareMetalClusterMaintenanceConfigArgs{\n\t\t\t\tMaintenanceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.1/20\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeConfig: \u0026gkeonprem.BareMetalClusterNodeConfigArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(10),\n\t\t\t\tContainerRuntime: pulumi.String(\"CONTAINERD\"),\n\t\t\t},\n\t\t\tNodeAccessConfig: \u0026gkeonprem.BareMetalClusterNodeAccessConfigArgs{\n\t\t\t\tLoginUser: pulumi.String(\"test@example.com\"),\n\t\t\t},\n\t\t\tOsEnvironmentConfig: \u0026gkeonprem.BareMetalClusterOsEnvironmentConfigArgs{\n\t\t\t\tPackageRepoExcluded: 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.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigMultipleNetworkInterfacesConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigSrIovConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigKubeletConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterProxyArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterClusterOperationsArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterMaintenanceConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNodeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNodeAccessConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterOsEnvironmentConfigArgs;\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 cluster_bgplb = new BareMetalCluster(\"cluster-bgplb\", BareMetalClusterArgs.builder()\n .name(\"cluster-bgplb\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .advancedNetworking(true)\n .multipleNetworkInterfacesConfig(BareMetalClusterNetworkConfigMultipleNetworkInterfacesConfigArgs.builder()\n .enabled(true)\n .build())\n .srIovConfig(BareMetalClusterNetworkConfigSrIovConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .taints(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs.builder()\n .key(\"test-key\")\n .value(\"test-value\")\n .effect(\"NO_EXECUTE\")\n .build())\n .build())\n .build())\n .apiServerArgs(BareMetalClusterControlPlaneApiServerArgArgs.builder()\n .argument(\"test-argument\")\n .value(\"test-value\")\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .bgpLbConfig(BareMetalClusterLoadBalancerBgpLbConfigArgs.builder()\n .asn(123456)\n .bgpPeerConfigs(BareMetalClusterLoadBalancerBgpLbConfigBgpPeerConfigArgs.builder()\n .asn(123457)\n .ipAddress(\"10.0.0.1\")\n .controlPlaneNodes(\"test-node\")\n .build())\n .addressPools(BareMetalClusterLoadBalancerBgpLbConfigAddressPoolArgs.builder()\n .pool(\"pool1\")\n .addresses( \n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\")\n .build())\n .loadBalancerNodePoolConfig(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .taints(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigTaintArgs.builder()\n .key(\"test-key\")\n .value(\"test-value\")\n .effect(\"NO_EXECUTE\")\n .build())\n .kubeletConfig(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigKubeletConfigArgs.builder()\n .registryPullQps(10)\n .registryBurst(12)\n .serializeImagePullsDisabled(true)\n .build())\n .build())\n .build())\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .proxy(BareMetalClusterProxyArgs.builder()\n .uri(\"http://test-domain/test\")\n .noProxies(\"127.0.0.1\")\n .build())\n .clusterOperations(BareMetalClusterClusterOperationsArgs.builder()\n .enableApplicationLogs(true)\n .build())\n .maintenanceConfig(BareMetalClusterMaintenanceConfigArgs.builder()\n .maintenanceAddressCidrBlocks(\"192.168.0.1/20\")\n .build())\n .nodeConfig(BareMetalClusterNodeConfigArgs.builder()\n .maxPodsPerNode(10)\n .containerRuntime(\"CONTAINERD\")\n .build())\n .nodeAccessConfig(BareMetalClusterNodeAccessConfigArgs.builder()\n .loginUser(\"test@example.com\")\n .build())\n .osEnvironmentConfig(BareMetalClusterOsEnvironmentConfigArgs.builder()\n .packageRepoExcluded(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-bgplb:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: cluster-bgplb\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n advancedNetworking: true\n multipleNetworkInterfacesConfig:\n enabled: true\n srIovConfig:\n enabled: true\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n taints:\n - key: test-key\n value: test-value\n effect: NO_EXECUTE\n apiServerArgs:\n - argument: test-argument\n value: test-value\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n bgpLbConfig:\n asn: 123456\n bgpPeerConfigs:\n - asn: 123457\n ipAddress: 10.0.0.1\n controlPlaneNodes:\n - test-node\n addressPools:\n - pool: pool1\n addresses:\n - 10.200.0.14/32\n - 10.200.0.15/32\n - 10.200.0.16/32\n - 10.200.0.17/32\n - 10.200.0.18/32\n - fd00:1::f/128\n - fd00:1::10/128\n - fd00:1::11/128\n - fd00:1::12/128\n loadBalancerNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n taints:\n - key: test-key\n value: test-value\n effect: NO_EXECUTE\n kubeletConfig:\n registryPullQps: 10\n registryBurst: 12\n serializeImagePullsDisabled: true\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n proxy:\n uri: http://test-domain/test\n noProxies:\n - 127.0.0.1\n clusterOperations:\n enableApplicationLogs: true\n maintenanceConfig:\n maintenanceAddressCidrBlocks:\n - 192.168.0.1/20\n nodeConfig:\n maxPodsPerNode: 10\n containerRuntime: CONTAINERD\n nodeAccessConfig:\n loginUser: test@example.com\n osEnvironmentConfig:\n packageRepoExcluded: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBareMetalCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/bareMetalClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, BareMetalCluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalCluster:BareMetalCluster default projects/{{project}}/locations/{{location}}/bareMetalClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalCluster:BareMetalCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalCluster:BareMetalCluster default {{location}}/{{name}}\n```\n\n", "properties": { "adminClusterMembership": { "type": "string", @@ -198489,7 +198489,7 @@ } }, "gcp:gkeonprem/bareMetalNodePool:BareMetalNodePool": { - "description": "A Google Bare Metal Node Pool.\n\n\n\n## Example Usage\n\n### Gkeonprem Bare Metal Node Pool Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default_basic = new gcp.gkeonprem.BareMetalCluster(\"default-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n metalLbConfig: {\n addressPools: [{\n pool: \"pool1\",\n addresses: [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n});\nconst nodepool_basic = new gcp.gkeonprem.BareMetalNodePool(\"nodepool-basic\", {\n name: \"my-nodepool\",\n bareMetalCluster: default_basic.name,\n location: \"us-west1\",\n nodePoolConfig: {\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n nodeIp: \"10.200.0.11\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_basic = gcp.gkeonprem.BareMetalCluster(\"default-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"islandModeCidr\": {\n \"serviceAddressCidrBlocks\": [\"172.26.0.0/16\"],\n \"podAddressCidrBlocks\": [\"10.240.0.0/13\"],\n },\n },\n control_plane={\n \"controlPlaneNodePoolConfig\": {\n \"nodePoolConfig\": {\n \"labels\": {},\n \"operatingSystem\": \"LINUX\",\n \"nodeConfigs\": [{\n \"labels\": {},\n \"nodeIp\": \"10.200.0.9\",\n }],\n },\n },\n },\n load_balancer={\n \"portConfig\": {\n \"controlPlaneLoadBalancerPort\": 443,\n },\n \"vipConfig\": {\n \"controlPlaneVip\": \"10.200.0.13\",\n \"ingressVip\": \"10.200.0.14\",\n },\n \"metalLbConfig\": {\n \"addressPools\": [{\n \"pool\": \"pool1\",\n \"addresses\": [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n },\n },\n storage={\n \"lvpShareConfig\": {\n \"lvpConfig\": {\n \"path\": \"/mnt/localpv-share\",\n \"storageClass\": \"local-shared\",\n },\n \"sharedPathPvCount\": 5,\n },\n \"lvpNodeMountsConfig\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storageClass\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"adminUsers\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n })\nnodepool_basic = gcp.gkeonprem.BareMetalNodePool(\"nodepool-basic\",\n name=\"my-nodepool\",\n bare_metal_cluster=default_basic.name,\n location=\"us-west1\",\n node_pool_config={\n \"operatingSystem\": \"LINUX\",\n \"nodeConfigs\": [{\n \"nodeIp\": \"10.200.0.11\",\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 default_basic = new Gcp.GkeOnPrem.BareMetalCluster(\"default-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"pool1\",\n Addresses = new[]\n {\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n },\n },\n },\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n });\n\n var nodepool_basic = new Gcp.GkeOnPrem.BareMetalNodePool(\"nodepool-basic\", new()\n {\n Name = \"my-nodepool\",\n BareMetalCluster = default_basic.Name,\n Location = \"us-west1\",\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigArgs\n {\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigNodeConfigArgs\n {\n NodeIp = \"10.200.0.11\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewBareMetalCluster(ctx, \"default-basic\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\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\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"pool1\"),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.14/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.15/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.16/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.17/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.18/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::f/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::10/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::11/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::12/128\"),\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\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\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 = gkeonprem.NewBareMetalNodePool(ctx, \"nodepool-basic\", \u0026gkeonprem.BareMetalNodePoolArgs{\n\t\t\tName: pulumi.String(\"my-nodepool\"),\n\t\t\tBareMetalCluster: default_basic.Name,\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalNodePoolNodePoolConfigArgs{\n\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\tNodeConfigs: gkeonprem.BareMetalNodePoolNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalNodePoolNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.11\"),\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.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.BareMetalNodePool;\nimport com.pulumi.gcp.gkeonprem.BareMetalNodePoolArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalNodePoolNodePoolConfigArgs;\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_basic = new BareMetalCluster(\"default-basic\", BareMetalClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .metalLbConfig(BareMetalClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools(BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"pool1\")\n .addresses( \n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\")\n .build())\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .build());\n\n var nodepool_basic = new BareMetalNodePool(\"nodepool-basic\", BareMetalNodePoolArgs.builder()\n .name(\"my-nodepool\")\n .bareMetalCluster(default_basic.name())\n .location(\"us-west1\")\n .nodePoolConfig(BareMetalNodePoolNodePoolConfigArgs.builder()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalNodePoolNodePoolConfigNodeConfigArgs.builder()\n .nodeIp(\"10.200.0.11\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-basic:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n metalLbConfig:\n addressPools:\n - pool: pool1\n addresses:\n - 10.200.0.14/32\n - 10.200.0.15/32\n - 10.200.0.16/32\n - 10.200.0.17/32\n - 10.200.0.18/32\n - fd00:1::f/128\n - fd00:1::10/128\n - fd00:1::11/128\n - fd00:1::12/128\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n nodepool-basic:\n type: gcp:gkeonprem:BareMetalNodePool\n properties:\n name: my-nodepool\n bareMetalCluster: ${[\"default-basic\"].name}\n location: us-west1\n nodePoolConfig:\n operatingSystem: LINUX\n nodeConfigs:\n - nodeIp: 10.200.0.11\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Bare Metal Node Pool Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default_full = new gcp.gkeonprem.BareMetalCluster(\"default-full\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n metalLbConfig: {\n addressPools: [{\n pool: \"pool1\",\n addresses: [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n});\nconst nodepool_full = new gcp.gkeonprem.BareMetalNodePool(\"nodepool-full\", {\n name: \"my-nodepool\",\n displayName: \"test-name\",\n bareMetalCluster: default_full.name,\n location: \"us-west1\",\n annotations: {},\n nodePoolConfig: {\n operatingSystem: \"LINUX\",\n labels: {},\n nodeConfigs: [{\n nodeIp: \"10.200.0.11\",\n labels: {},\n }],\n taints: [{\n key: \"test-key\",\n value: \"test-value\",\n effect: \"NO_EXECUTE\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_full = gcp.gkeonprem.BareMetalCluster(\"default-full\",\n name=\"my-cluster\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"islandModeCidr\": {\n \"serviceAddressCidrBlocks\": [\"172.26.0.0/16\"],\n \"podAddressCidrBlocks\": [\"10.240.0.0/13\"],\n },\n },\n control_plane={\n \"controlPlaneNodePoolConfig\": {\n \"nodePoolConfig\": {\n \"labels\": {},\n \"operatingSystem\": \"LINUX\",\n \"nodeConfigs\": [{\n \"labels\": {},\n \"nodeIp\": \"10.200.0.9\",\n }],\n },\n },\n },\n load_balancer={\n \"portConfig\": {\n \"controlPlaneLoadBalancerPort\": 443,\n },\n \"vipConfig\": {\n \"controlPlaneVip\": \"10.200.0.13\",\n \"ingressVip\": \"10.200.0.14\",\n },\n \"metalLbConfig\": {\n \"addressPools\": [{\n \"pool\": \"pool1\",\n \"addresses\": [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n },\n },\n storage={\n \"lvpShareConfig\": {\n \"lvpConfig\": {\n \"path\": \"/mnt/localpv-share\",\n \"storageClass\": \"local-shared\",\n },\n \"sharedPathPvCount\": 5,\n },\n \"lvpNodeMountsConfig\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storageClass\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"adminUsers\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n })\nnodepool_full = gcp.gkeonprem.BareMetalNodePool(\"nodepool-full\",\n name=\"my-nodepool\",\n display_name=\"test-name\",\n bare_metal_cluster=default_full.name,\n location=\"us-west1\",\n annotations={},\n node_pool_config={\n \"operatingSystem\": \"LINUX\",\n \"labels\": {},\n \"nodeConfigs\": [{\n \"nodeIp\": \"10.200.0.11\",\n \"labels\": {},\n }],\n \"taints\": [{\n \"key\": \"test-key\",\n \"value\": \"test-value\",\n \"effect\": \"NO_EXECUTE\",\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 default_full = new Gcp.GkeOnPrem.BareMetalCluster(\"default-full\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"pool1\",\n Addresses = new[]\n {\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n },\n },\n },\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n });\n\n var nodepool_full = new Gcp.GkeOnPrem.BareMetalNodePool(\"nodepool-full\", new()\n {\n Name = \"my-nodepool\",\n DisplayName = \"test-name\",\n BareMetalCluster = default_full.Name,\n Location = \"us-west1\",\n Annotations = null,\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigArgs\n {\n OperatingSystem = \"LINUX\",\n Labels = null,\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigNodeConfigArgs\n {\n NodeIp = \"10.200.0.11\",\n Labels = null,\n },\n },\n Taints = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigTaintArgs\n {\n Key = \"test-key\",\n Value = \"test-value\",\n Effect = \"NO_EXECUTE\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewBareMetalCluster(ctx, \"default-full\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\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\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"pool1\"),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.14/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.15/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.16/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.17/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.18/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::f/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::10/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::11/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::12/128\"),\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\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\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 = gkeonprem.NewBareMetalNodePool(ctx, \"nodepool-full\", \u0026gkeonprem.BareMetalNodePoolArgs{\n\t\t\tName: pulumi.String(\"my-nodepool\"),\n\t\t\tDisplayName: pulumi.String(\"test-name\"),\n\t\t\tBareMetalCluster: default_full.Name,\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAnnotations: nil,\n\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalNodePoolNodePoolConfigArgs{\n\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\tLabels: nil,\n\t\t\t\tNodeConfigs: gkeonprem.BareMetalNodePoolNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalNodePoolNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.11\"),\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTaints: gkeonprem.BareMetalNodePoolNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalNodePoolNodePoolConfigTaintArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"test-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t\tEffect: pulumi.String(\"NO_EXECUTE\"),\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.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.BareMetalNodePool;\nimport com.pulumi.gcp.gkeonprem.BareMetalNodePoolArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalNodePoolNodePoolConfigArgs;\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_full = new BareMetalCluster(\"default-full\", BareMetalClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .metalLbConfig(BareMetalClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools(BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"pool1\")\n .addresses( \n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\")\n .build())\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .build());\n\n var nodepool_full = new BareMetalNodePool(\"nodepool-full\", BareMetalNodePoolArgs.builder()\n .name(\"my-nodepool\")\n .displayName(\"test-name\")\n .bareMetalCluster(default_full.name())\n .location(\"us-west1\")\n .annotations()\n .nodePoolConfig(BareMetalNodePoolNodePoolConfigArgs.builder()\n .operatingSystem(\"LINUX\")\n .labels()\n .nodeConfigs(BareMetalNodePoolNodePoolConfigNodeConfigArgs.builder()\n .nodeIp(\"10.200.0.11\")\n .labels()\n .build())\n .taints(BareMetalNodePoolNodePoolConfigTaintArgs.builder()\n .key(\"test-key\")\n .value(\"test-value\")\n .effect(\"NO_EXECUTE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-full:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n metalLbConfig:\n addressPools:\n - pool: pool1\n addresses:\n - 10.200.0.14/32\n - 10.200.0.15/32\n - 10.200.0.16/32\n - 10.200.0.17/32\n - 10.200.0.18/32\n - fd00:1::f/128\n - fd00:1::10/128\n - fd00:1::11/128\n - fd00:1::12/128\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n nodepool-full:\n type: gcp:gkeonprem:BareMetalNodePool\n properties:\n name: my-nodepool\n displayName: test-name\n bareMetalCluster: ${[\"default-full\"].name}\n location: us-west1\n annotations: {}\n nodePoolConfig:\n operatingSystem: LINUX\n labels: {}\n nodeConfigs:\n - nodeIp: 10.200.0.11\n labels: {}\n taints:\n - key: test-key\n value: test-value\n effect: NO_EXECUTE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBareMetalNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/bareMetalClusters/{{bare_metal_cluster}}/bareMetalNodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{bare_metal_cluster}}/{{name}}`\n\n* `{{location}}/{{bare_metal_cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, BareMetalNodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalNodePool:BareMetalNodePool default projects/{{project}}/locations/{{location}}/bareMetalClusters/{{bare_metal_cluster}}/bareMetalNodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalNodePool:BareMetalNodePool default {{project}}/{{location}}/{{bare_metal_cluster}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalNodePool:BareMetalNodePool default {{location}}/{{bare_metal_cluster}}/{{name}}\n```\n\n", + "description": "A Google Bare Metal Node Pool.\n\n\n\n## Example Usage\n\n### Gkeonprem Bare Metal Node Pool Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default_basic = new gcp.gkeonprem.BareMetalCluster(\"default-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n metalLbConfig: {\n addressPools: [{\n pool: \"pool1\",\n addresses: [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n});\nconst nodepool_basic = new gcp.gkeonprem.BareMetalNodePool(\"nodepool-basic\", {\n name: \"my-nodepool\",\n bareMetalCluster: default_basic.name,\n location: \"us-west1\",\n nodePoolConfig: {\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n nodeIp: \"10.200.0.11\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_basic = gcp.gkeonprem.BareMetalCluster(\"default-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"labels\": {},\n \"node_ip\": \"10.200.0.9\",\n }],\n },\n },\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.13\",\n \"ingress_vip\": \"10.200.0.14\",\n },\n \"metal_lb_config\": {\n \"address_pools\": [{\n \"pool\": \"pool1\",\n \"addresses\": [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"admin_users\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n })\nnodepool_basic = gcp.gkeonprem.BareMetalNodePool(\"nodepool-basic\",\n name=\"my-nodepool\",\n bare_metal_cluster=default_basic.name,\n location=\"us-west1\",\n node_pool_config={\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"node_ip\": \"10.200.0.11\",\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 default_basic = new Gcp.GkeOnPrem.BareMetalCluster(\"default-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"pool1\",\n Addresses = new[]\n {\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n },\n },\n },\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n });\n\n var nodepool_basic = new Gcp.GkeOnPrem.BareMetalNodePool(\"nodepool-basic\", new()\n {\n Name = \"my-nodepool\",\n BareMetalCluster = default_basic.Name,\n Location = \"us-west1\",\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigArgs\n {\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigNodeConfigArgs\n {\n NodeIp = \"10.200.0.11\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewBareMetalCluster(ctx, \"default-basic\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\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\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"pool1\"),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.14/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.15/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.16/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.17/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.18/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::f/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::10/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::11/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::12/128\"),\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\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\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 = gkeonprem.NewBareMetalNodePool(ctx, \"nodepool-basic\", \u0026gkeonprem.BareMetalNodePoolArgs{\n\t\t\tName: pulumi.String(\"my-nodepool\"),\n\t\t\tBareMetalCluster: default_basic.Name,\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalNodePoolNodePoolConfigArgs{\n\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\tNodeConfigs: gkeonprem.BareMetalNodePoolNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalNodePoolNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.11\"),\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.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.BareMetalNodePool;\nimport com.pulumi.gcp.gkeonprem.BareMetalNodePoolArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalNodePoolNodePoolConfigArgs;\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_basic = new BareMetalCluster(\"default-basic\", BareMetalClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .metalLbConfig(BareMetalClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools(BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"pool1\")\n .addresses( \n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\")\n .build())\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .build());\n\n var nodepool_basic = new BareMetalNodePool(\"nodepool-basic\", BareMetalNodePoolArgs.builder()\n .name(\"my-nodepool\")\n .bareMetalCluster(default_basic.name())\n .location(\"us-west1\")\n .nodePoolConfig(BareMetalNodePoolNodePoolConfigArgs.builder()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalNodePoolNodePoolConfigNodeConfigArgs.builder()\n .nodeIp(\"10.200.0.11\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-basic:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n metalLbConfig:\n addressPools:\n - pool: pool1\n addresses:\n - 10.200.0.14/32\n - 10.200.0.15/32\n - 10.200.0.16/32\n - 10.200.0.17/32\n - 10.200.0.18/32\n - fd00:1::f/128\n - fd00:1::10/128\n - fd00:1::11/128\n - fd00:1::12/128\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n nodepool-basic:\n type: gcp:gkeonprem:BareMetalNodePool\n properties:\n name: my-nodepool\n bareMetalCluster: ${[\"default-basic\"].name}\n location: us-west1\n nodePoolConfig:\n operatingSystem: LINUX\n nodeConfigs:\n - nodeIp: 10.200.0.11\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Bare Metal Node Pool Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default_full = new gcp.gkeonprem.BareMetalCluster(\"default-full\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n metalLbConfig: {\n addressPools: [{\n pool: \"pool1\",\n addresses: [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n});\nconst nodepool_full = new gcp.gkeonprem.BareMetalNodePool(\"nodepool-full\", {\n name: \"my-nodepool\",\n displayName: \"test-name\",\n bareMetalCluster: default_full.name,\n location: \"us-west1\",\n annotations: {},\n nodePoolConfig: {\n operatingSystem: \"LINUX\",\n labels: {},\n nodeConfigs: [{\n nodeIp: \"10.200.0.11\",\n labels: {},\n }],\n taints: [{\n key: \"test-key\",\n value: \"test-value\",\n effect: \"NO_EXECUTE\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_full = gcp.gkeonprem.BareMetalCluster(\"default-full\",\n name=\"my-cluster\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"labels\": {},\n \"node_ip\": \"10.200.0.9\",\n }],\n },\n },\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.13\",\n \"ingress_vip\": \"10.200.0.14\",\n },\n \"metal_lb_config\": {\n \"address_pools\": [{\n \"pool\": \"pool1\",\n \"addresses\": [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"admin_users\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n })\nnodepool_full = gcp.gkeonprem.BareMetalNodePool(\"nodepool-full\",\n name=\"my-nodepool\",\n display_name=\"test-name\",\n bare_metal_cluster=default_full.name,\n location=\"us-west1\",\n annotations={},\n node_pool_config={\n \"operating_system\": \"LINUX\",\n \"labels\": {},\n \"node_configs\": [{\n \"node_ip\": \"10.200.0.11\",\n \"labels\": {},\n }],\n \"taints\": [{\n \"key\": \"test-key\",\n \"value\": \"test-value\",\n \"effect\": \"NO_EXECUTE\",\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 default_full = new Gcp.GkeOnPrem.BareMetalCluster(\"default-full\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"pool1\",\n Addresses = new[]\n {\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n },\n },\n },\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n });\n\n var nodepool_full = new Gcp.GkeOnPrem.BareMetalNodePool(\"nodepool-full\", new()\n {\n Name = \"my-nodepool\",\n DisplayName = \"test-name\",\n BareMetalCluster = default_full.Name,\n Location = \"us-west1\",\n Annotations = null,\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigArgs\n {\n OperatingSystem = \"LINUX\",\n Labels = null,\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigNodeConfigArgs\n {\n NodeIp = \"10.200.0.11\",\n Labels = null,\n },\n },\n Taints = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigTaintArgs\n {\n Key = \"test-key\",\n Value = \"test-value\",\n Effect = \"NO_EXECUTE\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewBareMetalCluster(ctx, \"default-full\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\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\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"pool1\"),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.14/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.15/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.16/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.17/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.18/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::f/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::10/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::11/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::12/128\"),\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\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\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 = gkeonprem.NewBareMetalNodePool(ctx, \"nodepool-full\", \u0026gkeonprem.BareMetalNodePoolArgs{\n\t\t\tName: pulumi.String(\"my-nodepool\"),\n\t\t\tDisplayName: pulumi.String(\"test-name\"),\n\t\t\tBareMetalCluster: default_full.Name,\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAnnotations: nil,\n\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalNodePoolNodePoolConfigArgs{\n\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\tLabels: nil,\n\t\t\t\tNodeConfigs: gkeonprem.BareMetalNodePoolNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalNodePoolNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.11\"),\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTaints: gkeonprem.BareMetalNodePoolNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalNodePoolNodePoolConfigTaintArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"test-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t\tEffect: pulumi.String(\"NO_EXECUTE\"),\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.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.BareMetalNodePool;\nimport com.pulumi.gcp.gkeonprem.BareMetalNodePoolArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalNodePoolNodePoolConfigArgs;\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_full = new BareMetalCluster(\"default-full\", BareMetalClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .metalLbConfig(BareMetalClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools(BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"pool1\")\n .addresses( \n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\")\n .build())\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .build());\n\n var nodepool_full = new BareMetalNodePool(\"nodepool-full\", BareMetalNodePoolArgs.builder()\n .name(\"my-nodepool\")\n .displayName(\"test-name\")\n .bareMetalCluster(default_full.name())\n .location(\"us-west1\")\n .annotations()\n .nodePoolConfig(BareMetalNodePoolNodePoolConfigArgs.builder()\n .operatingSystem(\"LINUX\")\n .labels()\n .nodeConfigs(BareMetalNodePoolNodePoolConfigNodeConfigArgs.builder()\n .nodeIp(\"10.200.0.11\")\n .labels()\n .build())\n .taints(BareMetalNodePoolNodePoolConfigTaintArgs.builder()\n .key(\"test-key\")\n .value(\"test-value\")\n .effect(\"NO_EXECUTE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-full:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n metalLbConfig:\n addressPools:\n - pool: pool1\n addresses:\n - 10.200.0.14/32\n - 10.200.0.15/32\n - 10.200.0.16/32\n - 10.200.0.17/32\n - 10.200.0.18/32\n - fd00:1::f/128\n - fd00:1::10/128\n - fd00:1::11/128\n - fd00:1::12/128\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n nodepool-full:\n type: gcp:gkeonprem:BareMetalNodePool\n properties:\n name: my-nodepool\n displayName: test-name\n bareMetalCluster: ${[\"default-full\"].name}\n location: us-west1\n annotations: {}\n nodePoolConfig:\n operatingSystem: LINUX\n labels: {}\n nodeConfigs:\n - nodeIp: 10.200.0.11\n labels: {}\n taints:\n - key: test-key\n value: test-value\n effect: NO_EXECUTE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBareMetalNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/bareMetalClusters/{{bare_metal_cluster}}/bareMetalNodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{bare_metal_cluster}}/{{name}}`\n\n* `{{location}}/{{bare_metal_cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, BareMetalNodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalNodePool:BareMetalNodePool default projects/{{project}}/locations/{{location}}/bareMetalClusters/{{bare_metal_cluster}}/bareMetalNodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalNodePool:BareMetalNodePool default {{project}}/{{location}}/{{bare_metal_cluster}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalNodePool:BareMetalNodePool default {{location}}/{{bare_metal_cluster}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -198703,7 +198703,7 @@ } }, "gcp:gkeonprem/vMwareCluster:VMwareCluster": { - "description": "A Google VMware User Cluster.\n\n\n\n## Example Usage\n\n### Gkeonprem Vmware Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_basic = new gcp.gkeonprem.VMwareCluster(\"cluster-basic\", {\n name: \"cluster-basic\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description: \"test cluster\",\n onPremVersion: \"1.13.1-gke.35\",\n annotations: {},\n networkConfig: {\n serviceAddressCidrBlocks: [\"10.96.0.0/12\"],\n podAddressCidrBlocks: [\"192.168.0.0/16\"],\n dhcpIpConfig: {\n enabled: true,\n },\n },\n controlPlaneNode: {\n cpus: 4,\n memory: 8192,\n replicas: 1,\n },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n ingressVip: \"10.251.135.19\",\n },\n metalLbConfig: {\n addressPools: [\n {\n pool: \"ingress-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n avoidBuggyIps: true,\n },\n {\n pool: \"lb-test-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n avoidBuggyIps: true,\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_basic = gcp.gkeonprem.VMwareCluster(\"cluster-basic\",\n name=\"cluster-basic\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description=\"test cluster\",\n on_prem_version=\"1.13.1-gke.35\",\n annotations={},\n network_config={\n \"serviceAddressCidrBlocks\": [\"10.96.0.0/12\"],\n \"podAddressCidrBlocks\": [\"192.168.0.0/16\"],\n \"dhcpIpConfig\": {\n \"enabled\": True,\n },\n },\n control_plane_node={\n \"cpus\": 4,\n \"memory\": 8192,\n \"replicas\": 1,\n },\n load_balancer={\n \"vipConfig\": {\n \"controlPlaneVip\": \"10.251.133.5\",\n \"ingressVip\": \"10.251.135.19\",\n },\n \"metalLbConfig\": {\n \"addressPools\": [\n {\n \"pool\": \"ingress-ip\",\n \"manualAssign\": True,\n \"addresses\": [\"10.251.135.19\"],\n \"avoidBuggyIps\": True,\n },\n {\n \"pool\": \"lb-test-ip\",\n \"manualAssign\": True,\n \"addresses\": [\"10.251.135.19\"],\n \"avoidBuggyIps\": True,\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 cluster_basic = new Gcp.GkeOnPrem.VMwareCluster(\"cluster-basic\", new()\n {\n Name = \"cluster-basic\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n Description = \"test cluster\",\n OnPremVersion = \"1.13.1-gke.35\",\n Annotations = null,\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"10.96.0.0/12\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"192.168.0.0/16\",\n },\n DhcpIpConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs\n {\n Enabled = true,\n },\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n Replicas = 1,\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n IngressVip = \"10.251.135.19\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"ingress-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n AvoidBuggyIps = true,\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"lb-test-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n AvoidBuggyIps = true,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewVMwareCluster(ctx, \"cluster-basic\", \u0026gkeonprem.VMwareClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-basic\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tDescription: pulumi.String(\"test cluster\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.13.1-gke.35\"),\n\t\t\tAnnotations: nil,\n\t\t\tNetworkConfig: \u0026gkeonprem.VMwareClusterNetworkConfigArgs{\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.96.0.0/12\"),\n\t\t\t\t},\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tDhcpIpConfig: \u0026gkeonprem.VMwareClusterNetworkConfigDhcpIpConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlaneNode: \u0026gkeonprem.VMwareClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t\tReplicas: pulumi.Int(1),\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VMwareClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VMwareClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"ingress-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAvoidBuggyIps: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"lb-test-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAvoidBuggyIps: 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})\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.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerMetalLbConfigArgs;\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 cluster_basic = new VMwareCluster(\"cluster-basic\", VMwareClusterArgs.builder()\n .name(\"cluster-basic\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .annotations()\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .dhcpIpConfig(VMwareClusterNetworkConfigDhcpIpConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .metalLbConfig(VMwareClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools( \n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"ingress-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .avoidBuggyIps(true)\n .build(),\n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"lb-test-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .avoidBuggyIps(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-basic:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: cluster-basic\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n annotations: {}\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n dhcpIpConfig:\n enabled: true\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n metalLbConfig:\n addressPools:\n - pool: ingress-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n avoidBuggyIps: true\n - pool: lb-test-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n avoidBuggyIps: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Vmware Cluster F5lb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_f5lb = new gcp.gkeonprem.VMwareCluster(\"cluster-f5lb\", {\n name: \"cluster-f5lb\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description: \"test cluster\",\n onPremVersion: \"1.13.1-gke.35\",\n annotations: {},\n networkConfig: {\n serviceAddressCidrBlocks: [\"10.96.0.0/12\"],\n podAddressCidrBlocks: [\"192.168.0.0/16\"],\n dhcpIpConfig: {\n enabled: true,\n },\n controlPlaneV2Config: {\n controlPlaneIpBlock: {\n ips: [{\n hostname: \"test-hostname\",\n ip: \"10.0.0.1\",\n }],\n netmask: \"10.0.0.1/32\",\n gateway: \"test-gateway\",\n },\n },\n vcenterNetwork: \"test-vcenter-network\",\n },\n controlPlaneNode: {\n cpus: 4,\n memory: 8192,\n replicas: 1,\n autoResizeConfig: {\n enabled: true,\n },\n },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n ingressVip: \"10.251.135.19\",\n },\n f5Config: {\n address: \"10.0.0.1\",\n partition: \"test-partition\",\n snatPool: \"test-snap-pool\",\n },\n },\n dataplaneV2: {\n dataplaneV2Enabled: true,\n windowsDataplaneV2Enabled: true,\n advancedNetworking: true,\n },\n vmTrackingEnabled: true,\n enableControlPlaneV2: true,\n disableBundledIngress: true,\n authorization: {\n adminUsers: [{\n username: \"testuser@gmail.com\",\n }],\n },\n antiAffinityGroups: {\n aagConfigDisabled: true,\n },\n autoRepairConfig: {\n enabled: true,\n },\n storage: {\n vsphereCsiDisabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_f5lb = gcp.gkeonprem.VMwareCluster(\"cluster-f5lb\",\n name=\"cluster-f5lb\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description=\"test cluster\",\n on_prem_version=\"1.13.1-gke.35\",\n annotations={},\n network_config={\n \"serviceAddressCidrBlocks\": [\"10.96.0.0/12\"],\n \"podAddressCidrBlocks\": [\"192.168.0.0/16\"],\n \"dhcpIpConfig\": {\n \"enabled\": True,\n },\n \"controlPlaneV2Config\": {\n \"controlPlaneIpBlock\": {\n \"ips\": [{\n \"hostname\": \"test-hostname\",\n \"ip\": \"10.0.0.1\",\n }],\n \"netmask\": \"10.0.0.1/32\",\n \"gateway\": \"test-gateway\",\n },\n },\n \"vcenterNetwork\": \"test-vcenter-network\",\n },\n control_plane_node={\n \"cpus\": 4,\n \"memory\": 8192,\n \"replicas\": 1,\n \"autoResizeConfig\": {\n \"enabled\": True,\n },\n },\n load_balancer={\n \"vipConfig\": {\n \"controlPlaneVip\": \"10.251.133.5\",\n \"ingressVip\": \"10.251.135.19\",\n },\n \"f5Config\": {\n \"address\": \"10.0.0.1\",\n \"partition\": \"test-partition\",\n \"snatPool\": \"test-snap-pool\",\n },\n },\n dataplane_v2={\n \"dataplaneV2Enabled\": True,\n \"windowsDataplaneV2Enabled\": True,\n \"advancedNetworking\": True,\n },\n vm_tracking_enabled=True,\n enable_control_plane_v2=True,\n disable_bundled_ingress=True,\n authorization={\n \"adminUsers\": [{\n \"username\": \"testuser@gmail.com\",\n }],\n },\n anti_affinity_groups={\n \"aagConfigDisabled\": True,\n },\n auto_repair_config={\n \"enabled\": True,\n },\n storage={\n \"vsphereCsiDisabled\": 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 cluster_f5lb = new Gcp.GkeOnPrem.VMwareCluster(\"cluster-f5lb\", new()\n {\n Name = \"cluster-f5lb\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n Description = \"test cluster\",\n OnPremVersion = \"1.13.1-gke.35\",\n Annotations = null,\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"10.96.0.0/12\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"192.168.0.0/16\",\n },\n DhcpIpConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs\n {\n Enabled = true,\n },\n ControlPlaneV2Config = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigArgs\n {\n ControlPlaneIpBlock = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockArgs\n {\n Ips = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockIpArgs\n {\n Hostname = \"test-hostname\",\n Ip = \"10.0.0.1\",\n },\n },\n Netmask = \"10.0.0.1/32\",\n Gateway = \"test-gateway\",\n },\n },\n VcenterNetwork = \"test-vcenter-network\",\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n Replicas = 1,\n AutoResizeConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeAutoResizeConfigArgs\n {\n Enabled = true,\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n IngressVip = \"10.251.135.19\",\n },\n F5Config = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerF5ConfigArgs\n {\n Address = \"10.0.0.1\",\n Partition = \"test-partition\",\n SnatPool = \"test-snap-pool\",\n },\n },\n DataplaneV2 = new Gcp.GkeOnPrem.Inputs.VMwareClusterDataplaneV2Args\n {\n DataplaneV2Enabled = true,\n WindowsDataplaneV2Enabled = true,\n AdvancedNetworking = true,\n },\n VmTrackingEnabled = true,\n EnableControlPlaneV2 = true,\n DisableBundledIngress = true,\n Authorization = new Gcp.GkeOnPrem.Inputs.VMwareClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterAuthorizationAdminUserArgs\n {\n Username = \"testuser@gmail.com\",\n },\n },\n },\n AntiAffinityGroups = new Gcp.GkeOnPrem.Inputs.VMwareClusterAntiAffinityGroupsArgs\n {\n AagConfigDisabled = true,\n },\n AutoRepairConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterAutoRepairConfigArgs\n {\n Enabled = true,\n },\n Storage = new Gcp.GkeOnPrem.Inputs.VMwareClusterStorageArgs\n {\n VsphereCsiDisabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewVMwareCluster(ctx, \"cluster-f5lb\", \u0026gkeonprem.VMwareClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-f5lb\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tDescription: pulumi.String(\"test cluster\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.13.1-gke.35\"),\n\t\t\tAnnotations: nil,\n\t\t\tNetworkConfig: \u0026gkeonprem.VMwareClusterNetworkConfigArgs{\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.96.0.0/12\"),\n\t\t\t\t},\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tDhcpIpConfig: \u0026gkeonprem.VMwareClusterNetworkConfigDhcpIpConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tControlPlaneV2Config: \u0026gkeonprem.VMwareClusterNetworkConfigControlPlaneV2ConfigArgs{\n\t\t\t\t\tControlPlaneIpBlock: \u0026gkeonprem.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockArgs{\n\t\t\t\t\t\tIps: gkeonprem.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockIpArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockIpArgs{\n\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname\"),\n\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.0.0.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tNetmask: pulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\t\tGateway: pulumi.String(\"test-gateway\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVcenterNetwork: pulumi.String(\"test-vcenter-network\"),\n\t\t\t},\n\t\t\tControlPlaneNode: \u0026gkeonprem.VMwareClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t\tReplicas: pulumi.Int(1),\n\t\t\t\tAutoResizeConfig: \u0026gkeonprem.VMwareClusterControlPlaneNodeAutoResizeConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VMwareClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VMwareClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tF5Config: \u0026gkeonprem.VMwareClusterLoadBalancerF5ConfigArgs{\n\t\t\t\t\tAddress: pulumi.String(\"10.0.0.1\"),\n\t\t\t\t\tPartition: pulumi.String(\"test-partition\"),\n\t\t\t\t\tSnatPool: pulumi.String(\"test-snap-pool\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataplaneV2: \u0026gkeonprem.VMwareClusterDataplaneV2Args{\n\t\t\t\tDataplaneV2Enabled: pulumi.Bool(true),\n\t\t\t\tWindowsDataplaneV2Enabled: pulumi.Bool(true),\n\t\t\t\tAdvancedNetworking: pulumi.Bool(true),\n\t\t\t},\n\t\t\tVmTrackingEnabled: pulumi.Bool(true),\n\t\t\tEnableControlPlaneV2: pulumi.Bool(true),\n\t\t\tDisableBundledIngress: pulumi.Bool(true),\n\t\t\tAuthorization: \u0026gkeonprem.VMwareClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: gkeonprem.VMwareClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026gkeonprem.VMwareClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"testuser@gmail.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAntiAffinityGroups: \u0026gkeonprem.VMwareClusterAntiAffinityGroupsArgs{\n\t\t\t\tAagConfigDisabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tAutoRepairConfig: \u0026gkeonprem.VMwareClusterAutoRepairConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.VMwareClusterStorageArgs{\n\t\t\t\tVsphereCsiDisabled: 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.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeAutoResizeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerF5ConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterDataplaneV2Args;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAntiAffinityGroupsArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAutoRepairConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterStorageArgs;\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 cluster_f5lb = new VMwareCluster(\"cluster-f5lb\", VMwareClusterArgs.builder()\n .name(\"cluster-f5lb\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .annotations()\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .dhcpIpConfig(VMwareClusterNetworkConfigDhcpIpConfigArgs.builder()\n .enabled(true)\n .build())\n .controlPlaneV2Config(VMwareClusterNetworkConfigControlPlaneV2ConfigArgs.builder()\n .controlPlaneIpBlock(VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockArgs.builder()\n .ips(VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockIpArgs.builder()\n .hostname(\"test-hostname\")\n .ip(\"10.0.0.1\")\n .build())\n .netmask(\"10.0.0.1/32\")\n .gateway(\"test-gateway\")\n .build())\n .build())\n .vcenterNetwork(\"test-vcenter-network\")\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .autoResizeConfig(VMwareClusterControlPlaneNodeAutoResizeConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .f5Config(VMwareClusterLoadBalancerF5ConfigArgs.builder()\n .address(\"10.0.0.1\")\n .partition(\"test-partition\")\n .snatPool(\"test-snap-pool\")\n .build())\n .build())\n .dataplaneV2(VMwareClusterDataplaneV2Args.builder()\n .dataplaneV2Enabled(true)\n .windowsDataplaneV2Enabled(true)\n .advancedNetworking(true)\n .build())\n .vmTrackingEnabled(true)\n .enableControlPlaneV2(true)\n .disableBundledIngress(true)\n .authorization(VMwareClusterAuthorizationArgs.builder()\n .adminUsers(VMwareClusterAuthorizationAdminUserArgs.builder()\n .username(\"testuser@gmail.com\")\n .build())\n .build())\n .antiAffinityGroups(VMwareClusterAntiAffinityGroupsArgs.builder()\n .aagConfigDisabled(true)\n .build())\n .autoRepairConfig(VMwareClusterAutoRepairConfigArgs.builder()\n .enabled(true)\n .build())\n .storage(VMwareClusterStorageArgs.builder()\n .vsphereCsiDisabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-f5lb:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: cluster-f5lb\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n annotations: {}\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n dhcpIpConfig:\n enabled: true\n controlPlaneV2Config:\n controlPlaneIpBlock:\n ips:\n - hostname: test-hostname\n ip: 10.0.0.1\n netmask: 10.0.0.1/32\n gateway: test-gateway\n vcenterNetwork: test-vcenter-network\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n autoResizeConfig:\n enabled: true\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n f5Config:\n address: 10.0.0.1\n partition: test-partition\n snatPool: test-snap-pool\n dataplaneV2:\n dataplaneV2Enabled: true\n windowsDataplaneV2Enabled: true\n advancedNetworking: true\n vmTrackingEnabled: true\n enableControlPlaneV2: true\n disableBundledIngress: true\n authorization:\n adminUsers:\n - username: testuser@gmail.com\n antiAffinityGroups:\n aagConfigDisabled: true\n autoRepairConfig:\n enabled: true\n storage:\n vsphereCsiDisabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Vmware Cluster Manuallb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_manuallb = new gcp.gkeonprem.VMwareCluster(\"cluster-manuallb\", {\n name: \"cluster-manuallb\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description: \"test cluster\",\n onPremVersion: \"1.13.1-gke.35\",\n annotations: {},\n networkConfig: {\n serviceAddressCidrBlocks: [\"10.96.0.0/12\"],\n podAddressCidrBlocks: [\"192.168.0.0/16\"],\n hostConfig: {\n dnsServers: [\"10.254.41.1\"],\n ntpServers: [\"216.239.35.8\"],\n dnsSearchDomains: [\"test-domain\"],\n },\n staticIpConfig: {\n ipBlocks: [{\n netmask: \"255.255.252.0\",\n gateway: \"10.251.31.254\",\n ips: [\n {\n ip: \"10.251.30.153\",\n hostname: \"test-hostname1\",\n },\n {\n ip: \"10.251.31.206\",\n hostname: \"test-hostname2\",\n },\n {\n ip: \"10.251.31.193\",\n hostname: \"test-hostname3\",\n },\n {\n ip: \"10.251.30.230\",\n hostname: \"test-hostname4\",\n },\n ],\n }],\n },\n },\n controlPlaneNode: {\n cpus: 4,\n memory: 8192,\n replicas: 1,\n autoResizeConfig: {\n enabled: true,\n },\n },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n ingressVip: \"10.251.135.19\",\n },\n manualLbConfig: {\n ingressHttpNodePort: 30005,\n ingressHttpsNodePort: 30006,\n controlPlaneNodePort: 30007,\n konnectivityServerNodePort: 30008,\n },\n },\n vcenters: [{\n resourcePool: \"test-resource-pool\",\n datastore: \"test-datastore\",\n datacenter: \"test-datacenter\",\n cluster: \"test-cluster\",\n folder: \"test-folder\",\n caCertData: \"test-ca-cert-data\",\n storagePolicyName: \"test-storage-policy-name\",\n }],\n dataplaneV2: {\n dataplaneV2Enabled: true,\n windowsDataplaneV2Enabled: true,\n advancedNetworking: true,\n },\n vmTrackingEnabled: true,\n enableControlPlaneV2: true,\n upgradePolicy: {\n controlPlaneOnly: true,\n },\n authorization: {\n adminUsers: [{\n username: \"testuser@gmail.com\",\n }],\n },\n antiAffinityGroups: {\n aagConfigDisabled: true,\n },\n autoRepairConfig: {\n enabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_manuallb = gcp.gkeonprem.VMwareCluster(\"cluster-manuallb\",\n name=\"cluster-manuallb\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description=\"test cluster\",\n on_prem_version=\"1.13.1-gke.35\",\n annotations={},\n network_config={\n \"serviceAddressCidrBlocks\": [\"10.96.0.0/12\"],\n \"podAddressCidrBlocks\": [\"192.168.0.0/16\"],\n \"hostConfig\": {\n \"dnsServers\": [\"10.254.41.1\"],\n \"ntpServers\": [\"216.239.35.8\"],\n \"dnsSearchDomains\": [\"test-domain\"],\n },\n \"staticIpConfig\": {\n \"ipBlocks\": [{\n \"netmask\": \"255.255.252.0\",\n \"gateway\": \"10.251.31.254\",\n \"ips\": [\n {\n \"ip\": \"10.251.30.153\",\n \"hostname\": \"test-hostname1\",\n },\n {\n \"ip\": \"10.251.31.206\",\n \"hostname\": \"test-hostname2\",\n },\n {\n \"ip\": \"10.251.31.193\",\n \"hostname\": \"test-hostname3\",\n },\n {\n \"ip\": \"10.251.30.230\",\n \"hostname\": \"test-hostname4\",\n },\n ],\n }],\n },\n },\n control_plane_node={\n \"cpus\": 4,\n \"memory\": 8192,\n \"replicas\": 1,\n \"autoResizeConfig\": {\n \"enabled\": True,\n },\n },\n load_balancer={\n \"vipConfig\": {\n \"controlPlaneVip\": \"10.251.133.5\",\n \"ingressVip\": \"10.251.135.19\",\n },\n \"manualLbConfig\": {\n \"ingressHttpNodePort\": 30005,\n \"ingressHttpsNodePort\": 30006,\n \"controlPlaneNodePort\": 30007,\n \"konnectivityServerNodePort\": 30008,\n },\n },\n vcenters=[{\n \"resourcePool\": \"test-resource-pool\",\n \"datastore\": \"test-datastore\",\n \"datacenter\": \"test-datacenter\",\n \"cluster\": \"test-cluster\",\n \"folder\": \"test-folder\",\n \"caCertData\": \"test-ca-cert-data\",\n \"storagePolicyName\": \"test-storage-policy-name\",\n }],\n dataplane_v2={\n \"dataplaneV2Enabled\": True,\n \"windowsDataplaneV2Enabled\": True,\n \"advancedNetworking\": True,\n },\n vm_tracking_enabled=True,\n enable_control_plane_v2=True,\n upgrade_policy={\n \"controlPlaneOnly\": True,\n },\n authorization={\n \"adminUsers\": [{\n \"username\": \"testuser@gmail.com\",\n }],\n },\n anti_affinity_groups={\n \"aagConfigDisabled\": True,\n },\n auto_repair_config={\n \"enabled\": 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 cluster_manuallb = new Gcp.GkeOnPrem.VMwareCluster(\"cluster-manuallb\", new()\n {\n Name = \"cluster-manuallb\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n Description = \"test cluster\",\n OnPremVersion = \"1.13.1-gke.35\",\n Annotations = null,\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"10.96.0.0/12\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"192.168.0.0/16\",\n },\n HostConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigHostConfigArgs\n {\n DnsServers = new[]\n {\n \"10.254.41.1\",\n },\n NtpServers = new[]\n {\n \"216.239.35.8\",\n },\n DnsSearchDomains = new[]\n {\n \"test-domain\",\n },\n },\n StaticIpConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigArgs\n {\n IpBlocks = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockArgs\n {\n Netmask = \"255.255.252.0\",\n Gateway = \"10.251.31.254\",\n Ips = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs\n {\n Ip = \"10.251.30.153\",\n Hostname = \"test-hostname1\",\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs\n {\n Ip = \"10.251.31.206\",\n Hostname = \"test-hostname2\",\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs\n {\n Ip = \"10.251.31.193\",\n Hostname = \"test-hostname3\",\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs\n {\n Ip = \"10.251.30.230\",\n Hostname = \"test-hostname4\",\n },\n },\n },\n },\n },\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n Replicas = 1,\n AutoResizeConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeAutoResizeConfigArgs\n {\n Enabled = true,\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n IngressVip = \"10.251.135.19\",\n },\n ManualLbConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerManualLbConfigArgs\n {\n IngressHttpNodePort = 30005,\n IngressHttpsNodePort = 30006,\n ControlPlaneNodePort = 30007,\n KonnectivityServerNodePort = 30008,\n },\n },\n Vcenters = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterVcenterArgs\n {\n ResourcePool = \"test-resource-pool\",\n Datastore = \"test-datastore\",\n Datacenter = \"test-datacenter\",\n Cluster = \"test-cluster\",\n Folder = \"test-folder\",\n CaCertData = \"test-ca-cert-data\",\n StoragePolicyName = \"test-storage-policy-name\",\n },\n },\n DataplaneV2 = new Gcp.GkeOnPrem.Inputs.VMwareClusterDataplaneV2Args\n {\n DataplaneV2Enabled = true,\n WindowsDataplaneV2Enabled = true,\n AdvancedNetworking = true,\n },\n VmTrackingEnabled = true,\n EnableControlPlaneV2 = true,\n UpgradePolicy = new Gcp.GkeOnPrem.Inputs.VMwareClusterUpgradePolicyArgs\n {\n ControlPlaneOnly = true,\n },\n Authorization = new Gcp.GkeOnPrem.Inputs.VMwareClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterAuthorizationAdminUserArgs\n {\n Username = \"testuser@gmail.com\",\n },\n },\n },\n AntiAffinityGroups = new Gcp.GkeOnPrem.Inputs.VMwareClusterAntiAffinityGroupsArgs\n {\n AagConfigDisabled = true,\n },\n AutoRepairConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterAutoRepairConfigArgs\n {\n Enabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewVMwareCluster(ctx, \"cluster-manuallb\", \u0026gkeonprem.VMwareClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-manuallb\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tDescription: pulumi.String(\"test cluster\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.13.1-gke.35\"),\n\t\t\tAnnotations: nil,\n\t\t\tNetworkConfig: \u0026gkeonprem.VMwareClusterNetworkConfigArgs{\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.96.0.0/12\"),\n\t\t\t\t},\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tHostConfig: \u0026gkeonprem.VMwareClusterNetworkConfigHostConfigArgs{\n\t\t\t\t\tDnsServers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.254.41.1\"),\n\t\t\t\t\t},\n\t\t\t\t\tNtpServers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"216.239.35.8\"),\n\t\t\t\t\t},\n\t\t\t\t\tDnsSearchDomains: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"test-domain\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStaticIpConfig: \u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigArgs{\n\t\t\t\t\tIpBlocks: gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockArray{\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockArgs{\n\t\t\t\t\t\t\tNetmask: pulumi.String(\"255.255.252.0\"),\n\t\t\t\t\t\t\tGateway: pulumi.String(\"10.251.31.254\"),\n\t\t\t\t\t\t\tIps: gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArray{\n\t\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs{\n\t\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.251.30.153\"),\n\t\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname1\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs{\n\t\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.251.31.206\"),\n\t\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs{\n\t\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.251.31.193\"),\n\t\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs{\n\t\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.251.30.230\"),\n\t\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname4\"),\n\t\t\t\t\t\t\t\t},\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\tControlPlaneNode: \u0026gkeonprem.VMwareClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t\tReplicas: pulumi.Int(1),\n\t\t\t\tAutoResizeConfig: \u0026gkeonprem.VMwareClusterControlPlaneNodeAutoResizeConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VMwareClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VMwareClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tManualLbConfig: \u0026gkeonprem.VMwareClusterLoadBalancerManualLbConfigArgs{\n\t\t\t\t\tIngressHttpNodePort: pulumi.Int(30005),\n\t\t\t\t\tIngressHttpsNodePort: pulumi.Int(30006),\n\t\t\t\t\tControlPlaneNodePort: pulumi.Int(30007),\n\t\t\t\t\tKonnectivityServerNodePort: pulumi.Int(30008),\n\t\t\t\t},\n\t\t\t},\n\t\t\tVcenters: gkeonprem.VMwareClusterVcenterArray{\n\t\t\t\t\u0026gkeonprem.VMwareClusterVcenterArgs{\n\t\t\t\t\tResourcePool: pulumi.String(\"test-resource-pool\"),\n\t\t\t\t\tDatastore: pulumi.String(\"test-datastore\"),\n\t\t\t\t\tDatacenter: pulumi.String(\"test-datacenter\"),\n\t\t\t\t\tCluster: pulumi.String(\"test-cluster\"),\n\t\t\t\t\tFolder: pulumi.String(\"test-folder\"),\n\t\t\t\t\tCaCertData: pulumi.String(\"test-ca-cert-data\"),\n\t\t\t\t\tStoragePolicyName: pulumi.String(\"test-storage-policy-name\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataplaneV2: \u0026gkeonprem.VMwareClusterDataplaneV2Args{\n\t\t\t\tDataplaneV2Enabled: pulumi.Bool(true),\n\t\t\t\tWindowsDataplaneV2Enabled: pulumi.Bool(true),\n\t\t\t\tAdvancedNetworking: pulumi.Bool(true),\n\t\t\t},\n\t\t\tVmTrackingEnabled: pulumi.Bool(true),\n\t\t\tEnableControlPlaneV2: pulumi.Bool(true),\n\t\t\tUpgradePolicy: \u0026gkeonprem.VMwareClusterUpgradePolicyArgs{\n\t\t\t\tControlPlaneOnly: pulumi.Bool(true),\n\t\t\t},\n\t\t\tAuthorization: \u0026gkeonprem.VMwareClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: gkeonprem.VMwareClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026gkeonprem.VMwareClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"testuser@gmail.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAntiAffinityGroups: \u0026gkeonprem.VMwareClusterAntiAffinityGroupsArgs{\n\t\t\t\tAagConfigDisabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tAutoRepairConfig: \u0026gkeonprem.VMwareClusterAutoRepairConfigArgs{\n\t\t\t\tEnabled: 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.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigHostConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigStaticIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeAutoResizeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerManualLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterVcenterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterDataplaneV2Args;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterUpgradePolicyArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAntiAffinityGroupsArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAutoRepairConfigArgs;\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 cluster_manuallb = new VMwareCluster(\"cluster-manuallb\", VMwareClusterArgs.builder()\n .name(\"cluster-manuallb\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .annotations()\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .hostConfig(VMwareClusterNetworkConfigHostConfigArgs.builder()\n .dnsServers(\"10.254.41.1\")\n .ntpServers(\"216.239.35.8\")\n .dnsSearchDomains(\"test-domain\")\n .build())\n .staticIpConfig(VMwareClusterNetworkConfigStaticIpConfigArgs.builder()\n .ipBlocks(VMwareClusterNetworkConfigStaticIpConfigIpBlockArgs.builder()\n .netmask(\"255.255.252.0\")\n .gateway(\"10.251.31.254\")\n .ips( \n VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()\n .ip(\"10.251.30.153\")\n .hostname(\"test-hostname1\")\n .build(),\n VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()\n .ip(\"10.251.31.206\")\n .hostname(\"test-hostname2\")\n .build(),\n VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()\n .ip(\"10.251.31.193\")\n .hostname(\"test-hostname3\")\n .build(),\n VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()\n .ip(\"10.251.30.230\")\n .hostname(\"test-hostname4\")\n .build())\n .build())\n .build())\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .autoResizeConfig(VMwareClusterControlPlaneNodeAutoResizeConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .manualLbConfig(VMwareClusterLoadBalancerManualLbConfigArgs.builder()\n .ingressHttpNodePort(30005)\n .ingressHttpsNodePort(30006)\n .controlPlaneNodePort(30007)\n .konnectivityServerNodePort(30008)\n .build())\n .build())\n .vcenters(VMwareClusterVcenterArgs.builder()\n .resourcePool(\"test-resource-pool\")\n .datastore(\"test-datastore\")\n .datacenter(\"test-datacenter\")\n .cluster(\"test-cluster\")\n .folder(\"test-folder\")\n .caCertData(\"test-ca-cert-data\")\n .storagePolicyName(\"test-storage-policy-name\")\n .build())\n .dataplaneV2(VMwareClusterDataplaneV2Args.builder()\n .dataplaneV2Enabled(true)\n .windowsDataplaneV2Enabled(true)\n .advancedNetworking(true)\n .build())\n .vmTrackingEnabled(true)\n .enableControlPlaneV2(true)\n .upgradePolicy(VMwareClusterUpgradePolicyArgs.builder()\n .controlPlaneOnly(true)\n .build())\n .authorization(VMwareClusterAuthorizationArgs.builder()\n .adminUsers(VMwareClusterAuthorizationAdminUserArgs.builder()\n .username(\"testuser@gmail.com\")\n .build())\n .build())\n .antiAffinityGroups(VMwareClusterAntiAffinityGroupsArgs.builder()\n .aagConfigDisabled(true)\n .build())\n .autoRepairConfig(VMwareClusterAutoRepairConfigArgs.builder()\n .enabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-manuallb:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: cluster-manuallb\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n annotations: {}\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n hostConfig:\n dnsServers:\n - 10.254.41.1\n ntpServers:\n - 216.239.35.8\n dnsSearchDomains:\n - test-domain\n staticIpConfig:\n ipBlocks:\n - netmask: 255.255.252.0\n gateway: 10.251.31.254\n ips:\n - ip: 10.251.30.153\n hostname: test-hostname1\n - ip: 10.251.31.206\n hostname: test-hostname2\n - ip: 10.251.31.193\n hostname: test-hostname3\n - ip: 10.251.30.230\n hostname: test-hostname4\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n autoResizeConfig:\n enabled: true\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n manualLbConfig:\n ingressHttpNodePort: 30005\n ingressHttpsNodePort: 30006\n controlPlaneNodePort: 30007\n konnectivityServerNodePort: 30008\n vcenters:\n - resourcePool: test-resource-pool\n datastore: test-datastore\n datacenter: test-datacenter\n cluster: test-cluster\n folder: test-folder\n caCertData: test-ca-cert-data\n storagePolicyName: test-storage-policy-name\n dataplaneV2:\n dataplaneV2Enabled: true\n windowsDataplaneV2Enabled: true\n advancedNetworking: true\n vmTrackingEnabled: true\n enableControlPlaneV2: true\n upgradePolicy:\n controlPlaneOnly: true\n authorization:\n adminUsers:\n - username: testuser@gmail.com\n antiAffinityGroups:\n aagConfigDisabled: true\n autoRepairConfig:\n enabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVmwareCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/vmwareClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, VmwareCluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareCluster:VMwareCluster default projects/{{project}}/locations/{{location}}/vmwareClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareCluster:VMwareCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareCluster:VMwareCluster default {{location}}/{{name}}\n```\n\n", + "description": "A Google VMware User Cluster.\n\n\n\n## Example Usage\n\n### Gkeonprem Vmware Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_basic = new gcp.gkeonprem.VMwareCluster(\"cluster-basic\", {\n name: \"cluster-basic\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description: \"test cluster\",\n onPremVersion: \"1.13.1-gke.35\",\n annotations: {},\n networkConfig: {\n serviceAddressCidrBlocks: [\"10.96.0.0/12\"],\n podAddressCidrBlocks: [\"192.168.0.0/16\"],\n dhcpIpConfig: {\n enabled: true,\n },\n },\n controlPlaneNode: {\n cpus: 4,\n memory: 8192,\n replicas: 1,\n },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n ingressVip: \"10.251.135.19\",\n },\n metalLbConfig: {\n addressPools: [\n {\n pool: \"ingress-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n avoidBuggyIps: true,\n },\n {\n pool: \"lb-test-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n avoidBuggyIps: true,\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_basic = gcp.gkeonprem.VMwareCluster(\"cluster-basic\",\n name=\"cluster-basic\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description=\"test cluster\",\n on_prem_version=\"1.13.1-gke.35\",\n annotations={},\n network_config={\n \"service_address_cidr_blocks\": [\"10.96.0.0/12\"],\n \"pod_address_cidr_blocks\": [\"192.168.0.0/16\"],\n \"dhcp_ip_config\": {\n \"enabled\": True,\n },\n },\n control_plane_node={\n \"cpus\": 4,\n \"memory\": 8192,\n \"replicas\": 1,\n },\n load_balancer={\n \"vip_config\": {\n \"control_plane_vip\": \"10.251.133.5\",\n \"ingress_vip\": \"10.251.135.19\",\n },\n \"metal_lb_config\": {\n \"address_pools\": [\n {\n \"pool\": \"ingress-ip\",\n \"manual_assign\": True,\n \"addresses\": [\"10.251.135.19\"],\n \"avoid_buggy_ips\": True,\n },\n {\n \"pool\": \"lb-test-ip\",\n \"manual_assign\": True,\n \"addresses\": [\"10.251.135.19\"],\n \"avoid_buggy_ips\": True,\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 cluster_basic = new Gcp.GkeOnPrem.VMwareCluster(\"cluster-basic\", new()\n {\n Name = \"cluster-basic\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n Description = \"test cluster\",\n OnPremVersion = \"1.13.1-gke.35\",\n Annotations = null,\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"10.96.0.0/12\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"192.168.0.0/16\",\n },\n DhcpIpConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs\n {\n Enabled = true,\n },\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n Replicas = 1,\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n IngressVip = \"10.251.135.19\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"ingress-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n AvoidBuggyIps = true,\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"lb-test-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n AvoidBuggyIps = true,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewVMwareCluster(ctx, \"cluster-basic\", \u0026gkeonprem.VMwareClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-basic\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tDescription: pulumi.String(\"test cluster\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.13.1-gke.35\"),\n\t\t\tAnnotations: nil,\n\t\t\tNetworkConfig: \u0026gkeonprem.VMwareClusterNetworkConfigArgs{\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.96.0.0/12\"),\n\t\t\t\t},\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tDhcpIpConfig: \u0026gkeonprem.VMwareClusterNetworkConfigDhcpIpConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlaneNode: \u0026gkeonprem.VMwareClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t\tReplicas: pulumi.Int(1),\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VMwareClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VMwareClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"ingress-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAvoidBuggyIps: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"lb-test-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAvoidBuggyIps: 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})\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.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerMetalLbConfigArgs;\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 cluster_basic = new VMwareCluster(\"cluster-basic\", VMwareClusterArgs.builder()\n .name(\"cluster-basic\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .annotations()\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .dhcpIpConfig(VMwareClusterNetworkConfigDhcpIpConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .metalLbConfig(VMwareClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools( \n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"ingress-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .avoidBuggyIps(true)\n .build(),\n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"lb-test-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .avoidBuggyIps(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-basic:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: cluster-basic\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n annotations: {}\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n dhcpIpConfig:\n enabled: true\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n metalLbConfig:\n addressPools:\n - pool: ingress-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n avoidBuggyIps: true\n - pool: lb-test-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n avoidBuggyIps: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Vmware Cluster F5lb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_f5lb = new gcp.gkeonprem.VMwareCluster(\"cluster-f5lb\", {\n name: \"cluster-f5lb\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description: \"test cluster\",\n onPremVersion: \"1.13.1-gke.35\",\n annotations: {},\n networkConfig: {\n serviceAddressCidrBlocks: [\"10.96.0.0/12\"],\n podAddressCidrBlocks: [\"192.168.0.0/16\"],\n dhcpIpConfig: {\n enabled: true,\n },\n controlPlaneV2Config: {\n controlPlaneIpBlock: {\n ips: [{\n hostname: \"test-hostname\",\n ip: \"10.0.0.1\",\n }],\n netmask: \"10.0.0.1/32\",\n gateway: \"test-gateway\",\n },\n },\n vcenterNetwork: \"test-vcenter-network\",\n },\n controlPlaneNode: {\n cpus: 4,\n memory: 8192,\n replicas: 1,\n autoResizeConfig: {\n enabled: true,\n },\n },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n ingressVip: \"10.251.135.19\",\n },\n f5Config: {\n address: \"10.0.0.1\",\n partition: \"test-partition\",\n snatPool: \"test-snap-pool\",\n },\n },\n dataplaneV2: {\n dataplaneV2Enabled: true,\n windowsDataplaneV2Enabled: true,\n advancedNetworking: true,\n },\n vmTrackingEnabled: true,\n enableControlPlaneV2: true,\n disableBundledIngress: true,\n authorization: {\n adminUsers: [{\n username: \"testuser@gmail.com\",\n }],\n },\n antiAffinityGroups: {\n aagConfigDisabled: true,\n },\n autoRepairConfig: {\n enabled: true,\n },\n storage: {\n vsphereCsiDisabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_f5lb = gcp.gkeonprem.VMwareCluster(\"cluster-f5lb\",\n name=\"cluster-f5lb\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description=\"test cluster\",\n on_prem_version=\"1.13.1-gke.35\",\n annotations={},\n network_config={\n \"service_address_cidr_blocks\": [\"10.96.0.0/12\"],\n \"pod_address_cidr_blocks\": [\"192.168.0.0/16\"],\n \"dhcp_ip_config\": {\n \"enabled\": True,\n },\n \"control_plane_v2_config\": {\n \"control_plane_ip_block\": {\n \"ips\": [{\n \"hostname\": \"test-hostname\",\n \"ip\": \"10.0.0.1\",\n }],\n \"netmask\": \"10.0.0.1/32\",\n \"gateway\": \"test-gateway\",\n },\n },\n \"vcenter_network\": \"test-vcenter-network\",\n },\n control_plane_node={\n \"cpus\": 4,\n \"memory\": 8192,\n \"replicas\": 1,\n \"auto_resize_config\": {\n \"enabled\": True,\n },\n },\n load_balancer={\n \"vip_config\": {\n \"control_plane_vip\": \"10.251.133.5\",\n \"ingress_vip\": \"10.251.135.19\",\n },\n \"f5_config\": {\n \"address\": \"10.0.0.1\",\n \"partition\": \"test-partition\",\n \"snat_pool\": \"test-snap-pool\",\n },\n },\n dataplane_v2={\n \"dataplane_v2_enabled\": True,\n \"windows_dataplane_v2_enabled\": True,\n \"advanced_networking\": True,\n },\n vm_tracking_enabled=True,\n enable_control_plane_v2=True,\n disable_bundled_ingress=True,\n authorization={\n \"admin_users\": [{\n \"username\": \"testuser@gmail.com\",\n }],\n },\n anti_affinity_groups={\n \"aag_config_disabled\": True,\n },\n auto_repair_config={\n \"enabled\": True,\n },\n storage={\n \"vsphere_csi_disabled\": 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 cluster_f5lb = new Gcp.GkeOnPrem.VMwareCluster(\"cluster-f5lb\", new()\n {\n Name = \"cluster-f5lb\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n Description = \"test cluster\",\n OnPremVersion = \"1.13.1-gke.35\",\n Annotations = null,\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"10.96.0.0/12\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"192.168.0.0/16\",\n },\n DhcpIpConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs\n {\n Enabled = true,\n },\n ControlPlaneV2Config = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigArgs\n {\n ControlPlaneIpBlock = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockArgs\n {\n Ips = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockIpArgs\n {\n Hostname = \"test-hostname\",\n Ip = \"10.0.0.1\",\n },\n },\n Netmask = \"10.0.0.1/32\",\n Gateway = \"test-gateway\",\n },\n },\n VcenterNetwork = \"test-vcenter-network\",\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n Replicas = 1,\n AutoResizeConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeAutoResizeConfigArgs\n {\n Enabled = true,\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n IngressVip = \"10.251.135.19\",\n },\n F5Config = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerF5ConfigArgs\n {\n Address = \"10.0.0.1\",\n Partition = \"test-partition\",\n SnatPool = \"test-snap-pool\",\n },\n },\n DataplaneV2 = new Gcp.GkeOnPrem.Inputs.VMwareClusterDataplaneV2Args\n {\n DataplaneV2Enabled = true,\n WindowsDataplaneV2Enabled = true,\n AdvancedNetworking = true,\n },\n VmTrackingEnabled = true,\n EnableControlPlaneV2 = true,\n DisableBundledIngress = true,\n Authorization = new Gcp.GkeOnPrem.Inputs.VMwareClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterAuthorizationAdminUserArgs\n {\n Username = \"testuser@gmail.com\",\n },\n },\n },\n AntiAffinityGroups = new Gcp.GkeOnPrem.Inputs.VMwareClusterAntiAffinityGroupsArgs\n {\n AagConfigDisabled = true,\n },\n AutoRepairConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterAutoRepairConfigArgs\n {\n Enabled = true,\n },\n Storage = new Gcp.GkeOnPrem.Inputs.VMwareClusterStorageArgs\n {\n VsphereCsiDisabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewVMwareCluster(ctx, \"cluster-f5lb\", \u0026gkeonprem.VMwareClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-f5lb\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tDescription: pulumi.String(\"test cluster\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.13.1-gke.35\"),\n\t\t\tAnnotations: nil,\n\t\t\tNetworkConfig: \u0026gkeonprem.VMwareClusterNetworkConfigArgs{\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.96.0.0/12\"),\n\t\t\t\t},\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tDhcpIpConfig: \u0026gkeonprem.VMwareClusterNetworkConfigDhcpIpConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tControlPlaneV2Config: \u0026gkeonprem.VMwareClusterNetworkConfigControlPlaneV2ConfigArgs{\n\t\t\t\t\tControlPlaneIpBlock: \u0026gkeonprem.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockArgs{\n\t\t\t\t\t\tIps: gkeonprem.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockIpArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockIpArgs{\n\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname\"),\n\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.0.0.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tNetmask: pulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\t\tGateway: pulumi.String(\"test-gateway\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVcenterNetwork: pulumi.String(\"test-vcenter-network\"),\n\t\t\t},\n\t\t\tControlPlaneNode: \u0026gkeonprem.VMwareClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t\tReplicas: pulumi.Int(1),\n\t\t\t\tAutoResizeConfig: \u0026gkeonprem.VMwareClusterControlPlaneNodeAutoResizeConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VMwareClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VMwareClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tF5Config: \u0026gkeonprem.VMwareClusterLoadBalancerF5ConfigArgs{\n\t\t\t\t\tAddress: pulumi.String(\"10.0.0.1\"),\n\t\t\t\t\tPartition: pulumi.String(\"test-partition\"),\n\t\t\t\t\tSnatPool: pulumi.String(\"test-snap-pool\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataplaneV2: \u0026gkeonprem.VMwareClusterDataplaneV2Args{\n\t\t\t\tDataplaneV2Enabled: pulumi.Bool(true),\n\t\t\t\tWindowsDataplaneV2Enabled: pulumi.Bool(true),\n\t\t\t\tAdvancedNetworking: pulumi.Bool(true),\n\t\t\t},\n\t\t\tVmTrackingEnabled: pulumi.Bool(true),\n\t\t\tEnableControlPlaneV2: pulumi.Bool(true),\n\t\t\tDisableBundledIngress: pulumi.Bool(true),\n\t\t\tAuthorization: \u0026gkeonprem.VMwareClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: gkeonprem.VMwareClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026gkeonprem.VMwareClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"testuser@gmail.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAntiAffinityGroups: \u0026gkeonprem.VMwareClusterAntiAffinityGroupsArgs{\n\t\t\t\tAagConfigDisabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tAutoRepairConfig: \u0026gkeonprem.VMwareClusterAutoRepairConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.VMwareClusterStorageArgs{\n\t\t\t\tVsphereCsiDisabled: 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.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeAutoResizeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerF5ConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterDataplaneV2Args;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAntiAffinityGroupsArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAutoRepairConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterStorageArgs;\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 cluster_f5lb = new VMwareCluster(\"cluster-f5lb\", VMwareClusterArgs.builder()\n .name(\"cluster-f5lb\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .annotations()\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .dhcpIpConfig(VMwareClusterNetworkConfigDhcpIpConfigArgs.builder()\n .enabled(true)\n .build())\n .controlPlaneV2Config(VMwareClusterNetworkConfigControlPlaneV2ConfigArgs.builder()\n .controlPlaneIpBlock(VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockArgs.builder()\n .ips(VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockIpArgs.builder()\n .hostname(\"test-hostname\")\n .ip(\"10.0.0.1\")\n .build())\n .netmask(\"10.0.0.1/32\")\n .gateway(\"test-gateway\")\n .build())\n .build())\n .vcenterNetwork(\"test-vcenter-network\")\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .autoResizeConfig(VMwareClusterControlPlaneNodeAutoResizeConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .f5Config(VMwareClusterLoadBalancerF5ConfigArgs.builder()\n .address(\"10.0.0.1\")\n .partition(\"test-partition\")\n .snatPool(\"test-snap-pool\")\n .build())\n .build())\n .dataplaneV2(VMwareClusterDataplaneV2Args.builder()\n .dataplaneV2Enabled(true)\n .windowsDataplaneV2Enabled(true)\n .advancedNetworking(true)\n .build())\n .vmTrackingEnabled(true)\n .enableControlPlaneV2(true)\n .disableBundledIngress(true)\n .authorization(VMwareClusterAuthorizationArgs.builder()\n .adminUsers(VMwareClusterAuthorizationAdminUserArgs.builder()\n .username(\"testuser@gmail.com\")\n .build())\n .build())\n .antiAffinityGroups(VMwareClusterAntiAffinityGroupsArgs.builder()\n .aagConfigDisabled(true)\n .build())\n .autoRepairConfig(VMwareClusterAutoRepairConfigArgs.builder()\n .enabled(true)\n .build())\n .storage(VMwareClusterStorageArgs.builder()\n .vsphereCsiDisabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-f5lb:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: cluster-f5lb\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n annotations: {}\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n dhcpIpConfig:\n enabled: true\n controlPlaneV2Config:\n controlPlaneIpBlock:\n ips:\n - hostname: test-hostname\n ip: 10.0.0.1\n netmask: 10.0.0.1/32\n gateway: test-gateway\n vcenterNetwork: test-vcenter-network\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n autoResizeConfig:\n enabled: true\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n f5Config:\n address: 10.0.0.1\n partition: test-partition\n snatPool: test-snap-pool\n dataplaneV2:\n dataplaneV2Enabled: true\n windowsDataplaneV2Enabled: true\n advancedNetworking: true\n vmTrackingEnabled: true\n enableControlPlaneV2: true\n disableBundledIngress: true\n authorization:\n adminUsers:\n - username: testuser@gmail.com\n antiAffinityGroups:\n aagConfigDisabled: true\n autoRepairConfig:\n enabled: true\n storage:\n vsphereCsiDisabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Vmware Cluster Manuallb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_manuallb = new gcp.gkeonprem.VMwareCluster(\"cluster-manuallb\", {\n name: \"cluster-manuallb\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description: \"test cluster\",\n onPremVersion: \"1.13.1-gke.35\",\n annotations: {},\n networkConfig: {\n serviceAddressCidrBlocks: [\"10.96.0.0/12\"],\n podAddressCidrBlocks: [\"192.168.0.0/16\"],\n hostConfig: {\n dnsServers: [\"10.254.41.1\"],\n ntpServers: [\"216.239.35.8\"],\n dnsSearchDomains: [\"test-domain\"],\n },\n staticIpConfig: {\n ipBlocks: [{\n netmask: \"255.255.252.0\",\n gateway: \"10.251.31.254\",\n ips: [\n {\n ip: \"10.251.30.153\",\n hostname: \"test-hostname1\",\n },\n {\n ip: \"10.251.31.206\",\n hostname: \"test-hostname2\",\n },\n {\n ip: \"10.251.31.193\",\n hostname: \"test-hostname3\",\n },\n {\n ip: \"10.251.30.230\",\n hostname: \"test-hostname4\",\n },\n ],\n }],\n },\n },\n controlPlaneNode: {\n cpus: 4,\n memory: 8192,\n replicas: 1,\n autoResizeConfig: {\n enabled: true,\n },\n },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n ingressVip: \"10.251.135.19\",\n },\n manualLbConfig: {\n ingressHttpNodePort: 30005,\n ingressHttpsNodePort: 30006,\n controlPlaneNodePort: 30007,\n konnectivityServerNodePort: 30008,\n },\n },\n vcenters: [{\n resourcePool: \"test-resource-pool\",\n datastore: \"test-datastore\",\n datacenter: \"test-datacenter\",\n cluster: \"test-cluster\",\n folder: \"test-folder\",\n caCertData: \"test-ca-cert-data\",\n storagePolicyName: \"test-storage-policy-name\",\n }],\n dataplaneV2: {\n dataplaneV2Enabled: true,\n windowsDataplaneV2Enabled: true,\n advancedNetworking: true,\n },\n vmTrackingEnabled: true,\n enableControlPlaneV2: true,\n upgradePolicy: {\n controlPlaneOnly: true,\n },\n authorization: {\n adminUsers: [{\n username: \"testuser@gmail.com\",\n }],\n },\n antiAffinityGroups: {\n aagConfigDisabled: true,\n },\n autoRepairConfig: {\n enabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_manuallb = gcp.gkeonprem.VMwareCluster(\"cluster-manuallb\",\n name=\"cluster-manuallb\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description=\"test cluster\",\n on_prem_version=\"1.13.1-gke.35\",\n annotations={},\n network_config={\n \"service_address_cidr_blocks\": [\"10.96.0.0/12\"],\n \"pod_address_cidr_blocks\": [\"192.168.0.0/16\"],\n \"host_config\": {\n \"dns_servers\": [\"10.254.41.1\"],\n \"ntp_servers\": [\"216.239.35.8\"],\n \"dns_search_domains\": [\"test-domain\"],\n },\n \"static_ip_config\": {\n \"ip_blocks\": [{\n \"netmask\": \"255.255.252.0\",\n \"gateway\": \"10.251.31.254\",\n \"ips\": [\n {\n \"ip\": \"10.251.30.153\",\n \"hostname\": \"test-hostname1\",\n },\n {\n \"ip\": \"10.251.31.206\",\n \"hostname\": \"test-hostname2\",\n },\n {\n \"ip\": \"10.251.31.193\",\n \"hostname\": \"test-hostname3\",\n },\n {\n \"ip\": \"10.251.30.230\",\n \"hostname\": \"test-hostname4\",\n },\n ],\n }],\n },\n },\n control_plane_node={\n \"cpus\": 4,\n \"memory\": 8192,\n \"replicas\": 1,\n \"auto_resize_config\": {\n \"enabled\": True,\n },\n },\n load_balancer={\n \"vip_config\": {\n \"control_plane_vip\": \"10.251.133.5\",\n \"ingress_vip\": \"10.251.135.19\",\n },\n \"manual_lb_config\": {\n \"ingress_http_node_port\": 30005,\n \"ingress_https_node_port\": 30006,\n \"control_plane_node_port\": 30007,\n \"konnectivity_server_node_port\": 30008,\n },\n },\n vcenters=[{\n \"resource_pool\": \"test-resource-pool\",\n \"datastore\": \"test-datastore\",\n \"datacenter\": \"test-datacenter\",\n \"cluster\": \"test-cluster\",\n \"folder\": \"test-folder\",\n \"ca_cert_data\": \"test-ca-cert-data\",\n \"storage_policy_name\": \"test-storage-policy-name\",\n }],\n dataplane_v2={\n \"dataplane_v2_enabled\": True,\n \"windows_dataplane_v2_enabled\": True,\n \"advanced_networking\": True,\n },\n vm_tracking_enabled=True,\n enable_control_plane_v2=True,\n upgrade_policy={\n \"control_plane_only\": True,\n },\n authorization={\n \"admin_users\": [{\n \"username\": \"testuser@gmail.com\",\n }],\n },\n anti_affinity_groups={\n \"aag_config_disabled\": True,\n },\n auto_repair_config={\n \"enabled\": 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 cluster_manuallb = new Gcp.GkeOnPrem.VMwareCluster(\"cluster-manuallb\", new()\n {\n Name = \"cluster-manuallb\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n Description = \"test cluster\",\n OnPremVersion = \"1.13.1-gke.35\",\n Annotations = null,\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"10.96.0.0/12\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"192.168.0.0/16\",\n },\n HostConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigHostConfigArgs\n {\n DnsServers = new[]\n {\n \"10.254.41.1\",\n },\n NtpServers = new[]\n {\n \"216.239.35.8\",\n },\n DnsSearchDomains = new[]\n {\n \"test-domain\",\n },\n },\n StaticIpConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigArgs\n {\n IpBlocks = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockArgs\n {\n Netmask = \"255.255.252.0\",\n Gateway = \"10.251.31.254\",\n Ips = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs\n {\n Ip = \"10.251.30.153\",\n Hostname = \"test-hostname1\",\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs\n {\n Ip = \"10.251.31.206\",\n Hostname = \"test-hostname2\",\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs\n {\n Ip = \"10.251.31.193\",\n Hostname = \"test-hostname3\",\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs\n {\n Ip = \"10.251.30.230\",\n Hostname = \"test-hostname4\",\n },\n },\n },\n },\n },\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n Replicas = 1,\n AutoResizeConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeAutoResizeConfigArgs\n {\n Enabled = true,\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n IngressVip = \"10.251.135.19\",\n },\n ManualLbConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerManualLbConfigArgs\n {\n IngressHttpNodePort = 30005,\n IngressHttpsNodePort = 30006,\n ControlPlaneNodePort = 30007,\n KonnectivityServerNodePort = 30008,\n },\n },\n Vcenters = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterVcenterArgs\n {\n ResourcePool = \"test-resource-pool\",\n Datastore = \"test-datastore\",\n Datacenter = \"test-datacenter\",\n Cluster = \"test-cluster\",\n Folder = \"test-folder\",\n CaCertData = \"test-ca-cert-data\",\n StoragePolicyName = \"test-storage-policy-name\",\n },\n },\n DataplaneV2 = new Gcp.GkeOnPrem.Inputs.VMwareClusterDataplaneV2Args\n {\n DataplaneV2Enabled = true,\n WindowsDataplaneV2Enabled = true,\n AdvancedNetworking = true,\n },\n VmTrackingEnabled = true,\n EnableControlPlaneV2 = true,\n UpgradePolicy = new Gcp.GkeOnPrem.Inputs.VMwareClusterUpgradePolicyArgs\n {\n ControlPlaneOnly = true,\n },\n Authorization = new Gcp.GkeOnPrem.Inputs.VMwareClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterAuthorizationAdminUserArgs\n {\n Username = \"testuser@gmail.com\",\n },\n },\n },\n AntiAffinityGroups = new Gcp.GkeOnPrem.Inputs.VMwareClusterAntiAffinityGroupsArgs\n {\n AagConfigDisabled = true,\n },\n AutoRepairConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterAutoRepairConfigArgs\n {\n Enabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewVMwareCluster(ctx, \"cluster-manuallb\", \u0026gkeonprem.VMwareClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-manuallb\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tDescription: pulumi.String(\"test cluster\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.13.1-gke.35\"),\n\t\t\tAnnotations: nil,\n\t\t\tNetworkConfig: \u0026gkeonprem.VMwareClusterNetworkConfigArgs{\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.96.0.0/12\"),\n\t\t\t\t},\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tHostConfig: \u0026gkeonprem.VMwareClusterNetworkConfigHostConfigArgs{\n\t\t\t\t\tDnsServers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.254.41.1\"),\n\t\t\t\t\t},\n\t\t\t\t\tNtpServers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"216.239.35.8\"),\n\t\t\t\t\t},\n\t\t\t\t\tDnsSearchDomains: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"test-domain\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStaticIpConfig: \u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigArgs{\n\t\t\t\t\tIpBlocks: gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockArray{\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockArgs{\n\t\t\t\t\t\t\tNetmask: pulumi.String(\"255.255.252.0\"),\n\t\t\t\t\t\t\tGateway: pulumi.String(\"10.251.31.254\"),\n\t\t\t\t\t\t\tIps: gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArray{\n\t\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs{\n\t\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.251.30.153\"),\n\t\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname1\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs{\n\t\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.251.31.206\"),\n\t\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs{\n\t\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.251.31.193\"),\n\t\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs{\n\t\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.251.30.230\"),\n\t\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname4\"),\n\t\t\t\t\t\t\t\t},\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\tControlPlaneNode: \u0026gkeonprem.VMwareClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t\tReplicas: pulumi.Int(1),\n\t\t\t\tAutoResizeConfig: \u0026gkeonprem.VMwareClusterControlPlaneNodeAutoResizeConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VMwareClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VMwareClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tManualLbConfig: \u0026gkeonprem.VMwareClusterLoadBalancerManualLbConfigArgs{\n\t\t\t\t\tIngressHttpNodePort: pulumi.Int(30005),\n\t\t\t\t\tIngressHttpsNodePort: pulumi.Int(30006),\n\t\t\t\t\tControlPlaneNodePort: pulumi.Int(30007),\n\t\t\t\t\tKonnectivityServerNodePort: pulumi.Int(30008),\n\t\t\t\t},\n\t\t\t},\n\t\t\tVcenters: gkeonprem.VMwareClusterVcenterArray{\n\t\t\t\t\u0026gkeonprem.VMwareClusterVcenterArgs{\n\t\t\t\t\tResourcePool: pulumi.String(\"test-resource-pool\"),\n\t\t\t\t\tDatastore: pulumi.String(\"test-datastore\"),\n\t\t\t\t\tDatacenter: pulumi.String(\"test-datacenter\"),\n\t\t\t\t\tCluster: pulumi.String(\"test-cluster\"),\n\t\t\t\t\tFolder: pulumi.String(\"test-folder\"),\n\t\t\t\t\tCaCertData: pulumi.String(\"test-ca-cert-data\"),\n\t\t\t\t\tStoragePolicyName: pulumi.String(\"test-storage-policy-name\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataplaneV2: \u0026gkeonprem.VMwareClusterDataplaneV2Args{\n\t\t\t\tDataplaneV2Enabled: pulumi.Bool(true),\n\t\t\t\tWindowsDataplaneV2Enabled: pulumi.Bool(true),\n\t\t\t\tAdvancedNetworking: pulumi.Bool(true),\n\t\t\t},\n\t\t\tVmTrackingEnabled: pulumi.Bool(true),\n\t\t\tEnableControlPlaneV2: pulumi.Bool(true),\n\t\t\tUpgradePolicy: \u0026gkeonprem.VMwareClusterUpgradePolicyArgs{\n\t\t\t\tControlPlaneOnly: pulumi.Bool(true),\n\t\t\t},\n\t\t\tAuthorization: \u0026gkeonprem.VMwareClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: gkeonprem.VMwareClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026gkeonprem.VMwareClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"testuser@gmail.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAntiAffinityGroups: \u0026gkeonprem.VMwareClusterAntiAffinityGroupsArgs{\n\t\t\t\tAagConfigDisabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tAutoRepairConfig: \u0026gkeonprem.VMwareClusterAutoRepairConfigArgs{\n\t\t\t\tEnabled: 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.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigHostConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigStaticIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeAutoResizeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerManualLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterVcenterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterDataplaneV2Args;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterUpgradePolicyArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAntiAffinityGroupsArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAutoRepairConfigArgs;\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 cluster_manuallb = new VMwareCluster(\"cluster-manuallb\", VMwareClusterArgs.builder()\n .name(\"cluster-manuallb\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .annotations()\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .hostConfig(VMwareClusterNetworkConfigHostConfigArgs.builder()\n .dnsServers(\"10.254.41.1\")\n .ntpServers(\"216.239.35.8\")\n .dnsSearchDomains(\"test-domain\")\n .build())\n .staticIpConfig(VMwareClusterNetworkConfigStaticIpConfigArgs.builder()\n .ipBlocks(VMwareClusterNetworkConfigStaticIpConfigIpBlockArgs.builder()\n .netmask(\"255.255.252.0\")\n .gateway(\"10.251.31.254\")\n .ips( \n VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()\n .ip(\"10.251.30.153\")\n .hostname(\"test-hostname1\")\n .build(),\n VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()\n .ip(\"10.251.31.206\")\n .hostname(\"test-hostname2\")\n .build(),\n VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()\n .ip(\"10.251.31.193\")\n .hostname(\"test-hostname3\")\n .build(),\n VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()\n .ip(\"10.251.30.230\")\n .hostname(\"test-hostname4\")\n .build())\n .build())\n .build())\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .autoResizeConfig(VMwareClusterControlPlaneNodeAutoResizeConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .manualLbConfig(VMwareClusterLoadBalancerManualLbConfigArgs.builder()\n .ingressHttpNodePort(30005)\n .ingressHttpsNodePort(30006)\n .controlPlaneNodePort(30007)\n .konnectivityServerNodePort(30008)\n .build())\n .build())\n .vcenters(VMwareClusterVcenterArgs.builder()\n .resourcePool(\"test-resource-pool\")\n .datastore(\"test-datastore\")\n .datacenter(\"test-datacenter\")\n .cluster(\"test-cluster\")\n .folder(\"test-folder\")\n .caCertData(\"test-ca-cert-data\")\n .storagePolicyName(\"test-storage-policy-name\")\n .build())\n .dataplaneV2(VMwareClusterDataplaneV2Args.builder()\n .dataplaneV2Enabled(true)\n .windowsDataplaneV2Enabled(true)\n .advancedNetworking(true)\n .build())\n .vmTrackingEnabled(true)\n .enableControlPlaneV2(true)\n .upgradePolicy(VMwareClusterUpgradePolicyArgs.builder()\n .controlPlaneOnly(true)\n .build())\n .authorization(VMwareClusterAuthorizationArgs.builder()\n .adminUsers(VMwareClusterAuthorizationAdminUserArgs.builder()\n .username(\"testuser@gmail.com\")\n .build())\n .build())\n .antiAffinityGroups(VMwareClusterAntiAffinityGroupsArgs.builder()\n .aagConfigDisabled(true)\n .build())\n .autoRepairConfig(VMwareClusterAutoRepairConfigArgs.builder()\n .enabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-manuallb:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: cluster-manuallb\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n annotations: {}\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n hostConfig:\n dnsServers:\n - 10.254.41.1\n ntpServers:\n - 216.239.35.8\n dnsSearchDomains:\n - test-domain\n staticIpConfig:\n ipBlocks:\n - netmask: 255.255.252.0\n gateway: 10.251.31.254\n ips:\n - ip: 10.251.30.153\n hostname: test-hostname1\n - ip: 10.251.31.206\n hostname: test-hostname2\n - ip: 10.251.31.193\n hostname: test-hostname3\n - ip: 10.251.30.230\n hostname: test-hostname4\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n autoResizeConfig:\n enabled: true\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n manualLbConfig:\n ingressHttpNodePort: 30005\n ingressHttpsNodePort: 30006\n controlPlaneNodePort: 30007\n konnectivityServerNodePort: 30008\n vcenters:\n - resourcePool: test-resource-pool\n datastore: test-datastore\n datacenter: test-datacenter\n cluster: test-cluster\n folder: test-folder\n caCertData: test-ca-cert-data\n storagePolicyName: test-storage-policy-name\n dataplaneV2:\n dataplaneV2Enabled: true\n windowsDataplaneV2Enabled: true\n advancedNetworking: true\n vmTrackingEnabled: true\n enableControlPlaneV2: true\n upgradePolicy:\n controlPlaneOnly: true\n authorization:\n adminUsers:\n - username: testuser@gmail.com\n antiAffinityGroups:\n aagConfigDisabled: true\n autoRepairConfig:\n enabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVmwareCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/vmwareClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, VmwareCluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareCluster:VMwareCluster default projects/{{project}}/locations/{{location}}/vmwareClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareCluster:VMwareCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareCluster:VMwareCluster default {{location}}/{{name}}\n```\n\n", "properties": { "adminClusterMembership": { "type": "string", @@ -199137,7 +199137,7 @@ } }, "gcp:gkeonprem/vMwareNodePool:VMwareNodePool": { - "description": "A Google Vmware Node Pool.\n\n\n\n## Example Usage\n\n### Gkeonprem Vmware Node Pool Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default_basic = new gcp.gkeonprem.VMwareCluster(\"default-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description: \"test cluster\",\n onPremVersion: \"1.13.1-gke.35\",\n networkConfig: {\n serviceAddressCidrBlocks: [\"10.96.0.0/12\"],\n podAddressCidrBlocks: [\"192.168.0.0/16\"],\n dhcpIpConfig: {\n enabled: true,\n },\n },\n controlPlaneNode: {\n cpus: 4,\n memory: 8192,\n replicas: 1,\n },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n ingressVip: \"10.251.135.19\",\n },\n metalLbConfig: {\n addressPools: [\n {\n pool: \"ingress-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n },\n {\n pool: \"lb-test-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n },\n ],\n },\n },\n});\nconst nodepool_basic = new gcp.gkeonprem.VMwareNodePool(\"nodepool-basic\", {\n name: \"my-nodepool\",\n location: \"us-west1\",\n vmwareCluster: default_basic.name,\n config: {\n replicas: 3,\n imageType: \"ubuntu_containerd\",\n enableLoadBalancer: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_basic = gcp.gkeonprem.VMwareCluster(\"default-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description=\"test cluster\",\n on_prem_version=\"1.13.1-gke.35\",\n network_config={\n \"serviceAddressCidrBlocks\": [\"10.96.0.0/12\"],\n \"podAddressCidrBlocks\": [\"192.168.0.0/16\"],\n \"dhcpIpConfig\": {\n \"enabled\": True,\n },\n },\n control_plane_node={\n \"cpus\": 4,\n \"memory\": 8192,\n \"replicas\": 1,\n },\n load_balancer={\n \"vipConfig\": {\n \"controlPlaneVip\": \"10.251.133.5\",\n \"ingressVip\": \"10.251.135.19\",\n },\n \"metalLbConfig\": {\n \"addressPools\": [\n {\n \"pool\": \"ingress-ip\",\n \"manualAssign\": True,\n \"addresses\": [\"10.251.135.19\"],\n },\n {\n \"pool\": \"lb-test-ip\",\n \"manualAssign\": True,\n \"addresses\": [\"10.251.135.19\"],\n },\n ],\n },\n })\nnodepool_basic = gcp.gkeonprem.VMwareNodePool(\"nodepool-basic\",\n name=\"my-nodepool\",\n location=\"us-west1\",\n vmware_cluster=default_basic.name,\n config={\n \"replicas\": 3,\n \"imageType\": \"ubuntu_containerd\",\n \"enableLoadBalancer\": 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 default_basic = new Gcp.GkeOnPrem.VMwareCluster(\"default-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n Description = \"test cluster\",\n OnPremVersion = \"1.13.1-gke.35\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"10.96.0.0/12\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"192.168.0.0/16\",\n },\n DhcpIpConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs\n {\n Enabled = true,\n },\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n Replicas = 1,\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n IngressVip = \"10.251.135.19\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"ingress-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"lb-test-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n },\n },\n },\n },\n });\n\n var nodepool_basic = new Gcp.GkeOnPrem.VMwareNodePool(\"nodepool-basic\", new()\n {\n Name = \"my-nodepool\",\n Location = \"us-west1\",\n VmwareCluster = default_basic.Name,\n Config = new Gcp.GkeOnPrem.Inputs.VMwareNodePoolConfigArgs\n {\n Replicas = 3,\n ImageType = \"ubuntu_containerd\",\n EnableLoadBalancer = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewVMwareCluster(ctx, \"default-basic\", \u0026gkeonprem.VMwareClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tDescription: pulumi.String(\"test cluster\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.13.1-gke.35\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.VMwareClusterNetworkConfigArgs{\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.96.0.0/12\"),\n\t\t\t\t},\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tDhcpIpConfig: \u0026gkeonprem.VMwareClusterNetworkConfigDhcpIpConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlaneNode: \u0026gkeonprem.VMwareClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t\tReplicas: pulumi.Int(1),\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VMwareClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VMwareClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"ingress-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"lb-test-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\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 = gkeonprem.NewVMwareNodePool(ctx, \"nodepool-basic\", \u0026gkeonprem.VMwareNodePoolArgs{\n\t\t\tName: pulumi.String(\"my-nodepool\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tVmwareCluster: default_basic.Name,\n\t\t\tConfig: \u0026gkeonprem.VMwareNodePoolConfigArgs{\n\t\t\t\tReplicas: pulumi.Int(3),\n\t\t\t\tImageType: pulumi.String(\"ubuntu_containerd\"),\n\t\t\t\tEnableLoadBalancer: 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.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.VMwareNodePool;\nimport com.pulumi.gcp.gkeonprem.VMwareNodePoolArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareNodePoolConfigArgs;\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_basic = new VMwareCluster(\"default-basic\", VMwareClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .dhcpIpConfig(VMwareClusterNetworkConfigDhcpIpConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .metalLbConfig(VMwareClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools( \n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"ingress-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .build(),\n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"lb-test-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .build())\n .build())\n .build())\n .build());\n\n var nodepool_basic = new VMwareNodePool(\"nodepool-basic\", VMwareNodePoolArgs.builder()\n .name(\"my-nodepool\")\n .location(\"us-west1\")\n .vmwareCluster(default_basic.name())\n .config(VMwareNodePoolConfigArgs.builder()\n .replicas(3)\n .imageType(\"ubuntu_containerd\")\n .enableLoadBalancer(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-basic:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n dhcpIpConfig:\n enabled: true\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n metalLbConfig:\n addressPools:\n - pool: ingress-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n - pool: lb-test-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n nodepool-basic:\n type: gcp:gkeonprem:VMwareNodePool\n properties:\n name: my-nodepool\n location: us-west1\n vmwareCluster: ${[\"default-basic\"].name}\n config:\n replicas: 3\n imageType: ubuntu_containerd\n enableLoadBalancer: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Vmware Node Pool Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.VMwareNodePool;\nimport com.pulumi.gcp.gkeonprem.VMwareNodePoolArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareNodePoolNodePoolAutoscalingArgs;\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_full = new VMwareCluster(\"default-full\", VMwareClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .dhcpIpConfig(VMwareClusterNetworkConfigDhcpIpConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .metalLbConfig(VMwareClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools( \n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"ingress-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .build(),\n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"lb-test-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .build())\n .build())\n .build())\n .build());\n\n var nodepool_full = new VMwareNodePool(\"nodepool-full\", VMwareNodePoolArgs.builder()\n .name(\"my-nodepool\")\n .location(\"us-west1\")\n .vmwareCluster(default_full.name())\n .annotations()\n .config(VMwareNodePoolConfigArgs.builder()\n .cpus(4)\n .memoryMb(8196)\n .replicas(3)\n .imageType(\"ubuntu_containerd\")\n .image(\"image\")\n .bootDiskSizeGb(10)\n .taints( \n VMwareNodePoolConfigTaintArgs.builder()\n .key(\"key\")\n .value(\"value\")\n .build(),\n VMwareNodePoolConfigTaintArgs.builder()\n .key(\"key\")\n .value(\"value\")\n .effect(\"NO_SCHEDULE\")\n .build())\n .labels()\n .vsphereConfig(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))\n .enableLoadBalancer(true)\n .build())\n .nodePoolAutoscaling(VMwareNodePoolNodePoolAutoscalingArgs.builder()\n .minReplicas(1)\n .maxReplicas(5)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-full:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n dhcpIpConfig:\n enabled: true\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n metalLbConfig:\n addressPools:\n - pool: ingress-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n - pool: lb-test-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n nodepool-full:\n type: gcp:gkeonprem:VMwareNodePool\n properties:\n name: my-nodepool\n location: us-west1\n vmwareCluster: ${[\"default-full\"].name}\n annotations: {}\n config:\n cpus: 4\n memoryMb: 8196\n replicas: 3\n imageType: ubuntu_containerd\n image: image\n bootDiskSizeGb: 10\n taints:\n - key: key\n value: value\n - key: key\n value: value\n effect: NO_SCHEDULE\n labels: {}\n vsphereConfig:\n datastore: test-datastore\n tags:\n - category: test-category-1\n tag: tag-1\n - category: test-category-2\n tag: tag-2\n hostGroups:\n - host1\n - host2\n enableLoadBalancer: true\n nodePoolAutoscaling:\n minReplicas: 1\n maxReplicas: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVmwareNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/vmwareClusters/{{vmware_cluster}}/vmwareNodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{vmware_cluster}}/{{name}}`\n\n* `{{location}}/{{vmware_cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, VmwareNodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareNodePool:VMwareNodePool default projects/{{project}}/locations/{{location}}/vmwareClusters/{{vmware_cluster}}/vmwareNodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareNodePool:VMwareNodePool default {{project}}/{{location}}/{{vmware_cluster}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareNodePool:VMwareNodePool default {{location}}/{{vmware_cluster}}/{{name}}\n```\n\n", + "description": "A Google Vmware Node Pool.\n\n\n\n## Example Usage\n\n### Gkeonprem Vmware Node Pool Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default_basic = new gcp.gkeonprem.VMwareCluster(\"default-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description: \"test cluster\",\n onPremVersion: \"1.13.1-gke.35\",\n networkConfig: {\n serviceAddressCidrBlocks: [\"10.96.0.0/12\"],\n podAddressCidrBlocks: [\"192.168.0.0/16\"],\n dhcpIpConfig: {\n enabled: true,\n },\n },\n controlPlaneNode: {\n cpus: 4,\n memory: 8192,\n replicas: 1,\n },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n ingressVip: \"10.251.135.19\",\n },\n metalLbConfig: {\n addressPools: [\n {\n pool: \"ingress-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n },\n {\n pool: \"lb-test-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n },\n ],\n },\n },\n});\nconst nodepool_basic = new gcp.gkeonprem.VMwareNodePool(\"nodepool-basic\", {\n name: \"my-nodepool\",\n location: \"us-west1\",\n vmwareCluster: default_basic.name,\n config: {\n replicas: 3,\n imageType: \"ubuntu_containerd\",\n enableLoadBalancer: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_basic = gcp.gkeonprem.VMwareCluster(\"default-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description=\"test cluster\",\n on_prem_version=\"1.13.1-gke.35\",\n network_config={\n \"service_address_cidr_blocks\": [\"10.96.0.0/12\"],\n \"pod_address_cidr_blocks\": [\"192.168.0.0/16\"],\n \"dhcp_ip_config\": {\n \"enabled\": True,\n },\n },\n control_plane_node={\n \"cpus\": 4,\n \"memory\": 8192,\n \"replicas\": 1,\n },\n load_balancer={\n \"vip_config\": {\n \"control_plane_vip\": \"10.251.133.5\",\n \"ingress_vip\": \"10.251.135.19\",\n },\n \"metal_lb_config\": {\n \"address_pools\": [\n {\n \"pool\": \"ingress-ip\",\n \"manual_assign\": True,\n \"addresses\": [\"10.251.135.19\"],\n },\n {\n \"pool\": \"lb-test-ip\",\n \"manual_assign\": True,\n \"addresses\": [\"10.251.135.19\"],\n },\n ],\n },\n })\nnodepool_basic = gcp.gkeonprem.VMwareNodePool(\"nodepool-basic\",\n name=\"my-nodepool\",\n location=\"us-west1\",\n vmware_cluster=default_basic.name,\n config={\n \"replicas\": 3,\n \"image_type\": \"ubuntu_containerd\",\n \"enable_load_balancer\": 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 default_basic = new Gcp.GkeOnPrem.VMwareCluster(\"default-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n Description = \"test cluster\",\n OnPremVersion = \"1.13.1-gke.35\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"10.96.0.0/12\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"192.168.0.0/16\",\n },\n DhcpIpConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs\n {\n Enabled = true,\n },\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n Replicas = 1,\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n IngressVip = \"10.251.135.19\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"ingress-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"lb-test-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n },\n },\n },\n },\n });\n\n var nodepool_basic = new Gcp.GkeOnPrem.VMwareNodePool(\"nodepool-basic\", new()\n {\n Name = \"my-nodepool\",\n Location = \"us-west1\",\n VmwareCluster = default_basic.Name,\n Config = new Gcp.GkeOnPrem.Inputs.VMwareNodePoolConfigArgs\n {\n Replicas = 3,\n ImageType = \"ubuntu_containerd\",\n EnableLoadBalancer = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkeonprem\"\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 := gkeonprem.NewVMwareCluster(ctx, \"default-basic\", \u0026gkeonprem.VMwareClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tDescription: pulumi.String(\"test cluster\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.13.1-gke.35\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.VMwareClusterNetworkConfigArgs{\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.96.0.0/12\"),\n\t\t\t\t},\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tDhcpIpConfig: \u0026gkeonprem.VMwareClusterNetworkConfigDhcpIpConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlaneNode: \u0026gkeonprem.VMwareClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t\tReplicas: pulumi.Int(1),\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VMwareClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VMwareClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"ingress-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"lb-test-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\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 = gkeonprem.NewVMwareNodePool(ctx, \"nodepool-basic\", \u0026gkeonprem.VMwareNodePoolArgs{\n\t\t\tName: pulumi.String(\"my-nodepool\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tVmwareCluster: default_basic.Name,\n\t\t\tConfig: \u0026gkeonprem.VMwareNodePoolConfigArgs{\n\t\t\t\tReplicas: pulumi.Int(3),\n\t\t\t\tImageType: pulumi.String(\"ubuntu_containerd\"),\n\t\t\t\tEnableLoadBalancer: 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.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.VMwareNodePool;\nimport com.pulumi.gcp.gkeonprem.VMwareNodePoolArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareNodePoolConfigArgs;\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_basic = new VMwareCluster(\"default-basic\", VMwareClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .dhcpIpConfig(VMwareClusterNetworkConfigDhcpIpConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .metalLbConfig(VMwareClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools( \n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"ingress-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .build(),\n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"lb-test-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .build())\n .build())\n .build())\n .build());\n\n var nodepool_basic = new VMwareNodePool(\"nodepool-basic\", VMwareNodePoolArgs.builder()\n .name(\"my-nodepool\")\n .location(\"us-west1\")\n .vmwareCluster(default_basic.name())\n .config(VMwareNodePoolConfigArgs.builder()\n .replicas(3)\n .imageType(\"ubuntu_containerd\")\n .enableLoadBalancer(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-basic:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n dhcpIpConfig:\n enabled: true\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n metalLbConfig:\n addressPools:\n - pool: ingress-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n - pool: lb-test-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n nodepool-basic:\n type: gcp:gkeonprem:VMwareNodePool\n properties:\n name: my-nodepool\n location: us-west1\n vmwareCluster: ${[\"default-basic\"].name}\n config:\n replicas: 3\n imageType: ubuntu_containerd\n enableLoadBalancer: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Vmware Node Pool Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.VMwareNodePool;\nimport com.pulumi.gcp.gkeonprem.VMwareNodePoolArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareNodePoolNodePoolAutoscalingArgs;\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_full = new VMwareCluster(\"default-full\", VMwareClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .dhcpIpConfig(VMwareClusterNetworkConfigDhcpIpConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .metalLbConfig(VMwareClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools( \n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"ingress-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .build(),\n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"lb-test-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .build())\n .build())\n .build())\n .build());\n\n var nodepool_full = new VMwareNodePool(\"nodepool-full\", VMwareNodePoolArgs.builder()\n .name(\"my-nodepool\")\n .location(\"us-west1\")\n .vmwareCluster(default_full.name())\n .annotations()\n .config(VMwareNodePoolConfigArgs.builder()\n .cpus(4)\n .memoryMb(8196)\n .replicas(3)\n .imageType(\"ubuntu_containerd\")\n .image(\"image\")\n .bootDiskSizeGb(10)\n .taints( \n VMwareNodePoolConfigTaintArgs.builder()\n .key(\"key\")\n .value(\"value\")\n .build(),\n VMwareNodePoolConfigTaintArgs.builder()\n .key(\"key\")\n .value(\"value\")\n .effect(\"NO_SCHEDULE\")\n .build())\n .labels()\n .vsphereConfig(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))\n .enableLoadBalancer(true)\n .build())\n .nodePoolAutoscaling(VMwareNodePoolNodePoolAutoscalingArgs.builder()\n .minReplicas(1)\n .maxReplicas(5)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-full:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n dhcpIpConfig:\n enabled: true\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n metalLbConfig:\n addressPools:\n - pool: ingress-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n - pool: lb-test-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n nodepool-full:\n type: gcp:gkeonprem:VMwareNodePool\n properties:\n name: my-nodepool\n location: us-west1\n vmwareCluster: ${[\"default-full\"].name}\n annotations: {}\n config:\n cpus: 4\n memoryMb: 8196\n replicas: 3\n imageType: ubuntu_containerd\n image: image\n bootDiskSizeGb: 10\n taints:\n - key: key\n value: value\n - key: key\n value: value\n effect: NO_SCHEDULE\n labels: {}\n vsphereConfig:\n datastore: test-datastore\n tags:\n - category: test-category-1\n tag: tag-1\n - category: test-category-2\n tag: tag-2\n hostGroups:\n - host1\n - host2\n enableLoadBalancer: true\n nodePoolAutoscaling:\n minReplicas: 1\n maxReplicas: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVmwareNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/vmwareClusters/{{vmware_cluster}}/vmwareNodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{vmware_cluster}}/{{name}}`\n\n* `{{location}}/{{vmware_cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, VmwareNodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareNodePool:VMwareNodePool default projects/{{project}}/locations/{{location}}/vmwareClusters/{{vmware_cluster}}/vmwareNodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareNodePool:VMwareNodePool default {{project}}/{{location}}/{{vmware_cluster}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareNodePool:VMwareNodePool default {{location}}/{{vmware_cluster}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -199778,7 +199778,7 @@ } }, "gcp:healthcare/dataset:Dataset": { - "description": "A Healthcare `Dataset` is a toplevel logical grouping of `dicomStores`, `fhirStores` and `hl7V2Stores`.\n\n\nTo get more information about Dataset, see:\n\n* [API documentation](https://cloud.google.com/healthcare/docs/reference/rest/v1/projects.locations.datasets)\n* How-to Guides\n * [Creating a dataset](https://cloud.google.com/healthcare/docs/how-tos/datasets)\n\n## Example Usage\n\n### Healthcare Dataset Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.healthcare.Dataset(\"default\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n timeZone: \"UTC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.healthcare.Dataset(\"default\",\n name=\"example-dataset\",\n location=\"us-central1\",\n time_zone=\"UTC\")\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.Healthcare.Dataset(\"default\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n TimeZone = \"UTC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/healthcare\"\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 := healthcare.NewDataset(ctx, \"default\", \u0026healthcare.DatasetArgs{\n\t\t\tName: pulumi.String(\"example-dataset\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTimeZone: pulumi.String(\"UTC\"),\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.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\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 Dataset(\"default\", DatasetArgs.builder()\n .name(\"example-dataset\")\n .location(\"us-central1\")\n .timeZone(\"UTC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n timeZone: UTC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Dataset Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n purpose: \"ENCRYPT_DECRYPT\",\n});\nconst healthcareCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"healthcare_cmek_keyuser\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-healthcare.iam.gserviceaccount.com`)],\n});\nconst _default = new gcp.healthcare.Dataset(\"default\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n timeZone: \"UTC\",\n encryptionSpec: {\n kmsKeyName: cryptoKey.id,\n },\n}, {\n dependsOn: [healthcareCmekKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-keyring\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id,\n purpose=\"ENCRYPT_DECRYPT\")\nhealthcare_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"healthcare_cmek_keyuser\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-healthcare.iam.gserviceaccount.com\"])\ndefault = gcp.healthcare.Dataset(\"default\",\n name=\"example-dataset\",\n location=\"us-central1\",\n time_zone=\"UTC\",\n encryption_spec={\n \"kmsKeyName\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[healthcare_cmek_keyuser]))\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 keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ENCRYPT_DECRYPT\",\n });\n\n var healthcareCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"healthcare_cmek_keyuser\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-healthcare.iam.gserviceaccount.com\",\n },\n });\n\n var @default = new Gcp.Healthcare.Dataset(\"default\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n TimeZone = \"UTC\",\n EncryptionSpec = new Gcp.Healthcare.Inputs.DatasetEncryptionSpecArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n healthcareCmekKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ENCRYPT_DECRYPT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thealthcareCmekKeyuser, err := kms.NewCryptoKeyIAMBinding(ctx, \"healthcare_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-healthcare.iam.gserviceaccount.com\", project.Number)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewDataset(ctx, \"default\", \u0026healthcare.DatasetArgs{\n\t\t\tName: pulumi.String(\"example-dataset\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTimeZone: pulumi.String(\"UTC\"),\n\t\t\tEncryptionSpec: \u0026healthcare.DatasetEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\thealthcareCmekKeyuser,\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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.inputs.DatasetEncryptionSpecArgs;\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 keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"example-keyring\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .purpose(\"ENCRYPT_DECRYPT\")\n .build());\n\n var healthcareCmekKeyuser = new CryptoKeyIAMBinding(\"healthcareCmekKeyuser\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-healthcare.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var default_ = new Dataset(\"default\", DatasetArgs.builder()\n .name(\"example-dataset\")\n .location(\"us-central1\")\n .timeZone(\"UTC\")\n .encryptionSpec(DatasetEncryptionSpecArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(healthcareCmekKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n timeZone: UTC\n encryptionSpec:\n kmsKeyName: ${cryptoKey.id}\n options:\n dependson:\n - ${healthcareCmekKeyuser}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n purpose: ENCRYPT_DECRYPT\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-keyring\n location: us-central1\n healthcareCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: healthcare_cmek_keyuser\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${project.number}@gcp-sa-healthcare.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataset can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/datasets/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Dataset can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:healthcare/dataset:Dataset default projects/{{project}}/locations/{{location}}/datasets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:healthcare/dataset:Dataset default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:healthcare/dataset:Dataset default {{location}}/{{name}}\n```\n\n", + "description": "A Healthcare `Dataset` is a toplevel logical grouping of `dicomStores`, `fhirStores` and `hl7V2Stores`.\n\n\nTo get more information about Dataset, see:\n\n* [API documentation](https://cloud.google.com/healthcare/docs/reference/rest/v1/projects.locations.datasets)\n* How-to Guides\n * [Creating a dataset](https://cloud.google.com/healthcare/docs/how-tos/datasets)\n\n## Example Usage\n\n### Healthcare Dataset Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.healthcare.Dataset(\"default\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n timeZone: \"UTC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.healthcare.Dataset(\"default\",\n name=\"example-dataset\",\n location=\"us-central1\",\n time_zone=\"UTC\")\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.Healthcare.Dataset(\"default\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n TimeZone = \"UTC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/healthcare\"\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 := healthcare.NewDataset(ctx, \"default\", \u0026healthcare.DatasetArgs{\n\t\t\tName: pulumi.String(\"example-dataset\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTimeZone: pulumi.String(\"UTC\"),\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.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\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 Dataset(\"default\", DatasetArgs.builder()\n .name(\"example-dataset\")\n .location(\"us-central1\")\n .timeZone(\"UTC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n timeZone: UTC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Dataset Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n purpose: \"ENCRYPT_DECRYPT\",\n});\nconst healthcareCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"healthcare_cmek_keyuser\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-healthcare.iam.gserviceaccount.com`)],\n});\nconst _default = new gcp.healthcare.Dataset(\"default\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n timeZone: \"UTC\",\n encryptionSpec: {\n kmsKeyName: cryptoKey.id,\n },\n}, {\n dependsOn: [healthcareCmekKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-keyring\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id,\n purpose=\"ENCRYPT_DECRYPT\")\nhealthcare_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"healthcare_cmek_keyuser\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-healthcare.iam.gserviceaccount.com\"])\ndefault = gcp.healthcare.Dataset(\"default\",\n name=\"example-dataset\",\n location=\"us-central1\",\n time_zone=\"UTC\",\n encryption_spec={\n \"kms_key_name\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[healthcare_cmek_keyuser]))\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 keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ENCRYPT_DECRYPT\",\n });\n\n var healthcareCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"healthcare_cmek_keyuser\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-healthcare.iam.gserviceaccount.com\",\n },\n });\n\n var @default = new Gcp.Healthcare.Dataset(\"default\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n TimeZone = \"UTC\",\n EncryptionSpec = new Gcp.Healthcare.Inputs.DatasetEncryptionSpecArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n healthcareCmekKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ENCRYPT_DECRYPT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thealthcareCmekKeyuser, err := kms.NewCryptoKeyIAMBinding(ctx, \"healthcare_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-healthcare.iam.gserviceaccount.com\", project.Number)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewDataset(ctx, \"default\", \u0026healthcare.DatasetArgs{\n\t\t\tName: pulumi.String(\"example-dataset\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTimeZone: pulumi.String(\"UTC\"),\n\t\t\tEncryptionSpec: \u0026healthcare.DatasetEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\thealthcareCmekKeyuser,\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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.inputs.DatasetEncryptionSpecArgs;\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 keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"example-keyring\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .purpose(\"ENCRYPT_DECRYPT\")\n .build());\n\n var healthcareCmekKeyuser = new CryptoKeyIAMBinding(\"healthcareCmekKeyuser\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-healthcare.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var default_ = new Dataset(\"default\", DatasetArgs.builder()\n .name(\"example-dataset\")\n .location(\"us-central1\")\n .timeZone(\"UTC\")\n .encryptionSpec(DatasetEncryptionSpecArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(healthcareCmekKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n timeZone: UTC\n encryptionSpec:\n kmsKeyName: ${cryptoKey.id}\n options:\n dependson:\n - ${healthcareCmekKeyuser}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n purpose: ENCRYPT_DECRYPT\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-keyring\n location: us-central1\n healthcareCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: healthcare_cmek_keyuser\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${project.number}@gcp-sa-healthcare.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataset can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/datasets/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Dataset can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:healthcare/dataset:Dataset default projects/{{project}}/locations/{{location}}/datasets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:healthcare/dataset:Dataset default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:healthcare/dataset:Dataset default {{location}}/{{name}}\n```\n\n", "properties": { "encryptionSpec": { "$ref": "#/types/gcp:healthcare/DatasetEncryptionSpec:DatasetEncryptionSpec", @@ -200111,7 +200111,7 @@ } }, "gcp:healthcare/dicomStore:DicomStore": { - "description": "A DicomStore is a datastore inside a Healthcare dataset that conforms to the DICOM\n(https://www.dicomstandard.org/about/) standard for Healthcare information exchange\n\n\nTo get more information about DicomStore, see:\n\n* [API documentation](https://cloud.google.com/healthcare/docs/reference/rest/v1/projects.locations.datasets.dicomStores)\n* How-to Guides\n * [Creating a DICOM store](https://cloud.google.com/healthcare/docs/how-tos/dicom)\n\n## Example Usage\n\n### Healthcare Dicom Store Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"dicom-notifications\"});\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n});\nconst _default = new gcp.healthcare.DicomStore(\"default\", {\n name: \"example-dicom-store\",\n dataset: dataset.id,\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\", name=\"dicom-notifications\")\ndataset = gcp.healthcare.Dataset(\"dataset\",\n name=\"example-dataset\",\n location=\"us-central1\")\ndefault = gcp.healthcare.DicomStore(\"default\",\n name=\"example-dicom-store\",\n dataset=dataset.id,\n notification_config={\n \"pubsubTopic\": 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\", new()\n {\n Name = \"dicom-notifications\",\n });\n\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n });\n\n var @default = new Gcp.Healthcare.DicomStore(\"default\", new()\n {\n Name = \"example-dicom-store\",\n Dataset = dataset.Id,\n NotificationConfig = new Gcp.Healthcare.Inputs.DicomStoreNotificationConfigArgs\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/v7/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"dicom-notifications\"),\n\t\t})\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\tName: pulumi.String(\"example-dataset\"),\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.NewDicomStore(ctx, \"default\", \u0026healthcare.DicomStoreArgs{\n\t\t\tName: pulumi.String(\"example-dicom-store\"),\n\t\t\tDataset: dataset.ID(),\n\t\t\tNotificationConfig: \u0026healthcare.DicomStoreNotificationConfigArgs{\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.pubsub.TopicArgs;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.DicomStore;\nimport com.pulumi.gcp.healthcare.DicomStoreArgs;\nimport com.pulumi.gcp.healthcare.inputs.DicomStoreNotificationConfigArgs;\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.builder()\n .name(\"dicom-notifications\")\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .name(\"example-dataset\")\n .location(\"us-central1\")\n .build());\n\n var default_ = new DicomStore(\"default\", DicomStoreArgs.builder()\n .name(\"example-dicom-store\")\n .dataset(dataset.id())\n .notificationConfig(DicomStoreNotificationConfigArgs.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:DicomStore\n properties:\n name: example-dicom-store\n dataset: ${dataset.id}\n notificationConfig:\n pubsubTopic: ${topic.id}\n labels:\n label1: labelvalue1\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: dicom-notifications\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Dicom Store Bq Stream\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"dicom-notifications\"});\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n});\nconst bqDataset = new gcp.bigquery.Dataset(\"bq_dataset\", {\n datasetId: \"dicom_bq_ds\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n deleteContentsOnDestroy: true,\n});\nconst bqTable = new gcp.bigquery.Table(\"bq_table\", {\n deletionProtection: false,\n datasetId: bqDataset.datasetId,\n tableId: \"dicom_bq_tb\",\n});\nconst _default = new gcp.healthcare.DicomStore(\"default\", {\n name: \"example-dicom-store\",\n dataset: dataset.id,\n notificationConfig: {\n pubsubTopic: topic.id,\n sendForBulkImport: true,\n },\n labels: {\n label1: \"labelvalue1\",\n },\n streamConfigs: [{\n bigqueryDestination: {\n tableUri: pulumi.interpolate`bq://${bqDataset.project}.${bqDataset.datasetId}.${bqTable.tableId}`,\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntopic = gcp.pubsub.Topic(\"topic\", name=\"dicom-notifications\")\ndataset = gcp.healthcare.Dataset(\"dataset\",\n name=\"example-dataset\",\n location=\"us-central1\")\nbq_dataset = gcp.bigquery.Dataset(\"bq_dataset\",\n dataset_id=\"dicom_bq_ds\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n delete_contents_on_destroy=True)\nbq_table = gcp.bigquery.Table(\"bq_table\",\n deletion_protection=False,\n dataset_id=bq_dataset.dataset_id,\n table_id=\"dicom_bq_tb\")\ndefault = gcp.healthcare.DicomStore(\"default\",\n name=\"example-dicom-store\",\n dataset=dataset.id,\n notification_config={\n \"pubsubTopic\": topic.id,\n \"sendForBulkImport\": True,\n },\n labels={\n \"label1\": \"labelvalue1\",\n },\n stream_configs=[{\n \"bigqueryDestination\": {\n \"tableUri\": pulumi.Output.all(bq_dataset.project, bq_dataset.dataset_id, bq_table.table_id).apply(lambda project, dataset_id, table_id: f\"bq://{project}.{dataset_id}.{table_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 topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"dicom-notifications\",\n });\n\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n });\n\n var bqDataset = new Gcp.BigQuery.Dataset(\"bq_dataset\", new()\n {\n DatasetId = \"dicom_bq_ds\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DeleteContentsOnDestroy = true,\n });\n\n var bqTable = new Gcp.BigQuery.Table(\"bq_table\", new()\n {\n DeletionProtection = false,\n DatasetId = bqDataset.DatasetId,\n TableId = \"dicom_bq_tb\",\n });\n\n var @default = new Gcp.Healthcare.DicomStore(\"default\", new()\n {\n Name = \"example-dicom-store\",\n Dataset = dataset.Id,\n NotificationConfig = new Gcp.Healthcare.Inputs.DicomStoreNotificationConfigArgs\n {\n PubsubTopic = topic.Id,\n SendForBulkImport = true,\n },\n Labels = \n {\n { \"label1\", \"labelvalue1\" },\n },\n StreamConfigs = new[]\n {\n new Gcp.Healthcare.Inputs.DicomStoreStreamConfigArgs\n {\n BigqueryDestination = new Gcp.Healthcare.Inputs.DicomStoreStreamConfigBigqueryDestinationArgs\n {\n TableUri = Output.Tuple(bqDataset.Project, bqDataset.DatasetId, bqTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\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/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"dicom-notifications\"),\n\t\t})\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\tName: pulumi.String(\"example-dataset\"),\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, \"bq_dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dicom_bq_ds\"),\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\tbqTable, err := bigquery.NewTable(ctx, \"bq_table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: bqDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"dicom_bq_tb\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewDicomStore(ctx, \"default\", \u0026healthcare.DicomStoreArgs{\n\t\t\tName: pulumi.String(\"example-dicom-store\"),\n\t\t\tDataset: dataset.ID(),\n\t\t\tNotificationConfig: \u0026healthcare.DicomStoreNotificationConfigArgs{\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tSendForBulkImport: pulumi.Bool(true),\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\tStreamConfigs: healthcare.DicomStoreStreamConfigArray{\n\t\t\t\t\u0026healthcare.DicomStoreStreamConfigArgs{\n\t\t\t\t\tBigqueryDestination: \u0026healthcare.DicomStoreStreamConfigBigqueryDestinationArgs{\n\t\t\t\t\t\tTableUri: pulumi.All(bqDataset.Project, bqDataset.DatasetId, bqTable.TableId).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\ttableId := _args[2].(string)\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\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.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.healthcare.DicomStore;\nimport com.pulumi.gcp.healthcare.DicomStoreArgs;\nimport com.pulumi.gcp.healthcare.inputs.DicomStoreNotificationConfigArgs;\nimport com.pulumi.gcp.healthcare.inputs.DicomStoreStreamConfigArgs;\nimport com.pulumi.gcp.healthcare.inputs.DicomStoreStreamConfigBigqueryDestinationArgs;\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.builder()\n .name(\"dicom-notifications\")\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .name(\"example-dataset\")\n .location(\"us-central1\")\n .build());\n\n var bqDataset = new Dataset(\"bqDataset\", DatasetArgs.builder()\n .datasetId(\"dicom_bq_ds\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .deleteContentsOnDestroy(true)\n .build());\n\n var bqTable = new Table(\"bqTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(bqDataset.datasetId())\n .tableId(\"dicom_bq_tb\")\n .build());\n\n var default_ = new DicomStore(\"default\", DicomStoreArgs.builder()\n .name(\"example-dicom-store\")\n .dataset(dataset.id())\n .notificationConfig(DicomStoreNotificationConfigArgs.builder()\n .pubsubTopic(topic.id())\n .sendForBulkImport(true)\n .build())\n .labels(Map.of(\"label1\", \"labelvalue1\"))\n .streamConfigs(DicomStoreStreamConfigArgs.builder()\n .bigqueryDestination(DicomStoreStreamConfigBigqueryDestinationArgs.builder()\n .tableUri(Output.tuple(bqDataset.project(), bqDataset.datasetId(), bqTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:DicomStore\n properties:\n name: example-dicom-store\n dataset: ${dataset.id}\n notificationConfig:\n pubsubTopic: ${topic.id}\n sendForBulkImport: true\n labels:\n label1: labelvalue1\n streamConfigs:\n - bigqueryDestination:\n tableUri: bq://${bqDataset.project}.${bqDataset.datasetId}.${bqTable.tableId}\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: dicom-notifications\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n bqDataset:\n type: gcp:bigquery:Dataset\n name: bq_dataset\n properties:\n datasetId: dicom_bq_ds\n friendlyName: test\n description: This is a test description\n location: US\n deleteContentsOnDestroy: true\n bqTable:\n type: gcp:bigquery:Table\n name: bq_table\n properties:\n deletionProtection: false\n datasetId: ${bqDataset.datasetId}\n tableId: dicom_bq_tb\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDicomStore can be imported using any of these accepted formats:\n\n* `{{dataset}}/dicomStores/{{name}}`\n\n* `{{dataset}}/{{name}}`\n\nWhen using the `pulumi import` command, DicomStore can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:healthcare/dicomStore:DicomStore default {{dataset}}/dicomStores/{{name}}\n```\n\n```sh\n$ pulumi import gcp:healthcare/dicomStore:DicomStore default {{dataset}}/{{name}}\n```\n\n", + "description": "A DicomStore is a datastore inside a Healthcare dataset that conforms to the DICOM\n(https://www.dicomstandard.org/about/) standard for Healthcare information exchange\n\n\nTo get more information about DicomStore, see:\n\n* [API documentation](https://cloud.google.com/healthcare/docs/reference/rest/v1/projects.locations.datasets.dicomStores)\n* How-to Guides\n * [Creating a DICOM store](https://cloud.google.com/healthcare/docs/how-tos/dicom)\n\n## Example Usage\n\n### Healthcare Dicom Store Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"dicom-notifications\"});\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n});\nconst _default = new gcp.healthcare.DicomStore(\"default\", {\n name: \"example-dicom-store\",\n dataset: dataset.id,\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\", name=\"dicom-notifications\")\ndataset = gcp.healthcare.Dataset(\"dataset\",\n name=\"example-dataset\",\n location=\"us-central1\")\ndefault = gcp.healthcare.DicomStore(\"default\",\n name=\"example-dicom-store\",\n dataset=dataset.id,\n notification_config={\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\", new()\n {\n Name = \"dicom-notifications\",\n });\n\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n });\n\n var @default = new Gcp.Healthcare.DicomStore(\"default\", new()\n {\n Name = \"example-dicom-store\",\n Dataset = dataset.Id,\n NotificationConfig = new Gcp.Healthcare.Inputs.DicomStoreNotificationConfigArgs\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/v7/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"dicom-notifications\"),\n\t\t})\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\tName: pulumi.String(\"example-dataset\"),\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.NewDicomStore(ctx, \"default\", \u0026healthcare.DicomStoreArgs{\n\t\t\tName: pulumi.String(\"example-dicom-store\"),\n\t\t\tDataset: dataset.ID(),\n\t\t\tNotificationConfig: \u0026healthcare.DicomStoreNotificationConfigArgs{\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.pubsub.TopicArgs;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.DicomStore;\nimport com.pulumi.gcp.healthcare.DicomStoreArgs;\nimport com.pulumi.gcp.healthcare.inputs.DicomStoreNotificationConfigArgs;\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.builder()\n .name(\"dicom-notifications\")\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .name(\"example-dataset\")\n .location(\"us-central1\")\n .build());\n\n var default_ = new DicomStore(\"default\", DicomStoreArgs.builder()\n .name(\"example-dicom-store\")\n .dataset(dataset.id())\n .notificationConfig(DicomStoreNotificationConfigArgs.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:DicomStore\n properties:\n name: example-dicom-store\n dataset: ${dataset.id}\n notificationConfig:\n pubsubTopic: ${topic.id}\n labels:\n label1: labelvalue1\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: dicom-notifications\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Dicom Store Bq Stream\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"dicom-notifications\"});\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n});\nconst bqDataset = new gcp.bigquery.Dataset(\"bq_dataset\", {\n datasetId: \"dicom_bq_ds\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n deleteContentsOnDestroy: true,\n});\nconst bqTable = new gcp.bigquery.Table(\"bq_table\", {\n deletionProtection: false,\n datasetId: bqDataset.datasetId,\n tableId: \"dicom_bq_tb\",\n});\nconst _default = new gcp.healthcare.DicomStore(\"default\", {\n name: \"example-dicom-store\",\n dataset: dataset.id,\n notificationConfig: {\n pubsubTopic: topic.id,\n sendForBulkImport: true,\n },\n labels: {\n label1: \"labelvalue1\",\n },\n streamConfigs: [{\n bigqueryDestination: {\n tableUri: pulumi.interpolate`bq://${bqDataset.project}.${bqDataset.datasetId}.${bqTable.tableId}`,\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntopic = gcp.pubsub.Topic(\"topic\", name=\"dicom-notifications\")\ndataset = gcp.healthcare.Dataset(\"dataset\",\n name=\"example-dataset\",\n location=\"us-central1\")\nbq_dataset = gcp.bigquery.Dataset(\"bq_dataset\",\n dataset_id=\"dicom_bq_ds\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n delete_contents_on_destroy=True)\nbq_table = gcp.bigquery.Table(\"bq_table\",\n deletion_protection=False,\n dataset_id=bq_dataset.dataset_id,\n table_id=\"dicom_bq_tb\")\ndefault = gcp.healthcare.DicomStore(\"default\",\n name=\"example-dicom-store\",\n dataset=dataset.id,\n notification_config={\n \"pubsub_topic\": topic.id,\n \"send_for_bulk_import\": True,\n },\n labels={\n \"label1\": \"labelvalue1\",\n },\n stream_configs=[{\n \"bigquery_destination\": {\n \"table_uri\": pulumi.Output.all(bq_dataset.project, bq_dataset.dataset_id, bq_table.table_id).apply(lambda project, dataset_id, table_id: f\"bq://{project}.{dataset_id}.{table_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 topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"dicom-notifications\",\n });\n\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n });\n\n var bqDataset = new Gcp.BigQuery.Dataset(\"bq_dataset\", new()\n {\n DatasetId = \"dicom_bq_ds\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DeleteContentsOnDestroy = true,\n });\n\n var bqTable = new Gcp.BigQuery.Table(\"bq_table\", new()\n {\n DeletionProtection = false,\n DatasetId = bqDataset.DatasetId,\n TableId = \"dicom_bq_tb\",\n });\n\n var @default = new Gcp.Healthcare.DicomStore(\"default\", new()\n {\n Name = \"example-dicom-store\",\n Dataset = dataset.Id,\n NotificationConfig = new Gcp.Healthcare.Inputs.DicomStoreNotificationConfigArgs\n {\n PubsubTopic = topic.Id,\n SendForBulkImport = true,\n },\n Labels = \n {\n { \"label1\", \"labelvalue1\" },\n },\n StreamConfigs = new[]\n {\n new Gcp.Healthcare.Inputs.DicomStoreStreamConfigArgs\n {\n BigqueryDestination = new Gcp.Healthcare.Inputs.DicomStoreStreamConfigBigqueryDestinationArgs\n {\n TableUri = Output.Tuple(bqDataset.Project, bqDataset.DatasetId, bqTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\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/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"dicom-notifications\"),\n\t\t})\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\tName: pulumi.String(\"example-dataset\"),\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, \"bq_dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dicom_bq_ds\"),\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\tbqTable, err := bigquery.NewTable(ctx, \"bq_table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: bqDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"dicom_bq_tb\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewDicomStore(ctx, \"default\", \u0026healthcare.DicomStoreArgs{\n\t\t\tName: pulumi.String(\"example-dicom-store\"),\n\t\t\tDataset: dataset.ID(),\n\t\t\tNotificationConfig: \u0026healthcare.DicomStoreNotificationConfigArgs{\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tSendForBulkImport: pulumi.Bool(true),\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\tStreamConfigs: healthcare.DicomStoreStreamConfigArray{\n\t\t\t\t\u0026healthcare.DicomStoreStreamConfigArgs{\n\t\t\t\t\tBigqueryDestination: \u0026healthcare.DicomStoreStreamConfigBigqueryDestinationArgs{\n\t\t\t\t\t\tTableUri: pulumi.All(bqDataset.Project, bqDataset.DatasetId, bqTable.TableId).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\ttableId := _args[2].(string)\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\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.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.healthcare.DicomStore;\nimport com.pulumi.gcp.healthcare.DicomStoreArgs;\nimport com.pulumi.gcp.healthcare.inputs.DicomStoreNotificationConfigArgs;\nimport com.pulumi.gcp.healthcare.inputs.DicomStoreStreamConfigArgs;\nimport com.pulumi.gcp.healthcare.inputs.DicomStoreStreamConfigBigqueryDestinationArgs;\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.builder()\n .name(\"dicom-notifications\")\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .name(\"example-dataset\")\n .location(\"us-central1\")\n .build());\n\n var bqDataset = new Dataset(\"bqDataset\", DatasetArgs.builder()\n .datasetId(\"dicom_bq_ds\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .deleteContentsOnDestroy(true)\n .build());\n\n var bqTable = new Table(\"bqTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(bqDataset.datasetId())\n .tableId(\"dicom_bq_tb\")\n .build());\n\n var default_ = new DicomStore(\"default\", DicomStoreArgs.builder()\n .name(\"example-dicom-store\")\n .dataset(dataset.id())\n .notificationConfig(DicomStoreNotificationConfigArgs.builder()\n .pubsubTopic(topic.id())\n .sendForBulkImport(true)\n .build())\n .labels(Map.of(\"label1\", \"labelvalue1\"))\n .streamConfigs(DicomStoreStreamConfigArgs.builder()\n .bigqueryDestination(DicomStoreStreamConfigBigqueryDestinationArgs.builder()\n .tableUri(Output.tuple(bqDataset.project(), bqDataset.datasetId(), bqTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:DicomStore\n properties:\n name: example-dicom-store\n dataset: ${dataset.id}\n notificationConfig:\n pubsubTopic: ${topic.id}\n sendForBulkImport: true\n labels:\n label1: labelvalue1\n streamConfigs:\n - bigqueryDestination:\n tableUri: bq://${bqDataset.project}.${bqDataset.datasetId}.${bqTable.tableId}\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: dicom-notifications\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n bqDataset:\n type: gcp:bigquery:Dataset\n name: bq_dataset\n properties:\n datasetId: dicom_bq_ds\n friendlyName: test\n description: This is a test description\n location: US\n deleteContentsOnDestroy: true\n bqTable:\n type: gcp:bigquery:Table\n name: bq_table\n properties:\n deletionProtection: false\n datasetId: ${bqDataset.datasetId}\n tableId: dicom_bq_tb\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDicomStore can be imported using any of these accepted formats:\n\n* `{{dataset}}/dicomStores/{{name}}`\n\n* `{{dataset}}/{{name}}`\n\nWhen using the `pulumi import` command, DicomStore can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:healthcare/dicomStore:DicomStore default {{dataset}}/dicomStores/{{name}}\n```\n\n```sh\n$ pulumi import gcp:healthcare/dicomStore:DicomStore default {{dataset}}/{{name}}\n```\n\n", "properties": { "dataset": { "type": "string", @@ -200489,7 +200489,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## Example Usage\n\n### Healthcare Fhir Store Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"fhir-notifications\"});\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n});\nconst _default = new gcp.healthcare.FhirStore(\"default\", {\n name: \"example-fhir-store\",\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 notificationConfigs: [{\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\", name=\"fhir-notifications\")\ndataset = gcp.healthcare.Dataset(\"dataset\",\n name=\"example-dataset\",\n location=\"us-central1\")\ndefault = gcp.healthcare.FhirStore(\"default\",\n name=\"example-fhir-store\",\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_configs=[{\n \"pubsubTopic\": 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\", new()\n {\n Name = \"fhir-notifications\",\n });\n\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n });\n\n var @default = new Gcp.Healthcare.FhirStore(\"default\", new()\n {\n Name = \"example-fhir-store\",\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 NotificationConfigs = new[]\n {\n new Gcp.Healthcare.Inputs.FhirStoreNotificationConfigArgs\n {\n PubsubTopic = topic.Id,\n },\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/v7/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"fhir-notifications\"),\n\t\t})\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\tName: pulumi.String(\"example-dataset\"),\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\tName: pulumi.String(\"example-fhir-store\"),\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\tNotificationConfigs: healthcare.FhirStoreNotificationConfigArray{\n\t\t\t\t\u0026healthcare.FhirStoreNotificationConfigArgs{\n\t\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\t},\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.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 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.builder()\n .name(\"fhir-notifications\")\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .name(\"example-dataset\")\n .location(\"us-central1\")\n .build());\n\n var default_ = new FhirStore(\"default\", FhirStoreArgs.builder()\n .name(\"example-fhir-store\")\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 .notificationConfigs(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 name: example-fhir-store\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 notificationConfigs:\n - pubsubTopic: ${topic.id}\n labels:\n label1: labelvalue1\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: fhir-notifications\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Fhir Store Streaming Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n});\nconst bqDataset = new gcp.bigquery.Dataset(\"bq_dataset\", {\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 name: \"example-fhir-store\",\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\", {name: \"fhir-notifications\"});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.healthcare.Dataset(\"dataset\",\n name=\"example-dataset\",\n location=\"us-central1\")\nbq_dataset = gcp.bigquery.Dataset(\"bq_dataset\",\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 name=\"example-fhir-store\",\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=[{\n \"resourceTypes\": [\"Observation\"],\n \"bigqueryDestination\": {\n \"datasetUri\": pulumi.Output.all(bq_dataset.project, bq_dataset.dataset_id).apply(lambda project, dataset_id: f\"bq://{project}.{dataset_id}\"),\n \"schemaConfig\": {\n \"recursiveStructureDepth\": 3,\n \"lastUpdatedPartitionConfig\": {\n \"type\": \"HOUR\",\n \"expirationMs\": \"1000000\",\n },\n },\n },\n }])\ntopic = gcp.pubsub.Topic(\"topic\", name=\"fhir-notifications\")\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 Name = \"example-dataset\",\n Location = \"us-central1\",\n });\n\n var bqDataset = new Gcp.BigQuery.Dataset(\"bq_dataset\", 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 Name = \"example-fhir-store\",\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\", new()\n {\n Name = \"fhir-notifications\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"example-dataset\"),\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, \"bq_dataset\", \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\tName: pulumi.String(\"example-fhir-store\"),\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\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"fhir-notifications\"),\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.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 com.pulumi.gcp.pubsub.TopicArgs;\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 .name(\"example-dataset\")\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 .name(\"example-fhir-store\")\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\", TopicArgs.builder()\n .name(\"fhir-notifications\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:FhirStore\n properties:\n name: example-fhir-store\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 properties:\n name: fhir-notifications\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n bqDataset:\n type: gcp:bigquery:Dataset\n name: bq_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\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Fhir Store Notification Configs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"fhir-notifications\"});\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n});\nconst _default = new gcp.healthcare.FhirStore(\"default\", {\n name: \"example-fhir-store\",\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```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntopic = gcp.pubsub.Topic(\"topic\", name=\"fhir-notifications\")\ndataset = gcp.healthcare.Dataset(\"dataset\",\n name=\"example-dataset\",\n location=\"us-central1\")\ndefault = gcp.healthcare.FhirStore(\"default\",\n name=\"example-fhir-store\",\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=[{\n \"pubsubTopic\": topic.id,\n \"sendFullResource\": True,\n \"sendPreviousResourceOnDelete\": 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 topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"fhir-notifications\",\n });\n\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n });\n\n var @default = new Gcp.Healthcare.FhirStore(\"default\", new()\n {\n Name = \"example-fhir-store\",\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"fhir-notifications\"),\n\t\t})\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\tName: pulumi.String(\"example-dataset\"),\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\tName: pulumi.String(\"example-fhir-store\"),\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})\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 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.builder()\n .name(\"fhir-notifications\")\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .name(\"example-dataset\")\n .location(\"us-central1\")\n .build());\n\n var default_ = new FhirStore(\"default\", FhirStoreArgs.builder()\n .name(\"example-fhir-store\")\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());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:FhirStore\n properties:\n name: example-fhir-store\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 topic:\n type: gcp:pubsub:Topic\n properties:\n name: fhir-notifications\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFhirStore can be imported using any of these accepted formats:\n\n* `{{dataset}}/fhirStores/{{name}}`\n\n* `{{dataset}}/{{name}}`\n\nWhen using the `pulumi import` command, FhirStore can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:healthcare/fhirStore:FhirStore default {{dataset}}/fhirStores/{{name}}\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## Example Usage\n\n### Healthcare Fhir Store Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"fhir-notifications\"});\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n});\nconst _default = new gcp.healthcare.FhirStore(\"default\", {\n name: \"example-fhir-store\",\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 notificationConfigs: [{\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\", name=\"fhir-notifications\")\ndataset = gcp.healthcare.Dataset(\"dataset\",\n name=\"example-dataset\",\n location=\"us-central1\")\ndefault = gcp.healthcare.FhirStore(\"default\",\n name=\"example-fhir-store\",\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_configs=[{\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\", new()\n {\n Name = \"fhir-notifications\",\n });\n\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n });\n\n var @default = new Gcp.Healthcare.FhirStore(\"default\", new()\n {\n Name = \"example-fhir-store\",\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 NotificationConfigs = new[]\n {\n new Gcp.Healthcare.Inputs.FhirStoreNotificationConfigArgs\n {\n PubsubTopic = topic.Id,\n },\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/v7/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"fhir-notifications\"),\n\t\t})\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\tName: pulumi.String(\"example-dataset\"),\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\tName: pulumi.String(\"example-fhir-store\"),\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\tNotificationConfigs: healthcare.FhirStoreNotificationConfigArray{\n\t\t\t\t\u0026healthcare.FhirStoreNotificationConfigArgs{\n\t\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\t},\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.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 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.builder()\n .name(\"fhir-notifications\")\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .name(\"example-dataset\")\n .location(\"us-central1\")\n .build());\n\n var default_ = new FhirStore(\"default\", FhirStoreArgs.builder()\n .name(\"example-fhir-store\")\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 .notificationConfigs(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 name: example-fhir-store\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 notificationConfigs:\n - pubsubTopic: ${topic.id}\n labels:\n label1: labelvalue1\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: fhir-notifications\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Fhir Store Streaming Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n});\nconst bqDataset = new gcp.bigquery.Dataset(\"bq_dataset\", {\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 name: \"example-fhir-store\",\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\", {name: \"fhir-notifications\"});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.healthcare.Dataset(\"dataset\",\n name=\"example-dataset\",\n location=\"us-central1\")\nbq_dataset = gcp.bigquery.Dataset(\"bq_dataset\",\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 name=\"example-fhir-store\",\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=[{\n \"resource_types\": [\"Observation\"],\n \"bigquery_destination\": {\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\": {\n \"recursive_structure_depth\": 3,\n \"last_updated_partition_config\": {\n \"type\": \"HOUR\",\n \"expiration_ms\": \"1000000\",\n },\n },\n },\n }])\ntopic = gcp.pubsub.Topic(\"topic\", name=\"fhir-notifications\")\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 Name = \"example-dataset\",\n Location = \"us-central1\",\n });\n\n var bqDataset = new Gcp.BigQuery.Dataset(\"bq_dataset\", 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 Name = \"example-fhir-store\",\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\", new()\n {\n Name = \"fhir-notifications\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"example-dataset\"),\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, \"bq_dataset\", \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\tName: pulumi.String(\"example-fhir-store\"),\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\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"fhir-notifications\"),\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.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 com.pulumi.gcp.pubsub.TopicArgs;\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 .name(\"example-dataset\")\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 .name(\"example-fhir-store\")\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\", TopicArgs.builder()\n .name(\"fhir-notifications\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:FhirStore\n properties:\n name: example-fhir-store\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 properties:\n name: fhir-notifications\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n bqDataset:\n type: gcp:bigquery:Dataset\n name: bq_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\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Fhir Store Notification Configs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"fhir-notifications\"});\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n});\nconst _default = new gcp.healthcare.FhirStore(\"default\", {\n name: \"example-fhir-store\",\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```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntopic = gcp.pubsub.Topic(\"topic\", name=\"fhir-notifications\")\ndataset = gcp.healthcare.Dataset(\"dataset\",\n name=\"example-dataset\",\n location=\"us-central1\")\ndefault = gcp.healthcare.FhirStore(\"default\",\n name=\"example-fhir-store\",\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=[{\n \"pubsub_topic\": topic.id,\n \"send_full_resource\": True,\n \"send_previous_resource_on_delete\": 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 topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"fhir-notifications\",\n });\n\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n });\n\n var @default = new Gcp.Healthcare.FhirStore(\"default\", new()\n {\n Name = \"example-fhir-store\",\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 });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"fhir-notifications\"),\n\t\t})\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\tName: pulumi.String(\"example-dataset\"),\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\tName: pulumi.String(\"example-fhir-store\"),\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})\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 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.builder()\n .name(\"fhir-notifications\")\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .name(\"example-dataset\")\n .location(\"us-central1\")\n .build());\n\n var default_ = new FhirStore(\"default\", FhirStoreArgs.builder()\n .name(\"example-fhir-store\")\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());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:FhirStore\n properties:\n name: example-fhir-store\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 topic:\n type: gcp:pubsub:Topic\n properties:\n name: fhir-notifications\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFhirStore can be imported using any of these accepted formats:\n\n* `{{dataset}}/fhirStores/{{name}}`\n\n* `{{dataset}}/{{name}}`\n\nWhen using the `pulumi import` command, FhirStore can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:healthcare/fhirStore:FhirStore default {{dataset}}/fhirStores/{{name}}\n```\n\n```sh\n$ pulumi import gcp:healthcare/fhirStore:FhirStore default {{dataset}}/{{name}}\n```\n\n", "properties": { "complexDataTypeReferenceParsing": { "type": "string", @@ -200996,7 +200996,7 @@ } }, "gcp:healthcare/hl7Store:Hl7Store": { - "description": "A Hl7V2Store is a datastore inside a Healthcare dataset that conforms to the FHIR (https://www.hl7.org/hl7V2/STU3/)\nstandard for Healthcare information exchange\n\n\nTo get more information about Hl7V2Store, see:\n\n* [API documentation](https://cloud.google.com/healthcare/docs/reference/rest/v1/projects.locations.datasets.hl7V2Stores)\n* How-to Guides\n * [Creating a HL7v2 Store](https://cloud.google.com/healthcare/docs/how-tos/hl7v2)\n\n## Example Usage\n\n### Healthcare Hl7 V2 Store Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"hl7-v2-notifications\"});\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n});\nconst store = new gcp.healthcare.Hl7Store(\"store\", {\n name: \"example-hl7-v2-store\",\n dataset: dataset.id,\n rejectDuplicateMessage: true,\n notificationConfigs: [{\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\", name=\"hl7-v2-notifications\")\ndataset = gcp.healthcare.Dataset(\"dataset\",\n name=\"example-dataset\",\n location=\"us-central1\")\nstore = gcp.healthcare.Hl7Store(\"store\",\n name=\"example-hl7-v2-store\",\n dataset=dataset.id,\n reject_duplicate_message=True,\n notification_configs=[{\n \"pubsubTopic\": 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\", new()\n {\n Name = \"hl7-v2-notifications\",\n });\n\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n });\n\n var store = new Gcp.Healthcare.Hl7Store(\"store\", new()\n {\n Name = \"example-hl7-v2-store\",\n Dataset = dataset.Id,\n RejectDuplicateMessage = true,\n NotificationConfigs = new[]\n {\n new Gcp.Healthcare.Inputs.Hl7StoreNotificationConfigsArgs\n {\n PubsubTopic = topic.Id,\n },\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/v7/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"hl7-v2-notifications\"),\n\t\t})\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\tName: pulumi.String(\"example-dataset\"),\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.NewHl7Store(ctx, \"store\", \u0026healthcare.Hl7StoreArgs{\n\t\t\tName: pulumi.String(\"example-hl7-v2-store\"),\n\t\t\tDataset: dataset.ID(),\n\t\t\tRejectDuplicateMessage: pulumi.Bool(true),\n\t\t\tNotificationConfigs: healthcare.Hl7StoreNotificationConfigsArray{\n\t\t\t\t\u0026healthcare.Hl7StoreNotificationConfigsArgs{\n\t\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\t},\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.pubsub.TopicArgs;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.Hl7Store;\nimport com.pulumi.gcp.healthcare.Hl7StoreArgs;\nimport com.pulumi.gcp.healthcare.inputs.Hl7StoreNotificationConfigsArgs;\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.builder()\n .name(\"hl7-v2-notifications\")\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .name(\"example-dataset\")\n .location(\"us-central1\")\n .build());\n\n var store = new Hl7Store(\"store\", Hl7StoreArgs.builder()\n .name(\"example-hl7-v2-store\")\n .dataset(dataset.id())\n .rejectDuplicateMessage(true)\n .notificationConfigs(Hl7StoreNotificationConfigsArgs.builder()\n .pubsubTopic(topic.id())\n .build())\n .labels(Map.of(\"label1\", \"labelvalue1\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n store:\n type: gcp:healthcare:Hl7Store\n properties:\n name: example-hl7-v2-store\n dataset: ${dataset.id}\n rejectDuplicateMessage: true\n notificationConfigs:\n - pubsubTopic: ${topic.id}\n labels:\n label1: labelvalue1\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: hl7-v2-notifications\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Hl7 V2 Store Parser Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n});\nconst store = new gcp.healthcare.Hl7Store(\"store\", {\n name: \"example-hl7-v2-store\",\n dataset: dataset.id,\n parserConfig: {\n allowNullHeader: false,\n segmentTerminator: \"Jw==\",\n schema: `{\n \"schemas\": [{\n \"messageSchemaConfigs\": {\n \"ADT_A01\": {\n \"name\": \"ADT_A01\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1,\n \"members\": [{\n \"segment\": {\n \"type\": \"MSH\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"EVN\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"PID\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ZPD\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"OBX\"\n }\n },\n {\n \"group\": {\n \"name\": \"PROCEDURE\",\n \"members\": [{\n \"segment\": {\n \"type\": \"PR1\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ROL\"\n }\n }\n ]\n }\n },\n {\n \"segment\": {\n \"type\": \"PDA\",\n \"maxOccurs\": 1\n }\n }\n ]\n }\n }\n }],\n \"types\": [{\n \"type\": [{\n \"name\": \"ZPD\",\n \"primitive\": \"VARIES\"\n }\n\n ]\n }],\n \"ignoreMinOccurs\": true\n}\n`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.healthcare.Dataset(\"dataset\",\n name=\"example-dataset\",\n location=\"us-central1\")\nstore = gcp.healthcare.Hl7Store(\"store\",\n name=\"example-hl7-v2-store\",\n dataset=dataset.id,\n parser_config={\n \"allowNullHeader\": False,\n \"segmentTerminator\": \"Jw==\",\n \"schema\": \"\"\"{\n \"schemas\": [{\n \"messageSchemaConfigs\": {\n \"ADT_A01\": {\n \"name\": \"ADT_A01\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1,\n \"members\": [{\n \"segment\": {\n \"type\": \"MSH\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"EVN\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"PID\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ZPD\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"OBX\"\n }\n },\n {\n \"group\": {\n \"name\": \"PROCEDURE\",\n \"members\": [{\n \"segment\": {\n \"type\": \"PR1\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ROL\"\n }\n }\n ]\n }\n },\n {\n \"segment\": {\n \"type\": \"PDA\",\n \"maxOccurs\": 1\n }\n }\n ]\n }\n }\n }],\n \"types\": [{\n \"type\": [{\n \"name\": \"ZPD\",\n \"primitive\": \"VARIES\"\n }\n\n ]\n }],\n \"ignoreMinOccurs\": true\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 dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n });\n\n var store = new Gcp.Healthcare.Hl7Store(\"store\", new()\n {\n Name = \"example-hl7-v2-store\",\n Dataset = dataset.Id,\n ParserConfig = new Gcp.Healthcare.Inputs.Hl7StoreParserConfigArgs\n {\n AllowNullHeader = false,\n SegmentTerminator = \"Jw==\",\n Schema = @\"{\n \"\"schemas\"\": [{\n \"\"messageSchemaConfigs\"\": {\n \"\"ADT_A01\"\": {\n \"\"name\"\": \"\"ADT_A01\"\",\n \"\"minOccurs\"\": 1,\n \"\"maxOccurs\"\": 1,\n \"\"members\"\": [{\n \"\"segment\"\": {\n \"\"type\"\": \"\"MSH\"\",\n \"\"minOccurs\"\": 1,\n \"\"maxOccurs\"\": 1\n }\n },\n {\n \"\"segment\"\": {\n \"\"type\"\": \"\"EVN\"\",\n \"\"minOccurs\"\": 1,\n \"\"maxOccurs\"\": 1\n }\n },\n {\n \"\"segment\"\": {\n \"\"type\"\": \"\"PID\"\",\n \"\"minOccurs\"\": 1,\n \"\"maxOccurs\"\": 1\n }\n },\n {\n \"\"segment\"\": {\n \"\"type\"\": \"\"ZPD\"\",\n \"\"minOccurs\"\": 1,\n \"\"maxOccurs\"\": 1\n }\n },\n {\n \"\"segment\"\": {\n \"\"type\"\": \"\"OBX\"\"\n }\n },\n {\n \"\"group\"\": {\n \"\"name\"\": \"\"PROCEDURE\"\",\n \"\"members\"\": [{\n \"\"segment\"\": {\n \"\"type\"\": \"\"PR1\"\",\n \"\"minOccurs\"\": 1,\n \"\"maxOccurs\"\": 1\n }\n },\n {\n \"\"segment\"\": {\n \"\"type\"\": \"\"ROL\"\"\n }\n }\n ]\n }\n },\n {\n \"\"segment\"\": {\n \"\"type\"\": \"\"PDA\"\",\n \"\"maxOccurs\"\": 1\n }\n }\n ]\n }\n }\n }],\n \"\"types\"\": [{\n \"\"type\"\": [{\n \"\"name\"\": \"\"ZPD\"\",\n \"\"primitive\"\": \"\"VARIES\"\"\n }\n\n ]\n }],\n \"\"ignoreMinOccurs\"\": true\n}\n\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/healthcare\"\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\tName: pulumi.String(\"example-dataset\"),\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.NewHl7Store(ctx, \"store\", \u0026healthcare.Hl7StoreArgs{\n\t\t\tName: pulumi.String(\"example-hl7-v2-store\"),\n\t\t\tDataset: dataset.ID(),\n\t\t\tParserConfig: \u0026healthcare.Hl7StoreParserConfigArgs{\n\t\t\t\tAllowNullHeader: pulumi.Bool(false),\n\t\t\t\tSegmentTerminator: pulumi.String(\"Jw==\"),\n\t\t\t\tSchema: pulumi.String(`{\n \"schemas\": [{\n \"messageSchemaConfigs\": {\n \"ADT_A01\": {\n \"name\": \"ADT_A01\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1,\n \"members\": [{\n \"segment\": {\n \"type\": \"MSH\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"EVN\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"PID\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ZPD\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"OBX\"\n }\n },\n {\n \"group\": {\n \"name\": \"PROCEDURE\",\n \"members\": [{\n \"segment\": {\n \"type\": \"PR1\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ROL\"\n }\n }\n ]\n }\n },\n {\n \"segment\": {\n \"type\": \"PDA\",\n \"maxOccurs\": 1\n }\n }\n ]\n }\n }\n }],\n \"types\": [{\n \"type\": [{\n \"name\": \"ZPD\",\n \"primitive\": \"VARIES\"\n }\n\n ]\n }],\n \"ignoreMinOccurs\": true\n}\n`),\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.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.Hl7Store;\nimport com.pulumi.gcp.healthcare.Hl7StoreArgs;\nimport com.pulumi.gcp.healthcare.inputs.Hl7StoreParserConfigArgs;\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 .name(\"example-dataset\")\n .location(\"us-central1\")\n .build());\n\n var store = new Hl7Store(\"store\", Hl7StoreArgs.builder()\n .name(\"example-hl7-v2-store\")\n .dataset(dataset.id())\n .parserConfig(Hl7StoreParserConfigArgs.builder()\n .allowNullHeader(false)\n .segmentTerminator(\"Jw==\")\n .schema(\"\"\"\n{\n \"schemas\": [{\n \"messageSchemaConfigs\": {\n \"ADT_A01\": {\n \"name\": \"ADT_A01\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1,\n \"members\": [{\n \"segment\": {\n \"type\": \"MSH\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"EVN\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"PID\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ZPD\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"OBX\"\n }\n },\n {\n \"group\": {\n \"name\": \"PROCEDURE\",\n \"members\": [{\n \"segment\": {\n \"type\": \"PR1\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ROL\"\n }\n }\n ]\n }\n },\n {\n \"segment\": {\n \"type\": \"PDA\",\n \"maxOccurs\": 1\n }\n }\n ]\n }\n }\n }],\n \"types\": [{\n \"type\": [{\n \"name\": \"ZPD\",\n \"primitive\": \"VARIES\"\n }\n\n ]\n }],\n \"ignoreMinOccurs\": true\n}\n \"\"\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n store:\n type: gcp:healthcare:Hl7Store\n properties:\n name: example-hl7-v2-store\n dataset: ${dataset.id}\n parserConfig:\n allowNullHeader: false\n segmentTerminator: Jw==\n schema: |\n {\n \"schemas\": [{\n \"messageSchemaConfigs\": {\n \"ADT_A01\": {\n \"name\": \"ADT_A01\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1,\n \"members\": [{\n \"segment\": {\n \"type\": \"MSH\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"EVN\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"PID\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ZPD\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"OBX\"\n }\n },\n {\n \"group\": {\n \"name\": \"PROCEDURE\",\n \"members\": [{\n \"segment\": {\n \"type\": \"PR1\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ROL\"\n }\n }\n ]\n }\n },\n {\n \"segment\": {\n \"type\": \"PDA\",\n \"maxOccurs\": 1\n }\n }\n ]\n }\n }\n }],\n \"types\": [{\n \"type\": [{\n \"name\": \"ZPD\",\n \"primitive\": \"VARIES\"\n }\n\n ]\n }],\n \"ignoreMinOccurs\": true\n }\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Hl7 V2 Store Unschematized\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n});\nconst store = new gcp.healthcare.Hl7Store(\"store\", {\n name: \"example-hl7-v2-store\",\n dataset: dataset.id,\n parserConfig: {\n allowNullHeader: false,\n segmentTerminator: \"Jw==\",\n version: \"V2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.healthcare.Dataset(\"dataset\",\n name=\"example-dataset\",\n location=\"us-central1\")\nstore = gcp.healthcare.Hl7Store(\"store\",\n name=\"example-hl7-v2-store\",\n dataset=dataset.id,\n parser_config={\n \"allowNullHeader\": False,\n \"segmentTerminator\": \"Jw==\",\n \"version\": \"V2\",\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 dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n });\n\n var store = new Gcp.Healthcare.Hl7Store(\"store\", new()\n {\n Name = \"example-hl7-v2-store\",\n Dataset = dataset.Id,\n ParserConfig = new Gcp.Healthcare.Inputs.Hl7StoreParserConfigArgs\n {\n AllowNullHeader = false,\n SegmentTerminator = \"Jw==\",\n Version = \"V2\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/healthcare\"\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\tName: pulumi.String(\"example-dataset\"),\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.NewHl7Store(ctx, \"store\", \u0026healthcare.Hl7StoreArgs{\n\t\t\tName: pulumi.String(\"example-hl7-v2-store\"),\n\t\t\tDataset: dataset.ID(),\n\t\t\tParserConfig: \u0026healthcare.Hl7StoreParserConfigArgs{\n\t\t\t\tAllowNullHeader: pulumi.Bool(false),\n\t\t\t\tSegmentTerminator: pulumi.String(\"Jw==\"),\n\t\t\t\tVersion: pulumi.String(\"V2\"),\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.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.Hl7Store;\nimport com.pulumi.gcp.healthcare.Hl7StoreArgs;\nimport com.pulumi.gcp.healthcare.inputs.Hl7StoreParserConfigArgs;\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 .name(\"example-dataset\")\n .location(\"us-central1\")\n .build());\n\n var store = new Hl7Store(\"store\", Hl7StoreArgs.builder()\n .name(\"example-hl7-v2-store\")\n .dataset(dataset.id())\n .parserConfig(Hl7StoreParserConfigArgs.builder()\n .allowNullHeader(false)\n .segmentTerminator(\"Jw==\")\n .version(\"V2\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n store:\n type: gcp:healthcare:Hl7Store\n properties:\n name: example-hl7-v2-store\n dataset: ${dataset.id}\n parserConfig:\n allowNullHeader: false\n segmentTerminator: Jw==\n version: V2\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nHl7V2Store can be imported using any of these accepted formats:\n\n* `{{dataset}}/hl7V2Stores/{{name}}`\n\n* `{{dataset}}/{{name}}`\n\nWhen using the `pulumi import` command, Hl7V2Store can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:healthcare/hl7Store:Hl7Store default {{dataset}}/hl7V2Stores/{{name}}\n```\n\n```sh\n$ pulumi import gcp:healthcare/hl7Store:Hl7Store default {{dataset}}/{{name}}\n```\n\n", + "description": "A Hl7V2Store is a datastore inside a Healthcare dataset that conforms to the FHIR (https://www.hl7.org/hl7V2/STU3/)\nstandard for Healthcare information exchange\n\n\nTo get more information about Hl7V2Store, see:\n\n* [API documentation](https://cloud.google.com/healthcare/docs/reference/rest/v1/projects.locations.datasets.hl7V2Stores)\n* How-to Guides\n * [Creating a HL7v2 Store](https://cloud.google.com/healthcare/docs/how-tos/hl7v2)\n\n## Example Usage\n\n### Healthcare Hl7 V2 Store Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"hl7-v2-notifications\"});\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n});\nconst store = new gcp.healthcare.Hl7Store(\"store\", {\n name: \"example-hl7-v2-store\",\n dataset: dataset.id,\n rejectDuplicateMessage: true,\n notificationConfigs: [{\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\", name=\"hl7-v2-notifications\")\ndataset = gcp.healthcare.Dataset(\"dataset\",\n name=\"example-dataset\",\n location=\"us-central1\")\nstore = gcp.healthcare.Hl7Store(\"store\",\n name=\"example-hl7-v2-store\",\n dataset=dataset.id,\n reject_duplicate_message=True,\n notification_configs=[{\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\", new()\n {\n Name = \"hl7-v2-notifications\",\n });\n\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n });\n\n var store = new Gcp.Healthcare.Hl7Store(\"store\", new()\n {\n Name = \"example-hl7-v2-store\",\n Dataset = dataset.Id,\n RejectDuplicateMessage = true,\n NotificationConfigs = new[]\n {\n new Gcp.Healthcare.Inputs.Hl7StoreNotificationConfigsArgs\n {\n PubsubTopic = topic.Id,\n },\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/v7/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"hl7-v2-notifications\"),\n\t\t})\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\tName: pulumi.String(\"example-dataset\"),\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.NewHl7Store(ctx, \"store\", \u0026healthcare.Hl7StoreArgs{\n\t\t\tName: pulumi.String(\"example-hl7-v2-store\"),\n\t\t\tDataset: dataset.ID(),\n\t\t\tRejectDuplicateMessage: pulumi.Bool(true),\n\t\t\tNotificationConfigs: healthcare.Hl7StoreNotificationConfigsArray{\n\t\t\t\t\u0026healthcare.Hl7StoreNotificationConfigsArgs{\n\t\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\t},\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.pubsub.TopicArgs;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.Hl7Store;\nimport com.pulumi.gcp.healthcare.Hl7StoreArgs;\nimport com.pulumi.gcp.healthcare.inputs.Hl7StoreNotificationConfigsArgs;\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.builder()\n .name(\"hl7-v2-notifications\")\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .name(\"example-dataset\")\n .location(\"us-central1\")\n .build());\n\n var store = new Hl7Store(\"store\", Hl7StoreArgs.builder()\n .name(\"example-hl7-v2-store\")\n .dataset(dataset.id())\n .rejectDuplicateMessage(true)\n .notificationConfigs(Hl7StoreNotificationConfigsArgs.builder()\n .pubsubTopic(topic.id())\n .build())\n .labels(Map.of(\"label1\", \"labelvalue1\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n store:\n type: gcp:healthcare:Hl7Store\n properties:\n name: example-hl7-v2-store\n dataset: ${dataset.id}\n rejectDuplicateMessage: true\n notificationConfigs:\n - pubsubTopic: ${topic.id}\n labels:\n label1: labelvalue1\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: hl7-v2-notifications\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Hl7 V2 Store Parser Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n});\nconst store = new gcp.healthcare.Hl7Store(\"store\", {\n name: \"example-hl7-v2-store\",\n dataset: dataset.id,\n parserConfig: {\n allowNullHeader: false,\n segmentTerminator: \"Jw==\",\n schema: `{\n \"schemas\": [{\n \"messageSchemaConfigs\": {\n \"ADT_A01\": {\n \"name\": \"ADT_A01\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1,\n \"members\": [{\n \"segment\": {\n \"type\": \"MSH\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"EVN\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"PID\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ZPD\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"OBX\"\n }\n },\n {\n \"group\": {\n \"name\": \"PROCEDURE\",\n \"members\": [{\n \"segment\": {\n \"type\": \"PR1\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ROL\"\n }\n }\n ]\n }\n },\n {\n \"segment\": {\n \"type\": \"PDA\",\n \"maxOccurs\": 1\n }\n }\n ]\n }\n }\n }],\n \"types\": [{\n \"type\": [{\n \"name\": \"ZPD\",\n \"primitive\": \"VARIES\"\n }\n\n ]\n }],\n \"ignoreMinOccurs\": true\n}\n`,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.healthcare.Dataset(\"dataset\",\n name=\"example-dataset\",\n location=\"us-central1\")\nstore = gcp.healthcare.Hl7Store(\"store\",\n name=\"example-hl7-v2-store\",\n dataset=dataset.id,\n parser_config={\n \"allow_null_header\": False,\n \"segment_terminator\": \"Jw==\",\n \"schema\": \"\"\"{\n \"schemas\": [{\n \"messageSchemaConfigs\": {\n \"ADT_A01\": {\n \"name\": \"ADT_A01\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1,\n \"members\": [{\n \"segment\": {\n \"type\": \"MSH\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"EVN\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"PID\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ZPD\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"OBX\"\n }\n },\n {\n \"group\": {\n \"name\": \"PROCEDURE\",\n \"members\": [{\n \"segment\": {\n \"type\": \"PR1\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ROL\"\n }\n }\n ]\n }\n },\n {\n \"segment\": {\n \"type\": \"PDA\",\n \"maxOccurs\": 1\n }\n }\n ]\n }\n }\n }],\n \"types\": [{\n \"type\": [{\n \"name\": \"ZPD\",\n \"primitive\": \"VARIES\"\n }\n\n ]\n }],\n \"ignoreMinOccurs\": true\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 dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n });\n\n var store = new Gcp.Healthcare.Hl7Store(\"store\", new()\n {\n Name = \"example-hl7-v2-store\",\n Dataset = dataset.Id,\n ParserConfig = new Gcp.Healthcare.Inputs.Hl7StoreParserConfigArgs\n {\n AllowNullHeader = false,\n SegmentTerminator = \"Jw==\",\n Schema = @\"{\n \"\"schemas\"\": [{\n \"\"messageSchemaConfigs\"\": {\n \"\"ADT_A01\"\": {\n \"\"name\"\": \"\"ADT_A01\"\",\n \"\"minOccurs\"\": 1,\n \"\"maxOccurs\"\": 1,\n \"\"members\"\": [{\n \"\"segment\"\": {\n \"\"type\"\": \"\"MSH\"\",\n \"\"minOccurs\"\": 1,\n \"\"maxOccurs\"\": 1\n }\n },\n {\n \"\"segment\"\": {\n \"\"type\"\": \"\"EVN\"\",\n \"\"minOccurs\"\": 1,\n \"\"maxOccurs\"\": 1\n }\n },\n {\n \"\"segment\"\": {\n \"\"type\"\": \"\"PID\"\",\n \"\"minOccurs\"\": 1,\n \"\"maxOccurs\"\": 1\n }\n },\n {\n \"\"segment\"\": {\n \"\"type\"\": \"\"ZPD\"\",\n \"\"minOccurs\"\": 1,\n \"\"maxOccurs\"\": 1\n }\n },\n {\n \"\"segment\"\": {\n \"\"type\"\": \"\"OBX\"\"\n }\n },\n {\n \"\"group\"\": {\n \"\"name\"\": \"\"PROCEDURE\"\",\n \"\"members\"\": [{\n \"\"segment\"\": {\n \"\"type\"\": \"\"PR1\"\",\n \"\"minOccurs\"\": 1,\n \"\"maxOccurs\"\": 1\n }\n },\n {\n \"\"segment\"\": {\n \"\"type\"\": \"\"ROL\"\"\n }\n }\n ]\n }\n },\n {\n \"\"segment\"\": {\n \"\"type\"\": \"\"PDA\"\",\n \"\"maxOccurs\"\": 1\n }\n }\n ]\n }\n }\n }],\n \"\"types\"\": [{\n \"\"type\"\": [{\n \"\"name\"\": \"\"ZPD\"\",\n \"\"primitive\"\": \"\"VARIES\"\"\n }\n\n ]\n }],\n \"\"ignoreMinOccurs\"\": true\n}\n\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/healthcare\"\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\tName: pulumi.String(\"example-dataset\"),\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.NewHl7Store(ctx, \"store\", \u0026healthcare.Hl7StoreArgs{\n\t\t\tName: pulumi.String(\"example-hl7-v2-store\"),\n\t\t\tDataset: dataset.ID(),\n\t\t\tParserConfig: \u0026healthcare.Hl7StoreParserConfigArgs{\n\t\t\t\tAllowNullHeader: pulumi.Bool(false),\n\t\t\t\tSegmentTerminator: pulumi.String(\"Jw==\"),\n\t\t\t\tSchema: pulumi.String(`{\n \"schemas\": [{\n \"messageSchemaConfigs\": {\n \"ADT_A01\": {\n \"name\": \"ADT_A01\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1,\n \"members\": [{\n \"segment\": {\n \"type\": \"MSH\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"EVN\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"PID\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ZPD\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"OBX\"\n }\n },\n {\n \"group\": {\n \"name\": \"PROCEDURE\",\n \"members\": [{\n \"segment\": {\n \"type\": \"PR1\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ROL\"\n }\n }\n ]\n }\n },\n {\n \"segment\": {\n \"type\": \"PDA\",\n \"maxOccurs\": 1\n }\n }\n ]\n }\n }\n }],\n \"types\": [{\n \"type\": [{\n \"name\": \"ZPD\",\n \"primitive\": \"VARIES\"\n }\n\n ]\n }],\n \"ignoreMinOccurs\": true\n}\n`),\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.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.Hl7Store;\nimport com.pulumi.gcp.healthcare.Hl7StoreArgs;\nimport com.pulumi.gcp.healthcare.inputs.Hl7StoreParserConfigArgs;\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 .name(\"example-dataset\")\n .location(\"us-central1\")\n .build());\n\n var store = new Hl7Store(\"store\", Hl7StoreArgs.builder()\n .name(\"example-hl7-v2-store\")\n .dataset(dataset.id())\n .parserConfig(Hl7StoreParserConfigArgs.builder()\n .allowNullHeader(false)\n .segmentTerminator(\"Jw==\")\n .schema(\"\"\"\n{\n \"schemas\": [{\n \"messageSchemaConfigs\": {\n \"ADT_A01\": {\n \"name\": \"ADT_A01\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1,\n \"members\": [{\n \"segment\": {\n \"type\": \"MSH\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"EVN\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"PID\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ZPD\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"OBX\"\n }\n },\n {\n \"group\": {\n \"name\": \"PROCEDURE\",\n \"members\": [{\n \"segment\": {\n \"type\": \"PR1\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ROL\"\n }\n }\n ]\n }\n },\n {\n \"segment\": {\n \"type\": \"PDA\",\n \"maxOccurs\": 1\n }\n }\n ]\n }\n }\n }],\n \"types\": [{\n \"type\": [{\n \"name\": \"ZPD\",\n \"primitive\": \"VARIES\"\n }\n\n ]\n }],\n \"ignoreMinOccurs\": true\n}\n \"\"\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n store:\n type: gcp:healthcare:Hl7Store\n properties:\n name: example-hl7-v2-store\n dataset: ${dataset.id}\n parserConfig:\n allowNullHeader: false\n segmentTerminator: Jw==\n schema: |\n {\n \"schemas\": [{\n \"messageSchemaConfigs\": {\n \"ADT_A01\": {\n \"name\": \"ADT_A01\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1,\n \"members\": [{\n \"segment\": {\n \"type\": \"MSH\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"EVN\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"PID\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ZPD\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"OBX\"\n }\n },\n {\n \"group\": {\n \"name\": \"PROCEDURE\",\n \"members\": [{\n \"segment\": {\n \"type\": \"PR1\",\n \"minOccurs\": 1,\n \"maxOccurs\": 1\n }\n },\n {\n \"segment\": {\n \"type\": \"ROL\"\n }\n }\n ]\n }\n },\n {\n \"segment\": {\n \"type\": \"PDA\",\n \"maxOccurs\": 1\n }\n }\n ]\n }\n }\n }],\n \"types\": [{\n \"type\": [{\n \"name\": \"ZPD\",\n \"primitive\": \"VARIES\"\n }\n\n ]\n }],\n \"ignoreMinOccurs\": true\n }\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Hl7 V2 Store Unschematized\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n});\nconst store = new gcp.healthcare.Hl7Store(\"store\", {\n name: \"example-hl7-v2-store\",\n dataset: dataset.id,\n parserConfig: {\n allowNullHeader: false,\n segmentTerminator: \"Jw==\",\n version: \"V2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.healthcare.Dataset(\"dataset\",\n name=\"example-dataset\",\n location=\"us-central1\")\nstore = gcp.healthcare.Hl7Store(\"store\",\n name=\"example-hl7-v2-store\",\n dataset=dataset.id,\n parser_config={\n \"allow_null_header\": False,\n \"segment_terminator\": \"Jw==\",\n \"version\": \"V2\",\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 dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n });\n\n var store = new Gcp.Healthcare.Hl7Store(\"store\", new()\n {\n Name = \"example-hl7-v2-store\",\n Dataset = dataset.Id,\n ParserConfig = new Gcp.Healthcare.Inputs.Hl7StoreParserConfigArgs\n {\n AllowNullHeader = false,\n SegmentTerminator = \"Jw==\",\n Version = \"V2\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/healthcare\"\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\tName: pulumi.String(\"example-dataset\"),\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.NewHl7Store(ctx, \"store\", \u0026healthcare.Hl7StoreArgs{\n\t\t\tName: pulumi.String(\"example-hl7-v2-store\"),\n\t\t\tDataset: dataset.ID(),\n\t\t\tParserConfig: \u0026healthcare.Hl7StoreParserConfigArgs{\n\t\t\t\tAllowNullHeader: pulumi.Bool(false),\n\t\t\t\tSegmentTerminator: pulumi.String(\"Jw==\"),\n\t\t\t\tVersion: pulumi.String(\"V2\"),\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.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.Hl7Store;\nimport com.pulumi.gcp.healthcare.Hl7StoreArgs;\nimport com.pulumi.gcp.healthcare.inputs.Hl7StoreParserConfigArgs;\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 .name(\"example-dataset\")\n .location(\"us-central1\")\n .build());\n\n var store = new Hl7Store(\"store\", Hl7StoreArgs.builder()\n .name(\"example-hl7-v2-store\")\n .dataset(dataset.id())\n .parserConfig(Hl7StoreParserConfigArgs.builder()\n .allowNullHeader(false)\n .segmentTerminator(\"Jw==\")\n .version(\"V2\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n store:\n type: gcp:healthcare:Hl7Store\n properties:\n name: example-hl7-v2-store\n dataset: ${dataset.id}\n parserConfig:\n allowNullHeader: false\n segmentTerminator: Jw==\n version: V2\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nHl7V2Store can be imported using any of these accepted formats:\n\n* `{{dataset}}/hl7V2Stores/{{name}}`\n\n* `{{dataset}}/{{name}}`\n\nWhen using the `pulumi import` command, Hl7V2Store can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:healthcare/hl7Store:Hl7Store default {{dataset}}/hl7V2Stores/{{name}}\n```\n\n```sh\n$ pulumi import gcp:healthcare/hl7Store:Hl7Store default {{dataset}}/{{name}}\n```\n\n", "properties": { "dataset": { "type": "string", @@ -201402,7 +201402,7 @@ } }, "gcp:iam/accessBoundaryPolicy:AccessBoundaryPolicy": { - "description": "Represents a collection of access boundary policies to apply to a given resource.\n**NOTE**: This is a private feature and users should contact GCP support\nif they would like to test it.\n\n\n\n## Example Usage\n\n### Iam Access Boundary Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = new gcp.organizations.Project(\"project\", {\n projectId: \"my-project\",\n name: \"my-project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: project.orgId.apply(orgId =\u003e `organizations/${orgId}`),\n title: \"my policy\",\n});\nconst test_access = new gcp.accesscontextmanager.AccessLevel(\"test-access\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\nconst example = new gcp.iam.AccessBoundaryPolicy(\"example\", {\n parent: std.urlencodeOutput({\n input: pulumi.interpolate`cloudresourcemanager.googleapis.com/projects/${project.projectId}`,\n }).apply(invoke =\u003e invoke.result),\n name: \"my-ab-policy\",\n displayName: \"My AB policy\",\n rules: [{\n description: \"AB rule\",\n accessBoundaryRule: {\n availableResource: \"*\",\n availablePermissions: [\"*\"],\n availabilityCondition: {\n title: \"Access level expr\",\n expression: pulumi.all([project.orgId, test_access.name]).apply(([orgId, name]) =\u003e `request.matchAccessLevels('${orgId}', ['${name}'])`),\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.Project(\"project\",\n project_id=\"my-project\",\n name=\"my-project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=project.org_id.apply(lambda org_id: f\"organizations/{org_id}\"),\n title=\"my policy\")\ntest_access = gcp.accesscontextmanager.AccessLevel(\"test-access\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"devicePolicy\": {\n \"requireScreenLock\": True,\n \"osConstraints\": [{\n \"osType\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n })\nexample = gcp.iam.AccessBoundaryPolicy(\"example\",\n parent=std.urlencode_output(input=project.project_id.apply(lambda project_id: f\"cloudresourcemanager.googleapis.com/projects/{project_id}\")).apply(lambda invoke: invoke.result),\n name=\"my-ab-policy\",\n display_name=\"My AB policy\",\n rules=[{\n \"description\": \"AB rule\",\n \"accessBoundaryRule\": {\n \"availableResource\": \"*\",\n \"availablePermissions\": [\"*\"],\n \"availabilityCondition\": {\n \"title\": \"Access level expr\",\n \"expression\": pulumi.Output.all(project.org_id, test_access.name).apply(lambda org_id, name: f\"request.matchAccessLevels('{org_id}', ['{name}'])\"),\n },\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = new Gcp.Organizations.Project(\"project\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = project.OrgId.Apply(orgId =\u003e $\"organizations/{orgId}\"),\n Title = \"my policy\",\n });\n\n var test_access = new Gcp.AccessContextManager.AccessLevel(\"test-access\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n });\n\n var example = new Gcp.Iam.AccessBoundaryPolicy(\"example\", new()\n {\n Parent = Std.Urlencode.Invoke(new()\n {\n Input = project.ProjectId.Apply(projectId =\u003e $\"cloudresourcemanager.googleapis.com/projects/{projectId}\"),\n }).Apply(invoke =\u003e invoke.Result),\n Name = \"my-ab-policy\",\n DisplayName = \"My AB policy\",\n Rules = new[]\n {\n new Gcp.Iam.Inputs.AccessBoundaryPolicyRuleArgs\n {\n Description = \"AB rule\",\n AccessBoundaryRule = new Gcp.Iam.Inputs.AccessBoundaryPolicyRuleAccessBoundaryRuleArgs\n {\n AvailableResource = \"*\",\n AvailablePermissions = new[]\n {\n \"*\",\n },\n AvailabilityCondition = new Gcp.Iam.Inputs.AccessBoundaryPolicyRuleAccessBoundaryRuleAvailabilityConditionArgs\n {\n Title = \"Access level expr\",\n Expression = Output.Tuple(project.OrgId, test_access.Name).Apply(values =\u003e\n {\n var orgId = values.Item1;\n var name = values.Item2;\n return $\"request.matchAccessLevels('{orgId}', ['{name}'])\";\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/v7/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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.NewProject(ctx, \"project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-project\"),\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 = accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: project.OrgId.ApplyT(func(orgId *string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"organizations/%v\", orgId), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevel(ctx, \"test-access\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\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 = iam.NewAccessBoundaryPolicy(ctx, \"example\", \u0026iam.AccessBoundaryPolicyArgs{\n\t\t\tParent: std.UrlencodeOutput(ctx, std.UrlencodeOutputArgs{\n\t\t\t\tInput: project.ProjectId.ApplyT(func(projectId string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"cloudresourcemanager.googleapis.com/projects/%v\", projectId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t}, nil).ApplyT(func(invoke std.UrlencodeResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\tName: pulumi.String(\"my-ab-policy\"),\n\t\t\tDisplayName: pulumi.String(\"My AB policy\"),\n\t\t\tRules: iam.AccessBoundaryPolicyRuleArray{\n\t\t\t\t\u0026iam.AccessBoundaryPolicyRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"AB rule\"),\n\t\t\t\t\tAccessBoundaryRule: \u0026iam.AccessBoundaryPolicyRuleAccessBoundaryRuleArgs{\n\t\t\t\t\t\tAvailableResource: pulumi.String(\"*\"),\n\t\t\t\t\t\tAvailablePermissions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAvailabilityCondition: \u0026iam.AccessBoundaryPolicyRuleAccessBoundaryRuleAvailabilityConditionArgs{\n\t\t\t\t\t\t\tTitle: pulumi.String(\"Access level expr\"),\n\t\t\t\t\t\t\tExpression: pulumi.All(project.OrgId, test_access.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\t\t\torgId := _args[0].(*string)\n\t\t\t\t\t\t\t\tname := _args[1].(string)\n\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"request.matchAccessLevels('%v', ['%v'])\", orgId, name), nil\n\t\t\t\t\t\t\t}).(pulumi.StringOutput),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport com.pulumi.gcp.iam.AccessBoundaryPolicy;\nimport com.pulumi.gcp.iam.AccessBoundaryPolicyArgs;\nimport com.pulumi.gcp.iam.inputs.AccessBoundaryPolicyRuleArgs;\nimport com.pulumi.gcp.iam.inputs.AccessBoundaryPolicyRuleAccessBoundaryRuleArgs;\nimport com.pulumi.gcp.iam.inputs.AccessBoundaryPolicyRuleAccessBoundaryRuleAvailabilityConditionArgs;\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 project = new Project(\"project\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(project.orgId().applyValue(orgId -\u003e String.format(\"organizations/%s\", orgId)))\n .title(\"my policy\")\n .build());\n\n var test_access = new AccessLevel(\"test-access\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n var example = new AccessBoundaryPolicy(\"example\", AccessBoundaryPolicyArgs.builder()\n .parent(StdFunctions.urlencode().applyValue(invoke -\u003e invoke.result()))\n .name(\"my-ab-policy\")\n .displayName(\"My AB policy\")\n .rules(AccessBoundaryPolicyRuleArgs.builder()\n .description(\"AB rule\")\n .accessBoundaryRule(AccessBoundaryPolicyRuleAccessBoundaryRuleArgs.builder()\n .availableResource(\"*\")\n .availablePermissions(\"*\")\n .availabilityCondition(AccessBoundaryPolicyRuleAccessBoundaryRuleAvailabilityConditionArgs.builder()\n .title(\"Access level expr\")\n .expression(Output.tuple(project.orgId(), test_access.name()).applyValue(values -\u003e {\n var orgId = values.t1;\n var name = values.t2;\n return String.format(\"request.matchAccessLevels('%s', ['%s'])\", orgId,name);\n }))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:organizations:Project\n properties:\n projectId: my-project\n name: my-project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n test-access:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/${project.orgId}\n title: my policy\n example:\n type: gcp:iam:AccessBoundaryPolicy\n properties:\n parent:\n fn::invoke:\n Function: std:urlencode\n Arguments:\n input: cloudresourcemanager.googleapis.com/projects/${project.projectId}\n Return: result\n name: my-ab-policy\n displayName: My AB policy\n rules:\n - description: AB rule\n accessBoundaryRule:\n availableResource: '*'\n availablePermissions:\n - '*'\n availabilityCondition:\n title: Access level expr\n expression: request.matchAccessLevels('${project.orgId}', ['${[\"test-access\"].name}'])\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAccessBoundaryPolicy can be imported using any of these accepted formats:\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, AccessBoundaryPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:iam/accessBoundaryPolicy:AccessBoundaryPolicy default {{parent}}/{{name}}\n```\n\n", + "description": "Represents a collection of access boundary policies to apply to a given resource.\n**NOTE**: This is a private feature and users should contact GCP support\nif they would like to test it.\n\n\n\n## Example Usage\n\n### Iam Access Boundary Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = new gcp.organizations.Project(\"project\", {\n projectId: \"my-project\",\n name: \"my-project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: project.orgId.apply(orgId =\u003e `organizations/${orgId}`),\n title: \"my policy\",\n});\nconst test_access = new gcp.accesscontextmanager.AccessLevel(\"test-access\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\nconst example = new gcp.iam.AccessBoundaryPolicy(\"example\", {\n parent: std.urlencodeOutput({\n input: pulumi.interpolate`cloudresourcemanager.googleapis.com/projects/${project.projectId}`,\n }).apply(invoke =\u003e invoke.result),\n name: \"my-ab-policy\",\n displayName: \"My AB policy\",\n rules: [{\n description: \"AB rule\",\n accessBoundaryRule: {\n availableResource: \"*\",\n availablePermissions: [\"*\"],\n availabilityCondition: {\n title: \"Access level expr\",\n expression: pulumi.all([project.orgId, test_access.name]).apply(([orgId, name]) =\u003e `request.matchAccessLevels('${orgId}', ['${name}'])`),\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.Project(\"project\",\n project_id=\"my-project\",\n name=\"my-project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=project.org_id.apply(lambda org_id: f\"organizations/{org_id}\"),\n title=\"my policy\")\ntest_access = gcp.accesscontextmanager.AccessLevel(\"test-access\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n })\nexample = gcp.iam.AccessBoundaryPolicy(\"example\",\n parent=std.urlencode_output(input=project.project_id.apply(lambda project_id: f\"cloudresourcemanager.googleapis.com/projects/{project_id}\")).apply(lambda invoke: invoke.result),\n name=\"my-ab-policy\",\n display_name=\"My AB policy\",\n rules=[{\n \"description\": \"AB rule\",\n \"access_boundary_rule\": {\n \"available_resource\": \"*\",\n \"available_permissions\": [\"*\"],\n \"availability_condition\": {\n \"title\": \"Access level expr\",\n \"expression\": pulumi.Output.all(project.org_id, test_access.name).apply(lambda org_id, name: f\"request.matchAccessLevels('{org_id}', ['{name}'])\"),\n },\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = new Gcp.Organizations.Project(\"project\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = project.OrgId.Apply(orgId =\u003e $\"organizations/{orgId}\"),\n Title = \"my policy\",\n });\n\n var test_access = new Gcp.AccessContextManager.AccessLevel(\"test-access\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n });\n\n var example = new Gcp.Iam.AccessBoundaryPolicy(\"example\", new()\n {\n Parent = Std.Urlencode.Invoke(new()\n {\n Input = project.ProjectId.Apply(projectId =\u003e $\"cloudresourcemanager.googleapis.com/projects/{projectId}\"),\n }).Apply(invoke =\u003e invoke.Result),\n Name = \"my-ab-policy\",\n DisplayName = \"My AB policy\",\n Rules = new[]\n {\n new Gcp.Iam.Inputs.AccessBoundaryPolicyRuleArgs\n {\n Description = \"AB rule\",\n AccessBoundaryRule = new Gcp.Iam.Inputs.AccessBoundaryPolicyRuleAccessBoundaryRuleArgs\n {\n AvailableResource = \"*\",\n AvailablePermissions = new[]\n {\n \"*\",\n },\n AvailabilityCondition = new Gcp.Iam.Inputs.AccessBoundaryPolicyRuleAccessBoundaryRuleAvailabilityConditionArgs\n {\n Title = \"Access level expr\",\n Expression = Output.Tuple(project.OrgId, test_access.Name).Apply(values =\u003e\n {\n var orgId = values.Item1;\n var name = values.Item2;\n return $\"request.matchAccessLevels('{orgId}', ['{name}'])\";\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/v7/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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.NewProject(ctx, \"project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-project\"),\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 = accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: project.OrgId.ApplyT(func(orgId *string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"organizations/%v\", orgId), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevel(ctx, \"test-access\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\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 = iam.NewAccessBoundaryPolicy(ctx, \"example\", \u0026iam.AccessBoundaryPolicyArgs{\n\t\t\tParent: pulumi.String(std.UrlencodeOutput(ctx, std.UrlencodeOutputArgs{\n\t\t\t\tInput: project.ProjectId.ApplyT(func(projectId string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"cloudresourcemanager.googleapis.com/projects/%v\", projectId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t}, nil).ApplyT(func(invoke std.UrlencodeResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tName: pulumi.String(\"my-ab-policy\"),\n\t\t\tDisplayName: pulumi.String(\"My AB policy\"),\n\t\t\tRules: iam.AccessBoundaryPolicyRuleArray{\n\t\t\t\t\u0026iam.AccessBoundaryPolicyRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"AB rule\"),\n\t\t\t\t\tAccessBoundaryRule: \u0026iam.AccessBoundaryPolicyRuleAccessBoundaryRuleArgs{\n\t\t\t\t\t\tAvailableResource: pulumi.String(\"*\"),\n\t\t\t\t\t\tAvailablePermissions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAvailabilityCondition: \u0026iam.AccessBoundaryPolicyRuleAccessBoundaryRuleAvailabilityConditionArgs{\n\t\t\t\t\t\t\tTitle: pulumi.String(\"Access level expr\"),\n\t\t\t\t\t\t\tExpression: pulumi.All(project.OrgId, test_access.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\t\t\torgId := _args[0].(*string)\n\t\t\t\t\t\t\t\tname := _args[1].(string)\n\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"request.matchAccessLevels('%v', ['%v'])\", orgId, name), nil\n\t\t\t\t\t\t\t}).(pulumi.StringOutput),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport com.pulumi.gcp.iam.AccessBoundaryPolicy;\nimport com.pulumi.gcp.iam.AccessBoundaryPolicyArgs;\nimport com.pulumi.gcp.iam.inputs.AccessBoundaryPolicyRuleArgs;\nimport com.pulumi.gcp.iam.inputs.AccessBoundaryPolicyRuleAccessBoundaryRuleArgs;\nimport com.pulumi.gcp.iam.inputs.AccessBoundaryPolicyRuleAccessBoundaryRuleAvailabilityConditionArgs;\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 project = new Project(\"project\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(project.orgId().applyValue(orgId -\u003e String.format(\"organizations/%s\", orgId)))\n .title(\"my policy\")\n .build());\n\n var test_access = new AccessLevel(\"test-access\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n var example = new AccessBoundaryPolicy(\"example\", AccessBoundaryPolicyArgs.builder()\n .parent(StdFunctions.urlencode().applyValue(invoke -\u003e invoke.result()))\n .name(\"my-ab-policy\")\n .displayName(\"My AB policy\")\n .rules(AccessBoundaryPolicyRuleArgs.builder()\n .description(\"AB rule\")\n .accessBoundaryRule(AccessBoundaryPolicyRuleAccessBoundaryRuleArgs.builder()\n .availableResource(\"*\")\n .availablePermissions(\"*\")\n .availabilityCondition(AccessBoundaryPolicyRuleAccessBoundaryRuleAvailabilityConditionArgs.builder()\n .title(\"Access level expr\")\n .expression(Output.tuple(project.orgId(), test_access.name()).applyValue(values -\u003e {\n var orgId = values.t1;\n var name = values.t2;\n return String.format(\"request.matchAccessLevels('%s', ['%s'])\", orgId,name);\n }))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:organizations:Project\n properties:\n projectId: my-project\n name: my-project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n test-access:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/${project.orgId}\n title: my policy\n example:\n type: gcp:iam:AccessBoundaryPolicy\n properties:\n parent:\n fn::invoke:\n Function: std:urlencode\n Arguments:\n input: cloudresourcemanager.googleapis.com/projects/${project.projectId}\n Return: result\n name: my-ab-policy\n displayName: My AB policy\n rules:\n - description: AB rule\n accessBoundaryRule:\n availableResource: '*'\n availablePermissions:\n - '*'\n availabilityCondition:\n title: Access level expr\n expression: request.matchAccessLevels('${project.orgId}', ['${[\"test-access\"].name}'])\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAccessBoundaryPolicy can be imported using any of these accepted formats:\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, AccessBoundaryPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:iam/accessBoundaryPolicy:AccessBoundaryPolicy default {{parent}}/{{name}}\n```\n\n", "properties": { "displayName": { "type": "string", @@ -201494,7 +201494,7 @@ } }, "gcp:iam/denyPolicy:DenyPolicy": { - "description": "Represents a collection of denial policies to apply to a given resource.\n\n\nTo get more information about DenyPolicy, see:\n\n* [API documentation](https://cloud.google.com/iam/docs/reference/rest/v2/policies)\n* How-to Guides\n * [Permissions supported in deny policies](https://cloud.google.com/iam/docs/deny-permissions-support)\n\n## Example Usage\n\n### Iam Deny Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = new gcp.organizations.Project(\"project\", {\n projectId: \"my-project\",\n name: \"my-project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst test_account = new gcp.serviceaccount.Account(\"test-account\", {\n accountId: \"svc-acc\",\n displayName: \"Test Service Account\",\n project: project.projectId,\n});\nconst example = new gcp.iam.DenyPolicy(\"example\", {\n parent: std.urlencodeOutput({\n input: pulumi.interpolate`cloudresourcemanager.googleapis.com/projects/${project.projectId}`,\n }).apply(invoke =\u003e invoke.result),\n name: \"my-deny-policy\",\n displayName: \"A deny rule\",\n rules: [\n {\n description: \"First rule\",\n denyRule: {\n deniedPrincipals: [\"principalSet://goog/public:all\"],\n denialCondition: {\n title: \"Some expr\",\n expression: \"!resource.matchTag('12345678/env', 'test')\",\n },\n deniedPermissions: [\"cloudresourcemanager.googleapis.com/projects.update\"],\n },\n },\n {\n description: \"Second rule\",\n denyRule: {\n deniedPrincipals: [\"principalSet://goog/public:all\"],\n denialCondition: {\n title: \"Some expr\",\n expression: \"!resource.matchTag('12345678/env', 'test')\",\n },\n deniedPermissions: [\"cloudresourcemanager.googleapis.com/projects.update\"],\n exceptionPrincipals: [pulumi.interpolate`principal://iam.googleapis.com/projects/-/serviceAccounts/${test_account.email}`],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.Project(\"project\",\n project_id=\"my-project\",\n name=\"my-project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\ntest_account = gcp.serviceaccount.Account(\"test-account\",\n account_id=\"svc-acc\",\n display_name=\"Test Service Account\",\n project=project.project_id)\nexample = gcp.iam.DenyPolicy(\"example\",\n parent=std.urlencode_output(input=project.project_id.apply(lambda project_id: f\"cloudresourcemanager.googleapis.com/projects/{project_id}\")).apply(lambda invoke: invoke.result),\n name=\"my-deny-policy\",\n display_name=\"A deny rule\",\n rules=[\n {\n \"description\": \"First rule\",\n \"denyRule\": {\n \"deniedPrincipals\": [\"principalSet://goog/public:all\"],\n \"denialCondition\": {\n \"title\": \"Some expr\",\n \"expression\": \"!resource.matchTag('12345678/env', 'test')\",\n },\n \"deniedPermissions\": [\"cloudresourcemanager.googleapis.com/projects.update\"],\n },\n },\n {\n \"description\": \"Second rule\",\n \"denyRule\": {\n \"deniedPrincipals\": [\"principalSet://goog/public:all\"],\n \"denialCondition\": {\n \"title\": \"Some expr\",\n \"expression\": \"!resource.matchTag('12345678/env', 'test')\",\n },\n \"deniedPermissions\": [\"cloudresourcemanager.googleapis.com/projects.update\"],\n \"exceptionPrincipals\": [test_account.email.apply(lambda email: f\"principal://iam.googleapis.com/projects/-/serviceAccounts/{email}\")],\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = new Gcp.Organizations.Project(\"project\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var test_account = new Gcp.ServiceAccount.Account(\"test-account\", new()\n {\n AccountId = \"svc-acc\",\n DisplayName = \"Test Service Account\",\n Project = project.ProjectId,\n });\n\n var example = new Gcp.Iam.DenyPolicy(\"example\", new()\n {\n Parent = Std.Urlencode.Invoke(new()\n {\n Input = project.ProjectId.Apply(projectId =\u003e $\"cloudresourcemanager.googleapis.com/projects/{projectId}\"),\n }).Apply(invoke =\u003e invoke.Result),\n Name = \"my-deny-policy\",\n DisplayName = \"A deny rule\",\n Rules = new[]\n {\n new Gcp.Iam.Inputs.DenyPolicyRuleArgs\n {\n Description = \"First rule\",\n DenyRule = new Gcp.Iam.Inputs.DenyPolicyRuleDenyRuleArgs\n {\n DeniedPrincipals = new[]\n {\n \"principalSet://goog/public:all\",\n },\n DenialCondition = new Gcp.Iam.Inputs.DenyPolicyRuleDenyRuleDenialConditionArgs\n {\n Title = \"Some expr\",\n Expression = \"!resource.matchTag('12345678/env', 'test')\",\n },\n DeniedPermissions = new[]\n {\n \"cloudresourcemanager.googleapis.com/projects.update\",\n },\n },\n },\n new Gcp.Iam.Inputs.DenyPolicyRuleArgs\n {\n Description = \"Second rule\",\n DenyRule = new Gcp.Iam.Inputs.DenyPolicyRuleDenyRuleArgs\n {\n DeniedPrincipals = new[]\n {\n \"principalSet://goog/public:all\",\n },\n DenialCondition = new Gcp.Iam.Inputs.DenyPolicyRuleDenyRuleDenialConditionArgs\n {\n Title = \"Some expr\",\n Expression = \"!resource.matchTag('12345678/env', 'test')\",\n },\n DeniedPermissions = new[]\n {\n \"cloudresourcemanager.googleapis.com/projects.update\",\n },\n ExceptionPrincipals = new[]\n {\n test_account.Email.Apply(email =\u003e $\"principal://iam.googleapis.com/projects/-/serviceAccounts/{email}\"),\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/v7/go/gcp/iam\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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.NewProject(ctx, \"project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-project\"),\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 = serviceaccount.NewAccount(ctx, \"test-account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"svc-acc\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t\tProject: project.ProjectId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewDenyPolicy(ctx, \"example\", \u0026iam.DenyPolicyArgs{\n\t\t\tParent: std.UrlencodeOutput(ctx, std.UrlencodeOutputArgs{\n\t\t\t\tInput: project.ProjectId.ApplyT(func(projectId string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"cloudresourcemanager.googleapis.com/projects/%v\", projectId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t}, nil).ApplyT(func(invoke std.UrlencodeResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\tName: pulumi.String(\"my-deny-policy\"),\n\t\t\tDisplayName: pulumi.String(\"A deny rule\"),\n\t\t\tRules: iam.DenyPolicyRuleArray{\n\t\t\t\t\u0026iam.DenyPolicyRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"First rule\"),\n\t\t\t\t\tDenyRule: \u0026iam.DenyPolicyRuleDenyRuleArgs{\n\t\t\t\t\t\tDeniedPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"principalSet://goog/public:all\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDenialCondition: \u0026iam.DenyPolicyRuleDenyRuleDenialConditionArgs{\n\t\t\t\t\t\t\tTitle: pulumi.String(\"Some expr\"),\n\t\t\t\t\t\t\tExpression: pulumi.String(\"!resource.matchTag('12345678/env', 'test')\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDeniedPermissions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"cloudresourcemanager.googleapis.com/projects.update\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026iam.DenyPolicyRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"Second rule\"),\n\t\t\t\t\tDenyRule: \u0026iam.DenyPolicyRuleDenyRuleArgs{\n\t\t\t\t\t\tDeniedPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"principalSet://goog/public:all\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDenialCondition: \u0026iam.DenyPolicyRuleDenyRuleDenialConditionArgs{\n\t\t\t\t\t\t\tTitle: pulumi.String(\"Some expr\"),\n\t\t\t\t\t\t\tExpression: pulumi.String(\"!resource.matchTag('12345678/env', 'test')\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDeniedPermissions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"cloudresourcemanager.googleapis.com/projects.update\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExceptionPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\ttest_account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"principal://iam.googleapis.com/projects/-/serviceAccounts/%v\", email), nil\n\t\t\t\t\t\t\t}).(pulumi.StringOutput),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.iam.DenyPolicy;\nimport com.pulumi.gcp.iam.DenyPolicyArgs;\nimport com.pulumi.gcp.iam.inputs.DenyPolicyRuleArgs;\nimport com.pulumi.gcp.iam.inputs.DenyPolicyRuleDenyRuleArgs;\nimport com.pulumi.gcp.iam.inputs.DenyPolicyRuleDenyRuleDenialConditionArgs;\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 project = new Project(\"project\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n var test_account = new Account(\"test-account\", AccountArgs.builder()\n .accountId(\"svc-acc\")\n .displayName(\"Test Service Account\")\n .project(project.projectId())\n .build());\n\n var example = new DenyPolicy(\"example\", DenyPolicyArgs.builder()\n .parent(StdFunctions.urlencode().applyValue(invoke -\u003e invoke.result()))\n .name(\"my-deny-policy\")\n .displayName(\"A deny rule\")\n .rules( \n DenyPolicyRuleArgs.builder()\n .description(\"First rule\")\n .denyRule(DenyPolicyRuleDenyRuleArgs.builder()\n .deniedPrincipals(\"principalSet://goog/public:all\")\n .denialCondition(DenyPolicyRuleDenyRuleDenialConditionArgs.builder()\n .title(\"Some expr\")\n .expression(\"!resource.matchTag('12345678/env', 'test')\")\n .build())\n .deniedPermissions(\"cloudresourcemanager.googleapis.com/projects.update\")\n .build())\n .build(),\n DenyPolicyRuleArgs.builder()\n .description(\"Second rule\")\n .denyRule(DenyPolicyRuleDenyRuleArgs.builder()\n .deniedPrincipals(\"principalSet://goog/public:all\")\n .denialCondition(DenyPolicyRuleDenyRuleDenialConditionArgs.builder()\n .title(\"Some expr\")\n .expression(\"!resource.matchTag('12345678/env', 'test')\")\n .build())\n .deniedPermissions(\"cloudresourcemanager.googleapis.com/projects.update\")\n .exceptionPrincipals(test_account.email().applyValue(email -\u003e String.format(\"principal://iam.googleapis.com/projects/-/serviceAccounts/%s\", email)))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:organizations:Project\n properties:\n projectId: my-project\n name: my-project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n example:\n type: gcp:iam:DenyPolicy\n properties:\n parent:\n fn::invoke:\n Function: std:urlencode\n Arguments:\n input: cloudresourcemanager.googleapis.com/projects/${project.projectId}\n Return: result\n name: my-deny-policy\n displayName: A deny rule\n rules:\n - description: First rule\n denyRule:\n deniedPrincipals:\n - principalSet://goog/public:all\n denialCondition:\n title: Some expr\n expression: '!resource.matchTag(''12345678/env'', ''test'')'\n deniedPermissions:\n - cloudresourcemanager.googleapis.com/projects.update\n - description: Second rule\n denyRule:\n deniedPrincipals:\n - principalSet://goog/public:all\n denialCondition:\n title: Some expr\n expression: '!resource.matchTag(''12345678/env'', ''test'')'\n deniedPermissions:\n - cloudresourcemanager.googleapis.com/projects.update\n exceptionPrincipals:\n - principal://iam.googleapis.com/projects/-/serviceAccounts/${[\"test-account\"].email}\n test-account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: svc-acc\n displayName: Test Service Account\n project: ${project.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDenyPolicy can be imported using any of these accepted formats:\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, DenyPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:iam/denyPolicy:DenyPolicy default {{parent}}/{{name}}\n```\n\n", + "description": "Represents a collection of denial policies to apply to a given resource.\n\n\nTo get more information about DenyPolicy, see:\n\n* [API documentation](https://cloud.google.com/iam/docs/reference/rest/v2/policies)\n* How-to Guides\n * [Permissions supported in deny policies](https://cloud.google.com/iam/docs/deny-permissions-support)\n\n## Example Usage\n\n### Iam Deny Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = new gcp.organizations.Project(\"project\", {\n projectId: \"my-project\",\n name: \"my-project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst test_account = new gcp.serviceaccount.Account(\"test-account\", {\n accountId: \"svc-acc\",\n displayName: \"Test Service Account\",\n project: project.projectId,\n});\nconst example = new gcp.iam.DenyPolicy(\"example\", {\n parent: std.urlencodeOutput({\n input: pulumi.interpolate`cloudresourcemanager.googleapis.com/projects/${project.projectId}`,\n }).apply(invoke =\u003e invoke.result),\n name: \"my-deny-policy\",\n displayName: \"A deny rule\",\n rules: [\n {\n description: \"First rule\",\n denyRule: {\n deniedPrincipals: [\"principalSet://goog/public:all\"],\n denialCondition: {\n title: \"Some expr\",\n expression: \"!resource.matchTag('12345678/env', 'test')\",\n },\n deniedPermissions: [\"cloudresourcemanager.googleapis.com/projects.update\"],\n },\n },\n {\n description: \"Second rule\",\n denyRule: {\n deniedPrincipals: [\"principalSet://goog/public:all\"],\n denialCondition: {\n title: \"Some expr\",\n expression: \"!resource.matchTag('12345678/env', 'test')\",\n },\n deniedPermissions: [\"cloudresourcemanager.googleapis.com/projects.update\"],\n exceptionPrincipals: [pulumi.interpolate`principal://iam.googleapis.com/projects/-/serviceAccounts/${test_account.email}`],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.Project(\"project\",\n project_id=\"my-project\",\n name=\"my-project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\ntest_account = gcp.serviceaccount.Account(\"test-account\",\n account_id=\"svc-acc\",\n display_name=\"Test Service Account\",\n project=project.project_id)\nexample = gcp.iam.DenyPolicy(\"example\",\n parent=std.urlencode_output(input=project.project_id.apply(lambda project_id: f\"cloudresourcemanager.googleapis.com/projects/{project_id}\")).apply(lambda invoke: invoke.result),\n name=\"my-deny-policy\",\n display_name=\"A deny rule\",\n rules=[\n {\n \"description\": \"First rule\",\n \"deny_rule\": {\n \"denied_principals\": [\"principalSet://goog/public:all\"],\n \"denial_condition\": {\n \"title\": \"Some expr\",\n \"expression\": \"!resource.matchTag('12345678/env', 'test')\",\n },\n \"denied_permissions\": [\"cloudresourcemanager.googleapis.com/projects.update\"],\n },\n },\n {\n \"description\": \"Second rule\",\n \"deny_rule\": {\n \"denied_principals\": [\"principalSet://goog/public:all\"],\n \"denial_condition\": {\n \"title\": \"Some expr\",\n \"expression\": \"!resource.matchTag('12345678/env', 'test')\",\n },\n \"denied_permissions\": [\"cloudresourcemanager.googleapis.com/projects.update\"],\n \"exception_principals\": [test_account.email.apply(lambda email: f\"principal://iam.googleapis.com/projects/-/serviceAccounts/{email}\")],\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = new Gcp.Organizations.Project(\"project\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var test_account = new Gcp.ServiceAccount.Account(\"test-account\", new()\n {\n AccountId = \"svc-acc\",\n DisplayName = \"Test Service Account\",\n Project = project.ProjectId,\n });\n\n var example = new Gcp.Iam.DenyPolicy(\"example\", new()\n {\n Parent = Std.Urlencode.Invoke(new()\n {\n Input = project.ProjectId.Apply(projectId =\u003e $\"cloudresourcemanager.googleapis.com/projects/{projectId}\"),\n }).Apply(invoke =\u003e invoke.Result),\n Name = \"my-deny-policy\",\n DisplayName = \"A deny rule\",\n Rules = new[]\n {\n new Gcp.Iam.Inputs.DenyPolicyRuleArgs\n {\n Description = \"First rule\",\n DenyRule = new Gcp.Iam.Inputs.DenyPolicyRuleDenyRuleArgs\n {\n DeniedPrincipals = new[]\n {\n \"principalSet://goog/public:all\",\n },\n DenialCondition = new Gcp.Iam.Inputs.DenyPolicyRuleDenyRuleDenialConditionArgs\n {\n Title = \"Some expr\",\n Expression = \"!resource.matchTag('12345678/env', 'test')\",\n },\n DeniedPermissions = new[]\n {\n \"cloudresourcemanager.googleapis.com/projects.update\",\n },\n },\n },\n new Gcp.Iam.Inputs.DenyPolicyRuleArgs\n {\n Description = \"Second rule\",\n DenyRule = new Gcp.Iam.Inputs.DenyPolicyRuleDenyRuleArgs\n {\n DeniedPrincipals = new[]\n {\n \"principalSet://goog/public:all\",\n },\n DenialCondition = new Gcp.Iam.Inputs.DenyPolicyRuleDenyRuleDenialConditionArgs\n {\n Title = \"Some expr\",\n Expression = \"!resource.matchTag('12345678/env', 'test')\",\n },\n DeniedPermissions = new[]\n {\n \"cloudresourcemanager.googleapis.com/projects.update\",\n },\n ExceptionPrincipals = new[]\n {\n test_account.Email.Apply(email =\u003e $\"principal://iam.googleapis.com/projects/-/serviceAccounts/{email}\"),\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/v7/go/gcp/iam\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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.NewProject(ctx, \"project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-project\"),\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 = serviceaccount.NewAccount(ctx, \"test-account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"svc-acc\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t\tProject: project.ProjectId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewDenyPolicy(ctx, \"example\", \u0026iam.DenyPolicyArgs{\n\t\t\tParent: pulumi.String(std.UrlencodeOutput(ctx, std.UrlencodeOutputArgs{\n\t\t\t\tInput: project.ProjectId.ApplyT(func(projectId string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"cloudresourcemanager.googleapis.com/projects/%v\", projectId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t}, nil).ApplyT(func(invoke std.UrlencodeResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tName: pulumi.String(\"my-deny-policy\"),\n\t\t\tDisplayName: pulumi.String(\"A deny rule\"),\n\t\t\tRules: iam.DenyPolicyRuleArray{\n\t\t\t\t\u0026iam.DenyPolicyRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"First rule\"),\n\t\t\t\t\tDenyRule: \u0026iam.DenyPolicyRuleDenyRuleArgs{\n\t\t\t\t\t\tDeniedPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"principalSet://goog/public:all\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDenialCondition: \u0026iam.DenyPolicyRuleDenyRuleDenialConditionArgs{\n\t\t\t\t\t\t\tTitle: pulumi.String(\"Some expr\"),\n\t\t\t\t\t\t\tExpression: pulumi.String(\"!resource.matchTag('12345678/env', 'test')\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDeniedPermissions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"cloudresourcemanager.googleapis.com/projects.update\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026iam.DenyPolicyRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"Second rule\"),\n\t\t\t\t\tDenyRule: \u0026iam.DenyPolicyRuleDenyRuleArgs{\n\t\t\t\t\t\tDeniedPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"principalSet://goog/public:all\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDenialCondition: \u0026iam.DenyPolicyRuleDenyRuleDenialConditionArgs{\n\t\t\t\t\t\t\tTitle: pulumi.String(\"Some expr\"),\n\t\t\t\t\t\t\tExpression: pulumi.String(\"!resource.matchTag('12345678/env', 'test')\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDeniedPermissions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"cloudresourcemanager.googleapis.com/projects.update\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExceptionPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\ttest_account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"principal://iam.googleapis.com/projects/-/serviceAccounts/%v\", email), nil\n\t\t\t\t\t\t\t}).(pulumi.StringOutput),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.iam.DenyPolicy;\nimport com.pulumi.gcp.iam.DenyPolicyArgs;\nimport com.pulumi.gcp.iam.inputs.DenyPolicyRuleArgs;\nimport com.pulumi.gcp.iam.inputs.DenyPolicyRuleDenyRuleArgs;\nimport com.pulumi.gcp.iam.inputs.DenyPolicyRuleDenyRuleDenialConditionArgs;\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 project = new Project(\"project\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n var test_account = new Account(\"test-account\", AccountArgs.builder()\n .accountId(\"svc-acc\")\n .displayName(\"Test Service Account\")\n .project(project.projectId())\n .build());\n\n var example = new DenyPolicy(\"example\", DenyPolicyArgs.builder()\n .parent(StdFunctions.urlencode().applyValue(invoke -\u003e invoke.result()))\n .name(\"my-deny-policy\")\n .displayName(\"A deny rule\")\n .rules( \n DenyPolicyRuleArgs.builder()\n .description(\"First rule\")\n .denyRule(DenyPolicyRuleDenyRuleArgs.builder()\n .deniedPrincipals(\"principalSet://goog/public:all\")\n .denialCondition(DenyPolicyRuleDenyRuleDenialConditionArgs.builder()\n .title(\"Some expr\")\n .expression(\"!resource.matchTag('12345678/env', 'test')\")\n .build())\n .deniedPermissions(\"cloudresourcemanager.googleapis.com/projects.update\")\n .build())\n .build(),\n DenyPolicyRuleArgs.builder()\n .description(\"Second rule\")\n .denyRule(DenyPolicyRuleDenyRuleArgs.builder()\n .deniedPrincipals(\"principalSet://goog/public:all\")\n .denialCondition(DenyPolicyRuleDenyRuleDenialConditionArgs.builder()\n .title(\"Some expr\")\n .expression(\"!resource.matchTag('12345678/env', 'test')\")\n .build())\n .deniedPermissions(\"cloudresourcemanager.googleapis.com/projects.update\")\n .exceptionPrincipals(test_account.email().applyValue(email -\u003e String.format(\"principal://iam.googleapis.com/projects/-/serviceAccounts/%s\", email)))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:organizations:Project\n properties:\n projectId: my-project\n name: my-project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n example:\n type: gcp:iam:DenyPolicy\n properties:\n parent:\n fn::invoke:\n Function: std:urlencode\n Arguments:\n input: cloudresourcemanager.googleapis.com/projects/${project.projectId}\n Return: result\n name: my-deny-policy\n displayName: A deny rule\n rules:\n - description: First rule\n denyRule:\n deniedPrincipals:\n - principalSet://goog/public:all\n denialCondition:\n title: Some expr\n expression: '!resource.matchTag(''12345678/env'', ''test'')'\n deniedPermissions:\n - cloudresourcemanager.googleapis.com/projects.update\n - description: Second rule\n denyRule:\n deniedPrincipals:\n - principalSet://goog/public:all\n denialCondition:\n title: Some expr\n expression: '!resource.matchTag(''12345678/env'', ''test'')'\n deniedPermissions:\n - cloudresourcemanager.googleapis.com/projects.update\n exceptionPrincipals:\n - principal://iam.googleapis.com/projects/-/serviceAccounts/${[\"test-account\"].email}\n test-account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: svc-acc\n displayName: Test Service Account\n project: ${project.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDenyPolicy can be imported using any of these accepted formats:\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, DenyPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:iam/denyPolicy:DenyPolicy default {{parent}}/{{name}}\n```\n\n", "properties": { "displayName": { "type": "string", @@ -201586,7 +201586,7 @@ } }, "gcp:iam/workforcePool:WorkforcePool": { - "description": "Represents a collection of external workforces. Provides namespaces for\nfederated users that can be referenced in IAM policies.\n\n\nTo get more information about WorkforcePool, see:\n\n* [API documentation](https://cloud.google.com/iam/docs/reference/rest/v1/locations.workforcePools)\n* How-to Guides\n * [Manage pools](https://cloud.google.com/iam/docs/manage-workforce-identity-pools-providers#manage_pools)\n\n\u003e **Note:** Ask your Google Cloud account team to request access to workforce identity federation for\nyour billing/quota project. The account team notifies you when the project is granted access.\n\n## Example Usage\n\n### Iam Workforce Pool Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.iam.WorkforcePool(\"example\", {\n workforcePoolId: \"example-pool\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.iam.WorkforcePool(\"example\",\n workforce_pool_id=\"example-pool\",\n parent=\"organizations/123456789\",\n location=\"global\")\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.Iam.WorkforcePool(\"example\", new()\n {\n WorkforcePoolId = \"example-pool\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkforcePool(ctx, \"example\", \u0026iam.WorkforcePoolArgs{\n\t\t\tWorkforcePoolId: pulumi.String(\"example-pool\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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.iam.WorkforcePool;\nimport com.pulumi.gcp.iam.WorkforcePoolArgs;\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 WorkforcePool(\"example\", WorkforcePoolArgs.builder()\n .workforcePoolId(\"example-pool\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:iam:WorkforcePool\n properties:\n workforcePoolId: example-pool\n parent: organizations/123456789\n location: global\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workforce Pool Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.iam.WorkforcePool(\"example\", {\n workforcePoolId: \"example-pool\",\n parent: \"organizations/123456789\",\n location: \"global\",\n displayName: \"Display name\",\n description: \"A sample workforce pool.\",\n disabled: false,\n sessionDuration: \"7200s\",\n accessRestrictions: {\n allowedServices: [{\n domain: \"backstory.chronicle.security\",\n }],\n disableProgrammaticSignin: false,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.iam.WorkforcePool(\"example\",\n workforce_pool_id=\"example-pool\",\n parent=\"organizations/123456789\",\n location=\"global\",\n display_name=\"Display name\",\n description=\"A sample workforce pool.\",\n disabled=False,\n session_duration=\"7200s\",\n access_restrictions={\n \"allowedServices\": [{\n \"domain\": \"backstory.chronicle.security\",\n }],\n \"disableProgrammaticSignin\": False,\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 = new Gcp.Iam.WorkforcePool(\"example\", new()\n {\n WorkforcePoolId = \"example-pool\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n DisplayName = \"Display name\",\n Description = \"A sample workforce pool.\",\n Disabled = false,\n SessionDuration = \"7200s\",\n AccessRestrictions = new Gcp.Iam.Inputs.WorkforcePoolAccessRestrictionsArgs\n {\n AllowedServices = new[]\n {\n new Gcp.Iam.Inputs.WorkforcePoolAccessRestrictionsAllowedServiceArgs\n {\n Domain = \"backstory.chronicle.security\",\n },\n },\n DisableProgrammaticSignin = false,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkforcePool(ctx, \"example\", \u0026iam.WorkforcePoolArgs{\n\t\t\tWorkforcePoolId: pulumi.String(\"example-pool\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDisplayName: pulumi.String(\"Display name\"),\n\t\t\tDescription: pulumi.String(\"A sample workforce pool.\"),\n\t\t\tDisabled: pulumi.Bool(false),\n\t\t\tSessionDuration: pulumi.String(\"7200s\"),\n\t\t\tAccessRestrictions: \u0026iam.WorkforcePoolAccessRestrictionsArgs{\n\t\t\t\tAllowedServices: iam.WorkforcePoolAccessRestrictionsAllowedServiceArray{\n\t\t\t\t\t\u0026iam.WorkforcePoolAccessRestrictionsAllowedServiceArgs{\n\t\t\t\t\t\tDomain: pulumi.String(\"backstory.chronicle.security\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDisableProgrammaticSignin: pulumi.Bool(false),\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.iam.WorkforcePool;\nimport com.pulumi.gcp.iam.WorkforcePoolArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolAccessRestrictionsArgs;\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 WorkforcePool(\"example\", WorkforcePoolArgs.builder()\n .workforcePoolId(\"example-pool\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .displayName(\"Display name\")\n .description(\"A sample workforce pool.\")\n .disabled(false)\n .sessionDuration(\"7200s\")\n .accessRestrictions(WorkforcePoolAccessRestrictionsArgs.builder()\n .allowedServices(WorkforcePoolAccessRestrictionsAllowedServiceArgs.builder()\n .domain(\"backstory.chronicle.security\")\n .build())\n .disableProgrammaticSignin(false)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:iam:WorkforcePool\n properties:\n workforcePoolId: example-pool\n parent: organizations/123456789\n location: global\n displayName: Display name\n description: A sample workforce pool.\n disabled: false\n sessionDuration: 7200s\n accessRestrictions:\n allowedServices:\n - domain: backstory.chronicle.security\n disableProgrammaticSignin: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkforcePool can be imported using any of these accepted formats:\n\n* `locations/{{location}}/workforcePools/{{workforce_pool_id}}`\n\n* `{{location}}/{{workforce_pool_id}}`\n\nWhen using the `pulumi import` command, WorkforcePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:iam/workforcePool:WorkforcePool default locations/{{location}}/workforcePools/{{workforce_pool_id}}\n```\n\n```sh\n$ pulumi import gcp:iam/workforcePool:WorkforcePool default {{location}}/{{workforce_pool_id}}\n```\n\n", + "description": "Represents a collection of external workforces. Provides namespaces for\nfederated users that can be referenced in IAM policies.\n\n\nTo get more information about WorkforcePool, see:\n\n* [API documentation](https://cloud.google.com/iam/docs/reference/rest/v1/locations.workforcePools)\n* How-to Guides\n * [Manage pools](https://cloud.google.com/iam/docs/manage-workforce-identity-pools-providers#manage_pools)\n\n\u003e **Note:** Ask your Google Cloud account team to request access to workforce identity federation for\nyour billing/quota project. The account team notifies you when the project is granted access.\n\n## Example Usage\n\n### Iam Workforce Pool Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.iam.WorkforcePool(\"example\", {\n workforcePoolId: \"example-pool\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.iam.WorkforcePool(\"example\",\n workforce_pool_id=\"example-pool\",\n parent=\"organizations/123456789\",\n location=\"global\")\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.Iam.WorkforcePool(\"example\", new()\n {\n WorkforcePoolId = \"example-pool\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkforcePool(ctx, \"example\", \u0026iam.WorkforcePoolArgs{\n\t\t\tWorkforcePoolId: pulumi.String(\"example-pool\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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.iam.WorkforcePool;\nimport com.pulumi.gcp.iam.WorkforcePoolArgs;\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 WorkforcePool(\"example\", WorkforcePoolArgs.builder()\n .workforcePoolId(\"example-pool\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:iam:WorkforcePool\n properties:\n workforcePoolId: example-pool\n parent: organizations/123456789\n location: global\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workforce Pool Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.iam.WorkforcePool(\"example\", {\n workforcePoolId: \"example-pool\",\n parent: \"organizations/123456789\",\n location: \"global\",\n displayName: \"Display name\",\n description: \"A sample workforce pool.\",\n disabled: false,\n sessionDuration: \"7200s\",\n accessRestrictions: {\n allowedServices: [{\n domain: \"backstory.chronicle.security\",\n }],\n disableProgrammaticSignin: false,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.iam.WorkforcePool(\"example\",\n workforce_pool_id=\"example-pool\",\n parent=\"organizations/123456789\",\n location=\"global\",\n display_name=\"Display name\",\n description=\"A sample workforce pool.\",\n disabled=False,\n session_duration=\"7200s\",\n access_restrictions={\n \"allowed_services\": [{\n \"domain\": \"backstory.chronicle.security\",\n }],\n \"disable_programmatic_signin\": False,\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 = new Gcp.Iam.WorkforcePool(\"example\", new()\n {\n WorkforcePoolId = \"example-pool\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n DisplayName = \"Display name\",\n Description = \"A sample workforce pool.\",\n Disabled = false,\n SessionDuration = \"7200s\",\n AccessRestrictions = new Gcp.Iam.Inputs.WorkforcePoolAccessRestrictionsArgs\n {\n AllowedServices = new[]\n {\n new Gcp.Iam.Inputs.WorkforcePoolAccessRestrictionsAllowedServiceArgs\n {\n Domain = \"backstory.chronicle.security\",\n },\n },\n DisableProgrammaticSignin = false,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkforcePool(ctx, \"example\", \u0026iam.WorkforcePoolArgs{\n\t\t\tWorkforcePoolId: pulumi.String(\"example-pool\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDisplayName: pulumi.String(\"Display name\"),\n\t\t\tDescription: pulumi.String(\"A sample workforce pool.\"),\n\t\t\tDisabled: pulumi.Bool(false),\n\t\t\tSessionDuration: pulumi.String(\"7200s\"),\n\t\t\tAccessRestrictions: \u0026iam.WorkforcePoolAccessRestrictionsArgs{\n\t\t\t\tAllowedServices: iam.WorkforcePoolAccessRestrictionsAllowedServiceArray{\n\t\t\t\t\t\u0026iam.WorkforcePoolAccessRestrictionsAllowedServiceArgs{\n\t\t\t\t\t\tDomain: pulumi.String(\"backstory.chronicle.security\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDisableProgrammaticSignin: pulumi.Bool(false),\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.iam.WorkforcePool;\nimport com.pulumi.gcp.iam.WorkforcePoolArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolAccessRestrictionsArgs;\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 WorkforcePool(\"example\", WorkforcePoolArgs.builder()\n .workforcePoolId(\"example-pool\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .displayName(\"Display name\")\n .description(\"A sample workforce pool.\")\n .disabled(false)\n .sessionDuration(\"7200s\")\n .accessRestrictions(WorkforcePoolAccessRestrictionsArgs.builder()\n .allowedServices(WorkforcePoolAccessRestrictionsAllowedServiceArgs.builder()\n .domain(\"backstory.chronicle.security\")\n .build())\n .disableProgrammaticSignin(false)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:iam:WorkforcePool\n properties:\n workforcePoolId: example-pool\n parent: organizations/123456789\n location: global\n displayName: Display name\n description: A sample workforce pool.\n disabled: false\n sessionDuration: 7200s\n accessRestrictions:\n allowedServices:\n - domain: backstory.chronicle.security\n disableProgrammaticSignin: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkforcePool can be imported using any of these accepted formats:\n\n* `locations/{{location}}/workforcePools/{{workforce_pool_id}}`\n\n* `{{location}}/{{workforce_pool_id}}`\n\nWhen using the `pulumi import` command, WorkforcePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:iam/workforcePool:WorkforcePool default locations/{{location}}/workforcePools/{{workforce_pool_id}}\n```\n\n```sh\n$ pulumi import gcp:iam/workforcePool:WorkforcePool default {{location}}/{{workforce_pool_id}}\n```\n\n", "properties": { "accessRestrictions": { "$ref": "#/types/gcp:iam/WorkforcePoolAccessRestrictions:WorkforcePoolAccessRestrictions", @@ -201731,7 +201731,7 @@ } }, "gcp:iam/workforcePoolProvider:WorkforcePoolProvider": { - "description": "A configuration for an external identity provider.\n\n\nTo get more information about WorkforcePoolProvider, see:\n\n* [API documentation](https://cloud.google.com/iam/docs/reference/rest/v1/locations.workforcePools.providers)\n* How-to Guides\n * [Configure a provider within the workforce pool](https://cloud.google.com/iam/docs/manage-workforce-identity-pools-providers#configure_a_provider_within_the_workforce_pool)\n\n\u003e **Note:** Ask your Google Cloud account team to request access to workforce identity federation for your\nbilling/quota project. The account team notifies you when the project is granted access.\n\n\n\n## Example Usage\n\n### Iam Workforce Pool Provider Saml Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkforcePool(\"pool\", {\n workforcePoolId: \"example-pool\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\nconst example = new gcp.iam.WorkforcePoolProvider(\"example\", {\n workforcePoolId: pool.workforcePoolId,\n location: pool.location,\n providerId: \"example-prvdr\",\n attributeMapping: {\n \"google.subject\": \"assertion.sub\",\n },\n saml: {\n idpMetadataXml: \"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkforcePool(\"pool\",\n workforce_pool_id=\"example-pool\",\n parent=\"organizations/123456789\",\n location=\"global\")\nexample = gcp.iam.WorkforcePoolProvider(\"example\",\n workforce_pool_id=pool.workforce_pool_id,\n location=pool.location,\n provider_id=\"example-prvdr\",\n attribute_mapping={\n \"google.subject\": \"assertion.sub\",\n },\n saml={\n \"idpMetadataXml\": \"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\",\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.Iam.WorkforcePool(\"pool\", new()\n {\n WorkforcePoolId = \"example-pool\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n var example = new Gcp.Iam.WorkforcePoolProvider(\"example\", new()\n {\n WorkforcePoolId = pool.WorkforcePoolId,\n Location = pool.Location,\n ProviderId = \"example-prvdr\",\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.sub\" },\n },\n Saml = new Gcp.Iam.Inputs.WorkforcePoolProviderSamlArgs\n {\n IdpMetadataXml = \"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkforcePool(ctx, \"pool\", \u0026iam.WorkforcePoolArgs{\n\t\t\tWorkforcePoolId: pulumi.String(\"example-pool\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkforcePoolProvider(ctx, \"example\", \u0026iam.WorkforcePoolProviderArgs{\n\t\t\tWorkforcePoolId: pool.WorkforcePoolId,\n\t\t\tLocation: pool.Location,\n\t\t\tProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.sub\"),\n\t\t\t},\n\t\t\tSaml: \u0026iam.WorkforcePoolProviderSamlArgs{\n\t\t\t\tIdpMetadataXml: pulumi.String(\"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\"),\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.iam.WorkforcePool;\nimport com.pulumi.gcp.iam.WorkforcePoolArgs;\nimport com.pulumi.gcp.iam.WorkforcePoolProvider;\nimport com.pulumi.gcp.iam.WorkforcePoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderSamlArgs;\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 WorkforcePool(\"pool\", WorkforcePoolArgs.builder()\n .workforcePoolId(\"example-pool\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n var example = new WorkforcePoolProvider(\"example\", WorkforcePoolProviderArgs.builder()\n .workforcePoolId(pool.workforcePoolId())\n .location(pool.location())\n .providerId(\"example-prvdr\")\n .attributeMapping(Map.of(\"google.subject\", \"assertion.sub\"))\n .saml(WorkforcePoolProviderSamlArgs.builder()\n .idpMetadataXml(\"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkforcePool\n properties:\n workforcePoolId: example-pool\n parent: organizations/123456789\n location: global\n example:\n type: gcp:iam:WorkforcePoolProvider\n properties:\n workforcePoolId: ${pool.workforcePoolId}\n location: ${pool.location}\n providerId: example-prvdr\n attributeMapping:\n google.subject: assertion.sub\n saml:\n idpMetadataXml: \u003c?xml version=\"1.0\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\"urn:oasis:names:tc:SAML:2.0:metadata\" entityID=\"https://test.com\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\"urn:oasis:names:tc:SAML:2.0:protocol\"\u003e \u003cmd:KeyDescriptor use=\"signing\"\u003e\u003cds:KeyInfo xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\" Location=\"https://test.com/sso\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workforce Pool Provider Saml Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkforcePool(\"pool\", {\n workforcePoolId: \"example-pool\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\nconst example = new gcp.iam.WorkforcePoolProvider(\"example\", {\n workforcePoolId: pool.workforcePoolId,\n location: pool.location,\n providerId: \"example-prvdr\",\n attributeMapping: {\n \"google.subject\": \"assertion.sub\",\n },\n saml: {\n idpMetadataXml: \"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\",\n },\n displayName: \"Display name\",\n description: \"A sample SAML workforce pool provider.\",\n disabled: false,\n attributeCondition: \"true\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkforcePool(\"pool\",\n workforce_pool_id=\"example-pool\",\n parent=\"organizations/123456789\",\n location=\"global\")\nexample = gcp.iam.WorkforcePoolProvider(\"example\",\n workforce_pool_id=pool.workforce_pool_id,\n location=pool.location,\n provider_id=\"example-prvdr\",\n attribute_mapping={\n \"google.subject\": \"assertion.sub\",\n },\n saml={\n \"idpMetadataXml\": \"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\",\n },\n display_name=\"Display name\",\n description=\"A sample SAML workforce pool provider.\",\n disabled=False,\n attribute_condition=\"true\")\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.Iam.WorkforcePool(\"pool\", new()\n {\n WorkforcePoolId = \"example-pool\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n var example = new Gcp.Iam.WorkforcePoolProvider(\"example\", new()\n {\n WorkforcePoolId = pool.WorkforcePoolId,\n Location = pool.Location,\n ProviderId = \"example-prvdr\",\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.sub\" },\n },\n Saml = new Gcp.Iam.Inputs.WorkforcePoolProviderSamlArgs\n {\n IdpMetadataXml = \"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\",\n },\n DisplayName = \"Display name\",\n Description = \"A sample SAML workforce pool provider.\",\n Disabled = false,\n AttributeCondition = \"true\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkforcePool(ctx, \"pool\", \u0026iam.WorkforcePoolArgs{\n\t\t\tWorkforcePoolId: pulumi.String(\"example-pool\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkforcePoolProvider(ctx, \"example\", \u0026iam.WorkforcePoolProviderArgs{\n\t\t\tWorkforcePoolId: pool.WorkforcePoolId,\n\t\t\tLocation: pool.Location,\n\t\t\tProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.sub\"),\n\t\t\t},\n\t\t\tSaml: \u0026iam.WorkforcePoolProviderSamlArgs{\n\t\t\t\tIdpMetadataXml: pulumi.String(\"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\"),\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"Display name\"),\n\t\t\tDescription: pulumi.String(\"A sample SAML workforce pool provider.\"),\n\t\t\tDisabled: pulumi.Bool(false),\n\t\t\tAttributeCondition: pulumi.String(\"true\"),\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.iam.WorkforcePool;\nimport com.pulumi.gcp.iam.WorkforcePoolArgs;\nimport com.pulumi.gcp.iam.WorkforcePoolProvider;\nimport com.pulumi.gcp.iam.WorkforcePoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderSamlArgs;\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 WorkforcePool(\"pool\", WorkforcePoolArgs.builder()\n .workforcePoolId(\"example-pool\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n var example = new WorkforcePoolProvider(\"example\", WorkforcePoolProviderArgs.builder()\n .workforcePoolId(pool.workforcePoolId())\n .location(pool.location())\n .providerId(\"example-prvdr\")\n .attributeMapping(Map.of(\"google.subject\", \"assertion.sub\"))\n .saml(WorkforcePoolProviderSamlArgs.builder()\n .idpMetadataXml(\"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\")\n .build())\n .displayName(\"Display name\")\n .description(\"A sample SAML workforce pool provider.\")\n .disabled(false)\n .attributeCondition(\"true\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkforcePool\n properties:\n workforcePoolId: example-pool\n parent: organizations/123456789\n location: global\n example:\n type: gcp:iam:WorkforcePoolProvider\n properties:\n workforcePoolId: ${pool.workforcePoolId}\n location: ${pool.location}\n providerId: example-prvdr\n attributeMapping:\n google.subject: assertion.sub\n saml:\n idpMetadataXml: \u003c?xml version=\"1.0\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\"urn:oasis:names:tc:SAML:2.0:metadata\" entityID=\"https://test.com\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\"urn:oasis:names:tc:SAML:2.0:protocol\"\u003e \u003cmd:KeyDescriptor use=\"signing\"\u003e\u003cds:KeyInfo xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\" Location=\"https://test.com/sso\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\n displayName: Display name\n description: A sample SAML workforce pool provider.\n disabled: false\n attributeCondition: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workforce Pool Provider Oidc Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkforcePool(\"pool\", {\n workforcePoolId: \"example-pool\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\nconst example = new gcp.iam.WorkforcePoolProvider(\"example\", {\n workforcePoolId: pool.workforcePoolId,\n location: pool.location,\n providerId: \"example-prvdr\",\n attributeMapping: {\n \"google.subject\": \"assertion.sub\",\n },\n oidc: {\n issuerUri: \"https://accounts.thirdparty.com\",\n clientId: \"client-id\",\n clientSecret: {\n value: {\n plainText: \"client-secret\",\n },\n },\n webSsoConfig: {\n responseType: \"CODE\",\n assertionClaimsBehavior: \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkforcePool(\"pool\",\n workforce_pool_id=\"example-pool\",\n parent=\"organizations/123456789\",\n location=\"global\")\nexample = gcp.iam.WorkforcePoolProvider(\"example\",\n workforce_pool_id=pool.workforce_pool_id,\n location=pool.location,\n provider_id=\"example-prvdr\",\n attribute_mapping={\n \"google.subject\": \"assertion.sub\",\n },\n oidc={\n \"issuerUri\": \"https://accounts.thirdparty.com\",\n \"clientId\": \"client-id\",\n \"clientSecret\": {\n \"value\": {\n \"plainText\": \"client-secret\",\n },\n },\n \"webSsoConfig\": {\n \"responseType\": \"CODE\",\n \"assertionClaimsBehavior\": \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\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 pool = new Gcp.Iam.WorkforcePool(\"pool\", new()\n {\n WorkforcePoolId = \"example-pool\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n var example = new Gcp.Iam.WorkforcePoolProvider(\"example\", new()\n {\n WorkforcePoolId = pool.WorkforcePoolId,\n Location = pool.Location,\n ProviderId = \"example-prvdr\",\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.sub\" },\n },\n Oidc = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcArgs\n {\n IssuerUri = \"https://accounts.thirdparty.com\",\n ClientId = \"client-id\",\n ClientSecret = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcClientSecretArgs\n {\n Value = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcClientSecretValueArgs\n {\n PlainText = \"client-secret\",\n },\n },\n WebSsoConfig = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcWebSsoConfigArgs\n {\n ResponseType = \"CODE\",\n AssertionClaimsBehavior = \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkforcePool(ctx, \"pool\", \u0026iam.WorkforcePoolArgs{\n\t\t\tWorkforcePoolId: pulumi.String(\"example-pool\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkforcePoolProvider(ctx, \"example\", \u0026iam.WorkforcePoolProviderArgs{\n\t\t\tWorkforcePoolId: pool.WorkforcePoolId,\n\t\t\tLocation: pool.Location,\n\t\t\tProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.sub\"),\n\t\t\t},\n\t\t\tOidc: \u0026iam.WorkforcePoolProviderOidcArgs{\n\t\t\t\tIssuerUri: pulumi.String(\"https://accounts.thirdparty.com\"),\n\t\t\t\tClientId: pulumi.String(\"client-id\"),\n\t\t\t\tClientSecret: \u0026iam.WorkforcePoolProviderOidcClientSecretArgs{\n\t\t\t\t\tValue: \u0026iam.WorkforcePoolProviderOidcClientSecretValueArgs{\n\t\t\t\t\t\tPlainText: pulumi.String(\"client-secret\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWebSsoConfig: \u0026iam.WorkforcePoolProviderOidcWebSsoConfigArgs{\n\t\t\t\t\tResponseType: pulumi.String(\"CODE\"),\n\t\t\t\t\tAssertionClaimsBehavior: pulumi.String(\"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\"),\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.iam.WorkforcePool;\nimport com.pulumi.gcp.iam.WorkforcePoolArgs;\nimport com.pulumi.gcp.iam.WorkforcePoolProvider;\nimport com.pulumi.gcp.iam.WorkforcePoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcClientSecretArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcClientSecretValueArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcWebSsoConfigArgs;\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 WorkforcePool(\"pool\", WorkforcePoolArgs.builder()\n .workforcePoolId(\"example-pool\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n var example = new WorkforcePoolProvider(\"example\", WorkforcePoolProviderArgs.builder()\n .workforcePoolId(pool.workforcePoolId())\n .location(pool.location())\n .providerId(\"example-prvdr\")\n .attributeMapping(Map.of(\"google.subject\", \"assertion.sub\"))\n .oidc(WorkforcePoolProviderOidcArgs.builder()\n .issuerUri(\"https://accounts.thirdparty.com\")\n .clientId(\"client-id\")\n .clientSecret(WorkforcePoolProviderOidcClientSecretArgs.builder()\n .value(WorkforcePoolProviderOidcClientSecretValueArgs.builder()\n .plainText(\"client-secret\")\n .build())\n .build())\n .webSsoConfig(WorkforcePoolProviderOidcWebSsoConfigArgs.builder()\n .responseType(\"CODE\")\n .assertionClaimsBehavior(\"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkforcePool\n properties:\n workforcePoolId: example-pool\n parent: organizations/123456789\n location: global\n example:\n type: gcp:iam:WorkforcePoolProvider\n properties:\n workforcePoolId: ${pool.workforcePoolId}\n location: ${pool.location}\n providerId: example-prvdr\n attributeMapping:\n google.subject: assertion.sub\n oidc:\n issuerUri: https://accounts.thirdparty.com\n clientId: client-id\n clientSecret:\n value:\n plainText: client-secret\n webSsoConfig:\n responseType: CODE\n assertionClaimsBehavior: MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workforce Pool Provider Oidc Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkforcePool(\"pool\", {\n workforcePoolId: \"example-pool\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\nconst example = new gcp.iam.WorkforcePoolProvider(\"example\", {\n workforcePoolId: pool.workforcePoolId,\n location: pool.location,\n providerId: \"example-prvdr\",\n attributeMapping: {\n \"google.subject\": \"assertion.sub\",\n },\n oidc: {\n issuerUri: \"https://accounts.thirdparty.com\",\n clientId: \"client-id\",\n clientSecret: {\n value: {\n plainText: \"client-secret\",\n },\n },\n webSsoConfig: {\n responseType: \"CODE\",\n assertionClaimsBehavior: \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n additionalScopes: [\n \"groups\",\n \"roles\",\n ],\n },\n },\n displayName: \"Display name\",\n description: \"A sample OIDC workforce pool provider.\",\n disabled: false,\n attributeCondition: \"true\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkforcePool(\"pool\",\n workforce_pool_id=\"example-pool\",\n parent=\"organizations/123456789\",\n location=\"global\")\nexample = gcp.iam.WorkforcePoolProvider(\"example\",\n workforce_pool_id=pool.workforce_pool_id,\n location=pool.location,\n provider_id=\"example-prvdr\",\n attribute_mapping={\n \"google.subject\": \"assertion.sub\",\n },\n oidc={\n \"issuerUri\": \"https://accounts.thirdparty.com\",\n \"clientId\": \"client-id\",\n \"clientSecret\": {\n \"value\": {\n \"plainText\": \"client-secret\",\n },\n },\n \"webSsoConfig\": {\n \"responseType\": \"CODE\",\n \"assertionClaimsBehavior\": \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n \"additionalScopes\": [\n \"groups\",\n \"roles\",\n ],\n },\n },\n display_name=\"Display name\",\n description=\"A sample OIDC workforce pool provider.\",\n disabled=False,\n attribute_condition=\"true\")\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.Iam.WorkforcePool(\"pool\", new()\n {\n WorkforcePoolId = \"example-pool\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n var example = new Gcp.Iam.WorkforcePoolProvider(\"example\", new()\n {\n WorkforcePoolId = pool.WorkforcePoolId,\n Location = pool.Location,\n ProviderId = \"example-prvdr\",\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.sub\" },\n },\n Oidc = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcArgs\n {\n IssuerUri = \"https://accounts.thirdparty.com\",\n ClientId = \"client-id\",\n ClientSecret = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcClientSecretArgs\n {\n Value = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcClientSecretValueArgs\n {\n PlainText = \"client-secret\",\n },\n },\n WebSsoConfig = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcWebSsoConfigArgs\n {\n ResponseType = \"CODE\",\n AssertionClaimsBehavior = \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n AdditionalScopes = new[]\n {\n \"groups\",\n \"roles\",\n },\n },\n },\n DisplayName = \"Display name\",\n Description = \"A sample OIDC workforce pool provider.\",\n Disabled = false,\n AttributeCondition = \"true\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkforcePool(ctx, \"pool\", \u0026iam.WorkforcePoolArgs{\n\t\t\tWorkforcePoolId: pulumi.String(\"example-pool\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkforcePoolProvider(ctx, \"example\", \u0026iam.WorkforcePoolProviderArgs{\n\t\t\tWorkforcePoolId: pool.WorkforcePoolId,\n\t\t\tLocation: pool.Location,\n\t\t\tProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.sub\"),\n\t\t\t},\n\t\t\tOidc: \u0026iam.WorkforcePoolProviderOidcArgs{\n\t\t\t\tIssuerUri: pulumi.String(\"https://accounts.thirdparty.com\"),\n\t\t\t\tClientId: pulumi.String(\"client-id\"),\n\t\t\t\tClientSecret: \u0026iam.WorkforcePoolProviderOidcClientSecretArgs{\n\t\t\t\t\tValue: \u0026iam.WorkforcePoolProviderOidcClientSecretValueArgs{\n\t\t\t\t\t\tPlainText: pulumi.String(\"client-secret\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWebSsoConfig: \u0026iam.WorkforcePoolProviderOidcWebSsoConfigArgs{\n\t\t\t\t\tResponseType: pulumi.String(\"CODE\"),\n\t\t\t\t\tAssertionClaimsBehavior: pulumi.String(\"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\"),\n\t\t\t\t\tAdditionalScopes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"groups\"),\n\t\t\t\t\t\tpulumi.String(\"roles\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"Display name\"),\n\t\t\tDescription: pulumi.String(\"A sample OIDC workforce pool provider.\"),\n\t\t\tDisabled: pulumi.Bool(false),\n\t\t\tAttributeCondition: pulumi.String(\"true\"),\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.iam.WorkforcePool;\nimport com.pulumi.gcp.iam.WorkforcePoolArgs;\nimport com.pulumi.gcp.iam.WorkforcePoolProvider;\nimport com.pulumi.gcp.iam.WorkforcePoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcClientSecretArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcClientSecretValueArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcWebSsoConfigArgs;\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 WorkforcePool(\"pool\", WorkforcePoolArgs.builder()\n .workforcePoolId(\"example-pool\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n var example = new WorkforcePoolProvider(\"example\", WorkforcePoolProviderArgs.builder()\n .workforcePoolId(pool.workforcePoolId())\n .location(pool.location())\n .providerId(\"example-prvdr\")\n .attributeMapping(Map.of(\"google.subject\", \"assertion.sub\"))\n .oidc(WorkforcePoolProviderOidcArgs.builder()\n .issuerUri(\"https://accounts.thirdparty.com\")\n .clientId(\"client-id\")\n .clientSecret(WorkforcePoolProviderOidcClientSecretArgs.builder()\n .value(WorkforcePoolProviderOidcClientSecretValueArgs.builder()\n .plainText(\"client-secret\")\n .build())\n .build())\n .webSsoConfig(WorkforcePoolProviderOidcWebSsoConfigArgs.builder()\n .responseType(\"CODE\")\n .assertionClaimsBehavior(\"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\")\n .additionalScopes( \n \"groups\",\n \"roles\")\n .build())\n .build())\n .displayName(\"Display name\")\n .description(\"A sample OIDC workforce pool provider.\")\n .disabled(false)\n .attributeCondition(\"true\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkforcePool\n properties:\n workforcePoolId: example-pool\n parent: organizations/123456789\n location: global\n example:\n type: gcp:iam:WorkforcePoolProvider\n properties:\n workforcePoolId: ${pool.workforcePoolId}\n location: ${pool.location}\n providerId: example-prvdr\n attributeMapping:\n google.subject: assertion.sub\n oidc:\n issuerUri: https://accounts.thirdparty.com\n clientId: client-id\n clientSecret:\n value:\n plainText: client-secret\n webSsoConfig:\n responseType: CODE\n assertionClaimsBehavior: MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\n additionalScopes:\n - groups\n - roles\n displayName: Display name\n description: A sample OIDC workforce pool provider.\n disabled: false\n attributeCondition: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workforce Pool Provider Extra Attributes Oauth2 Config Client Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkforcePool(\"pool\", {\n workforcePoolId: \"example-pool\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\nconst example = new gcp.iam.WorkforcePoolProvider(\"example\", {\n workforcePoolId: pool.workforcePoolId,\n location: pool.location,\n providerId: \"example-prvdr\",\n attributeMapping: {\n \"google.subject\": \"assertion.sub\",\n },\n oidc: {\n issuerUri: \"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\",\n clientId: \"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\",\n webSsoConfig: {\n responseType: \"CODE\",\n assertionClaimsBehavior: \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n },\n clientSecret: {\n value: {\n plainText: \"client-secret\",\n },\n },\n },\n extraAttributesOauth2Client: {\n issuerUri: \"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\",\n clientId: \"client-id\",\n clientSecret: {\n value: {\n plainText: \"client-secret\",\n },\n },\n attributesType: \"AZURE_AD_GROUPS_MAIL\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkforcePool(\"pool\",\n workforce_pool_id=\"example-pool\",\n parent=\"organizations/123456789\",\n location=\"global\")\nexample = gcp.iam.WorkforcePoolProvider(\"example\",\n workforce_pool_id=pool.workforce_pool_id,\n location=pool.location,\n provider_id=\"example-prvdr\",\n attribute_mapping={\n \"google.subject\": \"assertion.sub\",\n },\n oidc={\n \"issuerUri\": \"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\",\n \"clientId\": \"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\",\n \"webSsoConfig\": {\n \"responseType\": \"CODE\",\n \"assertionClaimsBehavior\": \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n },\n \"clientSecret\": {\n \"value\": {\n \"plainText\": \"client-secret\",\n },\n },\n },\n extra_attributes_oauth2_client={\n \"issuerUri\": \"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\",\n \"clientId\": \"client-id\",\n \"clientSecret\": {\n \"value\": {\n \"plainText\": \"client-secret\",\n },\n },\n \"attributesType\": \"AZURE_AD_GROUPS_MAIL\",\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.Iam.WorkforcePool(\"pool\", new()\n {\n WorkforcePoolId = \"example-pool\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n var example = new Gcp.Iam.WorkforcePoolProvider(\"example\", new()\n {\n WorkforcePoolId = pool.WorkforcePoolId,\n Location = pool.Location,\n ProviderId = \"example-prvdr\",\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.sub\" },\n },\n Oidc = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcArgs\n {\n IssuerUri = \"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\",\n ClientId = \"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\",\n WebSsoConfig = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcWebSsoConfigArgs\n {\n ResponseType = \"CODE\",\n AssertionClaimsBehavior = \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n },\n ClientSecret = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcClientSecretArgs\n {\n Value = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcClientSecretValueArgs\n {\n PlainText = \"client-secret\",\n },\n },\n },\n ExtraAttributesOauth2Client = new Gcp.Iam.Inputs.WorkforcePoolProviderExtraAttributesOauth2ClientArgs\n {\n IssuerUri = \"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\",\n ClientId = \"client-id\",\n ClientSecret = new Gcp.Iam.Inputs.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretArgs\n {\n Value = new Gcp.Iam.Inputs.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretValueArgs\n {\n PlainText = \"client-secret\",\n },\n },\n AttributesType = \"AZURE_AD_GROUPS_MAIL\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkforcePool(ctx, \"pool\", \u0026iam.WorkforcePoolArgs{\n\t\t\tWorkforcePoolId: pulumi.String(\"example-pool\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkforcePoolProvider(ctx, \"example\", \u0026iam.WorkforcePoolProviderArgs{\n\t\t\tWorkforcePoolId: pool.WorkforcePoolId,\n\t\t\tLocation: pool.Location,\n\t\t\tProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.sub\"),\n\t\t\t},\n\t\t\tOidc: \u0026iam.WorkforcePoolProviderOidcArgs{\n\t\t\t\tIssuerUri: pulumi.String(\"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\"),\n\t\t\t\tClientId: pulumi.String(\"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\"),\n\t\t\t\tWebSsoConfig: \u0026iam.WorkforcePoolProviderOidcWebSsoConfigArgs{\n\t\t\t\t\tResponseType: pulumi.String(\"CODE\"),\n\t\t\t\t\tAssertionClaimsBehavior: pulumi.String(\"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\"),\n\t\t\t\t},\n\t\t\t\tClientSecret: \u0026iam.WorkforcePoolProviderOidcClientSecretArgs{\n\t\t\t\t\tValue: \u0026iam.WorkforcePoolProviderOidcClientSecretValueArgs{\n\t\t\t\t\t\tPlainText: pulumi.String(\"client-secret\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tExtraAttributesOauth2Client: \u0026iam.WorkforcePoolProviderExtraAttributesOauth2ClientArgs{\n\t\t\t\tIssuerUri: pulumi.String(\"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\"),\n\t\t\t\tClientId: pulumi.String(\"client-id\"),\n\t\t\t\tClientSecret: \u0026iam.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretArgs{\n\t\t\t\t\tValue: \u0026iam.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretValueArgs{\n\t\t\t\t\t\tPlainText: pulumi.String(\"client-secret\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAttributesType: pulumi.String(\"AZURE_AD_GROUPS_MAIL\"),\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.iam.WorkforcePool;\nimport com.pulumi.gcp.iam.WorkforcePoolArgs;\nimport com.pulumi.gcp.iam.WorkforcePoolProvider;\nimport com.pulumi.gcp.iam.WorkforcePoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcWebSsoConfigArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcClientSecretArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcClientSecretValueArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderExtraAttributesOauth2ClientArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretValueArgs;\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 WorkforcePool(\"pool\", WorkforcePoolArgs.builder()\n .workforcePoolId(\"example-pool\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n var example = new WorkforcePoolProvider(\"example\", WorkforcePoolProviderArgs.builder()\n .workforcePoolId(pool.workforcePoolId())\n .location(pool.location())\n .providerId(\"example-prvdr\")\n .attributeMapping(Map.of(\"google.subject\", \"assertion.sub\"))\n .oidc(WorkforcePoolProviderOidcArgs.builder()\n .issuerUri(\"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\")\n .clientId(\"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\")\n .webSsoConfig(WorkforcePoolProviderOidcWebSsoConfigArgs.builder()\n .responseType(\"CODE\")\n .assertionClaimsBehavior(\"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\")\n .build())\n .clientSecret(WorkforcePoolProviderOidcClientSecretArgs.builder()\n .value(WorkforcePoolProviderOidcClientSecretValueArgs.builder()\n .plainText(\"client-secret\")\n .build())\n .build())\n .build())\n .extraAttributesOauth2Client(WorkforcePoolProviderExtraAttributesOauth2ClientArgs.builder()\n .issuerUri(\"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\")\n .clientId(\"client-id\")\n .clientSecret(WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretArgs.builder()\n .value(WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretValueArgs.builder()\n .plainText(\"client-secret\")\n .build())\n .build())\n .attributesType(\"AZURE_AD_GROUPS_MAIL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkforcePool\n properties:\n workforcePoolId: example-pool\n parent: organizations/123456789\n location: global\n example:\n type: gcp:iam:WorkforcePoolProvider\n properties:\n workforcePoolId: ${pool.workforcePoolId}\n location: ${pool.location}\n providerId: example-prvdr\n attributeMapping:\n google.subject: assertion.sub\n oidc:\n issuerUri: https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\n clientId: https://analysis.windows.net/powerbi/connector/GoogleBigQuery\n webSsoConfig:\n responseType: CODE\n assertionClaimsBehavior: MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\n clientSecret:\n value:\n plainText: client-secret\n extraAttributesOauth2Client:\n issuerUri: https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\n clientId: client-id\n clientSecret:\n value:\n plainText: client-secret\n attributesType: AZURE_AD_GROUPS_MAIL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workforce Pool Provider Extra Attributes Oauth2 Config Client Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkforcePool(\"pool\", {\n workforcePoolId: \"example-pool\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\nconst example = new gcp.iam.WorkforcePoolProvider(\"example\", {\n workforcePoolId: pool.workforcePoolId,\n location: pool.location,\n providerId: \"example-prvdr\",\n attributeMapping: {\n \"google.subject\": \"assertion.sub\",\n },\n oidc: {\n issuerUri: \"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\",\n clientId: \"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\",\n clientSecret: {\n value: {\n plainText: \"client-secret\",\n },\n },\n webSsoConfig: {\n responseType: \"CODE\",\n assertionClaimsBehavior: \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n },\n },\n extraAttributesOauth2Client: {\n issuerUri: \"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\",\n clientId: \"client-id\",\n clientSecret: {\n value: {\n plainText: \"client-secret\",\n },\n },\n attributesType: \"AZURE_AD_GROUPS_MAIL\",\n queryParameters: {\n filter: \"mail:gcp\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkforcePool(\"pool\",\n workforce_pool_id=\"example-pool\",\n parent=\"organizations/123456789\",\n location=\"global\")\nexample = gcp.iam.WorkforcePoolProvider(\"example\",\n workforce_pool_id=pool.workforce_pool_id,\n location=pool.location,\n provider_id=\"example-prvdr\",\n attribute_mapping={\n \"google.subject\": \"assertion.sub\",\n },\n oidc={\n \"issuerUri\": \"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\",\n \"clientId\": \"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\",\n \"clientSecret\": {\n \"value\": {\n \"plainText\": \"client-secret\",\n },\n },\n \"webSsoConfig\": {\n \"responseType\": \"CODE\",\n \"assertionClaimsBehavior\": \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n },\n },\n extra_attributes_oauth2_client={\n \"issuerUri\": \"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\",\n \"clientId\": \"client-id\",\n \"clientSecret\": {\n \"value\": {\n \"plainText\": \"client-secret\",\n },\n },\n \"attributesType\": \"AZURE_AD_GROUPS_MAIL\",\n \"queryParameters\": {\n \"filter\": \"mail:gcp\",\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 pool = new Gcp.Iam.WorkforcePool(\"pool\", new()\n {\n WorkforcePoolId = \"example-pool\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n var example = new Gcp.Iam.WorkforcePoolProvider(\"example\", new()\n {\n WorkforcePoolId = pool.WorkforcePoolId,\n Location = pool.Location,\n ProviderId = \"example-prvdr\",\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.sub\" },\n },\n Oidc = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcArgs\n {\n IssuerUri = \"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\",\n ClientId = \"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\",\n ClientSecret = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcClientSecretArgs\n {\n Value = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcClientSecretValueArgs\n {\n PlainText = \"client-secret\",\n },\n },\n WebSsoConfig = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcWebSsoConfigArgs\n {\n ResponseType = \"CODE\",\n AssertionClaimsBehavior = \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n },\n },\n ExtraAttributesOauth2Client = new Gcp.Iam.Inputs.WorkforcePoolProviderExtraAttributesOauth2ClientArgs\n {\n IssuerUri = \"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\",\n ClientId = \"client-id\",\n ClientSecret = new Gcp.Iam.Inputs.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretArgs\n {\n Value = new Gcp.Iam.Inputs.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretValueArgs\n {\n PlainText = \"client-secret\",\n },\n },\n AttributesType = \"AZURE_AD_GROUPS_MAIL\",\n QueryParameters = new Gcp.Iam.Inputs.WorkforcePoolProviderExtraAttributesOauth2ClientQueryParametersArgs\n {\n Filter = \"mail:gcp\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkforcePool(ctx, \"pool\", \u0026iam.WorkforcePoolArgs{\n\t\t\tWorkforcePoolId: pulumi.String(\"example-pool\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkforcePoolProvider(ctx, \"example\", \u0026iam.WorkforcePoolProviderArgs{\n\t\t\tWorkforcePoolId: pool.WorkforcePoolId,\n\t\t\tLocation: pool.Location,\n\t\t\tProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.sub\"),\n\t\t\t},\n\t\t\tOidc: \u0026iam.WorkforcePoolProviderOidcArgs{\n\t\t\t\tIssuerUri: pulumi.String(\"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\"),\n\t\t\t\tClientId: pulumi.String(\"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\"),\n\t\t\t\tClientSecret: \u0026iam.WorkforcePoolProviderOidcClientSecretArgs{\n\t\t\t\t\tValue: \u0026iam.WorkforcePoolProviderOidcClientSecretValueArgs{\n\t\t\t\t\t\tPlainText: pulumi.String(\"client-secret\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWebSsoConfig: \u0026iam.WorkforcePoolProviderOidcWebSsoConfigArgs{\n\t\t\t\t\tResponseType: pulumi.String(\"CODE\"),\n\t\t\t\t\tAssertionClaimsBehavior: pulumi.String(\"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tExtraAttributesOauth2Client: \u0026iam.WorkforcePoolProviderExtraAttributesOauth2ClientArgs{\n\t\t\t\tIssuerUri: pulumi.String(\"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\"),\n\t\t\t\tClientId: pulumi.String(\"client-id\"),\n\t\t\t\tClientSecret: \u0026iam.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretArgs{\n\t\t\t\t\tValue: \u0026iam.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretValueArgs{\n\t\t\t\t\t\tPlainText: pulumi.String(\"client-secret\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAttributesType: pulumi.String(\"AZURE_AD_GROUPS_MAIL\"),\n\t\t\t\tQueryParameters: \u0026iam.WorkforcePoolProviderExtraAttributesOauth2ClientQueryParametersArgs{\n\t\t\t\t\tFilter: pulumi.String(\"mail:gcp\"),\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.iam.WorkforcePool;\nimport com.pulumi.gcp.iam.WorkforcePoolArgs;\nimport com.pulumi.gcp.iam.WorkforcePoolProvider;\nimport com.pulumi.gcp.iam.WorkforcePoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcClientSecretArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcClientSecretValueArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcWebSsoConfigArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderExtraAttributesOauth2ClientArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretValueArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderExtraAttributesOauth2ClientQueryParametersArgs;\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 WorkforcePool(\"pool\", WorkforcePoolArgs.builder()\n .workforcePoolId(\"example-pool\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n var example = new WorkforcePoolProvider(\"example\", WorkforcePoolProviderArgs.builder()\n .workforcePoolId(pool.workforcePoolId())\n .location(pool.location())\n .providerId(\"example-prvdr\")\n .attributeMapping(Map.of(\"google.subject\", \"assertion.sub\"))\n .oidc(WorkforcePoolProviderOidcArgs.builder()\n .issuerUri(\"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\")\n .clientId(\"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\")\n .clientSecret(WorkforcePoolProviderOidcClientSecretArgs.builder()\n .value(WorkforcePoolProviderOidcClientSecretValueArgs.builder()\n .plainText(\"client-secret\")\n .build())\n .build())\n .webSsoConfig(WorkforcePoolProviderOidcWebSsoConfigArgs.builder()\n .responseType(\"CODE\")\n .assertionClaimsBehavior(\"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\")\n .build())\n .build())\n .extraAttributesOauth2Client(WorkforcePoolProviderExtraAttributesOauth2ClientArgs.builder()\n .issuerUri(\"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\")\n .clientId(\"client-id\")\n .clientSecret(WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretArgs.builder()\n .value(WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretValueArgs.builder()\n .plainText(\"client-secret\")\n .build())\n .build())\n .attributesType(\"AZURE_AD_GROUPS_MAIL\")\n .queryParameters(WorkforcePoolProviderExtraAttributesOauth2ClientQueryParametersArgs.builder()\n .filter(\"mail:gcp\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkforcePool\n properties:\n workforcePoolId: example-pool\n parent: organizations/123456789\n location: global\n example:\n type: gcp:iam:WorkforcePoolProvider\n properties:\n workforcePoolId: ${pool.workforcePoolId}\n location: ${pool.location}\n providerId: example-prvdr\n attributeMapping:\n google.subject: assertion.sub\n oidc:\n issuerUri: https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\n clientId: https://analysis.windows.net/powerbi/connector/GoogleBigQuery\n clientSecret:\n value:\n plainText: client-secret\n webSsoConfig:\n responseType: CODE\n assertionClaimsBehavior: MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\n extraAttributesOauth2Client:\n issuerUri: https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\n clientId: client-id\n clientSecret:\n value:\n plainText: client-secret\n attributesType: AZURE_AD_GROUPS_MAIL\n queryParameters:\n filter: mail:gcp\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkforcePoolProvider can be imported using any of these accepted formats:\n\n* `locations/{{location}}/workforcePools/{{workforce_pool_id}}/providers/{{provider_id}}`\n\n* `{{location}}/{{workforce_pool_id}}/{{provider_id}}`\n\nWhen using the `pulumi import` command, WorkforcePoolProvider can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:iam/workforcePoolProvider:WorkforcePoolProvider default locations/{{location}}/workforcePools/{{workforce_pool_id}}/providers/{{provider_id}}\n```\n\n```sh\n$ pulumi import gcp:iam/workforcePoolProvider:WorkforcePoolProvider default {{location}}/{{workforce_pool_id}}/{{provider_id}}\n```\n\n", + "description": "A configuration for an external identity provider.\n\n\nTo get more information about WorkforcePoolProvider, see:\n\n* [API documentation](https://cloud.google.com/iam/docs/reference/rest/v1/locations.workforcePools.providers)\n* How-to Guides\n * [Configure a provider within the workforce pool](https://cloud.google.com/iam/docs/manage-workforce-identity-pools-providers#configure_a_provider_within_the_workforce_pool)\n\n\u003e **Note:** Ask your Google Cloud account team to request access to workforce identity federation for your\nbilling/quota project. The account team notifies you when the project is granted access.\n\n\n\n## Example Usage\n\n### Iam Workforce Pool Provider Saml Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkforcePool(\"pool\", {\n workforcePoolId: \"example-pool\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\nconst example = new gcp.iam.WorkforcePoolProvider(\"example\", {\n workforcePoolId: pool.workforcePoolId,\n location: pool.location,\n providerId: \"example-prvdr\",\n attributeMapping: {\n \"google.subject\": \"assertion.sub\",\n },\n saml: {\n idpMetadataXml: \"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkforcePool(\"pool\",\n workforce_pool_id=\"example-pool\",\n parent=\"organizations/123456789\",\n location=\"global\")\nexample = gcp.iam.WorkforcePoolProvider(\"example\",\n workforce_pool_id=pool.workforce_pool_id,\n location=pool.location,\n provider_id=\"example-prvdr\",\n attribute_mapping={\n \"google.subject\": \"assertion.sub\",\n },\n saml={\n \"idp_metadata_xml\": \"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\",\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.Iam.WorkforcePool(\"pool\", new()\n {\n WorkforcePoolId = \"example-pool\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n var example = new Gcp.Iam.WorkforcePoolProvider(\"example\", new()\n {\n WorkforcePoolId = pool.WorkforcePoolId,\n Location = pool.Location,\n ProviderId = \"example-prvdr\",\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.sub\" },\n },\n Saml = new Gcp.Iam.Inputs.WorkforcePoolProviderSamlArgs\n {\n IdpMetadataXml = \"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkforcePool(ctx, \"pool\", \u0026iam.WorkforcePoolArgs{\n\t\t\tWorkforcePoolId: pulumi.String(\"example-pool\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkforcePoolProvider(ctx, \"example\", \u0026iam.WorkforcePoolProviderArgs{\n\t\t\tWorkforcePoolId: pool.WorkforcePoolId,\n\t\t\tLocation: pool.Location,\n\t\t\tProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.sub\"),\n\t\t\t},\n\t\t\tSaml: \u0026iam.WorkforcePoolProviderSamlArgs{\n\t\t\t\tIdpMetadataXml: pulumi.String(\"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\"),\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.iam.WorkforcePool;\nimport com.pulumi.gcp.iam.WorkforcePoolArgs;\nimport com.pulumi.gcp.iam.WorkforcePoolProvider;\nimport com.pulumi.gcp.iam.WorkforcePoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderSamlArgs;\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 WorkforcePool(\"pool\", WorkforcePoolArgs.builder()\n .workforcePoolId(\"example-pool\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n var example = new WorkforcePoolProvider(\"example\", WorkforcePoolProviderArgs.builder()\n .workforcePoolId(pool.workforcePoolId())\n .location(pool.location())\n .providerId(\"example-prvdr\")\n .attributeMapping(Map.of(\"google.subject\", \"assertion.sub\"))\n .saml(WorkforcePoolProviderSamlArgs.builder()\n .idpMetadataXml(\"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkforcePool\n properties:\n workforcePoolId: example-pool\n parent: organizations/123456789\n location: global\n example:\n type: gcp:iam:WorkforcePoolProvider\n properties:\n workforcePoolId: ${pool.workforcePoolId}\n location: ${pool.location}\n providerId: example-prvdr\n attributeMapping:\n google.subject: assertion.sub\n saml:\n idpMetadataXml: \u003c?xml version=\"1.0\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\"urn:oasis:names:tc:SAML:2.0:metadata\" entityID=\"https://test.com\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\"urn:oasis:names:tc:SAML:2.0:protocol\"\u003e \u003cmd:KeyDescriptor use=\"signing\"\u003e\u003cds:KeyInfo xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\" Location=\"https://test.com/sso\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workforce Pool Provider Saml Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkforcePool(\"pool\", {\n workforcePoolId: \"example-pool\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\nconst example = new gcp.iam.WorkforcePoolProvider(\"example\", {\n workforcePoolId: pool.workforcePoolId,\n location: pool.location,\n providerId: \"example-prvdr\",\n attributeMapping: {\n \"google.subject\": \"assertion.sub\",\n },\n saml: {\n idpMetadataXml: \"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\",\n },\n displayName: \"Display name\",\n description: \"A sample SAML workforce pool provider.\",\n disabled: false,\n attributeCondition: \"true\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkforcePool(\"pool\",\n workforce_pool_id=\"example-pool\",\n parent=\"organizations/123456789\",\n location=\"global\")\nexample = gcp.iam.WorkforcePoolProvider(\"example\",\n workforce_pool_id=pool.workforce_pool_id,\n location=pool.location,\n provider_id=\"example-prvdr\",\n attribute_mapping={\n \"google.subject\": \"assertion.sub\",\n },\n saml={\n \"idp_metadata_xml\": \"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\",\n },\n display_name=\"Display name\",\n description=\"A sample SAML workforce pool provider.\",\n disabled=False,\n attribute_condition=\"true\")\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.Iam.WorkforcePool(\"pool\", new()\n {\n WorkforcePoolId = \"example-pool\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n var example = new Gcp.Iam.WorkforcePoolProvider(\"example\", new()\n {\n WorkforcePoolId = pool.WorkforcePoolId,\n Location = pool.Location,\n ProviderId = \"example-prvdr\",\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.sub\" },\n },\n Saml = new Gcp.Iam.Inputs.WorkforcePoolProviderSamlArgs\n {\n IdpMetadataXml = \"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\",\n },\n DisplayName = \"Display name\",\n Description = \"A sample SAML workforce pool provider.\",\n Disabled = false,\n AttributeCondition = \"true\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkforcePool(ctx, \"pool\", \u0026iam.WorkforcePoolArgs{\n\t\t\tWorkforcePoolId: pulumi.String(\"example-pool\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkforcePoolProvider(ctx, \"example\", \u0026iam.WorkforcePoolProviderArgs{\n\t\t\tWorkforcePoolId: pool.WorkforcePoolId,\n\t\t\tLocation: pool.Location,\n\t\t\tProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.sub\"),\n\t\t\t},\n\t\t\tSaml: \u0026iam.WorkforcePoolProviderSamlArgs{\n\t\t\t\tIdpMetadataXml: pulumi.String(\"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\"),\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"Display name\"),\n\t\t\tDescription: pulumi.String(\"A sample SAML workforce pool provider.\"),\n\t\t\tDisabled: pulumi.Bool(false),\n\t\t\tAttributeCondition: pulumi.String(\"true\"),\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.iam.WorkforcePool;\nimport com.pulumi.gcp.iam.WorkforcePoolArgs;\nimport com.pulumi.gcp.iam.WorkforcePoolProvider;\nimport com.pulumi.gcp.iam.WorkforcePoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderSamlArgs;\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 WorkforcePool(\"pool\", WorkforcePoolArgs.builder()\n .workforcePoolId(\"example-pool\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n var example = new WorkforcePoolProvider(\"example\", WorkforcePoolProviderArgs.builder()\n .workforcePoolId(pool.workforcePoolId())\n .location(pool.location())\n .providerId(\"example-prvdr\")\n .attributeMapping(Map.of(\"google.subject\", \"assertion.sub\"))\n .saml(WorkforcePoolProviderSamlArgs.builder()\n .idpMetadataXml(\"\u003c?xml version=\\\"1.0\\\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\\\"urn:oasis:names:tc:SAML:2.0:metadata\\\" entityID=\\\"https://test.com\\\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\\\"urn:oasis:names:tc:SAML:2.0:protocol\\\"\u003e \u003cmd:KeyDescriptor use=\\\"signing\\\"\u003e\u003cds:KeyInfo xmlns:ds=\\\"http://www.w3.org/2000/09/xmldsig#\\\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\\\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\\\" Location=\\\"https://test.com/sso\\\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\")\n .build())\n .displayName(\"Display name\")\n .description(\"A sample SAML workforce pool provider.\")\n .disabled(false)\n .attributeCondition(\"true\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkforcePool\n properties:\n workforcePoolId: example-pool\n parent: organizations/123456789\n location: global\n example:\n type: gcp:iam:WorkforcePoolProvider\n properties:\n workforcePoolId: ${pool.workforcePoolId}\n location: ${pool.location}\n providerId: example-prvdr\n attributeMapping:\n google.subject: assertion.sub\n saml:\n idpMetadataXml: \u003c?xml version=\"1.0\"?\u003e\u003cmd:EntityDescriptor xmlns:md=\"urn:oasis:names:tc:SAML:2.0:metadata\" entityID=\"https://test.com\"\u003e\u003cmd:IDPSSODescriptor protocolSupportEnumeration=\"urn:oasis:names:tc:SAML:2.0:protocol\"\u003e \u003cmd:KeyDescriptor use=\"signing\"\u003e\u003cds:KeyInfo xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"\u003e\u003cds:X509Data\u003e\u003cds:X509Certificate\u003eMIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv\u003c/ds:X509Certificate\u003e\u003c/ds:X509Data\u003e\u003c/ds:KeyInfo\u003e\u003c/md:KeyDescriptor\u003e\u003cmd:SingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\" Location=\"https://test.com/sso\"/\u003e\u003c/md:IDPSSODescriptor\u003e\u003c/md:EntityDescriptor\u003e\n displayName: Display name\n description: A sample SAML workforce pool provider.\n disabled: false\n attributeCondition: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workforce Pool Provider Oidc Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkforcePool(\"pool\", {\n workforcePoolId: \"example-pool\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\nconst example = new gcp.iam.WorkforcePoolProvider(\"example\", {\n workforcePoolId: pool.workforcePoolId,\n location: pool.location,\n providerId: \"example-prvdr\",\n attributeMapping: {\n \"google.subject\": \"assertion.sub\",\n },\n oidc: {\n issuerUri: \"https://accounts.thirdparty.com\",\n clientId: \"client-id\",\n clientSecret: {\n value: {\n plainText: \"client-secret\",\n },\n },\n webSsoConfig: {\n responseType: \"CODE\",\n assertionClaimsBehavior: \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkforcePool(\"pool\",\n workforce_pool_id=\"example-pool\",\n parent=\"organizations/123456789\",\n location=\"global\")\nexample = gcp.iam.WorkforcePoolProvider(\"example\",\n workforce_pool_id=pool.workforce_pool_id,\n location=pool.location,\n provider_id=\"example-prvdr\",\n attribute_mapping={\n \"google.subject\": \"assertion.sub\",\n },\n oidc={\n \"issuer_uri\": \"https://accounts.thirdparty.com\",\n \"client_id\": \"client-id\",\n \"client_secret\": {\n \"value\": {\n \"plain_text\": \"client-secret\",\n },\n },\n \"web_sso_config\": {\n \"response_type\": \"CODE\",\n \"assertion_claims_behavior\": \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\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 pool = new Gcp.Iam.WorkforcePool(\"pool\", new()\n {\n WorkforcePoolId = \"example-pool\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n var example = new Gcp.Iam.WorkforcePoolProvider(\"example\", new()\n {\n WorkforcePoolId = pool.WorkforcePoolId,\n Location = pool.Location,\n ProviderId = \"example-prvdr\",\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.sub\" },\n },\n Oidc = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcArgs\n {\n IssuerUri = \"https://accounts.thirdparty.com\",\n ClientId = \"client-id\",\n ClientSecret = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcClientSecretArgs\n {\n Value = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcClientSecretValueArgs\n {\n PlainText = \"client-secret\",\n },\n },\n WebSsoConfig = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcWebSsoConfigArgs\n {\n ResponseType = \"CODE\",\n AssertionClaimsBehavior = \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkforcePool(ctx, \"pool\", \u0026iam.WorkforcePoolArgs{\n\t\t\tWorkforcePoolId: pulumi.String(\"example-pool\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkforcePoolProvider(ctx, \"example\", \u0026iam.WorkforcePoolProviderArgs{\n\t\t\tWorkforcePoolId: pool.WorkforcePoolId,\n\t\t\tLocation: pool.Location,\n\t\t\tProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.sub\"),\n\t\t\t},\n\t\t\tOidc: \u0026iam.WorkforcePoolProviderOidcArgs{\n\t\t\t\tIssuerUri: pulumi.String(\"https://accounts.thirdparty.com\"),\n\t\t\t\tClientId: pulumi.String(\"client-id\"),\n\t\t\t\tClientSecret: \u0026iam.WorkforcePoolProviderOidcClientSecretArgs{\n\t\t\t\t\tValue: \u0026iam.WorkforcePoolProviderOidcClientSecretValueArgs{\n\t\t\t\t\t\tPlainText: pulumi.String(\"client-secret\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWebSsoConfig: \u0026iam.WorkforcePoolProviderOidcWebSsoConfigArgs{\n\t\t\t\t\tResponseType: pulumi.String(\"CODE\"),\n\t\t\t\t\tAssertionClaimsBehavior: pulumi.String(\"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\"),\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.iam.WorkforcePool;\nimport com.pulumi.gcp.iam.WorkforcePoolArgs;\nimport com.pulumi.gcp.iam.WorkforcePoolProvider;\nimport com.pulumi.gcp.iam.WorkforcePoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcClientSecretArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcClientSecretValueArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcWebSsoConfigArgs;\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 WorkforcePool(\"pool\", WorkforcePoolArgs.builder()\n .workforcePoolId(\"example-pool\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n var example = new WorkforcePoolProvider(\"example\", WorkforcePoolProviderArgs.builder()\n .workforcePoolId(pool.workforcePoolId())\n .location(pool.location())\n .providerId(\"example-prvdr\")\n .attributeMapping(Map.of(\"google.subject\", \"assertion.sub\"))\n .oidc(WorkforcePoolProviderOidcArgs.builder()\n .issuerUri(\"https://accounts.thirdparty.com\")\n .clientId(\"client-id\")\n .clientSecret(WorkforcePoolProviderOidcClientSecretArgs.builder()\n .value(WorkforcePoolProviderOidcClientSecretValueArgs.builder()\n .plainText(\"client-secret\")\n .build())\n .build())\n .webSsoConfig(WorkforcePoolProviderOidcWebSsoConfigArgs.builder()\n .responseType(\"CODE\")\n .assertionClaimsBehavior(\"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkforcePool\n properties:\n workforcePoolId: example-pool\n parent: organizations/123456789\n location: global\n example:\n type: gcp:iam:WorkforcePoolProvider\n properties:\n workforcePoolId: ${pool.workforcePoolId}\n location: ${pool.location}\n providerId: example-prvdr\n attributeMapping:\n google.subject: assertion.sub\n oidc:\n issuerUri: https://accounts.thirdparty.com\n clientId: client-id\n clientSecret:\n value:\n plainText: client-secret\n webSsoConfig:\n responseType: CODE\n assertionClaimsBehavior: MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workforce Pool Provider Oidc Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkforcePool(\"pool\", {\n workforcePoolId: \"example-pool\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\nconst example = new gcp.iam.WorkforcePoolProvider(\"example\", {\n workforcePoolId: pool.workforcePoolId,\n location: pool.location,\n providerId: \"example-prvdr\",\n attributeMapping: {\n \"google.subject\": \"assertion.sub\",\n },\n oidc: {\n issuerUri: \"https://accounts.thirdparty.com\",\n clientId: \"client-id\",\n clientSecret: {\n value: {\n plainText: \"client-secret\",\n },\n },\n webSsoConfig: {\n responseType: \"CODE\",\n assertionClaimsBehavior: \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n additionalScopes: [\n \"groups\",\n \"roles\",\n ],\n },\n },\n displayName: \"Display name\",\n description: \"A sample OIDC workforce pool provider.\",\n disabled: false,\n attributeCondition: \"true\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkforcePool(\"pool\",\n workforce_pool_id=\"example-pool\",\n parent=\"organizations/123456789\",\n location=\"global\")\nexample = gcp.iam.WorkforcePoolProvider(\"example\",\n workforce_pool_id=pool.workforce_pool_id,\n location=pool.location,\n provider_id=\"example-prvdr\",\n attribute_mapping={\n \"google.subject\": \"assertion.sub\",\n },\n oidc={\n \"issuer_uri\": \"https://accounts.thirdparty.com\",\n \"client_id\": \"client-id\",\n \"client_secret\": {\n \"value\": {\n \"plain_text\": \"client-secret\",\n },\n },\n \"web_sso_config\": {\n \"response_type\": \"CODE\",\n \"assertion_claims_behavior\": \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n \"additional_scopes\": [\n \"groups\",\n \"roles\",\n ],\n },\n },\n display_name=\"Display name\",\n description=\"A sample OIDC workforce pool provider.\",\n disabled=False,\n attribute_condition=\"true\")\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.Iam.WorkforcePool(\"pool\", new()\n {\n WorkforcePoolId = \"example-pool\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n var example = new Gcp.Iam.WorkforcePoolProvider(\"example\", new()\n {\n WorkforcePoolId = pool.WorkforcePoolId,\n Location = pool.Location,\n ProviderId = \"example-prvdr\",\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.sub\" },\n },\n Oidc = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcArgs\n {\n IssuerUri = \"https://accounts.thirdparty.com\",\n ClientId = \"client-id\",\n ClientSecret = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcClientSecretArgs\n {\n Value = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcClientSecretValueArgs\n {\n PlainText = \"client-secret\",\n },\n },\n WebSsoConfig = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcWebSsoConfigArgs\n {\n ResponseType = \"CODE\",\n AssertionClaimsBehavior = \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n AdditionalScopes = new[]\n {\n \"groups\",\n \"roles\",\n },\n },\n },\n DisplayName = \"Display name\",\n Description = \"A sample OIDC workforce pool provider.\",\n Disabled = false,\n AttributeCondition = \"true\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkforcePool(ctx, \"pool\", \u0026iam.WorkforcePoolArgs{\n\t\t\tWorkforcePoolId: pulumi.String(\"example-pool\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkforcePoolProvider(ctx, \"example\", \u0026iam.WorkforcePoolProviderArgs{\n\t\t\tWorkforcePoolId: pool.WorkforcePoolId,\n\t\t\tLocation: pool.Location,\n\t\t\tProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.sub\"),\n\t\t\t},\n\t\t\tOidc: \u0026iam.WorkforcePoolProviderOidcArgs{\n\t\t\t\tIssuerUri: pulumi.String(\"https://accounts.thirdparty.com\"),\n\t\t\t\tClientId: pulumi.String(\"client-id\"),\n\t\t\t\tClientSecret: \u0026iam.WorkforcePoolProviderOidcClientSecretArgs{\n\t\t\t\t\tValue: \u0026iam.WorkforcePoolProviderOidcClientSecretValueArgs{\n\t\t\t\t\t\tPlainText: pulumi.String(\"client-secret\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWebSsoConfig: \u0026iam.WorkforcePoolProviderOidcWebSsoConfigArgs{\n\t\t\t\t\tResponseType: pulumi.String(\"CODE\"),\n\t\t\t\t\tAssertionClaimsBehavior: pulumi.String(\"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\"),\n\t\t\t\t\tAdditionalScopes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"groups\"),\n\t\t\t\t\t\tpulumi.String(\"roles\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"Display name\"),\n\t\t\tDescription: pulumi.String(\"A sample OIDC workforce pool provider.\"),\n\t\t\tDisabled: pulumi.Bool(false),\n\t\t\tAttributeCondition: pulumi.String(\"true\"),\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.iam.WorkforcePool;\nimport com.pulumi.gcp.iam.WorkforcePoolArgs;\nimport com.pulumi.gcp.iam.WorkforcePoolProvider;\nimport com.pulumi.gcp.iam.WorkforcePoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcClientSecretArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcClientSecretValueArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcWebSsoConfigArgs;\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 WorkforcePool(\"pool\", WorkforcePoolArgs.builder()\n .workforcePoolId(\"example-pool\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n var example = new WorkforcePoolProvider(\"example\", WorkforcePoolProviderArgs.builder()\n .workforcePoolId(pool.workforcePoolId())\n .location(pool.location())\n .providerId(\"example-prvdr\")\n .attributeMapping(Map.of(\"google.subject\", \"assertion.sub\"))\n .oidc(WorkforcePoolProviderOidcArgs.builder()\n .issuerUri(\"https://accounts.thirdparty.com\")\n .clientId(\"client-id\")\n .clientSecret(WorkforcePoolProviderOidcClientSecretArgs.builder()\n .value(WorkforcePoolProviderOidcClientSecretValueArgs.builder()\n .plainText(\"client-secret\")\n .build())\n .build())\n .webSsoConfig(WorkforcePoolProviderOidcWebSsoConfigArgs.builder()\n .responseType(\"CODE\")\n .assertionClaimsBehavior(\"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\")\n .additionalScopes( \n \"groups\",\n \"roles\")\n .build())\n .build())\n .displayName(\"Display name\")\n .description(\"A sample OIDC workforce pool provider.\")\n .disabled(false)\n .attributeCondition(\"true\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkforcePool\n properties:\n workforcePoolId: example-pool\n parent: organizations/123456789\n location: global\n example:\n type: gcp:iam:WorkforcePoolProvider\n properties:\n workforcePoolId: ${pool.workforcePoolId}\n location: ${pool.location}\n providerId: example-prvdr\n attributeMapping:\n google.subject: assertion.sub\n oidc:\n issuerUri: https://accounts.thirdparty.com\n clientId: client-id\n clientSecret:\n value:\n plainText: client-secret\n webSsoConfig:\n responseType: CODE\n assertionClaimsBehavior: MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\n additionalScopes:\n - groups\n - roles\n displayName: Display name\n description: A sample OIDC workforce pool provider.\n disabled: false\n attributeCondition: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workforce Pool Provider Extra Attributes Oauth2 Config Client Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkforcePool(\"pool\", {\n workforcePoolId: \"example-pool\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\nconst example = new gcp.iam.WorkforcePoolProvider(\"example\", {\n workforcePoolId: pool.workforcePoolId,\n location: pool.location,\n providerId: \"example-prvdr\",\n attributeMapping: {\n \"google.subject\": \"assertion.sub\",\n },\n oidc: {\n issuerUri: \"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\",\n clientId: \"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\",\n webSsoConfig: {\n responseType: \"CODE\",\n assertionClaimsBehavior: \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n },\n clientSecret: {\n value: {\n plainText: \"client-secret\",\n },\n },\n },\n extraAttributesOauth2Client: {\n issuerUri: \"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\",\n clientId: \"client-id\",\n clientSecret: {\n value: {\n plainText: \"client-secret\",\n },\n },\n attributesType: \"AZURE_AD_GROUPS_MAIL\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkforcePool(\"pool\",\n workforce_pool_id=\"example-pool\",\n parent=\"organizations/123456789\",\n location=\"global\")\nexample = gcp.iam.WorkforcePoolProvider(\"example\",\n workforce_pool_id=pool.workforce_pool_id,\n location=pool.location,\n provider_id=\"example-prvdr\",\n attribute_mapping={\n \"google.subject\": \"assertion.sub\",\n },\n oidc={\n \"issuer_uri\": \"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\",\n \"client_id\": \"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\",\n \"web_sso_config\": {\n \"response_type\": \"CODE\",\n \"assertion_claims_behavior\": \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n },\n \"client_secret\": {\n \"value\": {\n \"plain_text\": \"client-secret\",\n },\n },\n },\n extra_attributes_oauth2_client={\n \"issuer_uri\": \"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\",\n \"client_id\": \"client-id\",\n \"client_secret\": {\n \"value\": {\n \"plain_text\": \"client-secret\",\n },\n },\n \"attributes_type\": \"AZURE_AD_GROUPS_MAIL\",\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.Iam.WorkforcePool(\"pool\", new()\n {\n WorkforcePoolId = \"example-pool\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n var example = new Gcp.Iam.WorkforcePoolProvider(\"example\", new()\n {\n WorkforcePoolId = pool.WorkforcePoolId,\n Location = pool.Location,\n ProviderId = \"example-prvdr\",\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.sub\" },\n },\n Oidc = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcArgs\n {\n IssuerUri = \"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\",\n ClientId = \"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\",\n WebSsoConfig = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcWebSsoConfigArgs\n {\n ResponseType = \"CODE\",\n AssertionClaimsBehavior = \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n },\n ClientSecret = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcClientSecretArgs\n {\n Value = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcClientSecretValueArgs\n {\n PlainText = \"client-secret\",\n },\n },\n },\n ExtraAttributesOauth2Client = new Gcp.Iam.Inputs.WorkforcePoolProviderExtraAttributesOauth2ClientArgs\n {\n IssuerUri = \"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\",\n ClientId = \"client-id\",\n ClientSecret = new Gcp.Iam.Inputs.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretArgs\n {\n Value = new Gcp.Iam.Inputs.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretValueArgs\n {\n PlainText = \"client-secret\",\n },\n },\n AttributesType = \"AZURE_AD_GROUPS_MAIL\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkforcePool(ctx, \"pool\", \u0026iam.WorkforcePoolArgs{\n\t\t\tWorkforcePoolId: pulumi.String(\"example-pool\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkforcePoolProvider(ctx, \"example\", \u0026iam.WorkforcePoolProviderArgs{\n\t\t\tWorkforcePoolId: pool.WorkforcePoolId,\n\t\t\tLocation: pool.Location,\n\t\t\tProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.sub\"),\n\t\t\t},\n\t\t\tOidc: \u0026iam.WorkforcePoolProviderOidcArgs{\n\t\t\t\tIssuerUri: pulumi.String(\"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\"),\n\t\t\t\tClientId: pulumi.String(\"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\"),\n\t\t\t\tWebSsoConfig: \u0026iam.WorkforcePoolProviderOidcWebSsoConfigArgs{\n\t\t\t\t\tResponseType: pulumi.String(\"CODE\"),\n\t\t\t\t\tAssertionClaimsBehavior: pulumi.String(\"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\"),\n\t\t\t\t},\n\t\t\t\tClientSecret: \u0026iam.WorkforcePoolProviderOidcClientSecretArgs{\n\t\t\t\t\tValue: \u0026iam.WorkforcePoolProviderOidcClientSecretValueArgs{\n\t\t\t\t\t\tPlainText: pulumi.String(\"client-secret\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tExtraAttributesOauth2Client: \u0026iam.WorkforcePoolProviderExtraAttributesOauth2ClientArgs{\n\t\t\t\tIssuerUri: pulumi.String(\"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\"),\n\t\t\t\tClientId: pulumi.String(\"client-id\"),\n\t\t\t\tClientSecret: \u0026iam.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretArgs{\n\t\t\t\t\tValue: \u0026iam.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretValueArgs{\n\t\t\t\t\t\tPlainText: pulumi.String(\"client-secret\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAttributesType: pulumi.String(\"AZURE_AD_GROUPS_MAIL\"),\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.iam.WorkforcePool;\nimport com.pulumi.gcp.iam.WorkforcePoolArgs;\nimport com.pulumi.gcp.iam.WorkforcePoolProvider;\nimport com.pulumi.gcp.iam.WorkforcePoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcWebSsoConfigArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcClientSecretArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcClientSecretValueArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderExtraAttributesOauth2ClientArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretValueArgs;\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 WorkforcePool(\"pool\", WorkforcePoolArgs.builder()\n .workforcePoolId(\"example-pool\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n var example = new WorkforcePoolProvider(\"example\", WorkforcePoolProviderArgs.builder()\n .workforcePoolId(pool.workforcePoolId())\n .location(pool.location())\n .providerId(\"example-prvdr\")\n .attributeMapping(Map.of(\"google.subject\", \"assertion.sub\"))\n .oidc(WorkforcePoolProviderOidcArgs.builder()\n .issuerUri(\"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\")\n .clientId(\"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\")\n .webSsoConfig(WorkforcePoolProviderOidcWebSsoConfigArgs.builder()\n .responseType(\"CODE\")\n .assertionClaimsBehavior(\"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\")\n .build())\n .clientSecret(WorkforcePoolProviderOidcClientSecretArgs.builder()\n .value(WorkforcePoolProviderOidcClientSecretValueArgs.builder()\n .plainText(\"client-secret\")\n .build())\n .build())\n .build())\n .extraAttributesOauth2Client(WorkforcePoolProviderExtraAttributesOauth2ClientArgs.builder()\n .issuerUri(\"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\")\n .clientId(\"client-id\")\n .clientSecret(WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretArgs.builder()\n .value(WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretValueArgs.builder()\n .plainText(\"client-secret\")\n .build())\n .build())\n .attributesType(\"AZURE_AD_GROUPS_MAIL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkforcePool\n properties:\n workforcePoolId: example-pool\n parent: organizations/123456789\n location: global\n example:\n type: gcp:iam:WorkforcePoolProvider\n properties:\n workforcePoolId: ${pool.workforcePoolId}\n location: ${pool.location}\n providerId: example-prvdr\n attributeMapping:\n google.subject: assertion.sub\n oidc:\n issuerUri: https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\n clientId: https://analysis.windows.net/powerbi/connector/GoogleBigQuery\n webSsoConfig:\n responseType: CODE\n assertionClaimsBehavior: MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\n clientSecret:\n value:\n plainText: client-secret\n extraAttributesOauth2Client:\n issuerUri: https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\n clientId: client-id\n clientSecret:\n value:\n plainText: client-secret\n attributesType: AZURE_AD_GROUPS_MAIL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workforce Pool Provider Extra Attributes Oauth2 Config Client Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkforcePool(\"pool\", {\n workforcePoolId: \"example-pool\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\nconst example = new gcp.iam.WorkforcePoolProvider(\"example\", {\n workforcePoolId: pool.workforcePoolId,\n location: pool.location,\n providerId: \"example-prvdr\",\n attributeMapping: {\n \"google.subject\": \"assertion.sub\",\n },\n oidc: {\n issuerUri: \"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\",\n clientId: \"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\",\n clientSecret: {\n value: {\n plainText: \"client-secret\",\n },\n },\n webSsoConfig: {\n responseType: \"CODE\",\n assertionClaimsBehavior: \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n },\n },\n extraAttributesOauth2Client: {\n issuerUri: \"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\",\n clientId: \"client-id\",\n clientSecret: {\n value: {\n plainText: \"client-secret\",\n },\n },\n attributesType: \"AZURE_AD_GROUPS_MAIL\",\n queryParameters: {\n filter: \"mail:gcp\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkforcePool(\"pool\",\n workforce_pool_id=\"example-pool\",\n parent=\"organizations/123456789\",\n location=\"global\")\nexample = gcp.iam.WorkforcePoolProvider(\"example\",\n workforce_pool_id=pool.workforce_pool_id,\n location=pool.location,\n provider_id=\"example-prvdr\",\n attribute_mapping={\n \"google.subject\": \"assertion.sub\",\n },\n oidc={\n \"issuer_uri\": \"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\",\n \"client_id\": \"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\",\n \"client_secret\": {\n \"value\": {\n \"plain_text\": \"client-secret\",\n },\n },\n \"web_sso_config\": {\n \"response_type\": \"CODE\",\n \"assertion_claims_behavior\": \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n },\n },\n extra_attributes_oauth2_client={\n \"issuer_uri\": \"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\",\n \"client_id\": \"client-id\",\n \"client_secret\": {\n \"value\": {\n \"plain_text\": \"client-secret\",\n },\n },\n \"attributes_type\": \"AZURE_AD_GROUPS_MAIL\",\n \"query_parameters\": {\n \"filter\": \"mail:gcp\",\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 pool = new Gcp.Iam.WorkforcePool(\"pool\", new()\n {\n WorkforcePoolId = \"example-pool\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n var example = new Gcp.Iam.WorkforcePoolProvider(\"example\", new()\n {\n WorkforcePoolId = pool.WorkforcePoolId,\n Location = pool.Location,\n ProviderId = \"example-prvdr\",\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.sub\" },\n },\n Oidc = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcArgs\n {\n IssuerUri = \"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\",\n ClientId = \"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\",\n ClientSecret = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcClientSecretArgs\n {\n Value = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcClientSecretValueArgs\n {\n PlainText = \"client-secret\",\n },\n },\n WebSsoConfig = new Gcp.Iam.Inputs.WorkforcePoolProviderOidcWebSsoConfigArgs\n {\n ResponseType = \"CODE\",\n AssertionClaimsBehavior = \"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\",\n },\n },\n ExtraAttributesOauth2Client = new Gcp.Iam.Inputs.WorkforcePoolProviderExtraAttributesOauth2ClientArgs\n {\n IssuerUri = \"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\",\n ClientId = \"client-id\",\n ClientSecret = new Gcp.Iam.Inputs.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretArgs\n {\n Value = new Gcp.Iam.Inputs.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretValueArgs\n {\n PlainText = \"client-secret\",\n },\n },\n AttributesType = \"AZURE_AD_GROUPS_MAIL\",\n QueryParameters = new Gcp.Iam.Inputs.WorkforcePoolProviderExtraAttributesOauth2ClientQueryParametersArgs\n {\n Filter = \"mail:gcp\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkforcePool(ctx, \"pool\", \u0026iam.WorkforcePoolArgs{\n\t\t\tWorkforcePoolId: pulumi.String(\"example-pool\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkforcePoolProvider(ctx, \"example\", \u0026iam.WorkforcePoolProviderArgs{\n\t\t\tWorkforcePoolId: pool.WorkforcePoolId,\n\t\t\tLocation: pool.Location,\n\t\t\tProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.sub\"),\n\t\t\t},\n\t\t\tOidc: \u0026iam.WorkforcePoolProviderOidcArgs{\n\t\t\t\tIssuerUri: pulumi.String(\"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\"),\n\t\t\t\tClientId: pulumi.String(\"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\"),\n\t\t\t\tClientSecret: \u0026iam.WorkforcePoolProviderOidcClientSecretArgs{\n\t\t\t\t\tValue: \u0026iam.WorkforcePoolProviderOidcClientSecretValueArgs{\n\t\t\t\t\t\tPlainText: pulumi.String(\"client-secret\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWebSsoConfig: \u0026iam.WorkforcePoolProviderOidcWebSsoConfigArgs{\n\t\t\t\t\tResponseType: pulumi.String(\"CODE\"),\n\t\t\t\t\tAssertionClaimsBehavior: pulumi.String(\"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tExtraAttributesOauth2Client: \u0026iam.WorkforcePoolProviderExtraAttributesOauth2ClientArgs{\n\t\t\t\tIssuerUri: pulumi.String(\"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\"),\n\t\t\t\tClientId: pulumi.String(\"client-id\"),\n\t\t\t\tClientSecret: \u0026iam.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretArgs{\n\t\t\t\t\tValue: \u0026iam.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretValueArgs{\n\t\t\t\t\t\tPlainText: pulumi.String(\"client-secret\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAttributesType: pulumi.String(\"AZURE_AD_GROUPS_MAIL\"),\n\t\t\t\tQueryParameters: \u0026iam.WorkforcePoolProviderExtraAttributesOauth2ClientQueryParametersArgs{\n\t\t\t\t\tFilter: pulumi.String(\"mail:gcp\"),\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.iam.WorkforcePool;\nimport com.pulumi.gcp.iam.WorkforcePoolArgs;\nimport com.pulumi.gcp.iam.WorkforcePoolProvider;\nimport com.pulumi.gcp.iam.WorkforcePoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcClientSecretArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcClientSecretValueArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderOidcWebSsoConfigArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderExtraAttributesOauth2ClientArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretValueArgs;\nimport com.pulumi.gcp.iam.inputs.WorkforcePoolProviderExtraAttributesOauth2ClientQueryParametersArgs;\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 WorkforcePool(\"pool\", WorkforcePoolArgs.builder()\n .workforcePoolId(\"example-pool\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n var example = new WorkforcePoolProvider(\"example\", WorkforcePoolProviderArgs.builder()\n .workforcePoolId(pool.workforcePoolId())\n .location(pool.location())\n .providerId(\"example-prvdr\")\n .attributeMapping(Map.of(\"google.subject\", \"assertion.sub\"))\n .oidc(WorkforcePoolProviderOidcArgs.builder()\n .issuerUri(\"https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\")\n .clientId(\"https://analysis.windows.net/powerbi/connector/GoogleBigQuery\")\n .clientSecret(WorkforcePoolProviderOidcClientSecretArgs.builder()\n .value(WorkforcePoolProviderOidcClientSecretValueArgs.builder()\n .plainText(\"client-secret\")\n .build())\n .build())\n .webSsoConfig(WorkforcePoolProviderOidcWebSsoConfigArgs.builder()\n .responseType(\"CODE\")\n .assertionClaimsBehavior(\"MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\")\n .build())\n .build())\n .extraAttributesOauth2Client(WorkforcePoolProviderExtraAttributesOauth2ClientArgs.builder()\n .issuerUri(\"https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\")\n .clientId(\"client-id\")\n .clientSecret(WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretArgs.builder()\n .value(WorkforcePoolProviderExtraAttributesOauth2ClientClientSecretValueArgs.builder()\n .plainText(\"client-secret\")\n .build())\n .build())\n .attributesType(\"AZURE_AD_GROUPS_MAIL\")\n .queryParameters(WorkforcePoolProviderExtraAttributesOauth2ClientQueryParametersArgs.builder()\n .filter(\"mail:gcp\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkforcePool\n properties:\n workforcePoolId: example-pool\n parent: organizations/123456789\n location: global\n example:\n type: gcp:iam:WorkforcePoolProvider\n properties:\n workforcePoolId: ${pool.workforcePoolId}\n location: ${pool.location}\n providerId: example-prvdr\n attributeMapping:\n google.subject: assertion.sub\n oidc:\n issuerUri: https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/\n clientId: https://analysis.windows.net/powerbi/connector/GoogleBigQuery\n clientSecret:\n value:\n plainText: client-secret\n webSsoConfig:\n responseType: CODE\n assertionClaimsBehavior: MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS\n extraAttributesOauth2Client:\n issuerUri: https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0\n clientId: client-id\n clientSecret:\n value:\n plainText: client-secret\n attributesType: AZURE_AD_GROUPS_MAIL\n queryParameters:\n filter: mail:gcp\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkforcePoolProvider can be imported using any of these accepted formats:\n\n* `locations/{{location}}/workforcePools/{{workforce_pool_id}}/providers/{{provider_id}}`\n\n* `{{location}}/{{workforce_pool_id}}/{{provider_id}}`\n\nWhen using the `pulumi import` command, WorkforcePoolProvider can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:iam/workforcePoolProvider:WorkforcePoolProvider default locations/{{location}}/workforcePools/{{workforce_pool_id}}/providers/{{provider_id}}\n```\n\n```sh\n$ pulumi import gcp:iam/workforcePoolProvider:WorkforcePoolProvider default {{location}}/{{workforce_pool_id}}/{{provider_id}}\n```\n\n", "properties": { "attributeCondition": { "type": "string", @@ -202021,7 +202021,7 @@ } }, "gcp:iam/workloadIdentityPoolProvider:WorkloadIdentityPoolProvider": { - "description": "A configuration for an external identity provider.\n\n\nTo get more information about WorkloadIdentityPoolProvider, see:\n\n* [API documentation](https://cloud.google.com/iam/docs/reference/rest/v1/projects.locations.workloadIdentityPools.providers)\n* How-to Guides\n * [Managing workload identity providers](https://cloud.google.com/iam/docs/manage-workload-identity-pools-providers#managing_workload_identity_providers)\n\n## Example Usage\n\n### Iam Workload Identity Pool Provider Aws Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkloadIdentityPool(\"pool\", {workloadIdentityPoolId: \"example-pool\"});\nconst example = new gcp.iam.WorkloadIdentityPoolProvider(\"example\", {\n workloadIdentityPoolId: pool.workloadIdentityPoolId,\n workloadIdentityPoolProviderId: \"example-prvdr\",\n aws: {\n accountId: \"999999999999\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkloadIdentityPool(\"pool\", workload_identity_pool_id=\"example-pool\")\nexample = gcp.iam.WorkloadIdentityPoolProvider(\"example\",\n workload_identity_pool_id=pool.workload_identity_pool_id,\n workload_identity_pool_provider_id=\"example-prvdr\",\n aws={\n \"accountId\": \"999999999999\",\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.Iam.WorkloadIdentityPool(\"pool\", new()\n {\n WorkloadIdentityPoolId = \"example-pool\",\n });\n\n var example = new Gcp.Iam.WorkloadIdentityPoolProvider(\"example\", new()\n {\n WorkloadIdentityPoolId = pool.WorkloadIdentityPoolId,\n WorkloadIdentityPoolProviderId = \"example-prvdr\",\n Aws = new Gcp.Iam.Inputs.WorkloadIdentityPoolProviderAwsArgs\n {\n AccountId = \"999999999999\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkloadIdentityPool(ctx, \"pool\", \u0026iam.WorkloadIdentityPoolArgs{\n\t\t\tWorkloadIdentityPoolId: pulumi.String(\"example-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkloadIdentityPoolProvider(ctx, \"example\", \u0026iam.WorkloadIdentityPoolProviderArgs{\n\t\t\tWorkloadIdentityPoolId: pool.WorkloadIdentityPoolId,\n\t\t\tWorkloadIdentityPoolProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tAws: \u0026iam.WorkloadIdentityPoolProviderAwsArgs{\n\t\t\t\tAccountId: pulumi.String(\"999999999999\"),\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.iam.WorkloadIdentityPool;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolArgs;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProvider;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkloadIdentityPoolProviderAwsArgs;\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 WorkloadIdentityPool(\"pool\", WorkloadIdentityPoolArgs.builder()\n .workloadIdentityPoolId(\"example-pool\")\n .build());\n\n var example = new WorkloadIdentityPoolProvider(\"example\", WorkloadIdentityPoolProviderArgs.builder()\n .workloadIdentityPoolId(pool.workloadIdentityPoolId())\n .workloadIdentityPoolProviderId(\"example-prvdr\")\n .aws(WorkloadIdentityPoolProviderAwsArgs.builder()\n .accountId(\"999999999999\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkloadIdentityPool\n properties:\n workloadIdentityPoolId: example-pool\n example:\n type: gcp:iam:WorkloadIdentityPoolProvider\n properties:\n workloadIdentityPoolId: ${pool.workloadIdentityPoolId}\n workloadIdentityPoolProviderId: example-prvdr\n aws:\n accountId: '999999999999'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workload Identity Pool Provider Aws Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkloadIdentityPool(\"pool\", {workloadIdentityPoolId: \"example-pool\"});\nconst example = new gcp.iam.WorkloadIdentityPoolProvider(\"example\", {\n workloadIdentityPoolId: pool.workloadIdentityPoolId,\n workloadIdentityPoolProviderId: \"example-prvdr\",\n displayName: \"Name of provider\",\n description: \"AWS identity pool provider for automated test\",\n disabled: true,\n attributeCondition: \"attribute.aws_role==\\\"arn:aws:sts::999999999999:assumed-role/stack-eu-central-1-lambdaRole\\\"\",\n attributeMapping: {\n \"google.subject\": \"assertion.arn\",\n \"attribute.aws_account\": \"assertion.account\",\n \"attribute.environment\": \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\",\n },\n aws: {\n accountId: \"999999999999\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkloadIdentityPool(\"pool\", workload_identity_pool_id=\"example-pool\")\nexample = gcp.iam.WorkloadIdentityPoolProvider(\"example\",\n workload_identity_pool_id=pool.workload_identity_pool_id,\n workload_identity_pool_provider_id=\"example-prvdr\",\n display_name=\"Name of provider\",\n description=\"AWS identity pool provider for automated test\",\n disabled=True,\n attribute_condition=\"attribute.aws_role==\\\"arn:aws:sts::999999999999:assumed-role/stack-eu-central-1-lambdaRole\\\"\",\n attribute_mapping={\n \"google.subject\": \"assertion.arn\",\n \"attribute.aws_account\": \"assertion.account\",\n \"attribute.environment\": \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\",\n },\n aws={\n \"accountId\": \"999999999999\",\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.Iam.WorkloadIdentityPool(\"pool\", new()\n {\n WorkloadIdentityPoolId = \"example-pool\",\n });\n\n var example = new Gcp.Iam.WorkloadIdentityPoolProvider(\"example\", new()\n {\n WorkloadIdentityPoolId = pool.WorkloadIdentityPoolId,\n WorkloadIdentityPoolProviderId = \"example-prvdr\",\n DisplayName = \"Name of provider\",\n Description = \"AWS identity pool provider for automated test\",\n Disabled = true,\n AttributeCondition = \"attribute.aws_role==\\\"arn:aws:sts::999999999999:assumed-role/stack-eu-central-1-lambdaRole\\\"\",\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.arn\" },\n { \"attribute.aws_account\", \"assertion.account\" },\n { \"attribute.environment\", \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\" },\n },\n Aws = new Gcp.Iam.Inputs.WorkloadIdentityPoolProviderAwsArgs\n {\n AccountId = \"999999999999\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkloadIdentityPool(ctx, \"pool\", \u0026iam.WorkloadIdentityPoolArgs{\n\t\t\tWorkloadIdentityPoolId: pulumi.String(\"example-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkloadIdentityPoolProvider(ctx, \"example\", \u0026iam.WorkloadIdentityPoolProviderArgs{\n\t\t\tWorkloadIdentityPoolId: pool.WorkloadIdentityPoolId,\n\t\t\tWorkloadIdentityPoolProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tDisplayName: pulumi.String(\"Name of provider\"),\n\t\t\tDescription: pulumi.String(\"AWS identity pool provider for automated test\"),\n\t\t\tDisabled: pulumi.Bool(true),\n\t\t\tAttributeCondition: pulumi.String(\"attribute.aws_role==\\\"arn:aws:sts::999999999999:assumed-role/stack-eu-central-1-lambdaRole\\\"\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.arn\"),\n\t\t\t\t\"attribute.aws_account\": pulumi.String(\"assertion.account\"),\n\t\t\t\t\"attribute.environment\": pulumi.String(\"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\"),\n\t\t\t},\n\t\t\tAws: \u0026iam.WorkloadIdentityPoolProviderAwsArgs{\n\t\t\t\tAccountId: pulumi.String(\"999999999999\"),\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.iam.WorkloadIdentityPool;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolArgs;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProvider;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkloadIdentityPoolProviderAwsArgs;\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 WorkloadIdentityPool(\"pool\", WorkloadIdentityPoolArgs.builder()\n .workloadIdentityPoolId(\"example-pool\")\n .build());\n\n var example = new WorkloadIdentityPoolProvider(\"example\", WorkloadIdentityPoolProviderArgs.builder()\n .workloadIdentityPoolId(pool.workloadIdentityPoolId())\n .workloadIdentityPoolProviderId(\"example-prvdr\")\n .displayName(\"Name of provider\")\n .description(\"AWS identity pool provider for automated test\")\n .disabled(true)\n .attributeCondition(\"attribute.aws_role==\\\"arn:aws:sts::999999999999:assumed-role/stack-eu-central-1-lambdaRole\\\"\")\n .attributeMapping(Map.ofEntries(\n Map.entry(\"google.subject\", \"assertion.arn\"),\n Map.entry(\"attribute.aws_account\", \"assertion.account\"),\n Map.entry(\"attribute.environment\", \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\")\n ))\n .aws(WorkloadIdentityPoolProviderAwsArgs.builder()\n .accountId(\"999999999999\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkloadIdentityPool\n properties:\n workloadIdentityPoolId: example-pool\n example:\n type: gcp:iam:WorkloadIdentityPoolProvider\n properties:\n workloadIdentityPoolId: ${pool.workloadIdentityPoolId}\n workloadIdentityPoolProviderId: example-prvdr\n displayName: Name of provider\n description: AWS identity pool provider for automated test\n disabled: true\n attributeCondition: attribute.aws_role==\"arn:aws:sts::999999999999:assumed-role/stack-eu-central-1-lambdaRole\"\n attributeMapping:\n google.subject: assertion.arn\n attribute.aws_account: assertion.account\n attribute.environment: 'assertion.arn.contains(\":instance-profile/Production\") ? \"prod\" : \"test\"'\n aws:\n accountId: '999999999999'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workload Identity Pool Provider Oidc Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkloadIdentityPool(\"pool\", {workloadIdentityPoolId: \"example-pool\"});\nconst example = new gcp.iam.WorkloadIdentityPoolProvider(\"example\", {\n workloadIdentityPoolId: pool.workloadIdentityPoolId,\n workloadIdentityPoolProviderId: \"example-prvdr\",\n attributeMapping: {\n \"google.subject\": \"assertion.sub\",\n },\n oidc: {\n issuerUri: \"https://sts.windows.net/azure-tenant-id\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkloadIdentityPool(\"pool\", workload_identity_pool_id=\"example-pool\")\nexample = gcp.iam.WorkloadIdentityPoolProvider(\"example\",\n workload_identity_pool_id=pool.workload_identity_pool_id,\n workload_identity_pool_provider_id=\"example-prvdr\",\n attribute_mapping={\n \"google.subject\": \"assertion.sub\",\n },\n oidc={\n \"issuerUri\": \"https://sts.windows.net/azure-tenant-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.Iam.WorkloadIdentityPool(\"pool\", new()\n {\n WorkloadIdentityPoolId = \"example-pool\",\n });\n\n var example = new Gcp.Iam.WorkloadIdentityPoolProvider(\"example\", new()\n {\n WorkloadIdentityPoolId = pool.WorkloadIdentityPoolId,\n WorkloadIdentityPoolProviderId = \"example-prvdr\",\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.sub\" },\n },\n Oidc = new Gcp.Iam.Inputs.WorkloadIdentityPoolProviderOidcArgs\n {\n IssuerUri = \"https://sts.windows.net/azure-tenant-id\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkloadIdentityPool(ctx, \"pool\", \u0026iam.WorkloadIdentityPoolArgs{\n\t\t\tWorkloadIdentityPoolId: pulumi.String(\"example-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkloadIdentityPoolProvider(ctx, \"example\", \u0026iam.WorkloadIdentityPoolProviderArgs{\n\t\t\tWorkloadIdentityPoolId: pool.WorkloadIdentityPoolId,\n\t\t\tWorkloadIdentityPoolProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.sub\"),\n\t\t\t},\n\t\t\tOidc: \u0026iam.WorkloadIdentityPoolProviderOidcArgs{\n\t\t\t\tIssuerUri: pulumi.String(\"https://sts.windows.net/azure-tenant-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.iam.WorkloadIdentityPool;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolArgs;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProvider;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkloadIdentityPoolProviderOidcArgs;\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 WorkloadIdentityPool(\"pool\", WorkloadIdentityPoolArgs.builder()\n .workloadIdentityPoolId(\"example-pool\")\n .build());\n\n var example = new WorkloadIdentityPoolProvider(\"example\", WorkloadIdentityPoolProviderArgs.builder()\n .workloadIdentityPoolId(pool.workloadIdentityPoolId())\n .workloadIdentityPoolProviderId(\"example-prvdr\")\n .attributeMapping(Map.of(\"google.subject\", \"assertion.sub\"))\n .oidc(WorkloadIdentityPoolProviderOidcArgs.builder()\n .issuerUri(\"https://sts.windows.net/azure-tenant-id\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkloadIdentityPool\n properties:\n workloadIdentityPoolId: example-pool\n example:\n type: gcp:iam:WorkloadIdentityPoolProvider\n properties:\n workloadIdentityPoolId: ${pool.workloadIdentityPoolId}\n workloadIdentityPoolProviderId: example-prvdr\n attributeMapping:\n google.subject: assertion.sub\n oidc:\n issuerUri: https://sts.windows.net/azure-tenant-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workload Identity Pool Provider Oidc Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkloadIdentityPool(\"pool\", {workloadIdentityPoolId: \"example-pool\"});\nconst example = new gcp.iam.WorkloadIdentityPoolProvider(\"example\", {\n workloadIdentityPoolId: pool.workloadIdentityPoolId,\n workloadIdentityPoolProviderId: \"example-prvdr\",\n displayName: \"Name of provider\",\n description: \"OIDC identity pool provider for automated test\",\n disabled: true,\n attributeCondition: \"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\",\n attributeMapping: {\n \"google.subject\": \"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\",\n \"attribute.tid\": \"assertion.tid\",\n \"attribute.managed_identity_name\": ` {\n \"8bb39bdb-1cc5-4447-b7db-a19e920eb111\":\"workload1\",\n \"55d36609-9bcf-48e0-a366-a3cf19027d2a\":\"workload2\"\n }[assertion.oid]\n`,\n },\n oidc: {\n allowedAudiences: [\n \"https://example.com/gcp-oidc-federation\",\n \"example.com/gcp-oidc-federation\",\n ],\n issuerUri: \"https://sts.windows.net/azure-tenant-id\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkloadIdentityPool(\"pool\", workload_identity_pool_id=\"example-pool\")\nexample = gcp.iam.WorkloadIdentityPoolProvider(\"example\",\n workload_identity_pool_id=pool.workload_identity_pool_id,\n workload_identity_pool_provider_id=\"example-prvdr\",\n display_name=\"Name of provider\",\n description=\"OIDC identity pool provider for automated test\",\n disabled=True,\n attribute_condition=\"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\",\n attribute_mapping={\n \"google.subject\": \"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\",\n \"attribute.tid\": \"assertion.tid\",\n \"attribute.managed_identity_name\": \"\"\" {\n \"8bb39bdb-1cc5-4447-b7db-a19e920eb111\":\"workload1\",\n \"55d36609-9bcf-48e0-a366-a3cf19027d2a\":\"workload2\"\n }[assertion.oid]\n\"\"\",\n },\n oidc={\n \"allowedAudiences\": [\n \"https://example.com/gcp-oidc-federation\",\n \"example.com/gcp-oidc-federation\",\n ],\n \"issuerUri\": \"https://sts.windows.net/azure-tenant-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.Iam.WorkloadIdentityPool(\"pool\", new()\n {\n WorkloadIdentityPoolId = \"example-pool\",\n });\n\n var example = new Gcp.Iam.WorkloadIdentityPoolProvider(\"example\", new()\n {\n WorkloadIdentityPoolId = pool.WorkloadIdentityPoolId,\n WorkloadIdentityPoolProviderId = \"example-prvdr\",\n DisplayName = \"Name of provider\",\n Description = \"OIDC identity pool provider for automated test\",\n Disabled = true,\n AttributeCondition = \"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\",\n AttributeMapping = \n {\n { \"google.subject\", \"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\" },\n { \"attribute.tid\", \"assertion.tid\" },\n { \"attribute.managed_identity_name\", @\" {\n \"\"8bb39bdb-1cc5-4447-b7db-a19e920eb111\"\":\"\"workload1\"\",\n \"\"55d36609-9bcf-48e0-a366-a3cf19027d2a\"\":\"\"workload2\"\"\n }[assertion.oid]\n\" },\n },\n Oidc = new Gcp.Iam.Inputs.WorkloadIdentityPoolProviderOidcArgs\n {\n AllowedAudiences = new[]\n {\n \"https://example.com/gcp-oidc-federation\",\n \"example.com/gcp-oidc-federation\",\n },\n IssuerUri = \"https://sts.windows.net/azure-tenant-id\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkloadIdentityPool(ctx, \"pool\", \u0026iam.WorkloadIdentityPoolArgs{\n\t\t\tWorkloadIdentityPoolId: pulumi.String(\"example-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkloadIdentityPoolProvider(ctx, \"example\", \u0026iam.WorkloadIdentityPoolProviderArgs{\n\t\t\tWorkloadIdentityPoolId: pool.WorkloadIdentityPoolId,\n\t\t\tWorkloadIdentityPoolProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tDisplayName: pulumi.String(\"Name of provider\"),\n\t\t\tDescription: pulumi.String(\"OIDC identity pool provider for automated test\"),\n\t\t\tDisabled: pulumi.Bool(true),\n\t\t\tAttributeCondition: pulumi.String(\"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\"),\n\t\t\t\t\"attribute.tid\": pulumi.String(\"assertion.tid\"),\n\t\t\t\t\"attribute.managed_identity_name\": pulumi.String(\" {\\n \\\"8bb39bdb-1cc5-4447-b7db-a19e920eb111\\\":\\\"workload1\\\",\\n \\\"55d36609-9bcf-48e0-a366-a3cf19027d2a\\\":\\\"workload2\\\"\\n }[assertion.oid]\\n\"),\n\t\t\t},\n\t\t\tOidc: \u0026iam.WorkloadIdentityPoolProviderOidcArgs{\n\t\t\t\tAllowedAudiences: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://example.com/gcp-oidc-federation\"),\n\t\t\t\t\tpulumi.String(\"example.com/gcp-oidc-federation\"),\n\t\t\t\t},\n\t\t\t\tIssuerUri: pulumi.String(\"https://sts.windows.net/azure-tenant-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.iam.WorkloadIdentityPool;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolArgs;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProvider;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkloadIdentityPoolProviderOidcArgs;\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 WorkloadIdentityPool(\"pool\", WorkloadIdentityPoolArgs.builder()\n .workloadIdentityPoolId(\"example-pool\")\n .build());\n\n var example = new WorkloadIdentityPoolProvider(\"example\", WorkloadIdentityPoolProviderArgs.builder()\n .workloadIdentityPoolId(pool.workloadIdentityPoolId())\n .workloadIdentityPoolProviderId(\"example-prvdr\")\n .displayName(\"Name of provider\")\n .description(\"OIDC identity pool provider for automated test\")\n .disabled(true)\n .attributeCondition(\"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\")\n .attributeMapping(Map.ofEntries(\n Map.entry(\"google.subject\", \"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\"),\n Map.entry(\"attribute.tid\", \"assertion.tid\"),\n Map.entry(\"attribute.managed_identity_name\", \"\"\"\n {\n \"8bb39bdb-1cc5-4447-b7db-a19e920eb111\":\"workload1\",\n \"55d36609-9bcf-48e0-a366-a3cf19027d2a\":\"workload2\"\n }[assertion.oid]\n \"\"\")\n ))\n .oidc(WorkloadIdentityPoolProviderOidcArgs.builder()\n .allowedAudiences( \n \"https://example.com/gcp-oidc-federation\",\n \"example.com/gcp-oidc-federation\")\n .issuerUri(\"https://sts.windows.net/azure-tenant-id\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkloadIdentityPool\n properties:\n workloadIdentityPoolId: example-pool\n example:\n type: gcp:iam:WorkloadIdentityPoolProvider\n properties:\n workloadIdentityPoolId: ${pool.workloadIdentityPoolId}\n workloadIdentityPoolProviderId: example-prvdr\n displayName: Name of provider\n description: OIDC identity pool provider for automated test\n disabled: true\n attributeCondition: '\"e968c2ef-047c-498d-8d79-16ca1b61e77e\" in assertion.groups'\n attributeMapping:\n google.subject: '\"azure::\" + assertion.tid + \"::\" + assertion.sub'\n attribute.tid: assertion.tid\n attribute.managed_identity_name: |2\n {\n \"8bb39bdb-1cc5-4447-b7db-a19e920eb111\":\"workload1\",\n \"55d36609-9bcf-48e0-a366-a3cf19027d2a\":\"workload2\"\n }[assertion.oid]\n oidc:\n allowedAudiences:\n - https://example.com/gcp-oidc-federation\n - example.com/gcp-oidc-federation\n issuerUri: https://sts.windows.net/azure-tenant-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workload Identity Pool Provider Saml Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst pool = new gcp.iam.WorkloadIdentityPool(\"pool\", {workloadIdentityPoolId: \"example-pool\"});\nconst example = new gcp.iam.WorkloadIdentityPoolProvider(\"example\", {\n workloadIdentityPoolId: pool.workloadIdentityPoolId,\n workloadIdentityPoolProviderId: \"example-prvdr\",\n attributeMapping: {\n \"google.subject\": \"assertion.arn\",\n \"attribute.aws_account\": \"assertion.account\",\n \"attribute.environment\": \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\",\n },\n saml: {\n idpMetadataXml: std.file({\n input: \"test-fixtures/metadata.xml\",\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\npool = gcp.iam.WorkloadIdentityPool(\"pool\", workload_identity_pool_id=\"example-pool\")\nexample = gcp.iam.WorkloadIdentityPoolProvider(\"example\",\n workload_identity_pool_id=pool.workload_identity_pool_id,\n workload_identity_pool_provider_id=\"example-prvdr\",\n attribute_mapping={\n \"google.subject\": \"assertion.arn\",\n \"attribute.aws_account\": \"assertion.account\",\n \"attribute.environment\": \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\",\n },\n saml={\n \"idpMetadataXml\": std.file(input=\"test-fixtures/metadata.xml\").result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pool = new Gcp.Iam.WorkloadIdentityPool(\"pool\", new()\n {\n WorkloadIdentityPoolId = \"example-pool\",\n });\n\n var example = new Gcp.Iam.WorkloadIdentityPoolProvider(\"example\", new()\n {\n WorkloadIdentityPoolId = pool.WorkloadIdentityPoolId,\n WorkloadIdentityPoolProviderId = \"example-prvdr\",\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.arn\" },\n { \"attribute.aws_account\", \"assertion.account\" },\n { \"attribute.environment\", \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\" },\n },\n Saml = new Gcp.Iam.Inputs.WorkloadIdentityPoolProviderSamlArgs\n {\n IdpMetadataXml = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/metadata.xml\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := iam.NewWorkloadIdentityPool(ctx, \"pool\", \u0026iam.WorkloadIdentityPoolArgs{\n\t\t\tWorkloadIdentityPoolId: pulumi.String(\"example-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/metadata.xml\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkloadIdentityPoolProvider(ctx, \"example\", \u0026iam.WorkloadIdentityPoolProviderArgs{\n\t\t\tWorkloadIdentityPoolId: pool.WorkloadIdentityPoolId,\n\t\t\tWorkloadIdentityPoolProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.arn\"),\n\t\t\t\t\"attribute.aws_account\": pulumi.String(\"assertion.account\"),\n\t\t\t\t\"attribute.environment\": pulumi.String(\"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\"),\n\t\t\t},\n\t\t\tSaml: \u0026iam.WorkloadIdentityPoolProviderSamlArgs{\n\t\t\t\tIdpMetadataXml: invokeFile.Result,\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.iam.WorkloadIdentityPool;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolArgs;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProvider;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkloadIdentityPoolProviderSamlArgs;\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 WorkloadIdentityPool(\"pool\", WorkloadIdentityPoolArgs.builder()\n .workloadIdentityPoolId(\"example-pool\")\n .build());\n\n var example = new WorkloadIdentityPoolProvider(\"example\", WorkloadIdentityPoolProviderArgs.builder()\n .workloadIdentityPoolId(pool.workloadIdentityPoolId())\n .workloadIdentityPoolProviderId(\"example-prvdr\")\n .attributeMapping(Map.ofEntries(\n Map.entry(\"google.subject\", \"assertion.arn\"),\n Map.entry(\"attribute.aws_account\", \"assertion.account\"),\n Map.entry(\"attribute.environment\", \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\")\n ))\n .saml(WorkloadIdentityPoolProviderSamlArgs.builder()\n .idpMetadataXml(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/metadata.xml\")\n .build()).result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkloadIdentityPool\n properties:\n workloadIdentityPoolId: example-pool\n example:\n type: gcp:iam:WorkloadIdentityPoolProvider\n properties:\n workloadIdentityPoolId: ${pool.workloadIdentityPoolId}\n workloadIdentityPoolProviderId: example-prvdr\n attributeMapping:\n google.subject: assertion.arn\n attribute.aws_account: assertion.account\n attribute.environment: 'assertion.arn.contains(\":instance-profile/Production\") ? \"prod\" : \"test\"'\n saml:\n idpMetadataXml:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/metadata.xml\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workload Identity Pool Provider Saml Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst pool = new gcp.iam.WorkloadIdentityPool(\"pool\", {workloadIdentityPoolId: \"example-pool\"});\nconst example = new gcp.iam.WorkloadIdentityPoolProvider(\"example\", {\n workloadIdentityPoolId: pool.workloadIdentityPoolId,\n workloadIdentityPoolProviderId: \"example-prvdr\",\n displayName: \"Name of provider\",\n description: \"SAML 2.0 identity pool provider for automated test\",\n disabled: true,\n attributeMapping: {\n \"google.subject\": \"assertion.arn\",\n \"attribute.aws_account\": \"assertion.account\",\n \"attribute.environment\": \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\",\n },\n saml: {\n idpMetadataXml: std.file({\n input: \"test-fixtures/metadata.xml\",\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\npool = gcp.iam.WorkloadIdentityPool(\"pool\", workload_identity_pool_id=\"example-pool\")\nexample = gcp.iam.WorkloadIdentityPoolProvider(\"example\",\n workload_identity_pool_id=pool.workload_identity_pool_id,\n workload_identity_pool_provider_id=\"example-prvdr\",\n display_name=\"Name of provider\",\n description=\"SAML 2.0 identity pool provider for automated test\",\n disabled=True,\n attribute_mapping={\n \"google.subject\": \"assertion.arn\",\n \"attribute.aws_account\": \"assertion.account\",\n \"attribute.environment\": \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\",\n },\n saml={\n \"idpMetadataXml\": std.file(input=\"test-fixtures/metadata.xml\").result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pool = new Gcp.Iam.WorkloadIdentityPool(\"pool\", new()\n {\n WorkloadIdentityPoolId = \"example-pool\",\n });\n\n var example = new Gcp.Iam.WorkloadIdentityPoolProvider(\"example\", new()\n {\n WorkloadIdentityPoolId = pool.WorkloadIdentityPoolId,\n WorkloadIdentityPoolProviderId = \"example-prvdr\",\n DisplayName = \"Name of provider\",\n Description = \"SAML 2.0 identity pool provider for automated test\",\n Disabled = true,\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.arn\" },\n { \"attribute.aws_account\", \"assertion.account\" },\n { \"attribute.environment\", \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\" },\n },\n Saml = new Gcp.Iam.Inputs.WorkloadIdentityPoolProviderSamlArgs\n {\n IdpMetadataXml = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/metadata.xml\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := iam.NewWorkloadIdentityPool(ctx, \"pool\", \u0026iam.WorkloadIdentityPoolArgs{\n\t\t\tWorkloadIdentityPoolId: pulumi.String(\"example-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/metadata.xml\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkloadIdentityPoolProvider(ctx, \"example\", \u0026iam.WorkloadIdentityPoolProviderArgs{\n\t\t\tWorkloadIdentityPoolId: pool.WorkloadIdentityPoolId,\n\t\t\tWorkloadIdentityPoolProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tDisplayName: pulumi.String(\"Name of provider\"),\n\t\t\tDescription: pulumi.String(\"SAML 2.0 identity pool provider for automated test\"),\n\t\t\tDisabled: pulumi.Bool(true),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.arn\"),\n\t\t\t\t\"attribute.aws_account\": pulumi.String(\"assertion.account\"),\n\t\t\t\t\"attribute.environment\": pulumi.String(\"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\"),\n\t\t\t},\n\t\t\tSaml: \u0026iam.WorkloadIdentityPoolProviderSamlArgs{\n\t\t\t\tIdpMetadataXml: invokeFile.Result,\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.iam.WorkloadIdentityPool;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolArgs;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProvider;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkloadIdentityPoolProviderSamlArgs;\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 WorkloadIdentityPool(\"pool\", WorkloadIdentityPoolArgs.builder()\n .workloadIdentityPoolId(\"example-pool\")\n .build());\n\n var example = new WorkloadIdentityPoolProvider(\"example\", WorkloadIdentityPoolProviderArgs.builder()\n .workloadIdentityPoolId(pool.workloadIdentityPoolId())\n .workloadIdentityPoolProviderId(\"example-prvdr\")\n .displayName(\"Name of provider\")\n .description(\"SAML 2.0 identity pool provider for automated test\")\n .disabled(true)\n .attributeMapping(Map.ofEntries(\n Map.entry(\"google.subject\", \"assertion.arn\"),\n Map.entry(\"attribute.aws_account\", \"assertion.account\"),\n Map.entry(\"attribute.environment\", \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\")\n ))\n .saml(WorkloadIdentityPoolProviderSamlArgs.builder()\n .idpMetadataXml(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/metadata.xml\")\n .build()).result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkloadIdentityPool\n properties:\n workloadIdentityPoolId: example-pool\n example:\n type: gcp:iam:WorkloadIdentityPoolProvider\n properties:\n workloadIdentityPoolId: ${pool.workloadIdentityPoolId}\n workloadIdentityPoolProviderId: example-prvdr\n displayName: Name of provider\n description: SAML 2.0 identity pool provider for automated test\n disabled: true\n attributeMapping:\n google.subject: assertion.arn\n attribute.aws_account: assertion.account\n attribute.environment: 'assertion.arn.contains(\":instance-profile/Production\") ? \"prod\" : \"test\"'\n saml:\n idpMetadataXml:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/metadata.xml\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workload Identity Pool Provider Oidc Upload Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkloadIdentityPool(\"pool\", {workloadIdentityPoolId: \"example-pool\"});\nconst example = new gcp.iam.WorkloadIdentityPoolProvider(\"example\", {\n workloadIdentityPoolId: pool.workloadIdentityPoolId,\n workloadIdentityPoolProviderId: \"example-prvdr\",\n displayName: \"Name of provider\",\n description: \"OIDC identity pool provider for automated test\",\n disabled: true,\n attributeCondition: \"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\",\n attributeMapping: {\n \"google.subject\": \"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\",\n \"attribute.tid\": \"assertion.tid\",\n \"attribute.managed_identity_name\": ` {\n \"8bb39bdb-1cc5-4447-b7db-a19e920eb111\":\"workload1\",\n \"55d36609-9bcf-48e0-a366-a3cf19027d2a\":\"workload2\"\n }[assertion.oid]\n`,\n },\n oidc: {\n allowedAudiences: [\n \"https://example.com/gcp-oidc-federation\",\n \"example.com/gcp-oidc-federation\",\n ],\n issuerUri: \"https://sts.windows.net/azure-tenant-id\",\n jwksJson: \"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS256\\\",\\\"kid\\\":\\\"sif0AR-F6MuvksAyAOv-Pds08Bcf2eUMlxE30NofddA\\\",\\\"use\\\":\\\"sig\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"ylH1Chl1tpfti3lh51E1g5dPogzXDaQseqjsefGLknaNl5W6Wd4frBhHyE2t41Q5zgz_Ll0-NvWm0FlaG6brhrN9QZu6sJP1bM8WPfJVPgXOanxi7d7TXCkeNubGeiLTf5R3UXtS9Lm_guemU7MxDjDTelxnlgGCihOVTcL526suNJUdfXtpwUsvdU6_ZnAp9IpsuYjCtwPm9hPumlcZGMbxstdh07O4y4O90cVQClJOKSGQjAUCKJWXIQ0cqffGS_HuS_725CPzQ85SzYZzaNpgfhAER7kx_9P16ARM3BJz0PI5fe2hECE61J4GYU_BY43sxDfs7HyJpEXKLU9eWw\\\"}]}\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkloadIdentityPool(\"pool\", workload_identity_pool_id=\"example-pool\")\nexample = gcp.iam.WorkloadIdentityPoolProvider(\"example\",\n workload_identity_pool_id=pool.workload_identity_pool_id,\n workload_identity_pool_provider_id=\"example-prvdr\",\n display_name=\"Name of provider\",\n description=\"OIDC identity pool provider for automated test\",\n disabled=True,\n attribute_condition=\"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\",\n attribute_mapping={\n \"google.subject\": \"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\",\n \"attribute.tid\": \"assertion.tid\",\n \"attribute.managed_identity_name\": \"\"\" {\n \"8bb39bdb-1cc5-4447-b7db-a19e920eb111\":\"workload1\",\n \"55d36609-9bcf-48e0-a366-a3cf19027d2a\":\"workload2\"\n }[assertion.oid]\n\"\"\",\n },\n oidc={\n \"allowedAudiences\": [\n \"https://example.com/gcp-oidc-federation\",\n \"example.com/gcp-oidc-federation\",\n ],\n \"issuerUri\": \"https://sts.windows.net/azure-tenant-id\",\n \"jwksJson\": \"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS256\\\",\\\"kid\\\":\\\"sif0AR-F6MuvksAyAOv-Pds08Bcf2eUMlxE30NofddA\\\",\\\"use\\\":\\\"sig\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"ylH1Chl1tpfti3lh51E1g5dPogzXDaQseqjsefGLknaNl5W6Wd4frBhHyE2t41Q5zgz_Ll0-NvWm0FlaG6brhrN9QZu6sJP1bM8WPfJVPgXOanxi7d7TXCkeNubGeiLTf5R3UXtS9Lm_guemU7MxDjDTelxnlgGCihOVTcL526suNJUdfXtpwUsvdU6_ZnAp9IpsuYjCtwPm9hPumlcZGMbxstdh07O4y4O90cVQClJOKSGQjAUCKJWXIQ0cqffGS_HuS_725CPzQ85SzYZzaNpgfhAER7kx_9P16ARM3BJz0PI5fe2hECE61J4GYU_BY43sxDfs7HyJpEXKLU9eWw\\\"}]}\",\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.Iam.WorkloadIdentityPool(\"pool\", new()\n {\n WorkloadIdentityPoolId = \"example-pool\",\n });\n\n var example = new Gcp.Iam.WorkloadIdentityPoolProvider(\"example\", new()\n {\n WorkloadIdentityPoolId = pool.WorkloadIdentityPoolId,\n WorkloadIdentityPoolProviderId = \"example-prvdr\",\n DisplayName = \"Name of provider\",\n Description = \"OIDC identity pool provider for automated test\",\n Disabled = true,\n AttributeCondition = \"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\",\n AttributeMapping = \n {\n { \"google.subject\", \"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\" },\n { \"attribute.tid\", \"assertion.tid\" },\n { \"attribute.managed_identity_name\", @\" {\n \"\"8bb39bdb-1cc5-4447-b7db-a19e920eb111\"\":\"\"workload1\"\",\n \"\"55d36609-9bcf-48e0-a366-a3cf19027d2a\"\":\"\"workload2\"\"\n }[assertion.oid]\n\" },\n },\n Oidc = new Gcp.Iam.Inputs.WorkloadIdentityPoolProviderOidcArgs\n {\n AllowedAudiences = new[]\n {\n \"https://example.com/gcp-oidc-federation\",\n \"example.com/gcp-oidc-federation\",\n },\n IssuerUri = \"https://sts.windows.net/azure-tenant-id\",\n JwksJson = \"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS256\\\",\\\"kid\\\":\\\"sif0AR-F6MuvksAyAOv-Pds08Bcf2eUMlxE30NofddA\\\",\\\"use\\\":\\\"sig\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"ylH1Chl1tpfti3lh51E1g5dPogzXDaQseqjsefGLknaNl5W6Wd4frBhHyE2t41Q5zgz_Ll0-NvWm0FlaG6brhrN9QZu6sJP1bM8WPfJVPgXOanxi7d7TXCkeNubGeiLTf5R3UXtS9Lm_guemU7MxDjDTelxnlgGCihOVTcL526suNJUdfXtpwUsvdU6_ZnAp9IpsuYjCtwPm9hPumlcZGMbxstdh07O4y4O90cVQClJOKSGQjAUCKJWXIQ0cqffGS_HuS_725CPzQ85SzYZzaNpgfhAER7kx_9P16ARM3BJz0PI5fe2hECE61J4GYU_BY43sxDfs7HyJpEXKLU9eWw\\\"}]}\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkloadIdentityPool(ctx, \"pool\", \u0026iam.WorkloadIdentityPoolArgs{\n\t\t\tWorkloadIdentityPoolId: pulumi.String(\"example-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkloadIdentityPoolProvider(ctx, \"example\", \u0026iam.WorkloadIdentityPoolProviderArgs{\n\t\t\tWorkloadIdentityPoolId: pool.WorkloadIdentityPoolId,\n\t\t\tWorkloadIdentityPoolProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tDisplayName: pulumi.String(\"Name of provider\"),\n\t\t\tDescription: pulumi.String(\"OIDC identity pool provider for automated test\"),\n\t\t\tDisabled: pulumi.Bool(true),\n\t\t\tAttributeCondition: pulumi.String(\"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\"),\n\t\t\t\t\"attribute.tid\": pulumi.String(\"assertion.tid\"),\n\t\t\t\t\"attribute.managed_identity_name\": pulumi.String(\" {\\n \\\"8bb39bdb-1cc5-4447-b7db-a19e920eb111\\\":\\\"workload1\\\",\\n \\\"55d36609-9bcf-48e0-a366-a3cf19027d2a\\\":\\\"workload2\\\"\\n }[assertion.oid]\\n\"),\n\t\t\t},\n\t\t\tOidc: \u0026iam.WorkloadIdentityPoolProviderOidcArgs{\n\t\t\t\tAllowedAudiences: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://example.com/gcp-oidc-federation\"),\n\t\t\t\t\tpulumi.String(\"example.com/gcp-oidc-federation\"),\n\t\t\t\t},\n\t\t\t\tIssuerUri: pulumi.String(\"https://sts.windows.net/azure-tenant-id\"),\n\t\t\t\tJwksJson: pulumi.String(\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS256\\\",\\\"kid\\\":\\\"sif0AR-F6MuvksAyAOv-Pds08Bcf2eUMlxE30NofddA\\\",\\\"use\\\":\\\"sig\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"ylH1Chl1tpfti3lh51E1g5dPogzXDaQseqjsefGLknaNl5W6Wd4frBhHyE2t41Q5zgz_Ll0-NvWm0FlaG6brhrN9QZu6sJP1bM8WPfJVPgXOanxi7d7TXCkeNubGeiLTf5R3UXtS9Lm_guemU7MxDjDTelxnlgGCihOVTcL526suNJUdfXtpwUsvdU6_ZnAp9IpsuYjCtwPm9hPumlcZGMbxstdh07O4y4O90cVQClJOKSGQjAUCKJWXIQ0cqffGS_HuS_725CPzQ85SzYZzaNpgfhAER7kx_9P16ARM3BJz0PI5fe2hECE61J4GYU_BY43sxDfs7HyJpEXKLU9eWw\\\"}]}\"),\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.iam.WorkloadIdentityPool;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolArgs;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProvider;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkloadIdentityPoolProviderOidcArgs;\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 WorkloadIdentityPool(\"pool\", WorkloadIdentityPoolArgs.builder()\n .workloadIdentityPoolId(\"example-pool\")\n .build());\n\n var example = new WorkloadIdentityPoolProvider(\"example\", WorkloadIdentityPoolProviderArgs.builder()\n .workloadIdentityPoolId(pool.workloadIdentityPoolId())\n .workloadIdentityPoolProviderId(\"example-prvdr\")\n .displayName(\"Name of provider\")\n .description(\"OIDC identity pool provider for automated test\")\n .disabled(true)\n .attributeCondition(\"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\")\n .attributeMapping(Map.ofEntries(\n Map.entry(\"google.subject\", \"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\"),\n Map.entry(\"attribute.tid\", \"assertion.tid\"),\n Map.entry(\"attribute.managed_identity_name\", \"\"\"\n {\n \"8bb39bdb-1cc5-4447-b7db-a19e920eb111\":\"workload1\",\n \"55d36609-9bcf-48e0-a366-a3cf19027d2a\":\"workload2\"\n }[assertion.oid]\n \"\"\")\n ))\n .oidc(WorkloadIdentityPoolProviderOidcArgs.builder()\n .allowedAudiences( \n \"https://example.com/gcp-oidc-federation\",\n \"example.com/gcp-oidc-federation\")\n .issuerUri(\"https://sts.windows.net/azure-tenant-id\")\n .jwksJson(\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS256\\\",\\\"kid\\\":\\\"sif0AR-F6MuvksAyAOv-Pds08Bcf2eUMlxE30NofddA\\\",\\\"use\\\":\\\"sig\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"ylH1Chl1tpfti3lh51E1g5dPogzXDaQseqjsefGLknaNl5W6Wd4frBhHyE2t41Q5zgz_Ll0-NvWm0FlaG6brhrN9QZu6sJP1bM8WPfJVPgXOanxi7d7TXCkeNubGeiLTf5R3UXtS9Lm_guemU7MxDjDTelxnlgGCihOVTcL526suNJUdfXtpwUsvdU6_ZnAp9IpsuYjCtwPm9hPumlcZGMbxstdh07O4y4O90cVQClJOKSGQjAUCKJWXIQ0cqffGS_HuS_725CPzQ85SzYZzaNpgfhAER7kx_9P16ARM3BJz0PI5fe2hECE61J4GYU_BY43sxDfs7HyJpEXKLU9eWw\\\"}]}\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkloadIdentityPool\n properties:\n workloadIdentityPoolId: example-pool\n example:\n type: gcp:iam:WorkloadIdentityPoolProvider\n properties:\n workloadIdentityPoolId: ${pool.workloadIdentityPoolId}\n workloadIdentityPoolProviderId: example-prvdr\n displayName: Name of provider\n description: OIDC identity pool provider for automated test\n disabled: true\n attributeCondition: '\"e968c2ef-047c-498d-8d79-16ca1b61e77e\" in assertion.groups'\n attributeMapping:\n google.subject: '\"azure::\" + assertion.tid + \"::\" + assertion.sub'\n attribute.tid: assertion.tid\n attribute.managed_identity_name: |2\n {\n \"8bb39bdb-1cc5-4447-b7db-a19e920eb111\":\"workload1\",\n \"55d36609-9bcf-48e0-a366-a3cf19027d2a\":\"workload2\"\n }[assertion.oid]\n oidc:\n allowedAudiences:\n - https://example.com/gcp-oidc-federation\n - example.com/gcp-oidc-federation\n issuerUri: https://sts.windows.net/azure-tenant-id\n jwksJson: '{\"keys\":[{\"kty\":\"RSA\",\"alg\":\"RS256\",\"kid\":\"sif0AR-F6MuvksAyAOv-Pds08Bcf2eUMlxE30NofddA\",\"use\":\"sig\",\"e\":\"AQAB\",\"n\":\"ylH1Chl1tpfti3lh51E1g5dPogzXDaQseqjsefGLknaNl5W6Wd4frBhHyE2t41Q5zgz_Ll0-NvWm0FlaG6brhrN9QZu6sJP1bM8WPfJVPgXOanxi7d7TXCkeNubGeiLTf5R3UXtS9Lm_guemU7MxDjDTelxnlgGCihOVTcL526suNJUdfXtpwUsvdU6_ZnAp9IpsuYjCtwPm9hPumlcZGMbxstdh07O4y4O90cVQClJOKSGQjAUCKJWXIQ0cqffGS_HuS_725CPzQ85SzYZzaNpgfhAER7kx_9P16ARM3BJz0PI5fe2hECE61J4GYU_BY43sxDfs7HyJpEXKLU9eWw\"}]}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkloadIdentityPoolProvider can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/workloadIdentityPools/{{workload_identity_pool_id}}/providers/{{workload_identity_pool_provider_id}}`\n\n* `{{project}}/{{workload_identity_pool_id}}/{{workload_identity_pool_provider_id}}`\n\n* `{{workload_identity_pool_id}}/{{workload_identity_pool_provider_id}}`\n\nWhen using the `pulumi import` command, WorkloadIdentityPoolProvider can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:iam/workloadIdentityPoolProvider:WorkloadIdentityPoolProvider default projects/{{project}}/locations/global/workloadIdentityPools/{{workload_identity_pool_id}}/providers/{{workload_identity_pool_provider_id}}\n```\n\n```sh\n$ pulumi import gcp:iam/workloadIdentityPoolProvider:WorkloadIdentityPoolProvider default {{project}}/{{workload_identity_pool_id}}/{{workload_identity_pool_provider_id}}\n```\n\n```sh\n$ pulumi import gcp:iam/workloadIdentityPoolProvider:WorkloadIdentityPoolProvider default {{workload_identity_pool_id}}/{{workload_identity_pool_provider_id}}\n```\n\n", + "description": "A configuration for an external identity provider.\n\n\nTo get more information about WorkloadIdentityPoolProvider, see:\n\n* [API documentation](https://cloud.google.com/iam/docs/reference/rest/v1/projects.locations.workloadIdentityPools.providers)\n* How-to Guides\n * [Managing workload identity providers](https://cloud.google.com/iam/docs/manage-workload-identity-pools-providers#managing_workload_identity_providers)\n\n## Example Usage\n\n### Iam Workload Identity Pool Provider Aws Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkloadIdentityPool(\"pool\", {workloadIdentityPoolId: \"example-pool\"});\nconst example = new gcp.iam.WorkloadIdentityPoolProvider(\"example\", {\n workloadIdentityPoolId: pool.workloadIdentityPoolId,\n workloadIdentityPoolProviderId: \"example-prvdr\",\n aws: {\n accountId: \"999999999999\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkloadIdentityPool(\"pool\", workload_identity_pool_id=\"example-pool\")\nexample = gcp.iam.WorkloadIdentityPoolProvider(\"example\",\n workload_identity_pool_id=pool.workload_identity_pool_id,\n workload_identity_pool_provider_id=\"example-prvdr\",\n aws={\n \"account_id\": \"999999999999\",\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.Iam.WorkloadIdentityPool(\"pool\", new()\n {\n WorkloadIdentityPoolId = \"example-pool\",\n });\n\n var example = new Gcp.Iam.WorkloadIdentityPoolProvider(\"example\", new()\n {\n WorkloadIdentityPoolId = pool.WorkloadIdentityPoolId,\n WorkloadIdentityPoolProviderId = \"example-prvdr\",\n Aws = new Gcp.Iam.Inputs.WorkloadIdentityPoolProviderAwsArgs\n {\n AccountId = \"999999999999\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkloadIdentityPool(ctx, \"pool\", \u0026iam.WorkloadIdentityPoolArgs{\n\t\t\tWorkloadIdentityPoolId: pulumi.String(\"example-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkloadIdentityPoolProvider(ctx, \"example\", \u0026iam.WorkloadIdentityPoolProviderArgs{\n\t\t\tWorkloadIdentityPoolId: pool.WorkloadIdentityPoolId,\n\t\t\tWorkloadIdentityPoolProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tAws: \u0026iam.WorkloadIdentityPoolProviderAwsArgs{\n\t\t\t\tAccountId: pulumi.String(\"999999999999\"),\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.iam.WorkloadIdentityPool;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolArgs;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProvider;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkloadIdentityPoolProviderAwsArgs;\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 WorkloadIdentityPool(\"pool\", WorkloadIdentityPoolArgs.builder()\n .workloadIdentityPoolId(\"example-pool\")\n .build());\n\n var example = new WorkloadIdentityPoolProvider(\"example\", WorkloadIdentityPoolProviderArgs.builder()\n .workloadIdentityPoolId(pool.workloadIdentityPoolId())\n .workloadIdentityPoolProviderId(\"example-prvdr\")\n .aws(WorkloadIdentityPoolProviderAwsArgs.builder()\n .accountId(\"999999999999\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkloadIdentityPool\n properties:\n workloadIdentityPoolId: example-pool\n example:\n type: gcp:iam:WorkloadIdentityPoolProvider\n properties:\n workloadIdentityPoolId: ${pool.workloadIdentityPoolId}\n workloadIdentityPoolProviderId: example-prvdr\n aws:\n accountId: '999999999999'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workload Identity Pool Provider Aws Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkloadIdentityPool(\"pool\", {workloadIdentityPoolId: \"example-pool\"});\nconst example = new gcp.iam.WorkloadIdentityPoolProvider(\"example\", {\n workloadIdentityPoolId: pool.workloadIdentityPoolId,\n workloadIdentityPoolProviderId: \"example-prvdr\",\n displayName: \"Name of provider\",\n description: \"AWS identity pool provider for automated test\",\n disabled: true,\n attributeCondition: \"attribute.aws_role==\\\"arn:aws:sts::999999999999:assumed-role/stack-eu-central-1-lambdaRole\\\"\",\n attributeMapping: {\n \"google.subject\": \"assertion.arn\",\n \"attribute.aws_account\": \"assertion.account\",\n \"attribute.environment\": \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\",\n },\n aws: {\n accountId: \"999999999999\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkloadIdentityPool(\"pool\", workload_identity_pool_id=\"example-pool\")\nexample = gcp.iam.WorkloadIdentityPoolProvider(\"example\",\n workload_identity_pool_id=pool.workload_identity_pool_id,\n workload_identity_pool_provider_id=\"example-prvdr\",\n display_name=\"Name of provider\",\n description=\"AWS identity pool provider for automated test\",\n disabled=True,\n attribute_condition=\"attribute.aws_role==\\\"arn:aws:sts::999999999999:assumed-role/stack-eu-central-1-lambdaRole\\\"\",\n attribute_mapping={\n \"google.subject\": \"assertion.arn\",\n \"attribute.aws_account\": \"assertion.account\",\n \"attribute.environment\": \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\",\n },\n aws={\n \"account_id\": \"999999999999\",\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.Iam.WorkloadIdentityPool(\"pool\", new()\n {\n WorkloadIdentityPoolId = \"example-pool\",\n });\n\n var example = new Gcp.Iam.WorkloadIdentityPoolProvider(\"example\", new()\n {\n WorkloadIdentityPoolId = pool.WorkloadIdentityPoolId,\n WorkloadIdentityPoolProviderId = \"example-prvdr\",\n DisplayName = \"Name of provider\",\n Description = \"AWS identity pool provider for automated test\",\n Disabled = true,\n AttributeCondition = \"attribute.aws_role==\\\"arn:aws:sts::999999999999:assumed-role/stack-eu-central-1-lambdaRole\\\"\",\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.arn\" },\n { \"attribute.aws_account\", \"assertion.account\" },\n { \"attribute.environment\", \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\" },\n },\n Aws = new Gcp.Iam.Inputs.WorkloadIdentityPoolProviderAwsArgs\n {\n AccountId = \"999999999999\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkloadIdentityPool(ctx, \"pool\", \u0026iam.WorkloadIdentityPoolArgs{\n\t\t\tWorkloadIdentityPoolId: pulumi.String(\"example-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkloadIdentityPoolProvider(ctx, \"example\", \u0026iam.WorkloadIdentityPoolProviderArgs{\n\t\t\tWorkloadIdentityPoolId: pool.WorkloadIdentityPoolId,\n\t\t\tWorkloadIdentityPoolProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tDisplayName: pulumi.String(\"Name of provider\"),\n\t\t\tDescription: pulumi.String(\"AWS identity pool provider for automated test\"),\n\t\t\tDisabled: pulumi.Bool(true),\n\t\t\tAttributeCondition: pulumi.String(\"attribute.aws_role==\\\"arn:aws:sts::999999999999:assumed-role/stack-eu-central-1-lambdaRole\\\"\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.arn\"),\n\t\t\t\t\"attribute.aws_account\": pulumi.String(\"assertion.account\"),\n\t\t\t\t\"attribute.environment\": pulumi.String(\"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\"),\n\t\t\t},\n\t\t\tAws: \u0026iam.WorkloadIdentityPoolProviderAwsArgs{\n\t\t\t\tAccountId: pulumi.String(\"999999999999\"),\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.iam.WorkloadIdentityPool;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolArgs;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProvider;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkloadIdentityPoolProviderAwsArgs;\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 WorkloadIdentityPool(\"pool\", WorkloadIdentityPoolArgs.builder()\n .workloadIdentityPoolId(\"example-pool\")\n .build());\n\n var example = new WorkloadIdentityPoolProvider(\"example\", WorkloadIdentityPoolProviderArgs.builder()\n .workloadIdentityPoolId(pool.workloadIdentityPoolId())\n .workloadIdentityPoolProviderId(\"example-prvdr\")\n .displayName(\"Name of provider\")\n .description(\"AWS identity pool provider for automated test\")\n .disabled(true)\n .attributeCondition(\"attribute.aws_role==\\\"arn:aws:sts::999999999999:assumed-role/stack-eu-central-1-lambdaRole\\\"\")\n .attributeMapping(Map.ofEntries(\n Map.entry(\"google.subject\", \"assertion.arn\"),\n Map.entry(\"attribute.aws_account\", \"assertion.account\"),\n Map.entry(\"attribute.environment\", \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\")\n ))\n .aws(WorkloadIdentityPoolProviderAwsArgs.builder()\n .accountId(\"999999999999\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkloadIdentityPool\n properties:\n workloadIdentityPoolId: example-pool\n example:\n type: gcp:iam:WorkloadIdentityPoolProvider\n properties:\n workloadIdentityPoolId: ${pool.workloadIdentityPoolId}\n workloadIdentityPoolProviderId: example-prvdr\n displayName: Name of provider\n description: AWS identity pool provider for automated test\n disabled: true\n attributeCondition: attribute.aws_role==\"arn:aws:sts::999999999999:assumed-role/stack-eu-central-1-lambdaRole\"\n attributeMapping:\n google.subject: assertion.arn\n attribute.aws_account: assertion.account\n attribute.environment: 'assertion.arn.contains(\":instance-profile/Production\") ? \"prod\" : \"test\"'\n aws:\n accountId: '999999999999'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workload Identity Pool Provider Oidc Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkloadIdentityPool(\"pool\", {workloadIdentityPoolId: \"example-pool\"});\nconst example = new gcp.iam.WorkloadIdentityPoolProvider(\"example\", {\n workloadIdentityPoolId: pool.workloadIdentityPoolId,\n workloadIdentityPoolProviderId: \"example-prvdr\",\n attributeMapping: {\n \"google.subject\": \"assertion.sub\",\n },\n oidc: {\n issuerUri: \"https://sts.windows.net/azure-tenant-id\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkloadIdentityPool(\"pool\", workload_identity_pool_id=\"example-pool\")\nexample = gcp.iam.WorkloadIdentityPoolProvider(\"example\",\n workload_identity_pool_id=pool.workload_identity_pool_id,\n workload_identity_pool_provider_id=\"example-prvdr\",\n attribute_mapping={\n \"google.subject\": \"assertion.sub\",\n },\n oidc={\n \"issuer_uri\": \"https://sts.windows.net/azure-tenant-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.Iam.WorkloadIdentityPool(\"pool\", new()\n {\n WorkloadIdentityPoolId = \"example-pool\",\n });\n\n var example = new Gcp.Iam.WorkloadIdentityPoolProvider(\"example\", new()\n {\n WorkloadIdentityPoolId = pool.WorkloadIdentityPoolId,\n WorkloadIdentityPoolProviderId = \"example-prvdr\",\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.sub\" },\n },\n Oidc = new Gcp.Iam.Inputs.WorkloadIdentityPoolProviderOidcArgs\n {\n IssuerUri = \"https://sts.windows.net/azure-tenant-id\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkloadIdentityPool(ctx, \"pool\", \u0026iam.WorkloadIdentityPoolArgs{\n\t\t\tWorkloadIdentityPoolId: pulumi.String(\"example-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkloadIdentityPoolProvider(ctx, \"example\", \u0026iam.WorkloadIdentityPoolProviderArgs{\n\t\t\tWorkloadIdentityPoolId: pool.WorkloadIdentityPoolId,\n\t\t\tWorkloadIdentityPoolProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.sub\"),\n\t\t\t},\n\t\t\tOidc: \u0026iam.WorkloadIdentityPoolProviderOidcArgs{\n\t\t\t\tIssuerUri: pulumi.String(\"https://sts.windows.net/azure-tenant-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.iam.WorkloadIdentityPool;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolArgs;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProvider;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkloadIdentityPoolProviderOidcArgs;\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 WorkloadIdentityPool(\"pool\", WorkloadIdentityPoolArgs.builder()\n .workloadIdentityPoolId(\"example-pool\")\n .build());\n\n var example = new WorkloadIdentityPoolProvider(\"example\", WorkloadIdentityPoolProviderArgs.builder()\n .workloadIdentityPoolId(pool.workloadIdentityPoolId())\n .workloadIdentityPoolProviderId(\"example-prvdr\")\n .attributeMapping(Map.of(\"google.subject\", \"assertion.sub\"))\n .oidc(WorkloadIdentityPoolProviderOidcArgs.builder()\n .issuerUri(\"https://sts.windows.net/azure-tenant-id\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkloadIdentityPool\n properties:\n workloadIdentityPoolId: example-pool\n example:\n type: gcp:iam:WorkloadIdentityPoolProvider\n properties:\n workloadIdentityPoolId: ${pool.workloadIdentityPoolId}\n workloadIdentityPoolProviderId: example-prvdr\n attributeMapping:\n google.subject: assertion.sub\n oidc:\n issuerUri: https://sts.windows.net/azure-tenant-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workload Identity Pool Provider Oidc Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkloadIdentityPool(\"pool\", {workloadIdentityPoolId: \"example-pool\"});\nconst example = new gcp.iam.WorkloadIdentityPoolProvider(\"example\", {\n workloadIdentityPoolId: pool.workloadIdentityPoolId,\n workloadIdentityPoolProviderId: \"example-prvdr\",\n displayName: \"Name of provider\",\n description: \"OIDC identity pool provider for automated test\",\n disabled: true,\n attributeCondition: \"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\",\n attributeMapping: {\n \"google.subject\": \"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\",\n \"attribute.tid\": \"assertion.tid\",\n \"attribute.managed_identity_name\": ` {\n \"8bb39bdb-1cc5-4447-b7db-a19e920eb111\":\"workload1\",\n \"55d36609-9bcf-48e0-a366-a3cf19027d2a\":\"workload2\"\n }[assertion.oid]\n`,\n },\n oidc: {\n allowedAudiences: [\n \"https://example.com/gcp-oidc-federation\",\n \"example.com/gcp-oidc-federation\",\n ],\n issuerUri: \"https://sts.windows.net/azure-tenant-id\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkloadIdentityPool(\"pool\", workload_identity_pool_id=\"example-pool\")\nexample = gcp.iam.WorkloadIdentityPoolProvider(\"example\",\n workload_identity_pool_id=pool.workload_identity_pool_id,\n workload_identity_pool_provider_id=\"example-prvdr\",\n display_name=\"Name of provider\",\n description=\"OIDC identity pool provider for automated test\",\n disabled=True,\n attribute_condition=\"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\",\n attribute_mapping={\n \"google.subject\": \"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\",\n \"attribute.tid\": \"assertion.tid\",\n \"attribute.managed_identity_name\": \"\"\" {\n \"8bb39bdb-1cc5-4447-b7db-a19e920eb111\":\"workload1\",\n \"55d36609-9bcf-48e0-a366-a3cf19027d2a\":\"workload2\"\n }[assertion.oid]\n\"\"\",\n },\n oidc={\n \"allowed_audiences\": [\n \"https://example.com/gcp-oidc-federation\",\n \"example.com/gcp-oidc-federation\",\n ],\n \"issuer_uri\": \"https://sts.windows.net/azure-tenant-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.Iam.WorkloadIdentityPool(\"pool\", new()\n {\n WorkloadIdentityPoolId = \"example-pool\",\n });\n\n var example = new Gcp.Iam.WorkloadIdentityPoolProvider(\"example\", new()\n {\n WorkloadIdentityPoolId = pool.WorkloadIdentityPoolId,\n WorkloadIdentityPoolProviderId = \"example-prvdr\",\n DisplayName = \"Name of provider\",\n Description = \"OIDC identity pool provider for automated test\",\n Disabled = true,\n AttributeCondition = \"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\",\n AttributeMapping = \n {\n { \"google.subject\", \"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\" },\n { \"attribute.tid\", \"assertion.tid\" },\n { \"attribute.managed_identity_name\", @\" {\n \"\"8bb39bdb-1cc5-4447-b7db-a19e920eb111\"\":\"\"workload1\"\",\n \"\"55d36609-9bcf-48e0-a366-a3cf19027d2a\"\":\"\"workload2\"\"\n }[assertion.oid]\n\" },\n },\n Oidc = new Gcp.Iam.Inputs.WorkloadIdentityPoolProviderOidcArgs\n {\n AllowedAudiences = new[]\n {\n \"https://example.com/gcp-oidc-federation\",\n \"example.com/gcp-oidc-federation\",\n },\n IssuerUri = \"https://sts.windows.net/azure-tenant-id\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkloadIdentityPool(ctx, \"pool\", \u0026iam.WorkloadIdentityPoolArgs{\n\t\t\tWorkloadIdentityPoolId: pulumi.String(\"example-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkloadIdentityPoolProvider(ctx, \"example\", \u0026iam.WorkloadIdentityPoolProviderArgs{\n\t\t\tWorkloadIdentityPoolId: pool.WorkloadIdentityPoolId,\n\t\t\tWorkloadIdentityPoolProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tDisplayName: pulumi.String(\"Name of provider\"),\n\t\t\tDescription: pulumi.String(\"OIDC identity pool provider for automated test\"),\n\t\t\tDisabled: pulumi.Bool(true),\n\t\t\tAttributeCondition: pulumi.String(\"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\"),\n\t\t\t\t\"attribute.tid\": pulumi.String(\"assertion.tid\"),\n\t\t\t\t\"attribute.managed_identity_name\": pulumi.String(\" {\\n \\\"8bb39bdb-1cc5-4447-b7db-a19e920eb111\\\":\\\"workload1\\\",\\n \\\"55d36609-9bcf-48e0-a366-a3cf19027d2a\\\":\\\"workload2\\\"\\n }[assertion.oid]\\n\"),\n\t\t\t},\n\t\t\tOidc: \u0026iam.WorkloadIdentityPoolProviderOidcArgs{\n\t\t\t\tAllowedAudiences: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://example.com/gcp-oidc-federation\"),\n\t\t\t\t\tpulumi.String(\"example.com/gcp-oidc-federation\"),\n\t\t\t\t},\n\t\t\t\tIssuerUri: pulumi.String(\"https://sts.windows.net/azure-tenant-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.iam.WorkloadIdentityPool;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolArgs;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProvider;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkloadIdentityPoolProviderOidcArgs;\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 WorkloadIdentityPool(\"pool\", WorkloadIdentityPoolArgs.builder()\n .workloadIdentityPoolId(\"example-pool\")\n .build());\n\n var example = new WorkloadIdentityPoolProvider(\"example\", WorkloadIdentityPoolProviderArgs.builder()\n .workloadIdentityPoolId(pool.workloadIdentityPoolId())\n .workloadIdentityPoolProviderId(\"example-prvdr\")\n .displayName(\"Name of provider\")\n .description(\"OIDC identity pool provider for automated test\")\n .disabled(true)\n .attributeCondition(\"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\")\n .attributeMapping(Map.ofEntries(\n Map.entry(\"google.subject\", \"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\"),\n Map.entry(\"attribute.tid\", \"assertion.tid\"),\n Map.entry(\"attribute.managed_identity_name\", \"\"\"\n {\n \"8bb39bdb-1cc5-4447-b7db-a19e920eb111\":\"workload1\",\n \"55d36609-9bcf-48e0-a366-a3cf19027d2a\":\"workload2\"\n }[assertion.oid]\n \"\"\")\n ))\n .oidc(WorkloadIdentityPoolProviderOidcArgs.builder()\n .allowedAudiences( \n \"https://example.com/gcp-oidc-federation\",\n \"example.com/gcp-oidc-federation\")\n .issuerUri(\"https://sts.windows.net/azure-tenant-id\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkloadIdentityPool\n properties:\n workloadIdentityPoolId: example-pool\n example:\n type: gcp:iam:WorkloadIdentityPoolProvider\n properties:\n workloadIdentityPoolId: ${pool.workloadIdentityPoolId}\n workloadIdentityPoolProviderId: example-prvdr\n displayName: Name of provider\n description: OIDC identity pool provider for automated test\n disabled: true\n attributeCondition: '\"e968c2ef-047c-498d-8d79-16ca1b61e77e\" in assertion.groups'\n attributeMapping:\n google.subject: '\"azure::\" + assertion.tid + \"::\" + assertion.sub'\n attribute.tid: assertion.tid\n attribute.managed_identity_name: |2\n {\n \"8bb39bdb-1cc5-4447-b7db-a19e920eb111\":\"workload1\",\n \"55d36609-9bcf-48e0-a366-a3cf19027d2a\":\"workload2\"\n }[assertion.oid]\n oidc:\n allowedAudiences:\n - https://example.com/gcp-oidc-federation\n - example.com/gcp-oidc-federation\n issuerUri: https://sts.windows.net/azure-tenant-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workload Identity Pool Provider Saml Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst pool = new gcp.iam.WorkloadIdentityPool(\"pool\", {workloadIdentityPoolId: \"example-pool\"});\nconst example = new gcp.iam.WorkloadIdentityPoolProvider(\"example\", {\n workloadIdentityPoolId: pool.workloadIdentityPoolId,\n workloadIdentityPoolProviderId: \"example-prvdr\",\n attributeMapping: {\n \"google.subject\": \"assertion.arn\",\n \"attribute.aws_account\": \"assertion.account\",\n \"attribute.environment\": \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\",\n },\n saml: {\n idpMetadataXml: std.file({\n input: \"test-fixtures/metadata.xml\",\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\npool = gcp.iam.WorkloadIdentityPool(\"pool\", workload_identity_pool_id=\"example-pool\")\nexample = gcp.iam.WorkloadIdentityPoolProvider(\"example\",\n workload_identity_pool_id=pool.workload_identity_pool_id,\n workload_identity_pool_provider_id=\"example-prvdr\",\n attribute_mapping={\n \"google.subject\": \"assertion.arn\",\n \"attribute.aws_account\": \"assertion.account\",\n \"attribute.environment\": \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\",\n },\n saml={\n \"idp_metadata_xml\": std.file(input=\"test-fixtures/metadata.xml\").result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pool = new Gcp.Iam.WorkloadIdentityPool(\"pool\", new()\n {\n WorkloadIdentityPoolId = \"example-pool\",\n });\n\n var example = new Gcp.Iam.WorkloadIdentityPoolProvider(\"example\", new()\n {\n WorkloadIdentityPoolId = pool.WorkloadIdentityPoolId,\n WorkloadIdentityPoolProviderId = \"example-prvdr\",\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.arn\" },\n { \"attribute.aws_account\", \"assertion.account\" },\n { \"attribute.environment\", \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\" },\n },\n Saml = new Gcp.Iam.Inputs.WorkloadIdentityPoolProviderSamlArgs\n {\n IdpMetadataXml = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/metadata.xml\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := iam.NewWorkloadIdentityPool(ctx, \"pool\", \u0026iam.WorkloadIdentityPoolArgs{\n\t\t\tWorkloadIdentityPoolId: pulumi.String(\"example-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/metadata.xml\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkloadIdentityPoolProvider(ctx, \"example\", \u0026iam.WorkloadIdentityPoolProviderArgs{\n\t\t\tWorkloadIdentityPoolId: pool.WorkloadIdentityPoolId,\n\t\t\tWorkloadIdentityPoolProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.arn\"),\n\t\t\t\t\"attribute.aws_account\": pulumi.String(\"assertion.account\"),\n\t\t\t\t\"attribute.environment\": pulumi.String(\"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\"),\n\t\t\t},\n\t\t\tSaml: \u0026iam.WorkloadIdentityPoolProviderSamlArgs{\n\t\t\t\tIdpMetadataXml: pulumi.String(invokeFile.Result),\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.iam.WorkloadIdentityPool;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolArgs;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProvider;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkloadIdentityPoolProviderSamlArgs;\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 WorkloadIdentityPool(\"pool\", WorkloadIdentityPoolArgs.builder()\n .workloadIdentityPoolId(\"example-pool\")\n .build());\n\n var example = new WorkloadIdentityPoolProvider(\"example\", WorkloadIdentityPoolProviderArgs.builder()\n .workloadIdentityPoolId(pool.workloadIdentityPoolId())\n .workloadIdentityPoolProviderId(\"example-prvdr\")\n .attributeMapping(Map.ofEntries(\n Map.entry(\"google.subject\", \"assertion.arn\"),\n Map.entry(\"attribute.aws_account\", \"assertion.account\"),\n Map.entry(\"attribute.environment\", \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\")\n ))\n .saml(WorkloadIdentityPoolProviderSamlArgs.builder()\n .idpMetadataXml(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/metadata.xml\")\n .build()).result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkloadIdentityPool\n properties:\n workloadIdentityPoolId: example-pool\n example:\n type: gcp:iam:WorkloadIdentityPoolProvider\n properties:\n workloadIdentityPoolId: ${pool.workloadIdentityPoolId}\n workloadIdentityPoolProviderId: example-prvdr\n attributeMapping:\n google.subject: assertion.arn\n attribute.aws_account: assertion.account\n attribute.environment: 'assertion.arn.contains(\":instance-profile/Production\") ? \"prod\" : \"test\"'\n saml:\n idpMetadataXml:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/metadata.xml\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workload Identity Pool Provider Saml Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst pool = new gcp.iam.WorkloadIdentityPool(\"pool\", {workloadIdentityPoolId: \"example-pool\"});\nconst example = new gcp.iam.WorkloadIdentityPoolProvider(\"example\", {\n workloadIdentityPoolId: pool.workloadIdentityPoolId,\n workloadIdentityPoolProviderId: \"example-prvdr\",\n displayName: \"Name of provider\",\n description: \"SAML 2.0 identity pool provider for automated test\",\n disabled: true,\n attributeMapping: {\n \"google.subject\": \"assertion.arn\",\n \"attribute.aws_account\": \"assertion.account\",\n \"attribute.environment\": \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\",\n },\n saml: {\n idpMetadataXml: std.file({\n input: \"test-fixtures/metadata.xml\",\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\npool = gcp.iam.WorkloadIdentityPool(\"pool\", workload_identity_pool_id=\"example-pool\")\nexample = gcp.iam.WorkloadIdentityPoolProvider(\"example\",\n workload_identity_pool_id=pool.workload_identity_pool_id,\n workload_identity_pool_provider_id=\"example-prvdr\",\n display_name=\"Name of provider\",\n description=\"SAML 2.0 identity pool provider for automated test\",\n disabled=True,\n attribute_mapping={\n \"google.subject\": \"assertion.arn\",\n \"attribute.aws_account\": \"assertion.account\",\n \"attribute.environment\": \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\",\n },\n saml={\n \"idp_metadata_xml\": std.file(input=\"test-fixtures/metadata.xml\").result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pool = new Gcp.Iam.WorkloadIdentityPool(\"pool\", new()\n {\n WorkloadIdentityPoolId = \"example-pool\",\n });\n\n var example = new Gcp.Iam.WorkloadIdentityPoolProvider(\"example\", new()\n {\n WorkloadIdentityPoolId = pool.WorkloadIdentityPoolId,\n WorkloadIdentityPoolProviderId = \"example-prvdr\",\n DisplayName = \"Name of provider\",\n Description = \"SAML 2.0 identity pool provider for automated test\",\n Disabled = true,\n AttributeMapping = \n {\n { \"google.subject\", \"assertion.arn\" },\n { \"attribute.aws_account\", \"assertion.account\" },\n { \"attribute.environment\", \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\" },\n },\n Saml = new Gcp.Iam.Inputs.WorkloadIdentityPoolProviderSamlArgs\n {\n IdpMetadataXml = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/metadata.xml\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := iam.NewWorkloadIdentityPool(ctx, \"pool\", \u0026iam.WorkloadIdentityPoolArgs{\n\t\t\tWorkloadIdentityPoolId: pulumi.String(\"example-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/metadata.xml\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkloadIdentityPoolProvider(ctx, \"example\", \u0026iam.WorkloadIdentityPoolProviderArgs{\n\t\t\tWorkloadIdentityPoolId: pool.WorkloadIdentityPoolId,\n\t\t\tWorkloadIdentityPoolProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tDisplayName: pulumi.String(\"Name of provider\"),\n\t\t\tDescription: pulumi.String(\"SAML 2.0 identity pool provider for automated test\"),\n\t\t\tDisabled: pulumi.Bool(true),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"assertion.arn\"),\n\t\t\t\t\"attribute.aws_account\": pulumi.String(\"assertion.account\"),\n\t\t\t\t\"attribute.environment\": pulumi.String(\"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\"),\n\t\t\t},\n\t\t\tSaml: \u0026iam.WorkloadIdentityPoolProviderSamlArgs{\n\t\t\t\tIdpMetadataXml: pulumi.String(invokeFile.Result),\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.iam.WorkloadIdentityPool;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolArgs;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProvider;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkloadIdentityPoolProviderSamlArgs;\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 WorkloadIdentityPool(\"pool\", WorkloadIdentityPoolArgs.builder()\n .workloadIdentityPoolId(\"example-pool\")\n .build());\n\n var example = new WorkloadIdentityPoolProvider(\"example\", WorkloadIdentityPoolProviderArgs.builder()\n .workloadIdentityPoolId(pool.workloadIdentityPoolId())\n .workloadIdentityPoolProviderId(\"example-prvdr\")\n .displayName(\"Name of provider\")\n .description(\"SAML 2.0 identity pool provider for automated test\")\n .disabled(true)\n .attributeMapping(Map.ofEntries(\n Map.entry(\"google.subject\", \"assertion.arn\"),\n Map.entry(\"attribute.aws_account\", \"assertion.account\"),\n Map.entry(\"attribute.environment\", \"assertion.arn.contains(\\\":instance-profile/Production\\\") ? \\\"prod\\\" : \\\"test\\\"\")\n ))\n .saml(WorkloadIdentityPoolProviderSamlArgs.builder()\n .idpMetadataXml(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/metadata.xml\")\n .build()).result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkloadIdentityPool\n properties:\n workloadIdentityPoolId: example-pool\n example:\n type: gcp:iam:WorkloadIdentityPoolProvider\n properties:\n workloadIdentityPoolId: ${pool.workloadIdentityPoolId}\n workloadIdentityPoolProviderId: example-prvdr\n displayName: Name of provider\n description: SAML 2.0 identity pool provider for automated test\n disabled: true\n attributeMapping:\n google.subject: assertion.arn\n attribute.aws_account: assertion.account\n attribute.environment: 'assertion.arn.contains(\":instance-profile/Production\") ? \"prod\" : \"test\"'\n saml:\n idpMetadataXml:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/metadata.xml\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Iam Workload Identity Pool Provider Oidc Upload Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.iam.WorkloadIdentityPool(\"pool\", {workloadIdentityPoolId: \"example-pool\"});\nconst example = new gcp.iam.WorkloadIdentityPoolProvider(\"example\", {\n workloadIdentityPoolId: pool.workloadIdentityPoolId,\n workloadIdentityPoolProviderId: \"example-prvdr\",\n displayName: \"Name of provider\",\n description: \"OIDC identity pool provider for automated test\",\n disabled: true,\n attributeCondition: \"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\",\n attributeMapping: {\n \"google.subject\": \"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\",\n \"attribute.tid\": \"assertion.tid\",\n \"attribute.managed_identity_name\": ` {\n \"8bb39bdb-1cc5-4447-b7db-a19e920eb111\":\"workload1\",\n \"55d36609-9bcf-48e0-a366-a3cf19027d2a\":\"workload2\"\n }[assertion.oid]\n`,\n },\n oidc: {\n allowedAudiences: [\n \"https://example.com/gcp-oidc-federation\",\n \"example.com/gcp-oidc-federation\",\n ],\n issuerUri: \"https://sts.windows.net/azure-tenant-id\",\n jwksJson: \"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS256\\\",\\\"kid\\\":\\\"sif0AR-F6MuvksAyAOv-Pds08Bcf2eUMlxE30NofddA\\\",\\\"use\\\":\\\"sig\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"ylH1Chl1tpfti3lh51E1g5dPogzXDaQseqjsefGLknaNl5W6Wd4frBhHyE2t41Q5zgz_Ll0-NvWm0FlaG6brhrN9QZu6sJP1bM8WPfJVPgXOanxi7d7TXCkeNubGeiLTf5R3UXtS9Lm_guemU7MxDjDTelxnlgGCihOVTcL526suNJUdfXtpwUsvdU6_ZnAp9IpsuYjCtwPm9hPumlcZGMbxstdh07O4y4O90cVQClJOKSGQjAUCKJWXIQ0cqffGS_HuS_725CPzQ85SzYZzaNpgfhAER7kx_9P16ARM3BJz0PI5fe2hECE61J4GYU_BY43sxDfs7HyJpEXKLU9eWw\\\"}]}\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.iam.WorkloadIdentityPool(\"pool\", workload_identity_pool_id=\"example-pool\")\nexample = gcp.iam.WorkloadIdentityPoolProvider(\"example\",\n workload_identity_pool_id=pool.workload_identity_pool_id,\n workload_identity_pool_provider_id=\"example-prvdr\",\n display_name=\"Name of provider\",\n description=\"OIDC identity pool provider for automated test\",\n disabled=True,\n attribute_condition=\"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\",\n attribute_mapping={\n \"google.subject\": \"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\",\n \"attribute.tid\": \"assertion.tid\",\n \"attribute.managed_identity_name\": \"\"\" {\n \"8bb39bdb-1cc5-4447-b7db-a19e920eb111\":\"workload1\",\n \"55d36609-9bcf-48e0-a366-a3cf19027d2a\":\"workload2\"\n }[assertion.oid]\n\"\"\",\n },\n oidc={\n \"allowed_audiences\": [\n \"https://example.com/gcp-oidc-federation\",\n \"example.com/gcp-oidc-federation\",\n ],\n \"issuer_uri\": \"https://sts.windows.net/azure-tenant-id\",\n \"jwks_json\": \"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS256\\\",\\\"kid\\\":\\\"sif0AR-F6MuvksAyAOv-Pds08Bcf2eUMlxE30NofddA\\\",\\\"use\\\":\\\"sig\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"ylH1Chl1tpfti3lh51E1g5dPogzXDaQseqjsefGLknaNl5W6Wd4frBhHyE2t41Q5zgz_Ll0-NvWm0FlaG6brhrN9QZu6sJP1bM8WPfJVPgXOanxi7d7TXCkeNubGeiLTf5R3UXtS9Lm_guemU7MxDjDTelxnlgGCihOVTcL526suNJUdfXtpwUsvdU6_ZnAp9IpsuYjCtwPm9hPumlcZGMbxstdh07O4y4O90cVQClJOKSGQjAUCKJWXIQ0cqffGS_HuS_725CPzQ85SzYZzaNpgfhAER7kx_9P16ARM3BJz0PI5fe2hECE61J4GYU_BY43sxDfs7HyJpEXKLU9eWw\\\"}]}\",\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.Iam.WorkloadIdentityPool(\"pool\", new()\n {\n WorkloadIdentityPoolId = \"example-pool\",\n });\n\n var example = new Gcp.Iam.WorkloadIdentityPoolProvider(\"example\", new()\n {\n WorkloadIdentityPoolId = pool.WorkloadIdentityPoolId,\n WorkloadIdentityPoolProviderId = \"example-prvdr\",\n DisplayName = \"Name of provider\",\n Description = \"OIDC identity pool provider for automated test\",\n Disabled = true,\n AttributeCondition = \"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\",\n AttributeMapping = \n {\n { \"google.subject\", \"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\" },\n { \"attribute.tid\", \"assertion.tid\" },\n { \"attribute.managed_identity_name\", @\" {\n \"\"8bb39bdb-1cc5-4447-b7db-a19e920eb111\"\":\"\"workload1\"\",\n \"\"55d36609-9bcf-48e0-a366-a3cf19027d2a\"\":\"\"workload2\"\"\n }[assertion.oid]\n\" },\n },\n Oidc = new Gcp.Iam.Inputs.WorkloadIdentityPoolProviderOidcArgs\n {\n AllowedAudiences = new[]\n {\n \"https://example.com/gcp-oidc-federation\",\n \"example.com/gcp-oidc-federation\",\n },\n IssuerUri = \"https://sts.windows.net/azure-tenant-id\",\n JwksJson = \"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS256\\\",\\\"kid\\\":\\\"sif0AR-F6MuvksAyAOv-Pds08Bcf2eUMlxE30NofddA\\\",\\\"use\\\":\\\"sig\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"ylH1Chl1tpfti3lh51E1g5dPogzXDaQseqjsefGLknaNl5W6Wd4frBhHyE2t41Q5zgz_Ll0-NvWm0FlaG6brhrN9QZu6sJP1bM8WPfJVPgXOanxi7d7TXCkeNubGeiLTf5R3UXtS9Lm_guemU7MxDjDTelxnlgGCihOVTcL526suNJUdfXtpwUsvdU6_ZnAp9IpsuYjCtwPm9hPumlcZGMbxstdh07O4y4O90cVQClJOKSGQjAUCKJWXIQ0cqffGS_HuS_725CPzQ85SzYZzaNpgfhAER7kx_9P16ARM3BJz0PI5fe2hECE61J4GYU_BY43sxDfs7HyJpEXKLU9eWw\\\"}]}\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/iam\"\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 := iam.NewWorkloadIdentityPool(ctx, \"pool\", \u0026iam.WorkloadIdentityPoolArgs{\n\t\t\tWorkloadIdentityPoolId: pulumi.String(\"example-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewWorkloadIdentityPoolProvider(ctx, \"example\", \u0026iam.WorkloadIdentityPoolProviderArgs{\n\t\t\tWorkloadIdentityPoolId: pool.WorkloadIdentityPoolId,\n\t\t\tWorkloadIdentityPoolProviderId: pulumi.String(\"example-prvdr\"),\n\t\t\tDisplayName: pulumi.String(\"Name of provider\"),\n\t\t\tDescription: pulumi.String(\"OIDC identity pool provider for automated test\"),\n\t\t\tDisabled: pulumi.Bool(true),\n\t\t\tAttributeCondition: pulumi.String(\"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\"),\n\t\t\tAttributeMapping: pulumi.StringMap{\n\t\t\t\t\"google.subject\": pulumi.String(\"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\"),\n\t\t\t\t\"attribute.tid\": pulumi.String(\"assertion.tid\"),\n\t\t\t\t\"attribute.managed_identity_name\": pulumi.String(\" {\\n \\\"8bb39bdb-1cc5-4447-b7db-a19e920eb111\\\":\\\"workload1\\\",\\n \\\"55d36609-9bcf-48e0-a366-a3cf19027d2a\\\":\\\"workload2\\\"\\n }[assertion.oid]\\n\"),\n\t\t\t},\n\t\t\tOidc: \u0026iam.WorkloadIdentityPoolProviderOidcArgs{\n\t\t\t\tAllowedAudiences: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://example.com/gcp-oidc-federation\"),\n\t\t\t\t\tpulumi.String(\"example.com/gcp-oidc-federation\"),\n\t\t\t\t},\n\t\t\t\tIssuerUri: pulumi.String(\"https://sts.windows.net/azure-tenant-id\"),\n\t\t\t\tJwksJson: pulumi.String(\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS256\\\",\\\"kid\\\":\\\"sif0AR-F6MuvksAyAOv-Pds08Bcf2eUMlxE30NofddA\\\",\\\"use\\\":\\\"sig\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"ylH1Chl1tpfti3lh51E1g5dPogzXDaQseqjsefGLknaNl5W6Wd4frBhHyE2t41Q5zgz_Ll0-NvWm0FlaG6brhrN9QZu6sJP1bM8WPfJVPgXOanxi7d7TXCkeNubGeiLTf5R3UXtS9Lm_guemU7MxDjDTelxnlgGCihOVTcL526suNJUdfXtpwUsvdU6_ZnAp9IpsuYjCtwPm9hPumlcZGMbxstdh07O4y4O90cVQClJOKSGQjAUCKJWXIQ0cqffGS_HuS_725CPzQ85SzYZzaNpgfhAER7kx_9P16ARM3BJz0PI5fe2hECE61J4GYU_BY43sxDfs7HyJpEXKLU9eWw\\\"}]}\"),\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.iam.WorkloadIdentityPool;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolArgs;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProvider;\nimport com.pulumi.gcp.iam.WorkloadIdentityPoolProviderArgs;\nimport com.pulumi.gcp.iam.inputs.WorkloadIdentityPoolProviderOidcArgs;\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 WorkloadIdentityPool(\"pool\", WorkloadIdentityPoolArgs.builder()\n .workloadIdentityPoolId(\"example-pool\")\n .build());\n\n var example = new WorkloadIdentityPoolProvider(\"example\", WorkloadIdentityPoolProviderArgs.builder()\n .workloadIdentityPoolId(pool.workloadIdentityPoolId())\n .workloadIdentityPoolProviderId(\"example-prvdr\")\n .displayName(\"Name of provider\")\n .description(\"OIDC identity pool provider for automated test\")\n .disabled(true)\n .attributeCondition(\"\\\"e968c2ef-047c-498d-8d79-16ca1b61e77e\\\" in assertion.groups\")\n .attributeMapping(Map.ofEntries(\n Map.entry(\"google.subject\", \"\\\"azure::\\\" + assertion.tid + \\\"::\\\" + assertion.sub\"),\n Map.entry(\"attribute.tid\", \"assertion.tid\"),\n Map.entry(\"attribute.managed_identity_name\", \"\"\"\n {\n \"8bb39bdb-1cc5-4447-b7db-a19e920eb111\":\"workload1\",\n \"55d36609-9bcf-48e0-a366-a3cf19027d2a\":\"workload2\"\n }[assertion.oid]\n \"\"\")\n ))\n .oidc(WorkloadIdentityPoolProviderOidcArgs.builder()\n .allowedAudiences( \n \"https://example.com/gcp-oidc-federation\",\n \"example.com/gcp-oidc-federation\")\n .issuerUri(\"https://sts.windows.net/azure-tenant-id\")\n .jwksJson(\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"alg\\\":\\\"RS256\\\",\\\"kid\\\":\\\"sif0AR-F6MuvksAyAOv-Pds08Bcf2eUMlxE30NofddA\\\",\\\"use\\\":\\\"sig\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"ylH1Chl1tpfti3lh51E1g5dPogzXDaQseqjsefGLknaNl5W6Wd4frBhHyE2t41Q5zgz_Ll0-NvWm0FlaG6brhrN9QZu6sJP1bM8WPfJVPgXOanxi7d7TXCkeNubGeiLTf5R3UXtS9Lm_guemU7MxDjDTelxnlgGCihOVTcL526suNJUdfXtpwUsvdU6_ZnAp9IpsuYjCtwPm9hPumlcZGMbxstdh07O4y4O90cVQClJOKSGQjAUCKJWXIQ0cqffGS_HuS_725CPzQ85SzYZzaNpgfhAER7kx_9P16ARM3BJz0PI5fe2hECE61J4GYU_BY43sxDfs7HyJpEXKLU9eWw\\\"}]}\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pool:\n type: gcp:iam:WorkloadIdentityPool\n properties:\n workloadIdentityPoolId: example-pool\n example:\n type: gcp:iam:WorkloadIdentityPoolProvider\n properties:\n workloadIdentityPoolId: ${pool.workloadIdentityPoolId}\n workloadIdentityPoolProviderId: example-prvdr\n displayName: Name of provider\n description: OIDC identity pool provider for automated test\n disabled: true\n attributeCondition: '\"e968c2ef-047c-498d-8d79-16ca1b61e77e\" in assertion.groups'\n attributeMapping:\n google.subject: '\"azure::\" + assertion.tid + \"::\" + assertion.sub'\n attribute.tid: assertion.tid\n attribute.managed_identity_name: |2\n {\n \"8bb39bdb-1cc5-4447-b7db-a19e920eb111\":\"workload1\",\n \"55d36609-9bcf-48e0-a366-a3cf19027d2a\":\"workload2\"\n }[assertion.oid]\n oidc:\n allowedAudiences:\n - https://example.com/gcp-oidc-federation\n - example.com/gcp-oidc-federation\n issuerUri: https://sts.windows.net/azure-tenant-id\n jwksJson: '{\"keys\":[{\"kty\":\"RSA\",\"alg\":\"RS256\",\"kid\":\"sif0AR-F6MuvksAyAOv-Pds08Bcf2eUMlxE30NofddA\",\"use\":\"sig\",\"e\":\"AQAB\",\"n\":\"ylH1Chl1tpfti3lh51E1g5dPogzXDaQseqjsefGLknaNl5W6Wd4frBhHyE2t41Q5zgz_Ll0-NvWm0FlaG6brhrN9QZu6sJP1bM8WPfJVPgXOanxi7d7TXCkeNubGeiLTf5R3UXtS9Lm_guemU7MxDjDTelxnlgGCihOVTcL526suNJUdfXtpwUsvdU6_ZnAp9IpsuYjCtwPm9hPumlcZGMbxstdh07O4y4O90cVQClJOKSGQjAUCKJWXIQ0cqffGS_HuS_725CPzQ85SzYZzaNpgfhAER7kx_9P16ARM3BJz0PI5fe2hECE61J4GYU_BY43sxDfs7HyJpEXKLU9eWw\"}]}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkloadIdentityPoolProvider can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/workloadIdentityPools/{{workload_identity_pool_id}}/providers/{{workload_identity_pool_provider_id}}`\n\n* `{{project}}/{{workload_identity_pool_id}}/{{workload_identity_pool_provider_id}}`\n\n* `{{workload_identity_pool_id}}/{{workload_identity_pool_provider_id}}`\n\nWhen using the `pulumi import` command, WorkloadIdentityPoolProvider can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:iam/workloadIdentityPoolProvider:WorkloadIdentityPoolProvider default projects/{{project}}/locations/global/workloadIdentityPools/{{workload_identity_pool_id}}/providers/{{workload_identity_pool_provider_id}}\n```\n\n```sh\n$ pulumi import gcp:iam/workloadIdentityPoolProvider:WorkloadIdentityPoolProvider default {{project}}/{{workload_identity_pool_id}}/{{workload_identity_pool_provider_id}}\n```\n\n```sh\n$ pulumi import gcp:iam/workloadIdentityPoolProvider:WorkloadIdentityPoolProvider default {{workload_identity_pool_id}}/{{workload_identity_pool_provider_id}}\n```\n\n", "properties": { "attributeCondition": { "type": "string", @@ -205421,7 +205421,7 @@ } }, "gcp:identityplatform/config:Config": { - "description": "Identity Platform configuration for a Cloud project. Identity Platform is an\nend-to-end authentication system for third-party users to access apps\nand services.\n\nThis entity is created only once during intialization and cannot be deleted,\nindividual Identity Providers may be disabled instead. This resource may only\nbe created in billing-enabled projects.\n\n\nTo get more information about Config, see:\n\n* [API documentation](https://cloud.google.com/identity-platform/docs/reference/rest/v2/Config)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/identity-platform/docs)\n\n\n\n## Example Usage\n\n### Identity Platform Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.organizations.Project(\"default\", {\n projectId: \"my-project\",\n name: \"my-project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n labels: {\n firebase: \"enabled\",\n },\n});\nconst identitytoolkit = new gcp.projects.Service(\"identitytoolkit\", {\n project: _default.projectId,\n service: \"identitytoolkit.googleapis.com\",\n});\nconst defaultConfig = new gcp.identityplatform.Config(\"default\", {\n project: _default.projectId,\n autodeleteAnonymousUsers: true,\n signIn: {\n allowDuplicateEmails: true,\n anonymous: {\n enabled: true,\n },\n email: {\n enabled: true,\n passwordRequired: false,\n },\n phoneNumber: {\n enabled: true,\n testPhoneNumbers: {\n \"+11231231234\": \"000000\",\n },\n },\n },\n smsRegionConfig: {\n allowlistOnly: {\n allowedRegions: [\n \"US\",\n \"CA\",\n ],\n },\n },\n blockingFunctions: {\n triggers: [{\n eventType: \"beforeSignIn\",\n functionUri: \"https://us-east1-my-project.cloudfunctions.net/before-sign-in\",\n }],\n forwardInboundCredentials: {\n refreshToken: true,\n accessToken: true,\n idToken: true,\n },\n },\n quota: {\n signUpQuotaConfig: {\n quota: 1000,\n startTime: \"\",\n quotaDuration: \"7200s\",\n },\n },\n authorizedDomains: [\n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.Project(\"default\",\n project_id=\"my-project\",\n name=\"my-project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n labels={\n \"firebase\": \"enabled\",\n })\nidentitytoolkit = gcp.projects.Service(\"identitytoolkit\",\n project=default.project_id,\n service=\"identitytoolkit.googleapis.com\")\ndefault_config = gcp.identityplatform.Config(\"default\",\n project=default.project_id,\n autodelete_anonymous_users=True,\n sign_in={\n \"allowDuplicateEmails\": True,\n \"anonymous\": {\n \"enabled\": True,\n },\n \"email\": {\n \"enabled\": True,\n \"passwordRequired\": False,\n },\n \"phoneNumber\": {\n \"enabled\": True,\n \"testPhoneNumbers\": {\n \"+11231231234\": \"000000\",\n },\n },\n },\n sms_region_config={\n \"allowlistOnly\": {\n \"allowedRegions\": [\n \"US\",\n \"CA\",\n ],\n },\n },\n blocking_functions={\n \"triggers\": [{\n \"eventType\": \"beforeSignIn\",\n \"functionUri\": \"https://us-east1-my-project.cloudfunctions.net/before-sign-in\",\n }],\n \"forwardInboundCredentials\": {\n \"refreshToken\": True,\n \"accessToken\": True,\n \"idToken\": True,\n },\n },\n quota={\n \"signUpQuotaConfig\": {\n \"quota\": 1000,\n \"startTime\": \"\",\n \"quotaDuration\": \"7200s\",\n },\n },\n authorized_domains=[\n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\",\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 @default = new Gcp.Organizations.Project(\"default\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n Labels = \n {\n { \"firebase\", \"enabled\" },\n },\n });\n\n var identitytoolkit = new Gcp.Projects.Service(\"identitytoolkit\", new()\n {\n Project = @default.ProjectId,\n ServiceName = \"identitytoolkit.googleapis.com\",\n });\n\n var defaultConfig = new Gcp.IdentityPlatform.Config(\"default\", new()\n {\n Project = @default.ProjectId,\n AutodeleteAnonymousUsers = true,\n SignIn = new Gcp.IdentityPlatform.Inputs.ConfigSignInArgs\n {\n AllowDuplicateEmails = true,\n Anonymous = new Gcp.IdentityPlatform.Inputs.ConfigSignInAnonymousArgs\n {\n Enabled = true,\n },\n Email = new Gcp.IdentityPlatform.Inputs.ConfigSignInEmailArgs\n {\n Enabled = true,\n PasswordRequired = false,\n },\n PhoneNumber = new Gcp.IdentityPlatform.Inputs.ConfigSignInPhoneNumberArgs\n {\n Enabled = true,\n TestPhoneNumbers = \n {\n { \"+11231231234\", \"000000\" },\n },\n },\n },\n SmsRegionConfig = new Gcp.IdentityPlatform.Inputs.ConfigSmsRegionConfigArgs\n {\n AllowlistOnly = new Gcp.IdentityPlatform.Inputs.ConfigSmsRegionConfigAllowlistOnlyArgs\n {\n AllowedRegions = new[]\n {\n \"US\",\n \"CA\",\n },\n },\n },\n BlockingFunctions = new Gcp.IdentityPlatform.Inputs.ConfigBlockingFunctionsArgs\n {\n Triggers = new[]\n {\n new Gcp.IdentityPlatform.Inputs.ConfigBlockingFunctionsTriggerArgs\n {\n EventType = \"beforeSignIn\",\n FunctionUri = \"https://us-east1-my-project.cloudfunctions.net/before-sign-in\",\n },\n },\n ForwardInboundCredentials = new Gcp.IdentityPlatform.Inputs.ConfigBlockingFunctionsForwardInboundCredentialsArgs\n {\n RefreshToken = true,\n AccessToken = true,\n IdToken = true,\n },\n },\n Quota = new Gcp.IdentityPlatform.Inputs.ConfigQuotaArgs\n {\n SignUpQuotaConfig = new Gcp.IdentityPlatform.Inputs.ConfigQuotaSignUpQuotaConfigArgs\n {\n Quota = 1000,\n StartTime = \"\",\n QuotaDuration = \"7200s\",\n },\n },\n AuthorizedDomains = new[]\n {\n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/identityplatform\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := organizations.NewProject(ctx, \"default\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-project\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"firebase\": pulumi.String(\"enabled\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewService(ctx, \"identitytoolkit\", \u0026projects.ServiceArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t\tService: pulumi.String(\"identitytoolkit.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = identityplatform.NewConfig(ctx, \"default\", \u0026identityplatform.ConfigArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t\tAutodeleteAnonymousUsers: pulumi.Bool(true),\n\t\t\tSignIn: \u0026identityplatform.ConfigSignInArgs{\n\t\t\t\tAllowDuplicateEmails: pulumi.Bool(true),\n\t\t\t\tAnonymous: \u0026identityplatform.ConfigSignInAnonymousArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tEmail: \u0026identityplatform.ConfigSignInEmailArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tPasswordRequired: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tPhoneNumber: \u0026identityplatform.ConfigSignInPhoneNumberArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tTestPhoneNumbers: pulumi.StringMap{\n\t\t\t\t\t\t\"+11231231234\": pulumi.String(\"000000\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSmsRegionConfig: \u0026identityplatform.ConfigSmsRegionConfigArgs{\n\t\t\t\tAllowlistOnly: \u0026identityplatform.ConfigSmsRegionConfigAllowlistOnlyArgs{\n\t\t\t\t\tAllowedRegions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\tpulumi.String(\"CA\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBlockingFunctions: \u0026identityplatform.ConfigBlockingFunctionsArgs{\n\t\t\t\tTriggers: identityplatform.ConfigBlockingFunctionsTriggerArray{\n\t\t\t\t\t\u0026identityplatform.ConfigBlockingFunctionsTriggerArgs{\n\t\t\t\t\t\tEventType: pulumi.String(\"beforeSignIn\"),\n\t\t\t\t\t\tFunctionUri: pulumi.String(\"https://us-east1-my-project.cloudfunctions.net/before-sign-in\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tForwardInboundCredentials: \u0026identityplatform.ConfigBlockingFunctionsForwardInboundCredentialsArgs{\n\t\t\t\t\tRefreshToken: pulumi.Bool(true),\n\t\t\t\t\tAccessToken: pulumi.Bool(true),\n\t\t\t\t\tIdToken: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tQuota: \u0026identityplatform.ConfigQuotaArgs{\n\t\t\t\tSignUpQuotaConfig: \u0026identityplatform.ConfigQuotaSignUpQuotaConfigArgs{\n\t\t\t\t\tQuota: pulumi.Int(1000),\n\t\t\t\t\tStartTime: pulumi.String(\"\"),\n\t\t\t\t\tQuotaDuration: pulumi.String(\"7200s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAuthorizedDomains: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"localhost\"),\n\t\t\t\tpulumi.String(\"my-project.firebaseapp.com\"),\n\t\t\t\tpulumi.String(\"my-project.web.app\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.identityplatform.Config;\nimport com.pulumi.gcp.identityplatform.ConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInAnonymousArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInEmailArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInPhoneNumberArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSmsRegionConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSmsRegionConfigAllowlistOnlyArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigBlockingFunctionsArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigBlockingFunctionsForwardInboundCredentialsArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigQuotaArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigQuotaSignUpQuotaConfigArgs;\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 Project(\"default\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .labels(Map.of(\"firebase\", \"enabled\"))\n .build());\n\n var identitytoolkit = new Service(\"identitytoolkit\", ServiceArgs.builder()\n .project(default_.projectId())\n .service(\"identitytoolkit.googleapis.com\")\n .build());\n\n var defaultConfig = new Config(\"defaultConfig\", ConfigArgs.builder()\n .project(default_.projectId())\n .autodeleteAnonymousUsers(true)\n .signIn(ConfigSignInArgs.builder()\n .allowDuplicateEmails(true)\n .anonymous(ConfigSignInAnonymousArgs.builder()\n .enabled(true)\n .build())\n .email(ConfigSignInEmailArgs.builder()\n .enabled(true)\n .passwordRequired(false)\n .build())\n .phoneNumber(ConfigSignInPhoneNumberArgs.builder()\n .enabled(true)\n .testPhoneNumbers(Map.of(\"+11231231234\", \"000000\"))\n .build())\n .build())\n .smsRegionConfig(ConfigSmsRegionConfigArgs.builder()\n .allowlistOnly(ConfigSmsRegionConfigAllowlistOnlyArgs.builder()\n .allowedRegions( \n \"US\",\n \"CA\")\n .build())\n .build())\n .blockingFunctions(ConfigBlockingFunctionsArgs.builder()\n .triggers(ConfigBlockingFunctionsTriggerArgs.builder()\n .eventType(\"beforeSignIn\")\n .functionUri(\"https://us-east1-my-project.cloudfunctions.net/before-sign-in\")\n .build())\n .forwardInboundCredentials(ConfigBlockingFunctionsForwardInboundCredentialsArgs.builder()\n .refreshToken(true)\n .accessToken(true)\n .idToken(true)\n .build())\n .build())\n .quota(ConfigQuotaArgs.builder()\n .signUpQuotaConfig(ConfigQuotaSignUpQuotaConfigArgs.builder()\n .quota(1000)\n .startTime(\"\")\n .quotaDuration(\"7200s\")\n .build())\n .build())\n .authorizedDomains( \n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:organizations:Project\n properties:\n projectId: my-project\n name: my-project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n labels:\n firebase: enabled\n identitytoolkit:\n type: gcp:projects:Service\n properties:\n project: ${default.projectId}\n service: identitytoolkit.googleapis.com\n defaultConfig:\n type: gcp:identityplatform:Config\n name: default\n properties:\n project: ${default.projectId}\n autodeleteAnonymousUsers: true\n signIn:\n allowDuplicateEmails: true\n anonymous:\n enabled: true\n email:\n enabled: true\n passwordRequired: false\n phoneNumber:\n enabled: true\n testPhoneNumbers:\n '+11231231234': '000000'\n smsRegionConfig:\n allowlistOnly:\n allowedRegions:\n - US\n - CA\n blockingFunctions:\n triggers:\n - eventType: beforeSignIn\n functionUri: https://us-east1-my-project.cloudfunctions.net/before-sign-in\n forwardInboundCredentials:\n refreshToken: true\n accessToken: true\n idToken: true\n quota:\n signUpQuotaConfig:\n quota: 1000\n startTime:\n quotaDuration: 7200s\n authorizedDomains:\n - localhost\n - my-project.firebaseapp.com\n - my-project.web.app\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/config`\n\n* `projects/{{project}}`\n\n* `{{project}}`\n\nWhen using the `pulumi import` command, Config can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:identityplatform/config:Config default projects/{{project}}/config\n```\n\n```sh\n$ pulumi import gcp:identityplatform/config:Config default projects/{{project}}\n```\n\n```sh\n$ pulumi import gcp:identityplatform/config:Config default {{project}}\n```\n\n", + "description": "Identity Platform configuration for a Cloud project. Identity Platform is an\nend-to-end authentication system for third-party users to access apps\nand services.\n\nThis entity is created only once during intialization and cannot be deleted,\nindividual Identity Providers may be disabled instead. This resource may only\nbe created in billing-enabled projects.\n\n\nTo get more information about Config, see:\n\n* [API documentation](https://cloud.google.com/identity-platform/docs/reference/rest/v2/Config)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/identity-platform/docs)\n\n\n\n## Example Usage\n\n### Identity Platform Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.organizations.Project(\"default\", {\n projectId: \"my-project\",\n name: \"my-project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n labels: {\n firebase: \"enabled\",\n },\n});\nconst identitytoolkit = new gcp.projects.Service(\"identitytoolkit\", {\n project: _default.projectId,\n service: \"identitytoolkit.googleapis.com\",\n});\nconst defaultConfig = new gcp.identityplatform.Config(\"default\", {\n project: _default.projectId,\n autodeleteAnonymousUsers: true,\n signIn: {\n allowDuplicateEmails: true,\n anonymous: {\n enabled: true,\n },\n email: {\n enabled: true,\n passwordRequired: false,\n },\n phoneNumber: {\n enabled: true,\n testPhoneNumbers: {\n \"+11231231234\": \"000000\",\n },\n },\n },\n smsRegionConfig: {\n allowlistOnly: {\n allowedRegions: [\n \"US\",\n \"CA\",\n ],\n },\n },\n blockingFunctions: {\n triggers: [{\n eventType: \"beforeSignIn\",\n functionUri: \"https://us-east1-my-project.cloudfunctions.net/before-sign-in\",\n }],\n forwardInboundCredentials: {\n refreshToken: true,\n accessToken: true,\n idToken: true,\n },\n },\n quota: {\n signUpQuotaConfig: {\n quota: 1000,\n startTime: \"\",\n quotaDuration: \"7200s\",\n },\n },\n authorizedDomains: [\n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.Project(\"default\",\n project_id=\"my-project\",\n name=\"my-project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n labels={\n \"firebase\": \"enabled\",\n })\nidentitytoolkit = gcp.projects.Service(\"identitytoolkit\",\n project=default.project_id,\n service=\"identitytoolkit.googleapis.com\")\ndefault_config = gcp.identityplatform.Config(\"default\",\n project=default.project_id,\n autodelete_anonymous_users=True,\n sign_in={\n \"allow_duplicate_emails\": True,\n \"anonymous\": {\n \"enabled\": True,\n },\n \"email\": {\n \"enabled\": True,\n \"password_required\": False,\n },\n \"phone_number\": {\n \"enabled\": True,\n \"test_phone_numbers\": {\n \"_11231231234\": \"000000\",\n },\n },\n },\n sms_region_config={\n \"allowlist_only\": {\n \"allowed_regions\": [\n \"US\",\n \"CA\",\n ],\n },\n },\n blocking_functions={\n \"triggers\": [{\n \"event_type\": \"beforeSignIn\",\n \"function_uri\": \"https://us-east1-my-project.cloudfunctions.net/before-sign-in\",\n }],\n \"forward_inbound_credentials\": {\n \"refresh_token\": True,\n \"access_token\": True,\n \"id_token\": True,\n },\n },\n quota={\n \"sign_up_quota_config\": {\n \"quota\": 1000,\n \"start_time\": \"\",\n \"quota_duration\": \"7200s\",\n },\n },\n authorized_domains=[\n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\",\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 @default = new Gcp.Organizations.Project(\"default\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n Labels = \n {\n { \"firebase\", \"enabled\" },\n },\n });\n\n var identitytoolkit = new Gcp.Projects.Service(\"identitytoolkit\", new()\n {\n Project = @default.ProjectId,\n ServiceName = \"identitytoolkit.googleapis.com\",\n });\n\n var defaultConfig = new Gcp.IdentityPlatform.Config(\"default\", new()\n {\n Project = @default.ProjectId,\n AutodeleteAnonymousUsers = true,\n SignIn = new Gcp.IdentityPlatform.Inputs.ConfigSignInArgs\n {\n AllowDuplicateEmails = true,\n Anonymous = new Gcp.IdentityPlatform.Inputs.ConfigSignInAnonymousArgs\n {\n Enabled = true,\n },\n Email = new Gcp.IdentityPlatform.Inputs.ConfigSignInEmailArgs\n {\n Enabled = true,\n PasswordRequired = false,\n },\n PhoneNumber = new Gcp.IdentityPlatform.Inputs.ConfigSignInPhoneNumberArgs\n {\n Enabled = true,\n TestPhoneNumbers = \n {\n { \"+11231231234\", \"000000\" },\n },\n },\n },\n SmsRegionConfig = new Gcp.IdentityPlatform.Inputs.ConfigSmsRegionConfigArgs\n {\n AllowlistOnly = new Gcp.IdentityPlatform.Inputs.ConfigSmsRegionConfigAllowlistOnlyArgs\n {\n AllowedRegions = new[]\n {\n \"US\",\n \"CA\",\n },\n },\n },\n BlockingFunctions = new Gcp.IdentityPlatform.Inputs.ConfigBlockingFunctionsArgs\n {\n Triggers = new[]\n {\n new Gcp.IdentityPlatform.Inputs.ConfigBlockingFunctionsTriggerArgs\n {\n EventType = \"beforeSignIn\",\n FunctionUri = \"https://us-east1-my-project.cloudfunctions.net/before-sign-in\",\n },\n },\n ForwardInboundCredentials = new Gcp.IdentityPlatform.Inputs.ConfigBlockingFunctionsForwardInboundCredentialsArgs\n {\n RefreshToken = true,\n AccessToken = true,\n IdToken = true,\n },\n },\n Quota = new Gcp.IdentityPlatform.Inputs.ConfigQuotaArgs\n {\n SignUpQuotaConfig = new Gcp.IdentityPlatform.Inputs.ConfigQuotaSignUpQuotaConfigArgs\n {\n Quota = 1000,\n StartTime = \"\",\n QuotaDuration = \"7200s\",\n },\n },\n AuthorizedDomains = new[]\n {\n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/identityplatform\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := organizations.NewProject(ctx, \"default\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-project\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"firebase\": pulumi.String(\"enabled\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewService(ctx, \"identitytoolkit\", \u0026projects.ServiceArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t\tService: pulumi.String(\"identitytoolkit.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = identityplatform.NewConfig(ctx, \"default\", \u0026identityplatform.ConfigArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t\tAutodeleteAnonymousUsers: pulumi.Bool(true),\n\t\t\tSignIn: \u0026identityplatform.ConfigSignInArgs{\n\t\t\t\tAllowDuplicateEmails: pulumi.Bool(true),\n\t\t\t\tAnonymous: \u0026identityplatform.ConfigSignInAnonymousArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tEmail: \u0026identityplatform.ConfigSignInEmailArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tPasswordRequired: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tPhoneNumber: \u0026identityplatform.ConfigSignInPhoneNumberArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tTestPhoneNumbers: pulumi.StringMap{\n\t\t\t\t\t\t\"+11231231234\": pulumi.String(\"000000\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSmsRegionConfig: \u0026identityplatform.ConfigSmsRegionConfigArgs{\n\t\t\t\tAllowlistOnly: \u0026identityplatform.ConfigSmsRegionConfigAllowlistOnlyArgs{\n\t\t\t\t\tAllowedRegions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\tpulumi.String(\"CA\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBlockingFunctions: \u0026identityplatform.ConfigBlockingFunctionsArgs{\n\t\t\t\tTriggers: identityplatform.ConfigBlockingFunctionsTriggerArray{\n\t\t\t\t\t\u0026identityplatform.ConfigBlockingFunctionsTriggerArgs{\n\t\t\t\t\t\tEventType: pulumi.String(\"beforeSignIn\"),\n\t\t\t\t\t\tFunctionUri: pulumi.String(\"https://us-east1-my-project.cloudfunctions.net/before-sign-in\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tForwardInboundCredentials: \u0026identityplatform.ConfigBlockingFunctionsForwardInboundCredentialsArgs{\n\t\t\t\t\tRefreshToken: pulumi.Bool(true),\n\t\t\t\t\tAccessToken: pulumi.Bool(true),\n\t\t\t\t\tIdToken: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tQuota: \u0026identityplatform.ConfigQuotaArgs{\n\t\t\t\tSignUpQuotaConfig: \u0026identityplatform.ConfigQuotaSignUpQuotaConfigArgs{\n\t\t\t\t\tQuota: pulumi.Int(1000),\n\t\t\t\t\tStartTime: pulumi.String(\"\"),\n\t\t\t\t\tQuotaDuration: pulumi.String(\"7200s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAuthorizedDomains: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"localhost\"),\n\t\t\t\tpulumi.String(\"my-project.firebaseapp.com\"),\n\t\t\t\tpulumi.String(\"my-project.web.app\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.identityplatform.Config;\nimport com.pulumi.gcp.identityplatform.ConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInAnonymousArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInEmailArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInPhoneNumberArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSmsRegionConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSmsRegionConfigAllowlistOnlyArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigBlockingFunctionsArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigBlockingFunctionsForwardInboundCredentialsArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigQuotaArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigQuotaSignUpQuotaConfigArgs;\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 Project(\"default\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .labels(Map.of(\"firebase\", \"enabled\"))\n .build());\n\n var identitytoolkit = new Service(\"identitytoolkit\", ServiceArgs.builder()\n .project(default_.projectId())\n .service(\"identitytoolkit.googleapis.com\")\n .build());\n\n var defaultConfig = new Config(\"defaultConfig\", ConfigArgs.builder()\n .project(default_.projectId())\n .autodeleteAnonymousUsers(true)\n .signIn(ConfigSignInArgs.builder()\n .allowDuplicateEmails(true)\n .anonymous(ConfigSignInAnonymousArgs.builder()\n .enabled(true)\n .build())\n .email(ConfigSignInEmailArgs.builder()\n .enabled(true)\n .passwordRequired(false)\n .build())\n .phoneNumber(ConfigSignInPhoneNumberArgs.builder()\n .enabled(true)\n .testPhoneNumbers(Map.of(\"+11231231234\", \"000000\"))\n .build())\n .build())\n .smsRegionConfig(ConfigSmsRegionConfigArgs.builder()\n .allowlistOnly(ConfigSmsRegionConfigAllowlistOnlyArgs.builder()\n .allowedRegions( \n \"US\",\n \"CA\")\n .build())\n .build())\n .blockingFunctions(ConfigBlockingFunctionsArgs.builder()\n .triggers(ConfigBlockingFunctionsTriggerArgs.builder()\n .eventType(\"beforeSignIn\")\n .functionUri(\"https://us-east1-my-project.cloudfunctions.net/before-sign-in\")\n .build())\n .forwardInboundCredentials(ConfigBlockingFunctionsForwardInboundCredentialsArgs.builder()\n .refreshToken(true)\n .accessToken(true)\n .idToken(true)\n .build())\n .build())\n .quota(ConfigQuotaArgs.builder()\n .signUpQuotaConfig(ConfigQuotaSignUpQuotaConfigArgs.builder()\n .quota(1000)\n .startTime(\"\")\n .quotaDuration(\"7200s\")\n .build())\n .build())\n .authorizedDomains( \n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:organizations:Project\n properties:\n projectId: my-project\n name: my-project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n labels:\n firebase: enabled\n identitytoolkit:\n type: gcp:projects:Service\n properties:\n project: ${default.projectId}\n service: identitytoolkit.googleapis.com\n defaultConfig:\n type: gcp:identityplatform:Config\n name: default\n properties:\n project: ${default.projectId}\n autodeleteAnonymousUsers: true\n signIn:\n allowDuplicateEmails: true\n anonymous:\n enabled: true\n email:\n enabled: true\n passwordRequired: false\n phoneNumber:\n enabled: true\n testPhoneNumbers:\n '+11231231234': '000000'\n smsRegionConfig:\n allowlistOnly:\n allowedRegions:\n - US\n - CA\n blockingFunctions:\n triggers:\n - eventType: beforeSignIn\n functionUri: https://us-east1-my-project.cloudfunctions.net/before-sign-in\n forwardInboundCredentials:\n refreshToken: true\n accessToken: true\n idToken: true\n quota:\n signUpQuotaConfig:\n quota: 1000\n startTime:\n quotaDuration: 7200s\n authorizedDomains:\n - localhost\n - my-project.firebaseapp.com\n - my-project.web.app\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/config`\n\n* `projects/{{project}}`\n\n* `{{project}}`\n\nWhen using the `pulumi import` command, Config can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:identityplatform/config:Config default projects/{{project}}/config\n```\n\n```sh\n$ pulumi import gcp:identityplatform/config:Config default projects/{{project}}\n```\n\n```sh\n$ pulumi import gcp:identityplatform/config:Config default {{project}}\n```\n\n", "properties": { "authorizedDomains": { "type": "array", @@ -205692,7 +205692,7 @@ } }, "gcp:identityplatform/inboundSamlConfig:InboundSamlConfig": { - "description": "Inbound SAML configuration for a Identity Toolkit project.\n\nYou must enable the\n[Google Identity Platform](https://console.cloud.google.com/marketplace/details/google-cloud-platform/customer-identity) in\nthe marketplace prior to using this resource.\n\n\n\n## Example Usage\n\n### Identity Platform Inbound Saml Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst samlConfig = new gcp.identityplatform.InboundSamlConfig(\"saml_config\", {\n name: \"saml.tf-config\",\n displayName: \"Display Name\",\n idpConfig: {\n idpEntityId: \"tf-idp\",\n signRequest: true,\n ssoUrl: \"https://example.com\",\n idpCertificates: [{\n x509Certificate: std.file({\n input: \"test-fixtures/rsa_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n },\n spConfig: {\n spEntityId: \"tf-sp\",\n callbackUri: \"https://example.com\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nsaml_config = gcp.identityplatform.InboundSamlConfig(\"saml_config\",\n name=\"saml.tf-config\",\n display_name=\"Display Name\",\n idp_config={\n \"idpEntityId\": \"tf-idp\",\n \"signRequest\": True,\n \"ssoUrl\": \"https://example.com\",\n \"idpCertificates\": [{\n \"x509Certificate\": std.file(input=\"test-fixtures/rsa_cert.pem\").result,\n }],\n },\n sp_config={\n \"spEntityId\": \"tf-sp\",\n \"callbackUri\": \"https://example.com\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var samlConfig = new Gcp.IdentityPlatform.InboundSamlConfig(\"saml_config\", new()\n {\n Name = \"saml.tf-config\",\n DisplayName = \"Display Name\",\n IdpConfig = new Gcp.IdentityPlatform.Inputs.InboundSamlConfigIdpConfigArgs\n {\n IdpEntityId = \"tf-idp\",\n SignRequest = true,\n SsoUrl = \"https://example.com\",\n IdpCertificates = new[]\n {\n new Gcp.IdentityPlatform.Inputs.InboundSamlConfigIdpConfigIdpCertificateArgs\n {\n X509Certificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/rsa_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n SpConfig = new Gcp.IdentityPlatform.Inputs.InboundSamlConfigSpConfigArgs\n {\n SpEntityId = \"tf-sp\",\n CallbackUri = \"https://example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/identityplatform\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/rsa_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = identityplatform.NewInboundSamlConfig(ctx, \"saml_config\", \u0026identityplatform.InboundSamlConfigArgs{\n\t\t\tName: pulumi.String(\"saml.tf-config\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name\"),\n\t\t\tIdpConfig: \u0026identityplatform.InboundSamlConfigIdpConfigArgs{\n\t\t\t\tIdpEntityId: pulumi.String(\"tf-idp\"),\n\t\t\t\tSignRequest: pulumi.Bool(true),\n\t\t\t\tSsoUrl: pulumi.String(\"https://example.com\"),\n\t\t\t\tIdpCertificates: identityplatform.InboundSamlConfigIdpConfigIdpCertificateArray{\n\t\t\t\t\t\u0026identityplatform.InboundSamlConfigIdpConfigIdpCertificateArgs{\n\t\t\t\t\t\tX509Certificate: invokeFile.Result,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSpConfig: \u0026identityplatform.InboundSamlConfigSpConfigArgs{\n\t\t\t\tSpEntityId: pulumi.String(\"tf-sp\"),\n\t\t\t\tCallbackUri: pulumi.String(\"https://example.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.identityplatform.InboundSamlConfig;\nimport com.pulumi.gcp.identityplatform.InboundSamlConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.InboundSamlConfigIdpConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.InboundSamlConfigSpConfigArgs;\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 samlConfig = new InboundSamlConfig(\"samlConfig\", InboundSamlConfigArgs.builder()\n .name(\"saml.tf-config\")\n .displayName(\"Display Name\")\n .idpConfig(InboundSamlConfigIdpConfigArgs.builder()\n .idpEntityId(\"tf-idp\")\n .signRequest(true)\n .ssoUrl(\"https://example.com\")\n .idpCertificates(InboundSamlConfigIdpConfigIdpCertificateArgs.builder()\n .x509Certificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/rsa_cert.pem\")\n .build()).result())\n .build())\n .build())\n .spConfig(InboundSamlConfigSpConfigArgs.builder()\n .spEntityId(\"tf-sp\")\n .callbackUri(\"https://example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n samlConfig:\n type: gcp:identityplatform:InboundSamlConfig\n name: saml_config\n properties:\n name: saml.tf-config\n displayName: Display Name\n idpConfig:\n idpEntityId: tf-idp\n signRequest: true\n ssoUrl: https://example.com\n idpCertificates:\n - x509Certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/rsa_cert.pem\n Return: result\n spConfig:\n spEntityId: tf-sp\n callbackUri: https://example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInboundSamlConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/inboundSamlConfigs/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, InboundSamlConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:identityplatform/inboundSamlConfig:InboundSamlConfig default projects/{{project}}/inboundSamlConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:identityplatform/inboundSamlConfig:InboundSamlConfig default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:identityplatform/inboundSamlConfig:InboundSamlConfig default {{name}}\n```\n\n", + "description": "Inbound SAML configuration for a Identity Toolkit project.\n\nYou must enable the\n[Google Identity Platform](https://console.cloud.google.com/marketplace/details/google-cloud-platform/customer-identity) in\nthe marketplace prior to using this resource.\n\n\n\n## Example Usage\n\n### Identity Platform Inbound Saml Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst samlConfig = new gcp.identityplatform.InboundSamlConfig(\"saml_config\", {\n name: \"saml.tf-config\",\n displayName: \"Display Name\",\n idpConfig: {\n idpEntityId: \"tf-idp\",\n signRequest: true,\n ssoUrl: \"https://example.com\",\n idpCertificates: [{\n x509Certificate: std.file({\n input: \"test-fixtures/rsa_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n },\n spConfig: {\n spEntityId: \"tf-sp\",\n callbackUri: \"https://example.com\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nsaml_config = gcp.identityplatform.InboundSamlConfig(\"saml_config\",\n name=\"saml.tf-config\",\n display_name=\"Display Name\",\n idp_config={\n \"idp_entity_id\": \"tf-idp\",\n \"sign_request\": True,\n \"sso_url\": \"https://example.com\",\n \"idp_certificates\": [{\n \"x509_certificate\": std.file(input=\"test-fixtures/rsa_cert.pem\").result,\n }],\n },\n sp_config={\n \"sp_entity_id\": \"tf-sp\",\n \"callback_uri\": \"https://example.com\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var samlConfig = new Gcp.IdentityPlatform.InboundSamlConfig(\"saml_config\", new()\n {\n Name = \"saml.tf-config\",\n DisplayName = \"Display Name\",\n IdpConfig = new Gcp.IdentityPlatform.Inputs.InboundSamlConfigIdpConfigArgs\n {\n IdpEntityId = \"tf-idp\",\n SignRequest = true,\n SsoUrl = \"https://example.com\",\n IdpCertificates = new[]\n {\n new Gcp.IdentityPlatform.Inputs.InboundSamlConfigIdpConfigIdpCertificateArgs\n {\n X509Certificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/rsa_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n SpConfig = new Gcp.IdentityPlatform.Inputs.InboundSamlConfigSpConfigArgs\n {\n SpEntityId = \"tf-sp\",\n CallbackUri = \"https://example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/identityplatform\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/rsa_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = identityplatform.NewInboundSamlConfig(ctx, \"saml_config\", \u0026identityplatform.InboundSamlConfigArgs{\n\t\t\tName: pulumi.String(\"saml.tf-config\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name\"),\n\t\t\tIdpConfig: \u0026identityplatform.InboundSamlConfigIdpConfigArgs{\n\t\t\t\tIdpEntityId: pulumi.String(\"tf-idp\"),\n\t\t\t\tSignRequest: pulumi.Bool(true),\n\t\t\t\tSsoUrl: pulumi.String(\"https://example.com\"),\n\t\t\t\tIdpCertificates: identityplatform.InboundSamlConfigIdpConfigIdpCertificateArray{\n\t\t\t\t\t\u0026identityplatform.InboundSamlConfigIdpConfigIdpCertificateArgs{\n\t\t\t\t\t\tX509Certificate: pulumi.String(invokeFile.Result),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSpConfig: \u0026identityplatform.InboundSamlConfigSpConfigArgs{\n\t\t\t\tSpEntityId: pulumi.String(\"tf-sp\"),\n\t\t\t\tCallbackUri: pulumi.String(\"https://example.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.identityplatform.InboundSamlConfig;\nimport com.pulumi.gcp.identityplatform.InboundSamlConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.InboundSamlConfigIdpConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.InboundSamlConfigSpConfigArgs;\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 samlConfig = new InboundSamlConfig(\"samlConfig\", InboundSamlConfigArgs.builder()\n .name(\"saml.tf-config\")\n .displayName(\"Display Name\")\n .idpConfig(InboundSamlConfigIdpConfigArgs.builder()\n .idpEntityId(\"tf-idp\")\n .signRequest(true)\n .ssoUrl(\"https://example.com\")\n .idpCertificates(InboundSamlConfigIdpConfigIdpCertificateArgs.builder()\n .x509Certificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/rsa_cert.pem\")\n .build()).result())\n .build())\n .build())\n .spConfig(InboundSamlConfigSpConfigArgs.builder()\n .spEntityId(\"tf-sp\")\n .callbackUri(\"https://example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n samlConfig:\n type: gcp:identityplatform:InboundSamlConfig\n name: saml_config\n properties:\n name: saml.tf-config\n displayName: Display Name\n idpConfig:\n idpEntityId: tf-idp\n signRequest: true\n ssoUrl: https://example.com\n idpCertificates:\n - x509Certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/rsa_cert.pem\n Return: result\n spConfig:\n spEntityId: tf-sp\n callbackUri: https://example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInboundSamlConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/inboundSamlConfigs/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, InboundSamlConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:identityplatform/inboundSamlConfig:InboundSamlConfig default projects/{{project}}/inboundSamlConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:identityplatform/inboundSamlConfig:InboundSamlConfig default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:identityplatform/inboundSamlConfig:InboundSamlConfig default {{name}}\n```\n\n", "properties": { "displayName": { "type": "string", @@ -205901,7 +205901,7 @@ } }, "gcp:identityplatform/projectDefaultConfig:ProjectDefaultConfig": { - "description": "\u003e **Warning:** `gcp.identityplatform.Config` is deprecated and will be removed in the next major release of the provider. Use the `gcp.identityplatform.Config` resource instead. It contains a more comprehensive list of fields, and was created before `gcp.identityplatform.ProjectDefaultConfig` was added.\n\nThere is no persistent data associated with this resource.\n\n\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Identity Platform Project Default Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.identityplatform.ProjectDefaultConfig(\"default\", {signIn: {\n allowDuplicateEmails: true,\n anonymous: {\n enabled: true,\n },\n email: {\n enabled: true,\n passwordRequired: false,\n },\n phoneNumber: {\n enabled: true,\n testPhoneNumbers: {\n \"+11231231234\": \"000000\",\n },\n },\n}});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.identityplatform.ProjectDefaultConfig(\"default\", sign_in={\n \"allowDuplicateEmails\": True,\n \"anonymous\": {\n \"enabled\": True,\n },\n \"email\": {\n \"enabled\": True,\n \"passwordRequired\": False,\n },\n \"phoneNumber\": {\n \"enabled\": True,\n \"testPhoneNumbers\": {\n \"+11231231234\": \"000000\",\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 @default = new Gcp.IdentityPlatform.ProjectDefaultConfig(\"default\", new()\n {\n SignIn = new Gcp.IdentityPlatform.Inputs.ProjectDefaultConfigSignInArgs\n {\n AllowDuplicateEmails = true,\n Anonymous = new Gcp.IdentityPlatform.Inputs.ProjectDefaultConfigSignInAnonymousArgs\n {\n Enabled = true,\n },\n Email = new Gcp.IdentityPlatform.Inputs.ProjectDefaultConfigSignInEmailArgs\n {\n Enabled = true,\n PasswordRequired = false,\n },\n PhoneNumber = new Gcp.IdentityPlatform.Inputs.ProjectDefaultConfigSignInPhoneNumberArgs\n {\n Enabled = true,\n TestPhoneNumbers = \n {\n { \"+11231231234\", \"000000\" },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/identityplatform\"\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 := identityplatform.NewProjectDefaultConfig(ctx, \"default\", \u0026identityplatform.ProjectDefaultConfigArgs{\n\t\t\tSignIn: \u0026identityplatform.ProjectDefaultConfigSignInArgs{\n\t\t\t\tAllowDuplicateEmails: pulumi.Bool(true),\n\t\t\t\tAnonymous: \u0026identityplatform.ProjectDefaultConfigSignInAnonymousArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tEmail: \u0026identityplatform.ProjectDefaultConfigSignInEmailArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tPasswordRequired: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tPhoneNumber: \u0026identityplatform.ProjectDefaultConfigSignInPhoneNumberArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tTestPhoneNumbers: pulumi.StringMap{\n\t\t\t\t\t\t\"+11231231234\": pulumi.String(\"000000\"),\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.identityplatform.ProjectDefaultConfig;\nimport com.pulumi.gcp.identityplatform.ProjectDefaultConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ProjectDefaultConfigSignInArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ProjectDefaultConfigSignInAnonymousArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ProjectDefaultConfigSignInEmailArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ProjectDefaultConfigSignInPhoneNumberArgs;\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 ProjectDefaultConfig(\"default\", ProjectDefaultConfigArgs.builder()\n .signIn(ProjectDefaultConfigSignInArgs.builder()\n .allowDuplicateEmails(true)\n .anonymous(ProjectDefaultConfigSignInAnonymousArgs.builder()\n .enabled(true)\n .build())\n .email(ProjectDefaultConfigSignInEmailArgs.builder()\n .enabled(true)\n .passwordRequired(false)\n .build())\n .phoneNumber(ProjectDefaultConfigSignInPhoneNumberArgs.builder()\n .enabled(true)\n .testPhoneNumbers(Map.of(\"+11231231234\", \"000000\"))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:identityplatform:ProjectDefaultConfig\n properties:\n signIn:\n allowDuplicateEmails: true\n anonymous:\n enabled: true\n email:\n enabled: true\n passwordRequired: false\n phoneNumber:\n enabled: true\n testPhoneNumbers:\n '+11231231234': '000000'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProjectDefaultConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/config/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ProjectDefaultConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:identityplatform/projectDefaultConfig:ProjectDefaultConfig default projects/{{project}}/config/{{name}}\n```\n\n```sh\n$ pulumi import gcp:identityplatform/projectDefaultConfig:ProjectDefaultConfig default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:identityplatform/projectDefaultConfig:ProjectDefaultConfig default {{name}}\n```\n\n", + "description": "\u003e **Warning:** `gcp.identityplatform.Config` is deprecated and will be removed in the next major release of the provider. Use the `gcp.identityplatform.Config` resource instead. It contains a more comprehensive list of fields, and was created before `gcp.identityplatform.ProjectDefaultConfig` was added.\n\nThere is no persistent data associated with this resource.\n\n\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Identity Platform Project Default Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.identityplatform.ProjectDefaultConfig(\"default\", {signIn: {\n allowDuplicateEmails: true,\n anonymous: {\n enabled: true,\n },\n email: {\n enabled: true,\n passwordRequired: false,\n },\n phoneNumber: {\n enabled: true,\n testPhoneNumbers: {\n \"+11231231234\": \"000000\",\n },\n },\n}});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.identityplatform.ProjectDefaultConfig(\"default\", sign_in={\n \"allow_duplicate_emails\": True,\n \"anonymous\": {\n \"enabled\": True,\n },\n \"email\": {\n \"enabled\": True,\n \"password_required\": False,\n },\n \"phone_number\": {\n \"enabled\": True,\n \"test_phone_numbers\": {\n \"_11231231234\": \"000000\",\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 @default = new Gcp.IdentityPlatform.ProjectDefaultConfig(\"default\", new()\n {\n SignIn = new Gcp.IdentityPlatform.Inputs.ProjectDefaultConfigSignInArgs\n {\n AllowDuplicateEmails = true,\n Anonymous = new Gcp.IdentityPlatform.Inputs.ProjectDefaultConfigSignInAnonymousArgs\n {\n Enabled = true,\n },\n Email = new Gcp.IdentityPlatform.Inputs.ProjectDefaultConfigSignInEmailArgs\n {\n Enabled = true,\n PasswordRequired = false,\n },\n PhoneNumber = new Gcp.IdentityPlatform.Inputs.ProjectDefaultConfigSignInPhoneNumberArgs\n {\n Enabled = true,\n TestPhoneNumbers = \n {\n { \"+11231231234\", \"000000\" },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/identityplatform\"\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 := identityplatform.NewProjectDefaultConfig(ctx, \"default\", \u0026identityplatform.ProjectDefaultConfigArgs{\n\t\t\tSignIn: \u0026identityplatform.ProjectDefaultConfigSignInArgs{\n\t\t\t\tAllowDuplicateEmails: pulumi.Bool(true),\n\t\t\t\tAnonymous: \u0026identityplatform.ProjectDefaultConfigSignInAnonymousArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tEmail: \u0026identityplatform.ProjectDefaultConfigSignInEmailArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tPasswordRequired: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tPhoneNumber: \u0026identityplatform.ProjectDefaultConfigSignInPhoneNumberArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tTestPhoneNumbers: pulumi.StringMap{\n\t\t\t\t\t\t\"+11231231234\": pulumi.String(\"000000\"),\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.identityplatform.ProjectDefaultConfig;\nimport com.pulumi.gcp.identityplatform.ProjectDefaultConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ProjectDefaultConfigSignInArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ProjectDefaultConfigSignInAnonymousArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ProjectDefaultConfigSignInEmailArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ProjectDefaultConfigSignInPhoneNumberArgs;\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 ProjectDefaultConfig(\"default\", ProjectDefaultConfigArgs.builder()\n .signIn(ProjectDefaultConfigSignInArgs.builder()\n .allowDuplicateEmails(true)\n .anonymous(ProjectDefaultConfigSignInAnonymousArgs.builder()\n .enabled(true)\n .build())\n .email(ProjectDefaultConfigSignInEmailArgs.builder()\n .enabled(true)\n .passwordRequired(false)\n .build())\n .phoneNumber(ProjectDefaultConfigSignInPhoneNumberArgs.builder()\n .enabled(true)\n .testPhoneNumbers(Map.of(\"+11231231234\", \"000000\"))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:identityplatform:ProjectDefaultConfig\n properties:\n signIn:\n allowDuplicateEmails: true\n anonymous:\n enabled: true\n email:\n enabled: true\n passwordRequired: false\n phoneNumber:\n enabled: true\n testPhoneNumbers:\n '+11231231234': '000000'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProjectDefaultConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/config/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ProjectDefaultConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:identityplatform/projectDefaultConfig:ProjectDefaultConfig default projects/{{project}}/config/{{name}}\n```\n\n```sh\n$ pulumi import gcp:identityplatform/projectDefaultConfig:ProjectDefaultConfig default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:identityplatform/projectDefaultConfig:ProjectDefaultConfig default {{name}}\n```\n\n", "properties": { "name": { "type": "string", @@ -206156,7 +206156,7 @@ } }, "gcp:identityplatform/tenantInboundSamlConfig:TenantInboundSamlConfig": { - "description": "Inbound SAML configuration for a Identity Toolkit tenant.\n\nYou must enable the\n[Google Identity Platform](https://console.cloud.google.com/marketplace/details/google-cloud-platform/customer-identity) in\nthe marketplace prior to using this resource.\n\n\n\n## Example Usage\n\n### Identity Platform Tenant Inbound Saml Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst tenant = new gcp.identityplatform.Tenant(\"tenant\", {displayName: \"tenant\"});\nconst tenantSamlConfig = new gcp.identityplatform.TenantInboundSamlConfig(\"tenant_saml_config\", {\n name: \"saml.tf-config\",\n displayName: \"Display Name\",\n tenant: tenant.name,\n idpConfig: {\n idpEntityId: \"tf-idp\",\n signRequest: true,\n ssoUrl: \"https://example.com\",\n idpCertificates: [{\n x509Certificate: std.file({\n input: \"test-fixtures/rsa_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n },\n spConfig: {\n spEntityId: \"tf-sp\",\n callbackUri: \"https://example.com\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ntenant = gcp.identityplatform.Tenant(\"tenant\", display_name=\"tenant\")\ntenant_saml_config = gcp.identityplatform.TenantInboundSamlConfig(\"tenant_saml_config\",\n name=\"saml.tf-config\",\n display_name=\"Display Name\",\n tenant=tenant.name,\n idp_config={\n \"idpEntityId\": \"tf-idp\",\n \"signRequest\": True,\n \"ssoUrl\": \"https://example.com\",\n \"idpCertificates\": [{\n \"x509Certificate\": std.file(input=\"test-fixtures/rsa_cert.pem\").result,\n }],\n },\n sp_config={\n \"spEntityId\": \"tf-sp\",\n \"callbackUri\": \"https://example.com\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var tenant = new Gcp.IdentityPlatform.Tenant(\"tenant\", new()\n {\n DisplayName = \"tenant\",\n });\n\n var tenantSamlConfig = new Gcp.IdentityPlatform.TenantInboundSamlConfig(\"tenant_saml_config\", new()\n {\n Name = \"saml.tf-config\",\n DisplayName = \"Display Name\",\n Tenant = tenant.Name,\n IdpConfig = new Gcp.IdentityPlatform.Inputs.TenantInboundSamlConfigIdpConfigArgs\n {\n IdpEntityId = \"tf-idp\",\n SignRequest = true,\n SsoUrl = \"https://example.com\",\n IdpCertificates = new[]\n {\n new Gcp.IdentityPlatform.Inputs.TenantInboundSamlConfigIdpConfigIdpCertificateArgs\n {\n X509Certificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/rsa_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n SpConfig = new Gcp.IdentityPlatform.Inputs.TenantInboundSamlConfigSpConfigArgs\n {\n SpEntityId = \"tf-sp\",\n CallbackUri = \"https://example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/identityplatform\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttenant, err := identityplatform.NewTenant(ctx, \"tenant\", \u0026identityplatform.TenantArgs{\n\t\t\tDisplayName: pulumi.String(\"tenant\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/rsa_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = identityplatform.NewTenantInboundSamlConfig(ctx, \"tenant_saml_config\", \u0026identityplatform.TenantInboundSamlConfigArgs{\n\t\t\tName: pulumi.String(\"saml.tf-config\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name\"),\n\t\t\tTenant: tenant.Name,\n\t\t\tIdpConfig: \u0026identityplatform.TenantInboundSamlConfigIdpConfigArgs{\n\t\t\t\tIdpEntityId: pulumi.String(\"tf-idp\"),\n\t\t\t\tSignRequest: pulumi.Bool(true),\n\t\t\t\tSsoUrl: pulumi.String(\"https://example.com\"),\n\t\t\t\tIdpCertificates: identityplatform.TenantInboundSamlConfigIdpConfigIdpCertificateArray{\n\t\t\t\t\t\u0026identityplatform.TenantInboundSamlConfigIdpConfigIdpCertificateArgs{\n\t\t\t\t\t\tX509Certificate: invokeFile.Result,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSpConfig: \u0026identityplatform.TenantInboundSamlConfigSpConfigArgs{\n\t\t\t\tSpEntityId: pulumi.String(\"tf-sp\"),\n\t\t\t\tCallbackUri: pulumi.String(\"https://example.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.identityplatform.Tenant;\nimport com.pulumi.gcp.identityplatform.TenantArgs;\nimport com.pulumi.gcp.identityplatform.TenantInboundSamlConfig;\nimport com.pulumi.gcp.identityplatform.TenantInboundSamlConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.TenantInboundSamlConfigIdpConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.TenantInboundSamlConfigSpConfigArgs;\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 tenant = new Tenant(\"tenant\", TenantArgs.builder()\n .displayName(\"tenant\")\n .build());\n\n var tenantSamlConfig = new TenantInboundSamlConfig(\"tenantSamlConfig\", TenantInboundSamlConfigArgs.builder()\n .name(\"saml.tf-config\")\n .displayName(\"Display Name\")\n .tenant(tenant.name())\n .idpConfig(TenantInboundSamlConfigIdpConfigArgs.builder()\n .idpEntityId(\"tf-idp\")\n .signRequest(true)\n .ssoUrl(\"https://example.com\")\n .idpCertificates(TenantInboundSamlConfigIdpConfigIdpCertificateArgs.builder()\n .x509Certificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/rsa_cert.pem\")\n .build()).result())\n .build())\n .build())\n .spConfig(TenantInboundSamlConfigSpConfigArgs.builder()\n .spEntityId(\"tf-sp\")\n .callbackUri(\"https://example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tenant:\n type: gcp:identityplatform:Tenant\n properties:\n displayName: tenant\n tenantSamlConfig:\n type: gcp:identityplatform:TenantInboundSamlConfig\n name: tenant_saml_config\n properties:\n name: saml.tf-config\n displayName: Display Name\n tenant: ${tenant.name}\n idpConfig:\n idpEntityId: tf-idp\n signRequest: true\n ssoUrl: https://example.com\n idpCertificates:\n - x509Certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/rsa_cert.pem\n Return: result\n spConfig:\n spEntityId: tf-sp\n callbackUri: https://example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTenantInboundSamlConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/tenants/{{tenant}}/inboundSamlConfigs/{{name}}`\n\n* `{{project}}/{{tenant}}/{{name}}`\n\n* `{{tenant}}/{{name}}`\n\nWhen using the `pulumi import` command, TenantInboundSamlConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:identityplatform/tenantInboundSamlConfig:TenantInboundSamlConfig default projects/{{project}}/tenants/{{tenant}}/inboundSamlConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:identityplatform/tenantInboundSamlConfig:TenantInboundSamlConfig default {{project}}/{{tenant}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:identityplatform/tenantInboundSamlConfig:TenantInboundSamlConfig default {{tenant}}/{{name}}\n```\n\n", + "description": "Inbound SAML configuration for a Identity Toolkit tenant.\n\nYou must enable the\n[Google Identity Platform](https://console.cloud.google.com/marketplace/details/google-cloud-platform/customer-identity) in\nthe marketplace prior to using this resource.\n\n\n\n## Example Usage\n\n### Identity Platform Tenant Inbound Saml Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst tenant = new gcp.identityplatform.Tenant(\"tenant\", {displayName: \"tenant\"});\nconst tenantSamlConfig = new gcp.identityplatform.TenantInboundSamlConfig(\"tenant_saml_config\", {\n name: \"saml.tf-config\",\n displayName: \"Display Name\",\n tenant: tenant.name,\n idpConfig: {\n idpEntityId: \"tf-idp\",\n signRequest: true,\n ssoUrl: \"https://example.com\",\n idpCertificates: [{\n x509Certificate: std.file({\n input: \"test-fixtures/rsa_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n },\n spConfig: {\n spEntityId: \"tf-sp\",\n callbackUri: \"https://example.com\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ntenant = gcp.identityplatform.Tenant(\"tenant\", display_name=\"tenant\")\ntenant_saml_config = gcp.identityplatform.TenantInboundSamlConfig(\"tenant_saml_config\",\n name=\"saml.tf-config\",\n display_name=\"Display Name\",\n tenant=tenant.name,\n idp_config={\n \"idp_entity_id\": \"tf-idp\",\n \"sign_request\": True,\n \"sso_url\": \"https://example.com\",\n \"idp_certificates\": [{\n \"x509_certificate\": std.file(input=\"test-fixtures/rsa_cert.pem\").result,\n }],\n },\n sp_config={\n \"sp_entity_id\": \"tf-sp\",\n \"callback_uri\": \"https://example.com\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var tenant = new Gcp.IdentityPlatform.Tenant(\"tenant\", new()\n {\n DisplayName = \"tenant\",\n });\n\n var tenantSamlConfig = new Gcp.IdentityPlatform.TenantInboundSamlConfig(\"tenant_saml_config\", new()\n {\n Name = \"saml.tf-config\",\n DisplayName = \"Display Name\",\n Tenant = tenant.Name,\n IdpConfig = new Gcp.IdentityPlatform.Inputs.TenantInboundSamlConfigIdpConfigArgs\n {\n IdpEntityId = \"tf-idp\",\n SignRequest = true,\n SsoUrl = \"https://example.com\",\n IdpCertificates = new[]\n {\n new Gcp.IdentityPlatform.Inputs.TenantInboundSamlConfigIdpConfigIdpCertificateArgs\n {\n X509Certificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/rsa_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n SpConfig = new Gcp.IdentityPlatform.Inputs.TenantInboundSamlConfigSpConfigArgs\n {\n SpEntityId = \"tf-sp\",\n CallbackUri = \"https://example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/identityplatform\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttenant, err := identityplatform.NewTenant(ctx, \"tenant\", \u0026identityplatform.TenantArgs{\n\t\t\tDisplayName: pulumi.String(\"tenant\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/rsa_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = identityplatform.NewTenantInboundSamlConfig(ctx, \"tenant_saml_config\", \u0026identityplatform.TenantInboundSamlConfigArgs{\n\t\t\tName: pulumi.String(\"saml.tf-config\"),\n\t\t\tDisplayName: pulumi.String(\"Display Name\"),\n\t\t\tTenant: tenant.Name,\n\t\t\tIdpConfig: \u0026identityplatform.TenantInboundSamlConfigIdpConfigArgs{\n\t\t\t\tIdpEntityId: pulumi.String(\"tf-idp\"),\n\t\t\t\tSignRequest: pulumi.Bool(true),\n\t\t\t\tSsoUrl: pulumi.String(\"https://example.com\"),\n\t\t\t\tIdpCertificates: identityplatform.TenantInboundSamlConfigIdpConfigIdpCertificateArray{\n\t\t\t\t\t\u0026identityplatform.TenantInboundSamlConfigIdpConfigIdpCertificateArgs{\n\t\t\t\t\t\tX509Certificate: pulumi.String(invokeFile.Result),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSpConfig: \u0026identityplatform.TenantInboundSamlConfigSpConfigArgs{\n\t\t\t\tSpEntityId: pulumi.String(\"tf-sp\"),\n\t\t\t\tCallbackUri: pulumi.String(\"https://example.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.identityplatform.Tenant;\nimport com.pulumi.gcp.identityplatform.TenantArgs;\nimport com.pulumi.gcp.identityplatform.TenantInboundSamlConfig;\nimport com.pulumi.gcp.identityplatform.TenantInboundSamlConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.TenantInboundSamlConfigIdpConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.TenantInboundSamlConfigSpConfigArgs;\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 tenant = new Tenant(\"tenant\", TenantArgs.builder()\n .displayName(\"tenant\")\n .build());\n\n var tenantSamlConfig = new TenantInboundSamlConfig(\"tenantSamlConfig\", TenantInboundSamlConfigArgs.builder()\n .name(\"saml.tf-config\")\n .displayName(\"Display Name\")\n .tenant(tenant.name())\n .idpConfig(TenantInboundSamlConfigIdpConfigArgs.builder()\n .idpEntityId(\"tf-idp\")\n .signRequest(true)\n .ssoUrl(\"https://example.com\")\n .idpCertificates(TenantInboundSamlConfigIdpConfigIdpCertificateArgs.builder()\n .x509Certificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/rsa_cert.pem\")\n .build()).result())\n .build())\n .build())\n .spConfig(TenantInboundSamlConfigSpConfigArgs.builder()\n .spEntityId(\"tf-sp\")\n .callbackUri(\"https://example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tenant:\n type: gcp:identityplatform:Tenant\n properties:\n displayName: tenant\n tenantSamlConfig:\n type: gcp:identityplatform:TenantInboundSamlConfig\n name: tenant_saml_config\n properties:\n name: saml.tf-config\n displayName: Display Name\n tenant: ${tenant.name}\n idpConfig:\n idpEntityId: tf-idp\n signRequest: true\n ssoUrl: https://example.com\n idpCertificates:\n - x509Certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/rsa_cert.pem\n Return: result\n spConfig:\n spEntityId: tf-sp\n callbackUri: https://example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTenantInboundSamlConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/tenants/{{tenant}}/inboundSamlConfigs/{{name}}`\n\n* `{{project}}/{{tenant}}/{{name}}`\n\n* `{{tenant}}/{{name}}`\n\nWhen using the `pulumi import` command, TenantInboundSamlConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:identityplatform/tenantInboundSamlConfig:TenantInboundSamlConfig default projects/{{project}}/tenants/{{tenant}}/inboundSamlConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:identityplatform/tenantInboundSamlConfig:TenantInboundSamlConfig default {{project}}/{{tenant}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:identityplatform/tenantInboundSamlConfig:TenantInboundSamlConfig default {{tenant}}/{{name}}\n```\n\n", "properties": { "displayName": { "type": "string", @@ -206399,7 +206399,7 @@ } }, "gcp:integrationconnectors/connection:Connection": { - "description": "An Integration connectors Connection.\n\n\nTo get more information about Connection, see:\n\n* [API documentation](https://cloud.google.com/integration-connectors/docs/reference/rest/v1/projects.locations.connections)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/integration-connectors/docs/createconnection)\n\n## Example Usage\n\n### Integration Connectors Connection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testProject = gcp.organizations.getProject({});\nconst pubsubconnection = new gcp.integrationconnectors.Connection(\"pubsubconnection\", {\n name: \"test-pubsub\",\n location: \"us-central1\",\n connectorVersion: testProject.then(testProject =\u003e `projects/${testProject.projectId}/locations/global/providers/gcp/connectors/pubsub/versions/1`),\n description: \"tf created description\",\n configVariables: [\n {\n key: \"project_id\",\n stringValue: \"connectors-example\",\n },\n {\n key: \"topic_id\",\n stringValue: \"test\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_project = gcp.organizations.get_project()\npubsubconnection = gcp.integrationconnectors.Connection(\"pubsubconnection\",\n name=\"test-pubsub\",\n location=\"us-central1\",\n connector_version=f\"projects/{test_project.project_id}/locations/global/providers/gcp/connectors/pubsub/versions/1\",\n description=\"tf created description\",\n config_variables=[\n {\n \"key\": \"project_id\",\n \"stringValue\": \"connectors-example\",\n },\n {\n \"key\": \"topic_id\",\n \"stringValue\": \"test\",\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 testProject = Gcp.Organizations.GetProject.Invoke();\n\n var pubsubconnection = new Gcp.IntegrationConnectors.Connection(\"pubsubconnection\", new()\n {\n Name = \"test-pubsub\",\n Location = \"us-central1\",\n ConnectorVersion = $\"projects/{testProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId)}/locations/global/providers/gcp/connectors/pubsub/versions/1\",\n Description = \"tf created description\",\n ConfigVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"project_id\",\n StringValue = \"connectors-example\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"topic_id\",\n StringValue = \"test\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/integrationconnectors\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestProject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = integrationconnectors.NewConnection(ctx, \"pubsubconnection\", \u0026integrationconnectors.ConnectionArgs{\n\t\t\tName: pulumi.String(\"test-pubsub\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectorVersion: pulumi.String(fmt.Sprintf(\"projects/%v/locations/global/providers/gcp/connectors/pubsub/versions/1\", testProject.ProjectId)),\n\t\t\tDescription: pulumi.String(\"tf created description\"),\n\t\t\tConfigVariables: integrationconnectors.ConnectionConfigVariableArray{\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"project_id\"),\n\t\t\t\t\tStringValue: pulumi.String(\"connectors-example\"),\n\t\t\t\t},\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"topic_id\"),\n\t\t\t\t\tStringValue: pulumi.String(\"test\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.integrationconnectors.Connection;\nimport com.pulumi.gcp.integrationconnectors.ConnectionArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionConfigVariableArgs;\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 testProject = OrganizationsFunctions.getProject();\n\n var pubsubconnection = new Connection(\"pubsubconnection\", ConnectionArgs.builder()\n .name(\"test-pubsub\")\n .location(\"us-central1\")\n .connectorVersion(String.format(\"projects/%s/locations/global/providers/gcp/connectors/pubsub/versions/1\", testProject.applyValue(getProjectResult -\u003e getProjectResult.projectId())))\n .description(\"tf created description\")\n .configVariables( \n ConnectionConfigVariableArgs.builder()\n .key(\"project_id\")\n .stringValue(\"connectors-example\")\n .build(),\n ConnectionConfigVariableArgs.builder()\n .key(\"topic_id\")\n .stringValue(\"test\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pubsubconnection:\n type: gcp:integrationconnectors:Connection\n properties:\n name: test-pubsub\n location: us-central1\n connectorVersion: projects/${testProject.projectId}/locations/global/providers/gcp/connectors/pubsub/versions/1\n description: tf created description\n configVariables:\n - key: project_id\n stringValue: connectors-example\n - key: topic_id\n stringValue: test\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Integration Connectors Connection Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testProject = gcp.organizations.getProject({});\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"test-secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"dummypassword\",\n});\nconst secretIam = new gcp.secretmanager.SecretIamMember(\"secret_iam\", {\n secretId: secret_basic.id,\n role: \"roles/secretmanager.admin\",\n member: testProject.then(testProject =\u003e `serviceAccount:${testProject.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret_version_basic],\n});\nconst zendeskconnection = new gcp.integrationconnectors.Connection(\"zendeskconnection\", {\n name: \"test-zendesk\",\n description: \"tf updated description\",\n location: \"us-central1\",\n serviceAccount: testProject.then(testProject =\u003e `${testProject.number}-compute@developer.gserviceaccount.com`),\n connectorVersion: testProject.then(testProject =\u003e `projects/${testProject.projectId}/locations/global/providers/zendesk/connectors/zendesk/versions/1`),\n configVariables: [\n {\n key: \"proxy_enabled\",\n booleanValue: false,\n },\n {\n key: \"sample_integer_value\",\n integerValue: 1,\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n ],\n suspended: false,\n authConfig: {\n additionalVariables: [\n {\n key: \"sample_string\",\n stringValue: \"sampleString\",\n },\n {\n key: \"sample_boolean\",\n booleanValue: false,\n },\n {\n key: \"sample_integer\",\n integerValue: 1,\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n ],\n authType: \"USER_PASSWORD\",\n authKey: \"sampleAuthKey\",\n userPassword: {\n username: \"user@xyz.com\",\n password: {\n secretVersion: secret_version_basic.name,\n },\n },\n },\n destinationConfigs: [{\n key: \"url\",\n destinations: [{\n host: \"https://test.zendesk.com\",\n port: 80,\n }],\n }],\n lockConfig: {\n locked: false,\n reason: \"Its not locked\",\n },\n logConfig: {\n enabled: true,\n },\n nodeConfig: {\n minNodeCount: 2,\n maxNodeCount: 50,\n },\n labels: {\n foo: \"bar\",\n },\n sslConfig: {\n additionalVariables: [\n {\n key: \"sample_string\",\n stringValue: \"sampleString\",\n },\n {\n key: \"sample_boolean\",\n booleanValue: false,\n },\n {\n key: \"sample_integer\",\n integerValue: 1,\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n ],\n clientCertType: \"PEM\",\n clientCertificate: {\n secretVersion: secret_version_basic.name,\n },\n clientPrivateKey: {\n secretVersion: secret_version_basic.name,\n },\n clientPrivateKeyPass: {\n secretVersion: secret_version_basic.name,\n },\n privateServerCertificate: {\n secretVersion: secret_version_basic.name,\n },\n serverCertType: \"PEM\",\n trustModel: \"PRIVATE\",\n type: \"TLS\",\n useSsl: true,\n },\n eventingEnablementType: \"EVENTING_AND_CONNECTION\",\n eventingConfig: {\n additionalVariables: [\n {\n key: \"sample_string\",\n stringValue: \"sampleString\",\n },\n {\n key: \"sample_boolean\",\n booleanValue: false,\n },\n {\n key: \"sample_integer\",\n integerValue: 1,\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n ],\n registrationDestinationConfig: {\n key: \"registration_destination_config\",\n destinations: [{\n host: \"https://test.zendesk.com\",\n port: 80,\n }],\n },\n authConfig: {\n authType: \"USER_PASSWORD\",\n authKey: \"sampleAuthKey\",\n userPassword: {\n username: \"user@xyz.com\",\n password: {\n secretVersion: secret_version_basic.name,\n },\n },\n additionalVariables: [\n {\n key: \"sample_string\",\n stringValue: \"sampleString\",\n },\n {\n key: \"sample_boolean\",\n booleanValue: false,\n },\n {\n key: \"sample_integer\",\n integerValue: 1,\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n ],\n },\n enrichmentEnabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_project = gcp.organizations.get_project()\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"test-secret\",\n replication={\n \"userManaged\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"dummypassword\")\nsecret_iam = gcp.secretmanager.SecretIamMember(\"secret_iam\",\n secret_id=secret_basic.id,\n role=\"roles/secretmanager.admin\",\n member=f\"serviceAccount:{test_project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret_version_basic]))\nzendeskconnection = gcp.integrationconnectors.Connection(\"zendeskconnection\",\n name=\"test-zendesk\",\n description=\"tf updated description\",\n location=\"us-central1\",\n service_account=f\"{test_project.number}-compute@developer.gserviceaccount.com\",\n connector_version=f\"projects/{test_project.project_id}/locations/global/providers/zendesk/connectors/zendesk/versions/1\",\n config_variables=[\n {\n \"key\": \"proxy_enabled\",\n \"booleanValue\": False,\n },\n {\n \"key\": \"sample_integer_value\",\n \"integerValue\": 1,\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryptionKeyValue\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kmsKeyName\": \"sampleKMSKkey\",\n },\n },\n {\n \"key\": \"sample_secret_value\",\n \"secretValue\": {\n \"secretVersion\": secret_version_basic.name,\n },\n },\n ],\n suspended=False,\n auth_config={\n \"additionalVariables\": [\n {\n \"key\": \"sample_string\",\n \"stringValue\": \"sampleString\",\n },\n {\n \"key\": \"sample_boolean\",\n \"booleanValue\": False,\n },\n {\n \"key\": \"sample_integer\",\n \"integerValue\": 1,\n },\n {\n \"key\": \"sample_secret_value\",\n \"secretValue\": {\n \"secretVersion\": secret_version_basic.name,\n },\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryptionKeyValue\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kmsKeyName\": \"sampleKMSKkey\",\n },\n },\n ],\n \"authType\": \"USER_PASSWORD\",\n \"authKey\": \"sampleAuthKey\",\n \"userPassword\": {\n \"username\": \"user@xyz.com\",\n \"password\": {\n \"secretVersion\": secret_version_basic.name,\n },\n },\n },\n destination_configs=[{\n \"key\": \"url\",\n \"destinations\": [{\n \"host\": \"https://test.zendesk.com\",\n \"port\": 80,\n }],\n }],\n lock_config={\n \"locked\": False,\n \"reason\": \"Its not locked\",\n },\n log_config={\n \"enabled\": True,\n },\n node_config={\n \"minNodeCount\": 2,\n \"maxNodeCount\": 50,\n },\n labels={\n \"foo\": \"bar\",\n },\n ssl_config={\n \"additionalVariables\": [\n {\n \"key\": \"sample_string\",\n \"stringValue\": \"sampleString\",\n },\n {\n \"key\": \"sample_boolean\",\n \"booleanValue\": False,\n },\n {\n \"key\": \"sample_integer\",\n \"integerValue\": 1,\n },\n {\n \"key\": \"sample_secret_value\",\n \"secretValue\": {\n \"secretVersion\": secret_version_basic.name,\n },\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryptionKeyValue\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kmsKeyName\": \"sampleKMSKkey\",\n },\n },\n ],\n \"clientCertType\": \"PEM\",\n \"clientCertificate\": {\n \"secretVersion\": secret_version_basic.name,\n },\n \"clientPrivateKey\": {\n \"secretVersion\": secret_version_basic.name,\n },\n \"clientPrivateKeyPass\": {\n \"secretVersion\": secret_version_basic.name,\n },\n \"privateServerCertificate\": {\n \"secretVersion\": secret_version_basic.name,\n },\n \"serverCertType\": \"PEM\",\n \"trustModel\": \"PRIVATE\",\n \"type\": \"TLS\",\n \"useSsl\": True,\n },\n eventing_enablement_type=\"EVENTING_AND_CONNECTION\",\n eventing_config={\n \"additionalVariables\": [\n {\n \"key\": \"sample_string\",\n \"stringValue\": \"sampleString\",\n },\n {\n \"key\": \"sample_boolean\",\n \"booleanValue\": False,\n },\n {\n \"key\": \"sample_integer\",\n \"integerValue\": 1,\n },\n {\n \"key\": \"sample_secret_value\",\n \"secretValue\": {\n \"secretVersion\": secret_version_basic.name,\n },\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryptionKeyValue\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kmsKeyName\": \"sampleKMSKkey\",\n },\n },\n ],\n \"registrationDestinationConfig\": {\n \"key\": \"registration_destination_config\",\n \"destinations\": [{\n \"host\": \"https://test.zendesk.com\",\n \"port\": 80,\n }],\n },\n \"authConfig\": {\n \"authType\": \"USER_PASSWORD\",\n \"authKey\": \"sampleAuthKey\",\n \"userPassword\": {\n \"username\": \"user@xyz.com\",\n \"password\": {\n \"secretVersion\": secret_version_basic.name,\n },\n },\n \"additionalVariables\": [\n {\n \"key\": \"sample_string\",\n \"stringValue\": \"sampleString\",\n },\n {\n \"key\": \"sample_boolean\",\n \"booleanValue\": False,\n },\n {\n \"key\": \"sample_integer\",\n \"integerValue\": 1,\n },\n {\n \"key\": \"sample_secret_value\",\n \"secretValue\": {\n \"secretVersion\": secret_version_basic.name,\n },\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryptionKeyValue\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kmsKeyName\": \"sampleKMSKkey\",\n },\n },\n ],\n },\n \"enrichmentEnabled\": 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 testProject = Gcp.Organizations.GetProject.Invoke();\n\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"test-secret\",\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 secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"dummypassword\",\n });\n\n var secretIam = new Gcp.SecretManager.SecretIamMember(\"secret_iam\", new()\n {\n SecretId = secret_basic.Id,\n Role = \"roles/secretmanager.admin\",\n Member = $\"serviceAccount:{testProject.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_basic,\n },\n });\n\n var zendeskconnection = new Gcp.IntegrationConnectors.Connection(\"zendeskconnection\", new()\n {\n Name = \"test-zendesk\",\n Description = \"tf updated description\",\n Location = \"us-central1\",\n ServiceAccount = $\"{testProject.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n ConnectorVersion = $\"projects/{testProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId)}/locations/global/providers/zendesk/connectors/zendesk/versions/1\",\n ConfigVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"proxy_enabled\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"sample_integer_value\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n },\n Suspended = false,\n AuthConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigArgs\n {\n AdditionalVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_string\",\n StringValue = \"sampleString\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_boolean\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_integer\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n },\n AuthType = \"USER_PASSWORD\",\n AuthKey = \"sampleAuthKey\",\n UserPassword = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigUserPasswordArgs\n {\n Username = \"user@xyz.com\",\n Password = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigUserPasswordPasswordArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n },\n DestinationConfigs = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionDestinationConfigArgs\n {\n Key = \"url\",\n Destinations = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionDestinationConfigDestinationArgs\n {\n Host = \"https://test.zendesk.com\",\n Port = 80,\n },\n },\n },\n },\n LockConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionLockConfigArgs\n {\n Locked = false,\n Reason = \"Its not locked\",\n },\n LogConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionLogConfigArgs\n {\n Enabled = true,\n },\n NodeConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionNodeConfigArgs\n {\n MinNodeCount = 2,\n MaxNodeCount = 50,\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n SslConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigArgs\n {\n AdditionalVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_string\",\n StringValue = \"sampleString\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_boolean\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_integer\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n },\n ClientCertType = \"PEM\",\n ClientCertificate = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigClientCertificateArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n ClientPrivateKey = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigClientPrivateKeyArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n ClientPrivateKeyPass = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigClientPrivateKeyPassArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n PrivateServerCertificate = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigPrivateServerCertificateArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n ServerCertType = \"PEM\",\n TrustModel = \"PRIVATE\",\n Type = \"TLS\",\n UseSsl = true,\n },\n EventingEnablementType = \"EVENTING_AND_CONNECTION\",\n EventingConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigArgs\n {\n AdditionalVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_string\",\n StringValue = \"sampleString\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_boolean\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_integer\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n },\n RegistrationDestinationConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigRegistrationDestinationConfigArgs\n {\n Key = \"registration_destination_config\",\n Destinations = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigRegistrationDestinationConfigDestinationArgs\n {\n Host = \"https://test.zendesk.com\",\n Port = 80,\n },\n },\n },\n AuthConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigArgs\n {\n AuthType = \"USER_PASSWORD\",\n AuthKey = \"sampleAuthKey\",\n UserPassword = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigUserPasswordArgs\n {\n Username = \"user@xyz.com\",\n Password = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigUserPasswordPasswordArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n AdditionalVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_string\",\n StringValue = \"sampleString\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_boolean\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_integer\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n },\n },\n EnrichmentEnabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/integrationconnectors\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttestProject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"test-secret\"),\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\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"dummypassword\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret_iam\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret_basic.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.admin\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", testProject.Number)),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_basic,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = integrationconnectors.NewConnection(ctx, \"zendeskconnection\", \u0026integrationconnectors.ConnectionArgs{\n\t\t\tName: pulumi.String(\"test-zendesk\"),\n\t\t\tDescription: pulumi.String(\"tf updated description\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceAccount: pulumi.String(fmt.Sprintf(\"%v-compute@developer.gserviceaccount.com\", testProject.Number)),\n\t\t\tConnectorVersion: pulumi.String(fmt.Sprintf(\"projects/%v/locations/global/providers/zendesk/connectors/zendesk/versions/1\", testProject.ProjectId)),\n\t\t\tConfigVariables: integrationconnectors.ConnectionConfigVariableArray{\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"proxy_enabled\"),\n\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"sample_integer_value\"),\n\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionConfigVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionConfigVariableSecretValueArgs{\n\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSuspended: pulumi.Bool(false),\n\t\t\tAuthConfig: \u0026integrationconnectors.ConnectionAuthConfigArgs{\n\t\t\t\tAdditionalVariables: integrationconnectors.ConnectionAuthConfigAdditionalVariableArray{\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_string\"),\n\t\t\t\t\t\tStringValue: pulumi.String(\"sampleString\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_boolean\"),\n\t\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_integer\"),\n\t\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableSecretValueArgs{\n\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAuthType: pulumi.String(\"USER_PASSWORD\"),\n\t\t\t\tAuthKey: pulumi.String(\"sampleAuthKey\"),\n\t\t\t\tUserPassword: \u0026integrationconnectors.ConnectionAuthConfigUserPasswordArgs{\n\t\t\t\t\tUsername: pulumi.String(\"user@xyz.com\"),\n\t\t\t\t\tPassword: \u0026integrationconnectors.ConnectionAuthConfigUserPasswordPasswordArgs{\n\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationConfigs: integrationconnectors.ConnectionDestinationConfigArray{\n\t\t\t\t\u0026integrationconnectors.ConnectionDestinationConfigArgs{\n\t\t\t\t\tKey: pulumi.String(\"url\"),\n\t\t\t\t\tDestinations: integrationconnectors.ConnectionDestinationConfigDestinationArray{\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionDestinationConfigDestinationArgs{\n\t\t\t\t\t\t\tHost: pulumi.String(\"https://test.zendesk.com\"),\n\t\t\t\t\t\t\tPort: pulumi.Int(80),\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\tLockConfig: \u0026integrationconnectors.ConnectionLockConfigArgs{\n\t\t\t\tLocked: pulumi.Bool(false),\n\t\t\t\tReason: pulumi.String(\"Its not locked\"),\n\t\t\t},\n\t\t\tLogConfig: \u0026integrationconnectors.ConnectionLogConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tNodeConfig: \u0026integrationconnectors.ConnectionNodeConfigArgs{\n\t\t\t\tMinNodeCount: pulumi.Int(2),\n\t\t\t\tMaxNodeCount: pulumi.Int(50),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tSslConfig: \u0026integrationconnectors.ConnectionSslConfigArgs{\n\t\t\t\tAdditionalVariables: integrationconnectors.ConnectionSslConfigAdditionalVariableArray{\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_string\"),\n\t\t\t\t\t\tStringValue: pulumi.String(\"sampleString\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_boolean\"),\n\t\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_integer\"),\n\t\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionSslConfigAdditionalVariableSecretValueArgs{\n\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionSslConfigAdditionalVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tClientCertType: pulumi.String(\"PEM\"),\n\t\t\t\tClientCertificate: \u0026integrationconnectors.ConnectionSslConfigClientCertificateArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t},\n\t\t\t\tClientPrivateKey: \u0026integrationconnectors.ConnectionSslConfigClientPrivateKeyArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t},\n\t\t\t\tClientPrivateKeyPass: \u0026integrationconnectors.ConnectionSslConfigClientPrivateKeyPassArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t},\n\t\t\t\tPrivateServerCertificate: \u0026integrationconnectors.ConnectionSslConfigPrivateServerCertificateArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t},\n\t\t\t\tServerCertType: pulumi.String(\"PEM\"),\n\t\t\t\tTrustModel: pulumi.String(\"PRIVATE\"),\n\t\t\t\tType: pulumi.String(\"TLS\"),\n\t\t\t\tUseSsl: pulumi.Bool(true),\n\t\t\t},\n\t\t\tEventingEnablementType: pulumi.String(\"EVENTING_AND_CONNECTION\"),\n\t\t\tEventingConfig: \u0026integrationconnectors.ConnectionEventingConfigArgs{\n\t\t\t\tAdditionalVariables: integrationconnectors.ConnectionEventingConfigAdditionalVariableArray{\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_string\"),\n\t\t\t\t\t\tStringValue: pulumi.String(\"sampleString\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_boolean\"),\n\t\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_integer\"),\n\t\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableSecretValueArgs{\n\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRegistrationDestinationConfig: \u0026integrationconnectors.ConnectionEventingConfigRegistrationDestinationConfigArgs{\n\t\t\t\t\tKey: pulumi.String(\"registration_destination_config\"),\n\t\t\t\t\tDestinations: integrationconnectors.ConnectionEventingConfigRegistrationDestinationConfigDestinationArray{\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigRegistrationDestinationConfigDestinationArgs{\n\t\t\t\t\t\t\tHost: pulumi.String(\"https://test.zendesk.com\"),\n\t\t\t\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAuthConfig: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigArgs{\n\t\t\t\t\tAuthType: pulumi.String(\"USER_PASSWORD\"),\n\t\t\t\t\tAuthKey: pulumi.String(\"sampleAuthKey\"),\n\t\t\t\t\tUserPassword: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigUserPasswordArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"user@xyz.com\"),\n\t\t\t\t\t\tPassword: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigUserPasswordPasswordArgs{\n\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAdditionalVariables: integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArray{\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_string\"),\n\t\t\t\t\t\t\tStringValue: pulumi.String(\"sampleString\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_boolean\"),\n\t\t\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_integer\"),\n\t\t\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableSecretValueArgs{\n\t\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\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\tEnrichmentEnabled: 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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.integrationconnectors.Connection;\nimport com.pulumi.gcp.integrationconnectors.ConnectionArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionConfigVariableArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionConfigVariableEncryptionKeyValueArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionConfigVariableSecretValueArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionAuthConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionAuthConfigUserPasswordArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionAuthConfigUserPasswordPasswordArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionDestinationConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionLockConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionLogConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionNodeConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigClientCertificateArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigClientPrivateKeyArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigClientPrivateKeyPassArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigPrivateServerCertificateArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigRegistrationDestinationConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigAuthConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigAuthConfigUserPasswordArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigAuthConfigUserPasswordPasswordArgs;\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 testProject = OrganizationsFunctions.getProject();\n\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"test-secret\")\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 secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"dummypassword\")\n .build());\n\n var secretIam = new SecretIamMember(\"secretIam\", SecretIamMemberArgs.builder()\n .secretId(secret_basic.id())\n .role(\"roles/secretmanager.admin\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", testProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret_version_basic)\n .build());\n\n var zendeskconnection = new Connection(\"zendeskconnection\", ConnectionArgs.builder()\n .name(\"test-zendesk\")\n .description(\"tf updated description\")\n .location(\"us-central1\")\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", testProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .connectorVersion(String.format(\"projects/%s/locations/global/providers/zendesk/connectors/zendesk/versions/1\", testProject.applyValue(getProjectResult -\u003e getProjectResult.projectId())))\n .configVariables( \n ConnectionConfigVariableArgs.builder()\n .key(\"proxy_enabled\")\n .booleanValue(false)\n .build(),\n ConnectionConfigVariableArgs.builder()\n .key(\"sample_integer_value\")\n .integerValue(1)\n .build(),\n ConnectionConfigVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionConfigVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build(),\n ConnectionConfigVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionConfigVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build())\n .suspended(false)\n .authConfig(ConnectionAuthConfigArgs.builder()\n .additionalVariables( \n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_string\")\n .stringValue(\"sampleString\")\n .build(),\n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_boolean\")\n .booleanValue(false)\n .build(),\n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_integer\")\n .integerValue(1)\n .build(),\n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionAuthConfigAdditionalVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build(),\n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionAuthConfigAdditionalVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build())\n .authType(\"USER_PASSWORD\")\n .authKey(\"sampleAuthKey\")\n .userPassword(ConnectionAuthConfigUserPasswordArgs.builder()\n .username(\"user@xyz.com\")\n .password(ConnectionAuthConfigUserPasswordPasswordArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build())\n .build())\n .destinationConfigs(ConnectionDestinationConfigArgs.builder()\n .key(\"url\")\n .destinations(ConnectionDestinationConfigDestinationArgs.builder()\n .host(\"https://test.zendesk.com\")\n .port(80)\n .build())\n .build())\n .lockConfig(ConnectionLockConfigArgs.builder()\n .locked(false)\n .reason(\"Its not locked\")\n .build())\n .logConfig(ConnectionLogConfigArgs.builder()\n .enabled(true)\n .build())\n .nodeConfig(ConnectionNodeConfigArgs.builder()\n .minNodeCount(2)\n .maxNodeCount(50)\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .sslConfig(ConnectionSslConfigArgs.builder()\n .additionalVariables( \n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_string\")\n .stringValue(\"sampleString\")\n .build(),\n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_boolean\")\n .booleanValue(false)\n .build(),\n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_integer\")\n .integerValue(1)\n .build(),\n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionSslConfigAdditionalVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build(),\n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionSslConfigAdditionalVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build())\n .clientCertType(\"PEM\")\n .clientCertificate(ConnectionSslConfigClientCertificateArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .clientPrivateKey(ConnectionSslConfigClientPrivateKeyArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .clientPrivateKeyPass(ConnectionSslConfigClientPrivateKeyPassArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .privateServerCertificate(ConnectionSslConfigPrivateServerCertificateArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .serverCertType(\"PEM\")\n .trustModel(\"PRIVATE\")\n .type(\"TLS\")\n .useSsl(true)\n .build())\n .eventingEnablementType(\"EVENTING_AND_CONNECTION\")\n .eventingConfig(ConnectionEventingConfigArgs.builder()\n .additionalVariables( \n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_string\")\n .stringValue(\"sampleString\")\n .build(),\n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_boolean\")\n .booleanValue(false)\n .build(),\n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_integer\")\n .integerValue(1)\n .build(),\n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionEventingConfigAdditionalVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build(),\n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionEventingConfigAdditionalVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build())\n .registrationDestinationConfig(ConnectionEventingConfigRegistrationDestinationConfigArgs.builder()\n .key(\"registration_destination_config\")\n .destinations(ConnectionEventingConfigRegistrationDestinationConfigDestinationArgs.builder()\n .host(\"https://test.zendesk.com\")\n .port(80)\n .build())\n .build())\n .authConfig(ConnectionEventingConfigAuthConfigArgs.builder()\n .authType(\"USER_PASSWORD\")\n .authKey(\"sampleAuthKey\")\n .userPassword(ConnectionEventingConfigAuthConfigUserPasswordArgs.builder()\n .username(\"user@xyz.com\")\n .password(ConnectionEventingConfigAuthConfigUserPasswordPasswordArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build())\n .additionalVariables( \n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_string\")\n .stringValue(\"sampleString\")\n .build(),\n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_boolean\")\n .booleanValue(false)\n .build(),\n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_integer\")\n .integerValue(1)\n .build(),\n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionEventingConfigAuthConfigAdditionalVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build(),\n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionEventingConfigAuthConfigAdditionalVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build())\n .build())\n .enrichmentEnabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: test-secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: dummypassword\n secretIam:\n type: gcp:secretmanager:SecretIamMember\n name: secret_iam\n properties:\n secretId: ${[\"secret-basic\"].id}\n role: roles/secretmanager.admin\n member: serviceAccount:${testProject.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${[\"secret-version-basic\"]}\n zendeskconnection:\n type: gcp:integrationconnectors:Connection\n properties:\n name: test-zendesk\n description: tf updated description\n location: us-central1\n serviceAccount: ${testProject.number}-compute@developer.gserviceaccount.com\n connectorVersion: projects/${testProject.projectId}/locations/global/providers/zendesk/connectors/zendesk/versions/1\n configVariables:\n - key: proxy_enabled\n booleanValue: false\n - key: sample_integer_value\n integerValue: 1\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n suspended: false\n authConfig:\n additionalVariables:\n - key: sample_string\n stringValue: sampleString\n - key: sample_boolean\n booleanValue: false\n - key: sample_integer\n integerValue: 1\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n authType: USER_PASSWORD\n authKey: sampleAuthKey\n userPassword:\n username: user@xyz.com\n password:\n secretVersion: ${[\"secret-version-basic\"].name}\n destinationConfigs:\n - key: url\n destinations:\n - host: https://test.zendesk.com\n port: 80\n lockConfig:\n locked: false\n reason: Its not locked\n logConfig:\n enabled: true\n nodeConfig:\n minNodeCount: 2\n maxNodeCount: 50\n labels:\n foo: bar\n sslConfig:\n additionalVariables:\n - key: sample_string\n stringValue: sampleString\n - key: sample_boolean\n booleanValue: false\n - key: sample_integer\n integerValue: 1\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n clientCertType: PEM\n clientCertificate:\n secretVersion: ${[\"secret-version-basic\"].name}\n clientPrivateKey:\n secretVersion: ${[\"secret-version-basic\"].name}\n clientPrivateKeyPass:\n secretVersion: ${[\"secret-version-basic\"].name}\n privateServerCertificate:\n secretVersion: ${[\"secret-version-basic\"].name}\n serverCertType: PEM\n trustModel: PRIVATE\n type: TLS\n useSsl: true\n eventingEnablementType: EVENTING_AND_CONNECTION\n eventingConfig:\n additionalVariables:\n - key: sample_string\n stringValue: sampleString\n - key: sample_boolean\n booleanValue: false\n - key: sample_integer\n integerValue: 1\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n registrationDestinationConfig:\n key: registration_destination_config\n destinations:\n - host: https://test.zendesk.com\n port: 80\n authConfig:\n authType: USER_PASSWORD\n authKey: sampleAuthKey\n userPassword:\n username: user@xyz.com\n password:\n secretVersion: ${[\"secret-version-basic\"].name}\n additionalVariables:\n - key: sample_string\n stringValue: sampleString\n - key: sample_boolean\n booleanValue: false\n - key: sample_integer\n integerValue: 1\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n enrichmentEnabled: true\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Connection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:integrationconnectors/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{name}}\n```\n\n```sh\n$ pulumi import gcp:integrationconnectors/connection:Connection default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:integrationconnectors/connection:Connection default {{location}}/{{name}}\n```\n\n", + "description": "An Integration connectors Connection.\n\n\nTo get more information about Connection, see:\n\n* [API documentation](https://cloud.google.com/integration-connectors/docs/reference/rest/v1/projects.locations.connections)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/integration-connectors/docs/createconnection)\n\n## Example Usage\n\n### Integration Connectors Connection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testProject = gcp.organizations.getProject({});\nconst pubsubconnection = new gcp.integrationconnectors.Connection(\"pubsubconnection\", {\n name: \"test-pubsub\",\n location: \"us-central1\",\n connectorVersion: testProject.then(testProject =\u003e `projects/${testProject.projectId}/locations/global/providers/gcp/connectors/pubsub/versions/1`),\n description: \"tf created description\",\n configVariables: [\n {\n key: \"project_id\",\n stringValue: \"connectors-example\",\n },\n {\n key: \"topic_id\",\n stringValue: \"test\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_project = gcp.organizations.get_project()\npubsubconnection = gcp.integrationconnectors.Connection(\"pubsubconnection\",\n name=\"test-pubsub\",\n location=\"us-central1\",\n connector_version=f\"projects/{test_project.project_id}/locations/global/providers/gcp/connectors/pubsub/versions/1\",\n description=\"tf created description\",\n config_variables=[\n {\n \"key\": \"project_id\",\n \"string_value\": \"connectors-example\",\n },\n {\n \"key\": \"topic_id\",\n \"string_value\": \"test\",\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 testProject = Gcp.Organizations.GetProject.Invoke();\n\n var pubsubconnection = new Gcp.IntegrationConnectors.Connection(\"pubsubconnection\", new()\n {\n Name = \"test-pubsub\",\n Location = \"us-central1\",\n ConnectorVersion = $\"projects/{testProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId)}/locations/global/providers/gcp/connectors/pubsub/versions/1\",\n Description = \"tf created description\",\n ConfigVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"project_id\",\n StringValue = \"connectors-example\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"topic_id\",\n StringValue = \"test\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/integrationconnectors\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestProject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = integrationconnectors.NewConnection(ctx, \"pubsubconnection\", \u0026integrationconnectors.ConnectionArgs{\n\t\t\tName: pulumi.String(\"test-pubsub\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectorVersion: pulumi.String(fmt.Sprintf(\"projects/%v/locations/global/providers/gcp/connectors/pubsub/versions/1\", testProject.ProjectId)),\n\t\t\tDescription: pulumi.String(\"tf created description\"),\n\t\t\tConfigVariables: integrationconnectors.ConnectionConfigVariableArray{\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"project_id\"),\n\t\t\t\t\tStringValue: pulumi.String(\"connectors-example\"),\n\t\t\t\t},\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"topic_id\"),\n\t\t\t\t\tStringValue: pulumi.String(\"test\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.integrationconnectors.Connection;\nimport com.pulumi.gcp.integrationconnectors.ConnectionArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionConfigVariableArgs;\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 testProject = OrganizationsFunctions.getProject();\n\n var pubsubconnection = new Connection(\"pubsubconnection\", ConnectionArgs.builder()\n .name(\"test-pubsub\")\n .location(\"us-central1\")\n .connectorVersion(String.format(\"projects/%s/locations/global/providers/gcp/connectors/pubsub/versions/1\", testProject.applyValue(getProjectResult -\u003e getProjectResult.projectId())))\n .description(\"tf created description\")\n .configVariables( \n ConnectionConfigVariableArgs.builder()\n .key(\"project_id\")\n .stringValue(\"connectors-example\")\n .build(),\n ConnectionConfigVariableArgs.builder()\n .key(\"topic_id\")\n .stringValue(\"test\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pubsubconnection:\n type: gcp:integrationconnectors:Connection\n properties:\n name: test-pubsub\n location: us-central1\n connectorVersion: projects/${testProject.projectId}/locations/global/providers/gcp/connectors/pubsub/versions/1\n description: tf created description\n configVariables:\n - key: project_id\n stringValue: connectors-example\n - key: topic_id\n stringValue: test\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Integration Connectors Connection Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testProject = gcp.organizations.getProject({});\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"test-secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"dummypassword\",\n});\nconst secretIam = new gcp.secretmanager.SecretIamMember(\"secret_iam\", {\n secretId: secret_basic.id,\n role: \"roles/secretmanager.admin\",\n member: testProject.then(testProject =\u003e `serviceAccount:${testProject.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret_version_basic],\n});\nconst zendeskconnection = new gcp.integrationconnectors.Connection(\"zendeskconnection\", {\n name: \"test-zendesk\",\n description: \"tf updated description\",\n location: \"us-central1\",\n serviceAccount: testProject.then(testProject =\u003e `${testProject.number}-compute@developer.gserviceaccount.com`),\n connectorVersion: testProject.then(testProject =\u003e `projects/${testProject.projectId}/locations/global/providers/zendesk/connectors/zendesk/versions/1`),\n configVariables: [\n {\n key: \"proxy_enabled\",\n booleanValue: false,\n },\n {\n key: \"sample_integer_value\",\n integerValue: 1,\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n ],\n suspended: false,\n authConfig: {\n additionalVariables: [\n {\n key: \"sample_string\",\n stringValue: \"sampleString\",\n },\n {\n key: \"sample_boolean\",\n booleanValue: false,\n },\n {\n key: \"sample_integer\",\n integerValue: 1,\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n ],\n authType: \"USER_PASSWORD\",\n authKey: \"sampleAuthKey\",\n userPassword: {\n username: \"user@xyz.com\",\n password: {\n secretVersion: secret_version_basic.name,\n },\n },\n },\n destinationConfigs: [{\n key: \"url\",\n destinations: [{\n host: \"https://test.zendesk.com\",\n port: 80,\n }],\n }],\n lockConfig: {\n locked: false,\n reason: \"Its not locked\",\n },\n logConfig: {\n enabled: true,\n },\n nodeConfig: {\n minNodeCount: 2,\n maxNodeCount: 50,\n },\n labels: {\n foo: \"bar\",\n },\n sslConfig: {\n additionalVariables: [\n {\n key: \"sample_string\",\n stringValue: \"sampleString\",\n },\n {\n key: \"sample_boolean\",\n booleanValue: false,\n },\n {\n key: \"sample_integer\",\n integerValue: 1,\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n ],\n clientCertType: \"PEM\",\n clientCertificate: {\n secretVersion: secret_version_basic.name,\n },\n clientPrivateKey: {\n secretVersion: secret_version_basic.name,\n },\n clientPrivateKeyPass: {\n secretVersion: secret_version_basic.name,\n },\n privateServerCertificate: {\n secretVersion: secret_version_basic.name,\n },\n serverCertType: \"PEM\",\n trustModel: \"PRIVATE\",\n type: \"TLS\",\n useSsl: true,\n },\n eventingEnablementType: \"EVENTING_AND_CONNECTION\",\n eventingConfig: {\n additionalVariables: [\n {\n key: \"sample_string\",\n stringValue: \"sampleString\",\n },\n {\n key: \"sample_boolean\",\n booleanValue: false,\n },\n {\n key: \"sample_integer\",\n integerValue: 1,\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n ],\n registrationDestinationConfig: {\n key: \"registration_destination_config\",\n destinations: [{\n host: \"https://test.zendesk.com\",\n port: 80,\n }],\n },\n authConfig: {\n authType: \"USER_PASSWORD\",\n authKey: \"sampleAuthKey\",\n userPassword: {\n username: \"user@xyz.com\",\n password: {\n secretVersion: secret_version_basic.name,\n },\n },\n additionalVariables: [\n {\n key: \"sample_string\",\n stringValue: \"sampleString\",\n },\n {\n key: \"sample_boolean\",\n booleanValue: false,\n },\n {\n key: \"sample_integer\",\n integerValue: 1,\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n ],\n },\n enrichmentEnabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_project = gcp.organizations.get_project()\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"test-secret\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"dummypassword\")\nsecret_iam = gcp.secretmanager.SecretIamMember(\"secret_iam\",\n secret_id=secret_basic.id,\n role=\"roles/secretmanager.admin\",\n member=f\"serviceAccount:{test_project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret_version_basic]))\nzendeskconnection = gcp.integrationconnectors.Connection(\"zendeskconnection\",\n name=\"test-zendesk\",\n description=\"tf updated description\",\n location=\"us-central1\",\n service_account=f\"{test_project.number}-compute@developer.gserviceaccount.com\",\n connector_version=f\"projects/{test_project.project_id}/locations/global/providers/zendesk/connectors/zendesk/versions/1\",\n config_variables=[\n {\n \"key\": \"proxy_enabled\",\n \"boolean_value\": False,\n },\n {\n \"key\": \"sample_integer_value\",\n \"integer_value\": 1,\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryption_key_value\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kms_key_name\": \"sampleKMSKkey\",\n },\n },\n {\n \"key\": \"sample_secret_value\",\n \"secret_value\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n ],\n suspended=False,\n auth_config={\n \"additional_variables\": [\n {\n \"key\": \"sample_string\",\n \"string_value\": \"sampleString\",\n },\n {\n \"key\": \"sample_boolean\",\n \"boolean_value\": False,\n },\n {\n \"key\": \"sample_integer\",\n \"integer_value\": 1,\n },\n {\n \"key\": \"sample_secret_value\",\n \"secret_value\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryption_key_value\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kms_key_name\": \"sampleKMSKkey\",\n },\n },\n ],\n \"auth_type\": \"USER_PASSWORD\",\n \"auth_key\": \"sampleAuthKey\",\n \"user_password\": {\n \"username\": \"user@xyz.com\",\n \"password\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n },\n destination_configs=[{\n \"key\": \"url\",\n \"destinations\": [{\n \"host\": \"https://test.zendesk.com\",\n \"port\": 80,\n }],\n }],\n lock_config={\n \"locked\": False,\n \"reason\": \"Its not locked\",\n },\n log_config={\n \"enabled\": True,\n },\n node_config={\n \"min_node_count\": 2,\n \"max_node_count\": 50,\n },\n labels={\n \"foo\": \"bar\",\n },\n ssl_config={\n \"additional_variables\": [\n {\n \"key\": \"sample_string\",\n \"string_value\": \"sampleString\",\n },\n {\n \"key\": \"sample_boolean\",\n \"boolean_value\": False,\n },\n {\n \"key\": \"sample_integer\",\n \"integer_value\": 1,\n },\n {\n \"key\": \"sample_secret_value\",\n \"secret_value\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryption_key_value\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kms_key_name\": \"sampleKMSKkey\",\n },\n },\n ],\n \"client_cert_type\": \"PEM\",\n \"client_certificate\": {\n \"secret_version\": secret_version_basic.name,\n },\n \"client_private_key\": {\n \"secret_version\": secret_version_basic.name,\n },\n \"client_private_key_pass\": {\n \"secret_version\": secret_version_basic.name,\n },\n \"private_server_certificate\": {\n \"secret_version\": secret_version_basic.name,\n },\n \"server_cert_type\": \"PEM\",\n \"trust_model\": \"PRIVATE\",\n \"type\": \"TLS\",\n \"use_ssl\": True,\n },\n eventing_enablement_type=\"EVENTING_AND_CONNECTION\",\n eventing_config={\n \"additional_variables\": [\n {\n \"key\": \"sample_string\",\n \"string_value\": \"sampleString\",\n },\n {\n \"key\": \"sample_boolean\",\n \"boolean_value\": False,\n },\n {\n \"key\": \"sample_integer\",\n \"integer_value\": 1,\n },\n {\n \"key\": \"sample_secret_value\",\n \"secret_value\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryption_key_value\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kms_key_name\": \"sampleKMSKkey\",\n },\n },\n ],\n \"registration_destination_config\": {\n \"key\": \"registration_destination_config\",\n \"destinations\": [{\n \"host\": \"https://test.zendesk.com\",\n \"port\": 80,\n }],\n },\n \"auth_config\": {\n \"auth_type\": \"USER_PASSWORD\",\n \"auth_key\": \"sampleAuthKey\",\n \"user_password\": {\n \"username\": \"user@xyz.com\",\n \"password\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n \"additional_variables\": [\n {\n \"key\": \"sample_string\",\n \"string_value\": \"sampleString\",\n },\n {\n \"key\": \"sample_boolean\",\n \"boolean_value\": False,\n },\n {\n \"key\": \"sample_integer\",\n \"integer_value\": 1,\n },\n {\n \"key\": \"sample_secret_value\",\n \"secret_value\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryption_key_value\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kms_key_name\": \"sampleKMSKkey\",\n },\n },\n ],\n },\n \"enrichment_enabled\": 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 testProject = Gcp.Organizations.GetProject.Invoke();\n\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"test-secret\",\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 secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"dummypassword\",\n });\n\n var secretIam = new Gcp.SecretManager.SecretIamMember(\"secret_iam\", new()\n {\n SecretId = secret_basic.Id,\n Role = \"roles/secretmanager.admin\",\n Member = $\"serviceAccount:{testProject.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_basic,\n },\n });\n\n var zendeskconnection = new Gcp.IntegrationConnectors.Connection(\"zendeskconnection\", new()\n {\n Name = \"test-zendesk\",\n Description = \"tf updated description\",\n Location = \"us-central1\",\n ServiceAccount = $\"{testProject.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n ConnectorVersion = $\"projects/{testProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId)}/locations/global/providers/zendesk/connectors/zendesk/versions/1\",\n ConfigVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"proxy_enabled\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"sample_integer_value\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n },\n Suspended = false,\n AuthConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigArgs\n {\n AdditionalVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_string\",\n StringValue = \"sampleString\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_boolean\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_integer\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n },\n AuthType = \"USER_PASSWORD\",\n AuthKey = \"sampleAuthKey\",\n UserPassword = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigUserPasswordArgs\n {\n Username = \"user@xyz.com\",\n Password = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigUserPasswordPasswordArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n },\n DestinationConfigs = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionDestinationConfigArgs\n {\n Key = \"url\",\n Destinations = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionDestinationConfigDestinationArgs\n {\n Host = \"https://test.zendesk.com\",\n Port = 80,\n },\n },\n },\n },\n LockConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionLockConfigArgs\n {\n Locked = false,\n Reason = \"Its not locked\",\n },\n LogConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionLogConfigArgs\n {\n Enabled = true,\n },\n NodeConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionNodeConfigArgs\n {\n MinNodeCount = 2,\n MaxNodeCount = 50,\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n SslConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigArgs\n {\n AdditionalVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_string\",\n StringValue = \"sampleString\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_boolean\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_integer\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n },\n ClientCertType = \"PEM\",\n ClientCertificate = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigClientCertificateArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n ClientPrivateKey = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigClientPrivateKeyArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n ClientPrivateKeyPass = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigClientPrivateKeyPassArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n PrivateServerCertificate = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigPrivateServerCertificateArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n ServerCertType = \"PEM\",\n TrustModel = \"PRIVATE\",\n Type = \"TLS\",\n UseSsl = true,\n },\n EventingEnablementType = \"EVENTING_AND_CONNECTION\",\n EventingConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigArgs\n {\n AdditionalVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_string\",\n StringValue = \"sampleString\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_boolean\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_integer\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n },\n RegistrationDestinationConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigRegistrationDestinationConfigArgs\n {\n Key = \"registration_destination_config\",\n Destinations = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigRegistrationDestinationConfigDestinationArgs\n {\n Host = \"https://test.zendesk.com\",\n Port = 80,\n },\n },\n },\n AuthConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigArgs\n {\n AuthType = \"USER_PASSWORD\",\n AuthKey = \"sampleAuthKey\",\n UserPassword = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigUserPasswordArgs\n {\n Username = \"user@xyz.com\",\n Password = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigUserPasswordPasswordArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n AdditionalVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_string\",\n StringValue = \"sampleString\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_boolean\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_integer\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n },\n },\n EnrichmentEnabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/integrationconnectors\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttestProject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"test-secret\"),\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\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"dummypassword\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret_iam\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret_basic.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.admin\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", testProject.Number)),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_basic,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = integrationconnectors.NewConnection(ctx, \"zendeskconnection\", \u0026integrationconnectors.ConnectionArgs{\n\t\t\tName: pulumi.String(\"test-zendesk\"),\n\t\t\tDescription: pulumi.String(\"tf updated description\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceAccount: pulumi.String(fmt.Sprintf(\"%v-compute@developer.gserviceaccount.com\", testProject.Number)),\n\t\t\tConnectorVersion: pulumi.String(fmt.Sprintf(\"projects/%v/locations/global/providers/zendesk/connectors/zendesk/versions/1\", testProject.ProjectId)),\n\t\t\tConfigVariables: integrationconnectors.ConnectionConfigVariableArray{\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"proxy_enabled\"),\n\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"sample_integer_value\"),\n\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionConfigVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionConfigVariableSecretValueArgs{\n\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSuspended: pulumi.Bool(false),\n\t\t\tAuthConfig: \u0026integrationconnectors.ConnectionAuthConfigArgs{\n\t\t\t\tAdditionalVariables: integrationconnectors.ConnectionAuthConfigAdditionalVariableArray{\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_string\"),\n\t\t\t\t\t\tStringValue: pulumi.String(\"sampleString\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_boolean\"),\n\t\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_integer\"),\n\t\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableSecretValueArgs{\n\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAuthType: pulumi.String(\"USER_PASSWORD\"),\n\t\t\t\tAuthKey: pulumi.String(\"sampleAuthKey\"),\n\t\t\t\tUserPassword: \u0026integrationconnectors.ConnectionAuthConfigUserPasswordArgs{\n\t\t\t\t\tUsername: pulumi.String(\"user@xyz.com\"),\n\t\t\t\t\tPassword: \u0026integrationconnectors.ConnectionAuthConfigUserPasswordPasswordArgs{\n\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationConfigs: integrationconnectors.ConnectionDestinationConfigArray{\n\t\t\t\t\u0026integrationconnectors.ConnectionDestinationConfigArgs{\n\t\t\t\t\tKey: pulumi.String(\"url\"),\n\t\t\t\t\tDestinations: integrationconnectors.ConnectionDestinationConfigDestinationArray{\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionDestinationConfigDestinationArgs{\n\t\t\t\t\t\t\tHost: pulumi.String(\"https://test.zendesk.com\"),\n\t\t\t\t\t\t\tPort: pulumi.Int(80),\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\tLockConfig: \u0026integrationconnectors.ConnectionLockConfigArgs{\n\t\t\t\tLocked: pulumi.Bool(false),\n\t\t\t\tReason: pulumi.String(\"Its not locked\"),\n\t\t\t},\n\t\t\tLogConfig: \u0026integrationconnectors.ConnectionLogConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tNodeConfig: \u0026integrationconnectors.ConnectionNodeConfigArgs{\n\t\t\t\tMinNodeCount: pulumi.Int(2),\n\t\t\t\tMaxNodeCount: pulumi.Int(50),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tSslConfig: \u0026integrationconnectors.ConnectionSslConfigArgs{\n\t\t\t\tAdditionalVariables: integrationconnectors.ConnectionSslConfigAdditionalVariableArray{\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_string\"),\n\t\t\t\t\t\tStringValue: pulumi.String(\"sampleString\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_boolean\"),\n\t\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_integer\"),\n\t\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionSslConfigAdditionalVariableSecretValueArgs{\n\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionSslConfigAdditionalVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tClientCertType: pulumi.String(\"PEM\"),\n\t\t\t\tClientCertificate: \u0026integrationconnectors.ConnectionSslConfigClientCertificateArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t},\n\t\t\t\tClientPrivateKey: \u0026integrationconnectors.ConnectionSslConfigClientPrivateKeyArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t},\n\t\t\t\tClientPrivateKeyPass: \u0026integrationconnectors.ConnectionSslConfigClientPrivateKeyPassArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t},\n\t\t\t\tPrivateServerCertificate: \u0026integrationconnectors.ConnectionSslConfigPrivateServerCertificateArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t},\n\t\t\t\tServerCertType: pulumi.String(\"PEM\"),\n\t\t\t\tTrustModel: pulumi.String(\"PRIVATE\"),\n\t\t\t\tType: pulumi.String(\"TLS\"),\n\t\t\t\tUseSsl: pulumi.Bool(true),\n\t\t\t},\n\t\t\tEventingEnablementType: pulumi.String(\"EVENTING_AND_CONNECTION\"),\n\t\t\tEventingConfig: \u0026integrationconnectors.ConnectionEventingConfigArgs{\n\t\t\t\tAdditionalVariables: integrationconnectors.ConnectionEventingConfigAdditionalVariableArray{\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_string\"),\n\t\t\t\t\t\tStringValue: pulumi.String(\"sampleString\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_boolean\"),\n\t\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_integer\"),\n\t\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableSecretValueArgs{\n\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRegistrationDestinationConfig: \u0026integrationconnectors.ConnectionEventingConfigRegistrationDestinationConfigArgs{\n\t\t\t\t\tKey: pulumi.String(\"registration_destination_config\"),\n\t\t\t\t\tDestinations: integrationconnectors.ConnectionEventingConfigRegistrationDestinationConfigDestinationArray{\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigRegistrationDestinationConfigDestinationArgs{\n\t\t\t\t\t\t\tHost: pulumi.String(\"https://test.zendesk.com\"),\n\t\t\t\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAuthConfig: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigArgs{\n\t\t\t\t\tAuthType: pulumi.String(\"USER_PASSWORD\"),\n\t\t\t\t\tAuthKey: pulumi.String(\"sampleAuthKey\"),\n\t\t\t\t\tUserPassword: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigUserPasswordArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"user@xyz.com\"),\n\t\t\t\t\t\tPassword: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigUserPasswordPasswordArgs{\n\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAdditionalVariables: integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArray{\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_string\"),\n\t\t\t\t\t\t\tStringValue: pulumi.String(\"sampleString\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_boolean\"),\n\t\t\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_integer\"),\n\t\t\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableSecretValueArgs{\n\t\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\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\tEnrichmentEnabled: 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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.integrationconnectors.Connection;\nimport com.pulumi.gcp.integrationconnectors.ConnectionArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionConfigVariableArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionConfigVariableEncryptionKeyValueArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionConfigVariableSecretValueArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionAuthConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionAuthConfigUserPasswordArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionAuthConfigUserPasswordPasswordArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionDestinationConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionLockConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionLogConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionNodeConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigClientCertificateArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigClientPrivateKeyArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigClientPrivateKeyPassArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigPrivateServerCertificateArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigRegistrationDestinationConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigAuthConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigAuthConfigUserPasswordArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigAuthConfigUserPasswordPasswordArgs;\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 testProject = OrganizationsFunctions.getProject();\n\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"test-secret\")\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 secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"dummypassword\")\n .build());\n\n var secretIam = new SecretIamMember(\"secretIam\", SecretIamMemberArgs.builder()\n .secretId(secret_basic.id())\n .role(\"roles/secretmanager.admin\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", testProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret_version_basic)\n .build());\n\n var zendeskconnection = new Connection(\"zendeskconnection\", ConnectionArgs.builder()\n .name(\"test-zendesk\")\n .description(\"tf updated description\")\n .location(\"us-central1\")\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", testProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .connectorVersion(String.format(\"projects/%s/locations/global/providers/zendesk/connectors/zendesk/versions/1\", testProject.applyValue(getProjectResult -\u003e getProjectResult.projectId())))\n .configVariables( \n ConnectionConfigVariableArgs.builder()\n .key(\"proxy_enabled\")\n .booleanValue(false)\n .build(),\n ConnectionConfigVariableArgs.builder()\n .key(\"sample_integer_value\")\n .integerValue(1)\n .build(),\n ConnectionConfigVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionConfigVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build(),\n ConnectionConfigVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionConfigVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build())\n .suspended(false)\n .authConfig(ConnectionAuthConfigArgs.builder()\n .additionalVariables( \n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_string\")\n .stringValue(\"sampleString\")\n .build(),\n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_boolean\")\n .booleanValue(false)\n .build(),\n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_integer\")\n .integerValue(1)\n .build(),\n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionAuthConfigAdditionalVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build(),\n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionAuthConfigAdditionalVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build())\n .authType(\"USER_PASSWORD\")\n .authKey(\"sampleAuthKey\")\n .userPassword(ConnectionAuthConfigUserPasswordArgs.builder()\n .username(\"user@xyz.com\")\n .password(ConnectionAuthConfigUserPasswordPasswordArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build())\n .build())\n .destinationConfigs(ConnectionDestinationConfigArgs.builder()\n .key(\"url\")\n .destinations(ConnectionDestinationConfigDestinationArgs.builder()\n .host(\"https://test.zendesk.com\")\n .port(80)\n .build())\n .build())\n .lockConfig(ConnectionLockConfigArgs.builder()\n .locked(false)\n .reason(\"Its not locked\")\n .build())\n .logConfig(ConnectionLogConfigArgs.builder()\n .enabled(true)\n .build())\n .nodeConfig(ConnectionNodeConfigArgs.builder()\n .minNodeCount(2)\n .maxNodeCount(50)\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .sslConfig(ConnectionSslConfigArgs.builder()\n .additionalVariables( \n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_string\")\n .stringValue(\"sampleString\")\n .build(),\n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_boolean\")\n .booleanValue(false)\n .build(),\n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_integer\")\n .integerValue(1)\n .build(),\n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionSslConfigAdditionalVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build(),\n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionSslConfigAdditionalVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build())\n .clientCertType(\"PEM\")\n .clientCertificate(ConnectionSslConfigClientCertificateArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .clientPrivateKey(ConnectionSslConfigClientPrivateKeyArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .clientPrivateKeyPass(ConnectionSslConfigClientPrivateKeyPassArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .privateServerCertificate(ConnectionSslConfigPrivateServerCertificateArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .serverCertType(\"PEM\")\n .trustModel(\"PRIVATE\")\n .type(\"TLS\")\n .useSsl(true)\n .build())\n .eventingEnablementType(\"EVENTING_AND_CONNECTION\")\n .eventingConfig(ConnectionEventingConfigArgs.builder()\n .additionalVariables( \n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_string\")\n .stringValue(\"sampleString\")\n .build(),\n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_boolean\")\n .booleanValue(false)\n .build(),\n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_integer\")\n .integerValue(1)\n .build(),\n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionEventingConfigAdditionalVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build(),\n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionEventingConfigAdditionalVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build())\n .registrationDestinationConfig(ConnectionEventingConfigRegistrationDestinationConfigArgs.builder()\n .key(\"registration_destination_config\")\n .destinations(ConnectionEventingConfigRegistrationDestinationConfigDestinationArgs.builder()\n .host(\"https://test.zendesk.com\")\n .port(80)\n .build())\n .build())\n .authConfig(ConnectionEventingConfigAuthConfigArgs.builder()\n .authType(\"USER_PASSWORD\")\n .authKey(\"sampleAuthKey\")\n .userPassword(ConnectionEventingConfigAuthConfigUserPasswordArgs.builder()\n .username(\"user@xyz.com\")\n .password(ConnectionEventingConfigAuthConfigUserPasswordPasswordArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build())\n .additionalVariables( \n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_string\")\n .stringValue(\"sampleString\")\n .build(),\n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_boolean\")\n .booleanValue(false)\n .build(),\n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_integer\")\n .integerValue(1)\n .build(),\n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionEventingConfigAuthConfigAdditionalVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build(),\n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionEventingConfigAuthConfigAdditionalVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build())\n .build())\n .enrichmentEnabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: test-secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: dummypassword\n secretIam:\n type: gcp:secretmanager:SecretIamMember\n name: secret_iam\n properties:\n secretId: ${[\"secret-basic\"].id}\n role: roles/secretmanager.admin\n member: serviceAccount:${testProject.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${[\"secret-version-basic\"]}\n zendeskconnection:\n type: gcp:integrationconnectors:Connection\n properties:\n name: test-zendesk\n description: tf updated description\n location: us-central1\n serviceAccount: ${testProject.number}-compute@developer.gserviceaccount.com\n connectorVersion: projects/${testProject.projectId}/locations/global/providers/zendesk/connectors/zendesk/versions/1\n configVariables:\n - key: proxy_enabled\n booleanValue: false\n - key: sample_integer_value\n integerValue: 1\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n suspended: false\n authConfig:\n additionalVariables:\n - key: sample_string\n stringValue: sampleString\n - key: sample_boolean\n booleanValue: false\n - key: sample_integer\n integerValue: 1\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n authType: USER_PASSWORD\n authKey: sampleAuthKey\n userPassword:\n username: user@xyz.com\n password:\n secretVersion: ${[\"secret-version-basic\"].name}\n destinationConfigs:\n - key: url\n destinations:\n - host: https://test.zendesk.com\n port: 80\n lockConfig:\n locked: false\n reason: Its not locked\n logConfig:\n enabled: true\n nodeConfig:\n minNodeCount: 2\n maxNodeCount: 50\n labels:\n foo: bar\n sslConfig:\n additionalVariables:\n - key: sample_string\n stringValue: sampleString\n - key: sample_boolean\n booleanValue: false\n - key: sample_integer\n integerValue: 1\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n clientCertType: PEM\n clientCertificate:\n secretVersion: ${[\"secret-version-basic\"].name}\n clientPrivateKey:\n secretVersion: ${[\"secret-version-basic\"].name}\n clientPrivateKeyPass:\n secretVersion: ${[\"secret-version-basic\"].name}\n privateServerCertificate:\n secretVersion: ${[\"secret-version-basic\"].name}\n serverCertType: PEM\n trustModel: PRIVATE\n type: TLS\n useSsl: true\n eventingEnablementType: EVENTING_AND_CONNECTION\n eventingConfig:\n additionalVariables:\n - key: sample_string\n stringValue: sampleString\n - key: sample_boolean\n booleanValue: false\n - key: sample_integer\n integerValue: 1\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n registrationDestinationConfig:\n key: registration_destination_config\n destinations:\n - host: https://test.zendesk.com\n port: 80\n authConfig:\n authType: USER_PASSWORD\n authKey: sampleAuthKey\n userPassword:\n username: user@xyz.com\n password:\n secretVersion: ${[\"secret-version-basic\"].name}\n additionalVariables:\n - key: sample_string\n stringValue: sampleString\n - key: sample_boolean\n booleanValue: false\n - key: sample_integer\n integerValue: 1\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n enrichmentEnabled: true\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Connection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:integrationconnectors/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{name}}\n```\n\n```sh\n$ pulumi import gcp:integrationconnectors/connection:Connection default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:integrationconnectors/connection:Connection default {{location}}/{{name}}\n```\n\n", "properties": { "authConfig": { "$ref": "#/types/gcp:integrationconnectors/ConnectionAuthConfig:ConnectionAuthConfig", @@ -206979,7 +206979,7 @@ } }, "gcp:integrationconnectors/managedZone:ManagedZone": { - "description": "An Integration connectors Managed Zone.\n\n\nTo get more information about ManagedZone, see:\n\n* [API documentation](https://cloud.google.com/integration-connectors/docs/reference/rest/v1/projects.locations.global.managedZones)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/integration-connectors/docs)\n\n## Example Usage\n\n### Integration Connectors Managed Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst targetProject = new gcp.organizations.Project(\"target_project\", {\n projectId: \"tf-test_34535\",\n name: \"tf-test_22375\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst testProject = gcp.organizations.getProject({});\nconst dnsPeerBinding = new gcp.projects.IAMMember(\"dns_peer_binding\", {\n project: targetProject.projectId,\n role: \"roles/dns.peer\",\n member: testProject.then(testProject =\u003e `serviceAccount:service-${testProject.number}@gcp-sa-connectors.iam.gserviceaccount.com`),\n});\nconst dns = new gcp.projects.Service(\"dns\", {\n project: targetProject.projectId,\n service: \"dns.googleapis.com\",\n});\nconst compute = new gcp.projects.Service(\"compute\", {\n project: targetProject.projectId,\n service: \"compute.googleapis.com\",\n});\nconst network = new gcp.compute.Network(\"network\", {\n project: targetProject.projectId,\n name: \"test\",\n autoCreateSubnetworks: false,\n}, {\n dependsOn: [compute],\n});\nconst zone = new gcp.dns.ManagedZone(\"zone\", {\n name: \"tf-test-dns_29439\",\n dnsName: \"private_87786.example.com.\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network.id,\n }],\n },\n}, {\n dependsOn: [dns],\n});\nconst testmanagedzone = new gcp.integrationconnectors.ManagedZone(\"testmanagedzone\", {\n name: \"test\",\n description: \"tf created description\",\n labels: {\n intent: \"example\",\n },\n targetProject: targetProject.projectId,\n targetVpc: \"test\",\n dns: zone.dnsName,\n}, {\n dependsOn: [\n dnsPeerBinding,\n zone,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntarget_project = gcp.organizations.Project(\"target_project\",\n project_id=\"tf-test_34535\",\n name=\"tf-test_22375\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\ntest_project = gcp.organizations.get_project()\ndns_peer_binding = gcp.projects.IAMMember(\"dns_peer_binding\",\n project=target_project.project_id,\n role=\"roles/dns.peer\",\n member=f\"serviceAccount:service-{test_project.number}@gcp-sa-connectors.iam.gserviceaccount.com\")\ndns = gcp.projects.Service(\"dns\",\n project=target_project.project_id,\n service=\"dns.googleapis.com\")\ncompute = gcp.projects.Service(\"compute\",\n project=target_project.project_id,\n service=\"compute.googleapis.com\")\nnetwork = gcp.compute.Network(\"network\",\n project=target_project.project_id,\n name=\"test\",\n auto_create_subnetworks=False,\n opts = pulumi.ResourceOptions(depends_on=[compute]))\nzone = gcp.dns.ManagedZone(\"zone\",\n name=\"tf-test-dns_29439\",\n dns_name=\"private_87786.example.com.\",\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [{\n \"networkUrl\": network.id,\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[dns]))\ntestmanagedzone = gcp.integrationconnectors.ManagedZone(\"testmanagedzone\",\n name=\"test\",\n description=\"tf created description\",\n labels={\n \"intent\": \"example\",\n },\n target_project=target_project.project_id,\n target_vpc=\"test\",\n dns=zone.dns_name,\n opts = pulumi.ResourceOptions(depends_on=[\n dns_peer_binding,\n zone,\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 targetProject = new Gcp.Organizations.Project(\"target_project\", new()\n {\n ProjectId = \"tf-test_34535\",\n Name = \"tf-test_22375\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var testProject = Gcp.Organizations.GetProject.Invoke();\n\n var dnsPeerBinding = new Gcp.Projects.IAMMember(\"dns_peer_binding\", new()\n {\n Project = targetProject.ProjectId,\n Role = \"roles/dns.peer\",\n Member = $\"serviceAccount:service-{testProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-connectors.iam.gserviceaccount.com\",\n });\n\n var dns = new Gcp.Projects.Service(\"dns\", new()\n {\n Project = targetProject.ProjectId,\n ServiceName = \"dns.googleapis.com\",\n });\n\n var compute = new Gcp.Projects.Service(\"compute\", new()\n {\n Project = targetProject.ProjectId,\n ServiceName = \"compute.googleapis.com\",\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Project = targetProject.ProjectId,\n Name = \"test\",\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n compute,\n },\n });\n\n var zone = new Gcp.Dns.ManagedZone(\"zone\", new()\n {\n Name = \"tf-test-dns_29439\",\n DnsName = \"private_87786.example.com.\",\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.Id,\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n dns,\n },\n });\n\n var testmanagedzone = new Gcp.IntegrationConnectors.ManagedZone(\"testmanagedzone\", new()\n {\n Name = \"test\",\n Description = \"tf created description\",\n Labels = \n {\n { \"intent\", \"example\" },\n },\n TargetProject = targetProject.ProjectId,\n TargetVpc = \"test\",\n Dns = zone.DnsName,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n dnsPeerBinding,\n zone,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/integrationconnectors\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttargetProject, err := organizations.NewProject(ctx, \"target_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"tf-test_34535\"),\n\t\t\tName: pulumi.String(\"tf-test_22375\"),\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\ttestProject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdnsPeerBinding, err := projects.NewIAMMember(ctx, \"dns_peer_binding\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: targetProject.ProjectId,\n\t\t\tRole: pulumi.String(\"roles/dns.peer\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-connectors.iam.gserviceaccount.com\", testProject.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdns, err := projects.NewService(ctx, \"dns\", \u0026projects.ServiceArgs{\n\t\t\tProject: targetProject.ProjectId,\n\t\t\tService: pulumi.String(\"dns.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcompute, err := projects.NewService(ctx, \"compute\", \u0026projects.ServiceArgs{\n\t\t\tProject: targetProject.ProjectId,\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tProject: targetProject.ProjectId,\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcompute,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tzone, err := dns.NewManagedZone(ctx, \"zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"tf-test-dns_29439\"),\n\t\t\tDnsName: pulumi.String(\"private_87786.example.com.\"),\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.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdns,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = integrationconnectors.NewManagedZone(ctx, \"testmanagedzone\", \u0026integrationconnectors.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"tf created description\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"intent\": pulumi.String(\"example\"),\n\t\t\t},\n\t\t\tTargetProject: targetProject.ProjectId,\n\t\t\tTargetVpc: pulumi.String(\"test\"),\n\t\t\tDns: zone.DnsName,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdnsPeerBinding,\n\t\t\tzone,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\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.integrationconnectors.ManagedZone;\nimport com.pulumi.gcp.integrationconnectors.ManagedZoneArgs;\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 targetProject = new Project(\"targetProject\", ProjectArgs.builder()\n .projectId(\"tf-test_34535\")\n .name(\"tf-test_22375\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var testProject = OrganizationsFunctions.getProject();\n\n var dnsPeerBinding = new IAMMember(\"dnsPeerBinding\", IAMMemberArgs.builder()\n .project(targetProject.projectId())\n .role(\"roles/dns.peer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-connectors.iam.gserviceaccount.com\", testProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var dns = new Service(\"dns\", ServiceArgs.builder()\n .project(targetProject.projectId())\n .service(\"dns.googleapis.com\")\n .build());\n\n var compute = new Service(\"compute\", ServiceArgs.builder()\n .project(targetProject.projectId())\n .service(\"compute.googleapis.com\")\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .project(targetProject.projectId())\n .name(\"test\")\n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(compute)\n .build());\n\n var zone = new ManagedZone(\"zone\", ManagedZoneArgs.builder()\n .name(\"tf-test-dns_29439\")\n .dnsName(\"private_87786.example.com.\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network.id())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(dns)\n .build());\n\n var testmanagedzone = new ManagedZone(\"testmanagedzone\", ManagedZoneArgs.builder()\n .name(\"test\")\n .description(\"tf created description\")\n .labels(Map.of(\"intent\", \"example\"))\n .targetProject(targetProject.projectId())\n .targetVpc(\"test\")\n .dns(zone.dnsName())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n dnsPeerBinding,\n zone)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n targetProject:\n type: gcp:organizations:Project\n name: target_project\n properties:\n projectId: tf-test_34535\n name: tf-test_22375\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n dnsPeerBinding:\n type: gcp:projects:IAMMember\n name: dns_peer_binding\n properties:\n project: ${targetProject.projectId}\n role: roles/dns.peer\n member: serviceAccount:service-${testProject.number}@gcp-sa-connectors.iam.gserviceaccount.com\n dns:\n type: gcp:projects:Service\n properties:\n project: ${targetProject.projectId}\n service: dns.googleapis.com\n compute:\n type: gcp:projects:Service\n properties:\n project: ${targetProject.projectId}\n service: compute.googleapis.com\n network:\n type: gcp:compute:Network\n properties:\n project: ${targetProject.projectId}\n name: test\n autoCreateSubnetworks: false\n options:\n dependson:\n - ${compute}\n zone:\n type: gcp:dns:ManagedZone\n properties:\n name: tf-test-dns_29439\n dnsName: private_87786.example.com.\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${network.id}\n options:\n dependson:\n - ${dns}\n testmanagedzone:\n type: gcp:integrationconnectors:ManagedZone\n properties:\n name: test\n description: tf created description\n labels:\n intent: example\n targetProject: ${targetProject.projectId}\n targetVpc: test\n dns: ${zone.dnsName}\n options:\n dependson:\n - ${dnsPeerBinding}\n - ${zone}\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nManagedZone can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/managedZones/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ManagedZone can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:integrationconnectors/managedZone:ManagedZone default projects/{{project}}/locations/global/managedZones/{{name}}\n```\n\n```sh\n$ pulumi import gcp:integrationconnectors/managedZone:ManagedZone default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:integrationconnectors/managedZone:ManagedZone default {{name}}\n```\n\n", + "description": "An Integration connectors Managed Zone.\n\n\nTo get more information about ManagedZone, see:\n\n* [API documentation](https://cloud.google.com/integration-connectors/docs/reference/rest/v1/projects.locations.global.managedZones)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/integration-connectors/docs)\n\n## Example Usage\n\n### Integration Connectors Managed Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst targetProject = new gcp.organizations.Project(\"target_project\", {\n projectId: \"tf-test_34535\",\n name: \"tf-test_22375\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst testProject = gcp.organizations.getProject({});\nconst dnsPeerBinding = new gcp.projects.IAMMember(\"dns_peer_binding\", {\n project: targetProject.projectId,\n role: \"roles/dns.peer\",\n member: testProject.then(testProject =\u003e `serviceAccount:service-${testProject.number}@gcp-sa-connectors.iam.gserviceaccount.com`),\n});\nconst dns = new gcp.projects.Service(\"dns\", {\n project: targetProject.projectId,\n service: \"dns.googleapis.com\",\n});\nconst compute = new gcp.projects.Service(\"compute\", {\n project: targetProject.projectId,\n service: \"compute.googleapis.com\",\n});\nconst network = new gcp.compute.Network(\"network\", {\n project: targetProject.projectId,\n name: \"test\",\n autoCreateSubnetworks: false,\n}, {\n dependsOn: [compute],\n});\nconst zone = new gcp.dns.ManagedZone(\"zone\", {\n name: \"tf-test-dns_29439\",\n dnsName: \"private_87786.example.com.\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network.id,\n }],\n },\n}, {\n dependsOn: [dns],\n});\nconst testmanagedzone = new gcp.integrationconnectors.ManagedZone(\"testmanagedzone\", {\n name: \"test\",\n description: \"tf created description\",\n labels: {\n intent: \"example\",\n },\n targetProject: targetProject.projectId,\n targetVpc: \"test\",\n dns: zone.dnsName,\n}, {\n dependsOn: [\n dnsPeerBinding,\n zone,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntarget_project = gcp.organizations.Project(\"target_project\",\n project_id=\"tf-test_34535\",\n name=\"tf-test_22375\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\ntest_project = gcp.organizations.get_project()\ndns_peer_binding = gcp.projects.IAMMember(\"dns_peer_binding\",\n project=target_project.project_id,\n role=\"roles/dns.peer\",\n member=f\"serviceAccount:service-{test_project.number}@gcp-sa-connectors.iam.gserviceaccount.com\")\ndns = gcp.projects.Service(\"dns\",\n project=target_project.project_id,\n service=\"dns.googleapis.com\")\ncompute = gcp.projects.Service(\"compute\",\n project=target_project.project_id,\n service=\"compute.googleapis.com\")\nnetwork = gcp.compute.Network(\"network\",\n project=target_project.project_id,\n name=\"test\",\n auto_create_subnetworks=False,\n opts = pulumi.ResourceOptions(depends_on=[compute]))\nzone = gcp.dns.ManagedZone(\"zone\",\n name=\"tf-test-dns_29439\",\n dns_name=\"private_87786.example.com.\",\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [{\n \"network_url\": network.id,\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[dns]))\ntestmanagedzone = gcp.integrationconnectors.ManagedZone(\"testmanagedzone\",\n name=\"test\",\n description=\"tf created description\",\n labels={\n \"intent\": \"example\",\n },\n target_project=target_project.project_id,\n target_vpc=\"test\",\n dns=zone.dns_name,\n opts = pulumi.ResourceOptions(depends_on=[\n dns_peer_binding,\n zone,\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 targetProject = new Gcp.Organizations.Project(\"target_project\", new()\n {\n ProjectId = \"tf-test_34535\",\n Name = \"tf-test_22375\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var testProject = Gcp.Organizations.GetProject.Invoke();\n\n var dnsPeerBinding = new Gcp.Projects.IAMMember(\"dns_peer_binding\", new()\n {\n Project = targetProject.ProjectId,\n Role = \"roles/dns.peer\",\n Member = $\"serviceAccount:service-{testProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-connectors.iam.gserviceaccount.com\",\n });\n\n var dns = new Gcp.Projects.Service(\"dns\", new()\n {\n Project = targetProject.ProjectId,\n ServiceName = \"dns.googleapis.com\",\n });\n\n var compute = new Gcp.Projects.Service(\"compute\", new()\n {\n Project = targetProject.ProjectId,\n ServiceName = \"compute.googleapis.com\",\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Project = targetProject.ProjectId,\n Name = \"test\",\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n compute,\n },\n });\n\n var zone = new Gcp.Dns.ManagedZone(\"zone\", new()\n {\n Name = \"tf-test-dns_29439\",\n DnsName = \"private_87786.example.com.\",\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.Id,\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n dns,\n },\n });\n\n var testmanagedzone = new Gcp.IntegrationConnectors.ManagedZone(\"testmanagedzone\", new()\n {\n Name = \"test\",\n Description = \"tf created description\",\n Labels = \n {\n { \"intent\", \"example\" },\n },\n TargetProject = targetProject.ProjectId,\n TargetVpc = \"test\",\n Dns = zone.DnsName,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n dnsPeerBinding,\n zone,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/integrationconnectors\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttargetProject, err := organizations.NewProject(ctx, \"target_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"tf-test_34535\"),\n\t\t\tName: pulumi.String(\"tf-test_22375\"),\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\ttestProject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdnsPeerBinding, err := projects.NewIAMMember(ctx, \"dns_peer_binding\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: targetProject.ProjectId,\n\t\t\tRole: pulumi.String(\"roles/dns.peer\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-connectors.iam.gserviceaccount.com\", testProject.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdns, err := projects.NewService(ctx, \"dns\", \u0026projects.ServiceArgs{\n\t\t\tProject: targetProject.ProjectId,\n\t\t\tService: pulumi.String(\"dns.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcompute, err := projects.NewService(ctx, \"compute\", \u0026projects.ServiceArgs{\n\t\t\tProject: targetProject.ProjectId,\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tProject: targetProject.ProjectId,\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcompute,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tzone, err := dns.NewManagedZone(ctx, \"zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"tf-test-dns_29439\"),\n\t\t\tDnsName: pulumi.String(\"private_87786.example.com.\"),\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.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdns,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = integrationconnectors.NewManagedZone(ctx, \"testmanagedzone\", \u0026integrationconnectors.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"tf created description\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"intent\": pulumi.String(\"example\"),\n\t\t\t},\n\t\t\tTargetProject: targetProject.ProjectId,\n\t\t\tTargetVpc: pulumi.String(\"test\"),\n\t\t\tDns: zone.DnsName,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdnsPeerBinding,\n\t\t\tzone,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\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.integrationconnectors.ManagedZone;\nimport com.pulumi.gcp.integrationconnectors.ManagedZoneArgs;\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 targetProject = new Project(\"targetProject\", ProjectArgs.builder()\n .projectId(\"tf-test_34535\")\n .name(\"tf-test_22375\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var testProject = OrganizationsFunctions.getProject();\n\n var dnsPeerBinding = new IAMMember(\"dnsPeerBinding\", IAMMemberArgs.builder()\n .project(targetProject.projectId())\n .role(\"roles/dns.peer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-connectors.iam.gserviceaccount.com\", testProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var dns = new Service(\"dns\", ServiceArgs.builder()\n .project(targetProject.projectId())\n .service(\"dns.googleapis.com\")\n .build());\n\n var compute = new Service(\"compute\", ServiceArgs.builder()\n .project(targetProject.projectId())\n .service(\"compute.googleapis.com\")\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .project(targetProject.projectId())\n .name(\"test\")\n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(compute)\n .build());\n\n var zone = new ManagedZone(\"zone\", ManagedZoneArgs.builder()\n .name(\"tf-test-dns_29439\")\n .dnsName(\"private_87786.example.com.\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network.id())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(dns)\n .build());\n\n var testmanagedzone = new ManagedZone(\"testmanagedzone\", ManagedZoneArgs.builder()\n .name(\"test\")\n .description(\"tf created description\")\n .labels(Map.of(\"intent\", \"example\"))\n .targetProject(targetProject.projectId())\n .targetVpc(\"test\")\n .dns(zone.dnsName())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n dnsPeerBinding,\n zone)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n targetProject:\n type: gcp:organizations:Project\n name: target_project\n properties:\n projectId: tf-test_34535\n name: tf-test_22375\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n dnsPeerBinding:\n type: gcp:projects:IAMMember\n name: dns_peer_binding\n properties:\n project: ${targetProject.projectId}\n role: roles/dns.peer\n member: serviceAccount:service-${testProject.number}@gcp-sa-connectors.iam.gserviceaccount.com\n dns:\n type: gcp:projects:Service\n properties:\n project: ${targetProject.projectId}\n service: dns.googleapis.com\n compute:\n type: gcp:projects:Service\n properties:\n project: ${targetProject.projectId}\n service: compute.googleapis.com\n network:\n type: gcp:compute:Network\n properties:\n project: ${targetProject.projectId}\n name: test\n autoCreateSubnetworks: false\n options:\n dependson:\n - ${compute}\n zone:\n type: gcp:dns:ManagedZone\n properties:\n name: tf-test-dns_29439\n dnsName: private_87786.example.com.\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${network.id}\n options:\n dependson:\n - ${dns}\n testmanagedzone:\n type: gcp:integrationconnectors:ManagedZone\n properties:\n name: test\n description: tf created description\n labels:\n intent: example\n targetProject: ${targetProject.projectId}\n targetVpc: test\n dns: ${zone.dnsName}\n options:\n dependson:\n - ${dnsPeerBinding}\n - ${zone}\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nManagedZone can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/managedZones/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ManagedZone can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:integrationconnectors/managedZone:ManagedZone default projects/{{project}}/locations/global/managedZones/{{name}}\n```\n\n```sh\n$ pulumi import gcp:integrationconnectors/managedZone:ManagedZone default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:integrationconnectors/managedZone:ManagedZone default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -207775,7 +207775,7 @@ } }, "gcp:kms/ekmConnection:EkmConnection": { - "description": "`Ekm Connections` are used to control the connection settings for an `EXTERNAL_VPC` CryptoKey.\nIt is used to connect customer's external key manager to Google Cloud EKM.\n\n\n\u003e **Note:** Ekm Connections cannot be deleted from Google Cloud Platform.\n\n\nTo get more information about EkmConnection, see:\n\n* [API documentation](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.ekmConnections)\n* How-to Guides\n * [Creating a Ekm Connection](https://cloud.google.com/kms/docs/create-ekm-connection)\n\n## Example Usage\n\n### Kms Ekm Connection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example_ekmconnection = new gcp.kms.EkmConnection(\"example-ekmconnection\", {\n name: \"ekmconnection_example\",\n location: \"us-central1\",\n keyManagementMode: \"MANUAL\",\n serviceResolvers: [{\n serviceDirectoryService: \"projects/project_id/locations/us-central1/namespaces/namespace_name/services/service_name\",\n hostname: \"example-ekm.goog\",\n serverCertificates: [{\n rawDer: \"==HAwIBCCAr6gAwIBAgIUWR+EV4lqiV7Ql12VY==\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_ekmconnection = gcp.kms.EkmConnection(\"example-ekmconnection\",\n name=\"ekmconnection_example\",\n location=\"us-central1\",\n key_management_mode=\"MANUAL\",\n service_resolvers=[{\n \"serviceDirectoryService\": \"projects/project_id/locations/us-central1/namespaces/namespace_name/services/service_name\",\n \"hostname\": \"example-ekm.goog\",\n \"serverCertificates\": [{\n \"rawDer\": \"==HAwIBCCAr6gAwIBAgIUWR+EV4lqiV7Ql12VY==\",\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 example_ekmconnection = new Gcp.Kms.EkmConnection(\"example-ekmconnection\", new()\n {\n Name = \"ekmconnection_example\",\n Location = \"us-central1\",\n KeyManagementMode = \"MANUAL\",\n ServiceResolvers = new[]\n {\n new Gcp.Kms.Inputs.EkmConnectionServiceResolverArgs\n {\n ServiceDirectoryService = \"projects/project_id/locations/us-central1/namespaces/namespace_name/services/service_name\",\n Hostname = \"example-ekm.goog\",\n ServerCertificates = new[]\n {\n new Gcp.Kms.Inputs.EkmConnectionServiceResolverServerCertificateArgs\n {\n RawDer = \"==HAwIBCCAr6gAwIBAgIUWR+EV4lqiV7Ql12VY==\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := kms.NewEkmConnection(ctx, \"example-ekmconnection\", \u0026kms.EkmConnectionArgs{\n\t\t\tName: pulumi.String(\"ekmconnection_example\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tKeyManagementMode: pulumi.String(\"MANUAL\"),\n\t\t\tServiceResolvers: kms.EkmConnectionServiceResolverArray{\n\t\t\t\t\u0026kms.EkmConnectionServiceResolverArgs{\n\t\t\t\t\tServiceDirectoryService: pulumi.String(\"projects/project_id/locations/us-central1/namespaces/namespace_name/services/service_name\"),\n\t\t\t\t\tHostname: pulumi.String(\"example-ekm.goog\"),\n\t\t\t\t\tServerCertificates: kms.EkmConnectionServiceResolverServerCertificateArray{\n\t\t\t\t\t\t\u0026kms.EkmConnectionServiceResolverServerCertificateArgs{\n\t\t\t\t\t\t\tRawDer: pulumi.String(\"==HAwIBCCAr6gAwIBAgIUWR+EV4lqiV7Ql12VY==\"),\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.kms.EkmConnection;\nimport com.pulumi.gcp.kms.EkmConnectionArgs;\nimport com.pulumi.gcp.kms.inputs.EkmConnectionServiceResolverArgs;\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_ekmconnection = new EkmConnection(\"example-ekmconnection\", EkmConnectionArgs.builder()\n .name(\"ekmconnection_example\")\n .location(\"us-central1\")\n .keyManagementMode(\"MANUAL\")\n .serviceResolvers(EkmConnectionServiceResolverArgs.builder()\n .serviceDirectoryService(\"projects/project_id/locations/us-central1/namespaces/namespace_name/services/service_name\")\n .hostname(\"example-ekm.goog\")\n .serverCertificates(EkmConnectionServiceResolverServerCertificateArgs.builder()\n .rawDer(\"==HAwIBCCAr6gAwIBAgIUWR+EV4lqiV7Ql12VY==\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-ekmconnection:\n type: gcp:kms:EkmConnection\n properties:\n name: ekmconnection_example\n location: us-central1\n keyManagementMode: MANUAL\n serviceResolvers:\n - serviceDirectoryService: projects/project_id/locations/us-central1/namespaces/namespace_name/services/service_name\n hostname: example-ekm.goog\n serverCertificates:\n - rawDer: ==HAwIBCCAr6gAwIBAgIUWR+EV4lqiV7Ql12VY==\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEkmConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/ekmConnections/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, EkmConnection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:kms/ekmConnection:EkmConnection default projects/{{project}}/locations/{{location}}/ekmConnections/{{name}}\n```\n\n```sh\n$ pulumi import gcp:kms/ekmConnection:EkmConnection default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:kms/ekmConnection:EkmConnection default {{location}}/{{name}}\n```\n\n", + "description": "`Ekm Connections` are used to control the connection settings for an `EXTERNAL_VPC` CryptoKey.\nIt is used to connect customer's external key manager to Google Cloud EKM.\n\n\n\u003e **Note:** Ekm Connections cannot be deleted from Google Cloud Platform.\n\n\nTo get more information about EkmConnection, see:\n\n* [API documentation](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.ekmConnections)\n* How-to Guides\n * [Creating a Ekm Connection](https://cloud.google.com/kms/docs/create-ekm-connection)\n\n## Example Usage\n\n### Kms Ekm Connection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example_ekmconnection = new gcp.kms.EkmConnection(\"example-ekmconnection\", {\n name: \"ekmconnection_example\",\n location: \"us-central1\",\n keyManagementMode: \"MANUAL\",\n serviceResolvers: [{\n serviceDirectoryService: \"projects/project_id/locations/us-central1/namespaces/namespace_name/services/service_name\",\n hostname: \"example-ekm.goog\",\n serverCertificates: [{\n rawDer: \"==HAwIBCCAr6gAwIBAgIUWR+EV4lqiV7Ql12VY==\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_ekmconnection = gcp.kms.EkmConnection(\"example-ekmconnection\",\n name=\"ekmconnection_example\",\n location=\"us-central1\",\n key_management_mode=\"MANUAL\",\n service_resolvers=[{\n \"service_directory_service\": \"projects/project_id/locations/us-central1/namespaces/namespace_name/services/service_name\",\n \"hostname\": \"example-ekm.goog\",\n \"server_certificates\": [{\n \"raw_der\": \"==HAwIBCCAr6gAwIBAgIUWR+EV4lqiV7Ql12VY==\",\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 example_ekmconnection = new Gcp.Kms.EkmConnection(\"example-ekmconnection\", new()\n {\n Name = \"ekmconnection_example\",\n Location = \"us-central1\",\n KeyManagementMode = \"MANUAL\",\n ServiceResolvers = new[]\n {\n new Gcp.Kms.Inputs.EkmConnectionServiceResolverArgs\n {\n ServiceDirectoryService = \"projects/project_id/locations/us-central1/namespaces/namespace_name/services/service_name\",\n Hostname = \"example-ekm.goog\",\n ServerCertificates = new[]\n {\n new Gcp.Kms.Inputs.EkmConnectionServiceResolverServerCertificateArgs\n {\n RawDer = \"==HAwIBCCAr6gAwIBAgIUWR+EV4lqiV7Ql12VY==\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := kms.NewEkmConnection(ctx, \"example-ekmconnection\", \u0026kms.EkmConnectionArgs{\n\t\t\tName: pulumi.String(\"ekmconnection_example\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tKeyManagementMode: pulumi.String(\"MANUAL\"),\n\t\t\tServiceResolvers: kms.EkmConnectionServiceResolverArray{\n\t\t\t\t\u0026kms.EkmConnectionServiceResolverArgs{\n\t\t\t\t\tServiceDirectoryService: pulumi.String(\"projects/project_id/locations/us-central1/namespaces/namespace_name/services/service_name\"),\n\t\t\t\t\tHostname: pulumi.String(\"example-ekm.goog\"),\n\t\t\t\t\tServerCertificates: kms.EkmConnectionServiceResolverServerCertificateArray{\n\t\t\t\t\t\t\u0026kms.EkmConnectionServiceResolverServerCertificateArgs{\n\t\t\t\t\t\t\tRawDer: pulumi.String(\"==HAwIBCCAr6gAwIBAgIUWR+EV4lqiV7Ql12VY==\"),\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.kms.EkmConnection;\nimport com.pulumi.gcp.kms.EkmConnectionArgs;\nimport com.pulumi.gcp.kms.inputs.EkmConnectionServiceResolverArgs;\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_ekmconnection = new EkmConnection(\"example-ekmconnection\", EkmConnectionArgs.builder()\n .name(\"ekmconnection_example\")\n .location(\"us-central1\")\n .keyManagementMode(\"MANUAL\")\n .serviceResolvers(EkmConnectionServiceResolverArgs.builder()\n .serviceDirectoryService(\"projects/project_id/locations/us-central1/namespaces/namespace_name/services/service_name\")\n .hostname(\"example-ekm.goog\")\n .serverCertificates(EkmConnectionServiceResolverServerCertificateArgs.builder()\n .rawDer(\"==HAwIBCCAr6gAwIBAgIUWR+EV4lqiV7Ql12VY==\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-ekmconnection:\n type: gcp:kms:EkmConnection\n properties:\n name: ekmconnection_example\n location: us-central1\n keyManagementMode: MANUAL\n serviceResolvers:\n - serviceDirectoryService: projects/project_id/locations/us-central1/namespaces/namespace_name/services/service_name\n hostname: example-ekm.goog\n serverCertificates:\n - rawDer: ==HAwIBCCAr6gAwIBAgIUWR+EV4lqiV7Ql12VY==\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEkmConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/ekmConnections/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, EkmConnection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:kms/ekmConnection:EkmConnection default projects/{{project}}/locations/{{location}}/ekmConnections/{{name}}\n```\n\n```sh\n$ pulumi import gcp:kms/ekmConnection:EkmConnection default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:kms/ekmConnection:EkmConnection default {{location}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -208433,7 +208433,7 @@ } }, "gcp:kms/secretCiphertext:SecretCiphertext": { - "description": "Encrypts secret data with Google Cloud KMS and provides access to the ciphertext.\n\n\n\u003e **NOTE:** Using this resource will allow you to conceal secret data within your\nresource definitions, but it does not take care of protecting that data in the\nlogging output, plan output, or state output. Please take care to secure your secret\ndata outside of resource definitions.\n\n\nTo get more information about SecretCiphertext, see:\n\n* [API documentation](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys/encrypt)\n* How-to Guides\n * [Encrypting and decrypting data with a symmetric key](https://cloud.google.com/kms/docs/encrypt-decrypt)\n\n\n\n## Example Usage\n\n### Kms Secret Ciphertext Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"keyring-example\",\n location: \"global\",\n});\nconst cryptokey = new gcp.kms.CryptoKey(\"cryptokey\", {\n name: \"crypto-key-example\",\n keyRing: keyring.id,\n rotationPeriod: \"7776000s\",\n});\nconst myPassword = new gcp.kms.SecretCiphertext(\"my_password\", {\n cryptoKey: cryptokey.id,\n plaintext: \"my-secret-password\",\n});\nconst instance = new gcp.compute.Instance(\"instance\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"my-instance\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n metadata: {\n password: myPassword.ciphertext,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"keyring-example\",\n location=\"global\")\ncryptokey = gcp.kms.CryptoKey(\"cryptokey\",\n name=\"crypto-key-example\",\n key_ring=keyring.id,\n rotation_period=\"7776000s\")\nmy_password = gcp.kms.SecretCiphertext(\"my_password\",\n crypto_key=cryptokey.id,\n plaintext=\"my-secret-password\")\ninstance = gcp.compute.Instance(\"instance\",\n network_interfaces=[{\n \"accessConfigs\": [{}],\n \"network\": \"default\",\n }],\n name=\"my-instance\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initializeParams\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n metadata={\n \"password\": my_password.ciphertext,\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 Name = \"keyring-example\",\n Location = \"global\",\n });\n\n var cryptokey = new Gcp.Kms.CryptoKey(\"cryptokey\", new()\n {\n Name = \"crypto-key-example\",\n KeyRing = keyring.Id,\n RotationPeriod = \"7776000s\",\n });\n\n var myPassword = new Gcp.Kms.SecretCiphertext(\"my_password\", new()\n {\n CryptoKey = cryptokey.Id,\n Plaintext = \"my-secret-password\",\n });\n\n var instance = new Gcp.Compute.Instance(\"instance\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"my-instance\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\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 Metadata = \n {\n { \"password\", myPassword.Ciphertext },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"keyring-example\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\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\tName: pulumi.String(\"crypto-key-example\"),\n\t\t\tKeyRing: keyring.ID(),\n\t\t\tRotationPeriod: pulumi.String(\"7776000s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyPassword, err := kms.NewSecretCiphertext(ctx, \"my_password\", \u0026kms.SecretCiphertextArgs{\n\t\t\tCryptoKey: cryptokey.ID(),\n\t\t\tPlaintext: pulumi.String(\"my-secret-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"instance\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\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\tMetadata: pulumi.StringMap{\n\t\t\t\t\"password\": myPassword.Ciphertext,\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.kms.SecretCiphertext;\nimport com.pulumi.gcp.kms.SecretCiphertextArgs;\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 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 .name(\"keyring-example\")\n .location(\"global\")\n .build());\n\n var cryptokey = new CryptoKey(\"cryptokey\", CryptoKeyArgs.builder()\n .name(\"crypto-key-example\")\n .keyRing(keyring.id())\n .rotationPeriod(\"7776000s\")\n .build());\n\n var myPassword = new SecretCiphertext(\"myPassword\", SecretCiphertextArgs.builder()\n .cryptoKey(cryptokey.id())\n .plaintext(\"my-secret-password\")\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"my-instance\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .metadata(Map.of(\"password\", myPassword.ciphertext()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: keyring-example\n location: global\n cryptokey:\n type: gcp:kms:CryptoKey\n properties:\n name: crypto-key-example\n keyRing: ${keyring.id}\n rotationPeriod: 7776000s\n myPassword:\n type: gcp:kms:SecretCiphertext\n name: my_password\n properties:\n cryptoKey: ${cryptokey.id}\n plaintext: my-secret-password\n instance:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: my-instance\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n metadata:\n password: ${myPassword.ciphertext}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "Encrypts secret data with Google Cloud KMS and provides access to the ciphertext.\n\n\n\u003e **NOTE:** Using this resource will allow you to conceal secret data within your\nresource definitions, but it does not take care of protecting that data in the\nlogging output, plan output, or state output. Please take care to secure your secret\ndata outside of resource definitions.\n\n\nTo get more information about SecretCiphertext, see:\n\n* [API documentation](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys/encrypt)\n* How-to Guides\n * [Encrypting and decrypting data with a symmetric key](https://cloud.google.com/kms/docs/encrypt-decrypt)\n\n\n\n## Example Usage\n\n### Kms Secret Ciphertext Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"keyring-example\",\n location: \"global\",\n});\nconst cryptokey = new gcp.kms.CryptoKey(\"cryptokey\", {\n name: \"crypto-key-example\",\n keyRing: keyring.id,\n rotationPeriod: \"7776000s\",\n});\nconst myPassword = new gcp.kms.SecretCiphertext(\"my_password\", {\n cryptoKey: cryptokey.id,\n plaintext: \"my-secret-password\",\n});\nconst instance = new gcp.compute.Instance(\"instance\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"my-instance\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n metadata: {\n password: myPassword.ciphertext,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"keyring-example\",\n location=\"global\")\ncryptokey = gcp.kms.CryptoKey(\"cryptokey\",\n name=\"crypto-key-example\",\n key_ring=keyring.id,\n rotation_period=\"7776000s\")\nmy_password = gcp.kms.SecretCiphertext(\"my_password\",\n crypto_key=cryptokey.id,\n plaintext=\"my-secret-password\")\ninstance = gcp.compute.Instance(\"instance\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"my-instance\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n metadata={\n \"password\": my_password.ciphertext,\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 Name = \"keyring-example\",\n Location = \"global\",\n });\n\n var cryptokey = new Gcp.Kms.CryptoKey(\"cryptokey\", new()\n {\n Name = \"crypto-key-example\",\n KeyRing = keyring.Id,\n RotationPeriod = \"7776000s\",\n });\n\n var myPassword = new Gcp.Kms.SecretCiphertext(\"my_password\", new()\n {\n CryptoKey = cryptokey.Id,\n Plaintext = \"my-secret-password\",\n });\n\n var instance = new Gcp.Compute.Instance(\"instance\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"my-instance\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\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 Metadata = \n {\n { \"password\", myPassword.Ciphertext },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"keyring-example\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\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\tName: pulumi.String(\"crypto-key-example\"),\n\t\t\tKeyRing: keyring.ID(),\n\t\t\tRotationPeriod: pulumi.String(\"7776000s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyPassword, err := kms.NewSecretCiphertext(ctx, \"my_password\", \u0026kms.SecretCiphertextArgs{\n\t\t\tCryptoKey: cryptokey.ID(),\n\t\t\tPlaintext: pulumi.String(\"my-secret-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"instance\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\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\tMetadata: pulumi.StringMap{\n\t\t\t\t\"password\": myPassword.Ciphertext,\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.kms.SecretCiphertext;\nimport com.pulumi.gcp.kms.SecretCiphertextArgs;\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 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 .name(\"keyring-example\")\n .location(\"global\")\n .build());\n\n var cryptokey = new CryptoKey(\"cryptokey\", CryptoKeyArgs.builder()\n .name(\"crypto-key-example\")\n .keyRing(keyring.id())\n .rotationPeriod(\"7776000s\")\n .build());\n\n var myPassword = new SecretCiphertext(\"myPassword\", SecretCiphertextArgs.builder()\n .cryptoKey(cryptokey.id())\n .plaintext(\"my-secret-password\")\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"my-instance\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .metadata(Map.of(\"password\", myPassword.ciphertext()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: keyring-example\n location: global\n cryptokey:\n type: gcp:kms:CryptoKey\n properties:\n name: crypto-key-example\n keyRing: ${keyring.id}\n rotationPeriod: 7776000s\n myPassword:\n type: gcp:kms:SecretCiphertext\n name: my_password\n properties:\n cryptoKey: ${cryptokey.id}\n plaintext: my-secret-password\n instance:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: my-instance\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n metadata:\n password: ${myPassword.ciphertext}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "additionalAuthenticatedData": { "type": "string", @@ -208880,7 +208880,7 @@ } }, "gcp:logging/folderBucketConfig:FolderBucketConfig": { - "description": "Manages a folder-level logging bucket config. For more information see\n[the official logging documentation](https://cloud.google.com/logging/docs/) and\n[Storing Logs](https://cloud.google.com/logging/docs/storage).\n\n\u003e **Note:** Logging buckets are automatically created for a given folder, project, organization, billingAccount and cannot be deleted. Creating a resource of this type will acquire and update the resource that already exists at the desired location. These buckets cannot be removed so deleting this resource will remove the bucket config from your state but will leave the logging bucket unchanged. The buckets that are currently automatically created are \"_Default\" and \"_Required\".\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.organizations.Folder(\"default\", {\n displayName: \"some-folder-name\",\n parent: \"organizations/123456789\",\n});\nconst basic = new gcp.logging.FolderBucketConfig(\"basic\", {\n folder: _default.name,\n location: \"global\",\n retentionDays: 30,\n bucketId: \"_Default\",\n indexConfigs: [{\n fieldPath: \"jsonPayload.request.status\",\n type: \"INDEX_TYPE_STRING\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.Folder(\"default\",\n display_name=\"some-folder-name\",\n parent=\"organizations/123456789\")\nbasic = gcp.logging.FolderBucketConfig(\"basic\",\n folder=default.name,\n location=\"global\",\n retention_days=30,\n bucket_id=\"_Default\",\n index_configs=[{\n \"fieldPath\": \"jsonPayload.request.status\",\n \"type\": \"INDEX_TYPE_STRING\",\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 @default = new Gcp.Organizations.Folder(\"default\", new()\n {\n DisplayName = \"some-folder-name\",\n Parent = \"organizations/123456789\",\n });\n\n var basic = new Gcp.Logging.FolderBucketConfig(\"basic\", new()\n {\n Folder = @default.Name,\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"_Default\",\n IndexConfigs = new[]\n {\n new Gcp.Logging.Inputs.FolderBucketConfigIndexConfigArgs\n {\n FieldPath = \"jsonPayload.request.status\",\n Type = \"INDEX_TYPE_STRING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewFolder(ctx, \"default\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"some-folder-name\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewFolderBucketConfig(ctx, \"basic\", \u0026logging.FolderBucketConfigArgs{\n\t\t\tFolder: _default.Name,\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"_Default\"),\n\t\t\tIndexConfigs: logging.FolderBucketConfigIndexConfigArray{\n\t\t\t\t\u0026logging.FolderBucketConfigIndexConfigArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"jsonPayload.request.status\"),\n\t\t\t\t\tType: pulumi.String(\"INDEX_TYPE_STRING\"),\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.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.logging.FolderBucketConfig;\nimport com.pulumi.gcp.logging.FolderBucketConfigArgs;\nimport com.pulumi.gcp.logging.inputs.FolderBucketConfigIndexConfigArgs;\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 Folder(\"default\", FolderArgs.builder()\n .displayName(\"some-folder-name\")\n .parent(\"organizations/123456789\")\n .build());\n\n var basic = new FolderBucketConfig(\"basic\", FolderBucketConfigArgs.builder()\n .folder(default_.name())\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"_Default\")\n .indexConfigs(FolderBucketConfigIndexConfigArgs.builder()\n .fieldPath(\"jsonPayload.request.status\")\n .type(\"INDEX_TYPE_STRING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:organizations:Folder\n properties:\n displayName: some-folder-name\n parent: organizations/123456789\n basic:\n type: gcp:logging:FolderBucketConfig\n properties:\n folder: ${default.name}\n location: global\n retentionDays: 30\n bucketId: _Default\n indexConfigs:\n - fieldPath: jsonPayload.request.status\n type: INDEX_TYPE_STRING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported using the following format:\n\n* `folders/{{folder}}/locations/{{location}}/buckets/{{bucket_id}}`\n\nWhen using the `pulumi import` command, this resource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/folderBucketConfig:FolderBucketConfig default folders/{{folder}}/locations/{{location}}/buckets/{{bucket_id}}\n```\n\n", + "description": "Manages a folder-level logging bucket config. For more information see\n[the official logging documentation](https://cloud.google.com/logging/docs/) and\n[Storing Logs](https://cloud.google.com/logging/docs/storage).\n\n\u003e **Note:** Logging buckets are automatically created for a given folder, project, organization, billingAccount and cannot be deleted. Creating a resource of this type will acquire and update the resource that already exists at the desired location. These buckets cannot be removed so deleting this resource will remove the bucket config from your state but will leave the logging bucket unchanged. The buckets that are currently automatically created are \"_Default\" and \"_Required\".\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.organizations.Folder(\"default\", {\n displayName: \"some-folder-name\",\n parent: \"organizations/123456789\",\n});\nconst basic = new gcp.logging.FolderBucketConfig(\"basic\", {\n folder: _default.name,\n location: \"global\",\n retentionDays: 30,\n bucketId: \"_Default\",\n indexConfigs: [{\n fieldPath: \"jsonPayload.request.status\",\n type: \"INDEX_TYPE_STRING\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.Folder(\"default\",\n display_name=\"some-folder-name\",\n parent=\"organizations/123456789\")\nbasic = gcp.logging.FolderBucketConfig(\"basic\",\n folder=default.name,\n location=\"global\",\n retention_days=30,\n bucket_id=\"_Default\",\n index_configs=[{\n \"field_path\": \"jsonPayload.request.status\",\n \"type\": \"INDEX_TYPE_STRING\",\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 @default = new Gcp.Organizations.Folder(\"default\", new()\n {\n DisplayName = \"some-folder-name\",\n Parent = \"organizations/123456789\",\n });\n\n var basic = new Gcp.Logging.FolderBucketConfig(\"basic\", new()\n {\n Folder = @default.Name,\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"_Default\",\n IndexConfigs = new[]\n {\n new Gcp.Logging.Inputs.FolderBucketConfigIndexConfigArgs\n {\n FieldPath = \"jsonPayload.request.status\",\n Type = \"INDEX_TYPE_STRING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewFolder(ctx, \"default\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"some-folder-name\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewFolderBucketConfig(ctx, \"basic\", \u0026logging.FolderBucketConfigArgs{\n\t\t\tFolder: _default.Name,\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"_Default\"),\n\t\t\tIndexConfigs: logging.FolderBucketConfigIndexConfigArray{\n\t\t\t\t\u0026logging.FolderBucketConfigIndexConfigArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"jsonPayload.request.status\"),\n\t\t\t\t\tType: pulumi.String(\"INDEX_TYPE_STRING\"),\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.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.logging.FolderBucketConfig;\nimport com.pulumi.gcp.logging.FolderBucketConfigArgs;\nimport com.pulumi.gcp.logging.inputs.FolderBucketConfigIndexConfigArgs;\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 Folder(\"default\", FolderArgs.builder()\n .displayName(\"some-folder-name\")\n .parent(\"organizations/123456789\")\n .build());\n\n var basic = new FolderBucketConfig(\"basic\", FolderBucketConfigArgs.builder()\n .folder(default_.name())\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"_Default\")\n .indexConfigs(FolderBucketConfigIndexConfigArgs.builder()\n .fieldPath(\"jsonPayload.request.status\")\n .type(\"INDEX_TYPE_STRING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:organizations:Folder\n properties:\n displayName: some-folder-name\n parent: organizations/123456789\n basic:\n type: gcp:logging:FolderBucketConfig\n properties:\n folder: ${default.name}\n location: global\n retentionDays: 30\n bucketId: _Default\n indexConfigs:\n - fieldPath: jsonPayload.request.status\n type: INDEX_TYPE_STRING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported using the following format:\n\n* `folders/{{folder}}/locations/{{location}}/buckets/{{bucket_id}}`\n\nWhen using the `pulumi import` command, this resource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/folderBucketConfig:FolderBucketConfig default folders/{{folder}}/locations/{{location}}/buckets/{{bucket_id}}\n```\n\n", "properties": { "bucketId": { "type": "string", @@ -210011,7 +210011,7 @@ } }, "gcp:logging/metric:Metric": { - "description": "Logs-based metric can also be used to extract values from logs and create a a distribution\nof the values. The distribution records the statistics of the extracted values along with\nan optional histogram of the values as specified by the bucket options.\n\n\nTo get more information about Metric, see:\n\n* [API documentation](https://cloud.google.com/logging/docs/reference/v2/rest/v2/projects.metrics/create)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/logging/docs/apis)\n\n## Example Usage\n\n### Logging Metric Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst loggingMetric = new gcp.logging.Metric(\"logging_metric\", {\n name: \"my-(custom)/metric\",\n filter: \"resource.type=gae_app AND severity\u003e=ERROR\",\n metricDescriptor: {\n metricKind: \"DELTA\",\n valueType: \"DISTRIBUTION\",\n unit: \"1\",\n labels: [\n {\n key: \"mass\",\n valueType: \"STRING\",\n description: \"amount of matter\",\n },\n {\n key: \"sku\",\n valueType: \"INT64\",\n description: \"Identifying number for item\",\n },\n ],\n displayName: \"My metric\",\n },\n valueExtractor: \"EXTRACT(jsonPayload.request)\",\n labelExtractors: {\n mass: \"EXTRACT(jsonPayload.request)\",\n sku: \"EXTRACT(jsonPayload.id)\",\n },\n bucketOptions: {\n linearBuckets: {\n numFiniteBuckets: 3,\n width: 1,\n offset: 1,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlogging_metric = gcp.logging.Metric(\"logging_metric\",\n name=\"my-(custom)/metric\",\n filter=\"resource.type=gae_app AND severity\u003e=ERROR\",\n metric_descriptor={\n \"metricKind\": \"DELTA\",\n \"valueType\": \"DISTRIBUTION\",\n \"unit\": \"1\",\n \"labels\": [\n {\n \"key\": \"mass\",\n \"valueType\": \"STRING\",\n \"description\": \"amount of matter\",\n },\n {\n \"key\": \"sku\",\n \"valueType\": \"INT64\",\n \"description\": \"Identifying number for item\",\n },\n ],\n \"displayName\": \"My metric\",\n },\n value_extractor=\"EXTRACT(jsonPayload.request)\",\n label_extractors={\n \"mass\": \"EXTRACT(jsonPayload.request)\",\n \"sku\": \"EXTRACT(jsonPayload.id)\",\n },\n bucket_options={\n \"linearBuckets\": {\n \"numFiniteBuckets\": 3,\n \"width\": 1,\n \"offset\": 1,\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 loggingMetric = new Gcp.Logging.Metric(\"logging_metric\", new()\n {\n Name = \"my-(custom)/metric\",\n Filter = \"resource.type=gae_app AND severity\u003e=ERROR\",\n MetricDescriptor = new Gcp.Logging.Inputs.MetricMetricDescriptorArgs\n {\n MetricKind = \"DELTA\",\n ValueType = \"DISTRIBUTION\",\n Unit = \"1\",\n Labels = new[]\n {\n new Gcp.Logging.Inputs.MetricMetricDescriptorLabelArgs\n {\n Key = \"mass\",\n ValueType = \"STRING\",\n Description = \"amount of matter\",\n },\n new Gcp.Logging.Inputs.MetricMetricDescriptorLabelArgs\n {\n Key = \"sku\",\n ValueType = \"INT64\",\n Description = \"Identifying number for item\",\n },\n },\n DisplayName = \"My metric\",\n },\n ValueExtractor = \"EXTRACT(jsonPayload.request)\",\n LabelExtractors = \n {\n { \"mass\", \"EXTRACT(jsonPayload.request)\" },\n { \"sku\", \"EXTRACT(jsonPayload.id)\" },\n },\n BucketOptions = new Gcp.Logging.Inputs.MetricBucketOptionsArgs\n {\n LinearBuckets = new Gcp.Logging.Inputs.MetricBucketOptionsLinearBucketsArgs\n {\n NumFiniteBuckets = 3,\n Width = 1,\n Offset = 1,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\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 := logging.NewMetric(ctx, \"logging_metric\", \u0026logging.MetricArgs{\n\t\t\tName: pulumi.String(\"my-(custom)/metric\"),\n\t\t\tFilter: pulumi.String(\"resource.type=gae_app AND severity\u003e=ERROR\"),\n\t\t\tMetricDescriptor: \u0026logging.MetricMetricDescriptorArgs{\n\t\t\t\tMetricKind: pulumi.String(\"DELTA\"),\n\t\t\t\tValueType: pulumi.String(\"DISTRIBUTION\"),\n\t\t\t\tUnit: pulumi.String(\"1\"),\n\t\t\t\tLabels: logging.MetricMetricDescriptorLabelArray{\n\t\t\t\t\t\u0026logging.MetricMetricDescriptorLabelArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"mass\"),\n\t\t\t\t\t\tValueType: pulumi.String(\"STRING\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"amount of matter\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026logging.MetricMetricDescriptorLabelArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sku\"),\n\t\t\t\t\t\tValueType: pulumi.String(\"INT64\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"Identifying number for item\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDisplayName: pulumi.String(\"My metric\"),\n\t\t\t},\n\t\t\tValueExtractor: pulumi.String(\"EXTRACT(jsonPayload.request)\"),\n\t\t\tLabelExtractors: pulumi.StringMap{\n\t\t\t\t\"mass\": pulumi.String(\"EXTRACT(jsonPayload.request)\"),\n\t\t\t\t\"sku\": pulumi.String(\"EXTRACT(jsonPayload.id)\"),\n\t\t\t},\n\t\t\tBucketOptions: \u0026logging.MetricBucketOptionsArgs{\n\t\t\t\tLinearBuckets: \u0026logging.MetricBucketOptionsLinearBucketsArgs{\n\t\t\t\t\tNumFiniteBuckets: pulumi.Int(3),\n\t\t\t\t\tWidth: pulumi.Float64(1),\n\t\t\t\t\tOffset: pulumi.Float64(1),\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.logging.Metric;\nimport com.pulumi.gcp.logging.MetricArgs;\nimport com.pulumi.gcp.logging.inputs.MetricMetricDescriptorArgs;\nimport com.pulumi.gcp.logging.inputs.MetricBucketOptionsArgs;\nimport com.pulumi.gcp.logging.inputs.MetricBucketOptionsLinearBucketsArgs;\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 loggingMetric = new Metric(\"loggingMetric\", MetricArgs.builder()\n .name(\"my-(custom)/metric\")\n .filter(\"resource.type=gae_app AND severity\u003e=ERROR\")\n .metricDescriptor(MetricMetricDescriptorArgs.builder()\n .metricKind(\"DELTA\")\n .valueType(\"DISTRIBUTION\")\n .unit(\"1\")\n .labels( \n MetricMetricDescriptorLabelArgs.builder()\n .key(\"mass\")\n .valueType(\"STRING\")\n .description(\"amount of matter\")\n .build(),\n MetricMetricDescriptorLabelArgs.builder()\n .key(\"sku\")\n .valueType(\"INT64\")\n .description(\"Identifying number for item\")\n .build())\n .displayName(\"My metric\")\n .build())\n .valueExtractor(\"EXTRACT(jsonPayload.request)\")\n .labelExtractors(Map.ofEntries(\n Map.entry(\"mass\", \"EXTRACT(jsonPayload.request)\"),\n Map.entry(\"sku\", \"EXTRACT(jsonPayload.id)\")\n ))\n .bucketOptions(MetricBucketOptionsArgs.builder()\n .linearBuckets(MetricBucketOptionsLinearBucketsArgs.builder()\n .numFiniteBuckets(3)\n .width(1)\n .offset(1)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n loggingMetric:\n type: gcp:logging:Metric\n name: logging_metric\n properties:\n name: my-(custom)/metric\n filter: resource.type=gae_app AND severity\u003e=ERROR\n metricDescriptor:\n metricKind: DELTA\n valueType: DISTRIBUTION\n unit: '1'\n labels:\n - key: mass\n valueType: STRING\n description: amount of matter\n - key: sku\n valueType: INT64\n description: Identifying number for item\n displayName: My metric\n valueExtractor: EXTRACT(jsonPayload.request)\n labelExtractors:\n mass: EXTRACT(jsonPayload.request)\n sku: EXTRACT(jsonPayload.id)\n bucketOptions:\n linearBuckets:\n numFiniteBuckets: 3\n width: 1\n offset: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Logging Metric Counter Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst loggingMetric = new gcp.logging.Metric(\"logging_metric\", {\n name: \"my-(custom)/metric\",\n filter: \"resource.type=gae_app AND severity\u003e=ERROR\",\n metricDescriptor: {\n metricKind: \"DELTA\",\n valueType: \"INT64\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlogging_metric = gcp.logging.Metric(\"logging_metric\",\n name=\"my-(custom)/metric\",\n filter=\"resource.type=gae_app AND severity\u003e=ERROR\",\n metric_descriptor={\n \"metricKind\": \"DELTA\",\n \"valueType\": \"INT64\",\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 loggingMetric = new Gcp.Logging.Metric(\"logging_metric\", new()\n {\n Name = \"my-(custom)/metric\",\n Filter = \"resource.type=gae_app AND severity\u003e=ERROR\",\n MetricDescriptor = new Gcp.Logging.Inputs.MetricMetricDescriptorArgs\n {\n MetricKind = \"DELTA\",\n ValueType = \"INT64\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\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 := logging.NewMetric(ctx, \"logging_metric\", \u0026logging.MetricArgs{\n\t\t\tName: pulumi.String(\"my-(custom)/metric\"),\n\t\t\tFilter: pulumi.String(\"resource.type=gae_app AND severity\u003e=ERROR\"),\n\t\t\tMetricDescriptor: \u0026logging.MetricMetricDescriptorArgs{\n\t\t\t\tMetricKind: pulumi.String(\"DELTA\"),\n\t\t\t\tValueType: pulumi.String(\"INT64\"),\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.logging.Metric;\nimport com.pulumi.gcp.logging.MetricArgs;\nimport com.pulumi.gcp.logging.inputs.MetricMetricDescriptorArgs;\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 loggingMetric = new Metric(\"loggingMetric\", MetricArgs.builder()\n .name(\"my-(custom)/metric\")\n .filter(\"resource.type=gae_app AND severity\u003e=ERROR\")\n .metricDescriptor(MetricMetricDescriptorArgs.builder()\n .metricKind(\"DELTA\")\n .valueType(\"INT64\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n loggingMetric:\n type: gcp:logging:Metric\n name: logging_metric\n properties:\n name: my-(custom)/metric\n filter: resource.type=gae_app AND severity\u003e=ERROR\n metricDescriptor:\n metricKind: DELTA\n valueType: INT64\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Logging Metric Counter Labels\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst loggingMetric = new gcp.logging.Metric(\"logging_metric\", {\n name: \"my-(custom)/metric\",\n filter: \"resource.type=gae_app AND severity\u003e=ERROR\",\n metricDescriptor: {\n metricKind: \"DELTA\",\n valueType: \"INT64\",\n labels: [{\n key: \"mass\",\n valueType: \"STRING\",\n description: \"amount of matter\",\n }],\n },\n labelExtractors: {\n mass: \"EXTRACT(jsonPayload.request)\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlogging_metric = gcp.logging.Metric(\"logging_metric\",\n name=\"my-(custom)/metric\",\n filter=\"resource.type=gae_app AND severity\u003e=ERROR\",\n metric_descriptor={\n \"metricKind\": \"DELTA\",\n \"valueType\": \"INT64\",\n \"labels\": [{\n \"key\": \"mass\",\n \"valueType\": \"STRING\",\n \"description\": \"amount of matter\",\n }],\n },\n label_extractors={\n \"mass\": \"EXTRACT(jsonPayload.request)\",\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 loggingMetric = new Gcp.Logging.Metric(\"logging_metric\", new()\n {\n Name = \"my-(custom)/metric\",\n Filter = \"resource.type=gae_app AND severity\u003e=ERROR\",\n MetricDescriptor = new Gcp.Logging.Inputs.MetricMetricDescriptorArgs\n {\n MetricKind = \"DELTA\",\n ValueType = \"INT64\",\n Labels = new[]\n {\n new Gcp.Logging.Inputs.MetricMetricDescriptorLabelArgs\n {\n Key = \"mass\",\n ValueType = \"STRING\",\n Description = \"amount of matter\",\n },\n },\n },\n LabelExtractors = \n {\n { \"mass\", \"EXTRACT(jsonPayload.request)\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\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 := logging.NewMetric(ctx, \"logging_metric\", \u0026logging.MetricArgs{\n\t\t\tName: pulumi.String(\"my-(custom)/metric\"),\n\t\t\tFilter: pulumi.String(\"resource.type=gae_app AND severity\u003e=ERROR\"),\n\t\t\tMetricDescriptor: \u0026logging.MetricMetricDescriptorArgs{\n\t\t\t\tMetricKind: pulumi.String(\"DELTA\"),\n\t\t\t\tValueType: pulumi.String(\"INT64\"),\n\t\t\t\tLabels: logging.MetricMetricDescriptorLabelArray{\n\t\t\t\t\t\u0026logging.MetricMetricDescriptorLabelArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"mass\"),\n\t\t\t\t\t\tValueType: pulumi.String(\"STRING\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"amount of matter\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabelExtractors: pulumi.StringMap{\n\t\t\t\t\"mass\": pulumi.String(\"EXTRACT(jsonPayload.request)\"),\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.logging.Metric;\nimport com.pulumi.gcp.logging.MetricArgs;\nimport com.pulumi.gcp.logging.inputs.MetricMetricDescriptorArgs;\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 loggingMetric = new Metric(\"loggingMetric\", MetricArgs.builder()\n .name(\"my-(custom)/metric\")\n .filter(\"resource.type=gae_app AND severity\u003e=ERROR\")\n .metricDescriptor(MetricMetricDescriptorArgs.builder()\n .metricKind(\"DELTA\")\n .valueType(\"INT64\")\n .labels(MetricMetricDescriptorLabelArgs.builder()\n .key(\"mass\")\n .valueType(\"STRING\")\n .description(\"amount of matter\")\n .build())\n .build())\n .labelExtractors(Map.of(\"mass\", \"EXTRACT(jsonPayload.request)\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n loggingMetric:\n type: gcp:logging:Metric\n name: logging_metric\n properties:\n name: my-(custom)/metric\n filter: resource.type=gae_app AND severity\u003e=ERROR\n metricDescriptor:\n metricKind: DELTA\n valueType: INT64\n labels:\n - key: mass\n valueType: STRING\n description: amount of matter\n labelExtractors:\n mass: EXTRACT(jsonPayload.request)\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Logging Metric Logging Bucket\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst loggingMetric = new gcp.logging.ProjectBucketConfig(\"logging_metric\", {\n location: \"global\",\n project: \"my-project-name\",\n bucketId: \"_Default\",\n});\nconst loggingMetricMetric = new gcp.logging.Metric(\"logging_metric\", {\n name: \"my-(custom)/metric\",\n filter: \"resource.type=gae_app AND severity\u003e=ERROR\",\n bucketName: loggingMetric.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlogging_metric = gcp.logging.ProjectBucketConfig(\"logging_metric\",\n location=\"global\",\n project=\"my-project-name\",\n bucket_id=\"_Default\")\nlogging_metric_metric = gcp.logging.Metric(\"logging_metric\",\n name=\"my-(custom)/metric\",\n filter=\"resource.type=gae_app AND severity\u003e=ERROR\",\n bucket_name=logging_metric.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 loggingMetric = new Gcp.Logging.ProjectBucketConfig(\"logging_metric\", new()\n {\n Location = \"global\",\n Project = \"my-project-name\",\n BucketId = \"_Default\",\n });\n\n var loggingMetricMetric = new Gcp.Logging.Metric(\"logging_metric\", new()\n {\n Name = \"my-(custom)/metric\",\n Filter = \"resource.type=gae_app AND severity\u003e=ERROR\",\n BucketName = loggingMetric.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tloggingMetric, err := logging.NewProjectBucketConfig(ctx, \"logging_metric\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tBucketId: pulumi.String(\"_Default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewMetric(ctx, \"logging_metric\", \u0026logging.MetricArgs{\n\t\t\tName: pulumi.String(\"my-(custom)/metric\"),\n\t\t\tFilter: pulumi.String(\"resource.type=gae_app AND severity\u003e=ERROR\"),\n\t\t\tBucketName: loggingMetric.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.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\nimport com.pulumi.gcp.logging.Metric;\nimport com.pulumi.gcp.logging.MetricArgs;\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 loggingMetric = new ProjectBucketConfig(\"loggingMetric\", ProjectBucketConfigArgs.builder()\n .location(\"global\")\n .project(\"my-project-name\")\n .bucketId(\"_Default\")\n .build());\n\n var loggingMetricMetric = new Metric(\"loggingMetricMetric\", MetricArgs.builder()\n .name(\"my-(custom)/metric\")\n .filter(\"resource.type=gae_app AND severity\u003e=ERROR\")\n .bucketName(loggingMetric.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n loggingMetric:\n type: gcp:logging:ProjectBucketConfig\n name: logging_metric\n properties:\n location: global\n project: my-project-name\n bucketId: _Default\n loggingMetricMetric:\n type: gcp:logging:Metric\n name: logging_metric\n properties:\n name: my-(custom)/metric\n filter: resource.type=gae_app AND severity\u003e=ERROR\n bucketName: ${loggingMetric.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Logging Metric Disabled\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst loggingMetric = new gcp.logging.Metric(\"logging_metric\", {\n name: \"my-(custom)/metric\",\n filter: \"resource.type=gae_app AND severity\u003e=ERROR\",\n metricDescriptor: {\n metricKind: \"DELTA\",\n valueType: \"INT64\",\n },\n disabled: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlogging_metric = gcp.logging.Metric(\"logging_metric\",\n name=\"my-(custom)/metric\",\n filter=\"resource.type=gae_app AND severity\u003e=ERROR\",\n metric_descriptor={\n \"metricKind\": \"DELTA\",\n \"valueType\": \"INT64\",\n },\n disabled=True)\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 loggingMetric = new Gcp.Logging.Metric(\"logging_metric\", new()\n {\n Name = \"my-(custom)/metric\",\n Filter = \"resource.type=gae_app AND severity\u003e=ERROR\",\n MetricDescriptor = new Gcp.Logging.Inputs.MetricMetricDescriptorArgs\n {\n MetricKind = \"DELTA\",\n ValueType = \"INT64\",\n },\n Disabled = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\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 := logging.NewMetric(ctx, \"logging_metric\", \u0026logging.MetricArgs{\n\t\t\tName: pulumi.String(\"my-(custom)/metric\"),\n\t\t\tFilter: pulumi.String(\"resource.type=gae_app AND severity\u003e=ERROR\"),\n\t\t\tMetricDescriptor: \u0026logging.MetricMetricDescriptorArgs{\n\t\t\t\tMetricKind: pulumi.String(\"DELTA\"),\n\t\t\t\tValueType: pulumi.String(\"INT64\"),\n\t\t\t},\n\t\t\tDisabled: pulumi.Bool(true),\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.logging.Metric;\nimport com.pulumi.gcp.logging.MetricArgs;\nimport com.pulumi.gcp.logging.inputs.MetricMetricDescriptorArgs;\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 loggingMetric = new Metric(\"loggingMetric\", MetricArgs.builder()\n .name(\"my-(custom)/metric\")\n .filter(\"resource.type=gae_app AND severity\u003e=ERROR\")\n .metricDescriptor(MetricMetricDescriptorArgs.builder()\n .metricKind(\"DELTA\")\n .valueType(\"INT64\")\n .build())\n .disabled(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n loggingMetric:\n type: gcp:logging:Metric\n name: logging_metric\n properties:\n name: my-(custom)/metric\n filter: resource.type=gae_app AND severity\u003e=ERROR\n metricDescriptor:\n metricKind: DELTA\n valueType: INT64\n disabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMetric can be imported using any of these accepted formats:\n\n* `{{project}} {{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Metric can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/metric:Metric default {{project}} {{name}}\n```\n\n```sh\n$ pulumi import gcp:logging/metric:Metric default {{name}}\n```\n\n", + "description": "Logs-based metric can also be used to extract values from logs and create a a distribution\nof the values. The distribution records the statistics of the extracted values along with\nan optional histogram of the values as specified by the bucket options.\n\n\nTo get more information about Metric, see:\n\n* [API documentation](https://cloud.google.com/logging/docs/reference/v2/rest/v2/projects.metrics/create)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/logging/docs/apis)\n\n## Example Usage\n\n### Logging Metric Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst loggingMetric = new gcp.logging.Metric(\"logging_metric\", {\n name: \"my-(custom)/metric\",\n filter: \"resource.type=gae_app AND severity\u003e=ERROR\",\n metricDescriptor: {\n metricKind: \"DELTA\",\n valueType: \"DISTRIBUTION\",\n unit: \"1\",\n labels: [\n {\n key: \"mass\",\n valueType: \"STRING\",\n description: \"amount of matter\",\n },\n {\n key: \"sku\",\n valueType: \"INT64\",\n description: \"Identifying number for item\",\n },\n ],\n displayName: \"My metric\",\n },\n valueExtractor: \"EXTRACT(jsonPayload.request)\",\n labelExtractors: {\n mass: \"EXTRACT(jsonPayload.request)\",\n sku: \"EXTRACT(jsonPayload.id)\",\n },\n bucketOptions: {\n linearBuckets: {\n numFiniteBuckets: 3,\n width: 1,\n offset: 1,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlogging_metric = gcp.logging.Metric(\"logging_metric\",\n name=\"my-(custom)/metric\",\n filter=\"resource.type=gae_app AND severity\u003e=ERROR\",\n metric_descriptor={\n \"metric_kind\": \"DELTA\",\n \"value_type\": \"DISTRIBUTION\",\n \"unit\": \"1\",\n \"labels\": [\n {\n \"key\": \"mass\",\n \"value_type\": \"STRING\",\n \"description\": \"amount of matter\",\n },\n {\n \"key\": \"sku\",\n \"value_type\": \"INT64\",\n \"description\": \"Identifying number for item\",\n },\n ],\n \"display_name\": \"My metric\",\n },\n value_extractor=\"EXTRACT(jsonPayload.request)\",\n label_extractors={\n \"mass\": \"EXTRACT(jsonPayload.request)\",\n \"sku\": \"EXTRACT(jsonPayload.id)\",\n },\n bucket_options={\n \"linear_buckets\": {\n \"num_finite_buckets\": 3,\n \"width\": 1,\n \"offset\": 1,\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 loggingMetric = new Gcp.Logging.Metric(\"logging_metric\", new()\n {\n Name = \"my-(custom)/metric\",\n Filter = \"resource.type=gae_app AND severity\u003e=ERROR\",\n MetricDescriptor = new Gcp.Logging.Inputs.MetricMetricDescriptorArgs\n {\n MetricKind = \"DELTA\",\n ValueType = \"DISTRIBUTION\",\n Unit = \"1\",\n Labels = new[]\n {\n new Gcp.Logging.Inputs.MetricMetricDescriptorLabelArgs\n {\n Key = \"mass\",\n ValueType = \"STRING\",\n Description = \"amount of matter\",\n },\n new Gcp.Logging.Inputs.MetricMetricDescriptorLabelArgs\n {\n Key = \"sku\",\n ValueType = \"INT64\",\n Description = \"Identifying number for item\",\n },\n },\n DisplayName = \"My metric\",\n },\n ValueExtractor = \"EXTRACT(jsonPayload.request)\",\n LabelExtractors = \n {\n { \"mass\", \"EXTRACT(jsonPayload.request)\" },\n { \"sku\", \"EXTRACT(jsonPayload.id)\" },\n },\n BucketOptions = new Gcp.Logging.Inputs.MetricBucketOptionsArgs\n {\n LinearBuckets = new Gcp.Logging.Inputs.MetricBucketOptionsLinearBucketsArgs\n {\n NumFiniteBuckets = 3,\n Width = 1,\n Offset = 1,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\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 := logging.NewMetric(ctx, \"logging_metric\", \u0026logging.MetricArgs{\n\t\t\tName: pulumi.String(\"my-(custom)/metric\"),\n\t\t\tFilter: pulumi.String(\"resource.type=gae_app AND severity\u003e=ERROR\"),\n\t\t\tMetricDescriptor: \u0026logging.MetricMetricDescriptorArgs{\n\t\t\t\tMetricKind: pulumi.String(\"DELTA\"),\n\t\t\t\tValueType: pulumi.String(\"DISTRIBUTION\"),\n\t\t\t\tUnit: pulumi.String(\"1\"),\n\t\t\t\tLabels: logging.MetricMetricDescriptorLabelArray{\n\t\t\t\t\t\u0026logging.MetricMetricDescriptorLabelArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"mass\"),\n\t\t\t\t\t\tValueType: pulumi.String(\"STRING\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"amount of matter\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026logging.MetricMetricDescriptorLabelArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sku\"),\n\t\t\t\t\t\tValueType: pulumi.String(\"INT64\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"Identifying number for item\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDisplayName: pulumi.String(\"My metric\"),\n\t\t\t},\n\t\t\tValueExtractor: pulumi.String(\"EXTRACT(jsonPayload.request)\"),\n\t\t\tLabelExtractors: pulumi.StringMap{\n\t\t\t\t\"mass\": pulumi.String(\"EXTRACT(jsonPayload.request)\"),\n\t\t\t\t\"sku\": pulumi.String(\"EXTRACT(jsonPayload.id)\"),\n\t\t\t},\n\t\t\tBucketOptions: \u0026logging.MetricBucketOptionsArgs{\n\t\t\t\tLinearBuckets: \u0026logging.MetricBucketOptionsLinearBucketsArgs{\n\t\t\t\t\tNumFiniteBuckets: pulumi.Int(3),\n\t\t\t\t\tWidth: pulumi.Float64(1),\n\t\t\t\t\tOffset: pulumi.Float64(1),\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.logging.Metric;\nimport com.pulumi.gcp.logging.MetricArgs;\nimport com.pulumi.gcp.logging.inputs.MetricMetricDescriptorArgs;\nimport com.pulumi.gcp.logging.inputs.MetricBucketOptionsArgs;\nimport com.pulumi.gcp.logging.inputs.MetricBucketOptionsLinearBucketsArgs;\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 loggingMetric = new Metric(\"loggingMetric\", MetricArgs.builder()\n .name(\"my-(custom)/metric\")\n .filter(\"resource.type=gae_app AND severity\u003e=ERROR\")\n .metricDescriptor(MetricMetricDescriptorArgs.builder()\n .metricKind(\"DELTA\")\n .valueType(\"DISTRIBUTION\")\n .unit(\"1\")\n .labels( \n MetricMetricDescriptorLabelArgs.builder()\n .key(\"mass\")\n .valueType(\"STRING\")\n .description(\"amount of matter\")\n .build(),\n MetricMetricDescriptorLabelArgs.builder()\n .key(\"sku\")\n .valueType(\"INT64\")\n .description(\"Identifying number for item\")\n .build())\n .displayName(\"My metric\")\n .build())\n .valueExtractor(\"EXTRACT(jsonPayload.request)\")\n .labelExtractors(Map.ofEntries(\n Map.entry(\"mass\", \"EXTRACT(jsonPayload.request)\"),\n Map.entry(\"sku\", \"EXTRACT(jsonPayload.id)\")\n ))\n .bucketOptions(MetricBucketOptionsArgs.builder()\n .linearBuckets(MetricBucketOptionsLinearBucketsArgs.builder()\n .numFiniteBuckets(3)\n .width(1)\n .offset(1)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n loggingMetric:\n type: gcp:logging:Metric\n name: logging_metric\n properties:\n name: my-(custom)/metric\n filter: resource.type=gae_app AND severity\u003e=ERROR\n metricDescriptor:\n metricKind: DELTA\n valueType: DISTRIBUTION\n unit: '1'\n labels:\n - key: mass\n valueType: STRING\n description: amount of matter\n - key: sku\n valueType: INT64\n description: Identifying number for item\n displayName: My metric\n valueExtractor: EXTRACT(jsonPayload.request)\n labelExtractors:\n mass: EXTRACT(jsonPayload.request)\n sku: EXTRACT(jsonPayload.id)\n bucketOptions:\n linearBuckets:\n numFiniteBuckets: 3\n width: 1\n offset: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Logging Metric Counter Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst loggingMetric = new gcp.logging.Metric(\"logging_metric\", {\n name: \"my-(custom)/metric\",\n filter: \"resource.type=gae_app AND severity\u003e=ERROR\",\n metricDescriptor: {\n metricKind: \"DELTA\",\n valueType: \"INT64\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlogging_metric = gcp.logging.Metric(\"logging_metric\",\n name=\"my-(custom)/metric\",\n filter=\"resource.type=gae_app AND severity\u003e=ERROR\",\n metric_descriptor={\n \"metric_kind\": \"DELTA\",\n \"value_type\": \"INT64\",\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 loggingMetric = new Gcp.Logging.Metric(\"logging_metric\", new()\n {\n Name = \"my-(custom)/metric\",\n Filter = \"resource.type=gae_app AND severity\u003e=ERROR\",\n MetricDescriptor = new Gcp.Logging.Inputs.MetricMetricDescriptorArgs\n {\n MetricKind = \"DELTA\",\n ValueType = \"INT64\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\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 := logging.NewMetric(ctx, \"logging_metric\", \u0026logging.MetricArgs{\n\t\t\tName: pulumi.String(\"my-(custom)/metric\"),\n\t\t\tFilter: pulumi.String(\"resource.type=gae_app AND severity\u003e=ERROR\"),\n\t\t\tMetricDescriptor: \u0026logging.MetricMetricDescriptorArgs{\n\t\t\t\tMetricKind: pulumi.String(\"DELTA\"),\n\t\t\t\tValueType: pulumi.String(\"INT64\"),\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.logging.Metric;\nimport com.pulumi.gcp.logging.MetricArgs;\nimport com.pulumi.gcp.logging.inputs.MetricMetricDescriptorArgs;\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 loggingMetric = new Metric(\"loggingMetric\", MetricArgs.builder()\n .name(\"my-(custom)/metric\")\n .filter(\"resource.type=gae_app AND severity\u003e=ERROR\")\n .metricDescriptor(MetricMetricDescriptorArgs.builder()\n .metricKind(\"DELTA\")\n .valueType(\"INT64\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n loggingMetric:\n type: gcp:logging:Metric\n name: logging_metric\n properties:\n name: my-(custom)/metric\n filter: resource.type=gae_app AND severity\u003e=ERROR\n metricDescriptor:\n metricKind: DELTA\n valueType: INT64\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Logging Metric Counter Labels\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst loggingMetric = new gcp.logging.Metric(\"logging_metric\", {\n name: \"my-(custom)/metric\",\n filter: \"resource.type=gae_app AND severity\u003e=ERROR\",\n metricDescriptor: {\n metricKind: \"DELTA\",\n valueType: \"INT64\",\n labels: [{\n key: \"mass\",\n valueType: \"STRING\",\n description: \"amount of matter\",\n }],\n },\n labelExtractors: {\n mass: \"EXTRACT(jsonPayload.request)\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlogging_metric = gcp.logging.Metric(\"logging_metric\",\n name=\"my-(custom)/metric\",\n filter=\"resource.type=gae_app AND severity\u003e=ERROR\",\n metric_descriptor={\n \"metric_kind\": \"DELTA\",\n \"value_type\": \"INT64\",\n \"labels\": [{\n \"key\": \"mass\",\n \"value_type\": \"STRING\",\n \"description\": \"amount of matter\",\n }],\n },\n label_extractors={\n \"mass\": \"EXTRACT(jsonPayload.request)\",\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 loggingMetric = new Gcp.Logging.Metric(\"logging_metric\", new()\n {\n Name = \"my-(custom)/metric\",\n Filter = \"resource.type=gae_app AND severity\u003e=ERROR\",\n MetricDescriptor = new Gcp.Logging.Inputs.MetricMetricDescriptorArgs\n {\n MetricKind = \"DELTA\",\n ValueType = \"INT64\",\n Labels = new[]\n {\n new Gcp.Logging.Inputs.MetricMetricDescriptorLabelArgs\n {\n Key = \"mass\",\n ValueType = \"STRING\",\n Description = \"amount of matter\",\n },\n },\n },\n LabelExtractors = \n {\n { \"mass\", \"EXTRACT(jsonPayload.request)\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\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 := logging.NewMetric(ctx, \"logging_metric\", \u0026logging.MetricArgs{\n\t\t\tName: pulumi.String(\"my-(custom)/metric\"),\n\t\t\tFilter: pulumi.String(\"resource.type=gae_app AND severity\u003e=ERROR\"),\n\t\t\tMetricDescriptor: \u0026logging.MetricMetricDescriptorArgs{\n\t\t\t\tMetricKind: pulumi.String(\"DELTA\"),\n\t\t\t\tValueType: pulumi.String(\"INT64\"),\n\t\t\t\tLabels: logging.MetricMetricDescriptorLabelArray{\n\t\t\t\t\t\u0026logging.MetricMetricDescriptorLabelArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"mass\"),\n\t\t\t\t\t\tValueType: pulumi.String(\"STRING\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"amount of matter\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabelExtractors: pulumi.StringMap{\n\t\t\t\t\"mass\": pulumi.String(\"EXTRACT(jsonPayload.request)\"),\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.logging.Metric;\nimport com.pulumi.gcp.logging.MetricArgs;\nimport com.pulumi.gcp.logging.inputs.MetricMetricDescriptorArgs;\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 loggingMetric = new Metric(\"loggingMetric\", MetricArgs.builder()\n .name(\"my-(custom)/metric\")\n .filter(\"resource.type=gae_app AND severity\u003e=ERROR\")\n .metricDescriptor(MetricMetricDescriptorArgs.builder()\n .metricKind(\"DELTA\")\n .valueType(\"INT64\")\n .labels(MetricMetricDescriptorLabelArgs.builder()\n .key(\"mass\")\n .valueType(\"STRING\")\n .description(\"amount of matter\")\n .build())\n .build())\n .labelExtractors(Map.of(\"mass\", \"EXTRACT(jsonPayload.request)\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n loggingMetric:\n type: gcp:logging:Metric\n name: logging_metric\n properties:\n name: my-(custom)/metric\n filter: resource.type=gae_app AND severity\u003e=ERROR\n metricDescriptor:\n metricKind: DELTA\n valueType: INT64\n labels:\n - key: mass\n valueType: STRING\n description: amount of matter\n labelExtractors:\n mass: EXTRACT(jsonPayload.request)\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Logging Metric Logging Bucket\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst loggingMetric = new gcp.logging.ProjectBucketConfig(\"logging_metric\", {\n location: \"global\",\n project: \"my-project-name\",\n bucketId: \"_Default\",\n});\nconst loggingMetricMetric = new gcp.logging.Metric(\"logging_metric\", {\n name: \"my-(custom)/metric\",\n filter: \"resource.type=gae_app AND severity\u003e=ERROR\",\n bucketName: loggingMetric.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlogging_metric = gcp.logging.ProjectBucketConfig(\"logging_metric\",\n location=\"global\",\n project=\"my-project-name\",\n bucket_id=\"_Default\")\nlogging_metric_metric = gcp.logging.Metric(\"logging_metric\",\n name=\"my-(custom)/metric\",\n filter=\"resource.type=gae_app AND severity\u003e=ERROR\",\n bucket_name=logging_metric.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 loggingMetric = new Gcp.Logging.ProjectBucketConfig(\"logging_metric\", new()\n {\n Location = \"global\",\n Project = \"my-project-name\",\n BucketId = \"_Default\",\n });\n\n var loggingMetricMetric = new Gcp.Logging.Metric(\"logging_metric\", new()\n {\n Name = \"my-(custom)/metric\",\n Filter = \"resource.type=gae_app AND severity\u003e=ERROR\",\n BucketName = loggingMetric.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tloggingMetric, err := logging.NewProjectBucketConfig(ctx, \"logging_metric\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tBucketId: pulumi.String(\"_Default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewMetric(ctx, \"logging_metric\", \u0026logging.MetricArgs{\n\t\t\tName: pulumi.String(\"my-(custom)/metric\"),\n\t\t\tFilter: pulumi.String(\"resource.type=gae_app AND severity\u003e=ERROR\"),\n\t\t\tBucketName: loggingMetric.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.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\nimport com.pulumi.gcp.logging.Metric;\nimport com.pulumi.gcp.logging.MetricArgs;\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 loggingMetric = new ProjectBucketConfig(\"loggingMetric\", ProjectBucketConfigArgs.builder()\n .location(\"global\")\n .project(\"my-project-name\")\n .bucketId(\"_Default\")\n .build());\n\n var loggingMetricMetric = new Metric(\"loggingMetricMetric\", MetricArgs.builder()\n .name(\"my-(custom)/metric\")\n .filter(\"resource.type=gae_app AND severity\u003e=ERROR\")\n .bucketName(loggingMetric.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n loggingMetric:\n type: gcp:logging:ProjectBucketConfig\n name: logging_metric\n properties:\n location: global\n project: my-project-name\n bucketId: _Default\n loggingMetricMetric:\n type: gcp:logging:Metric\n name: logging_metric\n properties:\n name: my-(custom)/metric\n filter: resource.type=gae_app AND severity\u003e=ERROR\n bucketName: ${loggingMetric.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Logging Metric Disabled\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst loggingMetric = new gcp.logging.Metric(\"logging_metric\", {\n name: \"my-(custom)/metric\",\n filter: \"resource.type=gae_app AND severity\u003e=ERROR\",\n metricDescriptor: {\n metricKind: \"DELTA\",\n valueType: \"INT64\",\n },\n disabled: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlogging_metric = gcp.logging.Metric(\"logging_metric\",\n name=\"my-(custom)/metric\",\n filter=\"resource.type=gae_app AND severity\u003e=ERROR\",\n metric_descriptor={\n \"metric_kind\": \"DELTA\",\n \"value_type\": \"INT64\",\n },\n disabled=True)\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 loggingMetric = new Gcp.Logging.Metric(\"logging_metric\", new()\n {\n Name = \"my-(custom)/metric\",\n Filter = \"resource.type=gae_app AND severity\u003e=ERROR\",\n MetricDescriptor = new Gcp.Logging.Inputs.MetricMetricDescriptorArgs\n {\n MetricKind = \"DELTA\",\n ValueType = \"INT64\",\n },\n Disabled = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\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 := logging.NewMetric(ctx, \"logging_metric\", \u0026logging.MetricArgs{\n\t\t\tName: pulumi.String(\"my-(custom)/metric\"),\n\t\t\tFilter: pulumi.String(\"resource.type=gae_app AND severity\u003e=ERROR\"),\n\t\t\tMetricDescriptor: \u0026logging.MetricMetricDescriptorArgs{\n\t\t\t\tMetricKind: pulumi.String(\"DELTA\"),\n\t\t\t\tValueType: pulumi.String(\"INT64\"),\n\t\t\t},\n\t\t\tDisabled: pulumi.Bool(true),\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.logging.Metric;\nimport com.pulumi.gcp.logging.MetricArgs;\nimport com.pulumi.gcp.logging.inputs.MetricMetricDescriptorArgs;\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 loggingMetric = new Metric(\"loggingMetric\", MetricArgs.builder()\n .name(\"my-(custom)/metric\")\n .filter(\"resource.type=gae_app AND severity\u003e=ERROR\")\n .metricDescriptor(MetricMetricDescriptorArgs.builder()\n .metricKind(\"DELTA\")\n .valueType(\"INT64\")\n .build())\n .disabled(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n loggingMetric:\n type: gcp:logging:Metric\n name: logging_metric\n properties:\n name: my-(custom)/metric\n filter: resource.type=gae_app AND severity\u003e=ERROR\n metricDescriptor:\n metricKind: DELTA\n valueType: INT64\n disabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMetric can be imported using any of these accepted formats:\n\n* `{{project}} {{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Metric can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/metric:Metric default {{project}} {{name}}\n```\n\n```sh\n$ pulumi import gcp:logging/metric:Metric default {{name}}\n```\n\n", "properties": { "bucketName": { "type": "string", @@ -210164,7 +210164,7 @@ } }, "gcp:logging/organizationBucketConfig:OrganizationBucketConfig": { - "description": "Manages a organization-level logging bucket config. For more information see\n[the official logging documentation](https://cloud.google.com/logging/docs/) and\n[Storing Logs](https://cloud.google.com/logging/docs/storage).\n\n\u003e **Note:** Logging buckets are automatically created for a given folder, project, organization, billingAccount and cannot be deleted. Creating a resource of this type will acquire and update the resource that already exists at the desired location. These buckets cannot be removed so deleting this resource will remove the bucket config from your state but will leave the logging bucket unchanged. The buckets that are currently automatically created are \"_Default\" and \"_Required\".\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.organizations.getOrganization({\n organization: \"123456789\",\n});\nconst basic = new gcp.logging.OrganizationBucketConfig(\"basic\", {\n organization: _default.then(_default =\u003e _default.organization),\n location: \"global\",\n retentionDays: 30,\n bucketId: \"_Default\",\n indexConfigs: [{\n fieldPath: \"jsonPayload.request.status\",\n type: \"INDEX_TYPE_STRING\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.get_organization(organization=\"123456789\")\nbasic = gcp.logging.OrganizationBucketConfig(\"basic\",\n organization=default.organization,\n location=\"global\",\n retention_days=30,\n bucket_id=\"_Default\",\n index_configs=[{\n \"fieldPath\": \"jsonPayload.request.status\",\n \"type\": \"INDEX_TYPE_STRING\",\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 @default = Gcp.Organizations.GetOrganization.Invoke(new()\n {\n Organization = \"123456789\",\n });\n\n var basic = new Gcp.Logging.OrganizationBucketConfig(\"basic\", new()\n {\n Organization = @default.Apply(@default =\u003e @default.Apply(getOrganizationResult =\u003e getOrganizationResult.Organization)),\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"_Default\",\n IndexConfigs = new[]\n {\n new Gcp.Logging.Inputs.OrganizationBucketConfigIndexConfigArgs\n {\n FieldPath = \"jsonPayload.request.status\",\n Type = \"INDEX_TYPE_STRING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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_default, err := organizations.GetOrganization(ctx, \u0026organizations.GetOrganizationArgs{\n\t\t\tOrganization: pulumi.StringRef(\"123456789\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewOrganizationBucketConfig(ctx, \"basic\", \u0026logging.OrganizationBucketConfigArgs{\n\t\t\tOrganization: pulumi.String(_default.Organization),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"_Default\"),\n\t\t\tIndexConfigs: logging.OrganizationBucketConfigIndexConfigArray{\n\t\t\t\t\u0026logging.OrganizationBucketConfigIndexConfigArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"jsonPayload.request.status\"),\n\t\t\t\t\tType: pulumi.String(\"INDEX_TYPE_STRING\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetOrganizationArgs;\nimport com.pulumi.gcp.logging.OrganizationBucketConfig;\nimport com.pulumi.gcp.logging.OrganizationBucketConfigArgs;\nimport com.pulumi.gcp.logging.inputs.OrganizationBucketConfigIndexConfigArgs;\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 default = OrganizationsFunctions.getOrganization(GetOrganizationArgs.builder()\n .organization(\"123456789\")\n .build());\n\n var basic = new OrganizationBucketConfig(\"basic\", OrganizationBucketConfigArgs.builder()\n .organization(default_.organization())\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"_Default\")\n .indexConfigs(OrganizationBucketConfigIndexConfigArgs.builder()\n .fieldPath(\"jsonPayload.request.status\")\n .type(\"INDEX_TYPE_STRING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:logging:OrganizationBucketConfig\n properties:\n organization: ${default.organization}\n location: global\n retentionDays: 30\n bucketId: _Default\n indexConfigs:\n - fieldPath: jsonPayload.request.status\n type: INDEX_TYPE_STRING\nvariables:\n default:\n fn::invoke:\n Function: gcp:organizations:getOrganization\n Arguments:\n organization: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported using the following format:\n\n* `organizations/{{organization}}/locations/{{location}}/buckets/{{bucket_id}}`\n\nWhen using the `pulumi import` command, this resource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/organizationBucketConfig:OrganizationBucketConfig default organizations/{{organization}}/locations/{{location}}/buckets/{{bucket_id}}\n```\n\n", + "description": "Manages a organization-level logging bucket config. For more information see\n[the official logging documentation](https://cloud.google.com/logging/docs/) and\n[Storing Logs](https://cloud.google.com/logging/docs/storage).\n\n\u003e **Note:** Logging buckets are automatically created for a given folder, project, organization, billingAccount and cannot be deleted. Creating a resource of this type will acquire and update the resource that already exists at the desired location. These buckets cannot be removed so deleting this resource will remove the bucket config from your state but will leave the logging bucket unchanged. The buckets that are currently automatically created are \"_Default\" and \"_Required\".\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.organizations.getOrganization({\n organization: \"123456789\",\n});\nconst basic = new gcp.logging.OrganizationBucketConfig(\"basic\", {\n organization: _default.then(_default =\u003e _default.organization),\n location: \"global\",\n retentionDays: 30,\n bucketId: \"_Default\",\n indexConfigs: [{\n fieldPath: \"jsonPayload.request.status\",\n type: \"INDEX_TYPE_STRING\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.get_organization(organization=\"123456789\")\nbasic = gcp.logging.OrganizationBucketConfig(\"basic\",\n organization=default.organization,\n location=\"global\",\n retention_days=30,\n bucket_id=\"_Default\",\n index_configs=[{\n \"field_path\": \"jsonPayload.request.status\",\n \"type\": \"INDEX_TYPE_STRING\",\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 @default = Gcp.Organizations.GetOrganization.Invoke(new()\n {\n Organization = \"123456789\",\n });\n\n var basic = new Gcp.Logging.OrganizationBucketConfig(\"basic\", new()\n {\n Organization = @default.Apply(@default =\u003e @default.Apply(getOrganizationResult =\u003e getOrganizationResult.Organization)),\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"_Default\",\n IndexConfigs = new[]\n {\n new Gcp.Logging.Inputs.OrganizationBucketConfigIndexConfigArgs\n {\n FieldPath = \"jsonPayload.request.status\",\n Type = \"INDEX_TYPE_STRING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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_default, err := organizations.GetOrganization(ctx, \u0026organizations.GetOrganizationArgs{\n\t\t\tOrganization: pulumi.StringRef(\"123456789\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewOrganizationBucketConfig(ctx, \"basic\", \u0026logging.OrganizationBucketConfigArgs{\n\t\t\tOrganization: pulumi.String(_default.Organization),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"_Default\"),\n\t\t\tIndexConfigs: logging.OrganizationBucketConfigIndexConfigArray{\n\t\t\t\t\u0026logging.OrganizationBucketConfigIndexConfigArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"jsonPayload.request.status\"),\n\t\t\t\t\tType: pulumi.String(\"INDEX_TYPE_STRING\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetOrganizationArgs;\nimport com.pulumi.gcp.logging.OrganizationBucketConfig;\nimport com.pulumi.gcp.logging.OrganizationBucketConfigArgs;\nimport com.pulumi.gcp.logging.inputs.OrganizationBucketConfigIndexConfigArgs;\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 default = OrganizationsFunctions.getOrganization(GetOrganizationArgs.builder()\n .organization(\"123456789\")\n .build());\n\n var basic = new OrganizationBucketConfig(\"basic\", OrganizationBucketConfigArgs.builder()\n .organization(default_.organization())\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"_Default\")\n .indexConfigs(OrganizationBucketConfigIndexConfigArgs.builder()\n .fieldPath(\"jsonPayload.request.status\")\n .type(\"INDEX_TYPE_STRING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:logging:OrganizationBucketConfig\n properties:\n organization: ${default.organization}\n location: global\n retentionDays: 30\n bucketId: _Default\n indexConfigs:\n - fieldPath: jsonPayload.request.status\n type: INDEX_TYPE_STRING\nvariables:\n default:\n fn::invoke:\n Function: gcp:organizations:getOrganization\n Arguments:\n organization: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported using the following format:\n\n* `organizations/{{organization}}/locations/{{location}}/buckets/{{bucket_id}}`\n\nWhen using the `pulumi import` command, this resource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/organizationBucketConfig:OrganizationBucketConfig default organizations/{{organization}}/locations/{{location}}/buckets/{{bucket_id}}\n```\n\n", "properties": { "bucketId": { "type": "string", @@ -210654,7 +210654,7 @@ } }, "gcp:logging/projectBucketConfig:ProjectBucketConfig": { - "description": "Manages a project-level logging bucket config. For more information see\n[the official logging documentation](https://cloud.google.com/logging/docs/) and\n[Storing Logs](https://cloud.google.com/logging/docs/storage).\n\n\u003e **Note:** Logging buckets are automatically created for a given folder, project, organization, billingAccount and cannot be deleted. Creating a resource of this type will acquire and update the resource that already exists at the desired location. These buckets cannot be removed so deleting this resource will remove the bucket config from your state but will leave the logging bucket unchanged. The buckets that are currently automatically created are \"_Default\" and \"_Required\".\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.organizations.Project(\"default\", {\n projectId: \"your-project-id\",\n name: \"your-project-id\",\n orgId: \"123456789\",\n});\nconst basic = new gcp.logging.ProjectBucketConfig(\"basic\", {\n project: _default.projectId,\n location: \"global\",\n retentionDays: 30,\n bucketId: \"_Default\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.Project(\"default\",\n project_id=\"your-project-id\",\n name=\"your-project-id\",\n org_id=\"123456789\")\nbasic = gcp.logging.ProjectBucketConfig(\"basic\",\n project=default.project_id,\n location=\"global\",\n retention_days=30,\n bucket_id=\"_Default\")\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.Organizations.Project(\"default\", new()\n {\n ProjectId = \"your-project-id\",\n Name = \"your-project-id\",\n OrgId = \"123456789\",\n });\n\n var basic = new Gcp.Logging.ProjectBucketConfig(\"basic\", new()\n {\n Project = @default.ProjectId,\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"_Default\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewProject(ctx, \"default\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"your-project-id\"),\n\t\t\tName: pulumi.String(\"your-project-id\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewProjectBucketConfig(ctx, \"basic\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"_Default\"),\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.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\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 Project(\"default\", ProjectArgs.builder()\n .projectId(\"your-project-id\")\n .name(\"your-project-id\")\n .orgId(\"123456789\")\n .build());\n\n var basic = new ProjectBucketConfig(\"basic\", ProjectBucketConfigArgs.builder()\n .project(default_.projectId())\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"_Default\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:organizations:Project\n properties:\n projectId: your-project-id\n name: your-project-id\n orgId: '123456789'\n basic:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: ${default.projectId}\n location: global\n retentionDays: 30\n bucketId: _Default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate logging bucket with customId\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.logging.ProjectBucketConfig(\"basic\", {\n project: \"project_id\",\n location: \"global\",\n retentionDays: 30,\n bucketId: \"custom-bucket\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.logging.ProjectBucketConfig(\"basic\",\n project=\"project_id\",\n location=\"global\",\n retention_days=30,\n bucket_id=\"custom-bucket\")\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.Logging.ProjectBucketConfig(\"basic\", new()\n {\n Project = \"project_id\",\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"custom-bucket\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\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 := logging.NewProjectBucketConfig(ctx, \"basic\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: pulumi.String(\"project_id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"custom-bucket\"),\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.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\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 ProjectBucketConfig(\"basic\", ProjectBucketConfigArgs.builder()\n .project(\"project_id\")\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"custom-bucket\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: project_id\n location: global\n retentionDays: 30\n bucketId: custom-bucket\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate logging bucket with Log Analytics enabled\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst analytics_enabled_bucket = new gcp.logging.ProjectBucketConfig(\"analytics-enabled-bucket\", {\n project: \"project_id\",\n location: \"global\",\n retentionDays: 30,\n enableAnalytics: true,\n bucketId: \"custom-bucket\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nanalytics_enabled_bucket = gcp.logging.ProjectBucketConfig(\"analytics-enabled-bucket\",\n project=\"project_id\",\n location=\"global\",\n retention_days=30,\n enable_analytics=True,\n bucket_id=\"custom-bucket\")\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 analytics_enabled_bucket = new Gcp.Logging.ProjectBucketConfig(\"analytics-enabled-bucket\", new()\n {\n Project = \"project_id\",\n Location = \"global\",\n RetentionDays = 30,\n EnableAnalytics = true,\n BucketId = \"custom-bucket\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\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 := logging.NewProjectBucketConfig(ctx, \"analytics-enabled-bucket\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: pulumi.String(\"project_id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tEnableAnalytics: pulumi.Bool(true),\n\t\t\tBucketId: pulumi.String(\"custom-bucket\"),\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.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\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 analytics_enabled_bucket = new ProjectBucketConfig(\"analytics-enabled-bucket\", ProjectBucketConfigArgs.builder()\n .project(\"project_id\")\n .location(\"global\")\n .retentionDays(30)\n .enableAnalytics(true)\n .bucketId(\"custom-bucket\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n analytics-enabled-bucket:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: project_id\n location: global\n retentionDays: 30\n enableAnalytics: true\n bucketId: custom-bucket\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate logging bucket with customId and cmekSettings\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cmekSettings = gcp.logging.getProjectCmekSettings({\n project: \"project_id\",\n});\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"keyring-example\",\n location: \"us-central1\",\n});\nconst key = new gcp.kms.CryptoKey(\"key\", {\n name: \"crypto-key-example\",\n keyRing: keyring.id,\n rotationPeriod: \"7776000s\",\n});\nconst cryptoKeyBinding = new gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\", {\n cryptoKeyId: key.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [cmekSettings.then(cmekSettings =\u003e `serviceAccount:${cmekSettings.serviceAccountId}`)],\n});\nconst example_project_bucket_cmek_settings = new gcp.logging.ProjectBucketConfig(\"example-project-bucket-cmek-settings\", {\n project: \"project_id\",\n location: \"us-central1\",\n retentionDays: 30,\n bucketId: \"custom-bucket\",\n cmekSettings: {\n kmsKeyName: key.id,\n },\n}, {\n dependsOn: [cryptoKeyBinding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncmek_settings = gcp.logging.get_project_cmek_settings(project=\"project_id\")\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"keyring-example\",\n location=\"us-central1\")\nkey = gcp.kms.CryptoKey(\"key\",\n name=\"crypto-key-example\",\n key_ring=keyring.id,\n rotation_period=\"7776000s\")\ncrypto_key_binding = gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\",\n crypto_key_id=key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:{cmek_settings.service_account_id}\"])\nexample_project_bucket_cmek_settings = gcp.logging.ProjectBucketConfig(\"example-project-bucket-cmek-settings\",\n project=\"project_id\",\n location=\"us-central1\",\n retention_days=30,\n bucket_id=\"custom-bucket\",\n cmek_settings={\n \"kmsKeyName\": key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_binding]))\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 cmekSettings = Gcp.Logging.GetProjectCmekSettings.Invoke(new()\n {\n Project = \"project_id\",\n });\n\n var keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"keyring-example\",\n Location = \"us-central1\",\n });\n\n var key = new Gcp.Kms.CryptoKey(\"key\", new()\n {\n Name = \"crypto-key-example\",\n KeyRing = keyring.Id,\n RotationPeriod = \"7776000s\",\n });\n\n var cryptoKeyBinding = new Gcp.Kms.CryptoKeyIAMBinding(\"crypto_key_binding\", new()\n {\n CryptoKeyId = key.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:{cmekSettings.Apply(getProjectCmekSettingsResult =\u003e getProjectCmekSettingsResult.ServiceAccountId)}\",\n },\n });\n\n var example_project_bucket_cmek_settings = new Gcp.Logging.ProjectBucketConfig(\"example-project-bucket-cmek-settings\", new()\n {\n Project = \"project_id\",\n Location = \"us-central1\",\n RetentionDays = 30,\n BucketId = \"custom-bucket\",\n CmekSettings = new Gcp.Logging.Inputs.ProjectBucketConfigCmekSettingsArgs\n {\n KmsKeyName = key.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyBinding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcmekSettings, err := logging.GetProjectCmekSettings(ctx, \u0026logging.GetProjectCmekSettingsArgs{\n\t\t\tProject: \"project_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyring, err := kms.NewKeyRing(ctx, \"keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"keyring-example\"),\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\tkey, err := kms.NewCryptoKey(ctx, \"key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"crypto-key-example\"),\n\t\t\tKeyRing: keyring.ID(),\n\t\t\tRotationPeriod: pulumi.String(\"7776000s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyBinding, err := kms.NewCryptoKeyIAMBinding(ctx, \"crypto_key_binding\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: key.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:%v\", cmekSettings.ServiceAccountId)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewProjectBucketConfig(ctx, \"example-project-bucket-cmek-settings\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: pulumi.String(\"project_id\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"custom-bucket\"),\n\t\t\tCmekSettings: \u0026logging.ProjectBucketConfigCmekSettingsArgs{\n\t\t\t\tKmsKeyName: key.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyBinding,\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.logging.LoggingFunctions;\nimport com.pulumi.gcp.logging.inputs.GetProjectCmekSettingsArgs;\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.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\nimport com.pulumi.gcp.logging.inputs.ProjectBucketConfigCmekSettingsArgs;\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 cmekSettings = LoggingFunctions.getProjectCmekSettings(GetProjectCmekSettingsArgs.builder()\n .project(\"project_id\")\n .build());\n\n var keyring = new KeyRing(\"keyring\", KeyRingArgs.builder()\n .name(\"keyring-example\")\n .location(\"us-central1\")\n .build());\n\n var key = new CryptoKey(\"key\", CryptoKeyArgs.builder()\n .name(\"crypto-key-example\")\n .keyRing(keyring.id())\n .rotationPeriod(\"7776000s\")\n .build());\n\n var cryptoKeyBinding = new CryptoKeyIAMBinding(\"cryptoKeyBinding\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(key.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:%s\", cmekSettings.applyValue(getProjectCmekSettingsResult -\u003e getProjectCmekSettingsResult.serviceAccountId())))\n .build());\n\n var example_project_bucket_cmek_settings = new ProjectBucketConfig(\"example-project-bucket-cmek-settings\", ProjectBucketConfigArgs.builder()\n .project(\"project_id\")\n .location(\"us-central1\")\n .retentionDays(30)\n .bucketId(\"custom-bucket\")\n .cmekSettings(ProjectBucketConfigCmekSettingsArgs.builder()\n .kmsKeyName(key.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyBinding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: keyring-example\n location: us-central1\n key:\n type: gcp:kms:CryptoKey\n properties:\n name: crypto-key-example\n keyRing: ${keyring.id}\n rotationPeriod: 7776000s\n cryptoKeyBinding:\n type: gcp:kms:CryptoKeyIAMBinding\n name: crypto_key_binding\n properties:\n cryptoKeyId: ${key.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:${cmekSettings.serviceAccountId}\n example-project-bucket-cmek-settings:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: project_id\n location: us-central1\n retentionDays: 30\n bucketId: custom-bucket\n cmekSettings:\n kmsKeyName: ${key.id}\n options:\n dependson:\n - ${cryptoKeyBinding}\nvariables:\n cmekSettings:\n fn::invoke:\n Function: gcp:logging:getProjectCmekSettings\n Arguments:\n project: project_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate logging bucket with index configs\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example_project_bucket_index_configs = new gcp.logging.ProjectBucketConfig(\"example-project-bucket-index-configs\", {\n project: \"project_id\",\n location: \"global\",\n retentionDays: 30,\n bucketId: \"custom-bucket\",\n indexConfigs: [{\n fieldPath: \"jsonPayload.request.status\",\n type: \"INDEX_TYPE_STRING\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_project_bucket_index_configs = gcp.logging.ProjectBucketConfig(\"example-project-bucket-index-configs\",\n project=\"project_id\",\n location=\"global\",\n retention_days=30,\n bucket_id=\"custom-bucket\",\n index_configs=[{\n \"fieldPath\": \"jsonPayload.request.status\",\n \"type\": \"INDEX_TYPE_STRING\",\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_project_bucket_index_configs = new Gcp.Logging.ProjectBucketConfig(\"example-project-bucket-index-configs\", new()\n {\n Project = \"project_id\",\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"custom-bucket\",\n IndexConfigs = new[]\n {\n new Gcp.Logging.Inputs.ProjectBucketConfigIndexConfigArgs\n {\n FieldPath = \"jsonPayload.request.status\",\n Type = \"INDEX_TYPE_STRING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\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 := logging.NewProjectBucketConfig(ctx, \"example-project-bucket-index-configs\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: pulumi.String(\"project_id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"custom-bucket\"),\n\t\t\tIndexConfigs: logging.ProjectBucketConfigIndexConfigArray{\n\t\t\t\t\u0026logging.ProjectBucketConfigIndexConfigArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"jsonPayload.request.status\"),\n\t\t\t\t\tType: pulumi.String(\"INDEX_TYPE_STRING\"),\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.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\nimport com.pulumi.gcp.logging.inputs.ProjectBucketConfigIndexConfigArgs;\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_project_bucket_index_configs = new ProjectBucketConfig(\"example-project-bucket-index-configs\", ProjectBucketConfigArgs.builder()\n .project(\"project_id\")\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"custom-bucket\")\n .indexConfigs(ProjectBucketConfigIndexConfigArgs.builder()\n .fieldPath(\"jsonPayload.request.status\")\n .type(\"INDEX_TYPE_STRING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-project-bucket-index-configs:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: project_id\n location: global\n retentionDays: 30\n bucketId: custom-bucket\n indexConfigs:\n - fieldPath: jsonPayload.request.status\n type: INDEX_TYPE_STRING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported using the following format:\n\n* `projects/{{project}}/locations/{{location}}/buckets/{{bucket_id}}`\n\nWhen using the `pulumi import` command, this resource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/projectBucketConfig:ProjectBucketConfig default projects/{{project}}/locations/{{location}}/buckets/{{bucket_id}}\n```\n\n", + "description": "Manages a project-level logging bucket config. For more information see\n[the official logging documentation](https://cloud.google.com/logging/docs/) and\n[Storing Logs](https://cloud.google.com/logging/docs/storage).\n\n\u003e **Note:** Logging buckets are automatically created for a given folder, project, organization, billingAccount and cannot be deleted. Creating a resource of this type will acquire and update the resource that already exists at the desired location. These buckets cannot be removed so deleting this resource will remove the bucket config from your state but will leave the logging bucket unchanged. The buckets that are currently automatically created are \"_Default\" and \"_Required\".\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.organizations.Project(\"default\", {\n projectId: \"your-project-id\",\n name: \"your-project-id\",\n orgId: \"123456789\",\n});\nconst basic = new gcp.logging.ProjectBucketConfig(\"basic\", {\n project: _default.projectId,\n location: \"global\",\n retentionDays: 30,\n bucketId: \"_Default\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.Project(\"default\",\n project_id=\"your-project-id\",\n name=\"your-project-id\",\n org_id=\"123456789\")\nbasic = gcp.logging.ProjectBucketConfig(\"basic\",\n project=default.project_id,\n location=\"global\",\n retention_days=30,\n bucket_id=\"_Default\")\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.Organizations.Project(\"default\", new()\n {\n ProjectId = \"your-project-id\",\n Name = \"your-project-id\",\n OrgId = \"123456789\",\n });\n\n var basic = new Gcp.Logging.ProjectBucketConfig(\"basic\", new()\n {\n Project = @default.ProjectId,\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"_Default\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewProject(ctx, \"default\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"your-project-id\"),\n\t\t\tName: pulumi.String(\"your-project-id\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewProjectBucketConfig(ctx, \"basic\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"_Default\"),\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.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\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 Project(\"default\", ProjectArgs.builder()\n .projectId(\"your-project-id\")\n .name(\"your-project-id\")\n .orgId(\"123456789\")\n .build());\n\n var basic = new ProjectBucketConfig(\"basic\", ProjectBucketConfigArgs.builder()\n .project(default_.projectId())\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"_Default\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:organizations:Project\n properties:\n projectId: your-project-id\n name: your-project-id\n orgId: '123456789'\n basic:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: ${default.projectId}\n location: global\n retentionDays: 30\n bucketId: _Default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate logging bucket with customId\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.logging.ProjectBucketConfig(\"basic\", {\n project: \"project_id\",\n location: \"global\",\n retentionDays: 30,\n bucketId: \"custom-bucket\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.logging.ProjectBucketConfig(\"basic\",\n project=\"project_id\",\n location=\"global\",\n retention_days=30,\n bucket_id=\"custom-bucket\")\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.Logging.ProjectBucketConfig(\"basic\", new()\n {\n Project = \"project_id\",\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"custom-bucket\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\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 := logging.NewProjectBucketConfig(ctx, \"basic\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: pulumi.String(\"project_id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"custom-bucket\"),\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.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\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 ProjectBucketConfig(\"basic\", ProjectBucketConfigArgs.builder()\n .project(\"project_id\")\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"custom-bucket\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: project_id\n location: global\n retentionDays: 30\n bucketId: custom-bucket\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate logging bucket with Log Analytics enabled\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst analytics_enabled_bucket = new gcp.logging.ProjectBucketConfig(\"analytics-enabled-bucket\", {\n project: \"project_id\",\n location: \"global\",\n retentionDays: 30,\n enableAnalytics: true,\n bucketId: \"custom-bucket\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nanalytics_enabled_bucket = gcp.logging.ProjectBucketConfig(\"analytics-enabled-bucket\",\n project=\"project_id\",\n location=\"global\",\n retention_days=30,\n enable_analytics=True,\n bucket_id=\"custom-bucket\")\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 analytics_enabled_bucket = new Gcp.Logging.ProjectBucketConfig(\"analytics-enabled-bucket\", new()\n {\n Project = \"project_id\",\n Location = \"global\",\n RetentionDays = 30,\n EnableAnalytics = true,\n BucketId = \"custom-bucket\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\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 := logging.NewProjectBucketConfig(ctx, \"analytics-enabled-bucket\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: pulumi.String(\"project_id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tEnableAnalytics: pulumi.Bool(true),\n\t\t\tBucketId: pulumi.String(\"custom-bucket\"),\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.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\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 analytics_enabled_bucket = new ProjectBucketConfig(\"analytics-enabled-bucket\", ProjectBucketConfigArgs.builder()\n .project(\"project_id\")\n .location(\"global\")\n .retentionDays(30)\n .enableAnalytics(true)\n .bucketId(\"custom-bucket\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n analytics-enabled-bucket:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: project_id\n location: global\n retentionDays: 30\n enableAnalytics: true\n bucketId: custom-bucket\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate logging bucket with customId and cmekSettings\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cmekSettings = gcp.logging.getProjectCmekSettings({\n project: \"project_id\",\n});\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"keyring-example\",\n location: \"us-central1\",\n});\nconst key = new gcp.kms.CryptoKey(\"key\", {\n name: \"crypto-key-example\",\n keyRing: keyring.id,\n rotationPeriod: \"7776000s\",\n});\nconst cryptoKeyBinding = new gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\", {\n cryptoKeyId: key.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [cmekSettings.then(cmekSettings =\u003e `serviceAccount:${cmekSettings.serviceAccountId}`)],\n});\nconst example_project_bucket_cmek_settings = new gcp.logging.ProjectBucketConfig(\"example-project-bucket-cmek-settings\", {\n project: \"project_id\",\n location: \"us-central1\",\n retentionDays: 30,\n bucketId: \"custom-bucket\",\n cmekSettings: {\n kmsKeyName: key.id,\n },\n}, {\n dependsOn: [cryptoKeyBinding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncmek_settings = gcp.logging.get_project_cmek_settings(project=\"project_id\")\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"keyring-example\",\n location=\"us-central1\")\nkey = gcp.kms.CryptoKey(\"key\",\n name=\"crypto-key-example\",\n key_ring=keyring.id,\n rotation_period=\"7776000s\")\ncrypto_key_binding = gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\",\n crypto_key_id=key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:{cmek_settings.service_account_id}\"])\nexample_project_bucket_cmek_settings = gcp.logging.ProjectBucketConfig(\"example-project-bucket-cmek-settings\",\n project=\"project_id\",\n location=\"us-central1\",\n retention_days=30,\n bucket_id=\"custom-bucket\",\n cmek_settings={\n \"kms_key_name\": key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_binding]))\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 cmekSettings = Gcp.Logging.GetProjectCmekSettings.Invoke(new()\n {\n Project = \"project_id\",\n });\n\n var keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"keyring-example\",\n Location = \"us-central1\",\n });\n\n var key = new Gcp.Kms.CryptoKey(\"key\", new()\n {\n Name = \"crypto-key-example\",\n KeyRing = keyring.Id,\n RotationPeriod = \"7776000s\",\n });\n\n var cryptoKeyBinding = new Gcp.Kms.CryptoKeyIAMBinding(\"crypto_key_binding\", new()\n {\n CryptoKeyId = key.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:{cmekSettings.Apply(getProjectCmekSettingsResult =\u003e getProjectCmekSettingsResult.ServiceAccountId)}\",\n },\n });\n\n var example_project_bucket_cmek_settings = new Gcp.Logging.ProjectBucketConfig(\"example-project-bucket-cmek-settings\", new()\n {\n Project = \"project_id\",\n Location = \"us-central1\",\n RetentionDays = 30,\n BucketId = \"custom-bucket\",\n CmekSettings = new Gcp.Logging.Inputs.ProjectBucketConfigCmekSettingsArgs\n {\n KmsKeyName = key.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyBinding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcmekSettings, err := logging.GetProjectCmekSettings(ctx, \u0026logging.GetProjectCmekSettingsArgs{\n\t\t\tProject: \"project_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyring, err := kms.NewKeyRing(ctx, \"keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"keyring-example\"),\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\tkey, err := kms.NewCryptoKey(ctx, \"key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"crypto-key-example\"),\n\t\t\tKeyRing: keyring.ID(),\n\t\t\tRotationPeriod: pulumi.String(\"7776000s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyBinding, err := kms.NewCryptoKeyIAMBinding(ctx, \"crypto_key_binding\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: key.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:%v\", cmekSettings.ServiceAccountId)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewProjectBucketConfig(ctx, \"example-project-bucket-cmek-settings\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: pulumi.String(\"project_id\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"custom-bucket\"),\n\t\t\tCmekSettings: \u0026logging.ProjectBucketConfigCmekSettingsArgs{\n\t\t\t\tKmsKeyName: key.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyBinding,\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.logging.LoggingFunctions;\nimport com.pulumi.gcp.logging.inputs.GetProjectCmekSettingsArgs;\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.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\nimport com.pulumi.gcp.logging.inputs.ProjectBucketConfigCmekSettingsArgs;\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 cmekSettings = LoggingFunctions.getProjectCmekSettings(GetProjectCmekSettingsArgs.builder()\n .project(\"project_id\")\n .build());\n\n var keyring = new KeyRing(\"keyring\", KeyRingArgs.builder()\n .name(\"keyring-example\")\n .location(\"us-central1\")\n .build());\n\n var key = new CryptoKey(\"key\", CryptoKeyArgs.builder()\n .name(\"crypto-key-example\")\n .keyRing(keyring.id())\n .rotationPeriod(\"7776000s\")\n .build());\n\n var cryptoKeyBinding = new CryptoKeyIAMBinding(\"cryptoKeyBinding\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(key.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:%s\", cmekSettings.applyValue(getProjectCmekSettingsResult -\u003e getProjectCmekSettingsResult.serviceAccountId())))\n .build());\n\n var example_project_bucket_cmek_settings = new ProjectBucketConfig(\"example-project-bucket-cmek-settings\", ProjectBucketConfigArgs.builder()\n .project(\"project_id\")\n .location(\"us-central1\")\n .retentionDays(30)\n .bucketId(\"custom-bucket\")\n .cmekSettings(ProjectBucketConfigCmekSettingsArgs.builder()\n .kmsKeyName(key.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyBinding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: keyring-example\n location: us-central1\n key:\n type: gcp:kms:CryptoKey\n properties:\n name: crypto-key-example\n keyRing: ${keyring.id}\n rotationPeriod: 7776000s\n cryptoKeyBinding:\n type: gcp:kms:CryptoKeyIAMBinding\n name: crypto_key_binding\n properties:\n cryptoKeyId: ${key.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:${cmekSettings.serviceAccountId}\n example-project-bucket-cmek-settings:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: project_id\n location: us-central1\n retentionDays: 30\n bucketId: custom-bucket\n cmekSettings:\n kmsKeyName: ${key.id}\n options:\n dependson:\n - ${cryptoKeyBinding}\nvariables:\n cmekSettings:\n fn::invoke:\n Function: gcp:logging:getProjectCmekSettings\n Arguments:\n project: project_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate logging bucket with index configs\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example_project_bucket_index_configs = new gcp.logging.ProjectBucketConfig(\"example-project-bucket-index-configs\", {\n project: \"project_id\",\n location: \"global\",\n retentionDays: 30,\n bucketId: \"custom-bucket\",\n indexConfigs: [{\n fieldPath: \"jsonPayload.request.status\",\n type: \"INDEX_TYPE_STRING\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_project_bucket_index_configs = gcp.logging.ProjectBucketConfig(\"example-project-bucket-index-configs\",\n project=\"project_id\",\n location=\"global\",\n retention_days=30,\n bucket_id=\"custom-bucket\",\n index_configs=[{\n \"field_path\": \"jsonPayload.request.status\",\n \"type\": \"INDEX_TYPE_STRING\",\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_project_bucket_index_configs = new Gcp.Logging.ProjectBucketConfig(\"example-project-bucket-index-configs\", new()\n {\n Project = \"project_id\",\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"custom-bucket\",\n IndexConfigs = new[]\n {\n new Gcp.Logging.Inputs.ProjectBucketConfigIndexConfigArgs\n {\n FieldPath = \"jsonPayload.request.status\",\n Type = \"INDEX_TYPE_STRING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/logging\"\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 := logging.NewProjectBucketConfig(ctx, \"example-project-bucket-index-configs\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: pulumi.String(\"project_id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"custom-bucket\"),\n\t\t\tIndexConfigs: logging.ProjectBucketConfigIndexConfigArray{\n\t\t\t\t\u0026logging.ProjectBucketConfigIndexConfigArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"jsonPayload.request.status\"),\n\t\t\t\t\tType: pulumi.String(\"INDEX_TYPE_STRING\"),\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.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\nimport com.pulumi.gcp.logging.inputs.ProjectBucketConfigIndexConfigArgs;\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_project_bucket_index_configs = new ProjectBucketConfig(\"example-project-bucket-index-configs\", ProjectBucketConfigArgs.builder()\n .project(\"project_id\")\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"custom-bucket\")\n .indexConfigs(ProjectBucketConfigIndexConfigArgs.builder()\n .fieldPath(\"jsonPayload.request.status\")\n .type(\"INDEX_TYPE_STRING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-project-bucket-index-configs:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: project_id\n location: global\n retentionDays: 30\n bucketId: custom-bucket\n indexConfigs:\n - fieldPath: jsonPayload.request.status\n type: INDEX_TYPE_STRING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported using the following format:\n\n* `projects/{{project}}/locations/{{location}}/buckets/{{bucket_id}}`\n\nWhen using the `pulumi import` command, this resource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/projectBucketConfig:ProjectBucketConfig default projects/{{project}}/locations/{{location}}/buckets/{{bucket_id}}\n```\n\n", "properties": { "bucketId": { "type": "string", @@ -211068,7 +211068,7 @@ } }, "gcp:looker/instance:Instance": { - "description": "A Google Cloud Looker instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/looker/docs/reference/rest/v1/projects.locations.instances)\n* How-to Guides\n * [Configure a Looker (Google Cloud core) instance](https://cloud.google.com/looker/docs/looker-core-instance-setup)\n * [Create a Looker (Google Cloud core) instance](https://cloud.google.com/looker/docs/looker-core-instance-create)\n\n## Example Usage\n\n### Looker Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst looker_instance = new gcp.looker.Instance(\"looker-instance\", {\n name: \"my-instance\",\n platformEdition: \"LOOKER_CORE_STANDARD_ANNUAL\",\n region: \"us-central1\",\n oauthConfig: {\n clientId: \"my-client-id\",\n clientSecret: \"my-client-secret\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlooker_instance = gcp.looker.Instance(\"looker-instance\",\n name=\"my-instance\",\n platform_edition=\"LOOKER_CORE_STANDARD_ANNUAL\",\n region=\"us-central1\",\n oauth_config={\n \"clientId\": \"my-client-id\",\n \"clientSecret\": \"my-client-secret\",\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 looker_instance = new Gcp.Looker.Instance(\"looker-instance\", new()\n {\n Name = \"my-instance\",\n PlatformEdition = \"LOOKER_CORE_STANDARD_ANNUAL\",\n Region = \"us-central1\",\n OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs\n {\n ClientId = \"my-client-id\",\n ClientSecret = \"my-client-secret\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/looker\"\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 := looker.NewInstance(ctx, \"looker-instance\", \u0026looker.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tPlatformEdition: pulumi.String(\"LOOKER_CORE_STANDARD_ANNUAL\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOauthConfig: \u0026looker.InstanceOauthConfigArgs{\n\t\t\t\tClientId: pulumi.String(\"my-client-id\"),\n\t\t\t\tClientSecret: pulumi.String(\"my-client-secret\"),\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.looker.Instance;\nimport com.pulumi.gcp.looker.InstanceArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;\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 looker_instance = new Instance(\"looker-instance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .platformEdition(\"LOOKER_CORE_STANDARD_ANNUAL\")\n .region(\"us-central1\")\n .oauthConfig(InstanceOauthConfigArgs.builder()\n .clientId(\"my-client-id\")\n .clientSecret(\"my-client-secret\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n looker-instance:\n type: gcp:looker:Instance\n properties:\n name: my-instance\n platformEdition: LOOKER_CORE_STANDARD_ANNUAL\n region: us-central1\n oauthConfig:\n clientId: my-client-id\n clientSecret: my-client-secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Looker Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst looker_instance = new gcp.looker.Instance(\"looker-instance\", {\n name: \"my-instance\",\n platformEdition: \"LOOKER_CORE_STANDARD_ANNUAL\",\n region: \"us-central1\",\n publicIpEnabled: true,\n adminSettings: {\n allowedEmailDomains: [\"google.com\"],\n },\n maintenanceWindow: {\n dayOfWeek: \"THURSDAY\",\n startTime: {\n hours: 22,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n denyMaintenancePeriod: {\n startDate: {\n year: 2050,\n month: 1,\n day: 1,\n },\n endDate: {\n year: 2050,\n month: 2,\n day: 1,\n },\n time: {\n hours: 10,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n oauthConfig: {\n clientId: \"my-client-id\",\n clientSecret: \"my-client-secret\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlooker_instance = gcp.looker.Instance(\"looker-instance\",\n name=\"my-instance\",\n platform_edition=\"LOOKER_CORE_STANDARD_ANNUAL\",\n region=\"us-central1\",\n public_ip_enabled=True,\n admin_settings={\n \"allowedEmailDomains\": [\"google.com\"],\n },\n maintenance_window={\n \"dayOfWeek\": \"THURSDAY\",\n \"startTime\": {\n \"hours\": 22,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n },\n deny_maintenance_period={\n \"startDate\": {\n \"year\": 2050,\n \"month\": 1,\n \"day\": 1,\n },\n \"endDate\": {\n \"year\": 2050,\n \"month\": 2,\n \"day\": 1,\n },\n \"time\": {\n \"hours\": 10,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n },\n oauth_config={\n \"clientId\": \"my-client-id\",\n \"clientSecret\": \"my-client-secret\",\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 looker_instance = new Gcp.Looker.Instance(\"looker-instance\", new()\n {\n Name = \"my-instance\",\n PlatformEdition = \"LOOKER_CORE_STANDARD_ANNUAL\",\n Region = \"us-central1\",\n PublicIpEnabled = true,\n AdminSettings = new Gcp.Looker.Inputs.InstanceAdminSettingsArgs\n {\n AllowedEmailDomains = new[]\n {\n \"google.com\",\n },\n },\n MaintenanceWindow = new Gcp.Looker.Inputs.InstanceMaintenanceWindowArgs\n {\n DayOfWeek = \"THURSDAY\",\n StartTime = new Gcp.Looker.Inputs.InstanceMaintenanceWindowStartTimeArgs\n {\n Hours = 22,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n DenyMaintenancePeriod = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodArgs\n {\n StartDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodStartDateArgs\n {\n Year = 2050,\n Month = 1,\n Day = 1,\n },\n EndDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodEndDateArgs\n {\n Year = 2050,\n Month = 2,\n Day = 1,\n },\n Time = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodTimeArgs\n {\n Hours = 10,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs\n {\n ClientId = \"my-client-id\",\n ClientSecret = \"my-client-secret\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/looker\"\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 := looker.NewInstance(ctx, \"looker-instance\", \u0026looker.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tPlatformEdition: pulumi.String(\"LOOKER_CORE_STANDARD_ANNUAL\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPublicIpEnabled: pulumi.Bool(true),\n\t\t\tAdminSettings: \u0026looker.InstanceAdminSettingsArgs{\n\t\t\t\tAllowedEmailDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"google.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMaintenanceWindow: \u0026looker.InstanceMaintenanceWindowArgs{\n\t\t\t\tDayOfWeek: pulumi.String(\"THURSDAY\"),\n\t\t\t\tStartTime: \u0026looker.InstanceMaintenanceWindowStartTimeArgs{\n\t\t\t\t\tHours: pulumi.Int(22),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDenyMaintenancePeriod: \u0026looker.InstanceDenyMaintenancePeriodArgs{\n\t\t\t\tStartDate: \u0026looker.InstanceDenyMaintenancePeriodStartDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tEndDate: \u0026looker.InstanceDenyMaintenancePeriodEndDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t\tMonth: pulumi.Int(2),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tTime: \u0026looker.InstanceDenyMaintenancePeriodTimeArgs{\n\t\t\t\t\tHours: pulumi.Int(10),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOauthConfig: \u0026looker.InstanceOauthConfigArgs{\n\t\t\t\tClientId: pulumi.String(\"my-client-id\"),\n\t\t\t\tClientSecret: pulumi.String(\"my-client-secret\"),\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.looker.Instance;\nimport com.pulumi.gcp.looker.InstanceArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceAdminSettingsArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowStartTimeArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodStartDateArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodEndDateArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodTimeArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;\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 looker_instance = new Instance(\"looker-instance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .platformEdition(\"LOOKER_CORE_STANDARD_ANNUAL\")\n .region(\"us-central1\")\n .publicIpEnabled(true)\n .adminSettings(InstanceAdminSettingsArgs.builder()\n .allowedEmailDomains(\"google.com\")\n .build())\n .maintenanceWindow(InstanceMaintenanceWindowArgs.builder()\n .dayOfWeek(\"THURSDAY\")\n .startTime(InstanceMaintenanceWindowStartTimeArgs.builder()\n .hours(22)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .denyMaintenancePeriod(InstanceDenyMaintenancePeriodArgs.builder()\n .startDate(InstanceDenyMaintenancePeriodStartDateArgs.builder()\n .year(2050)\n .month(1)\n .day(1)\n .build())\n .endDate(InstanceDenyMaintenancePeriodEndDateArgs.builder()\n .year(2050)\n .month(2)\n .day(1)\n .build())\n .time(InstanceDenyMaintenancePeriodTimeArgs.builder()\n .hours(10)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .oauthConfig(InstanceOauthConfigArgs.builder()\n .clientId(\"my-client-id\")\n .clientSecret(\"my-client-secret\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n looker-instance:\n type: gcp:looker:Instance\n properties:\n name: my-instance\n platformEdition: LOOKER_CORE_STANDARD_ANNUAL\n region: us-central1\n publicIpEnabled: true\n adminSettings:\n allowedEmailDomains:\n - google.com\n maintenanceWindow:\n dayOfWeek: THURSDAY\n startTime:\n hours: 22\n minutes: 0\n seconds: 0\n nanos: 0\n denyMaintenancePeriod:\n startDate:\n year: 2050\n month: 1\n day: 1\n endDate:\n year: 2050\n month: 2\n day: 1\n time:\n hours: 10\n minutes: 0\n seconds: 0\n nanos: 0\n oauthConfig:\n clientId: my-client-id\n clientSecret: my-client-secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Looker Instance Enterprise Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst lookerNetwork = new gcp.compute.Network(\"looker_network\", {name: \"looker-network\"});\nconst lookerRange = new gcp.compute.GlobalAddress(\"looker_range\", {\n name: \"looker-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 20,\n network: lookerNetwork.id,\n});\nconst lookerVpcConnection = new gcp.servicenetworking.Connection(\"looker_vpc_connection\", {\n network: lookerNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [lookerRange.name],\n});\nconst looker_instance = new gcp.looker.Instance(\"looker-instance\", {\n name: \"my-instance\",\n platformEdition: \"LOOKER_CORE_ENTERPRISE_ANNUAL\",\n region: \"us-central1\",\n privateIpEnabled: true,\n publicIpEnabled: false,\n reservedRange: lookerRange.name,\n consumerNetwork: lookerNetwork.id,\n adminSettings: {\n allowedEmailDomains: [\"google.com\"],\n },\n encryptionConfig: {\n kmsKeyName: \"looker-kms-key\",\n },\n maintenanceWindow: {\n dayOfWeek: \"THURSDAY\",\n startTime: {\n hours: 22,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n denyMaintenancePeriod: {\n startDate: {\n year: 2050,\n month: 1,\n day: 1,\n },\n endDate: {\n year: 2050,\n month: 2,\n day: 1,\n },\n time: {\n hours: 10,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n oauthConfig: {\n clientId: \"my-client-id\",\n clientSecret: \"my-client-secret\",\n },\n}, {\n dependsOn: [lookerVpcConnection],\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"looker-kms-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-looker.iam.gserviceaccount.com`),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlooker_network = gcp.compute.Network(\"looker_network\", name=\"looker-network\")\nlooker_range = gcp.compute.GlobalAddress(\"looker_range\",\n name=\"looker-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=20,\n network=looker_network.id)\nlooker_vpc_connection = gcp.servicenetworking.Connection(\"looker_vpc_connection\",\n network=looker_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[looker_range.name])\nlooker_instance = gcp.looker.Instance(\"looker-instance\",\n name=\"my-instance\",\n platform_edition=\"LOOKER_CORE_ENTERPRISE_ANNUAL\",\n region=\"us-central1\",\n private_ip_enabled=True,\n public_ip_enabled=False,\n reserved_range=looker_range.name,\n consumer_network=looker_network.id,\n admin_settings={\n \"allowedEmailDomains\": [\"google.com\"],\n },\n encryption_config={\n \"kmsKeyName\": \"looker-kms-key\",\n },\n maintenance_window={\n \"dayOfWeek\": \"THURSDAY\",\n \"startTime\": {\n \"hours\": 22,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n },\n deny_maintenance_period={\n \"startDate\": {\n \"year\": 2050,\n \"month\": 1,\n \"day\": 1,\n },\n \"endDate\": {\n \"year\": 2050,\n \"month\": 2,\n \"day\": 1,\n },\n \"time\": {\n \"hours\": 10,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n },\n oauth_config={\n \"clientId\": \"my-client-id\",\n \"clientSecret\": \"my-client-secret\",\n },\n opts = pulumi.ResourceOptions(depends_on=[looker_vpc_connection]))\nproject = gcp.organizations.get_project()\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"looker-kms-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-looker.iam.gserviceaccount.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 lookerNetwork = new Gcp.Compute.Network(\"looker_network\", new()\n {\n Name = \"looker-network\",\n });\n\n var lookerRange = new Gcp.Compute.GlobalAddress(\"looker_range\", new()\n {\n Name = \"looker-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 20,\n Network = lookerNetwork.Id,\n });\n\n var lookerVpcConnection = new Gcp.ServiceNetworking.Connection(\"looker_vpc_connection\", new()\n {\n Network = lookerNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n lookerRange.Name,\n },\n });\n\n var looker_instance = new Gcp.Looker.Instance(\"looker-instance\", new()\n {\n Name = \"my-instance\",\n PlatformEdition = \"LOOKER_CORE_ENTERPRISE_ANNUAL\",\n Region = \"us-central1\",\n PrivateIpEnabled = true,\n PublicIpEnabled = false,\n ReservedRange = lookerRange.Name,\n ConsumerNetwork = lookerNetwork.Id,\n AdminSettings = new Gcp.Looker.Inputs.InstanceAdminSettingsArgs\n {\n AllowedEmailDomains = new[]\n {\n \"google.com\",\n },\n },\n EncryptionConfig = new Gcp.Looker.Inputs.InstanceEncryptionConfigArgs\n {\n KmsKeyName = \"looker-kms-key\",\n },\n MaintenanceWindow = new Gcp.Looker.Inputs.InstanceMaintenanceWindowArgs\n {\n DayOfWeek = \"THURSDAY\",\n StartTime = new Gcp.Looker.Inputs.InstanceMaintenanceWindowStartTimeArgs\n {\n Hours = 22,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n DenyMaintenancePeriod = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodArgs\n {\n StartDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodStartDateArgs\n {\n Year = 2050,\n Month = 1,\n Day = 1,\n },\n EndDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodEndDateArgs\n {\n Year = 2050,\n Month = 2,\n Day = 1,\n },\n Time = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodTimeArgs\n {\n Hours = 10,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs\n {\n ClientId = \"my-client-id\",\n ClientSecret = \"my-client-secret\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n lookerVpcConnection,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"looker-kms-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-looker.iam.gserviceaccount.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/looker\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tlookerNetwork, err := compute.NewNetwork(ctx, \"looker_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"looker-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlookerRange, err := compute.NewGlobalAddress(ctx, \"looker_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"looker-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(20),\n\t\t\tNetwork: lookerNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlookerVpcConnection, err := servicenetworking.NewConnection(ctx, \"looker_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: lookerNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tlookerRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = looker.NewInstance(ctx, \"looker-instance\", \u0026looker.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tPlatformEdition: pulumi.String(\"LOOKER_CORE_ENTERPRISE_ANNUAL\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPrivateIpEnabled: pulumi.Bool(true),\n\t\t\tPublicIpEnabled: pulumi.Bool(false),\n\t\t\tReservedRange: lookerRange.Name,\n\t\t\tConsumerNetwork: lookerNetwork.ID(),\n\t\t\tAdminSettings: \u0026looker.InstanceAdminSettingsArgs{\n\t\t\t\tAllowedEmailDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"google.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEncryptionConfig: \u0026looker.InstanceEncryptionConfigArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"looker-kms-key\"),\n\t\t\t},\n\t\t\tMaintenanceWindow: \u0026looker.InstanceMaintenanceWindowArgs{\n\t\t\t\tDayOfWeek: pulumi.String(\"THURSDAY\"),\n\t\t\t\tStartTime: \u0026looker.InstanceMaintenanceWindowStartTimeArgs{\n\t\t\t\t\tHours: pulumi.Int(22),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDenyMaintenancePeriod: \u0026looker.InstanceDenyMaintenancePeriodArgs{\n\t\t\t\tStartDate: \u0026looker.InstanceDenyMaintenancePeriodStartDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tEndDate: \u0026looker.InstanceDenyMaintenancePeriodEndDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t\tMonth: pulumi.Int(2),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tTime: \u0026looker.InstanceDenyMaintenancePeriodTimeArgs{\n\t\t\t\t\tHours: pulumi.Int(10),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOauthConfig: \u0026looker.InstanceOauthConfigArgs{\n\t\t\t\tClientId: pulumi.String(\"my-client-id\"),\n\t\t\t\tClientSecret: pulumi.String(\"my-client-secret\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tlookerVpcConnection,\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\t_, err = kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"looker-kms-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-looker.iam.gserviceaccount.com\", project.Number)),\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.looker.Instance;\nimport com.pulumi.gcp.looker.InstanceArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceAdminSettingsArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceEncryptionConfigArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowStartTimeArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodStartDateArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodEndDateArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodTimeArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\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 lookerNetwork = new Network(\"lookerNetwork\", NetworkArgs.builder()\n .name(\"looker-network\")\n .build());\n\n var lookerRange = new GlobalAddress(\"lookerRange\", GlobalAddressArgs.builder()\n .name(\"looker-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(20)\n .network(lookerNetwork.id())\n .build());\n\n var lookerVpcConnection = new Connection(\"lookerVpcConnection\", ConnectionArgs.builder()\n .network(lookerNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(lookerRange.name())\n .build());\n\n var looker_instance = new Instance(\"looker-instance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .platformEdition(\"LOOKER_CORE_ENTERPRISE_ANNUAL\")\n .region(\"us-central1\")\n .privateIpEnabled(true)\n .publicIpEnabled(false)\n .reservedRange(lookerRange.name())\n .consumerNetwork(lookerNetwork.id())\n .adminSettings(InstanceAdminSettingsArgs.builder()\n .allowedEmailDomains(\"google.com\")\n .build())\n .encryptionConfig(InstanceEncryptionConfigArgs.builder()\n .kmsKeyName(\"looker-kms-key\")\n .build())\n .maintenanceWindow(InstanceMaintenanceWindowArgs.builder()\n .dayOfWeek(\"THURSDAY\")\n .startTime(InstanceMaintenanceWindowStartTimeArgs.builder()\n .hours(22)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .denyMaintenancePeriod(InstanceDenyMaintenancePeriodArgs.builder()\n .startDate(InstanceDenyMaintenancePeriodStartDateArgs.builder()\n .year(2050)\n .month(1)\n .day(1)\n .build())\n .endDate(InstanceDenyMaintenancePeriodEndDateArgs.builder()\n .year(2050)\n .month(2)\n .day(1)\n .build())\n .time(InstanceDenyMaintenancePeriodTimeArgs.builder()\n .hours(10)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .oauthConfig(InstanceOauthConfigArgs.builder()\n .clientId(\"my-client-id\")\n .clientSecret(\"my-client-secret\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(lookerVpcConnection)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"looker-kms-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-looker.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n looker-instance:\n type: gcp:looker:Instance\n properties:\n name: my-instance\n platformEdition: LOOKER_CORE_ENTERPRISE_ANNUAL\n region: us-central1\n privateIpEnabled: true\n publicIpEnabled: false\n reservedRange: ${lookerRange.name}\n consumerNetwork: ${lookerNetwork.id}\n adminSettings:\n allowedEmailDomains:\n - google.com\n encryptionConfig:\n kmsKeyName: looker-kms-key\n maintenanceWindow:\n dayOfWeek: THURSDAY\n startTime:\n hours: 22\n minutes: 0\n seconds: 0\n nanos: 0\n denyMaintenancePeriod:\n startDate:\n year: 2050\n month: 1\n day: 1\n endDate:\n year: 2050\n month: 2\n day: 1\n time:\n hours: 10\n minutes: 0\n seconds: 0\n nanos: 0\n oauthConfig:\n clientId: my-client-id\n clientSecret: my-client-secret\n options:\n dependson:\n - ${lookerVpcConnection}\n lookerVpcConnection:\n type: gcp:servicenetworking:Connection\n name: looker_vpc_connection\n properties:\n network: ${lookerNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${lookerRange.name}\n lookerRange:\n type: gcp:compute:GlobalAddress\n name: looker_range\n properties:\n name: looker-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 20\n network: ${lookerNetwork.id}\n lookerNetwork:\n type: gcp:compute:Network\n name: looker_network\n properties:\n name: looker-network\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: looker-kms-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-looker.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Looker Instance Custom Domain\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst looker_instance = new gcp.looker.Instance(\"looker-instance\", {\n name: \"my-instance\",\n platformEdition: \"LOOKER_CORE_STANDARD_ANNUAL\",\n region: \"us-central1\",\n oauthConfig: {\n clientId: \"my-client-id\",\n clientSecret: \"my-client-secret\",\n },\n customDomain: {\n domain: \"my-custom-domain.com\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlooker_instance = gcp.looker.Instance(\"looker-instance\",\n name=\"my-instance\",\n platform_edition=\"LOOKER_CORE_STANDARD_ANNUAL\",\n region=\"us-central1\",\n oauth_config={\n \"clientId\": \"my-client-id\",\n \"clientSecret\": \"my-client-secret\",\n },\n custom_domain={\n \"domain\": \"my-custom-domain.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 looker_instance = new Gcp.Looker.Instance(\"looker-instance\", new()\n {\n Name = \"my-instance\",\n PlatformEdition = \"LOOKER_CORE_STANDARD_ANNUAL\",\n Region = \"us-central1\",\n OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs\n {\n ClientId = \"my-client-id\",\n ClientSecret = \"my-client-secret\",\n },\n CustomDomain = new Gcp.Looker.Inputs.InstanceCustomDomainArgs\n {\n Domain = \"my-custom-domain.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/looker\"\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 := looker.NewInstance(ctx, \"looker-instance\", \u0026looker.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tPlatformEdition: pulumi.String(\"LOOKER_CORE_STANDARD_ANNUAL\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOauthConfig: \u0026looker.InstanceOauthConfigArgs{\n\t\t\t\tClientId: pulumi.String(\"my-client-id\"),\n\t\t\t\tClientSecret: pulumi.String(\"my-client-secret\"),\n\t\t\t},\n\t\t\tCustomDomain: \u0026looker.InstanceCustomDomainArgs{\n\t\t\t\tDomain: pulumi.String(\"my-custom-domain.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.looker.Instance;\nimport com.pulumi.gcp.looker.InstanceArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceCustomDomainArgs;\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 looker_instance = new Instance(\"looker-instance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .platformEdition(\"LOOKER_CORE_STANDARD_ANNUAL\")\n .region(\"us-central1\")\n .oauthConfig(InstanceOauthConfigArgs.builder()\n .clientId(\"my-client-id\")\n .clientSecret(\"my-client-secret\")\n .build())\n .customDomain(InstanceCustomDomainArgs.builder()\n .domain(\"my-custom-domain.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n looker-instance:\n type: gcp:looker:Instance\n properties:\n name: my-instance\n platformEdition: LOOKER_CORE_STANDARD_ANNUAL\n region: us-central1\n oauthConfig:\n clientId: my-client-id\n clientSecret: my-client-secret\n customDomain:\n domain: my-custom-domain.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:looker/instance:Instance default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:looker/instance:Instance default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:looker/instance:Instance default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:looker/instance:Instance default {{name}}\n```\n\n", + "description": "A Google Cloud Looker instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/looker/docs/reference/rest/v1/projects.locations.instances)\n* How-to Guides\n * [Configure a Looker (Google Cloud core) instance](https://cloud.google.com/looker/docs/looker-core-instance-setup)\n * [Create a Looker (Google Cloud core) instance](https://cloud.google.com/looker/docs/looker-core-instance-create)\n\n## Example Usage\n\n### Looker Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst looker_instance = new gcp.looker.Instance(\"looker-instance\", {\n name: \"my-instance\",\n platformEdition: \"LOOKER_CORE_STANDARD_ANNUAL\",\n region: \"us-central1\",\n oauthConfig: {\n clientId: \"my-client-id\",\n clientSecret: \"my-client-secret\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlooker_instance = gcp.looker.Instance(\"looker-instance\",\n name=\"my-instance\",\n platform_edition=\"LOOKER_CORE_STANDARD_ANNUAL\",\n region=\"us-central1\",\n oauth_config={\n \"client_id\": \"my-client-id\",\n \"client_secret\": \"my-client-secret\",\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 looker_instance = new Gcp.Looker.Instance(\"looker-instance\", new()\n {\n Name = \"my-instance\",\n PlatformEdition = \"LOOKER_CORE_STANDARD_ANNUAL\",\n Region = \"us-central1\",\n OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs\n {\n ClientId = \"my-client-id\",\n ClientSecret = \"my-client-secret\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/looker\"\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 := looker.NewInstance(ctx, \"looker-instance\", \u0026looker.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tPlatformEdition: pulumi.String(\"LOOKER_CORE_STANDARD_ANNUAL\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOauthConfig: \u0026looker.InstanceOauthConfigArgs{\n\t\t\t\tClientId: pulumi.String(\"my-client-id\"),\n\t\t\t\tClientSecret: pulumi.String(\"my-client-secret\"),\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.looker.Instance;\nimport com.pulumi.gcp.looker.InstanceArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;\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 looker_instance = new Instance(\"looker-instance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .platformEdition(\"LOOKER_CORE_STANDARD_ANNUAL\")\n .region(\"us-central1\")\n .oauthConfig(InstanceOauthConfigArgs.builder()\n .clientId(\"my-client-id\")\n .clientSecret(\"my-client-secret\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n looker-instance:\n type: gcp:looker:Instance\n properties:\n name: my-instance\n platformEdition: LOOKER_CORE_STANDARD_ANNUAL\n region: us-central1\n oauthConfig:\n clientId: my-client-id\n clientSecret: my-client-secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Looker Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst looker_instance = new gcp.looker.Instance(\"looker-instance\", {\n name: \"my-instance\",\n platformEdition: \"LOOKER_CORE_STANDARD_ANNUAL\",\n region: \"us-central1\",\n publicIpEnabled: true,\n adminSettings: {\n allowedEmailDomains: [\"google.com\"],\n },\n maintenanceWindow: {\n dayOfWeek: \"THURSDAY\",\n startTime: {\n hours: 22,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n denyMaintenancePeriod: {\n startDate: {\n year: 2050,\n month: 1,\n day: 1,\n },\n endDate: {\n year: 2050,\n month: 2,\n day: 1,\n },\n time: {\n hours: 10,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n oauthConfig: {\n clientId: \"my-client-id\",\n clientSecret: \"my-client-secret\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlooker_instance = gcp.looker.Instance(\"looker-instance\",\n name=\"my-instance\",\n platform_edition=\"LOOKER_CORE_STANDARD_ANNUAL\",\n region=\"us-central1\",\n public_ip_enabled=True,\n admin_settings={\n \"allowed_email_domains\": [\"google.com\"],\n },\n maintenance_window={\n \"day_of_week\": \"THURSDAY\",\n \"start_time\": {\n \"hours\": 22,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n },\n deny_maintenance_period={\n \"start_date\": {\n \"year\": 2050,\n \"month\": 1,\n \"day\": 1,\n },\n \"end_date\": {\n \"year\": 2050,\n \"month\": 2,\n \"day\": 1,\n },\n \"time\": {\n \"hours\": 10,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n },\n oauth_config={\n \"client_id\": \"my-client-id\",\n \"client_secret\": \"my-client-secret\",\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 looker_instance = new Gcp.Looker.Instance(\"looker-instance\", new()\n {\n Name = \"my-instance\",\n PlatformEdition = \"LOOKER_CORE_STANDARD_ANNUAL\",\n Region = \"us-central1\",\n PublicIpEnabled = true,\n AdminSettings = new Gcp.Looker.Inputs.InstanceAdminSettingsArgs\n {\n AllowedEmailDomains = new[]\n {\n \"google.com\",\n },\n },\n MaintenanceWindow = new Gcp.Looker.Inputs.InstanceMaintenanceWindowArgs\n {\n DayOfWeek = \"THURSDAY\",\n StartTime = new Gcp.Looker.Inputs.InstanceMaintenanceWindowStartTimeArgs\n {\n Hours = 22,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n DenyMaintenancePeriod = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodArgs\n {\n StartDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodStartDateArgs\n {\n Year = 2050,\n Month = 1,\n Day = 1,\n },\n EndDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodEndDateArgs\n {\n Year = 2050,\n Month = 2,\n Day = 1,\n },\n Time = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodTimeArgs\n {\n Hours = 10,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs\n {\n ClientId = \"my-client-id\",\n ClientSecret = \"my-client-secret\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/looker\"\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 := looker.NewInstance(ctx, \"looker-instance\", \u0026looker.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tPlatformEdition: pulumi.String(\"LOOKER_CORE_STANDARD_ANNUAL\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPublicIpEnabled: pulumi.Bool(true),\n\t\t\tAdminSettings: \u0026looker.InstanceAdminSettingsArgs{\n\t\t\t\tAllowedEmailDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"google.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMaintenanceWindow: \u0026looker.InstanceMaintenanceWindowArgs{\n\t\t\t\tDayOfWeek: pulumi.String(\"THURSDAY\"),\n\t\t\t\tStartTime: \u0026looker.InstanceMaintenanceWindowStartTimeArgs{\n\t\t\t\t\tHours: pulumi.Int(22),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDenyMaintenancePeriod: \u0026looker.InstanceDenyMaintenancePeriodArgs{\n\t\t\t\tStartDate: \u0026looker.InstanceDenyMaintenancePeriodStartDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tEndDate: \u0026looker.InstanceDenyMaintenancePeriodEndDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t\tMonth: pulumi.Int(2),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tTime: \u0026looker.InstanceDenyMaintenancePeriodTimeArgs{\n\t\t\t\t\tHours: pulumi.Int(10),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOauthConfig: \u0026looker.InstanceOauthConfigArgs{\n\t\t\t\tClientId: pulumi.String(\"my-client-id\"),\n\t\t\t\tClientSecret: pulumi.String(\"my-client-secret\"),\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.looker.Instance;\nimport com.pulumi.gcp.looker.InstanceArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceAdminSettingsArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowStartTimeArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodStartDateArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodEndDateArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodTimeArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;\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 looker_instance = new Instance(\"looker-instance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .platformEdition(\"LOOKER_CORE_STANDARD_ANNUAL\")\n .region(\"us-central1\")\n .publicIpEnabled(true)\n .adminSettings(InstanceAdminSettingsArgs.builder()\n .allowedEmailDomains(\"google.com\")\n .build())\n .maintenanceWindow(InstanceMaintenanceWindowArgs.builder()\n .dayOfWeek(\"THURSDAY\")\n .startTime(InstanceMaintenanceWindowStartTimeArgs.builder()\n .hours(22)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .denyMaintenancePeriod(InstanceDenyMaintenancePeriodArgs.builder()\n .startDate(InstanceDenyMaintenancePeriodStartDateArgs.builder()\n .year(2050)\n .month(1)\n .day(1)\n .build())\n .endDate(InstanceDenyMaintenancePeriodEndDateArgs.builder()\n .year(2050)\n .month(2)\n .day(1)\n .build())\n .time(InstanceDenyMaintenancePeriodTimeArgs.builder()\n .hours(10)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .oauthConfig(InstanceOauthConfigArgs.builder()\n .clientId(\"my-client-id\")\n .clientSecret(\"my-client-secret\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n looker-instance:\n type: gcp:looker:Instance\n properties:\n name: my-instance\n platformEdition: LOOKER_CORE_STANDARD_ANNUAL\n region: us-central1\n publicIpEnabled: true\n adminSettings:\n allowedEmailDomains:\n - google.com\n maintenanceWindow:\n dayOfWeek: THURSDAY\n startTime:\n hours: 22\n minutes: 0\n seconds: 0\n nanos: 0\n denyMaintenancePeriod:\n startDate:\n year: 2050\n month: 1\n day: 1\n endDate:\n year: 2050\n month: 2\n day: 1\n time:\n hours: 10\n minutes: 0\n seconds: 0\n nanos: 0\n oauthConfig:\n clientId: my-client-id\n clientSecret: my-client-secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Looker Instance Enterprise Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst lookerNetwork = new gcp.compute.Network(\"looker_network\", {name: \"looker-network\"});\nconst lookerRange = new gcp.compute.GlobalAddress(\"looker_range\", {\n name: \"looker-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 20,\n network: lookerNetwork.id,\n});\nconst lookerVpcConnection = new gcp.servicenetworking.Connection(\"looker_vpc_connection\", {\n network: lookerNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [lookerRange.name],\n});\nconst looker_instance = new gcp.looker.Instance(\"looker-instance\", {\n name: \"my-instance\",\n platformEdition: \"LOOKER_CORE_ENTERPRISE_ANNUAL\",\n region: \"us-central1\",\n privateIpEnabled: true,\n publicIpEnabled: false,\n reservedRange: lookerRange.name,\n consumerNetwork: lookerNetwork.id,\n adminSettings: {\n allowedEmailDomains: [\"google.com\"],\n },\n encryptionConfig: {\n kmsKeyName: \"looker-kms-key\",\n },\n maintenanceWindow: {\n dayOfWeek: \"THURSDAY\",\n startTime: {\n hours: 22,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n denyMaintenancePeriod: {\n startDate: {\n year: 2050,\n month: 1,\n day: 1,\n },\n endDate: {\n year: 2050,\n month: 2,\n day: 1,\n },\n time: {\n hours: 10,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n oauthConfig: {\n clientId: \"my-client-id\",\n clientSecret: \"my-client-secret\",\n },\n}, {\n dependsOn: [lookerVpcConnection],\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"looker-kms-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-looker.iam.gserviceaccount.com`),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlooker_network = gcp.compute.Network(\"looker_network\", name=\"looker-network\")\nlooker_range = gcp.compute.GlobalAddress(\"looker_range\",\n name=\"looker-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=20,\n network=looker_network.id)\nlooker_vpc_connection = gcp.servicenetworking.Connection(\"looker_vpc_connection\",\n network=looker_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[looker_range.name])\nlooker_instance = gcp.looker.Instance(\"looker-instance\",\n name=\"my-instance\",\n platform_edition=\"LOOKER_CORE_ENTERPRISE_ANNUAL\",\n region=\"us-central1\",\n private_ip_enabled=True,\n public_ip_enabled=False,\n reserved_range=looker_range.name,\n consumer_network=looker_network.id,\n admin_settings={\n \"allowed_email_domains\": [\"google.com\"],\n },\n encryption_config={\n \"kms_key_name\": \"looker-kms-key\",\n },\n maintenance_window={\n \"day_of_week\": \"THURSDAY\",\n \"start_time\": {\n \"hours\": 22,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n },\n deny_maintenance_period={\n \"start_date\": {\n \"year\": 2050,\n \"month\": 1,\n \"day\": 1,\n },\n \"end_date\": {\n \"year\": 2050,\n \"month\": 2,\n \"day\": 1,\n },\n \"time\": {\n \"hours\": 10,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n },\n oauth_config={\n \"client_id\": \"my-client-id\",\n \"client_secret\": \"my-client-secret\",\n },\n opts = pulumi.ResourceOptions(depends_on=[looker_vpc_connection]))\nproject = gcp.organizations.get_project()\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"looker-kms-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-looker.iam.gserviceaccount.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 lookerNetwork = new Gcp.Compute.Network(\"looker_network\", new()\n {\n Name = \"looker-network\",\n });\n\n var lookerRange = new Gcp.Compute.GlobalAddress(\"looker_range\", new()\n {\n Name = \"looker-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 20,\n Network = lookerNetwork.Id,\n });\n\n var lookerVpcConnection = new Gcp.ServiceNetworking.Connection(\"looker_vpc_connection\", new()\n {\n Network = lookerNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n lookerRange.Name,\n },\n });\n\n var looker_instance = new Gcp.Looker.Instance(\"looker-instance\", new()\n {\n Name = \"my-instance\",\n PlatformEdition = \"LOOKER_CORE_ENTERPRISE_ANNUAL\",\n Region = \"us-central1\",\n PrivateIpEnabled = true,\n PublicIpEnabled = false,\n ReservedRange = lookerRange.Name,\n ConsumerNetwork = lookerNetwork.Id,\n AdminSettings = new Gcp.Looker.Inputs.InstanceAdminSettingsArgs\n {\n AllowedEmailDomains = new[]\n {\n \"google.com\",\n },\n },\n EncryptionConfig = new Gcp.Looker.Inputs.InstanceEncryptionConfigArgs\n {\n KmsKeyName = \"looker-kms-key\",\n },\n MaintenanceWindow = new Gcp.Looker.Inputs.InstanceMaintenanceWindowArgs\n {\n DayOfWeek = \"THURSDAY\",\n StartTime = new Gcp.Looker.Inputs.InstanceMaintenanceWindowStartTimeArgs\n {\n Hours = 22,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n DenyMaintenancePeriod = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodArgs\n {\n StartDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodStartDateArgs\n {\n Year = 2050,\n Month = 1,\n Day = 1,\n },\n EndDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodEndDateArgs\n {\n Year = 2050,\n Month = 2,\n Day = 1,\n },\n Time = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodTimeArgs\n {\n Hours = 10,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs\n {\n ClientId = \"my-client-id\",\n ClientSecret = \"my-client-secret\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n lookerVpcConnection,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"looker-kms-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-looker.iam.gserviceaccount.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/looker\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tlookerNetwork, err := compute.NewNetwork(ctx, \"looker_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"looker-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlookerRange, err := compute.NewGlobalAddress(ctx, \"looker_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"looker-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(20),\n\t\t\tNetwork: lookerNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlookerVpcConnection, err := servicenetworking.NewConnection(ctx, \"looker_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: lookerNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tlookerRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = looker.NewInstance(ctx, \"looker-instance\", \u0026looker.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tPlatformEdition: pulumi.String(\"LOOKER_CORE_ENTERPRISE_ANNUAL\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPrivateIpEnabled: pulumi.Bool(true),\n\t\t\tPublicIpEnabled: pulumi.Bool(false),\n\t\t\tReservedRange: lookerRange.Name,\n\t\t\tConsumerNetwork: lookerNetwork.ID(),\n\t\t\tAdminSettings: \u0026looker.InstanceAdminSettingsArgs{\n\t\t\t\tAllowedEmailDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"google.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEncryptionConfig: \u0026looker.InstanceEncryptionConfigArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"looker-kms-key\"),\n\t\t\t},\n\t\t\tMaintenanceWindow: \u0026looker.InstanceMaintenanceWindowArgs{\n\t\t\t\tDayOfWeek: pulumi.String(\"THURSDAY\"),\n\t\t\t\tStartTime: \u0026looker.InstanceMaintenanceWindowStartTimeArgs{\n\t\t\t\t\tHours: pulumi.Int(22),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDenyMaintenancePeriod: \u0026looker.InstanceDenyMaintenancePeriodArgs{\n\t\t\t\tStartDate: \u0026looker.InstanceDenyMaintenancePeriodStartDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tEndDate: \u0026looker.InstanceDenyMaintenancePeriodEndDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t\tMonth: pulumi.Int(2),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tTime: \u0026looker.InstanceDenyMaintenancePeriodTimeArgs{\n\t\t\t\t\tHours: pulumi.Int(10),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOauthConfig: \u0026looker.InstanceOauthConfigArgs{\n\t\t\t\tClientId: pulumi.String(\"my-client-id\"),\n\t\t\t\tClientSecret: pulumi.String(\"my-client-secret\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tlookerVpcConnection,\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\t_, err = kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"looker-kms-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-looker.iam.gserviceaccount.com\", project.Number)),\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.looker.Instance;\nimport com.pulumi.gcp.looker.InstanceArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceAdminSettingsArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceEncryptionConfigArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowStartTimeArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodStartDateArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodEndDateArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodTimeArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\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 lookerNetwork = new Network(\"lookerNetwork\", NetworkArgs.builder()\n .name(\"looker-network\")\n .build());\n\n var lookerRange = new GlobalAddress(\"lookerRange\", GlobalAddressArgs.builder()\n .name(\"looker-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(20)\n .network(lookerNetwork.id())\n .build());\n\n var lookerVpcConnection = new Connection(\"lookerVpcConnection\", ConnectionArgs.builder()\n .network(lookerNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(lookerRange.name())\n .build());\n\n var looker_instance = new Instance(\"looker-instance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .platformEdition(\"LOOKER_CORE_ENTERPRISE_ANNUAL\")\n .region(\"us-central1\")\n .privateIpEnabled(true)\n .publicIpEnabled(false)\n .reservedRange(lookerRange.name())\n .consumerNetwork(lookerNetwork.id())\n .adminSettings(InstanceAdminSettingsArgs.builder()\n .allowedEmailDomains(\"google.com\")\n .build())\n .encryptionConfig(InstanceEncryptionConfigArgs.builder()\n .kmsKeyName(\"looker-kms-key\")\n .build())\n .maintenanceWindow(InstanceMaintenanceWindowArgs.builder()\n .dayOfWeek(\"THURSDAY\")\n .startTime(InstanceMaintenanceWindowStartTimeArgs.builder()\n .hours(22)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .denyMaintenancePeriod(InstanceDenyMaintenancePeriodArgs.builder()\n .startDate(InstanceDenyMaintenancePeriodStartDateArgs.builder()\n .year(2050)\n .month(1)\n .day(1)\n .build())\n .endDate(InstanceDenyMaintenancePeriodEndDateArgs.builder()\n .year(2050)\n .month(2)\n .day(1)\n .build())\n .time(InstanceDenyMaintenancePeriodTimeArgs.builder()\n .hours(10)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .oauthConfig(InstanceOauthConfigArgs.builder()\n .clientId(\"my-client-id\")\n .clientSecret(\"my-client-secret\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(lookerVpcConnection)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"looker-kms-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-looker.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n looker-instance:\n type: gcp:looker:Instance\n properties:\n name: my-instance\n platformEdition: LOOKER_CORE_ENTERPRISE_ANNUAL\n region: us-central1\n privateIpEnabled: true\n publicIpEnabled: false\n reservedRange: ${lookerRange.name}\n consumerNetwork: ${lookerNetwork.id}\n adminSettings:\n allowedEmailDomains:\n - google.com\n encryptionConfig:\n kmsKeyName: looker-kms-key\n maintenanceWindow:\n dayOfWeek: THURSDAY\n startTime:\n hours: 22\n minutes: 0\n seconds: 0\n nanos: 0\n denyMaintenancePeriod:\n startDate:\n year: 2050\n month: 1\n day: 1\n endDate:\n year: 2050\n month: 2\n day: 1\n time:\n hours: 10\n minutes: 0\n seconds: 0\n nanos: 0\n oauthConfig:\n clientId: my-client-id\n clientSecret: my-client-secret\n options:\n dependson:\n - ${lookerVpcConnection}\n lookerVpcConnection:\n type: gcp:servicenetworking:Connection\n name: looker_vpc_connection\n properties:\n network: ${lookerNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${lookerRange.name}\n lookerRange:\n type: gcp:compute:GlobalAddress\n name: looker_range\n properties:\n name: looker-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 20\n network: ${lookerNetwork.id}\n lookerNetwork:\n type: gcp:compute:Network\n name: looker_network\n properties:\n name: looker-network\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: looker-kms-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-looker.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Looker Instance Custom Domain\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst looker_instance = new gcp.looker.Instance(\"looker-instance\", {\n name: \"my-instance\",\n platformEdition: \"LOOKER_CORE_STANDARD_ANNUAL\",\n region: \"us-central1\",\n oauthConfig: {\n clientId: \"my-client-id\",\n clientSecret: \"my-client-secret\",\n },\n customDomain: {\n domain: \"my-custom-domain.com\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlooker_instance = gcp.looker.Instance(\"looker-instance\",\n name=\"my-instance\",\n platform_edition=\"LOOKER_CORE_STANDARD_ANNUAL\",\n region=\"us-central1\",\n oauth_config={\n \"client_id\": \"my-client-id\",\n \"client_secret\": \"my-client-secret\",\n },\n custom_domain={\n \"domain\": \"my-custom-domain.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 looker_instance = new Gcp.Looker.Instance(\"looker-instance\", new()\n {\n Name = \"my-instance\",\n PlatformEdition = \"LOOKER_CORE_STANDARD_ANNUAL\",\n Region = \"us-central1\",\n OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs\n {\n ClientId = \"my-client-id\",\n ClientSecret = \"my-client-secret\",\n },\n CustomDomain = new Gcp.Looker.Inputs.InstanceCustomDomainArgs\n {\n Domain = \"my-custom-domain.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/looker\"\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 := looker.NewInstance(ctx, \"looker-instance\", \u0026looker.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tPlatformEdition: pulumi.String(\"LOOKER_CORE_STANDARD_ANNUAL\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOauthConfig: \u0026looker.InstanceOauthConfigArgs{\n\t\t\t\tClientId: pulumi.String(\"my-client-id\"),\n\t\t\t\tClientSecret: pulumi.String(\"my-client-secret\"),\n\t\t\t},\n\t\t\tCustomDomain: \u0026looker.InstanceCustomDomainArgs{\n\t\t\t\tDomain: pulumi.String(\"my-custom-domain.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.looker.Instance;\nimport com.pulumi.gcp.looker.InstanceArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceCustomDomainArgs;\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 looker_instance = new Instance(\"looker-instance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .platformEdition(\"LOOKER_CORE_STANDARD_ANNUAL\")\n .region(\"us-central1\")\n .oauthConfig(InstanceOauthConfigArgs.builder()\n .clientId(\"my-client-id\")\n .clientSecret(\"my-client-secret\")\n .build())\n .customDomain(InstanceCustomDomainArgs.builder()\n .domain(\"my-custom-domain.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n looker-instance:\n type: gcp:looker:Instance\n properties:\n name: my-instance\n platformEdition: LOOKER_CORE_STANDARD_ANNUAL\n region: us-central1\n oauthConfig:\n clientId: my-client-id\n clientSecret: my-client-secret\n customDomain:\n domain: my-custom-domain.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:looker/instance:Instance default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:looker/instance:Instance default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:looker/instance:Instance default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:looker/instance:Instance default {{name}}\n```\n\n", "properties": { "adminSettings": { "$ref": "#/types/gcp:looker/InstanceAdminSettings:InstanceAdminSettings", @@ -211338,7 +211338,7 @@ } }, "gcp:managedkafka/cluster:Cluster": { - "description": "## Example Usage\n\n### Managedkafka Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.managedkafka.Cluster(\"example\", {\n clusterId: \"my-cluster\",\n location: \"us-central1\",\n capacityConfig: {\n vcpuCount: \"3\",\n memoryBytes: \"3221225472\",\n },\n gcpConfig: {\n accessConfig: {\n networkConfigs: [{\n subnet: project.then(project =\u003e `projects/${project.number}/regions/us-central1/subnetworks/default`),\n }],\n },\n },\n rebalanceConfig: {\n mode: \"NO_REBALANCE\",\n },\n labels: {\n key: \"value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.managedkafka.Cluster(\"example\",\n cluster_id=\"my-cluster\",\n location=\"us-central1\",\n capacity_config={\n \"vcpuCount\": \"3\",\n \"memoryBytes\": \"3221225472\",\n },\n gcp_config={\n \"accessConfig\": {\n \"networkConfigs\": [{\n \"subnet\": f\"projects/{project.number}/regions/us-central1/subnetworks/default\",\n }],\n },\n },\n rebalance_config={\n \"mode\": \"NO_REBALANCE\",\n },\n labels={\n \"key\": \"value\",\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 example = new Gcp.ManagedKafka.Cluster(\"example\", new()\n {\n ClusterId = \"my-cluster\",\n Location = \"us-central1\",\n CapacityConfig = new Gcp.ManagedKafka.Inputs.ClusterCapacityConfigArgs\n {\n VcpuCount = \"3\",\n MemoryBytes = \"3221225472\",\n },\n GcpConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigArgs\n {\n AccessConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigArgs\n {\n NetworkConfigs = new[]\n {\n new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigNetworkConfigArgs\n {\n Subnet = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-central1/subnetworks/default\",\n },\n },\n },\n },\n RebalanceConfig = new Gcp.ManagedKafka.Inputs.ClusterRebalanceConfigArgs\n {\n Mode = \"NO_REBALANCE\",\n },\n Labels = \n {\n { \"key\", \"value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/managedkafka\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\t_, err = managedkafka.NewCluster(ctx, \"example\", \u0026managedkafka.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCapacityConfig: \u0026managedkafka.ClusterCapacityConfigArgs{\n\t\t\t\tVcpuCount: pulumi.String(\"3\"),\n\t\t\t\tMemoryBytes: pulumi.String(\"3221225472\"),\n\t\t\t},\n\t\t\tGcpConfig: \u0026managedkafka.ClusterGcpConfigArgs{\n\t\t\t\tAccessConfig: \u0026managedkafka.ClusterGcpConfigAccessConfigArgs{\n\t\t\t\t\tNetworkConfigs: managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArray{\n\t\t\t\t\t\t\u0026managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArgs{\n\t\t\t\t\t\t\tSubnet: pulumi.String(fmt.Sprintf(\"projects/%v/regions/us-central1/subnetworks/default\", project.Number)),\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\tRebalanceConfig: \u0026managedkafka.ClusterRebalanceConfigArgs{\n\t\t\t\tMode: pulumi.String(\"NO_REBALANCE\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.managedkafka.Cluster;\nimport com.pulumi.gcp.managedkafka.ClusterArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterCapacityConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigAccessConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterRebalanceConfigArgs;\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 example = new Cluster(\"example\", ClusterArgs.builder()\n .clusterId(\"my-cluster\")\n .location(\"us-central1\")\n .capacityConfig(ClusterCapacityConfigArgs.builder()\n .vcpuCount(3)\n .memoryBytes(3221225472)\n .build())\n .gcpConfig(ClusterGcpConfigArgs.builder()\n .accessConfig(ClusterGcpConfigAccessConfigArgs.builder()\n .networkConfigs(ClusterGcpConfigAccessConfigNetworkConfigArgs.builder()\n .subnet(String.format(\"projects/%s/regions/us-central1/subnetworks/default\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build())\n .build())\n .rebalanceConfig(ClusterRebalanceConfigArgs.builder()\n .mode(\"NO_REBALANCE\")\n .build())\n .labels(Map.of(\"key\", \"value\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:managedkafka:Cluster\n properties:\n clusterId: my-cluster\n location: us-central1\n capacityConfig:\n vcpuCount: 3\n memoryBytes: 3.221225472e+09\n gcpConfig:\n accessConfig:\n networkConfigs:\n - subnet: projects/${project.number}/regions/us-central1/subnetworks/default\n rebalanceConfig:\n mode: NO_REBALANCE\n labels:\n key: value\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Managedkafka Cluster Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-key-ring\",\n location: \"us-central1\",\n});\nconst key = new gcp.kms.CryptoKey(\"key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.managedkafka.Cluster(\"example\", {\n clusterId: \"my-cluster\",\n location: \"us-central1\",\n capacityConfig: {\n vcpuCount: \"3\",\n memoryBytes: \"3221225472\",\n },\n gcpConfig: {\n accessConfig: {\n networkConfigs: [{\n subnet: project.then(project =\u003e `projects/${project.number}/regions/us-central1/subnetworks/default`),\n }],\n },\n kmsKey: key.id,\n },\n});\nconst kafkaServiceIdentity = new gcp.projects.ServiceIdentity(\"kafka_service_identity\", {\n project: project.then(project =\u003e project.projectId),\n service: \"managedkafka.googleapis.com\",\n});\nconst cryptoKeyBinding = new gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\", {\n cryptoKeyId: key.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-managedkafka.iam.gserviceaccount.com`)],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-key-ring\",\n location=\"us-central1\")\nkey = gcp.kms.CryptoKey(\"key\",\n name=\"example-key\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\nexample = gcp.managedkafka.Cluster(\"example\",\n cluster_id=\"my-cluster\",\n location=\"us-central1\",\n capacity_config={\n \"vcpuCount\": \"3\",\n \"memoryBytes\": \"3221225472\",\n },\n gcp_config={\n \"accessConfig\": {\n \"networkConfigs\": [{\n \"subnet\": f\"projects/{project.number}/regions/us-central1/subnetworks/default\",\n }],\n },\n \"kmsKey\": key.id,\n })\nkafka_service_identity = gcp.projects.ServiceIdentity(\"kafka_service_identity\",\n project=project.project_id,\n service=\"managedkafka.googleapis.com\")\ncrypto_key_binding = gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\",\n crypto_key_id=key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-managedkafka.iam.gserviceaccount.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 keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-key-ring\",\n Location = \"us-central1\",\n });\n\n var key = new Gcp.Kms.CryptoKey(\"key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.ManagedKafka.Cluster(\"example\", new()\n {\n ClusterId = \"my-cluster\",\n Location = \"us-central1\",\n CapacityConfig = new Gcp.ManagedKafka.Inputs.ClusterCapacityConfigArgs\n {\n VcpuCount = \"3\",\n MemoryBytes = \"3221225472\",\n },\n GcpConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigArgs\n {\n AccessConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigArgs\n {\n NetworkConfigs = new[]\n {\n new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigNetworkConfigArgs\n {\n Subnet = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-central1/subnetworks/default\",\n },\n },\n },\n KmsKey = key.Id,\n },\n });\n\n var kafkaServiceIdentity = new Gcp.Projects.ServiceIdentity(\"kafka_service_identity\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Service = \"managedkafka.googleapis.com\",\n });\n\n var cryptoKeyBinding = new Gcp.Kms.CryptoKeyIAMBinding(\"crypto_key_binding\", new()\n {\n CryptoKeyId = key.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-managedkafka.iam.gserviceaccount.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/managedkafka\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-key-ring\"),\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\tkey, err := kms.NewCryptoKey(ctx, \"key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\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\t_, err = managedkafka.NewCluster(ctx, \"example\", \u0026managedkafka.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCapacityConfig: \u0026managedkafka.ClusterCapacityConfigArgs{\n\t\t\t\tVcpuCount: pulumi.String(\"3\"),\n\t\t\t\tMemoryBytes: pulumi.String(\"3221225472\"),\n\t\t\t},\n\t\t\tGcpConfig: \u0026managedkafka.ClusterGcpConfigArgs{\n\t\t\t\tAccessConfig: \u0026managedkafka.ClusterGcpConfigAccessConfigArgs{\n\t\t\t\t\tNetworkConfigs: managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArray{\n\t\t\t\t\t\t\u0026managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArgs{\n\t\t\t\t\t\t\tSubnet: pulumi.String(fmt.Sprintf(\"projects/%v/regions/us-central1/subnetworks/default\", project.Number)),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tKmsKey: key.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewServiceIdentity(ctx, \"kafka_service_identity\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tService: pulumi.String(\"managedkafka.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMBinding(ctx, \"crypto_key_binding\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: key.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-managedkafka.iam.gserviceaccount.com\", project.Number)),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.managedkafka.Cluster;\nimport com.pulumi.gcp.managedkafka.ClusterArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterCapacityConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigAccessConfigArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\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 .name(\"example-key-ring\")\n .location(\"us-central1\")\n .build());\n\n var key = new CryptoKey(\"key\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var example = new Cluster(\"example\", ClusterArgs.builder()\n .clusterId(\"my-cluster\")\n .location(\"us-central1\")\n .capacityConfig(ClusterCapacityConfigArgs.builder()\n .vcpuCount(3)\n .memoryBytes(3221225472)\n .build())\n .gcpConfig(ClusterGcpConfigArgs.builder()\n .accessConfig(ClusterGcpConfigAccessConfigArgs.builder()\n .networkConfigs(ClusterGcpConfigAccessConfigNetworkConfigArgs.builder()\n .subnet(String.format(\"projects/%s/regions/us-central1/subnetworks/default\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build())\n .kmsKey(key.id())\n .build())\n .build());\n\n var kafkaServiceIdentity = new ServiceIdentity(\"kafkaServiceIdentity\", ServiceIdentityArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .service(\"managedkafka.googleapis.com\")\n .build());\n\n var cryptoKeyBinding = new CryptoKeyIAMBinding(\"cryptoKeyBinding\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(key.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-managedkafka.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:managedkafka:Cluster\n properties:\n clusterId: my-cluster\n location: us-central1\n capacityConfig:\n vcpuCount: 3\n memoryBytes: 3.221225472e+09\n gcpConfig:\n accessConfig:\n networkConfigs:\n - subnet: projects/${project.number}/regions/us-central1/subnetworks/default\n kmsKey: ${key.id}\n kafkaServiceIdentity:\n type: gcp:projects:ServiceIdentity\n name: kafka_service_identity\n properties:\n project: ${project.projectId}\n service: managedkafka.googleapis.com\n key:\n type: gcp:kms:CryptoKey\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-key-ring\n location: us-central1\n cryptoKeyBinding:\n type: gcp:kms:CryptoKeyIAMBinding\n name: crypto_key_binding\n properties:\n cryptoKeyId: ${key.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${project.number}@gcp-sa-managedkafka.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster_id}}`\n\n* `{{project}}/{{location}}/{{cluster_id}}`\n\n* `{{location}}/{{cluster_id}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:managedkafka/cluster:Cluster default projects/{{project}}/locations/{{location}}/clusters/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:managedkafka/cluster:Cluster default {{project}}/{{location}}/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:managedkafka/cluster:Cluster default {{location}}/{{cluster_id}}\n```\n\n", + "description": "## Example Usage\n\n### Managedkafka Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.managedkafka.Cluster(\"example\", {\n clusterId: \"my-cluster\",\n location: \"us-central1\",\n capacityConfig: {\n vcpuCount: \"3\",\n memoryBytes: \"3221225472\",\n },\n gcpConfig: {\n accessConfig: {\n networkConfigs: [{\n subnet: project.then(project =\u003e `projects/${project.number}/regions/us-central1/subnetworks/default`),\n }],\n },\n },\n rebalanceConfig: {\n mode: \"NO_REBALANCE\",\n },\n labels: {\n key: \"value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.managedkafka.Cluster(\"example\",\n cluster_id=\"my-cluster\",\n location=\"us-central1\",\n capacity_config={\n \"vcpu_count\": \"3\",\n \"memory_bytes\": \"3221225472\",\n },\n gcp_config={\n \"access_config\": {\n \"network_configs\": [{\n \"subnet\": f\"projects/{project.number}/regions/us-central1/subnetworks/default\",\n }],\n },\n },\n rebalance_config={\n \"mode\": \"NO_REBALANCE\",\n },\n labels={\n \"key\": \"value\",\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 example = new Gcp.ManagedKafka.Cluster(\"example\", new()\n {\n ClusterId = \"my-cluster\",\n Location = \"us-central1\",\n CapacityConfig = new Gcp.ManagedKafka.Inputs.ClusterCapacityConfigArgs\n {\n VcpuCount = \"3\",\n MemoryBytes = \"3221225472\",\n },\n GcpConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigArgs\n {\n AccessConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigArgs\n {\n NetworkConfigs = new[]\n {\n new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigNetworkConfigArgs\n {\n Subnet = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-central1/subnetworks/default\",\n },\n },\n },\n },\n RebalanceConfig = new Gcp.ManagedKafka.Inputs.ClusterRebalanceConfigArgs\n {\n Mode = \"NO_REBALANCE\",\n },\n Labels = \n {\n { \"key\", \"value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/managedkafka\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\t_, err = managedkafka.NewCluster(ctx, \"example\", \u0026managedkafka.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCapacityConfig: \u0026managedkafka.ClusterCapacityConfigArgs{\n\t\t\t\tVcpuCount: pulumi.String(\"3\"),\n\t\t\t\tMemoryBytes: pulumi.String(\"3221225472\"),\n\t\t\t},\n\t\t\tGcpConfig: \u0026managedkafka.ClusterGcpConfigArgs{\n\t\t\t\tAccessConfig: \u0026managedkafka.ClusterGcpConfigAccessConfigArgs{\n\t\t\t\t\tNetworkConfigs: managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArray{\n\t\t\t\t\t\t\u0026managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArgs{\n\t\t\t\t\t\t\tSubnet: pulumi.String(fmt.Sprintf(\"projects/%v/regions/us-central1/subnetworks/default\", project.Number)),\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\tRebalanceConfig: \u0026managedkafka.ClusterRebalanceConfigArgs{\n\t\t\t\tMode: pulumi.String(\"NO_REBALANCE\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.managedkafka.Cluster;\nimport com.pulumi.gcp.managedkafka.ClusterArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterCapacityConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigAccessConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterRebalanceConfigArgs;\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 example = new Cluster(\"example\", ClusterArgs.builder()\n .clusterId(\"my-cluster\")\n .location(\"us-central1\")\n .capacityConfig(ClusterCapacityConfigArgs.builder()\n .vcpuCount(3)\n .memoryBytes(3221225472)\n .build())\n .gcpConfig(ClusterGcpConfigArgs.builder()\n .accessConfig(ClusterGcpConfigAccessConfigArgs.builder()\n .networkConfigs(ClusterGcpConfigAccessConfigNetworkConfigArgs.builder()\n .subnet(String.format(\"projects/%s/regions/us-central1/subnetworks/default\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build())\n .build())\n .rebalanceConfig(ClusterRebalanceConfigArgs.builder()\n .mode(\"NO_REBALANCE\")\n .build())\n .labels(Map.of(\"key\", \"value\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:managedkafka:Cluster\n properties:\n clusterId: my-cluster\n location: us-central1\n capacityConfig:\n vcpuCount: 3\n memoryBytes: 3.221225472e+09\n gcpConfig:\n accessConfig:\n networkConfigs:\n - subnet: projects/${project.number}/regions/us-central1/subnetworks/default\n rebalanceConfig:\n mode: NO_REBALANCE\n labels:\n key: value\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Managedkafka Cluster Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-key-ring\",\n location: \"us-central1\",\n});\nconst key = new gcp.kms.CryptoKey(\"key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.managedkafka.Cluster(\"example\", {\n clusterId: \"my-cluster\",\n location: \"us-central1\",\n capacityConfig: {\n vcpuCount: \"3\",\n memoryBytes: \"3221225472\",\n },\n gcpConfig: {\n accessConfig: {\n networkConfigs: [{\n subnet: project.then(project =\u003e `projects/${project.number}/regions/us-central1/subnetworks/default`),\n }],\n },\n kmsKey: key.id,\n },\n});\nconst kafkaServiceIdentity = new gcp.projects.ServiceIdentity(\"kafka_service_identity\", {\n project: project.then(project =\u003e project.projectId),\n service: \"managedkafka.googleapis.com\",\n});\nconst cryptoKeyBinding = new gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\", {\n cryptoKeyId: key.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-managedkafka.iam.gserviceaccount.com`)],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-key-ring\",\n location=\"us-central1\")\nkey = gcp.kms.CryptoKey(\"key\",\n name=\"example-key\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\nexample = gcp.managedkafka.Cluster(\"example\",\n cluster_id=\"my-cluster\",\n location=\"us-central1\",\n capacity_config={\n \"vcpu_count\": \"3\",\n \"memory_bytes\": \"3221225472\",\n },\n gcp_config={\n \"access_config\": {\n \"network_configs\": [{\n \"subnet\": f\"projects/{project.number}/regions/us-central1/subnetworks/default\",\n }],\n },\n \"kms_key\": key.id,\n })\nkafka_service_identity = gcp.projects.ServiceIdentity(\"kafka_service_identity\",\n project=project.project_id,\n service=\"managedkafka.googleapis.com\")\ncrypto_key_binding = gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\",\n crypto_key_id=key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-managedkafka.iam.gserviceaccount.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 keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-key-ring\",\n Location = \"us-central1\",\n });\n\n var key = new Gcp.Kms.CryptoKey(\"key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.ManagedKafka.Cluster(\"example\", new()\n {\n ClusterId = \"my-cluster\",\n Location = \"us-central1\",\n CapacityConfig = new Gcp.ManagedKafka.Inputs.ClusterCapacityConfigArgs\n {\n VcpuCount = \"3\",\n MemoryBytes = \"3221225472\",\n },\n GcpConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigArgs\n {\n AccessConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigArgs\n {\n NetworkConfigs = new[]\n {\n new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigNetworkConfigArgs\n {\n Subnet = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-central1/subnetworks/default\",\n },\n },\n },\n KmsKey = key.Id,\n },\n });\n\n var kafkaServiceIdentity = new Gcp.Projects.ServiceIdentity(\"kafka_service_identity\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Service = \"managedkafka.googleapis.com\",\n });\n\n var cryptoKeyBinding = new Gcp.Kms.CryptoKeyIAMBinding(\"crypto_key_binding\", new()\n {\n CryptoKeyId = key.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-managedkafka.iam.gserviceaccount.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/managedkafka\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-key-ring\"),\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\tkey, err := kms.NewCryptoKey(ctx, \"key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\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\t_, err = managedkafka.NewCluster(ctx, \"example\", \u0026managedkafka.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCapacityConfig: \u0026managedkafka.ClusterCapacityConfigArgs{\n\t\t\t\tVcpuCount: pulumi.String(\"3\"),\n\t\t\t\tMemoryBytes: pulumi.String(\"3221225472\"),\n\t\t\t},\n\t\t\tGcpConfig: \u0026managedkafka.ClusterGcpConfigArgs{\n\t\t\t\tAccessConfig: \u0026managedkafka.ClusterGcpConfigAccessConfigArgs{\n\t\t\t\t\tNetworkConfigs: managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArray{\n\t\t\t\t\t\t\u0026managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArgs{\n\t\t\t\t\t\t\tSubnet: pulumi.String(fmt.Sprintf(\"projects/%v/regions/us-central1/subnetworks/default\", project.Number)),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tKmsKey: key.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewServiceIdentity(ctx, \"kafka_service_identity\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tService: pulumi.String(\"managedkafka.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMBinding(ctx, \"crypto_key_binding\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: key.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-managedkafka.iam.gserviceaccount.com\", project.Number)),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.managedkafka.Cluster;\nimport com.pulumi.gcp.managedkafka.ClusterArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterCapacityConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigAccessConfigArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\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 .name(\"example-key-ring\")\n .location(\"us-central1\")\n .build());\n\n var key = new CryptoKey(\"key\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var example = new Cluster(\"example\", ClusterArgs.builder()\n .clusterId(\"my-cluster\")\n .location(\"us-central1\")\n .capacityConfig(ClusterCapacityConfigArgs.builder()\n .vcpuCount(3)\n .memoryBytes(3221225472)\n .build())\n .gcpConfig(ClusterGcpConfigArgs.builder()\n .accessConfig(ClusterGcpConfigAccessConfigArgs.builder()\n .networkConfigs(ClusterGcpConfigAccessConfigNetworkConfigArgs.builder()\n .subnet(String.format(\"projects/%s/regions/us-central1/subnetworks/default\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build())\n .kmsKey(key.id())\n .build())\n .build());\n\n var kafkaServiceIdentity = new ServiceIdentity(\"kafkaServiceIdentity\", ServiceIdentityArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .service(\"managedkafka.googleapis.com\")\n .build());\n\n var cryptoKeyBinding = new CryptoKeyIAMBinding(\"cryptoKeyBinding\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(key.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-managedkafka.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:managedkafka:Cluster\n properties:\n clusterId: my-cluster\n location: us-central1\n capacityConfig:\n vcpuCount: 3\n memoryBytes: 3.221225472e+09\n gcpConfig:\n accessConfig:\n networkConfigs:\n - subnet: projects/${project.number}/regions/us-central1/subnetworks/default\n kmsKey: ${key.id}\n kafkaServiceIdentity:\n type: gcp:projects:ServiceIdentity\n name: kafka_service_identity\n properties:\n project: ${project.projectId}\n service: managedkafka.googleapis.com\n key:\n type: gcp:kms:CryptoKey\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-key-ring\n location: us-central1\n cryptoKeyBinding:\n type: gcp:kms:CryptoKeyIAMBinding\n name: crypto_key_binding\n properties:\n cryptoKeyId: ${key.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${project.number}@gcp-sa-managedkafka.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster_id}}`\n\n* `{{project}}/{{location}}/{{cluster_id}}`\n\n* `{{location}}/{{cluster_id}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:managedkafka/cluster:Cluster default projects/{{project}}/locations/{{location}}/clusters/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:managedkafka/cluster:Cluster default {{project}}/{{location}}/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:managedkafka/cluster:Cluster default {{location}}/{{cluster_id}}\n```\n\n", "properties": { "capacityConfig": { "$ref": "#/types/gcp:managedkafka/ClusterCapacityConfig:ClusterCapacityConfig", @@ -211530,7 +211530,7 @@ } }, "gcp:managedkafka/topic:Topic": { - "description": "## Example Usage\n\n### Managedkafka Topic Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cluster = new gcp.managedkafka.Cluster(\"cluster\", {\n clusterId: \"my-cluster\",\n location: \"us-central1\",\n capacityConfig: {\n vcpuCount: \"3\",\n memoryBytes: \"3221225472\",\n },\n gcpConfig: {\n accessConfig: {\n networkConfigs: [{\n subnet: project.then(project =\u003e `projects/${project.number}/regions/us-central1/subnetworks/default`),\n }],\n },\n },\n});\nconst example = new gcp.managedkafka.Topic(\"example\", {\n topicId: \"my-topic\",\n cluster: cluster.clusterId,\n location: \"us-central1\",\n partitionCount: 2,\n replicationFactor: 3,\n configs: {\n \"cleanup.policy\": \"compact\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncluster = gcp.managedkafka.Cluster(\"cluster\",\n cluster_id=\"my-cluster\",\n location=\"us-central1\",\n capacity_config={\n \"vcpuCount\": \"3\",\n \"memoryBytes\": \"3221225472\",\n },\n gcp_config={\n \"accessConfig\": {\n \"networkConfigs\": [{\n \"subnet\": f\"projects/{project.number}/regions/us-central1/subnetworks/default\",\n }],\n },\n })\nexample = gcp.managedkafka.Topic(\"example\",\n topic_id=\"my-topic\",\n cluster=cluster.cluster_id,\n location=\"us-central1\",\n partition_count=2,\n replication_factor=3,\n configs={\n \"cleanup.policy\": \"compact\",\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 cluster = new Gcp.ManagedKafka.Cluster(\"cluster\", new()\n {\n ClusterId = \"my-cluster\",\n Location = \"us-central1\",\n CapacityConfig = new Gcp.ManagedKafka.Inputs.ClusterCapacityConfigArgs\n {\n VcpuCount = \"3\",\n MemoryBytes = \"3221225472\",\n },\n GcpConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigArgs\n {\n AccessConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigArgs\n {\n NetworkConfigs = new[]\n {\n new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigNetworkConfigArgs\n {\n Subnet = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-central1/subnetworks/default\",\n },\n },\n },\n },\n });\n\n var example = new Gcp.ManagedKafka.Topic(\"example\", new()\n {\n TopicId = \"my-topic\",\n Cluster = cluster.ClusterId,\n Location = \"us-central1\",\n PartitionCount = 2,\n ReplicationFactor = 3,\n Configs = \n {\n { \"cleanup.policy\", \"compact\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/managedkafka\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tcluster, err := managedkafka.NewCluster(ctx, \"cluster\", \u0026managedkafka.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCapacityConfig: \u0026managedkafka.ClusterCapacityConfigArgs{\n\t\t\t\tVcpuCount: pulumi.String(\"3\"),\n\t\t\t\tMemoryBytes: pulumi.String(\"3221225472\"),\n\t\t\t},\n\t\t\tGcpConfig: \u0026managedkafka.ClusterGcpConfigArgs{\n\t\t\t\tAccessConfig: \u0026managedkafka.ClusterGcpConfigAccessConfigArgs{\n\t\t\t\t\tNetworkConfigs: managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArray{\n\t\t\t\t\t\t\u0026managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArgs{\n\t\t\t\t\t\t\tSubnet: pulumi.String(fmt.Sprintf(\"projects/%v/regions/us-central1/subnetworks/default\", project.Number)),\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 = managedkafka.NewTopic(ctx, \"example\", \u0026managedkafka.TopicArgs{\n\t\t\tTopicId: pulumi.String(\"my-topic\"),\n\t\t\tCluster: cluster.ClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPartitionCount: pulumi.Int(2),\n\t\t\tReplicationFactor: pulumi.Int(3),\n\t\t\tConfigs: pulumi.StringMap{\n\t\t\t\t\"cleanup.policy\": pulumi.String(\"compact\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.managedkafka.Cluster;\nimport com.pulumi.gcp.managedkafka.ClusterArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterCapacityConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigAccessConfigArgs;\nimport com.pulumi.gcp.managedkafka.Topic;\nimport com.pulumi.gcp.managedkafka.TopicArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .clusterId(\"my-cluster\")\n .location(\"us-central1\")\n .capacityConfig(ClusterCapacityConfigArgs.builder()\n .vcpuCount(3)\n .memoryBytes(3221225472)\n .build())\n .gcpConfig(ClusterGcpConfigArgs.builder()\n .accessConfig(ClusterGcpConfigAccessConfigArgs.builder()\n .networkConfigs(ClusterGcpConfigAccessConfigNetworkConfigArgs.builder()\n .subnet(String.format(\"projects/%s/regions/us-central1/subnetworks/default\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build())\n .build())\n .build());\n\n var example = new Topic(\"example\", TopicArgs.builder()\n .topicId(\"my-topic\")\n .cluster(cluster.clusterId())\n .location(\"us-central1\")\n .partitionCount(2)\n .replicationFactor(3)\n .configs(Map.of(\"cleanup.policy\", \"compact\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:managedkafka:Cluster\n properties:\n clusterId: my-cluster\n location: us-central1\n capacityConfig:\n vcpuCount: 3\n memoryBytes: 3.221225472e+09\n gcpConfig:\n accessConfig:\n networkConfigs:\n - subnet: projects/${project.number}/regions/us-central1/subnetworks/default\n example:\n type: gcp:managedkafka:Topic\n properties:\n topicId: my-topic\n cluster: ${cluster.clusterId}\n location: us-central1\n partitionCount: 2\n replicationFactor: 3\n configs:\n cleanup.policy: compact\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTopic can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/topics/{{topic_id}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{topic_id}}`\n\n* `{{location}}/{{cluster}}/{{topic_id}}`\n\nWhen using the `pulumi import` command, Topic can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:managedkafka/topic:Topic default projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/topics/{{topic_id}}\n```\n\n```sh\n$ pulumi import gcp:managedkafka/topic:Topic default {{project}}/{{location}}/{{cluster}}/{{topic_id}}\n```\n\n```sh\n$ pulumi import gcp:managedkafka/topic:Topic default {{location}}/{{cluster}}/{{topic_id}}\n```\n\n", + "description": "## Example Usage\n\n### Managedkafka Topic Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cluster = new gcp.managedkafka.Cluster(\"cluster\", {\n clusterId: \"my-cluster\",\n location: \"us-central1\",\n capacityConfig: {\n vcpuCount: \"3\",\n memoryBytes: \"3221225472\",\n },\n gcpConfig: {\n accessConfig: {\n networkConfigs: [{\n subnet: project.then(project =\u003e `projects/${project.number}/regions/us-central1/subnetworks/default`),\n }],\n },\n },\n});\nconst example = new gcp.managedkafka.Topic(\"example\", {\n topicId: \"my-topic\",\n cluster: cluster.clusterId,\n location: \"us-central1\",\n partitionCount: 2,\n replicationFactor: 3,\n configs: {\n \"cleanup.policy\": \"compact\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncluster = gcp.managedkafka.Cluster(\"cluster\",\n cluster_id=\"my-cluster\",\n location=\"us-central1\",\n capacity_config={\n \"vcpu_count\": \"3\",\n \"memory_bytes\": \"3221225472\",\n },\n gcp_config={\n \"access_config\": {\n \"network_configs\": [{\n \"subnet\": f\"projects/{project.number}/regions/us-central1/subnetworks/default\",\n }],\n },\n })\nexample = gcp.managedkafka.Topic(\"example\",\n topic_id=\"my-topic\",\n cluster=cluster.cluster_id,\n location=\"us-central1\",\n partition_count=2,\n replication_factor=3,\n configs={\n \"cleanup.policy\": \"compact\",\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 cluster = new Gcp.ManagedKafka.Cluster(\"cluster\", new()\n {\n ClusterId = \"my-cluster\",\n Location = \"us-central1\",\n CapacityConfig = new Gcp.ManagedKafka.Inputs.ClusterCapacityConfigArgs\n {\n VcpuCount = \"3\",\n MemoryBytes = \"3221225472\",\n },\n GcpConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigArgs\n {\n AccessConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigArgs\n {\n NetworkConfigs = new[]\n {\n new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigNetworkConfigArgs\n {\n Subnet = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-central1/subnetworks/default\",\n },\n },\n },\n },\n });\n\n var example = new Gcp.ManagedKafka.Topic(\"example\", new()\n {\n TopicId = \"my-topic\",\n Cluster = cluster.ClusterId,\n Location = \"us-central1\",\n PartitionCount = 2,\n ReplicationFactor = 3,\n Configs = \n {\n { \"cleanup.policy\", \"compact\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/managedkafka\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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\tcluster, err := managedkafka.NewCluster(ctx, \"cluster\", \u0026managedkafka.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCapacityConfig: \u0026managedkafka.ClusterCapacityConfigArgs{\n\t\t\t\tVcpuCount: pulumi.String(\"3\"),\n\t\t\t\tMemoryBytes: pulumi.String(\"3221225472\"),\n\t\t\t},\n\t\t\tGcpConfig: \u0026managedkafka.ClusterGcpConfigArgs{\n\t\t\t\tAccessConfig: \u0026managedkafka.ClusterGcpConfigAccessConfigArgs{\n\t\t\t\t\tNetworkConfigs: managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArray{\n\t\t\t\t\t\t\u0026managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArgs{\n\t\t\t\t\t\t\tSubnet: pulumi.String(fmt.Sprintf(\"projects/%v/regions/us-central1/subnetworks/default\", project.Number)),\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 = managedkafka.NewTopic(ctx, \"example\", \u0026managedkafka.TopicArgs{\n\t\t\tTopicId: pulumi.String(\"my-topic\"),\n\t\t\tCluster: cluster.ClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPartitionCount: pulumi.Int(2),\n\t\t\tReplicationFactor: pulumi.Int(3),\n\t\t\tConfigs: pulumi.StringMap{\n\t\t\t\t\"cleanup.policy\": pulumi.String(\"compact\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.managedkafka.Cluster;\nimport com.pulumi.gcp.managedkafka.ClusterArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterCapacityConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigAccessConfigArgs;\nimport com.pulumi.gcp.managedkafka.Topic;\nimport com.pulumi.gcp.managedkafka.TopicArgs;\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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .clusterId(\"my-cluster\")\n .location(\"us-central1\")\n .capacityConfig(ClusterCapacityConfigArgs.builder()\n .vcpuCount(3)\n .memoryBytes(3221225472)\n .build())\n .gcpConfig(ClusterGcpConfigArgs.builder()\n .accessConfig(ClusterGcpConfigAccessConfigArgs.builder()\n .networkConfigs(ClusterGcpConfigAccessConfigNetworkConfigArgs.builder()\n .subnet(String.format(\"projects/%s/regions/us-central1/subnetworks/default\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build())\n .build())\n .build());\n\n var example = new Topic(\"example\", TopicArgs.builder()\n .topicId(\"my-topic\")\n .cluster(cluster.clusterId())\n .location(\"us-central1\")\n .partitionCount(2)\n .replicationFactor(3)\n .configs(Map.of(\"cleanup.policy\", \"compact\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:managedkafka:Cluster\n properties:\n clusterId: my-cluster\n location: us-central1\n capacityConfig:\n vcpuCount: 3\n memoryBytes: 3.221225472e+09\n gcpConfig:\n accessConfig:\n networkConfigs:\n - subnet: projects/${project.number}/regions/us-central1/subnetworks/default\n example:\n type: gcp:managedkafka:Topic\n properties:\n topicId: my-topic\n cluster: ${cluster.clusterId}\n location: us-central1\n partitionCount: 2\n replicationFactor: 3\n configs:\n cleanup.policy: compact\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTopic can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/topics/{{topic_id}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{topic_id}}`\n\n* `{{location}}/{{cluster}}/{{topic_id}}`\n\nWhen using the `pulumi import` command, Topic can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:managedkafka/topic:Topic default projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/topics/{{topic_id}}\n```\n\n```sh\n$ pulumi import gcp:managedkafka/topic:Topic default {{project}}/{{location}}/{{cluster}}/{{topic_id}}\n```\n\n```sh\n$ pulumi import gcp:managedkafka/topic:Topic default {{location}}/{{cluster}}/{{topic_id}}\n```\n\n", "properties": { "cluster": { "type": "string", @@ -211668,7 +211668,7 @@ } }, "gcp:memcache/instance:Instance": { - "description": "A Google Cloud Memcache instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/memorystore/docs/memcached/reference/rest/v1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/memcache/docs/creating-instances)\n\n## Example Usage\n\n### Memcache Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example assumes this network already exists.\n// The API creates a tenant network per network authorized for a\n// Memcache instance and that network is not deleted when the user-created\n// network (authorized_network) is deleted, so this prevents issues\n// with tenant network quota.\n// If this network hasn't been created and you are using this example in your\n// config, add an additional network resource or change\n// this from \"data\"to \"resource\"\nconst memcacheNetwork = new gcp.compute.Network(\"memcache_network\", {name: \"test-network\"});\nconst serviceRange = new gcp.compute.GlobalAddress(\"service_range\", {\n name: \"address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: memcacheNetwork.id,\n});\nconst privateServiceConnection = new gcp.servicenetworking.Connection(\"private_service_connection\", {\n network: memcacheNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [serviceRange.name],\n});\nconst instance = new gcp.memcache.Instance(\"instance\", {\n name: \"test-instance\",\n authorizedNetwork: privateServiceConnection.network,\n labels: {\n env: \"test\",\n },\n nodeConfig: {\n cpuCount: 1,\n memorySizeMb: 1024,\n },\n nodeCount: 1,\n memcacheVersion: \"MEMCACHE_1_5\",\n maintenancePolicy: {\n weeklyMaintenanceWindows: [{\n day: \"SATURDAY\",\n duration: \"14400s\",\n startTime: {\n hours: 0,\n minutes: 30,\n seconds: 0,\n nanos: 0,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example assumes this network already exists.\n# The API creates a tenant network per network authorized for a\n# Memcache instance and that network is not deleted when the user-created\n# network (authorized_network) is deleted, so this prevents issues\n# with tenant network quota.\n# If this network hasn't been created and you are using this example in your\n# config, add an additional network resource or change\n# this from \"data\"to \"resource\"\nmemcache_network = gcp.compute.Network(\"memcache_network\", name=\"test-network\")\nservice_range = gcp.compute.GlobalAddress(\"service_range\",\n name=\"address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=memcache_network.id)\nprivate_service_connection = gcp.servicenetworking.Connection(\"private_service_connection\",\n network=memcache_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[service_range.name])\ninstance = gcp.memcache.Instance(\"instance\",\n name=\"test-instance\",\n authorized_network=private_service_connection.network,\n labels={\n \"env\": \"test\",\n },\n node_config={\n \"cpuCount\": 1,\n \"memorySizeMb\": 1024,\n },\n node_count=1,\n memcache_version=\"MEMCACHE_1_5\",\n maintenance_policy={\n \"weeklyMaintenanceWindows\": [{\n \"day\": \"SATURDAY\",\n \"duration\": \"14400s\",\n \"startTime\": {\n \"hours\": 0,\n \"minutes\": 30,\n \"seconds\": 0,\n \"nanos\": 0,\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 // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Memcache instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var memcacheNetwork = new Gcp.Compute.Network(\"memcache_network\", new()\n {\n Name = \"test-network\",\n });\n\n var serviceRange = new Gcp.Compute.GlobalAddress(\"service_range\", new()\n {\n Name = \"address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = memcacheNetwork.Id,\n });\n\n var privateServiceConnection = new Gcp.ServiceNetworking.Connection(\"private_service_connection\", new()\n {\n Network = memcacheNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n serviceRange.Name,\n },\n });\n\n var instance = new Gcp.Memcache.Instance(\"instance\", new()\n {\n Name = \"test-instance\",\n AuthorizedNetwork = privateServiceConnection.Network,\n Labels = \n {\n { \"env\", \"test\" },\n },\n NodeConfig = new Gcp.Memcache.Inputs.InstanceNodeConfigArgs\n {\n CpuCount = 1,\n MemorySizeMb = 1024,\n },\n NodeCount = 1,\n MemcacheVersion = \"MEMCACHE_1_5\",\n MaintenancePolicy = new Gcp.Memcache.Inputs.InstanceMaintenancePolicyArgs\n {\n WeeklyMaintenanceWindows = new[]\n {\n new Gcp.Memcache.Inputs.InstanceMaintenancePolicyWeeklyMaintenanceWindowArgs\n {\n Day = \"SATURDAY\",\n Duration = \"14400s\",\n StartTime = new Gcp.Memcache.Inputs.InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs\n {\n Hours = 0,\n Minutes = 30,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/memcache\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t// This example assumes this network already exists.\n\t\t// The API creates a tenant network per network authorized for a\n\t\t// Memcache instance and that network is not deleted when the user-created\n\t\t// network (authorized_network) is deleted, so this prevents issues\n\t\t// with tenant network quota.\n\t\t// If this network hasn't been created and you are using this example in your\n\t\t// config, add an additional network resource or change\n\t\t// this from \"data\"to \"resource\"\n\t\tmemcacheNetwork, err := compute.NewNetwork(ctx, \"memcache_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"test-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceRange, err := compute.NewGlobalAddress(ctx, \"service_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: memcacheNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateServiceConnection, err := servicenetworking.NewConnection(ctx, \"private_service_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: memcacheNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tserviceRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = memcache.NewInstance(ctx, \"instance\", \u0026memcache.InstanceArgs{\n\t\t\tName: pulumi.String(\"test-instance\"),\n\t\t\tAuthorizedNetwork: privateServiceConnection.Network,\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"test\"),\n\t\t\t},\n\t\t\tNodeConfig: \u0026memcache.InstanceNodeConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(1),\n\t\t\t\tMemorySizeMb: pulumi.Int(1024),\n\t\t\t},\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t\tMemcacheVersion: pulumi.String(\"MEMCACHE_1_5\"),\n\t\t\tMaintenancePolicy: \u0026memcache.InstanceMaintenancePolicyArgs{\n\t\t\t\tWeeklyMaintenanceWindows: memcache.InstanceMaintenancePolicyWeeklyMaintenanceWindowArray{\n\t\t\t\t\t\u0026memcache.InstanceMaintenancePolicyWeeklyMaintenanceWindowArgs{\n\t\t\t\t\t\tDay: pulumi.String(\"SATURDAY\"),\n\t\t\t\t\t\tDuration: pulumi.String(\"14400s\"),\n\t\t\t\t\t\tStartTime: \u0026memcache.InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\t\t\tNanos: pulumi.Int(0),\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.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.memcache.Instance;\nimport com.pulumi.gcp.memcache.InstanceArgs;\nimport com.pulumi.gcp.memcache.inputs.InstanceNodeConfigArgs;\nimport com.pulumi.gcp.memcache.inputs.InstanceMaintenancePolicyArgs;\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 // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Memcache instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var memcacheNetwork = new Network(\"memcacheNetwork\", NetworkArgs.builder()\n .name(\"test-network\")\n .build());\n\n var serviceRange = new GlobalAddress(\"serviceRange\", GlobalAddressArgs.builder()\n .name(\"address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(memcacheNetwork.id())\n .build());\n\n var privateServiceConnection = new Connection(\"privateServiceConnection\", ConnectionArgs.builder()\n .network(memcacheNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(serviceRange.name())\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .name(\"test-instance\")\n .authorizedNetwork(privateServiceConnection.network())\n .labels(Map.of(\"env\", \"test\"))\n .nodeConfig(InstanceNodeConfigArgs.builder()\n .cpuCount(1)\n .memorySizeMb(1024)\n .build())\n .nodeCount(1)\n .memcacheVersion(\"MEMCACHE_1_5\")\n .maintenancePolicy(InstanceMaintenancePolicyArgs.builder()\n .weeklyMaintenanceWindows(InstanceMaintenancePolicyWeeklyMaintenanceWindowArgs.builder()\n .day(\"SATURDAY\")\n .duration(\"14400s\")\n .startTime(InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs.builder()\n .hours(0)\n .minutes(30)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # This example assumes this network already exists.\n # // The API creates a tenant network per network authorized for a\n # // Memcache instance and that network is not deleted when the user-created\n # // network (authorized_network) is deleted, so this prevents issues\n # // with tenant network quota.\n # // If this network hasn't been created and you are using this example in your\n # // config, add an additional network resource or change\n # // this from \"data\"to \"resource\"\n memcacheNetwork:\n type: gcp:compute:Network\n name: memcache_network\n properties:\n name: test-network\n serviceRange:\n type: gcp:compute:GlobalAddress\n name: service_range\n properties:\n name: address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${memcacheNetwork.id}\n privateServiceConnection:\n type: gcp:servicenetworking:Connection\n name: private_service_connection\n properties:\n network: ${memcacheNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${serviceRange.name}\n instance:\n type: gcp:memcache:Instance\n properties:\n name: test-instance\n authorizedNetwork: ${privateServiceConnection.network}\n labels:\n env: test\n nodeConfig:\n cpuCount: 1\n memorySizeMb: 1024\n nodeCount: 1\n memcacheVersion: MEMCACHE_1_5\n maintenancePolicy:\n weeklyMaintenanceWindows:\n - day: SATURDAY\n duration: 14400s\n startTime:\n hours: 0\n minutes: 30\n seconds: 0\n nanos: 0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:memcache/instance:Instance default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:memcache/instance:Instance default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:memcache/instance:Instance default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:memcache/instance:Instance default {{name}}\n```\n\n", + "description": "A Google Cloud Memcache instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/memorystore/docs/memcached/reference/rest/v1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/memcache/docs/creating-instances)\n\n## Example Usage\n\n### Memcache Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example assumes this network already exists.\n// The API creates a tenant network per network authorized for a\n// Memcache instance and that network is not deleted when the user-created\n// network (authorized_network) is deleted, so this prevents issues\n// with tenant network quota.\n// If this network hasn't been created and you are using this example in your\n// config, add an additional network resource or change\n// this from \"data\"to \"resource\"\nconst memcacheNetwork = new gcp.compute.Network(\"memcache_network\", {name: \"test-network\"});\nconst serviceRange = new gcp.compute.GlobalAddress(\"service_range\", {\n name: \"address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: memcacheNetwork.id,\n});\nconst privateServiceConnection = new gcp.servicenetworking.Connection(\"private_service_connection\", {\n network: memcacheNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [serviceRange.name],\n});\nconst instance = new gcp.memcache.Instance(\"instance\", {\n name: \"test-instance\",\n authorizedNetwork: privateServiceConnection.network,\n labels: {\n env: \"test\",\n },\n nodeConfig: {\n cpuCount: 1,\n memorySizeMb: 1024,\n },\n nodeCount: 1,\n memcacheVersion: \"MEMCACHE_1_5\",\n maintenancePolicy: {\n weeklyMaintenanceWindows: [{\n day: \"SATURDAY\",\n duration: \"14400s\",\n startTime: {\n hours: 0,\n minutes: 30,\n seconds: 0,\n nanos: 0,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example assumes this network already exists.\n# The API creates a tenant network per network authorized for a\n# Memcache instance and that network is not deleted when the user-created\n# network (authorized_network) is deleted, so this prevents issues\n# with tenant network quota.\n# If this network hasn't been created and you are using this example in your\n# config, add an additional network resource or change\n# this from \"data\"to \"resource\"\nmemcache_network = gcp.compute.Network(\"memcache_network\", name=\"test-network\")\nservice_range = gcp.compute.GlobalAddress(\"service_range\",\n name=\"address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=memcache_network.id)\nprivate_service_connection = gcp.servicenetworking.Connection(\"private_service_connection\",\n network=memcache_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[service_range.name])\ninstance = gcp.memcache.Instance(\"instance\",\n name=\"test-instance\",\n authorized_network=private_service_connection.network,\n labels={\n \"env\": \"test\",\n },\n node_config={\n \"cpu_count\": 1,\n \"memory_size_mb\": 1024,\n },\n node_count=1,\n memcache_version=\"MEMCACHE_1_5\",\n maintenance_policy={\n \"weekly_maintenance_windows\": [{\n \"day\": \"SATURDAY\",\n \"duration\": \"14400s\",\n \"start_time\": {\n \"hours\": 0,\n \"minutes\": 30,\n \"seconds\": 0,\n \"nanos\": 0,\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 // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Memcache instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var memcacheNetwork = new Gcp.Compute.Network(\"memcache_network\", new()\n {\n Name = \"test-network\",\n });\n\n var serviceRange = new Gcp.Compute.GlobalAddress(\"service_range\", new()\n {\n Name = \"address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = memcacheNetwork.Id,\n });\n\n var privateServiceConnection = new Gcp.ServiceNetworking.Connection(\"private_service_connection\", new()\n {\n Network = memcacheNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n serviceRange.Name,\n },\n });\n\n var instance = new Gcp.Memcache.Instance(\"instance\", new()\n {\n Name = \"test-instance\",\n AuthorizedNetwork = privateServiceConnection.Network,\n Labels = \n {\n { \"env\", \"test\" },\n },\n NodeConfig = new Gcp.Memcache.Inputs.InstanceNodeConfigArgs\n {\n CpuCount = 1,\n MemorySizeMb = 1024,\n },\n NodeCount = 1,\n MemcacheVersion = \"MEMCACHE_1_5\",\n MaintenancePolicy = new Gcp.Memcache.Inputs.InstanceMaintenancePolicyArgs\n {\n WeeklyMaintenanceWindows = new[]\n {\n new Gcp.Memcache.Inputs.InstanceMaintenancePolicyWeeklyMaintenanceWindowArgs\n {\n Day = \"SATURDAY\",\n Duration = \"14400s\",\n StartTime = new Gcp.Memcache.Inputs.InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs\n {\n Hours = 0,\n Minutes = 30,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/memcache\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t// This example assumes this network already exists.\n\t\t// The API creates a tenant network per network authorized for a\n\t\t// Memcache instance and that network is not deleted when the user-created\n\t\t// network (authorized_network) is deleted, so this prevents issues\n\t\t// with tenant network quota.\n\t\t// If this network hasn't been created and you are using this example in your\n\t\t// config, add an additional network resource or change\n\t\t// this from \"data\"to \"resource\"\n\t\tmemcacheNetwork, err := compute.NewNetwork(ctx, \"memcache_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"test-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceRange, err := compute.NewGlobalAddress(ctx, \"service_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: memcacheNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateServiceConnection, err := servicenetworking.NewConnection(ctx, \"private_service_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: memcacheNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tserviceRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = memcache.NewInstance(ctx, \"instance\", \u0026memcache.InstanceArgs{\n\t\t\tName: pulumi.String(\"test-instance\"),\n\t\t\tAuthorizedNetwork: privateServiceConnection.Network,\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"test\"),\n\t\t\t},\n\t\t\tNodeConfig: \u0026memcache.InstanceNodeConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(1),\n\t\t\t\tMemorySizeMb: pulumi.Int(1024),\n\t\t\t},\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t\tMemcacheVersion: pulumi.String(\"MEMCACHE_1_5\"),\n\t\t\tMaintenancePolicy: \u0026memcache.InstanceMaintenancePolicyArgs{\n\t\t\t\tWeeklyMaintenanceWindows: memcache.InstanceMaintenancePolicyWeeklyMaintenanceWindowArray{\n\t\t\t\t\t\u0026memcache.InstanceMaintenancePolicyWeeklyMaintenanceWindowArgs{\n\t\t\t\t\t\tDay: pulumi.String(\"SATURDAY\"),\n\t\t\t\t\t\tDuration: pulumi.String(\"14400s\"),\n\t\t\t\t\t\tStartTime: \u0026memcache.InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\t\t\tNanos: pulumi.Int(0),\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.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.memcache.Instance;\nimport com.pulumi.gcp.memcache.InstanceArgs;\nimport com.pulumi.gcp.memcache.inputs.InstanceNodeConfigArgs;\nimport com.pulumi.gcp.memcache.inputs.InstanceMaintenancePolicyArgs;\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 // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Memcache instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var memcacheNetwork = new Network(\"memcacheNetwork\", NetworkArgs.builder()\n .name(\"test-network\")\n .build());\n\n var serviceRange = new GlobalAddress(\"serviceRange\", GlobalAddressArgs.builder()\n .name(\"address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(memcacheNetwork.id())\n .build());\n\n var privateServiceConnection = new Connection(\"privateServiceConnection\", ConnectionArgs.builder()\n .network(memcacheNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(serviceRange.name())\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .name(\"test-instance\")\n .authorizedNetwork(privateServiceConnection.network())\n .labels(Map.of(\"env\", \"test\"))\n .nodeConfig(InstanceNodeConfigArgs.builder()\n .cpuCount(1)\n .memorySizeMb(1024)\n .build())\n .nodeCount(1)\n .memcacheVersion(\"MEMCACHE_1_5\")\n .maintenancePolicy(InstanceMaintenancePolicyArgs.builder()\n .weeklyMaintenanceWindows(InstanceMaintenancePolicyWeeklyMaintenanceWindowArgs.builder()\n .day(\"SATURDAY\")\n .duration(\"14400s\")\n .startTime(InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs.builder()\n .hours(0)\n .minutes(30)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # This example assumes this network already exists.\n # // The API creates a tenant network per network authorized for a\n # // Memcache instance and that network is not deleted when the user-created\n # // network (authorized_network) is deleted, so this prevents issues\n # // with tenant network quota.\n # // If this network hasn't been created and you are using this example in your\n # // config, add an additional network resource or change\n # // this from \"data\"to \"resource\"\n memcacheNetwork:\n type: gcp:compute:Network\n name: memcache_network\n properties:\n name: test-network\n serviceRange:\n type: gcp:compute:GlobalAddress\n name: service_range\n properties:\n name: address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${memcacheNetwork.id}\n privateServiceConnection:\n type: gcp:servicenetworking:Connection\n name: private_service_connection\n properties:\n network: ${memcacheNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${serviceRange.name}\n instance:\n type: gcp:memcache:Instance\n properties:\n name: test-instance\n authorizedNetwork: ${privateServiceConnection.network}\n labels:\n env: test\n nodeConfig:\n cpuCount: 1\n memorySizeMb: 1024\n nodeCount: 1\n memcacheVersion: MEMCACHE_1_5\n maintenancePolicy:\n weeklyMaintenanceWindows:\n - day: SATURDAY\n duration: 14400s\n startTime:\n hours: 0\n minutes: 30\n seconds: 0\n nanos: 0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:memcache/instance:Instance default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:memcache/instance:Instance default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:memcache/instance:Instance default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:memcache/instance:Instance default {{name}}\n```\n\n", "properties": { "authorizedNetwork": { "type": "string", @@ -212152,7 +212152,7 @@ } }, "gcp:migrationcenter/preferenceSet:PreferenceSet": { - "description": "Manages the PreferenceSet resource.\n\n\nTo get more information about PreferenceSet, see:\n\n* [API documentation](https://cloud.google.com/migration-center/docs/reference/rest/v1)\n* How-to Guides\n * [Managing Migration Preferences](https://cloud.google.com/migration-center/docs/migration-preferences)\n\n## Example Usage\n\n### Preference Set Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.migrationcenter.PreferenceSet(\"default\", {\n location: \"us-central1\",\n preferenceSetId: \"preference-set-test\",\n description: \"Terraform integration test description\",\n displayName: \"Terraform integration test display\",\n virtualMachinePreferences: {\n vmwareEnginePreferences: {\n cpuOvercommitRatio: 1.5,\n },\n sizingOptimizationStrategy: \"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\",\n targetProduct: \"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.migrationcenter.PreferenceSet(\"default\",\n location=\"us-central1\",\n preference_set_id=\"preference-set-test\",\n description=\"Terraform integration test description\",\n display_name=\"Terraform integration test display\",\n virtual_machine_preferences={\n \"vmwareEnginePreferences\": {\n \"cpuOvercommitRatio\": 1.5,\n },\n \"sizingOptimizationStrategy\": \"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\",\n \"targetProduct\": \"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\",\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 @default = new Gcp.MigrationCenter.PreferenceSet(\"default\", new()\n {\n Location = \"us-central1\",\n PreferenceSetId = \"preference-set-test\",\n Description = \"Terraform integration test description\",\n DisplayName = \"Terraform integration test display\",\n VirtualMachinePreferences = new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesArgs\n {\n VmwareEnginePreferences = new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesArgs\n {\n CpuOvercommitRatio = 1.5,\n },\n SizingOptimizationStrategy = \"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\",\n TargetProduct = \"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/migrationcenter\"\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 := migrationcenter.NewPreferenceSet(ctx, \"default\", \u0026migrationcenter.PreferenceSetArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPreferenceSetId: pulumi.String(\"preference-set-test\"),\n\t\t\tDescription: pulumi.String(\"Terraform integration test description\"),\n\t\t\tDisplayName: pulumi.String(\"Terraform integration test display\"),\n\t\t\tVirtualMachinePreferences: \u0026migrationcenter.PreferenceSetVirtualMachinePreferencesArgs{\n\t\t\t\tVmwareEnginePreferences: \u0026migrationcenter.PreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesArgs{\n\t\t\t\t\tCpuOvercommitRatio: pulumi.Float64(1.5),\n\t\t\t\t},\n\t\t\t\tSizingOptimizationStrategy: pulumi.String(\"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\"),\n\t\t\t\tTargetProduct: pulumi.String(\"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\"),\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.migrationcenter.PreferenceSet;\nimport com.pulumi.gcp.migrationcenter.PreferenceSetArgs;\nimport com.pulumi.gcp.migrationcenter.inputs.PreferenceSetVirtualMachinePreferencesArgs;\nimport com.pulumi.gcp.migrationcenter.inputs.PreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesArgs;\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 PreferenceSet(\"default\", PreferenceSetArgs.builder()\n .location(\"us-central1\")\n .preferenceSetId(\"preference-set-test\")\n .description(\"Terraform integration test description\")\n .displayName(\"Terraform integration test display\")\n .virtualMachinePreferences(PreferenceSetVirtualMachinePreferencesArgs.builder()\n .vmwareEnginePreferences(PreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesArgs.builder()\n .cpuOvercommitRatio(1.5)\n .build())\n .sizingOptimizationStrategy(\"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\")\n .targetProduct(\"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:migrationcenter:PreferenceSet\n properties:\n location: us-central1\n preferenceSetId: preference-set-test\n description: Terraform integration test description\n displayName: Terraform integration test display\n virtualMachinePreferences:\n vmwareEnginePreferences:\n cpuOvercommitRatio: 1.5\n sizingOptimizationStrategy: SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\n targetProduct: COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Preference Set Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.migrationcenter.PreferenceSet(\"default\", {\n location: \"us-central1\",\n preferenceSetId: \"preference-set-test\",\n description: \"Terraform integration test description\",\n displayName: \"Terraform integration test display\",\n virtualMachinePreferences: {\n vmwareEnginePreferences: {\n cpuOvercommitRatio: 1.5,\n storageDeduplicationCompressionRatio: 1.3,\n commitmentPlan: \"ON_DEMAND\",\n },\n sizingOptimizationStrategy: \"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\",\n targetProduct: \"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\",\n commitmentPlan: \"COMMITMENT_PLAN_ONE_YEAR\",\n regionPreferences: {\n preferredRegions: [\"us-central1\"],\n },\n soleTenancyPreferences: {\n commitmentPlan: \"ON_DEMAND\",\n cpuOvercommitRatio: 1.2,\n hostMaintenancePolicy: \"HOST_MAINTENANCE_POLICY_DEFAULT\",\n nodeTypes: [{\n nodeName: \"tf-test\",\n }],\n },\n computeEnginePreferences: {\n licenseType: \"LICENSE_TYPE_BRING_YOUR_OWN_LICENSE\",\n machinePreferences: {\n allowedMachineSeries: [{\n code: \"C3\",\n }],\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.migrationcenter.PreferenceSet(\"default\",\n location=\"us-central1\",\n preference_set_id=\"preference-set-test\",\n description=\"Terraform integration test description\",\n display_name=\"Terraform integration test display\",\n virtual_machine_preferences={\n \"vmwareEnginePreferences\": {\n \"cpuOvercommitRatio\": 1.5,\n \"storageDeduplicationCompressionRatio\": 1.3,\n \"commitmentPlan\": \"ON_DEMAND\",\n },\n \"sizingOptimizationStrategy\": \"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\",\n \"targetProduct\": \"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\",\n \"commitmentPlan\": \"COMMITMENT_PLAN_ONE_YEAR\",\n \"regionPreferences\": {\n \"preferredRegions\": [\"us-central1\"],\n },\n \"soleTenancyPreferences\": {\n \"commitmentPlan\": \"ON_DEMAND\",\n \"cpuOvercommitRatio\": 1.2,\n \"hostMaintenancePolicy\": \"HOST_MAINTENANCE_POLICY_DEFAULT\",\n \"nodeTypes\": [{\n \"nodeName\": \"tf-test\",\n }],\n },\n \"computeEnginePreferences\": {\n \"licenseType\": \"LICENSE_TYPE_BRING_YOUR_OWN_LICENSE\",\n \"machinePreferences\": {\n \"allowedMachineSeries\": [{\n \"code\": \"C3\",\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 @default = new Gcp.MigrationCenter.PreferenceSet(\"default\", new()\n {\n Location = \"us-central1\",\n PreferenceSetId = \"preference-set-test\",\n Description = \"Terraform integration test description\",\n DisplayName = \"Terraform integration test display\",\n VirtualMachinePreferences = new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesArgs\n {\n VmwareEnginePreferences = new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesArgs\n {\n CpuOvercommitRatio = 1.5,\n StorageDeduplicationCompressionRatio = 1.3,\n CommitmentPlan = \"ON_DEMAND\",\n },\n SizingOptimizationStrategy = \"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\",\n TargetProduct = \"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\",\n CommitmentPlan = \"COMMITMENT_PLAN_ONE_YEAR\",\n RegionPreferences = new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesRegionPreferencesArgs\n {\n PreferredRegions = new[]\n {\n \"us-central1\",\n },\n },\n SoleTenancyPreferences = new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesArgs\n {\n CommitmentPlan = \"ON_DEMAND\",\n CpuOvercommitRatio = 1.2,\n HostMaintenancePolicy = \"HOST_MAINTENANCE_POLICY_DEFAULT\",\n NodeTypes = new[]\n {\n new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypeArgs\n {\n NodeName = \"tf-test\",\n },\n },\n },\n ComputeEnginePreferences = new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesArgs\n {\n LicenseType = \"LICENSE_TYPE_BRING_YOUR_OWN_LICENSE\",\n MachinePreferences = new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesArgs\n {\n AllowedMachineSeries = new[]\n {\n new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeriesArgs\n {\n Code = \"C3\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/migrationcenter\"\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 := migrationcenter.NewPreferenceSet(ctx, \"default\", \u0026migrationcenter.PreferenceSetArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPreferenceSetId: pulumi.String(\"preference-set-test\"),\n\t\t\tDescription: pulumi.String(\"Terraform integration test description\"),\n\t\t\tDisplayName: pulumi.String(\"Terraform integration test display\"),\n\t\t\tVirtualMachinePreferences: \u0026migrationcenter.PreferenceSetVirtualMachinePreferencesArgs{\n\t\t\t\tVmwareEnginePreferences: \u0026migrationcenter.PreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesArgs{\n\t\t\t\t\tCpuOvercommitRatio: pulumi.Float64(1.5),\n\t\t\t\t\tStorageDeduplicationCompressionRatio: pulumi.Float64(1.3),\n\t\t\t\t\tCommitmentPlan: pulumi.String(\"ON_DEMAND\"),\n\t\t\t\t},\n\t\t\t\tSizingOptimizationStrategy: pulumi.String(\"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\"),\n\t\t\t\tTargetProduct: pulumi.String(\"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\"),\n\t\t\t\tCommitmentPlan: pulumi.String(\"COMMITMENT_PLAN_ONE_YEAR\"),\n\t\t\t\tRegionPreferences: \u0026migrationcenter.PreferenceSetVirtualMachinePreferencesRegionPreferencesArgs{\n\t\t\t\t\tPreferredRegions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"us-central1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSoleTenancyPreferences: \u0026migrationcenter.PreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesArgs{\n\t\t\t\t\tCommitmentPlan: pulumi.String(\"ON_DEMAND\"),\n\t\t\t\t\tCpuOvercommitRatio: pulumi.Float64(1.2),\n\t\t\t\t\tHostMaintenancePolicy: pulumi.String(\"HOST_MAINTENANCE_POLICY_DEFAULT\"),\n\t\t\t\t\tNodeTypes: migrationcenter.PreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypeArray{\n\t\t\t\t\t\t\u0026migrationcenter.PreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypeArgs{\n\t\t\t\t\t\t\tNodeName: pulumi.String(\"tf-test\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tComputeEnginePreferences: \u0026migrationcenter.PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesArgs{\n\t\t\t\t\tLicenseType: pulumi.String(\"LICENSE_TYPE_BRING_YOUR_OWN_LICENSE\"),\n\t\t\t\t\tMachinePreferences: \u0026migrationcenter.PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesArgs{\n\t\t\t\t\t\tAllowedMachineSeries: migrationcenter.PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeriesArray{\n\t\t\t\t\t\t\t\u0026migrationcenter.PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeriesArgs{\n\t\t\t\t\t\t\t\tCode: pulumi.String(\"C3\"),\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.migrationcenter.PreferenceSet;\nimport com.pulumi.gcp.migrationcenter.PreferenceSetArgs;\nimport com.pulumi.gcp.migrationcenter.inputs.PreferenceSetVirtualMachinePreferencesArgs;\nimport com.pulumi.gcp.migrationcenter.inputs.PreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesArgs;\nimport com.pulumi.gcp.migrationcenter.inputs.PreferenceSetVirtualMachinePreferencesRegionPreferencesArgs;\nimport com.pulumi.gcp.migrationcenter.inputs.PreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesArgs;\nimport com.pulumi.gcp.migrationcenter.inputs.PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesArgs;\nimport com.pulumi.gcp.migrationcenter.inputs.PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesArgs;\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 PreferenceSet(\"default\", PreferenceSetArgs.builder()\n .location(\"us-central1\")\n .preferenceSetId(\"preference-set-test\")\n .description(\"Terraform integration test description\")\n .displayName(\"Terraform integration test display\")\n .virtualMachinePreferences(PreferenceSetVirtualMachinePreferencesArgs.builder()\n .vmwareEnginePreferences(PreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesArgs.builder()\n .cpuOvercommitRatio(1.5)\n .storageDeduplicationCompressionRatio(1.3)\n .commitmentPlan(\"ON_DEMAND\")\n .build())\n .sizingOptimizationStrategy(\"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\")\n .targetProduct(\"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\")\n .commitmentPlan(\"COMMITMENT_PLAN_ONE_YEAR\")\n .regionPreferences(PreferenceSetVirtualMachinePreferencesRegionPreferencesArgs.builder()\n .preferredRegions(\"us-central1\")\n .build())\n .soleTenancyPreferences(PreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesArgs.builder()\n .commitmentPlan(\"ON_DEMAND\")\n .cpuOvercommitRatio(1.2)\n .hostMaintenancePolicy(\"HOST_MAINTENANCE_POLICY_DEFAULT\")\n .nodeTypes(PreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypeArgs.builder()\n .nodeName(\"tf-test\")\n .build())\n .build())\n .computeEnginePreferences(PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesArgs.builder()\n .licenseType(\"LICENSE_TYPE_BRING_YOUR_OWN_LICENSE\")\n .machinePreferences(PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesArgs.builder()\n .allowedMachineSeries(PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeriesArgs.builder()\n .code(\"C3\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:migrationcenter:PreferenceSet\n properties:\n location: us-central1\n preferenceSetId: preference-set-test\n description: Terraform integration test description\n displayName: Terraform integration test display\n virtualMachinePreferences:\n vmwareEnginePreferences:\n cpuOvercommitRatio: 1.5\n storageDeduplicationCompressionRatio: 1.3\n commitmentPlan: ON_DEMAND\n sizingOptimizationStrategy: SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\n targetProduct: COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\n commitmentPlan: COMMITMENT_PLAN_ONE_YEAR\n regionPreferences:\n preferredRegions:\n - us-central1\n soleTenancyPreferences:\n commitmentPlan: ON_DEMAND\n cpuOvercommitRatio: 1.2\n hostMaintenancePolicy: HOST_MAINTENANCE_POLICY_DEFAULT\n nodeTypes:\n - nodeName: tf-test\n computeEnginePreferences:\n licenseType: LICENSE_TYPE_BRING_YOUR_OWN_LICENSE\n machinePreferences:\n allowedMachineSeries:\n - code: C3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPreferenceSet can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/preferenceSets/{{preference_set_id}}`\n\n* `{{project}}/{{location}}/{{preference_set_id}}`\n\n* `{{location}}/{{preference_set_id}}`\n\nWhen using the `pulumi import` command, PreferenceSet can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:migrationcenter/preferenceSet:PreferenceSet default projects/{{project}}/locations/{{location}}/preferenceSets/{{preference_set_id}}\n```\n\n```sh\n$ pulumi import gcp:migrationcenter/preferenceSet:PreferenceSet default {{project}}/{{location}}/{{preference_set_id}}\n```\n\n```sh\n$ pulumi import gcp:migrationcenter/preferenceSet:PreferenceSet default {{location}}/{{preference_set_id}}\n```\n\n", + "description": "Manages the PreferenceSet resource.\n\n\nTo get more information about PreferenceSet, see:\n\n* [API documentation](https://cloud.google.com/migration-center/docs/reference/rest/v1)\n* How-to Guides\n * [Managing Migration Preferences](https://cloud.google.com/migration-center/docs/migration-preferences)\n\n## Example Usage\n\n### Preference Set Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.migrationcenter.PreferenceSet(\"default\", {\n location: \"us-central1\",\n preferenceSetId: \"preference-set-test\",\n description: \"Terraform integration test description\",\n displayName: \"Terraform integration test display\",\n virtualMachinePreferences: {\n vmwareEnginePreferences: {\n cpuOvercommitRatio: 1.5,\n },\n sizingOptimizationStrategy: \"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\",\n targetProduct: \"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.migrationcenter.PreferenceSet(\"default\",\n location=\"us-central1\",\n preference_set_id=\"preference-set-test\",\n description=\"Terraform integration test description\",\n display_name=\"Terraform integration test display\",\n virtual_machine_preferences={\n \"vmware_engine_preferences\": {\n \"cpu_overcommit_ratio\": 1.5,\n },\n \"sizing_optimization_strategy\": \"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\",\n \"target_product\": \"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\",\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 @default = new Gcp.MigrationCenter.PreferenceSet(\"default\", new()\n {\n Location = \"us-central1\",\n PreferenceSetId = \"preference-set-test\",\n Description = \"Terraform integration test description\",\n DisplayName = \"Terraform integration test display\",\n VirtualMachinePreferences = new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesArgs\n {\n VmwareEnginePreferences = new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesArgs\n {\n CpuOvercommitRatio = 1.5,\n },\n SizingOptimizationStrategy = \"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\",\n TargetProduct = \"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/migrationcenter\"\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 := migrationcenter.NewPreferenceSet(ctx, \"default\", \u0026migrationcenter.PreferenceSetArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPreferenceSetId: pulumi.String(\"preference-set-test\"),\n\t\t\tDescription: pulumi.String(\"Terraform integration test description\"),\n\t\t\tDisplayName: pulumi.String(\"Terraform integration test display\"),\n\t\t\tVirtualMachinePreferences: \u0026migrationcenter.PreferenceSetVirtualMachinePreferencesArgs{\n\t\t\t\tVmwareEnginePreferences: \u0026migrationcenter.PreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesArgs{\n\t\t\t\t\tCpuOvercommitRatio: pulumi.Float64(1.5),\n\t\t\t\t},\n\t\t\t\tSizingOptimizationStrategy: pulumi.String(\"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\"),\n\t\t\t\tTargetProduct: pulumi.String(\"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\"),\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.migrationcenter.PreferenceSet;\nimport com.pulumi.gcp.migrationcenter.PreferenceSetArgs;\nimport com.pulumi.gcp.migrationcenter.inputs.PreferenceSetVirtualMachinePreferencesArgs;\nimport com.pulumi.gcp.migrationcenter.inputs.PreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesArgs;\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 PreferenceSet(\"default\", PreferenceSetArgs.builder()\n .location(\"us-central1\")\n .preferenceSetId(\"preference-set-test\")\n .description(\"Terraform integration test description\")\n .displayName(\"Terraform integration test display\")\n .virtualMachinePreferences(PreferenceSetVirtualMachinePreferencesArgs.builder()\n .vmwareEnginePreferences(PreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesArgs.builder()\n .cpuOvercommitRatio(1.5)\n .build())\n .sizingOptimizationStrategy(\"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\")\n .targetProduct(\"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:migrationcenter:PreferenceSet\n properties:\n location: us-central1\n preferenceSetId: preference-set-test\n description: Terraform integration test description\n displayName: Terraform integration test display\n virtualMachinePreferences:\n vmwareEnginePreferences:\n cpuOvercommitRatio: 1.5\n sizingOptimizationStrategy: SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\n targetProduct: COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Preference Set Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.migrationcenter.PreferenceSet(\"default\", {\n location: \"us-central1\",\n preferenceSetId: \"preference-set-test\",\n description: \"Terraform integration test description\",\n displayName: \"Terraform integration test display\",\n virtualMachinePreferences: {\n vmwareEnginePreferences: {\n cpuOvercommitRatio: 1.5,\n storageDeduplicationCompressionRatio: 1.3,\n commitmentPlan: \"ON_DEMAND\",\n },\n sizingOptimizationStrategy: \"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\",\n targetProduct: \"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\",\n commitmentPlan: \"COMMITMENT_PLAN_ONE_YEAR\",\n regionPreferences: {\n preferredRegions: [\"us-central1\"],\n },\n soleTenancyPreferences: {\n commitmentPlan: \"ON_DEMAND\",\n cpuOvercommitRatio: 1.2,\n hostMaintenancePolicy: \"HOST_MAINTENANCE_POLICY_DEFAULT\",\n nodeTypes: [{\n nodeName: \"tf-test\",\n }],\n },\n computeEnginePreferences: {\n licenseType: \"LICENSE_TYPE_BRING_YOUR_OWN_LICENSE\",\n machinePreferences: {\n allowedMachineSeries: [{\n code: \"C3\",\n }],\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.migrationcenter.PreferenceSet(\"default\",\n location=\"us-central1\",\n preference_set_id=\"preference-set-test\",\n description=\"Terraform integration test description\",\n display_name=\"Terraform integration test display\",\n virtual_machine_preferences={\n \"vmware_engine_preferences\": {\n \"cpu_overcommit_ratio\": 1.5,\n \"storage_deduplication_compression_ratio\": 1.3,\n \"commitment_plan\": \"ON_DEMAND\",\n },\n \"sizing_optimization_strategy\": \"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\",\n \"target_product\": \"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\",\n \"commitment_plan\": \"COMMITMENT_PLAN_ONE_YEAR\",\n \"region_preferences\": {\n \"preferred_regions\": [\"us-central1\"],\n },\n \"sole_tenancy_preferences\": {\n \"commitment_plan\": \"ON_DEMAND\",\n \"cpu_overcommit_ratio\": 1.2,\n \"host_maintenance_policy\": \"HOST_MAINTENANCE_POLICY_DEFAULT\",\n \"node_types\": [{\n \"node_name\": \"tf-test\",\n }],\n },\n \"compute_engine_preferences\": {\n \"license_type\": \"LICENSE_TYPE_BRING_YOUR_OWN_LICENSE\",\n \"machine_preferences\": {\n \"allowed_machine_series\": [{\n \"code\": \"C3\",\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 @default = new Gcp.MigrationCenter.PreferenceSet(\"default\", new()\n {\n Location = \"us-central1\",\n PreferenceSetId = \"preference-set-test\",\n Description = \"Terraform integration test description\",\n DisplayName = \"Terraform integration test display\",\n VirtualMachinePreferences = new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesArgs\n {\n VmwareEnginePreferences = new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesArgs\n {\n CpuOvercommitRatio = 1.5,\n StorageDeduplicationCompressionRatio = 1.3,\n CommitmentPlan = \"ON_DEMAND\",\n },\n SizingOptimizationStrategy = \"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\",\n TargetProduct = \"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\",\n CommitmentPlan = \"COMMITMENT_PLAN_ONE_YEAR\",\n RegionPreferences = new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesRegionPreferencesArgs\n {\n PreferredRegions = new[]\n {\n \"us-central1\",\n },\n },\n SoleTenancyPreferences = new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesArgs\n {\n CommitmentPlan = \"ON_DEMAND\",\n CpuOvercommitRatio = 1.2,\n HostMaintenancePolicy = \"HOST_MAINTENANCE_POLICY_DEFAULT\",\n NodeTypes = new[]\n {\n new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypeArgs\n {\n NodeName = \"tf-test\",\n },\n },\n },\n ComputeEnginePreferences = new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesArgs\n {\n LicenseType = \"LICENSE_TYPE_BRING_YOUR_OWN_LICENSE\",\n MachinePreferences = new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesArgs\n {\n AllowedMachineSeries = new[]\n {\n new Gcp.MigrationCenter.Inputs.PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeriesArgs\n {\n Code = \"C3\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/migrationcenter\"\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 := migrationcenter.NewPreferenceSet(ctx, \"default\", \u0026migrationcenter.PreferenceSetArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPreferenceSetId: pulumi.String(\"preference-set-test\"),\n\t\t\tDescription: pulumi.String(\"Terraform integration test description\"),\n\t\t\tDisplayName: pulumi.String(\"Terraform integration test display\"),\n\t\t\tVirtualMachinePreferences: \u0026migrationcenter.PreferenceSetVirtualMachinePreferencesArgs{\n\t\t\t\tVmwareEnginePreferences: \u0026migrationcenter.PreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesArgs{\n\t\t\t\t\tCpuOvercommitRatio: pulumi.Float64(1.5),\n\t\t\t\t\tStorageDeduplicationCompressionRatio: pulumi.Float64(1.3),\n\t\t\t\t\tCommitmentPlan: pulumi.String(\"ON_DEMAND\"),\n\t\t\t\t},\n\t\t\t\tSizingOptimizationStrategy: pulumi.String(\"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\"),\n\t\t\t\tTargetProduct: pulumi.String(\"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\"),\n\t\t\t\tCommitmentPlan: pulumi.String(\"COMMITMENT_PLAN_ONE_YEAR\"),\n\t\t\t\tRegionPreferences: \u0026migrationcenter.PreferenceSetVirtualMachinePreferencesRegionPreferencesArgs{\n\t\t\t\t\tPreferredRegions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"us-central1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSoleTenancyPreferences: \u0026migrationcenter.PreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesArgs{\n\t\t\t\t\tCommitmentPlan: pulumi.String(\"ON_DEMAND\"),\n\t\t\t\t\tCpuOvercommitRatio: pulumi.Float64(1.2),\n\t\t\t\t\tHostMaintenancePolicy: pulumi.String(\"HOST_MAINTENANCE_POLICY_DEFAULT\"),\n\t\t\t\t\tNodeTypes: migrationcenter.PreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypeArray{\n\t\t\t\t\t\t\u0026migrationcenter.PreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypeArgs{\n\t\t\t\t\t\t\tNodeName: pulumi.String(\"tf-test\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tComputeEnginePreferences: \u0026migrationcenter.PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesArgs{\n\t\t\t\t\tLicenseType: pulumi.String(\"LICENSE_TYPE_BRING_YOUR_OWN_LICENSE\"),\n\t\t\t\t\tMachinePreferences: \u0026migrationcenter.PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesArgs{\n\t\t\t\t\t\tAllowedMachineSeries: migrationcenter.PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeriesArray{\n\t\t\t\t\t\t\t\u0026migrationcenter.PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeriesArgs{\n\t\t\t\t\t\t\t\tCode: pulumi.String(\"C3\"),\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.migrationcenter.PreferenceSet;\nimport com.pulumi.gcp.migrationcenter.PreferenceSetArgs;\nimport com.pulumi.gcp.migrationcenter.inputs.PreferenceSetVirtualMachinePreferencesArgs;\nimport com.pulumi.gcp.migrationcenter.inputs.PreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesArgs;\nimport com.pulumi.gcp.migrationcenter.inputs.PreferenceSetVirtualMachinePreferencesRegionPreferencesArgs;\nimport com.pulumi.gcp.migrationcenter.inputs.PreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesArgs;\nimport com.pulumi.gcp.migrationcenter.inputs.PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesArgs;\nimport com.pulumi.gcp.migrationcenter.inputs.PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesArgs;\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 PreferenceSet(\"default\", PreferenceSetArgs.builder()\n .location(\"us-central1\")\n .preferenceSetId(\"preference-set-test\")\n .description(\"Terraform integration test description\")\n .displayName(\"Terraform integration test display\")\n .virtualMachinePreferences(PreferenceSetVirtualMachinePreferencesArgs.builder()\n .vmwareEnginePreferences(PreferenceSetVirtualMachinePreferencesVmwareEnginePreferencesArgs.builder()\n .cpuOvercommitRatio(1.5)\n .storageDeduplicationCompressionRatio(1.3)\n .commitmentPlan(\"ON_DEMAND\")\n .build())\n .sizingOptimizationStrategy(\"SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\")\n .targetProduct(\"COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\")\n .commitmentPlan(\"COMMITMENT_PLAN_ONE_YEAR\")\n .regionPreferences(PreferenceSetVirtualMachinePreferencesRegionPreferencesArgs.builder()\n .preferredRegions(\"us-central1\")\n .build())\n .soleTenancyPreferences(PreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesArgs.builder()\n .commitmentPlan(\"ON_DEMAND\")\n .cpuOvercommitRatio(1.2)\n .hostMaintenancePolicy(\"HOST_MAINTENANCE_POLICY_DEFAULT\")\n .nodeTypes(PreferenceSetVirtualMachinePreferencesSoleTenancyPreferencesNodeTypeArgs.builder()\n .nodeName(\"tf-test\")\n .build())\n .build())\n .computeEnginePreferences(PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesArgs.builder()\n .licenseType(\"LICENSE_TYPE_BRING_YOUR_OWN_LICENSE\")\n .machinePreferences(PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesArgs.builder()\n .allowedMachineSeries(PreferenceSetVirtualMachinePreferencesComputeEnginePreferencesMachinePreferencesAllowedMachineSeriesArgs.builder()\n .code(\"C3\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:migrationcenter:PreferenceSet\n properties:\n location: us-central1\n preferenceSetId: preference-set-test\n description: Terraform integration test description\n displayName: Terraform integration test display\n virtualMachinePreferences:\n vmwareEnginePreferences:\n cpuOvercommitRatio: 1.5\n storageDeduplicationCompressionRatio: 1.3\n commitmentPlan: ON_DEMAND\n sizingOptimizationStrategy: SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE\n targetProduct: COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE\n commitmentPlan: COMMITMENT_PLAN_ONE_YEAR\n regionPreferences:\n preferredRegions:\n - us-central1\n soleTenancyPreferences:\n commitmentPlan: ON_DEMAND\n cpuOvercommitRatio: 1.2\n hostMaintenancePolicy: HOST_MAINTENANCE_POLICY_DEFAULT\n nodeTypes:\n - nodeName: tf-test\n computeEnginePreferences:\n licenseType: LICENSE_TYPE_BRING_YOUR_OWN_LICENSE\n machinePreferences:\n allowedMachineSeries:\n - code: C3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPreferenceSet can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/preferenceSets/{{preference_set_id}}`\n\n* `{{project}}/{{location}}/{{preference_set_id}}`\n\n* `{{location}}/{{preference_set_id}}`\n\nWhen using the `pulumi import` command, PreferenceSet can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:migrationcenter/preferenceSet:PreferenceSet default projects/{{project}}/locations/{{location}}/preferenceSets/{{preference_set_id}}\n```\n\n```sh\n$ pulumi import gcp:migrationcenter/preferenceSet:PreferenceSet default {{project}}/{{location}}/{{preference_set_id}}\n```\n\n```sh\n$ pulumi import gcp:migrationcenter/preferenceSet:PreferenceSet default {{location}}/{{preference_set_id}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -212450,7 +212450,7 @@ } }, "gcp:monitoring/alertPolicy:AlertPolicy": { - "description": "A description of the conditions under which some aspect of your system is\nconsidered to be \"unhealthy\" and the ways to notify people or services\nabout this state.\n\n\nTo get more information about AlertPolicy, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.alertPolicies)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/monitoring/alerts/)\n\n## Example Usage\n\n### Monitoring Alert Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst alertPolicy = new gcp.monitoring.AlertPolicy(\"alert_policy\", {\n displayName: \"My Alert Policy\",\n combiner: \"OR\",\n conditions: [{\n displayName: \"test condition\",\n conditionThreshold: {\n filter: \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n duration: \"60s\",\n comparison: \"COMPARISON_GT\",\n aggregations: [{\n alignmentPeriod: \"60s\",\n perSeriesAligner: \"ALIGN_RATE\",\n }],\n },\n }],\n userLabels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nalert_policy = gcp.monitoring.AlertPolicy(\"alert_policy\",\n display_name=\"My Alert Policy\",\n combiner=\"OR\",\n conditions=[{\n \"displayName\": \"test condition\",\n \"conditionThreshold\": {\n \"filter\": \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n \"duration\": \"60s\",\n \"comparison\": \"COMPARISON_GT\",\n \"aggregations\": [{\n \"alignmentPeriod\": \"60s\",\n \"perSeriesAligner\": \"ALIGN_RATE\",\n }],\n },\n }],\n user_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 alertPolicy = new Gcp.Monitoring.AlertPolicy(\"alert_policy\", new()\n {\n DisplayName = \"My Alert Policy\",\n Combiner = \"OR\",\n Conditions = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionArgs\n {\n DisplayName = \"test condition\",\n ConditionThreshold = new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdArgs\n {\n Filter = \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n Duration = \"60s\",\n Comparison = \"COMPARISON_GT\",\n Aggregations = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdAggregationArgs\n {\n AlignmentPeriod = \"60s\",\n PerSeriesAligner = \"ALIGN_RATE\",\n },\n },\n },\n },\n },\n UserLabels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewAlertPolicy(ctx, \"alert_policy\", \u0026monitoring.AlertPolicyArgs{\n\t\t\tDisplayName: pulumi.String(\"My Alert Policy\"),\n\t\t\tCombiner: pulumi.String(\"OR\"),\n\t\t\tConditions: monitoring.AlertPolicyConditionArray{\n\t\t\t\t\u0026monitoring.AlertPolicyConditionArgs{\n\t\t\t\t\tDisplayName: pulumi.String(\"test condition\"),\n\t\t\t\t\tConditionThreshold: \u0026monitoring.AlertPolicyConditionConditionThresholdArgs{\n\t\t\t\t\t\tFilter: pulumi.String(\"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\"),\n\t\t\t\t\t\tDuration: pulumi.String(\"60s\"),\n\t\t\t\t\t\tComparison: pulumi.String(\"COMPARISON_GT\"),\n\t\t\t\t\t\tAggregations: monitoring.AlertPolicyConditionConditionThresholdAggregationArray{\n\t\t\t\t\t\t\t\u0026monitoring.AlertPolicyConditionConditionThresholdAggregationArgs{\n\t\t\t\t\t\t\t\tAlignmentPeriod: pulumi.String(\"60s\"),\n\t\t\t\t\t\t\t\tPerSeriesAligner: pulumi.String(\"ALIGN_RATE\"),\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\tUserLabels: 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.monitoring.AlertPolicy;\nimport com.pulumi.gcp.monitoring.AlertPolicyArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionConditionThresholdArgs;\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 alertPolicy = new AlertPolicy(\"alertPolicy\", AlertPolicyArgs.builder()\n .displayName(\"My Alert Policy\")\n .combiner(\"OR\")\n .conditions(AlertPolicyConditionArgs.builder()\n .displayName(\"test condition\")\n .conditionThreshold(AlertPolicyConditionConditionThresholdArgs.builder()\n .filter(\"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\")\n .duration(\"60s\")\n .comparison(\"COMPARISON_GT\")\n .aggregations(AlertPolicyConditionConditionThresholdAggregationArgs.builder()\n .alignmentPeriod(\"60s\")\n .perSeriesAligner(\"ALIGN_RATE\")\n .build())\n .build())\n .build())\n .userLabels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n alertPolicy:\n type: gcp:monitoring:AlertPolicy\n name: alert_policy\n properties:\n displayName: My Alert Policy\n combiner: OR\n conditions:\n - displayName: test condition\n conditionThreshold:\n filter: metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" AND resource.type=\"gce_instance\"\n duration: 60s\n comparison: COMPARISON_GT\n aggregations:\n - alignmentPeriod: 60s\n perSeriesAligner: ALIGN_RATE\n userLabels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Alert Policy Evaluation Missing Data\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst alertPolicy = new gcp.monitoring.AlertPolicy(\"alert_policy\", {\n displayName: \"My Alert Policy\",\n combiner: \"OR\",\n conditions: [{\n displayName: \"test condition\",\n conditionThreshold: {\n filter: \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n duration: \"60s\",\n comparison: \"COMPARISON_GT\",\n aggregations: [{\n alignmentPeriod: \"60s\",\n perSeriesAligner: \"ALIGN_RATE\",\n }],\n evaluationMissingData: \"EVALUATION_MISSING_DATA_INACTIVE\",\n },\n }],\n userLabels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nalert_policy = gcp.monitoring.AlertPolicy(\"alert_policy\",\n display_name=\"My Alert Policy\",\n combiner=\"OR\",\n conditions=[{\n \"displayName\": \"test condition\",\n \"conditionThreshold\": {\n \"filter\": \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n \"duration\": \"60s\",\n \"comparison\": \"COMPARISON_GT\",\n \"aggregations\": [{\n \"alignmentPeriod\": \"60s\",\n \"perSeriesAligner\": \"ALIGN_RATE\",\n }],\n \"evaluationMissingData\": \"EVALUATION_MISSING_DATA_INACTIVE\",\n },\n }],\n user_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 alertPolicy = new Gcp.Monitoring.AlertPolicy(\"alert_policy\", new()\n {\n DisplayName = \"My Alert Policy\",\n Combiner = \"OR\",\n Conditions = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionArgs\n {\n DisplayName = \"test condition\",\n ConditionThreshold = new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdArgs\n {\n Filter = \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n Duration = \"60s\",\n Comparison = \"COMPARISON_GT\",\n Aggregations = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdAggregationArgs\n {\n AlignmentPeriod = \"60s\",\n PerSeriesAligner = \"ALIGN_RATE\",\n },\n },\n EvaluationMissingData = \"EVALUATION_MISSING_DATA_INACTIVE\",\n },\n },\n },\n UserLabels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewAlertPolicy(ctx, \"alert_policy\", \u0026monitoring.AlertPolicyArgs{\n\t\t\tDisplayName: pulumi.String(\"My Alert Policy\"),\n\t\t\tCombiner: pulumi.String(\"OR\"),\n\t\t\tConditions: monitoring.AlertPolicyConditionArray{\n\t\t\t\t\u0026monitoring.AlertPolicyConditionArgs{\n\t\t\t\t\tDisplayName: pulumi.String(\"test condition\"),\n\t\t\t\t\tConditionThreshold: \u0026monitoring.AlertPolicyConditionConditionThresholdArgs{\n\t\t\t\t\t\tFilter: pulumi.String(\"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\"),\n\t\t\t\t\t\tDuration: pulumi.String(\"60s\"),\n\t\t\t\t\t\tComparison: pulumi.String(\"COMPARISON_GT\"),\n\t\t\t\t\t\tAggregations: monitoring.AlertPolicyConditionConditionThresholdAggregationArray{\n\t\t\t\t\t\t\t\u0026monitoring.AlertPolicyConditionConditionThresholdAggregationArgs{\n\t\t\t\t\t\t\t\tAlignmentPeriod: pulumi.String(\"60s\"),\n\t\t\t\t\t\t\t\tPerSeriesAligner: pulumi.String(\"ALIGN_RATE\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tEvaluationMissingData: pulumi.String(\"EVALUATION_MISSING_DATA_INACTIVE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tUserLabels: 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.monitoring.AlertPolicy;\nimport com.pulumi.gcp.monitoring.AlertPolicyArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionConditionThresholdArgs;\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 alertPolicy = new AlertPolicy(\"alertPolicy\", AlertPolicyArgs.builder()\n .displayName(\"My Alert Policy\")\n .combiner(\"OR\")\n .conditions(AlertPolicyConditionArgs.builder()\n .displayName(\"test condition\")\n .conditionThreshold(AlertPolicyConditionConditionThresholdArgs.builder()\n .filter(\"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\")\n .duration(\"60s\")\n .comparison(\"COMPARISON_GT\")\n .aggregations(AlertPolicyConditionConditionThresholdAggregationArgs.builder()\n .alignmentPeriod(\"60s\")\n .perSeriesAligner(\"ALIGN_RATE\")\n .build())\n .evaluationMissingData(\"EVALUATION_MISSING_DATA_INACTIVE\")\n .build())\n .build())\n .userLabels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n alertPolicy:\n type: gcp:monitoring:AlertPolicy\n name: alert_policy\n properties:\n displayName: My Alert Policy\n combiner: OR\n conditions:\n - displayName: test condition\n conditionThreshold:\n filter: metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" AND resource.type=\"gce_instance\"\n duration: 60s\n comparison: COMPARISON_GT\n aggregations:\n - alignmentPeriod: 60s\n perSeriesAligner: ALIGN_RATE\n evaluationMissingData: EVALUATION_MISSING_DATA_INACTIVE\n userLabels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Alert Policy Forecast Options\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst alertPolicy = new gcp.monitoring.AlertPolicy(\"alert_policy\", {\n displayName: \"My Alert Policy\",\n combiner: \"OR\",\n conditions: [{\n displayName: \"test condition\",\n conditionThreshold: {\n filter: \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n duration: \"60s\",\n forecastOptions: {\n forecastHorizon: \"3600s\",\n },\n comparison: \"COMPARISON_GT\",\n aggregations: [{\n alignmentPeriod: \"60s\",\n perSeriesAligner: \"ALIGN_RATE\",\n }],\n },\n }],\n userLabels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nalert_policy = gcp.monitoring.AlertPolicy(\"alert_policy\",\n display_name=\"My Alert Policy\",\n combiner=\"OR\",\n conditions=[{\n \"displayName\": \"test condition\",\n \"conditionThreshold\": {\n \"filter\": \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n \"duration\": \"60s\",\n \"forecastOptions\": {\n \"forecastHorizon\": \"3600s\",\n },\n \"comparison\": \"COMPARISON_GT\",\n \"aggregations\": [{\n \"alignmentPeriod\": \"60s\",\n \"perSeriesAligner\": \"ALIGN_RATE\",\n }],\n },\n }],\n user_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 alertPolicy = new Gcp.Monitoring.AlertPolicy(\"alert_policy\", new()\n {\n DisplayName = \"My Alert Policy\",\n Combiner = \"OR\",\n Conditions = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionArgs\n {\n DisplayName = \"test condition\",\n ConditionThreshold = new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdArgs\n {\n Filter = \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n Duration = \"60s\",\n ForecastOptions = new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdForecastOptionsArgs\n {\n ForecastHorizon = \"3600s\",\n },\n Comparison = \"COMPARISON_GT\",\n Aggregations = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdAggregationArgs\n {\n AlignmentPeriod = \"60s\",\n PerSeriesAligner = \"ALIGN_RATE\",\n },\n },\n },\n },\n },\n UserLabels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewAlertPolicy(ctx, \"alert_policy\", \u0026monitoring.AlertPolicyArgs{\n\t\t\tDisplayName: pulumi.String(\"My Alert Policy\"),\n\t\t\tCombiner: pulumi.String(\"OR\"),\n\t\t\tConditions: monitoring.AlertPolicyConditionArray{\n\t\t\t\t\u0026monitoring.AlertPolicyConditionArgs{\n\t\t\t\t\tDisplayName: pulumi.String(\"test condition\"),\n\t\t\t\t\tConditionThreshold: \u0026monitoring.AlertPolicyConditionConditionThresholdArgs{\n\t\t\t\t\t\tFilter: pulumi.String(\"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\"),\n\t\t\t\t\t\tDuration: pulumi.String(\"60s\"),\n\t\t\t\t\t\tForecastOptions: \u0026monitoring.AlertPolicyConditionConditionThresholdForecastOptionsArgs{\n\t\t\t\t\t\t\tForecastHorizon: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tComparison: pulumi.String(\"COMPARISON_GT\"),\n\t\t\t\t\t\tAggregations: monitoring.AlertPolicyConditionConditionThresholdAggregationArray{\n\t\t\t\t\t\t\t\u0026monitoring.AlertPolicyConditionConditionThresholdAggregationArgs{\n\t\t\t\t\t\t\t\tAlignmentPeriod: pulumi.String(\"60s\"),\n\t\t\t\t\t\t\t\tPerSeriesAligner: pulumi.String(\"ALIGN_RATE\"),\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\tUserLabels: 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.monitoring.AlertPolicy;\nimport com.pulumi.gcp.monitoring.AlertPolicyArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionConditionThresholdArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionConditionThresholdForecastOptionsArgs;\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 alertPolicy = new AlertPolicy(\"alertPolicy\", AlertPolicyArgs.builder()\n .displayName(\"My Alert Policy\")\n .combiner(\"OR\")\n .conditions(AlertPolicyConditionArgs.builder()\n .displayName(\"test condition\")\n .conditionThreshold(AlertPolicyConditionConditionThresholdArgs.builder()\n .filter(\"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\")\n .duration(\"60s\")\n .forecastOptions(AlertPolicyConditionConditionThresholdForecastOptionsArgs.builder()\n .forecastHorizon(\"3600s\")\n .build())\n .comparison(\"COMPARISON_GT\")\n .aggregations(AlertPolicyConditionConditionThresholdAggregationArgs.builder()\n .alignmentPeriod(\"60s\")\n .perSeriesAligner(\"ALIGN_RATE\")\n .build())\n .build())\n .build())\n .userLabels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n alertPolicy:\n type: gcp:monitoring:AlertPolicy\n name: alert_policy\n properties:\n displayName: My Alert Policy\n combiner: OR\n conditions:\n - displayName: test condition\n conditionThreshold:\n filter: metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" AND resource.type=\"gce_instance\"\n duration: 60s\n forecastOptions:\n forecastHorizon: 3600s\n comparison: COMPARISON_GT\n aggregations:\n - alignmentPeriod: 60s\n perSeriesAligner: ALIGN_RATE\n userLabels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Alert Policy Promql Condition\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst alertPolicy = new gcp.monitoring.AlertPolicy(\"alert_policy\", {\n displayName: \"My Alert Policy\",\n combiner: \"OR\",\n conditions: [{\n displayName: \"test condition\",\n conditionPrometheusQueryLanguage: {\n query: \"compute_googleapis_com:instance_cpu_usage_time \u003e 0\",\n duration: \"60s\",\n evaluationInterval: \"60s\",\n alertRule: \"AlwaysOn\",\n ruleGroup: \"a test\",\n },\n }],\n alertStrategy: {\n autoClose: \"1800s\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nalert_policy = gcp.monitoring.AlertPolicy(\"alert_policy\",\n display_name=\"My Alert Policy\",\n combiner=\"OR\",\n conditions=[{\n \"displayName\": \"test condition\",\n \"conditionPrometheusQueryLanguage\": {\n \"query\": \"compute_googleapis_com:instance_cpu_usage_time \u003e 0\",\n \"duration\": \"60s\",\n \"evaluationInterval\": \"60s\",\n \"alertRule\": \"AlwaysOn\",\n \"ruleGroup\": \"a test\",\n },\n }],\n alert_strategy={\n \"autoClose\": \"1800s\",\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 alertPolicy = new Gcp.Monitoring.AlertPolicy(\"alert_policy\", new()\n {\n DisplayName = \"My Alert Policy\",\n Combiner = \"OR\",\n Conditions = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionArgs\n {\n DisplayName = \"test condition\",\n ConditionPrometheusQueryLanguage = new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionPrometheusQueryLanguageArgs\n {\n Query = \"compute_googleapis_com:instance_cpu_usage_time \u003e 0\",\n Duration = \"60s\",\n EvaluationInterval = \"60s\",\n AlertRule = \"AlwaysOn\",\n RuleGroup = \"a test\",\n },\n },\n },\n AlertStrategy = new Gcp.Monitoring.Inputs.AlertPolicyAlertStrategyArgs\n {\n AutoClose = \"1800s\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewAlertPolicy(ctx, \"alert_policy\", \u0026monitoring.AlertPolicyArgs{\n\t\t\tDisplayName: pulumi.String(\"My Alert Policy\"),\n\t\t\tCombiner: pulumi.String(\"OR\"),\n\t\t\tConditions: monitoring.AlertPolicyConditionArray{\n\t\t\t\t\u0026monitoring.AlertPolicyConditionArgs{\n\t\t\t\t\tDisplayName: pulumi.String(\"test condition\"),\n\t\t\t\t\tConditionPrometheusQueryLanguage: \u0026monitoring.AlertPolicyConditionConditionPrometheusQueryLanguageArgs{\n\t\t\t\t\t\tQuery: pulumi.String(\"compute_googleapis_com:instance_cpu_usage_time \u003e 0\"),\n\t\t\t\t\t\tDuration: pulumi.String(\"60s\"),\n\t\t\t\t\t\tEvaluationInterval: pulumi.String(\"60s\"),\n\t\t\t\t\t\tAlertRule: pulumi.String(\"AlwaysOn\"),\n\t\t\t\t\t\tRuleGroup: pulumi.String(\"a test\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAlertStrategy: \u0026monitoring.AlertPolicyAlertStrategyArgs{\n\t\t\t\tAutoClose: pulumi.String(\"1800s\"),\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.monitoring.AlertPolicy;\nimport com.pulumi.gcp.monitoring.AlertPolicyArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionConditionPrometheusQueryLanguageArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyAlertStrategyArgs;\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 alertPolicy = new AlertPolicy(\"alertPolicy\", AlertPolicyArgs.builder()\n .displayName(\"My Alert Policy\")\n .combiner(\"OR\")\n .conditions(AlertPolicyConditionArgs.builder()\n .displayName(\"test condition\")\n .conditionPrometheusQueryLanguage(AlertPolicyConditionConditionPrometheusQueryLanguageArgs.builder()\n .query(\"compute_googleapis_com:instance_cpu_usage_time \u003e 0\")\n .duration(\"60s\")\n .evaluationInterval(\"60s\")\n .alertRule(\"AlwaysOn\")\n .ruleGroup(\"a test\")\n .build())\n .build())\n .alertStrategy(AlertPolicyAlertStrategyArgs.builder()\n .autoClose(\"1800s\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n alertPolicy:\n type: gcp:monitoring:AlertPolicy\n name: alert_policy\n properties:\n displayName: My Alert Policy\n combiner: OR\n conditions:\n - displayName: test condition\n conditionPrometheusQueryLanguage:\n query: compute_googleapis_com:instance_cpu_usage_time \u003e 0\n duration: 60s\n evaluationInterval: 60s\n alertRule: AlwaysOn\n ruleGroup: a test\n alertStrategy:\n autoClose: 1800s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAlertPolicy can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AlertPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:monitoring/alertPolicy:AlertPolicy default {{name}}\n```\n\n", + "description": "A description of the conditions under which some aspect of your system is\nconsidered to be \"unhealthy\" and the ways to notify people or services\nabout this state.\n\n\nTo get more information about AlertPolicy, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.alertPolicies)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/monitoring/alerts/)\n\n## Example Usage\n\n### Monitoring Alert Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst alertPolicy = new gcp.monitoring.AlertPolicy(\"alert_policy\", {\n displayName: \"My Alert Policy\",\n combiner: \"OR\",\n conditions: [{\n displayName: \"test condition\",\n conditionThreshold: {\n filter: \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n duration: \"60s\",\n comparison: \"COMPARISON_GT\",\n aggregations: [{\n alignmentPeriod: \"60s\",\n perSeriesAligner: \"ALIGN_RATE\",\n }],\n },\n }],\n userLabels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nalert_policy = gcp.monitoring.AlertPolicy(\"alert_policy\",\n display_name=\"My Alert Policy\",\n combiner=\"OR\",\n conditions=[{\n \"display_name\": \"test condition\",\n \"condition_threshold\": {\n \"filter\": \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n \"duration\": \"60s\",\n \"comparison\": \"COMPARISON_GT\",\n \"aggregations\": [{\n \"alignment_period\": \"60s\",\n \"per_series_aligner\": \"ALIGN_RATE\",\n }],\n },\n }],\n user_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 alertPolicy = new Gcp.Monitoring.AlertPolicy(\"alert_policy\", new()\n {\n DisplayName = \"My Alert Policy\",\n Combiner = \"OR\",\n Conditions = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionArgs\n {\n DisplayName = \"test condition\",\n ConditionThreshold = new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdArgs\n {\n Filter = \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n Duration = \"60s\",\n Comparison = \"COMPARISON_GT\",\n Aggregations = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdAggregationArgs\n {\n AlignmentPeriod = \"60s\",\n PerSeriesAligner = \"ALIGN_RATE\",\n },\n },\n },\n },\n },\n UserLabels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewAlertPolicy(ctx, \"alert_policy\", \u0026monitoring.AlertPolicyArgs{\n\t\t\tDisplayName: pulumi.String(\"My Alert Policy\"),\n\t\t\tCombiner: pulumi.String(\"OR\"),\n\t\t\tConditions: monitoring.AlertPolicyConditionArray{\n\t\t\t\t\u0026monitoring.AlertPolicyConditionArgs{\n\t\t\t\t\tDisplayName: pulumi.String(\"test condition\"),\n\t\t\t\t\tConditionThreshold: \u0026monitoring.AlertPolicyConditionConditionThresholdArgs{\n\t\t\t\t\t\tFilter: pulumi.String(\"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\"),\n\t\t\t\t\t\tDuration: pulumi.String(\"60s\"),\n\t\t\t\t\t\tComparison: pulumi.String(\"COMPARISON_GT\"),\n\t\t\t\t\t\tAggregations: monitoring.AlertPolicyConditionConditionThresholdAggregationArray{\n\t\t\t\t\t\t\t\u0026monitoring.AlertPolicyConditionConditionThresholdAggregationArgs{\n\t\t\t\t\t\t\t\tAlignmentPeriod: pulumi.String(\"60s\"),\n\t\t\t\t\t\t\t\tPerSeriesAligner: pulumi.String(\"ALIGN_RATE\"),\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\tUserLabels: 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.monitoring.AlertPolicy;\nimport com.pulumi.gcp.monitoring.AlertPolicyArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionConditionThresholdArgs;\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 alertPolicy = new AlertPolicy(\"alertPolicy\", AlertPolicyArgs.builder()\n .displayName(\"My Alert Policy\")\n .combiner(\"OR\")\n .conditions(AlertPolicyConditionArgs.builder()\n .displayName(\"test condition\")\n .conditionThreshold(AlertPolicyConditionConditionThresholdArgs.builder()\n .filter(\"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\")\n .duration(\"60s\")\n .comparison(\"COMPARISON_GT\")\n .aggregations(AlertPolicyConditionConditionThresholdAggregationArgs.builder()\n .alignmentPeriod(\"60s\")\n .perSeriesAligner(\"ALIGN_RATE\")\n .build())\n .build())\n .build())\n .userLabels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n alertPolicy:\n type: gcp:monitoring:AlertPolicy\n name: alert_policy\n properties:\n displayName: My Alert Policy\n combiner: OR\n conditions:\n - displayName: test condition\n conditionThreshold:\n filter: metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" AND resource.type=\"gce_instance\"\n duration: 60s\n comparison: COMPARISON_GT\n aggregations:\n - alignmentPeriod: 60s\n perSeriesAligner: ALIGN_RATE\n userLabels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Alert Policy Evaluation Missing Data\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst alertPolicy = new gcp.monitoring.AlertPolicy(\"alert_policy\", {\n displayName: \"My Alert Policy\",\n combiner: \"OR\",\n conditions: [{\n displayName: \"test condition\",\n conditionThreshold: {\n filter: \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n duration: \"60s\",\n comparison: \"COMPARISON_GT\",\n aggregations: [{\n alignmentPeriod: \"60s\",\n perSeriesAligner: \"ALIGN_RATE\",\n }],\n evaluationMissingData: \"EVALUATION_MISSING_DATA_INACTIVE\",\n },\n }],\n userLabels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nalert_policy = gcp.monitoring.AlertPolicy(\"alert_policy\",\n display_name=\"My Alert Policy\",\n combiner=\"OR\",\n conditions=[{\n \"display_name\": \"test condition\",\n \"condition_threshold\": {\n \"filter\": \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n \"duration\": \"60s\",\n \"comparison\": \"COMPARISON_GT\",\n \"aggregations\": [{\n \"alignment_period\": \"60s\",\n \"per_series_aligner\": \"ALIGN_RATE\",\n }],\n \"evaluation_missing_data\": \"EVALUATION_MISSING_DATA_INACTIVE\",\n },\n }],\n user_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 alertPolicy = new Gcp.Monitoring.AlertPolicy(\"alert_policy\", new()\n {\n DisplayName = \"My Alert Policy\",\n Combiner = \"OR\",\n Conditions = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionArgs\n {\n DisplayName = \"test condition\",\n ConditionThreshold = new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdArgs\n {\n Filter = \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n Duration = \"60s\",\n Comparison = \"COMPARISON_GT\",\n Aggregations = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdAggregationArgs\n {\n AlignmentPeriod = \"60s\",\n PerSeriesAligner = \"ALIGN_RATE\",\n },\n },\n EvaluationMissingData = \"EVALUATION_MISSING_DATA_INACTIVE\",\n },\n },\n },\n UserLabels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewAlertPolicy(ctx, \"alert_policy\", \u0026monitoring.AlertPolicyArgs{\n\t\t\tDisplayName: pulumi.String(\"My Alert Policy\"),\n\t\t\tCombiner: pulumi.String(\"OR\"),\n\t\t\tConditions: monitoring.AlertPolicyConditionArray{\n\t\t\t\t\u0026monitoring.AlertPolicyConditionArgs{\n\t\t\t\t\tDisplayName: pulumi.String(\"test condition\"),\n\t\t\t\t\tConditionThreshold: \u0026monitoring.AlertPolicyConditionConditionThresholdArgs{\n\t\t\t\t\t\tFilter: pulumi.String(\"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\"),\n\t\t\t\t\t\tDuration: pulumi.String(\"60s\"),\n\t\t\t\t\t\tComparison: pulumi.String(\"COMPARISON_GT\"),\n\t\t\t\t\t\tAggregations: monitoring.AlertPolicyConditionConditionThresholdAggregationArray{\n\t\t\t\t\t\t\t\u0026monitoring.AlertPolicyConditionConditionThresholdAggregationArgs{\n\t\t\t\t\t\t\t\tAlignmentPeriod: pulumi.String(\"60s\"),\n\t\t\t\t\t\t\t\tPerSeriesAligner: pulumi.String(\"ALIGN_RATE\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tEvaluationMissingData: pulumi.String(\"EVALUATION_MISSING_DATA_INACTIVE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tUserLabels: 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.monitoring.AlertPolicy;\nimport com.pulumi.gcp.monitoring.AlertPolicyArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionConditionThresholdArgs;\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 alertPolicy = new AlertPolicy(\"alertPolicy\", AlertPolicyArgs.builder()\n .displayName(\"My Alert Policy\")\n .combiner(\"OR\")\n .conditions(AlertPolicyConditionArgs.builder()\n .displayName(\"test condition\")\n .conditionThreshold(AlertPolicyConditionConditionThresholdArgs.builder()\n .filter(\"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\")\n .duration(\"60s\")\n .comparison(\"COMPARISON_GT\")\n .aggregations(AlertPolicyConditionConditionThresholdAggregationArgs.builder()\n .alignmentPeriod(\"60s\")\n .perSeriesAligner(\"ALIGN_RATE\")\n .build())\n .evaluationMissingData(\"EVALUATION_MISSING_DATA_INACTIVE\")\n .build())\n .build())\n .userLabels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n alertPolicy:\n type: gcp:monitoring:AlertPolicy\n name: alert_policy\n properties:\n displayName: My Alert Policy\n combiner: OR\n conditions:\n - displayName: test condition\n conditionThreshold:\n filter: metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" AND resource.type=\"gce_instance\"\n duration: 60s\n comparison: COMPARISON_GT\n aggregations:\n - alignmentPeriod: 60s\n perSeriesAligner: ALIGN_RATE\n evaluationMissingData: EVALUATION_MISSING_DATA_INACTIVE\n userLabels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Alert Policy Forecast Options\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst alertPolicy = new gcp.monitoring.AlertPolicy(\"alert_policy\", {\n displayName: \"My Alert Policy\",\n combiner: \"OR\",\n conditions: [{\n displayName: \"test condition\",\n conditionThreshold: {\n filter: \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n duration: \"60s\",\n forecastOptions: {\n forecastHorizon: \"3600s\",\n },\n comparison: \"COMPARISON_GT\",\n aggregations: [{\n alignmentPeriod: \"60s\",\n perSeriesAligner: \"ALIGN_RATE\",\n }],\n },\n }],\n userLabels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nalert_policy = gcp.monitoring.AlertPolicy(\"alert_policy\",\n display_name=\"My Alert Policy\",\n combiner=\"OR\",\n conditions=[{\n \"display_name\": \"test condition\",\n \"condition_threshold\": {\n \"filter\": \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n \"duration\": \"60s\",\n \"forecast_options\": {\n \"forecast_horizon\": \"3600s\",\n },\n \"comparison\": \"COMPARISON_GT\",\n \"aggregations\": [{\n \"alignment_period\": \"60s\",\n \"per_series_aligner\": \"ALIGN_RATE\",\n }],\n },\n }],\n user_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 alertPolicy = new Gcp.Monitoring.AlertPolicy(\"alert_policy\", new()\n {\n DisplayName = \"My Alert Policy\",\n Combiner = \"OR\",\n Conditions = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionArgs\n {\n DisplayName = \"test condition\",\n ConditionThreshold = new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdArgs\n {\n Filter = \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n Duration = \"60s\",\n ForecastOptions = new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdForecastOptionsArgs\n {\n ForecastHorizon = \"3600s\",\n },\n Comparison = \"COMPARISON_GT\",\n Aggregations = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdAggregationArgs\n {\n AlignmentPeriod = \"60s\",\n PerSeriesAligner = \"ALIGN_RATE\",\n },\n },\n },\n },\n },\n UserLabels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewAlertPolicy(ctx, \"alert_policy\", \u0026monitoring.AlertPolicyArgs{\n\t\t\tDisplayName: pulumi.String(\"My Alert Policy\"),\n\t\t\tCombiner: pulumi.String(\"OR\"),\n\t\t\tConditions: monitoring.AlertPolicyConditionArray{\n\t\t\t\t\u0026monitoring.AlertPolicyConditionArgs{\n\t\t\t\t\tDisplayName: pulumi.String(\"test condition\"),\n\t\t\t\t\tConditionThreshold: \u0026monitoring.AlertPolicyConditionConditionThresholdArgs{\n\t\t\t\t\t\tFilter: pulumi.String(\"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\"),\n\t\t\t\t\t\tDuration: pulumi.String(\"60s\"),\n\t\t\t\t\t\tForecastOptions: \u0026monitoring.AlertPolicyConditionConditionThresholdForecastOptionsArgs{\n\t\t\t\t\t\t\tForecastHorizon: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tComparison: pulumi.String(\"COMPARISON_GT\"),\n\t\t\t\t\t\tAggregations: monitoring.AlertPolicyConditionConditionThresholdAggregationArray{\n\t\t\t\t\t\t\t\u0026monitoring.AlertPolicyConditionConditionThresholdAggregationArgs{\n\t\t\t\t\t\t\t\tAlignmentPeriod: pulumi.String(\"60s\"),\n\t\t\t\t\t\t\t\tPerSeriesAligner: pulumi.String(\"ALIGN_RATE\"),\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\tUserLabels: 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.monitoring.AlertPolicy;\nimport com.pulumi.gcp.monitoring.AlertPolicyArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionConditionThresholdArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionConditionThresholdForecastOptionsArgs;\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 alertPolicy = new AlertPolicy(\"alertPolicy\", AlertPolicyArgs.builder()\n .displayName(\"My Alert Policy\")\n .combiner(\"OR\")\n .conditions(AlertPolicyConditionArgs.builder()\n .displayName(\"test condition\")\n .conditionThreshold(AlertPolicyConditionConditionThresholdArgs.builder()\n .filter(\"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\")\n .duration(\"60s\")\n .forecastOptions(AlertPolicyConditionConditionThresholdForecastOptionsArgs.builder()\n .forecastHorizon(\"3600s\")\n .build())\n .comparison(\"COMPARISON_GT\")\n .aggregations(AlertPolicyConditionConditionThresholdAggregationArgs.builder()\n .alignmentPeriod(\"60s\")\n .perSeriesAligner(\"ALIGN_RATE\")\n .build())\n .build())\n .build())\n .userLabels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n alertPolicy:\n type: gcp:monitoring:AlertPolicy\n name: alert_policy\n properties:\n displayName: My Alert Policy\n combiner: OR\n conditions:\n - displayName: test condition\n conditionThreshold:\n filter: metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" AND resource.type=\"gce_instance\"\n duration: 60s\n forecastOptions:\n forecastHorizon: 3600s\n comparison: COMPARISON_GT\n aggregations:\n - alignmentPeriod: 60s\n perSeriesAligner: ALIGN_RATE\n userLabels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Alert Policy Promql Condition\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst alertPolicy = new gcp.monitoring.AlertPolicy(\"alert_policy\", {\n displayName: \"My Alert Policy\",\n combiner: \"OR\",\n conditions: [{\n displayName: \"test condition\",\n conditionPrometheusQueryLanguage: {\n query: \"compute_googleapis_com:instance_cpu_usage_time \u003e 0\",\n duration: \"60s\",\n evaluationInterval: \"60s\",\n alertRule: \"AlwaysOn\",\n ruleGroup: \"a test\",\n },\n }],\n alertStrategy: {\n autoClose: \"1800s\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nalert_policy = gcp.monitoring.AlertPolicy(\"alert_policy\",\n display_name=\"My Alert Policy\",\n combiner=\"OR\",\n conditions=[{\n \"display_name\": \"test condition\",\n \"condition_prometheus_query_language\": {\n \"query\": \"compute_googleapis_com:instance_cpu_usage_time \u003e 0\",\n \"duration\": \"60s\",\n \"evaluation_interval\": \"60s\",\n \"alert_rule\": \"AlwaysOn\",\n \"rule_group\": \"a test\",\n },\n }],\n alert_strategy={\n \"auto_close\": \"1800s\",\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 alertPolicy = new Gcp.Monitoring.AlertPolicy(\"alert_policy\", new()\n {\n DisplayName = \"My Alert Policy\",\n Combiner = \"OR\",\n Conditions = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionArgs\n {\n DisplayName = \"test condition\",\n ConditionPrometheusQueryLanguage = new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionPrometheusQueryLanguageArgs\n {\n Query = \"compute_googleapis_com:instance_cpu_usage_time \u003e 0\",\n Duration = \"60s\",\n EvaluationInterval = \"60s\",\n AlertRule = \"AlwaysOn\",\n RuleGroup = \"a test\",\n },\n },\n },\n AlertStrategy = new Gcp.Monitoring.Inputs.AlertPolicyAlertStrategyArgs\n {\n AutoClose = \"1800s\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewAlertPolicy(ctx, \"alert_policy\", \u0026monitoring.AlertPolicyArgs{\n\t\t\tDisplayName: pulumi.String(\"My Alert Policy\"),\n\t\t\tCombiner: pulumi.String(\"OR\"),\n\t\t\tConditions: monitoring.AlertPolicyConditionArray{\n\t\t\t\t\u0026monitoring.AlertPolicyConditionArgs{\n\t\t\t\t\tDisplayName: pulumi.String(\"test condition\"),\n\t\t\t\t\tConditionPrometheusQueryLanguage: \u0026monitoring.AlertPolicyConditionConditionPrometheusQueryLanguageArgs{\n\t\t\t\t\t\tQuery: pulumi.String(\"compute_googleapis_com:instance_cpu_usage_time \u003e 0\"),\n\t\t\t\t\t\tDuration: pulumi.String(\"60s\"),\n\t\t\t\t\t\tEvaluationInterval: pulumi.String(\"60s\"),\n\t\t\t\t\t\tAlertRule: pulumi.String(\"AlwaysOn\"),\n\t\t\t\t\t\tRuleGroup: pulumi.String(\"a test\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAlertStrategy: \u0026monitoring.AlertPolicyAlertStrategyArgs{\n\t\t\t\tAutoClose: pulumi.String(\"1800s\"),\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.monitoring.AlertPolicy;\nimport com.pulumi.gcp.monitoring.AlertPolicyArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionConditionPrometheusQueryLanguageArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyAlertStrategyArgs;\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 alertPolicy = new AlertPolicy(\"alertPolicy\", AlertPolicyArgs.builder()\n .displayName(\"My Alert Policy\")\n .combiner(\"OR\")\n .conditions(AlertPolicyConditionArgs.builder()\n .displayName(\"test condition\")\n .conditionPrometheusQueryLanguage(AlertPolicyConditionConditionPrometheusQueryLanguageArgs.builder()\n .query(\"compute_googleapis_com:instance_cpu_usage_time \u003e 0\")\n .duration(\"60s\")\n .evaluationInterval(\"60s\")\n .alertRule(\"AlwaysOn\")\n .ruleGroup(\"a test\")\n .build())\n .build())\n .alertStrategy(AlertPolicyAlertStrategyArgs.builder()\n .autoClose(\"1800s\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n alertPolicy:\n type: gcp:monitoring:AlertPolicy\n name: alert_policy\n properties:\n displayName: My Alert Policy\n combiner: OR\n conditions:\n - displayName: test condition\n conditionPrometheusQueryLanguage:\n query: compute_googleapis_com:instance_cpu_usage_time \u003e 0\n duration: 60s\n evaluationInterval: 60s\n alertRule: AlwaysOn\n ruleGroup: a test\n alertStrategy:\n autoClose: 1800s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAlertPolicy can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AlertPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:monitoring/alertPolicy:AlertPolicy default {{name}}\n```\n\n", "properties": { "alertStrategy": { "$ref": "#/types/gcp:monitoring/AlertPolicyAlertStrategy:AlertPolicyAlertStrategy", @@ -212644,7 +212644,7 @@ } }, "gcp:monitoring/customService:CustomService": { - "description": "A Service is a discrete, autonomous, and network-accessible unit,\ndesigned to solve an individual concern. In Cloud Monitoring,\na Service acts as the root resource under which operational aspects of\nthe service are accessible\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 * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n * [Service-orientation on Wikipedia](https://en.wikipedia.org/wiki/Service-orientation)\n\n## Example Usage\n\n### Monitoring Service Custom\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom = new gcp.monitoring.CustomService(\"custom\", {\n serviceId: \"custom-srv\",\n displayName: \"My Custom Service custom-srv\",\n telemetry: {\n resourceName: \"//product.googleapis.com/foo/foo/services/test\",\n },\n userLabels: {\n my_key: \"my_value\",\n my_other_key: \"my_other_value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom = gcp.monitoring.CustomService(\"custom\",\n service_id=\"custom-srv\",\n display_name=\"My Custom Service custom-srv\",\n telemetry={\n \"resourceName\": \"//product.googleapis.com/foo/foo/services/test\",\n },\n user_labels={\n \"my_key\": \"my_value\",\n \"my_other_key\": \"my_other_value\",\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 = new Gcp.Monitoring.CustomService(\"custom\", new()\n {\n ServiceId = \"custom-srv\",\n DisplayName = \"My Custom Service custom-srv\",\n Telemetry = new Gcp.Monitoring.Inputs.CustomServiceTelemetryArgs\n {\n ResourceName = \"//product.googleapis.com/foo/foo/services/test\",\n },\n UserLabels = \n {\n { \"my_key\", \"my_value\" },\n { \"my_other_key\", \"my_other_value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewCustomService(ctx, \"custom\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service custom-srv\"),\n\t\t\tTelemetry: \u0026monitoring.CustomServiceTelemetryArgs{\n\t\t\t\tResourceName: pulumi.String(\"//product.googleapis.com/foo/foo/services/test\"),\n\t\t\t},\n\t\t\tUserLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_value\"),\n\t\t\t\t\"my_other_key\": pulumi.String(\"my_other_value\"),\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.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.inputs.CustomServiceTelemetryArgs;\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 = new CustomService(\"custom\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv\")\n .displayName(\"My Custom Service custom-srv\")\n .telemetry(CustomServiceTelemetryArgs.builder()\n .resourceName(\"//product.googleapis.com/foo/foo/services/test\")\n .build())\n .userLabels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_value\"),\n Map.entry(\"my_other_key\", \"my_other_value\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n custom:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv\n displayName: My Custom Service custom-srv\n telemetry:\n resourceName: //product.googleapis.com/foo/foo/services/test\n userLabels:\n my_key: my_value\n my_other_key: my_other_value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:monitoring/customService:CustomService default {{name}}\n```\n\n", + "description": "A Service is a discrete, autonomous, and network-accessible unit,\ndesigned to solve an individual concern. In Cloud Monitoring,\na Service acts as the root resource under which operational aspects of\nthe service are accessible\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 * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n * [Service-orientation on Wikipedia](https://en.wikipedia.org/wiki/Service-orientation)\n\n## Example Usage\n\n### Monitoring Service Custom\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom = new gcp.monitoring.CustomService(\"custom\", {\n serviceId: \"custom-srv\",\n displayName: \"My Custom Service custom-srv\",\n telemetry: {\n resourceName: \"//product.googleapis.com/foo/foo/services/test\",\n },\n userLabels: {\n my_key: \"my_value\",\n my_other_key: \"my_other_value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom = gcp.monitoring.CustomService(\"custom\",\n service_id=\"custom-srv\",\n display_name=\"My Custom Service custom-srv\",\n telemetry={\n \"resource_name\": \"//product.googleapis.com/foo/foo/services/test\",\n },\n user_labels={\n \"my_key\": \"my_value\",\n \"my_other_key\": \"my_other_value\",\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 = new Gcp.Monitoring.CustomService(\"custom\", new()\n {\n ServiceId = \"custom-srv\",\n DisplayName = \"My Custom Service custom-srv\",\n Telemetry = new Gcp.Monitoring.Inputs.CustomServiceTelemetryArgs\n {\n ResourceName = \"//product.googleapis.com/foo/foo/services/test\",\n },\n UserLabels = \n {\n { \"my_key\", \"my_value\" },\n { \"my_other_key\", \"my_other_value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewCustomService(ctx, \"custom\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service custom-srv\"),\n\t\t\tTelemetry: \u0026monitoring.CustomServiceTelemetryArgs{\n\t\t\t\tResourceName: pulumi.String(\"//product.googleapis.com/foo/foo/services/test\"),\n\t\t\t},\n\t\t\tUserLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_value\"),\n\t\t\t\t\"my_other_key\": pulumi.String(\"my_other_value\"),\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.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.inputs.CustomServiceTelemetryArgs;\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 = new CustomService(\"custom\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv\")\n .displayName(\"My Custom Service custom-srv\")\n .telemetry(CustomServiceTelemetryArgs.builder()\n .resourceName(\"//product.googleapis.com/foo/foo/services/test\")\n .build())\n .userLabels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_value\"),\n Map.entry(\"my_other_key\", \"my_other_value\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n custom:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv\n displayName: My Custom Service custom-srv\n telemetry:\n resourceName: //product.googleapis.com/foo/foo/services/test\n userLabels:\n my_key: my_value\n my_other_key: my_other_value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:monitoring/customService:CustomService default {{name}}\n```\n\n", "properties": { "displayName": { "type": "string", @@ -212789,7 +212789,7 @@ } }, "gcp:monitoring/genericService:GenericService": { - "description": "A Service is a discrete, autonomous, and network-accessible unit,\ndesigned to solve an individual concern. In Cloud Monitoring,\na Service acts as the root resource under which operational aspects of\nthe service are accessible\n\n\nTo get more information about GenericService, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services)\n* How-to Guides\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n * [Service-orientation on Wikipedia](https://en.wikipedia.org/wiki/Service-orientation)\n\n## Example Usage\n\n### Monitoring Service Example\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myService = new gcp.monitoring.GenericService(\"my_service\", {\n serviceId: \"my-service\",\n displayName: \"My Service my-service\",\n userLabels: {\n my_key: \"my_value\",\n my_other_key: \"my_other_value\",\n },\n basicService: {\n serviceType: \"APP_ENGINE\",\n serviceLabels: {\n module_id: \"another-module-id\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_service = gcp.monitoring.GenericService(\"my_service\",\n service_id=\"my-service\",\n display_name=\"My Service my-service\",\n user_labels={\n \"my_key\": \"my_value\",\n \"my_other_key\": \"my_other_value\",\n },\n basic_service={\n \"serviceType\": \"APP_ENGINE\",\n \"serviceLabels\": {\n \"module_id\": \"another-module-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 myService = new Gcp.Monitoring.GenericService(\"my_service\", new()\n {\n ServiceId = \"my-service\",\n DisplayName = \"My Service my-service\",\n UserLabels = \n {\n { \"my_key\", \"my_value\" },\n { \"my_other_key\", \"my_other_value\" },\n },\n BasicService = new Gcp.Monitoring.Inputs.GenericServiceBasicServiceArgs\n {\n ServiceType = \"APP_ENGINE\",\n ServiceLabels = \n {\n { \"module_id\", \"another-module-id\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewGenericService(ctx, \"my_service\", \u0026monitoring.GenericServiceArgs{\n\t\t\tServiceId: pulumi.String(\"my-service\"),\n\t\t\tDisplayName: pulumi.String(\"My Service my-service\"),\n\t\t\tUserLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_value\"),\n\t\t\t\t\"my_other_key\": pulumi.String(\"my_other_value\"),\n\t\t\t},\n\t\t\tBasicService: \u0026monitoring.GenericServiceBasicServiceArgs{\n\t\t\t\tServiceType: pulumi.String(\"APP_ENGINE\"),\n\t\t\t\tServiceLabels: pulumi.StringMap{\n\t\t\t\t\t\"module_id\": pulumi.String(\"another-module-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.monitoring.GenericService;\nimport com.pulumi.gcp.monitoring.GenericServiceArgs;\nimport com.pulumi.gcp.monitoring.inputs.GenericServiceBasicServiceArgs;\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 myService = new GenericService(\"myService\", GenericServiceArgs.builder()\n .serviceId(\"my-service\")\n .displayName(\"My Service my-service\")\n .userLabels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_value\"),\n Map.entry(\"my_other_key\", \"my_other_value\")\n ))\n .basicService(GenericServiceBasicServiceArgs.builder()\n .serviceType(\"APP_ENGINE\")\n .serviceLabels(Map.of(\"module_id\", \"another-module-id\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myService:\n type: gcp:monitoring:GenericService\n name: my_service\n properties:\n serviceId: my-service\n displayName: My Service my-service\n userLabels:\n my_key: my_value\n my_other_key: my_other_value\n basicService:\n serviceType: APP_ENGINE\n serviceLabels:\n module_id: another-module-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGenericService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/services/{{service_id}}`\n\n* `{{project}}/{{service_id}}`\n\n* `{{service_id}}`\n\nWhen using the `pulumi import` command, GenericService can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:monitoring/genericService:GenericService default projects/{{project}}/services/{{service_id}}\n```\n\n```sh\n$ pulumi import gcp:monitoring/genericService:GenericService default {{project}}/{{service_id}}\n```\n\n```sh\n$ pulumi import gcp:monitoring/genericService:GenericService default {{service_id}}\n```\n\n", + "description": "A Service is a discrete, autonomous, and network-accessible unit,\ndesigned to solve an individual concern. In Cloud Monitoring,\na Service acts as the root resource under which operational aspects of\nthe service are accessible\n\n\nTo get more information about GenericService, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services)\n* How-to Guides\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n * [Service-orientation on Wikipedia](https://en.wikipedia.org/wiki/Service-orientation)\n\n## Example Usage\n\n### Monitoring Service Example\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myService = new gcp.monitoring.GenericService(\"my_service\", {\n serviceId: \"my-service\",\n displayName: \"My Service my-service\",\n userLabels: {\n my_key: \"my_value\",\n my_other_key: \"my_other_value\",\n },\n basicService: {\n serviceType: \"APP_ENGINE\",\n serviceLabels: {\n module_id: \"another-module-id\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_service = gcp.monitoring.GenericService(\"my_service\",\n service_id=\"my-service\",\n display_name=\"My Service my-service\",\n user_labels={\n \"my_key\": \"my_value\",\n \"my_other_key\": \"my_other_value\",\n },\n basic_service={\n \"service_type\": \"APP_ENGINE\",\n \"service_labels\": {\n \"module_id\": \"another-module-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 myService = new Gcp.Monitoring.GenericService(\"my_service\", new()\n {\n ServiceId = \"my-service\",\n DisplayName = \"My Service my-service\",\n UserLabels = \n {\n { \"my_key\", \"my_value\" },\n { \"my_other_key\", \"my_other_value\" },\n },\n BasicService = new Gcp.Monitoring.Inputs.GenericServiceBasicServiceArgs\n {\n ServiceType = \"APP_ENGINE\",\n ServiceLabels = \n {\n { \"module_id\", \"another-module-id\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewGenericService(ctx, \"my_service\", \u0026monitoring.GenericServiceArgs{\n\t\t\tServiceId: pulumi.String(\"my-service\"),\n\t\t\tDisplayName: pulumi.String(\"My Service my-service\"),\n\t\t\tUserLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_value\"),\n\t\t\t\t\"my_other_key\": pulumi.String(\"my_other_value\"),\n\t\t\t},\n\t\t\tBasicService: \u0026monitoring.GenericServiceBasicServiceArgs{\n\t\t\t\tServiceType: pulumi.String(\"APP_ENGINE\"),\n\t\t\t\tServiceLabels: pulumi.StringMap{\n\t\t\t\t\t\"module_id\": pulumi.String(\"another-module-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.monitoring.GenericService;\nimport com.pulumi.gcp.monitoring.GenericServiceArgs;\nimport com.pulumi.gcp.monitoring.inputs.GenericServiceBasicServiceArgs;\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 myService = new GenericService(\"myService\", GenericServiceArgs.builder()\n .serviceId(\"my-service\")\n .displayName(\"My Service my-service\")\n .userLabels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_value\"),\n Map.entry(\"my_other_key\", \"my_other_value\")\n ))\n .basicService(GenericServiceBasicServiceArgs.builder()\n .serviceType(\"APP_ENGINE\")\n .serviceLabels(Map.of(\"module_id\", \"another-module-id\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myService:\n type: gcp:monitoring:GenericService\n name: my_service\n properties:\n serviceId: my-service\n displayName: My Service my-service\n userLabels:\n my_key: my_value\n my_other_key: my_other_value\n basicService:\n serviceType: APP_ENGINE\n serviceLabels:\n module_id: another-module-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGenericService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/services/{{service_id}}`\n\n* `{{project}}/{{service_id}}`\n\n* `{{service_id}}`\n\nWhen using the `pulumi import` command, GenericService can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:monitoring/genericService:GenericService default projects/{{project}}/services/{{service_id}}\n```\n\n```sh\n$ pulumi import gcp:monitoring/genericService:GenericService default {{project}}/{{service_id}}\n```\n\n```sh\n$ pulumi import gcp:monitoring/genericService:GenericService default {{service_id}}\n```\n\n", "properties": { "basicService": { "$ref": "#/types/gcp:monitoring/GenericServiceBasicService:GenericServiceBasicService", @@ -213001,7 +213001,7 @@ } }, "gcp:monitoring/metricDescriptor:MetricDescriptor": { - "description": "Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable.\n\n\nTo get more information about MetricDescriptor, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/monitoring/custom-metrics/)\n\n## Example Usage\n\n### Monitoring Metric Descriptor Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.monitoring.MetricDescriptor(\"basic\", {\n description: \"Daily sales records from all branch stores.\",\n displayName: \"metric-descriptor\",\n type: \"custom.googleapis.com/stores/daily_sales\",\n metricKind: \"GAUGE\",\n valueType: \"DOUBLE\",\n unit: \"{USD}\",\n labels: [{\n key: \"store_id\",\n valueType: \"STRING\",\n description: \"The ID of the store.\",\n }],\n launchStage: \"BETA\",\n metadata: {\n samplePeriod: \"60s\",\n ingestDelay: \"30s\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.monitoring.MetricDescriptor(\"basic\",\n description=\"Daily sales records from all branch stores.\",\n display_name=\"metric-descriptor\",\n type=\"custom.googleapis.com/stores/daily_sales\",\n metric_kind=\"GAUGE\",\n value_type=\"DOUBLE\",\n unit=\"{USD}\",\n labels=[{\n \"key\": \"store_id\",\n \"valueType\": \"STRING\",\n \"description\": \"The ID of the store.\",\n }],\n launch_stage=\"BETA\",\n metadata={\n \"samplePeriod\": \"60s\",\n \"ingestDelay\": \"30s\",\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.Monitoring.MetricDescriptor(\"basic\", new()\n {\n Description = \"Daily sales records from all branch stores.\",\n DisplayName = \"metric-descriptor\",\n Type = \"custom.googleapis.com/stores/daily_sales\",\n MetricKind = \"GAUGE\",\n ValueType = \"DOUBLE\",\n Unit = \"{USD}\",\n Labels = new[]\n {\n new Gcp.Monitoring.Inputs.MetricDescriptorLabelArgs\n {\n Key = \"store_id\",\n ValueType = \"STRING\",\n Description = \"The ID of the store.\",\n },\n },\n LaunchStage = \"BETA\",\n Metadata = new Gcp.Monitoring.Inputs.MetricDescriptorMetadataArgs\n {\n SamplePeriod = \"60s\",\n IngestDelay = \"30s\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewMetricDescriptor(ctx, \"basic\", \u0026monitoring.MetricDescriptorArgs{\n\t\t\tDescription: pulumi.String(\"Daily sales records from all branch stores.\"),\n\t\t\tDisplayName: pulumi.String(\"metric-descriptor\"),\n\t\t\tType: pulumi.String(\"custom.googleapis.com/stores/daily_sales\"),\n\t\t\tMetricKind: pulumi.String(\"GAUGE\"),\n\t\t\tValueType: pulumi.String(\"DOUBLE\"),\n\t\t\tUnit: pulumi.String(\"{USD}\"),\n\t\t\tLabels: monitoring.MetricDescriptorLabelArray{\n\t\t\t\t\u0026monitoring.MetricDescriptorLabelArgs{\n\t\t\t\t\tKey: pulumi.String(\"store_id\"),\n\t\t\t\t\tValueType: pulumi.String(\"STRING\"),\n\t\t\t\t\tDescription: pulumi.String(\"The ID of the store.\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tMetadata: \u0026monitoring.MetricDescriptorMetadataArgs{\n\t\t\t\tSamplePeriod: pulumi.String(\"60s\"),\n\t\t\t\tIngestDelay: pulumi.String(\"30s\"),\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.monitoring.MetricDescriptor;\nimport com.pulumi.gcp.monitoring.MetricDescriptorArgs;\nimport com.pulumi.gcp.monitoring.inputs.MetricDescriptorLabelArgs;\nimport com.pulumi.gcp.monitoring.inputs.MetricDescriptorMetadataArgs;\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 MetricDescriptor(\"basic\", MetricDescriptorArgs.builder()\n .description(\"Daily sales records from all branch stores.\")\n .displayName(\"metric-descriptor\")\n .type(\"custom.googleapis.com/stores/daily_sales\")\n .metricKind(\"GAUGE\")\n .valueType(\"DOUBLE\")\n .unit(\"{USD}\")\n .labels(MetricDescriptorLabelArgs.builder()\n .key(\"store_id\")\n .valueType(\"STRING\")\n .description(\"The ID of the store.\")\n .build())\n .launchStage(\"BETA\")\n .metadata(MetricDescriptorMetadataArgs.builder()\n .samplePeriod(\"60s\")\n .ingestDelay(\"30s\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:monitoring:MetricDescriptor\n properties:\n description: Daily sales records from all branch stores.\n displayName: metric-descriptor\n type: custom.googleapis.com/stores/daily_sales\n metricKind: GAUGE\n valueType: DOUBLE\n unit: '{USD}'\n labels:\n - key: store_id\n valueType: STRING\n description: The ID of the store.\n launchStage: BETA\n metadata:\n samplePeriod: 60s\n ingestDelay: 30s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Metric Descriptor Alert\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst withAlert = new gcp.monitoring.MetricDescriptor(\"with_alert\", {\n description: \"Daily sales records from all branch stores.\",\n displayName: \"metric-descriptor\",\n type: \"custom.googleapis.com/stores/daily_sales\",\n metricKind: \"GAUGE\",\n valueType: \"DOUBLE\",\n unit: \"{USD}\",\n});\nconst alertPolicy = new gcp.monitoring.AlertPolicy(\"alert_policy\", {\n displayName: \"metric-descriptor\",\n combiner: \"OR\",\n conditions: [{\n displayName: \"test condition\",\n conditionThreshold: {\n filter: pulumi.interpolate`metric.type=\"${withAlert.type}\" AND resource.type=\"gce_instance\"`,\n duration: \"60s\",\n comparison: \"COMPARISON_GT\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nwith_alert = gcp.monitoring.MetricDescriptor(\"with_alert\",\n description=\"Daily sales records from all branch stores.\",\n display_name=\"metric-descriptor\",\n type=\"custom.googleapis.com/stores/daily_sales\",\n metric_kind=\"GAUGE\",\n value_type=\"DOUBLE\",\n unit=\"{USD}\")\nalert_policy = gcp.monitoring.AlertPolicy(\"alert_policy\",\n display_name=\"metric-descriptor\",\n combiner=\"OR\",\n conditions=[{\n \"displayName\": \"test condition\",\n \"conditionThreshold\": {\n \"filter\": with_alert.type.apply(lambda type: f\"metric.type=\\\"{type}\\\" AND resource.type=\\\"gce_instance\\\"\"),\n \"duration\": \"60s\",\n \"comparison\": \"COMPARISON_GT\",\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 withAlert = new Gcp.Monitoring.MetricDescriptor(\"with_alert\", new()\n {\n Description = \"Daily sales records from all branch stores.\",\n DisplayName = \"metric-descriptor\",\n Type = \"custom.googleapis.com/stores/daily_sales\",\n MetricKind = \"GAUGE\",\n ValueType = \"DOUBLE\",\n Unit = \"{USD}\",\n });\n\n var alertPolicy = new Gcp.Monitoring.AlertPolicy(\"alert_policy\", new()\n {\n DisplayName = \"metric-descriptor\",\n Combiner = \"OR\",\n Conditions = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionArgs\n {\n DisplayName = \"test condition\",\n ConditionThreshold = new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdArgs\n {\n Filter = withAlert.Type.Apply(type =\u003e $\"metric.type=\\\"{type}\\\" AND resource.type=\\\"gce_instance\\\"\"),\n Duration = \"60s\",\n Comparison = \"COMPARISON_GT\",\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/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\twithAlert, err := monitoring.NewMetricDescriptor(ctx, \"with_alert\", \u0026monitoring.MetricDescriptorArgs{\n\t\t\tDescription: pulumi.String(\"Daily sales records from all branch stores.\"),\n\t\t\tDisplayName: pulumi.String(\"metric-descriptor\"),\n\t\t\tType: pulumi.String(\"custom.googleapis.com/stores/daily_sales\"),\n\t\t\tMetricKind: pulumi.String(\"GAUGE\"),\n\t\t\tValueType: pulumi.String(\"DOUBLE\"),\n\t\t\tUnit: pulumi.String(\"{USD}\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewAlertPolicy(ctx, \"alert_policy\", \u0026monitoring.AlertPolicyArgs{\n\t\t\tDisplayName: pulumi.String(\"metric-descriptor\"),\n\t\t\tCombiner: pulumi.String(\"OR\"),\n\t\t\tConditions: monitoring.AlertPolicyConditionArray{\n\t\t\t\t\u0026monitoring.AlertPolicyConditionArgs{\n\t\t\t\t\tDisplayName: pulumi.String(\"test condition\"),\n\t\t\t\t\tConditionThreshold: \u0026monitoring.AlertPolicyConditionConditionThresholdArgs{\n\t\t\t\t\t\tFilter: withAlert.Type.ApplyT(func(_type string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"metric.type=\\\"%v\\\" AND resource.type=\\\"gce_instance\\\"\", _type), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\tDuration: pulumi.String(\"60s\"),\n\t\t\t\t\t\tComparison: pulumi.String(\"COMPARISON_GT\"),\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.monitoring.MetricDescriptor;\nimport com.pulumi.gcp.monitoring.MetricDescriptorArgs;\nimport com.pulumi.gcp.monitoring.AlertPolicy;\nimport com.pulumi.gcp.monitoring.AlertPolicyArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionConditionThresholdArgs;\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 withAlert = new MetricDescriptor(\"withAlert\", MetricDescriptorArgs.builder()\n .description(\"Daily sales records from all branch stores.\")\n .displayName(\"metric-descriptor\")\n .type(\"custom.googleapis.com/stores/daily_sales\")\n .metricKind(\"GAUGE\")\n .valueType(\"DOUBLE\")\n .unit(\"{USD}\")\n .build());\n\n var alertPolicy = new AlertPolicy(\"alertPolicy\", AlertPolicyArgs.builder()\n .displayName(\"metric-descriptor\")\n .combiner(\"OR\")\n .conditions(AlertPolicyConditionArgs.builder()\n .displayName(\"test condition\")\n .conditionThreshold(AlertPolicyConditionConditionThresholdArgs.builder()\n .filter(withAlert.type().applyValue(type -\u003e String.format(\"metric.type=\\\"%s\\\" AND resource.type=\\\"gce_instance\\\"\", type)))\n .duration(\"60s\")\n .comparison(\"COMPARISON_GT\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n withAlert:\n type: gcp:monitoring:MetricDescriptor\n name: with_alert\n properties:\n description: Daily sales records from all branch stores.\n displayName: metric-descriptor\n type: custom.googleapis.com/stores/daily_sales\n metricKind: GAUGE\n valueType: DOUBLE\n unit: '{USD}'\n alertPolicy:\n type: gcp:monitoring:AlertPolicy\n name: alert_policy\n properties:\n displayName: metric-descriptor\n combiner: OR\n conditions:\n - displayName: test condition\n conditionThreshold:\n filter: metric.type=\"${withAlert.type}\" AND resource.type=\"gce_instance\"\n duration: 60s\n comparison: COMPARISON_GT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMetricDescriptor can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, MetricDescriptor can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:monitoring/metricDescriptor:MetricDescriptor default {{name}}\n```\n\n", + "description": "Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable.\n\n\nTo get more information about MetricDescriptor, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/monitoring/custom-metrics/)\n\n## Example Usage\n\n### Monitoring Metric Descriptor Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.monitoring.MetricDescriptor(\"basic\", {\n description: \"Daily sales records from all branch stores.\",\n displayName: \"metric-descriptor\",\n type: \"custom.googleapis.com/stores/daily_sales\",\n metricKind: \"GAUGE\",\n valueType: \"DOUBLE\",\n unit: \"{USD}\",\n labels: [{\n key: \"store_id\",\n valueType: \"STRING\",\n description: \"The ID of the store.\",\n }],\n launchStage: \"BETA\",\n metadata: {\n samplePeriod: \"60s\",\n ingestDelay: \"30s\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.monitoring.MetricDescriptor(\"basic\",\n description=\"Daily sales records from all branch stores.\",\n display_name=\"metric-descriptor\",\n type=\"custom.googleapis.com/stores/daily_sales\",\n metric_kind=\"GAUGE\",\n value_type=\"DOUBLE\",\n unit=\"{USD}\",\n labels=[{\n \"key\": \"store_id\",\n \"value_type\": \"STRING\",\n \"description\": \"The ID of the store.\",\n }],\n launch_stage=\"BETA\",\n metadata={\n \"sample_period\": \"60s\",\n \"ingest_delay\": \"30s\",\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.Monitoring.MetricDescriptor(\"basic\", new()\n {\n Description = \"Daily sales records from all branch stores.\",\n DisplayName = \"metric-descriptor\",\n Type = \"custom.googleapis.com/stores/daily_sales\",\n MetricKind = \"GAUGE\",\n ValueType = \"DOUBLE\",\n Unit = \"{USD}\",\n Labels = new[]\n {\n new Gcp.Monitoring.Inputs.MetricDescriptorLabelArgs\n {\n Key = \"store_id\",\n ValueType = \"STRING\",\n Description = \"The ID of the store.\",\n },\n },\n LaunchStage = \"BETA\",\n Metadata = new Gcp.Monitoring.Inputs.MetricDescriptorMetadataArgs\n {\n SamplePeriod = \"60s\",\n IngestDelay = \"30s\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewMetricDescriptor(ctx, \"basic\", \u0026monitoring.MetricDescriptorArgs{\n\t\t\tDescription: pulumi.String(\"Daily sales records from all branch stores.\"),\n\t\t\tDisplayName: pulumi.String(\"metric-descriptor\"),\n\t\t\tType: pulumi.String(\"custom.googleapis.com/stores/daily_sales\"),\n\t\t\tMetricKind: pulumi.String(\"GAUGE\"),\n\t\t\tValueType: pulumi.String(\"DOUBLE\"),\n\t\t\tUnit: pulumi.String(\"{USD}\"),\n\t\t\tLabels: monitoring.MetricDescriptorLabelArray{\n\t\t\t\t\u0026monitoring.MetricDescriptorLabelArgs{\n\t\t\t\t\tKey: pulumi.String(\"store_id\"),\n\t\t\t\t\tValueType: pulumi.String(\"STRING\"),\n\t\t\t\t\tDescription: pulumi.String(\"The ID of the store.\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tMetadata: \u0026monitoring.MetricDescriptorMetadataArgs{\n\t\t\t\tSamplePeriod: pulumi.String(\"60s\"),\n\t\t\t\tIngestDelay: pulumi.String(\"30s\"),\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.monitoring.MetricDescriptor;\nimport com.pulumi.gcp.monitoring.MetricDescriptorArgs;\nimport com.pulumi.gcp.monitoring.inputs.MetricDescriptorLabelArgs;\nimport com.pulumi.gcp.monitoring.inputs.MetricDescriptorMetadataArgs;\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 MetricDescriptor(\"basic\", MetricDescriptorArgs.builder()\n .description(\"Daily sales records from all branch stores.\")\n .displayName(\"metric-descriptor\")\n .type(\"custom.googleapis.com/stores/daily_sales\")\n .metricKind(\"GAUGE\")\n .valueType(\"DOUBLE\")\n .unit(\"{USD}\")\n .labels(MetricDescriptorLabelArgs.builder()\n .key(\"store_id\")\n .valueType(\"STRING\")\n .description(\"The ID of the store.\")\n .build())\n .launchStage(\"BETA\")\n .metadata(MetricDescriptorMetadataArgs.builder()\n .samplePeriod(\"60s\")\n .ingestDelay(\"30s\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:monitoring:MetricDescriptor\n properties:\n description: Daily sales records from all branch stores.\n displayName: metric-descriptor\n type: custom.googleapis.com/stores/daily_sales\n metricKind: GAUGE\n valueType: DOUBLE\n unit: '{USD}'\n labels:\n - key: store_id\n valueType: STRING\n description: The ID of the store.\n launchStage: BETA\n metadata:\n samplePeriod: 60s\n ingestDelay: 30s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Metric Descriptor Alert\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst withAlert = new gcp.monitoring.MetricDescriptor(\"with_alert\", {\n description: \"Daily sales records from all branch stores.\",\n displayName: \"metric-descriptor\",\n type: \"custom.googleapis.com/stores/daily_sales\",\n metricKind: \"GAUGE\",\n valueType: \"DOUBLE\",\n unit: \"{USD}\",\n});\nconst alertPolicy = new gcp.monitoring.AlertPolicy(\"alert_policy\", {\n displayName: \"metric-descriptor\",\n combiner: \"OR\",\n conditions: [{\n displayName: \"test condition\",\n conditionThreshold: {\n filter: pulumi.interpolate`metric.type=\"${withAlert.type}\" AND resource.type=\"gce_instance\"`,\n duration: \"60s\",\n comparison: \"COMPARISON_GT\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nwith_alert = gcp.monitoring.MetricDescriptor(\"with_alert\",\n description=\"Daily sales records from all branch stores.\",\n display_name=\"metric-descriptor\",\n type=\"custom.googleapis.com/stores/daily_sales\",\n metric_kind=\"GAUGE\",\n value_type=\"DOUBLE\",\n unit=\"{USD}\")\nalert_policy = gcp.monitoring.AlertPolicy(\"alert_policy\",\n display_name=\"metric-descriptor\",\n combiner=\"OR\",\n conditions=[{\n \"display_name\": \"test condition\",\n \"condition_threshold\": {\n \"filter\": with_alert.type.apply(lambda type: f\"metric.type=\\\"{type}\\\" AND resource.type=\\\"gce_instance\\\"\"),\n \"duration\": \"60s\",\n \"comparison\": \"COMPARISON_GT\",\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 withAlert = new Gcp.Monitoring.MetricDescriptor(\"with_alert\", new()\n {\n Description = \"Daily sales records from all branch stores.\",\n DisplayName = \"metric-descriptor\",\n Type = \"custom.googleapis.com/stores/daily_sales\",\n MetricKind = \"GAUGE\",\n ValueType = \"DOUBLE\",\n Unit = \"{USD}\",\n });\n\n var alertPolicy = new Gcp.Monitoring.AlertPolicy(\"alert_policy\", new()\n {\n DisplayName = \"metric-descriptor\",\n Combiner = \"OR\",\n Conditions = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionArgs\n {\n DisplayName = \"test condition\",\n ConditionThreshold = new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdArgs\n {\n Filter = withAlert.Type.Apply(type =\u003e $\"metric.type=\\\"{type}\\\" AND resource.type=\\\"gce_instance\\\"\"),\n Duration = \"60s\",\n Comparison = \"COMPARISON_GT\",\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/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\twithAlert, err := monitoring.NewMetricDescriptor(ctx, \"with_alert\", \u0026monitoring.MetricDescriptorArgs{\n\t\t\tDescription: pulumi.String(\"Daily sales records from all branch stores.\"),\n\t\t\tDisplayName: pulumi.String(\"metric-descriptor\"),\n\t\t\tType: pulumi.String(\"custom.googleapis.com/stores/daily_sales\"),\n\t\t\tMetricKind: pulumi.String(\"GAUGE\"),\n\t\t\tValueType: pulumi.String(\"DOUBLE\"),\n\t\t\tUnit: pulumi.String(\"{USD}\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewAlertPolicy(ctx, \"alert_policy\", \u0026monitoring.AlertPolicyArgs{\n\t\t\tDisplayName: pulumi.String(\"metric-descriptor\"),\n\t\t\tCombiner: pulumi.String(\"OR\"),\n\t\t\tConditions: monitoring.AlertPolicyConditionArray{\n\t\t\t\t\u0026monitoring.AlertPolicyConditionArgs{\n\t\t\t\t\tDisplayName: pulumi.String(\"test condition\"),\n\t\t\t\t\tConditionThreshold: \u0026monitoring.AlertPolicyConditionConditionThresholdArgs{\n\t\t\t\t\t\tFilter: withAlert.Type.ApplyT(func(_type string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"metric.type=\\\"%v\\\" AND resource.type=\\\"gce_instance\\\"\", _type), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\tDuration: pulumi.String(\"60s\"),\n\t\t\t\t\t\tComparison: pulumi.String(\"COMPARISON_GT\"),\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.monitoring.MetricDescriptor;\nimport com.pulumi.gcp.monitoring.MetricDescriptorArgs;\nimport com.pulumi.gcp.monitoring.AlertPolicy;\nimport com.pulumi.gcp.monitoring.AlertPolicyArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionConditionThresholdArgs;\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 withAlert = new MetricDescriptor(\"withAlert\", MetricDescriptorArgs.builder()\n .description(\"Daily sales records from all branch stores.\")\n .displayName(\"metric-descriptor\")\n .type(\"custom.googleapis.com/stores/daily_sales\")\n .metricKind(\"GAUGE\")\n .valueType(\"DOUBLE\")\n .unit(\"{USD}\")\n .build());\n\n var alertPolicy = new AlertPolicy(\"alertPolicy\", AlertPolicyArgs.builder()\n .displayName(\"metric-descriptor\")\n .combiner(\"OR\")\n .conditions(AlertPolicyConditionArgs.builder()\n .displayName(\"test condition\")\n .conditionThreshold(AlertPolicyConditionConditionThresholdArgs.builder()\n .filter(withAlert.type().applyValue(type -\u003e String.format(\"metric.type=\\\"%s\\\" AND resource.type=\\\"gce_instance\\\"\", type)))\n .duration(\"60s\")\n .comparison(\"COMPARISON_GT\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n withAlert:\n type: gcp:monitoring:MetricDescriptor\n name: with_alert\n properties:\n description: Daily sales records from all branch stores.\n displayName: metric-descriptor\n type: custom.googleapis.com/stores/daily_sales\n metricKind: GAUGE\n valueType: DOUBLE\n unit: '{USD}'\n alertPolicy:\n type: gcp:monitoring:AlertPolicy\n name: alert_policy\n properties:\n displayName: metric-descriptor\n combiner: OR\n conditions:\n - displayName: test condition\n conditionThreshold:\n filter: metric.type=\"${withAlert.type}\" AND resource.type=\"gce_instance\"\n duration: 60s\n comparison: COMPARISON_GT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMetricDescriptor can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, MetricDescriptor can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:monitoring/metricDescriptor:MetricDescriptor default {{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -213257,7 +213257,7 @@ } }, "gcp:monitoring/notificationChannel:NotificationChannel": { - "description": "A NotificationChannel is a medium through which an alert is delivered\nwhen a policy violation is detected. Examples of channels include email, SMS,\nand third-party messaging applications. Fields containing sensitive information\nlike authentication tokens or contact info are only partially populated on retrieval.\n\nNotification Channels are designed to be flexible and are made up of a supported `type`\nand labels to configure that channel. Each `type` has specific labels that need to be\npresent for that channel to be correctly configured. The labels that are required to be\npresent for one channel `type` are often different than those required for another.\nDue to these loose constraints it's often best to set up a channel through the UI\nand import it to the provider when setting up a brand new channel type to determine which\nlabels are required.\n\nA list of supported channels per project the `list` endpoint can be\naccessed programmatically or through the api explorer at https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.notificationChannelDescriptors/list .\nThis provides the channel type and all of the required labels that must be passed.\n\n\nTo get more information about NotificationChannel, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.notificationChannels)\n* How-to Guides\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n * [Notification Options](https://cloud.google.com/monitoring/support/notification-options)\n\n\n\n## Example Usage\n\n### Notification Channel Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.monitoring.NotificationChannel(\"basic\", {\n displayName: \"Test Notification Channel\",\n type: \"email\",\n labels: {\n email_address: \"fake_email@blahblah.com\",\n },\n forceDelete: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.monitoring.NotificationChannel(\"basic\",\n display_name=\"Test Notification Channel\",\n type=\"email\",\n labels={\n \"email_address\": \"fake_email@blahblah.com\",\n },\n force_delete=False)\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.Monitoring.NotificationChannel(\"basic\", new()\n {\n DisplayName = \"Test Notification Channel\",\n Type = \"email\",\n Labels = \n {\n { \"email_address\", \"fake_email@blahblah.com\" },\n },\n ForceDelete = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewNotificationChannel(ctx, \"basic\", \u0026monitoring.NotificationChannelArgs{\n\t\t\tDisplayName: pulumi.String(\"Test Notification Channel\"),\n\t\t\tType: pulumi.String(\"email\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"email_address\": pulumi.String(\"fake_email@blahblah.com\"),\n\t\t\t},\n\t\t\tForceDelete: pulumi.Bool(false),\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.monitoring.NotificationChannel;\nimport com.pulumi.gcp.monitoring.NotificationChannelArgs;\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 NotificationChannel(\"basic\", NotificationChannelArgs.builder()\n .displayName(\"Test Notification Channel\")\n .type(\"email\")\n .labels(Map.of(\"email_address\", \"fake_email@blahblah.com\"))\n .forceDelete(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:monitoring:NotificationChannel\n properties:\n displayName: Test Notification Channel\n type: email\n labels:\n email_address: fake_email@blahblah.com\n forceDelete: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Notification Channel Sensitive\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.monitoring.NotificationChannel(\"default\", {\n displayName: \"Test Slack Channel\",\n type: \"slack\",\n labels: {\n channel_name: \"#foobar\",\n },\n sensitiveLabels: {\n authToken: \"one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.monitoring.NotificationChannel(\"default\",\n display_name=\"Test Slack Channel\",\n type=\"slack\",\n labels={\n \"channel_name\": \"#foobar\",\n },\n sensitive_labels={\n \"authToken\": \"one\",\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 @default = new Gcp.Monitoring.NotificationChannel(\"default\", new()\n {\n DisplayName = \"Test Slack Channel\",\n Type = \"slack\",\n Labels = \n {\n { \"channel_name\", \"#foobar\" },\n },\n SensitiveLabels = new Gcp.Monitoring.Inputs.NotificationChannelSensitiveLabelsArgs\n {\n AuthToken = \"one\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewNotificationChannel(ctx, \"default\", \u0026monitoring.NotificationChannelArgs{\n\t\t\tDisplayName: pulumi.String(\"Test Slack Channel\"),\n\t\t\tType: pulumi.String(\"slack\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"channel_name\": pulumi.String(\"#foobar\"),\n\t\t\t},\n\t\t\tSensitiveLabels: \u0026monitoring.NotificationChannelSensitiveLabelsArgs{\n\t\t\t\tAuthToken: pulumi.String(\"one\"),\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.monitoring.NotificationChannel;\nimport com.pulumi.gcp.monitoring.NotificationChannelArgs;\nimport com.pulumi.gcp.monitoring.inputs.NotificationChannelSensitiveLabelsArgs;\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 NotificationChannel(\"default\", NotificationChannelArgs.builder()\n .displayName(\"Test Slack Channel\")\n .type(\"slack\")\n .labels(Map.of(\"channel_name\", \"#foobar\"))\n .sensitiveLabels(NotificationChannelSensitiveLabelsArgs.builder()\n .authToken(\"one\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:monitoring:NotificationChannel\n properties:\n displayName: Test Slack Channel\n type: slack\n labels:\n channel_name: '#foobar'\n sensitiveLabels:\n authToken: one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNotificationChannel can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, NotificationChannel can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:monitoring/notificationChannel:NotificationChannel default {{name}}\n```\n\n", + "description": "A NotificationChannel is a medium through which an alert is delivered\nwhen a policy violation is detected. Examples of channels include email, SMS,\nand third-party messaging applications. Fields containing sensitive information\nlike authentication tokens or contact info are only partially populated on retrieval.\n\nNotification Channels are designed to be flexible and are made up of a supported `type`\nand labels to configure that channel. Each `type` has specific labels that need to be\npresent for that channel to be correctly configured. The labels that are required to be\npresent for one channel `type` are often different than those required for another.\nDue to these loose constraints it's often best to set up a channel through the UI\nand import it to the provider when setting up a brand new channel type to determine which\nlabels are required.\n\nA list of supported channels per project the `list` endpoint can be\naccessed programmatically or through the api explorer at https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.notificationChannelDescriptors/list .\nThis provides the channel type and all of the required labels that must be passed.\n\n\nTo get more information about NotificationChannel, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.notificationChannels)\n* How-to Guides\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n * [Notification Options](https://cloud.google.com/monitoring/support/notification-options)\n\n\n\n## Example Usage\n\n### Notification Channel Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.monitoring.NotificationChannel(\"basic\", {\n displayName: \"Test Notification Channel\",\n type: \"email\",\n labels: {\n email_address: \"fake_email@blahblah.com\",\n },\n forceDelete: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.monitoring.NotificationChannel(\"basic\",\n display_name=\"Test Notification Channel\",\n type=\"email\",\n labels={\n \"email_address\": \"fake_email@blahblah.com\",\n },\n force_delete=False)\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.Monitoring.NotificationChannel(\"basic\", new()\n {\n DisplayName = \"Test Notification Channel\",\n Type = \"email\",\n Labels = \n {\n { \"email_address\", \"fake_email@blahblah.com\" },\n },\n ForceDelete = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewNotificationChannel(ctx, \"basic\", \u0026monitoring.NotificationChannelArgs{\n\t\t\tDisplayName: pulumi.String(\"Test Notification Channel\"),\n\t\t\tType: pulumi.String(\"email\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"email_address\": pulumi.String(\"fake_email@blahblah.com\"),\n\t\t\t},\n\t\t\tForceDelete: pulumi.Bool(false),\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.monitoring.NotificationChannel;\nimport com.pulumi.gcp.monitoring.NotificationChannelArgs;\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 NotificationChannel(\"basic\", NotificationChannelArgs.builder()\n .displayName(\"Test Notification Channel\")\n .type(\"email\")\n .labels(Map.of(\"email_address\", \"fake_email@blahblah.com\"))\n .forceDelete(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:monitoring:NotificationChannel\n properties:\n displayName: Test Notification Channel\n type: email\n labels:\n email_address: fake_email@blahblah.com\n forceDelete: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Notification Channel Sensitive\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.monitoring.NotificationChannel(\"default\", {\n displayName: \"Test Slack Channel\",\n type: \"slack\",\n labels: {\n channel_name: \"#foobar\",\n },\n sensitiveLabels: {\n authToken: \"one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.monitoring.NotificationChannel(\"default\",\n display_name=\"Test Slack Channel\",\n type=\"slack\",\n labels={\n \"channel_name\": \"#foobar\",\n },\n sensitive_labels={\n \"auth_token\": \"one\",\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 @default = new Gcp.Monitoring.NotificationChannel(\"default\", new()\n {\n DisplayName = \"Test Slack Channel\",\n Type = \"slack\",\n Labels = \n {\n { \"channel_name\", \"#foobar\" },\n },\n SensitiveLabels = new Gcp.Monitoring.Inputs.NotificationChannelSensitiveLabelsArgs\n {\n AuthToken = \"one\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewNotificationChannel(ctx, \"default\", \u0026monitoring.NotificationChannelArgs{\n\t\t\tDisplayName: pulumi.String(\"Test Slack Channel\"),\n\t\t\tType: pulumi.String(\"slack\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"channel_name\": pulumi.String(\"#foobar\"),\n\t\t\t},\n\t\t\tSensitiveLabels: \u0026monitoring.NotificationChannelSensitiveLabelsArgs{\n\t\t\t\tAuthToken: pulumi.String(\"one\"),\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.monitoring.NotificationChannel;\nimport com.pulumi.gcp.monitoring.NotificationChannelArgs;\nimport com.pulumi.gcp.monitoring.inputs.NotificationChannelSensitiveLabelsArgs;\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 NotificationChannel(\"default\", NotificationChannelArgs.builder()\n .displayName(\"Test Slack Channel\")\n .type(\"slack\")\n .labels(Map.of(\"channel_name\", \"#foobar\"))\n .sensitiveLabels(NotificationChannelSensitiveLabelsArgs.builder()\n .authToken(\"one\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:monitoring:NotificationChannel\n properties:\n displayName: Test Slack Channel\n type: slack\n labels:\n channel_name: '#foobar'\n sensitiveLabels:\n authToken: one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNotificationChannel can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, NotificationChannel can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:monitoring/notificationChannel:NotificationChannel default {{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -213423,7 +213423,7 @@ } }, "gcp:monitoring/slo:Slo": { - "description": "A Service-Level Objective (SLO) describes the level of desired good\nservice. It consists of a service-level indicator (SLI), a performance\ngoal, and a period over which the objective is to be evaluated against\nthat goal. The SLO can use SLIs defined in a number of different manners.\nTypical SLOs might include \"99% of requests in each rolling week have\nlatency below 200 milliseconds\" or \"99.5% of requests in each calendar\nmonth return successfully.\"\n\n\nTo get more information about Slo, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services.serviceLevelObjectives)\n* How-to Guides\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n\n## Example Usage\n\n### Monitoring Slo Appengine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.monitoring.getAppEngineService({\n moduleId: \"default\",\n});\nconst appengSlo = new gcp.monitoring.Slo(\"appeng_slo\", {\n service: _default.then(_default =\u003e _default.serviceId),\n sloId: \"ae-slo\",\n displayName: \"Test SLO for App Engine\",\n goal: 0.9,\n calendarPeriod: \"DAY\",\n basicSli: {\n latency: {\n threshold: \"1s\",\n },\n },\n userLabels: {\n my_key: \"my_value\",\n my_other_key: \"my_other_value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.monitoring.get_app_engine_service(module_id=\"default\")\nappeng_slo = gcp.monitoring.Slo(\"appeng_slo\",\n service=default.service_id,\n slo_id=\"ae-slo\",\n display_name=\"Test SLO for App Engine\",\n goal=0.9,\n calendar_period=\"DAY\",\n basic_sli={\n \"latency\": {\n \"threshold\": \"1s\",\n },\n },\n user_labels={\n \"my_key\": \"my_value\",\n \"my_other_key\": \"my_other_value\",\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 @default = Gcp.Monitoring.GetAppEngineService.Invoke(new()\n {\n ModuleId = \"default\",\n });\n\n var appengSlo = new Gcp.Monitoring.Slo(\"appeng_slo\", new()\n {\n Service = @default.Apply(@default =\u003e @default.Apply(getAppEngineServiceResult =\u003e getAppEngineServiceResult.ServiceId)),\n SloId = \"ae-slo\",\n DisplayName = \"Test SLO for App Engine\",\n Goal = 0.9,\n CalendarPeriod = \"DAY\",\n BasicSli = new Gcp.Monitoring.Inputs.SloBasicSliArgs\n {\n Latency = new Gcp.Monitoring.Inputs.SloBasicSliLatencyArgs\n {\n Threshold = \"1s\",\n },\n },\n UserLabels = \n {\n { \"my_key\", \"my_value\" },\n { \"my_other_key\", \"my_other_value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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_default, err := monitoring.GetAppEngineService(ctx, \u0026monitoring.GetAppEngineServiceArgs{\n\t\t\tModuleId: \"default\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"appeng_slo\", \u0026monitoring.SloArgs{\n\t\t\tService: pulumi.String(_default.ServiceId),\n\t\t\tSloId: pulumi.String(\"ae-slo\"),\n\t\t\tDisplayName: pulumi.String(\"Test SLO for App Engine\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tCalendarPeriod: pulumi.String(\"DAY\"),\n\t\t\tBasicSli: \u0026monitoring.SloBasicSliArgs{\n\t\t\t\tLatency: \u0026monitoring.SloBasicSliLatencyArgs{\n\t\t\t\t\tThreshold: pulumi.String(\"1s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tUserLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_value\"),\n\t\t\t\t\"my_other_key\": pulumi.String(\"my_other_value\"),\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.monitoring.MonitoringFunctions;\nimport com.pulumi.gcp.monitoring.inputs.GetAppEngineServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloBasicSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloBasicSliLatencyArgs;\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 default = MonitoringFunctions.getAppEngineService(GetAppEngineServiceArgs.builder()\n .moduleId(\"default\")\n .build());\n\n var appengSlo = new Slo(\"appengSlo\", SloArgs.builder()\n .service(default_.serviceId())\n .sloId(\"ae-slo\")\n .displayName(\"Test SLO for App Engine\")\n .goal(0.9)\n .calendarPeriod(\"DAY\")\n .basicSli(SloBasicSliArgs.builder()\n .latency(SloBasicSliLatencyArgs.builder()\n .threshold(\"1s\")\n .build())\n .build())\n .userLabels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_value\"),\n Map.entry(\"my_other_key\", \"my_other_value\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n appengSlo:\n type: gcp:monitoring:Slo\n name: appeng_slo\n properties:\n service: ${default.serviceId}\n sloId: ae-slo\n displayName: Test SLO for App Engine\n goal: 0.9\n calendarPeriod: DAY\n basicSli:\n latency:\n threshold: 1s\n userLabels:\n my_key: my_value\n my_other_key: my_other_value\nvariables:\n default:\n fn::invoke:\n Function: gcp:monitoring:getAppEngineService\n Arguments:\n moduleId: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Request Based\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-request-slos\",\n displayName: \"My Custom Service\",\n});\nconst requestBasedSlo = new gcp.monitoring.Slo(\"request_based_slo\", {\n service: customsrv.serviceId,\n sloId: \"consumed-api-slo\",\n displayName: \"Test SLO with request based SLI (good total ratio)\",\n goal: 0.9,\n rollingPeriodDays: 30,\n requestBasedSli: {\n distributionCut: {\n distributionFilter: \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \",\n range: {\n max: 0.5,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-request-slos\",\n display_name=\"My Custom Service\")\nrequest_based_slo = gcp.monitoring.Slo(\"request_based_slo\",\n service=customsrv.service_id,\n slo_id=\"consumed-api-slo\",\n display_name=\"Test SLO with request based SLI (good total ratio)\",\n goal=0.9,\n rolling_period_days=30,\n request_based_sli={\n \"distributionCut\": {\n \"distributionFilter\": \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \",\n \"range\": {\n \"max\": 0.5,\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 customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-request-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var requestBasedSlo = new Gcp.Monitoring.Slo(\"request_based_slo\", new()\n {\n Service = customsrv.ServiceId,\n SloId = \"consumed-api-slo\",\n DisplayName = \"Test SLO with request based SLI (good total ratio)\",\n Goal = 0.9,\n RollingPeriodDays = 30,\n RequestBasedSli = new Gcp.Monitoring.Inputs.SloRequestBasedSliArgs\n {\n DistributionCut = new Gcp.Monitoring.Inputs.SloRequestBasedSliDistributionCutArgs\n {\n DistributionFilter = \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \",\n Range = new Gcp.Monitoring.Inputs.SloRequestBasedSliDistributionCutRangeArgs\n {\n Max = 0.5,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-request-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"request_based_slo\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tSloId: pulumi.String(\"consumed-api-slo\"),\n\t\t\tDisplayName: pulumi.String(\"Test SLO with request based SLI (good total ratio)\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tRollingPeriodDays: pulumi.Int(30),\n\t\t\tRequestBasedSli: \u0026monitoring.SloRequestBasedSliArgs{\n\t\t\t\tDistributionCut: \u0026monitoring.SloRequestBasedSliDistributionCutArgs{\n\t\t\t\t\tDistributionFilter: pulumi.String(\"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \"),\n\t\t\t\t\tRange: \u0026monitoring.SloRequestBasedSliDistributionCutRangeArgs{\n\t\t\t\t\t\tMax: pulumi.Float64(0.5),\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.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloRequestBasedSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloRequestBasedSliDistributionCutArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloRequestBasedSliDistributionCutRangeArgs;\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 customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-request-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var requestBasedSlo = new Slo(\"requestBasedSlo\", SloArgs.builder()\n .service(customsrv.serviceId())\n .sloId(\"consumed-api-slo\")\n .displayName(\"Test SLO with request based SLI (good total ratio)\")\n .goal(0.9)\n .rollingPeriodDays(30)\n .requestBasedSli(SloRequestBasedSliArgs.builder()\n .distributionCut(SloRequestBasedSliDistributionCutArgs.builder()\n .distributionFilter(\"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \")\n .range(SloRequestBasedSliDistributionCutRangeArgs.builder()\n .max(0.5)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-request-slos\n displayName: My Custom Service\n requestBasedSlo:\n type: gcp:monitoring:Slo\n name: request_based_slo\n properties:\n service: ${customsrv.serviceId}\n sloId: consumed-api-slo\n displayName: Test SLO with request based SLI (good total ratio)\n goal: 0.9\n rollingPeriodDays: 30\n requestBasedSli:\n distributionCut:\n distributionFilter: 'metric.type=\"serviceruntime.googleapis.com/api/request_latencies\" resource.type=\"api\" '\n range:\n max: 0.5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Windows Based Good Bad Metric Filter\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-windows-slos\",\n displayName: \"My Custom Service\",\n});\nconst windowsBased = new gcp.monitoring.Slo(\"windows_based\", {\n service: customsrv.serviceId,\n displayName: \"Test SLO with window based SLI\",\n goal: 0.95,\n calendarPeriod: \"FORTNIGHT\",\n windowsBasedSli: {\n windowPeriod: \"400s\",\n goodBadMetricFilter: std.join({\n separator: \" AND \",\n input: [\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n ],\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-windows-slos\",\n display_name=\"My Custom Service\")\nwindows_based = gcp.monitoring.Slo(\"windows_based\",\n service=customsrv.service_id,\n display_name=\"Test SLO with window based SLI\",\n goal=0.95,\n calendar_period=\"FORTNIGHT\",\n windows_based_sli={\n \"windowPeriod\": \"400s\",\n \"goodBadMetricFilter\": std.join(separator=\" AND \",\n input=[\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n ]).result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-windows-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var windowsBased = new Gcp.Monitoring.Slo(\"windows_based\", new()\n {\n Service = customsrv.ServiceId,\n DisplayName = \"Test SLO with window based SLI\",\n Goal = 0.95,\n CalendarPeriod = \"FORTNIGHT\",\n WindowsBasedSli = new Gcp.Monitoring.Inputs.SloWindowsBasedSliArgs\n {\n WindowPeriod = \"400s\",\n GoodBadMetricFilter = Std.Join.Invoke(new()\n {\n Separator = \" AND \",\n Input = new[]\n {\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n },\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-windows-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \" AND \",\n\t\t\tInput: []string{\n\t\t\t\t\"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n\t\t\t\t\"resource.type=\\\"uptime_url\\\"\",\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 = monitoring.NewSlo(ctx, \"windows_based\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tDisplayName: pulumi.String(\"Test SLO with window based SLI\"),\n\t\t\tGoal: pulumi.Float64(0.95),\n\t\t\tCalendarPeriod: pulumi.String(\"FORTNIGHT\"),\n\t\t\tWindowsBasedSli: \u0026monitoring.SloWindowsBasedSliArgs{\n\t\t\t\tWindowPeriod: pulumi.String(\"400s\"),\n\t\t\t\tGoodBadMetricFilter: invokeJoin.Result,\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.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliArgs;\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 customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-windows-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var windowsBased = new Slo(\"windowsBased\", SloArgs.builder()\n .service(customsrv.serviceId())\n .displayName(\"Test SLO with window based SLI\")\n .goal(0.95)\n .calendarPeriod(\"FORTNIGHT\")\n .windowsBasedSli(SloWindowsBasedSliArgs.builder()\n .windowPeriod(\"400s\")\n .goodBadMetricFilter(StdFunctions.join(JoinArgs.builder()\n .separator(\" AND \")\n .input( \n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n \"resource.type=\\\"uptime_url\\\"\")\n .build()).result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-windows-slos\n displayName: My Custom Service\n windowsBased:\n type: gcp:monitoring:Slo\n name: windows_based\n properties:\n service: ${customsrv.serviceId}\n displayName: Test SLO with window based SLI\n goal: 0.95\n calendarPeriod: FORTNIGHT\n windowsBasedSli:\n windowPeriod: 400s\n goodBadMetricFilter:\n fn::invoke:\n Function: std:join\n Arguments:\n separator: ' AND '\n input:\n - metric.type=\"monitoring.googleapis.com/uptime_check/check_passed\"\n - resource.type=\"uptime_url\"\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Windows Based Metric Mean\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-windows-slos\",\n displayName: \"My Custom Service\",\n});\nconst windowsBased = new gcp.monitoring.Slo(\"windows_based\", {\n service: customsrv.serviceId,\n displayName: \"Test SLO with window based SLI\",\n goal: 0.9,\n rollingPeriodDays: 20,\n windowsBasedSli: {\n windowPeriod: \"600s\",\n metricMeanInRange: {\n timeSeries: std.join({\n separator: \" AND \",\n input: [\n \"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n \"resource.type=\\\"gce_instance\\\"\",\n ],\n }).then(invoke =\u003e invoke.result),\n range: {\n max: 5,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-windows-slos\",\n display_name=\"My Custom Service\")\nwindows_based = gcp.monitoring.Slo(\"windows_based\",\n service=customsrv.service_id,\n display_name=\"Test SLO with window based SLI\",\n goal=0.9,\n rolling_period_days=20,\n windows_based_sli={\n \"windowPeriod\": \"600s\",\n \"metricMeanInRange\": {\n \"timeSeries\": std.join(separator=\" AND \",\n input=[\n \"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n \"resource.type=\\\"gce_instance\\\"\",\n ]).result,\n \"range\": {\n \"max\": 5,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-windows-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var windowsBased = new Gcp.Monitoring.Slo(\"windows_based\", new()\n {\n Service = customsrv.ServiceId,\n DisplayName = \"Test SLO with window based SLI\",\n Goal = 0.9,\n RollingPeriodDays = 20,\n WindowsBasedSli = new Gcp.Monitoring.Inputs.SloWindowsBasedSliArgs\n {\n WindowPeriod = \"600s\",\n MetricMeanInRange = new Gcp.Monitoring.Inputs.SloWindowsBasedSliMetricMeanInRangeArgs\n {\n TimeSeries = Std.Join.Invoke(new()\n {\n Separator = \" AND \",\n Input = new[]\n {\n \"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n \"resource.type=\\\"gce_instance\\\"\",\n },\n }).Apply(invoke =\u003e invoke.Result),\n Range = new Gcp.Monitoring.Inputs.SloWindowsBasedSliMetricMeanInRangeRangeArgs\n {\n Max = 5,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-windows-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \" AND \",\n\t\t\tInput: []string{\n\t\t\t\t\"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n\t\t\t\t\"resource.type=\\\"gce_instance\\\"\",\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 = monitoring.NewSlo(ctx, \"windows_based\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tDisplayName: pulumi.String(\"Test SLO with window based SLI\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tRollingPeriodDays: pulumi.Int(20),\n\t\t\tWindowsBasedSli: \u0026monitoring.SloWindowsBasedSliArgs{\n\t\t\t\tWindowPeriod: pulumi.String(\"600s\"),\n\t\t\t\tMetricMeanInRange: \u0026monitoring.SloWindowsBasedSliMetricMeanInRangeArgs{\n\t\t\t\t\tTimeSeries: invokeJoin.Result,\n\t\t\t\t\tRange: \u0026monitoring.SloWindowsBasedSliMetricMeanInRangeRangeArgs{\n\t\t\t\t\t\tMax: pulumi.Float64(5),\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.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliMetricMeanInRangeArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliMetricMeanInRangeRangeArgs;\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 customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-windows-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var windowsBased = new Slo(\"windowsBased\", SloArgs.builder()\n .service(customsrv.serviceId())\n .displayName(\"Test SLO with window based SLI\")\n .goal(0.9)\n .rollingPeriodDays(20)\n .windowsBasedSli(SloWindowsBasedSliArgs.builder()\n .windowPeriod(\"600s\")\n .metricMeanInRange(SloWindowsBasedSliMetricMeanInRangeArgs.builder()\n .timeSeries(StdFunctions.join(JoinArgs.builder()\n .separator(\" AND \")\n .input( \n \"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n \"resource.type=\\\"gce_instance\\\"\")\n .build()).result())\n .range(SloWindowsBasedSliMetricMeanInRangeRangeArgs.builder()\n .max(5)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-windows-slos\n displayName: My Custom Service\n windowsBased:\n type: gcp:monitoring:Slo\n name: windows_based\n properties:\n service: ${customsrv.serviceId}\n displayName: Test SLO with window based SLI\n goal: 0.9\n rollingPeriodDays: 20\n windowsBasedSli:\n windowPeriod: 600s\n metricMeanInRange:\n timeSeries:\n fn::invoke:\n Function: std:join\n Arguments:\n separator: ' AND '\n input:\n - metric.type=\"agent.googleapis.com/cassandra/client_request/latency/95p\"\n - resource.type=\"gce_instance\"\n Return: result\n range:\n max: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Windows Based Metric Sum\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-windows-slos\",\n displayName: \"My Custom Service\",\n});\nconst windowsBased = new gcp.monitoring.Slo(\"windows_based\", {\n service: customsrv.serviceId,\n displayName: \"Test SLO with window based SLI\",\n goal: 0.9,\n rollingPeriodDays: 20,\n windowsBasedSli: {\n windowPeriod: \"400s\",\n metricSumInRange: {\n timeSeries: std.join({\n separator: \" AND \",\n input: [\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n ],\n }).then(invoke =\u003e invoke.result),\n range: {\n max: 5000,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-windows-slos\",\n display_name=\"My Custom Service\")\nwindows_based = gcp.monitoring.Slo(\"windows_based\",\n service=customsrv.service_id,\n display_name=\"Test SLO with window based SLI\",\n goal=0.9,\n rolling_period_days=20,\n windows_based_sli={\n \"windowPeriod\": \"400s\",\n \"metricSumInRange\": {\n \"timeSeries\": std.join(separator=\" AND \",\n input=[\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n ]).result,\n \"range\": {\n \"max\": 5000,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-windows-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var windowsBased = new Gcp.Monitoring.Slo(\"windows_based\", new()\n {\n Service = customsrv.ServiceId,\n DisplayName = \"Test SLO with window based SLI\",\n Goal = 0.9,\n RollingPeriodDays = 20,\n WindowsBasedSli = new Gcp.Monitoring.Inputs.SloWindowsBasedSliArgs\n {\n WindowPeriod = \"400s\",\n MetricSumInRange = new Gcp.Monitoring.Inputs.SloWindowsBasedSliMetricSumInRangeArgs\n {\n TimeSeries = Std.Join.Invoke(new()\n {\n Separator = \" AND \",\n Input = new[]\n {\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n },\n }).Apply(invoke =\u003e invoke.Result),\n Range = new Gcp.Monitoring.Inputs.SloWindowsBasedSliMetricSumInRangeRangeArgs\n {\n Max = 5000,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-windows-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \" AND \",\n\t\t\tInput: []string{\n\t\t\t\t\"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n\t\t\t\t\"resource.type=\\\"uptime_url\\\"\",\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 = monitoring.NewSlo(ctx, \"windows_based\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tDisplayName: pulumi.String(\"Test SLO with window based SLI\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tRollingPeriodDays: pulumi.Int(20),\n\t\t\tWindowsBasedSli: \u0026monitoring.SloWindowsBasedSliArgs{\n\t\t\t\tWindowPeriod: pulumi.String(\"400s\"),\n\t\t\t\tMetricSumInRange: \u0026monitoring.SloWindowsBasedSliMetricSumInRangeArgs{\n\t\t\t\t\tTimeSeries: invokeJoin.Result,\n\t\t\t\t\tRange: \u0026monitoring.SloWindowsBasedSliMetricSumInRangeRangeArgs{\n\t\t\t\t\t\tMax: pulumi.Float64(5000),\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.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliMetricSumInRangeArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliMetricSumInRangeRangeArgs;\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 customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-windows-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var windowsBased = new Slo(\"windowsBased\", SloArgs.builder()\n .service(customsrv.serviceId())\n .displayName(\"Test SLO with window based SLI\")\n .goal(0.9)\n .rollingPeriodDays(20)\n .windowsBasedSli(SloWindowsBasedSliArgs.builder()\n .windowPeriod(\"400s\")\n .metricSumInRange(SloWindowsBasedSliMetricSumInRangeArgs.builder()\n .timeSeries(StdFunctions.join(JoinArgs.builder()\n .separator(\" AND \")\n .input( \n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n \"resource.type=\\\"uptime_url\\\"\")\n .build()).result())\n .range(SloWindowsBasedSliMetricSumInRangeRangeArgs.builder()\n .max(5000)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-windows-slos\n displayName: My Custom Service\n windowsBased:\n type: gcp:monitoring:Slo\n name: windows_based\n properties:\n service: ${customsrv.serviceId}\n displayName: Test SLO with window based SLI\n goal: 0.9\n rollingPeriodDays: 20\n windowsBasedSli:\n windowPeriod: 400s\n metricSumInRange:\n timeSeries:\n fn::invoke:\n Function: std:join\n Arguments:\n separator: ' AND '\n input:\n - metric.type=\"monitoring.googleapis.com/uptime_check/request_latency\"\n - resource.type=\"uptime_url\"\n Return: result\n range:\n max: 5000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Windows Based Ratio Threshold\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-windows-slos\",\n displayName: \"My Custom Service\",\n});\nconst windowsBased = new gcp.monitoring.Slo(\"windows_based\", {\n service: customsrv.serviceId,\n displayName: \"Test SLO with window based SLI\",\n goal: 0.9,\n rollingPeriodDays: 20,\n windowsBasedSli: {\n windowPeriod: \"100s\",\n goodTotalRatioThreshold: {\n threshold: 0.1,\n performance: {\n distributionCut: {\n distributionFilter: std.join({\n separator: \" AND \",\n input: [\n \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n \"resource.type=\\\"consumed_api\\\"\",\n ],\n }).then(invoke =\u003e invoke.result),\n range: {\n min: 1,\n max: 9,\n },\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-windows-slos\",\n display_name=\"My Custom Service\")\nwindows_based = gcp.monitoring.Slo(\"windows_based\",\n service=customsrv.service_id,\n display_name=\"Test SLO with window based SLI\",\n goal=0.9,\n rolling_period_days=20,\n windows_based_sli={\n \"windowPeriod\": \"100s\",\n \"goodTotalRatioThreshold\": {\n \"threshold\": 0.1,\n \"performance\": {\n \"distributionCut\": {\n \"distributionFilter\": std.join(separator=\" AND \",\n input=[\n \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n \"resource.type=\\\"consumed_api\\\"\",\n ]).result,\n \"range\": {\n \"min\": 1,\n \"max\": 9,\n },\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-windows-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var windowsBased = new Gcp.Monitoring.Slo(\"windows_based\", new()\n {\n Service = customsrv.ServiceId,\n DisplayName = \"Test SLO with window based SLI\",\n Goal = 0.9,\n RollingPeriodDays = 20,\n WindowsBasedSli = new Gcp.Monitoring.Inputs.SloWindowsBasedSliArgs\n {\n WindowPeriod = \"100s\",\n GoodTotalRatioThreshold = new Gcp.Monitoring.Inputs.SloWindowsBasedSliGoodTotalRatioThresholdArgs\n {\n Threshold = 0.1,\n Performance = new Gcp.Monitoring.Inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceArgs\n {\n DistributionCut = new Gcp.Monitoring.Inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutArgs\n {\n DistributionFilter = Std.Join.Invoke(new()\n {\n Separator = \" AND \",\n Input = new[]\n {\n \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n \"resource.type=\\\"consumed_api\\\"\",\n },\n }).Apply(invoke =\u003e invoke.Result),\n Range = new Gcp.Monitoring.Inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutRangeArgs\n {\n Min = 1,\n Max = 9,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-windows-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \" AND \",\n\t\t\tInput: []string{\n\t\t\t\t\"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n\t\t\t\t\"resource.type=\\\"consumed_api\\\"\",\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 = monitoring.NewSlo(ctx, \"windows_based\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tDisplayName: pulumi.String(\"Test SLO with window based SLI\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tRollingPeriodDays: pulumi.Int(20),\n\t\t\tWindowsBasedSli: \u0026monitoring.SloWindowsBasedSliArgs{\n\t\t\t\tWindowPeriod: pulumi.String(\"100s\"),\n\t\t\t\tGoodTotalRatioThreshold: \u0026monitoring.SloWindowsBasedSliGoodTotalRatioThresholdArgs{\n\t\t\t\t\tThreshold: pulumi.Float64(0.1),\n\t\t\t\t\tPerformance: \u0026monitoring.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceArgs{\n\t\t\t\t\t\tDistributionCut: \u0026monitoring.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutArgs{\n\t\t\t\t\t\t\tDistributionFilter: invokeJoin.Result,\n\t\t\t\t\t\t\tRange: \u0026monitoring.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutRangeArgs{\n\t\t\t\t\t\t\t\tMin: pulumi.Float64(1),\n\t\t\t\t\t\t\t\tMax: pulumi.Float64(9),\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.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliGoodTotalRatioThresholdArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutRangeArgs;\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 customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-windows-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var windowsBased = new Slo(\"windowsBased\", SloArgs.builder()\n .service(customsrv.serviceId())\n .displayName(\"Test SLO with window based SLI\")\n .goal(0.9)\n .rollingPeriodDays(20)\n .windowsBasedSli(SloWindowsBasedSliArgs.builder()\n .windowPeriod(\"100s\")\n .goodTotalRatioThreshold(SloWindowsBasedSliGoodTotalRatioThresholdArgs.builder()\n .threshold(0.1)\n .performance(SloWindowsBasedSliGoodTotalRatioThresholdPerformanceArgs.builder()\n .distributionCut(SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutArgs.builder()\n .distributionFilter(StdFunctions.join(JoinArgs.builder()\n .separator(\" AND \")\n .input( \n \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n \"resource.type=\\\"consumed_api\\\"\")\n .build()).result())\n .range(SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutRangeArgs.builder()\n .min(1)\n .max(9)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-windows-slos\n displayName: My Custom Service\n windowsBased:\n type: gcp:monitoring:Slo\n name: windows_based\n properties:\n service: ${customsrv.serviceId}\n displayName: Test SLO with window based SLI\n goal: 0.9\n rollingPeriodDays: 20\n windowsBasedSli:\n windowPeriod: 100s\n goodTotalRatioThreshold:\n threshold: 0.1\n performance:\n distributionCut:\n distributionFilter:\n fn::invoke:\n Function: std:join\n Arguments:\n separator: ' AND '\n input:\n - metric.type=\"serviceruntime.googleapis.com/api/request_latencies\"\n - resource.type=\"consumed_api\"\n Return: result\n range:\n min: 1\n max: 9\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSlo can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Slo can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:monitoring/slo:Slo default {{name}}\n```\n\n", + "description": "A Service-Level Objective (SLO) describes the level of desired good\nservice. It consists of a service-level indicator (SLI), a performance\ngoal, and a period over which the objective is to be evaluated against\nthat goal. The SLO can use SLIs defined in a number of different manners.\nTypical SLOs might include \"99% of requests in each rolling week have\nlatency below 200 milliseconds\" or \"99.5% of requests in each calendar\nmonth return successfully.\"\n\n\nTo get more information about Slo, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services.serviceLevelObjectives)\n* How-to Guides\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n\n## Example Usage\n\n### Monitoring Slo Appengine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.monitoring.getAppEngineService({\n moduleId: \"default\",\n});\nconst appengSlo = new gcp.monitoring.Slo(\"appeng_slo\", {\n service: _default.then(_default =\u003e _default.serviceId),\n sloId: \"ae-slo\",\n displayName: \"Test SLO for App Engine\",\n goal: 0.9,\n calendarPeriod: \"DAY\",\n basicSli: {\n latency: {\n threshold: \"1s\",\n },\n },\n userLabels: {\n my_key: \"my_value\",\n my_other_key: \"my_other_value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.monitoring.get_app_engine_service(module_id=\"default\")\nappeng_slo = gcp.monitoring.Slo(\"appeng_slo\",\n service=default.service_id,\n slo_id=\"ae-slo\",\n display_name=\"Test SLO for App Engine\",\n goal=0.9,\n calendar_period=\"DAY\",\n basic_sli={\n \"latency\": {\n \"threshold\": \"1s\",\n },\n },\n user_labels={\n \"my_key\": \"my_value\",\n \"my_other_key\": \"my_other_value\",\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 @default = Gcp.Monitoring.GetAppEngineService.Invoke(new()\n {\n ModuleId = \"default\",\n });\n\n var appengSlo = new Gcp.Monitoring.Slo(\"appeng_slo\", new()\n {\n Service = @default.Apply(@default =\u003e @default.Apply(getAppEngineServiceResult =\u003e getAppEngineServiceResult.ServiceId)),\n SloId = \"ae-slo\",\n DisplayName = \"Test SLO for App Engine\",\n Goal = 0.9,\n CalendarPeriod = \"DAY\",\n BasicSli = new Gcp.Monitoring.Inputs.SloBasicSliArgs\n {\n Latency = new Gcp.Monitoring.Inputs.SloBasicSliLatencyArgs\n {\n Threshold = \"1s\",\n },\n },\n UserLabels = \n {\n { \"my_key\", \"my_value\" },\n { \"my_other_key\", \"my_other_value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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_default, err := monitoring.GetAppEngineService(ctx, \u0026monitoring.GetAppEngineServiceArgs{\n\t\t\tModuleId: \"default\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"appeng_slo\", \u0026monitoring.SloArgs{\n\t\t\tService: pulumi.String(_default.ServiceId),\n\t\t\tSloId: pulumi.String(\"ae-slo\"),\n\t\t\tDisplayName: pulumi.String(\"Test SLO for App Engine\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tCalendarPeriod: pulumi.String(\"DAY\"),\n\t\t\tBasicSli: \u0026monitoring.SloBasicSliArgs{\n\t\t\t\tLatency: \u0026monitoring.SloBasicSliLatencyArgs{\n\t\t\t\t\tThreshold: pulumi.String(\"1s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tUserLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_value\"),\n\t\t\t\t\"my_other_key\": pulumi.String(\"my_other_value\"),\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.monitoring.MonitoringFunctions;\nimport com.pulumi.gcp.monitoring.inputs.GetAppEngineServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloBasicSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloBasicSliLatencyArgs;\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 default = MonitoringFunctions.getAppEngineService(GetAppEngineServiceArgs.builder()\n .moduleId(\"default\")\n .build());\n\n var appengSlo = new Slo(\"appengSlo\", SloArgs.builder()\n .service(default_.serviceId())\n .sloId(\"ae-slo\")\n .displayName(\"Test SLO for App Engine\")\n .goal(0.9)\n .calendarPeriod(\"DAY\")\n .basicSli(SloBasicSliArgs.builder()\n .latency(SloBasicSliLatencyArgs.builder()\n .threshold(\"1s\")\n .build())\n .build())\n .userLabels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_value\"),\n Map.entry(\"my_other_key\", \"my_other_value\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n appengSlo:\n type: gcp:monitoring:Slo\n name: appeng_slo\n properties:\n service: ${default.serviceId}\n sloId: ae-slo\n displayName: Test SLO for App Engine\n goal: 0.9\n calendarPeriod: DAY\n basicSli:\n latency:\n threshold: 1s\n userLabels:\n my_key: my_value\n my_other_key: my_other_value\nvariables:\n default:\n fn::invoke:\n Function: gcp:monitoring:getAppEngineService\n Arguments:\n moduleId: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Request Based\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-request-slos\",\n displayName: \"My Custom Service\",\n});\nconst requestBasedSlo = new gcp.monitoring.Slo(\"request_based_slo\", {\n service: customsrv.serviceId,\n sloId: \"consumed-api-slo\",\n displayName: \"Test SLO with request based SLI (good total ratio)\",\n goal: 0.9,\n rollingPeriodDays: 30,\n requestBasedSli: {\n distributionCut: {\n distributionFilter: \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \",\n range: {\n max: 0.5,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-request-slos\",\n display_name=\"My Custom Service\")\nrequest_based_slo = gcp.monitoring.Slo(\"request_based_slo\",\n service=customsrv.service_id,\n slo_id=\"consumed-api-slo\",\n display_name=\"Test SLO with request based SLI (good total ratio)\",\n goal=0.9,\n rolling_period_days=30,\n request_based_sli={\n \"distribution_cut\": {\n \"distribution_filter\": \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \",\n \"range\": {\n \"max\": 0.5,\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 customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-request-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var requestBasedSlo = new Gcp.Monitoring.Slo(\"request_based_slo\", new()\n {\n Service = customsrv.ServiceId,\n SloId = \"consumed-api-slo\",\n DisplayName = \"Test SLO with request based SLI (good total ratio)\",\n Goal = 0.9,\n RollingPeriodDays = 30,\n RequestBasedSli = new Gcp.Monitoring.Inputs.SloRequestBasedSliArgs\n {\n DistributionCut = new Gcp.Monitoring.Inputs.SloRequestBasedSliDistributionCutArgs\n {\n DistributionFilter = \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \",\n Range = new Gcp.Monitoring.Inputs.SloRequestBasedSliDistributionCutRangeArgs\n {\n Max = 0.5,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-request-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"request_based_slo\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tSloId: pulumi.String(\"consumed-api-slo\"),\n\t\t\tDisplayName: pulumi.String(\"Test SLO with request based SLI (good total ratio)\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tRollingPeriodDays: pulumi.Int(30),\n\t\t\tRequestBasedSli: \u0026monitoring.SloRequestBasedSliArgs{\n\t\t\t\tDistributionCut: \u0026monitoring.SloRequestBasedSliDistributionCutArgs{\n\t\t\t\t\tDistributionFilter: pulumi.String(\"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \"),\n\t\t\t\t\tRange: \u0026monitoring.SloRequestBasedSliDistributionCutRangeArgs{\n\t\t\t\t\t\tMax: pulumi.Float64(0.5),\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.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloRequestBasedSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloRequestBasedSliDistributionCutArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloRequestBasedSliDistributionCutRangeArgs;\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 customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-request-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var requestBasedSlo = new Slo(\"requestBasedSlo\", SloArgs.builder()\n .service(customsrv.serviceId())\n .sloId(\"consumed-api-slo\")\n .displayName(\"Test SLO with request based SLI (good total ratio)\")\n .goal(0.9)\n .rollingPeriodDays(30)\n .requestBasedSli(SloRequestBasedSliArgs.builder()\n .distributionCut(SloRequestBasedSliDistributionCutArgs.builder()\n .distributionFilter(\"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \")\n .range(SloRequestBasedSliDistributionCutRangeArgs.builder()\n .max(0.5)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-request-slos\n displayName: My Custom Service\n requestBasedSlo:\n type: gcp:monitoring:Slo\n name: request_based_slo\n properties:\n service: ${customsrv.serviceId}\n sloId: consumed-api-slo\n displayName: Test SLO with request based SLI (good total ratio)\n goal: 0.9\n rollingPeriodDays: 30\n requestBasedSli:\n distributionCut:\n distributionFilter: 'metric.type=\"serviceruntime.googleapis.com/api/request_latencies\" resource.type=\"api\" '\n range:\n max: 0.5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Windows Based Good Bad Metric Filter\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-windows-slos\",\n displayName: \"My Custom Service\",\n});\nconst windowsBased = new gcp.monitoring.Slo(\"windows_based\", {\n service: customsrv.serviceId,\n displayName: \"Test SLO with window based SLI\",\n goal: 0.95,\n calendarPeriod: \"FORTNIGHT\",\n windowsBasedSli: {\n windowPeriod: \"400s\",\n goodBadMetricFilter: std.join({\n separator: \" AND \",\n input: [\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n ],\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-windows-slos\",\n display_name=\"My Custom Service\")\nwindows_based = gcp.monitoring.Slo(\"windows_based\",\n service=customsrv.service_id,\n display_name=\"Test SLO with window based SLI\",\n goal=0.95,\n calendar_period=\"FORTNIGHT\",\n windows_based_sli={\n \"window_period\": \"400s\",\n \"good_bad_metric_filter\": std.join(separator=\" AND \",\n input=[\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n ]).result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-windows-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var windowsBased = new Gcp.Monitoring.Slo(\"windows_based\", new()\n {\n Service = customsrv.ServiceId,\n DisplayName = \"Test SLO with window based SLI\",\n Goal = 0.95,\n CalendarPeriod = \"FORTNIGHT\",\n WindowsBasedSli = new Gcp.Monitoring.Inputs.SloWindowsBasedSliArgs\n {\n WindowPeriod = \"400s\",\n GoodBadMetricFilter = Std.Join.Invoke(new()\n {\n Separator = \" AND \",\n Input = new[]\n {\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n },\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-windows-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \" AND \",\n\t\t\tInput: []string{\n\t\t\t\t\"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n\t\t\t\t\"resource.type=\\\"uptime_url\\\"\",\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 = monitoring.NewSlo(ctx, \"windows_based\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tDisplayName: pulumi.String(\"Test SLO with window based SLI\"),\n\t\t\tGoal: pulumi.Float64(0.95),\n\t\t\tCalendarPeriod: pulumi.String(\"FORTNIGHT\"),\n\t\t\tWindowsBasedSli: \u0026monitoring.SloWindowsBasedSliArgs{\n\t\t\t\tWindowPeriod: pulumi.String(\"400s\"),\n\t\t\t\tGoodBadMetricFilter: pulumi.String(invokeJoin.Result),\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.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliArgs;\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 customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-windows-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var windowsBased = new Slo(\"windowsBased\", SloArgs.builder()\n .service(customsrv.serviceId())\n .displayName(\"Test SLO with window based SLI\")\n .goal(0.95)\n .calendarPeriod(\"FORTNIGHT\")\n .windowsBasedSli(SloWindowsBasedSliArgs.builder()\n .windowPeriod(\"400s\")\n .goodBadMetricFilter(StdFunctions.join(JoinArgs.builder()\n .separator(\" AND \")\n .input( \n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n \"resource.type=\\\"uptime_url\\\"\")\n .build()).result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-windows-slos\n displayName: My Custom Service\n windowsBased:\n type: gcp:monitoring:Slo\n name: windows_based\n properties:\n service: ${customsrv.serviceId}\n displayName: Test SLO with window based SLI\n goal: 0.95\n calendarPeriod: FORTNIGHT\n windowsBasedSli:\n windowPeriod: 400s\n goodBadMetricFilter:\n fn::invoke:\n Function: std:join\n Arguments:\n separator: ' AND '\n input:\n - metric.type=\"monitoring.googleapis.com/uptime_check/check_passed\"\n - resource.type=\"uptime_url\"\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Windows Based Metric Mean\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-windows-slos\",\n displayName: \"My Custom Service\",\n});\nconst windowsBased = new gcp.monitoring.Slo(\"windows_based\", {\n service: customsrv.serviceId,\n displayName: \"Test SLO with window based SLI\",\n goal: 0.9,\n rollingPeriodDays: 20,\n windowsBasedSli: {\n windowPeriod: \"600s\",\n metricMeanInRange: {\n timeSeries: std.join({\n separator: \" AND \",\n input: [\n \"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n \"resource.type=\\\"gce_instance\\\"\",\n ],\n }).then(invoke =\u003e invoke.result),\n range: {\n max: 5,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-windows-slos\",\n display_name=\"My Custom Service\")\nwindows_based = gcp.monitoring.Slo(\"windows_based\",\n service=customsrv.service_id,\n display_name=\"Test SLO with window based SLI\",\n goal=0.9,\n rolling_period_days=20,\n windows_based_sli={\n \"window_period\": \"600s\",\n \"metric_mean_in_range\": {\n \"time_series\": std.join(separator=\" AND \",\n input=[\n \"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n \"resource.type=\\\"gce_instance\\\"\",\n ]).result,\n \"range\": {\n \"max\": 5,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-windows-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var windowsBased = new Gcp.Monitoring.Slo(\"windows_based\", new()\n {\n Service = customsrv.ServiceId,\n DisplayName = \"Test SLO with window based SLI\",\n Goal = 0.9,\n RollingPeriodDays = 20,\n WindowsBasedSli = new Gcp.Monitoring.Inputs.SloWindowsBasedSliArgs\n {\n WindowPeriod = \"600s\",\n MetricMeanInRange = new Gcp.Monitoring.Inputs.SloWindowsBasedSliMetricMeanInRangeArgs\n {\n TimeSeries = Std.Join.Invoke(new()\n {\n Separator = \" AND \",\n Input = new[]\n {\n \"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n \"resource.type=\\\"gce_instance\\\"\",\n },\n }).Apply(invoke =\u003e invoke.Result),\n Range = new Gcp.Monitoring.Inputs.SloWindowsBasedSliMetricMeanInRangeRangeArgs\n {\n Max = 5,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-windows-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \" AND \",\n\t\t\tInput: []string{\n\t\t\t\t\"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n\t\t\t\t\"resource.type=\\\"gce_instance\\\"\",\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 = monitoring.NewSlo(ctx, \"windows_based\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tDisplayName: pulumi.String(\"Test SLO with window based SLI\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tRollingPeriodDays: pulumi.Int(20),\n\t\t\tWindowsBasedSli: \u0026monitoring.SloWindowsBasedSliArgs{\n\t\t\t\tWindowPeriod: pulumi.String(\"600s\"),\n\t\t\t\tMetricMeanInRange: \u0026monitoring.SloWindowsBasedSliMetricMeanInRangeArgs{\n\t\t\t\t\tTimeSeries: pulumi.String(invokeJoin.Result),\n\t\t\t\t\tRange: \u0026monitoring.SloWindowsBasedSliMetricMeanInRangeRangeArgs{\n\t\t\t\t\t\tMax: pulumi.Float64(5),\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.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliMetricMeanInRangeArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliMetricMeanInRangeRangeArgs;\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 customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-windows-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var windowsBased = new Slo(\"windowsBased\", SloArgs.builder()\n .service(customsrv.serviceId())\n .displayName(\"Test SLO with window based SLI\")\n .goal(0.9)\n .rollingPeriodDays(20)\n .windowsBasedSli(SloWindowsBasedSliArgs.builder()\n .windowPeriod(\"600s\")\n .metricMeanInRange(SloWindowsBasedSliMetricMeanInRangeArgs.builder()\n .timeSeries(StdFunctions.join(JoinArgs.builder()\n .separator(\" AND \")\n .input( \n \"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n \"resource.type=\\\"gce_instance\\\"\")\n .build()).result())\n .range(SloWindowsBasedSliMetricMeanInRangeRangeArgs.builder()\n .max(5)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-windows-slos\n displayName: My Custom Service\n windowsBased:\n type: gcp:monitoring:Slo\n name: windows_based\n properties:\n service: ${customsrv.serviceId}\n displayName: Test SLO with window based SLI\n goal: 0.9\n rollingPeriodDays: 20\n windowsBasedSli:\n windowPeriod: 600s\n metricMeanInRange:\n timeSeries:\n fn::invoke:\n Function: std:join\n Arguments:\n separator: ' AND '\n input:\n - metric.type=\"agent.googleapis.com/cassandra/client_request/latency/95p\"\n - resource.type=\"gce_instance\"\n Return: result\n range:\n max: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Windows Based Metric Sum\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-windows-slos\",\n displayName: \"My Custom Service\",\n});\nconst windowsBased = new gcp.monitoring.Slo(\"windows_based\", {\n service: customsrv.serviceId,\n displayName: \"Test SLO with window based SLI\",\n goal: 0.9,\n rollingPeriodDays: 20,\n windowsBasedSli: {\n windowPeriod: \"400s\",\n metricSumInRange: {\n timeSeries: std.join({\n separator: \" AND \",\n input: [\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n ],\n }).then(invoke =\u003e invoke.result),\n range: {\n max: 5000,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-windows-slos\",\n display_name=\"My Custom Service\")\nwindows_based = gcp.monitoring.Slo(\"windows_based\",\n service=customsrv.service_id,\n display_name=\"Test SLO with window based SLI\",\n goal=0.9,\n rolling_period_days=20,\n windows_based_sli={\n \"window_period\": \"400s\",\n \"metric_sum_in_range\": {\n \"time_series\": std.join(separator=\" AND \",\n input=[\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n ]).result,\n \"range\": {\n \"max\": 5000,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-windows-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var windowsBased = new Gcp.Monitoring.Slo(\"windows_based\", new()\n {\n Service = customsrv.ServiceId,\n DisplayName = \"Test SLO with window based SLI\",\n Goal = 0.9,\n RollingPeriodDays = 20,\n WindowsBasedSli = new Gcp.Monitoring.Inputs.SloWindowsBasedSliArgs\n {\n WindowPeriod = \"400s\",\n MetricSumInRange = new Gcp.Monitoring.Inputs.SloWindowsBasedSliMetricSumInRangeArgs\n {\n TimeSeries = Std.Join.Invoke(new()\n {\n Separator = \" AND \",\n Input = new[]\n {\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n },\n }).Apply(invoke =\u003e invoke.Result),\n Range = new Gcp.Monitoring.Inputs.SloWindowsBasedSliMetricSumInRangeRangeArgs\n {\n Max = 5000,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-windows-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \" AND \",\n\t\t\tInput: []string{\n\t\t\t\t\"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n\t\t\t\t\"resource.type=\\\"uptime_url\\\"\",\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 = monitoring.NewSlo(ctx, \"windows_based\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tDisplayName: pulumi.String(\"Test SLO with window based SLI\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tRollingPeriodDays: pulumi.Int(20),\n\t\t\tWindowsBasedSli: \u0026monitoring.SloWindowsBasedSliArgs{\n\t\t\t\tWindowPeriod: pulumi.String(\"400s\"),\n\t\t\t\tMetricSumInRange: \u0026monitoring.SloWindowsBasedSliMetricSumInRangeArgs{\n\t\t\t\t\tTimeSeries: pulumi.String(invokeJoin.Result),\n\t\t\t\t\tRange: \u0026monitoring.SloWindowsBasedSliMetricSumInRangeRangeArgs{\n\t\t\t\t\t\tMax: pulumi.Float64(5000),\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.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliMetricSumInRangeArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliMetricSumInRangeRangeArgs;\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 customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-windows-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var windowsBased = new Slo(\"windowsBased\", SloArgs.builder()\n .service(customsrv.serviceId())\n .displayName(\"Test SLO with window based SLI\")\n .goal(0.9)\n .rollingPeriodDays(20)\n .windowsBasedSli(SloWindowsBasedSliArgs.builder()\n .windowPeriod(\"400s\")\n .metricSumInRange(SloWindowsBasedSliMetricSumInRangeArgs.builder()\n .timeSeries(StdFunctions.join(JoinArgs.builder()\n .separator(\" AND \")\n .input( \n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n \"resource.type=\\\"uptime_url\\\"\")\n .build()).result())\n .range(SloWindowsBasedSliMetricSumInRangeRangeArgs.builder()\n .max(5000)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-windows-slos\n displayName: My Custom Service\n windowsBased:\n type: gcp:monitoring:Slo\n name: windows_based\n properties:\n service: ${customsrv.serviceId}\n displayName: Test SLO with window based SLI\n goal: 0.9\n rollingPeriodDays: 20\n windowsBasedSli:\n windowPeriod: 400s\n metricSumInRange:\n timeSeries:\n fn::invoke:\n Function: std:join\n Arguments:\n separator: ' AND '\n input:\n - metric.type=\"monitoring.googleapis.com/uptime_check/request_latency\"\n - resource.type=\"uptime_url\"\n Return: result\n range:\n max: 5000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Windows Based Ratio Threshold\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-windows-slos\",\n displayName: \"My Custom Service\",\n});\nconst windowsBased = new gcp.monitoring.Slo(\"windows_based\", {\n service: customsrv.serviceId,\n displayName: \"Test SLO with window based SLI\",\n goal: 0.9,\n rollingPeriodDays: 20,\n windowsBasedSli: {\n windowPeriod: \"100s\",\n goodTotalRatioThreshold: {\n threshold: 0.1,\n performance: {\n distributionCut: {\n distributionFilter: std.join({\n separator: \" AND \",\n input: [\n \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n \"resource.type=\\\"consumed_api\\\"\",\n ],\n }).then(invoke =\u003e invoke.result),\n range: {\n min: 1,\n max: 9,\n },\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-windows-slos\",\n display_name=\"My Custom Service\")\nwindows_based = gcp.monitoring.Slo(\"windows_based\",\n service=customsrv.service_id,\n display_name=\"Test SLO with window based SLI\",\n goal=0.9,\n rolling_period_days=20,\n windows_based_sli={\n \"window_period\": \"100s\",\n \"good_total_ratio_threshold\": {\n \"threshold\": 0.1,\n \"performance\": {\n \"distribution_cut\": {\n \"distribution_filter\": std.join(separator=\" AND \",\n input=[\n \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n \"resource.type=\\\"consumed_api\\\"\",\n ]).result,\n \"range\": {\n \"min\": 1,\n \"max\": 9,\n },\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-windows-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var windowsBased = new Gcp.Monitoring.Slo(\"windows_based\", new()\n {\n Service = customsrv.ServiceId,\n DisplayName = \"Test SLO with window based SLI\",\n Goal = 0.9,\n RollingPeriodDays = 20,\n WindowsBasedSli = new Gcp.Monitoring.Inputs.SloWindowsBasedSliArgs\n {\n WindowPeriod = \"100s\",\n GoodTotalRatioThreshold = new Gcp.Monitoring.Inputs.SloWindowsBasedSliGoodTotalRatioThresholdArgs\n {\n Threshold = 0.1,\n Performance = new Gcp.Monitoring.Inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceArgs\n {\n DistributionCut = new Gcp.Monitoring.Inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutArgs\n {\n DistributionFilter = Std.Join.Invoke(new()\n {\n Separator = \" AND \",\n Input = new[]\n {\n \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n \"resource.type=\\\"consumed_api\\\"\",\n },\n }).Apply(invoke =\u003e invoke.Result),\n Range = new Gcp.Monitoring.Inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutRangeArgs\n {\n Min = 1,\n Max = 9,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-windows-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \" AND \",\n\t\t\tInput: []string{\n\t\t\t\t\"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n\t\t\t\t\"resource.type=\\\"consumed_api\\\"\",\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 = monitoring.NewSlo(ctx, \"windows_based\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tDisplayName: pulumi.String(\"Test SLO with window based SLI\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tRollingPeriodDays: pulumi.Int(20),\n\t\t\tWindowsBasedSli: \u0026monitoring.SloWindowsBasedSliArgs{\n\t\t\t\tWindowPeriod: pulumi.String(\"100s\"),\n\t\t\t\tGoodTotalRatioThreshold: \u0026monitoring.SloWindowsBasedSliGoodTotalRatioThresholdArgs{\n\t\t\t\t\tThreshold: pulumi.Float64(0.1),\n\t\t\t\t\tPerformance: \u0026monitoring.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceArgs{\n\t\t\t\t\t\tDistributionCut: \u0026monitoring.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutArgs{\n\t\t\t\t\t\t\tDistributionFilter: pulumi.String(invokeJoin.Result),\n\t\t\t\t\t\t\tRange: \u0026monitoring.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutRangeArgs{\n\t\t\t\t\t\t\t\tMin: pulumi.Float64(1),\n\t\t\t\t\t\t\t\tMax: pulumi.Float64(9),\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.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliGoodTotalRatioThresholdArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutRangeArgs;\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 customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-windows-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var windowsBased = new Slo(\"windowsBased\", SloArgs.builder()\n .service(customsrv.serviceId())\n .displayName(\"Test SLO with window based SLI\")\n .goal(0.9)\n .rollingPeriodDays(20)\n .windowsBasedSli(SloWindowsBasedSliArgs.builder()\n .windowPeriod(\"100s\")\n .goodTotalRatioThreshold(SloWindowsBasedSliGoodTotalRatioThresholdArgs.builder()\n .threshold(0.1)\n .performance(SloWindowsBasedSliGoodTotalRatioThresholdPerformanceArgs.builder()\n .distributionCut(SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutArgs.builder()\n .distributionFilter(StdFunctions.join(JoinArgs.builder()\n .separator(\" AND \")\n .input( \n \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n \"resource.type=\\\"consumed_api\\\"\")\n .build()).result())\n .range(SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutRangeArgs.builder()\n .min(1)\n .max(9)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-windows-slos\n displayName: My Custom Service\n windowsBased:\n type: gcp:monitoring:Slo\n name: windows_based\n properties:\n service: ${customsrv.serviceId}\n displayName: Test SLO with window based SLI\n goal: 0.9\n rollingPeriodDays: 20\n windowsBasedSli:\n windowPeriod: 100s\n goodTotalRatioThreshold:\n threshold: 0.1\n performance:\n distributionCut:\n distributionFilter:\n fn::invoke:\n Function: std:join\n Arguments:\n separator: ' AND '\n input:\n - metric.type=\"serviceruntime.googleapis.com/api/request_latencies\"\n - resource.type=\"consumed_api\"\n Return: result\n range:\n min: 1\n max: 9\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSlo can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Slo can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:monitoring/slo:Slo default {{name}}\n```\n\n", "properties": { "basicSli": { "$ref": "#/types/gcp:monitoring/SloBasicSli:SloBasicSli", @@ -213602,7 +213602,7 @@ } }, "gcp:monitoring/uptimeCheckConfig:UptimeCheckConfig": { - "description": "This message configures which resources and services to monitor for availability.\n\n\nTo get more information about UptimeCheckConfig, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.uptimeCheckConfigs)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/monitoring/uptime-checks/)\n\n\n\n## Example Usage\n\n### Uptime Check Config Http\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http = new gcp.monitoring.UptimeCheckConfig(\"http\", {\n displayName: \"http-uptime-check\",\n timeout: \"60s\",\n userLabels: {\n \"example-key\": \"example-value\",\n },\n httpCheck: {\n path: \"some-path\",\n port: 8010,\n requestMethod: \"POST\",\n contentType: \"USER_PROVIDED\",\n customContentType: \"application/json\",\n body: \"Zm9vJTI1M0RiYXI=\",\n pingConfig: {\n pingsCount: 1,\n },\n },\n monitoredResource: {\n type: \"uptime_url\",\n labels: {\n project_id: \"my-project-name\",\n host: \"192.168.1.1\",\n },\n },\n contentMatchers: [{\n content: \"\\\"example\\\"\",\n matcher: \"MATCHES_JSON_PATH\",\n jsonPathMatcher: {\n jsonPath: \"$.path\",\n jsonMatcher: \"EXACT_MATCH\",\n },\n }],\n checkerType: \"STATIC_IP_CHECKERS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp = gcp.monitoring.UptimeCheckConfig(\"http\",\n display_name=\"http-uptime-check\",\n timeout=\"60s\",\n user_labels={\n \"example-key\": \"example-value\",\n },\n http_check={\n \"path\": \"some-path\",\n \"port\": 8010,\n \"requestMethod\": \"POST\",\n \"contentType\": \"USER_PROVIDED\",\n \"customContentType\": \"application/json\",\n \"body\": \"Zm9vJTI1M0RiYXI=\",\n \"pingConfig\": {\n \"pingsCount\": 1,\n },\n },\n monitored_resource={\n \"type\": \"uptime_url\",\n \"labels\": {\n \"project_id\": \"my-project-name\",\n \"host\": \"192.168.1.1\",\n },\n },\n content_matchers=[{\n \"content\": \"\\\"example\\\"\",\n \"matcher\": \"MATCHES_JSON_PATH\",\n \"jsonPathMatcher\": {\n \"jsonPath\": \"$.path\",\n \"jsonMatcher\": \"EXACT_MATCH\",\n },\n }],\n checker_type=\"STATIC_IP_CHECKERS\")\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 http = new Gcp.Monitoring.UptimeCheckConfig(\"http\", new()\n {\n DisplayName = \"http-uptime-check\",\n Timeout = \"60s\",\n UserLabels = \n {\n { \"example-key\", \"example-value\" },\n },\n HttpCheck = new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckArgs\n {\n Path = \"some-path\",\n Port = 8010,\n RequestMethod = \"POST\",\n ContentType = \"USER_PROVIDED\",\n CustomContentType = \"application/json\",\n Body = \"Zm9vJTI1M0RiYXI=\",\n PingConfig = new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckPingConfigArgs\n {\n PingsCount = 1,\n },\n },\n MonitoredResource = new Gcp.Monitoring.Inputs.UptimeCheckConfigMonitoredResourceArgs\n {\n Type = \"uptime_url\",\n Labels = \n {\n { \"project_id\", \"my-project-name\" },\n { \"host\", \"192.168.1.1\" },\n },\n },\n ContentMatchers = new[]\n {\n new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherArgs\n {\n Content = \"\\\"example\\\"\",\n Matcher = \"MATCHES_JSON_PATH\",\n JsonPathMatcher = new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherJsonPathMatcherArgs\n {\n JsonPath = \"$.path\",\n JsonMatcher = \"EXACT_MATCH\",\n },\n },\n },\n CheckerType = \"STATIC_IP_CHECKERS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewUptimeCheckConfig(ctx, \"http\", \u0026monitoring.UptimeCheckConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"http-uptime-check\"),\n\t\t\tTimeout: pulumi.String(\"60s\"),\n\t\t\tUserLabels: pulumi.StringMap{\n\t\t\t\t\"example-key\": pulumi.String(\"example-value\"),\n\t\t\t},\n\t\t\tHttpCheck: \u0026monitoring.UptimeCheckConfigHttpCheckArgs{\n\t\t\t\tPath: pulumi.String(\"some-path\"),\n\t\t\t\tPort: pulumi.Int(8010),\n\t\t\t\tRequestMethod: pulumi.String(\"POST\"),\n\t\t\t\tContentType: pulumi.String(\"USER_PROVIDED\"),\n\t\t\t\tCustomContentType: pulumi.String(\"application/json\"),\n\t\t\t\tBody: pulumi.String(\"Zm9vJTI1M0RiYXI=\"),\n\t\t\t\tPingConfig: \u0026monitoring.UptimeCheckConfigHttpCheckPingConfigArgs{\n\t\t\t\t\tPingsCount: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMonitoredResource: \u0026monitoring.UptimeCheckConfigMonitoredResourceArgs{\n\t\t\t\tType: pulumi.String(\"uptime_url\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"project_id\": pulumi.String(\"my-project-name\"),\n\t\t\t\t\t\"host\": pulumi.String(\"192.168.1.1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tContentMatchers: monitoring.UptimeCheckConfigContentMatcherArray{\n\t\t\t\t\u0026monitoring.UptimeCheckConfigContentMatcherArgs{\n\t\t\t\t\tContent: pulumi.String(\"\\\"example\\\"\"),\n\t\t\t\t\tMatcher: pulumi.String(\"MATCHES_JSON_PATH\"),\n\t\t\t\t\tJsonPathMatcher: \u0026monitoring.UptimeCheckConfigContentMatcherJsonPathMatcherArgs{\n\t\t\t\t\t\tJsonPath: pulumi.String(\"$.path\"),\n\t\t\t\t\t\tJsonMatcher: pulumi.String(\"EXACT_MATCH\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tCheckerType: pulumi.String(\"STATIC_IP_CHECKERS\"),\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.monitoring.UptimeCheckConfig;\nimport com.pulumi.gcp.monitoring.UptimeCheckConfigArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigHttpCheckArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigHttpCheckPingConfigArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigMonitoredResourceArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigContentMatcherArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigContentMatcherJsonPathMatcherArgs;\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 http = new UptimeCheckConfig(\"http\", UptimeCheckConfigArgs.builder()\n .displayName(\"http-uptime-check\")\n .timeout(\"60s\")\n .userLabels(Map.of(\"example-key\", \"example-value\"))\n .httpCheck(UptimeCheckConfigHttpCheckArgs.builder()\n .path(\"some-path\")\n .port(\"8010\")\n .requestMethod(\"POST\")\n .contentType(\"USER_PROVIDED\")\n .customContentType(\"application/json\")\n .body(\"Zm9vJTI1M0RiYXI=\")\n .pingConfig(UptimeCheckConfigHttpCheckPingConfigArgs.builder()\n .pingsCount(1)\n .build())\n .build())\n .monitoredResource(UptimeCheckConfigMonitoredResourceArgs.builder()\n .type(\"uptime_url\")\n .labels(Map.ofEntries(\n Map.entry(\"project_id\", \"my-project-name\"),\n Map.entry(\"host\", \"192.168.1.1\")\n ))\n .build())\n .contentMatchers(UptimeCheckConfigContentMatcherArgs.builder()\n .content(\"\\\"example\\\"\")\n .matcher(\"MATCHES_JSON_PATH\")\n .jsonPathMatcher(UptimeCheckConfigContentMatcherJsonPathMatcherArgs.builder()\n .jsonPath(\"$.path\")\n .jsonMatcher(\"EXACT_MATCH\")\n .build())\n .build())\n .checkerType(\"STATIC_IP_CHECKERS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http:\n type: gcp:monitoring:UptimeCheckConfig\n properties:\n displayName: http-uptime-check\n timeout: 60s\n userLabels:\n example-key: example-value\n httpCheck:\n path: some-path\n port: '8010'\n requestMethod: POST\n contentType: USER_PROVIDED\n customContentType: application/json\n body: Zm9vJTI1M0RiYXI=\n pingConfig:\n pingsCount: 1\n monitoredResource:\n type: uptime_url\n labels:\n project_id: my-project-name\n host: 192.168.1.1\n contentMatchers:\n - content: '\"example\"'\n matcher: MATCHES_JSON_PATH\n jsonPathMatcher:\n jsonPath: $.path\n jsonMatcher: EXACT_MATCH\n checkerType: STATIC_IP_CHECKERS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Uptime Check Config Status Code\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst statusCode = new gcp.monitoring.UptimeCheckConfig(\"status_code\", {\n displayName: \"http-uptime-check\",\n timeout: \"60s\",\n httpCheck: {\n path: \"some-path\",\n port: 8010,\n requestMethod: \"POST\",\n contentType: \"URL_ENCODED\",\n body: \"Zm9vJTI1M0RiYXI=\",\n acceptedResponseStatusCodes: [\n {\n statusClass: \"STATUS_CLASS_2XX\",\n },\n {\n statusValue: 301,\n },\n {\n statusValue: 302,\n },\n ],\n },\n monitoredResource: {\n type: \"uptime_url\",\n labels: {\n project_id: \"my-project-name\",\n host: \"192.168.1.1\",\n },\n },\n contentMatchers: [{\n content: \"\\\"example\\\"\",\n matcher: \"MATCHES_JSON_PATH\",\n jsonPathMatcher: {\n jsonPath: \"$.path\",\n jsonMatcher: \"EXACT_MATCH\",\n },\n }],\n checkerType: \"STATIC_IP_CHECKERS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nstatus_code = gcp.monitoring.UptimeCheckConfig(\"status_code\",\n display_name=\"http-uptime-check\",\n timeout=\"60s\",\n http_check={\n \"path\": \"some-path\",\n \"port\": 8010,\n \"requestMethod\": \"POST\",\n \"contentType\": \"URL_ENCODED\",\n \"body\": \"Zm9vJTI1M0RiYXI=\",\n \"acceptedResponseStatusCodes\": [\n {\n \"statusClass\": \"STATUS_CLASS_2XX\",\n },\n {\n \"statusValue\": 301,\n },\n {\n \"statusValue\": 302,\n },\n ],\n },\n monitored_resource={\n \"type\": \"uptime_url\",\n \"labels\": {\n \"project_id\": \"my-project-name\",\n \"host\": \"192.168.1.1\",\n },\n },\n content_matchers=[{\n \"content\": \"\\\"example\\\"\",\n \"matcher\": \"MATCHES_JSON_PATH\",\n \"jsonPathMatcher\": {\n \"jsonPath\": \"$.path\",\n \"jsonMatcher\": \"EXACT_MATCH\",\n },\n }],\n checker_type=\"STATIC_IP_CHECKERS\")\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 statusCode = new Gcp.Monitoring.UptimeCheckConfig(\"status_code\", new()\n {\n DisplayName = \"http-uptime-check\",\n Timeout = \"60s\",\n HttpCheck = new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckArgs\n {\n Path = \"some-path\",\n Port = 8010,\n RequestMethod = \"POST\",\n ContentType = \"URL_ENCODED\",\n Body = \"Zm9vJTI1M0RiYXI=\",\n AcceptedResponseStatusCodes = new[]\n {\n new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArgs\n {\n StatusClass = \"STATUS_CLASS_2XX\",\n },\n new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArgs\n {\n StatusValue = 301,\n },\n new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArgs\n {\n StatusValue = 302,\n },\n },\n },\n MonitoredResource = new Gcp.Monitoring.Inputs.UptimeCheckConfigMonitoredResourceArgs\n {\n Type = \"uptime_url\",\n Labels = \n {\n { \"project_id\", \"my-project-name\" },\n { \"host\", \"192.168.1.1\" },\n },\n },\n ContentMatchers = new[]\n {\n new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherArgs\n {\n Content = \"\\\"example\\\"\",\n Matcher = \"MATCHES_JSON_PATH\",\n JsonPathMatcher = new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherJsonPathMatcherArgs\n {\n JsonPath = \"$.path\",\n JsonMatcher = \"EXACT_MATCH\",\n },\n },\n },\n CheckerType = \"STATIC_IP_CHECKERS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewUptimeCheckConfig(ctx, \"status_code\", \u0026monitoring.UptimeCheckConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"http-uptime-check\"),\n\t\t\tTimeout: pulumi.String(\"60s\"),\n\t\t\tHttpCheck: \u0026monitoring.UptimeCheckConfigHttpCheckArgs{\n\t\t\t\tPath: pulumi.String(\"some-path\"),\n\t\t\t\tPort: pulumi.Int(8010),\n\t\t\t\tRequestMethod: pulumi.String(\"POST\"),\n\t\t\t\tContentType: pulumi.String(\"URL_ENCODED\"),\n\t\t\t\tBody: pulumi.String(\"Zm9vJTI1M0RiYXI=\"),\n\t\t\t\tAcceptedResponseStatusCodes: monitoring.UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArray{\n\t\t\t\t\t\u0026monitoring.UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArgs{\n\t\t\t\t\t\tStatusClass: pulumi.String(\"STATUS_CLASS_2XX\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026monitoring.UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArgs{\n\t\t\t\t\t\tStatusValue: pulumi.Int(301),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026monitoring.UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArgs{\n\t\t\t\t\t\tStatusValue: pulumi.Int(302),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tMonitoredResource: \u0026monitoring.UptimeCheckConfigMonitoredResourceArgs{\n\t\t\t\tType: pulumi.String(\"uptime_url\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"project_id\": pulumi.String(\"my-project-name\"),\n\t\t\t\t\t\"host\": pulumi.String(\"192.168.1.1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tContentMatchers: monitoring.UptimeCheckConfigContentMatcherArray{\n\t\t\t\t\u0026monitoring.UptimeCheckConfigContentMatcherArgs{\n\t\t\t\t\tContent: pulumi.String(\"\\\"example\\\"\"),\n\t\t\t\t\tMatcher: pulumi.String(\"MATCHES_JSON_PATH\"),\n\t\t\t\t\tJsonPathMatcher: \u0026monitoring.UptimeCheckConfigContentMatcherJsonPathMatcherArgs{\n\t\t\t\t\t\tJsonPath: pulumi.String(\"$.path\"),\n\t\t\t\t\t\tJsonMatcher: pulumi.String(\"EXACT_MATCH\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tCheckerType: pulumi.String(\"STATIC_IP_CHECKERS\"),\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.monitoring.UptimeCheckConfig;\nimport com.pulumi.gcp.monitoring.UptimeCheckConfigArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigHttpCheckArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigMonitoredResourceArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigContentMatcherArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigContentMatcherJsonPathMatcherArgs;\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 statusCode = new UptimeCheckConfig(\"statusCode\", UptimeCheckConfigArgs.builder()\n .displayName(\"http-uptime-check\")\n .timeout(\"60s\")\n .httpCheck(UptimeCheckConfigHttpCheckArgs.builder()\n .path(\"some-path\")\n .port(\"8010\")\n .requestMethod(\"POST\")\n .contentType(\"URL_ENCODED\")\n .body(\"Zm9vJTI1M0RiYXI=\")\n .acceptedResponseStatusCodes( \n UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArgs.builder()\n .statusClass(\"STATUS_CLASS_2XX\")\n .build(),\n UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArgs.builder()\n .statusValue(301)\n .build(),\n UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArgs.builder()\n .statusValue(302)\n .build())\n .build())\n .monitoredResource(UptimeCheckConfigMonitoredResourceArgs.builder()\n .type(\"uptime_url\")\n .labels(Map.ofEntries(\n Map.entry(\"project_id\", \"my-project-name\"),\n Map.entry(\"host\", \"192.168.1.1\")\n ))\n .build())\n .contentMatchers(UptimeCheckConfigContentMatcherArgs.builder()\n .content(\"\\\"example\\\"\")\n .matcher(\"MATCHES_JSON_PATH\")\n .jsonPathMatcher(UptimeCheckConfigContentMatcherJsonPathMatcherArgs.builder()\n .jsonPath(\"$.path\")\n .jsonMatcher(\"EXACT_MATCH\")\n .build())\n .build())\n .checkerType(\"STATIC_IP_CHECKERS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n statusCode:\n type: gcp:monitoring:UptimeCheckConfig\n name: status_code\n properties:\n displayName: http-uptime-check\n timeout: 60s\n httpCheck:\n path: some-path\n port: '8010'\n requestMethod: POST\n contentType: URL_ENCODED\n body: Zm9vJTI1M0RiYXI=\n acceptedResponseStatusCodes:\n - statusClass: STATUS_CLASS_2XX\n - statusValue: 301\n - statusValue: 302\n monitoredResource:\n type: uptime_url\n labels:\n project_id: my-project-name\n host: 192.168.1.1\n contentMatchers:\n - content: '\"example\"'\n matcher: MATCHES_JSON_PATH\n jsonPathMatcher:\n jsonPath: $.path\n jsonMatcher: EXACT_MATCH\n checkerType: STATIC_IP_CHECKERS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Uptime Check Config Https\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst https = new gcp.monitoring.UptimeCheckConfig(\"https\", {\n displayName: \"https-uptime-check\",\n timeout: \"60s\",\n httpCheck: {\n path: \"/some-path\",\n port: 443,\n useSsl: true,\n validateSsl: true,\n serviceAgentAuthentication: {\n type: \"OIDC_TOKEN\",\n },\n },\n monitoredResource: {\n type: \"uptime_url\",\n labels: {\n project_id: \"my-project-name\",\n host: \"192.168.1.1\",\n },\n },\n contentMatchers: [{\n content: \"example\",\n matcher: \"MATCHES_JSON_PATH\",\n jsonPathMatcher: {\n jsonPath: \"$.path\",\n jsonMatcher: \"REGEX_MATCH\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttps = gcp.monitoring.UptimeCheckConfig(\"https\",\n display_name=\"https-uptime-check\",\n timeout=\"60s\",\n http_check={\n \"path\": \"/some-path\",\n \"port\": 443,\n \"useSsl\": True,\n \"validateSsl\": True,\n \"serviceAgentAuthentication\": {\n \"type\": \"OIDC_TOKEN\",\n },\n },\n monitored_resource={\n \"type\": \"uptime_url\",\n \"labels\": {\n \"project_id\": \"my-project-name\",\n \"host\": \"192.168.1.1\",\n },\n },\n content_matchers=[{\n \"content\": \"example\",\n \"matcher\": \"MATCHES_JSON_PATH\",\n \"jsonPathMatcher\": {\n \"jsonPath\": \"$.path\",\n \"jsonMatcher\": \"REGEX_MATCH\",\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 https = new Gcp.Monitoring.UptimeCheckConfig(\"https\", new()\n {\n DisplayName = \"https-uptime-check\",\n Timeout = \"60s\",\n HttpCheck = new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckArgs\n {\n Path = \"/some-path\",\n Port = 443,\n UseSsl = true,\n ValidateSsl = true,\n ServiceAgentAuthentication = new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckServiceAgentAuthenticationArgs\n {\n Type = \"OIDC_TOKEN\",\n },\n },\n MonitoredResource = new Gcp.Monitoring.Inputs.UptimeCheckConfigMonitoredResourceArgs\n {\n Type = \"uptime_url\",\n Labels = \n {\n { \"project_id\", \"my-project-name\" },\n { \"host\", \"192.168.1.1\" },\n },\n },\n ContentMatchers = new[]\n {\n new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherArgs\n {\n Content = \"example\",\n Matcher = \"MATCHES_JSON_PATH\",\n JsonPathMatcher = new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherJsonPathMatcherArgs\n {\n JsonPath = \"$.path\",\n JsonMatcher = \"REGEX_MATCH\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewUptimeCheckConfig(ctx, \"https\", \u0026monitoring.UptimeCheckConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"https-uptime-check\"),\n\t\t\tTimeout: pulumi.String(\"60s\"),\n\t\t\tHttpCheck: \u0026monitoring.UptimeCheckConfigHttpCheckArgs{\n\t\t\t\tPath: pulumi.String(\"/some-path\"),\n\t\t\t\tPort: pulumi.Int(443),\n\t\t\t\tUseSsl: pulumi.Bool(true),\n\t\t\t\tValidateSsl: pulumi.Bool(true),\n\t\t\t\tServiceAgentAuthentication: \u0026monitoring.UptimeCheckConfigHttpCheckServiceAgentAuthenticationArgs{\n\t\t\t\t\tType: pulumi.String(\"OIDC_TOKEN\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMonitoredResource: \u0026monitoring.UptimeCheckConfigMonitoredResourceArgs{\n\t\t\t\tType: pulumi.String(\"uptime_url\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"project_id\": pulumi.String(\"my-project-name\"),\n\t\t\t\t\t\"host\": pulumi.String(\"192.168.1.1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tContentMatchers: monitoring.UptimeCheckConfigContentMatcherArray{\n\t\t\t\t\u0026monitoring.UptimeCheckConfigContentMatcherArgs{\n\t\t\t\t\tContent: pulumi.String(\"example\"),\n\t\t\t\t\tMatcher: pulumi.String(\"MATCHES_JSON_PATH\"),\n\t\t\t\t\tJsonPathMatcher: \u0026monitoring.UptimeCheckConfigContentMatcherJsonPathMatcherArgs{\n\t\t\t\t\t\tJsonPath: pulumi.String(\"$.path\"),\n\t\t\t\t\t\tJsonMatcher: pulumi.String(\"REGEX_MATCH\"),\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.monitoring.UptimeCheckConfig;\nimport com.pulumi.gcp.monitoring.UptimeCheckConfigArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigHttpCheckArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigHttpCheckServiceAgentAuthenticationArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigMonitoredResourceArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigContentMatcherArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigContentMatcherJsonPathMatcherArgs;\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 https = new UptimeCheckConfig(\"https\", UptimeCheckConfigArgs.builder()\n .displayName(\"https-uptime-check\")\n .timeout(\"60s\")\n .httpCheck(UptimeCheckConfigHttpCheckArgs.builder()\n .path(\"/some-path\")\n .port(\"443\")\n .useSsl(true)\n .validateSsl(true)\n .serviceAgentAuthentication(UptimeCheckConfigHttpCheckServiceAgentAuthenticationArgs.builder()\n .type(\"OIDC_TOKEN\")\n .build())\n .build())\n .monitoredResource(UptimeCheckConfigMonitoredResourceArgs.builder()\n .type(\"uptime_url\")\n .labels(Map.ofEntries(\n Map.entry(\"project_id\", \"my-project-name\"),\n Map.entry(\"host\", \"192.168.1.1\")\n ))\n .build())\n .contentMatchers(UptimeCheckConfigContentMatcherArgs.builder()\n .content(\"example\")\n .matcher(\"MATCHES_JSON_PATH\")\n .jsonPathMatcher(UptimeCheckConfigContentMatcherJsonPathMatcherArgs.builder()\n .jsonPath(\"$.path\")\n .jsonMatcher(\"REGEX_MATCH\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n https:\n type: gcp:monitoring:UptimeCheckConfig\n properties:\n displayName: https-uptime-check\n timeout: 60s\n httpCheck:\n path: /some-path\n port: '443'\n useSsl: true\n validateSsl: true\n serviceAgentAuthentication:\n type: OIDC_TOKEN\n monitoredResource:\n type: uptime_url\n labels:\n project_id: my-project-name\n host: 192.168.1.1\n contentMatchers:\n - content: example\n matcher: MATCHES_JSON_PATH\n jsonPathMatcher:\n jsonPath: $.path\n jsonMatcher: REGEX_MATCH\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Uptime Check Tcp\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst check = new gcp.monitoring.Group(\"check\", {\n displayName: \"uptime-check-group\",\n filter: \"resource.metadata.name=has_substring(\\\"foo\\\")\",\n});\nconst tcpGroup = new gcp.monitoring.UptimeCheckConfig(\"tcp_group\", {\n displayName: \"tcp-uptime-check\",\n timeout: \"60s\",\n tcpCheck: {\n port: 888,\n pingConfig: {\n pingsCount: 2,\n },\n },\n resourceGroup: {\n resourceType: \"INSTANCE\",\n groupId: check.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncheck = gcp.monitoring.Group(\"check\",\n display_name=\"uptime-check-group\",\n filter=\"resource.metadata.name=has_substring(\\\"foo\\\")\")\ntcp_group = gcp.monitoring.UptimeCheckConfig(\"tcp_group\",\n display_name=\"tcp-uptime-check\",\n timeout=\"60s\",\n tcp_check={\n \"port\": 888,\n \"pingConfig\": {\n \"pingsCount\": 2,\n },\n },\n resource_group={\n \"resourceType\": \"INSTANCE\",\n \"groupId\": check.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 check = new Gcp.Monitoring.Group(\"check\", new()\n {\n DisplayName = \"uptime-check-group\",\n Filter = \"resource.metadata.name=has_substring(\\\"foo\\\")\",\n });\n\n var tcpGroup = new Gcp.Monitoring.UptimeCheckConfig(\"tcp_group\", new()\n {\n DisplayName = \"tcp-uptime-check\",\n Timeout = \"60s\",\n TcpCheck = new Gcp.Monitoring.Inputs.UptimeCheckConfigTcpCheckArgs\n {\n Port = 888,\n PingConfig = new Gcp.Monitoring.Inputs.UptimeCheckConfigTcpCheckPingConfigArgs\n {\n PingsCount = 2,\n },\n },\n ResourceGroup = new Gcp.Monitoring.Inputs.UptimeCheckConfigResourceGroupArgs\n {\n ResourceType = \"INSTANCE\",\n GroupId = check.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcheck, err := monitoring.NewGroup(ctx, \"check\", \u0026monitoring.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"uptime-check-group\"),\n\t\t\tFilter: pulumi.String(\"resource.metadata.name=has_substring(\\\"foo\\\")\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewUptimeCheckConfig(ctx, \"tcp_group\", \u0026monitoring.UptimeCheckConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"tcp-uptime-check\"),\n\t\t\tTimeout: pulumi.String(\"60s\"),\n\t\t\tTcpCheck: \u0026monitoring.UptimeCheckConfigTcpCheckArgs{\n\t\t\t\tPort: pulumi.Int(888),\n\t\t\t\tPingConfig: \u0026monitoring.UptimeCheckConfigTcpCheckPingConfigArgs{\n\t\t\t\t\tPingsCount: pulumi.Int(2),\n\t\t\t\t},\n\t\t\t},\n\t\t\tResourceGroup: \u0026monitoring.UptimeCheckConfigResourceGroupArgs{\n\t\t\t\tResourceType: pulumi.String(\"INSTANCE\"),\n\t\t\t\tGroupId: check.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.monitoring.Group;\nimport com.pulumi.gcp.monitoring.GroupArgs;\nimport com.pulumi.gcp.monitoring.UptimeCheckConfig;\nimport com.pulumi.gcp.monitoring.UptimeCheckConfigArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigTcpCheckArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigTcpCheckPingConfigArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigResourceGroupArgs;\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 check = new Group(\"check\", GroupArgs.builder()\n .displayName(\"uptime-check-group\")\n .filter(\"resource.metadata.name=has_substring(\\\"foo\\\")\")\n .build());\n\n var tcpGroup = new UptimeCheckConfig(\"tcpGroup\", UptimeCheckConfigArgs.builder()\n .displayName(\"tcp-uptime-check\")\n .timeout(\"60s\")\n .tcpCheck(UptimeCheckConfigTcpCheckArgs.builder()\n .port(888)\n .pingConfig(UptimeCheckConfigTcpCheckPingConfigArgs.builder()\n .pingsCount(2)\n .build())\n .build())\n .resourceGroup(UptimeCheckConfigResourceGroupArgs.builder()\n .resourceType(\"INSTANCE\")\n .groupId(check.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tcpGroup:\n type: gcp:monitoring:UptimeCheckConfig\n name: tcp_group\n properties:\n displayName: tcp-uptime-check\n timeout: 60s\n tcpCheck:\n port: 888\n pingConfig:\n pingsCount: 2\n resourceGroup:\n resourceType: INSTANCE\n groupId: ${check.name}\n check:\n type: gcp:monitoring:Group\n properties:\n displayName: uptime-check-group\n filter: resource.metadata.name=has_substring(\"foo\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Uptime Check Config Synthetic Monitor\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"my-project-name-gcf-source\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"synthetic-fn-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"synthetic_function\",\n location: \"us-central1\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"SyntheticFunction\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\nconst syntheticMonitor = new gcp.monitoring.UptimeCheckConfig(\"synthetic_monitor\", {\n displayName: \"synthetic_monitor\",\n timeout: \"60s\",\n syntheticMonitor: {\n cloudFunctionV2: {\n name: _function.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"my-project-name-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"synthetic-fn-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"synthetic_function\",\n location=\"us-central1\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entryPoint\": \"SyntheticFunction\",\n \"source\": {\n \"storageSource\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"maxInstanceCount\": 1,\n \"availableMemory\": \"256M\",\n \"timeoutSeconds\": 60,\n })\nsynthetic_monitor = gcp.monitoring.UptimeCheckConfig(\"synthetic_monitor\",\n display_name=\"synthetic_monitor\",\n timeout=\"60s\",\n synthetic_monitor={\n \"cloudFunctionV2\": {\n \"name\": function.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 bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"my-project-name-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"synthetic-fn-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"synthetic_function\",\n Location = \"us-central1\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"SyntheticFunction\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n var syntheticMonitor = new Gcp.Monitoring.UptimeCheckConfig(\"synthetic_monitor\", new()\n {\n DisplayName = \"synthetic_monitor\",\n Timeout = \"60s\",\n SyntheticMonitor = new Gcp.Monitoring.Inputs.UptimeCheckConfigSyntheticMonitorArgs\n {\n CloudFunctionV2 = new Gcp.Monitoring.Inputs.UptimeCheckConfigSyntheticMonitorCloudFunctionV2Args\n {\n Name = function.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-project-name-gcf-source\"),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"synthetic-fn-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunction, err := cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"synthetic_function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"SyntheticFunction\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewUptimeCheckConfig(ctx, \"synthetic_monitor\", \u0026monitoring.UptimeCheckConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"synthetic_monitor\"),\n\t\t\tTimeout: pulumi.String(\"60s\"),\n\t\t\tSyntheticMonitor: \u0026monitoring.UptimeCheckConfigSyntheticMonitorArgs{\n\t\t\t\tCloudFunctionV2: \u0026monitoring.UptimeCheckConfigSyntheticMonitorCloudFunctionV2Args{\n\t\t\t\t\tName: function.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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.monitoring.UptimeCheckConfig;\nimport com.pulumi.gcp.monitoring.UptimeCheckConfigArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigSyntheticMonitorArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigSyntheticMonitorCloudFunctionV2Args;\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 .name(\"my-project-name-gcf-source\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"synthetic-fn-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"synthetic_function\")\n .location(\"us-central1\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"SyntheticFunction\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n var syntheticMonitor = new UptimeCheckConfig(\"syntheticMonitor\", UptimeCheckConfigArgs.builder()\n .displayName(\"synthetic_monitor\")\n .timeout(\"60s\")\n .syntheticMonitor(UptimeCheckConfigSyntheticMonitorArgs.builder()\n .cloudFunctionV2(UptimeCheckConfigSyntheticMonitorCloudFunctionV2Args.builder()\n .name(function.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: my-project-name-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: synthetic-fn-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: synthetic_function\n location: us-central1\n buildConfig:\n runtime: nodejs16\n entryPoint: SyntheticFunction\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n syntheticMonitor:\n type: gcp:monitoring:UptimeCheckConfig\n name: synthetic_monitor\n properties:\n displayName: synthetic_monitor\n timeout: 60s\n syntheticMonitor:\n cloudFunctionV2:\n name: ${function.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUptimeCheckConfig can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, UptimeCheckConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:monitoring/uptimeCheckConfig:UptimeCheckConfig default {{name}}\n```\n\n", + "description": "This message configures which resources and services to monitor for availability.\n\n\nTo get more information about UptimeCheckConfig, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.uptimeCheckConfigs)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/monitoring/uptime-checks/)\n\n\n\n## Example Usage\n\n### Uptime Check Config Http\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http = new gcp.monitoring.UptimeCheckConfig(\"http\", {\n displayName: \"http-uptime-check\",\n timeout: \"60s\",\n userLabels: {\n \"example-key\": \"example-value\",\n },\n httpCheck: {\n path: \"some-path\",\n port: 8010,\n requestMethod: \"POST\",\n contentType: \"USER_PROVIDED\",\n customContentType: \"application/json\",\n body: \"Zm9vJTI1M0RiYXI=\",\n pingConfig: {\n pingsCount: 1,\n },\n },\n monitoredResource: {\n type: \"uptime_url\",\n labels: {\n project_id: \"my-project-name\",\n host: \"192.168.1.1\",\n },\n },\n contentMatchers: [{\n content: \"\\\"example\\\"\",\n matcher: \"MATCHES_JSON_PATH\",\n jsonPathMatcher: {\n jsonPath: \"$.path\",\n jsonMatcher: \"EXACT_MATCH\",\n },\n }],\n checkerType: \"STATIC_IP_CHECKERS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp = gcp.monitoring.UptimeCheckConfig(\"http\",\n display_name=\"http-uptime-check\",\n timeout=\"60s\",\n user_labels={\n \"example-key\": \"example-value\",\n },\n http_check={\n \"path\": \"some-path\",\n \"port\": 8010,\n \"request_method\": \"POST\",\n \"content_type\": \"USER_PROVIDED\",\n \"custom_content_type\": \"application/json\",\n \"body\": \"Zm9vJTI1M0RiYXI=\",\n \"ping_config\": {\n \"pings_count\": 1,\n },\n },\n monitored_resource={\n \"type\": \"uptime_url\",\n \"labels\": {\n \"project_id\": \"my-project-name\",\n \"host\": \"192.168.1.1\",\n },\n },\n content_matchers=[{\n \"content\": \"\\\"example\\\"\",\n \"matcher\": \"MATCHES_JSON_PATH\",\n \"json_path_matcher\": {\n \"json_path\": \"$.path\",\n \"json_matcher\": \"EXACT_MATCH\",\n },\n }],\n checker_type=\"STATIC_IP_CHECKERS\")\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 http = new Gcp.Monitoring.UptimeCheckConfig(\"http\", new()\n {\n DisplayName = \"http-uptime-check\",\n Timeout = \"60s\",\n UserLabels = \n {\n { \"example-key\", \"example-value\" },\n },\n HttpCheck = new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckArgs\n {\n Path = \"some-path\",\n Port = 8010,\n RequestMethod = \"POST\",\n ContentType = \"USER_PROVIDED\",\n CustomContentType = \"application/json\",\n Body = \"Zm9vJTI1M0RiYXI=\",\n PingConfig = new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckPingConfigArgs\n {\n PingsCount = 1,\n },\n },\n MonitoredResource = new Gcp.Monitoring.Inputs.UptimeCheckConfigMonitoredResourceArgs\n {\n Type = \"uptime_url\",\n Labels = \n {\n { \"project_id\", \"my-project-name\" },\n { \"host\", \"192.168.1.1\" },\n },\n },\n ContentMatchers = new[]\n {\n new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherArgs\n {\n Content = \"\\\"example\\\"\",\n Matcher = \"MATCHES_JSON_PATH\",\n JsonPathMatcher = new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherJsonPathMatcherArgs\n {\n JsonPath = \"$.path\",\n JsonMatcher = \"EXACT_MATCH\",\n },\n },\n },\n CheckerType = \"STATIC_IP_CHECKERS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewUptimeCheckConfig(ctx, \"http\", \u0026monitoring.UptimeCheckConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"http-uptime-check\"),\n\t\t\tTimeout: pulumi.String(\"60s\"),\n\t\t\tUserLabels: pulumi.StringMap{\n\t\t\t\t\"example-key\": pulumi.String(\"example-value\"),\n\t\t\t},\n\t\t\tHttpCheck: \u0026monitoring.UptimeCheckConfigHttpCheckArgs{\n\t\t\t\tPath: pulumi.String(\"some-path\"),\n\t\t\t\tPort: pulumi.Int(8010),\n\t\t\t\tRequestMethod: pulumi.String(\"POST\"),\n\t\t\t\tContentType: pulumi.String(\"USER_PROVIDED\"),\n\t\t\t\tCustomContentType: pulumi.String(\"application/json\"),\n\t\t\t\tBody: pulumi.String(\"Zm9vJTI1M0RiYXI=\"),\n\t\t\t\tPingConfig: \u0026monitoring.UptimeCheckConfigHttpCheckPingConfigArgs{\n\t\t\t\t\tPingsCount: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMonitoredResource: \u0026monitoring.UptimeCheckConfigMonitoredResourceArgs{\n\t\t\t\tType: pulumi.String(\"uptime_url\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"project_id\": pulumi.String(\"my-project-name\"),\n\t\t\t\t\t\"host\": pulumi.String(\"192.168.1.1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tContentMatchers: monitoring.UptimeCheckConfigContentMatcherArray{\n\t\t\t\t\u0026monitoring.UptimeCheckConfigContentMatcherArgs{\n\t\t\t\t\tContent: pulumi.String(\"\\\"example\\\"\"),\n\t\t\t\t\tMatcher: pulumi.String(\"MATCHES_JSON_PATH\"),\n\t\t\t\t\tJsonPathMatcher: \u0026monitoring.UptimeCheckConfigContentMatcherJsonPathMatcherArgs{\n\t\t\t\t\t\tJsonPath: pulumi.String(\"$.path\"),\n\t\t\t\t\t\tJsonMatcher: pulumi.String(\"EXACT_MATCH\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tCheckerType: pulumi.String(\"STATIC_IP_CHECKERS\"),\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.monitoring.UptimeCheckConfig;\nimport com.pulumi.gcp.monitoring.UptimeCheckConfigArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigHttpCheckArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigHttpCheckPingConfigArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigMonitoredResourceArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigContentMatcherArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigContentMatcherJsonPathMatcherArgs;\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 http = new UptimeCheckConfig(\"http\", UptimeCheckConfigArgs.builder()\n .displayName(\"http-uptime-check\")\n .timeout(\"60s\")\n .userLabels(Map.of(\"example-key\", \"example-value\"))\n .httpCheck(UptimeCheckConfigHttpCheckArgs.builder()\n .path(\"some-path\")\n .port(\"8010\")\n .requestMethod(\"POST\")\n .contentType(\"USER_PROVIDED\")\n .customContentType(\"application/json\")\n .body(\"Zm9vJTI1M0RiYXI=\")\n .pingConfig(UptimeCheckConfigHttpCheckPingConfigArgs.builder()\n .pingsCount(1)\n .build())\n .build())\n .monitoredResource(UptimeCheckConfigMonitoredResourceArgs.builder()\n .type(\"uptime_url\")\n .labels(Map.ofEntries(\n Map.entry(\"project_id\", \"my-project-name\"),\n Map.entry(\"host\", \"192.168.1.1\")\n ))\n .build())\n .contentMatchers(UptimeCheckConfigContentMatcherArgs.builder()\n .content(\"\\\"example\\\"\")\n .matcher(\"MATCHES_JSON_PATH\")\n .jsonPathMatcher(UptimeCheckConfigContentMatcherJsonPathMatcherArgs.builder()\n .jsonPath(\"$.path\")\n .jsonMatcher(\"EXACT_MATCH\")\n .build())\n .build())\n .checkerType(\"STATIC_IP_CHECKERS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n http:\n type: gcp:monitoring:UptimeCheckConfig\n properties:\n displayName: http-uptime-check\n timeout: 60s\n userLabels:\n example-key: example-value\n httpCheck:\n path: some-path\n port: '8010'\n requestMethod: POST\n contentType: USER_PROVIDED\n customContentType: application/json\n body: Zm9vJTI1M0RiYXI=\n pingConfig:\n pingsCount: 1\n monitoredResource:\n type: uptime_url\n labels:\n project_id: my-project-name\n host: 192.168.1.1\n contentMatchers:\n - content: '\"example\"'\n matcher: MATCHES_JSON_PATH\n jsonPathMatcher:\n jsonPath: $.path\n jsonMatcher: EXACT_MATCH\n checkerType: STATIC_IP_CHECKERS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Uptime Check Config Status Code\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst statusCode = new gcp.monitoring.UptimeCheckConfig(\"status_code\", {\n displayName: \"http-uptime-check\",\n timeout: \"60s\",\n httpCheck: {\n path: \"some-path\",\n port: 8010,\n requestMethod: \"POST\",\n contentType: \"URL_ENCODED\",\n body: \"Zm9vJTI1M0RiYXI=\",\n acceptedResponseStatusCodes: [\n {\n statusClass: \"STATUS_CLASS_2XX\",\n },\n {\n statusValue: 301,\n },\n {\n statusValue: 302,\n },\n ],\n },\n monitoredResource: {\n type: \"uptime_url\",\n labels: {\n project_id: \"my-project-name\",\n host: \"192.168.1.1\",\n },\n },\n contentMatchers: [{\n content: \"\\\"example\\\"\",\n matcher: \"MATCHES_JSON_PATH\",\n jsonPathMatcher: {\n jsonPath: \"$.path\",\n jsonMatcher: \"EXACT_MATCH\",\n },\n }],\n checkerType: \"STATIC_IP_CHECKERS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nstatus_code = gcp.monitoring.UptimeCheckConfig(\"status_code\",\n display_name=\"http-uptime-check\",\n timeout=\"60s\",\n http_check={\n \"path\": \"some-path\",\n \"port\": 8010,\n \"request_method\": \"POST\",\n \"content_type\": \"URL_ENCODED\",\n \"body\": \"Zm9vJTI1M0RiYXI=\",\n \"accepted_response_status_codes\": [\n {\n \"status_class\": \"STATUS_CLASS_2XX\",\n },\n {\n \"status_value\": 301,\n },\n {\n \"status_value\": 302,\n },\n ],\n },\n monitored_resource={\n \"type\": \"uptime_url\",\n \"labels\": {\n \"project_id\": \"my-project-name\",\n \"host\": \"192.168.1.1\",\n },\n },\n content_matchers=[{\n \"content\": \"\\\"example\\\"\",\n \"matcher\": \"MATCHES_JSON_PATH\",\n \"json_path_matcher\": {\n \"json_path\": \"$.path\",\n \"json_matcher\": \"EXACT_MATCH\",\n },\n }],\n checker_type=\"STATIC_IP_CHECKERS\")\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 statusCode = new Gcp.Monitoring.UptimeCheckConfig(\"status_code\", new()\n {\n DisplayName = \"http-uptime-check\",\n Timeout = \"60s\",\n HttpCheck = new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckArgs\n {\n Path = \"some-path\",\n Port = 8010,\n RequestMethod = \"POST\",\n ContentType = \"URL_ENCODED\",\n Body = \"Zm9vJTI1M0RiYXI=\",\n AcceptedResponseStatusCodes = new[]\n {\n new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArgs\n {\n StatusClass = \"STATUS_CLASS_2XX\",\n },\n new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArgs\n {\n StatusValue = 301,\n },\n new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArgs\n {\n StatusValue = 302,\n },\n },\n },\n MonitoredResource = new Gcp.Monitoring.Inputs.UptimeCheckConfigMonitoredResourceArgs\n {\n Type = \"uptime_url\",\n Labels = \n {\n { \"project_id\", \"my-project-name\" },\n { \"host\", \"192.168.1.1\" },\n },\n },\n ContentMatchers = new[]\n {\n new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherArgs\n {\n Content = \"\\\"example\\\"\",\n Matcher = \"MATCHES_JSON_PATH\",\n JsonPathMatcher = new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherJsonPathMatcherArgs\n {\n JsonPath = \"$.path\",\n JsonMatcher = \"EXACT_MATCH\",\n },\n },\n },\n CheckerType = \"STATIC_IP_CHECKERS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewUptimeCheckConfig(ctx, \"status_code\", \u0026monitoring.UptimeCheckConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"http-uptime-check\"),\n\t\t\tTimeout: pulumi.String(\"60s\"),\n\t\t\tHttpCheck: \u0026monitoring.UptimeCheckConfigHttpCheckArgs{\n\t\t\t\tPath: pulumi.String(\"some-path\"),\n\t\t\t\tPort: pulumi.Int(8010),\n\t\t\t\tRequestMethod: pulumi.String(\"POST\"),\n\t\t\t\tContentType: pulumi.String(\"URL_ENCODED\"),\n\t\t\t\tBody: pulumi.String(\"Zm9vJTI1M0RiYXI=\"),\n\t\t\t\tAcceptedResponseStatusCodes: monitoring.UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArray{\n\t\t\t\t\t\u0026monitoring.UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArgs{\n\t\t\t\t\t\tStatusClass: pulumi.String(\"STATUS_CLASS_2XX\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026monitoring.UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArgs{\n\t\t\t\t\t\tStatusValue: pulumi.Int(301),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026monitoring.UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArgs{\n\t\t\t\t\t\tStatusValue: pulumi.Int(302),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tMonitoredResource: \u0026monitoring.UptimeCheckConfigMonitoredResourceArgs{\n\t\t\t\tType: pulumi.String(\"uptime_url\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"project_id\": pulumi.String(\"my-project-name\"),\n\t\t\t\t\t\"host\": pulumi.String(\"192.168.1.1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tContentMatchers: monitoring.UptimeCheckConfigContentMatcherArray{\n\t\t\t\t\u0026monitoring.UptimeCheckConfigContentMatcherArgs{\n\t\t\t\t\tContent: pulumi.String(\"\\\"example\\\"\"),\n\t\t\t\t\tMatcher: pulumi.String(\"MATCHES_JSON_PATH\"),\n\t\t\t\t\tJsonPathMatcher: \u0026monitoring.UptimeCheckConfigContentMatcherJsonPathMatcherArgs{\n\t\t\t\t\t\tJsonPath: pulumi.String(\"$.path\"),\n\t\t\t\t\t\tJsonMatcher: pulumi.String(\"EXACT_MATCH\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tCheckerType: pulumi.String(\"STATIC_IP_CHECKERS\"),\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.monitoring.UptimeCheckConfig;\nimport com.pulumi.gcp.monitoring.UptimeCheckConfigArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigHttpCheckArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigMonitoredResourceArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigContentMatcherArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigContentMatcherJsonPathMatcherArgs;\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 statusCode = new UptimeCheckConfig(\"statusCode\", UptimeCheckConfigArgs.builder()\n .displayName(\"http-uptime-check\")\n .timeout(\"60s\")\n .httpCheck(UptimeCheckConfigHttpCheckArgs.builder()\n .path(\"some-path\")\n .port(\"8010\")\n .requestMethod(\"POST\")\n .contentType(\"URL_ENCODED\")\n .body(\"Zm9vJTI1M0RiYXI=\")\n .acceptedResponseStatusCodes( \n UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArgs.builder()\n .statusClass(\"STATUS_CLASS_2XX\")\n .build(),\n UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArgs.builder()\n .statusValue(301)\n .build(),\n UptimeCheckConfigHttpCheckAcceptedResponseStatusCodeArgs.builder()\n .statusValue(302)\n .build())\n .build())\n .monitoredResource(UptimeCheckConfigMonitoredResourceArgs.builder()\n .type(\"uptime_url\")\n .labels(Map.ofEntries(\n Map.entry(\"project_id\", \"my-project-name\"),\n Map.entry(\"host\", \"192.168.1.1\")\n ))\n .build())\n .contentMatchers(UptimeCheckConfigContentMatcherArgs.builder()\n .content(\"\\\"example\\\"\")\n .matcher(\"MATCHES_JSON_PATH\")\n .jsonPathMatcher(UptimeCheckConfigContentMatcherJsonPathMatcherArgs.builder()\n .jsonPath(\"$.path\")\n .jsonMatcher(\"EXACT_MATCH\")\n .build())\n .build())\n .checkerType(\"STATIC_IP_CHECKERS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n statusCode:\n type: gcp:monitoring:UptimeCheckConfig\n name: status_code\n properties:\n displayName: http-uptime-check\n timeout: 60s\n httpCheck:\n path: some-path\n port: '8010'\n requestMethod: POST\n contentType: URL_ENCODED\n body: Zm9vJTI1M0RiYXI=\n acceptedResponseStatusCodes:\n - statusClass: STATUS_CLASS_2XX\n - statusValue: 301\n - statusValue: 302\n monitoredResource:\n type: uptime_url\n labels:\n project_id: my-project-name\n host: 192.168.1.1\n contentMatchers:\n - content: '\"example\"'\n matcher: MATCHES_JSON_PATH\n jsonPathMatcher:\n jsonPath: $.path\n jsonMatcher: EXACT_MATCH\n checkerType: STATIC_IP_CHECKERS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Uptime Check Config Https\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst https = new gcp.monitoring.UptimeCheckConfig(\"https\", {\n displayName: \"https-uptime-check\",\n timeout: \"60s\",\n httpCheck: {\n path: \"/some-path\",\n port: 443,\n useSsl: true,\n validateSsl: true,\n serviceAgentAuthentication: {\n type: \"OIDC_TOKEN\",\n },\n },\n monitoredResource: {\n type: \"uptime_url\",\n labels: {\n project_id: \"my-project-name\",\n host: \"192.168.1.1\",\n },\n },\n contentMatchers: [{\n content: \"example\",\n matcher: \"MATCHES_JSON_PATH\",\n jsonPathMatcher: {\n jsonPath: \"$.path\",\n jsonMatcher: \"REGEX_MATCH\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttps = gcp.monitoring.UptimeCheckConfig(\"https\",\n display_name=\"https-uptime-check\",\n timeout=\"60s\",\n http_check={\n \"path\": \"/some-path\",\n \"port\": 443,\n \"use_ssl\": True,\n \"validate_ssl\": True,\n \"service_agent_authentication\": {\n \"type\": \"OIDC_TOKEN\",\n },\n },\n monitored_resource={\n \"type\": \"uptime_url\",\n \"labels\": {\n \"project_id\": \"my-project-name\",\n \"host\": \"192.168.1.1\",\n },\n },\n content_matchers=[{\n \"content\": \"example\",\n \"matcher\": \"MATCHES_JSON_PATH\",\n \"json_path_matcher\": {\n \"json_path\": \"$.path\",\n \"json_matcher\": \"REGEX_MATCH\",\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 https = new Gcp.Monitoring.UptimeCheckConfig(\"https\", new()\n {\n DisplayName = \"https-uptime-check\",\n Timeout = \"60s\",\n HttpCheck = new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckArgs\n {\n Path = \"/some-path\",\n Port = 443,\n UseSsl = true,\n ValidateSsl = true,\n ServiceAgentAuthentication = new Gcp.Monitoring.Inputs.UptimeCheckConfigHttpCheckServiceAgentAuthenticationArgs\n {\n Type = \"OIDC_TOKEN\",\n },\n },\n MonitoredResource = new Gcp.Monitoring.Inputs.UptimeCheckConfigMonitoredResourceArgs\n {\n Type = \"uptime_url\",\n Labels = \n {\n { \"project_id\", \"my-project-name\" },\n { \"host\", \"192.168.1.1\" },\n },\n },\n ContentMatchers = new[]\n {\n new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherArgs\n {\n Content = \"example\",\n Matcher = \"MATCHES_JSON_PATH\",\n JsonPathMatcher = new Gcp.Monitoring.Inputs.UptimeCheckConfigContentMatcherJsonPathMatcherArgs\n {\n JsonPath = \"$.path\",\n JsonMatcher = \"REGEX_MATCH\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.NewUptimeCheckConfig(ctx, \"https\", \u0026monitoring.UptimeCheckConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"https-uptime-check\"),\n\t\t\tTimeout: pulumi.String(\"60s\"),\n\t\t\tHttpCheck: \u0026monitoring.UptimeCheckConfigHttpCheckArgs{\n\t\t\t\tPath: pulumi.String(\"/some-path\"),\n\t\t\t\tPort: pulumi.Int(443),\n\t\t\t\tUseSsl: pulumi.Bool(true),\n\t\t\t\tValidateSsl: pulumi.Bool(true),\n\t\t\t\tServiceAgentAuthentication: \u0026monitoring.UptimeCheckConfigHttpCheckServiceAgentAuthenticationArgs{\n\t\t\t\t\tType: pulumi.String(\"OIDC_TOKEN\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMonitoredResource: \u0026monitoring.UptimeCheckConfigMonitoredResourceArgs{\n\t\t\t\tType: pulumi.String(\"uptime_url\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"project_id\": pulumi.String(\"my-project-name\"),\n\t\t\t\t\t\"host\": pulumi.String(\"192.168.1.1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tContentMatchers: monitoring.UptimeCheckConfigContentMatcherArray{\n\t\t\t\t\u0026monitoring.UptimeCheckConfigContentMatcherArgs{\n\t\t\t\t\tContent: pulumi.String(\"example\"),\n\t\t\t\t\tMatcher: pulumi.String(\"MATCHES_JSON_PATH\"),\n\t\t\t\t\tJsonPathMatcher: \u0026monitoring.UptimeCheckConfigContentMatcherJsonPathMatcherArgs{\n\t\t\t\t\t\tJsonPath: pulumi.String(\"$.path\"),\n\t\t\t\t\t\tJsonMatcher: pulumi.String(\"REGEX_MATCH\"),\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.monitoring.UptimeCheckConfig;\nimport com.pulumi.gcp.monitoring.UptimeCheckConfigArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigHttpCheckArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigHttpCheckServiceAgentAuthenticationArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigMonitoredResourceArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigContentMatcherArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigContentMatcherJsonPathMatcherArgs;\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 https = new UptimeCheckConfig(\"https\", UptimeCheckConfigArgs.builder()\n .displayName(\"https-uptime-check\")\n .timeout(\"60s\")\n .httpCheck(UptimeCheckConfigHttpCheckArgs.builder()\n .path(\"/some-path\")\n .port(\"443\")\n .useSsl(true)\n .validateSsl(true)\n .serviceAgentAuthentication(UptimeCheckConfigHttpCheckServiceAgentAuthenticationArgs.builder()\n .type(\"OIDC_TOKEN\")\n .build())\n .build())\n .monitoredResource(UptimeCheckConfigMonitoredResourceArgs.builder()\n .type(\"uptime_url\")\n .labels(Map.ofEntries(\n Map.entry(\"project_id\", \"my-project-name\"),\n Map.entry(\"host\", \"192.168.1.1\")\n ))\n .build())\n .contentMatchers(UptimeCheckConfigContentMatcherArgs.builder()\n .content(\"example\")\n .matcher(\"MATCHES_JSON_PATH\")\n .jsonPathMatcher(UptimeCheckConfigContentMatcherJsonPathMatcherArgs.builder()\n .jsonPath(\"$.path\")\n .jsonMatcher(\"REGEX_MATCH\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n https:\n type: gcp:monitoring:UptimeCheckConfig\n properties:\n displayName: https-uptime-check\n timeout: 60s\n httpCheck:\n path: /some-path\n port: '443'\n useSsl: true\n validateSsl: true\n serviceAgentAuthentication:\n type: OIDC_TOKEN\n monitoredResource:\n type: uptime_url\n labels:\n project_id: my-project-name\n host: 192.168.1.1\n contentMatchers:\n - content: example\n matcher: MATCHES_JSON_PATH\n jsonPathMatcher:\n jsonPath: $.path\n jsonMatcher: REGEX_MATCH\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Uptime Check Tcp\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst check = new gcp.monitoring.Group(\"check\", {\n displayName: \"uptime-check-group\",\n filter: \"resource.metadata.name=has_substring(\\\"foo\\\")\",\n});\nconst tcpGroup = new gcp.monitoring.UptimeCheckConfig(\"tcp_group\", {\n displayName: \"tcp-uptime-check\",\n timeout: \"60s\",\n tcpCheck: {\n port: 888,\n pingConfig: {\n pingsCount: 2,\n },\n },\n resourceGroup: {\n resourceType: \"INSTANCE\",\n groupId: check.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncheck = gcp.monitoring.Group(\"check\",\n display_name=\"uptime-check-group\",\n filter=\"resource.metadata.name=has_substring(\\\"foo\\\")\")\ntcp_group = gcp.monitoring.UptimeCheckConfig(\"tcp_group\",\n display_name=\"tcp-uptime-check\",\n timeout=\"60s\",\n tcp_check={\n \"port\": 888,\n \"ping_config\": {\n \"pings_count\": 2,\n },\n },\n resource_group={\n \"resource_type\": \"INSTANCE\",\n \"group_id\": check.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 check = new Gcp.Monitoring.Group(\"check\", new()\n {\n DisplayName = \"uptime-check-group\",\n Filter = \"resource.metadata.name=has_substring(\\\"foo\\\")\",\n });\n\n var tcpGroup = new Gcp.Monitoring.UptimeCheckConfig(\"tcp_group\", new()\n {\n DisplayName = \"tcp-uptime-check\",\n Timeout = \"60s\",\n TcpCheck = new Gcp.Monitoring.Inputs.UptimeCheckConfigTcpCheckArgs\n {\n Port = 888,\n PingConfig = new Gcp.Monitoring.Inputs.UptimeCheckConfigTcpCheckPingConfigArgs\n {\n PingsCount = 2,\n },\n },\n ResourceGroup = new Gcp.Monitoring.Inputs.UptimeCheckConfigResourceGroupArgs\n {\n ResourceType = \"INSTANCE\",\n GroupId = check.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcheck, err := monitoring.NewGroup(ctx, \"check\", \u0026monitoring.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"uptime-check-group\"),\n\t\t\tFilter: pulumi.String(\"resource.metadata.name=has_substring(\\\"foo\\\")\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewUptimeCheckConfig(ctx, \"tcp_group\", \u0026monitoring.UptimeCheckConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"tcp-uptime-check\"),\n\t\t\tTimeout: pulumi.String(\"60s\"),\n\t\t\tTcpCheck: \u0026monitoring.UptimeCheckConfigTcpCheckArgs{\n\t\t\t\tPort: pulumi.Int(888),\n\t\t\t\tPingConfig: \u0026monitoring.UptimeCheckConfigTcpCheckPingConfigArgs{\n\t\t\t\t\tPingsCount: pulumi.Int(2),\n\t\t\t\t},\n\t\t\t},\n\t\t\tResourceGroup: \u0026monitoring.UptimeCheckConfigResourceGroupArgs{\n\t\t\t\tResourceType: pulumi.String(\"INSTANCE\"),\n\t\t\t\tGroupId: check.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.monitoring.Group;\nimport com.pulumi.gcp.monitoring.GroupArgs;\nimport com.pulumi.gcp.monitoring.UptimeCheckConfig;\nimport com.pulumi.gcp.monitoring.UptimeCheckConfigArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigTcpCheckArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigTcpCheckPingConfigArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigResourceGroupArgs;\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 check = new Group(\"check\", GroupArgs.builder()\n .displayName(\"uptime-check-group\")\n .filter(\"resource.metadata.name=has_substring(\\\"foo\\\")\")\n .build());\n\n var tcpGroup = new UptimeCheckConfig(\"tcpGroup\", UptimeCheckConfigArgs.builder()\n .displayName(\"tcp-uptime-check\")\n .timeout(\"60s\")\n .tcpCheck(UptimeCheckConfigTcpCheckArgs.builder()\n .port(888)\n .pingConfig(UptimeCheckConfigTcpCheckPingConfigArgs.builder()\n .pingsCount(2)\n .build())\n .build())\n .resourceGroup(UptimeCheckConfigResourceGroupArgs.builder()\n .resourceType(\"INSTANCE\")\n .groupId(check.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tcpGroup:\n type: gcp:monitoring:UptimeCheckConfig\n name: tcp_group\n properties:\n displayName: tcp-uptime-check\n timeout: 60s\n tcpCheck:\n port: 888\n pingConfig:\n pingsCount: 2\n resourceGroup:\n resourceType: INSTANCE\n groupId: ${check.name}\n check:\n type: gcp:monitoring:Group\n properties:\n displayName: uptime-check-group\n filter: resource.metadata.name=has_substring(\"foo\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Uptime Check Config Synthetic Monitor\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"my-project-name-gcf-source\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"synthetic-fn-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"synthetic_function\",\n location: \"us-central1\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"SyntheticFunction\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\nconst syntheticMonitor = new gcp.monitoring.UptimeCheckConfig(\"synthetic_monitor\", {\n displayName: \"synthetic_monitor\",\n timeout: \"60s\",\n syntheticMonitor: {\n cloudFunctionV2: {\n name: _function.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"my-project-name-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"synthetic-fn-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"synthetic_function\",\n location=\"us-central1\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"SyntheticFunction\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n })\nsynthetic_monitor = gcp.monitoring.UptimeCheckConfig(\"synthetic_monitor\",\n display_name=\"synthetic_monitor\",\n timeout=\"60s\",\n synthetic_monitor={\n \"cloud_function_v2\": {\n \"name\": function.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 bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"my-project-name-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"synthetic-fn-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"synthetic_function\",\n Location = \"us-central1\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"SyntheticFunction\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n var syntheticMonitor = new Gcp.Monitoring.UptimeCheckConfig(\"synthetic_monitor\", new()\n {\n DisplayName = \"synthetic_monitor\",\n Timeout = \"60s\",\n SyntheticMonitor = new Gcp.Monitoring.Inputs.UptimeCheckConfigSyntheticMonitorArgs\n {\n CloudFunctionV2 = new Gcp.Monitoring.Inputs.UptimeCheckConfigSyntheticMonitorCloudFunctionV2Args\n {\n Name = function.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-project-name-gcf-source\"),\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\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"synthetic-fn-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunction, err := cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"synthetic_function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"SyntheticFunction\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewUptimeCheckConfig(ctx, \"synthetic_monitor\", \u0026monitoring.UptimeCheckConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"synthetic_monitor\"),\n\t\t\tTimeout: pulumi.String(\"60s\"),\n\t\t\tSyntheticMonitor: \u0026monitoring.UptimeCheckConfigSyntheticMonitorArgs{\n\t\t\t\tCloudFunctionV2: \u0026monitoring.UptimeCheckConfigSyntheticMonitorCloudFunctionV2Args{\n\t\t\t\t\tName: function.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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.monitoring.UptimeCheckConfig;\nimport com.pulumi.gcp.monitoring.UptimeCheckConfigArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigSyntheticMonitorArgs;\nimport com.pulumi.gcp.monitoring.inputs.UptimeCheckConfigSyntheticMonitorCloudFunctionV2Args;\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 .name(\"my-project-name-gcf-source\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"synthetic-fn-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"synthetic_function\")\n .location(\"us-central1\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"SyntheticFunction\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n var syntheticMonitor = new UptimeCheckConfig(\"syntheticMonitor\", UptimeCheckConfigArgs.builder()\n .displayName(\"synthetic_monitor\")\n .timeout(\"60s\")\n .syntheticMonitor(UptimeCheckConfigSyntheticMonitorArgs.builder()\n .cloudFunctionV2(UptimeCheckConfigSyntheticMonitorCloudFunctionV2Args.builder()\n .name(function.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: my-project-name-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: synthetic-fn-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: synthetic_function\n location: us-central1\n buildConfig:\n runtime: nodejs16\n entryPoint: SyntheticFunction\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n syntheticMonitor:\n type: gcp:monitoring:UptimeCheckConfig\n name: synthetic_monitor\n properties:\n displayName: synthetic_monitor\n timeout: 60s\n syntheticMonitor:\n cloudFunctionV2:\n name: ${function.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUptimeCheckConfig can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, UptimeCheckConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:monitoring/uptimeCheckConfig:UptimeCheckConfig default {{name}}\n```\n\n", "properties": { "checkerType": { "type": "string", @@ -214223,7 +214223,7 @@ } }, "gcp:netapp/backup:Backup": { - "description": "NetApp Volumes supports volume backups, which are copies of your volumes\nstored independently from the volume. Backups are stored in backup vaults,\nwhich are containers for backups. If a volume is lost or deleted, you can\nuse backups to restore your data to a new volume.\n\nWhen you create the first backup of a volume, all of the volume's used\ndata is sent to the backup vault. Subsequent backups of the same volume\nonly include data that has changed from the previous backup. This allows\nfor fast incremental-forever backups and reduces the required capacity\ninside the backup vault.\n\nYou can create manual and scheduled backups. Manual backups can be taken\nfrom a volume or from an existing volume snapshot. Scheduled backups\nrequire a backup policy.\n\n\nTo get more information about backup, see:\n\n* [API documentation](https://cloud.google.com/netapp/volumes/docs/reference/rest/v1/projects.locations.backupVaults.backups)\n* How-to Guides\n * [Documentation](https://cloud.google.com/netapp/volumes/docs/protect-data/about-volume-backups)\n\n## Example Usage\n\n### Netapp Backup\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getNetwork({\n name: \"\",\n});\nconst defaultStoragePool = new gcp.netapp.StoragePool(\"default\", {\n name: \"backup-pool\",\n location: \"us-central1\",\n serviceLevel: \"PREMIUM\",\n capacityGib: \"2048\",\n network: _default.then(_default =\u003e _default.id),\n});\nconst defaultBackupVault = new gcp.netapp.BackupVault(\"default\", {\n name: \"backup-vault\",\n location: defaultStoragePool.location,\n});\nconst defaultVolume = new gcp.netapp.Volume(\"default\", {\n name: \"backup-volume\",\n location: defaultStoragePool.location,\n capacityGib: \"100\",\n shareName: \"backup-volume\",\n storagePool: defaultStoragePool.name,\n protocols: [\"NFSV3\"],\n deletionPolicy: \"FORCE\",\n backupConfig: {\n backupVault: defaultBackupVault.id,\n },\n});\nconst testBackup = new gcp.netapp.Backup(\"test_backup\", {\n name: \"test-backup\",\n location: defaultBackupVault.location,\n vaultName: defaultBackupVault.name,\n sourceVolume: defaultVolume.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"\")\ndefault_storage_pool = gcp.netapp.StoragePool(\"default\",\n name=\"backup-pool\",\n location=\"us-central1\",\n service_level=\"PREMIUM\",\n capacity_gib=\"2048\",\n network=default.id)\ndefault_backup_vault = gcp.netapp.BackupVault(\"default\",\n name=\"backup-vault\",\n location=default_storage_pool.location)\ndefault_volume = gcp.netapp.Volume(\"default\",\n name=\"backup-volume\",\n location=default_storage_pool.location,\n capacity_gib=\"100\",\n share_name=\"backup-volume\",\n storage_pool=default_storage_pool.name,\n protocols=[\"NFSV3\"],\n deletion_policy=\"FORCE\",\n backup_config={\n \"backupVault\": default_backup_vault.id,\n })\ntest_backup = gcp.netapp.Backup(\"test_backup\",\n name=\"test-backup\",\n location=default_backup_vault.location,\n vault_name=default_backup_vault.name,\n source_volume=default_volume.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 @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"\",\n });\n\n var defaultStoragePool = new Gcp.Netapp.StoragePool(\"default\", new()\n {\n Name = \"backup-pool\",\n Location = \"us-central1\",\n ServiceLevel = \"PREMIUM\",\n CapacityGib = \"2048\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n });\n\n var defaultBackupVault = new Gcp.Netapp.BackupVault(\"default\", new()\n {\n Name = \"backup-vault\",\n Location = defaultStoragePool.Location,\n });\n\n var defaultVolume = new Gcp.Netapp.Volume(\"default\", new()\n {\n Name = \"backup-volume\",\n Location = defaultStoragePool.Location,\n CapacityGib = \"100\",\n ShareName = \"backup-volume\",\n StoragePool = defaultStoragePool.Name,\n Protocols = new[]\n {\n \"NFSV3\",\n },\n DeletionPolicy = \"FORCE\",\n BackupConfig = new Gcp.Netapp.Inputs.VolumeBackupConfigArgs\n {\n BackupVault = defaultBackupVault.Id,\n },\n });\n\n var testBackup = new Gcp.Netapp.Backup(\"test_backup\", new()\n {\n Name = \"test-backup\",\n Location = defaultBackupVault.Location,\n VaultName = defaultBackupVault.Name,\n SourceVolume = defaultVolume.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/netapp\"\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_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultStoragePool, err := netapp.NewStoragePool(ctx, \"default\", \u0026netapp.StoragePoolArgs{\n\t\t\tName: pulumi.String(\"backup-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceLevel: pulumi.String(\"PREMIUM\"),\n\t\t\tCapacityGib: pulumi.String(\"2048\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackupVault, err := netapp.NewBackupVault(ctx, \"default\", \u0026netapp.BackupVaultArgs{\n\t\t\tName: pulumi.String(\"backup-vault\"),\n\t\t\tLocation: defaultStoragePool.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultVolume, err := netapp.NewVolume(ctx, \"default\", \u0026netapp.VolumeArgs{\n\t\t\tName: pulumi.String(\"backup-volume\"),\n\t\t\tLocation: defaultStoragePool.Location,\n\t\t\tCapacityGib: pulumi.String(\"100\"),\n\t\t\tShareName: pulumi.String(\"backup-volume\"),\n\t\t\tStoragePool: defaultStoragePool.Name,\n\t\t\tProtocols: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"NFSV3\"),\n\t\t\t},\n\t\t\tDeletionPolicy: pulumi.String(\"FORCE\"),\n\t\t\tBackupConfig: \u0026netapp.VolumeBackupConfigArgs{\n\t\t\t\tBackupVault: defaultBackupVault.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = netapp.NewBackup(ctx, \"test_backup\", \u0026netapp.BackupArgs{\n\t\t\tName: pulumi.String(\"test-backup\"),\n\t\t\tLocation: defaultBackupVault.Location,\n\t\t\tVaultName: defaultBackupVault.Name,\n\t\t\tSourceVolume: defaultVolume.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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.netapp.StoragePool;\nimport com.pulumi.gcp.netapp.StoragePoolArgs;\nimport com.pulumi.gcp.netapp.BackupVault;\nimport com.pulumi.gcp.netapp.BackupVaultArgs;\nimport com.pulumi.gcp.netapp.Volume;\nimport com.pulumi.gcp.netapp.VolumeArgs;\nimport com.pulumi.gcp.netapp.inputs.VolumeBackupConfigArgs;\nimport com.pulumi.gcp.netapp.Backup;\nimport com.pulumi.gcp.netapp.BackupArgs;\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 default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"\")\n .build());\n\n var defaultStoragePool = new StoragePool(\"defaultStoragePool\", StoragePoolArgs.builder()\n .name(\"backup-pool\")\n .location(\"us-central1\")\n .serviceLevel(\"PREMIUM\")\n .capacityGib(\"2048\")\n .network(default_.id())\n .build());\n\n var defaultBackupVault = new BackupVault(\"defaultBackupVault\", BackupVaultArgs.builder()\n .name(\"backup-vault\")\n .location(defaultStoragePool.location())\n .build());\n\n var defaultVolume = new Volume(\"defaultVolume\", VolumeArgs.builder()\n .name(\"backup-volume\")\n .location(defaultStoragePool.location())\n .capacityGib(\"100\")\n .shareName(\"backup-volume\")\n .storagePool(defaultStoragePool.name())\n .protocols(\"NFSV3\")\n .deletionPolicy(\"FORCE\")\n .backupConfig(VolumeBackupConfigArgs.builder()\n .backupVault(defaultBackupVault.id())\n .build())\n .build());\n\n var testBackup = new Backup(\"testBackup\", BackupArgs.builder()\n .name(\"test-backup\")\n .location(defaultBackupVault.location())\n .vaultName(defaultBackupVault.name())\n .sourceVolume(defaultVolume.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultStoragePool:\n type: gcp:netapp:StoragePool\n name: default\n properties:\n name: backup-pool\n location: us-central1\n serviceLevel: PREMIUM\n capacityGib: '2048'\n network: ${default.id}\n defaultVolume:\n type: gcp:netapp:Volume\n name: default\n properties:\n name: backup-volume\n location: ${defaultStoragePool.location}\n capacityGib: '100'\n shareName: backup-volume\n storagePool: ${defaultStoragePool.name}\n protocols:\n - NFSV3\n deletionPolicy: FORCE\n backupConfig:\n backupVault: ${defaultBackupVault.id}\n defaultBackupVault:\n type: gcp:netapp:BackupVault\n name: default\n properties:\n name: backup-vault\n location: ${defaultStoragePool.location}\n testBackup:\n type: gcp:netapp:Backup\n name: test_backup\n properties:\n name: test-backup\n location: ${defaultBackupVault.location}\n vaultName: ${defaultBackupVault.name}\n sourceVolume: ${defaultVolume.id}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name:\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nbackup can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/backupVaults/{{vault_name}}/backups/{{name}}`\n\n* `{{project}}/{{location}}/{{vault_name}}/{{name}}`\n\n* `{{location}}/{{vault_name}}/{{name}}`\n\nWhen using the `pulumi import` command, backup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:netapp/backup:Backup default projects/{{project}}/locations/{{location}}/backupVaults/{{vault_name}}/backups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/backup:Backup default {{project}}/{{location}}/{{vault_name}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/backup:Backup default {{location}}/{{vault_name}}/{{name}}\n```\n\n", + "description": "NetApp Volumes supports volume backups, which are copies of your volumes\nstored independently from the volume. Backups are stored in backup vaults,\nwhich are containers for backups. If a volume is lost or deleted, you can\nuse backups to restore your data to a new volume.\n\nWhen you create the first backup of a volume, all of the volume's used\ndata is sent to the backup vault. Subsequent backups of the same volume\nonly include data that has changed from the previous backup. This allows\nfor fast incremental-forever backups and reduces the required capacity\ninside the backup vault.\n\nYou can create manual and scheduled backups. Manual backups can be taken\nfrom a volume or from an existing volume snapshot. Scheduled backups\nrequire a backup policy.\n\n\nTo get more information about backup, see:\n\n* [API documentation](https://cloud.google.com/netapp/volumes/docs/reference/rest/v1/projects.locations.backupVaults.backups)\n* How-to Guides\n * [Documentation](https://cloud.google.com/netapp/volumes/docs/protect-data/about-volume-backups)\n\n## Example Usage\n\n### Netapp Backup\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getNetwork({\n name: \"\",\n});\nconst defaultStoragePool = new gcp.netapp.StoragePool(\"default\", {\n name: \"backup-pool\",\n location: \"us-central1\",\n serviceLevel: \"PREMIUM\",\n capacityGib: \"2048\",\n network: _default.then(_default =\u003e _default.id),\n});\nconst defaultBackupVault = new gcp.netapp.BackupVault(\"default\", {\n name: \"backup-vault\",\n location: defaultStoragePool.location,\n});\nconst defaultVolume = new gcp.netapp.Volume(\"default\", {\n name: \"backup-volume\",\n location: defaultStoragePool.location,\n capacityGib: \"100\",\n shareName: \"backup-volume\",\n storagePool: defaultStoragePool.name,\n protocols: [\"NFSV3\"],\n deletionPolicy: \"FORCE\",\n backupConfig: {\n backupVault: defaultBackupVault.id,\n },\n});\nconst testBackup = new gcp.netapp.Backup(\"test_backup\", {\n name: \"test-backup\",\n location: defaultBackupVault.location,\n vaultName: defaultBackupVault.name,\n sourceVolume: defaultVolume.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"\")\ndefault_storage_pool = gcp.netapp.StoragePool(\"default\",\n name=\"backup-pool\",\n location=\"us-central1\",\n service_level=\"PREMIUM\",\n capacity_gib=\"2048\",\n network=default.id)\ndefault_backup_vault = gcp.netapp.BackupVault(\"default\",\n name=\"backup-vault\",\n location=default_storage_pool.location)\ndefault_volume = gcp.netapp.Volume(\"default\",\n name=\"backup-volume\",\n location=default_storage_pool.location,\n capacity_gib=\"100\",\n share_name=\"backup-volume\",\n storage_pool=default_storage_pool.name,\n protocols=[\"NFSV3\"],\n deletion_policy=\"FORCE\",\n backup_config={\n \"backup_vault\": default_backup_vault.id,\n })\ntest_backup = gcp.netapp.Backup(\"test_backup\",\n name=\"test-backup\",\n location=default_backup_vault.location,\n vault_name=default_backup_vault.name,\n source_volume=default_volume.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 @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"\",\n });\n\n var defaultStoragePool = new Gcp.Netapp.StoragePool(\"default\", new()\n {\n Name = \"backup-pool\",\n Location = \"us-central1\",\n ServiceLevel = \"PREMIUM\",\n CapacityGib = \"2048\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n });\n\n var defaultBackupVault = new Gcp.Netapp.BackupVault(\"default\", new()\n {\n Name = \"backup-vault\",\n Location = defaultStoragePool.Location,\n });\n\n var defaultVolume = new Gcp.Netapp.Volume(\"default\", new()\n {\n Name = \"backup-volume\",\n Location = defaultStoragePool.Location,\n CapacityGib = \"100\",\n ShareName = \"backup-volume\",\n StoragePool = defaultStoragePool.Name,\n Protocols = new[]\n {\n \"NFSV3\",\n },\n DeletionPolicy = \"FORCE\",\n BackupConfig = new Gcp.Netapp.Inputs.VolumeBackupConfigArgs\n {\n BackupVault = defaultBackupVault.Id,\n },\n });\n\n var testBackup = new Gcp.Netapp.Backup(\"test_backup\", new()\n {\n Name = \"test-backup\",\n Location = defaultBackupVault.Location,\n VaultName = defaultBackupVault.Name,\n SourceVolume = defaultVolume.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/netapp\"\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_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultStoragePool, err := netapp.NewStoragePool(ctx, \"default\", \u0026netapp.StoragePoolArgs{\n\t\t\tName: pulumi.String(\"backup-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceLevel: pulumi.String(\"PREMIUM\"),\n\t\t\tCapacityGib: pulumi.String(\"2048\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackupVault, err := netapp.NewBackupVault(ctx, \"default\", \u0026netapp.BackupVaultArgs{\n\t\t\tName: pulumi.String(\"backup-vault\"),\n\t\t\tLocation: defaultStoragePool.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultVolume, err := netapp.NewVolume(ctx, \"default\", \u0026netapp.VolumeArgs{\n\t\t\tName: pulumi.String(\"backup-volume\"),\n\t\t\tLocation: defaultStoragePool.Location,\n\t\t\tCapacityGib: pulumi.String(\"100\"),\n\t\t\tShareName: pulumi.String(\"backup-volume\"),\n\t\t\tStoragePool: defaultStoragePool.Name,\n\t\t\tProtocols: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"NFSV3\"),\n\t\t\t},\n\t\t\tDeletionPolicy: pulumi.String(\"FORCE\"),\n\t\t\tBackupConfig: \u0026netapp.VolumeBackupConfigArgs{\n\t\t\t\tBackupVault: defaultBackupVault.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = netapp.NewBackup(ctx, \"test_backup\", \u0026netapp.BackupArgs{\n\t\t\tName: pulumi.String(\"test-backup\"),\n\t\t\tLocation: defaultBackupVault.Location,\n\t\t\tVaultName: defaultBackupVault.Name,\n\t\t\tSourceVolume: defaultVolume.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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.netapp.StoragePool;\nimport com.pulumi.gcp.netapp.StoragePoolArgs;\nimport com.pulumi.gcp.netapp.BackupVault;\nimport com.pulumi.gcp.netapp.BackupVaultArgs;\nimport com.pulumi.gcp.netapp.Volume;\nimport com.pulumi.gcp.netapp.VolumeArgs;\nimport com.pulumi.gcp.netapp.inputs.VolumeBackupConfigArgs;\nimport com.pulumi.gcp.netapp.Backup;\nimport com.pulumi.gcp.netapp.BackupArgs;\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 default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"\")\n .build());\n\n var defaultStoragePool = new StoragePool(\"defaultStoragePool\", StoragePoolArgs.builder()\n .name(\"backup-pool\")\n .location(\"us-central1\")\n .serviceLevel(\"PREMIUM\")\n .capacityGib(\"2048\")\n .network(default_.id())\n .build());\n\n var defaultBackupVault = new BackupVault(\"defaultBackupVault\", BackupVaultArgs.builder()\n .name(\"backup-vault\")\n .location(defaultStoragePool.location())\n .build());\n\n var defaultVolume = new Volume(\"defaultVolume\", VolumeArgs.builder()\n .name(\"backup-volume\")\n .location(defaultStoragePool.location())\n .capacityGib(\"100\")\n .shareName(\"backup-volume\")\n .storagePool(defaultStoragePool.name())\n .protocols(\"NFSV3\")\n .deletionPolicy(\"FORCE\")\n .backupConfig(VolumeBackupConfigArgs.builder()\n .backupVault(defaultBackupVault.id())\n .build())\n .build());\n\n var testBackup = new Backup(\"testBackup\", BackupArgs.builder()\n .name(\"test-backup\")\n .location(defaultBackupVault.location())\n .vaultName(defaultBackupVault.name())\n .sourceVolume(defaultVolume.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultStoragePool:\n type: gcp:netapp:StoragePool\n name: default\n properties:\n name: backup-pool\n location: us-central1\n serviceLevel: PREMIUM\n capacityGib: '2048'\n network: ${default.id}\n defaultVolume:\n type: gcp:netapp:Volume\n name: default\n properties:\n name: backup-volume\n location: ${defaultStoragePool.location}\n capacityGib: '100'\n shareName: backup-volume\n storagePool: ${defaultStoragePool.name}\n protocols:\n - NFSV3\n deletionPolicy: FORCE\n backupConfig:\n backupVault: ${defaultBackupVault.id}\n defaultBackupVault:\n type: gcp:netapp:BackupVault\n name: default\n properties:\n name: backup-vault\n location: ${defaultStoragePool.location}\n testBackup:\n type: gcp:netapp:Backup\n name: test_backup\n properties:\n name: test-backup\n location: ${defaultBackupVault.location}\n vaultName: ${defaultBackupVault.name}\n sourceVolume: ${defaultVolume.id}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name:\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nbackup can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/backupVaults/{{vault_name}}/backups/{{name}}`\n\n* `{{project}}/{{location}}/{{vault_name}}/{{name}}`\n\n* `{{location}}/{{vault_name}}/{{name}}`\n\nWhen using the `pulumi import` command, backup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:netapp/backup:Backup default projects/{{project}}/locations/{{location}}/backupVaults/{{vault_name}}/backups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/backup:Backup default {{project}}/{{location}}/{{vault_name}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/backup:Backup default {{location}}/{{vault_name}}/{{name}}\n```\n\n", "properties": { "backupType": { "type": "string", @@ -215726,7 +215726,7 @@ } }, "gcp:netapp/volumeReplication:VolumeReplication": { - "description": "## Example Usage\n\n### Netapp Volume Replication Create\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getNetwork({\n name: \"test-network\",\n});\nconst sourcePool = new gcp.netapp.StoragePool(\"source_pool\", {\n name: \"source-pool\",\n location: \"us-central1\",\n serviceLevel: \"PREMIUM\",\n capacityGib: \"2048\",\n network: _default.then(_default =\u003e _default.id),\n});\nconst destinationPool = new gcp.netapp.StoragePool(\"destination_pool\", {\n name: \"destination-pool\",\n location: \"us-west2\",\n serviceLevel: \"PREMIUM\",\n capacityGib: \"2048\",\n network: _default.then(_default =\u003e _default.id),\n});\nconst sourceVolume = new gcp.netapp.Volume(\"source_volume\", {\n location: sourcePool.location,\n name: \"source-volume\",\n capacityGib: \"100\",\n shareName: \"source-volume\",\n storagePool: sourcePool.name,\n protocols: [\"NFSV3\"],\n deletionPolicy: \"FORCE\",\n});\nconst testReplication = new gcp.netapp.VolumeReplication(\"test_replication\", {\n location: sourceVolume.location,\n volumeName: sourceVolume.name,\n name: \"test-replication\",\n replicationSchedule: \"EVERY_10_MINUTES\",\n description: \"This is a replication resource\",\n destinationVolumeParameters: {\n storagePool: destinationPool.id,\n volumeId: \"destination-volume\",\n shareName: \"source-volume\",\n description: \"This is a replicated volume\",\n },\n deleteDestinationVolume: true,\n waitForMirror: true,\n}, {\n dependsOn: [sourceVolume],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"test-network\")\nsource_pool = gcp.netapp.StoragePool(\"source_pool\",\n name=\"source-pool\",\n location=\"us-central1\",\n service_level=\"PREMIUM\",\n capacity_gib=\"2048\",\n network=default.id)\ndestination_pool = gcp.netapp.StoragePool(\"destination_pool\",\n name=\"destination-pool\",\n location=\"us-west2\",\n service_level=\"PREMIUM\",\n capacity_gib=\"2048\",\n network=default.id)\nsource_volume = gcp.netapp.Volume(\"source_volume\",\n location=source_pool.location,\n name=\"source-volume\",\n capacity_gib=\"100\",\n share_name=\"source-volume\",\n storage_pool=source_pool.name,\n protocols=[\"NFSV3\"],\n deletion_policy=\"FORCE\")\ntest_replication = gcp.netapp.VolumeReplication(\"test_replication\",\n location=source_volume.location,\n volume_name=source_volume.name,\n name=\"test-replication\",\n replication_schedule=\"EVERY_10_MINUTES\",\n description=\"This is a replication resource\",\n destination_volume_parameters={\n \"storagePool\": destination_pool.id,\n \"volumeId\": \"destination-volume\",\n \"shareName\": \"source-volume\",\n \"description\": \"This is a replicated volume\",\n },\n delete_destination_volume=True,\n wait_for_mirror=True,\n opts = pulumi.ResourceOptions(depends_on=[source_volume]))\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 = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"test-network\",\n });\n\n var sourcePool = new Gcp.Netapp.StoragePool(\"source_pool\", new()\n {\n Name = \"source-pool\",\n Location = \"us-central1\",\n ServiceLevel = \"PREMIUM\",\n CapacityGib = \"2048\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n });\n\n var destinationPool = new Gcp.Netapp.StoragePool(\"destination_pool\", new()\n {\n Name = \"destination-pool\",\n Location = \"us-west2\",\n ServiceLevel = \"PREMIUM\",\n CapacityGib = \"2048\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n });\n\n var sourceVolume = new Gcp.Netapp.Volume(\"source_volume\", new()\n {\n Location = sourcePool.Location,\n Name = \"source-volume\",\n CapacityGib = \"100\",\n ShareName = \"source-volume\",\n StoragePool = sourcePool.Name,\n Protocols = new[]\n {\n \"NFSV3\",\n },\n DeletionPolicy = \"FORCE\",\n });\n\n var testReplication = new Gcp.Netapp.VolumeReplication(\"test_replication\", new()\n {\n Location = sourceVolume.Location,\n VolumeName = sourceVolume.Name,\n Name = \"test-replication\",\n ReplicationSchedule = \"EVERY_10_MINUTES\",\n Description = \"This is a replication resource\",\n DestinationVolumeParameters = new Gcp.Netapp.Inputs.VolumeReplicationDestinationVolumeParametersArgs\n {\n StoragePool = destinationPool.Id,\n VolumeId = \"destination-volume\",\n ShareName = \"source-volume\",\n Description = \"This is a replicated volume\",\n },\n DeleteDestinationVolume = true,\n WaitForMirror = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceVolume,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/netapp\"\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_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourcePool, err := netapp.NewStoragePool(ctx, \"source_pool\", \u0026netapp.StoragePoolArgs{\n\t\t\tName: pulumi.String(\"source-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceLevel: pulumi.String(\"PREMIUM\"),\n\t\t\tCapacityGib: pulumi.String(\"2048\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationPool, err := netapp.NewStoragePool(ctx, \"destination_pool\", \u0026netapp.StoragePoolArgs{\n\t\t\tName: pulumi.String(\"destination-pool\"),\n\t\t\tLocation: pulumi.String(\"us-west2\"),\n\t\t\tServiceLevel: pulumi.String(\"PREMIUM\"),\n\t\t\tCapacityGib: pulumi.String(\"2048\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceVolume, err := netapp.NewVolume(ctx, \"source_volume\", \u0026netapp.VolumeArgs{\n\t\t\tLocation: sourcePool.Location,\n\t\t\tName: pulumi.String(\"source-volume\"),\n\t\t\tCapacityGib: pulumi.String(\"100\"),\n\t\t\tShareName: pulumi.String(\"source-volume\"),\n\t\t\tStoragePool: sourcePool.Name,\n\t\t\tProtocols: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"NFSV3\"),\n\t\t\t},\n\t\t\tDeletionPolicy: pulumi.String(\"FORCE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = netapp.NewVolumeReplication(ctx, \"test_replication\", \u0026netapp.VolumeReplicationArgs{\n\t\t\tLocation: sourceVolume.Location,\n\t\t\tVolumeName: sourceVolume.Name,\n\t\t\tName: pulumi.String(\"test-replication\"),\n\t\t\tReplicationSchedule: pulumi.String(\"EVERY_10_MINUTES\"),\n\t\t\tDescription: pulumi.String(\"This is a replication resource\"),\n\t\t\tDestinationVolumeParameters: \u0026netapp.VolumeReplicationDestinationVolumeParametersArgs{\n\t\t\t\tStoragePool: destinationPool.ID(),\n\t\t\t\tVolumeId: pulumi.String(\"destination-volume\"),\n\t\t\t\tShareName: pulumi.String(\"source-volume\"),\n\t\t\t\tDescription: pulumi.String(\"This is a replicated volume\"),\n\t\t\t},\n\t\t\tDeleteDestinationVolume: pulumi.Bool(true),\n\t\t\tWaitForMirror: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceVolume,\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.netapp.StoragePool;\nimport com.pulumi.gcp.netapp.StoragePoolArgs;\nimport com.pulumi.gcp.netapp.Volume;\nimport com.pulumi.gcp.netapp.VolumeArgs;\nimport com.pulumi.gcp.netapp.VolumeReplication;\nimport com.pulumi.gcp.netapp.VolumeReplicationArgs;\nimport com.pulumi.gcp.netapp.inputs.VolumeReplicationDestinationVolumeParametersArgs;\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 default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"test-network\")\n .build());\n\n var sourcePool = new StoragePool(\"sourcePool\", StoragePoolArgs.builder()\n .name(\"source-pool\")\n .location(\"us-central1\")\n .serviceLevel(\"PREMIUM\")\n .capacityGib(2048)\n .network(default_.id())\n .build());\n\n var destinationPool = new StoragePool(\"destinationPool\", StoragePoolArgs.builder()\n .name(\"destination-pool\")\n .location(\"us-west2\")\n .serviceLevel(\"PREMIUM\")\n .capacityGib(2048)\n .network(default_.id())\n .build());\n\n var sourceVolume = new Volume(\"sourceVolume\", VolumeArgs.builder()\n .location(sourcePool.location())\n .name(\"source-volume\")\n .capacityGib(100)\n .shareName(\"source-volume\")\n .storagePool(sourcePool.name())\n .protocols(\"NFSV3\")\n .deletionPolicy(\"FORCE\")\n .build());\n\n var testReplication = new VolumeReplication(\"testReplication\", VolumeReplicationArgs.builder()\n .location(sourceVolume.location())\n .volumeName(sourceVolume.name())\n .name(\"test-replication\")\n .replicationSchedule(\"EVERY_10_MINUTES\")\n .description(\"This is a replication resource\")\n .destinationVolumeParameters(VolumeReplicationDestinationVolumeParametersArgs.builder()\n .storagePool(destinationPool.id())\n .volumeId(\"destination-volume\")\n .shareName(\"source-volume\")\n .description(\"This is a replicated volume\")\n .build())\n .deleteDestinationVolume(true)\n .waitForMirror(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceVolume)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sourcePool:\n type: gcp:netapp:StoragePool\n name: source_pool\n properties:\n name: source-pool\n location: us-central1\n serviceLevel: PREMIUM\n capacityGib: 2048\n network: ${default.id}\n destinationPool:\n type: gcp:netapp:StoragePool\n name: destination_pool\n properties:\n name: destination-pool\n location: us-west2\n serviceLevel: PREMIUM\n capacityGib: 2048\n network: ${default.id}\n sourceVolume:\n type: gcp:netapp:Volume\n name: source_volume\n properties:\n location: ${sourcePool.location}\n name: source-volume\n capacityGib: 100\n shareName: source-volume\n storagePool: ${sourcePool.name}\n protocols:\n - NFSV3\n deletionPolicy: FORCE\n testReplication:\n type: gcp:netapp:VolumeReplication\n name: test_replication\n properties:\n location: ${sourceVolume.location}\n volumeName: ${sourceVolume.name}\n name: test-replication\n replicationSchedule: EVERY_10_MINUTES\n description: This is a replication resource\n destinationVolumeParameters:\n storagePool: ${destinationPool.id}\n volumeId: destination-volume\n shareName: source-volume\n description: This is a replicated volume\n deleteDestinationVolume: true\n waitForMirror: true\n options:\n dependson:\n - ${sourceVolume}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVolumeReplication can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/volumes/{{volume_name}}/replications/{{name}}`\n\n* `{{project}}/{{location}}/{{volume_name}}/{{name}}`\n\n* `{{location}}/{{volume_name}}/{{name}}`\n\nWhen using the `pulumi import` command, VolumeReplication can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:netapp/volumeReplication:VolumeReplication default projects/{{project}}/locations/{{location}}/volumes/{{volume_name}}/replications/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/volumeReplication:VolumeReplication default {{project}}/{{location}}/{{volume_name}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/volumeReplication:VolumeReplication default {{location}}/{{volume_name}}/{{name}}\n```\n\n", + "description": "## Example Usage\n\n### Netapp Volume Replication Create\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getNetwork({\n name: \"test-network\",\n});\nconst sourcePool = new gcp.netapp.StoragePool(\"source_pool\", {\n name: \"source-pool\",\n location: \"us-central1\",\n serviceLevel: \"PREMIUM\",\n capacityGib: \"2048\",\n network: _default.then(_default =\u003e _default.id),\n});\nconst destinationPool = new gcp.netapp.StoragePool(\"destination_pool\", {\n name: \"destination-pool\",\n location: \"us-west2\",\n serviceLevel: \"PREMIUM\",\n capacityGib: \"2048\",\n network: _default.then(_default =\u003e _default.id),\n});\nconst sourceVolume = new gcp.netapp.Volume(\"source_volume\", {\n location: sourcePool.location,\n name: \"source-volume\",\n capacityGib: \"100\",\n shareName: \"source-volume\",\n storagePool: sourcePool.name,\n protocols: [\"NFSV3\"],\n deletionPolicy: \"FORCE\",\n});\nconst testReplication = new gcp.netapp.VolumeReplication(\"test_replication\", {\n location: sourceVolume.location,\n volumeName: sourceVolume.name,\n name: \"test-replication\",\n replicationSchedule: \"EVERY_10_MINUTES\",\n description: \"This is a replication resource\",\n destinationVolumeParameters: {\n storagePool: destinationPool.id,\n volumeId: \"destination-volume\",\n shareName: \"source-volume\",\n description: \"This is a replicated volume\",\n },\n deleteDestinationVolume: true,\n waitForMirror: true,\n}, {\n dependsOn: [sourceVolume],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"test-network\")\nsource_pool = gcp.netapp.StoragePool(\"source_pool\",\n name=\"source-pool\",\n location=\"us-central1\",\n service_level=\"PREMIUM\",\n capacity_gib=\"2048\",\n network=default.id)\ndestination_pool = gcp.netapp.StoragePool(\"destination_pool\",\n name=\"destination-pool\",\n location=\"us-west2\",\n service_level=\"PREMIUM\",\n capacity_gib=\"2048\",\n network=default.id)\nsource_volume = gcp.netapp.Volume(\"source_volume\",\n location=source_pool.location,\n name=\"source-volume\",\n capacity_gib=\"100\",\n share_name=\"source-volume\",\n storage_pool=source_pool.name,\n protocols=[\"NFSV3\"],\n deletion_policy=\"FORCE\")\ntest_replication = gcp.netapp.VolumeReplication(\"test_replication\",\n location=source_volume.location,\n volume_name=source_volume.name,\n name=\"test-replication\",\n replication_schedule=\"EVERY_10_MINUTES\",\n description=\"This is a replication resource\",\n destination_volume_parameters={\n \"storage_pool\": destination_pool.id,\n \"volume_id\": \"destination-volume\",\n \"share_name\": \"source-volume\",\n \"description\": \"This is a replicated volume\",\n },\n delete_destination_volume=True,\n wait_for_mirror=True,\n opts = pulumi.ResourceOptions(depends_on=[source_volume]))\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 = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"test-network\",\n });\n\n var sourcePool = new Gcp.Netapp.StoragePool(\"source_pool\", new()\n {\n Name = \"source-pool\",\n Location = \"us-central1\",\n ServiceLevel = \"PREMIUM\",\n CapacityGib = \"2048\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n });\n\n var destinationPool = new Gcp.Netapp.StoragePool(\"destination_pool\", new()\n {\n Name = \"destination-pool\",\n Location = \"us-west2\",\n ServiceLevel = \"PREMIUM\",\n CapacityGib = \"2048\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n });\n\n var sourceVolume = new Gcp.Netapp.Volume(\"source_volume\", new()\n {\n Location = sourcePool.Location,\n Name = \"source-volume\",\n CapacityGib = \"100\",\n ShareName = \"source-volume\",\n StoragePool = sourcePool.Name,\n Protocols = new[]\n {\n \"NFSV3\",\n },\n DeletionPolicy = \"FORCE\",\n });\n\n var testReplication = new Gcp.Netapp.VolumeReplication(\"test_replication\", new()\n {\n Location = sourceVolume.Location,\n VolumeName = sourceVolume.Name,\n Name = \"test-replication\",\n ReplicationSchedule = \"EVERY_10_MINUTES\",\n Description = \"This is a replication resource\",\n DestinationVolumeParameters = new Gcp.Netapp.Inputs.VolumeReplicationDestinationVolumeParametersArgs\n {\n StoragePool = destinationPool.Id,\n VolumeId = \"destination-volume\",\n ShareName = \"source-volume\",\n Description = \"This is a replicated volume\",\n },\n DeleteDestinationVolume = true,\n WaitForMirror = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceVolume,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/netapp\"\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_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourcePool, err := netapp.NewStoragePool(ctx, \"source_pool\", \u0026netapp.StoragePoolArgs{\n\t\t\tName: pulumi.String(\"source-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceLevel: pulumi.String(\"PREMIUM\"),\n\t\t\tCapacityGib: pulumi.String(\"2048\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationPool, err := netapp.NewStoragePool(ctx, \"destination_pool\", \u0026netapp.StoragePoolArgs{\n\t\t\tName: pulumi.String(\"destination-pool\"),\n\t\t\tLocation: pulumi.String(\"us-west2\"),\n\t\t\tServiceLevel: pulumi.String(\"PREMIUM\"),\n\t\t\tCapacityGib: pulumi.String(\"2048\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceVolume, err := netapp.NewVolume(ctx, \"source_volume\", \u0026netapp.VolumeArgs{\n\t\t\tLocation: sourcePool.Location,\n\t\t\tName: pulumi.String(\"source-volume\"),\n\t\t\tCapacityGib: pulumi.String(\"100\"),\n\t\t\tShareName: pulumi.String(\"source-volume\"),\n\t\t\tStoragePool: sourcePool.Name,\n\t\t\tProtocols: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"NFSV3\"),\n\t\t\t},\n\t\t\tDeletionPolicy: pulumi.String(\"FORCE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = netapp.NewVolumeReplication(ctx, \"test_replication\", \u0026netapp.VolumeReplicationArgs{\n\t\t\tLocation: sourceVolume.Location,\n\t\t\tVolumeName: sourceVolume.Name,\n\t\t\tName: pulumi.String(\"test-replication\"),\n\t\t\tReplicationSchedule: pulumi.String(\"EVERY_10_MINUTES\"),\n\t\t\tDescription: pulumi.String(\"This is a replication resource\"),\n\t\t\tDestinationVolumeParameters: \u0026netapp.VolumeReplicationDestinationVolumeParametersArgs{\n\t\t\t\tStoragePool: destinationPool.ID(),\n\t\t\t\tVolumeId: pulumi.String(\"destination-volume\"),\n\t\t\t\tShareName: pulumi.String(\"source-volume\"),\n\t\t\t\tDescription: pulumi.String(\"This is a replicated volume\"),\n\t\t\t},\n\t\t\tDeleteDestinationVolume: pulumi.Bool(true),\n\t\t\tWaitForMirror: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceVolume,\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.netapp.StoragePool;\nimport com.pulumi.gcp.netapp.StoragePoolArgs;\nimport com.pulumi.gcp.netapp.Volume;\nimport com.pulumi.gcp.netapp.VolumeArgs;\nimport com.pulumi.gcp.netapp.VolumeReplication;\nimport com.pulumi.gcp.netapp.VolumeReplicationArgs;\nimport com.pulumi.gcp.netapp.inputs.VolumeReplicationDestinationVolumeParametersArgs;\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 default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"test-network\")\n .build());\n\n var sourcePool = new StoragePool(\"sourcePool\", StoragePoolArgs.builder()\n .name(\"source-pool\")\n .location(\"us-central1\")\n .serviceLevel(\"PREMIUM\")\n .capacityGib(2048)\n .network(default_.id())\n .build());\n\n var destinationPool = new StoragePool(\"destinationPool\", StoragePoolArgs.builder()\n .name(\"destination-pool\")\n .location(\"us-west2\")\n .serviceLevel(\"PREMIUM\")\n .capacityGib(2048)\n .network(default_.id())\n .build());\n\n var sourceVolume = new Volume(\"sourceVolume\", VolumeArgs.builder()\n .location(sourcePool.location())\n .name(\"source-volume\")\n .capacityGib(100)\n .shareName(\"source-volume\")\n .storagePool(sourcePool.name())\n .protocols(\"NFSV3\")\n .deletionPolicy(\"FORCE\")\n .build());\n\n var testReplication = new VolumeReplication(\"testReplication\", VolumeReplicationArgs.builder()\n .location(sourceVolume.location())\n .volumeName(sourceVolume.name())\n .name(\"test-replication\")\n .replicationSchedule(\"EVERY_10_MINUTES\")\n .description(\"This is a replication resource\")\n .destinationVolumeParameters(VolumeReplicationDestinationVolumeParametersArgs.builder()\n .storagePool(destinationPool.id())\n .volumeId(\"destination-volume\")\n .shareName(\"source-volume\")\n .description(\"This is a replicated volume\")\n .build())\n .deleteDestinationVolume(true)\n .waitForMirror(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceVolume)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sourcePool:\n type: gcp:netapp:StoragePool\n name: source_pool\n properties:\n name: source-pool\n location: us-central1\n serviceLevel: PREMIUM\n capacityGib: 2048\n network: ${default.id}\n destinationPool:\n type: gcp:netapp:StoragePool\n name: destination_pool\n properties:\n name: destination-pool\n location: us-west2\n serviceLevel: PREMIUM\n capacityGib: 2048\n network: ${default.id}\n sourceVolume:\n type: gcp:netapp:Volume\n name: source_volume\n properties:\n location: ${sourcePool.location}\n name: source-volume\n capacityGib: 100\n shareName: source-volume\n storagePool: ${sourcePool.name}\n protocols:\n - NFSV3\n deletionPolicy: FORCE\n testReplication:\n type: gcp:netapp:VolumeReplication\n name: test_replication\n properties:\n location: ${sourceVolume.location}\n volumeName: ${sourceVolume.name}\n name: test-replication\n replicationSchedule: EVERY_10_MINUTES\n description: This is a replication resource\n destinationVolumeParameters:\n storagePool: ${destinationPool.id}\n volumeId: destination-volume\n shareName: source-volume\n description: This is a replicated volume\n deleteDestinationVolume: true\n waitForMirror: true\n options:\n dependson:\n - ${sourceVolume}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVolumeReplication can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/volumes/{{volume_name}}/replications/{{name}}`\n\n* `{{project}}/{{location}}/{{volume_name}}/{{name}}`\n\n* `{{location}}/{{volume_name}}/{{name}}`\n\nWhen using the `pulumi import` command, VolumeReplication can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:netapp/volumeReplication:VolumeReplication default projects/{{project}}/locations/{{location}}/volumes/{{volume_name}}/replications/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/volumeReplication:VolumeReplication default {{project}}/{{location}}/{{volume_name}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/volumeReplication:VolumeReplication default {{location}}/{{volume_name}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -216583,7 +216583,7 @@ } }, "gcp:networkconnectivity/policyBasedRoute:PolicyBasedRoute": { - "description": "Policy-based Routes are more powerful routes that route L4 network traffic based on not just destination IP, but also source IP, protocol and more. A Policy-based Route always take precedence when it conflicts with other types of routes.\n\n\nTo get more information about PolicyBasedRoute, see:\n\n* [API documentation](https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest/v1/projects.locations.global.policyBasedRoutes)\n* How-to Guides\n * [Use policy-based routes](https://cloud.google.com/vpc/docs/use-policy-based-routes#api)\n\n## Example Usage\n\n### Network Connectivity Policy Based Route Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myNetwork = new gcp.compute.Network(\"my_network\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst _default = new gcp.networkconnectivity.PolicyBasedRoute(\"default\", {\n name: \"my-pbr\",\n network: myNetwork.id,\n filter: {\n protocolVersion: \"IPV4\",\n },\n nextHopOtherRoutes: \"DEFAULT_ROUTING\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_network = gcp.compute.Network(\"my_network\",\n name=\"my-network\",\n auto_create_subnetworks=False)\ndefault = gcp.networkconnectivity.PolicyBasedRoute(\"default\",\n name=\"my-pbr\",\n network=my_network.id,\n filter={\n \"protocolVersion\": \"IPV4\",\n },\n next_hop_other_routes=\"DEFAULT_ROUTING\")\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 myNetwork = new Gcp.Compute.Network(\"my_network\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var @default = new Gcp.NetworkConnectivity.PolicyBasedRoute(\"default\", new()\n {\n Name = \"my-pbr\",\n Network = myNetwork.Id,\n Filter = new Gcp.NetworkConnectivity.Inputs.PolicyBasedRouteFilterArgs\n {\n ProtocolVersion = \"IPV4\",\n },\n NextHopOtherRoutes = \"DEFAULT_ROUTING\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyNetwork, err := compute.NewNetwork(ctx, \"my_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\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 = networkconnectivity.NewPolicyBasedRoute(ctx, \"default\", \u0026networkconnectivity.PolicyBasedRouteArgs{\n\t\t\tName: pulumi.String(\"my-pbr\"),\n\t\t\tNetwork: myNetwork.ID(),\n\t\t\tFilter: \u0026networkconnectivity.PolicyBasedRouteFilterArgs{\n\t\t\t\tProtocolVersion: pulumi.String(\"IPV4\"),\n\t\t\t},\n\t\t\tNextHopOtherRoutes: pulumi.String(\"DEFAULT_ROUTING\"),\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.networkconnectivity.PolicyBasedRoute;\nimport com.pulumi.gcp.networkconnectivity.PolicyBasedRouteArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.PolicyBasedRouteFilterArgs;\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 myNetwork = new Network(\"myNetwork\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var default_ = new PolicyBasedRoute(\"default\", PolicyBasedRouteArgs.builder()\n .name(\"my-pbr\")\n .network(myNetwork.id())\n .filter(PolicyBasedRouteFilterArgs.builder()\n .protocolVersion(\"IPV4\")\n .build())\n .nextHopOtherRoutes(\"DEFAULT_ROUTING\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkconnectivity:PolicyBasedRoute\n properties:\n name: my-pbr\n network: ${myNetwork.id}\n filter:\n protocolVersion: IPV4\n nextHopOtherRoutes: DEFAULT_ROUTING\n myNetwork:\n type: gcp:compute:Network\n name: my_network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Policy Based Route Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myNetwork = new gcp.compute.Network(\"my_network\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\n// This example substitutes an arbitrary internal IP for an internal network\n// load balancer for brevity. Consult https://cloud.google.com/load-balancing/docs/internal\n// to set one up.\nconst ilb = new gcp.compute.GlobalAddress(\"ilb\", {name: \"my-ilb\"});\nconst _default = new gcp.networkconnectivity.PolicyBasedRoute(\"default\", {\n name: \"my-pbr\",\n description: \"My routing policy\",\n network: myNetwork.id,\n priority: 2302,\n filter: {\n protocolVersion: \"IPV4\",\n ipProtocol: \"UDP\",\n srcRange: \"10.0.0.0/24\",\n destRange: \"0.0.0.0/0\",\n },\n nextHopIlbIp: ilb.address,\n virtualMachine: {\n tags: [\"restricted\"],\n },\n labels: {\n env: \"default\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_network = gcp.compute.Network(\"my_network\",\n name=\"my-network\",\n auto_create_subnetworks=False)\n# This example substitutes an arbitrary internal IP for an internal network\n# load balancer for brevity. Consult https://cloud.google.com/load-balancing/docs/internal\n# to set one up.\nilb = gcp.compute.GlobalAddress(\"ilb\", name=\"my-ilb\")\ndefault = gcp.networkconnectivity.PolicyBasedRoute(\"default\",\n name=\"my-pbr\",\n description=\"My routing policy\",\n network=my_network.id,\n priority=2302,\n filter={\n \"protocolVersion\": \"IPV4\",\n \"ipProtocol\": \"UDP\",\n \"srcRange\": \"10.0.0.0/24\",\n \"destRange\": \"0.0.0.0/0\",\n },\n next_hop_ilb_ip=ilb.address,\n virtual_machine={\n \"tags\": [\"restricted\"],\n },\n labels={\n \"env\": \"default\",\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 myNetwork = new Gcp.Compute.Network(\"my_network\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n // This example substitutes an arbitrary internal IP for an internal network\n // load balancer for brevity. Consult https://cloud.google.com/load-balancing/docs/internal\n // to set one up.\n var ilb = new Gcp.Compute.GlobalAddress(\"ilb\", new()\n {\n Name = \"my-ilb\",\n });\n\n var @default = new Gcp.NetworkConnectivity.PolicyBasedRoute(\"default\", new()\n {\n Name = \"my-pbr\",\n Description = \"My routing policy\",\n Network = myNetwork.Id,\n Priority = 2302,\n Filter = new Gcp.NetworkConnectivity.Inputs.PolicyBasedRouteFilterArgs\n {\n ProtocolVersion = \"IPV4\",\n IpProtocol = \"UDP\",\n SrcRange = \"10.0.0.0/24\",\n DestRange = \"0.0.0.0/0\",\n },\n NextHopIlbIp = ilb.Address,\n VirtualMachine = new Gcp.NetworkConnectivity.Inputs.PolicyBasedRouteVirtualMachineArgs\n {\n Tags = new[]\n {\n \"restricted\",\n },\n },\n Labels = \n {\n { \"env\", \"default\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyNetwork, err := compute.NewNetwork(ctx, \"my_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\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// This example substitutes an arbitrary internal IP for an internal network\n\t\t// load balancer for brevity. Consult https://cloud.google.com/load-balancing/docs/internal\n\t\t// to set one up.\n\t\tilb, err := compute.NewGlobalAddress(ctx, \"ilb\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"my-ilb\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewPolicyBasedRoute(ctx, \"default\", \u0026networkconnectivity.PolicyBasedRouteArgs{\n\t\t\tName: pulumi.String(\"my-pbr\"),\n\t\t\tDescription: pulumi.String(\"My routing policy\"),\n\t\t\tNetwork: myNetwork.ID(),\n\t\t\tPriority: pulumi.Int(2302),\n\t\t\tFilter: \u0026networkconnectivity.PolicyBasedRouteFilterArgs{\n\t\t\t\tProtocolVersion: pulumi.String(\"IPV4\"),\n\t\t\t\tIpProtocol: pulumi.String(\"UDP\"),\n\t\t\t\tSrcRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\t\tDestRange: pulumi.String(\"0.0.0.0/0\"),\n\t\t\t},\n\t\t\tNextHopIlbIp: ilb.Address,\n\t\t\tVirtualMachine: \u0026networkconnectivity.PolicyBasedRouteVirtualMachineArgs{\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"restricted\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\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.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.networkconnectivity.PolicyBasedRoute;\nimport com.pulumi.gcp.networkconnectivity.PolicyBasedRouteArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.PolicyBasedRouteFilterArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.PolicyBasedRouteVirtualMachineArgs;\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 myNetwork = new Network(\"myNetwork\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n // This example substitutes an arbitrary internal IP for an internal network\n // load balancer for brevity. Consult https://cloud.google.com/load-balancing/docs/internal\n // to set one up.\n var ilb = new GlobalAddress(\"ilb\", GlobalAddressArgs.builder()\n .name(\"my-ilb\")\n .build());\n\n var default_ = new PolicyBasedRoute(\"default\", PolicyBasedRouteArgs.builder()\n .name(\"my-pbr\")\n .description(\"My routing policy\")\n .network(myNetwork.id())\n .priority(2302)\n .filter(PolicyBasedRouteFilterArgs.builder()\n .protocolVersion(\"IPV4\")\n .ipProtocol(\"UDP\")\n .srcRange(\"10.0.0.0/24\")\n .destRange(\"0.0.0.0/0\")\n .build())\n .nextHopIlbIp(ilb.address())\n .virtualMachine(PolicyBasedRouteVirtualMachineArgs.builder()\n .tags(\"restricted\")\n .build())\n .labels(Map.of(\"env\", \"default\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkconnectivity:PolicyBasedRoute\n properties:\n name: my-pbr\n description: My routing policy\n network: ${myNetwork.id}\n priority: 2302\n filter:\n protocolVersion: IPV4\n ipProtocol: UDP\n srcRange: 10.0.0.0/24\n destRange: 0.0.0.0/0\n nextHopIlbIp: ${ilb.address}\n virtualMachine:\n tags:\n - restricted\n labels:\n env: default\n myNetwork:\n type: gcp:compute:Network\n name: my_network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n # This example substitutes an arbitrary internal IP for an internal network\n # load balancer for brevity. Consult https://cloud.google.com/load-balancing/docs/internal\n # to set one up.\n ilb:\n type: gcp:compute:GlobalAddress\n properties:\n name: my-ilb\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPolicyBasedRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/policyBasedRoutes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, PolicyBasedRoute can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkconnectivity/policyBasedRoute:PolicyBasedRoute default projects/{{project}}/locations/global/policyBasedRoutes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkconnectivity/policyBasedRoute:PolicyBasedRoute default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkconnectivity/policyBasedRoute:PolicyBasedRoute default {{name}}\n```\n\n", + "description": "Policy-based Routes are more powerful routes that route L4 network traffic based on not just destination IP, but also source IP, protocol and more. A Policy-based Route always take precedence when it conflicts with other types of routes.\n\n\nTo get more information about PolicyBasedRoute, see:\n\n* [API documentation](https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest/v1/projects.locations.global.policyBasedRoutes)\n* How-to Guides\n * [Use policy-based routes](https://cloud.google.com/vpc/docs/use-policy-based-routes#api)\n\n## Example Usage\n\n### Network Connectivity Policy Based Route Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myNetwork = new gcp.compute.Network(\"my_network\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst _default = new gcp.networkconnectivity.PolicyBasedRoute(\"default\", {\n name: \"my-pbr\",\n network: myNetwork.id,\n filter: {\n protocolVersion: \"IPV4\",\n },\n nextHopOtherRoutes: \"DEFAULT_ROUTING\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_network = gcp.compute.Network(\"my_network\",\n name=\"my-network\",\n auto_create_subnetworks=False)\ndefault = gcp.networkconnectivity.PolicyBasedRoute(\"default\",\n name=\"my-pbr\",\n network=my_network.id,\n filter={\n \"protocol_version\": \"IPV4\",\n },\n next_hop_other_routes=\"DEFAULT_ROUTING\")\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 myNetwork = new Gcp.Compute.Network(\"my_network\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var @default = new Gcp.NetworkConnectivity.PolicyBasedRoute(\"default\", new()\n {\n Name = \"my-pbr\",\n Network = myNetwork.Id,\n Filter = new Gcp.NetworkConnectivity.Inputs.PolicyBasedRouteFilterArgs\n {\n ProtocolVersion = \"IPV4\",\n },\n NextHopOtherRoutes = \"DEFAULT_ROUTING\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyNetwork, err := compute.NewNetwork(ctx, \"my_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\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 = networkconnectivity.NewPolicyBasedRoute(ctx, \"default\", \u0026networkconnectivity.PolicyBasedRouteArgs{\n\t\t\tName: pulumi.String(\"my-pbr\"),\n\t\t\tNetwork: myNetwork.ID(),\n\t\t\tFilter: \u0026networkconnectivity.PolicyBasedRouteFilterArgs{\n\t\t\t\tProtocolVersion: pulumi.String(\"IPV4\"),\n\t\t\t},\n\t\t\tNextHopOtherRoutes: pulumi.String(\"DEFAULT_ROUTING\"),\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.networkconnectivity.PolicyBasedRoute;\nimport com.pulumi.gcp.networkconnectivity.PolicyBasedRouteArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.PolicyBasedRouteFilterArgs;\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 myNetwork = new Network(\"myNetwork\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var default_ = new PolicyBasedRoute(\"default\", PolicyBasedRouteArgs.builder()\n .name(\"my-pbr\")\n .network(myNetwork.id())\n .filter(PolicyBasedRouteFilterArgs.builder()\n .protocolVersion(\"IPV4\")\n .build())\n .nextHopOtherRoutes(\"DEFAULT_ROUTING\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkconnectivity:PolicyBasedRoute\n properties:\n name: my-pbr\n network: ${myNetwork.id}\n filter:\n protocolVersion: IPV4\n nextHopOtherRoutes: DEFAULT_ROUTING\n myNetwork:\n type: gcp:compute:Network\n name: my_network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Policy Based Route Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myNetwork = new gcp.compute.Network(\"my_network\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\n// This example substitutes an arbitrary internal IP for an internal network\n// load balancer for brevity. Consult https://cloud.google.com/load-balancing/docs/internal\n// to set one up.\nconst ilb = new gcp.compute.GlobalAddress(\"ilb\", {name: \"my-ilb\"});\nconst _default = new gcp.networkconnectivity.PolicyBasedRoute(\"default\", {\n name: \"my-pbr\",\n description: \"My routing policy\",\n network: myNetwork.id,\n priority: 2302,\n filter: {\n protocolVersion: \"IPV4\",\n ipProtocol: \"UDP\",\n srcRange: \"10.0.0.0/24\",\n destRange: \"0.0.0.0/0\",\n },\n nextHopIlbIp: ilb.address,\n virtualMachine: {\n tags: [\"restricted\"],\n },\n labels: {\n env: \"default\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_network = gcp.compute.Network(\"my_network\",\n name=\"my-network\",\n auto_create_subnetworks=False)\n# This example substitutes an arbitrary internal IP for an internal network\n# load balancer for brevity. Consult https://cloud.google.com/load-balancing/docs/internal\n# to set one up.\nilb = gcp.compute.GlobalAddress(\"ilb\", name=\"my-ilb\")\ndefault = gcp.networkconnectivity.PolicyBasedRoute(\"default\",\n name=\"my-pbr\",\n description=\"My routing policy\",\n network=my_network.id,\n priority=2302,\n filter={\n \"protocol_version\": \"IPV4\",\n \"ip_protocol\": \"UDP\",\n \"src_range\": \"10.0.0.0/24\",\n \"dest_range\": \"0.0.0.0/0\",\n },\n next_hop_ilb_ip=ilb.address,\n virtual_machine={\n \"tags\": [\"restricted\"],\n },\n labels={\n \"env\": \"default\",\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 myNetwork = new Gcp.Compute.Network(\"my_network\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n // This example substitutes an arbitrary internal IP for an internal network\n // load balancer for brevity. Consult https://cloud.google.com/load-balancing/docs/internal\n // to set one up.\n var ilb = new Gcp.Compute.GlobalAddress(\"ilb\", new()\n {\n Name = \"my-ilb\",\n });\n\n var @default = new Gcp.NetworkConnectivity.PolicyBasedRoute(\"default\", new()\n {\n Name = \"my-pbr\",\n Description = \"My routing policy\",\n Network = myNetwork.Id,\n Priority = 2302,\n Filter = new Gcp.NetworkConnectivity.Inputs.PolicyBasedRouteFilterArgs\n {\n ProtocolVersion = \"IPV4\",\n IpProtocol = \"UDP\",\n SrcRange = \"10.0.0.0/24\",\n DestRange = \"0.0.0.0/0\",\n },\n NextHopIlbIp = ilb.Address,\n VirtualMachine = new Gcp.NetworkConnectivity.Inputs.PolicyBasedRouteVirtualMachineArgs\n {\n Tags = new[]\n {\n \"restricted\",\n },\n },\n Labels = \n {\n { \"env\", \"default\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyNetwork, err := compute.NewNetwork(ctx, \"my_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\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// This example substitutes an arbitrary internal IP for an internal network\n\t\t// load balancer for brevity. Consult https://cloud.google.com/load-balancing/docs/internal\n\t\t// to set one up.\n\t\tilb, err := compute.NewGlobalAddress(ctx, \"ilb\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"my-ilb\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewPolicyBasedRoute(ctx, \"default\", \u0026networkconnectivity.PolicyBasedRouteArgs{\n\t\t\tName: pulumi.String(\"my-pbr\"),\n\t\t\tDescription: pulumi.String(\"My routing policy\"),\n\t\t\tNetwork: myNetwork.ID(),\n\t\t\tPriority: pulumi.Int(2302),\n\t\t\tFilter: \u0026networkconnectivity.PolicyBasedRouteFilterArgs{\n\t\t\t\tProtocolVersion: pulumi.String(\"IPV4\"),\n\t\t\t\tIpProtocol: pulumi.String(\"UDP\"),\n\t\t\t\tSrcRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\t\tDestRange: pulumi.String(\"0.0.0.0/0\"),\n\t\t\t},\n\t\t\tNextHopIlbIp: ilb.Address,\n\t\t\tVirtualMachine: \u0026networkconnectivity.PolicyBasedRouteVirtualMachineArgs{\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"restricted\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\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.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.networkconnectivity.PolicyBasedRoute;\nimport com.pulumi.gcp.networkconnectivity.PolicyBasedRouteArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.PolicyBasedRouteFilterArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.PolicyBasedRouteVirtualMachineArgs;\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 myNetwork = new Network(\"myNetwork\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n // This example substitutes an arbitrary internal IP for an internal network\n // load balancer for brevity. Consult https://cloud.google.com/load-balancing/docs/internal\n // to set one up.\n var ilb = new GlobalAddress(\"ilb\", GlobalAddressArgs.builder()\n .name(\"my-ilb\")\n .build());\n\n var default_ = new PolicyBasedRoute(\"default\", PolicyBasedRouteArgs.builder()\n .name(\"my-pbr\")\n .description(\"My routing policy\")\n .network(myNetwork.id())\n .priority(2302)\n .filter(PolicyBasedRouteFilterArgs.builder()\n .protocolVersion(\"IPV4\")\n .ipProtocol(\"UDP\")\n .srcRange(\"10.0.0.0/24\")\n .destRange(\"0.0.0.0/0\")\n .build())\n .nextHopIlbIp(ilb.address())\n .virtualMachine(PolicyBasedRouteVirtualMachineArgs.builder()\n .tags(\"restricted\")\n .build())\n .labels(Map.of(\"env\", \"default\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkconnectivity:PolicyBasedRoute\n properties:\n name: my-pbr\n description: My routing policy\n network: ${myNetwork.id}\n priority: 2302\n filter:\n protocolVersion: IPV4\n ipProtocol: UDP\n srcRange: 10.0.0.0/24\n destRange: 0.0.0.0/0\n nextHopIlbIp: ${ilb.address}\n virtualMachine:\n tags:\n - restricted\n labels:\n env: default\n myNetwork:\n type: gcp:compute:Network\n name: my_network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n # This example substitutes an arbitrary internal IP for an internal network\n # load balancer for brevity. Consult https://cloud.google.com/load-balancing/docs/internal\n # to set one up.\n ilb:\n type: gcp:compute:GlobalAddress\n properties:\n name: my-ilb\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPolicyBasedRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/policyBasedRoutes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, PolicyBasedRoute can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkconnectivity/policyBasedRoute:PolicyBasedRoute default projects/{{project}}/locations/global/policyBasedRoutes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkconnectivity/policyBasedRoute:PolicyBasedRoute default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkconnectivity/policyBasedRoute:PolicyBasedRoute default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -217303,7 +217303,7 @@ } }, "gcp:networkconnectivity/spoke:Spoke": { - "description": "The NetworkConnectivity Spoke resource\n\n## Example Usage\n\n### Linked_vpc_network\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"hub\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"name\",\n location: \"global\",\n description: \"A sample spoke with a linked routher appliance instance\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedVpcNetwork: {\n excludeExportRanges: [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n uri: network.selfLink,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"network\",\n auto_create_subnetworks=False)\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"hub\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"name\",\n location=\"global\",\n description=\"A sample spoke with a linked routher appliance instance\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_vpc_network={\n \"excludeExportRanges\": [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n \"uri\": network.self_link,\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 = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"hub\",\n Description = \"A sample hub\",\n Labels = \n {\n { \"label-two\", \"value-one\" },\n },\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"name\",\n Location = \"global\",\n Description = \"A sample spoke with a linked routher appliance instance\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpcNetworkArgs\n {\n ExcludeExportRanges = new[]\n {\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n },\n Uri = network.SelfLink,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\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\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"hub\"),\n\t\t\tDescription: pulumi.String(\"A sample hub\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-two\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked routher appliance instance\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedVpcNetwork: \u0026networkconnectivity.SpokeLinkedVpcNetworkArgs{\n\t\t\t\tExcludeExportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"198.51.100.0/24\"),\n\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tUri: network.SelfLink,\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.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedVpcNetworkArgs;\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 = new Network(\"network\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"hub\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-two\", \"value-one\"))\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"name\")\n .location(\"global\")\n .description(\"A sample spoke with a linked routher appliance instance\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedVpcNetwork(SpokeLinkedVpcNetworkArgs.builder()\n .excludeExportRanges( \n \"198.51.100.0/24\",\n \"10.10.0.0/16\")\n .uri(network.selfLink())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: hub\n description: A sample hub\n labels:\n label-two: value-one\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: name\n location: global\n description: A sample spoke with a linked routher appliance instance\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedVpcNetwork:\n excludeExportRanges:\n - 198.51.100.0/24\n - 10.10.0.0/16\n uri: ${network.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router_appliance\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork = new gcp.compute.Subnetwork(\"subnetwork\", {\n name: \"subnet\",\n ipCidrRange: \"10.0.0.0/28\",\n region: \"us-west1\",\n network: network.selfLink,\n});\nconst instance = new gcp.compute.Instance(\"instance\", {\n name: \"instance\",\n machineType: \"e2-medium\",\n canIpForward: true,\n zone: \"us-west1-a\",\n bootDisk: {\n initializeParams: {\n image: \"projects/debian-cloud/global/images/debian-10-buster-v20210817\",\n },\n },\n networkInterfaces: [{\n subnetwork: subnetwork.name,\n networkIp: \"10.0.0.2\",\n accessConfigs: [{\n networkTier: \"PREMIUM\",\n }],\n }],\n});\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"hub\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"name\",\n location: \"us-west1\",\n description: \"A sample spoke with a linked routher appliance instance\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedRouterApplianceInstances: {\n instances: [{\n virtualMachine: instance.selfLink,\n ipAddress: \"10.0.0.2\",\n }],\n siteToSiteDataTransfer: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"network\",\n auto_create_subnetworks=False)\nsubnetwork = gcp.compute.Subnetwork(\"subnetwork\",\n name=\"subnet\",\n ip_cidr_range=\"10.0.0.0/28\",\n region=\"us-west1\",\n network=network.self_link)\ninstance = gcp.compute.Instance(\"instance\",\n name=\"instance\",\n machine_type=\"e2-medium\",\n can_ip_forward=True,\n zone=\"us-west1-a\",\n boot_disk={\n \"initializeParams\": {\n \"image\": \"projects/debian-cloud/global/images/debian-10-buster-v20210817\",\n },\n },\n network_interfaces=[{\n \"subnetwork\": subnetwork.name,\n \"networkIp\": \"10.0.0.2\",\n \"accessConfigs\": [{\n \"networkTier\": \"PREMIUM\",\n }],\n }])\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"hub\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"name\",\n location=\"us-west1\",\n description=\"A sample spoke with a linked routher appliance instance\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_router_appliance_instances={\n \"instances\": [{\n \"virtualMachine\": instance.self_link,\n \"ipAddress\": \"10.0.0.2\",\n }],\n \"siteToSiteDataTransfer\": 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 network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork = new Gcp.Compute.Subnetwork(\"subnetwork\", new()\n {\n Name = \"subnet\",\n IpCidrRange = \"10.0.0.0/28\",\n Region = \"us-west1\",\n Network = network.SelfLink,\n });\n\n var instance = new Gcp.Compute.Instance(\"instance\", new()\n {\n Name = \"instance\",\n MachineType = \"e2-medium\",\n CanIpForward = true,\n Zone = \"us-west1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"projects/debian-cloud/global/images/debian-10-buster-v20210817\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Subnetwork = subnetwork.Name,\n NetworkIp = \"10.0.0.2\",\n AccessConfigs = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceAccessConfigArgs\n {\n NetworkTier = \"PREMIUM\",\n },\n },\n },\n },\n });\n\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"hub\",\n Description = \"A sample hub\",\n Labels = \n {\n { \"label-two\", \"value-one\" },\n },\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"name\",\n Location = \"us-west1\",\n Description = \"A sample spoke with a linked routher appliance instance\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedRouterApplianceInstances = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedRouterApplianceInstancesArgs\n {\n Instances = new[]\n {\n new Gcp.NetworkConnectivity.Inputs.SpokeLinkedRouterApplianceInstancesInstanceArgs\n {\n VirtualMachine = instance.SelfLink,\n IpAddress = \"10.0.0.2\",\n },\n },\n SiteToSiteDataTransfer = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\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\tsubnetwork, err := compute.NewSubnetwork(ctx, \"subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-west1\"),\n\t\t\tNetwork: network.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := compute.NewInstance(ctx, \"instance\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(true),\n\t\t\tZone: pulumi.String(\"us-west1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"projects/debian-cloud/global/images/debian-10-buster-v20210817\"),\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\tSubnetwork: subnetwork.Name,\n\t\t\t\t\tNetworkIp: pulumi.String(\"10.0.0.2\"),\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{\n\t\t\t\t\t\t\tNetworkTier: pulumi.String(\"PREMIUM\"),\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\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"hub\"),\n\t\t\tDescription: pulumi.String(\"A sample hub\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-two\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked routher appliance instance\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedRouterApplianceInstances: \u0026networkconnectivity.SpokeLinkedRouterApplianceInstancesArgs{\n\t\t\t\tInstances: networkconnectivity.SpokeLinkedRouterApplianceInstancesInstanceArray{\n\t\t\t\t\t\u0026networkconnectivity.SpokeLinkedRouterApplianceInstancesInstanceArgs{\n\t\t\t\t\t\tVirtualMachine: instance.SelfLink,\n\t\t\t\t\t\tIpAddress: pulumi.String(\"10.0.0.2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSiteToSiteDataTransfer: 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.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.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.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedRouterApplianceInstancesArgs;\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 = new Network(\"network\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork = new Subnetwork(\"subnetwork\", SubnetworkArgs.builder()\n .name(\"subnet\")\n .ipCidrRange(\"10.0.0.0/28\")\n .region(\"us-west1\")\n .network(network.selfLink())\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .name(\"instance\")\n .machineType(\"e2-medium\")\n .canIpForward(true)\n .zone(\"us-west1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"projects/debian-cloud/global/images/debian-10-buster-v20210817\")\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .subnetwork(subnetwork.name())\n .networkIp(\"10.0.0.2\")\n .accessConfigs(InstanceNetworkInterfaceAccessConfigArgs.builder()\n .networkTier(\"PREMIUM\")\n .build())\n .build())\n .build());\n\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"hub\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-two\", \"value-one\"))\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"name\")\n .location(\"us-west1\")\n .description(\"A sample spoke with a linked routher appliance instance\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedRouterApplianceInstances(SpokeLinkedRouterApplianceInstancesArgs.builder()\n .instances(SpokeLinkedRouterApplianceInstancesInstanceArgs.builder()\n .virtualMachine(instance.selfLink())\n .ipAddress(\"10.0.0.2\")\n .build())\n .siteToSiteDataTransfer(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n subnetwork:\n type: gcp:compute:Subnetwork\n properties:\n name: subnet\n ipCidrRange: 10.0.0.0/28\n region: us-west1\n network: ${network.selfLink}\n instance:\n type: gcp:compute:Instance\n properties:\n name: instance\n machineType: e2-medium\n canIpForward: true\n zone: us-west1-a\n bootDisk:\n initializeParams:\n image: projects/debian-cloud/global/images/debian-10-buster-v20210817\n networkInterfaces:\n - subnetwork: ${subnetwork.name}\n networkIp: 10.0.0.2\n accessConfigs:\n - networkTier: PREMIUM\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: hub\n description: A sample hub\n labels:\n label-two: value-one\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: name\n location: us-west1\n description: A sample spoke with a linked routher appliance instance\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedRouterApplianceInstances:\n instances:\n - virtualMachine: ${instance.selfLink}\n ipAddress: 10.0.0.2\n siteToSiteDataTransfer: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSpoke can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/spokes/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Spoke can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkconnectivity/spoke:Spoke default projects/{{project}}/locations/{{location}}/spokes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkconnectivity/spoke:Spoke default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkconnectivity/spoke:Spoke default {{location}}/{{name}}\n```\n\n", + "description": "The NetworkConnectivity Spoke resource\n\n## Example Usage\n\n### Linked_vpc_network\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"hub\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"name\",\n location: \"global\",\n description: \"A sample spoke with a linked routher appliance instance\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedVpcNetwork: {\n excludeExportRanges: [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n uri: network.selfLink,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"network\",\n auto_create_subnetworks=False)\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"hub\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"name\",\n location=\"global\",\n description=\"A sample spoke with a linked routher appliance instance\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_vpc_network={\n \"exclude_export_ranges\": [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n \"uri\": network.self_link,\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 = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"hub\",\n Description = \"A sample hub\",\n Labels = \n {\n { \"label-two\", \"value-one\" },\n },\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"name\",\n Location = \"global\",\n Description = \"A sample spoke with a linked routher appliance instance\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpcNetworkArgs\n {\n ExcludeExportRanges = new[]\n {\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n },\n Uri = network.SelfLink,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\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\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"hub\"),\n\t\t\tDescription: pulumi.String(\"A sample hub\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-two\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked routher appliance instance\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedVpcNetwork: \u0026networkconnectivity.SpokeLinkedVpcNetworkArgs{\n\t\t\t\tExcludeExportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"198.51.100.0/24\"),\n\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tUri: network.SelfLink,\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.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedVpcNetworkArgs;\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 = new Network(\"network\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"hub\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-two\", \"value-one\"))\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"name\")\n .location(\"global\")\n .description(\"A sample spoke with a linked routher appliance instance\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedVpcNetwork(SpokeLinkedVpcNetworkArgs.builder()\n .excludeExportRanges( \n \"198.51.100.0/24\",\n \"10.10.0.0/16\")\n .uri(network.selfLink())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: hub\n description: A sample hub\n labels:\n label-two: value-one\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: name\n location: global\n description: A sample spoke with a linked routher appliance instance\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedVpcNetwork:\n excludeExportRanges:\n - 198.51.100.0/24\n - 10.10.0.0/16\n uri: ${network.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router_appliance\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork = new gcp.compute.Subnetwork(\"subnetwork\", {\n name: \"subnet\",\n ipCidrRange: \"10.0.0.0/28\",\n region: \"us-west1\",\n network: network.selfLink,\n});\nconst instance = new gcp.compute.Instance(\"instance\", {\n name: \"instance\",\n machineType: \"e2-medium\",\n canIpForward: true,\n zone: \"us-west1-a\",\n bootDisk: {\n initializeParams: {\n image: \"projects/debian-cloud/global/images/debian-10-buster-v20210817\",\n },\n },\n networkInterfaces: [{\n subnetwork: subnetwork.name,\n networkIp: \"10.0.0.2\",\n accessConfigs: [{\n networkTier: \"PREMIUM\",\n }],\n }],\n});\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"hub\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"name\",\n location: \"us-west1\",\n description: \"A sample spoke with a linked routher appliance instance\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedRouterApplianceInstances: {\n instances: [{\n virtualMachine: instance.selfLink,\n ipAddress: \"10.0.0.2\",\n }],\n siteToSiteDataTransfer: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"network\",\n auto_create_subnetworks=False)\nsubnetwork = gcp.compute.Subnetwork(\"subnetwork\",\n name=\"subnet\",\n ip_cidr_range=\"10.0.0.0/28\",\n region=\"us-west1\",\n network=network.self_link)\ninstance = gcp.compute.Instance(\"instance\",\n name=\"instance\",\n machine_type=\"e2-medium\",\n can_ip_forward=True,\n zone=\"us-west1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"projects/debian-cloud/global/images/debian-10-buster-v20210817\",\n },\n },\n network_interfaces=[{\n \"subnetwork\": subnetwork.name,\n \"network_ip\": \"10.0.0.2\",\n \"access_configs\": [{\n \"network_tier\": \"PREMIUM\",\n }],\n }])\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"hub\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"name\",\n location=\"us-west1\",\n description=\"A sample spoke with a linked routher appliance instance\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_router_appliance_instances={\n \"instances\": [{\n \"virtual_machine\": instance.self_link,\n \"ip_address\": \"10.0.0.2\",\n }],\n \"site_to_site_data_transfer\": 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 network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork = new Gcp.Compute.Subnetwork(\"subnetwork\", new()\n {\n Name = \"subnet\",\n IpCidrRange = \"10.0.0.0/28\",\n Region = \"us-west1\",\n Network = network.SelfLink,\n });\n\n var instance = new Gcp.Compute.Instance(\"instance\", new()\n {\n Name = \"instance\",\n MachineType = \"e2-medium\",\n CanIpForward = true,\n Zone = \"us-west1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"projects/debian-cloud/global/images/debian-10-buster-v20210817\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Subnetwork = subnetwork.Name,\n NetworkIp = \"10.0.0.2\",\n AccessConfigs = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceAccessConfigArgs\n {\n NetworkTier = \"PREMIUM\",\n },\n },\n },\n },\n });\n\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"hub\",\n Description = \"A sample hub\",\n Labels = \n {\n { \"label-two\", \"value-one\" },\n },\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"name\",\n Location = \"us-west1\",\n Description = \"A sample spoke with a linked routher appliance instance\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedRouterApplianceInstances = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedRouterApplianceInstancesArgs\n {\n Instances = new[]\n {\n new Gcp.NetworkConnectivity.Inputs.SpokeLinkedRouterApplianceInstancesInstanceArgs\n {\n VirtualMachine = instance.SelfLink,\n IpAddress = \"10.0.0.2\",\n },\n },\n SiteToSiteDataTransfer = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\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\tsubnetwork, err := compute.NewSubnetwork(ctx, \"subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-west1\"),\n\t\t\tNetwork: network.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := compute.NewInstance(ctx, \"instance\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(true),\n\t\t\tZone: pulumi.String(\"us-west1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"projects/debian-cloud/global/images/debian-10-buster-v20210817\"),\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\tSubnetwork: subnetwork.Name,\n\t\t\t\t\tNetworkIp: pulumi.String(\"10.0.0.2\"),\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{\n\t\t\t\t\t\t\tNetworkTier: pulumi.String(\"PREMIUM\"),\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\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"hub\"),\n\t\t\tDescription: pulumi.String(\"A sample hub\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-two\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked routher appliance instance\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedRouterApplianceInstances: \u0026networkconnectivity.SpokeLinkedRouterApplianceInstancesArgs{\n\t\t\t\tInstances: networkconnectivity.SpokeLinkedRouterApplianceInstancesInstanceArray{\n\t\t\t\t\t\u0026networkconnectivity.SpokeLinkedRouterApplianceInstancesInstanceArgs{\n\t\t\t\t\t\tVirtualMachine: instance.SelfLink,\n\t\t\t\t\t\tIpAddress: pulumi.String(\"10.0.0.2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSiteToSiteDataTransfer: 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.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.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.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedRouterApplianceInstancesArgs;\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 = new Network(\"network\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork = new Subnetwork(\"subnetwork\", SubnetworkArgs.builder()\n .name(\"subnet\")\n .ipCidrRange(\"10.0.0.0/28\")\n .region(\"us-west1\")\n .network(network.selfLink())\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .name(\"instance\")\n .machineType(\"e2-medium\")\n .canIpForward(true)\n .zone(\"us-west1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"projects/debian-cloud/global/images/debian-10-buster-v20210817\")\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .subnetwork(subnetwork.name())\n .networkIp(\"10.0.0.2\")\n .accessConfigs(InstanceNetworkInterfaceAccessConfigArgs.builder()\n .networkTier(\"PREMIUM\")\n .build())\n .build())\n .build());\n\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"hub\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-two\", \"value-one\"))\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"name\")\n .location(\"us-west1\")\n .description(\"A sample spoke with a linked routher appliance instance\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedRouterApplianceInstances(SpokeLinkedRouterApplianceInstancesArgs.builder()\n .instances(SpokeLinkedRouterApplianceInstancesInstanceArgs.builder()\n .virtualMachine(instance.selfLink())\n .ipAddress(\"10.0.0.2\")\n .build())\n .siteToSiteDataTransfer(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n subnetwork:\n type: gcp:compute:Subnetwork\n properties:\n name: subnet\n ipCidrRange: 10.0.0.0/28\n region: us-west1\n network: ${network.selfLink}\n instance:\n type: gcp:compute:Instance\n properties:\n name: instance\n machineType: e2-medium\n canIpForward: true\n zone: us-west1-a\n bootDisk:\n initializeParams:\n image: projects/debian-cloud/global/images/debian-10-buster-v20210817\n networkInterfaces:\n - subnetwork: ${subnetwork.name}\n networkIp: 10.0.0.2\n accessConfigs:\n - networkTier: PREMIUM\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: hub\n description: A sample hub\n labels:\n label-two: value-one\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: name\n location: us-west1\n description: A sample spoke with a linked routher appliance instance\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedRouterApplianceInstances:\n instances:\n - virtualMachine: ${instance.selfLink}\n ipAddress: 10.0.0.2\n siteToSiteDataTransfer: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSpoke can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/spokes/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Spoke can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkconnectivity/spoke:Spoke default projects/{{project}}/locations/{{location}}/spokes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkconnectivity/spoke:Spoke default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkconnectivity/spoke:Spoke default {{location}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -217541,7 +217541,7 @@ } }, "gcp:networkmanagement/connectivityTest:ConnectivityTest": { - "description": "A connectivity test are a static analysis of your resource configurations\nthat enables you to evaluate connectivity to and from Google Cloud\nresources in your Virtual Private Cloud (VPC) network.\n\n\nTo get more information about ConnectivityTest, see:\n\n* [API documentation](https://cloud.google.com/network-intelligence-center/docs/connectivity-tests/reference/networkmanagement/rest/v1/projects.locations.global.connectivityTests)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/network-intelligence-center/docs)\n\n## Example Usage\n\n### Network Management Connectivity Test Instances\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vpc = new gcp.compute.Network(\"vpc\", {name: \"conn-test-net\"});\nconst debian9 = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst source = new gcp.compute.Instance(\"source\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: vpc.id,\n }],\n name: \"source-vm\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: debian9.then(debian9 =\u003e debian9.id),\n },\n },\n});\nconst destination = new gcp.compute.Instance(\"destination\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: vpc.id,\n }],\n name: \"dest-vm\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: debian9.then(debian9 =\u003e debian9.id),\n },\n },\n});\nconst instance_test = new gcp.networkmanagement.ConnectivityTest(\"instance-test\", {\n name: \"conn-test-instances\",\n source: {\n instance: source.id,\n },\n destination: {\n instance: destination.id,\n },\n protocol: \"TCP\",\n labels: {\n env: \"test\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvpc = gcp.compute.Network(\"vpc\", name=\"conn-test-net\")\ndebian9 = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nsource = gcp.compute.Instance(\"source\",\n network_interfaces=[{\n \"accessConfigs\": [{}],\n \"network\": vpc.id,\n }],\n name=\"source-vm\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initializeParams\": {\n \"image\": debian9.id,\n },\n })\ndestination = gcp.compute.Instance(\"destination\",\n network_interfaces=[{\n \"accessConfigs\": [{}],\n \"network\": vpc.id,\n }],\n name=\"dest-vm\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initializeParams\": {\n \"image\": debian9.id,\n },\n })\ninstance_test = gcp.networkmanagement.ConnectivityTest(\"instance-test\",\n name=\"conn-test-instances\",\n source={\n \"instance\": source.id,\n },\n destination={\n \"instance\": destination.id,\n },\n protocol=\"TCP\",\n labels={\n \"env\": \"test\",\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 vpc = new Gcp.Compute.Network(\"vpc\", new()\n {\n Name = \"conn-test-net\",\n });\n\n var debian9 = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var source = new Gcp.Compute.Instance(\"source\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = vpc.Id,\n },\n },\n Name = \"source-vm\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = debian9.Apply(getImageResult =\u003e getImageResult.Id),\n },\n },\n });\n\n var destination = new Gcp.Compute.Instance(\"destination\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = vpc.Id,\n },\n },\n Name = \"dest-vm\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = debian9.Apply(getImageResult =\u003e getImageResult.Id),\n },\n },\n });\n\n var instance_test = new Gcp.NetworkManagement.ConnectivityTest(\"instance-test\", new()\n {\n Name = \"conn-test-instances\",\n Source = new Gcp.NetworkManagement.Inputs.ConnectivityTestSourceArgs\n {\n Instance = source.Id,\n },\n Destination = new Gcp.NetworkManagement.Inputs.ConnectivityTestDestinationArgs\n {\n Instance = destination.Id,\n },\n Protocol = \"TCP\",\n Labels = \n {\n { \"env\", \"test\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkmanagement\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc, err := compute.NewNetwork(ctx, \"vpc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"conn-test-net\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdebian9, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsource, err := compute.NewInstance(ctx, \"source\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tNetwork: vpc.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"source-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(debian9.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\tdestination, err := compute.NewInstance(ctx, \"destination\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tNetwork: vpc.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"dest-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(debian9.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\t_, err = networkmanagement.NewConnectivityTest(ctx, \"instance-test\", \u0026networkmanagement.ConnectivityTestArgs{\n\t\t\tName: pulumi.String(\"conn-test-instances\"),\n\t\t\tSource: \u0026networkmanagement.ConnectivityTestSourceArgs{\n\t\t\t\tInstance: source.ID(),\n\t\t\t},\n\t\t\tDestination: \u0026networkmanagement.ConnectivityTestDestinationArgs{\n\t\t\t\tInstance: destination.ID(),\n\t\t\t},\n\t\t\tProtocol: pulumi.String(\"TCP\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"test\"),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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.gcp.networkmanagement.ConnectivityTest;\nimport com.pulumi.gcp.networkmanagement.ConnectivityTestArgs;\nimport com.pulumi.gcp.networkmanagement.inputs.ConnectivityTestSourceArgs;\nimport com.pulumi.gcp.networkmanagement.inputs.ConnectivityTestDestinationArgs;\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 vpc = new Network(\"vpc\", NetworkArgs.builder()\n .name(\"conn-test-net\")\n .build());\n\n final var debian9 = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var source = new Instance(\"source\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(vpc.id())\n .build())\n .name(\"source-vm\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(debian9.applyValue(getImageResult -\u003e getImageResult.id()))\n .build())\n .build())\n .build());\n\n var destination = new Instance(\"destination\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(vpc.id())\n .build())\n .name(\"dest-vm\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(debian9.applyValue(getImageResult -\u003e getImageResult.id()))\n .build())\n .build())\n .build());\n\n var instance_test = new ConnectivityTest(\"instance-test\", ConnectivityTestArgs.builder()\n .name(\"conn-test-instances\")\n .source(ConnectivityTestSourceArgs.builder()\n .instance(source.id())\n .build())\n .destination(ConnectivityTestDestinationArgs.builder()\n .instance(destination.id())\n .build())\n .protocol(\"TCP\")\n .labels(Map.of(\"env\", \"test\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance-test:\n type: gcp:networkmanagement:ConnectivityTest\n properties:\n name: conn-test-instances\n source:\n instance: ${source.id}\n destination:\n instance: ${destination.id}\n protocol: TCP\n labels:\n env: test\n source:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: ${vpc.id}\n name: source-vm\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${debian9.id}\n destination:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: ${vpc.id}\n name: dest-vm\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${debian9.id}\n vpc:\n type: gcp:compute:Network\n properties:\n name: conn-test-net\nvariables:\n debian9:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Management Connectivity Test Addresses\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vpc = new gcp.compute.Network(\"vpc\", {name: \"connectivity-vpc\"});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"connectivity-vpc-subnet\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: vpc.id,\n});\nconst source_addr = new gcp.compute.Address(\"source-addr\", {\n name: \"src-addr\",\n subnetwork: subnet.id,\n addressType: \"INTERNAL\",\n address: \"10.0.42.42\",\n region: \"us-central1\",\n});\nconst dest_addr = new gcp.compute.Address(\"dest-addr\", {\n name: \"dest-addr\",\n subnetwork: subnet.id,\n addressType: \"INTERNAL\",\n address: \"10.0.43.43\",\n region: \"us-central1\",\n});\nconst address_test = new gcp.networkmanagement.ConnectivityTest(\"address-test\", {\n name: \"conn-test-addr\",\n source: {\n ipAddress: source_addr.address,\n projectId: source_addr.project,\n network: vpc.id,\n networkType: \"GCP_NETWORK\",\n },\n destination: {\n ipAddress: dest_addr.address,\n projectId: dest_addr.project,\n network: vpc.id,\n },\n protocol: \"UDP\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvpc = gcp.compute.Network(\"vpc\", name=\"connectivity-vpc\")\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"connectivity-vpc-subnet\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=vpc.id)\nsource_addr = gcp.compute.Address(\"source-addr\",\n name=\"src-addr\",\n subnetwork=subnet.id,\n address_type=\"INTERNAL\",\n address=\"10.0.42.42\",\n region=\"us-central1\")\ndest_addr = gcp.compute.Address(\"dest-addr\",\n name=\"dest-addr\",\n subnetwork=subnet.id,\n address_type=\"INTERNAL\",\n address=\"10.0.43.43\",\n region=\"us-central1\")\naddress_test = gcp.networkmanagement.ConnectivityTest(\"address-test\",\n name=\"conn-test-addr\",\n source={\n \"ipAddress\": source_addr.address,\n \"projectId\": source_addr.project,\n \"network\": vpc.id,\n \"networkType\": \"GCP_NETWORK\",\n },\n destination={\n \"ipAddress\": dest_addr.address,\n \"projectId\": dest_addr.project,\n \"network\": vpc.id,\n },\n protocol=\"UDP\")\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 vpc = new Gcp.Compute.Network(\"vpc\", new()\n {\n Name = \"connectivity-vpc\",\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"connectivity-vpc-subnet\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = vpc.Id,\n });\n\n var source_addr = new Gcp.Compute.Address(\"source-addr\", new()\n {\n Name = \"src-addr\",\n Subnetwork = subnet.Id,\n AddressType = \"INTERNAL\",\n IPAddress = \"10.0.42.42\",\n Region = \"us-central1\",\n });\n\n var dest_addr = new Gcp.Compute.Address(\"dest-addr\", new()\n {\n Name = \"dest-addr\",\n Subnetwork = subnet.Id,\n AddressType = \"INTERNAL\",\n IPAddress = \"10.0.43.43\",\n Region = \"us-central1\",\n });\n\n var address_test = new Gcp.NetworkManagement.ConnectivityTest(\"address-test\", new()\n {\n Name = \"conn-test-addr\",\n Source = new Gcp.NetworkManagement.Inputs.ConnectivityTestSourceArgs\n {\n IpAddress = source_addr.IPAddress,\n ProjectId = source_addr.Project,\n Network = vpc.Id,\n NetworkType = \"GCP_NETWORK\",\n },\n Destination = new Gcp.NetworkManagement.Inputs.ConnectivityTestDestinationArgs\n {\n IpAddress = dest_addr.IPAddress,\n ProjectId = dest_addr.Project,\n Network = vpc.Id,\n },\n Protocol = \"UDP\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkmanagement\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc, err := compute.NewNetwork(ctx, \"vpc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"connectivity-vpc\"),\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\tName: pulumi.String(\"connectivity-vpc-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: vpc.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewAddress(ctx, \"source-addr\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"src-addr\"),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tAddress: pulumi.String(\"10.0.42.42\"),\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\t_, err = compute.NewAddress(ctx, \"dest-addr\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"dest-addr\"),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tAddress: pulumi.String(\"10.0.43.43\"),\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\t_, err = networkmanagement.NewConnectivityTest(ctx, \"address-test\", \u0026networkmanagement.ConnectivityTestArgs{\n\t\t\tName: pulumi.String(\"conn-test-addr\"),\n\t\t\tSource: \u0026networkmanagement.ConnectivityTestSourceArgs{\n\t\t\t\tIpAddress: source_addr.Address,\n\t\t\t\tProjectId: source_addr.Project,\n\t\t\t\tNetwork: vpc.ID(),\n\t\t\t\tNetworkType: pulumi.String(\"GCP_NETWORK\"),\n\t\t\t},\n\t\t\tDestination: \u0026networkmanagement.ConnectivityTestDestinationArgs{\n\t\t\t\tIpAddress: dest_addr.Address,\n\t\t\t\tProjectId: dest_addr.Project,\n\t\t\t\tNetwork: vpc.ID(),\n\t\t\t},\n\t\t\tProtocol: pulumi.String(\"UDP\"),\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.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.networkmanagement.ConnectivityTest;\nimport com.pulumi.gcp.networkmanagement.ConnectivityTestArgs;\nimport com.pulumi.gcp.networkmanagement.inputs.ConnectivityTestSourceArgs;\nimport com.pulumi.gcp.networkmanagement.inputs.ConnectivityTestDestinationArgs;\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 vpc = new Network(\"vpc\", NetworkArgs.builder()\n .name(\"connectivity-vpc\")\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"connectivity-vpc-subnet\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(vpc.id())\n .build());\n\n var source_addr = new Address(\"source-addr\", AddressArgs.builder()\n .name(\"src-addr\")\n .subnetwork(subnet.id())\n .addressType(\"INTERNAL\")\n .address(\"10.0.42.42\")\n .region(\"us-central1\")\n .build());\n\n var dest_addr = new Address(\"dest-addr\", AddressArgs.builder()\n .name(\"dest-addr\")\n .subnetwork(subnet.id())\n .addressType(\"INTERNAL\")\n .address(\"10.0.43.43\")\n .region(\"us-central1\")\n .build());\n\n var address_test = new ConnectivityTest(\"address-test\", ConnectivityTestArgs.builder()\n .name(\"conn-test-addr\")\n .source(ConnectivityTestSourceArgs.builder()\n .ipAddress(source_addr.address())\n .projectId(source_addr.project())\n .network(vpc.id())\n .networkType(\"GCP_NETWORK\")\n .build())\n .destination(ConnectivityTestDestinationArgs.builder()\n .ipAddress(dest_addr.address())\n .projectId(dest_addr.project())\n .network(vpc.id())\n .build())\n .protocol(\"UDP\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n address-test:\n type: gcp:networkmanagement:ConnectivityTest\n properties:\n name: conn-test-addr\n source:\n ipAddress: ${[\"source-addr\"].address}\n projectId: ${[\"source-addr\"].project}\n network: ${vpc.id}\n networkType: GCP_NETWORK\n destination:\n ipAddress: ${[\"dest-addr\"].address}\n projectId: ${[\"dest-addr\"].project}\n network: ${vpc.id}\n protocol: UDP\n vpc:\n type: gcp:compute:Network\n properties:\n name: connectivity-vpc\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: connectivity-vpc-subnet\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${vpc.id}\n source-addr:\n type: gcp:compute:Address\n properties:\n name: src-addr\n subnetwork: ${subnet.id}\n addressType: INTERNAL\n address: 10.0.42.42\n region: us-central1\n dest-addr:\n type: gcp:compute:Address\n properties:\n name: dest-addr\n subnetwork: ${subnet.id}\n addressType: INTERNAL\n address: 10.0.43.43\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnectivityTest can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/connectivityTests/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ConnectivityTest can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkmanagement/connectivityTest:ConnectivityTest default projects/{{project}}/locations/global/connectivityTests/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkmanagement/connectivityTest:ConnectivityTest default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkmanagement/connectivityTest:ConnectivityTest default {{name}}\n```\n\n", + "description": "A connectivity test are a static analysis of your resource configurations\nthat enables you to evaluate connectivity to and from Google Cloud\nresources in your Virtual Private Cloud (VPC) network.\n\n\nTo get more information about ConnectivityTest, see:\n\n* [API documentation](https://cloud.google.com/network-intelligence-center/docs/connectivity-tests/reference/networkmanagement/rest/v1/projects.locations.global.connectivityTests)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/network-intelligence-center/docs)\n\n## Example Usage\n\n### Network Management Connectivity Test Instances\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vpc = new gcp.compute.Network(\"vpc\", {name: \"conn-test-net\"});\nconst debian9 = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst source = new gcp.compute.Instance(\"source\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: vpc.id,\n }],\n name: \"source-vm\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: debian9.then(debian9 =\u003e debian9.id),\n },\n },\n});\nconst destination = new gcp.compute.Instance(\"destination\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: vpc.id,\n }],\n name: \"dest-vm\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: debian9.then(debian9 =\u003e debian9.id),\n },\n },\n});\nconst instance_test = new gcp.networkmanagement.ConnectivityTest(\"instance-test\", {\n name: \"conn-test-instances\",\n source: {\n instance: source.id,\n },\n destination: {\n instance: destination.id,\n },\n protocol: \"TCP\",\n labels: {\n env: \"test\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvpc = gcp.compute.Network(\"vpc\", name=\"conn-test-net\")\ndebian9 = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nsource = gcp.compute.Instance(\"source\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": vpc.id,\n }],\n name=\"source-vm\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": debian9.id,\n },\n })\ndestination = gcp.compute.Instance(\"destination\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": vpc.id,\n }],\n name=\"dest-vm\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": debian9.id,\n },\n })\ninstance_test = gcp.networkmanagement.ConnectivityTest(\"instance-test\",\n name=\"conn-test-instances\",\n source={\n \"instance\": source.id,\n },\n destination={\n \"instance\": destination.id,\n },\n protocol=\"TCP\",\n labels={\n \"env\": \"test\",\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 vpc = new Gcp.Compute.Network(\"vpc\", new()\n {\n Name = \"conn-test-net\",\n });\n\n var debian9 = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var source = new Gcp.Compute.Instance(\"source\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = vpc.Id,\n },\n },\n Name = \"source-vm\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = debian9.Apply(getImageResult =\u003e getImageResult.Id),\n },\n },\n });\n\n var destination = new Gcp.Compute.Instance(\"destination\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = vpc.Id,\n },\n },\n Name = \"dest-vm\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = debian9.Apply(getImageResult =\u003e getImageResult.Id),\n },\n },\n });\n\n var instance_test = new Gcp.NetworkManagement.ConnectivityTest(\"instance-test\", new()\n {\n Name = \"conn-test-instances\",\n Source = new Gcp.NetworkManagement.Inputs.ConnectivityTestSourceArgs\n {\n Instance = source.Id,\n },\n Destination = new Gcp.NetworkManagement.Inputs.ConnectivityTestDestinationArgs\n {\n Instance = destination.Id,\n },\n Protocol = \"TCP\",\n Labels = \n {\n { \"env\", \"test\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkmanagement\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc, err := compute.NewNetwork(ctx, \"vpc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"conn-test-net\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdebian9, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsource, err := compute.NewInstance(ctx, \"source\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tNetwork: vpc.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"source-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(debian9.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\tdestination, err := compute.NewInstance(ctx, \"destination\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tNetwork: vpc.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"dest-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(debian9.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\t_, err = networkmanagement.NewConnectivityTest(ctx, \"instance-test\", \u0026networkmanagement.ConnectivityTestArgs{\n\t\t\tName: pulumi.String(\"conn-test-instances\"),\n\t\t\tSource: \u0026networkmanagement.ConnectivityTestSourceArgs{\n\t\t\t\tInstance: source.ID(),\n\t\t\t},\n\t\t\tDestination: \u0026networkmanagement.ConnectivityTestDestinationArgs{\n\t\t\t\tInstance: destination.ID(),\n\t\t\t},\n\t\t\tProtocol: pulumi.String(\"TCP\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"test\"),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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.gcp.networkmanagement.ConnectivityTest;\nimport com.pulumi.gcp.networkmanagement.ConnectivityTestArgs;\nimport com.pulumi.gcp.networkmanagement.inputs.ConnectivityTestSourceArgs;\nimport com.pulumi.gcp.networkmanagement.inputs.ConnectivityTestDestinationArgs;\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 vpc = new Network(\"vpc\", NetworkArgs.builder()\n .name(\"conn-test-net\")\n .build());\n\n final var debian9 = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var source = new Instance(\"source\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(vpc.id())\n .build())\n .name(\"source-vm\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(debian9.applyValue(getImageResult -\u003e getImageResult.id()))\n .build())\n .build())\n .build());\n\n var destination = new Instance(\"destination\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(vpc.id())\n .build())\n .name(\"dest-vm\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(debian9.applyValue(getImageResult -\u003e getImageResult.id()))\n .build())\n .build())\n .build());\n\n var instance_test = new ConnectivityTest(\"instance-test\", ConnectivityTestArgs.builder()\n .name(\"conn-test-instances\")\n .source(ConnectivityTestSourceArgs.builder()\n .instance(source.id())\n .build())\n .destination(ConnectivityTestDestinationArgs.builder()\n .instance(destination.id())\n .build())\n .protocol(\"TCP\")\n .labels(Map.of(\"env\", \"test\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance-test:\n type: gcp:networkmanagement:ConnectivityTest\n properties:\n name: conn-test-instances\n source:\n instance: ${source.id}\n destination:\n instance: ${destination.id}\n protocol: TCP\n labels:\n env: test\n source:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: ${vpc.id}\n name: source-vm\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${debian9.id}\n destination:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: ${vpc.id}\n name: dest-vm\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${debian9.id}\n vpc:\n type: gcp:compute:Network\n properties:\n name: conn-test-net\nvariables:\n debian9:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Management Connectivity Test Addresses\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vpc = new gcp.compute.Network(\"vpc\", {name: \"connectivity-vpc\"});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"connectivity-vpc-subnet\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: vpc.id,\n});\nconst source_addr = new gcp.compute.Address(\"source-addr\", {\n name: \"src-addr\",\n subnetwork: subnet.id,\n addressType: \"INTERNAL\",\n address: \"10.0.42.42\",\n region: \"us-central1\",\n});\nconst dest_addr = new gcp.compute.Address(\"dest-addr\", {\n name: \"dest-addr\",\n subnetwork: subnet.id,\n addressType: \"INTERNAL\",\n address: \"10.0.43.43\",\n region: \"us-central1\",\n});\nconst address_test = new gcp.networkmanagement.ConnectivityTest(\"address-test\", {\n name: \"conn-test-addr\",\n source: {\n ipAddress: source_addr.address,\n projectId: source_addr.project,\n network: vpc.id,\n networkType: \"GCP_NETWORK\",\n },\n destination: {\n ipAddress: dest_addr.address,\n projectId: dest_addr.project,\n network: vpc.id,\n },\n protocol: \"UDP\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvpc = gcp.compute.Network(\"vpc\", name=\"connectivity-vpc\")\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"connectivity-vpc-subnet\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=vpc.id)\nsource_addr = gcp.compute.Address(\"source-addr\",\n name=\"src-addr\",\n subnetwork=subnet.id,\n address_type=\"INTERNAL\",\n address=\"10.0.42.42\",\n region=\"us-central1\")\ndest_addr = gcp.compute.Address(\"dest-addr\",\n name=\"dest-addr\",\n subnetwork=subnet.id,\n address_type=\"INTERNAL\",\n address=\"10.0.43.43\",\n region=\"us-central1\")\naddress_test = gcp.networkmanagement.ConnectivityTest(\"address-test\",\n name=\"conn-test-addr\",\n source={\n \"ip_address\": source_addr.address,\n \"project_id\": source_addr.project,\n \"network\": vpc.id,\n \"network_type\": \"GCP_NETWORK\",\n },\n destination={\n \"ip_address\": dest_addr.address,\n \"project_id\": dest_addr.project,\n \"network\": vpc.id,\n },\n protocol=\"UDP\")\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 vpc = new Gcp.Compute.Network(\"vpc\", new()\n {\n Name = \"connectivity-vpc\",\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"connectivity-vpc-subnet\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = vpc.Id,\n });\n\n var source_addr = new Gcp.Compute.Address(\"source-addr\", new()\n {\n Name = \"src-addr\",\n Subnetwork = subnet.Id,\n AddressType = \"INTERNAL\",\n IPAddress = \"10.0.42.42\",\n Region = \"us-central1\",\n });\n\n var dest_addr = new Gcp.Compute.Address(\"dest-addr\", new()\n {\n Name = \"dest-addr\",\n Subnetwork = subnet.Id,\n AddressType = \"INTERNAL\",\n IPAddress = \"10.0.43.43\",\n Region = \"us-central1\",\n });\n\n var address_test = new Gcp.NetworkManagement.ConnectivityTest(\"address-test\", new()\n {\n Name = \"conn-test-addr\",\n Source = new Gcp.NetworkManagement.Inputs.ConnectivityTestSourceArgs\n {\n IpAddress = source_addr.IPAddress,\n ProjectId = source_addr.Project,\n Network = vpc.Id,\n NetworkType = \"GCP_NETWORK\",\n },\n Destination = new Gcp.NetworkManagement.Inputs.ConnectivityTestDestinationArgs\n {\n IpAddress = dest_addr.IPAddress,\n ProjectId = dest_addr.Project,\n Network = vpc.Id,\n },\n Protocol = \"UDP\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkmanagement\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc, err := compute.NewNetwork(ctx, \"vpc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"connectivity-vpc\"),\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\tName: pulumi.String(\"connectivity-vpc-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: vpc.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewAddress(ctx, \"source-addr\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"src-addr\"),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tAddress: pulumi.String(\"10.0.42.42\"),\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\t_, err = compute.NewAddress(ctx, \"dest-addr\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"dest-addr\"),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tAddress: pulumi.String(\"10.0.43.43\"),\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\t_, err = networkmanagement.NewConnectivityTest(ctx, \"address-test\", \u0026networkmanagement.ConnectivityTestArgs{\n\t\t\tName: pulumi.String(\"conn-test-addr\"),\n\t\t\tSource: \u0026networkmanagement.ConnectivityTestSourceArgs{\n\t\t\t\tIpAddress: source_addr.Address,\n\t\t\t\tProjectId: source_addr.Project,\n\t\t\t\tNetwork: vpc.ID(),\n\t\t\t\tNetworkType: pulumi.String(\"GCP_NETWORK\"),\n\t\t\t},\n\t\t\tDestination: \u0026networkmanagement.ConnectivityTestDestinationArgs{\n\t\t\t\tIpAddress: dest_addr.Address,\n\t\t\t\tProjectId: dest_addr.Project,\n\t\t\t\tNetwork: vpc.ID(),\n\t\t\t},\n\t\t\tProtocol: pulumi.String(\"UDP\"),\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.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.networkmanagement.ConnectivityTest;\nimport com.pulumi.gcp.networkmanagement.ConnectivityTestArgs;\nimport com.pulumi.gcp.networkmanagement.inputs.ConnectivityTestSourceArgs;\nimport com.pulumi.gcp.networkmanagement.inputs.ConnectivityTestDestinationArgs;\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 vpc = new Network(\"vpc\", NetworkArgs.builder()\n .name(\"connectivity-vpc\")\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"connectivity-vpc-subnet\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(vpc.id())\n .build());\n\n var source_addr = new Address(\"source-addr\", AddressArgs.builder()\n .name(\"src-addr\")\n .subnetwork(subnet.id())\n .addressType(\"INTERNAL\")\n .address(\"10.0.42.42\")\n .region(\"us-central1\")\n .build());\n\n var dest_addr = new Address(\"dest-addr\", AddressArgs.builder()\n .name(\"dest-addr\")\n .subnetwork(subnet.id())\n .addressType(\"INTERNAL\")\n .address(\"10.0.43.43\")\n .region(\"us-central1\")\n .build());\n\n var address_test = new ConnectivityTest(\"address-test\", ConnectivityTestArgs.builder()\n .name(\"conn-test-addr\")\n .source(ConnectivityTestSourceArgs.builder()\n .ipAddress(source_addr.address())\n .projectId(source_addr.project())\n .network(vpc.id())\n .networkType(\"GCP_NETWORK\")\n .build())\n .destination(ConnectivityTestDestinationArgs.builder()\n .ipAddress(dest_addr.address())\n .projectId(dest_addr.project())\n .network(vpc.id())\n .build())\n .protocol(\"UDP\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n address-test:\n type: gcp:networkmanagement:ConnectivityTest\n properties:\n name: conn-test-addr\n source:\n ipAddress: ${[\"source-addr\"].address}\n projectId: ${[\"source-addr\"].project}\n network: ${vpc.id}\n networkType: GCP_NETWORK\n destination:\n ipAddress: ${[\"dest-addr\"].address}\n projectId: ${[\"dest-addr\"].project}\n network: ${vpc.id}\n protocol: UDP\n vpc:\n type: gcp:compute:Network\n properties:\n name: connectivity-vpc\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: connectivity-vpc-subnet\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${vpc.id}\n source-addr:\n type: gcp:compute:Address\n properties:\n name: src-addr\n subnetwork: ${subnet.id}\n addressType: INTERNAL\n address: 10.0.42.42\n region: us-central1\n dest-addr:\n type: gcp:compute:Address\n properties:\n name: dest-addr\n subnetwork: ${subnet.id}\n addressType: INTERNAL\n address: 10.0.43.43\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnectivityTest can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/connectivityTests/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ConnectivityTest can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkmanagement/connectivityTest:ConnectivityTest default projects/{{project}}/locations/global/connectivityTests/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkmanagement/connectivityTest:ConnectivityTest default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkmanagement/connectivityTest:ConnectivityTest default {{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -218247,7 +218247,7 @@ } }, "gcp:networksecurity/authorizationPolicy:AuthorizationPolicy": { - "description": "## Example Usage\n\n### Network Security Authorization Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.AuthorizationPolicy(\"default\", {\n name: \"my-authorization-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n action: \"ALLOW\",\n rules: [{\n sources: [{\n principals: [\"namespace/*\"],\n ipBlocks: [\"1.2.3.0/24\"],\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.AuthorizationPolicy(\"default\",\n name=\"my-authorization-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n action=\"ALLOW\",\n rules=[{\n \"sources\": [{\n \"principals\": [\"namespace/*\"],\n \"ipBlocks\": [\"1.2.3.0/24\"],\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 @default = new Gcp.NetworkSecurity.AuthorizationPolicy(\"default\", new()\n {\n Name = \"my-authorization-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Action = \"ALLOW\",\n Rules = new[]\n {\n new Gcp.NetworkSecurity.Inputs.AuthorizationPolicyRuleArgs\n {\n Sources = new[]\n {\n new Gcp.NetworkSecurity.Inputs.AuthorizationPolicyRuleSourceArgs\n {\n Principals = new[]\n {\n \"namespace/*\",\n },\n IpBlocks = new[]\n {\n \"1.2.3.0/24\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\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 := networksecurity.NewAuthorizationPolicy(ctx, \"default\", \u0026networksecurity.AuthorizationPolicyArgs{\n\t\t\tName: pulumi.String(\"my-authorization-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tAction: pulumi.String(\"ALLOW\"),\n\t\t\tRules: networksecurity.AuthorizationPolicyRuleArray{\n\t\t\t\t\u0026networksecurity.AuthorizationPolicyRuleArgs{\n\t\t\t\t\tSources: networksecurity.AuthorizationPolicyRuleSourceArray{\n\t\t\t\t\t\t\u0026networksecurity.AuthorizationPolicyRuleSourceArgs{\n\t\t\t\t\t\t\tPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"namespace/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tIpBlocks: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"1.2.3.0/24\"),\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.networksecurity.AuthorizationPolicy;\nimport com.pulumi.gcp.networksecurity.AuthorizationPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.AuthorizationPolicyRuleArgs;\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 AuthorizationPolicy(\"default\", AuthorizationPolicyArgs.builder()\n .name(\"my-authorization-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .action(\"ALLOW\")\n .rules(AuthorizationPolicyRuleArgs.builder()\n .sources(AuthorizationPolicyRuleSourceArgs.builder()\n .principals(\"namespace/*\")\n .ipBlocks(\"1.2.3.0/24\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:AuthorizationPolicy\n properties:\n name: my-authorization-policy\n labels:\n foo: bar\n description: my description\n action: ALLOW\n rules:\n - sources:\n - principals:\n - namespace/*\n ipBlocks:\n - 1.2.3.0/24\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Authorization Policy Destinations\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.AuthorizationPolicy(\"default\", {\n name: \"my-authorization-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n action: \"ALLOW\",\n rules: [{\n sources: [{\n principals: [\"namespace/*\"],\n ipBlocks: [\"1.2.3.0/24\"],\n }],\n destinations: [{\n hosts: [\"mydomain.*\"],\n ports: [8080],\n methods: [\"GET\"],\n httpHeaderMatch: {\n headerName: \":method\",\n regexMatch: \"GET\",\n },\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.AuthorizationPolicy(\"default\",\n name=\"my-authorization-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n action=\"ALLOW\",\n rules=[{\n \"sources\": [{\n \"principals\": [\"namespace/*\"],\n \"ipBlocks\": [\"1.2.3.0/24\"],\n }],\n \"destinations\": [{\n \"hosts\": [\"mydomain.*\"],\n \"ports\": [8080],\n \"methods\": [\"GET\"],\n \"httpHeaderMatch\": {\n \"headerName\": \":method\",\n \"regexMatch\": \"GET\",\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 @default = new Gcp.NetworkSecurity.AuthorizationPolicy(\"default\", new()\n {\n Name = \"my-authorization-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Action = \"ALLOW\",\n Rules = new[]\n {\n new Gcp.NetworkSecurity.Inputs.AuthorizationPolicyRuleArgs\n {\n Sources = new[]\n {\n new Gcp.NetworkSecurity.Inputs.AuthorizationPolicyRuleSourceArgs\n {\n Principals = new[]\n {\n \"namespace/*\",\n },\n IpBlocks = new[]\n {\n \"1.2.3.0/24\",\n },\n },\n },\n Destinations = new[]\n {\n new Gcp.NetworkSecurity.Inputs.AuthorizationPolicyRuleDestinationArgs\n {\n Hosts = new[]\n {\n \"mydomain.*\",\n },\n Ports = new[]\n {\n 8080,\n },\n Methods = new[]\n {\n \"GET\",\n },\n HttpHeaderMatch = new Gcp.NetworkSecurity.Inputs.AuthorizationPolicyRuleDestinationHttpHeaderMatchArgs\n {\n HeaderName = \":method\",\n RegexMatch = \"GET\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\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 := networksecurity.NewAuthorizationPolicy(ctx, \"default\", \u0026networksecurity.AuthorizationPolicyArgs{\n\t\t\tName: pulumi.String(\"my-authorization-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tAction: pulumi.String(\"ALLOW\"),\n\t\t\tRules: networksecurity.AuthorizationPolicyRuleArray{\n\t\t\t\t\u0026networksecurity.AuthorizationPolicyRuleArgs{\n\t\t\t\t\tSources: networksecurity.AuthorizationPolicyRuleSourceArray{\n\t\t\t\t\t\t\u0026networksecurity.AuthorizationPolicyRuleSourceArgs{\n\t\t\t\t\t\t\tPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"namespace/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tIpBlocks: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"1.2.3.0/24\"),\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\tDestinations: networksecurity.AuthorizationPolicyRuleDestinationArray{\n\t\t\t\t\t\t\u0026networksecurity.AuthorizationPolicyRuleDestinationArgs{\n\t\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"mydomain.*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPorts: pulumi.IntArray{\n\t\t\t\t\t\t\t\tpulumi.Int(8080),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tHttpHeaderMatch: \u0026networksecurity.AuthorizationPolicyRuleDestinationHttpHeaderMatchArgs{\n\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\":method\"),\n\t\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"GET\"),\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.networksecurity.AuthorizationPolicy;\nimport com.pulumi.gcp.networksecurity.AuthorizationPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.AuthorizationPolicyRuleArgs;\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 AuthorizationPolicy(\"default\", AuthorizationPolicyArgs.builder()\n .name(\"my-authorization-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .action(\"ALLOW\")\n .rules(AuthorizationPolicyRuleArgs.builder()\n .sources(AuthorizationPolicyRuleSourceArgs.builder()\n .principals(\"namespace/*\")\n .ipBlocks(\"1.2.3.0/24\")\n .build())\n .destinations(AuthorizationPolicyRuleDestinationArgs.builder()\n .hosts(\"mydomain.*\")\n .ports(8080)\n .methods(\"GET\")\n .httpHeaderMatch(AuthorizationPolicyRuleDestinationHttpHeaderMatchArgs.builder()\n .headerName(\":method\")\n .regexMatch(\"GET\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:AuthorizationPolicy\n properties:\n name: my-authorization-policy\n labels:\n foo: bar\n description: my description\n action: ALLOW\n rules:\n - sources:\n - principals:\n - namespace/*\n ipBlocks:\n - 1.2.3.0/24\n destinations:\n - hosts:\n - mydomain.*\n ports:\n - 8080\n methods:\n - GET\n httpHeaderMatch:\n headerName: :method\n regexMatch: GET\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAuthorizationPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/authorizationPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, AuthorizationPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/authorizationPolicy:AuthorizationPolicy default projects/{{project}}/locations/{{location}}/authorizationPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/authorizationPolicy:AuthorizationPolicy default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/authorizationPolicy:AuthorizationPolicy default {{location}}/{{name}}\n```\n\n", + "description": "## Example Usage\n\n### Network Security Authorization Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.AuthorizationPolicy(\"default\", {\n name: \"my-authorization-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n action: \"ALLOW\",\n rules: [{\n sources: [{\n principals: [\"namespace/*\"],\n ipBlocks: [\"1.2.3.0/24\"],\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.AuthorizationPolicy(\"default\",\n name=\"my-authorization-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n action=\"ALLOW\",\n rules=[{\n \"sources\": [{\n \"principals\": [\"namespace/*\"],\n \"ip_blocks\": [\"1.2.3.0/24\"],\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 @default = new Gcp.NetworkSecurity.AuthorizationPolicy(\"default\", new()\n {\n Name = \"my-authorization-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Action = \"ALLOW\",\n Rules = new[]\n {\n new Gcp.NetworkSecurity.Inputs.AuthorizationPolicyRuleArgs\n {\n Sources = new[]\n {\n new Gcp.NetworkSecurity.Inputs.AuthorizationPolicyRuleSourceArgs\n {\n Principals = new[]\n {\n \"namespace/*\",\n },\n IpBlocks = new[]\n {\n \"1.2.3.0/24\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\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 := networksecurity.NewAuthorizationPolicy(ctx, \"default\", \u0026networksecurity.AuthorizationPolicyArgs{\n\t\t\tName: pulumi.String(\"my-authorization-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tAction: pulumi.String(\"ALLOW\"),\n\t\t\tRules: networksecurity.AuthorizationPolicyRuleArray{\n\t\t\t\t\u0026networksecurity.AuthorizationPolicyRuleArgs{\n\t\t\t\t\tSources: networksecurity.AuthorizationPolicyRuleSourceArray{\n\t\t\t\t\t\t\u0026networksecurity.AuthorizationPolicyRuleSourceArgs{\n\t\t\t\t\t\t\tPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"namespace/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tIpBlocks: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"1.2.3.0/24\"),\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.networksecurity.AuthorizationPolicy;\nimport com.pulumi.gcp.networksecurity.AuthorizationPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.AuthorizationPolicyRuleArgs;\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 AuthorizationPolicy(\"default\", AuthorizationPolicyArgs.builder()\n .name(\"my-authorization-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .action(\"ALLOW\")\n .rules(AuthorizationPolicyRuleArgs.builder()\n .sources(AuthorizationPolicyRuleSourceArgs.builder()\n .principals(\"namespace/*\")\n .ipBlocks(\"1.2.3.0/24\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:AuthorizationPolicy\n properties:\n name: my-authorization-policy\n labels:\n foo: bar\n description: my description\n action: ALLOW\n rules:\n - sources:\n - principals:\n - namespace/*\n ipBlocks:\n - 1.2.3.0/24\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Authorization Policy Destinations\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.AuthorizationPolicy(\"default\", {\n name: \"my-authorization-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n action: \"ALLOW\",\n rules: [{\n sources: [{\n principals: [\"namespace/*\"],\n ipBlocks: [\"1.2.3.0/24\"],\n }],\n destinations: [{\n hosts: [\"mydomain.*\"],\n ports: [8080],\n methods: [\"GET\"],\n httpHeaderMatch: {\n headerName: \":method\",\n regexMatch: \"GET\",\n },\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.AuthorizationPolicy(\"default\",\n name=\"my-authorization-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n action=\"ALLOW\",\n rules=[{\n \"sources\": [{\n \"principals\": [\"namespace/*\"],\n \"ip_blocks\": [\"1.2.3.0/24\"],\n }],\n \"destinations\": [{\n \"hosts\": [\"mydomain.*\"],\n \"ports\": [8080],\n \"methods\": [\"GET\"],\n \"http_header_match\": {\n \"header_name\": \":method\",\n \"regex_match\": \"GET\",\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 @default = new Gcp.NetworkSecurity.AuthorizationPolicy(\"default\", new()\n {\n Name = \"my-authorization-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Action = \"ALLOW\",\n Rules = new[]\n {\n new Gcp.NetworkSecurity.Inputs.AuthorizationPolicyRuleArgs\n {\n Sources = new[]\n {\n new Gcp.NetworkSecurity.Inputs.AuthorizationPolicyRuleSourceArgs\n {\n Principals = new[]\n {\n \"namespace/*\",\n },\n IpBlocks = new[]\n {\n \"1.2.3.0/24\",\n },\n },\n },\n Destinations = new[]\n {\n new Gcp.NetworkSecurity.Inputs.AuthorizationPolicyRuleDestinationArgs\n {\n Hosts = new[]\n {\n \"mydomain.*\",\n },\n Ports = new[]\n {\n 8080,\n },\n Methods = new[]\n {\n \"GET\",\n },\n HttpHeaderMatch = new Gcp.NetworkSecurity.Inputs.AuthorizationPolicyRuleDestinationHttpHeaderMatchArgs\n {\n HeaderName = \":method\",\n RegexMatch = \"GET\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\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 := networksecurity.NewAuthorizationPolicy(ctx, \"default\", \u0026networksecurity.AuthorizationPolicyArgs{\n\t\t\tName: pulumi.String(\"my-authorization-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tAction: pulumi.String(\"ALLOW\"),\n\t\t\tRules: networksecurity.AuthorizationPolicyRuleArray{\n\t\t\t\t\u0026networksecurity.AuthorizationPolicyRuleArgs{\n\t\t\t\t\tSources: networksecurity.AuthorizationPolicyRuleSourceArray{\n\t\t\t\t\t\t\u0026networksecurity.AuthorizationPolicyRuleSourceArgs{\n\t\t\t\t\t\t\tPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"namespace/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tIpBlocks: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"1.2.3.0/24\"),\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\tDestinations: networksecurity.AuthorizationPolicyRuleDestinationArray{\n\t\t\t\t\t\t\u0026networksecurity.AuthorizationPolicyRuleDestinationArgs{\n\t\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"mydomain.*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPorts: pulumi.IntArray{\n\t\t\t\t\t\t\t\tpulumi.Int(8080),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tHttpHeaderMatch: \u0026networksecurity.AuthorizationPolicyRuleDestinationHttpHeaderMatchArgs{\n\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\":method\"),\n\t\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"GET\"),\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.networksecurity.AuthorizationPolicy;\nimport com.pulumi.gcp.networksecurity.AuthorizationPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.AuthorizationPolicyRuleArgs;\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 AuthorizationPolicy(\"default\", AuthorizationPolicyArgs.builder()\n .name(\"my-authorization-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .action(\"ALLOW\")\n .rules(AuthorizationPolicyRuleArgs.builder()\n .sources(AuthorizationPolicyRuleSourceArgs.builder()\n .principals(\"namespace/*\")\n .ipBlocks(\"1.2.3.0/24\")\n .build())\n .destinations(AuthorizationPolicyRuleDestinationArgs.builder()\n .hosts(\"mydomain.*\")\n .ports(8080)\n .methods(\"GET\")\n .httpHeaderMatch(AuthorizationPolicyRuleDestinationHttpHeaderMatchArgs.builder()\n .headerName(\":method\")\n .regexMatch(\"GET\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:AuthorizationPolicy\n properties:\n name: my-authorization-policy\n labels:\n foo: bar\n description: my description\n action: ALLOW\n rules:\n - sources:\n - principals:\n - namespace/*\n ipBlocks:\n - 1.2.3.0/24\n destinations:\n - hosts:\n - mydomain.*\n ports:\n - 8080\n methods:\n - GET\n httpHeaderMatch:\n headerName: :method\n regexMatch: GET\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAuthorizationPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/authorizationPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, AuthorizationPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/authorizationPolicy:AuthorizationPolicy default projects/{{project}}/locations/{{location}}/authorizationPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/authorizationPolicy:AuthorizationPolicy default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/authorizationPolicy:AuthorizationPolicy default {{location}}/{{name}}\n```\n\n", "properties": { "action": { "type": "string", @@ -218426,7 +218426,7 @@ } }, "gcp:networksecurity/clientTlsPolicy:ClientTlsPolicy": { - "description": "## Example Usage\n\n### Network Security Client Tls Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.ClientTlsPolicy(\"default\", {\n name: \"my-client-tls-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n sni: \"secure.example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.ClientTlsPolicy(\"default\",\n name=\"my-client-tls-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n sni=\"secure.example.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 @default = new Gcp.NetworkSecurity.ClientTlsPolicy(\"default\", new()\n {\n Name = \"my-client-tls-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Sni = \"secure.example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\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 := networksecurity.NewClientTlsPolicy(ctx, \"default\", \u0026networksecurity.ClientTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-client-tls-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tSni: pulumi.String(\"secure.example.com\"),\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.networksecurity.ClientTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ClientTlsPolicyArgs;\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 ClientTlsPolicy(\"default\", ClientTlsPolicyArgs.builder()\n .name(\"my-client-tls-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .sni(\"secure.example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ClientTlsPolicy\n properties:\n name: my-client-tls-policy\n labels:\n foo: bar\n description: my description\n sni: secure.example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Client Tls Policy Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.ClientTlsPolicy(\"default\", {\n name: \"my-client-tls-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n clientCertificate: {\n certificateProviderInstance: {\n pluginInstance: \"google_cloud_private_spiffe\",\n },\n },\n serverValidationCas: [\n {\n grpcEndpoint: {\n targetUri: \"unix:mypath\",\n },\n },\n {\n grpcEndpoint: {\n targetUri: \"unix:mypath1\",\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.ClientTlsPolicy(\"default\",\n name=\"my-client-tls-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n client_certificate={\n \"certificateProviderInstance\": {\n \"pluginInstance\": \"google_cloud_private_spiffe\",\n },\n },\n server_validation_cas=[\n {\n \"grpcEndpoint\": {\n \"targetUri\": \"unix:mypath\",\n },\n },\n {\n \"grpcEndpoint\": {\n \"targetUri\": \"unix:mypath1\",\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 @default = new Gcp.NetworkSecurity.ClientTlsPolicy(\"default\", new()\n {\n Name = \"my-client-tls-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n ClientCertificate = new Gcp.NetworkSecurity.Inputs.ClientTlsPolicyClientCertificateArgs\n {\n CertificateProviderInstance = new Gcp.NetworkSecurity.Inputs.ClientTlsPolicyClientCertificateCertificateProviderInstanceArgs\n {\n PluginInstance = \"google_cloud_private_spiffe\",\n },\n },\n ServerValidationCas = new[]\n {\n new Gcp.NetworkSecurity.Inputs.ClientTlsPolicyServerValidationCaArgs\n {\n GrpcEndpoint = new Gcp.NetworkSecurity.Inputs.ClientTlsPolicyServerValidationCaGrpcEndpointArgs\n {\n TargetUri = \"unix:mypath\",\n },\n },\n new Gcp.NetworkSecurity.Inputs.ClientTlsPolicyServerValidationCaArgs\n {\n GrpcEndpoint = new Gcp.NetworkSecurity.Inputs.ClientTlsPolicyServerValidationCaGrpcEndpointArgs\n {\n TargetUri = \"unix:mypath1\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\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 := networksecurity.NewClientTlsPolicy(ctx, \"default\", \u0026networksecurity.ClientTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-client-tls-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tClientCertificate: \u0026networksecurity.ClientTlsPolicyClientCertificateArgs{\n\t\t\t\tCertificateProviderInstance: \u0026networksecurity.ClientTlsPolicyClientCertificateCertificateProviderInstanceArgs{\n\t\t\t\t\tPluginInstance: pulumi.String(\"google_cloud_private_spiffe\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tServerValidationCas: networksecurity.ClientTlsPolicyServerValidationCaArray{\n\t\t\t\t\u0026networksecurity.ClientTlsPolicyServerValidationCaArgs{\n\t\t\t\t\tGrpcEndpoint: \u0026networksecurity.ClientTlsPolicyServerValidationCaGrpcEndpointArgs{\n\t\t\t\t\t\tTargetUri: pulumi.String(\"unix:mypath\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026networksecurity.ClientTlsPolicyServerValidationCaArgs{\n\t\t\t\t\tGrpcEndpoint: \u0026networksecurity.ClientTlsPolicyServerValidationCaGrpcEndpointArgs{\n\t\t\t\t\t\tTargetUri: pulumi.String(\"unix:mypath1\"),\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.networksecurity.ClientTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ClientTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ClientTlsPolicyClientCertificateArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ClientTlsPolicyClientCertificateCertificateProviderInstanceArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ClientTlsPolicyServerValidationCaArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ClientTlsPolicyServerValidationCaGrpcEndpointArgs;\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 ClientTlsPolicy(\"default\", ClientTlsPolicyArgs.builder()\n .name(\"my-client-tls-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .clientCertificate(ClientTlsPolicyClientCertificateArgs.builder()\n .certificateProviderInstance(ClientTlsPolicyClientCertificateCertificateProviderInstanceArgs.builder()\n .pluginInstance(\"google_cloud_private_spiffe\")\n .build())\n .build())\n .serverValidationCas( \n ClientTlsPolicyServerValidationCaArgs.builder()\n .grpcEndpoint(ClientTlsPolicyServerValidationCaGrpcEndpointArgs.builder()\n .targetUri(\"unix:mypath\")\n .build())\n .build(),\n ClientTlsPolicyServerValidationCaArgs.builder()\n .grpcEndpoint(ClientTlsPolicyServerValidationCaGrpcEndpointArgs.builder()\n .targetUri(\"unix:mypath1\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ClientTlsPolicy\n properties:\n name: my-client-tls-policy\n labels:\n foo: bar\n description: my description\n clientCertificate:\n certificateProviderInstance:\n pluginInstance: google_cloud_private_spiffe\n serverValidationCas:\n - grpcEndpoint:\n targetUri: unix:mypath\n - grpcEndpoint:\n targetUri: unix:mypath1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nClientTlsPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clientTlsPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ClientTlsPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/clientTlsPolicy:ClientTlsPolicy default projects/{{project}}/locations/{{location}}/clientTlsPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/clientTlsPolicy:ClientTlsPolicy default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/clientTlsPolicy:ClientTlsPolicy default {{location}}/{{name}}\n```\n\n", + "description": "## Example Usage\n\n### Network Security Client Tls Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.ClientTlsPolicy(\"default\", {\n name: \"my-client-tls-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n sni: \"secure.example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.ClientTlsPolicy(\"default\",\n name=\"my-client-tls-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n sni=\"secure.example.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 @default = new Gcp.NetworkSecurity.ClientTlsPolicy(\"default\", new()\n {\n Name = \"my-client-tls-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Sni = \"secure.example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\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 := networksecurity.NewClientTlsPolicy(ctx, \"default\", \u0026networksecurity.ClientTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-client-tls-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tSni: pulumi.String(\"secure.example.com\"),\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.networksecurity.ClientTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ClientTlsPolicyArgs;\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 ClientTlsPolicy(\"default\", ClientTlsPolicyArgs.builder()\n .name(\"my-client-tls-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .sni(\"secure.example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ClientTlsPolicy\n properties:\n name: my-client-tls-policy\n labels:\n foo: bar\n description: my description\n sni: secure.example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Client Tls Policy Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.ClientTlsPolicy(\"default\", {\n name: \"my-client-tls-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n clientCertificate: {\n certificateProviderInstance: {\n pluginInstance: \"google_cloud_private_spiffe\",\n },\n },\n serverValidationCas: [\n {\n grpcEndpoint: {\n targetUri: \"unix:mypath\",\n },\n },\n {\n grpcEndpoint: {\n targetUri: \"unix:mypath1\",\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.ClientTlsPolicy(\"default\",\n name=\"my-client-tls-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n client_certificate={\n \"certificate_provider_instance\": {\n \"plugin_instance\": \"google_cloud_private_spiffe\",\n },\n },\n server_validation_cas=[\n {\n \"grpc_endpoint\": {\n \"target_uri\": \"unix:mypath\",\n },\n },\n {\n \"grpc_endpoint\": {\n \"target_uri\": \"unix:mypath1\",\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 @default = new Gcp.NetworkSecurity.ClientTlsPolicy(\"default\", new()\n {\n Name = \"my-client-tls-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n ClientCertificate = new Gcp.NetworkSecurity.Inputs.ClientTlsPolicyClientCertificateArgs\n {\n CertificateProviderInstance = new Gcp.NetworkSecurity.Inputs.ClientTlsPolicyClientCertificateCertificateProviderInstanceArgs\n {\n PluginInstance = \"google_cloud_private_spiffe\",\n },\n },\n ServerValidationCas = new[]\n {\n new Gcp.NetworkSecurity.Inputs.ClientTlsPolicyServerValidationCaArgs\n {\n GrpcEndpoint = new Gcp.NetworkSecurity.Inputs.ClientTlsPolicyServerValidationCaGrpcEndpointArgs\n {\n TargetUri = \"unix:mypath\",\n },\n },\n new Gcp.NetworkSecurity.Inputs.ClientTlsPolicyServerValidationCaArgs\n {\n GrpcEndpoint = new Gcp.NetworkSecurity.Inputs.ClientTlsPolicyServerValidationCaGrpcEndpointArgs\n {\n TargetUri = \"unix:mypath1\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\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 := networksecurity.NewClientTlsPolicy(ctx, \"default\", \u0026networksecurity.ClientTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-client-tls-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tClientCertificate: \u0026networksecurity.ClientTlsPolicyClientCertificateArgs{\n\t\t\t\tCertificateProviderInstance: \u0026networksecurity.ClientTlsPolicyClientCertificateCertificateProviderInstanceArgs{\n\t\t\t\t\tPluginInstance: pulumi.String(\"google_cloud_private_spiffe\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tServerValidationCas: networksecurity.ClientTlsPolicyServerValidationCaArray{\n\t\t\t\t\u0026networksecurity.ClientTlsPolicyServerValidationCaArgs{\n\t\t\t\t\tGrpcEndpoint: \u0026networksecurity.ClientTlsPolicyServerValidationCaGrpcEndpointArgs{\n\t\t\t\t\t\tTargetUri: pulumi.String(\"unix:mypath\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026networksecurity.ClientTlsPolicyServerValidationCaArgs{\n\t\t\t\t\tGrpcEndpoint: \u0026networksecurity.ClientTlsPolicyServerValidationCaGrpcEndpointArgs{\n\t\t\t\t\t\tTargetUri: pulumi.String(\"unix:mypath1\"),\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.networksecurity.ClientTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ClientTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ClientTlsPolicyClientCertificateArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ClientTlsPolicyClientCertificateCertificateProviderInstanceArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ClientTlsPolicyServerValidationCaArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ClientTlsPolicyServerValidationCaGrpcEndpointArgs;\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 ClientTlsPolicy(\"default\", ClientTlsPolicyArgs.builder()\n .name(\"my-client-tls-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .clientCertificate(ClientTlsPolicyClientCertificateArgs.builder()\n .certificateProviderInstance(ClientTlsPolicyClientCertificateCertificateProviderInstanceArgs.builder()\n .pluginInstance(\"google_cloud_private_spiffe\")\n .build())\n .build())\n .serverValidationCas( \n ClientTlsPolicyServerValidationCaArgs.builder()\n .grpcEndpoint(ClientTlsPolicyServerValidationCaGrpcEndpointArgs.builder()\n .targetUri(\"unix:mypath\")\n .build())\n .build(),\n ClientTlsPolicyServerValidationCaArgs.builder()\n .grpcEndpoint(ClientTlsPolicyServerValidationCaGrpcEndpointArgs.builder()\n .targetUri(\"unix:mypath1\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ClientTlsPolicy\n properties:\n name: my-client-tls-policy\n labels:\n foo: bar\n description: my description\n clientCertificate:\n certificateProviderInstance:\n pluginInstance: google_cloud_private_spiffe\n serverValidationCas:\n - grpcEndpoint:\n targetUri: unix:mypath\n - grpcEndpoint:\n targetUri: unix:mypath1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nClientTlsPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clientTlsPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ClientTlsPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/clientTlsPolicy:ClientTlsPolicy default projects/{{project}}/locations/{{location}}/clientTlsPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/clientTlsPolicy:ClientTlsPolicy default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/clientTlsPolicy:ClientTlsPolicy default {{location}}/{{name}}\n```\n\n", "properties": { "clientCertificate": { "$ref": "#/types/gcp:networksecurity/ClientTlsPolicyClientCertificate:ClientTlsPolicyClientCertificate", @@ -219020,7 +219020,7 @@ } }, "gcp:networksecurity/gatewaySecurityPolicy:GatewaySecurityPolicy": { - "description": "The GatewaySecurityPolicy resource contains a collection of GatewaySecurityPolicyRules and associated metadata.\n\n\nTo get more information about GatewaySecurityPolicy, see:\n\n* [API documentation](https://cloud.google.com/secure-web-proxy/docs/reference/network-security/rest/v1/projects.locations.gatewaySecurityPolicies)\n\n## Example Usage\n\n### Network Security Gateway Security Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.GatewaySecurityPolicy(\"default\", {\n name: \"my-gateway-security-policy\",\n location: \"us-central1\",\n description: \"my description\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.GatewaySecurityPolicy(\"default\",\n name=\"my-gateway-security-policy\",\n location=\"us-central1\",\n description=\"my description\")\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.NetworkSecurity.GatewaySecurityPolicy(\"default\", new()\n {\n Name = \"my-gateway-security-policy\",\n Location = \"us-central1\",\n Description = \"my description\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\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 := networksecurity.NewGatewaySecurityPolicy(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-gateway-security-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\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.networksecurity.GatewaySecurityPolicy;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyArgs;\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 GatewaySecurityPolicy(\"default\", GatewaySecurityPolicyArgs.builder()\n .name(\"my-gateway-security-policy\")\n .location(\"us-central1\")\n .description(\"my description\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:GatewaySecurityPolicy\n properties:\n name: my-gateway-security-policy\n location: us-central1\n description: my description\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Gateway Security Policy Tls Inspection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n name: \"my-basic-ca-pool\",\n location: \"us-central1\",\n tier: \"DEVOPS\",\n publishingOptions: {\n publishCaCert: false,\n publishCrl: false,\n },\n issuancePolicy: {\n maximumLifetime: \"1209600s\",\n baselineValues: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {},\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n pool: _default.name,\n certificateAuthorityId: \"my-basic-certificate-authority\",\n location: \"us-central1\",\n lifetime: \"86400s\",\n type: \"SELF_SIGNED\",\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n config: {\n subjectConfig: {\n subject: {\n organization: \"Test LLC\",\n commonName: \"my-ca\",\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: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n});\nconst project = gcp.organizations.getProject({});\nconst tlsInspectionPermission = new gcp.certificateauthority.CaPoolIamMember(\"tls_inspection_permission\", {\n caPool: _default.id,\n role: \"roles/privateca.certificateManager\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com`),\n});\nconst defaultTlsInspectionPolicy = new gcp.networksecurity.TlsInspectionPolicy(\"default\", {\n name: \"my-tls-inspection-policy\",\n location: \"us-central1\",\n caPool: _default.id,\n}, {\n dependsOn: [\n _default,\n defaultAuthority,\n tlsInspectionPermission,\n ],\n});\nconst defaultGatewaySecurityPolicy = new gcp.networksecurity.GatewaySecurityPolicy(\"default\", {\n name: \"my-gateway-security-policy\",\n location: \"us-central1\",\n description: \"my description\",\n tlsInspectionPolicy: defaultTlsInspectionPolicy.id,\n}, {\n dependsOn: [defaultTlsInspectionPolicy],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n name=\"my-basic-ca-pool\",\n location=\"us-central1\",\n tier=\"DEVOPS\",\n publishing_options={\n \"publishCaCert\": False,\n \"publishCrl\": False,\n },\n issuance_policy={\n \"maximumLifetime\": \"1209600s\",\n \"baselineValues\": {\n \"caOptions\": {\n \"isCa\": False,\n },\n \"keyUsage\": {\n \"baseKeyUsage\": {},\n \"extendedKeyUsage\": {\n \"serverAuth\": True,\n },\n },\n },\n })\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n pool=default.name,\n certificate_authority_id=\"my-basic-certificate-authority\",\n location=\"us-central1\",\n lifetime=\"86400s\",\n type=\"SELF_SIGNED\",\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True,\n config={\n \"subjectConfig\": {\n \"subject\": {\n \"organization\": \"Test LLC\",\n \"commonName\": \"my-ca\",\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\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n })\nproject = gcp.organizations.get_project()\ntls_inspection_permission = gcp.certificateauthority.CaPoolIamMember(\"tls_inspection_permission\",\n ca_pool=default.id,\n role=\"roles/privateca.certificateManager\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com\")\ndefault_tls_inspection_policy = gcp.networksecurity.TlsInspectionPolicy(\"default\",\n name=\"my-tls-inspection-policy\",\n location=\"us-central1\",\n ca_pool=default.id,\n opts = pulumi.ResourceOptions(depends_on=[\n default,\n default_authority,\n tls_inspection_permission,\n ]))\ndefault_gateway_security_policy = gcp.networksecurity.GatewaySecurityPolicy(\"default\",\n name=\"my-gateway-security-policy\",\n location=\"us-central1\",\n description=\"my description\",\n tls_inspection_policy=default_tls_inspection_policy.id,\n opts = pulumi.ResourceOptions(depends_on=[default_tls_inspection_policy]))\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.CertificateAuthority.CaPool(\"default\", new()\n {\n Name = \"my-basic-ca-pool\",\n Location = \"us-central1\",\n Tier = \"DEVOPS\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = false,\n PublishCrl = false,\n },\n IssuancePolicy = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyArgs\n {\n MaximumLifetime = \"1209600s\",\n BaselineValues = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs\n {\n BaseKeyUsage = null,\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = @default.Name,\n CertificateAuthorityId = \"my-basic-certificate-authority\",\n Location = \"us-central1\",\n Lifetime = \"86400s\",\n Type = \"SELF_SIGNED\",\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\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 = \"Test LLC\",\n CommonName = \"my-ca\",\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 = false,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var tlsInspectionPermission = new Gcp.CertificateAuthority.CaPoolIamMember(\"tls_inspection_permission\", new()\n {\n CaPool = @default.Id,\n Role = \"roles/privateca.certificateManager\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-networksecurity.iam.gserviceaccount.com\",\n });\n\n var defaultTlsInspectionPolicy = new Gcp.NetworkSecurity.TlsInspectionPolicy(\"default\", new()\n {\n Name = \"my-tls-inspection-policy\",\n Location = \"us-central1\",\n CaPool = @default.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n defaultAuthority,\n tlsInspectionPermission,\n },\n });\n\n var defaultGatewaySecurityPolicy = new Gcp.NetworkSecurity.GatewaySecurityPolicy(\"default\", new()\n {\n Name = \"my-gateway-security-policy\",\n Location = \"us-central1\",\n Description = \"my description\",\n TlsInspectionPolicy = defaultTlsInspectionPolicy.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultTlsInspectionPolicy,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"my-basic-ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVOPS\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(false),\n\t\t\t\tPublishCrl: pulumi.Bool(false),\n\t\t\t},\n\t\t\tIssuancePolicy: \u0026certificateauthority.CaPoolIssuancePolicyArgs{\n\t\t\t\tMaximumLifetime: pulumi.String(\"1209600s\"),\n\t\t\t\tBaselineValues: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: nil,\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs{\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-basic-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tType: pulumi.String(\"SELF_SIGNED\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\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(\"Test LLC\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-ca\"),\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(false),\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})\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\ttlsInspectionPermission, err := certificateauthority.NewCaPoolIamMember(ctx, \"tls_inspection_permission\", \u0026certificateauthority.CaPoolIamMemberArgs{\n\t\t\tCaPool: _default.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateManager\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-networksecurity.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTlsInspectionPolicy, err := networksecurity.NewTlsInspectionPolicy(ctx, \"default\", \u0026networksecurity.TlsInspectionPolicyArgs{\n\t\t\tName: pulumi.String(\"my-tls-inspection-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCaPool: _default.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t\tdefaultAuthority,\n\t\t\ttlsInspectionPermission,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewGatewaySecurityPolicy(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-gateway-security-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tTlsInspectionPolicy: defaultTlsInspectionPolicy.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultTlsInspectionPolicy,\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.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs;\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.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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMember;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMemberArgs;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicy;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicyArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicy;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .name(\"my-basic-ca-pool\")\n .location(\"us-central1\")\n .tier(\"DEVOPS\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(false)\n .publishCrl(false)\n .build())\n .issuancePolicy(CaPoolIssuancePolicyArgs.builder()\n .maximumLifetime(\"1209600s\")\n .baselineValues(CaPoolIssuancePolicyBaselineValuesArgs.builder()\n .caOptions(CaPoolIssuancePolicyBaselineValuesCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageArgs.builder()\n .baseKeyUsage()\n .extendedKeyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .pool(default_.name())\n .certificateAuthorityId(\"my-basic-certificate-authority\")\n .location(\"us-central1\")\n .lifetime(\"86400s\")\n .type(\"SELF_SIGNED\")\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"Test LLC\")\n .commonName(\"my-ca\")\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(false)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var tlsInspectionPermission = new CaPoolIamMember(\"tlsInspectionPermission\", CaPoolIamMemberArgs.builder()\n .caPool(default_.id())\n .role(\"roles/privateca.certificateManager\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-networksecurity.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var defaultTlsInspectionPolicy = new TlsInspectionPolicy(\"defaultTlsInspectionPolicy\", TlsInspectionPolicyArgs.builder()\n .name(\"my-tls-inspection-policy\")\n .location(\"us-central1\")\n .caPool(default_.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n default_,\n defaultAuthority,\n tlsInspectionPermission)\n .build());\n\n var defaultGatewaySecurityPolicy = new GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", GatewaySecurityPolicyArgs.builder()\n .name(\"my-gateway-security-policy\")\n .location(\"us-central1\")\n .description(\"my description\")\n .tlsInspectionPolicy(defaultTlsInspectionPolicy.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultTlsInspectionPolicy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n name: my-basic-ca-pool\n location: us-central1\n tier: DEVOPS\n publishingOptions:\n publishCaCert: false\n publishCrl: false\n issuancePolicy:\n maximumLifetime: 1209600s\n baselineValues:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage: {}\n extendedKeyUsage:\n serverAuth: true\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n pool: ${default.name}\n certificateAuthorityId: my-basic-certificate-authority\n location: us-central1\n lifetime: 86400s\n type: SELF_SIGNED\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n config:\n subjectConfig:\n subject:\n organization: Test LLC\n commonName: my-ca\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n tlsInspectionPermission:\n type: gcp:certificateauthority:CaPoolIamMember\n name: tls_inspection_permission\n properties:\n caPool: ${default.id}\n role: roles/privateca.certificateManager\n member: serviceAccount:service-${project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com\n defaultTlsInspectionPolicy:\n type: gcp:networksecurity:TlsInspectionPolicy\n name: default\n properties:\n name: my-tls-inspection-policy\n location: us-central1\n caPool: ${default.id}\n options:\n dependson:\n - ${default}\n - ${defaultAuthority}\n - ${tlsInspectionPermission}\n defaultGatewaySecurityPolicy:\n type: gcp:networksecurity:GatewaySecurityPolicy\n name: default\n properties:\n name: my-gateway-security-policy\n location: us-central1\n description: my description\n tlsInspectionPolicy: ${defaultTlsInspectionPolicy.id}\n options:\n dependson:\n - ${defaultTlsInspectionPolicy}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGatewaySecurityPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/gatewaySecurityPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, GatewaySecurityPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/gatewaySecurityPolicy:GatewaySecurityPolicy default projects/{{project}}/locations/{{location}}/gatewaySecurityPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/gatewaySecurityPolicy:GatewaySecurityPolicy default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/gatewaySecurityPolicy:GatewaySecurityPolicy default {{location}}/{{name}}\n```\n\n", + "description": "The GatewaySecurityPolicy resource contains a collection of GatewaySecurityPolicyRules and associated metadata.\n\n\nTo get more information about GatewaySecurityPolicy, see:\n\n* [API documentation](https://cloud.google.com/secure-web-proxy/docs/reference/network-security/rest/v1/projects.locations.gatewaySecurityPolicies)\n\n## Example Usage\n\n### Network Security Gateway Security Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.GatewaySecurityPolicy(\"default\", {\n name: \"my-gateway-security-policy\",\n location: \"us-central1\",\n description: \"my description\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.GatewaySecurityPolicy(\"default\",\n name=\"my-gateway-security-policy\",\n location=\"us-central1\",\n description=\"my description\")\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.NetworkSecurity.GatewaySecurityPolicy(\"default\", new()\n {\n Name = \"my-gateway-security-policy\",\n Location = \"us-central1\",\n Description = \"my description\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\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 := networksecurity.NewGatewaySecurityPolicy(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-gateway-security-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\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.networksecurity.GatewaySecurityPolicy;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyArgs;\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 GatewaySecurityPolicy(\"default\", GatewaySecurityPolicyArgs.builder()\n .name(\"my-gateway-security-policy\")\n .location(\"us-central1\")\n .description(\"my description\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:GatewaySecurityPolicy\n properties:\n name: my-gateway-security-policy\n location: us-central1\n description: my description\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Gateway Security Policy Tls Inspection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n name: \"my-basic-ca-pool\",\n location: \"us-central1\",\n tier: \"DEVOPS\",\n publishingOptions: {\n publishCaCert: false,\n publishCrl: false,\n },\n issuancePolicy: {\n maximumLifetime: \"1209600s\",\n baselineValues: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {},\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n pool: _default.name,\n certificateAuthorityId: \"my-basic-certificate-authority\",\n location: \"us-central1\",\n lifetime: \"86400s\",\n type: \"SELF_SIGNED\",\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n config: {\n subjectConfig: {\n subject: {\n organization: \"Test LLC\",\n commonName: \"my-ca\",\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: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n});\nconst project = gcp.organizations.getProject({});\nconst tlsInspectionPermission = new gcp.certificateauthority.CaPoolIamMember(\"tls_inspection_permission\", {\n caPool: _default.id,\n role: \"roles/privateca.certificateManager\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com`),\n});\nconst defaultTlsInspectionPolicy = new gcp.networksecurity.TlsInspectionPolicy(\"default\", {\n name: \"my-tls-inspection-policy\",\n location: \"us-central1\",\n caPool: _default.id,\n}, {\n dependsOn: [\n _default,\n defaultAuthority,\n tlsInspectionPermission,\n ],\n});\nconst defaultGatewaySecurityPolicy = new gcp.networksecurity.GatewaySecurityPolicy(\"default\", {\n name: \"my-gateway-security-policy\",\n location: \"us-central1\",\n description: \"my description\",\n tlsInspectionPolicy: defaultTlsInspectionPolicy.id,\n}, {\n dependsOn: [defaultTlsInspectionPolicy],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n name=\"my-basic-ca-pool\",\n location=\"us-central1\",\n tier=\"DEVOPS\",\n publishing_options={\n \"publish_ca_cert\": False,\n \"publish_crl\": False,\n },\n issuance_policy={\n \"maximum_lifetime\": \"1209600s\",\n \"baseline_values\": {\n \"ca_options\": {\n \"is_ca\": False,\n },\n \"key_usage\": {\n \"base_key_usage\": {},\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n })\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n pool=default.name,\n certificate_authority_id=\"my-basic-certificate-authority\",\n location=\"us-central1\",\n lifetime=\"86400s\",\n type=\"SELF_SIGNED\",\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True,\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"Test LLC\",\n \"common_name\": \"my-ca\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n })\nproject = gcp.organizations.get_project()\ntls_inspection_permission = gcp.certificateauthority.CaPoolIamMember(\"tls_inspection_permission\",\n ca_pool=default.id,\n role=\"roles/privateca.certificateManager\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com\")\ndefault_tls_inspection_policy = gcp.networksecurity.TlsInspectionPolicy(\"default\",\n name=\"my-tls-inspection-policy\",\n location=\"us-central1\",\n ca_pool=default.id,\n opts = pulumi.ResourceOptions(depends_on=[\n default,\n default_authority,\n tls_inspection_permission,\n ]))\ndefault_gateway_security_policy = gcp.networksecurity.GatewaySecurityPolicy(\"default\",\n name=\"my-gateway-security-policy\",\n location=\"us-central1\",\n description=\"my description\",\n tls_inspection_policy=default_tls_inspection_policy.id,\n opts = pulumi.ResourceOptions(depends_on=[default_tls_inspection_policy]))\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.CertificateAuthority.CaPool(\"default\", new()\n {\n Name = \"my-basic-ca-pool\",\n Location = \"us-central1\",\n Tier = \"DEVOPS\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = false,\n PublishCrl = false,\n },\n IssuancePolicy = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyArgs\n {\n MaximumLifetime = \"1209600s\",\n BaselineValues = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs\n {\n BaseKeyUsage = null,\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = @default.Name,\n CertificateAuthorityId = \"my-basic-certificate-authority\",\n Location = \"us-central1\",\n Lifetime = \"86400s\",\n Type = \"SELF_SIGNED\",\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\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 = \"Test LLC\",\n CommonName = \"my-ca\",\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 = false,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var tlsInspectionPermission = new Gcp.CertificateAuthority.CaPoolIamMember(\"tls_inspection_permission\", new()\n {\n CaPool = @default.Id,\n Role = \"roles/privateca.certificateManager\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-networksecurity.iam.gserviceaccount.com\",\n });\n\n var defaultTlsInspectionPolicy = new Gcp.NetworkSecurity.TlsInspectionPolicy(\"default\", new()\n {\n Name = \"my-tls-inspection-policy\",\n Location = \"us-central1\",\n CaPool = @default.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n defaultAuthority,\n tlsInspectionPermission,\n },\n });\n\n var defaultGatewaySecurityPolicy = new Gcp.NetworkSecurity.GatewaySecurityPolicy(\"default\", new()\n {\n Name = \"my-gateway-security-policy\",\n Location = \"us-central1\",\n Description = \"my description\",\n TlsInspectionPolicy = defaultTlsInspectionPolicy.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultTlsInspectionPolicy,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"my-basic-ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVOPS\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(false),\n\t\t\t\tPublishCrl: pulumi.Bool(false),\n\t\t\t},\n\t\t\tIssuancePolicy: \u0026certificateauthority.CaPoolIssuancePolicyArgs{\n\t\t\t\tMaximumLifetime: pulumi.String(\"1209600s\"),\n\t\t\t\tBaselineValues: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: nil,\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs{\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-basic-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tType: pulumi.String(\"SELF_SIGNED\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\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(\"Test LLC\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-ca\"),\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(false),\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})\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\ttlsInspectionPermission, err := certificateauthority.NewCaPoolIamMember(ctx, \"tls_inspection_permission\", \u0026certificateauthority.CaPoolIamMemberArgs{\n\t\t\tCaPool: _default.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateManager\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-networksecurity.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTlsInspectionPolicy, err := networksecurity.NewTlsInspectionPolicy(ctx, \"default\", \u0026networksecurity.TlsInspectionPolicyArgs{\n\t\t\tName: pulumi.String(\"my-tls-inspection-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCaPool: _default.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t\tdefaultAuthority,\n\t\t\ttlsInspectionPermission,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewGatewaySecurityPolicy(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-gateway-security-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tTlsInspectionPolicy: defaultTlsInspectionPolicy.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultTlsInspectionPolicy,\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.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs;\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.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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMember;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMemberArgs;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicy;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicyArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicy;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .name(\"my-basic-ca-pool\")\n .location(\"us-central1\")\n .tier(\"DEVOPS\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(false)\n .publishCrl(false)\n .build())\n .issuancePolicy(CaPoolIssuancePolicyArgs.builder()\n .maximumLifetime(\"1209600s\")\n .baselineValues(CaPoolIssuancePolicyBaselineValuesArgs.builder()\n .caOptions(CaPoolIssuancePolicyBaselineValuesCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageArgs.builder()\n .baseKeyUsage()\n .extendedKeyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .pool(default_.name())\n .certificateAuthorityId(\"my-basic-certificate-authority\")\n .location(\"us-central1\")\n .lifetime(\"86400s\")\n .type(\"SELF_SIGNED\")\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"Test LLC\")\n .commonName(\"my-ca\")\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(false)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var tlsInspectionPermission = new CaPoolIamMember(\"tlsInspectionPermission\", CaPoolIamMemberArgs.builder()\n .caPool(default_.id())\n .role(\"roles/privateca.certificateManager\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-networksecurity.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var defaultTlsInspectionPolicy = new TlsInspectionPolicy(\"defaultTlsInspectionPolicy\", TlsInspectionPolicyArgs.builder()\n .name(\"my-tls-inspection-policy\")\n .location(\"us-central1\")\n .caPool(default_.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n default_,\n defaultAuthority,\n tlsInspectionPermission)\n .build());\n\n var defaultGatewaySecurityPolicy = new GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", GatewaySecurityPolicyArgs.builder()\n .name(\"my-gateway-security-policy\")\n .location(\"us-central1\")\n .description(\"my description\")\n .tlsInspectionPolicy(defaultTlsInspectionPolicy.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultTlsInspectionPolicy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n name: my-basic-ca-pool\n location: us-central1\n tier: DEVOPS\n publishingOptions:\n publishCaCert: false\n publishCrl: false\n issuancePolicy:\n maximumLifetime: 1209600s\n baselineValues:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage: {}\n extendedKeyUsage:\n serverAuth: true\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n pool: ${default.name}\n certificateAuthorityId: my-basic-certificate-authority\n location: us-central1\n lifetime: 86400s\n type: SELF_SIGNED\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n config:\n subjectConfig:\n subject:\n organization: Test LLC\n commonName: my-ca\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n tlsInspectionPermission:\n type: gcp:certificateauthority:CaPoolIamMember\n name: tls_inspection_permission\n properties:\n caPool: ${default.id}\n role: roles/privateca.certificateManager\n member: serviceAccount:service-${project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com\n defaultTlsInspectionPolicy:\n type: gcp:networksecurity:TlsInspectionPolicy\n name: default\n properties:\n name: my-tls-inspection-policy\n location: us-central1\n caPool: ${default.id}\n options:\n dependson:\n - ${default}\n - ${defaultAuthority}\n - ${tlsInspectionPermission}\n defaultGatewaySecurityPolicy:\n type: gcp:networksecurity:GatewaySecurityPolicy\n name: default\n properties:\n name: my-gateway-security-policy\n location: us-central1\n description: my description\n tlsInspectionPolicy: ${defaultTlsInspectionPolicy.id}\n options:\n dependson:\n - ${defaultTlsInspectionPolicy}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGatewaySecurityPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/gatewaySecurityPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, GatewaySecurityPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/gatewaySecurityPolicy:GatewaySecurityPolicy default projects/{{project}}/locations/{{location}}/gatewaySecurityPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/gatewaySecurityPolicy:GatewaySecurityPolicy default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/gatewaySecurityPolicy:GatewaySecurityPolicy default {{location}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -219324,7 +219324,7 @@ } }, "gcp:networksecurity/securityProfile:SecurityProfile": { - "description": "A security profile defines the behavior associated to a profile type.\n\n\nTo get more information about SecurityProfile, see:\n\n* [API documentation](https://cloud.google.com/firewall/docs/reference/network-security/rest/v1/projects.locations.securityProfiles)\n* How-to Guides\n * [Create and manage security profiles](https://cloud.google.com/firewall/docs/configure-security-profiles)\n\n## Example Usage\n\n### Network Security Security Profile Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.SecurityProfile(\"default\", {\n name: \"my-security-profile\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n type: \"THREAT_PREVENTION\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.SecurityProfile(\"default\",\n name=\"my-security-profile\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n type=\"THREAT_PREVENTION\",\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 @default = new Gcp.NetworkSecurity.SecurityProfile(\"default\", new()\n {\n Name = \"my-security-profile\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n Type = \"THREAT_PREVENTION\",\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/v7/go/gcp/networksecurity\"\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 := networksecurity.NewSecurityProfile(ctx, \"default\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"my-security-profile\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"THREAT_PREVENTION\"),\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.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\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 SecurityProfile(\"default\", SecurityProfileArgs.builder()\n .name(\"my-security-profile\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .type(\"THREAT_PREVENTION\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:SecurityProfile\n properties:\n name: my-security-profile\n parent: organizations/123456789\n description: my description\n type: THREAT_PREVENTION\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Security Profile Overrides\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.SecurityProfile(\"default\", {\n name: \"my-security-profile\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n type: \"THREAT_PREVENTION\",\n threatPreventionProfile: {\n severityOverrides: [\n {\n action: \"ALLOW\",\n severity: \"INFORMATIONAL\",\n },\n {\n action: \"DENY\",\n severity: \"HIGH\",\n },\n ],\n threatOverrides: [{\n action: \"ALLOW\",\n threatId: \"280647\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.SecurityProfile(\"default\",\n name=\"my-security-profile\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n type=\"THREAT_PREVENTION\",\n threat_prevention_profile={\n \"severityOverrides\": [\n {\n \"action\": \"ALLOW\",\n \"severity\": \"INFORMATIONAL\",\n },\n {\n \"action\": \"DENY\",\n \"severity\": \"HIGH\",\n },\n ],\n \"threatOverrides\": [{\n \"action\": \"ALLOW\",\n \"threatId\": \"280647\",\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 @default = new Gcp.NetworkSecurity.SecurityProfile(\"default\", new()\n {\n Name = \"my-security-profile\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n Type = \"THREAT_PREVENTION\",\n ThreatPreventionProfile = new Gcp.NetworkSecurity.Inputs.SecurityProfileThreatPreventionProfileArgs\n {\n SeverityOverrides = new[]\n {\n new Gcp.NetworkSecurity.Inputs.SecurityProfileThreatPreventionProfileSeverityOverrideArgs\n {\n Action = \"ALLOW\",\n Severity = \"INFORMATIONAL\",\n },\n new Gcp.NetworkSecurity.Inputs.SecurityProfileThreatPreventionProfileSeverityOverrideArgs\n {\n Action = \"DENY\",\n Severity = \"HIGH\",\n },\n },\n ThreatOverrides = new[]\n {\n new Gcp.NetworkSecurity.Inputs.SecurityProfileThreatPreventionProfileThreatOverrideArgs\n {\n Action = \"ALLOW\",\n ThreatId = \"280647\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\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 := networksecurity.NewSecurityProfile(ctx, \"default\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"my-security-profile\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"THREAT_PREVENTION\"),\n\t\t\tThreatPreventionProfile: \u0026networksecurity.SecurityProfileThreatPreventionProfileArgs{\n\t\t\t\tSeverityOverrides: networksecurity.SecurityProfileThreatPreventionProfileSeverityOverrideArray{\n\t\t\t\t\t\u0026networksecurity.SecurityProfileThreatPreventionProfileSeverityOverrideArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"ALLOW\"),\n\t\t\t\t\t\tSeverity: pulumi.String(\"INFORMATIONAL\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networksecurity.SecurityProfileThreatPreventionProfileSeverityOverrideArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"DENY\"),\n\t\t\t\t\t\tSeverity: pulumi.String(\"HIGH\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tThreatOverrides: networksecurity.SecurityProfileThreatPreventionProfileThreatOverrideArray{\n\t\t\t\t\t\u0026networksecurity.SecurityProfileThreatPreventionProfileThreatOverrideArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"ALLOW\"),\n\t\t\t\t\t\tThreatId: pulumi.String(\"280647\"),\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.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport com.pulumi.gcp.networksecurity.inputs.SecurityProfileThreatPreventionProfileArgs;\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 SecurityProfile(\"default\", SecurityProfileArgs.builder()\n .name(\"my-security-profile\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .type(\"THREAT_PREVENTION\")\n .threatPreventionProfile(SecurityProfileThreatPreventionProfileArgs.builder()\n .severityOverrides( \n SecurityProfileThreatPreventionProfileSeverityOverrideArgs.builder()\n .action(\"ALLOW\")\n .severity(\"INFORMATIONAL\")\n .build(),\n SecurityProfileThreatPreventionProfileSeverityOverrideArgs.builder()\n .action(\"DENY\")\n .severity(\"HIGH\")\n .build())\n .threatOverrides(SecurityProfileThreatPreventionProfileThreatOverrideArgs.builder()\n .action(\"ALLOW\")\n .threatId(\"280647\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:SecurityProfile\n properties:\n name: my-security-profile\n parent: organizations/123456789\n description: my description\n type: THREAT_PREVENTION\n threatPreventionProfile:\n severityOverrides:\n - action: ALLOW\n severity: INFORMATIONAL\n - action: DENY\n severity: HIGH\n threatOverrides:\n - action: ALLOW\n threatId: '280647'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecurityProfile can be imported using any of these accepted formats:\n\n* `{{parent}}/locations/{{location}}/securityProfiles/{{name}}`\n\nWhen using the `pulumi import` command, SecurityProfile can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/securityProfile:SecurityProfile default {{parent}}/locations/{{location}}/securityProfiles/{{name}}\n```\n\n", + "description": "A security profile defines the behavior associated to a profile type.\n\n\nTo get more information about SecurityProfile, see:\n\n* [API documentation](https://cloud.google.com/firewall/docs/reference/network-security/rest/v1/projects.locations.securityProfiles)\n* How-to Guides\n * [Create and manage security profiles](https://cloud.google.com/firewall/docs/configure-security-profiles)\n\n## Example Usage\n\n### Network Security Security Profile Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.SecurityProfile(\"default\", {\n name: \"my-security-profile\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n type: \"THREAT_PREVENTION\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.SecurityProfile(\"default\",\n name=\"my-security-profile\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n type=\"THREAT_PREVENTION\",\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 @default = new Gcp.NetworkSecurity.SecurityProfile(\"default\", new()\n {\n Name = \"my-security-profile\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n Type = \"THREAT_PREVENTION\",\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/v7/go/gcp/networksecurity\"\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 := networksecurity.NewSecurityProfile(ctx, \"default\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"my-security-profile\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"THREAT_PREVENTION\"),\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.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\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 SecurityProfile(\"default\", SecurityProfileArgs.builder()\n .name(\"my-security-profile\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .type(\"THREAT_PREVENTION\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:SecurityProfile\n properties:\n name: my-security-profile\n parent: organizations/123456789\n description: my description\n type: THREAT_PREVENTION\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Security Profile Overrides\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.SecurityProfile(\"default\", {\n name: \"my-security-profile\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n type: \"THREAT_PREVENTION\",\n threatPreventionProfile: {\n severityOverrides: [\n {\n action: \"ALLOW\",\n severity: \"INFORMATIONAL\",\n },\n {\n action: \"DENY\",\n severity: \"HIGH\",\n },\n ],\n threatOverrides: [{\n action: \"ALLOW\",\n threatId: \"280647\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.SecurityProfile(\"default\",\n name=\"my-security-profile\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n type=\"THREAT_PREVENTION\",\n threat_prevention_profile={\n \"severity_overrides\": [\n {\n \"action\": \"ALLOW\",\n \"severity\": \"INFORMATIONAL\",\n },\n {\n \"action\": \"DENY\",\n \"severity\": \"HIGH\",\n },\n ],\n \"threat_overrides\": [{\n \"action\": \"ALLOW\",\n \"threat_id\": \"280647\",\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 @default = new Gcp.NetworkSecurity.SecurityProfile(\"default\", new()\n {\n Name = \"my-security-profile\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n Type = \"THREAT_PREVENTION\",\n ThreatPreventionProfile = new Gcp.NetworkSecurity.Inputs.SecurityProfileThreatPreventionProfileArgs\n {\n SeverityOverrides = new[]\n {\n new Gcp.NetworkSecurity.Inputs.SecurityProfileThreatPreventionProfileSeverityOverrideArgs\n {\n Action = \"ALLOW\",\n Severity = \"INFORMATIONAL\",\n },\n new Gcp.NetworkSecurity.Inputs.SecurityProfileThreatPreventionProfileSeverityOverrideArgs\n {\n Action = \"DENY\",\n Severity = \"HIGH\",\n },\n },\n ThreatOverrides = new[]\n {\n new Gcp.NetworkSecurity.Inputs.SecurityProfileThreatPreventionProfileThreatOverrideArgs\n {\n Action = \"ALLOW\",\n ThreatId = \"280647\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\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 := networksecurity.NewSecurityProfile(ctx, \"default\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"my-security-profile\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"THREAT_PREVENTION\"),\n\t\t\tThreatPreventionProfile: \u0026networksecurity.SecurityProfileThreatPreventionProfileArgs{\n\t\t\t\tSeverityOverrides: networksecurity.SecurityProfileThreatPreventionProfileSeverityOverrideArray{\n\t\t\t\t\t\u0026networksecurity.SecurityProfileThreatPreventionProfileSeverityOverrideArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"ALLOW\"),\n\t\t\t\t\t\tSeverity: pulumi.String(\"INFORMATIONAL\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networksecurity.SecurityProfileThreatPreventionProfileSeverityOverrideArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"DENY\"),\n\t\t\t\t\t\tSeverity: pulumi.String(\"HIGH\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tThreatOverrides: networksecurity.SecurityProfileThreatPreventionProfileThreatOverrideArray{\n\t\t\t\t\t\u0026networksecurity.SecurityProfileThreatPreventionProfileThreatOverrideArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"ALLOW\"),\n\t\t\t\t\t\tThreatId: pulumi.String(\"280647\"),\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.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport com.pulumi.gcp.networksecurity.inputs.SecurityProfileThreatPreventionProfileArgs;\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 SecurityProfile(\"default\", SecurityProfileArgs.builder()\n .name(\"my-security-profile\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .type(\"THREAT_PREVENTION\")\n .threatPreventionProfile(SecurityProfileThreatPreventionProfileArgs.builder()\n .severityOverrides( \n SecurityProfileThreatPreventionProfileSeverityOverrideArgs.builder()\n .action(\"ALLOW\")\n .severity(\"INFORMATIONAL\")\n .build(),\n SecurityProfileThreatPreventionProfileSeverityOverrideArgs.builder()\n .action(\"DENY\")\n .severity(\"HIGH\")\n .build())\n .threatOverrides(SecurityProfileThreatPreventionProfileThreatOverrideArgs.builder()\n .action(\"ALLOW\")\n .threatId(\"280647\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:SecurityProfile\n properties:\n name: my-security-profile\n parent: organizations/123456789\n description: my description\n type: THREAT_PREVENTION\n threatPreventionProfile:\n severityOverrides:\n - action: ALLOW\n severity: INFORMATIONAL\n - action: DENY\n severity: HIGH\n threatOverrides:\n - action: ALLOW\n threatId: '280647'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecurityProfile can be imported using any of these accepted formats:\n\n* `{{parent}}/locations/{{location}}/securityProfiles/{{name}}`\n\nWhen using the `pulumi import` command, SecurityProfile can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/securityProfile:SecurityProfile default {{parent}}/locations/{{location}}/securityProfiles/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -219679,7 +219679,7 @@ } }, "gcp:networksecurity/serverTlsPolicy:ServerTlsPolicy": { - "description": "## Example Usage\n\n### Network Security Server Tls Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-server-tls-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n allowOpen: false,\n serverCertificate: {\n certificateProviderInstance: {\n pluginInstance: \"google_cloud_private_spiffe\",\n },\n },\n mtlsPolicy: {\n clientValidationCas: [\n {\n grpcEndpoint: {\n targetUri: \"unix:mypath\",\n },\n },\n {\n grpcEndpoint: {\n targetUri: \"unix:abc/mypath\",\n },\n },\n {\n certificateProviderInstance: {\n pluginInstance: \"google_cloud_private_spiffe\",\n },\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-server-tls-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n allow_open=False,\n server_certificate={\n \"certificateProviderInstance\": {\n \"pluginInstance\": \"google_cloud_private_spiffe\",\n },\n },\n mtls_policy={\n \"clientValidationCas\": [\n {\n \"grpcEndpoint\": {\n \"targetUri\": \"unix:mypath\",\n },\n },\n {\n \"grpcEndpoint\": {\n \"targetUri\": \"unix:abc/mypath\",\n },\n },\n {\n \"certificateProviderInstance\": {\n \"pluginInstance\": \"google_cloud_private_spiffe\",\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 @default = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-server-tls-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n AllowOpen = false,\n ServerCertificate = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyServerCertificateArgs\n {\n CertificateProviderInstance = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyServerCertificateCertificateProviderInstanceArgs\n {\n PluginInstance = \"google_cloud_private_spiffe\",\n },\n },\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationCas = new[]\n {\n new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyClientValidationCaArgs\n {\n GrpcEndpoint = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyClientValidationCaGrpcEndpointArgs\n {\n TargetUri = \"unix:mypath\",\n },\n },\n new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyClientValidationCaArgs\n {\n GrpcEndpoint = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyClientValidationCaGrpcEndpointArgs\n {\n TargetUri = \"unix:abc/mypath\",\n },\n },\n new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyClientValidationCaArgs\n {\n CertificateProviderInstance = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyClientValidationCaCertificateProviderInstanceArgs\n {\n PluginInstance = \"google_cloud_private_spiffe\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\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 := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-server-tls-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tServerCertificate: \u0026networksecurity.ServerTlsPolicyServerCertificateArgs{\n\t\t\t\tCertificateProviderInstance: \u0026networksecurity.ServerTlsPolicyServerCertificateCertificateProviderInstanceArgs{\n\t\t\t\t\tPluginInstance: pulumi.String(\"google_cloud_private_spiffe\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationCas: networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaArray{\n\t\t\t\t\t\u0026networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaArgs{\n\t\t\t\t\t\tGrpcEndpoint: \u0026networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaGrpcEndpointArgs{\n\t\t\t\t\t\t\tTargetUri: pulumi.String(\"unix:mypath\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaArgs{\n\t\t\t\t\t\tGrpcEndpoint: \u0026networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaGrpcEndpointArgs{\n\t\t\t\t\t\t\tTargetUri: pulumi.String(\"unix:abc/mypath\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaArgs{\n\t\t\t\t\t\tCertificateProviderInstance: \u0026networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaCertificateProviderInstanceArgs{\n\t\t\t\t\t\t\tPluginInstance: pulumi.String(\"google_cloud_private_spiffe\"),\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.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyServerCertificateArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyServerCertificateCertificateProviderInstanceArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\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 ServerTlsPolicy(\"default\", ServerTlsPolicyArgs.builder()\n .name(\"my-server-tls-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .allowOpen(\"false\")\n .serverCertificate(ServerTlsPolicyServerCertificateArgs.builder()\n .certificateProviderInstance(ServerTlsPolicyServerCertificateCertificateProviderInstanceArgs.builder()\n .pluginInstance(\"google_cloud_private_spiffe\")\n .build())\n .build())\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationCas( \n ServerTlsPolicyMtlsPolicyClientValidationCaArgs.builder()\n .grpcEndpoint(ServerTlsPolicyMtlsPolicyClientValidationCaGrpcEndpointArgs.builder()\n .targetUri(\"unix:mypath\")\n .build())\n .build(),\n ServerTlsPolicyMtlsPolicyClientValidationCaArgs.builder()\n .grpcEndpoint(ServerTlsPolicyMtlsPolicyClientValidationCaGrpcEndpointArgs.builder()\n .targetUri(\"unix:abc/mypath\")\n .build())\n .build(),\n ServerTlsPolicyMtlsPolicyClientValidationCaArgs.builder()\n .certificateProviderInstance(ServerTlsPolicyMtlsPolicyClientValidationCaCertificateProviderInstanceArgs.builder()\n .pluginInstance(\"google_cloud_private_spiffe\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ServerTlsPolicy\n properties:\n name: my-server-tls-policy\n labels:\n foo: bar\n description: my description\n allowOpen: 'false'\n serverCertificate:\n certificateProviderInstance:\n pluginInstance: google_cloud_private_spiffe\n mtlsPolicy:\n clientValidationCas:\n - grpcEndpoint:\n targetUri: unix:mypath\n - grpcEndpoint:\n targetUri: unix:abc/mypath\n - certificateProviderInstance:\n pluginInstance: google_cloud_private_spiffe\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Server Tls Policy Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-server-tls-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n location: \"global\",\n allowOpen: false,\n mtlsPolicy: {\n clientValidationMode: \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-server-tls-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n location=\"global\",\n allow_open=False,\n mtls_policy={\n \"clientValidationMode\": \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\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 @default = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-server-tls-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Location = \"global\",\n AllowOpen = false,\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationMode = \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\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 := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-server-tls-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationMode: pulumi.String(\"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\"),\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.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\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 ServerTlsPolicy(\"default\", ServerTlsPolicyArgs.builder()\n .name(\"my-server-tls-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .location(\"global\")\n .allowOpen(\"false\")\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationMode(\"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ServerTlsPolicy\n properties:\n name: my-server-tls-policy\n labels:\n foo: bar\n description: my description\n location: global\n allowOpen: 'false'\n mtlsPolicy:\n clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Server Tls Policy Server Cert\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-server-tls-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n location: \"global\",\n allowOpen: false,\n serverCertificate: {\n grpcEndpoint: {\n targetUri: \"unix:mypath\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-server-tls-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n location=\"global\",\n allow_open=False,\n server_certificate={\n \"grpcEndpoint\": {\n \"targetUri\": \"unix:mypath\",\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 @default = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-server-tls-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Location = \"global\",\n AllowOpen = false,\n ServerCertificate = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyServerCertificateArgs\n {\n GrpcEndpoint = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyServerCertificateGrpcEndpointArgs\n {\n TargetUri = \"unix:mypath\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\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 := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-server-tls-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tServerCertificate: \u0026networksecurity.ServerTlsPolicyServerCertificateArgs{\n\t\t\t\tGrpcEndpoint: \u0026networksecurity.ServerTlsPolicyServerCertificateGrpcEndpointArgs{\n\t\t\t\t\tTargetUri: pulumi.String(\"unix:mypath\"),\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.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyServerCertificateArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyServerCertificateGrpcEndpointArgs;\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 ServerTlsPolicy(\"default\", ServerTlsPolicyArgs.builder()\n .name(\"my-server-tls-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .location(\"global\")\n .allowOpen(\"false\")\n .serverCertificate(ServerTlsPolicyServerCertificateArgs.builder()\n .grpcEndpoint(ServerTlsPolicyServerCertificateGrpcEndpointArgs.builder()\n .targetUri(\"unix:mypath\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ServerTlsPolicy\n properties:\n name: my-server-tls-policy\n labels:\n foo: bar\n description: my description\n location: global\n allowOpen: 'false'\n serverCertificate:\n grpcEndpoint:\n targetUri: unix:mypath\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Server Tls Policy Mtls\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst defaultTrustConfig = new gcp.certificatemanager.TrustConfig(\"default\", {\n name: \"my-trust-config\",\n description: \"sample trust config description\",\n location: \"global\",\n trustStores: [{\n trustAnchors: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n intermediateCas: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n }],\n labels: {\n foo: \"bar\",\n },\n});\nconst _default = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-server-tls-policy\",\n description: \"my description\",\n location: \"global\",\n allowOpen: false,\n mtlsPolicy: {\n clientValidationMode: \"REJECT_INVALID\",\n clientValidationTrustConfig: pulumi.all([project, defaultTrustConfig.name]).apply(([project, name]) =\u003e `projects/${project.number}/locations/global/trustConfigs/${name}`),\n },\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\ndefault_trust_config = gcp.certificatemanager.TrustConfig(\"default\",\n name=\"my-trust-config\",\n description=\"sample trust config description\",\n location=\"global\",\n trust_stores=[{\n \"trustAnchors\": [{\n \"pemCertificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n \"intermediateCas\": [{\n \"pemCertificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n }],\n labels={\n \"foo\": \"bar\",\n })\ndefault = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-server-tls-policy\",\n description=\"my description\",\n location=\"global\",\n allow_open=False,\n mtls_policy={\n \"clientValidationMode\": \"REJECT_INVALID\",\n \"clientValidationTrustConfig\": default_trust_config.name.apply(lambda name: f\"projects/{project.number}/locations/global/trustConfigs/{name}\"),\n },\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var defaultTrustConfig = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Name = \"my-trust-config\",\n Description = \"sample trust config description\",\n Location = \"global\",\n TrustStores = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreArgs\n {\n TrustAnchors = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreTrustAnchorArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n IntermediateCas = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreIntermediateCaArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var @default = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-server-tls-policy\",\n Description = \"my description\",\n Location = \"global\",\n AllowOpen = false,\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationMode = \"REJECT_INVALID\",\n ClientValidationTrustConfig = Output.Tuple(project, defaultTrustConfig.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/locations/global/trustConfigs/{name}\";\n }),\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTrustConfig, err := certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tName: pulumi.String(\"my-trust-config\"),\n\t\t\tDescription: pulumi.String(\"sample trust config description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTrustStores: certificatemanager.TrustConfigTrustStoreArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreArgs{\n\t\t\t\t\tTrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{\n\t\t\t\t\t\t\tPemCertificate: invokeFile.Result,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{\n\t\t\t\t\t\t\tPemCertificate: invokeFile1.Result,\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\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\t_, err = networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-server-tls-policy\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationMode: pulumi.String(\"REJECT_INVALID\"),\n\t\t\t\tClientValidationTrustConfig: defaultTrustConfig.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"projects/%v/locations/global/trustConfigs/%v\", project.Number, name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigTrustStoreArgs;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\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 defaultTrustConfig = new TrustConfig(\"defaultTrustConfig\", TrustConfigArgs.builder()\n .name(\"my-trust-config\")\n .description(\"sample trust config description\")\n .location(\"global\")\n .trustStores(TrustConfigTrustStoreArgs.builder()\n .trustAnchors(TrustConfigTrustStoreTrustAnchorArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .intermediateCas(TrustConfigTrustStoreIntermediateCaArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var default_ = new ServerTlsPolicy(\"default\", ServerTlsPolicyArgs.builder()\n .name(\"my-server-tls-policy\")\n .description(\"my description\")\n .location(\"global\")\n .allowOpen(\"false\")\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationMode(\"REJECT_INVALID\")\n .clientValidationTrustConfig(defaultTrustConfig.name().applyValue(name -\u003e String.format(\"projects/%s/locations/global/trustConfigs/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ServerTlsPolicy\n properties:\n name: my-server-tls-policy\n description: my description\n location: global\n allowOpen: 'false'\n mtlsPolicy:\n clientValidationMode: REJECT_INVALID\n clientValidationTrustConfig: projects/${project.number}/locations/global/trustConfigs/${defaultTrustConfig.name}\n labels:\n foo: bar\n defaultTrustConfig:\n type: gcp:certificatemanager:TrustConfig\n name: default\n properties:\n name: my-trust-config\n description: sample trust config description\n location: global\n trustStores:\n - trustAnchors:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n intermediateCas:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n labels:\n foo: bar\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServerTlsPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/serverTlsPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ServerTlsPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/serverTlsPolicy:ServerTlsPolicy default projects/{{project}}/locations/{{location}}/serverTlsPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/serverTlsPolicy:ServerTlsPolicy default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/serverTlsPolicy:ServerTlsPolicy default {{location}}/{{name}}\n```\n\n", + "description": "## Example Usage\n\n### Network Security Server Tls Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-server-tls-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n allowOpen: false,\n serverCertificate: {\n certificateProviderInstance: {\n pluginInstance: \"google_cloud_private_spiffe\",\n },\n },\n mtlsPolicy: {\n clientValidationCas: [\n {\n grpcEndpoint: {\n targetUri: \"unix:mypath\",\n },\n },\n {\n grpcEndpoint: {\n targetUri: \"unix:abc/mypath\",\n },\n },\n {\n certificateProviderInstance: {\n pluginInstance: \"google_cloud_private_spiffe\",\n },\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-server-tls-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n allow_open=False,\n server_certificate={\n \"certificate_provider_instance\": {\n \"plugin_instance\": \"google_cloud_private_spiffe\",\n },\n },\n mtls_policy={\n \"client_validation_cas\": [\n {\n \"grpc_endpoint\": {\n \"target_uri\": \"unix:mypath\",\n },\n },\n {\n \"grpc_endpoint\": {\n \"target_uri\": \"unix:abc/mypath\",\n },\n },\n {\n \"certificate_provider_instance\": {\n \"plugin_instance\": \"google_cloud_private_spiffe\",\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 @default = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-server-tls-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n AllowOpen = false,\n ServerCertificate = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyServerCertificateArgs\n {\n CertificateProviderInstance = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyServerCertificateCertificateProviderInstanceArgs\n {\n PluginInstance = \"google_cloud_private_spiffe\",\n },\n },\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationCas = new[]\n {\n new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyClientValidationCaArgs\n {\n GrpcEndpoint = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyClientValidationCaGrpcEndpointArgs\n {\n TargetUri = \"unix:mypath\",\n },\n },\n new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyClientValidationCaArgs\n {\n GrpcEndpoint = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyClientValidationCaGrpcEndpointArgs\n {\n TargetUri = \"unix:abc/mypath\",\n },\n },\n new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyClientValidationCaArgs\n {\n CertificateProviderInstance = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyClientValidationCaCertificateProviderInstanceArgs\n {\n PluginInstance = \"google_cloud_private_spiffe\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\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 := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-server-tls-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tServerCertificate: \u0026networksecurity.ServerTlsPolicyServerCertificateArgs{\n\t\t\t\tCertificateProviderInstance: \u0026networksecurity.ServerTlsPolicyServerCertificateCertificateProviderInstanceArgs{\n\t\t\t\t\tPluginInstance: pulumi.String(\"google_cloud_private_spiffe\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationCas: networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaArray{\n\t\t\t\t\t\u0026networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaArgs{\n\t\t\t\t\t\tGrpcEndpoint: \u0026networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaGrpcEndpointArgs{\n\t\t\t\t\t\t\tTargetUri: pulumi.String(\"unix:mypath\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaArgs{\n\t\t\t\t\t\tGrpcEndpoint: \u0026networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaGrpcEndpointArgs{\n\t\t\t\t\t\t\tTargetUri: pulumi.String(\"unix:abc/mypath\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaArgs{\n\t\t\t\t\t\tCertificateProviderInstance: \u0026networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaCertificateProviderInstanceArgs{\n\t\t\t\t\t\t\tPluginInstance: pulumi.String(\"google_cloud_private_spiffe\"),\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.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyServerCertificateArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyServerCertificateCertificateProviderInstanceArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\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 ServerTlsPolicy(\"default\", ServerTlsPolicyArgs.builder()\n .name(\"my-server-tls-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .allowOpen(\"false\")\n .serverCertificate(ServerTlsPolicyServerCertificateArgs.builder()\n .certificateProviderInstance(ServerTlsPolicyServerCertificateCertificateProviderInstanceArgs.builder()\n .pluginInstance(\"google_cloud_private_spiffe\")\n .build())\n .build())\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationCas( \n ServerTlsPolicyMtlsPolicyClientValidationCaArgs.builder()\n .grpcEndpoint(ServerTlsPolicyMtlsPolicyClientValidationCaGrpcEndpointArgs.builder()\n .targetUri(\"unix:mypath\")\n .build())\n .build(),\n ServerTlsPolicyMtlsPolicyClientValidationCaArgs.builder()\n .grpcEndpoint(ServerTlsPolicyMtlsPolicyClientValidationCaGrpcEndpointArgs.builder()\n .targetUri(\"unix:abc/mypath\")\n .build())\n .build(),\n ServerTlsPolicyMtlsPolicyClientValidationCaArgs.builder()\n .certificateProviderInstance(ServerTlsPolicyMtlsPolicyClientValidationCaCertificateProviderInstanceArgs.builder()\n .pluginInstance(\"google_cloud_private_spiffe\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ServerTlsPolicy\n properties:\n name: my-server-tls-policy\n labels:\n foo: bar\n description: my description\n allowOpen: 'false'\n serverCertificate:\n certificateProviderInstance:\n pluginInstance: google_cloud_private_spiffe\n mtlsPolicy:\n clientValidationCas:\n - grpcEndpoint:\n targetUri: unix:mypath\n - grpcEndpoint:\n targetUri: unix:abc/mypath\n - certificateProviderInstance:\n pluginInstance: google_cloud_private_spiffe\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Server Tls Policy Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-server-tls-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n location: \"global\",\n allowOpen: false,\n mtlsPolicy: {\n clientValidationMode: \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-server-tls-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n location=\"global\",\n allow_open=False,\n mtls_policy={\n \"client_validation_mode\": \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\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 @default = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-server-tls-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Location = \"global\",\n AllowOpen = false,\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationMode = \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\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 := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-server-tls-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationMode: pulumi.String(\"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\"),\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.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\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 ServerTlsPolicy(\"default\", ServerTlsPolicyArgs.builder()\n .name(\"my-server-tls-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .location(\"global\")\n .allowOpen(\"false\")\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationMode(\"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ServerTlsPolicy\n properties:\n name: my-server-tls-policy\n labels:\n foo: bar\n description: my description\n location: global\n allowOpen: 'false'\n mtlsPolicy:\n clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Server Tls Policy Server Cert\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-server-tls-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n location: \"global\",\n allowOpen: false,\n serverCertificate: {\n grpcEndpoint: {\n targetUri: \"unix:mypath\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-server-tls-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n location=\"global\",\n allow_open=False,\n server_certificate={\n \"grpc_endpoint\": {\n \"target_uri\": \"unix:mypath\",\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 @default = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-server-tls-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Location = \"global\",\n AllowOpen = false,\n ServerCertificate = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyServerCertificateArgs\n {\n GrpcEndpoint = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyServerCertificateGrpcEndpointArgs\n {\n TargetUri = \"unix:mypath\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\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 := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-server-tls-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tServerCertificate: \u0026networksecurity.ServerTlsPolicyServerCertificateArgs{\n\t\t\t\tGrpcEndpoint: \u0026networksecurity.ServerTlsPolicyServerCertificateGrpcEndpointArgs{\n\t\t\t\t\tTargetUri: pulumi.String(\"unix:mypath\"),\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.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyServerCertificateArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyServerCertificateGrpcEndpointArgs;\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 ServerTlsPolicy(\"default\", ServerTlsPolicyArgs.builder()\n .name(\"my-server-tls-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .location(\"global\")\n .allowOpen(\"false\")\n .serverCertificate(ServerTlsPolicyServerCertificateArgs.builder()\n .grpcEndpoint(ServerTlsPolicyServerCertificateGrpcEndpointArgs.builder()\n .targetUri(\"unix:mypath\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ServerTlsPolicy\n properties:\n name: my-server-tls-policy\n labels:\n foo: bar\n description: my description\n location: global\n allowOpen: 'false'\n serverCertificate:\n grpcEndpoint:\n targetUri: unix:mypath\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Server Tls Policy Mtls\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst defaultTrustConfig = new gcp.certificatemanager.TrustConfig(\"default\", {\n name: \"my-trust-config\",\n description: \"sample trust config description\",\n location: \"global\",\n trustStores: [{\n trustAnchors: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n intermediateCas: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n }],\n labels: {\n foo: \"bar\",\n },\n});\nconst _default = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-server-tls-policy\",\n description: \"my description\",\n location: \"global\",\n allowOpen: false,\n mtlsPolicy: {\n clientValidationMode: \"REJECT_INVALID\",\n clientValidationTrustConfig: pulumi.all([project, defaultTrustConfig.name]).apply(([project, name]) =\u003e `projects/${project.number}/locations/global/trustConfigs/${name}`),\n },\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\ndefault_trust_config = gcp.certificatemanager.TrustConfig(\"default\",\n name=\"my-trust-config\",\n description=\"sample trust config description\",\n location=\"global\",\n trust_stores=[{\n \"trust_anchors\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n \"intermediate_cas\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n }],\n labels={\n \"foo\": \"bar\",\n })\ndefault = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-server-tls-policy\",\n description=\"my description\",\n location=\"global\",\n allow_open=False,\n mtls_policy={\n \"client_validation_mode\": \"REJECT_INVALID\",\n \"client_validation_trust_config\": default_trust_config.name.apply(lambda name: f\"projects/{project.number}/locations/global/trustConfigs/{name}\"),\n },\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var defaultTrustConfig = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Name = \"my-trust-config\",\n Description = \"sample trust config description\",\n Location = \"global\",\n TrustStores = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreArgs\n {\n TrustAnchors = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreTrustAnchorArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n IntermediateCas = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreIntermediateCaArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var @default = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-server-tls-policy\",\n Description = \"my description\",\n Location = \"global\",\n AllowOpen = false,\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationMode = \"REJECT_INVALID\",\n ClientValidationTrustConfig = Output.Tuple(project, defaultTrustConfig.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/locations/global/trustConfigs/{name}\";\n }),\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTrustConfig, err := certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tName: pulumi.String(\"my-trust-config\"),\n\t\t\tDescription: pulumi.String(\"sample trust config description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTrustStores: certificatemanager.TrustConfigTrustStoreArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreArgs{\n\t\t\t\t\tTrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile1.Result),\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\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\t_, err = networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-server-tls-policy\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationMode: pulumi.String(\"REJECT_INVALID\"),\n\t\t\t\tClientValidationTrustConfig: defaultTrustConfig.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"projects/%v/locations/global/trustConfigs/%v\", project.Number, name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigTrustStoreArgs;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\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 defaultTrustConfig = new TrustConfig(\"defaultTrustConfig\", TrustConfigArgs.builder()\n .name(\"my-trust-config\")\n .description(\"sample trust config description\")\n .location(\"global\")\n .trustStores(TrustConfigTrustStoreArgs.builder()\n .trustAnchors(TrustConfigTrustStoreTrustAnchorArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .intermediateCas(TrustConfigTrustStoreIntermediateCaArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var default_ = new ServerTlsPolicy(\"default\", ServerTlsPolicyArgs.builder()\n .name(\"my-server-tls-policy\")\n .description(\"my description\")\n .location(\"global\")\n .allowOpen(\"false\")\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationMode(\"REJECT_INVALID\")\n .clientValidationTrustConfig(defaultTrustConfig.name().applyValue(name -\u003e String.format(\"projects/%s/locations/global/trustConfigs/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ServerTlsPolicy\n properties:\n name: my-server-tls-policy\n description: my description\n location: global\n allowOpen: 'false'\n mtlsPolicy:\n clientValidationMode: REJECT_INVALID\n clientValidationTrustConfig: projects/${project.number}/locations/global/trustConfigs/${defaultTrustConfig.name}\n labels:\n foo: bar\n defaultTrustConfig:\n type: gcp:certificatemanager:TrustConfig\n name: default\n properties:\n name: my-trust-config\n description: sample trust config description\n location: global\n trustStores:\n - trustAnchors:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n intermediateCas:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n labels:\n foo: bar\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServerTlsPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/serverTlsPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ServerTlsPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/serverTlsPolicy:ServerTlsPolicy default projects/{{project}}/locations/{{location}}/serverTlsPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/serverTlsPolicy:ServerTlsPolicy default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/serverTlsPolicy:ServerTlsPolicy default {{location}}/{{name}}\n```\n\n", "properties": { "allowOpen": { "type": "boolean", @@ -219857,7 +219857,7 @@ } }, "gcp:networksecurity/tlsInspectionPolicy:TlsInspectionPolicy": { - "description": "The TlsInspectionPolicy resource contains references to CA pools in Certificate Authority Service and associated metadata.\n\n\nTo get more information about TlsInspectionPolicy, see:\n\n* [API documentation](https://cloud.google.com/secure-web-proxy/docs/reference/network-security/rest/v1/projects.locations.tlsInspectionPolicies)\n* How-to Guides\n * [Use TlsInspectionPolicy](https://cloud.google.com/secure-web-proxy/docs/tls-inspection-overview)\n\n## Example Usage\n\n### Network Security Tls Inspection Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n name: \"my-basic-ca-pool\",\n location: \"us-central1\",\n tier: \"DEVOPS\",\n publishingOptions: {\n publishCaCert: false,\n publishCrl: false,\n },\n issuancePolicy: {\n maximumLifetime: \"1209600s\",\n baselineValues: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {},\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n pool: _default.name,\n certificateAuthorityId: \"my-basic-certificate-authority\",\n location: \"us-central1\",\n lifetime: \"86400s\",\n type: \"SELF_SIGNED\",\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n config: {\n subjectConfig: {\n subject: {\n organization: \"Test LLC\",\n commonName: \"my-ca\",\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: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n});\nconst project = gcp.organizations.getProject({});\nconst tlsInspectionPermission = new gcp.certificateauthority.CaPoolIamMember(\"tls_inspection_permission\", {\n caPool: _default.id,\n role: \"roles/privateca.certificateManager\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com`),\n});\nconst defaultTlsInspectionPolicy = new gcp.networksecurity.TlsInspectionPolicy(\"default\", {\n name: \"my-tls-inspection-policy\",\n location: \"us-central1\",\n caPool: _default.id,\n excludePublicCaSet: false,\n}, {\n dependsOn: [\n _default,\n defaultAuthority,\n tlsInspectionPermission,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n name=\"my-basic-ca-pool\",\n location=\"us-central1\",\n tier=\"DEVOPS\",\n publishing_options={\n \"publishCaCert\": False,\n \"publishCrl\": False,\n },\n issuance_policy={\n \"maximumLifetime\": \"1209600s\",\n \"baselineValues\": {\n \"caOptions\": {\n \"isCa\": False,\n },\n \"keyUsage\": {\n \"baseKeyUsage\": {},\n \"extendedKeyUsage\": {\n \"serverAuth\": True,\n },\n },\n },\n })\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n pool=default.name,\n certificate_authority_id=\"my-basic-certificate-authority\",\n location=\"us-central1\",\n lifetime=\"86400s\",\n type=\"SELF_SIGNED\",\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True,\n config={\n \"subjectConfig\": {\n \"subject\": {\n \"organization\": \"Test LLC\",\n \"commonName\": \"my-ca\",\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\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n })\nproject = gcp.organizations.get_project()\ntls_inspection_permission = gcp.certificateauthority.CaPoolIamMember(\"tls_inspection_permission\",\n ca_pool=default.id,\n role=\"roles/privateca.certificateManager\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com\")\ndefault_tls_inspection_policy = gcp.networksecurity.TlsInspectionPolicy(\"default\",\n name=\"my-tls-inspection-policy\",\n location=\"us-central1\",\n ca_pool=default.id,\n exclude_public_ca_set=False,\n opts = pulumi.ResourceOptions(depends_on=[\n default,\n default_authority,\n tls_inspection_permission,\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 @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Name = \"my-basic-ca-pool\",\n Location = \"us-central1\",\n Tier = \"DEVOPS\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = false,\n PublishCrl = false,\n },\n IssuancePolicy = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyArgs\n {\n MaximumLifetime = \"1209600s\",\n BaselineValues = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs\n {\n BaseKeyUsage = null,\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = @default.Name,\n CertificateAuthorityId = \"my-basic-certificate-authority\",\n Location = \"us-central1\",\n Lifetime = \"86400s\",\n Type = \"SELF_SIGNED\",\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\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 = \"Test LLC\",\n CommonName = \"my-ca\",\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 = false,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var tlsInspectionPermission = new Gcp.CertificateAuthority.CaPoolIamMember(\"tls_inspection_permission\", new()\n {\n CaPool = @default.Id,\n Role = \"roles/privateca.certificateManager\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-networksecurity.iam.gserviceaccount.com\",\n });\n\n var defaultTlsInspectionPolicy = new Gcp.NetworkSecurity.TlsInspectionPolicy(\"default\", new()\n {\n Name = \"my-tls-inspection-policy\",\n Location = \"us-central1\",\n CaPool = @default.Id,\n ExcludePublicCaSet = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n defaultAuthority,\n tlsInspectionPermission,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"my-basic-ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVOPS\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(false),\n\t\t\t\tPublishCrl: pulumi.Bool(false),\n\t\t\t},\n\t\t\tIssuancePolicy: \u0026certificateauthority.CaPoolIssuancePolicyArgs{\n\t\t\t\tMaximumLifetime: pulumi.String(\"1209600s\"),\n\t\t\t\tBaselineValues: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: nil,\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs{\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-basic-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tType: pulumi.String(\"SELF_SIGNED\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\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(\"Test LLC\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-ca\"),\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(false),\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})\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\ttlsInspectionPermission, err := certificateauthority.NewCaPoolIamMember(ctx, \"tls_inspection_permission\", \u0026certificateauthority.CaPoolIamMemberArgs{\n\t\t\tCaPool: _default.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateManager\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-networksecurity.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewTlsInspectionPolicy(ctx, \"default\", \u0026networksecurity.TlsInspectionPolicyArgs{\n\t\t\tName: pulumi.String(\"my-tls-inspection-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCaPool: _default.ID(),\n\t\t\tExcludePublicCaSet: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t\tdefaultAuthority,\n\t\t\ttlsInspectionPermission,\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.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs;\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.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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMember;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMemberArgs;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicy;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicyArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .name(\"my-basic-ca-pool\")\n .location(\"us-central1\")\n .tier(\"DEVOPS\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(false)\n .publishCrl(false)\n .build())\n .issuancePolicy(CaPoolIssuancePolicyArgs.builder()\n .maximumLifetime(\"1209600s\")\n .baselineValues(CaPoolIssuancePolicyBaselineValuesArgs.builder()\n .caOptions(CaPoolIssuancePolicyBaselineValuesCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageArgs.builder()\n .baseKeyUsage()\n .extendedKeyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .pool(default_.name())\n .certificateAuthorityId(\"my-basic-certificate-authority\")\n .location(\"us-central1\")\n .lifetime(\"86400s\")\n .type(\"SELF_SIGNED\")\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"Test LLC\")\n .commonName(\"my-ca\")\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(false)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var tlsInspectionPermission = new CaPoolIamMember(\"tlsInspectionPermission\", CaPoolIamMemberArgs.builder()\n .caPool(default_.id())\n .role(\"roles/privateca.certificateManager\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-networksecurity.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var defaultTlsInspectionPolicy = new TlsInspectionPolicy(\"defaultTlsInspectionPolicy\", TlsInspectionPolicyArgs.builder()\n .name(\"my-tls-inspection-policy\")\n .location(\"us-central1\")\n .caPool(default_.id())\n .excludePublicCaSet(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n default_,\n defaultAuthority,\n tlsInspectionPermission)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n name: my-basic-ca-pool\n location: us-central1\n tier: DEVOPS\n publishingOptions:\n publishCaCert: false\n publishCrl: false\n issuancePolicy:\n maximumLifetime: 1209600s\n baselineValues:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage: {}\n extendedKeyUsage:\n serverAuth: true\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n pool: ${default.name}\n certificateAuthorityId: my-basic-certificate-authority\n location: us-central1\n lifetime: 86400s\n type: SELF_SIGNED\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n config:\n subjectConfig:\n subject:\n organization: Test LLC\n commonName: my-ca\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n tlsInspectionPermission:\n type: gcp:certificateauthority:CaPoolIamMember\n name: tls_inspection_permission\n properties:\n caPool: ${default.id}\n role: roles/privateca.certificateManager\n member: serviceAccount:service-${project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com\n defaultTlsInspectionPolicy:\n type: gcp:networksecurity:TlsInspectionPolicy\n name: default\n properties:\n name: my-tls-inspection-policy\n location: us-central1\n caPool: ${default.id}\n excludePublicCaSet: false\n options:\n dependson:\n - ${default}\n - ${defaultAuthority}\n - ${tlsInspectionPermission}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Tls Inspection Policy Custom\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n name: \"my-basic-ca-pool\",\n location: \"us-central1\",\n tier: \"DEVOPS\",\n publishingOptions: {\n publishCaCert: false,\n publishCrl: false,\n },\n issuancePolicy: {\n maximumLifetime: \"1209600s\",\n baselineValues: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {},\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n pool: _default.name,\n certificateAuthorityId: \"my-basic-certificate-authority\",\n location: \"us-central1\",\n lifetime: \"86400s\",\n type: \"SELF_SIGNED\",\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n config: {\n subjectConfig: {\n subject: {\n organization: \"Test LLC\",\n commonName: \"my-ca\",\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: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n});\nconst nsSa = new gcp.projects.ServiceIdentity(\"ns_sa\", {service: \"networksecurity.googleapis.com\"});\nconst defaultCaPoolIamMember = new gcp.certificateauthority.CaPoolIamMember(\"default\", {\n caPool: _default.id,\n role: \"roles/privateca.certificateManager\",\n member: pulumi.interpolate`serviceAccount:${nsSa.email}`,\n});\nconst defaultTrustConfig = new gcp.certificatemanager.TrustConfig(\"default\", {\n name: \"my-trust-config\",\n description: \"sample trust config description\",\n location: \"us-central1\",\n trustStores: [{\n trustAnchors: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n intermediateCas: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n }],\n});\nconst defaultTlsInspectionPolicy = new gcp.networksecurity.TlsInspectionPolicy(\"default\", {\n name: \"my-tls-inspection-policy\",\n location: \"us-central1\",\n caPool: _default.id,\n excludePublicCaSet: false,\n minTlsVersion: \"TLS_1_0\",\n trustConfig: defaultTrustConfig.id,\n tlsFeatureProfile: \"PROFILE_CUSTOM\",\n customTlsFeatures: [\n \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n ],\n}, {\n dependsOn: [\n defaultAuthority,\n defaultCaPoolIamMember,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n name=\"my-basic-ca-pool\",\n location=\"us-central1\",\n tier=\"DEVOPS\",\n publishing_options={\n \"publishCaCert\": False,\n \"publishCrl\": False,\n },\n issuance_policy={\n \"maximumLifetime\": \"1209600s\",\n \"baselineValues\": {\n \"caOptions\": {\n \"isCa\": False,\n },\n \"keyUsage\": {\n \"baseKeyUsage\": {},\n \"extendedKeyUsage\": {\n \"serverAuth\": True,\n },\n },\n },\n })\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n pool=default.name,\n certificate_authority_id=\"my-basic-certificate-authority\",\n location=\"us-central1\",\n lifetime=\"86400s\",\n type=\"SELF_SIGNED\",\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True,\n config={\n \"subjectConfig\": {\n \"subject\": {\n \"organization\": \"Test LLC\",\n \"commonName\": \"my-ca\",\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\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n })\nns_sa = gcp.projects.ServiceIdentity(\"ns_sa\", service=\"networksecurity.googleapis.com\")\ndefault_ca_pool_iam_member = gcp.certificateauthority.CaPoolIamMember(\"default\",\n ca_pool=default.id,\n role=\"roles/privateca.certificateManager\",\n member=ns_sa.email.apply(lambda email: f\"serviceAccount:{email}\"))\ndefault_trust_config = gcp.certificatemanager.TrustConfig(\"default\",\n name=\"my-trust-config\",\n description=\"sample trust config description\",\n location=\"us-central1\",\n trust_stores=[{\n \"trustAnchors\": [{\n \"pemCertificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n \"intermediateCas\": [{\n \"pemCertificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n }])\ndefault_tls_inspection_policy = gcp.networksecurity.TlsInspectionPolicy(\"default\",\n name=\"my-tls-inspection-policy\",\n location=\"us-central1\",\n ca_pool=default.id,\n exclude_public_ca_set=False,\n min_tls_version=\"TLS_1_0\",\n trust_config=default_trust_config.id,\n tls_feature_profile=\"PROFILE_CUSTOM\",\n custom_tls_features=[\n \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n default_authority,\n default_ca_pool_iam_member,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Name = \"my-basic-ca-pool\",\n Location = \"us-central1\",\n Tier = \"DEVOPS\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = false,\n PublishCrl = false,\n },\n IssuancePolicy = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyArgs\n {\n MaximumLifetime = \"1209600s\",\n BaselineValues = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs\n {\n BaseKeyUsage = null,\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = @default.Name,\n CertificateAuthorityId = \"my-basic-certificate-authority\",\n Location = \"us-central1\",\n Lifetime = \"86400s\",\n Type = \"SELF_SIGNED\",\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\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 = \"Test LLC\",\n CommonName = \"my-ca\",\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 = false,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n });\n\n var nsSa = new Gcp.Projects.ServiceIdentity(\"ns_sa\", new()\n {\n Service = \"networksecurity.googleapis.com\",\n });\n\n var defaultCaPoolIamMember = new Gcp.CertificateAuthority.CaPoolIamMember(\"default\", new()\n {\n CaPool = @default.Id,\n Role = \"roles/privateca.certificateManager\",\n Member = nsSa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var defaultTrustConfig = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Name = \"my-trust-config\",\n Description = \"sample trust config description\",\n Location = \"us-central1\",\n TrustStores = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreArgs\n {\n TrustAnchors = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreTrustAnchorArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n IntermediateCas = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreIntermediateCaArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n },\n });\n\n var defaultTlsInspectionPolicy = new Gcp.NetworkSecurity.TlsInspectionPolicy(\"default\", new()\n {\n Name = \"my-tls-inspection-policy\",\n Location = \"us-central1\",\n CaPool = @default.Id,\n ExcludePublicCaSet = false,\n MinTlsVersion = \"TLS_1_0\",\n TrustConfig = defaultTrustConfig.Id,\n TlsFeatureProfile = \"PROFILE_CUSTOM\",\n CustomTlsFeatures = new[]\n {\n \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultAuthority,\n defaultCaPoolIamMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"my-basic-ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVOPS\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(false),\n\t\t\t\tPublishCrl: pulumi.Bool(false),\n\t\t\t},\n\t\t\tIssuancePolicy: \u0026certificateauthority.CaPoolIssuancePolicyArgs{\n\t\t\t\tMaximumLifetime: pulumi.String(\"1209600s\"),\n\t\t\t\tBaselineValues: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: nil,\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs{\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-basic-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tType: pulumi.String(\"SELF_SIGNED\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\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(\"Test LLC\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-ca\"),\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(false),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnsSa, err := projects.NewServiceIdentity(ctx, \"ns_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tService: pulumi.String(\"networksecurity.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCaPoolIamMember, err := certificateauthority.NewCaPoolIamMember(ctx, \"default\", \u0026certificateauthority.CaPoolIamMemberArgs{\n\t\t\tCaPool: _default.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateManager\"),\n\t\t\tMember: nsSa.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\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTrustConfig, err := certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tName: pulumi.String(\"my-trust-config\"),\n\t\t\tDescription: pulumi.String(\"sample trust config description\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTrustStores: certificatemanager.TrustConfigTrustStoreArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreArgs{\n\t\t\t\t\tTrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{\n\t\t\t\t\t\t\tPemCertificate: invokeFile.Result,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{\n\t\t\t\t\t\t\tPemCertificate: invokeFile1.Result,\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 = networksecurity.NewTlsInspectionPolicy(ctx, \"default\", \u0026networksecurity.TlsInspectionPolicyArgs{\n\t\t\tName: pulumi.String(\"my-tls-inspection-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCaPool: _default.ID(),\n\t\t\tExcludePublicCaSet: pulumi.Bool(false),\n\t\t\tMinTlsVersion: pulumi.String(\"TLS_1_0\"),\n\t\t\tTrustConfig: defaultTrustConfig.ID(),\n\t\t\tTlsFeatureProfile: pulumi.String(\"PROFILE_CUSTOM\"),\n\t\t\tCustomTlsFeatures: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_3DES_EDE_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_AES_128_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_AES_128_GCM_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_AES_256_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_AES_256_GCM_SHA384\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultAuthority,\n\t\t\tdefaultCaPoolIamMember,\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.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs;\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.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.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMember;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMemberArgs;\nimport com.pulumi.gcp.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigTrustStoreArgs;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicy;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicyArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .name(\"my-basic-ca-pool\")\n .location(\"us-central1\")\n .tier(\"DEVOPS\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(false)\n .publishCrl(false)\n .build())\n .issuancePolicy(CaPoolIssuancePolicyArgs.builder()\n .maximumLifetime(\"1209600s\")\n .baselineValues(CaPoolIssuancePolicyBaselineValuesArgs.builder()\n .caOptions(CaPoolIssuancePolicyBaselineValuesCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageArgs.builder()\n .baseKeyUsage()\n .extendedKeyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .pool(default_.name())\n .certificateAuthorityId(\"my-basic-certificate-authority\")\n .location(\"us-central1\")\n .lifetime(\"86400s\")\n .type(\"SELF_SIGNED\")\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"Test LLC\")\n .commonName(\"my-ca\")\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(false)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .build());\n\n var nsSa = new ServiceIdentity(\"nsSa\", ServiceIdentityArgs.builder()\n .service(\"networksecurity.googleapis.com\")\n .build());\n\n var defaultCaPoolIamMember = new CaPoolIamMember(\"defaultCaPoolIamMember\", CaPoolIamMemberArgs.builder()\n .caPool(default_.id())\n .role(\"roles/privateca.certificateManager\")\n .member(nsSa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var defaultTrustConfig = new TrustConfig(\"defaultTrustConfig\", TrustConfigArgs.builder()\n .name(\"my-trust-config\")\n .description(\"sample trust config description\")\n .location(\"us-central1\")\n .trustStores(TrustConfigTrustStoreArgs.builder()\n .trustAnchors(TrustConfigTrustStoreTrustAnchorArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .intermediateCas(TrustConfigTrustStoreIntermediateCaArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .build())\n .build());\n\n var defaultTlsInspectionPolicy = new TlsInspectionPolicy(\"defaultTlsInspectionPolicy\", TlsInspectionPolicyArgs.builder()\n .name(\"my-tls-inspection-policy\")\n .location(\"us-central1\")\n .caPool(default_.id())\n .excludePublicCaSet(false)\n .minTlsVersion(\"TLS_1_0\")\n .trustConfig(defaultTrustConfig.id())\n .tlsFeatureProfile(\"PROFILE_CUSTOM\")\n .customTlsFeatures( \n \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_RSA_WITH_AES_256_GCM_SHA384\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n defaultAuthority,\n defaultCaPoolIamMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n name: my-basic-ca-pool\n location: us-central1\n tier: DEVOPS\n publishingOptions:\n publishCaCert: false\n publishCrl: false\n issuancePolicy:\n maximumLifetime: 1209600s\n baselineValues:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage: {}\n extendedKeyUsage:\n serverAuth: true\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n pool: ${default.name}\n certificateAuthorityId: my-basic-certificate-authority\n location: us-central1\n lifetime: 86400s\n type: SELF_SIGNED\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n config:\n subjectConfig:\n subject:\n organization: Test LLC\n commonName: my-ca\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n nsSa:\n type: gcp:projects:ServiceIdentity\n name: ns_sa\n properties:\n service: networksecurity.googleapis.com\n defaultCaPoolIamMember:\n type: gcp:certificateauthority:CaPoolIamMember\n name: default\n properties:\n caPool: ${default.id}\n role: roles/privateca.certificateManager\n member: serviceAccount:${nsSa.email}\n defaultTrustConfig:\n type: gcp:certificatemanager:TrustConfig\n name: default\n properties:\n name: my-trust-config\n description: sample trust config description\n location: us-central1\n trustStores:\n - trustAnchors:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n intermediateCas:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n defaultTlsInspectionPolicy:\n type: gcp:networksecurity:TlsInspectionPolicy\n name: default\n properties:\n name: my-tls-inspection-policy\n location: us-central1\n caPool: ${default.id}\n excludePublicCaSet: false\n minTlsVersion: TLS_1_0\n trustConfig: ${defaultTrustConfig.id}\n tlsFeatureProfile: PROFILE_CUSTOM\n customTlsFeatures:\n - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\n - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\n - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\n - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\n - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\n - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\n - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\n - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\n - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\n - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\n - TLS_RSA_WITH_3DES_EDE_CBC_SHA\n - TLS_RSA_WITH_AES_128_CBC_SHA\n - TLS_RSA_WITH_AES_128_GCM_SHA256\n - TLS_RSA_WITH_AES_256_CBC_SHA\n - TLS_RSA_WITH_AES_256_GCM_SHA384\n options:\n dependson:\n - ${defaultAuthority}\n - ${defaultCaPoolIamMember}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTlsInspectionPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/tlsInspectionPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, TlsInspectionPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/tlsInspectionPolicy:TlsInspectionPolicy default projects/{{project}}/locations/{{location}}/tlsInspectionPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/tlsInspectionPolicy:TlsInspectionPolicy default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/tlsInspectionPolicy:TlsInspectionPolicy default {{location}}/{{name}}\n```\n\n", + "description": "The TlsInspectionPolicy resource contains references to CA pools in Certificate Authority Service and associated metadata.\n\n\nTo get more information about TlsInspectionPolicy, see:\n\n* [API documentation](https://cloud.google.com/secure-web-proxy/docs/reference/network-security/rest/v1/projects.locations.tlsInspectionPolicies)\n* How-to Guides\n * [Use TlsInspectionPolicy](https://cloud.google.com/secure-web-proxy/docs/tls-inspection-overview)\n\n## Example Usage\n\n### Network Security Tls Inspection Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n name: \"my-basic-ca-pool\",\n location: \"us-central1\",\n tier: \"DEVOPS\",\n publishingOptions: {\n publishCaCert: false,\n publishCrl: false,\n },\n issuancePolicy: {\n maximumLifetime: \"1209600s\",\n baselineValues: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {},\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n pool: _default.name,\n certificateAuthorityId: \"my-basic-certificate-authority\",\n location: \"us-central1\",\n lifetime: \"86400s\",\n type: \"SELF_SIGNED\",\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n config: {\n subjectConfig: {\n subject: {\n organization: \"Test LLC\",\n commonName: \"my-ca\",\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: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n});\nconst project = gcp.organizations.getProject({});\nconst tlsInspectionPermission = new gcp.certificateauthority.CaPoolIamMember(\"tls_inspection_permission\", {\n caPool: _default.id,\n role: \"roles/privateca.certificateManager\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com`),\n});\nconst defaultTlsInspectionPolicy = new gcp.networksecurity.TlsInspectionPolicy(\"default\", {\n name: \"my-tls-inspection-policy\",\n location: \"us-central1\",\n caPool: _default.id,\n excludePublicCaSet: false,\n}, {\n dependsOn: [\n _default,\n defaultAuthority,\n tlsInspectionPermission,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n name=\"my-basic-ca-pool\",\n location=\"us-central1\",\n tier=\"DEVOPS\",\n publishing_options={\n \"publish_ca_cert\": False,\n \"publish_crl\": False,\n },\n issuance_policy={\n \"maximum_lifetime\": \"1209600s\",\n \"baseline_values\": {\n \"ca_options\": {\n \"is_ca\": False,\n },\n \"key_usage\": {\n \"base_key_usage\": {},\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n })\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n pool=default.name,\n certificate_authority_id=\"my-basic-certificate-authority\",\n location=\"us-central1\",\n lifetime=\"86400s\",\n type=\"SELF_SIGNED\",\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True,\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"Test LLC\",\n \"common_name\": \"my-ca\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n })\nproject = gcp.organizations.get_project()\ntls_inspection_permission = gcp.certificateauthority.CaPoolIamMember(\"tls_inspection_permission\",\n ca_pool=default.id,\n role=\"roles/privateca.certificateManager\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com\")\ndefault_tls_inspection_policy = gcp.networksecurity.TlsInspectionPolicy(\"default\",\n name=\"my-tls-inspection-policy\",\n location=\"us-central1\",\n ca_pool=default.id,\n exclude_public_ca_set=False,\n opts = pulumi.ResourceOptions(depends_on=[\n default,\n default_authority,\n tls_inspection_permission,\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 @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Name = \"my-basic-ca-pool\",\n Location = \"us-central1\",\n Tier = \"DEVOPS\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = false,\n PublishCrl = false,\n },\n IssuancePolicy = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyArgs\n {\n MaximumLifetime = \"1209600s\",\n BaselineValues = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs\n {\n BaseKeyUsage = null,\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = @default.Name,\n CertificateAuthorityId = \"my-basic-certificate-authority\",\n Location = \"us-central1\",\n Lifetime = \"86400s\",\n Type = \"SELF_SIGNED\",\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\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 = \"Test LLC\",\n CommonName = \"my-ca\",\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 = false,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var tlsInspectionPermission = new Gcp.CertificateAuthority.CaPoolIamMember(\"tls_inspection_permission\", new()\n {\n CaPool = @default.Id,\n Role = \"roles/privateca.certificateManager\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-networksecurity.iam.gserviceaccount.com\",\n });\n\n var defaultTlsInspectionPolicy = new Gcp.NetworkSecurity.TlsInspectionPolicy(\"default\", new()\n {\n Name = \"my-tls-inspection-policy\",\n Location = \"us-central1\",\n CaPool = @default.Id,\n ExcludePublicCaSet = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n defaultAuthority,\n tlsInspectionPermission,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"my-basic-ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVOPS\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(false),\n\t\t\t\tPublishCrl: pulumi.Bool(false),\n\t\t\t},\n\t\t\tIssuancePolicy: \u0026certificateauthority.CaPoolIssuancePolicyArgs{\n\t\t\t\tMaximumLifetime: pulumi.String(\"1209600s\"),\n\t\t\t\tBaselineValues: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: nil,\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs{\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-basic-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tType: pulumi.String(\"SELF_SIGNED\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\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(\"Test LLC\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-ca\"),\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(false),\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})\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\ttlsInspectionPermission, err := certificateauthority.NewCaPoolIamMember(ctx, \"tls_inspection_permission\", \u0026certificateauthority.CaPoolIamMemberArgs{\n\t\t\tCaPool: _default.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateManager\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-networksecurity.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewTlsInspectionPolicy(ctx, \"default\", \u0026networksecurity.TlsInspectionPolicyArgs{\n\t\t\tName: pulumi.String(\"my-tls-inspection-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCaPool: _default.ID(),\n\t\t\tExcludePublicCaSet: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t\tdefaultAuthority,\n\t\t\ttlsInspectionPermission,\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.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs;\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.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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMember;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMemberArgs;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicy;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicyArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .name(\"my-basic-ca-pool\")\n .location(\"us-central1\")\n .tier(\"DEVOPS\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(false)\n .publishCrl(false)\n .build())\n .issuancePolicy(CaPoolIssuancePolicyArgs.builder()\n .maximumLifetime(\"1209600s\")\n .baselineValues(CaPoolIssuancePolicyBaselineValuesArgs.builder()\n .caOptions(CaPoolIssuancePolicyBaselineValuesCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageArgs.builder()\n .baseKeyUsage()\n .extendedKeyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .pool(default_.name())\n .certificateAuthorityId(\"my-basic-certificate-authority\")\n .location(\"us-central1\")\n .lifetime(\"86400s\")\n .type(\"SELF_SIGNED\")\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"Test LLC\")\n .commonName(\"my-ca\")\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(false)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var tlsInspectionPermission = new CaPoolIamMember(\"tlsInspectionPermission\", CaPoolIamMemberArgs.builder()\n .caPool(default_.id())\n .role(\"roles/privateca.certificateManager\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-networksecurity.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var defaultTlsInspectionPolicy = new TlsInspectionPolicy(\"defaultTlsInspectionPolicy\", TlsInspectionPolicyArgs.builder()\n .name(\"my-tls-inspection-policy\")\n .location(\"us-central1\")\n .caPool(default_.id())\n .excludePublicCaSet(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n default_,\n defaultAuthority,\n tlsInspectionPermission)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n name: my-basic-ca-pool\n location: us-central1\n tier: DEVOPS\n publishingOptions:\n publishCaCert: false\n publishCrl: false\n issuancePolicy:\n maximumLifetime: 1209600s\n baselineValues:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage: {}\n extendedKeyUsage:\n serverAuth: true\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n pool: ${default.name}\n certificateAuthorityId: my-basic-certificate-authority\n location: us-central1\n lifetime: 86400s\n type: SELF_SIGNED\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n config:\n subjectConfig:\n subject:\n organization: Test LLC\n commonName: my-ca\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n tlsInspectionPermission:\n type: gcp:certificateauthority:CaPoolIamMember\n name: tls_inspection_permission\n properties:\n caPool: ${default.id}\n role: roles/privateca.certificateManager\n member: serviceAccount:service-${project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com\n defaultTlsInspectionPolicy:\n type: gcp:networksecurity:TlsInspectionPolicy\n name: default\n properties:\n name: my-tls-inspection-policy\n location: us-central1\n caPool: ${default.id}\n excludePublicCaSet: false\n options:\n dependson:\n - ${default}\n - ${defaultAuthority}\n - ${tlsInspectionPermission}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Tls Inspection Policy Custom\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n name: \"my-basic-ca-pool\",\n location: \"us-central1\",\n tier: \"DEVOPS\",\n publishingOptions: {\n publishCaCert: false,\n publishCrl: false,\n },\n issuancePolicy: {\n maximumLifetime: \"1209600s\",\n baselineValues: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {},\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n pool: _default.name,\n certificateAuthorityId: \"my-basic-certificate-authority\",\n location: \"us-central1\",\n lifetime: \"86400s\",\n type: \"SELF_SIGNED\",\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n config: {\n subjectConfig: {\n subject: {\n organization: \"Test LLC\",\n commonName: \"my-ca\",\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: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n});\nconst nsSa = new gcp.projects.ServiceIdentity(\"ns_sa\", {service: \"networksecurity.googleapis.com\"});\nconst defaultCaPoolIamMember = new gcp.certificateauthority.CaPoolIamMember(\"default\", {\n caPool: _default.id,\n role: \"roles/privateca.certificateManager\",\n member: pulumi.interpolate`serviceAccount:${nsSa.email}`,\n});\nconst defaultTrustConfig = new gcp.certificatemanager.TrustConfig(\"default\", {\n name: \"my-trust-config\",\n description: \"sample trust config description\",\n location: \"us-central1\",\n trustStores: [{\n trustAnchors: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n intermediateCas: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n }],\n});\nconst defaultTlsInspectionPolicy = new gcp.networksecurity.TlsInspectionPolicy(\"default\", {\n name: \"my-tls-inspection-policy\",\n location: \"us-central1\",\n caPool: _default.id,\n excludePublicCaSet: false,\n minTlsVersion: \"TLS_1_0\",\n trustConfig: defaultTrustConfig.id,\n tlsFeatureProfile: \"PROFILE_CUSTOM\",\n customTlsFeatures: [\n \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n ],\n}, {\n dependsOn: [\n defaultAuthority,\n defaultCaPoolIamMember,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n name=\"my-basic-ca-pool\",\n location=\"us-central1\",\n tier=\"DEVOPS\",\n publishing_options={\n \"publish_ca_cert\": False,\n \"publish_crl\": False,\n },\n issuance_policy={\n \"maximum_lifetime\": \"1209600s\",\n \"baseline_values\": {\n \"ca_options\": {\n \"is_ca\": False,\n },\n \"key_usage\": {\n \"base_key_usage\": {},\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n })\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n pool=default.name,\n certificate_authority_id=\"my-basic-certificate-authority\",\n location=\"us-central1\",\n lifetime=\"86400s\",\n type=\"SELF_SIGNED\",\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True,\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"Test LLC\",\n \"common_name\": \"my-ca\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n })\nns_sa = gcp.projects.ServiceIdentity(\"ns_sa\", service=\"networksecurity.googleapis.com\")\ndefault_ca_pool_iam_member = gcp.certificateauthority.CaPoolIamMember(\"default\",\n ca_pool=default.id,\n role=\"roles/privateca.certificateManager\",\n member=ns_sa.email.apply(lambda email: f\"serviceAccount:{email}\"))\ndefault_trust_config = gcp.certificatemanager.TrustConfig(\"default\",\n name=\"my-trust-config\",\n description=\"sample trust config description\",\n location=\"us-central1\",\n trust_stores=[{\n \"trust_anchors\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n \"intermediate_cas\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n }])\ndefault_tls_inspection_policy = gcp.networksecurity.TlsInspectionPolicy(\"default\",\n name=\"my-tls-inspection-policy\",\n location=\"us-central1\",\n ca_pool=default.id,\n exclude_public_ca_set=False,\n min_tls_version=\"TLS_1_0\",\n trust_config=default_trust_config.id,\n tls_feature_profile=\"PROFILE_CUSTOM\",\n custom_tls_features=[\n \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n default_authority,\n default_ca_pool_iam_member,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Name = \"my-basic-ca-pool\",\n Location = \"us-central1\",\n Tier = \"DEVOPS\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = false,\n PublishCrl = false,\n },\n IssuancePolicy = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyArgs\n {\n MaximumLifetime = \"1209600s\",\n BaselineValues = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs\n {\n BaseKeyUsage = null,\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = @default.Name,\n CertificateAuthorityId = \"my-basic-certificate-authority\",\n Location = \"us-central1\",\n Lifetime = \"86400s\",\n Type = \"SELF_SIGNED\",\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\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 = \"Test LLC\",\n CommonName = \"my-ca\",\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 = false,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n });\n\n var nsSa = new Gcp.Projects.ServiceIdentity(\"ns_sa\", new()\n {\n Service = \"networksecurity.googleapis.com\",\n });\n\n var defaultCaPoolIamMember = new Gcp.CertificateAuthority.CaPoolIamMember(\"default\", new()\n {\n CaPool = @default.Id,\n Role = \"roles/privateca.certificateManager\",\n Member = nsSa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var defaultTrustConfig = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Name = \"my-trust-config\",\n Description = \"sample trust config description\",\n Location = \"us-central1\",\n TrustStores = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreArgs\n {\n TrustAnchors = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreTrustAnchorArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n IntermediateCas = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreIntermediateCaArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n },\n });\n\n var defaultTlsInspectionPolicy = new Gcp.NetworkSecurity.TlsInspectionPolicy(\"default\", new()\n {\n Name = \"my-tls-inspection-policy\",\n Location = \"us-central1\",\n CaPool = @default.Id,\n ExcludePublicCaSet = false,\n MinTlsVersion = \"TLS_1_0\",\n TrustConfig = defaultTrustConfig.Id,\n TlsFeatureProfile = \"PROFILE_CUSTOM\",\n CustomTlsFeatures = new[]\n {\n \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultAuthority,\n defaultCaPoolIamMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"my-basic-ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVOPS\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(false),\n\t\t\t\tPublishCrl: pulumi.Bool(false),\n\t\t\t},\n\t\t\tIssuancePolicy: \u0026certificateauthority.CaPoolIssuancePolicyArgs{\n\t\t\t\tMaximumLifetime: pulumi.String(\"1209600s\"),\n\t\t\t\tBaselineValues: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: nil,\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs{\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-basic-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tType: pulumi.String(\"SELF_SIGNED\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\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(\"Test LLC\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-ca\"),\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(false),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnsSa, err := projects.NewServiceIdentity(ctx, \"ns_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tService: pulumi.String(\"networksecurity.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCaPoolIamMember, err := certificateauthority.NewCaPoolIamMember(ctx, \"default\", \u0026certificateauthority.CaPoolIamMemberArgs{\n\t\t\tCaPool: _default.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateManager\"),\n\t\t\tMember: nsSa.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\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTrustConfig, err := certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tName: pulumi.String(\"my-trust-config\"),\n\t\t\tDescription: pulumi.String(\"sample trust config description\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTrustStores: certificatemanager.TrustConfigTrustStoreArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreArgs{\n\t\t\t\t\tTrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile1.Result),\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 = networksecurity.NewTlsInspectionPolicy(ctx, \"default\", \u0026networksecurity.TlsInspectionPolicyArgs{\n\t\t\tName: pulumi.String(\"my-tls-inspection-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCaPool: _default.ID(),\n\t\t\tExcludePublicCaSet: pulumi.Bool(false),\n\t\t\tMinTlsVersion: pulumi.String(\"TLS_1_0\"),\n\t\t\tTrustConfig: defaultTrustConfig.ID(),\n\t\t\tTlsFeatureProfile: pulumi.String(\"PROFILE_CUSTOM\"),\n\t\t\tCustomTlsFeatures: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_3DES_EDE_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_AES_128_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_AES_128_GCM_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_AES_256_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_AES_256_GCM_SHA384\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultAuthority,\n\t\t\tdefaultCaPoolIamMember,\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.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs;\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.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.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMember;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMemberArgs;\nimport com.pulumi.gcp.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigTrustStoreArgs;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicy;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicyArgs;\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 CaPool(\"default\", CaPoolArgs.builder()\n .name(\"my-basic-ca-pool\")\n .location(\"us-central1\")\n .tier(\"DEVOPS\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(false)\n .publishCrl(false)\n .build())\n .issuancePolicy(CaPoolIssuancePolicyArgs.builder()\n .maximumLifetime(\"1209600s\")\n .baselineValues(CaPoolIssuancePolicyBaselineValuesArgs.builder()\n .caOptions(CaPoolIssuancePolicyBaselineValuesCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageArgs.builder()\n .baseKeyUsage()\n .extendedKeyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .pool(default_.name())\n .certificateAuthorityId(\"my-basic-certificate-authority\")\n .location(\"us-central1\")\n .lifetime(\"86400s\")\n .type(\"SELF_SIGNED\")\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"Test LLC\")\n .commonName(\"my-ca\")\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(false)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .build());\n\n var nsSa = new ServiceIdentity(\"nsSa\", ServiceIdentityArgs.builder()\n .service(\"networksecurity.googleapis.com\")\n .build());\n\n var defaultCaPoolIamMember = new CaPoolIamMember(\"defaultCaPoolIamMember\", CaPoolIamMemberArgs.builder()\n .caPool(default_.id())\n .role(\"roles/privateca.certificateManager\")\n .member(nsSa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var defaultTrustConfig = new TrustConfig(\"defaultTrustConfig\", TrustConfigArgs.builder()\n .name(\"my-trust-config\")\n .description(\"sample trust config description\")\n .location(\"us-central1\")\n .trustStores(TrustConfigTrustStoreArgs.builder()\n .trustAnchors(TrustConfigTrustStoreTrustAnchorArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .intermediateCas(TrustConfigTrustStoreIntermediateCaArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .build())\n .build());\n\n var defaultTlsInspectionPolicy = new TlsInspectionPolicy(\"defaultTlsInspectionPolicy\", TlsInspectionPolicyArgs.builder()\n .name(\"my-tls-inspection-policy\")\n .location(\"us-central1\")\n .caPool(default_.id())\n .excludePublicCaSet(false)\n .minTlsVersion(\"TLS_1_0\")\n .trustConfig(defaultTrustConfig.id())\n .tlsFeatureProfile(\"PROFILE_CUSTOM\")\n .customTlsFeatures( \n \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_RSA_WITH_AES_256_GCM_SHA384\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n defaultAuthority,\n defaultCaPoolIamMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n name: my-basic-ca-pool\n location: us-central1\n tier: DEVOPS\n publishingOptions:\n publishCaCert: false\n publishCrl: false\n issuancePolicy:\n maximumLifetime: 1209600s\n baselineValues:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage: {}\n extendedKeyUsage:\n serverAuth: true\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n pool: ${default.name}\n certificateAuthorityId: my-basic-certificate-authority\n location: us-central1\n lifetime: 86400s\n type: SELF_SIGNED\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n config:\n subjectConfig:\n subject:\n organization: Test LLC\n commonName: my-ca\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n nsSa:\n type: gcp:projects:ServiceIdentity\n name: ns_sa\n properties:\n service: networksecurity.googleapis.com\n defaultCaPoolIamMember:\n type: gcp:certificateauthority:CaPoolIamMember\n name: default\n properties:\n caPool: ${default.id}\n role: roles/privateca.certificateManager\n member: serviceAccount:${nsSa.email}\n defaultTrustConfig:\n type: gcp:certificatemanager:TrustConfig\n name: default\n properties:\n name: my-trust-config\n description: sample trust config description\n location: us-central1\n trustStores:\n - trustAnchors:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n intermediateCas:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n defaultTlsInspectionPolicy:\n type: gcp:networksecurity:TlsInspectionPolicy\n name: default\n properties:\n name: my-tls-inspection-policy\n location: us-central1\n caPool: ${default.id}\n excludePublicCaSet: false\n minTlsVersion: TLS_1_0\n trustConfig: ${defaultTrustConfig.id}\n tlsFeatureProfile: PROFILE_CUSTOM\n customTlsFeatures:\n - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\n - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\n - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\n - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\n - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\n - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\n - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\n - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\n - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\n - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\n - TLS_RSA_WITH_3DES_EDE_CBC_SHA\n - TLS_RSA_WITH_AES_128_CBC_SHA\n - TLS_RSA_WITH_AES_128_GCM_SHA256\n - TLS_RSA_WITH_AES_256_CBC_SHA\n - TLS_RSA_WITH_AES_256_GCM_SHA384\n options:\n dependson:\n - ${defaultAuthority}\n - ${defaultCaPoolIamMember}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTlsInspectionPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/tlsInspectionPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, TlsInspectionPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/tlsInspectionPolicy:TlsInspectionPolicy default projects/{{project}}/locations/{{location}}/tlsInspectionPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/tlsInspectionPolicy:TlsInspectionPolicy default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/tlsInspectionPolicy:TlsInspectionPolicy default {{location}}/{{name}}\n```\n\n", "properties": { "caPool": { "type": "string", @@ -220139,7 +220139,7 @@ } }, "gcp:networkservices/edgeCacheKeyset:EdgeCacheKeyset": { - "description": "EdgeCacheKeyset represents a collection of public keys used for validating signed requests.\n\n\nTo get more information about EdgeCacheKeyset, see:\n\n* [API documentation](https://cloud.google.com/media-cdn/docs/reference/rest/v1/projects.locations.edgeCacheKeysets)\n* How-to Guides\n * [Create keysets](https://cloud.google.com/media-cdn/docs/create-keyset)\n\n\n\n## Example Usage\n\n### Network Services Edge Cache Keyset Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.EdgeCacheKeyset(\"default\", {\n name: \"my-keyset\",\n description: \"The default keyset\",\n publicKeys: [\n {\n id: \"my-public-key\",\n value: \"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\",\n },\n {\n id: \"my-public-key-2\",\n value: \"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.EdgeCacheKeyset(\"default\",\n name=\"my-keyset\",\n description=\"The default keyset\",\n public_keys=[\n {\n \"id\": \"my-public-key\",\n \"value\": \"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\",\n },\n {\n \"id\": \"my-public-key-2\",\n \"value\": \"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\",\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 @default = new Gcp.NetworkServices.EdgeCacheKeyset(\"default\", new()\n {\n Name = \"my-keyset\",\n Description = \"The default keyset\",\n PublicKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetPublicKeyArgs\n {\n Id = \"my-public-key\",\n Value = \"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\",\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetPublicKeyArgs\n {\n Id = \"my-public-key-2\",\n Value = \"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewEdgeCacheKeyset(ctx, \"default\", \u0026networkservices.EdgeCacheKeysetArgs{\n\t\t\tName: pulumi.String(\"my-keyset\"),\n\t\t\tDescription: pulumi.String(\"The default keyset\"),\n\t\t\tPublicKeys: networkservices.EdgeCacheKeysetPublicKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetPublicKeyArgs{\n\t\t\t\t\tId: pulumi.String(\"my-public-key\"),\n\t\t\t\t\tValue: pulumi.String(\"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\"),\n\t\t\t\t},\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetPublicKeyArgs{\n\t\t\t\t\tId: pulumi.String(\"my-public-key-2\"),\n\t\t\t\t\tValue: pulumi.String(\"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\"),\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.networkservices.EdgeCacheKeyset;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeysetArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetPublicKeyArgs;\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 EdgeCacheKeyset(\"default\", EdgeCacheKeysetArgs.builder()\n .name(\"my-keyset\")\n .description(\"The default keyset\")\n .publicKeys( \n EdgeCacheKeysetPublicKeyArgs.builder()\n .id(\"my-public-key\")\n .value(\"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\")\n .build(),\n EdgeCacheKeysetPublicKeyArgs.builder()\n .id(\"my-public-key-2\")\n .value(\"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:EdgeCacheKeyset\n properties:\n name: my-keyset\n description: The default keyset\n publicKeys:\n - id: my-public-key\n value: FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\n - id: my-public-key-2\n value: hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Keyset Dual Token\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-name\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n});\nconst _default = new gcp.networkservices.EdgeCacheKeyset(\"default\", {\n name: \"my-keyset\",\n description: \"The default keyset\",\n publicKeys: [{\n id: \"my-public-key\",\n managed: true,\n }],\n validationSharedKeys: [{\n secretVersion: secret_version_basic.id,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-name\",\n replication={\n \"auto\": {},\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"secret-data\")\ndefault = gcp.networkservices.EdgeCacheKeyset(\"default\",\n name=\"my-keyset\",\n description=\"The default keyset\",\n public_keys=[{\n \"id\": \"my-public-key\",\n \"managed\": True,\n }],\n validation_shared_keys=[{\n \"secretVersion\": secret_version_basic.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 secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-name\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n });\n\n var @default = new Gcp.NetworkServices.EdgeCacheKeyset(\"default\", new()\n {\n Name = \"my-keyset\",\n Description = \"The default keyset\",\n PublicKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetPublicKeyArgs\n {\n Id = \"my-public-key\",\n Managed = true,\n },\n },\n ValidationSharedKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetValidationSharedKeyArgs\n {\n SecretVersion = secret_version_basic.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-name\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheKeyset(ctx, \"default\", \u0026networkservices.EdgeCacheKeysetArgs{\n\t\t\tName: pulumi.String(\"my-keyset\"),\n\t\t\tDescription: pulumi.String(\"The default keyset\"),\n\t\t\tPublicKeys: networkservices.EdgeCacheKeysetPublicKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetPublicKeyArgs{\n\t\t\t\t\tId: pulumi.String(\"my-public-key\"),\n\t\t\t\t\tManaged: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tValidationSharedKeys: networkservices.EdgeCacheKeysetValidationSharedKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetValidationSharedKeyArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.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.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeyset;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeysetArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetPublicKeyArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetValidationSharedKeyArgs;\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 secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-name\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .build());\n\n var default_ = new EdgeCacheKeyset(\"default\", EdgeCacheKeysetArgs.builder()\n .name(\"my-keyset\")\n .description(\"The default keyset\")\n .publicKeys(EdgeCacheKeysetPublicKeyArgs.builder()\n .id(\"my-public-key\")\n .managed(true)\n .build())\n .validationSharedKeys(EdgeCacheKeysetValidationSharedKeyArgs.builder()\n .secretVersion(secret_version_basic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-name\n replication:\n auto: {}\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n default:\n type: gcp:networkservices:EdgeCacheKeyset\n properties:\n name: my-keyset\n description: The default keyset\n publicKeys:\n - id: my-public-key\n managed: true\n validationSharedKeys:\n - secretVersion: ${[\"secret-version-basic\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEdgeCacheKeyset can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/edgeCacheKeysets/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, EdgeCacheKeyset can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheKeyset:EdgeCacheKeyset default projects/{{project}}/locations/global/edgeCacheKeysets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheKeyset:EdgeCacheKeyset default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheKeyset:EdgeCacheKeyset default {{name}}\n```\n\n", + "description": "EdgeCacheKeyset represents a collection of public keys used for validating signed requests.\n\n\nTo get more information about EdgeCacheKeyset, see:\n\n* [API documentation](https://cloud.google.com/media-cdn/docs/reference/rest/v1/projects.locations.edgeCacheKeysets)\n* How-to Guides\n * [Create keysets](https://cloud.google.com/media-cdn/docs/create-keyset)\n\n\n\n## Example Usage\n\n### Network Services Edge Cache Keyset Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.EdgeCacheKeyset(\"default\", {\n name: \"my-keyset\",\n description: \"The default keyset\",\n publicKeys: [\n {\n id: \"my-public-key\",\n value: \"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\",\n },\n {\n id: \"my-public-key-2\",\n value: \"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.EdgeCacheKeyset(\"default\",\n name=\"my-keyset\",\n description=\"The default keyset\",\n public_keys=[\n {\n \"id\": \"my-public-key\",\n \"value\": \"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\",\n },\n {\n \"id\": \"my-public-key-2\",\n \"value\": \"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\",\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 @default = new Gcp.NetworkServices.EdgeCacheKeyset(\"default\", new()\n {\n Name = \"my-keyset\",\n Description = \"The default keyset\",\n PublicKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetPublicKeyArgs\n {\n Id = \"my-public-key\",\n Value = \"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\",\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetPublicKeyArgs\n {\n Id = \"my-public-key-2\",\n Value = \"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewEdgeCacheKeyset(ctx, \"default\", \u0026networkservices.EdgeCacheKeysetArgs{\n\t\t\tName: pulumi.String(\"my-keyset\"),\n\t\t\tDescription: pulumi.String(\"The default keyset\"),\n\t\t\tPublicKeys: networkservices.EdgeCacheKeysetPublicKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetPublicKeyArgs{\n\t\t\t\t\tId: pulumi.String(\"my-public-key\"),\n\t\t\t\t\tValue: pulumi.String(\"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\"),\n\t\t\t\t},\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetPublicKeyArgs{\n\t\t\t\t\tId: pulumi.String(\"my-public-key-2\"),\n\t\t\t\t\tValue: pulumi.String(\"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\"),\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.networkservices.EdgeCacheKeyset;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeysetArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetPublicKeyArgs;\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 EdgeCacheKeyset(\"default\", EdgeCacheKeysetArgs.builder()\n .name(\"my-keyset\")\n .description(\"The default keyset\")\n .publicKeys( \n EdgeCacheKeysetPublicKeyArgs.builder()\n .id(\"my-public-key\")\n .value(\"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\")\n .build(),\n EdgeCacheKeysetPublicKeyArgs.builder()\n .id(\"my-public-key-2\")\n .value(\"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:EdgeCacheKeyset\n properties:\n name: my-keyset\n description: The default keyset\n publicKeys:\n - id: my-public-key\n value: FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\n - id: my-public-key-2\n value: hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Keyset Dual Token\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-name\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n});\nconst _default = new gcp.networkservices.EdgeCacheKeyset(\"default\", {\n name: \"my-keyset\",\n description: \"The default keyset\",\n publicKeys: [{\n id: \"my-public-key\",\n managed: true,\n }],\n validationSharedKeys: [{\n secretVersion: secret_version_basic.id,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-name\",\n replication={\n \"auto\": {},\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"secret-data\")\ndefault = gcp.networkservices.EdgeCacheKeyset(\"default\",\n name=\"my-keyset\",\n description=\"The default keyset\",\n public_keys=[{\n \"id\": \"my-public-key\",\n \"managed\": True,\n }],\n validation_shared_keys=[{\n \"secret_version\": secret_version_basic.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 secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-name\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n });\n\n var @default = new Gcp.NetworkServices.EdgeCacheKeyset(\"default\", new()\n {\n Name = \"my-keyset\",\n Description = \"The default keyset\",\n PublicKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetPublicKeyArgs\n {\n Id = \"my-public-key\",\n Managed = true,\n },\n },\n ValidationSharedKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetValidationSharedKeyArgs\n {\n SecretVersion = secret_version_basic.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-name\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheKeyset(ctx, \"default\", \u0026networkservices.EdgeCacheKeysetArgs{\n\t\t\tName: pulumi.String(\"my-keyset\"),\n\t\t\tDescription: pulumi.String(\"The default keyset\"),\n\t\t\tPublicKeys: networkservices.EdgeCacheKeysetPublicKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetPublicKeyArgs{\n\t\t\t\t\tId: pulumi.String(\"my-public-key\"),\n\t\t\t\t\tManaged: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tValidationSharedKeys: networkservices.EdgeCacheKeysetValidationSharedKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetValidationSharedKeyArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.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.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeyset;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeysetArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetPublicKeyArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetValidationSharedKeyArgs;\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 secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-name\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .build());\n\n var default_ = new EdgeCacheKeyset(\"default\", EdgeCacheKeysetArgs.builder()\n .name(\"my-keyset\")\n .description(\"The default keyset\")\n .publicKeys(EdgeCacheKeysetPublicKeyArgs.builder()\n .id(\"my-public-key\")\n .managed(true)\n .build())\n .validationSharedKeys(EdgeCacheKeysetValidationSharedKeyArgs.builder()\n .secretVersion(secret_version_basic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-name\n replication:\n auto: {}\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n default:\n type: gcp:networkservices:EdgeCacheKeyset\n properties:\n name: my-keyset\n description: The default keyset\n publicKeys:\n - id: my-public-key\n managed: true\n validationSharedKeys:\n - secretVersion: ${[\"secret-version-basic\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEdgeCacheKeyset can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/edgeCacheKeysets/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, EdgeCacheKeyset can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheKeyset:EdgeCacheKeyset default projects/{{project}}/locations/global/edgeCacheKeysets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheKeyset:EdgeCacheKeyset default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheKeyset:EdgeCacheKeyset default {{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -220293,7 +220293,7 @@ } }, "gcp:networkservices/edgeCacheOrigin:EdgeCacheOrigin": { - "description": "EdgeCacheOrigin represents a HTTP-reachable backend for an EdgeCacheService.\n\n\nTo get more information about EdgeCacheOrigin, see:\n\n* [API documentation](https://cloud.google.com/media-cdn/docs/reference/rest/v1/projects.locations.edgeCacheOrigins)\n\n## Example Usage\n\n### Network Services Edge Cache Origin Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.EdgeCacheOrigin(\"default\", {\n name: \"my-origin\",\n originAddress: \"gs://media-edge-default\",\n description: \"The default bucket for media edge test\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.EdgeCacheOrigin(\"default\",\n name=\"my-origin\",\n origin_address=\"gs://media-edge-default\",\n description=\"The default bucket for media edge test\")\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.EdgeCacheOrigin(\"default\", new()\n {\n Name = \"my-origin\",\n OriginAddress = \"gs://media-edge-default\",\n Description = \"The default bucket for media edge test\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewEdgeCacheOrigin(ctx, \"default\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: pulumi.String(\"gs://media-edge-default\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\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.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\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 EdgeCacheOrigin(\"default\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(\"gs://media-edge-default\")\n .description(\"The default bucket for media edge test\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: gs://media-edge-default\n description: The default bucket for media edge test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Origin Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst fallback = new gcp.networkservices.EdgeCacheOrigin(\"fallback\", {\n name: \"my-fallback\",\n originAddress: \"fallback.example.com\",\n description: \"The default bucket for media edge test\",\n maxAttempts: 3,\n protocol: \"HTTP\",\n port: 80,\n retryConditions: [\n \"CONNECT_FAILURE\",\n \"NOT_FOUND\",\n \"HTTP_5XX\",\n \"FORBIDDEN\",\n ],\n timeout: {\n connectTimeout: \"10s\",\n maxAttemptsTimeout: \"20s\",\n responseTimeout: \"60s\",\n readTimeout: \"5s\",\n },\n originOverrideAction: {\n urlRewrite: {\n hostRewrite: \"example.com\",\n },\n headerAction: {\n requestHeadersToAdds: [{\n headerName: \"x-header\",\n headerValue: \"value\",\n replace: true,\n }],\n },\n },\n originRedirect: {\n redirectConditions: [\n \"MOVED_PERMANENTLY\",\n \"FOUND\",\n \"SEE_OTHER\",\n \"TEMPORARY_REDIRECT\",\n \"PERMANENT_REDIRECT\",\n ],\n },\n});\nconst _default = new gcp.networkservices.EdgeCacheOrigin(\"default\", {\n name: \"my-origin\",\n originAddress: \"gs://media-edge-default\",\n failoverOrigin: fallback.id,\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n labels: {\n a: \"b\",\n },\n timeout: {\n connectTimeout: \"10s\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfallback = gcp.networkservices.EdgeCacheOrigin(\"fallback\",\n name=\"my-fallback\",\n origin_address=\"fallback.example.com\",\n description=\"The default bucket for media edge test\",\n max_attempts=3,\n protocol=\"HTTP\",\n port=80,\n retry_conditions=[\n \"CONNECT_FAILURE\",\n \"NOT_FOUND\",\n \"HTTP_5XX\",\n \"FORBIDDEN\",\n ],\n timeout={\n \"connectTimeout\": \"10s\",\n \"maxAttemptsTimeout\": \"20s\",\n \"responseTimeout\": \"60s\",\n \"readTimeout\": \"5s\",\n },\n origin_override_action={\n \"urlRewrite\": {\n \"hostRewrite\": \"example.com\",\n },\n \"headerAction\": {\n \"requestHeadersToAdds\": [{\n \"headerName\": \"x-header\",\n \"headerValue\": \"value\",\n \"replace\": True,\n }],\n },\n },\n origin_redirect={\n \"redirectConditions\": [\n \"MOVED_PERMANENTLY\",\n \"FOUND\",\n \"SEE_OTHER\",\n \"TEMPORARY_REDIRECT\",\n \"PERMANENT_REDIRECT\",\n ],\n })\ndefault = gcp.networkservices.EdgeCacheOrigin(\"default\",\n name=\"my-origin\",\n origin_address=\"gs://media-edge-default\",\n failover_origin=fallback.id,\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n labels={\n \"a\": \"b\",\n },\n timeout={\n \"connectTimeout\": \"10s\",\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 fallback = new Gcp.NetworkServices.EdgeCacheOrigin(\"fallback\", new()\n {\n Name = \"my-fallback\",\n OriginAddress = \"fallback.example.com\",\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 3,\n Protocol = \"HTTP\",\n Port = 80,\n RetryConditions = new[]\n {\n \"CONNECT_FAILURE\",\n \"NOT_FOUND\",\n \"HTTP_5XX\",\n \"FORBIDDEN\",\n },\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n MaxAttemptsTimeout = \"20s\",\n ResponseTimeout = \"60s\",\n ReadTimeout = \"5s\",\n },\n OriginOverrideAction = new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginOverrideActionArgs\n {\n UrlRewrite = new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginOverrideActionUrlRewriteArgs\n {\n HostRewrite = \"example.com\",\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginOverrideActionHeaderActionArgs\n {\n RequestHeadersToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginOverrideActionHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"x-header\",\n HeaderValue = \"value\",\n Replace = true,\n },\n },\n },\n },\n OriginRedirect = new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginRedirectArgs\n {\n RedirectConditions = new[]\n {\n \"MOVED_PERMANENTLY\",\n \"FOUND\",\n \"SEE_OTHER\",\n \"TEMPORARY_REDIRECT\",\n \"PERMANENT_REDIRECT\",\n },\n },\n });\n\n var @default = new Gcp.NetworkServices.EdgeCacheOrigin(\"default\", new()\n {\n Name = \"my-origin\",\n OriginAddress = \"gs://media-edge-default\",\n FailoverOrigin = fallback.Id,\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Labels = \n {\n { \"a\", \"b\" },\n },\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tfallback, err := networkservices.NewEdgeCacheOrigin(ctx, \"fallback\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-fallback\"),\n\t\t\tOriginAddress: pulumi.String(\"fallback.example.com\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(3),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tPort: pulumi.Int(80),\n\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"CONNECT_FAILURE\"),\n\t\t\t\tpulumi.String(\"NOT_FOUND\"),\n\t\t\t\tpulumi.String(\"HTTP_5XX\"),\n\t\t\t\tpulumi.String(\"FORBIDDEN\"),\n\t\t\t},\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t\tMaxAttemptsTimeout: pulumi.String(\"20s\"),\n\t\t\t\tResponseTimeout: pulumi.String(\"60s\"),\n\t\t\t\tReadTimeout: pulumi.String(\"5s\"),\n\t\t\t},\n\t\t\tOriginOverrideAction: \u0026networkservices.EdgeCacheOriginOriginOverrideActionArgs{\n\t\t\t\tUrlRewrite: \u0026networkservices.EdgeCacheOriginOriginOverrideActionUrlRewriteArgs{\n\t\t\t\t\tHostRewrite: pulumi.String(\"example.com\"),\n\t\t\t\t},\n\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheOriginOriginOverrideActionHeaderActionArgs{\n\t\t\t\t\tRequestHeadersToAdds: networkservices.EdgeCacheOriginOriginOverrideActionHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\u0026networkservices.EdgeCacheOriginOriginOverrideActionHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\tHeaderName: pulumi.String(\"x-header\"),\n\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"value\"),\n\t\t\t\t\t\t\tReplace: 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\tOriginRedirect: \u0026networkservices.EdgeCacheOriginOriginRedirectArgs{\n\t\t\t\tRedirectConditions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"MOVED_PERMANENTLY\"),\n\t\t\t\t\tpulumi.String(\"FOUND\"),\n\t\t\t\t\tpulumi.String(\"SEE_OTHER\"),\n\t\t\t\t\tpulumi.String(\"TEMPORARY_REDIRECT\"),\n\t\t\t\t\tpulumi.String(\"PERMANENT_REDIRECT\"),\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 = networkservices.NewEdgeCacheOrigin(ctx, \"default\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: pulumi.String(\"gs://media-edge-default\"),\n\t\t\tFailoverOrigin: fallback.ID(),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"a\": pulumi.String(\"b\"),\n\t\t\t},\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\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.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginTimeoutArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginOriginOverrideActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginOriginOverrideActionUrlRewriteArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginOriginOverrideActionHeaderActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginOriginRedirectArgs;\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 fallback = new EdgeCacheOrigin(\"fallback\", EdgeCacheOriginArgs.builder()\n .name(\"my-fallback\")\n .originAddress(\"fallback.example.com\")\n .description(\"The default bucket for media edge test\")\n .maxAttempts(3)\n .protocol(\"HTTP\")\n .port(80)\n .retryConditions( \n \"CONNECT_FAILURE\",\n \"NOT_FOUND\",\n \"HTTP_5XX\",\n \"FORBIDDEN\")\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .maxAttemptsTimeout(\"20s\")\n .responseTimeout(\"60s\")\n .readTimeout(\"5s\")\n .build())\n .originOverrideAction(EdgeCacheOriginOriginOverrideActionArgs.builder()\n .urlRewrite(EdgeCacheOriginOriginOverrideActionUrlRewriteArgs.builder()\n .hostRewrite(\"example.com\")\n .build())\n .headerAction(EdgeCacheOriginOriginOverrideActionHeaderActionArgs.builder()\n .requestHeadersToAdds(EdgeCacheOriginOriginOverrideActionHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"x-header\")\n .headerValue(\"value\")\n .replace(true)\n .build())\n .build())\n .build())\n .originRedirect(EdgeCacheOriginOriginRedirectArgs.builder()\n .redirectConditions( \n \"MOVED_PERMANENTLY\",\n \"FOUND\",\n \"SEE_OTHER\",\n \"TEMPORARY_REDIRECT\",\n \"PERMANENT_REDIRECT\")\n .build())\n .build());\n\n var default_ = new EdgeCacheOrigin(\"default\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(\"gs://media-edge-default\")\n .failoverOrigin(fallback.id())\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .labels(Map.of(\"a\", \"b\"))\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n fallback:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-fallback\n originAddress: fallback.example.com\n description: The default bucket for media edge test\n maxAttempts: 3\n protocol: HTTP\n port: 80\n retryConditions:\n - CONNECT_FAILURE\n - NOT_FOUND\n - HTTP_5XX\n - FORBIDDEN\n timeout:\n connectTimeout: 10s\n maxAttemptsTimeout: 20s\n responseTimeout: 60s\n readTimeout: 5s\n originOverrideAction:\n urlRewrite:\n hostRewrite: example.com\n headerAction:\n requestHeadersToAdds:\n - headerName: x-header\n headerValue: value\n replace: true\n originRedirect:\n redirectConditions:\n - MOVED_PERMANENTLY\n - FOUND\n - SEE_OTHER\n - TEMPORARY_REDIRECT\n - PERMANENT_REDIRECT\n default:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: gs://media-edge-default\n failoverOrigin: ${fallback.id}\n description: The default bucket for media edge test\n maxAttempts: 2\n labels:\n a: b\n timeout:\n connectTimeout: 10s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Origin V4auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-name\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n});\nconst _default = new gcp.networkservices.EdgeCacheOrigin(\"default\", {\n name: \"my-origin\",\n originAddress: \"gs://media-edge-default\",\n description: \"The default bucket for V4 authentication\",\n awsV4Authentication: {\n accessKeyId: \"ACCESSKEYID\",\n secretAccessKeyVersion: secret_version_basic.id,\n originRegion: \"auto\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-name\",\n replication={\n \"auto\": {},\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"secret-data\")\ndefault = gcp.networkservices.EdgeCacheOrigin(\"default\",\n name=\"my-origin\",\n origin_address=\"gs://media-edge-default\",\n description=\"The default bucket for V4 authentication\",\n aws_v4_authentication={\n \"accessKeyId\": \"ACCESSKEYID\",\n \"secretAccessKeyVersion\": secret_version_basic.id,\n \"originRegion\": \"auto\",\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 secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-name\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n });\n\n var @default = new Gcp.NetworkServices.EdgeCacheOrigin(\"default\", new()\n {\n Name = \"my-origin\",\n OriginAddress = \"gs://media-edge-default\",\n Description = \"The default bucket for V4 authentication\",\n AwsV4Authentication = new Gcp.NetworkServices.Inputs.EdgeCacheOriginAwsV4AuthenticationArgs\n {\n AccessKeyId = \"ACCESSKEYID\",\n SecretAccessKeyVersion = secret_version_basic.Id,\n OriginRegion = \"auto\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-name\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheOrigin(ctx, \"default\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: pulumi.String(\"gs://media-edge-default\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for V4 authentication\"),\n\t\t\tAwsV4Authentication: \u0026networkservices.EdgeCacheOriginAwsV4AuthenticationArgs{\n\t\t\t\tAccessKeyId: pulumi.String(\"ACCESSKEYID\"),\n\t\t\t\tSecretAccessKeyVersion: secret_version_basic.ID(),\n\t\t\t\tOriginRegion: pulumi.String(\"auto\"),\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginAwsV4AuthenticationArgs;\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 secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-name\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .build());\n\n var default_ = new EdgeCacheOrigin(\"default\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(\"gs://media-edge-default\")\n .description(\"The default bucket for V4 authentication\")\n .awsV4Authentication(EdgeCacheOriginAwsV4AuthenticationArgs.builder()\n .accessKeyId(\"ACCESSKEYID\")\n .secretAccessKeyVersion(secret_version_basic.id())\n .originRegion(\"auto\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-name\n replication:\n auto: {}\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n default:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: gs://media-edge-default\n description: The default bucket for V4 authentication\n awsV4Authentication:\n accessKeyId: ACCESSKEYID\n secretAccessKeyVersion: ${[\"secret-version-basic\"].id}\n originRegion: auto\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEdgeCacheOrigin can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/edgeCacheOrigins/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, EdgeCacheOrigin can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheOrigin:EdgeCacheOrigin default projects/{{project}}/locations/global/edgeCacheOrigins/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheOrigin:EdgeCacheOrigin default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheOrigin:EdgeCacheOrigin default {{name}}\n```\n\n", + "description": "EdgeCacheOrigin represents a HTTP-reachable backend for an EdgeCacheService.\n\n\nTo get more information about EdgeCacheOrigin, see:\n\n* [API documentation](https://cloud.google.com/media-cdn/docs/reference/rest/v1/projects.locations.edgeCacheOrigins)\n\n## Example Usage\n\n### Network Services Edge Cache Origin Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.EdgeCacheOrigin(\"default\", {\n name: \"my-origin\",\n originAddress: \"gs://media-edge-default\",\n description: \"The default bucket for media edge test\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.EdgeCacheOrigin(\"default\",\n name=\"my-origin\",\n origin_address=\"gs://media-edge-default\",\n description=\"The default bucket for media edge test\")\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.EdgeCacheOrigin(\"default\", new()\n {\n Name = \"my-origin\",\n OriginAddress = \"gs://media-edge-default\",\n Description = \"The default bucket for media edge test\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewEdgeCacheOrigin(ctx, \"default\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: pulumi.String(\"gs://media-edge-default\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\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.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\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 EdgeCacheOrigin(\"default\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(\"gs://media-edge-default\")\n .description(\"The default bucket for media edge test\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: gs://media-edge-default\n description: The default bucket for media edge test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Origin Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst fallback = new gcp.networkservices.EdgeCacheOrigin(\"fallback\", {\n name: \"my-fallback\",\n originAddress: \"fallback.example.com\",\n description: \"The default bucket for media edge test\",\n maxAttempts: 3,\n protocol: \"HTTP\",\n port: 80,\n retryConditions: [\n \"CONNECT_FAILURE\",\n \"NOT_FOUND\",\n \"HTTP_5XX\",\n \"FORBIDDEN\",\n ],\n timeout: {\n connectTimeout: \"10s\",\n maxAttemptsTimeout: \"20s\",\n responseTimeout: \"60s\",\n readTimeout: \"5s\",\n },\n originOverrideAction: {\n urlRewrite: {\n hostRewrite: \"example.com\",\n },\n headerAction: {\n requestHeadersToAdds: [{\n headerName: \"x-header\",\n headerValue: \"value\",\n replace: true,\n }],\n },\n },\n originRedirect: {\n redirectConditions: [\n \"MOVED_PERMANENTLY\",\n \"FOUND\",\n \"SEE_OTHER\",\n \"TEMPORARY_REDIRECT\",\n \"PERMANENT_REDIRECT\",\n ],\n },\n});\nconst _default = new gcp.networkservices.EdgeCacheOrigin(\"default\", {\n name: \"my-origin\",\n originAddress: \"gs://media-edge-default\",\n failoverOrigin: fallback.id,\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n labels: {\n a: \"b\",\n },\n timeout: {\n connectTimeout: \"10s\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfallback = gcp.networkservices.EdgeCacheOrigin(\"fallback\",\n name=\"my-fallback\",\n origin_address=\"fallback.example.com\",\n description=\"The default bucket for media edge test\",\n max_attempts=3,\n protocol=\"HTTP\",\n port=80,\n retry_conditions=[\n \"CONNECT_FAILURE\",\n \"NOT_FOUND\",\n \"HTTP_5XX\",\n \"FORBIDDEN\",\n ],\n timeout={\n \"connect_timeout\": \"10s\",\n \"max_attempts_timeout\": \"20s\",\n \"response_timeout\": \"60s\",\n \"read_timeout\": \"5s\",\n },\n origin_override_action={\n \"url_rewrite\": {\n \"host_rewrite\": \"example.com\",\n },\n \"header_action\": {\n \"request_headers_to_adds\": [{\n \"header_name\": \"x-header\",\n \"header_value\": \"value\",\n \"replace\": True,\n }],\n },\n },\n origin_redirect={\n \"redirect_conditions\": [\n \"MOVED_PERMANENTLY\",\n \"FOUND\",\n \"SEE_OTHER\",\n \"TEMPORARY_REDIRECT\",\n \"PERMANENT_REDIRECT\",\n ],\n })\ndefault = gcp.networkservices.EdgeCacheOrigin(\"default\",\n name=\"my-origin\",\n origin_address=\"gs://media-edge-default\",\n failover_origin=fallback.id,\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n labels={\n \"a\": \"b\",\n },\n timeout={\n \"connect_timeout\": \"10s\",\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 fallback = new Gcp.NetworkServices.EdgeCacheOrigin(\"fallback\", new()\n {\n Name = \"my-fallback\",\n OriginAddress = \"fallback.example.com\",\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 3,\n Protocol = \"HTTP\",\n Port = 80,\n RetryConditions = new[]\n {\n \"CONNECT_FAILURE\",\n \"NOT_FOUND\",\n \"HTTP_5XX\",\n \"FORBIDDEN\",\n },\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n MaxAttemptsTimeout = \"20s\",\n ResponseTimeout = \"60s\",\n ReadTimeout = \"5s\",\n },\n OriginOverrideAction = new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginOverrideActionArgs\n {\n UrlRewrite = new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginOverrideActionUrlRewriteArgs\n {\n HostRewrite = \"example.com\",\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginOverrideActionHeaderActionArgs\n {\n RequestHeadersToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginOverrideActionHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"x-header\",\n HeaderValue = \"value\",\n Replace = true,\n },\n },\n },\n },\n OriginRedirect = new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginRedirectArgs\n {\n RedirectConditions = new[]\n {\n \"MOVED_PERMANENTLY\",\n \"FOUND\",\n \"SEE_OTHER\",\n \"TEMPORARY_REDIRECT\",\n \"PERMANENT_REDIRECT\",\n },\n },\n });\n\n var @default = new Gcp.NetworkServices.EdgeCacheOrigin(\"default\", new()\n {\n Name = \"my-origin\",\n OriginAddress = \"gs://media-edge-default\",\n FailoverOrigin = fallback.Id,\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Labels = \n {\n { \"a\", \"b\" },\n },\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tfallback, err := networkservices.NewEdgeCacheOrigin(ctx, \"fallback\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-fallback\"),\n\t\t\tOriginAddress: pulumi.String(\"fallback.example.com\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(3),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tPort: pulumi.Int(80),\n\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"CONNECT_FAILURE\"),\n\t\t\t\tpulumi.String(\"NOT_FOUND\"),\n\t\t\t\tpulumi.String(\"HTTP_5XX\"),\n\t\t\t\tpulumi.String(\"FORBIDDEN\"),\n\t\t\t},\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t\tMaxAttemptsTimeout: pulumi.String(\"20s\"),\n\t\t\t\tResponseTimeout: pulumi.String(\"60s\"),\n\t\t\t\tReadTimeout: pulumi.String(\"5s\"),\n\t\t\t},\n\t\t\tOriginOverrideAction: \u0026networkservices.EdgeCacheOriginOriginOverrideActionArgs{\n\t\t\t\tUrlRewrite: \u0026networkservices.EdgeCacheOriginOriginOverrideActionUrlRewriteArgs{\n\t\t\t\t\tHostRewrite: pulumi.String(\"example.com\"),\n\t\t\t\t},\n\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheOriginOriginOverrideActionHeaderActionArgs{\n\t\t\t\t\tRequestHeadersToAdds: networkservices.EdgeCacheOriginOriginOverrideActionHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\u0026networkservices.EdgeCacheOriginOriginOverrideActionHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\tHeaderName: pulumi.String(\"x-header\"),\n\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"value\"),\n\t\t\t\t\t\t\tReplace: 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\tOriginRedirect: \u0026networkservices.EdgeCacheOriginOriginRedirectArgs{\n\t\t\t\tRedirectConditions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"MOVED_PERMANENTLY\"),\n\t\t\t\t\tpulumi.String(\"FOUND\"),\n\t\t\t\t\tpulumi.String(\"SEE_OTHER\"),\n\t\t\t\t\tpulumi.String(\"TEMPORARY_REDIRECT\"),\n\t\t\t\t\tpulumi.String(\"PERMANENT_REDIRECT\"),\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 = networkservices.NewEdgeCacheOrigin(ctx, \"default\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: pulumi.String(\"gs://media-edge-default\"),\n\t\t\tFailoverOrigin: fallback.ID(),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"a\": pulumi.String(\"b\"),\n\t\t\t},\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\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.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginTimeoutArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginOriginOverrideActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginOriginOverrideActionUrlRewriteArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginOriginOverrideActionHeaderActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginOriginRedirectArgs;\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 fallback = new EdgeCacheOrigin(\"fallback\", EdgeCacheOriginArgs.builder()\n .name(\"my-fallback\")\n .originAddress(\"fallback.example.com\")\n .description(\"The default bucket for media edge test\")\n .maxAttempts(3)\n .protocol(\"HTTP\")\n .port(80)\n .retryConditions( \n \"CONNECT_FAILURE\",\n \"NOT_FOUND\",\n \"HTTP_5XX\",\n \"FORBIDDEN\")\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .maxAttemptsTimeout(\"20s\")\n .responseTimeout(\"60s\")\n .readTimeout(\"5s\")\n .build())\n .originOverrideAction(EdgeCacheOriginOriginOverrideActionArgs.builder()\n .urlRewrite(EdgeCacheOriginOriginOverrideActionUrlRewriteArgs.builder()\n .hostRewrite(\"example.com\")\n .build())\n .headerAction(EdgeCacheOriginOriginOverrideActionHeaderActionArgs.builder()\n .requestHeadersToAdds(EdgeCacheOriginOriginOverrideActionHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"x-header\")\n .headerValue(\"value\")\n .replace(true)\n .build())\n .build())\n .build())\n .originRedirect(EdgeCacheOriginOriginRedirectArgs.builder()\n .redirectConditions( \n \"MOVED_PERMANENTLY\",\n \"FOUND\",\n \"SEE_OTHER\",\n \"TEMPORARY_REDIRECT\",\n \"PERMANENT_REDIRECT\")\n .build())\n .build());\n\n var default_ = new EdgeCacheOrigin(\"default\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(\"gs://media-edge-default\")\n .failoverOrigin(fallback.id())\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .labels(Map.of(\"a\", \"b\"))\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n fallback:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-fallback\n originAddress: fallback.example.com\n description: The default bucket for media edge test\n maxAttempts: 3\n protocol: HTTP\n port: 80\n retryConditions:\n - CONNECT_FAILURE\n - NOT_FOUND\n - HTTP_5XX\n - FORBIDDEN\n timeout:\n connectTimeout: 10s\n maxAttemptsTimeout: 20s\n responseTimeout: 60s\n readTimeout: 5s\n originOverrideAction:\n urlRewrite:\n hostRewrite: example.com\n headerAction:\n requestHeadersToAdds:\n - headerName: x-header\n headerValue: value\n replace: true\n originRedirect:\n redirectConditions:\n - MOVED_PERMANENTLY\n - FOUND\n - SEE_OTHER\n - TEMPORARY_REDIRECT\n - PERMANENT_REDIRECT\n default:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: gs://media-edge-default\n failoverOrigin: ${fallback.id}\n description: The default bucket for media edge test\n maxAttempts: 2\n labels:\n a: b\n timeout:\n connectTimeout: 10s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Origin V4auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-name\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n});\nconst _default = new gcp.networkservices.EdgeCacheOrigin(\"default\", {\n name: \"my-origin\",\n originAddress: \"gs://media-edge-default\",\n description: \"The default bucket for V4 authentication\",\n awsV4Authentication: {\n accessKeyId: \"ACCESSKEYID\",\n secretAccessKeyVersion: secret_version_basic.id,\n originRegion: \"auto\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-name\",\n replication={\n \"auto\": {},\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"secret-data\")\ndefault = gcp.networkservices.EdgeCacheOrigin(\"default\",\n name=\"my-origin\",\n origin_address=\"gs://media-edge-default\",\n description=\"The default bucket for V4 authentication\",\n aws_v4_authentication={\n \"access_key_id\": \"ACCESSKEYID\",\n \"secret_access_key_version\": secret_version_basic.id,\n \"origin_region\": \"auto\",\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 secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-name\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n });\n\n var @default = new Gcp.NetworkServices.EdgeCacheOrigin(\"default\", new()\n {\n Name = \"my-origin\",\n OriginAddress = \"gs://media-edge-default\",\n Description = \"The default bucket for V4 authentication\",\n AwsV4Authentication = new Gcp.NetworkServices.Inputs.EdgeCacheOriginAwsV4AuthenticationArgs\n {\n AccessKeyId = \"ACCESSKEYID\",\n SecretAccessKeyVersion = secret_version_basic.Id,\n OriginRegion = \"auto\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-name\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheOrigin(ctx, \"default\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: pulumi.String(\"gs://media-edge-default\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for V4 authentication\"),\n\t\t\tAwsV4Authentication: \u0026networkservices.EdgeCacheOriginAwsV4AuthenticationArgs{\n\t\t\t\tAccessKeyId: pulumi.String(\"ACCESSKEYID\"),\n\t\t\t\tSecretAccessKeyVersion: secret_version_basic.ID(),\n\t\t\t\tOriginRegion: pulumi.String(\"auto\"),\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginAwsV4AuthenticationArgs;\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 secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-name\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .build());\n\n var default_ = new EdgeCacheOrigin(\"default\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(\"gs://media-edge-default\")\n .description(\"The default bucket for V4 authentication\")\n .awsV4Authentication(EdgeCacheOriginAwsV4AuthenticationArgs.builder()\n .accessKeyId(\"ACCESSKEYID\")\n .secretAccessKeyVersion(secret_version_basic.id())\n .originRegion(\"auto\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-name\n replication:\n auto: {}\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n default:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: gs://media-edge-default\n description: The default bucket for V4 authentication\n awsV4Authentication:\n accessKeyId: ACCESSKEYID\n secretAccessKeyVersion: ${[\"secret-version-basic\"].id}\n originRegion: auto\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEdgeCacheOrigin can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/edgeCacheOrigins/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, EdgeCacheOrigin can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheOrigin:EdgeCacheOrigin default projects/{{project}}/locations/global/edgeCacheOrigins/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheOrigin:EdgeCacheOrigin default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheOrigin:EdgeCacheOrigin default {{name}}\n```\n\n", "properties": { "awsV4Authentication": { "$ref": "#/types/gcp:networkservices/EdgeCacheOriginAwsV4Authentication:EdgeCacheOriginAwsV4Authentication", @@ -220541,7 +220541,7 @@ } }, "gcp:networkservices/edgeCacheService:EdgeCacheService": { - "description": "EdgeCacheService defines the IP addresses, protocols, security policies, cache policies and routing configuration.\n\n\n\n\u003e **Warning:** These resources require allow-listing to use, and are not openly available to all Cloud customers. Engage with your Cloud account team to discuss how to onboard.\n\n## Example Usage\n\n### Network Services Edge Cache Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dest = new gcp.storage.Bucket(\"dest\", {\n name: \"my-bucket\",\n location: \"US\",\n forceDestroy: true,\n});\nconst instance = new gcp.networkservices.EdgeCacheOrigin(\"instance\", {\n name: \"my-origin\",\n originAddress: dest.url,\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n timeout: {\n connectTimeout: \"10s\",\n },\n});\nconst instanceEdgeCacheService = new gcp.networkservices.EdgeCacheService(\"instance\", {\n name: \"my-service\",\n description: \"some description\",\n routing: {\n hostRules: [{\n description: \"host rule description\",\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"routes\",\n }],\n pathMatchers: [{\n name: \"routes\",\n routeRules: [{\n description: \"a route rule to match against\",\n priority: \"1\",\n matchRules: [{\n prefixMatch: \"/\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3600s\",\n },\n },\n headerAction: {\n responseHeaderToAdds: [{\n headerName: \"x-cache-status\",\n headerValue: \"{cdn_cache_status}\",\n }],\n },\n }],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndest = gcp.storage.Bucket(\"dest\",\n name=\"my-bucket\",\n location=\"US\",\n force_destroy=True)\ninstance = gcp.networkservices.EdgeCacheOrigin(\"instance\",\n name=\"my-origin\",\n origin_address=dest.url,\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n timeout={\n \"connectTimeout\": \"10s\",\n })\ninstance_edge_cache_service = gcp.networkservices.EdgeCacheService(\"instance\",\n name=\"my-service\",\n description=\"some description\",\n routing={\n \"hostRules\": [{\n \"description\": \"host rule description\",\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"pathMatcher\": \"routes\",\n }],\n \"pathMatchers\": [{\n \"name\": \"routes\",\n \"routeRules\": [{\n \"description\": \"a route rule to match against\",\n \"priority\": \"1\",\n \"matchRules\": [{\n \"prefixMatch\": \"/\",\n }],\n \"origin\": instance.name,\n \"routeAction\": {\n \"cdnPolicy\": {\n \"cacheMode\": \"CACHE_ALL_STATIC\",\n \"defaultTtl\": \"3600s\",\n },\n },\n \"headerAction\": {\n \"responseHeaderToAdds\": [{\n \"headerName\": \"x-cache-status\",\n \"headerValue\": \"{cdn_cache_status}\",\n }],\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 dest = new Gcp.Storage.Bucket(\"dest\", new()\n {\n Name = \"my-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var instance = new Gcp.NetworkServices.EdgeCacheOrigin(\"instance\", new()\n {\n Name = \"my-origin\",\n OriginAddress = dest.Url,\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n var instanceEdgeCacheService = new Gcp.NetworkServices.EdgeCacheService(\"instance\", new()\n {\n Name = \"my-service\",\n Description = \"some description\",\n Routing = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingArgs\n {\n HostRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule description\",\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"routes\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routes\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3600s\",\n },\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs\n {\n ResponseHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs\n {\n HeaderName = \"x-cache-status\",\n HeaderValue = \"{cdn_cache_status}\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdest, err := storage.NewBucket(ctx, \"dest\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket\"),\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\tinstance, err := networkservices.NewEdgeCacheOrigin(ctx, \"instance\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: dest.Url,\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheService(ctx, \"instance\", \u0026networkservices.EdgeCacheServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tDescription: pulumi.String(\"some description\"),\n\t\t\tRouting: \u0026networkservices.EdgeCacheServiceRoutingArgs{\n\t\t\t\tHostRules: networkservices.EdgeCacheServiceRoutingHostRuleArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule description\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathMatchers: networkservices.EdgeCacheServiceRoutingPathMatcherArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routes\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\t\tResponseHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"x-cache-status\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"{cdn_cache_status}\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginTimeoutArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheService;\nimport com.pulumi.gcp.networkservices.EdgeCacheServiceArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceRoutingArgs;\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 dest = new Bucket(\"dest\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var instance = new EdgeCacheOrigin(\"instance\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(dest.url())\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n var instanceEdgeCacheService = new EdgeCacheService(\"instanceEdgeCacheService\", EdgeCacheServiceArgs.builder()\n .name(\"my-service\")\n .description(\"some description\")\n .routing(EdgeCacheServiceRoutingArgs.builder()\n .hostRules(EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule description\")\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"routes\")\n .build())\n .pathMatchers(EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routes\")\n .routeRules(EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against\")\n .priority(1)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3600s\")\n .build())\n .build())\n .headerAction(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs.builder()\n .responseHeaderToAdds(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs.builder()\n .headerName(\"x-cache-status\")\n .headerValue(\"{cdn_cache_status}\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dest:\n type: gcp:storage:Bucket\n properties:\n name: my-bucket\n location: US\n forceDestroy: true\n instance:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: ${dest.url}\n description: The default bucket for media edge test\n maxAttempts: 2\n timeout:\n connectTimeout: 10s\n instanceEdgeCacheService:\n type: gcp:networkservices:EdgeCacheService\n name: instance\n properties:\n name: my-service\n description: some description\n routing:\n hostRules:\n - description: host rule description\n hosts:\n - sslcert.tf-test.club\n pathMatcher: routes\n pathMatchers:\n - name: routes\n routeRules:\n - description: a route rule to match against\n priority: 1\n matchRules:\n - prefixMatch: /\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600s\n headerAction:\n responseHeaderToAdds:\n - headerName: x-cache-status\n headerValue: '{cdn_cache_status}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Service Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dest = new gcp.storage.Bucket(\"dest\", {\n name: \"my-bucket\",\n location: \"US\",\n forceDestroy: true,\n});\nconst google = new gcp.networkservices.EdgeCacheOrigin(\"google\", {\n name: \"origin-google\",\n originAddress: \"google.com\",\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n timeout: {\n connectTimeout: \"10s\",\n },\n});\nconst instance = new gcp.networkservices.EdgeCacheOrigin(\"instance\", {\n name: \"my-origin\",\n originAddress: dest.url,\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n timeout: {\n connectTimeout: \"10s\",\n },\n});\nconst instanceEdgeCacheService = new gcp.networkservices.EdgeCacheService(\"instance\", {\n name: \"my-service\",\n description: \"some description\",\n disableQuic: true,\n disableHttp2: true,\n labels: {\n a: \"b\",\n },\n routing: {\n hostRules: [\n {\n description: \"host rule description\",\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"routes\",\n },\n {\n description: \"host rule2\",\n hosts: [\"sslcert.tf-test2.club\"],\n pathMatcher: \"routes\",\n },\n {\n description: \"host rule3\",\n hosts: [\"sslcert.tf-test3.club\"],\n pathMatcher: \"routesAdvanced\",\n },\n ],\n pathMatchers: [\n {\n name: \"routes\",\n routeRules: [{\n description: \"a route rule to match against\",\n priority: \"1\",\n matchRules: [{\n prefixMatch: \"/\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3600s\",\n },\n },\n headerAction: {\n responseHeaderToAdds: [{\n headerName: \"x-cache-status\",\n headerValue: \"{cdn_cache_status}\",\n }],\n },\n }],\n },\n {\n name: \"routesAdvanced\",\n description: \"an advanced ruleset\",\n routeRules: [\n {\n description: \"an advanced route rule to match against\",\n priority: \"1\",\n matchRules: [\n {\n prefixMatch: \"/potato/\",\n queryParameterMatches: [\n {\n name: \"debug\",\n presentMatch: true,\n },\n {\n name: \"state\",\n exactMatch: \"debug\",\n },\n ],\n },\n {\n fullPathMatch: \"/apple\",\n },\n ],\n headerAction: {\n requestHeaderToAdds: [\n {\n headerName: \"debug\",\n headerValue: \"true\",\n replace: true,\n },\n {\n headerName: \"potato\",\n headerValue: \"plant\",\n },\n ],\n responseHeaderToAdds: [{\n headerName: \"potato\",\n headerValue: \"plant\",\n replace: true,\n }],\n requestHeaderToRemoves: [{\n headerName: \"prod\",\n }],\n responseHeaderToRemoves: [{\n headerName: \"prod\",\n }],\n },\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3800s\",\n clientTtl: \"3600s\",\n maxTtl: \"9000s\",\n cacheKeyPolicy: {\n includeProtocol: true,\n excludeHost: true,\n includedQueryParameters: [\n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\",\n ],\n includedHeaderNames: [\"banana\"],\n includedCookieNames: [\"orange\"],\n },\n negativeCaching: true,\n signedRequestMode: \"DISABLED\",\n negativeCachingPolicy: {\n \"500\": \"3000s\",\n },\n },\n urlRewrite: {\n pathPrefixRewrite: \"/dev\",\n hostRewrite: \"dev.club\",\n },\n corsPolicy: {\n maxAge: \"2500s\",\n allowCredentials: true,\n allowOrigins: [\"*\"],\n allowMethods: [\"GET\"],\n allowHeaders: [\"dev\"],\n exposeHeaders: [\"prod\"],\n },\n },\n },\n {\n description: \"a second route rule to match against\",\n priority: \"2\",\n matchRules: [{\n fullPathMatch: \"/yay\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3600s\",\n cacheKeyPolicy: {\n excludedQueryParameters: [\"dev\"],\n },\n },\n corsPolicy: {\n maxAge: \"3000s\",\n allowHeaders: [\"dev\"],\n disabled: true,\n },\n },\n },\n ],\n },\n ],\n },\n logConfig: {\n enable: true,\n sampleRate: 0.01,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndest = gcp.storage.Bucket(\"dest\",\n name=\"my-bucket\",\n location=\"US\",\n force_destroy=True)\ngoogle = gcp.networkservices.EdgeCacheOrigin(\"google\",\n name=\"origin-google\",\n origin_address=\"google.com\",\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n timeout={\n \"connectTimeout\": \"10s\",\n })\ninstance = gcp.networkservices.EdgeCacheOrigin(\"instance\",\n name=\"my-origin\",\n origin_address=dest.url,\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n timeout={\n \"connectTimeout\": \"10s\",\n })\ninstance_edge_cache_service = gcp.networkservices.EdgeCacheService(\"instance\",\n name=\"my-service\",\n description=\"some description\",\n disable_quic=True,\n disable_http2=True,\n labels={\n \"a\": \"b\",\n },\n routing={\n \"hostRules\": [\n {\n \"description\": \"host rule description\",\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"pathMatcher\": \"routes\",\n },\n {\n \"description\": \"host rule2\",\n \"hosts\": [\"sslcert.tf-test2.club\"],\n \"pathMatcher\": \"routes\",\n },\n {\n \"description\": \"host rule3\",\n \"hosts\": [\"sslcert.tf-test3.club\"],\n \"pathMatcher\": \"routesAdvanced\",\n },\n ],\n \"pathMatchers\": [\n {\n \"name\": \"routes\",\n \"routeRules\": [{\n \"description\": \"a route rule to match against\",\n \"priority\": \"1\",\n \"matchRules\": [{\n \"prefixMatch\": \"/\",\n }],\n \"origin\": instance.name,\n \"routeAction\": {\n \"cdnPolicy\": {\n \"cacheMode\": \"CACHE_ALL_STATIC\",\n \"defaultTtl\": \"3600s\",\n },\n },\n \"headerAction\": {\n \"responseHeaderToAdds\": [{\n \"headerName\": \"x-cache-status\",\n \"headerValue\": \"{cdn_cache_status}\",\n }],\n },\n }],\n },\n {\n \"name\": \"routesAdvanced\",\n \"description\": \"an advanced ruleset\",\n \"routeRules\": [\n {\n \"description\": \"an advanced route rule to match against\",\n \"priority\": \"1\",\n \"matchRules\": [\n {\n \"prefixMatch\": \"/potato/\",\n \"queryParameterMatches\": [\n {\n \"name\": \"debug\",\n \"presentMatch\": True,\n },\n {\n \"name\": \"state\",\n \"exactMatch\": \"debug\",\n },\n ],\n },\n {\n \"fullPathMatch\": \"/apple\",\n },\n ],\n \"headerAction\": {\n \"requestHeaderToAdds\": [\n {\n \"headerName\": \"debug\",\n \"headerValue\": \"true\",\n \"replace\": True,\n },\n {\n \"headerName\": \"potato\",\n \"headerValue\": \"plant\",\n },\n ],\n \"responseHeaderToAdds\": [{\n \"headerName\": \"potato\",\n \"headerValue\": \"plant\",\n \"replace\": True,\n }],\n \"requestHeaderToRemoves\": [{\n \"headerName\": \"prod\",\n }],\n \"responseHeaderToRemoves\": [{\n \"headerName\": \"prod\",\n }],\n },\n \"origin\": instance.name,\n \"routeAction\": {\n \"cdnPolicy\": {\n \"cacheMode\": \"CACHE_ALL_STATIC\",\n \"defaultTtl\": \"3800s\",\n \"clientTtl\": \"3600s\",\n \"maxTtl\": \"9000s\",\n \"cacheKeyPolicy\": {\n \"includeProtocol\": True,\n \"excludeHost\": True,\n \"includedQueryParameters\": [\n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\",\n ],\n \"includedHeaderNames\": [\"banana\"],\n \"includedCookieNames\": [\"orange\"],\n },\n \"negativeCaching\": True,\n \"signedRequestMode\": \"DISABLED\",\n \"negativeCachingPolicy\": {\n \"500\": \"3000s\",\n },\n },\n \"urlRewrite\": {\n \"pathPrefixRewrite\": \"/dev\",\n \"hostRewrite\": \"dev.club\",\n },\n \"corsPolicy\": {\n \"maxAge\": \"2500s\",\n \"allowCredentials\": True,\n \"allowOrigins\": [\"*\"],\n \"allowMethods\": [\"GET\"],\n \"allowHeaders\": [\"dev\"],\n \"exposeHeaders\": [\"prod\"],\n },\n },\n },\n {\n \"description\": \"a second route rule to match against\",\n \"priority\": \"2\",\n \"matchRules\": [{\n \"fullPathMatch\": \"/yay\",\n }],\n \"origin\": instance.name,\n \"routeAction\": {\n \"cdnPolicy\": {\n \"cacheMode\": \"CACHE_ALL_STATIC\",\n \"defaultTtl\": \"3600s\",\n \"cacheKeyPolicy\": {\n \"excludedQueryParameters\": [\"dev\"],\n },\n },\n \"corsPolicy\": {\n \"maxAge\": \"3000s\",\n \"allowHeaders\": [\"dev\"],\n \"disabled\": True,\n },\n },\n },\n ],\n },\n ],\n },\n log_config={\n \"enable\": True,\n \"sampleRate\": 0.01,\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 dest = new Gcp.Storage.Bucket(\"dest\", new()\n {\n Name = \"my-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var google = new Gcp.NetworkServices.EdgeCacheOrigin(\"google\", new()\n {\n Name = \"origin-google\",\n OriginAddress = \"google.com\",\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n var instance = new Gcp.NetworkServices.EdgeCacheOrigin(\"instance\", new()\n {\n Name = \"my-origin\",\n OriginAddress = dest.Url,\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n var instanceEdgeCacheService = new Gcp.NetworkServices.EdgeCacheService(\"instance\", new()\n {\n Name = \"my-service\",\n Description = \"some description\",\n DisableQuic = true,\n DisableHttp2 = true,\n Labels = \n {\n { \"a\", \"b\" },\n },\n Routing = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingArgs\n {\n HostRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule description\",\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"routes\",\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule2\",\n Hosts = new[]\n {\n \"sslcert.tf-test2.club\",\n },\n PathMatcher = \"routes\",\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule3\",\n Hosts = new[]\n {\n \"sslcert.tf-test3.club\",\n },\n PathMatcher = \"routesAdvanced\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routes\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3600s\",\n },\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs\n {\n ResponseHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs\n {\n HeaderName = \"x-cache-status\",\n HeaderValue = \"{cdn_cache_status}\",\n },\n },\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routesAdvanced\",\n Description = \"an advanced ruleset\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"an advanced route rule to match against\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/potato/\",\n QueryParameterMatches = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"debug\",\n PresentMatch = true,\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"state\",\n ExactMatch = \"debug\",\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"/apple\",\n },\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs\n {\n HeaderName = \"debug\",\n HeaderValue = \"true\",\n Replace = true,\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs\n {\n HeaderName = \"potato\",\n HeaderValue = \"plant\",\n },\n },\n ResponseHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs\n {\n HeaderName = \"potato\",\n HeaderValue = \"plant\",\n Replace = true,\n },\n },\n RequestHeaderToRemoves = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArgs\n {\n HeaderName = \"prod\",\n },\n },\n ResponseHeaderToRemoves = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArgs\n {\n HeaderName = \"prod\",\n },\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3800s\",\n ClientTtl = \"3600s\",\n MaxTtl = \"9000s\",\n CacheKeyPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs\n {\n IncludeProtocol = true,\n ExcludeHost = true,\n IncludedQueryParameters = new[]\n {\n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\",\n },\n IncludedHeaderNames = new[]\n {\n \"banana\",\n },\n IncludedCookieNames = new[]\n {\n \"orange\",\n },\n },\n NegativeCaching = true,\n SignedRequestMode = \"DISABLED\",\n NegativeCachingPolicy = \n {\n { \"500\", \"3000s\" },\n },\n },\n UrlRewrite = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionUrlRewriteArgs\n {\n PathPrefixRewrite = \"/dev\",\n HostRewrite = \"dev.club\",\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs\n {\n MaxAge = \"2500s\",\n AllowCredentials = true,\n AllowOrigins = new[]\n {\n \"*\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n },\n AllowHeaders = new[]\n {\n \"dev\",\n },\n ExposeHeaders = new[]\n {\n \"prod\",\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a second route rule to match against\",\n Priority = \"2\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"/yay\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3600s\",\n CacheKeyPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs\n {\n ExcludedQueryParameters = new[]\n {\n \"dev\",\n },\n },\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs\n {\n MaxAge = \"3000s\",\n AllowHeaders = new[]\n {\n \"dev\",\n },\n Disabled = true,\n },\n },\n },\n },\n },\n },\n },\n LogConfig = new Gcp.NetworkServices.Inputs.EdgeCacheServiceLogConfigArgs\n {\n Enable = true,\n SampleRate = 0.01,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdest, err := storage.NewBucket(ctx, \"dest\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket\"),\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 = networkservices.NewEdgeCacheOrigin(ctx, \"google\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"origin-google\"),\n\t\t\tOriginAddress: pulumi.String(\"google.com\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := networkservices.NewEdgeCacheOrigin(ctx, \"instance\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: dest.Url,\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheService(ctx, \"instance\", \u0026networkservices.EdgeCacheServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tDescription: pulumi.String(\"some description\"),\n\t\t\tDisableQuic: pulumi.Bool(true),\n\t\t\tDisableHttp2: pulumi.Bool(true),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"a\": pulumi.String(\"b\"),\n\t\t\t},\n\t\t\tRouting: \u0026networkservices.EdgeCacheServiceRoutingArgs{\n\t\t\t\tHostRules: networkservices.EdgeCacheServiceRoutingHostRuleArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule description\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule2\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test2.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule3\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test3.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routesAdvanced\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathMatchers: networkservices.EdgeCacheServiceRoutingPathMatcherArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routes\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\t\tResponseHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"x-cache-status\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"{cdn_cache_status}\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routesAdvanced\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"an advanced ruleset\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"an advanced route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/potato/\"),\n\t\t\t\t\t\t\t\t\t\tQueryParameterMatches: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"debug\"),\n\t\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"state\"),\n\t\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"debug\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"/apple\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\t\tRequestHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"debug\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"true\"),\n\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"potato\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"plant\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tResponseHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"potato\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"plant\"),\n\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRequestHeaderToRemoves: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"prod\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tResponseHeaderToRemoves: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"prod\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3800s\"),\n\t\t\t\t\t\t\t\t\t\tClientTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t\tMaxTtl: pulumi.String(\"9000s\"),\n\t\t\t\t\t\t\t\t\t\tCacheKeyPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\t\t\t\t\t\t\tIncludeProtocol: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\tExcludeHost: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\tIncludedQueryParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"apple\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"santa\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"claus\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tIncludedHeaderNames: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"banana\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tIncludedCookieNames: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"orange\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tNegativeCaching: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"DISABLED\"),\n\t\t\t\t\t\t\t\t\t\tNegativeCachingPolicy: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\t\t\"500\": pulumi.String(\"3000s\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tUrlRewrite: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/dev\"),\n\t\t\t\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"dev.club\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tCorsPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tMaxAge: pulumi.String(\"2500s\"),\n\t\t\t\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"prod\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a second route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"/yay\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t\tCacheKeyPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\t\t\t\t\t\t\tExcludedQueryParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tCorsPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tMaxAge: pulumi.String(\"3000s\"),\n\t\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tDisabled: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tLogConfig: \u0026networkservices.EdgeCacheServiceLogConfigArgs{\n\t\t\t\tEnable: pulumi.Bool(true),\n\t\t\t\tSampleRate: pulumi.Float64(0.01),\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.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginTimeoutArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheService;\nimport com.pulumi.gcp.networkservices.EdgeCacheServiceArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceRoutingArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceLogConfigArgs;\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 dest = new Bucket(\"dest\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var google = new EdgeCacheOrigin(\"google\", EdgeCacheOriginArgs.builder()\n .name(\"origin-google\")\n .originAddress(\"google.com\")\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n var instance = new EdgeCacheOrigin(\"instance\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(dest.url())\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n var instanceEdgeCacheService = new EdgeCacheService(\"instanceEdgeCacheService\", EdgeCacheServiceArgs.builder()\n .name(\"my-service\")\n .description(\"some description\")\n .disableQuic(true)\n .disableHttp2(true)\n .labels(Map.of(\"a\", \"b\"))\n .routing(EdgeCacheServiceRoutingArgs.builder()\n .hostRules( \n EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule description\")\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"routes\")\n .build(),\n EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule2\")\n .hosts(\"sslcert.tf-test2.club\")\n .pathMatcher(\"routes\")\n .build(),\n EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule3\")\n .hosts(\"sslcert.tf-test3.club\")\n .pathMatcher(\"routesAdvanced\")\n .build())\n .pathMatchers( \n EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routes\")\n .routeRules(EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against\")\n .priority(1)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3600s\")\n .build())\n .build())\n .headerAction(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs.builder()\n .responseHeaderToAdds(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs.builder()\n .headerName(\"x-cache-status\")\n .headerValue(\"{cdn_cache_status}\")\n .build())\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routesAdvanced\")\n .description(\"an advanced ruleset\")\n .routeRules( \n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"an advanced route rule to match against\")\n .priority(1)\n .matchRules( \n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/potato/\")\n .queryParameterMatches( \n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"debug\")\n .presentMatch(true)\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"state\")\n .exactMatch(\"debug\")\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"/apple\")\n .build())\n .headerAction(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeaderToAdds( \n EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs.builder()\n .headerName(\"debug\")\n .headerValue(\"true\")\n .replace(true)\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs.builder()\n .headerName(\"potato\")\n .headerValue(\"plant\")\n .build())\n .responseHeaderToAdds(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs.builder()\n .headerName(\"potato\")\n .headerValue(\"plant\")\n .replace(true)\n .build())\n .requestHeaderToRemoves(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArgs.builder()\n .headerName(\"prod\")\n .build())\n .responseHeaderToRemoves(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArgs.builder()\n .headerName(\"prod\")\n .build())\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3800s\")\n .clientTtl(\"3600s\")\n .maxTtl(\"9000s\")\n .cacheKeyPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs.builder()\n .includeProtocol(true)\n .excludeHost(true)\n .includedQueryParameters( \n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\")\n .includedHeaderNames(\"banana\")\n .includedCookieNames(\"orange\")\n .build())\n .negativeCaching(true)\n .signedRequestMode(\"DISABLED\")\n .negativeCachingPolicy(Map.of(\"500\", \"3000s\"))\n .build())\n .urlRewrite(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionUrlRewriteArgs.builder()\n .pathPrefixRewrite(\"/dev\")\n .hostRewrite(\"dev.club\")\n .build())\n .corsPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs.builder()\n .maxAge(\"2500s\")\n .allowCredentials(true)\n .allowOrigins(\"*\")\n .allowMethods(\"GET\")\n .allowHeaders(\"dev\")\n .exposeHeaders(\"prod\")\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a second route rule to match against\")\n .priority(2)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"/yay\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3600s\")\n .cacheKeyPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs.builder()\n .excludedQueryParameters(\"dev\")\n .build())\n .build())\n .corsPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs.builder()\n .maxAge(\"3000s\")\n .allowHeaders(\"dev\")\n .disabled(true)\n .build())\n .build())\n .build())\n .build())\n .build())\n .logConfig(EdgeCacheServiceLogConfigArgs.builder()\n .enable(true)\n .sampleRate(0.01)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dest:\n type: gcp:storage:Bucket\n properties:\n name: my-bucket\n location: US\n forceDestroy: true\n google:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: origin-google\n originAddress: google.com\n description: The default bucket for media edge test\n maxAttempts: 2\n timeout:\n connectTimeout: 10s\n instance:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: ${dest.url}\n description: The default bucket for media edge test\n maxAttempts: 2\n timeout:\n connectTimeout: 10s\n instanceEdgeCacheService:\n type: gcp:networkservices:EdgeCacheService\n name: instance\n properties:\n name: my-service\n description: some description\n disableQuic: true\n disableHttp2: true\n labels:\n a: b\n routing:\n hostRules:\n - description: host rule description\n hosts:\n - sslcert.tf-test.club\n pathMatcher: routes\n - description: host rule2\n hosts:\n - sslcert.tf-test2.club\n pathMatcher: routes\n - description: host rule3\n hosts:\n - sslcert.tf-test3.club\n pathMatcher: routesAdvanced\n pathMatchers:\n - name: routes\n routeRules:\n - description: a route rule to match against\n priority: 1\n matchRules:\n - prefixMatch: /\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600s\n headerAction:\n responseHeaderToAdds:\n - headerName: x-cache-status\n headerValue: '{cdn_cache_status}'\n - name: routesAdvanced\n description: an advanced ruleset\n routeRules:\n - description: an advanced route rule to match against\n priority: 1\n matchRules:\n - prefixMatch: /potato/\n queryParameterMatches:\n - name: debug\n presentMatch: true\n - name: state\n exactMatch: debug\n - fullPathMatch: /apple\n headerAction:\n requestHeaderToAdds:\n - headerName: debug\n headerValue: 'true'\n replace: true\n - headerName: potato\n headerValue: plant\n responseHeaderToAdds:\n - headerName: potato\n headerValue: plant\n replace: true\n requestHeaderToRemoves:\n - headerName: prod\n responseHeaderToRemoves:\n - headerName: prod\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3800s\n clientTtl: 3600s\n maxTtl: 9000s\n cacheKeyPolicy:\n includeProtocol: true\n excludeHost: true\n includedQueryParameters:\n - apple\n - dev\n - santa\n - claus\n includedHeaderNames:\n - banana\n includedCookieNames:\n - orange\n negativeCaching: true\n signedRequestMode: DISABLED\n negativeCachingPolicy:\n '500': 3000s\n urlRewrite:\n pathPrefixRewrite: /dev\n hostRewrite: dev.club\n corsPolicy:\n maxAge: 2500s\n allowCredentials: true\n allowOrigins:\n - '*'\n allowMethods:\n - GET\n allowHeaders:\n - dev\n exposeHeaders:\n - prod\n - description: a second route rule to match against\n priority: 2\n matchRules:\n - fullPathMatch: /yay\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600s\n cacheKeyPolicy:\n excludedQueryParameters:\n - dev\n corsPolicy:\n maxAge: 3000s\n allowHeaders:\n - dev\n disabled: true\n logConfig:\n enable: true\n sampleRate: 0.01\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Service Dual Token\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-name\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n});\nconst keyset = new gcp.networkservices.EdgeCacheKeyset(\"keyset\", {\n name: \"keyset-name\",\n description: \"The default keyset\",\n publicKeys: [{\n id: \"my-public-key\",\n managed: true,\n }],\n validationSharedKeys: [{\n secretVersion: secret_version_basic.id,\n }],\n});\nconst instance = new gcp.networkservices.EdgeCacheOrigin(\"instance\", {\n name: \"my-origin\",\n originAddress: \"gs://media-edge-default\",\n description: \"The default bucket for media edge test\",\n});\nconst instanceEdgeCacheService = new gcp.networkservices.EdgeCacheService(\"instance\", {\n name: \"my-service\",\n description: \"some description\",\n routing: {\n hostRules: [{\n description: \"host rule description\",\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"routes\",\n }],\n pathMatchers: [{\n name: \"routes\",\n routeRules: [\n {\n description: \"a route rule to match against master playlist\",\n priority: \"1\",\n matchRules: [{\n pathTemplateMatch: \"/master.m3u8\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n signedRequestMode: \"REQUIRE_TOKENS\",\n signedRequestKeyset: keyset.id,\n signedTokenOptions: {\n tokenQueryParameter: \"edge-cache-token\",\n },\n signedRequestMaximumExpirationTtl: \"600s\",\n addSignatures: {\n actions: \"GENERATE_COOKIE\",\n keyset: keyset.id,\n copiedParameters: [\n \"PathGlobs\",\n \"SessionID\",\n ],\n },\n },\n },\n },\n {\n description: \"a route rule to match against all playlists\",\n priority: \"2\",\n matchRules: [{\n pathTemplateMatch: \"/*.m3u8\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n signedRequestMode: \"REQUIRE_TOKENS\",\n signedRequestKeyset: keyset.id,\n signedTokenOptions: {\n tokenQueryParameter: \"hdnts\",\n allowedSignatureAlgorithms: [\n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\",\n ],\n },\n addSignatures: {\n actions: \"GENERATE_TOKEN_HLS_COOKIELESS\",\n keyset: keyset.id,\n tokenTtl: \"1200s\",\n tokenQueryParameter: \"hdntl\",\n copiedParameters: [\"URLPrefix\"],\n },\n },\n },\n },\n {\n description: \"a route rule to match against\",\n priority: \"3\",\n matchRules: [{\n pathTemplateMatch: \"/**.m3u8\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n signedRequestMode: \"REQUIRE_TOKENS\",\n signedRequestKeyset: keyset.id,\n signedTokenOptions: {\n tokenQueryParameter: \"hdntl\",\n },\n addSignatures: {\n actions: \"PROPAGATE_TOKEN_HLS_COOKIELESS\",\n tokenQueryParameter: \"hdntl\",\n },\n },\n },\n },\n ],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-name\",\n replication={\n \"auto\": {},\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"secret-data\")\nkeyset = gcp.networkservices.EdgeCacheKeyset(\"keyset\",\n name=\"keyset-name\",\n description=\"The default keyset\",\n public_keys=[{\n \"id\": \"my-public-key\",\n \"managed\": True,\n }],\n validation_shared_keys=[{\n \"secretVersion\": secret_version_basic.id,\n }])\ninstance = gcp.networkservices.EdgeCacheOrigin(\"instance\",\n name=\"my-origin\",\n origin_address=\"gs://media-edge-default\",\n description=\"The default bucket for media edge test\")\ninstance_edge_cache_service = gcp.networkservices.EdgeCacheService(\"instance\",\n name=\"my-service\",\n description=\"some description\",\n routing={\n \"hostRules\": [{\n \"description\": \"host rule description\",\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"pathMatcher\": \"routes\",\n }],\n \"pathMatchers\": [{\n \"name\": \"routes\",\n \"routeRules\": [\n {\n \"description\": \"a route rule to match against master playlist\",\n \"priority\": \"1\",\n \"matchRules\": [{\n \"pathTemplateMatch\": \"/master.m3u8\",\n }],\n \"origin\": instance.name,\n \"routeAction\": {\n \"cdnPolicy\": {\n \"signedRequestMode\": \"REQUIRE_TOKENS\",\n \"signedRequestKeyset\": keyset.id,\n \"signedTokenOptions\": {\n \"tokenQueryParameter\": \"edge-cache-token\",\n },\n \"signedRequestMaximumExpirationTtl\": \"600s\",\n \"addSignatures\": {\n \"actions\": \"GENERATE_COOKIE\",\n \"keyset\": keyset.id,\n \"copiedParameters\": [\n \"PathGlobs\",\n \"SessionID\",\n ],\n },\n },\n },\n },\n {\n \"description\": \"a route rule to match against all playlists\",\n \"priority\": \"2\",\n \"matchRules\": [{\n \"pathTemplateMatch\": \"/*.m3u8\",\n }],\n \"origin\": instance.name,\n \"routeAction\": {\n \"cdnPolicy\": {\n \"signedRequestMode\": \"REQUIRE_TOKENS\",\n \"signedRequestKeyset\": keyset.id,\n \"signedTokenOptions\": {\n \"tokenQueryParameter\": \"hdnts\",\n \"allowedSignatureAlgorithms\": [\n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\",\n ],\n },\n \"addSignatures\": {\n \"actions\": \"GENERATE_TOKEN_HLS_COOKIELESS\",\n \"keyset\": keyset.id,\n \"tokenTtl\": \"1200s\",\n \"tokenQueryParameter\": \"hdntl\",\n \"copiedParameters\": [\"URLPrefix\"],\n },\n },\n },\n },\n {\n \"description\": \"a route rule to match against\",\n \"priority\": \"3\",\n \"matchRules\": [{\n \"pathTemplateMatch\": \"/**.m3u8\",\n }],\n \"origin\": instance.name,\n \"routeAction\": {\n \"cdnPolicy\": {\n \"signedRequestMode\": \"REQUIRE_TOKENS\",\n \"signedRequestKeyset\": keyset.id,\n \"signedTokenOptions\": {\n \"tokenQueryParameter\": \"hdntl\",\n },\n \"addSignatures\": {\n \"actions\": \"PROPAGATE_TOKEN_HLS_COOKIELESS\",\n \"tokenQueryParameter\": \"hdntl\",\n },\n },\n },\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 secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-name\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n });\n\n var keyset = new Gcp.NetworkServices.EdgeCacheKeyset(\"keyset\", new()\n {\n Name = \"keyset-name\",\n Description = \"The default keyset\",\n PublicKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetPublicKeyArgs\n {\n Id = \"my-public-key\",\n Managed = true,\n },\n },\n ValidationSharedKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetValidationSharedKeyArgs\n {\n SecretVersion = secret_version_basic.Id,\n },\n },\n });\n\n var instance = new Gcp.NetworkServices.EdgeCacheOrigin(\"instance\", new()\n {\n Name = \"my-origin\",\n OriginAddress = \"gs://media-edge-default\",\n Description = \"The default bucket for media edge test\",\n });\n\n var instanceEdgeCacheService = new Gcp.NetworkServices.EdgeCacheService(\"instance\", new()\n {\n Name = \"my-service\",\n Description = \"some description\",\n Routing = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingArgs\n {\n HostRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule description\",\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"routes\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routes\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against master playlist\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/master.m3u8\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n SignedRequestMode = \"REQUIRE_TOKENS\",\n SignedRequestKeyset = keyset.Id,\n SignedTokenOptions = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs\n {\n TokenQueryParameter = \"edge-cache-token\",\n },\n SignedRequestMaximumExpirationTtl = \"600s\",\n AddSignatures = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs\n {\n Actions = \"GENERATE_COOKIE\",\n Keyset = keyset.Id,\n CopiedParameters = new[]\n {\n \"PathGlobs\",\n \"SessionID\",\n },\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against all playlists\",\n Priority = \"2\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/*.m3u8\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n SignedRequestMode = \"REQUIRE_TOKENS\",\n SignedRequestKeyset = keyset.Id,\n SignedTokenOptions = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs\n {\n TokenQueryParameter = \"hdnts\",\n AllowedSignatureAlgorithms = new[]\n {\n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\",\n },\n },\n AddSignatures = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs\n {\n Actions = \"GENERATE_TOKEN_HLS_COOKIELESS\",\n Keyset = keyset.Id,\n TokenTtl = \"1200s\",\n TokenQueryParameter = \"hdntl\",\n CopiedParameters = new[]\n {\n \"URLPrefix\",\n },\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against\",\n Priority = \"3\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/**.m3u8\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n SignedRequestMode = \"REQUIRE_TOKENS\",\n SignedRequestKeyset = keyset.Id,\n SignedTokenOptions = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs\n {\n TokenQueryParameter = \"hdntl\",\n },\n AddSignatures = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs\n {\n Actions = \"PROPAGATE_TOKEN_HLS_COOKIELESS\",\n TokenQueryParameter = \"hdntl\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-name\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyset, err := networkservices.NewEdgeCacheKeyset(ctx, \"keyset\", \u0026networkservices.EdgeCacheKeysetArgs{\n\t\t\tName: pulumi.String(\"keyset-name\"),\n\t\t\tDescription: pulumi.String(\"The default keyset\"),\n\t\t\tPublicKeys: networkservices.EdgeCacheKeysetPublicKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetPublicKeyArgs{\n\t\t\t\t\tId: pulumi.String(\"my-public-key\"),\n\t\t\t\t\tManaged: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tValidationSharedKeys: networkservices.EdgeCacheKeysetValidationSharedKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetValidationSharedKeyArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.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\tinstance, err := networkservices.NewEdgeCacheOrigin(ctx, \"instance\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: pulumi.String(\"gs://media-edge-default\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheService(ctx, \"instance\", \u0026networkservices.EdgeCacheServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tDescription: pulumi.String(\"some description\"),\n\t\t\tRouting: \u0026networkservices.EdgeCacheServiceRoutingArgs{\n\t\t\t\tHostRules: networkservices.EdgeCacheServiceRoutingHostRuleArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule description\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathMatchers: networkservices.EdgeCacheServiceRoutingPathMatcherArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routes\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against master playlist\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/master.m3u8\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"REQUIRE_TOKENS\"),\n\t\t\t\t\t\t\t\t\t\tSignedRequestKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\tSignedTokenOptions: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs{\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"edge-cache-token\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tSignedRequestMaximumExpirationTtl: pulumi.String(\"600s\"),\n\t\t\t\t\t\t\t\t\t\tAddSignatures: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs{\n\t\t\t\t\t\t\t\t\t\t\tActions: pulumi.String(\"GENERATE_COOKIE\"),\n\t\t\t\t\t\t\t\t\t\t\tKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\t\tCopiedParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"PathGlobs\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"SessionID\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against all playlists\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/*.m3u8\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"REQUIRE_TOKENS\"),\n\t\t\t\t\t\t\t\t\t\tSignedRequestKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\tSignedTokenOptions: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs{\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdnts\"),\n\t\t\t\t\t\t\t\t\t\t\tAllowedSignatureAlgorithms: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"ED25519\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"HMAC_SHA_256\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"HMAC_SHA1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAddSignatures: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs{\n\t\t\t\t\t\t\t\t\t\t\tActions: pulumi.String(\"GENERATE_TOKEN_HLS_COOKIELESS\"),\n\t\t\t\t\t\t\t\t\t\t\tKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\t\tTokenTtl: pulumi.String(\"1200s\"),\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdntl\"),\n\t\t\t\t\t\t\t\t\t\t\tCopiedParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"URLPrefix\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"3\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/**.m3u8\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"REQUIRE_TOKENS\"),\n\t\t\t\t\t\t\t\t\t\tSignedRequestKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\tSignedTokenOptions: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs{\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdntl\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAddSignatures: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs{\n\t\t\t\t\t\t\t\t\t\t\tActions: pulumi.String(\"PROPAGATE_TOKEN_HLS_COOKIELESS\"),\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdntl\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeyset;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeysetArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetPublicKeyArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetValidationSharedKeyArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheService;\nimport com.pulumi.gcp.networkservices.EdgeCacheServiceArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceRoutingArgs;\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 secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-name\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .build());\n\n var keyset = new EdgeCacheKeyset(\"keyset\", EdgeCacheKeysetArgs.builder()\n .name(\"keyset-name\")\n .description(\"The default keyset\")\n .publicKeys(EdgeCacheKeysetPublicKeyArgs.builder()\n .id(\"my-public-key\")\n .managed(true)\n .build())\n .validationSharedKeys(EdgeCacheKeysetValidationSharedKeyArgs.builder()\n .secretVersion(secret_version_basic.id())\n .build())\n .build());\n\n var instance = new EdgeCacheOrigin(\"instance\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(\"gs://media-edge-default\")\n .description(\"The default bucket for media edge test\")\n .build());\n\n var instanceEdgeCacheService = new EdgeCacheService(\"instanceEdgeCacheService\", EdgeCacheServiceArgs.builder()\n .name(\"my-service\")\n .description(\"some description\")\n .routing(EdgeCacheServiceRoutingArgs.builder()\n .hostRules(EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule description\")\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"routes\")\n .build())\n .pathMatchers(EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routes\")\n .routeRules( \n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against master playlist\")\n .priority(1)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/master.m3u8\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .signedRequestMode(\"REQUIRE_TOKENS\")\n .signedRequestKeyset(keyset.id())\n .signedTokenOptions(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs.builder()\n .tokenQueryParameter(\"edge-cache-token\")\n .build())\n .signedRequestMaximumExpirationTtl(\"600s\")\n .addSignatures(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs.builder()\n .actions(\"GENERATE_COOKIE\")\n .keyset(keyset.id())\n .copiedParameters( \n \"PathGlobs\",\n \"SessionID\")\n .build())\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against all playlists\")\n .priority(2)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/*.m3u8\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .signedRequestMode(\"REQUIRE_TOKENS\")\n .signedRequestKeyset(keyset.id())\n .signedTokenOptions(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs.builder()\n .tokenQueryParameter(\"hdnts\")\n .allowedSignatureAlgorithms( \n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\")\n .build())\n .addSignatures(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs.builder()\n .actions(\"GENERATE_TOKEN_HLS_COOKIELESS\")\n .keyset(keyset.id())\n .tokenTtl(\"1200s\")\n .tokenQueryParameter(\"hdntl\")\n .copiedParameters(\"URLPrefix\")\n .build())\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against\")\n .priority(3)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/**.m3u8\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .signedRequestMode(\"REQUIRE_TOKENS\")\n .signedRequestKeyset(keyset.id())\n .signedTokenOptions(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs.builder()\n .tokenQueryParameter(\"hdntl\")\n .build())\n .addSignatures(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs.builder()\n .actions(\"PROPAGATE_TOKEN_HLS_COOKIELESS\")\n .tokenQueryParameter(\"hdntl\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-name\n replication:\n auto: {}\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n keyset:\n type: gcp:networkservices:EdgeCacheKeyset\n properties:\n name: keyset-name\n description: The default keyset\n publicKeys:\n - id: my-public-key\n managed: true\n validationSharedKeys:\n - secretVersion: ${[\"secret-version-basic\"].id}\n instance:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: gs://media-edge-default\n description: The default bucket for media edge test\n instanceEdgeCacheService:\n type: gcp:networkservices:EdgeCacheService\n name: instance\n properties:\n name: my-service\n description: some description\n routing:\n hostRules:\n - description: host rule description\n hosts:\n - sslcert.tf-test.club\n pathMatcher: routes\n pathMatchers:\n - name: routes\n routeRules:\n - description: a route rule to match against master playlist\n priority: 1\n matchRules:\n - pathTemplateMatch: /master.m3u8\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n signedRequestMode: REQUIRE_TOKENS\n signedRequestKeyset: ${keyset.id}\n signedTokenOptions:\n tokenQueryParameter: edge-cache-token\n signedRequestMaximumExpirationTtl: 600s\n addSignatures:\n actions: GENERATE_COOKIE\n keyset: ${keyset.id}\n copiedParameters:\n - PathGlobs\n - SessionID\n - description: a route rule to match against all playlists\n priority: 2\n matchRules:\n - pathTemplateMatch: /*.m3u8\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n signedRequestMode: REQUIRE_TOKENS\n signedRequestKeyset: ${keyset.id}\n signedTokenOptions:\n tokenQueryParameter: hdnts\n allowedSignatureAlgorithms:\n - ED25519\n - HMAC_SHA_256\n - HMAC_SHA1\n addSignatures:\n actions: GENERATE_TOKEN_HLS_COOKIELESS\n keyset: ${keyset.id}\n tokenTtl: 1200s\n tokenQueryParameter: hdntl\n copiedParameters:\n - URLPrefix\n - description: a route rule to match against\n priority: 3\n matchRules:\n - pathTemplateMatch: /**.m3u8\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n signedRequestMode: REQUIRE_TOKENS\n signedRequestKeyset: ${keyset.id}\n signedTokenOptions:\n tokenQueryParameter: hdntl\n addSignatures:\n actions: PROPAGATE_TOKEN_HLS_COOKIELESS\n tokenQueryParameter: hdntl\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEdgeCacheService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/edgeCacheServices/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, EdgeCacheService can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheService:EdgeCacheService default projects/{{project}}/locations/global/edgeCacheServices/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheService:EdgeCacheService default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheService:EdgeCacheService default {{name}}\n```\n\n", + "description": "EdgeCacheService defines the IP addresses, protocols, security policies, cache policies and routing configuration.\n\n\n\n\u003e **Warning:** These resources require allow-listing to use, and are not openly available to all Cloud customers. Engage with your Cloud account team to discuss how to onboard.\n\n## Example Usage\n\n### Network Services Edge Cache Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dest = new gcp.storage.Bucket(\"dest\", {\n name: \"my-bucket\",\n location: \"US\",\n forceDestroy: true,\n});\nconst instance = new gcp.networkservices.EdgeCacheOrigin(\"instance\", {\n name: \"my-origin\",\n originAddress: dest.url,\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n timeout: {\n connectTimeout: \"10s\",\n },\n});\nconst instanceEdgeCacheService = new gcp.networkservices.EdgeCacheService(\"instance\", {\n name: \"my-service\",\n description: \"some description\",\n routing: {\n hostRules: [{\n description: \"host rule description\",\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"routes\",\n }],\n pathMatchers: [{\n name: \"routes\",\n routeRules: [{\n description: \"a route rule to match against\",\n priority: \"1\",\n matchRules: [{\n prefixMatch: \"/\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3600s\",\n },\n },\n headerAction: {\n responseHeaderToAdds: [{\n headerName: \"x-cache-status\",\n headerValue: \"{cdn_cache_status}\",\n }],\n },\n }],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndest = gcp.storage.Bucket(\"dest\",\n name=\"my-bucket\",\n location=\"US\",\n force_destroy=True)\ninstance = gcp.networkservices.EdgeCacheOrigin(\"instance\",\n name=\"my-origin\",\n origin_address=dest.url,\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n timeout={\n \"connect_timeout\": \"10s\",\n })\ninstance_edge_cache_service = gcp.networkservices.EdgeCacheService(\"instance\",\n name=\"my-service\",\n description=\"some description\",\n routing={\n \"host_rules\": [{\n \"description\": \"host rule description\",\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"routes\",\n }],\n \"path_matchers\": [{\n \"name\": \"routes\",\n \"route_rules\": [{\n \"description\": \"a route rule to match against\",\n \"priority\": \"1\",\n \"match_rules\": [{\n \"prefix_match\": \"/\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3600s\",\n },\n },\n \"header_action\": {\n \"response_header_to_adds\": [{\n \"header_name\": \"x-cache-status\",\n \"header_value\": \"{cdn_cache_status}\",\n }],\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 dest = new Gcp.Storage.Bucket(\"dest\", new()\n {\n Name = \"my-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var instance = new Gcp.NetworkServices.EdgeCacheOrigin(\"instance\", new()\n {\n Name = \"my-origin\",\n OriginAddress = dest.Url,\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n var instanceEdgeCacheService = new Gcp.NetworkServices.EdgeCacheService(\"instance\", new()\n {\n Name = \"my-service\",\n Description = \"some description\",\n Routing = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingArgs\n {\n HostRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule description\",\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"routes\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routes\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3600s\",\n },\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs\n {\n ResponseHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs\n {\n HeaderName = \"x-cache-status\",\n HeaderValue = \"{cdn_cache_status}\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdest, err := storage.NewBucket(ctx, \"dest\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket\"),\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\tinstance, err := networkservices.NewEdgeCacheOrigin(ctx, \"instance\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: dest.Url,\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheService(ctx, \"instance\", \u0026networkservices.EdgeCacheServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tDescription: pulumi.String(\"some description\"),\n\t\t\tRouting: \u0026networkservices.EdgeCacheServiceRoutingArgs{\n\t\t\t\tHostRules: networkservices.EdgeCacheServiceRoutingHostRuleArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule description\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathMatchers: networkservices.EdgeCacheServiceRoutingPathMatcherArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routes\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\t\tResponseHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"x-cache-status\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"{cdn_cache_status}\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginTimeoutArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheService;\nimport com.pulumi.gcp.networkservices.EdgeCacheServiceArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceRoutingArgs;\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 dest = new Bucket(\"dest\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var instance = new EdgeCacheOrigin(\"instance\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(dest.url())\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n var instanceEdgeCacheService = new EdgeCacheService(\"instanceEdgeCacheService\", EdgeCacheServiceArgs.builder()\n .name(\"my-service\")\n .description(\"some description\")\n .routing(EdgeCacheServiceRoutingArgs.builder()\n .hostRules(EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule description\")\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"routes\")\n .build())\n .pathMatchers(EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routes\")\n .routeRules(EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against\")\n .priority(1)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3600s\")\n .build())\n .build())\n .headerAction(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs.builder()\n .responseHeaderToAdds(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs.builder()\n .headerName(\"x-cache-status\")\n .headerValue(\"{cdn_cache_status}\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dest:\n type: gcp:storage:Bucket\n properties:\n name: my-bucket\n location: US\n forceDestroy: true\n instance:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: ${dest.url}\n description: The default bucket for media edge test\n maxAttempts: 2\n timeout:\n connectTimeout: 10s\n instanceEdgeCacheService:\n type: gcp:networkservices:EdgeCacheService\n name: instance\n properties:\n name: my-service\n description: some description\n routing:\n hostRules:\n - description: host rule description\n hosts:\n - sslcert.tf-test.club\n pathMatcher: routes\n pathMatchers:\n - name: routes\n routeRules:\n - description: a route rule to match against\n priority: 1\n matchRules:\n - prefixMatch: /\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600s\n headerAction:\n responseHeaderToAdds:\n - headerName: x-cache-status\n headerValue: '{cdn_cache_status}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Service Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dest = new gcp.storage.Bucket(\"dest\", {\n name: \"my-bucket\",\n location: \"US\",\n forceDestroy: true,\n});\nconst google = new gcp.networkservices.EdgeCacheOrigin(\"google\", {\n name: \"origin-google\",\n originAddress: \"google.com\",\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n timeout: {\n connectTimeout: \"10s\",\n },\n});\nconst instance = new gcp.networkservices.EdgeCacheOrigin(\"instance\", {\n name: \"my-origin\",\n originAddress: dest.url,\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n timeout: {\n connectTimeout: \"10s\",\n },\n});\nconst instanceEdgeCacheService = new gcp.networkservices.EdgeCacheService(\"instance\", {\n name: \"my-service\",\n description: \"some description\",\n disableQuic: true,\n disableHttp2: true,\n labels: {\n a: \"b\",\n },\n routing: {\n hostRules: [\n {\n description: \"host rule description\",\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"routes\",\n },\n {\n description: \"host rule2\",\n hosts: [\"sslcert.tf-test2.club\"],\n pathMatcher: \"routes\",\n },\n {\n description: \"host rule3\",\n hosts: [\"sslcert.tf-test3.club\"],\n pathMatcher: \"routesAdvanced\",\n },\n ],\n pathMatchers: [\n {\n name: \"routes\",\n routeRules: [{\n description: \"a route rule to match against\",\n priority: \"1\",\n matchRules: [{\n prefixMatch: \"/\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3600s\",\n },\n },\n headerAction: {\n responseHeaderToAdds: [{\n headerName: \"x-cache-status\",\n headerValue: \"{cdn_cache_status}\",\n }],\n },\n }],\n },\n {\n name: \"routesAdvanced\",\n description: \"an advanced ruleset\",\n routeRules: [\n {\n description: \"an advanced route rule to match against\",\n priority: \"1\",\n matchRules: [\n {\n prefixMatch: \"/potato/\",\n queryParameterMatches: [\n {\n name: \"debug\",\n presentMatch: true,\n },\n {\n name: \"state\",\n exactMatch: \"debug\",\n },\n ],\n },\n {\n fullPathMatch: \"/apple\",\n },\n ],\n headerAction: {\n requestHeaderToAdds: [\n {\n headerName: \"debug\",\n headerValue: \"true\",\n replace: true,\n },\n {\n headerName: \"potato\",\n headerValue: \"plant\",\n },\n ],\n responseHeaderToAdds: [{\n headerName: \"potato\",\n headerValue: \"plant\",\n replace: true,\n }],\n requestHeaderToRemoves: [{\n headerName: \"prod\",\n }],\n responseHeaderToRemoves: [{\n headerName: \"prod\",\n }],\n },\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3800s\",\n clientTtl: \"3600s\",\n maxTtl: \"9000s\",\n cacheKeyPolicy: {\n includeProtocol: true,\n excludeHost: true,\n includedQueryParameters: [\n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\",\n ],\n includedHeaderNames: [\"banana\"],\n includedCookieNames: [\"orange\"],\n },\n negativeCaching: true,\n signedRequestMode: \"DISABLED\",\n negativeCachingPolicy: {\n \"500\": \"3000s\",\n },\n },\n urlRewrite: {\n pathPrefixRewrite: \"/dev\",\n hostRewrite: \"dev.club\",\n },\n corsPolicy: {\n maxAge: \"2500s\",\n allowCredentials: true,\n allowOrigins: [\"*\"],\n allowMethods: [\"GET\"],\n allowHeaders: [\"dev\"],\n exposeHeaders: [\"prod\"],\n },\n },\n },\n {\n description: \"a second route rule to match against\",\n priority: \"2\",\n matchRules: [{\n fullPathMatch: \"/yay\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3600s\",\n cacheKeyPolicy: {\n excludedQueryParameters: [\"dev\"],\n },\n },\n corsPolicy: {\n maxAge: \"3000s\",\n allowHeaders: [\"dev\"],\n disabled: true,\n },\n },\n },\n ],\n },\n ],\n },\n logConfig: {\n enable: true,\n sampleRate: 0.01,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndest = gcp.storage.Bucket(\"dest\",\n name=\"my-bucket\",\n location=\"US\",\n force_destroy=True)\ngoogle = gcp.networkservices.EdgeCacheOrigin(\"google\",\n name=\"origin-google\",\n origin_address=\"google.com\",\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n timeout={\n \"connect_timeout\": \"10s\",\n })\ninstance = gcp.networkservices.EdgeCacheOrigin(\"instance\",\n name=\"my-origin\",\n origin_address=dest.url,\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n timeout={\n \"connect_timeout\": \"10s\",\n })\ninstance_edge_cache_service = gcp.networkservices.EdgeCacheService(\"instance\",\n name=\"my-service\",\n description=\"some description\",\n disable_quic=True,\n disable_http2=True,\n labels={\n \"a\": \"b\",\n },\n routing={\n \"host_rules\": [\n {\n \"description\": \"host rule description\",\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"routes\",\n },\n {\n \"description\": \"host rule2\",\n \"hosts\": [\"sslcert.tf-test2.club\"],\n \"path_matcher\": \"routes\",\n },\n {\n \"description\": \"host rule3\",\n \"hosts\": [\"sslcert.tf-test3.club\"],\n \"path_matcher\": \"routesAdvanced\",\n },\n ],\n \"path_matchers\": [\n {\n \"name\": \"routes\",\n \"route_rules\": [{\n \"description\": \"a route rule to match against\",\n \"priority\": \"1\",\n \"match_rules\": [{\n \"prefix_match\": \"/\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3600s\",\n },\n },\n \"header_action\": {\n \"response_header_to_adds\": [{\n \"header_name\": \"x-cache-status\",\n \"header_value\": \"{cdn_cache_status}\",\n }],\n },\n }],\n },\n {\n \"name\": \"routesAdvanced\",\n \"description\": \"an advanced ruleset\",\n \"route_rules\": [\n {\n \"description\": \"an advanced route rule to match against\",\n \"priority\": \"1\",\n \"match_rules\": [\n {\n \"prefix_match\": \"/potato/\",\n \"query_parameter_matches\": [\n {\n \"name\": \"debug\",\n \"present_match\": True,\n },\n {\n \"name\": \"state\",\n \"exact_match\": \"debug\",\n },\n ],\n },\n {\n \"full_path_match\": \"/apple\",\n },\n ],\n \"header_action\": {\n \"request_header_to_adds\": [\n {\n \"header_name\": \"debug\",\n \"header_value\": \"true\",\n \"replace\": True,\n },\n {\n \"header_name\": \"potato\",\n \"header_value\": \"plant\",\n },\n ],\n \"response_header_to_adds\": [{\n \"header_name\": \"potato\",\n \"header_value\": \"plant\",\n \"replace\": True,\n }],\n \"request_header_to_removes\": [{\n \"header_name\": \"prod\",\n }],\n \"response_header_to_removes\": [{\n \"header_name\": \"prod\",\n }],\n },\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3800s\",\n \"client_ttl\": \"3600s\",\n \"max_ttl\": \"9000s\",\n \"cache_key_policy\": {\n \"include_protocol\": True,\n \"exclude_host\": True,\n \"included_query_parameters\": [\n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\",\n ],\n \"included_header_names\": [\"banana\"],\n \"included_cookie_names\": [\"orange\"],\n },\n \"negative_caching\": True,\n \"signed_request_mode\": \"DISABLED\",\n \"negative_caching_policy\": {\n \"_500\": \"3000s\",\n },\n },\n \"url_rewrite\": {\n \"path_prefix_rewrite\": \"/dev\",\n \"host_rewrite\": \"dev.club\",\n },\n \"cors_policy\": {\n \"max_age\": \"2500s\",\n \"allow_credentials\": True,\n \"allow_origins\": [\"*\"],\n \"allow_methods\": [\"GET\"],\n \"allow_headers\": [\"dev\"],\n \"expose_headers\": [\"prod\"],\n },\n },\n },\n {\n \"description\": \"a second route rule to match against\",\n \"priority\": \"2\",\n \"match_rules\": [{\n \"full_path_match\": \"/yay\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3600s\",\n \"cache_key_policy\": {\n \"excluded_query_parameters\": [\"dev\"],\n },\n },\n \"cors_policy\": {\n \"max_age\": \"3000s\",\n \"allow_headers\": [\"dev\"],\n \"disabled\": True,\n },\n },\n },\n ],\n },\n ],\n },\n log_config={\n \"enable\": True,\n \"sample_rate\": 0.01,\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 dest = new Gcp.Storage.Bucket(\"dest\", new()\n {\n Name = \"my-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var google = new Gcp.NetworkServices.EdgeCacheOrigin(\"google\", new()\n {\n Name = \"origin-google\",\n OriginAddress = \"google.com\",\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n var instance = new Gcp.NetworkServices.EdgeCacheOrigin(\"instance\", new()\n {\n Name = \"my-origin\",\n OriginAddress = dest.Url,\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n var instanceEdgeCacheService = new Gcp.NetworkServices.EdgeCacheService(\"instance\", new()\n {\n Name = \"my-service\",\n Description = \"some description\",\n DisableQuic = true,\n DisableHttp2 = true,\n Labels = \n {\n { \"a\", \"b\" },\n },\n Routing = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingArgs\n {\n HostRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule description\",\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"routes\",\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule2\",\n Hosts = new[]\n {\n \"sslcert.tf-test2.club\",\n },\n PathMatcher = \"routes\",\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule3\",\n Hosts = new[]\n {\n \"sslcert.tf-test3.club\",\n },\n PathMatcher = \"routesAdvanced\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routes\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3600s\",\n },\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs\n {\n ResponseHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs\n {\n HeaderName = \"x-cache-status\",\n HeaderValue = \"{cdn_cache_status}\",\n },\n },\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routesAdvanced\",\n Description = \"an advanced ruleset\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"an advanced route rule to match against\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/potato/\",\n QueryParameterMatches = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"debug\",\n PresentMatch = true,\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"state\",\n ExactMatch = \"debug\",\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"/apple\",\n },\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs\n {\n HeaderName = \"debug\",\n HeaderValue = \"true\",\n Replace = true,\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs\n {\n HeaderName = \"potato\",\n HeaderValue = \"plant\",\n },\n },\n ResponseHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs\n {\n HeaderName = \"potato\",\n HeaderValue = \"plant\",\n Replace = true,\n },\n },\n RequestHeaderToRemoves = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArgs\n {\n HeaderName = \"prod\",\n },\n },\n ResponseHeaderToRemoves = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArgs\n {\n HeaderName = \"prod\",\n },\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3800s\",\n ClientTtl = \"3600s\",\n MaxTtl = \"9000s\",\n CacheKeyPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs\n {\n IncludeProtocol = true,\n ExcludeHost = true,\n IncludedQueryParameters = new[]\n {\n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\",\n },\n IncludedHeaderNames = new[]\n {\n \"banana\",\n },\n IncludedCookieNames = new[]\n {\n \"orange\",\n },\n },\n NegativeCaching = true,\n SignedRequestMode = \"DISABLED\",\n NegativeCachingPolicy = \n {\n { \"500\", \"3000s\" },\n },\n },\n UrlRewrite = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionUrlRewriteArgs\n {\n PathPrefixRewrite = \"/dev\",\n HostRewrite = \"dev.club\",\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs\n {\n MaxAge = \"2500s\",\n AllowCredentials = true,\n AllowOrigins = new[]\n {\n \"*\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n },\n AllowHeaders = new[]\n {\n \"dev\",\n },\n ExposeHeaders = new[]\n {\n \"prod\",\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a second route rule to match against\",\n Priority = \"2\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"/yay\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3600s\",\n CacheKeyPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs\n {\n ExcludedQueryParameters = new[]\n {\n \"dev\",\n },\n },\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs\n {\n MaxAge = \"3000s\",\n AllowHeaders = new[]\n {\n \"dev\",\n },\n Disabled = true,\n },\n },\n },\n },\n },\n },\n },\n LogConfig = new Gcp.NetworkServices.Inputs.EdgeCacheServiceLogConfigArgs\n {\n Enable = true,\n SampleRate = 0.01,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdest, err := storage.NewBucket(ctx, \"dest\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket\"),\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 = networkservices.NewEdgeCacheOrigin(ctx, \"google\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"origin-google\"),\n\t\t\tOriginAddress: pulumi.String(\"google.com\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := networkservices.NewEdgeCacheOrigin(ctx, \"instance\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: dest.Url,\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheService(ctx, \"instance\", \u0026networkservices.EdgeCacheServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tDescription: pulumi.String(\"some description\"),\n\t\t\tDisableQuic: pulumi.Bool(true),\n\t\t\tDisableHttp2: pulumi.Bool(true),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"a\": pulumi.String(\"b\"),\n\t\t\t},\n\t\t\tRouting: \u0026networkservices.EdgeCacheServiceRoutingArgs{\n\t\t\t\tHostRules: networkservices.EdgeCacheServiceRoutingHostRuleArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule description\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule2\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test2.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule3\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test3.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routesAdvanced\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathMatchers: networkservices.EdgeCacheServiceRoutingPathMatcherArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routes\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\t\tResponseHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"x-cache-status\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"{cdn_cache_status}\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routesAdvanced\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"an advanced ruleset\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"an advanced route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/potato/\"),\n\t\t\t\t\t\t\t\t\t\tQueryParameterMatches: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"debug\"),\n\t\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"state\"),\n\t\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"debug\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"/apple\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\t\tRequestHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"debug\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"true\"),\n\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"potato\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"plant\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tResponseHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"potato\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"plant\"),\n\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRequestHeaderToRemoves: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"prod\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tResponseHeaderToRemoves: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"prod\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3800s\"),\n\t\t\t\t\t\t\t\t\t\tClientTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t\tMaxTtl: pulumi.String(\"9000s\"),\n\t\t\t\t\t\t\t\t\t\tCacheKeyPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\t\t\t\t\t\t\tIncludeProtocol: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\tExcludeHost: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\tIncludedQueryParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"apple\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"santa\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"claus\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tIncludedHeaderNames: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"banana\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tIncludedCookieNames: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"orange\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tNegativeCaching: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"DISABLED\"),\n\t\t\t\t\t\t\t\t\t\tNegativeCachingPolicy: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\t\t\"500\": pulumi.String(\"3000s\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tUrlRewrite: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/dev\"),\n\t\t\t\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"dev.club\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tCorsPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tMaxAge: pulumi.String(\"2500s\"),\n\t\t\t\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"prod\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a second route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"/yay\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t\tCacheKeyPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\t\t\t\t\t\t\tExcludedQueryParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tCorsPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tMaxAge: pulumi.String(\"3000s\"),\n\t\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tDisabled: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\tLogConfig: \u0026networkservices.EdgeCacheServiceLogConfigArgs{\n\t\t\t\tEnable: pulumi.Bool(true),\n\t\t\t\tSampleRate: pulumi.Float64(0.01),\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.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginTimeoutArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheService;\nimport com.pulumi.gcp.networkservices.EdgeCacheServiceArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceRoutingArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceLogConfigArgs;\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 dest = new Bucket(\"dest\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var google = new EdgeCacheOrigin(\"google\", EdgeCacheOriginArgs.builder()\n .name(\"origin-google\")\n .originAddress(\"google.com\")\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n var instance = new EdgeCacheOrigin(\"instance\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(dest.url())\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n var instanceEdgeCacheService = new EdgeCacheService(\"instanceEdgeCacheService\", EdgeCacheServiceArgs.builder()\n .name(\"my-service\")\n .description(\"some description\")\n .disableQuic(true)\n .disableHttp2(true)\n .labels(Map.of(\"a\", \"b\"))\n .routing(EdgeCacheServiceRoutingArgs.builder()\n .hostRules( \n EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule description\")\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"routes\")\n .build(),\n EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule2\")\n .hosts(\"sslcert.tf-test2.club\")\n .pathMatcher(\"routes\")\n .build(),\n EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule3\")\n .hosts(\"sslcert.tf-test3.club\")\n .pathMatcher(\"routesAdvanced\")\n .build())\n .pathMatchers( \n EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routes\")\n .routeRules(EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against\")\n .priority(1)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3600s\")\n .build())\n .build())\n .headerAction(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs.builder()\n .responseHeaderToAdds(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs.builder()\n .headerName(\"x-cache-status\")\n .headerValue(\"{cdn_cache_status}\")\n .build())\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routesAdvanced\")\n .description(\"an advanced ruleset\")\n .routeRules( \n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"an advanced route rule to match against\")\n .priority(1)\n .matchRules( \n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/potato/\")\n .queryParameterMatches( \n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"debug\")\n .presentMatch(true)\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"state\")\n .exactMatch(\"debug\")\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"/apple\")\n .build())\n .headerAction(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeaderToAdds( \n EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs.builder()\n .headerName(\"debug\")\n .headerValue(\"true\")\n .replace(true)\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs.builder()\n .headerName(\"potato\")\n .headerValue(\"plant\")\n .build())\n .responseHeaderToAdds(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs.builder()\n .headerName(\"potato\")\n .headerValue(\"plant\")\n .replace(true)\n .build())\n .requestHeaderToRemoves(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArgs.builder()\n .headerName(\"prod\")\n .build())\n .responseHeaderToRemoves(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArgs.builder()\n .headerName(\"prod\")\n .build())\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3800s\")\n .clientTtl(\"3600s\")\n .maxTtl(\"9000s\")\n .cacheKeyPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs.builder()\n .includeProtocol(true)\n .excludeHost(true)\n .includedQueryParameters( \n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\")\n .includedHeaderNames(\"banana\")\n .includedCookieNames(\"orange\")\n .build())\n .negativeCaching(true)\n .signedRequestMode(\"DISABLED\")\n .negativeCachingPolicy(Map.of(\"500\", \"3000s\"))\n .build())\n .urlRewrite(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionUrlRewriteArgs.builder()\n .pathPrefixRewrite(\"/dev\")\n .hostRewrite(\"dev.club\")\n .build())\n .corsPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs.builder()\n .maxAge(\"2500s\")\n .allowCredentials(true)\n .allowOrigins(\"*\")\n .allowMethods(\"GET\")\n .allowHeaders(\"dev\")\n .exposeHeaders(\"prod\")\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a second route rule to match against\")\n .priority(2)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"/yay\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3600s\")\n .cacheKeyPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs.builder()\n .excludedQueryParameters(\"dev\")\n .build())\n .build())\n .corsPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs.builder()\n .maxAge(\"3000s\")\n .allowHeaders(\"dev\")\n .disabled(true)\n .build())\n .build())\n .build())\n .build())\n .build())\n .logConfig(EdgeCacheServiceLogConfigArgs.builder()\n .enable(true)\n .sampleRate(0.01)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dest:\n type: gcp:storage:Bucket\n properties:\n name: my-bucket\n location: US\n forceDestroy: true\n google:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: origin-google\n originAddress: google.com\n description: The default bucket for media edge test\n maxAttempts: 2\n timeout:\n connectTimeout: 10s\n instance:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: ${dest.url}\n description: The default bucket for media edge test\n maxAttempts: 2\n timeout:\n connectTimeout: 10s\n instanceEdgeCacheService:\n type: gcp:networkservices:EdgeCacheService\n name: instance\n properties:\n name: my-service\n description: some description\n disableQuic: true\n disableHttp2: true\n labels:\n a: b\n routing:\n hostRules:\n - description: host rule description\n hosts:\n - sslcert.tf-test.club\n pathMatcher: routes\n - description: host rule2\n hosts:\n - sslcert.tf-test2.club\n pathMatcher: routes\n - description: host rule3\n hosts:\n - sslcert.tf-test3.club\n pathMatcher: routesAdvanced\n pathMatchers:\n - name: routes\n routeRules:\n - description: a route rule to match against\n priority: 1\n matchRules:\n - prefixMatch: /\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600s\n headerAction:\n responseHeaderToAdds:\n - headerName: x-cache-status\n headerValue: '{cdn_cache_status}'\n - name: routesAdvanced\n description: an advanced ruleset\n routeRules:\n - description: an advanced route rule to match against\n priority: 1\n matchRules:\n - prefixMatch: /potato/\n queryParameterMatches:\n - name: debug\n presentMatch: true\n - name: state\n exactMatch: debug\n - fullPathMatch: /apple\n headerAction:\n requestHeaderToAdds:\n - headerName: debug\n headerValue: 'true'\n replace: true\n - headerName: potato\n headerValue: plant\n responseHeaderToAdds:\n - headerName: potato\n headerValue: plant\n replace: true\n requestHeaderToRemoves:\n - headerName: prod\n responseHeaderToRemoves:\n - headerName: prod\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3800s\n clientTtl: 3600s\n maxTtl: 9000s\n cacheKeyPolicy:\n includeProtocol: true\n excludeHost: true\n includedQueryParameters:\n - apple\n - dev\n - santa\n - claus\n includedHeaderNames:\n - banana\n includedCookieNames:\n - orange\n negativeCaching: true\n signedRequestMode: DISABLED\n negativeCachingPolicy:\n '500': 3000s\n urlRewrite:\n pathPrefixRewrite: /dev\n hostRewrite: dev.club\n corsPolicy:\n maxAge: 2500s\n allowCredentials: true\n allowOrigins:\n - '*'\n allowMethods:\n - GET\n allowHeaders:\n - dev\n exposeHeaders:\n - prod\n - description: a second route rule to match against\n priority: 2\n matchRules:\n - fullPathMatch: /yay\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600s\n cacheKeyPolicy:\n excludedQueryParameters:\n - dev\n corsPolicy:\n maxAge: 3000s\n allowHeaders:\n - dev\n disabled: true\n logConfig:\n enable: true\n sampleRate: 0.01\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Service Dual Token\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-name\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n});\nconst keyset = new gcp.networkservices.EdgeCacheKeyset(\"keyset\", {\n name: \"keyset-name\",\n description: \"The default keyset\",\n publicKeys: [{\n id: \"my-public-key\",\n managed: true,\n }],\n validationSharedKeys: [{\n secretVersion: secret_version_basic.id,\n }],\n});\nconst instance = new gcp.networkservices.EdgeCacheOrigin(\"instance\", {\n name: \"my-origin\",\n originAddress: \"gs://media-edge-default\",\n description: \"The default bucket for media edge test\",\n});\nconst instanceEdgeCacheService = new gcp.networkservices.EdgeCacheService(\"instance\", {\n name: \"my-service\",\n description: \"some description\",\n routing: {\n hostRules: [{\n description: \"host rule description\",\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"routes\",\n }],\n pathMatchers: [{\n name: \"routes\",\n routeRules: [\n {\n description: \"a route rule to match against master playlist\",\n priority: \"1\",\n matchRules: [{\n pathTemplateMatch: \"/master.m3u8\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n signedRequestMode: \"REQUIRE_TOKENS\",\n signedRequestKeyset: keyset.id,\n signedTokenOptions: {\n tokenQueryParameter: \"edge-cache-token\",\n },\n signedRequestMaximumExpirationTtl: \"600s\",\n addSignatures: {\n actions: \"GENERATE_COOKIE\",\n keyset: keyset.id,\n copiedParameters: [\n \"PathGlobs\",\n \"SessionID\",\n ],\n },\n },\n },\n },\n {\n description: \"a route rule to match against all playlists\",\n priority: \"2\",\n matchRules: [{\n pathTemplateMatch: \"/*.m3u8\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n signedRequestMode: \"REQUIRE_TOKENS\",\n signedRequestKeyset: keyset.id,\n signedTokenOptions: {\n tokenQueryParameter: \"hdnts\",\n allowedSignatureAlgorithms: [\n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\",\n ],\n },\n addSignatures: {\n actions: \"GENERATE_TOKEN_HLS_COOKIELESS\",\n keyset: keyset.id,\n tokenTtl: \"1200s\",\n tokenQueryParameter: \"hdntl\",\n copiedParameters: [\"URLPrefix\"],\n },\n },\n },\n },\n {\n description: \"a route rule to match against\",\n priority: \"3\",\n matchRules: [{\n pathTemplateMatch: \"/**.m3u8\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n signedRequestMode: \"REQUIRE_TOKENS\",\n signedRequestKeyset: keyset.id,\n signedTokenOptions: {\n tokenQueryParameter: \"hdntl\",\n },\n addSignatures: {\n actions: \"PROPAGATE_TOKEN_HLS_COOKIELESS\",\n tokenQueryParameter: \"hdntl\",\n },\n },\n },\n },\n ],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-name\",\n replication={\n \"auto\": {},\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"secret-data\")\nkeyset = gcp.networkservices.EdgeCacheKeyset(\"keyset\",\n name=\"keyset-name\",\n description=\"The default keyset\",\n public_keys=[{\n \"id\": \"my-public-key\",\n \"managed\": True,\n }],\n validation_shared_keys=[{\n \"secret_version\": secret_version_basic.id,\n }])\ninstance = gcp.networkservices.EdgeCacheOrigin(\"instance\",\n name=\"my-origin\",\n origin_address=\"gs://media-edge-default\",\n description=\"The default bucket for media edge test\")\ninstance_edge_cache_service = gcp.networkservices.EdgeCacheService(\"instance\",\n name=\"my-service\",\n description=\"some description\",\n routing={\n \"host_rules\": [{\n \"description\": \"host rule description\",\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"routes\",\n }],\n \"path_matchers\": [{\n \"name\": \"routes\",\n \"route_rules\": [\n {\n \"description\": \"a route rule to match against master playlist\",\n \"priority\": \"1\",\n \"match_rules\": [{\n \"path_template_match\": \"/master.m3u8\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"signed_request_mode\": \"REQUIRE_TOKENS\",\n \"signed_request_keyset\": keyset.id,\n \"signed_token_options\": {\n \"token_query_parameter\": \"edge-cache-token\",\n },\n \"signed_request_maximum_expiration_ttl\": \"600s\",\n \"add_signatures\": {\n \"actions\": \"GENERATE_COOKIE\",\n \"keyset\": keyset.id,\n \"copied_parameters\": [\n \"PathGlobs\",\n \"SessionID\",\n ],\n },\n },\n },\n },\n {\n \"description\": \"a route rule to match against all playlists\",\n \"priority\": \"2\",\n \"match_rules\": [{\n \"path_template_match\": \"/*.m3u8\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"signed_request_mode\": \"REQUIRE_TOKENS\",\n \"signed_request_keyset\": keyset.id,\n \"signed_token_options\": {\n \"token_query_parameter\": \"hdnts\",\n \"allowed_signature_algorithms\": [\n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\",\n ],\n },\n \"add_signatures\": {\n \"actions\": \"GENERATE_TOKEN_HLS_COOKIELESS\",\n \"keyset\": keyset.id,\n \"token_ttl\": \"1200s\",\n \"token_query_parameter\": \"hdntl\",\n \"copied_parameters\": [\"URLPrefix\"],\n },\n },\n },\n },\n {\n \"description\": \"a route rule to match against\",\n \"priority\": \"3\",\n \"match_rules\": [{\n \"path_template_match\": \"/**.m3u8\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"signed_request_mode\": \"REQUIRE_TOKENS\",\n \"signed_request_keyset\": keyset.id,\n \"signed_token_options\": {\n \"token_query_parameter\": \"hdntl\",\n },\n \"add_signatures\": {\n \"actions\": \"PROPAGATE_TOKEN_HLS_COOKIELESS\",\n \"token_query_parameter\": \"hdntl\",\n },\n },\n },\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 secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-name\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n });\n\n var keyset = new Gcp.NetworkServices.EdgeCacheKeyset(\"keyset\", new()\n {\n Name = \"keyset-name\",\n Description = \"The default keyset\",\n PublicKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetPublicKeyArgs\n {\n Id = \"my-public-key\",\n Managed = true,\n },\n },\n ValidationSharedKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetValidationSharedKeyArgs\n {\n SecretVersion = secret_version_basic.Id,\n },\n },\n });\n\n var instance = new Gcp.NetworkServices.EdgeCacheOrigin(\"instance\", new()\n {\n Name = \"my-origin\",\n OriginAddress = \"gs://media-edge-default\",\n Description = \"The default bucket for media edge test\",\n });\n\n var instanceEdgeCacheService = new Gcp.NetworkServices.EdgeCacheService(\"instance\", new()\n {\n Name = \"my-service\",\n Description = \"some description\",\n Routing = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingArgs\n {\n HostRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule description\",\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"routes\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routes\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against master playlist\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/master.m3u8\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n SignedRequestMode = \"REQUIRE_TOKENS\",\n SignedRequestKeyset = keyset.Id,\n SignedTokenOptions = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs\n {\n TokenQueryParameter = \"edge-cache-token\",\n },\n SignedRequestMaximumExpirationTtl = \"600s\",\n AddSignatures = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs\n {\n Actions = \"GENERATE_COOKIE\",\n Keyset = keyset.Id,\n CopiedParameters = new[]\n {\n \"PathGlobs\",\n \"SessionID\",\n },\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against all playlists\",\n Priority = \"2\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/*.m3u8\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n SignedRequestMode = \"REQUIRE_TOKENS\",\n SignedRequestKeyset = keyset.Id,\n SignedTokenOptions = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs\n {\n TokenQueryParameter = \"hdnts\",\n AllowedSignatureAlgorithms = new[]\n {\n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\",\n },\n },\n AddSignatures = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs\n {\n Actions = \"GENERATE_TOKEN_HLS_COOKIELESS\",\n Keyset = keyset.Id,\n TokenTtl = \"1200s\",\n TokenQueryParameter = \"hdntl\",\n CopiedParameters = new[]\n {\n \"URLPrefix\",\n },\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against\",\n Priority = \"3\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/**.m3u8\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n SignedRequestMode = \"REQUIRE_TOKENS\",\n SignedRequestKeyset = keyset.Id,\n SignedTokenOptions = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs\n {\n TokenQueryParameter = \"hdntl\",\n },\n AddSignatures = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs\n {\n Actions = \"PROPAGATE_TOKEN_HLS_COOKIELESS\",\n TokenQueryParameter = \"hdntl\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-name\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyset, err := networkservices.NewEdgeCacheKeyset(ctx, \"keyset\", \u0026networkservices.EdgeCacheKeysetArgs{\n\t\t\tName: pulumi.String(\"keyset-name\"),\n\t\t\tDescription: pulumi.String(\"The default keyset\"),\n\t\t\tPublicKeys: networkservices.EdgeCacheKeysetPublicKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetPublicKeyArgs{\n\t\t\t\t\tId: pulumi.String(\"my-public-key\"),\n\t\t\t\t\tManaged: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tValidationSharedKeys: networkservices.EdgeCacheKeysetValidationSharedKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetValidationSharedKeyArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.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\tinstance, err := networkservices.NewEdgeCacheOrigin(ctx, \"instance\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: pulumi.String(\"gs://media-edge-default\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheService(ctx, \"instance\", \u0026networkservices.EdgeCacheServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tDescription: pulumi.String(\"some description\"),\n\t\t\tRouting: \u0026networkservices.EdgeCacheServiceRoutingArgs{\n\t\t\t\tHostRules: networkservices.EdgeCacheServiceRoutingHostRuleArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule description\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathMatchers: networkservices.EdgeCacheServiceRoutingPathMatcherArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routes\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against master playlist\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/master.m3u8\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"REQUIRE_TOKENS\"),\n\t\t\t\t\t\t\t\t\t\tSignedRequestKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\tSignedTokenOptions: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs{\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"edge-cache-token\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tSignedRequestMaximumExpirationTtl: pulumi.String(\"600s\"),\n\t\t\t\t\t\t\t\t\t\tAddSignatures: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs{\n\t\t\t\t\t\t\t\t\t\t\tActions: pulumi.String(\"GENERATE_COOKIE\"),\n\t\t\t\t\t\t\t\t\t\t\tKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\t\tCopiedParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"PathGlobs\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"SessionID\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against all playlists\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/*.m3u8\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"REQUIRE_TOKENS\"),\n\t\t\t\t\t\t\t\t\t\tSignedRequestKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\tSignedTokenOptions: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs{\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdnts\"),\n\t\t\t\t\t\t\t\t\t\t\tAllowedSignatureAlgorithms: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"ED25519\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"HMAC_SHA_256\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"HMAC_SHA1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAddSignatures: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs{\n\t\t\t\t\t\t\t\t\t\t\tActions: pulumi.String(\"GENERATE_TOKEN_HLS_COOKIELESS\"),\n\t\t\t\t\t\t\t\t\t\t\tKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\t\tTokenTtl: pulumi.String(\"1200s\"),\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdntl\"),\n\t\t\t\t\t\t\t\t\t\t\tCopiedParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"URLPrefix\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"3\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/**.m3u8\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"REQUIRE_TOKENS\"),\n\t\t\t\t\t\t\t\t\t\tSignedRequestKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\tSignedTokenOptions: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs{\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdntl\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAddSignatures: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs{\n\t\t\t\t\t\t\t\t\t\t\tActions: pulumi.String(\"PROPAGATE_TOKEN_HLS_COOKIELESS\"),\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdntl\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeyset;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeysetArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetPublicKeyArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetValidationSharedKeyArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheService;\nimport com.pulumi.gcp.networkservices.EdgeCacheServiceArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceRoutingArgs;\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 secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-name\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .build());\n\n var keyset = new EdgeCacheKeyset(\"keyset\", EdgeCacheKeysetArgs.builder()\n .name(\"keyset-name\")\n .description(\"The default keyset\")\n .publicKeys(EdgeCacheKeysetPublicKeyArgs.builder()\n .id(\"my-public-key\")\n .managed(true)\n .build())\n .validationSharedKeys(EdgeCacheKeysetValidationSharedKeyArgs.builder()\n .secretVersion(secret_version_basic.id())\n .build())\n .build());\n\n var instance = new EdgeCacheOrigin(\"instance\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(\"gs://media-edge-default\")\n .description(\"The default bucket for media edge test\")\n .build());\n\n var instanceEdgeCacheService = new EdgeCacheService(\"instanceEdgeCacheService\", EdgeCacheServiceArgs.builder()\n .name(\"my-service\")\n .description(\"some description\")\n .routing(EdgeCacheServiceRoutingArgs.builder()\n .hostRules(EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule description\")\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"routes\")\n .build())\n .pathMatchers(EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routes\")\n .routeRules( \n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against master playlist\")\n .priority(1)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/master.m3u8\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .signedRequestMode(\"REQUIRE_TOKENS\")\n .signedRequestKeyset(keyset.id())\n .signedTokenOptions(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs.builder()\n .tokenQueryParameter(\"edge-cache-token\")\n .build())\n .signedRequestMaximumExpirationTtl(\"600s\")\n .addSignatures(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs.builder()\n .actions(\"GENERATE_COOKIE\")\n .keyset(keyset.id())\n .copiedParameters( \n \"PathGlobs\",\n \"SessionID\")\n .build())\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against all playlists\")\n .priority(2)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/*.m3u8\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .signedRequestMode(\"REQUIRE_TOKENS\")\n .signedRequestKeyset(keyset.id())\n .signedTokenOptions(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs.builder()\n .tokenQueryParameter(\"hdnts\")\n .allowedSignatureAlgorithms( \n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\")\n .build())\n .addSignatures(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs.builder()\n .actions(\"GENERATE_TOKEN_HLS_COOKIELESS\")\n .keyset(keyset.id())\n .tokenTtl(\"1200s\")\n .tokenQueryParameter(\"hdntl\")\n .copiedParameters(\"URLPrefix\")\n .build())\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against\")\n .priority(3)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/**.m3u8\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .signedRequestMode(\"REQUIRE_TOKENS\")\n .signedRequestKeyset(keyset.id())\n .signedTokenOptions(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs.builder()\n .tokenQueryParameter(\"hdntl\")\n .build())\n .addSignatures(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs.builder()\n .actions(\"PROPAGATE_TOKEN_HLS_COOKIELESS\")\n .tokenQueryParameter(\"hdntl\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-name\n replication:\n auto: {}\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n keyset:\n type: gcp:networkservices:EdgeCacheKeyset\n properties:\n name: keyset-name\n description: The default keyset\n publicKeys:\n - id: my-public-key\n managed: true\n validationSharedKeys:\n - secretVersion: ${[\"secret-version-basic\"].id}\n instance:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: gs://media-edge-default\n description: The default bucket for media edge test\n instanceEdgeCacheService:\n type: gcp:networkservices:EdgeCacheService\n name: instance\n properties:\n name: my-service\n description: some description\n routing:\n hostRules:\n - description: host rule description\n hosts:\n - sslcert.tf-test.club\n pathMatcher: routes\n pathMatchers:\n - name: routes\n routeRules:\n - description: a route rule to match against master playlist\n priority: 1\n matchRules:\n - pathTemplateMatch: /master.m3u8\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n signedRequestMode: REQUIRE_TOKENS\n signedRequestKeyset: ${keyset.id}\n signedTokenOptions:\n tokenQueryParameter: edge-cache-token\n signedRequestMaximumExpirationTtl: 600s\n addSignatures:\n actions: GENERATE_COOKIE\n keyset: ${keyset.id}\n copiedParameters:\n - PathGlobs\n - SessionID\n - description: a route rule to match against all playlists\n priority: 2\n matchRules:\n - pathTemplateMatch: /*.m3u8\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n signedRequestMode: REQUIRE_TOKENS\n signedRequestKeyset: ${keyset.id}\n signedTokenOptions:\n tokenQueryParameter: hdnts\n allowedSignatureAlgorithms:\n - ED25519\n - HMAC_SHA_256\n - HMAC_SHA1\n addSignatures:\n actions: GENERATE_TOKEN_HLS_COOKIELESS\n keyset: ${keyset.id}\n tokenTtl: 1200s\n tokenQueryParameter: hdntl\n copiedParameters:\n - URLPrefix\n - description: a route rule to match against\n priority: 3\n matchRules:\n - pathTemplateMatch: /**.m3u8\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n signedRequestMode: REQUIRE_TOKENS\n signedRequestKeyset: ${keyset.id}\n signedTokenOptions:\n tokenQueryParameter: hdntl\n addSignatures:\n actions: PROPAGATE_TOKEN_HLS_COOKIELESS\n tokenQueryParameter: hdntl\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEdgeCacheService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/edgeCacheServices/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, EdgeCacheService can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheService:EdgeCacheService default projects/{{project}}/locations/global/edgeCacheServices/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheService:EdgeCacheService default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheService:EdgeCacheService default {{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -220791,7 +220791,7 @@ } }, "gcp:networkservices/endpointPolicy:EndpointPolicy": { - "description": "## Example Usage\n\n### Network Services Endpoint Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.EndpointPolicy(\"default\", {\n name: \"my-endpoint-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n type: \"SIDECAR_PROXY\",\n trafficPortSelector: {\n ports: [\"8081\"],\n },\n endpointMatcher: {\n metadataLabelMatcher: {\n metadataLabelMatchCriteria: \"MATCH_ANY\",\n metadataLabels: [{\n labelName: \"foo\",\n labelValue: \"bar\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.EndpointPolicy(\"default\",\n name=\"my-endpoint-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n type=\"SIDECAR_PROXY\",\n traffic_port_selector={\n \"ports\": [\"8081\"],\n },\n endpoint_matcher={\n \"metadataLabelMatcher\": {\n \"metadataLabelMatchCriteria\": \"MATCH_ANY\",\n \"metadataLabels\": [{\n \"labelName\": \"foo\",\n \"labelValue\": \"bar\",\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 @default = new Gcp.NetworkServices.EndpointPolicy(\"default\", new()\n {\n Name = \"my-endpoint-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Type = \"SIDECAR_PROXY\",\n TrafficPortSelector = new Gcp.NetworkServices.Inputs.EndpointPolicyTrafficPortSelectorArgs\n {\n Ports = new[]\n {\n \"8081\",\n },\n },\n EndpointMatcher = new Gcp.NetworkServices.Inputs.EndpointPolicyEndpointMatcherArgs\n {\n MetadataLabelMatcher = new Gcp.NetworkServices.Inputs.EndpointPolicyEndpointMatcherMetadataLabelMatcherArgs\n {\n MetadataLabelMatchCriteria = \"MATCH_ANY\",\n MetadataLabels = new[]\n {\n new Gcp.NetworkServices.Inputs.EndpointPolicyEndpointMatcherMetadataLabelMatcherMetadataLabelArgs\n {\n LabelName = \"foo\",\n LabelValue = \"bar\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewEndpointPolicy(ctx, \"default\", \u0026networkservices.EndpointPolicyArgs{\n\t\t\tName: pulumi.String(\"my-endpoint-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"SIDECAR_PROXY\"),\n\t\t\tTrafficPortSelector: \u0026networkservices.EndpointPolicyTrafficPortSelectorArgs{\n\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"8081\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpointMatcher: \u0026networkservices.EndpointPolicyEndpointMatcherArgs{\n\t\t\t\tMetadataLabelMatcher: \u0026networkservices.EndpointPolicyEndpointMatcherMetadataLabelMatcherArgs{\n\t\t\t\t\tMetadataLabelMatchCriteria: pulumi.String(\"MATCH_ANY\"),\n\t\t\t\t\tMetadataLabels: networkservices.EndpointPolicyEndpointMatcherMetadataLabelMatcherMetadataLabelArray{\n\t\t\t\t\t\t\u0026networkservices.EndpointPolicyEndpointMatcherMetadataLabelMatcherMetadataLabelArgs{\n\t\t\t\t\t\t\tLabelName: pulumi.String(\"foo\"),\n\t\t\t\t\t\t\tLabelValue: pulumi.String(\"bar\"),\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.networkservices.EndpointPolicy;\nimport com.pulumi.gcp.networkservices.EndpointPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.EndpointPolicyTrafficPortSelectorArgs;\nimport com.pulumi.gcp.networkservices.inputs.EndpointPolicyEndpointMatcherArgs;\nimport com.pulumi.gcp.networkservices.inputs.EndpointPolicyEndpointMatcherMetadataLabelMatcherArgs;\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 EndpointPolicy(\"default\", EndpointPolicyArgs.builder()\n .name(\"my-endpoint-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .type(\"SIDECAR_PROXY\")\n .trafficPortSelector(EndpointPolicyTrafficPortSelectorArgs.builder()\n .ports(\"8081\")\n .build())\n .endpointMatcher(EndpointPolicyEndpointMatcherArgs.builder()\n .metadataLabelMatcher(EndpointPolicyEndpointMatcherMetadataLabelMatcherArgs.builder()\n .metadataLabelMatchCriteria(\"MATCH_ANY\")\n .metadataLabels(EndpointPolicyEndpointMatcherMetadataLabelMatcherMetadataLabelArgs.builder()\n .labelName(\"foo\")\n .labelValue(\"bar\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:EndpointPolicy\n properties:\n name: my-endpoint-policy\n labels:\n foo: bar\n description: my description\n type: SIDECAR_PROXY\n trafficPortSelector:\n ports:\n - '8081'\n endpointMatcher:\n metadataLabelMatcher:\n metadataLabelMatchCriteria: MATCH_ANY\n metadataLabels:\n - labelName: foo\n labelValue: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Endpoint Policy Empty Match\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.EndpointPolicy(\"default\", {\n name: \"my-endpoint-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n type: \"SIDECAR_PROXY\",\n trafficPortSelector: {\n ports: [\"8081\"],\n },\n endpointMatcher: {\n metadataLabelMatcher: {\n metadataLabelMatchCriteria: \"MATCH_ANY\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.EndpointPolicy(\"default\",\n name=\"my-endpoint-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n type=\"SIDECAR_PROXY\",\n traffic_port_selector={\n \"ports\": [\"8081\"],\n },\n endpoint_matcher={\n \"metadataLabelMatcher\": {\n \"metadataLabelMatchCriteria\": \"MATCH_ANY\",\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 @default = new Gcp.NetworkServices.EndpointPolicy(\"default\", new()\n {\n Name = \"my-endpoint-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Type = \"SIDECAR_PROXY\",\n TrafficPortSelector = new Gcp.NetworkServices.Inputs.EndpointPolicyTrafficPortSelectorArgs\n {\n Ports = new[]\n {\n \"8081\",\n },\n },\n EndpointMatcher = new Gcp.NetworkServices.Inputs.EndpointPolicyEndpointMatcherArgs\n {\n MetadataLabelMatcher = new Gcp.NetworkServices.Inputs.EndpointPolicyEndpointMatcherMetadataLabelMatcherArgs\n {\n MetadataLabelMatchCriteria = \"MATCH_ANY\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewEndpointPolicy(ctx, \"default\", \u0026networkservices.EndpointPolicyArgs{\n\t\t\tName: pulumi.String(\"my-endpoint-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"SIDECAR_PROXY\"),\n\t\t\tTrafficPortSelector: \u0026networkservices.EndpointPolicyTrafficPortSelectorArgs{\n\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"8081\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpointMatcher: \u0026networkservices.EndpointPolicyEndpointMatcherArgs{\n\t\t\t\tMetadataLabelMatcher: \u0026networkservices.EndpointPolicyEndpointMatcherMetadataLabelMatcherArgs{\n\t\t\t\t\tMetadataLabelMatchCriteria: pulumi.String(\"MATCH_ANY\"),\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.networkservices.EndpointPolicy;\nimport com.pulumi.gcp.networkservices.EndpointPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.EndpointPolicyTrafficPortSelectorArgs;\nimport com.pulumi.gcp.networkservices.inputs.EndpointPolicyEndpointMatcherArgs;\nimport com.pulumi.gcp.networkservices.inputs.EndpointPolicyEndpointMatcherMetadataLabelMatcherArgs;\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 EndpointPolicy(\"default\", EndpointPolicyArgs.builder()\n .name(\"my-endpoint-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .type(\"SIDECAR_PROXY\")\n .trafficPortSelector(EndpointPolicyTrafficPortSelectorArgs.builder()\n .ports(\"8081\")\n .build())\n .endpointMatcher(EndpointPolicyEndpointMatcherArgs.builder()\n .metadataLabelMatcher(EndpointPolicyEndpointMatcherMetadataLabelMatcherArgs.builder()\n .metadataLabelMatchCriteria(\"MATCH_ANY\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:EndpointPolicy\n properties:\n name: my-endpoint-policy\n labels:\n foo: bar\n description: my description\n type: SIDECAR_PROXY\n trafficPortSelector:\n ports:\n - '8081'\n endpointMatcher:\n metadataLabelMatcher:\n metadataLabelMatchCriteria: MATCH_ANY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEndpointPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/endpointPolicies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, EndpointPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/endpointPolicy:EndpointPolicy default projects/{{project}}/locations/global/endpointPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/endpointPolicy:EndpointPolicy default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/endpointPolicy:EndpointPolicy default {{name}}\n```\n\n", + "description": "## Example Usage\n\n### Network Services Endpoint Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.EndpointPolicy(\"default\", {\n name: \"my-endpoint-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n type: \"SIDECAR_PROXY\",\n trafficPortSelector: {\n ports: [\"8081\"],\n },\n endpointMatcher: {\n metadataLabelMatcher: {\n metadataLabelMatchCriteria: \"MATCH_ANY\",\n metadataLabels: [{\n labelName: \"foo\",\n labelValue: \"bar\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.EndpointPolicy(\"default\",\n name=\"my-endpoint-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n type=\"SIDECAR_PROXY\",\n traffic_port_selector={\n \"ports\": [\"8081\"],\n },\n endpoint_matcher={\n \"metadata_label_matcher\": {\n \"metadata_label_match_criteria\": \"MATCH_ANY\",\n \"metadata_labels\": [{\n \"label_name\": \"foo\",\n \"label_value\": \"bar\",\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 @default = new Gcp.NetworkServices.EndpointPolicy(\"default\", new()\n {\n Name = \"my-endpoint-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Type = \"SIDECAR_PROXY\",\n TrafficPortSelector = new Gcp.NetworkServices.Inputs.EndpointPolicyTrafficPortSelectorArgs\n {\n Ports = new[]\n {\n \"8081\",\n },\n },\n EndpointMatcher = new Gcp.NetworkServices.Inputs.EndpointPolicyEndpointMatcherArgs\n {\n MetadataLabelMatcher = new Gcp.NetworkServices.Inputs.EndpointPolicyEndpointMatcherMetadataLabelMatcherArgs\n {\n MetadataLabelMatchCriteria = \"MATCH_ANY\",\n MetadataLabels = new[]\n {\n new Gcp.NetworkServices.Inputs.EndpointPolicyEndpointMatcherMetadataLabelMatcherMetadataLabelArgs\n {\n LabelName = \"foo\",\n LabelValue = \"bar\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewEndpointPolicy(ctx, \"default\", \u0026networkservices.EndpointPolicyArgs{\n\t\t\tName: pulumi.String(\"my-endpoint-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"SIDECAR_PROXY\"),\n\t\t\tTrafficPortSelector: \u0026networkservices.EndpointPolicyTrafficPortSelectorArgs{\n\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"8081\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpointMatcher: \u0026networkservices.EndpointPolicyEndpointMatcherArgs{\n\t\t\t\tMetadataLabelMatcher: \u0026networkservices.EndpointPolicyEndpointMatcherMetadataLabelMatcherArgs{\n\t\t\t\t\tMetadataLabelMatchCriteria: pulumi.String(\"MATCH_ANY\"),\n\t\t\t\t\tMetadataLabels: networkservices.EndpointPolicyEndpointMatcherMetadataLabelMatcherMetadataLabelArray{\n\t\t\t\t\t\t\u0026networkservices.EndpointPolicyEndpointMatcherMetadataLabelMatcherMetadataLabelArgs{\n\t\t\t\t\t\t\tLabelName: pulumi.String(\"foo\"),\n\t\t\t\t\t\t\tLabelValue: pulumi.String(\"bar\"),\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.networkservices.EndpointPolicy;\nimport com.pulumi.gcp.networkservices.EndpointPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.EndpointPolicyTrafficPortSelectorArgs;\nimport com.pulumi.gcp.networkservices.inputs.EndpointPolicyEndpointMatcherArgs;\nimport com.pulumi.gcp.networkservices.inputs.EndpointPolicyEndpointMatcherMetadataLabelMatcherArgs;\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 EndpointPolicy(\"default\", EndpointPolicyArgs.builder()\n .name(\"my-endpoint-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .type(\"SIDECAR_PROXY\")\n .trafficPortSelector(EndpointPolicyTrafficPortSelectorArgs.builder()\n .ports(\"8081\")\n .build())\n .endpointMatcher(EndpointPolicyEndpointMatcherArgs.builder()\n .metadataLabelMatcher(EndpointPolicyEndpointMatcherMetadataLabelMatcherArgs.builder()\n .metadataLabelMatchCriteria(\"MATCH_ANY\")\n .metadataLabels(EndpointPolicyEndpointMatcherMetadataLabelMatcherMetadataLabelArgs.builder()\n .labelName(\"foo\")\n .labelValue(\"bar\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:EndpointPolicy\n properties:\n name: my-endpoint-policy\n labels:\n foo: bar\n description: my description\n type: SIDECAR_PROXY\n trafficPortSelector:\n ports:\n - '8081'\n endpointMatcher:\n metadataLabelMatcher:\n metadataLabelMatchCriteria: MATCH_ANY\n metadataLabels:\n - labelName: foo\n labelValue: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Endpoint Policy Empty Match\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.EndpointPolicy(\"default\", {\n name: \"my-endpoint-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n type: \"SIDECAR_PROXY\",\n trafficPortSelector: {\n ports: [\"8081\"],\n },\n endpointMatcher: {\n metadataLabelMatcher: {\n metadataLabelMatchCriteria: \"MATCH_ANY\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.EndpointPolicy(\"default\",\n name=\"my-endpoint-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n type=\"SIDECAR_PROXY\",\n traffic_port_selector={\n \"ports\": [\"8081\"],\n },\n endpoint_matcher={\n \"metadata_label_matcher\": {\n \"metadata_label_match_criteria\": \"MATCH_ANY\",\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 @default = new Gcp.NetworkServices.EndpointPolicy(\"default\", new()\n {\n Name = \"my-endpoint-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Type = \"SIDECAR_PROXY\",\n TrafficPortSelector = new Gcp.NetworkServices.Inputs.EndpointPolicyTrafficPortSelectorArgs\n {\n Ports = new[]\n {\n \"8081\",\n },\n },\n EndpointMatcher = new Gcp.NetworkServices.Inputs.EndpointPolicyEndpointMatcherArgs\n {\n MetadataLabelMatcher = new Gcp.NetworkServices.Inputs.EndpointPolicyEndpointMatcherMetadataLabelMatcherArgs\n {\n MetadataLabelMatchCriteria = \"MATCH_ANY\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewEndpointPolicy(ctx, \"default\", \u0026networkservices.EndpointPolicyArgs{\n\t\t\tName: pulumi.String(\"my-endpoint-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"SIDECAR_PROXY\"),\n\t\t\tTrafficPortSelector: \u0026networkservices.EndpointPolicyTrafficPortSelectorArgs{\n\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"8081\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEndpointMatcher: \u0026networkservices.EndpointPolicyEndpointMatcherArgs{\n\t\t\t\tMetadataLabelMatcher: \u0026networkservices.EndpointPolicyEndpointMatcherMetadataLabelMatcherArgs{\n\t\t\t\t\tMetadataLabelMatchCriteria: pulumi.String(\"MATCH_ANY\"),\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.networkservices.EndpointPolicy;\nimport com.pulumi.gcp.networkservices.EndpointPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.EndpointPolicyTrafficPortSelectorArgs;\nimport com.pulumi.gcp.networkservices.inputs.EndpointPolicyEndpointMatcherArgs;\nimport com.pulumi.gcp.networkservices.inputs.EndpointPolicyEndpointMatcherMetadataLabelMatcherArgs;\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 EndpointPolicy(\"default\", EndpointPolicyArgs.builder()\n .name(\"my-endpoint-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .type(\"SIDECAR_PROXY\")\n .trafficPortSelector(EndpointPolicyTrafficPortSelectorArgs.builder()\n .ports(\"8081\")\n .build())\n .endpointMatcher(EndpointPolicyEndpointMatcherArgs.builder()\n .metadataLabelMatcher(EndpointPolicyEndpointMatcherMetadataLabelMatcherArgs.builder()\n .metadataLabelMatchCriteria(\"MATCH_ANY\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:EndpointPolicy\n properties:\n name: my-endpoint-policy\n labels:\n foo: bar\n description: my description\n type: SIDECAR_PROXY\n trafficPortSelector:\n ports:\n - '8081'\n endpointMatcher:\n metadataLabelMatcher:\n metadataLabelMatchCriteria: MATCH_ANY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEndpointPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/endpointPolicies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, EndpointPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/endpointPolicy:EndpointPolicy default projects/{{project}}/locations/global/endpointPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/endpointPolicy:EndpointPolicy default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/endpointPolicy:EndpointPolicy default {{name}}\n```\n\n", "properties": { "authorizationPolicy": { "type": "string", @@ -220996,7 +220996,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## Example Usage\n\n### Network Services Gateway Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-gateway\",\n scope: \"default-scope-basic\",\n type: \"OPEN_MESH\",\n ports: [443],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.Gateway(\"default\",\n name=\"my-gateway\",\n scope=\"default-scope-basic\",\n type=\"OPEN_MESH\",\n ports=[443])\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 Name = \"my-gateway\",\n Scope = \"default-scope-basic\",\n Type = \"OPEN_MESH\",\n Ports = new[]\n {\n 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-gateway\"),\n\t\t\tScope: pulumi.String(\"default-scope-basic\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\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.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 .name(\"my-gateway\")\n .scope(\"default-scope-basic\")\n .type(\"OPEN_MESH\")\n .ports(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:Gateway\n properties:\n name: my-gateway\n scope: default-scope-basic\n type: OPEN_MESH\n ports:\n - 443\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Gateway Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-gateway\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n type: \"OPEN_MESH\",\n ports: [443],\n scope: \"default-scope-advance\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.Gateway(\"default\",\n name=\"my-gateway\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n type=\"OPEN_MESH\",\n ports=[443],\n scope=\"default-scope-advance\")\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 Name = \"my-gateway\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Type = \"OPEN_MESH\",\n Ports = new[]\n {\n 443,\n },\n Scope = \"default-scope-advance\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-gateway\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\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})\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 .name(\"my-gateway\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .type(\"OPEN_MESH\")\n .ports(443)\n .scope(\"default-scope-advance\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:Gateway\n properties:\n name: my-gateway\n labels:\n foo: bar\n description: my description\n type: OPEN_MESH\n ports:\n - 443\n scope: default-scope-advance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Gateway Secure Web Proxy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"my-certificate\",\n location: \"us-central1\",\n selfManaged: {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n pemPrivateKey: std.file({\n input: \"test-fixtures/private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"my-network\",\n routingMode: \"REGIONAL\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"my-subnetwork-name\",\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 name: \"my-proxy-only-subnetwork\",\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(\"default\", {\n name: \"my-policy-name\",\n location: \"us-central1\",\n});\nconst defaultGatewaySecurityPolicyRule = new gcp.networksecurity.GatewaySecurityPolicyRule(\"default\", {\n name: \"my-policyrule-name\",\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(\"default\", {\n name: \"my-gateway1\",\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: [_default.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\nimport pulumi_std as std\n\ndefault = gcp.certificatemanager.Certificate(\"default\",\n name=\"my-certificate\",\n location=\"us-central1\",\n self_managed={\n \"pemCertificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n \"pemPrivateKey\": std.file(input=\"test-fixtures/private-key.pem\").result,\n })\ndefault_network = gcp.compute.Network(\"default\",\n name=\"my-network\",\n routing_mode=\"REGIONAL\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"my-subnetwork-name\",\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 name=\"my-proxy-only-subnetwork\",\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(\"default\",\n name=\"my-policy-name\",\n location=\"us-central1\")\ndefault_gateway_security_policy_rule = gcp.networksecurity.GatewaySecurityPolicyRule(\"default\",\n name=\"my-policyrule-name\",\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(\"default\",\n name=\"my-gateway1\",\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.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.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"my-certificate\",\n Location = \"us-central1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n PemPrivateKey = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n RoutingMode = \"REGIONAL\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"my-subnetwork-name\",\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 Name = \"my-proxy-only-subnetwork\",\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(\"default\", new()\n {\n Name = \"my-policy-name\",\n Location = \"us-central1\",\n });\n\n var defaultGatewaySecurityPolicyRule = new Gcp.NetworkSecurity.GatewaySecurityPolicyRule(\"default\", new()\n {\n Name = \"my-policyrule-name\",\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(\"default\", new()\n {\n Name = \"my-gateway1\",\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 @default.Id,\n },\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Id,\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n DeleteSwgAutogenRouterOnDestroy = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxyonlysubnet,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/private-key.pem\",\n\t\t}, nil)\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\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: invokeFile.Result,\n\t\t\t\tPemPrivateKey: invokeFile1.Result,\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnetwork-name\"),\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\tName: pulumi.String(\"my-proxy-only-subnetwork\"),\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, \"default\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy-name\"),\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, \"default\", \u0026networksecurity.GatewaySecurityPolicyRuleArgs{\n\t\t\tName: pulumi.String(\"my-policyrule-name\"),\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, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-gateway1\"),\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\t_default.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 default_ = new Certificate(\"default\", CertificateArgs.builder()\n .name(\"my-certificate\")\n .location(\"us-central1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .pemPrivateKey(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/private-key.pem\")\n .build()).result())\n .build())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"my-network\")\n .routingMode(\"REGIONAL\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnetwork-name\")\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 .name(\"my-proxy-only-subnetwork\")\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 .name(\"my-policy-name\")\n .location(\"us-central1\")\n .build());\n\n var defaultGatewaySecurityPolicyRule = new GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", GatewaySecurityPolicyRuleArgs.builder()\n .name(\"my-policyrule-name\")\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 .name(\"my-gateway1\")\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(default_.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 default:\n type: gcp:certificatemanager:Certificate\n properties:\n name: my-certificate\n location: us-central1\n selfManaged:\n pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n pemPrivateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/private-key.pem\n Return: result\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: my-network\n routingMode: REGIONAL\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: my-subnetwork-name\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 name: my-proxy-only-subnetwork\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 name: default\n properties:\n name: my-policy-name\n location: us-central1\n defaultGatewaySecurityPolicyRule:\n type: gcp:networksecurity:GatewaySecurityPolicyRule\n name: default\n properties:\n name: my-policyrule-name\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 name: default\n properties:\n name: my-gateway1\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 - ${default.id}\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.id}\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n deleteSwgAutogenRouterOnDestroy: true\n options:\n dependson:\n - ${proxyonlysubnet}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Gateway Multiple Swp Same Network\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"my-certificate\",\n location: \"us-south1\",\n selfManaged: {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n pemPrivateKey: std.file({\n input: \"test-fixtures/private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"my-network\",\n routingMode: \"REGIONAL\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"my-subnetwork-name\",\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 name: \"my-proxy-only-subnetwork\",\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(\"default\", {\n name: \"my-policy-name\",\n location: \"us-south1\",\n});\nconst defaultGatewaySecurityPolicyRule = new gcp.networksecurity.GatewaySecurityPolicyRule(\"default\", {\n name: \"my-policyrule-name\",\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(\"default\", {\n name: \"my-gateway1\",\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: [_default.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 name: \"my-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: [_default.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\nimport pulumi_std as std\n\ndefault = gcp.certificatemanager.Certificate(\"default\",\n name=\"my-certificate\",\n location=\"us-south1\",\n self_managed={\n \"pemCertificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n \"pemPrivateKey\": std.file(input=\"test-fixtures/private-key.pem\").result,\n })\ndefault_network = gcp.compute.Network(\"default\",\n name=\"my-network\",\n routing_mode=\"REGIONAL\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"my-subnetwork-name\",\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 name=\"my-proxy-only-subnetwork\",\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(\"default\",\n name=\"my-policy-name\",\n location=\"us-south1\")\ndefault_gateway_security_policy_rule = gcp.networksecurity.GatewaySecurityPolicyRule(\"default\",\n name=\"my-policyrule-name\",\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(\"default\",\n name=\"my-gateway1\",\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.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 name=\"my-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.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.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"my-certificate\",\n Location = \"us-south1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n PemPrivateKey = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n RoutingMode = \"REGIONAL\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"my-subnetwork-name\",\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 Name = \"my-proxy-only-subnetwork\",\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(\"default\", new()\n {\n Name = \"my-policy-name\",\n Location = \"us-south1\",\n });\n\n var defaultGatewaySecurityPolicyRule = new Gcp.NetworkSecurity.GatewaySecurityPolicyRule(\"default\", new()\n {\n Name = \"my-policyrule-name\",\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(\"default\", new()\n {\n Name = \"my-gateway1\",\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 @default.Id,\n },\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Id,\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n DeleteSwgAutogenRouterOnDestroy = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxyonlysubnet,\n },\n });\n\n var gateway2 = new Gcp.NetworkServices.Gateway(\"gateway2\", new()\n {\n Name = \"my-gateway2\",\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 @default.Id,\n },\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Id,\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n DeleteSwgAutogenRouterOnDestroy = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxyonlysubnet,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/private-key.pem\",\n\t\t}, nil)\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\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: invokeFile.Result,\n\t\t\t\tPemPrivateKey: invokeFile1.Result,\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnetwork-name\"),\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\tName: pulumi.String(\"my-proxy-only-subnetwork\"),\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, \"default\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy-name\"),\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, \"default\", \u0026networksecurity.GatewaySecurityPolicyRuleArgs{\n\t\t\tName: pulumi.String(\"my-policyrule-name\"),\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, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-gateway1\"),\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\t_default.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\tName: pulumi.String(\"my-gateway2\"),\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\t_default.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 default_ = new Certificate(\"default\", CertificateArgs.builder()\n .name(\"my-certificate\")\n .location(\"us-south1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .pemPrivateKey(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/private-key.pem\")\n .build()).result())\n .build())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"my-network\")\n .routingMode(\"REGIONAL\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnetwork-name\")\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 .name(\"my-proxy-only-subnetwork\")\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 .name(\"my-policy-name\")\n .location(\"us-south1\")\n .build());\n\n var defaultGatewaySecurityPolicyRule = new GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", GatewaySecurityPolicyRuleArgs.builder()\n .name(\"my-policyrule-name\")\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 .name(\"my-gateway1\")\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(default_.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 .name(\"my-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(default_.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 default:\n type: gcp:certificatemanager:Certificate\n properties:\n name: my-certificate\n location: us-south1\n selfManaged:\n pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n pemPrivateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/private-key.pem\n Return: result\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: my-network\n routingMode: REGIONAL\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: my-subnetwork-name\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 name: my-proxy-only-subnetwork\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 name: default\n properties:\n name: my-policy-name\n location: us-south1\n defaultGatewaySecurityPolicyRule:\n type: gcp:networksecurity:GatewaySecurityPolicyRule\n name: default\n properties:\n name: my-policyrule-name\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 name: default\n properties:\n name: my-gateway1\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 - ${default.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 name: my-gateway2\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 - ${default.id}\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.id}\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n deleteSwgAutogenRouterOnDestroy: true\n options:\n dependson:\n - ${proxyonlysubnet}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGateway can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/gateways/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Gateway can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/gateway:Gateway default projects/{{project}}/locations/{{location}}/gateways/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/gateway:Gateway default {{project}}/{{location}}/{{name}}\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## Example Usage\n\n### Network Services Gateway Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-gateway\",\n scope: \"default-scope-basic\",\n type: \"OPEN_MESH\",\n ports: [443],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.Gateway(\"default\",\n name=\"my-gateway\",\n scope=\"default-scope-basic\",\n type=\"OPEN_MESH\",\n ports=[443])\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 Name = \"my-gateway\",\n Scope = \"default-scope-basic\",\n Type = \"OPEN_MESH\",\n Ports = new[]\n {\n 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-gateway\"),\n\t\t\tScope: pulumi.String(\"default-scope-basic\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\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.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 .name(\"my-gateway\")\n .scope(\"default-scope-basic\")\n .type(\"OPEN_MESH\")\n .ports(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:Gateway\n properties:\n name: my-gateway\n scope: default-scope-basic\n type: OPEN_MESH\n ports:\n - 443\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Gateway Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-gateway\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n type: \"OPEN_MESH\",\n ports: [443],\n scope: \"default-scope-advance\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.Gateway(\"default\",\n name=\"my-gateway\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n type=\"OPEN_MESH\",\n ports=[443],\n scope=\"default-scope-advance\")\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 Name = \"my-gateway\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Type = \"OPEN_MESH\",\n Ports = new[]\n {\n 443,\n },\n Scope = \"default-scope-advance\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"my-gateway\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\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})\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 .name(\"my-gateway\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .type(\"OPEN_MESH\")\n .ports(443)\n .scope(\"default-scope-advance\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:Gateway\n properties:\n name: my-gateway\n labels:\n foo: bar\n description: my description\n type: OPEN_MESH\n ports:\n - 443\n scope: default-scope-advance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Gateway Secure Web Proxy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"my-certificate\",\n location: \"us-central1\",\n selfManaged: {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n pemPrivateKey: std.file({\n input: \"test-fixtures/private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"my-network\",\n routingMode: \"REGIONAL\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"my-subnetwork-name\",\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 name: \"my-proxy-only-subnetwork\",\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(\"default\", {\n name: \"my-policy-name\",\n location: \"us-central1\",\n});\nconst defaultGatewaySecurityPolicyRule = new gcp.networksecurity.GatewaySecurityPolicyRule(\"default\", {\n name: \"my-policyrule-name\",\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(\"default\", {\n name: \"my-gateway1\",\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: [_default.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\nimport pulumi_std as std\n\ndefault = gcp.certificatemanager.Certificate(\"default\",\n name=\"my-certificate\",\n location=\"us-central1\",\n self_managed={\n \"pem_certificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n \"pem_private_key\": std.file(input=\"test-fixtures/private-key.pem\").result,\n })\ndefault_network = gcp.compute.Network(\"default\",\n name=\"my-network\",\n routing_mode=\"REGIONAL\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"my-subnetwork-name\",\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 name=\"my-proxy-only-subnetwork\",\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(\"default\",\n name=\"my-policy-name\",\n location=\"us-central1\")\ndefault_gateway_security_policy_rule = gcp.networksecurity.GatewaySecurityPolicyRule(\"default\",\n name=\"my-policyrule-name\",\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(\"default\",\n name=\"my-gateway1\",\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.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.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"my-certificate\",\n Location = \"us-central1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n PemPrivateKey = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n RoutingMode = \"REGIONAL\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"my-subnetwork-name\",\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 Name = \"my-proxy-only-subnetwork\",\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(\"default\", new()\n {\n Name = \"my-policy-name\",\n Location = \"us-central1\",\n });\n\n var defaultGatewaySecurityPolicyRule = new Gcp.NetworkSecurity.GatewaySecurityPolicyRule(\"default\", new()\n {\n Name = \"my-policyrule-name\",\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(\"default\", new()\n {\n Name = \"my-gateway1\",\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 @default.Id,\n },\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Id,\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n DeleteSwgAutogenRouterOnDestroy = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxyonlysubnet,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/private-key.pem\",\n\t\t}, nil)\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\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\tPemPrivateKey: pulumi.String(invokeFile1.Result),\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnetwork-name\"),\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\tName: pulumi.String(\"my-proxy-only-subnetwork\"),\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, \"default\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy-name\"),\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, \"default\", \u0026networksecurity.GatewaySecurityPolicyRuleArgs{\n\t\t\tName: pulumi.String(\"my-policyrule-name\"),\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, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-gateway1\"),\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\t_default.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 default_ = new Certificate(\"default\", CertificateArgs.builder()\n .name(\"my-certificate\")\n .location(\"us-central1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .pemPrivateKey(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/private-key.pem\")\n .build()).result())\n .build())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"my-network\")\n .routingMode(\"REGIONAL\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnetwork-name\")\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 .name(\"my-proxy-only-subnetwork\")\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 .name(\"my-policy-name\")\n .location(\"us-central1\")\n .build());\n\n var defaultGatewaySecurityPolicyRule = new GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", GatewaySecurityPolicyRuleArgs.builder()\n .name(\"my-policyrule-name\")\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 .name(\"my-gateway1\")\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(default_.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 default:\n type: gcp:certificatemanager:Certificate\n properties:\n name: my-certificate\n location: us-central1\n selfManaged:\n pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n pemPrivateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/private-key.pem\n Return: result\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: my-network\n routingMode: REGIONAL\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: my-subnetwork-name\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 name: my-proxy-only-subnetwork\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 name: default\n properties:\n name: my-policy-name\n location: us-central1\n defaultGatewaySecurityPolicyRule:\n type: gcp:networksecurity:GatewaySecurityPolicyRule\n name: default\n properties:\n name: my-policyrule-name\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 name: default\n properties:\n name: my-gateway1\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 - ${default.id}\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.id}\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n deleteSwgAutogenRouterOnDestroy: true\n options:\n dependson:\n - ${proxyonlysubnet}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Gateway Multiple Swp Same Network\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"my-certificate\",\n location: \"us-south1\",\n selfManaged: {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n pemPrivateKey: std.file({\n input: \"test-fixtures/private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"my-network\",\n routingMode: \"REGIONAL\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"my-subnetwork-name\",\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 name: \"my-proxy-only-subnetwork\",\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(\"default\", {\n name: \"my-policy-name\",\n location: \"us-south1\",\n});\nconst defaultGatewaySecurityPolicyRule = new gcp.networksecurity.GatewaySecurityPolicyRule(\"default\", {\n name: \"my-policyrule-name\",\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(\"default\", {\n name: \"my-gateway1\",\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: [_default.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 name: \"my-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: [_default.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\nimport pulumi_std as std\n\ndefault = gcp.certificatemanager.Certificate(\"default\",\n name=\"my-certificate\",\n location=\"us-south1\",\n self_managed={\n \"pem_certificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n \"pem_private_key\": std.file(input=\"test-fixtures/private-key.pem\").result,\n })\ndefault_network = gcp.compute.Network(\"default\",\n name=\"my-network\",\n routing_mode=\"REGIONAL\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"my-subnetwork-name\",\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 name=\"my-proxy-only-subnetwork\",\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(\"default\",\n name=\"my-policy-name\",\n location=\"us-south1\")\ndefault_gateway_security_policy_rule = gcp.networksecurity.GatewaySecurityPolicyRule(\"default\",\n name=\"my-policyrule-name\",\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(\"default\",\n name=\"my-gateway1\",\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.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 name=\"my-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.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.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"my-certificate\",\n Location = \"us-south1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n PemPrivateKey = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n RoutingMode = \"REGIONAL\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"my-subnetwork-name\",\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 Name = \"my-proxy-only-subnetwork\",\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(\"default\", new()\n {\n Name = \"my-policy-name\",\n Location = \"us-south1\",\n });\n\n var defaultGatewaySecurityPolicyRule = new Gcp.NetworkSecurity.GatewaySecurityPolicyRule(\"default\", new()\n {\n Name = \"my-policyrule-name\",\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(\"default\", new()\n {\n Name = \"my-gateway1\",\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 @default.Id,\n },\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Id,\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n DeleteSwgAutogenRouterOnDestroy = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxyonlysubnet,\n },\n });\n\n var gateway2 = new Gcp.NetworkServices.Gateway(\"gateway2\", new()\n {\n Name = \"my-gateway2\",\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 @default.Id,\n },\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Id,\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n DeleteSwgAutogenRouterOnDestroy = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxyonlysubnet,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/private-key.pem\",\n\t\t}, nil)\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\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\tPemPrivateKey: pulumi.String(invokeFile1.Result),\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnetwork-name\"),\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\tName: pulumi.String(\"my-proxy-only-subnetwork\"),\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, \"default\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy-name\"),\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, \"default\", \u0026networksecurity.GatewaySecurityPolicyRuleArgs{\n\t\t\tName: pulumi.String(\"my-policyrule-name\"),\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, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-gateway1\"),\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\t_default.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\tName: pulumi.String(\"my-gateway2\"),\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\t_default.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 default_ = new Certificate(\"default\", CertificateArgs.builder()\n .name(\"my-certificate\")\n .location(\"us-south1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .pemPrivateKey(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/private-key.pem\")\n .build()).result())\n .build())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"my-network\")\n .routingMode(\"REGIONAL\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnetwork-name\")\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 .name(\"my-proxy-only-subnetwork\")\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 .name(\"my-policy-name\")\n .location(\"us-south1\")\n .build());\n\n var defaultGatewaySecurityPolicyRule = new GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", GatewaySecurityPolicyRuleArgs.builder()\n .name(\"my-policyrule-name\")\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 .name(\"my-gateway1\")\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(default_.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 .name(\"my-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(default_.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 default:\n type: gcp:certificatemanager:Certificate\n properties:\n name: my-certificate\n location: us-south1\n selfManaged:\n pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n pemPrivateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/private-key.pem\n Return: result\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: my-network\n routingMode: REGIONAL\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: my-subnetwork-name\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 name: my-proxy-only-subnetwork\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 name: default\n properties:\n name: my-policy-name\n location: us-south1\n defaultGatewaySecurityPolicyRule:\n type: gcp:networksecurity:GatewaySecurityPolicyRule\n name: default\n properties:\n name: my-policyrule-name\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 name: default\n properties:\n name: my-gateway1\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 - ${default.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 name: my-gateway2\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 - ${default.id}\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.id}\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n deleteSwgAutogenRouterOnDestroy: true\n options:\n dependson:\n - ${proxyonlysubnet}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGateway can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/gateways/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Gateway can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/gateway:Gateway default projects/{{project}}/locations/{{location}}/gateways/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/gateway:Gateway default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/gateway:Gateway default {{location}}/{{name}}\n```\n\n", "properties": { "addresses": { "type": "array", @@ -221311,7 +221311,7 @@ } }, "gcp:networkservices/grpcRoute:GrpcRoute": { - "description": "## Example Usage\n\n### Network Services Grpc Route Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.GrpcRoute(\"default\", {\n name: \"my-grpc-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n matches: [{\n headers: [{\n key: \"key\",\n value: \"value\",\n }],\n }],\n action: {\n retryPolicy: {\n retryConditions: [\"cancelled\"],\n numRetries: 1,\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.GrpcRoute(\"default\",\n name=\"my-grpc-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"matches\": [{\n \"headers\": [{\n \"key\": \"key\",\n \"value\": \"value\",\n }],\n }],\n \"action\": {\n \"retryPolicy\": {\n \"retryConditions\": [\"cancelled\"],\n \"numRetries\": 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 @default = new Gcp.NetworkServices.GrpcRoute(\"default\", new()\n {\n Name = \"my-grpc-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.GrpcRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.GrpcRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.GrpcRouteRuleMatchHeaderArgs\n {\n Key = \"key\",\n Value = \"value\",\n },\n },\n },\n },\n Action = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionArgs\n {\n RetryPolicy = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"cancelled\",\n },\n NumRetries = 1,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewGrpcRoute(ctx, \"default\", \u0026networkservices.GrpcRouteArgs{\n\t\t\tName: pulumi.String(\"my-grpc-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.GrpcRouteRuleArray{\n\t\t\t\t\u0026networkservices.GrpcRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.GrpcRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.GrpcRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.GrpcRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.GrpcRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tKey: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\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\tAction: \u0026networkservices.GrpcRouteRuleActionArgs{\n\t\t\t\t\t\tRetryPolicy: \u0026networkservices.GrpcRouteRuleActionRetryPolicyArgs{\n\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"cancelled\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNumRetries: pulumi.Int(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.networkservices.GrpcRoute;\nimport com.pulumi.gcp.networkservices.GrpcRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionRetryPolicyArgs;\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 GrpcRoute(\"default\", GrpcRouteArgs.builder()\n .name(\"my-grpc-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(GrpcRouteRuleArgs.builder()\n .matches(GrpcRouteRuleMatchArgs.builder()\n .headers(GrpcRouteRuleMatchHeaderArgs.builder()\n .key(\"key\")\n .value(\"value\")\n .build())\n .build())\n .action(GrpcRouteRuleActionArgs.builder()\n .retryPolicy(GrpcRouteRuleActionRetryPolicyArgs.builder()\n .retryConditions(\"cancelled\")\n .numRetries(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:GrpcRoute\n properties:\n name: my-grpc-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - matches:\n - headers:\n - key: key\n value: value\n action:\n retryPolicy:\n retryConditions:\n - cancelled\n numRetries: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Grpc Route Matches And Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.GrpcRoute(\"default\", {\n name: \"my-grpc-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n matches: [\n {\n headers: [{\n key: \"key\",\n value: \"value\",\n }],\n },\n {\n headers: [{\n key: \"key\",\n value: \"value\",\n }],\n method: {\n grpcService: \"foo\",\n grpcMethod: \"bar\",\n caseSensitive: true,\n },\n },\n ],\n action: {\n faultInjectionPolicy: {\n delay: {\n fixedDelay: \"1s\",\n percentage: 1,\n },\n abort: {\n httpStatus: 500,\n percentage: 1,\n },\n },\n retryPolicy: {\n retryConditions: [\"cancelled\"],\n numRetries: 1,\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.GrpcRoute(\"default\",\n name=\"my-grpc-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"matches\": [\n {\n \"headers\": [{\n \"key\": \"key\",\n \"value\": \"value\",\n }],\n },\n {\n \"headers\": [{\n \"key\": \"key\",\n \"value\": \"value\",\n }],\n \"method\": {\n \"grpcService\": \"foo\",\n \"grpcMethod\": \"bar\",\n \"caseSensitive\": True,\n },\n },\n ],\n \"action\": {\n \"faultInjectionPolicy\": {\n \"delay\": {\n \"fixedDelay\": \"1s\",\n \"percentage\": 1,\n },\n \"abort\": {\n \"httpStatus\": 500,\n \"percentage\": 1,\n },\n },\n \"retryPolicy\": {\n \"retryConditions\": [\"cancelled\"],\n \"numRetries\": 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 @default = new Gcp.NetworkServices.GrpcRoute(\"default\", new()\n {\n Name = \"my-grpc-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.GrpcRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.GrpcRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.GrpcRouteRuleMatchHeaderArgs\n {\n Key = \"key\",\n Value = \"value\",\n },\n },\n },\n new Gcp.NetworkServices.Inputs.GrpcRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.GrpcRouteRuleMatchHeaderArgs\n {\n Key = \"key\",\n Value = \"value\",\n },\n },\n Method = new Gcp.NetworkServices.Inputs.GrpcRouteRuleMatchMethodArgs\n {\n GrpcService = \"foo\",\n GrpcMethod = \"bar\",\n CaseSensitive = true,\n },\n },\n },\n Action = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionArgs\n {\n FaultInjectionPolicy = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionFaultInjectionPolicyArgs\n {\n Delay = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = \"1s\",\n Percentage = 1,\n },\n Abort = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 500,\n Percentage = 1,\n },\n },\n RetryPolicy = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"cancelled\",\n },\n NumRetries = 1,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewGrpcRoute(ctx, \"default\", \u0026networkservices.GrpcRouteArgs{\n\t\t\tName: pulumi.String(\"my-grpc-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.GrpcRouteRuleArray{\n\t\t\t\t\u0026networkservices.GrpcRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.GrpcRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.GrpcRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.GrpcRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.GrpcRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tKey: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026networkservices.GrpcRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.GrpcRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.GrpcRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tKey: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMethod: \u0026networkservices.GrpcRouteRuleMatchMethodArgs{\n\t\t\t\t\t\t\t\tGrpcService: pulumi.String(\"foo\"),\n\t\t\t\t\t\t\t\tGrpcMethod: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\tCaseSensitive: pulumi.Bool(true),\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\tAction: \u0026networkservices.GrpcRouteRuleActionArgs{\n\t\t\t\t\t\tFaultInjectionPolicy: \u0026networkservices.GrpcRouteRuleActionFaultInjectionPolicyArgs{\n\t\t\t\t\t\t\tDelay: \u0026networkservices.GrpcRouteRuleActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\t\t\tFixedDelay: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAbort: \u0026networkservices.GrpcRouteRuleActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\t\t\tHttpStatus: pulumi.Int(500),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRetryPolicy: \u0026networkservices.GrpcRouteRuleActionRetryPolicyArgs{\n\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"cancelled\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNumRetries: pulumi.Int(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.networkservices.GrpcRoute;\nimport com.pulumi.gcp.networkservices.GrpcRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionFaultInjectionPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionFaultInjectionPolicyDelayArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionFaultInjectionPolicyAbortArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionRetryPolicyArgs;\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 GrpcRoute(\"default\", GrpcRouteArgs.builder()\n .name(\"my-grpc-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(GrpcRouteRuleArgs.builder()\n .matches( \n GrpcRouteRuleMatchArgs.builder()\n .headers(GrpcRouteRuleMatchHeaderArgs.builder()\n .key(\"key\")\n .value(\"value\")\n .build())\n .build(),\n GrpcRouteRuleMatchArgs.builder()\n .headers(GrpcRouteRuleMatchHeaderArgs.builder()\n .key(\"key\")\n .value(\"value\")\n .build())\n .method(GrpcRouteRuleMatchMethodArgs.builder()\n .grpcService(\"foo\")\n .grpcMethod(\"bar\")\n .caseSensitive(true)\n .build())\n .build())\n .action(GrpcRouteRuleActionArgs.builder()\n .faultInjectionPolicy(GrpcRouteRuleActionFaultInjectionPolicyArgs.builder()\n .delay(GrpcRouteRuleActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(\"1s\")\n .percentage(1)\n .build())\n .abort(GrpcRouteRuleActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(500)\n .percentage(1)\n .build())\n .build())\n .retryPolicy(GrpcRouteRuleActionRetryPolicyArgs.builder()\n .retryConditions(\"cancelled\")\n .numRetries(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:GrpcRoute\n properties:\n name: my-grpc-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - matches:\n - headers:\n - key: key\n value: value\n - headers:\n - key: key\n value: value\n method:\n grpcService: foo\n grpcMethod: bar\n caseSensitive: true\n action:\n faultInjectionPolicy:\n delay:\n fixedDelay: 1s\n percentage: 1\n abort:\n httpStatus: 500\n percentage: 1\n retryPolicy:\n retryConditions:\n - cancelled\n numRetries: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Grpc Route Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.GrpcRoute(\"default\", {\n name: \"my-grpc-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n action: {\n faultInjectionPolicy: {\n delay: {\n fixedDelay: \"1s\",\n percentage: 1,\n },\n abort: {\n httpStatus: 500,\n percentage: 1,\n },\n },\n retryPolicy: {\n retryConditions: [\"cancelled\"],\n numRetries: 1,\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.GrpcRoute(\"default\",\n name=\"my-grpc-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"action\": {\n \"faultInjectionPolicy\": {\n \"delay\": {\n \"fixedDelay\": \"1s\",\n \"percentage\": 1,\n },\n \"abort\": {\n \"httpStatus\": 500,\n \"percentage\": 1,\n },\n },\n \"retryPolicy\": {\n \"retryConditions\": [\"cancelled\"],\n \"numRetries\": 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 @default = new Gcp.NetworkServices.GrpcRoute(\"default\", new()\n {\n Name = \"my-grpc-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.GrpcRouteRuleArgs\n {\n Action = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionArgs\n {\n FaultInjectionPolicy = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionFaultInjectionPolicyArgs\n {\n Delay = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = \"1s\",\n Percentage = 1,\n },\n Abort = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 500,\n Percentage = 1,\n },\n },\n RetryPolicy = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"cancelled\",\n },\n NumRetries = 1,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewGrpcRoute(ctx, \"default\", \u0026networkservices.GrpcRouteArgs{\n\t\t\tName: pulumi.String(\"my-grpc-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.GrpcRouteRuleArray{\n\t\t\t\t\u0026networkservices.GrpcRouteRuleArgs{\n\t\t\t\t\tAction: \u0026networkservices.GrpcRouteRuleActionArgs{\n\t\t\t\t\t\tFaultInjectionPolicy: \u0026networkservices.GrpcRouteRuleActionFaultInjectionPolicyArgs{\n\t\t\t\t\t\t\tDelay: \u0026networkservices.GrpcRouteRuleActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\t\t\tFixedDelay: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAbort: \u0026networkservices.GrpcRouteRuleActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\t\t\tHttpStatus: pulumi.Int(500),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRetryPolicy: \u0026networkservices.GrpcRouteRuleActionRetryPolicyArgs{\n\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"cancelled\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNumRetries: pulumi.Int(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.networkservices.GrpcRoute;\nimport com.pulumi.gcp.networkservices.GrpcRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionFaultInjectionPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionFaultInjectionPolicyDelayArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionFaultInjectionPolicyAbortArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionRetryPolicyArgs;\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 GrpcRoute(\"default\", GrpcRouteArgs.builder()\n .name(\"my-grpc-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(GrpcRouteRuleArgs.builder()\n .action(GrpcRouteRuleActionArgs.builder()\n .faultInjectionPolicy(GrpcRouteRuleActionFaultInjectionPolicyArgs.builder()\n .delay(GrpcRouteRuleActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(\"1s\")\n .percentage(1)\n .build())\n .abort(GrpcRouteRuleActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(500)\n .percentage(1)\n .build())\n .build())\n .retryPolicy(GrpcRouteRuleActionRetryPolicyArgs.builder()\n .retryConditions(\"cancelled\")\n .numRetries(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:GrpcRoute\n properties:\n name: my-grpc-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - action:\n faultInjectionPolicy:\n delay:\n fixedDelay: 1s\n percentage: 1\n abort:\n httpStatus: 500\n percentage: 1\n retryPolicy:\n retryConditions:\n - cancelled\n numRetries: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGrpcRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/grpcRoutes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, GrpcRoute can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/grpcRoute:GrpcRoute default projects/{{project}}/locations/global/grpcRoutes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/grpcRoute:GrpcRoute default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/grpcRoute:GrpcRoute default {{name}}\n```\n\n", + "description": "## Example Usage\n\n### Network Services Grpc Route Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.GrpcRoute(\"default\", {\n name: \"my-grpc-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n matches: [{\n headers: [{\n key: \"key\",\n value: \"value\",\n }],\n }],\n action: {\n retryPolicy: {\n retryConditions: [\"cancelled\"],\n numRetries: 1,\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.GrpcRoute(\"default\",\n name=\"my-grpc-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"matches\": [{\n \"headers\": [{\n \"key\": \"key\",\n \"value\": \"value\",\n }],\n }],\n \"action\": {\n \"retry_policy\": {\n \"retry_conditions\": [\"cancelled\"],\n \"num_retries\": 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 @default = new Gcp.NetworkServices.GrpcRoute(\"default\", new()\n {\n Name = \"my-grpc-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.GrpcRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.GrpcRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.GrpcRouteRuleMatchHeaderArgs\n {\n Key = \"key\",\n Value = \"value\",\n },\n },\n },\n },\n Action = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionArgs\n {\n RetryPolicy = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"cancelled\",\n },\n NumRetries = 1,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewGrpcRoute(ctx, \"default\", \u0026networkservices.GrpcRouteArgs{\n\t\t\tName: pulumi.String(\"my-grpc-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.GrpcRouteRuleArray{\n\t\t\t\t\u0026networkservices.GrpcRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.GrpcRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.GrpcRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.GrpcRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.GrpcRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tKey: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\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\tAction: \u0026networkservices.GrpcRouteRuleActionArgs{\n\t\t\t\t\t\tRetryPolicy: \u0026networkservices.GrpcRouteRuleActionRetryPolicyArgs{\n\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"cancelled\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNumRetries: pulumi.Int(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.networkservices.GrpcRoute;\nimport com.pulumi.gcp.networkservices.GrpcRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionRetryPolicyArgs;\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 GrpcRoute(\"default\", GrpcRouteArgs.builder()\n .name(\"my-grpc-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(GrpcRouteRuleArgs.builder()\n .matches(GrpcRouteRuleMatchArgs.builder()\n .headers(GrpcRouteRuleMatchHeaderArgs.builder()\n .key(\"key\")\n .value(\"value\")\n .build())\n .build())\n .action(GrpcRouteRuleActionArgs.builder()\n .retryPolicy(GrpcRouteRuleActionRetryPolicyArgs.builder()\n .retryConditions(\"cancelled\")\n .numRetries(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:GrpcRoute\n properties:\n name: my-grpc-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - matches:\n - headers:\n - key: key\n value: value\n action:\n retryPolicy:\n retryConditions:\n - cancelled\n numRetries: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Grpc Route Matches And Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.GrpcRoute(\"default\", {\n name: \"my-grpc-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n matches: [\n {\n headers: [{\n key: \"key\",\n value: \"value\",\n }],\n },\n {\n headers: [{\n key: \"key\",\n value: \"value\",\n }],\n method: {\n grpcService: \"foo\",\n grpcMethod: \"bar\",\n caseSensitive: true,\n },\n },\n ],\n action: {\n faultInjectionPolicy: {\n delay: {\n fixedDelay: \"1s\",\n percentage: 1,\n },\n abort: {\n httpStatus: 500,\n percentage: 1,\n },\n },\n retryPolicy: {\n retryConditions: [\"cancelled\"],\n numRetries: 1,\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.GrpcRoute(\"default\",\n name=\"my-grpc-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"matches\": [\n {\n \"headers\": [{\n \"key\": \"key\",\n \"value\": \"value\",\n }],\n },\n {\n \"headers\": [{\n \"key\": \"key\",\n \"value\": \"value\",\n }],\n \"method\": {\n \"grpc_service\": \"foo\",\n \"grpc_method\": \"bar\",\n \"case_sensitive\": True,\n },\n },\n ],\n \"action\": {\n \"fault_injection_policy\": {\n \"delay\": {\n \"fixed_delay\": \"1s\",\n \"percentage\": 1,\n },\n \"abort\": {\n \"http_status\": 500,\n \"percentage\": 1,\n },\n },\n \"retry_policy\": {\n \"retry_conditions\": [\"cancelled\"],\n \"num_retries\": 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 @default = new Gcp.NetworkServices.GrpcRoute(\"default\", new()\n {\n Name = \"my-grpc-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.GrpcRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.GrpcRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.GrpcRouteRuleMatchHeaderArgs\n {\n Key = \"key\",\n Value = \"value\",\n },\n },\n },\n new Gcp.NetworkServices.Inputs.GrpcRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.GrpcRouteRuleMatchHeaderArgs\n {\n Key = \"key\",\n Value = \"value\",\n },\n },\n Method = new Gcp.NetworkServices.Inputs.GrpcRouteRuleMatchMethodArgs\n {\n GrpcService = \"foo\",\n GrpcMethod = \"bar\",\n CaseSensitive = true,\n },\n },\n },\n Action = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionArgs\n {\n FaultInjectionPolicy = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionFaultInjectionPolicyArgs\n {\n Delay = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = \"1s\",\n Percentage = 1,\n },\n Abort = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 500,\n Percentage = 1,\n },\n },\n RetryPolicy = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"cancelled\",\n },\n NumRetries = 1,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewGrpcRoute(ctx, \"default\", \u0026networkservices.GrpcRouteArgs{\n\t\t\tName: pulumi.String(\"my-grpc-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.GrpcRouteRuleArray{\n\t\t\t\t\u0026networkservices.GrpcRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.GrpcRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.GrpcRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.GrpcRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.GrpcRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tKey: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026networkservices.GrpcRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.GrpcRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.GrpcRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tKey: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMethod: \u0026networkservices.GrpcRouteRuleMatchMethodArgs{\n\t\t\t\t\t\t\t\tGrpcService: pulumi.String(\"foo\"),\n\t\t\t\t\t\t\t\tGrpcMethod: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\tCaseSensitive: pulumi.Bool(true),\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\tAction: \u0026networkservices.GrpcRouteRuleActionArgs{\n\t\t\t\t\t\tFaultInjectionPolicy: \u0026networkservices.GrpcRouteRuleActionFaultInjectionPolicyArgs{\n\t\t\t\t\t\t\tDelay: \u0026networkservices.GrpcRouteRuleActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\t\t\tFixedDelay: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAbort: \u0026networkservices.GrpcRouteRuleActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\t\t\tHttpStatus: pulumi.Int(500),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRetryPolicy: \u0026networkservices.GrpcRouteRuleActionRetryPolicyArgs{\n\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"cancelled\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNumRetries: pulumi.Int(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.networkservices.GrpcRoute;\nimport com.pulumi.gcp.networkservices.GrpcRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionFaultInjectionPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionFaultInjectionPolicyDelayArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionFaultInjectionPolicyAbortArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionRetryPolicyArgs;\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 GrpcRoute(\"default\", GrpcRouteArgs.builder()\n .name(\"my-grpc-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(GrpcRouteRuleArgs.builder()\n .matches( \n GrpcRouteRuleMatchArgs.builder()\n .headers(GrpcRouteRuleMatchHeaderArgs.builder()\n .key(\"key\")\n .value(\"value\")\n .build())\n .build(),\n GrpcRouteRuleMatchArgs.builder()\n .headers(GrpcRouteRuleMatchHeaderArgs.builder()\n .key(\"key\")\n .value(\"value\")\n .build())\n .method(GrpcRouteRuleMatchMethodArgs.builder()\n .grpcService(\"foo\")\n .grpcMethod(\"bar\")\n .caseSensitive(true)\n .build())\n .build())\n .action(GrpcRouteRuleActionArgs.builder()\n .faultInjectionPolicy(GrpcRouteRuleActionFaultInjectionPolicyArgs.builder()\n .delay(GrpcRouteRuleActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(\"1s\")\n .percentage(1)\n .build())\n .abort(GrpcRouteRuleActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(500)\n .percentage(1)\n .build())\n .build())\n .retryPolicy(GrpcRouteRuleActionRetryPolicyArgs.builder()\n .retryConditions(\"cancelled\")\n .numRetries(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:GrpcRoute\n properties:\n name: my-grpc-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - matches:\n - headers:\n - key: key\n value: value\n - headers:\n - key: key\n value: value\n method:\n grpcService: foo\n grpcMethod: bar\n caseSensitive: true\n action:\n faultInjectionPolicy:\n delay:\n fixedDelay: 1s\n percentage: 1\n abort:\n httpStatus: 500\n percentage: 1\n retryPolicy:\n retryConditions:\n - cancelled\n numRetries: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Grpc Route Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.GrpcRoute(\"default\", {\n name: \"my-grpc-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n action: {\n faultInjectionPolicy: {\n delay: {\n fixedDelay: \"1s\",\n percentage: 1,\n },\n abort: {\n httpStatus: 500,\n percentage: 1,\n },\n },\n retryPolicy: {\n retryConditions: [\"cancelled\"],\n numRetries: 1,\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.GrpcRoute(\"default\",\n name=\"my-grpc-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"action\": {\n \"fault_injection_policy\": {\n \"delay\": {\n \"fixed_delay\": \"1s\",\n \"percentage\": 1,\n },\n \"abort\": {\n \"http_status\": 500,\n \"percentage\": 1,\n },\n },\n \"retry_policy\": {\n \"retry_conditions\": [\"cancelled\"],\n \"num_retries\": 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 @default = new Gcp.NetworkServices.GrpcRoute(\"default\", new()\n {\n Name = \"my-grpc-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.GrpcRouteRuleArgs\n {\n Action = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionArgs\n {\n FaultInjectionPolicy = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionFaultInjectionPolicyArgs\n {\n Delay = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = \"1s\",\n Percentage = 1,\n },\n Abort = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 500,\n Percentage = 1,\n },\n },\n RetryPolicy = new Gcp.NetworkServices.Inputs.GrpcRouteRuleActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"cancelled\",\n },\n NumRetries = 1,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewGrpcRoute(ctx, \"default\", \u0026networkservices.GrpcRouteArgs{\n\t\t\tName: pulumi.String(\"my-grpc-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.GrpcRouteRuleArray{\n\t\t\t\t\u0026networkservices.GrpcRouteRuleArgs{\n\t\t\t\t\tAction: \u0026networkservices.GrpcRouteRuleActionArgs{\n\t\t\t\t\t\tFaultInjectionPolicy: \u0026networkservices.GrpcRouteRuleActionFaultInjectionPolicyArgs{\n\t\t\t\t\t\t\tDelay: \u0026networkservices.GrpcRouteRuleActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\t\t\tFixedDelay: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAbort: \u0026networkservices.GrpcRouteRuleActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\t\t\tHttpStatus: pulumi.Int(500),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRetryPolicy: \u0026networkservices.GrpcRouteRuleActionRetryPolicyArgs{\n\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"cancelled\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNumRetries: pulumi.Int(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.networkservices.GrpcRoute;\nimport com.pulumi.gcp.networkservices.GrpcRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionFaultInjectionPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionFaultInjectionPolicyDelayArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionFaultInjectionPolicyAbortArgs;\nimport com.pulumi.gcp.networkservices.inputs.GrpcRouteRuleActionRetryPolicyArgs;\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 GrpcRoute(\"default\", GrpcRouteArgs.builder()\n .name(\"my-grpc-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(GrpcRouteRuleArgs.builder()\n .action(GrpcRouteRuleActionArgs.builder()\n .faultInjectionPolicy(GrpcRouteRuleActionFaultInjectionPolicyArgs.builder()\n .delay(GrpcRouteRuleActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(\"1s\")\n .percentage(1)\n .build())\n .abort(GrpcRouteRuleActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(500)\n .percentage(1)\n .build())\n .build())\n .retryPolicy(GrpcRouteRuleActionRetryPolicyArgs.builder()\n .retryConditions(\"cancelled\")\n .numRetries(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:GrpcRoute\n properties:\n name: my-grpc-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - action:\n faultInjectionPolicy:\n delay:\n fixedDelay: 1s\n percentage: 1\n abort:\n httpStatus: 500\n percentage: 1\n retryPolicy:\n retryConditions:\n - cancelled\n numRetries: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGrpcRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/grpcRoutes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, GrpcRoute can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/grpcRoute:GrpcRoute default projects/{{project}}/locations/global/grpcRoutes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/grpcRoute:GrpcRoute default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/grpcRoute:GrpcRoute default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -221537,7 +221537,7 @@ } }, "gcp:networkservices/httpRoute:HttpRoute": { - "description": "## Example Usage\n\n### Network Services Http Route Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n matches: [{\n queryParameters: [{\n queryParameter: \"key\",\n exactMatch: \"value\",\n }],\n fullPathMatch: \"example\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"matches\": [{\n \"queryParameters\": [{\n \"queryParameter\": \"key\",\n \"exactMatch\": \"value\",\n }],\n \"fullPathMatch\": \"example\",\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 @default = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n ExactMatch = \"value\",\n },\n },\n FullPathMatch = \"example\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.HttpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"example\"),\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.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\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 HttpRoute(\"default\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(HttpRouteRuleArgs.builder()\n .matches(HttpRouteRuleMatchArgs.builder()\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .exactMatch(\"value\")\n .build())\n .fullPathMatch(\"example\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:HttpRoute\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - matches:\n - queryParameters:\n - queryParameter: key\n exactMatch: value\n fullPathMatch: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Http Route Matches And Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n matches: [\n {\n headers: [{\n header: \"header\",\n invertMatch: false,\n regexMatch: \"header-value\",\n }],\n queryParameters: [{\n queryParameter: \"key\",\n exactMatch: \"value\",\n }],\n prefixMatch: \"example\",\n ignoreCase: false,\n },\n {\n headers: [{\n header: \"header\",\n invertMatch: false,\n presentMatch: true,\n }],\n queryParameters: [{\n queryParameter: \"key\",\n regexMatch: \"value\",\n }],\n regexMatch: \"example\",\n ignoreCase: false,\n },\n {\n headers: [{\n header: \"header\",\n invertMatch: false,\n presentMatch: true,\n }],\n queryParameters: [{\n queryParameter: \"key\",\n presentMatch: true,\n }],\n fullPathMatch: \"example\",\n ignoreCase: false,\n },\n ],\n action: {\n redirect: {\n hostRedirect: \"new-host\",\n pathRedirect: \"new-path\",\n prefixRewrite: \"new-prefix\",\n httpsRedirect: true,\n stripQuery: true,\n portRedirect: 8081,\n },\n urlRewrite: {\n pathPrefixRewrite: \"new-prefix\",\n hostRewrite: \"new-host\",\n },\n retryPolicy: {\n retryConditions: [\"server_error\"],\n numRetries: 1,\n perTryTimeout: \"1s\",\n },\n requestMirrorPolicy: {\n destination: {\n serviceName: \"new\",\n weight: 1,\n },\n },\n corsPolicy: {\n allowOrigins: [\"example\"],\n allowMethods: [\n \"GET\",\n \"PUT\",\n ],\n allowHeaders: [\n \"version\",\n \"type\",\n ],\n exposeHeaders: [\n \"version\",\n \"type\",\n ],\n maxAge: \"1s\",\n allowCredentials: true,\n disabled: false,\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"matches\": [\n {\n \"headers\": [{\n \"header\": \"header\",\n \"invertMatch\": False,\n \"regexMatch\": \"header-value\",\n }],\n \"queryParameters\": [{\n \"queryParameter\": \"key\",\n \"exactMatch\": \"value\",\n }],\n \"prefixMatch\": \"example\",\n \"ignoreCase\": False,\n },\n {\n \"headers\": [{\n \"header\": \"header\",\n \"invertMatch\": False,\n \"presentMatch\": True,\n }],\n \"queryParameters\": [{\n \"queryParameter\": \"key\",\n \"regexMatch\": \"value\",\n }],\n \"regexMatch\": \"example\",\n \"ignoreCase\": False,\n },\n {\n \"headers\": [{\n \"header\": \"header\",\n \"invertMatch\": False,\n \"presentMatch\": True,\n }],\n \"queryParameters\": [{\n \"queryParameter\": \"key\",\n \"presentMatch\": True,\n }],\n \"fullPathMatch\": \"example\",\n \"ignoreCase\": False,\n },\n ],\n \"action\": {\n \"redirect\": {\n \"hostRedirect\": \"new-host\",\n \"pathRedirect\": \"new-path\",\n \"prefixRewrite\": \"new-prefix\",\n \"httpsRedirect\": True,\n \"stripQuery\": True,\n \"portRedirect\": 8081,\n },\n \"urlRewrite\": {\n \"pathPrefixRewrite\": \"new-prefix\",\n \"hostRewrite\": \"new-host\",\n },\n \"retryPolicy\": {\n \"retryConditions\": [\"server_error\"],\n \"numRetries\": 1,\n \"perTryTimeout\": \"1s\",\n },\n \"requestMirrorPolicy\": {\n \"destination\": {\n \"serviceName\": \"new\",\n \"weight\": 1,\n },\n },\n \"corsPolicy\": {\n \"allowOrigins\": [\"example\"],\n \"allowMethods\": [\n \"GET\",\n \"PUT\",\n ],\n \"allowHeaders\": [\n \"version\",\n \"type\",\n ],\n \"exposeHeaders\": [\n \"version\",\n \"type\",\n ],\n \"maxAge\": \"1s\",\n \"allowCredentials\": True,\n \"disabled\": False,\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 @default = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchHeaderArgs\n {\n Header = \"header\",\n InvertMatch = false,\n RegexMatch = \"header-value\",\n },\n },\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n ExactMatch = \"value\",\n },\n },\n PrefixMatch = \"example\",\n IgnoreCase = false,\n },\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchHeaderArgs\n {\n Header = \"header\",\n InvertMatch = false,\n PresentMatch = true,\n },\n },\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n RegexMatch = \"value\",\n },\n },\n RegexMatch = \"example\",\n IgnoreCase = false,\n },\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchHeaderArgs\n {\n Header = \"header\",\n InvertMatch = false,\n PresentMatch = true,\n },\n },\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n PresentMatch = true,\n },\n },\n FullPathMatch = \"example\",\n IgnoreCase = false,\n },\n },\n Action = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionArgs\n {\n Redirect = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRedirectArgs\n {\n HostRedirect = \"new-host\",\n PathRedirect = \"new-path\",\n PrefixRewrite = \"new-prefix\",\n HttpsRedirect = true,\n StripQuery = true,\n PortRedirect = 8081,\n },\n UrlRewrite = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionUrlRewriteArgs\n {\n PathPrefixRewrite = \"new-prefix\",\n HostRewrite = \"new-host\",\n },\n RetryPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"server_error\",\n },\n NumRetries = 1,\n PerTryTimeout = \"1s\",\n },\n RequestMirrorPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyArgs\n {\n Destination = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs\n {\n ServiceName = \"new\",\n Weight = 1,\n },\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionCorsPolicyArgs\n {\n AllowOrigins = new[]\n {\n \"example\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n \"PUT\",\n },\n AllowHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n ExposeHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n MaxAge = \"1s\",\n AllowCredentials = true,\n Disabled = false,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.HttpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.HttpRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tHeader: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"header-value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.HttpRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tHeader: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.HttpRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tHeader: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.HttpRouteRuleActionArgs{\n\t\t\t\t\t\tRedirect: \u0026networkservices.HttpRouteRuleActionRedirectArgs{\n\t\t\t\t\t\t\tHostRedirect: pulumi.String(\"new-host\"),\n\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"new-path\"),\n\t\t\t\t\t\t\tPrefixRewrite: pulumi.String(\"new-prefix\"),\n\t\t\t\t\t\t\tHttpsRedirect: pulumi.Bool(true),\n\t\t\t\t\t\t\tStripQuery: pulumi.Bool(true),\n\t\t\t\t\t\t\tPortRedirect: pulumi.Int(8081),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tUrlRewrite: \u0026networkservices.HttpRouteRuleActionUrlRewriteArgs{\n\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"new-prefix\"),\n\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"new-host\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRetryPolicy: \u0026networkservices.HttpRouteRuleActionRetryPolicyArgs{\n\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"server_error\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNumRetries: pulumi.Int(1),\n\t\t\t\t\t\t\tPerTryTimeout: pulumi.String(\"1s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequestMirrorPolicy: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\tDestination: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"new\"),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCorsPolicy: \u0026networkservices.HttpRouteRuleActionCorsPolicyArgs{\n\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"PUT\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMaxAge: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\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.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRedirectArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionUrlRewriteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRetryPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionCorsPolicyArgs;\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 HttpRoute(\"default\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(HttpRouteRuleArgs.builder()\n .matches( \n HttpRouteRuleMatchArgs.builder()\n .headers(HttpRouteRuleMatchHeaderArgs.builder()\n .header(\"header\")\n .invertMatch(false)\n .regexMatch(\"header-value\")\n .build())\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .exactMatch(\"value\")\n .build())\n .prefixMatch(\"example\")\n .ignoreCase(false)\n .build(),\n HttpRouteRuleMatchArgs.builder()\n .headers(HttpRouteRuleMatchHeaderArgs.builder()\n .header(\"header\")\n .invertMatch(false)\n .presentMatch(true)\n .build())\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .regexMatch(\"value\")\n .build())\n .regexMatch(\"example\")\n .ignoreCase(false)\n .build(),\n HttpRouteRuleMatchArgs.builder()\n .headers(HttpRouteRuleMatchHeaderArgs.builder()\n .header(\"header\")\n .invertMatch(false)\n .presentMatch(true)\n .build())\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .presentMatch(true)\n .build())\n .fullPathMatch(\"example\")\n .ignoreCase(false)\n .build())\n .action(HttpRouteRuleActionArgs.builder()\n .redirect(HttpRouteRuleActionRedirectArgs.builder()\n .hostRedirect(\"new-host\")\n .pathRedirect(\"new-path\")\n .prefixRewrite(\"new-prefix\")\n .httpsRedirect(true)\n .stripQuery(true)\n .portRedirect(8081)\n .build())\n .urlRewrite(HttpRouteRuleActionUrlRewriteArgs.builder()\n .pathPrefixRewrite(\"new-prefix\")\n .hostRewrite(\"new-host\")\n .build())\n .retryPolicy(HttpRouteRuleActionRetryPolicyArgs.builder()\n .retryConditions(\"server_error\")\n .numRetries(1)\n .perTryTimeout(\"1s\")\n .build())\n .requestMirrorPolicy(HttpRouteRuleActionRequestMirrorPolicyArgs.builder()\n .destination(HttpRouteRuleActionRequestMirrorPolicyDestinationArgs.builder()\n .serviceName(\"new\")\n .weight(1)\n .build())\n .build())\n .corsPolicy(HttpRouteRuleActionCorsPolicyArgs.builder()\n .allowOrigins(\"example\")\n .allowMethods( \n \"GET\",\n \"PUT\")\n .allowHeaders( \n \"version\",\n \"type\")\n .exposeHeaders( \n \"version\",\n \"type\")\n .maxAge(\"1s\")\n .allowCredentials(true)\n .disabled(false)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:HttpRoute\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - matches:\n - headers:\n - header: header\n invertMatch: false\n regexMatch: header-value\n queryParameters:\n - queryParameter: key\n exactMatch: value\n prefixMatch: example\n ignoreCase: false\n - headers:\n - header: header\n invertMatch: false\n presentMatch: true\n queryParameters:\n - queryParameter: key\n regexMatch: value\n regexMatch: example\n ignoreCase: false\n - headers:\n - header: header\n invertMatch: false\n presentMatch: true\n queryParameters:\n - queryParameter: key\n presentMatch: true\n fullPathMatch: example\n ignoreCase: false\n action:\n redirect:\n hostRedirect: new-host\n pathRedirect: new-path\n prefixRewrite: new-prefix\n httpsRedirect: true\n stripQuery: true\n portRedirect: 8081\n urlRewrite:\n pathPrefixRewrite: new-prefix\n hostRewrite: new-host\n retryPolicy:\n retryConditions:\n - server_error\n numRetries: 1\n perTryTimeout: 1s\n requestMirrorPolicy:\n destination:\n serviceName: new\n weight: 1\n corsPolicy:\n allowOrigins:\n - example\n allowMethods:\n - GET\n - PUT\n allowHeaders:\n - version\n - type\n exposeHeaders:\n - version\n - type\n maxAge: 1s\n allowCredentials: true\n disabled: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Http Route Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n action: {\n faultInjectionPolicy: {\n delay: {\n fixedDelay: \"1s\",\n percentage: 1,\n },\n abort: {\n httpStatus: 500,\n percentage: 1,\n },\n },\n urlRewrite: {\n pathPrefixRewrite: \"new-prefix\",\n hostRewrite: \"new-host\",\n },\n retryPolicy: {\n retryConditions: [\"server_error\"],\n numRetries: 1,\n perTryTimeout: \"1s\",\n },\n requestMirrorPolicy: {\n destination: {\n serviceName: \"new\",\n weight: 1,\n },\n },\n corsPolicy: {\n allowOrigins: [\"example\"],\n allowMethods: [\n \"GET\",\n \"PUT\",\n ],\n allowHeaders: [\n \"version\",\n \"type\",\n ],\n exposeHeaders: [\n \"version\",\n \"type\",\n ],\n maxAge: \"1s\",\n allowCredentials: true,\n disabled: false,\n },\n requestHeaderModifier: {\n set: {\n version: \"1\",\n type: \"json\",\n },\n add: {\n \"minor-version\": \"1\",\n },\n removes: [\"arg\"],\n },\n responseHeaderModifier: {\n set: {\n version: \"1\",\n type: \"json\",\n },\n add: {\n \"minor-version\": \"1\",\n },\n removes: [\"removearg\"],\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"action\": {\n \"faultInjectionPolicy\": {\n \"delay\": {\n \"fixedDelay\": \"1s\",\n \"percentage\": 1,\n },\n \"abort\": {\n \"httpStatus\": 500,\n \"percentage\": 1,\n },\n },\n \"urlRewrite\": {\n \"pathPrefixRewrite\": \"new-prefix\",\n \"hostRewrite\": \"new-host\",\n },\n \"retryPolicy\": {\n \"retryConditions\": [\"server_error\"],\n \"numRetries\": 1,\n \"perTryTimeout\": \"1s\",\n },\n \"requestMirrorPolicy\": {\n \"destination\": {\n \"serviceName\": \"new\",\n \"weight\": 1,\n },\n },\n \"corsPolicy\": {\n \"allowOrigins\": [\"example\"],\n \"allowMethods\": [\n \"GET\",\n \"PUT\",\n ],\n \"allowHeaders\": [\n \"version\",\n \"type\",\n ],\n \"exposeHeaders\": [\n \"version\",\n \"type\",\n ],\n \"maxAge\": \"1s\",\n \"allowCredentials\": True,\n \"disabled\": False,\n },\n \"requestHeaderModifier\": {\n \"set\": {\n \"version\": \"1\",\n \"type\": \"json\",\n },\n \"add\": {\n \"minor-version\": \"1\",\n },\n \"removes\": [\"arg\"],\n },\n \"responseHeaderModifier\": {\n \"set\": {\n \"version\": \"1\",\n \"type\": \"json\",\n },\n \"add\": {\n \"minor-version\": \"1\",\n },\n \"removes\": [\"removearg\"],\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 @default = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Action = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionArgs\n {\n FaultInjectionPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionFaultInjectionPolicyArgs\n {\n Delay = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = \"1s\",\n Percentage = 1,\n },\n Abort = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 500,\n Percentage = 1,\n },\n },\n UrlRewrite = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionUrlRewriteArgs\n {\n PathPrefixRewrite = \"new-prefix\",\n HostRewrite = \"new-host\",\n },\n RetryPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"server_error\",\n },\n NumRetries = 1,\n PerTryTimeout = \"1s\",\n },\n RequestMirrorPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyArgs\n {\n Destination = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs\n {\n ServiceName = \"new\",\n Weight = 1,\n },\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionCorsPolicyArgs\n {\n AllowOrigins = new[]\n {\n \"example\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n \"PUT\",\n },\n AllowHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n ExposeHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n MaxAge = \"1s\",\n AllowCredentials = true,\n Disabled = false,\n },\n RequestHeaderModifier = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestHeaderModifierArgs\n {\n Set = \n {\n { \"version\", \"1\" },\n { \"type\", \"json\" },\n },\n Add = \n {\n { \"minor-version\", \"1\" },\n },\n Removes = new[]\n {\n \"arg\",\n },\n },\n ResponseHeaderModifier = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionResponseHeaderModifierArgs\n {\n Set = \n {\n { \"version\", \"1\" },\n { \"type\", \"json\" },\n },\n Add = \n {\n { \"minor-version\", \"1\" },\n },\n Removes = new[]\n {\n \"removearg\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tAction: \u0026networkservices.HttpRouteRuleActionArgs{\n\t\t\t\t\t\tFaultInjectionPolicy: \u0026networkservices.HttpRouteRuleActionFaultInjectionPolicyArgs{\n\t\t\t\t\t\t\tDelay: \u0026networkservices.HttpRouteRuleActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\t\t\tFixedDelay: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAbort: \u0026networkservices.HttpRouteRuleActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\t\t\tHttpStatus: pulumi.Int(500),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tUrlRewrite: \u0026networkservices.HttpRouteRuleActionUrlRewriteArgs{\n\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"new-prefix\"),\n\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"new-host\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRetryPolicy: \u0026networkservices.HttpRouteRuleActionRetryPolicyArgs{\n\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"server_error\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNumRetries: pulumi.Int(1),\n\t\t\t\t\t\t\tPerTryTimeout: pulumi.String(\"1s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequestMirrorPolicy: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\tDestination: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"new\"),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCorsPolicy: \u0026networkservices.HttpRouteRuleActionCorsPolicyArgs{\n\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"PUT\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMaxAge: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequestHeaderModifier: \u0026networkservices.HttpRouteRuleActionRequestHeaderModifierArgs{\n\t\t\t\t\t\t\tSet: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\"type\": pulumi.String(\"json\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAdd: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"minor-version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"arg\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tResponseHeaderModifier: \u0026networkservices.HttpRouteRuleActionResponseHeaderModifierArgs{\n\t\t\t\t\t\t\tSet: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\"type\": pulumi.String(\"json\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAdd: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"minor-version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"removearg\"),\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.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionFaultInjectionPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionFaultInjectionPolicyDelayArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionFaultInjectionPolicyAbortArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionUrlRewriteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRetryPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionCorsPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestHeaderModifierArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionResponseHeaderModifierArgs;\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 HttpRoute(\"default\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(HttpRouteRuleArgs.builder()\n .action(HttpRouteRuleActionArgs.builder()\n .faultInjectionPolicy(HttpRouteRuleActionFaultInjectionPolicyArgs.builder()\n .delay(HttpRouteRuleActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(\"1s\")\n .percentage(1)\n .build())\n .abort(HttpRouteRuleActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(500)\n .percentage(1)\n .build())\n .build())\n .urlRewrite(HttpRouteRuleActionUrlRewriteArgs.builder()\n .pathPrefixRewrite(\"new-prefix\")\n .hostRewrite(\"new-host\")\n .build())\n .retryPolicy(HttpRouteRuleActionRetryPolicyArgs.builder()\n .retryConditions(\"server_error\")\n .numRetries(1)\n .perTryTimeout(\"1s\")\n .build())\n .requestMirrorPolicy(HttpRouteRuleActionRequestMirrorPolicyArgs.builder()\n .destination(HttpRouteRuleActionRequestMirrorPolicyDestinationArgs.builder()\n .serviceName(\"new\")\n .weight(1)\n .build())\n .build())\n .corsPolicy(HttpRouteRuleActionCorsPolicyArgs.builder()\n .allowOrigins(\"example\")\n .allowMethods( \n \"GET\",\n \"PUT\")\n .allowHeaders( \n \"version\",\n \"type\")\n .exposeHeaders( \n \"version\",\n \"type\")\n .maxAge(\"1s\")\n .allowCredentials(true)\n .disabled(false)\n .build())\n .requestHeaderModifier(HttpRouteRuleActionRequestHeaderModifierArgs.builder()\n .set(Map.ofEntries(\n Map.entry(\"version\", \"1\"),\n Map.entry(\"type\", \"json\")\n ))\n .add(Map.of(\"minor-version\", \"1\"))\n .removes(\"arg\")\n .build())\n .responseHeaderModifier(HttpRouteRuleActionResponseHeaderModifierArgs.builder()\n .set(Map.ofEntries(\n Map.entry(\"version\", \"1\"),\n Map.entry(\"type\", \"json\")\n ))\n .add(Map.of(\"minor-version\", \"1\"))\n .removes(\"removearg\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:HttpRoute\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - action:\n faultInjectionPolicy:\n delay:\n fixedDelay: 1s\n percentage: 1\n abort:\n httpStatus: 500\n percentage: 1\n urlRewrite:\n pathPrefixRewrite: new-prefix\n hostRewrite: new-host\n retryPolicy:\n retryConditions:\n - server_error\n numRetries: 1\n perTryTimeout: 1s\n requestMirrorPolicy:\n destination:\n serviceName: new\n weight: 1\n corsPolicy:\n allowOrigins:\n - example\n allowMethods:\n - GET\n - PUT\n allowHeaders:\n - version\n - type\n exposeHeaders:\n - version\n - type\n maxAge: 1s\n allowCredentials: true\n disabled: false\n requestHeaderModifier:\n set:\n version: '1'\n type: json\n add:\n minor-version: '1'\n removes:\n - arg\n responseHeaderModifier:\n set:\n version: '1'\n type: json\n add:\n minor-version: '1'\n removes:\n - removearg\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Http Route Mesh Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.Mesh(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n});\nconst defaultHttpRoute = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n meshes: [_default.id],\n rules: [{\n matches: [{\n queryParameters: [{\n queryParameter: \"key\",\n exactMatch: \"value\",\n }],\n fullPathMatch: \"example\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.Mesh(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\")\ndefault_http_route = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n meshes=[default.id],\n rules=[{\n \"matches\": [{\n \"queryParameters\": [{\n \"queryParameter\": \"key\",\n \"exactMatch\": \"value\",\n }],\n \"fullPathMatch\": \"example\",\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 @default = new Gcp.NetworkServices.Mesh(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n });\n\n var defaultHttpRoute = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Meshes = new[]\n {\n @default.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n ExactMatch = \"value\",\n },\n },\n FullPathMatch = \"example\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewMesh(ctx, \"default\", \u0026networkservices.MeshArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tMeshes: pulumi.StringArray{\n\t\t\t\t_default.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.HttpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"example\"),\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.networkservices.Mesh;\nimport com.pulumi.gcp.networkservices.MeshArgs;\nimport com.pulumi.gcp.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\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 Mesh(\"default\", MeshArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .build());\n\n var defaultHttpRoute = new HttpRoute(\"defaultHttpRoute\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .meshes(default_.id())\n .rules(HttpRouteRuleArgs.builder()\n .matches(HttpRouteRuleMatchArgs.builder()\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .exactMatch(\"value\")\n .build())\n .fullPathMatch(\"example\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:Mesh\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n defaultHttpRoute:\n type: gcp:networkservices:HttpRoute\n name: default\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n meshes:\n - ${default.id}\n rules:\n - matches:\n - queryParameters:\n - queryParameter: key\n exactMatch: value\n fullPathMatch: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nHttpRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/httpRoutes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, HttpRoute can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/httpRoute:HttpRoute default projects/{{project}}/locations/global/httpRoutes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/httpRoute:HttpRoute default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/httpRoute:HttpRoute default {{name}}\n```\n\n", + "description": "## Example Usage\n\n### Network Services Http Route Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n matches: [{\n queryParameters: [{\n queryParameter: \"key\",\n exactMatch: \"value\",\n }],\n fullPathMatch: \"example\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"matches\": [{\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"exact_match\": \"value\",\n }],\n \"full_path_match\": \"example\",\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 @default = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n ExactMatch = \"value\",\n },\n },\n FullPathMatch = \"example\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.HttpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"example\"),\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.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\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 HttpRoute(\"default\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(HttpRouteRuleArgs.builder()\n .matches(HttpRouteRuleMatchArgs.builder()\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .exactMatch(\"value\")\n .build())\n .fullPathMatch(\"example\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:HttpRoute\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - matches:\n - queryParameters:\n - queryParameter: key\n exactMatch: value\n fullPathMatch: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Http Route Matches And Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n matches: [\n {\n headers: [{\n header: \"header\",\n invertMatch: false,\n regexMatch: \"header-value\",\n }],\n queryParameters: [{\n queryParameter: \"key\",\n exactMatch: \"value\",\n }],\n prefixMatch: \"example\",\n ignoreCase: false,\n },\n {\n headers: [{\n header: \"header\",\n invertMatch: false,\n presentMatch: true,\n }],\n queryParameters: [{\n queryParameter: \"key\",\n regexMatch: \"value\",\n }],\n regexMatch: \"example\",\n ignoreCase: false,\n },\n {\n headers: [{\n header: \"header\",\n invertMatch: false,\n presentMatch: true,\n }],\n queryParameters: [{\n queryParameter: \"key\",\n presentMatch: true,\n }],\n fullPathMatch: \"example\",\n ignoreCase: false,\n },\n ],\n action: {\n redirect: {\n hostRedirect: \"new-host\",\n pathRedirect: \"new-path\",\n prefixRewrite: \"new-prefix\",\n httpsRedirect: true,\n stripQuery: true,\n portRedirect: 8081,\n },\n urlRewrite: {\n pathPrefixRewrite: \"new-prefix\",\n hostRewrite: \"new-host\",\n },\n retryPolicy: {\n retryConditions: [\"server_error\"],\n numRetries: 1,\n perTryTimeout: \"1s\",\n },\n requestMirrorPolicy: {\n destination: {\n serviceName: \"new\",\n weight: 1,\n },\n },\n corsPolicy: {\n allowOrigins: [\"example\"],\n allowMethods: [\n \"GET\",\n \"PUT\",\n ],\n allowHeaders: [\n \"version\",\n \"type\",\n ],\n exposeHeaders: [\n \"version\",\n \"type\",\n ],\n maxAge: \"1s\",\n allowCredentials: true,\n disabled: false,\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"matches\": [\n {\n \"headers\": [{\n \"header\": \"header\",\n \"invert_match\": False,\n \"regex_match\": \"header-value\",\n }],\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"exact_match\": \"value\",\n }],\n \"prefix_match\": \"example\",\n \"ignore_case\": False,\n },\n {\n \"headers\": [{\n \"header\": \"header\",\n \"invert_match\": False,\n \"present_match\": True,\n }],\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"regex_match\": \"value\",\n }],\n \"regex_match\": \"example\",\n \"ignore_case\": False,\n },\n {\n \"headers\": [{\n \"header\": \"header\",\n \"invert_match\": False,\n \"present_match\": True,\n }],\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"present_match\": True,\n }],\n \"full_path_match\": \"example\",\n \"ignore_case\": False,\n },\n ],\n \"action\": {\n \"redirect\": {\n \"host_redirect\": \"new-host\",\n \"path_redirect\": \"new-path\",\n \"prefix_rewrite\": \"new-prefix\",\n \"https_redirect\": True,\n \"strip_query\": True,\n \"port_redirect\": 8081,\n },\n \"url_rewrite\": {\n \"path_prefix_rewrite\": \"new-prefix\",\n \"host_rewrite\": \"new-host\",\n },\n \"retry_policy\": {\n \"retry_conditions\": [\"server_error\"],\n \"num_retries\": 1,\n \"per_try_timeout\": \"1s\",\n },\n \"request_mirror_policy\": {\n \"destination\": {\n \"service_name\": \"new\",\n \"weight\": 1,\n },\n },\n \"cors_policy\": {\n \"allow_origins\": [\"example\"],\n \"allow_methods\": [\n \"GET\",\n \"PUT\",\n ],\n \"allow_headers\": [\n \"version\",\n \"type\",\n ],\n \"expose_headers\": [\n \"version\",\n \"type\",\n ],\n \"max_age\": \"1s\",\n \"allow_credentials\": True,\n \"disabled\": False,\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 @default = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchHeaderArgs\n {\n Header = \"header\",\n InvertMatch = false,\n RegexMatch = \"header-value\",\n },\n },\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n ExactMatch = \"value\",\n },\n },\n PrefixMatch = \"example\",\n IgnoreCase = false,\n },\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchHeaderArgs\n {\n Header = \"header\",\n InvertMatch = false,\n PresentMatch = true,\n },\n },\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n RegexMatch = \"value\",\n },\n },\n RegexMatch = \"example\",\n IgnoreCase = false,\n },\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchHeaderArgs\n {\n Header = \"header\",\n InvertMatch = false,\n PresentMatch = true,\n },\n },\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n PresentMatch = true,\n },\n },\n FullPathMatch = \"example\",\n IgnoreCase = false,\n },\n },\n Action = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionArgs\n {\n Redirect = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRedirectArgs\n {\n HostRedirect = \"new-host\",\n PathRedirect = \"new-path\",\n PrefixRewrite = \"new-prefix\",\n HttpsRedirect = true,\n StripQuery = true,\n PortRedirect = 8081,\n },\n UrlRewrite = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionUrlRewriteArgs\n {\n PathPrefixRewrite = \"new-prefix\",\n HostRewrite = \"new-host\",\n },\n RetryPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"server_error\",\n },\n NumRetries = 1,\n PerTryTimeout = \"1s\",\n },\n RequestMirrorPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyArgs\n {\n Destination = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs\n {\n ServiceName = \"new\",\n Weight = 1,\n },\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionCorsPolicyArgs\n {\n AllowOrigins = new[]\n {\n \"example\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n \"PUT\",\n },\n AllowHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n ExposeHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n MaxAge = \"1s\",\n AllowCredentials = true,\n Disabled = false,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.HttpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.HttpRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tHeader: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"header-value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.HttpRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tHeader: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.HttpRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tHeader: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.HttpRouteRuleActionArgs{\n\t\t\t\t\t\tRedirect: \u0026networkservices.HttpRouteRuleActionRedirectArgs{\n\t\t\t\t\t\t\tHostRedirect: pulumi.String(\"new-host\"),\n\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"new-path\"),\n\t\t\t\t\t\t\tPrefixRewrite: pulumi.String(\"new-prefix\"),\n\t\t\t\t\t\t\tHttpsRedirect: pulumi.Bool(true),\n\t\t\t\t\t\t\tStripQuery: pulumi.Bool(true),\n\t\t\t\t\t\t\tPortRedirect: pulumi.Int(8081),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tUrlRewrite: \u0026networkservices.HttpRouteRuleActionUrlRewriteArgs{\n\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"new-prefix\"),\n\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"new-host\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRetryPolicy: \u0026networkservices.HttpRouteRuleActionRetryPolicyArgs{\n\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"server_error\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNumRetries: pulumi.Int(1),\n\t\t\t\t\t\t\tPerTryTimeout: pulumi.String(\"1s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequestMirrorPolicy: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\tDestination: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"new\"),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCorsPolicy: \u0026networkservices.HttpRouteRuleActionCorsPolicyArgs{\n\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"PUT\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMaxAge: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\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.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRedirectArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionUrlRewriteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRetryPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionCorsPolicyArgs;\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 HttpRoute(\"default\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(HttpRouteRuleArgs.builder()\n .matches( \n HttpRouteRuleMatchArgs.builder()\n .headers(HttpRouteRuleMatchHeaderArgs.builder()\n .header(\"header\")\n .invertMatch(false)\n .regexMatch(\"header-value\")\n .build())\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .exactMatch(\"value\")\n .build())\n .prefixMatch(\"example\")\n .ignoreCase(false)\n .build(),\n HttpRouteRuleMatchArgs.builder()\n .headers(HttpRouteRuleMatchHeaderArgs.builder()\n .header(\"header\")\n .invertMatch(false)\n .presentMatch(true)\n .build())\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .regexMatch(\"value\")\n .build())\n .regexMatch(\"example\")\n .ignoreCase(false)\n .build(),\n HttpRouteRuleMatchArgs.builder()\n .headers(HttpRouteRuleMatchHeaderArgs.builder()\n .header(\"header\")\n .invertMatch(false)\n .presentMatch(true)\n .build())\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .presentMatch(true)\n .build())\n .fullPathMatch(\"example\")\n .ignoreCase(false)\n .build())\n .action(HttpRouteRuleActionArgs.builder()\n .redirect(HttpRouteRuleActionRedirectArgs.builder()\n .hostRedirect(\"new-host\")\n .pathRedirect(\"new-path\")\n .prefixRewrite(\"new-prefix\")\n .httpsRedirect(true)\n .stripQuery(true)\n .portRedirect(8081)\n .build())\n .urlRewrite(HttpRouteRuleActionUrlRewriteArgs.builder()\n .pathPrefixRewrite(\"new-prefix\")\n .hostRewrite(\"new-host\")\n .build())\n .retryPolicy(HttpRouteRuleActionRetryPolicyArgs.builder()\n .retryConditions(\"server_error\")\n .numRetries(1)\n .perTryTimeout(\"1s\")\n .build())\n .requestMirrorPolicy(HttpRouteRuleActionRequestMirrorPolicyArgs.builder()\n .destination(HttpRouteRuleActionRequestMirrorPolicyDestinationArgs.builder()\n .serviceName(\"new\")\n .weight(1)\n .build())\n .build())\n .corsPolicy(HttpRouteRuleActionCorsPolicyArgs.builder()\n .allowOrigins(\"example\")\n .allowMethods( \n \"GET\",\n \"PUT\")\n .allowHeaders( \n \"version\",\n \"type\")\n .exposeHeaders( \n \"version\",\n \"type\")\n .maxAge(\"1s\")\n .allowCredentials(true)\n .disabled(false)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:HttpRoute\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - matches:\n - headers:\n - header: header\n invertMatch: false\n regexMatch: header-value\n queryParameters:\n - queryParameter: key\n exactMatch: value\n prefixMatch: example\n ignoreCase: false\n - headers:\n - header: header\n invertMatch: false\n presentMatch: true\n queryParameters:\n - queryParameter: key\n regexMatch: value\n regexMatch: example\n ignoreCase: false\n - headers:\n - header: header\n invertMatch: false\n presentMatch: true\n queryParameters:\n - queryParameter: key\n presentMatch: true\n fullPathMatch: example\n ignoreCase: false\n action:\n redirect:\n hostRedirect: new-host\n pathRedirect: new-path\n prefixRewrite: new-prefix\n httpsRedirect: true\n stripQuery: true\n portRedirect: 8081\n urlRewrite:\n pathPrefixRewrite: new-prefix\n hostRewrite: new-host\n retryPolicy:\n retryConditions:\n - server_error\n numRetries: 1\n perTryTimeout: 1s\n requestMirrorPolicy:\n destination:\n serviceName: new\n weight: 1\n corsPolicy:\n allowOrigins:\n - example\n allowMethods:\n - GET\n - PUT\n allowHeaders:\n - version\n - type\n exposeHeaders:\n - version\n - type\n maxAge: 1s\n allowCredentials: true\n disabled: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Http Route Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n action: {\n faultInjectionPolicy: {\n delay: {\n fixedDelay: \"1s\",\n percentage: 1,\n },\n abort: {\n httpStatus: 500,\n percentage: 1,\n },\n },\n urlRewrite: {\n pathPrefixRewrite: \"new-prefix\",\n hostRewrite: \"new-host\",\n },\n retryPolicy: {\n retryConditions: [\"server_error\"],\n numRetries: 1,\n perTryTimeout: \"1s\",\n },\n requestMirrorPolicy: {\n destination: {\n serviceName: \"new\",\n weight: 1,\n },\n },\n corsPolicy: {\n allowOrigins: [\"example\"],\n allowMethods: [\n \"GET\",\n \"PUT\",\n ],\n allowHeaders: [\n \"version\",\n \"type\",\n ],\n exposeHeaders: [\n \"version\",\n \"type\",\n ],\n maxAge: \"1s\",\n allowCredentials: true,\n disabled: false,\n },\n requestHeaderModifier: {\n set: {\n version: \"1\",\n type: \"json\",\n },\n add: {\n \"minor-version\": \"1\",\n },\n removes: [\"arg\"],\n },\n responseHeaderModifier: {\n set: {\n version: \"1\",\n type: \"json\",\n },\n add: {\n \"minor-version\": \"1\",\n },\n removes: [\"removearg\"],\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"action\": {\n \"fault_injection_policy\": {\n \"delay\": {\n \"fixed_delay\": \"1s\",\n \"percentage\": 1,\n },\n \"abort\": {\n \"http_status\": 500,\n \"percentage\": 1,\n },\n },\n \"url_rewrite\": {\n \"path_prefix_rewrite\": \"new-prefix\",\n \"host_rewrite\": \"new-host\",\n },\n \"retry_policy\": {\n \"retry_conditions\": [\"server_error\"],\n \"num_retries\": 1,\n \"per_try_timeout\": \"1s\",\n },\n \"request_mirror_policy\": {\n \"destination\": {\n \"service_name\": \"new\",\n \"weight\": 1,\n },\n },\n \"cors_policy\": {\n \"allow_origins\": [\"example\"],\n \"allow_methods\": [\n \"GET\",\n \"PUT\",\n ],\n \"allow_headers\": [\n \"version\",\n \"type\",\n ],\n \"expose_headers\": [\n \"version\",\n \"type\",\n ],\n \"max_age\": \"1s\",\n \"allow_credentials\": True,\n \"disabled\": False,\n },\n \"request_header_modifier\": {\n \"set\": {\n \"version\": \"1\",\n \"type\": \"json\",\n },\n \"add\": {\n \"minor_version\": \"1\",\n },\n \"removes\": [\"arg\"],\n },\n \"response_header_modifier\": {\n \"set\": {\n \"version\": \"1\",\n \"type\": \"json\",\n },\n \"add\": {\n \"minor_version\": \"1\",\n },\n \"removes\": [\"removearg\"],\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 @default = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Action = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionArgs\n {\n FaultInjectionPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionFaultInjectionPolicyArgs\n {\n Delay = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = \"1s\",\n Percentage = 1,\n },\n Abort = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 500,\n Percentage = 1,\n },\n },\n UrlRewrite = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionUrlRewriteArgs\n {\n PathPrefixRewrite = \"new-prefix\",\n HostRewrite = \"new-host\",\n },\n RetryPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"server_error\",\n },\n NumRetries = 1,\n PerTryTimeout = \"1s\",\n },\n RequestMirrorPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyArgs\n {\n Destination = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs\n {\n ServiceName = \"new\",\n Weight = 1,\n },\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionCorsPolicyArgs\n {\n AllowOrigins = new[]\n {\n \"example\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n \"PUT\",\n },\n AllowHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n ExposeHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n MaxAge = \"1s\",\n AllowCredentials = true,\n Disabled = false,\n },\n RequestHeaderModifier = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestHeaderModifierArgs\n {\n Set = \n {\n { \"version\", \"1\" },\n { \"type\", \"json\" },\n },\n Add = \n {\n { \"minor-version\", \"1\" },\n },\n Removes = new[]\n {\n \"arg\",\n },\n },\n ResponseHeaderModifier = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionResponseHeaderModifierArgs\n {\n Set = \n {\n { \"version\", \"1\" },\n { \"type\", \"json\" },\n },\n Add = \n {\n { \"minor-version\", \"1\" },\n },\n Removes = new[]\n {\n \"removearg\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tAction: \u0026networkservices.HttpRouteRuleActionArgs{\n\t\t\t\t\t\tFaultInjectionPolicy: \u0026networkservices.HttpRouteRuleActionFaultInjectionPolicyArgs{\n\t\t\t\t\t\t\tDelay: \u0026networkservices.HttpRouteRuleActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\t\t\tFixedDelay: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAbort: \u0026networkservices.HttpRouteRuleActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\t\t\tHttpStatus: pulumi.Int(500),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tUrlRewrite: \u0026networkservices.HttpRouteRuleActionUrlRewriteArgs{\n\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"new-prefix\"),\n\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"new-host\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRetryPolicy: \u0026networkservices.HttpRouteRuleActionRetryPolicyArgs{\n\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"server_error\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNumRetries: pulumi.Int(1),\n\t\t\t\t\t\t\tPerTryTimeout: pulumi.String(\"1s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequestMirrorPolicy: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\tDestination: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"new\"),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCorsPolicy: \u0026networkservices.HttpRouteRuleActionCorsPolicyArgs{\n\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"PUT\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMaxAge: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequestHeaderModifier: \u0026networkservices.HttpRouteRuleActionRequestHeaderModifierArgs{\n\t\t\t\t\t\t\tSet: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\"type\": pulumi.String(\"json\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAdd: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"minor-version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"arg\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tResponseHeaderModifier: \u0026networkservices.HttpRouteRuleActionResponseHeaderModifierArgs{\n\t\t\t\t\t\t\tSet: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\"type\": pulumi.String(\"json\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAdd: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"minor-version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"removearg\"),\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.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionFaultInjectionPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionFaultInjectionPolicyDelayArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionFaultInjectionPolicyAbortArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionUrlRewriteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRetryPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionCorsPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestHeaderModifierArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionResponseHeaderModifierArgs;\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 HttpRoute(\"default\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(HttpRouteRuleArgs.builder()\n .action(HttpRouteRuleActionArgs.builder()\n .faultInjectionPolicy(HttpRouteRuleActionFaultInjectionPolicyArgs.builder()\n .delay(HttpRouteRuleActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(\"1s\")\n .percentage(1)\n .build())\n .abort(HttpRouteRuleActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(500)\n .percentage(1)\n .build())\n .build())\n .urlRewrite(HttpRouteRuleActionUrlRewriteArgs.builder()\n .pathPrefixRewrite(\"new-prefix\")\n .hostRewrite(\"new-host\")\n .build())\n .retryPolicy(HttpRouteRuleActionRetryPolicyArgs.builder()\n .retryConditions(\"server_error\")\n .numRetries(1)\n .perTryTimeout(\"1s\")\n .build())\n .requestMirrorPolicy(HttpRouteRuleActionRequestMirrorPolicyArgs.builder()\n .destination(HttpRouteRuleActionRequestMirrorPolicyDestinationArgs.builder()\n .serviceName(\"new\")\n .weight(1)\n .build())\n .build())\n .corsPolicy(HttpRouteRuleActionCorsPolicyArgs.builder()\n .allowOrigins(\"example\")\n .allowMethods( \n \"GET\",\n \"PUT\")\n .allowHeaders( \n \"version\",\n \"type\")\n .exposeHeaders( \n \"version\",\n \"type\")\n .maxAge(\"1s\")\n .allowCredentials(true)\n .disabled(false)\n .build())\n .requestHeaderModifier(HttpRouteRuleActionRequestHeaderModifierArgs.builder()\n .set(Map.ofEntries(\n Map.entry(\"version\", \"1\"),\n Map.entry(\"type\", \"json\")\n ))\n .add(Map.of(\"minor-version\", \"1\"))\n .removes(\"arg\")\n .build())\n .responseHeaderModifier(HttpRouteRuleActionResponseHeaderModifierArgs.builder()\n .set(Map.ofEntries(\n Map.entry(\"version\", \"1\"),\n Map.entry(\"type\", \"json\")\n ))\n .add(Map.of(\"minor-version\", \"1\"))\n .removes(\"removearg\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:HttpRoute\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - action:\n faultInjectionPolicy:\n delay:\n fixedDelay: 1s\n percentage: 1\n abort:\n httpStatus: 500\n percentage: 1\n urlRewrite:\n pathPrefixRewrite: new-prefix\n hostRewrite: new-host\n retryPolicy:\n retryConditions:\n - server_error\n numRetries: 1\n perTryTimeout: 1s\n requestMirrorPolicy:\n destination:\n serviceName: new\n weight: 1\n corsPolicy:\n allowOrigins:\n - example\n allowMethods:\n - GET\n - PUT\n allowHeaders:\n - version\n - type\n exposeHeaders:\n - version\n - type\n maxAge: 1s\n allowCredentials: true\n disabled: false\n requestHeaderModifier:\n set:\n version: '1'\n type: json\n add:\n minor-version: '1'\n removes:\n - arg\n responseHeaderModifier:\n set:\n version: '1'\n type: json\n add:\n minor-version: '1'\n removes:\n - removearg\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Http Route Mesh Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.Mesh(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n});\nconst defaultHttpRoute = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n meshes: [_default.id],\n rules: [{\n matches: [{\n queryParameters: [{\n queryParameter: \"key\",\n exactMatch: \"value\",\n }],\n fullPathMatch: \"example\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.Mesh(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\")\ndefault_http_route = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n meshes=[default.id],\n rules=[{\n \"matches\": [{\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"exact_match\": \"value\",\n }],\n \"full_path_match\": \"example\",\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 @default = new Gcp.NetworkServices.Mesh(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n });\n\n var defaultHttpRoute = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Meshes = new[]\n {\n @default.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n ExactMatch = \"value\",\n },\n },\n FullPathMatch = \"example\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewMesh(ctx, \"default\", \u0026networkservices.MeshArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tMeshes: pulumi.StringArray{\n\t\t\t\t_default.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.HttpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"example\"),\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.networkservices.Mesh;\nimport com.pulumi.gcp.networkservices.MeshArgs;\nimport com.pulumi.gcp.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\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 Mesh(\"default\", MeshArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .build());\n\n var defaultHttpRoute = new HttpRoute(\"defaultHttpRoute\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .meshes(default_.id())\n .rules(HttpRouteRuleArgs.builder()\n .matches(HttpRouteRuleMatchArgs.builder()\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .exactMatch(\"value\")\n .build())\n .fullPathMatch(\"example\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:Mesh\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n defaultHttpRoute:\n type: gcp:networkservices:HttpRoute\n name: default\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n meshes:\n - ${default.id}\n rules:\n - matches:\n - queryParameters:\n - queryParameter: key\n exactMatch: value\n fullPathMatch: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nHttpRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/httpRoutes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, HttpRoute can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/httpRoute:HttpRoute default projects/{{project}}/locations/global/httpRoutes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/httpRoute:HttpRoute default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/httpRoute:HttpRoute default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -222439,7 +222439,7 @@ } }, "gcp:networkservices/serviceLbPolicies:ServiceLbPolicies": { - "description": "## Example Usage\n\n### Network Services Service Lb Policies Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.ServiceLbPolicies(\"default\", {\n name: \"my-lb-policy\",\n location: \"global\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.ServiceLbPolicies(\"default\",\n name=\"my-lb-policy\",\n location=\"global\")\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.ServiceLbPolicies(\"default\", new()\n {\n Name = \"my-lb-policy\",\n Location = \"global\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewServiceLbPolicies(ctx, \"default\", \u0026networkservices.ServiceLbPoliciesArgs{\n\t\t\tName: pulumi.String(\"my-lb-policy\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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.ServiceLbPolicies;\nimport com.pulumi.gcp.networkservices.ServiceLbPoliciesArgs;\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 ServiceLbPolicies(\"default\", ServiceLbPoliciesArgs.builder()\n .name(\"my-lb-policy\")\n .location(\"global\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:ServiceLbPolicies\n properties:\n name: my-lb-policy\n location: global\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Service Lb Policies Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.ServiceLbPolicies(\"default\", {\n name: \"my-lb-policy\",\n location: \"global\",\n description: \"my description\",\n loadBalancingAlgorithm: \"SPRAY_TO_REGION\",\n autoCapacityDrain: {\n enable: true,\n },\n failoverConfig: {\n failoverHealthThreshold: 70,\n },\n labels: {\n foo: \"bar\",\n },\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"my-lb-backend\",\n description: \"my description\",\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n protocol: \"HTTP\",\n serviceLbPolicy: pulumi.interpolate`//networkservices.googleapis.com/${_default.id}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.ServiceLbPolicies(\"default\",\n name=\"my-lb-policy\",\n location=\"global\",\n description=\"my description\",\n load_balancing_algorithm=\"SPRAY_TO_REGION\",\n auto_capacity_drain={\n \"enable\": True,\n },\n failover_config={\n \"failoverHealthThreshold\": 70,\n },\n labels={\n \"foo\": \"bar\",\n })\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"my-lb-backend\",\n description=\"my description\",\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n protocol=\"HTTP\",\n service_lb_policy=default.id.apply(lambda id: f\"//networkservices.googleapis.com/{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 @default = new Gcp.NetworkServices.ServiceLbPolicies(\"default\", new()\n {\n Name = \"my-lb-policy\",\n Location = \"global\",\n Description = \"my description\",\n LoadBalancingAlgorithm = \"SPRAY_TO_REGION\",\n AutoCapacityDrain = new Gcp.NetworkServices.Inputs.ServiceLbPoliciesAutoCapacityDrainArgs\n {\n Enable = true,\n },\n FailoverConfig = new Gcp.NetworkServices.Inputs.ServiceLbPoliciesFailoverConfigArgs\n {\n FailoverHealthThreshold = 70,\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-lb-backend\",\n Description = \"my description\",\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n Protocol = \"HTTP\",\n ServiceLbPolicy = @default.Id.Apply(id =\u003e $\"//networkservices.googleapis.com/{id}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewServiceLbPolicies(ctx, \"default\", \u0026networkservices.ServiceLbPoliciesArgs{\n\t\t\tName: pulumi.String(\"my-lb-policy\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLoadBalancingAlgorithm: pulumi.String(\"SPRAY_TO_REGION\"),\n\t\t\tAutoCapacityDrain: \u0026networkservices.ServiceLbPoliciesAutoCapacityDrainArgs{\n\t\t\t\tEnable: pulumi.Bool(true),\n\t\t\t},\n\t\t\tFailoverConfig: \u0026networkservices.ServiceLbPoliciesFailoverConfigArgs{\n\t\t\t\tFailoverHealthThreshold: pulumi.Int(70),\n\t\t\t},\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\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-lb-backend\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tServiceLbPolicy: _default.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"//networkservices.googleapis.com/%v\", id), 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\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.ServiceLbPolicies;\nimport com.pulumi.gcp.networkservices.ServiceLbPoliciesArgs;\nimport com.pulumi.gcp.networkservices.inputs.ServiceLbPoliciesAutoCapacityDrainArgs;\nimport com.pulumi.gcp.networkservices.inputs.ServiceLbPoliciesFailoverConfigArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\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 ServiceLbPolicies(\"default\", ServiceLbPoliciesArgs.builder()\n .name(\"my-lb-policy\")\n .location(\"global\")\n .description(\"my description\")\n .loadBalancingAlgorithm(\"SPRAY_TO_REGION\")\n .autoCapacityDrain(ServiceLbPoliciesAutoCapacityDrainArgs.builder()\n .enable(true)\n .build())\n .failoverConfig(ServiceLbPoliciesFailoverConfigArgs.builder()\n .failoverHealthThreshold(70)\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"my-lb-backend\")\n .description(\"my description\")\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .protocol(\"HTTP\")\n .serviceLbPolicy(default_.id().applyValue(id -\u003e String.format(\"//networkservices.googleapis.com/%s\", id)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:ServiceLbPolicies\n properties:\n name: my-lb-policy\n location: global\n description: my description\n loadBalancingAlgorithm: SPRAY_TO_REGION\n autoCapacityDrain:\n enable: true\n failoverConfig:\n failoverHealthThreshold: 70\n labels:\n foo: bar\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: my-lb-backend\n description: my description\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n protocol: HTTP\n serviceLbPolicy: //networkservices.googleapis.com/${default.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServiceLbPolicies can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/serviceLbPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ServiceLbPolicies can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/serviceLbPolicies:ServiceLbPolicies default projects/{{project}}/locations/{{location}}/serviceLbPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/serviceLbPolicies:ServiceLbPolicies default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/serviceLbPolicies:ServiceLbPolicies default {{location}}/{{name}}\n```\n\n", + "description": "## Example Usage\n\n### Network Services Service Lb Policies Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.ServiceLbPolicies(\"default\", {\n name: \"my-lb-policy\",\n location: \"global\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.ServiceLbPolicies(\"default\",\n name=\"my-lb-policy\",\n location=\"global\")\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.ServiceLbPolicies(\"default\", new()\n {\n Name = \"my-lb-policy\",\n Location = \"global\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewServiceLbPolicies(ctx, \"default\", \u0026networkservices.ServiceLbPoliciesArgs{\n\t\t\tName: pulumi.String(\"my-lb-policy\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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.ServiceLbPolicies;\nimport com.pulumi.gcp.networkservices.ServiceLbPoliciesArgs;\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 ServiceLbPolicies(\"default\", ServiceLbPoliciesArgs.builder()\n .name(\"my-lb-policy\")\n .location(\"global\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:ServiceLbPolicies\n properties:\n name: my-lb-policy\n location: global\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Service Lb Policies Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.ServiceLbPolicies(\"default\", {\n name: \"my-lb-policy\",\n location: \"global\",\n description: \"my description\",\n loadBalancingAlgorithm: \"SPRAY_TO_REGION\",\n autoCapacityDrain: {\n enable: true,\n },\n failoverConfig: {\n failoverHealthThreshold: 70,\n },\n labels: {\n foo: \"bar\",\n },\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"my-lb-backend\",\n description: \"my description\",\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n protocol: \"HTTP\",\n serviceLbPolicy: pulumi.interpolate`//networkservices.googleapis.com/${_default.id}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.ServiceLbPolicies(\"default\",\n name=\"my-lb-policy\",\n location=\"global\",\n description=\"my description\",\n load_balancing_algorithm=\"SPRAY_TO_REGION\",\n auto_capacity_drain={\n \"enable\": True,\n },\n failover_config={\n \"failover_health_threshold\": 70,\n },\n labels={\n \"foo\": \"bar\",\n })\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"my-lb-backend\",\n description=\"my description\",\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n protocol=\"HTTP\",\n service_lb_policy=default.id.apply(lambda id: f\"//networkservices.googleapis.com/{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 @default = new Gcp.NetworkServices.ServiceLbPolicies(\"default\", new()\n {\n Name = \"my-lb-policy\",\n Location = \"global\",\n Description = \"my description\",\n LoadBalancingAlgorithm = \"SPRAY_TO_REGION\",\n AutoCapacityDrain = new Gcp.NetworkServices.Inputs.ServiceLbPoliciesAutoCapacityDrainArgs\n {\n Enable = true,\n },\n FailoverConfig = new Gcp.NetworkServices.Inputs.ServiceLbPoliciesFailoverConfigArgs\n {\n FailoverHealthThreshold = 70,\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-lb-backend\",\n Description = \"my description\",\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n Protocol = \"HTTP\",\n ServiceLbPolicy = @default.Id.Apply(id =\u003e $\"//networkservices.googleapis.com/{id}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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.NewServiceLbPolicies(ctx, \"default\", \u0026networkservices.ServiceLbPoliciesArgs{\n\t\t\tName: pulumi.String(\"my-lb-policy\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLoadBalancingAlgorithm: pulumi.String(\"SPRAY_TO_REGION\"),\n\t\t\tAutoCapacityDrain: \u0026networkservices.ServiceLbPoliciesAutoCapacityDrainArgs{\n\t\t\t\tEnable: pulumi.Bool(true),\n\t\t\t},\n\t\t\tFailoverConfig: \u0026networkservices.ServiceLbPoliciesFailoverConfigArgs{\n\t\t\t\tFailoverHealthThreshold: pulumi.Int(70),\n\t\t\t},\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\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-lb-backend\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tServiceLbPolicy: _default.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"//networkservices.googleapis.com/%v\", id), 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\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.ServiceLbPolicies;\nimport com.pulumi.gcp.networkservices.ServiceLbPoliciesArgs;\nimport com.pulumi.gcp.networkservices.inputs.ServiceLbPoliciesAutoCapacityDrainArgs;\nimport com.pulumi.gcp.networkservices.inputs.ServiceLbPoliciesFailoverConfigArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\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 ServiceLbPolicies(\"default\", ServiceLbPoliciesArgs.builder()\n .name(\"my-lb-policy\")\n .location(\"global\")\n .description(\"my description\")\n .loadBalancingAlgorithm(\"SPRAY_TO_REGION\")\n .autoCapacityDrain(ServiceLbPoliciesAutoCapacityDrainArgs.builder()\n .enable(true)\n .build())\n .failoverConfig(ServiceLbPoliciesFailoverConfigArgs.builder()\n .failoverHealthThreshold(70)\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"my-lb-backend\")\n .description(\"my description\")\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .protocol(\"HTTP\")\n .serviceLbPolicy(default_.id().applyValue(id -\u003e String.format(\"//networkservices.googleapis.com/%s\", id)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:ServiceLbPolicies\n properties:\n name: my-lb-policy\n location: global\n description: my description\n loadBalancingAlgorithm: SPRAY_TO_REGION\n autoCapacityDrain:\n enable: true\n failoverConfig:\n failoverHealthThreshold: 70\n labels:\n foo: bar\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: my-lb-backend\n description: my description\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n protocol: HTTP\n serviceLbPolicy: //networkservices.googleapis.com/${default.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServiceLbPolicies can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/serviceLbPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ServiceLbPolicies can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/serviceLbPolicies:ServiceLbPolicies default projects/{{project}}/locations/{{location}}/serviceLbPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/serviceLbPolicies:ServiceLbPolicies default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/serviceLbPolicies:ServiceLbPolicies default {{location}}/{{name}}\n```\n\n", "properties": { "autoCapacityDrain": { "$ref": "#/types/gcp:networkservices/ServiceLbPoliciesAutoCapacityDrain:ServiceLbPoliciesAutoCapacityDrain", @@ -222619,7 +222619,7 @@ } }, "gcp:networkservices/tcpRoute:TcpRoute": { - "description": "## Example Usage\n\n### Network Services Tcp Route Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultTcpRoute = new gcp.networkservices.TcpRoute(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n rules: [{\n matches: [{\n address: \"10.0.0.1/32\",\n port: \"8081\",\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n originalDestination: false,\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_tcp_route = gcp.networkservices.TcpRoute(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n rules=[{\n \"matches\": [{\n \"address\": \"10.0.0.1/32\",\n \"port\": \"8081\",\n }],\n \"action\": {\n \"destinations\": [{\n \"serviceName\": default.id,\n \"weight\": 1,\n }],\n \"originalDestination\": False,\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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultTcpRoute = new Gcp.NetworkServices.TcpRoute(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleMatchArgs\n {\n Address = \"10.0.0.1/32\",\n Port = \"8081\",\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TcpRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n OriginalDestination = false,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTcpRoute(ctx, \"default\", \u0026networkservices.TcpRouteArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tRules: networkservices.TcpRouteRuleArray{\n\t\t\t\t\u0026networkservices.TcpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TcpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tAddress: pulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\t\t\tPort: pulumi.String(\"8081\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.TcpRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TcpRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOriginalDestination: pulumi.Bool(false),\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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.TcpRoute;\nimport com.pulumi.gcp.networkservices.TcpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleActionArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultTcpRoute = new TcpRoute(\"defaultTcpRoute\", TcpRouteArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .rules(TcpRouteRuleArgs.builder()\n .matches(TcpRouteRuleMatchArgs.builder()\n .address(\"10.0.0.1/32\")\n .port(\"8081\")\n .build())\n .action(TcpRouteRuleActionArgs.builder()\n .destinations(TcpRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .originalDestination(false)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultTcpRoute:\n type: gcp:networkservices:TcpRoute\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n rules:\n - matches:\n - address: 10.0.0.1/32\n port: '8081'\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n originalDestination: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tcp Route Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultTcpRoute = new gcp.networkservices.TcpRoute(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n rules: [{\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n originalDestination: false,\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_tcp_route = gcp.networkservices.TcpRoute(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n rules=[{\n \"action\": {\n \"destinations\": [{\n \"serviceName\": default.id,\n \"weight\": 1,\n }],\n \"originalDestination\": False,\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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultTcpRoute = new Gcp.NetworkServices.TcpRoute(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleArgs\n {\n Action = new Gcp.NetworkServices.Inputs.TcpRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n OriginalDestination = false,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTcpRoute(ctx, \"default\", \u0026networkservices.TcpRouteArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tRules: networkservices.TcpRouteRuleArray{\n\t\t\t\t\u0026networkservices.TcpRouteRuleArgs{\n\t\t\t\t\tAction: \u0026networkservices.TcpRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TcpRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOriginalDestination: pulumi.Bool(false),\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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.TcpRoute;\nimport com.pulumi.gcp.networkservices.TcpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleActionArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultTcpRoute = new TcpRoute(\"defaultTcpRoute\", TcpRouteArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .rules(TcpRouteRuleArgs.builder()\n .action(TcpRouteRuleActionArgs.builder()\n .destinations(TcpRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .originalDestination(false)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultTcpRoute:\n type: gcp:networkservices:TcpRoute\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n rules:\n - action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n originalDestination: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tcp Route Mesh Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultMesh = new gcp.networkservices.Mesh(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n});\nconst defaultTcpRoute = new gcp.networkservices.TcpRoute(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n meshes: [defaultMesh.id],\n rules: [{\n matches: [{\n address: \"10.0.0.1/32\",\n port: \"8081\",\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n originalDestination: false,\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_mesh = gcp.networkservices.Mesh(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\")\ndefault_tcp_route = gcp.networkservices.TcpRoute(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n meshes=[default_mesh.id],\n rules=[{\n \"matches\": [{\n \"address\": \"10.0.0.1/32\",\n \"port\": \"8081\",\n }],\n \"action\": {\n \"destinations\": [{\n \"serviceName\": default.id,\n \"weight\": 1,\n }],\n \"originalDestination\": False,\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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultMesh = new Gcp.NetworkServices.Mesh(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n });\n\n var defaultTcpRoute = new Gcp.NetworkServices.TcpRoute(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Meshes = new[]\n {\n defaultMesh.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleMatchArgs\n {\n Address = \"10.0.0.1/32\",\n Port = \"8081\",\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TcpRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n OriginalDestination = false,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultMesh, err := networkservices.NewMesh(ctx, \"default\", \u0026networkservices.MeshArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTcpRoute(ctx, \"default\", \u0026networkservices.TcpRouteArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tMeshes: pulumi.StringArray{\n\t\t\t\tdefaultMesh.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.TcpRouteRuleArray{\n\t\t\t\t\u0026networkservices.TcpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TcpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tAddress: pulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\t\t\tPort: pulumi.String(\"8081\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.TcpRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TcpRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOriginalDestination: pulumi.Bool(false),\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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.Mesh;\nimport com.pulumi.gcp.networkservices.MeshArgs;\nimport com.pulumi.gcp.networkservices.TcpRoute;\nimport com.pulumi.gcp.networkservices.TcpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleActionArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultMesh = new Mesh(\"defaultMesh\", MeshArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .build());\n\n var defaultTcpRoute = new TcpRoute(\"defaultTcpRoute\", TcpRouteArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .meshes(defaultMesh.id())\n .rules(TcpRouteRuleArgs.builder()\n .matches(TcpRouteRuleMatchArgs.builder()\n .address(\"10.0.0.1/32\")\n .port(\"8081\")\n .build())\n .action(TcpRouteRuleActionArgs.builder()\n .destinations(TcpRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .originalDestination(false)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultMesh:\n type: gcp:networkservices:Mesh\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n defaultTcpRoute:\n type: gcp:networkservices:TcpRoute\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n meshes:\n - ${defaultMesh.id}\n rules:\n - matches:\n - address: 10.0.0.1/32\n port: '8081'\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n originalDestination: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tcp Route Gateway Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultGateway = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n scope: \"my-scope\",\n type: \"OPEN_MESH\",\n ports: [443],\n});\nconst defaultTcpRoute = new gcp.networkservices.TcpRoute(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n gateways: [defaultGateway.id],\n rules: [{\n matches: [{\n address: \"10.0.0.1/32\",\n port: \"8081\",\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n originalDestination: false,\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_gateway = gcp.networkservices.Gateway(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n scope=\"my-scope\",\n type=\"OPEN_MESH\",\n ports=[443])\ndefault_tcp_route = gcp.networkservices.TcpRoute(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n gateways=[default_gateway.id],\n rules=[{\n \"matches\": [{\n \"address\": \"10.0.0.1/32\",\n \"port\": \"8081\",\n }],\n \"action\": {\n \"destinations\": [{\n \"serviceName\": default.id,\n \"weight\": 1,\n }],\n \"originalDestination\": False,\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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultGateway = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Scope = \"my-scope\",\n Type = \"OPEN_MESH\",\n Ports = new[]\n {\n 443,\n },\n });\n\n var defaultTcpRoute = new Gcp.NetworkServices.TcpRoute(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Gateways = new[]\n {\n defaultGateway.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleMatchArgs\n {\n Address = \"10.0.0.1/32\",\n Port = \"8081\",\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TcpRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n OriginalDestination = false,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultGateway, err := networkservices.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tScope: pulumi.String(\"my-scope\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTcpRoute(ctx, \"default\", \u0026networkservices.TcpRouteArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tGateways: pulumi.StringArray{\n\t\t\t\tdefaultGateway.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.TcpRouteRuleArray{\n\t\t\t\t\u0026networkservices.TcpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TcpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tAddress: pulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\t\t\tPort: pulumi.String(\"8081\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.TcpRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TcpRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOriginalDestination: pulumi.Bool(false),\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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport com.pulumi.gcp.networkservices.TcpRoute;\nimport com.pulumi.gcp.networkservices.TcpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleActionArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultGateway = new Gateway(\"defaultGateway\", GatewayArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .scope(\"my-scope\")\n .type(\"OPEN_MESH\")\n .ports(443)\n .build());\n\n var defaultTcpRoute = new TcpRoute(\"defaultTcpRoute\", TcpRouteArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .gateways(defaultGateway.id())\n .rules(TcpRouteRuleArgs.builder()\n .matches(TcpRouteRuleMatchArgs.builder()\n .address(\"10.0.0.1/32\")\n .port(\"8081\")\n .build())\n .action(TcpRouteRuleActionArgs.builder()\n .destinations(TcpRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .originalDestination(false)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultGateway:\n type: gcp:networkservices:Gateway\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n scope: my-scope\n type: OPEN_MESH\n ports:\n - 443\n defaultTcpRoute:\n type: gcp:networkservices:TcpRoute\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n gateways:\n - ${defaultGateway.id}\n rules:\n - matches:\n - address: 10.0.0.1/32\n port: '8081'\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n originalDestination: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTcpRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/tcpRoutes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TcpRoute can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/tcpRoute:TcpRoute default projects/{{project}}/locations/global/tcpRoutes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/tcpRoute:TcpRoute default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/tcpRoute:TcpRoute default {{name}}\n```\n\n", + "description": "## Example Usage\n\n### Network Services Tcp Route Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultTcpRoute = new gcp.networkservices.TcpRoute(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n rules: [{\n matches: [{\n address: \"10.0.0.1/32\",\n port: \"8081\",\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n originalDestination: false,\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_tcp_route = gcp.networkservices.TcpRoute(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n rules=[{\n \"matches\": [{\n \"address\": \"10.0.0.1/32\",\n \"port\": \"8081\",\n }],\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 1,\n }],\n \"original_destination\": False,\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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultTcpRoute = new Gcp.NetworkServices.TcpRoute(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleMatchArgs\n {\n Address = \"10.0.0.1/32\",\n Port = \"8081\",\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TcpRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n OriginalDestination = false,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTcpRoute(ctx, \"default\", \u0026networkservices.TcpRouteArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tRules: networkservices.TcpRouteRuleArray{\n\t\t\t\t\u0026networkservices.TcpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TcpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tAddress: pulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\t\t\tPort: pulumi.String(\"8081\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.TcpRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TcpRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOriginalDestination: pulumi.Bool(false),\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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.TcpRoute;\nimport com.pulumi.gcp.networkservices.TcpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleActionArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultTcpRoute = new TcpRoute(\"defaultTcpRoute\", TcpRouteArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .rules(TcpRouteRuleArgs.builder()\n .matches(TcpRouteRuleMatchArgs.builder()\n .address(\"10.0.0.1/32\")\n .port(\"8081\")\n .build())\n .action(TcpRouteRuleActionArgs.builder()\n .destinations(TcpRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .originalDestination(false)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultTcpRoute:\n type: gcp:networkservices:TcpRoute\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n rules:\n - matches:\n - address: 10.0.0.1/32\n port: '8081'\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n originalDestination: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tcp Route Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultTcpRoute = new gcp.networkservices.TcpRoute(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n rules: [{\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n originalDestination: false,\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_tcp_route = gcp.networkservices.TcpRoute(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n rules=[{\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 1,\n }],\n \"original_destination\": False,\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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultTcpRoute = new Gcp.NetworkServices.TcpRoute(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleArgs\n {\n Action = new Gcp.NetworkServices.Inputs.TcpRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n OriginalDestination = false,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTcpRoute(ctx, \"default\", \u0026networkservices.TcpRouteArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tRules: networkservices.TcpRouteRuleArray{\n\t\t\t\t\u0026networkservices.TcpRouteRuleArgs{\n\t\t\t\t\tAction: \u0026networkservices.TcpRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TcpRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOriginalDestination: pulumi.Bool(false),\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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.TcpRoute;\nimport com.pulumi.gcp.networkservices.TcpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleActionArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultTcpRoute = new TcpRoute(\"defaultTcpRoute\", TcpRouteArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .rules(TcpRouteRuleArgs.builder()\n .action(TcpRouteRuleActionArgs.builder()\n .destinations(TcpRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .originalDestination(false)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultTcpRoute:\n type: gcp:networkservices:TcpRoute\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n rules:\n - action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n originalDestination: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tcp Route Mesh Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultMesh = new gcp.networkservices.Mesh(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n});\nconst defaultTcpRoute = new gcp.networkservices.TcpRoute(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n meshes: [defaultMesh.id],\n rules: [{\n matches: [{\n address: \"10.0.0.1/32\",\n port: \"8081\",\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n originalDestination: false,\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_mesh = gcp.networkservices.Mesh(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\")\ndefault_tcp_route = gcp.networkservices.TcpRoute(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n meshes=[default_mesh.id],\n rules=[{\n \"matches\": [{\n \"address\": \"10.0.0.1/32\",\n \"port\": \"8081\",\n }],\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 1,\n }],\n \"original_destination\": False,\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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultMesh = new Gcp.NetworkServices.Mesh(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n });\n\n var defaultTcpRoute = new Gcp.NetworkServices.TcpRoute(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Meshes = new[]\n {\n defaultMesh.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleMatchArgs\n {\n Address = \"10.0.0.1/32\",\n Port = \"8081\",\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TcpRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n OriginalDestination = false,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultMesh, err := networkservices.NewMesh(ctx, \"default\", \u0026networkservices.MeshArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTcpRoute(ctx, \"default\", \u0026networkservices.TcpRouteArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tMeshes: pulumi.StringArray{\n\t\t\t\tdefaultMesh.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.TcpRouteRuleArray{\n\t\t\t\t\u0026networkservices.TcpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TcpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tAddress: pulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\t\t\tPort: pulumi.String(\"8081\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.TcpRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TcpRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOriginalDestination: pulumi.Bool(false),\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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.Mesh;\nimport com.pulumi.gcp.networkservices.MeshArgs;\nimport com.pulumi.gcp.networkservices.TcpRoute;\nimport com.pulumi.gcp.networkservices.TcpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleActionArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultMesh = new Mesh(\"defaultMesh\", MeshArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .build());\n\n var defaultTcpRoute = new TcpRoute(\"defaultTcpRoute\", TcpRouteArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .meshes(defaultMesh.id())\n .rules(TcpRouteRuleArgs.builder()\n .matches(TcpRouteRuleMatchArgs.builder()\n .address(\"10.0.0.1/32\")\n .port(\"8081\")\n .build())\n .action(TcpRouteRuleActionArgs.builder()\n .destinations(TcpRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .originalDestination(false)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultMesh:\n type: gcp:networkservices:Mesh\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n defaultTcpRoute:\n type: gcp:networkservices:TcpRoute\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n meshes:\n - ${defaultMesh.id}\n rules:\n - matches:\n - address: 10.0.0.1/32\n port: '8081'\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n originalDestination: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tcp Route Gateway Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultGateway = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n scope: \"my-scope\",\n type: \"OPEN_MESH\",\n ports: [443],\n});\nconst defaultTcpRoute = new gcp.networkservices.TcpRoute(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n gateways: [defaultGateway.id],\n rules: [{\n matches: [{\n address: \"10.0.0.1/32\",\n port: \"8081\",\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n originalDestination: false,\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_gateway = gcp.networkservices.Gateway(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n scope=\"my-scope\",\n type=\"OPEN_MESH\",\n ports=[443])\ndefault_tcp_route = gcp.networkservices.TcpRoute(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n gateways=[default_gateway.id],\n rules=[{\n \"matches\": [{\n \"address\": \"10.0.0.1/32\",\n \"port\": \"8081\",\n }],\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 1,\n }],\n \"original_destination\": False,\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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultGateway = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Scope = \"my-scope\",\n Type = \"OPEN_MESH\",\n Ports = new[]\n {\n 443,\n },\n });\n\n var defaultTcpRoute = new Gcp.NetworkServices.TcpRoute(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Gateways = new[]\n {\n defaultGateway.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleMatchArgs\n {\n Address = \"10.0.0.1/32\",\n Port = \"8081\",\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TcpRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n OriginalDestination = false,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultGateway, err := networkservices.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tScope: pulumi.String(\"my-scope\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTcpRoute(ctx, \"default\", \u0026networkservices.TcpRouteArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tGateways: pulumi.StringArray{\n\t\t\t\tdefaultGateway.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.TcpRouteRuleArray{\n\t\t\t\t\u0026networkservices.TcpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TcpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tAddress: pulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\t\t\tPort: pulumi.String(\"8081\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.TcpRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TcpRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOriginalDestination: pulumi.Bool(false),\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.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport com.pulumi.gcp.networkservices.TcpRoute;\nimport com.pulumi.gcp.networkservices.TcpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleActionArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultGateway = new Gateway(\"defaultGateway\", GatewayArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .scope(\"my-scope\")\n .type(\"OPEN_MESH\")\n .ports(443)\n .build());\n\n var defaultTcpRoute = new TcpRoute(\"defaultTcpRoute\", TcpRouteArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .gateways(defaultGateway.id())\n .rules(TcpRouteRuleArgs.builder()\n .matches(TcpRouteRuleMatchArgs.builder()\n .address(\"10.0.0.1/32\")\n .port(\"8081\")\n .build())\n .action(TcpRouteRuleActionArgs.builder()\n .destinations(TcpRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .originalDestination(false)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultGateway:\n type: gcp:networkservices:Gateway\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n scope: my-scope\n type: OPEN_MESH\n ports:\n - 443\n defaultTcpRoute:\n type: gcp:networkservices:TcpRoute\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n gateways:\n - ${defaultGateway.id}\n rules:\n - matches:\n - address: 10.0.0.1/32\n port: '8081'\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n originalDestination: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTcpRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/tcpRoutes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TcpRoute can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/tcpRoute:TcpRoute default projects/{{project}}/locations/global/tcpRoutes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/tcpRoute:TcpRoute default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/tcpRoute:TcpRoute default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -222822,7 +222822,7 @@ } }, "gcp:networkservices/tlsRoute:TlsRoute": { - "description": "## Example Usage\n\n### Network Services Tls Route Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultTlsRoute = new gcp.networkservices.TlsRoute(\"default\", {\n name: \"my-tls-route\",\n description: \"my description\",\n rules: [{\n matches: [{\n sniHosts: [\"example.com\"],\n alpns: [\"http/1.1\"],\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_tls_route = gcp.networkservices.TlsRoute(\"default\",\n name=\"my-tls-route\",\n description=\"my description\",\n rules=[{\n \"matches\": [{\n \"sniHosts\": [\"example.com\"],\n \"alpns\": [\"http/1.1\"],\n }],\n \"action\": {\n \"destinations\": [{\n \"serviceName\": default.id,\n \"weight\": 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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultTlsRoute = new Gcp.NetworkServices.TlsRoute(\"default\", new()\n {\n Name = \"my-tls-route\",\n Description = \"my description\",\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleMatchArgs\n {\n SniHosts = new[]\n {\n \"example.com\",\n },\n Alpns = new[]\n {\n \"http/1.1\",\n },\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TlsRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTlsRoute(ctx, \"default\", \u0026networkservices.TlsRouteArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tRules: networkservices.TlsRouteRuleArray{\n\t\t\t\t\u0026networkservices.TlsRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TlsRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleMatchArgs{\n\t\t\t\t\t\t\tSniHosts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAlpns: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"http/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\tAction: \u0026networkservices.TlsRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TlsRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(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.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.TlsRoute;\nimport com.pulumi.gcp.networkservices.TlsRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleActionArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultTlsRoute = new TlsRoute(\"defaultTlsRoute\", TlsRouteArgs.builder()\n .name(\"my-tls-route\")\n .description(\"my description\")\n .rules(TlsRouteRuleArgs.builder()\n .matches(TlsRouteRuleMatchArgs.builder()\n .sniHosts(\"example.com\")\n .alpns(\"http/1.1\")\n .build())\n .action(TlsRouteRuleActionArgs.builder()\n .destinations(TlsRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultTlsRoute:\n type: gcp:networkservices:TlsRoute\n name: default\n properties:\n name: my-tls-route\n description: my description\n rules:\n - matches:\n - sniHosts:\n - example.com\n alpns:\n - http/1.1\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tls Route Mesh Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultMesh = new gcp.networkservices.Mesh(\"default\", {\n name: \"my-tls-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n});\nconst defaultTlsRoute = new gcp.networkservices.TlsRoute(\"default\", {\n name: \"my-tls-route\",\n description: \"my description\",\n meshes: [defaultMesh.id],\n rules: [{\n matches: [{\n sniHosts: [\"example.com\"],\n alpns: [\"http/1.1\"],\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_mesh = gcp.networkservices.Mesh(\"default\",\n name=\"my-tls-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\")\ndefault_tls_route = gcp.networkservices.TlsRoute(\"default\",\n name=\"my-tls-route\",\n description=\"my description\",\n meshes=[default_mesh.id],\n rules=[{\n \"matches\": [{\n \"sniHosts\": [\"example.com\"],\n \"alpns\": [\"http/1.1\"],\n }],\n \"action\": {\n \"destinations\": [{\n \"serviceName\": default.id,\n \"weight\": 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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultMesh = new Gcp.NetworkServices.Mesh(\"default\", new()\n {\n Name = \"my-tls-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n });\n\n var defaultTlsRoute = new Gcp.NetworkServices.TlsRoute(\"default\", new()\n {\n Name = \"my-tls-route\",\n Description = \"my description\",\n Meshes = new[]\n {\n defaultMesh.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleMatchArgs\n {\n SniHosts = new[]\n {\n \"example.com\",\n },\n Alpns = new[]\n {\n \"http/1.1\",\n },\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TlsRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultMesh, err := networkservices.NewMesh(ctx, \"default\", \u0026networkservices.MeshArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTlsRoute(ctx, \"default\", \u0026networkservices.TlsRouteArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tMeshes: pulumi.StringArray{\n\t\t\t\tdefaultMesh.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.TlsRouteRuleArray{\n\t\t\t\t\u0026networkservices.TlsRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TlsRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleMatchArgs{\n\t\t\t\t\t\t\tSniHosts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAlpns: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"http/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\tAction: \u0026networkservices.TlsRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TlsRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(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.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.Mesh;\nimport com.pulumi.gcp.networkservices.MeshArgs;\nimport com.pulumi.gcp.networkservices.TlsRoute;\nimport com.pulumi.gcp.networkservices.TlsRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleActionArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultMesh = new Mesh(\"defaultMesh\", MeshArgs.builder()\n .name(\"my-tls-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .build());\n\n var defaultTlsRoute = new TlsRoute(\"defaultTlsRoute\", TlsRouteArgs.builder()\n .name(\"my-tls-route\")\n .description(\"my description\")\n .meshes(defaultMesh.id())\n .rules(TlsRouteRuleArgs.builder()\n .matches(TlsRouteRuleMatchArgs.builder()\n .sniHosts(\"example.com\")\n .alpns(\"http/1.1\")\n .build())\n .action(TlsRouteRuleActionArgs.builder()\n .destinations(TlsRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultMesh:\n type: gcp:networkservices:Mesh\n name: default\n properties:\n name: my-tls-route\n labels:\n foo: bar\n description: my description\n defaultTlsRoute:\n type: gcp:networkservices:TlsRoute\n name: default\n properties:\n name: my-tls-route\n description: my description\n meshes:\n - ${defaultMesh.id}\n rules:\n - matches:\n - sniHosts:\n - example.com\n alpns:\n - http/1.1\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tls Route Gateway Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultGateway = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-tls-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n scope: \"my-scope\",\n type: \"OPEN_MESH\",\n ports: [443],\n});\nconst defaultTlsRoute = new gcp.networkservices.TlsRoute(\"default\", {\n name: \"my-tls-route\",\n description: \"my description\",\n gateways: [defaultGateway.id],\n rules: [{\n matches: [{\n sniHosts: [\"example.com\"],\n alpns: [\"http/1.1\"],\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_gateway = gcp.networkservices.Gateway(\"default\",\n name=\"my-tls-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n scope=\"my-scope\",\n type=\"OPEN_MESH\",\n ports=[443])\ndefault_tls_route = gcp.networkservices.TlsRoute(\"default\",\n name=\"my-tls-route\",\n description=\"my description\",\n gateways=[default_gateway.id],\n rules=[{\n \"matches\": [{\n \"sniHosts\": [\"example.com\"],\n \"alpns\": [\"http/1.1\"],\n }],\n \"action\": {\n \"destinations\": [{\n \"serviceName\": default.id,\n \"weight\": 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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultGateway = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Name = \"my-tls-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Scope = \"my-scope\",\n Type = \"OPEN_MESH\",\n Ports = new[]\n {\n 443,\n },\n });\n\n var defaultTlsRoute = new Gcp.NetworkServices.TlsRoute(\"default\", new()\n {\n Name = \"my-tls-route\",\n Description = \"my description\",\n Gateways = new[]\n {\n defaultGateway.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleMatchArgs\n {\n SniHosts = new[]\n {\n \"example.com\",\n },\n Alpns = new[]\n {\n \"http/1.1\",\n },\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TlsRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultGateway, err := networkservices.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tScope: pulumi.String(\"my-scope\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTlsRoute(ctx, \"default\", \u0026networkservices.TlsRouteArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tGateways: pulumi.StringArray{\n\t\t\t\tdefaultGateway.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.TlsRouteRuleArray{\n\t\t\t\t\u0026networkservices.TlsRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TlsRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleMatchArgs{\n\t\t\t\t\t\t\tSniHosts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAlpns: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"http/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\tAction: \u0026networkservices.TlsRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TlsRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(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.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport com.pulumi.gcp.networkservices.TlsRoute;\nimport com.pulumi.gcp.networkservices.TlsRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleActionArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultGateway = new Gateway(\"defaultGateway\", GatewayArgs.builder()\n .name(\"my-tls-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .scope(\"my-scope\")\n .type(\"OPEN_MESH\")\n .ports(443)\n .build());\n\n var defaultTlsRoute = new TlsRoute(\"defaultTlsRoute\", TlsRouteArgs.builder()\n .name(\"my-tls-route\")\n .description(\"my description\")\n .gateways(defaultGateway.id())\n .rules(TlsRouteRuleArgs.builder()\n .matches(TlsRouteRuleMatchArgs.builder()\n .sniHosts(\"example.com\")\n .alpns(\"http/1.1\")\n .build())\n .action(TlsRouteRuleActionArgs.builder()\n .destinations(TlsRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultGateway:\n type: gcp:networkservices:Gateway\n name: default\n properties:\n name: my-tls-route\n labels:\n foo: bar\n description: my description\n scope: my-scope\n type: OPEN_MESH\n ports:\n - 443\n defaultTlsRoute:\n type: gcp:networkservices:TlsRoute\n name: default\n properties:\n name: my-tls-route\n description: my description\n gateways:\n - ${defaultGateway.id}\n rules:\n - matches:\n - sniHosts:\n - example.com\n alpns:\n - http/1.1\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTlsRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/tlsRoutes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TlsRoute can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/tlsRoute:TlsRoute default projects/{{project}}/locations/global/tlsRoutes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/tlsRoute:TlsRoute default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/tlsRoute:TlsRoute default {{name}}\n```\n\n", + "description": "## Example Usage\n\n### Network Services Tls Route Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultTlsRoute = new gcp.networkservices.TlsRoute(\"default\", {\n name: \"my-tls-route\",\n description: \"my description\",\n rules: [{\n matches: [{\n sniHosts: [\"example.com\"],\n alpns: [\"http/1.1\"],\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_tls_route = gcp.networkservices.TlsRoute(\"default\",\n name=\"my-tls-route\",\n description=\"my description\",\n rules=[{\n \"matches\": [{\n \"sni_hosts\": [\"example.com\"],\n \"alpns\": [\"http/1.1\"],\n }],\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultTlsRoute = new Gcp.NetworkServices.TlsRoute(\"default\", new()\n {\n Name = \"my-tls-route\",\n Description = \"my description\",\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleMatchArgs\n {\n SniHosts = new[]\n {\n \"example.com\",\n },\n Alpns = new[]\n {\n \"http/1.1\",\n },\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TlsRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTlsRoute(ctx, \"default\", \u0026networkservices.TlsRouteArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tRules: networkservices.TlsRouteRuleArray{\n\t\t\t\t\u0026networkservices.TlsRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TlsRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleMatchArgs{\n\t\t\t\t\t\t\tSniHosts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAlpns: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"http/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\tAction: \u0026networkservices.TlsRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TlsRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(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.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.TlsRoute;\nimport com.pulumi.gcp.networkservices.TlsRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleActionArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultTlsRoute = new TlsRoute(\"defaultTlsRoute\", TlsRouteArgs.builder()\n .name(\"my-tls-route\")\n .description(\"my description\")\n .rules(TlsRouteRuleArgs.builder()\n .matches(TlsRouteRuleMatchArgs.builder()\n .sniHosts(\"example.com\")\n .alpns(\"http/1.1\")\n .build())\n .action(TlsRouteRuleActionArgs.builder()\n .destinations(TlsRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultTlsRoute:\n type: gcp:networkservices:TlsRoute\n name: default\n properties:\n name: my-tls-route\n description: my description\n rules:\n - matches:\n - sniHosts:\n - example.com\n alpns:\n - http/1.1\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tls Route Mesh Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultMesh = new gcp.networkservices.Mesh(\"default\", {\n name: \"my-tls-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n});\nconst defaultTlsRoute = new gcp.networkservices.TlsRoute(\"default\", {\n name: \"my-tls-route\",\n description: \"my description\",\n meshes: [defaultMesh.id],\n rules: [{\n matches: [{\n sniHosts: [\"example.com\"],\n alpns: [\"http/1.1\"],\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_mesh = gcp.networkservices.Mesh(\"default\",\n name=\"my-tls-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\")\ndefault_tls_route = gcp.networkservices.TlsRoute(\"default\",\n name=\"my-tls-route\",\n description=\"my description\",\n meshes=[default_mesh.id],\n rules=[{\n \"matches\": [{\n \"sni_hosts\": [\"example.com\"],\n \"alpns\": [\"http/1.1\"],\n }],\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultMesh = new Gcp.NetworkServices.Mesh(\"default\", new()\n {\n Name = \"my-tls-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n });\n\n var defaultTlsRoute = new Gcp.NetworkServices.TlsRoute(\"default\", new()\n {\n Name = \"my-tls-route\",\n Description = \"my description\",\n Meshes = new[]\n {\n defaultMesh.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleMatchArgs\n {\n SniHosts = new[]\n {\n \"example.com\",\n },\n Alpns = new[]\n {\n \"http/1.1\",\n },\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TlsRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultMesh, err := networkservices.NewMesh(ctx, \"default\", \u0026networkservices.MeshArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTlsRoute(ctx, \"default\", \u0026networkservices.TlsRouteArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tMeshes: pulumi.StringArray{\n\t\t\t\tdefaultMesh.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.TlsRouteRuleArray{\n\t\t\t\t\u0026networkservices.TlsRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TlsRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleMatchArgs{\n\t\t\t\t\t\t\tSniHosts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAlpns: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"http/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\tAction: \u0026networkservices.TlsRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TlsRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(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.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.Mesh;\nimport com.pulumi.gcp.networkservices.MeshArgs;\nimport com.pulumi.gcp.networkservices.TlsRoute;\nimport com.pulumi.gcp.networkservices.TlsRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleActionArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultMesh = new Mesh(\"defaultMesh\", MeshArgs.builder()\n .name(\"my-tls-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .build());\n\n var defaultTlsRoute = new TlsRoute(\"defaultTlsRoute\", TlsRouteArgs.builder()\n .name(\"my-tls-route\")\n .description(\"my description\")\n .meshes(defaultMesh.id())\n .rules(TlsRouteRuleArgs.builder()\n .matches(TlsRouteRuleMatchArgs.builder()\n .sniHosts(\"example.com\")\n .alpns(\"http/1.1\")\n .build())\n .action(TlsRouteRuleActionArgs.builder()\n .destinations(TlsRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultMesh:\n type: gcp:networkservices:Mesh\n name: default\n properties:\n name: my-tls-route\n labels:\n foo: bar\n description: my description\n defaultTlsRoute:\n type: gcp:networkservices:TlsRoute\n name: default\n properties:\n name: my-tls-route\n description: my description\n meshes:\n - ${defaultMesh.id}\n rules:\n - matches:\n - sniHosts:\n - example.com\n alpns:\n - http/1.1\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tls Route Gateway Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultGateway = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-tls-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n scope: \"my-scope\",\n type: \"OPEN_MESH\",\n ports: [443],\n});\nconst defaultTlsRoute = new gcp.networkservices.TlsRoute(\"default\", {\n name: \"my-tls-route\",\n description: \"my description\",\n gateways: [defaultGateway.id],\n rules: [{\n matches: [{\n sniHosts: [\"example.com\"],\n alpns: [\"http/1.1\"],\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_gateway = gcp.networkservices.Gateway(\"default\",\n name=\"my-tls-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n scope=\"my-scope\",\n type=\"OPEN_MESH\",\n ports=[443])\ndefault_tls_route = gcp.networkservices.TlsRoute(\"default\",\n name=\"my-tls-route\",\n description=\"my description\",\n gateways=[default_gateway.id],\n rules=[{\n \"matches\": [{\n \"sni_hosts\": [\"example.com\"],\n \"alpns\": [\"http/1.1\"],\n }],\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 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 defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultGateway = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Name = \"my-tls-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Scope = \"my-scope\",\n Type = \"OPEN_MESH\",\n Ports = new[]\n {\n 443,\n },\n });\n\n var defaultTlsRoute = new Gcp.NetworkServices.TlsRoute(\"default\", new()\n {\n Name = \"my-tls-route\",\n Description = \"my description\",\n Gateways = new[]\n {\n defaultGateway.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleMatchArgs\n {\n SniHosts = new[]\n {\n \"example.com\",\n },\n Alpns = new[]\n {\n \"http/1.1\",\n },\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TlsRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultGateway, err := networkservices.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tScope: pulumi.String(\"my-scope\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTlsRoute(ctx, \"default\", \u0026networkservices.TlsRouteArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tGateways: pulumi.StringArray{\n\t\t\t\tdefaultGateway.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.TlsRouteRuleArray{\n\t\t\t\t\u0026networkservices.TlsRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TlsRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleMatchArgs{\n\t\t\t\t\t\t\tSniHosts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAlpns: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"http/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\tAction: \u0026networkservices.TlsRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TlsRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(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.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport com.pulumi.gcp.networkservices.TlsRoute;\nimport com.pulumi.gcp.networkservices.TlsRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleActionArgs;\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 defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultGateway = new Gateway(\"defaultGateway\", GatewayArgs.builder()\n .name(\"my-tls-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .scope(\"my-scope\")\n .type(\"OPEN_MESH\")\n .ports(443)\n .build());\n\n var defaultTlsRoute = new TlsRoute(\"defaultTlsRoute\", TlsRouteArgs.builder()\n .name(\"my-tls-route\")\n .description(\"my description\")\n .gateways(defaultGateway.id())\n .rules(TlsRouteRuleArgs.builder()\n .matches(TlsRouteRuleMatchArgs.builder()\n .sniHosts(\"example.com\")\n .alpns(\"http/1.1\")\n .build())\n .action(TlsRouteRuleActionArgs.builder()\n .destinations(TlsRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultGateway:\n type: gcp:networkservices:Gateway\n name: default\n properties:\n name: my-tls-route\n labels:\n foo: bar\n description: my description\n scope: my-scope\n type: OPEN_MESH\n ports:\n - 443\n defaultTlsRoute:\n type: gcp:networkservices:TlsRoute\n name: default\n properties:\n name: my-tls-route\n description: my description\n gateways:\n - ${defaultGateway.id}\n rules:\n - matches:\n - sniHosts:\n - example.com\n alpns:\n - http/1.1\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTlsRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/tlsRoutes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TlsRoute can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/tlsRoute:TlsRoute default projects/{{project}}/locations/global/tlsRoutes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/tlsRoute:TlsRoute default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/tlsRoute:TlsRoute default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -223100,7 +223100,7 @@ } }, "gcp:notebooks/instance:Instance": { - "description": "\u003e **Warning:** `google_notebook_instance` is deprecated and will be removed in a future major release. Use `gcp.workbench.Instance` instead.\n\nA Cloud AI Platform Notebook instance.\n\n\n\u003e **Note:** Due to limitations of the Notebooks Instance API, many fields\nin this resource do not properly detect drift. These fields will also not\nappear in state once imported.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/ai-platform/notebooks/docs/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/ai-platform-notebooks)\n\n## Example Usage\n\n### Notebook Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.notebooks.Instance(\"instance\", {\n name: \"notebooks-instance\",\n location: \"us-west1-a\",\n machineType: \"e2-medium\",\n vmImage: {\n project: \"deeplearning-platform-release\",\n imageFamily: \"tf-latest-cpu\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.notebooks.Instance(\"instance\",\n name=\"notebooks-instance\",\n location=\"us-west1-a\",\n machine_type=\"e2-medium\",\n vm_image={\n \"project\": \"deeplearning-platform-release\",\n \"imageFamily\": \"tf-latest-cpu\",\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.Notebooks.Instance(\"instance\", new()\n {\n Name = \"notebooks-instance\",\n Location = \"us-west1-a\",\n MachineType = \"e2-medium\",\n VmImage = new Gcp.Notebooks.Inputs.InstanceVmImageArgs\n {\n Project = \"deeplearning-platform-release\",\n ImageFamily = \"tf-latest-cpu\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\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 := notebooks.NewInstance(ctx, \"instance\", \u0026notebooks.InstanceArgs{\n\t\t\tName: pulumi.String(\"notebooks-instance\"),\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tVmImage: \u0026notebooks.InstanceVmImageArgs{\n\t\t\t\tProject: pulumi.String(\"deeplearning-platform-release\"),\n\t\t\t\tImageFamily: pulumi.String(\"tf-latest-cpu\"),\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.notebooks.Instance;\nimport com.pulumi.gcp.notebooks.InstanceArgs;\nimport com.pulumi.gcp.notebooks.inputs.InstanceVmImageArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"notebooks-instance\")\n .location(\"us-west1-a\")\n .machineType(\"e2-medium\")\n .vmImage(InstanceVmImageArgs.builder()\n .project(\"deeplearning-platform-release\")\n .imageFamily(\"tf-latest-cpu\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:notebooks:Instance\n properties:\n name: notebooks-instance\n location: us-west1-a\n machineType: e2-medium\n vmImage:\n project: deeplearning-platform-release\n imageFamily: tf-latest-cpu\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Notebook Instance Basic Stopped\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.notebooks.Instance(\"instance\", {\n name: \"notebooks-instance\",\n location: \"us-west1-a\",\n machineType: \"e2-medium\",\n vmImage: {\n project: \"deeplearning-platform-release\",\n imageFamily: \"tf-latest-cpu\",\n },\n desiredState: \"STOPPED\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.notebooks.Instance(\"instance\",\n name=\"notebooks-instance\",\n location=\"us-west1-a\",\n machine_type=\"e2-medium\",\n vm_image={\n \"project\": \"deeplearning-platform-release\",\n \"imageFamily\": \"tf-latest-cpu\",\n },\n desired_state=\"STOPPED\")\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.Notebooks.Instance(\"instance\", new()\n {\n Name = \"notebooks-instance\",\n Location = \"us-west1-a\",\n MachineType = \"e2-medium\",\n VmImage = new Gcp.Notebooks.Inputs.InstanceVmImageArgs\n {\n Project = \"deeplearning-platform-release\",\n ImageFamily = \"tf-latest-cpu\",\n },\n DesiredState = \"STOPPED\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\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 := notebooks.NewInstance(ctx, \"instance\", \u0026notebooks.InstanceArgs{\n\t\t\tName: pulumi.String(\"notebooks-instance\"),\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tVmImage: \u0026notebooks.InstanceVmImageArgs{\n\t\t\t\tProject: pulumi.String(\"deeplearning-platform-release\"),\n\t\t\t\tImageFamily: pulumi.String(\"tf-latest-cpu\"),\n\t\t\t},\n\t\t\tDesiredState: pulumi.String(\"STOPPED\"),\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.notebooks.Instance;\nimport com.pulumi.gcp.notebooks.InstanceArgs;\nimport com.pulumi.gcp.notebooks.inputs.InstanceVmImageArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"notebooks-instance\")\n .location(\"us-west1-a\")\n .machineType(\"e2-medium\")\n .vmImage(InstanceVmImageArgs.builder()\n .project(\"deeplearning-platform-release\")\n .imageFamily(\"tf-latest-cpu\")\n .build())\n .desiredState(\"STOPPED\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:notebooks:Instance\n properties:\n name: notebooks-instance\n location: us-west1-a\n machineType: e2-medium\n vmImage:\n project: deeplearning-platform-release\n imageFamily: tf-latest-cpu\n desiredState: STOPPED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Notebook Instance Basic Container\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.notebooks.Instance(\"instance\", {\n name: \"notebooks-instance\",\n location: \"us-west1-a\",\n machineType: \"e2-medium\",\n metadata: {\n \"proxy-mode\": \"service_account\",\n },\n containerImage: {\n repository: \"gcr.io/deeplearning-platform-release/base-cpu\",\n tag: \"latest\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.notebooks.Instance(\"instance\",\n name=\"notebooks-instance\",\n location=\"us-west1-a\",\n machine_type=\"e2-medium\",\n metadata={\n \"proxy-mode\": \"service_account\",\n },\n container_image={\n \"repository\": \"gcr.io/deeplearning-platform-release/base-cpu\",\n \"tag\": \"latest\",\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.Notebooks.Instance(\"instance\", new()\n {\n Name = \"notebooks-instance\",\n Location = \"us-west1-a\",\n MachineType = \"e2-medium\",\n Metadata = \n {\n { \"proxy-mode\", \"service_account\" },\n },\n ContainerImage = new Gcp.Notebooks.Inputs.InstanceContainerImageArgs\n {\n Repository = \"gcr.io/deeplearning-platform-release/base-cpu\",\n Tag = \"latest\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\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 := notebooks.NewInstance(ctx, \"instance\", \u0026notebooks.InstanceArgs{\n\t\t\tName: pulumi.String(\"notebooks-instance\"),\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"proxy-mode\": pulumi.String(\"service_account\"),\n\t\t\t},\n\t\t\tContainerImage: \u0026notebooks.InstanceContainerImageArgs{\n\t\t\t\tRepository: pulumi.String(\"gcr.io/deeplearning-platform-release/base-cpu\"),\n\t\t\t\tTag: pulumi.String(\"latest\"),\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.notebooks.Instance;\nimport com.pulumi.gcp.notebooks.InstanceArgs;\nimport com.pulumi.gcp.notebooks.inputs.InstanceContainerImageArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"notebooks-instance\")\n .location(\"us-west1-a\")\n .machineType(\"e2-medium\")\n .metadata(Map.of(\"proxy-mode\", \"service_account\"))\n .containerImage(InstanceContainerImageArgs.builder()\n .repository(\"gcr.io/deeplearning-platform-release/base-cpu\")\n .tag(\"latest\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:notebooks:Instance\n properties:\n name: notebooks-instance\n location: us-west1-a\n machineType: e2-medium\n metadata:\n proxy-mode: service_account\n containerImage:\n repository: gcr.io/deeplearning-platform-release/base-cpu\n tag: latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Notebook Instance Basic Gpu\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.notebooks.Instance(\"instance\", {\n name: \"notebooks-instance\",\n location: \"us-west1-a\",\n machineType: \"n1-standard-1\",\n installGpuDriver: true,\n acceleratorConfig: {\n type: \"NVIDIA_TESLA_T4\",\n coreCount: 1,\n },\n vmImage: {\n project: \"deeplearning-platform-release\",\n imageFamily: \"tf-latest-gpu\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.notebooks.Instance(\"instance\",\n name=\"notebooks-instance\",\n location=\"us-west1-a\",\n machine_type=\"n1-standard-1\",\n install_gpu_driver=True,\n accelerator_config={\n \"type\": \"NVIDIA_TESLA_T4\",\n \"coreCount\": 1,\n },\n vm_image={\n \"project\": \"deeplearning-platform-release\",\n \"imageFamily\": \"tf-latest-gpu\",\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.Notebooks.Instance(\"instance\", new()\n {\n Name = \"notebooks-instance\",\n Location = \"us-west1-a\",\n MachineType = \"n1-standard-1\",\n InstallGpuDriver = true,\n AcceleratorConfig = new Gcp.Notebooks.Inputs.InstanceAcceleratorConfigArgs\n {\n Type = \"NVIDIA_TESLA_T4\",\n CoreCount = 1,\n },\n VmImage = new Gcp.Notebooks.Inputs.InstanceVmImageArgs\n {\n Project = \"deeplearning-platform-release\",\n ImageFamily = \"tf-latest-gpu\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\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 := notebooks.NewInstance(ctx, \"instance\", \u0026notebooks.InstanceArgs{\n\t\t\tName: pulumi.String(\"notebooks-instance\"),\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tMachineType: pulumi.String(\"n1-standard-1\"),\n\t\t\tInstallGpuDriver: pulumi.Bool(true),\n\t\t\tAcceleratorConfig: \u0026notebooks.InstanceAcceleratorConfigArgs{\n\t\t\t\tType: pulumi.String(\"NVIDIA_TESLA_T4\"),\n\t\t\t\tCoreCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tVmImage: \u0026notebooks.InstanceVmImageArgs{\n\t\t\t\tProject: pulumi.String(\"deeplearning-platform-release\"),\n\t\t\t\tImageFamily: pulumi.String(\"tf-latest-gpu\"),\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.notebooks.Instance;\nimport com.pulumi.gcp.notebooks.InstanceArgs;\nimport com.pulumi.gcp.notebooks.inputs.InstanceAcceleratorConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.InstanceVmImageArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"notebooks-instance\")\n .location(\"us-west1-a\")\n .machineType(\"n1-standard-1\")\n .installGpuDriver(true)\n .acceleratorConfig(InstanceAcceleratorConfigArgs.builder()\n .type(\"NVIDIA_TESLA_T4\")\n .coreCount(1)\n .build())\n .vmImage(InstanceVmImageArgs.builder()\n .project(\"deeplearning-platform-release\")\n .imageFamily(\"tf-latest-gpu\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:notebooks:Instance\n properties:\n name: notebooks-instance\n location: us-west1-a\n machineType: n1-standard-1\n installGpuDriver: true\n acceleratorConfig:\n type: NVIDIA_TESLA_T4\n coreCount: 1\n vmImage:\n project: deeplearning-platform-release\n imageFamily: tf-latest-gpu\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Notebook Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myNetwork = gcp.compute.getNetwork({\n name: \"default\",\n});\nconst mySubnetwork = gcp.compute.getSubnetwork({\n name: \"default\",\n region: \"us-central1\",\n});\nconst instance = new gcp.notebooks.Instance(\"instance\", {\n name: \"notebooks-instance\",\n location: \"us-central1-a\",\n machineType: \"e2-medium\",\n vmImage: {\n project: \"deeplearning-platform-release\",\n imageFamily: \"tf-latest-cpu\",\n },\n instanceOwners: [\"my@service-account.com\"],\n serviceAccount: \"my@service-account.com\",\n installGpuDriver: true,\n bootDiskType: \"PD_SSD\",\n bootDiskSizeGb: 110,\n noPublicIp: true,\n noProxyAccess: true,\n network: myNetwork.then(myNetwork =\u003e myNetwork.id),\n subnet: mySubnetwork.then(mySubnetwork =\u003e mySubnetwork.id),\n labels: {\n k: \"val\",\n },\n metadata: {\n terraform: \"true\",\n },\n serviceAccountScopes: [\n \"https://www.googleapis.com/auth/bigquery\",\n \"https://www.googleapis.com/auth/devstorage.read_write\",\n \"https://www.googleapis.com/auth/cloud-platform\",\n \"https://www.googleapis.com/auth/userinfo.email\",\n ],\n tags: [\n \"foo\",\n \"bar\",\n ],\n diskEncryption: \"CMEK\",\n kmsKey: \"my-crypto-key\",\n desiredState: \"ACTIVE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_network = gcp.compute.get_network(name=\"default\")\nmy_subnetwork = gcp.compute.get_subnetwork(name=\"default\",\n region=\"us-central1\")\ninstance = gcp.notebooks.Instance(\"instance\",\n name=\"notebooks-instance\",\n location=\"us-central1-a\",\n machine_type=\"e2-medium\",\n vm_image={\n \"project\": \"deeplearning-platform-release\",\n \"imageFamily\": \"tf-latest-cpu\",\n },\n instance_owners=[\"my@service-account.com\"],\n service_account=\"my@service-account.com\",\n install_gpu_driver=True,\n boot_disk_type=\"PD_SSD\",\n boot_disk_size_gb=110,\n no_public_ip=True,\n no_proxy_access=True,\n network=my_network.id,\n subnet=my_subnetwork.id,\n labels={\n \"k\": \"val\",\n },\n metadata={\n \"terraform\": \"true\",\n },\n service_account_scopes=[\n \"https://www.googleapis.com/auth/bigquery\",\n \"https://www.googleapis.com/auth/devstorage.read_write\",\n \"https://www.googleapis.com/auth/cloud-platform\",\n \"https://www.googleapis.com/auth/userinfo.email\",\n ],\n tags=[\n \"foo\",\n \"bar\",\n ],\n disk_encryption=\"CMEK\",\n kms_key=\"my-crypto-key\",\n desired_state=\"ACTIVE\")\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 myNetwork = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"default\",\n });\n\n var mySubnetwork = Gcp.Compute.GetSubnetwork.Invoke(new()\n {\n Name = \"default\",\n Region = \"us-central1\",\n });\n\n var instance = new Gcp.Notebooks.Instance(\"instance\", new()\n {\n Name = \"notebooks-instance\",\n Location = \"us-central1-a\",\n MachineType = \"e2-medium\",\n VmImage = new Gcp.Notebooks.Inputs.InstanceVmImageArgs\n {\n Project = \"deeplearning-platform-release\",\n ImageFamily = \"tf-latest-cpu\",\n },\n InstanceOwners = new[]\n {\n \"my@service-account.com\",\n },\n ServiceAccount = \"my@service-account.com\",\n InstallGpuDriver = true,\n BootDiskType = \"PD_SSD\",\n BootDiskSizeGb = 110,\n NoPublicIp = true,\n NoProxyAccess = true,\n Network = myNetwork.Apply(getNetworkResult =\u003e getNetworkResult.Id),\n Subnet = mySubnetwork.Apply(getSubnetworkResult =\u003e getSubnetworkResult.Id),\n Labels = \n {\n { \"k\", \"val\" },\n },\n Metadata = \n {\n { \"terraform\", \"true\" },\n },\n ServiceAccountScopes = new[]\n {\n \"https://www.googleapis.com/auth/bigquery\",\n \"https://www.googleapis.com/auth/devstorage.read_write\",\n \"https://www.googleapis.com/auth/cloud-platform\",\n \"https://www.googleapis.com/auth/userinfo.email\",\n },\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n DiskEncryption = \"CMEK\",\n KmsKey = \"my-crypto-key\",\n DesiredState = \"ACTIVE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyNetwork, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"default\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmySubnetwork, err := compute.LookupSubnetwork(ctx, \u0026compute.LookupSubnetworkArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t\tRegion: pulumi.StringRef(\"us-central1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = notebooks.NewInstance(ctx, \"instance\", \u0026notebooks.InstanceArgs{\n\t\t\tName: pulumi.String(\"notebooks-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tVmImage: \u0026notebooks.InstanceVmImageArgs{\n\t\t\t\tProject: pulumi.String(\"deeplearning-platform-release\"),\n\t\t\t\tImageFamily: pulumi.String(\"tf-latest-cpu\"),\n\t\t\t},\n\t\t\tInstanceOwners: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my@service-account.com\"),\n\t\t\t},\n\t\t\tServiceAccount: pulumi.String(\"my@service-account.com\"),\n\t\t\tInstallGpuDriver: pulumi.Bool(true),\n\t\t\tBootDiskType: pulumi.String(\"PD_SSD\"),\n\t\t\tBootDiskSizeGb: pulumi.Int(110),\n\t\t\tNoPublicIp: pulumi.Bool(true),\n\t\t\tNoProxyAccess: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(myNetwork.Id),\n\t\t\tSubnet: pulumi.String(mySubnetwork.Id),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"k\": pulumi.String(\"val\"),\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"terraform\": pulumi.String(\"true\"),\n\t\t\t},\n\t\t\tServiceAccountScopes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/bigquery\"),\n\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/devstorage.read_write\"),\n\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/userinfo.email\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDiskEncryption: pulumi.String(\"CMEK\"),\n\t\t\tKmsKey: pulumi.String(\"my-crypto-key\"),\n\t\t\tDesiredState: pulumi.String(\"ACTIVE\"),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.compute.inputs.GetSubnetworkArgs;\nimport com.pulumi.gcp.notebooks.Instance;\nimport com.pulumi.gcp.notebooks.InstanceArgs;\nimport com.pulumi.gcp.notebooks.inputs.InstanceVmImageArgs;\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 myNetwork = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"default\")\n .build());\n\n final var mySubnetwork = ComputeFunctions.getSubnetwork(GetSubnetworkArgs.builder()\n .name(\"default\")\n .region(\"us-central1\")\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .name(\"notebooks-instance\")\n .location(\"us-central1-a\")\n .machineType(\"e2-medium\")\n .vmImage(InstanceVmImageArgs.builder()\n .project(\"deeplearning-platform-release\")\n .imageFamily(\"tf-latest-cpu\")\n .build())\n .instanceOwners(\"my@service-account.com\")\n .serviceAccount(\"my@service-account.com\")\n .installGpuDriver(true)\n .bootDiskType(\"PD_SSD\")\n .bootDiskSizeGb(110)\n .noPublicIp(true)\n .noProxyAccess(true)\n .network(myNetwork.applyValue(getNetworkResult -\u003e getNetworkResult.id()))\n .subnet(mySubnetwork.applyValue(getSubnetworkResult -\u003e getSubnetworkResult.id()))\n .labels(Map.of(\"k\", \"val\"))\n .metadata(Map.of(\"terraform\", \"true\"))\n .serviceAccountScopes( \n \"https://www.googleapis.com/auth/bigquery\",\n \"https://www.googleapis.com/auth/devstorage.read_write\",\n \"https://www.googleapis.com/auth/cloud-platform\",\n \"https://www.googleapis.com/auth/userinfo.email\")\n .tags( \n \"foo\",\n \"bar\")\n .diskEncryption(\"CMEK\")\n .kmsKey(\"my-crypto-key\")\n .desiredState(\"ACTIVE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:notebooks:Instance\n properties:\n name: notebooks-instance\n location: us-central1-a\n machineType: e2-medium\n vmImage:\n project: deeplearning-platform-release\n imageFamily: tf-latest-cpu\n instanceOwners:\n - my@service-account.com\n serviceAccount: my@service-account.com\n installGpuDriver: true\n bootDiskType: PD_SSD\n bootDiskSizeGb: 110\n noPublicIp: true\n noProxyAccess: true\n network: ${myNetwork.id}\n subnet: ${mySubnetwork.id}\n labels:\n k: val\n metadata:\n terraform: 'true'\n serviceAccountScopes:\n - https://www.googleapis.com/auth/bigquery\n - https://www.googleapis.com/auth/devstorage.read_write\n - https://www.googleapis.com/auth/cloud-platform\n - https://www.googleapis.com/auth/userinfo.email\n tags:\n - foo\n - bar\n diskEncryption: CMEK\n kmsKey: my-crypto-key\n desiredState: ACTIVE\nvariables:\n myNetwork:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: default\n mySubnetwork:\n fn::invoke:\n Function: gcp:compute:getSubnetwork\n Arguments:\n name: default\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:notebooks/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:notebooks/instance:Instance default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:notebooks/instance:Instance default {{location}}/{{name}}\n```\n\n", + "description": "\u003e **Warning:** `google_notebook_instance` is deprecated and will be removed in a future major release. Use `gcp.workbench.Instance` instead.\n\nA Cloud AI Platform Notebook instance.\n\n\n\u003e **Note:** Due to limitations of the Notebooks Instance API, many fields\nin this resource do not properly detect drift. These fields will also not\nappear in state once imported.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/ai-platform/notebooks/docs/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/ai-platform-notebooks)\n\n## Example Usage\n\n### Notebook Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.notebooks.Instance(\"instance\", {\n name: \"notebooks-instance\",\n location: \"us-west1-a\",\n machineType: \"e2-medium\",\n vmImage: {\n project: \"deeplearning-platform-release\",\n imageFamily: \"tf-latest-cpu\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.notebooks.Instance(\"instance\",\n name=\"notebooks-instance\",\n location=\"us-west1-a\",\n machine_type=\"e2-medium\",\n vm_image={\n \"project\": \"deeplearning-platform-release\",\n \"image_family\": \"tf-latest-cpu\",\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.Notebooks.Instance(\"instance\", new()\n {\n Name = \"notebooks-instance\",\n Location = \"us-west1-a\",\n MachineType = \"e2-medium\",\n VmImage = new Gcp.Notebooks.Inputs.InstanceVmImageArgs\n {\n Project = \"deeplearning-platform-release\",\n ImageFamily = \"tf-latest-cpu\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\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 := notebooks.NewInstance(ctx, \"instance\", \u0026notebooks.InstanceArgs{\n\t\t\tName: pulumi.String(\"notebooks-instance\"),\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tVmImage: \u0026notebooks.InstanceVmImageArgs{\n\t\t\t\tProject: pulumi.String(\"deeplearning-platform-release\"),\n\t\t\t\tImageFamily: pulumi.String(\"tf-latest-cpu\"),\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.notebooks.Instance;\nimport com.pulumi.gcp.notebooks.InstanceArgs;\nimport com.pulumi.gcp.notebooks.inputs.InstanceVmImageArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"notebooks-instance\")\n .location(\"us-west1-a\")\n .machineType(\"e2-medium\")\n .vmImage(InstanceVmImageArgs.builder()\n .project(\"deeplearning-platform-release\")\n .imageFamily(\"tf-latest-cpu\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:notebooks:Instance\n properties:\n name: notebooks-instance\n location: us-west1-a\n machineType: e2-medium\n vmImage:\n project: deeplearning-platform-release\n imageFamily: tf-latest-cpu\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Notebook Instance Basic Stopped\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.notebooks.Instance(\"instance\", {\n name: \"notebooks-instance\",\n location: \"us-west1-a\",\n machineType: \"e2-medium\",\n vmImage: {\n project: \"deeplearning-platform-release\",\n imageFamily: \"tf-latest-cpu\",\n },\n desiredState: \"STOPPED\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.notebooks.Instance(\"instance\",\n name=\"notebooks-instance\",\n location=\"us-west1-a\",\n machine_type=\"e2-medium\",\n vm_image={\n \"project\": \"deeplearning-platform-release\",\n \"image_family\": \"tf-latest-cpu\",\n },\n desired_state=\"STOPPED\")\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.Notebooks.Instance(\"instance\", new()\n {\n Name = \"notebooks-instance\",\n Location = \"us-west1-a\",\n MachineType = \"e2-medium\",\n VmImage = new Gcp.Notebooks.Inputs.InstanceVmImageArgs\n {\n Project = \"deeplearning-platform-release\",\n ImageFamily = \"tf-latest-cpu\",\n },\n DesiredState = \"STOPPED\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\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 := notebooks.NewInstance(ctx, \"instance\", \u0026notebooks.InstanceArgs{\n\t\t\tName: pulumi.String(\"notebooks-instance\"),\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tVmImage: \u0026notebooks.InstanceVmImageArgs{\n\t\t\t\tProject: pulumi.String(\"deeplearning-platform-release\"),\n\t\t\t\tImageFamily: pulumi.String(\"tf-latest-cpu\"),\n\t\t\t},\n\t\t\tDesiredState: pulumi.String(\"STOPPED\"),\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.notebooks.Instance;\nimport com.pulumi.gcp.notebooks.InstanceArgs;\nimport com.pulumi.gcp.notebooks.inputs.InstanceVmImageArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"notebooks-instance\")\n .location(\"us-west1-a\")\n .machineType(\"e2-medium\")\n .vmImage(InstanceVmImageArgs.builder()\n .project(\"deeplearning-platform-release\")\n .imageFamily(\"tf-latest-cpu\")\n .build())\n .desiredState(\"STOPPED\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:notebooks:Instance\n properties:\n name: notebooks-instance\n location: us-west1-a\n machineType: e2-medium\n vmImage:\n project: deeplearning-platform-release\n imageFamily: tf-latest-cpu\n desiredState: STOPPED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Notebook Instance Basic Container\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.notebooks.Instance(\"instance\", {\n name: \"notebooks-instance\",\n location: \"us-west1-a\",\n machineType: \"e2-medium\",\n metadata: {\n \"proxy-mode\": \"service_account\",\n },\n containerImage: {\n repository: \"gcr.io/deeplearning-platform-release/base-cpu\",\n tag: \"latest\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.notebooks.Instance(\"instance\",\n name=\"notebooks-instance\",\n location=\"us-west1-a\",\n machine_type=\"e2-medium\",\n metadata={\n \"proxy-mode\": \"service_account\",\n },\n container_image={\n \"repository\": \"gcr.io/deeplearning-platform-release/base-cpu\",\n \"tag\": \"latest\",\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.Notebooks.Instance(\"instance\", new()\n {\n Name = \"notebooks-instance\",\n Location = \"us-west1-a\",\n MachineType = \"e2-medium\",\n Metadata = \n {\n { \"proxy-mode\", \"service_account\" },\n },\n ContainerImage = new Gcp.Notebooks.Inputs.InstanceContainerImageArgs\n {\n Repository = \"gcr.io/deeplearning-platform-release/base-cpu\",\n Tag = \"latest\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\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 := notebooks.NewInstance(ctx, \"instance\", \u0026notebooks.InstanceArgs{\n\t\t\tName: pulumi.String(\"notebooks-instance\"),\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"proxy-mode\": pulumi.String(\"service_account\"),\n\t\t\t},\n\t\t\tContainerImage: \u0026notebooks.InstanceContainerImageArgs{\n\t\t\t\tRepository: pulumi.String(\"gcr.io/deeplearning-platform-release/base-cpu\"),\n\t\t\t\tTag: pulumi.String(\"latest\"),\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.notebooks.Instance;\nimport com.pulumi.gcp.notebooks.InstanceArgs;\nimport com.pulumi.gcp.notebooks.inputs.InstanceContainerImageArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"notebooks-instance\")\n .location(\"us-west1-a\")\n .machineType(\"e2-medium\")\n .metadata(Map.of(\"proxy-mode\", \"service_account\"))\n .containerImage(InstanceContainerImageArgs.builder()\n .repository(\"gcr.io/deeplearning-platform-release/base-cpu\")\n .tag(\"latest\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:notebooks:Instance\n properties:\n name: notebooks-instance\n location: us-west1-a\n machineType: e2-medium\n metadata:\n proxy-mode: service_account\n containerImage:\n repository: gcr.io/deeplearning-platform-release/base-cpu\n tag: latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Notebook Instance Basic Gpu\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.notebooks.Instance(\"instance\", {\n name: \"notebooks-instance\",\n location: \"us-west1-a\",\n machineType: \"n1-standard-1\",\n installGpuDriver: true,\n acceleratorConfig: {\n type: \"NVIDIA_TESLA_T4\",\n coreCount: 1,\n },\n vmImage: {\n project: \"deeplearning-platform-release\",\n imageFamily: \"tf-latest-gpu\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.notebooks.Instance(\"instance\",\n name=\"notebooks-instance\",\n location=\"us-west1-a\",\n machine_type=\"n1-standard-1\",\n install_gpu_driver=True,\n accelerator_config={\n \"type\": \"NVIDIA_TESLA_T4\",\n \"core_count\": 1,\n },\n vm_image={\n \"project\": \"deeplearning-platform-release\",\n \"image_family\": \"tf-latest-gpu\",\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.Notebooks.Instance(\"instance\", new()\n {\n Name = \"notebooks-instance\",\n Location = \"us-west1-a\",\n MachineType = \"n1-standard-1\",\n InstallGpuDriver = true,\n AcceleratorConfig = new Gcp.Notebooks.Inputs.InstanceAcceleratorConfigArgs\n {\n Type = \"NVIDIA_TESLA_T4\",\n CoreCount = 1,\n },\n VmImage = new Gcp.Notebooks.Inputs.InstanceVmImageArgs\n {\n Project = \"deeplearning-platform-release\",\n ImageFamily = \"tf-latest-gpu\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\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 := notebooks.NewInstance(ctx, \"instance\", \u0026notebooks.InstanceArgs{\n\t\t\tName: pulumi.String(\"notebooks-instance\"),\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tMachineType: pulumi.String(\"n1-standard-1\"),\n\t\t\tInstallGpuDriver: pulumi.Bool(true),\n\t\t\tAcceleratorConfig: \u0026notebooks.InstanceAcceleratorConfigArgs{\n\t\t\t\tType: pulumi.String(\"NVIDIA_TESLA_T4\"),\n\t\t\t\tCoreCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tVmImage: \u0026notebooks.InstanceVmImageArgs{\n\t\t\t\tProject: pulumi.String(\"deeplearning-platform-release\"),\n\t\t\t\tImageFamily: pulumi.String(\"tf-latest-gpu\"),\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.notebooks.Instance;\nimport com.pulumi.gcp.notebooks.InstanceArgs;\nimport com.pulumi.gcp.notebooks.inputs.InstanceAcceleratorConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.InstanceVmImageArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"notebooks-instance\")\n .location(\"us-west1-a\")\n .machineType(\"n1-standard-1\")\n .installGpuDriver(true)\n .acceleratorConfig(InstanceAcceleratorConfigArgs.builder()\n .type(\"NVIDIA_TESLA_T4\")\n .coreCount(1)\n .build())\n .vmImage(InstanceVmImageArgs.builder()\n .project(\"deeplearning-platform-release\")\n .imageFamily(\"tf-latest-gpu\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:notebooks:Instance\n properties:\n name: notebooks-instance\n location: us-west1-a\n machineType: n1-standard-1\n installGpuDriver: true\n acceleratorConfig:\n type: NVIDIA_TESLA_T4\n coreCount: 1\n vmImage:\n project: deeplearning-platform-release\n imageFamily: tf-latest-gpu\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Notebook Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myNetwork = gcp.compute.getNetwork({\n name: \"default\",\n});\nconst mySubnetwork = gcp.compute.getSubnetwork({\n name: \"default\",\n region: \"us-central1\",\n});\nconst instance = new gcp.notebooks.Instance(\"instance\", {\n name: \"notebooks-instance\",\n location: \"us-central1-a\",\n machineType: \"e2-medium\",\n vmImage: {\n project: \"deeplearning-platform-release\",\n imageFamily: \"tf-latest-cpu\",\n },\n instanceOwners: [\"my@service-account.com\"],\n serviceAccount: \"my@service-account.com\",\n installGpuDriver: true,\n bootDiskType: \"PD_SSD\",\n bootDiskSizeGb: 110,\n noPublicIp: true,\n noProxyAccess: true,\n network: myNetwork.then(myNetwork =\u003e myNetwork.id),\n subnet: mySubnetwork.then(mySubnetwork =\u003e mySubnetwork.id),\n labels: {\n k: \"val\",\n },\n metadata: {\n terraform: \"true\",\n },\n serviceAccountScopes: [\n \"https://www.googleapis.com/auth/bigquery\",\n \"https://www.googleapis.com/auth/devstorage.read_write\",\n \"https://www.googleapis.com/auth/cloud-platform\",\n \"https://www.googleapis.com/auth/userinfo.email\",\n ],\n tags: [\n \"foo\",\n \"bar\",\n ],\n diskEncryption: \"CMEK\",\n kmsKey: \"my-crypto-key\",\n desiredState: \"ACTIVE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_network = gcp.compute.get_network(name=\"default\")\nmy_subnetwork = gcp.compute.get_subnetwork(name=\"default\",\n region=\"us-central1\")\ninstance = gcp.notebooks.Instance(\"instance\",\n name=\"notebooks-instance\",\n location=\"us-central1-a\",\n machine_type=\"e2-medium\",\n vm_image={\n \"project\": \"deeplearning-platform-release\",\n \"image_family\": \"tf-latest-cpu\",\n },\n instance_owners=[\"my@service-account.com\"],\n service_account=\"my@service-account.com\",\n install_gpu_driver=True,\n boot_disk_type=\"PD_SSD\",\n boot_disk_size_gb=110,\n no_public_ip=True,\n no_proxy_access=True,\n network=my_network.id,\n subnet=my_subnetwork.id,\n labels={\n \"k\": \"val\",\n },\n metadata={\n \"terraform\": \"true\",\n },\n service_account_scopes=[\n \"https://www.googleapis.com/auth/bigquery\",\n \"https://www.googleapis.com/auth/devstorage.read_write\",\n \"https://www.googleapis.com/auth/cloud-platform\",\n \"https://www.googleapis.com/auth/userinfo.email\",\n ],\n tags=[\n \"foo\",\n \"bar\",\n ],\n disk_encryption=\"CMEK\",\n kms_key=\"my-crypto-key\",\n desired_state=\"ACTIVE\")\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 myNetwork = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"default\",\n });\n\n var mySubnetwork = Gcp.Compute.GetSubnetwork.Invoke(new()\n {\n Name = \"default\",\n Region = \"us-central1\",\n });\n\n var instance = new Gcp.Notebooks.Instance(\"instance\", new()\n {\n Name = \"notebooks-instance\",\n Location = \"us-central1-a\",\n MachineType = \"e2-medium\",\n VmImage = new Gcp.Notebooks.Inputs.InstanceVmImageArgs\n {\n Project = \"deeplearning-platform-release\",\n ImageFamily = \"tf-latest-cpu\",\n },\n InstanceOwners = new[]\n {\n \"my@service-account.com\",\n },\n ServiceAccount = \"my@service-account.com\",\n InstallGpuDriver = true,\n BootDiskType = \"PD_SSD\",\n BootDiskSizeGb = 110,\n NoPublicIp = true,\n NoProxyAccess = true,\n Network = myNetwork.Apply(getNetworkResult =\u003e getNetworkResult.Id),\n Subnet = mySubnetwork.Apply(getSubnetworkResult =\u003e getSubnetworkResult.Id),\n Labels = \n {\n { \"k\", \"val\" },\n },\n Metadata = \n {\n { \"terraform\", \"true\" },\n },\n ServiceAccountScopes = new[]\n {\n \"https://www.googleapis.com/auth/bigquery\",\n \"https://www.googleapis.com/auth/devstorage.read_write\",\n \"https://www.googleapis.com/auth/cloud-platform\",\n \"https://www.googleapis.com/auth/userinfo.email\",\n },\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n DiskEncryption = \"CMEK\",\n KmsKey = \"my-crypto-key\",\n DesiredState = \"ACTIVE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyNetwork, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"default\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmySubnetwork, err := compute.LookupSubnetwork(ctx, \u0026compute.LookupSubnetworkArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t\tRegion: pulumi.StringRef(\"us-central1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = notebooks.NewInstance(ctx, \"instance\", \u0026notebooks.InstanceArgs{\n\t\t\tName: pulumi.String(\"notebooks-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tVmImage: \u0026notebooks.InstanceVmImageArgs{\n\t\t\t\tProject: pulumi.String(\"deeplearning-platform-release\"),\n\t\t\t\tImageFamily: pulumi.String(\"tf-latest-cpu\"),\n\t\t\t},\n\t\t\tInstanceOwners: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my@service-account.com\"),\n\t\t\t},\n\t\t\tServiceAccount: pulumi.String(\"my@service-account.com\"),\n\t\t\tInstallGpuDriver: pulumi.Bool(true),\n\t\t\tBootDiskType: pulumi.String(\"PD_SSD\"),\n\t\t\tBootDiskSizeGb: pulumi.Int(110),\n\t\t\tNoPublicIp: pulumi.Bool(true),\n\t\t\tNoProxyAccess: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(myNetwork.Id),\n\t\t\tSubnet: pulumi.String(mySubnetwork.Id),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"k\": pulumi.String(\"val\"),\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"terraform\": pulumi.String(\"true\"),\n\t\t\t},\n\t\t\tServiceAccountScopes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/bigquery\"),\n\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/devstorage.read_write\"),\n\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/userinfo.email\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDiskEncryption: pulumi.String(\"CMEK\"),\n\t\t\tKmsKey: pulumi.String(\"my-crypto-key\"),\n\t\t\tDesiredState: pulumi.String(\"ACTIVE\"),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.compute.inputs.GetSubnetworkArgs;\nimport com.pulumi.gcp.notebooks.Instance;\nimport com.pulumi.gcp.notebooks.InstanceArgs;\nimport com.pulumi.gcp.notebooks.inputs.InstanceVmImageArgs;\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 myNetwork = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"default\")\n .build());\n\n final var mySubnetwork = ComputeFunctions.getSubnetwork(GetSubnetworkArgs.builder()\n .name(\"default\")\n .region(\"us-central1\")\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .name(\"notebooks-instance\")\n .location(\"us-central1-a\")\n .machineType(\"e2-medium\")\n .vmImage(InstanceVmImageArgs.builder()\n .project(\"deeplearning-platform-release\")\n .imageFamily(\"tf-latest-cpu\")\n .build())\n .instanceOwners(\"my@service-account.com\")\n .serviceAccount(\"my@service-account.com\")\n .installGpuDriver(true)\n .bootDiskType(\"PD_SSD\")\n .bootDiskSizeGb(110)\n .noPublicIp(true)\n .noProxyAccess(true)\n .network(myNetwork.applyValue(getNetworkResult -\u003e getNetworkResult.id()))\n .subnet(mySubnetwork.applyValue(getSubnetworkResult -\u003e getSubnetworkResult.id()))\n .labels(Map.of(\"k\", \"val\"))\n .metadata(Map.of(\"terraform\", \"true\"))\n .serviceAccountScopes( \n \"https://www.googleapis.com/auth/bigquery\",\n \"https://www.googleapis.com/auth/devstorage.read_write\",\n \"https://www.googleapis.com/auth/cloud-platform\",\n \"https://www.googleapis.com/auth/userinfo.email\")\n .tags( \n \"foo\",\n \"bar\")\n .diskEncryption(\"CMEK\")\n .kmsKey(\"my-crypto-key\")\n .desiredState(\"ACTIVE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:notebooks:Instance\n properties:\n name: notebooks-instance\n location: us-central1-a\n machineType: e2-medium\n vmImage:\n project: deeplearning-platform-release\n imageFamily: tf-latest-cpu\n instanceOwners:\n - my@service-account.com\n serviceAccount: my@service-account.com\n installGpuDriver: true\n bootDiskType: PD_SSD\n bootDiskSizeGb: 110\n noPublicIp: true\n noProxyAccess: true\n network: ${myNetwork.id}\n subnet: ${mySubnetwork.id}\n labels:\n k: val\n metadata:\n terraform: 'true'\n serviceAccountScopes:\n - https://www.googleapis.com/auth/bigquery\n - https://www.googleapis.com/auth/devstorage.read_write\n - https://www.googleapis.com/auth/cloud-platform\n - https://www.googleapis.com/auth/userinfo.email\n tags:\n - foo\n - bar\n diskEncryption: CMEK\n kmsKey: my-crypto-key\n desiredState: ACTIVE\nvariables:\n myNetwork:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: default\n mySubnetwork:\n fn::invoke:\n Function: gcp:compute:getSubnetwork\n Arguments:\n name: default\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:notebooks/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:notebooks/instance:Instance default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:notebooks/instance:Instance default {{location}}/{{name}}\n```\n\n", "properties": { "acceleratorConfig": { "$ref": "#/types/gcp:notebooks/InstanceAcceleratorConfig:InstanceAcceleratorConfig", @@ -224056,7 +224056,7 @@ } }, "gcp:notebooks/runtime:Runtime": { - "description": "A Cloud AI Platform Notebook runtime.\n\n\n\u003e **Note:** Due to limitations of the Notebooks Runtime API, many fields\nin this resource do not properly detect drift. These fields will also not\nappear in state once imported.\n\n\nTo get more information about Runtime, see:\n\n* [API documentation](https://cloud.google.com/ai-platform/notebooks/docs/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/ai-platform-notebooks)\n\n## Example Usage\n\n### Notebook Runtime Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst runtime = new gcp.notebooks.Runtime(\"runtime\", {\n name: \"notebooks-runtime\",\n location: \"us-central1\",\n accessConfig: {\n accessType: \"SINGLE_USER\",\n runtimeOwner: \"admin@hashicorptest.com\",\n },\n virtualMachine: {\n virtualMachineConfig: {\n machineType: \"n1-standard-4\",\n dataDisk: {\n initializeParams: {\n diskSizeGb: 100,\n diskType: \"PD_STANDARD\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nruntime = gcp.notebooks.Runtime(\"runtime\",\n name=\"notebooks-runtime\",\n location=\"us-central1\",\n access_config={\n \"accessType\": \"SINGLE_USER\",\n \"runtimeOwner\": \"admin@hashicorptest.com\",\n },\n virtual_machine={\n \"virtualMachineConfig\": {\n \"machineType\": \"n1-standard-4\",\n \"dataDisk\": {\n \"initializeParams\": {\n \"diskSizeGb\": 100,\n \"diskType\": \"PD_STANDARD\",\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 runtime = new Gcp.Notebooks.Runtime(\"runtime\", new()\n {\n Name = \"notebooks-runtime\",\n Location = \"us-central1\",\n AccessConfig = new Gcp.Notebooks.Inputs.RuntimeAccessConfigArgs\n {\n AccessType = \"SINGLE_USER\",\n RuntimeOwner = \"admin@hashicorptest.com\",\n },\n VirtualMachine = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineArgs\n {\n VirtualMachineConfig = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigArgs\n {\n MachineType = \"n1-standard-4\",\n DataDisk = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs\n {\n InitializeParams = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs\n {\n DiskSizeGb = 100,\n DiskType = \"PD_STANDARD\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\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 := notebooks.NewRuntime(ctx, \"runtime\", \u0026notebooks.RuntimeArgs{\n\t\t\tName: pulumi.String(\"notebooks-runtime\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAccessConfig: \u0026notebooks.RuntimeAccessConfigArgs{\n\t\t\t\tAccessType: pulumi.String(\"SINGLE_USER\"),\n\t\t\t\tRuntimeOwner: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t},\n\t\t\tVirtualMachine: \u0026notebooks.RuntimeVirtualMachineArgs{\n\t\t\t\tVirtualMachineConfig: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\t\tDataDisk: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs{\n\t\t\t\t\t\tInitializeParams: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs{\n\t\t\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\t\t\tDiskType: pulumi.String(\"PD_STANDARD\"),\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.notebooks.Runtime;\nimport com.pulumi.gcp.notebooks.RuntimeArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeAccessConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs;\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 runtime = new Runtime(\"runtime\", RuntimeArgs.builder()\n .name(\"notebooks-runtime\")\n .location(\"us-central1\")\n .accessConfig(RuntimeAccessConfigArgs.builder()\n .accessType(\"SINGLE_USER\")\n .runtimeOwner(\"admin@hashicorptest.com\")\n .build())\n .virtualMachine(RuntimeVirtualMachineArgs.builder()\n .virtualMachineConfig(RuntimeVirtualMachineVirtualMachineConfigArgs.builder()\n .machineType(\"n1-standard-4\")\n .dataDisk(RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs.builder()\n .initializeParams(RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs.builder()\n .diskSizeGb(\"100\")\n .diskType(\"PD_STANDARD\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n runtime:\n type: gcp:notebooks:Runtime\n properties:\n name: notebooks-runtime\n location: us-central1\n accessConfig:\n accessType: SINGLE_USER\n runtimeOwner: admin@hashicorptest.com\n virtualMachine:\n virtualMachineConfig:\n machineType: n1-standard-4\n dataDisk:\n initializeParams:\n diskSizeGb: '100'\n diskType: PD_STANDARD\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Notebook Runtime Basic Gpu\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst runtimeGpu = new gcp.notebooks.Runtime(\"runtime_gpu\", {\n name: \"notebooks-runtime-gpu\",\n location: \"us-central1\",\n accessConfig: {\n accessType: \"SINGLE_USER\",\n runtimeOwner: \"admin@hashicorptest.com\",\n },\n softwareConfig: {\n installGpuDriver: true,\n },\n virtualMachine: {\n virtualMachineConfig: {\n machineType: \"n1-standard-4\",\n dataDisk: {\n initializeParams: {\n diskSizeGb: 100,\n diskType: \"PD_STANDARD\",\n },\n },\n acceleratorConfig: {\n coreCount: 1,\n type: \"NVIDIA_TESLA_V100\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nruntime_gpu = gcp.notebooks.Runtime(\"runtime_gpu\",\n name=\"notebooks-runtime-gpu\",\n location=\"us-central1\",\n access_config={\n \"accessType\": \"SINGLE_USER\",\n \"runtimeOwner\": \"admin@hashicorptest.com\",\n },\n software_config={\n \"installGpuDriver\": True,\n },\n virtual_machine={\n \"virtualMachineConfig\": {\n \"machineType\": \"n1-standard-4\",\n \"dataDisk\": {\n \"initializeParams\": {\n \"diskSizeGb\": 100,\n \"diskType\": \"PD_STANDARD\",\n },\n },\n \"acceleratorConfig\": {\n \"coreCount\": 1,\n \"type\": \"NVIDIA_TESLA_V100\",\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 runtimeGpu = new Gcp.Notebooks.Runtime(\"runtime_gpu\", new()\n {\n Name = \"notebooks-runtime-gpu\",\n Location = \"us-central1\",\n AccessConfig = new Gcp.Notebooks.Inputs.RuntimeAccessConfigArgs\n {\n AccessType = \"SINGLE_USER\",\n RuntimeOwner = \"admin@hashicorptest.com\",\n },\n SoftwareConfig = new Gcp.Notebooks.Inputs.RuntimeSoftwareConfigArgs\n {\n InstallGpuDriver = true,\n },\n VirtualMachine = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineArgs\n {\n VirtualMachineConfig = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigArgs\n {\n MachineType = \"n1-standard-4\",\n DataDisk = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs\n {\n InitializeParams = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs\n {\n DiskSizeGb = 100,\n DiskType = \"PD_STANDARD\",\n },\n },\n AcceleratorConfig = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigAcceleratorConfigArgs\n {\n CoreCount = 1,\n Type = \"NVIDIA_TESLA_V100\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\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 := notebooks.NewRuntime(ctx, \"runtime_gpu\", \u0026notebooks.RuntimeArgs{\n\t\t\tName: pulumi.String(\"notebooks-runtime-gpu\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAccessConfig: \u0026notebooks.RuntimeAccessConfigArgs{\n\t\t\t\tAccessType: pulumi.String(\"SINGLE_USER\"),\n\t\t\t\tRuntimeOwner: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t},\n\t\t\tSoftwareConfig: \u0026notebooks.RuntimeSoftwareConfigArgs{\n\t\t\t\tInstallGpuDriver: pulumi.Bool(true),\n\t\t\t},\n\t\t\tVirtualMachine: \u0026notebooks.RuntimeVirtualMachineArgs{\n\t\t\t\tVirtualMachineConfig: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\t\tDataDisk: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs{\n\t\t\t\t\t\tInitializeParams: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs{\n\t\t\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\t\t\tDiskType: pulumi.String(\"PD_STANDARD\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAcceleratorConfig: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigAcceleratorConfigArgs{\n\t\t\t\t\t\tCoreCount: pulumi.Int(1),\n\t\t\t\t\t\tType: pulumi.String(\"NVIDIA_TESLA_V100\"),\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.notebooks.Runtime;\nimport com.pulumi.gcp.notebooks.RuntimeArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeAccessConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeSoftwareConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigAcceleratorConfigArgs;\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 runtimeGpu = new Runtime(\"runtimeGpu\", RuntimeArgs.builder()\n .name(\"notebooks-runtime-gpu\")\n .location(\"us-central1\")\n .accessConfig(RuntimeAccessConfigArgs.builder()\n .accessType(\"SINGLE_USER\")\n .runtimeOwner(\"admin@hashicorptest.com\")\n .build())\n .softwareConfig(RuntimeSoftwareConfigArgs.builder()\n .installGpuDriver(true)\n .build())\n .virtualMachine(RuntimeVirtualMachineArgs.builder()\n .virtualMachineConfig(RuntimeVirtualMachineVirtualMachineConfigArgs.builder()\n .machineType(\"n1-standard-4\")\n .dataDisk(RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs.builder()\n .initializeParams(RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs.builder()\n .diskSizeGb(\"100\")\n .diskType(\"PD_STANDARD\")\n .build())\n .build())\n .acceleratorConfig(RuntimeVirtualMachineVirtualMachineConfigAcceleratorConfigArgs.builder()\n .coreCount(\"1\")\n .type(\"NVIDIA_TESLA_V100\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n runtimeGpu:\n type: gcp:notebooks:Runtime\n name: runtime_gpu\n properties:\n name: notebooks-runtime-gpu\n location: us-central1\n accessConfig:\n accessType: SINGLE_USER\n runtimeOwner: admin@hashicorptest.com\n softwareConfig:\n installGpuDriver: true\n virtualMachine:\n virtualMachineConfig:\n machineType: n1-standard-4\n dataDisk:\n initializeParams:\n diskSizeGb: '100'\n diskType: PD_STANDARD\n acceleratorConfig:\n coreCount: '1'\n type: NVIDIA_TESLA_V100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Notebook Runtime Basic Container\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst runtimeContainer = new gcp.notebooks.Runtime(\"runtime_container\", {\n name: \"notebooks-runtime-container\",\n location: \"us-central1\",\n accessConfig: {\n accessType: \"SINGLE_USER\",\n runtimeOwner: \"admin@hashicorptest.com\",\n },\n virtualMachine: {\n virtualMachineConfig: {\n machineType: \"n1-standard-4\",\n dataDisk: {\n initializeParams: {\n diskSizeGb: 100,\n diskType: \"PD_STANDARD\",\n },\n },\n containerImages: [\n {\n repository: \"gcr.io/deeplearning-platform-release/base-cpu\",\n tag: \"latest\",\n },\n {\n repository: \"gcr.io/deeplearning-platform-release/beam-notebooks\",\n tag: \"latest\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nruntime_container = gcp.notebooks.Runtime(\"runtime_container\",\n name=\"notebooks-runtime-container\",\n location=\"us-central1\",\n access_config={\n \"accessType\": \"SINGLE_USER\",\n \"runtimeOwner\": \"admin@hashicorptest.com\",\n },\n virtual_machine={\n \"virtualMachineConfig\": {\n \"machineType\": \"n1-standard-4\",\n \"dataDisk\": {\n \"initializeParams\": {\n \"diskSizeGb\": 100,\n \"diskType\": \"PD_STANDARD\",\n },\n },\n \"containerImages\": [\n {\n \"repository\": \"gcr.io/deeplearning-platform-release/base-cpu\",\n \"tag\": \"latest\",\n },\n {\n \"repository\": \"gcr.io/deeplearning-platform-release/beam-notebooks\",\n \"tag\": \"latest\",\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 runtimeContainer = new Gcp.Notebooks.Runtime(\"runtime_container\", new()\n {\n Name = \"notebooks-runtime-container\",\n Location = \"us-central1\",\n AccessConfig = new Gcp.Notebooks.Inputs.RuntimeAccessConfigArgs\n {\n AccessType = \"SINGLE_USER\",\n RuntimeOwner = \"admin@hashicorptest.com\",\n },\n VirtualMachine = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineArgs\n {\n VirtualMachineConfig = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigArgs\n {\n MachineType = \"n1-standard-4\",\n DataDisk = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs\n {\n InitializeParams = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs\n {\n DiskSizeGb = 100,\n DiskType = \"PD_STANDARD\",\n },\n },\n ContainerImages = new[]\n {\n new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigContainerImageArgs\n {\n Repository = \"gcr.io/deeplearning-platform-release/base-cpu\",\n Tag = \"latest\",\n },\n new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigContainerImageArgs\n {\n Repository = \"gcr.io/deeplearning-platform-release/beam-notebooks\",\n Tag = \"latest\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\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 := notebooks.NewRuntime(ctx, \"runtime_container\", \u0026notebooks.RuntimeArgs{\n\t\t\tName: pulumi.String(\"notebooks-runtime-container\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAccessConfig: \u0026notebooks.RuntimeAccessConfigArgs{\n\t\t\t\tAccessType: pulumi.String(\"SINGLE_USER\"),\n\t\t\t\tRuntimeOwner: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t},\n\t\t\tVirtualMachine: \u0026notebooks.RuntimeVirtualMachineArgs{\n\t\t\t\tVirtualMachineConfig: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\t\tDataDisk: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs{\n\t\t\t\t\t\tInitializeParams: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs{\n\t\t\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\t\t\tDiskType: pulumi.String(\"PD_STANDARD\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tContainerImages: notebooks.RuntimeVirtualMachineVirtualMachineConfigContainerImageArray{\n\t\t\t\t\t\t\u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigContainerImageArgs{\n\t\t\t\t\t\t\tRepository: pulumi.String(\"gcr.io/deeplearning-platform-release/base-cpu\"),\n\t\t\t\t\t\t\tTag: pulumi.String(\"latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigContainerImageArgs{\n\t\t\t\t\t\t\tRepository: pulumi.String(\"gcr.io/deeplearning-platform-release/beam-notebooks\"),\n\t\t\t\t\t\t\tTag: pulumi.String(\"latest\"),\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.notebooks.Runtime;\nimport com.pulumi.gcp.notebooks.RuntimeArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeAccessConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs;\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 runtimeContainer = new Runtime(\"runtimeContainer\", RuntimeArgs.builder()\n .name(\"notebooks-runtime-container\")\n .location(\"us-central1\")\n .accessConfig(RuntimeAccessConfigArgs.builder()\n .accessType(\"SINGLE_USER\")\n .runtimeOwner(\"admin@hashicorptest.com\")\n .build())\n .virtualMachine(RuntimeVirtualMachineArgs.builder()\n .virtualMachineConfig(RuntimeVirtualMachineVirtualMachineConfigArgs.builder()\n .machineType(\"n1-standard-4\")\n .dataDisk(RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs.builder()\n .initializeParams(RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs.builder()\n .diskSizeGb(\"100\")\n .diskType(\"PD_STANDARD\")\n .build())\n .build())\n .containerImages( \n RuntimeVirtualMachineVirtualMachineConfigContainerImageArgs.builder()\n .repository(\"gcr.io/deeplearning-platform-release/base-cpu\")\n .tag(\"latest\")\n .build(),\n RuntimeVirtualMachineVirtualMachineConfigContainerImageArgs.builder()\n .repository(\"gcr.io/deeplearning-platform-release/beam-notebooks\")\n .tag(\"latest\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n runtimeContainer:\n type: gcp:notebooks:Runtime\n name: runtime_container\n properties:\n name: notebooks-runtime-container\n location: us-central1\n accessConfig:\n accessType: SINGLE_USER\n runtimeOwner: admin@hashicorptest.com\n virtualMachine:\n virtualMachineConfig:\n machineType: n1-standard-4\n dataDisk:\n initializeParams:\n diskSizeGb: '100'\n diskType: PD_STANDARD\n containerImages:\n - repository: gcr.io/deeplearning-platform-release/base-cpu\n tag: latest\n - repository: gcr.io/deeplearning-platform-release/beam-notebooks\n tag: latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Notebook Runtime Kernels\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst runtimeContainer = new gcp.notebooks.Runtime(\"runtime_container\", {\n name: \"notebooks-runtime-kernel\",\n location: \"us-central1\",\n accessConfig: {\n accessType: \"SINGLE_USER\",\n runtimeOwner: \"admin@hashicorptest.com\",\n },\n softwareConfig: {\n kernels: [{\n repository: \"gcr.io/deeplearning-platform-release/base-cpu\",\n tag: \"latest\",\n }],\n },\n virtualMachine: {\n virtualMachineConfig: {\n machineType: \"n1-standard-4\",\n dataDisk: {\n initializeParams: {\n diskSizeGb: 100,\n diskType: \"PD_STANDARD\",\n },\n },\n },\n },\n labels: {\n k: \"val\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nruntime_container = gcp.notebooks.Runtime(\"runtime_container\",\n name=\"notebooks-runtime-kernel\",\n location=\"us-central1\",\n access_config={\n \"accessType\": \"SINGLE_USER\",\n \"runtimeOwner\": \"admin@hashicorptest.com\",\n },\n software_config={\n \"kernels\": [{\n \"repository\": \"gcr.io/deeplearning-platform-release/base-cpu\",\n \"tag\": \"latest\",\n }],\n },\n virtual_machine={\n \"virtualMachineConfig\": {\n \"machineType\": \"n1-standard-4\",\n \"dataDisk\": {\n \"initializeParams\": {\n \"diskSizeGb\": 100,\n \"diskType\": \"PD_STANDARD\",\n },\n },\n },\n },\n labels={\n \"k\": \"val\",\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 runtimeContainer = new Gcp.Notebooks.Runtime(\"runtime_container\", new()\n {\n Name = \"notebooks-runtime-kernel\",\n Location = \"us-central1\",\n AccessConfig = new Gcp.Notebooks.Inputs.RuntimeAccessConfigArgs\n {\n AccessType = \"SINGLE_USER\",\n RuntimeOwner = \"admin@hashicorptest.com\",\n },\n SoftwareConfig = new Gcp.Notebooks.Inputs.RuntimeSoftwareConfigArgs\n {\n Kernels = new[]\n {\n new Gcp.Notebooks.Inputs.RuntimeSoftwareConfigKernelArgs\n {\n Repository = \"gcr.io/deeplearning-platform-release/base-cpu\",\n Tag = \"latest\",\n },\n },\n },\n VirtualMachine = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineArgs\n {\n VirtualMachineConfig = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigArgs\n {\n MachineType = \"n1-standard-4\",\n DataDisk = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs\n {\n InitializeParams = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs\n {\n DiskSizeGb = 100,\n DiskType = \"PD_STANDARD\",\n },\n },\n },\n },\n Labels = \n {\n { \"k\", \"val\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\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 := notebooks.NewRuntime(ctx, \"runtime_container\", \u0026notebooks.RuntimeArgs{\n\t\t\tName: pulumi.String(\"notebooks-runtime-kernel\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAccessConfig: \u0026notebooks.RuntimeAccessConfigArgs{\n\t\t\t\tAccessType: pulumi.String(\"SINGLE_USER\"),\n\t\t\t\tRuntimeOwner: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t},\n\t\t\tSoftwareConfig: \u0026notebooks.RuntimeSoftwareConfigArgs{\n\t\t\t\tKernels: notebooks.RuntimeSoftwareConfigKernelArray{\n\t\t\t\t\t\u0026notebooks.RuntimeSoftwareConfigKernelArgs{\n\t\t\t\t\t\tRepository: pulumi.String(\"gcr.io/deeplearning-platform-release/base-cpu\"),\n\t\t\t\t\t\tTag: pulumi.String(\"latest\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tVirtualMachine: \u0026notebooks.RuntimeVirtualMachineArgs{\n\t\t\t\tVirtualMachineConfig: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\t\tDataDisk: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs{\n\t\t\t\t\t\tInitializeParams: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs{\n\t\t\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\t\t\tDiskType: pulumi.String(\"PD_STANDARD\"),\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\tLabels: pulumi.StringMap{\n\t\t\t\t\"k\": pulumi.String(\"val\"),\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.notebooks.Runtime;\nimport com.pulumi.gcp.notebooks.RuntimeArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeAccessConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeSoftwareConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs;\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 runtimeContainer = new Runtime(\"runtimeContainer\", RuntimeArgs.builder()\n .name(\"notebooks-runtime-kernel\")\n .location(\"us-central1\")\n .accessConfig(RuntimeAccessConfigArgs.builder()\n .accessType(\"SINGLE_USER\")\n .runtimeOwner(\"admin@hashicorptest.com\")\n .build())\n .softwareConfig(RuntimeSoftwareConfigArgs.builder()\n .kernels(RuntimeSoftwareConfigKernelArgs.builder()\n .repository(\"gcr.io/deeplearning-platform-release/base-cpu\")\n .tag(\"latest\")\n .build())\n .build())\n .virtualMachine(RuntimeVirtualMachineArgs.builder()\n .virtualMachineConfig(RuntimeVirtualMachineVirtualMachineConfigArgs.builder()\n .machineType(\"n1-standard-4\")\n .dataDisk(RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs.builder()\n .initializeParams(RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs.builder()\n .diskSizeGb(\"100\")\n .diskType(\"PD_STANDARD\")\n .build())\n .build())\n .build())\n .build())\n .labels(Map.of(\"k\", \"val\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n runtimeContainer:\n type: gcp:notebooks:Runtime\n name: runtime_container\n properties:\n name: notebooks-runtime-kernel\n location: us-central1\n accessConfig:\n accessType: SINGLE_USER\n runtimeOwner: admin@hashicorptest.com\n softwareConfig:\n kernels:\n - repository: gcr.io/deeplearning-platform-release/base-cpu\n tag: latest\n virtualMachine:\n virtualMachineConfig:\n machineType: n1-standard-4\n dataDisk:\n initializeParams:\n diskSizeGb: '100'\n diskType: PD_STANDARD\n labels:\n k: val\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Notebook Runtime Script\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst runtimeContainer = new gcp.notebooks.Runtime(\"runtime_container\", {\n name: \"notebooks-runtime-script\",\n location: \"us-central1\",\n accessConfig: {\n accessType: \"SINGLE_USER\",\n runtimeOwner: \"admin@hashicorptest.com\",\n },\n softwareConfig: {\n postStartupScriptBehavior: \"RUN_EVERY_START\",\n },\n virtualMachine: {\n virtualMachineConfig: {\n machineType: \"n1-standard-4\",\n dataDisk: {\n initializeParams: {\n diskSizeGb: 100,\n diskType: \"PD_STANDARD\",\n },\n },\n },\n },\n labels: {\n k: \"val\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nruntime_container = gcp.notebooks.Runtime(\"runtime_container\",\n name=\"notebooks-runtime-script\",\n location=\"us-central1\",\n access_config={\n \"accessType\": \"SINGLE_USER\",\n \"runtimeOwner\": \"admin@hashicorptest.com\",\n },\n software_config={\n \"postStartupScriptBehavior\": \"RUN_EVERY_START\",\n },\n virtual_machine={\n \"virtualMachineConfig\": {\n \"machineType\": \"n1-standard-4\",\n \"dataDisk\": {\n \"initializeParams\": {\n \"diskSizeGb\": 100,\n \"diskType\": \"PD_STANDARD\",\n },\n },\n },\n },\n labels={\n \"k\": \"val\",\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 runtimeContainer = new Gcp.Notebooks.Runtime(\"runtime_container\", new()\n {\n Name = \"notebooks-runtime-script\",\n Location = \"us-central1\",\n AccessConfig = new Gcp.Notebooks.Inputs.RuntimeAccessConfigArgs\n {\n AccessType = \"SINGLE_USER\",\n RuntimeOwner = \"admin@hashicorptest.com\",\n },\n SoftwareConfig = new Gcp.Notebooks.Inputs.RuntimeSoftwareConfigArgs\n {\n PostStartupScriptBehavior = \"RUN_EVERY_START\",\n },\n VirtualMachine = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineArgs\n {\n VirtualMachineConfig = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigArgs\n {\n MachineType = \"n1-standard-4\",\n DataDisk = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs\n {\n InitializeParams = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs\n {\n DiskSizeGb = 100,\n DiskType = \"PD_STANDARD\",\n },\n },\n },\n },\n Labels = \n {\n { \"k\", \"val\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\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 := notebooks.NewRuntime(ctx, \"runtime_container\", \u0026notebooks.RuntimeArgs{\n\t\t\tName: pulumi.String(\"notebooks-runtime-script\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAccessConfig: \u0026notebooks.RuntimeAccessConfigArgs{\n\t\t\t\tAccessType: pulumi.String(\"SINGLE_USER\"),\n\t\t\t\tRuntimeOwner: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t},\n\t\t\tSoftwareConfig: \u0026notebooks.RuntimeSoftwareConfigArgs{\n\t\t\t\tPostStartupScriptBehavior: pulumi.String(\"RUN_EVERY_START\"),\n\t\t\t},\n\t\t\tVirtualMachine: \u0026notebooks.RuntimeVirtualMachineArgs{\n\t\t\t\tVirtualMachineConfig: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\t\tDataDisk: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs{\n\t\t\t\t\t\tInitializeParams: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs{\n\t\t\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\t\t\tDiskType: pulumi.String(\"PD_STANDARD\"),\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\tLabels: pulumi.StringMap{\n\t\t\t\t\"k\": pulumi.String(\"val\"),\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.notebooks.Runtime;\nimport com.pulumi.gcp.notebooks.RuntimeArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeAccessConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeSoftwareConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs;\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 runtimeContainer = new Runtime(\"runtimeContainer\", RuntimeArgs.builder()\n .name(\"notebooks-runtime-script\")\n .location(\"us-central1\")\n .accessConfig(RuntimeAccessConfigArgs.builder()\n .accessType(\"SINGLE_USER\")\n .runtimeOwner(\"admin@hashicorptest.com\")\n .build())\n .softwareConfig(RuntimeSoftwareConfigArgs.builder()\n .postStartupScriptBehavior(\"RUN_EVERY_START\")\n .build())\n .virtualMachine(RuntimeVirtualMachineArgs.builder()\n .virtualMachineConfig(RuntimeVirtualMachineVirtualMachineConfigArgs.builder()\n .machineType(\"n1-standard-4\")\n .dataDisk(RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs.builder()\n .initializeParams(RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs.builder()\n .diskSizeGb(\"100\")\n .diskType(\"PD_STANDARD\")\n .build())\n .build())\n .build())\n .build())\n .labels(Map.of(\"k\", \"val\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n runtimeContainer:\n type: gcp:notebooks:Runtime\n name: runtime_container\n properties:\n name: notebooks-runtime-script\n location: us-central1\n accessConfig:\n accessType: SINGLE_USER\n runtimeOwner: admin@hashicorptest.com\n softwareConfig:\n postStartupScriptBehavior: RUN_EVERY_START\n virtualMachine:\n virtualMachineConfig:\n machineType: n1-standard-4\n dataDisk:\n initializeParams:\n diskSizeGb: '100'\n diskType: PD_STANDARD\n labels:\n k: val\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRuntime can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/runtimes/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Runtime can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:notebooks/runtime:Runtime default projects/{{project}}/locations/{{location}}/runtimes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:notebooks/runtime:Runtime default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:notebooks/runtime:Runtime default {{location}}/{{name}}\n```\n\n", + "description": "A Cloud AI Platform Notebook runtime.\n\n\n\u003e **Note:** Due to limitations of the Notebooks Runtime API, many fields\nin this resource do not properly detect drift. These fields will also not\nappear in state once imported.\n\n\nTo get more information about Runtime, see:\n\n* [API documentation](https://cloud.google.com/ai-platform/notebooks/docs/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/ai-platform-notebooks)\n\n## Example Usage\n\n### Notebook Runtime Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst runtime = new gcp.notebooks.Runtime(\"runtime\", {\n name: \"notebooks-runtime\",\n location: \"us-central1\",\n accessConfig: {\n accessType: \"SINGLE_USER\",\n runtimeOwner: \"admin@hashicorptest.com\",\n },\n virtualMachine: {\n virtualMachineConfig: {\n machineType: \"n1-standard-4\",\n dataDisk: {\n initializeParams: {\n diskSizeGb: 100,\n diskType: \"PD_STANDARD\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nruntime = gcp.notebooks.Runtime(\"runtime\",\n name=\"notebooks-runtime\",\n location=\"us-central1\",\n access_config={\n \"access_type\": \"SINGLE_USER\",\n \"runtime_owner\": \"admin@hashicorptest.com\",\n },\n virtual_machine={\n \"virtual_machine_config\": {\n \"machine_type\": \"n1-standard-4\",\n \"data_disk\": {\n \"initialize_params\": {\n \"disk_size_gb\": 100,\n \"disk_type\": \"PD_STANDARD\",\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 runtime = new Gcp.Notebooks.Runtime(\"runtime\", new()\n {\n Name = \"notebooks-runtime\",\n Location = \"us-central1\",\n AccessConfig = new Gcp.Notebooks.Inputs.RuntimeAccessConfigArgs\n {\n AccessType = \"SINGLE_USER\",\n RuntimeOwner = \"admin@hashicorptest.com\",\n },\n VirtualMachine = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineArgs\n {\n VirtualMachineConfig = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigArgs\n {\n MachineType = \"n1-standard-4\",\n DataDisk = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs\n {\n InitializeParams = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs\n {\n DiskSizeGb = 100,\n DiskType = \"PD_STANDARD\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\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 := notebooks.NewRuntime(ctx, \"runtime\", \u0026notebooks.RuntimeArgs{\n\t\t\tName: pulumi.String(\"notebooks-runtime\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAccessConfig: \u0026notebooks.RuntimeAccessConfigArgs{\n\t\t\t\tAccessType: pulumi.String(\"SINGLE_USER\"),\n\t\t\t\tRuntimeOwner: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t},\n\t\t\tVirtualMachine: \u0026notebooks.RuntimeVirtualMachineArgs{\n\t\t\t\tVirtualMachineConfig: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\t\tDataDisk: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs{\n\t\t\t\t\t\tInitializeParams: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs{\n\t\t\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\t\t\tDiskType: pulumi.String(\"PD_STANDARD\"),\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.notebooks.Runtime;\nimport com.pulumi.gcp.notebooks.RuntimeArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeAccessConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs;\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 runtime = new Runtime(\"runtime\", RuntimeArgs.builder()\n .name(\"notebooks-runtime\")\n .location(\"us-central1\")\n .accessConfig(RuntimeAccessConfigArgs.builder()\n .accessType(\"SINGLE_USER\")\n .runtimeOwner(\"admin@hashicorptest.com\")\n .build())\n .virtualMachine(RuntimeVirtualMachineArgs.builder()\n .virtualMachineConfig(RuntimeVirtualMachineVirtualMachineConfigArgs.builder()\n .machineType(\"n1-standard-4\")\n .dataDisk(RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs.builder()\n .initializeParams(RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs.builder()\n .diskSizeGb(\"100\")\n .diskType(\"PD_STANDARD\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n runtime:\n type: gcp:notebooks:Runtime\n properties:\n name: notebooks-runtime\n location: us-central1\n accessConfig:\n accessType: SINGLE_USER\n runtimeOwner: admin@hashicorptest.com\n virtualMachine:\n virtualMachineConfig:\n machineType: n1-standard-4\n dataDisk:\n initializeParams:\n diskSizeGb: '100'\n diskType: PD_STANDARD\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Notebook Runtime Basic Gpu\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst runtimeGpu = new gcp.notebooks.Runtime(\"runtime_gpu\", {\n name: \"notebooks-runtime-gpu\",\n location: \"us-central1\",\n accessConfig: {\n accessType: \"SINGLE_USER\",\n runtimeOwner: \"admin@hashicorptest.com\",\n },\n softwareConfig: {\n installGpuDriver: true,\n },\n virtualMachine: {\n virtualMachineConfig: {\n machineType: \"n1-standard-4\",\n dataDisk: {\n initializeParams: {\n diskSizeGb: 100,\n diskType: \"PD_STANDARD\",\n },\n },\n acceleratorConfig: {\n coreCount: 1,\n type: \"NVIDIA_TESLA_V100\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nruntime_gpu = gcp.notebooks.Runtime(\"runtime_gpu\",\n name=\"notebooks-runtime-gpu\",\n location=\"us-central1\",\n access_config={\n \"access_type\": \"SINGLE_USER\",\n \"runtime_owner\": \"admin@hashicorptest.com\",\n },\n software_config={\n \"install_gpu_driver\": True,\n },\n virtual_machine={\n \"virtual_machine_config\": {\n \"machine_type\": \"n1-standard-4\",\n \"data_disk\": {\n \"initialize_params\": {\n \"disk_size_gb\": 100,\n \"disk_type\": \"PD_STANDARD\",\n },\n },\n \"accelerator_config\": {\n \"core_count\": 1,\n \"type\": \"NVIDIA_TESLA_V100\",\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 runtimeGpu = new Gcp.Notebooks.Runtime(\"runtime_gpu\", new()\n {\n Name = \"notebooks-runtime-gpu\",\n Location = \"us-central1\",\n AccessConfig = new Gcp.Notebooks.Inputs.RuntimeAccessConfigArgs\n {\n AccessType = \"SINGLE_USER\",\n RuntimeOwner = \"admin@hashicorptest.com\",\n },\n SoftwareConfig = new Gcp.Notebooks.Inputs.RuntimeSoftwareConfigArgs\n {\n InstallGpuDriver = true,\n },\n VirtualMachine = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineArgs\n {\n VirtualMachineConfig = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigArgs\n {\n MachineType = \"n1-standard-4\",\n DataDisk = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs\n {\n InitializeParams = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs\n {\n DiskSizeGb = 100,\n DiskType = \"PD_STANDARD\",\n },\n },\n AcceleratorConfig = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigAcceleratorConfigArgs\n {\n CoreCount = 1,\n Type = \"NVIDIA_TESLA_V100\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\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 := notebooks.NewRuntime(ctx, \"runtime_gpu\", \u0026notebooks.RuntimeArgs{\n\t\t\tName: pulumi.String(\"notebooks-runtime-gpu\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAccessConfig: \u0026notebooks.RuntimeAccessConfigArgs{\n\t\t\t\tAccessType: pulumi.String(\"SINGLE_USER\"),\n\t\t\t\tRuntimeOwner: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t},\n\t\t\tSoftwareConfig: \u0026notebooks.RuntimeSoftwareConfigArgs{\n\t\t\t\tInstallGpuDriver: pulumi.Bool(true),\n\t\t\t},\n\t\t\tVirtualMachine: \u0026notebooks.RuntimeVirtualMachineArgs{\n\t\t\t\tVirtualMachineConfig: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\t\tDataDisk: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs{\n\t\t\t\t\t\tInitializeParams: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs{\n\t\t\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\t\t\tDiskType: pulumi.String(\"PD_STANDARD\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAcceleratorConfig: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigAcceleratorConfigArgs{\n\t\t\t\t\t\tCoreCount: pulumi.Int(1),\n\t\t\t\t\t\tType: pulumi.String(\"NVIDIA_TESLA_V100\"),\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.notebooks.Runtime;\nimport com.pulumi.gcp.notebooks.RuntimeArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeAccessConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeSoftwareConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigAcceleratorConfigArgs;\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 runtimeGpu = new Runtime(\"runtimeGpu\", RuntimeArgs.builder()\n .name(\"notebooks-runtime-gpu\")\n .location(\"us-central1\")\n .accessConfig(RuntimeAccessConfigArgs.builder()\n .accessType(\"SINGLE_USER\")\n .runtimeOwner(\"admin@hashicorptest.com\")\n .build())\n .softwareConfig(RuntimeSoftwareConfigArgs.builder()\n .installGpuDriver(true)\n .build())\n .virtualMachine(RuntimeVirtualMachineArgs.builder()\n .virtualMachineConfig(RuntimeVirtualMachineVirtualMachineConfigArgs.builder()\n .machineType(\"n1-standard-4\")\n .dataDisk(RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs.builder()\n .initializeParams(RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs.builder()\n .diskSizeGb(\"100\")\n .diskType(\"PD_STANDARD\")\n .build())\n .build())\n .acceleratorConfig(RuntimeVirtualMachineVirtualMachineConfigAcceleratorConfigArgs.builder()\n .coreCount(\"1\")\n .type(\"NVIDIA_TESLA_V100\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n runtimeGpu:\n type: gcp:notebooks:Runtime\n name: runtime_gpu\n properties:\n name: notebooks-runtime-gpu\n location: us-central1\n accessConfig:\n accessType: SINGLE_USER\n runtimeOwner: admin@hashicorptest.com\n softwareConfig:\n installGpuDriver: true\n virtualMachine:\n virtualMachineConfig:\n machineType: n1-standard-4\n dataDisk:\n initializeParams:\n diskSizeGb: '100'\n diskType: PD_STANDARD\n acceleratorConfig:\n coreCount: '1'\n type: NVIDIA_TESLA_V100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Notebook Runtime Basic Container\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst runtimeContainer = new gcp.notebooks.Runtime(\"runtime_container\", {\n name: \"notebooks-runtime-container\",\n location: \"us-central1\",\n accessConfig: {\n accessType: \"SINGLE_USER\",\n runtimeOwner: \"admin@hashicorptest.com\",\n },\n virtualMachine: {\n virtualMachineConfig: {\n machineType: \"n1-standard-4\",\n dataDisk: {\n initializeParams: {\n diskSizeGb: 100,\n diskType: \"PD_STANDARD\",\n },\n },\n containerImages: [\n {\n repository: \"gcr.io/deeplearning-platform-release/base-cpu\",\n tag: \"latest\",\n },\n {\n repository: \"gcr.io/deeplearning-platform-release/beam-notebooks\",\n tag: \"latest\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nruntime_container = gcp.notebooks.Runtime(\"runtime_container\",\n name=\"notebooks-runtime-container\",\n location=\"us-central1\",\n access_config={\n \"access_type\": \"SINGLE_USER\",\n \"runtime_owner\": \"admin@hashicorptest.com\",\n },\n virtual_machine={\n \"virtual_machine_config\": {\n \"machine_type\": \"n1-standard-4\",\n \"data_disk\": {\n \"initialize_params\": {\n \"disk_size_gb\": 100,\n \"disk_type\": \"PD_STANDARD\",\n },\n },\n \"container_images\": [\n {\n \"repository\": \"gcr.io/deeplearning-platform-release/base-cpu\",\n \"tag\": \"latest\",\n },\n {\n \"repository\": \"gcr.io/deeplearning-platform-release/beam-notebooks\",\n \"tag\": \"latest\",\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 runtimeContainer = new Gcp.Notebooks.Runtime(\"runtime_container\", new()\n {\n Name = \"notebooks-runtime-container\",\n Location = \"us-central1\",\n AccessConfig = new Gcp.Notebooks.Inputs.RuntimeAccessConfigArgs\n {\n AccessType = \"SINGLE_USER\",\n RuntimeOwner = \"admin@hashicorptest.com\",\n },\n VirtualMachine = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineArgs\n {\n VirtualMachineConfig = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigArgs\n {\n MachineType = \"n1-standard-4\",\n DataDisk = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs\n {\n InitializeParams = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs\n {\n DiskSizeGb = 100,\n DiskType = \"PD_STANDARD\",\n },\n },\n ContainerImages = new[]\n {\n new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigContainerImageArgs\n {\n Repository = \"gcr.io/deeplearning-platform-release/base-cpu\",\n Tag = \"latest\",\n },\n new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigContainerImageArgs\n {\n Repository = \"gcr.io/deeplearning-platform-release/beam-notebooks\",\n Tag = \"latest\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\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 := notebooks.NewRuntime(ctx, \"runtime_container\", \u0026notebooks.RuntimeArgs{\n\t\t\tName: pulumi.String(\"notebooks-runtime-container\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAccessConfig: \u0026notebooks.RuntimeAccessConfigArgs{\n\t\t\t\tAccessType: pulumi.String(\"SINGLE_USER\"),\n\t\t\t\tRuntimeOwner: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t},\n\t\t\tVirtualMachine: \u0026notebooks.RuntimeVirtualMachineArgs{\n\t\t\t\tVirtualMachineConfig: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\t\tDataDisk: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs{\n\t\t\t\t\t\tInitializeParams: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs{\n\t\t\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\t\t\tDiskType: pulumi.String(\"PD_STANDARD\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tContainerImages: notebooks.RuntimeVirtualMachineVirtualMachineConfigContainerImageArray{\n\t\t\t\t\t\t\u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigContainerImageArgs{\n\t\t\t\t\t\t\tRepository: pulumi.String(\"gcr.io/deeplearning-platform-release/base-cpu\"),\n\t\t\t\t\t\t\tTag: pulumi.String(\"latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigContainerImageArgs{\n\t\t\t\t\t\t\tRepository: pulumi.String(\"gcr.io/deeplearning-platform-release/beam-notebooks\"),\n\t\t\t\t\t\t\tTag: pulumi.String(\"latest\"),\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.notebooks.Runtime;\nimport com.pulumi.gcp.notebooks.RuntimeArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeAccessConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs;\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 runtimeContainer = new Runtime(\"runtimeContainer\", RuntimeArgs.builder()\n .name(\"notebooks-runtime-container\")\n .location(\"us-central1\")\n .accessConfig(RuntimeAccessConfigArgs.builder()\n .accessType(\"SINGLE_USER\")\n .runtimeOwner(\"admin@hashicorptest.com\")\n .build())\n .virtualMachine(RuntimeVirtualMachineArgs.builder()\n .virtualMachineConfig(RuntimeVirtualMachineVirtualMachineConfigArgs.builder()\n .machineType(\"n1-standard-4\")\n .dataDisk(RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs.builder()\n .initializeParams(RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs.builder()\n .diskSizeGb(\"100\")\n .diskType(\"PD_STANDARD\")\n .build())\n .build())\n .containerImages( \n RuntimeVirtualMachineVirtualMachineConfigContainerImageArgs.builder()\n .repository(\"gcr.io/deeplearning-platform-release/base-cpu\")\n .tag(\"latest\")\n .build(),\n RuntimeVirtualMachineVirtualMachineConfigContainerImageArgs.builder()\n .repository(\"gcr.io/deeplearning-platform-release/beam-notebooks\")\n .tag(\"latest\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n runtimeContainer:\n type: gcp:notebooks:Runtime\n name: runtime_container\n properties:\n name: notebooks-runtime-container\n location: us-central1\n accessConfig:\n accessType: SINGLE_USER\n runtimeOwner: admin@hashicorptest.com\n virtualMachine:\n virtualMachineConfig:\n machineType: n1-standard-4\n dataDisk:\n initializeParams:\n diskSizeGb: '100'\n diskType: PD_STANDARD\n containerImages:\n - repository: gcr.io/deeplearning-platform-release/base-cpu\n tag: latest\n - repository: gcr.io/deeplearning-platform-release/beam-notebooks\n tag: latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Notebook Runtime Kernels\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst runtimeContainer = new gcp.notebooks.Runtime(\"runtime_container\", {\n name: \"notebooks-runtime-kernel\",\n location: \"us-central1\",\n accessConfig: {\n accessType: \"SINGLE_USER\",\n runtimeOwner: \"admin@hashicorptest.com\",\n },\n softwareConfig: {\n kernels: [{\n repository: \"gcr.io/deeplearning-platform-release/base-cpu\",\n tag: \"latest\",\n }],\n },\n virtualMachine: {\n virtualMachineConfig: {\n machineType: \"n1-standard-4\",\n dataDisk: {\n initializeParams: {\n diskSizeGb: 100,\n diskType: \"PD_STANDARD\",\n },\n },\n },\n },\n labels: {\n k: \"val\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nruntime_container = gcp.notebooks.Runtime(\"runtime_container\",\n name=\"notebooks-runtime-kernel\",\n location=\"us-central1\",\n access_config={\n \"access_type\": \"SINGLE_USER\",\n \"runtime_owner\": \"admin@hashicorptest.com\",\n },\n software_config={\n \"kernels\": [{\n \"repository\": \"gcr.io/deeplearning-platform-release/base-cpu\",\n \"tag\": \"latest\",\n }],\n },\n virtual_machine={\n \"virtual_machine_config\": {\n \"machine_type\": \"n1-standard-4\",\n \"data_disk\": {\n \"initialize_params\": {\n \"disk_size_gb\": 100,\n \"disk_type\": \"PD_STANDARD\",\n },\n },\n },\n },\n labels={\n \"k\": \"val\",\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 runtimeContainer = new Gcp.Notebooks.Runtime(\"runtime_container\", new()\n {\n Name = \"notebooks-runtime-kernel\",\n Location = \"us-central1\",\n AccessConfig = new Gcp.Notebooks.Inputs.RuntimeAccessConfigArgs\n {\n AccessType = \"SINGLE_USER\",\n RuntimeOwner = \"admin@hashicorptest.com\",\n },\n SoftwareConfig = new Gcp.Notebooks.Inputs.RuntimeSoftwareConfigArgs\n {\n Kernels = new[]\n {\n new Gcp.Notebooks.Inputs.RuntimeSoftwareConfigKernelArgs\n {\n Repository = \"gcr.io/deeplearning-platform-release/base-cpu\",\n Tag = \"latest\",\n },\n },\n },\n VirtualMachine = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineArgs\n {\n VirtualMachineConfig = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigArgs\n {\n MachineType = \"n1-standard-4\",\n DataDisk = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs\n {\n InitializeParams = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs\n {\n DiskSizeGb = 100,\n DiskType = \"PD_STANDARD\",\n },\n },\n },\n },\n Labels = \n {\n { \"k\", \"val\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\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 := notebooks.NewRuntime(ctx, \"runtime_container\", \u0026notebooks.RuntimeArgs{\n\t\t\tName: pulumi.String(\"notebooks-runtime-kernel\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAccessConfig: \u0026notebooks.RuntimeAccessConfigArgs{\n\t\t\t\tAccessType: pulumi.String(\"SINGLE_USER\"),\n\t\t\t\tRuntimeOwner: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t},\n\t\t\tSoftwareConfig: \u0026notebooks.RuntimeSoftwareConfigArgs{\n\t\t\t\tKernels: notebooks.RuntimeSoftwareConfigKernelArray{\n\t\t\t\t\t\u0026notebooks.RuntimeSoftwareConfigKernelArgs{\n\t\t\t\t\t\tRepository: pulumi.String(\"gcr.io/deeplearning-platform-release/base-cpu\"),\n\t\t\t\t\t\tTag: pulumi.String(\"latest\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tVirtualMachine: \u0026notebooks.RuntimeVirtualMachineArgs{\n\t\t\t\tVirtualMachineConfig: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\t\tDataDisk: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs{\n\t\t\t\t\t\tInitializeParams: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs{\n\t\t\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\t\t\tDiskType: pulumi.String(\"PD_STANDARD\"),\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\tLabels: pulumi.StringMap{\n\t\t\t\t\"k\": pulumi.String(\"val\"),\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.notebooks.Runtime;\nimport com.pulumi.gcp.notebooks.RuntimeArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeAccessConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeSoftwareConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs;\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 runtimeContainer = new Runtime(\"runtimeContainer\", RuntimeArgs.builder()\n .name(\"notebooks-runtime-kernel\")\n .location(\"us-central1\")\n .accessConfig(RuntimeAccessConfigArgs.builder()\n .accessType(\"SINGLE_USER\")\n .runtimeOwner(\"admin@hashicorptest.com\")\n .build())\n .softwareConfig(RuntimeSoftwareConfigArgs.builder()\n .kernels(RuntimeSoftwareConfigKernelArgs.builder()\n .repository(\"gcr.io/deeplearning-platform-release/base-cpu\")\n .tag(\"latest\")\n .build())\n .build())\n .virtualMachine(RuntimeVirtualMachineArgs.builder()\n .virtualMachineConfig(RuntimeVirtualMachineVirtualMachineConfigArgs.builder()\n .machineType(\"n1-standard-4\")\n .dataDisk(RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs.builder()\n .initializeParams(RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs.builder()\n .diskSizeGb(\"100\")\n .diskType(\"PD_STANDARD\")\n .build())\n .build())\n .build())\n .build())\n .labels(Map.of(\"k\", \"val\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n runtimeContainer:\n type: gcp:notebooks:Runtime\n name: runtime_container\n properties:\n name: notebooks-runtime-kernel\n location: us-central1\n accessConfig:\n accessType: SINGLE_USER\n runtimeOwner: admin@hashicorptest.com\n softwareConfig:\n kernels:\n - repository: gcr.io/deeplearning-platform-release/base-cpu\n tag: latest\n virtualMachine:\n virtualMachineConfig:\n machineType: n1-standard-4\n dataDisk:\n initializeParams:\n diskSizeGb: '100'\n diskType: PD_STANDARD\n labels:\n k: val\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Notebook Runtime Script\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst runtimeContainer = new gcp.notebooks.Runtime(\"runtime_container\", {\n name: \"notebooks-runtime-script\",\n location: \"us-central1\",\n accessConfig: {\n accessType: \"SINGLE_USER\",\n runtimeOwner: \"admin@hashicorptest.com\",\n },\n softwareConfig: {\n postStartupScriptBehavior: \"RUN_EVERY_START\",\n },\n virtualMachine: {\n virtualMachineConfig: {\n machineType: \"n1-standard-4\",\n dataDisk: {\n initializeParams: {\n diskSizeGb: 100,\n diskType: \"PD_STANDARD\",\n },\n },\n },\n },\n labels: {\n k: \"val\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nruntime_container = gcp.notebooks.Runtime(\"runtime_container\",\n name=\"notebooks-runtime-script\",\n location=\"us-central1\",\n access_config={\n \"access_type\": \"SINGLE_USER\",\n \"runtime_owner\": \"admin@hashicorptest.com\",\n },\n software_config={\n \"post_startup_script_behavior\": \"RUN_EVERY_START\",\n },\n virtual_machine={\n \"virtual_machine_config\": {\n \"machine_type\": \"n1-standard-4\",\n \"data_disk\": {\n \"initialize_params\": {\n \"disk_size_gb\": 100,\n \"disk_type\": \"PD_STANDARD\",\n },\n },\n },\n },\n labels={\n \"k\": \"val\",\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 runtimeContainer = new Gcp.Notebooks.Runtime(\"runtime_container\", new()\n {\n Name = \"notebooks-runtime-script\",\n Location = \"us-central1\",\n AccessConfig = new Gcp.Notebooks.Inputs.RuntimeAccessConfigArgs\n {\n AccessType = \"SINGLE_USER\",\n RuntimeOwner = \"admin@hashicorptest.com\",\n },\n SoftwareConfig = new Gcp.Notebooks.Inputs.RuntimeSoftwareConfigArgs\n {\n PostStartupScriptBehavior = \"RUN_EVERY_START\",\n },\n VirtualMachine = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineArgs\n {\n VirtualMachineConfig = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigArgs\n {\n MachineType = \"n1-standard-4\",\n DataDisk = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs\n {\n InitializeParams = new Gcp.Notebooks.Inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs\n {\n DiskSizeGb = 100,\n DiskType = \"PD_STANDARD\",\n },\n },\n },\n },\n Labels = \n {\n { \"k\", \"val\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/notebooks\"\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 := notebooks.NewRuntime(ctx, \"runtime_container\", \u0026notebooks.RuntimeArgs{\n\t\t\tName: pulumi.String(\"notebooks-runtime-script\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAccessConfig: \u0026notebooks.RuntimeAccessConfigArgs{\n\t\t\t\tAccessType: pulumi.String(\"SINGLE_USER\"),\n\t\t\t\tRuntimeOwner: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t},\n\t\t\tSoftwareConfig: \u0026notebooks.RuntimeSoftwareConfigArgs{\n\t\t\t\tPostStartupScriptBehavior: pulumi.String(\"RUN_EVERY_START\"),\n\t\t\t},\n\t\t\tVirtualMachine: \u0026notebooks.RuntimeVirtualMachineArgs{\n\t\t\t\tVirtualMachineConfig: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\t\tDataDisk: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs{\n\t\t\t\t\t\tInitializeParams: \u0026notebooks.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs{\n\t\t\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\t\t\tDiskType: pulumi.String(\"PD_STANDARD\"),\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\tLabels: pulumi.StringMap{\n\t\t\t\t\"k\": pulumi.String(\"val\"),\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.notebooks.Runtime;\nimport com.pulumi.gcp.notebooks.RuntimeArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeAccessConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeSoftwareConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs;\nimport com.pulumi.gcp.notebooks.inputs.RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs;\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 runtimeContainer = new Runtime(\"runtimeContainer\", RuntimeArgs.builder()\n .name(\"notebooks-runtime-script\")\n .location(\"us-central1\")\n .accessConfig(RuntimeAccessConfigArgs.builder()\n .accessType(\"SINGLE_USER\")\n .runtimeOwner(\"admin@hashicorptest.com\")\n .build())\n .softwareConfig(RuntimeSoftwareConfigArgs.builder()\n .postStartupScriptBehavior(\"RUN_EVERY_START\")\n .build())\n .virtualMachine(RuntimeVirtualMachineArgs.builder()\n .virtualMachineConfig(RuntimeVirtualMachineVirtualMachineConfigArgs.builder()\n .machineType(\"n1-standard-4\")\n .dataDisk(RuntimeVirtualMachineVirtualMachineConfigDataDiskArgs.builder()\n .initializeParams(RuntimeVirtualMachineVirtualMachineConfigDataDiskInitializeParamsArgs.builder()\n .diskSizeGb(\"100\")\n .diskType(\"PD_STANDARD\")\n .build())\n .build())\n .build())\n .build())\n .labels(Map.of(\"k\", \"val\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n runtimeContainer:\n type: gcp:notebooks:Runtime\n name: runtime_container\n properties:\n name: notebooks-runtime-script\n location: us-central1\n accessConfig:\n accessType: SINGLE_USER\n runtimeOwner: admin@hashicorptest.com\n softwareConfig:\n postStartupScriptBehavior: RUN_EVERY_START\n virtualMachine:\n virtualMachineConfig:\n machineType: n1-standard-4\n dataDisk:\n initializeParams:\n diskSizeGb: '100'\n diskType: PD_STANDARD\n labels:\n k: val\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRuntime can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/runtimes/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Runtime can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:notebooks/runtime:Runtime default projects/{{project}}/locations/{{location}}/runtimes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:notebooks/runtime:Runtime default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:notebooks/runtime:Runtime default {{location}}/{{name}}\n```\n\n", "properties": { "accessConfig": { "$ref": "#/types/gcp:notebooks/RuntimeAccessConfig:RuntimeAccessConfig", @@ -224567,7 +224567,7 @@ } }, "gcp:organizations/accessApprovalSettings:AccessApprovalSettings": { - "description": "Access Approval enables you to require your explicit approval whenever Google support and engineering need to access your customer content.\n\n\nTo get more information about OrganizationSettings, see:\n\n* [API documentation](https://cloud.google.com/access-approval/docs/reference/rest/v1/organizations)\n\n## Example Usage\n\n### Organization Access Approval Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organizationAccessApproval = new gcp.organizations.AccessApprovalSettings(\"organization_access_approval\", {\n organizationId: \"123456789\",\n notificationEmails: [\n \"testuser@example.com\",\n \"example.user@example.com\",\n ],\n enrolledServices: [\n {\n cloudProduct: \"appengine.googleapis.com\",\n },\n {\n cloudProduct: \"dataflow.googleapis.com\",\n enrollmentLevel: \"BLOCK_ALL\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization_access_approval = gcp.organizations.AccessApprovalSettings(\"organization_access_approval\",\n organization_id=\"123456789\",\n notification_emails=[\n \"testuser@example.com\",\n \"example.user@example.com\",\n ],\n enrolled_services=[\n {\n \"cloudProduct\": \"appengine.googleapis.com\",\n },\n {\n \"cloudProduct\": \"dataflow.googleapis.com\",\n \"enrollmentLevel\": \"BLOCK_ALL\",\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 organizationAccessApproval = new Gcp.Organizations.AccessApprovalSettings(\"organization_access_approval\", new()\n {\n OrganizationId = \"123456789\",\n NotificationEmails = new[]\n {\n \"testuser@example.com\",\n \"example.user@example.com\",\n },\n EnrolledServices = new[]\n {\n new Gcp.Organizations.Inputs.AccessApprovalSettingsEnrolledServiceArgs\n {\n CloudProduct = \"appengine.googleapis.com\",\n },\n new Gcp.Organizations.Inputs.AccessApprovalSettingsEnrolledServiceArgs\n {\n CloudProduct = \"dataflow.googleapis.com\",\n EnrollmentLevel = \"BLOCK_ALL\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewAccessApprovalSettings(ctx, \"organization_access_approval\", \u0026organizations.AccessApprovalSettingsArgs{\n\t\t\tOrganizationId: pulumi.String(\"123456789\"),\n\t\t\tNotificationEmails: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"testuser@example.com\"),\n\t\t\t\tpulumi.String(\"example.user@example.com\"),\n\t\t\t},\n\t\t\tEnrolledServices: organizations.AccessApprovalSettingsEnrolledServiceArray{\n\t\t\t\t\u0026organizations.AccessApprovalSettingsEnrolledServiceArgs{\n\t\t\t\t\tCloudProduct: pulumi.String(\"appengine.googleapis.com\"),\n\t\t\t\t},\n\t\t\t\t\u0026organizations.AccessApprovalSettingsEnrolledServiceArgs{\n\t\t\t\t\tCloudProduct: pulumi.String(\"dataflow.googleapis.com\"),\n\t\t\t\t\tEnrollmentLevel: pulumi.String(\"BLOCK_ALL\"),\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.organizations.AccessApprovalSettings;\nimport com.pulumi.gcp.organizations.AccessApprovalSettingsArgs;\nimport com.pulumi.gcp.organizations.inputs.AccessApprovalSettingsEnrolledServiceArgs;\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 organizationAccessApproval = new AccessApprovalSettings(\"organizationAccessApproval\", AccessApprovalSettingsArgs.builder()\n .organizationId(\"123456789\")\n .notificationEmails( \n \"testuser@example.com\",\n \"example.user@example.com\")\n .enrolledServices( \n AccessApprovalSettingsEnrolledServiceArgs.builder()\n .cloudProduct(\"appengine.googleapis.com\")\n .build(),\n AccessApprovalSettingsEnrolledServiceArgs.builder()\n .cloudProduct(\"dataflow.googleapis.com\")\n .enrollmentLevel(\"BLOCK_ALL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organizationAccessApproval:\n type: gcp:organizations:AccessApprovalSettings\n name: organization_access_approval\n properties:\n organizationId: '123456789'\n notificationEmails:\n - testuser@example.com\n - example.user@example.com\n enrolledServices:\n - cloudProduct: appengine.googleapis.com\n - cloudProduct: dataflow.googleapis.com\n enrollmentLevel: BLOCK_ALL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Organization Access Approval Active Key Version\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myProject = new gcp.organizations.Project(\"my_project\", {\n name: \"My Project\",\n projectId: \"your-project-id\",\n orgId: \"123456789\",\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"key-ring\",\n location: \"global\",\n project: myProject.projectId,\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"crypto-key\",\n keyRing: keyRing.id,\n purpose: \"ASYMMETRIC_SIGN\",\n versionTemplate: {\n algorithm: \"EC_SIGN_P384_SHA384\",\n },\n});\nconst serviceAccount = gcp.accessapproval.getOrganizationServiceAccount({\n organizationId: \"123456789\",\n});\nconst iam = new gcp.kms.CryptoKeyIAMMember(\"iam\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.signerVerifier\",\n member: serviceAccount.then(serviceAccount =\u003e `serviceAccount:${serviceAccount.accountEmail}`),\n});\nconst cryptoKeyVersion = gcp.kms.getKMSCryptoKeyVersionOutput({\n cryptoKey: cryptoKey.id,\n});\nconst organizationAccessApproval = new gcp.organizations.AccessApprovalSettings(\"organization_access_approval\", {\n organizationId: \"123456789\",\n activeKeyVersion: cryptoKeyVersion.apply(cryptoKeyVersion =\u003e cryptoKeyVersion.name),\n enrolledServices: [{\n cloudProduct: \"all\",\n }],\n}, {\n dependsOn: [iam],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_project = gcp.organizations.Project(\"my_project\",\n name=\"My Project\",\n project_id=\"your-project-id\",\n org_id=\"123456789\")\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"key-ring\",\n location=\"global\",\n project=my_project.project_id)\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"crypto-key\",\n key_ring=key_ring.id,\n purpose=\"ASYMMETRIC_SIGN\",\n version_template={\n \"algorithm\": \"EC_SIGN_P384_SHA384\",\n })\nservice_account = gcp.accessapproval.get_organization_service_account(organization_id=\"123456789\")\niam = gcp.kms.CryptoKeyIAMMember(\"iam\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.signerVerifier\",\n member=f\"serviceAccount:{service_account.account_email}\")\ncrypto_key_version = gcp.kms.get_kms_crypto_key_version_output(crypto_key=crypto_key.id)\norganization_access_approval = gcp.organizations.AccessApprovalSettings(\"organization_access_approval\",\n organization_id=\"123456789\",\n active_key_version=crypto_key_version.name,\n enrolled_services=[{\n \"cloudProduct\": \"all\",\n }],\n opts = pulumi.ResourceOptions(depends_on=[iam]))\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(\"my_project\", new()\n {\n Name = \"My Project\",\n ProjectId = \"your-project-id\",\n OrgId = \"123456789\",\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"key-ring\",\n Location = \"global\",\n Project = myProject.ProjectId,\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"crypto-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ASYMMETRIC_SIGN\",\n VersionTemplate = new Gcp.Kms.Inputs.CryptoKeyVersionTemplateArgs\n {\n Algorithm = \"EC_SIGN_P384_SHA384\",\n },\n });\n\n var serviceAccount = Gcp.AccessApproval.GetOrganizationServiceAccount.Invoke(new()\n {\n OrganizationId = \"123456789\",\n });\n\n var iam = new Gcp.Kms.CryptoKeyIAMMember(\"iam\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.signerVerifier\",\n Member = $\"serviceAccount:{serviceAccount.Apply(getOrganizationServiceAccountResult =\u003e getOrganizationServiceAccountResult.AccountEmail)}\",\n });\n\n var cryptoKeyVersion = Gcp.Kms.GetKMSCryptoKeyVersion.Invoke(new()\n {\n CryptoKey = cryptoKey.Id,\n });\n\n var organizationAccessApproval = new Gcp.Organizations.AccessApprovalSettings(\"organization_access_approval\", new()\n {\n OrganizationId = \"123456789\",\n ActiveKeyVersion = cryptoKeyVersion.Apply(getKMSCryptoKeyVersionResult =\u003e getKMSCryptoKeyVersionResult.Name),\n EnrolledServices = new[]\n {\n new Gcp.Organizations.Inputs.AccessApprovalSettingsEnrolledServiceArgs\n {\n CloudProduct = \"all\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n iam,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/accessapproval\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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, \"my_project\", \u0026organizations.ProjectArgs{\n\t\t\tName: pulumi.String(\"My Project\"),\n\t\t\tProjectId: pulumi.String(\"your-project-id\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"key-ring\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tProject: myProject.ProjectId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"crypto-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ASYMMETRIC_SIGN\"),\n\t\t\tVersionTemplate: \u0026kms.CryptoKeyVersionTemplateArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"EC_SIGN_P384_SHA384\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceAccount, err := accessapproval.GetOrganizationServiceAccount(ctx, \u0026accessapproval.GetOrganizationServiceAccountArgs{\n\t\t\tOrganizationId: \"123456789\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tiam, err := kms.NewCryptoKeyIAMMember(ctx, \"iam\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.signerVerifier\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v\", serviceAccount.AccountEmail)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyVersion := kms.GetKMSCryptoKeyVersionOutput(ctx, kms.GetKMSCryptoKeyVersionOutputArgs{\n\t\t\tCryptoKey: cryptoKey.ID(),\n\t\t}, nil)\n\t\t_, err = organizations.NewAccessApprovalSettings(ctx, \"organization_access_approval\", \u0026organizations.AccessApprovalSettingsArgs{\n\t\t\tOrganizationId: pulumi.String(\"123456789\"),\n\t\t\tActiveKeyVersion: cryptoKeyVersion.ApplyT(func(cryptoKeyVersion kms.GetKMSCryptoKeyVersionResult) (*string, error) {\n\t\t\t\treturn \u0026cryptoKeyVersion.Name, nil\n\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\tEnrolledServices: organizations.AccessApprovalSettingsEnrolledServiceArray{\n\t\t\t\t\u0026organizations.AccessApprovalSettingsEnrolledServiceArgs{\n\t\t\t\t\tCloudProduct: pulumi.String(\"all\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tiam,\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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.inputs.CryptoKeyVersionTemplateArgs;\nimport com.pulumi.gcp.accessapproval.AccessapprovalFunctions;\nimport com.pulumi.gcp.accessapproval.inputs.GetOrganizationServiceAccountArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.kms.KmsFunctions;\nimport com.pulumi.gcp.kms.inputs.GetKMSCryptoKeyVersionArgs;\nimport com.pulumi.gcp.organizations.AccessApprovalSettings;\nimport com.pulumi.gcp.organizations.AccessApprovalSettingsArgs;\nimport com.pulumi.gcp.organizations.inputs.AccessApprovalSettingsEnrolledServiceArgs;\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 myProject = new Project(\"myProject\", ProjectArgs.builder()\n .name(\"My Project\")\n .projectId(\"your-project-id\")\n .orgId(\"123456789\")\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"key-ring\")\n .location(\"global\")\n .project(myProject.projectId())\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"crypto-key\")\n .keyRing(keyRing.id())\n .purpose(\"ASYMMETRIC_SIGN\")\n .versionTemplate(CryptoKeyVersionTemplateArgs.builder()\n .algorithm(\"EC_SIGN_P384_SHA384\")\n .build())\n .build());\n\n final var serviceAccount = AccessapprovalFunctions.getOrganizationServiceAccount(GetOrganizationServiceAccountArgs.builder()\n .organizationId(\"123456789\")\n .build());\n\n var iam = new CryptoKeyIAMMember(\"iam\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.signerVerifier\")\n .member(String.format(\"serviceAccount:%s\", serviceAccount.applyValue(getOrganizationServiceAccountResult -\u003e getOrganizationServiceAccountResult.accountEmail())))\n .build());\n\n final var cryptoKeyVersion = KmsFunctions.getKMSCryptoKeyVersion(GetKMSCryptoKeyVersionArgs.builder()\n .cryptoKey(cryptoKey.id())\n .build());\n\n var organizationAccessApproval = new AccessApprovalSettings(\"organizationAccessApproval\", AccessApprovalSettingsArgs.builder()\n .organizationId(\"123456789\")\n .activeKeyVersion(cryptoKeyVersion.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult).applyValue(cryptoKeyVersion -\u003e cryptoKeyVersion.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult.name())))\n .enrolledServices(AccessApprovalSettingsEnrolledServiceArgs.builder()\n .cloudProduct(\"all\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(iam)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myProject:\n type: gcp:organizations:Project\n name: my_project\n properties:\n name: My Project\n projectId: your-project-id\n orgId: '123456789'\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: key-ring\n location: global\n project: ${myProject.projectId}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: crypto-key\n keyRing: ${keyRing.id}\n purpose: ASYMMETRIC_SIGN\n versionTemplate:\n algorithm: EC_SIGN_P384_SHA384\n iam:\n type: gcp:kms:CryptoKeyIAMMember\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.signerVerifier\n member: serviceAccount:${serviceAccount.accountEmail}\n organizationAccessApproval:\n type: gcp:organizations:AccessApprovalSettings\n name: organization_access_approval\n properties:\n organizationId: '123456789'\n activeKeyVersion: ${cryptoKeyVersion.name}\n enrolledServices:\n - cloudProduct: all\n options:\n dependson:\n - ${iam}\nvariables:\n serviceAccount:\n fn::invoke:\n Function: gcp:accessapproval:getOrganizationServiceAccount\n Arguments:\n organizationId: '123456789'\n cryptoKeyVersion:\n fn::invoke:\n Function: gcp:kms:getKMSCryptoKeyVersion\n Arguments:\n cryptoKey: ${cryptoKey.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganizationSettings can be imported using any of these accepted formats:\n\n* `organizations/{{organization_id}}/accessApprovalSettings`\n\n* `{{organization_id}}`\n\nWhen using the `pulumi import` command, OrganizationSettings can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:organizations/accessApprovalSettings:AccessApprovalSettings default organizations/{{organization_id}}/accessApprovalSettings\n```\n\n```sh\n$ pulumi import gcp:organizations/accessApprovalSettings:AccessApprovalSettings default {{organization_id}}\n```\n\n", + "description": "Access Approval enables you to require your explicit approval whenever Google support and engineering need to access your customer content.\n\n\nTo get more information about OrganizationSettings, see:\n\n* [API documentation](https://cloud.google.com/access-approval/docs/reference/rest/v1/organizations)\n\n## Example Usage\n\n### Organization Access Approval Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organizationAccessApproval = new gcp.organizations.AccessApprovalSettings(\"organization_access_approval\", {\n organizationId: \"123456789\",\n notificationEmails: [\n \"testuser@example.com\",\n \"example.user@example.com\",\n ],\n enrolledServices: [\n {\n cloudProduct: \"appengine.googleapis.com\",\n },\n {\n cloudProduct: \"dataflow.googleapis.com\",\n enrollmentLevel: \"BLOCK_ALL\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization_access_approval = gcp.organizations.AccessApprovalSettings(\"organization_access_approval\",\n organization_id=\"123456789\",\n notification_emails=[\n \"testuser@example.com\",\n \"example.user@example.com\",\n ],\n enrolled_services=[\n {\n \"cloud_product\": \"appengine.googleapis.com\",\n },\n {\n \"cloud_product\": \"dataflow.googleapis.com\",\n \"enrollment_level\": \"BLOCK_ALL\",\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 organizationAccessApproval = new Gcp.Organizations.AccessApprovalSettings(\"organization_access_approval\", new()\n {\n OrganizationId = \"123456789\",\n NotificationEmails = new[]\n {\n \"testuser@example.com\",\n \"example.user@example.com\",\n },\n EnrolledServices = new[]\n {\n new Gcp.Organizations.Inputs.AccessApprovalSettingsEnrolledServiceArgs\n {\n CloudProduct = \"appengine.googleapis.com\",\n },\n new Gcp.Organizations.Inputs.AccessApprovalSettingsEnrolledServiceArgs\n {\n CloudProduct = \"dataflow.googleapis.com\",\n EnrollmentLevel = \"BLOCK_ALL\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewAccessApprovalSettings(ctx, \"organization_access_approval\", \u0026organizations.AccessApprovalSettingsArgs{\n\t\t\tOrganizationId: pulumi.String(\"123456789\"),\n\t\t\tNotificationEmails: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"testuser@example.com\"),\n\t\t\t\tpulumi.String(\"example.user@example.com\"),\n\t\t\t},\n\t\t\tEnrolledServices: organizations.AccessApprovalSettingsEnrolledServiceArray{\n\t\t\t\t\u0026organizations.AccessApprovalSettingsEnrolledServiceArgs{\n\t\t\t\t\tCloudProduct: pulumi.String(\"appengine.googleapis.com\"),\n\t\t\t\t},\n\t\t\t\t\u0026organizations.AccessApprovalSettingsEnrolledServiceArgs{\n\t\t\t\t\tCloudProduct: pulumi.String(\"dataflow.googleapis.com\"),\n\t\t\t\t\tEnrollmentLevel: pulumi.String(\"BLOCK_ALL\"),\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.organizations.AccessApprovalSettings;\nimport com.pulumi.gcp.organizations.AccessApprovalSettingsArgs;\nimport com.pulumi.gcp.organizations.inputs.AccessApprovalSettingsEnrolledServiceArgs;\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 organizationAccessApproval = new AccessApprovalSettings(\"organizationAccessApproval\", AccessApprovalSettingsArgs.builder()\n .organizationId(\"123456789\")\n .notificationEmails( \n \"testuser@example.com\",\n \"example.user@example.com\")\n .enrolledServices( \n AccessApprovalSettingsEnrolledServiceArgs.builder()\n .cloudProduct(\"appengine.googleapis.com\")\n .build(),\n AccessApprovalSettingsEnrolledServiceArgs.builder()\n .cloudProduct(\"dataflow.googleapis.com\")\n .enrollmentLevel(\"BLOCK_ALL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organizationAccessApproval:\n type: gcp:organizations:AccessApprovalSettings\n name: organization_access_approval\n properties:\n organizationId: '123456789'\n notificationEmails:\n - testuser@example.com\n - example.user@example.com\n enrolledServices:\n - cloudProduct: appengine.googleapis.com\n - cloudProduct: dataflow.googleapis.com\n enrollmentLevel: BLOCK_ALL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Organization Access Approval Active Key Version\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myProject = new gcp.organizations.Project(\"my_project\", {\n name: \"My Project\",\n projectId: \"your-project-id\",\n orgId: \"123456789\",\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"key-ring\",\n location: \"global\",\n project: myProject.projectId,\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"crypto-key\",\n keyRing: keyRing.id,\n purpose: \"ASYMMETRIC_SIGN\",\n versionTemplate: {\n algorithm: \"EC_SIGN_P384_SHA384\",\n },\n});\nconst serviceAccount = gcp.accessapproval.getOrganizationServiceAccount({\n organizationId: \"123456789\",\n});\nconst iam = new gcp.kms.CryptoKeyIAMMember(\"iam\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.signerVerifier\",\n member: serviceAccount.then(serviceAccount =\u003e `serviceAccount:${serviceAccount.accountEmail}`),\n});\nconst cryptoKeyVersion = gcp.kms.getKMSCryptoKeyVersionOutput({\n cryptoKey: cryptoKey.id,\n});\nconst organizationAccessApproval = new gcp.organizations.AccessApprovalSettings(\"organization_access_approval\", {\n organizationId: \"123456789\",\n activeKeyVersion: cryptoKeyVersion.apply(cryptoKeyVersion =\u003e cryptoKeyVersion.name),\n enrolledServices: [{\n cloudProduct: \"all\",\n }],\n}, {\n dependsOn: [iam],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_project = gcp.organizations.Project(\"my_project\",\n name=\"My Project\",\n project_id=\"your-project-id\",\n org_id=\"123456789\")\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"key-ring\",\n location=\"global\",\n project=my_project.project_id)\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"crypto-key\",\n key_ring=key_ring.id,\n purpose=\"ASYMMETRIC_SIGN\",\n version_template={\n \"algorithm\": \"EC_SIGN_P384_SHA384\",\n })\nservice_account = gcp.accessapproval.get_organization_service_account(organization_id=\"123456789\")\niam = gcp.kms.CryptoKeyIAMMember(\"iam\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.signerVerifier\",\n member=f\"serviceAccount:{service_account.account_email}\")\ncrypto_key_version = gcp.kms.get_kms_crypto_key_version_output(crypto_key=crypto_key.id)\norganization_access_approval = gcp.organizations.AccessApprovalSettings(\"organization_access_approval\",\n organization_id=\"123456789\",\n active_key_version=crypto_key_version.name,\n enrolled_services=[{\n \"cloud_product\": \"all\",\n }],\n opts = pulumi.ResourceOptions(depends_on=[iam]))\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(\"my_project\", new()\n {\n Name = \"My Project\",\n ProjectId = \"your-project-id\",\n OrgId = \"123456789\",\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"key-ring\",\n Location = \"global\",\n Project = myProject.ProjectId,\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"crypto-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ASYMMETRIC_SIGN\",\n VersionTemplate = new Gcp.Kms.Inputs.CryptoKeyVersionTemplateArgs\n {\n Algorithm = \"EC_SIGN_P384_SHA384\",\n },\n });\n\n var serviceAccount = Gcp.AccessApproval.GetOrganizationServiceAccount.Invoke(new()\n {\n OrganizationId = \"123456789\",\n });\n\n var iam = new Gcp.Kms.CryptoKeyIAMMember(\"iam\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.signerVerifier\",\n Member = $\"serviceAccount:{serviceAccount.Apply(getOrganizationServiceAccountResult =\u003e getOrganizationServiceAccountResult.AccountEmail)}\",\n });\n\n var cryptoKeyVersion = Gcp.Kms.GetKMSCryptoKeyVersion.Invoke(new()\n {\n CryptoKey = cryptoKey.Id,\n });\n\n var organizationAccessApproval = new Gcp.Organizations.AccessApprovalSettings(\"organization_access_approval\", new()\n {\n OrganizationId = \"123456789\",\n ActiveKeyVersion = cryptoKeyVersion.Apply(getKMSCryptoKeyVersionResult =\u003e getKMSCryptoKeyVersionResult.Name),\n EnrolledServices = new[]\n {\n new Gcp.Organizations.Inputs.AccessApprovalSettingsEnrolledServiceArgs\n {\n CloudProduct = \"all\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n iam,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/accessapproval\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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, \"my_project\", \u0026organizations.ProjectArgs{\n\t\t\tName: pulumi.String(\"My Project\"),\n\t\t\tProjectId: pulumi.String(\"your-project-id\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"key-ring\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tProject: myProject.ProjectId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"crypto-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ASYMMETRIC_SIGN\"),\n\t\t\tVersionTemplate: \u0026kms.CryptoKeyVersionTemplateArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"EC_SIGN_P384_SHA384\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceAccount, err := accessapproval.GetOrganizationServiceAccount(ctx, \u0026accessapproval.GetOrganizationServiceAccountArgs{\n\t\t\tOrganizationId: \"123456789\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tiam, err := kms.NewCryptoKeyIAMMember(ctx, \"iam\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.signerVerifier\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v\", serviceAccount.AccountEmail)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyVersion := kms.GetKMSCryptoKeyVersionOutput(ctx, kms.GetKMSCryptoKeyVersionOutputArgs{\n\t\t\tCryptoKey: cryptoKey.ID(),\n\t\t}, nil)\n\t\t_, err = organizations.NewAccessApprovalSettings(ctx, \"organization_access_approval\", \u0026organizations.AccessApprovalSettingsArgs{\n\t\t\tOrganizationId: pulumi.String(\"123456789\"),\n\t\t\tActiveKeyVersion: pulumi.String(cryptoKeyVersion.ApplyT(func(cryptoKeyVersion kms.GetKMSCryptoKeyVersionResult) (*string, error) {\n\t\t\t\treturn \u0026cryptoKeyVersion.Name, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tEnrolledServices: organizations.AccessApprovalSettingsEnrolledServiceArray{\n\t\t\t\t\u0026organizations.AccessApprovalSettingsEnrolledServiceArgs{\n\t\t\t\t\tCloudProduct: pulumi.String(\"all\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tiam,\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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.inputs.CryptoKeyVersionTemplateArgs;\nimport com.pulumi.gcp.accessapproval.AccessapprovalFunctions;\nimport com.pulumi.gcp.accessapproval.inputs.GetOrganizationServiceAccountArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.kms.KmsFunctions;\nimport com.pulumi.gcp.kms.inputs.GetKMSCryptoKeyVersionArgs;\nimport com.pulumi.gcp.organizations.AccessApprovalSettings;\nimport com.pulumi.gcp.organizations.AccessApprovalSettingsArgs;\nimport com.pulumi.gcp.organizations.inputs.AccessApprovalSettingsEnrolledServiceArgs;\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 myProject = new Project(\"myProject\", ProjectArgs.builder()\n .name(\"My Project\")\n .projectId(\"your-project-id\")\n .orgId(\"123456789\")\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"key-ring\")\n .location(\"global\")\n .project(myProject.projectId())\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"crypto-key\")\n .keyRing(keyRing.id())\n .purpose(\"ASYMMETRIC_SIGN\")\n .versionTemplate(CryptoKeyVersionTemplateArgs.builder()\n .algorithm(\"EC_SIGN_P384_SHA384\")\n .build())\n .build());\n\n final var serviceAccount = AccessapprovalFunctions.getOrganizationServiceAccount(GetOrganizationServiceAccountArgs.builder()\n .organizationId(\"123456789\")\n .build());\n\n var iam = new CryptoKeyIAMMember(\"iam\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.signerVerifier\")\n .member(String.format(\"serviceAccount:%s\", serviceAccount.applyValue(getOrganizationServiceAccountResult -\u003e getOrganizationServiceAccountResult.accountEmail())))\n .build());\n\n final var cryptoKeyVersion = KmsFunctions.getKMSCryptoKeyVersion(GetKMSCryptoKeyVersionArgs.builder()\n .cryptoKey(cryptoKey.id())\n .build());\n\n var organizationAccessApproval = new AccessApprovalSettings(\"organizationAccessApproval\", AccessApprovalSettingsArgs.builder()\n .organizationId(\"123456789\")\n .activeKeyVersion(cryptoKeyVersion.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult).applyValue(cryptoKeyVersion -\u003e cryptoKeyVersion.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult.name())))\n .enrolledServices(AccessApprovalSettingsEnrolledServiceArgs.builder()\n .cloudProduct(\"all\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(iam)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myProject:\n type: gcp:organizations:Project\n name: my_project\n properties:\n name: My Project\n projectId: your-project-id\n orgId: '123456789'\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: key-ring\n location: global\n project: ${myProject.projectId}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: crypto-key\n keyRing: ${keyRing.id}\n purpose: ASYMMETRIC_SIGN\n versionTemplate:\n algorithm: EC_SIGN_P384_SHA384\n iam:\n type: gcp:kms:CryptoKeyIAMMember\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.signerVerifier\n member: serviceAccount:${serviceAccount.accountEmail}\n organizationAccessApproval:\n type: gcp:organizations:AccessApprovalSettings\n name: organization_access_approval\n properties:\n organizationId: '123456789'\n activeKeyVersion: ${cryptoKeyVersion.name}\n enrolledServices:\n - cloudProduct: all\n options:\n dependson:\n - ${iam}\nvariables:\n serviceAccount:\n fn::invoke:\n Function: gcp:accessapproval:getOrganizationServiceAccount\n Arguments:\n organizationId: '123456789'\n cryptoKeyVersion:\n fn::invoke:\n Function: gcp:kms:getKMSCryptoKeyVersion\n Arguments:\n cryptoKey: ${cryptoKey.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganizationSettings can be imported using any of these accepted formats:\n\n* `organizations/{{organization_id}}/accessApprovalSettings`\n\n* `{{organization_id}}`\n\nWhen using the `pulumi import` command, OrganizationSettings can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:organizations/accessApprovalSettings:AccessApprovalSettings default organizations/{{organization_id}}/accessApprovalSettings\n```\n\n```sh\n$ pulumi import gcp:organizations/accessApprovalSettings:AccessApprovalSettings default {{organization_id}}\n```\n\n", "properties": { "activeKeyVersion": { "type": "string", @@ -224994,7 +224994,7 @@ } }, "gcp:organizations/iAMMember:IAMMember": { - "description": "Four different resources help you manage your IAM policy for a organization. Each of these resources serves a different use case:\n\n* `gcp.organizations.IAMPolicy`: Authoritative. Sets the IAM policy for the organization and replaces any existing policy already attached.\n* `gcp.organizations.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the organization are preserved.\n* `gcp.organizations.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the organization are preserved.\n* `gcp.organizations.IamAuditConfig`: Authoritative for a given service. Updates the IAM policy to enable audit logging for the given service.\n\n\n\u003e **Note:** `gcp.organizations.IAMPolicy` **cannot** be used in conjunction with `gcp.organizations.IAMBinding`, `gcp.organizations.IAMMember`, or `gcp.organizations.IamAuditConfig` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.organizations.IAMBinding` resources **can be** used in conjunction with `gcp.organizations.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n## gcp.organizations.IAMPolicy\n\n!\u003e **Warning:** New organizations have several default policies which will,\n without extreme caution, be **overwritten** by use of this resource.\n The safest alternative is to use multiple `gcp.organizations.IAMBinding`\n resources. This resource makes it easy to remove your own access to\n an organization, which will require a call to Google Support to have\n fixed, and can take multiple days to resolve.\n\n\n In general, this resource should only be used with organizations\n fully managed by this provider.I f you do use this resource,\n the best way to be sure that you are not making dangerous changes is to start\n by **importing** your existing policy, and examining the diff very closely.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst organization = new gcp.organizations.IAMPolicy(\"organization\", {\n orgId: \"1234567890\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\norganization = gcp.organizations.IAMPolicy(\"organization\",\n org_id=\"1234567890\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var organization = new Gcp.Organizations.IAMPolicy(\"organization\", new()\n {\n OrgId = \"1234567890\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = organizations.NewIAMPolicy(ctx, \"organization\", \u0026organizations.IAMPolicyArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.organizations.IAMPolicy;\nimport com.pulumi.gcp.organizations.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var organization = new IAMPolicy(\"organization\", IAMPolicyArgs.builder()\n .orgId(\"1234567890\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMPolicy\n properties:\n orgId: '1234567890'\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst organization = new gcp.organizations.IAMPolicy(\"organization\", {\n orgId: \"1234567890\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\norganization = gcp.organizations.IAMPolicy(\"organization\",\n org_id=\"1234567890\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var organization = new Gcp.Organizations.IAMPolicy(\"organization\", new()\n {\n OrgId = \"1234567890\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = organizations.NewIAMPolicy(ctx, \"organization\", \u0026organizations.IAMPolicyArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.organizations.IAMPolicy;\nimport com.pulumi.gcp.organizations.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var organization = new IAMPolicy(\"organization\", IAMPolicyArgs.builder()\n .orgId(\"1234567890\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMPolicy\n properties:\n orgId: '1234567890'\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMBinding\n\n\u003e **Note:** If `role` is set to `roles/owner` and you don't specify a user or service account you have access to in `members`, you can lock yourself out of your organization.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMBinding(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMBinding(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 organization = new Gcp.Organizations.IAMBinding(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMBinding(ctx, \"organization\", \u0026organizations.IAMBindingArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.organizations.IAMBinding;\nimport com.pulumi.gcp.organizations.IAMBindingArgs;\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 organization = new IAMBinding(\"organization\", IAMBindingArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMBinding\n properties:\n orgId: '1234567890'\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMBinding(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMBinding(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 organization = new Gcp.Organizations.IAMBinding(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMBinding(ctx, \"organization\", \u0026organizations.IAMBindingArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026organizations.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.organizations.IAMBinding;\nimport com.pulumi.gcp.organizations.IAMBindingArgs;\nimport com.pulumi.gcp.organizations.inputs.IAMBindingConditionArgs;\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 organization = new IAMBinding(\"organization\", IAMBindingArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMBinding\n properties:\n orgId: '1234567890'\n role: roles/editor\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMMember(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMMember(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 organization = new Gcp.Organizations.IAMMember(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMMember(ctx, \"organization\", \u0026organizations.IAMMemberArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.IAMMember;\nimport com.pulumi.gcp.organizations.IAMMemberArgs;\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 organization = new IAMMember(\"organization\", IAMMemberArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMMember\n properties:\n orgId: '1234567890'\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMMember(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMMember(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 organization = new Gcp.Organizations.IAMMember(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Organizations.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMMember(ctx, \"organization\", \u0026organizations.IAMMemberArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026organizations.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.organizations.IAMMember;\nimport com.pulumi.gcp.organizations.IAMMemberArgs;\nimport com.pulumi.gcp.organizations.inputs.IAMMemberConditionArgs;\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 organization = new IAMMember(\"organization\", IAMMemberArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMMember\n properties:\n orgId: '1234567890'\n role: roles/editor\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IamAuditConfig(\"organization\", {\n orgId: \"1234567890\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IamAuditConfig(\"organization\",\n org_id=\"1234567890\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"logType\": \"ADMIN_READ\",\n },\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\"user:joebloggs@example.com\"],\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 organization = new Gcp.Organizations.IamAuditConfig(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Organizations.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Organizations.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIamAuditConfig(ctx, \"organization\", \u0026organizations.IamAuditConfigArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: organizations.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026organizations.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026organizations.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.organizations.IamAuditConfig;\nimport com.pulumi.gcp.organizations.IamAuditConfigArgs;\nimport com.pulumi.gcp.organizations.inputs.IamAuditConfigAuditLogConfigArgs;\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 organization = new IamAuditConfig(\"organization\", IamAuditConfigArgs.builder()\n .orgId(\"1234567890\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IamAuditConfig\n properties:\n orgId: '1234567890'\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMPolicy\n\n!\u003e **Warning:** New organizations have several default policies which will,\n without extreme caution, be **overwritten** by use of this resource.\n The safest alternative is to use multiple `gcp.organizations.IAMBinding`\n resources. This resource makes it easy to remove your own access to\n an organization, which will require a call to Google Support to have\n fixed, and can take multiple days to resolve.\n\n\n In general, this resource should only be used with organizations\n fully managed by this provider.I f you do use this resource,\n the best way to be sure that you are not making dangerous changes is to start\n by **importing** your existing policy, and examining the diff very closely.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst organization = new gcp.organizations.IAMPolicy(\"organization\", {\n orgId: \"1234567890\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\norganization = gcp.organizations.IAMPolicy(\"organization\",\n org_id=\"1234567890\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var organization = new Gcp.Organizations.IAMPolicy(\"organization\", new()\n {\n OrgId = \"1234567890\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = organizations.NewIAMPolicy(ctx, \"organization\", \u0026organizations.IAMPolicyArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.organizations.IAMPolicy;\nimport com.pulumi.gcp.organizations.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var organization = new IAMPolicy(\"organization\", IAMPolicyArgs.builder()\n .orgId(\"1234567890\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMPolicy\n properties:\n orgId: '1234567890'\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst organization = new gcp.organizations.IAMPolicy(\"organization\", {\n orgId: \"1234567890\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\norganization = gcp.organizations.IAMPolicy(\"organization\",\n org_id=\"1234567890\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var organization = new Gcp.Organizations.IAMPolicy(\"organization\", new()\n {\n OrgId = \"1234567890\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = organizations.NewIAMPolicy(ctx, \"organization\", \u0026organizations.IAMPolicyArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.organizations.IAMPolicy;\nimport com.pulumi.gcp.organizations.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var organization = new IAMPolicy(\"organization\", IAMPolicyArgs.builder()\n .orgId(\"1234567890\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMPolicy\n properties:\n orgId: '1234567890'\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMBinding\n\n\u003e **Note:** If `role` is set to `roles/owner` and you don't specify a user or service account you have access to in `members`, you can lock yourself out of your organization.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMBinding(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMBinding(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 organization = new Gcp.Organizations.IAMBinding(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMBinding(ctx, \"organization\", \u0026organizations.IAMBindingArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.organizations.IAMBinding;\nimport com.pulumi.gcp.organizations.IAMBindingArgs;\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 organization = new IAMBinding(\"organization\", IAMBindingArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMBinding\n properties:\n orgId: '1234567890'\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMBinding(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMBinding(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 organization = new Gcp.Organizations.IAMBinding(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMBinding(ctx, \"organization\", \u0026organizations.IAMBindingArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026organizations.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.organizations.IAMBinding;\nimport com.pulumi.gcp.organizations.IAMBindingArgs;\nimport com.pulumi.gcp.organizations.inputs.IAMBindingConditionArgs;\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 organization = new IAMBinding(\"organization\", IAMBindingArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMBinding\n properties:\n orgId: '1234567890'\n role: roles/editor\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMMember(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMMember(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 organization = new Gcp.Organizations.IAMMember(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMMember(ctx, \"organization\", \u0026organizations.IAMMemberArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.IAMMember;\nimport com.pulumi.gcp.organizations.IAMMemberArgs;\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 organization = new IAMMember(\"organization\", IAMMemberArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMMember\n properties:\n orgId: '1234567890'\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMMember(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMMember(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 organization = new Gcp.Organizations.IAMMember(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Organizations.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMMember(ctx, \"organization\", \u0026organizations.IAMMemberArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026organizations.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.organizations.IAMMember;\nimport com.pulumi.gcp.organizations.IAMMemberArgs;\nimport com.pulumi.gcp.organizations.inputs.IAMMemberConditionArgs;\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 organization = new IAMMember(\"organization\", IAMMemberArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMMember\n properties:\n orgId: '1234567890'\n role: roles/editor\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IamAuditConfig(\"organization\", {\n orgId: \"1234567890\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IamAuditConfig(\"organization\",\n org_id=\"1234567890\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"logType\": \"ADMIN_READ\",\n },\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\"user:joebloggs@example.com\"],\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 organization = new Gcp.Organizations.IamAuditConfig(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Organizations.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Organizations.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIamAuditConfig(ctx, \"organization\", \u0026organizations.IamAuditConfigArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: organizations.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026organizations.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026organizations.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.organizations.IamAuditConfig;\nimport com.pulumi.gcp.organizations.IamAuditConfigArgs;\nimport com.pulumi.gcp.organizations.inputs.IamAuditConfigAuditLogConfigArgs;\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 organization = new IamAuditConfig(\"organization\", IamAuditConfigArgs.builder()\n .orgId(\"1234567890\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IamAuditConfig\n properties:\n orgId: '1234567890'\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing Audit Configs\n\nAn audit config can be imported into a `google_organization_iam_audit_config` resource using the resource's `org_id` and the `service`, e.g:\n\n* `\"{{org_id}} foo.googleapis.com\"`\n\nAn `import` block (Terraform v1.5.0 and later) can be used to import audit configs:\n\ntf\n\nimport {\n\n id = \"{{org_id}} foo.googleapis.com\"\n\n to = google_organization_iam_audit_config.default\n\n}\n\nThe `pulumi import` command can also be used:\n\n```sh\n$ pulumi import gcp:organizations/iAMMember:IAMMember default \"{{org_id}} foo.googleapis.com\"\n```\n\n", + "description": "Four different resources help you manage your IAM policy for a organization. Each of these resources serves a different use case:\n\n* `gcp.organizations.IAMPolicy`: Authoritative. Sets the IAM policy for the organization and replaces any existing policy already attached.\n* `gcp.organizations.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the organization are preserved.\n* `gcp.organizations.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the organization are preserved.\n* `gcp.organizations.IamAuditConfig`: Authoritative for a given service. Updates the IAM policy to enable audit logging for the given service.\n\n\n\u003e **Note:** `gcp.organizations.IAMPolicy` **cannot** be used in conjunction with `gcp.organizations.IAMBinding`, `gcp.organizations.IAMMember`, or `gcp.organizations.IamAuditConfig` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.organizations.IAMBinding` resources **can be** used in conjunction with `gcp.organizations.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n## gcp.organizations.IAMPolicy\n\n!\u003e **Warning:** New organizations have several default policies which will,\n without extreme caution, be **overwritten** by use of this resource.\n The safest alternative is to use multiple `gcp.organizations.IAMBinding`\n resources. This resource makes it easy to remove your own access to\n an organization, which will require a call to Google Support to have\n fixed, and can take multiple days to resolve.\n\n\n In general, this resource should only be used with organizations\n fully managed by this provider.I f you do use this resource,\n the best way to be sure that you are not making dangerous changes is to start\n by **importing** your existing policy, and examining the diff very closely.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst organization = new gcp.organizations.IAMPolicy(\"organization\", {\n orgId: \"1234567890\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\norganization = gcp.organizations.IAMPolicy(\"organization\",\n org_id=\"1234567890\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var organization = new Gcp.Organizations.IAMPolicy(\"organization\", new()\n {\n OrgId = \"1234567890\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = organizations.NewIAMPolicy(ctx, \"organization\", \u0026organizations.IAMPolicyArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.organizations.IAMPolicy;\nimport com.pulumi.gcp.organizations.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var organization = new IAMPolicy(\"organization\", IAMPolicyArgs.builder()\n .orgId(\"1234567890\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMPolicy\n properties:\n orgId: '1234567890'\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst organization = new gcp.organizations.IAMPolicy(\"organization\", {\n orgId: \"1234567890\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\norganization = gcp.organizations.IAMPolicy(\"organization\",\n org_id=\"1234567890\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var organization = new Gcp.Organizations.IAMPolicy(\"organization\", new()\n {\n OrgId = \"1234567890\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = organizations.NewIAMPolicy(ctx, \"organization\", \u0026organizations.IAMPolicyArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.organizations.IAMPolicy;\nimport com.pulumi.gcp.organizations.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var organization = new IAMPolicy(\"organization\", IAMPolicyArgs.builder()\n .orgId(\"1234567890\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMPolicy\n properties:\n orgId: '1234567890'\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMBinding\n\n\u003e **Note:** If `role` is set to `roles/owner` and you don't specify a user or service account you have access to in `members`, you can lock yourself out of your organization.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMBinding(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMBinding(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 organization = new Gcp.Organizations.IAMBinding(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMBinding(ctx, \"organization\", \u0026organizations.IAMBindingArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.organizations.IAMBinding;\nimport com.pulumi.gcp.organizations.IAMBindingArgs;\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 organization = new IAMBinding(\"organization\", IAMBindingArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMBinding\n properties:\n orgId: '1234567890'\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMBinding(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMBinding(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 organization = new Gcp.Organizations.IAMBinding(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMBinding(ctx, \"organization\", \u0026organizations.IAMBindingArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026organizations.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.organizations.IAMBinding;\nimport com.pulumi.gcp.organizations.IAMBindingArgs;\nimport com.pulumi.gcp.organizations.inputs.IAMBindingConditionArgs;\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 organization = new IAMBinding(\"organization\", IAMBindingArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMBinding\n properties:\n orgId: '1234567890'\n role: roles/editor\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMMember(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMMember(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 organization = new Gcp.Organizations.IAMMember(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMMember(ctx, \"organization\", \u0026organizations.IAMMemberArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.IAMMember;\nimport com.pulumi.gcp.organizations.IAMMemberArgs;\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 organization = new IAMMember(\"organization\", IAMMemberArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMMember\n properties:\n orgId: '1234567890'\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMMember(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMMember(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 organization = new Gcp.Organizations.IAMMember(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Organizations.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMMember(ctx, \"organization\", \u0026organizations.IAMMemberArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026organizations.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.organizations.IAMMember;\nimport com.pulumi.gcp.organizations.IAMMemberArgs;\nimport com.pulumi.gcp.organizations.inputs.IAMMemberConditionArgs;\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 organization = new IAMMember(\"organization\", IAMMemberArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMMember\n properties:\n orgId: '1234567890'\n role: roles/editor\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IamAuditConfig(\"organization\", {\n orgId: \"1234567890\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IamAuditConfig(\"organization\",\n org_id=\"1234567890\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"log_type\": \"ADMIN_READ\",\n },\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\"user:joebloggs@example.com\"],\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 organization = new Gcp.Organizations.IamAuditConfig(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Organizations.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Organizations.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIamAuditConfig(ctx, \"organization\", \u0026organizations.IamAuditConfigArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: organizations.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026organizations.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026organizations.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.organizations.IamAuditConfig;\nimport com.pulumi.gcp.organizations.IamAuditConfigArgs;\nimport com.pulumi.gcp.organizations.inputs.IamAuditConfigAuditLogConfigArgs;\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 organization = new IamAuditConfig(\"organization\", IamAuditConfigArgs.builder()\n .orgId(\"1234567890\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IamAuditConfig\n properties:\n orgId: '1234567890'\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMPolicy\n\n!\u003e **Warning:** New organizations have several default policies which will,\n without extreme caution, be **overwritten** by use of this resource.\n The safest alternative is to use multiple `gcp.organizations.IAMBinding`\n resources. This resource makes it easy to remove your own access to\n an organization, which will require a call to Google Support to have\n fixed, and can take multiple days to resolve.\n\n\n In general, this resource should only be used with organizations\n fully managed by this provider.I f you do use this resource,\n the best way to be sure that you are not making dangerous changes is to start\n by **importing** your existing policy, and examining the diff very closely.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst organization = new gcp.organizations.IAMPolicy(\"organization\", {\n orgId: \"1234567890\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\norganization = gcp.organizations.IAMPolicy(\"organization\",\n org_id=\"1234567890\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var organization = new Gcp.Organizations.IAMPolicy(\"organization\", new()\n {\n OrgId = \"1234567890\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = organizations.NewIAMPolicy(ctx, \"organization\", \u0026organizations.IAMPolicyArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.organizations.IAMPolicy;\nimport com.pulumi.gcp.organizations.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var organization = new IAMPolicy(\"organization\", IAMPolicyArgs.builder()\n .orgId(\"1234567890\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMPolicy\n properties:\n orgId: '1234567890'\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst organization = new gcp.organizations.IAMPolicy(\"organization\", {\n orgId: \"1234567890\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\norganization = gcp.organizations.IAMPolicy(\"organization\",\n org_id=\"1234567890\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var organization = new Gcp.Organizations.IAMPolicy(\"organization\", new()\n {\n OrgId = \"1234567890\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = organizations.NewIAMPolicy(ctx, \"organization\", \u0026organizations.IAMPolicyArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.organizations.IAMPolicy;\nimport com.pulumi.gcp.organizations.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var organization = new IAMPolicy(\"organization\", IAMPolicyArgs.builder()\n .orgId(\"1234567890\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMPolicy\n properties:\n orgId: '1234567890'\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMBinding\n\n\u003e **Note:** If `role` is set to `roles/owner` and you don't specify a user or service account you have access to in `members`, you can lock yourself out of your organization.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMBinding(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMBinding(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 organization = new Gcp.Organizations.IAMBinding(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMBinding(ctx, \"organization\", \u0026organizations.IAMBindingArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.organizations.IAMBinding;\nimport com.pulumi.gcp.organizations.IAMBindingArgs;\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 organization = new IAMBinding(\"organization\", IAMBindingArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMBinding\n properties:\n orgId: '1234567890'\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMBinding(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMBinding(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 organization = new Gcp.Organizations.IAMBinding(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMBinding(ctx, \"organization\", \u0026organizations.IAMBindingArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026organizations.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.organizations.IAMBinding;\nimport com.pulumi.gcp.organizations.IAMBindingArgs;\nimport com.pulumi.gcp.organizations.inputs.IAMBindingConditionArgs;\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 organization = new IAMBinding(\"organization\", IAMBindingArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMBinding\n properties:\n orgId: '1234567890'\n role: roles/editor\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMMember(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMMember(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 organization = new Gcp.Organizations.IAMMember(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMMember(ctx, \"organization\", \u0026organizations.IAMMemberArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.IAMMember;\nimport com.pulumi.gcp.organizations.IAMMemberArgs;\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 organization = new IAMMember(\"organization\", IAMMemberArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMMember\n properties:\n orgId: '1234567890'\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMMember(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMMember(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 organization = new Gcp.Organizations.IAMMember(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Organizations.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMMember(ctx, \"organization\", \u0026organizations.IAMMemberArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026organizations.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.organizations.IAMMember;\nimport com.pulumi.gcp.organizations.IAMMemberArgs;\nimport com.pulumi.gcp.organizations.inputs.IAMMemberConditionArgs;\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 organization = new IAMMember(\"organization\", IAMMemberArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMMember\n properties:\n orgId: '1234567890'\n role: roles/editor\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IamAuditConfig(\"organization\", {\n orgId: \"1234567890\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IamAuditConfig(\"organization\",\n org_id=\"1234567890\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"log_type\": \"ADMIN_READ\",\n },\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\"user:joebloggs@example.com\"],\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 organization = new Gcp.Organizations.IamAuditConfig(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Organizations.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Organizations.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIamAuditConfig(ctx, \"organization\", \u0026organizations.IamAuditConfigArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: organizations.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026organizations.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026organizations.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.organizations.IamAuditConfig;\nimport com.pulumi.gcp.organizations.IamAuditConfigArgs;\nimport com.pulumi.gcp.organizations.inputs.IamAuditConfigAuditLogConfigArgs;\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 organization = new IamAuditConfig(\"organization\", IamAuditConfigArgs.builder()\n .orgId(\"1234567890\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IamAuditConfig\n properties:\n orgId: '1234567890'\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing Audit Configs\n\nAn audit config can be imported into a `google_organization_iam_audit_config` resource using the resource's `org_id` and the `service`, e.g:\n\n* `\"{{org_id}} foo.googleapis.com\"`\n\nAn `import` block (Terraform v1.5.0 and later) can be used to import audit configs:\n\ntf\n\nimport {\n\n id = \"{{org_id}} foo.googleapis.com\"\n\n to = google_organization_iam_audit_config.default\n\n}\n\nThe `pulumi import` command can also be used:\n\n```sh\n$ pulumi import gcp:organizations/iAMMember:IAMMember default \"{{org_id}} foo.googleapis.com\"\n```\n\n", "properties": { "condition": { "$ref": "#/types/gcp:organizations/IAMMemberCondition:IAMMemberCondition", @@ -225082,7 +225082,7 @@ } }, "gcp:organizations/iAMPolicy:IAMPolicy": { - "description": "Four different resources help you manage your IAM policy for a organization. Each of these resources serves a different use case:\n\n* `gcp.organizations.IAMPolicy`: Authoritative. Sets the IAM policy for the organization and replaces any existing policy already attached.\n* `gcp.organizations.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the organization are preserved.\n* `gcp.organizations.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the organization are preserved.\n* `gcp.organizations.IamAuditConfig`: Authoritative for a given service. Updates the IAM policy to enable audit logging for the given service.\n\n\n\u003e **Note:** `gcp.organizations.IAMPolicy` **cannot** be used in conjunction with `gcp.organizations.IAMBinding`, `gcp.organizations.IAMMember`, or `gcp.organizations.IamAuditConfig` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.organizations.IAMBinding` resources **can be** used in conjunction with `gcp.organizations.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n## gcp.organizations.IAMPolicy\n\n!\u003e **Warning:** New organizations have several default policies which will,\n without extreme caution, be **overwritten** by use of this resource.\n The safest alternative is to use multiple `gcp.organizations.IAMBinding`\n resources. This resource makes it easy to remove your own access to\n an organization, which will require a call to Google Support to have\n fixed, and can take multiple days to resolve.\n\n\n In general, this resource should only be used with organizations\n fully managed by this provider.I f you do use this resource,\n the best way to be sure that you are not making dangerous changes is to start\n by **importing** your existing policy, and examining the diff very closely.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst organization = new gcp.organizations.IAMPolicy(\"organization\", {\n orgId: \"1234567890\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\norganization = gcp.organizations.IAMPolicy(\"organization\",\n org_id=\"1234567890\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var organization = new Gcp.Organizations.IAMPolicy(\"organization\", new()\n {\n OrgId = \"1234567890\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = organizations.NewIAMPolicy(ctx, \"organization\", \u0026organizations.IAMPolicyArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.organizations.IAMPolicy;\nimport com.pulumi.gcp.organizations.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var organization = new IAMPolicy(\"organization\", IAMPolicyArgs.builder()\n .orgId(\"1234567890\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMPolicy\n properties:\n orgId: '1234567890'\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst organization = new gcp.organizations.IAMPolicy(\"organization\", {\n orgId: \"1234567890\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\norganization = gcp.organizations.IAMPolicy(\"organization\",\n org_id=\"1234567890\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var organization = new Gcp.Organizations.IAMPolicy(\"organization\", new()\n {\n OrgId = \"1234567890\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = organizations.NewIAMPolicy(ctx, \"organization\", \u0026organizations.IAMPolicyArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.organizations.IAMPolicy;\nimport com.pulumi.gcp.organizations.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var organization = new IAMPolicy(\"organization\", IAMPolicyArgs.builder()\n .orgId(\"1234567890\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMPolicy\n properties:\n orgId: '1234567890'\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMBinding\n\n\u003e **Note:** If `role` is set to `roles/owner` and you don't specify a user or service account you have access to in `members`, you can lock yourself out of your organization.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMBinding(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMBinding(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 organization = new Gcp.Organizations.IAMBinding(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMBinding(ctx, \"organization\", \u0026organizations.IAMBindingArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.organizations.IAMBinding;\nimport com.pulumi.gcp.organizations.IAMBindingArgs;\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 organization = new IAMBinding(\"organization\", IAMBindingArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMBinding\n properties:\n orgId: '1234567890'\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMBinding(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMBinding(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 organization = new Gcp.Organizations.IAMBinding(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMBinding(ctx, \"organization\", \u0026organizations.IAMBindingArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026organizations.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.organizations.IAMBinding;\nimport com.pulumi.gcp.organizations.IAMBindingArgs;\nimport com.pulumi.gcp.organizations.inputs.IAMBindingConditionArgs;\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 organization = new IAMBinding(\"organization\", IAMBindingArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMBinding\n properties:\n orgId: '1234567890'\n role: roles/editor\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMMember(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMMember(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 organization = new Gcp.Organizations.IAMMember(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMMember(ctx, \"organization\", \u0026organizations.IAMMemberArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.IAMMember;\nimport com.pulumi.gcp.organizations.IAMMemberArgs;\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 organization = new IAMMember(\"organization\", IAMMemberArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMMember\n properties:\n orgId: '1234567890'\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMMember(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMMember(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 organization = new Gcp.Organizations.IAMMember(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Organizations.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMMember(ctx, \"organization\", \u0026organizations.IAMMemberArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026organizations.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.organizations.IAMMember;\nimport com.pulumi.gcp.organizations.IAMMemberArgs;\nimport com.pulumi.gcp.organizations.inputs.IAMMemberConditionArgs;\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 organization = new IAMMember(\"organization\", IAMMemberArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMMember\n properties:\n orgId: '1234567890'\n role: roles/editor\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IamAuditConfig(\"organization\", {\n orgId: \"1234567890\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IamAuditConfig(\"organization\",\n org_id=\"1234567890\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"logType\": \"ADMIN_READ\",\n },\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\"user:joebloggs@example.com\"],\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 organization = new Gcp.Organizations.IamAuditConfig(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Organizations.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Organizations.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIamAuditConfig(ctx, \"organization\", \u0026organizations.IamAuditConfigArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: organizations.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026organizations.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026organizations.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.organizations.IamAuditConfig;\nimport com.pulumi.gcp.organizations.IamAuditConfigArgs;\nimport com.pulumi.gcp.organizations.inputs.IamAuditConfigAuditLogConfigArgs;\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 organization = new IamAuditConfig(\"organization\", IamAuditConfigArgs.builder()\n .orgId(\"1234567890\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IamAuditConfig\n properties:\n orgId: '1234567890'\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMPolicy\n\n!\u003e **Warning:** New organizations have several default policies which will,\n without extreme caution, be **overwritten** by use of this resource.\n The safest alternative is to use multiple `gcp.organizations.IAMBinding`\n resources. This resource makes it easy to remove your own access to\n an organization, which will require a call to Google Support to have\n fixed, and can take multiple days to resolve.\n\n\n In general, this resource should only be used with organizations\n fully managed by this provider.I f you do use this resource,\n the best way to be sure that you are not making dangerous changes is to start\n by **importing** your existing policy, and examining the diff very closely.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst organization = new gcp.organizations.IAMPolicy(\"organization\", {\n orgId: \"1234567890\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\norganization = gcp.organizations.IAMPolicy(\"organization\",\n org_id=\"1234567890\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var organization = new Gcp.Organizations.IAMPolicy(\"organization\", new()\n {\n OrgId = \"1234567890\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = organizations.NewIAMPolicy(ctx, \"organization\", \u0026organizations.IAMPolicyArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.organizations.IAMPolicy;\nimport com.pulumi.gcp.organizations.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var organization = new IAMPolicy(\"organization\", IAMPolicyArgs.builder()\n .orgId(\"1234567890\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMPolicy\n properties:\n orgId: '1234567890'\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst organization = new gcp.organizations.IAMPolicy(\"organization\", {\n orgId: \"1234567890\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\norganization = gcp.organizations.IAMPolicy(\"organization\",\n org_id=\"1234567890\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var organization = new Gcp.Organizations.IAMPolicy(\"organization\", new()\n {\n OrgId = \"1234567890\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = organizations.NewIAMPolicy(ctx, \"organization\", \u0026organizations.IAMPolicyArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.organizations.IAMPolicy;\nimport com.pulumi.gcp.organizations.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var organization = new IAMPolicy(\"organization\", IAMPolicyArgs.builder()\n .orgId(\"1234567890\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMPolicy\n properties:\n orgId: '1234567890'\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMBinding\n\n\u003e **Note:** If `role` is set to `roles/owner` and you don't specify a user or service account you have access to in `members`, you can lock yourself out of your organization.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMBinding(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMBinding(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 organization = new Gcp.Organizations.IAMBinding(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMBinding(ctx, \"organization\", \u0026organizations.IAMBindingArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.organizations.IAMBinding;\nimport com.pulumi.gcp.organizations.IAMBindingArgs;\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 organization = new IAMBinding(\"organization\", IAMBindingArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMBinding\n properties:\n orgId: '1234567890'\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMBinding(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMBinding(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 organization = new Gcp.Organizations.IAMBinding(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMBinding(ctx, \"organization\", \u0026organizations.IAMBindingArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026organizations.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.organizations.IAMBinding;\nimport com.pulumi.gcp.organizations.IAMBindingArgs;\nimport com.pulumi.gcp.organizations.inputs.IAMBindingConditionArgs;\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 organization = new IAMBinding(\"organization\", IAMBindingArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMBinding\n properties:\n orgId: '1234567890'\n role: roles/editor\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMMember(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMMember(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 organization = new Gcp.Organizations.IAMMember(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMMember(ctx, \"organization\", \u0026organizations.IAMMemberArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.IAMMember;\nimport com.pulumi.gcp.organizations.IAMMemberArgs;\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 organization = new IAMMember(\"organization\", IAMMemberArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMMember\n properties:\n orgId: '1234567890'\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMMember(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMMember(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 organization = new Gcp.Organizations.IAMMember(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Organizations.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMMember(ctx, \"organization\", \u0026organizations.IAMMemberArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026organizations.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.organizations.IAMMember;\nimport com.pulumi.gcp.organizations.IAMMemberArgs;\nimport com.pulumi.gcp.organizations.inputs.IAMMemberConditionArgs;\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 organization = new IAMMember(\"organization\", IAMMemberArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMMember\n properties:\n orgId: '1234567890'\n role: roles/editor\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IamAuditConfig(\"organization\", {\n orgId: \"1234567890\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IamAuditConfig(\"organization\",\n org_id=\"1234567890\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"logType\": \"ADMIN_READ\",\n },\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\"user:joebloggs@example.com\"],\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 organization = new Gcp.Organizations.IamAuditConfig(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Organizations.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Organizations.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIamAuditConfig(ctx, \"organization\", \u0026organizations.IamAuditConfigArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: organizations.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026organizations.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026organizations.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.organizations.IamAuditConfig;\nimport com.pulumi.gcp.organizations.IamAuditConfigArgs;\nimport com.pulumi.gcp.organizations.inputs.IamAuditConfigAuditLogConfigArgs;\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 organization = new IamAuditConfig(\"organization\", IamAuditConfigArgs.builder()\n .orgId(\"1234567890\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IamAuditConfig\n properties:\n orgId: '1234567890'\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing Audit Configs\n\nAn audit config can be imported into a `google_organization_iam_audit_config` resource using the resource's `org_id` and the `service`, e.g:\n\n* `\"{{org_id}} foo.googleapis.com\"`\n\nAn `import` block (Terraform v1.5.0 and later) can be used to import audit configs:\n\ntf\n\nimport {\n\n id = \"{{org_id}} foo.googleapis.com\"\n\n to = google_organization_iam_audit_config.default\n\n}\n\nThe `pulumi import` command can also be used:\n\n```sh\n$ pulumi import gcp:organizations/iAMPolicy:IAMPolicy default \"{{org_id}} foo.googleapis.com\"\n```\n\n", + "description": "Four different resources help you manage your IAM policy for a organization. Each of these resources serves a different use case:\n\n* `gcp.organizations.IAMPolicy`: Authoritative. Sets the IAM policy for the organization and replaces any existing policy already attached.\n* `gcp.organizations.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the organization are preserved.\n* `gcp.organizations.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the organization are preserved.\n* `gcp.organizations.IamAuditConfig`: Authoritative for a given service. Updates the IAM policy to enable audit logging for the given service.\n\n\n\u003e **Note:** `gcp.organizations.IAMPolicy` **cannot** be used in conjunction with `gcp.organizations.IAMBinding`, `gcp.organizations.IAMMember`, or `gcp.organizations.IamAuditConfig` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.organizations.IAMBinding` resources **can be** used in conjunction with `gcp.organizations.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n## gcp.organizations.IAMPolicy\n\n!\u003e **Warning:** New organizations have several default policies which will,\n without extreme caution, be **overwritten** by use of this resource.\n The safest alternative is to use multiple `gcp.organizations.IAMBinding`\n resources. This resource makes it easy to remove your own access to\n an organization, which will require a call to Google Support to have\n fixed, and can take multiple days to resolve.\n\n\n In general, this resource should only be used with organizations\n fully managed by this provider.I f you do use this resource,\n the best way to be sure that you are not making dangerous changes is to start\n by **importing** your existing policy, and examining the diff very closely.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst organization = new gcp.organizations.IAMPolicy(\"organization\", {\n orgId: \"1234567890\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\norganization = gcp.organizations.IAMPolicy(\"organization\",\n org_id=\"1234567890\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var organization = new Gcp.Organizations.IAMPolicy(\"organization\", new()\n {\n OrgId = \"1234567890\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = organizations.NewIAMPolicy(ctx, \"organization\", \u0026organizations.IAMPolicyArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.organizations.IAMPolicy;\nimport com.pulumi.gcp.organizations.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var organization = new IAMPolicy(\"organization\", IAMPolicyArgs.builder()\n .orgId(\"1234567890\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMPolicy\n properties:\n orgId: '1234567890'\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst organization = new gcp.organizations.IAMPolicy(\"organization\", {\n orgId: \"1234567890\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\norganization = gcp.organizations.IAMPolicy(\"organization\",\n org_id=\"1234567890\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var organization = new Gcp.Organizations.IAMPolicy(\"organization\", new()\n {\n OrgId = \"1234567890\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = organizations.NewIAMPolicy(ctx, \"organization\", \u0026organizations.IAMPolicyArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.organizations.IAMPolicy;\nimport com.pulumi.gcp.organizations.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var organization = new IAMPolicy(\"organization\", IAMPolicyArgs.builder()\n .orgId(\"1234567890\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMPolicy\n properties:\n orgId: '1234567890'\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMBinding\n\n\u003e **Note:** If `role` is set to `roles/owner` and you don't specify a user or service account you have access to in `members`, you can lock yourself out of your organization.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMBinding(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMBinding(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 organization = new Gcp.Organizations.IAMBinding(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMBinding(ctx, \"organization\", \u0026organizations.IAMBindingArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.organizations.IAMBinding;\nimport com.pulumi.gcp.organizations.IAMBindingArgs;\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 organization = new IAMBinding(\"organization\", IAMBindingArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMBinding\n properties:\n orgId: '1234567890'\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMBinding(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMBinding(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 organization = new Gcp.Organizations.IAMBinding(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMBinding(ctx, \"organization\", \u0026organizations.IAMBindingArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026organizations.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.organizations.IAMBinding;\nimport com.pulumi.gcp.organizations.IAMBindingArgs;\nimport com.pulumi.gcp.organizations.inputs.IAMBindingConditionArgs;\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 organization = new IAMBinding(\"organization\", IAMBindingArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMBinding\n properties:\n orgId: '1234567890'\n role: roles/editor\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMMember(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMMember(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 organization = new Gcp.Organizations.IAMMember(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMMember(ctx, \"organization\", \u0026organizations.IAMMemberArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.IAMMember;\nimport com.pulumi.gcp.organizations.IAMMemberArgs;\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 organization = new IAMMember(\"organization\", IAMMemberArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMMember\n properties:\n orgId: '1234567890'\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMMember(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMMember(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 organization = new Gcp.Organizations.IAMMember(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Organizations.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMMember(ctx, \"organization\", \u0026organizations.IAMMemberArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026organizations.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.organizations.IAMMember;\nimport com.pulumi.gcp.organizations.IAMMemberArgs;\nimport com.pulumi.gcp.organizations.inputs.IAMMemberConditionArgs;\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 organization = new IAMMember(\"organization\", IAMMemberArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMMember\n properties:\n orgId: '1234567890'\n role: roles/editor\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IamAuditConfig(\"organization\", {\n orgId: \"1234567890\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IamAuditConfig(\"organization\",\n org_id=\"1234567890\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"log_type\": \"ADMIN_READ\",\n },\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\"user:joebloggs@example.com\"],\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 organization = new Gcp.Organizations.IamAuditConfig(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Organizations.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Organizations.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIamAuditConfig(ctx, \"organization\", \u0026organizations.IamAuditConfigArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: organizations.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026organizations.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026organizations.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.organizations.IamAuditConfig;\nimport com.pulumi.gcp.organizations.IamAuditConfigArgs;\nimport com.pulumi.gcp.organizations.inputs.IamAuditConfigAuditLogConfigArgs;\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 organization = new IamAuditConfig(\"organization\", IamAuditConfigArgs.builder()\n .orgId(\"1234567890\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IamAuditConfig\n properties:\n orgId: '1234567890'\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMPolicy\n\n!\u003e **Warning:** New organizations have several default policies which will,\n without extreme caution, be **overwritten** by use of this resource.\n The safest alternative is to use multiple `gcp.organizations.IAMBinding`\n resources. This resource makes it easy to remove your own access to\n an organization, which will require a call to Google Support to have\n fixed, and can take multiple days to resolve.\n\n\n In general, this resource should only be used with organizations\n fully managed by this provider.I f you do use this resource,\n the best way to be sure that you are not making dangerous changes is to start\n by **importing** your existing policy, and examining the diff very closely.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst organization = new gcp.organizations.IAMPolicy(\"organization\", {\n orgId: \"1234567890\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\norganization = gcp.organizations.IAMPolicy(\"organization\",\n org_id=\"1234567890\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var organization = new Gcp.Organizations.IAMPolicy(\"organization\", new()\n {\n OrgId = \"1234567890\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = organizations.NewIAMPolicy(ctx, \"organization\", \u0026organizations.IAMPolicyArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.organizations.IAMPolicy;\nimport com.pulumi.gcp.organizations.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var organization = new IAMPolicy(\"organization\", IAMPolicyArgs.builder()\n .orgId(\"1234567890\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMPolicy\n properties:\n orgId: '1234567890'\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst organization = new gcp.organizations.IAMPolicy(\"organization\", {\n orgId: \"1234567890\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\norganization = gcp.organizations.IAMPolicy(\"organization\",\n org_id=\"1234567890\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var organization = new Gcp.Organizations.IAMPolicy(\"organization\", new()\n {\n OrgId = \"1234567890\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = organizations.NewIAMPolicy(ctx, \"organization\", \u0026organizations.IAMPolicyArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.organizations.IAMPolicy;\nimport com.pulumi.gcp.organizations.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var organization = new IAMPolicy(\"organization\", IAMPolicyArgs.builder()\n .orgId(\"1234567890\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMPolicy\n properties:\n orgId: '1234567890'\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMBinding\n\n\u003e **Note:** If `role` is set to `roles/owner` and you don't specify a user or service account you have access to in `members`, you can lock yourself out of your organization.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMBinding(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMBinding(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 organization = new Gcp.Organizations.IAMBinding(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMBinding(ctx, \"organization\", \u0026organizations.IAMBindingArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.organizations.IAMBinding;\nimport com.pulumi.gcp.organizations.IAMBindingArgs;\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 organization = new IAMBinding(\"organization\", IAMBindingArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMBinding\n properties:\n orgId: '1234567890'\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMBinding(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMBinding(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 organization = new Gcp.Organizations.IAMBinding(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMBinding(ctx, \"organization\", \u0026organizations.IAMBindingArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026organizations.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.organizations.IAMBinding;\nimport com.pulumi.gcp.organizations.IAMBindingArgs;\nimport com.pulumi.gcp.organizations.inputs.IAMBindingConditionArgs;\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 organization = new IAMBinding(\"organization\", IAMBindingArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMBinding\n properties:\n orgId: '1234567890'\n role: roles/editor\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMMember(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMMember(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 organization = new Gcp.Organizations.IAMMember(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMMember(ctx, \"organization\", \u0026organizations.IAMMemberArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.IAMMember;\nimport com.pulumi.gcp.organizations.IAMMemberArgs;\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 organization = new IAMMember(\"organization\", IAMMemberArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMMember\n properties:\n orgId: '1234567890'\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IAMMember(\"organization\", {\n orgId: \"1234567890\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IAMMember(\"organization\",\n org_id=\"1234567890\",\n role=\"roles/editor\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 organization = new Gcp.Organizations.IAMMember(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Organizations.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIAMMember(ctx, \"organization\", \u0026organizations.IAMMemberArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026organizations.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.organizations.IAMMember;\nimport com.pulumi.gcp.organizations.IAMMemberArgs;\nimport com.pulumi.gcp.organizations.inputs.IAMMemberConditionArgs;\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 organization = new IAMMember(\"organization\", IAMMemberArgs.builder()\n .orgId(\"1234567890\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IAMMember\n properties:\n orgId: '1234567890'\n role: roles/editor\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.organizations.IamAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst organization = new gcp.organizations.IamAuditConfig(\"organization\", {\n orgId: \"1234567890\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\norganization = gcp.organizations.IamAuditConfig(\"organization\",\n org_id=\"1234567890\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"log_type\": \"ADMIN_READ\",\n },\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\"user:joebloggs@example.com\"],\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 organization = new Gcp.Organizations.IamAuditConfig(\"organization\", new()\n {\n OrgId = \"1234567890\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Organizations.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Organizations.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIamAuditConfig(ctx, \"organization\", \u0026organizations.IamAuditConfigArgs{\n\t\t\tOrgId: pulumi.String(\"1234567890\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: organizations.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026organizations.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026organizations.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.organizations.IamAuditConfig;\nimport com.pulumi.gcp.organizations.IamAuditConfigArgs;\nimport com.pulumi.gcp.organizations.inputs.IamAuditConfigAuditLogConfigArgs;\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 organization = new IamAuditConfig(\"organization\", IamAuditConfigArgs.builder()\n .orgId(\"1234567890\")\n .service(\"allServices\")\n .auditLogConfigs( \n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n organization:\n type: gcp:organizations:IamAuditConfig\n properties:\n orgId: '1234567890'\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing Audit Configs\n\nAn audit config can be imported into a `google_organization_iam_audit_config` resource using the resource's `org_id` and the `service`, e.g:\n\n* `\"{{org_id}} foo.googleapis.com\"`\n\nAn `import` block (Terraform v1.5.0 and later) can be used to import audit configs:\n\ntf\n\nimport {\n\n id = \"{{org_id}} foo.googleapis.com\"\n\n to = google_organization_iam_audit_config.default\n\n}\n\nThe `pulumi import` command can also be used:\n\n```sh\n$ pulumi import gcp:organizations/iAMPolicy:IAMPolicy default \"{{org_id}} foo.googleapis.com\"\n```\n\n", "properties": { "etag": { "type": "string", @@ -225138,7 +225138,7 @@ } }, "gcp:organizations/iamAuditConfig:IamAuditConfig": { - "description": "Allows management of audit logging config for a given service for a Google Cloud Platform Organization.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst config = new gcp.organizations.IamAuditConfig(\"config\", {\n orgId: \"your-organization-id\",\n service: \"allServices\",\n auditLogConfigs: [{\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconfig = gcp.organizations.IamAuditConfig(\"config\",\n org_id=\"your-organization-id\",\n service=\"allServices\",\n audit_log_configs=[{\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\"user:joebloggs@example.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 config = new Gcp.Organizations.IamAuditConfig(\"config\", new()\n {\n OrgId = \"your-organization-id\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Organizations.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIamAuditConfig(ctx, \"config\", \u0026organizations.IamAuditConfigArgs{\n\t\t\tOrgId: pulumi.String(\"your-organization-id\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: organizations.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026organizations.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.organizations.IamAuditConfig;\nimport com.pulumi.gcp.organizations.IamAuditConfigArgs;\nimport com.pulumi.gcp.organizations.inputs.IamAuditConfigAuditLogConfigArgs;\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 config = new IamAuditConfig(\"config\", IamAuditConfigArgs.builder()\n .orgId(\"your-organization-id\")\n .service(\"allServices\")\n .auditLogConfigs(IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n config:\n type: gcp:organizations:IamAuditConfig\n properties:\n orgId: your-organization-id\n service: allServices\n auditLogConfigs:\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIAM audit config imports use the identifier of the resource in question and the service, e.g.\n\n```sh\n$ pulumi import gcp:organizations/iamAuditConfig:IamAuditConfig config \"your-organization-id foo.googleapis.com\"\n```\n\n", + "description": "Allows management of audit logging config for a given service for a Google Cloud Platform Organization.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst config = new gcp.organizations.IamAuditConfig(\"config\", {\n orgId: \"your-organization-id\",\n service: \"allServices\",\n auditLogConfigs: [{\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconfig = gcp.organizations.IamAuditConfig(\"config\",\n org_id=\"your-organization-id\",\n service=\"allServices\",\n audit_log_configs=[{\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\"user:joebloggs@example.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 config = new Gcp.Organizations.IamAuditConfig(\"config\", new()\n {\n OrgId = \"your-organization-id\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Organizations.Inputs.IamAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewIamAuditConfig(ctx, \"config\", \u0026organizations.IamAuditConfigArgs{\n\t\t\tOrgId: pulumi.String(\"your-organization-id\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: organizations.IamAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026organizations.IamAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.organizations.IamAuditConfig;\nimport com.pulumi.gcp.organizations.IamAuditConfigArgs;\nimport com.pulumi.gcp.organizations.inputs.IamAuditConfigAuditLogConfigArgs;\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 config = new IamAuditConfig(\"config\", IamAuditConfigArgs.builder()\n .orgId(\"your-organization-id\")\n .service(\"allServices\")\n .auditLogConfigs(IamAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n config:\n type: gcp:organizations:IamAuditConfig\n properties:\n orgId: your-organization-id\n service: allServices\n auditLogConfigs:\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIAM audit config imports use the identifier of the resource in question and the service, e.g.\n\n```sh\n$ pulumi import gcp:organizations/iamAuditConfig:IamAuditConfig config \"your-organization-id foo.googleapis.com\"\n```\n\n", "properties": { "auditLogConfigs": { "type": "array", @@ -225217,7 +225217,7 @@ } }, "gcp:organizations/policy:Policy": { - "description": "Allows management of Organization Policies for a Google Cloud Organization. \n\n\u003e **Warning:** This resource has been superseded by `gcp.orgpolicy.Policy`. `gcp.orgpolicy.Policy` uses Organization Policy API V2 instead of Cloud Resource Manager API V1 and it supports additional features such as tags and conditions.\n\nTo get more information about Organization Policies, see:\n\n* [API documentation](https://cloud.google.com/resource-manager/reference/rest/v1/organizations/setOrgPolicy)\n* How-to Guides\n * [Introduction to the Organization Policy Service](https://cloud.google.com/resource-manager/docs/organization-policy/overview)\n\n## Example Usage\n\nTo set policy with a [boolean constraint](https://cloud.google.com/resource-manager/docs/organization-policy/quickstart-boolean-constraints):\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serialPortPolicy = new gcp.organizations.Policy(\"serial_port_policy\", {\n orgId: \"123456789\",\n constraint: \"compute.disableSerialPortAccess\",\n booleanPolicy: {\n enforced: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nserial_port_policy = gcp.organizations.Policy(\"serial_port_policy\",\n org_id=\"123456789\",\n constraint=\"compute.disableSerialPortAccess\",\n boolean_policy={\n \"enforced\": 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 serialPortPolicy = new Gcp.Organizations.Policy(\"serial_port_policy\", new()\n {\n OrgId = \"123456789\",\n Constraint = \"compute.disableSerialPortAccess\",\n BooleanPolicy = new Gcp.Organizations.Inputs.PolicyBooleanPolicyArgs\n {\n Enforced = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewPolicy(ctx, \"serial_port_policy\", \u0026organizations.PolicyArgs{\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tConstraint: pulumi.String(\"compute.disableSerialPortAccess\"),\n\t\t\tBooleanPolicy: \u0026organizations.PolicyBooleanPolicyArgs{\n\t\t\t\tEnforced: 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.organizations.Policy;\nimport com.pulumi.gcp.organizations.PolicyArgs;\nimport com.pulumi.gcp.organizations.inputs.PolicyBooleanPolicyArgs;\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 serialPortPolicy = new Policy(\"serialPortPolicy\", PolicyArgs.builder()\n .orgId(\"123456789\")\n .constraint(\"compute.disableSerialPortAccess\")\n .booleanPolicy(PolicyBooleanPolicyArgs.builder()\n .enforced(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n serialPortPolicy:\n type: gcp:organizations:Policy\n name: serial_port_policy\n properties:\n orgId: '123456789'\n constraint: compute.disableSerialPortAccess\n booleanPolicy:\n enforced: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\nTo set a policy with a [list constraint](https://cloud.google.com/resource-manager/docs/organization-policy/quickstart-list-constraints):\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.organizations.Policy(\"services_policy\", {\n orgId: \"123456789\",\n constraint: \"serviceuser.services\",\n listPolicy: {\n allow: {\n all: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.organizations.Policy(\"services_policy\",\n org_id=\"123456789\",\n constraint=\"serviceuser.services\",\n list_policy={\n \"allow\": {\n \"all\": 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 servicesPolicy = new Gcp.Organizations.Policy(\"services_policy\", new()\n {\n OrgId = \"123456789\",\n Constraint = \"serviceuser.services\",\n ListPolicy = new Gcp.Organizations.Inputs.PolicyListPolicyArgs\n {\n Allow = new Gcp.Organizations.Inputs.PolicyListPolicyAllowArgs\n {\n All = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewPolicy(ctx, \"services_policy\", \u0026organizations.PolicyArgs{\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tListPolicy: \u0026organizations.PolicyListPolicyArgs{\n\t\t\t\tAllow: \u0026organizations.PolicyListPolicyAllowArgs{\n\t\t\t\t\tAll: 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.organizations.Policy;\nimport com.pulumi.gcp.organizations.PolicyArgs;\nimport com.pulumi.gcp.organizations.inputs.PolicyListPolicyArgs;\nimport com.pulumi.gcp.organizations.inputs.PolicyListPolicyAllowArgs;\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 servicesPolicy = new Policy(\"servicesPolicy\", PolicyArgs.builder()\n .orgId(\"123456789\")\n .constraint(\"serviceuser.services\")\n .listPolicy(PolicyListPolicyArgs.builder()\n .allow(PolicyListPolicyAllowArgs.builder()\n .all(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:organizations:Policy\n name: services_policy\n properties:\n orgId: '123456789'\n constraint: serviceuser.services\n listPolicy:\n allow:\n all: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nOr to deny some services, use the following instead:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.organizations.Policy(\"services_policy\", {\n orgId: \"123456789\",\n constraint: \"serviceuser.services\",\n listPolicy: {\n suggestedValue: \"compute.googleapis.com\",\n deny: {\n values: [\"cloudresourcemanager.googleapis.com\"],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.organizations.Policy(\"services_policy\",\n org_id=\"123456789\",\n constraint=\"serviceuser.services\",\n list_policy={\n \"suggestedValue\": \"compute.googleapis.com\",\n \"deny\": {\n \"values\": [\"cloudresourcemanager.googleapis.com\"],\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 servicesPolicy = new Gcp.Organizations.Policy(\"services_policy\", new()\n {\n OrgId = \"123456789\",\n Constraint = \"serviceuser.services\",\n ListPolicy = new Gcp.Organizations.Inputs.PolicyListPolicyArgs\n {\n SuggestedValue = \"compute.googleapis.com\",\n Deny = new Gcp.Organizations.Inputs.PolicyListPolicyDenyArgs\n {\n Values = new[]\n {\n \"cloudresourcemanager.googleapis.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewPolicy(ctx, \"services_policy\", \u0026organizations.PolicyArgs{\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tListPolicy: \u0026organizations.PolicyListPolicyArgs{\n\t\t\t\tSuggestedValue: pulumi.String(\"compute.googleapis.com\"),\n\t\t\t\tDeny: \u0026organizations.PolicyListPolicyDenyArgs{\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudresourcemanager.googleapis.com\"),\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.organizations.Policy;\nimport com.pulumi.gcp.organizations.PolicyArgs;\nimport com.pulumi.gcp.organizations.inputs.PolicyListPolicyArgs;\nimport com.pulumi.gcp.organizations.inputs.PolicyListPolicyDenyArgs;\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 servicesPolicy = new Policy(\"servicesPolicy\", PolicyArgs.builder()\n .orgId(\"123456789\")\n .constraint(\"serviceuser.services\")\n .listPolicy(PolicyListPolicyArgs.builder()\n .suggestedValue(\"compute.googleapis.com\")\n .deny(PolicyListPolicyDenyArgs.builder()\n .values(\"cloudresourcemanager.googleapis.com\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:organizations:Policy\n name: services_policy\n properties:\n orgId: '123456789'\n constraint: serviceuser.services\n listPolicy:\n suggestedValue: compute.googleapis.com\n deny:\n values:\n - cloudresourcemanager.googleapis.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nTo restore the default organization policy, use the following instead:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.organizations.Policy(\"services_policy\", {\n orgId: \"123456789\",\n constraint: \"serviceuser.services\",\n restorePolicy: {\n \"default\": true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.organizations.Policy(\"services_policy\",\n org_id=\"123456789\",\n constraint=\"serviceuser.services\",\n restore_policy={\n \"default\": 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 servicesPolicy = new Gcp.Organizations.Policy(\"services_policy\", new()\n {\n OrgId = \"123456789\",\n Constraint = \"serviceuser.services\",\n RestorePolicy = new Gcp.Organizations.Inputs.PolicyRestorePolicyArgs\n {\n Default = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewPolicy(ctx, \"services_policy\", \u0026organizations.PolicyArgs{\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tRestorePolicy: \u0026organizations.PolicyRestorePolicyArgs{\n\t\t\t\tDefault: 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.organizations.Policy;\nimport com.pulumi.gcp.organizations.PolicyArgs;\nimport com.pulumi.gcp.organizations.inputs.PolicyRestorePolicyArgs;\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 servicesPolicy = new Policy(\"servicesPolicy\", PolicyArgs.builder()\n .orgId(\"123456789\")\n .constraint(\"serviceuser.services\")\n .restorePolicy(PolicyRestorePolicyArgs.builder()\n .default_(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:organizations:Policy\n name: services_policy\n properties:\n orgId: '123456789'\n constraint: serviceuser.services\n restorePolicy:\n default: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganization Policies can be imported using the `org_id` and the `constraint`, e.g.\n\n* `{{org_id}}/constraints/{{constraint}}`\n\nWhen using the `pulumi import` command, Organization Policies can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:organizations/policy:Policy default {{org_id}}/constraints/{{constraint}}\n```\n\nIt is all right if the constraint contains a slash, as in the example above.\n\n", + "description": "Allows management of Organization Policies for a Google Cloud Organization. \n\n\u003e **Warning:** This resource has been superseded by `gcp.orgpolicy.Policy`. `gcp.orgpolicy.Policy` uses Organization Policy API V2 instead of Cloud Resource Manager API V1 and it supports additional features such as tags and conditions.\n\nTo get more information about Organization Policies, see:\n\n* [API documentation](https://cloud.google.com/resource-manager/reference/rest/v1/organizations/setOrgPolicy)\n* How-to Guides\n * [Introduction to the Organization Policy Service](https://cloud.google.com/resource-manager/docs/organization-policy/overview)\n\n## Example Usage\n\nTo set policy with a [boolean constraint](https://cloud.google.com/resource-manager/docs/organization-policy/quickstart-boolean-constraints):\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serialPortPolicy = new gcp.organizations.Policy(\"serial_port_policy\", {\n orgId: \"123456789\",\n constraint: \"compute.disableSerialPortAccess\",\n booleanPolicy: {\n enforced: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nserial_port_policy = gcp.organizations.Policy(\"serial_port_policy\",\n org_id=\"123456789\",\n constraint=\"compute.disableSerialPortAccess\",\n boolean_policy={\n \"enforced\": 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 serialPortPolicy = new Gcp.Organizations.Policy(\"serial_port_policy\", new()\n {\n OrgId = \"123456789\",\n Constraint = \"compute.disableSerialPortAccess\",\n BooleanPolicy = new Gcp.Organizations.Inputs.PolicyBooleanPolicyArgs\n {\n Enforced = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewPolicy(ctx, \"serial_port_policy\", \u0026organizations.PolicyArgs{\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tConstraint: pulumi.String(\"compute.disableSerialPortAccess\"),\n\t\t\tBooleanPolicy: \u0026organizations.PolicyBooleanPolicyArgs{\n\t\t\t\tEnforced: 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.organizations.Policy;\nimport com.pulumi.gcp.organizations.PolicyArgs;\nimport com.pulumi.gcp.organizations.inputs.PolicyBooleanPolicyArgs;\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 serialPortPolicy = new Policy(\"serialPortPolicy\", PolicyArgs.builder()\n .orgId(\"123456789\")\n .constraint(\"compute.disableSerialPortAccess\")\n .booleanPolicy(PolicyBooleanPolicyArgs.builder()\n .enforced(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n serialPortPolicy:\n type: gcp:organizations:Policy\n name: serial_port_policy\n properties:\n orgId: '123456789'\n constraint: compute.disableSerialPortAccess\n booleanPolicy:\n enforced: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\nTo set a policy with a [list constraint](https://cloud.google.com/resource-manager/docs/organization-policy/quickstart-list-constraints):\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.organizations.Policy(\"services_policy\", {\n orgId: \"123456789\",\n constraint: \"serviceuser.services\",\n listPolicy: {\n allow: {\n all: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.organizations.Policy(\"services_policy\",\n org_id=\"123456789\",\n constraint=\"serviceuser.services\",\n list_policy={\n \"allow\": {\n \"all\": 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 servicesPolicy = new Gcp.Organizations.Policy(\"services_policy\", new()\n {\n OrgId = \"123456789\",\n Constraint = \"serviceuser.services\",\n ListPolicy = new Gcp.Organizations.Inputs.PolicyListPolicyArgs\n {\n Allow = new Gcp.Organizations.Inputs.PolicyListPolicyAllowArgs\n {\n All = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewPolicy(ctx, \"services_policy\", \u0026organizations.PolicyArgs{\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tListPolicy: \u0026organizations.PolicyListPolicyArgs{\n\t\t\t\tAllow: \u0026organizations.PolicyListPolicyAllowArgs{\n\t\t\t\t\tAll: 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.organizations.Policy;\nimport com.pulumi.gcp.organizations.PolicyArgs;\nimport com.pulumi.gcp.organizations.inputs.PolicyListPolicyArgs;\nimport com.pulumi.gcp.organizations.inputs.PolicyListPolicyAllowArgs;\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 servicesPolicy = new Policy(\"servicesPolicy\", PolicyArgs.builder()\n .orgId(\"123456789\")\n .constraint(\"serviceuser.services\")\n .listPolicy(PolicyListPolicyArgs.builder()\n .allow(PolicyListPolicyAllowArgs.builder()\n .all(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:organizations:Policy\n name: services_policy\n properties:\n orgId: '123456789'\n constraint: serviceuser.services\n listPolicy:\n allow:\n all: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nOr to deny some services, use the following instead:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.organizations.Policy(\"services_policy\", {\n orgId: \"123456789\",\n constraint: \"serviceuser.services\",\n listPolicy: {\n suggestedValue: \"compute.googleapis.com\",\n deny: {\n values: [\"cloudresourcemanager.googleapis.com\"],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.organizations.Policy(\"services_policy\",\n org_id=\"123456789\",\n constraint=\"serviceuser.services\",\n list_policy={\n \"suggested_value\": \"compute.googleapis.com\",\n \"deny\": {\n \"values\": [\"cloudresourcemanager.googleapis.com\"],\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 servicesPolicy = new Gcp.Organizations.Policy(\"services_policy\", new()\n {\n OrgId = \"123456789\",\n Constraint = \"serviceuser.services\",\n ListPolicy = new Gcp.Organizations.Inputs.PolicyListPolicyArgs\n {\n SuggestedValue = \"compute.googleapis.com\",\n Deny = new Gcp.Organizations.Inputs.PolicyListPolicyDenyArgs\n {\n Values = new[]\n {\n \"cloudresourcemanager.googleapis.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewPolicy(ctx, \"services_policy\", \u0026organizations.PolicyArgs{\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tListPolicy: \u0026organizations.PolicyListPolicyArgs{\n\t\t\t\tSuggestedValue: pulumi.String(\"compute.googleapis.com\"),\n\t\t\t\tDeny: \u0026organizations.PolicyListPolicyDenyArgs{\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudresourcemanager.googleapis.com\"),\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.organizations.Policy;\nimport com.pulumi.gcp.organizations.PolicyArgs;\nimport com.pulumi.gcp.organizations.inputs.PolicyListPolicyArgs;\nimport com.pulumi.gcp.organizations.inputs.PolicyListPolicyDenyArgs;\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 servicesPolicy = new Policy(\"servicesPolicy\", PolicyArgs.builder()\n .orgId(\"123456789\")\n .constraint(\"serviceuser.services\")\n .listPolicy(PolicyListPolicyArgs.builder()\n .suggestedValue(\"compute.googleapis.com\")\n .deny(PolicyListPolicyDenyArgs.builder()\n .values(\"cloudresourcemanager.googleapis.com\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:organizations:Policy\n name: services_policy\n properties:\n orgId: '123456789'\n constraint: serviceuser.services\n listPolicy:\n suggestedValue: compute.googleapis.com\n deny:\n values:\n - cloudresourcemanager.googleapis.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nTo restore the default organization policy, use the following instead:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.organizations.Policy(\"services_policy\", {\n orgId: \"123456789\",\n constraint: \"serviceuser.services\",\n restorePolicy: {\n \"default\": true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.organizations.Policy(\"services_policy\",\n org_id=\"123456789\",\n constraint=\"serviceuser.services\",\n restore_policy={\n \"default\": 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 servicesPolicy = new Gcp.Organizations.Policy(\"services_policy\", new()\n {\n OrgId = \"123456789\",\n Constraint = \"serviceuser.services\",\n RestorePolicy = new Gcp.Organizations.Inputs.PolicyRestorePolicyArgs\n {\n Default = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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 := organizations.NewPolicy(ctx, \"services_policy\", \u0026organizations.PolicyArgs{\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tRestorePolicy: \u0026organizations.PolicyRestorePolicyArgs{\n\t\t\t\tDefault: 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.organizations.Policy;\nimport com.pulumi.gcp.organizations.PolicyArgs;\nimport com.pulumi.gcp.organizations.inputs.PolicyRestorePolicyArgs;\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 servicesPolicy = new Policy(\"servicesPolicy\", PolicyArgs.builder()\n .orgId(\"123456789\")\n .constraint(\"serviceuser.services\")\n .restorePolicy(PolicyRestorePolicyArgs.builder()\n .default_(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:organizations:Policy\n name: services_policy\n properties:\n orgId: '123456789'\n constraint: serviceuser.services\n restorePolicy:\n default: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganization Policies can be imported using the `org_id` and the `constraint`, e.g.\n\n* `{{org_id}}/constraints/{{constraint}}`\n\nWhen using the `pulumi import` command, Organization Policies can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:organizations/policy:Policy default {{org_id}}/constraints/{{constraint}}\n```\n\nIt is all right if the constraint contains a slash, as in the example above.\n\n", "properties": { "booleanPolicy": { "$ref": "#/types/gcp:organizations/PolicyBooleanPolicy:PolicyBooleanPolicy", @@ -225658,7 +225658,7 @@ } }, "gcp:orgpolicy/policy:Policy": { - "description": "Defines an organization policy which is used to specify constraints for configurations of Google Cloud resources.\n\n\nTo get more information about Policy, see:\n\n* [API documentation](https://cloud.google.com/resource-manager/docs/reference/orgpolicy/rest/v2/organizations.policies)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/resource-manager/docs/organization-policy/creating-managing-custom-constraints)\n * [Supported Services](https://cloud.google.com/resource-manager/docs/organization-policy/custom-constraint-supported-services)\n\n## Example Usage\n\n### Org Policy Policy Enforce\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.organizations.Project(\"basic\", {\n projectId: \"id\",\n name: \"id\",\n orgId: \"123456789\",\n});\nconst primary = new gcp.orgpolicy.Policy(\"primary\", {\n name: pulumi.interpolate`projects/${basic.name}/policies/iam.disableServiceAccountKeyUpload`,\n parent: pulumi.interpolate`projects/${basic.name}`,\n spec: {\n rules: [{\n enforce: \"FALSE\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.organizations.Project(\"basic\",\n project_id=\"id\",\n name=\"id\",\n org_id=\"123456789\")\nprimary = gcp.orgpolicy.Policy(\"primary\",\n name=basic.name.apply(lambda name: f\"projects/{name}/policies/iam.disableServiceAccountKeyUpload\"),\n parent=basic.name.apply(lambda name: f\"projects/{name}\"),\n spec={\n \"rules\": [{\n \"enforce\": \"FALSE\",\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 basic = new Gcp.Organizations.Project(\"basic\", new()\n {\n ProjectId = \"id\",\n Name = \"id\",\n OrgId = \"123456789\",\n });\n\n var primary = new Gcp.OrgPolicy.Policy(\"primary\", new()\n {\n Name = basic.Name.Apply(name =\u003e $\"projects/{name}/policies/iam.disableServiceAccountKeyUpload\"),\n Parent = basic.Name.Apply(name =\u003e $\"projects/{name}\"),\n Spec = new Gcp.OrgPolicy.Inputs.PolicySpecArgs\n {\n Rules = new[]\n {\n new Gcp.OrgPolicy.Inputs.PolicySpecRuleArgs\n {\n Enforce = \"FALSE\",\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/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/orgpolicy\"\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 := organizations.NewProject(ctx, \"basic\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"id\"),\n\t\t\tName: pulumi.String(\"id\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = orgpolicy.NewPolicy(ctx, \"primary\", \u0026orgpolicy.PolicyArgs{\n\t\t\tName: basic.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/policies/iam.disableServiceAccountKeyUpload\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tParent: basic.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tSpec: \u0026orgpolicy.PolicySpecArgs{\n\t\t\t\tRules: orgpolicy.PolicySpecRuleArray{\n\t\t\t\t\t\u0026orgpolicy.PolicySpecRuleArgs{\n\t\t\t\t\t\tEnforce: pulumi.String(\"FALSE\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.orgpolicy.Policy;\nimport com.pulumi.gcp.orgpolicy.PolicyArgs;\nimport com.pulumi.gcp.orgpolicy.inputs.PolicySpecArgs;\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 Project(\"basic\", ProjectArgs.builder()\n .projectId(\"id\")\n .name(\"id\")\n .orgId(\"123456789\")\n .build());\n\n var primary = new Policy(\"primary\", PolicyArgs.builder()\n .name(basic.name().applyValue(name -\u003e String.format(\"projects/%s/policies/iam.disableServiceAccountKeyUpload\", name)))\n .parent(basic.name().applyValue(name -\u003e String.format(\"projects/%s\", name)))\n .spec(PolicySpecArgs.builder()\n .rules(PolicySpecRuleArgs.builder()\n .enforce(\"FALSE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:orgpolicy:Policy\n properties:\n name: projects/${basic.name}/policies/iam.disableServiceAccountKeyUpload\n parent: projects/${basic.name}\n spec:\n rules:\n - enforce: FALSE\n basic:\n type: gcp:organizations:Project\n properties:\n projectId: id\n name: id\n orgId: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Org Policy Policy Folder\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.organizations.Folder(\"basic\", {\n parent: \"organizations/123456789\",\n displayName: \"folder\",\n});\nconst primary = new gcp.orgpolicy.Policy(\"primary\", {\n name: pulumi.interpolate`${basic.name}/policies/gcp.resourceLocations`,\n parent: basic.name,\n spec: {\n inheritFromParent: true,\n rules: [{\n denyAll: \"TRUE\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.organizations.Folder(\"basic\",\n parent=\"organizations/123456789\",\n display_name=\"folder\")\nprimary = gcp.orgpolicy.Policy(\"primary\",\n name=basic.name.apply(lambda name: f\"{name}/policies/gcp.resourceLocations\"),\n parent=basic.name,\n spec={\n \"inheritFromParent\": True,\n \"rules\": [{\n \"denyAll\": \"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 basic = new Gcp.Organizations.Folder(\"basic\", new()\n {\n Parent = \"organizations/123456789\",\n DisplayName = \"folder\",\n });\n\n var primary = new Gcp.OrgPolicy.Policy(\"primary\", new()\n {\n Name = basic.Name.Apply(name =\u003e $\"{name}/policies/gcp.resourceLocations\"),\n Parent = basic.Name,\n Spec = new Gcp.OrgPolicy.Inputs.PolicySpecArgs\n {\n InheritFromParent = true,\n Rules = new[]\n {\n new Gcp.OrgPolicy.Inputs.PolicySpecRuleArgs\n {\n DenyAll = \"TRUE\",\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/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/orgpolicy\"\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 := organizations.NewFolder(ctx, \"basic\", \u0026organizations.FolderArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDisplayName: pulumi.String(\"folder\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = orgpolicy.NewPolicy(ctx, \"primary\", \u0026orgpolicy.PolicyArgs{\n\t\t\tName: basic.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v/policies/gcp.resourceLocations\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tParent: basic.Name,\n\t\t\tSpec: \u0026orgpolicy.PolicySpecArgs{\n\t\t\t\tInheritFromParent: pulumi.Bool(true),\n\t\t\t\tRules: orgpolicy.PolicySpecRuleArray{\n\t\t\t\t\t\u0026orgpolicy.PolicySpecRuleArgs{\n\t\t\t\t\t\tDenyAll: pulumi.String(\"TRUE\"),\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.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.orgpolicy.Policy;\nimport com.pulumi.gcp.orgpolicy.PolicyArgs;\nimport com.pulumi.gcp.orgpolicy.inputs.PolicySpecArgs;\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 Folder(\"basic\", FolderArgs.builder()\n .parent(\"organizations/123456789\")\n .displayName(\"folder\")\n .build());\n\n var primary = new Policy(\"primary\", PolicyArgs.builder()\n .name(basic.name().applyValue(name -\u003e String.format(\"%s/policies/gcp.resourceLocations\", name)))\n .parent(basic.name())\n .spec(PolicySpecArgs.builder()\n .inheritFromParent(true)\n .rules(PolicySpecRuleArgs.builder()\n .denyAll(\"TRUE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:orgpolicy:Policy\n properties:\n name: ${basic.name}/policies/gcp.resourceLocations\n parent: ${basic.name}\n spec:\n inheritFromParent: true\n rules:\n - denyAll: TRUE\n basic:\n type: gcp:organizations:Folder\n properties:\n parent: organizations/123456789\n displayName: folder\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Org Policy Policy Organization\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.orgpolicy.Policy(\"primary\", {\n name: \"organizations/123456789/policies/gcp.detailedAuditLoggingMode\",\n parent: \"organizations/123456789\",\n spec: {\n reset: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.orgpolicy.Policy(\"primary\",\n name=\"organizations/123456789/policies/gcp.detailedAuditLoggingMode\",\n parent=\"organizations/123456789\",\n spec={\n \"reset\": 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 primary = new Gcp.OrgPolicy.Policy(\"primary\", new()\n {\n Name = \"organizations/123456789/policies/gcp.detailedAuditLoggingMode\",\n Parent = \"organizations/123456789\",\n Spec = new Gcp.OrgPolicy.Inputs.PolicySpecArgs\n {\n Reset = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/orgpolicy\"\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 := orgpolicy.NewPolicy(ctx, \"primary\", \u0026orgpolicy.PolicyArgs{\n\t\t\tName: pulumi.String(\"organizations/123456789/policies/gcp.detailedAuditLoggingMode\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tSpec: \u0026orgpolicy.PolicySpecArgs{\n\t\t\t\tReset: 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.orgpolicy.Policy;\nimport com.pulumi.gcp.orgpolicy.PolicyArgs;\nimport com.pulumi.gcp.orgpolicy.inputs.PolicySpecArgs;\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 primary = new Policy(\"primary\", PolicyArgs.builder()\n .name(\"organizations/123456789/policies/gcp.detailedAuditLoggingMode\")\n .parent(\"organizations/123456789\")\n .spec(PolicySpecArgs.builder()\n .reset(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:orgpolicy:Policy\n properties:\n name: organizations/123456789/policies/gcp.detailedAuditLoggingMode\n parent: organizations/123456789\n spec:\n reset: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Org Policy Policy Project\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.organizations.Project(\"basic\", {\n projectId: \"id\",\n name: \"id\",\n orgId: \"123456789\",\n});\nconst primary = new gcp.orgpolicy.Policy(\"primary\", {\n name: pulumi.interpolate`projects/${basic.name}/policies/gcp.resourceLocations`,\n parent: pulumi.interpolate`projects/${basic.name}`,\n spec: {\n rules: [\n {\n condition: {\n description: \"A sample condition for the policy\",\n expression: \"resource.matchLabels('labelKeys/123', 'labelValues/345')\",\n location: \"sample-location.log\",\n title: \"sample-condition\",\n },\n values: {\n allowedValues: [\"projects/allowed-project\"],\n deniedValues: [\"projects/denied-project\"],\n },\n },\n {\n allowAll: \"TRUE\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.organizations.Project(\"basic\",\n project_id=\"id\",\n name=\"id\",\n org_id=\"123456789\")\nprimary = gcp.orgpolicy.Policy(\"primary\",\n name=basic.name.apply(lambda name: f\"projects/{name}/policies/gcp.resourceLocations\"),\n parent=basic.name.apply(lambda name: f\"projects/{name}\"),\n spec={\n \"rules\": [\n {\n \"condition\": {\n \"description\": \"A sample condition for the policy\",\n \"expression\": \"resource.matchLabels('labelKeys/123', 'labelValues/345')\",\n \"location\": \"sample-location.log\",\n \"title\": \"sample-condition\",\n },\n \"values\": {\n \"allowedValues\": [\"projects/allowed-project\"],\n \"deniedValues\": [\"projects/denied-project\"],\n },\n },\n {\n \"allowAll\": \"TRUE\",\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 basic = new Gcp.Organizations.Project(\"basic\", new()\n {\n ProjectId = \"id\",\n Name = \"id\",\n OrgId = \"123456789\",\n });\n\n var primary = new Gcp.OrgPolicy.Policy(\"primary\", new()\n {\n Name = basic.Name.Apply(name =\u003e $\"projects/{name}/policies/gcp.resourceLocations\"),\n Parent = basic.Name.Apply(name =\u003e $\"projects/{name}\"),\n Spec = new Gcp.OrgPolicy.Inputs.PolicySpecArgs\n {\n Rules = new[]\n {\n new Gcp.OrgPolicy.Inputs.PolicySpecRuleArgs\n {\n Condition = new Gcp.OrgPolicy.Inputs.PolicySpecRuleConditionArgs\n {\n Description = \"A sample condition for the policy\",\n Expression = \"resource.matchLabels('labelKeys/123', 'labelValues/345')\",\n Location = \"sample-location.log\",\n Title = \"sample-condition\",\n },\n Values = new Gcp.OrgPolicy.Inputs.PolicySpecRuleValuesArgs\n {\n AllowedValues = new[]\n {\n \"projects/allowed-project\",\n },\n DeniedValues = new[]\n {\n \"projects/denied-project\",\n },\n },\n },\n new Gcp.OrgPolicy.Inputs.PolicySpecRuleArgs\n {\n AllowAll = \"TRUE\",\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/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/orgpolicy\"\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 := organizations.NewProject(ctx, \"basic\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"id\"),\n\t\t\tName: pulumi.String(\"id\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = orgpolicy.NewPolicy(ctx, \"primary\", \u0026orgpolicy.PolicyArgs{\n\t\t\tName: basic.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/policies/gcp.resourceLocations\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tParent: basic.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tSpec: \u0026orgpolicy.PolicySpecArgs{\n\t\t\t\tRules: orgpolicy.PolicySpecRuleArray{\n\t\t\t\t\t\u0026orgpolicy.PolicySpecRuleArgs{\n\t\t\t\t\t\tCondition: \u0026orgpolicy.PolicySpecRuleConditionArgs{\n\t\t\t\t\t\t\tDescription: pulumi.String(\"A sample condition for the policy\"),\n\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.matchLabels('labelKeys/123', 'labelValues/345')\"),\n\t\t\t\t\t\t\tLocation: pulumi.String(\"sample-location.log\"),\n\t\t\t\t\t\t\tTitle: pulumi.String(\"sample-condition\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tValues: \u0026orgpolicy.PolicySpecRuleValuesArgs{\n\t\t\t\t\t\t\tAllowedValues: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"projects/allowed-project\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDeniedValues: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"projects/denied-project\"),\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\t\u0026orgpolicy.PolicySpecRuleArgs{\n\t\t\t\t\t\tAllowAll: pulumi.String(\"TRUE\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.orgpolicy.Policy;\nimport com.pulumi.gcp.orgpolicy.PolicyArgs;\nimport com.pulumi.gcp.orgpolicy.inputs.PolicySpecArgs;\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 Project(\"basic\", ProjectArgs.builder()\n .projectId(\"id\")\n .name(\"id\")\n .orgId(\"123456789\")\n .build());\n\n var primary = new Policy(\"primary\", PolicyArgs.builder()\n .name(basic.name().applyValue(name -\u003e String.format(\"projects/%s/policies/gcp.resourceLocations\", name)))\n .parent(basic.name().applyValue(name -\u003e String.format(\"projects/%s\", name)))\n .spec(PolicySpecArgs.builder()\n .rules( \n PolicySpecRuleArgs.builder()\n .condition(PolicySpecRuleConditionArgs.builder()\n .description(\"A sample condition for the policy\")\n .expression(\"resource.matchLabels('labelKeys/123', 'labelValues/345')\")\n .location(\"sample-location.log\")\n .title(\"sample-condition\")\n .build())\n .values(PolicySpecRuleValuesArgs.builder()\n .allowedValues(\"projects/allowed-project\")\n .deniedValues(\"projects/denied-project\")\n .build())\n .build(),\n PolicySpecRuleArgs.builder()\n .allowAll(\"TRUE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:orgpolicy:Policy\n properties:\n name: projects/${basic.name}/policies/gcp.resourceLocations\n parent: projects/${basic.name}\n spec:\n rules:\n - condition:\n description: A sample condition for the policy\n expression: resource.matchLabels('labelKeys/123', 'labelValues/345')\n location: sample-location.log\n title: sample-condition\n values:\n allowedValues:\n - projects/allowed-project\n deniedValues:\n - projects/denied-project\n - allowAll: TRUE\n basic:\n type: gcp:organizations:Project\n properties:\n projectId: id\n name: id\n orgId: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Org Policy Policy Dry Run Spec\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst constraint = new gcp.orgpolicy.CustomConstraint(\"constraint\", {\n name: \"custom.disableGkeAutoUpgrade_40785\",\n parent: \"organizations/123456789\",\n displayName: \"Disable GKE auto upgrade\",\n description: \"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\",\n actionType: \"ALLOW\",\n condition: \"resource.management.autoUpgrade == false\",\n methodTypes: [\"CREATE\"],\n resourceTypes: [\"container.googleapis.com/NodePool\"],\n});\nconst primary = new gcp.orgpolicy.Policy(\"primary\", {\n name: pulumi.interpolate`organizations/123456789/policies/${constraint.name}`,\n parent: \"organizations/123456789\",\n spec: {\n rules: [{\n enforce: \"FALSE\",\n }],\n },\n dryRunSpec: {\n inheritFromParent: false,\n reset: false,\n rules: [{\n enforce: \"FALSE\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconstraint = gcp.orgpolicy.CustomConstraint(\"constraint\",\n name=\"custom.disableGkeAutoUpgrade_40785\",\n parent=\"organizations/123456789\",\n display_name=\"Disable GKE auto upgrade\",\n description=\"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\",\n action_type=\"ALLOW\",\n condition=\"resource.management.autoUpgrade == false\",\n method_types=[\"CREATE\"],\n resource_types=[\"container.googleapis.com/NodePool\"])\nprimary = gcp.orgpolicy.Policy(\"primary\",\n name=constraint.name.apply(lambda name: f\"organizations/123456789/policies/{name}\"),\n parent=\"organizations/123456789\",\n spec={\n \"rules\": [{\n \"enforce\": \"FALSE\",\n }],\n },\n dry_run_spec={\n \"inheritFromParent\": False,\n \"reset\": False,\n \"rules\": [{\n \"enforce\": \"FALSE\",\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 constraint = new Gcp.OrgPolicy.CustomConstraint(\"constraint\", new()\n {\n Name = \"custom.disableGkeAutoUpgrade_40785\",\n Parent = \"organizations/123456789\",\n DisplayName = \"Disable GKE auto upgrade\",\n Description = \"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\",\n ActionType = \"ALLOW\",\n Condition = \"resource.management.autoUpgrade == false\",\n MethodTypes = new[]\n {\n \"CREATE\",\n },\n ResourceTypes = new[]\n {\n \"container.googleapis.com/NodePool\",\n },\n });\n\n var primary = new Gcp.OrgPolicy.Policy(\"primary\", new()\n {\n Name = constraint.Name.Apply(name =\u003e $\"organizations/123456789/policies/{name}\"),\n Parent = \"organizations/123456789\",\n Spec = new Gcp.OrgPolicy.Inputs.PolicySpecArgs\n {\n Rules = new[]\n {\n new Gcp.OrgPolicy.Inputs.PolicySpecRuleArgs\n {\n Enforce = \"FALSE\",\n },\n },\n },\n DryRunSpec = new Gcp.OrgPolicy.Inputs.PolicyDryRunSpecArgs\n {\n InheritFromParent = false,\n Reset = false,\n Rules = new[]\n {\n new Gcp.OrgPolicy.Inputs.PolicyDryRunSpecRuleArgs\n {\n Enforce = \"FALSE\",\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/v7/go/gcp/orgpolicy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tconstraint, err := orgpolicy.NewCustomConstraint(ctx, \"constraint\", \u0026orgpolicy.CustomConstraintArgs{\n\t\t\tName: pulumi.String(\"custom.disableGkeAutoUpgrade_40785\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDisplayName: pulumi.String(\"Disable GKE auto upgrade\"),\n\t\t\tDescription: pulumi.String(\"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\"),\n\t\t\tActionType: pulumi.String(\"ALLOW\"),\n\t\t\tCondition: pulumi.String(\"resource.management.autoUpgrade == false\"),\n\t\t\tMethodTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"CREATE\"),\n\t\t\t},\n\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"container.googleapis.com/NodePool\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = orgpolicy.NewPolicy(ctx, \"primary\", \u0026orgpolicy.PolicyArgs{\n\t\t\tName: constraint.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"organizations/123456789/policies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tSpec: \u0026orgpolicy.PolicySpecArgs{\n\t\t\t\tRules: orgpolicy.PolicySpecRuleArray{\n\t\t\t\t\t\u0026orgpolicy.PolicySpecRuleArgs{\n\t\t\t\t\t\tEnforce: pulumi.String(\"FALSE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDryRunSpec: \u0026orgpolicy.PolicyDryRunSpecArgs{\n\t\t\t\tInheritFromParent: pulumi.Bool(false),\n\t\t\t\tReset: pulumi.Bool(false),\n\t\t\t\tRules: orgpolicy.PolicyDryRunSpecRuleArray{\n\t\t\t\t\t\u0026orgpolicy.PolicyDryRunSpecRuleArgs{\n\t\t\t\t\t\tEnforce: pulumi.String(\"FALSE\"),\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.orgpolicy.CustomConstraint;\nimport com.pulumi.gcp.orgpolicy.CustomConstraintArgs;\nimport com.pulumi.gcp.orgpolicy.Policy;\nimport com.pulumi.gcp.orgpolicy.PolicyArgs;\nimport com.pulumi.gcp.orgpolicy.inputs.PolicySpecArgs;\nimport com.pulumi.gcp.orgpolicy.inputs.PolicyDryRunSpecArgs;\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 constraint = new CustomConstraint(\"constraint\", CustomConstraintArgs.builder()\n .name(\"custom.disableGkeAutoUpgrade_40785\")\n .parent(\"organizations/123456789\")\n .displayName(\"Disable GKE auto upgrade\")\n .description(\"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\")\n .actionType(\"ALLOW\")\n .condition(\"resource.management.autoUpgrade == false\")\n .methodTypes(\"CREATE\")\n .resourceTypes(\"container.googleapis.com/NodePool\")\n .build());\n\n var primary = new Policy(\"primary\", PolicyArgs.builder()\n .name(constraint.name().applyValue(name -\u003e String.format(\"organizations/123456789/policies/%s\", name)))\n .parent(\"organizations/123456789\")\n .spec(PolicySpecArgs.builder()\n .rules(PolicySpecRuleArgs.builder()\n .enforce(\"FALSE\")\n .build())\n .build())\n .dryRunSpec(PolicyDryRunSpecArgs.builder()\n .inheritFromParent(false)\n .reset(false)\n .rules(PolicyDryRunSpecRuleArgs.builder()\n .enforce(\"FALSE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n constraint:\n type: gcp:orgpolicy:CustomConstraint\n properties:\n name: custom.disableGkeAutoUpgrade_40785\n parent: organizations/123456789\n displayName: Disable GKE auto upgrade\n description: Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\n actionType: ALLOW\n condition: resource.management.autoUpgrade == false\n methodTypes:\n - CREATE\n resourceTypes:\n - container.googleapis.com/NodePool\n primary:\n type: gcp:orgpolicy:Policy\n properties:\n name: organizations/123456789/policies/${constraint.name}\n parent: organizations/123456789\n spec:\n rules:\n - enforce: FALSE\n dryRunSpec:\n inheritFromParent: false\n reset: false\n rules:\n - enforce: FALSE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPolicy can be imported using any of these accepted formats:\n\n* `{{parent}}/policies/{{name}}`\n\nWhen using the `pulumi import` command, Policy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:orgpolicy/policy:Policy default {{parent}}/policies/{{name}}\n```\n\n", + "description": "Defines an organization policy which is used to specify constraints for configurations of Google Cloud resources.\n\n\nTo get more information about Policy, see:\n\n* [API documentation](https://cloud.google.com/resource-manager/docs/reference/orgpolicy/rest/v2/organizations.policies)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/resource-manager/docs/organization-policy/creating-managing-custom-constraints)\n * [Supported Services](https://cloud.google.com/resource-manager/docs/organization-policy/custom-constraint-supported-services)\n\n## Example Usage\n\n### Org Policy Policy Enforce\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.organizations.Project(\"basic\", {\n projectId: \"id\",\n name: \"id\",\n orgId: \"123456789\",\n});\nconst primary = new gcp.orgpolicy.Policy(\"primary\", {\n name: pulumi.interpolate`projects/${basic.name}/policies/iam.disableServiceAccountKeyUpload`,\n parent: pulumi.interpolate`projects/${basic.name}`,\n spec: {\n rules: [{\n enforce: \"FALSE\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.organizations.Project(\"basic\",\n project_id=\"id\",\n name=\"id\",\n org_id=\"123456789\")\nprimary = gcp.orgpolicy.Policy(\"primary\",\n name=basic.name.apply(lambda name: f\"projects/{name}/policies/iam.disableServiceAccountKeyUpload\"),\n parent=basic.name.apply(lambda name: f\"projects/{name}\"),\n spec={\n \"rules\": [{\n \"enforce\": \"FALSE\",\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 basic = new Gcp.Organizations.Project(\"basic\", new()\n {\n ProjectId = \"id\",\n Name = \"id\",\n OrgId = \"123456789\",\n });\n\n var primary = new Gcp.OrgPolicy.Policy(\"primary\", new()\n {\n Name = basic.Name.Apply(name =\u003e $\"projects/{name}/policies/iam.disableServiceAccountKeyUpload\"),\n Parent = basic.Name.Apply(name =\u003e $\"projects/{name}\"),\n Spec = new Gcp.OrgPolicy.Inputs.PolicySpecArgs\n {\n Rules = new[]\n {\n new Gcp.OrgPolicy.Inputs.PolicySpecRuleArgs\n {\n Enforce = \"FALSE\",\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/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/orgpolicy\"\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 := organizations.NewProject(ctx, \"basic\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"id\"),\n\t\t\tName: pulumi.String(\"id\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = orgpolicy.NewPolicy(ctx, \"primary\", \u0026orgpolicy.PolicyArgs{\n\t\t\tName: basic.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/policies/iam.disableServiceAccountKeyUpload\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tParent: basic.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tSpec: \u0026orgpolicy.PolicySpecArgs{\n\t\t\t\tRules: orgpolicy.PolicySpecRuleArray{\n\t\t\t\t\t\u0026orgpolicy.PolicySpecRuleArgs{\n\t\t\t\t\t\tEnforce: pulumi.String(\"FALSE\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.orgpolicy.Policy;\nimport com.pulumi.gcp.orgpolicy.PolicyArgs;\nimport com.pulumi.gcp.orgpolicy.inputs.PolicySpecArgs;\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 Project(\"basic\", ProjectArgs.builder()\n .projectId(\"id\")\n .name(\"id\")\n .orgId(\"123456789\")\n .build());\n\n var primary = new Policy(\"primary\", PolicyArgs.builder()\n .name(basic.name().applyValue(name -\u003e String.format(\"projects/%s/policies/iam.disableServiceAccountKeyUpload\", name)))\n .parent(basic.name().applyValue(name -\u003e String.format(\"projects/%s\", name)))\n .spec(PolicySpecArgs.builder()\n .rules(PolicySpecRuleArgs.builder()\n .enforce(\"FALSE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:orgpolicy:Policy\n properties:\n name: projects/${basic.name}/policies/iam.disableServiceAccountKeyUpload\n parent: projects/${basic.name}\n spec:\n rules:\n - enforce: FALSE\n basic:\n type: gcp:organizations:Project\n properties:\n projectId: id\n name: id\n orgId: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Org Policy Policy Folder\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.organizations.Folder(\"basic\", {\n parent: \"organizations/123456789\",\n displayName: \"folder\",\n});\nconst primary = new gcp.orgpolicy.Policy(\"primary\", {\n name: pulumi.interpolate`${basic.name}/policies/gcp.resourceLocations`,\n parent: basic.name,\n spec: {\n inheritFromParent: true,\n rules: [{\n denyAll: \"TRUE\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.organizations.Folder(\"basic\",\n parent=\"organizations/123456789\",\n display_name=\"folder\")\nprimary = gcp.orgpolicy.Policy(\"primary\",\n name=basic.name.apply(lambda name: f\"{name}/policies/gcp.resourceLocations\"),\n parent=basic.name,\n spec={\n \"inherit_from_parent\": True,\n \"rules\": [{\n \"deny_all\": \"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 basic = new Gcp.Organizations.Folder(\"basic\", new()\n {\n Parent = \"organizations/123456789\",\n DisplayName = \"folder\",\n });\n\n var primary = new Gcp.OrgPolicy.Policy(\"primary\", new()\n {\n Name = basic.Name.Apply(name =\u003e $\"{name}/policies/gcp.resourceLocations\"),\n Parent = basic.Name,\n Spec = new Gcp.OrgPolicy.Inputs.PolicySpecArgs\n {\n InheritFromParent = true,\n Rules = new[]\n {\n new Gcp.OrgPolicy.Inputs.PolicySpecRuleArgs\n {\n DenyAll = \"TRUE\",\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/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/orgpolicy\"\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 := organizations.NewFolder(ctx, \"basic\", \u0026organizations.FolderArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDisplayName: pulumi.String(\"folder\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = orgpolicy.NewPolicy(ctx, \"primary\", \u0026orgpolicy.PolicyArgs{\n\t\t\tName: basic.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v/policies/gcp.resourceLocations\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tParent: basic.Name,\n\t\t\tSpec: \u0026orgpolicy.PolicySpecArgs{\n\t\t\t\tInheritFromParent: pulumi.Bool(true),\n\t\t\t\tRules: orgpolicy.PolicySpecRuleArray{\n\t\t\t\t\t\u0026orgpolicy.PolicySpecRuleArgs{\n\t\t\t\t\t\tDenyAll: pulumi.String(\"TRUE\"),\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.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.orgpolicy.Policy;\nimport com.pulumi.gcp.orgpolicy.PolicyArgs;\nimport com.pulumi.gcp.orgpolicy.inputs.PolicySpecArgs;\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 Folder(\"basic\", FolderArgs.builder()\n .parent(\"organizations/123456789\")\n .displayName(\"folder\")\n .build());\n\n var primary = new Policy(\"primary\", PolicyArgs.builder()\n .name(basic.name().applyValue(name -\u003e String.format(\"%s/policies/gcp.resourceLocations\", name)))\n .parent(basic.name())\n .spec(PolicySpecArgs.builder()\n .inheritFromParent(true)\n .rules(PolicySpecRuleArgs.builder()\n .denyAll(\"TRUE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:orgpolicy:Policy\n properties:\n name: ${basic.name}/policies/gcp.resourceLocations\n parent: ${basic.name}\n spec:\n inheritFromParent: true\n rules:\n - denyAll: TRUE\n basic:\n type: gcp:organizations:Folder\n properties:\n parent: organizations/123456789\n displayName: folder\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Org Policy Policy Organization\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.orgpolicy.Policy(\"primary\", {\n name: \"organizations/123456789/policies/gcp.detailedAuditLoggingMode\",\n parent: \"organizations/123456789\",\n spec: {\n reset: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.orgpolicy.Policy(\"primary\",\n name=\"organizations/123456789/policies/gcp.detailedAuditLoggingMode\",\n parent=\"organizations/123456789\",\n spec={\n \"reset\": 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 primary = new Gcp.OrgPolicy.Policy(\"primary\", new()\n {\n Name = \"organizations/123456789/policies/gcp.detailedAuditLoggingMode\",\n Parent = \"organizations/123456789\",\n Spec = new Gcp.OrgPolicy.Inputs.PolicySpecArgs\n {\n Reset = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/orgpolicy\"\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 := orgpolicy.NewPolicy(ctx, \"primary\", \u0026orgpolicy.PolicyArgs{\n\t\t\tName: pulumi.String(\"organizations/123456789/policies/gcp.detailedAuditLoggingMode\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tSpec: \u0026orgpolicy.PolicySpecArgs{\n\t\t\t\tReset: 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.orgpolicy.Policy;\nimport com.pulumi.gcp.orgpolicy.PolicyArgs;\nimport com.pulumi.gcp.orgpolicy.inputs.PolicySpecArgs;\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 primary = new Policy(\"primary\", PolicyArgs.builder()\n .name(\"organizations/123456789/policies/gcp.detailedAuditLoggingMode\")\n .parent(\"organizations/123456789\")\n .spec(PolicySpecArgs.builder()\n .reset(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:orgpolicy:Policy\n properties:\n name: organizations/123456789/policies/gcp.detailedAuditLoggingMode\n parent: organizations/123456789\n spec:\n reset: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Org Policy Policy Project\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.organizations.Project(\"basic\", {\n projectId: \"id\",\n name: \"id\",\n orgId: \"123456789\",\n});\nconst primary = new gcp.orgpolicy.Policy(\"primary\", {\n name: pulumi.interpolate`projects/${basic.name}/policies/gcp.resourceLocations`,\n parent: pulumi.interpolate`projects/${basic.name}`,\n spec: {\n rules: [\n {\n condition: {\n description: \"A sample condition for the policy\",\n expression: \"resource.matchLabels('labelKeys/123', 'labelValues/345')\",\n location: \"sample-location.log\",\n title: \"sample-condition\",\n },\n values: {\n allowedValues: [\"projects/allowed-project\"],\n deniedValues: [\"projects/denied-project\"],\n },\n },\n {\n allowAll: \"TRUE\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.organizations.Project(\"basic\",\n project_id=\"id\",\n name=\"id\",\n org_id=\"123456789\")\nprimary = gcp.orgpolicy.Policy(\"primary\",\n name=basic.name.apply(lambda name: f\"projects/{name}/policies/gcp.resourceLocations\"),\n parent=basic.name.apply(lambda name: f\"projects/{name}\"),\n spec={\n \"rules\": [\n {\n \"condition\": {\n \"description\": \"A sample condition for the policy\",\n \"expression\": \"resource.matchLabels('labelKeys/123', 'labelValues/345')\",\n \"location\": \"sample-location.log\",\n \"title\": \"sample-condition\",\n },\n \"values\": {\n \"allowed_values\": [\"projects/allowed-project\"],\n \"denied_values\": [\"projects/denied-project\"],\n },\n },\n {\n \"allow_all\": \"TRUE\",\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 basic = new Gcp.Organizations.Project(\"basic\", new()\n {\n ProjectId = \"id\",\n Name = \"id\",\n OrgId = \"123456789\",\n });\n\n var primary = new Gcp.OrgPolicy.Policy(\"primary\", new()\n {\n Name = basic.Name.Apply(name =\u003e $\"projects/{name}/policies/gcp.resourceLocations\"),\n Parent = basic.Name.Apply(name =\u003e $\"projects/{name}\"),\n Spec = new Gcp.OrgPolicy.Inputs.PolicySpecArgs\n {\n Rules = new[]\n {\n new Gcp.OrgPolicy.Inputs.PolicySpecRuleArgs\n {\n Condition = new Gcp.OrgPolicy.Inputs.PolicySpecRuleConditionArgs\n {\n Description = \"A sample condition for the policy\",\n Expression = \"resource.matchLabels('labelKeys/123', 'labelValues/345')\",\n Location = \"sample-location.log\",\n Title = \"sample-condition\",\n },\n Values = new Gcp.OrgPolicy.Inputs.PolicySpecRuleValuesArgs\n {\n AllowedValues = new[]\n {\n \"projects/allowed-project\",\n },\n DeniedValues = new[]\n {\n \"projects/denied-project\",\n },\n },\n },\n new Gcp.OrgPolicy.Inputs.PolicySpecRuleArgs\n {\n AllowAll = \"TRUE\",\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/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/orgpolicy\"\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 := organizations.NewProject(ctx, \"basic\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"id\"),\n\t\t\tName: pulumi.String(\"id\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = orgpolicy.NewPolicy(ctx, \"primary\", \u0026orgpolicy.PolicyArgs{\n\t\t\tName: basic.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/policies/gcp.resourceLocations\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tParent: basic.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tSpec: \u0026orgpolicy.PolicySpecArgs{\n\t\t\t\tRules: orgpolicy.PolicySpecRuleArray{\n\t\t\t\t\t\u0026orgpolicy.PolicySpecRuleArgs{\n\t\t\t\t\t\tCondition: \u0026orgpolicy.PolicySpecRuleConditionArgs{\n\t\t\t\t\t\t\tDescription: pulumi.String(\"A sample condition for the policy\"),\n\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.matchLabels('labelKeys/123', 'labelValues/345')\"),\n\t\t\t\t\t\t\tLocation: pulumi.String(\"sample-location.log\"),\n\t\t\t\t\t\t\tTitle: pulumi.String(\"sample-condition\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tValues: \u0026orgpolicy.PolicySpecRuleValuesArgs{\n\t\t\t\t\t\t\tAllowedValues: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"projects/allowed-project\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDeniedValues: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"projects/denied-project\"),\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\t\u0026orgpolicy.PolicySpecRuleArgs{\n\t\t\t\t\t\tAllowAll: pulumi.String(\"TRUE\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.orgpolicy.Policy;\nimport com.pulumi.gcp.orgpolicy.PolicyArgs;\nimport com.pulumi.gcp.orgpolicy.inputs.PolicySpecArgs;\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 Project(\"basic\", ProjectArgs.builder()\n .projectId(\"id\")\n .name(\"id\")\n .orgId(\"123456789\")\n .build());\n\n var primary = new Policy(\"primary\", PolicyArgs.builder()\n .name(basic.name().applyValue(name -\u003e String.format(\"projects/%s/policies/gcp.resourceLocations\", name)))\n .parent(basic.name().applyValue(name -\u003e String.format(\"projects/%s\", name)))\n .spec(PolicySpecArgs.builder()\n .rules( \n PolicySpecRuleArgs.builder()\n .condition(PolicySpecRuleConditionArgs.builder()\n .description(\"A sample condition for the policy\")\n .expression(\"resource.matchLabels('labelKeys/123', 'labelValues/345')\")\n .location(\"sample-location.log\")\n .title(\"sample-condition\")\n .build())\n .values(PolicySpecRuleValuesArgs.builder()\n .allowedValues(\"projects/allowed-project\")\n .deniedValues(\"projects/denied-project\")\n .build())\n .build(),\n PolicySpecRuleArgs.builder()\n .allowAll(\"TRUE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:orgpolicy:Policy\n properties:\n name: projects/${basic.name}/policies/gcp.resourceLocations\n parent: projects/${basic.name}\n spec:\n rules:\n - condition:\n description: A sample condition for the policy\n expression: resource.matchLabels('labelKeys/123', 'labelValues/345')\n location: sample-location.log\n title: sample-condition\n values:\n allowedValues:\n - projects/allowed-project\n deniedValues:\n - projects/denied-project\n - allowAll: TRUE\n basic:\n type: gcp:organizations:Project\n properties:\n projectId: id\n name: id\n orgId: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Org Policy Policy Dry Run Spec\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst constraint = new gcp.orgpolicy.CustomConstraint(\"constraint\", {\n name: \"custom.disableGkeAutoUpgrade_40785\",\n parent: \"organizations/123456789\",\n displayName: \"Disable GKE auto upgrade\",\n description: \"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\",\n actionType: \"ALLOW\",\n condition: \"resource.management.autoUpgrade == false\",\n methodTypes: [\"CREATE\"],\n resourceTypes: [\"container.googleapis.com/NodePool\"],\n});\nconst primary = new gcp.orgpolicy.Policy(\"primary\", {\n name: pulumi.interpolate`organizations/123456789/policies/${constraint.name}`,\n parent: \"organizations/123456789\",\n spec: {\n rules: [{\n enforce: \"FALSE\",\n }],\n },\n dryRunSpec: {\n inheritFromParent: false,\n reset: false,\n rules: [{\n enforce: \"FALSE\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconstraint = gcp.orgpolicy.CustomConstraint(\"constraint\",\n name=\"custom.disableGkeAutoUpgrade_40785\",\n parent=\"organizations/123456789\",\n display_name=\"Disable GKE auto upgrade\",\n description=\"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\",\n action_type=\"ALLOW\",\n condition=\"resource.management.autoUpgrade == false\",\n method_types=[\"CREATE\"],\n resource_types=[\"container.googleapis.com/NodePool\"])\nprimary = gcp.orgpolicy.Policy(\"primary\",\n name=constraint.name.apply(lambda name: f\"organizations/123456789/policies/{name}\"),\n parent=\"organizations/123456789\",\n spec={\n \"rules\": [{\n \"enforce\": \"FALSE\",\n }],\n },\n dry_run_spec={\n \"inherit_from_parent\": False,\n \"reset\": False,\n \"rules\": [{\n \"enforce\": \"FALSE\",\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 constraint = new Gcp.OrgPolicy.CustomConstraint(\"constraint\", new()\n {\n Name = \"custom.disableGkeAutoUpgrade_40785\",\n Parent = \"organizations/123456789\",\n DisplayName = \"Disable GKE auto upgrade\",\n Description = \"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\",\n ActionType = \"ALLOW\",\n Condition = \"resource.management.autoUpgrade == false\",\n MethodTypes = new[]\n {\n \"CREATE\",\n },\n ResourceTypes = new[]\n {\n \"container.googleapis.com/NodePool\",\n },\n });\n\n var primary = new Gcp.OrgPolicy.Policy(\"primary\", new()\n {\n Name = constraint.Name.Apply(name =\u003e $\"organizations/123456789/policies/{name}\"),\n Parent = \"organizations/123456789\",\n Spec = new Gcp.OrgPolicy.Inputs.PolicySpecArgs\n {\n Rules = new[]\n {\n new Gcp.OrgPolicy.Inputs.PolicySpecRuleArgs\n {\n Enforce = \"FALSE\",\n },\n },\n },\n DryRunSpec = new Gcp.OrgPolicy.Inputs.PolicyDryRunSpecArgs\n {\n InheritFromParent = false,\n Reset = false,\n Rules = new[]\n {\n new Gcp.OrgPolicy.Inputs.PolicyDryRunSpecRuleArgs\n {\n Enforce = \"FALSE\",\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/v7/go/gcp/orgpolicy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tconstraint, err := orgpolicy.NewCustomConstraint(ctx, \"constraint\", \u0026orgpolicy.CustomConstraintArgs{\n\t\t\tName: pulumi.String(\"custom.disableGkeAutoUpgrade_40785\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDisplayName: pulumi.String(\"Disable GKE auto upgrade\"),\n\t\t\tDescription: pulumi.String(\"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\"),\n\t\t\tActionType: pulumi.String(\"ALLOW\"),\n\t\t\tCondition: pulumi.String(\"resource.management.autoUpgrade == false\"),\n\t\t\tMethodTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"CREATE\"),\n\t\t\t},\n\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"container.googleapis.com/NodePool\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = orgpolicy.NewPolicy(ctx, \"primary\", \u0026orgpolicy.PolicyArgs{\n\t\t\tName: constraint.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"organizations/123456789/policies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tSpec: \u0026orgpolicy.PolicySpecArgs{\n\t\t\t\tRules: orgpolicy.PolicySpecRuleArray{\n\t\t\t\t\t\u0026orgpolicy.PolicySpecRuleArgs{\n\t\t\t\t\t\tEnforce: pulumi.String(\"FALSE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDryRunSpec: \u0026orgpolicy.PolicyDryRunSpecArgs{\n\t\t\t\tInheritFromParent: pulumi.Bool(false),\n\t\t\t\tReset: pulumi.Bool(false),\n\t\t\t\tRules: orgpolicy.PolicyDryRunSpecRuleArray{\n\t\t\t\t\t\u0026orgpolicy.PolicyDryRunSpecRuleArgs{\n\t\t\t\t\t\tEnforce: pulumi.String(\"FALSE\"),\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.orgpolicy.CustomConstraint;\nimport com.pulumi.gcp.orgpolicy.CustomConstraintArgs;\nimport com.pulumi.gcp.orgpolicy.Policy;\nimport com.pulumi.gcp.orgpolicy.PolicyArgs;\nimport com.pulumi.gcp.orgpolicy.inputs.PolicySpecArgs;\nimport com.pulumi.gcp.orgpolicy.inputs.PolicyDryRunSpecArgs;\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 constraint = new CustomConstraint(\"constraint\", CustomConstraintArgs.builder()\n .name(\"custom.disableGkeAutoUpgrade_40785\")\n .parent(\"organizations/123456789\")\n .displayName(\"Disable GKE auto upgrade\")\n .description(\"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\")\n .actionType(\"ALLOW\")\n .condition(\"resource.management.autoUpgrade == false\")\n .methodTypes(\"CREATE\")\n .resourceTypes(\"container.googleapis.com/NodePool\")\n .build());\n\n var primary = new Policy(\"primary\", PolicyArgs.builder()\n .name(constraint.name().applyValue(name -\u003e String.format(\"organizations/123456789/policies/%s\", name)))\n .parent(\"organizations/123456789\")\n .spec(PolicySpecArgs.builder()\n .rules(PolicySpecRuleArgs.builder()\n .enforce(\"FALSE\")\n .build())\n .build())\n .dryRunSpec(PolicyDryRunSpecArgs.builder()\n .inheritFromParent(false)\n .reset(false)\n .rules(PolicyDryRunSpecRuleArgs.builder()\n .enforce(\"FALSE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n constraint:\n type: gcp:orgpolicy:CustomConstraint\n properties:\n name: custom.disableGkeAutoUpgrade_40785\n parent: organizations/123456789\n displayName: Disable GKE auto upgrade\n description: Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\n actionType: ALLOW\n condition: resource.management.autoUpgrade == false\n methodTypes:\n - CREATE\n resourceTypes:\n - container.googleapis.com/NodePool\n primary:\n type: gcp:orgpolicy:Policy\n properties:\n name: organizations/123456789/policies/${constraint.name}\n parent: organizations/123456789\n spec:\n rules:\n - enforce: FALSE\n dryRunSpec:\n inheritFromParent: false\n reset: false\n rules:\n - enforce: FALSE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPolicy can be imported using any of these accepted formats:\n\n* `{{parent}}/policies/{{name}}`\n\nWhen using the `pulumi import` command, Policy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:orgpolicy/policy:Policy default {{parent}}/policies/{{name}}\n```\n\n", "properties": { "dryRunSpec": { "$ref": "#/types/gcp:orgpolicy/PolicyDryRunSpec:PolicyDryRunSpec", @@ -225739,7 +225739,7 @@ } }, "gcp:osconfig/guestPolicies:GuestPolicies": { - "description": "An OS Config resource representing a guest configuration policy. These policies represent\nthe desired state for VM instance guest environments including packages to install or remove,\npackage repository configurations, and software to install.\n\nTo get more information about GuestPolicies, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/osconfig/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/os-config-management)\n\n## Example Usage\n\n### Os Config Guest Policies Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst foobar = new gcp.compute.Instance(\"foobar\", {\n name: \"guest-policy-inst\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n metadata: {\n foo: \"bar\",\n },\n});\nconst guestPolicies = new gcp.osconfig.GuestPolicies(\"guest_policies\", {\n guestPolicyId: \"guest-policy\",\n assignment: {\n instances: [foobar.id],\n },\n packages: [{\n name: \"my-package\",\n desiredState: \"UPDATED\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nfoobar = gcp.compute.Instance(\"foobar\",\n name=\"guest-policy-inst\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n boot_disk={\n \"initializeParams\": {\n \"image\": my_image.self_link,\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }],\n metadata={\n \"foo\": \"bar\",\n })\nguest_policies = gcp.osconfig.GuestPolicies(\"guest_policies\",\n guest_policy_id=\"guest-policy\",\n assignment={\n \"instances\": [foobar.id],\n },\n packages=[{\n \"name\": \"my-package\",\n \"desiredState\": \"UPDATED\",\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 myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var foobar = new Gcp.Compute.Instance(\"foobar\", new()\n {\n Name = \"guest-policy-inst\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var guestPolicies = new Gcp.OsConfig.GuestPolicies(\"guest_policies\", new()\n {\n GuestPolicyId = \"guest-policy\",\n Assignment = new Gcp.OsConfig.Inputs.GuestPoliciesAssignmentArgs\n {\n Instances = new[]\n {\n foobar.Id,\n },\n },\n Packages = new[]\n {\n new Gcp.OsConfig.Inputs.GuestPoliciesPackageArgs\n {\n Name = \"my-package\",\n DesiredState = \"UPDATED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/osconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobar, err := compute.NewInstance(ctx, \"foobar\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"guest-policy-inst\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\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},\n\t\t\t},\n\t\t\tMetadata: 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\t_, err = osconfig.NewGuestPolicies(ctx, \"guest_policies\", \u0026osconfig.GuestPoliciesArgs{\n\t\t\tGuestPolicyId: pulumi.String(\"guest-policy\"),\n\t\t\tAssignment: \u0026osconfig.GuestPoliciesAssignmentArgs{\n\t\t\t\tInstances: pulumi.StringArray{\n\t\t\t\t\tfoobar.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPackages: osconfig.GuestPoliciesPackageArray{\n\t\t\t\t\u0026osconfig.GuestPoliciesPackageArgs{\n\t\t\t\t\tName: pulumi.String(\"my-package\"),\n\t\t\t\t\tDesiredState: pulumi.String(\"UPDATED\"),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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.osconfig.GuestPolicies;\nimport com.pulumi.gcp.osconfig.GuestPoliciesArgs;\nimport com.pulumi.gcp.osconfig.inputs.GuestPoliciesAssignmentArgs;\nimport com.pulumi.gcp.osconfig.inputs.GuestPoliciesPackageArgs;\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 myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var foobar = new Instance(\"foobar\", InstanceArgs.builder()\n .name(\"guest-policy-inst\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .build());\n\n var guestPolicies = new GuestPolicies(\"guestPolicies\", GuestPoliciesArgs.builder()\n .guestPolicyId(\"guest-policy\")\n .assignment(GuestPoliciesAssignmentArgs.builder()\n .instances(foobar.id())\n .build())\n .packages(GuestPoliciesPackageArgs.builder()\n .name(\"my-package\")\n .desiredState(\"UPDATED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:Instance\n properties:\n name: guest-policy-inst\n machineType: e2-medium\n zone: us-central1-a\n canIpForward: false\n tags:\n - foo\n - bar\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\n networkInterfaces:\n - network: default\n metadata:\n foo: bar\n guestPolicies:\n type: gcp:osconfig:GuestPolicies\n name: guest_policies\n properties:\n guestPolicyId: guest-policy\n assignment:\n instances:\n - ${foobar.id}\n packages:\n - name: my-package\n desiredState: UPDATED\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Guest Policies Packages\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst guestPolicies = new gcp.osconfig.GuestPolicies(\"guest_policies\", {\n guestPolicyId: \"guest-policy\",\n assignment: {\n groupLabels: [\n {\n labels: {\n color: \"red\",\n env: \"test\",\n },\n },\n {\n labels: {\n color: \"blue\",\n env: \"test\",\n },\n },\n ],\n },\n packages: [\n {\n name: \"my-package\",\n desiredState: \"INSTALLED\",\n },\n {\n name: \"bad-package-1\",\n desiredState: \"REMOVED\",\n },\n {\n name: \"bad-package-2\",\n desiredState: \"REMOVED\",\n manager: \"APT\",\n },\n ],\n packageRepositories: [\n {\n apt: {\n uri: \"https://packages.cloud.google.com/apt\",\n archiveType: \"DEB\",\n distribution: \"cloud-sdk-stretch\",\n components: [\"main\"],\n },\n },\n {\n yum: {\n id: \"google-cloud-sdk\",\n displayName: \"Google Cloud SDK\",\n baseUrl: \"https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64\",\n gpgKeys: [\n \"https://packages.cloud.google.com/yum/doc/yum-key.gpg\",\n \"https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg\",\n ],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nguest_policies = gcp.osconfig.GuestPolicies(\"guest_policies\",\n guest_policy_id=\"guest-policy\",\n assignment={\n \"groupLabels\": [\n {\n \"labels\": {\n \"color\": \"red\",\n \"env\": \"test\",\n },\n },\n {\n \"labels\": {\n \"color\": \"blue\",\n \"env\": \"test\",\n },\n },\n ],\n },\n packages=[\n {\n \"name\": \"my-package\",\n \"desiredState\": \"INSTALLED\",\n },\n {\n \"name\": \"bad-package-1\",\n \"desiredState\": \"REMOVED\",\n },\n {\n \"name\": \"bad-package-2\",\n \"desiredState\": \"REMOVED\",\n \"manager\": \"APT\",\n },\n ],\n package_repositories=[\n {\n \"apt\": {\n \"uri\": \"https://packages.cloud.google.com/apt\",\n \"archiveType\": \"DEB\",\n \"distribution\": \"cloud-sdk-stretch\",\n \"components\": [\"main\"],\n },\n },\n {\n \"yum\": {\n \"id\": \"google-cloud-sdk\",\n \"displayName\": \"Google Cloud SDK\",\n \"baseUrl\": \"https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64\",\n \"gpgKeys\": [\n \"https://packages.cloud.google.com/yum/doc/yum-key.gpg\",\n \"https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg\",\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 guestPolicies = new Gcp.OsConfig.GuestPolicies(\"guest_policies\", new()\n {\n GuestPolicyId = \"guest-policy\",\n Assignment = new Gcp.OsConfig.Inputs.GuestPoliciesAssignmentArgs\n {\n GroupLabels = new[]\n {\n new Gcp.OsConfig.Inputs.GuestPoliciesAssignmentGroupLabelArgs\n {\n Labels = \n {\n { \"color\", \"red\" },\n { \"env\", \"test\" },\n },\n },\n new Gcp.OsConfig.Inputs.GuestPoliciesAssignmentGroupLabelArgs\n {\n Labels = \n {\n { \"color\", \"blue\" },\n { \"env\", \"test\" },\n },\n },\n },\n },\n Packages = new[]\n {\n new Gcp.OsConfig.Inputs.GuestPoliciesPackageArgs\n {\n Name = \"my-package\",\n DesiredState = \"INSTALLED\",\n },\n new Gcp.OsConfig.Inputs.GuestPoliciesPackageArgs\n {\n Name = \"bad-package-1\",\n DesiredState = \"REMOVED\",\n },\n new Gcp.OsConfig.Inputs.GuestPoliciesPackageArgs\n {\n Name = \"bad-package-2\",\n DesiredState = \"REMOVED\",\n Manager = \"APT\",\n },\n },\n PackageRepositories = new[]\n {\n new Gcp.OsConfig.Inputs.GuestPoliciesPackageRepositoryArgs\n {\n Apt = new Gcp.OsConfig.Inputs.GuestPoliciesPackageRepositoryAptArgs\n {\n Uri = \"https://packages.cloud.google.com/apt\",\n ArchiveType = \"DEB\",\n Distribution = \"cloud-sdk-stretch\",\n Components = new[]\n {\n \"main\",\n },\n },\n },\n new Gcp.OsConfig.Inputs.GuestPoliciesPackageRepositoryArgs\n {\n Yum = new Gcp.OsConfig.Inputs.GuestPoliciesPackageRepositoryYumArgs\n {\n Id = \"google-cloud-sdk\",\n DisplayName = \"Google Cloud SDK\",\n BaseUrl = \"https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64\",\n GpgKeys = new[]\n {\n \"https://packages.cloud.google.com/yum/doc/yum-key.gpg\",\n \"https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/osconfig\"\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 := osconfig.NewGuestPolicies(ctx, \"guest_policies\", \u0026osconfig.GuestPoliciesArgs{\n\t\t\tGuestPolicyId: pulumi.String(\"guest-policy\"),\n\t\t\tAssignment: \u0026osconfig.GuestPoliciesAssignmentArgs{\n\t\t\t\tGroupLabels: osconfig.GuestPoliciesAssignmentGroupLabelArray{\n\t\t\t\t\t\u0026osconfig.GuestPoliciesAssignmentGroupLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"color\": pulumi.String(\"red\"),\n\t\t\t\t\t\t\t\"env\": pulumi.String(\"test\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026osconfig.GuestPoliciesAssignmentGroupLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"color\": pulumi.String(\"blue\"),\n\t\t\t\t\t\t\t\"env\": pulumi.String(\"test\"),\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\tPackages: osconfig.GuestPoliciesPackageArray{\n\t\t\t\t\u0026osconfig.GuestPoliciesPackageArgs{\n\t\t\t\t\tName: pulumi.String(\"my-package\"),\n\t\t\t\t\tDesiredState: pulumi.String(\"INSTALLED\"),\n\t\t\t\t},\n\t\t\t\t\u0026osconfig.GuestPoliciesPackageArgs{\n\t\t\t\t\tName: pulumi.String(\"bad-package-1\"),\n\t\t\t\t\tDesiredState: pulumi.String(\"REMOVED\"),\n\t\t\t\t},\n\t\t\t\t\u0026osconfig.GuestPoliciesPackageArgs{\n\t\t\t\t\tName: pulumi.String(\"bad-package-2\"),\n\t\t\t\t\tDesiredState: pulumi.String(\"REMOVED\"),\n\t\t\t\t\tManager: pulumi.String(\"APT\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPackageRepositories: osconfig.GuestPoliciesPackageRepositoryArray{\n\t\t\t\t\u0026osconfig.GuestPoliciesPackageRepositoryArgs{\n\t\t\t\t\tApt: \u0026osconfig.GuestPoliciesPackageRepositoryAptArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://packages.cloud.google.com/apt\"),\n\t\t\t\t\t\tArchiveType: pulumi.String(\"DEB\"),\n\t\t\t\t\t\tDistribution: pulumi.String(\"cloud-sdk-stretch\"),\n\t\t\t\t\t\tComponents: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"main\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026osconfig.GuestPoliciesPackageRepositoryArgs{\n\t\t\t\t\tYum: \u0026osconfig.GuestPoliciesPackageRepositoryYumArgs{\n\t\t\t\t\t\tId: pulumi.String(\"google-cloud-sdk\"),\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Google Cloud SDK\"),\n\t\t\t\t\t\tBaseUrl: pulumi.String(\"https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64\"),\n\t\t\t\t\t\tGpgKeys: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"https://packages.cloud.google.com/yum/doc/yum-key.gpg\"),\n\t\t\t\t\t\t\tpulumi.String(\"https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg\"),\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.osconfig.GuestPolicies;\nimport com.pulumi.gcp.osconfig.GuestPoliciesArgs;\nimport com.pulumi.gcp.osconfig.inputs.GuestPoliciesAssignmentArgs;\nimport com.pulumi.gcp.osconfig.inputs.GuestPoliciesPackageArgs;\nimport com.pulumi.gcp.osconfig.inputs.GuestPoliciesPackageRepositoryArgs;\nimport com.pulumi.gcp.osconfig.inputs.GuestPoliciesPackageRepositoryAptArgs;\nimport com.pulumi.gcp.osconfig.inputs.GuestPoliciesPackageRepositoryYumArgs;\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 guestPolicies = new GuestPolicies(\"guestPolicies\", GuestPoliciesArgs.builder()\n .guestPolicyId(\"guest-policy\")\n .assignment(GuestPoliciesAssignmentArgs.builder()\n .groupLabels( \n GuestPoliciesAssignmentGroupLabelArgs.builder()\n .labels(Map.ofEntries(\n Map.entry(\"color\", \"red\"),\n Map.entry(\"env\", \"test\")\n ))\n .build(),\n GuestPoliciesAssignmentGroupLabelArgs.builder()\n .labels(Map.ofEntries(\n Map.entry(\"color\", \"blue\"),\n Map.entry(\"env\", \"test\")\n ))\n .build())\n .build())\n .packages( \n GuestPoliciesPackageArgs.builder()\n .name(\"my-package\")\n .desiredState(\"INSTALLED\")\n .build(),\n GuestPoliciesPackageArgs.builder()\n .name(\"bad-package-1\")\n .desiredState(\"REMOVED\")\n .build(),\n GuestPoliciesPackageArgs.builder()\n .name(\"bad-package-2\")\n .desiredState(\"REMOVED\")\n .manager(\"APT\")\n .build())\n .packageRepositories( \n GuestPoliciesPackageRepositoryArgs.builder()\n .apt(GuestPoliciesPackageRepositoryAptArgs.builder()\n .uri(\"https://packages.cloud.google.com/apt\")\n .archiveType(\"DEB\")\n .distribution(\"cloud-sdk-stretch\")\n .components(\"main\")\n .build())\n .build(),\n GuestPoliciesPackageRepositoryArgs.builder()\n .yum(GuestPoliciesPackageRepositoryYumArgs.builder()\n .id(\"google-cloud-sdk\")\n .displayName(\"Google Cloud SDK\")\n .baseUrl(\"https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64\")\n .gpgKeys( \n \"https://packages.cloud.google.com/yum/doc/yum-key.gpg\",\n \"https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n guestPolicies:\n type: gcp:osconfig:GuestPolicies\n name: guest_policies\n properties:\n guestPolicyId: guest-policy\n assignment:\n groupLabels:\n - labels:\n color: red\n env: test\n - labels:\n color: blue\n env: test\n packages:\n - name: my-package\n desiredState: INSTALLED\n - name: bad-package-1\n desiredState: REMOVED\n - name: bad-package-2\n desiredState: REMOVED\n manager: APT\n packageRepositories:\n - apt:\n uri: https://packages.cloud.google.com/apt\n archiveType: DEB\n distribution: cloud-sdk-stretch\n components:\n - main\n - yum:\n id: google-cloud-sdk\n displayName: Google Cloud SDK\n baseUrl: https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64\n gpgKeys:\n - https://packages.cloud.google.com/yum/doc/yum-key.gpg\n - https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Guest Policies Recipes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst guestPolicies = new gcp.osconfig.GuestPolicies(\"guest_policies\", {\n guestPolicyId: \"guest-policy\",\n assignment: {\n zones: [\n \"us-east1-b\",\n \"us-east1-d\",\n ],\n },\n recipes: [{\n name: \"guest-policy-recipe\",\n desiredState: \"INSTALLED\",\n artifacts: [{\n id: \"guest-policy-artifact-id\",\n gcs: {\n bucket: \"my-bucket\",\n object: \"executable.msi\",\n generation: 1546030865175603,\n },\n }],\n installSteps: [{\n msiInstallation: {\n artifactId: \"guest-policy-artifact-id\",\n },\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nguest_policies = gcp.osconfig.GuestPolicies(\"guest_policies\",\n guest_policy_id=\"guest-policy\",\n assignment={\n \"zones\": [\n \"us-east1-b\",\n \"us-east1-d\",\n ],\n },\n recipes=[{\n \"name\": \"guest-policy-recipe\",\n \"desiredState\": \"INSTALLED\",\n \"artifacts\": [{\n \"id\": \"guest-policy-artifact-id\",\n \"gcs\": {\n \"bucket\": \"my-bucket\",\n \"object\": \"executable.msi\",\n \"generation\": 1546030865175603,\n },\n }],\n \"installSteps\": [{\n \"msiInstallation\": {\n \"artifactId\": \"guest-policy-artifact-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 guestPolicies = new Gcp.OsConfig.GuestPolicies(\"guest_policies\", new()\n {\n GuestPolicyId = \"guest-policy\",\n Assignment = new Gcp.OsConfig.Inputs.GuestPoliciesAssignmentArgs\n {\n Zones = new[]\n {\n \"us-east1-b\",\n \"us-east1-d\",\n },\n },\n Recipes = new[]\n {\n new Gcp.OsConfig.Inputs.GuestPoliciesRecipeArgs\n {\n Name = \"guest-policy-recipe\",\n DesiredState = \"INSTALLED\",\n Artifacts = new[]\n {\n new Gcp.OsConfig.Inputs.GuestPoliciesRecipeArtifactArgs\n {\n Id = \"guest-policy-artifact-id\",\n Gcs = new Gcp.OsConfig.Inputs.GuestPoliciesRecipeArtifactGcsArgs\n {\n Bucket = \"my-bucket\",\n Object = \"executable.msi\",\n Generation = 1546030865175603,\n },\n },\n },\n InstallSteps = new[]\n {\n new Gcp.OsConfig.Inputs.GuestPoliciesRecipeInstallStepArgs\n {\n MsiInstallation = new Gcp.OsConfig.Inputs.GuestPoliciesRecipeInstallStepMsiInstallationArgs\n {\n ArtifactId = \"guest-policy-artifact-id\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/osconfig\"\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 := osconfig.NewGuestPolicies(ctx, \"guest_policies\", \u0026osconfig.GuestPoliciesArgs{\n\t\t\tGuestPolicyId: pulumi.String(\"guest-policy\"),\n\t\t\tAssignment: \u0026osconfig.GuestPoliciesAssignmentArgs{\n\t\t\t\tZones: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"us-east1-b\"),\n\t\t\t\t\tpulumi.String(\"us-east1-d\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRecipes: osconfig.GuestPoliciesRecipeArray{\n\t\t\t\t\u0026osconfig.GuestPoliciesRecipeArgs{\n\t\t\t\t\tName: pulumi.String(\"guest-policy-recipe\"),\n\t\t\t\t\tDesiredState: pulumi.String(\"INSTALLED\"),\n\t\t\t\t\tArtifacts: osconfig.GuestPoliciesRecipeArtifactArray{\n\t\t\t\t\t\t\u0026osconfig.GuestPoliciesRecipeArtifactArgs{\n\t\t\t\t\t\t\tId: pulumi.String(\"guest-policy-artifact-id\"),\n\t\t\t\t\t\t\tGcs: \u0026osconfig.GuestPoliciesRecipeArtifactGcsArgs{\n\t\t\t\t\t\t\t\tBucket: pulumi.String(\"my-bucket\"),\n\t\t\t\t\t\t\t\tObject: pulumi.String(\"executable.msi\"),\n\t\t\t\t\t\t\t\tGeneration: pulumi.Int(1546030865175603),\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\tInstallSteps: osconfig.GuestPoliciesRecipeInstallStepArray{\n\t\t\t\t\t\t\u0026osconfig.GuestPoliciesRecipeInstallStepArgs{\n\t\t\t\t\t\t\tMsiInstallation: \u0026osconfig.GuestPoliciesRecipeInstallStepMsiInstallationArgs{\n\t\t\t\t\t\t\t\tArtifactId: pulumi.String(\"guest-policy-artifact-id\"),\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.osconfig.GuestPolicies;\nimport com.pulumi.gcp.osconfig.GuestPoliciesArgs;\nimport com.pulumi.gcp.osconfig.inputs.GuestPoliciesAssignmentArgs;\nimport com.pulumi.gcp.osconfig.inputs.GuestPoliciesRecipeArgs;\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 guestPolicies = new GuestPolicies(\"guestPolicies\", GuestPoliciesArgs.builder()\n .guestPolicyId(\"guest-policy\")\n .assignment(GuestPoliciesAssignmentArgs.builder()\n .zones( \n \"us-east1-b\",\n \"us-east1-d\")\n .build())\n .recipes(GuestPoliciesRecipeArgs.builder()\n .name(\"guest-policy-recipe\")\n .desiredState(\"INSTALLED\")\n .artifacts(GuestPoliciesRecipeArtifactArgs.builder()\n .id(\"guest-policy-artifact-id\")\n .gcs(GuestPoliciesRecipeArtifactGcsArgs.builder()\n .bucket(\"my-bucket\")\n .object(\"executable.msi\")\n .generation(1546030865175603)\n .build())\n .build())\n .installSteps(GuestPoliciesRecipeInstallStepArgs.builder()\n .msiInstallation(GuestPoliciesRecipeInstallStepMsiInstallationArgs.builder()\n .artifactId(\"guest-policy-artifact-id\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n guestPolicies:\n type: gcp:osconfig:GuestPolicies\n name: guest_policies\n properties:\n guestPolicyId: guest-policy\n assignment:\n zones:\n - us-east1-b\n - us-east1-d\n recipes:\n - name: guest-policy-recipe\n desiredState: INSTALLED\n artifacts:\n - id: guest-policy-artifact-id\n gcs:\n bucket: my-bucket\n object: executable.msi\n generation: 1.546030865175603e+15\n installSteps:\n - msiInstallation:\n artifactId: guest-policy-artifact-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGuestPolicies can be imported using any of these accepted formats:\n\n* `projects/{{project}}/guestPolicies/{{guest_policy_id}}`\n\n* `{{project}}/{{guest_policy_id}}`\n\n* `{{guest_policy_id}}`\n\nWhen using the `pulumi import` command, GuestPolicies can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:osconfig/guestPolicies:GuestPolicies default projects/{{project}}/guestPolicies/{{guest_policy_id}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/guestPolicies:GuestPolicies default {{project}}/{{guest_policy_id}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/guestPolicies:GuestPolicies default {{guest_policy_id}}\n```\n\n", + "description": "An OS Config resource representing a guest configuration policy. These policies represent\nthe desired state for VM instance guest environments including packages to install or remove,\npackage repository configurations, and software to install.\n\nTo get more information about GuestPolicies, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/osconfig/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/os-config-management)\n\n## Example Usage\n\n### Os Config Guest Policies Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst foobar = new gcp.compute.Instance(\"foobar\", {\n name: \"guest-policy-inst\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n metadata: {\n foo: \"bar\",\n },\n});\nconst guestPolicies = new gcp.osconfig.GuestPolicies(\"guest_policies\", {\n guestPolicyId: \"guest-policy\",\n assignment: {\n instances: [foobar.id],\n },\n packages: [{\n name: \"my-package\",\n desiredState: \"UPDATED\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nfoobar = gcp.compute.Instance(\"foobar\",\n name=\"guest-policy-inst\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n boot_disk={\n \"initialize_params\": {\n \"image\": my_image.self_link,\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }],\n metadata={\n \"foo\": \"bar\",\n })\nguest_policies = gcp.osconfig.GuestPolicies(\"guest_policies\",\n guest_policy_id=\"guest-policy\",\n assignment={\n \"instances\": [foobar.id],\n },\n packages=[{\n \"name\": \"my-package\",\n \"desired_state\": \"UPDATED\",\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 myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var foobar = new Gcp.Compute.Instance(\"foobar\", new()\n {\n Name = \"guest-policy-inst\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var guestPolicies = new Gcp.OsConfig.GuestPolicies(\"guest_policies\", new()\n {\n GuestPolicyId = \"guest-policy\",\n Assignment = new Gcp.OsConfig.Inputs.GuestPoliciesAssignmentArgs\n {\n Instances = new[]\n {\n foobar.Id,\n },\n },\n Packages = new[]\n {\n new Gcp.OsConfig.Inputs.GuestPoliciesPackageArgs\n {\n Name = \"my-package\",\n DesiredState = \"UPDATED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/osconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobar, err := compute.NewInstance(ctx, \"foobar\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"guest-policy-inst\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\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},\n\t\t\t},\n\t\t\tMetadata: 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\t_, err = osconfig.NewGuestPolicies(ctx, \"guest_policies\", \u0026osconfig.GuestPoliciesArgs{\n\t\t\tGuestPolicyId: pulumi.String(\"guest-policy\"),\n\t\t\tAssignment: \u0026osconfig.GuestPoliciesAssignmentArgs{\n\t\t\t\tInstances: pulumi.StringArray{\n\t\t\t\t\tfoobar.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPackages: osconfig.GuestPoliciesPackageArray{\n\t\t\t\t\u0026osconfig.GuestPoliciesPackageArgs{\n\t\t\t\t\tName: pulumi.String(\"my-package\"),\n\t\t\t\t\tDesiredState: pulumi.String(\"UPDATED\"),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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.osconfig.GuestPolicies;\nimport com.pulumi.gcp.osconfig.GuestPoliciesArgs;\nimport com.pulumi.gcp.osconfig.inputs.GuestPoliciesAssignmentArgs;\nimport com.pulumi.gcp.osconfig.inputs.GuestPoliciesPackageArgs;\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 myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var foobar = new Instance(\"foobar\", InstanceArgs.builder()\n .name(\"guest-policy-inst\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .build());\n\n var guestPolicies = new GuestPolicies(\"guestPolicies\", GuestPoliciesArgs.builder()\n .guestPolicyId(\"guest-policy\")\n .assignment(GuestPoliciesAssignmentArgs.builder()\n .instances(foobar.id())\n .build())\n .packages(GuestPoliciesPackageArgs.builder()\n .name(\"my-package\")\n .desiredState(\"UPDATED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:Instance\n properties:\n name: guest-policy-inst\n machineType: e2-medium\n zone: us-central1-a\n canIpForward: false\n tags:\n - foo\n - bar\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\n networkInterfaces:\n - network: default\n metadata:\n foo: bar\n guestPolicies:\n type: gcp:osconfig:GuestPolicies\n name: guest_policies\n properties:\n guestPolicyId: guest-policy\n assignment:\n instances:\n - ${foobar.id}\n packages:\n - name: my-package\n desiredState: UPDATED\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Guest Policies Packages\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst guestPolicies = new gcp.osconfig.GuestPolicies(\"guest_policies\", {\n guestPolicyId: \"guest-policy\",\n assignment: {\n groupLabels: [\n {\n labels: {\n color: \"red\",\n env: \"test\",\n },\n },\n {\n labels: {\n color: \"blue\",\n env: \"test\",\n },\n },\n ],\n },\n packages: [\n {\n name: \"my-package\",\n desiredState: \"INSTALLED\",\n },\n {\n name: \"bad-package-1\",\n desiredState: \"REMOVED\",\n },\n {\n name: \"bad-package-2\",\n desiredState: \"REMOVED\",\n manager: \"APT\",\n },\n ],\n packageRepositories: [\n {\n apt: {\n uri: \"https://packages.cloud.google.com/apt\",\n archiveType: \"DEB\",\n distribution: \"cloud-sdk-stretch\",\n components: [\"main\"],\n },\n },\n {\n yum: {\n id: \"google-cloud-sdk\",\n displayName: \"Google Cloud SDK\",\n baseUrl: \"https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64\",\n gpgKeys: [\n \"https://packages.cloud.google.com/yum/doc/yum-key.gpg\",\n \"https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg\",\n ],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nguest_policies = gcp.osconfig.GuestPolicies(\"guest_policies\",\n guest_policy_id=\"guest-policy\",\n assignment={\n \"group_labels\": [\n {\n \"labels\": {\n \"color\": \"red\",\n \"env\": \"test\",\n },\n },\n {\n \"labels\": {\n \"color\": \"blue\",\n \"env\": \"test\",\n },\n },\n ],\n },\n packages=[\n {\n \"name\": \"my-package\",\n \"desired_state\": \"INSTALLED\",\n },\n {\n \"name\": \"bad-package-1\",\n \"desired_state\": \"REMOVED\",\n },\n {\n \"name\": \"bad-package-2\",\n \"desired_state\": \"REMOVED\",\n \"manager\": \"APT\",\n },\n ],\n package_repositories=[\n {\n \"apt\": {\n \"uri\": \"https://packages.cloud.google.com/apt\",\n \"archive_type\": \"DEB\",\n \"distribution\": \"cloud-sdk-stretch\",\n \"components\": [\"main\"],\n },\n },\n {\n \"yum\": {\n \"id\": \"google-cloud-sdk\",\n \"display_name\": \"Google Cloud SDK\",\n \"base_url\": \"https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64\",\n \"gpg_keys\": [\n \"https://packages.cloud.google.com/yum/doc/yum-key.gpg\",\n \"https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg\",\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 guestPolicies = new Gcp.OsConfig.GuestPolicies(\"guest_policies\", new()\n {\n GuestPolicyId = \"guest-policy\",\n Assignment = new Gcp.OsConfig.Inputs.GuestPoliciesAssignmentArgs\n {\n GroupLabels = new[]\n {\n new Gcp.OsConfig.Inputs.GuestPoliciesAssignmentGroupLabelArgs\n {\n Labels = \n {\n { \"color\", \"red\" },\n { \"env\", \"test\" },\n },\n },\n new Gcp.OsConfig.Inputs.GuestPoliciesAssignmentGroupLabelArgs\n {\n Labels = \n {\n { \"color\", \"blue\" },\n { \"env\", \"test\" },\n },\n },\n },\n },\n Packages = new[]\n {\n new Gcp.OsConfig.Inputs.GuestPoliciesPackageArgs\n {\n Name = \"my-package\",\n DesiredState = \"INSTALLED\",\n },\n new Gcp.OsConfig.Inputs.GuestPoliciesPackageArgs\n {\n Name = \"bad-package-1\",\n DesiredState = \"REMOVED\",\n },\n new Gcp.OsConfig.Inputs.GuestPoliciesPackageArgs\n {\n Name = \"bad-package-2\",\n DesiredState = \"REMOVED\",\n Manager = \"APT\",\n },\n },\n PackageRepositories = new[]\n {\n new Gcp.OsConfig.Inputs.GuestPoliciesPackageRepositoryArgs\n {\n Apt = new Gcp.OsConfig.Inputs.GuestPoliciesPackageRepositoryAptArgs\n {\n Uri = \"https://packages.cloud.google.com/apt\",\n ArchiveType = \"DEB\",\n Distribution = \"cloud-sdk-stretch\",\n Components = new[]\n {\n \"main\",\n },\n },\n },\n new Gcp.OsConfig.Inputs.GuestPoliciesPackageRepositoryArgs\n {\n Yum = new Gcp.OsConfig.Inputs.GuestPoliciesPackageRepositoryYumArgs\n {\n Id = \"google-cloud-sdk\",\n DisplayName = \"Google Cloud SDK\",\n BaseUrl = \"https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64\",\n GpgKeys = new[]\n {\n \"https://packages.cloud.google.com/yum/doc/yum-key.gpg\",\n \"https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/osconfig\"\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 := osconfig.NewGuestPolicies(ctx, \"guest_policies\", \u0026osconfig.GuestPoliciesArgs{\n\t\t\tGuestPolicyId: pulumi.String(\"guest-policy\"),\n\t\t\tAssignment: \u0026osconfig.GuestPoliciesAssignmentArgs{\n\t\t\t\tGroupLabels: osconfig.GuestPoliciesAssignmentGroupLabelArray{\n\t\t\t\t\t\u0026osconfig.GuestPoliciesAssignmentGroupLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"color\": pulumi.String(\"red\"),\n\t\t\t\t\t\t\t\"env\": pulumi.String(\"test\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026osconfig.GuestPoliciesAssignmentGroupLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"color\": pulumi.String(\"blue\"),\n\t\t\t\t\t\t\t\"env\": pulumi.String(\"test\"),\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\tPackages: osconfig.GuestPoliciesPackageArray{\n\t\t\t\t\u0026osconfig.GuestPoliciesPackageArgs{\n\t\t\t\t\tName: pulumi.String(\"my-package\"),\n\t\t\t\t\tDesiredState: pulumi.String(\"INSTALLED\"),\n\t\t\t\t},\n\t\t\t\t\u0026osconfig.GuestPoliciesPackageArgs{\n\t\t\t\t\tName: pulumi.String(\"bad-package-1\"),\n\t\t\t\t\tDesiredState: pulumi.String(\"REMOVED\"),\n\t\t\t\t},\n\t\t\t\t\u0026osconfig.GuestPoliciesPackageArgs{\n\t\t\t\t\tName: pulumi.String(\"bad-package-2\"),\n\t\t\t\t\tDesiredState: pulumi.String(\"REMOVED\"),\n\t\t\t\t\tManager: pulumi.String(\"APT\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPackageRepositories: osconfig.GuestPoliciesPackageRepositoryArray{\n\t\t\t\t\u0026osconfig.GuestPoliciesPackageRepositoryArgs{\n\t\t\t\t\tApt: \u0026osconfig.GuestPoliciesPackageRepositoryAptArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://packages.cloud.google.com/apt\"),\n\t\t\t\t\t\tArchiveType: pulumi.String(\"DEB\"),\n\t\t\t\t\t\tDistribution: pulumi.String(\"cloud-sdk-stretch\"),\n\t\t\t\t\t\tComponents: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"main\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026osconfig.GuestPoliciesPackageRepositoryArgs{\n\t\t\t\t\tYum: \u0026osconfig.GuestPoliciesPackageRepositoryYumArgs{\n\t\t\t\t\t\tId: pulumi.String(\"google-cloud-sdk\"),\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Google Cloud SDK\"),\n\t\t\t\t\t\tBaseUrl: pulumi.String(\"https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64\"),\n\t\t\t\t\t\tGpgKeys: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"https://packages.cloud.google.com/yum/doc/yum-key.gpg\"),\n\t\t\t\t\t\t\tpulumi.String(\"https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg\"),\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.osconfig.GuestPolicies;\nimport com.pulumi.gcp.osconfig.GuestPoliciesArgs;\nimport com.pulumi.gcp.osconfig.inputs.GuestPoliciesAssignmentArgs;\nimport com.pulumi.gcp.osconfig.inputs.GuestPoliciesPackageArgs;\nimport com.pulumi.gcp.osconfig.inputs.GuestPoliciesPackageRepositoryArgs;\nimport com.pulumi.gcp.osconfig.inputs.GuestPoliciesPackageRepositoryAptArgs;\nimport com.pulumi.gcp.osconfig.inputs.GuestPoliciesPackageRepositoryYumArgs;\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 guestPolicies = new GuestPolicies(\"guestPolicies\", GuestPoliciesArgs.builder()\n .guestPolicyId(\"guest-policy\")\n .assignment(GuestPoliciesAssignmentArgs.builder()\n .groupLabels( \n GuestPoliciesAssignmentGroupLabelArgs.builder()\n .labels(Map.ofEntries(\n Map.entry(\"color\", \"red\"),\n Map.entry(\"env\", \"test\")\n ))\n .build(),\n GuestPoliciesAssignmentGroupLabelArgs.builder()\n .labels(Map.ofEntries(\n Map.entry(\"color\", \"blue\"),\n Map.entry(\"env\", \"test\")\n ))\n .build())\n .build())\n .packages( \n GuestPoliciesPackageArgs.builder()\n .name(\"my-package\")\n .desiredState(\"INSTALLED\")\n .build(),\n GuestPoliciesPackageArgs.builder()\n .name(\"bad-package-1\")\n .desiredState(\"REMOVED\")\n .build(),\n GuestPoliciesPackageArgs.builder()\n .name(\"bad-package-2\")\n .desiredState(\"REMOVED\")\n .manager(\"APT\")\n .build())\n .packageRepositories( \n GuestPoliciesPackageRepositoryArgs.builder()\n .apt(GuestPoliciesPackageRepositoryAptArgs.builder()\n .uri(\"https://packages.cloud.google.com/apt\")\n .archiveType(\"DEB\")\n .distribution(\"cloud-sdk-stretch\")\n .components(\"main\")\n .build())\n .build(),\n GuestPoliciesPackageRepositoryArgs.builder()\n .yum(GuestPoliciesPackageRepositoryYumArgs.builder()\n .id(\"google-cloud-sdk\")\n .displayName(\"Google Cloud SDK\")\n .baseUrl(\"https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64\")\n .gpgKeys( \n \"https://packages.cloud.google.com/yum/doc/yum-key.gpg\",\n \"https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n guestPolicies:\n type: gcp:osconfig:GuestPolicies\n name: guest_policies\n properties:\n guestPolicyId: guest-policy\n assignment:\n groupLabels:\n - labels:\n color: red\n env: test\n - labels:\n color: blue\n env: test\n packages:\n - name: my-package\n desiredState: INSTALLED\n - name: bad-package-1\n desiredState: REMOVED\n - name: bad-package-2\n desiredState: REMOVED\n manager: APT\n packageRepositories:\n - apt:\n uri: https://packages.cloud.google.com/apt\n archiveType: DEB\n distribution: cloud-sdk-stretch\n components:\n - main\n - yum:\n id: google-cloud-sdk\n displayName: Google Cloud SDK\n baseUrl: https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64\n gpgKeys:\n - https://packages.cloud.google.com/yum/doc/yum-key.gpg\n - https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Guest Policies Recipes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst guestPolicies = new gcp.osconfig.GuestPolicies(\"guest_policies\", {\n guestPolicyId: \"guest-policy\",\n assignment: {\n zones: [\n \"us-east1-b\",\n \"us-east1-d\",\n ],\n },\n recipes: [{\n name: \"guest-policy-recipe\",\n desiredState: \"INSTALLED\",\n artifacts: [{\n id: \"guest-policy-artifact-id\",\n gcs: {\n bucket: \"my-bucket\",\n object: \"executable.msi\",\n generation: 1546030865175603,\n },\n }],\n installSteps: [{\n msiInstallation: {\n artifactId: \"guest-policy-artifact-id\",\n },\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nguest_policies = gcp.osconfig.GuestPolicies(\"guest_policies\",\n guest_policy_id=\"guest-policy\",\n assignment={\n \"zones\": [\n \"us-east1-b\",\n \"us-east1-d\",\n ],\n },\n recipes=[{\n \"name\": \"guest-policy-recipe\",\n \"desired_state\": \"INSTALLED\",\n \"artifacts\": [{\n \"id\": \"guest-policy-artifact-id\",\n \"gcs\": {\n \"bucket\": \"my-bucket\",\n \"object\": \"executable.msi\",\n \"generation\": 1546030865175603,\n },\n }],\n \"install_steps\": [{\n \"msi_installation\": {\n \"artifact_id\": \"guest-policy-artifact-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 guestPolicies = new Gcp.OsConfig.GuestPolicies(\"guest_policies\", new()\n {\n GuestPolicyId = \"guest-policy\",\n Assignment = new Gcp.OsConfig.Inputs.GuestPoliciesAssignmentArgs\n {\n Zones = new[]\n {\n \"us-east1-b\",\n \"us-east1-d\",\n },\n },\n Recipes = new[]\n {\n new Gcp.OsConfig.Inputs.GuestPoliciesRecipeArgs\n {\n Name = \"guest-policy-recipe\",\n DesiredState = \"INSTALLED\",\n Artifacts = new[]\n {\n new Gcp.OsConfig.Inputs.GuestPoliciesRecipeArtifactArgs\n {\n Id = \"guest-policy-artifact-id\",\n Gcs = new Gcp.OsConfig.Inputs.GuestPoliciesRecipeArtifactGcsArgs\n {\n Bucket = \"my-bucket\",\n Object = \"executable.msi\",\n Generation = 1546030865175603,\n },\n },\n },\n InstallSteps = new[]\n {\n new Gcp.OsConfig.Inputs.GuestPoliciesRecipeInstallStepArgs\n {\n MsiInstallation = new Gcp.OsConfig.Inputs.GuestPoliciesRecipeInstallStepMsiInstallationArgs\n {\n ArtifactId = \"guest-policy-artifact-id\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/osconfig\"\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 := osconfig.NewGuestPolicies(ctx, \"guest_policies\", \u0026osconfig.GuestPoliciesArgs{\n\t\t\tGuestPolicyId: pulumi.String(\"guest-policy\"),\n\t\t\tAssignment: \u0026osconfig.GuestPoliciesAssignmentArgs{\n\t\t\t\tZones: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"us-east1-b\"),\n\t\t\t\t\tpulumi.String(\"us-east1-d\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRecipes: osconfig.GuestPoliciesRecipeArray{\n\t\t\t\t\u0026osconfig.GuestPoliciesRecipeArgs{\n\t\t\t\t\tName: pulumi.String(\"guest-policy-recipe\"),\n\t\t\t\t\tDesiredState: pulumi.String(\"INSTALLED\"),\n\t\t\t\t\tArtifacts: osconfig.GuestPoliciesRecipeArtifactArray{\n\t\t\t\t\t\t\u0026osconfig.GuestPoliciesRecipeArtifactArgs{\n\t\t\t\t\t\t\tId: pulumi.String(\"guest-policy-artifact-id\"),\n\t\t\t\t\t\t\tGcs: \u0026osconfig.GuestPoliciesRecipeArtifactGcsArgs{\n\t\t\t\t\t\t\t\tBucket: pulumi.String(\"my-bucket\"),\n\t\t\t\t\t\t\t\tObject: pulumi.String(\"executable.msi\"),\n\t\t\t\t\t\t\t\tGeneration: pulumi.Int(1546030865175603),\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\tInstallSteps: osconfig.GuestPoliciesRecipeInstallStepArray{\n\t\t\t\t\t\t\u0026osconfig.GuestPoliciesRecipeInstallStepArgs{\n\t\t\t\t\t\t\tMsiInstallation: \u0026osconfig.GuestPoliciesRecipeInstallStepMsiInstallationArgs{\n\t\t\t\t\t\t\t\tArtifactId: pulumi.String(\"guest-policy-artifact-id\"),\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.osconfig.GuestPolicies;\nimport com.pulumi.gcp.osconfig.GuestPoliciesArgs;\nimport com.pulumi.gcp.osconfig.inputs.GuestPoliciesAssignmentArgs;\nimport com.pulumi.gcp.osconfig.inputs.GuestPoliciesRecipeArgs;\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 guestPolicies = new GuestPolicies(\"guestPolicies\", GuestPoliciesArgs.builder()\n .guestPolicyId(\"guest-policy\")\n .assignment(GuestPoliciesAssignmentArgs.builder()\n .zones( \n \"us-east1-b\",\n \"us-east1-d\")\n .build())\n .recipes(GuestPoliciesRecipeArgs.builder()\n .name(\"guest-policy-recipe\")\n .desiredState(\"INSTALLED\")\n .artifacts(GuestPoliciesRecipeArtifactArgs.builder()\n .id(\"guest-policy-artifact-id\")\n .gcs(GuestPoliciesRecipeArtifactGcsArgs.builder()\n .bucket(\"my-bucket\")\n .object(\"executable.msi\")\n .generation(1546030865175603)\n .build())\n .build())\n .installSteps(GuestPoliciesRecipeInstallStepArgs.builder()\n .msiInstallation(GuestPoliciesRecipeInstallStepMsiInstallationArgs.builder()\n .artifactId(\"guest-policy-artifact-id\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n guestPolicies:\n type: gcp:osconfig:GuestPolicies\n name: guest_policies\n properties:\n guestPolicyId: guest-policy\n assignment:\n zones:\n - us-east1-b\n - us-east1-d\n recipes:\n - name: guest-policy-recipe\n desiredState: INSTALLED\n artifacts:\n - id: guest-policy-artifact-id\n gcs:\n bucket: my-bucket\n object: executable.msi\n generation: 1.546030865175603e+15\n installSteps:\n - msiInstallation:\n artifactId: guest-policy-artifact-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGuestPolicies can be imported using any of these accepted formats:\n\n* `projects/{{project}}/guestPolicies/{{guest_policy_id}}`\n\n* `{{project}}/{{guest_policy_id}}`\n\n* `{{guest_policy_id}}`\n\nWhen using the `pulumi import` command, GuestPolicies can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:osconfig/guestPolicies:GuestPolicies default projects/{{project}}/guestPolicies/{{guest_policy_id}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/guestPolicies:GuestPolicies default {{project}}/{{guest_policy_id}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/guestPolicies:GuestPolicies default {{guest_policy_id}}\n```\n\n", "properties": { "assignment": { "$ref": "#/types/gcp:osconfig/GuestPoliciesAssignment:GuestPoliciesAssignment", @@ -225911,7 +225911,7 @@ } }, "gcp:osconfig/osPolicyAssignment:OsPolicyAssignment": { - "description": "OS policy assignment is an API resource that is used to apply a set of OS\npolicies to a dynamically targeted group of Compute Engine VM instances. An OS\npolicy is used to define the desired state configuration for a Compute Engine VM\ninstance through a set of configuration resources that provide capabilities such\nas installing or removing software packages, or executing a script. For more\ninformation about the OS policy resource definitions and examples, see\n[OS policy and OS policy assignment](https://cloud.google.com/compute/docs/os-configuration-management/working-with-os-policies).\n\nTo get more information about OSPolicyAssignment, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/osconfig/rest/v1/projects.locations.osPolicyAssignments)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/os-configuration-management/create-os-policy-assignment)\n\n## Example Usage\n\n### Os Config Os Policy Assignment Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.osconfig.OsPolicyAssignment(\"primary\", {\n instanceFilter: {\n all: false,\n exclusionLabels: [{\n labels: {\n \"label-two\": \"value-two\",\n },\n }],\n inclusionLabels: [{\n labels: {\n \"label-one\": \"value-one\",\n },\n }],\n inventories: [{\n osShortName: \"centos\",\n osVersion: \"8.*\",\n }],\n },\n location: \"us-central1-a\",\n name: \"policy-assignment\",\n osPolicies: [{\n id: \"policy\",\n mode: \"VALIDATION\",\n resourceGroups: [{\n resources: [\n {\n id: \"apt-to-yum\",\n repository: {\n apt: {\n archiveType: \"DEB\",\n components: [\"doc\"],\n distribution: \"debian\",\n uri: \"https://atl.mirrors.clouvider.net/debian\",\n gpgKey: \".gnupg/pubring.kbx\",\n },\n },\n },\n {\n id: \"exec1\",\n exec: {\n validate: {\n interpreter: \"SHELL\",\n args: [\"arg1\"],\n file: {\n localPath: \"$HOME/script.sh\",\n },\n outputFilePath: \"$HOME/out\",\n },\n enforce: {\n interpreter: \"SHELL\",\n args: [\"arg1\"],\n file: {\n allowInsecure: true,\n remote: {\n uri: \"https://www.example.com/script.sh\",\n sha256Checksum: \"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\",\n },\n },\n outputFilePath: \"$HOME/out\",\n },\n },\n },\n ],\n inventoryFilters: [{\n osShortName: \"centos\",\n osVersion: \"8.*\",\n }],\n }],\n allowNoResourceGroupMatch: false,\n description: \"A test os policy\",\n }],\n rollout: {\n disruptionBudget: {\n percent: 100,\n },\n minWaitDuration: \"3s\",\n },\n description: \"A test os policy assignment\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.osconfig.OsPolicyAssignment(\"primary\",\n instance_filter={\n \"all\": False,\n \"exclusionLabels\": [{\n \"labels\": {\n \"label-two\": \"value-two\",\n },\n }],\n \"inclusionLabels\": [{\n \"labels\": {\n \"label-one\": \"value-one\",\n },\n }],\n \"inventories\": [{\n \"osShortName\": \"centos\",\n \"osVersion\": \"8.*\",\n }],\n },\n location=\"us-central1-a\",\n name=\"policy-assignment\",\n os_policies=[{\n \"id\": \"policy\",\n \"mode\": \"VALIDATION\",\n \"resourceGroups\": [{\n \"resources\": [\n {\n \"id\": \"apt-to-yum\",\n \"repository\": {\n \"apt\": {\n \"archiveType\": \"DEB\",\n \"components\": [\"doc\"],\n \"distribution\": \"debian\",\n \"uri\": \"https://atl.mirrors.clouvider.net/debian\",\n \"gpgKey\": \".gnupg/pubring.kbx\",\n },\n },\n },\n {\n \"id\": \"exec1\",\n \"exec\": {\n \"validate\": {\n \"interpreter\": \"SHELL\",\n \"args\": [\"arg1\"],\n \"file\": {\n \"localPath\": \"$HOME/script.sh\",\n },\n \"outputFilePath\": \"$HOME/out\",\n },\n \"enforce\": {\n \"interpreter\": \"SHELL\",\n \"args\": [\"arg1\"],\n \"file\": {\n \"allowInsecure\": True,\n \"remote\": {\n \"uri\": \"https://www.example.com/script.sh\",\n \"sha256Checksum\": \"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\",\n },\n },\n \"outputFilePath\": \"$HOME/out\",\n },\n },\n },\n ],\n \"inventoryFilters\": [{\n \"osShortName\": \"centos\",\n \"osVersion\": \"8.*\",\n }],\n }],\n \"allowNoResourceGroupMatch\": False,\n \"description\": \"A test os policy\",\n }],\n rollout={\n \"disruptionBudget\": {\n \"percent\": 100,\n },\n \"minWaitDuration\": \"3s\",\n },\n description=\"A test os policy assignment\")\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 primary = new Gcp.OsConfig.OsPolicyAssignment(\"primary\", new()\n {\n InstanceFilter = new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterArgs\n {\n All = false,\n ExclusionLabels = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterExclusionLabelArgs\n {\n Labels = \n {\n { \"label-two\", \"value-two\" },\n },\n },\n },\n InclusionLabels = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterInclusionLabelArgs\n {\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n },\n },\n Inventories = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterInventoryArgs\n {\n OsShortName = \"centos\",\n OsVersion = \"8.*\",\n },\n },\n },\n Location = \"us-central1-a\",\n Name = \"policy-assignment\",\n OsPolicies = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyArgs\n {\n Id = \"policy\",\n Mode = \"VALIDATION\",\n ResourceGroups = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupArgs\n {\n Resources = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs\n {\n Id = \"apt-to-yum\",\n Repository = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryArgs\n {\n Apt = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryAptArgs\n {\n ArchiveType = \"DEB\",\n Components = new[]\n {\n \"doc\",\n },\n Distribution = \"debian\",\n Uri = \"https://atl.mirrors.clouvider.net/debian\",\n GpgKey = \".gnupg/pubring.kbx\",\n },\n },\n },\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs\n {\n Id = \"exec1\",\n Exec = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecArgs\n {\n Validate = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs\n {\n Interpreter = \"SHELL\",\n Args = new[]\n {\n \"arg1\",\n },\n File = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs\n {\n LocalPath = \"$HOME/script.sh\",\n },\n OutputFilePath = \"$HOME/out\",\n },\n Enforce = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceArgs\n {\n Interpreter = \"SHELL\",\n Args = new[]\n {\n \"arg1\",\n },\n File = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileArgs\n {\n AllowInsecure = true,\n Remote = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileRemoteArgs\n {\n Uri = \"https://www.example.com/script.sh\",\n Sha256Checksum = \"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\",\n },\n },\n OutputFilePath = \"$HOME/out\",\n },\n },\n },\n },\n InventoryFilters = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArgs\n {\n OsShortName = \"centos\",\n OsVersion = \"8.*\",\n },\n },\n },\n },\n AllowNoResourceGroupMatch = false,\n Description = \"A test os policy\",\n },\n },\n Rollout = new Gcp.OsConfig.Inputs.OsPolicyAssignmentRolloutArgs\n {\n DisruptionBudget = new Gcp.OsConfig.Inputs.OsPolicyAssignmentRolloutDisruptionBudgetArgs\n {\n Percent = 100,\n },\n MinWaitDuration = \"3s\",\n },\n Description = \"A test os policy assignment\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/osconfig\"\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 := osconfig.NewOsPolicyAssignment(ctx, \"primary\", \u0026osconfig.OsPolicyAssignmentArgs{\n\t\t\tInstanceFilter: \u0026osconfig.OsPolicyAssignmentInstanceFilterArgs{\n\t\t\t\tAll: pulumi.Bool(false),\n\t\t\t\tExclusionLabels: osconfig.OsPolicyAssignmentInstanceFilterExclusionLabelArray{\n\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentInstanceFilterExclusionLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"label-two\": pulumi.String(\"value-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInclusionLabels: osconfig.OsPolicyAssignmentInstanceFilterInclusionLabelArray{\n\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentInstanceFilterInclusionLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInventories: osconfig.OsPolicyAssignmentInstanceFilterInventoryArray{\n\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentInstanceFilterInventoryArgs{\n\t\t\t\t\t\tOsShortName: pulumi.String(\"centos\"),\n\t\t\t\t\t\tOsVersion: pulumi.String(\"8.*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tName: pulumi.String(\"policy-assignment\"),\n\t\t\tOsPolicies: osconfig.OsPolicyAssignmentOsPolicyArray{\n\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"policy\"),\n\t\t\t\t\tMode: pulumi.String(\"VALIDATION\"),\n\t\t\t\t\tResourceGroups: osconfig.OsPolicyAssignmentOsPolicyResourceGroupArray{\n\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupArgs{\n\t\t\t\t\t\t\tResources: osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceArray{\n\t\t\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs{\n\t\t\t\t\t\t\t\t\tId: pulumi.String(\"apt-to-yum\"),\n\t\t\t\t\t\t\t\t\tRepository: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryArgs{\n\t\t\t\t\t\t\t\t\t\tApt: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryAptArgs{\n\t\t\t\t\t\t\t\t\t\t\tArchiveType: pulumi.String(\"DEB\"),\n\t\t\t\t\t\t\t\t\t\t\tComponents: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"doc\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tDistribution: pulumi.String(\"debian\"),\n\t\t\t\t\t\t\t\t\t\t\tUri: pulumi.String(\"https://atl.mirrors.clouvider.net/debian\"),\n\t\t\t\t\t\t\t\t\t\t\tGpgKey: pulumi.String(\".gnupg/pubring.kbx\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs{\n\t\t\t\t\t\t\t\t\tId: pulumi.String(\"exec1\"),\n\t\t\t\t\t\t\t\t\tExec: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecArgs{\n\t\t\t\t\t\t\t\t\t\tValidate: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs{\n\t\t\t\t\t\t\t\t\t\t\tInterpreter: pulumi.String(\"SHELL\"),\n\t\t\t\t\t\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"arg1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tFile: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tLocalPath: pulumi.String(\"$HOME/script.sh\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tOutputFilePath: pulumi.String(\"$HOME/out\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tEnforce: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceArgs{\n\t\t\t\t\t\t\t\t\t\t\tInterpreter: pulumi.String(\"SHELL\"),\n\t\t\t\t\t\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"arg1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tFile: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tAllowInsecure: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t\tRemote: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileRemoteArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tUri: pulumi.String(\"https://www.example.com/script.sh\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tSha256Checksum: pulumi.String(\"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tOutputFilePath: pulumi.String(\"$HOME/out\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tInventoryFilters: osconfig.OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArray{\n\t\t\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArgs{\n\t\t\t\t\t\t\t\t\tOsShortName: pulumi.String(\"centos\"),\n\t\t\t\t\t\t\t\t\tOsVersion: pulumi.String(\"8.*\"),\n\t\t\t\t\t\t\t\t},\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\tAllowNoResourceGroupMatch: pulumi.Bool(false),\n\t\t\t\t\tDescription: pulumi.String(\"A test os policy\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRollout: \u0026osconfig.OsPolicyAssignmentRolloutArgs{\n\t\t\t\tDisruptionBudget: \u0026osconfig.OsPolicyAssignmentRolloutDisruptionBudgetArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t},\n\t\t\t\tMinWaitDuration: pulumi.String(\"3s\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A test os policy assignment\"),\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.osconfig.OsPolicyAssignment;\nimport com.pulumi.gcp.osconfig.OsPolicyAssignmentArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentOsPolicyArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentRolloutArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentRolloutDisruptionBudgetArgs;\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 primary = new OsPolicyAssignment(\"primary\", OsPolicyAssignmentArgs.builder()\n .instanceFilter(OsPolicyAssignmentInstanceFilterArgs.builder()\n .all(false)\n .exclusionLabels(OsPolicyAssignmentInstanceFilterExclusionLabelArgs.builder()\n .labels(Map.of(\"label-two\", \"value-two\"))\n .build())\n .inclusionLabels(OsPolicyAssignmentInstanceFilterInclusionLabelArgs.builder()\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build())\n .inventories(OsPolicyAssignmentInstanceFilterInventoryArgs.builder()\n .osShortName(\"centos\")\n .osVersion(\"8.*\")\n .build())\n .build())\n .location(\"us-central1-a\")\n .name(\"policy-assignment\")\n .osPolicies(OsPolicyAssignmentOsPolicyArgs.builder()\n .id(\"policy\")\n .mode(\"VALIDATION\")\n .resourceGroups(OsPolicyAssignmentOsPolicyResourceGroupArgs.builder()\n .resources( \n OsPolicyAssignmentOsPolicyResourceGroupResourceArgs.builder()\n .id(\"apt-to-yum\")\n .repository(OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryArgs.builder()\n .apt(OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryAptArgs.builder()\n .archiveType(\"DEB\")\n .components(\"doc\")\n .distribution(\"debian\")\n .uri(\"https://atl.mirrors.clouvider.net/debian\")\n .gpgKey(\".gnupg/pubring.kbx\")\n .build())\n .build())\n .build(),\n OsPolicyAssignmentOsPolicyResourceGroupResourceArgs.builder()\n .id(\"exec1\")\n .exec(OsPolicyAssignmentOsPolicyResourceGroupResourceExecArgs.builder()\n .validate(OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs.builder()\n .interpreter(\"SHELL\")\n .args(\"arg1\")\n .file(OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs.builder()\n .localPath(\"$HOME/script.sh\")\n .build())\n .outputFilePath(\"$HOME/out\")\n .build())\n .enforce(OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceArgs.builder()\n .interpreter(\"SHELL\")\n .args(\"arg1\")\n .file(OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileArgs.builder()\n .allowInsecure(true)\n .remote(OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileRemoteArgs.builder()\n .uri(\"https://www.example.com/script.sh\")\n .sha256Checksum(\"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\")\n .build())\n .build())\n .outputFilePath(\"$HOME/out\")\n .build())\n .build())\n .build())\n .inventoryFilters(OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArgs.builder()\n .osShortName(\"centos\")\n .osVersion(\"8.*\")\n .build())\n .build())\n .allowNoResourceGroupMatch(false)\n .description(\"A test os policy\")\n .build())\n .rollout(OsPolicyAssignmentRolloutArgs.builder()\n .disruptionBudget(OsPolicyAssignmentRolloutDisruptionBudgetArgs.builder()\n .percent(100)\n .build())\n .minWaitDuration(\"3s\")\n .build())\n .description(\"A test os policy assignment\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:osconfig:OsPolicyAssignment\n properties:\n instanceFilter:\n all: false\n exclusionLabels:\n - labels:\n label-two: value-two\n inclusionLabels:\n - labels:\n label-one: value-one\n inventories:\n - osShortName: centos\n osVersion: 8.*\n location: us-central1-a\n name: policy-assignment\n osPolicies:\n - id: policy\n mode: VALIDATION\n resourceGroups:\n - resources:\n - id: apt-to-yum\n repository:\n apt:\n archiveType: DEB\n components:\n - doc\n distribution: debian\n uri: https://atl.mirrors.clouvider.net/debian\n gpgKey: .gnupg/pubring.kbx\n - id: exec1\n exec:\n validate:\n interpreter: SHELL\n args:\n - arg1\n file:\n localPath: $HOME/script.sh\n outputFilePath: $HOME/out\n enforce:\n interpreter: SHELL\n args:\n - arg1\n file:\n allowInsecure: true\n remote:\n uri: https://www.example.com/script.sh\n sha256Checksum: c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\n outputFilePath: $HOME/out\n inventoryFilters:\n - osShortName: centos\n osVersion: 8.*\n allowNoResourceGroupMatch: false\n description: A test os policy\n rollout:\n disruptionBudget:\n percent: 100\n minWaitDuration: 3s\n description: A test os policy assignment\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOSPolicyAssignment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/osPolicyAssignments/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, OSPolicyAssignment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:osconfig/osPolicyAssignment:OsPolicyAssignment default projects/{{project}}/locations/{{location}}/osPolicyAssignments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/osPolicyAssignment:OsPolicyAssignment default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/osPolicyAssignment:OsPolicyAssignment default {{location}}/{{name}}\n```\n\n", + "description": "OS policy assignment is an API resource that is used to apply a set of OS\npolicies to a dynamically targeted group of Compute Engine VM instances. An OS\npolicy is used to define the desired state configuration for a Compute Engine VM\ninstance through a set of configuration resources that provide capabilities such\nas installing or removing software packages, or executing a script. For more\ninformation about the OS policy resource definitions and examples, see\n[OS policy and OS policy assignment](https://cloud.google.com/compute/docs/os-configuration-management/working-with-os-policies).\n\nTo get more information about OSPolicyAssignment, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/osconfig/rest/v1/projects.locations.osPolicyAssignments)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/os-configuration-management/create-os-policy-assignment)\n\n## Example Usage\n\n### Os Config Os Policy Assignment Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.osconfig.OsPolicyAssignment(\"primary\", {\n instanceFilter: {\n all: false,\n exclusionLabels: [{\n labels: {\n \"label-two\": \"value-two\",\n },\n }],\n inclusionLabels: [{\n labels: {\n \"label-one\": \"value-one\",\n },\n }],\n inventories: [{\n osShortName: \"centos\",\n osVersion: \"8.*\",\n }],\n },\n location: \"us-central1-a\",\n name: \"policy-assignment\",\n osPolicies: [{\n id: \"policy\",\n mode: \"VALIDATION\",\n resourceGroups: [{\n resources: [\n {\n id: \"apt-to-yum\",\n repository: {\n apt: {\n archiveType: \"DEB\",\n components: [\"doc\"],\n distribution: \"debian\",\n uri: \"https://atl.mirrors.clouvider.net/debian\",\n gpgKey: \".gnupg/pubring.kbx\",\n },\n },\n },\n {\n id: \"exec1\",\n exec: {\n validate: {\n interpreter: \"SHELL\",\n args: [\"arg1\"],\n file: {\n localPath: \"$HOME/script.sh\",\n },\n outputFilePath: \"$HOME/out\",\n },\n enforce: {\n interpreter: \"SHELL\",\n args: [\"arg1\"],\n file: {\n allowInsecure: true,\n remote: {\n uri: \"https://www.example.com/script.sh\",\n sha256Checksum: \"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\",\n },\n },\n outputFilePath: \"$HOME/out\",\n },\n },\n },\n ],\n inventoryFilters: [{\n osShortName: \"centos\",\n osVersion: \"8.*\",\n }],\n }],\n allowNoResourceGroupMatch: false,\n description: \"A test os policy\",\n }],\n rollout: {\n disruptionBudget: {\n percent: 100,\n },\n minWaitDuration: \"3s\",\n },\n description: \"A test os policy assignment\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.osconfig.OsPolicyAssignment(\"primary\",\n instance_filter={\n \"all\": False,\n \"exclusion_labels\": [{\n \"labels\": {\n \"label_two\": \"value-two\",\n },\n }],\n \"inclusion_labels\": [{\n \"labels\": {\n \"label_one\": \"value-one\",\n },\n }],\n \"inventories\": [{\n \"os_short_name\": \"centos\",\n \"os_version\": \"8.*\",\n }],\n },\n location=\"us-central1-a\",\n name=\"policy-assignment\",\n os_policies=[{\n \"id\": \"policy\",\n \"mode\": \"VALIDATION\",\n \"resource_groups\": [{\n \"resources\": [\n {\n \"id\": \"apt-to-yum\",\n \"repository\": {\n \"apt\": {\n \"archive_type\": \"DEB\",\n \"components\": [\"doc\"],\n \"distribution\": \"debian\",\n \"uri\": \"https://atl.mirrors.clouvider.net/debian\",\n \"gpg_key\": \".gnupg/pubring.kbx\",\n },\n },\n },\n {\n \"id\": \"exec1\",\n \"exec_\": {\n \"validate\": {\n \"interpreter\": \"SHELL\",\n \"args\": [\"arg1\"],\n \"file\": {\n \"local_path\": \"$HOME/script.sh\",\n },\n \"output_file_path\": \"$HOME/out\",\n },\n \"enforce\": {\n \"interpreter\": \"SHELL\",\n \"args\": [\"arg1\"],\n \"file\": {\n \"allow_insecure\": True,\n \"remote\": {\n \"uri\": \"https://www.example.com/script.sh\",\n \"sha256_checksum\": \"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\",\n },\n },\n \"output_file_path\": \"$HOME/out\",\n },\n },\n },\n ],\n \"inventory_filters\": [{\n \"os_short_name\": \"centos\",\n \"os_version\": \"8.*\",\n }],\n }],\n \"allow_no_resource_group_match\": False,\n \"description\": \"A test os policy\",\n }],\n rollout={\n \"disruption_budget\": {\n \"percent\": 100,\n },\n \"min_wait_duration\": \"3s\",\n },\n description=\"A test os policy assignment\")\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 primary = new Gcp.OsConfig.OsPolicyAssignment(\"primary\", new()\n {\n InstanceFilter = new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterArgs\n {\n All = false,\n ExclusionLabels = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterExclusionLabelArgs\n {\n Labels = \n {\n { \"label-two\", \"value-two\" },\n },\n },\n },\n InclusionLabels = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterInclusionLabelArgs\n {\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n },\n },\n Inventories = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterInventoryArgs\n {\n OsShortName = \"centos\",\n OsVersion = \"8.*\",\n },\n },\n },\n Location = \"us-central1-a\",\n Name = \"policy-assignment\",\n OsPolicies = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyArgs\n {\n Id = \"policy\",\n Mode = \"VALIDATION\",\n ResourceGroups = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupArgs\n {\n Resources = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs\n {\n Id = \"apt-to-yum\",\n Repository = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryArgs\n {\n Apt = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryAptArgs\n {\n ArchiveType = \"DEB\",\n Components = new[]\n {\n \"doc\",\n },\n Distribution = \"debian\",\n Uri = \"https://atl.mirrors.clouvider.net/debian\",\n GpgKey = \".gnupg/pubring.kbx\",\n },\n },\n },\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs\n {\n Id = \"exec1\",\n Exec = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecArgs\n {\n Validate = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs\n {\n Interpreter = \"SHELL\",\n Args = new[]\n {\n \"arg1\",\n },\n File = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs\n {\n LocalPath = \"$HOME/script.sh\",\n },\n OutputFilePath = \"$HOME/out\",\n },\n Enforce = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceArgs\n {\n Interpreter = \"SHELL\",\n Args = new[]\n {\n \"arg1\",\n },\n File = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileArgs\n {\n AllowInsecure = true,\n Remote = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileRemoteArgs\n {\n Uri = \"https://www.example.com/script.sh\",\n Sha256Checksum = \"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\",\n },\n },\n OutputFilePath = \"$HOME/out\",\n },\n },\n },\n },\n InventoryFilters = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArgs\n {\n OsShortName = \"centos\",\n OsVersion = \"8.*\",\n },\n },\n },\n },\n AllowNoResourceGroupMatch = false,\n Description = \"A test os policy\",\n },\n },\n Rollout = new Gcp.OsConfig.Inputs.OsPolicyAssignmentRolloutArgs\n {\n DisruptionBudget = new Gcp.OsConfig.Inputs.OsPolicyAssignmentRolloutDisruptionBudgetArgs\n {\n Percent = 100,\n },\n MinWaitDuration = \"3s\",\n },\n Description = \"A test os policy assignment\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/osconfig\"\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 := osconfig.NewOsPolicyAssignment(ctx, \"primary\", \u0026osconfig.OsPolicyAssignmentArgs{\n\t\t\tInstanceFilter: \u0026osconfig.OsPolicyAssignmentInstanceFilterArgs{\n\t\t\t\tAll: pulumi.Bool(false),\n\t\t\t\tExclusionLabels: osconfig.OsPolicyAssignmentInstanceFilterExclusionLabelArray{\n\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentInstanceFilterExclusionLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"label-two\": pulumi.String(\"value-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInclusionLabels: osconfig.OsPolicyAssignmentInstanceFilterInclusionLabelArray{\n\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentInstanceFilterInclusionLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInventories: osconfig.OsPolicyAssignmentInstanceFilterInventoryArray{\n\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentInstanceFilterInventoryArgs{\n\t\t\t\t\t\tOsShortName: pulumi.String(\"centos\"),\n\t\t\t\t\t\tOsVersion: pulumi.String(\"8.*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tName: pulumi.String(\"policy-assignment\"),\n\t\t\tOsPolicies: osconfig.OsPolicyAssignmentOsPolicyArray{\n\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"policy\"),\n\t\t\t\t\tMode: pulumi.String(\"VALIDATION\"),\n\t\t\t\t\tResourceGroups: osconfig.OsPolicyAssignmentOsPolicyResourceGroupArray{\n\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupArgs{\n\t\t\t\t\t\t\tResources: osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceArray{\n\t\t\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs{\n\t\t\t\t\t\t\t\t\tId: pulumi.String(\"apt-to-yum\"),\n\t\t\t\t\t\t\t\t\tRepository: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryArgs{\n\t\t\t\t\t\t\t\t\t\tApt: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryAptArgs{\n\t\t\t\t\t\t\t\t\t\t\tArchiveType: pulumi.String(\"DEB\"),\n\t\t\t\t\t\t\t\t\t\t\tComponents: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"doc\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tDistribution: pulumi.String(\"debian\"),\n\t\t\t\t\t\t\t\t\t\t\tUri: pulumi.String(\"https://atl.mirrors.clouvider.net/debian\"),\n\t\t\t\t\t\t\t\t\t\t\tGpgKey: pulumi.String(\".gnupg/pubring.kbx\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs{\n\t\t\t\t\t\t\t\t\tId: pulumi.String(\"exec1\"),\n\t\t\t\t\t\t\t\t\tExec: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecArgs{\n\t\t\t\t\t\t\t\t\t\tValidate: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs{\n\t\t\t\t\t\t\t\t\t\t\tInterpreter: pulumi.String(\"SHELL\"),\n\t\t\t\t\t\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"arg1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tFile: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tLocalPath: pulumi.String(\"$HOME/script.sh\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tOutputFilePath: pulumi.String(\"$HOME/out\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tEnforce: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceArgs{\n\t\t\t\t\t\t\t\t\t\t\tInterpreter: pulumi.String(\"SHELL\"),\n\t\t\t\t\t\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"arg1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tFile: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tAllowInsecure: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t\tRemote: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileRemoteArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tUri: pulumi.String(\"https://www.example.com/script.sh\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tSha256Checksum: pulumi.String(\"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tOutputFilePath: pulumi.String(\"$HOME/out\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tInventoryFilters: osconfig.OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArray{\n\t\t\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArgs{\n\t\t\t\t\t\t\t\t\tOsShortName: pulumi.String(\"centos\"),\n\t\t\t\t\t\t\t\t\tOsVersion: pulumi.String(\"8.*\"),\n\t\t\t\t\t\t\t\t},\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\tAllowNoResourceGroupMatch: pulumi.Bool(false),\n\t\t\t\t\tDescription: pulumi.String(\"A test os policy\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRollout: \u0026osconfig.OsPolicyAssignmentRolloutArgs{\n\t\t\t\tDisruptionBudget: \u0026osconfig.OsPolicyAssignmentRolloutDisruptionBudgetArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t},\n\t\t\t\tMinWaitDuration: pulumi.String(\"3s\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A test os policy assignment\"),\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.osconfig.OsPolicyAssignment;\nimport com.pulumi.gcp.osconfig.OsPolicyAssignmentArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentOsPolicyArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentRolloutArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentRolloutDisruptionBudgetArgs;\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 primary = new OsPolicyAssignment(\"primary\", OsPolicyAssignmentArgs.builder()\n .instanceFilter(OsPolicyAssignmentInstanceFilterArgs.builder()\n .all(false)\n .exclusionLabels(OsPolicyAssignmentInstanceFilterExclusionLabelArgs.builder()\n .labels(Map.of(\"label-two\", \"value-two\"))\n .build())\n .inclusionLabels(OsPolicyAssignmentInstanceFilterInclusionLabelArgs.builder()\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build())\n .inventories(OsPolicyAssignmentInstanceFilterInventoryArgs.builder()\n .osShortName(\"centos\")\n .osVersion(\"8.*\")\n .build())\n .build())\n .location(\"us-central1-a\")\n .name(\"policy-assignment\")\n .osPolicies(OsPolicyAssignmentOsPolicyArgs.builder()\n .id(\"policy\")\n .mode(\"VALIDATION\")\n .resourceGroups(OsPolicyAssignmentOsPolicyResourceGroupArgs.builder()\n .resources( \n OsPolicyAssignmentOsPolicyResourceGroupResourceArgs.builder()\n .id(\"apt-to-yum\")\n .repository(OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryArgs.builder()\n .apt(OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryAptArgs.builder()\n .archiveType(\"DEB\")\n .components(\"doc\")\n .distribution(\"debian\")\n .uri(\"https://atl.mirrors.clouvider.net/debian\")\n .gpgKey(\".gnupg/pubring.kbx\")\n .build())\n .build())\n .build(),\n OsPolicyAssignmentOsPolicyResourceGroupResourceArgs.builder()\n .id(\"exec1\")\n .exec(OsPolicyAssignmentOsPolicyResourceGroupResourceExecArgs.builder()\n .validate(OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs.builder()\n .interpreter(\"SHELL\")\n .args(\"arg1\")\n .file(OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs.builder()\n .localPath(\"$HOME/script.sh\")\n .build())\n .outputFilePath(\"$HOME/out\")\n .build())\n .enforce(OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceArgs.builder()\n .interpreter(\"SHELL\")\n .args(\"arg1\")\n .file(OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileArgs.builder()\n .allowInsecure(true)\n .remote(OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileRemoteArgs.builder()\n .uri(\"https://www.example.com/script.sh\")\n .sha256Checksum(\"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\")\n .build())\n .build())\n .outputFilePath(\"$HOME/out\")\n .build())\n .build())\n .build())\n .inventoryFilters(OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArgs.builder()\n .osShortName(\"centos\")\n .osVersion(\"8.*\")\n .build())\n .build())\n .allowNoResourceGroupMatch(false)\n .description(\"A test os policy\")\n .build())\n .rollout(OsPolicyAssignmentRolloutArgs.builder()\n .disruptionBudget(OsPolicyAssignmentRolloutDisruptionBudgetArgs.builder()\n .percent(100)\n .build())\n .minWaitDuration(\"3s\")\n .build())\n .description(\"A test os policy assignment\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:osconfig:OsPolicyAssignment\n properties:\n instanceFilter:\n all: false\n exclusionLabels:\n - labels:\n label-two: value-two\n inclusionLabels:\n - labels:\n label-one: value-one\n inventories:\n - osShortName: centos\n osVersion: 8.*\n location: us-central1-a\n name: policy-assignment\n osPolicies:\n - id: policy\n mode: VALIDATION\n resourceGroups:\n - resources:\n - id: apt-to-yum\n repository:\n apt:\n archiveType: DEB\n components:\n - doc\n distribution: debian\n uri: https://atl.mirrors.clouvider.net/debian\n gpgKey: .gnupg/pubring.kbx\n - id: exec1\n exec:\n validate:\n interpreter: SHELL\n args:\n - arg1\n file:\n localPath: $HOME/script.sh\n outputFilePath: $HOME/out\n enforce:\n interpreter: SHELL\n args:\n - arg1\n file:\n allowInsecure: true\n remote:\n uri: https://www.example.com/script.sh\n sha256Checksum: c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\n outputFilePath: $HOME/out\n inventoryFilters:\n - osShortName: centos\n osVersion: 8.*\n allowNoResourceGroupMatch: false\n description: A test os policy\n rollout:\n disruptionBudget:\n percent: 100\n minWaitDuration: 3s\n description: A test os policy assignment\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOSPolicyAssignment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/osPolicyAssignments/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, OSPolicyAssignment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:osconfig/osPolicyAssignment:OsPolicyAssignment default projects/{{project}}/locations/{{location}}/osPolicyAssignments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/osPolicyAssignment:OsPolicyAssignment default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/osPolicyAssignment:OsPolicyAssignment default {{location}}/{{name}}\n```\n\n", "properties": { "baseline": { "type": "boolean", @@ -226121,7 +226121,7 @@ } }, "gcp:osconfig/patchDeployment:PatchDeployment": { - "description": "Patch deployments are configurations that individual patch jobs use to complete a patch.\nThese configurations include instance filter, package repository settings, and a schedule.\n\n\nTo get more information about PatchDeployment, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/osconfig/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/os-patch-management)\n\n## Example Usage\n\n### Os Config Patch Deployment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n all: true,\n },\n oneTimeSchedule: {\n executeTime: \"2999-10-10T10:10:10.045123456Z\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"all\": True,\n },\n one_time_schedule={\n \"executeTime\": \"2999-10-10T10:10:10.045123456Z\",\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 patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n All = true,\n },\n OneTimeSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentOneTimeScheduleArgs\n {\n ExecuteTime = \"2999-10-10T10:10:10.045123456Z\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/osconfig\"\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 := osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tAll: pulumi.Bool(true),\n\t\t\t},\n\t\t\tOneTimeSchedule: \u0026osconfig.PatchDeploymentOneTimeScheduleArgs{\n\t\t\t\tExecuteTime: pulumi.String(\"2999-10-10T10:10:10.045123456Z\"),\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.osconfig.PatchDeployment;\nimport com.pulumi.gcp.osconfig.PatchDeploymentArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentOneTimeScheduleArgs;\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 patch = new PatchDeployment(\"patch\", PatchDeploymentArgs.builder()\n .patchDeploymentId(\"patch-deploy\")\n .instanceFilter(PatchDeploymentInstanceFilterArgs.builder()\n .all(true)\n .build())\n .oneTimeSchedule(PatchDeploymentOneTimeScheduleArgs.builder()\n .executeTime(\"2999-10-10T10:10:10.045123456Z\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n all: true\n oneTimeSchedule:\n executeTime: 2999-10-10T10:10:10.045123456Z\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Patch Deployment Daily\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n all: true,\n },\n recurringSchedule: {\n timeZone: {\n id: \"America/New_York\",\n },\n timeOfDay: {\n hours: 0,\n minutes: 30,\n seconds: 30,\n nanos: 20,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"all\": True,\n },\n recurring_schedule={\n \"timeZone\": {\n \"id\": \"America/New_York\",\n },\n \"timeOfDay\": {\n \"hours\": 0,\n \"minutes\": 30,\n \"seconds\": 30,\n \"nanos\": 20,\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 patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n All = true,\n },\n RecurringSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleArgs\n {\n TimeZone = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeZoneArgs\n {\n Id = \"America/New_York\",\n },\n TimeOfDay = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs\n {\n Hours = 0,\n Minutes = 30,\n Seconds = 30,\n Nanos = 20,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/osconfig\"\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 := osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tAll: pulumi.Bool(true),\n\t\t\t},\n\t\t\tRecurringSchedule: \u0026osconfig.PatchDeploymentRecurringScheduleArgs{\n\t\t\t\tTimeZone: \u0026osconfig.PatchDeploymentRecurringScheduleTimeZoneArgs{\n\t\t\t\t\tId: pulumi.String(\"America/New_York\"),\n\t\t\t\t},\n\t\t\t\tTimeOfDay: \u0026osconfig.PatchDeploymentRecurringScheduleTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\tSeconds: pulumi.Int(30),\n\t\t\t\t\tNanos: pulumi.Int(20),\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.osconfig.PatchDeployment;\nimport com.pulumi.gcp.osconfig.PatchDeploymentArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeZoneArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs;\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 patch = new PatchDeployment(\"patch\", PatchDeploymentArgs.builder()\n .patchDeploymentId(\"patch-deploy\")\n .instanceFilter(PatchDeploymentInstanceFilterArgs.builder()\n .all(true)\n .build())\n .recurringSchedule(PatchDeploymentRecurringScheduleArgs.builder()\n .timeZone(PatchDeploymentRecurringScheduleTimeZoneArgs.builder()\n .id(\"America/New_York\")\n .build())\n .timeOfDay(PatchDeploymentRecurringScheduleTimeOfDayArgs.builder()\n .hours(0)\n .minutes(30)\n .seconds(30)\n .nanos(20)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n all: true\n recurringSchedule:\n timeZone:\n id: America/New_York\n timeOfDay:\n hours: 0\n minutes: 30\n seconds: 30\n nanos: 20\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Patch Deployment Daily Midnight\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n all: true,\n },\n recurringSchedule: {\n timeZone: {\n id: \"America/New_York\",\n },\n timeOfDay: {\n hours: 0,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"all\": True,\n },\n recurring_schedule={\n \"timeZone\": {\n \"id\": \"America/New_York\",\n },\n \"timeOfDay\": {\n \"hours\": 0,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\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 patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n All = true,\n },\n RecurringSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleArgs\n {\n TimeZone = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeZoneArgs\n {\n Id = \"America/New_York\",\n },\n TimeOfDay = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs\n {\n Hours = 0,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/osconfig\"\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 := osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tAll: pulumi.Bool(true),\n\t\t\t},\n\t\t\tRecurringSchedule: \u0026osconfig.PatchDeploymentRecurringScheduleArgs{\n\t\t\t\tTimeZone: \u0026osconfig.PatchDeploymentRecurringScheduleTimeZoneArgs{\n\t\t\t\t\tId: pulumi.String(\"America/New_York\"),\n\t\t\t\t},\n\t\t\t\tTimeOfDay: \u0026osconfig.PatchDeploymentRecurringScheduleTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\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.osconfig.PatchDeployment;\nimport com.pulumi.gcp.osconfig.PatchDeploymentArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeZoneArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs;\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 patch = new PatchDeployment(\"patch\", PatchDeploymentArgs.builder()\n .patchDeploymentId(\"patch-deploy\")\n .instanceFilter(PatchDeploymentInstanceFilterArgs.builder()\n .all(true)\n .build())\n .recurringSchedule(PatchDeploymentRecurringScheduleArgs.builder()\n .timeZone(PatchDeploymentRecurringScheduleTimeZoneArgs.builder()\n .id(\"America/New_York\")\n .build())\n .timeOfDay(PatchDeploymentRecurringScheduleTimeOfDayArgs.builder()\n .hours(0)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n all: true\n recurringSchedule:\n timeZone:\n id: America/New_York\n timeOfDay:\n hours: 0\n minutes: 0\n seconds: 0\n nanos: 0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Patch Deployment Instance\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst foobar = new gcp.compute.Instance(\"foobar\", {\n name: \"patch-deploy-inst\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n metadata: {\n foo: \"bar\",\n },\n});\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n instances: [foobar.id],\n },\n patchConfig: {\n yum: {\n security: true,\n minimal: true,\n excludes: [\"bash\"],\n },\n },\n recurringSchedule: {\n timeZone: {\n id: \"America/New_York\",\n },\n timeOfDay: {\n hours: 0,\n minutes: 30,\n seconds: 30,\n nanos: 20,\n },\n monthly: {\n monthDay: 1,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nfoobar = gcp.compute.Instance(\"foobar\",\n name=\"patch-deploy-inst\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n boot_disk={\n \"initializeParams\": {\n \"image\": my_image.self_link,\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }],\n metadata={\n \"foo\": \"bar\",\n })\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"instances\": [foobar.id],\n },\n patch_config={\n \"yum\": {\n \"security\": True,\n \"minimal\": True,\n \"excludes\": [\"bash\"],\n },\n },\n recurring_schedule={\n \"timeZone\": {\n \"id\": \"America/New_York\",\n },\n \"timeOfDay\": {\n \"hours\": 0,\n \"minutes\": 30,\n \"seconds\": 30,\n \"nanos\": 20,\n },\n \"monthly\": {\n \"monthDay\": 1,\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 myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var foobar = new Gcp.Compute.Instance(\"foobar\", new()\n {\n Name = \"patch-deploy-inst\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n Instances = new[]\n {\n foobar.Id,\n },\n },\n PatchConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigArgs\n {\n Yum = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigYumArgs\n {\n Security = true,\n Minimal = true,\n Excludes = new[]\n {\n \"bash\",\n },\n },\n },\n RecurringSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleArgs\n {\n TimeZone = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeZoneArgs\n {\n Id = \"America/New_York\",\n },\n TimeOfDay = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs\n {\n Hours = 0,\n Minutes = 30,\n Seconds = 30,\n Nanos = 20,\n },\n Monthly = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleMonthlyArgs\n {\n MonthDay = 1,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/osconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobar, err := compute.NewInstance(ctx, \"foobar\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"patch-deploy-inst\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\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},\n\t\t\t},\n\t\t\tMetadata: 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\t_, err = osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tInstances: pulumi.StringArray{\n\t\t\t\t\tfoobar.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPatchConfig: \u0026osconfig.PatchDeploymentPatchConfigArgs{\n\t\t\t\tYum: \u0026osconfig.PatchDeploymentPatchConfigYumArgs{\n\t\t\t\t\tSecurity: pulumi.Bool(true),\n\t\t\t\t\tMinimal: pulumi.Bool(true),\n\t\t\t\t\tExcludes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"bash\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRecurringSchedule: \u0026osconfig.PatchDeploymentRecurringScheduleArgs{\n\t\t\t\tTimeZone: \u0026osconfig.PatchDeploymentRecurringScheduleTimeZoneArgs{\n\t\t\t\t\tId: pulumi.String(\"America/New_York\"),\n\t\t\t\t},\n\t\t\t\tTimeOfDay: \u0026osconfig.PatchDeploymentRecurringScheduleTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\tSeconds: pulumi.Int(30),\n\t\t\t\t\tNanos: pulumi.Int(20),\n\t\t\t\t},\n\t\t\t\tMonthly: \u0026osconfig.PatchDeploymentRecurringScheduleMonthlyArgs{\n\t\t\t\t\tMonthDay: pulumi.Int(1),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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.osconfig.PatchDeployment;\nimport com.pulumi.gcp.osconfig.PatchDeploymentArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigYumArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeZoneArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleMonthlyArgs;\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 myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var foobar = new Instance(\"foobar\", InstanceArgs.builder()\n .name(\"patch-deploy-inst\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .build());\n\n var patch = new PatchDeployment(\"patch\", PatchDeploymentArgs.builder()\n .patchDeploymentId(\"patch-deploy\")\n .instanceFilter(PatchDeploymentInstanceFilterArgs.builder()\n .instances(foobar.id())\n .build())\n .patchConfig(PatchDeploymentPatchConfigArgs.builder()\n .yum(PatchDeploymentPatchConfigYumArgs.builder()\n .security(true)\n .minimal(true)\n .excludes(\"bash\")\n .build())\n .build())\n .recurringSchedule(PatchDeploymentRecurringScheduleArgs.builder()\n .timeZone(PatchDeploymentRecurringScheduleTimeZoneArgs.builder()\n .id(\"America/New_York\")\n .build())\n .timeOfDay(PatchDeploymentRecurringScheduleTimeOfDayArgs.builder()\n .hours(0)\n .minutes(30)\n .seconds(30)\n .nanos(20)\n .build())\n .monthly(PatchDeploymentRecurringScheduleMonthlyArgs.builder()\n .monthDay(1)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:Instance\n properties:\n name: patch-deploy-inst\n machineType: e2-medium\n zone: us-central1-a\n canIpForward: false\n tags:\n - foo\n - bar\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\n networkInterfaces:\n - network: default\n metadata:\n foo: bar\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n instances:\n - ${foobar.id}\n patchConfig:\n yum:\n security: true\n minimal: true\n excludes:\n - bash\n recurringSchedule:\n timeZone:\n id: America/New_York\n timeOfDay:\n hours: 0\n minutes: 30\n seconds: 30\n nanos: 20\n monthly:\n monthDay: 1\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Patch Deployment Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n groupLabels: [{\n labels: {\n env: \"dev\",\n app: \"web\",\n },\n }],\n instanceNamePrefixes: [\"test-\"],\n zones: [\n \"us-central1-a\",\n \"us-central-1c\",\n ],\n },\n patchConfig: {\n migInstancesAllowed: true,\n rebootConfig: \"ALWAYS\",\n apt: {\n type: \"DIST\",\n excludes: [\"python\"],\n },\n yum: {\n security: true,\n minimal: true,\n excludes: [\"bash\"],\n },\n goo: {\n enabled: true,\n },\n zypper: {\n categories: [\"security\"],\n },\n windowsUpdate: {\n classifications: [\n \"CRITICAL\",\n \"SECURITY\",\n \"UPDATE\",\n ],\n excludes: [\"5012170\"],\n },\n preStep: {\n linuxExecStepConfig: {\n allowedSuccessCodes: [\n 0,\n 3,\n ],\n localPath: \"/tmp/pre_patch_script.sh\",\n },\n windowsExecStepConfig: {\n interpreter: \"SHELL\",\n allowedSuccessCodes: [\n 0,\n 2,\n ],\n localPath: \"C:\\\\Users\\\\user\\\\pre-patch-script.cmd\",\n },\n },\n postStep: {\n linuxExecStepConfig: {\n gcsObject: {\n bucket: \"my-patch-scripts\",\n generationNumber: \"1523477886880\",\n object: \"linux/post_patch_script\",\n },\n },\n windowsExecStepConfig: {\n interpreter: \"POWERSHELL\",\n gcsObject: {\n bucket: \"my-patch-scripts\",\n generationNumber: \"135920493447\",\n object: \"windows/post_patch_script.ps1\",\n },\n },\n },\n },\n duration: \"10s\",\n recurringSchedule: {\n timeZone: {\n id: \"America/New_York\",\n },\n timeOfDay: {\n hours: 0,\n minutes: 30,\n seconds: 30,\n nanos: 20,\n },\n monthly: {\n weekDayOfMonth: {\n weekOrdinal: -1,\n dayOfWeek: \"TUESDAY\",\n dayOffset: 3,\n },\n },\n },\n rollout: {\n mode: \"ZONE_BY_ZONE\",\n disruptionBudget: {\n fixed: 1,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"groupLabels\": [{\n \"labels\": {\n \"env\": \"dev\",\n \"app\": \"web\",\n },\n }],\n \"instanceNamePrefixes\": [\"test-\"],\n \"zones\": [\n \"us-central1-a\",\n \"us-central-1c\",\n ],\n },\n patch_config={\n \"migInstancesAllowed\": True,\n \"rebootConfig\": \"ALWAYS\",\n \"apt\": {\n \"type\": \"DIST\",\n \"excludes\": [\"python\"],\n },\n \"yum\": {\n \"security\": True,\n \"minimal\": True,\n \"excludes\": [\"bash\"],\n },\n \"goo\": {\n \"enabled\": True,\n },\n \"zypper\": {\n \"categories\": [\"security\"],\n },\n \"windowsUpdate\": {\n \"classifications\": [\n \"CRITICAL\",\n \"SECURITY\",\n \"UPDATE\",\n ],\n \"excludes\": [\"5012170\"],\n },\n \"preStep\": {\n \"linuxExecStepConfig\": {\n \"allowedSuccessCodes\": [\n 0,\n 3,\n ],\n \"localPath\": \"/tmp/pre_patch_script.sh\",\n },\n \"windowsExecStepConfig\": {\n \"interpreter\": \"SHELL\",\n \"allowedSuccessCodes\": [\n 0,\n 2,\n ],\n \"localPath\": \"C:\\\\Users\\\\user\\\\pre-patch-script.cmd\",\n },\n },\n \"postStep\": {\n \"linuxExecStepConfig\": {\n \"gcsObject\": {\n \"bucket\": \"my-patch-scripts\",\n \"generationNumber\": \"1523477886880\",\n \"object\": \"linux/post_patch_script\",\n },\n },\n \"windowsExecStepConfig\": {\n \"interpreter\": \"POWERSHELL\",\n \"gcsObject\": {\n \"bucket\": \"my-patch-scripts\",\n \"generationNumber\": \"135920493447\",\n \"object\": \"windows/post_patch_script.ps1\",\n },\n },\n },\n },\n duration=\"10s\",\n recurring_schedule={\n \"timeZone\": {\n \"id\": \"America/New_York\",\n },\n \"timeOfDay\": {\n \"hours\": 0,\n \"minutes\": 30,\n \"seconds\": 30,\n \"nanos\": 20,\n },\n \"monthly\": {\n \"weekDayOfMonth\": {\n \"weekOrdinal\": -1,\n \"dayOfWeek\": \"TUESDAY\",\n \"dayOffset\": 3,\n },\n },\n },\n rollout={\n \"mode\": \"ZONE_BY_ZONE\",\n \"disruptionBudget\": {\n \"fixed\": 1,\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 patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n GroupLabels = new[]\n {\n new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterGroupLabelArgs\n {\n Labels = \n {\n { \"env\", \"dev\" },\n { \"app\", \"web\" },\n },\n },\n },\n InstanceNamePrefixes = new[]\n {\n \"test-\",\n },\n Zones = new[]\n {\n \"us-central1-a\",\n \"us-central-1c\",\n },\n },\n PatchConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigArgs\n {\n MigInstancesAllowed = true,\n RebootConfig = \"ALWAYS\",\n Apt = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigAptArgs\n {\n Type = \"DIST\",\n Excludes = new[]\n {\n \"python\",\n },\n },\n Yum = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigYumArgs\n {\n Security = true,\n Minimal = true,\n Excludes = new[]\n {\n \"bash\",\n },\n },\n Goo = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigGooArgs\n {\n Enabled = true,\n },\n Zypper = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigZypperArgs\n {\n Categories = new[]\n {\n \"security\",\n },\n },\n WindowsUpdate = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigWindowsUpdateArgs\n {\n Classifications = new[]\n {\n \"CRITICAL\",\n \"SECURITY\",\n \"UPDATE\",\n },\n Excludes = new[]\n {\n \"5012170\",\n },\n },\n PreStep = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPreStepArgs\n {\n LinuxExecStepConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPreStepLinuxExecStepConfigArgs\n {\n AllowedSuccessCodes = new[]\n {\n 0,\n 3,\n },\n LocalPath = \"/tmp/pre_patch_script.sh\",\n },\n WindowsExecStepConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPreStepWindowsExecStepConfigArgs\n {\n Interpreter = \"SHELL\",\n AllowedSuccessCodes = new[]\n {\n 0,\n 2,\n },\n LocalPath = \"C:\\\\Users\\\\user\\\\pre-patch-script.cmd\",\n },\n },\n PostStep = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepArgs\n {\n LinuxExecStepConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigArgs\n {\n GcsObject = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigGcsObjectArgs\n {\n Bucket = \"my-patch-scripts\",\n GenerationNumber = \"1523477886880\",\n Object = \"linux/post_patch_script\",\n },\n },\n WindowsExecStepConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigArgs\n {\n Interpreter = \"POWERSHELL\",\n GcsObject = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigGcsObjectArgs\n {\n Bucket = \"my-patch-scripts\",\n GenerationNumber = \"135920493447\",\n Object = \"windows/post_patch_script.ps1\",\n },\n },\n },\n },\n Duration = \"10s\",\n RecurringSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleArgs\n {\n TimeZone = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeZoneArgs\n {\n Id = \"America/New_York\",\n },\n TimeOfDay = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs\n {\n Hours = 0,\n Minutes = 30,\n Seconds = 30,\n Nanos = 20,\n },\n Monthly = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleMonthlyArgs\n {\n WeekDayOfMonth = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleMonthlyWeekDayOfMonthArgs\n {\n WeekOrdinal = -1,\n DayOfWeek = \"TUESDAY\",\n DayOffset = 3,\n },\n },\n },\n Rollout = new Gcp.OsConfig.Inputs.PatchDeploymentRolloutArgs\n {\n Mode = \"ZONE_BY_ZONE\",\n DisruptionBudget = new Gcp.OsConfig.Inputs.PatchDeploymentRolloutDisruptionBudgetArgs\n {\n Fixed = 1,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/osconfig\"\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 := osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tGroupLabels: osconfig.PatchDeploymentInstanceFilterGroupLabelArray{\n\t\t\t\t\t\u0026osconfig.PatchDeploymentInstanceFilterGroupLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"env\": pulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\"app\": pulumi.String(\"web\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInstanceNamePrefixes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test-\"),\n\t\t\t\t},\n\t\t\t\tZones: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"us-central1-a\"),\n\t\t\t\t\tpulumi.String(\"us-central-1c\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPatchConfig: \u0026osconfig.PatchDeploymentPatchConfigArgs{\n\t\t\t\tMigInstancesAllowed: pulumi.Bool(true),\n\t\t\t\tRebootConfig: pulumi.String(\"ALWAYS\"),\n\t\t\t\tApt: \u0026osconfig.PatchDeploymentPatchConfigAptArgs{\n\t\t\t\t\tType: pulumi.String(\"DIST\"),\n\t\t\t\t\tExcludes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"python\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tYum: \u0026osconfig.PatchDeploymentPatchConfigYumArgs{\n\t\t\t\t\tSecurity: pulumi.Bool(true),\n\t\t\t\t\tMinimal: pulumi.Bool(true),\n\t\t\t\t\tExcludes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"bash\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tGoo: \u0026osconfig.PatchDeploymentPatchConfigGooArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tZypper: \u0026osconfig.PatchDeploymentPatchConfigZypperArgs{\n\t\t\t\t\tCategories: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"security\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWindowsUpdate: \u0026osconfig.PatchDeploymentPatchConfigWindowsUpdateArgs{\n\t\t\t\t\tClassifications: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"CRITICAL\"),\n\t\t\t\t\t\tpulumi.String(\"SECURITY\"),\n\t\t\t\t\t\tpulumi.String(\"UPDATE\"),\n\t\t\t\t\t},\n\t\t\t\t\tExcludes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"5012170\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPreStep: \u0026osconfig.PatchDeploymentPatchConfigPreStepArgs{\n\t\t\t\t\tLinuxExecStepConfig: \u0026osconfig.PatchDeploymentPatchConfigPreStepLinuxExecStepConfigArgs{\n\t\t\t\t\t\tAllowedSuccessCodes: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(0),\n\t\t\t\t\t\t\tpulumi.Int(3),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLocalPath: pulumi.String(\"/tmp/pre_patch_script.sh\"),\n\t\t\t\t\t},\n\t\t\t\t\tWindowsExecStepConfig: \u0026osconfig.PatchDeploymentPatchConfigPreStepWindowsExecStepConfigArgs{\n\t\t\t\t\t\tInterpreter: pulumi.String(\"SHELL\"),\n\t\t\t\t\t\tAllowedSuccessCodes: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(0),\n\t\t\t\t\t\t\tpulumi.Int(2),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLocalPath: pulumi.String(\"C:\\\\Users\\\\user\\\\pre-patch-script.cmd\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPostStep: \u0026osconfig.PatchDeploymentPatchConfigPostStepArgs{\n\t\t\t\t\tLinuxExecStepConfig: \u0026osconfig.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigArgs{\n\t\t\t\t\t\tGcsObject: \u0026osconfig.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigGcsObjectArgs{\n\t\t\t\t\t\t\tBucket: pulumi.String(\"my-patch-scripts\"),\n\t\t\t\t\t\t\tGenerationNumber: pulumi.String(\"1523477886880\"),\n\t\t\t\t\t\t\tObject: pulumi.String(\"linux/post_patch_script\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tWindowsExecStepConfig: \u0026osconfig.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigArgs{\n\t\t\t\t\t\tInterpreter: pulumi.String(\"POWERSHELL\"),\n\t\t\t\t\t\tGcsObject: \u0026osconfig.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigGcsObjectArgs{\n\t\t\t\t\t\t\tBucket: pulumi.String(\"my-patch-scripts\"),\n\t\t\t\t\t\t\tGenerationNumber: pulumi.String(\"135920493447\"),\n\t\t\t\t\t\t\tObject: pulumi.String(\"windows/post_patch_script.ps1\"),\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\tDuration: pulumi.String(\"10s\"),\n\t\t\tRecurringSchedule: \u0026osconfig.PatchDeploymentRecurringScheduleArgs{\n\t\t\t\tTimeZone: \u0026osconfig.PatchDeploymentRecurringScheduleTimeZoneArgs{\n\t\t\t\t\tId: pulumi.String(\"America/New_York\"),\n\t\t\t\t},\n\t\t\t\tTimeOfDay: \u0026osconfig.PatchDeploymentRecurringScheduleTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\tSeconds: pulumi.Int(30),\n\t\t\t\t\tNanos: pulumi.Int(20),\n\t\t\t\t},\n\t\t\t\tMonthly: \u0026osconfig.PatchDeploymentRecurringScheduleMonthlyArgs{\n\t\t\t\t\tWeekDayOfMonth: \u0026osconfig.PatchDeploymentRecurringScheduleMonthlyWeekDayOfMonthArgs{\n\t\t\t\t\t\tWeekOrdinal: -1,\n\t\t\t\t\t\tDayOfWeek: pulumi.String(\"TUESDAY\"),\n\t\t\t\t\t\tDayOffset: pulumi.Int(3),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRollout: \u0026osconfig.PatchDeploymentRolloutArgs{\n\t\t\t\tMode: pulumi.String(\"ZONE_BY_ZONE\"),\n\t\t\t\tDisruptionBudget: \u0026osconfig.PatchDeploymentRolloutDisruptionBudgetArgs{\n\t\t\t\t\tFixed: pulumi.Int(1),\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```yaml\nresources:\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n groupLabels:\n - labels:\n env: dev\n app: web\n instanceNamePrefixes:\n - test-\n zones:\n - us-central1-a\n - us-central-1c\n patchConfig:\n migInstancesAllowed: true\n rebootConfig: ALWAYS\n apt:\n type: DIST\n excludes:\n - python\n yum:\n security: true\n minimal: true\n excludes:\n - bash\n goo:\n enabled: true\n zypper:\n categories:\n - security\n windowsUpdate:\n classifications:\n - CRITICAL\n - SECURITY\n - UPDATE\n excludes:\n - '5012170'\n preStep:\n linuxExecStepConfig:\n allowedSuccessCodes:\n - 0\n - 3\n localPath: /tmp/pre_patch_script.sh\n windowsExecStepConfig:\n interpreter: SHELL\n allowedSuccessCodes:\n - 0\n - 2\n localPath: C:\\Users\\user\\pre-patch-script.cmd\n postStep:\n linuxExecStepConfig:\n gcsObject:\n bucket: my-patch-scripts\n generationNumber: '1523477886880'\n object: linux/post_patch_script\n windowsExecStepConfig:\n interpreter: POWERSHELL\n gcsObject:\n bucket: my-patch-scripts\n generationNumber: '135920493447'\n object: windows/post_patch_script.ps1\n duration: 10s\n recurringSchedule:\n timeZone:\n id: America/New_York\n timeOfDay:\n hours: 0\n minutes: 30\n seconds: 30\n nanos: 20\n monthly:\n weekDayOfMonth:\n weekOrdinal: -1\n dayOfWeek: TUESDAY\n dayOffset: 3\n rollout:\n mode: ZONE_BY_ZONE\n disruptionBudget:\n fixed: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPatchDeployment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/patchDeployments/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, PatchDeployment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:osconfig/patchDeployment:PatchDeployment default projects/{{project}}/patchDeployments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/patchDeployment:PatchDeployment default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/patchDeployment:PatchDeployment default {{name}}\n```\n\n", + "description": "Patch deployments are configurations that individual patch jobs use to complete a patch.\nThese configurations include instance filter, package repository settings, and a schedule.\n\n\nTo get more information about PatchDeployment, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/osconfig/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/os-patch-management)\n\n## Example Usage\n\n### Os Config Patch Deployment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n all: true,\n },\n oneTimeSchedule: {\n executeTime: \"2999-10-10T10:10:10.045123456Z\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"all\": True,\n },\n one_time_schedule={\n \"execute_time\": \"2999-10-10T10:10:10.045123456Z\",\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 patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n All = true,\n },\n OneTimeSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentOneTimeScheduleArgs\n {\n ExecuteTime = \"2999-10-10T10:10:10.045123456Z\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/osconfig\"\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 := osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tAll: pulumi.Bool(true),\n\t\t\t},\n\t\t\tOneTimeSchedule: \u0026osconfig.PatchDeploymentOneTimeScheduleArgs{\n\t\t\t\tExecuteTime: pulumi.String(\"2999-10-10T10:10:10.045123456Z\"),\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.osconfig.PatchDeployment;\nimport com.pulumi.gcp.osconfig.PatchDeploymentArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentOneTimeScheduleArgs;\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 patch = new PatchDeployment(\"patch\", PatchDeploymentArgs.builder()\n .patchDeploymentId(\"patch-deploy\")\n .instanceFilter(PatchDeploymentInstanceFilterArgs.builder()\n .all(true)\n .build())\n .oneTimeSchedule(PatchDeploymentOneTimeScheduleArgs.builder()\n .executeTime(\"2999-10-10T10:10:10.045123456Z\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n all: true\n oneTimeSchedule:\n executeTime: 2999-10-10T10:10:10.045123456Z\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Patch Deployment Daily\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n all: true,\n },\n recurringSchedule: {\n timeZone: {\n id: \"America/New_York\",\n },\n timeOfDay: {\n hours: 0,\n minutes: 30,\n seconds: 30,\n nanos: 20,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"all\": True,\n },\n recurring_schedule={\n \"time_zone\": {\n \"id\": \"America/New_York\",\n },\n \"time_of_day\": {\n \"hours\": 0,\n \"minutes\": 30,\n \"seconds\": 30,\n \"nanos\": 20,\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 patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n All = true,\n },\n RecurringSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleArgs\n {\n TimeZone = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeZoneArgs\n {\n Id = \"America/New_York\",\n },\n TimeOfDay = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs\n {\n Hours = 0,\n Minutes = 30,\n Seconds = 30,\n Nanos = 20,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/osconfig\"\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 := osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tAll: pulumi.Bool(true),\n\t\t\t},\n\t\t\tRecurringSchedule: \u0026osconfig.PatchDeploymentRecurringScheduleArgs{\n\t\t\t\tTimeZone: \u0026osconfig.PatchDeploymentRecurringScheduleTimeZoneArgs{\n\t\t\t\t\tId: pulumi.String(\"America/New_York\"),\n\t\t\t\t},\n\t\t\t\tTimeOfDay: \u0026osconfig.PatchDeploymentRecurringScheduleTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\tSeconds: pulumi.Int(30),\n\t\t\t\t\tNanos: pulumi.Int(20),\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.osconfig.PatchDeployment;\nimport com.pulumi.gcp.osconfig.PatchDeploymentArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeZoneArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs;\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 patch = new PatchDeployment(\"patch\", PatchDeploymentArgs.builder()\n .patchDeploymentId(\"patch-deploy\")\n .instanceFilter(PatchDeploymentInstanceFilterArgs.builder()\n .all(true)\n .build())\n .recurringSchedule(PatchDeploymentRecurringScheduleArgs.builder()\n .timeZone(PatchDeploymentRecurringScheduleTimeZoneArgs.builder()\n .id(\"America/New_York\")\n .build())\n .timeOfDay(PatchDeploymentRecurringScheduleTimeOfDayArgs.builder()\n .hours(0)\n .minutes(30)\n .seconds(30)\n .nanos(20)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n all: true\n recurringSchedule:\n timeZone:\n id: America/New_York\n timeOfDay:\n hours: 0\n minutes: 30\n seconds: 30\n nanos: 20\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Patch Deployment Daily Midnight\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n all: true,\n },\n recurringSchedule: {\n timeZone: {\n id: \"America/New_York\",\n },\n timeOfDay: {\n hours: 0,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"all\": True,\n },\n recurring_schedule={\n \"time_zone\": {\n \"id\": \"America/New_York\",\n },\n \"time_of_day\": {\n \"hours\": 0,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\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 patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n All = true,\n },\n RecurringSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleArgs\n {\n TimeZone = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeZoneArgs\n {\n Id = \"America/New_York\",\n },\n TimeOfDay = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs\n {\n Hours = 0,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/osconfig\"\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 := osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tAll: pulumi.Bool(true),\n\t\t\t},\n\t\t\tRecurringSchedule: \u0026osconfig.PatchDeploymentRecurringScheduleArgs{\n\t\t\t\tTimeZone: \u0026osconfig.PatchDeploymentRecurringScheduleTimeZoneArgs{\n\t\t\t\t\tId: pulumi.String(\"America/New_York\"),\n\t\t\t\t},\n\t\t\t\tTimeOfDay: \u0026osconfig.PatchDeploymentRecurringScheduleTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\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.osconfig.PatchDeployment;\nimport com.pulumi.gcp.osconfig.PatchDeploymentArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeZoneArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs;\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 patch = new PatchDeployment(\"patch\", PatchDeploymentArgs.builder()\n .patchDeploymentId(\"patch-deploy\")\n .instanceFilter(PatchDeploymentInstanceFilterArgs.builder()\n .all(true)\n .build())\n .recurringSchedule(PatchDeploymentRecurringScheduleArgs.builder()\n .timeZone(PatchDeploymentRecurringScheduleTimeZoneArgs.builder()\n .id(\"America/New_York\")\n .build())\n .timeOfDay(PatchDeploymentRecurringScheduleTimeOfDayArgs.builder()\n .hours(0)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n all: true\n recurringSchedule:\n timeZone:\n id: America/New_York\n timeOfDay:\n hours: 0\n minutes: 0\n seconds: 0\n nanos: 0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Patch Deployment Instance\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst foobar = new gcp.compute.Instance(\"foobar\", {\n name: \"patch-deploy-inst\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n metadata: {\n foo: \"bar\",\n },\n});\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n instances: [foobar.id],\n },\n patchConfig: {\n yum: {\n security: true,\n minimal: true,\n excludes: [\"bash\"],\n },\n },\n recurringSchedule: {\n timeZone: {\n id: \"America/New_York\",\n },\n timeOfDay: {\n hours: 0,\n minutes: 30,\n seconds: 30,\n nanos: 20,\n },\n monthly: {\n monthDay: 1,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nfoobar = gcp.compute.Instance(\"foobar\",\n name=\"patch-deploy-inst\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n boot_disk={\n \"initialize_params\": {\n \"image\": my_image.self_link,\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }],\n metadata={\n \"foo\": \"bar\",\n })\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"instances\": [foobar.id],\n },\n patch_config={\n \"yum\": {\n \"security\": True,\n \"minimal\": True,\n \"excludes\": [\"bash\"],\n },\n },\n recurring_schedule={\n \"time_zone\": {\n \"id\": \"America/New_York\",\n },\n \"time_of_day\": {\n \"hours\": 0,\n \"minutes\": 30,\n \"seconds\": 30,\n \"nanos\": 20,\n },\n \"monthly\": {\n \"month_day\": 1,\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 myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var foobar = new Gcp.Compute.Instance(\"foobar\", new()\n {\n Name = \"patch-deploy-inst\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n Instances = new[]\n {\n foobar.Id,\n },\n },\n PatchConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigArgs\n {\n Yum = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigYumArgs\n {\n Security = true,\n Minimal = true,\n Excludes = new[]\n {\n \"bash\",\n },\n },\n },\n RecurringSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleArgs\n {\n TimeZone = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeZoneArgs\n {\n Id = \"America/New_York\",\n },\n TimeOfDay = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs\n {\n Hours = 0,\n Minutes = 30,\n Seconds = 30,\n Nanos = 20,\n },\n Monthly = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleMonthlyArgs\n {\n MonthDay = 1,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/osconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobar, err := compute.NewInstance(ctx, \"foobar\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"patch-deploy-inst\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\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},\n\t\t\t},\n\t\t\tMetadata: 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\t_, err = osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tInstances: pulumi.StringArray{\n\t\t\t\t\tfoobar.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPatchConfig: \u0026osconfig.PatchDeploymentPatchConfigArgs{\n\t\t\t\tYum: \u0026osconfig.PatchDeploymentPatchConfigYumArgs{\n\t\t\t\t\tSecurity: pulumi.Bool(true),\n\t\t\t\t\tMinimal: pulumi.Bool(true),\n\t\t\t\t\tExcludes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"bash\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRecurringSchedule: \u0026osconfig.PatchDeploymentRecurringScheduleArgs{\n\t\t\t\tTimeZone: \u0026osconfig.PatchDeploymentRecurringScheduleTimeZoneArgs{\n\t\t\t\t\tId: pulumi.String(\"America/New_York\"),\n\t\t\t\t},\n\t\t\t\tTimeOfDay: \u0026osconfig.PatchDeploymentRecurringScheduleTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\tSeconds: pulumi.Int(30),\n\t\t\t\t\tNanos: pulumi.Int(20),\n\t\t\t\t},\n\t\t\t\tMonthly: \u0026osconfig.PatchDeploymentRecurringScheduleMonthlyArgs{\n\t\t\t\t\tMonthDay: pulumi.Int(1),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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.osconfig.PatchDeployment;\nimport com.pulumi.gcp.osconfig.PatchDeploymentArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigYumArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeZoneArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleMonthlyArgs;\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 myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var foobar = new Instance(\"foobar\", InstanceArgs.builder()\n .name(\"patch-deploy-inst\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .build());\n\n var patch = new PatchDeployment(\"patch\", PatchDeploymentArgs.builder()\n .patchDeploymentId(\"patch-deploy\")\n .instanceFilter(PatchDeploymentInstanceFilterArgs.builder()\n .instances(foobar.id())\n .build())\n .patchConfig(PatchDeploymentPatchConfigArgs.builder()\n .yum(PatchDeploymentPatchConfigYumArgs.builder()\n .security(true)\n .minimal(true)\n .excludes(\"bash\")\n .build())\n .build())\n .recurringSchedule(PatchDeploymentRecurringScheduleArgs.builder()\n .timeZone(PatchDeploymentRecurringScheduleTimeZoneArgs.builder()\n .id(\"America/New_York\")\n .build())\n .timeOfDay(PatchDeploymentRecurringScheduleTimeOfDayArgs.builder()\n .hours(0)\n .minutes(30)\n .seconds(30)\n .nanos(20)\n .build())\n .monthly(PatchDeploymentRecurringScheduleMonthlyArgs.builder()\n .monthDay(1)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:Instance\n properties:\n name: patch-deploy-inst\n machineType: e2-medium\n zone: us-central1-a\n canIpForward: false\n tags:\n - foo\n - bar\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\n networkInterfaces:\n - network: default\n metadata:\n foo: bar\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n instances:\n - ${foobar.id}\n patchConfig:\n yum:\n security: true\n minimal: true\n excludes:\n - bash\n recurringSchedule:\n timeZone:\n id: America/New_York\n timeOfDay:\n hours: 0\n minutes: 30\n seconds: 30\n nanos: 20\n monthly:\n monthDay: 1\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Patch Deployment Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n groupLabels: [{\n labels: {\n env: \"dev\",\n app: \"web\",\n },\n }],\n instanceNamePrefixes: [\"test-\"],\n zones: [\n \"us-central1-a\",\n \"us-central-1c\",\n ],\n },\n patchConfig: {\n migInstancesAllowed: true,\n rebootConfig: \"ALWAYS\",\n apt: {\n type: \"DIST\",\n excludes: [\"python\"],\n },\n yum: {\n security: true,\n minimal: true,\n excludes: [\"bash\"],\n },\n goo: {\n enabled: true,\n },\n zypper: {\n categories: [\"security\"],\n },\n windowsUpdate: {\n classifications: [\n \"CRITICAL\",\n \"SECURITY\",\n \"UPDATE\",\n ],\n excludes: [\"5012170\"],\n },\n preStep: {\n linuxExecStepConfig: {\n allowedSuccessCodes: [\n 0,\n 3,\n ],\n localPath: \"/tmp/pre_patch_script.sh\",\n },\n windowsExecStepConfig: {\n interpreter: \"SHELL\",\n allowedSuccessCodes: [\n 0,\n 2,\n ],\n localPath: \"C:\\\\Users\\\\user\\\\pre-patch-script.cmd\",\n },\n },\n postStep: {\n linuxExecStepConfig: {\n gcsObject: {\n bucket: \"my-patch-scripts\",\n generationNumber: \"1523477886880\",\n object: \"linux/post_patch_script\",\n },\n },\n windowsExecStepConfig: {\n interpreter: \"POWERSHELL\",\n gcsObject: {\n bucket: \"my-patch-scripts\",\n generationNumber: \"135920493447\",\n object: \"windows/post_patch_script.ps1\",\n },\n },\n },\n },\n duration: \"10s\",\n recurringSchedule: {\n timeZone: {\n id: \"America/New_York\",\n },\n timeOfDay: {\n hours: 0,\n minutes: 30,\n seconds: 30,\n nanos: 20,\n },\n monthly: {\n weekDayOfMonth: {\n weekOrdinal: -1,\n dayOfWeek: \"TUESDAY\",\n dayOffset: 3,\n },\n },\n },\n rollout: {\n mode: \"ZONE_BY_ZONE\",\n disruptionBudget: {\n fixed: 1,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"group_labels\": [{\n \"labels\": {\n \"env\": \"dev\",\n \"app\": \"web\",\n },\n }],\n \"instance_name_prefixes\": [\"test-\"],\n \"zones\": [\n \"us-central1-a\",\n \"us-central-1c\",\n ],\n },\n patch_config={\n \"mig_instances_allowed\": True,\n \"reboot_config\": \"ALWAYS\",\n \"apt\": {\n \"type\": \"DIST\",\n \"excludes\": [\"python\"],\n },\n \"yum\": {\n \"security\": True,\n \"minimal\": True,\n \"excludes\": [\"bash\"],\n },\n \"goo\": {\n \"enabled\": True,\n },\n \"zypper\": {\n \"categories\": [\"security\"],\n },\n \"windows_update\": {\n \"classifications\": [\n \"CRITICAL\",\n \"SECURITY\",\n \"UPDATE\",\n ],\n \"excludes\": [\"5012170\"],\n },\n \"pre_step\": {\n \"linux_exec_step_config\": {\n \"allowed_success_codes\": [\n 0,\n 3,\n ],\n \"local_path\": \"/tmp/pre_patch_script.sh\",\n },\n \"windows_exec_step_config\": {\n \"interpreter\": \"SHELL\",\n \"allowed_success_codes\": [\n 0,\n 2,\n ],\n \"local_path\": \"C:\\\\Users\\\\user\\\\pre-patch-script.cmd\",\n },\n },\n \"post_step\": {\n \"linux_exec_step_config\": {\n \"gcs_object\": {\n \"bucket\": \"my-patch-scripts\",\n \"generation_number\": \"1523477886880\",\n \"object\": \"linux/post_patch_script\",\n },\n },\n \"windows_exec_step_config\": {\n \"interpreter\": \"POWERSHELL\",\n \"gcs_object\": {\n \"bucket\": \"my-patch-scripts\",\n \"generation_number\": \"135920493447\",\n \"object\": \"windows/post_patch_script.ps1\",\n },\n },\n },\n },\n duration=\"10s\",\n recurring_schedule={\n \"time_zone\": {\n \"id\": \"America/New_York\",\n },\n \"time_of_day\": {\n \"hours\": 0,\n \"minutes\": 30,\n \"seconds\": 30,\n \"nanos\": 20,\n },\n \"monthly\": {\n \"week_day_of_month\": {\n \"week_ordinal\": -1,\n \"day_of_week\": \"TUESDAY\",\n \"day_offset\": 3,\n },\n },\n },\n rollout={\n \"mode\": \"ZONE_BY_ZONE\",\n \"disruption_budget\": {\n \"fixed\": 1,\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 patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n GroupLabels = new[]\n {\n new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterGroupLabelArgs\n {\n Labels = \n {\n { \"env\", \"dev\" },\n { \"app\", \"web\" },\n },\n },\n },\n InstanceNamePrefixes = new[]\n {\n \"test-\",\n },\n Zones = new[]\n {\n \"us-central1-a\",\n \"us-central-1c\",\n },\n },\n PatchConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigArgs\n {\n MigInstancesAllowed = true,\n RebootConfig = \"ALWAYS\",\n Apt = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigAptArgs\n {\n Type = \"DIST\",\n Excludes = new[]\n {\n \"python\",\n },\n },\n Yum = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigYumArgs\n {\n Security = true,\n Minimal = true,\n Excludes = new[]\n {\n \"bash\",\n },\n },\n Goo = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigGooArgs\n {\n Enabled = true,\n },\n Zypper = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigZypperArgs\n {\n Categories = new[]\n {\n \"security\",\n },\n },\n WindowsUpdate = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigWindowsUpdateArgs\n {\n Classifications = new[]\n {\n \"CRITICAL\",\n \"SECURITY\",\n \"UPDATE\",\n },\n Excludes = new[]\n {\n \"5012170\",\n },\n },\n PreStep = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPreStepArgs\n {\n LinuxExecStepConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPreStepLinuxExecStepConfigArgs\n {\n AllowedSuccessCodes = new[]\n {\n 0,\n 3,\n },\n LocalPath = \"/tmp/pre_patch_script.sh\",\n },\n WindowsExecStepConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPreStepWindowsExecStepConfigArgs\n {\n Interpreter = \"SHELL\",\n AllowedSuccessCodes = new[]\n {\n 0,\n 2,\n },\n LocalPath = \"C:\\\\Users\\\\user\\\\pre-patch-script.cmd\",\n },\n },\n PostStep = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepArgs\n {\n LinuxExecStepConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigArgs\n {\n GcsObject = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigGcsObjectArgs\n {\n Bucket = \"my-patch-scripts\",\n GenerationNumber = \"1523477886880\",\n Object = \"linux/post_patch_script\",\n },\n },\n WindowsExecStepConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigArgs\n {\n Interpreter = \"POWERSHELL\",\n GcsObject = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigGcsObjectArgs\n {\n Bucket = \"my-patch-scripts\",\n GenerationNumber = \"135920493447\",\n Object = \"windows/post_patch_script.ps1\",\n },\n },\n },\n },\n Duration = \"10s\",\n RecurringSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleArgs\n {\n TimeZone = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeZoneArgs\n {\n Id = \"America/New_York\",\n },\n TimeOfDay = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs\n {\n Hours = 0,\n Minutes = 30,\n Seconds = 30,\n Nanos = 20,\n },\n Monthly = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleMonthlyArgs\n {\n WeekDayOfMonth = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleMonthlyWeekDayOfMonthArgs\n {\n WeekOrdinal = -1,\n DayOfWeek = \"TUESDAY\",\n DayOffset = 3,\n },\n },\n },\n Rollout = new Gcp.OsConfig.Inputs.PatchDeploymentRolloutArgs\n {\n Mode = \"ZONE_BY_ZONE\",\n DisruptionBudget = new Gcp.OsConfig.Inputs.PatchDeploymentRolloutDisruptionBudgetArgs\n {\n Fixed = 1,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/osconfig\"\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 := osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tGroupLabels: osconfig.PatchDeploymentInstanceFilterGroupLabelArray{\n\t\t\t\t\t\u0026osconfig.PatchDeploymentInstanceFilterGroupLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"env\": pulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\"app\": pulumi.String(\"web\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInstanceNamePrefixes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test-\"),\n\t\t\t\t},\n\t\t\t\tZones: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"us-central1-a\"),\n\t\t\t\t\tpulumi.String(\"us-central-1c\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPatchConfig: \u0026osconfig.PatchDeploymentPatchConfigArgs{\n\t\t\t\tMigInstancesAllowed: pulumi.Bool(true),\n\t\t\t\tRebootConfig: pulumi.String(\"ALWAYS\"),\n\t\t\t\tApt: \u0026osconfig.PatchDeploymentPatchConfigAptArgs{\n\t\t\t\t\tType: pulumi.String(\"DIST\"),\n\t\t\t\t\tExcludes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"python\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tYum: \u0026osconfig.PatchDeploymentPatchConfigYumArgs{\n\t\t\t\t\tSecurity: pulumi.Bool(true),\n\t\t\t\t\tMinimal: pulumi.Bool(true),\n\t\t\t\t\tExcludes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"bash\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tGoo: \u0026osconfig.PatchDeploymentPatchConfigGooArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tZypper: \u0026osconfig.PatchDeploymentPatchConfigZypperArgs{\n\t\t\t\t\tCategories: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"security\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWindowsUpdate: \u0026osconfig.PatchDeploymentPatchConfigWindowsUpdateArgs{\n\t\t\t\t\tClassifications: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"CRITICAL\"),\n\t\t\t\t\t\tpulumi.String(\"SECURITY\"),\n\t\t\t\t\t\tpulumi.String(\"UPDATE\"),\n\t\t\t\t\t},\n\t\t\t\t\tExcludes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"5012170\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPreStep: \u0026osconfig.PatchDeploymentPatchConfigPreStepArgs{\n\t\t\t\t\tLinuxExecStepConfig: \u0026osconfig.PatchDeploymentPatchConfigPreStepLinuxExecStepConfigArgs{\n\t\t\t\t\t\tAllowedSuccessCodes: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(0),\n\t\t\t\t\t\t\tpulumi.Int(3),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLocalPath: pulumi.String(\"/tmp/pre_patch_script.sh\"),\n\t\t\t\t\t},\n\t\t\t\t\tWindowsExecStepConfig: \u0026osconfig.PatchDeploymentPatchConfigPreStepWindowsExecStepConfigArgs{\n\t\t\t\t\t\tInterpreter: pulumi.String(\"SHELL\"),\n\t\t\t\t\t\tAllowedSuccessCodes: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(0),\n\t\t\t\t\t\t\tpulumi.Int(2),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLocalPath: pulumi.String(\"C:\\\\Users\\\\user\\\\pre-patch-script.cmd\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPostStep: \u0026osconfig.PatchDeploymentPatchConfigPostStepArgs{\n\t\t\t\t\tLinuxExecStepConfig: \u0026osconfig.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigArgs{\n\t\t\t\t\t\tGcsObject: \u0026osconfig.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigGcsObjectArgs{\n\t\t\t\t\t\t\tBucket: pulumi.String(\"my-patch-scripts\"),\n\t\t\t\t\t\t\tGenerationNumber: pulumi.String(\"1523477886880\"),\n\t\t\t\t\t\t\tObject: pulumi.String(\"linux/post_patch_script\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tWindowsExecStepConfig: \u0026osconfig.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigArgs{\n\t\t\t\t\t\tInterpreter: pulumi.String(\"POWERSHELL\"),\n\t\t\t\t\t\tGcsObject: \u0026osconfig.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigGcsObjectArgs{\n\t\t\t\t\t\t\tBucket: pulumi.String(\"my-patch-scripts\"),\n\t\t\t\t\t\t\tGenerationNumber: pulumi.String(\"135920493447\"),\n\t\t\t\t\t\t\tObject: pulumi.String(\"windows/post_patch_script.ps1\"),\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\tDuration: pulumi.String(\"10s\"),\n\t\t\tRecurringSchedule: \u0026osconfig.PatchDeploymentRecurringScheduleArgs{\n\t\t\t\tTimeZone: \u0026osconfig.PatchDeploymentRecurringScheduleTimeZoneArgs{\n\t\t\t\t\tId: pulumi.String(\"America/New_York\"),\n\t\t\t\t},\n\t\t\t\tTimeOfDay: \u0026osconfig.PatchDeploymentRecurringScheduleTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\tSeconds: pulumi.Int(30),\n\t\t\t\t\tNanos: pulumi.Int(20),\n\t\t\t\t},\n\t\t\t\tMonthly: \u0026osconfig.PatchDeploymentRecurringScheduleMonthlyArgs{\n\t\t\t\t\tWeekDayOfMonth: \u0026osconfig.PatchDeploymentRecurringScheduleMonthlyWeekDayOfMonthArgs{\n\t\t\t\t\t\tWeekOrdinal: int(-1),\n\t\t\t\t\t\tDayOfWeek: pulumi.String(\"TUESDAY\"),\n\t\t\t\t\t\tDayOffset: pulumi.Int(3),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRollout: \u0026osconfig.PatchDeploymentRolloutArgs{\n\t\t\t\tMode: pulumi.String(\"ZONE_BY_ZONE\"),\n\t\t\t\tDisruptionBudget: \u0026osconfig.PatchDeploymentRolloutDisruptionBudgetArgs{\n\t\t\t\t\tFixed: pulumi.Int(1),\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```yaml\nresources:\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n groupLabels:\n - labels:\n env: dev\n app: web\n instanceNamePrefixes:\n - test-\n zones:\n - us-central1-a\n - us-central-1c\n patchConfig:\n migInstancesAllowed: true\n rebootConfig: ALWAYS\n apt:\n type: DIST\n excludes:\n - python\n yum:\n security: true\n minimal: true\n excludes:\n - bash\n goo:\n enabled: true\n zypper:\n categories:\n - security\n windowsUpdate:\n classifications:\n - CRITICAL\n - SECURITY\n - UPDATE\n excludes:\n - '5012170'\n preStep:\n linuxExecStepConfig:\n allowedSuccessCodes:\n - 0\n - 3\n localPath: /tmp/pre_patch_script.sh\n windowsExecStepConfig:\n interpreter: SHELL\n allowedSuccessCodes:\n - 0\n - 2\n localPath: C:\\Users\\user\\pre-patch-script.cmd\n postStep:\n linuxExecStepConfig:\n gcsObject:\n bucket: my-patch-scripts\n generationNumber: '1523477886880'\n object: linux/post_patch_script\n windowsExecStepConfig:\n interpreter: POWERSHELL\n gcsObject:\n bucket: my-patch-scripts\n generationNumber: '135920493447'\n object: windows/post_patch_script.ps1\n duration: 10s\n recurringSchedule:\n timeZone:\n id: America/New_York\n timeOfDay:\n hours: 0\n minutes: 30\n seconds: 30\n nanos: 20\n monthly:\n weekDayOfMonth:\n weekOrdinal: -1\n dayOfWeek: TUESDAY\n dayOffset: 3\n rollout:\n mode: ZONE_BY_ZONE\n disruptionBudget:\n fixed: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPatchDeployment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/patchDeployments/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, PatchDeployment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:osconfig/patchDeployment:PatchDeployment default projects/{{project}}/patchDeployments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/patchDeployment:PatchDeployment default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/patchDeployment:PatchDeployment default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -226302,7 +226302,7 @@ } }, "gcp:oslogin/sshPublicKey:SshPublicKey": { - "description": "The SSH public key information associated with a Google account.\n\n\nTo get more information about SSHPublicKey, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/oslogin/rest/v1/users.sshPublicKeys)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/oslogin)\n\n## Example Usage\n\n### Os Login Ssh Key Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst me = gcp.organizations.getClientOpenIdUserInfo({});\nconst cache = new gcp.oslogin.SshPublicKey(\"cache\", {\n user: me.then(me =\u003e me.email),\n key: std.file({\n input: \"path/to/id_rsa.pub\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nme = gcp.organizations.get_client_open_id_user_info()\ncache = gcp.oslogin.SshPublicKey(\"cache\",\n user=me.email,\n key=std.file(input=\"path/to/id_rsa.pub\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var me = Gcp.Organizations.GetClientOpenIdUserInfo.Invoke();\n\n var cache = new Gcp.OsLogin.SshPublicKey(\"cache\", new()\n {\n User = me.Apply(getClientOpenIdUserInfoResult =\u003e getClientOpenIdUserInfoResult.Email),\n Key = Std.File.Invoke(new()\n {\n Input = \"path/to/id_rsa.pub\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/oslogin\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tme, err := organizations.GetClientOpenIdUserInfo(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/id_rsa.pub\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = oslogin.NewSshPublicKey(ctx, \"cache\", \u0026oslogin.SshPublicKeyArgs{\n\t\t\tUser: pulumi.String(me.Email),\n\t\t\tKey: invokeFile.Result,\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.oslogin.SshPublicKey;\nimport com.pulumi.gcp.oslogin.SshPublicKeyArgs;\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 me = OrganizationsFunctions.getClientOpenIdUserInfo();\n\n var cache = new SshPublicKey(\"cache\", SshPublicKeyArgs.builder()\n .user(me.applyValue(getClientOpenIdUserInfoResult -\u003e getClientOpenIdUserInfoResult.email()))\n .key(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/id_rsa.pub\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:oslogin:SshPublicKey\n properties:\n user: ${me.email}\n key:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/id_rsa.pub\n Return: result\nvariables:\n me:\n fn::invoke:\n Function: gcp:organizations:getClientOpenIdUserInfo\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSSHPublicKey can be imported using any of these accepted formats:\n\n* `users/{{user}}/sshPublicKeys/{{fingerprint}}`\n\n* `{{user}}/{{fingerprint}}`\n\nWhen using the `pulumi import` command, SSHPublicKey can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:oslogin/sshPublicKey:SshPublicKey default users/{{user}}/sshPublicKeys/{{fingerprint}}\n```\n\n```sh\n$ pulumi import gcp:oslogin/sshPublicKey:SshPublicKey default {{user}}/{{fingerprint}}\n```\n\n", + "description": "The SSH public key information associated with a Google account.\n\n\nTo get more information about SSHPublicKey, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/oslogin/rest/v1/users.sshPublicKeys)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/oslogin)\n\n## Example Usage\n\n### Os Login Ssh Key Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst me = gcp.organizations.getClientOpenIdUserInfo({});\nconst cache = new gcp.oslogin.SshPublicKey(\"cache\", {\n user: me.then(me =\u003e me.email),\n key: std.file({\n input: \"path/to/id_rsa.pub\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nme = gcp.organizations.get_client_open_id_user_info()\ncache = gcp.oslogin.SshPublicKey(\"cache\",\n user=me.email,\n key=std.file(input=\"path/to/id_rsa.pub\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var me = Gcp.Organizations.GetClientOpenIdUserInfo.Invoke();\n\n var cache = new Gcp.OsLogin.SshPublicKey(\"cache\", new()\n {\n User = me.Apply(getClientOpenIdUserInfoResult =\u003e getClientOpenIdUserInfoResult.Email),\n Key = Std.File.Invoke(new()\n {\n Input = \"path/to/id_rsa.pub\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/oslogin\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tme, err := organizations.GetClientOpenIdUserInfo(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/id_rsa.pub\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = oslogin.NewSshPublicKey(ctx, \"cache\", \u0026oslogin.SshPublicKeyArgs{\n\t\t\tUser: pulumi.String(me.Email),\n\t\t\tKey: pulumi.String(invokeFile.Result),\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.oslogin.SshPublicKey;\nimport com.pulumi.gcp.oslogin.SshPublicKeyArgs;\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 me = OrganizationsFunctions.getClientOpenIdUserInfo();\n\n var cache = new SshPublicKey(\"cache\", SshPublicKeyArgs.builder()\n .user(me.applyValue(getClientOpenIdUserInfoResult -\u003e getClientOpenIdUserInfoResult.email()))\n .key(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/id_rsa.pub\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:oslogin:SshPublicKey\n properties:\n user: ${me.email}\n key:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/id_rsa.pub\n Return: result\nvariables:\n me:\n fn::invoke:\n Function: gcp:organizations:getClientOpenIdUserInfo\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSSHPublicKey can be imported using any of these accepted formats:\n\n* `users/{{user}}/sshPublicKeys/{{fingerprint}}`\n\n* `{{user}}/{{fingerprint}}`\n\nWhen using the `pulumi import` command, SSHPublicKey can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:oslogin/sshPublicKey:SshPublicKey default users/{{user}}/sshPublicKeys/{{fingerprint}}\n```\n\n```sh\n$ pulumi import gcp:oslogin/sshPublicKey:SshPublicKey default {{user}}/{{fingerprint}}\n```\n\n", "properties": { "expirationTimeUsec": { "type": "string", @@ -226630,7 +226630,7 @@ } }, "gcp:privilegedaccessmanager/entitlement:entitlement": { - "description": "An Entitlement defines the eligibility of a set of users to obtain a predefined access for some time possibly after going through an approval workflow.\n\n\n\n## Example Usage\n\n### Privileged Access Manager Entitlement Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tfentitlement = new gcp.privilegedaccessmanager.Entitlement(\"tfentitlement\", {\n entitlementId: \"example-entitlement\",\n location: \"global\",\n maxRequestDuration: \"43200s\",\n parent: \"projects/my-project-name\",\n requesterJustificationConfig: {\n unstructured: {},\n },\n eligibleUsers: [{\n principals: [\"group:test@google.com\"],\n }],\n privilegedAccess: {\n gcpIamAccess: {\n roleBindings: [{\n role: \"roles/storage.admin\",\n conditionExpression: \"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\",\n }],\n resource: \"//cloudresourcemanager.googleapis.com/projects/my-project-name\",\n resourceType: \"cloudresourcemanager.googleapis.com/Project\",\n },\n },\n additionalNotificationTargets: {\n adminEmailRecipients: [\"user@example.com\"],\n requesterEmailRecipients: [\"user@example.com\"],\n },\n approvalWorkflow: {\n manualApprovals: {\n requireApproverJustification: true,\n steps: [{\n approvalsNeeded: 1,\n approverEmailRecipients: [\"user@example.com\"],\n approvers: {\n principals: [\"group:test@google.com\"],\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntfentitlement = gcp.privilegedaccessmanager.Entitlement(\"tfentitlement\",\n entitlement_id=\"example-entitlement\",\n location=\"global\",\n max_request_duration=\"43200s\",\n parent=\"projects/my-project-name\",\n requester_justification_config={\n \"unstructured\": {},\n },\n eligible_users=[{\n \"principals\": [\"group:test@google.com\"],\n }],\n privileged_access={\n \"gcpIamAccess\": {\n \"roleBindings\": [{\n \"role\": \"roles/storage.admin\",\n \"conditionExpression\": \"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\",\n }],\n \"resource\": \"//cloudresourcemanager.googleapis.com/projects/my-project-name\",\n \"resourceType\": \"cloudresourcemanager.googleapis.com/Project\",\n },\n },\n additional_notification_targets={\n \"adminEmailRecipients\": [\"user@example.com\"],\n \"requesterEmailRecipients\": [\"user@example.com\"],\n },\n approval_workflow={\n \"manualApprovals\": {\n \"requireApproverJustification\": True,\n \"steps\": [{\n \"approvalsNeeded\": 1,\n \"approverEmailRecipients\": [\"user@example.com\"],\n \"approvers\": {\n \"principals\": [\"group:test@google.com\"],\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 tfentitlement = new Gcp.PrivilegedAccessManager.Entitlement(\"tfentitlement\", new()\n {\n EntitlementId = \"example-entitlement\",\n Location = \"global\",\n MaxRequestDuration = \"43200s\",\n Parent = \"projects/my-project-name\",\n RequesterJustificationConfig = new Gcp.PrivilegedAccessManager.Inputs.EntitlementRequesterJustificationConfigArgs\n {\n Unstructured = null,\n },\n EligibleUsers = new[]\n {\n new Gcp.PrivilegedAccessManager.Inputs.EntitlementEligibleUserArgs\n {\n Principals = new[]\n {\n \"group:test@google.com\",\n },\n },\n },\n PrivilegedAccess = new Gcp.PrivilegedAccessManager.Inputs.EntitlementPrivilegedAccessArgs\n {\n GcpIamAccess = new Gcp.PrivilegedAccessManager.Inputs.EntitlementPrivilegedAccessGcpIamAccessArgs\n {\n RoleBindings = new[]\n {\n new Gcp.PrivilegedAccessManager.Inputs.EntitlementPrivilegedAccessGcpIamAccessRoleBindingArgs\n {\n Role = \"roles/storage.admin\",\n ConditionExpression = \"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\",\n },\n },\n Resource = \"//cloudresourcemanager.googleapis.com/projects/my-project-name\",\n ResourceType = \"cloudresourcemanager.googleapis.com/Project\",\n },\n },\n AdditionalNotificationTargets = new Gcp.PrivilegedAccessManager.Inputs.EntitlementAdditionalNotificationTargetsArgs\n {\n AdminEmailRecipients = new[]\n {\n \"user@example.com\",\n },\n RequesterEmailRecipients = new[]\n {\n \"user@example.com\",\n },\n },\n ApprovalWorkflow = new Gcp.PrivilegedAccessManager.Inputs.EntitlementApprovalWorkflowArgs\n {\n ManualApprovals = new Gcp.PrivilegedAccessManager.Inputs.EntitlementApprovalWorkflowManualApprovalsArgs\n {\n RequireApproverJustification = true,\n Steps = new[]\n {\n new Gcp.PrivilegedAccessManager.Inputs.EntitlementApprovalWorkflowManualApprovalsStepArgs\n {\n ApprovalsNeeded = 1,\n ApproverEmailRecipients = new[]\n {\n \"user@example.com\",\n },\n Approvers = new Gcp.PrivilegedAccessManager.Inputs.EntitlementApprovalWorkflowManualApprovalsStepApproversArgs\n {\n Principals = new[]\n {\n \"group:test@google.com\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/privilegedaccessmanager\"\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 := privilegedaccessmanager.Newentitlement(ctx, \"tfentitlement\", \u0026privilegedaccessmanager.entitlementArgs{\n\t\t\tEntitlementId: pulumi.String(\"example-entitlement\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tMaxRequestDuration: pulumi.String(\"43200s\"),\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tRequesterJustificationConfig: \u0026privilegedaccessmanager.EntitlementRequesterJustificationConfigArgs{\n\t\t\t\tUnstructured: nil,\n\t\t\t},\n\t\t\tEligibleUsers: privilegedaccessmanager.EntitlementEligibleUserArray{\n\t\t\t\t\u0026privilegedaccessmanager.EntitlementEligibleUserArgs{\n\t\t\t\t\tPrincipals: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"group:test@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPrivilegedAccess: \u0026privilegedaccessmanager.EntitlementPrivilegedAccessArgs{\n\t\t\t\tGcpIamAccess: \u0026privilegedaccessmanager.EntitlementPrivilegedAccessGcpIamAccessArgs{\n\t\t\t\t\tRoleBindings: privilegedaccessmanager.EntitlementPrivilegedAccessGcpIamAccessRoleBindingArray{\n\t\t\t\t\t\t\u0026privilegedaccessmanager.EntitlementPrivilegedAccessGcpIamAccessRoleBindingArgs{\n\t\t\t\t\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\t\t\t\t\tConditionExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tResource: pulumi.String(\"//cloudresourcemanager.googleapis.com/projects/my-project-name\"),\n\t\t\t\t\tResourceType: pulumi.String(\"cloudresourcemanager.googleapis.com/Project\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAdditionalNotificationTargets: \u0026privilegedaccessmanager.EntitlementAdditionalNotificationTargetsArgs{\n\t\t\t\tAdminEmailRecipients: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"user@example.com\"),\n\t\t\t\t},\n\t\t\t\tRequesterEmailRecipients: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"user@example.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tApprovalWorkflow: \u0026privilegedaccessmanager.EntitlementApprovalWorkflowArgs{\n\t\t\t\tManualApprovals: \u0026privilegedaccessmanager.EntitlementApprovalWorkflowManualApprovalsArgs{\n\t\t\t\t\tRequireApproverJustification: pulumi.Bool(true),\n\t\t\t\t\tSteps: privilegedaccessmanager.EntitlementApprovalWorkflowManualApprovalsStepArray{\n\t\t\t\t\t\t\u0026privilegedaccessmanager.EntitlementApprovalWorkflowManualApprovalsStepArgs{\n\t\t\t\t\t\t\tApprovalsNeeded: pulumi.Int(1),\n\t\t\t\t\t\t\tApproverEmailRecipients: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"user@example.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tApprovers: \u0026privilegedaccessmanager.EntitlementApprovalWorkflowManualApprovalsStepApproversArgs{\n\t\t\t\t\t\t\t\tPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"group:test@google.com\"),\n\t\t\t\t\t\t\t\t},\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.privilegedaccessmanager.entitlement;\nimport com.pulumi.gcp.privilegedaccessmanager.EntitlementArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementRequesterJustificationConfigArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementRequesterJustificationConfigUnstructuredArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementEligibleUserArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementPrivilegedAccessArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementPrivilegedAccessGcpIamAccessArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementAdditionalNotificationTargetsArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementApprovalWorkflowArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementApprovalWorkflowManualApprovalsArgs;\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 tfentitlement = new Entitlement(\"tfentitlement\", EntitlementArgs.builder()\n .entitlementId(\"example-entitlement\")\n .location(\"global\")\n .maxRequestDuration(\"43200s\")\n .parent(\"projects/my-project-name\")\n .requesterJustificationConfig(EntitlementRequesterJustificationConfigArgs.builder()\n .unstructured()\n .build())\n .eligibleUsers(EntitlementEligibleUserArgs.builder()\n .principals(\"group:test@google.com\")\n .build())\n .privilegedAccess(EntitlementPrivilegedAccessArgs.builder()\n .gcpIamAccess(EntitlementPrivilegedAccessGcpIamAccessArgs.builder()\n .roleBindings(EntitlementPrivilegedAccessGcpIamAccessRoleBindingArgs.builder()\n .role(\"roles/storage.admin\")\n .conditionExpression(\"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\")\n .build())\n .resource(\"//cloudresourcemanager.googleapis.com/projects/my-project-name\")\n .resourceType(\"cloudresourcemanager.googleapis.com/Project\")\n .build())\n .build())\n .additionalNotificationTargets(EntitlementAdditionalNotificationTargetsArgs.builder()\n .adminEmailRecipients(\"user@example.com\")\n .requesterEmailRecipients(\"user@example.com\")\n .build())\n .approvalWorkflow(EntitlementApprovalWorkflowArgs.builder()\n .manualApprovals(EntitlementApprovalWorkflowManualApprovalsArgs.builder()\n .requireApproverJustification(true)\n .steps(EntitlementApprovalWorkflowManualApprovalsStepArgs.builder()\n .approvalsNeeded(1)\n .approverEmailRecipients(\"user@example.com\")\n .approvers(EntitlementApprovalWorkflowManualApprovalsStepApproversArgs.builder()\n .principals(\"group:test@google.com\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tfentitlement:\n type: gcp:privilegedaccessmanager:entitlement\n properties:\n entitlementId: example-entitlement\n location: global\n maxRequestDuration: 43200s\n parent: projects/my-project-name\n requesterJustificationConfig:\n unstructured: {}\n eligibleUsers:\n - principals:\n - group:test@google.com\n privilegedAccess:\n gcpIamAccess:\n roleBindings:\n - role: roles/storage.admin\n conditionExpression: request.time \u003c timestamp(\"2024-04-23T18:30:00.000Z\")\n resource: //cloudresourcemanager.googleapis.com/projects/my-project-name\n resourceType: cloudresourcemanager.googleapis.com/Project\n additionalNotificationTargets:\n adminEmailRecipients:\n - user@example.com\n requesterEmailRecipients:\n - user@example.com\n approvalWorkflow:\n manualApprovals:\n requireApproverJustification: true\n steps:\n - approvalsNeeded: 1\n approverEmailRecipients:\n - user@example.com\n approvers:\n principals:\n - group:test@google.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEntitlement can be imported using any of these accepted formats:\n\n* `{{parent}}/locations/{{location}}/entitlements/{{entitlement_id}}`\n\nWhen using the `pulumi import` command, Entitlement can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:privilegedaccessmanager/entitlement:entitlement default {{parent}}/locations/{{location}}/entitlements/{{entitlement_id}}\n```\n\n", + "description": "An Entitlement defines the eligibility of a set of users to obtain a predefined access for some time possibly after going through an approval workflow.\n\n\n\n## Example Usage\n\n### Privileged Access Manager Entitlement Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tfentitlement = new gcp.privilegedaccessmanager.Entitlement(\"tfentitlement\", {\n entitlementId: \"example-entitlement\",\n location: \"global\",\n maxRequestDuration: \"43200s\",\n parent: \"projects/my-project-name\",\n requesterJustificationConfig: {\n unstructured: {},\n },\n eligibleUsers: [{\n principals: [\"group:test@google.com\"],\n }],\n privilegedAccess: {\n gcpIamAccess: {\n roleBindings: [{\n role: \"roles/storage.admin\",\n conditionExpression: \"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\",\n }],\n resource: \"//cloudresourcemanager.googleapis.com/projects/my-project-name\",\n resourceType: \"cloudresourcemanager.googleapis.com/Project\",\n },\n },\n additionalNotificationTargets: {\n adminEmailRecipients: [\"user@example.com\"],\n requesterEmailRecipients: [\"user@example.com\"],\n },\n approvalWorkflow: {\n manualApprovals: {\n requireApproverJustification: true,\n steps: [{\n approvalsNeeded: 1,\n approverEmailRecipients: [\"user@example.com\"],\n approvers: {\n principals: [\"group:test@google.com\"],\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntfentitlement = gcp.privilegedaccessmanager.Entitlement(\"tfentitlement\",\n entitlement_id=\"example-entitlement\",\n location=\"global\",\n max_request_duration=\"43200s\",\n parent=\"projects/my-project-name\",\n requester_justification_config={\n \"unstructured\": {},\n },\n eligible_users=[{\n \"principals\": [\"group:test@google.com\"],\n }],\n privileged_access={\n \"gcp_iam_access\": {\n \"role_bindings\": [{\n \"role\": \"roles/storage.admin\",\n \"condition_expression\": \"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\",\n }],\n \"resource\": \"//cloudresourcemanager.googleapis.com/projects/my-project-name\",\n \"resource_type\": \"cloudresourcemanager.googleapis.com/Project\",\n },\n },\n additional_notification_targets={\n \"admin_email_recipients\": [\"user@example.com\"],\n \"requester_email_recipients\": [\"user@example.com\"],\n },\n approval_workflow={\n \"manual_approvals\": {\n \"require_approver_justification\": True,\n \"steps\": [{\n \"approvals_needed\": 1,\n \"approver_email_recipients\": [\"user@example.com\"],\n \"approvers\": {\n \"principals\": [\"group:test@google.com\"],\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 tfentitlement = new Gcp.PrivilegedAccessManager.Entitlement(\"tfentitlement\", new()\n {\n EntitlementId = \"example-entitlement\",\n Location = \"global\",\n MaxRequestDuration = \"43200s\",\n Parent = \"projects/my-project-name\",\n RequesterJustificationConfig = new Gcp.PrivilegedAccessManager.Inputs.EntitlementRequesterJustificationConfigArgs\n {\n Unstructured = null,\n },\n EligibleUsers = new[]\n {\n new Gcp.PrivilegedAccessManager.Inputs.EntitlementEligibleUserArgs\n {\n Principals = new[]\n {\n \"group:test@google.com\",\n },\n },\n },\n PrivilegedAccess = new Gcp.PrivilegedAccessManager.Inputs.EntitlementPrivilegedAccessArgs\n {\n GcpIamAccess = new Gcp.PrivilegedAccessManager.Inputs.EntitlementPrivilegedAccessGcpIamAccessArgs\n {\n RoleBindings = new[]\n {\n new Gcp.PrivilegedAccessManager.Inputs.EntitlementPrivilegedAccessGcpIamAccessRoleBindingArgs\n {\n Role = \"roles/storage.admin\",\n ConditionExpression = \"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\",\n },\n },\n Resource = \"//cloudresourcemanager.googleapis.com/projects/my-project-name\",\n ResourceType = \"cloudresourcemanager.googleapis.com/Project\",\n },\n },\n AdditionalNotificationTargets = new Gcp.PrivilegedAccessManager.Inputs.EntitlementAdditionalNotificationTargetsArgs\n {\n AdminEmailRecipients = new[]\n {\n \"user@example.com\",\n },\n RequesterEmailRecipients = new[]\n {\n \"user@example.com\",\n },\n },\n ApprovalWorkflow = new Gcp.PrivilegedAccessManager.Inputs.EntitlementApprovalWorkflowArgs\n {\n ManualApprovals = new Gcp.PrivilegedAccessManager.Inputs.EntitlementApprovalWorkflowManualApprovalsArgs\n {\n RequireApproverJustification = true,\n Steps = new[]\n {\n new Gcp.PrivilegedAccessManager.Inputs.EntitlementApprovalWorkflowManualApprovalsStepArgs\n {\n ApprovalsNeeded = 1,\n ApproverEmailRecipients = new[]\n {\n \"user@example.com\",\n },\n Approvers = new Gcp.PrivilegedAccessManager.Inputs.EntitlementApprovalWorkflowManualApprovalsStepApproversArgs\n {\n Principals = new[]\n {\n \"group:test@google.com\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/privilegedaccessmanager\"\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 := privilegedaccessmanager.Newentitlement(ctx, \"tfentitlement\", \u0026privilegedaccessmanager.entitlementArgs{\n\t\t\tEntitlementId: pulumi.String(\"example-entitlement\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tMaxRequestDuration: pulumi.String(\"43200s\"),\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tRequesterJustificationConfig: \u0026privilegedaccessmanager.EntitlementRequesterJustificationConfigArgs{\n\t\t\t\tUnstructured: nil,\n\t\t\t},\n\t\t\tEligibleUsers: privilegedaccessmanager.EntitlementEligibleUserArray{\n\t\t\t\t\u0026privilegedaccessmanager.EntitlementEligibleUserArgs{\n\t\t\t\t\tPrincipals: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"group:test@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPrivilegedAccess: \u0026privilegedaccessmanager.EntitlementPrivilegedAccessArgs{\n\t\t\t\tGcpIamAccess: \u0026privilegedaccessmanager.EntitlementPrivilegedAccessGcpIamAccessArgs{\n\t\t\t\t\tRoleBindings: privilegedaccessmanager.EntitlementPrivilegedAccessGcpIamAccessRoleBindingArray{\n\t\t\t\t\t\t\u0026privilegedaccessmanager.EntitlementPrivilegedAccessGcpIamAccessRoleBindingArgs{\n\t\t\t\t\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\t\t\t\t\tConditionExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tResource: pulumi.String(\"//cloudresourcemanager.googleapis.com/projects/my-project-name\"),\n\t\t\t\t\tResourceType: pulumi.String(\"cloudresourcemanager.googleapis.com/Project\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAdditionalNotificationTargets: \u0026privilegedaccessmanager.EntitlementAdditionalNotificationTargetsArgs{\n\t\t\t\tAdminEmailRecipients: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"user@example.com\"),\n\t\t\t\t},\n\t\t\t\tRequesterEmailRecipients: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"user@example.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tApprovalWorkflow: \u0026privilegedaccessmanager.EntitlementApprovalWorkflowArgs{\n\t\t\t\tManualApprovals: \u0026privilegedaccessmanager.EntitlementApprovalWorkflowManualApprovalsArgs{\n\t\t\t\t\tRequireApproverJustification: pulumi.Bool(true),\n\t\t\t\t\tSteps: privilegedaccessmanager.EntitlementApprovalWorkflowManualApprovalsStepArray{\n\t\t\t\t\t\t\u0026privilegedaccessmanager.EntitlementApprovalWorkflowManualApprovalsStepArgs{\n\t\t\t\t\t\t\tApprovalsNeeded: pulumi.Int(1),\n\t\t\t\t\t\t\tApproverEmailRecipients: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"user@example.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tApprovers: \u0026privilegedaccessmanager.EntitlementApprovalWorkflowManualApprovalsStepApproversArgs{\n\t\t\t\t\t\t\t\tPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"group:test@google.com\"),\n\t\t\t\t\t\t\t\t},\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.privilegedaccessmanager.entitlement;\nimport com.pulumi.gcp.privilegedaccessmanager.EntitlementArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementRequesterJustificationConfigArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementRequesterJustificationConfigUnstructuredArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementEligibleUserArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementPrivilegedAccessArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementPrivilegedAccessGcpIamAccessArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementAdditionalNotificationTargetsArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementApprovalWorkflowArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementApprovalWorkflowManualApprovalsArgs;\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 tfentitlement = new Entitlement(\"tfentitlement\", EntitlementArgs.builder()\n .entitlementId(\"example-entitlement\")\n .location(\"global\")\n .maxRequestDuration(\"43200s\")\n .parent(\"projects/my-project-name\")\n .requesterJustificationConfig(EntitlementRequesterJustificationConfigArgs.builder()\n .unstructured()\n .build())\n .eligibleUsers(EntitlementEligibleUserArgs.builder()\n .principals(\"group:test@google.com\")\n .build())\n .privilegedAccess(EntitlementPrivilegedAccessArgs.builder()\n .gcpIamAccess(EntitlementPrivilegedAccessGcpIamAccessArgs.builder()\n .roleBindings(EntitlementPrivilegedAccessGcpIamAccessRoleBindingArgs.builder()\n .role(\"roles/storage.admin\")\n .conditionExpression(\"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\")\n .build())\n .resource(\"//cloudresourcemanager.googleapis.com/projects/my-project-name\")\n .resourceType(\"cloudresourcemanager.googleapis.com/Project\")\n .build())\n .build())\n .additionalNotificationTargets(EntitlementAdditionalNotificationTargetsArgs.builder()\n .adminEmailRecipients(\"user@example.com\")\n .requesterEmailRecipients(\"user@example.com\")\n .build())\n .approvalWorkflow(EntitlementApprovalWorkflowArgs.builder()\n .manualApprovals(EntitlementApprovalWorkflowManualApprovalsArgs.builder()\n .requireApproverJustification(true)\n .steps(EntitlementApprovalWorkflowManualApprovalsStepArgs.builder()\n .approvalsNeeded(1)\n .approverEmailRecipients(\"user@example.com\")\n .approvers(EntitlementApprovalWorkflowManualApprovalsStepApproversArgs.builder()\n .principals(\"group:test@google.com\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tfentitlement:\n type: gcp:privilegedaccessmanager:entitlement\n properties:\n entitlementId: example-entitlement\n location: global\n maxRequestDuration: 43200s\n parent: projects/my-project-name\n requesterJustificationConfig:\n unstructured: {}\n eligibleUsers:\n - principals:\n - group:test@google.com\n privilegedAccess:\n gcpIamAccess:\n roleBindings:\n - role: roles/storage.admin\n conditionExpression: request.time \u003c timestamp(\"2024-04-23T18:30:00.000Z\")\n resource: //cloudresourcemanager.googleapis.com/projects/my-project-name\n resourceType: cloudresourcemanager.googleapis.com/Project\n additionalNotificationTargets:\n adminEmailRecipients:\n - user@example.com\n requesterEmailRecipients:\n - user@example.com\n approvalWorkflow:\n manualApprovals:\n requireApproverJustification: true\n steps:\n - approvalsNeeded: 1\n approverEmailRecipients:\n - user@example.com\n approvers:\n principals:\n - group:test@google.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEntitlement can be imported using any of these accepted formats:\n\n* `{{parent}}/locations/{{location}}/entitlements/{{entitlement_id}}`\n\nWhen using the `pulumi import` command, Entitlement can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:privilegedaccessmanager/entitlement:entitlement default {{parent}}/locations/{{location}}/entitlements/{{entitlement_id}}\n```\n\n", "properties": { "additionalNotificationTargets": { "$ref": "#/types/gcp:privilegedaccessmanager/entitlementAdditionalNotificationTargets:entitlementAdditionalNotificationTargets", @@ -226831,7 +226831,7 @@ } }, "gcp:projects/accessApprovalSettings:AccessApprovalSettings": { - "description": "Access Approval enables you to require your explicit approval whenever Google support and engineering need to access your customer content.\n\n\nTo get more information about ProjectSettings, see:\n\n* [API documentation](https://cloud.google.com/access-approval/docs/reference/rest/v1/projects)\n\n## Example Usage\n\n### Project Access Approval Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst projectAccessApproval = new gcp.projects.AccessApprovalSettings(\"project_access_approval\", {\n projectId: \"my-project-name\",\n notificationEmails: [\n \"testuser@example.com\",\n \"example.user@example.com\",\n ],\n enrolledServices: [{\n cloudProduct: \"all\",\n enrollmentLevel: \"BLOCK_ALL\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject_access_approval = gcp.projects.AccessApprovalSettings(\"project_access_approval\",\n project_id=\"my-project-name\",\n notification_emails=[\n \"testuser@example.com\",\n \"example.user@example.com\",\n ],\n enrolled_services=[{\n \"cloudProduct\": \"all\",\n \"enrollmentLevel\": \"BLOCK_ALL\",\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 projectAccessApproval = new Gcp.Projects.AccessApprovalSettings(\"project_access_approval\", new()\n {\n ProjectId = \"my-project-name\",\n NotificationEmails = new[]\n {\n \"testuser@example.com\",\n \"example.user@example.com\",\n },\n EnrolledServices = new[]\n {\n new Gcp.Projects.Inputs.AccessApprovalSettingsEnrolledServiceArgs\n {\n CloudProduct = \"all\",\n EnrollmentLevel = \"BLOCK_ALL\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewAccessApprovalSettings(ctx, \"project_access_approval\", \u0026projects.AccessApprovalSettingsArgs{\n\t\t\tProjectId: pulumi.String(\"my-project-name\"),\n\t\t\tNotificationEmails: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"testuser@example.com\"),\n\t\t\t\tpulumi.String(\"example.user@example.com\"),\n\t\t\t},\n\t\t\tEnrolledServices: projects.AccessApprovalSettingsEnrolledServiceArray{\n\t\t\t\t\u0026projects.AccessApprovalSettingsEnrolledServiceArgs{\n\t\t\t\t\tCloudProduct: pulumi.String(\"all\"),\n\t\t\t\t\tEnrollmentLevel: pulumi.String(\"BLOCK_ALL\"),\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.projects.AccessApprovalSettings;\nimport com.pulumi.gcp.projects.AccessApprovalSettingsArgs;\nimport com.pulumi.gcp.projects.inputs.AccessApprovalSettingsEnrolledServiceArgs;\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 projectAccessApproval = new AccessApprovalSettings(\"projectAccessApproval\", AccessApprovalSettingsArgs.builder()\n .projectId(\"my-project-name\")\n .notificationEmails( \n \"testuser@example.com\",\n \"example.user@example.com\")\n .enrolledServices(AccessApprovalSettingsEnrolledServiceArgs.builder()\n .cloudProduct(\"all\")\n .enrollmentLevel(\"BLOCK_ALL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n projectAccessApproval:\n type: gcp:projects:AccessApprovalSettings\n name: project_access_approval\n properties:\n projectId: my-project-name\n notificationEmails:\n - testuser@example.com\n - example.user@example.com\n enrolledServices:\n - cloudProduct: all\n enrollmentLevel: BLOCK_ALL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Project Access Approval Active Key Version\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"key-ring\",\n location: \"global\",\n project: \"my-project-name\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"crypto-key\",\n keyRing: keyRing.id,\n purpose: \"ASYMMETRIC_SIGN\",\n versionTemplate: {\n algorithm: \"EC_SIGN_P384_SHA384\",\n },\n});\nconst serviceAccount = gcp.accessapproval.getProjectServiceAccount({\n projectId: \"my-project-name\",\n});\nconst iam = new gcp.kms.CryptoKeyIAMMember(\"iam\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.signerVerifier\",\n member: serviceAccount.then(serviceAccount =\u003e `serviceAccount:${serviceAccount.accountEmail}`),\n});\nconst cryptoKeyVersion = gcp.kms.getKMSCryptoKeyVersionOutput({\n cryptoKey: cryptoKey.id,\n});\nconst projectAccessApproval = new gcp.projects.AccessApprovalSettings(\"project_access_approval\", {\n projectId: \"my-project-name\",\n activeKeyVersion: cryptoKeyVersion.apply(cryptoKeyVersion =\u003e cryptoKeyVersion.name),\n enrolledServices: [{\n cloudProduct: \"all\",\n }],\n}, {\n dependsOn: [iam],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"key-ring\",\n location=\"global\",\n project=\"my-project-name\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"crypto-key\",\n key_ring=key_ring.id,\n purpose=\"ASYMMETRIC_SIGN\",\n version_template={\n \"algorithm\": \"EC_SIGN_P384_SHA384\",\n })\nservice_account = gcp.accessapproval.get_project_service_account(project_id=\"my-project-name\")\niam = gcp.kms.CryptoKeyIAMMember(\"iam\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.signerVerifier\",\n member=f\"serviceAccount:{service_account.account_email}\")\ncrypto_key_version = gcp.kms.get_kms_crypto_key_version_output(crypto_key=crypto_key.id)\nproject_access_approval = gcp.projects.AccessApprovalSettings(\"project_access_approval\",\n project_id=\"my-project-name\",\n active_key_version=crypto_key_version.name,\n enrolled_services=[{\n \"cloudProduct\": \"all\",\n }],\n opts = pulumi.ResourceOptions(depends_on=[iam]))\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(\"key_ring\", new()\n {\n Name = \"key-ring\",\n Location = \"global\",\n Project = \"my-project-name\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"crypto-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ASYMMETRIC_SIGN\",\n VersionTemplate = new Gcp.Kms.Inputs.CryptoKeyVersionTemplateArgs\n {\n Algorithm = \"EC_SIGN_P384_SHA384\",\n },\n });\n\n var serviceAccount = Gcp.AccessApproval.GetProjectServiceAccount.Invoke(new()\n {\n ProjectId = \"my-project-name\",\n });\n\n var iam = new Gcp.Kms.CryptoKeyIAMMember(\"iam\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.signerVerifier\",\n Member = $\"serviceAccount:{serviceAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.AccountEmail)}\",\n });\n\n var cryptoKeyVersion = Gcp.Kms.GetKMSCryptoKeyVersion.Invoke(new()\n {\n CryptoKey = cryptoKey.Id,\n });\n\n var projectAccessApproval = new Gcp.Projects.AccessApprovalSettings(\"project_access_approval\", new()\n {\n ProjectId = \"my-project-name\",\n ActiveKeyVersion = cryptoKeyVersion.Apply(getKMSCryptoKeyVersionResult =\u003e getKMSCryptoKeyVersionResult.Name),\n EnrolledServices = new[]\n {\n new Gcp.Projects.Inputs.AccessApprovalSettingsEnrolledServiceArgs\n {\n CloudProduct = \"all\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n iam,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/accessapproval\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"key-ring\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"crypto-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ASYMMETRIC_SIGN\"),\n\t\t\tVersionTemplate: \u0026kms.CryptoKeyVersionTemplateArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"EC_SIGN_P384_SHA384\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceAccount, err := accessapproval.GetProjectServiceAccount(ctx, \u0026accessapproval.GetProjectServiceAccountArgs{\n\t\t\tProjectId: \"my-project-name\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tiam, err := kms.NewCryptoKeyIAMMember(ctx, \"iam\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.signerVerifier\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v\", serviceAccount.AccountEmail)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyVersion := kms.GetKMSCryptoKeyVersionOutput(ctx, kms.GetKMSCryptoKeyVersionOutputArgs{\n\t\t\tCryptoKey: cryptoKey.ID(),\n\t\t}, nil)\n\t\t_, err = projects.NewAccessApprovalSettings(ctx, \"project_access_approval\", \u0026projects.AccessApprovalSettingsArgs{\n\t\t\tProjectId: pulumi.String(\"my-project-name\"),\n\t\t\tActiveKeyVersion: cryptoKeyVersion.ApplyT(func(cryptoKeyVersion kms.GetKMSCryptoKeyVersionResult) (*string, error) {\n\t\t\t\treturn \u0026cryptoKeyVersion.Name, nil\n\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\tEnrolledServices: projects.AccessApprovalSettingsEnrolledServiceArray{\n\t\t\t\t\u0026projects.AccessApprovalSettingsEnrolledServiceArgs{\n\t\t\t\t\tCloudProduct: pulumi.String(\"all\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tiam,\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.kms.inputs.CryptoKeyVersionTemplateArgs;\nimport com.pulumi.gcp.accessapproval.AccessapprovalFunctions;\nimport com.pulumi.gcp.accessapproval.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.kms.KmsFunctions;\nimport com.pulumi.gcp.kms.inputs.GetKMSCryptoKeyVersionArgs;\nimport com.pulumi.gcp.projects.AccessApprovalSettings;\nimport com.pulumi.gcp.projects.AccessApprovalSettingsArgs;\nimport com.pulumi.gcp.projects.inputs.AccessApprovalSettingsEnrolledServiceArgs;\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 .name(\"key-ring\")\n .location(\"global\")\n .project(\"my-project-name\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"crypto-key\")\n .keyRing(keyRing.id())\n .purpose(\"ASYMMETRIC_SIGN\")\n .versionTemplate(CryptoKeyVersionTemplateArgs.builder()\n .algorithm(\"EC_SIGN_P384_SHA384\")\n .build())\n .build());\n\n final var serviceAccount = AccessapprovalFunctions.getProjectServiceAccount(GetProjectServiceAccountArgs.builder()\n .projectId(\"my-project-name\")\n .build());\n\n var iam = new CryptoKeyIAMMember(\"iam\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.signerVerifier\")\n .member(String.format(\"serviceAccount:%s\", serviceAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.accountEmail())))\n .build());\n\n final var cryptoKeyVersion = KmsFunctions.getKMSCryptoKeyVersion(GetKMSCryptoKeyVersionArgs.builder()\n .cryptoKey(cryptoKey.id())\n .build());\n\n var projectAccessApproval = new AccessApprovalSettings(\"projectAccessApproval\", AccessApprovalSettingsArgs.builder()\n .projectId(\"my-project-name\")\n .activeKeyVersion(cryptoKeyVersion.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult).applyValue(cryptoKeyVersion -\u003e cryptoKeyVersion.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult.name())))\n .enrolledServices(AccessApprovalSettingsEnrolledServiceArgs.builder()\n .cloudProduct(\"all\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(iam)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: key-ring\n location: global\n project: my-project-name\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: crypto-key\n keyRing: ${keyRing.id}\n purpose: ASYMMETRIC_SIGN\n versionTemplate:\n algorithm: EC_SIGN_P384_SHA384\n iam:\n type: gcp:kms:CryptoKeyIAMMember\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.signerVerifier\n member: serviceAccount:${serviceAccount.accountEmail}\n projectAccessApproval:\n type: gcp:projects:AccessApprovalSettings\n name: project_access_approval\n properties:\n projectId: my-project-name\n activeKeyVersion: ${cryptoKeyVersion.name}\n enrolledServices:\n - cloudProduct: all\n options:\n dependson:\n - ${iam}\nvariables:\n serviceAccount:\n fn::invoke:\n Function: gcp:accessapproval:getProjectServiceAccount\n Arguments:\n projectId: my-project-name\n cryptoKeyVersion:\n fn::invoke:\n Function: gcp:kms:getKMSCryptoKeyVersion\n Arguments:\n cryptoKey: ${cryptoKey.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProjectSettings can be imported using any of these accepted formats:\n\n* `projects/{{project_id}}/accessApprovalSettings`\n\n* `{{project_id}}`\n\nWhen using the `pulumi import` command, ProjectSettings can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:projects/accessApprovalSettings:AccessApprovalSettings default projects/{{project_id}}/accessApprovalSettings\n```\n\n```sh\n$ pulumi import gcp:projects/accessApprovalSettings:AccessApprovalSettings default {{project_id}}\n```\n\n", + "description": "Access Approval enables you to require your explicit approval whenever Google support and engineering need to access your customer content.\n\n\nTo get more information about ProjectSettings, see:\n\n* [API documentation](https://cloud.google.com/access-approval/docs/reference/rest/v1/projects)\n\n## Example Usage\n\n### Project Access Approval Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst projectAccessApproval = new gcp.projects.AccessApprovalSettings(\"project_access_approval\", {\n projectId: \"my-project-name\",\n notificationEmails: [\n \"testuser@example.com\",\n \"example.user@example.com\",\n ],\n enrolledServices: [{\n cloudProduct: \"all\",\n enrollmentLevel: \"BLOCK_ALL\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject_access_approval = gcp.projects.AccessApprovalSettings(\"project_access_approval\",\n project_id=\"my-project-name\",\n notification_emails=[\n \"testuser@example.com\",\n \"example.user@example.com\",\n ],\n enrolled_services=[{\n \"cloud_product\": \"all\",\n \"enrollment_level\": \"BLOCK_ALL\",\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 projectAccessApproval = new Gcp.Projects.AccessApprovalSettings(\"project_access_approval\", new()\n {\n ProjectId = \"my-project-name\",\n NotificationEmails = new[]\n {\n \"testuser@example.com\",\n \"example.user@example.com\",\n },\n EnrolledServices = new[]\n {\n new Gcp.Projects.Inputs.AccessApprovalSettingsEnrolledServiceArgs\n {\n CloudProduct = \"all\",\n EnrollmentLevel = \"BLOCK_ALL\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewAccessApprovalSettings(ctx, \"project_access_approval\", \u0026projects.AccessApprovalSettingsArgs{\n\t\t\tProjectId: pulumi.String(\"my-project-name\"),\n\t\t\tNotificationEmails: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"testuser@example.com\"),\n\t\t\t\tpulumi.String(\"example.user@example.com\"),\n\t\t\t},\n\t\t\tEnrolledServices: projects.AccessApprovalSettingsEnrolledServiceArray{\n\t\t\t\t\u0026projects.AccessApprovalSettingsEnrolledServiceArgs{\n\t\t\t\t\tCloudProduct: pulumi.String(\"all\"),\n\t\t\t\t\tEnrollmentLevel: pulumi.String(\"BLOCK_ALL\"),\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.projects.AccessApprovalSettings;\nimport com.pulumi.gcp.projects.AccessApprovalSettingsArgs;\nimport com.pulumi.gcp.projects.inputs.AccessApprovalSettingsEnrolledServiceArgs;\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 projectAccessApproval = new AccessApprovalSettings(\"projectAccessApproval\", AccessApprovalSettingsArgs.builder()\n .projectId(\"my-project-name\")\n .notificationEmails( \n \"testuser@example.com\",\n \"example.user@example.com\")\n .enrolledServices(AccessApprovalSettingsEnrolledServiceArgs.builder()\n .cloudProduct(\"all\")\n .enrollmentLevel(\"BLOCK_ALL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n projectAccessApproval:\n type: gcp:projects:AccessApprovalSettings\n name: project_access_approval\n properties:\n projectId: my-project-name\n notificationEmails:\n - testuser@example.com\n - example.user@example.com\n enrolledServices:\n - cloudProduct: all\n enrollmentLevel: BLOCK_ALL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Project Access Approval Active Key Version\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"key-ring\",\n location: \"global\",\n project: \"my-project-name\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"crypto-key\",\n keyRing: keyRing.id,\n purpose: \"ASYMMETRIC_SIGN\",\n versionTemplate: {\n algorithm: \"EC_SIGN_P384_SHA384\",\n },\n});\nconst serviceAccount = gcp.accessapproval.getProjectServiceAccount({\n projectId: \"my-project-name\",\n});\nconst iam = new gcp.kms.CryptoKeyIAMMember(\"iam\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.signerVerifier\",\n member: serviceAccount.then(serviceAccount =\u003e `serviceAccount:${serviceAccount.accountEmail}`),\n});\nconst cryptoKeyVersion = gcp.kms.getKMSCryptoKeyVersionOutput({\n cryptoKey: cryptoKey.id,\n});\nconst projectAccessApproval = new gcp.projects.AccessApprovalSettings(\"project_access_approval\", {\n projectId: \"my-project-name\",\n activeKeyVersion: cryptoKeyVersion.apply(cryptoKeyVersion =\u003e cryptoKeyVersion.name),\n enrolledServices: [{\n cloudProduct: \"all\",\n }],\n}, {\n dependsOn: [iam],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"key-ring\",\n location=\"global\",\n project=\"my-project-name\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"crypto-key\",\n key_ring=key_ring.id,\n purpose=\"ASYMMETRIC_SIGN\",\n version_template={\n \"algorithm\": \"EC_SIGN_P384_SHA384\",\n })\nservice_account = gcp.accessapproval.get_project_service_account(project_id=\"my-project-name\")\niam = gcp.kms.CryptoKeyIAMMember(\"iam\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.signerVerifier\",\n member=f\"serviceAccount:{service_account.account_email}\")\ncrypto_key_version = gcp.kms.get_kms_crypto_key_version_output(crypto_key=crypto_key.id)\nproject_access_approval = gcp.projects.AccessApprovalSettings(\"project_access_approval\",\n project_id=\"my-project-name\",\n active_key_version=crypto_key_version.name,\n enrolled_services=[{\n \"cloud_product\": \"all\",\n }],\n opts = pulumi.ResourceOptions(depends_on=[iam]))\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(\"key_ring\", new()\n {\n Name = \"key-ring\",\n Location = \"global\",\n Project = \"my-project-name\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"crypto-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ASYMMETRIC_SIGN\",\n VersionTemplate = new Gcp.Kms.Inputs.CryptoKeyVersionTemplateArgs\n {\n Algorithm = \"EC_SIGN_P384_SHA384\",\n },\n });\n\n var serviceAccount = Gcp.AccessApproval.GetProjectServiceAccount.Invoke(new()\n {\n ProjectId = \"my-project-name\",\n });\n\n var iam = new Gcp.Kms.CryptoKeyIAMMember(\"iam\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.signerVerifier\",\n Member = $\"serviceAccount:{serviceAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.AccountEmail)}\",\n });\n\n var cryptoKeyVersion = Gcp.Kms.GetKMSCryptoKeyVersion.Invoke(new()\n {\n CryptoKey = cryptoKey.Id,\n });\n\n var projectAccessApproval = new Gcp.Projects.AccessApprovalSettings(\"project_access_approval\", new()\n {\n ProjectId = \"my-project-name\",\n ActiveKeyVersion = cryptoKeyVersion.Apply(getKMSCryptoKeyVersionResult =\u003e getKMSCryptoKeyVersionResult.Name),\n EnrolledServices = new[]\n {\n new Gcp.Projects.Inputs.AccessApprovalSettingsEnrolledServiceArgs\n {\n CloudProduct = \"all\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n iam,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/accessapproval\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"key-ring\"),\n\t\t\tLocation: pulumi.String(\"global\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"crypto-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ASYMMETRIC_SIGN\"),\n\t\t\tVersionTemplate: \u0026kms.CryptoKeyVersionTemplateArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"EC_SIGN_P384_SHA384\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceAccount, err := accessapproval.GetProjectServiceAccount(ctx, \u0026accessapproval.GetProjectServiceAccountArgs{\n\t\t\tProjectId: \"my-project-name\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tiam, err := kms.NewCryptoKeyIAMMember(ctx, \"iam\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.signerVerifier\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v\", serviceAccount.AccountEmail)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyVersion := kms.GetKMSCryptoKeyVersionOutput(ctx, kms.GetKMSCryptoKeyVersionOutputArgs{\n\t\t\tCryptoKey: cryptoKey.ID(),\n\t\t}, nil)\n\t\t_, err = projects.NewAccessApprovalSettings(ctx, \"project_access_approval\", \u0026projects.AccessApprovalSettingsArgs{\n\t\t\tProjectId: pulumi.String(\"my-project-name\"),\n\t\t\tActiveKeyVersion: pulumi.String(cryptoKeyVersion.ApplyT(func(cryptoKeyVersion kms.GetKMSCryptoKeyVersionResult) (*string, error) {\n\t\t\t\treturn \u0026cryptoKeyVersion.Name, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tEnrolledServices: projects.AccessApprovalSettingsEnrolledServiceArray{\n\t\t\t\t\u0026projects.AccessApprovalSettingsEnrolledServiceArgs{\n\t\t\t\t\tCloudProduct: pulumi.String(\"all\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tiam,\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.kms.inputs.CryptoKeyVersionTemplateArgs;\nimport com.pulumi.gcp.accessapproval.AccessapprovalFunctions;\nimport com.pulumi.gcp.accessapproval.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.kms.KmsFunctions;\nimport com.pulumi.gcp.kms.inputs.GetKMSCryptoKeyVersionArgs;\nimport com.pulumi.gcp.projects.AccessApprovalSettings;\nimport com.pulumi.gcp.projects.AccessApprovalSettingsArgs;\nimport com.pulumi.gcp.projects.inputs.AccessApprovalSettingsEnrolledServiceArgs;\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 .name(\"key-ring\")\n .location(\"global\")\n .project(\"my-project-name\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"crypto-key\")\n .keyRing(keyRing.id())\n .purpose(\"ASYMMETRIC_SIGN\")\n .versionTemplate(CryptoKeyVersionTemplateArgs.builder()\n .algorithm(\"EC_SIGN_P384_SHA384\")\n .build())\n .build());\n\n final var serviceAccount = AccessapprovalFunctions.getProjectServiceAccount(GetProjectServiceAccountArgs.builder()\n .projectId(\"my-project-name\")\n .build());\n\n var iam = new CryptoKeyIAMMember(\"iam\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.signerVerifier\")\n .member(String.format(\"serviceAccount:%s\", serviceAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.accountEmail())))\n .build());\n\n final var cryptoKeyVersion = KmsFunctions.getKMSCryptoKeyVersion(GetKMSCryptoKeyVersionArgs.builder()\n .cryptoKey(cryptoKey.id())\n .build());\n\n var projectAccessApproval = new AccessApprovalSettings(\"projectAccessApproval\", AccessApprovalSettingsArgs.builder()\n .projectId(\"my-project-name\")\n .activeKeyVersion(cryptoKeyVersion.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult).applyValue(cryptoKeyVersion -\u003e cryptoKeyVersion.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult.name())))\n .enrolledServices(AccessApprovalSettingsEnrolledServiceArgs.builder()\n .cloudProduct(\"all\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(iam)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: key-ring\n location: global\n project: my-project-name\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: crypto-key\n keyRing: ${keyRing.id}\n purpose: ASYMMETRIC_SIGN\n versionTemplate:\n algorithm: EC_SIGN_P384_SHA384\n iam:\n type: gcp:kms:CryptoKeyIAMMember\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.signerVerifier\n member: serviceAccount:${serviceAccount.accountEmail}\n projectAccessApproval:\n type: gcp:projects:AccessApprovalSettings\n name: project_access_approval\n properties:\n projectId: my-project-name\n activeKeyVersion: ${cryptoKeyVersion.name}\n enrolledServices:\n - cloudProduct: all\n options:\n dependson:\n - ${iam}\nvariables:\n serviceAccount:\n fn::invoke:\n Function: gcp:accessapproval:getProjectServiceAccount\n Arguments:\n projectId: my-project-name\n cryptoKeyVersion:\n fn::invoke:\n Function: gcp:kms:getKMSCryptoKeyVersion\n Arguments:\n cryptoKey: ${cryptoKey.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProjectSettings can be imported using any of these accepted formats:\n\n* `projects/{{project_id}}/accessApprovalSettings`\n\n* `{{project_id}}`\n\nWhen using the `pulumi import` command, ProjectSettings can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:projects/accessApprovalSettings:AccessApprovalSettings default projects/{{project_id}}/accessApprovalSettings\n```\n\n```sh\n$ pulumi import gcp:projects/accessApprovalSettings:AccessApprovalSettings default {{project_id}}\n```\n\n", "properties": { "activeKeyVersion": { "type": "string", @@ -226972,7 +226972,7 @@ } }, "gcp:projects/apiKey:ApiKey": { - "description": "The Apikeys Key resource\n\n## Example Usage\n\n### Android_key\nA basic example of a android api keys key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.organizations.Project(\"basic\", {\n projectId: \"app\",\n name: \"app\",\n orgId: \"123456789\",\n});\nconst primary = new gcp.projects.ApiKey(\"primary\", {\n name: \"key\",\n displayName: \"sample-key\",\n project: basic.name,\n restrictions: {\n androidKeyRestrictions: {\n allowedApplications: [{\n packageName: \"com.example.app123\",\n sha1Fingerprint: \"1699466a142d4682a5f91b50fdf400f2358e2b0b\",\n }],\n },\n apiTargets: [{\n service: \"translate.googleapis.com\",\n methods: [\"GET*\"],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.organizations.Project(\"basic\",\n project_id=\"app\",\n name=\"app\",\n org_id=\"123456789\")\nprimary = gcp.projects.ApiKey(\"primary\",\n name=\"key\",\n display_name=\"sample-key\",\n project=basic.name,\n restrictions={\n \"androidKeyRestrictions\": {\n \"allowedApplications\": [{\n \"packageName\": \"com.example.app123\",\n \"sha1Fingerprint\": \"1699466a142d4682a5f91b50fdf400f2358e2b0b\",\n }],\n },\n \"apiTargets\": [{\n \"service\": \"translate.googleapis.com\",\n \"methods\": [\"GET*\"],\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 basic = new Gcp.Organizations.Project(\"basic\", new()\n {\n ProjectId = \"app\",\n Name = \"app\",\n OrgId = \"123456789\",\n });\n\n var primary = new Gcp.Projects.ApiKey(\"primary\", new()\n {\n Name = \"key\",\n DisplayName = \"sample-key\",\n Project = basic.Name,\n Restrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsArgs\n {\n AndroidKeyRestrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsAndroidKeyRestrictionsArgs\n {\n AllowedApplications = new[]\n {\n new Gcp.Projects.Inputs.ApiKeyRestrictionsAndroidKeyRestrictionsAllowedApplicationArgs\n {\n PackageName = \"com.example.app123\",\n Sha1Fingerprint = \"1699466a142d4682a5f91b50fdf400f2358e2b0b\",\n },\n },\n },\n ApiTargets = new[]\n {\n new Gcp.Projects.Inputs.ApiKeyRestrictionsApiTargetArgs\n {\n Service = \"translate.googleapis.com\",\n Methods = new[]\n {\n \"GET*\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := organizations.NewProject(ctx, \"basic\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"app\"),\n\t\t\tName: pulumi.String(\"app\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewApiKey(ctx, \"primary\", \u0026projects.ApiKeyArgs{\n\t\t\tName: pulumi.String(\"key\"),\n\t\t\tDisplayName: pulumi.String(\"sample-key\"),\n\t\t\tProject: basic.Name,\n\t\t\tRestrictions: \u0026projects.ApiKeyRestrictionsArgs{\n\t\t\t\tAndroidKeyRestrictions: \u0026projects.ApiKeyRestrictionsAndroidKeyRestrictionsArgs{\n\t\t\t\t\tAllowedApplications: projects.ApiKeyRestrictionsAndroidKeyRestrictionsAllowedApplicationArray{\n\t\t\t\t\t\t\u0026projects.ApiKeyRestrictionsAndroidKeyRestrictionsAllowedApplicationArgs{\n\t\t\t\t\t\t\tPackageName: pulumi.String(\"com.example.app123\"),\n\t\t\t\t\t\t\tSha1Fingerprint: pulumi.String(\"1699466a142d4682a5f91b50fdf400f2358e2b0b\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tApiTargets: projects.ApiKeyRestrictionsApiTargetArray{\n\t\t\t\t\t\u0026projects.ApiKeyRestrictionsApiTargetArgs{\n\t\t\t\t\t\tService: pulumi.String(\"translate.googleapis.com\"),\n\t\t\t\t\t\tMethods: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"GET*\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.ApiKey;\nimport com.pulumi.gcp.projects.ApiKeyArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsAndroidKeyRestrictionsArgs;\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 Project(\"basic\", ProjectArgs.builder()\n .projectId(\"app\")\n .name(\"app\")\n .orgId(\"123456789\")\n .build());\n\n var primary = new ApiKey(\"primary\", ApiKeyArgs.builder()\n .name(\"key\")\n .displayName(\"sample-key\")\n .project(basic.name())\n .restrictions(ApiKeyRestrictionsArgs.builder()\n .androidKeyRestrictions(ApiKeyRestrictionsAndroidKeyRestrictionsArgs.builder()\n .allowedApplications(ApiKeyRestrictionsAndroidKeyRestrictionsAllowedApplicationArgs.builder()\n .packageName(\"com.example.app123\")\n .sha1Fingerprint(\"1699466a142d4682a5f91b50fdf400f2358e2b0b\")\n .build())\n .build())\n .apiTargets(ApiKeyRestrictionsApiTargetArgs.builder()\n .service(\"translate.googleapis.com\")\n .methods(\"GET*\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:projects:ApiKey\n properties:\n name: key\n displayName: sample-key\n project: ${basic.name}\n restrictions:\n androidKeyRestrictions:\n allowedApplications:\n - packageName: com.example.app123\n sha1Fingerprint: 1699466a142d4682a5f91b50fdf400f2358e2b0b\n apiTargets:\n - service: translate.googleapis.com\n methods:\n - GET*\n basic:\n type: gcp:organizations:Project\n properties:\n projectId: app\n name: app\n orgId: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Basic_key\nA basic example of a api keys key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.organizations.Project(\"basic\", {\n projectId: \"app\",\n name: \"app\",\n orgId: \"123456789\",\n});\nconst primary = new gcp.projects.ApiKey(\"primary\", {\n name: \"key\",\n displayName: \"sample-key\",\n project: basic.name,\n restrictions: {\n apiTargets: [{\n service: \"translate.googleapis.com\",\n methods: [\"GET*\"],\n }],\n browserKeyRestrictions: {\n allowedReferrers: [\".*\"],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.organizations.Project(\"basic\",\n project_id=\"app\",\n name=\"app\",\n org_id=\"123456789\")\nprimary = gcp.projects.ApiKey(\"primary\",\n name=\"key\",\n display_name=\"sample-key\",\n project=basic.name,\n restrictions={\n \"apiTargets\": [{\n \"service\": \"translate.googleapis.com\",\n \"methods\": [\"GET*\"],\n }],\n \"browserKeyRestrictions\": {\n \"allowedReferrers\": [\".*\"],\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 basic = new Gcp.Organizations.Project(\"basic\", new()\n {\n ProjectId = \"app\",\n Name = \"app\",\n OrgId = \"123456789\",\n });\n\n var primary = new Gcp.Projects.ApiKey(\"primary\", new()\n {\n Name = \"key\",\n DisplayName = \"sample-key\",\n Project = basic.Name,\n Restrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsArgs\n {\n ApiTargets = new[]\n {\n new Gcp.Projects.Inputs.ApiKeyRestrictionsApiTargetArgs\n {\n Service = \"translate.googleapis.com\",\n Methods = new[]\n {\n \"GET*\",\n },\n },\n },\n BrowserKeyRestrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsBrowserKeyRestrictionsArgs\n {\n AllowedReferrers = new[]\n {\n \".*\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := organizations.NewProject(ctx, \"basic\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"app\"),\n\t\t\tName: pulumi.String(\"app\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewApiKey(ctx, \"primary\", \u0026projects.ApiKeyArgs{\n\t\t\tName: pulumi.String(\"key\"),\n\t\t\tDisplayName: pulumi.String(\"sample-key\"),\n\t\t\tProject: basic.Name,\n\t\t\tRestrictions: \u0026projects.ApiKeyRestrictionsArgs{\n\t\t\t\tApiTargets: projects.ApiKeyRestrictionsApiTargetArray{\n\t\t\t\t\t\u0026projects.ApiKeyRestrictionsApiTargetArgs{\n\t\t\t\t\t\tService: pulumi.String(\"translate.googleapis.com\"),\n\t\t\t\t\t\tMethods: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"GET*\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tBrowserKeyRestrictions: \u0026projects.ApiKeyRestrictionsBrowserKeyRestrictionsArgs{\n\t\t\t\t\tAllowedReferrers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\".*\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.ApiKey;\nimport com.pulumi.gcp.projects.ApiKeyArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsBrowserKeyRestrictionsArgs;\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 Project(\"basic\", ProjectArgs.builder()\n .projectId(\"app\")\n .name(\"app\")\n .orgId(\"123456789\")\n .build());\n\n var primary = new ApiKey(\"primary\", ApiKeyArgs.builder()\n .name(\"key\")\n .displayName(\"sample-key\")\n .project(basic.name())\n .restrictions(ApiKeyRestrictionsArgs.builder()\n .apiTargets(ApiKeyRestrictionsApiTargetArgs.builder()\n .service(\"translate.googleapis.com\")\n .methods(\"GET*\")\n .build())\n .browserKeyRestrictions(ApiKeyRestrictionsBrowserKeyRestrictionsArgs.builder()\n .allowedReferrers(\".*\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:projects:ApiKey\n properties:\n name: key\n displayName: sample-key\n project: ${basic.name}\n restrictions:\n apiTargets:\n - service: translate.googleapis.com\n methods:\n - GET*\n browserKeyRestrictions:\n allowedReferrers:\n - .*\n basic:\n type: gcp:organizations:Project\n properties:\n projectId: app\n name: app\n orgId: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Ios_key\nA basic example of a ios api keys key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.organizations.Project(\"basic\", {\n projectId: \"app\",\n name: \"app\",\n orgId: \"123456789\",\n});\nconst primary = new gcp.projects.ApiKey(\"primary\", {\n name: \"key\",\n displayName: \"sample-key\",\n project: basic.name,\n restrictions: {\n apiTargets: [{\n service: \"translate.googleapis.com\",\n methods: [\"GET*\"],\n }],\n iosKeyRestrictions: {\n allowedBundleIds: [\"com.google.app.macos\"],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.organizations.Project(\"basic\",\n project_id=\"app\",\n name=\"app\",\n org_id=\"123456789\")\nprimary = gcp.projects.ApiKey(\"primary\",\n name=\"key\",\n display_name=\"sample-key\",\n project=basic.name,\n restrictions={\n \"apiTargets\": [{\n \"service\": \"translate.googleapis.com\",\n \"methods\": [\"GET*\"],\n }],\n \"iosKeyRestrictions\": {\n \"allowedBundleIds\": [\"com.google.app.macos\"],\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 basic = new Gcp.Organizations.Project(\"basic\", new()\n {\n ProjectId = \"app\",\n Name = \"app\",\n OrgId = \"123456789\",\n });\n\n var primary = new Gcp.Projects.ApiKey(\"primary\", new()\n {\n Name = \"key\",\n DisplayName = \"sample-key\",\n Project = basic.Name,\n Restrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsArgs\n {\n ApiTargets = new[]\n {\n new Gcp.Projects.Inputs.ApiKeyRestrictionsApiTargetArgs\n {\n Service = \"translate.googleapis.com\",\n Methods = new[]\n {\n \"GET*\",\n },\n },\n },\n IosKeyRestrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsIosKeyRestrictionsArgs\n {\n AllowedBundleIds = new[]\n {\n \"com.google.app.macos\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := organizations.NewProject(ctx, \"basic\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"app\"),\n\t\t\tName: pulumi.String(\"app\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewApiKey(ctx, \"primary\", \u0026projects.ApiKeyArgs{\n\t\t\tName: pulumi.String(\"key\"),\n\t\t\tDisplayName: pulumi.String(\"sample-key\"),\n\t\t\tProject: basic.Name,\n\t\t\tRestrictions: \u0026projects.ApiKeyRestrictionsArgs{\n\t\t\t\tApiTargets: projects.ApiKeyRestrictionsApiTargetArray{\n\t\t\t\t\t\u0026projects.ApiKeyRestrictionsApiTargetArgs{\n\t\t\t\t\t\tService: pulumi.String(\"translate.googleapis.com\"),\n\t\t\t\t\t\tMethods: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"GET*\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tIosKeyRestrictions: \u0026projects.ApiKeyRestrictionsIosKeyRestrictionsArgs{\n\t\t\t\t\tAllowedBundleIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"com.google.app.macos\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.ApiKey;\nimport com.pulumi.gcp.projects.ApiKeyArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsIosKeyRestrictionsArgs;\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 Project(\"basic\", ProjectArgs.builder()\n .projectId(\"app\")\n .name(\"app\")\n .orgId(\"123456789\")\n .build());\n\n var primary = new ApiKey(\"primary\", ApiKeyArgs.builder()\n .name(\"key\")\n .displayName(\"sample-key\")\n .project(basic.name())\n .restrictions(ApiKeyRestrictionsArgs.builder()\n .apiTargets(ApiKeyRestrictionsApiTargetArgs.builder()\n .service(\"translate.googleapis.com\")\n .methods(\"GET*\")\n .build())\n .iosKeyRestrictions(ApiKeyRestrictionsIosKeyRestrictionsArgs.builder()\n .allowedBundleIds(\"com.google.app.macos\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:projects:ApiKey\n properties:\n name: key\n displayName: sample-key\n project: ${basic.name}\n restrictions:\n apiTargets:\n - service: translate.googleapis.com\n methods:\n - GET*\n iosKeyRestrictions:\n allowedBundleIds:\n - com.google.app.macos\n basic:\n type: gcp:organizations:Project\n properties:\n projectId: app\n name: app\n orgId: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Minimal_key\nA minimal example of a api keys key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.organizations.Project(\"basic\", {\n projectId: \"app\",\n name: \"app\",\n orgId: \"123456789\",\n});\nconst primary = new gcp.projects.ApiKey(\"primary\", {\n name: \"key\",\n displayName: \"sample-key\",\n project: basic.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.organizations.Project(\"basic\",\n project_id=\"app\",\n name=\"app\",\n org_id=\"123456789\")\nprimary = gcp.projects.ApiKey(\"primary\",\n name=\"key\",\n display_name=\"sample-key\",\n project=basic.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 basic = new Gcp.Organizations.Project(\"basic\", new()\n {\n ProjectId = \"app\",\n Name = \"app\",\n OrgId = \"123456789\",\n });\n\n var primary = new Gcp.Projects.ApiKey(\"primary\", new()\n {\n Name = \"key\",\n DisplayName = \"sample-key\",\n Project = basic.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := organizations.NewProject(ctx, \"basic\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"app\"),\n\t\t\tName: pulumi.String(\"app\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewApiKey(ctx, \"primary\", \u0026projects.ApiKeyArgs{\n\t\t\tName: pulumi.String(\"key\"),\n\t\t\tDisplayName: pulumi.String(\"sample-key\"),\n\t\t\tProject: basic.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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.ApiKey;\nimport com.pulumi.gcp.projects.ApiKeyArgs;\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 Project(\"basic\", ProjectArgs.builder()\n .projectId(\"app\")\n .name(\"app\")\n .orgId(\"123456789\")\n .build());\n\n var primary = new ApiKey(\"primary\", ApiKeyArgs.builder()\n .name(\"key\")\n .displayName(\"sample-key\")\n .project(basic.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:projects:ApiKey\n properties:\n name: key\n displayName: sample-key\n project: ${basic.name}\n basic:\n type: gcp:organizations:Project\n properties:\n projectId: app\n name: app\n orgId: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Server_key\nA basic example of a server api keys key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.organizations.Project(\"basic\", {\n projectId: \"app\",\n name: \"app\",\n orgId: \"123456789\",\n});\nconst primary = new gcp.projects.ApiKey(\"primary\", {\n name: \"key\",\n displayName: \"sample-key\",\n project: basic.name,\n restrictions: {\n apiTargets: [{\n service: \"translate.googleapis.com\",\n methods: [\"GET*\"],\n }],\n serverKeyRestrictions: {\n allowedIps: [\"127.0.0.1\"],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.organizations.Project(\"basic\",\n project_id=\"app\",\n name=\"app\",\n org_id=\"123456789\")\nprimary = gcp.projects.ApiKey(\"primary\",\n name=\"key\",\n display_name=\"sample-key\",\n project=basic.name,\n restrictions={\n \"apiTargets\": [{\n \"service\": \"translate.googleapis.com\",\n \"methods\": [\"GET*\"],\n }],\n \"serverKeyRestrictions\": {\n \"allowedIps\": [\"127.0.0.1\"],\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 basic = new Gcp.Organizations.Project(\"basic\", new()\n {\n ProjectId = \"app\",\n Name = \"app\",\n OrgId = \"123456789\",\n });\n\n var primary = new Gcp.Projects.ApiKey(\"primary\", new()\n {\n Name = \"key\",\n DisplayName = \"sample-key\",\n Project = basic.Name,\n Restrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsArgs\n {\n ApiTargets = new[]\n {\n new Gcp.Projects.Inputs.ApiKeyRestrictionsApiTargetArgs\n {\n Service = \"translate.googleapis.com\",\n Methods = new[]\n {\n \"GET*\",\n },\n },\n },\n ServerKeyRestrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsServerKeyRestrictionsArgs\n {\n AllowedIps = new[]\n {\n \"127.0.0.1\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := organizations.NewProject(ctx, \"basic\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"app\"),\n\t\t\tName: pulumi.String(\"app\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewApiKey(ctx, \"primary\", \u0026projects.ApiKeyArgs{\n\t\t\tName: pulumi.String(\"key\"),\n\t\t\tDisplayName: pulumi.String(\"sample-key\"),\n\t\t\tProject: basic.Name,\n\t\t\tRestrictions: \u0026projects.ApiKeyRestrictionsArgs{\n\t\t\t\tApiTargets: projects.ApiKeyRestrictionsApiTargetArray{\n\t\t\t\t\t\u0026projects.ApiKeyRestrictionsApiTargetArgs{\n\t\t\t\t\t\tService: pulumi.String(\"translate.googleapis.com\"),\n\t\t\t\t\t\tMethods: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"GET*\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tServerKeyRestrictions: \u0026projects.ApiKeyRestrictionsServerKeyRestrictionsArgs{\n\t\t\t\t\tAllowedIps: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"127.0.0.1\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.ApiKey;\nimport com.pulumi.gcp.projects.ApiKeyArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsServerKeyRestrictionsArgs;\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 Project(\"basic\", ProjectArgs.builder()\n .projectId(\"app\")\n .name(\"app\")\n .orgId(\"123456789\")\n .build());\n\n var primary = new ApiKey(\"primary\", ApiKeyArgs.builder()\n .name(\"key\")\n .displayName(\"sample-key\")\n .project(basic.name())\n .restrictions(ApiKeyRestrictionsArgs.builder()\n .apiTargets(ApiKeyRestrictionsApiTargetArgs.builder()\n .service(\"translate.googleapis.com\")\n .methods(\"GET*\")\n .build())\n .serverKeyRestrictions(ApiKeyRestrictionsServerKeyRestrictionsArgs.builder()\n .allowedIps(\"127.0.0.1\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:projects:ApiKey\n properties:\n name: key\n displayName: sample-key\n project: ${basic.name}\n restrictions:\n apiTargets:\n - service: translate.googleapis.com\n methods:\n - GET*\n serverKeyRestrictions:\n allowedIps:\n - 127.0.0.1\n basic:\n type: gcp:organizations:Project\n properties:\n projectId: app\n name: app\n orgId: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nKey can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/keys/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Key can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:projects/apiKey:ApiKey default projects/{{project}}/locations/global/keys/{{name}}\n```\n\n```sh\n$ pulumi import gcp:projects/apiKey:ApiKey default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:projects/apiKey:ApiKey default {{name}}\n```\n\n", + "description": "The Apikeys Key resource\n\n## Example Usage\n\n### Android_key\nA basic example of a android api keys key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.organizations.Project(\"basic\", {\n projectId: \"app\",\n name: \"app\",\n orgId: \"123456789\",\n});\nconst primary = new gcp.projects.ApiKey(\"primary\", {\n name: \"key\",\n displayName: \"sample-key\",\n project: basic.name,\n restrictions: {\n androidKeyRestrictions: {\n allowedApplications: [{\n packageName: \"com.example.app123\",\n sha1Fingerprint: \"1699466a142d4682a5f91b50fdf400f2358e2b0b\",\n }],\n },\n apiTargets: [{\n service: \"translate.googleapis.com\",\n methods: [\"GET*\"],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.organizations.Project(\"basic\",\n project_id=\"app\",\n name=\"app\",\n org_id=\"123456789\")\nprimary = gcp.projects.ApiKey(\"primary\",\n name=\"key\",\n display_name=\"sample-key\",\n project=basic.name,\n restrictions={\n \"android_key_restrictions\": {\n \"allowed_applications\": [{\n \"package_name\": \"com.example.app123\",\n \"sha1_fingerprint\": \"1699466a142d4682a5f91b50fdf400f2358e2b0b\",\n }],\n },\n \"api_targets\": [{\n \"service\": \"translate.googleapis.com\",\n \"methods\": [\"GET*\"],\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 basic = new Gcp.Organizations.Project(\"basic\", new()\n {\n ProjectId = \"app\",\n Name = \"app\",\n OrgId = \"123456789\",\n });\n\n var primary = new Gcp.Projects.ApiKey(\"primary\", new()\n {\n Name = \"key\",\n DisplayName = \"sample-key\",\n Project = basic.Name,\n Restrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsArgs\n {\n AndroidKeyRestrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsAndroidKeyRestrictionsArgs\n {\n AllowedApplications = new[]\n {\n new Gcp.Projects.Inputs.ApiKeyRestrictionsAndroidKeyRestrictionsAllowedApplicationArgs\n {\n PackageName = \"com.example.app123\",\n Sha1Fingerprint = \"1699466a142d4682a5f91b50fdf400f2358e2b0b\",\n },\n },\n },\n ApiTargets = new[]\n {\n new Gcp.Projects.Inputs.ApiKeyRestrictionsApiTargetArgs\n {\n Service = \"translate.googleapis.com\",\n Methods = new[]\n {\n \"GET*\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := organizations.NewProject(ctx, \"basic\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"app\"),\n\t\t\tName: pulumi.String(\"app\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewApiKey(ctx, \"primary\", \u0026projects.ApiKeyArgs{\n\t\t\tName: pulumi.String(\"key\"),\n\t\t\tDisplayName: pulumi.String(\"sample-key\"),\n\t\t\tProject: basic.Name,\n\t\t\tRestrictions: \u0026projects.ApiKeyRestrictionsArgs{\n\t\t\t\tAndroidKeyRestrictions: \u0026projects.ApiKeyRestrictionsAndroidKeyRestrictionsArgs{\n\t\t\t\t\tAllowedApplications: projects.ApiKeyRestrictionsAndroidKeyRestrictionsAllowedApplicationArray{\n\t\t\t\t\t\t\u0026projects.ApiKeyRestrictionsAndroidKeyRestrictionsAllowedApplicationArgs{\n\t\t\t\t\t\t\tPackageName: pulumi.String(\"com.example.app123\"),\n\t\t\t\t\t\t\tSha1Fingerprint: pulumi.String(\"1699466a142d4682a5f91b50fdf400f2358e2b0b\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tApiTargets: projects.ApiKeyRestrictionsApiTargetArray{\n\t\t\t\t\t\u0026projects.ApiKeyRestrictionsApiTargetArgs{\n\t\t\t\t\t\tService: pulumi.String(\"translate.googleapis.com\"),\n\t\t\t\t\t\tMethods: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"GET*\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.ApiKey;\nimport com.pulumi.gcp.projects.ApiKeyArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsAndroidKeyRestrictionsArgs;\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 Project(\"basic\", ProjectArgs.builder()\n .projectId(\"app\")\n .name(\"app\")\n .orgId(\"123456789\")\n .build());\n\n var primary = new ApiKey(\"primary\", ApiKeyArgs.builder()\n .name(\"key\")\n .displayName(\"sample-key\")\n .project(basic.name())\n .restrictions(ApiKeyRestrictionsArgs.builder()\n .androidKeyRestrictions(ApiKeyRestrictionsAndroidKeyRestrictionsArgs.builder()\n .allowedApplications(ApiKeyRestrictionsAndroidKeyRestrictionsAllowedApplicationArgs.builder()\n .packageName(\"com.example.app123\")\n .sha1Fingerprint(\"1699466a142d4682a5f91b50fdf400f2358e2b0b\")\n .build())\n .build())\n .apiTargets(ApiKeyRestrictionsApiTargetArgs.builder()\n .service(\"translate.googleapis.com\")\n .methods(\"GET*\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:projects:ApiKey\n properties:\n name: key\n displayName: sample-key\n project: ${basic.name}\n restrictions:\n androidKeyRestrictions:\n allowedApplications:\n - packageName: com.example.app123\n sha1Fingerprint: 1699466a142d4682a5f91b50fdf400f2358e2b0b\n apiTargets:\n - service: translate.googleapis.com\n methods:\n - GET*\n basic:\n type: gcp:organizations:Project\n properties:\n projectId: app\n name: app\n orgId: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Basic_key\nA basic example of a api keys key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.organizations.Project(\"basic\", {\n projectId: \"app\",\n name: \"app\",\n orgId: \"123456789\",\n});\nconst primary = new gcp.projects.ApiKey(\"primary\", {\n name: \"key\",\n displayName: \"sample-key\",\n project: basic.name,\n restrictions: {\n apiTargets: [{\n service: \"translate.googleapis.com\",\n methods: [\"GET*\"],\n }],\n browserKeyRestrictions: {\n allowedReferrers: [\".*\"],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.organizations.Project(\"basic\",\n project_id=\"app\",\n name=\"app\",\n org_id=\"123456789\")\nprimary = gcp.projects.ApiKey(\"primary\",\n name=\"key\",\n display_name=\"sample-key\",\n project=basic.name,\n restrictions={\n \"api_targets\": [{\n \"service\": \"translate.googleapis.com\",\n \"methods\": [\"GET*\"],\n }],\n \"browser_key_restrictions\": {\n \"allowed_referrers\": [\".*\"],\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 basic = new Gcp.Organizations.Project(\"basic\", new()\n {\n ProjectId = \"app\",\n Name = \"app\",\n OrgId = \"123456789\",\n });\n\n var primary = new Gcp.Projects.ApiKey(\"primary\", new()\n {\n Name = \"key\",\n DisplayName = \"sample-key\",\n Project = basic.Name,\n Restrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsArgs\n {\n ApiTargets = new[]\n {\n new Gcp.Projects.Inputs.ApiKeyRestrictionsApiTargetArgs\n {\n Service = \"translate.googleapis.com\",\n Methods = new[]\n {\n \"GET*\",\n },\n },\n },\n BrowserKeyRestrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsBrowserKeyRestrictionsArgs\n {\n AllowedReferrers = new[]\n {\n \".*\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := organizations.NewProject(ctx, \"basic\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"app\"),\n\t\t\tName: pulumi.String(\"app\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewApiKey(ctx, \"primary\", \u0026projects.ApiKeyArgs{\n\t\t\tName: pulumi.String(\"key\"),\n\t\t\tDisplayName: pulumi.String(\"sample-key\"),\n\t\t\tProject: basic.Name,\n\t\t\tRestrictions: \u0026projects.ApiKeyRestrictionsArgs{\n\t\t\t\tApiTargets: projects.ApiKeyRestrictionsApiTargetArray{\n\t\t\t\t\t\u0026projects.ApiKeyRestrictionsApiTargetArgs{\n\t\t\t\t\t\tService: pulumi.String(\"translate.googleapis.com\"),\n\t\t\t\t\t\tMethods: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"GET*\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tBrowserKeyRestrictions: \u0026projects.ApiKeyRestrictionsBrowserKeyRestrictionsArgs{\n\t\t\t\t\tAllowedReferrers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\".*\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.ApiKey;\nimport com.pulumi.gcp.projects.ApiKeyArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsBrowserKeyRestrictionsArgs;\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 Project(\"basic\", ProjectArgs.builder()\n .projectId(\"app\")\n .name(\"app\")\n .orgId(\"123456789\")\n .build());\n\n var primary = new ApiKey(\"primary\", ApiKeyArgs.builder()\n .name(\"key\")\n .displayName(\"sample-key\")\n .project(basic.name())\n .restrictions(ApiKeyRestrictionsArgs.builder()\n .apiTargets(ApiKeyRestrictionsApiTargetArgs.builder()\n .service(\"translate.googleapis.com\")\n .methods(\"GET*\")\n .build())\n .browserKeyRestrictions(ApiKeyRestrictionsBrowserKeyRestrictionsArgs.builder()\n .allowedReferrers(\".*\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:projects:ApiKey\n properties:\n name: key\n displayName: sample-key\n project: ${basic.name}\n restrictions:\n apiTargets:\n - service: translate.googleapis.com\n methods:\n - GET*\n browserKeyRestrictions:\n allowedReferrers:\n - .*\n basic:\n type: gcp:organizations:Project\n properties:\n projectId: app\n name: app\n orgId: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Ios_key\nA basic example of a ios api keys key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.organizations.Project(\"basic\", {\n projectId: \"app\",\n name: \"app\",\n orgId: \"123456789\",\n});\nconst primary = new gcp.projects.ApiKey(\"primary\", {\n name: \"key\",\n displayName: \"sample-key\",\n project: basic.name,\n restrictions: {\n apiTargets: [{\n service: \"translate.googleapis.com\",\n methods: [\"GET*\"],\n }],\n iosKeyRestrictions: {\n allowedBundleIds: [\"com.google.app.macos\"],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.organizations.Project(\"basic\",\n project_id=\"app\",\n name=\"app\",\n org_id=\"123456789\")\nprimary = gcp.projects.ApiKey(\"primary\",\n name=\"key\",\n display_name=\"sample-key\",\n project=basic.name,\n restrictions={\n \"api_targets\": [{\n \"service\": \"translate.googleapis.com\",\n \"methods\": [\"GET*\"],\n }],\n \"ios_key_restrictions\": {\n \"allowed_bundle_ids\": [\"com.google.app.macos\"],\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 basic = new Gcp.Organizations.Project(\"basic\", new()\n {\n ProjectId = \"app\",\n Name = \"app\",\n OrgId = \"123456789\",\n });\n\n var primary = new Gcp.Projects.ApiKey(\"primary\", new()\n {\n Name = \"key\",\n DisplayName = \"sample-key\",\n Project = basic.Name,\n Restrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsArgs\n {\n ApiTargets = new[]\n {\n new Gcp.Projects.Inputs.ApiKeyRestrictionsApiTargetArgs\n {\n Service = \"translate.googleapis.com\",\n Methods = new[]\n {\n \"GET*\",\n },\n },\n },\n IosKeyRestrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsIosKeyRestrictionsArgs\n {\n AllowedBundleIds = new[]\n {\n \"com.google.app.macos\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := organizations.NewProject(ctx, \"basic\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"app\"),\n\t\t\tName: pulumi.String(\"app\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewApiKey(ctx, \"primary\", \u0026projects.ApiKeyArgs{\n\t\t\tName: pulumi.String(\"key\"),\n\t\t\tDisplayName: pulumi.String(\"sample-key\"),\n\t\t\tProject: basic.Name,\n\t\t\tRestrictions: \u0026projects.ApiKeyRestrictionsArgs{\n\t\t\t\tApiTargets: projects.ApiKeyRestrictionsApiTargetArray{\n\t\t\t\t\t\u0026projects.ApiKeyRestrictionsApiTargetArgs{\n\t\t\t\t\t\tService: pulumi.String(\"translate.googleapis.com\"),\n\t\t\t\t\t\tMethods: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"GET*\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tIosKeyRestrictions: \u0026projects.ApiKeyRestrictionsIosKeyRestrictionsArgs{\n\t\t\t\t\tAllowedBundleIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"com.google.app.macos\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.ApiKey;\nimport com.pulumi.gcp.projects.ApiKeyArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsIosKeyRestrictionsArgs;\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 Project(\"basic\", ProjectArgs.builder()\n .projectId(\"app\")\n .name(\"app\")\n .orgId(\"123456789\")\n .build());\n\n var primary = new ApiKey(\"primary\", ApiKeyArgs.builder()\n .name(\"key\")\n .displayName(\"sample-key\")\n .project(basic.name())\n .restrictions(ApiKeyRestrictionsArgs.builder()\n .apiTargets(ApiKeyRestrictionsApiTargetArgs.builder()\n .service(\"translate.googleapis.com\")\n .methods(\"GET*\")\n .build())\n .iosKeyRestrictions(ApiKeyRestrictionsIosKeyRestrictionsArgs.builder()\n .allowedBundleIds(\"com.google.app.macos\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:projects:ApiKey\n properties:\n name: key\n displayName: sample-key\n project: ${basic.name}\n restrictions:\n apiTargets:\n - service: translate.googleapis.com\n methods:\n - GET*\n iosKeyRestrictions:\n allowedBundleIds:\n - com.google.app.macos\n basic:\n type: gcp:organizations:Project\n properties:\n projectId: app\n name: app\n orgId: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Minimal_key\nA minimal example of a api keys key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.organizations.Project(\"basic\", {\n projectId: \"app\",\n name: \"app\",\n orgId: \"123456789\",\n});\nconst primary = new gcp.projects.ApiKey(\"primary\", {\n name: \"key\",\n displayName: \"sample-key\",\n project: basic.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.organizations.Project(\"basic\",\n project_id=\"app\",\n name=\"app\",\n org_id=\"123456789\")\nprimary = gcp.projects.ApiKey(\"primary\",\n name=\"key\",\n display_name=\"sample-key\",\n project=basic.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 basic = new Gcp.Organizations.Project(\"basic\", new()\n {\n ProjectId = \"app\",\n Name = \"app\",\n OrgId = \"123456789\",\n });\n\n var primary = new Gcp.Projects.ApiKey(\"primary\", new()\n {\n Name = \"key\",\n DisplayName = \"sample-key\",\n Project = basic.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := organizations.NewProject(ctx, \"basic\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"app\"),\n\t\t\tName: pulumi.String(\"app\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewApiKey(ctx, \"primary\", \u0026projects.ApiKeyArgs{\n\t\t\tName: pulumi.String(\"key\"),\n\t\t\tDisplayName: pulumi.String(\"sample-key\"),\n\t\t\tProject: basic.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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.ApiKey;\nimport com.pulumi.gcp.projects.ApiKeyArgs;\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 Project(\"basic\", ProjectArgs.builder()\n .projectId(\"app\")\n .name(\"app\")\n .orgId(\"123456789\")\n .build());\n\n var primary = new ApiKey(\"primary\", ApiKeyArgs.builder()\n .name(\"key\")\n .displayName(\"sample-key\")\n .project(basic.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:projects:ApiKey\n properties:\n name: key\n displayName: sample-key\n project: ${basic.name}\n basic:\n type: gcp:organizations:Project\n properties:\n projectId: app\n name: app\n orgId: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Server_key\nA basic example of a server api keys key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.organizations.Project(\"basic\", {\n projectId: \"app\",\n name: \"app\",\n orgId: \"123456789\",\n});\nconst primary = new gcp.projects.ApiKey(\"primary\", {\n name: \"key\",\n displayName: \"sample-key\",\n project: basic.name,\n restrictions: {\n apiTargets: [{\n service: \"translate.googleapis.com\",\n methods: [\"GET*\"],\n }],\n serverKeyRestrictions: {\n allowedIps: [\"127.0.0.1\"],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.organizations.Project(\"basic\",\n project_id=\"app\",\n name=\"app\",\n org_id=\"123456789\")\nprimary = gcp.projects.ApiKey(\"primary\",\n name=\"key\",\n display_name=\"sample-key\",\n project=basic.name,\n restrictions={\n \"api_targets\": [{\n \"service\": \"translate.googleapis.com\",\n \"methods\": [\"GET*\"],\n }],\n \"server_key_restrictions\": {\n \"allowed_ips\": [\"127.0.0.1\"],\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 basic = new Gcp.Organizations.Project(\"basic\", new()\n {\n ProjectId = \"app\",\n Name = \"app\",\n OrgId = \"123456789\",\n });\n\n var primary = new Gcp.Projects.ApiKey(\"primary\", new()\n {\n Name = \"key\",\n DisplayName = \"sample-key\",\n Project = basic.Name,\n Restrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsArgs\n {\n ApiTargets = new[]\n {\n new Gcp.Projects.Inputs.ApiKeyRestrictionsApiTargetArgs\n {\n Service = \"translate.googleapis.com\",\n Methods = new[]\n {\n \"GET*\",\n },\n },\n },\n ServerKeyRestrictions = new Gcp.Projects.Inputs.ApiKeyRestrictionsServerKeyRestrictionsArgs\n {\n AllowedIps = new[]\n {\n \"127.0.0.1\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := organizations.NewProject(ctx, \"basic\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"app\"),\n\t\t\tName: pulumi.String(\"app\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewApiKey(ctx, \"primary\", \u0026projects.ApiKeyArgs{\n\t\t\tName: pulumi.String(\"key\"),\n\t\t\tDisplayName: pulumi.String(\"sample-key\"),\n\t\t\tProject: basic.Name,\n\t\t\tRestrictions: \u0026projects.ApiKeyRestrictionsArgs{\n\t\t\t\tApiTargets: projects.ApiKeyRestrictionsApiTargetArray{\n\t\t\t\t\t\u0026projects.ApiKeyRestrictionsApiTargetArgs{\n\t\t\t\t\t\tService: pulumi.String(\"translate.googleapis.com\"),\n\t\t\t\t\t\tMethods: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"GET*\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tServerKeyRestrictions: \u0026projects.ApiKeyRestrictionsServerKeyRestrictionsArgs{\n\t\t\t\t\tAllowedIps: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"127.0.0.1\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.ApiKey;\nimport com.pulumi.gcp.projects.ApiKeyArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsArgs;\nimport com.pulumi.gcp.projects.inputs.ApiKeyRestrictionsServerKeyRestrictionsArgs;\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 Project(\"basic\", ProjectArgs.builder()\n .projectId(\"app\")\n .name(\"app\")\n .orgId(\"123456789\")\n .build());\n\n var primary = new ApiKey(\"primary\", ApiKeyArgs.builder()\n .name(\"key\")\n .displayName(\"sample-key\")\n .project(basic.name())\n .restrictions(ApiKeyRestrictionsArgs.builder()\n .apiTargets(ApiKeyRestrictionsApiTargetArgs.builder()\n .service(\"translate.googleapis.com\")\n .methods(\"GET*\")\n .build())\n .serverKeyRestrictions(ApiKeyRestrictionsServerKeyRestrictionsArgs.builder()\n .allowedIps(\"127.0.0.1\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:projects:ApiKey\n properties:\n name: key\n displayName: sample-key\n project: ${basic.name}\n restrictions:\n apiTargets:\n - service: translate.googleapis.com\n methods:\n - GET*\n serverKeyRestrictions:\n allowedIps:\n - 127.0.0.1\n basic:\n type: gcp:organizations:Project\n properties:\n projectId: app\n name: app\n orgId: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nKey can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/keys/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Key can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:projects/apiKey:ApiKey default projects/{{project}}/locations/global/keys/{{name}}\n```\n\n```sh\n$ pulumi import gcp:projects/apiKey:ApiKey default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:projects/apiKey:ApiKey default {{name}}\n```\n\n", "properties": { "displayName": { "type": "string", @@ -227137,7 +227137,7 @@ } }, "gcp:projects/iAMAuditConfig:IAMAuditConfig": { - "description": "Four different resources help you manage your IAM policy for a project. Each of these resources serves a different use case:\n\n* `gcp.projects.IAMPolicy`: Authoritative. Sets the IAM policy for the project and replaces any existing policy already attached.\n* `gcp.projects.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the project are preserved.\n* `gcp.projects.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the project are preserved.\n* `gcp.projects.IAMAuditConfig`: Authoritative for a given service. Updates the IAM policy to enable audit logging for the given service.\n\n\u003e **Note:** `gcp.projects.IAMPolicy` **cannot** be used in conjunction with `gcp.projects.IAMBinding`, `gcp.projects.IAMMember`, or `gcp.projects.IAMAuditConfig` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.projects.IAMBinding` resources **can be** used in conjunction with `gcp.projects.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n\u003e **Note:** The underlying API method `projects.setIamPolicy` has a lot of constraints which are documented [here](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). In addition to these constraints, \n IAM Conditions cannot be used with Basic Roles such as Owner. Violating these constraints will result in the API returning 400 error code so please review these if you encounter errors with this resource.\n\n## gcp.projects.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your project\n using this resource. Deleting a `gcp.projects.IAMPolicy` removes access\n from anyone without organization-level access to the project. Proceed with caution.\n It's not recommended to use `gcp.projects.IAMPolicy` with your provider project\n to avoid locking yourself out, and it should generally only be used with projects\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Projects.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026projects.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.projects.inputs.IAMBindingConditionArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 project = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Projects.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026projects.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.inputs.IAMMemberConditionArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMAuditConfig(\"project\", {\n project: \"your-project-id\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMAuditConfig(\"project\",\n project=\"your-project-id\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"logType\": \"ADMIN_READ\",\n },\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\"user:joebloggs@example.com\"],\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 project = new Gcp.Projects.IAMAuditConfig(\"project\", new()\n {\n Project = \"your-project-id\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMAuditConfig(ctx, \"project\", \u0026projects.IAMAuditConfigArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: projects.IAMAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.projects.IAMAuditConfig;\nimport com.pulumi.gcp.projects.IAMAuditConfigArgs;\nimport com.pulumi.gcp.projects.inputs.IAMAuditConfigAuditLogConfigArgs;\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 project = new IAMAuditConfig(\"project\", IAMAuditConfigArgs.builder()\n .project(\"your-project-id\")\n .service(\"allServices\")\n .auditLogConfigs( \n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMAuditConfig\n properties:\n project: your-project-id\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your project\n using this resource. Deleting a `gcp.projects.IAMPolicy` removes access\n from anyone without organization-level access to the project. Proceed with caution.\n It's not recommended to use `gcp.projects.IAMPolicy` with your provider project\n to avoid locking yourself out, and it should generally only be used with projects\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Projects.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026projects.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.projects.inputs.IAMBindingConditionArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 project = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Projects.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026projects.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.inputs.IAMMemberConditionArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMAuditConfig(\"project\", {\n project: \"your-project-id\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMAuditConfig(\"project\",\n project=\"your-project-id\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"logType\": \"ADMIN_READ\",\n },\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\"user:joebloggs@example.com\"],\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 project = new Gcp.Projects.IAMAuditConfig(\"project\", new()\n {\n Project = \"your-project-id\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMAuditConfig(ctx, \"project\", \u0026projects.IAMAuditConfigArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: projects.IAMAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.projects.IAMAuditConfig;\nimport com.pulumi.gcp.projects.IAMAuditConfigArgs;\nimport com.pulumi.gcp.projects.inputs.IAMAuditConfigAuditLogConfigArgs;\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 project = new IAMAuditConfig(\"project\", IAMAuditConfigArgs.builder()\n .project(\"your-project-id\")\n .service(\"allServices\")\n .auditLogConfigs( \n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMAuditConfig\n properties:\n project: your-project-id\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing Audit Configs\n\nAn audit config can be imported into a `google_project_iam_audit_config` resource using the resource's `project_id` and the `service`, e.g:\n\n* `\"{{project_id}} foo.googleapis.com\"`\n\nAn `import` block (Terraform v1.5.0 and later) can be used to import audit configs:\n\ntf\n\nimport {\n\n id = \"{{project_id}} foo.googleapis.com\"\n\n to = google_project_iam_audit_config.default\n\n}\n\nThe `pulumi import` command can also be used:\n\n```sh\n$ pulumi import gcp:projects/iAMAuditConfig:IAMAuditConfig default \"{{project_id}} foo.googleapis.com\"\n```\n\n", + "description": "Four different resources help you manage your IAM policy for a project. Each of these resources serves a different use case:\n\n* `gcp.projects.IAMPolicy`: Authoritative. Sets the IAM policy for the project and replaces any existing policy already attached.\n* `gcp.projects.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the project are preserved.\n* `gcp.projects.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the project are preserved.\n* `gcp.projects.IAMAuditConfig`: Authoritative for a given service. Updates the IAM policy to enable audit logging for the given service.\n\n\u003e **Note:** `gcp.projects.IAMPolicy` **cannot** be used in conjunction with `gcp.projects.IAMBinding`, `gcp.projects.IAMMember`, or `gcp.projects.IAMAuditConfig` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.projects.IAMBinding` resources **can be** used in conjunction with `gcp.projects.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n\u003e **Note:** The underlying API method `projects.setIamPolicy` has a lot of constraints which are documented [here](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). In addition to these constraints, \n IAM Conditions cannot be used with Basic Roles such as Owner. Violating these constraints will result in the API returning 400 error code so please review these if you encounter errors with this resource.\n\n## gcp.projects.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your project\n using this resource. Deleting a `gcp.projects.IAMPolicy` removes access\n from anyone without organization-level access to the project. Proceed with caution.\n It's not recommended to use `gcp.projects.IAMPolicy` with your provider project\n to avoid locking yourself out, and it should generally only be used with projects\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Projects.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026projects.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.projects.inputs.IAMBindingConditionArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 project = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Projects.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026projects.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.inputs.IAMMemberConditionArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMAuditConfig(\"project\", {\n project: \"your-project-id\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMAuditConfig(\"project\",\n project=\"your-project-id\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"log_type\": \"ADMIN_READ\",\n },\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\"user:joebloggs@example.com\"],\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 project = new Gcp.Projects.IAMAuditConfig(\"project\", new()\n {\n Project = \"your-project-id\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMAuditConfig(ctx, \"project\", \u0026projects.IAMAuditConfigArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: projects.IAMAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.projects.IAMAuditConfig;\nimport com.pulumi.gcp.projects.IAMAuditConfigArgs;\nimport com.pulumi.gcp.projects.inputs.IAMAuditConfigAuditLogConfigArgs;\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 project = new IAMAuditConfig(\"project\", IAMAuditConfigArgs.builder()\n .project(\"your-project-id\")\n .service(\"allServices\")\n .auditLogConfigs( \n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMAuditConfig\n properties:\n project: your-project-id\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your project\n using this resource. Deleting a `gcp.projects.IAMPolicy` removes access\n from anyone without organization-level access to the project. Proceed with caution.\n It's not recommended to use `gcp.projects.IAMPolicy` with your provider project\n to avoid locking yourself out, and it should generally only be used with projects\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Projects.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026projects.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.projects.inputs.IAMBindingConditionArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 project = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Projects.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026projects.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.inputs.IAMMemberConditionArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMAuditConfig(\"project\", {\n project: \"your-project-id\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMAuditConfig(\"project\",\n project=\"your-project-id\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"log_type\": \"ADMIN_READ\",\n },\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\"user:joebloggs@example.com\"],\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 project = new Gcp.Projects.IAMAuditConfig(\"project\", new()\n {\n Project = \"your-project-id\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMAuditConfig(ctx, \"project\", \u0026projects.IAMAuditConfigArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: projects.IAMAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.projects.IAMAuditConfig;\nimport com.pulumi.gcp.projects.IAMAuditConfigArgs;\nimport com.pulumi.gcp.projects.inputs.IAMAuditConfigAuditLogConfigArgs;\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 project = new IAMAuditConfig(\"project\", IAMAuditConfigArgs.builder()\n .project(\"your-project-id\")\n .service(\"allServices\")\n .auditLogConfigs( \n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMAuditConfig\n properties:\n project: your-project-id\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing Audit Configs\n\nAn audit config can be imported into a `google_project_iam_audit_config` resource using the resource's `project_id` and the `service`, e.g:\n\n* `\"{{project_id}} foo.googleapis.com\"`\n\nAn `import` block (Terraform v1.5.0 and later) can be used to import audit configs:\n\ntf\n\nimport {\n\n id = \"{{project_id}} foo.googleapis.com\"\n\n to = google_project_iam_audit_config.default\n\n}\n\nThe `pulumi import` command can also be used:\n\n```sh\n$ pulumi import gcp:projects/iAMAuditConfig:IAMAuditConfig default \"{{project_id}} foo.googleapis.com\"\n```\n\n", "properties": { "auditLogConfigs": { "type": "array", @@ -227216,7 +227216,7 @@ } }, "gcp:projects/iAMBinding:IAMBinding": { - "description": "Four different resources help you manage your IAM policy for a project. Each of these resources serves a different use case:\n\n* `gcp.projects.IAMPolicy`: Authoritative. Sets the IAM policy for the project and replaces any existing policy already attached.\n* `gcp.projects.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the project are preserved.\n* `gcp.projects.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the project are preserved.\n* `gcp.projects.IAMAuditConfig`: Authoritative for a given service. Updates the IAM policy to enable audit logging for the given service.\n\n\u003e **Note:** `gcp.projects.IAMPolicy` **cannot** be used in conjunction with `gcp.projects.IAMBinding`, `gcp.projects.IAMMember`, or `gcp.projects.IAMAuditConfig` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.projects.IAMBinding` resources **can be** used in conjunction with `gcp.projects.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n\u003e **Note:** The underlying API method `projects.setIamPolicy` has a lot of constraints which are documented [here](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). In addition to these constraints, \n IAM Conditions cannot be used with Basic Roles such as Owner. Violating these constraints will result in the API returning 400 error code so please review these if you encounter errors with this resource.\n\n## gcp.projects.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your project\n using this resource. Deleting a `gcp.projects.IAMPolicy` removes access\n from anyone without organization-level access to the project. Proceed with caution.\n It's not recommended to use `gcp.projects.IAMPolicy` with your provider project\n to avoid locking yourself out, and it should generally only be used with projects\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Projects.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026projects.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.projects.inputs.IAMBindingConditionArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 project = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Projects.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026projects.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.inputs.IAMMemberConditionArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMAuditConfig(\"project\", {\n project: \"your-project-id\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMAuditConfig(\"project\",\n project=\"your-project-id\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"logType\": \"ADMIN_READ\",\n },\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\"user:joebloggs@example.com\"],\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 project = new Gcp.Projects.IAMAuditConfig(\"project\", new()\n {\n Project = \"your-project-id\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMAuditConfig(ctx, \"project\", \u0026projects.IAMAuditConfigArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: projects.IAMAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.projects.IAMAuditConfig;\nimport com.pulumi.gcp.projects.IAMAuditConfigArgs;\nimport com.pulumi.gcp.projects.inputs.IAMAuditConfigAuditLogConfigArgs;\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 project = new IAMAuditConfig(\"project\", IAMAuditConfigArgs.builder()\n .project(\"your-project-id\")\n .service(\"allServices\")\n .auditLogConfigs( \n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMAuditConfig\n properties:\n project: your-project-id\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your project\n using this resource. Deleting a `gcp.projects.IAMPolicy` removes access\n from anyone without organization-level access to the project. Proceed with caution.\n It's not recommended to use `gcp.projects.IAMPolicy` with your provider project\n to avoid locking yourself out, and it should generally only be used with projects\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Projects.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026projects.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.projects.inputs.IAMBindingConditionArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 project = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Projects.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026projects.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.inputs.IAMMemberConditionArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMAuditConfig(\"project\", {\n project: \"your-project-id\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMAuditConfig(\"project\",\n project=\"your-project-id\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"logType\": \"ADMIN_READ\",\n },\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\"user:joebloggs@example.com\"],\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 project = new Gcp.Projects.IAMAuditConfig(\"project\", new()\n {\n Project = \"your-project-id\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMAuditConfig(ctx, \"project\", \u0026projects.IAMAuditConfigArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: projects.IAMAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.projects.IAMAuditConfig;\nimport com.pulumi.gcp.projects.IAMAuditConfigArgs;\nimport com.pulumi.gcp.projects.inputs.IAMAuditConfigAuditLogConfigArgs;\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 project = new IAMAuditConfig(\"project\", IAMAuditConfigArgs.builder()\n .project(\"your-project-id\")\n .service(\"allServices\")\n .auditLogConfigs( \n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMAuditConfig\n properties:\n project: your-project-id\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing Audit Configs\n\nAn audit config can be imported into a `google_project_iam_audit_config` resource using the resource's `project_id` and the `service`, e.g:\n\n* `\"{{project_id}} foo.googleapis.com\"`\n\nAn `import` block (Terraform v1.5.0 and later) can be used to import audit configs:\n\ntf\n\nimport {\n\n id = \"{{project_id}} foo.googleapis.com\"\n\n to = google_project_iam_audit_config.default\n\n}\n\nThe `pulumi import` command can also be used:\n\n```sh\n$ pulumi import gcp:projects/iAMBinding:IAMBinding default \"{{project_id}} foo.googleapis.com\"\n```\n\n", + "description": "Four different resources help you manage your IAM policy for a project. Each of these resources serves a different use case:\n\n* `gcp.projects.IAMPolicy`: Authoritative. Sets the IAM policy for the project and replaces any existing policy already attached.\n* `gcp.projects.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the project are preserved.\n* `gcp.projects.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the project are preserved.\n* `gcp.projects.IAMAuditConfig`: Authoritative for a given service. Updates the IAM policy to enable audit logging for the given service.\n\n\u003e **Note:** `gcp.projects.IAMPolicy` **cannot** be used in conjunction with `gcp.projects.IAMBinding`, `gcp.projects.IAMMember`, or `gcp.projects.IAMAuditConfig` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.projects.IAMBinding` resources **can be** used in conjunction with `gcp.projects.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n\u003e **Note:** The underlying API method `projects.setIamPolicy` has a lot of constraints which are documented [here](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). In addition to these constraints, \n IAM Conditions cannot be used with Basic Roles such as Owner. Violating these constraints will result in the API returning 400 error code so please review these if you encounter errors with this resource.\n\n## gcp.projects.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your project\n using this resource. Deleting a `gcp.projects.IAMPolicy` removes access\n from anyone without organization-level access to the project. Proceed with caution.\n It's not recommended to use `gcp.projects.IAMPolicy` with your provider project\n to avoid locking yourself out, and it should generally only be used with projects\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Projects.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026projects.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.projects.inputs.IAMBindingConditionArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 project = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Projects.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026projects.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.inputs.IAMMemberConditionArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMAuditConfig(\"project\", {\n project: \"your-project-id\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMAuditConfig(\"project\",\n project=\"your-project-id\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"log_type\": \"ADMIN_READ\",\n },\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\"user:joebloggs@example.com\"],\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 project = new Gcp.Projects.IAMAuditConfig(\"project\", new()\n {\n Project = \"your-project-id\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMAuditConfig(ctx, \"project\", \u0026projects.IAMAuditConfigArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: projects.IAMAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.projects.IAMAuditConfig;\nimport com.pulumi.gcp.projects.IAMAuditConfigArgs;\nimport com.pulumi.gcp.projects.inputs.IAMAuditConfigAuditLogConfigArgs;\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 project = new IAMAuditConfig(\"project\", IAMAuditConfigArgs.builder()\n .project(\"your-project-id\")\n .service(\"allServices\")\n .auditLogConfigs( \n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMAuditConfig\n properties:\n project: your-project-id\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your project\n using this resource. Deleting a `gcp.projects.IAMPolicy` removes access\n from anyone without organization-level access to the project. Proceed with caution.\n It's not recommended to use `gcp.projects.IAMPolicy` with your provider project\n to avoid locking yourself out, and it should generally only be used with projects\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Projects.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026projects.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.projects.inputs.IAMBindingConditionArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 project = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Projects.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026projects.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.inputs.IAMMemberConditionArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMAuditConfig(\"project\", {\n project: \"your-project-id\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMAuditConfig(\"project\",\n project=\"your-project-id\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"log_type\": \"ADMIN_READ\",\n },\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\"user:joebloggs@example.com\"],\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 project = new Gcp.Projects.IAMAuditConfig(\"project\", new()\n {\n Project = \"your-project-id\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMAuditConfig(ctx, \"project\", \u0026projects.IAMAuditConfigArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: projects.IAMAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.projects.IAMAuditConfig;\nimport com.pulumi.gcp.projects.IAMAuditConfigArgs;\nimport com.pulumi.gcp.projects.inputs.IAMAuditConfigAuditLogConfigArgs;\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 project = new IAMAuditConfig(\"project\", IAMAuditConfigArgs.builder()\n .project(\"your-project-id\")\n .service(\"allServices\")\n .auditLogConfigs( \n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMAuditConfig\n properties:\n project: your-project-id\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing Audit Configs\n\nAn audit config can be imported into a `google_project_iam_audit_config` resource using the resource's `project_id` and the `service`, e.g:\n\n* `\"{{project_id}} foo.googleapis.com\"`\n\nAn `import` block (Terraform v1.5.0 and later) can be used to import audit configs:\n\ntf\n\nimport {\n\n id = \"{{project_id}} foo.googleapis.com\"\n\n to = google_project_iam_audit_config.default\n\n}\n\nThe `pulumi import` command can also be used:\n\n```sh\n$ pulumi import gcp:projects/iAMBinding:IAMBinding default \"{{project_id}} foo.googleapis.com\"\n```\n\n", "properties": { "condition": { "$ref": "#/types/gcp:projects/IAMBindingCondition:IAMBindingCondition", @@ -227438,7 +227438,7 @@ } }, "gcp:projects/iAMMember:IAMMember": { - "description": "Four different resources help you manage your IAM policy for a project. Each of these resources serves a different use case:\n\n* `gcp.projects.IAMPolicy`: Authoritative. Sets the IAM policy for the project and replaces any existing policy already attached.\n* `gcp.projects.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the project are preserved.\n* `gcp.projects.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the project are preserved.\n* `gcp.projects.IAMAuditConfig`: Authoritative for a given service. Updates the IAM policy to enable audit logging for the given service.\n\n\u003e **Note:** `gcp.projects.IAMPolicy` **cannot** be used in conjunction with `gcp.projects.IAMBinding`, `gcp.projects.IAMMember`, or `gcp.projects.IAMAuditConfig` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.projects.IAMBinding` resources **can be** used in conjunction with `gcp.projects.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n\u003e **Note:** The underlying API method `projects.setIamPolicy` has a lot of constraints which are documented [here](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). In addition to these constraints, \n IAM Conditions cannot be used with Basic Roles such as Owner. Violating these constraints will result in the API returning 400 error code so please review these if you encounter errors with this resource.\n\n## gcp.projects.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your project\n using this resource. Deleting a `gcp.projects.IAMPolicy` removes access\n from anyone without organization-level access to the project. Proceed with caution.\n It's not recommended to use `gcp.projects.IAMPolicy` with your provider project\n to avoid locking yourself out, and it should generally only be used with projects\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Projects.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026projects.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.projects.inputs.IAMBindingConditionArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 project = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Projects.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026projects.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.inputs.IAMMemberConditionArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMAuditConfig(\"project\", {\n project: \"your-project-id\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMAuditConfig(\"project\",\n project=\"your-project-id\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"logType\": \"ADMIN_READ\",\n },\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\"user:joebloggs@example.com\"],\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 project = new Gcp.Projects.IAMAuditConfig(\"project\", new()\n {\n Project = \"your-project-id\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMAuditConfig(ctx, \"project\", \u0026projects.IAMAuditConfigArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: projects.IAMAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.projects.IAMAuditConfig;\nimport com.pulumi.gcp.projects.IAMAuditConfigArgs;\nimport com.pulumi.gcp.projects.inputs.IAMAuditConfigAuditLogConfigArgs;\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 project = new IAMAuditConfig(\"project\", IAMAuditConfigArgs.builder()\n .project(\"your-project-id\")\n .service(\"allServices\")\n .auditLogConfigs( \n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMAuditConfig\n properties:\n project: your-project-id\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your project\n using this resource. Deleting a `gcp.projects.IAMPolicy` removes access\n from anyone without organization-level access to the project. Proceed with caution.\n It's not recommended to use `gcp.projects.IAMPolicy` with your provider project\n to avoid locking yourself out, and it should generally only be used with projects\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Projects.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026projects.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.projects.inputs.IAMBindingConditionArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 project = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Projects.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026projects.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.inputs.IAMMemberConditionArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMAuditConfig(\"project\", {\n project: \"your-project-id\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMAuditConfig(\"project\",\n project=\"your-project-id\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"logType\": \"ADMIN_READ\",\n },\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\"user:joebloggs@example.com\"],\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 project = new Gcp.Projects.IAMAuditConfig(\"project\", new()\n {\n Project = \"your-project-id\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMAuditConfig(ctx, \"project\", \u0026projects.IAMAuditConfigArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: projects.IAMAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.projects.IAMAuditConfig;\nimport com.pulumi.gcp.projects.IAMAuditConfigArgs;\nimport com.pulumi.gcp.projects.inputs.IAMAuditConfigAuditLogConfigArgs;\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 project = new IAMAuditConfig(\"project\", IAMAuditConfigArgs.builder()\n .project(\"your-project-id\")\n .service(\"allServices\")\n .auditLogConfigs( \n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMAuditConfig\n properties:\n project: your-project-id\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing Audit Configs\n\nAn audit config can be imported into a `google_project_iam_audit_config` resource using the resource's `project_id` and the `service`, e.g:\n\n* `\"{{project_id}} foo.googleapis.com\"`\n\nAn `import` block (Terraform v1.5.0 and later) can be used to import audit configs:\n\ntf\n\nimport {\n\n id = \"{{project_id}} foo.googleapis.com\"\n\n to = google_project_iam_audit_config.default\n\n}\n\nThe `pulumi import` command can also be used:\n\n```sh\n$ pulumi import gcp:projects/iAMMember:IAMMember default \"{{project_id}} foo.googleapis.com\"\n```\n\n", + "description": "Four different resources help you manage your IAM policy for a project. Each of these resources serves a different use case:\n\n* `gcp.projects.IAMPolicy`: Authoritative. Sets the IAM policy for the project and replaces any existing policy already attached.\n* `gcp.projects.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the project are preserved.\n* `gcp.projects.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the project are preserved.\n* `gcp.projects.IAMAuditConfig`: Authoritative for a given service. Updates the IAM policy to enable audit logging for the given service.\n\n\u003e **Note:** `gcp.projects.IAMPolicy` **cannot** be used in conjunction with `gcp.projects.IAMBinding`, `gcp.projects.IAMMember`, or `gcp.projects.IAMAuditConfig` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.projects.IAMBinding` resources **can be** used in conjunction with `gcp.projects.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n\u003e **Note:** The underlying API method `projects.setIamPolicy` has a lot of constraints which are documented [here](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). In addition to these constraints, \n IAM Conditions cannot be used with Basic Roles such as Owner. Violating these constraints will result in the API returning 400 error code so please review these if you encounter errors with this resource.\n\n## gcp.projects.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your project\n using this resource. Deleting a `gcp.projects.IAMPolicy` removes access\n from anyone without organization-level access to the project. Proceed with caution.\n It's not recommended to use `gcp.projects.IAMPolicy` with your provider project\n to avoid locking yourself out, and it should generally only be used with projects\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Projects.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026projects.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.projects.inputs.IAMBindingConditionArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 project = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Projects.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026projects.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.inputs.IAMMemberConditionArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMAuditConfig(\"project\", {\n project: \"your-project-id\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMAuditConfig(\"project\",\n project=\"your-project-id\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"log_type\": \"ADMIN_READ\",\n },\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\"user:joebloggs@example.com\"],\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 project = new Gcp.Projects.IAMAuditConfig(\"project\", new()\n {\n Project = \"your-project-id\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMAuditConfig(ctx, \"project\", \u0026projects.IAMAuditConfigArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: projects.IAMAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.projects.IAMAuditConfig;\nimport com.pulumi.gcp.projects.IAMAuditConfigArgs;\nimport com.pulumi.gcp.projects.inputs.IAMAuditConfigAuditLogConfigArgs;\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 project = new IAMAuditConfig(\"project\", IAMAuditConfigArgs.builder()\n .project(\"your-project-id\")\n .service(\"allServices\")\n .auditLogConfigs( \n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMAuditConfig\n properties:\n project: your-project-id\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your project\n using this resource. Deleting a `gcp.projects.IAMPolicy` removes access\n from anyone without organization-level access to the project. Proceed with caution.\n It's not recommended to use `gcp.projects.IAMPolicy` with your provider project\n to avoid locking yourself out, and it should generally only be used with projects\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Projects.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026projects.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.projects.inputs.IAMBindingConditionArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 project = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Projects.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026projects.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.inputs.IAMMemberConditionArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMAuditConfig(\"project\", {\n project: \"your-project-id\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMAuditConfig(\"project\",\n project=\"your-project-id\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"log_type\": \"ADMIN_READ\",\n },\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\"user:joebloggs@example.com\"],\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 project = new Gcp.Projects.IAMAuditConfig(\"project\", new()\n {\n Project = \"your-project-id\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMAuditConfig(ctx, \"project\", \u0026projects.IAMAuditConfigArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: projects.IAMAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.projects.IAMAuditConfig;\nimport com.pulumi.gcp.projects.IAMAuditConfigArgs;\nimport com.pulumi.gcp.projects.inputs.IAMAuditConfigAuditLogConfigArgs;\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 project = new IAMAuditConfig(\"project\", IAMAuditConfigArgs.builder()\n .project(\"your-project-id\")\n .service(\"allServices\")\n .auditLogConfigs( \n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMAuditConfig\n properties:\n project: your-project-id\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing Audit Configs\n\nAn audit config can be imported into a `google_project_iam_audit_config` resource using the resource's `project_id` and the `service`, e.g:\n\n* `\"{{project_id}} foo.googleapis.com\"`\n\nAn `import` block (Terraform v1.5.0 and later) can be used to import audit configs:\n\ntf\n\nimport {\n\n id = \"{{project_id}} foo.googleapis.com\"\n\n to = google_project_iam_audit_config.default\n\n}\n\nThe `pulumi import` command can also be used:\n\n```sh\n$ pulumi import gcp:projects/iAMMember:IAMMember default \"{{project_id}} foo.googleapis.com\"\n```\n\n", "properties": { "condition": { "$ref": "#/types/gcp:projects/IAMMemberCondition:IAMMemberCondition", @@ -227526,7 +227526,7 @@ } }, "gcp:projects/iAMPolicy:IAMPolicy": { - "description": "Four different resources help you manage your IAM policy for a project. Each of these resources serves a different use case:\n\n* `gcp.projects.IAMPolicy`: Authoritative. Sets the IAM policy for the project and replaces any existing policy already attached.\n* `gcp.projects.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the project are preserved.\n* `gcp.projects.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the project are preserved.\n* `gcp.projects.IAMAuditConfig`: Authoritative for a given service. Updates the IAM policy to enable audit logging for the given service.\n\n\u003e **Note:** `gcp.projects.IAMPolicy` **cannot** be used in conjunction with `gcp.projects.IAMBinding`, `gcp.projects.IAMMember`, or `gcp.projects.IAMAuditConfig` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.projects.IAMBinding` resources **can be** used in conjunction with `gcp.projects.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n\u003e **Note:** The underlying API method `projects.setIamPolicy` has a lot of constraints which are documented [here](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). In addition to these constraints, \n IAM Conditions cannot be used with Basic Roles such as Owner. Violating these constraints will result in the API returning 400 error code so please review these if you encounter errors with this resource.\n\n## gcp.projects.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your project\n using this resource. Deleting a `gcp.projects.IAMPolicy` removes access\n from anyone without organization-level access to the project. Proceed with caution.\n It's not recommended to use `gcp.projects.IAMPolicy` with your provider project\n to avoid locking yourself out, and it should generally only be used with projects\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Projects.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026projects.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.projects.inputs.IAMBindingConditionArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 project = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Projects.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026projects.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.inputs.IAMMemberConditionArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMAuditConfig(\"project\", {\n project: \"your-project-id\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMAuditConfig(\"project\",\n project=\"your-project-id\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"logType\": \"ADMIN_READ\",\n },\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\"user:joebloggs@example.com\"],\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 project = new Gcp.Projects.IAMAuditConfig(\"project\", new()\n {\n Project = \"your-project-id\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMAuditConfig(ctx, \"project\", \u0026projects.IAMAuditConfigArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: projects.IAMAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.projects.IAMAuditConfig;\nimport com.pulumi.gcp.projects.IAMAuditConfigArgs;\nimport com.pulumi.gcp.projects.inputs.IAMAuditConfigAuditLogConfigArgs;\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 project = new IAMAuditConfig(\"project\", IAMAuditConfigArgs.builder()\n .project(\"your-project-id\")\n .service(\"allServices\")\n .auditLogConfigs( \n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMAuditConfig\n properties:\n project: your-project-id\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your project\n using this resource. Deleting a `gcp.projects.IAMPolicy` removes access\n from anyone without organization-level access to the project. Proceed with caution.\n It's not recommended to use `gcp.projects.IAMPolicy` with your provider project\n to avoid locking yourself out, and it should generally only be used with projects\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Projects.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026projects.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.projects.inputs.IAMBindingConditionArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 project = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Projects.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026projects.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.inputs.IAMMemberConditionArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMAuditConfig(\"project\", {\n project: \"your-project-id\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMAuditConfig(\"project\",\n project=\"your-project-id\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"logType\": \"ADMIN_READ\",\n },\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\"user:joebloggs@example.com\"],\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 project = new Gcp.Projects.IAMAuditConfig(\"project\", new()\n {\n Project = \"your-project-id\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMAuditConfig(ctx, \"project\", \u0026projects.IAMAuditConfigArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: projects.IAMAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.projects.IAMAuditConfig;\nimport com.pulumi.gcp.projects.IAMAuditConfigArgs;\nimport com.pulumi.gcp.projects.inputs.IAMAuditConfigAuditLogConfigArgs;\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 project = new IAMAuditConfig(\"project\", IAMAuditConfigArgs.builder()\n .project(\"your-project-id\")\n .service(\"allServices\")\n .auditLogConfigs( \n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMAuditConfig\n properties:\n project: your-project-id\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing Audit Configs\n\nAn audit config can be imported into a `google_project_iam_audit_config` resource using the resource's `project_id` and the `service`, e.g:\n\n* `\"{{project_id}} foo.googleapis.com\"`\n\nAn `import` block (Terraform v1.5.0 and later) can be used to import audit configs:\n\ntf\n\nimport {\n\n id = \"{{project_id}} foo.googleapis.com\"\n\n to = google_project_iam_audit_config.default\n\n}\n\nThe `pulumi import` command can also be used:\n\n```sh\n$ pulumi import gcp:projects/iAMPolicy:IAMPolicy default \"{{project_id}} foo.googleapis.com\"\n```\n\n", + "description": "Four different resources help you manage your IAM policy for a project. Each of these resources serves a different use case:\n\n* `gcp.projects.IAMPolicy`: Authoritative. Sets the IAM policy for the project and replaces any existing policy already attached.\n* `gcp.projects.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the project are preserved.\n* `gcp.projects.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the project are preserved.\n* `gcp.projects.IAMAuditConfig`: Authoritative for a given service. Updates the IAM policy to enable audit logging for the given service.\n\n\u003e **Note:** `gcp.projects.IAMPolicy` **cannot** be used in conjunction with `gcp.projects.IAMBinding`, `gcp.projects.IAMMember`, or `gcp.projects.IAMAuditConfig` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.projects.IAMBinding` resources **can be** used in conjunction with `gcp.projects.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n\u003e **Note:** The underlying API method `projects.setIamPolicy` has a lot of constraints which are documented [here](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy). In addition to these constraints, \n IAM Conditions cannot be used with Basic Roles such as Owner. Violating these constraints will result in the API returning 400 error code so please review these if you encounter errors with this resource.\n\n## gcp.projects.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your project\n using this resource. Deleting a `gcp.projects.IAMPolicy` removes access\n from anyone without organization-level access to the project. Proceed with caution.\n It's not recommended to use `gcp.projects.IAMPolicy` with your provider project\n to avoid locking yourself out, and it should generally only be used with projects\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Projects.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026projects.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.projects.inputs.IAMBindingConditionArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 project = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Projects.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026projects.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.inputs.IAMMemberConditionArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMAuditConfig(\"project\", {\n project: \"your-project-id\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMAuditConfig(\"project\",\n project=\"your-project-id\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"log_type\": \"ADMIN_READ\",\n },\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\"user:joebloggs@example.com\"],\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 project = new Gcp.Projects.IAMAuditConfig(\"project\", new()\n {\n Project = \"your-project-id\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMAuditConfig(ctx, \"project\", \u0026projects.IAMAuditConfigArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: projects.IAMAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.projects.IAMAuditConfig;\nimport com.pulumi.gcp.projects.IAMAuditConfigArgs;\nimport com.pulumi.gcp.projects.inputs.IAMAuditConfigAuditLogConfigArgs;\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 project = new IAMAuditConfig(\"project\", IAMAuditConfigArgs.builder()\n .project(\"your-project-id\")\n .service(\"allServices\")\n .auditLogConfigs( \n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMAuditConfig\n properties:\n project: your-project-id\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMPolicy\n\n!\u003e **Be careful!** You can accidentally lock yourself out of your project\n using this resource. Deleting a `gcp.projects.IAMPolicy` removes access\n from anyone without organization-level access to the project. Proceed with caution.\n It's not recommended to use `gcp.projects.IAMPolicy` with your provider project\n to avoid locking yourself out, and it should generally only be used with projects\n fully managed by this provider. If you do use this resource, it is recommended to **import** the policy before\n applying the change.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/editor\",\n \"members\": [\"user:jane@example.com\"],\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/editor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/compute.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n }],\n});\nconst project = new gcp.projects.IAMPolicy(\"project\", {\n project: \"your-project-id\",\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/compute.admin\",\n \"members\": [\"user:jane@example.com\"],\n \"condition\": {\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n}])\nproject = gcp.projects.IAMPolicy(\"project\",\n project=\"your-project-id\",\n policy_data=admin.policy_data)\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 admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/compute.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Organizations.Inputs.GetIAMPolicyBindingConditionInputArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n },\n },\n });\n\n var project = new Gcp.Projects.IAMPolicy(\"project\", new()\n {\n Project = \"your-project-id\",\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/compute.admin\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t\tCondition: {\n\t\t\t\t\t\tTitle: \"expires_after_2019_12_31\",\n\t\t\t\t\t\tDescription: pulumi.StringRef(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\t\t\tExpression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = projects.NewIAMPolicy(ctx, \"project\", \u0026projects.IAMPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\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.GetIAMPolicyArgs;\nimport com.pulumi.gcp.projects.IAMPolicy;\nimport com.pulumi.gcp.projects.IAMPolicyArgs;\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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/compute.admin\")\n .members(\"user:jane@example.com\")\n .condition(GetIAMPolicyBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build())\n .build());\n\n var project = new IAMPolicy(\"project\", IAMPolicyArgs.builder()\n .project(\"your-project-id\")\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMPolicy\n properties:\n project: your-project-id\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/compute.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMBinding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n members=[\"user:jane@example.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 project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/editor\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMBinding(\"project\", {\n project: \"your-project-id\",\n role: \"roles/container.admin\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMBinding(\"project\",\n project=\"your-project-id\",\n role=\"roles/container.admin\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/container.admin\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.Projects.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/container.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026projects.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.projects.inputs.IAMBindingConditionArgs;\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 project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/container.admin\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/container.admin\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMMember\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/editor\",\n member: \"user:jane@example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/editor\",\n member=\"user:jane@example.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 project = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/editor\",\n Member = \"user:jane@example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/editor\")\n .member(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/editor\n member: user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWith IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMMember(\"project\", {\n project: \"your-project-id\",\n role: \"roles/firebase.admin\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMMember(\"project\",\n project=\"your-project-id\",\n role=\"roles/firebase.admin\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\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 = new Gcp.Projects.IAMMember(\"project\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/firebase.admin\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.Projects.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMMember(ctx, \"project\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/firebase.admin\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026projects.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\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.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.inputs.IAMMemberConditionArgs;\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 project = new IAMMember(\"project\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/firebase.admin\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/firebase.admin\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## gcp.projects.IAMAuditConfig\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.projects.IAMAuditConfig(\"project\", {\n project: \"your-project-id\",\n service: \"allServices\",\n auditLogConfigs: [\n {\n logType: \"ADMIN_READ\",\n },\n {\n logType: \"DATA_READ\",\n exemptedMembers: [\"user:joebloggs@example.com\"],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.projects.IAMAuditConfig(\"project\",\n project=\"your-project-id\",\n service=\"allServices\",\n audit_log_configs=[\n {\n \"log_type\": \"ADMIN_READ\",\n },\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\"user:joebloggs@example.com\"],\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 project = new Gcp.Projects.IAMAuditConfig(\"project\", new()\n {\n Project = \"your-project-id\",\n Service = \"allServices\",\n AuditLogConfigs = new[]\n {\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"ADMIN_READ\",\n },\n new Gcp.Projects.Inputs.IAMAuditConfigAuditLogConfigArgs\n {\n LogType = \"DATA_READ\",\n ExemptedMembers = new[]\n {\n \"user:joebloggs@example.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewIAMAuditConfig(ctx, \"project\", \u0026projects.IAMAuditConfigArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tService: pulumi.String(\"allServices\"),\n\t\t\tAuditLogConfigs: projects.IAMAuditConfigAuditLogConfigArray{\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"ADMIN_READ\"),\n\t\t\t\t},\n\t\t\t\t\u0026projects.IAMAuditConfigAuditLogConfigArgs{\n\t\t\t\t\tLogType: pulumi.String(\"DATA_READ\"),\n\t\t\t\t\tExemptedMembers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"user:joebloggs@example.com\"),\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.projects.IAMAuditConfig;\nimport com.pulumi.gcp.projects.IAMAuditConfigArgs;\nimport com.pulumi.gcp.projects.inputs.IAMAuditConfigAuditLogConfigArgs;\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 project = new IAMAuditConfig(\"project\", IAMAuditConfigArgs.builder()\n .project(\"your-project-id\")\n .service(\"allServices\")\n .auditLogConfigs( \n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"ADMIN_READ\")\n .build(),\n IAMAuditConfigAuditLogConfigArgs.builder()\n .logType(\"DATA_READ\")\n .exemptedMembers(\"user:joebloggs@example.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:projects:IAMAuditConfig\n properties:\n project: your-project-id\n service: allServices\n auditLogConfigs:\n - logType: ADMIN_READ\n - logType: DATA_READ\n exemptedMembers:\n - user:joebloggs@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing Audit Configs\n\nAn audit config can be imported into a `google_project_iam_audit_config` resource using the resource's `project_id` and the `service`, e.g:\n\n* `\"{{project_id}} foo.googleapis.com\"`\n\nAn `import` block (Terraform v1.5.0 and later) can be used to import audit configs:\n\ntf\n\nimport {\n\n id = \"{{project_id}} foo.googleapis.com\"\n\n to = google_project_iam_audit_config.default\n\n}\n\nThe `pulumi import` command can also be used:\n\n```sh\n$ pulumi import gcp:projects/iAMPolicy:IAMPolicy default \"{{project_id}} foo.googleapis.com\"\n```\n\n", "properties": { "etag": { "type": "string", @@ -227647,7 +227647,7 @@ } }, "gcp:projects/organizationPolicy:OrganizationPolicy": { - "description": "Allows management of Organization Policies for a Google Cloud Project.\n\n\u003e **Warning:** This resource has been superseded by `gcp.orgpolicy.Policy`. `gcp.orgpolicy.Policy` uses Organization Policy API V2 instead of Cloud Resource Manager API V1 and it supports additional features such as tags and conditions.\n\nTo get more information about Organization Policies, see:\n\n* [API documentation](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setOrgPolicy)\n* How-to Guides\n * [Introduction to the Organization Policy Service](https://cloud.google.com/resource-manager/docs/organization-policy/overview)\n\n## Example Usage\n\nTo set policy with a [boolean constraint](https://cloud.google.com/resource-manager/docs/organization-policy/quickstart-boolean-constraints):\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serialPortPolicy = new gcp.projects.OrganizationPolicy(\"serial_port_policy\", {\n project: \"your-project-id\",\n constraint: \"compute.disableSerialPortAccess\",\n booleanPolicy: {\n enforced: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nserial_port_policy = gcp.projects.OrganizationPolicy(\"serial_port_policy\",\n project=\"your-project-id\",\n constraint=\"compute.disableSerialPortAccess\",\n boolean_policy={\n \"enforced\": 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 serialPortPolicy = new Gcp.Projects.OrganizationPolicy(\"serial_port_policy\", new()\n {\n Project = \"your-project-id\",\n Constraint = \"compute.disableSerialPortAccess\",\n BooleanPolicy = new Gcp.Projects.Inputs.OrganizationPolicyBooleanPolicyArgs\n {\n Enforced = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewOrganizationPolicy(ctx, \"serial_port_policy\", \u0026projects.OrganizationPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tConstraint: pulumi.String(\"compute.disableSerialPortAccess\"),\n\t\t\tBooleanPolicy: \u0026projects.OrganizationPolicyBooleanPolicyArgs{\n\t\t\t\tEnforced: 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.projects.OrganizationPolicy;\nimport com.pulumi.gcp.projects.OrganizationPolicyArgs;\nimport com.pulumi.gcp.projects.inputs.OrganizationPolicyBooleanPolicyArgs;\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 serialPortPolicy = new OrganizationPolicy(\"serialPortPolicy\", OrganizationPolicyArgs.builder()\n .project(\"your-project-id\")\n .constraint(\"compute.disableSerialPortAccess\")\n .booleanPolicy(OrganizationPolicyBooleanPolicyArgs.builder()\n .enforced(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n serialPortPolicy:\n type: gcp:projects:OrganizationPolicy\n name: serial_port_policy\n properties:\n project: your-project-id\n constraint: compute.disableSerialPortAccess\n booleanPolicy:\n enforced: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\nTo set a policy with a [list constraint](https://cloud.google.com/resource-manager/docs/organization-policy/quickstart-list-constraints):\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.projects.OrganizationPolicy(\"services_policy\", {\n project: \"your-project-id\",\n constraint: \"serviceuser.services\",\n listPolicy: {\n allow: {\n all: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.projects.OrganizationPolicy(\"services_policy\",\n project=\"your-project-id\",\n constraint=\"serviceuser.services\",\n list_policy={\n \"allow\": {\n \"all\": 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 servicesPolicy = new Gcp.Projects.OrganizationPolicy(\"services_policy\", new()\n {\n Project = \"your-project-id\",\n Constraint = \"serviceuser.services\",\n ListPolicy = new Gcp.Projects.Inputs.OrganizationPolicyListPolicyArgs\n {\n Allow = new Gcp.Projects.Inputs.OrganizationPolicyListPolicyAllowArgs\n {\n All = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewOrganizationPolicy(ctx, \"services_policy\", \u0026projects.OrganizationPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tListPolicy: \u0026projects.OrganizationPolicyListPolicyArgs{\n\t\t\t\tAllow: \u0026projects.OrganizationPolicyListPolicyAllowArgs{\n\t\t\t\t\tAll: 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.projects.OrganizationPolicy;\nimport com.pulumi.gcp.projects.OrganizationPolicyArgs;\nimport com.pulumi.gcp.projects.inputs.OrganizationPolicyListPolicyArgs;\nimport com.pulumi.gcp.projects.inputs.OrganizationPolicyListPolicyAllowArgs;\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 servicesPolicy = new OrganizationPolicy(\"servicesPolicy\", OrganizationPolicyArgs.builder()\n .project(\"your-project-id\")\n .constraint(\"serviceuser.services\")\n .listPolicy(OrganizationPolicyListPolicyArgs.builder()\n .allow(OrganizationPolicyListPolicyAllowArgs.builder()\n .all(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:projects:OrganizationPolicy\n name: services_policy\n properties:\n project: your-project-id\n constraint: serviceuser.services\n listPolicy:\n allow:\n all: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\nOr to deny some services, use the following instead:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.projects.OrganizationPolicy(\"services_policy\", {\n project: \"your-project-id\",\n constraint: \"serviceuser.services\",\n listPolicy: {\n suggestedValue: \"compute.googleapis.com\",\n deny: {\n values: [\"cloudresourcemanager.googleapis.com\"],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.projects.OrganizationPolicy(\"services_policy\",\n project=\"your-project-id\",\n constraint=\"serviceuser.services\",\n list_policy={\n \"suggestedValue\": \"compute.googleapis.com\",\n \"deny\": {\n \"values\": [\"cloudresourcemanager.googleapis.com\"],\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 servicesPolicy = new Gcp.Projects.OrganizationPolicy(\"services_policy\", new()\n {\n Project = \"your-project-id\",\n Constraint = \"serviceuser.services\",\n ListPolicy = new Gcp.Projects.Inputs.OrganizationPolicyListPolicyArgs\n {\n SuggestedValue = \"compute.googleapis.com\",\n Deny = new Gcp.Projects.Inputs.OrganizationPolicyListPolicyDenyArgs\n {\n Values = new[]\n {\n \"cloudresourcemanager.googleapis.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewOrganizationPolicy(ctx, \"services_policy\", \u0026projects.OrganizationPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tListPolicy: \u0026projects.OrganizationPolicyListPolicyArgs{\n\t\t\t\tSuggestedValue: pulumi.String(\"compute.googleapis.com\"),\n\t\t\t\tDeny: \u0026projects.OrganizationPolicyListPolicyDenyArgs{\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudresourcemanager.googleapis.com\"),\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.projects.OrganizationPolicy;\nimport com.pulumi.gcp.projects.OrganizationPolicyArgs;\nimport com.pulumi.gcp.projects.inputs.OrganizationPolicyListPolicyArgs;\nimport com.pulumi.gcp.projects.inputs.OrganizationPolicyListPolicyDenyArgs;\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 servicesPolicy = new OrganizationPolicy(\"servicesPolicy\", OrganizationPolicyArgs.builder()\n .project(\"your-project-id\")\n .constraint(\"serviceuser.services\")\n .listPolicy(OrganizationPolicyListPolicyArgs.builder()\n .suggestedValue(\"compute.googleapis.com\")\n .deny(OrganizationPolicyListPolicyDenyArgs.builder()\n .values(\"cloudresourcemanager.googleapis.com\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:projects:OrganizationPolicy\n name: services_policy\n properties:\n project: your-project-id\n constraint: serviceuser.services\n listPolicy:\n suggestedValue: compute.googleapis.com\n deny:\n values:\n - cloudresourcemanager.googleapis.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nTo restore the default project organization policy, use the following instead:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.projects.OrganizationPolicy(\"services_policy\", {\n project: \"your-project-id\",\n constraint: \"serviceuser.services\",\n restorePolicy: {\n \"default\": true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.projects.OrganizationPolicy(\"services_policy\",\n project=\"your-project-id\",\n constraint=\"serviceuser.services\",\n restore_policy={\n \"default\": 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 servicesPolicy = new Gcp.Projects.OrganizationPolicy(\"services_policy\", new()\n {\n Project = \"your-project-id\",\n Constraint = \"serviceuser.services\",\n RestorePolicy = new Gcp.Projects.Inputs.OrganizationPolicyRestorePolicyArgs\n {\n Default = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewOrganizationPolicy(ctx, \"services_policy\", \u0026projects.OrganizationPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tRestorePolicy: \u0026projects.OrganizationPolicyRestorePolicyArgs{\n\t\t\t\tDefault: 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.projects.OrganizationPolicy;\nimport com.pulumi.gcp.projects.OrganizationPolicyArgs;\nimport com.pulumi.gcp.projects.inputs.OrganizationPolicyRestorePolicyArgs;\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 servicesPolicy = new OrganizationPolicy(\"servicesPolicy\", OrganizationPolicyArgs.builder()\n .project(\"your-project-id\")\n .constraint(\"serviceuser.services\")\n .restorePolicy(OrganizationPolicyRestorePolicyArgs.builder()\n .default_(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:projects:OrganizationPolicy\n name: services_policy\n properties:\n project: your-project-id\n constraint: serviceuser.services\n restorePolicy:\n default: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProject organization policies can be imported using any of the follow formats:\n\n* `projects/{{project_id}}:constraints/{{constraint}}`\n\n* `{{project_id}}:constraints/{{constraint}}`\n\n* `{{project_id}}:{{constraint}}`\n\nWhen using the `pulumi import` command, project organization policies can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:projects/organizationPolicy:OrganizationPolicy default projects/{{project_id}}:constraints/{{constraint}}\n```\n\n```sh\n$ pulumi import gcp:projects/organizationPolicy:OrganizationPolicy default {{project_id}}:constraints/{{constraint}}\n```\n\n```sh\n$ pulumi import gcp:projects/organizationPolicy:OrganizationPolicy default {{project_id}}:{{constraint}}\n```\n\n", + "description": "Allows management of Organization Policies for a Google Cloud Project.\n\n\u003e **Warning:** This resource has been superseded by `gcp.orgpolicy.Policy`. `gcp.orgpolicy.Policy` uses Organization Policy API V2 instead of Cloud Resource Manager API V1 and it supports additional features such as tags and conditions.\n\nTo get more information about Organization Policies, see:\n\n* [API documentation](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setOrgPolicy)\n* How-to Guides\n * [Introduction to the Organization Policy Service](https://cloud.google.com/resource-manager/docs/organization-policy/overview)\n\n## Example Usage\n\nTo set policy with a [boolean constraint](https://cloud.google.com/resource-manager/docs/organization-policy/quickstart-boolean-constraints):\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serialPortPolicy = new gcp.projects.OrganizationPolicy(\"serial_port_policy\", {\n project: \"your-project-id\",\n constraint: \"compute.disableSerialPortAccess\",\n booleanPolicy: {\n enforced: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nserial_port_policy = gcp.projects.OrganizationPolicy(\"serial_port_policy\",\n project=\"your-project-id\",\n constraint=\"compute.disableSerialPortAccess\",\n boolean_policy={\n \"enforced\": 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 serialPortPolicy = new Gcp.Projects.OrganizationPolicy(\"serial_port_policy\", new()\n {\n Project = \"your-project-id\",\n Constraint = \"compute.disableSerialPortAccess\",\n BooleanPolicy = new Gcp.Projects.Inputs.OrganizationPolicyBooleanPolicyArgs\n {\n Enforced = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewOrganizationPolicy(ctx, \"serial_port_policy\", \u0026projects.OrganizationPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tConstraint: pulumi.String(\"compute.disableSerialPortAccess\"),\n\t\t\tBooleanPolicy: \u0026projects.OrganizationPolicyBooleanPolicyArgs{\n\t\t\t\tEnforced: 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.projects.OrganizationPolicy;\nimport com.pulumi.gcp.projects.OrganizationPolicyArgs;\nimport com.pulumi.gcp.projects.inputs.OrganizationPolicyBooleanPolicyArgs;\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 serialPortPolicy = new OrganizationPolicy(\"serialPortPolicy\", OrganizationPolicyArgs.builder()\n .project(\"your-project-id\")\n .constraint(\"compute.disableSerialPortAccess\")\n .booleanPolicy(OrganizationPolicyBooleanPolicyArgs.builder()\n .enforced(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n serialPortPolicy:\n type: gcp:projects:OrganizationPolicy\n name: serial_port_policy\n properties:\n project: your-project-id\n constraint: compute.disableSerialPortAccess\n booleanPolicy:\n enforced: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\nTo set a policy with a [list constraint](https://cloud.google.com/resource-manager/docs/organization-policy/quickstart-list-constraints):\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.projects.OrganizationPolicy(\"services_policy\", {\n project: \"your-project-id\",\n constraint: \"serviceuser.services\",\n listPolicy: {\n allow: {\n all: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.projects.OrganizationPolicy(\"services_policy\",\n project=\"your-project-id\",\n constraint=\"serviceuser.services\",\n list_policy={\n \"allow\": {\n \"all\": 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 servicesPolicy = new Gcp.Projects.OrganizationPolicy(\"services_policy\", new()\n {\n Project = \"your-project-id\",\n Constraint = \"serviceuser.services\",\n ListPolicy = new Gcp.Projects.Inputs.OrganizationPolicyListPolicyArgs\n {\n Allow = new Gcp.Projects.Inputs.OrganizationPolicyListPolicyAllowArgs\n {\n All = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewOrganizationPolicy(ctx, \"services_policy\", \u0026projects.OrganizationPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tListPolicy: \u0026projects.OrganizationPolicyListPolicyArgs{\n\t\t\t\tAllow: \u0026projects.OrganizationPolicyListPolicyAllowArgs{\n\t\t\t\t\tAll: 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.projects.OrganizationPolicy;\nimport com.pulumi.gcp.projects.OrganizationPolicyArgs;\nimport com.pulumi.gcp.projects.inputs.OrganizationPolicyListPolicyArgs;\nimport com.pulumi.gcp.projects.inputs.OrganizationPolicyListPolicyAllowArgs;\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 servicesPolicy = new OrganizationPolicy(\"servicesPolicy\", OrganizationPolicyArgs.builder()\n .project(\"your-project-id\")\n .constraint(\"serviceuser.services\")\n .listPolicy(OrganizationPolicyListPolicyArgs.builder()\n .allow(OrganizationPolicyListPolicyAllowArgs.builder()\n .all(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:projects:OrganizationPolicy\n name: services_policy\n properties:\n project: your-project-id\n constraint: serviceuser.services\n listPolicy:\n allow:\n all: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\nOr to deny some services, use the following instead:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.projects.OrganizationPolicy(\"services_policy\", {\n project: \"your-project-id\",\n constraint: \"serviceuser.services\",\n listPolicy: {\n suggestedValue: \"compute.googleapis.com\",\n deny: {\n values: [\"cloudresourcemanager.googleapis.com\"],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.projects.OrganizationPolicy(\"services_policy\",\n project=\"your-project-id\",\n constraint=\"serviceuser.services\",\n list_policy={\n \"suggested_value\": \"compute.googleapis.com\",\n \"deny\": {\n \"values\": [\"cloudresourcemanager.googleapis.com\"],\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 servicesPolicy = new Gcp.Projects.OrganizationPolicy(\"services_policy\", new()\n {\n Project = \"your-project-id\",\n Constraint = \"serviceuser.services\",\n ListPolicy = new Gcp.Projects.Inputs.OrganizationPolicyListPolicyArgs\n {\n SuggestedValue = \"compute.googleapis.com\",\n Deny = new Gcp.Projects.Inputs.OrganizationPolicyListPolicyDenyArgs\n {\n Values = new[]\n {\n \"cloudresourcemanager.googleapis.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewOrganizationPolicy(ctx, \"services_policy\", \u0026projects.OrganizationPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tListPolicy: \u0026projects.OrganizationPolicyListPolicyArgs{\n\t\t\t\tSuggestedValue: pulumi.String(\"compute.googleapis.com\"),\n\t\t\t\tDeny: \u0026projects.OrganizationPolicyListPolicyDenyArgs{\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudresourcemanager.googleapis.com\"),\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.projects.OrganizationPolicy;\nimport com.pulumi.gcp.projects.OrganizationPolicyArgs;\nimport com.pulumi.gcp.projects.inputs.OrganizationPolicyListPolicyArgs;\nimport com.pulumi.gcp.projects.inputs.OrganizationPolicyListPolicyDenyArgs;\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 servicesPolicy = new OrganizationPolicy(\"servicesPolicy\", OrganizationPolicyArgs.builder()\n .project(\"your-project-id\")\n .constraint(\"serviceuser.services\")\n .listPolicy(OrganizationPolicyListPolicyArgs.builder()\n .suggestedValue(\"compute.googleapis.com\")\n .deny(OrganizationPolicyListPolicyDenyArgs.builder()\n .values(\"cloudresourcemanager.googleapis.com\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:projects:OrganizationPolicy\n name: services_policy\n properties:\n project: your-project-id\n constraint: serviceuser.services\n listPolicy:\n suggestedValue: compute.googleapis.com\n deny:\n values:\n - cloudresourcemanager.googleapis.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nTo restore the default project organization policy, use the following instead:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst servicesPolicy = new gcp.projects.OrganizationPolicy(\"services_policy\", {\n project: \"your-project-id\",\n constraint: \"serviceuser.services\",\n restorePolicy: {\n \"default\": true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservices_policy = gcp.projects.OrganizationPolicy(\"services_policy\",\n project=\"your-project-id\",\n constraint=\"serviceuser.services\",\n restore_policy={\n \"default\": 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 servicesPolicy = new Gcp.Projects.OrganizationPolicy(\"services_policy\", new()\n {\n Project = \"your-project-id\",\n Constraint = \"serviceuser.services\",\n RestorePolicy = new Gcp.Projects.Inputs.OrganizationPolicyRestorePolicyArgs\n {\n Default = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\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 := projects.NewOrganizationPolicy(ctx, \"services_policy\", \u0026projects.OrganizationPolicyArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tConstraint: pulumi.String(\"serviceuser.services\"),\n\t\t\tRestorePolicy: \u0026projects.OrganizationPolicyRestorePolicyArgs{\n\t\t\t\tDefault: 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.projects.OrganizationPolicy;\nimport com.pulumi.gcp.projects.OrganizationPolicyArgs;\nimport com.pulumi.gcp.projects.inputs.OrganizationPolicyRestorePolicyArgs;\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 servicesPolicy = new OrganizationPolicy(\"servicesPolicy\", OrganizationPolicyArgs.builder()\n .project(\"your-project-id\")\n .constraint(\"serviceuser.services\")\n .restorePolicy(OrganizationPolicyRestorePolicyArgs.builder()\n .default_(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicesPolicy:\n type: gcp:projects:OrganizationPolicy\n name: services_policy\n properties:\n project: your-project-id\n constraint: serviceuser.services\n restorePolicy:\n default: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProject organization policies can be imported using any of the follow formats:\n\n* `projects/{{project_id}}:constraints/{{constraint}}`\n\n* `{{project_id}}:constraints/{{constraint}}`\n\n* `{{project_id}}:{{constraint}}`\n\nWhen using the `pulumi import` command, project organization policies can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:projects/organizationPolicy:OrganizationPolicy default projects/{{project_id}}:constraints/{{constraint}}\n```\n\n```sh\n$ pulumi import gcp:projects/organizationPolicy:OrganizationPolicy default {{project_id}}:constraints/{{constraint}}\n```\n\n```sh\n$ pulumi import gcp:projects/organizationPolicy:OrganizationPolicy default {{project_id}}:{{constraint}}\n```\n\n", "properties": { "booleanPolicy": { "$ref": "#/types/gcp:projects/OrganizationPolicyBooleanPolicy:OrganizationPolicyBooleanPolicy", @@ -228039,7 +228039,7 @@ } }, "gcp:pubsub/liteSubscription:LiteSubscription": { - "description": "A named resource representing the stream of messages from a single,\nspecific topic, to be delivered to the subscribing application.\n\n\nTo get more information about Subscription, see:\n\n* [API documentation](https://cloud.google.com/pubsub/lite/docs/reference/rest/v1/admin.projects.locations.subscriptions)\n* How-to Guides\n * [Managing Subscriptions](https://cloud.google.com/pubsub/lite/docs/subscriptions)\n\n## Example Usage\n\n### Pubsub Lite Subscription Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.pubsub.LiteTopic(\"example\", {\n name: \"example-topic\",\n project: project.then(project =\u003e project.number),\n partitionConfig: {\n count: 1,\n capacity: {\n publishMibPerSec: 4,\n subscribeMibPerSec: 8,\n },\n },\n retentionConfig: {\n perPartitionBytes: \"32212254720\",\n },\n});\nconst exampleLiteSubscription = new gcp.pubsub.LiteSubscription(\"example\", {\n name: \"example-subscription\",\n topic: example.name,\n deliveryConfig: {\n deliveryRequirement: \"DELIVER_AFTER_STORED\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.pubsub.LiteTopic(\"example\",\n name=\"example-topic\",\n project=project.number,\n partition_config={\n \"count\": 1,\n \"capacity\": {\n \"publishMibPerSec\": 4,\n \"subscribeMibPerSec\": 8,\n },\n },\n retention_config={\n \"perPartitionBytes\": \"32212254720\",\n })\nexample_lite_subscription = gcp.pubsub.LiteSubscription(\"example\",\n name=\"example-subscription\",\n topic=example.name,\n delivery_config={\n \"deliveryRequirement\": \"DELIVER_AFTER_STORED\",\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 example = new Gcp.PubSub.LiteTopic(\"example\", new()\n {\n Name = \"example-topic\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n PartitionConfig = new Gcp.PubSub.Inputs.LiteTopicPartitionConfigArgs\n {\n Count = 1,\n Capacity = new Gcp.PubSub.Inputs.LiteTopicPartitionConfigCapacityArgs\n {\n PublishMibPerSec = 4,\n SubscribeMibPerSec = 8,\n },\n },\n RetentionConfig = new Gcp.PubSub.Inputs.LiteTopicRetentionConfigArgs\n {\n PerPartitionBytes = \"32212254720\",\n },\n });\n\n var exampleLiteSubscription = new Gcp.PubSub.LiteSubscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Name,\n DeliveryConfig = new Gcp.PubSub.Inputs.LiteSubscriptionDeliveryConfigArgs\n {\n DeliveryRequirement = \"DELIVER_AFTER_STORED\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := pubsub.NewLiteTopic(ctx, \"example\", \u0026pubsub.LiteTopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t\tProject: pulumi.String(project.Number),\n\t\t\tPartitionConfig: \u0026pubsub.LiteTopicPartitionConfigArgs{\n\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\tCapacity: \u0026pubsub.LiteTopicPartitionConfigCapacityArgs{\n\t\t\t\t\tPublishMibPerSec: pulumi.Int(4),\n\t\t\t\t\tSubscribeMibPerSec: pulumi.Int(8),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRetentionConfig: \u0026pubsub.LiteTopicRetentionConfigArgs{\n\t\t\t\tPerPartitionBytes: pulumi.String(\"32212254720\"),\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.NewLiteSubscription(ctx, \"example\", \u0026pubsub.LiteSubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.Name,\n\t\t\tDeliveryConfig: \u0026pubsub.LiteSubscriptionDeliveryConfigArgs{\n\t\t\t\tDeliveryRequirement: pulumi.String(\"DELIVER_AFTER_STORED\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.pubsub.LiteTopic;\nimport com.pulumi.gcp.pubsub.LiteTopicArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicPartitionConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicPartitionConfigCapacityArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicRetentionConfigArgs;\nimport com.pulumi.gcp.pubsub.LiteSubscription;\nimport com.pulumi.gcp.pubsub.LiteSubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteSubscriptionDeliveryConfigArgs;\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 example = new LiteTopic(\"example\", LiteTopicArgs.builder()\n .name(\"example-topic\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .partitionConfig(LiteTopicPartitionConfigArgs.builder()\n .count(1)\n .capacity(LiteTopicPartitionConfigCapacityArgs.builder()\n .publishMibPerSec(4)\n .subscribeMibPerSec(8)\n .build())\n .build())\n .retentionConfig(LiteTopicRetentionConfigArgs.builder()\n .perPartitionBytes(32212254720)\n .build())\n .build());\n\n var exampleLiteSubscription = new LiteSubscription(\"exampleLiteSubscription\", LiteSubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.name())\n .deliveryConfig(LiteSubscriptionDeliveryConfigArgs.builder()\n .deliveryRequirement(\"DELIVER_AFTER_STORED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:LiteTopic\n properties:\n name: example-topic\n project: ${project.number}\n partitionConfig:\n count: 1\n capacity:\n publishMibPerSec: 4\n subscribeMibPerSec: 8\n retentionConfig:\n perPartitionBytes: 3.221225472e+10\n exampleLiteSubscription:\n type: gcp:pubsub:LiteSubscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.name}\n deliveryConfig:\n deliveryRequirement: DELIVER_AFTER_STORED\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubscription can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{zone}}/subscriptions/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Subscription can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:pubsub/liteSubscription:LiteSubscription default projects/{{project}}/locations/{{zone}}/subscriptions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteSubscription:LiteSubscription default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteSubscription:LiteSubscription default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteSubscription:LiteSubscription default {{name}}\n```\n\n", + "description": "A named resource representing the stream of messages from a single,\nspecific topic, to be delivered to the subscribing application.\n\n\nTo get more information about Subscription, see:\n\n* [API documentation](https://cloud.google.com/pubsub/lite/docs/reference/rest/v1/admin.projects.locations.subscriptions)\n* How-to Guides\n * [Managing Subscriptions](https://cloud.google.com/pubsub/lite/docs/subscriptions)\n\n## Example Usage\n\n### Pubsub Lite Subscription Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.pubsub.LiteTopic(\"example\", {\n name: \"example-topic\",\n project: project.then(project =\u003e project.number),\n partitionConfig: {\n count: 1,\n capacity: {\n publishMibPerSec: 4,\n subscribeMibPerSec: 8,\n },\n },\n retentionConfig: {\n perPartitionBytes: \"32212254720\",\n },\n});\nconst exampleLiteSubscription = new gcp.pubsub.LiteSubscription(\"example\", {\n name: \"example-subscription\",\n topic: example.name,\n deliveryConfig: {\n deliveryRequirement: \"DELIVER_AFTER_STORED\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.pubsub.LiteTopic(\"example\",\n name=\"example-topic\",\n project=project.number,\n partition_config={\n \"count\": 1,\n \"capacity\": {\n \"publish_mib_per_sec\": 4,\n \"subscribe_mib_per_sec\": 8,\n },\n },\n retention_config={\n \"per_partition_bytes\": \"32212254720\",\n })\nexample_lite_subscription = gcp.pubsub.LiteSubscription(\"example\",\n name=\"example-subscription\",\n topic=example.name,\n delivery_config={\n \"delivery_requirement\": \"DELIVER_AFTER_STORED\",\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 example = new Gcp.PubSub.LiteTopic(\"example\", new()\n {\n Name = \"example-topic\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n PartitionConfig = new Gcp.PubSub.Inputs.LiteTopicPartitionConfigArgs\n {\n Count = 1,\n Capacity = new Gcp.PubSub.Inputs.LiteTopicPartitionConfigCapacityArgs\n {\n PublishMibPerSec = 4,\n SubscribeMibPerSec = 8,\n },\n },\n RetentionConfig = new Gcp.PubSub.Inputs.LiteTopicRetentionConfigArgs\n {\n PerPartitionBytes = \"32212254720\",\n },\n });\n\n var exampleLiteSubscription = new Gcp.PubSub.LiteSubscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Name,\n DeliveryConfig = new Gcp.PubSub.Inputs.LiteSubscriptionDeliveryConfigArgs\n {\n DeliveryRequirement = \"DELIVER_AFTER_STORED\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := pubsub.NewLiteTopic(ctx, \"example\", \u0026pubsub.LiteTopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t\tProject: pulumi.String(project.Number),\n\t\t\tPartitionConfig: \u0026pubsub.LiteTopicPartitionConfigArgs{\n\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\tCapacity: \u0026pubsub.LiteTopicPartitionConfigCapacityArgs{\n\t\t\t\t\tPublishMibPerSec: pulumi.Int(4),\n\t\t\t\t\tSubscribeMibPerSec: pulumi.Int(8),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRetentionConfig: \u0026pubsub.LiteTopicRetentionConfigArgs{\n\t\t\t\tPerPartitionBytes: pulumi.String(\"32212254720\"),\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.NewLiteSubscription(ctx, \"example\", \u0026pubsub.LiteSubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.Name,\n\t\t\tDeliveryConfig: \u0026pubsub.LiteSubscriptionDeliveryConfigArgs{\n\t\t\t\tDeliveryRequirement: pulumi.String(\"DELIVER_AFTER_STORED\"),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.pubsub.LiteTopic;\nimport com.pulumi.gcp.pubsub.LiteTopicArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicPartitionConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicPartitionConfigCapacityArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicRetentionConfigArgs;\nimport com.pulumi.gcp.pubsub.LiteSubscription;\nimport com.pulumi.gcp.pubsub.LiteSubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteSubscriptionDeliveryConfigArgs;\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 example = new LiteTopic(\"example\", LiteTopicArgs.builder()\n .name(\"example-topic\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .partitionConfig(LiteTopicPartitionConfigArgs.builder()\n .count(1)\n .capacity(LiteTopicPartitionConfigCapacityArgs.builder()\n .publishMibPerSec(4)\n .subscribeMibPerSec(8)\n .build())\n .build())\n .retentionConfig(LiteTopicRetentionConfigArgs.builder()\n .perPartitionBytes(32212254720)\n .build())\n .build());\n\n var exampleLiteSubscription = new LiteSubscription(\"exampleLiteSubscription\", LiteSubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.name())\n .deliveryConfig(LiteSubscriptionDeliveryConfigArgs.builder()\n .deliveryRequirement(\"DELIVER_AFTER_STORED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:LiteTopic\n properties:\n name: example-topic\n project: ${project.number}\n partitionConfig:\n count: 1\n capacity:\n publishMibPerSec: 4\n subscribeMibPerSec: 8\n retentionConfig:\n perPartitionBytes: 3.221225472e+10\n exampleLiteSubscription:\n type: gcp:pubsub:LiteSubscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.name}\n deliveryConfig:\n deliveryRequirement: DELIVER_AFTER_STORED\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubscription can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{zone}}/subscriptions/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Subscription can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:pubsub/liteSubscription:LiteSubscription default projects/{{project}}/locations/{{zone}}/subscriptions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteSubscription:LiteSubscription default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteSubscription:LiteSubscription default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteSubscription:LiteSubscription default {{name}}\n```\n\n", "properties": { "deliveryConfig": { "$ref": "#/types/gcp:pubsub/LiteSubscriptionDeliveryConfig:LiteSubscriptionDeliveryConfig", @@ -228138,7 +228138,7 @@ } }, "gcp:pubsub/liteTopic:LiteTopic": { - "description": "A named resource to which messages are sent by publishers.\n\n\nTo get more information about Topic, see:\n\n* [API documentation](https://cloud.google.com/pubsub/lite/docs/reference/rest/v1/admin.projects.locations.topics)\n* How-to Guides\n * [Managing Topics](https://cloud.google.com/pubsub/lite/docs/topics)\n\n## Example Usage\n\n### Pubsub Lite Topic Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.pubsub.LiteReservation(\"example\", {\n name: \"example-reservation\",\n project: project.then(project =\u003e project.number),\n throughputCapacity: 2,\n});\nconst exampleLiteTopic = new gcp.pubsub.LiteTopic(\"example\", {\n name: \"example-topic\",\n project: project.then(project =\u003e project.number),\n partitionConfig: {\n count: 1,\n capacity: {\n publishMibPerSec: 4,\n subscribeMibPerSec: 8,\n },\n },\n retentionConfig: {\n perPartitionBytes: \"32212254720\",\n },\n reservationConfig: {\n throughputReservation: example.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.pubsub.LiteReservation(\"example\",\n name=\"example-reservation\",\n project=project.number,\n throughput_capacity=2)\nexample_lite_topic = gcp.pubsub.LiteTopic(\"example\",\n name=\"example-topic\",\n project=project.number,\n partition_config={\n \"count\": 1,\n \"capacity\": {\n \"publishMibPerSec\": 4,\n \"subscribeMibPerSec\": 8,\n },\n },\n retention_config={\n \"perPartitionBytes\": \"32212254720\",\n },\n reservation_config={\n \"throughputReservation\": example.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 project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.PubSub.LiteReservation(\"example\", new()\n {\n Name = \"example-reservation\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n ThroughputCapacity = 2,\n });\n\n var exampleLiteTopic = new Gcp.PubSub.LiteTopic(\"example\", new()\n {\n Name = \"example-topic\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n PartitionConfig = new Gcp.PubSub.Inputs.LiteTopicPartitionConfigArgs\n {\n Count = 1,\n Capacity = new Gcp.PubSub.Inputs.LiteTopicPartitionConfigCapacityArgs\n {\n PublishMibPerSec = 4,\n SubscribeMibPerSec = 8,\n },\n },\n RetentionConfig = new Gcp.PubSub.Inputs.LiteTopicRetentionConfigArgs\n {\n PerPartitionBytes = \"32212254720\",\n },\n ReservationConfig = new Gcp.PubSub.Inputs.LiteTopicReservationConfigArgs\n {\n ThroughputReservation = example.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := pubsub.NewLiteReservation(ctx, \"example\", \u0026pubsub.LiteReservationArgs{\n\t\t\tName: pulumi.String(\"example-reservation\"),\n\t\t\tProject: pulumi.String(project.Number),\n\t\t\tThroughputCapacity: pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewLiteTopic(ctx, \"example\", \u0026pubsub.LiteTopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t\tProject: pulumi.String(project.Number),\n\t\t\tPartitionConfig: \u0026pubsub.LiteTopicPartitionConfigArgs{\n\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\tCapacity: \u0026pubsub.LiteTopicPartitionConfigCapacityArgs{\n\t\t\t\t\tPublishMibPerSec: pulumi.Int(4),\n\t\t\t\t\tSubscribeMibPerSec: pulumi.Int(8),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRetentionConfig: \u0026pubsub.LiteTopicRetentionConfigArgs{\n\t\t\t\tPerPartitionBytes: pulumi.String(\"32212254720\"),\n\t\t\t},\n\t\t\tReservationConfig: \u0026pubsub.LiteTopicReservationConfigArgs{\n\t\t\t\tThroughputReservation: example.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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.pubsub.LiteReservation;\nimport com.pulumi.gcp.pubsub.LiteReservationArgs;\nimport com.pulumi.gcp.pubsub.LiteTopic;\nimport com.pulumi.gcp.pubsub.LiteTopicArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicPartitionConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicPartitionConfigCapacityArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicRetentionConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicReservationConfigArgs;\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 example = new LiteReservation(\"example\", LiteReservationArgs.builder()\n .name(\"example-reservation\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .throughputCapacity(2)\n .build());\n\n var exampleLiteTopic = new LiteTopic(\"exampleLiteTopic\", LiteTopicArgs.builder()\n .name(\"example-topic\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .partitionConfig(LiteTopicPartitionConfigArgs.builder()\n .count(1)\n .capacity(LiteTopicPartitionConfigCapacityArgs.builder()\n .publishMibPerSec(4)\n .subscribeMibPerSec(8)\n .build())\n .build())\n .retentionConfig(LiteTopicRetentionConfigArgs.builder()\n .perPartitionBytes(32212254720)\n .build())\n .reservationConfig(LiteTopicReservationConfigArgs.builder()\n .throughputReservation(example.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:LiteReservation\n properties:\n name: example-reservation\n project: ${project.number}\n throughputCapacity: 2\n exampleLiteTopic:\n type: gcp:pubsub:LiteTopic\n name: example\n properties:\n name: example-topic\n project: ${project.number}\n partitionConfig:\n count: 1\n capacity:\n publishMibPerSec: 4\n subscribeMibPerSec: 8\n retentionConfig:\n perPartitionBytes: 3.221225472e+10\n reservationConfig:\n throughputReservation: ${example.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTopic can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{zone}}/topics/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Topic can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:pubsub/liteTopic:LiteTopic default projects/{{project}}/locations/{{zone}}/topics/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteTopic:LiteTopic default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteTopic:LiteTopic default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteTopic:LiteTopic default {{name}}\n```\n\n", + "description": "A named resource to which messages are sent by publishers.\n\n\nTo get more information about Topic, see:\n\n* [API documentation](https://cloud.google.com/pubsub/lite/docs/reference/rest/v1/admin.projects.locations.topics)\n* How-to Guides\n * [Managing Topics](https://cloud.google.com/pubsub/lite/docs/topics)\n\n## Example Usage\n\n### Pubsub Lite Topic Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.pubsub.LiteReservation(\"example\", {\n name: \"example-reservation\",\n project: project.then(project =\u003e project.number),\n throughputCapacity: 2,\n});\nconst exampleLiteTopic = new gcp.pubsub.LiteTopic(\"example\", {\n name: \"example-topic\",\n project: project.then(project =\u003e project.number),\n partitionConfig: {\n count: 1,\n capacity: {\n publishMibPerSec: 4,\n subscribeMibPerSec: 8,\n },\n },\n retentionConfig: {\n perPartitionBytes: \"32212254720\",\n },\n reservationConfig: {\n throughputReservation: example.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.pubsub.LiteReservation(\"example\",\n name=\"example-reservation\",\n project=project.number,\n throughput_capacity=2)\nexample_lite_topic = gcp.pubsub.LiteTopic(\"example\",\n name=\"example-topic\",\n project=project.number,\n partition_config={\n \"count\": 1,\n \"capacity\": {\n \"publish_mib_per_sec\": 4,\n \"subscribe_mib_per_sec\": 8,\n },\n },\n retention_config={\n \"per_partition_bytes\": \"32212254720\",\n },\n reservation_config={\n \"throughput_reservation\": example.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 project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.PubSub.LiteReservation(\"example\", new()\n {\n Name = \"example-reservation\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n ThroughputCapacity = 2,\n });\n\n var exampleLiteTopic = new Gcp.PubSub.LiteTopic(\"example\", new()\n {\n Name = \"example-topic\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n PartitionConfig = new Gcp.PubSub.Inputs.LiteTopicPartitionConfigArgs\n {\n Count = 1,\n Capacity = new Gcp.PubSub.Inputs.LiteTopicPartitionConfigCapacityArgs\n {\n PublishMibPerSec = 4,\n SubscribeMibPerSec = 8,\n },\n },\n RetentionConfig = new Gcp.PubSub.Inputs.LiteTopicRetentionConfigArgs\n {\n PerPartitionBytes = \"32212254720\",\n },\n ReservationConfig = new Gcp.PubSub.Inputs.LiteTopicReservationConfigArgs\n {\n ThroughputReservation = example.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := pubsub.NewLiteReservation(ctx, \"example\", \u0026pubsub.LiteReservationArgs{\n\t\t\tName: pulumi.String(\"example-reservation\"),\n\t\t\tProject: pulumi.String(project.Number),\n\t\t\tThroughputCapacity: pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewLiteTopic(ctx, \"example\", \u0026pubsub.LiteTopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t\tProject: pulumi.String(project.Number),\n\t\t\tPartitionConfig: \u0026pubsub.LiteTopicPartitionConfigArgs{\n\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\tCapacity: \u0026pubsub.LiteTopicPartitionConfigCapacityArgs{\n\t\t\t\t\tPublishMibPerSec: pulumi.Int(4),\n\t\t\t\t\tSubscribeMibPerSec: pulumi.Int(8),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRetentionConfig: \u0026pubsub.LiteTopicRetentionConfigArgs{\n\t\t\t\tPerPartitionBytes: pulumi.String(\"32212254720\"),\n\t\t\t},\n\t\t\tReservationConfig: \u0026pubsub.LiteTopicReservationConfigArgs{\n\t\t\t\tThroughputReservation: example.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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.pubsub.LiteReservation;\nimport com.pulumi.gcp.pubsub.LiteReservationArgs;\nimport com.pulumi.gcp.pubsub.LiteTopic;\nimport com.pulumi.gcp.pubsub.LiteTopicArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicPartitionConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicPartitionConfigCapacityArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicRetentionConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicReservationConfigArgs;\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 example = new LiteReservation(\"example\", LiteReservationArgs.builder()\n .name(\"example-reservation\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .throughputCapacity(2)\n .build());\n\n var exampleLiteTopic = new LiteTopic(\"exampleLiteTopic\", LiteTopicArgs.builder()\n .name(\"example-topic\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .partitionConfig(LiteTopicPartitionConfigArgs.builder()\n .count(1)\n .capacity(LiteTopicPartitionConfigCapacityArgs.builder()\n .publishMibPerSec(4)\n .subscribeMibPerSec(8)\n .build())\n .build())\n .retentionConfig(LiteTopicRetentionConfigArgs.builder()\n .perPartitionBytes(32212254720)\n .build())\n .reservationConfig(LiteTopicReservationConfigArgs.builder()\n .throughputReservation(example.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:LiteReservation\n properties:\n name: example-reservation\n project: ${project.number}\n throughputCapacity: 2\n exampleLiteTopic:\n type: gcp:pubsub:LiteTopic\n name: example\n properties:\n name: example-topic\n project: ${project.number}\n partitionConfig:\n count: 1\n capacity:\n publishMibPerSec: 4\n subscribeMibPerSec: 8\n retentionConfig:\n perPartitionBytes: 3.221225472e+10\n reservationConfig:\n throughputReservation: ${example.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTopic can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{zone}}/topics/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Topic can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:pubsub/liteTopic:LiteTopic default projects/{{project}}/locations/{{zone}}/topics/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteTopic:LiteTopic default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteTopic:LiteTopic default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteTopic:LiteTopic default {{name}}\n```\n\n", "properties": { "name": { "type": "string", @@ -228590,7 +228590,7 @@ } }, "gcp:pubsub/subscription:Subscription": { - "description": "A named resource representing the stream of messages from a single,\nspecific topic, to be delivered to the subscribing application.\n\n\nTo get more information about Subscription, see:\n\n* [API documentation](https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions)\n* How-to Guides\n * [Managing Subscriptions](https://cloud.google.com/pubsub/docs/admin#managing_subscriptions)\n\n\u003e **Note:** You can retrieve the email of the Google Managed Pub/Sub Service Account used for forwarding\nby using the `gcp.projects.ServiceIdentity` resource.\n\n## Example Usage\n\n### Pubsub Subscription Push\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n ackDeadlineSeconds: 20,\n labels: {\n foo: \"bar\",\n },\n pushConfig: {\n pushEndpoint: \"https://example.com/push\",\n attributes: {\n \"x-goog-version\": \"v1\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n ack_deadline_seconds=20,\n labels={\n \"foo\": \"bar\",\n },\n push_config={\n \"pushEndpoint\": \"https://example.com/push\",\n \"attributes\": {\n \"x-goog-version\": \"v1\",\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 example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n AckDeadlineSeconds = 20,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n PushConfig = new Gcp.PubSub.Inputs.SubscriptionPushConfigArgs\n {\n PushEndpoint = \"https://example.com/push\",\n Attributes = \n {\n { \"x-goog-version\", \"v1\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tAckDeadlineSeconds: pulumi.Int(20),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPushConfig: \u0026pubsub.SubscriptionPushConfigArgs{\n\t\t\t\tPushEndpoint: pulumi.String(\"https://example.com/push\"),\n\t\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\t\"x-goog-version\": pulumi.String(\"v1\"),\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionPushConfigArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .ackDeadlineSeconds(20)\n .labels(Map.of(\"foo\", \"bar\"))\n .pushConfig(SubscriptionPushConfigArgs.builder()\n .pushEndpoint(\"https://example.com/push\")\n .attributes(Map.of(\"x-goog-version\", \"v1\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n ackDeadlineSeconds: 20\n labels:\n foo: bar\n pushConfig:\n pushEndpoint: https://example.com/push\n attributes:\n x-goog-version: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Pull\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n labels: {\n foo: \"bar\",\n },\n messageRetentionDuration: \"1200s\",\n retainAckedMessages: true,\n ackDeadlineSeconds: 20,\n expirationPolicy: {\n ttl: \"300000.5s\",\n },\n retryPolicy: {\n minimumBackoff: \"10s\",\n },\n enableMessageOrdering: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n labels={\n \"foo\": \"bar\",\n },\n message_retention_duration=\"1200s\",\n retain_acked_messages=True,\n ack_deadline_seconds=20,\n expiration_policy={\n \"ttl\": \"300000.5s\",\n },\n retry_policy={\n \"minimumBackoff\": \"10s\",\n },\n enable_message_ordering=False)\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.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n MessageRetentionDuration = \"1200s\",\n RetainAckedMessages = true,\n AckDeadlineSeconds = 20,\n ExpirationPolicy = new Gcp.PubSub.Inputs.SubscriptionExpirationPolicyArgs\n {\n Ttl = \"300000.5s\",\n },\n RetryPolicy = new Gcp.PubSub.Inputs.SubscriptionRetryPolicyArgs\n {\n MinimumBackoff = \"10s\",\n },\n EnableMessageOrdering = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMessageRetentionDuration: pulumi.String(\"1200s\"),\n\t\t\tRetainAckedMessages: pulumi.Bool(true),\n\t\t\tAckDeadlineSeconds: pulumi.Int(20),\n\t\t\tExpirationPolicy: \u0026pubsub.SubscriptionExpirationPolicyArgs{\n\t\t\t\tTtl: pulumi.String(\"300000.5s\"),\n\t\t\t},\n\t\t\tRetryPolicy: \u0026pubsub.SubscriptionRetryPolicyArgs{\n\t\t\t\tMinimumBackoff: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t\tEnableMessageOrdering: pulumi.Bool(false),\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.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionExpirationPolicyArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionRetryPolicyArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .labels(Map.of(\"foo\", \"bar\"))\n .messageRetentionDuration(\"1200s\")\n .retainAckedMessages(true)\n .ackDeadlineSeconds(20)\n .expirationPolicy(SubscriptionExpirationPolicyArgs.builder()\n .ttl(\"300000.5s\")\n .build())\n .retryPolicy(SubscriptionRetryPolicyArgs.builder()\n .minimumBackoff(\"10s\")\n .build())\n .enableMessageOrdering(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n labels:\n foo: bar\n messageRetentionDuration: 1200s\n retainAckedMessages: true\n ackDeadlineSeconds: 20\n expirationPolicy:\n ttl: 300000.5s\n retryPolicy:\n minimumBackoff: 10s\n enableMessageOrdering: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Dead Letter\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleDeadLetter = new gcp.pubsub.Topic(\"example_dead_letter\", {name: \"example-topic-dead-letter\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n deadLetterPolicy: {\n deadLetterTopic: exampleDeadLetter.id,\n maxDeliveryAttempts: 10,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_dead_letter = gcp.pubsub.Topic(\"example_dead_letter\", name=\"example-topic-dead-letter\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n dead_letter_policy={\n \"deadLetterTopic\": example_dead_letter.id,\n \"maxDeliveryAttempts\": 10,\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 = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleDeadLetter = new Gcp.PubSub.Topic(\"example_dead_letter\", new()\n {\n Name = \"example-topic-dead-letter\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n DeadLetterPolicy = new Gcp.PubSub.Inputs.SubscriptionDeadLetterPolicyArgs\n {\n DeadLetterTopic = exampleDeadLetter.Id,\n MaxDeliveryAttempts = 10,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDeadLetter, err := pubsub.NewTopic(ctx, \"example_dead_letter\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic-dead-letter\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tDeadLetterPolicy: \u0026pubsub.SubscriptionDeadLetterPolicyArgs{\n\t\t\t\tDeadLetterTopic: exampleDeadLetter.ID(),\n\t\t\t\tMaxDeliveryAttempts: pulumi.Int(10),\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.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionDeadLetterPolicyArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleDeadLetter = new Topic(\"exampleDeadLetter\", TopicArgs.builder()\n .name(\"example-topic-dead-letter\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .deadLetterPolicy(SubscriptionDeadLetterPolicyArgs.builder()\n .deadLetterTopic(exampleDeadLetter.id())\n .maxDeliveryAttempts(10)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleDeadLetter:\n type: gcp:pubsub:Topic\n name: example_dead_letter\n properties:\n name: example-topic-dead-letter\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n deadLetterPolicy:\n deadLetterTopic: ${exampleDeadLetter.id}\n maxDeliveryAttempts: 10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Bq\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst viewer = new gcp.projects.IAMMember(\"viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst editor = new gcp.projects.IAMMember(\"editor\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.dataEditor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"example_table\",\n datasetId: test.datasetId,\n schema: `[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n bigqueryConfig: {\n table: pulumi.interpolate`${testTable.project}.${testTable.datasetId}.${testTable.tableId}`,\n },\n}, {\n dependsOn: [\n viewer,\n editor,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nviewer = gcp.projects.IAMMember(\"viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\neditor = gcp.projects.IAMMember(\"editor\",\n project=project.project_id,\n role=\"roles/bigquery.dataEditor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"example_table\",\n dataset_id=test.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n\"\"\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(test_table.project, test_table.dataset_id, test_table.table_id).apply(lambda project, dataset_id, table_id: f\"{project}.{dataset_id}.{table_id}\"),\n },\n opts = pulumi.ResourceOptions(depends_on=[\n viewer,\n editor,\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 = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var viewer = new Gcp.Projects.IAMMember(\"viewer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.metadataViewer\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var editor = new Gcp.Projects.IAMMember(\"editor\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.dataEditor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"example_table\",\n DatasetId = test.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"data\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The data\"\"\n }\n]\n\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n BigqueryConfig = new Gcp.PubSub.Inputs.SubscriptionBigqueryConfigArgs\n {\n Table = Output.Tuple(testTable.Project, testTable.DatasetId, testTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"{project}.{datasetId}.{tableId}\";\n }),\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n viewer,\n editor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\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\tviewer, err := projects.NewIAMMember(ctx, \"viewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.metadataViewer\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teditor, err := projects.NewIAMMember(ctx, \"editor\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataEditor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tBigqueryConfig: \u0026pubsub.SubscriptionBigqueryConfigArgs{\n\t\t\t\tTable: pulumi.All(testTable.Project, testTable.DatasetId, testTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tviewer,\n\t\t\teditor,\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.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionBigqueryConfigArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var viewer = new IAMMember(\"viewer\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.metadataViewer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var editor = new IAMMember(\"editor\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.dataEditor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"example_table\")\n .datasetId(test.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n \"\"\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .bigqueryConfig(SubscriptionBigqueryConfigArgs.builder()\n .table(Output.tuple(testTable.project(), testTable.datasetId(), testTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"%s.%s.%s\", project.applyValue(getProjectResult -\u003e getProjectResult),datasetId,tableId);\n }))\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n viewer,\n editor)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n bigqueryConfig:\n table: ${testTable.project}.${testTable.datasetId}.${testTable.tableId}\n options:\n dependson:\n - ${viewer}\n - ${editor}\n viewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n editor:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.dataEditor\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: example_table\n datasetId: ${test.datasetId}\n schema: |\n [\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n ]\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Bq Table Schema\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst viewer = new gcp.projects.IAMMember(\"viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst editor = new gcp.projects.IAMMember(\"editor\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.dataEditor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"example_table\",\n datasetId: test.datasetId,\n schema: `[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n bigqueryConfig: {\n table: pulumi.interpolate`${testTable.project}.${testTable.datasetId}.${testTable.tableId}`,\n useTableSchema: true,\n },\n}, {\n dependsOn: [\n viewer,\n editor,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nviewer = gcp.projects.IAMMember(\"viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\neditor = gcp.projects.IAMMember(\"editor\",\n project=project.project_id,\n role=\"roles/bigquery.dataEditor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"example_table\",\n dataset_id=test.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n\"\"\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(test_table.project, test_table.dataset_id, test_table.table_id).apply(lambda project, dataset_id, table_id: f\"{project}.{dataset_id}.{table_id}\"),\n \"useTableSchema\": True,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n viewer,\n editor,\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 = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var viewer = new Gcp.Projects.IAMMember(\"viewer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.metadataViewer\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var editor = new Gcp.Projects.IAMMember(\"editor\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.dataEditor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"example_table\",\n DatasetId = test.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"data\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The data\"\"\n }\n]\n\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n BigqueryConfig = new Gcp.PubSub.Inputs.SubscriptionBigqueryConfigArgs\n {\n Table = Output.Tuple(testTable.Project, testTable.DatasetId, testTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"{project}.{datasetId}.{tableId}\";\n }),\n UseTableSchema = true,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n viewer,\n editor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\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\tviewer, err := projects.NewIAMMember(ctx, \"viewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.metadataViewer\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teditor, err := projects.NewIAMMember(ctx, \"editor\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataEditor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tBigqueryConfig: \u0026pubsub.SubscriptionBigqueryConfigArgs{\n\t\t\t\tTable: pulumi.All(testTable.Project, testTable.DatasetId, testTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tUseTableSchema: pulumi.Bool(true),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tviewer,\n\t\t\teditor,\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.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionBigqueryConfigArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var viewer = new IAMMember(\"viewer\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.metadataViewer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var editor = new IAMMember(\"editor\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.dataEditor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"example_table\")\n .datasetId(test.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n \"\"\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .bigqueryConfig(SubscriptionBigqueryConfigArgs.builder()\n .table(Output.tuple(testTable.project(), testTable.datasetId(), testTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"%s.%s.%s\", project.applyValue(getProjectResult -\u003e getProjectResult),datasetId,tableId);\n }))\n .useTableSchema(true)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n viewer,\n editor)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n bigqueryConfig:\n table: ${testTable.project}.${testTable.datasetId}.${testTable.tableId}\n useTableSchema: true\n options:\n dependson:\n - ${viewer}\n - ${editor}\n viewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n editor:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.dataEditor\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: example_table\n datasetId: ${test.datasetId}\n schema: |\n [\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n ]\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Bq Service Account\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst bqWriteServiceAccount = new gcp.serviceaccount.Account(\"bq_write_service_account\", {\n accountId: \"example-bqw\",\n displayName: \"BQ Write Service Account\",\n});\nconst project = gcp.organizations.getProject({});\nconst viewer = new gcp.projects.IAMMember(\"viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: pulumi.interpolate`serviceAccount:${bqWriteServiceAccount.email}`,\n});\nconst editor = new gcp.projects.IAMMember(\"editor\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.dataEditor\",\n member: pulumi.interpolate`serviceAccount:${bqWriteServiceAccount.email}`,\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"example_table\",\n datasetId: test.datasetId,\n schema: `[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n bigqueryConfig: {\n table: pulumi.interpolate`${testTable.project}.${testTable.datasetId}.${testTable.tableId}`,\n serviceAccountEmail: bqWriteServiceAccount.email,\n },\n}, {\n dependsOn: [\n bqWriteServiceAccount,\n viewer,\n editor,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nbq_write_service_account = gcp.serviceaccount.Account(\"bq_write_service_account\",\n account_id=\"example-bqw\",\n display_name=\"BQ Write Service Account\")\nproject = gcp.organizations.get_project()\nviewer = gcp.projects.IAMMember(\"viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=bq_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\neditor = gcp.projects.IAMMember(\"editor\",\n project=project.project_id,\n role=\"roles/bigquery.dataEditor\",\n member=bq_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"example_table\",\n dataset_id=test.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n\"\"\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(test_table.project, test_table.dataset_id, test_table.table_id).apply(lambda project, dataset_id, table_id: f\"{project}.{dataset_id}.{table_id}\"),\n \"serviceAccountEmail\": bq_write_service_account.email,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n bq_write_service_account,\n viewer,\n editor,\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 = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var bqWriteServiceAccount = new Gcp.ServiceAccount.Account(\"bq_write_service_account\", new()\n {\n AccountId = \"example-bqw\",\n DisplayName = \"BQ Write Service Account\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var viewer = new Gcp.Projects.IAMMember(\"viewer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.metadataViewer\",\n Member = bqWriteServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var editor = new Gcp.Projects.IAMMember(\"editor\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.dataEditor\",\n Member = bqWriteServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"example_table\",\n DatasetId = test.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"data\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The data\"\"\n }\n]\n\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n BigqueryConfig = new Gcp.PubSub.Inputs.SubscriptionBigqueryConfigArgs\n {\n Table = Output.Tuple(testTable.Project, testTable.DatasetId, testTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"{project}.{datasetId}.{tableId}\";\n }),\n ServiceAccountEmail = bqWriteServiceAccount.Email,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n bqWriteServiceAccount,\n viewer,\n editor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqWriteServiceAccount, err := serviceaccount.NewAccount(ctx, \"bq_write_service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"example-bqw\"),\n\t\t\tDisplayName: pulumi.String(\"BQ Write Service Account\"),\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\tviewer, err := projects.NewIAMMember(ctx, \"viewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.metadataViewer\"),\n\t\t\tMember: bqWriteServiceAccount.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\teditor, err := projects.NewIAMMember(ctx, \"editor\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataEditor\"),\n\t\t\tMember: bqWriteServiceAccount.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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tBigqueryConfig: \u0026pubsub.SubscriptionBigqueryConfigArgs{\n\t\t\t\tTable: pulumi.All(testTable.Project, testTable.DatasetId, testTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tServiceAccountEmail: bqWriteServiceAccount.Email,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbqWriteServiceAccount,\n\t\t\tviewer,\n\t\t\teditor,\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.pubsub.TopicArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionBigqueryConfigArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var bqWriteServiceAccount = new Account(\"bqWriteServiceAccount\", AccountArgs.builder()\n .accountId(\"example-bqw\")\n .displayName(\"BQ Write Service Account\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var viewer = new IAMMember(\"viewer\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.metadataViewer\")\n .member(bqWriteServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var editor = new IAMMember(\"editor\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.dataEditor\")\n .member(bqWriteServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"example_table\")\n .datasetId(test.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n \"\"\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .bigqueryConfig(SubscriptionBigqueryConfigArgs.builder()\n .table(Output.tuple(testTable.project(), testTable.datasetId(), testTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"%s.%s.%s\", project.applyValue(getProjectResult -\u003e getProjectResult),datasetId,tableId);\n }))\n .serviceAccountEmail(bqWriteServiceAccount.email())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n bqWriteServiceAccount,\n viewer,\n editor)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n bigqueryConfig:\n table: ${testTable.project}.${testTable.datasetId}.${testTable.tableId}\n serviceAccountEmail: ${bqWriteServiceAccount.email}\n options:\n dependson:\n - ${bqWriteServiceAccount}\n - ${viewer}\n - ${editor}\n bqWriteServiceAccount:\n type: gcp:serviceaccount:Account\n name: bq_write_service_account\n properties:\n accountId: example-bqw\n displayName: BQ Write Service Account\n viewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:${bqWriteServiceAccount.email}\n editor:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.dataEditor\n member: serviceAccount:${bqWriteServiceAccount.email}\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: example_table\n datasetId: ${test.datasetId}\n schema: |\n [\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n ]\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Cloudstorage\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.storage.Bucket(\"example\", {\n name: \"example-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: example.name,\n role: \"roles/storage.admin\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: exampleTopic.id,\n cloudStorageConfig: {\n bucket: example.name,\n filenamePrefix: \"pre-\",\n filenameSuffix: \"-_79169\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n },\n}, {\n dependsOn: [\n example,\n admin,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.storage.Bucket(\"example\",\n name=\"example-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nexample_topic = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=example.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example_topic.id,\n cloud_storage_config={\n \"bucket\": example.name,\n \"filenamePrefix\": \"pre-\",\n \"filenameSuffix\": \"-_79169\",\n \"filenameDatetimeFormat\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"maxBytes\": 1000,\n \"maxDuration\": \"300s\",\n },\n opts = pulumi.ResourceOptions(depends_on=[\n example,\n admin,\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 = new Gcp.Storage.Bucket(\"example\", new()\n {\n Name = \"example-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = example.Name,\n Role = \"roles/storage.admin\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = exampleTopic.Id,\n CloudStorageConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigArgs\n {\n Bucket = example.Name,\n FilenamePrefix = \"pre-\",\n FilenameSuffix = \"-_79169\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n admin,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := storage.NewBucket(ctx, \"example\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"example-bucket\"),\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\texampleTopic, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\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\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: exampleTopic.ID(),\n\t\t\tCloudStorageConfig: \u0026pubsub.SubscriptionCloudStorageConfigArgs{\n\t\t\t\tBucket: example.Name,\n\t\t\t\tFilenamePrefix: pulumi.String(\"pre-\"),\n\t\t\t\tFilenameSuffix: pulumi.String(\"-_79169\"),\n\t\t\t\tFilenameDatetimeFormat: pulumi.String(\"YYYY-MM-DD/hh_mm_ssZ\"),\n\t\t\t\tMaxBytes: pulumi.Int(1000),\n\t\t\t\tMaxDuration: pulumi.String(\"300s\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\tadmin,\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigArgs;\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 Bucket(\"example\", BucketArgs.builder()\n .name(\"example-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(example.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(exampleTopic.id())\n .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()\n .bucket(example.name())\n .filenamePrefix(\"pre-\")\n .filenameSuffix(\"-_79169\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n example,\n admin)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:storage:Bucket\n properties:\n name: example-bucket\n location: US\n uniformBucketLevelAccess: true\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${exampleTopic.id}\n cloudStorageConfig:\n bucket: ${example.name}\n filenamePrefix: pre-\n filenameSuffix: -_79169\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n options:\n dependson:\n - ${example}\n - ${admin}\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${example.name}\n role: roles/storage.admin\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Cloudstorage Avro\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.storage.Bucket(\"example\", {\n name: \"example-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: example.name,\n role: \"roles/storage.admin\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: exampleTopic.id,\n cloudStorageConfig: {\n bucket: example.name,\n filenamePrefix: \"pre-\",\n filenameSuffix: \"-_56529\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n avroConfig: {\n writeMetadata: true,\n },\n },\n}, {\n dependsOn: [\n example,\n admin,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.storage.Bucket(\"example\",\n name=\"example-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nexample_topic = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=example.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example_topic.id,\n cloud_storage_config={\n \"bucket\": example.name,\n \"filenamePrefix\": \"pre-\",\n \"filenameSuffix\": \"-_56529\",\n \"filenameDatetimeFormat\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"maxBytes\": 1000,\n \"maxDuration\": \"300s\",\n \"avroConfig\": {\n \"writeMetadata\": True,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[\n example,\n admin,\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 = new Gcp.Storage.Bucket(\"example\", new()\n {\n Name = \"example-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = example.Name,\n Role = \"roles/storage.admin\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = exampleTopic.Id,\n CloudStorageConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigArgs\n {\n Bucket = example.Name,\n FilenamePrefix = \"pre-\",\n FilenameSuffix = \"-_56529\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n AvroConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigAvroConfigArgs\n {\n WriteMetadata = true,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n admin,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := storage.NewBucket(ctx, \"example\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"example-bucket\"),\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\texampleTopic, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\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\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: exampleTopic.ID(),\n\t\t\tCloudStorageConfig: \u0026pubsub.SubscriptionCloudStorageConfigArgs{\n\t\t\t\tBucket: example.Name,\n\t\t\t\tFilenamePrefix: pulumi.String(\"pre-\"),\n\t\t\t\tFilenameSuffix: pulumi.String(\"-_56529\"),\n\t\t\t\tFilenameDatetimeFormat: pulumi.String(\"YYYY-MM-DD/hh_mm_ssZ\"),\n\t\t\t\tMaxBytes: pulumi.Int(1000),\n\t\t\t\tMaxDuration: pulumi.String(\"300s\"),\n\t\t\t\tAvroConfig: \u0026pubsub.SubscriptionCloudStorageConfigAvroConfigArgs{\n\t\t\t\t\tWriteMetadata: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\tadmin,\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigAvroConfigArgs;\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 Bucket(\"example\", BucketArgs.builder()\n .name(\"example-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(example.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(exampleTopic.id())\n .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()\n .bucket(example.name())\n .filenamePrefix(\"pre-\")\n .filenameSuffix(\"-_56529\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .avroConfig(SubscriptionCloudStorageConfigAvroConfigArgs.builder()\n .writeMetadata(true)\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n example,\n admin)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:storage:Bucket\n properties:\n name: example-bucket\n location: US\n uniformBucketLevelAccess: true\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${exampleTopic.id}\n cloudStorageConfig:\n bucket: ${example.name}\n filenamePrefix: pre-\n filenameSuffix: -_56529\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n avroConfig:\n writeMetadata: true\n options:\n dependson:\n - ${example}\n - ${admin}\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${example.name}\n role: roles/storage.admin\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Cloudstorage Service Account\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.storage.Bucket(\"example\", {\n name: \"example-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst storageWriteServiceAccount = new gcp.serviceaccount.Account(\"storage_write_service_account\", {\n accountId: \"example-stw\",\n displayName: \"Storage Write Service Account\",\n});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: example.name,\n role: \"roles/storage.admin\",\n member: pulumi.interpolate`serviceAccount:${storageWriteServiceAccount.email}`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: exampleTopic.id,\n cloudStorageConfig: {\n bucket: example.name,\n filenamePrefix: \"pre-\",\n filenameSuffix: \"-_75413\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n serviceAccountEmail: storageWriteServiceAccount.email,\n },\n}, {\n dependsOn: [\n storageWriteServiceAccount,\n example,\n admin,\n ],\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.storage.Bucket(\"example\",\n name=\"example-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nexample_topic = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nstorage_write_service_account = gcp.serviceaccount.Account(\"storage_write_service_account\",\n account_id=\"example-stw\",\n display_name=\"Storage Write Service Account\")\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=example.name,\n role=\"roles/storage.admin\",\n member=storage_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example_topic.id,\n cloud_storage_config={\n \"bucket\": example.name,\n \"filenamePrefix\": \"pre-\",\n \"filenameSuffix\": \"-_75413\",\n \"filenameDatetimeFormat\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"maxBytes\": 1000,\n \"maxDuration\": \"300s\",\n \"serviceAccountEmail\": storage_write_service_account.email,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n storage_write_service_account,\n example,\n admin,\n ]))\nproject = gcp.organizations.get_project()\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.Storage.Bucket(\"example\", new()\n {\n Name = \"example-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var storageWriteServiceAccount = new Gcp.ServiceAccount.Account(\"storage_write_service_account\", new()\n {\n AccountId = \"example-stw\",\n DisplayName = \"Storage Write Service Account\",\n });\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = example.Name,\n Role = \"roles/storage.admin\",\n Member = storageWriteServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = exampleTopic.Id,\n CloudStorageConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigArgs\n {\n Bucket = example.Name,\n FilenamePrefix = \"pre-\",\n FilenameSuffix = \"-_75413\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n ServiceAccountEmail = storageWriteServiceAccount.Email,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n storageWriteServiceAccount,\n example,\n admin,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := storage.NewBucket(ctx, \"example\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"example-bucket\"),\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\texampleTopic, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstorageWriteServiceAccount, err := serviceaccount.NewAccount(ctx, \"storage_write_service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"example-stw\"),\n\t\t\tDisplayName: pulumi.String(\"Storage Write Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: storageWriteServiceAccount.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 = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: exampleTopic.ID(),\n\t\t\tCloudStorageConfig: \u0026pubsub.SubscriptionCloudStorageConfigArgs{\n\t\t\t\tBucket: example.Name,\n\t\t\t\tFilenamePrefix: pulumi.String(\"pre-\"),\n\t\t\t\tFilenameSuffix: pulumi.String(\"-_75413\"),\n\t\t\t\tFilenameDatetimeFormat: pulumi.String(\"YYYY-MM-DD/hh_mm_ssZ\"),\n\t\t\t\tMaxBytes: pulumi.Int(1000),\n\t\t\t\tMaxDuration: pulumi.String(\"300s\"),\n\t\t\t\tServiceAccountEmail: storageWriteServiceAccount.Email,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tstorageWriteServiceAccount,\n\t\t\texample,\n\t\t\tadmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 Bucket(\"example\", BucketArgs.builder()\n .name(\"example-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var storageWriteServiceAccount = new Account(\"storageWriteServiceAccount\", AccountArgs.builder()\n .accountId(\"example-stw\")\n .displayName(\"Storage Write Service Account\")\n .build());\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(example.name())\n .role(\"roles/storage.admin\")\n .member(storageWriteServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(exampleTopic.id())\n .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()\n .bucket(example.name())\n .filenamePrefix(\"pre-\")\n .filenameSuffix(\"-_75413\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .serviceAccountEmail(storageWriteServiceAccount.email())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n storageWriteServiceAccount,\n example,\n admin)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:storage:Bucket\n properties:\n name: example-bucket\n location: US\n uniformBucketLevelAccess: true\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${exampleTopic.id}\n cloudStorageConfig:\n bucket: ${example.name}\n filenamePrefix: pre-\n filenameSuffix: -_75413\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n serviceAccountEmail: ${storageWriteServiceAccount.email}\n options:\n dependson:\n - ${storageWriteServiceAccount}\n - ${example}\n - ${admin}\n storageWriteServiceAccount:\n type: gcp:serviceaccount:Account\n name: storage_write_service_account\n properties:\n accountId: example-stw\n displayName: Storage Write Service Account\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${example.name}\n role: roles/storage.admin\n member: serviceAccount:${storageWriteServiceAccount.email}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubscription can be imported using any of these accepted formats:\n\n* `projects/{{project}}/subscriptions/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Subscription can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:pubsub/subscription:Subscription default projects/{{project}}/subscriptions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/subscription:Subscription default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/subscription:Subscription default {{name}}\n```\n\n", + "description": "A named resource representing the stream of messages from a single,\nspecific topic, to be delivered to the subscribing application.\n\n\nTo get more information about Subscription, see:\n\n* [API documentation](https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions)\n* How-to Guides\n * [Managing Subscriptions](https://cloud.google.com/pubsub/docs/admin#managing_subscriptions)\n\n\u003e **Note:** You can retrieve the email of the Google Managed Pub/Sub Service Account used for forwarding\nby using the `gcp.projects.ServiceIdentity` resource.\n\n## Example Usage\n\n### Pubsub Subscription Push\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n ackDeadlineSeconds: 20,\n labels: {\n foo: \"bar\",\n },\n pushConfig: {\n pushEndpoint: \"https://example.com/push\",\n attributes: {\n \"x-goog-version\": \"v1\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n ack_deadline_seconds=20,\n labels={\n \"foo\": \"bar\",\n },\n push_config={\n \"push_endpoint\": \"https://example.com/push\",\n \"attributes\": {\n \"x_goog_version\": \"v1\",\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 example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n AckDeadlineSeconds = 20,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n PushConfig = new Gcp.PubSub.Inputs.SubscriptionPushConfigArgs\n {\n PushEndpoint = \"https://example.com/push\",\n Attributes = \n {\n { \"x-goog-version\", \"v1\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tAckDeadlineSeconds: pulumi.Int(20),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPushConfig: \u0026pubsub.SubscriptionPushConfigArgs{\n\t\t\t\tPushEndpoint: pulumi.String(\"https://example.com/push\"),\n\t\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\t\"x-goog-version\": pulumi.String(\"v1\"),\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionPushConfigArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .ackDeadlineSeconds(20)\n .labels(Map.of(\"foo\", \"bar\"))\n .pushConfig(SubscriptionPushConfigArgs.builder()\n .pushEndpoint(\"https://example.com/push\")\n .attributes(Map.of(\"x-goog-version\", \"v1\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n ackDeadlineSeconds: 20\n labels:\n foo: bar\n pushConfig:\n pushEndpoint: https://example.com/push\n attributes:\n x-goog-version: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Pull\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n labels: {\n foo: \"bar\",\n },\n messageRetentionDuration: \"1200s\",\n retainAckedMessages: true,\n ackDeadlineSeconds: 20,\n expirationPolicy: {\n ttl: \"300000.5s\",\n },\n retryPolicy: {\n minimumBackoff: \"10s\",\n },\n enableMessageOrdering: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n labels={\n \"foo\": \"bar\",\n },\n message_retention_duration=\"1200s\",\n retain_acked_messages=True,\n ack_deadline_seconds=20,\n expiration_policy={\n \"ttl\": \"300000.5s\",\n },\n retry_policy={\n \"minimum_backoff\": \"10s\",\n },\n enable_message_ordering=False)\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.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n MessageRetentionDuration = \"1200s\",\n RetainAckedMessages = true,\n AckDeadlineSeconds = 20,\n ExpirationPolicy = new Gcp.PubSub.Inputs.SubscriptionExpirationPolicyArgs\n {\n Ttl = \"300000.5s\",\n },\n RetryPolicy = new Gcp.PubSub.Inputs.SubscriptionRetryPolicyArgs\n {\n MinimumBackoff = \"10s\",\n },\n EnableMessageOrdering = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMessageRetentionDuration: pulumi.String(\"1200s\"),\n\t\t\tRetainAckedMessages: pulumi.Bool(true),\n\t\t\tAckDeadlineSeconds: pulumi.Int(20),\n\t\t\tExpirationPolicy: \u0026pubsub.SubscriptionExpirationPolicyArgs{\n\t\t\t\tTtl: pulumi.String(\"300000.5s\"),\n\t\t\t},\n\t\t\tRetryPolicy: \u0026pubsub.SubscriptionRetryPolicyArgs{\n\t\t\t\tMinimumBackoff: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t\tEnableMessageOrdering: pulumi.Bool(false),\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.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionExpirationPolicyArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionRetryPolicyArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .labels(Map.of(\"foo\", \"bar\"))\n .messageRetentionDuration(\"1200s\")\n .retainAckedMessages(true)\n .ackDeadlineSeconds(20)\n .expirationPolicy(SubscriptionExpirationPolicyArgs.builder()\n .ttl(\"300000.5s\")\n .build())\n .retryPolicy(SubscriptionRetryPolicyArgs.builder()\n .minimumBackoff(\"10s\")\n .build())\n .enableMessageOrdering(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n labels:\n foo: bar\n messageRetentionDuration: 1200s\n retainAckedMessages: true\n ackDeadlineSeconds: 20\n expirationPolicy:\n ttl: 300000.5s\n retryPolicy:\n minimumBackoff: 10s\n enableMessageOrdering: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Dead Letter\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleDeadLetter = new gcp.pubsub.Topic(\"example_dead_letter\", {name: \"example-topic-dead-letter\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n deadLetterPolicy: {\n deadLetterTopic: exampleDeadLetter.id,\n maxDeliveryAttempts: 10,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_dead_letter = gcp.pubsub.Topic(\"example_dead_letter\", name=\"example-topic-dead-letter\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n dead_letter_policy={\n \"dead_letter_topic\": example_dead_letter.id,\n \"max_delivery_attempts\": 10,\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 = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleDeadLetter = new Gcp.PubSub.Topic(\"example_dead_letter\", new()\n {\n Name = \"example-topic-dead-letter\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n DeadLetterPolicy = new Gcp.PubSub.Inputs.SubscriptionDeadLetterPolicyArgs\n {\n DeadLetterTopic = exampleDeadLetter.Id,\n MaxDeliveryAttempts = 10,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDeadLetter, err := pubsub.NewTopic(ctx, \"example_dead_letter\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic-dead-letter\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tDeadLetterPolicy: \u0026pubsub.SubscriptionDeadLetterPolicyArgs{\n\t\t\t\tDeadLetterTopic: exampleDeadLetter.ID(),\n\t\t\t\tMaxDeliveryAttempts: pulumi.Int(10),\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.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionDeadLetterPolicyArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleDeadLetter = new Topic(\"exampleDeadLetter\", TopicArgs.builder()\n .name(\"example-topic-dead-letter\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .deadLetterPolicy(SubscriptionDeadLetterPolicyArgs.builder()\n .deadLetterTopic(exampleDeadLetter.id())\n .maxDeliveryAttempts(10)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleDeadLetter:\n type: gcp:pubsub:Topic\n name: example_dead_letter\n properties:\n name: example-topic-dead-letter\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n deadLetterPolicy:\n deadLetterTopic: ${exampleDeadLetter.id}\n maxDeliveryAttempts: 10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Bq\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst viewer = new gcp.projects.IAMMember(\"viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst editor = new gcp.projects.IAMMember(\"editor\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.dataEditor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"example_table\",\n datasetId: test.datasetId,\n schema: `[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n bigqueryConfig: {\n table: pulumi.interpolate`${testTable.project}.${testTable.datasetId}.${testTable.tableId}`,\n },\n}, {\n dependsOn: [\n viewer,\n editor,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nviewer = gcp.projects.IAMMember(\"viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\neditor = gcp.projects.IAMMember(\"editor\",\n project=project.project_id,\n role=\"roles/bigquery.dataEditor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"example_table\",\n dataset_id=test.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n\"\"\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(test_table.project, test_table.dataset_id, test_table.table_id).apply(lambda project, dataset_id, table_id: f\"{project}.{dataset_id}.{table_id}\"),\n },\n opts = pulumi.ResourceOptions(depends_on=[\n viewer,\n editor,\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 = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var viewer = new Gcp.Projects.IAMMember(\"viewer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.metadataViewer\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var editor = new Gcp.Projects.IAMMember(\"editor\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.dataEditor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"example_table\",\n DatasetId = test.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"data\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The data\"\"\n }\n]\n\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n BigqueryConfig = new Gcp.PubSub.Inputs.SubscriptionBigqueryConfigArgs\n {\n Table = Output.Tuple(testTable.Project, testTable.DatasetId, testTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"{project}.{datasetId}.{tableId}\";\n }),\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n viewer,\n editor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\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\tviewer, err := projects.NewIAMMember(ctx, \"viewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.metadataViewer\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teditor, err := projects.NewIAMMember(ctx, \"editor\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataEditor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tBigqueryConfig: \u0026pubsub.SubscriptionBigqueryConfigArgs{\n\t\t\t\tTable: pulumi.All(testTable.Project, testTable.DatasetId, testTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tviewer,\n\t\t\teditor,\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.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionBigqueryConfigArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var viewer = new IAMMember(\"viewer\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.metadataViewer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var editor = new IAMMember(\"editor\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.dataEditor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"example_table\")\n .datasetId(test.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n \"\"\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .bigqueryConfig(SubscriptionBigqueryConfigArgs.builder()\n .table(Output.tuple(testTable.project(), testTable.datasetId(), testTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"%s.%s.%s\", project.applyValue(getProjectResult -\u003e getProjectResult),datasetId,tableId);\n }))\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n viewer,\n editor)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n bigqueryConfig:\n table: ${testTable.project}.${testTable.datasetId}.${testTable.tableId}\n options:\n dependson:\n - ${viewer}\n - ${editor}\n viewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n editor:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.dataEditor\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: example_table\n datasetId: ${test.datasetId}\n schema: |\n [\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n ]\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Bq Table Schema\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst viewer = new gcp.projects.IAMMember(\"viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst editor = new gcp.projects.IAMMember(\"editor\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.dataEditor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"example_table\",\n datasetId: test.datasetId,\n schema: `[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n bigqueryConfig: {\n table: pulumi.interpolate`${testTable.project}.${testTable.datasetId}.${testTable.tableId}`,\n useTableSchema: true,\n },\n}, {\n dependsOn: [\n viewer,\n editor,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nviewer = gcp.projects.IAMMember(\"viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\neditor = gcp.projects.IAMMember(\"editor\",\n project=project.project_id,\n role=\"roles/bigquery.dataEditor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"example_table\",\n dataset_id=test.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n\"\"\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(test_table.project, test_table.dataset_id, test_table.table_id).apply(lambda project, dataset_id, table_id: f\"{project}.{dataset_id}.{table_id}\"),\n \"use_table_schema\": True,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n viewer,\n editor,\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 = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var viewer = new Gcp.Projects.IAMMember(\"viewer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.metadataViewer\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var editor = new Gcp.Projects.IAMMember(\"editor\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.dataEditor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"example_table\",\n DatasetId = test.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"data\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The data\"\"\n }\n]\n\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n BigqueryConfig = new Gcp.PubSub.Inputs.SubscriptionBigqueryConfigArgs\n {\n Table = Output.Tuple(testTable.Project, testTable.DatasetId, testTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"{project}.{datasetId}.{tableId}\";\n }),\n UseTableSchema = true,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n viewer,\n editor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\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\tviewer, err := projects.NewIAMMember(ctx, \"viewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.metadataViewer\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teditor, err := projects.NewIAMMember(ctx, \"editor\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataEditor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tBigqueryConfig: \u0026pubsub.SubscriptionBigqueryConfigArgs{\n\t\t\t\tTable: pulumi.All(testTable.Project, testTable.DatasetId, testTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tUseTableSchema: pulumi.Bool(true),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tviewer,\n\t\t\teditor,\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.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionBigqueryConfigArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var viewer = new IAMMember(\"viewer\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.metadataViewer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var editor = new IAMMember(\"editor\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.dataEditor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"example_table\")\n .datasetId(test.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n \"\"\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .bigqueryConfig(SubscriptionBigqueryConfigArgs.builder()\n .table(Output.tuple(testTable.project(), testTable.datasetId(), testTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"%s.%s.%s\", project.applyValue(getProjectResult -\u003e getProjectResult),datasetId,tableId);\n }))\n .useTableSchema(true)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n viewer,\n editor)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n bigqueryConfig:\n table: ${testTable.project}.${testTable.datasetId}.${testTable.tableId}\n useTableSchema: true\n options:\n dependson:\n - ${viewer}\n - ${editor}\n viewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n editor:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.dataEditor\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: example_table\n datasetId: ${test.datasetId}\n schema: |\n [\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n ]\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Bq Service Account\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst bqWriteServiceAccount = new gcp.serviceaccount.Account(\"bq_write_service_account\", {\n accountId: \"example-bqw\",\n displayName: \"BQ Write Service Account\",\n});\nconst project = gcp.organizations.getProject({});\nconst viewer = new gcp.projects.IAMMember(\"viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: pulumi.interpolate`serviceAccount:${bqWriteServiceAccount.email}`,\n});\nconst editor = new gcp.projects.IAMMember(\"editor\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.dataEditor\",\n member: pulumi.interpolate`serviceAccount:${bqWriteServiceAccount.email}`,\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"example_table\",\n datasetId: test.datasetId,\n schema: `[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n bigqueryConfig: {\n table: pulumi.interpolate`${testTable.project}.${testTable.datasetId}.${testTable.tableId}`,\n serviceAccountEmail: bqWriteServiceAccount.email,\n },\n}, {\n dependsOn: [\n bqWriteServiceAccount,\n viewer,\n editor,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nbq_write_service_account = gcp.serviceaccount.Account(\"bq_write_service_account\",\n account_id=\"example-bqw\",\n display_name=\"BQ Write Service Account\")\nproject = gcp.organizations.get_project()\nviewer = gcp.projects.IAMMember(\"viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=bq_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\neditor = gcp.projects.IAMMember(\"editor\",\n project=project.project_id,\n role=\"roles/bigquery.dataEditor\",\n member=bq_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"example_table\",\n dataset_id=test.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n\"\"\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(test_table.project, test_table.dataset_id, test_table.table_id).apply(lambda project, dataset_id, table_id: f\"{project}.{dataset_id}.{table_id}\"),\n \"service_account_email\": bq_write_service_account.email,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n bq_write_service_account,\n viewer,\n editor,\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 = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var bqWriteServiceAccount = new Gcp.ServiceAccount.Account(\"bq_write_service_account\", new()\n {\n AccountId = \"example-bqw\",\n DisplayName = \"BQ Write Service Account\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var viewer = new Gcp.Projects.IAMMember(\"viewer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.metadataViewer\",\n Member = bqWriteServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var editor = new Gcp.Projects.IAMMember(\"editor\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.dataEditor\",\n Member = bqWriteServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"example_table\",\n DatasetId = test.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"data\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The data\"\"\n }\n]\n\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n BigqueryConfig = new Gcp.PubSub.Inputs.SubscriptionBigqueryConfigArgs\n {\n Table = Output.Tuple(testTable.Project, testTable.DatasetId, testTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"{project}.{datasetId}.{tableId}\";\n }),\n ServiceAccountEmail = bqWriteServiceAccount.Email,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n bqWriteServiceAccount,\n viewer,\n editor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqWriteServiceAccount, err := serviceaccount.NewAccount(ctx, \"bq_write_service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"example-bqw\"),\n\t\t\tDisplayName: pulumi.String(\"BQ Write Service Account\"),\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\tviewer, err := projects.NewIAMMember(ctx, \"viewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.metadataViewer\"),\n\t\t\tMember: bqWriteServiceAccount.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\teditor, err := projects.NewIAMMember(ctx, \"editor\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataEditor\"),\n\t\t\tMember: bqWriteServiceAccount.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\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tBigqueryConfig: \u0026pubsub.SubscriptionBigqueryConfigArgs{\n\t\t\t\tTable: pulumi.All(testTable.Project, testTable.DatasetId, testTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tServiceAccountEmail: bqWriteServiceAccount.Email,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbqWriteServiceAccount,\n\t\t\tviewer,\n\t\t\teditor,\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.pubsub.TopicArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\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.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionBigqueryConfigArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var bqWriteServiceAccount = new Account(\"bqWriteServiceAccount\", AccountArgs.builder()\n .accountId(\"example-bqw\")\n .displayName(\"BQ Write Service Account\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var viewer = new IAMMember(\"viewer\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.metadataViewer\")\n .member(bqWriteServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var editor = new IAMMember(\"editor\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.dataEditor\")\n .member(bqWriteServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"example_table\")\n .datasetId(test.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n \"\"\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .bigqueryConfig(SubscriptionBigqueryConfigArgs.builder()\n .table(Output.tuple(testTable.project(), testTable.datasetId(), testTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"%s.%s.%s\", project.applyValue(getProjectResult -\u003e getProjectResult),datasetId,tableId);\n }))\n .serviceAccountEmail(bqWriteServiceAccount.email())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n bqWriteServiceAccount,\n viewer,\n editor)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n bigqueryConfig:\n table: ${testTable.project}.${testTable.datasetId}.${testTable.tableId}\n serviceAccountEmail: ${bqWriteServiceAccount.email}\n options:\n dependson:\n - ${bqWriteServiceAccount}\n - ${viewer}\n - ${editor}\n bqWriteServiceAccount:\n type: gcp:serviceaccount:Account\n name: bq_write_service_account\n properties:\n accountId: example-bqw\n displayName: BQ Write Service Account\n viewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:${bqWriteServiceAccount.email}\n editor:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.dataEditor\n member: serviceAccount:${bqWriteServiceAccount.email}\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: example_table\n datasetId: ${test.datasetId}\n schema: |\n [\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n ]\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Cloudstorage\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.storage.Bucket(\"example\", {\n name: \"example-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: example.name,\n role: \"roles/storage.admin\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: exampleTopic.id,\n cloudStorageConfig: {\n bucket: example.name,\n filenamePrefix: \"pre-\",\n filenameSuffix: \"-_79169\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n },\n}, {\n dependsOn: [\n example,\n admin,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.storage.Bucket(\"example\",\n name=\"example-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nexample_topic = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=example.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example_topic.id,\n cloud_storage_config={\n \"bucket\": example.name,\n \"filename_prefix\": \"pre-\",\n \"filename_suffix\": \"-_79169\",\n \"filename_datetime_format\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"max_bytes\": 1000,\n \"max_duration\": \"300s\",\n },\n opts = pulumi.ResourceOptions(depends_on=[\n example,\n admin,\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 = new Gcp.Storage.Bucket(\"example\", new()\n {\n Name = \"example-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = example.Name,\n Role = \"roles/storage.admin\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = exampleTopic.Id,\n CloudStorageConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigArgs\n {\n Bucket = example.Name,\n FilenamePrefix = \"pre-\",\n FilenameSuffix = \"-_79169\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n admin,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := storage.NewBucket(ctx, \"example\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"example-bucket\"),\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\texampleTopic, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\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\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: exampleTopic.ID(),\n\t\t\tCloudStorageConfig: \u0026pubsub.SubscriptionCloudStorageConfigArgs{\n\t\t\t\tBucket: example.Name,\n\t\t\t\tFilenamePrefix: pulumi.String(\"pre-\"),\n\t\t\t\tFilenameSuffix: pulumi.String(\"-_79169\"),\n\t\t\t\tFilenameDatetimeFormat: pulumi.String(\"YYYY-MM-DD/hh_mm_ssZ\"),\n\t\t\t\tMaxBytes: pulumi.Int(1000),\n\t\t\t\tMaxDuration: pulumi.String(\"300s\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\tadmin,\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigArgs;\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 Bucket(\"example\", BucketArgs.builder()\n .name(\"example-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(example.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(exampleTopic.id())\n .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()\n .bucket(example.name())\n .filenamePrefix(\"pre-\")\n .filenameSuffix(\"-_79169\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n example,\n admin)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:storage:Bucket\n properties:\n name: example-bucket\n location: US\n uniformBucketLevelAccess: true\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${exampleTopic.id}\n cloudStorageConfig:\n bucket: ${example.name}\n filenamePrefix: pre-\n filenameSuffix: -_79169\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n options:\n dependson:\n - ${example}\n - ${admin}\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${example.name}\n role: roles/storage.admin\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Cloudstorage Avro\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.storage.Bucket(\"example\", {\n name: \"example-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: example.name,\n role: \"roles/storage.admin\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: exampleTopic.id,\n cloudStorageConfig: {\n bucket: example.name,\n filenamePrefix: \"pre-\",\n filenameSuffix: \"-_56529\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n avroConfig: {\n writeMetadata: true,\n },\n },\n}, {\n dependsOn: [\n example,\n admin,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.storage.Bucket(\"example\",\n name=\"example-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nexample_topic = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=example.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example_topic.id,\n cloud_storage_config={\n \"bucket\": example.name,\n \"filename_prefix\": \"pre-\",\n \"filename_suffix\": \"-_56529\",\n \"filename_datetime_format\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"max_bytes\": 1000,\n \"max_duration\": \"300s\",\n \"avro_config\": {\n \"write_metadata\": True,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[\n example,\n admin,\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 = new Gcp.Storage.Bucket(\"example\", new()\n {\n Name = \"example-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = example.Name,\n Role = \"roles/storage.admin\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = exampleTopic.Id,\n CloudStorageConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigArgs\n {\n Bucket = example.Name,\n FilenamePrefix = \"pre-\",\n FilenameSuffix = \"-_56529\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n AvroConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigAvroConfigArgs\n {\n WriteMetadata = true,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n admin,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := storage.NewBucket(ctx, \"example\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"example-bucket\"),\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\texampleTopic, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\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\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: exampleTopic.ID(),\n\t\t\tCloudStorageConfig: \u0026pubsub.SubscriptionCloudStorageConfigArgs{\n\t\t\t\tBucket: example.Name,\n\t\t\t\tFilenamePrefix: pulumi.String(\"pre-\"),\n\t\t\t\tFilenameSuffix: pulumi.String(\"-_56529\"),\n\t\t\t\tFilenameDatetimeFormat: pulumi.String(\"YYYY-MM-DD/hh_mm_ssZ\"),\n\t\t\t\tMaxBytes: pulumi.Int(1000),\n\t\t\t\tMaxDuration: pulumi.String(\"300s\"),\n\t\t\t\tAvroConfig: \u0026pubsub.SubscriptionCloudStorageConfigAvroConfigArgs{\n\t\t\t\t\tWriteMetadata: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\tadmin,\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigAvroConfigArgs;\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 Bucket(\"example\", BucketArgs.builder()\n .name(\"example-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(example.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(exampleTopic.id())\n .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()\n .bucket(example.name())\n .filenamePrefix(\"pre-\")\n .filenameSuffix(\"-_56529\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .avroConfig(SubscriptionCloudStorageConfigAvroConfigArgs.builder()\n .writeMetadata(true)\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n example,\n admin)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:storage:Bucket\n properties:\n name: example-bucket\n location: US\n uniformBucketLevelAccess: true\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${exampleTopic.id}\n cloudStorageConfig:\n bucket: ${example.name}\n filenamePrefix: pre-\n filenameSuffix: -_56529\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n avroConfig:\n writeMetadata: true\n options:\n dependson:\n - ${example}\n - ${admin}\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${example.name}\n role: roles/storage.admin\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Cloudstorage Service Account\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.storage.Bucket(\"example\", {\n name: \"example-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst storageWriteServiceAccount = new gcp.serviceaccount.Account(\"storage_write_service_account\", {\n accountId: \"example-stw\",\n displayName: \"Storage Write Service Account\",\n});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: example.name,\n role: \"roles/storage.admin\",\n member: pulumi.interpolate`serviceAccount:${storageWriteServiceAccount.email}`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: exampleTopic.id,\n cloudStorageConfig: {\n bucket: example.name,\n filenamePrefix: \"pre-\",\n filenameSuffix: \"-_75413\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n serviceAccountEmail: storageWriteServiceAccount.email,\n },\n}, {\n dependsOn: [\n storageWriteServiceAccount,\n example,\n admin,\n ],\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.storage.Bucket(\"example\",\n name=\"example-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nexample_topic = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nstorage_write_service_account = gcp.serviceaccount.Account(\"storage_write_service_account\",\n account_id=\"example-stw\",\n display_name=\"Storage Write Service Account\")\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=example.name,\n role=\"roles/storage.admin\",\n member=storage_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example_topic.id,\n cloud_storage_config={\n \"bucket\": example.name,\n \"filename_prefix\": \"pre-\",\n \"filename_suffix\": \"-_75413\",\n \"filename_datetime_format\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"max_bytes\": 1000,\n \"max_duration\": \"300s\",\n \"service_account_email\": storage_write_service_account.email,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n storage_write_service_account,\n example,\n admin,\n ]))\nproject = gcp.organizations.get_project()\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.Storage.Bucket(\"example\", new()\n {\n Name = \"example-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var storageWriteServiceAccount = new Gcp.ServiceAccount.Account(\"storage_write_service_account\", new()\n {\n AccountId = \"example-stw\",\n DisplayName = \"Storage Write Service Account\",\n });\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = example.Name,\n Role = \"roles/storage.admin\",\n Member = storageWriteServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = exampleTopic.Id,\n CloudStorageConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigArgs\n {\n Bucket = example.Name,\n FilenamePrefix = \"pre-\",\n FilenameSuffix = \"-_75413\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n ServiceAccountEmail = storageWriteServiceAccount.Email,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n storageWriteServiceAccount,\n example,\n admin,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := storage.NewBucket(ctx, \"example\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"example-bucket\"),\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\texampleTopic, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstorageWriteServiceAccount, err := serviceaccount.NewAccount(ctx, \"storage_write_service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"example-stw\"),\n\t\t\tDisplayName: pulumi.String(\"Storage Write Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: storageWriteServiceAccount.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 = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: exampleTopic.ID(),\n\t\t\tCloudStorageConfig: \u0026pubsub.SubscriptionCloudStorageConfigArgs{\n\t\t\t\tBucket: example.Name,\n\t\t\t\tFilenamePrefix: pulumi.String(\"pre-\"),\n\t\t\t\tFilenameSuffix: pulumi.String(\"-_75413\"),\n\t\t\t\tFilenameDatetimeFormat: pulumi.String(\"YYYY-MM-DD/hh_mm_ssZ\"),\n\t\t\t\tMaxBytes: pulumi.Int(1000),\n\t\t\t\tMaxDuration: pulumi.String(\"300s\"),\n\t\t\t\tServiceAccountEmail: storageWriteServiceAccount.Email,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tstorageWriteServiceAccount,\n\t\t\texample,\n\t\t\tadmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 Bucket(\"example\", BucketArgs.builder()\n .name(\"example-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var storageWriteServiceAccount = new Account(\"storageWriteServiceAccount\", AccountArgs.builder()\n .accountId(\"example-stw\")\n .displayName(\"Storage Write Service Account\")\n .build());\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(example.name())\n .role(\"roles/storage.admin\")\n .member(storageWriteServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(exampleTopic.id())\n .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()\n .bucket(example.name())\n .filenamePrefix(\"pre-\")\n .filenameSuffix(\"-_75413\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .serviceAccountEmail(storageWriteServiceAccount.email())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n storageWriteServiceAccount,\n example,\n admin)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:storage:Bucket\n properties:\n name: example-bucket\n location: US\n uniformBucketLevelAccess: true\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${exampleTopic.id}\n cloudStorageConfig:\n bucket: ${example.name}\n filenamePrefix: pre-\n filenameSuffix: -_75413\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n serviceAccountEmail: ${storageWriteServiceAccount.email}\n options:\n dependson:\n - ${storageWriteServiceAccount}\n - ${example}\n - ${admin}\n storageWriteServiceAccount:\n type: gcp:serviceaccount:Account\n name: storage_write_service_account\n properties:\n accountId: example-stw\n displayName: Storage Write Service Account\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${example.name}\n role: roles/storage.admin\n member: serviceAccount:${storageWriteServiceAccount.email}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubscription can be imported using any of these accepted formats:\n\n* `projects/{{project}}/subscriptions/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Subscription can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:pubsub/subscription:Subscription default projects/{{project}}/subscriptions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/subscription:Subscription default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/subscription:Subscription default {{name}}\n```\n\n", "properties": { "ackDeadlineSeconds": { "type": "integer", @@ -229136,7 +229136,7 @@ } }, "gcp:pubsub/topic:Topic": { - "description": "A named resource to which messages are sent by publishers.\n\n\nTo get more information about Topic, see:\n\n* [API documentation](https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.topics)\n* How-to Guides\n * [Managing Topics](https://cloud.google.com/pubsub/docs/admin#managing_topics)\n\n\u003e **Note:** You can retrieve the email of the Google Managed Pub/Sub Service Account used for forwarding\nby using the `gcp.projects.ServiceIdentity` resource.\n\n## Example Usage\n\n### Pubsub Topic Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {\n name: \"example-topic\",\n labels: {\n foo: \"bar\",\n },\n messageRetentionDuration: \"86600s\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\",\n name=\"example-topic\",\n labels={\n \"foo\": \"bar\",\n },\n message_retention_duration=\"86600s\")\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.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n MessageRetentionDuration = \"86600s\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMessageRetentionDuration: pulumi.String(\"86600s\"),\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.pubsub.TopicArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .labels(Map.of(\"foo\", \"bar\"))\n .messageRetentionDuration(\"86600s\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n labels:\n foo: bar\n messageRetentionDuration: 86600s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Topic Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"global\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n});\nconst example = new gcp.pubsub.Topic(\"example\", {\n name: \"example-topic\",\n kmsKeyName: cryptoKey.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-keyring\",\n location=\"global\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id)\nexample = gcp.pubsub.Topic(\"example\",\n name=\"example-topic\",\n kms_key_name=crypto_key.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 keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"global\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n });\n\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n KmsKeyName = cryptoKey.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t\tKmsKeyName: cryptoKey.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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\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 .name(\"example-keyring\")\n .location(\"global\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .build());\n\n var example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .kmsKeyName(cryptoKey.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n kmsKeyName: ${cryptoKey.id}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-keyring\n location: global\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Topic Geo Restricted\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {\n name: \"example-topic\",\n messageStoragePolicy: {\n allowedPersistenceRegions: [\"europe-west3\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\",\n name=\"example-topic\",\n message_storage_policy={\n \"allowedPersistenceRegions\": [\"europe-west3\"],\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 = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n MessageStoragePolicy = new Gcp.PubSub.Inputs.TopicMessageStoragePolicyArgs\n {\n AllowedPersistenceRegions = new[]\n {\n \"europe-west3\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t\tMessageStoragePolicy: \u0026pubsub.TopicMessageStoragePolicyArgs{\n\t\t\t\tAllowedPersistenceRegions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"europe-west3\"),\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.inputs.TopicMessageStoragePolicyArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .messageStoragePolicy(TopicMessageStoragePolicyArgs.builder()\n .allowedPersistenceRegions(\"europe-west3\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n messageStoragePolicy:\n allowedPersistenceRegions:\n - europe-west3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Topic Schema Settings\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Schema(\"example\", {\n name: \"example\",\n type: \"AVRO\",\n definition: `{\n \"type\" : \"record\",\n \"name\" : \"Avro\",\n \"fields\" : [\n {\n \"name\" : \"StringField\",\n \"type\" : \"string\"\n },\n {\n \"name\" : \"IntField\",\n \"type\" : \"int\"\n }\n ]\n}\n`,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {\n name: \"example-topic\",\n schemaSettings: {\n schema: \"projects/my-project-name/schemas/example\",\n encoding: \"JSON\",\n },\n}, {\n dependsOn: [example],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Schema(\"example\",\n name=\"example\",\n type=\"AVRO\",\n definition=\"\"\"{\n \"type\" : \"record\",\n \"name\" : \"Avro\",\n \"fields\" : [\n {\n \"name\" : \"StringField\",\n \"type\" : \"string\"\n },\n {\n \"name\" : \"IntField\",\n \"type\" : \"int\"\n }\n ]\n}\n\"\"\")\nexample_topic = gcp.pubsub.Topic(\"example\",\n name=\"example-topic\",\n schema_settings={\n \"schema\": \"projects/my-project-name/schemas/example\",\n \"encoding\": \"JSON\",\n },\n opts = pulumi.ResourceOptions(depends_on=[example]))\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.PubSub.Schema(\"example\", new()\n {\n Name = \"example\",\n Type = \"AVRO\",\n Definition = @\"{\n \"\"type\"\" : \"\"record\"\",\n \"\"name\"\" : \"\"Avro\"\",\n \"\"fields\"\" : [\n {\n \"\"name\"\" : \"\"StringField\"\",\n \"\"type\"\" : \"\"string\"\"\n },\n {\n \"\"name\"\" : \"\"IntField\"\",\n \"\"type\"\" : \"\"int\"\"\n }\n ]\n}\n\",\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n SchemaSettings = new Gcp.PubSub.Inputs.TopicSchemaSettingsArgs\n {\n Schema = \"projects/my-project-name/schemas/example\",\n Encoding = \"JSON\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := pubsub.NewSchema(ctx, \"example\", \u0026pubsub.SchemaArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tType: pulumi.String(\"AVRO\"),\n\t\t\tDefinition: pulumi.String(`{\n \"type\" : \"record\",\n \"name\" : \"Avro\",\n \"fields\" : [\n {\n \"name\" : \"StringField\",\n \"type\" : \"string\"\n },\n {\n \"name\" : \"IntField\",\n \"type\" : \"int\"\n }\n ]\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t\tSchemaSettings: \u0026pubsub.TopicSchemaSettingsArgs{\n\t\t\t\tSchema: pulumi.String(\"projects/my-project-name/schemas/example\"),\n\t\t\t\tEncoding: pulumi.String(\"JSON\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\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.Schema;\nimport com.pulumi.gcp.pubsub.SchemaArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.inputs.TopicSchemaSettingsArgs;\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 Schema(\"example\", SchemaArgs.builder()\n .name(\"example\")\n .type(\"AVRO\")\n .definition(\"\"\"\n{\n \"type\" : \"record\",\n \"name\" : \"Avro\",\n \"fields\" : [\n {\n \"name\" : \"StringField\",\n \"type\" : \"string\"\n },\n {\n \"name\" : \"IntField\",\n \"type\" : \"int\"\n }\n ]\n}\n \"\"\")\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .schemaSettings(TopicSchemaSettingsArgs.builder()\n .schema(\"projects/my-project-name/schemas/example\")\n .encoding(\"JSON\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(example)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Schema\n properties:\n name: example\n type: AVRO\n definition: |\n {\n \"type\" : \"record\",\n \"name\" : \"Avro\",\n \"fields\" : [\n {\n \"name\" : \"StringField\",\n \"type\" : \"string\"\n },\n {\n \"name\" : \"IntField\",\n \"type\" : \"int\"\n }\n ]\n }\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n schemaSettings:\n schema: projects/my-project-name/schemas/example\n encoding: JSON\n options:\n dependson:\n - ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Topic Ingestion Kinesis\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {\n name: \"example-topic\",\n ingestionDataSourceSettings: {\n awsKinesis: {\n streamArn: \"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name\",\n consumerArn: \"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name/consumer/consumer-1:1111111111\",\n awsRoleArn: \"arn:aws:iam::111111111111:role/fake-role-name\",\n gcpServiceAccount: \"fake-service-account@fake-gcp-project.iam.gserviceaccount.com\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\",\n name=\"example-topic\",\n ingestion_data_source_settings={\n \"awsKinesis\": {\n \"streamArn\": \"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name\",\n \"consumerArn\": \"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name/consumer/consumer-1:1111111111\",\n \"awsRoleArn\": \"arn:aws:iam::111111111111:role/fake-role-name\",\n \"gcpServiceAccount\": \"fake-service-account@fake-gcp-project.iam.gserviceaccount.com\",\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 example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n IngestionDataSourceSettings = new Gcp.PubSub.Inputs.TopicIngestionDataSourceSettingsArgs\n {\n AwsKinesis = new Gcp.PubSub.Inputs.TopicIngestionDataSourceSettingsAwsKinesisArgs\n {\n StreamArn = \"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name\",\n ConsumerArn = \"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name/consumer/consumer-1:1111111111\",\n AwsRoleArn = \"arn:aws:iam::111111111111:role/fake-role-name\",\n GcpServiceAccount = \"fake-service-account@fake-gcp-project.iam.gserviceaccount.com\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t\tIngestionDataSourceSettings: \u0026pubsub.TopicIngestionDataSourceSettingsArgs{\n\t\t\t\tAwsKinesis: \u0026pubsub.TopicIngestionDataSourceSettingsAwsKinesisArgs{\n\t\t\t\t\tStreamArn: pulumi.String(\"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name\"),\n\t\t\t\t\tConsumerArn: pulumi.String(\"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name/consumer/consumer-1:1111111111\"),\n\t\t\t\t\tAwsRoleArn: pulumi.String(\"arn:aws:iam::111111111111:role/fake-role-name\"),\n\t\t\t\t\tGcpServiceAccount: pulumi.String(\"fake-service-account@fake-gcp-project.iam.gserviceaccount.com\"),\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.inputs.TopicIngestionDataSourceSettingsArgs;\nimport com.pulumi.gcp.pubsub.inputs.TopicIngestionDataSourceSettingsAwsKinesisArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .ingestionDataSourceSettings(TopicIngestionDataSourceSettingsArgs.builder()\n .awsKinesis(TopicIngestionDataSourceSettingsAwsKinesisArgs.builder()\n .streamArn(\"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name\")\n .consumerArn(\"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name/consumer/consumer-1:1111111111\")\n .awsRoleArn(\"arn:aws:iam::111111111111:role/fake-role-name\")\n .gcpServiceAccount(\"fake-service-account@fake-gcp-project.iam.gserviceaccount.com\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n ingestionDataSourceSettings:\n awsKinesis:\n streamArn: arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name\n consumerArn: arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name/consumer/consumer-1:1111111111\n awsRoleArn: arn:aws:iam::111111111111:role/fake-role-name\n gcpServiceAccount: fake-service-account@fake-gcp-project.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTopic can be imported using any of these accepted formats:\n\n* `projects/{{project}}/topics/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Topic can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:pubsub/topic:Topic default projects/{{project}}/topics/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/topic:Topic default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/topic:Topic default {{name}}\n```\n\n", + "description": "A named resource to which messages are sent by publishers.\n\n\nTo get more information about Topic, see:\n\n* [API documentation](https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.topics)\n* How-to Guides\n * [Managing Topics](https://cloud.google.com/pubsub/docs/admin#managing_topics)\n\n\u003e **Note:** You can retrieve the email of the Google Managed Pub/Sub Service Account used for forwarding\nby using the `gcp.projects.ServiceIdentity` resource.\n\n## Example Usage\n\n### Pubsub Topic Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {\n name: \"example-topic\",\n labels: {\n foo: \"bar\",\n },\n messageRetentionDuration: \"86600s\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\",\n name=\"example-topic\",\n labels={\n \"foo\": \"bar\",\n },\n message_retention_duration=\"86600s\")\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.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n MessageRetentionDuration = \"86600s\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMessageRetentionDuration: pulumi.String(\"86600s\"),\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.pubsub.TopicArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .labels(Map.of(\"foo\", \"bar\"))\n .messageRetentionDuration(\"86600s\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n labels:\n foo: bar\n messageRetentionDuration: 86600s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Topic Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"global\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n});\nconst example = new gcp.pubsub.Topic(\"example\", {\n name: \"example-topic\",\n kmsKeyName: cryptoKey.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-keyring\",\n location=\"global\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id)\nexample = gcp.pubsub.Topic(\"example\",\n name=\"example-topic\",\n kms_key_name=crypto_key.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 keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"global\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n });\n\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n KmsKeyName = cryptoKey.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t\tKmsKeyName: cryptoKey.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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\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 .name(\"example-keyring\")\n .location(\"global\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .build());\n\n var example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .kmsKeyName(cryptoKey.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n kmsKeyName: ${cryptoKey.id}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-keyring\n location: global\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Topic Geo Restricted\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {\n name: \"example-topic\",\n messageStoragePolicy: {\n allowedPersistenceRegions: [\"europe-west3\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\",\n name=\"example-topic\",\n message_storage_policy={\n \"allowed_persistence_regions\": [\"europe-west3\"],\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 = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n MessageStoragePolicy = new Gcp.PubSub.Inputs.TopicMessageStoragePolicyArgs\n {\n AllowedPersistenceRegions = new[]\n {\n \"europe-west3\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t\tMessageStoragePolicy: \u0026pubsub.TopicMessageStoragePolicyArgs{\n\t\t\t\tAllowedPersistenceRegions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"europe-west3\"),\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.inputs.TopicMessageStoragePolicyArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .messageStoragePolicy(TopicMessageStoragePolicyArgs.builder()\n .allowedPersistenceRegions(\"europe-west3\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n messageStoragePolicy:\n allowedPersistenceRegions:\n - europe-west3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Topic Schema Settings\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Schema(\"example\", {\n name: \"example\",\n type: \"AVRO\",\n definition: `{\n \"type\" : \"record\",\n \"name\" : \"Avro\",\n \"fields\" : [\n {\n \"name\" : \"StringField\",\n \"type\" : \"string\"\n },\n {\n \"name\" : \"IntField\",\n \"type\" : \"int\"\n }\n ]\n}\n`,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {\n name: \"example-topic\",\n schemaSettings: {\n schema: \"projects/my-project-name/schemas/example\",\n encoding: \"JSON\",\n },\n}, {\n dependsOn: [example],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Schema(\"example\",\n name=\"example\",\n type=\"AVRO\",\n definition=\"\"\"{\n \"type\" : \"record\",\n \"name\" : \"Avro\",\n \"fields\" : [\n {\n \"name\" : \"StringField\",\n \"type\" : \"string\"\n },\n {\n \"name\" : \"IntField\",\n \"type\" : \"int\"\n }\n ]\n}\n\"\"\")\nexample_topic = gcp.pubsub.Topic(\"example\",\n name=\"example-topic\",\n schema_settings={\n \"schema\": \"projects/my-project-name/schemas/example\",\n \"encoding\": \"JSON\",\n },\n opts = pulumi.ResourceOptions(depends_on=[example]))\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.PubSub.Schema(\"example\", new()\n {\n Name = \"example\",\n Type = \"AVRO\",\n Definition = @\"{\n \"\"type\"\" : \"\"record\"\",\n \"\"name\"\" : \"\"Avro\"\",\n \"\"fields\"\" : [\n {\n \"\"name\"\" : \"\"StringField\"\",\n \"\"type\"\" : \"\"string\"\"\n },\n {\n \"\"name\"\" : \"\"IntField\"\",\n \"\"type\"\" : \"\"int\"\"\n }\n ]\n}\n\",\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n SchemaSettings = new Gcp.PubSub.Inputs.TopicSchemaSettingsArgs\n {\n Schema = \"projects/my-project-name/schemas/example\",\n Encoding = \"JSON\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\texample, err := pubsub.NewSchema(ctx, \"example\", \u0026pubsub.SchemaArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tType: pulumi.String(\"AVRO\"),\n\t\t\tDefinition: pulumi.String(`{\n \"type\" : \"record\",\n \"name\" : \"Avro\",\n \"fields\" : [\n {\n \"name\" : \"StringField\",\n \"type\" : \"string\"\n },\n {\n \"name\" : \"IntField\",\n \"type\" : \"int\"\n }\n ]\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t\tSchemaSettings: \u0026pubsub.TopicSchemaSettingsArgs{\n\t\t\t\tSchema: pulumi.String(\"projects/my-project-name/schemas/example\"),\n\t\t\t\tEncoding: pulumi.String(\"JSON\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\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.Schema;\nimport com.pulumi.gcp.pubsub.SchemaArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.inputs.TopicSchemaSettingsArgs;\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 Schema(\"example\", SchemaArgs.builder()\n .name(\"example\")\n .type(\"AVRO\")\n .definition(\"\"\"\n{\n \"type\" : \"record\",\n \"name\" : \"Avro\",\n \"fields\" : [\n {\n \"name\" : \"StringField\",\n \"type\" : \"string\"\n },\n {\n \"name\" : \"IntField\",\n \"type\" : \"int\"\n }\n ]\n}\n \"\"\")\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .schemaSettings(TopicSchemaSettingsArgs.builder()\n .schema(\"projects/my-project-name/schemas/example\")\n .encoding(\"JSON\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(example)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Schema\n properties:\n name: example\n type: AVRO\n definition: |\n {\n \"type\" : \"record\",\n \"name\" : \"Avro\",\n \"fields\" : [\n {\n \"name\" : \"StringField\",\n \"type\" : \"string\"\n },\n {\n \"name\" : \"IntField\",\n \"type\" : \"int\"\n }\n ]\n }\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n schemaSettings:\n schema: projects/my-project-name/schemas/example\n encoding: JSON\n options:\n dependson:\n - ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Topic Ingestion Kinesis\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {\n name: \"example-topic\",\n ingestionDataSourceSettings: {\n awsKinesis: {\n streamArn: \"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name\",\n consumerArn: \"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name/consumer/consumer-1:1111111111\",\n awsRoleArn: \"arn:aws:iam::111111111111:role/fake-role-name\",\n gcpServiceAccount: \"fake-service-account@fake-gcp-project.iam.gserviceaccount.com\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\",\n name=\"example-topic\",\n ingestion_data_source_settings={\n \"aws_kinesis\": {\n \"stream_arn\": \"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name\",\n \"consumer_arn\": \"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name/consumer/consumer-1:1111111111\",\n \"aws_role_arn\": \"arn:aws:iam::111111111111:role/fake-role-name\",\n \"gcp_service_account\": \"fake-service-account@fake-gcp-project.iam.gserviceaccount.com\",\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 example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n IngestionDataSourceSettings = new Gcp.PubSub.Inputs.TopicIngestionDataSourceSettingsArgs\n {\n AwsKinesis = new Gcp.PubSub.Inputs.TopicIngestionDataSourceSettingsAwsKinesisArgs\n {\n StreamArn = \"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name\",\n ConsumerArn = \"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name/consumer/consumer-1:1111111111\",\n AwsRoleArn = \"arn:aws:iam::111111111111:role/fake-role-name\",\n GcpServiceAccount = \"fake-service-account@fake-gcp-project.iam.gserviceaccount.com\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t\tIngestionDataSourceSettings: \u0026pubsub.TopicIngestionDataSourceSettingsArgs{\n\t\t\t\tAwsKinesis: \u0026pubsub.TopicIngestionDataSourceSettingsAwsKinesisArgs{\n\t\t\t\t\tStreamArn: pulumi.String(\"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name\"),\n\t\t\t\t\tConsumerArn: pulumi.String(\"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name/consumer/consumer-1:1111111111\"),\n\t\t\t\t\tAwsRoleArn: pulumi.String(\"arn:aws:iam::111111111111:role/fake-role-name\"),\n\t\t\t\t\tGcpServiceAccount: pulumi.String(\"fake-service-account@fake-gcp-project.iam.gserviceaccount.com\"),\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.inputs.TopicIngestionDataSourceSettingsArgs;\nimport com.pulumi.gcp.pubsub.inputs.TopicIngestionDataSourceSettingsAwsKinesisArgs;\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 Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .ingestionDataSourceSettings(TopicIngestionDataSourceSettingsArgs.builder()\n .awsKinesis(TopicIngestionDataSourceSettingsAwsKinesisArgs.builder()\n .streamArn(\"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name\")\n .consumerArn(\"arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name/consumer/consumer-1:1111111111\")\n .awsRoleArn(\"arn:aws:iam::111111111111:role/fake-role-name\")\n .gcpServiceAccount(\"fake-service-account@fake-gcp-project.iam.gserviceaccount.com\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n ingestionDataSourceSettings:\n awsKinesis:\n streamArn: arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name\n consumerArn: arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name/consumer/consumer-1:1111111111\n awsRoleArn: arn:aws:iam::111111111111:role/fake-role-name\n gcpServiceAccount: fake-service-account@fake-gcp-project.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTopic can be imported using any of these accepted formats:\n\n* `projects/{{project}}/topics/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Topic can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:pubsub/topic:Topic default projects/{{project}}/topics/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/topic:Topic default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/topic:Topic default {{name}}\n```\n\n", "properties": { "effectiveLabels": { "type": "object", @@ -229576,7 +229576,7 @@ } }, "gcp:recaptcha/enterpriseKey:EnterpriseKey": { - "description": "The RecaptchaEnterprise Key resource\n\n## Example Usage\n\n### Android_key\nA basic test of recaptcha enterprise key that can be used by Android apps\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n androidSettings: {\n allowAllPackageNames: true,\n allowedPackageNames: [],\n },\n project: \"my-project-name\",\n testingOptions: {\n testingScore: 0.8,\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n android_settings={\n \"allowAllPackageNames\": True,\n \"allowedPackageNames\": [],\n },\n project=\"my-project-name\",\n testing_options={\n \"testingScore\": 0.8,\n },\n labels={\n \"label-one\": \"value-one\",\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 primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n AndroidSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyAndroidSettingsArgs\n {\n AllowAllPackageNames = true,\n AllowedPackageNames = new() { },\n },\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingScore = 0.8,\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/recaptcha\"\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 := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tAndroidSettings: \u0026recaptcha.EnterpriseKeyAndroidSettingsArgs{\n\t\t\t\tAllowAllPackageNames: pulumi.Bool(true),\n\t\t\t\tAllowedPackageNames: pulumi.StringArray{},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingScore: pulumi.Float64(0.8),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\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.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyAndroidSettingsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\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 primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .androidSettings(EnterpriseKeyAndroidSettingsArgs.builder()\n .allowAllPackageNames(true)\n .allowedPackageNames()\n .build())\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingScore(0.8)\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n androidSettings:\n allowAllPackageNames: true\n allowedPackageNames: []\n project: my-project-name\n testingOptions:\n testingScore: 0.8\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Ios_key\nA basic test of recaptcha enterprise key that can be used by iOS apps\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n iosSettings: {\n allowAllBundleIds: true,\n allowedBundleIds: [],\n },\n project: \"my-project-name\",\n testingOptions: {\n testingScore: 1,\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n ios_settings={\n \"allowAllBundleIds\": True,\n \"allowedBundleIds\": [],\n },\n project=\"my-project-name\",\n testing_options={\n \"testingScore\": 1,\n },\n labels={\n \"label-one\": \"value-one\",\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 primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n IosSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyIosSettingsArgs\n {\n AllowAllBundleIds = true,\n AllowedBundleIds = new() { },\n },\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingScore = 1,\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/recaptcha\"\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 := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tIosSettings: \u0026recaptcha.EnterpriseKeyIosSettingsArgs{\n\t\t\t\tAllowAllBundleIds: pulumi.Bool(true),\n\t\t\t\tAllowedBundleIds: pulumi.StringArray{},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingScore: pulumi.Float64(1),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\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.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyIosSettingsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\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 primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .iosSettings(EnterpriseKeyIosSettingsArgs.builder()\n .allowAllBundleIds(true)\n .allowedBundleIds()\n .build())\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingScore(1)\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n iosSettings:\n allowAllBundleIds: true\n allowedBundleIds: []\n project: my-project-name\n testingOptions:\n testingScore: 1\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Minimal_key\nA minimal test of recaptcha enterprise key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n project: \"my-project-name\",\n webSettings: {\n integrationType: \"SCORE\",\n allowAllDomains: true,\n },\n labels: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n project=\"my-project-name\",\n web_settings={\n \"integrationType\": \"SCORE\",\n \"allowAllDomains\": True,\n },\n labels={})\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 primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n Project = \"my-project-name\",\n WebSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWebSettingsArgs\n {\n IntegrationType = \"SCORE\",\n AllowAllDomains = true,\n },\n Labels = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/recaptcha\"\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 := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tWebSettings: \u0026recaptcha.EnterpriseKeyWebSettingsArgs{\n\t\t\t\tIntegrationType: pulumi.String(\"SCORE\"),\n\t\t\t\tAllowAllDomains: pulumi.Bool(true),\n\t\t\t},\n\t\t\tLabels: nil,\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.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWebSettingsArgs;\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 primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .project(\"my-project-name\")\n .webSettings(EnterpriseKeyWebSettingsArgs.builder()\n .integrationType(\"SCORE\")\n .allowAllDomains(true)\n .build())\n .labels()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n project: my-project-name\n webSettings:\n integrationType: SCORE\n allowAllDomains: true\n labels: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Waf_key\nA basic test of recaptcha enterprise key that includes WAF settings\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n project: \"my-project-name\",\n testingOptions: {\n testingChallenge: \"NOCAPTCHA\",\n testingScore: 0.5,\n },\n wafSettings: {\n wafFeature: \"CHALLENGE_PAGE\",\n wafService: \"CA\",\n },\n webSettings: {\n integrationType: \"INVISIBLE\",\n allowAllDomains: true,\n allowedDomains: [],\n challengeSecurityPreference: \"USABILITY\",\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n project=\"my-project-name\",\n testing_options={\n \"testingChallenge\": \"NOCAPTCHA\",\n \"testingScore\": 0.5,\n },\n waf_settings={\n \"wafFeature\": \"CHALLENGE_PAGE\",\n \"wafService\": \"CA\",\n },\n web_settings={\n \"integrationType\": \"INVISIBLE\",\n \"allowAllDomains\": True,\n \"allowedDomains\": [],\n \"challengeSecurityPreference\": \"USABILITY\",\n },\n labels={\n \"label-one\": \"value-one\",\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 primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingChallenge = \"NOCAPTCHA\",\n TestingScore = 0.5,\n },\n WafSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWafSettingsArgs\n {\n WafFeature = \"CHALLENGE_PAGE\",\n WafService = \"CA\",\n },\n WebSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWebSettingsArgs\n {\n IntegrationType = \"INVISIBLE\",\n AllowAllDomains = true,\n AllowedDomains = new() { },\n ChallengeSecurityPreference = \"USABILITY\",\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/recaptcha\"\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 := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingChallenge: pulumi.String(\"NOCAPTCHA\"),\n\t\t\t\tTestingScore: pulumi.Float64(0.5),\n\t\t\t},\n\t\t\tWafSettings: \u0026recaptcha.EnterpriseKeyWafSettingsArgs{\n\t\t\t\tWafFeature: pulumi.String(\"CHALLENGE_PAGE\"),\n\t\t\t\tWafService: pulumi.String(\"CA\"),\n\t\t\t},\n\t\t\tWebSettings: \u0026recaptcha.EnterpriseKeyWebSettingsArgs{\n\t\t\t\tIntegrationType: pulumi.String(\"INVISIBLE\"),\n\t\t\t\tAllowAllDomains: pulumi.Bool(true),\n\t\t\t\tAllowedDomains: pulumi.StringArray{},\n\t\t\t\tChallengeSecurityPreference: pulumi.String(\"USABILITY\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\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.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWafSettingsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWebSettingsArgs;\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 primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingChallenge(\"NOCAPTCHA\")\n .testingScore(0.5)\n .build())\n .wafSettings(EnterpriseKeyWafSettingsArgs.builder()\n .wafFeature(\"CHALLENGE_PAGE\")\n .wafService(\"CA\")\n .build())\n .webSettings(EnterpriseKeyWebSettingsArgs.builder()\n .integrationType(\"INVISIBLE\")\n .allowAllDomains(true)\n .allowedDomains()\n .challengeSecurityPreference(\"USABILITY\")\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n project: my-project-name\n testingOptions:\n testingChallenge: NOCAPTCHA\n testingScore: 0.5\n wafSettings:\n wafFeature: CHALLENGE_PAGE\n wafService: CA\n webSettings:\n integrationType: INVISIBLE\n allowAllDomains: true\n allowedDomains: []\n challengeSecurityPreference: USABILITY\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Web_key\nA basic test of recaptcha enterprise key that can be used by websites\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n project: \"my-project-name\",\n testingOptions: {\n testingChallenge: \"NOCAPTCHA\",\n testingScore: 0.5,\n },\n webSettings: {\n integrationType: \"CHECKBOX\",\n allowAllDomains: true,\n allowedDomains: [],\n challengeSecurityPreference: \"USABILITY\",\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n project=\"my-project-name\",\n testing_options={\n \"testingChallenge\": \"NOCAPTCHA\",\n \"testingScore\": 0.5,\n },\n web_settings={\n \"integrationType\": \"CHECKBOX\",\n \"allowAllDomains\": True,\n \"allowedDomains\": [],\n \"challengeSecurityPreference\": \"USABILITY\",\n },\n labels={\n \"label-one\": \"value-one\",\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 primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingChallenge = \"NOCAPTCHA\",\n TestingScore = 0.5,\n },\n WebSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWebSettingsArgs\n {\n IntegrationType = \"CHECKBOX\",\n AllowAllDomains = true,\n AllowedDomains = new() { },\n ChallengeSecurityPreference = \"USABILITY\",\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/recaptcha\"\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 := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingChallenge: pulumi.String(\"NOCAPTCHA\"),\n\t\t\t\tTestingScore: pulumi.Float64(0.5),\n\t\t\t},\n\t\t\tWebSettings: \u0026recaptcha.EnterpriseKeyWebSettingsArgs{\n\t\t\t\tIntegrationType: pulumi.String(\"CHECKBOX\"),\n\t\t\t\tAllowAllDomains: pulumi.Bool(true),\n\t\t\t\tAllowedDomains: pulumi.StringArray{},\n\t\t\t\tChallengeSecurityPreference: pulumi.String(\"USABILITY\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\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.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWebSettingsArgs;\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 primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingChallenge(\"NOCAPTCHA\")\n .testingScore(0.5)\n .build())\n .webSettings(EnterpriseKeyWebSettingsArgs.builder()\n .integrationType(\"CHECKBOX\")\n .allowAllDomains(true)\n .allowedDomains()\n .challengeSecurityPreference(\"USABILITY\")\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n project: my-project-name\n testingOptions:\n testingChallenge: NOCAPTCHA\n testingScore: 0.5\n webSettings:\n integrationType: CHECKBOX\n allowAllDomains: true\n allowedDomains: []\n challengeSecurityPreference: USABILITY\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Web_score_key\nA basic test of recaptcha enterprise key with score integration type that can be used by websites\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n project: \"my-project-name\",\n testingOptions: {\n testingScore: 0.5,\n },\n webSettings: {\n integrationType: \"SCORE\",\n allowAllDomains: true,\n allowAmpTraffic: false,\n allowedDomains: [],\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n project=\"my-project-name\",\n testing_options={\n \"testingScore\": 0.5,\n },\n web_settings={\n \"integrationType\": \"SCORE\",\n \"allowAllDomains\": True,\n \"allowAmpTraffic\": False,\n \"allowedDomains\": [],\n },\n labels={\n \"label-one\": \"value-one\",\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 primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingScore = 0.5,\n },\n WebSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWebSettingsArgs\n {\n IntegrationType = \"SCORE\",\n AllowAllDomains = true,\n AllowAmpTraffic = false,\n AllowedDomains = new() { },\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/recaptcha\"\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 := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingScore: pulumi.Float64(0.5),\n\t\t\t},\n\t\t\tWebSettings: \u0026recaptcha.EnterpriseKeyWebSettingsArgs{\n\t\t\t\tIntegrationType: pulumi.String(\"SCORE\"),\n\t\t\t\tAllowAllDomains: pulumi.Bool(true),\n\t\t\t\tAllowAmpTraffic: pulumi.Bool(false),\n\t\t\t\tAllowedDomains: pulumi.StringArray{},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\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.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWebSettingsArgs;\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 primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingScore(0.5)\n .build())\n .webSettings(EnterpriseKeyWebSettingsArgs.builder()\n .integrationType(\"SCORE\")\n .allowAllDomains(true)\n .allowAmpTraffic(false)\n .allowedDomains()\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n project: my-project-name\n testingOptions:\n testingScore: 0.5\n webSettings:\n integrationType: SCORE\n allowAllDomains: true\n allowAmpTraffic: false\n allowedDomains: []\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nKey can be imported using any of these accepted formats:\n\n* `projects/{{project}}/keys/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Key can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:recaptcha/enterpriseKey:EnterpriseKey default projects/{{project}}/keys/{{name}}\n```\n\n```sh\n$ pulumi import gcp:recaptcha/enterpriseKey:EnterpriseKey default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:recaptcha/enterpriseKey:EnterpriseKey default {{name}}\n```\n\n", + "description": "The RecaptchaEnterprise Key resource\n\n## Example Usage\n\n### Android_key\nA basic test of recaptcha enterprise key that can be used by Android apps\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n androidSettings: {\n allowAllPackageNames: true,\n allowedPackageNames: [],\n },\n project: \"my-project-name\",\n testingOptions: {\n testingScore: 0.8,\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n android_settings={\n \"allow_all_package_names\": True,\n \"allowed_package_names\": [],\n },\n project=\"my-project-name\",\n testing_options={\n \"testing_score\": 0.8,\n },\n labels={\n \"label-one\": \"value-one\",\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 primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n AndroidSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyAndroidSettingsArgs\n {\n AllowAllPackageNames = true,\n AllowedPackageNames = new() { },\n },\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingScore = 0.8,\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/recaptcha\"\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 := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tAndroidSettings: \u0026recaptcha.EnterpriseKeyAndroidSettingsArgs{\n\t\t\t\tAllowAllPackageNames: pulumi.Bool(true),\n\t\t\t\tAllowedPackageNames: pulumi.StringArray{},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingScore: pulumi.Float64(0.8),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\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.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyAndroidSettingsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\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 primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .androidSettings(EnterpriseKeyAndroidSettingsArgs.builder()\n .allowAllPackageNames(true)\n .allowedPackageNames()\n .build())\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingScore(0.8)\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n androidSettings:\n allowAllPackageNames: true\n allowedPackageNames: []\n project: my-project-name\n testingOptions:\n testingScore: 0.8\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Ios_key\nA basic test of recaptcha enterprise key that can be used by iOS apps\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n iosSettings: {\n allowAllBundleIds: true,\n allowedBundleIds: [],\n },\n project: \"my-project-name\",\n testingOptions: {\n testingScore: 1,\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n ios_settings={\n \"allow_all_bundle_ids\": True,\n \"allowed_bundle_ids\": [],\n },\n project=\"my-project-name\",\n testing_options={\n \"testing_score\": 1,\n },\n labels={\n \"label-one\": \"value-one\",\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 primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n IosSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyIosSettingsArgs\n {\n AllowAllBundleIds = true,\n AllowedBundleIds = new() { },\n },\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingScore = 1,\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/recaptcha\"\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 := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tIosSettings: \u0026recaptcha.EnterpriseKeyIosSettingsArgs{\n\t\t\t\tAllowAllBundleIds: pulumi.Bool(true),\n\t\t\t\tAllowedBundleIds: pulumi.StringArray{},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingScore: pulumi.Float64(1),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\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.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyIosSettingsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\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 primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .iosSettings(EnterpriseKeyIosSettingsArgs.builder()\n .allowAllBundleIds(true)\n .allowedBundleIds()\n .build())\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingScore(1)\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n iosSettings:\n allowAllBundleIds: true\n allowedBundleIds: []\n project: my-project-name\n testingOptions:\n testingScore: 1\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Minimal_key\nA minimal test of recaptcha enterprise key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n project: \"my-project-name\",\n webSettings: {\n integrationType: \"SCORE\",\n allowAllDomains: true,\n },\n labels: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n project=\"my-project-name\",\n web_settings={\n \"integration_type\": \"SCORE\",\n \"allow_all_domains\": True,\n },\n labels={})\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 primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n Project = \"my-project-name\",\n WebSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWebSettingsArgs\n {\n IntegrationType = \"SCORE\",\n AllowAllDomains = true,\n },\n Labels = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/recaptcha\"\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 := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tWebSettings: \u0026recaptcha.EnterpriseKeyWebSettingsArgs{\n\t\t\t\tIntegrationType: pulumi.String(\"SCORE\"),\n\t\t\t\tAllowAllDomains: pulumi.Bool(true),\n\t\t\t},\n\t\t\tLabels: nil,\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.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWebSettingsArgs;\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 primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .project(\"my-project-name\")\n .webSettings(EnterpriseKeyWebSettingsArgs.builder()\n .integrationType(\"SCORE\")\n .allowAllDomains(true)\n .build())\n .labels()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n project: my-project-name\n webSettings:\n integrationType: SCORE\n allowAllDomains: true\n labels: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Waf_key\nA basic test of recaptcha enterprise key that includes WAF settings\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n project: \"my-project-name\",\n testingOptions: {\n testingChallenge: \"NOCAPTCHA\",\n testingScore: 0.5,\n },\n wafSettings: {\n wafFeature: \"CHALLENGE_PAGE\",\n wafService: \"CA\",\n },\n webSettings: {\n integrationType: \"INVISIBLE\",\n allowAllDomains: true,\n allowedDomains: [],\n challengeSecurityPreference: \"USABILITY\",\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n project=\"my-project-name\",\n testing_options={\n \"testing_challenge\": \"NOCAPTCHA\",\n \"testing_score\": 0.5,\n },\n waf_settings={\n \"waf_feature\": \"CHALLENGE_PAGE\",\n \"waf_service\": \"CA\",\n },\n web_settings={\n \"integration_type\": \"INVISIBLE\",\n \"allow_all_domains\": True,\n \"allowed_domains\": [],\n \"challenge_security_preference\": \"USABILITY\",\n },\n labels={\n \"label-one\": \"value-one\",\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 primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingChallenge = \"NOCAPTCHA\",\n TestingScore = 0.5,\n },\n WafSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWafSettingsArgs\n {\n WafFeature = \"CHALLENGE_PAGE\",\n WafService = \"CA\",\n },\n WebSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWebSettingsArgs\n {\n IntegrationType = \"INVISIBLE\",\n AllowAllDomains = true,\n AllowedDomains = new() { },\n ChallengeSecurityPreference = \"USABILITY\",\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/recaptcha\"\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 := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingChallenge: pulumi.String(\"NOCAPTCHA\"),\n\t\t\t\tTestingScore: pulumi.Float64(0.5),\n\t\t\t},\n\t\t\tWafSettings: \u0026recaptcha.EnterpriseKeyWafSettingsArgs{\n\t\t\t\tWafFeature: pulumi.String(\"CHALLENGE_PAGE\"),\n\t\t\t\tWafService: pulumi.String(\"CA\"),\n\t\t\t},\n\t\t\tWebSettings: \u0026recaptcha.EnterpriseKeyWebSettingsArgs{\n\t\t\t\tIntegrationType: pulumi.String(\"INVISIBLE\"),\n\t\t\t\tAllowAllDomains: pulumi.Bool(true),\n\t\t\t\tAllowedDomains: pulumi.StringArray{},\n\t\t\t\tChallengeSecurityPreference: pulumi.String(\"USABILITY\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\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.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWafSettingsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWebSettingsArgs;\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 primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingChallenge(\"NOCAPTCHA\")\n .testingScore(0.5)\n .build())\n .wafSettings(EnterpriseKeyWafSettingsArgs.builder()\n .wafFeature(\"CHALLENGE_PAGE\")\n .wafService(\"CA\")\n .build())\n .webSettings(EnterpriseKeyWebSettingsArgs.builder()\n .integrationType(\"INVISIBLE\")\n .allowAllDomains(true)\n .allowedDomains()\n .challengeSecurityPreference(\"USABILITY\")\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n project: my-project-name\n testingOptions:\n testingChallenge: NOCAPTCHA\n testingScore: 0.5\n wafSettings:\n wafFeature: CHALLENGE_PAGE\n wafService: CA\n webSettings:\n integrationType: INVISIBLE\n allowAllDomains: true\n allowedDomains: []\n challengeSecurityPreference: USABILITY\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Web_key\nA basic test of recaptcha enterprise key that can be used by websites\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n project: \"my-project-name\",\n testingOptions: {\n testingChallenge: \"NOCAPTCHA\",\n testingScore: 0.5,\n },\n webSettings: {\n integrationType: \"CHECKBOX\",\n allowAllDomains: true,\n allowedDomains: [],\n challengeSecurityPreference: \"USABILITY\",\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n project=\"my-project-name\",\n testing_options={\n \"testing_challenge\": \"NOCAPTCHA\",\n \"testing_score\": 0.5,\n },\n web_settings={\n \"integration_type\": \"CHECKBOX\",\n \"allow_all_domains\": True,\n \"allowed_domains\": [],\n \"challenge_security_preference\": \"USABILITY\",\n },\n labels={\n \"label-one\": \"value-one\",\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 primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingChallenge = \"NOCAPTCHA\",\n TestingScore = 0.5,\n },\n WebSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWebSettingsArgs\n {\n IntegrationType = \"CHECKBOX\",\n AllowAllDomains = true,\n AllowedDomains = new() { },\n ChallengeSecurityPreference = \"USABILITY\",\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/recaptcha\"\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 := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingChallenge: pulumi.String(\"NOCAPTCHA\"),\n\t\t\t\tTestingScore: pulumi.Float64(0.5),\n\t\t\t},\n\t\t\tWebSettings: \u0026recaptcha.EnterpriseKeyWebSettingsArgs{\n\t\t\t\tIntegrationType: pulumi.String(\"CHECKBOX\"),\n\t\t\t\tAllowAllDomains: pulumi.Bool(true),\n\t\t\t\tAllowedDomains: pulumi.StringArray{},\n\t\t\t\tChallengeSecurityPreference: pulumi.String(\"USABILITY\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\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.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWebSettingsArgs;\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 primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingChallenge(\"NOCAPTCHA\")\n .testingScore(0.5)\n .build())\n .webSettings(EnterpriseKeyWebSettingsArgs.builder()\n .integrationType(\"CHECKBOX\")\n .allowAllDomains(true)\n .allowedDomains()\n .challengeSecurityPreference(\"USABILITY\")\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n project: my-project-name\n testingOptions:\n testingChallenge: NOCAPTCHA\n testingScore: 0.5\n webSettings:\n integrationType: CHECKBOX\n allowAllDomains: true\n allowedDomains: []\n challengeSecurityPreference: USABILITY\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Web_score_key\nA basic test of recaptcha enterprise key with score integration type that can be used by websites\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n project: \"my-project-name\",\n testingOptions: {\n testingScore: 0.5,\n },\n webSettings: {\n integrationType: \"SCORE\",\n allowAllDomains: true,\n allowAmpTraffic: false,\n allowedDomains: [],\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n project=\"my-project-name\",\n testing_options={\n \"testing_score\": 0.5,\n },\n web_settings={\n \"integration_type\": \"SCORE\",\n \"allow_all_domains\": True,\n \"allow_amp_traffic\": False,\n \"allowed_domains\": [],\n },\n labels={\n \"label-one\": \"value-one\",\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 primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingScore = 0.5,\n },\n WebSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWebSettingsArgs\n {\n IntegrationType = \"SCORE\",\n AllowAllDomains = true,\n AllowAmpTraffic = false,\n AllowedDomains = new() { },\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/recaptcha\"\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 := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingScore: pulumi.Float64(0.5),\n\t\t\t},\n\t\t\tWebSettings: \u0026recaptcha.EnterpriseKeyWebSettingsArgs{\n\t\t\t\tIntegrationType: pulumi.String(\"SCORE\"),\n\t\t\t\tAllowAllDomains: pulumi.Bool(true),\n\t\t\t\tAllowAmpTraffic: pulumi.Bool(false),\n\t\t\t\tAllowedDomains: pulumi.StringArray{},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\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.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWebSettingsArgs;\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 primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingScore(0.5)\n .build())\n .webSettings(EnterpriseKeyWebSettingsArgs.builder()\n .integrationType(\"SCORE\")\n .allowAllDomains(true)\n .allowAmpTraffic(false)\n .allowedDomains()\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n project: my-project-name\n testingOptions:\n testingScore: 0.5\n webSettings:\n integrationType: SCORE\n allowAllDomains: true\n allowAmpTraffic: false\n allowedDomains: []\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nKey can be imported using any of these accepted formats:\n\n* `projects/{{project}}/keys/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Key can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:recaptcha/enterpriseKey:EnterpriseKey default projects/{{project}}/keys/{{name}}\n```\n\n```sh\n$ pulumi import gcp:recaptcha/enterpriseKey:EnterpriseKey default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:recaptcha/enterpriseKey:EnterpriseKey default {{name}}\n```\n\n", "properties": { "androidSettings": { "$ref": "#/types/gcp:recaptcha/EnterpriseKeyAndroidSettings:EnterpriseKeyAndroidSettings", @@ -230035,7 +230035,7 @@ } }, "gcp:redis/instance:Instance": { - "description": "A Google Cloud Redis instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/memorystore/docs/redis/reference/rest/v1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/memorystore/docs/redis/)\n\n## Example Usage\n\n### Redis Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"memory-cache\",\n memorySizeGb: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncache = gcp.redis.Instance(\"cache\",\n name=\"memory-cache\",\n memory_size_gb=1)\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 cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"memory-cache\",\n MemorySizeGb = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/redis\"\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 := redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"memory-cache\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\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.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\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 cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"memory-cache\")\n .memorySizeGb(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:redis:Instance\n properties:\n name: memory-cache\n memorySizeGb: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example assumes this network already exists.\n// The API creates a tenant network per network authorized for a\n// Redis instance and that network is not deleted when the user-created\n// network (authorized_network) is deleted, so this prevents issues\n// with tenant network quota.\n// If this network hasn't been created and you are using this example in your\n// config, add an additional network resource or change\n// this from \"data\"to \"resource\"\nconst redis-network = gcp.compute.getNetwork({\n name: \"redis-test-network\",\n});\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"ha-memory-cache\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 1,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n authorizedNetwork: redis_network.then(redis_network =\u003e redis_network.id),\n redisVersion: \"REDIS_4_0\",\n displayName: \"Test Instance\",\n reservedIpRange: \"192.168.0.0/29\",\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n maintenancePolicy: {\n weeklyMaintenanceWindows: [{\n day: \"TUESDAY\",\n startTime: {\n hours: 0,\n minutes: 30,\n seconds: 0,\n nanos: 0,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example assumes this network already exists.\n# The API creates a tenant network per network authorized for a\n# Redis instance and that network is not deleted when the user-created\n# network (authorized_network) is deleted, so this prevents issues\n# with tenant network quota.\n# If this network hasn't been created and you are using this example in your\n# config, add an additional network resource or change\n# this from \"data\"to \"resource\"\nredis_network = gcp.compute.get_network(name=\"redis-test-network\")\ncache = gcp.redis.Instance(\"cache\",\n name=\"ha-memory-cache\",\n tier=\"STANDARD_HA\",\n memory_size_gb=1,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n authorized_network=redis_network.id,\n redis_version=\"REDIS_4_0\",\n display_name=\"Test Instance\",\n reserved_ip_range=\"192.168.0.0/29\",\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\n },\n maintenance_policy={\n \"weeklyMaintenanceWindows\": [{\n \"day\": \"TUESDAY\",\n \"startTime\": {\n \"hours\": 0,\n \"minutes\": 30,\n \"seconds\": 0,\n \"nanos\": 0,\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 // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"redis-test-network\",\n });\n\n var cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"ha-memory-cache\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 1,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n AuthorizedNetwork = redis_network.Apply(redis_network =\u003e redis_network.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n RedisVersion = \"REDIS_4_0\",\n DisplayName = \"Test Instance\",\n ReservedIpRange = \"192.168.0.0/29\",\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n MaintenancePolicy = new Gcp.Redis.Inputs.InstanceMaintenancePolicyArgs\n {\n WeeklyMaintenanceWindows = new[]\n {\n new Gcp.Redis.Inputs.InstanceMaintenancePolicyWeeklyMaintenanceWindowArgs\n {\n Day = \"TUESDAY\",\n StartTime = new Gcp.Redis.Inputs.InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs\n {\n Hours = 0,\n Minutes = 30,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/redis\"\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// This example assumes this network already exists.\n\t\t// The API creates a tenant network per network authorized for a\n\t\t// Redis instance and that network is not deleted when the user-created\n\t\t// network (authorized_network) is deleted, so this prevents issues\n\t\t// with tenant network quota.\n\t\t// If this network hasn't been created and you are using this example in your\n\t\t// config, add an additional network resource or change\n\t\t// this from \"data\"to \"resource\"\n\t\tredis_network, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"redis-test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"ha-memory-cache\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tAuthorizedNetwork: pulumi.String(redis_network.Id),\n\t\t\tRedisVersion: pulumi.String(\"REDIS_4_0\"),\n\t\t\tDisplayName: pulumi.String(\"Test Instance\"),\n\t\t\tReservedIpRange: pulumi.String(\"192.168.0.0/29\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\n\t\t\t},\n\t\t\tMaintenancePolicy: \u0026redis.InstanceMaintenancePolicyArgs{\n\t\t\t\tWeeklyMaintenanceWindows: redis.InstanceMaintenancePolicyWeeklyMaintenanceWindowArray{\n\t\t\t\t\t\u0026redis.InstanceMaintenancePolicyWeeklyMaintenanceWindowArgs{\n\t\t\t\t\t\tDay: pulumi.String(\"TUESDAY\"),\n\t\t\t\t\t\tStartTime: \u0026redis.InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\t\t\tNanos: pulumi.Int(0),\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.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\nimport com.pulumi.gcp.redis.inputs.InstanceMaintenancePolicyArgs;\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 // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n final var redis-network = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"redis-test-network\")\n .build());\n\n var cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"ha-memory-cache\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(1)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .authorizedNetwork(redis_network.id())\n .redisVersion(\"REDIS_4_0\")\n .displayName(\"Test Instance\")\n .reservedIpRange(\"192.168.0.0/29\")\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .maintenancePolicy(InstanceMaintenancePolicyArgs.builder()\n .weeklyMaintenanceWindows(InstanceMaintenancePolicyWeeklyMaintenanceWindowArgs.builder()\n .day(\"TUESDAY\")\n .startTime(InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs.builder()\n .hours(0)\n .minutes(30)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:redis:Instance\n properties:\n name: ha-memory-cache\n tier: STANDARD_HA\n memorySizeGb: 1\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n authorizedNetwork: ${[\"redis-network\"].id}\n redisVersion: REDIS_4_0\n displayName: Test Instance\n reservedIpRange: 192.168.0.0/29\n labels:\n my_key: my_val\n other_key: other_val\n maintenancePolicy:\n weeklyMaintenanceWindows:\n - day: TUESDAY\n startTime:\n hours: 0\n minutes: 30\n seconds: 0\n nanos: 0\nvariables:\n # This example assumes this network already exists.\n # // The API creates a tenant network per network authorized for a\n # // Redis instance and that network is not deleted when the user-created\n # // network (authorized_network) is deleted, so this prevents issues\n # // with tenant network quota.\n # // If this network hasn't been created and you are using this example in your\n # // config, add an additional network resource or change\n # // this from \"data\"to \"resource\"\n redis-network:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: redis-test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Full With Persistence Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cache_persis = new gcp.redis.Instance(\"cache-persis\", {\n name: \"ha-memory-cache-persis\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 1,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n persistenceConfig: {\n persistenceMode: \"RDB\",\n rdbSnapshotPeriod: \"TWELVE_HOURS\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncache_persis = gcp.redis.Instance(\"cache-persis\",\n name=\"ha-memory-cache-persis\",\n tier=\"STANDARD_HA\",\n memory_size_gb=1,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n persistence_config={\n \"persistenceMode\": \"RDB\",\n \"rdbSnapshotPeriod\": \"TWELVE_HOURS\",\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 cache_persis = new Gcp.Redis.Instance(\"cache-persis\", new()\n {\n Name = \"ha-memory-cache-persis\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 1,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n PersistenceConfig = new Gcp.Redis.Inputs.InstancePersistenceConfigArgs\n {\n PersistenceMode = \"RDB\",\n RdbSnapshotPeriod = \"TWELVE_HOURS\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/redis\"\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 := redis.NewInstance(ctx, \"cache-persis\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"ha-memory-cache-persis\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tPersistenceConfig: \u0026redis.InstancePersistenceConfigArgs{\n\t\t\t\tPersistenceMode: pulumi.String(\"RDB\"),\n\t\t\t\tRdbSnapshotPeriod: pulumi.String(\"TWELVE_HOURS\"),\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.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\nimport com.pulumi.gcp.redis.inputs.InstancePersistenceConfigArgs;\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 cache_persis = new Instance(\"cache-persis\", InstanceArgs.builder()\n .name(\"ha-memory-cache-persis\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(1)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .persistenceConfig(InstancePersistenceConfigArgs.builder()\n .persistenceMode(\"RDB\")\n .rdbSnapshotPeriod(\"TWELVE_HOURS\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache-persis:\n type: gcp:redis:Instance\n properties:\n name: ha-memory-cache-persis\n tier: STANDARD_HA\n memorySizeGb: 1\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n persistenceConfig:\n persistenceMode: RDB\n rdbSnapshotPeriod: TWELVE_HOURS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Private Service\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example assumes this network already exists.\n// The API creates a tenant network per network authorized for a\n// Redis instance and that network is not deleted when the user-created\n// network (authorized_network) is deleted, so this prevents issues\n// with tenant network quota.\n// If this network hasn't been created and you are using this example in your\n// config, add an additional network resource or change\n// this from \"data\"to \"resource\"\nconst redis_network = new gcp.compute.Network(\"redis-network\", {name: \"redis-test-network\"});\nconst serviceRange = new gcp.compute.GlobalAddress(\"service_range\", {\n name: \"address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: redis_network.id,\n});\nconst privateServiceConnection = new gcp.servicenetworking.Connection(\"private_service_connection\", {\n network: redis_network.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [serviceRange.name],\n});\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"private-cache\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 1,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n authorizedNetwork: redis_network.id,\n connectMode: \"PRIVATE_SERVICE_ACCESS\",\n redisVersion: \"REDIS_4_0\",\n displayName: \"Test Instance\",\n}, {\n dependsOn: [privateServiceConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example assumes this network already exists.\n# The API creates a tenant network per network authorized for a\n# Redis instance and that network is not deleted when the user-created\n# network (authorized_network) is deleted, so this prevents issues\n# with tenant network quota.\n# If this network hasn't been created and you are using this example in your\n# config, add an additional network resource or change\n# this from \"data\"to \"resource\"\nredis_network = gcp.compute.Network(\"redis-network\", name=\"redis-test-network\")\nservice_range = gcp.compute.GlobalAddress(\"service_range\",\n name=\"address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=redis_network.id)\nprivate_service_connection = gcp.servicenetworking.Connection(\"private_service_connection\",\n network=redis_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[service_range.name])\ncache = gcp.redis.Instance(\"cache\",\n name=\"private-cache\",\n tier=\"STANDARD_HA\",\n memory_size_gb=1,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n authorized_network=redis_network.id,\n connect_mode=\"PRIVATE_SERVICE_ACCESS\",\n redis_version=\"REDIS_4_0\",\n display_name=\"Test Instance\",\n opts = pulumi.ResourceOptions(depends_on=[private_service_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 // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = new Gcp.Compute.Network(\"redis-network\", new()\n {\n Name = \"redis-test-network\",\n });\n\n var serviceRange = new Gcp.Compute.GlobalAddress(\"service_range\", new()\n {\n Name = \"address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = redis_network.Id,\n });\n\n var privateServiceConnection = new Gcp.ServiceNetworking.Connection(\"private_service_connection\", new()\n {\n Network = redis_network.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n serviceRange.Name,\n },\n });\n\n var cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"private-cache\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 1,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n AuthorizedNetwork = redis_network.Id,\n ConnectMode = \"PRIVATE_SERVICE_ACCESS\",\n RedisVersion = \"REDIS_4_0\",\n DisplayName = \"Test Instance\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n privateServiceConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t// This example assumes this network already exists.\n\t\t// The API creates a tenant network per network authorized for a\n\t\t// Redis instance and that network is not deleted when the user-created\n\t\t// network (authorized_network) is deleted, so this prevents issues\n\t\t// with tenant network quota.\n\t\t// If this network hasn't been created and you are using this example in your\n\t\t// config, add an additional network resource or change\n\t\t// this from \"data\"to \"resource\"\n\t\t_, err := compute.NewNetwork(ctx, \"redis-network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"redis-test-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceRange, err := compute.NewGlobalAddress(ctx, \"service_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: redis_network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateServiceConnection, err := servicenetworking.NewConnection(ctx, \"private_service_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: redis_network.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tserviceRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"private-cache\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tAuthorizedNetwork: redis_network.ID(),\n\t\t\tConnectMode: pulumi.String(\"PRIVATE_SERVICE_ACCESS\"),\n\t\t\tRedisVersion: pulumi.String(\"REDIS_4_0\"),\n\t\t\tDisplayName: pulumi.String(\"Test Instance\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprivateServiceConnection,\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.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\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 // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = new Network(\"redis-network\", NetworkArgs.builder()\n .name(\"redis-test-network\")\n .build());\n\n var serviceRange = new GlobalAddress(\"serviceRange\", GlobalAddressArgs.builder()\n .name(\"address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(redis_network.id())\n .build());\n\n var privateServiceConnection = new Connection(\"privateServiceConnection\", ConnectionArgs.builder()\n .network(redis_network.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(serviceRange.name())\n .build());\n\n var cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"private-cache\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(1)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .authorizedNetwork(redis_network.id())\n .connectMode(\"PRIVATE_SERVICE_ACCESS\")\n .redisVersion(\"REDIS_4_0\")\n .displayName(\"Test Instance\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(privateServiceConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # This example assumes this network already exists.\n # // The API creates a tenant network per network authorized for a\n # // Redis instance and that network is not deleted when the user-created\n # // network (authorized_network) is deleted, so this prevents issues\n # // with tenant network quota.\n # // If this network hasn't been created and you are using this example in your\n # // config, add an additional network resource or change\n # // this from \"data\"to \"resource\"\n redis-network:\n type: gcp:compute:Network\n properties:\n name: redis-test-network\n serviceRange:\n type: gcp:compute:GlobalAddress\n name: service_range\n properties:\n name: address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${[\"redis-network\"].id}\n privateServiceConnection:\n type: gcp:servicenetworking:Connection\n name: private_service_connection\n properties:\n network: ${[\"redis-network\"].id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${serviceRange.name}\n cache:\n type: gcp:redis:Instance\n properties:\n name: private-cache\n tier: STANDARD_HA\n memorySizeGb: 1\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n authorizedNetwork: ${[\"redis-network\"].id}\n connectMode: PRIVATE_SERVICE_ACCESS\n redisVersion: REDIS_4_0\n displayName: Test Instance\n options:\n dependson:\n - ${privateServiceConnection}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Mrr\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example assumes this network already exists.\n// The API creates a tenant network per network authorized for a\n// Redis instance and that network is not deleted when the user-created\n// network (authorized_network) is deleted, so this prevents issues\n// with tenant network quota.\n// If this network hasn't been created and you are using this example in your\n// config, add an additional network resource or change\n// this from \"data\"to \"resource\"\nconst redis-network = gcp.compute.getNetwork({\n name: \"redis-test-network\",\n});\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"mrr-memory-cache\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 5,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n authorizedNetwork: redis_network.then(redis_network =\u003e redis_network.id),\n redisVersion: \"REDIS_6_X\",\n displayName: \"Terraform Test Instance\",\n reservedIpRange: \"192.168.0.0/28\",\n replicaCount: 5,\n readReplicasMode: \"READ_REPLICAS_ENABLED\",\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example assumes this network already exists.\n# The API creates a tenant network per network authorized for a\n# Redis instance and that network is not deleted when the user-created\n# network (authorized_network) is deleted, so this prevents issues\n# with tenant network quota.\n# If this network hasn't been created and you are using this example in your\n# config, add an additional network resource or change\n# this from \"data\"to \"resource\"\nredis_network = gcp.compute.get_network(name=\"redis-test-network\")\ncache = gcp.redis.Instance(\"cache\",\n name=\"mrr-memory-cache\",\n tier=\"STANDARD_HA\",\n memory_size_gb=5,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n authorized_network=redis_network.id,\n redis_version=\"REDIS_6_X\",\n display_name=\"Terraform Test Instance\",\n reserved_ip_range=\"192.168.0.0/28\",\n replica_count=5,\n read_replicas_mode=\"READ_REPLICAS_ENABLED\",\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\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 // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"redis-test-network\",\n });\n\n var cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"mrr-memory-cache\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 5,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n AuthorizedNetwork = redis_network.Apply(redis_network =\u003e redis_network.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n RedisVersion = \"REDIS_6_X\",\n DisplayName = \"Terraform Test Instance\",\n ReservedIpRange = \"192.168.0.0/28\",\n ReplicaCount = 5,\n ReadReplicasMode = \"READ_REPLICAS_ENABLED\",\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/redis\"\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// This example assumes this network already exists.\n\t\t// The API creates a tenant network per network authorized for a\n\t\t// Redis instance and that network is not deleted when the user-created\n\t\t// network (authorized_network) is deleted, so this prevents issues\n\t\t// with tenant network quota.\n\t\t// If this network hasn't been created and you are using this example in your\n\t\t// config, add an additional network resource or change\n\t\t// this from \"data\"to \"resource\"\n\t\tredis_network, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"redis-test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"mrr-memory-cache\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(5),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tAuthorizedNetwork: pulumi.String(redis_network.Id),\n\t\t\tRedisVersion: pulumi.String(\"REDIS_6_X\"),\n\t\t\tDisplayName: pulumi.String(\"Terraform Test Instance\"),\n\t\t\tReservedIpRange: pulumi.String(\"192.168.0.0/28\"),\n\t\t\tReplicaCount: pulumi.Int(5),\n\t\t\tReadReplicasMode: pulumi.String(\"READ_REPLICAS_ENABLED\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\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 // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n final var redis-network = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"redis-test-network\")\n .build());\n\n var cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"mrr-memory-cache\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(5)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .authorizedNetwork(redis_network.id())\n .redisVersion(\"REDIS_6_X\")\n .displayName(\"Terraform Test Instance\")\n .reservedIpRange(\"192.168.0.0/28\")\n .replicaCount(5)\n .readReplicasMode(\"READ_REPLICAS_ENABLED\")\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:redis:Instance\n properties:\n name: mrr-memory-cache\n tier: STANDARD_HA\n memorySizeGb: 5\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n authorizedNetwork: ${[\"redis-network\"].id}\n redisVersion: REDIS_6_X\n displayName: Terraform Test Instance\n reservedIpRange: 192.168.0.0/28\n replicaCount: 5\n readReplicasMode: READ_REPLICAS_ENABLED\n labels:\n my_key: my_val\n other_key: other_val\nvariables:\n # This example assumes this network already exists.\n # // The API creates a tenant network per network authorized for a\n # // Redis instance and that network is not deleted when the user-created\n # // network (authorized_network) is deleted, so this prevents issues\n # // with tenant network quota.\n # // If this network hasn't been created and you are using this example in your\n # // config, add an additional network resource or change\n # // this from \"data\"to \"resource\"\n redis-network:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: redis-test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst redisKeyring = new gcp.kms.KeyRing(\"redis_keyring\", {\n name: \"redis-keyring\",\n location: \"us-central1\",\n});\nconst redisKey = new gcp.kms.CryptoKey(\"redis_key\", {\n name: \"redis-key\",\n keyRing: redisKeyring.id,\n});\n// This example assumes this network already exists.\n// The API creates a tenant network per network authorized for a\n// Redis instance and that network is not deleted when the user-created\n// network (authorized_network) is deleted, so this prevents issues\n// with tenant network quota.\n// If this network hasn't been created and you are using this example in your\n// config, add an additional network resource or change\n// this from \"data\"to \"resource\"\nconst redis-network = gcp.compute.getNetwork({\n name: \"redis-test-network\",\n});\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"cmek-memory-cache\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 1,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n authorizedNetwork: redis_network.then(redis_network =\u003e redis_network.id),\n redisVersion: \"REDIS_6_X\",\n displayName: \"Terraform Test Instance\",\n reservedIpRange: \"192.168.0.0/29\",\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n customerManagedKey: redisKey.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nredis_keyring = gcp.kms.KeyRing(\"redis_keyring\",\n name=\"redis-keyring\",\n location=\"us-central1\")\nredis_key = gcp.kms.CryptoKey(\"redis_key\",\n name=\"redis-key\",\n key_ring=redis_keyring.id)\n# This example assumes this network already exists.\n# The API creates a tenant network per network authorized for a\n# Redis instance and that network is not deleted when the user-created\n# network (authorized_network) is deleted, so this prevents issues\n# with tenant network quota.\n# If this network hasn't been created and you are using this example in your\n# config, add an additional network resource or change\n# this from \"data\"to \"resource\"\nredis_network = gcp.compute.get_network(name=\"redis-test-network\")\ncache = gcp.redis.Instance(\"cache\",\n name=\"cmek-memory-cache\",\n tier=\"STANDARD_HA\",\n memory_size_gb=1,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n authorized_network=redis_network.id,\n redis_version=\"REDIS_6_X\",\n display_name=\"Terraform Test Instance\",\n reserved_ip_range=\"192.168.0.0/29\",\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\n },\n customer_managed_key=redis_key.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 redisKeyring = new Gcp.Kms.KeyRing(\"redis_keyring\", new()\n {\n Name = \"redis-keyring\",\n Location = \"us-central1\",\n });\n\n var redisKey = new Gcp.Kms.CryptoKey(\"redis_key\", new()\n {\n Name = \"redis-key\",\n KeyRing = redisKeyring.Id,\n });\n\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"redis-test-network\",\n });\n\n var cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"cmek-memory-cache\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 1,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n AuthorizedNetwork = redis_network.Apply(redis_network =\u003e redis_network.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n RedisVersion = \"REDIS_6_X\",\n DisplayName = \"Terraform Test Instance\",\n ReservedIpRange = \"192.168.0.0/29\",\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n CustomerManagedKey = redisKey.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tredisKeyring, err := kms.NewKeyRing(ctx, \"redis_keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"redis-keyring\"),\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\tredisKey, err := kms.NewCryptoKey(ctx, \"redis_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"redis-key\"),\n\t\t\tKeyRing: redisKeyring.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// This example assumes this network already exists.\n\t\t// The API creates a tenant network per network authorized for a\n\t\t// Redis instance and that network is not deleted when the user-created\n\t\t// network (authorized_network) is deleted, so this prevents issues\n\t\t// with tenant network quota.\n\t\t// If this network hasn't been created and you are using this example in your\n\t\t// config, add an additional network resource or change\n\t\t// this from \"data\"to \"resource\"\n\t\tredis_network, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"redis-test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"cmek-memory-cache\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tAuthorizedNetwork: pulumi.String(redis_network.Id),\n\t\t\tRedisVersion: pulumi.String(\"REDIS_6_X\"),\n\t\t\tDisplayName: pulumi.String(\"Terraform Test Instance\"),\n\t\t\tReservedIpRange: pulumi.String(\"192.168.0.0/29\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\n\t\t\t},\n\t\t\tCustomerManagedKey: redisKey.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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\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 redisKeyring = new KeyRing(\"redisKeyring\", KeyRingArgs.builder()\n .name(\"redis-keyring\")\n .location(\"us-central1\")\n .build());\n\n var redisKey = new CryptoKey(\"redisKey\", CryptoKeyArgs.builder()\n .name(\"redis-key\")\n .keyRing(redisKeyring.id())\n .build());\n\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n final var redis-network = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"redis-test-network\")\n .build());\n\n var cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"cmek-memory-cache\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(1)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .authorizedNetwork(redis_network.id())\n .redisVersion(\"REDIS_6_X\")\n .displayName(\"Terraform Test Instance\")\n .reservedIpRange(\"192.168.0.0/29\")\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .customerManagedKey(redisKey.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:redis:Instance\n properties:\n name: cmek-memory-cache\n tier: STANDARD_HA\n memorySizeGb: 1\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n authorizedNetwork: ${[\"redis-network\"].id}\n redisVersion: REDIS_6_X\n displayName: Terraform Test Instance\n reservedIpRange: 192.168.0.0/29\n labels:\n my_key: my_val\n other_key: other_val\n customerManagedKey: ${redisKey.id}\n redisKeyring:\n type: gcp:kms:KeyRing\n name: redis_keyring\n properties:\n name: redis-keyring\n location: us-central1\n redisKey:\n type: gcp:kms:CryptoKey\n name: redis_key\n properties:\n name: redis-key\n keyRing: ${redisKeyring.id}\nvariables:\n # This example assumes this network already exists.\n # // The API creates a tenant network per network authorized for a\n # // Redis instance and that network is not deleted when the user-created\n # // network (authorized_network) is deleted, so this prevents issues\n # // with tenant network quota.\n # // If this network hasn't been created and you are using this example in your\n # // config, add an additional network resource or change\n # // this from \"data\"to \"resource\"\n redis-network:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: redis-test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:redis/instance:Instance default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/instance:Instance default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/instance:Instance default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/instance:Instance default {{name}}\n```\n\n", + "description": "A Google Cloud Redis instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/memorystore/docs/redis/reference/rest/v1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/memorystore/docs/redis/)\n\n## Example Usage\n\n### Redis Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"memory-cache\",\n memorySizeGb: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncache = gcp.redis.Instance(\"cache\",\n name=\"memory-cache\",\n memory_size_gb=1)\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 cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"memory-cache\",\n MemorySizeGb = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/redis\"\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 := redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"memory-cache\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\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.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\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 cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"memory-cache\")\n .memorySizeGb(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:redis:Instance\n properties:\n name: memory-cache\n memorySizeGb: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example assumes this network already exists.\n// The API creates a tenant network per network authorized for a\n// Redis instance and that network is not deleted when the user-created\n// network (authorized_network) is deleted, so this prevents issues\n// with tenant network quota.\n// If this network hasn't been created and you are using this example in your\n// config, add an additional network resource or change\n// this from \"data\"to \"resource\"\nconst redis-network = gcp.compute.getNetwork({\n name: \"redis-test-network\",\n});\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"ha-memory-cache\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 1,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n authorizedNetwork: redis_network.then(redis_network =\u003e redis_network.id),\n redisVersion: \"REDIS_4_0\",\n displayName: \"Test Instance\",\n reservedIpRange: \"192.168.0.0/29\",\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n maintenancePolicy: {\n weeklyMaintenanceWindows: [{\n day: \"TUESDAY\",\n startTime: {\n hours: 0,\n minutes: 30,\n seconds: 0,\n nanos: 0,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example assumes this network already exists.\n# The API creates a tenant network per network authorized for a\n# Redis instance and that network is not deleted when the user-created\n# network (authorized_network) is deleted, so this prevents issues\n# with tenant network quota.\n# If this network hasn't been created and you are using this example in your\n# config, add an additional network resource or change\n# this from \"data\"to \"resource\"\nredis_network = gcp.compute.get_network(name=\"redis-test-network\")\ncache = gcp.redis.Instance(\"cache\",\n name=\"ha-memory-cache\",\n tier=\"STANDARD_HA\",\n memory_size_gb=1,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n authorized_network=redis_network.id,\n redis_version=\"REDIS_4_0\",\n display_name=\"Test Instance\",\n reserved_ip_range=\"192.168.0.0/29\",\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\n },\n maintenance_policy={\n \"weekly_maintenance_windows\": [{\n \"day\": \"TUESDAY\",\n \"start_time\": {\n \"hours\": 0,\n \"minutes\": 30,\n \"seconds\": 0,\n \"nanos\": 0,\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 // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"redis-test-network\",\n });\n\n var cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"ha-memory-cache\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 1,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n AuthorizedNetwork = redis_network.Apply(redis_network =\u003e redis_network.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n RedisVersion = \"REDIS_4_0\",\n DisplayName = \"Test Instance\",\n ReservedIpRange = \"192.168.0.0/29\",\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n MaintenancePolicy = new Gcp.Redis.Inputs.InstanceMaintenancePolicyArgs\n {\n WeeklyMaintenanceWindows = new[]\n {\n new Gcp.Redis.Inputs.InstanceMaintenancePolicyWeeklyMaintenanceWindowArgs\n {\n Day = \"TUESDAY\",\n StartTime = new Gcp.Redis.Inputs.InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs\n {\n Hours = 0,\n Minutes = 30,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/redis\"\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// This example assumes this network already exists.\n\t\t// The API creates a tenant network per network authorized for a\n\t\t// Redis instance and that network is not deleted when the user-created\n\t\t// network (authorized_network) is deleted, so this prevents issues\n\t\t// with tenant network quota.\n\t\t// If this network hasn't been created and you are using this example in your\n\t\t// config, add an additional network resource or change\n\t\t// this from \"data\"to \"resource\"\n\t\tredis_network, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"redis-test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"ha-memory-cache\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tAuthorizedNetwork: pulumi.String(redis_network.Id),\n\t\t\tRedisVersion: pulumi.String(\"REDIS_4_0\"),\n\t\t\tDisplayName: pulumi.String(\"Test Instance\"),\n\t\t\tReservedIpRange: pulumi.String(\"192.168.0.0/29\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\n\t\t\t},\n\t\t\tMaintenancePolicy: \u0026redis.InstanceMaintenancePolicyArgs{\n\t\t\t\tWeeklyMaintenanceWindows: redis.InstanceMaintenancePolicyWeeklyMaintenanceWindowArray{\n\t\t\t\t\t\u0026redis.InstanceMaintenancePolicyWeeklyMaintenanceWindowArgs{\n\t\t\t\t\t\tDay: pulumi.String(\"TUESDAY\"),\n\t\t\t\t\t\tStartTime: \u0026redis.InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\t\t\tNanos: pulumi.Int(0),\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.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\nimport com.pulumi.gcp.redis.inputs.InstanceMaintenancePolicyArgs;\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 // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n final var redis-network = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"redis-test-network\")\n .build());\n\n var cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"ha-memory-cache\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(1)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .authorizedNetwork(redis_network.id())\n .redisVersion(\"REDIS_4_0\")\n .displayName(\"Test Instance\")\n .reservedIpRange(\"192.168.0.0/29\")\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .maintenancePolicy(InstanceMaintenancePolicyArgs.builder()\n .weeklyMaintenanceWindows(InstanceMaintenancePolicyWeeklyMaintenanceWindowArgs.builder()\n .day(\"TUESDAY\")\n .startTime(InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs.builder()\n .hours(0)\n .minutes(30)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:redis:Instance\n properties:\n name: ha-memory-cache\n tier: STANDARD_HA\n memorySizeGb: 1\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n authorizedNetwork: ${[\"redis-network\"].id}\n redisVersion: REDIS_4_0\n displayName: Test Instance\n reservedIpRange: 192.168.0.0/29\n labels:\n my_key: my_val\n other_key: other_val\n maintenancePolicy:\n weeklyMaintenanceWindows:\n - day: TUESDAY\n startTime:\n hours: 0\n minutes: 30\n seconds: 0\n nanos: 0\nvariables:\n # This example assumes this network already exists.\n # // The API creates a tenant network per network authorized for a\n # // Redis instance and that network is not deleted when the user-created\n # // network (authorized_network) is deleted, so this prevents issues\n # // with tenant network quota.\n # // If this network hasn't been created and you are using this example in your\n # // config, add an additional network resource or change\n # // this from \"data\"to \"resource\"\n redis-network:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: redis-test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Full With Persistence Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cache_persis = new gcp.redis.Instance(\"cache-persis\", {\n name: \"ha-memory-cache-persis\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 1,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n persistenceConfig: {\n persistenceMode: \"RDB\",\n rdbSnapshotPeriod: \"TWELVE_HOURS\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncache_persis = gcp.redis.Instance(\"cache-persis\",\n name=\"ha-memory-cache-persis\",\n tier=\"STANDARD_HA\",\n memory_size_gb=1,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n persistence_config={\n \"persistence_mode\": \"RDB\",\n \"rdb_snapshot_period\": \"TWELVE_HOURS\",\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 cache_persis = new Gcp.Redis.Instance(\"cache-persis\", new()\n {\n Name = \"ha-memory-cache-persis\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 1,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n PersistenceConfig = new Gcp.Redis.Inputs.InstancePersistenceConfigArgs\n {\n PersistenceMode = \"RDB\",\n RdbSnapshotPeriod = \"TWELVE_HOURS\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/redis\"\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 := redis.NewInstance(ctx, \"cache-persis\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"ha-memory-cache-persis\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tPersistenceConfig: \u0026redis.InstancePersistenceConfigArgs{\n\t\t\t\tPersistenceMode: pulumi.String(\"RDB\"),\n\t\t\t\tRdbSnapshotPeriod: pulumi.String(\"TWELVE_HOURS\"),\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.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\nimport com.pulumi.gcp.redis.inputs.InstancePersistenceConfigArgs;\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 cache_persis = new Instance(\"cache-persis\", InstanceArgs.builder()\n .name(\"ha-memory-cache-persis\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(1)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .persistenceConfig(InstancePersistenceConfigArgs.builder()\n .persistenceMode(\"RDB\")\n .rdbSnapshotPeriod(\"TWELVE_HOURS\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache-persis:\n type: gcp:redis:Instance\n properties:\n name: ha-memory-cache-persis\n tier: STANDARD_HA\n memorySizeGb: 1\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n persistenceConfig:\n persistenceMode: RDB\n rdbSnapshotPeriod: TWELVE_HOURS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Private Service\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example assumes this network already exists.\n// The API creates a tenant network per network authorized for a\n// Redis instance and that network is not deleted when the user-created\n// network (authorized_network) is deleted, so this prevents issues\n// with tenant network quota.\n// If this network hasn't been created and you are using this example in your\n// config, add an additional network resource or change\n// this from \"data\"to \"resource\"\nconst redis_network = new gcp.compute.Network(\"redis-network\", {name: \"redis-test-network\"});\nconst serviceRange = new gcp.compute.GlobalAddress(\"service_range\", {\n name: \"address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: redis_network.id,\n});\nconst privateServiceConnection = new gcp.servicenetworking.Connection(\"private_service_connection\", {\n network: redis_network.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [serviceRange.name],\n});\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"private-cache\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 1,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n authorizedNetwork: redis_network.id,\n connectMode: \"PRIVATE_SERVICE_ACCESS\",\n redisVersion: \"REDIS_4_0\",\n displayName: \"Test Instance\",\n}, {\n dependsOn: [privateServiceConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example assumes this network already exists.\n# The API creates a tenant network per network authorized for a\n# Redis instance and that network is not deleted when the user-created\n# network (authorized_network) is deleted, so this prevents issues\n# with tenant network quota.\n# If this network hasn't been created and you are using this example in your\n# config, add an additional network resource or change\n# this from \"data\"to \"resource\"\nredis_network = gcp.compute.Network(\"redis-network\", name=\"redis-test-network\")\nservice_range = gcp.compute.GlobalAddress(\"service_range\",\n name=\"address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=redis_network.id)\nprivate_service_connection = gcp.servicenetworking.Connection(\"private_service_connection\",\n network=redis_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[service_range.name])\ncache = gcp.redis.Instance(\"cache\",\n name=\"private-cache\",\n tier=\"STANDARD_HA\",\n memory_size_gb=1,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n authorized_network=redis_network.id,\n connect_mode=\"PRIVATE_SERVICE_ACCESS\",\n redis_version=\"REDIS_4_0\",\n display_name=\"Test Instance\",\n opts = pulumi.ResourceOptions(depends_on=[private_service_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 // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = new Gcp.Compute.Network(\"redis-network\", new()\n {\n Name = \"redis-test-network\",\n });\n\n var serviceRange = new Gcp.Compute.GlobalAddress(\"service_range\", new()\n {\n Name = \"address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = redis_network.Id,\n });\n\n var privateServiceConnection = new Gcp.ServiceNetworking.Connection(\"private_service_connection\", new()\n {\n Network = redis_network.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n serviceRange.Name,\n },\n });\n\n var cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"private-cache\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 1,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n AuthorizedNetwork = redis_network.Id,\n ConnectMode = \"PRIVATE_SERVICE_ACCESS\",\n RedisVersion = \"REDIS_4_0\",\n DisplayName = \"Test Instance\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n privateServiceConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t// This example assumes this network already exists.\n\t\t// The API creates a tenant network per network authorized for a\n\t\t// Redis instance and that network is not deleted when the user-created\n\t\t// network (authorized_network) is deleted, so this prevents issues\n\t\t// with tenant network quota.\n\t\t// If this network hasn't been created and you are using this example in your\n\t\t// config, add an additional network resource or change\n\t\t// this from \"data\"to \"resource\"\n\t\t_, err := compute.NewNetwork(ctx, \"redis-network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"redis-test-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceRange, err := compute.NewGlobalAddress(ctx, \"service_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: redis_network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateServiceConnection, err := servicenetworking.NewConnection(ctx, \"private_service_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: redis_network.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tserviceRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"private-cache\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tAuthorizedNetwork: redis_network.ID(),\n\t\t\tConnectMode: pulumi.String(\"PRIVATE_SERVICE_ACCESS\"),\n\t\t\tRedisVersion: pulumi.String(\"REDIS_4_0\"),\n\t\t\tDisplayName: pulumi.String(\"Test Instance\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprivateServiceConnection,\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.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\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 // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = new Network(\"redis-network\", NetworkArgs.builder()\n .name(\"redis-test-network\")\n .build());\n\n var serviceRange = new GlobalAddress(\"serviceRange\", GlobalAddressArgs.builder()\n .name(\"address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(redis_network.id())\n .build());\n\n var privateServiceConnection = new Connection(\"privateServiceConnection\", ConnectionArgs.builder()\n .network(redis_network.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(serviceRange.name())\n .build());\n\n var cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"private-cache\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(1)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .authorizedNetwork(redis_network.id())\n .connectMode(\"PRIVATE_SERVICE_ACCESS\")\n .redisVersion(\"REDIS_4_0\")\n .displayName(\"Test Instance\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(privateServiceConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # This example assumes this network already exists.\n # // The API creates a tenant network per network authorized for a\n # // Redis instance and that network is not deleted when the user-created\n # // network (authorized_network) is deleted, so this prevents issues\n # // with tenant network quota.\n # // If this network hasn't been created and you are using this example in your\n # // config, add an additional network resource or change\n # // this from \"data\"to \"resource\"\n redis-network:\n type: gcp:compute:Network\n properties:\n name: redis-test-network\n serviceRange:\n type: gcp:compute:GlobalAddress\n name: service_range\n properties:\n name: address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${[\"redis-network\"].id}\n privateServiceConnection:\n type: gcp:servicenetworking:Connection\n name: private_service_connection\n properties:\n network: ${[\"redis-network\"].id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${serviceRange.name}\n cache:\n type: gcp:redis:Instance\n properties:\n name: private-cache\n tier: STANDARD_HA\n memorySizeGb: 1\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n authorizedNetwork: ${[\"redis-network\"].id}\n connectMode: PRIVATE_SERVICE_ACCESS\n redisVersion: REDIS_4_0\n displayName: Test Instance\n options:\n dependson:\n - ${privateServiceConnection}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Mrr\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example assumes this network already exists.\n// The API creates a tenant network per network authorized for a\n// Redis instance and that network is not deleted when the user-created\n// network (authorized_network) is deleted, so this prevents issues\n// with tenant network quota.\n// If this network hasn't been created and you are using this example in your\n// config, add an additional network resource or change\n// this from \"data\"to \"resource\"\nconst redis-network = gcp.compute.getNetwork({\n name: \"redis-test-network\",\n});\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"mrr-memory-cache\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 5,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n authorizedNetwork: redis_network.then(redis_network =\u003e redis_network.id),\n redisVersion: \"REDIS_6_X\",\n displayName: \"Terraform Test Instance\",\n reservedIpRange: \"192.168.0.0/28\",\n replicaCount: 5,\n readReplicasMode: \"READ_REPLICAS_ENABLED\",\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example assumes this network already exists.\n# The API creates a tenant network per network authorized for a\n# Redis instance and that network is not deleted when the user-created\n# network (authorized_network) is deleted, so this prevents issues\n# with tenant network quota.\n# If this network hasn't been created and you are using this example in your\n# config, add an additional network resource or change\n# this from \"data\"to \"resource\"\nredis_network = gcp.compute.get_network(name=\"redis-test-network\")\ncache = gcp.redis.Instance(\"cache\",\n name=\"mrr-memory-cache\",\n tier=\"STANDARD_HA\",\n memory_size_gb=5,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n authorized_network=redis_network.id,\n redis_version=\"REDIS_6_X\",\n display_name=\"Terraform Test Instance\",\n reserved_ip_range=\"192.168.0.0/28\",\n replica_count=5,\n read_replicas_mode=\"READ_REPLICAS_ENABLED\",\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\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 // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"redis-test-network\",\n });\n\n var cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"mrr-memory-cache\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 5,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n AuthorizedNetwork = redis_network.Apply(redis_network =\u003e redis_network.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n RedisVersion = \"REDIS_6_X\",\n DisplayName = \"Terraform Test Instance\",\n ReservedIpRange = \"192.168.0.0/28\",\n ReplicaCount = 5,\n ReadReplicasMode = \"READ_REPLICAS_ENABLED\",\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/redis\"\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// This example assumes this network already exists.\n\t\t// The API creates a tenant network per network authorized for a\n\t\t// Redis instance and that network is not deleted when the user-created\n\t\t// network (authorized_network) is deleted, so this prevents issues\n\t\t// with tenant network quota.\n\t\t// If this network hasn't been created and you are using this example in your\n\t\t// config, add an additional network resource or change\n\t\t// this from \"data\"to \"resource\"\n\t\tredis_network, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"redis-test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"mrr-memory-cache\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(5),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tAuthorizedNetwork: pulumi.String(redis_network.Id),\n\t\t\tRedisVersion: pulumi.String(\"REDIS_6_X\"),\n\t\t\tDisplayName: pulumi.String(\"Terraform Test Instance\"),\n\t\t\tReservedIpRange: pulumi.String(\"192.168.0.0/28\"),\n\t\t\tReplicaCount: pulumi.Int(5),\n\t\t\tReadReplicasMode: pulumi.String(\"READ_REPLICAS_ENABLED\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\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 // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n final var redis-network = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"redis-test-network\")\n .build());\n\n var cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"mrr-memory-cache\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(5)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .authorizedNetwork(redis_network.id())\n .redisVersion(\"REDIS_6_X\")\n .displayName(\"Terraform Test Instance\")\n .reservedIpRange(\"192.168.0.0/28\")\n .replicaCount(5)\n .readReplicasMode(\"READ_REPLICAS_ENABLED\")\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:redis:Instance\n properties:\n name: mrr-memory-cache\n tier: STANDARD_HA\n memorySizeGb: 5\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n authorizedNetwork: ${[\"redis-network\"].id}\n redisVersion: REDIS_6_X\n displayName: Terraform Test Instance\n reservedIpRange: 192.168.0.0/28\n replicaCount: 5\n readReplicasMode: READ_REPLICAS_ENABLED\n labels:\n my_key: my_val\n other_key: other_val\nvariables:\n # This example assumes this network already exists.\n # // The API creates a tenant network per network authorized for a\n # // Redis instance and that network is not deleted when the user-created\n # // network (authorized_network) is deleted, so this prevents issues\n # // with tenant network quota.\n # // If this network hasn't been created and you are using this example in your\n # // config, add an additional network resource or change\n # // this from \"data\"to \"resource\"\n redis-network:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: redis-test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst redisKeyring = new gcp.kms.KeyRing(\"redis_keyring\", {\n name: \"redis-keyring\",\n location: \"us-central1\",\n});\nconst redisKey = new gcp.kms.CryptoKey(\"redis_key\", {\n name: \"redis-key\",\n keyRing: redisKeyring.id,\n});\n// This example assumes this network already exists.\n// The API creates a tenant network per network authorized for a\n// Redis instance and that network is not deleted when the user-created\n// network (authorized_network) is deleted, so this prevents issues\n// with tenant network quota.\n// If this network hasn't been created and you are using this example in your\n// config, add an additional network resource or change\n// this from \"data\"to \"resource\"\nconst redis-network = gcp.compute.getNetwork({\n name: \"redis-test-network\",\n});\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"cmek-memory-cache\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 1,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n authorizedNetwork: redis_network.then(redis_network =\u003e redis_network.id),\n redisVersion: \"REDIS_6_X\",\n displayName: \"Terraform Test Instance\",\n reservedIpRange: \"192.168.0.0/29\",\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n customerManagedKey: redisKey.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nredis_keyring = gcp.kms.KeyRing(\"redis_keyring\",\n name=\"redis-keyring\",\n location=\"us-central1\")\nredis_key = gcp.kms.CryptoKey(\"redis_key\",\n name=\"redis-key\",\n key_ring=redis_keyring.id)\n# This example assumes this network already exists.\n# The API creates a tenant network per network authorized for a\n# Redis instance and that network is not deleted when the user-created\n# network (authorized_network) is deleted, so this prevents issues\n# with tenant network quota.\n# If this network hasn't been created and you are using this example in your\n# config, add an additional network resource or change\n# this from \"data\"to \"resource\"\nredis_network = gcp.compute.get_network(name=\"redis-test-network\")\ncache = gcp.redis.Instance(\"cache\",\n name=\"cmek-memory-cache\",\n tier=\"STANDARD_HA\",\n memory_size_gb=1,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n authorized_network=redis_network.id,\n redis_version=\"REDIS_6_X\",\n display_name=\"Terraform Test Instance\",\n reserved_ip_range=\"192.168.0.0/29\",\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\n },\n customer_managed_key=redis_key.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 redisKeyring = new Gcp.Kms.KeyRing(\"redis_keyring\", new()\n {\n Name = \"redis-keyring\",\n Location = \"us-central1\",\n });\n\n var redisKey = new Gcp.Kms.CryptoKey(\"redis_key\", new()\n {\n Name = \"redis-key\",\n KeyRing = redisKeyring.Id,\n });\n\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"redis-test-network\",\n });\n\n var cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"cmek-memory-cache\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 1,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n AuthorizedNetwork = redis_network.Apply(redis_network =\u003e redis_network.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n RedisVersion = \"REDIS_6_X\",\n DisplayName = \"Terraform Test Instance\",\n ReservedIpRange = \"192.168.0.0/29\",\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n CustomerManagedKey = redisKey.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tredisKeyring, err := kms.NewKeyRing(ctx, \"redis_keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"redis-keyring\"),\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\tredisKey, err := kms.NewCryptoKey(ctx, \"redis_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"redis-key\"),\n\t\t\tKeyRing: redisKeyring.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// This example assumes this network already exists.\n\t\t// The API creates a tenant network per network authorized for a\n\t\t// Redis instance and that network is not deleted when the user-created\n\t\t// network (authorized_network) is deleted, so this prevents issues\n\t\t// with tenant network quota.\n\t\t// If this network hasn't been created and you are using this example in your\n\t\t// config, add an additional network resource or change\n\t\t// this from \"data\"to \"resource\"\n\t\tredis_network, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"redis-test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"cmek-memory-cache\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tAuthorizedNetwork: pulumi.String(redis_network.Id),\n\t\t\tRedisVersion: pulumi.String(\"REDIS_6_X\"),\n\t\t\tDisplayName: pulumi.String(\"Terraform Test Instance\"),\n\t\t\tReservedIpRange: pulumi.String(\"192.168.0.0/29\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\n\t\t\t},\n\t\t\tCustomerManagedKey: redisKey.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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\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 redisKeyring = new KeyRing(\"redisKeyring\", KeyRingArgs.builder()\n .name(\"redis-keyring\")\n .location(\"us-central1\")\n .build());\n\n var redisKey = new CryptoKey(\"redisKey\", CryptoKeyArgs.builder()\n .name(\"redis-key\")\n .keyRing(redisKeyring.id())\n .build());\n\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n final var redis-network = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"redis-test-network\")\n .build());\n\n var cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"cmek-memory-cache\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(1)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .authorizedNetwork(redis_network.id())\n .redisVersion(\"REDIS_6_X\")\n .displayName(\"Terraform Test Instance\")\n .reservedIpRange(\"192.168.0.0/29\")\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .customerManagedKey(redisKey.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:redis:Instance\n properties:\n name: cmek-memory-cache\n tier: STANDARD_HA\n memorySizeGb: 1\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n authorizedNetwork: ${[\"redis-network\"].id}\n redisVersion: REDIS_6_X\n displayName: Terraform Test Instance\n reservedIpRange: 192.168.0.0/29\n labels:\n my_key: my_val\n other_key: other_val\n customerManagedKey: ${redisKey.id}\n redisKeyring:\n type: gcp:kms:KeyRing\n name: redis_keyring\n properties:\n name: redis-keyring\n location: us-central1\n redisKey:\n type: gcp:kms:CryptoKey\n name: redis_key\n properties:\n name: redis-key\n keyRing: ${redisKeyring.id}\nvariables:\n # This example assumes this network already exists.\n # // The API creates a tenant network per network authorized for a\n # // Redis instance and that network is not deleted when the user-created\n # // network (authorized_network) is deleted, so this prevents issues\n # // with tenant network quota.\n # // If this network hasn't been created and you are using this example in your\n # // config, add an additional network resource or change\n # // this from \"data\"to \"resource\"\n redis-network:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: redis-test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:redis/instance:Instance default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/instance:Instance default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/instance:Instance default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/instance:Instance default {{name}}\n```\n\n", "properties": { "alternativeLocationId": { "type": "string", @@ -230979,7 +230979,7 @@ } }, "gcp:runtimeconfig/variable:Variable": { - "description": "## Example Usage\n\nExample creating a RuntimeConfig variable.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_runtime_config = new gcp.runtimeconfig.Config(\"my-runtime-config\", {\n name: \"my-service-runtime-config\",\n description: \"Runtime configuration values for my service\",\n});\nconst environment = new gcp.runtimeconfig.Variable(\"environment\", {\n parent: my_runtime_config.name,\n name: \"prod-variables/hostname\",\n text: \"example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_runtime_config = gcp.runtimeconfig.Config(\"my-runtime-config\",\n name=\"my-service-runtime-config\",\n description=\"Runtime configuration values for my service\")\nenvironment = gcp.runtimeconfig.Variable(\"environment\",\n parent=my_runtime_config.name,\n name=\"prod-variables/hostname\",\n text=\"example.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 my_runtime_config = new Gcp.RuntimeConfig.Config(\"my-runtime-config\", new()\n {\n Name = \"my-service-runtime-config\",\n Description = \"Runtime configuration values for my service\",\n });\n\n var environment = new Gcp.RuntimeConfig.Variable(\"environment\", new()\n {\n Parent = my_runtime_config.Name,\n Name = \"prod-variables/hostname\",\n Text = \"example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/runtimeconfig\"\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 := runtimeconfig.NewConfig(ctx, \"my-runtime-config\", \u0026runtimeconfig.ConfigArgs{\n\t\t\tName: pulumi.String(\"my-service-runtime-config\"),\n\t\t\tDescription: pulumi.String(\"Runtime configuration values for my service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = runtimeconfig.NewVariable(ctx, \"environment\", \u0026runtimeconfig.VariableArgs{\n\t\t\tParent: my_runtime_config.Name,\n\t\t\tName: pulumi.String(\"prod-variables/hostname\"),\n\t\t\tText: pulumi.String(\"example.com\"),\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.runtimeconfig.Config;\nimport com.pulumi.gcp.runtimeconfig.ConfigArgs;\nimport com.pulumi.gcp.runtimeconfig.Variable;\nimport com.pulumi.gcp.runtimeconfig.VariableArgs;\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_runtime_config = new Config(\"my-runtime-config\", ConfigArgs.builder()\n .name(\"my-service-runtime-config\")\n .description(\"Runtime configuration values for my service\")\n .build());\n\n var environment = new Variable(\"environment\", VariableArgs.builder()\n .parent(my_runtime_config.name())\n .name(\"prod-variables/hostname\")\n .text(\"example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-runtime-config:\n type: gcp:runtimeconfig:Config\n properties:\n name: my-service-runtime-config\n description: Runtime configuration values for my service\n environment:\n type: gcp:runtimeconfig:Variable\n properties:\n parent: ${[\"my-runtime-config\"].name}\n name: prod-variables/hostname\n text: example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can also encode binary content using the `value` argument instead. The\nvalue must be base64 encoded.\n\nExample of using the `value` argument.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst my_runtime_config = new gcp.runtimeconfig.Config(\"my-runtime-config\", {\n name: \"my-service-runtime-config\",\n description: \"Runtime configuration values for my service\",\n});\nconst my_secret = new gcp.runtimeconfig.Variable(\"my-secret\", {\n parent: my_runtime_config.name,\n name: \"secret\",\n value: std.filebase64({\n input: \"my-encrypted-secret.dat\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nmy_runtime_config = gcp.runtimeconfig.Config(\"my-runtime-config\",\n name=\"my-service-runtime-config\",\n description=\"Runtime configuration values for my service\")\nmy_secret = gcp.runtimeconfig.Variable(\"my-secret\",\n parent=my_runtime_config.name,\n name=\"secret\",\n value=std.filebase64(input=\"my-encrypted-secret.dat\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_runtime_config = new Gcp.RuntimeConfig.Config(\"my-runtime-config\", new()\n {\n Name = \"my-service-runtime-config\",\n Description = \"Runtime configuration values for my service\",\n });\n\n var my_secret = new Gcp.RuntimeConfig.Variable(\"my-secret\", new()\n {\n Parent = my_runtime_config.Name,\n Name = \"secret\",\n Value = Std.Filebase64.Invoke(new()\n {\n Input = \"my-encrypted-secret.dat\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/runtimeconfig\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := runtimeconfig.NewConfig(ctx, \"my-runtime-config\", \u0026runtimeconfig.ConfigArgs{\n\t\t\tName: pulumi.String(\"my-service-runtime-config\"),\n\t\t\tDescription: pulumi.String(\"Runtime configuration values for my service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilebase64, err := std.Filebase64(ctx, \u0026std.Filebase64Args{\n\t\t\tInput: \"my-encrypted-secret.dat\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = runtimeconfig.NewVariable(ctx, \"my-secret\", \u0026runtimeconfig.VariableArgs{\n\t\t\tParent: my_runtime_config.Name,\n\t\t\tName: pulumi.String(\"secret\"),\n\t\t\tValue: invokeFilebase64.Result,\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.runtimeconfig.Config;\nimport com.pulumi.gcp.runtimeconfig.ConfigArgs;\nimport com.pulumi.gcp.runtimeconfig.Variable;\nimport com.pulumi.gcp.runtimeconfig.VariableArgs;\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_runtime_config = new Config(\"my-runtime-config\", ConfigArgs.builder()\n .name(\"my-service-runtime-config\")\n .description(\"Runtime configuration values for my service\")\n .build());\n\n var my_secret = new Variable(\"my-secret\", VariableArgs.builder()\n .parent(my_runtime_config.name())\n .name(\"secret\")\n .value(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"my-encrypted-secret.dat\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-runtime-config:\n type: gcp:runtimeconfig:Config\n properties:\n name: my-service-runtime-config\n description: Runtime configuration values for my service\n my-secret:\n type: gcp:runtimeconfig:Variable\n properties:\n parent: ${[\"my-runtime-config\"].name}\n name: secret\n value:\n fn::invoke:\n Function: std:filebase64\n Arguments:\n input: my-encrypted-secret.dat\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRuntime Config Variables can be imported using the `name` or full variable name, e.g.\n\n* `projects/my-gcp-project/configs/{{config_id}}/variables/{{name}}`\n\n* `{{config_id}}/{{name}}`\n\nWhen using the `pulumi import` command, Runtime Config Variables can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:runtimeconfig/variable:Variable default projects/my-gcp-project/configs/{{config_id}}/variables/{{name}}\n```\n\n```sh\n$ pulumi import gcp:runtimeconfig/variable:Variable default {{config_id}}/{{name}}\n```\n\nWhen importing using only the name, the provider project must be set.\n\n", + "description": "## Example Usage\n\nExample creating a RuntimeConfig variable.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_runtime_config = new gcp.runtimeconfig.Config(\"my-runtime-config\", {\n name: \"my-service-runtime-config\",\n description: \"Runtime configuration values for my service\",\n});\nconst environment = new gcp.runtimeconfig.Variable(\"environment\", {\n parent: my_runtime_config.name,\n name: \"prod-variables/hostname\",\n text: \"example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_runtime_config = gcp.runtimeconfig.Config(\"my-runtime-config\",\n name=\"my-service-runtime-config\",\n description=\"Runtime configuration values for my service\")\nenvironment = gcp.runtimeconfig.Variable(\"environment\",\n parent=my_runtime_config.name,\n name=\"prod-variables/hostname\",\n text=\"example.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 my_runtime_config = new Gcp.RuntimeConfig.Config(\"my-runtime-config\", new()\n {\n Name = \"my-service-runtime-config\",\n Description = \"Runtime configuration values for my service\",\n });\n\n var environment = new Gcp.RuntimeConfig.Variable(\"environment\", new()\n {\n Parent = my_runtime_config.Name,\n Name = \"prod-variables/hostname\",\n Text = \"example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/runtimeconfig\"\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 := runtimeconfig.NewConfig(ctx, \"my-runtime-config\", \u0026runtimeconfig.ConfigArgs{\n\t\t\tName: pulumi.String(\"my-service-runtime-config\"),\n\t\t\tDescription: pulumi.String(\"Runtime configuration values for my service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = runtimeconfig.NewVariable(ctx, \"environment\", \u0026runtimeconfig.VariableArgs{\n\t\t\tParent: my_runtime_config.Name,\n\t\t\tName: pulumi.String(\"prod-variables/hostname\"),\n\t\t\tText: pulumi.String(\"example.com\"),\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.runtimeconfig.Config;\nimport com.pulumi.gcp.runtimeconfig.ConfigArgs;\nimport com.pulumi.gcp.runtimeconfig.Variable;\nimport com.pulumi.gcp.runtimeconfig.VariableArgs;\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_runtime_config = new Config(\"my-runtime-config\", ConfigArgs.builder()\n .name(\"my-service-runtime-config\")\n .description(\"Runtime configuration values for my service\")\n .build());\n\n var environment = new Variable(\"environment\", VariableArgs.builder()\n .parent(my_runtime_config.name())\n .name(\"prod-variables/hostname\")\n .text(\"example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-runtime-config:\n type: gcp:runtimeconfig:Config\n properties:\n name: my-service-runtime-config\n description: Runtime configuration values for my service\n environment:\n type: gcp:runtimeconfig:Variable\n properties:\n parent: ${[\"my-runtime-config\"].name}\n name: prod-variables/hostname\n text: example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can also encode binary content using the `value` argument instead. The\nvalue must be base64 encoded.\n\nExample of using the `value` argument.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst my_runtime_config = new gcp.runtimeconfig.Config(\"my-runtime-config\", {\n name: \"my-service-runtime-config\",\n description: \"Runtime configuration values for my service\",\n});\nconst my_secret = new gcp.runtimeconfig.Variable(\"my-secret\", {\n parent: my_runtime_config.name,\n name: \"secret\",\n value: std.filebase64({\n input: \"my-encrypted-secret.dat\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nmy_runtime_config = gcp.runtimeconfig.Config(\"my-runtime-config\",\n name=\"my-service-runtime-config\",\n description=\"Runtime configuration values for my service\")\nmy_secret = gcp.runtimeconfig.Variable(\"my-secret\",\n parent=my_runtime_config.name,\n name=\"secret\",\n value=std.filebase64(input=\"my-encrypted-secret.dat\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_runtime_config = new Gcp.RuntimeConfig.Config(\"my-runtime-config\", new()\n {\n Name = \"my-service-runtime-config\",\n Description = \"Runtime configuration values for my service\",\n });\n\n var my_secret = new Gcp.RuntimeConfig.Variable(\"my-secret\", new()\n {\n Parent = my_runtime_config.Name,\n Name = \"secret\",\n Value = Std.Filebase64.Invoke(new()\n {\n Input = \"my-encrypted-secret.dat\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/runtimeconfig\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := runtimeconfig.NewConfig(ctx, \"my-runtime-config\", \u0026runtimeconfig.ConfigArgs{\n\t\t\tName: pulumi.String(\"my-service-runtime-config\"),\n\t\t\tDescription: pulumi.String(\"Runtime configuration values for my service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilebase64, err := std.Filebase64(ctx, \u0026std.Filebase64Args{\n\t\t\tInput: \"my-encrypted-secret.dat\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = runtimeconfig.NewVariable(ctx, \"my-secret\", \u0026runtimeconfig.VariableArgs{\n\t\t\tParent: my_runtime_config.Name,\n\t\t\tName: pulumi.String(\"secret\"),\n\t\t\tValue: pulumi.String(invokeFilebase64.Result),\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.runtimeconfig.Config;\nimport com.pulumi.gcp.runtimeconfig.ConfigArgs;\nimport com.pulumi.gcp.runtimeconfig.Variable;\nimport com.pulumi.gcp.runtimeconfig.VariableArgs;\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_runtime_config = new Config(\"my-runtime-config\", ConfigArgs.builder()\n .name(\"my-service-runtime-config\")\n .description(\"Runtime configuration values for my service\")\n .build());\n\n var my_secret = new Variable(\"my-secret\", VariableArgs.builder()\n .parent(my_runtime_config.name())\n .name(\"secret\")\n .value(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"my-encrypted-secret.dat\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-runtime-config:\n type: gcp:runtimeconfig:Config\n properties:\n name: my-service-runtime-config\n description: Runtime configuration values for my service\n my-secret:\n type: gcp:runtimeconfig:Variable\n properties:\n parent: ${[\"my-runtime-config\"].name}\n name: secret\n value:\n fn::invoke:\n Function: std:filebase64\n Arguments:\n input: my-encrypted-secret.dat\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRuntime Config Variables can be imported using the `name` or full variable name, e.g.\n\n* `projects/my-gcp-project/configs/{{config_id}}/variables/{{name}}`\n\n* `{{config_id}}/{{name}}`\n\nWhen using the `pulumi import` command, Runtime Config Variables can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:runtimeconfig/variable:Variable default projects/my-gcp-project/configs/{{config_id}}/variables/{{name}}\n```\n\n```sh\n$ pulumi import gcp:runtimeconfig/variable:Variable default {{config_id}}/{{name}}\n```\n\nWhen importing using only the name, the provider project must be set.\n\n", "properties": { "name": { "type": "string", @@ -231078,7 +231078,7 @@ } }, "gcp:secretmanager/secret:Secret": { - "description": "A Secret is a logical secret whose value and versions can be accessed.\n\n\nTo get more information about Secret, see:\n\n* [API documentation](https://cloud.google.com/secret-manager/docs/reference/rest/v1/projects.secrets)\n\n## Example Usage\n\n### Secret Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret\",\n labels: {\n label: \"my-label\",\n },\n replication: {\n userManaged: {\n replicas: [\n {\n location: \"us-central1\",\n },\n {\n location: \"us-east1\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret\",\n labels={\n \"label\": \"my-label\",\n },\n replication={\n \"userManaged\": {\n \"replicas\": [\n {\n \"location\": \"us-central1\",\n },\n {\n \"location\": \"us-east1\",\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 secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\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 new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-east1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\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\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-east1\"),\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.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\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 secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret\")\n .labels(Map.of(\"label\", \"my-label\"))\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas( \n SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build(),\n SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-east1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n labels:\n label: my-label\n replication:\n userManaged:\n replicas:\n - location: us-central1\n - location: us-east1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret With Annotations\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_with_annotations = new gcp.secretmanager.Secret(\"secret-with-annotations\", {\n secretId: \"secret\",\n labels: {\n label: \"my-label\",\n },\n annotations: {\n key1: \"someval\",\n key2: \"someval2\",\n key3: \"someval3\",\n key4: \"someval4\",\n key5: \"someval5\",\n },\n replication: {\n auto: {},\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_with_annotations = gcp.secretmanager.Secret(\"secret-with-annotations\",\n secret_id=\"secret\",\n labels={\n \"label\": \"my-label\",\n },\n annotations={\n \"key1\": \"someval\",\n \"key2\": \"someval2\",\n \"key3\": \"someval3\",\n \"key4\": \"someval4\",\n \"key5\": \"someval5\",\n },\n replication={\n \"auto\": {},\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 secret_with_annotations = new Gcp.SecretManager.Secret(\"secret-with-annotations\", new()\n {\n SecretId = \"secret\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\n Annotations = \n {\n { \"key1\", \"someval\" },\n { \"key2\", \"someval2\" },\n { \"key3\", \"someval3\" },\n { \"key4\", \"someval4\" },\n { \"key5\", \"someval5\" },\n },\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := secretmanager.NewSecret(ctx, \"secret-with-annotations\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"someval\"),\n\t\t\t\t\"key2\": pulumi.String(\"someval2\"),\n\t\t\t\t\"key3\": pulumi.String(\"someval3\"),\n\t\t\t\t\"key4\": pulumi.String(\"someval4\"),\n\t\t\t\t\"key5\": pulumi.String(\"someval5\"),\n\t\t\t},\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\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.SecretReplicationAutoArgs;\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 secret_with_annotations = new Secret(\"secret-with-annotations\", SecretArgs.builder()\n .secretId(\"secret\")\n .labels(Map.of(\"label\", \"my-label\"))\n .annotations(Map.ofEntries(\n Map.entry(\"key1\", \"someval\"),\n Map.entry(\"key2\", \"someval2\"),\n Map.entry(\"key3\", \"someval3\"),\n Map.entry(\"key4\", \"someval4\"),\n Map.entry(\"key5\", \"someval5\")\n ))\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-with-annotations:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n labels:\n label: my-label\n annotations:\n key1: someval\n key2: someval2\n key3: someval3\n key4: someval4\n key5: someval5\n replication:\n auto: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret With Version Destroy Ttl\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_with_version_destroy_ttl = new gcp.secretmanager.Secret(\"secret-with-version-destroy-ttl\", {\n secretId: \"secret\",\n versionDestroyTtl: \"2592000s\",\n replication: {\n auto: {},\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_with_version_destroy_ttl = gcp.secretmanager.Secret(\"secret-with-version-destroy-ttl\",\n secret_id=\"secret\",\n version_destroy_ttl=\"2592000s\",\n replication={\n \"auto\": {},\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 secret_with_version_destroy_ttl = new Gcp.SecretManager.Secret(\"secret-with-version-destroy-ttl\", new()\n {\n SecretId = \"secret\",\n VersionDestroyTtl = \"2592000s\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := secretmanager.NewSecret(ctx, \"secret-with-version-destroy-ttl\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tVersionDestroyTtl: pulumi.String(\"2592000s\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\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.SecretReplicationAutoArgs;\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 secret_with_version_destroy_ttl = new Secret(\"secret-with-version-destroy-ttl\", SecretArgs.builder()\n .secretId(\"secret\")\n .versionDestroyTtl(\"2592000s\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-with-version-destroy-ttl:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n versionDestroyTtl: 2592000s\n replication:\n auto: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret With Automatic Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst kms_secret_binding = new gcp.kms.CryptoKeyIAMMember(\"kms-secret-binding\", {\n cryptoKeyId: \"kms-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com`),\n});\nconst secret_with_automatic_cmek = new gcp.secretmanager.Secret(\"secret-with-automatic-cmek\", {\n secretId: \"secret\",\n replication: {\n auto: {\n customerManagedEncryption: {\n kmsKeyName: \"kms-key\",\n },\n },\n },\n}, {\n dependsOn: [kms_secret_binding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nkms_secret_binding = gcp.kms.CryptoKeyIAMMember(\"kms-secret-binding\",\n crypto_key_id=\"kms-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com\")\nsecret_with_automatic_cmek = gcp.secretmanager.Secret(\"secret-with-automatic-cmek\",\n secret_id=\"secret\",\n replication={\n \"auto\": {\n \"customerManagedEncryption\": {\n \"kmsKeyName\": \"kms-key\",\n },\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[kms_secret_binding]))\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 kms_secret_binding = new Gcp.Kms.CryptoKeyIAMMember(\"kms-secret-binding\", new()\n {\n CryptoKeyId = \"kms-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-secretmanager.iam.gserviceaccount.com\",\n });\n\n var secret_with_automatic_cmek = new Gcp.SecretManager.Secret(\"secret-with-automatic-cmek\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = new Gcp.SecretManager.Inputs.SecretReplicationAutoArgs\n {\n CustomerManagedEncryption = new Gcp.SecretManager.Inputs.SecretReplicationAutoCustomerManagedEncryptionArgs\n {\n KmsKeyName = \"kms-key\",\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n kms_secret_binding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMMember(ctx, \"kms-secret-binding\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-secretmanager.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"secret-with-automatic-cmek\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{\n\t\t\t\t\tCustomerManagedEncryption: \u0026secretmanager.SecretReplicationAutoCustomerManagedEncryptionArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"kms-key\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tkms_secret_binding,\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.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoCustomerManagedEncryptionArgs;\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 kms_secret_binding = new CryptoKeyIAMMember(\"kms-secret-binding\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-secretmanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var secret_with_automatic_cmek = new Secret(\"secret-with-automatic-cmek\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .auto(SecretReplicationAutoArgs.builder()\n .customerManagedEncryption(SecretReplicationAutoCustomerManagedEncryptionArgs.builder()\n .kmsKeyName(\"kms-key\")\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(kms_secret_binding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n kms-secret-binding:\n type: gcp:kms:CryptoKeyIAMMember\n properties:\n cryptoKeyId: kms-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com\n secret-with-automatic-cmek:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n auto:\n customerManagedEncryption:\n kmsKeyName: kms-key\n options:\n dependson:\n - ${[\"kms-secret-binding\"]}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecret can be imported using any of these accepted formats:\n\n* `projects/{{project}}/secrets/{{secret_id}}`\n\n* `{{project}}/{{secret_id}}`\n\n* `{{secret_id}}`\n\nWhen using the `pulumi import` command, Secret can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:secretmanager/secret:Secret default projects/{{project}}/secrets/{{secret_id}}\n```\n\n```sh\n$ pulumi import gcp:secretmanager/secret:Secret default {{project}}/{{secret_id}}\n```\n\n```sh\n$ pulumi import gcp:secretmanager/secret:Secret default {{secret_id}}\n```\n\n", + "description": "A Secret is a logical secret whose value and versions can be accessed.\n\n\nTo get more information about Secret, see:\n\n* [API documentation](https://cloud.google.com/secret-manager/docs/reference/rest/v1/projects.secrets)\n\n## Example Usage\n\n### Secret Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret\",\n labels: {\n label: \"my-label\",\n },\n replication: {\n userManaged: {\n replicas: [\n {\n location: \"us-central1\",\n },\n {\n location: \"us-east1\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret\",\n labels={\n \"label\": \"my-label\",\n },\n replication={\n \"user_managed\": {\n \"replicas\": [\n {\n \"location\": \"us-central1\",\n },\n {\n \"location\": \"us-east1\",\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 secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\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 new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-east1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\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\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-east1\"),\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.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\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 secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret\")\n .labels(Map.of(\"label\", \"my-label\"))\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas( \n SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build(),\n SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-east1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n labels:\n label: my-label\n replication:\n userManaged:\n replicas:\n - location: us-central1\n - location: us-east1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret With Annotations\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_with_annotations = new gcp.secretmanager.Secret(\"secret-with-annotations\", {\n secretId: \"secret\",\n labels: {\n label: \"my-label\",\n },\n annotations: {\n key1: \"someval\",\n key2: \"someval2\",\n key3: \"someval3\",\n key4: \"someval4\",\n key5: \"someval5\",\n },\n replication: {\n auto: {},\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_with_annotations = gcp.secretmanager.Secret(\"secret-with-annotations\",\n secret_id=\"secret\",\n labels={\n \"label\": \"my-label\",\n },\n annotations={\n \"key1\": \"someval\",\n \"key2\": \"someval2\",\n \"key3\": \"someval3\",\n \"key4\": \"someval4\",\n \"key5\": \"someval5\",\n },\n replication={\n \"auto\": {},\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 secret_with_annotations = new Gcp.SecretManager.Secret(\"secret-with-annotations\", new()\n {\n SecretId = \"secret\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\n Annotations = \n {\n { \"key1\", \"someval\" },\n { \"key2\", \"someval2\" },\n { \"key3\", \"someval3\" },\n { \"key4\", \"someval4\" },\n { \"key5\", \"someval5\" },\n },\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := secretmanager.NewSecret(ctx, \"secret-with-annotations\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"someval\"),\n\t\t\t\t\"key2\": pulumi.String(\"someval2\"),\n\t\t\t\t\"key3\": pulumi.String(\"someval3\"),\n\t\t\t\t\"key4\": pulumi.String(\"someval4\"),\n\t\t\t\t\"key5\": pulumi.String(\"someval5\"),\n\t\t\t},\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\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.SecretReplicationAutoArgs;\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 secret_with_annotations = new Secret(\"secret-with-annotations\", SecretArgs.builder()\n .secretId(\"secret\")\n .labels(Map.of(\"label\", \"my-label\"))\n .annotations(Map.ofEntries(\n Map.entry(\"key1\", \"someval\"),\n Map.entry(\"key2\", \"someval2\"),\n Map.entry(\"key3\", \"someval3\"),\n Map.entry(\"key4\", \"someval4\"),\n Map.entry(\"key5\", \"someval5\")\n ))\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-with-annotations:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n labels:\n label: my-label\n annotations:\n key1: someval\n key2: someval2\n key3: someval3\n key4: someval4\n key5: someval5\n replication:\n auto: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret With Version Destroy Ttl\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_with_version_destroy_ttl = new gcp.secretmanager.Secret(\"secret-with-version-destroy-ttl\", {\n secretId: \"secret\",\n versionDestroyTtl: \"2592000s\",\n replication: {\n auto: {},\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_with_version_destroy_ttl = gcp.secretmanager.Secret(\"secret-with-version-destroy-ttl\",\n secret_id=\"secret\",\n version_destroy_ttl=\"2592000s\",\n replication={\n \"auto\": {},\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 secret_with_version_destroy_ttl = new Gcp.SecretManager.Secret(\"secret-with-version-destroy-ttl\", new()\n {\n SecretId = \"secret\",\n VersionDestroyTtl = \"2592000s\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := secretmanager.NewSecret(ctx, \"secret-with-version-destroy-ttl\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tVersionDestroyTtl: pulumi.String(\"2592000s\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\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.SecretReplicationAutoArgs;\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 secret_with_version_destroy_ttl = new Secret(\"secret-with-version-destroy-ttl\", SecretArgs.builder()\n .secretId(\"secret\")\n .versionDestroyTtl(\"2592000s\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-with-version-destroy-ttl:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n versionDestroyTtl: 2592000s\n replication:\n auto: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret With Automatic Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst kms_secret_binding = new gcp.kms.CryptoKeyIAMMember(\"kms-secret-binding\", {\n cryptoKeyId: \"kms-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com`),\n});\nconst secret_with_automatic_cmek = new gcp.secretmanager.Secret(\"secret-with-automatic-cmek\", {\n secretId: \"secret\",\n replication: {\n auto: {\n customerManagedEncryption: {\n kmsKeyName: \"kms-key\",\n },\n },\n },\n}, {\n dependsOn: [kms_secret_binding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nkms_secret_binding = gcp.kms.CryptoKeyIAMMember(\"kms-secret-binding\",\n crypto_key_id=\"kms-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com\")\nsecret_with_automatic_cmek = gcp.secretmanager.Secret(\"secret-with-automatic-cmek\",\n secret_id=\"secret\",\n replication={\n \"auto\": {\n \"customer_managed_encryption\": {\n \"kms_key_name\": \"kms-key\",\n },\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[kms_secret_binding]))\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 kms_secret_binding = new Gcp.Kms.CryptoKeyIAMMember(\"kms-secret-binding\", new()\n {\n CryptoKeyId = \"kms-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-secretmanager.iam.gserviceaccount.com\",\n });\n\n var secret_with_automatic_cmek = new Gcp.SecretManager.Secret(\"secret-with-automatic-cmek\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = new Gcp.SecretManager.Inputs.SecretReplicationAutoArgs\n {\n CustomerManagedEncryption = new Gcp.SecretManager.Inputs.SecretReplicationAutoCustomerManagedEncryptionArgs\n {\n KmsKeyName = \"kms-key\",\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n kms_secret_binding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMMember(ctx, \"kms-secret-binding\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-secretmanager.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"secret-with-automatic-cmek\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{\n\t\t\t\t\tCustomerManagedEncryption: \u0026secretmanager.SecretReplicationAutoCustomerManagedEncryptionArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"kms-key\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tkms_secret_binding,\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.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoCustomerManagedEncryptionArgs;\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 kms_secret_binding = new CryptoKeyIAMMember(\"kms-secret-binding\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-secretmanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var secret_with_automatic_cmek = new Secret(\"secret-with-automatic-cmek\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .auto(SecretReplicationAutoArgs.builder()\n .customerManagedEncryption(SecretReplicationAutoCustomerManagedEncryptionArgs.builder()\n .kmsKeyName(\"kms-key\")\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(kms_secret_binding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n kms-secret-binding:\n type: gcp:kms:CryptoKeyIAMMember\n properties:\n cryptoKeyId: kms-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com\n secret-with-automatic-cmek:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n auto:\n customerManagedEncryption:\n kmsKeyName: kms-key\n options:\n dependson:\n - ${[\"kms-secret-binding\"]}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecret can be imported using any of these accepted formats:\n\n* `projects/{{project}}/secrets/{{secret_id}}`\n\n* `{{project}}/{{secret_id}}`\n\n* `{{secret_id}}`\n\nWhen using the `pulumi import` command, Secret can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:secretmanager/secret:Secret default projects/{{project}}/secrets/{{secret_id}}\n```\n\n```sh\n$ pulumi import gcp:secretmanager/secret:Secret default {{project}}/{{secret_id}}\n```\n\n```sh\n$ pulumi import gcp:secretmanager/secret:Secret default {{secret_id}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -231612,7 +231612,7 @@ } }, "gcp:secretmanager/secretVersion:SecretVersion": { - "description": "A secret version resource.\n\n\n\n\n\n## Example Usage\n\n### Secret Version Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-version\",\n labels: {\n label: \"my-label\",\n },\n replication: {\n auto: {},\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-version\",\n labels={\n \"label\": \"my-label\",\n },\n replication={\n \"auto\": {},\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"secret-data\")\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 secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\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 secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-version\")\n .labels(Map.of(\"label\", \"my-label\"))\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-version\n labels:\n label: my-label\n replication:\n auto: {}\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret Version Deletion Policy Abandon\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-version\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secret_version_deletion_policy = new gcp.secretmanager.SecretVersion(\"secret-version-deletion-policy\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n deletionPolicy: \"ABANDON\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-version\",\n replication={\n \"userManaged\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_version_deletion_policy = gcp.secretmanager.SecretVersion(\"secret-version-deletion-policy\",\n secret=secret_basic.id,\n secret_data=\"secret-data\",\n deletion_policy=\"ABANDON\")\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 secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\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 secret_version_deletion_policy = new Gcp.SecretManager.SecretVersion(\"secret-version-deletion-policy\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n DeletionPolicy = \"ABANDON\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\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\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-deletion-policy\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t\tDeletionPolicy: pulumi.String(\"ABANDON\"),\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 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 secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-version\")\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 secret_version_deletion_policy = new SecretVersion(\"secret-version-deletion-policy\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .deletionPolicy(\"ABANDON\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-version\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secret-version-deletion-policy:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n deletionPolicy: ABANDON\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret Version Deletion Policy Disable\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-version\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secret_version_deletion_policy = new gcp.secretmanager.SecretVersion(\"secret-version-deletion-policy\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n deletionPolicy: \"DISABLE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-version\",\n replication={\n \"userManaged\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_version_deletion_policy = gcp.secretmanager.SecretVersion(\"secret-version-deletion-policy\",\n secret=secret_basic.id,\n secret_data=\"secret-data\",\n deletion_policy=\"DISABLE\")\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 secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\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 secret_version_deletion_policy = new Gcp.SecretManager.SecretVersion(\"secret-version-deletion-policy\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n DeletionPolicy = \"DISABLE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\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\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-deletion-policy\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DISABLE\"),\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 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 secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-version\")\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 secret_version_deletion_policy = new SecretVersion(\"secret-version-deletion-policy\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .deletionPolicy(\"DISABLE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-version\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secret-version-deletion-policy:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n deletionPolicy: DISABLE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret Version With Base64 String Secret Data\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-version\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secret_version_base64 = new gcp.secretmanager.SecretVersion(\"secret-version-base64\", {\n secret: secret_basic.id,\n isSecretDataBase64: true,\n secretData: std.filebase64({\n input: \"secret-data.pfx\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-version\",\n replication={\n \"userManaged\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_version_base64 = gcp.secretmanager.SecretVersion(\"secret-version-base64\",\n secret=secret_basic.id,\n is_secret_data_base64=True,\n secret_data=std.filebase64(input=\"secret-data.pfx\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\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 secret_version_base64 = new Gcp.SecretManager.SecretVersion(\"secret-version-base64\", new()\n {\n Secret = secret_basic.Id,\n IsSecretDataBase64 = true,\n SecretData = Std.Filebase64.Invoke(new()\n {\n Input = \"secret-data.pfx\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\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\tinvokeFilebase64, err := std.Filebase64(ctx, \u0026std.Filebase64Args{\n\t\t\tInput: \"secret-data.pfx\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-base64\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tIsSecretDataBase64: pulumi.Bool(true),\n\t\t\tSecretData: invokeFilebase64.Result,\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 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 secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-version\")\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 secret_version_base64 = new SecretVersion(\"secret-version-base64\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .isSecretDataBase64(true)\n .secretData(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"secret-data.pfx\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-version\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secret-version-base64:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n isSecretDataBase64: true\n secretData:\n fn::invoke:\n Function: std:filebase64\n Arguments:\n input: secret-data.pfx\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecretVersion can be imported using any of these accepted formats:\n\n* `projects/{{project}}/secrets/{{secret_id}}/versions/{{version}}`\n\nWhen using the `pulumi import` command, SecretVersion can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:secretmanager/secretVersion:SecretVersion default projects/{{project}}/secrets/{{secret_id}}/versions/{{version}}\n```\n\n", + "description": "A secret version resource.\n\n\n\n\n\n## Example Usage\n\n### Secret Version Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-version\",\n labels: {\n label: \"my-label\",\n },\n replication: {\n auto: {},\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-version\",\n labels={\n \"label\": \"my-label\",\n },\n replication={\n \"auto\": {},\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"secret-data\")\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 secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\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.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\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 secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-version\")\n .labels(Map.of(\"label\", \"my-label\"))\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-version\n labels:\n label: my-label\n replication:\n auto: {}\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret Version Deletion Policy Abandon\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-version\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secret_version_deletion_policy = new gcp.secretmanager.SecretVersion(\"secret-version-deletion-policy\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n deletionPolicy: \"ABANDON\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-version\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_version_deletion_policy = gcp.secretmanager.SecretVersion(\"secret-version-deletion-policy\",\n secret=secret_basic.id,\n secret_data=\"secret-data\",\n deletion_policy=\"ABANDON\")\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 secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\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 secret_version_deletion_policy = new Gcp.SecretManager.SecretVersion(\"secret-version-deletion-policy\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n DeletionPolicy = \"ABANDON\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\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\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-deletion-policy\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t\tDeletionPolicy: pulumi.String(\"ABANDON\"),\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 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 secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-version\")\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 secret_version_deletion_policy = new SecretVersion(\"secret-version-deletion-policy\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .deletionPolicy(\"ABANDON\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-version\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secret-version-deletion-policy:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n deletionPolicy: ABANDON\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret Version Deletion Policy Disable\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-version\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secret_version_deletion_policy = new gcp.secretmanager.SecretVersion(\"secret-version-deletion-policy\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n deletionPolicy: \"DISABLE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-version\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_version_deletion_policy = gcp.secretmanager.SecretVersion(\"secret-version-deletion-policy\",\n secret=secret_basic.id,\n secret_data=\"secret-data\",\n deletion_policy=\"DISABLE\")\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 secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\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 secret_version_deletion_policy = new Gcp.SecretManager.SecretVersion(\"secret-version-deletion-policy\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n DeletionPolicy = \"DISABLE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\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\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-deletion-policy\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DISABLE\"),\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 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 secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-version\")\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 secret_version_deletion_policy = new SecretVersion(\"secret-version-deletion-policy\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .deletionPolicy(\"DISABLE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-version\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secret-version-deletion-policy:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n deletionPolicy: DISABLE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret Version With Base64 String Secret Data\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-version\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secret_version_base64 = new gcp.secretmanager.SecretVersion(\"secret-version-base64\", {\n secret: secret_basic.id,\n isSecretDataBase64: true,\n secretData: std.filebase64({\n input: \"secret-data.pfx\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-version\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_version_base64 = gcp.secretmanager.SecretVersion(\"secret-version-base64\",\n secret=secret_basic.id,\n is_secret_data_base64=True,\n secret_data=std.filebase64(input=\"secret-data.pfx\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\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 secret_version_base64 = new Gcp.SecretManager.SecretVersion(\"secret-version-base64\", new()\n {\n Secret = secret_basic.Id,\n IsSecretDataBase64 = true,\n SecretData = Std.Filebase64.Invoke(new()\n {\n Input = \"secret-data.pfx\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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 := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\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\tinvokeFilebase64, err := std.Filebase64(ctx, \u0026std.Filebase64Args{\n\t\t\tInput: \"secret-data.pfx\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-base64\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tIsSecretDataBase64: pulumi.Bool(true),\n\t\t\tSecretData: pulumi.String(invokeFilebase64.Result),\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 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 secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-version\")\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 secret_version_base64 = new SecretVersion(\"secret-version-base64\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .isSecretDataBase64(true)\n .secretData(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"secret-data.pfx\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-version\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secret-version-base64:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n isSecretDataBase64: true\n secretData:\n fn::invoke:\n Function: std:filebase64\n Arguments:\n input: secret-data.pfx\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecretVersion can be imported using any of these accepted formats:\n\n* `projects/{{project}}/secrets/{{secret_id}}/versions/{{version}}`\n\nWhen using the `pulumi import` command, SecretVersion can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:secretmanager/secretVersion:SecretVersion default projects/{{project}}/secrets/{{secret_id}}/versions/{{version}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -231738,7 +231738,7 @@ } }, "gcp:securesourcemanager/instance:Instance": { - "description": "Instances are deployed to an available Google Cloud region and are accessible via their web interface.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/secure-source-manager/docs/reference/rest/v1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/secure-source-manager/docs/create-instance)\n\n## Example Usage\n\n### Secure Source Manager Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n location: \"us-central1\",\n instanceId: \"my-instance\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.securesourcemanager.Instance(\"default\",\n location=\"us-central1\",\n instance_id=\"my-instance\",\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 @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n Location = \"us-central1\",\n InstanceId = \"my-instance\",\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/v7/go/gcp/securesourcemanager\"\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 := securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\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.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\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 Instance(\"default\", InstanceArgs.builder()\n .location(\"us-central1\")\n .instanceId(\"my-instance\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n location: us-central1\n instanceId: my-instance\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-keyring\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-key\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyBinding = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_binding\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`),\n});\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n location: \"us-central1\",\n instanceId: \"my-instance\",\n kmsKey: cryptoKey.id,\n}, {\n dependsOn: [cryptoKeyBinding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-keyring\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-key\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_binding = gcp.kms.CryptoKeyIAMMember(\"crypto_key_binding\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\")\ndefault = gcp.securesourcemanager.Instance(\"default\",\n location=\"us-central1\",\n instance_id=\"my-instance\",\n kms_key=crypto_key.id,\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_binding]))\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(\"key_ring\", new()\n {\n Name = \"my-keyring\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-key\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyBinding = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_binding\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com\",\n });\n\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n Location = \"us-central1\",\n InstanceId = \"my-instance\",\n KmsKey = cryptoKey.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyBinding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securesourcemanager\"\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, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-keyring\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-key\"),\n\t\t\tKeyRing: keyRing.ID(),\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\tcryptoKeyBinding, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_binding\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tKmsKey: cryptoKey.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyBinding,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\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 .name(\"my-keyring\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-key\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyBinding = new CryptoKeyIAMMember(\"cryptoKeyBinding\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .location(\"us-central1\")\n .instanceId(\"my-instance\")\n .kmsKey(cryptoKey.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyBinding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-keyring\n location: us-central1\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-key\n keyRing: ${keyRing.id}\n cryptoKeyBinding:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_binding\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n location: us-central1\n instanceId: my-instance\n kmsKey: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyBinding}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Private\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst caPool = new gcp.certificateauthority.CaPool(\"ca_pool\", {\n name: \"ca-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n publishingOptions: {\n publishCaCert: true,\n publishCrl: true,\n },\n});\nconst rootCa = new gcp.certificateauthority.Authority(\"root_ca\", {\n pool: caPool.name,\n certificateAuthorityId: \"root-ca\",\n location: \"us-central1\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"google\",\n commonName: \"my-certificate-authority\",\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 ignoreActiveCertificatesOnDeletion: true,\n skipGracePeriod: true,\n});\nconst project = gcp.organizations.getProject({});\nconst caPoolBinding = new gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\", {\n caPool: caPool.id,\n role: \"roles/privateca.certificateRequester\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`)],\n});\n// ca pool IAM permissions can take time to propagate\nconst wait60Seconds = new time.index.Sleep(\"wait_60_seconds\", {createDuration: \"60s\"}, {\n dependsOn: [caPoolBinding],\n});\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n instanceId: \"my-instance\",\n location: \"us-central1\",\n privateConfig: {\n isPrivate: true,\n caPool: caPool.id,\n },\n}, {\n dependsOn: [\n rootCa,\n wait60Seconds,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nca_pool = gcp.certificateauthority.CaPool(\"ca_pool\",\n name=\"ca-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n publishing_options={\n \"publishCaCert\": True,\n \"publishCrl\": True,\n })\nroot_ca = gcp.certificateauthority.Authority(\"root_ca\",\n pool=ca_pool.name,\n certificate_authority_id=\"root-ca\",\n location=\"us-central1\",\n config={\n \"subjectConfig\": {\n \"subject\": {\n \"organization\": \"google\",\n \"commonName\": \"my-certificate-authority\",\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 key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n ignore_active_certificates_on_deletion=True,\n skip_grace_period=True)\nproject = gcp.organizations.get_project()\nca_pool_binding = gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\",\n ca_pool=ca_pool.id,\n role=\"roles/privateca.certificateRequester\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\"])\n# ca pool IAM permissions can take time to propagate\nwait60_seconds = time.index.Sleep(\"wait_60_seconds\", create_duration=60s,\nopts = pulumi.ResourceOptions(depends_on=[ca_pool_binding]))\ndefault = gcp.securesourcemanager.Instance(\"default\",\n instance_id=\"my-instance\",\n location=\"us-central1\",\n private_config={\n \"isPrivate\": True,\n \"caPool\": ca_pool.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n root_ca,\n wait60_seconds,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var caPool = new Gcp.CertificateAuthority.CaPool(\"ca_pool\", new()\n {\n Name = \"ca-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = true,\n PublishCrl = true,\n },\n });\n\n var rootCa = new Gcp.CertificateAuthority.Authority(\"root_ca\", new()\n {\n Pool = caPool.Name,\n CertificateAuthorityId = \"root-ca\",\n Location = \"us-central1\",\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 = \"google\",\n CommonName = \"my-certificate-authority\",\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 IgnoreActiveCertificatesOnDeletion = true,\n SkipGracePeriod = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var caPoolBinding = new Gcp.CertificateAuthority.CaPoolIamBinding(\"ca_pool_binding\", new()\n {\n CaPool = caPool.Id,\n Role = \"roles/privateca.certificateRequester\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com\",\n },\n });\n\n // ca pool IAM permissions can take time to propagate\n var wait60Seconds = new Time.Index.Sleep(\"wait_60_seconds\", new()\n {\n CreateDuration = \"60s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n caPoolBinding,\n },\n });\n\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n InstanceId = \"my-instance\",\n Location = \"us-central1\",\n PrivateConfig = new Gcp.SecureSourceManager.Inputs.InstancePrivateConfigArgs\n {\n IsPrivate = true,\n CaPool = caPool.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n rootCa,\n wait60Seconds,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcaPool, err := certificateauthority.NewCaPool(ctx, \"ca_pool\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(true),\n\t\t\t\tPublishCrl: 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\trootCa, err := certificateauthority.NewAuthority(ctx, \"root_ca\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: caPool.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"root-ca\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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(\"google\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\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\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\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\tcaPoolBinding, err := certificateauthority.NewCaPoolIamBinding(ctx, \"ca_pool_binding\", \u0026certificateauthority.CaPoolIamBindingArgs{\n\t\t\tCaPool: caPool.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateRequester\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.Number)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ca pool IAM permissions can take time to propagate\n\t\twait60Seconds, err := time.NewSleep(ctx, \"wait_60_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"60s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcaPoolBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateConfig: \u0026securesourcemanager.InstancePrivateConfigArgs{\n\t\t\t\tIsPrivate: pulumi.Bool(true),\n\t\t\t\tCaPool: caPool.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\trootCa,\n\t\t\twait60Seconds,\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.inputs.CaPoolPublishingOptionsArgs;\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.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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBinding;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBindingArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.inputs.InstancePrivateConfigArgs;\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 caPool = new CaPool(\"caPool\", CaPoolArgs.builder()\n .name(\"ca-pool\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(true)\n .publishCrl(true)\n .build())\n .build());\n\n var rootCa = new Authority(\"rootCa\", AuthorityArgs.builder()\n .pool(caPool.name())\n .certificateAuthorityId(\"root-ca\")\n .location(\"us-central1\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"google\")\n .commonName(\"my-certificate-authority\")\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 .ignoreActiveCertificatesOnDeletion(true)\n .skipGracePeriod(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var caPoolBinding = new CaPoolIamBinding(\"caPoolBinding\", CaPoolIamBindingArgs.builder()\n .caPool(caPool.id())\n .role(\"roles/privateca.certificateRequester\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n // ca pool IAM permissions can take time to propagate\n var wait60Seconds = new Sleep(\"wait60Seconds\", SleepArgs.builder()\n .createDuration(\"60s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(caPoolBinding)\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .instanceId(\"my-instance\")\n .location(\"us-central1\")\n .privateConfig(InstancePrivateConfigArgs.builder()\n .isPrivate(true)\n .caPool(caPool.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n rootCa,\n wait60Seconds)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n caPool:\n type: gcp:certificateauthority:CaPool\n name: ca_pool\n properties:\n name: ca-pool\n location: us-central1\n tier: ENTERPRISE\n publishingOptions:\n publishCaCert: true\n publishCrl: true\n rootCa:\n type: gcp:certificateauthority:Authority\n name: root_ca\n properties:\n pool: ${caPool.name}\n certificateAuthorityId: root-ca\n location: us-central1\n config:\n subjectConfig:\n subject:\n organization: google\n commonName: my-certificate-authority\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 deletionProtection: false\n ignoreActiveCertificatesOnDeletion: true\n skipGracePeriod: true\n caPoolBinding:\n type: gcp:certificateauthority:CaPoolIamBinding\n name: ca_pool_binding\n properties:\n caPool: ${caPool.id}\n role: roles/privateca.certificateRequester\n members:\n - serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n instanceId: my-instance\n location: us-central1\n privateConfig:\n isPrivate: true\n caPool: ${caPool.id}\n options:\n dependson:\n - ${rootCa}\n - ${wait60Seconds}\n # ca pool IAM permissions can take time to propagate\n wait60Seconds:\n type: time:sleep\n name: wait_60_seconds\n properties:\n createDuration: 60s\n options:\n dependson:\n - ${caPoolBinding}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{instance_id}}`\n\n* `{{project}}/{{location}}/{{instance_id}}`\n\n* `{{location}}/{{instance_id}}`\n\n* `{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default {{project}}/{{location}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default {{location}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default {{instance_id}}\n```\n\n", + "description": "Instances are deployed to an available Google Cloud region and are accessible via their web interface.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/secure-source-manager/docs/reference/rest/v1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/secure-source-manager/docs/create-instance)\n\n## Example Usage\n\n### Secure Source Manager Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n location: \"us-central1\",\n instanceId: \"my-instance\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.securesourcemanager.Instance(\"default\",\n location=\"us-central1\",\n instance_id=\"my-instance\",\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 @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n Location = \"us-central1\",\n InstanceId = \"my-instance\",\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/v7/go/gcp/securesourcemanager\"\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 := securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\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.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\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 Instance(\"default\", InstanceArgs.builder()\n .location(\"us-central1\")\n .instanceId(\"my-instance\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n location: us-central1\n instanceId: my-instance\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-keyring\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-key\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyBinding = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_binding\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`),\n});\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n location: \"us-central1\",\n instanceId: \"my-instance\",\n kmsKey: cryptoKey.id,\n}, {\n dependsOn: [cryptoKeyBinding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-keyring\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-key\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_binding = gcp.kms.CryptoKeyIAMMember(\"crypto_key_binding\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\")\ndefault = gcp.securesourcemanager.Instance(\"default\",\n location=\"us-central1\",\n instance_id=\"my-instance\",\n kms_key=crypto_key.id,\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_binding]))\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(\"key_ring\", new()\n {\n Name = \"my-keyring\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-key\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyBinding = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_binding\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com\",\n });\n\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n Location = \"us-central1\",\n InstanceId = \"my-instance\",\n KmsKey = cryptoKey.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyBinding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securesourcemanager\"\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, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-keyring\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-key\"),\n\t\t\tKeyRing: keyRing.ID(),\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\tcryptoKeyBinding, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_binding\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tKmsKey: cryptoKey.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyBinding,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\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 .name(\"my-keyring\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-key\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyBinding = new CryptoKeyIAMMember(\"cryptoKeyBinding\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .location(\"us-central1\")\n .instanceId(\"my-instance\")\n .kmsKey(cryptoKey.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyBinding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-keyring\n location: us-central1\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-key\n keyRing: ${keyRing.id}\n cryptoKeyBinding:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_binding\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n location: us-central1\n instanceId: my-instance\n kmsKey: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyBinding}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Private\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst caPool = new gcp.certificateauthority.CaPool(\"ca_pool\", {\n name: \"ca-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n publishingOptions: {\n publishCaCert: true,\n publishCrl: true,\n },\n});\nconst rootCa = new gcp.certificateauthority.Authority(\"root_ca\", {\n pool: caPool.name,\n certificateAuthorityId: \"root-ca\",\n location: \"us-central1\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"google\",\n commonName: \"my-certificate-authority\",\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 ignoreActiveCertificatesOnDeletion: true,\n skipGracePeriod: true,\n});\nconst project = gcp.organizations.getProject({});\nconst caPoolBinding = new gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\", {\n caPool: caPool.id,\n role: \"roles/privateca.certificateRequester\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`)],\n});\n// ca pool IAM permissions can take time to propagate\nconst wait60Seconds = new time.index.Sleep(\"wait_60_seconds\", {createDuration: \"60s\"}, {\n dependsOn: [caPoolBinding],\n});\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n instanceId: \"my-instance\",\n location: \"us-central1\",\n privateConfig: {\n isPrivate: true,\n caPool: caPool.id,\n },\n}, {\n dependsOn: [\n rootCa,\n wait60Seconds,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nca_pool = gcp.certificateauthority.CaPool(\"ca_pool\",\n name=\"ca-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n publishing_options={\n \"publish_ca_cert\": True,\n \"publish_crl\": True,\n })\nroot_ca = gcp.certificateauthority.Authority(\"root_ca\",\n pool=ca_pool.name,\n certificate_authority_id=\"root-ca\",\n location=\"us-central1\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"google\",\n \"common_name\": \"my-certificate-authority\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n ignore_active_certificates_on_deletion=True,\n skip_grace_period=True)\nproject = gcp.organizations.get_project()\nca_pool_binding = gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\",\n ca_pool=ca_pool.id,\n role=\"roles/privateca.certificateRequester\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\"])\n# ca pool IAM permissions can take time to propagate\nwait60_seconds = time.index.Sleep(\"wait_60_seconds\", create_duration=60s,\nopts = pulumi.ResourceOptions(depends_on=[ca_pool_binding]))\ndefault = gcp.securesourcemanager.Instance(\"default\",\n instance_id=\"my-instance\",\n location=\"us-central1\",\n private_config={\n \"is_private\": True,\n \"ca_pool\": ca_pool.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n root_ca,\n wait60_seconds,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var caPool = new Gcp.CertificateAuthority.CaPool(\"ca_pool\", new()\n {\n Name = \"ca-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = true,\n PublishCrl = true,\n },\n });\n\n var rootCa = new Gcp.CertificateAuthority.Authority(\"root_ca\", new()\n {\n Pool = caPool.Name,\n CertificateAuthorityId = \"root-ca\",\n Location = \"us-central1\",\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 = \"google\",\n CommonName = \"my-certificate-authority\",\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 IgnoreActiveCertificatesOnDeletion = true,\n SkipGracePeriod = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var caPoolBinding = new Gcp.CertificateAuthority.CaPoolIamBinding(\"ca_pool_binding\", new()\n {\n CaPool = caPool.Id,\n Role = \"roles/privateca.certificateRequester\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com\",\n },\n });\n\n // ca pool IAM permissions can take time to propagate\n var wait60Seconds = new Time.Index.Sleep(\"wait_60_seconds\", new()\n {\n CreateDuration = \"60s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n caPoolBinding,\n },\n });\n\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n InstanceId = \"my-instance\",\n Location = \"us-central1\",\n PrivateConfig = new Gcp.SecureSourceManager.Inputs.InstancePrivateConfigArgs\n {\n IsPrivate = true,\n CaPool = caPool.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n rootCa,\n wait60Seconds,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcaPool, err := certificateauthority.NewCaPool(ctx, \"ca_pool\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(true),\n\t\t\t\tPublishCrl: 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\trootCa, err := certificateauthority.NewAuthority(ctx, \"root_ca\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: caPool.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"root-ca\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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(\"google\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\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\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\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\tcaPoolBinding, err := certificateauthority.NewCaPoolIamBinding(ctx, \"ca_pool_binding\", \u0026certificateauthority.CaPoolIamBindingArgs{\n\t\t\tCaPool: caPool.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateRequester\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.Number)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ca pool IAM permissions can take time to propagate\n\t\twait60Seconds, err := time.NewSleep(ctx, \"wait_60_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"60s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcaPoolBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateConfig: \u0026securesourcemanager.InstancePrivateConfigArgs{\n\t\t\t\tIsPrivate: pulumi.Bool(true),\n\t\t\t\tCaPool: caPool.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\trootCa,\n\t\t\twait60Seconds,\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.inputs.CaPoolPublishingOptionsArgs;\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.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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBinding;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBindingArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.inputs.InstancePrivateConfigArgs;\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 caPool = new CaPool(\"caPool\", CaPoolArgs.builder()\n .name(\"ca-pool\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(true)\n .publishCrl(true)\n .build())\n .build());\n\n var rootCa = new Authority(\"rootCa\", AuthorityArgs.builder()\n .pool(caPool.name())\n .certificateAuthorityId(\"root-ca\")\n .location(\"us-central1\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"google\")\n .commonName(\"my-certificate-authority\")\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 .ignoreActiveCertificatesOnDeletion(true)\n .skipGracePeriod(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var caPoolBinding = new CaPoolIamBinding(\"caPoolBinding\", CaPoolIamBindingArgs.builder()\n .caPool(caPool.id())\n .role(\"roles/privateca.certificateRequester\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n // ca pool IAM permissions can take time to propagate\n var wait60Seconds = new Sleep(\"wait60Seconds\", SleepArgs.builder()\n .createDuration(\"60s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(caPoolBinding)\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .instanceId(\"my-instance\")\n .location(\"us-central1\")\n .privateConfig(InstancePrivateConfigArgs.builder()\n .isPrivate(true)\n .caPool(caPool.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n rootCa,\n wait60Seconds)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n caPool:\n type: gcp:certificateauthority:CaPool\n name: ca_pool\n properties:\n name: ca-pool\n location: us-central1\n tier: ENTERPRISE\n publishingOptions:\n publishCaCert: true\n publishCrl: true\n rootCa:\n type: gcp:certificateauthority:Authority\n name: root_ca\n properties:\n pool: ${caPool.name}\n certificateAuthorityId: root-ca\n location: us-central1\n config:\n subjectConfig:\n subject:\n organization: google\n commonName: my-certificate-authority\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 deletionProtection: false\n ignoreActiveCertificatesOnDeletion: true\n skipGracePeriod: true\n caPoolBinding:\n type: gcp:certificateauthority:CaPoolIamBinding\n name: ca_pool_binding\n properties:\n caPool: ${caPool.id}\n role: roles/privateca.certificateRequester\n members:\n - serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n instanceId: my-instance\n location: us-central1\n privateConfig:\n isPrivate: true\n caPool: ${caPool.id}\n options:\n dependson:\n - ${rootCa}\n - ${wait60Seconds}\n # ca pool IAM permissions can take time to propagate\n wait60Seconds:\n type: time:sleep\n name: wait_60_seconds\n properties:\n createDuration: 60s\n options:\n dependson:\n - ${caPoolBinding}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{instance_id}}`\n\n* `{{project}}/{{location}}/{{instance_id}}`\n\n* `{{location}}/{{instance_id}}`\n\n* `{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default {{project}}/{{location}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default {{location}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default {{instance_id}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -232218,7 +232218,7 @@ } }, "gcp:securesourcemanager/repository:Repository": { - "description": "Repositories store source code. It supports all Git SCM client commands and has built-in pull requests and issue tracking. Both HTTPS and SSH authentication are supported.\n\n\nTo get more information about Repository, see:\n\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/secure-source-manager/docs/overview)\n\n## Example Usage\n\n### Secure Source Manager Repository Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.securesourcemanager.Instance(\"instance\", {\n location: \"us-central1\",\n instanceId: \"my-instance\",\n});\nconst _default = new gcp.securesourcemanager.Repository(\"default\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n instance: instance.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.securesourcemanager.Instance(\"instance\",\n location=\"us-central1\",\n instance_id=\"my-instance\")\ndefault = gcp.securesourcemanager.Repository(\"default\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n instance=instance.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 instance = new Gcp.SecureSourceManager.Instance(\"instance\", new()\n {\n Location = \"us-central1\",\n InstanceId = \"my-instance\",\n });\n\n var @default = new Gcp.SecureSourceManager.Repository(\"default\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Instance = instance.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securesourcemanager\"\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 := securesourcemanager.NewInstance(ctx, \"instance\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securesourcemanager.NewRepository(ctx, \"default\", \u0026securesourcemanager.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tInstance: instance.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.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.Repository;\nimport com.pulumi.gcp.securesourcemanager.RepositoryArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .location(\"us-central1\")\n .instanceId(\"my-instance\")\n .build());\n\n var default_ = new Repository(\"default\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .instance(instance.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:securesourcemanager:Instance\n properties:\n location: us-central1\n instanceId: my-instance\n default:\n type: gcp:securesourcemanager:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n instance: ${instance.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Repository Initial Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.securesourcemanager.Instance(\"instance\", {\n location: \"us-central1\",\n instanceId: \"my-instance\",\n});\nconst _default = new gcp.securesourcemanager.Repository(\"default\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n instance: instance.name,\n description: \"This is a test repository\",\n initialConfig: {\n defaultBranch: \"main\",\n gitignores: [\"python\"],\n license: \"mit\",\n readme: \"default\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.securesourcemanager.Instance(\"instance\",\n location=\"us-central1\",\n instance_id=\"my-instance\")\ndefault = gcp.securesourcemanager.Repository(\"default\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n instance=instance.name,\n description=\"This is a test repository\",\n initial_config={\n \"defaultBranch\": \"main\",\n \"gitignores\": [\"python\"],\n \"license\": \"mit\",\n \"readme\": \"default\",\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.SecureSourceManager.Instance(\"instance\", new()\n {\n Location = \"us-central1\",\n InstanceId = \"my-instance\",\n });\n\n var @default = new Gcp.SecureSourceManager.Repository(\"default\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Instance = instance.Name,\n Description = \"This is a test repository\",\n InitialConfig = new Gcp.SecureSourceManager.Inputs.RepositoryInitialConfigArgs\n {\n DefaultBranch = \"main\",\n Gitignores = new[]\n {\n \"python\",\n },\n License = \"mit\",\n Readme = \"default\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securesourcemanager\"\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 := securesourcemanager.NewInstance(ctx, \"instance\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securesourcemanager.NewRepository(ctx, \"default\", \u0026securesourcemanager.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tInstance: instance.Name,\n\t\t\tDescription: pulumi.String(\"This is a test repository\"),\n\t\t\tInitialConfig: \u0026securesourcemanager.RepositoryInitialConfigArgs{\n\t\t\t\tDefaultBranch: pulumi.String(\"main\"),\n\t\t\t\tGitignores: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"python\"),\n\t\t\t\t},\n\t\t\t\tLicense: pulumi.String(\"mit\"),\n\t\t\t\tReadme: pulumi.String(\"default\"),\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.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.Repository;\nimport com.pulumi.gcp.securesourcemanager.RepositoryArgs;\nimport com.pulumi.gcp.securesourcemanager.inputs.RepositoryInitialConfigArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .location(\"us-central1\")\n .instanceId(\"my-instance\")\n .build());\n\n var default_ = new Repository(\"default\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .instance(instance.name())\n .description(\"This is a test repository\")\n .initialConfig(RepositoryInitialConfigArgs.builder()\n .defaultBranch(\"main\")\n .gitignores(\"python\")\n .license(\"mit\")\n .readme(\"default\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:securesourcemanager:Instance\n properties:\n location: us-central1\n instanceId: my-instance\n default:\n type: gcp:securesourcemanager:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n instance: ${instance.name}\n description: This is a test repository\n initialConfig:\n defaultBranch: main\n gitignores:\n - python\n license: mit\n readme: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}`\n\n* `{{project}}/{{location}}/{{repository_id}}`\n\n* `{{location}}/{{repository_id}}`\n\n* `{{repository_id}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securesourcemanager/repository:Repository default projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/repository:Repository default {{project}}/{{location}}/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/repository:Repository default {{location}}/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/repository:Repository default {{repository_id}}\n```\n\n", + "description": "Repositories store source code. It supports all Git SCM client commands and has built-in pull requests and issue tracking. Both HTTPS and SSH authentication are supported.\n\n\nTo get more information about Repository, see:\n\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/secure-source-manager/docs/overview)\n\n## Example Usage\n\n### Secure Source Manager Repository Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.securesourcemanager.Instance(\"instance\", {\n location: \"us-central1\",\n instanceId: \"my-instance\",\n});\nconst _default = new gcp.securesourcemanager.Repository(\"default\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n instance: instance.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.securesourcemanager.Instance(\"instance\",\n location=\"us-central1\",\n instance_id=\"my-instance\")\ndefault = gcp.securesourcemanager.Repository(\"default\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n instance=instance.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 instance = new Gcp.SecureSourceManager.Instance(\"instance\", new()\n {\n Location = \"us-central1\",\n InstanceId = \"my-instance\",\n });\n\n var @default = new Gcp.SecureSourceManager.Repository(\"default\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Instance = instance.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securesourcemanager\"\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 := securesourcemanager.NewInstance(ctx, \"instance\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securesourcemanager.NewRepository(ctx, \"default\", \u0026securesourcemanager.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tInstance: instance.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.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.Repository;\nimport com.pulumi.gcp.securesourcemanager.RepositoryArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .location(\"us-central1\")\n .instanceId(\"my-instance\")\n .build());\n\n var default_ = new Repository(\"default\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .instance(instance.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:securesourcemanager:Instance\n properties:\n location: us-central1\n instanceId: my-instance\n default:\n type: gcp:securesourcemanager:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n instance: ${instance.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Repository Initial Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.securesourcemanager.Instance(\"instance\", {\n location: \"us-central1\",\n instanceId: \"my-instance\",\n});\nconst _default = new gcp.securesourcemanager.Repository(\"default\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n instance: instance.name,\n description: \"This is a test repository\",\n initialConfig: {\n defaultBranch: \"main\",\n gitignores: [\"python\"],\n license: \"mit\",\n readme: \"default\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.securesourcemanager.Instance(\"instance\",\n location=\"us-central1\",\n instance_id=\"my-instance\")\ndefault = gcp.securesourcemanager.Repository(\"default\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n instance=instance.name,\n description=\"This is a test repository\",\n initial_config={\n \"default_branch\": \"main\",\n \"gitignores\": [\"python\"],\n \"license\": \"mit\",\n \"readme\": \"default\",\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.SecureSourceManager.Instance(\"instance\", new()\n {\n Location = \"us-central1\",\n InstanceId = \"my-instance\",\n });\n\n var @default = new Gcp.SecureSourceManager.Repository(\"default\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Instance = instance.Name,\n Description = \"This is a test repository\",\n InitialConfig = new Gcp.SecureSourceManager.Inputs.RepositoryInitialConfigArgs\n {\n DefaultBranch = \"main\",\n Gitignores = new[]\n {\n \"python\",\n },\n License = \"mit\",\n Readme = \"default\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securesourcemanager\"\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 := securesourcemanager.NewInstance(ctx, \"instance\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securesourcemanager.NewRepository(ctx, \"default\", \u0026securesourcemanager.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tInstance: instance.Name,\n\t\t\tDescription: pulumi.String(\"This is a test repository\"),\n\t\t\tInitialConfig: \u0026securesourcemanager.RepositoryInitialConfigArgs{\n\t\t\t\tDefaultBranch: pulumi.String(\"main\"),\n\t\t\t\tGitignores: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"python\"),\n\t\t\t\t},\n\t\t\t\tLicense: pulumi.String(\"mit\"),\n\t\t\t\tReadme: pulumi.String(\"default\"),\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.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.Repository;\nimport com.pulumi.gcp.securesourcemanager.RepositoryArgs;\nimport com.pulumi.gcp.securesourcemanager.inputs.RepositoryInitialConfigArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .location(\"us-central1\")\n .instanceId(\"my-instance\")\n .build());\n\n var default_ = new Repository(\"default\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .instance(instance.name())\n .description(\"This is a test repository\")\n .initialConfig(RepositoryInitialConfigArgs.builder()\n .defaultBranch(\"main\")\n .gitignores(\"python\")\n .license(\"mit\")\n .readme(\"default\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:securesourcemanager:Instance\n properties:\n location: us-central1\n instanceId: my-instance\n default:\n type: gcp:securesourcemanager:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n instance: ${instance.name}\n description: This is a test repository\n initialConfig:\n defaultBranch: main\n gitignores:\n - python\n license: mit\n readme: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}`\n\n* `{{project}}/{{location}}/{{repository_id}}`\n\n* `{{location}}/{{repository_id}}`\n\n* `{{repository_id}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securesourcemanager/repository:Repository default projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/repository:Repository default {{project}}/{{location}}/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/repository:Repository default {{location}}/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/repository:Repository default {{repository_id}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -232816,7 +232816,7 @@ } }, "gcp:securitycenter/folderCustomModule:FolderCustomModule": { - "description": "Represents an instance of a Security Health Analytics custom module, including\nits full module name, display name, enablement state, and last updated time.\nYou can create a custom module at the organization, folder, or project level.\nCustom modules that you create at the organization or folder level are inherited\nby the child folders and projects.\n\n\nTo get more information about FolderCustomModule, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/rest/v1/folders.securityHealthAnalyticsSettings.customModules)\n* How-to Guides\n * [Overview of custom modules for Security Health Analytics](https://cloud.google.com/security-command-center/docs/custom-modules-sha-overview)\n\n## Example Usage\n\n### Scc Folder Custom Module Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.organizations.Folder(\"folder\", {\n parent: \"organizations/123456789\",\n displayName: \"folder-name\",\n});\nconst example = new gcp.securitycenter.FolderCustomModule(\"example\", {\n folder: folder.folderId,\n displayName: \"basic_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n description: \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n recommendation: \"Set the rotation period to at most 30 days.\",\n severity: \"MEDIUM\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.organizations.Folder(\"folder\",\n parent=\"organizations/123456789\",\n display_name=\"folder-name\")\nexample = gcp.securitycenter.FolderCustomModule(\"example\",\n folder=folder.folder_id,\n display_name=\"basic_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n \"resourceSelector\": {\n \"resourceTypes\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"description\": \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n \"recommendation\": \"Set the rotation period to at most 30 days.\",\n \"severity\": \"MEDIUM\",\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 folder = new Gcp.Organizations.Folder(\"folder\", new()\n {\n Parent = \"organizations/123456789\",\n DisplayName = \"folder-name\",\n });\n\n var example = new Gcp.SecurityCenter.FolderCustomModule(\"example\", new()\n {\n Folder = folder.FolderId,\n DisplayName = \"basic_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.FolderCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.FolderCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.FolderCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Description = \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n Recommendation = \"Set the rotation period to at most 30 days.\",\n Severity = \"MEDIUM\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfolder, err := organizations.NewFolder(ctx, \"folder\", \u0026organizations.FolderArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDisplayName: pulumi.String(\"folder-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securitycenter.NewFolderCustomModule(ctx, \"example\", \u0026securitycenter.FolderCustomModuleArgs{\n\t\t\tFolder: folder.FolderId,\n\t\t\tDisplayName: pulumi.String(\"basic_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.FolderCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.FolderCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t},\n\t\t\t\tResourceSelector: \u0026securitycenter.FolderCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDescription: pulumi.String(\"The rotation period of the identified cryptokey resource exceeds 30 days.\"),\n\t\t\t\tRecommendation: pulumi.String(\"Set the rotation period to at most 30 days.\"),\n\t\t\t\tSeverity: pulumi.String(\"MEDIUM\"),\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.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.securitycenter.FolderCustomModule;\nimport com.pulumi.gcp.securitycenter.FolderCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.FolderCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.FolderCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.FolderCustomModuleCustomConfigResourceSelectorArgs;\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 folder = new Folder(\"folder\", FolderArgs.builder()\n .parent(\"organizations/123456789\")\n .displayName(\"folder-name\")\n .build());\n\n var example = new FolderCustomModule(\"example\", FolderCustomModuleArgs.builder()\n .folder(folder.folderId())\n .displayName(\"basic_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(FolderCustomModuleCustomConfigArgs.builder()\n .predicate(FolderCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .build())\n .resourceSelector(FolderCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .description(\"The rotation period of the identified cryptokey resource exceeds 30 days.\")\n .recommendation(\"Set the rotation period to at most 30 days.\")\n .severity(\"MEDIUM\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:organizations:Folder\n properties:\n parent: organizations/123456789\n displayName: folder-name\n example:\n type: gcp:securitycenter:FolderCustomModule\n properties:\n folder: ${folder.folderId}\n displayName: basic_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n description: The rotation period of the identified cryptokey resource exceeds 30 days.\n recommendation: Set the rotation period to at most 30 days.\n severity: MEDIUM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scc Folder Custom Module Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.organizations.Folder(\"folder\", {\n parent: \"organizations/123456789\",\n displayName: \"folder-name\",\n});\nconst example = new gcp.securitycenter.FolderCustomModule(\"example\", {\n folder: folder.folderId,\n displayName: \"full_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n customOutput: {\n properties: [{\n name: \"duration\",\n valueExpression: {\n expression: \"resource.rotationPeriod\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n }],\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n severity: \"LOW\",\n description: \"Description of the custom module\",\n recommendation: \"Steps to resolve violation\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.organizations.Folder(\"folder\",\n parent=\"organizations/123456789\",\n display_name=\"folder-name\")\nexample = gcp.securitycenter.FolderCustomModule(\"example\",\n folder=folder.folder_id,\n display_name=\"full_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n \"customOutput\": {\n \"properties\": [{\n \"name\": \"duration\",\n \"valueExpression\": {\n \"expression\": \"resource.rotationPeriod\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n }],\n },\n \"resourceSelector\": {\n \"resourceTypes\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"severity\": \"LOW\",\n \"description\": \"Description of the custom module\",\n \"recommendation\": \"Steps to resolve violation\",\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 folder = new Gcp.Organizations.Folder(\"folder\", new()\n {\n Parent = \"organizations/123456789\",\n DisplayName = \"folder-name\",\n });\n\n var example = new Gcp.SecurityCenter.FolderCustomModule(\"example\", new()\n {\n Folder = folder.FolderId,\n DisplayName = \"full_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.FolderCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.FolderCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n CustomOutput = new Gcp.SecurityCenter.Inputs.FolderCustomModuleCustomConfigCustomOutputArgs\n {\n Properties = new[]\n {\n new Gcp.SecurityCenter.Inputs.FolderCustomModuleCustomConfigCustomOutputPropertyArgs\n {\n Name = \"duration\",\n ValueExpression = new Gcp.SecurityCenter.Inputs.FolderCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs\n {\n Expression = \"resource.rotationPeriod\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n },\n },\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.FolderCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Severity = \"LOW\",\n Description = \"Description of the custom module\",\n Recommendation = \"Steps to resolve violation\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfolder, err := organizations.NewFolder(ctx, \"folder\", \u0026organizations.FolderArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDisplayName: pulumi.String(\"folder-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securitycenter.NewFolderCustomModule(ctx, \"example\", \u0026securitycenter.FolderCustomModuleArgs{\n\t\t\tFolder: folder.FolderId,\n\t\t\tDisplayName: pulumi.String(\"full_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.FolderCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.FolderCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\n\t\t\t\t},\n\t\t\t\tCustomOutput: securitycenter.FolderCustomModuleCustomConfigCustomOutputArgs{\n\t\t\t\t\tProperties: securitycenter.FolderCustomModuleCustomConfigCustomOutputPropertyArray{\n\t\t\t\t\t\t\u0026securitycenter.FolderCustomModuleCustomConfigCustomOutputPropertyArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"duration\"),\n\t\t\t\t\t\t\tValueExpression: \u0026securitycenter.FolderCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs{\n\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod\"),\n\t\t\t\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\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\tResourceSelector: \u0026securitycenter.FolderCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSeverity: pulumi.String(\"LOW\"),\n\t\t\t\tDescription: pulumi.String(\"Description of the custom module\"),\n\t\t\t\tRecommendation: pulumi.String(\"Steps to resolve violation\"),\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.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.securitycenter.FolderCustomModule;\nimport com.pulumi.gcp.securitycenter.FolderCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.FolderCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.FolderCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.FolderCustomModuleCustomConfigCustomOutputArgs;\nimport com.pulumi.gcp.securitycenter.inputs.FolderCustomModuleCustomConfigResourceSelectorArgs;\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 folder = new Folder(\"folder\", FolderArgs.builder()\n .parent(\"organizations/123456789\")\n .displayName(\"folder-name\")\n .build());\n\n var example = new FolderCustomModule(\"example\", FolderCustomModuleArgs.builder()\n .folder(folder.folderId())\n .displayName(\"full_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(FolderCustomModuleCustomConfigArgs.builder()\n .predicate(FolderCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .customOutput(FolderCustomModuleCustomConfigCustomOutputArgs.builder()\n .properties(FolderCustomModuleCustomConfigCustomOutputPropertyArgs.builder()\n .name(\"duration\")\n .valueExpression(FolderCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs.builder()\n .expression(\"resource.rotationPeriod\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .build())\n .build())\n .resourceSelector(FolderCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .severity(\"LOW\")\n .description(\"Description of the custom module\")\n .recommendation(\"Steps to resolve violation\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:organizations:Folder\n properties:\n parent: organizations/123456789\n displayName: folder-name\n example:\n type: gcp:securitycenter:FolderCustomModule\n properties:\n folder: ${folder.folderId}\n displayName: full_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n customOutput:\n properties:\n - name: duration\n valueExpression:\n expression: resource.rotationPeriod\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n severity: LOW\n description: Description of the custom module\n recommendation: Steps to resolve violation\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFolderCustomModule can be imported using any of these accepted formats:\n\n* `folders/{{folder}}/securityHealthAnalyticsSettings/customModules/{{name}}`\n\n* `{{folder}}/{{name}}`\n\nWhen using the `pulumi import` command, FolderCustomModule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/folderCustomModule:FolderCustomModule default folders/{{folder}}/securityHealthAnalyticsSettings/customModules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/folderCustomModule:FolderCustomModule default {{folder}}/{{name}}\n```\n\n", + "description": "Represents an instance of a Security Health Analytics custom module, including\nits full module name, display name, enablement state, and last updated time.\nYou can create a custom module at the organization, folder, or project level.\nCustom modules that you create at the organization or folder level are inherited\nby the child folders and projects.\n\n\nTo get more information about FolderCustomModule, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/rest/v1/folders.securityHealthAnalyticsSettings.customModules)\n* How-to Guides\n * [Overview of custom modules for Security Health Analytics](https://cloud.google.com/security-command-center/docs/custom-modules-sha-overview)\n\n## Example Usage\n\n### Scc Folder Custom Module Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.organizations.Folder(\"folder\", {\n parent: \"organizations/123456789\",\n displayName: \"folder-name\",\n});\nconst example = new gcp.securitycenter.FolderCustomModule(\"example\", {\n folder: folder.folderId,\n displayName: \"basic_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n description: \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n recommendation: \"Set the rotation period to at most 30 days.\",\n severity: \"MEDIUM\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.organizations.Folder(\"folder\",\n parent=\"organizations/123456789\",\n display_name=\"folder-name\")\nexample = gcp.securitycenter.FolderCustomModule(\"example\",\n folder=folder.folder_id,\n display_name=\"basic_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n \"resource_selector\": {\n \"resource_types\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"description\": \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n \"recommendation\": \"Set the rotation period to at most 30 days.\",\n \"severity\": \"MEDIUM\",\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 folder = new Gcp.Organizations.Folder(\"folder\", new()\n {\n Parent = \"organizations/123456789\",\n DisplayName = \"folder-name\",\n });\n\n var example = new Gcp.SecurityCenter.FolderCustomModule(\"example\", new()\n {\n Folder = folder.FolderId,\n DisplayName = \"basic_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.FolderCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.FolderCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.FolderCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Description = \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n Recommendation = \"Set the rotation period to at most 30 days.\",\n Severity = \"MEDIUM\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfolder, err := organizations.NewFolder(ctx, \"folder\", \u0026organizations.FolderArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDisplayName: pulumi.String(\"folder-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securitycenter.NewFolderCustomModule(ctx, \"example\", \u0026securitycenter.FolderCustomModuleArgs{\n\t\t\tFolder: folder.FolderId,\n\t\t\tDisplayName: pulumi.String(\"basic_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.FolderCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.FolderCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t},\n\t\t\t\tResourceSelector: \u0026securitycenter.FolderCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDescription: pulumi.String(\"The rotation period of the identified cryptokey resource exceeds 30 days.\"),\n\t\t\t\tRecommendation: pulumi.String(\"Set the rotation period to at most 30 days.\"),\n\t\t\t\tSeverity: pulumi.String(\"MEDIUM\"),\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.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.securitycenter.FolderCustomModule;\nimport com.pulumi.gcp.securitycenter.FolderCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.FolderCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.FolderCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.FolderCustomModuleCustomConfigResourceSelectorArgs;\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 folder = new Folder(\"folder\", FolderArgs.builder()\n .parent(\"organizations/123456789\")\n .displayName(\"folder-name\")\n .build());\n\n var example = new FolderCustomModule(\"example\", FolderCustomModuleArgs.builder()\n .folder(folder.folderId())\n .displayName(\"basic_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(FolderCustomModuleCustomConfigArgs.builder()\n .predicate(FolderCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .build())\n .resourceSelector(FolderCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .description(\"The rotation period of the identified cryptokey resource exceeds 30 days.\")\n .recommendation(\"Set the rotation period to at most 30 days.\")\n .severity(\"MEDIUM\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:organizations:Folder\n properties:\n parent: organizations/123456789\n displayName: folder-name\n example:\n type: gcp:securitycenter:FolderCustomModule\n properties:\n folder: ${folder.folderId}\n displayName: basic_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n description: The rotation period of the identified cryptokey resource exceeds 30 days.\n recommendation: Set the rotation period to at most 30 days.\n severity: MEDIUM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scc Folder Custom Module Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.organizations.Folder(\"folder\", {\n parent: \"organizations/123456789\",\n displayName: \"folder-name\",\n});\nconst example = new gcp.securitycenter.FolderCustomModule(\"example\", {\n folder: folder.folderId,\n displayName: \"full_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n customOutput: {\n properties: [{\n name: \"duration\",\n valueExpression: {\n expression: \"resource.rotationPeriod\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n }],\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n severity: \"LOW\",\n description: \"Description of the custom module\",\n recommendation: \"Steps to resolve violation\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.organizations.Folder(\"folder\",\n parent=\"organizations/123456789\",\n display_name=\"folder-name\")\nexample = gcp.securitycenter.FolderCustomModule(\"example\",\n folder=folder.folder_id,\n display_name=\"full_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n \"custom_output\": {\n \"properties\": [{\n \"name\": \"duration\",\n \"value_expression\": {\n \"expression\": \"resource.rotationPeriod\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n }],\n },\n \"resource_selector\": {\n \"resource_types\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"severity\": \"LOW\",\n \"description\": \"Description of the custom module\",\n \"recommendation\": \"Steps to resolve violation\",\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 folder = new Gcp.Organizations.Folder(\"folder\", new()\n {\n Parent = \"organizations/123456789\",\n DisplayName = \"folder-name\",\n });\n\n var example = new Gcp.SecurityCenter.FolderCustomModule(\"example\", new()\n {\n Folder = folder.FolderId,\n DisplayName = \"full_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.FolderCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.FolderCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n CustomOutput = new Gcp.SecurityCenter.Inputs.FolderCustomModuleCustomConfigCustomOutputArgs\n {\n Properties = new[]\n {\n new Gcp.SecurityCenter.Inputs.FolderCustomModuleCustomConfigCustomOutputPropertyArgs\n {\n Name = \"duration\",\n ValueExpression = new Gcp.SecurityCenter.Inputs.FolderCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs\n {\n Expression = \"resource.rotationPeriod\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n },\n },\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.FolderCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Severity = \"LOW\",\n Description = \"Description of the custom module\",\n Recommendation = \"Steps to resolve violation\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfolder, err := organizations.NewFolder(ctx, \"folder\", \u0026organizations.FolderArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDisplayName: pulumi.String(\"folder-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securitycenter.NewFolderCustomModule(ctx, \"example\", \u0026securitycenter.FolderCustomModuleArgs{\n\t\t\tFolder: folder.FolderId,\n\t\t\tDisplayName: pulumi.String(\"full_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.FolderCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.FolderCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\n\t\t\t\t},\n\t\t\t\tCustomOutput: securitycenter.FolderCustomModuleCustomConfigCustomOutputArgs{\n\t\t\t\t\tProperties: securitycenter.FolderCustomModuleCustomConfigCustomOutputPropertyArray{\n\t\t\t\t\t\t\u0026securitycenter.FolderCustomModuleCustomConfigCustomOutputPropertyArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"duration\"),\n\t\t\t\t\t\t\tValueExpression: \u0026securitycenter.FolderCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs{\n\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod\"),\n\t\t\t\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\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\tResourceSelector: \u0026securitycenter.FolderCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSeverity: pulumi.String(\"LOW\"),\n\t\t\t\tDescription: pulumi.String(\"Description of the custom module\"),\n\t\t\t\tRecommendation: pulumi.String(\"Steps to resolve violation\"),\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.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.securitycenter.FolderCustomModule;\nimport com.pulumi.gcp.securitycenter.FolderCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.FolderCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.FolderCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.FolderCustomModuleCustomConfigCustomOutputArgs;\nimport com.pulumi.gcp.securitycenter.inputs.FolderCustomModuleCustomConfigResourceSelectorArgs;\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 folder = new Folder(\"folder\", FolderArgs.builder()\n .parent(\"organizations/123456789\")\n .displayName(\"folder-name\")\n .build());\n\n var example = new FolderCustomModule(\"example\", FolderCustomModuleArgs.builder()\n .folder(folder.folderId())\n .displayName(\"full_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(FolderCustomModuleCustomConfigArgs.builder()\n .predicate(FolderCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .customOutput(FolderCustomModuleCustomConfigCustomOutputArgs.builder()\n .properties(FolderCustomModuleCustomConfigCustomOutputPropertyArgs.builder()\n .name(\"duration\")\n .valueExpression(FolderCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs.builder()\n .expression(\"resource.rotationPeriod\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .build())\n .build())\n .resourceSelector(FolderCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .severity(\"LOW\")\n .description(\"Description of the custom module\")\n .recommendation(\"Steps to resolve violation\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:organizations:Folder\n properties:\n parent: organizations/123456789\n displayName: folder-name\n example:\n type: gcp:securitycenter:FolderCustomModule\n properties:\n folder: ${folder.folderId}\n displayName: full_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n customOutput:\n properties:\n - name: duration\n valueExpression:\n expression: resource.rotationPeriod\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n severity: LOW\n description: Description of the custom module\n recommendation: Steps to resolve violation\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFolderCustomModule can be imported using any of these accepted formats:\n\n* `folders/{{folder}}/securityHealthAnalyticsSettings/customModules/{{name}}`\n\n* `{{folder}}/{{name}}`\n\nWhen using the `pulumi import` command, FolderCustomModule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/folderCustomModule:FolderCustomModule default folders/{{folder}}/securityHealthAnalyticsSettings/customModules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/folderCustomModule:FolderCustomModule default {{folder}}/{{name}}\n```\n\n", "properties": { "ancestorModule": { "type": "string", @@ -232929,7 +232929,7 @@ } }, "gcp:securitycenter/instanceIamBinding:InstanceIamBinding": { - "description": "Represents a Data Fusion instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/data-fusion/docs/reference/rest/v1beta1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-fusion/docs/)\n\n## Example Usage\n\n### Data Fusion Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicInstance = new gcp.datafusion.Instance(\"basic_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_instance = gcp.datafusion.Instance(\"basic_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\")\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 basicInstance = new Gcp.DataFusion.Instance(\"basic_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"basic_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 basicInstance = new Instance(\"basicInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicInstance:\n type: gcp:datafusion:Instance\n name: basic_instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.appengine.getDefaultServiceAccount({});\nconst network = new gcp.compute.Network(\"network\", {name: \"datafusion-full-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"datafusion-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 22,\n network: network.id,\n});\nconst extendedInstance = new gcp.datafusion.Instance(\"extended_instance\", {\n name: \"my-instance\",\n description: \"My Data Fusion instance\",\n displayName: \"My Data Fusion instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n enableStackdriverLogging: true,\n enableStackdriverMonitoring: true,\n privateInstance: true,\n dataprocServiceAccount: _default.then(_default =\u003e _default.email),\n labels: {\n example_key: \"example_value\",\n },\n networkConfig: {\n network: \"default\",\n ipAllocation: pulumi.interpolate`${privateIpAlloc.address}/${privateIpAlloc.prefixLength}`,\n },\n accelerators: [{\n acceleratorType: \"CDC\",\n state: \"ENABLED\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.appengine.get_default_service_account()\nnetwork = gcp.compute.Network(\"network\", name=\"datafusion-full-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"datafusion-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=22,\n network=network.id)\nextended_instance = gcp.datafusion.Instance(\"extended_instance\",\n name=\"my-instance\",\n description=\"My Data Fusion instance\",\n display_name=\"My Data Fusion instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n enable_stackdriver_logging=True,\n enable_stackdriver_monitoring=True,\n private_instance=True,\n dataproc_service_account=default.email,\n labels={\n \"example_key\": \"example_value\",\n },\n network_config={\n \"network\": \"default\",\n \"ipAllocation\": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f\"{address}/{prefix_length}\"),\n },\n accelerators=[{\n \"acceleratorType\": \"CDC\",\n \"state\": \"ENABLED\",\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 @default = Gcp.AppEngine.GetDefaultServiceAccount.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"datafusion-full-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"datafusion-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 22,\n Network = network.Id,\n });\n\n var extendedInstance = new Gcp.DataFusion.Instance(\"extended_instance\", new()\n {\n Name = \"my-instance\",\n Description = \"My Data Fusion instance\",\n DisplayName = \"My Data Fusion instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EnableStackdriverLogging = true,\n EnableStackdriverMonitoring = true,\n PrivateInstance = true,\n DataprocServiceAccount = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Labels = \n {\n { \"example_key\", \"example_value\" },\n },\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n Network = \"default\",\n IpAllocation = Output.Tuple(privateIpAlloc.Address, privateIpAlloc.PrefixLength).Apply(values =\u003e\n {\n var address = values.Item1;\n var prefixLength = values.Item2;\n return $\"{address}/{prefixLength}\";\n }),\n },\n Accelerators = new[]\n {\n new Gcp.DataFusion.Inputs.InstanceAcceleratorArgs\n {\n AcceleratorType = \"CDC\",\n State = \"ENABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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_default, err := appengine.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-full-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"datafusion-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"extended_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDescription: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tDisplayName: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableStackdriverMonitoring: pulumi.Bool(true),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tDataprocServiceAccount: pulumi.String(_default.Email),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example_key\": pulumi.String(\"example_value\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\tIpAllocation: pulumi.All(privateIpAlloc.Address, privateIpAlloc.PrefixLength).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\taddress := _args[0].(string)\n\t\t\t\t\tprefixLength := _args[1].(int)\n\t\t\t\t\treturn fmt.Sprintf(\"%v/%v\", address, prefixLength), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tAccelerators: datafusion.InstanceAcceleratorArray{\n\t\t\t\t\u0026datafusion.InstanceAcceleratorArgs{\n\t\t\t\t\tAcceleratorType: pulumi.String(\"CDC\"),\n\t\t\t\t\tState: pulumi.String(\"ENABLED\"),\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.appengine.AppengineFunctions;\nimport com.pulumi.gcp.appengine.inputs.GetDefaultServiceAccountArgs;\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceAcceleratorArgs;\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 default = AppengineFunctions.getDefaultServiceAccount();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"datafusion-full-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"datafusion-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(22)\n .network(network.id())\n .build());\n\n var extendedInstance = new Instance(\"extendedInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .description(\"My Data Fusion instance\")\n .displayName(\"My Data Fusion instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .enableStackdriverLogging(true)\n .enableStackdriverMonitoring(true)\n .privateInstance(true)\n .dataprocServiceAccount(default_.email())\n .labels(Map.of(\"example_key\", \"example_value\"))\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .network(\"default\")\n .ipAllocation(Output.tuple(privateIpAlloc.address(), privateIpAlloc.prefixLength()).applyValue(values -\u003e {\n var address = values.t1;\n var prefixLength = values.t2;\n return String.format(\"%s/%s\", address,prefixLength);\n }))\n .build())\n .accelerators(InstanceAcceleratorArgs.builder()\n .acceleratorType(\"CDC\")\n .state(\"ENABLED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedInstance:\n type: gcp:datafusion:Instance\n name: extended_instance\n properties:\n name: my-instance\n description: My Data Fusion instance\n displayName: My Data Fusion instance\n region: us-central1\n type: BASIC\n enableStackdriverLogging: true\n enableStackdriverMonitoring: true\n privateInstance: true\n dataprocServiceAccount: ${default.email}\n labels:\n example_key: example_value\n networkConfig:\n network: default\n ipAllocation: ${privateIpAlloc.address}/${privateIpAlloc.prefixLength}\n accelerators:\n - acceleratorType: CDC\n state: ENABLED\n network:\n type: gcp:compute:Network\n properties:\n name: datafusion-full-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: datafusion-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 22\n network: ${network.id}\nvariables:\n default:\n fn::invoke:\n Function: gcp:appengine:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst psc = new gcp.compute.Network(\"psc\", {\n name: \"datafusion-psc-network\",\n autoCreateSubnetworks: false,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc\", {\n name: \"datafusion-psc-subnet\",\n region: \"us-central1\",\n network: psc.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscNetworkAttachment = new gcp.compute.NetworkAttachment(\"psc\", {\n name: \"datafusion-psc-attachment\",\n region: \"us-central1\",\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n subnetworks: [pscSubnetwork.selfLink],\n});\nconst pscInstance = new gcp.datafusion.Instance(\"psc_instance\", {\n name: \"psc-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n privateInstance: true,\n networkConfig: {\n connectionType: \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n privateServiceConnectConfig: {\n networkAttachment: pscNetworkAttachment.id,\n unreachableCidrBlock: \"192.168.0.0/25\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc = gcp.compute.Network(\"psc\",\n name=\"datafusion-psc-network\",\n auto_create_subnetworks=False)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc\",\n name=\"datafusion-psc-subnet\",\n region=\"us-central1\",\n network=psc.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_network_attachment = gcp.compute.NetworkAttachment(\"psc\",\n name=\"datafusion-psc-attachment\",\n region=\"us-central1\",\n connection_preference=\"ACCEPT_AUTOMATIC\",\n subnetworks=[psc_subnetwork.self_link])\npsc_instance = gcp.datafusion.Instance(\"psc_instance\",\n name=\"psc-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n private_instance=True,\n network_config={\n \"connectionType\": \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n \"privateServiceConnectConfig\": {\n \"networkAttachment\": psc_network_attachment.id,\n \"unreachableCidrBlock\": \"192.168.0.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 psc = new Gcp.Compute.Network(\"psc\", new()\n {\n Name = \"datafusion-psc-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc\", new()\n {\n Name = \"datafusion-psc-subnet\",\n Region = \"us-central1\",\n Network = psc.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"psc\", new()\n {\n Name = \"datafusion-psc-attachment\",\n Region = \"us-central1\",\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n Subnetworks = new[]\n {\n pscSubnetwork.SelfLink,\n },\n });\n\n var pscInstance = new Gcp.DataFusion.Instance(\"psc_instance\", new()\n {\n Name = \"psc-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n PrivateInstance = true,\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n ConnectionType = \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n PrivateServiceConnectConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs\n {\n NetworkAttachment = pscNetworkAttachment.Id,\n UnreachableCidrBlock = \"192.168.0.0/25\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpsc, err := compute.NewNetwork(ctx, \"psc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-network\"),\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\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: psc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"psc\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"psc_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"psc-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tConnectionType: pulumi.String(\"PRIVATE_SERVICE_CONNECT_INTERFACES\"),\n\t\t\t\tPrivateServiceConnectConfig: \u0026datafusion.InstanceNetworkConfigPrivateServiceConnectConfigArgs{\n\t\t\t\t\tNetworkAttachment: pscNetworkAttachment.ID(),\n\t\t\t\t\tUnreachableCidrBlock: pulumi.String(\"192.168.0.0/25\"),\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.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs;\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 psc = new Network(\"psc\", NetworkArgs.builder()\n .name(\"datafusion-psc-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"datafusion-psc-subnet\")\n .region(\"us-central1\")\n .network(psc.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscNetworkAttachment = new NetworkAttachment(\"pscNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"datafusion-psc-attachment\")\n .region(\"us-central1\")\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .subnetworks(pscSubnetwork.selfLink())\n .build());\n\n var pscInstance = new Instance(\"pscInstance\", InstanceArgs.builder()\n .name(\"psc-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .privateInstance(true)\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .connectionType(\"PRIVATE_SERVICE_CONNECT_INTERFACES\")\n .privateServiceConnectConfig(InstanceNetworkConfigPrivateServiceConnectConfigArgs.builder()\n .networkAttachment(pscNetworkAttachment.id())\n .unreachableCidrBlock(\"192.168.0.0/25\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscInstance:\n type: gcp:datafusion:Instance\n name: psc_instance\n properties:\n name: psc-instance\n region: us-central1\n type: BASIC\n privateInstance: true\n networkConfig:\n connectionType: PRIVATE_SERVICE_CONNECT_INTERFACES\n privateServiceConnectConfig:\n networkAttachment: ${pscNetworkAttachment.id}\n unreachableCidrBlock: 192.168.0.0/25\n psc:\n type: gcp:compute:Network\n properties:\n name: datafusion-psc-network\n autoCreateSubnetworks: false\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc\n properties:\n name: datafusion-psc-subnet\n region: us-central1\n network: ${psc.id}\n ipCidrRange: 10.0.0.0/16\n pscNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: psc\n properties:\n name: datafusion-psc-attachment\n region: us-central1\n connectionPreference: ACCEPT_AUTOMATIC\n subnetworks:\n - ${pscSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-instance\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-instance\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyMember = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com`),\n});\nconst cmek = new gcp.datafusion.Instance(\"cmek\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n cryptoKeyConfig: {\n keyReference: cryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKeyMember],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-instance\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-instance\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_member = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\")\ncmek = gcp.datafusion.Instance(\"cmek\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n crypto_key_config={\n \"keyReference\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member]))\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(\"key_ring\", new()\n {\n Name = \"my-instance\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-instance\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyMember = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datafusion.iam.gserviceaccount.com\",\n });\n\n var cmek = new Gcp.DataFusion.Instance(\"cmek\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n CryptoKeyConfig = new Gcp.DataFusion.Inputs.InstanceCryptoKeyConfigArgs\n {\n KeyReference = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tKeyRing: keyRing.ID(),\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\tcryptoKeyMember, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-datafusion.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"cmek\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tCryptoKeyConfig: \u0026datafusion.InstanceCryptoKeyConfigArgs{\n\t\t\t\tKeyReference: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceCryptoKeyConfigArgs;\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 .name(\"my-instance\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-instance\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyMember = new CryptoKeyIAMMember(\"cryptoKeyMember\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datafusion.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var cmek = new Instance(\"cmek\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .cryptoKeyConfig(InstanceCryptoKeyConfigArgs.builder()\n .keyReference(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cmek:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n cryptoKeyConfig:\n keyReference: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyMember}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-instance\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-instance\n location: us-central1\n cryptoKeyMember:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst enterpriseInstance = new gcp.datafusion.Instance(\"enterprise_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"ENTERPRISE\",\n enableRbac: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nenterprise_instance = gcp.datafusion.Instance(\"enterprise_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"ENTERPRISE\",\n enable_rbac=True)\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 enterpriseInstance = new Gcp.DataFusion.Instance(\"enterprise_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"ENTERPRISE\",\n EnableRbac = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"enterprise_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"ENTERPRISE\"),\n\t\t\tEnableRbac: pulumi.Bool(true),\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 enterpriseInstance = new Instance(\"enterpriseInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"ENTERPRISE\")\n .enableRbac(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n enterpriseInstance:\n type: gcp:datafusion:Instance\n name: enterprise_instance\n properties:\n name: my-instance\n region: us-central1\n type: ENTERPRISE\n enableRbac: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Event\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst eventTopic = new gcp.pubsub.Topic(\"event\", {name: \"my-instance\"});\nconst event = new gcp.datafusion.Instance(\"event\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n eventPublishConfig: {\n enabled: true,\n topic: eventTopic.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nevent_topic = gcp.pubsub.Topic(\"event\", name=\"my-instance\")\nevent = gcp.datafusion.Instance(\"event\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n event_publish_config={\n \"enabled\": True,\n \"topic\": event_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 eventTopic = new Gcp.PubSub.Topic(\"event\", new()\n {\n Name = \"my-instance\",\n });\n\n var @event = new Gcp.DataFusion.Instance(\"event\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EventPublishConfig = new Gcp.DataFusion.Inputs.InstanceEventPublishConfigArgs\n {\n Enabled = true,\n Topic = eventTopic.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\teventTopic, err := pubsub.NewTopic(ctx, \"event\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"event\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEventPublishConfig: \u0026datafusion.InstanceEventPublishConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tTopic: eventTopic.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.pubsub.TopicArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceEventPublishConfigArgs;\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 eventTopic = new Topic(\"eventTopic\", TopicArgs.builder()\n .name(\"my-instance\")\n .build());\n\n var event = new Instance(\"event\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .eventPublishConfig(InstanceEventPublishConfigArgs.builder()\n .enabled(true)\n .topic(eventTopic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n event:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n eventPublishConfig:\n enabled: true\n topic: ${eventTopic.id}\n eventTopic:\n type: gcp:pubsub:Topic\n name: event\n properties:\n name: my-instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst zone = new gcp.datafusion.Instance(\"zone\", {\n name: \"my-instance\",\n region: \"us-central1\",\n zone: \"us-central1-a\",\n type: \"DEVELOPER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nzone = gcp.datafusion.Instance(\"zone\",\n name=\"my-instance\",\n region=\"us-central1\",\n zone=\"us-central1-a\",\n type=\"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 zone = new Gcp.DataFusion.Instance(\"zone\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Zone = \"us-central1-a\",\n Type = \"DEVELOPER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"zone\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tType: 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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 zone = new Instance(\"zone\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .zone(\"us-central1-a\")\n .type(\"DEVELOPER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n zone:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n zone: us-central1-a\n type: DEVELOPER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamBinding:InstanceIamBinding default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamBinding:InstanceIamBinding default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamBinding:InstanceIamBinding default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamBinding:InstanceIamBinding default {{name}}\n```\n\n", + "description": "Represents a Data Fusion instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/data-fusion/docs/reference/rest/v1beta1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-fusion/docs/)\n\n## Example Usage\n\n### Data Fusion Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicInstance = new gcp.datafusion.Instance(\"basic_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_instance = gcp.datafusion.Instance(\"basic_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\")\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 basicInstance = new Gcp.DataFusion.Instance(\"basic_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"basic_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 basicInstance = new Instance(\"basicInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicInstance:\n type: gcp:datafusion:Instance\n name: basic_instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.appengine.getDefaultServiceAccount({});\nconst network = new gcp.compute.Network(\"network\", {name: \"datafusion-full-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"datafusion-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 22,\n network: network.id,\n});\nconst extendedInstance = new gcp.datafusion.Instance(\"extended_instance\", {\n name: \"my-instance\",\n description: \"My Data Fusion instance\",\n displayName: \"My Data Fusion instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n enableStackdriverLogging: true,\n enableStackdriverMonitoring: true,\n privateInstance: true,\n dataprocServiceAccount: _default.then(_default =\u003e _default.email),\n labels: {\n example_key: \"example_value\",\n },\n networkConfig: {\n network: \"default\",\n ipAllocation: pulumi.interpolate`${privateIpAlloc.address}/${privateIpAlloc.prefixLength}`,\n },\n accelerators: [{\n acceleratorType: \"CDC\",\n state: \"ENABLED\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.appengine.get_default_service_account()\nnetwork = gcp.compute.Network(\"network\", name=\"datafusion-full-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"datafusion-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=22,\n network=network.id)\nextended_instance = gcp.datafusion.Instance(\"extended_instance\",\n name=\"my-instance\",\n description=\"My Data Fusion instance\",\n display_name=\"My Data Fusion instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n enable_stackdriver_logging=True,\n enable_stackdriver_monitoring=True,\n private_instance=True,\n dataproc_service_account=default.email,\n labels={\n \"example_key\": \"example_value\",\n },\n network_config={\n \"network\": \"default\",\n \"ip_allocation\": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f\"{address}/{prefix_length}\"),\n },\n accelerators=[{\n \"accelerator_type\": \"CDC\",\n \"state\": \"ENABLED\",\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 @default = Gcp.AppEngine.GetDefaultServiceAccount.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"datafusion-full-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"datafusion-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 22,\n Network = network.Id,\n });\n\n var extendedInstance = new Gcp.DataFusion.Instance(\"extended_instance\", new()\n {\n Name = \"my-instance\",\n Description = \"My Data Fusion instance\",\n DisplayName = \"My Data Fusion instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EnableStackdriverLogging = true,\n EnableStackdriverMonitoring = true,\n PrivateInstance = true,\n DataprocServiceAccount = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Labels = \n {\n { \"example_key\", \"example_value\" },\n },\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n Network = \"default\",\n IpAllocation = Output.Tuple(privateIpAlloc.Address, privateIpAlloc.PrefixLength).Apply(values =\u003e\n {\n var address = values.Item1;\n var prefixLength = values.Item2;\n return $\"{address}/{prefixLength}\";\n }),\n },\n Accelerators = new[]\n {\n new Gcp.DataFusion.Inputs.InstanceAcceleratorArgs\n {\n AcceleratorType = \"CDC\",\n State = \"ENABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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_default, err := appengine.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-full-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"datafusion-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"extended_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDescription: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tDisplayName: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableStackdriverMonitoring: pulumi.Bool(true),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tDataprocServiceAccount: pulumi.String(_default.Email),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example_key\": pulumi.String(\"example_value\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\tIpAllocation: pulumi.All(privateIpAlloc.Address, privateIpAlloc.PrefixLength).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\taddress := _args[0].(string)\n\t\t\t\t\tprefixLength := _args[1].(int)\n\t\t\t\t\treturn fmt.Sprintf(\"%v/%v\", address, prefixLength), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tAccelerators: datafusion.InstanceAcceleratorArray{\n\t\t\t\t\u0026datafusion.InstanceAcceleratorArgs{\n\t\t\t\t\tAcceleratorType: pulumi.String(\"CDC\"),\n\t\t\t\t\tState: pulumi.String(\"ENABLED\"),\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.appengine.AppengineFunctions;\nimport com.pulumi.gcp.appengine.inputs.GetDefaultServiceAccountArgs;\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceAcceleratorArgs;\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 default = AppengineFunctions.getDefaultServiceAccount();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"datafusion-full-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"datafusion-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(22)\n .network(network.id())\n .build());\n\n var extendedInstance = new Instance(\"extendedInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .description(\"My Data Fusion instance\")\n .displayName(\"My Data Fusion instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .enableStackdriverLogging(true)\n .enableStackdriverMonitoring(true)\n .privateInstance(true)\n .dataprocServiceAccount(default_.email())\n .labels(Map.of(\"example_key\", \"example_value\"))\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .network(\"default\")\n .ipAllocation(Output.tuple(privateIpAlloc.address(), privateIpAlloc.prefixLength()).applyValue(values -\u003e {\n var address = values.t1;\n var prefixLength = values.t2;\n return String.format(\"%s/%s\", address,prefixLength);\n }))\n .build())\n .accelerators(InstanceAcceleratorArgs.builder()\n .acceleratorType(\"CDC\")\n .state(\"ENABLED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedInstance:\n type: gcp:datafusion:Instance\n name: extended_instance\n properties:\n name: my-instance\n description: My Data Fusion instance\n displayName: My Data Fusion instance\n region: us-central1\n type: BASIC\n enableStackdriverLogging: true\n enableStackdriverMonitoring: true\n privateInstance: true\n dataprocServiceAccount: ${default.email}\n labels:\n example_key: example_value\n networkConfig:\n network: default\n ipAllocation: ${privateIpAlloc.address}/${privateIpAlloc.prefixLength}\n accelerators:\n - acceleratorType: CDC\n state: ENABLED\n network:\n type: gcp:compute:Network\n properties:\n name: datafusion-full-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: datafusion-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 22\n network: ${network.id}\nvariables:\n default:\n fn::invoke:\n Function: gcp:appengine:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst psc = new gcp.compute.Network(\"psc\", {\n name: \"datafusion-psc-network\",\n autoCreateSubnetworks: false,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc\", {\n name: \"datafusion-psc-subnet\",\n region: \"us-central1\",\n network: psc.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscNetworkAttachment = new gcp.compute.NetworkAttachment(\"psc\", {\n name: \"datafusion-psc-attachment\",\n region: \"us-central1\",\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n subnetworks: [pscSubnetwork.selfLink],\n});\nconst pscInstance = new gcp.datafusion.Instance(\"psc_instance\", {\n name: \"psc-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n privateInstance: true,\n networkConfig: {\n connectionType: \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n privateServiceConnectConfig: {\n networkAttachment: pscNetworkAttachment.id,\n unreachableCidrBlock: \"192.168.0.0/25\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc = gcp.compute.Network(\"psc\",\n name=\"datafusion-psc-network\",\n auto_create_subnetworks=False)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc\",\n name=\"datafusion-psc-subnet\",\n region=\"us-central1\",\n network=psc.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_network_attachment = gcp.compute.NetworkAttachment(\"psc\",\n name=\"datafusion-psc-attachment\",\n region=\"us-central1\",\n connection_preference=\"ACCEPT_AUTOMATIC\",\n subnetworks=[psc_subnetwork.self_link])\npsc_instance = gcp.datafusion.Instance(\"psc_instance\",\n name=\"psc-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n private_instance=True,\n network_config={\n \"connection_type\": \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n \"private_service_connect_config\": {\n \"network_attachment\": psc_network_attachment.id,\n \"unreachable_cidr_block\": \"192.168.0.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 psc = new Gcp.Compute.Network(\"psc\", new()\n {\n Name = \"datafusion-psc-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc\", new()\n {\n Name = \"datafusion-psc-subnet\",\n Region = \"us-central1\",\n Network = psc.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"psc\", new()\n {\n Name = \"datafusion-psc-attachment\",\n Region = \"us-central1\",\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n Subnetworks = new[]\n {\n pscSubnetwork.SelfLink,\n },\n });\n\n var pscInstance = new Gcp.DataFusion.Instance(\"psc_instance\", new()\n {\n Name = \"psc-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n PrivateInstance = true,\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n ConnectionType = \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n PrivateServiceConnectConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs\n {\n NetworkAttachment = pscNetworkAttachment.Id,\n UnreachableCidrBlock = \"192.168.0.0/25\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpsc, err := compute.NewNetwork(ctx, \"psc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-network\"),\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\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: psc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"psc\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"psc_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"psc-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tConnectionType: pulumi.String(\"PRIVATE_SERVICE_CONNECT_INTERFACES\"),\n\t\t\t\tPrivateServiceConnectConfig: \u0026datafusion.InstanceNetworkConfigPrivateServiceConnectConfigArgs{\n\t\t\t\t\tNetworkAttachment: pscNetworkAttachment.ID(),\n\t\t\t\t\tUnreachableCidrBlock: pulumi.String(\"192.168.0.0/25\"),\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.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs;\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 psc = new Network(\"psc\", NetworkArgs.builder()\n .name(\"datafusion-psc-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"datafusion-psc-subnet\")\n .region(\"us-central1\")\n .network(psc.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscNetworkAttachment = new NetworkAttachment(\"pscNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"datafusion-psc-attachment\")\n .region(\"us-central1\")\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .subnetworks(pscSubnetwork.selfLink())\n .build());\n\n var pscInstance = new Instance(\"pscInstance\", InstanceArgs.builder()\n .name(\"psc-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .privateInstance(true)\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .connectionType(\"PRIVATE_SERVICE_CONNECT_INTERFACES\")\n .privateServiceConnectConfig(InstanceNetworkConfigPrivateServiceConnectConfigArgs.builder()\n .networkAttachment(pscNetworkAttachment.id())\n .unreachableCidrBlock(\"192.168.0.0/25\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscInstance:\n type: gcp:datafusion:Instance\n name: psc_instance\n properties:\n name: psc-instance\n region: us-central1\n type: BASIC\n privateInstance: true\n networkConfig:\n connectionType: PRIVATE_SERVICE_CONNECT_INTERFACES\n privateServiceConnectConfig:\n networkAttachment: ${pscNetworkAttachment.id}\n unreachableCidrBlock: 192.168.0.0/25\n psc:\n type: gcp:compute:Network\n properties:\n name: datafusion-psc-network\n autoCreateSubnetworks: false\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc\n properties:\n name: datafusion-psc-subnet\n region: us-central1\n network: ${psc.id}\n ipCidrRange: 10.0.0.0/16\n pscNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: psc\n properties:\n name: datafusion-psc-attachment\n region: us-central1\n connectionPreference: ACCEPT_AUTOMATIC\n subnetworks:\n - ${pscSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-instance\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-instance\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyMember = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com`),\n});\nconst cmek = new gcp.datafusion.Instance(\"cmek\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n cryptoKeyConfig: {\n keyReference: cryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKeyMember],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-instance\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-instance\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_member = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\")\ncmek = gcp.datafusion.Instance(\"cmek\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n crypto_key_config={\n \"key_reference\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member]))\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(\"key_ring\", new()\n {\n Name = \"my-instance\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-instance\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyMember = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datafusion.iam.gserviceaccount.com\",\n });\n\n var cmek = new Gcp.DataFusion.Instance(\"cmek\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n CryptoKeyConfig = new Gcp.DataFusion.Inputs.InstanceCryptoKeyConfigArgs\n {\n KeyReference = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tKeyRing: keyRing.ID(),\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\tcryptoKeyMember, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-datafusion.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"cmek\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tCryptoKeyConfig: \u0026datafusion.InstanceCryptoKeyConfigArgs{\n\t\t\t\tKeyReference: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceCryptoKeyConfigArgs;\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 .name(\"my-instance\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-instance\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyMember = new CryptoKeyIAMMember(\"cryptoKeyMember\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datafusion.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var cmek = new Instance(\"cmek\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .cryptoKeyConfig(InstanceCryptoKeyConfigArgs.builder()\n .keyReference(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cmek:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n cryptoKeyConfig:\n keyReference: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyMember}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-instance\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-instance\n location: us-central1\n cryptoKeyMember:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst enterpriseInstance = new gcp.datafusion.Instance(\"enterprise_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"ENTERPRISE\",\n enableRbac: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nenterprise_instance = gcp.datafusion.Instance(\"enterprise_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"ENTERPRISE\",\n enable_rbac=True)\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 enterpriseInstance = new Gcp.DataFusion.Instance(\"enterprise_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"ENTERPRISE\",\n EnableRbac = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"enterprise_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"ENTERPRISE\"),\n\t\t\tEnableRbac: pulumi.Bool(true),\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 enterpriseInstance = new Instance(\"enterpriseInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"ENTERPRISE\")\n .enableRbac(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n enterpriseInstance:\n type: gcp:datafusion:Instance\n name: enterprise_instance\n properties:\n name: my-instance\n region: us-central1\n type: ENTERPRISE\n enableRbac: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Event\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst eventTopic = new gcp.pubsub.Topic(\"event\", {name: \"my-instance\"});\nconst event = new gcp.datafusion.Instance(\"event\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n eventPublishConfig: {\n enabled: true,\n topic: eventTopic.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nevent_topic = gcp.pubsub.Topic(\"event\", name=\"my-instance\")\nevent = gcp.datafusion.Instance(\"event\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n event_publish_config={\n \"enabled\": True,\n \"topic\": event_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 eventTopic = new Gcp.PubSub.Topic(\"event\", new()\n {\n Name = \"my-instance\",\n });\n\n var @event = new Gcp.DataFusion.Instance(\"event\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EventPublishConfig = new Gcp.DataFusion.Inputs.InstanceEventPublishConfigArgs\n {\n Enabled = true,\n Topic = eventTopic.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\teventTopic, err := pubsub.NewTopic(ctx, \"event\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"event\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEventPublishConfig: \u0026datafusion.InstanceEventPublishConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tTopic: eventTopic.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.pubsub.TopicArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceEventPublishConfigArgs;\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 eventTopic = new Topic(\"eventTopic\", TopicArgs.builder()\n .name(\"my-instance\")\n .build());\n\n var event = new Instance(\"event\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .eventPublishConfig(InstanceEventPublishConfigArgs.builder()\n .enabled(true)\n .topic(eventTopic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n event:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n eventPublishConfig:\n enabled: true\n topic: ${eventTopic.id}\n eventTopic:\n type: gcp:pubsub:Topic\n name: event\n properties:\n name: my-instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst zone = new gcp.datafusion.Instance(\"zone\", {\n name: \"my-instance\",\n region: \"us-central1\",\n zone: \"us-central1-a\",\n type: \"DEVELOPER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nzone = gcp.datafusion.Instance(\"zone\",\n name=\"my-instance\",\n region=\"us-central1\",\n zone=\"us-central1-a\",\n type=\"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 zone = new Gcp.DataFusion.Instance(\"zone\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Zone = \"us-central1-a\",\n Type = \"DEVELOPER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"zone\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tType: 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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 zone = new Instance(\"zone\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .zone(\"us-central1-a\")\n .type(\"DEVELOPER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n zone:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n zone: us-central1-a\n type: DEVELOPER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamBinding:InstanceIamBinding default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamBinding:InstanceIamBinding default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamBinding:InstanceIamBinding default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamBinding:InstanceIamBinding default {{name}}\n```\n\n", "properties": { "condition": { "$ref": "#/types/gcp:securitycenter/InstanceIamBindingCondition:InstanceIamBindingCondition" @@ -233042,7 +233042,7 @@ } }, "gcp:securitycenter/instanceIamMember:InstanceIamMember": { - "description": "Represents a Data Fusion instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/data-fusion/docs/reference/rest/v1beta1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-fusion/docs/)\n\n## Example Usage\n\n### Data Fusion Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicInstance = new gcp.datafusion.Instance(\"basic_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_instance = gcp.datafusion.Instance(\"basic_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\")\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 basicInstance = new Gcp.DataFusion.Instance(\"basic_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"basic_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 basicInstance = new Instance(\"basicInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicInstance:\n type: gcp:datafusion:Instance\n name: basic_instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.appengine.getDefaultServiceAccount({});\nconst network = new gcp.compute.Network(\"network\", {name: \"datafusion-full-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"datafusion-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 22,\n network: network.id,\n});\nconst extendedInstance = new gcp.datafusion.Instance(\"extended_instance\", {\n name: \"my-instance\",\n description: \"My Data Fusion instance\",\n displayName: \"My Data Fusion instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n enableStackdriverLogging: true,\n enableStackdriverMonitoring: true,\n privateInstance: true,\n dataprocServiceAccount: _default.then(_default =\u003e _default.email),\n labels: {\n example_key: \"example_value\",\n },\n networkConfig: {\n network: \"default\",\n ipAllocation: pulumi.interpolate`${privateIpAlloc.address}/${privateIpAlloc.prefixLength}`,\n },\n accelerators: [{\n acceleratorType: \"CDC\",\n state: \"ENABLED\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.appengine.get_default_service_account()\nnetwork = gcp.compute.Network(\"network\", name=\"datafusion-full-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"datafusion-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=22,\n network=network.id)\nextended_instance = gcp.datafusion.Instance(\"extended_instance\",\n name=\"my-instance\",\n description=\"My Data Fusion instance\",\n display_name=\"My Data Fusion instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n enable_stackdriver_logging=True,\n enable_stackdriver_monitoring=True,\n private_instance=True,\n dataproc_service_account=default.email,\n labels={\n \"example_key\": \"example_value\",\n },\n network_config={\n \"network\": \"default\",\n \"ipAllocation\": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f\"{address}/{prefix_length}\"),\n },\n accelerators=[{\n \"acceleratorType\": \"CDC\",\n \"state\": \"ENABLED\",\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 @default = Gcp.AppEngine.GetDefaultServiceAccount.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"datafusion-full-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"datafusion-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 22,\n Network = network.Id,\n });\n\n var extendedInstance = new Gcp.DataFusion.Instance(\"extended_instance\", new()\n {\n Name = \"my-instance\",\n Description = \"My Data Fusion instance\",\n DisplayName = \"My Data Fusion instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EnableStackdriverLogging = true,\n EnableStackdriverMonitoring = true,\n PrivateInstance = true,\n DataprocServiceAccount = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Labels = \n {\n { \"example_key\", \"example_value\" },\n },\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n Network = \"default\",\n IpAllocation = Output.Tuple(privateIpAlloc.Address, privateIpAlloc.PrefixLength).Apply(values =\u003e\n {\n var address = values.Item1;\n var prefixLength = values.Item2;\n return $\"{address}/{prefixLength}\";\n }),\n },\n Accelerators = new[]\n {\n new Gcp.DataFusion.Inputs.InstanceAcceleratorArgs\n {\n AcceleratorType = \"CDC\",\n State = \"ENABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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_default, err := appengine.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-full-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"datafusion-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"extended_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDescription: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tDisplayName: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableStackdriverMonitoring: pulumi.Bool(true),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tDataprocServiceAccount: pulumi.String(_default.Email),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example_key\": pulumi.String(\"example_value\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\tIpAllocation: pulumi.All(privateIpAlloc.Address, privateIpAlloc.PrefixLength).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\taddress := _args[0].(string)\n\t\t\t\t\tprefixLength := _args[1].(int)\n\t\t\t\t\treturn fmt.Sprintf(\"%v/%v\", address, prefixLength), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tAccelerators: datafusion.InstanceAcceleratorArray{\n\t\t\t\t\u0026datafusion.InstanceAcceleratorArgs{\n\t\t\t\t\tAcceleratorType: pulumi.String(\"CDC\"),\n\t\t\t\t\tState: pulumi.String(\"ENABLED\"),\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.appengine.AppengineFunctions;\nimport com.pulumi.gcp.appengine.inputs.GetDefaultServiceAccountArgs;\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceAcceleratorArgs;\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 default = AppengineFunctions.getDefaultServiceAccount();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"datafusion-full-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"datafusion-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(22)\n .network(network.id())\n .build());\n\n var extendedInstance = new Instance(\"extendedInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .description(\"My Data Fusion instance\")\n .displayName(\"My Data Fusion instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .enableStackdriverLogging(true)\n .enableStackdriverMonitoring(true)\n .privateInstance(true)\n .dataprocServiceAccount(default_.email())\n .labels(Map.of(\"example_key\", \"example_value\"))\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .network(\"default\")\n .ipAllocation(Output.tuple(privateIpAlloc.address(), privateIpAlloc.prefixLength()).applyValue(values -\u003e {\n var address = values.t1;\n var prefixLength = values.t2;\n return String.format(\"%s/%s\", address,prefixLength);\n }))\n .build())\n .accelerators(InstanceAcceleratorArgs.builder()\n .acceleratorType(\"CDC\")\n .state(\"ENABLED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedInstance:\n type: gcp:datafusion:Instance\n name: extended_instance\n properties:\n name: my-instance\n description: My Data Fusion instance\n displayName: My Data Fusion instance\n region: us-central1\n type: BASIC\n enableStackdriverLogging: true\n enableStackdriverMonitoring: true\n privateInstance: true\n dataprocServiceAccount: ${default.email}\n labels:\n example_key: example_value\n networkConfig:\n network: default\n ipAllocation: ${privateIpAlloc.address}/${privateIpAlloc.prefixLength}\n accelerators:\n - acceleratorType: CDC\n state: ENABLED\n network:\n type: gcp:compute:Network\n properties:\n name: datafusion-full-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: datafusion-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 22\n network: ${network.id}\nvariables:\n default:\n fn::invoke:\n Function: gcp:appengine:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst psc = new gcp.compute.Network(\"psc\", {\n name: \"datafusion-psc-network\",\n autoCreateSubnetworks: false,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc\", {\n name: \"datafusion-psc-subnet\",\n region: \"us-central1\",\n network: psc.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscNetworkAttachment = new gcp.compute.NetworkAttachment(\"psc\", {\n name: \"datafusion-psc-attachment\",\n region: \"us-central1\",\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n subnetworks: [pscSubnetwork.selfLink],\n});\nconst pscInstance = new gcp.datafusion.Instance(\"psc_instance\", {\n name: \"psc-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n privateInstance: true,\n networkConfig: {\n connectionType: \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n privateServiceConnectConfig: {\n networkAttachment: pscNetworkAttachment.id,\n unreachableCidrBlock: \"192.168.0.0/25\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc = gcp.compute.Network(\"psc\",\n name=\"datafusion-psc-network\",\n auto_create_subnetworks=False)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc\",\n name=\"datafusion-psc-subnet\",\n region=\"us-central1\",\n network=psc.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_network_attachment = gcp.compute.NetworkAttachment(\"psc\",\n name=\"datafusion-psc-attachment\",\n region=\"us-central1\",\n connection_preference=\"ACCEPT_AUTOMATIC\",\n subnetworks=[psc_subnetwork.self_link])\npsc_instance = gcp.datafusion.Instance(\"psc_instance\",\n name=\"psc-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n private_instance=True,\n network_config={\n \"connectionType\": \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n \"privateServiceConnectConfig\": {\n \"networkAttachment\": psc_network_attachment.id,\n \"unreachableCidrBlock\": \"192.168.0.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 psc = new Gcp.Compute.Network(\"psc\", new()\n {\n Name = \"datafusion-psc-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc\", new()\n {\n Name = \"datafusion-psc-subnet\",\n Region = \"us-central1\",\n Network = psc.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"psc\", new()\n {\n Name = \"datafusion-psc-attachment\",\n Region = \"us-central1\",\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n Subnetworks = new[]\n {\n pscSubnetwork.SelfLink,\n },\n });\n\n var pscInstance = new Gcp.DataFusion.Instance(\"psc_instance\", new()\n {\n Name = \"psc-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n PrivateInstance = true,\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n ConnectionType = \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n PrivateServiceConnectConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs\n {\n NetworkAttachment = pscNetworkAttachment.Id,\n UnreachableCidrBlock = \"192.168.0.0/25\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpsc, err := compute.NewNetwork(ctx, \"psc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-network\"),\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\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: psc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"psc\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"psc_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"psc-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tConnectionType: pulumi.String(\"PRIVATE_SERVICE_CONNECT_INTERFACES\"),\n\t\t\t\tPrivateServiceConnectConfig: \u0026datafusion.InstanceNetworkConfigPrivateServiceConnectConfigArgs{\n\t\t\t\t\tNetworkAttachment: pscNetworkAttachment.ID(),\n\t\t\t\t\tUnreachableCidrBlock: pulumi.String(\"192.168.0.0/25\"),\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.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs;\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 psc = new Network(\"psc\", NetworkArgs.builder()\n .name(\"datafusion-psc-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"datafusion-psc-subnet\")\n .region(\"us-central1\")\n .network(psc.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscNetworkAttachment = new NetworkAttachment(\"pscNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"datafusion-psc-attachment\")\n .region(\"us-central1\")\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .subnetworks(pscSubnetwork.selfLink())\n .build());\n\n var pscInstance = new Instance(\"pscInstance\", InstanceArgs.builder()\n .name(\"psc-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .privateInstance(true)\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .connectionType(\"PRIVATE_SERVICE_CONNECT_INTERFACES\")\n .privateServiceConnectConfig(InstanceNetworkConfigPrivateServiceConnectConfigArgs.builder()\n .networkAttachment(pscNetworkAttachment.id())\n .unreachableCidrBlock(\"192.168.0.0/25\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscInstance:\n type: gcp:datafusion:Instance\n name: psc_instance\n properties:\n name: psc-instance\n region: us-central1\n type: BASIC\n privateInstance: true\n networkConfig:\n connectionType: PRIVATE_SERVICE_CONNECT_INTERFACES\n privateServiceConnectConfig:\n networkAttachment: ${pscNetworkAttachment.id}\n unreachableCidrBlock: 192.168.0.0/25\n psc:\n type: gcp:compute:Network\n properties:\n name: datafusion-psc-network\n autoCreateSubnetworks: false\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc\n properties:\n name: datafusion-psc-subnet\n region: us-central1\n network: ${psc.id}\n ipCidrRange: 10.0.0.0/16\n pscNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: psc\n properties:\n name: datafusion-psc-attachment\n region: us-central1\n connectionPreference: ACCEPT_AUTOMATIC\n subnetworks:\n - ${pscSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-instance\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-instance\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyMember = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com`),\n});\nconst cmek = new gcp.datafusion.Instance(\"cmek\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n cryptoKeyConfig: {\n keyReference: cryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKeyMember],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-instance\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-instance\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_member = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\")\ncmek = gcp.datafusion.Instance(\"cmek\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n crypto_key_config={\n \"keyReference\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member]))\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(\"key_ring\", new()\n {\n Name = \"my-instance\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-instance\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyMember = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datafusion.iam.gserviceaccount.com\",\n });\n\n var cmek = new Gcp.DataFusion.Instance(\"cmek\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n CryptoKeyConfig = new Gcp.DataFusion.Inputs.InstanceCryptoKeyConfigArgs\n {\n KeyReference = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tKeyRing: keyRing.ID(),\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\tcryptoKeyMember, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-datafusion.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"cmek\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tCryptoKeyConfig: \u0026datafusion.InstanceCryptoKeyConfigArgs{\n\t\t\t\tKeyReference: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceCryptoKeyConfigArgs;\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 .name(\"my-instance\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-instance\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyMember = new CryptoKeyIAMMember(\"cryptoKeyMember\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datafusion.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var cmek = new Instance(\"cmek\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .cryptoKeyConfig(InstanceCryptoKeyConfigArgs.builder()\n .keyReference(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cmek:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n cryptoKeyConfig:\n keyReference: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyMember}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-instance\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-instance\n location: us-central1\n cryptoKeyMember:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst enterpriseInstance = new gcp.datafusion.Instance(\"enterprise_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"ENTERPRISE\",\n enableRbac: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nenterprise_instance = gcp.datafusion.Instance(\"enterprise_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"ENTERPRISE\",\n enable_rbac=True)\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 enterpriseInstance = new Gcp.DataFusion.Instance(\"enterprise_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"ENTERPRISE\",\n EnableRbac = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"enterprise_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"ENTERPRISE\"),\n\t\t\tEnableRbac: pulumi.Bool(true),\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 enterpriseInstance = new Instance(\"enterpriseInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"ENTERPRISE\")\n .enableRbac(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n enterpriseInstance:\n type: gcp:datafusion:Instance\n name: enterprise_instance\n properties:\n name: my-instance\n region: us-central1\n type: ENTERPRISE\n enableRbac: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Event\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst eventTopic = new gcp.pubsub.Topic(\"event\", {name: \"my-instance\"});\nconst event = new gcp.datafusion.Instance(\"event\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n eventPublishConfig: {\n enabled: true,\n topic: eventTopic.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nevent_topic = gcp.pubsub.Topic(\"event\", name=\"my-instance\")\nevent = gcp.datafusion.Instance(\"event\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n event_publish_config={\n \"enabled\": True,\n \"topic\": event_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 eventTopic = new Gcp.PubSub.Topic(\"event\", new()\n {\n Name = \"my-instance\",\n });\n\n var @event = new Gcp.DataFusion.Instance(\"event\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EventPublishConfig = new Gcp.DataFusion.Inputs.InstanceEventPublishConfigArgs\n {\n Enabled = true,\n Topic = eventTopic.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\teventTopic, err := pubsub.NewTopic(ctx, \"event\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"event\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEventPublishConfig: \u0026datafusion.InstanceEventPublishConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tTopic: eventTopic.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.pubsub.TopicArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceEventPublishConfigArgs;\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 eventTopic = new Topic(\"eventTopic\", TopicArgs.builder()\n .name(\"my-instance\")\n .build());\n\n var event = new Instance(\"event\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .eventPublishConfig(InstanceEventPublishConfigArgs.builder()\n .enabled(true)\n .topic(eventTopic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n event:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n eventPublishConfig:\n enabled: true\n topic: ${eventTopic.id}\n eventTopic:\n type: gcp:pubsub:Topic\n name: event\n properties:\n name: my-instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst zone = new gcp.datafusion.Instance(\"zone\", {\n name: \"my-instance\",\n region: \"us-central1\",\n zone: \"us-central1-a\",\n type: \"DEVELOPER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nzone = gcp.datafusion.Instance(\"zone\",\n name=\"my-instance\",\n region=\"us-central1\",\n zone=\"us-central1-a\",\n type=\"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 zone = new Gcp.DataFusion.Instance(\"zone\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Zone = \"us-central1-a\",\n Type = \"DEVELOPER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"zone\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tType: 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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 zone = new Instance(\"zone\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .zone(\"us-central1-a\")\n .type(\"DEVELOPER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n zone:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n zone: us-central1-a\n type: DEVELOPER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamMember:InstanceIamMember default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamMember:InstanceIamMember default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamMember:InstanceIamMember default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamMember:InstanceIamMember default {{name}}\n```\n\n", + "description": "Represents a Data Fusion instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/data-fusion/docs/reference/rest/v1beta1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-fusion/docs/)\n\n## Example Usage\n\n### Data Fusion Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicInstance = new gcp.datafusion.Instance(\"basic_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_instance = gcp.datafusion.Instance(\"basic_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\")\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 basicInstance = new Gcp.DataFusion.Instance(\"basic_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"basic_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 basicInstance = new Instance(\"basicInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicInstance:\n type: gcp:datafusion:Instance\n name: basic_instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.appengine.getDefaultServiceAccount({});\nconst network = new gcp.compute.Network(\"network\", {name: \"datafusion-full-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"datafusion-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 22,\n network: network.id,\n});\nconst extendedInstance = new gcp.datafusion.Instance(\"extended_instance\", {\n name: \"my-instance\",\n description: \"My Data Fusion instance\",\n displayName: \"My Data Fusion instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n enableStackdriverLogging: true,\n enableStackdriverMonitoring: true,\n privateInstance: true,\n dataprocServiceAccount: _default.then(_default =\u003e _default.email),\n labels: {\n example_key: \"example_value\",\n },\n networkConfig: {\n network: \"default\",\n ipAllocation: pulumi.interpolate`${privateIpAlloc.address}/${privateIpAlloc.prefixLength}`,\n },\n accelerators: [{\n acceleratorType: \"CDC\",\n state: \"ENABLED\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.appengine.get_default_service_account()\nnetwork = gcp.compute.Network(\"network\", name=\"datafusion-full-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"datafusion-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=22,\n network=network.id)\nextended_instance = gcp.datafusion.Instance(\"extended_instance\",\n name=\"my-instance\",\n description=\"My Data Fusion instance\",\n display_name=\"My Data Fusion instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n enable_stackdriver_logging=True,\n enable_stackdriver_monitoring=True,\n private_instance=True,\n dataproc_service_account=default.email,\n labels={\n \"example_key\": \"example_value\",\n },\n network_config={\n \"network\": \"default\",\n \"ip_allocation\": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f\"{address}/{prefix_length}\"),\n },\n accelerators=[{\n \"accelerator_type\": \"CDC\",\n \"state\": \"ENABLED\",\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 @default = Gcp.AppEngine.GetDefaultServiceAccount.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"datafusion-full-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"datafusion-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 22,\n Network = network.Id,\n });\n\n var extendedInstance = new Gcp.DataFusion.Instance(\"extended_instance\", new()\n {\n Name = \"my-instance\",\n Description = \"My Data Fusion instance\",\n DisplayName = \"My Data Fusion instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EnableStackdriverLogging = true,\n EnableStackdriverMonitoring = true,\n PrivateInstance = true,\n DataprocServiceAccount = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Labels = \n {\n { \"example_key\", \"example_value\" },\n },\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n Network = \"default\",\n IpAllocation = Output.Tuple(privateIpAlloc.Address, privateIpAlloc.PrefixLength).Apply(values =\u003e\n {\n var address = values.Item1;\n var prefixLength = values.Item2;\n return $\"{address}/{prefixLength}\";\n }),\n },\n Accelerators = new[]\n {\n new Gcp.DataFusion.Inputs.InstanceAcceleratorArgs\n {\n AcceleratorType = \"CDC\",\n State = \"ENABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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_default, err := appengine.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-full-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"datafusion-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"extended_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDescription: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tDisplayName: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableStackdriverMonitoring: pulumi.Bool(true),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tDataprocServiceAccount: pulumi.String(_default.Email),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example_key\": pulumi.String(\"example_value\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\tIpAllocation: pulumi.All(privateIpAlloc.Address, privateIpAlloc.PrefixLength).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\taddress := _args[0].(string)\n\t\t\t\t\tprefixLength := _args[1].(int)\n\t\t\t\t\treturn fmt.Sprintf(\"%v/%v\", address, prefixLength), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tAccelerators: datafusion.InstanceAcceleratorArray{\n\t\t\t\t\u0026datafusion.InstanceAcceleratorArgs{\n\t\t\t\t\tAcceleratorType: pulumi.String(\"CDC\"),\n\t\t\t\t\tState: pulumi.String(\"ENABLED\"),\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.appengine.AppengineFunctions;\nimport com.pulumi.gcp.appengine.inputs.GetDefaultServiceAccountArgs;\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceAcceleratorArgs;\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 default = AppengineFunctions.getDefaultServiceAccount();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"datafusion-full-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"datafusion-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(22)\n .network(network.id())\n .build());\n\n var extendedInstance = new Instance(\"extendedInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .description(\"My Data Fusion instance\")\n .displayName(\"My Data Fusion instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .enableStackdriverLogging(true)\n .enableStackdriverMonitoring(true)\n .privateInstance(true)\n .dataprocServiceAccount(default_.email())\n .labels(Map.of(\"example_key\", \"example_value\"))\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .network(\"default\")\n .ipAllocation(Output.tuple(privateIpAlloc.address(), privateIpAlloc.prefixLength()).applyValue(values -\u003e {\n var address = values.t1;\n var prefixLength = values.t2;\n return String.format(\"%s/%s\", address,prefixLength);\n }))\n .build())\n .accelerators(InstanceAcceleratorArgs.builder()\n .acceleratorType(\"CDC\")\n .state(\"ENABLED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedInstance:\n type: gcp:datafusion:Instance\n name: extended_instance\n properties:\n name: my-instance\n description: My Data Fusion instance\n displayName: My Data Fusion instance\n region: us-central1\n type: BASIC\n enableStackdriverLogging: true\n enableStackdriverMonitoring: true\n privateInstance: true\n dataprocServiceAccount: ${default.email}\n labels:\n example_key: example_value\n networkConfig:\n network: default\n ipAllocation: ${privateIpAlloc.address}/${privateIpAlloc.prefixLength}\n accelerators:\n - acceleratorType: CDC\n state: ENABLED\n network:\n type: gcp:compute:Network\n properties:\n name: datafusion-full-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: datafusion-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 22\n network: ${network.id}\nvariables:\n default:\n fn::invoke:\n Function: gcp:appengine:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst psc = new gcp.compute.Network(\"psc\", {\n name: \"datafusion-psc-network\",\n autoCreateSubnetworks: false,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc\", {\n name: \"datafusion-psc-subnet\",\n region: \"us-central1\",\n network: psc.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscNetworkAttachment = new gcp.compute.NetworkAttachment(\"psc\", {\n name: \"datafusion-psc-attachment\",\n region: \"us-central1\",\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n subnetworks: [pscSubnetwork.selfLink],\n});\nconst pscInstance = new gcp.datafusion.Instance(\"psc_instance\", {\n name: \"psc-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n privateInstance: true,\n networkConfig: {\n connectionType: \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n privateServiceConnectConfig: {\n networkAttachment: pscNetworkAttachment.id,\n unreachableCidrBlock: \"192.168.0.0/25\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc = gcp.compute.Network(\"psc\",\n name=\"datafusion-psc-network\",\n auto_create_subnetworks=False)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc\",\n name=\"datafusion-psc-subnet\",\n region=\"us-central1\",\n network=psc.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_network_attachment = gcp.compute.NetworkAttachment(\"psc\",\n name=\"datafusion-psc-attachment\",\n region=\"us-central1\",\n connection_preference=\"ACCEPT_AUTOMATIC\",\n subnetworks=[psc_subnetwork.self_link])\npsc_instance = gcp.datafusion.Instance(\"psc_instance\",\n name=\"psc-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n private_instance=True,\n network_config={\n \"connection_type\": \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n \"private_service_connect_config\": {\n \"network_attachment\": psc_network_attachment.id,\n \"unreachable_cidr_block\": \"192.168.0.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 psc = new Gcp.Compute.Network(\"psc\", new()\n {\n Name = \"datafusion-psc-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc\", new()\n {\n Name = \"datafusion-psc-subnet\",\n Region = \"us-central1\",\n Network = psc.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"psc\", new()\n {\n Name = \"datafusion-psc-attachment\",\n Region = \"us-central1\",\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n Subnetworks = new[]\n {\n pscSubnetwork.SelfLink,\n },\n });\n\n var pscInstance = new Gcp.DataFusion.Instance(\"psc_instance\", new()\n {\n Name = \"psc-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n PrivateInstance = true,\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n ConnectionType = \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n PrivateServiceConnectConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs\n {\n NetworkAttachment = pscNetworkAttachment.Id,\n UnreachableCidrBlock = \"192.168.0.0/25\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpsc, err := compute.NewNetwork(ctx, \"psc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-network\"),\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\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: psc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"psc\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"psc_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"psc-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tConnectionType: pulumi.String(\"PRIVATE_SERVICE_CONNECT_INTERFACES\"),\n\t\t\t\tPrivateServiceConnectConfig: \u0026datafusion.InstanceNetworkConfigPrivateServiceConnectConfigArgs{\n\t\t\t\t\tNetworkAttachment: pscNetworkAttachment.ID(),\n\t\t\t\t\tUnreachableCidrBlock: pulumi.String(\"192.168.0.0/25\"),\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.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs;\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 psc = new Network(\"psc\", NetworkArgs.builder()\n .name(\"datafusion-psc-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"datafusion-psc-subnet\")\n .region(\"us-central1\")\n .network(psc.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscNetworkAttachment = new NetworkAttachment(\"pscNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"datafusion-psc-attachment\")\n .region(\"us-central1\")\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .subnetworks(pscSubnetwork.selfLink())\n .build());\n\n var pscInstance = new Instance(\"pscInstance\", InstanceArgs.builder()\n .name(\"psc-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .privateInstance(true)\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .connectionType(\"PRIVATE_SERVICE_CONNECT_INTERFACES\")\n .privateServiceConnectConfig(InstanceNetworkConfigPrivateServiceConnectConfigArgs.builder()\n .networkAttachment(pscNetworkAttachment.id())\n .unreachableCidrBlock(\"192.168.0.0/25\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscInstance:\n type: gcp:datafusion:Instance\n name: psc_instance\n properties:\n name: psc-instance\n region: us-central1\n type: BASIC\n privateInstance: true\n networkConfig:\n connectionType: PRIVATE_SERVICE_CONNECT_INTERFACES\n privateServiceConnectConfig:\n networkAttachment: ${pscNetworkAttachment.id}\n unreachableCidrBlock: 192.168.0.0/25\n psc:\n type: gcp:compute:Network\n properties:\n name: datafusion-psc-network\n autoCreateSubnetworks: false\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc\n properties:\n name: datafusion-psc-subnet\n region: us-central1\n network: ${psc.id}\n ipCidrRange: 10.0.0.0/16\n pscNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: psc\n properties:\n name: datafusion-psc-attachment\n region: us-central1\n connectionPreference: ACCEPT_AUTOMATIC\n subnetworks:\n - ${pscSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-instance\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-instance\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyMember = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com`),\n});\nconst cmek = new gcp.datafusion.Instance(\"cmek\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n cryptoKeyConfig: {\n keyReference: cryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKeyMember],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-instance\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-instance\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_member = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\")\ncmek = gcp.datafusion.Instance(\"cmek\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n crypto_key_config={\n \"key_reference\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member]))\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(\"key_ring\", new()\n {\n Name = \"my-instance\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-instance\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyMember = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datafusion.iam.gserviceaccount.com\",\n });\n\n var cmek = new Gcp.DataFusion.Instance(\"cmek\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n CryptoKeyConfig = new Gcp.DataFusion.Inputs.InstanceCryptoKeyConfigArgs\n {\n KeyReference = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tKeyRing: keyRing.ID(),\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\tcryptoKeyMember, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-datafusion.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"cmek\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tCryptoKeyConfig: \u0026datafusion.InstanceCryptoKeyConfigArgs{\n\t\t\t\tKeyReference: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceCryptoKeyConfigArgs;\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 .name(\"my-instance\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-instance\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyMember = new CryptoKeyIAMMember(\"cryptoKeyMember\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datafusion.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var cmek = new Instance(\"cmek\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .cryptoKeyConfig(InstanceCryptoKeyConfigArgs.builder()\n .keyReference(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cmek:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n cryptoKeyConfig:\n keyReference: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyMember}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-instance\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-instance\n location: us-central1\n cryptoKeyMember:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst enterpriseInstance = new gcp.datafusion.Instance(\"enterprise_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"ENTERPRISE\",\n enableRbac: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nenterprise_instance = gcp.datafusion.Instance(\"enterprise_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"ENTERPRISE\",\n enable_rbac=True)\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 enterpriseInstance = new Gcp.DataFusion.Instance(\"enterprise_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"ENTERPRISE\",\n EnableRbac = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"enterprise_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"ENTERPRISE\"),\n\t\t\tEnableRbac: pulumi.Bool(true),\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 enterpriseInstance = new Instance(\"enterpriseInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"ENTERPRISE\")\n .enableRbac(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n enterpriseInstance:\n type: gcp:datafusion:Instance\n name: enterprise_instance\n properties:\n name: my-instance\n region: us-central1\n type: ENTERPRISE\n enableRbac: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Event\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst eventTopic = new gcp.pubsub.Topic(\"event\", {name: \"my-instance\"});\nconst event = new gcp.datafusion.Instance(\"event\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n eventPublishConfig: {\n enabled: true,\n topic: eventTopic.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nevent_topic = gcp.pubsub.Topic(\"event\", name=\"my-instance\")\nevent = gcp.datafusion.Instance(\"event\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n event_publish_config={\n \"enabled\": True,\n \"topic\": event_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 eventTopic = new Gcp.PubSub.Topic(\"event\", new()\n {\n Name = \"my-instance\",\n });\n\n var @event = new Gcp.DataFusion.Instance(\"event\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EventPublishConfig = new Gcp.DataFusion.Inputs.InstanceEventPublishConfigArgs\n {\n Enabled = true,\n Topic = eventTopic.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\teventTopic, err := pubsub.NewTopic(ctx, \"event\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"event\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEventPublishConfig: \u0026datafusion.InstanceEventPublishConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tTopic: eventTopic.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.pubsub.TopicArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceEventPublishConfigArgs;\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 eventTopic = new Topic(\"eventTopic\", TopicArgs.builder()\n .name(\"my-instance\")\n .build());\n\n var event = new Instance(\"event\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .eventPublishConfig(InstanceEventPublishConfigArgs.builder()\n .enabled(true)\n .topic(eventTopic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n event:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n eventPublishConfig:\n enabled: true\n topic: ${eventTopic.id}\n eventTopic:\n type: gcp:pubsub:Topic\n name: event\n properties:\n name: my-instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst zone = new gcp.datafusion.Instance(\"zone\", {\n name: \"my-instance\",\n region: \"us-central1\",\n zone: \"us-central1-a\",\n type: \"DEVELOPER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nzone = gcp.datafusion.Instance(\"zone\",\n name=\"my-instance\",\n region=\"us-central1\",\n zone=\"us-central1-a\",\n type=\"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 zone = new Gcp.DataFusion.Instance(\"zone\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Zone = \"us-central1-a\",\n Type = \"DEVELOPER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"zone\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tType: 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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 zone = new Instance(\"zone\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .zone(\"us-central1-a\")\n .type(\"DEVELOPER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n zone:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n zone: us-central1-a\n type: DEVELOPER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamMember:InstanceIamMember default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamMember:InstanceIamMember default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamMember:InstanceIamMember default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamMember:InstanceIamMember default {{name}}\n```\n\n", "properties": { "condition": { "$ref": "#/types/gcp:securitycenter/InstanceIamMemberCondition:InstanceIamMemberCondition" @@ -233148,7 +233148,7 @@ } }, "gcp:securitycenter/instanceIamPolicy:InstanceIamPolicy": { - "description": "Represents a Data Fusion instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/data-fusion/docs/reference/rest/v1beta1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-fusion/docs/)\n\n## Example Usage\n\n### Data Fusion Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicInstance = new gcp.datafusion.Instance(\"basic_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_instance = gcp.datafusion.Instance(\"basic_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\")\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 basicInstance = new Gcp.DataFusion.Instance(\"basic_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"basic_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 basicInstance = new Instance(\"basicInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicInstance:\n type: gcp:datafusion:Instance\n name: basic_instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.appengine.getDefaultServiceAccount({});\nconst network = new gcp.compute.Network(\"network\", {name: \"datafusion-full-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"datafusion-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 22,\n network: network.id,\n});\nconst extendedInstance = new gcp.datafusion.Instance(\"extended_instance\", {\n name: \"my-instance\",\n description: \"My Data Fusion instance\",\n displayName: \"My Data Fusion instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n enableStackdriverLogging: true,\n enableStackdriverMonitoring: true,\n privateInstance: true,\n dataprocServiceAccount: _default.then(_default =\u003e _default.email),\n labels: {\n example_key: \"example_value\",\n },\n networkConfig: {\n network: \"default\",\n ipAllocation: pulumi.interpolate`${privateIpAlloc.address}/${privateIpAlloc.prefixLength}`,\n },\n accelerators: [{\n acceleratorType: \"CDC\",\n state: \"ENABLED\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.appengine.get_default_service_account()\nnetwork = gcp.compute.Network(\"network\", name=\"datafusion-full-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"datafusion-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=22,\n network=network.id)\nextended_instance = gcp.datafusion.Instance(\"extended_instance\",\n name=\"my-instance\",\n description=\"My Data Fusion instance\",\n display_name=\"My Data Fusion instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n enable_stackdriver_logging=True,\n enable_stackdriver_monitoring=True,\n private_instance=True,\n dataproc_service_account=default.email,\n labels={\n \"example_key\": \"example_value\",\n },\n network_config={\n \"network\": \"default\",\n \"ipAllocation\": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f\"{address}/{prefix_length}\"),\n },\n accelerators=[{\n \"acceleratorType\": \"CDC\",\n \"state\": \"ENABLED\",\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 @default = Gcp.AppEngine.GetDefaultServiceAccount.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"datafusion-full-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"datafusion-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 22,\n Network = network.Id,\n });\n\n var extendedInstance = new Gcp.DataFusion.Instance(\"extended_instance\", new()\n {\n Name = \"my-instance\",\n Description = \"My Data Fusion instance\",\n DisplayName = \"My Data Fusion instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EnableStackdriverLogging = true,\n EnableStackdriverMonitoring = true,\n PrivateInstance = true,\n DataprocServiceAccount = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Labels = \n {\n { \"example_key\", \"example_value\" },\n },\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n Network = \"default\",\n IpAllocation = Output.Tuple(privateIpAlloc.Address, privateIpAlloc.PrefixLength).Apply(values =\u003e\n {\n var address = values.Item1;\n var prefixLength = values.Item2;\n return $\"{address}/{prefixLength}\";\n }),\n },\n Accelerators = new[]\n {\n new Gcp.DataFusion.Inputs.InstanceAcceleratorArgs\n {\n AcceleratorType = \"CDC\",\n State = \"ENABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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_default, err := appengine.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-full-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"datafusion-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"extended_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDescription: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tDisplayName: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableStackdriverMonitoring: pulumi.Bool(true),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tDataprocServiceAccount: pulumi.String(_default.Email),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example_key\": pulumi.String(\"example_value\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\tIpAllocation: pulumi.All(privateIpAlloc.Address, privateIpAlloc.PrefixLength).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\taddress := _args[0].(string)\n\t\t\t\t\tprefixLength := _args[1].(int)\n\t\t\t\t\treturn fmt.Sprintf(\"%v/%v\", address, prefixLength), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tAccelerators: datafusion.InstanceAcceleratorArray{\n\t\t\t\t\u0026datafusion.InstanceAcceleratorArgs{\n\t\t\t\t\tAcceleratorType: pulumi.String(\"CDC\"),\n\t\t\t\t\tState: pulumi.String(\"ENABLED\"),\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.appengine.AppengineFunctions;\nimport com.pulumi.gcp.appengine.inputs.GetDefaultServiceAccountArgs;\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceAcceleratorArgs;\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 default = AppengineFunctions.getDefaultServiceAccount();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"datafusion-full-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"datafusion-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(22)\n .network(network.id())\n .build());\n\n var extendedInstance = new Instance(\"extendedInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .description(\"My Data Fusion instance\")\n .displayName(\"My Data Fusion instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .enableStackdriverLogging(true)\n .enableStackdriverMonitoring(true)\n .privateInstance(true)\n .dataprocServiceAccount(default_.email())\n .labels(Map.of(\"example_key\", \"example_value\"))\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .network(\"default\")\n .ipAllocation(Output.tuple(privateIpAlloc.address(), privateIpAlloc.prefixLength()).applyValue(values -\u003e {\n var address = values.t1;\n var prefixLength = values.t2;\n return String.format(\"%s/%s\", address,prefixLength);\n }))\n .build())\n .accelerators(InstanceAcceleratorArgs.builder()\n .acceleratorType(\"CDC\")\n .state(\"ENABLED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedInstance:\n type: gcp:datafusion:Instance\n name: extended_instance\n properties:\n name: my-instance\n description: My Data Fusion instance\n displayName: My Data Fusion instance\n region: us-central1\n type: BASIC\n enableStackdriverLogging: true\n enableStackdriverMonitoring: true\n privateInstance: true\n dataprocServiceAccount: ${default.email}\n labels:\n example_key: example_value\n networkConfig:\n network: default\n ipAllocation: ${privateIpAlloc.address}/${privateIpAlloc.prefixLength}\n accelerators:\n - acceleratorType: CDC\n state: ENABLED\n network:\n type: gcp:compute:Network\n properties:\n name: datafusion-full-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: datafusion-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 22\n network: ${network.id}\nvariables:\n default:\n fn::invoke:\n Function: gcp:appengine:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst psc = new gcp.compute.Network(\"psc\", {\n name: \"datafusion-psc-network\",\n autoCreateSubnetworks: false,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc\", {\n name: \"datafusion-psc-subnet\",\n region: \"us-central1\",\n network: psc.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscNetworkAttachment = new gcp.compute.NetworkAttachment(\"psc\", {\n name: \"datafusion-psc-attachment\",\n region: \"us-central1\",\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n subnetworks: [pscSubnetwork.selfLink],\n});\nconst pscInstance = new gcp.datafusion.Instance(\"psc_instance\", {\n name: \"psc-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n privateInstance: true,\n networkConfig: {\n connectionType: \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n privateServiceConnectConfig: {\n networkAttachment: pscNetworkAttachment.id,\n unreachableCidrBlock: \"192.168.0.0/25\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc = gcp.compute.Network(\"psc\",\n name=\"datafusion-psc-network\",\n auto_create_subnetworks=False)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc\",\n name=\"datafusion-psc-subnet\",\n region=\"us-central1\",\n network=psc.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_network_attachment = gcp.compute.NetworkAttachment(\"psc\",\n name=\"datafusion-psc-attachment\",\n region=\"us-central1\",\n connection_preference=\"ACCEPT_AUTOMATIC\",\n subnetworks=[psc_subnetwork.self_link])\npsc_instance = gcp.datafusion.Instance(\"psc_instance\",\n name=\"psc-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n private_instance=True,\n network_config={\n \"connectionType\": \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n \"privateServiceConnectConfig\": {\n \"networkAttachment\": psc_network_attachment.id,\n \"unreachableCidrBlock\": \"192.168.0.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 psc = new Gcp.Compute.Network(\"psc\", new()\n {\n Name = \"datafusion-psc-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc\", new()\n {\n Name = \"datafusion-psc-subnet\",\n Region = \"us-central1\",\n Network = psc.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"psc\", new()\n {\n Name = \"datafusion-psc-attachment\",\n Region = \"us-central1\",\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n Subnetworks = new[]\n {\n pscSubnetwork.SelfLink,\n },\n });\n\n var pscInstance = new Gcp.DataFusion.Instance(\"psc_instance\", new()\n {\n Name = \"psc-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n PrivateInstance = true,\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n ConnectionType = \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n PrivateServiceConnectConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs\n {\n NetworkAttachment = pscNetworkAttachment.Id,\n UnreachableCidrBlock = \"192.168.0.0/25\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpsc, err := compute.NewNetwork(ctx, \"psc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-network\"),\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\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: psc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"psc\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"psc_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"psc-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tConnectionType: pulumi.String(\"PRIVATE_SERVICE_CONNECT_INTERFACES\"),\n\t\t\t\tPrivateServiceConnectConfig: \u0026datafusion.InstanceNetworkConfigPrivateServiceConnectConfigArgs{\n\t\t\t\t\tNetworkAttachment: pscNetworkAttachment.ID(),\n\t\t\t\t\tUnreachableCidrBlock: pulumi.String(\"192.168.0.0/25\"),\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.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs;\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 psc = new Network(\"psc\", NetworkArgs.builder()\n .name(\"datafusion-psc-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"datafusion-psc-subnet\")\n .region(\"us-central1\")\n .network(psc.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscNetworkAttachment = new NetworkAttachment(\"pscNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"datafusion-psc-attachment\")\n .region(\"us-central1\")\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .subnetworks(pscSubnetwork.selfLink())\n .build());\n\n var pscInstance = new Instance(\"pscInstance\", InstanceArgs.builder()\n .name(\"psc-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .privateInstance(true)\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .connectionType(\"PRIVATE_SERVICE_CONNECT_INTERFACES\")\n .privateServiceConnectConfig(InstanceNetworkConfigPrivateServiceConnectConfigArgs.builder()\n .networkAttachment(pscNetworkAttachment.id())\n .unreachableCidrBlock(\"192.168.0.0/25\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscInstance:\n type: gcp:datafusion:Instance\n name: psc_instance\n properties:\n name: psc-instance\n region: us-central1\n type: BASIC\n privateInstance: true\n networkConfig:\n connectionType: PRIVATE_SERVICE_CONNECT_INTERFACES\n privateServiceConnectConfig:\n networkAttachment: ${pscNetworkAttachment.id}\n unreachableCidrBlock: 192.168.0.0/25\n psc:\n type: gcp:compute:Network\n properties:\n name: datafusion-psc-network\n autoCreateSubnetworks: false\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc\n properties:\n name: datafusion-psc-subnet\n region: us-central1\n network: ${psc.id}\n ipCidrRange: 10.0.0.0/16\n pscNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: psc\n properties:\n name: datafusion-psc-attachment\n region: us-central1\n connectionPreference: ACCEPT_AUTOMATIC\n subnetworks:\n - ${pscSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-instance\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-instance\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyMember = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com`),\n});\nconst cmek = new gcp.datafusion.Instance(\"cmek\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n cryptoKeyConfig: {\n keyReference: cryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKeyMember],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-instance\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-instance\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_member = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\")\ncmek = gcp.datafusion.Instance(\"cmek\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n crypto_key_config={\n \"keyReference\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member]))\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(\"key_ring\", new()\n {\n Name = \"my-instance\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-instance\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyMember = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datafusion.iam.gserviceaccount.com\",\n });\n\n var cmek = new Gcp.DataFusion.Instance(\"cmek\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n CryptoKeyConfig = new Gcp.DataFusion.Inputs.InstanceCryptoKeyConfigArgs\n {\n KeyReference = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tKeyRing: keyRing.ID(),\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\tcryptoKeyMember, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-datafusion.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"cmek\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tCryptoKeyConfig: \u0026datafusion.InstanceCryptoKeyConfigArgs{\n\t\t\t\tKeyReference: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceCryptoKeyConfigArgs;\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 .name(\"my-instance\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-instance\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyMember = new CryptoKeyIAMMember(\"cryptoKeyMember\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datafusion.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var cmek = new Instance(\"cmek\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .cryptoKeyConfig(InstanceCryptoKeyConfigArgs.builder()\n .keyReference(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cmek:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n cryptoKeyConfig:\n keyReference: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyMember}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-instance\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-instance\n location: us-central1\n cryptoKeyMember:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst enterpriseInstance = new gcp.datafusion.Instance(\"enterprise_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"ENTERPRISE\",\n enableRbac: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nenterprise_instance = gcp.datafusion.Instance(\"enterprise_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"ENTERPRISE\",\n enable_rbac=True)\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 enterpriseInstance = new Gcp.DataFusion.Instance(\"enterprise_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"ENTERPRISE\",\n EnableRbac = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"enterprise_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"ENTERPRISE\"),\n\t\t\tEnableRbac: pulumi.Bool(true),\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 enterpriseInstance = new Instance(\"enterpriseInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"ENTERPRISE\")\n .enableRbac(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n enterpriseInstance:\n type: gcp:datafusion:Instance\n name: enterprise_instance\n properties:\n name: my-instance\n region: us-central1\n type: ENTERPRISE\n enableRbac: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Event\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst eventTopic = new gcp.pubsub.Topic(\"event\", {name: \"my-instance\"});\nconst event = new gcp.datafusion.Instance(\"event\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n eventPublishConfig: {\n enabled: true,\n topic: eventTopic.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nevent_topic = gcp.pubsub.Topic(\"event\", name=\"my-instance\")\nevent = gcp.datafusion.Instance(\"event\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n event_publish_config={\n \"enabled\": True,\n \"topic\": event_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 eventTopic = new Gcp.PubSub.Topic(\"event\", new()\n {\n Name = \"my-instance\",\n });\n\n var @event = new Gcp.DataFusion.Instance(\"event\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EventPublishConfig = new Gcp.DataFusion.Inputs.InstanceEventPublishConfigArgs\n {\n Enabled = true,\n Topic = eventTopic.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\teventTopic, err := pubsub.NewTopic(ctx, \"event\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"event\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEventPublishConfig: \u0026datafusion.InstanceEventPublishConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tTopic: eventTopic.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.pubsub.TopicArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceEventPublishConfigArgs;\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 eventTopic = new Topic(\"eventTopic\", TopicArgs.builder()\n .name(\"my-instance\")\n .build());\n\n var event = new Instance(\"event\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .eventPublishConfig(InstanceEventPublishConfigArgs.builder()\n .enabled(true)\n .topic(eventTopic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n event:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n eventPublishConfig:\n enabled: true\n topic: ${eventTopic.id}\n eventTopic:\n type: gcp:pubsub:Topic\n name: event\n properties:\n name: my-instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst zone = new gcp.datafusion.Instance(\"zone\", {\n name: \"my-instance\",\n region: \"us-central1\",\n zone: \"us-central1-a\",\n type: \"DEVELOPER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nzone = gcp.datafusion.Instance(\"zone\",\n name=\"my-instance\",\n region=\"us-central1\",\n zone=\"us-central1-a\",\n type=\"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 zone = new Gcp.DataFusion.Instance(\"zone\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Zone = \"us-central1-a\",\n Type = \"DEVELOPER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"zone\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tType: 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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 zone = new Instance(\"zone\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .zone(\"us-central1-a\")\n .type(\"DEVELOPER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n zone:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n zone: us-central1-a\n type: DEVELOPER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamPolicy:InstanceIamPolicy default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamPolicy:InstanceIamPolicy default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamPolicy:InstanceIamPolicy default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamPolicy:InstanceIamPolicy default {{name}}\n```\n\n", + "description": "Represents a Data Fusion instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/data-fusion/docs/reference/rest/v1beta1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-fusion/docs/)\n\n## Example Usage\n\n### Data Fusion Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicInstance = new gcp.datafusion.Instance(\"basic_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_instance = gcp.datafusion.Instance(\"basic_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\")\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 basicInstance = new Gcp.DataFusion.Instance(\"basic_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"basic_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 basicInstance = new Instance(\"basicInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicInstance:\n type: gcp:datafusion:Instance\n name: basic_instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.appengine.getDefaultServiceAccount({});\nconst network = new gcp.compute.Network(\"network\", {name: \"datafusion-full-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"datafusion-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 22,\n network: network.id,\n});\nconst extendedInstance = new gcp.datafusion.Instance(\"extended_instance\", {\n name: \"my-instance\",\n description: \"My Data Fusion instance\",\n displayName: \"My Data Fusion instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n enableStackdriverLogging: true,\n enableStackdriverMonitoring: true,\n privateInstance: true,\n dataprocServiceAccount: _default.then(_default =\u003e _default.email),\n labels: {\n example_key: \"example_value\",\n },\n networkConfig: {\n network: \"default\",\n ipAllocation: pulumi.interpolate`${privateIpAlloc.address}/${privateIpAlloc.prefixLength}`,\n },\n accelerators: [{\n acceleratorType: \"CDC\",\n state: \"ENABLED\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.appengine.get_default_service_account()\nnetwork = gcp.compute.Network(\"network\", name=\"datafusion-full-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"datafusion-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=22,\n network=network.id)\nextended_instance = gcp.datafusion.Instance(\"extended_instance\",\n name=\"my-instance\",\n description=\"My Data Fusion instance\",\n display_name=\"My Data Fusion instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n enable_stackdriver_logging=True,\n enable_stackdriver_monitoring=True,\n private_instance=True,\n dataproc_service_account=default.email,\n labels={\n \"example_key\": \"example_value\",\n },\n network_config={\n \"network\": \"default\",\n \"ip_allocation\": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f\"{address}/{prefix_length}\"),\n },\n accelerators=[{\n \"accelerator_type\": \"CDC\",\n \"state\": \"ENABLED\",\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 @default = Gcp.AppEngine.GetDefaultServiceAccount.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"datafusion-full-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"datafusion-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 22,\n Network = network.Id,\n });\n\n var extendedInstance = new Gcp.DataFusion.Instance(\"extended_instance\", new()\n {\n Name = \"my-instance\",\n Description = \"My Data Fusion instance\",\n DisplayName = \"My Data Fusion instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EnableStackdriverLogging = true,\n EnableStackdriverMonitoring = true,\n PrivateInstance = true,\n DataprocServiceAccount = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Labels = \n {\n { \"example_key\", \"example_value\" },\n },\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n Network = \"default\",\n IpAllocation = Output.Tuple(privateIpAlloc.Address, privateIpAlloc.PrefixLength).Apply(values =\u003e\n {\n var address = values.Item1;\n var prefixLength = values.Item2;\n return $\"{address}/{prefixLength}\";\n }),\n },\n Accelerators = new[]\n {\n new Gcp.DataFusion.Inputs.InstanceAcceleratorArgs\n {\n AcceleratorType = \"CDC\",\n State = \"ENABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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_default, err := appengine.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-full-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"datafusion-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"extended_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDescription: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tDisplayName: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableStackdriverMonitoring: pulumi.Bool(true),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tDataprocServiceAccount: pulumi.String(_default.Email),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example_key\": pulumi.String(\"example_value\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\tIpAllocation: pulumi.All(privateIpAlloc.Address, privateIpAlloc.PrefixLength).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\taddress := _args[0].(string)\n\t\t\t\t\tprefixLength := _args[1].(int)\n\t\t\t\t\treturn fmt.Sprintf(\"%v/%v\", address, prefixLength), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tAccelerators: datafusion.InstanceAcceleratorArray{\n\t\t\t\t\u0026datafusion.InstanceAcceleratorArgs{\n\t\t\t\t\tAcceleratorType: pulumi.String(\"CDC\"),\n\t\t\t\t\tState: pulumi.String(\"ENABLED\"),\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.appengine.AppengineFunctions;\nimport com.pulumi.gcp.appengine.inputs.GetDefaultServiceAccountArgs;\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceAcceleratorArgs;\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 default = AppengineFunctions.getDefaultServiceAccount();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"datafusion-full-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"datafusion-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(22)\n .network(network.id())\n .build());\n\n var extendedInstance = new Instance(\"extendedInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .description(\"My Data Fusion instance\")\n .displayName(\"My Data Fusion instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .enableStackdriverLogging(true)\n .enableStackdriverMonitoring(true)\n .privateInstance(true)\n .dataprocServiceAccount(default_.email())\n .labels(Map.of(\"example_key\", \"example_value\"))\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .network(\"default\")\n .ipAllocation(Output.tuple(privateIpAlloc.address(), privateIpAlloc.prefixLength()).applyValue(values -\u003e {\n var address = values.t1;\n var prefixLength = values.t2;\n return String.format(\"%s/%s\", address,prefixLength);\n }))\n .build())\n .accelerators(InstanceAcceleratorArgs.builder()\n .acceleratorType(\"CDC\")\n .state(\"ENABLED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedInstance:\n type: gcp:datafusion:Instance\n name: extended_instance\n properties:\n name: my-instance\n description: My Data Fusion instance\n displayName: My Data Fusion instance\n region: us-central1\n type: BASIC\n enableStackdriverLogging: true\n enableStackdriverMonitoring: true\n privateInstance: true\n dataprocServiceAccount: ${default.email}\n labels:\n example_key: example_value\n networkConfig:\n network: default\n ipAllocation: ${privateIpAlloc.address}/${privateIpAlloc.prefixLength}\n accelerators:\n - acceleratorType: CDC\n state: ENABLED\n network:\n type: gcp:compute:Network\n properties:\n name: datafusion-full-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: datafusion-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 22\n network: ${network.id}\nvariables:\n default:\n fn::invoke:\n Function: gcp:appengine:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst psc = new gcp.compute.Network(\"psc\", {\n name: \"datafusion-psc-network\",\n autoCreateSubnetworks: false,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc\", {\n name: \"datafusion-psc-subnet\",\n region: \"us-central1\",\n network: psc.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscNetworkAttachment = new gcp.compute.NetworkAttachment(\"psc\", {\n name: \"datafusion-psc-attachment\",\n region: \"us-central1\",\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n subnetworks: [pscSubnetwork.selfLink],\n});\nconst pscInstance = new gcp.datafusion.Instance(\"psc_instance\", {\n name: \"psc-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n privateInstance: true,\n networkConfig: {\n connectionType: \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n privateServiceConnectConfig: {\n networkAttachment: pscNetworkAttachment.id,\n unreachableCidrBlock: \"192.168.0.0/25\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc = gcp.compute.Network(\"psc\",\n name=\"datafusion-psc-network\",\n auto_create_subnetworks=False)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc\",\n name=\"datafusion-psc-subnet\",\n region=\"us-central1\",\n network=psc.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_network_attachment = gcp.compute.NetworkAttachment(\"psc\",\n name=\"datafusion-psc-attachment\",\n region=\"us-central1\",\n connection_preference=\"ACCEPT_AUTOMATIC\",\n subnetworks=[psc_subnetwork.self_link])\npsc_instance = gcp.datafusion.Instance(\"psc_instance\",\n name=\"psc-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n private_instance=True,\n network_config={\n \"connection_type\": \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n \"private_service_connect_config\": {\n \"network_attachment\": psc_network_attachment.id,\n \"unreachable_cidr_block\": \"192.168.0.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 psc = new Gcp.Compute.Network(\"psc\", new()\n {\n Name = \"datafusion-psc-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc\", new()\n {\n Name = \"datafusion-psc-subnet\",\n Region = \"us-central1\",\n Network = psc.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"psc\", new()\n {\n Name = \"datafusion-psc-attachment\",\n Region = \"us-central1\",\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n Subnetworks = new[]\n {\n pscSubnetwork.SelfLink,\n },\n });\n\n var pscInstance = new Gcp.DataFusion.Instance(\"psc_instance\", new()\n {\n Name = \"psc-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n PrivateInstance = true,\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n ConnectionType = \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n PrivateServiceConnectConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs\n {\n NetworkAttachment = pscNetworkAttachment.Id,\n UnreachableCidrBlock = \"192.168.0.0/25\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpsc, err := compute.NewNetwork(ctx, \"psc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-network\"),\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\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: psc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"psc\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"psc_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"psc-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tConnectionType: pulumi.String(\"PRIVATE_SERVICE_CONNECT_INTERFACES\"),\n\t\t\t\tPrivateServiceConnectConfig: \u0026datafusion.InstanceNetworkConfigPrivateServiceConnectConfigArgs{\n\t\t\t\t\tNetworkAttachment: pscNetworkAttachment.ID(),\n\t\t\t\t\tUnreachableCidrBlock: pulumi.String(\"192.168.0.0/25\"),\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.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs;\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 psc = new Network(\"psc\", NetworkArgs.builder()\n .name(\"datafusion-psc-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"datafusion-psc-subnet\")\n .region(\"us-central1\")\n .network(psc.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscNetworkAttachment = new NetworkAttachment(\"pscNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"datafusion-psc-attachment\")\n .region(\"us-central1\")\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .subnetworks(pscSubnetwork.selfLink())\n .build());\n\n var pscInstance = new Instance(\"pscInstance\", InstanceArgs.builder()\n .name(\"psc-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .privateInstance(true)\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .connectionType(\"PRIVATE_SERVICE_CONNECT_INTERFACES\")\n .privateServiceConnectConfig(InstanceNetworkConfigPrivateServiceConnectConfigArgs.builder()\n .networkAttachment(pscNetworkAttachment.id())\n .unreachableCidrBlock(\"192.168.0.0/25\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscInstance:\n type: gcp:datafusion:Instance\n name: psc_instance\n properties:\n name: psc-instance\n region: us-central1\n type: BASIC\n privateInstance: true\n networkConfig:\n connectionType: PRIVATE_SERVICE_CONNECT_INTERFACES\n privateServiceConnectConfig:\n networkAttachment: ${pscNetworkAttachment.id}\n unreachableCidrBlock: 192.168.0.0/25\n psc:\n type: gcp:compute:Network\n properties:\n name: datafusion-psc-network\n autoCreateSubnetworks: false\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc\n properties:\n name: datafusion-psc-subnet\n region: us-central1\n network: ${psc.id}\n ipCidrRange: 10.0.0.0/16\n pscNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: psc\n properties:\n name: datafusion-psc-attachment\n region: us-central1\n connectionPreference: ACCEPT_AUTOMATIC\n subnetworks:\n - ${pscSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-instance\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-instance\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyMember = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com`),\n});\nconst cmek = new gcp.datafusion.Instance(\"cmek\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n cryptoKeyConfig: {\n keyReference: cryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKeyMember],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-instance\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-instance\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_member = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\")\ncmek = gcp.datafusion.Instance(\"cmek\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n crypto_key_config={\n \"key_reference\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member]))\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(\"key_ring\", new()\n {\n Name = \"my-instance\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-instance\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyMember = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datafusion.iam.gserviceaccount.com\",\n });\n\n var cmek = new Gcp.DataFusion.Instance(\"cmek\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n CryptoKeyConfig = new Gcp.DataFusion.Inputs.InstanceCryptoKeyConfigArgs\n {\n KeyReference = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\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, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\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\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tKeyRing: keyRing.ID(),\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\tcryptoKeyMember, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-datafusion.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"cmek\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tCryptoKeyConfig: \u0026datafusion.InstanceCryptoKeyConfigArgs{\n\t\t\t\tKeyReference: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceCryptoKeyConfigArgs;\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 .name(\"my-instance\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-instance\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyMember = new CryptoKeyIAMMember(\"cryptoKeyMember\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datafusion.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var cmek = new Instance(\"cmek\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .cryptoKeyConfig(InstanceCryptoKeyConfigArgs.builder()\n .keyReference(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cmek:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n cryptoKeyConfig:\n keyReference: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyMember}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-instance\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-instance\n location: us-central1\n cryptoKeyMember:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst enterpriseInstance = new gcp.datafusion.Instance(\"enterprise_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"ENTERPRISE\",\n enableRbac: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nenterprise_instance = gcp.datafusion.Instance(\"enterprise_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"ENTERPRISE\",\n enable_rbac=True)\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 enterpriseInstance = new Gcp.DataFusion.Instance(\"enterprise_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"ENTERPRISE\",\n EnableRbac = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"enterprise_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"ENTERPRISE\"),\n\t\t\tEnableRbac: pulumi.Bool(true),\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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 enterpriseInstance = new Instance(\"enterpriseInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"ENTERPRISE\")\n .enableRbac(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n enterpriseInstance:\n type: gcp:datafusion:Instance\n name: enterprise_instance\n properties:\n name: my-instance\n region: us-central1\n type: ENTERPRISE\n enableRbac: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Event\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst eventTopic = new gcp.pubsub.Topic(\"event\", {name: \"my-instance\"});\nconst event = new gcp.datafusion.Instance(\"event\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n eventPublishConfig: {\n enabled: true,\n topic: eventTopic.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nevent_topic = gcp.pubsub.Topic(\"event\", name=\"my-instance\")\nevent = gcp.datafusion.Instance(\"event\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n event_publish_config={\n \"enabled\": True,\n \"topic\": event_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 eventTopic = new Gcp.PubSub.Topic(\"event\", new()\n {\n Name = \"my-instance\",\n });\n\n var @event = new Gcp.DataFusion.Instance(\"event\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EventPublishConfig = new Gcp.DataFusion.Inputs.InstanceEventPublishConfigArgs\n {\n Enabled = true,\n Topic = eventTopic.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\teventTopic, err := pubsub.NewTopic(ctx, \"event\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"event\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEventPublishConfig: \u0026datafusion.InstanceEventPublishConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tTopic: eventTopic.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.pubsub.TopicArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceEventPublishConfigArgs;\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 eventTopic = new Topic(\"eventTopic\", TopicArgs.builder()\n .name(\"my-instance\")\n .build());\n\n var event = new Instance(\"event\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .eventPublishConfig(InstanceEventPublishConfigArgs.builder()\n .enabled(true)\n .topic(eventTopic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n event:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n eventPublishConfig:\n enabled: true\n topic: ${eventTopic.id}\n eventTopic:\n type: gcp:pubsub:Topic\n name: event\n properties:\n name: my-instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst zone = new gcp.datafusion.Instance(\"zone\", {\n name: \"my-instance\",\n region: \"us-central1\",\n zone: \"us-central1-a\",\n type: \"DEVELOPER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nzone = gcp.datafusion.Instance(\"zone\",\n name=\"my-instance\",\n region=\"us-central1\",\n zone=\"us-central1-a\",\n type=\"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 zone = new Gcp.DataFusion.Instance(\"zone\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Zone = \"us-central1-a\",\n Type = \"DEVELOPER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/datafusion\"\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 := datafusion.NewInstance(ctx, \"zone\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tType: 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.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\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 zone = new Instance(\"zone\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .zone(\"us-central1-a\")\n .type(\"DEVELOPER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n zone:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n zone: us-central1-a\n type: DEVELOPER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamPolicy:InstanceIamPolicy default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamPolicy:InstanceIamPolicy default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamPolicy:InstanceIamPolicy default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamPolicy:InstanceIamPolicy default {{name}}\n```\n\n", "properties": { "etag": { "type": "string" @@ -233228,7 +233228,7 @@ } }, "gcp:securitycenter/managementFolderSecurityHealthAnalyticsCustomModule:ManagementFolderSecurityHealthAnalyticsCustomModule": { - "description": "Represents an instance of a Security Health Analytics custom module, including\nits full module name, display name, enablement state, and last updated time.\nYou can create a custom module at the organization, folder, or project level.\nCustom modules that you create at the organization or folder level are inherited\nby the child folders and projects.\n\n\nTo get more information about FolderSecurityHealthAnalyticsCustomModule, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/security-center-management/rest/v1/folders.locations.securityHealthAnalyticsCustomModules)\n* How-to Guides\n * [Overview of custom modules for Security Health Analytics](https://cloud.google.com/security-command-center/docs/custom-modules-sha-overview)\n\n## Example Usage\n\n### Scc Management Folder Security Health Analytics Custom Module Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.organizations.Folder(\"folder\", {\n parent: \"organizations/123456789\",\n displayName: \"folder-name\",\n});\nconst example = new gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModule(\"example\", {\n folder: folder.folderId,\n location: \"global\",\n displayName: \"basic_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n description: \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n recommendation: \"Set the rotation period to at most 30 days.\",\n severity: \"MEDIUM\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.organizations.Folder(\"folder\",\n parent=\"organizations/123456789\",\n display_name=\"folder-name\")\nexample = gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModule(\"example\",\n folder=folder.folder_id,\n location=\"global\",\n display_name=\"basic_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n \"resourceSelector\": {\n \"resourceTypes\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"description\": \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n \"recommendation\": \"Set the rotation period to at most 30 days.\",\n \"severity\": \"MEDIUM\",\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 folder = new Gcp.Organizations.Folder(\"folder\", new()\n {\n Parent = \"organizations/123456789\",\n DisplayName = \"folder-name\",\n });\n\n var example = new Gcp.SecurityCenter.ManagementFolderSecurityHealthAnalyticsCustomModule(\"example\", new()\n {\n Folder = folder.FolderId,\n Location = \"global\",\n DisplayName = \"basic_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Description = \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n Recommendation = \"Set the rotation period to at most 30 days.\",\n Severity = \"MEDIUM\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfolder, err := organizations.NewFolder(ctx, \"folder\", \u0026organizations.FolderArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDisplayName: pulumi.String(\"folder-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securitycenter.NewManagementFolderSecurityHealthAnalyticsCustomModule(ctx, \"example\", \u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleArgs{\n\t\t\tFolder: folder.FolderId,\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDisplayName: pulumi.String(\"basic_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t},\n\t\t\t\tResourceSelector: \u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDescription: pulumi.String(\"The rotation period of the identified cryptokey resource exceeds 30 days.\"),\n\t\t\t\tRecommendation: pulumi.String(\"Set the rotation period to at most 30 days.\"),\n\t\t\t\tSeverity: pulumi.String(\"MEDIUM\"),\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.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModule;\nimport com.pulumi.gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs;\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 folder = new Folder(\"folder\", FolderArgs.builder()\n .parent(\"organizations/123456789\")\n .displayName(\"folder-name\")\n .build());\n\n var example = new ManagementFolderSecurityHealthAnalyticsCustomModule(\"example\", ManagementFolderSecurityHealthAnalyticsCustomModuleArgs.builder()\n .folder(folder.folderId())\n .location(\"global\")\n .displayName(\"basic_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs.builder()\n .predicate(ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .build())\n .resourceSelector(ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .description(\"The rotation period of the identified cryptokey resource exceeds 30 days.\")\n .recommendation(\"Set the rotation period to at most 30 days.\")\n .severity(\"MEDIUM\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:organizations:Folder\n properties:\n parent: organizations/123456789\n displayName: folder-name\n example:\n type: gcp:securitycenter:ManagementFolderSecurityHealthAnalyticsCustomModule\n properties:\n folder: ${folder.folderId}\n location: global\n displayName: basic_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n description: The rotation period of the identified cryptokey resource exceeds 30 days.\n recommendation: Set the rotation period to at most 30 days.\n severity: MEDIUM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scc Management Folder Security Health Analytics Custom Module Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.organizations.Folder(\"folder\", {\n parent: \"organizations/123456789\",\n displayName: \"folder-name\",\n});\nconst example = new gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModule(\"example\", {\n folder: folder.folderId,\n location: \"global\",\n displayName: \"full_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n customOutput: {\n properties: [{\n name: \"duration\",\n valueExpression: {\n expression: \"resource.rotationPeriod\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n }],\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n severity: \"LOW\",\n description: \"Description of the custom module\",\n recommendation: \"Steps to resolve violation\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.organizations.Folder(\"folder\",\n parent=\"organizations/123456789\",\n display_name=\"folder-name\")\nexample = gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModule(\"example\",\n folder=folder.folder_id,\n location=\"global\",\n display_name=\"full_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n \"customOutput\": {\n \"properties\": [{\n \"name\": \"duration\",\n \"valueExpression\": {\n \"expression\": \"resource.rotationPeriod\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n }],\n },\n \"resourceSelector\": {\n \"resourceTypes\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"severity\": \"LOW\",\n \"description\": \"Description of the custom module\",\n \"recommendation\": \"Steps to resolve violation\",\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 folder = new Gcp.Organizations.Folder(\"folder\", new()\n {\n Parent = \"organizations/123456789\",\n DisplayName = \"folder-name\",\n });\n\n var example = new Gcp.SecurityCenter.ManagementFolderSecurityHealthAnalyticsCustomModule(\"example\", new()\n {\n Folder = folder.FolderId,\n Location = \"global\",\n DisplayName = \"full_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n CustomOutput = new Gcp.SecurityCenter.Inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs\n {\n Properties = new[]\n {\n new Gcp.SecurityCenter.Inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs\n {\n Name = \"duration\",\n ValueExpression = new Gcp.SecurityCenter.Inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs\n {\n Expression = \"resource.rotationPeriod\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n },\n },\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Severity = \"LOW\",\n Description = \"Description of the custom module\",\n Recommendation = \"Steps to resolve violation\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfolder, err := organizations.NewFolder(ctx, \"folder\", \u0026organizations.FolderArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDisplayName: pulumi.String(\"folder-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securitycenter.NewManagementFolderSecurityHealthAnalyticsCustomModule(ctx, \"example\", \u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleArgs{\n\t\t\tFolder: folder.FolderId,\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDisplayName: pulumi.String(\"full_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\n\t\t\t\t},\n\t\t\t\tCustomOutput: securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs{\n\t\t\t\t\tProperties: securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArray{\n\t\t\t\t\t\t\u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"duration\"),\n\t\t\t\t\t\t\tValueExpression: \u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs{\n\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod\"),\n\t\t\t\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\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\tResourceSelector: \u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSeverity: pulumi.String(\"LOW\"),\n\t\t\t\tDescription: pulumi.String(\"Description of the custom module\"),\n\t\t\t\tRecommendation: pulumi.String(\"Steps to resolve violation\"),\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.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModule;\nimport com.pulumi.gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs;\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 folder = new Folder(\"folder\", FolderArgs.builder()\n .parent(\"organizations/123456789\")\n .displayName(\"folder-name\")\n .build());\n\n var example = new ManagementFolderSecurityHealthAnalyticsCustomModule(\"example\", ManagementFolderSecurityHealthAnalyticsCustomModuleArgs.builder()\n .folder(folder.folderId())\n .location(\"global\")\n .displayName(\"full_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs.builder()\n .predicate(ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .customOutput(ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs.builder()\n .properties(ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs.builder()\n .name(\"duration\")\n .valueExpression(ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs.builder()\n .expression(\"resource.rotationPeriod\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .build())\n .build())\n .resourceSelector(ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .severity(\"LOW\")\n .description(\"Description of the custom module\")\n .recommendation(\"Steps to resolve violation\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:organizations:Folder\n properties:\n parent: organizations/123456789\n displayName: folder-name\n example:\n type: gcp:securitycenter:ManagementFolderSecurityHealthAnalyticsCustomModule\n properties:\n folder: ${folder.folderId}\n location: global\n displayName: full_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n customOutput:\n properties:\n - name: duration\n valueExpression:\n expression: resource.rotationPeriod\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n severity: LOW\n description: Description of the custom module\n recommendation: Steps to resolve violation\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFolderSecurityHealthAnalyticsCustomModule can be imported using any of these accepted formats:\n\n* `folders/{{folder}}/locations/{{location}}/securityHealthAnalyticsCustomModules/{{name}}`\n\n* `{{folder}}/{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, FolderSecurityHealthAnalyticsCustomModule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/managementFolderSecurityHealthAnalyticsCustomModule:ManagementFolderSecurityHealthAnalyticsCustomModule default folders/{{folder}}/locations/{{location}}/securityHealthAnalyticsCustomModules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/managementFolderSecurityHealthAnalyticsCustomModule:ManagementFolderSecurityHealthAnalyticsCustomModule default {{folder}}/{{location}}/{{name}}\n```\n\n", + "description": "Represents an instance of a Security Health Analytics custom module, including\nits full module name, display name, enablement state, and last updated time.\nYou can create a custom module at the organization, folder, or project level.\nCustom modules that you create at the organization or folder level are inherited\nby the child folders and projects.\n\n\nTo get more information about FolderSecurityHealthAnalyticsCustomModule, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/security-center-management/rest/v1/folders.locations.securityHealthAnalyticsCustomModules)\n* How-to Guides\n * [Overview of custom modules for Security Health Analytics](https://cloud.google.com/security-command-center/docs/custom-modules-sha-overview)\n\n## Example Usage\n\n### Scc Management Folder Security Health Analytics Custom Module Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.organizations.Folder(\"folder\", {\n parent: \"organizations/123456789\",\n displayName: \"folder-name\",\n});\nconst example = new gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModule(\"example\", {\n folder: folder.folderId,\n location: \"global\",\n displayName: \"basic_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n description: \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n recommendation: \"Set the rotation period to at most 30 days.\",\n severity: \"MEDIUM\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.organizations.Folder(\"folder\",\n parent=\"organizations/123456789\",\n display_name=\"folder-name\")\nexample = gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModule(\"example\",\n folder=folder.folder_id,\n location=\"global\",\n display_name=\"basic_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n \"resource_selector\": {\n \"resource_types\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"description\": \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n \"recommendation\": \"Set the rotation period to at most 30 days.\",\n \"severity\": \"MEDIUM\",\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 folder = new Gcp.Organizations.Folder(\"folder\", new()\n {\n Parent = \"organizations/123456789\",\n DisplayName = \"folder-name\",\n });\n\n var example = new Gcp.SecurityCenter.ManagementFolderSecurityHealthAnalyticsCustomModule(\"example\", new()\n {\n Folder = folder.FolderId,\n Location = \"global\",\n DisplayName = \"basic_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Description = \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n Recommendation = \"Set the rotation period to at most 30 days.\",\n Severity = \"MEDIUM\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfolder, err := organizations.NewFolder(ctx, \"folder\", \u0026organizations.FolderArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDisplayName: pulumi.String(\"folder-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securitycenter.NewManagementFolderSecurityHealthAnalyticsCustomModule(ctx, \"example\", \u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleArgs{\n\t\t\tFolder: folder.FolderId,\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDisplayName: pulumi.String(\"basic_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t},\n\t\t\t\tResourceSelector: \u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDescription: pulumi.String(\"The rotation period of the identified cryptokey resource exceeds 30 days.\"),\n\t\t\t\tRecommendation: pulumi.String(\"Set the rotation period to at most 30 days.\"),\n\t\t\t\tSeverity: pulumi.String(\"MEDIUM\"),\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.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModule;\nimport com.pulumi.gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs;\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 folder = new Folder(\"folder\", FolderArgs.builder()\n .parent(\"organizations/123456789\")\n .displayName(\"folder-name\")\n .build());\n\n var example = new ManagementFolderSecurityHealthAnalyticsCustomModule(\"example\", ManagementFolderSecurityHealthAnalyticsCustomModuleArgs.builder()\n .folder(folder.folderId())\n .location(\"global\")\n .displayName(\"basic_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs.builder()\n .predicate(ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .build())\n .resourceSelector(ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .description(\"The rotation period of the identified cryptokey resource exceeds 30 days.\")\n .recommendation(\"Set the rotation period to at most 30 days.\")\n .severity(\"MEDIUM\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:organizations:Folder\n properties:\n parent: organizations/123456789\n displayName: folder-name\n example:\n type: gcp:securitycenter:ManagementFolderSecurityHealthAnalyticsCustomModule\n properties:\n folder: ${folder.folderId}\n location: global\n displayName: basic_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n description: The rotation period of the identified cryptokey resource exceeds 30 days.\n recommendation: Set the rotation period to at most 30 days.\n severity: MEDIUM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scc Management Folder Security Health Analytics Custom Module Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.organizations.Folder(\"folder\", {\n parent: \"organizations/123456789\",\n displayName: \"folder-name\",\n});\nconst example = new gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModule(\"example\", {\n folder: folder.folderId,\n location: \"global\",\n displayName: \"full_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n customOutput: {\n properties: [{\n name: \"duration\",\n valueExpression: {\n expression: \"resource.rotationPeriod\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n }],\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n severity: \"LOW\",\n description: \"Description of the custom module\",\n recommendation: \"Steps to resolve violation\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.organizations.Folder(\"folder\",\n parent=\"organizations/123456789\",\n display_name=\"folder-name\")\nexample = gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModule(\"example\",\n folder=folder.folder_id,\n location=\"global\",\n display_name=\"full_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n \"custom_output\": {\n \"properties\": [{\n \"name\": \"duration\",\n \"value_expression\": {\n \"expression\": \"resource.rotationPeriod\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n }],\n },\n \"resource_selector\": {\n \"resource_types\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"severity\": \"LOW\",\n \"description\": \"Description of the custom module\",\n \"recommendation\": \"Steps to resolve violation\",\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 folder = new Gcp.Organizations.Folder(\"folder\", new()\n {\n Parent = \"organizations/123456789\",\n DisplayName = \"folder-name\",\n });\n\n var example = new Gcp.SecurityCenter.ManagementFolderSecurityHealthAnalyticsCustomModule(\"example\", new()\n {\n Folder = folder.FolderId,\n Location = \"global\",\n DisplayName = \"full_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n CustomOutput = new Gcp.SecurityCenter.Inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs\n {\n Properties = new[]\n {\n new Gcp.SecurityCenter.Inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs\n {\n Name = \"duration\",\n ValueExpression = new Gcp.SecurityCenter.Inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs\n {\n Expression = \"resource.rotationPeriod\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n },\n },\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Severity = \"LOW\",\n Description = \"Description of the custom module\",\n Recommendation = \"Steps to resolve violation\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfolder, err := organizations.NewFolder(ctx, \"folder\", \u0026organizations.FolderArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDisplayName: pulumi.String(\"folder-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securitycenter.NewManagementFolderSecurityHealthAnalyticsCustomModule(ctx, \"example\", \u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleArgs{\n\t\t\tFolder: folder.FolderId,\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDisplayName: pulumi.String(\"full_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\n\t\t\t\t},\n\t\t\t\tCustomOutput: securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs{\n\t\t\t\t\tProperties: securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArray{\n\t\t\t\t\t\t\u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"duration\"),\n\t\t\t\t\t\t\tValueExpression: \u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs{\n\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod\"),\n\t\t\t\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\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\tResourceSelector: \u0026securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSeverity: pulumi.String(\"LOW\"),\n\t\t\t\tDescription: pulumi.String(\"Description of the custom module\"),\n\t\t\t\tRecommendation: pulumi.String(\"Steps to resolve violation\"),\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.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModule;\nimport com.pulumi.gcp.securitycenter.ManagementFolderSecurityHealthAnalyticsCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs;\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 folder = new Folder(\"folder\", FolderArgs.builder()\n .parent(\"organizations/123456789\")\n .displayName(\"folder-name\")\n .build());\n\n var example = new ManagementFolderSecurityHealthAnalyticsCustomModule(\"example\", ManagementFolderSecurityHealthAnalyticsCustomModuleArgs.builder()\n .folder(folder.folderId())\n .location(\"global\")\n .displayName(\"full_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigArgs.builder()\n .predicate(ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .customOutput(ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs.builder()\n .properties(ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs.builder()\n .name(\"duration\")\n .valueExpression(ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs.builder()\n .expression(\"resource.rotationPeriod\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .build())\n .build())\n .resourceSelector(ManagementFolderSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .severity(\"LOW\")\n .description(\"Description of the custom module\")\n .recommendation(\"Steps to resolve violation\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:organizations:Folder\n properties:\n parent: organizations/123456789\n displayName: folder-name\n example:\n type: gcp:securitycenter:ManagementFolderSecurityHealthAnalyticsCustomModule\n properties:\n folder: ${folder.folderId}\n location: global\n displayName: full_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n customOutput:\n properties:\n - name: duration\n valueExpression:\n expression: resource.rotationPeriod\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n severity: LOW\n description: Description of the custom module\n recommendation: Steps to resolve violation\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFolderSecurityHealthAnalyticsCustomModule can be imported using any of these accepted formats:\n\n* `folders/{{folder}}/locations/{{location}}/securityHealthAnalyticsCustomModules/{{name}}`\n\n* `{{folder}}/{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, FolderSecurityHealthAnalyticsCustomModule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/managementFolderSecurityHealthAnalyticsCustomModule:ManagementFolderSecurityHealthAnalyticsCustomModule default folders/{{folder}}/locations/{{location}}/securityHealthAnalyticsCustomModules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/managementFolderSecurityHealthAnalyticsCustomModule:ManagementFolderSecurityHealthAnalyticsCustomModule default {{folder}}/{{location}}/{{name}}\n```\n\n", "properties": { "ancestorModule": { "type": "string", @@ -233473,7 +233473,7 @@ } }, "gcp:securitycenter/managementOrganizationSecurityHealthAnalyticsCustomModule:ManagementOrganizationSecurityHealthAnalyticsCustomModule": { - "description": "Represents an instance of a Security Health Analytics custom module, including\nits full module name, display name, enablement state, and last updated time.\nYou can create a custom module at the organization, folder, or project level.\nCustom modules that you create at the organization or folder level are inherited\nby the child folders and projects.\n\n\nTo get more information about OrganizationSecurityHealthAnalyticsCustomModule, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/security-center-management/rest/v1/organizations.locations.securityHealthAnalyticsCustomModules)\n* How-to Guides\n * [Overview of custom modules for Security Health Analytics](https://cloud.google.com/security-command-center/docs/custom-modules-sha-overview)\n\n## Example Usage\n\n### Scc Management Organization Security Health Analytics Custom Module Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModule(\"example\", {\n organization: \"123456789\",\n displayName: \"basic_custom_module\",\n location: \"global\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n description: \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n recommendation: \"Set the rotation period to at most 30 days.\",\n severity: \"MEDIUM\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModule(\"example\",\n organization=\"123456789\",\n display_name=\"basic_custom_module\",\n location=\"global\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n \"resourceSelector\": {\n \"resourceTypes\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"description\": \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n \"recommendation\": \"Set the rotation period to at most 30 days.\",\n \"severity\": \"MEDIUM\",\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 = new Gcp.SecurityCenter.ManagementOrganizationSecurityHealthAnalyticsCustomModule(\"example\", new()\n {\n Organization = \"123456789\",\n DisplayName = \"basic_custom_module\",\n Location = \"global\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Description = \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n Recommendation = \"Set the rotation period to at most 30 days.\",\n Severity = \"MEDIUM\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\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 := securitycenter.NewManagementOrganizationSecurityHealthAnalyticsCustomModule(ctx, \"example\", \u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleArgs{\n\t\t\tOrganization: pulumi.String(\"123456789\"),\n\t\t\tDisplayName: pulumi.String(\"basic_custom_module\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t},\n\t\t\t\tResourceSelector: \u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDescription: pulumi.String(\"The rotation period of the identified cryptokey resource exceeds 30 days.\"),\n\t\t\t\tRecommendation: pulumi.String(\"Set the rotation period to at most 30 days.\"),\n\t\t\t\tSeverity: pulumi.String(\"MEDIUM\"),\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.securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModule;\nimport com.pulumi.gcp.securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs;\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 ManagementOrganizationSecurityHealthAnalyticsCustomModule(\"example\", ManagementOrganizationSecurityHealthAnalyticsCustomModuleArgs.builder()\n .organization(\"123456789\")\n .displayName(\"basic_custom_module\")\n .location(\"global\")\n .enablementState(\"ENABLED\")\n .customConfig(ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigArgs.builder()\n .predicate(ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .build())\n .resourceSelector(ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .description(\"The rotation period of the identified cryptokey resource exceeds 30 days.\")\n .recommendation(\"Set the rotation period to at most 30 days.\")\n .severity(\"MEDIUM\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:securitycenter:ManagementOrganizationSecurityHealthAnalyticsCustomModule\n properties:\n organization: '123456789'\n displayName: basic_custom_module\n location: global\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n description: The rotation period of the identified cryptokey resource exceeds 30 days.\n recommendation: Set the rotation period to at most 30 days.\n severity: MEDIUM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scc Management Organization Security Health Analytics Custom Module Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModule(\"example\", {\n organization: \"123456789\",\n displayName: \"full_custom_module\",\n location: \"global\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n customOutput: {\n properties: [{\n name: \"duration\",\n valueExpression: {\n expression: \"resource.rotationPeriod\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n }],\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n severity: \"LOW\",\n description: \"Description of the custom module\",\n recommendation: \"Steps to resolve violation\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModule(\"example\",\n organization=\"123456789\",\n display_name=\"full_custom_module\",\n location=\"global\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n \"customOutput\": {\n \"properties\": [{\n \"name\": \"duration\",\n \"valueExpression\": {\n \"expression\": \"resource.rotationPeriod\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n }],\n },\n \"resourceSelector\": {\n \"resourceTypes\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"severity\": \"LOW\",\n \"description\": \"Description of the custom module\",\n \"recommendation\": \"Steps to resolve violation\",\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 = new Gcp.SecurityCenter.ManagementOrganizationSecurityHealthAnalyticsCustomModule(\"example\", new()\n {\n Organization = \"123456789\",\n DisplayName = \"full_custom_module\",\n Location = \"global\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n CustomOutput = new Gcp.SecurityCenter.Inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs\n {\n Properties = new[]\n {\n new Gcp.SecurityCenter.Inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs\n {\n Name = \"duration\",\n ValueExpression = new Gcp.SecurityCenter.Inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs\n {\n Expression = \"resource.rotationPeriod\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n },\n },\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Severity = \"LOW\",\n Description = \"Description of the custom module\",\n Recommendation = \"Steps to resolve violation\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\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 := securitycenter.NewManagementOrganizationSecurityHealthAnalyticsCustomModule(ctx, \"example\", \u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleArgs{\n\t\t\tOrganization: pulumi.String(\"123456789\"),\n\t\t\tDisplayName: pulumi.String(\"full_custom_module\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\n\t\t\t\t},\n\t\t\t\tCustomOutput: securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs{\n\t\t\t\t\tProperties: securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArray{\n\t\t\t\t\t\t\u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"duration\"),\n\t\t\t\t\t\t\tValueExpression: \u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs{\n\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod\"),\n\t\t\t\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\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\tResourceSelector: \u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSeverity: pulumi.String(\"LOW\"),\n\t\t\t\tDescription: pulumi.String(\"Description of the custom module\"),\n\t\t\t\tRecommendation: pulumi.String(\"Steps to resolve violation\"),\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.securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModule;\nimport com.pulumi.gcp.securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs;\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 ManagementOrganizationSecurityHealthAnalyticsCustomModule(\"example\", ManagementOrganizationSecurityHealthAnalyticsCustomModuleArgs.builder()\n .organization(\"123456789\")\n .displayName(\"full_custom_module\")\n .location(\"global\")\n .enablementState(\"ENABLED\")\n .customConfig(ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigArgs.builder()\n .predicate(ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .customOutput(ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs.builder()\n .properties(ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs.builder()\n .name(\"duration\")\n .valueExpression(ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs.builder()\n .expression(\"resource.rotationPeriod\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .build())\n .build())\n .resourceSelector(ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .severity(\"LOW\")\n .description(\"Description of the custom module\")\n .recommendation(\"Steps to resolve violation\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:securitycenter:ManagementOrganizationSecurityHealthAnalyticsCustomModule\n properties:\n organization: '123456789'\n displayName: full_custom_module\n location: global\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n customOutput:\n properties:\n - name: duration\n valueExpression:\n expression: resource.rotationPeriod\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n severity: LOW\n description: Description of the custom module\n recommendation: Steps to resolve violation\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganizationSecurityHealthAnalyticsCustomModule can be imported using any of these accepted formats:\n\n* `organizations/{{organization}}/locations/{{location}}/securityHealthAnalyticsCustomModules/{{name}}`\n\n* `{{organization}}/{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, OrganizationSecurityHealthAnalyticsCustomModule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/managementOrganizationSecurityHealthAnalyticsCustomModule:ManagementOrganizationSecurityHealthAnalyticsCustomModule default organizations/{{organization}}/locations/{{location}}/securityHealthAnalyticsCustomModules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/managementOrganizationSecurityHealthAnalyticsCustomModule:ManagementOrganizationSecurityHealthAnalyticsCustomModule default {{organization}}/{{location}}/{{name}}\n```\n\n", + "description": "Represents an instance of a Security Health Analytics custom module, including\nits full module name, display name, enablement state, and last updated time.\nYou can create a custom module at the organization, folder, or project level.\nCustom modules that you create at the organization or folder level are inherited\nby the child folders and projects.\n\n\nTo get more information about OrganizationSecurityHealthAnalyticsCustomModule, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/security-center-management/rest/v1/organizations.locations.securityHealthAnalyticsCustomModules)\n* How-to Guides\n * [Overview of custom modules for Security Health Analytics](https://cloud.google.com/security-command-center/docs/custom-modules-sha-overview)\n\n## Example Usage\n\n### Scc Management Organization Security Health Analytics Custom Module Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModule(\"example\", {\n organization: \"123456789\",\n displayName: \"basic_custom_module\",\n location: \"global\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n description: \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n recommendation: \"Set the rotation period to at most 30 days.\",\n severity: \"MEDIUM\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModule(\"example\",\n organization=\"123456789\",\n display_name=\"basic_custom_module\",\n location=\"global\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n \"resource_selector\": {\n \"resource_types\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"description\": \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n \"recommendation\": \"Set the rotation period to at most 30 days.\",\n \"severity\": \"MEDIUM\",\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 = new Gcp.SecurityCenter.ManagementOrganizationSecurityHealthAnalyticsCustomModule(\"example\", new()\n {\n Organization = \"123456789\",\n DisplayName = \"basic_custom_module\",\n Location = \"global\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Description = \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n Recommendation = \"Set the rotation period to at most 30 days.\",\n Severity = \"MEDIUM\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\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 := securitycenter.NewManagementOrganizationSecurityHealthAnalyticsCustomModule(ctx, \"example\", \u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleArgs{\n\t\t\tOrganization: pulumi.String(\"123456789\"),\n\t\t\tDisplayName: pulumi.String(\"basic_custom_module\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t},\n\t\t\t\tResourceSelector: \u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDescription: pulumi.String(\"The rotation period of the identified cryptokey resource exceeds 30 days.\"),\n\t\t\t\tRecommendation: pulumi.String(\"Set the rotation period to at most 30 days.\"),\n\t\t\t\tSeverity: pulumi.String(\"MEDIUM\"),\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.securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModule;\nimport com.pulumi.gcp.securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs;\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 ManagementOrganizationSecurityHealthAnalyticsCustomModule(\"example\", ManagementOrganizationSecurityHealthAnalyticsCustomModuleArgs.builder()\n .organization(\"123456789\")\n .displayName(\"basic_custom_module\")\n .location(\"global\")\n .enablementState(\"ENABLED\")\n .customConfig(ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigArgs.builder()\n .predicate(ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .build())\n .resourceSelector(ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .description(\"The rotation period of the identified cryptokey resource exceeds 30 days.\")\n .recommendation(\"Set the rotation period to at most 30 days.\")\n .severity(\"MEDIUM\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:securitycenter:ManagementOrganizationSecurityHealthAnalyticsCustomModule\n properties:\n organization: '123456789'\n displayName: basic_custom_module\n location: global\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n description: The rotation period of the identified cryptokey resource exceeds 30 days.\n recommendation: Set the rotation period to at most 30 days.\n severity: MEDIUM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scc Management Organization Security Health Analytics Custom Module Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModule(\"example\", {\n organization: \"123456789\",\n displayName: \"full_custom_module\",\n location: \"global\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n customOutput: {\n properties: [{\n name: \"duration\",\n valueExpression: {\n expression: \"resource.rotationPeriod\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n }],\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n severity: \"LOW\",\n description: \"Description of the custom module\",\n recommendation: \"Steps to resolve violation\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModule(\"example\",\n organization=\"123456789\",\n display_name=\"full_custom_module\",\n location=\"global\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n \"custom_output\": {\n \"properties\": [{\n \"name\": \"duration\",\n \"value_expression\": {\n \"expression\": \"resource.rotationPeriod\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n }],\n },\n \"resource_selector\": {\n \"resource_types\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"severity\": \"LOW\",\n \"description\": \"Description of the custom module\",\n \"recommendation\": \"Steps to resolve violation\",\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 = new Gcp.SecurityCenter.ManagementOrganizationSecurityHealthAnalyticsCustomModule(\"example\", new()\n {\n Organization = \"123456789\",\n DisplayName = \"full_custom_module\",\n Location = \"global\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n CustomOutput = new Gcp.SecurityCenter.Inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs\n {\n Properties = new[]\n {\n new Gcp.SecurityCenter.Inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs\n {\n Name = \"duration\",\n ValueExpression = new Gcp.SecurityCenter.Inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs\n {\n Expression = \"resource.rotationPeriod\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n },\n },\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Severity = \"LOW\",\n Description = \"Description of the custom module\",\n Recommendation = \"Steps to resolve violation\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\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 := securitycenter.NewManagementOrganizationSecurityHealthAnalyticsCustomModule(ctx, \"example\", \u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleArgs{\n\t\t\tOrganization: pulumi.String(\"123456789\"),\n\t\t\tDisplayName: pulumi.String(\"full_custom_module\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\n\t\t\t\t},\n\t\t\t\tCustomOutput: securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs{\n\t\t\t\t\tProperties: securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArray{\n\t\t\t\t\t\t\u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"duration\"),\n\t\t\t\t\t\t\tValueExpression: \u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs{\n\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod\"),\n\t\t\t\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\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\tResourceSelector: \u0026securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSeverity: pulumi.String(\"LOW\"),\n\t\t\t\tDescription: pulumi.String(\"Description of the custom module\"),\n\t\t\t\tRecommendation: pulumi.String(\"Steps to resolve violation\"),\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.securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModule;\nimport com.pulumi.gcp.securitycenter.ManagementOrganizationSecurityHealthAnalyticsCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs;\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 ManagementOrganizationSecurityHealthAnalyticsCustomModule(\"example\", ManagementOrganizationSecurityHealthAnalyticsCustomModuleArgs.builder()\n .organization(\"123456789\")\n .displayName(\"full_custom_module\")\n .location(\"global\")\n .enablementState(\"ENABLED\")\n .customConfig(ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigArgs.builder()\n .predicate(ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .customOutput(ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs.builder()\n .properties(ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs.builder()\n .name(\"duration\")\n .valueExpression(ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs.builder()\n .expression(\"resource.rotationPeriod\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .build())\n .build())\n .resourceSelector(ManagementOrganizationSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .severity(\"LOW\")\n .description(\"Description of the custom module\")\n .recommendation(\"Steps to resolve violation\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:securitycenter:ManagementOrganizationSecurityHealthAnalyticsCustomModule\n properties:\n organization: '123456789'\n displayName: full_custom_module\n location: global\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n customOutput:\n properties:\n - name: duration\n valueExpression:\n expression: resource.rotationPeriod\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n severity: LOW\n description: Description of the custom module\n recommendation: Steps to resolve violation\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganizationSecurityHealthAnalyticsCustomModule can be imported using any of these accepted formats:\n\n* `organizations/{{organization}}/locations/{{location}}/securityHealthAnalyticsCustomModules/{{name}}`\n\n* `{{organization}}/{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, OrganizationSecurityHealthAnalyticsCustomModule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/managementOrganizationSecurityHealthAnalyticsCustomModule:ManagementOrganizationSecurityHealthAnalyticsCustomModule default organizations/{{organization}}/locations/{{location}}/securityHealthAnalyticsCustomModules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/managementOrganizationSecurityHealthAnalyticsCustomModule:ManagementOrganizationSecurityHealthAnalyticsCustomModule default {{organization}}/{{location}}/{{name}}\n```\n\n", "properties": { "ancestorModule": { "type": "string", @@ -233594,7 +233594,7 @@ } }, "gcp:securitycenter/managementProjectSecurityHealthAnalyticsCustomModule:ManagementProjectSecurityHealthAnalyticsCustomModule": { - "description": "Represents an instance of a Security Health Analytics custom module, including\nits full module name, display name, enablement state, and last updated time.\nYou can create a custom module at the organization, folder, or project level.\nCustom modules that you create at the organization or folder level are inherited\nby the child folders and projects.\n\n\nTo get more information about ProjectSecurityHealthAnalyticsCustomModule, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/security-center-management/rest/v1/projects.locations.securityHealthAnalyticsCustomModules)\n* How-to Guides\n * [Overview of custom modules for Security Health Analytics](https://cloud.google.com/security-command-center/docs/custom-modules-sha-overview)\n\n## Example Usage\n\n### Scc Management Organization Project Security Health Analytics Custom Module Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModule(\"example\", {\n location: \"global\",\n displayName: \"basic_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n description: \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n recommendation: \"Set the rotation period to at most 30 days.\",\n severity: \"MEDIUM\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModule(\"example\",\n location=\"global\",\n display_name=\"basic_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n \"resourceSelector\": {\n \"resourceTypes\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"description\": \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n \"recommendation\": \"Set the rotation period to at most 30 days.\",\n \"severity\": \"MEDIUM\",\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 = new Gcp.SecurityCenter.ManagementProjectSecurityHealthAnalyticsCustomModule(\"example\", new()\n {\n Location = \"global\",\n DisplayName = \"basic_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Description = \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n Recommendation = \"Set the rotation period to at most 30 days.\",\n Severity = \"MEDIUM\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\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 := securitycenter.NewManagementProjectSecurityHealthAnalyticsCustomModule(ctx, \"example\", \u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDisplayName: pulumi.String(\"basic_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t},\n\t\t\t\tResourceSelector: \u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDescription: pulumi.String(\"The rotation period of the identified cryptokey resource exceeds 30 days.\"),\n\t\t\t\tRecommendation: pulumi.String(\"Set the rotation period to at most 30 days.\"),\n\t\t\t\tSeverity: pulumi.String(\"MEDIUM\"),\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.securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModule;\nimport com.pulumi.gcp.securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs;\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 ManagementProjectSecurityHealthAnalyticsCustomModule(\"example\", ManagementProjectSecurityHealthAnalyticsCustomModuleArgs.builder()\n .location(\"global\")\n .displayName(\"basic_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigArgs.builder()\n .predicate(ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .build())\n .resourceSelector(ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .description(\"The rotation period of the identified cryptokey resource exceeds 30 days.\")\n .recommendation(\"Set the rotation period to at most 30 days.\")\n .severity(\"MEDIUM\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:securitycenter:ManagementProjectSecurityHealthAnalyticsCustomModule\n properties:\n location: global\n displayName: basic_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n description: The rotation period of the identified cryptokey resource exceeds 30 days.\n recommendation: Set the rotation period to at most 30 days.\n severity: MEDIUM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scc Management Organization Project Security Health Analytics Custom Module Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModule(\"example\", {\n location: \"global\",\n displayName: \"full_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n customOutput: {\n properties: [{\n name: \"duration\",\n valueExpression: {\n expression: \"resource.rotationPeriod\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n }],\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n severity: \"LOW\",\n description: \"Description of the custom module\",\n recommendation: \"Steps to resolve violation\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModule(\"example\",\n location=\"global\",\n display_name=\"full_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n \"customOutput\": {\n \"properties\": [{\n \"name\": \"duration\",\n \"valueExpression\": {\n \"expression\": \"resource.rotationPeriod\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n }],\n },\n \"resourceSelector\": {\n \"resourceTypes\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"severity\": \"LOW\",\n \"description\": \"Description of the custom module\",\n \"recommendation\": \"Steps to resolve violation\",\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 = new Gcp.SecurityCenter.ManagementProjectSecurityHealthAnalyticsCustomModule(\"example\", new()\n {\n Location = \"global\",\n DisplayName = \"full_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n CustomOutput = new Gcp.SecurityCenter.Inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs\n {\n Properties = new[]\n {\n new Gcp.SecurityCenter.Inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs\n {\n Name = \"duration\",\n ValueExpression = new Gcp.SecurityCenter.Inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs\n {\n Expression = \"resource.rotationPeriod\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n },\n },\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Severity = \"LOW\",\n Description = \"Description of the custom module\",\n Recommendation = \"Steps to resolve violation\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\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 := securitycenter.NewManagementProjectSecurityHealthAnalyticsCustomModule(ctx, \"example\", \u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDisplayName: pulumi.String(\"full_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\n\t\t\t\t},\n\t\t\t\tCustomOutput: securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs{\n\t\t\t\t\tProperties: securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArray{\n\t\t\t\t\t\t\u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"duration\"),\n\t\t\t\t\t\t\tValueExpression: \u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs{\n\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod\"),\n\t\t\t\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\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\tResourceSelector: \u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSeverity: pulumi.String(\"LOW\"),\n\t\t\t\tDescription: pulumi.String(\"Description of the custom module\"),\n\t\t\t\tRecommendation: pulumi.String(\"Steps to resolve violation\"),\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.securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModule;\nimport com.pulumi.gcp.securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs;\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 ManagementProjectSecurityHealthAnalyticsCustomModule(\"example\", ManagementProjectSecurityHealthAnalyticsCustomModuleArgs.builder()\n .location(\"global\")\n .displayName(\"full_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigArgs.builder()\n .predicate(ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .customOutput(ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs.builder()\n .properties(ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs.builder()\n .name(\"duration\")\n .valueExpression(ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs.builder()\n .expression(\"resource.rotationPeriod\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .build())\n .build())\n .resourceSelector(ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .severity(\"LOW\")\n .description(\"Description of the custom module\")\n .recommendation(\"Steps to resolve violation\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:securitycenter:ManagementProjectSecurityHealthAnalyticsCustomModule\n properties:\n location: global\n displayName: full_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n customOutput:\n properties:\n - name: duration\n valueExpression:\n expression: resource.rotationPeriod\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n severity: LOW\n description: Description of the custom module\n recommendation: Steps to resolve violation\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProjectSecurityHealthAnalyticsCustomModule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/securityHealthAnalyticsCustomModules/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ProjectSecurityHealthAnalyticsCustomModule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/managementProjectSecurityHealthAnalyticsCustomModule:ManagementProjectSecurityHealthAnalyticsCustomModule default projects/{{project}}/locations/{{location}}/securityHealthAnalyticsCustomModules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/managementProjectSecurityHealthAnalyticsCustomModule:ManagementProjectSecurityHealthAnalyticsCustomModule default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/managementProjectSecurityHealthAnalyticsCustomModule:ManagementProjectSecurityHealthAnalyticsCustomModule default {{location}}/{{name}}\n```\n\n", + "description": "Represents an instance of a Security Health Analytics custom module, including\nits full module name, display name, enablement state, and last updated time.\nYou can create a custom module at the organization, folder, or project level.\nCustom modules that you create at the organization or folder level are inherited\nby the child folders and projects.\n\n\nTo get more information about ProjectSecurityHealthAnalyticsCustomModule, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/security-center-management/rest/v1/projects.locations.securityHealthAnalyticsCustomModules)\n* How-to Guides\n * [Overview of custom modules for Security Health Analytics](https://cloud.google.com/security-command-center/docs/custom-modules-sha-overview)\n\n## Example Usage\n\n### Scc Management Organization Project Security Health Analytics Custom Module Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModule(\"example\", {\n location: \"global\",\n displayName: \"basic_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n description: \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n recommendation: \"Set the rotation period to at most 30 days.\",\n severity: \"MEDIUM\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModule(\"example\",\n location=\"global\",\n display_name=\"basic_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n \"resource_selector\": {\n \"resource_types\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"description\": \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n \"recommendation\": \"Set the rotation period to at most 30 days.\",\n \"severity\": \"MEDIUM\",\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 = new Gcp.SecurityCenter.ManagementProjectSecurityHealthAnalyticsCustomModule(\"example\", new()\n {\n Location = \"global\",\n DisplayName = \"basic_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Description = \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n Recommendation = \"Set the rotation period to at most 30 days.\",\n Severity = \"MEDIUM\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\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 := securitycenter.NewManagementProjectSecurityHealthAnalyticsCustomModule(ctx, \"example\", \u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDisplayName: pulumi.String(\"basic_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t},\n\t\t\t\tResourceSelector: \u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDescription: pulumi.String(\"The rotation period of the identified cryptokey resource exceeds 30 days.\"),\n\t\t\t\tRecommendation: pulumi.String(\"Set the rotation period to at most 30 days.\"),\n\t\t\t\tSeverity: pulumi.String(\"MEDIUM\"),\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.securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModule;\nimport com.pulumi.gcp.securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs;\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 ManagementProjectSecurityHealthAnalyticsCustomModule(\"example\", ManagementProjectSecurityHealthAnalyticsCustomModuleArgs.builder()\n .location(\"global\")\n .displayName(\"basic_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigArgs.builder()\n .predicate(ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .build())\n .resourceSelector(ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .description(\"The rotation period of the identified cryptokey resource exceeds 30 days.\")\n .recommendation(\"Set the rotation period to at most 30 days.\")\n .severity(\"MEDIUM\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:securitycenter:ManagementProjectSecurityHealthAnalyticsCustomModule\n properties:\n location: global\n displayName: basic_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n description: The rotation period of the identified cryptokey resource exceeds 30 days.\n recommendation: Set the rotation period to at most 30 days.\n severity: MEDIUM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scc Management Organization Project Security Health Analytics Custom Module Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModule(\"example\", {\n location: \"global\",\n displayName: \"full_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n customOutput: {\n properties: [{\n name: \"duration\",\n valueExpression: {\n expression: \"resource.rotationPeriod\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n }],\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n severity: \"LOW\",\n description: \"Description of the custom module\",\n recommendation: \"Steps to resolve violation\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModule(\"example\",\n location=\"global\",\n display_name=\"full_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n \"custom_output\": {\n \"properties\": [{\n \"name\": \"duration\",\n \"value_expression\": {\n \"expression\": \"resource.rotationPeriod\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n }],\n },\n \"resource_selector\": {\n \"resource_types\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"severity\": \"LOW\",\n \"description\": \"Description of the custom module\",\n \"recommendation\": \"Steps to resolve violation\",\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 = new Gcp.SecurityCenter.ManagementProjectSecurityHealthAnalyticsCustomModule(\"example\", new()\n {\n Location = \"global\",\n DisplayName = \"full_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n CustomOutput = new Gcp.SecurityCenter.Inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs\n {\n Properties = new[]\n {\n new Gcp.SecurityCenter.Inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs\n {\n Name = \"duration\",\n ValueExpression = new Gcp.SecurityCenter.Inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs\n {\n Expression = \"resource.rotationPeriod\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n },\n },\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Severity = \"LOW\",\n Description = \"Description of the custom module\",\n Recommendation = \"Steps to resolve violation\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\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 := securitycenter.NewManagementProjectSecurityHealthAnalyticsCustomModule(ctx, \"example\", \u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDisplayName: pulumi.String(\"full_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\n\t\t\t\t},\n\t\t\t\tCustomOutput: securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs{\n\t\t\t\t\tProperties: securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArray{\n\t\t\t\t\t\t\u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"duration\"),\n\t\t\t\t\t\t\tValueExpression: \u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs{\n\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod\"),\n\t\t\t\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\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\tResourceSelector: \u0026securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSeverity: pulumi.String(\"LOW\"),\n\t\t\t\tDescription: pulumi.String(\"Description of the custom module\"),\n\t\t\t\tRecommendation: pulumi.String(\"Steps to resolve violation\"),\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.securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModule;\nimport com.pulumi.gcp.securitycenter.ManagementProjectSecurityHealthAnalyticsCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs;\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 ManagementProjectSecurityHealthAnalyticsCustomModule(\"example\", ManagementProjectSecurityHealthAnalyticsCustomModuleArgs.builder()\n .location(\"global\")\n .displayName(\"full_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigArgs.builder()\n .predicate(ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .customOutput(ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputArgs.builder()\n .properties(ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyArgs.builder()\n .name(\"duration\")\n .valueExpression(ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs.builder()\n .expression(\"resource.rotationPeriod\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .build())\n .build())\n .resourceSelector(ManagementProjectSecurityHealthAnalyticsCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .severity(\"LOW\")\n .description(\"Description of the custom module\")\n .recommendation(\"Steps to resolve violation\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:securitycenter:ManagementProjectSecurityHealthAnalyticsCustomModule\n properties:\n location: global\n displayName: full_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n customOutput:\n properties:\n - name: duration\n valueExpression:\n expression: resource.rotationPeriod\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n severity: LOW\n description: Description of the custom module\n recommendation: Steps to resolve violation\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProjectSecurityHealthAnalyticsCustomModule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/securityHealthAnalyticsCustomModules/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ProjectSecurityHealthAnalyticsCustomModule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/managementProjectSecurityHealthAnalyticsCustomModule:ManagementProjectSecurityHealthAnalyticsCustomModule default projects/{{project}}/locations/{{location}}/securityHealthAnalyticsCustomModules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/managementProjectSecurityHealthAnalyticsCustomModule:ManagementProjectSecurityHealthAnalyticsCustomModule default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/managementProjectSecurityHealthAnalyticsCustomModule:ManagementProjectSecurityHealthAnalyticsCustomModule default {{location}}/{{name}}\n```\n\n", "properties": { "ancestorModule": { "type": "string", @@ -233930,7 +233930,7 @@ } }, "gcp:securitycenter/organizationCustomModule:OrganizationCustomModule": { - "description": "Represents an instance of a Security Health Analytics custom module, including\nits full module name, display name, enablement state, and last updated time.\nYou can create a custom module at the organization, folder, or project level.\nCustom modules that you create at the organization or folder level are inherited\nby the child folders and projects.\n\n\nTo get more information about OrganizationCustomModule, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/rest/v1/organizations.securityHealthAnalyticsSettings.customModules)\n* How-to Guides\n * [Overview of custom modules for Security Health Analytics](https://cloud.google.com/security-command-center/docs/custom-modules-sha-overview)\n\n## Example Usage\n\n### Scc Organization Custom Module Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.securitycenter.OrganizationCustomModule(\"example\", {\n organization: \"123456789\",\n displayName: \"basic_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n description: \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n recommendation: \"Set the rotation period to at most 30 days.\",\n severity: \"MEDIUM\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.securitycenter.OrganizationCustomModule(\"example\",\n organization=\"123456789\",\n display_name=\"basic_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n \"resourceSelector\": {\n \"resourceTypes\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"description\": \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n \"recommendation\": \"Set the rotation period to at most 30 days.\",\n \"severity\": \"MEDIUM\",\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 = new Gcp.SecurityCenter.OrganizationCustomModule(\"example\", new()\n {\n Organization = \"123456789\",\n DisplayName = \"basic_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.OrganizationCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.OrganizationCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.OrganizationCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Description = \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n Recommendation = \"Set the rotation period to at most 30 days.\",\n Severity = \"MEDIUM\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\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 := securitycenter.NewOrganizationCustomModule(ctx, \"example\", \u0026securitycenter.OrganizationCustomModuleArgs{\n\t\t\tOrganization: pulumi.String(\"123456789\"),\n\t\t\tDisplayName: pulumi.String(\"basic_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.OrganizationCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.OrganizationCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t},\n\t\t\t\tResourceSelector: \u0026securitycenter.OrganizationCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDescription: pulumi.String(\"The rotation period of the identified cryptokey resource exceeds 30 days.\"),\n\t\t\t\tRecommendation: pulumi.String(\"Set the rotation period to at most 30 days.\"),\n\t\t\t\tSeverity: pulumi.String(\"MEDIUM\"),\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.securitycenter.OrganizationCustomModule;\nimport com.pulumi.gcp.securitycenter.OrganizationCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.OrganizationCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.OrganizationCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.OrganizationCustomModuleCustomConfigResourceSelectorArgs;\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 OrganizationCustomModule(\"example\", OrganizationCustomModuleArgs.builder()\n .organization(\"123456789\")\n .displayName(\"basic_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(OrganizationCustomModuleCustomConfigArgs.builder()\n .predicate(OrganizationCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .build())\n .resourceSelector(OrganizationCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .description(\"The rotation period of the identified cryptokey resource exceeds 30 days.\")\n .recommendation(\"Set the rotation period to at most 30 days.\")\n .severity(\"MEDIUM\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:securitycenter:OrganizationCustomModule\n properties:\n organization: '123456789'\n displayName: basic_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n description: The rotation period of the identified cryptokey resource exceeds 30 days.\n recommendation: Set the rotation period to at most 30 days.\n severity: MEDIUM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scc Organization Custom Module Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.securitycenter.OrganizationCustomModule(\"example\", {\n organization: \"123456789\",\n displayName: \"full_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n customOutput: {\n properties: [{\n name: \"duration\",\n valueExpression: {\n expression: \"resource.rotationPeriod\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n }],\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n severity: \"LOW\",\n description: \"Description of the custom module\",\n recommendation: \"Steps to resolve violation\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.securitycenter.OrganizationCustomModule(\"example\",\n organization=\"123456789\",\n display_name=\"full_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n \"customOutput\": {\n \"properties\": [{\n \"name\": \"duration\",\n \"valueExpression\": {\n \"expression\": \"resource.rotationPeriod\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n }],\n },\n \"resourceSelector\": {\n \"resourceTypes\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"severity\": \"LOW\",\n \"description\": \"Description of the custom module\",\n \"recommendation\": \"Steps to resolve violation\",\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 = new Gcp.SecurityCenter.OrganizationCustomModule(\"example\", new()\n {\n Organization = \"123456789\",\n DisplayName = \"full_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.OrganizationCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.OrganizationCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n CustomOutput = new Gcp.SecurityCenter.Inputs.OrganizationCustomModuleCustomConfigCustomOutputArgs\n {\n Properties = new[]\n {\n new Gcp.SecurityCenter.Inputs.OrganizationCustomModuleCustomConfigCustomOutputPropertyArgs\n {\n Name = \"duration\",\n ValueExpression = new Gcp.SecurityCenter.Inputs.OrganizationCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs\n {\n Expression = \"resource.rotationPeriod\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n },\n },\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.OrganizationCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Severity = \"LOW\",\n Description = \"Description of the custom module\",\n Recommendation = \"Steps to resolve violation\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\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 := securitycenter.NewOrganizationCustomModule(ctx, \"example\", \u0026securitycenter.OrganizationCustomModuleArgs{\n\t\t\tOrganization: pulumi.String(\"123456789\"),\n\t\t\tDisplayName: pulumi.String(\"full_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.OrganizationCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.OrganizationCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\n\t\t\t\t},\n\t\t\t\tCustomOutput: securitycenter.OrganizationCustomModuleCustomConfigCustomOutputArgs{\n\t\t\t\t\tProperties: securitycenter.OrganizationCustomModuleCustomConfigCustomOutputPropertyArray{\n\t\t\t\t\t\t\u0026securitycenter.OrganizationCustomModuleCustomConfigCustomOutputPropertyArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"duration\"),\n\t\t\t\t\t\t\tValueExpression: \u0026securitycenter.OrganizationCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs{\n\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod\"),\n\t\t\t\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\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\tResourceSelector: \u0026securitycenter.OrganizationCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSeverity: pulumi.String(\"LOW\"),\n\t\t\t\tDescription: pulumi.String(\"Description of the custom module\"),\n\t\t\t\tRecommendation: pulumi.String(\"Steps to resolve violation\"),\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.securitycenter.OrganizationCustomModule;\nimport com.pulumi.gcp.securitycenter.OrganizationCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.OrganizationCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.OrganizationCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.OrganizationCustomModuleCustomConfigCustomOutputArgs;\nimport com.pulumi.gcp.securitycenter.inputs.OrganizationCustomModuleCustomConfigResourceSelectorArgs;\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 OrganizationCustomModule(\"example\", OrganizationCustomModuleArgs.builder()\n .organization(\"123456789\")\n .displayName(\"full_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(OrganizationCustomModuleCustomConfigArgs.builder()\n .predicate(OrganizationCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .customOutput(OrganizationCustomModuleCustomConfigCustomOutputArgs.builder()\n .properties(OrganizationCustomModuleCustomConfigCustomOutputPropertyArgs.builder()\n .name(\"duration\")\n .valueExpression(OrganizationCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs.builder()\n .expression(\"resource.rotationPeriod\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .build())\n .build())\n .resourceSelector(OrganizationCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .severity(\"LOW\")\n .description(\"Description of the custom module\")\n .recommendation(\"Steps to resolve violation\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:securitycenter:OrganizationCustomModule\n properties:\n organization: '123456789'\n displayName: full_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n customOutput:\n properties:\n - name: duration\n valueExpression:\n expression: resource.rotationPeriod\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n severity: LOW\n description: Description of the custom module\n recommendation: Steps to resolve violation\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganizationCustomModule can be imported using any of these accepted formats:\n\n* `organizations/{{organization}}/securityHealthAnalyticsSettings/customModules/{{name}}`\n\n* `{{organization}}/{{name}}`\n\nWhen using the `pulumi import` command, OrganizationCustomModule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/organizationCustomModule:OrganizationCustomModule default organizations/{{organization}}/securityHealthAnalyticsSettings/customModules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/organizationCustomModule:OrganizationCustomModule default {{organization}}/{{name}}\n```\n\n", + "description": "Represents an instance of a Security Health Analytics custom module, including\nits full module name, display name, enablement state, and last updated time.\nYou can create a custom module at the organization, folder, or project level.\nCustom modules that you create at the organization or folder level are inherited\nby the child folders and projects.\n\n\nTo get more information about OrganizationCustomModule, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/rest/v1/organizations.securityHealthAnalyticsSettings.customModules)\n* How-to Guides\n * [Overview of custom modules for Security Health Analytics](https://cloud.google.com/security-command-center/docs/custom-modules-sha-overview)\n\n## Example Usage\n\n### Scc Organization Custom Module Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.securitycenter.OrganizationCustomModule(\"example\", {\n organization: \"123456789\",\n displayName: \"basic_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n description: \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n recommendation: \"Set the rotation period to at most 30 days.\",\n severity: \"MEDIUM\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.securitycenter.OrganizationCustomModule(\"example\",\n organization=\"123456789\",\n display_name=\"basic_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n \"resource_selector\": {\n \"resource_types\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"description\": \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n \"recommendation\": \"Set the rotation period to at most 30 days.\",\n \"severity\": \"MEDIUM\",\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 = new Gcp.SecurityCenter.OrganizationCustomModule(\"example\", new()\n {\n Organization = \"123456789\",\n DisplayName = \"basic_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.OrganizationCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.OrganizationCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.OrganizationCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Description = \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n Recommendation = \"Set the rotation period to at most 30 days.\",\n Severity = \"MEDIUM\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\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 := securitycenter.NewOrganizationCustomModule(ctx, \"example\", \u0026securitycenter.OrganizationCustomModuleArgs{\n\t\t\tOrganization: pulumi.String(\"123456789\"),\n\t\t\tDisplayName: pulumi.String(\"basic_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.OrganizationCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.OrganizationCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t},\n\t\t\t\tResourceSelector: \u0026securitycenter.OrganizationCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDescription: pulumi.String(\"The rotation period of the identified cryptokey resource exceeds 30 days.\"),\n\t\t\t\tRecommendation: pulumi.String(\"Set the rotation period to at most 30 days.\"),\n\t\t\t\tSeverity: pulumi.String(\"MEDIUM\"),\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.securitycenter.OrganizationCustomModule;\nimport com.pulumi.gcp.securitycenter.OrganizationCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.OrganizationCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.OrganizationCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.OrganizationCustomModuleCustomConfigResourceSelectorArgs;\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 OrganizationCustomModule(\"example\", OrganizationCustomModuleArgs.builder()\n .organization(\"123456789\")\n .displayName(\"basic_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(OrganizationCustomModuleCustomConfigArgs.builder()\n .predicate(OrganizationCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .build())\n .resourceSelector(OrganizationCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .description(\"The rotation period of the identified cryptokey resource exceeds 30 days.\")\n .recommendation(\"Set the rotation period to at most 30 days.\")\n .severity(\"MEDIUM\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:securitycenter:OrganizationCustomModule\n properties:\n organization: '123456789'\n displayName: basic_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n description: The rotation period of the identified cryptokey resource exceeds 30 days.\n recommendation: Set the rotation period to at most 30 days.\n severity: MEDIUM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scc Organization Custom Module Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.securitycenter.OrganizationCustomModule(\"example\", {\n organization: \"123456789\",\n displayName: \"full_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n customOutput: {\n properties: [{\n name: \"duration\",\n valueExpression: {\n expression: \"resource.rotationPeriod\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n }],\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n severity: \"LOW\",\n description: \"Description of the custom module\",\n recommendation: \"Steps to resolve violation\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.securitycenter.OrganizationCustomModule(\"example\",\n organization=\"123456789\",\n display_name=\"full_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n \"custom_output\": {\n \"properties\": [{\n \"name\": \"duration\",\n \"value_expression\": {\n \"expression\": \"resource.rotationPeriod\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n }],\n },\n \"resource_selector\": {\n \"resource_types\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"severity\": \"LOW\",\n \"description\": \"Description of the custom module\",\n \"recommendation\": \"Steps to resolve violation\",\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 = new Gcp.SecurityCenter.OrganizationCustomModule(\"example\", new()\n {\n Organization = \"123456789\",\n DisplayName = \"full_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.OrganizationCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.OrganizationCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n CustomOutput = new Gcp.SecurityCenter.Inputs.OrganizationCustomModuleCustomConfigCustomOutputArgs\n {\n Properties = new[]\n {\n new Gcp.SecurityCenter.Inputs.OrganizationCustomModuleCustomConfigCustomOutputPropertyArgs\n {\n Name = \"duration\",\n ValueExpression = new Gcp.SecurityCenter.Inputs.OrganizationCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs\n {\n Expression = \"resource.rotationPeriod\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n },\n },\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.OrganizationCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Severity = \"LOW\",\n Description = \"Description of the custom module\",\n Recommendation = \"Steps to resolve violation\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\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 := securitycenter.NewOrganizationCustomModule(ctx, \"example\", \u0026securitycenter.OrganizationCustomModuleArgs{\n\t\t\tOrganization: pulumi.String(\"123456789\"),\n\t\t\tDisplayName: pulumi.String(\"full_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.OrganizationCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.OrganizationCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\n\t\t\t\t},\n\t\t\t\tCustomOutput: securitycenter.OrganizationCustomModuleCustomConfigCustomOutputArgs{\n\t\t\t\t\tProperties: securitycenter.OrganizationCustomModuleCustomConfigCustomOutputPropertyArray{\n\t\t\t\t\t\t\u0026securitycenter.OrganizationCustomModuleCustomConfigCustomOutputPropertyArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"duration\"),\n\t\t\t\t\t\t\tValueExpression: \u0026securitycenter.OrganizationCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs{\n\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod\"),\n\t\t\t\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\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\tResourceSelector: \u0026securitycenter.OrganizationCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSeverity: pulumi.String(\"LOW\"),\n\t\t\t\tDescription: pulumi.String(\"Description of the custom module\"),\n\t\t\t\tRecommendation: pulumi.String(\"Steps to resolve violation\"),\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.securitycenter.OrganizationCustomModule;\nimport com.pulumi.gcp.securitycenter.OrganizationCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.OrganizationCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.OrganizationCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.OrganizationCustomModuleCustomConfigCustomOutputArgs;\nimport com.pulumi.gcp.securitycenter.inputs.OrganizationCustomModuleCustomConfigResourceSelectorArgs;\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 OrganizationCustomModule(\"example\", OrganizationCustomModuleArgs.builder()\n .organization(\"123456789\")\n .displayName(\"full_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(OrganizationCustomModuleCustomConfigArgs.builder()\n .predicate(OrganizationCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .customOutput(OrganizationCustomModuleCustomConfigCustomOutputArgs.builder()\n .properties(OrganizationCustomModuleCustomConfigCustomOutputPropertyArgs.builder()\n .name(\"duration\")\n .valueExpression(OrganizationCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs.builder()\n .expression(\"resource.rotationPeriod\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .build())\n .build())\n .resourceSelector(OrganizationCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .severity(\"LOW\")\n .description(\"Description of the custom module\")\n .recommendation(\"Steps to resolve violation\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:securitycenter:OrganizationCustomModule\n properties:\n organization: '123456789'\n displayName: full_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n customOutput:\n properties:\n - name: duration\n valueExpression:\n expression: resource.rotationPeriod\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n severity: LOW\n description: Description of the custom module\n recommendation: Steps to resolve violation\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganizationCustomModule can be imported using any of these accepted formats:\n\n* `organizations/{{organization}}/securityHealthAnalyticsSettings/customModules/{{name}}`\n\n* `{{organization}}/{{name}}`\n\nWhen using the `pulumi import` command, OrganizationCustomModule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/organizationCustomModule:OrganizationCustomModule default organizations/{{organization}}/securityHealthAnalyticsSettings/customModules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/organizationCustomModule:OrganizationCustomModule default {{organization}}/{{name}}\n```\n\n", "properties": { "ancestorModule": { "type": "string", @@ -234043,7 +234043,7 @@ } }, "gcp:securitycenter/projectCustomModule:ProjectCustomModule": { - "description": "Represents an instance of a Security Health Analytics custom module, including\nits full module name, display name, enablement state, and last updated time.\nYou can create a custom module at the organization, folder, or project level.\nCustom modules that you create at the organization or folder level are inherited\nby the child folders and projects.\n\n\nTo get more information about ProjectCustomModule, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/rest/v1/projects.securityHealthAnalyticsSettings.customModules)\n* How-to Guides\n * [Overview of custom modules for Security Health Analytics](https://cloud.google.com/security-command-center/docs/custom-modules-sha-overview)\n\n## Example Usage\n\n### Scc Project Custom Module Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.securitycenter.ProjectCustomModule(\"example\", {\n displayName: \"basic_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n description: \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n recommendation: \"Set the rotation period to at most 30 days.\",\n severity: \"MEDIUM\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.securitycenter.ProjectCustomModule(\"example\",\n display_name=\"basic_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n \"resourceSelector\": {\n \"resourceTypes\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"description\": \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n \"recommendation\": \"Set the rotation period to at most 30 days.\",\n \"severity\": \"MEDIUM\",\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 = new Gcp.SecurityCenter.ProjectCustomModule(\"example\", new()\n {\n DisplayName = \"basic_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.ProjectCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.ProjectCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.ProjectCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Description = \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n Recommendation = \"Set the rotation period to at most 30 days.\",\n Severity = \"MEDIUM\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\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 := securitycenter.NewProjectCustomModule(ctx, \"example\", \u0026securitycenter.ProjectCustomModuleArgs{\n\t\t\tDisplayName: pulumi.String(\"basic_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.ProjectCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.ProjectCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t},\n\t\t\t\tResourceSelector: \u0026securitycenter.ProjectCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDescription: pulumi.String(\"The rotation period of the identified cryptokey resource exceeds 30 days.\"),\n\t\t\t\tRecommendation: pulumi.String(\"Set the rotation period to at most 30 days.\"),\n\t\t\t\tSeverity: pulumi.String(\"MEDIUM\"),\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.securitycenter.ProjectCustomModule;\nimport com.pulumi.gcp.securitycenter.ProjectCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ProjectCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ProjectCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ProjectCustomModuleCustomConfigResourceSelectorArgs;\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 ProjectCustomModule(\"example\", ProjectCustomModuleArgs.builder()\n .displayName(\"basic_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(ProjectCustomModuleCustomConfigArgs.builder()\n .predicate(ProjectCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .build())\n .resourceSelector(ProjectCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .description(\"The rotation period of the identified cryptokey resource exceeds 30 days.\")\n .recommendation(\"Set the rotation period to at most 30 days.\")\n .severity(\"MEDIUM\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:securitycenter:ProjectCustomModule\n properties:\n displayName: basic_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n description: The rotation period of the identified cryptokey resource exceeds 30 days.\n recommendation: Set the rotation period to at most 30 days.\n severity: MEDIUM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scc Project Custom Module Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.securitycenter.ProjectCustomModule(\"example\", {\n displayName: \"full_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n customOutput: {\n properties: [{\n name: \"duration\",\n valueExpression: {\n expression: \"resource.rotationPeriod\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n }],\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n severity: \"LOW\",\n description: \"Description of the custom module\",\n recommendation: \"Steps to resolve violation\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.securitycenter.ProjectCustomModule(\"example\",\n display_name=\"full_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n \"customOutput\": {\n \"properties\": [{\n \"name\": \"duration\",\n \"valueExpression\": {\n \"expression\": \"resource.rotationPeriod\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n }],\n },\n \"resourceSelector\": {\n \"resourceTypes\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"severity\": \"LOW\",\n \"description\": \"Description of the custom module\",\n \"recommendation\": \"Steps to resolve violation\",\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 = new Gcp.SecurityCenter.ProjectCustomModule(\"example\", new()\n {\n DisplayName = \"full_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.ProjectCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.ProjectCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n CustomOutput = new Gcp.SecurityCenter.Inputs.ProjectCustomModuleCustomConfigCustomOutputArgs\n {\n Properties = new[]\n {\n new Gcp.SecurityCenter.Inputs.ProjectCustomModuleCustomConfigCustomOutputPropertyArgs\n {\n Name = \"duration\",\n ValueExpression = new Gcp.SecurityCenter.Inputs.ProjectCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs\n {\n Expression = \"resource.rotationPeriod\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n },\n },\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.ProjectCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Severity = \"LOW\",\n Description = \"Description of the custom module\",\n Recommendation = \"Steps to resolve violation\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\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 := securitycenter.NewProjectCustomModule(ctx, \"example\", \u0026securitycenter.ProjectCustomModuleArgs{\n\t\t\tDisplayName: pulumi.String(\"full_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.ProjectCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.ProjectCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\n\t\t\t\t},\n\t\t\t\tCustomOutput: securitycenter.ProjectCustomModuleCustomConfigCustomOutputArgs{\n\t\t\t\t\tProperties: securitycenter.ProjectCustomModuleCustomConfigCustomOutputPropertyArray{\n\t\t\t\t\t\t\u0026securitycenter.ProjectCustomModuleCustomConfigCustomOutputPropertyArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"duration\"),\n\t\t\t\t\t\t\tValueExpression: \u0026securitycenter.ProjectCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs{\n\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod\"),\n\t\t\t\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\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\tResourceSelector: \u0026securitycenter.ProjectCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSeverity: pulumi.String(\"LOW\"),\n\t\t\t\tDescription: pulumi.String(\"Description of the custom module\"),\n\t\t\t\tRecommendation: pulumi.String(\"Steps to resolve violation\"),\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.securitycenter.ProjectCustomModule;\nimport com.pulumi.gcp.securitycenter.ProjectCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ProjectCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ProjectCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ProjectCustomModuleCustomConfigCustomOutputArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ProjectCustomModuleCustomConfigResourceSelectorArgs;\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 ProjectCustomModule(\"example\", ProjectCustomModuleArgs.builder()\n .displayName(\"full_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(ProjectCustomModuleCustomConfigArgs.builder()\n .predicate(ProjectCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .customOutput(ProjectCustomModuleCustomConfigCustomOutputArgs.builder()\n .properties(ProjectCustomModuleCustomConfigCustomOutputPropertyArgs.builder()\n .name(\"duration\")\n .valueExpression(ProjectCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs.builder()\n .expression(\"resource.rotationPeriod\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .build())\n .build())\n .resourceSelector(ProjectCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .severity(\"LOW\")\n .description(\"Description of the custom module\")\n .recommendation(\"Steps to resolve violation\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:securitycenter:ProjectCustomModule\n properties:\n displayName: full_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n customOutput:\n properties:\n - name: duration\n valueExpression:\n expression: resource.rotationPeriod\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n severity: LOW\n description: Description of the custom module\n recommendation: Steps to resolve violation\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProjectCustomModule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/securityHealthAnalyticsSettings/customModules/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ProjectCustomModule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/projectCustomModule:ProjectCustomModule default projects/{{project}}/securityHealthAnalyticsSettings/customModules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/projectCustomModule:ProjectCustomModule default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/projectCustomModule:ProjectCustomModule default {{name}}\n```\n\n", + "description": "Represents an instance of a Security Health Analytics custom module, including\nits full module name, display name, enablement state, and last updated time.\nYou can create a custom module at the organization, folder, or project level.\nCustom modules that you create at the organization or folder level are inherited\nby the child folders and projects.\n\n\nTo get more information about ProjectCustomModule, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/rest/v1/projects.securityHealthAnalyticsSettings.customModules)\n* How-to Guides\n * [Overview of custom modules for Security Health Analytics](https://cloud.google.com/security-command-center/docs/custom-modules-sha-overview)\n\n## Example Usage\n\n### Scc Project Custom Module Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.securitycenter.ProjectCustomModule(\"example\", {\n displayName: \"basic_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n description: \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n recommendation: \"Set the rotation period to at most 30 days.\",\n severity: \"MEDIUM\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.securitycenter.ProjectCustomModule(\"example\",\n display_name=\"basic_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n \"resource_selector\": {\n \"resource_types\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"description\": \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n \"recommendation\": \"Set the rotation period to at most 30 days.\",\n \"severity\": \"MEDIUM\",\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 = new Gcp.SecurityCenter.ProjectCustomModule(\"example\", new()\n {\n DisplayName = \"basic_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.ProjectCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.ProjectCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.ProjectCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Description = \"The rotation period of the identified cryptokey resource exceeds 30 days.\",\n Recommendation = \"Set the rotation period to at most 30 days.\",\n Severity = \"MEDIUM\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\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 := securitycenter.NewProjectCustomModule(ctx, \"example\", \u0026securitycenter.ProjectCustomModuleArgs{\n\t\t\tDisplayName: pulumi.String(\"basic_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.ProjectCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.ProjectCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t},\n\t\t\t\tResourceSelector: \u0026securitycenter.ProjectCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDescription: pulumi.String(\"The rotation period of the identified cryptokey resource exceeds 30 days.\"),\n\t\t\t\tRecommendation: pulumi.String(\"Set the rotation period to at most 30 days.\"),\n\t\t\t\tSeverity: pulumi.String(\"MEDIUM\"),\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.securitycenter.ProjectCustomModule;\nimport com.pulumi.gcp.securitycenter.ProjectCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ProjectCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ProjectCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ProjectCustomModuleCustomConfigResourceSelectorArgs;\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 ProjectCustomModule(\"example\", ProjectCustomModuleArgs.builder()\n .displayName(\"basic_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(ProjectCustomModuleCustomConfigArgs.builder()\n .predicate(ProjectCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .build())\n .resourceSelector(ProjectCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .description(\"The rotation period of the identified cryptokey resource exceeds 30 days.\")\n .recommendation(\"Set the rotation period to at most 30 days.\")\n .severity(\"MEDIUM\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:securitycenter:ProjectCustomModule\n properties:\n displayName: basic_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n description: The rotation period of the identified cryptokey resource exceeds 30 days.\n recommendation: Set the rotation period to at most 30 days.\n severity: MEDIUM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scc Project Custom Module Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.securitycenter.ProjectCustomModule(\"example\", {\n displayName: \"full_custom_module\",\n enablementState: \"ENABLED\",\n customConfig: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n customOutput: {\n properties: [{\n name: \"duration\",\n valueExpression: {\n expression: \"resource.rotationPeriod\",\n title: \"Purpose of the expression\",\n description: \"description of the expression\",\n location: \"location of the expression\",\n },\n }],\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n severity: \"LOW\",\n description: \"Description of the custom module\",\n recommendation: \"Steps to resolve violation\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.securitycenter.ProjectCustomModule(\"example\",\n display_name=\"full_custom_module\",\n enablement_state=\"ENABLED\",\n custom_config={\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n \"custom_output\": {\n \"properties\": [{\n \"name\": \"duration\",\n \"value_expression\": {\n \"expression\": \"resource.rotationPeriod\",\n \"title\": \"Purpose of the expression\",\n \"description\": \"description of the expression\",\n \"location\": \"location of the expression\",\n },\n }],\n },\n \"resource_selector\": {\n \"resource_types\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"severity\": \"LOW\",\n \"description\": \"Description of the custom module\",\n \"recommendation\": \"Steps to resolve violation\",\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 = new Gcp.SecurityCenter.ProjectCustomModule(\"example\", new()\n {\n DisplayName = \"full_custom_module\",\n EnablementState = \"ENABLED\",\n CustomConfig = new Gcp.SecurityCenter.Inputs.ProjectCustomModuleCustomConfigArgs\n {\n Predicate = new Gcp.SecurityCenter.Inputs.ProjectCustomModuleCustomConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n CustomOutput = new Gcp.SecurityCenter.Inputs.ProjectCustomModuleCustomConfigCustomOutputArgs\n {\n Properties = new[]\n {\n new Gcp.SecurityCenter.Inputs.ProjectCustomModuleCustomConfigCustomOutputPropertyArgs\n {\n Name = \"duration\",\n ValueExpression = new Gcp.SecurityCenter.Inputs.ProjectCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs\n {\n Expression = \"resource.rotationPeriod\",\n Title = \"Purpose of the expression\",\n Description = \"description of the expression\",\n Location = \"location of the expression\",\n },\n },\n },\n },\n ResourceSelector = new Gcp.SecurityCenter.Inputs.ProjectCustomModuleCustomConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Severity = \"LOW\",\n Description = \"Description of the custom module\",\n Recommendation = \"Steps to resolve violation\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securitycenter\"\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 := securitycenter.NewProjectCustomModule(ctx, \"example\", \u0026securitycenter.ProjectCustomModuleArgs{\n\t\t\tDisplayName: pulumi.String(\"full_custom_module\"),\n\t\t\tEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\tCustomConfig: \u0026securitycenter.ProjectCustomModuleCustomConfigArgs{\n\t\t\t\tPredicate: \u0026securitycenter.ProjectCustomModuleCustomConfigPredicateArgs{\n\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\"),\n\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\n\t\t\t\t},\n\t\t\t\tCustomOutput: securitycenter.ProjectCustomModuleCustomConfigCustomOutputArgs{\n\t\t\t\t\tProperties: securitycenter.ProjectCustomModuleCustomConfigCustomOutputPropertyArray{\n\t\t\t\t\t\t\u0026securitycenter.ProjectCustomModuleCustomConfigCustomOutputPropertyArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"duration\"),\n\t\t\t\t\t\t\tValueExpression: \u0026securitycenter.ProjectCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs{\n\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod\"),\n\t\t\t\t\t\t\t\tTitle: pulumi.String(\"Purpose of the expression\"),\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"description of the expression\"),\n\t\t\t\t\t\t\t\tLocation: pulumi.String(\"location of the expression\"),\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\tResourceSelector: \u0026securitycenter.ProjectCustomModuleCustomConfigResourceSelectorArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSeverity: pulumi.String(\"LOW\"),\n\t\t\t\tDescription: pulumi.String(\"Description of the custom module\"),\n\t\t\t\tRecommendation: pulumi.String(\"Steps to resolve violation\"),\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.securitycenter.ProjectCustomModule;\nimport com.pulumi.gcp.securitycenter.ProjectCustomModuleArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ProjectCustomModuleCustomConfigArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ProjectCustomModuleCustomConfigPredicateArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ProjectCustomModuleCustomConfigCustomOutputArgs;\nimport com.pulumi.gcp.securitycenter.inputs.ProjectCustomModuleCustomConfigResourceSelectorArgs;\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 ProjectCustomModule(\"example\", ProjectCustomModuleArgs.builder()\n .displayName(\"full_custom_module\")\n .enablementState(\"ENABLED\")\n .customConfig(ProjectCustomModuleCustomConfigArgs.builder()\n .predicate(ProjectCustomModuleCustomConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration(\\\"2592000s\\\")\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .customOutput(ProjectCustomModuleCustomConfigCustomOutputArgs.builder()\n .properties(ProjectCustomModuleCustomConfigCustomOutputPropertyArgs.builder()\n .name(\"duration\")\n .valueExpression(ProjectCustomModuleCustomConfigCustomOutputPropertyValueExpressionArgs.builder()\n .expression(\"resource.rotationPeriod\")\n .title(\"Purpose of the expression\")\n .description(\"description of the expression\")\n .location(\"location of the expression\")\n .build())\n .build())\n .build())\n .resourceSelector(ProjectCustomModuleCustomConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .severity(\"LOW\")\n .description(\"Description of the custom module\")\n .recommendation(\"Steps to resolve violation\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:securitycenter:ProjectCustomModule\n properties:\n displayName: full_custom_module\n enablementState: ENABLED\n customConfig:\n predicate:\n expression: resource.rotationPeriod \u003e duration(\"2592000s\")\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n customOutput:\n properties:\n - name: duration\n valueExpression:\n expression: resource.rotationPeriod\n title: Purpose of the expression\n description: description of the expression\n location: location of the expression\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n severity: LOW\n description: Description of the custom module\n recommendation: Steps to resolve violation\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProjectCustomModule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/securityHealthAnalyticsSettings/customModules/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ProjectCustomModule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/projectCustomModule:ProjectCustomModule default projects/{{project}}/securityHealthAnalyticsSettings/customModules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/projectCustomModule:ProjectCustomModule default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/projectCustomModule:ProjectCustomModule default {{name}}\n```\n\n", "properties": { "ancestorModule": { "type": "string", @@ -234695,7 +234695,7 @@ } }, "gcp:securityposture/posture:Posture": { - "description": "A Posture represents a collection of policy set including its name, state, description\nand policy sets. A policy set includes set of policies along with their definition.\nA posture can be created at the organization level.\nEvery update to a deployed posture creates a new posture revision with an updated revision_id.\n\n\nTo get more information about Posture, see:\n\n* How-to Guides\n * [Create and deploy a posture](https://cloud.google.com/security-command-center/docs/how-to-use-security-posture)\n\n## Example Usage\n\n### Securityposture Posture Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst posture1 = new gcp.securityposture.Posture(\"posture1\", {\n postureId: \"posture_example\",\n parent: \"organizations/123456789\",\n location: \"global\",\n state: \"ACTIVE\",\n description: \"a new posture\",\n policySets: [\n {\n policySetId: \"org_policy_set\",\n description: \"set of org policies\",\n policies: [\n {\n policyId: \"canned_org_policy\",\n constraint: {\n orgPolicyConstraint: {\n cannedConstraintId: \"storage.uniformBucketLevelAccess\",\n policyRules: [{\n enforce: true,\n condition: {\n description: \"condition description\",\n expression: \"resource.matchTag('org_id/tag_key_short_name,'tag_value_short_name')\",\n title: \"a CEL condition\",\n },\n }],\n },\n },\n },\n {\n policyId: \"custom_org_policy\",\n constraint: {\n orgPolicyConstraintCustom: {\n customConstraint: {\n name: \"organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade\",\n displayName: \"Disable GKE auto upgrade\",\n description: \"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\",\n actionType: \"ALLOW\",\n condition: \"resource.management.autoUpgrade == false\",\n methodTypes: [\n \"CREATE\",\n \"UPDATE\",\n ],\n resourceTypes: [\"container.googleapis.com/NodePool\"],\n },\n policyRules: [{\n enforce: true,\n condition: {\n description: \"condition description\",\n expression: \"resource.matchTagId('tagKeys/key_id','tagValues/value_id')\",\n title: \"a CEL condition\",\n },\n }],\n },\n },\n },\n ],\n },\n {\n policySetId: \"sha_policy_set\",\n description: \"set of sha policies\",\n policies: [\n {\n policyId: \"sha_builtin_module\",\n constraint: {\n securityHealthAnalyticsModule: {\n moduleName: \"BIGQUERY_TABLE_CMEK_DISABLED\",\n moduleEnablementState: \"ENABLED\",\n },\n },\n description: \"enable BIGQUERY_TABLE_CMEK_DISABLED\",\n },\n {\n policyId: \"sha_custom_module\",\n constraint: {\n securityHealthAnalyticsCustomModule: {\n displayName: \"custom_SHA_policy\",\n config: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration('2592000s')\",\n },\n customOutput: {\n properties: [{\n name: \"duration\",\n valueExpression: {\n expression: \"resource.rotationPeriod\",\n },\n }],\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n severity: \"LOW\",\n description: \"Custom Module\",\n recommendation: \"Testing custom modules\",\n },\n moduleEnablementState: \"ENABLED\",\n },\n },\n },\n ],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nposture1 = gcp.securityposture.Posture(\"posture1\",\n posture_id=\"posture_example\",\n parent=\"organizations/123456789\",\n location=\"global\",\n state=\"ACTIVE\",\n description=\"a new posture\",\n policy_sets=[\n {\n \"policySetId\": \"org_policy_set\",\n \"description\": \"set of org policies\",\n \"policies\": [\n {\n \"policyId\": \"canned_org_policy\",\n \"constraint\": {\n \"orgPolicyConstraint\": {\n \"cannedConstraintId\": \"storage.uniformBucketLevelAccess\",\n \"policyRules\": [{\n \"enforce\": True,\n \"condition\": {\n \"description\": \"condition description\",\n \"expression\": \"resource.matchTag('org_id/tag_key_short_name,'tag_value_short_name')\",\n \"title\": \"a CEL condition\",\n },\n }],\n },\n },\n },\n {\n \"policyId\": \"custom_org_policy\",\n \"constraint\": {\n \"orgPolicyConstraintCustom\": {\n \"customConstraint\": {\n \"name\": \"organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade\",\n \"displayName\": \"Disable GKE auto upgrade\",\n \"description\": \"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\",\n \"actionType\": \"ALLOW\",\n \"condition\": \"resource.management.autoUpgrade == false\",\n \"methodTypes\": [\n \"CREATE\",\n \"UPDATE\",\n ],\n \"resourceTypes\": [\"container.googleapis.com/NodePool\"],\n },\n \"policyRules\": [{\n \"enforce\": True,\n \"condition\": {\n \"description\": \"condition description\",\n \"expression\": \"resource.matchTagId('tagKeys/key_id','tagValues/value_id')\",\n \"title\": \"a CEL condition\",\n },\n }],\n },\n },\n },\n ],\n },\n {\n \"policySetId\": \"sha_policy_set\",\n \"description\": \"set of sha policies\",\n \"policies\": [\n {\n \"policyId\": \"sha_builtin_module\",\n \"constraint\": {\n \"securityHealthAnalyticsModule\": {\n \"moduleName\": \"BIGQUERY_TABLE_CMEK_DISABLED\",\n \"moduleEnablementState\": \"ENABLED\",\n },\n },\n \"description\": \"enable BIGQUERY_TABLE_CMEK_DISABLED\",\n },\n {\n \"policyId\": \"sha_custom_module\",\n \"constraint\": {\n \"securityHealthAnalyticsCustomModule\": {\n \"displayName\": \"custom_SHA_policy\",\n \"config\": {\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration('2592000s')\",\n },\n \"customOutput\": {\n \"properties\": [{\n \"name\": \"duration\",\n \"valueExpression\": {\n \"expression\": \"resource.rotationPeriod\",\n },\n }],\n },\n \"resourceSelector\": {\n \"resourceTypes\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"severity\": \"LOW\",\n \"description\": \"Custom Module\",\n \"recommendation\": \"Testing custom modules\",\n },\n \"moduleEnablementState\": \"ENABLED\",\n },\n },\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 posture1 = new Gcp.SecurityPosture.Posture(\"posture1\", new()\n {\n PostureId = \"posture_example\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n State = \"ACTIVE\",\n Description = \"a new posture\",\n PolicySets = new[]\n {\n new Gcp.SecurityPosture.Inputs.PosturePolicySetArgs\n {\n PolicySetId = \"org_policy_set\",\n Description = \"set of org policies\",\n Policies = new[]\n {\n new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyArgs\n {\n PolicyId = \"canned_org_policy\",\n Constraint = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintArgs\n {\n OrgPolicyConstraint = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintOrgPolicyConstraintArgs\n {\n CannedConstraintId = \"storage.uniformBucketLevelAccess\",\n PolicyRules = new[]\n {\n new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintOrgPolicyConstraintPolicyRuleArgs\n {\n Enforce = true,\n Condition = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintOrgPolicyConstraintPolicyRuleConditionArgs\n {\n Description = \"condition description\",\n Expression = \"resource.matchTag('org_id/tag_key_short_name,'tag_value_short_name')\",\n Title = \"a CEL condition\",\n },\n },\n },\n },\n },\n },\n new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyArgs\n {\n PolicyId = \"custom_org_policy\",\n Constraint = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintArgs\n {\n OrgPolicyConstraintCustom = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomArgs\n {\n CustomConstraint = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomCustomConstraintArgs\n {\n Name = \"organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade\",\n DisplayName = \"Disable GKE auto upgrade\",\n Description = \"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\",\n ActionType = \"ALLOW\",\n Condition = \"resource.management.autoUpgrade == false\",\n MethodTypes = new[]\n {\n \"CREATE\",\n \"UPDATE\",\n },\n ResourceTypes = new[]\n {\n \"container.googleapis.com/NodePool\",\n },\n },\n PolicyRules = new[]\n {\n new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomPolicyRuleArgs\n {\n Enforce = true,\n Condition = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomPolicyRuleConditionArgs\n {\n Description = \"condition description\",\n Expression = \"resource.matchTagId('tagKeys/key_id','tagValues/value_id')\",\n Title = \"a CEL condition\",\n },\n },\n },\n },\n },\n },\n },\n },\n new Gcp.SecurityPosture.Inputs.PosturePolicySetArgs\n {\n PolicySetId = \"sha_policy_set\",\n Description = \"set of sha policies\",\n Policies = new[]\n {\n new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyArgs\n {\n PolicyId = \"sha_builtin_module\",\n Constraint = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintArgs\n {\n SecurityHealthAnalyticsModule = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsModuleArgs\n {\n ModuleName = \"BIGQUERY_TABLE_CMEK_DISABLED\",\n ModuleEnablementState = \"ENABLED\",\n },\n },\n Description = \"enable BIGQUERY_TABLE_CMEK_DISABLED\",\n },\n new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyArgs\n {\n PolicyId = \"sha_custom_module\",\n Constraint = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintArgs\n {\n SecurityHealthAnalyticsCustomModule = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleArgs\n {\n DisplayName = \"custom_SHA_policy\",\n Config = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigArgs\n {\n Predicate = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration('2592000s')\",\n },\n CustomOutput = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputArgs\n {\n Properties = new[]\n {\n new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputPropertyArgs\n {\n Name = \"duration\",\n ValueExpression = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputPropertyValueExpressionArgs\n {\n Expression = \"resource.rotationPeriod\",\n },\n },\n },\n },\n ResourceSelector = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Severity = \"LOW\",\n Description = \"Custom Module\",\n Recommendation = \"Testing custom modules\",\n },\n ModuleEnablementState = \"ENABLED\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securityposture\"\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 := securityposture.NewPosture(ctx, \"posture1\", \u0026securityposture.PostureArgs{\n\t\t\tPostureId: pulumi.String(\"posture_example\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tState: pulumi.String(\"ACTIVE\"),\n\t\t\tDescription: pulumi.String(\"a new posture\"),\n\t\t\tPolicySets: securityposture.PosturePolicySetArray{\n\t\t\t\t\u0026securityposture.PosturePolicySetArgs{\n\t\t\t\t\tPolicySetId: pulumi.String(\"org_policy_set\"),\n\t\t\t\t\tDescription: pulumi.String(\"set of org policies\"),\n\t\t\t\t\tPolicies: securityposture.PosturePolicySetPolicyArray{\n\t\t\t\t\t\t\u0026securityposture.PosturePolicySetPolicyArgs{\n\t\t\t\t\t\t\tPolicyId: pulumi.String(\"canned_org_policy\"),\n\t\t\t\t\t\t\tConstraint: \u0026securityposture.PosturePolicySetPolicyConstraintArgs{\n\t\t\t\t\t\t\t\tOrgPolicyConstraint: \u0026securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintArgs{\n\t\t\t\t\t\t\t\t\tCannedConstraintId: pulumi.String(\"storage.uniformBucketLevelAccess\"),\n\t\t\t\t\t\t\t\t\tPolicyRules: securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintPolicyRuleArray{\n\t\t\t\t\t\t\t\t\t\t\u0026securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintPolicyRuleArgs{\n\t\t\t\t\t\t\t\t\t\t\tEnforce: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\tCondition: \u0026securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintPolicyRuleConditionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tDescription: pulumi.String(\"condition description\"),\n\t\t\t\t\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.matchTag('org_id/tag_key_short_name,'tag_value_short_name')\"),\n\t\t\t\t\t\t\t\t\t\t\t\tTitle: pulumi.String(\"a CEL condition\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026securityposture.PosturePolicySetPolicyArgs{\n\t\t\t\t\t\t\tPolicyId: pulumi.String(\"custom_org_policy\"),\n\t\t\t\t\t\t\tConstraint: \u0026securityposture.PosturePolicySetPolicyConstraintArgs{\n\t\t\t\t\t\t\t\tOrgPolicyConstraintCustom: \u0026securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomArgs{\n\t\t\t\t\t\t\t\t\tCustomConstraint: \u0026securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomCustomConstraintArgs{\n\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade\"),\n\t\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"Disable GKE auto upgrade\"),\n\t\t\t\t\t\t\t\t\t\tDescription: pulumi.String(\"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\"),\n\t\t\t\t\t\t\t\t\t\tActionType: pulumi.String(\"ALLOW\"),\n\t\t\t\t\t\t\t\t\t\tCondition: pulumi.String(\"resource.management.autoUpgrade == false\"),\n\t\t\t\t\t\t\t\t\t\tMethodTypes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"CREATE\"),\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"UPDATE\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"container.googleapis.com/NodePool\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tPolicyRules: securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomPolicyRuleArray{\n\t\t\t\t\t\t\t\t\t\t\u0026securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomPolicyRuleArgs{\n\t\t\t\t\t\t\t\t\t\t\tEnforce: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\tCondition: \u0026securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomPolicyRuleConditionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tDescription: pulumi.String(\"condition description\"),\n\t\t\t\t\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.matchTagId('tagKeys/key_id','tagValues/value_id')\"),\n\t\t\t\t\t\t\t\t\t\t\t\tTitle: pulumi.String(\"a CEL condition\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\t\u0026securityposture.PosturePolicySetArgs{\n\t\t\t\t\tPolicySetId: pulumi.String(\"sha_policy_set\"),\n\t\t\t\t\tDescription: pulumi.String(\"set of sha policies\"),\n\t\t\t\t\tPolicies: securityposture.PosturePolicySetPolicyArray{\n\t\t\t\t\t\t\u0026securityposture.PosturePolicySetPolicyArgs{\n\t\t\t\t\t\t\tPolicyId: pulumi.String(\"sha_builtin_module\"),\n\t\t\t\t\t\t\tConstraint: \u0026securityposture.PosturePolicySetPolicyConstraintArgs{\n\t\t\t\t\t\t\t\tSecurityHealthAnalyticsModule: \u0026securityposture.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsModuleArgs{\n\t\t\t\t\t\t\t\t\tModuleName: pulumi.String(\"BIGQUERY_TABLE_CMEK_DISABLED\"),\n\t\t\t\t\t\t\t\t\tModuleEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDescription: pulumi.String(\"enable BIGQUERY_TABLE_CMEK_DISABLED\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026securityposture.PosturePolicySetPolicyArgs{\n\t\t\t\t\t\t\tPolicyId: pulumi.String(\"sha_custom_module\"),\n\t\t\t\t\t\t\tConstraint: \u0026securityposture.PosturePolicySetPolicyConstraintArgs{\n\t\t\t\t\t\t\t\tSecurityHealthAnalyticsCustomModule: \u0026securityposture.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"custom_SHA_policy\"),\n\t\t\t\t\t\t\t\t\tConfig: \u0026securityposture.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigArgs{\n\t\t\t\t\t\t\t\t\t\tPredicate: \u0026securityposture.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigPredicateArgs{\n\t\t\t\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration('2592000s')\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tCustomOutput: securityposture.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputArgs{\n\t\t\t\t\t\t\t\t\t\t\tProperties: securityposture.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputPropertyArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026securityposture.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputPropertyArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"duration\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tValueExpression: \u0026securityposture.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputPropertyValueExpressionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tResourceSelector: \u0026securityposture.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigResourceSelectorArgs{\n\t\t\t\t\t\t\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tSeverity: pulumi.String(\"LOW\"),\n\t\t\t\t\t\t\t\t\t\tDescription: pulumi.String(\"Custom Module\"),\n\t\t\t\t\t\t\t\t\t\tRecommendation: pulumi.String(\"Testing custom modules\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tModuleEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\t\t\t\t\t\t},\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.securityposture.Posture;\nimport com.pulumi.gcp.securityposture.PostureArgs;\nimport com.pulumi.gcp.securityposture.inputs.PosturePolicySetArgs;\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 posture1 = new Posture(\"posture1\", PostureArgs.builder()\n .postureId(\"posture_example\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .state(\"ACTIVE\")\n .description(\"a new posture\")\n .policySets( \n PosturePolicySetArgs.builder()\n .policySetId(\"org_policy_set\")\n .description(\"set of org policies\")\n .policies( \n PosturePolicySetPolicyArgs.builder()\n .policyId(\"canned_org_policy\")\n .constraint(PosturePolicySetPolicyConstraintArgs.builder()\n .orgPolicyConstraint(PosturePolicySetPolicyConstraintOrgPolicyConstraintArgs.builder()\n .cannedConstraintId(\"storage.uniformBucketLevelAccess\")\n .policyRules(PosturePolicySetPolicyConstraintOrgPolicyConstraintPolicyRuleArgs.builder()\n .enforce(true)\n .condition(PosturePolicySetPolicyConstraintOrgPolicyConstraintPolicyRuleConditionArgs.builder()\n .description(\"condition description\")\n .expression(\"resource.matchTag('org_id/tag_key_short_name,'tag_value_short_name')\")\n .title(\"a CEL condition\")\n .build())\n .build())\n .build())\n .build())\n .build(),\n PosturePolicySetPolicyArgs.builder()\n .policyId(\"custom_org_policy\")\n .constraint(PosturePolicySetPolicyConstraintArgs.builder()\n .orgPolicyConstraintCustom(PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomArgs.builder()\n .customConstraint(PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomCustomConstraintArgs.builder()\n .name(\"organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade\")\n .displayName(\"Disable GKE auto upgrade\")\n .description(\"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\")\n .actionType(\"ALLOW\")\n .condition(\"resource.management.autoUpgrade == false\")\n .methodTypes( \n \"CREATE\",\n \"UPDATE\")\n .resourceTypes(\"container.googleapis.com/NodePool\")\n .build())\n .policyRules(PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomPolicyRuleArgs.builder()\n .enforce(true)\n .condition(PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomPolicyRuleConditionArgs.builder()\n .description(\"condition description\")\n .expression(\"resource.matchTagId('tagKeys/key_id','tagValues/value_id')\")\n .title(\"a CEL condition\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build(),\n PosturePolicySetArgs.builder()\n .policySetId(\"sha_policy_set\")\n .description(\"set of sha policies\")\n .policies( \n PosturePolicySetPolicyArgs.builder()\n .policyId(\"sha_builtin_module\")\n .constraint(PosturePolicySetPolicyConstraintArgs.builder()\n .securityHealthAnalyticsModule(PosturePolicySetPolicyConstraintSecurityHealthAnalyticsModuleArgs.builder()\n .moduleName(\"BIGQUERY_TABLE_CMEK_DISABLED\")\n .moduleEnablementState(\"ENABLED\")\n .build())\n .build())\n .description(\"enable BIGQUERY_TABLE_CMEK_DISABLED\")\n .build(),\n PosturePolicySetPolicyArgs.builder()\n .policyId(\"sha_custom_module\")\n .constraint(PosturePolicySetPolicyConstraintArgs.builder()\n .securityHealthAnalyticsCustomModule(PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleArgs.builder()\n .displayName(\"custom_SHA_policy\")\n .config(PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigArgs.builder()\n .predicate(PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration('2592000s')\")\n .build())\n .customOutput(PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputArgs.builder()\n .properties(PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputPropertyArgs.builder()\n .name(\"duration\")\n .valueExpression(PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputPropertyValueExpressionArgs.builder()\n .expression(\"resource.rotationPeriod\")\n .build())\n .build())\n .build())\n .resourceSelector(PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .severity(\"LOW\")\n .description(\"Custom Module\")\n .recommendation(\"Testing custom modules\")\n .build())\n .moduleEnablementState(\"ENABLED\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n posture1:\n type: gcp:securityposture:Posture\n properties:\n postureId: posture_example\n parent: organizations/123456789\n location: global\n state: ACTIVE\n description: a new posture\n policySets:\n - policySetId: org_policy_set\n description: set of org policies\n policies:\n - policyId: canned_org_policy\n constraint:\n orgPolicyConstraint:\n cannedConstraintId: storage.uniformBucketLevelAccess\n policyRules:\n - enforce: true\n condition:\n description: condition description\n expression: resource.matchTag('org_id/tag_key_short_name,'tag_value_short_name')\n title: a CEL condition\n - policyId: custom_org_policy\n constraint:\n orgPolicyConstraintCustom:\n customConstraint:\n name: organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade\n displayName: Disable GKE auto upgrade\n description: Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\n actionType: ALLOW\n condition: resource.management.autoUpgrade == false\n methodTypes:\n - CREATE\n - UPDATE\n resourceTypes:\n - container.googleapis.com/NodePool\n policyRules:\n - enforce: true\n condition:\n description: condition description\n expression: resource.matchTagId('tagKeys/key_id','tagValues/value_id')\n title: a CEL condition\n - policySetId: sha_policy_set\n description: set of sha policies\n policies:\n - policyId: sha_builtin_module\n constraint:\n securityHealthAnalyticsModule:\n moduleName: BIGQUERY_TABLE_CMEK_DISABLED\n moduleEnablementState: ENABLED\n description: enable BIGQUERY_TABLE_CMEK_DISABLED\n - policyId: sha_custom_module\n constraint:\n securityHealthAnalyticsCustomModule:\n displayName: custom_SHA_policy\n config:\n predicate:\n expression: resource.rotationPeriod \u003e duration('2592000s')\n customOutput:\n properties:\n - name: duration\n valueExpression:\n expression: resource.rotationPeriod\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n severity: LOW\n description: Custom Module\n recommendation: Testing custom modules\n moduleEnablementState: ENABLED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPosture can be imported using any of these accepted formats:\n\n* `{{parent}}/locations/{{location}}/postures/{{posture_id}}`\n\nWhen using the `pulumi import` command, Posture can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securityposture/posture:Posture default {{parent}}/locations/{{location}}/postures/{{posture_id}}\n```\n\n", + "description": "A Posture represents a collection of policy set including its name, state, description\nand policy sets. A policy set includes set of policies along with their definition.\nA posture can be created at the organization level.\nEvery update to a deployed posture creates a new posture revision with an updated revision_id.\n\n\nTo get more information about Posture, see:\n\n* How-to Guides\n * [Create and deploy a posture](https://cloud.google.com/security-command-center/docs/how-to-use-security-posture)\n\n## Example Usage\n\n### Securityposture Posture Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst posture1 = new gcp.securityposture.Posture(\"posture1\", {\n postureId: \"posture_example\",\n parent: \"organizations/123456789\",\n location: \"global\",\n state: \"ACTIVE\",\n description: \"a new posture\",\n policySets: [\n {\n policySetId: \"org_policy_set\",\n description: \"set of org policies\",\n policies: [\n {\n policyId: \"canned_org_policy\",\n constraint: {\n orgPolicyConstraint: {\n cannedConstraintId: \"storage.uniformBucketLevelAccess\",\n policyRules: [{\n enforce: true,\n condition: {\n description: \"condition description\",\n expression: \"resource.matchTag('org_id/tag_key_short_name,'tag_value_short_name')\",\n title: \"a CEL condition\",\n },\n }],\n },\n },\n },\n {\n policyId: \"custom_org_policy\",\n constraint: {\n orgPolicyConstraintCustom: {\n customConstraint: {\n name: \"organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade\",\n displayName: \"Disable GKE auto upgrade\",\n description: \"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\",\n actionType: \"ALLOW\",\n condition: \"resource.management.autoUpgrade == false\",\n methodTypes: [\n \"CREATE\",\n \"UPDATE\",\n ],\n resourceTypes: [\"container.googleapis.com/NodePool\"],\n },\n policyRules: [{\n enforce: true,\n condition: {\n description: \"condition description\",\n expression: \"resource.matchTagId('tagKeys/key_id','tagValues/value_id')\",\n title: \"a CEL condition\",\n },\n }],\n },\n },\n },\n ],\n },\n {\n policySetId: \"sha_policy_set\",\n description: \"set of sha policies\",\n policies: [\n {\n policyId: \"sha_builtin_module\",\n constraint: {\n securityHealthAnalyticsModule: {\n moduleName: \"BIGQUERY_TABLE_CMEK_DISABLED\",\n moduleEnablementState: \"ENABLED\",\n },\n },\n description: \"enable BIGQUERY_TABLE_CMEK_DISABLED\",\n },\n {\n policyId: \"sha_custom_module\",\n constraint: {\n securityHealthAnalyticsCustomModule: {\n displayName: \"custom_SHA_policy\",\n config: {\n predicate: {\n expression: \"resource.rotationPeriod \u003e duration('2592000s')\",\n },\n customOutput: {\n properties: [{\n name: \"duration\",\n valueExpression: {\n expression: \"resource.rotationPeriod\",\n },\n }],\n },\n resourceSelector: {\n resourceTypes: [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n severity: \"LOW\",\n description: \"Custom Module\",\n recommendation: \"Testing custom modules\",\n },\n moduleEnablementState: \"ENABLED\",\n },\n },\n },\n ],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nposture1 = gcp.securityposture.Posture(\"posture1\",\n posture_id=\"posture_example\",\n parent=\"organizations/123456789\",\n location=\"global\",\n state=\"ACTIVE\",\n description=\"a new posture\",\n policy_sets=[\n {\n \"policy_set_id\": \"org_policy_set\",\n \"description\": \"set of org policies\",\n \"policies\": [\n {\n \"policy_id\": \"canned_org_policy\",\n \"constraint\": {\n \"org_policy_constraint\": {\n \"canned_constraint_id\": \"storage.uniformBucketLevelAccess\",\n \"policy_rules\": [{\n \"enforce\": True,\n \"condition\": {\n \"description\": \"condition description\",\n \"expression\": \"resource.matchTag('org_id/tag_key_short_name,'tag_value_short_name')\",\n \"title\": \"a CEL condition\",\n },\n }],\n },\n },\n },\n {\n \"policy_id\": \"custom_org_policy\",\n \"constraint\": {\n \"org_policy_constraint_custom\": {\n \"custom_constraint\": {\n \"name\": \"organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade\",\n \"display_name\": \"Disable GKE auto upgrade\",\n \"description\": \"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\",\n \"action_type\": \"ALLOW\",\n \"condition\": \"resource.management.autoUpgrade == false\",\n \"method_types\": [\n \"CREATE\",\n \"UPDATE\",\n ],\n \"resource_types\": [\"container.googleapis.com/NodePool\"],\n },\n \"policy_rules\": [{\n \"enforce\": True,\n \"condition\": {\n \"description\": \"condition description\",\n \"expression\": \"resource.matchTagId('tagKeys/key_id','tagValues/value_id')\",\n \"title\": \"a CEL condition\",\n },\n }],\n },\n },\n },\n ],\n },\n {\n \"policy_set_id\": \"sha_policy_set\",\n \"description\": \"set of sha policies\",\n \"policies\": [\n {\n \"policy_id\": \"sha_builtin_module\",\n \"constraint\": {\n \"security_health_analytics_module\": {\n \"module_name\": \"BIGQUERY_TABLE_CMEK_DISABLED\",\n \"module_enablement_state\": \"ENABLED\",\n },\n },\n \"description\": \"enable BIGQUERY_TABLE_CMEK_DISABLED\",\n },\n {\n \"policy_id\": \"sha_custom_module\",\n \"constraint\": {\n \"security_health_analytics_custom_module\": {\n \"display_name\": \"custom_SHA_policy\",\n \"config\": {\n \"predicate\": {\n \"expression\": \"resource.rotationPeriod \u003e duration('2592000s')\",\n },\n \"custom_output\": {\n \"properties\": [{\n \"name\": \"duration\",\n \"value_expression\": {\n \"expression\": \"resource.rotationPeriod\",\n },\n }],\n },\n \"resource_selector\": {\n \"resource_types\": [\"cloudkms.googleapis.com/CryptoKey\"],\n },\n \"severity\": \"LOW\",\n \"description\": \"Custom Module\",\n \"recommendation\": \"Testing custom modules\",\n },\n \"module_enablement_state\": \"ENABLED\",\n },\n },\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 posture1 = new Gcp.SecurityPosture.Posture(\"posture1\", new()\n {\n PostureId = \"posture_example\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n State = \"ACTIVE\",\n Description = \"a new posture\",\n PolicySets = new[]\n {\n new Gcp.SecurityPosture.Inputs.PosturePolicySetArgs\n {\n PolicySetId = \"org_policy_set\",\n Description = \"set of org policies\",\n Policies = new[]\n {\n new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyArgs\n {\n PolicyId = \"canned_org_policy\",\n Constraint = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintArgs\n {\n OrgPolicyConstraint = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintOrgPolicyConstraintArgs\n {\n CannedConstraintId = \"storage.uniformBucketLevelAccess\",\n PolicyRules = new[]\n {\n new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintOrgPolicyConstraintPolicyRuleArgs\n {\n Enforce = true,\n Condition = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintOrgPolicyConstraintPolicyRuleConditionArgs\n {\n Description = \"condition description\",\n Expression = \"resource.matchTag('org_id/tag_key_short_name,'tag_value_short_name')\",\n Title = \"a CEL condition\",\n },\n },\n },\n },\n },\n },\n new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyArgs\n {\n PolicyId = \"custom_org_policy\",\n Constraint = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintArgs\n {\n OrgPolicyConstraintCustom = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomArgs\n {\n CustomConstraint = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomCustomConstraintArgs\n {\n Name = \"organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade\",\n DisplayName = \"Disable GKE auto upgrade\",\n Description = \"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\",\n ActionType = \"ALLOW\",\n Condition = \"resource.management.autoUpgrade == false\",\n MethodTypes = new[]\n {\n \"CREATE\",\n \"UPDATE\",\n },\n ResourceTypes = new[]\n {\n \"container.googleapis.com/NodePool\",\n },\n },\n PolicyRules = new[]\n {\n new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomPolicyRuleArgs\n {\n Enforce = true,\n Condition = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomPolicyRuleConditionArgs\n {\n Description = \"condition description\",\n Expression = \"resource.matchTagId('tagKeys/key_id','tagValues/value_id')\",\n Title = \"a CEL condition\",\n },\n },\n },\n },\n },\n },\n },\n },\n new Gcp.SecurityPosture.Inputs.PosturePolicySetArgs\n {\n PolicySetId = \"sha_policy_set\",\n Description = \"set of sha policies\",\n Policies = new[]\n {\n new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyArgs\n {\n PolicyId = \"sha_builtin_module\",\n Constraint = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintArgs\n {\n SecurityHealthAnalyticsModule = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsModuleArgs\n {\n ModuleName = \"BIGQUERY_TABLE_CMEK_DISABLED\",\n ModuleEnablementState = \"ENABLED\",\n },\n },\n Description = \"enable BIGQUERY_TABLE_CMEK_DISABLED\",\n },\n new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyArgs\n {\n PolicyId = \"sha_custom_module\",\n Constraint = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintArgs\n {\n SecurityHealthAnalyticsCustomModule = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleArgs\n {\n DisplayName = \"custom_SHA_policy\",\n Config = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigArgs\n {\n Predicate = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigPredicateArgs\n {\n Expression = \"resource.rotationPeriod \u003e duration('2592000s')\",\n },\n CustomOutput = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputArgs\n {\n Properties = new[]\n {\n new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputPropertyArgs\n {\n Name = \"duration\",\n ValueExpression = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputPropertyValueExpressionArgs\n {\n Expression = \"resource.rotationPeriod\",\n },\n },\n },\n },\n ResourceSelector = new Gcp.SecurityPosture.Inputs.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigResourceSelectorArgs\n {\n ResourceTypes = new[]\n {\n \"cloudkms.googleapis.com/CryptoKey\",\n },\n },\n Severity = \"LOW\",\n Description = \"Custom Module\",\n Recommendation = \"Testing custom modules\",\n },\n ModuleEnablementState = \"ENABLED\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/securityposture\"\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 := securityposture.NewPosture(ctx, \"posture1\", \u0026securityposture.PostureArgs{\n\t\t\tPostureId: pulumi.String(\"posture_example\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tState: pulumi.String(\"ACTIVE\"),\n\t\t\tDescription: pulumi.String(\"a new posture\"),\n\t\t\tPolicySets: securityposture.PosturePolicySetArray{\n\t\t\t\t\u0026securityposture.PosturePolicySetArgs{\n\t\t\t\t\tPolicySetId: pulumi.String(\"org_policy_set\"),\n\t\t\t\t\tDescription: pulumi.String(\"set of org policies\"),\n\t\t\t\t\tPolicies: securityposture.PosturePolicySetPolicyArray{\n\t\t\t\t\t\t\u0026securityposture.PosturePolicySetPolicyArgs{\n\t\t\t\t\t\t\tPolicyId: pulumi.String(\"canned_org_policy\"),\n\t\t\t\t\t\t\tConstraint: \u0026securityposture.PosturePolicySetPolicyConstraintArgs{\n\t\t\t\t\t\t\t\tOrgPolicyConstraint: \u0026securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintArgs{\n\t\t\t\t\t\t\t\t\tCannedConstraintId: pulumi.String(\"storage.uniformBucketLevelAccess\"),\n\t\t\t\t\t\t\t\t\tPolicyRules: securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintPolicyRuleArray{\n\t\t\t\t\t\t\t\t\t\t\u0026securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintPolicyRuleArgs{\n\t\t\t\t\t\t\t\t\t\t\tEnforce: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\tCondition: \u0026securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintPolicyRuleConditionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tDescription: pulumi.String(\"condition description\"),\n\t\t\t\t\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.matchTag('org_id/tag_key_short_name,'tag_value_short_name')\"),\n\t\t\t\t\t\t\t\t\t\t\t\tTitle: pulumi.String(\"a CEL condition\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026securityposture.PosturePolicySetPolicyArgs{\n\t\t\t\t\t\t\tPolicyId: pulumi.String(\"custom_org_policy\"),\n\t\t\t\t\t\t\tConstraint: \u0026securityposture.PosturePolicySetPolicyConstraintArgs{\n\t\t\t\t\t\t\t\tOrgPolicyConstraintCustom: \u0026securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomArgs{\n\t\t\t\t\t\t\t\t\tCustomConstraint: \u0026securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomCustomConstraintArgs{\n\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade\"),\n\t\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"Disable GKE auto upgrade\"),\n\t\t\t\t\t\t\t\t\t\tDescription: pulumi.String(\"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\"),\n\t\t\t\t\t\t\t\t\t\tActionType: pulumi.String(\"ALLOW\"),\n\t\t\t\t\t\t\t\t\t\tCondition: pulumi.String(\"resource.management.autoUpgrade == false\"),\n\t\t\t\t\t\t\t\t\t\tMethodTypes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"CREATE\"),\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"UPDATE\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"container.googleapis.com/NodePool\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tPolicyRules: securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomPolicyRuleArray{\n\t\t\t\t\t\t\t\t\t\t\u0026securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomPolicyRuleArgs{\n\t\t\t\t\t\t\t\t\t\t\tEnforce: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\tCondition: \u0026securityposture.PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomPolicyRuleConditionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tDescription: pulumi.String(\"condition description\"),\n\t\t\t\t\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.matchTagId('tagKeys/key_id','tagValues/value_id')\"),\n\t\t\t\t\t\t\t\t\t\t\t\tTitle: pulumi.String(\"a CEL condition\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\t\u0026securityposture.PosturePolicySetArgs{\n\t\t\t\t\tPolicySetId: pulumi.String(\"sha_policy_set\"),\n\t\t\t\t\tDescription: pulumi.String(\"set of sha policies\"),\n\t\t\t\t\tPolicies: securityposture.PosturePolicySetPolicyArray{\n\t\t\t\t\t\t\u0026securityposture.PosturePolicySetPolicyArgs{\n\t\t\t\t\t\t\tPolicyId: pulumi.String(\"sha_builtin_module\"),\n\t\t\t\t\t\t\tConstraint: \u0026securityposture.PosturePolicySetPolicyConstraintArgs{\n\t\t\t\t\t\t\t\tSecurityHealthAnalyticsModule: \u0026securityposture.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsModuleArgs{\n\t\t\t\t\t\t\t\t\tModuleName: pulumi.String(\"BIGQUERY_TABLE_CMEK_DISABLED\"),\n\t\t\t\t\t\t\t\t\tModuleEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDescription: pulumi.String(\"enable BIGQUERY_TABLE_CMEK_DISABLED\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026securityposture.PosturePolicySetPolicyArgs{\n\t\t\t\t\t\t\tPolicyId: pulumi.String(\"sha_custom_module\"),\n\t\t\t\t\t\t\tConstraint: \u0026securityposture.PosturePolicySetPolicyConstraintArgs{\n\t\t\t\t\t\t\t\tSecurityHealthAnalyticsCustomModule: \u0026securityposture.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleArgs{\n\t\t\t\t\t\t\t\t\tDisplayName: pulumi.String(\"custom_SHA_policy\"),\n\t\t\t\t\t\t\t\t\tConfig: \u0026securityposture.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigArgs{\n\t\t\t\t\t\t\t\t\t\tPredicate: \u0026securityposture.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigPredicateArgs{\n\t\t\t\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod \u003e duration('2592000s')\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tCustomOutput: securityposture.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputArgs{\n\t\t\t\t\t\t\t\t\t\t\tProperties: securityposture.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputPropertyArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026securityposture.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputPropertyArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"duration\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tValueExpression: \u0026securityposture.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputPropertyValueExpressionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tExpression: pulumi.String(\"resource.rotationPeriod\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tResourceSelector: \u0026securityposture.PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigResourceSelectorArgs{\n\t\t\t\t\t\t\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"cloudkms.googleapis.com/CryptoKey\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tSeverity: pulumi.String(\"LOW\"),\n\t\t\t\t\t\t\t\t\t\tDescription: pulumi.String(\"Custom Module\"),\n\t\t\t\t\t\t\t\t\t\tRecommendation: pulumi.String(\"Testing custom modules\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tModuleEnablementState: pulumi.String(\"ENABLED\"),\n\t\t\t\t\t\t\t\t},\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.securityposture.Posture;\nimport com.pulumi.gcp.securityposture.PostureArgs;\nimport com.pulumi.gcp.securityposture.inputs.PosturePolicySetArgs;\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 posture1 = new Posture(\"posture1\", PostureArgs.builder()\n .postureId(\"posture_example\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .state(\"ACTIVE\")\n .description(\"a new posture\")\n .policySets( \n PosturePolicySetArgs.builder()\n .policySetId(\"org_policy_set\")\n .description(\"set of org policies\")\n .policies( \n PosturePolicySetPolicyArgs.builder()\n .policyId(\"canned_org_policy\")\n .constraint(PosturePolicySetPolicyConstraintArgs.builder()\n .orgPolicyConstraint(PosturePolicySetPolicyConstraintOrgPolicyConstraintArgs.builder()\n .cannedConstraintId(\"storage.uniformBucketLevelAccess\")\n .policyRules(PosturePolicySetPolicyConstraintOrgPolicyConstraintPolicyRuleArgs.builder()\n .enforce(true)\n .condition(PosturePolicySetPolicyConstraintOrgPolicyConstraintPolicyRuleConditionArgs.builder()\n .description(\"condition description\")\n .expression(\"resource.matchTag('org_id/tag_key_short_name,'tag_value_short_name')\")\n .title(\"a CEL condition\")\n .build())\n .build())\n .build())\n .build())\n .build(),\n PosturePolicySetPolicyArgs.builder()\n .policyId(\"custom_org_policy\")\n .constraint(PosturePolicySetPolicyConstraintArgs.builder()\n .orgPolicyConstraintCustom(PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomArgs.builder()\n .customConstraint(PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomCustomConstraintArgs.builder()\n .name(\"organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade\")\n .displayName(\"Disable GKE auto upgrade\")\n .description(\"Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\")\n .actionType(\"ALLOW\")\n .condition(\"resource.management.autoUpgrade == false\")\n .methodTypes( \n \"CREATE\",\n \"UPDATE\")\n .resourceTypes(\"container.googleapis.com/NodePool\")\n .build())\n .policyRules(PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomPolicyRuleArgs.builder()\n .enforce(true)\n .condition(PosturePolicySetPolicyConstraintOrgPolicyConstraintCustomPolicyRuleConditionArgs.builder()\n .description(\"condition description\")\n .expression(\"resource.matchTagId('tagKeys/key_id','tagValues/value_id')\")\n .title(\"a CEL condition\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build(),\n PosturePolicySetArgs.builder()\n .policySetId(\"sha_policy_set\")\n .description(\"set of sha policies\")\n .policies( \n PosturePolicySetPolicyArgs.builder()\n .policyId(\"sha_builtin_module\")\n .constraint(PosturePolicySetPolicyConstraintArgs.builder()\n .securityHealthAnalyticsModule(PosturePolicySetPolicyConstraintSecurityHealthAnalyticsModuleArgs.builder()\n .moduleName(\"BIGQUERY_TABLE_CMEK_DISABLED\")\n .moduleEnablementState(\"ENABLED\")\n .build())\n .build())\n .description(\"enable BIGQUERY_TABLE_CMEK_DISABLED\")\n .build(),\n PosturePolicySetPolicyArgs.builder()\n .policyId(\"sha_custom_module\")\n .constraint(PosturePolicySetPolicyConstraintArgs.builder()\n .securityHealthAnalyticsCustomModule(PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleArgs.builder()\n .displayName(\"custom_SHA_policy\")\n .config(PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigArgs.builder()\n .predicate(PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigPredicateArgs.builder()\n .expression(\"resource.rotationPeriod \u003e duration('2592000s')\")\n .build())\n .customOutput(PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputArgs.builder()\n .properties(PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputPropertyArgs.builder()\n .name(\"duration\")\n .valueExpression(PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigCustomOutputPropertyValueExpressionArgs.builder()\n .expression(\"resource.rotationPeriod\")\n .build())\n .build())\n .build())\n .resourceSelector(PosturePolicySetPolicyConstraintSecurityHealthAnalyticsCustomModuleConfigResourceSelectorArgs.builder()\n .resourceTypes(\"cloudkms.googleapis.com/CryptoKey\")\n .build())\n .severity(\"LOW\")\n .description(\"Custom Module\")\n .recommendation(\"Testing custom modules\")\n .build())\n .moduleEnablementState(\"ENABLED\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n posture1:\n type: gcp:securityposture:Posture\n properties:\n postureId: posture_example\n parent: organizations/123456789\n location: global\n state: ACTIVE\n description: a new posture\n policySets:\n - policySetId: org_policy_set\n description: set of org policies\n policies:\n - policyId: canned_org_policy\n constraint:\n orgPolicyConstraint:\n cannedConstraintId: storage.uniformBucketLevelAccess\n policyRules:\n - enforce: true\n condition:\n description: condition description\n expression: resource.matchTag('org_id/tag_key_short_name,'tag_value_short_name')\n title: a CEL condition\n - policyId: custom_org_policy\n constraint:\n orgPolicyConstraintCustom:\n customConstraint:\n name: organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade\n displayName: Disable GKE auto upgrade\n description: Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.\n actionType: ALLOW\n condition: resource.management.autoUpgrade == false\n methodTypes:\n - CREATE\n - UPDATE\n resourceTypes:\n - container.googleapis.com/NodePool\n policyRules:\n - enforce: true\n condition:\n description: condition description\n expression: resource.matchTagId('tagKeys/key_id','tagValues/value_id')\n title: a CEL condition\n - policySetId: sha_policy_set\n description: set of sha policies\n policies:\n - policyId: sha_builtin_module\n constraint:\n securityHealthAnalyticsModule:\n moduleName: BIGQUERY_TABLE_CMEK_DISABLED\n moduleEnablementState: ENABLED\n description: enable BIGQUERY_TABLE_CMEK_DISABLED\n - policyId: sha_custom_module\n constraint:\n securityHealthAnalyticsCustomModule:\n displayName: custom_SHA_policy\n config:\n predicate:\n expression: resource.rotationPeriod \u003e duration('2592000s')\n customOutput:\n properties:\n - name: duration\n valueExpression:\n expression: resource.rotationPeriod\n resourceSelector:\n resourceTypes:\n - cloudkms.googleapis.com/CryptoKey\n severity: LOW\n description: Custom Module\n recommendation: Testing custom modules\n moduleEnablementState: ENABLED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPosture can be imported using any of these accepted formats:\n\n* `{{parent}}/locations/{{location}}/postures/{{posture_id}}`\n\nWhen using the `pulumi import` command, Posture can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securityposture/posture:Posture default {{parent}}/locations/{{location}}/postures/{{posture_id}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -235456,7 +235456,7 @@ ] }, "gcp:serviceaccount/key:Key": { - "description": "## Example Usage\n\n### Creating A New Key\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myaccount = new gcp.serviceaccount.Account(\"myaccount\", {\n accountId: \"myaccount\",\n displayName: \"My Service Account\",\n});\nconst mykey = new gcp.serviceaccount.Key(\"mykey\", {\n serviceAccountId: myaccount.name,\n publicKeyType: \"TYPE_X509_PEM_FILE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmyaccount = gcp.serviceaccount.Account(\"myaccount\",\n account_id=\"myaccount\",\n display_name=\"My Service Account\")\nmykey = gcp.serviceaccount.Key(\"mykey\",\n service_account_id=myaccount.name,\n public_key_type=\"TYPE_X509_PEM_FILE\")\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 myaccount = new Gcp.ServiceAccount.Account(\"myaccount\", new()\n {\n AccountId = \"myaccount\",\n DisplayName = \"My Service Account\",\n });\n\n var mykey = new Gcp.ServiceAccount.Key(\"mykey\", new()\n {\n ServiceAccountId = myaccount.Name,\n PublicKeyType = \"TYPE_X509_PEM_FILE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmyaccount, err := serviceaccount.NewAccount(ctx, \"myaccount\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"myaccount\"),\n\t\t\tDisplayName: pulumi.String(\"My Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewKey(ctx, \"mykey\", \u0026serviceaccount.KeyArgs{\n\t\t\tServiceAccountId: myaccount.Name,\n\t\t\tPublicKeyType: pulumi.String(\"TYPE_X509_PEM_FILE\"),\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.serviceaccount.Key;\nimport com.pulumi.gcp.serviceaccount.KeyArgs;\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 myaccount = new Account(\"myaccount\", AccountArgs.builder()\n .accountId(\"myaccount\")\n .displayName(\"My Service Account\")\n .build());\n\n var mykey = new Key(\"mykey\", KeyArgs.builder()\n .serviceAccountId(myaccount.name())\n .publicKeyType(\"TYPE_X509_PEM_FILE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myaccount:\n type: gcp:serviceaccount:Account\n properties:\n accountId: myaccount\n displayName: My Service Account\n mykey:\n type: gcp:serviceaccount:Key\n properties:\n serviceAccountId: ${myaccount.name}\n publicKeyType: TYPE_X509_PEM_FILE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Creating And Regularly Rotating A Key\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumiverse/time\";\n\nconst myaccount = new gcp.serviceaccount.Account(\"myaccount\", {\n accountId: \"myaccount\",\n displayName: \"My Service Account\",\n});\n// note this requires the terraform to be run regularly\nconst mykeyRotation = new time.Rotating(\"mykey_rotation\", {rotationDays: 30});\nconst mykey = new gcp.serviceaccount.Key(\"mykey\", {\n serviceAccountId: myaccount.name,\n keepers: {\n rotation_time: mykeyRotation.rotationRfc3339,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumiverse_time as time\n\nmyaccount = gcp.serviceaccount.Account(\"myaccount\",\n account_id=\"myaccount\",\n display_name=\"My Service Account\")\n# note this requires the terraform to be run regularly\nmykey_rotation = time.Rotating(\"mykey_rotation\", rotation_days=30)\nmykey = gcp.serviceaccount.Key(\"mykey\",\n service_account_id=myaccount.name,\n keepers={\n \"rotation_time\": mykey_rotation.rotation_rfc3339,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumiverse.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myaccount = new Gcp.ServiceAccount.Account(\"myaccount\", new()\n {\n AccountId = \"myaccount\",\n DisplayName = \"My Service Account\",\n });\n\n // note this requires the terraform to be run regularly\n var mykeyRotation = new Time.Rotating(\"mykey_rotation\", new()\n {\n RotationDays = 30,\n });\n\n var mykey = new Gcp.ServiceAccount.Key(\"mykey\", new()\n {\n ServiceAccountId = myaccount.Name,\n Keepers = \n {\n { \"rotation_time\", mykeyRotation.RotationRfc3339 },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyaccount, err := serviceaccount.NewAccount(ctx, \"myaccount\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"myaccount\"),\n\t\t\tDisplayName: pulumi.String(\"My Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// note this requires the terraform to be run regularly\n\t\tmykeyRotation, err := time.NewRotating(ctx, \"mykey_rotation\", \u0026time.RotatingArgs{\n\t\t\tRotationDays: pulumi.Int(30),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewKey(ctx, \"mykey\", \u0026serviceaccount.KeyArgs{\n\t\t\tServiceAccountId: myaccount.Name,\n\t\t\tKeepers: pulumi.Map{\n\t\t\t\t\"rotation_time\": mykeyRotation.RotationRfc3339,\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.time.Rotating;\nimport com.pulumi.time.RotatingArgs;\nimport com.pulumi.gcp.serviceaccount.Key;\nimport com.pulumi.gcp.serviceaccount.KeyArgs;\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 myaccount = new Account(\"myaccount\", AccountArgs.builder()\n .accountId(\"myaccount\")\n .displayName(\"My Service Account\")\n .build());\n\n // note this requires the terraform to be run regularly\n var mykeyRotation = new Rotating(\"mykeyRotation\", RotatingArgs.builder()\n .rotationDays(30)\n .build());\n\n var mykey = new Key(\"mykey\", KeyArgs.builder()\n .serviceAccountId(myaccount.name())\n .keepers(Map.of(\"rotation_time\", mykeyRotation.rotationRfc3339()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myaccount:\n type: gcp:serviceaccount:Account\n properties:\n accountId: myaccount\n displayName: My Service Account\n # note this requires the terraform to be run regularly\n mykeyRotation:\n type: time:Rotating\n name: mykey_rotation\n properties:\n rotationDays: 30\n mykey:\n type: gcp:serviceaccount:Key\n properties:\n serviceAccountId: ${myaccount.name}\n keepers:\n rotation_time: ${mykeyRotation.rotationRfc3339}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Save Key In Kubernetes Secret - DEPRECATED\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as kubernetes from \"@pulumi/kubernetes\";\nimport * as std from \"@pulumi/std\";\n\n// Workload Identity is the recommended way of accessing Google Cloud APIs from pods.\n// https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity\nconst myaccount = new gcp.serviceaccount.Account(\"myaccount\", {\n accountId: \"myaccount\",\n displayName: \"My Service Account\",\n});\nconst mykey = new gcp.serviceaccount.Key(\"mykey\", {serviceAccountId: myaccount.name});\nconst google_application_credentials = new kubernetes.core.v1.Secret(\"google-application-credentials\", {\n metadata: {\n name: \"google-application-credentials\",\n },\n data: {\n \"credentials.json\": std.base64decodeOutput({\n input: mykey.privateKey,\n }).apply(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_kubernetes as kubernetes\nimport pulumi_std as std\n\n# Workload Identity is the recommended way of accessing Google Cloud APIs from pods.\n# https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity\nmyaccount = gcp.serviceaccount.Account(\"myaccount\",\n account_id=\"myaccount\",\n display_name=\"My Service Account\")\nmykey = gcp.serviceaccount.Key(\"mykey\", service_account_id=myaccount.name)\ngoogle_application_credentials = kubernetes.core.v1.Secret(\"google-application-credentials\",\n metadata=kubernetes.meta.v1.ObjectMetaArgs(\n name=\"google-application-credentials\",\n ),\n data={\n \"credentials.json\": std.base64decode_output(input=mykey.private_key).apply(lambda invoke: invoke.result),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Kubernetes = Pulumi.Kubernetes;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Workload Identity is the recommended way of accessing Google Cloud APIs from pods.\n // https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity\n var myaccount = new Gcp.ServiceAccount.Account(\"myaccount\", new()\n {\n AccountId = \"myaccount\",\n DisplayName = \"My Service Account\",\n });\n\n var mykey = new Gcp.ServiceAccount.Key(\"mykey\", new()\n {\n ServiceAccountId = myaccount.Name,\n });\n\n var google_application_credentials = new Kubernetes.Core.V1.Secret(\"google-application-credentials\", new()\n {\n Metadata = new Kubernetes.Types.Inputs.Meta.V1.ObjectMetaArgs\n {\n Name = \"google-application-credentials\",\n },\n Data = \n {\n { \"credentials.json\", Std.Base64decode.Invoke(new()\n {\n Input = mykey.PrivateKey,\n }).Apply(invoke =\u003e invoke.Result) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\tcorev1 \"github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/core/v1\"\n\tmetav1 \"github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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// Workload Identity is the recommended way of accessing Google Cloud APIs from pods.\n\t\t// https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity\n\t\tmyaccount, err := serviceaccount.NewAccount(ctx, \"myaccount\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"myaccount\"),\n\t\t\tDisplayName: pulumi.String(\"My Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmykey, err := serviceaccount.NewKey(ctx, \"mykey\", \u0026serviceaccount.KeyArgs{\n\t\t\tServiceAccountId: myaccount.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = corev1.NewSecret(ctx, \"google-application-credentials\", \u0026corev1.SecretArgs{\n\t\t\tMetadata: \u0026metav1.ObjectMetaArgs{\n\t\t\t\tName: pulumi.String(\"google-application-credentials\"),\n\t\t\t},\n\t\t\tData: pulumi.StringMap{\n\t\t\t\t\"credentials.json\": std.Base64decodeOutput(ctx, std.Base64decodeOutputArgs{\n\t\t\t\t\tInput: mykey.PrivateKey,\n\t\t\t\t}, nil).ApplyT(func(invoke std.Base64decodeResult) (*string, error) {\n\t\t\t\t\treturn invoke.Result, 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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.Key;\nimport com.pulumi.gcp.serviceaccount.KeyArgs;\nimport com.pulumi.kubernetes.core_v1.Secret;\nimport com.pulumi.kubernetes.core_v1.SecretArgs;\nimport com.pulumi.kubernetes.meta_v1.inputs.ObjectMetaArgs;\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 // Workload Identity is the recommended way of accessing Google Cloud APIs from pods.\n // https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity\n var myaccount = new Account(\"myaccount\", AccountArgs.builder()\n .accountId(\"myaccount\")\n .displayName(\"My Service Account\")\n .build());\n\n var mykey = new Key(\"mykey\", KeyArgs.builder()\n .serviceAccountId(myaccount.name())\n .build());\n\n var google_application_credentials = new Secret(\"google-application-credentials\", SecretArgs.builder()\n .metadata(ObjectMetaArgs.builder()\n .name(\"google-application-credentials\")\n .build())\n .data(Map.of(\"credentials.json\", StdFunctions.base64decode().applyValue(invoke -\u003e invoke.result())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Workload Identity is the recommended way of accessing Google Cloud APIs from pods.\n # https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity\n myaccount:\n type: gcp:serviceaccount:Account\n properties:\n accountId: myaccount\n displayName: My Service Account\n mykey:\n type: gcp:serviceaccount:Key\n properties:\n serviceAccountId: ${myaccount.name}\n google-application-credentials:\n type: kubernetes:core/v1:Secret\n properties:\n metadata:\n name: google-application-credentials\n data:\n credentials.json:\n fn::invoke:\n Function: std:base64decode\n Arguments:\n input: ${mykey.privateKey}\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "## Example Usage\n\n### Creating A New Key\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myaccount = new gcp.serviceaccount.Account(\"myaccount\", {\n accountId: \"myaccount\",\n displayName: \"My Service Account\",\n});\nconst mykey = new gcp.serviceaccount.Key(\"mykey\", {\n serviceAccountId: myaccount.name,\n publicKeyType: \"TYPE_X509_PEM_FILE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmyaccount = gcp.serviceaccount.Account(\"myaccount\",\n account_id=\"myaccount\",\n display_name=\"My Service Account\")\nmykey = gcp.serviceaccount.Key(\"mykey\",\n service_account_id=myaccount.name,\n public_key_type=\"TYPE_X509_PEM_FILE\")\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 myaccount = new Gcp.ServiceAccount.Account(\"myaccount\", new()\n {\n AccountId = \"myaccount\",\n DisplayName = \"My Service Account\",\n });\n\n var mykey = new Gcp.ServiceAccount.Key(\"mykey\", new()\n {\n ServiceAccountId = myaccount.Name,\n PublicKeyType = \"TYPE_X509_PEM_FILE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmyaccount, err := serviceaccount.NewAccount(ctx, \"myaccount\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"myaccount\"),\n\t\t\tDisplayName: pulumi.String(\"My Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewKey(ctx, \"mykey\", \u0026serviceaccount.KeyArgs{\n\t\t\tServiceAccountId: myaccount.Name,\n\t\t\tPublicKeyType: pulumi.String(\"TYPE_X509_PEM_FILE\"),\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.serviceaccount.Key;\nimport com.pulumi.gcp.serviceaccount.KeyArgs;\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 myaccount = new Account(\"myaccount\", AccountArgs.builder()\n .accountId(\"myaccount\")\n .displayName(\"My Service Account\")\n .build());\n\n var mykey = new Key(\"mykey\", KeyArgs.builder()\n .serviceAccountId(myaccount.name())\n .publicKeyType(\"TYPE_X509_PEM_FILE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myaccount:\n type: gcp:serviceaccount:Account\n properties:\n accountId: myaccount\n displayName: My Service Account\n mykey:\n type: gcp:serviceaccount:Key\n properties:\n serviceAccountId: ${myaccount.name}\n publicKeyType: TYPE_X509_PEM_FILE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Creating And Regularly Rotating A Key\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumiverse/time\";\n\nconst myaccount = new gcp.serviceaccount.Account(\"myaccount\", {\n accountId: \"myaccount\",\n displayName: \"My Service Account\",\n});\n// note this requires the terraform to be run regularly\nconst mykeyRotation = new time.Rotating(\"mykey_rotation\", {rotationDays: 30});\nconst mykey = new gcp.serviceaccount.Key(\"mykey\", {\n serviceAccountId: myaccount.name,\n keepers: {\n rotation_time: mykeyRotation.rotationRfc3339,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumiverse_time as time\n\nmyaccount = gcp.serviceaccount.Account(\"myaccount\",\n account_id=\"myaccount\",\n display_name=\"My Service Account\")\n# note this requires the terraform to be run regularly\nmykey_rotation = time.Rotating(\"mykey_rotation\", rotation_days=30)\nmykey = gcp.serviceaccount.Key(\"mykey\",\n service_account_id=myaccount.name,\n keepers={\n \"rotation_time\": mykey_rotation.rotation_rfc3339,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumiverse.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myaccount = new Gcp.ServiceAccount.Account(\"myaccount\", new()\n {\n AccountId = \"myaccount\",\n DisplayName = \"My Service Account\",\n });\n\n // note this requires the terraform to be run regularly\n var mykeyRotation = new Time.Rotating(\"mykey_rotation\", new()\n {\n RotationDays = 30,\n });\n\n var mykey = new Gcp.ServiceAccount.Key(\"mykey\", new()\n {\n ServiceAccountId = myaccount.Name,\n Keepers = \n {\n { \"rotation_time\", mykeyRotation.RotationRfc3339 },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyaccount, err := serviceaccount.NewAccount(ctx, \"myaccount\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"myaccount\"),\n\t\t\tDisplayName: pulumi.String(\"My Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// note this requires the terraform to be run regularly\n\t\tmykeyRotation, err := time.NewRotating(ctx, \"mykey_rotation\", \u0026time.RotatingArgs{\n\t\t\tRotationDays: pulumi.Int(30),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewKey(ctx, \"mykey\", \u0026serviceaccount.KeyArgs{\n\t\t\tServiceAccountId: myaccount.Name,\n\t\t\tKeepers: pulumi.Map{\n\t\t\t\t\"rotation_time\": mykeyRotation.RotationRfc3339,\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.time.Rotating;\nimport com.pulumi.time.RotatingArgs;\nimport com.pulumi.gcp.serviceaccount.Key;\nimport com.pulumi.gcp.serviceaccount.KeyArgs;\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 myaccount = new Account(\"myaccount\", AccountArgs.builder()\n .accountId(\"myaccount\")\n .displayName(\"My Service Account\")\n .build());\n\n // note this requires the terraform to be run regularly\n var mykeyRotation = new Rotating(\"mykeyRotation\", RotatingArgs.builder()\n .rotationDays(30)\n .build());\n\n var mykey = new Key(\"mykey\", KeyArgs.builder()\n .serviceAccountId(myaccount.name())\n .keepers(Map.of(\"rotation_time\", mykeyRotation.rotationRfc3339()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myaccount:\n type: gcp:serviceaccount:Account\n properties:\n accountId: myaccount\n displayName: My Service Account\n # note this requires the terraform to be run regularly\n mykeyRotation:\n type: time:Rotating\n name: mykey_rotation\n properties:\n rotationDays: 30\n mykey:\n type: gcp:serviceaccount:Key\n properties:\n serviceAccountId: ${myaccount.name}\n keepers:\n rotation_time: ${mykeyRotation.rotationRfc3339}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Save Key In Kubernetes Secret - DEPRECATED\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as kubernetes from \"@pulumi/kubernetes\";\nimport * as std from \"@pulumi/std\";\n\n// Workload Identity is the recommended way of accessing Google Cloud APIs from pods.\n// https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity\nconst myaccount = new gcp.serviceaccount.Account(\"myaccount\", {\n accountId: \"myaccount\",\n displayName: \"My Service Account\",\n});\nconst mykey = new gcp.serviceaccount.Key(\"mykey\", {serviceAccountId: myaccount.name});\nconst google_application_credentials = new kubernetes.core.v1.Secret(\"google-application-credentials\", {\n metadata: {\n name: \"google-application-credentials\",\n },\n data: {\n \"credentials.json\": std.base64decodeOutput({\n input: mykey.privateKey,\n }).apply(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_kubernetes as kubernetes\nimport pulumi_std as std\n\n# Workload Identity is the recommended way of accessing Google Cloud APIs from pods.\n# https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity\nmyaccount = gcp.serviceaccount.Account(\"myaccount\",\n account_id=\"myaccount\",\n display_name=\"My Service Account\")\nmykey = gcp.serviceaccount.Key(\"mykey\", service_account_id=myaccount.name)\ngoogle_application_credentials = kubernetes.core.v1.Secret(\"google-application-credentials\",\n metadata=kubernetes.meta.v1.ObjectMetaArgs(\n name=\"google-application-credentials\",\n ),\n data={\n \"credentials.json\": std.base64decode_output(input=mykey.private_key).apply(lambda invoke: invoke.result),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Kubernetes = Pulumi.Kubernetes;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Workload Identity is the recommended way of accessing Google Cloud APIs from pods.\n // https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity\n var myaccount = new Gcp.ServiceAccount.Account(\"myaccount\", new()\n {\n AccountId = \"myaccount\",\n DisplayName = \"My Service Account\",\n });\n\n var mykey = new Gcp.ServiceAccount.Key(\"mykey\", new()\n {\n ServiceAccountId = myaccount.Name,\n });\n\n var google_application_credentials = new Kubernetes.Core.V1.Secret(\"google-application-credentials\", new()\n {\n Metadata = new Kubernetes.Types.Inputs.Meta.V1.ObjectMetaArgs\n {\n Name = \"google-application-credentials\",\n },\n Data = \n {\n { \"credentials.json\", Std.Base64decode.Invoke(new()\n {\n Input = mykey.PrivateKey,\n }).Apply(invoke =\u003e invoke.Result) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\tcorev1 \"github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/core/v1\"\n\tmetav1 \"github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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// Workload Identity is the recommended way of accessing Google Cloud APIs from pods.\n\t\t// https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity\n\t\tmyaccount, err := serviceaccount.NewAccount(ctx, \"myaccount\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"myaccount\"),\n\t\t\tDisplayName: pulumi.String(\"My Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmykey, err := serviceaccount.NewKey(ctx, \"mykey\", \u0026serviceaccount.KeyArgs{\n\t\t\tServiceAccountId: myaccount.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = corev1.NewSecret(ctx, \"google-application-credentials\", \u0026corev1.SecretArgs{\n\t\t\tMetadata: \u0026metav1.ObjectMetaArgs{\n\t\t\t\tName: pulumi.String(\"google-application-credentials\"),\n\t\t\t},\n\t\t\tData: pulumi.StringMap{\n\t\t\t\t\"credentials.json\": pulumi.String(std.Base64decodeOutput(ctx, std.Base64decodeOutputArgs{\n\t\t\t\t\tInput: mykey.PrivateKey,\n\t\t\t\t}, nil).ApplyT(func(invoke std.Base64decodeResult) (*string, error) {\n\t\t\t\t\treturn invoke.Result, 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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.Key;\nimport com.pulumi.gcp.serviceaccount.KeyArgs;\nimport com.pulumi.kubernetes.core_v1.Secret;\nimport com.pulumi.kubernetes.core_v1.SecretArgs;\nimport com.pulumi.kubernetes.meta_v1.inputs.ObjectMetaArgs;\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 // Workload Identity is the recommended way of accessing Google Cloud APIs from pods.\n // https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity\n var myaccount = new Account(\"myaccount\", AccountArgs.builder()\n .accountId(\"myaccount\")\n .displayName(\"My Service Account\")\n .build());\n\n var mykey = new Key(\"mykey\", KeyArgs.builder()\n .serviceAccountId(myaccount.name())\n .build());\n\n var google_application_credentials = new Secret(\"google-application-credentials\", SecretArgs.builder()\n .metadata(ObjectMetaArgs.builder()\n .name(\"google-application-credentials\")\n .build())\n .data(Map.of(\"credentials.json\", StdFunctions.base64decode().applyValue(invoke -\u003e invoke.result())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Workload Identity is the recommended way of accessing Google Cloud APIs from pods.\n # https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity\n myaccount:\n type: gcp:serviceaccount:Account\n properties:\n accountId: myaccount\n displayName: My Service Account\n mykey:\n type: gcp:serviceaccount:Key\n properties:\n serviceAccountId: ${myaccount.name}\n google-application-credentials:\n type: kubernetes:core/v1:Secret\n properties:\n metadata:\n name: google-application-credentials\n data:\n credentials.json:\n fn::invoke:\n Function: std:base64decode\n Arguments:\n input: ${mykey.privateKey}\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "keepers": { "type": "object", @@ -236673,7 +236673,7 @@ } }, "gcp:serviceusage/consumerQuotaOverride:ConsumerQuotaOverride": { - "description": "A consumer override is applied to the consumer on its own authority to limit its own quota usage.\nConsumer overrides cannot be used to grant more quota than would be allowed by admin overrides,\nproducer overrides, or the default limit of the service.\n\nTo get more information about ConsumerQuotaOverride, see:\n\n* How-to Guides\n * [Managing Service Quota](https://cloud.google.com/service-usage/docs/manage-quota )\n * [REST API documentation](https://cloud.google.com/service-usage/docs/reference/rest/v1beta1/services.consumerQuotaMetrics.limits.consumerOverrides)\n\n## Example Usage\n\n### Consumer Quota Override\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst myProject = new gcp.organizations.Project(\"my_project\", {\n name: \"tf-test-project\",\n projectId: \"quota\",\n orgId: \"123456789\",\n});\nconst override = new gcp.serviceusage.ConsumerQuotaOverride(\"override\", {\n project: myProject.projectId,\n service: \"servicemanagement.googleapis.com\",\n metric: std.urlencode({\n input: \"servicemanagement.googleapis.com/default_requests\",\n }).then(invoke =\u003e invoke.result),\n limit: std.urlencode({\n input: \"/min/project\",\n }).then(invoke =\u003e invoke.result),\n overrideValue: \"95\",\n force: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nmy_project = gcp.organizations.Project(\"my_project\",\n name=\"tf-test-project\",\n project_id=\"quota\",\n org_id=\"123456789\")\noverride = gcp.serviceusage.ConsumerQuotaOverride(\"override\",\n project=my_project.project_id,\n service=\"servicemanagement.googleapis.com\",\n metric=std.urlencode(input=\"servicemanagement.googleapis.com/default_requests\").result,\n limit=std.urlencode(input=\"/min/project\").result,\n override_value=\"95\",\n force=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myProject = new Gcp.Organizations.Project(\"my_project\", new()\n {\n Name = \"tf-test-project\",\n ProjectId = \"quota\",\n OrgId = \"123456789\",\n });\n\n var @override = new Gcp.ServiceUsage.ConsumerQuotaOverride(\"override\", new()\n {\n Project = myProject.ProjectId,\n Service = \"servicemanagement.googleapis.com\",\n Metric = Std.Urlencode.Invoke(new()\n {\n Input = \"servicemanagement.googleapis.com/default_requests\",\n }).Apply(invoke =\u003e invoke.Result),\n Limit = Std.Urlencode.Invoke(new()\n {\n Input = \"/min/project\",\n }).Apply(invoke =\u003e invoke.Result),\n OverrideValue = \"95\",\n Force = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceusage\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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, \"my_project\", \u0026organizations.ProjectArgs{\n\t\t\tName: pulumi.String(\"tf-test-project\"),\n\t\t\tProjectId: pulumi.String(\"quota\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeUrlencode, err := std.Urlencode(ctx, \u0026std.UrlencodeArgs{\n\t\t\tInput: \"servicemanagement.googleapis.com/default_requests\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeUrlencode1, err := std.Urlencode(ctx, \u0026std.UrlencodeArgs{\n\t\t\tInput: \"/min/project\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceusage.NewConsumerQuotaOverride(ctx, \"override\", \u0026serviceusage.ConsumerQuotaOverrideArgs{\n\t\t\tProject: myProject.ProjectId,\n\t\t\tService: pulumi.String(\"servicemanagement.googleapis.com\"),\n\t\t\tMetric: invokeUrlencode.Result,\n\t\t\tLimit: invokeUrlencode1.Result,\n\t\t\tOverrideValue: pulumi.String(\"95\"),\n\t\t\tForce: pulumi.Bool(true),\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.serviceusage.ConsumerQuotaOverride;\nimport com.pulumi.gcp.serviceusage.ConsumerQuotaOverrideArgs;\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 .name(\"tf-test-project\")\n .projectId(\"quota\")\n .orgId(\"123456789\")\n .build());\n\n var override = new ConsumerQuotaOverride(\"override\", ConsumerQuotaOverrideArgs.builder()\n .project(myProject.projectId())\n .service(\"servicemanagement.googleapis.com\")\n .metric(StdFunctions.urlencode(UrlencodeArgs.builder()\n .input(\"servicemanagement.googleapis.com/default_requests\")\n .build()).result())\n .limit(StdFunctions.urlencode(UrlencodeArgs.builder()\n .input(\"/min/project\")\n .build()).result())\n .overrideValue(\"95\")\n .force(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myProject:\n type: gcp:organizations:Project\n name: my_project\n properties:\n name: tf-test-project\n projectId: quota\n orgId: '123456789'\n override:\n type: gcp:serviceusage:ConsumerQuotaOverride\n properties:\n project: ${myProject.projectId}\n service: servicemanagement.googleapis.com\n metric:\n fn::invoke:\n Function: std:urlencode\n Arguments:\n input: servicemanagement.googleapis.com/default_requests\n Return: result\n limit:\n fn::invoke:\n Function: std:urlencode\n Arguments:\n input: /min/project\n Return: result\n overrideValue: '95'\n force: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Consumer Quota Override\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst myProject = new gcp.organizations.Project(\"my_project\", {\n name: \"tf-test-project\",\n projectId: \"quota\",\n orgId: \"123456789\",\n});\nconst override = new gcp.serviceusage.ConsumerQuotaOverride(\"override\", {\n dimensions: {\n region: \"us-central1\",\n },\n project: myProject.projectId,\n service: \"compute.googleapis.com\",\n metric: std.urlencode({\n input: \"compute.googleapis.com/n2_cpus\",\n }).then(invoke =\u003e invoke.result),\n limit: std.urlencode({\n input: \"/project/region\",\n }).then(invoke =\u003e invoke.result),\n overrideValue: \"8\",\n force: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nmy_project = gcp.organizations.Project(\"my_project\",\n name=\"tf-test-project\",\n project_id=\"quota\",\n org_id=\"123456789\")\noverride = gcp.serviceusage.ConsumerQuotaOverride(\"override\",\n dimensions={\n \"region\": \"us-central1\",\n },\n project=my_project.project_id,\n service=\"compute.googleapis.com\",\n metric=std.urlencode(input=\"compute.googleapis.com/n2_cpus\").result,\n limit=std.urlencode(input=\"/project/region\").result,\n override_value=\"8\",\n force=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myProject = new Gcp.Organizations.Project(\"my_project\", new()\n {\n Name = \"tf-test-project\",\n ProjectId = \"quota\",\n OrgId = \"123456789\",\n });\n\n var @override = new Gcp.ServiceUsage.ConsumerQuotaOverride(\"override\", new()\n {\n Dimensions = \n {\n { \"region\", \"us-central1\" },\n },\n Project = myProject.ProjectId,\n Service = \"compute.googleapis.com\",\n Metric = Std.Urlencode.Invoke(new()\n {\n Input = \"compute.googleapis.com/n2_cpus\",\n }).Apply(invoke =\u003e invoke.Result),\n Limit = Std.Urlencode.Invoke(new()\n {\n Input = \"/project/region\",\n }).Apply(invoke =\u003e invoke.Result),\n OverrideValue = \"8\",\n Force = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceusage\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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, \"my_project\", \u0026organizations.ProjectArgs{\n\t\t\tName: pulumi.String(\"tf-test-project\"),\n\t\t\tProjectId: pulumi.String(\"quota\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeUrlencode, err := std.Urlencode(ctx, \u0026std.UrlencodeArgs{\n\t\t\tInput: \"compute.googleapis.com/n2_cpus\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeUrlencode1, err := std.Urlencode(ctx, \u0026std.UrlencodeArgs{\n\t\t\tInput: \"/project/region\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceusage.NewConsumerQuotaOverride(ctx, \"override\", \u0026serviceusage.ConsumerQuotaOverrideArgs{\n\t\t\tDimensions: pulumi.StringMap{\n\t\t\t\t\"region\": pulumi.String(\"us-central1\"),\n\t\t\t},\n\t\t\tProject: myProject.ProjectId,\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t\tMetric: invokeUrlencode.Result,\n\t\t\tLimit: invokeUrlencode1.Result,\n\t\t\tOverrideValue: pulumi.String(\"8\"),\n\t\t\tForce: pulumi.Bool(true),\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.serviceusage.ConsumerQuotaOverride;\nimport com.pulumi.gcp.serviceusage.ConsumerQuotaOverrideArgs;\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 .name(\"tf-test-project\")\n .projectId(\"quota\")\n .orgId(\"123456789\")\n .build());\n\n var override = new ConsumerQuotaOverride(\"override\", ConsumerQuotaOverrideArgs.builder()\n .dimensions(Map.of(\"region\", \"us-central1\"))\n .project(myProject.projectId())\n .service(\"compute.googleapis.com\")\n .metric(StdFunctions.urlencode(UrlencodeArgs.builder()\n .input(\"compute.googleapis.com/n2_cpus\")\n .build()).result())\n .limit(StdFunctions.urlencode(UrlencodeArgs.builder()\n .input(\"/project/region\")\n .build()).result())\n .overrideValue(\"8\")\n .force(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myProject:\n type: gcp:organizations:Project\n name: my_project\n properties:\n name: tf-test-project\n projectId: quota\n orgId: '123456789'\n override:\n type: gcp:serviceusage:ConsumerQuotaOverride\n properties:\n dimensions:\n region: us-central1\n project: ${myProject.projectId}\n service: compute.googleapis.com\n metric:\n fn::invoke:\n Function: std:urlencode\n Arguments:\n input: compute.googleapis.com/n2_cpus\n Return: result\n limit:\n fn::invoke:\n Function: std:urlencode\n Arguments:\n input: /project/region\n Return: result\n overrideValue: '8'\n force: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Consumer Quota Override Custom Dimension\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst myProject = new gcp.organizations.Project(\"my_project\", {\n name: \"tf-test-project\",\n projectId: \"quota\",\n orgId: \"123456789\",\n});\nconst override = new gcp.serviceusage.ConsumerQuotaOverride(\"override\", {\n project: myProject.projectId,\n service: \"libraryagent.googleapis.com\",\n metric: std.urlencode({\n input: \"libraryagent.googleapis.com/borrows\",\n }).then(invoke =\u003e invoke.result),\n limit: std.urlencode({\n input: \"/author/project\",\n }).then(invoke =\u003e invoke.result),\n overrideValue: \"1\",\n force: true,\n dimensions: {\n author: \"larry\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nmy_project = gcp.organizations.Project(\"my_project\",\n name=\"tf-test-project\",\n project_id=\"quota\",\n org_id=\"123456789\")\noverride = gcp.serviceusage.ConsumerQuotaOverride(\"override\",\n project=my_project.project_id,\n service=\"libraryagent.googleapis.com\",\n metric=std.urlencode(input=\"libraryagent.googleapis.com/borrows\").result,\n limit=std.urlencode(input=\"/author/project\").result,\n override_value=\"1\",\n force=True,\n dimensions={\n \"author\": \"larry\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myProject = new Gcp.Organizations.Project(\"my_project\", new()\n {\n Name = \"tf-test-project\",\n ProjectId = \"quota\",\n OrgId = \"123456789\",\n });\n\n var @override = new Gcp.ServiceUsage.ConsumerQuotaOverride(\"override\", new()\n {\n Project = myProject.ProjectId,\n Service = \"libraryagent.googleapis.com\",\n Metric = Std.Urlencode.Invoke(new()\n {\n Input = \"libraryagent.googleapis.com/borrows\",\n }).Apply(invoke =\u003e invoke.Result),\n Limit = Std.Urlencode.Invoke(new()\n {\n Input = \"/author/project\",\n }).Apply(invoke =\u003e invoke.Result),\n OverrideValue = \"1\",\n Force = true,\n Dimensions = \n {\n { \"author\", \"larry\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceusage\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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, \"my_project\", \u0026organizations.ProjectArgs{\n\t\t\tName: pulumi.String(\"tf-test-project\"),\n\t\t\tProjectId: pulumi.String(\"quota\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeUrlencode, err := std.Urlencode(ctx, \u0026std.UrlencodeArgs{\n\t\t\tInput: \"libraryagent.googleapis.com/borrows\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeUrlencode1, err := std.Urlencode(ctx, \u0026std.UrlencodeArgs{\n\t\t\tInput: \"/author/project\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceusage.NewConsumerQuotaOverride(ctx, \"override\", \u0026serviceusage.ConsumerQuotaOverrideArgs{\n\t\t\tProject: myProject.ProjectId,\n\t\t\tService: pulumi.String(\"libraryagent.googleapis.com\"),\n\t\t\tMetric: invokeUrlencode.Result,\n\t\t\tLimit: invokeUrlencode1.Result,\n\t\t\tOverrideValue: pulumi.String(\"1\"),\n\t\t\tForce: pulumi.Bool(true),\n\t\t\tDimensions: pulumi.StringMap{\n\t\t\t\t\"author\": pulumi.String(\"larry\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.serviceusage.ConsumerQuotaOverride;\nimport com.pulumi.gcp.serviceusage.ConsumerQuotaOverrideArgs;\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 .name(\"tf-test-project\")\n .projectId(\"quota\")\n .orgId(\"123456789\")\n .build());\n\n var override = new ConsumerQuotaOverride(\"override\", ConsumerQuotaOverrideArgs.builder()\n .project(myProject.projectId())\n .service(\"libraryagent.googleapis.com\")\n .metric(StdFunctions.urlencode(UrlencodeArgs.builder()\n .input(\"libraryagent.googleapis.com/borrows\")\n .build()).result())\n .limit(StdFunctions.urlencode(UrlencodeArgs.builder()\n .input(\"/author/project\")\n .build()).result())\n .overrideValue(\"1\")\n .force(true)\n .dimensions(Map.of(\"author\", \"larry\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myProject:\n type: gcp:organizations:Project\n name: my_project\n properties:\n name: tf-test-project\n projectId: quota\n orgId: '123456789'\n override:\n type: gcp:serviceusage:ConsumerQuotaOverride\n properties:\n project: ${myProject.projectId}\n service: libraryagent.googleapis.com\n metric:\n fn::invoke:\n Function: std:urlencode\n Arguments:\n input: libraryagent.googleapis.com/borrows\n Return: result\n limit:\n fn::invoke:\n Function: std:urlencode\n Arguments:\n input: /author/project\n Return: result\n overrideValue: '1'\n force: true\n dimensions:\n author: larry\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConsumerQuotaOverride can be imported using any of these accepted formats:\n\n* `projects/{{project}}/services/{{service}}/consumerQuotaMetrics/{{metric}}/limits/{{limit}}/consumerOverrides/{{name}}`\n\n* `services/{{service}}/consumerQuotaMetrics/{{metric}}/limits/{{limit}}/consumerOverrides/{{name}}`\n\n* `{{service}}/{{metric}}/{{limit}}/{{name}}`\n\nWhen using the `pulumi import` command, ConsumerQuotaOverride can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:serviceusage/consumerQuotaOverride:ConsumerQuotaOverride default projects/{{project}}/services/{{service}}/consumerQuotaMetrics/{{metric}}/limits/{{limit}}/consumerOverrides/{{name}}\n```\n\n```sh\n$ pulumi import gcp:serviceusage/consumerQuotaOverride:ConsumerQuotaOverride default services/{{service}}/consumerQuotaMetrics/{{metric}}/limits/{{limit}}/consumerOverrides/{{name}}\n```\n\n```sh\n$ pulumi import gcp:serviceusage/consumerQuotaOverride:ConsumerQuotaOverride default {{service}}/{{metric}}/{{limit}}/{{name}}\n```\n\n", + "description": "A consumer override is applied to the consumer on its own authority to limit its own quota usage.\nConsumer overrides cannot be used to grant more quota than would be allowed by admin overrides,\nproducer overrides, or the default limit of the service.\n\nTo get more information about ConsumerQuotaOverride, see:\n\n* How-to Guides\n * [Managing Service Quota](https://cloud.google.com/service-usage/docs/manage-quota )\n * [REST API documentation](https://cloud.google.com/service-usage/docs/reference/rest/v1beta1/services.consumerQuotaMetrics.limits.consumerOverrides)\n\n## Example Usage\n\n### Consumer Quota Override\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst myProject = new gcp.organizations.Project(\"my_project\", {\n name: \"tf-test-project\",\n projectId: \"quota\",\n orgId: \"123456789\",\n});\nconst override = new gcp.serviceusage.ConsumerQuotaOverride(\"override\", {\n project: myProject.projectId,\n service: \"servicemanagement.googleapis.com\",\n metric: std.urlencode({\n input: \"servicemanagement.googleapis.com/default_requests\",\n }).then(invoke =\u003e invoke.result),\n limit: std.urlencode({\n input: \"/min/project\",\n }).then(invoke =\u003e invoke.result),\n overrideValue: \"95\",\n force: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nmy_project = gcp.organizations.Project(\"my_project\",\n name=\"tf-test-project\",\n project_id=\"quota\",\n org_id=\"123456789\")\noverride = gcp.serviceusage.ConsumerQuotaOverride(\"override\",\n project=my_project.project_id,\n service=\"servicemanagement.googleapis.com\",\n metric=std.urlencode(input=\"servicemanagement.googleapis.com/default_requests\").result,\n limit=std.urlencode(input=\"/min/project\").result,\n override_value=\"95\",\n force=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myProject = new Gcp.Organizations.Project(\"my_project\", new()\n {\n Name = \"tf-test-project\",\n ProjectId = \"quota\",\n OrgId = \"123456789\",\n });\n\n var @override = new Gcp.ServiceUsage.ConsumerQuotaOverride(\"override\", new()\n {\n Project = myProject.ProjectId,\n Service = \"servicemanagement.googleapis.com\",\n Metric = Std.Urlencode.Invoke(new()\n {\n Input = \"servicemanagement.googleapis.com/default_requests\",\n }).Apply(invoke =\u003e invoke.Result),\n Limit = Std.Urlencode.Invoke(new()\n {\n Input = \"/min/project\",\n }).Apply(invoke =\u003e invoke.Result),\n OverrideValue = \"95\",\n Force = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceusage\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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, \"my_project\", \u0026organizations.ProjectArgs{\n\t\t\tName: pulumi.String(\"tf-test-project\"),\n\t\t\tProjectId: pulumi.String(\"quota\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeUrlencode, err := std.Urlencode(ctx, \u0026std.UrlencodeArgs{\n\t\t\tInput: \"servicemanagement.googleapis.com/default_requests\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeUrlencode1, err := std.Urlencode(ctx, \u0026std.UrlencodeArgs{\n\t\t\tInput: \"/min/project\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceusage.NewConsumerQuotaOverride(ctx, \"override\", \u0026serviceusage.ConsumerQuotaOverrideArgs{\n\t\t\tProject: myProject.ProjectId,\n\t\t\tService: pulumi.String(\"servicemanagement.googleapis.com\"),\n\t\t\tMetric: pulumi.String(invokeUrlencode.Result),\n\t\t\tLimit: pulumi.String(invokeUrlencode1.Result),\n\t\t\tOverrideValue: pulumi.String(\"95\"),\n\t\t\tForce: pulumi.Bool(true),\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.serviceusage.ConsumerQuotaOverride;\nimport com.pulumi.gcp.serviceusage.ConsumerQuotaOverrideArgs;\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 .name(\"tf-test-project\")\n .projectId(\"quota\")\n .orgId(\"123456789\")\n .build());\n\n var override = new ConsumerQuotaOverride(\"override\", ConsumerQuotaOverrideArgs.builder()\n .project(myProject.projectId())\n .service(\"servicemanagement.googleapis.com\")\n .metric(StdFunctions.urlencode(UrlencodeArgs.builder()\n .input(\"servicemanagement.googleapis.com/default_requests\")\n .build()).result())\n .limit(StdFunctions.urlencode(UrlencodeArgs.builder()\n .input(\"/min/project\")\n .build()).result())\n .overrideValue(\"95\")\n .force(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myProject:\n type: gcp:organizations:Project\n name: my_project\n properties:\n name: tf-test-project\n projectId: quota\n orgId: '123456789'\n override:\n type: gcp:serviceusage:ConsumerQuotaOverride\n properties:\n project: ${myProject.projectId}\n service: servicemanagement.googleapis.com\n metric:\n fn::invoke:\n Function: std:urlencode\n Arguments:\n input: servicemanagement.googleapis.com/default_requests\n Return: result\n limit:\n fn::invoke:\n Function: std:urlencode\n Arguments:\n input: /min/project\n Return: result\n overrideValue: '95'\n force: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Consumer Quota Override\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst myProject = new gcp.organizations.Project(\"my_project\", {\n name: \"tf-test-project\",\n projectId: \"quota\",\n orgId: \"123456789\",\n});\nconst override = new gcp.serviceusage.ConsumerQuotaOverride(\"override\", {\n dimensions: {\n region: \"us-central1\",\n },\n project: myProject.projectId,\n service: \"compute.googleapis.com\",\n metric: std.urlencode({\n input: \"compute.googleapis.com/n2_cpus\",\n }).then(invoke =\u003e invoke.result),\n limit: std.urlencode({\n input: \"/project/region\",\n }).then(invoke =\u003e invoke.result),\n overrideValue: \"8\",\n force: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nmy_project = gcp.organizations.Project(\"my_project\",\n name=\"tf-test-project\",\n project_id=\"quota\",\n org_id=\"123456789\")\noverride = gcp.serviceusage.ConsumerQuotaOverride(\"override\",\n dimensions={\n \"region\": \"us-central1\",\n },\n project=my_project.project_id,\n service=\"compute.googleapis.com\",\n metric=std.urlencode(input=\"compute.googleapis.com/n2_cpus\").result,\n limit=std.urlencode(input=\"/project/region\").result,\n override_value=\"8\",\n force=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myProject = new Gcp.Organizations.Project(\"my_project\", new()\n {\n Name = \"tf-test-project\",\n ProjectId = \"quota\",\n OrgId = \"123456789\",\n });\n\n var @override = new Gcp.ServiceUsage.ConsumerQuotaOverride(\"override\", new()\n {\n Dimensions = \n {\n { \"region\", \"us-central1\" },\n },\n Project = myProject.ProjectId,\n Service = \"compute.googleapis.com\",\n Metric = Std.Urlencode.Invoke(new()\n {\n Input = \"compute.googleapis.com/n2_cpus\",\n }).Apply(invoke =\u003e invoke.Result),\n Limit = Std.Urlencode.Invoke(new()\n {\n Input = \"/project/region\",\n }).Apply(invoke =\u003e invoke.Result),\n OverrideValue = \"8\",\n Force = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceusage\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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, \"my_project\", \u0026organizations.ProjectArgs{\n\t\t\tName: pulumi.String(\"tf-test-project\"),\n\t\t\tProjectId: pulumi.String(\"quota\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeUrlencode, err := std.Urlencode(ctx, \u0026std.UrlencodeArgs{\n\t\t\tInput: \"compute.googleapis.com/n2_cpus\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeUrlencode1, err := std.Urlencode(ctx, \u0026std.UrlencodeArgs{\n\t\t\tInput: \"/project/region\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceusage.NewConsumerQuotaOverride(ctx, \"override\", \u0026serviceusage.ConsumerQuotaOverrideArgs{\n\t\t\tDimensions: pulumi.StringMap{\n\t\t\t\t\"region\": pulumi.String(\"us-central1\"),\n\t\t\t},\n\t\t\tProject: myProject.ProjectId,\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t\tMetric: pulumi.String(invokeUrlencode.Result),\n\t\t\tLimit: pulumi.String(invokeUrlencode1.Result),\n\t\t\tOverrideValue: pulumi.String(\"8\"),\n\t\t\tForce: pulumi.Bool(true),\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.serviceusage.ConsumerQuotaOverride;\nimport com.pulumi.gcp.serviceusage.ConsumerQuotaOverrideArgs;\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 .name(\"tf-test-project\")\n .projectId(\"quota\")\n .orgId(\"123456789\")\n .build());\n\n var override = new ConsumerQuotaOverride(\"override\", ConsumerQuotaOverrideArgs.builder()\n .dimensions(Map.of(\"region\", \"us-central1\"))\n .project(myProject.projectId())\n .service(\"compute.googleapis.com\")\n .metric(StdFunctions.urlencode(UrlencodeArgs.builder()\n .input(\"compute.googleapis.com/n2_cpus\")\n .build()).result())\n .limit(StdFunctions.urlencode(UrlencodeArgs.builder()\n .input(\"/project/region\")\n .build()).result())\n .overrideValue(\"8\")\n .force(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myProject:\n type: gcp:organizations:Project\n name: my_project\n properties:\n name: tf-test-project\n projectId: quota\n orgId: '123456789'\n override:\n type: gcp:serviceusage:ConsumerQuotaOverride\n properties:\n dimensions:\n region: us-central1\n project: ${myProject.projectId}\n service: compute.googleapis.com\n metric:\n fn::invoke:\n Function: std:urlencode\n Arguments:\n input: compute.googleapis.com/n2_cpus\n Return: result\n limit:\n fn::invoke:\n Function: std:urlencode\n Arguments:\n input: /project/region\n Return: result\n overrideValue: '8'\n force: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Consumer Quota Override Custom Dimension\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst myProject = new gcp.organizations.Project(\"my_project\", {\n name: \"tf-test-project\",\n projectId: \"quota\",\n orgId: \"123456789\",\n});\nconst override = new gcp.serviceusage.ConsumerQuotaOverride(\"override\", {\n project: myProject.projectId,\n service: \"libraryagent.googleapis.com\",\n metric: std.urlencode({\n input: \"libraryagent.googleapis.com/borrows\",\n }).then(invoke =\u003e invoke.result),\n limit: std.urlencode({\n input: \"/author/project\",\n }).then(invoke =\u003e invoke.result),\n overrideValue: \"1\",\n force: true,\n dimensions: {\n author: \"larry\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nmy_project = gcp.organizations.Project(\"my_project\",\n name=\"tf-test-project\",\n project_id=\"quota\",\n org_id=\"123456789\")\noverride = gcp.serviceusage.ConsumerQuotaOverride(\"override\",\n project=my_project.project_id,\n service=\"libraryagent.googleapis.com\",\n metric=std.urlencode(input=\"libraryagent.googleapis.com/borrows\").result,\n limit=std.urlencode(input=\"/author/project\").result,\n override_value=\"1\",\n force=True,\n dimensions={\n \"author\": \"larry\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myProject = new Gcp.Organizations.Project(\"my_project\", new()\n {\n Name = \"tf-test-project\",\n ProjectId = \"quota\",\n OrgId = \"123456789\",\n });\n\n var @override = new Gcp.ServiceUsage.ConsumerQuotaOverride(\"override\", new()\n {\n Project = myProject.ProjectId,\n Service = \"libraryagent.googleapis.com\",\n Metric = Std.Urlencode.Invoke(new()\n {\n Input = \"libraryagent.googleapis.com/borrows\",\n }).Apply(invoke =\u003e invoke.Result),\n Limit = Std.Urlencode.Invoke(new()\n {\n Input = \"/author/project\",\n }).Apply(invoke =\u003e invoke.Result),\n OverrideValue = \"1\",\n Force = true,\n Dimensions = \n {\n { \"author\", \"larry\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceusage\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\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, \"my_project\", \u0026organizations.ProjectArgs{\n\t\t\tName: pulumi.String(\"tf-test-project\"),\n\t\t\tProjectId: pulumi.String(\"quota\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeUrlencode, err := std.Urlencode(ctx, \u0026std.UrlencodeArgs{\n\t\t\tInput: \"libraryagent.googleapis.com/borrows\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeUrlencode1, err := std.Urlencode(ctx, \u0026std.UrlencodeArgs{\n\t\t\tInput: \"/author/project\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceusage.NewConsumerQuotaOverride(ctx, \"override\", \u0026serviceusage.ConsumerQuotaOverrideArgs{\n\t\t\tProject: myProject.ProjectId,\n\t\t\tService: pulumi.String(\"libraryagent.googleapis.com\"),\n\t\t\tMetric: pulumi.String(invokeUrlencode.Result),\n\t\t\tLimit: pulumi.String(invokeUrlencode1.Result),\n\t\t\tOverrideValue: pulumi.String(\"1\"),\n\t\t\tForce: pulumi.Bool(true),\n\t\t\tDimensions: pulumi.StringMap{\n\t\t\t\t\"author\": pulumi.String(\"larry\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.serviceusage.ConsumerQuotaOverride;\nimport com.pulumi.gcp.serviceusage.ConsumerQuotaOverrideArgs;\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 .name(\"tf-test-project\")\n .projectId(\"quota\")\n .orgId(\"123456789\")\n .build());\n\n var override = new ConsumerQuotaOverride(\"override\", ConsumerQuotaOverrideArgs.builder()\n .project(myProject.projectId())\n .service(\"libraryagent.googleapis.com\")\n .metric(StdFunctions.urlencode(UrlencodeArgs.builder()\n .input(\"libraryagent.googleapis.com/borrows\")\n .build()).result())\n .limit(StdFunctions.urlencode(UrlencodeArgs.builder()\n .input(\"/author/project\")\n .build()).result())\n .overrideValue(\"1\")\n .force(true)\n .dimensions(Map.of(\"author\", \"larry\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myProject:\n type: gcp:organizations:Project\n name: my_project\n properties:\n name: tf-test-project\n projectId: quota\n orgId: '123456789'\n override:\n type: gcp:serviceusage:ConsumerQuotaOverride\n properties:\n project: ${myProject.projectId}\n service: libraryagent.googleapis.com\n metric:\n fn::invoke:\n Function: std:urlencode\n Arguments:\n input: libraryagent.googleapis.com/borrows\n Return: result\n limit:\n fn::invoke:\n Function: std:urlencode\n Arguments:\n input: /author/project\n Return: result\n overrideValue: '1'\n force: true\n dimensions:\n author: larry\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConsumerQuotaOverride can be imported using any of these accepted formats:\n\n* `projects/{{project}}/services/{{service}}/consumerQuotaMetrics/{{metric}}/limits/{{limit}}/consumerOverrides/{{name}}`\n\n* `services/{{service}}/consumerQuotaMetrics/{{metric}}/limits/{{limit}}/consumerOverrides/{{name}}`\n\n* `{{service}}/{{metric}}/{{limit}}/{{name}}`\n\nWhen using the `pulumi import` command, ConsumerQuotaOverride can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:serviceusage/consumerQuotaOverride:ConsumerQuotaOverride default projects/{{project}}/services/{{service}}/consumerQuotaMetrics/{{metric}}/limits/{{limit}}/consumerOverrides/{{name}}\n```\n\n```sh\n$ pulumi import gcp:serviceusage/consumerQuotaOverride:ConsumerQuotaOverride default services/{{service}}/consumerQuotaMetrics/{{metric}}/limits/{{limit}}/consumerOverrides/{{name}}\n```\n\n```sh\n$ pulumi import gcp:serviceusage/consumerQuotaOverride:ConsumerQuotaOverride default {{service}}/{{metric}}/{{limit}}/{{name}}\n```\n\n", "properties": { "dimensions": { "type": "object", @@ -236811,7 +236811,7 @@ } }, "gcp:sourcerepo/repository:Repository": { - "description": "A repository (or repo) is a Git repository storing versioned source content.\n\n\nTo get more information about Repository, see:\n\n* [API documentation](https://cloud.google.com/source-repositories/docs/reference/rest/v1/projects.repos)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/source-repositories/)\n\n## Example Usage\n\n### Sourcerepo Repository Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.sourcerepo.Repository(\"my-repo\", {name: \"my/repository\"});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.sourcerepo.Repository(\"my-repo\", name=\"my/repository\")\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_repo = new Gcp.SourceRepo.Repository(\"my-repo\", new()\n {\n Name = \"my/repository\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sourcerepo\"\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 := sourcerepo.NewRepository(ctx, \"my-repo\", \u0026sourcerepo.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my/repository\"),\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.sourcerepo.Repository;\nimport com.pulumi.gcp.sourcerepo.RepositoryArgs;\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_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .name(\"my/repository\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:sourcerepo:Repository\n properties:\n name: my/repository\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Sourcerepo Repository Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testAccount = new gcp.serviceaccount.Account(\"test_account\", {\n accountId: \"my-account\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"my-topic\"});\nconst my_repo = new gcp.sourcerepo.Repository(\"my-repo\", {\n name: \"my-repository\",\n pubsubConfigs: [{\n topic: topic.id,\n messageFormat: \"JSON\",\n serviceAccountEmail: testAccount.email,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_account = gcp.serviceaccount.Account(\"test_account\",\n account_id=\"my-account\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"my-topic\")\nmy_repo = gcp.sourcerepo.Repository(\"my-repo\",\n name=\"my-repository\",\n pubsub_configs=[{\n \"topic\": topic.id,\n \"messageFormat\": \"JSON\",\n \"serviceAccountEmail\": test_account.email,\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 testAccount = new Gcp.ServiceAccount.Account(\"test_account\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"my-topic\",\n });\n\n var my_repo = new Gcp.SourceRepo.Repository(\"my-repo\", new()\n {\n Name = \"my-repository\",\n PubsubConfigs = new[]\n {\n new Gcp.SourceRepo.Inputs.RepositoryPubsubConfigArgs\n {\n Topic = topic.Id,\n MessageFormat = \"JSON\",\n ServiceAccountEmail = testAccount.Email,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sourcerepo\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestAccount, err := serviceaccount.NewAccount(ctx, \"test_account\", \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\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sourcerepo.NewRepository(ctx, \"my-repo\", \u0026sourcerepo.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my-repository\"),\n\t\t\tPubsubConfigs: sourcerepo.RepositoryPubsubConfigArray{\n\t\t\t\t\u0026sourcerepo.RepositoryPubsubConfigArgs{\n\t\t\t\t\tTopic: topic.ID(),\n\t\t\t\t\tMessageFormat: pulumi.String(\"JSON\"),\n\t\t\t\t\tServiceAccountEmail: testAccount.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\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.sourcerepo.Repository;\nimport com.pulumi.gcp.sourcerepo.RepositoryArgs;\nimport com.pulumi.gcp.sourcerepo.inputs.RepositoryPubsubConfigArgs;\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 testAccount = new Account(\"testAccount\", AccountArgs.builder()\n .accountId(\"my-account\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"my-topic\")\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .name(\"my-repository\")\n .pubsubConfigs(RepositoryPubsubConfigArgs.builder()\n .topic(topic.id())\n .messageFormat(\"JSON\")\n .serviceAccountEmail(testAccount.email())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testAccount:\n type: gcp:serviceaccount:Account\n name: test_account\n properties:\n accountId: my-account\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: my-topic\n my-repo:\n type: gcp:sourcerepo:Repository\n properties:\n name: my-repository\n pubsubConfigs:\n - topic: ${topic.id}\n messageFormat: JSON\n serviceAccountEmail: ${testAccount.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/repos/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:sourcerepo/repository:Repository default projects/{{project}}/repos/{{name}}\n```\n\n```sh\n$ pulumi import gcp:sourcerepo/repository:Repository default {{name}}\n```\n\n", + "description": "A repository (or repo) is a Git repository storing versioned source content.\n\n\nTo get more information about Repository, see:\n\n* [API documentation](https://cloud.google.com/source-repositories/docs/reference/rest/v1/projects.repos)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/source-repositories/)\n\n## Example Usage\n\n### Sourcerepo Repository Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.sourcerepo.Repository(\"my-repo\", {name: \"my/repository\"});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.sourcerepo.Repository(\"my-repo\", name=\"my/repository\")\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_repo = new Gcp.SourceRepo.Repository(\"my-repo\", new()\n {\n Name = \"my/repository\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sourcerepo\"\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 := sourcerepo.NewRepository(ctx, \"my-repo\", \u0026sourcerepo.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my/repository\"),\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.sourcerepo.Repository;\nimport com.pulumi.gcp.sourcerepo.RepositoryArgs;\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_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .name(\"my/repository\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:sourcerepo:Repository\n properties:\n name: my/repository\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Sourcerepo Repository Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testAccount = new gcp.serviceaccount.Account(\"test_account\", {\n accountId: \"my-account\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"my-topic\"});\nconst my_repo = new gcp.sourcerepo.Repository(\"my-repo\", {\n name: \"my-repository\",\n pubsubConfigs: [{\n topic: topic.id,\n messageFormat: \"JSON\",\n serviceAccountEmail: testAccount.email,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_account = gcp.serviceaccount.Account(\"test_account\",\n account_id=\"my-account\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"my-topic\")\nmy_repo = gcp.sourcerepo.Repository(\"my-repo\",\n name=\"my-repository\",\n pubsub_configs=[{\n \"topic\": topic.id,\n \"message_format\": \"JSON\",\n \"service_account_email\": test_account.email,\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 testAccount = new Gcp.ServiceAccount.Account(\"test_account\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"my-topic\",\n });\n\n var my_repo = new Gcp.SourceRepo.Repository(\"my-repo\", new()\n {\n Name = \"my-repository\",\n PubsubConfigs = new[]\n {\n new Gcp.SourceRepo.Inputs.RepositoryPubsubConfigArgs\n {\n Topic = topic.Id,\n MessageFormat = \"JSON\",\n ServiceAccountEmail = testAccount.Email,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sourcerepo\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestAccount, err := serviceaccount.NewAccount(ctx, \"test_account\", \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\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sourcerepo.NewRepository(ctx, \"my-repo\", \u0026sourcerepo.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my-repository\"),\n\t\t\tPubsubConfigs: sourcerepo.RepositoryPubsubConfigArray{\n\t\t\t\t\u0026sourcerepo.RepositoryPubsubConfigArgs{\n\t\t\t\t\tTopic: topic.ID(),\n\t\t\t\t\tMessageFormat: pulumi.String(\"JSON\"),\n\t\t\t\t\tServiceAccountEmail: testAccount.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\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.sourcerepo.Repository;\nimport com.pulumi.gcp.sourcerepo.RepositoryArgs;\nimport com.pulumi.gcp.sourcerepo.inputs.RepositoryPubsubConfigArgs;\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 testAccount = new Account(\"testAccount\", AccountArgs.builder()\n .accountId(\"my-account\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"my-topic\")\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .name(\"my-repository\")\n .pubsubConfigs(RepositoryPubsubConfigArgs.builder()\n .topic(topic.id())\n .messageFormat(\"JSON\")\n .serviceAccountEmail(testAccount.email())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testAccount:\n type: gcp:serviceaccount:Account\n name: test_account\n properties:\n accountId: my-account\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: my-topic\n my-repo:\n type: gcp:sourcerepo:Repository\n properties:\n name: my-repository\n pubsubConfigs:\n - topic: ${topic.id}\n messageFormat: JSON\n serviceAccountEmail: ${testAccount.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/repos/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:sourcerepo/repository:Repository default projects/{{project}}/repos/{{name}}\n```\n\n```sh\n$ pulumi import gcp:sourcerepo/repository:Repository default {{name}}\n```\n\n", "properties": { "name": { "type": "string", @@ -237661,7 +237661,7 @@ } }, "gcp:spanner/instance:Instance": { - "description": "An isolated set of Cloud Spanner resources on which databases can be\nhosted.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/spanner/)\n\n## Example Usage\n\n### Spanner Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.spanner.Instance(\"example\", {\n config: \"regional-us-central1\",\n displayName: \"Test Spanner Instance\",\n numNodes: 2,\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.spanner.Instance(\"example\",\n config=\"regional-us-central1\",\n display_name=\"Test Spanner Instance\",\n num_nodes=2,\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 = new Gcp.Spanner.Instance(\"example\", new()\n {\n Config = \"regional-us-central1\",\n DisplayName = \"Test Spanner Instance\",\n NumNodes = 2,\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/v7/go/gcp/spanner\"\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 := spanner.NewInstance(ctx, \"example\", \u0026spanner.InstanceArgs{\n\t\t\tConfig: pulumi.String(\"regional-us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Test Spanner Instance\"),\n\t\t\tNumNodes: pulumi.Int(2),\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.spanner.Instance;\nimport com.pulumi.gcp.spanner.InstanceArgs;\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 Instance(\"example\", InstanceArgs.builder()\n .config(\"regional-us-central1\")\n .displayName(\"Test Spanner Instance\")\n .numNodes(2)\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:spanner:Instance\n properties:\n config: regional-us-central1\n displayName: Test Spanner Instance\n numNodes: 2\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Spanner Instance Processing Units\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.spanner.Instance(\"example\", {\n config: \"regional-us-central1\",\n displayName: \"Test Spanner Instance\",\n processingUnits: 200,\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.spanner.Instance(\"example\",\n config=\"regional-us-central1\",\n display_name=\"Test Spanner Instance\",\n processing_units=200,\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 = new Gcp.Spanner.Instance(\"example\", new()\n {\n Config = \"regional-us-central1\",\n DisplayName = \"Test Spanner Instance\",\n ProcessingUnits = 200,\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/v7/go/gcp/spanner\"\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 := spanner.NewInstance(ctx, \"example\", \u0026spanner.InstanceArgs{\n\t\t\tConfig: pulumi.String(\"regional-us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Test Spanner Instance\"),\n\t\t\tProcessingUnits: pulumi.Int(200),\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.spanner.Instance;\nimport com.pulumi.gcp.spanner.InstanceArgs;\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 Instance(\"example\", InstanceArgs.builder()\n .config(\"regional-us-central1\")\n .displayName(\"Test Spanner Instance\")\n .processingUnits(200)\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:spanner:Instance\n properties:\n config: regional-us-central1\n displayName: Test Spanner Instance\n processingUnits: 200\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Spanner Instance With Autoscaling\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.spanner.Instance(\"example\", {\n config: \"regional-us-central1\",\n displayName: \"Test Spanner Instance\",\n autoscalingConfig: {\n autoscalingLimits: {\n maxProcessingUnits: 3000,\n minProcessingUnits: 2000,\n },\n autoscalingTargets: {\n highPriorityCpuUtilizationPercent: 75,\n storageUtilizationPercent: 90,\n },\n },\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.spanner.Instance(\"example\",\n config=\"regional-us-central1\",\n display_name=\"Test Spanner Instance\",\n autoscaling_config={\n \"autoscalingLimits\": {\n \"maxProcessingUnits\": 3000,\n \"minProcessingUnits\": 2000,\n },\n \"autoscalingTargets\": {\n \"highPriorityCpuUtilizationPercent\": 75,\n \"storageUtilizationPercent\": 90,\n },\n },\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 = new Gcp.Spanner.Instance(\"example\", new()\n {\n Config = \"regional-us-central1\",\n DisplayName = \"Test Spanner Instance\",\n AutoscalingConfig = new Gcp.Spanner.Inputs.InstanceAutoscalingConfigArgs\n {\n AutoscalingLimits = new Gcp.Spanner.Inputs.InstanceAutoscalingConfigAutoscalingLimitsArgs\n {\n MaxProcessingUnits = 3000,\n MinProcessingUnits = 2000,\n },\n AutoscalingTargets = new Gcp.Spanner.Inputs.InstanceAutoscalingConfigAutoscalingTargetsArgs\n {\n HighPriorityCpuUtilizationPercent = 75,\n StorageUtilizationPercent = 90,\n },\n },\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/v7/go/gcp/spanner\"\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 := spanner.NewInstance(ctx, \"example\", \u0026spanner.InstanceArgs{\n\t\t\tConfig: pulumi.String(\"regional-us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Test Spanner Instance\"),\n\t\t\tAutoscalingConfig: \u0026spanner.InstanceAutoscalingConfigArgs{\n\t\t\t\tAutoscalingLimits: \u0026spanner.InstanceAutoscalingConfigAutoscalingLimitsArgs{\n\t\t\t\t\tMaxProcessingUnits: pulumi.Int(3000),\n\t\t\t\t\tMinProcessingUnits: pulumi.Int(2000),\n\t\t\t\t},\n\t\t\t\tAutoscalingTargets: \u0026spanner.InstanceAutoscalingConfigAutoscalingTargetsArgs{\n\t\t\t\t\tHighPriorityCpuUtilizationPercent: pulumi.Int(75),\n\t\t\t\t\tStorageUtilizationPercent: pulumi.Int(90),\n\t\t\t\t},\n\t\t\t},\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.spanner.Instance;\nimport com.pulumi.gcp.spanner.InstanceArgs;\nimport com.pulumi.gcp.spanner.inputs.InstanceAutoscalingConfigArgs;\nimport com.pulumi.gcp.spanner.inputs.InstanceAutoscalingConfigAutoscalingLimitsArgs;\nimport com.pulumi.gcp.spanner.inputs.InstanceAutoscalingConfigAutoscalingTargetsArgs;\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 Instance(\"example\", InstanceArgs.builder()\n .config(\"regional-us-central1\")\n .displayName(\"Test Spanner Instance\")\n .autoscalingConfig(InstanceAutoscalingConfigArgs.builder()\n .autoscalingLimits(InstanceAutoscalingConfigAutoscalingLimitsArgs.builder()\n .maxProcessingUnits(3000)\n .minProcessingUnits(2000)\n .build())\n .autoscalingTargets(InstanceAutoscalingConfigAutoscalingTargetsArgs.builder()\n .highPriorityCpuUtilizationPercent(75)\n .storageUtilizationPercent(90)\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:spanner:Instance\n properties:\n config: regional-us-central1\n displayName: Test Spanner Instance\n autoscalingConfig:\n autoscalingLimits:\n maxProcessingUnits: 3000\n minProcessingUnits: 2000\n autoscalingTargets:\n highPriorityCpuUtilizationPercent: 75\n storageUtilizationPercent: 90\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Spanner Instance Multi Regional\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.spanner.Instance(\"example\", {\n config: \"nam-eur-asia1\",\n displayName: \"Multi Regional Instance\",\n numNodes: 2,\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.spanner.Instance(\"example\",\n config=\"nam-eur-asia1\",\n display_name=\"Multi Regional Instance\",\n num_nodes=2,\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 = new Gcp.Spanner.Instance(\"example\", new()\n {\n Config = \"nam-eur-asia1\",\n DisplayName = \"Multi Regional Instance\",\n NumNodes = 2,\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/v7/go/gcp/spanner\"\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 := spanner.NewInstance(ctx, \"example\", \u0026spanner.InstanceArgs{\n\t\t\tConfig: pulumi.String(\"nam-eur-asia1\"),\n\t\t\tDisplayName: pulumi.String(\"Multi Regional Instance\"),\n\t\t\tNumNodes: pulumi.Int(2),\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.spanner.Instance;\nimport com.pulumi.gcp.spanner.InstanceArgs;\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 Instance(\"example\", InstanceArgs.builder()\n .config(\"nam-eur-asia1\")\n .displayName(\"Multi Regional Instance\")\n .numNodes(2)\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:spanner:Instance\n properties:\n config: nam-eur-asia1\n displayName: Multi Regional Instance\n numNodes: 2\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/instances/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:spanner/instance:Instance default projects/{{project}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:spanner/instance:Instance default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:spanner/instance:Instance default {{name}}\n```\n\n", + "description": "An isolated set of Cloud Spanner resources on which databases can be\nhosted.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/spanner/)\n\n## Example Usage\n\n### Spanner Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.spanner.Instance(\"example\", {\n config: \"regional-us-central1\",\n displayName: \"Test Spanner Instance\",\n numNodes: 2,\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.spanner.Instance(\"example\",\n config=\"regional-us-central1\",\n display_name=\"Test Spanner Instance\",\n num_nodes=2,\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 = new Gcp.Spanner.Instance(\"example\", new()\n {\n Config = \"regional-us-central1\",\n DisplayName = \"Test Spanner Instance\",\n NumNodes = 2,\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/v7/go/gcp/spanner\"\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 := spanner.NewInstance(ctx, \"example\", \u0026spanner.InstanceArgs{\n\t\t\tConfig: pulumi.String(\"regional-us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Test Spanner Instance\"),\n\t\t\tNumNodes: pulumi.Int(2),\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.spanner.Instance;\nimport com.pulumi.gcp.spanner.InstanceArgs;\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 Instance(\"example\", InstanceArgs.builder()\n .config(\"regional-us-central1\")\n .displayName(\"Test Spanner Instance\")\n .numNodes(2)\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:spanner:Instance\n properties:\n config: regional-us-central1\n displayName: Test Spanner Instance\n numNodes: 2\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Spanner Instance Processing Units\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.spanner.Instance(\"example\", {\n config: \"regional-us-central1\",\n displayName: \"Test Spanner Instance\",\n processingUnits: 200,\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.spanner.Instance(\"example\",\n config=\"regional-us-central1\",\n display_name=\"Test Spanner Instance\",\n processing_units=200,\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 = new Gcp.Spanner.Instance(\"example\", new()\n {\n Config = \"regional-us-central1\",\n DisplayName = \"Test Spanner Instance\",\n ProcessingUnits = 200,\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/v7/go/gcp/spanner\"\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 := spanner.NewInstance(ctx, \"example\", \u0026spanner.InstanceArgs{\n\t\t\tConfig: pulumi.String(\"regional-us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Test Spanner Instance\"),\n\t\t\tProcessingUnits: pulumi.Int(200),\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.spanner.Instance;\nimport com.pulumi.gcp.spanner.InstanceArgs;\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 Instance(\"example\", InstanceArgs.builder()\n .config(\"regional-us-central1\")\n .displayName(\"Test Spanner Instance\")\n .processingUnits(200)\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:spanner:Instance\n properties:\n config: regional-us-central1\n displayName: Test Spanner Instance\n processingUnits: 200\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Spanner Instance With Autoscaling\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.spanner.Instance(\"example\", {\n config: \"regional-us-central1\",\n displayName: \"Test Spanner Instance\",\n autoscalingConfig: {\n autoscalingLimits: {\n maxProcessingUnits: 3000,\n minProcessingUnits: 2000,\n },\n autoscalingTargets: {\n highPriorityCpuUtilizationPercent: 75,\n storageUtilizationPercent: 90,\n },\n },\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.spanner.Instance(\"example\",\n config=\"regional-us-central1\",\n display_name=\"Test Spanner Instance\",\n autoscaling_config={\n \"autoscaling_limits\": {\n \"max_processing_units\": 3000,\n \"min_processing_units\": 2000,\n },\n \"autoscaling_targets\": {\n \"high_priority_cpu_utilization_percent\": 75,\n \"storage_utilization_percent\": 90,\n },\n },\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 = new Gcp.Spanner.Instance(\"example\", new()\n {\n Config = \"regional-us-central1\",\n DisplayName = \"Test Spanner Instance\",\n AutoscalingConfig = new Gcp.Spanner.Inputs.InstanceAutoscalingConfigArgs\n {\n AutoscalingLimits = new Gcp.Spanner.Inputs.InstanceAutoscalingConfigAutoscalingLimitsArgs\n {\n MaxProcessingUnits = 3000,\n MinProcessingUnits = 2000,\n },\n AutoscalingTargets = new Gcp.Spanner.Inputs.InstanceAutoscalingConfigAutoscalingTargetsArgs\n {\n HighPriorityCpuUtilizationPercent = 75,\n StorageUtilizationPercent = 90,\n },\n },\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/v7/go/gcp/spanner\"\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 := spanner.NewInstance(ctx, \"example\", \u0026spanner.InstanceArgs{\n\t\t\tConfig: pulumi.String(\"regional-us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Test Spanner Instance\"),\n\t\t\tAutoscalingConfig: \u0026spanner.InstanceAutoscalingConfigArgs{\n\t\t\t\tAutoscalingLimits: \u0026spanner.InstanceAutoscalingConfigAutoscalingLimitsArgs{\n\t\t\t\t\tMaxProcessingUnits: pulumi.Int(3000),\n\t\t\t\t\tMinProcessingUnits: pulumi.Int(2000),\n\t\t\t\t},\n\t\t\t\tAutoscalingTargets: \u0026spanner.InstanceAutoscalingConfigAutoscalingTargetsArgs{\n\t\t\t\t\tHighPriorityCpuUtilizationPercent: pulumi.Int(75),\n\t\t\t\t\tStorageUtilizationPercent: pulumi.Int(90),\n\t\t\t\t},\n\t\t\t},\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.spanner.Instance;\nimport com.pulumi.gcp.spanner.InstanceArgs;\nimport com.pulumi.gcp.spanner.inputs.InstanceAutoscalingConfigArgs;\nimport com.pulumi.gcp.spanner.inputs.InstanceAutoscalingConfigAutoscalingLimitsArgs;\nimport com.pulumi.gcp.spanner.inputs.InstanceAutoscalingConfigAutoscalingTargetsArgs;\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 Instance(\"example\", InstanceArgs.builder()\n .config(\"regional-us-central1\")\n .displayName(\"Test Spanner Instance\")\n .autoscalingConfig(InstanceAutoscalingConfigArgs.builder()\n .autoscalingLimits(InstanceAutoscalingConfigAutoscalingLimitsArgs.builder()\n .maxProcessingUnits(3000)\n .minProcessingUnits(2000)\n .build())\n .autoscalingTargets(InstanceAutoscalingConfigAutoscalingTargetsArgs.builder()\n .highPriorityCpuUtilizationPercent(75)\n .storageUtilizationPercent(90)\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:spanner:Instance\n properties:\n config: regional-us-central1\n displayName: Test Spanner Instance\n autoscalingConfig:\n autoscalingLimits:\n maxProcessingUnits: 3000\n minProcessingUnits: 2000\n autoscalingTargets:\n highPriorityCpuUtilizationPercent: 75\n storageUtilizationPercent: 90\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Spanner Instance Multi Regional\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.spanner.Instance(\"example\", {\n config: \"nam-eur-asia1\",\n displayName: \"Multi Regional Instance\",\n numNodes: 2,\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.spanner.Instance(\"example\",\n config=\"nam-eur-asia1\",\n display_name=\"Multi Regional Instance\",\n num_nodes=2,\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 = new Gcp.Spanner.Instance(\"example\", new()\n {\n Config = \"nam-eur-asia1\",\n DisplayName = \"Multi Regional Instance\",\n NumNodes = 2,\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/v7/go/gcp/spanner\"\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 := spanner.NewInstance(ctx, \"example\", \u0026spanner.InstanceArgs{\n\t\t\tConfig: pulumi.String(\"nam-eur-asia1\"),\n\t\t\tDisplayName: pulumi.String(\"Multi Regional Instance\"),\n\t\t\tNumNodes: pulumi.Int(2),\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.spanner.Instance;\nimport com.pulumi.gcp.spanner.InstanceArgs;\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 Instance(\"example\", InstanceArgs.builder()\n .config(\"nam-eur-asia1\")\n .displayName(\"Multi Regional Instance\")\n .numNodes(2)\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:spanner:Instance\n properties:\n config: nam-eur-asia1\n displayName: Multi Regional Instance\n numNodes: 2\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/instances/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:spanner/instance:Instance default projects/{{project}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:spanner/instance:Instance default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:spanner/instance:Instance default {{name}}\n```\n\n", "properties": { "autoscalingConfig": { "$ref": "#/types/gcp:spanner/InstanceAutoscalingConfig:InstanceAutoscalingConfig", @@ -238396,7 +238396,7 @@ } }, "gcp:sql/databaseInstance:DatabaseInstance": { - "description": "Creates a new Google SQL Database Instance. For more information, see the [official documentation](https://cloud.google.com/sql/),\nor the [JSON API](https://cloud.google.com/sql/docs/admin-api/v1beta4/instances).\n\n\u003e **NOTE on `gcp.sql.DatabaseInstance`:** - Second-generation instances include a\ndefault 'root'@'%' user with no password. This user will be deleted by the provider on\ninstance creation. You should use `gcp.sql.User` to define a custom user with\na restricted host and strong password.\n\n\u003e **Note**: On newer versions of the provider, you must explicitly set `deletion_protection=false`\n(and run `pulumi update` to write the field to state) in order to destroy an instance.\nIt is recommended to not set this field (or set it to true) until you're ready to destroy the instance and its databases.\n\n## Example Usage\n\n### SQL Second Generation Instance\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: \"main-instance\",\n databaseVersion: \"POSTGRES_15\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=\"main-instance\",\n database_version=\"POSTGRES_15\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\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 main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = \"main-instance\",\n DatabaseVersion = \"POSTGRES_15\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"main-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\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.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\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 main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(\"main-instance\")\n .databaseVersion(\"POSTGRES_15\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: main-instance\n databaseVersion: POSTGRES_15\n region: us-central1\n settings:\n tier: db-f1-micro\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Private IP Instance\n\u003e **NOTE:** For private IP instance setup, note that the `gcp.sql.DatabaseInstance` does not actually interpolate values from `gcp.servicenetworking.Connection`. You must explicitly add a `depends_on`reference as shown below.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst privateNetwork = new gcp.compute.Network(\"private_network\", {name: \"private-network\"});\nconst privateIpAddress = new gcp.compute.GlobalAddress(\"private_ip_address\", {\n name: \"private-ip-address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: privateNetwork.id,\n});\nconst privateVpcConnection = new gcp.servicenetworking.Connection(\"private_vpc_connection\", {\n network: privateNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAddress.name],\n});\nconst dbNameSuffix = new random.RandomId(\"db_name_suffix\", {byteLength: 4});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: pulumi.interpolate`private-instance-${dbNameSuffix.hex}`,\n region: \"us-central1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n ipConfiguration: {\n ipv4Enabled: false,\n privateNetwork: privateNetwork.id,\n enablePrivatePathForGoogleCloudServices: true,\n },\n },\n}, {\n dependsOn: [privateVpcConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nprivate_network = gcp.compute.Network(\"private_network\", name=\"private-network\")\nprivate_ip_address = gcp.compute.GlobalAddress(\"private_ip_address\",\n name=\"private-ip-address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=private_network.id)\nprivate_vpc_connection = gcp.servicenetworking.Connection(\"private_vpc_connection\",\n network=private_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_address.name])\ndb_name_suffix = random.RandomId(\"db_name_suffix\", byte_length=4)\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=db_name_suffix.hex.apply(lambda hex: f\"private-instance-{hex}\"),\n region=\"us-central1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"ipConfiguration\": {\n \"ipv4Enabled\": False,\n \"privateNetwork\": private_network.id,\n \"enablePrivatePathForGoogleCloudServices\": True,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[private_vpc_connection]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var privateNetwork = new Gcp.Compute.Network(\"private_network\", new()\n {\n Name = \"private-network\",\n });\n\n var privateIpAddress = new Gcp.Compute.GlobalAddress(\"private_ip_address\", new()\n {\n Name = \"private-ip-address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = privateNetwork.Id,\n });\n\n var privateVpcConnection = new Gcp.ServiceNetworking.Connection(\"private_vpc_connection\", new()\n {\n Network = privateNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAddress.Name,\n },\n });\n\n var dbNameSuffix = new Random.RandomId(\"db_name_suffix\", new()\n {\n ByteLength = 4,\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = dbNameSuffix.Hex.Apply(hex =\u003e $\"private-instance-{hex}\"),\n Region = \"us-central1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n Ipv4Enabled = false,\n PrivateNetwork = privateNetwork.Id,\n EnablePrivatePathForGoogleCloudServices = true,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n privateVpcConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprivateNetwork, err := compute.NewNetwork(ctx, \"private_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"private-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAddress, err := compute.NewGlobalAddress(ctx, \"private_ip_address\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"private-ip-address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: privateNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateVpcConnection, err := servicenetworking.NewConnection(ctx, \"private_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: privateNetwork.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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdbNameSuffix, err := random.NewRandomId(ctx, \"db_name_suffix\", \u0026random.RandomIdArgs{\n\t\t\tByteLength: pulumi.Int(4),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: dbNameSuffix.Hex.ApplyT(func(hex string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"private-instance-%v\", hex), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tIpv4Enabled: pulumi.Bool(false),\n\t\t\t\t\tPrivateNetwork: privateNetwork.ID(),\n\t\t\t\t\tEnablePrivatePathForGoogleCloudServices: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprivateVpcConnection,\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.random.RandomId;\nimport com.pulumi.random.RandomIdArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\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 privateNetwork = new Network(\"privateNetwork\", NetworkArgs.builder()\n .name(\"private-network\")\n .build());\n\n var privateIpAddress = new GlobalAddress(\"privateIpAddress\", GlobalAddressArgs.builder()\n .name(\"private-ip-address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(privateNetwork.id())\n .build());\n\n var privateVpcConnection = new Connection(\"privateVpcConnection\", ConnectionArgs.builder()\n .network(privateNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAddress.name())\n .build());\n\n var dbNameSuffix = new RandomId(\"dbNameSuffix\", RandomIdArgs.builder()\n .byteLength(4)\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(dbNameSuffix.hex().applyValue(hex -\u003e String.format(\"private-instance-%s\", hex)))\n .region(\"us-central1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .ipv4Enabled(false)\n .privateNetwork(privateNetwork.id())\n .enablePrivatePathForGoogleCloudServices(true)\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(privateVpcConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n privateNetwork:\n type: gcp:compute:Network\n name: private_network\n properties:\n name: private-network\n privateIpAddress:\n type: gcp:compute:GlobalAddress\n name: private_ip_address\n properties:\n name: private-ip-address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${privateNetwork.id}\n privateVpcConnection:\n type: gcp:servicenetworking:Connection\n name: private_vpc_connection\n properties:\n network: ${privateNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAddress.name}\n dbNameSuffix:\n type: random:RandomId\n name: db_name_suffix\n properties:\n byteLength: 4\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: private-instance-${dbNameSuffix.hex}\n region: us-central1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n ipConfiguration:\n ipv4Enabled: false\n privateNetwork: ${privateNetwork.id}\n enablePrivatePathForGoogleCloudServices: true\n options:\n dependson:\n - ${privateVpcConnection}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### ENTERPRISE_PLUS Instance with data_cache_config\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: \"enterprise-plus-main-instance\",\n databaseVersion: \"MYSQL_8_0_31\",\n settings: {\n tier: \"db-perf-optimized-N-2\",\n edition: \"ENTERPRISE_PLUS\",\n dataCacheConfig: {\n dataCacheEnabled: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=\"enterprise-plus-main-instance\",\n database_version=\"MYSQL_8_0_31\",\n settings={\n \"tier\": \"db-perf-optimized-N-2\",\n \"edition\": \"ENTERPRISE_PLUS\",\n \"dataCacheConfig\": {\n \"dataCacheEnabled\": 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 main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = \"enterprise-plus-main-instance\",\n DatabaseVersion = \"MYSQL_8_0_31\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-perf-optimized-N-2\",\n Edition = \"ENTERPRISE_PLUS\",\n DataCacheConfig = new Gcp.Sql.Inputs.DatabaseInstanceSettingsDataCacheConfigArgs\n {\n DataCacheEnabled = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"enterprise-plus-main-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0_31\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-perf-optimized-N-2\"),\n\t\t\t\tEdition: pulumi.String(\"ENTERPRISE_PLUS\"),\n\t\t\t\tDataCacheConfig: \u0026sql.DatabaseInstanceSettingsDataCacheConfigArgs{\n\t\t\t\t\tDataCacheEnabled: 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.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsDataCacheConfigArgs;\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 main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(\"enterprise-plus-main-instance\")\n .databaseVersion(\"MYSQL_8_0_31\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-perf-optimized-N-2\")\n .edition(\"ENTERPRISE_PLUS\")\n .dataCacheConfig(DatabaseInstanceSettingsDataCacheConfigArgs.builder()\n .dataCacheEnabled(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: enterprise-plus-main-instance\n databaseVersion: MYSQL_8_0_31\n settings:\n tier: db-perf-optimized-N-2\n edition: ENTERPRISE_PLUS\n dataCacheConfig:\n dataCacheEnabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Cloud SQL Instance with PSC connectivity\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: \"psc-enabled-main-instance\",\n databaseVersion: \"MYSQL_8_0\",\n settings: {\n tier: \"db-f1-micro\",\n ipConfiguration: {\n pscConfigs: [{\n pscEnabled: true,\n allowedConsumerProjects: [\"allowed-consumer-project-name\"],\n }],\n ipv4Enabled: false,\n },\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n availabilityType: \"REGIONAL\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=\"psc-enabled-main-instance\",\n database_version=\"MYSQL_8_0\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"ipConfiguration\": {\n \"pscConfigs\": [{\n \"pscEnabled\": True,\n \"allowedConsumerProjects\": [\"allowed-consumer-project-name\"],\n }],\n \"ipv4Enabled\": False,\n },\n \"backupConfiguration\": {\n \"enabled\": True,\n \"binaryLogEnabled\": True,\n },\n \"availabilityType\": \"REGIONAL\",\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 main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = \"psc-enabled-main-instance\",\n DatabaseVersion = \"MYSQL_8_0\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n PscConfigs = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationPscConfigArgs\n {\n PscEnabled = true,\n AllowedConsumerProjects = new[]\n {\n \"allowed-consumer-project-name\",\n },\n },\n },\n Ipv4Enabled = false,\n },\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n AvailabilityType = \"REGIONAL\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"psc-enabled-main-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tPscConfigs: sql.DatabaseInstanceSettingsIpConfigurationPscConfigArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationPscConfigArgs{\n\t\t\t\t\t\t\tPscEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\tAllowedConsumerProjects: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"allowed-consumer-project-name\"),\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\tIpv4Enabled: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tAvailabilityType: pulumi.String(\"REGIONAL\"),\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.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\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 main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(\"psc-enabled-main-instance\")\n .databaseVersion(\"MYSQL_8_0\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .pscConfigs(DatabaseInstanceSettingsIpConfigurationPscConfigArgs.builder()\n .pscEnabled(true)\n .allowedConsumerProjects(\"allowed-consumer-project-name\")\n .build())\n .ipv4Enabled(false)\n .build())\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .availabilityType(\"REGIONAL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: psc-enabled-main-instance\n databaseVersion: MYSQL_8_0\n settings:\n tier: db-f1-micro\n ipConfiguration:\n pscConfigs:\n - pscEnabled: true\n allowedConsumerProjects:\n - allowed-consumer-project-name\n ipv4Enabled: false\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n availabilityType: REGIONAL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase instances can be imported using one of any of these accepted formats:\n\n* `projects/{{project}}/instances/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Database instances can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:sql/databaseInstance:DatabaseInstance default projects/{{project}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:sql/databaseInstance:DatabaseInstance default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:sql/databaseInstance:DatabaseInstance default {{name}}\n```\n\nconfig and set on the server.\n\nWhen importing, double-check that your config has all the fields set that you expect- just seeing\n\nno diff isn't sufficient to know that your config could reproduce the imported resource.\n\n", + "description": "Creates a new Google SQL Database Instance. For more information, see the [official documentation](https://cloud.google.com/sql/),\nor the [JSON API](https://cloud.google.com/sql/docs/admin-api/v1beta4/instances).\n\n\u003e **NOTE on `gcp.sql.DatabaseInstance`:** - Second-generation instances include a\ndefault 'root'@'%' user with no password. This user will be deleted by the provider on\ninstance creation. You should use `gcp.sql.User` to define a custom user with\na restricted host and strong password.\n\n\u003e **Note**: On newer versions of the provider, you must explicitly set `deletion_protection=false`\n(and run `pulumi update` to write the field to state) in order to destroy an instance.\nIt is recommended to not set this field (or set it to true) until you're ready to destroy the instance and its databases.\n\n## Example Usage\n\n### SQL Second Generation Instance\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: \"main-instance\",\n databaseVersion: \"POSTGRES_15\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=\"main-instance\",\n database_version=\"POSTGRES_15\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\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 main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = \"main-instance\",\n DatabaseVersion = \"POSTGRES_15\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"main-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\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.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\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 main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(\"main-instance\")\n .databaseVersion(\"POSTGRES_15\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: main-instance\n databaseVersion: POSTGRES_15\n region: us-central1\n settings:\n tier: db-f1-micro\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Private IP Instance\n\u003e **NOTE:** For private IP instance setup, note that the `gcp.sql.DatabaseInstance` does not actually interpolate values from `gcp.servicenetworking.Connection`. You must explicitly add a `depends_on`reference as shown below.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst privateNetwork = new gcp.compute.Network(\"private_network\", {name: \"private-network\"});\nconst privateIpAddress = new gcp.compute.GlobalAddress(\"private_ip_address\", {\n name: \"private-ip-address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: privateNetwork.id,\n});\nconst privateVpcConnection = new gcp.servicenetworking.Connection(\"private_vpc_connection\", {\n network: privateNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAddress.name],\n});\nconst dbNameSuffix = new random.RandomId(\"db_name_suffix\", {byteLength: 4});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: pulumi.interpolate`private-instance-${dbNameSuffix.hex}`,\n region: \"us-central1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n ipConfiguration: {\n ipv4Enabled: false,\n privateNetwork: privateNetwork.id,\n enablePrivatePathForGoogleCloudServices: true,\n },\n },\n}, {\n dependsOn: [privateVpcConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nprivate_network = gcp.compute.Network(\"private_network\", name=\"private-network\")\nprivate_ip_address = gcp.compute.GlobalAddress(\"private_ip_address\",\n name=\"private-ip-address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=private_network.id)\nprivate_vpc_connection = gcp.servicenetworking.Connection(\"private_vpc_connection\",\n network=private_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_address.name])\ndb_name_suffix = random.RandomId(\"db_name_suffix\", byte_length=4)\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=db_name_suffix.hex.apply(lambda hex: f\"private-instance-{hex}\"),\n region=\"us-central1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"ip_configuration\": {\n \"ipv4_enabled\": False,\n \"private_network\": private_network.id,\n \"enable_private_path_for_google_cloud_services\": True,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[private_vpc_connection]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var privateNetwork = new Gcp.Compute.Network(\"private_network\", new()\n {\n Name = \"private-network\",\n });\n\n var privateIpAddress = new Gcp.Compute.GlobalAddress(\"private_ip_address\", new()\n {\n Name = \"private-ip-address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = privateNetwork.Id,\n });\n\n var privateVpcConnection = new Gcp.ServiceNetworking.Connection(\"private_vpc_connection\", new()\n {\n Network = privateNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAddress.Name,\n },\n });\n\n var dbNameSuffix = new Random.RandomId(\"db_name_suffix\", new()\n {\n ByteLength = 4,\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = dbNameSuffix.Hex.Apply(hex =\u003e $\"private-instance-{hex}\"),\n Region = \"us-central1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n Ipv4Enabled = false,\n PrivateNetwork = privateNetwork.Id,\n EnablePrivatePathForGoogleCloudServices = true,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n privateVpcConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprivateNetwork, err := compute.NewNetwork(ctx, \"private_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"private-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAddress, err := compute.NewGlobalAddress(ctx, \"private_ip_address\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"private-ip-address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: privateNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateVpcConnection, err := servicenetworking.NewConnection(ctx, \"private_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: privateNetwork.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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdbNameSuffix, err := random.NewRandomId(ctx, \"db_name_suffix\", \u0026random.RandomIdArgs{\n\t\t\tByteLength: pulumi.Int(4),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: dbNameSuffix.Hex.ApplyT(func(hex string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"private-instance-%v\", hex), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tIpv4Enabled: pulumi.Bool(false),\n\t\t\t\t\tPrivateNetwork: privateNetwork.ID(),\n\t\t\t\t\tEnablePrivatePathForGoogleCloudServices: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprivateVpcConnection,\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.random.RandomId;\nimport com.pulumi.random.RandomIdArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\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 privateNetwork = new Network(\"privateNetwork\", NetworkArgs.builder()\n .name(\"private-network\")\n .build());\n\n var privateIpAddress = new GlobalAddress(\"privateIpAddress\", GlobalAddressArgs.builder()\n .name(\"private-ip-address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(privateNetwork.id())\n .build());\n\n var privateVpcConnection = new Connection(\"privateVpcConnection\", ConnectionArgs.builder()\n .network(privateNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAddress.name())\n .build());\n\n var dbNameSuffix = new RandomId(\"dbNameSuffix\", RandomIdArgs.builder()\n .byteLength(4)\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(dbNameSuffix.hex().applyValue(hex -\u003e String.format(\"private-instance-%s\", hex)))\n .region(\"us-central1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .ipv4Enabled(false)\n .privateNetwork(privateNetwork.id())\n .enablePrivatePathForGoogleCloudServices(true)\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(privateVpcConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n privateNetwork:\n type: gcp:compute:Network\n name: private_network\n properties:\n name: private-network\n privateIpAddress:\n type: gcp:compute:GlobalAddress\n name: private_ip_address\n properties:\n name: private-ip-address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${privateNetwork.id}\n privateVpcConnection:\n type: gcp:servicenetworking:Connection\n name: private_vpc_connection\n properties:\n network: ${privateNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAddress.name}\n dbNameSuffix:\n type: random:RandomId\n name: db_name_suffix\n properties:\n byteLength: 4\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: private-instance-${dbNameSuffix.hex}\n region: us-central1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n ipConfiguration:\n ipv4Enabled: false\n privateNetwork: ${privateNetwork.id}\n enablePrivatePathForGoogleCloudServices: true\n options:\n dependson:\n - ${privateVpcConnection}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### ENTERPRISE_PLUS Instance with data_cache_config\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: \"enterprise-plus-main-instance\",\n databaseVersion: \"MYSQL_8_0_31\",\n settings: {\n tier: \"db-perf-optimized-N-2\",\n edition: \"ENTERPRISE_PLUS\",\n dataCacheConfig: {\n dataCacheEnabled: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=\"enterprise-plus-main-instance\",\n database_version=\"MYSQL_8_0_31\",\n settings={\n \"tier\": \"db-perf-optimized-N-2\",\n \"edition\": \"ENTERPRISE_PLUS\",\n \"data_cache_config\": {\n \"data_cache_enabled\": 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 main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = \"enterprise-plus-main-instance\",\n DatabaseVersion = \"MYSQL_8_0_31\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-perf-optimized-N-2\",\n Edition = \"ENTERPRISE_PLUS\",\n DataCacheConfig = new Gcp.Sql.Inputs.DatabaseInstanceSettingsDataCacheConfigArgs\n {\n DataCacheEnabled = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"enterprise-plus-main-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0_31\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-perf-optimized-N-2\"),\n\t\t\t\tEdition: pulumi.String(\"ENTERPRISE_PLUS\"),\n\t\t\t\tDataCacheConfig: \u0026sql.DatabaseInstanceSettingsDataCacheConfigArgs{\n\t\t\t\t\tDataCacheEnabled: 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.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsDataCacheConfigArgs;\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 main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(\"enterprise-plus-main-instance\")\n .databaseVersion(\"MYSQL_8_0_31\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-perf-optimized-N-2\")\n .edition(\"ENTERPRISE_PLUS\")\n .dataCacheConfig(DatabaseInstanceSettingsDataCacheConfigArgs.builder()\n .dataCacheEnabled(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: enterprise-plus-main-instance\n databaseVersion: MYSQL_8_0_31\n settings:\n tier: db-perf-optimized-N-2\n edition: ENTERPRISE_PLUS\n dataCacheConfig:\n dataCacheEnabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Cloud SQL Instance with PSC connectivity\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: \"psc-enabled-main-instance\",\n databaseVersion: \"MYSQL_8_0\",\n settings: {\n tier: \"db-f1-micro\",\n ipConfiguration: {\n pscConfigs: [{\n pscEnabled: true,\n allowedConsumerProjects: [\"allowed-consumer-project-name\"],\n }],\n ipv4Enabled: false,\n },\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n availabilityType: \"REGIONAL\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=\"psc-enabled-main-instance\",\n database_version=\"MYSQL_8_0\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"ip_configuration\": {\n \"psc_configs\": [{\n \"psc_enabled\": True,\n \"allowed_consumer_projects\": [\"allowed-consumer-project-name\"],\n }],\n \"ipv4_enabled\": False,\n },\n \"backup_configuration\": {\n \"enabled\": True,\n \"binary_log_enabled\": True,\n },\n \"availability_type\": \"REGIONAL\",\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 main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = \"psc-enabled-main-instance\",\n DatabaseVersion = \"MYSQL_8_0\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n PscConfigs = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationPscConfigArgs\n {\n PscEnabled = true,\n AllowedConsumerProjects = new[]\n {\n \"allowed-consumer-project-name\",\n },\n },\n },\n Ipv4Enabled = false,\n },\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n AvailabilityType = \"REGIONAL\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"psc-enabled-main-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tPscConfigs: sql.DatabaseInstanceSettingsIpConfigurationPscConfigArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationPscConfigArgs{\n\t\t\t\t\t\t\tPscEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\tAllowedConsumerProjects: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"allowed-consumer-project-name\"),\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\tIpv4Enabled: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tAvailabilityType: pulumi.String(\"REGIONAL\"),\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.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\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 main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(\"psc-enabled-main-instance\")\n .databaseVersion(\"MYSQL_8_0\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .pscConfigs(DatabaseInstanceSettingsIpConfigurationPscConfigArgs.builder()\n .pscEnabled(true)\n .allowedConsumerProjects(\"allowed-consumer-project-name\")\n .build())\n .ipv4Enabled(false)\n .build())\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .availabilityType(\"REGIONAL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: psc-enabled-main-instance\n databaseVersion: MYSQL_8_0\n settings:\n tier: db-f1-micro\n ipConfiguration:\n pscConfigs:\n - pscEnabled: true\n allowedConsumerProjects:\n - allowed-consumer-project-name\n ipv4Enabled: false\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n availabilityType: REGIONAL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase instances can be imported using one of any of these accepted formats:\n\n* `projects/{{project}}/instances/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Database instances can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:sql/databaseInstance:DatabaseInstance default projects/{{project}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:sql/databaseInstance:DatabaseInstance default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:sql/databaseInstance:DatabaseInstance default {{name}}\n```\n\nconfig and set on the server.\n\nWhen importing, double-check that your config has all the fields set that you expect- just seeing\n\nno diff isn't sufficient to know that your config could reproduce the imported resource.\n\n", "properties": { "availableMaintenanceVersions": { "type": "array", @@ -239049,7 +239049,7 @@ } }, "gcp:sql/user:User": { - "description": "Creates a new Google SQL User on a Google SQL User Instance. For more information, see the [official documentation](https://cloud.google.com/sql/), or the [JSON API](https://cloud.google.com/sql/docs/admin-api/v1beta4/users).\n\n\n\n## Example Usage\n\nExample creating a SQL User.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst dbNameSuffix = new random.RandomId(\"db_name_suffix\", {byteLength: 4});\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: pulumi.interpolate`main-instance-${dbNameSuffix.hex}`,\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n },\n});\nconst users = new gcp.sql.User(\"users\", {\n name: \"me\",\n instance: main.name,\n host: \"me.com\",\n password: \"changeme\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ndb_name_suffix = random.RandomId(\"db_name_suffix\", byte_length=4)\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=db_name_suffix.hex.apply(lambda hex: f\"main-instance-{hex}\"),\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n })\nusers = gcp.sql.User(\"users\",\n name=\"me\",\n instance=main.name,\n host=\"me.com\",\n password=\"changeme\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dbNameSuffix = new Random.RandomId(\"db_name_suffix\", new()\n {\n ByteLength = 4,\n });\n\n var main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = dbNameSuffix.Hex.Apply(hex =\u003e $\"main-instance-{hex}\"),\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n });\n\n var users = new Gcp.Sql.User(\"users\", new()\n {\n Name = \"me\",\n Instance = main.Name,\n Host = \"me.com\",\n Password = \"changeme\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdbNameSuffix, err := random.NewRandomId(ctx, \"db_name_suffix\", \u0026random.RandomIdArgs{\n\t\t\tByteLength: pulumi.Int(4),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmain, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: dbNameSuffix.Hex.ApplyT(func(hex string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"main-instance-%v\", hex), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewUser(ctx, \"users\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"me\"),\n\t\t\tInstance: main.Name,\n\t\t\tHost: pulumi.String(\"me.com\"),\n\t\t\tPassword: pulumi.String(\"changeme\"),\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.random.RandomId;\nimport com.pulumi.random.RandomIdArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\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 dbNameSuffix = new RandomId(\"dbNameSuffix\", RandomIdArgs.builder()\n .byteLength(4)\n .build());\n\n var main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(dbNameSuffix.hex().applyValue(hex -\u003e String.format(\"main-instance-%s\", hex)))\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .build());\n\n var users = new User(\"users\", UserArgs.builder()\n .name(\"me\")\n .instance(main.name())\n .host(\"me.com\")\n .password(\"changeme\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dbNameSuffix:\n type: random:RandomId\n name: db_name_suffix\n properties:\n byteLength: 4\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: main-instance-${dbNameSuffix.hex}\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n users:\n type: gcp:sql:User\n properties:\n name: me\n instance: ${main.name}\n host: me.com\n password: changeme\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nExample using [Cloud SQL IAM database authentication](https://cloud.google.com/sql/docs/mysql/authentication).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\nimport * as std from \"@pulumi/std\";\n\nconst dbNameSuffix = new random.RandomId(\"db_name_suffix\", {byteLength: 4});\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: pulumi.interpolate`main-instance-${dbNameSuffix.hex}`,\n databaseVersion: \"POSTGRES_15\",\n settings: {\n tier: \"db-f1-micro\",\n databaseFlags: [{\n name: \"cloudsql_iam_authentication\",\n value: \"on\",\n }],\n },\n});\nconst iamUser = new gcp.sql.User(\"iam_user\", {\n name: \"me@example.com\",\n instance: main.name,\n type: \"CLOUD_IAM_USER\",\n});\nconst iamServiceAccountUser = new gcp.sql.User(\"iam_service_account_user\", {\n name: std.trimsuffix({\n input: serviceAccount.email,\n suffix: \".gserviceaccount.com\",\n }).then(invoke =\u003e invoke.result),\n instance: main.name,\n type: \"CLOUD_IAM_SERVICE_ACCOUNT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\nimport pulumi_std as std\n\ndb_name_suffix = random.RandomId(\"db_name_suffix\", byte_length=4)\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=db_name_suffix.hex.apply(lambda hex: f\"main-instance-{hex}\"),\n database_version=\"POSTGRES_15\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"databaseFlags\": [{\n \"name\": \"cloudsql_iam_authentication\",\n \"value\": \"on\",\n }],\n })\niam_user = gcp.sql.User(\"iam_user\",\n name=\"me@example.com\",\n instance=main.name,\n type=\"CLOUD_IAM_USER\")\niam_service_account_user = gcp.sql.User(\"iam_service_account_user\",\n name=std.trimsuffix(input=service_account[\"email\"],\n suffix=\".gserviceaccount.com\").result,\n instance=main.name,\n type=\"CLOUD_IAM_SERVICE_ACCOUNT\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dbNameSuffix = new Random.RandomId(\"db_name_suffix\", new()\n {\n ByteLength = 4,\n });\n\n var main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = dbNameSuffix.Hex.Apply(hex =\u003e $\"main-instance-{hex}\"),\n DatabaseVersion = \"POSTGRES_15\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n DatabaseFlags = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsDatabaseFlagArgs\n {\n Name = \"cloudsql_iam_authentication\",\n Value = \"on\",\n },\n },\n },\n });\n\n var iamUser = new Gcp.Sql.User(\"iam_user\", new()\n {\n Name = \"me@example.com\",\n Instance = main.Name,\n Type = \"CLOUD_IAM_USER\",\n });\n\n var iamServiceAccountUser = new Gcp.Sql.User(\"iam_service_account_user\", new()\n {\n Name = Std.Trimsuffix.Invoke(new()\n {\n Input = serviceAccount.Email,\n Suffix = \".gserviceaccount.com\",\n }).Apply(invoke =\u003e invoke.Result),\n Instance = main.Name,\n Type = \"CLOUD_IAM_SERVICE_ACCOUNT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdbNameSuffix, err := random.NewRandomId(ctx, \"db_name_suffix\", \u0026random.RandomIdArgs{\n\t\t\tByteLength: pulumi.Int(4),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmain, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: dbNameSuffix.Hex.ApplyT(func(hex string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"main-instance-%v\", hex), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tDatabaseFlags: sql.DatabaseInstanceSettingsDatabaseFlagArray{\n\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsDatabaseFlagArgs{\n\t\t\t\t\t\tName: pulumi.String(\"cloudsql_iam_authentication\"),\n\t\t\t\t\t\tValue: pulumi.String(\"on\"),\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 = sql.NewUser(ctx, \"iam_user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"me@example.com\"),\n\t\t\tInstance: main.Name,\n\t\t\tType: pulumi.String(\"CLOUD_IAM_USER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeTrimsuffix, err := std.Trimsuffix(ctx, \u0026std.TrimsuffixArgs{\n\t\t\tInput: serviceAccount.Email,\n\t\t\tSuffix: \".gserviceaccount.com\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewUser(ctx, \"iam_service_account_user\", \u0026sql.UserArgs{\n\t\t\tName: invokeTrimsuffix.Result,\n\t\t\tInstance: main.Name,\n\t\t\tType: pulumi.String(\"CLOUD_IAM_SERVICE_ACCOUNT\"),\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.random.RandomId;\nimport com.pulumi.random.RandomIdArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\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 dbNameSuffix = new RandomId(\"dbNameSuffix\", RandomIdArgs.builder()\n .byteLength(4)\n .build());\n\n var main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(dbNameSuffix.hex().applyValue(hex -\u003e String.format(\"main-instance-%s\", hex)))\n .databaseVersion(\"POSTGRES_15\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .databaseFlags(DatabaseInstanceSettingsDatabaseFlagArgs.builder()\n .name(\"cloudsql_iam_authentication\")\n .value(\"on\")\n .build())\n .build())\n .build());\n\n var iamUser = new User(\"iamUser\", UserArgs.builder()\n .name(\"me@example.com\")\n .instance(main.name())\n .type(\"CLOUD_IAM_USER\")\n .build());\n\n var iamServiceAccountUser = new User(\"iamServiceAccountUser\", UserArgs.builder()\n .name(StdFunctions.trimsuffix(TrimsuffixArgs.builder()\n .input(serviceAccount.email())\n .suffix(\".gserviceaccount.com\")\n .build()).result())\n .instance(main.name())\n .type(\"CLOUD_IAM_SERVICE_ACCOUNT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dbNameSuffix:\n type: random:RandomId\n name: db_name_suffix\n properties:\n byteLength: 4\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: main-instance-${dbNameSuffix.hex}\n databaseVersion: POSTGRES_15\n settings:\n tier: db-f1-micro\n databaseFlags:\n - name: cloudsql_iam_authentication\n value: on\n iamUser:\n type: gcp:sql:User\n name: iam_user\n properties:\n name: me@example.com\n instance: ${main.name}\n type: CLOUD_IAM_USER\n iamServiceAccountUser:\n type: gcp:sql:User\n name: iam_service_account_user\n properties:\n name:\n fn::invoke:\n Function: std:trimsuffix\n Arguments:\n input: ${serviceAccount.email}\n suffix: .gserviceaccount.com\n Return: result\n instance: ${main.name}\n type: CLOUD_IAM_SERVICE_ACCOUNT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nExample using [Cloud SQL IAM Group authentication](https://cloud.google.com/sql/docs/mysql/iam-authentication#iam-group-auth).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst dbNameSuffix = new random.RandomId(\"db_name_suffix\", {byteLength: 4});\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: pulumi.interpolate`main-instance-${dbNameSuffix.hex}`,\n databaseVersion: \"MYSQL_8_0\",\n settings: {\n tier: \"db-f1-micro\",\n databaseFlags: [{\n name: \"cloudsql_iam_authentication\",\n value: \"on\",\n }],\n },\n});\nconst iamGroupUser = new gcp.sql.User(\"iam_group_user\", {\n name: \"iam_group@example.com\",\n instance: main.name,\n type: \"CLOUD_IAM_GROUP\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ndb_name_suffix = random.RandomId(\"db_name_suffix\", byte_length=4)\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=db_name_suffix.hex.apply(lambda hex: f\"main-instance-{hex}\"),\n database_version=\"MYSQL_8_0\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"databaseFlags\": [{\n \"name\": \"cloudsql_iam_authentication\",\n \"value\": \"on\",\n }],\n })\niam_group_user = gcp.sql.User(\"iam_group_user\",\n name=\"iam_group@example.com\",\n instance=main.name,\n type=\"CLOUD_IAM_GROUP\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dbNameSuffix = new Random.RandomId(\"db_name_suffix\", new()\n {\n ByteLength = 4,\n });\n\n var main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = dbNameSuffix.Hex.Apply(hex =\u003e $\"main-instance-{hex}\"),\n DatabaseVersion = \"MYSQL_8_0\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n DatabaseFlags = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsDatabaseFlagArgs\n {\n Name = \"cloudsql_iam_authentication\",\n Value = \"on\",\n },\n },\n },\n });\n\n var iamGroupUser = new Gcp.Sql.User(\"iam_group_user\", new()\n {\n Name = \"iam_group@example.com\",\n Instance = main.Name,\n Type = \"CLOUD_IAM_GROUP\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdbNameSuffix, err := random.NewRandomId(ctx, \"db_name_suffix\", \u0026random.RandomIdArgs{\n\t\t\tByteLength: pulumi.Int(4),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmain, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: dbNameSuffix.Hex.ApplyT(func(hex string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"main-instance-%v\", hex), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tDatabaseFlags: sql.DatabaseInstanceSettingsDatabaseFlagArray{\n\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsDatabaseFlagArgs{\n\t\t\t\t\t\tName: pulumi.String(\"cloudsql_iam_authentication\"),\n\t\t\t\t\t\tValue: pulumi.String(\"on\"),\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 = sql.NewUser(ctx, \"iam_group_user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"iam_group@example.com\"),\n\t\t\tInstance: main.Name,\n\t\t\tType: pulumi.String(\"CLOUD_IAM_GROUP\"),\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.random.RandomId;\nimport com.pulumi.random.RandomIdArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\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 dbNameSuffix = new RandomId(\"dbNameSuffix\", RandomIdArgs.builder()\n .byteLength(4)\n .build());\n\n var main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(dbNameSuffix.hex().applyValue(hex -\u003e String.format(\"main-instance-%s\", hex)))\n .databaseVersion(\"MYSQL_8_0\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .databaseFlags(DatabaseInstanceSettingsDatabaseFlagArgs.builder()\n .name(\"cloudsql_iam_authentication\")\n .value(\"on\")\n .build())\n .build())\n .build());\n\n var iamGroupUser = new User(\"iamGroupUser\", UserArgs.builder()\n .name(\"iam_group@example.com\")\n .instance(main.name())\n .type(\"CLOUD_IAM_GROUP\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dbNameSuffix:\n type: random:RandomId\n name: db_name_suffix\n properties:\n byteLength: 4\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: main-instance-${dbNameSuffix.hex}\n databaseVersion: MYSQL_8_0\n settings:\n tier: db-f1-micro\n databaseFlags:\n - name: cloudsql_iam_authentication\n value: on\n iamGroupUser:\n type: gcp:sql:User\n name: iam_group_user\n properties:\n name: iam_group@example.com\n instance: ${main.name}\n type: CLOUD_IAM_GROUP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSQL users for MySQL databases can be imported using the `project`, `instance`, `host` and `name`, e.g.\n\n* `{{project_id}}/{{instance}}/{{host}}/{{name}}`\n\nSQL users for PostgreSQL databases can be imported using the `project`, `instance` and `name`, e.g.\n\n* `{{project_id}}/{{instance}}/{{name}}`\n\nWhen using the `pulumi import` command, NAME_HERE can be imported using one of the formats above. For example:\n\nMySQL database\n\n```sh\n$ pulumi import gcp:sql/user:User default {{project_id}}/{{instance}}/{{host}}/{{name}}\n```\n\nPostgreSQL database\n\n```sh\n$ pulumi import gcp:sql/user:User default {{project_id}}/{{instance}}/{{name}}\n```\n\n", + "description": "Creates a new Google SQL User on a Google SQL User Instance. For more information, see the [official documentation](https://cloud.google.com/sql/), or the [JSON API](https://cloud.google.com/sql/docs/admin-api/v1beta4/users).\n\n\n\n## Example Usage\n\nExample creating a SQL User.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst dbNameSuffix = new random.RandomId(\"db_name_suffix\", {byteLength: 4});\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: pulumi.interpolate`main-instance-${dbNameSuffix.hex}`,\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n },\n});\nconst users = new gcp.sql.User(\"users\", {\n name: \"me\",\n instance: main.name,\n host: \"me.com\",\n password: \"changeme\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ndb_name_suffix = random.RandomId(\"db_name_suffix\", byte_length=4)\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=db_name_suffix.hex.apply(lambda hex: f\"main-instance-{hex}\"),\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n })\nusers = gcp.sql.User(\"users\",\n name=\"me\",\n instance=main.name,\n host=\"me.com\",\n password=\"changeme\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dbNameSuffix = new Random.RandomId(\"db_name_suffix\", new()\n {\n ByteLength = 4,\n });\n\n var main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = dbNameSuffix.Hex.Apply(hex =\u003e $\"main-instance-{hex}\"),\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n });\n\n var users = new Gcp.Sql.User(\"users\", new()\n {\n Name = \"me\",\n Instance = main.Name,\n Host = \"me.com\",\n Password = \"changeme\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdbNameSuffix, err := random.NewRandomId(ctx, \"db_name_suffix\", \u0026random.RandomIdArgs{\n\t\t\tByteLength: pulumi.Int(4),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmain, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: dbNameSuffix.Hex.ApplyT(func(hex string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"main-instance-%v\", hex), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewUser(ctx, \"users\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"me\"),\n\t\t\tInstance: main.Name,\n\t\t\tHost: pulumi.String(\"me.com\"),\n\t\t\tPassword: pulumi.String(\"changeme\"),\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.random.RandomId;\nimport com.pulumi.random.RandomIdArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\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 dbNameSuffix = new RandomId(\"dbNameSuffix\", RandomIdArgs.builder()\n .byteLength(4)\n .build());\n\n var main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(dbNameSuffix.hex().applyValue(hex -\u003e String.format(\"main-instance-%s\", hex)))\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .build());\n\n var users = new User(\"users\", UserArgs.builder()\n .name(\"me\")\n .instance(main.name())\n .host(\"me.com\")\n .password(\"changeme\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dbNameSuffix:\n type: random:RandomId\n name: db_name_suffix\n properties:\n byteLength: 4\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: main-instance-${dbNameSuffix.hex}\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n users:\n type: gcp:sql:User\n properties:\n name: me\n instance: ${main.name}\n host: me.com\n password: changeme\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nExample using [Cloud SQL IAM database authentication](https://cloud.google.com/sql/docs/mysql/authentication).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\nimport * as std from \"@pulumi/std\";\n\nconst dbNameSuffix = new random.RandomId(\"db_name_suffix\", {byteLength: 4});\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: pulumi.interpolate`main-instance-${dbNameSuffix.hex}`,\n databaseVersion: \"POSTGRES_15\",\n settings: {\n tier: \"db-f1-micro\",\n databaseFlags: [{\n name: \"cloudsql_iam_authentication\",\n value: \"on\",\n }],\n },\n});\nconst iamUser = new gcp.sql.User(\"iam_user\", {\n name: \"me@example.com\",\n instance: main.name,\n type: \"CLOUD_IAM_USER\",\n});\nconst iamServiceAccountUser = new gcp.sql.User(\"iam_service_account_user\", {\n name: std.trimsuffix({\n input: serviceAccount.email,\n suffix: \".gserviceaccount.com\",\n }).then(invoke =\u003e invoke.result),\n instance: main.name,\n type: \"CLOUD_IAM_SERVICE_ACCOUNT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\nimport pulumi_std as std\n\ndb_name_suffix = random.RandomId(\"db_name_suffix\", byte_length=4)\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=db_name_suffix.hex.apply(lambda hex: f\"main-instance-{hex}\"),\n database_version=\"POSTGRES_15\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"database_flags\": [{\n \"name\": \"cloudsql_iam_authentication\",\n \"value\": \"on\",\n }],\n })\niam_user = gcp.sql.User(\"iam_user\",\n name=\"me@example.com\",\n instance=main.name,\n type=\"CLOUD_IAM_USER\")\niam_service_account_user = gcp.sql.User(\"iam_service_account_user\",\n name=std.trimsuffix(input=service_account[\"email\"],\n suffix=\".gserviceaccount.com\").result,\n instance=main.name,\n type=\"CLOUD_IAM_SERVICE_ACCOUNT\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dbNameSuffix = new Random.RandomId(\"db_name_suffix\", new()\n {\n ByteLength = 4,\n });\n\n var main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = dbNameSuffix.Hex.Apply(hex =\u003e $\"main-instance-{hex}\"),\n DatabaseVersion = \"POSTGRES_15\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n DatabaseFlags = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsDatabaseFlagArgs\n {\n Name = \"cloudsql_iam_authentication\",\n Value = \"on\",\n },\n },\n },\n });\n\n var iamUser = new Gcp.Sql.User(\"iam_user\", new()\n {\n Name = \"me@example.com\",\n Instance = main.Name,\n Type = \"CLOUD_IAM_USER\",\n });\n\n var iamServiceAccountUser = new Gcp.Sql.User(\"iam_service_account_user\", new()\n {\n Name = Std.Trimsuffix.Invoke(new()\n {\n Input = serviceAccount.Email,\n Suffix = \".gserviceaccount.com\",\n }).Apply(invoke =\u003e invoke.Result),\n Instance = main.Name,\n Type = \"CLOUD_IAM_SERVICE_ACCOUNT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdbNameSuffix, err := random.NewRandomId(ctx, \"db_name_suffix\", \u0026random.RandomIdArgs{\n\t\t\tByteLength: pulumi.Int(4),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmain, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: dbNameSuffix.Hex.ApplyT(func(hex string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"main-instance-%v\", hex), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tDatabaseFlags: sql.DatabaseInstanceSettingsDatabaseFlagArray{\n\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsDatabaseFlagArgs{\n\t\t\t\t\t\tName: pulumi.String(\"cloudsql_iam_authentication\"),\n\t\t\t\t\t\tValue: pulumi.String(\"on\"),\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 = sql.NewUser(ctx, \"iam_user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"me@example.com\"),\n\t\t\tInstance: main.Name,\n\t\t\tType: pulumi.String(\"CLOUD_IAM_USER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeTrimsuffix, err := std.Trimsuffix(ctx, \u0026std.TrimsuffixArgs{\n\t\t\tInput: serviceAccount.Email,\n\t\t\tSuffix: \".gserviceaccount.com\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewUser(ctx, \"iam_service_account_user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(invokeTrimsuffix.Result),\n\t\t\tInstance: main.Name,\n\t\t\tType: pulumi.String(\"CLOUD_IAM_SERVICE_ACCOUNT\"),\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.random.RandomId;\nimport com.pulumi.random.RandomIdArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\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 dbNameSuffix = new RandomId(\"dbNameSuffix\", RandomIdArgs.builder()\n .byteLength(4)\n .build());\n\n var main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(dbNameSuffix.hex().applyValue(hex -\u003e String.format(\"main-instance-%s\", hex)))\n .databaseVersion(\"POSTGRES_15\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .databaseFlags(DatabaseInstanceSettingsDatabaseFlagArgs.builder()\n .name(\"cloudsql_iam_authentication\")\n .value(\"on\")\n .build())\n .build())\n .build());\n\n var iamUser = new User(\"iamUser\", UserArgs.builder()\n .name(\"me@example.com\")\n .instance(main.name())\n .type(\"CLOUD_IAM_USER\")\n .build());\n\n var iamServiceAccountUser = new User(\"iamServiceAccountUser\", UserArgs.builder()\n .name(StdFunctions.trimsuffix(TrimsuffixArgs.builder()\n .input(serviceAccount.email())\n .suffix(\".gserviceaccount.com\")\n .build()).result())\n .instance(main.name())\n .type(\"CLOUD_IAM_SERVICE_ACCOUNT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dbNameSuffix:\n type: random:RandomId\n name: db_name_suffix\n properties:\n byteLength: 4\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: main-instance-${dbNameSuffix.hex}\n databaseVersion: POSTGRES_15\n settings:\n tier: db-f1-micro\n databaseFlags:\n - name: cloudsql_iam_authentication\n value: on\n iamUser:\n type: gcp:sql:User\n name: iam_user\n properties:\n name: me@example.com\n instance: ${main.name}\n type: CLOUD_IAM_USER\n iamServiceAccountUser:\n type: gcp:sql:User\n name: iam_service_account_user\n properties:\n name:\n fn::invoke:\n Function: std:trimsuffix\n Arguments:\n input: ${serviceAccount.email}\n suffix: .gserviceaccount.com\n Return: result\n instance: ${main.name}\n type: CLOUD_IAM_SERVICE_ACCOUNT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nExample using [Cloud SQL IAM Group authentication](https://cloud.google.com/sql/docs/mysql/iam-authentication#iam-group-auth).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst dbNameSuffix = new random.RandomId(\"db_name_suffix\", {byteLength: 4});\nconst main = new gcp.sql.DatabaseInstance(\"main\", {\n name: pulumi.interpolate`main-instance-${dbNameSuffix.hex}`,\n databaseVersion: \"MYSQL_8_0\",\n settings: {\n tier: \"db-f1-micro\",\n databaseFlags: [{\n name: \"cloudsql_iam_authentication\",\n value: \"on\",\n }],\n },\n});\nconst iamGroupUser = new gcp.sql.User(\"iam_group_user\", {\n name: \"iam_group@example.com\",\n instance: main.name,\n type: \"CLOUD_IAM_GROUP\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ndb_name_suffix = random.RandomId(\"db_name_suffix\", byte_length=4)\nmain = gcp.sql.DatabaseInstance(\"main\",\n name=db_name_suffix.hex.apply(lambda hex: f\"main-instance-{hex}\"),\n database_version=\"MYSQL_8_0\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"database_flags\": [{\n \"name\": \"cloudsql_iam_authentication\",\n \"value\": \"on\",\n }],\n })\niam_group_user = gcp.sql.User(\"iam_group_user\",\n name=\"iam_group@example.com\",\n instance=main.name,\n type=\"CLOUD_IAM_GROUP\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dbNameSuffix = new Random.RandomId(\"db_name_suffix\", new()\n {\n ByteLength = 4,\n });\n\n var main = new Gcp.Sql.DatabaseInstance(\"main\", new()\n {\n Name = dbNameSuffix.Hex.Apply(hex =\u003e $\"main-instance-{hex}\"),\n DatabaseVersion = \"MYSQL_8_0\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n DatabaseFlags = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsDatabaseFlagArgs\n {\n Name = \"cloudsql_iam_authentication\",\n Value = \"on\",\n },\n },\n },\n });\n\n var iamGroupUser = new Gcp.Sql.User(\"iam_group_user\", new()\n {\n Name = \"iam_group@example.com\",\n Instance = main.Name,\n Type = \"CLOUD_IAM_GROUP\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdbNameSuffix, err := random.NewRandomId(ctx, \"db_name_suffix\", \u0026random.RandomIdArgs{\n\t\t\tByteLength: pulumi.Int(4),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmain, err := sql.NewDatabaseInstance(ctx, \"main\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: dbNameSuffix.Hex.ApplyT(func(hex string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"main-instance-%v\", hex), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tDatabaseFlags: sql.DatabaseInstanceSettingsDatabaseFlagArray{\n\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsDatabaseFlagArgs{\n\t\t\t\t\t\tName: pulumi.String(\"cloudsql_iam_authentication\"),\n\t\t\t\t\t\tValue: pulumi.String(\"on\"),\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 = sql.NewUser(ctx, \"iam_group_user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"iam_group@example.com\"),\n\t\t\tInstance: main.Name,\n\t\t\tType: pulumi.String(\"CLOUD_IAM_GROUP\"),\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.random.RandomId;\nimport com.pulumi.random.RandomIdArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\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 dbNameSuffix = new RandomId(\"dbNameSuffix\", RandomIdArgs.builder()\n .byteLength(4)\n .build());\n\n var main = new DatabaseInstance(\"main\", DatabaseInstanceArgs.builder()\n .name(dbNameSuffix.hex().applyValue(hex -\u003e String.format(\"main-instance-%s\", hex)))\n .databaseVersion(\"MYSQL_8_0\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .databaseFlags(DatabaseInstanceSettingsDatabaseFlagArgs.builder()\n .name(\"cloudsql_iam_authentication\")\n .value(\"on\")\n .build())\n .build())\n .build());\n\n var iamGroupUser = new User(\"iamGroupUser\", UserArgs.builder()\n .name(\"iam_group@example.com\")\n .instance(main.name())\n .type(\"CLOUD_IAM_GROUP\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dbNameSuffix:\n type: random:RandomId\n name: db_name_suffix\n properties:\n byteLength: 4\n main:\n type: gcp:sql:DatabaseInstance\n properties:\n name: main-instance-${dbNameSuffix.hex}\n databaseVersion: MYSQL_8_0\n settings:\n tier: db-f1-micro\n databaseFlags:\n - name: cloudsql_iam_authentication\n value: on\n iamGroupUser:\n type: gcp:sql:User\n name: iam_group_user\n properties:\n name: iam_group@example.com\n instance: ${main.name}\n type: CLOUD_IAM_GROUP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSQL users for MySQL databases can be imported using the `project`, `instance`, `host` and `name`, e.g.\n\n* `{{project_id}}/{{instance}}/{{host}}/{{name}}`\n\nSQL users for PostgreSQL databases can be imported using the `project`, `instance` and `name`, e.g.\n\n* `{{project_id}}/{{instance}}/{{name}}`\n\nWhen using the `pulumi import` command, NAME_HERE can be imported using one of the formats above. For example:\n\nMySQL database\n\n```sh\n$ pulumi import gcp:sql/user:User default {{project_id}}/{{instance}}/{{host}}/{{name}}\n```\n\nPostgreSQL database\n\n```sh\n$ pulumi import gcp:sql/user:User default {{project_id}}/{{instance}}/{{name}}\n```\n\n", "properties": { "deletionPolicy": { "type": "string", @@ -239190,7 +239190,7 @@ } }, "gcp:storage/bucket:Bucket": { - "description": "Creates a new bucket in Google cloud storage service (GCS).\nOnce a bucket has been created, its location can't be changed.\n\nFor more information see\n[the official documentation](https://cloud.google.com/storage/docs/overview)\nand\n[API](https://cloud.google.com/storage/docs/json_api/v1/buckets).\n\n**Note**: If the project id is not set on the resource or in the provider block it will be dynamically\ndetermined which will require enabling the compute api.\n\n\n## Example Usage\n\n### Creating A Private Bucket In Standard Storage, In The EU Region. Bucket Configured As Static Website And CORS Configurations\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst static_site = new gcp.storage.Bucket(\"static-site\", {\n name: \"image-store.com\",\n location: \"EU\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n website: {\n mainPageSuffix: \"index.html\",\n notFoundPage: \"404.html\",\n },\n cors: [{\n origins: [\"http://image-store.com\"],\n methods: [\n \"GET\",\n \"HEAD\",\n \"PUT\",\n \"POST\",\n \"DELETE\",\n ],\n responseHeaders: [\"*\"],\n maxAgeSeconds: 3600,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nstatic_site = gcp.storage.Bucket(\"static-site\",\n name=\"image-store.com\",\n location=\"EU\",\n force_destroy=True,\n uniform_bucket_level_access=True,\n website={\n \"mainPageSuffix\": \"index.html\",\n \"notFoundPage\": \"404.html\",\n },\n cors=[{\n \"origins\": [\"http://image-store.com\"],\n \"methods\": [\n \"GET\",\n \"HEAD\",\n \"PUT\",\n \"POST\",\n \"DELETE\",\n ],\n \"responseHeaders\": [\"*\"],\n \"maxAgeSeconds\": 3600,\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 static_site = new Gcp.Storage.Bucket(\"static-site\", new()\n {\n Name = \"image-store.com\",\n Location = \"EU\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n Website = new Gcp.Storage.Inputs.BucketWebsiteArgs\n {\n MainPageSuffix = \"index.html\",\n NotFoundPage = \"404.html\",\n },\n Cors = new[]\n {\n new Gcp.Storage.Inputs.BucketCorArgs\n {\n Origins = new[]\n {\n \"http://image-store.com\",\n },\n Methods = new[]\n {\n \"GET\",\n \"HEAD\",\n \"PUT\",\n \"POST\",\n \"DELETE\",\n },\n ResponseHeaders = new[]\n {\n \"*\",\n },\n MaxAgeSeconds = 3600,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := storage.NewBucket(ctx, \"static-site\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"image-store.com\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t\tWebsite: \u0026storage.BucketWebsiteArgs{\n\t\t\t\tMainPageSuffix: pulumi.String(\"index.html\"),\n\t\t\t\tNotFoundPage: pulumi.String(\"404.html\"),\n\t\t\t},\n\t\t\tCors: storage.BucketCorArray{\n\t\t\t\t\u0026storage.BucketCorArgs{\n\t\t\t\t\tOrigins: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"http://image-store.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tMethods: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\tpulumi.String(\"HEAD\"),\n\t\t\t\t\t\tpulumi.String(\"PUT\"),\n\t\t\t\t\t\tpulumi.String(\"POST\"),\n\t\t\t\t\t\tpulumi.String(\"DELETE\"),\n\t\t\t\t\t},\n\t\t\t\t\tResponseHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t\tMaxAgeSeconds: pulumi.Int(3600),\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.inputs.BucketWebsiteArgs;\nimport com.pulumi.gcp.storage.inputs.BucketCorArgs;\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 static_site = new Bucket(\"static-site\", BucketArgs.builder()\n .name(\"image-store.com\")\n .location(\"EU\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .website(BucketWebsiteArgs.builder()\n .mainPageSuffix(\"index.html\")\n .notFoundPage(\"404.html\")\n .build())\n .cors(BucketCorArgs.builder()\n .origins(\"http://image-store.com\")\n .methods( \n \"GET\",\n \"HEAD\",\n \"PUT\",\n \"POST\",\n \"DELETE\")\n .responseHeaders(\"*\")\n .maxAgeSeconds(3600)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n static-site:\n type: gcp:storage:Bucket\n properties:\n name: image-store.com\n location: EU\n forceDestroy: true\n uniformBucketLevelAccess: true\n website:\n mainPageSuffix: index.html\n notFoundPage: 404.html\n cors:\n - origins:\n - http://image-store.com\n methods:\n - GET\n - HEAD\n - PUT\n - POST\n - DELETE\n responseHeaders:\n - '*'\n maxAgeSeconds: 3600\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Life Cycle Settings For Storage Bucket Objects\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst auto_expire = new gcp.storage.Bucket(\"auto-expire\", {\n name: \"auto-expiring-bucket\",\n location: \"US\",\n forceDestroy: true,\n lifecycleRules: [\n {\n condition: {\n age: 3,\n },\n action: {\n type: \"Delete\",\n },\n },\n {\n condition: {\n age: 1,\n },\n action: {\n type: \"AbortIncompleteMultipartUpload\",\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nauto_expire = gcp.storage.Bucket(\"auto-expire\",\n name=\"auto-expiring-bucket\",\n location=\"US\",\n force_destroy=True,\n lifecycle_rules=[\n {\n \"condition\": {\n \"age\": 3,\n },\n \"action\": {\n \"type\": \"Delete\",\n },\n },\n {\n \"condition\": {\n \"age\": 1,\n },\n \"action\": {\n \"type\": \"AbortIncompleteMultipartUpload\",\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 auto_expire = new Gcp.Storage.Bucket(\"auto-expire\", new()\n {\n Name = \"auto-expiring-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n LifecycleRules = new[]\n {\n new Gcp.Storage.Inputs.BucketLifecycleRuleArgs\n {\n Condition = new Gcp.Storage.Inputs.BucketLifecycleRuleConditionArgs\n {\n Age = 3,\n },\n Action = new Gcp.Storage.Inputs.BucketLifecycleRuleActionArgs\n {\n Type = \"Delete\",\n },\n },\n new Gcp.Storage.Inputs.BucketLifecycleRuleArgs\n {\n Condition = new Gcp.Storage.Inputs.BucketLifecycleRuleConditionArgs\n {\n Age = 1,\n },\n Action = new Gcp.Storage.Inputs.BucketLifecycleRuleActionArgs\n {\n Type = \"AbortIncompleteMultipartUpload\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := storage.NewBucket(ctx, \"auto-expire\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"auto-expiring-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tLifecycleRules: storage.BucketLifecycleRuleArray{\n\t\t\t\t\u0026storage.BucketLifecycleRuleArgs{\n\t\t\t\t\tCondition: \u0026storage.BucketLifecycleRuleConditionArgs{\n\t\t\t\t\t\tAge: pulumi.Int(3),\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026storage.BucketLifecycleRuleActionArgs{\n\t\t\t\t\t\tType: pulumi.String(\"Delete\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026storage.BucketLifecycleRuleArgs{\n\t\t\t\t\tCondition: \u0026storage.BucketLifecycleRuleConditionArgs{\n\t\t\t\t\t\tAge: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026storage.BucketLifecycleRuleActionArgs{\n\t\t\t\t\t\tType: pulumi.String(\"AbortIncompleteMultipartUpload\"),\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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.inputs.BucketLifecycleRuleArgs;\nimport com.pulumi.gcp.storage.inputs.BucketLifecycleRuleConditionArgs;\nimport com.pulumi.gcp.storage.inputs.BucketLifecycleRuleActionArgs;\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 auto_expire = new Bucket(\"auto-expire\", BucketArgs.builder()\n .name(\"auto-expiring-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .lifecycleRules( \n BucketLifecycleRuleArgs.builder()\n .condition(BucketLifecycleRuleConditionArgs.builder()\n .age(3)\n .build())\n .action(BucketLifecycleRuleActionArgs.builder()\n .type(\"Delete\")\n .build())\n .build(),\n BucketLifecycleRuleArgs.builder()\n .condition(BucketLifecycleRuleConditionArgs.builder()\n .age(1)\n .build())\n .action(BucketLifecycleRuleActionArgs.builder()\n .type(\"AbortIncompleteMultipartUpload\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n auto-expire:\n type: gcp:storage:Bucket\n properties:\n name: auto-expiring-bucket\n location: US\n forceDestroy: true\n lifecycleRules:\n - condition:\n age: 3\n action:\n type: Delete\n - condition:\n age: 1\n action:\n type: AbortIncompleteMultipartUpload\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Life Cycle Settings For Storage Bucket Objects With `No_age` Enabled\nWhen creating a life cycle condition that does not also include an `age` field, a default `age` of 0 will be set. Set the `no_age` flag to `true` to prevent this and avoid any potentially unintended interactions.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst no_age_enabled = new gcp.storage.Bucket(\"no-age-enabled\", {\n name: \"no-age-enabled-bucket\",\n location: \"US\",\n forceDestroy: true,\n lifecycleRules: [{\n action: {\n type: \"Delete\",\n },\n condition: {\n daysSinceNoncurrentTime: 3,\n noAge: true,\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nno_age_enabled = gcp.storage.Bucket(\"no-age-enabled\",\n name=\"no-age-enabled-bucket\",\n location=\"US\",\n force_destroy=True,\n lifecycle_rules=[{\n \"action\": {\n \"type\": \"Delete\",\n },\n \"condition\": {\n \"daysSinceNoncurrentTime\": 3,\n \"noAge\": 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 no_age_enabled = new Gcp.Storage.Bucket(\"no-age-enabled\", new()\n {\n Name = \"no-age-enabled-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n LifecycleRules = new[]\n {\n new Gcp.Storage.Inputs.BucketLifecycleRuleArgs\n {\n Action = new Gcp.Storage.Inputs.BucketLifecycleRuleActionArgs\n {\n Type = \"Delete\",\n },\n Condition = new Gcp.Storage.Inputs.BucketLifecycleRuleConditionArgs\n {\n DaysSinceNoncurrentTime = 3,\n NoAge = true,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := storage.NewBucket(ctx, \"no-age-enabled\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"no-age-enabled-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tLifecycleRules: storage.BucketLifecycleRuleArray{\n\t\t\t\t\u0026storage.BucketLifecycleRuleArgs{\n\t\t\t\t\tAction: \u0026storage.BucketLifecycleRuleActionArgs{\n\t\t\t\t\t\tType: pulumi.String(\"Delete\"),\n\t\t\t\t\t},\n\t\t\t\t\tCondition: \u0026storage.BucketLifecycleRuleConditionArgs{\n\t\t\t\t\t\tDaysSinceNoncurrentTime: pulumi.Int(3),\n\t\t\t\t\t\tNoAge: pulumi.Bool(true),\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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.inputs.BucketLifecycleRuleArgs;\nimport com.pulumi.gcp.storage.inputs.BucketLifecycleRuleActionArgs;\nimport com.pulumi.gcp.storage.inputs.BucketLifecycleRuleConditionArgs;\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 no_age_enabled = new Bucket(\"no-age-enabled\", BucketArgs.builder()\n .name(\"no-age-enabled-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .lifecycleRules(BucketLifecycleRuleArgs.builder()\n .action(BucketLifecycleRuleActionArgs.builder()\n .type(\"Delete\")\n .build())\n .condition(BucketLifecycleRuleConditionArgs.builder()\n .daysSinceNoncurrentTime(3)\n .noAge(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n no-age-enabled:\n type: gcp:storage:Bucket\n properties:\n name: no-age-enabled-bucket\n location: US\n forceDestroy: true\n lifecycleRules:\n - action:\n type: Delete\n condition:\n daysSinceNoncurrentTime: 3\n noAge: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Enabling Public Access Prevention\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst auto_expire = new gcp.storage.Bucket(\"auto-expire\", {\n name: \"no-public-access-bucket\",\n location: \"US\",\n forceDestroy: true,\n publicAccessPrevention: \"enforced\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nauto_expire = gcp.storage.Bucket(\"auto-expire\",\n name=\"no-public-access-bucket\",\n location=\"US\",\n force_destroy=True,\n public_access_prevention=\"enforced\")\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 auto_expire = new Gcp.Storage.Bucket(\"auto-expire\", new()\n {\n Name = \"no-public-access-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n PublicAccessPrevention = \"enforced\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := storage.NewBucket(ctx, \"auto-expire\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"no-public-access-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tPublicAccessPrevention: pulumi.String(\"enforced\"),\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 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 auto_expire = new Bucket(\"auto-expire\", BucketArgs.builder()\n .name(\"no-public-access-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .publicAccessPrevention(\"enforced\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n auto-expire:\n type: gcp:storage:Bucket\n properties:\n name: no-public-access-bucket\n location: US\n forceDestroy: true\n publicAccessPrevention: enforced\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nStorage buckets can be imported using the `name` or `project/name`. If the project is not\n\npassed to the import command it will be inferred from the provider block or environment variables.\n\nIf it cannot be inferred it will be queried from the Compute API (this will fail if the API is\n\nnot enabled).\n\n* `{{project_id}}/{{bucket}}`\n\n* `{{bucket}}`\n\nWhen using the `pulumi import` command, Storage buckets can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:storage/bucket:Bucket default {{bucket}}\n```\n\n```sh\n$ pulumi import gcp:storage/bucket:Bucket default {{project_id}}/{{bucket}}\n```\n\n`false` in state. If you've set it to `true` in config, run `pulumi up` to\n\nupdate the value set in state. If you delete this resource before updating the\n\nvalue, objects in the bucket will not be destroyed.\n\n", + "description": "Creates a new bucket in Google cloud storage service (GCS).\nOnce a bucket has been created, its location can't be changed.\n\nFor more information see\n[the official documentation](https://cloud.google.com/storage/docs/overview)\nand\n[API](https://cloud.google.com/storage/docs/json_api/v1/buckets).\n\n**Note**: If the project id is not set on the resource or in the provider block it will be dynamically\ndetermined which will require enabling the compute api.\n\n\n## Example Usage\n\n### Creating A Private Bucket In Standard Storage, In The EU Region. Bucket Configured As Static Website And CORS Configurations\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst static_site = new gcp.storage.Bucket(\"static-site\", {\n name: \"image-store.com\",\n location: \"EU\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n website: {\n mainPageSuffix: \"index.html\",\n notFoundPage: \"404.html\",\n },\n cors: [{\n origins: [\"http://image-store.com\"],\n methods: [\n \"GET\",\n \"HEAD\",\n \"PUT\",\n \"POST\",\n \"DELETE\",\n ],\n responseHeaders: [\"*\"],\n maxAgeSeconds: 3600,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nstatic_site = gcp.storage.Bucket(\"static-site\",\n name=\"image-store.com\",\n location=\"EU\",\n force_destroy=True,\n uniform_bucket_level_access=True,\n website={\n \"main_page_suffix\": \"index.html\",\n \"not_found_page\": \"404.html\",\n },\n cors=[{\n \"origins\": [\"http://image-store.com\"],\n \"methods\": [\n \"GET\",\n \"HEAD\",\n \"PUT\",\n \"POST\",\n \"DELETE\",\n ],\n \"response_headers\": [\"*\"],\n \"max_age_seconds\": 3600,\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 static_site = new Gcp.Storage.Bucket(\"static-site\", new()\n {\n Name = \"image-store.com\",\n Location = \"EU\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n Website = new Gcp.Storage.Inputs.BucketWebsiteArgs\n {\n MainPageSuffix = \"index.html\",\n NotFoundPage = \"404.html\",\n },\n Cors = new[]\n {\n new Gcp.Storage.Inputs.BucketCorArgs\n {\n Origins = new[]\n {\n \"http://image-store.com\",\n },\n Methods = new[]\n {\n \"GET\",\n \"HEAD\",\n \"PUT\",\n \"POST\",\n \"DELETE\",\n },\n ResponseHeaders = new[]\n {\n \"*\",\n },\n MaxAgeSeconds = 3600,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := storage.NewBucket(ctx, \"static-site\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"image-store.com\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t\tWebsite: \u0026storage.BucketWebsiteArgs{\n\t\t\t\tMainPageSuffix: pulumi.String(\"index.html\"),\n\t\t\t\tNotFoundPage: pulumi.String(\"404.html\"),\n\t\t\t},\n\t\t\tCors: storage.BucketCorArray{\n\t\t\t\t\u0026storage.BucketCorArgs{\n\t\t\t\t\tOrigins: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"http://image-store.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tMethods: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\tpulumi.String(\"HEAD\"),\n\t\t\t\t\t\tpulumi.String(\"PUT\"),\n\t\t\t\t\t\tpulumi.String(\"POST\"),\n\t\t\t\t\t\tpulumi.String(\"DELETE\"),\n\t\t\t\t\t},\n\t\t\t\t\tResponseHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t\tMaxAgeSeconds: pulumi.Int(3600),\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.inputs.BucketWebsiteArgs;\nimport com.pulumi.gcp.storage.inputs.BucketCorArgs;\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 static_site = new Bucket(\"static-site\", BucketArgs.builder()\n .name(\"image-store.com\")\n .location(\"EU\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .website(BucketWebsiteArgs.builder()\n .mainPageSuffix(\"index.html\")\n .notFoundPage(\"404.html\")\n .build())\n .cors(BucketCorArgs.builder()\n .origins(\"http://image-store.com\")\n .methods( \n \"GET\",\n \"HEAD\",\n \"PUT\",\n \"POST\",\n \"DELETE\")\n .responseHeaders(\"*\")\n .maxAgeSeconds(3600)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n static-site:\n type: gcp:storage:Bucket\n properties:\n name: image-store.com\n location: EU\n forceDestroy: true\n uniformBucketLevelAccess: true\n website:\n mainPageSuffix: index.html\n notFoundPage: 404.html\n cors:\n - origins:\n - http://image-store.com\n methods:\n - GET\n - HEAD\n - PUT\n - POST\n - DELETE\n responseHeaders:\n - '*'\n maxAgeSeconds: 3600\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Life Cycle Settings For Storage Bucket Objects\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst auto_expire = new gcp.storage.Bucket(\"auto-expire\", {\n name: \"auto-expiring-bucket\",\n location: \"US\",\n forceDestroy: true,\n lifecycleRules: [\n {\n condition: {\n age: 3,\n },\n action: {\n type: \"Delete\",\n },\n },\n {\n condition: {\n age: 1,\n },\n action: {\n type: \"AbortIncompleteMultipartUpload\",\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nauto_expire = gcp.storage.Bucket(\"auto-expire\",\n name=\"auto-expiring-bucket\",\n location=\"US\",\n force_destroy=True,\n lifecycle_rules=[\n {\n \"condition\": {\n \"age\": 3,\n },\n \"action\": {\n \"type\": \"Delete\",\n },\n },\n {\n \"condition\": {\n \"age\": 1,\n },\n \"action\": {\n \"type\": \"AbortIncompleteMultipartUpload\",\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 auto_expire = new Gcp.Storage.Bucket(\"auto-expire\", new()\n {\n Name = \"auto-expiring-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n LifecycleRules = new[]\n {\n new Gcp.Storage.Inputs.BucketLifecycleRuleArgs\n {\n Condition = new Gcp.Storage.Inputs.BucketLifecycleRuleConditionArgs\n {\n Age = 3,\n },\n Action = new Gcp.Storage.Inputs.BucketLifecycleRuleActionArgs\n {\n Type = \"Delete\",\n },\n },\n new Gcp.Storage.Inputs.BucketLifecycleRuleArgs\n {\n Condition = new Gcp.Storage.Inputs.BucketLifecycleRuleConditionArgs\n {\n Age = 1,\n },\n Action = new Gcp.Storage.Inputs.BucketLifecycleRuleActionArgs\n {\n Type = \"AbortIncompleteMultipartUpload\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := storage.NewBucket(ctx, \"auto-expire\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"auto-expiring-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tLifecycleRules: storage.BucketLifecycleRuleArray{\n\t\t\t\t\u0026storage.BucketLifecycleRuleArgs{\n\t\t\t\t\tCondition: \u0026storage.BucketLifecycleRuleConditionArgs{\n\t\t\t\t\t\tAge: pulumi.Int(3),\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026storage.BucketLifecycleRuleActionArgs{\n\t\t\t\t\t\tType: pulumi.String(\"Delete\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026storage.BucketLifecycleRuleArgs{\n\t\t\t\t\tCondition: \u0026storage.BucketLifecycleRuleConditionArgs{\n\t\t\t\t\t\tAge: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026storage.BucketLifecycleRuleActionArgs{\n\t\t\t\t\t\tType: pulumi.String(\"AbortIncompleteMultipartUpload\"),\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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.inputs.BucketLifecycleRuleArgs;\nimport com.pulumi.gcp.storage.inputs.BucketLifecycleRuleConditionArgs;\nimport com.pulumi.gcp.storage.inputs.BucketLifecycleRuleActionArgs;\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 auto_expire = new Bucket(\"auto-expire\", BucketArgs.builder()\n .name(\"auto-expiring-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .lifecycleRules( \n BucketLifecycleRuleArgs.builder()\n .condition(BucketLifecycleRuleConditionArgs.builder()\n .age(3)\n .build())\n .action(BucketLifecycleRuleActionArgs.builder()\n .type(\"Delete\")\n .build())\n .build(),\n BucketLifecycleRuleArgs.builder()\n .condition(BucketLifecycleRuleConditionArgs.builder()\n .age(1)\n .build())\n .action(BucketLifecycleRuleActionArgs.builder()\n .type(\"AbortIncompleteMultipartUpload\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n auto-expire:\n type: gcp:storage:Bucket\n properties:\n name: auto-expiring-bucket\n location: US\n forceDestroy: true\n lifecycleRules:\n - condition:\n age: 3\n action:\n type: Delete\n - condition:\n age: 1\n action:\n type: AbortIncompleteMultipartUpload\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Life Cycle Settings For Storage Bucket Objects With `No_age` Enabled\nWhen creating a life cycle condition that does not also include an `age` field, a default `age` of 0 will be set. Set the `no_age` flag to `true` to prevent this and avoid any potentially unintended interactions.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst no_age_enabled = new gcp.storage.Bucket(\"no-age-enabled\", {\n name: \"no-age-enabled-bucket\",\n location: \"US\",\n forceDestroy: true,\n lifecycleRules: [{\n action: {\n type: \"Delete\",\n },\n condition: {\n daysSinceNoncurrentTime: 3,\n noAge: true,\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nno_age_enabled = gcp.storage.Bucket(\"no-age-enabled\",\n name=\"no-age-enabled-bucket\",\n location=\"US\",\n force_destroy=True,\n lifecycle_rules=[{\n \"action\": {\n \"type\": \"Delete\",\n },\n \"condition\": {\n \"days_since_noncurrent_time\": 3,\n \"no_age\": 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 no_age_enabled = new Gcp.Storage.Bucket(\"no-age-enabled\", new()\n {\n Name = \"no-age-enabled-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n LifecycleRules = new[]\n {\n new Gcp.Storage.Inputs.BucketLifecycleRuleArgs\n {\n Action = new Gcp.Storage.Inputs.BucketLifecycleRuleActionArgs\n {\n Type = \"Delete\",\n },\n Condition = new Gcp.Storage.Inputs.BucketLifecycleRuleConditionArgs\n {\n DaysSinceNoncurrentTime = 3,\n NoAge = true,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := storage.NewBucket(ctx, \"no-age-enabled\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"no-age-enabled-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tLifecycleRules: storage.BucketLifecycleRuleArray{\n\t\t\t\t\u0026storage.BucketLifecycleRuleArgs{\n\t\t\t\t\tAction: \u0026storage.BucketLifecycleRuleActionArgs{\n\t\t\t\t\t\tType: pulumi.String(\"Delete\"),\n\t\t\t\t\t},\n\t\t\t\t\tCondition: \u0026storage.BucketLifecycleRuleConditionArgs{\n\t\t\t\t\t\tDaysSinceNoncurrentTime: pulumi.Int(3),\n\t\t\t\t\t\tNoAge: pulumi.Bool(true),\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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.inputs.BucketLifecycleRuleArgs;\nimport com.pulumi.gcp.storage.inputs.BucketLifecycleRuleActionArgs;\nimport com.pulumi.gcp.storage.inputs.BucketLifecycleRuleConditionArgs;\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 no_age_enabled = new Bucket(\"no-age-enabled\", BucketArgs.builder()\n .name(\"no-age-enabled-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .lifecycleRules(BucketLifecycleRuleArgs.builder()\n .action(BucketLifecycleRuleActionArgs.builder()\n .type(\"Delete\")\n .build())\n .condition(BucketLifecycleRuleConditionArgs.builder()\n .daysSinceNoncurrentTime(3)\n .noAge(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n no-age-enabled:\n type: gcp:storage:Bucket\n properties:\n name: no-age-enabled-bucket\n location: US\n forceDestroy: true\n lifecycleRules:\n - action:\n type: Delete\n condition:\n daysSinceNoncurrentTime: 3\n noAge: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Enabling Public Access Prevention\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst auto_expire = new gcp.storage.Bucket(\"auto-expire\", {\n name: \"no-public-access-bucket\",\n location: \"US\",\n forceDestroy: true,\n publicAccessPrevention: \"enforced\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nauto_expire = gcp.storage.Bucket(\"auto-expire\",\n name=\"no-public-access-bucket\",\n location=\"US\",\n force_destroy=True,\n public_access_prevention=\"enforced\")\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 auto_expire = new Gcp.Storage.Bucket(\"auto-expire\", new()\n {\n Name = \"no-public-access-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n PublicAccessPrevention = \"enforced\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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 := storage.NewBucket(ctx, \"auto-expire\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"no-public-access-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tPublicAccessPrevention: pulumi.String(\"enforced\"),\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 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 auto_expire = new Bucket(\"auto-expire\", BucketArgs.builder()\n .name(\"no-public-access-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .publicAccessPrevention(\"enforced\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n auto-expire:\n type: gcp:storage:Bucket\n properties:\n name: no-public-access-bucket\n location: US\n forceDestroy: true\n publicAccessPrevention: enforced\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nStorage buckets can be imported using the `name` or `project/name`. If the project is not\n\npassed to the import command it will be inferred from the provider block or environment variables.\n\nIf it cannot be inferred it will be queried from the Compute API (this will fail if the API is\n\nnot enabled).\n\n* `{{project_id}}/{{bucket}}`\n\n* `{{bucket}}`\n\nWhen using the `pulumi import` command, Storage buckets can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:storage/bucket:Bucket default {{bucket}}\n```\n\n```sh\n$ pulumi import gcp:storage/bucket:Bucket default {{project_id}}/{{bucket}}\n```\n\n`false` in state. If you've set it to `true` in config, run `pulumi up` to\n\nupdate the value set in state. If you delete this resource before updating the\n\nvalue, objects in the bucket will not be destroyed.\n\n", "properties": { "autoclass": { "$ref": "#/types/gcp:storage/BucketAutoclass:BucketAutoclass", @@ -240556,7 +240556,7 @@ } }, "gcp:storage/insightsReportConfig:InsightsReportConfig": { - "description": "Represents an inventory report configuration.\n\n\nTo get more information about ReportConfig, see:\n\n* [API documentation](https://cloud.google.com/storage/docs/json_api/v1/reportConfig)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/storage/docs/insights/using-storage-insights)\n\n## Example Usage\n\n### Storage Insights Report Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst reportBucket = new gcp.storage.Bucket(\"report_bucket\", {\n name: \"my-bucket\",\n location: \"us-central1\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: reportBucket.name,\n role: \"roles/storage.admin\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-storageinsights.iam.gserviceaccount.com`),\n});\nconst config = new gcp.storage.InsightsReportConfig(\"config\", {\n displayName: \"Test Report Config\",\n location: \"us-central1\",\n frequencyOptions: {\n frequency: \"WEEKLY\",\n startDate: {\n day: 15,\n month: 3,\n year: 2050,\n },\n endDate: {\n day: 15,\n month: 4,\n year: 2050,\n },\n },\n csvOptions: {\n recordSeparator: \"\\n\",\n delimiter: \",\",\n headerRequired: false,\n },\n objectMetadataReportOptions: {\n metadataFields: [\n \"bucket\",\n \"name\",\n \"project\",\n ],\n storageFilters: {\n bucket: reportBucket.name,\n },\n storageDestinationOptions: {\n bucket: reportBucket.name,\n destinationPath: \"test-insights-reports\",\n },\n },\n}, {\n dependsOn: [admin],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nreport_bucket = gcp.storage.Bucket(\"report_bucket\",\n name=\"my-bucket\",\n location=\"us-central1\",\n force_destroy=True,\n uniform_bucket_level_access=True)\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=report_bucket.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-storageinsights.iam.gserviceaccount.com\")\nconfig = gcp.storage.InsightsReportConfig(\"config\",\n display_name=\"Test Report Config\",\n location=\"us-central1\",\n frequency_options={\n \"frequency\": \"WEEKLY\",\n \"startDate\": {\n \"day\": 15,\n \"month\": 3,\n \"year\": 2050,\n },\n \"endDate\": {\n \"day\": 15,\n \"month\": 4,\n \"year\": 2050,\n },\n },\n csv_options={\n \"recordSeparator\": \"\\n\",\n \"delimiter\": \",\",\n \"headerRequired\": False,\n },\n object_metadata_report_options={\n \"metadataFields\": [\n \"bucket\",\n \"name\",\n \"project\",\n ],\n \"storageFilters\": {\n \"bucket\": report_bucket.name,\n },\n \"storageDestinationOptions\": {\n \"bucket\": report_bucket.name,\n \"destinationPath\": \"test-insights-reports\",\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[admin]))\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 reportBucket = new Gcp.Storage.Bucket(\"report_bucket\", new()\n {\n Name = \"my-bucket\",\n Location = \"us-central1\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n });\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = reportBucket.Name,\n Role = \"roles/storage.admin\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-storageinsights.iam.gserviceaccount.com\",\n });\n\n var config = new Gcp.Storage.InsightsReportConfig(\"config\", new()\n {\n DisplayName = \"Test Report Config\",\n Location = \"us-central1\",\n FrequencyOptions = new Gcp.Storage.Inputs.InsightsReportConfigFrequencyOptionsArgs\n {\n Frequency = \"WEEKLY\",\n StartDate = new Gcp.Storage.Inputs.InsightsReportConfigFrequencyOptionsStartDateArgs\n {\n Day = 15,\n Month = 3,\n Year = 2050,\n },\n EndDate = new Gcp.Storage.Inputs.InsightsReportConfigFrequencyOptionsEndDateArgs\n {\n Day = 15,\n Month = 4,\n Year = 2050,\n },\n },\n CsvOptions = new Gcp.Storage.Inputs.InsightsReportConfigCsvOptionsArgs\n {\n RecordSeparator = @\"\n\",\n Delimiter = \",\",\n HeaderRequired = false,\n },\n ObjectMetadataReportOptions = new Gcp.Storage.Inputs.InsightsReportConfigObjectMetadataReportOptionsArgs\n {\n MetadataFields = new[]\n {\n \"bucket\",\n \"name\",\n \"project\",\n },\n StorageFilters = new Gcp.Storage.Inputs.InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs\n {\n Bucket = reportBucket.Name,\n },\n StorageDestinationOptions = new Gcp.Storage.Inputs.InsightsReportConfigObjectMetadataReportOptionsStorageDestinationOptionsArgs\n {\n Bucket = reportBucket.Name,\n DestinationPath = \"test-insights-reports\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n admin,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treportBucket, err := storage.NewBucket(ctx, \"report_bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\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\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: reportBucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-storageinsights.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewInsightsReportConfig(ctx, \"config\", \u0026storage.InsightsReportConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"Test Report Config\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFrequencyOptions: \u0026storage.InsightsReportConfigFrequencyOptionsArgs{\n\t\t\t\tFrequency: pulumi.String(\"WEEKLY\"),\n\t\t\t\tStartDate: \u0026storage.InsightsReportConfigFrequencyOptionsStartDateArgs{\n\t\t\t\t\tDay: pulumi.Int(15),\n\t\t\t\t\tMonth: pulumi.Int(3),\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t},\n\t\t\t\tEndDate: \u0026storage.InsightsReportConfigFrequencyOptionsEndDateArgs{\n\t\t\t\t\tDay: pulumi.Int(15),\n\t\t\t\t\tMonth: pulumi.Int(4),\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCsvOptions: \u0026storage.InsightsReportConfigCsvOptionsArgs{\n\t\t\t\tRecordSeparator: pulumi.String(\"\\n\"),\n\t\t\t\tDelimiter: pulumi.String(\",\"),\n\t\t\t\tHeaderRequired: pulumi.Bool(false),\n\t\t\t},\n\t\t\tObjectMetadataReportOptions: \u0026storage.InsightsReportConfigObjectMetadataReportOptionsArgs{\n\t\t\t\tMetadataFields: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"bucket\"),\n\t\t\t\t\tpulumi.String(\"name\"),\n\t\t\t\t\tpulumi.String(\"project\"),\n\t\t\t\t},\n\t\t\t\tStorageFilters: \u0026storage.InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs{\n\t\t\t\t\tBucket: reportBucket.Name,\n\t\t\t\t},\n\t\t\t\tStorageDestinationOptions: \u0026storage.InsightsReportConfigObjectMetadataReportOptionsStorageDestinationOptionsArgs{\n\t\t\t\t\tBucket: reportBucket.Name,\n\t\t\t\t\tDestinationPath: pulumi.String(\"test-insights-reports\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tadmin,\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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.storage.InsightsReportConfig;\nimport com.pulumi.gcp.storage.InsightsReportConfigArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigFrequencyOptionsArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigFrequencyOptionsStartDateArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigFrequencyOptionsEndDateArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigCsvOptionsArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigObjectMetadataReportOptionsArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigObjectMetadataReportOptionsStorageDestinationOptionsArgs;\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 reportBucket = new Bucket(\"reportBucket\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"us-central1\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .build());\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(reportBucket.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-storageinsights.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var config = new InsightsReportConfig(\"config\", InsightsReportConfigArgs.builder()\n .displayName(\"Test Report Config\")\n .location(\"us-central1\")\n .frequencyOptions(InsightsReportConfigFrequencyOptionsArgs.builder()\n .frequency(\"WEEKLY\")\n .startDate(InsightsReportConfigFrequencyOptionsStartDateArgs.builder()\n .day(15)\n .month(3)\n .year(2050)\n .build())\n .endDate(InsightsReportConfigFrequencyOptionsEndDateArgs.builder()\n .day(15)\n .month(4)\n .year(2050)\n .build())\n .build())\n .csvOptions(InsightsReportConfigCsvOptionsArgs.builder()\n .recordSeparator(\"\"\"\n\n \"\"\")\n .delimiter(\",\")\n .headerRequired(false)\n .build())\n .objectMetadataReportOptions(InsightsReportConfigObjectMetadataReportOptionsArgs.builder()\n .metadataFields( \n \"bucket\",\n \"name\",\n \"project\")\n .storageFilters(InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs.builder()\n .bucket(reportBucket.name())\n .build())\n .storageDestinationOptions(InsightsReportConfigObjectMetadataReportOptionsStorageDestinationOptionsArgs.builder()\n .bucket(reportBucket.name())\n .destinationPath(\"test-insights-reports\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(admin)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n config:\n type: gcp:storage:InsightsReportConfig\n properties:\n displayName: Test Report Config\n location: us-central1\n frequencyOptions:\n frequency: WEEKLY\n startDate:\n day: 15\n month: 3\n year: 2050\n endDate:\n day: 15\n month: 4\n year: 2050\n csvOptions:\n recordSeparator: |2+\n delimiter: ','\n headerRequired: false\n objectMetadataReportOptions:\n metadataFields:\n - bucket\n - name\n - project\n storageFilters:\n bucket: ${reportBucket.name}\n storageDestinationOptions:\n bucket: ${reportBucket.name}\n destinationPath: test-insights-reports\n options:\n dependson:\n - ${admin}\n reportBucket:\n type: gcp:storage:Bucket\n name: report_bucket\n properties:\n name: my-bucket\n location: us-central1\n forceDestroy: true\n uniformBucketLevelAccess: true\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${reportBucket.name}\n role: roles/storage.admin\n member: serviceAccount:service-${project.number}@gcp-sa-storageinsights.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nReportConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/reportConfigs/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ReportConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:storage/insightsReportConfig:InsightsReportConfig default projects/{{project}}/locations/{{location}}/reportConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:storage/insightsReportConfig:InsightsReportConfig default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:storage/insightsReportConfig:InsightsReportConfig default {{location}}/{{name}}\n```\n\n", + "description": "Represents an inventory report configuration.\n\n\nTo get more information about ReportConfig, see:\n\n* [API documentation](https://cloud.google.com/storage/docs/json_api/v1/reportConfig)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/storage/docs/insights/using-storage-insights)\n\n## Example Usage\n\n### Storage Insights Report Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst reportBucket = new gcp.storage.Bucket(\"report_bucket\", {\n name: \"my-bucket\",\n location: \"us-central1\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: reportBucket.name,\n role: \"roles/storage.admin\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-storageinsights.iam.gserviceaccount.com`),\n});\nconst config = new gcp.storage.InsightsReportConfig(\"config\", {\n displayName: \"Test Report Config\",\n location: \"us-central1\",\n frequencyOptions: {\n frequency: \"WEEKLY\",\n startDate: {\n day: 15,\n month: 3,\n year: 2050,\n },\n endDate: {\n day: 15,\n month: 4,\n year: 2050,\n },\n },\n csvOptions: {\n recordSeparator: \"\\n\",\n delimiter: \",\",\n headerRequired: false,\n },\n objectMetadataReportOptions: {\n metadataFields: [\n \"bucket\",\n \"name\",\n \"project\",\n ],\n storageFilters: {\n bucket: reportBucket.name,\n },\n storageDestinationOptions: {\n bucket: reportBucket.name,\n destinationPath: \"test-insights-reports\",\n },\n },\n}, {\n dependsOn: [admin],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nreport_bucket = gcp.storage.Bucket(\"report_bucket\",\n name=\"my-bucket\",\n location=\"us-central1\",\n force_destroy=True,\n uniform_bucket_level_access=True)\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=report_bucket.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-storageinsights.iam.gserviceaccount.com\")\nconfig = gcp.storage.InsightsReportConfig(\"config\",\n display_name=\"Test Report Config\",\n location=\"us-central1\",\n frequency_options={\n \"frequency\": \"WEEKLY\",\n \"start_date\": {\n \"day\": 15,\n \"month\": 3,\n \"year\": 2050,\n },\n \"end_date\": {\n \"day\": 15,\n \"month\": 4,\n \"year\": 2050,\n },\n },\n csv_options={\n \"record_separator\": \"\\n\",\n \"delimiter\": \",\",\n \"header_required\": False,\n },\n object_metadata_report_options={\n \"metadata_fields\": [\n \"bucket\",\n \"name\",\n \"project\",\n ],\n \"storage_filters\": {\n \"bucket\": report_bucket.name,\n },\n \"storage_destination_options\": {\n \"bucket\": report_bucket.name,\n \"destination_path\": \"test-insights-reports\",\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[admin]))\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 reportBucket = new Gcp.Storage.Bucket(\"report_bucket\", new()\n {\n Name = \"my-bucket\",\n Location = \"us-central1\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n });\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = reportBucket.Name,\n Role = \"roles/storage.admin\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-storageinsights.iam.gserviceaccount.com\",\n });\n\n var config = new Gcp.Storage.InsightsReportConfig(\"config\", new()\n {\n DisplayName = \"Test Report Config\",\n Location = \"us-central1\",\n FrequencyOptions = new Gcp.Storage.Inputs.InsightsReportConfigFrequencyOptionsArgs\n {\n Frequency = \"WEEKLY\",\n StartDate = new Gcp.Storage.Inputs.InsightsReportConfigFrequencyOptionsStartDateArgs\n {\n Day = 15,\n Month = 3,\n Year = 2050,\n },\n EndDate = new Gcp.Storage.Inputs.InsightsReportConfigFrequencyOptionsEndDateArgs\n {\n Day = 15,\n Month = 4,\n Year = 2050,\n },\n },\n CsvOptions = new Gcp.Storage.Inputs.InsightsReportConfigCsvOptionsArgs\n {\n RecordSeparator = @\"\n\",\n Delimiter = \",\",\n HeaderRequired = false,\n },\n ObjectMetadataReportOptions = new Gcp.Storage.Inputs.InsightsReportConfigObjectMetadataReportOptionsArgs\n {\n MetadataFields = new[]\n {\n \"bucket\",\n \"name\",\n \"project\",\n },\n StorageFilters = new Gcp.Storage.Inputs.InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs\n {\n Bucket = reportBucket.Name,\n },\n StorageDestinationOptions = new Gcp.Storage.Inputs.InsightsReportConfigObjectMetadataReportOptionsStorageDestinationOptionsArgs\n {\n Bucket = reportBucket.Name,\n DestinationPath = \"test-insights-reports\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n admin,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treportBucket, err := storage.NewBucket(ctx, \"report_bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\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\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: reportBucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-storageinsights.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewInsightsReportConfig(ctx, \"config\", \u0026storage.InsightsReportConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"Test Report Config\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFrequencyOptions: \u0026storage.InsightsReportConfigFrequencyOptionsArgs{\n\t\t\t\tFrequency: pulumi.String(\"WEEKLY\"),\n\t\t\t\tStartDate: \u0026storage.InsightsReportConfigFrequencyOptionsStartDateArgs{\n\t\t\t\t\tDay: pulumi.Int(15),\n\t\t\t\t\tMonth: pulumi.Int(3),\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t},\n\t\t\t\tEndDate: \u0026storage.InsightsReportConfigFrequencyOptionsEndDateArgs{\n\t\t\t\t\tDay: pulumi.Int(15),\n\t\t\t\t\tMonth: pulumi.Int(4),\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCsvOptions: \u0026storage.InsightsReportConfigCsvOptionsArgs{\n\t\t\t\tRecordSeparator: pulumi.String(\"\\n\"),\n\t\t\t\tDelimiter: pulumi.String(\",\"),\n\t\t\t\tHeaderRequired: pulumi.Bool(false),\n\t\t\t},\n\t\t\tObjectMetadataReportOptions: \u0026storage.InsightsReportConfigObjectMetadataReportOptionsArgs{\n\t\t\t\tMetadataFields: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"bucket\"),\n\t\t\t\t\tpulumi.String(\"name\"),\n\t\t\t\t\tpulumi.String(\"project\"),\n\t\t\t\t},\n\t\t\t\tStorageFilters: \u0026storage.InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs{\n\t\t\t\t\tBucket: reportBucket.Name,\n\t\t\t\t},\n\t\t\t\tStorageDestinationOptions: \u0026storage.InsightsReportConfigObjectMetadataReportOptionsStorageDestinationOptionsArgs{\n\t\t\t\t\tBucket: reportBucket.Name,\n\t\t\t\t\tDestinationPath: pulumi.String(\"test-insights-reports\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tadmin,\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.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.storage.InsightsReportConfig;\nimport com.pulumi.gcp.storage.InsightsReportConfigArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigFrequencyOptionsArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigFrequencyOptionsStartDateArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigFrequencyOptionsEndDateArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigCsvOptionsArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigObjectMetadataReportOptionsArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigObjectMetadataReportOptionsStorageDestinationOptionsArgs;\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 reportBucket = new Bucket(\"reportBucket\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"us-central1\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .build());\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(reportBucket.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-storageinsights.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var config = new InsightsReportConfig(\"config\", InsightsReportConfigArgs.builder()\n .displayName(\"Test Report Config\")\n .location(\"us-central1\")\n .frequencyOptions(InsightsReportConfigFrequencyOptionsArgs.builder()\n .frequency(\"WEEKLY\")\n .startDate(InsightsReportConfigFrequencyOptionsStartDateArgs.builder()\n .day(15)\n .month(3)\n .year(2050)\n .build())\n .endDate(InsightsReportConfigFrequencyOptionsEndDateArgs.builder()\n .day(15)\n .month(4)\n .year(2050)\n .build())\n .build())\n .csvOptions(InsightsReportConfigCsvOptionsArgs.builder()\n .recordSeparator(\"\"\"\n\n \"\"\")\n .delimiter(\",\")\n .headerRequired(false)\n .build())\n .objectMetadataReportOptions(InsightsReportConfigObjectMetadataReportOptionsArgs.builder()\n .metadataFields( \n \"bucket\",\n \"name\",\n \"project\")\n .storageFilters(InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs.builder()\n .bucket(reportBucket.name())\n .build())\n .storageDestinationOptions(InsightsReportConfigObjectMetadataReportOptionsStorageDestinationOptionsArgs.builder()\n .bucket(reportBucket.name())\n .destinationPath(\"test-insights-reports\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(admin)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n config:\n type: gcp:storage:InsightsReportConfig\n properties:\n displayName: Test Report Config\n location: us-central1\n frequencyOptions:\n frequency: WEEKLY\n startDate:\n day: 15\n month: 3\n year: 2050\n endDate:\n day: 15\n month: 4\n year: 2050\n csvOptions:\n recordSeparator: |2+\n delimiter: ','\n headerRequired: false\n objectMetadataReportOptions:\n metadataFields:\n - bucket\n - name\n - project\n storageFilters:\n bucket: ${reportBucket.name}\n storageDestinationOptions:\n bucket: ${reportBucket.name}\n destinationPath: test-insights-reports\n options:\n dependson:\n - ${admin}\n reportBucket:\n type: gcp:storage:Bucket\n name: report_bucket\n properties:\n name: my-bucket\n location: us-central1\n forceDestroy: true\n uniformBucketLevelAccess: true\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${reportBucket.name}\n role: roles/storage.admin\n member: serviceAccount:service-${project.number}@gcp-sa-storageinsights.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nReportConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/reportConfigs/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ReportConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:storage/insightsReportConfig:InsightsReportConfig default projects/{{project}}/locations/{{location}}/reportConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:storage/insightsReportConfig:InsightsReportConfig default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:storage/insightsReportConfig:InsightsReportConfig default {{location}}/{{name}}\n```\n\n", "properties": { "csvOptions": { "$ref": "#/types/gcp:storage/InsightsReportConfigCsvOptions:InsightsReportConfigCsvOptions", @@ -241381,7 +241381,7 @@ } }, "gcp:storage/transferAgentPool:TransferAgentPool": { - "description": "Represents an On-Premises Agent pool.\n\n\nTo get more information about AgentPool, see:\n\n* [API documentation](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/projects.agentPools)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/storage-transfer/docs/on-prem-agent-pools)\n\n## Example Usage\n\n### Agent Pool Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.storage.getTransferProjectServiceAccount({\n project: \"my-project-name\",\n});\nconst pubsubEditorRole = new gcp.projects.IAMMember(\"pubsub_editor_role\", {\n project: \"my-project-name\",\n role: \"roles/pubsub.editor\",\n member: _default.then(_default =\u003e `serviceAccount:${_default.email}`),\n});\nconst example = new gcp.storage.TransferAgentPool(\"example\", {\n name: \"agent-pool-example\",\n displayName: \"Source A to destination Z\",\n bandwidthLimit: {\n limitMbps: \"120\",\n },\n}, {\n dependsOn: [pubsubEditorRole],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.get_transfer_project_service_account(project=\"my-project-name\")\npubsub_editor_role = gcp.projects.IAMMember(\"pubsub_editor_role\",\n project=\"my-project-name\",\n role=\"roles/pubsub.editor\",\n member=f\"serviceAccount:{default.email}\")\nexample = gcp.storage.TransferAgentPool(\"example\",\n name=\"agent-pool-example\",\n display_name=\"Source A to destination Z\",\n bandwidth_limit={\n \"limitMbps\": \"120\",\n },\n opts = pulumi.ResourceOptions(depends_on=[pubsub_editor_role]))\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 = Gcp.Storage.GetTransferProjectServiceAccount.Invoke(new()\n {\n Project = \"my-project-name\",\n });\n\n var pubsubEditorRole = new Gcp.Projects.IAMMember(\"pubsub_editor_role\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/pubsub.editor\",\n Member = @default.Apply(@default =\u003e $\"serviceAccount:{@default.Apply(getTransferProjectServiceAccountResult =\u003e getTransferProjectServiceAccountResult.Email)}\"),\n });\n\n var example = new Gcp.Storage.TransferAgentPool(\"example\", new()\n {\n Name = \"agent-pool-example\",\n DisplayName = \"Source A to destination Z\",\n BandwidthLimit = new Gcp.Storage.Inputs.TransferAgentPoolBandwidthLimitArgs\n {\n LimitMbps = \"120\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n pubsubEditorRole,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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_default, err := storage.GetTransferProjectServiceAccount(ctx, \u0026storage.GetTransferProjectServiceAccountArgs{\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\tpubsubEditorRole, err := projects.NewIAMMember(ctx, \"pubsub_editor_role\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/pubsub.editor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v\", _default.Email)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewTransferAgentPool(ctx, \"example\", \u0026storage.TransferAgentPoolArgs{\n\t\t\tName: pulumi.String(\"agent-pool-example\"),\n\t\t\tDisplayName: pulumi.String(\"Source A to destination Z\"),\n\t\t\tBandwidthLimit: \u0026storage.TransferAgentPoolBandwidthLimitArgs{\n\t\t\t\tLimitMbps: pulumi.String(\"120\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpubsubEditorRole,\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.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetTransferProjectServiceAccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.storage.TransferAgentPool;\nimport com.pulumi.gcp.storage.TransferAgentPoolArgs;\nimport com.pulumi.gcp.storage.inputs.TransferAgentPoolBandwidthLimitArgs;\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 default = StorageFunctions.getTransferProjectServiceAccount(GetTransferProjectServiceAccountArgs.builder()\n .project(\"my-project-name\")\n .build());\n\n var pubsubEditorRole = new IAMMember(\"pubsubEditorRole\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/pubsub.editor\")\n .member(String.format(\"serviceAccount:%s\", default_.email()))\n .build());\n\n var example = new TransferAgentPool(\"example\", TransferAgentPoolArgs.builder()\n .name(\"agent-pool-example\")\n .displayName(\"Source A to destination Z\")\n .bandwidthLimit(TransferAgentPoolBandwidthLimitArgs.builder()\n .limitMbps(\"120\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(pubsubEditorRole)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pubsubEditorRole:\n type: gcp:projects:IAMMember\n name: pubsub_editor_role\n properties:\n project: my-project-name\n role: roles/pubsub.editor\n member: serviceAccount:${default.email}\n example:\n type: gcp:storage:TransferAgentPool\n properties:\n name: agent-pool-example\n displayName: Source A to destination Z\n bandwidthLimit:\n limitMbps: '120'\n options:\n dependson:\n - ${pubsubEditorRole}\nvariables:\n default:\n fn::invoke:\n Function: gcp:storage:getTransferProjectServiceAccount\n Arguments:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAgentPool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/agentPools/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AgentPool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:storage/transferAgentPool:TransferAgentPool default projects/{{project}}/agentPools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:storage/transferAgentPool:TransferAgentPool default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:storage/transferAgentPool:TransferAgentPool default {{name}}\n```\n\n", + "description": "Represents an On-Premises Agent pool.\n\n\nTo get more information about AgentPool, see:\n\n* [API documentation](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/projects.agentPools)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/storage-transfer/docs/on-prem-agent-pools)\n\n## Example Usage\n\n### Agent Pool Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.storage.getTransferProjectServiceAccount({\n project: \"my-project-name\",\n});\nconst pubsubEditorRole = new gcp.projects.IAMMember(\"pubsub_editor_role\", {\n project: \"my-project-name\",\n role: \"roles/pubsub.editor\",\n member: _default.then(_default =\u003e `serviceAccount:${_default.email}`),\n});\nconst example = new gcp.storage.TransferAgentPool(\"example\", {\n name: \"agent-pool-example\",\n displayName: \"Source A to destination Z\",\n bandwidthLimit: {\n limitMbps: \"120\",\n },\n}, {\n dependsOn: [pubsubEditorRole],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.get_transfer_project_service_account(project=\"my-project-name\")\npubsub_editor_role = gcp.projects.IAMMember(\"pubsub_editor_role\",\n project=\"my-project-name\",\n role=\"roles/pubsub.editor\",\n member=f\"serviceAccount:{default.email}\")\nexample = gcp.storage.TransferAgentPool(\"example\",\n name=\"agent-pool-example\",\n display_name=\"Source A to destination Z\",\n bandwidth_limit={\n \"limit_mbps\": \"120\",\n },\n opts = pulumi.ResourceOptions(depends_on=[pubsub_editor_role]))\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 = Gcp.Storage.GetTransferProjectServiceAccount.Invoke(new()\n {\n Project = \"my-project-name\",\n });\n\n var pubsubEditorRole = new Gcp.Projects.IAMMember(\"pubsub_editor_role\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/pubsub.editor\",\n Member = @default.Apply(@default =\u003e $\"serviceAccount:{@default.Apply(getTransferProjectServiceAccountResult =\u003e getTransferProjectServiceAccountResult.Email)}\"),\n });\n\n var example = new Gcp.Storage.TransferAgentPool(\"example\", new()\n {\n Name = \"agent-pool-example\",\n DisplayName = \"Source A to destination Z\",\n BandwidthLimit = new Gcp.Storage.Inputs.TransferAgentPoolBandwidthLimitArgs\n {\n LimitMbps = \"120\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n pubsubEditorRole,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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_default, err := storage.GetTransferProjectServiceAccount(ctx, \u0026storage.GetTransferProjectServiceAccountArgs{\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\tpubsubEditorRole, err := projects.NewIAMMember(ctx, \"pubsub_editor_role\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/pubsub.editor\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v\", _default.Email)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewTransferAgentPool(ctx, \"example\", \u0026storage.TransferAgentPoolArgs{\n\t\t\tName: pulumi.String(\"agent-pool-example\"),\n\t\t\tDisplayName: pulumi.String(\"Source A to destination Z\"),\n\t\t\tBandwidthLimit: \u0026storage.TransferAgentPoolBandwidthLimitArgs{\n\t\t\t\tLimitMbps: pulumi.String(\"120\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpubsubEditorRole,\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.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetTransferProjectServiceAccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.storage.TransferAgentPool;\nimport com.pulumi.gcp.storage.TransferAgentPoolArgs;\nimport com.pulumi.gcp.storage.inputs.TransferAgentPoolBandwidthLimitArgs;\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 default = StorageFunctions.getTransferProjectServiceAccount(GetTransferProjectServiceAccountArgs.builder()\n .project(\"my-project-name\")\n .build());\n\n var pubsubEditorRole = new IAMMember(\"pubsubEditorRole\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/pubsub.editor\")\n .member(String.format(\"serviceAccount:%s\", default_.email()))\n .build());\n\n var example = new TransferAgentPool(\"example\", TransferAgentPoolArgs.builder()\n .name(\"agent-pool-example\")\n .displayName(\"Source A to destination Z\")\n .bandwidthLimit(TransferAgentPoolBandwidthLimitArgs.builder()\n .limitMbps(\"120\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(pubsubEditorRole)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pubsubEditorRole:\n type: gcp:projects:IAMMember\n name: pubsub_editor_role\n properties:\n project: my-project-name\n role: roles/pubsub.editor\n member: serviceAccount:${default.email}\n example:\n type: gcp:storage:TransferAgentPool\n properties:\n name: agent-pool-example\n displayName: Source A to destination Z\n bandwidthLimit:\n limitMbps: '120'\n options:\n dependson:\n - ${pubsubEditorRole}\nvariables:\n default:\n fn::invoke:\n Function: gcp:storage:getTransferProjectServiceAccount\n Arguments:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAgentPool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/agentPools/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AgentPool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:storage/transferAgentPool:TransferAgentPool default projects/{{project}}/agentPools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:storage/transferAgentPool:TransferAgentPool default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:storage/transferAgentPool:TransferAgentPool default {{name}}\n```\n\n", "properties": { "bandwidthLimit": { "$ref": "#/types/gcp:storage/TransferAgentPoolBandwidthLimit:TransferAgentPoolBandwidthLimit", @@ -241459,7 +241459,7 @@ } }, "gcp:storage/transferJob:TransferJob": { - "description": "Creates a new Transfer Job in Google Cloud Storage Transfer.\n\nTo get more information about Google Cloud Storage Transfer, see:\n\n* [Overview](https://cloud.google.com/storage-transfer/docs/overview)\n* [API documentation](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/transferJobs)\n* How-to Guides\n * [Configuring Access to Data Sources and Sinks](https://cloud.google.com/storage-transfer/docs/configure-access)\n\n## Example Usage\n\nExample creating a nightly Transfer Job from an AWS S3 Bucket to a GCS bucket.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.storage.getTransferProjectServiceAccount({\n project: project,\n});\nconst s3_backup_bucket = new gcp.storage.Bucket(\"s3-backup-bucket\", {\n name: `${awsS3Bucket}-backup`,\n storageClass: \"NEARLINE\",\n project: project,\n location: \"US\",\n});\nconst s3_backup_bucketBucketIAMMember = new gcp.storage.BucketIAMMember(\"s3-backup-bucket\", {\n bucket: s3_backup_bucket.name,\n role: \"roles/storage.admin\",\n member: _default.then(_default =\u003e `serviceAccount:${_default.email}`),\n}, {\n dependsOn: [s3_backup_bucket],\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: pubsubTopicName});\nconst notificationConfig = new gcp.pubsub.TopicIAMMember(\"notification_config\", {\n topic: topic.id,\n role: \"roles/pubsub.publisher\",\n member: _default.then(_default =\u003e `serviceAccount:${_default.email}`),\n});\nconst s3_bucket_nightly_backup = new gcp.storage.TransferJob(\"s3-bucket-nightly-backup\", {\n description: \"Nightly backup of S3 bucket\",\n project: project,\n transferSpec: {\n objectConditions: {\n maxTimeElapsedSinceLastModification: \"600s\",\n excludePrefixes: [\"requests.gz\"],\n },\n transferOptions: {\n deleteObjectsUniqueInSink: false,\n },\n awsS3DataSource: {\n bucketName: awsS3Bucket,\n awsAccessKey: {\n accessKeyId: awsAccessKey,\n secretAccessKey: awsSecretKey,\n },\n },\n gcsDataSink: {\n bucketName: s3_backup_bucket.name,\n path: \"foo/bar/\",\n },\n },\n schedule: {\n scheduleStartDate: {\n year: 2018,\n month: 10,\n day: 1,\n },\n scheduleEndDate: {\n year: 2019,\n month: 1,\n day: 15,\n },\n startTimeOfDay: {\n hours: 23,\n minutes: 30,\n seconds: 0,\n nanos: 0,\n },\n repeatInterval: \"604800s\",\n },\n notificationConfig: {\n pubsubTopic: topic.id,\n eventTypes: [\n \"TRANSFER_OPERATION_SUCCESS\",\n \"TRANSFER_OPERATION_FAILED\",\n ],\n payloadFormat: \"JSON\",\n },\n}, {\n dependsOn: [\n s3_backup_bucketBucketIAMMember,\n notificationConfig,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.get_transfer_project_service_account(project=project)\ns3_backup_bucket = gcp.storage.Bucket(\"s3-backup-bucket\",\n name=f\"{aws_s3_bucket}-backup\",\n storage_class=\"NEARLINE\",\n project=project,\n location=\"US\")\ns3_backup_bucket_bucket_iam_member = gcp.storage.BucketIAMMember(\"s3-backup-bucket\",\n bucket=s3_backup_bucket.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:{default.email}\",\n opts = pulumi.ResourceOptions(depends_on=[s3_backup_bucket]))\ntopic = gcp.pubsub.Topic(\"topic\", name=pubsub_topic_name)\nnotification_config = gcp.pubsub.TopicIAMMember(\"notification_config\",\n topic=topic.id,\n role=\"roles/pubsub.publisher\",\n member=f\"serviceAccount:{default.email}\")\ns3_bucket_nightly_backup = gcp.storage.TransferJob(\"s3-bucket-nightly-backup\",\n description=\"Nightly backup of S3 bucket\",\n project=project,\n transfer_spec={\n \"objectConditions\": {\n \"maxTimeElapsedSinceLastModification\": \"600s\",\n \"excludePrefixes\": [\"requests.gz\"],\n },\n \"transferOptions\": {\n \"deleteObjectsUniqueInSink\": False,\n },\n \"awsS3DataSource\": {\n \"bucketName\": aws_s3_bucket,\n \"awsAccessKey\": {\n \"accessKeyId\": aws_access_key,\n \"secretAccessKey\": aws_secret_key,\n },\n },\n \"gcsDataSink\": {\n \"bucketName\": s3_backup_bucket.name,\n \"path\": \"foo/bar/\",\n },\n },\n schedule={\n \"scheduleStartDate\": {\n \"year\": 2018,\n \"month\": 10,\n \"day\": 1,\n },\n \"scheduleEndDate\": {\n \"year\": 2019,\n \"month\": 1,\n \"day\": 15,\n },\n \"startTimeOfDay\": {\n \"hours\": 23,\n \"minutes\": 30,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n \"repeatInterval\": \"604800s\",\n },\n notification_config={\n \"pubsubTopic\": topic.id,\n \"eventTypes\": [\n \"TRANSFER_OPERATION_SUCCESS\",\n \"TRANSFER_OPERATION_FAILED\",\n ],\n \"payloadFormat\": \"JSON\",\n },\n opts = pulumi.ResourceOptions(depends_on=[\n s3_backup_bucket_bucket_iam_member,\n notification_config,\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 @default = Gcp.Storage.GetTransferProjectServiceAccount.Invoke(new()\n {\n Project = project,\n });\n\n var s3_backup_bucket = new Gcp.Storage.Bucket(\"s3-backup-bucket\", new()\n {\n Name = $\"{awsS3Bucket}-backup\",\n StorageClass = \"NEARLINE\",\n Project = project,\n Location = \"US\",\n });\n\n var s3_backup_bucketBucketIAMMember = new Gcp.Storage.BucketIAMMember(\"s3-backup-bucket\", new()\n {\n Bucket = s3_backup_bucket.Name,\n Role = \"roles/storage.admin\",\n Member = @default.Apply(@default =\u003e $\"serviceAccount:{@default.Apply(getTransferProjectServiceAccountResult =\u003e getTransferProjectServiceAccountResult.Email)}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n s3_backup_bucket,\n },\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = pubsubTopicName,\n });\n\n var notificationConfig = new Gcp.PubSub.TopicIAMMember(\"notification_config\", new()\n {\n Topic = topic.Id,\n Role = \"roles/pubsub.publisher\",\n Member = @default.Apply(@default =\u003e $\"serviceAccount:{@default.Apply(getTransferProjectServiceAccountResult =\u003e getTransferProjectServiceAccountResult.Email)}\"),\n });\n\n var s3_bucket_nightly_backup = new Gcp.Storage.TransferJob(\"s3-bucket-nightly-backup\", new()\n {\n Description = \"Nightly backup of S3 bucket\",\n Project = project,\n TransferSpec = new Gcp.Storage.Inputs.TransferJobTransferSpecArgs\n {\n ObjectConditions = new Gcp.Storage.Inputs.TransferJobTransferSpecObjectConditionsArgs\n {\n MaxTimeElapsedSinceLastModification = \"600s\",\n ExcludePrefixes = new[]\n {\n \"requests.gz\",\n },\n },\n TransferOptions = new Gcp.Storage.Inputs.TransferJobTransferSpecTransferOptionsArgs\n {\n DeleteObjectsUniqueInSink = false,\n },\n AwsS3DataSource = new Gcp.Storage.Inputs.TransferJobTransferSpecAwsS3DataSourceArgs\n {\n BucketName = awsS3Bucket,\n AwsAccessKey = new Gcp.Storage.Inputs.TransferJobTransferSpecAwsS3DataSourceAwsAccessKeyArgs\n {\n AccessKeyId = awsAccessKey,\n SecretAccessKey = awsSecretKey,\n },\n },\n GcsDataSink = new Gcp.Storage.Inputs.TransferJobTransferSpecGcsDataSinkArgs\n {\n BucketName = s3_backup_bucket.Name,\n Path = \"foo/bar/\",\n },\n },\n Schedule = new Gcp.Storage.Inputs.TransferJobScheduleArgs\n {\n ScheduleStartDate = new Gcp.Storage.Inputs.TransferJobScheduleScheduleStartDateArgs\n {\n Year = 2018,\n Month = 10,\n Day = 1,\n },\n ScheduleEndDate = new Gcp.Storage.Inputs.TransferJobScheduleScheduleEndDateArgs\n {\n Year = 2019,\n Month = 1,\n Day = 15,\n },\n StartTimeOfDay = new Gcp.Storage.Inputs.TransferJobScheduleStartTimeOfDayArgs\n {\n Hours = 23,\n Minutes = 30,\n Seconds = 0,\n Nanos = 0,\n },\n RepeatInterval = \"604800s\",\n },\n NotificationConfig = new Gcp.Storage.Inputs.TransferJobNotificationConfigArgs\n {\n PubsubTopic = topic.Id,\n EventTypes = new[]\n {\n \"TRANSFER_OPERATION_SUCCESS\",\n \"TRANSFER_OPERATION_FAILED\",\n },\n PayloadFormat = \"JSON\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n s3_backup_bucketBucketIAMMember,\n notificationConfig,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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_default, err := storage.GetTransferProjectServiceAccount(ctx, \u0026storage.GetTransferProjectServiceAccountArgs{\n\t\t\tProject: pulumi.StringRef(project),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucket(ctx, \"s3-backup-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-backup\", awsS3Bucket)),\n\t\t\tStorageClass: pulumi.String(\"NEARLINE\"),\n\t\t\tProject: pulumi.Any(project),\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 = storage.NewBucketIAMMember(ctx, \"s3-backup-bucket\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: s3_backup_bucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v\", _default.Email)),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\ts3_backup_bucket,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.Any(pubsubTopicName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnotificationConfig, err := pubsub.NewTopicIAMMember(ctx, \"notification_config\", \u0026pubsub.TopicIAMMemberArgs{\n\t\t\tTopic: topic.ID(),\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v\", _default.Email)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewTransferJob(ctx, \"s3-bucket-nightly-backup\", \u0026storage.TransferJobArgs{\n\t\t\tDescription: pulumi.String(\"Nightly backup of S3 bucket\"),\n\t\t\tProject: pulumi.Any(project),\n\t\t\tTransferSpec: \u0026storage.TransferJobTransferSpecArgs{\n\t\t\t\tObjectConditions: \u0026storage.TransferJobTransferSpecObjectConditionsArgs{\n\t\t\t\t\tMaxTimeElapsedSinceLastModification: pulumi.String(\"600s\"),\n\t\t\t\t\tExcludePrefixes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"requests.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTransferOptions: \u0026storage.TransferJobTransferSpecTransferOptionsArgs{\n\t\t\t\t\tDeleteObjectsUniqueInSink: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tAwsS3DataSource: \u0026storage.TransferJobTransferSpecAwsS3DataSourceArgs{\n\t\t\t\t\tBucketName: pulumi.Any(awsS3Bucket),\n\t\t\t\t\tAwsAccessKey: \u0026storage.TransferJobTransferSpecAwsS3DataSourceAwsAccessKeyArgs{\n\t\t\t\t\t\tAccessKeyId: pulumi.Any(awsAccessKey),\n\t\t\t\t\t\tSecretAccessKey: pulumi.Any(awsSecretKey),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tGcsDataSink: \u0026storage.TransferJobTransferSpecGcsDataSinkArgs{\n\t\t\t\t\tBucketName: s3_backup_bucket.Name,\n\t\t\t\t\tPath: pulumi.String(\"foo/bar/\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSchedule: \u0026storage.TransferJobScheduleArgs{\n\t\t\t\tScheduleStartDate: \u0026storage.TransferJobScheduleScheduleStartDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2018),\n\t\t\t\t\tMonth: pulumi.Int(10),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tScheduleEndDate: \u0026storage.TransferJobScheduleScheduleEndDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2019),\n\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\tDay: pulumi.Int(15),\n\t\t\t\t},\n\t\t\t\tStartTimeOfDay: \u0026storage.TransferJobScheduleStartTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(23),\n\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t\tRepeatInterval: pulumi.String(\"604800s\"),\n\t\t\t},\n\t\t\tNotificationConfig: \u0026storage.TransferJobNotificationConfigArgs{\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tEventTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"TRANSFER_OPERATION_SUCCESS\"),\n\t\t\t\t\tpulumi.String(\"TRANSFER_OPERATION_FAILED\"),\n\t\t\t\t},\n\t\t\t\tPayloadFormat: pulumi.String(\"JSON\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\ts3_backup_bucketBucketIAMMember,\n\t\t\tnotificationConfig,\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.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetTransferProjectServiceAccountArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.TopicIAMMember;\nimport com.pulumi.gcp.pubsub.TopicIAMMemberArgs;\nimport com.pulumi.gcp.storage.TransferJob;\nimport com.pulumi.gcp.storage.TransferJobArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecObjectConditionsArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecTransferOptionsArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecAwsS3DataSourceArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecAwsS3DataSourceAwsAccessKeyArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecGcsDataSinkArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobScheduleArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobScheduleScheduleStartDateArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobScheduleScheduleEndDateArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobScheduleStartTimeOfDayArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobNotificationConfigArgs;\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 default = StorageFunctions.getTransferProjectServiceAccount(GetTransferProjectServiceAccountArgs.builder()\n .project(project)\n .build());\n\n var s3_backup_bucket = new Bucket(\"s3-backup-bucket\", BucketArgs.builder()\n .name(String.format(\"%s-backup\", awsS3Bucket))\n .storageClass(\"NEARLINE\")\n .project(project)\n .location(\"US\")\n .build());\n\n var s3_backup_bucketBucketIAMMember = new BucketIAMMember(\"s3-backup-bucketBucketIAMMember\", BucketIAMMemberArgs.builder()\n .bucket(s3_backup_bucket.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:%s\", default_.email()))\n .build(), CustomResourceOptions.builder()\n .dependsOn(s3_backup_bucket)\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(pubsubTopicName)\n .build());\n\n var notificationConfig = new TopicIAMMember(\"notificationConfig\", TopicIAMMemberArgs.builder()\n .topic(topic.id())\n .role(\"roles/pubsub.publisher\")\n .member(String.format(\"serviceAccount:%s\", default_.email()))\n .build());\n\n var s3_bucket_nightly_backup = new TransferJob(\"s3-bucket-nightly-backup\", TransferJobArgs.builder()\n .description(\"Nightly backup of S3 bucket\")\n .project(project)\n .transferSpec(TransferJobTransferSpecArgs.builder()\n .objectConditions(TransferJobTransferSpecObjectConditionsArgs.builder()\n .maxTimeElapsedSinceLastModification(\"600s\")\n .excludePrefixes(\"requests.gz\")\n .build())\n .transferOptions(TransferJobTransferSpecTransferOptionsArgs.builder()\n .deleteObjectsUniqueInSink(false)\n .build())\n .awsS3DataSource(TransferJobTransferSpecAwsS3DataSourceArgs.builder()\n .bucketName(awsS3Bucket)\n .awsAccessKey(TransferJobTransferSpecAwsS3DataSourceAwsAccessKeyArgs.builder()\n .accessKeyId(awsAccessKey)\n .secretAccessKey(awsSecretKey)\n .build())\n .build())\n .gcsDataSink(TransferJobTransferSpecGcsDataSinkArgs.builder()\n .bucketName(s3_backup_bucket.name())\n .path(\"foo/bar/\")\n .build())\n .build())\n .schedule(TransferJobScheduleArgs.builder()\n .scheduleStartDate(TransferJobScheduleScheduleStartDateArgs.builder()\n .year(2018)\n .month(10)\n .day(1)\n .build())\n .scheduleEndDate(TransferJobScheduleScheduleEndDateArgs.builder()\n .year(2019)\n .month(1)\n .day(15)\n .build())\n .startTimeOfDay(TransferJobScheduleStartTimeOfDayArgs.builder()\n .hours(23)\n .minutes(30)\n .seconds(0)\n .nanos(0)\n .build())\n .repeatInterval(\"604800s\")\n .build())\n .notificationConfig(TransferJobNotificationConfigArgs.builder()\n .pubsubTopic(topic.id())\n .eventTypes( \n \"TRANSFER_OPERATION_SUCCESS\",\n \"TRANSFER_OPERATION_FAILED\")\n .payloadFormat(\"JSON\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n s3_backup_bucketBucketIAMMember,\n notificationConfig)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n s3-backup-bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${awsS3Bucket}-backup\n storageClass: NEARLINE\n project: ${project}\n location: US\n s3-backup-bucketBucketIAMMember:\n type: gcp:storage:BucketIAMMember\n name: s3-backup-bucket\n properties:\n bucket: ${[\"s3-backup-bucket\"].name}\n role: roles/storage.admin\n member: serviceAccount:${default.email}\n options:\n dependson:\n - ${[\"s3-backup-bucket\"]}\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: ${pubsubTopicName}\n notificationConfig:\n type: gcp:pubsub:TopicIAMMember\n name: notification_config\n properties:\n topic: ${topic.id}\n role: roles/pubsub.publisher\n member: serviceAccount:${default.email}\n s3-bucket-nightly-backup:\n type: gcp:storage:TransferJob\n properties:\n description: Nightly backup of S3 bucket\n project: ${project}\n transferSpec:\n objectConditions:\n maxTimeElapsedSinceLastModification: 600s\n excludePrefixes:\n - requests.gz\n transferOptions:\n deleteObjectsUniqueInSink: false\n awsS3DataSource:\n bucketName: ${awsS3Bucket}\n awsAccessKey:\n accessKeyId: ${awsAccessKey}\n secretAccessKey: ${awsSecretKey}\n gcsDataSink:\n bucketName: ${[\"s3-backup-bucket\"].name}\n path: foo/bar/\n schedule:\n scheduleStartDate:\n year: 2018\n month: 10\n day: 1\n scheduleEndDate:\n year: 2019\n month: 1\n day: 15\n startTimeOfDay:\n hours: 23\n minutes: 30\n seconds: 0\n nanos: 0\n repeatInterval: 604800s\n notificationConfig:\n pubsubTopic: ${topic.id}\n eventTypes:\n - TRANSFER_OPERATION_SUCCESS\n - TRANSFER_OPERATION_FAILED\n payloadFormat: JSON\n options:\n dependson:\n - ${[\"s3-backup-bucketBucketIAMMember\"]}\n - ${notificationConfig}\nvariables:\n default:\n fn::invoke:\n Function: gcp:storage:getTransferProjectServiceAccount\n Arguments:\n project: ${project}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nStorage Transfer Jobs can be imported using the Transfer Job's `project` and `name` (without the `transferJob/` prefix), e.g.\n\n* `{{project_id}}/{{name}}`, where `name` is a numeric value.\n\nWhen using the `pulumi import` command, Storage Transfer Jobs can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:storage/transferJob:TransferJob default {{project_id}}/123456789\n```\n\n", + "description": "Creates a new Transfer Job in Google Cloud Storage Transfer.\n\nTo get more information about Google Cloud Storage Transfer, see:\n\n* [Overview](https://cloud.google.com/storage-transfer/docs/overview)\n* [API documentation](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/transferJobs)\n* How-to Guides\n * [Configuring Access to Data Sources and Sinks](https://cloud.google.com/storage-transfer/docs/configure-access)\n\n## Example Usage\n\nExample creating a nightly Transfer Job from an AWS S3 Bucket to a GCS bucket.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.storage.getTransferProjectServiceAccount({\n project: project,\n});\nconst s3_backup_bucket = new gcp.storage.Bucket(\"s3-backup-bucket\", {\n name: `${awsS3Bucket}-backup`,\n storageClass: \"NEARLINE\",\n project: project,\n location: \"US\",\n});\nconst s3_backup_bucketBucketIAMMember = new gcp.storage.BucketIAMMember(\"s3-backup-bucket\", {\n bucket: s3_backup_bucket.name,\n role: \"roles/storage.admin\",\n member: _default.then(_default =\u003e `serviceAccount:${_default.email}`),\n}, {\n dependsOn: [s3_backup_bucket],\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: pubsubTopicName});\nconst notificationConfig = new gcp.pubsub.TopicIAMMember(\"notification_config\", {\n topic: topic.id,\n role: \"roles/pubsub.publisher\",\n member: _default.then(_default =\u003e `serviceAccount:${_default.email}`),\n});\nconst s3_bucket_nightly_backup = new gcp.storage.TransferJob(\"s3-bucket-nightly-backup\", {\n description: \"Nightly backup of S3 bucket\",\n project: project,\n transferSpec: {\n objectConditions: {\n maxTimeElapsedSinceLastModification: \"600s\",\n excludePrefixes: [\"requests.gz\"],\n },\n transferOptions: {\n deleteObjectsUniqueInSink: false,\n },\n awsS3DataSource: {\n bucketName: awsS3Bucket,\n awsAccessKey: {\n accessKeyId: awsAccessKey,\n secretAccessKey: awsSecretKey,\n },\n },\n gcsDataSink: {\n bucketName: s3_backup_bucket.name,\n path: \"foo/bar/\",\n },\n },\n schedule: {\n scheduleStartDate: {\n year: 2018,\n month: 10,\n day: 1,\n },\n scheduleEndDate: {\n year: 2019,\n month: 1,\n day: 15,\n },\n startTimeOfDay: {\n hours: 23,\n minutes: 30,\n seconds: 0,\n nanos: 0,\n },\n repeatInterval: \"604800s\",\n },\n notificationConfig: {\n pubsubTopic: topic.id,\n eventTypes: [\n \"TRANSFER_OPERATION_SUCCESS\",\n \"TRANSFER_OPERATION_FAILED\",\n ],\n payloadFormat: \"JSON\",\n },\n}, {\n dependsOn: [\n s3_backup_bucketBucketIAMMember,\n notificationConfig,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.get_transfer_project_service_account(project=project)\ns3_backup_bucket = gcp.storage.Bucket(\"s3-backup-bucket\",\n name=f\"{aws_s3_bucket}-backup\",\n storage_class=\"NEARLINE\",\n project=project,\n location=\"US\")\ns3_backup_bucket_bucket_iam_member = gcp.storage.BucketIAMMember(\"s3-backup-bucket\",\n bucket=s3_backup_bucket.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:{default.email}\",\n opts = pulumi.ResourceOptions(depends_on=[s3_backup_bucket]))\ntopic = gcp.pubsub.Topic(\"topic\", name=pubsub_topic_name)\nnotification_config = gcp.pubsub.TopicIAMMember(\"notification_config\",\n topic=topic.id,\n role=\"roles/pubsub.publisher\",\n member=f\"serviceAccount:{default.email}\")\ns3_bucket_nightly_backup = gcp.storage.TransferJob(\"s3-bucket-nightly-backup\",\n description=\"Nightly backup of S3 bucket\",\n project=project,\n transfer_spec={\n \"object_conditions\": {\n \"max_time_elapsed_since_last_modification\": \"600s\",\n \"exclude_prefixes\": [\"requests.gz\"],\n },\n \"transfer_options\": {\n \"delete_objects_unique_in_sink\": False,\n },\n \"aws_s3_data_source\": {\n \"bucket_name\": aws_s3_bucket,\n \"aws_access_key\": {\n \"access_key_id\": aws_access_key,\n \"secret_access_key\": aws_secret_key,\n },\n },\n \"gcs_data_sink\": {\n \"bucket_name\": s3_backup_bucket.name,\n \"path\": \"foo/bar/\",\n },\n },\n schedule={\n \"schedule_start_date\": {\n \"year\": 2018,\n \"month\": 10,\n \"day\": 1,\n },\n \"schedule_end_date\": {\n \"year\": 2019,\n \"month\": 1,\n \"day\": 15,\n },\n \"start_time_of_day\": {\n \"hours\": 23,\n \"minutes\": 30,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n \"repeat_interval\": \"604800s\",\n },\n notification_config={\n \"pubsub_topic\": topic.id,\n \"event_types\": [\n \"TRANSFER_OPERATION_SUCCESS\",\n \"TRANSFER_OPERATION_FAILED\",\n ],\n \"payload_format\": \"JSON\",\n },\n opts = pulumi.ResourceOptions(depends_on=[\n s3_backup_bucket_bucket_iam_member,\n notification_config,\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 @default = Gcp.Storage.GetTransferProjectServiceAccount.Invoke(new()\n {\n Project = project,\n });\n\n var s3_backup_bucket = new Gcp.Storage.Bucket(\"s3-backup-bucket\", new()\n {\n Name = $\"{awsS3Bucket}-backup\",\n StorageClass = \"NEARLINE\",\n Project = project,\n Location = \"US\",\n });\n\n var s3_backup_bucketBucketIAMMember = new Gcp.Storage.BucketIAMMember(\"s3-backup-bucket\", new()\n {\n Bucket = s3_backup_bucket.Name,\n Role = \"roles/storage.admin\",\n Member = @default.Apply(@default =\u003e $\"serviceAccount:{@default.Apply(getTransferProjectServiceAccountResult =\u003e getTransferProjectServiceAccountResult.Email)}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n s3_backup_bucket,\n },\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = pubsubTopicName,\n });\n\n var notificationConfig = new Gcp.PubSub.TopicIAMMember(\"notification_config\", new()\n {\n Topic = topic.Id,\n Role = \"roles/pubsub.publisher\",\n Member = @default.Apply(@default =\u003e $\"serviceAccount:{@default.Apply(getTransferProjectServiceAccountResult =\u003e getTransferProjectServiceAccountResult.Email)}\"),\n });\n\n var s3_bucket_nightly_backup = new Gcp.Storage.TransferJob(\"s3-bucket-nightly-backup\", new()\n {\n Description = \"Nightly backup of S3 bucket\",\n Project = project,\n TransferSpec = new Gcp.Storage.Inputs.TransferJobTransferSpecArgs\n {\n ObjectConditions = new Gcp.Storage.Inputs.TransferJobTransferSpecObjectConditionsArgs\n {\n MaxTimeElapsedSinceLastModification = \"600s\",\n ExcludePrefixes = new[]\n {\n \"requests.gz\",\n },\n },\n TransferOptions = new Gcp.Storage.Inputs.TransferJobTransferSpecTransferOptionsArgs\n {\n DeleteObjectsUniqueInSink = false,\n },\n AwsS3DataSource = new Gcp.Storage.Inputs.TransferJobTransferSpecAwsS3DataSourceArgs\n {\n BucketName = awsS3Bucket,\n AwsAccessKey = new Gcp.Storage.Inputs.TransferJobTransferSpecAwsS3DataSourceAwsAccessKeyArgs\n {\n AccessKeyId = awsAccessKey,\n SecretAccessKey = awsSecretKey,\n },\n },\n GcsDataSink = new Gcp.Storage.Inputs.TransferJobTransferSpecGcsDataSinkArgs\n {\n BucketName = s3_backup_bucket.Name,\n Path = \"foo/bar/\",\n },\n },\n Schedule = new Gcp.Storage.Inputs.TransferJobScheduleArgs\n {\n ScheduleStartDate = new Gcp.Storage.Inputs.TransferJobScheduleScheduleStartDateArgs\n {\n Year = 2018,\n Month = 10,\n Day = 1,\n },\n ScheduleEndDate = new Gcp.Storage.Inputs.TransferJobScheduleScheduleEndDateArgs\n {\n Year = 2019,\n Month = 1,\n Day = 15,\n },\n StartTimeOfDay = new Gcp.Storage.Inputs.TransferJobScheduleStartTimeOfDayArgs\n {\n Hours = 23,\n Minutes = 30,\n Seconds = 0,\n Nanos = 0,\n },\n RepeatInterval = \"604800s\",\n },\n NotificationConfig = new Gcp.Storage.Inputs.TransferJobNotificationConfigArgs\n {\n PubsubTopic = topic.Id,\n EventTypes = new[]\n {\n \"TRANSFER_OPERATION_SUCCESS\",\n \"TRANSFER_OPERATION_FAILED\",\n },\n PayloadFormat = \"JSON\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n s3_backup_bucketBucketIAMMember,\n notificationConfig,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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_default, err := storage.GetTransferProjectServiceAccount(ctx, \u0026storage.GetTransferProjectServiceAccountArgs{\n\t\t\tProject: pulumi.StringRef(project),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucket(ctx, \"s3-backup-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"%v-backup\", awsS3Bucket)),\n\t\t\tStorageClass: pulumi.String(\"NEARLINE\"),\n\t\t\tProject: pulumi.Any(project),\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 = storage.NewBucketIAMMember(ctx, \"s3-backup-bucket\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: s3_backup_bucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v\", _default.Email)),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\ts3_backup_bucket,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.Any(pubsubTopicName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnotificationConfig, err := pubsub.NewTopicIAMMember(ctx, \"notification_config\", \u0026pubsub.TopicIAMMemberArgs{\n\t\t\tTopic: topic.ID(),\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:%v\", _default.Email)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewTransferJob(ctx, \"s3-bucket-nightly-backup\", \u0026storage.TransferJobArgs{\n\t\t\tDescription: pulumi.String(\"Nightly backup of S3 bucket\"),\n\t\t\tProject: pulumi.Any(project),\n\t\t\tTransferSpec: \u0026storage.TransferJobTransferSpecArgs{\n\t\t\t\tObjectConditions: \u0026storage.TransferJobTransferSpecObjectConditionsArgs{\n\t\t\t\t\tMaxTimeElapsedSinceLastModification: pulumi.String(\"600s\"),\n\t\t\t\t\tExcludePrefixes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"requests.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTransferOptions: \u0026storage.TransferJobTransferSpecTransferOptionsArgs{\n\t\t\t\t\tDeleteObjectsUniqueInSink: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tAwsS3DataSource: \u0026storage.TransferJobTransferSpecAwsS3DataSourceArgs{\n\t\t\t\t\tBucketName: pulumi.Any(awsS3Bucket),\n\t\t\t\t\tAwsAccessKey: \u0026storage.TransferJobTransferSpecAwsS3DataSourceAwsAccessKeyArgs{\n\t\t\t\t\t\tAccessKeyId: pulumi.Any(awsAccessKey),\n\t\t\t\t\t\tSecretAccessKey: pulumi.Any(awsSecretKey),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tGcsDataSink: \u0026storage.TransferJobTransferSpecGcsDataSinkArgs{\n\t\t\t\t\tBucketName: s3_backup_bucket.Name,\n\t\t\t\t\tPath: pulumi.String(\"foo/bar/\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSchedule: \u0026storage.TransferJobScheduleArgs{\n\t\t\t\tScheduleStartDate: \u0026storage.TransferJobScheduleScheduleStartDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2018),\n\t\t\t\t\tMonth: pulumi.Int(10),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tScheduleEndDate: \u0026storage.TransferJobScheduleScheduleEndDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2019),\n\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\tDay: pulumi.Int(15),\n\t\t\t\t},\n\t\t\t\tStartTimeOfDay: \u0026storage.TransferJobScheduleStartTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(23),\n\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t\tRepeatInterval: pulumi.String(\"604800s\"),\n\t\t\t},\n\t\t\tNotificationConfig: \u0026storage.TransferJobNotificationConfigArgs{\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tEventTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"TRANSFER_OPERATION_SUCCESS\"),\n\t\t\t\t\tpulumi.String(\"TRANSFER_OPERATION_FAILED\"),\n\t\t\t\t},\n\t\t\t\tPayloadFormat: pulumi.String(\"JSON\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\ts3_backup_bucketBucketIAMMember,\n\t\t\tnotificationConfig,\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.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetTransferProjectServiceAccountArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.TopicIAMMember;\nimport com.pulumi.gcp.pubsub.TopicIAMMemberArgs;\nimport com.pulumi.gcp.storage.TransferJob;\nimport com.pulumi.gcp.storage.TransferJobArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecObjectConditionsArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecTransferOptionsArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecAwsS3DataSourceArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecAwsS3DataSourceAwsAccessKeyArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecGcsDataSinkArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobScheduleArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobScheduleScheduleStartDateArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobScheduleScheduleEndDateArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobScheduleStartTimeOfDayArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobNotificationConfigArgs;\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 default = StorageFunctions.getTransferProjectServiceAccount(GetTransferProjectServiceAccountArgs.builder()\n .project(project)\n .build());\n\n var s3_backup_bucket = new Bucket(\"s3-backup-bucket\", BucketArgs.builder()\n .name(String.format(\"%s-backup\", awsS3Bucket))\n .storageClass(\"NEARLINE\")\n .project(project)\n .location(\"US\")\n .build());\n\n var s3_backup_bucketBucketIAMMember = new BucketIAMMember(\"s3-backup-bucketBucketIAMMember\", BucketIAMMemberArgs.builder()\n .bucket(s3_backup_bucket.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:%s\", default_.email()))\n .build(), CustomResourceOptions.builder()\n .dependsOn(s3_backup_bucket)\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(pubsubTopicName)\n .build());\n\n var notificationConfig = new TopicIAMMember(\"notificationConfig\", TopicIAMMemberArgs.builder()\n .topic(topic.id())\n .role(\"roles/pubsub.publisher\")\n .member(String.format(\"serviceAccount:%s\", default_.email()))\n .build());\n\n var s3_bucket_nightly_backup = new TransferJob(\"s3-bucket-nightly-backup\", TransferJobArgs.builder()\n .description(\"Nightly backup of S3 bucket\")\n .project(project)\n .transferSpec(TransferJobTransferSpecArgs.builder()\n .objectConditions(TransferJobTransferSpecObjectConditionsArgs.builder()\n .maxTimeElapsedSinceLastModification(\"600s\")\n .excludePrefixes(\"requests.gz\")\n .build())\n .transferOptions(TransferJobTransferSpecTransferOptionsArgs.builder()\n .deleteObjectsUniqueInSink(false)\n .build())\n .awsS3DataSource(TransferJobTransferSpecAwsS3DataSourceArgs.builder()\n .bucketName(awsS3Bucket)\n .awsAccessKey(TransferJobTransferSpecAwsS3DataSourceAwsAccessKeyArgs.builder()\n .accessKeyId(awsAccessKey)\n .secretAccessKey(awsSecretKey)\n .build())\n .build())\n .gcsDataSink(TransferJobTransferSpecGcsDataSinkArgs.builder()\n .bucketName(s3_backup_bucket.name())\n .path(\"foo/bar/\")\n .build())\n .build())\n .schedule(TransferJobScheduleArgs.builder()\n .scheduleStartDate(TransferJobScheduleScheduleStartDateArgs.builder()\n .year(2018)\n .month(10)\n .day(1)\n .build())\n .scheduleEndDate(TransferJobScheduleScheduleEndDateArgs.builder()\n .year(2019)\n .month(1)\n .day(15)\n .build())\n .startTimeOfDay(TransferJobScheduleStartTimeOfDayArgs.builder()\n .hours(23)\n .minutes(30)\n .seconds(0)\n .nanos(0)\n .build())\n .repeatInterval(\"604800s\")\n .build())\n .notificationConfig(TransferJobNotificationConfigArgs.builder()\n .pubsubTopic(topic.id())\n .eventTypes( \n \"TRANSFER_OPERATION_SUCCESS\",\n \"TRANSFER_OPERATION_FAILED\")\n .payloadFormat(\"JSON\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n s3_backup_bucketBucketIAMMember,\n notificationConfig)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n s3-backup-bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${awsS3Bucket}-backup\n storageClass: NEARLINE\n project: ${project}\n location: US\n s3-backup-bucketBucketIAMMember:\n type: gcp:storage:BucketIAMMember\n name: s3-backup-bucket\n properties:\n bucket: ${[\"s3-backup-bucket\"].name}\n role: roles/storage.admin\n member: serviceAccount:${default.email}\n options:\n dependson:\n - ${[\"s3-backup-bucket\"]}\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: ${pubsubTopicName}\n notificationConfig:\n type: gcp:pubsub:TopicIAMMember\n name: notification_config\n properties:\n topic: ${topic.id}\n role: roles/pubsub.publisher\n member: serviceAccount:${default.email}\n s3-bucket-nightly-backup:\n type: gcp:storage:TransferJob\n properties:\n description: Nightly backup of S3 bucket\n project: ${project}\n transferSpec:\n objectConditions:\n maxTimeElapsedSinceLastModification: 600s\n excludePrefixes:\n - requests.gz\n transferOptions:\n deleteObjectsUniqueInSink: false\n awsS3DataSource:\n bucketName: ${awsS3Bucket}\n awsAccessKey:\n accessKeyId: ${awsAccessKey}\n secretAccessKey: ${awsSecretKey}\n gcsDataSink:\n bucketName: ${[\"s3-backup-bucket\"].name}\n path: foo/bar/\n schedule:\n scheduleStartDate:\n year: 2018\n month: 10\n day: 1\n scheduleEndDate:\n year: 2019\n month: 1\n day: 15\n startTimeOfDay:\n hours: 23\n minutes: 30\n seconds: 0\n nanos: 0\n repeatInterval: 604800s\n notificationConfig:\n pubsubTopic: ${topic.id}\n eventTypes:\n - TRANSFER_OPERATION_SUCCESS\n - TRANSFER_OPERATION_FAILED\n payloadFormat: JSON\n options:\n dependson:\n - ${[\"s3-backup-bucketBucketIAMMember\"]}\n - ${notificationConfig}\nvariables:\n default:\n fn::invoke:\n Function: gcp:storage:getTransferProjectServiceAccount\n Arguments:\n project: ${project}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nStorage Transfer Jobs can be imported using the Transfer Job's `project` and `name` (without the `transferJob/` prefix), e.g.\n\n* `{{project_id}}/{{name}}`, where `name` is a numeric value.\n\nWhen using the `pulumi import` command, Storage Transfer Jobs can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:storage/transferJob:TransferJob default {{project_id}}/123456789\n```\n\n", "properties": { "creationTime": { "type": "string", @@ -242678,7 +242678,7 @@ } }, "gcp:tpu/v2Vm:V2Vm": { - "description": "## Example Usage\n\n### Tpu V2 Vm Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getV2RuntimeVersions({});\nconst tpu = new gcp.tpu.V2Vm(\"tpu\", {\n name: \"test-tpu\",\n zone: \"us-central1-c\",\n runtimeVersion: \"tpu-vm-tf-2.13.0\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_v2_runtime_versions()\ntpu = gcp.tpu.V2Vm(\"tpu\",\n name=\"test-tpu\",\n zone=\"us-central1-c\",\n runtime_version=\"tpu-vm-tf-2.13.0\")\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 available = Gcp.Tpu.GetV2RuntimeVersions.Invoke();\n\n var tpu = new Gcp.Tpu.V2Vm(\"tpu\", new()\n {\n Name = \"test-tpu\",\n Zone = \"us-central1-c\",\n RuntimeVersion = \"tpu-vm-tf-2.13.0\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/tpu\"\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 := tpu.GetV2RuntimeVersions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.NewV2Vm(ctx, \"tpu\", \u0026tpu.V2VmArgs{\n\t\t\tName: pulumi.String(\"test-tpu\"),\n\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t\tRuntimeVersion: pulumi.String(\"tpu-vm-tf-2.13.0\"),\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.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetV2RuntimeVersionsArgs;\nimport com.pulumi.gcp.tpu.V2Vm;\nimport com.pulumi.gcp.tpu.V2VmArgs;\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 available = TpuFunctions.getV2RuntimeVersions();\n\n var tpu = new V2Vm(\"tpu\", V2VmArgs.builder()\n .name(\"test-tpu\")\n .zone(\"us-central1-c\")\n .runtimeVersion(\"tpu-vm-tf-2.13.0\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpu:\n type: gcp:tpu:V2Vm\n properties:\n name: test-tpu\n zone: us-central1-c\n runtimeVersion: tpu-vm-tf-2.13.0\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getV2RuntimeVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Tpu V2 Vm Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst available = gcp.tpu.getV2RuntimeVersions({});\nconst availableGetV2AcceleratorTypes = gcp.tpu.getV2AcceleratorTypes({});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"tpu-net\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"tpu-subnet\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: network.id,\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"tpu-sa\",\n displayName: \"Test TPU VM\",\n});\nconst disk = new gcp.compute.Disk(\"disk\", {\n name: \"tpu-disk\",\n image: \"debian-cloud/debian-11\",\n size: 10,\n type: \"pd-ssd\",\n zone: \"us-central1-c\",\n});\n// Wait after service account creation to limit eventual consistency errors.\nconst wait60Seconds = new time.index.Sleep(\"wait_60_seconds\", {createDuration: \"60s\"}, {\n dependsOn: [sa],\n});\nconst tpu = new gcp.tpu.V2Vm(\"tpu\", {\n name: \"test-tpu\",\n zone: \"us-central1-c\",\n description: \"Text description of the TPU.\",\n runtimeVersion: \"tpu-vm-tf-2.13.0\",\n acceleratorConfig: {\n type: \"V2\",\n topology: \"2x2\",\n },\n cidrBlock: \"10.0.0.0/29\",\n networkConfig: {\n canIpForward: true,\n enableExternalIps: true,\n network: network.id,\n subnetwork: subnet.id,\n },\n schedulingConfig: {\n preemptible: true,\n },\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n },\n serviceAccount: {\n email: sa.email,\n scopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n dataDisks: [{\n sourceDisk: disk.id,\n mode: \"READ_ONLY\",\n }],\n labels: {\n foo: \"bar\",\n },\n metadata: {\n foo: \"bar\",\n },\n tags: [\"foo\"],\n}, {\n dependsOn: [wait60Seconds],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\navailable = gcp.tpu.get_v2_runtime_versions()\navailable_get_v2_accelerator_types = gcp.tpu.get_v2_accelerator_types()\nnetwork = gcp.compute.Network(\"network\",\n name=\"tpu-net\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"tpu-subnet\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=network.id)\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"tpu-sa\",\n display_name=\"Test TPU VM\")\ndisk = gcp.compute.Disk(\"disk\",\n name=\"tpu-disk\",\n image=\"debian-cloud/debian-11\",\n size=10,\n type=\"pd-ssd\",\n zone=\"us-central1-c\")\n# Wait after service account creation to limit eventual consistency errors.\nwait60_seconds = time.index.Sleep(\"wait_60_seconds\", create_duration=60s,\nopts = pulumi.ResourceOptions(depends_on=[sa]))\ntpu = gcp.tpu.V2Vm(\"tpu\",\n name=\"test-tpu\",\n zone=\"us-central1-c\",\n description=\"Text description of the TPU.\",\n runtime_version=\"tpu-vm-tf-2.13.0\",\n accelerator_config={\n \"type\": \"V2\",\n \"topology\": \"2x2\",\n },\n cidr_block=\"10.0.0.0/29\",\n network_config={\n \"canIpForward\": True,\n \"enableExternalIps\": True,\n \"network\": network.id,\n \"subnetwork\": subnet.id,\n },\n scheduling_config={\n \"preemptible\": True,\n },\n shielded_instance_config={\n \"enableSecureBoot\": True,\n },\n service_account={\n \"email\": sa.email,\n \"scopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n data_disks=[{\n \"sourceDisk\": disk.id,\n \"mode\": \"READ_ONLY\",\n }],\n labels={\n \"foo\": \"bar\",\n },\n metadata={\n \"foo\": \"bar\",\n },\n tags=[\"foo\"],\n opts = pulumi.ResourceOptions(depends_on=[wait60_seconds]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetV2RuntimeVersions.Invoke();\n\n var availableGetV2AcceleratorTypes = Gcp.Tpu.GetV2AcceleratorTypes.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"tpu-net\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"tpu-subnet\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = network.Id,\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"tpu-sa\",\n DisplayName = \"Test TPU VM\",\n });\n\n var disk = new Gcp.Compute.Disk(\"disk\", new()\n {\n Name = \"tpu-disk\",\n Image = \"debian-cloud/debian-11\",\n Size = 10,\n Type = \"pd-ssd\",\n Zone = \"us-central1-c\",\n });\n\n // Wait after service account creation to limit eventual consistency errors.\n var wait60Seconds = new Time.Index.Sleep(\"wait_60_seconds\", new()\n {\n CreateDuration = \"60s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sa,\n },\n });\n\n var tpu = new Gcp.Tpu.V2Vm(\"tpu\", new()\n {\n Name = \"test-tpu\",\n Zone = \"us-central1-c\",\n Description = \"Text description of the TPU.\",\n RuntimeVersion = \"tpu-vm-tf-2.13.0\",\n AcceleratorConfig = new Gcp.Tpu.Inputs.V2VmAcceleratorConfigArgs\n {\n Type = \"V2\",\n Topology = \"2x2\",\n },\n CidrBlock = \"10.0.0.0/29\",\n NetworkConfig = new Gcp.Tpu.Inputs.V2VmNetworkConfigArgs\n {\n CanIpForward = true,\n EnableExternalIps = true,\n Network = network.Id,\n Subnetwork = subnet.Id,\n },\n SchedulingConfig = new Gcp.Tpu.Inputs.V2VmSchedulingConfigArgs\n {\n Preemptible = true,\n },\n ShieldedInstanceConfig = new Gcp.Tpu.Inputs.V2VmShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n },\n ServiceAccount = new Gcp.Tpu.Inputs.V2VmServiceAccountArgs\n {\n Email = sa.Email,\n Scopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n },\n DataDisks = new[]\n {\n new Gcp.Tpu.Inputs.V2VmDataDiskArgs\n {\n SourceDisk = disk.Id,\n Mode = \"READ_ONLY\",\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n Tags = new[]\n {\n \"foo\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait60Seconds,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\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 := tpu.GetV2RuntimeVersions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.GetV2AcceleratorTypes(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tpu-net\"),\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\tName: pulumi.String(\"tpu-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"tpu-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test TPU VM\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdisk, err := compute.NewDisk(ctx, \"disk\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"tpu-disk\"),\n\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\tSize: pulumi.Int(10),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Wait after service account creation to limit eventual consistency errors.\n\t\twait60Seconds, err := time.NewSleep(ctx, \"wait_60_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"60s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsa,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.NewV2Vm(ctx, \"tpu\", \u0026tpu.V2VmArgs{\n\t\t\tName: pulumi.String(\"test-tpu\"),\n\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t\tDescription: pulumi.String(\"Text description of the TPU.\"),\n\t\t\tRuntimeVersion: pulumi.String(\"tpu-vm-tf-2.13.0\"),\n\t\t\tAcceleratorConfig: \u0026tpu.V2VmAcceleratorConfigArgs{\n\t\t\t\tType: pulumi.String(\"V2\"),\n\t\t\t\tTopology: pulumi.String(\"2x2\"),\n\t\t\t},\n\t\t\tCidrBlock: pulumi.String(\"10.0.0.0/29\"),\n\t\t\tNetworkConfig: \u0026tpu.V2VmNetworkConfigArgs{\n\t\t\t\tCanIpForward: pulumi.Bool(true),\n\t\t\t\tEnableExternalIps: pulumi.Bool(true),\n\t\t\t\tNetwork: network.ID(),\n\t\t\t\tSubnetwork: subnet.ID(),\n\t\t\t},\n\t\t\tSchedulingConfig: \u0026tpu.V2VmSchedulingConfigArgs{\n\t\t\t\tPreemptible: pulumi.Bool(true),\n\t\t\t},\n\t\t\tShieldedInstanceConfig: \u0026tpu.V2VmShieldedInstanceConfigArgs{\n\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t},\n\t\t\tServiceAccount: \u0026tpu.V2VmServiceAccountArgs{\n\t\t\t\tEmail: sa.Email,\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataDisks: tpu.V2VmDataDiskArray{\n\t\t\t\t\u0026tpu.V2VmDataDiskArgs{\n\t\t\t\t\tSourceDisk: disk.ID(),\n\t\t\t\t\tMode: pulumi.String(\"READ_ONLY\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait60Seconds,\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.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetV2RuntimeVersionsArgs;\nimport com.pulumi.gcp.tpu.inputs.GetV2AcceleratorTypesArgs;\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.tpu.V2Vm;\nimport com.pulumi.gcp.tpu.V2VmArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmAcceleratorConfigArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmNetworkConfigArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmSchedulingConfigArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmServiceAccountArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmDataDiskArgs;\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 available = TpuFunctions.getV2RuntimeVersions();\n\n final var availableGetV2AcceleratorTypes = TpuFunctions.getV2AcceleratorTypes();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"tpu-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"tpu-subnet\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(network.id())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"tpu-sa\")\n .displayName(\"Test TPU VM\")\n .build());\n\n var disk = new Disk(\"disk\", DiskArgs.builder()\n .name(\"tpu-disk\")\n .image(\"debian-cloud/debian-11\")\n .size(10)\n .type(\"pd-ssd\")\n .zone(\"us-central1-c\")\n .build());\n\n // Wait after service account creation to limit eventual consistency errors.\n var wait60Seconds = new Sleep(\"wait60Seconds\", SleepArgs.builder()\n .createDuration(\"60s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(sa)\n .build());\n\n var tpu = new V2Vm(\"tpu\", V2VmArgs.builder()\n .name(\"test-tpu\")\n .zone(\"us-central1-c\")\n .description(\"Text description of the TPU.\")\n .runtimeVersion(\"tpu-vm-tf-2.13.0\")\n .acceleratorConfig(V2VmAcceleratorConfigArgs.builder()\n .type(\"V2\")\n .topology(\"2x2\")\n .build())\n .cidrBlock(\"10.0.0.0/29\")\n .networkConfig(V2VmNetworkConfigArgs.builder()\n .canIpForward(true)\n .enableExternalIps(true)\n .network(network.id())\n .subnetwork(subnet.id())\n .build())\n .schedulingConfig(V2VmSchedulingConfigArgs.builder()\n .preemptible(true)\n .build())\n .shieldedInstanceConfig(V2VmShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .build())\n .serviceAccount(V2VmServiceAccountArgs.builder()\n .email(sa.email())\n .scopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .build())\n .dataDisks(V2VmDataDiskArgs.builder()\n .sourceDisk(disk.id())\n .mode(\"READ_ONLY\")\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .metadata(Map.of(\"foo\", \"bar\"))\n .tags(\"foo\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait60Seconds)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpu:\n type: gcp:tpu:V2Vm\n properties:\n name: test-tpu\n zone: us-central1-c\n description: Text description of the TPU.\n runtimeVersion: tpu-vm-tf-2.13.0\n acceleratorConfig:\n type: V2\n topology: 2x2\n cidrBlock: 10.0.0.0/29\n networkConfig:\n canIpForward: true\n enableExternalIps: true\n network: ${network.id}\n subnetwork: ${subnet.id}\n schedulingConfig:\n preemptible: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n serviceAccount:\n email: ${sa.email}\n scopes:\n - https://www.googleapis.com/auth/cloud-platform\n dataDisks:\n - sourceDisk: ${disk.id}\n mode: READ_ONLY\n labels:\n foo: bar\n metadata:\n foo: bar\n tags:\n - foo\n options:\n dependson:\n - ${wait60Seconds}\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: tpu-subnet\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${network.id}\n network:\n type: gcp:compute:Network\n properties:\n name: tpu-net\n autoCreateSubnetworks: false\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: tpu-sa\n displayName: Test TPU VM\n disk:\n type: gcp:compute:Disk\n properties:\n name: tpu-disk\n image: debian-cloud/debian-11\n size: 10\n type: pd-ssd\n zone: us-central1-c\n # Wait after service account creation to limit eventual consistency errors.\n wait60Seconds:\n type: time:sleep\n name: wait_60_seconds\n properties:\n createDuration: 60s\n options:\n dependson:\n - ${sa}\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getV2RuntimeVersions\n Arguments: {}\n availableGetV2AcceleratorTypes:\n fn::invoke:\n Function: gcp:tpu:getV2AcceleratorTypes\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVm can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{zone}}/nodes/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Vm can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:tpu/v2Vm:V2Vm default projects/{{project}}/locations/{{zone}}/nodes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:tpu/v2Vm:V2Vm default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:tpu/v2Vm:V2Vm default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:tpu/v2Vm:V2Vm default {{name}}\n```\n\n", + "description": "## Example Usage\n\n### Tpu V2 Vm Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getV2RuntimeVersions({});\nconst tpu = new gcp.tpu.V2Vm(\"tpu\", {\n name: \"test-tpu\",\n zone: \"us-central1-c\",\n runtimeVersion: \"tpu-vm-tf-2.13.0\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_v2_runtime_versions()\ntpu = gcp.tpu.V2Vm(\"tpu\",\n name=\"test-tpu\",\n zone=\"us-central1-c\",\n runtime_version=\"tpu-vm-tf-2.13.0\")\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 available = Gcp.Tpu.GetV2RuntimeVersions.Invoke();\n\n var tpu = new Gcp.Tpu.V2Vm(\"tpu\", new()\n {\n Name = \"test-tpu\",\n Zone = \"us-central1-c\",\n RuntimeVersion = \"tpu-vm-tf-2.13.0\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/tpu\"\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 := tpu.GetV2RuntimeVersions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.NewV2Vm(ctx, \"tpu\", \u0026tpu.V2VmArgs{\n\t\t\tName: pulumi.String(\"test-tpu\"),\n\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t\tRuntimeVersion: pulumi.String(\"tpu-vm-tf-2.13.0\"),\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.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetV2RuntimeVersionsArgs;\nimport com.pulumi.gcp.tpu.V2Vm;\nimport com.pulumi.gcp.tpu.V2VmArgs;\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 available = TpuFunctions.getV2RuntimeVersions();\n\n var tpu = new V2Vm(\"tpu\", V2VmArgs.builder()\n .name(\"test-tpu\")\n .zone(\"us-central1-c\")\n .runtimeVersion(\"tpu-vm-tf-2.13.0\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpu:\n type: gcp:tpu:V2Vm\n properties:\n name: test-tpu\n zone: us-central1-c\n runtimeVersion: tpu-vm-tf-2.13.0\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getV2RuntimeVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Tpu V2 Vm Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst available = gcp.tpu.getV2RuntimeVersions({});\nconst availableGetV2AcceleratorTypes = gcp.tpu.getV2AcceleratorTypes({});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"tpu-net\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"tpu-subnet\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: network.id,\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"tpu-sa\",\n displayName: \"Test TPU VM\",\n});\nconst disk = new gcp.compute.Disk(\"disk\", {\n name: \"tpu-disk\",\n image: \"debian-cloud/debian-11\",\n size: 10,\n type: \"pd-ssd\",\n zone: \"us-central1-c\",\n});\n// Wait after service account creation to limit eventual consistency errors.\nconst wait60Seconds = new time.index.Sleep(\"wait_60_seconds\", {createDuration: \"60s\"}, {\n dependsOn: [sa],\n});\nconst tpu = new gcp.tpu.V2Vm(\"tpu\", {\n name: \"test-tpu\",\n zone: \"us-central1-c\",\n description: \"Text description of the TPU.\",\n runtimeVersion: \"tpu-vm-tf-2.13.0\",\n acceleratorConfig: {\n type: \"V2\",\n topology: \"2x2\",\n },\n cidrBlock: \"10.0.0.0/29\",\n networkConfig: {\n canIpForward: true,\n enableExternalIps: true,\n network: network.id,\n subnetwork: subnet.id,\n },\n schedulingConfig: {\n preemptible: true,\n },\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n },\n serviceAccount: {\n email: sa.email,\n scopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n dataDisks: [{\n sourceDisk: disk.id,\n mode: \"READ_ONLY\",\n }],\n labels: {\n foo: \"bar\",\n },\n metadata: {\n foo: \"bar\",\n },\n tags: [\"foo\"],\n}, {\n dependsOn: [wait60Seconds],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\navailable = gcp.tpu.get_v2_runtime_versions()\navailable_get_v2_accelerator_types = gcp.tpu.get_v2_accelerator_types()\nnetwork = gcp.compute.Network(\"network\",\n name=\"tpu-net\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"tpu-subnet\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=network.id)\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"tpu-sa\",\n display_name=\"Test TPU VM\")\ndisk = gcp.compute.Disk(\"disk\",\n name=\"tpu-disk\",\n image=\"debian-cloud/debian-11\",\n size=10,\n type=\"pd-ssd\",\n zone=\"us-central1-c\")\n# Wait after service account creation to limit eventual consistency errors.\nwait60_seconds = time.index.Sleep(\"wait_60_seconds\", create_duration=60s,\nopts = pulumi.ResourceOptions(depends_on=[sa]))\ntpu = gcp.tpu.V2Vm(\"tpu\",\n name=\"test-tpu\",\n zone=\"us-central1-c\",\n description=\"Text description of the TPU.\",\n runtime_version=\"tpu-vm-tf-2.13.0\",\n accelerator_config={\n \"type\": \"V2\",\n \"topology\": \"2x2\",\n },\n cidr_block=\"10.0.0.0/29\",\n network_config={\n \"can_ip_forward\": True,\n \"enable_external_ips\": True,\n \"network\": network.id,\n \"subnetwork\": subnet.id,\n },\n scheduling_config={\n \"preemptible\": True,\n },\n shielded_instance_config={\n \"enable_secure_boot\": True,\n },\n service_account={\n \"email\": sa.email,\n \"scopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n data_disks=[{\n \"source_disk\": disk.id,\n \"mode\": \"READ_ONLY\",\n }],\n labels={\n \"foo\": \"bar\",\n },\n metadata={\n \"foo\": \"bar\",\n },\n tags=[\"foo\"],\n opts = pulumi.ResourceOptions(depends_on=[wait60_seconds]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetV2RuntimeVersions.Invoke();\n\n var availableGetV2AcceleratorTypes = Gcp.Tpu.GetV2AcceleratorTypes.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"tpu-net\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"tpu-subnet\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = network.Id,\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"tpu-sa\",\n DisplayName = \"Test TPU VM\",\n });\n\n var disk = new Gcp.Compute.Disk(\"disk\", new()\n {\n Name = \"tpu-disk\",\n Image = \"debian-cloud/debian-11\",\n Size = 10,\n Type = \"pd-ssd\",\n Zone = \"us-central1-c\",\n });\n\n // Wait after service account creation to limit eventual consistency errors.\n var wait60Seconds = new Time.Index.Sleep(\"wait_60_seconds\", new()\n {\n CreateDuration = \"60s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sa,\n },\n });\n\n var tpu = new Gcp.Tpu.V2Vm(\"tpu\", new()\n {\n Name = \"test-tpu\",\n Zone = \"us-central1-c\",\n Description = \"Text description of the TPU.\",\n RuntimeVersion = \"tpu-vm-tf-2.13.0\",\n AcceleratorConfig = new Gcp.Tpu.Inputs.V2VmAcceleratorConfigArgs\n {\n Type = \"V2\",\n Topology = \"2x2\",\n },\n CidrBlock = \"10.0.0.0/29\",\n NetworkConfig = new Gcp.Tpu.Inputs.V2VmNetworkConfigArgs\n {\n CanIpForward = true,\n EnableExternalIps = true,\n Network = network.Id,\n Subnetwork = subnet.Id,\n },\n SchedulingConfig = new Gcp.Tpu.Inputs.V2VmSchedulingConfigArgs\n {\n Preemptible = true,\n },\n ShieldedInstanceConfig = new Gcp.Tpu.Inputs.V2VmShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n },\n ServiceAccount = new Gcp.Tpu.Inputs.V2VmServiceAccountArgs\n {\n Email = sa.Email,\n Scopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n },\n DataDisks = new[]\n {\n new Gcp.Tpu.Inputs.V2VmDataDiskArgs\n {\n SourceDisk = disk.Id,\n Mode = \"READ_ONLY\",\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n Tags = new[]\n {\n \"foo\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait60Seconds,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\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 := tpu.GetV2RuntimeVersions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.GetV2AcceleratorTypes(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tpu-net\"),\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\tName: pulumi.String(\"tpu-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"tpu-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test TPU VM\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdisk, err := compute.NewDisk(ctx, \"disk\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"tpu-disk\"),\n\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\tSize: pulumi.Int(10),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Wait after service account creation to limit eventual consistency errors.\n\t\twait60Seconds, err := time.NewSleep(ctx, \"wait_60_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"60s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsa,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.NewV2Vm(ctx, \"tpu\", \u0026tpu.V2VmArgs{\n\t\t\tName: pulumi.String(\"test-tpu\"),\n\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t\tDescription: pulumi.String(\"Text description of the TPU.\"),\n\t\t\tRuntimeVersion: pulumi.String(\"tpu-vm-tf-2.13.0\"),\n\t\t\tAcceleratorConfig: \u0026tpu.V2VmAcceleratorConfigArgs{\n\t\t\t\tType: pulumi.String(\"V2\"),\n\t\t\t\tTopology: pulumi.String(\"2x2\"),\n\t\t\t},\n\t\t\tCidrBlock: pulumi.String(\"10.0.0.0/29\"),\n\t\t\tNetworkConfig: \u0026tpu.V2VmNetworkConfigArgs{\n\t\t\t\tCanIpForward: pulumi.Bool(true),\n\t\t\t\tEnableExternalIps: pulumi.Bool(true),\n\t\t\t\tNetwork: network.ID(),\n\t\t\t\tSubnetwork: subnet.ID(),\n\t\t\t},\n\t\t\tSchedulingConfig: \u0026tpu.V2VmSchedulingConfigArgs{\n\t\t\t\tPreemptible: pulumi.Bool(true),\n\t\t\t},\n\t\t\tShieldedInstanceConfig: \u0026tpu.V2VmShieldedInstanceConfigArgs{\n\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t},\n\t\t\tServiceAccount: \u0026tpu.V2VmServiceAccountArgs{\n\t\t\t\tEmail: sa.Email,\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataDisks: tpu.V2VmDataDiskArray{\n\t\t\t\t\u0026tpu.V2VmDataDiskArgs{\n\t\t\t\t\tSourceDisk: disk.ID(),\n\t\t\t\t\tMode: pulumi.String(\"READ_ONLY\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait60Seconds,\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.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetV2RuntimeVersionsArgs;\nimport com.pulumi.gcp.tpu.inputs.GetV2AcceleratorTypesArgs;\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.tpu.V2Vm;\nimport com.pulumi.gcp.tpu.V2VmArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmAcceleratorConfigArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmNetworkConfigArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmSchedulingConfigArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmServiceAccountArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmDataDiskArgs;\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 available = TpuFunctions.getV2RuntimeVersions();\n\n final var availableGetV2AcceleratorTypes = TpuFunctions.getV2AcceleratorTypes();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"tpu-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"tpu-subnet\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(network.id())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"tpu-sa\")\n .displayName(\"Test TPU VM\")\n .build());\n\n var disk = new Disk(\"disk\", DiskArgs.builder()\n .name(\"tpu-disk\")\n .image(\"debian-cloud/debian-11\")\n .size(10)\n .type(\"pd-ssd\")\n .zone(\"us-central1-c\")\n .build());\n\n // Wait after service account creation to limit eventual consistency errors.\n var wait60Seconds = new Sleep(\"wait60Seconds\", SleepArgs.builder()\n .createDuration(\"60s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(sa)\n .build());\n\n var tpu = new V2Vm(\"tpu\", V2VmArgs.builder()\n .name(\"test-tpu\")\n .zone(\"us-central1-c\")\n .description(\"Text description of the TPU.\")\n .runtimeVersion(\"tpu-vm-tf-2.13.0\")\n .acceleratorConfig(V2VmAcceleratorConfigArgs.builder()\n .type(\"V2\")\n .topology(\"2x2\")\n .build())\n .cidrBlock(\"10.0.0.0/29\")\n .networkConfig(V2VmNetworkConfigArgs.builder()\n .canIpForward(true)\n .enableExternalIps(true)\n .network(network.id())\n .subnetwork(subnet.id())\n .build())\n .schedulingConfig(V2VmSchedulingConfigArgs.builder()\n .preemptible(true)\n .build())\n .shieldedInstanceConfig(V2VmShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .build())\n .serviceAccount(V2VmServiceAccountArgs.builder()\n .email(sa.email())\n .scopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .build())\n .dataDisks(V2VmDataDiskArgs.builder()\n .sourceDisk(disk.id())\n .mode(\"READ_ONLY\")\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .metadata(Map.of(\"foo\", \"bar\"))\n .tags(\"foo\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait60Seconds)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpu:\n type: gcp:tpu:V2Vm\n properties:\n name: test-tpu\n zone: us-central1-c\n description: Text description of the TPU.\n runtimeVersion: tpu-vm-tf-2.13.0\n acceleratorConfig:\n type: V2\n topology: 2x2\n cidrBlock: 10.0.0.0/29\n networkConfig:\n canIpForward: true\n enableExternalIps: true\n network: ${network.id}\n subnetwork: ${subnet.id}\n schedulingConfig:\n preemptible: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n serviceAccount:\n email: ${sa.email}\n scopes:\n - https://www.googleapis.com/auth/cloud-platform\n dataDisks:\n - sourceDisk: ${disk.id}\n mode: READ_ONLY\n labels:\n foo: bar\n metadata:\n foo: bar\n tags:\n - foo\n options:\n dependson:\n - ${wait60Seconds}\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: tpu-subnet\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${network.id}\n network:\n type: gcp:compute:Network\n properties:\n name: tpu-net\n autoCreateSubnetworks: false\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: tpu-sa\n displayName: Test TPU VM\n disk:\n type: gcp:compute:Disk\n properties:\n name: tpu-disk\n image: debian-cloud/debian-11\n size: 10\n type: pd-ssd\n zone: us-central1-c\n # Wait after service account creation to limit eventual consistency errors.\n wait60Seconds:\n type: time:sleep\n name: wait_60_seconds\n properties:\n createDuration: 60s\n options:\n dependson:\n - ${sa}\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getV2RuntimeVersions\n Arguments: {}\n availableGetV2AcceleratorTypes:\n fn::invoke:\n Function: gcp:tpu:getV2AcceleratorTypes\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVm can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{zone}}/nodes/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Vm can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:tpu/v2Vm:V2Vm default projects/{{project}}/locations/{{zone}}/nodes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:tpu/v2Vm:V2Vm default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:tpu/v2Vm:V2Vm default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:tpu/v2Vm:V2Vm default {{name}}\n```\n\n", "properties": { "acceleratorConfig": { "$ref": "#/types/gcp:tpu/V2VmAcceleratorConfig:V2VmAcceleratorConfig", @@ -243246,7 +243246,7 @@ } }, "gcp:vertex/aiDeploymentResourcePool:AiDeploymentResourcePool": { - "description": "'DeploymentResourcePool can be shared by multiple deployed models,\nwhose underlying specification consists of dedicated resources.'\n\n\nTo get more information about DeploymentResourcePool, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.deploymentResourcePools)\n\n## Example Usage\n\n### Vertex Ai Deployment Resource Pool\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst deploymentResourcePool = new gcp.vertex.AiDeploymentResourcePool(\"deployment_resource_pool\", {\n region: \"us-central1\",\n name: \"example-deployment-resource-pool\",\n dedicatedResources: {\n machineSpec: {\n machineType: \"n1-standard-4\",\n acceleratorType: \"NVIDIA_TESLA_K80\",\n acceleratorCount: 1,\n },\n minReplicaCount: 1,\n maxReplicaCount: 2,\n autoscalingMetricSpecs: [{\n metricName: \"aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle\",\n target: 60,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndeployment_resource_pool = gcp.vertex.AiDeploymentResourcePool(\"deployment_resource_pool\",\n region=\"us-central1\",\n name=\"example-deployment-resource-pool\",\n dedicated_resources={\n \"machineSpec\": {\n \"machineType\": \"n1-standard-4\",\n \"acceleratorType\": \"NVIDIA_TESLA_K80\",\n \"acceleratorCount\": 1,\n },\n \"minReplicaCount\": 1,\n \"maxReplicaCount\": 2,\n \"autoscalingMetricSpecs\": [{\n \"metricName\": \"aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle\",\n \"target\": 60,\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 deploymentResourcePool = new Gcp.Vertex.AiDeploymentResourcePool(\"deployment_resource_pool\", new()\n {\n Region = \"us-central1\",\n Name = \"example-deployment-resource-pool\",\n DedicatedResources = new Gcp.Vertex.Inputs.AiDeploymentResourcePoolDedicatedResourcesArgs\n {\n MachineSpec = new Gcp.Vertex.Inputs.AiDeploymentResourcePoolDedicatedResourcesMachineSpecArgs\n {\n MachineType = \"n1-standard-4\",\n AcceleratorType = \"NVIDIA_TESLA_K80\",\n AcceleratorCount = 1,\n },\n MinReplicaCount = 1,\n MaxReplicaCount = 2,\n AutoscalingMetricSpecs = new[]\n {\n new Gcp.Vertex.Inputs.AiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecArgs\n {\n MetricName = \"aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle\",\n Target = 60,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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 := vertex.NewAiDeploymentResourcePool(ctx, \"deployment_resource_pool\", \u0026vertex.AiDeploymentResourcePoolArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"example-deployment-resource-pool\"),\n\t\t\tDedicatedResources: \u0026vertex.AiDeploymentResourcePoolDedicatedResourcesArgs{\n\t\t\t\tMachineSpec: \u0026vertex.AiDeploymentResourcePoolDedicatedResourcesMachineSpecArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\t\tAcceleratorType: pulumi.String(\"NVIDIA_TESLA_K80\"),\n\t\t\t\t\tAcceleratorCount: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tMinReplicaCount: pulumi.Int(1),\n\t\t\t\tMaxReplicaCount: pulumi.Int(2),\n\t\t\t\tAutoscalingMetricSpecs: vertex.AiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecArray{\n\t\t\t\t\t\u0026vertex.AiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecArgs{\n\t\t\t\t\t\tMetricName: pulumi.String(\"aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle\"),\n\t\t\t\t\t\tTarget: pulumi.Int(60),\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.vertex.AiDeploymentResourcePool;\nimport com.pulumi.gcp.vertex.AiDeploymentResourcePoolArgs;\nimport com.pulumi.gcp.vertex.inputs.AiDeploymentResourcePoolDedicatedResourcesArgs;\nimport com.pulumi.gcp.vertex.inputs.AiDeploymentResourcePoolDedicatedResourcesMachineSpecArgs;\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 deploymentResourcePool = new AiDeploymentResourcePool(\"deploymentResourcePool\", AiDeploymentResourcePoolArgs.builder()\n .region(\"us-central1\")\n .name(\"example-deployment-resource-pool\")\n .dedicatedResources(AiDeploymentResourcePoolDedicatedResourcesArgs.builder()\n .machineSpec(AiDeploymentResourcePoolDedicatedResourcesMachineSpecArgs.builder()\n .machineType(\"n1-standard-4\")\n .acceleratorType(\"NVIDIA_TESLA_K80\")\n .acceleratorCount(1)\n .build())\n .minReplicaCount(1)\n .maxReplicaCount(2)\n .autoscalingMetricSpecs(AiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecArgs.builder()\n .metricName(\"aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle\")\n .target(60)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n deploymentResourcePool:\n type: gcp:vertex:AiDeploymentResourcePool\n name: deployment_resource_pool\n properties:\n region: us-central1\n name: example-deployment-resource-pool\n dedicatedResources:\n machineSpec:\n machineType: n1-standard-4\n acceleratorType: NVIDIA_TESLA_K80\n acceleratorCount: 1\n minReplicaCount: 1\n maxReplicaCount: 2\n autoscalingMetricSpecs:\n - metricName: aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle\n target: 60\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDeploymentResourcePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/deploymentResourcePools/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, DeploymentResourcePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiDeploymentResourcePool:AiDeploymentResourcePool default projects/{{project}}/locations/{{region}}/deploymentResourcePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiDeploymentResourcePool:AiDeploymentResourcePool default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiDeploymentResourcePool:AiDeploymentResourcePool default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiDeploymentResourcePool:AiDeploymentResourcePool default {{name}}\n```\n\n", + "description": "'DeploymentResourcePool can be shared by multiple deployed models,\nwhose underlying specification consists of dedicated resources.'\n\n\nTo get more information about DeploymentResourcePool, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.deploymentResourcePools)\n\n## Example Usage\n\n### Vertex Ai Deployment Resource Pool\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst deploymentResourcePool = new gcp.vertex.AiDeploymentResourcePool(\"deployment_resource_pool\", {\n region: \"us-central1\",\n name: \"example-deployment-resource-pool\",\n dedicatedResources: {\n machineSpec: {\n machineType: \"n1-standard-4\",\n acceleratorType: \"NVIDIA_TESLA_K80\",\n acceleratorCount: 1,\n },\n minReplicaCount: 1,\n maxReplicaCount: 2,\n autoscalingMetricSpecs: [{\n metricName: \"aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle\",\n target: 60,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndeployment_resource_pool = gcp.vertex.AiDeploymentResourcePool(\"deployment_resource_pool\",\n region=\"us-central1\",\n name=\"example-deployment-resource-pool\",\n dedicated_resources={\n \"machine_spec\": {\n \"machine_type\": \"n1-standard-4\",\n \"accelerator_type\": \"NVIDIA_TESLA_K80\",\n \"accelerator_count\": 1,\n },\n \"min_replica_count\": 1,\n \"max_replica_count\": 2,\n \"autoscaling_metric_specs\": [{\n \"metric_name\": \"aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle\",\n \"target\": 60,\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 deploymentResourcePool = new Gcp.Vertex.AiDeploymentResourcePool(\"deployment_resource_pool\", new()\n {\n Region = \"us-central1\",\n Name = \"example-deployment-resource-pool\",\n DedicatedResources = new Gcp.Vertex.Inputs.AiDeploymentResourcePoolDedicatedResourcesArgs\n {\n MachineSpec = new Gcp.Vertex.Inputs.AiDeploymentResourcePoolDedicatedResourcesMachineSpecArgs\n {\n MachineType = \"n1-standard-4\",\n AcceleratorType = \"NVIDIA_TESLA_K80\",\n AcceleratorCount = 1,\n },\n MinReplicaCount = 1,\n MaxReplicaCount = 2,\n AutoscalingMetricSpecs = new[]\n {\n new Gcp.Vertex.Inputs.AiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecArgs\n {\n MetricName = \"aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle\",\n Target = 60,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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 := vertex.NewAiDeploymentResourcePool(ctx, \"deployment_resource_pool\", \u0026vertex.AiDeploymentResourcePoolArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"example-deployment-resource-pool\"),\n\t\t\tDedicatedResources: \u0026vertex.AiDeploymentResourcePoolDedicatedResourcesArgs{\n\t\t\t\tMachineSpec: \u0026vertex.AiDeploymentResourcePoolDedicatedResourcesMachineSpecArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\t\tAcceleratorType: pulumi.String(\"NVIDIA_TESLA_K80\"),\n\t\t\t\t\tAcceleratorCount: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tMinReplicaCount: pulumi.Int(1),\n\t\t\t\tMaxReplicaCount: pulumi.Int(2),\n\t\t\t\tAutoscalingMetricSpecs: vertex.AiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecArray{\n\t\t\t\t\t\u0026vertex.AiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecArgs{\n\t\t\t\t\t\tMetricName: pulumi.String(\"aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle\"),\n\t\t\t\t\t\tTarget: pulumi.Int(60),\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.vertex.AiDeploymentResourcePool;\nimport com.pulumi.gcp.vertex.AiDeploymentResourcePoolArgs;\nimport com.pulumi.gcp.vertex.inputs.AiDeploymentResourcePoolDedicatedResourcesArgs;\nimport com.pulumi.gcp.vertex.inputs.AiDeploymentResourcePoolDedicatedResourcesMachineSpecArgs;\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 deploymentResourcePool = new AiDeploymentResourcePool(\"deploymentResourcePool\", AiDeploymentResourcePoolArgs.builder()\n .region(\"us-central1\")\n .name(\"example-deployment-resource-pool\")\n .dedicatedResources(AiDeploymentResourcePoolDedicatedResourcesArgs.builder()\n .machineSpec(AiDeploymentResourcePoolDedicatedResourcesMachineSpecArgs.builder()\n .machineType(\"n1-standard-4\")\n .acceleratorType(\"NVIDIA_TESLA_K80\")\n .acceleratorCount(1)\n .build())\n .minReplicaCount(1)\n .maxReplicaCount(2)\n .autoscalingMetricSpecs(AiDeploymentResourcePoolDedicatedResourcesAutoscalingMetricSpecArgs.builder()\n .metricName(\"aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle\")\n .target(60)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n deploymentResourcePool:\n type: gcp:vertex:AiDeploymentResourcePool\n name: deployment_resource_pool\n properties:\n region: us-central1\n name: example-deployment-resource-pool\n dedicatedResources:\n machineSpec:\n machineType: n1-standard-4\n acceleratorType: NVIDIA_TESLA_K80\n acceleratorCount: 1\n minReplicaCount: 1\n maxReplicaCount: 2\n autoscalingMetricSpecs:\n - metricName: aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle\n target: 60\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDeploymentResourcePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/deploymentResourcePools/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, DeploymentResourcePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiDeploymentResourcePool:AiDeploymentResourcePool default projects/{{project}}/locations/{{region}}/deploymentResourcePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiDeploymentResourcePool:AiDeploymentResourcePool default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiDeploymentResourcePool:AiDeploymentResourcePool default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiDeploymentResourcePool:AiDeploymentResourcePool default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -243328,7 +243328,7 @@ } }, "gcp:vertex/aiEndpoint:AiEndpoint": { - "description": "Models are deployed into it, and afterwards Endpoint is called to obtain predictions and explanations.\n\n\nTo get more information about Endpoint, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1beta1/projects.locations.endpoints)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Endpoint Network\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vertexNetwork = new gcp.compute.Network(\"vertex_network\", {name: \"network-name\"});\nconst vertexRange = new gcp.compute.GlobalAddress(\"vertex_range\", {\n name: \"address-name\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 24,\n network: vertexNetwork.id,\n});\nconst vertexVpcConnection = new gcp.servicenetworking.Connection(\"vertex_vpc_connection\", {\n network: vertexNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [vertexRange.name],\n});\nconst project = gcp.organizations.getProject({});\nconst endpoint = new gcp.vertex.AiEndpoint(\"endpoint\", {\n name: \"endpoint-name\",\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint\",\n location: \"us-central1\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n network: pulumi.all([project, vertexNetwork.name]).apply(([project, name]) =\u003e `projects/${project.number}/global/networks/${name}`),\n encryptionSpec: {\n kmsKeyName: \"kms-name\",\n },\n}, {\n dependsOn: [vertexVpcConnection],\n});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"kms-name\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com`),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvertex_network = gcp.compute.Network(\"vertex_network\", name=\"network-name\")\nvertex_range = gcp.compute.GlobalAddress(\"vertex_range\",\n name=\"address-name\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=24,\n network=vertex_network.id)\nvertex_vpc_connection = gcp.servicenetworking.Connection(\"vertex_vpc_connection\",\n network=vertex_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[vertex_range.name])\nproject = gcp.organizations.get_project()\nendpoint = gcp.vertex.AiEndpoint(\"endpoint\",\n name=\"endpoint-name\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint\",\n location=\"us-central1\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n network=vertex_network.name.apply(lambda name: f\"projects/{project.number}/global/networks/{name}\"),\n encryption_spec={\n \"kmsKeyName\": \"kms-name\",\n },\n opts = pulumi.ResourceOptions(depends_on=[vertex_vpc_connection]))\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"kms-name\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-aiplatform.iam.gserviceaccount.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 vertexNetwork = new Gcp.Compute.Network(\"vertex_network\", new()\n {\n Name = \"network-name\",\n });\n\n var vertexRange = new Gcp.Compute.GlobalAddress(\"vertex_range\", new()\n {\n Name = \"address-name\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 24,\n Network = vertexNetwork.Id,\n });\n\n var vertexVpcConnection = new Gcp.ServiceNetworking.Connection(\"vertex_vpc_connection\", new()\n {\n Network = vertexNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n vertexRange.Name,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var endpoint = new Gcp.Vertex.AiEndpoint(\"endpoint\", new()\n {\n Name = \"endpoint-name\",\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint\",\n Location = \"us-central1\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Network = Output.Tuple(project, vertexNetwork.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/global/networks/{name}\";\n }),\n EncryptionSpec = new Gcp.Vertex.Inputs.AiEndpointEncryptionSpecArgs\n {\n KmsKeyName = \"kms-name\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexVpcConnection,\n },\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"kms-name\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-aiplatform.iam.gserviceaccount.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvertexNetwork, err := compute.NewNetwork(ctx, \"vertex_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexRange, err := compute.NewGlobalAddress(ctx, \"vertex_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address-name\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(24),\n\t\t\tNetwork: vertexNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexVpcConnection, err := servicenetworking.NewConnection(ctx, \"vertex_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: vertexNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tvertexRange.Name,\n\t\t\t},\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\t_, err = vertex.NewAiEndpoint(ctx, \"endpoint\", \u0026vertex.AiEndpointArgs{\n\t\t\tName: pulumi.String(\"endpoint-name\"),\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tNetwork: vertexNetwork.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/global/networks/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tEncryptionSpec: \u0026vertex.AiEndpointEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-name\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-name\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-aiplatform.iam.gserviceaccount.com\", project.Number)),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiEndpoint;\nimport com.pulumi.gcp.vertex.AiEndpointArgs;\nimport com.pulumi.gcp.vertex.inputs.AiEndpointEncryptionSpecArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\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 vertexNetwork = new Network(\"vertexNetwork\", NetworkArgs.builder()\n .name(\"network-name\")\n .build());\n\n var vertexRange = new GlobalAddress(\"vertexRange\", GlobalAddressArgs.builder()\n .name(\"address-name\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(24)\n .network(vertexNetwork.id())\n .build());\n\n var vertexVpcConnection = new Connection(\"vertexVpcConnection\", ConnectionArgs.builder()\n .network(vertexNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(vertexRange.name())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var endpoint = new AiEndpoint(\"endpoint\", AiEndpointArgs.builder()\n .name(\"endpoint-name\")\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint\")\n .location(\"us-central1\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .network(vertexNetwork.name().applyValue(name -\u003e String.format(\"projects/%s/global/networks/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .encryptionSpec(AiEndpointEncryptionSpecArgs.builder()\n .kmsKeyName(\"kms-name\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vertexVpcConnection)\n .build());\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-name\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-aiplatform.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n endpoint:\n type: gcp:vertex:AiEndpoint\n properties:\n name: endpoint-name\n displayName: sample-endpoint\n description: A sample vertex endpoint\n location: us-central1\n region: us-central1\n labels:\n label-one: value-one\n network: projects/${project.number}/global/networks/${vertexNetwork.name}\n encryptionSpec:\n kmsKeyName: kms-name\n options:\n dependson:\n - ${vertexVpcConnection}\n vertexVpcConnection:\n type: gcp:servicenetworking:Connection\n name: vertex_vpc_connection\n properties:\n network: ${vertexNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${vertexRange.name}\n vertexRange:\n type: gcp:compute:GlobalAddress\n name: vertex_range\n properties:\n name: address-name\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 24\n network: ${vertexNetwork.id}\n vertexNetwork:\n type: gcp:compute:Network\n name: vertex_network\n properties:\n name: network-name\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: kms-name\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEndpoint can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/endpoints/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Endpoint can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiEndpoint:AiEndpoint default projects/{{project}}/locations/{{location}}/endpoints/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiEndpoint:AiEndpoint default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiEndpoint:AiEndpoint default {{location}}/{{name}}\n```\n\n", + "description": "Models are deployed into it, and afterwards Endpoint is called to obtain predictions and explanations.\n\n\nTo get more information about Endpoint, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1beta1/projects.locations.endpoints)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Endpoint Network\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vertexNetwork = new gcp.compute.Network(\"vertex_network\", {name: \"network-name\"});\nconst vertexRange = new gcp.compute.GlobalAddress(\"vertex_range\", {\n name: \"address-name\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 24,\n network: vertexNetwork.id,\n});\nconst vertexVpcConnection = new gcp.servicenetworking.Connection(\"vertex_vpc_connection\", {\n network: vertexNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [vertexRange.name],\n});\nconst project = gcp.organizations.getProject({});\nconst endpoint = new gcp.vertex.AiEndpoint(\"endpoint\", {\n name: \"endpoint-name\",\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint\",\n location: \"us-central1\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n network: pulumi.all([project, vertexNetwork.name]).apply(([project, name]) =\u003e `projects/${project.number}/global/networks/${name}`),\n encryptionSpec: {\n kmsKeyName: \"kms-name\",\n },\n}, {\n dependsOn: [vertexVpcConnection],\n});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"kms-name\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com`),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvertex_network = gcp.compute.Network(\"vertex_network\", name=\"network-name\")\nvertex_range = gcp.compute.GlobalAddress(\"vertex_range\",\n name=\"address-name\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=24,\n network=vertex_network.id)\nvertex_vpc_connection = gcp.servicenetworking.Connection(\"vertex_vpc_connection\",\n network=vertex_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[vertex_range.name])\nproject = gcp.organizations.get_project()\nendpoint = gcp.vertex.AiEndpoint(\"endpoint\",\n name=\"endpoint-name\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint\",\n location=\"us-central1\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n network=vertex_network.name.apply(lambda name: f\"projects/{project.number}/global/networks/{name}\"),\n encryption_spec={\n \"kms_key_name\": \"kms-name\",\n },\n opts = pulumi.ResourceOptions(depends_on=[vertex_vpc_connection]))\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"kms-name\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-aiplatform.iam.gserviceaccount.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 vertexNetwork = new Gcp.Compute.Network(\"vertex_network\", new()\n {\n Name = \"network-name\",\n });\n\n var vertexRange = new Gcp.Compute.GlobalAddress(\"vertex_range\", new()\n {\n Name = \"address-name\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 24,\n Network = vertexNetwork.Id,\n });\n\n var vertexVpcConnection = new Gcp.ServiceNetworking.Connection(\"vertex_vpc_connection\", new()\n {\n Network = vertexNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n vertexRange.Name,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var endpoint = new Gcp.Vertex.AiEndpoint(\"endpoint\", new()\n {\n Name = \"endpoint-name\",\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint\",\n Location = \"us-central1\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Network = Output.Tuple(project, vertexNetwork.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/global/networks/{name}\";\n }),\n EncryptionSpec = new Gcp.Vertex.Inputs.AiEndpointEncryptionSpecArgs\n {\n KmsKeyName = \"kms-name\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexVpcConnection,\n },\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"kms-name\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-aiplatform.iam.gserviceaccount.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvertexNetwork, err := compute.NewNetwork(ctx, \"vertex_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexRange, err := compute.NewGlobalAddress(ctx, \"vertex_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address-name\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(24),\n\t\t\tNetwork: vertexNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexVpcConnection, err := servicenetworking.NewConnection(ctx, \"vertex_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: vertexNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tvertexRange.Name,\n\t\t\t},\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\t_, err = vertex.NewAiEndpoint(ctx, \"endpoint\", \u0026vertex.AiEndpointArgs{\n\t\t\tName: pulumi.String(\"endpoint-name\"),\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tNetwork: vertexNetwork.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/global/networks/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tEncryptionSpec: \u0026vertex.AiEndpointEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-name\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-name\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-aiplatform.iam.gserviceaccount.com\", project.Number)),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiEndpoint;\nimport com.pulumi.gcp.vertex.AiEndpointArgs;\nimport com.pulumi.gcp.vertex.inputs.AiEndpointEncryptionSpecArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\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 vertexNetwork = new Network(\"vertexNetwork\", NetworkArgs.builder()\n .name(\"network-name\")\n .build());\n\n var vertexRange = new GlobalAddress(\"vertexRange\", GlobalAddressArgs.builder()\n .name(\"address-name\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(24)\n .network(vertexNetwork.id())\n .build());\n\n var vertexVpcConnection = new Connection(\"vertexVpcConnection\", ConnectionArgs.builder()\n .network(vertexNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(vertexRange.name())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var endpoint = new AiEndpoint(\"endpoint\", AiEndpointArgs.builder()\n .name(\"endpoint-name\")\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint\")\n .location(\"us-central1\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .network(vertexNetwork.name().applyValue(name -\u003e String.format(\"projects/%s/global/networks/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .encryptionSpec(AiEndpointEncryptionSpecArgs.builder()\n .kmsKeyName(\"kms-name\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vertexVpcConnection)\n .build());\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-name\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-aiplatform.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n endpoint:\n type: gcp:vertex:AiEndpoint\n properties:\n name: endpoint-name\n displayName: sample-endpoint\n description: A sample vertex endpoint\n location: us-central1\n region: us-central1\n labels:\n label-one: value-one\n network: projects/${project.number}/global/networks/${vertexNetwork.name}\n encryptionSpec:\n kmsKeyName: kms-name\n options:\n dependson:\n - ${vertexVpcConnection}\n vertexVpcConnection:\n type: gcp:servicenetworking:Connection\n name: vertex_vpc_connection\n properties:\n network: ${vertexNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${vertexRange.name}\n vertexRange:\n type: gcp:compute:GlobalAddress\n name: vertex_range\n properties:\n name: address-name\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 24\n network: ${vertexNetwork.id}\n vertexNetwork:\n type: gcp:compute:Network\n name: vertex_network\n properties:\n name: network-name\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: kms-name\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEndpoint can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/endpoints/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Endpoint can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiEndpoint:AiEndpoint default projects/{{project}}/locations/{{location}}/endpoints/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiEndpoint:AiEndpoint default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiEndpoint:AiEndpoint default {{location}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -243837,7 +243837,7 @@ } }, "gcp:vertex/aiFeatureGroup:AiFeatureGroup": { - "description": "Vertex AI Feature Group.\n\n\nTo get more information about FeatureGroup, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.featureGroups)\n* How-to Guides\n * [Creating a Feature Group](https://cloud.google.com/vertex-ai/docs/featurestore/latest/create-featuregroup)\n\n## Example Usage\n\n### Vertex Ai Feature Group\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sampleDataset = new gcp.bigquery.Dataset(\"sample_dataset\", {\n datasetId: \"job_load_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst sampleTable = new gcp.bigquery.Table(\"sample_table\", {\n deletionProtection: false,\n datasetId: sampleDataset.datasetId,\n tableId: \"job_load_table\",\n schema: `[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n});\nconst featureGroup = new gcp.vertex.AiFeatureGroup(\"feature_group\", {\n name: \"example_feature_group\",\n description: \"A sample feature group\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n bigQuery: {\n bigQuerySource: {\n inputUri: pulumi.interpolate`bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}`,\n },\n entityIdColumns: [\"feature_id\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsample_dataset = gcp.bigquery.Dataset(\"sample_dataset\",\n dataset_id=\"job_load_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nsample_table = gcp.bigquery.Table(\"sample_table\",\n deletion_protection=False,\n dataset_id=sample_dataset.dataset_id,\n table_id=\"job_load_table\",\n schema=\"\"\"[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\")\nfeature_group = gcp.vertex.AiFeatureGroup(\"feature_group\",\n name=\"example_feature_group\",\n description=\"A sample feature group\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n big_query={\n \"bigQuerySource\": {\n \"inputUri\": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f\"bq://{project}.{dataset_id}.{table_id}\"),\n },\n \"entityIdColumns\": [\"feature_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 sampleDataset = new Gcp.BigQuery.Dataset(\"sample_dataset\", new()\n {\n DatasetId = \"job_load_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var sampleTable = new Gcp.BigQuery.Table(\"sample_table\", new()\n {\n DeletionProtection = false,\n DatasetId = sampleDataset.DatasetId,\n TableId = \"job_load_table\",\n Schema = @\"[\n {\n \"\"name\"\": \"\"feature_id\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n });\n\n var featureGroup = new Gcp.Vertex.AiFeatureGroup(\"feature_group\", new()\n {\n Name = \"example_feature_group\",\n Description = \"A sample feature group\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n BigQuery = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryArgs\n {\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryBigQuerySourceArgs\n {\n InputUri = Output.Tuple(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n },\n EntityIdColumns = new[]\n {\n \"feature_id\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsampleDataset, err := bigquery.NewDataset(ctx, \"sample_dataset\", \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\tsampleTable, err := bigquery.NewTable(ctx, \"sample_table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: sampleDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_load_table\"),\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureGroup(ctx, \"feature_group\", \u0026vertex.AiFeatureGroupArgs{\n\t\t\tName: pulumi.String(\"example_feature_group\"),\n\t\t\tDescription: pulumi.String(\"A sample feature group\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tBigQuery: \u0026vertex.AiFeatureGroupBigQueryArgs{\n\t\t\t\tBigQuerySource: \u0026vertex.AiFeatureGroupBigQueryBigQuerySourceArgs{\n\t\t\t\t\tInputUri: pulumi.All(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"feature_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.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroup;\nimport com.pulumi.gcp.vertex.AiFeatureGroupArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryBigQuerySourceArgs;\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 sampleDataset = new Dataset(\"sampleDataset\", 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 sampleTable = new Table(\"sampleTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(sampleDataset.datasetId())\n .tableId(\"job_load_table\")\n .schema(\"\"\"\n[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n var featureGroup = new AiFeatureGroup(\"featureGroup\", AiFeatureGroupArgs.builder()\n .name(\"example_feature_group\")\n .description(\"A sample feature group\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .bigQuery(AiFeatureGroupBigQueryArgs.builder()\n .bigQuerySource(AiFeatureGroupBigQueryBigQuerySourceArgs.builder()\n .inputUri(Output.tuple(sampleTable.project(), sampleTable.datasetId(), sampleTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .build())\n .entityIdColumns(\"feature_id\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featureGroup:\n type: gcp:vertex:AiFeatureGroup\n name: feature_group\n properties:\n name: example_feature_group\n description: A sample feature group\n region: us-central1\n labels:\n label-one: value-one\n bigQuery:\n bigQuerySource:\n inputUri: bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}\n entityIdColumns:\n - feature_id\n sampleDataset:\n type: gcp:bigquery:Dataset\n name: sample_dataset\n properties:\n datasetId: job_load_dataset\n friendlyName: test\n description: This is a test description\n location: US\n sampleTable:\n type: gcp:bigquery:Table\n name: sample_table\n properties:\n deletionProtection: false\n datasetId: ${sampleDataset.datasetId}\n tableId: job_load_table\n schema: |\n [\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeatureGroup can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/featureGroups/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, FeatureGroup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureGroup:AiFeatureGroup default projects/{{project}}/locations/{{region}}/featureGroups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureGroup:AiFeatureGroup default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureGroup:AiFeatureGroup default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureGroup:AiFeatureGroup default {{name}}\n```\n\n", + "description": "Vertex AI Feature Group.\n\n\nTo get more information about FeatureGroup, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.featureGroups)\n* How-to Guides\n * [Creating a Feature Group](https://cloud.google.com/vertex-ai/docs/featurestore/latest/create-featuregroup)\n\n## Example Usage\n\n### Vertex Ai Feature Group\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sampleDataset = new gcp.bigquery.Dataset(\"sample_dataset\", {\n datasetId: \"job_load_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst sampleTable = new gcp.bigquery.Table(\"sample_table\", {\n deletionProtection: false,\n datasetId: sampleDataset.datasetId,\n tableId: \"job_load_table\",\n schema: `[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n});\nconst featureGroup = new gcp.vertex.AiFeatureGroup(\"feature_group\", {\n name: \"example_feature_group\",\n description: \"A sample feature group\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n bigQuery: {\n bigQuerySource: {\n inputUri: pulumi.interpolate`bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}`,\n },\n entityIdColumns: [\"feature_id\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsample_dataset = gcp.bigquery.Dataset(\"sample_dataset\",\n dataset_id=\"job_load_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nsample_table = gcp.bigquery.Table(\"sample_table\",\n deletion_protection=False,\n dataset_id=sample_dataset.dataset_id,\n table_id=\"job_load_table\",\n schema=\"\"\"[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\")\nfeature_group = gcp.vertex.AiFeatureGroup(\"feature_group\",\n name=\"example_feature_group\",\n description=\"A sample feature group\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n big_query={\n \"big_query_source\": {\n \"input_uri\": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f\"bq://{project}.{dataset_id}.{table_id}\"),\n },\n \"entity_id_columns\": [\"feature_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 sampleDataset = new Gcp.BigQuery.Dataset(\"sample_dataset\", new()\n {\n DatasetId = \"job_load_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var sampleTable = new Gcp.BigQuery.Table(\"sample_table\", new()\n {\n DeletionProtection = false,\n DatasetId = sampleDataset.DatasetId,\n TableId = \"job_load_table\",\n Schema = @\"[\n {\n \"\"name\"\": \"\"feature_id\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n });\n\n var featureGroup = new Gcp.Vertex.AiFeatureGroup(\"feature_group\", new()\n {\n Name = \"example_feature_group\",\n Description = \"A sample feature group\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n BigQuery = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryArgs\n {\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryBigQuerySourceArgs\n {\n InputUri = Output.Tuple(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n },\n EntityIdColumns = new[]\n {\n \"feature_id\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsampleDataset, err := bigquery.NewDataset(ctx, \"sample_dataset\", \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\tsampleTable, err := bigquery.NewTable(ctx, \"sample_table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: sampleDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_load_table\"),\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureGroup(ctx, \"feature_group\", \u0026vertex.AiFeatureGroupArgs{\n\t\t\tName: pulumi.String(\"example_feature_group\"),\n\t\t\tDescription: pulumi.String(\"A sample feature group\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tBigQuery: \u0026vertex.AiFeatureGroupBigQueryArgs{\n\t\t\t\tBigQuerySource: \u0026vertex.AiFeatureGroupBigQueryBigQuerySourceArgs{\n\t\t\t\t\tInputUri: pulumi.All(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"feature_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.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroup;\nimport com.pulumi.gcp.vertex.AiFeatureGroupArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryBigQuerySourceArgs;\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 sampleDataset = new Dataset(\"sampleDataset\", 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 sampleTable = new Table(\"sampleTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(sampleDataset.datasetId())\n .tableId(\"job_load_table\")\n .schema(\"\"\"\n[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n var featureGroup = new AiFeatureGroup(\"featureGroup\", AiFeatureGroupArgs.builder()\n .name(\"example_feature_group\")\n .description(\"A sample feature group\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .bigQuery(AiFeatureGroupBigQueryArgs.builder()\n .bigQuerySource(AiFeatureGroupBigQueryBigQuerySourceArgs.builder()\n .inputUri(Output.tuple(sampleTable.project(), sampleTable.datasetId(), sampleTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .build())\n .entityIdColumns(\"feature_id\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featureGroup:\n type: gcp:vertex:AiFeatureGroup\n name: feature_group\n properties:\n name: example_feature_group\n description: A sample feature group\n region: us-central1\n labels:\n label-one: value-one\n bigQuery:\n bigQuerySource:\n inputUri: bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}\n entityIdColumns:\n - feature_id\n sampleDataset:\n type: gcp:bigquery:Dataset\n name: sample_dataset\n properties:\n datasetId: job_load_dataset\n friendlyName: test\n description: This is a test description\n location: US\n sampleTable:\n type: gcp:bigquery:Table\n name: sample_table\n properties:\n deletionProtection: false\n datasetId: ${sampleDataset.datasetId}\n tableId: job_load_table\n schema: |\n [\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeatureGroup can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/featureGroups/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, FeatureGroup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureGroup:AiFeatureGroup default projects/{{project}}/locations/{{region}}/featureGroups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureGroup:AiFeatureGroup default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureGroup:AiFeatureGroup default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureGroup:AiFeatureGroup default {{name}}\n```\n\n", "properties": { "bigQuery": { "$ref": "#/types/gcp:vertex/AiFeatureGroupBigQuery:AiFeatureGroupBigQuery", @@ -244000,7 +244000,7 @@ } }, "gcp:vertex/aiFeatureGroupFeature:AiFeatureGroupFeature": { - "description": "Vertex AI Feature Group Feature is feature metadata information.\n\n\nTo get more information about FeatureGroupFeature, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1beta1/projects.locations.featureGroups.features)\n* How-to Guides\n * [Creating a Feature](https://cloud.google.com/vertex-ai/docs/featurestore/latest/create-feature)\n\n## Example Usage\n\n### Vertex Ai Feature Group Feature\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sampleDataset = new gcp.bigquery.Dataset(\"sample_dataset\", {\n datasetId: \"job_load_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst sampleTable = new gcp.bigquery.Table(\"sample_table\", {\n deletionProtection: false,\n datasetId: sampleDataset.datasetId,\n tableId: \"job_load_table\",\n schema: `[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n});\nconst sampleFeatureGroup = new gcp.vertex.AiFeatureGroup(\"sample_feature_group\", {\n name: \"example_feature_group\",\n description: \"A sample feature group\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n bigQuery: {\n bigQuerySource: {\n inputUri: pulumi.interpolate`bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}`,\n },\n entityIdColumns: [\"feature_id\"],\n },\n});\nconst featureGroupFeature = new gcp.vertex.AiFeatureGroupFeature(\"feature_group_feature\", {\n name: \"example_feature\",\n region: \"us-central1\",\n featureGroup: sampleFeatureGroup.name,\n description: \"A sample feature\",\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsample_dataset = gcp.bigquery.Dataset(\"sample_dataset\",\n dataset_id=\"job_load_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nsample_table = gcp.bigquery.Table(\"sample_table\",\n deletion_protection=False,\n dataset_id=sample_dataset.dataset_id,\n table_id=\"job_load_table\",\n schema=\"\"\"[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\")\nsample_feature_group = gcp.vertex.AiFeatureGroup(\"sample_feature_group\",\n name=\"example_feature_group\",\n description=\"A sample feature group\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n big_query={\n \"bigQuerySource\": {\n \"inputUri\": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f\"bq://{project}.{dataset_id}.{table_id}\"),\n },\n \"entityIdColumns\": [\"feature_id\"],\n })\nfeature_group_feature = gcp.vertex.AiFeatureGroupFeature(\"feature_group_feature\",\n name=\"example_feature\",\n region=\"us-central1\",\n feature_group=sample_feature_group.name,\n description=\"A sample feature\",\n labels={\n \"label-one\": \"value-one\",\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 sampleDataset = new Gcp.BigQuery.Dataset(\"sample_dataset\", new()\n {\n DatasetId = \"job_load_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var sampleTable = new Gcp.BigQuery.Table(\"sample_table\", new()\n {\n DeletionProtection = false,\n DatasetId = sampleDataset.DatasetId,\n TableId = \"job_load_table\",\n Schema = @\"[\n {\n \"\"name\"\": \"\"feature_id\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"example_feature\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n });\n\n var sampleFeatureGroup = new Gcp.Vertex.AiFeatureGroup(\"sample_feature_group\", new()\n {\n Name = \"example_feature_group\",\n Description = \"A sample feature group\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n BigQuery = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryArgs\n {\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryBigQuerySourceArgs\n {\n InputUri = Output.Tuple(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n },\n EntityIdColumns = new[]\n {\n \"feature_id\",\n },\n },\n });\n\n var featureGroupFeature = new Gcp.Vertex.AiFeatureGroupFeature(\"feature_group_feature\", new()\n {\n Name = \"example_feature\",\n Region = \"us-central1\",\n FeatureGroup = sampleFeatureGroup.Name,\n Description = \"A sample feature\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsampleDataset, err := bigquery.NewDataset(ctx, \"sample_dataset\", \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\tsampleTable, err := bigquery.NewTable(ctx, \"sample_table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: sampleDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_load_table\"),\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleFeatureGroup, err := vertex.NewAiFeatureGroup(ctx, \"sample_feature_group\", \u0026vertex.AiFeatureGroupArgs{\n\t\t\tName: pulumi.String(\"example_feature_group\"),\n\t\t\tDescription: pulumi.String(\"A sample feature group\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tBigQuery: \u0026vertex.AiFeatureGroupBigQueryArgs{\n\t\t\t\tBigQuerySource: \u0026vertex.AiFeatureGroupBigQueryBigQuerySourceArgs{\n\t\t\t\t\tInputUri: pulumi.All(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"feature_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\t_, err = vertex.NewAiFeatureGroupFeature(ctx, \"feature_group_feature\", \u0026vertex.AiFeatureGroupFeatureArgs{\n\t\t\tName: pulumi.String(\"example_feature\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureGroup: sampleFeatureGroup.Name,\n\t\t\tDescription: pulumi.String(\"A sample feature\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\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.vertex.AiFeatureGroup;\nimport com.pulumi.gcp.vertex.AiFeatureGroupArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryBigQuerySourceArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeature;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeatureArgs;\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 sampleDataset = new Dataset(\"sampleDataset\", 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 sampleTable = new Table(\"sampleTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(sampleDataset.datasetId())\n .tableId(\"job_load_table\")\n .schema(\"\"\"\n[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n var sampleFeatureGroup = new AiFeatureGroup(\"sampleFeatureGroup\", AiFeatureGroupArgs.builder()\n .name(\"example_feature_group\")\n .description(\"A sample feature group\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .bigQuery(AiFeatureGroupBigQueryArgs.builder()\n .bigQuerySource(AiFeatureGroupBigQueryBigQuerySourceArgs.builder()\n .inputUri(Output.tuple(sampleTable.project(), sampleTable.datasetId(), sampleTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .build())\n .entityIdColumns(\"feature_id\")\n .build())\n .build());\n\n var featureGroupFeature = new AiFeatureGroupFeature(\"featureGroupFeature\", AiFeatureGroupFeatureArgs.builder()\n .name(\"example_feature\")\n .region(\"us-central1\")\n .featureGroup(sampleFeatureGroup.name())\n .description(\"A sample feature\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featureGroupFeature:\n type: gcp:vertex:AiFeatureGroupFeature\n name: feature_group_feature\n properties:\n name: example_feature\n region: us-central1\n featureGroup: ${sampleFeatureGroup.name}\n description: A sample feature\n labels:\n label-one: value-one\n sampleFeatureGroup:\n type: gcp:vertex:AiFeatureGroup\n name: sample_feature_group\n properties:\n name: example_feature_group\n description: A sample feature group\n region: us-central1\n labels:\n label-one: value-one\n bigQuery:\n bigQuerySource:\n inputUri: bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}\n entityIdColumns:\n - feature_id\n sampleDataset:\n type: gcp:bigquery:Dataset\n name: sample_dataset\n properties:\n datasetId: job_load_dataset\n friendlyName: test\n description: This is a test description\n location: US\n sampleTable:\n type: gcp:bigquery:Table\n name: sample_table\n properties:\n deletionProtection: false\n datasetId: ${sampleDataset.datasetId}\n tableId: job_load_table\n schema: |\n [\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeatureGroupFeature can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/featureGroups/{{feature_group}}/features/{{name}}`\n\n* `{{project}}/{{region}}/{{feature_group}}/{{name}}`\n\n* `{{region}}/{{feature_group}}/{{name}}`\n\n* `{{feature_group}}/{{name}}`\n\nWhen using the `pulumi import` command, FeatureGroupFeature can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureGroupFeature:AiFeatureGroupFeature default projects/{{project}}/locations/{{region}}/featureGroups/{{feature_group}}/features/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureGroupFeature:AiFeatureGroupFeature default {{project}}/{{region}}/{{feature_group}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureGroupFeature:AiFeatureGroupFeature default {{region}}/{{feature_group}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureGroupFeature:AiFeatureGroupFeature default {{feature_group}}/{{name}}\n```\n\n", + "description": "Vertex AI Feature Group Feature is feature metadata information.\n\n\nTo get more information about FeatureGroupFeature, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1beta1/projects.locations.featureGroups.features)\n* How-to Guides\n * [Creating a Feature](https://cloud.google.com/vertex-ai/docs/featurestore/latest/create-feature)\n\n## Example Usage\n\n### Vertex Ai Feature Group Feature\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sampleDataset = new gcp.bigquery.Dataset(\"sample_dataset\", {\n datasetId: \"job_load_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst sampleTable = new gcp.bigquery.Table(\"sample_table\", {\n deletionProtection: false,\n datasetId: sampleDataset.datasetId,\n tableId: \"job_load_table\",\n schema: `[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n});\nconst sampleFeatureGroup = new gcp.vertex.AiFeatureGroup(\"sample_feature_group\", {\n name: \"example_feature_group\",\n description: \"A sample feature group\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n bigQuery: {\n bigQuerySource: {\n inputUri: pulumi.interpolate`bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}`,\n },\n entityIdColumns: [\"feature_id\"],\n },\n});\nconst featureGroupFeature = new gcp.vertex.AiFeatureGroupFeature(\"feature_group_feature\", {\n name: \"example_feature\",\n region: \"us-central1\",\n featureGroup: sampleFeatureGroup.name,\n description: \"A sample feature\",\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsample_dataset = gcp.bigquery.Dataset(\"sample_dataset\",\n dataset_id=\"job_load_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nsample_table = gcp.bigquery.Table(\"sample_table\",\n deletion_protection=False,\n dataset_id=sample_dataset.dataset_id,\n table_id=\"job_load_table\",\n schema=\"\"\"[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\")\nsample_feature_group = gcp.vertex.AiFeatureGroup(\"sample_feature_group\",\n name=\"example_feature_group\",\n description=\"A sample feature group\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n big_query={\n \"big_query_source\": {\n \"input_uri\": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f\"bq://{project}.{dataset_id}.{table_id}\"),\n },\n \"entity_id_columns\": [\"feature_id\"],\n })\nfeature_group_feature = gcp.vertex.AiFeatureGroupFeature(\"feature_group_feature\",\n name=\"example_feature\",\n region=\"us-central1\",\n feature_group=sample_feature_group.name,\n description=\"A sample feature\",\n labels={\n \"label-one\": \"value-one\",\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 sampleDataset = new Gcp.BigQuery.Dataset(\"sample_dataset\", new()\n {\n DatasetId = \"job_load_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var sampleTable = new Gcp.BigQuery.Table(\"sample_table\", new()\n {\n DeletionProtection = false,\n DatasetId = sampleDataset.DatasetId,\n TableId = \"job_load_table\",\n Schema = @\"[\n {\n \"\"name\"\": \"\"feature_id\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"example_feature\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n });\n\n var sampleFeatureGroup = new Gcp.Vertex.AiFeatureGroup(\"sample_feature_group\", new()\n {\n Name = \"example_feature_group\",\n Description = \"A sample feature group\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n BigQuery = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryArgs\n {\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryBigQuerySourceArgs\n {\n InputUri = Output.Tuple(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n },\n EntityIdColumns = new[]\n {\n \"feature_id\",\n },\n },\n });\n\n var featureGroupFeature = new Gcp.Vertex.AiFeatureGroupFeature(\"feature_group_feature\", new()\n {\n Name = \"example_feature\",\n Region = \"us-central1\",\n FeatureGroup = sampleFeatureGroup.Name,\n Description = \"A sample feature\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsampleDataset, err := bigquery.NewDataset(ctx, \"sample_dataset\", \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\tsampleTable, err := bigquery.NewTable(ctx, \"sample_table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: sampleDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_load_table\"),\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleFeatureGroup, err := vertex.NewAiFeatureGroup(ctx, \"sample_feature_group\", \u0026vertex.AiFeatureGroupArgs{\n\t\t\tName: pulumi.String(\"example_feature_group\"),\n\t\t\tDescription: pulumi.String(\"A sample feature group\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tBigQuery: \u0026vertex.AiFeatureGroupBigQueryArgs{\n\t\t\t\tBigQuerySource: \u0026vertex.AiFeatureGroupBigQueryBigQuerySourceArgs{\n\t\t\t\t\tInputUri: pulumi.All(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"feature_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\t_, err = vertex.NewAiFeatureGroupFeature(ctx, \"feature_group_feature\", \u0026vertex.AiFeatureGroupFeatureArgs{\n\t\t\tName: pulumi.String(\"example_feature\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureGroup: sampleFeatureGroup.Name,\n\t\t\tDescription: pulumi.String(\"A sample feature\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\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.vertex.AiFeatureGroup;\nimport com.pulumi.gcp.vertex.AiFeatureGroupArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryBigQuerySourceArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeature;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeatureArgs;\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 sampleDataset = new Dataset(\"sampleDataset\", 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 sampleTable = new Table(\"sampleTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(sampleDataset.datasetId())\n .tableId(\"job_load_table\")\n .schema(\"\"\"\n[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n var sampleFeatureGroup = new AiFeatureGroup(\"sampleFeatureGroup\", AiFeatureGroupArgs.builder()\n .name(\"example_feature_group\")\n .description(\"A sample feature group\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .bigQuery(AiFeatureGroupBigQueryArgs.builder()\n .bigQuerySource(AiFeatureGroupBigQueryBigQuerySourceArgs.builder()\n .inputUri(Output.tuple(sampleTable.project(), sampleTable.datasetId(), sampleTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .build())\n .entityIdColumns(\"feature_id\")\n .build())\n .build());\n\n var featureGroupFeature = new AiFeatureGroupFeature(\"featureGroupFeature\", AiFeatureGroupFeatureArgs.builder()\n .name(\"example_feature\")\n .region(\"us-central1\")\n .featureGroup(sampleFeatureGroup.name())\n .description(\"A sample feature\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featureGroupFeature:\n type: gcp:vertex:AiFeatureGroupFeature\n name: feature_group_feature\n properties:\n name: example_feature\n region: us-central1\n featureGroup: ${sampleFeatureGroup.name}\n description: A sample feature\n labels:\n label-one: value-one\n sampleFeatureGroup:\n type: gcp:vertex:AiFeatureGroup\n name: sample_feature_group\n properties:\n name: example_feature_group\n description: A sample feature group\n region: us-central1\n labels:\n label-one: value-one\n bigQuery:\n bigQuerySource:\n inputUri: bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}\n entityIdColumns:\n - feature_id\n sampleDataset:\n type: gcp:bigquery:Dataset\n name: sample_dataset\n properties:\n datasetId: job_load_dataset\n friendlyName: test\n description: This is a test description\n location: US\n sampleTable:\n type: gcp:bigquery:Table\n name: sample_table\n properties:\n deletionProtection: false\n datasetId: ${sampleDataset.datasetId}\n tableId: job_load_table\n schema: |\n [\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeatureGroupFeature can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/featureGroups/{{feature_group}}/features/{{name}}`\n\n* `{{project}}/{{region}}/{{feature_group}}/{{name}}`\n\n* `{{region}}/{{feature_group}}/{{name}}`\n\n* `{{feature_group}}/{{name}}`\n\nWhen using the `pulumi import` command, FeatureGroupFeature can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureGroupFeature:AiFeatureGroupFeature default projects/{{project}}/locations/{{region}}/featureGroups/{{feature_group}}/features/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureGroupFeature:AiFeatureGroupFeature default {{project}}/{{region}}/{{feature_group}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureGroupFeature:AiFeatureGroupFeature default {{region}}/{{feature_group}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureGroupFeature:AiFeatureGroupFeature default {{feature_group}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -244177,7 +244177,7 @@ } }, "gcp:vertex/aiFeatureOnlineStore:AiFeatureOnlineStore": { - "description": "Vertex AI Feature Online Store provides a centralized repository for serving ML features and embedding indexes at low latency. The Feature Online Store is a top-level container.\n\n\nTo get more information about FeatureOnlineStore, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.featureOnlineStores)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Feature Online Store\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureOnlineStore = new gcp.vertex.AiFeatureOnlineStore(\"feature_online_store\", {\n name: \"example_feature_online_store\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 3,\n cpuUtilizationTarget: 50,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature_online_store = gcp.vertex.AiFeatureOnlineStore(\"feature_online_store\",\n name=\"example_feature_online_store\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"autoScaling\": {\n \"minNodeCount\": 1,\n \"maxNodeCount\": 3,\n \"cpuUtilizationTarget\": 50,\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 featureOnlineStore = new Gcp.Vertex.AiFeatureOnlineStore(\"feature_online_store\", new()\n {\n Name = \"example_feature_online_store\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 3,\n CpuUtilizationTarget = 50,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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 := vertex.NewAiFeatureOnlineStore(ctx, \"feature_online_store\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_online_store\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(3),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(50),\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.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\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 featureOnlineStore = new AiFeatureOnlineStore(\"featureOnlineStore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_online_store\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(3)\n .cpuUtilizationTarget(50)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featureOnlineStore:\n type: gcp:vertex:AiFeatureOnlineStore\n name: feature_online_store\n properties:\n name: example_feature_online_store\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 3\n cpuUtilizationTarget: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore With Optimized\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_online_store_optimized\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n optimized: {},\n dedicatedServingEndpoint: {\n privateServiceConnectConfig: {\n enablePrivateServiceConnect: true,\n projectAllowlists: [project.then(project =\u003e project.number)],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_online_store_optimized\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n optimized={},\n dedicated_serving_endpoint={\n \"privateServiceConnectConfig\": {\n \"enablePrivateServiceConnect\": True,\n \"projectAllowlists\": [project.number],\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 project = Gcp.Organizations.GetProject.Invoke();\n\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_online_store_optimized\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Optimized = null,\n DedicatedServingEndpoint = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreDedicatedServingEndpointArgs\n {\n PrivateServiceConnectConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigArgs\n {\n EnablePrivateServiceConnect = true,\n ProjectAllowlists = new[]\n {\n project.Apply(getProjectResult =\u003e getProjectResult.Number),\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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\t_, err = vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_online_store_optimized\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOptimized: nil,\n\t\t\tDedicatedServingEndpoint: \u0026vertex.AiFeatureOnlineStoreDedicatedServingEndpointArgs{\n\t\t\t\tPrivateServiceConnectConfig: \u0026vertex.AiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigArgs{\n\t\t\t\t\tEnablePrivateServiceConnect: pulumi.Bool(true),\n\t\t\t\t\tProjectAllowlists: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(project.Number),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreOptimizedArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreDedicatedServingEndpointArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigArgs;\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 featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_online_store_optimized\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .optimized()\n .dedicatedServingEndpoint(AiFeatureOnlineStoreDedicatedServingEndpointArgs.builder()\n .privateServiceConnectConfig(AiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigArgs.builder()\n .enablePrivateServiceConnect(true)\n .projectAllowlists(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_online_store_optimized\n labels:\n foo: bar\n region: us-central1\n optimized: {}\n dedicatedServingEndpoint:\n privateServiceConnectConfig:\n enablePrivateServiceConnect: true\n projectAllowlists:\n - ${project.number}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore With Beta Fields Bigtable\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_online_store_beta_bigtable\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n embeddingManagement: {\n enabled: true,\n },\n forceDestroy: true,\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_online_store_beta_bigtable\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"autoScaling\": {\n \"minNodeCount\": 1,\n \"maxNodeCount\": 2,\n \"cpuUtilizationTarget\": 80,\n },\n },\n embedding_management={\n \"enabled\": True,\n },\n force_destroy=True)\nproject = gcp.organizations.get_project()\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 featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_online_store_beta_bigtable\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n EmbeddingManagement = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreEmbeddingManagementArgs\n {\n Enabled = true,\n },\n ForceDestroy = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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 := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_online_store_beta_bigtable\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEmbeddingManagement: \u0026vertex.AiFeatureOnlineStoreEmbeddingManagementArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\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 = organizations.LookupProject(ctx, nil, 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.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreEmbeddingManagementArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_online_store_beta_bigtable\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .embeddingManagement(AiFeatureOnlineStoreEmbeddingManagementArgs.builder()\n .enabled(true)\n .build())\n .forceDestroy(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_online_store_beta_bigtable\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n embeddingManagement:\n enabled: true\n forceDestroy: true\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeatureOnlineStore can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/featureOnlineStores/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, FeatureOnlineStore can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStore:AiFeatureOnlineStore default projects/{{project}}/locations/{{region}}/featureOnlineStores/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStore:AiFeatureOnlineStore default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStore:AiFeatureOnlineStore default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStore:AiFeatureOnlineStore default {{name}}\n```\n\n", + "description": "Vertex AI Feature Online Store provides a centralized repository for serving ML features and embedding indexes at low latency. The Feature Online Store is a top-level container.\n\n\nTo get more information about FeatureOnlineStore, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.featureOnlineStores)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Feature Online Store\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureOnlineStore = new gcp.vertex.AiFeatureOnlineStore(\"feature_online_store\", {\n name: \"example_feature_online_store\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 3,\n cpuUtilizationTarget: 50,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature_online_store = gcp.vertex.AiFeatureOnlineStore(\"feature_online_store\",\n name=\"example_feature_online_store\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 3,\n \"cpu_utilization_target\": 50,\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 featureOnlineStore = new Gcp.Vertex.AiFeatureOnlineStore(\"feature_online_store\", new()\n {\n Name = \"example_feature_online_store\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 3,\n CpuUtilizationTarget = 50,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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 := vertex.NewAiFeatureOnlineStore(ctx, \"feature_online_store\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_online_store\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(3),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(50),\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.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\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 featureOnlineStore = new AiFeatureOnlineStore(\"featureOnlineStore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_online_store\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(3)\n .cpuUtilizationTarget(50)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featureOnlineStore:\n type: gcp:vertex:AiFeatureOnlineStore\n name: feature_online_store\n properties:\n name: example_feature_online_store\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 3\n cpuUtilizationTarget: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore With Optimized\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_online_store_optimized\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n optimized: {},\n dedicatedServingEndpoint: {\n privateServiceConnectConfig: {\n enablePrivateServiceConnect: true,\n projectAllowlists: [project.then(project =\u003e project.number)],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_online_store_optimized\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n optimized={},\n dedicated_serving_endpoint={\n \"private_service_connect_config\": {\n \"enable_private_service_connect\": True,\n \"project_allowlists\": [project.number],\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 project = Gcp.Organizations.GetProject.Invoke();\n\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_online_store_optimized\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Optimized = null,\n DedicatedServingEndpoint = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreDedicatedServingEndpointArgs\n {\n PrivateServiceConnectConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigArgs\n {\n EnablePrivateServiceConnect = true,\n ProjectAllowlists = new[]\n {\n project.Apply(getProjectResult =\u003e getProjectResult.Number),\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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\t_, err = vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_online_store_optimized\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOptimized: nil,\n\t\t\tDedicatedServingEndpoint: \u0026vertex.AiFeatureOnlineStoreDedicatedServingEndpointArgs{\n\t\t\t\tPrivateServiceConnectConfig: \u0026vertex.AiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigArgs{\n\t\t\t\t\tEnablePrivateServiceConnect: pulumi.Bool(true),\n\t\t\t\t\tProjectAllowlists: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(project.Number),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreOptimizedArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreDedicatedServingEndpointArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigArgs;\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 featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_online_store_optimized\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .optimized()\n .dedicatedServingEndpoint(AiFeatureOnlineStoreDedicatedServingEndpointArgs.builder()\n .privateServiceConnectConfig(AiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigArgs.builder()\n .enablePrivateServiceConnect(true)\n .projectAllowlists(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_online_store_optimized\n labels:\n foo: bar\n region: us-central1\n optimized: {}\n dedicatedServingEndpoint:\n privateServiceConnectConfig:\n enablePrivateServiceConnect: true\n projectAllowlists:\n - ${project.number}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore With Beta Fields Bigtable\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_online_store_beta_bigtable\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n embeddingManagement: {\n enabled: true,\n },\n forceDestroy: true,\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_online_store_beta_bigtable\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 2,\n \"cpu_utilization_target\": 80,\n },\n },\n embedding_management={\n \"enabled\": True,\n },\n force_destroy=True)\nproject = gcp.organizations.get_project()\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 featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_online_store_beta_bigtable\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n EmbeddingManagement = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreEmbeddingManagementArgs\n {\n Enabled = true,\n },\n ForceDestroy = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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 := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_online_store_beta_bigtable\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEmbeddingManagement: \u0026vertex.AiFeatureOnlineStoreEmbeddingManagementArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\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 = organizations.LookupProject(ctx, nil, 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.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreEmbeddingManagementArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_online_store_beta_bigtable\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .embeddingManagement(AiFeatureOnlineStoreEmbeddingManagementArgs.builder()\n .enabled(true)\n .build())\n .forceDestroy(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_online_store_beta_bigtable\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n embeddingManagement:\n enabled: true\n forceDestroy: true\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeatureOnlineStore can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/featureOnlineStores/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, FeatureOnlineStore can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStore:AiFeatureOnlineStore default projects/{{project}}/locations/{{region}}/featureOnlineStores/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStore:AiFeatureOnlineStore default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStore:AiFeatureOnlineStore default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStore:AiFeatureOnlineStore default {{name}}\n```\n\n", "properties": { "bigtable": { "$ref": "#/types/gcp:vertex/AiFeatureOnlineStoreBigtable:AiFeatureOnlineStoreBigtable", @@ -244393,7 +244393,7 @@ } }, "gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview": { - "description": "FeatureView is representation of values that the FeatureOnlineStore will serve based on its syncConfig.\n\n\nTo get more information about FeatureOnlineStoreFeatureview, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.featureOnlineStores.featureViews)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Featureonlinestore Featureview\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_view\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n});\nconst tf_test_dataset = new gcp.bigquery.Dataset(\"tf-test-dataset\", {\n datasetId: \"example_feature_view\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst tf_test_table = new gcp.bigquery.Table(\"tf-test-table\", {\n deletionProtection: false,\n datasetId: tf_test_dataset.datasetId,\n tableId: \"example_feature_view\",\n schema: ` [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n`,\n});\nconst featureview = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview\", {\n name: \"example_feature_view\",\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n bigQuerySource: {\n uri: pulumi.interpolate`bq://${tf_test_table.project}.${tf_test_table.datasetId}.${tf_test_table.tableId}`,\n entityIdColumns: [\"test_entity_column\"],\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_view\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"autoScaling\": {\n \"minNodeCount\": 1,\n \"maxNodeCount\": 2,\n \"cpuUtilizationTarget\": 80,\n },\n })\ntf_test_dataset = gcp.bigquery.Dataset(\"tf-test-dataset\",\n dataset_id=\"example_feature_view\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\ntf_test_table = gcp.bigquery.Table(\"tf-test-table\",\n deletion_protection=False,\n dataset_id=tf_test_dataset.dataset_id,\n table_id=\"example_feature_view\",\n schema=\"\"\" [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n\"\"\")\nfeatureview = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview\",\n name=\"example_feature_view\",\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n big_query_source={\n \"uri\": pulumi.Output.all(tf_test_table.project, tf_test_table.dataset_id, tf_test_table.table_id).apply(lambda project, dataset_id, table_id: f\"bq://{project}.{dataset_id}.{table_id}\"),\n \"entityIdColumns\": [\"test_entity_column\"],\n })\nproject = gcp.organizations.get_project()\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 featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_view\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n });\n\n var tf_test_dataset = new Gcp.BigQuery.Dataset(\"tf-test-dataset\", new()\n {\n DatasetId = \"example_feature_view\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var tf_test_table = new Gcp.BigQuery.Table(\"tf-test-table\", new()\n {\n DeletionProtection = false,\n DatasetId = tf_test_dataset.DatasetId,\n TableId = \"example_feature_view\",\n Schema = @\" [\n {\n \"\"name\"\": \"\"entity_id\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"Test default entity_id\"\"\n },\n {\n \"\"name\"\": \"\"test_entity_column\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"test secondary entity column\"\"\n },\n {\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"description\"\": \"\"Default timestamp value\"\"\n }\n]\n\",\n });\n\n var featureview = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"featureview\", new()\n {\n Name = \"example_feature_view\",\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs\n {\n Uri = Output.Tuple(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n EntityIdColumns = new[]\n {\n \"test_entity_column\",\n },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_view\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\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 = bigquery.NewDataset(ctx, \"tf-test-dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_feature_view\"),\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, \"tf-test-table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: tf_test_dataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_feature_view\"),\n\t\t\tSchema: pulumi.String(` [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStoreFeatureview(ctx, \"featureview\", \u0026vertex.AiFeatureOnlineStoreFeatureviewArgs{\n\t\t\tName: pulumi.String(\"example_feature_view\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureOnlineStore: featureonlinestore.Name,\n\t\t\tSyncConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs{\n\t\t\t\tCron: pulumi.String(\"0 0 * * *\"),\n\t\t\t},\n\t\t\tBigQuerySource: \u0026vertex.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs{\n\t\t\t\tUri: pulumi.All(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test_entity_column\"),\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 = organizations.LookupProject(ctx, nil, 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.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\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.vertex.AiFeatureOnlineStoreFeatureview;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureviewArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_view\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .build());\n\n var tf_test_dataset = new Dataset(\"tf-test-dataset\", DatasetArgs.builder()\n .datasetId(\"example_feature_view\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var tf_test_table = new Table(\"tf-test-table\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(tf_test_dataset.datasetId())\n .tableId(\"example_feature_view\")\n .schema(\"\"\"\n [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n \"\"\")\n .build());\n\n var featureview = new AiFeatureOnlineStoreFeatureview(\"featureview\", AiFeatureOnlineStoreFeatureviewArgs.builder()\n .name(\"example_feature_view\")\n .region(\"us-central1\")\n .featureOnlineStore(featureonlinestore.name())\n .syncConfig(AiFeatureOnlineStoreFeatureviewSyncConfigArgs.builder()\n .cron(\"0 0 * * *\")\n .build())\n .bigQuerySource(AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs.builder()\n .uri(Output.tuple(tf_test_table.project(), tf_test_table.datasetId(), tf_test_table.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .entityIdColumns(\"test_entity_column\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_view\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n tf-test-dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_feature_view\n friendlyName: test\n description: This is a test description\n location: US\n tf-test-table:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${[\"tf-test-dataset\"].datasetId}\n tableId: example_feature_view\n schema: |2\n [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n ]\n featureview:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n properties:\n name: example_feature_view\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n bigQuerySource:\n uri: bq://${[\"tf-test-table\"].project}.${[\"tf-test-table\"].datasetId}.${[\"tf-test-table\"].tableId}\n entityIdColumns:\n - test_entity_column\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore Featureview Feature Registry\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_view_feature_registry\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n});\nconst sampleDataset = new gcp.bigquery.Dataset(\"sample_dataset\", {\n datasetId: \"example_feature_view_feature_registry\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst sampleTable = new gcp.bigquery.Table(\"sample_table\", {\n deletionProtection: false,\n datasetId: sampleDataset.datasetId,\n tableId: \"example_feature_view_feature_registry\",\n schema: `[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n});\nconst sampleFeatureGroup = new gcp.vertex.AiFeatureGroup(\"sample_feature_group\", {\n name: \"example_feature_view_feature_registry\",\n description: \"A sample feature group\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n bigQuery: {\n bigQuerySource: {\n inputUri: pulumi.interpolate`bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}`,\n },\n entityIdColumns: [\"feature_id\"],\n },\n});\nconst sampleFeature = new gcp.vertex.AiFeatureGroupFeature(\"sample_feature\", {\n name: \"example_feature_view_feature_registry\",\n region: \"us-central1\",\n featureGroup: sampleFeatureGroup.name,\n description: \"A sample feature\",\n labels: {\n \"label-one\": \"value-one\",\n },\n});\nconst featureviewFeatureregistry = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_featureregistry\", {\n name: \"example_feature_view_feature_registry\",\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n featureRegistrySource: {\n featureGroups: [{\n featureGroupId: sampleFeatureGroup.name,\n featureIds: [sampleFeature.name],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_view_feature_registry\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"autoScaling\": {\n \"minNodeCount\": 1,\n \"maxNodeCount\": 2,\n \"cpuUtilizationTarget\": 80,\n },\n })\nsample_dataset = gcp.bigquery.Dataset(\"sample_dataset\",\n dataset_id=\"example_feature_view_feature_registry\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nsample_table = gcp.bigquery.Table(\"sample_table\",\n deletion_protection=False,\n dataset_id=sample_dataset.dataset_id,\n table_id=\"example_feature_view_feature_registry\",\n schema=\"\"\"[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\")\nsample_feature_group = gcp.vertex.AiFeatureGroup(\"sample_feature_group\",\n name=\"example_feature_view_feature_registry\",\n description=\"A sample feature group\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n big_query={\n \"bigQuerySource\": {\n \"inputUri\": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f\"bq://{project}.{dataset_id}.{table_id}\"),\n },\n \"entityIdColumns\": [\"feature_id\"],\n })\nsample_feature = gcp.vertex.AiFeatureGroupFeature(\"sample_feature\",\n name=\"example_feature_view_feature_registry\",\n region=\"us-central1\",\n feature_group=sample_feature_group.name,\n description=\"A sample feature\",\n labels={\n \"label-one\": \"value-one\",\n })\nfeatureview_featureregistry = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_featureregistry\",\n name=\"example_feature_view_feature_registry\",\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n feature_registry_source={\n \"featureGroups\": [{\n \"featureGroupId\": sample_feature_group.name,\n \"featureIds\": [sample_feature.name],\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 featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n });\n\n var sampleDataset = new Gcp.BigQuery.Dataset(\"sample_dataset\", new()\n {\n DatasetId = \"example_feature_view_feature_registry\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var sampleTable = new Gcp.BigQuery.Table(\"sample_table\", new()\n {\n DeletionProtection = false,\n DatasetId = sampleDataset.DatasetId,\n TableId = \"example_feature_view_feature_registry\",\n Schema = @\"[\n {\n \"\"name\"\": \"\"feature_id\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"example_feature_view_feature_registry\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n });\n\n var sampleFeatureGroup = new Gcp.Vertex.AiFeatureGroup(\"sample_feature_group\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Description = \"A sample feature group\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n BigQuery = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryArgs\n {\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryBigQuerySourceArgs\n {\n InputUri = Output.Tuple(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n },\n EntityIdColumns = new[]\n {\n \"feature_id\",\n },\n },\n });\n\n var sampleFeature = new Gcp.Vertex.AiFeatureGroupFeature(\"sample_feature\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Region = \"us-central1\",\n FeatureGroup = sampleFeatureGroup.Name,\n Description = \"A sample feature\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var featureviewFeatureregistry = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"featureview_featureregistry\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n FeatureRegistrySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs\n {\n FeatureGroups = new[]\n {\n new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs\n {\n FeatureGroupId = sampleFeatureGroup.Name,\n FeatureIds = new[]\n {\n sampleFeature.Name,\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/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\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\tsampleDataset, err := bigquery.NewDataset(ctx, \"sample_dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_feature_view_feature_registry\"),\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\tsampleTable, err := bigquery.NewTable(ctx, \"sample_table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: sampleDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleFeatureGroup, err := vertex.NewAiFeatureGroup(ctx, \"sample_feature_group\", \u0026vertex.AiFeatureGroupArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tDescription: pulumi.String(\"A sample feature group\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tBigQuery: \u0026vertex.AiFeatureGroupBigQueryArgs{\n\t\t\t\tBigQuerySource: \u0026vertex.AiFeatureGroupBigQueryBigQuerySourceArgs{\n\t\t\t\t\tInputUri: pulumi.All(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"feature_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\tsampleFeature, err := vertex.NewAiFeatureGroupFeature(ctx, \"sample_feature\", \u0026vertex.AiFeatureGroupFeatureArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureGroup: sampleFeatureGroup.Name,\n\t\t\tDescription: pulumi.String(\"A sample feature\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStoreFeatureview(ctx, \"featureview_featureregistry\", \u0026vertex.AiFeatureOnlineStoreFeatureviewArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureOnlineStore: featureonlinestore.Name,\n\t\t\tSyncConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs{\n\t\t\t\tCron: pulumi.String(\"0 0 * * *\"),\n\t\t\t},\n\t\t\tFeatureRegistrySource: \u0026vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs{\n\t\t\t\tFeatureGroups: vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArray{\n\t\t\t\t\t\u0026vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs{\n\t\t\t\t\t\tFeatureGroupId: sampleFeatureGroup.Name,\n\t\t\t\t\t\tFeatureIds: pulumi.StringArray{\n\t\t\t\t\t\t\tsampleFeature.Name,\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.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\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.vertex.AiFeatureGroup;\nimport com.pulumi.gcp.vertex.AiFeatureGroupArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryBigQuerySourceArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeature;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeatureArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureview;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureviewArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs;\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 featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .build());\n\n var sampleDataset = new Dataset(\"sampleDataset\", DatasetArgs.builder()\n .datasetId(\"example_feature_view_feature_registry\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var sampleTable = new Table(\"sampleTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(sampleDataset.datasetId())\n .tableId(\"example_feature_view_feature_registry\")\n .schema(\"\"\"\n[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n var sampleFeatureGroup = new AiFeatureGroup(\"sampleFeatureGroup\", AiFeatureGroupArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .description(\"A sample feature group\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .bigQuery(AiFeatureGroupBigQueryArgs.builder()\n .bigQuerySource(AiFeatureGroupBigQueryBigQuerySourceArgs.builder()\n .inputUri(Output.tuple(sampleTable.project(), sampleTable.datasetId(), sampleTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .build())\n .entityIdColumns(\"feature_id\")\n .build())\n .build());\n\n var sampleFeature = new AiFeatureGroupFeature(\"sampleFeature\", AiFeatureGroupFeatureArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .region(\"us-central1\")\n .featureGroup(sampleFeatureGroup.name())\n .description(\"A sample feature\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var featureviewFeatureregistry = new AiFeatureOnlineStoreFeatureview(\"featureviewFeatureregistry\", AiFeatureOnlineStoreFeatureviewArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .region(\"us-central1\")\n .featureOnlineStore(featureonlinestore.name())\n .syncConfig(AiFeatureOnlineStoreFeatureviewSyncConfigArgs.builder()\n .cron(\"0 0 * * *\")\n .build())\n .featureRegistrySource(AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs.builder()\n .featureGroups(AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs.builder()\n .featureGroupId(sampleFeatureGroup.name())\n .featureIds(sampleFeature.name())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_view_feature_registry\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n sampleDataset:\n type: gcp:bigquery:Dataset\n name: sample_dataset\n properties:\n datasetId: example_feature_view_feature_registry\n friendlyName: test\n description: This is a test description\n location: US\n sampleTable:\n type: gcp:bigquery:Table\n name: sample_table\n properties:\n deletionProtection: false\n datasetId: ${sampleDataset.datasetId}\n tableId: example_feature_view_feature_registry\n schema: |\n [\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n ]\n sampleFeatureGroup:\n type: gcp:vertex:AiFeatureGroup\n name: sample_feature_group\n properties:\n name: example_feature_view_feature_registry\n description: A sample feature group\n region: us-central1\n labels:\n label-one: value-one\n bigQuery:\n bigQuerySource:\n inputUri: bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}\n entityIdColumns:\n - feature_id\n sampleFeature:\n type: gcp:vertex:AiFeatureGroupFeature\n name: sample_feature\n properties:\n name: example_feature_view_feature_registry\n region: us-central1\n featureGroup: ${sampleFeatureGroup.name}\n description: A sample feature\n labels:\n label-one: value-one\n featureviewFeatureregistry:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n name: featureview_featureregistry\n properties:\n name: example_feature_view_feature_registry\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n featureRegistrySource:\n featureGroups:\n - featureGroupId: ${sampleFeatureGroup.name}\n featureIds:\n - ${sampleFeature.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore Featureview Cross Project\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst testProject = gcp.organizations.getProject({});\nconst project = new gcp.organizations.Project(\"project\", {\n projectId: \"tf-test_55138\",\n name: \"tf-test_37559\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst wait60Seconds = new time.index.Sleep(\"wait_60_seconds\", {createDuration: \"60s\"}, {\n dependsOn: [project],\n});\nconst vertexai = new gcp.projects.Service(\"vertexai\", {\n service: \"aiplatform.googleapis.com\",\n project: project.projectId,\n disableOnDestroy: false,\n}, {\n dependsOn: [wait60Seconds],\n});\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_cross_project_featureview\",\n project: project.projectId,\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n}, {\n dependsOn: [vertexai],\n});\nconst sampleDataset = new gcp.bigquery.Dataset(\"sample_dataset\", {\n datasetId: \"example_cross_project_featureview\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst viewer = new gcp.bigquery.DatasetIamMember(\"viewer\", {\n project: testProject.then(testProject =\u003e testProject.projectId),\n datasetId: sampleDataset.datasetId,\n role: \"roles/bigquery.dataViewer\",\n member: pulumi.interpolate`serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com`,\n}, {\n dependsOn: [featureonlinestore],\n});\nconst wait30Seconds = new time.index.Sleep(\"wait_30_seconds\", {createDuration: \"30s\"}, {\n dependsOn: [viewer],\n});\nconst sampleTable = new gcp.bigquery.Table(\"sample_table\", {\n deletionProtection: false,\n datasetId: sampleDataset.datasetId,\n tableId: \"example_cross_project_featureview\",\n schema: `[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n});\nconst sampleFeatureGroup = new gcp.vertex.AiFeatureGroup(\"sample_feature_group\", {\n name: \"example_cross_project_featureview\",\n description: \"A sample feature group\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n bigQuery: {\n bigQuerySource: {\n inputUri: pulumi.interpolate`bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}`,\n },\n entityIdColumns: [\"feature_id\"],\n },\n});\nconst sampleFeature = new gcp.vertex.AiFeatureGroupFeature(\"sample_feature\", {\n name: \"example_cross_project_featureview\",\n region: \"us-central1\",\n featureGroup: sampleFeatureGroup.name,\n description: \"A sample feature\",\n labels: {\n \"label-one\": \"value-one\",\n },\n});\nconst crossProjectFeatureview = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"cross_project_featureview\", {\n name: \"example_cross_project_featureview\",\n project: project.projectId,\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n featureRegistrySource: {\n featureGroups: [{\n featureGroupId: sampleFeatureGroup.name,\n featureIds: [sampleFeature.name],\n }],\n projectNumber: testProject.then(testProject =\u003e testProject.number),\n },\n}, {\n dependsOn: [\n vertexai,\n wait30Seconds,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\ntest_project = gcp.organizations.get_project()\nproject = gcp.organizations.Project(\"project\",\n project_id=\"tf-test_55138\",\n name=\"tf-test_37559\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\nwait60_seconds = time.index.Sleep(\"wait_60_seconds\", create_duration=60s,\nopts = pulumi.ResourceOptions(depends_on=[project]))\nvertexai = gcp.projects.Service(\"vertexai\",\n service=\"aiplatform.googleapis.com\",\n project=project.project_id,\n disable_on_destroy=False,\n opts = pulumi.ResourceOptions(depends_on=[wait60_seconds]))\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_cross_project_featureview\",\n project=project.project_id,\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"autoScaling\": {\n \"minNodeCount\": 1,\n \"maxNodeCount\": 2,\n \"cpuUtilizationTarget\": 80,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[vertexai]))\nsample_dataset = gcp.bigquery.Dataset(\"sample_dataset\",\n dataset_id=\"example_cross_project_featureview\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nviewer = gcp.bigquery.DatasetIamMember(\"viewer\",\n project=test_project.project_id,\n dataset_id=sample_dataset.dataset_id,\n role=\"roles/bigquery.dataViewer\",\n member=project.number.apply(lambda number: f\"serviceAccount:service-{number}@gcp-sa-aiplatform.iam.gserviceaccount.com\"),\n opts = pulumi.ResourceOptions(depends_on=[featureonlinestore]))\nwait30_seconds = time.index.Sleep(\"wait_30_seconds\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[viewer]))\nsample_table = gcp.bigquery.Table(\"sample_table\",\n deletion_protection=False,\n dataset_id=sample_dataset.dataset_id,\n table_id=\"example_cross_project_featureview\",\n schema=\"\"\"[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\")\nsample_feature_group = gcp.vertex.AiFeatureGroup(\"sample_feature_group\",\n name=\"example_cross_project_featureview\",\n description=\"A sample feature group\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n big_query={\n \"bigQuerySource\": {\n \"inputUri\": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f\"bq://{project}.{dataset_id}.{table_id}\"),\n },\n \"entityIdColumns\": [\"feature_id\"],\n })\nsample_feature = gcp.vertex.AiFeatureGroupFeature(\"sample_feature\",\n name=\"example_cross_project_featureview\",\n region=\"us-central1\",\n feature_group=sample_feature_group.name,\n description=\"A sample feature\",\n labels={\n \"label-one\": \"value-one\",\n })\ncross_project_featureview = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"cross_project_featureview\",\n name=\"example_cross_project_featureview\",\n project=project.project_id,\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n feature_registry_source={\n \"featureGroups\": [{\n \"featureGroupId\": sample_feature_group.name,\n \"featureIds\": [sample_feature.name],\n }],\n \"projectNumber\": test_project.number,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n vertexai,\n wait30_seconds,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testProject = Gcp.Organizations.GetProject.Invoke();\n\n var project = new Gcp.Organizations.Project(\"project\", new()\n {\n ProjectId = \"tf-test_55138\",\n Name = \"tf-test_37559\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var wait60Seconds = new Time.Index.Sleep(\"wait_60_seconds\", new()\n {\n CreateDuration = \"60s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n project,\n },\n });\n\n var vertexai = new Gcp.Projects.Service(\"vertexai\", new()\n {\n ServiceName = \"aiplatform.googleapis.com\",\n Project = project.ProjectId,\n DisableOnDestroy = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait60Seconds,\n },\n });\n\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_cross_project_featureview\",\n Project = project.ProjectId,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexai,\n },\n });\n\n var sampleDataset = new Gcp.BigQuery.Dataset(\"sample_dataset\", new()\n {\n DatasetId = \"example_cross_project_featureview\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var viewer = new Gcp.BigQuery.DatasetIamMember(\"viewer\", new()\n {\n Project = testProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n DatasetId = sampleDataset.DatasetId,\n Role = \"roles/bigquery.dataViewer\",\n Member = project.Number.Apply(number =\u003e $\"serviceAccount:service-{number}@gcp-sa-aiplatform.iam.gserviceaccount.com\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n featureonlinestore,\n },\n });\n\n var wait30Seconds = new Time.Index.Sleep(\"wait_30_seconds\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n viewer,\n },\n });\n\n var sampleTable = new Gcp.BigQuery.Table(\"sample_table\", new()\n {\n DeletionProtection = false,\n DatasetId = sampleDataset.DatasetId,\n TableId = \"example_cross_project_featureview\",\n Schema = @\"[\n {\n \"\"name\"\": \"\"feature_id\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"example_cross_project_featureview\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n });\n\n var sampleFeatureGroup = new Gcp.Vertex.AiFeatureGroup(\"sample_feature_group\", new()\n {\n Name = \"example_cross_project_featureview\",\n Description = \"A sample feature group\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n BigQuery = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryArgs\n {\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryBigQuerySourceArgs\n {\n InputUri = Output.Tuple(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n },\n EntityIdColumns = new[]\n {\n \"feature_id\",\n },\n },\n });\n\n var sampleFeature = new Gcp.Vertex.AiFeatureGroupFeature(\"sample_feature\", new()\n {\n Name = \"example_cross_project_featureview\",\n Region = \"us-central1\",\n FeatureGroup = sampleFeatureGroup.Name,\n Description = \"A sample feature\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var crossProjectFeatureview = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"cross_project_featureview\", new()\n {\n Name = \"example_cross_project_featureview\",\n Project = project.ProjectId,\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n FeatureRegistrySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs\n {\n FeatureGroups = new[]\n {\n new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs\n {\n FeatureGroupId = sampleFeatureGroup.Name,\n FeatureIds = new[]\n {\n sampleFeature.Name,\n },\n },\n },\n ProjectNumber = testProject.Apply(getProjectResult =\u003e getProjectResult.Number),\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexai,\n wait30Seconds,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestProject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.NewProject(ctx, \"project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"tf-test_55138\"),\n\t\t\tName: pulumi.String(\"tf-test_37559\"),\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\twait60Seconds, err := time.NewSleep(ctx, \"wait_60_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"60s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproject,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexai, err := projects.NewService(ctx, \"vertexai\", \u0026projects.ServiceArgs{\n\t\t\tService: pulumi.String(\"aiplatform.googleapis.com\"),\n\t\t\tProject: project.ProjectId,\n\t\t\tDisableOnDestroy: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait60Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tProject: project.ProjectId,\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexai,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleDataset, err := bigquery.NewDataset(ctx, \"sample_dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_cross_project_featureview\"),\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\tviewer, err := bigquery.NewDatasetIamMember(ctx, \"viewer\", \u0026bigquery.DatasetIamMemberArgs{\n\t\t\tProject: pulumi.String(testProject.ProjectId),\n\t\t\tDatasetId: sampleDataset.DatasetId,\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataViewer\"),\n\t\t\tMember: project.Number.ApplyT(func(number string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-aiplatform.iam.gserviceaccount.com\", number), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfeatureonlinestore,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twait30Seconds, err := time.NewSleep(ctx, \"wait_30_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tviewer,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleTable, err := bigquery.NewTable(ctx, \"sample_table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: sampleDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleFeatureGroup, err := vertex.NewAiFeatureGroup(ctx, \"sample_feature_group\", \u0026vertex.AiFeatureGroupArgs{\n\t\t\tName: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tDescription: pulumi.String(\"A sample feature group\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tBigQuery: \u0026vertex.AiFeatureGroupBigQueryArgs{\n\t\t\t\tBigQuerySource: \u0026vertex.AiFeatureGroupBigQueryBigQuerySourceArgs{\n\t\t\t\t\tInputUri: pulumi.All(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"feature_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\tsampleFeature, err := vertex.NewAiFeatureGroupFeature(ctx, \"sample_feature\", \u0026vertex.AiFeatureGroupFeatureArgs{\n\t\t\tName: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureGroup: sampleFeatureGroup.Name,\n\t\t\tDescription: pulumi.String(\"A sample feature\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStoreFeatureview(ctx, \"cross_project_featureview\", \u0026vertex.AiFeatureOnlineStoreFeatureviewArgs{\n\t\t\tName: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tProject: project.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureOnlineStore: featureonlinestore.Name,\n\t\t\tSyncConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs{\n\t\t\t\tCron: pulumi.String(\"0 0 * * *\"),\n\t\t\t},\n\t\t\tFeatureRegistrySource: \u0026vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs{\n\t\t\t\tFeatureGroups: vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArray{\n\t\t\t\t\t\u0026vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs{\n\t\t\t\t\t\tFeatureGroupId: sampleFeatureGroup.Name,\n\t\t\t\t\t\tFeatureIds: pulumi.StringArray{\n\t\t\t\t\t\t\tsampleFeature.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tProjectNumber: pulumi.String(testProject.Number),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexai,\n\t\t\twait30Seconds,\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.DatasetIamMember;\nimport com.pulumi.gcp.bigquery.DatasetIamMemberArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroup;\nimport com.pulumi.gcp.vertex.AiFeatureGroupArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryBigQuerySourceArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeature;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeatureArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureview;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureviewArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs;\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 testProject = OrganizationsFunctions.getProject();\n\n var project = new Project(\"project\", ProjectArgs.builder()\n .projectId(\"tf-test_55138\")\n .name(\"tf-test_37559\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n var wait60Seconds = new Sleep(\"wait60Seconds\", SleepArgs.builder()\n .createDuration(\"60s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(project)\n .build());\n\n var vertexai = new Service(\"vertexai\", ServiceArgs.builder()\n .service(\"aiplatform.googleapis.com\")\n .project(project.projectId())\n .disableOnDestroy(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait60Seconds)\n .build());\n\n var featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_cross_project_featureview\")\n .project(project.projectId())\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vertexai)\n .build());\n\n var sampleDataset = new Dataset(\"sampleDataset\", DatasetArgs.builder()\n .datasetId(\"example_cross_project_featureview\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var viewer = new DatasetIamMember(\"viewer\", DatasetIamMemberArgs.builder()\n .project(testProject.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .datasetId(sampleDataset.datasetId())\n .role(\"roles/bigquery.dataViewer\")\n .member(project.number().applyValue(number -\u003e String.format(\"serviceAccount:service-%s@gcp-sa-aiplatform.iam.gserviceaccount.com\", number)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(featureonlinestore)\n .build());\n\n var wait30Seconds = new Sleep(\"wait30Seconds\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(viewer)\n .build());\n\n var sampleTable = new Table(\"sampleTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(sampleDataset.datasetId())\n .tableId(\"example_cross_project_featureview\")\n .schema(\"\"\"\n[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n var sampleFeatureGroup = new AiFeatureGroup(\"sampleFeatureGroup\", AiFeatureGroupArgs.builder()\n .name(\"example_cross_project_featureview\")\n .description(\"A sample feature group\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .bigQuery(AiFeatureGroupBigQueryArgs.builder()\n .bigQuerySource(AiFeatureGroupBigQueryBigQuerySourceArgs.builder()\n .inputUri(Output.tuple(sampleTable.project(), sampleTable.datasetId(), sampleTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .build())\n .entityIdColumns(\"feature_id\")\n .build())\n .build());\n\n var sampleFeature = new AiFeatureGroupFeature(\"sampleFeature\", AiFeatureGroupFeatureArgs.builder()\n .name(\"example_cross_project_featureview\")\n .region(\"us-central1\")\n .featureGroup(sampleFeatureGroup.name())\n .description(\"A sample feature\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var crossProjectFeatureview = new AiFeatureOnlineStoreFeatureview(\"crossProjectFeatureview\", AiFeatureOnlineStoreFeatureviewArgs.builder()\n .name(\"example_cross_project_featureview\")\n .project(project.projectId())\n .region(\"us-central1\")\n .featureOnlineStore(featureonlinestore.name())\n .syncConfig(AiFeatureOnlineStoreFeatureviewSyncConfigArgs.builder()\n .cron(\"0 0 * * *\")\n .build())\n .featureRegistrySource(AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs.builder()\n .featureGroups(AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs.builder()\n .featureGroupId(sampleFeatureGroup.name())\n .featureIds(sampleFeature.name())\n .build())\n .projectNumber(testProject.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n vertexai,\n wait30Seconds)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:organizations:Project\n properties:\n projectId: tf-test_55138\n name: tf-test_37559\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n wait60Seconds:\n type: time:sleep\n name: wait_60_seconds\n properties:\n createDuration: 60s\n options:\n dependson:\n - ${project}\n wait30Seconds:\n type: time:sleep\n name: wait_30_seconds\n properties:\n createDuration: 30s\n options:\n dependson:\n - ${viewer}\n vertexai:\n type: gcp:projects:Service\n properties:\n service: aiplatform.googleapis.com\n project: ${project.projectId}\n disableOnDestroy: false # Needed for CI tests for permissions to propagate, should not be needed for actual usage\n options:\n dependson:\n - ${wait60Seconds}\n viewer:\n type: gcp:bigquery:DatasetIamMember\n properties:\n project: ${testProject.projectId}\n datasetId: ${sampleDataset.datasetId}\n role: roles/bigquery.dataViewer\n member: serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com\n options:\n dependson:\n - ${featureonlinestore}\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_cross_project_featureview\n project: ${project.projectId}\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n options:\n dependson:\n - ${vertexai}\n sampleDataset:\n type: gcp:bigquery:Dataset\n name: sample_dataset\n properties:\n datasetId: example_cross_project_featureview\n friendlyName: test\n description: This is a test description\n location: US\n sampleTable:\n type: gcp:bigquery:Table\n name: sample_table\n properties:\n deletionProtection: false\n datasetId: ${sampleDataset.datasetId}\n tableId: example_cross_project_featureview\n schema: |\n [\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n ]\n sampleFeatureGroup:\n type: gcp:vertex:AiFeatureGroup\n name: sample_feature_group\n properties:\n name: example_cross_project_featureview\n description: A sample feature group\n region: us-central1\n labels:\n label-one: value-one\n bigQuery:\n bigQuerySource:\n inputUri: bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}\n entityIdColumns:\n - feature_id\n sampleFeature:\n type: gcp:vertex:AiFeatureGroupFeature\n name: sample_feature\n properties:\n name: example_cross_project_featureview\n region: us-central1\n featureGroup: ${sampleFeatureGroup.name}\n description: A sample feature\n labels:\n label-one: value-one\n crossProjectFeatureview:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n name: cross_project_featureview\n properties:\n name: example_cross_project_featureview\n project: ${project.projectId}\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n featureRegistrySource:\n featureGroups:\n - featureGroupId: ${sampleFeatureGroup.name}\n featureIds:\n - ${sampleFeature.name}\n projectNumber: ${testProject.number}\n options:\n dependson:\n - ${vertexai}\n - ${wait30Seconds}\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore Featureview With Vector Search\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_view_vector_search\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n embeddingManagement: {\n enabled: true,\n },\n});\nconst tf_test_dataset = new gcp.bigquery.Dataset(\"tf-test-dataset\", {\n datasetId: \"example_feature_view_vector_search\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst tf_test_table = new gcp.bigquery.Table(\"tf-test-table\", {\n deletionProtection: false,\n datasetId: tf_test_dataset.datasetId,\n tableId: \"example_feature_view_vector_search\",\n schema: `[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n`,\n});\nconst featureviewVectorSearch = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_vector_search\", {\n name: \"example_feature_view_vector_search\",\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n bigQuerySource: {\n uri: pulumi.interpolate`bq://${tf_test_table.project}.${tf_test_table.datasetId}.${tf_test_table.tableId}`,\n entityIdColumns: [\"test_entity_column\"],\n },\n vectorSearchConfig: {\n embeddingColumn: \"embedding\",\n filterColumns: [\"country\"],\n crowdingColumn: \"test_crowding_column\",\n distanceMeasureType: \"DOT_PRODUCT_DISTANCE\",\n treeAhConfig: {\n leafNodeEmbeddingCount: \"1000\",\n },\n embeddingDimension: 2,\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_view_vector_search\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"autoScaling\": {\n \"minNodeCount\": 1,\n \"maxNodeCount\": 2,\n \"cpuUtilizationTarget\": 80,\n },\n },\n embedding_management={\n \"enabled\": True,\n })\ntf_test_dataset = gcp.bigquery.Dataset(\"tf-test-dataset\",\n dataset_id=\"example_feature_view_vector_search\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\ntf_test_table = gcp.bigquery.Table(\"tf-test-table\",\n deletion_protection=False,\n dataset_id=tf_test_dataset.dataset_id,\n table_id=\"example_feature_view_vector_search\",\n schema=\"\"\"[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n\"\"\")\nfeatureview_vector_search = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_vector_search\",\n name=\"example_feature_view_vector_search\",\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n big_query_source={\n \"uri\": pulumi.Output.all(tf_test_table.project, tf_test_table.dataset_id, tf_test_table.table_id).apply(lambda project, dataset_id, table_id: f\"bq://{project}.{dataset_id}.{table_id}\"),\n \"entityIdColumns\": [\"test_entity_column\"],\n },\n vector_search_config={\n \"embeddingColumn\": \"embedding\",\n \"filterColumns\": [\"country\"],\n \"crowdingColumn\": \"test_crowding_column\",\n \"distanceMeasureType\": \"DOT_PRODUCT_DISTANCE\",\n \"treeAhConfig\": {\n \"leafNodeEmbeddingCount\": \"1000\",\n },\n \"embeddingDimension\": 2,\n })\nproject = gcp.organizations.get_project()\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 featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_view_vector_search\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n EmbeddingManagement = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreEmbeddingManagementArgs\n {\n Enabled = true,\n },\n });\n\n var tf_test_dataset = new Gcp.BigQuery.Dataset(\"tf-test-dataset\", new()\n {\n DatasetId = \"example_feature_view_vector_search\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var tf_test_table = new Gcp.BigQuery.Table(\"tf-test-table\", new()\n {\n DeletionProtection = false,\n DatasetId = tf_test_dataset.DatasetId,\n TableId = \"example_feature_view_vector_search\",\n Schema = @\"[\n{\n \"\"name\"\": \"\"test_primary_id\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"primary test id\"\"\n},\n{\n \"\"name\"\": \"\"embedding\"\",\n \"\"mode\"\": \"\"REPEATED\"\",\n \"\"type\"\": \"\"FLOAT\"\",\n \"\"description\"\": \"\"embedding column for primary_id column\"\"\n},\n{\n \"\"name\"\": \"\"country\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"country\"\"\n},\n{\n \"\"name\"\": \"\"test_crowding_column\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"INTEGER\"\",\n \"\"description\"\": \"\"test crowding column\"\"\n},\n{\n \"\"name\"\": \"\"entity_id\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"Test default entity_id\"\"\n},\n{\n \"\"name\"\": \"\"test_entity_column\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"test secondary entity column\"\"\n},\n{\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"description\"\": \"\"Default timestamp value\"\"\n}\n]\n\",\n });\n\n var featureviewVectorSearch = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"featureview_vector_search\", new()\n {\n Name = \"example_feature_view_vector_search\",\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs\n {\n Uri = Output.Tuple(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n EntityIdColumns = new[]\n {\n \"test_entity_column\",\n },\n },\n VectorSearchConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs\n {\n EmbeddingColumn = \"embedding\",\n FilterColumns = new[]\n {\n \"country\",\n },\n CrowdingColumn = \"test_crowding_column\",\n DistanceMeasureType = \"DOT_PRODUCT_DISTANCE\",\n TreeAhConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs\n {\n LeafNodeEmbeddingCount = \"1000\",\n },\n EmbeddingDimension = 2,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_vector_search\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEmbeddingManagement: \u0026vertex.AiFeatureOnlineStoreEmbeddingManagementArgs{\n\t\t\t\tEnabled: 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\t_, err = bigquery.NewDataset(ctx, \"tf-test-dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_feature_view_vector_search\"),\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, \"tf-test-table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: tf_test_dataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_feature_view_vector_search\"),\n\t\t\tSchema: pulumi.String(`[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStoreFeatureview(ctx, \"featureview_vector_search\", \u0026vertex.AiFeatureOnlineStoreFeatureviewArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_vector_search\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureOnlineStore: featureonlinestore.Name,\n\t\t\tSyncConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs{\n\t\t\t\tCron: pulumi.String(\"0 0 * * *\"),\n\t\t\t},\n\t\t\tBigQuerySource: \u0026vertex.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs{\n\t\t\t\tUri: pulumi.All(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test_entity_column\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tVectorSearchConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs{\n\t\t\t\tEmbeddingColumn: pulumi.String(\"embedding\"),\n\t\t\t\tFilterColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"country\"),\n\t\t\t\t},\n\t\t\t\tCrowdingColumn: pulumi.String(\"test_crowding_column\"),\n\t\t\t\tDistanceMeasureType: pulumi.String(\"DOT_PRODUCT_DISTANCE\"),\n\t\t\t\tTreeAhConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs{\n\t\t\t\t\tLeafNodeEmbeddingCount: pulumi.String(\"1000\"),\n\t\t\t\t},\n\t\t\t\tEmbeddingDimension: pulumi.Int(2),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreEmbeddingManagementArgs;\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.vertex.AiFeatureOnlineStoreFeatureview;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureviewArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_view_vector_search\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .embeddingManagement(AiFeatureOnlineStoreEmbeddingManagementArgs.builder()\n .enabled(true)\n .build())\n .build());\n\n var tf_test_dataset = new Dataset(\"tf-test-dataset\", DatasetArgs.builder()\n .datasetId(\"example_feature_view_vector_search\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var tf_test_table = new Table(\"tf-test-table\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(tf_test_dataset.datasetId())\n .tableId(\"example_feature_view_vector_search\")\n .schema(\"\"\"\n[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n \"\"\")\n .build());\n\n var featureviewVectorSearch = new AiFeatureOnlineStoreFeatureview(\"featureviewVectorSearch\", AiFeatureOnlineStoreFeatureviewArgs.builder()\n .name(\"example_feature_view_vector_search\")\n .region(\"us-central1\")\n .featureOnlineStore(featureonlinestore.name())\n .syncConfig(AiFeatureOnlineStoreFeatureviewSyncConfigArgs.builder()\n .cron(\"0 0 * * *\")\n .build())\n .bigQuerySource(AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs.builder()\n .uri(Output.tuple(tf_test_table.project(), tf_test_table.datasetId(), tf_test_table.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .entityIdColumns(\"test_entity_column\")\n .build())\n .vectorSearchConfig(AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs.builder()\n .embeddingColumn(\"embedding\")\n .filterColumns(\"country\")\n .crowdingColumn(\"test_crowding_column\")\n .distanceMeasureType(\"DOT_PRODUCT_DISTANCE\")\n .treeAhConfig(AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs.builder()\n .leafNodeEmbeddingCount(\"1000\")\n .build())\n .embeddingDimension(\"2\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_view_vector_search\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n embeddingManagement:\n enabled: true\n tf-test-dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_feature_view_vector_search\n friendlyName: test\n description: This is a test description\n location: US\n tf-test-table:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${[\"tf-test-dataset\"].datasetId}\n tableId: example_feature_view_vector_search\n schema: |\n [\n {\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n },\n {\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n },\n {\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n },\n {\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n },\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n ]\n featureviewVectorSearch:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n name: featureview_vector_search\n properties:\n name: example_feature_view_vector_search\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n bigQuerySource:\n uri: bq://${[\"tf-test-table\"].project}.${[\"tf-test-table\"].datasetId}.${[\"tf-test-table\"].tableId}\n entityIdColumns:\n - test_entity_column\n vectorSearchConfig:\n embeddingColumn: embedding\n filterColumns:\n - country\n crowdingColumn: test_crowding_column\n distanceMeasureType: DOT_PRODUCT_DISTANCE\n treeAhConfig:\n leafNodeEmbeddingCount: '1000'\n embeddingDimension: '2'\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeatureOnlineStoreFeatureview can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/featureOnlineStores/{{feature_online_store}}/featureViews/{{name}}`\n\n* `{{project}}/{{region}}/{{feature_online_store}}/{{name}}`\n\n* `{{region}}/{{feature_online_store}}/{{name}}`\n\n* `{{feature_online_store}}/{{name}}`\n\nWhen using the `pulumi import` command, FeatureOnlineStoreFeatureview can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default projects/{{project}}/locations/{{region}}/featureOnlineStores/{{feature_online_store}}/featureViews/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default {{project}}/{{region}}/{{feature_online_store}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default {{region}}/{{feature_online_store}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default {{feature_online_store}}/{{name}}\n```\n\n", + "description": "FeatureView is representation of values that the FeatureOnlineStore will serve based on its syncConfig.\n\n\nTo get more information about FeatureOnlineStoreFeatureview, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.featureOnlineStores.featureViews)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Featureonlinestore Featureview\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_view\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n});\nconst tf_test_dataset = new gcp.bigquery.Dataset(\"tf-test-dataset\", {\n datasetId: \"example_feature_view\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst tf_test_table = new gcp.bigquery.Table(\"tf-test-table\", {\n deletionProtection: false,\n datasetId: tf_test_dataset.datasetId,\n tableId: \"example_feature_view\",\n schema: ` [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n`,\n});\nconst featureview = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview\", {\n name: \"example_feature_view\",\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n bigQuerySource: {\n uri: pulumi.interpolate`bq://${tf_test_table.project}.${tf_test_table.datasetId}.${tf_test_table.tableId}`,\n entityIdColumns: [\"test_entity_column\"],\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_view\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 2,\n \"cpu_utilization_target\": 80,\n },\n })\ntf_test_dataset = gcp.bigquery.Dataset(\"tf-test-dataset\",\n dataset_id=\"example_feature_view\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\ntf_test_table = gcp.bigquery.Table(\"tf-test-table\",\n deletion_protection=False,\n dataset_id=tf_test_dataset.dataset_id,\n table_id=\"example_feature_view\",\n schema=\"\"\" [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n\"\"\")\nfeatureview = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview\",\n name=\"example_feature_view\",\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n big_query_source={\n \"uri\": pulumi.Output.all(tf_test_table.project, tf_test_table.dataset_id, tf_test_table.table_id).apply(lambda project, dataset_id, table_id: f\"bq://{project}.{dataset_id}.{table_id}\"),\n \"entity_id_columns\": [\"test_entity_column\"],\n })\nproject = gcp.organizations.get_project()\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 featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_view\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n });\n\n var tf_test_dataset = new Gcp.BigQuery.Dataset(\"tf-test-dataset\", new()\n {\n DatasetId = \"example_feature_view\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var tf_test_table = new Gcp.BigQuery.Table(\"tf-test-table\", new()\n {\n DeletionProtection = false,\n DatasetId = tf_test_dataset.DatasetId,\n TableId = \"example_feature_view\",\n Schema = @\" [\n {\n \"\"name\"\": \"\"entity_id\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"Test default entity_id\"\"\n },\n {\n \"\"name\"\": \"\"test_entity_column\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"test secondary entity column\"\"\n },\n {\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"description\"\": \"\"Default timestamp value\"\"\n }\n]\n\",\n });\n\n var featureview = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"featureview\", new()\n {\n Name = \"example_feature_view\",\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs\n {\n Uri = Output.Tuple(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n EntityIdColumns = new[]\n {\n \"test_entity_column\",\n },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_view\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\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 = bigquery.NewDataset(ctx, \"tf-test-dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_feature_view\"),\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, \"tf-test-table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: tf_test_dataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_feature_view\"),\n\t\t\tSchema: pulumi.String(` [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStoreFeatureview(ctx, \"featureview\", \u0026vertex.AiFeatureOnlineStoreFeatureviewArgs{\n\t\t\tName: pulumi.String(\"example_feature_view\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureOnlineStore: featureonlinestore.Name,\n\t\t\tSyncConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs{\n\t\t\t\tCron: pulumi.String(\"0 0 * * *\"),\n\t\t\t},\n\t\t\tBigQuerySource: \u0026vertex.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs{\n\t\t\t\tUri: pulumi.All(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test_entity_column\"),\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 = organizations.LookupProject(ctx, nil, 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.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\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.vertex.AiFeatureOnlineStoreFeatureview;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureviewArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_view\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .build());\n\n var tf_test_dataset = new Dataset(\"tf-test-dataset\", DatasetArgs.builder()\n .datasetId(\"example_feature_view\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var tf_test_table = new Table(\"tf-test-table\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(tf_test_dataset.datasetId())\n .tableId(\"example_feature_view\")\n .schema(\"\"\"\n [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n \"\"\")\n .build());\n\n var featureview = new AiFeatureOnlineStoreFeatureview(\"featureview\", AiFeatureOnlineStoreFeatureviewArgs.builder()\n .name(\"example_feature_view\")\n .region(\"us-central1\")\n .featureOnlineStore(featureonlinestore.name())\n .syncConfig(AiFeatureOnlineStoreFeatureviewSyncConfigArgs.builder()\n .cron(\"0 0 * * *\")\n .build())\n .bigQuerySource(AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs.builder()\n .uri(Output.tuple(tf_test_table.project(), tf_test_table.datasetId(), tf_test_table.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .entityIdColumns(\"test_entity_column\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_view\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n tf-test-dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_feature_view\n friendlyName: test\n description: This is a test description\n location: US\n tf-test-table:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${[\"tf-test-dataset\"].datasetId}\n tableId: example_feature_view\n schema: |2\n [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n ]\n featureview:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n properties:\n name: example_feature_view\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n bigQuerySource:\n uri: bq://${[\"tf-test-table\"].project}.${[\"tf-test-table\"].datasetId}.${[\"tf-test-table\"].tableId}\n entityIdColumns:\n - test_entity_column\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore Featureview Feature Registry\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_view_feature_registry\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n});\nconst sampleDataset = new gcp.bigquery.Dataset(\"sample_dataset\", {\n datasetId: \"example_feature_view_feature_registry\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst sampleTable = new gcp.bigquery.Table(\"sample_table\", {\n deletionProtection: false,\n datasetId: sampleDataset.datasetId,\n tableId: \"example_feature_view_feature_registry\",\n schema: `[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n});\nconst sampleFeatureGroup = new gcp.vertex.AiFeatureGroup(\"sample_feature_group\", {\n name: \"example_feature_view_feature_registry\",\n description: \"A sample feature group\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n bigQuery: {\n bigQuerySource: {\n inputUri: pulumi.interpolate`bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}`,\n },\n entityIdColumns: [\"feature_id\"],\n },\n});\nconst sampleFeature = new gcp.vertex.AiFeatureGroupFeature(\"sample_feature\", {\n name: \"example_feature_view_feature_registry\",\n region: \"us-central1\",\n featureGroup: sampleFeatureGroup.name,\n description: \"A sample feature\",\n labels: {\n \"label-one\": \"value-one\",\n },\n});\nconst featureviewFeatureregistry = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_featureregistry\", {\n name: \"example_feature_view_feature_registry\",\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n featureRegistrySource: {\n featureGroups: [{\n featureGroupId: sampleFeatureGroup.name,\n featureIds: [sampleFeature.name],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_view_feature_registry\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 2,\n \"cpu_utilization_target\": 80,\n },\n })\nsample_dataset = gcp.bigquery.Dataset(\"sample_dataset\",\n dataset_id=\"example_feature_view_feature_registry\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nsample_table = gcp.bigquery.Table(\"sample_table\",\n deletion_protection=False,\n dataset_id=sample_dataset.dataset_id,\n table_id=\"example_feature_view_feature_registry\",\n schema=\"\"\"[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\")\nsample_feature_group = gcp.vertex.AiFeatureGroup(\"sample_feature_group\",\n name=\"example_feature_view_feature_registry\",\n description=\"A sample feature group\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n big_query={\n \"big_query_source\": {\n \"input_uri\": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f\"bq://{project}.{dataset_id}.{table_id}\"),\n },\n \"entity_id_columns\": [\"feature_id\"],\n })\nsample_feature = gcp.vertex.AiFeatureGroupFeature(\"sample_feature\",\n name=\"example_feature_view_feature_registry\",\n region=\"us-central1\",\n feature_group=sample_feature_group.name,\n description=\"A sample feature\",\n labels={\n \"label-one\": \"value-one\",\n })\nfeatureview_featureregistry = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_featureregistry\",\n name=\"example_feature_view_feature_registry\",\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n feature_registry_source={\n \"feature_groups\": [{\n \"feature_group_id\": sample_feature_group.name,\n \"feature_ids\": [sample_feature.name],\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 featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n });\n\n var sampleDataset = new Gcp.BigQuery.Dataset(\"sample_dataset\", new()\n {\n DatasetId = \"example_feature_view_feature_registry\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var sampleTable = new Gcp.BigQuery.Table(\"sample_table\", new()\n {\n DeletionProtection = false,\n DatasetId = sampleDataset.DatasetId,\n TableId = \"example_feature_view_feature_registry\",\n Schema = @\"[\n {\n \"\"name\"\": \"\"feature_id\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"example_feature_view_feature_registry\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n });\n\n var sampleFeatureGroup = new Gcp.Vertex.AiFeatureGroup(\"sample_feature_group\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Description = \"A sample feature group\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n BigQuery = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryArgs\n {\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryBigQuerySourceArgs\n {\n InputUri = Output.Tuple(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n },\n EntityIdColumns = new[]\n {\n \"feature_id\",\n },\n },\n });\n\n var sampleFeature = new Gcp.Vertex.AiFeatureGroupFeature(\"sample_feature\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Region = \"us-central1\",\n FeatureGroup = sampleFeatureGroup.Name,\n Description = \"A sample feature\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var featureviewFeatureregistry = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"featureview_featureregistry\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n FeatureRegistrySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs\n {\n FeatureGroups = new[]\n {\n new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs\n {\n FeatureGroupId = sampleFeatureGroup.Name,\n FeatureIds = new[]\n {\n sampleFeature.Name,\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/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\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\tsampleDataset, err := bigquery.NewDataset(ctx, \"sample_dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_feature_view_feature_registry\"),\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\tsampleTable, err := bigquery.NewTable(ctx, \"sample_table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: sampleDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleFeatureGroup, err := vertex.NewAiFeatureGroup(ctx, \"sample_feature_group\", \u0026vertex.AiFeatureGroupArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tDescription: pulumi.String(\"A sample feature group\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tBigQuery: \u0026vertex.AiFeatureGroupBigQueryArgs{\n\t\t\t\tBigQuerySource: \u0026vertex.AiFeatureGroupBigQueryBigQuerySourceArgs{\n\t\t\t\t\tInputUri: pulumi.All(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"feature_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\tsampleFeature, err := vertex.NewAiFeatureGroupFeature(ctx, \"sample_feature\", \u0026vertex.AiFeatureGroupFeatureArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureGroup: sampleFeatureGroup.Name,\n\t\t\tDescription: pulumi.String(\"A sample feature\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStoreFeatureview(ctx, \"featureview_featureregistry\", \u0026vertex.AiFeatureOnlineStoreFeatureviewArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureOnlineStore: featureonlinestore.Name,\n\t\t\tSyncConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs{\n\t\t\t\tCron: pulumi.String(\"0 0 * * *\"),\n\t\t\t},\n\t\t\tFeatureRegistrySource: \u0026vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs{\n\t\t\t\tFeatureGroups: vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArray{\n\t\t\t\t\t\u0026vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs{\n\t\t\t\t\t\tFeatureGroupId: sampleFeatureGroup.Name,\n\t\t\t\t\t\tFeatureIds: pulumi.StringArray{\n\t\t\t\t\t\t\tsampleFeature.Name,\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.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\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.vertex.AiFeatureGroup;\nimport com.pulumi.gcp.vertex.AiFeatureGroupArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryBigQuerySourceArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeature;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeatureArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureview;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureviewArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs;\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 featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .build());\n\n var sampleDataset = new Dataset(\"sampleDataset\", DatasetArgs.builder()\n .datasetId(\"example_feature_view_feature_registry\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var sampleTable = new Table(\"sampleTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(sampleDataset.datasetId())\n .tableId(\"example_feature_view_feature_registry\")\n .schema(\"\"\"\n[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n var sampleFeatureGroup = new AiFeatureGroup(\"sampleFeatureGroup\", AiFeatureGroupArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .description(\"A sample feature group\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .bigQuery(AiFeatureGroupBigQueryArgs.builder()\n .bigQuerySource(AiFeatureGroupBigQueryBigQuerySourceArgs.builder()\n .inputUri(Output.tuple(sampleTable.project(), sampleTable.datasetId(), sampleTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .build())\n .entityIdColumns(\"feature_id\")\n .build())\n .build());\n\n var sampleFeature = new AiFeatureGroupFeature(\"sampleFeature\", AiFeatureGroupFeatureArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .region(\"us-central1\")\n .featureGroup(sampleFeatureGroup.name())\n .description(\"A sample feature\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var featureviewFeatureregistry = new AiFeatureOnlineStoreFeatureview(\"featureviewFeatureregistry\", AiFeatureOnlineStoreFeatureviewArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .region(\"us-central1\")\n .featureOnlineStore(featureonlinestore.name())\n .syncConfig(AiFeatureOnlineStoreFeatureviewSyncConfigArgs.builder()\n .cron(\"0 0 * * *\")\n .build())\n .featureRegistrySource(AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs.builder()\n .featureGroups(AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs.builder()\n .featureGroupId(sampleFeatureGroup.name())\n .featureIds(sampleFeature.name())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_view_feature_registry\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n sampleDataset:\n type: gcp:bigquery:Dataset\n name: sample_dataset\n properties:\n datasetId: example_feature_view_feature_registry\n friendlyName: test\n description: This is a test description\n location: US\n sampleTable:\n type: gcp:bigquery:Table\n name: sample_table\n properties:\n deletionProtection: false\n datasetId: ${sampleDataset.datasetId}\n tableId: example_feature_view_feature_registry\n schema: |\n [\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n ]\n sampleFeatureGroup:\n type: gcp:vertex:AiFeatureGroup\n name: sample_feature_group\n properties:\n name: example_feature_view_feature_registry\n description: A sample feature group\n region: us-central1\n labels:\n label-one: value-one\n bigQuery:\n bigQuerySource:\n inputUri: bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}\n entityIdColumns:\n - feature_id\n sampleFeature:\n type: gcp:vertex:AiFeatureGroupFeature\n name: sample_feature\n properties:\n name: example_feature_view_feature_registry\n region: us-central1\n featureGroup: ${sampleFeatureGroup.name}\n description: A sample feature\n labels:\n label-one: value-one\n featureviewFeatureregistry:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n name: featureview_featureregistry\n properties:\n name: example_feature_view_feature_registry\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n featureRegistrySource:\n featureGroups:\n - featureGroupId: ${sampleFeatureGroup.name}\n featureIds:\n - ${sampleFeature.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore Featureview Cross Project\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst testProject = gcp.organizations.getProject({});\nconst project = new gcp.organizations.Project(\"project\", {\n projectId: \"tf-test_55138\",\n name: \"tf-test_37559\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst wait60Seconds = new time.index.Sleep(\"wait_60_seconds\", {createDuration: \"60s\"}, {\n dependsOn: [project],\n});\nconst vertexai = new gcp.projects.Service(\"vertexai\", {\n service: \"aiplatform.googleapis.com\",\n project: project.projectId,\n disableOnDestroy: false,\n}, {\n dependsOn: [wait60Seconds],\n});\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_cross_project_featureview\",\n project: project.projectId,\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n}, {\n dependsOn: [vertexai],\n});\nconst sampleDataset = new gcp.bigquery.Dataset(\"sample_dataset\", {\n datasetId: \"example_cross_project_featureview\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst viewer = new gcp.bigquery.DatasetIamMember(\"viewer\", {\n project: testProject.then(testProject =\u003e testProject.projectId),\n datasetId: sampleDataset.datasetId,\n role: \"roles/bigquery.dataViewer\",\n member: pulumi.interpolate`serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com`,\n}, {\n dependsOn: [featureonlinestore],\n});\nconst wait30Seconds = new time.index.Sleep(\"wait_30_seconds\", {createDuration: \"30s\"}, {\n dependsOn: [viewer],\n});\nconst sampleTable = new gcp.bigquery.Table(\"sample_table\", {\n deletionProtection: false,\n datasetId: sampleDataset.datasetId,\n tableId: \"example_cross_project_featureview\",\n schema: `[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n});\nconst sampleFeatureGroup = new gcp.vertex.AiFeatureGroup(\"sample_feature_group\", {\n name: \"example_cross_project_featureview\",\n description: \"A sample feature group\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n bigQuery: {\n bigQuerySource: {\n inputUri: pulumi.interpolate`bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}`,\n },\n entityIdColumns: [\"feature_id\"],\n },\n});\nconst sampleFeature = new gcp.vertex.AiFeatureGroupFeature(\"sample_feature\", {\n name: \"example_cross_project_featureview\",\n region: \"us-central1\",\n featureGroup: sampleFeatureGroup.name,\n description: \"A sample feature\",\n labels: {\n \"label-one\": \"value-one\",\n },\n});\nconst crossProjectFeatureview = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"cross_project_featureview\", {\n name: \"example_cross_project_featureview\",\n project: project.projectId,\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n featureRegistrySource: {\n featureGroups: [{\n featureGroupId: sampleFeatureGroup.name,\n featureIds: [sampleFeature.name],\n }],\n projectNumber: testProject.then(testProject =\u003e testProject.number),\n },\n}, {\n dependsOn: [\n vertexai,\n wait30Seconds,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\ntest_project = gcp.organizations.get_project()\nproject = gcp.organizations.Project(\"project\",\n project_id=\"tf-test_55138\",\n name=\"tf-test_37559\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\nwait60_seconds = time.index.Sleep(\"wait_60_seconds\", create_duration=60s,\nopts = pulumi.ResourceOptions(depends_on=[project]))\nvertexai = gcp.projects.Service(\"vertexai\",\n service=\"aiplatform.googleapis.com\",\n project=project.project_id,\n disable_on_destroy=False,\n opts = pulumi.ResourceOptions(depends_on=[wait60_seconds]))\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_cross_project_featureview\",\n project=project.project_id,\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 2,\n \"cpu_utilization_target\": 80,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[vertexai]))\nsample_dataset = gcp.bigquery.Dataset(\"sample_dataset\",\n dataset_id=\"example_cross_project_featureview\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nviewer = gcp.bigquery.DatasetIamMember(\"viewer\",\n project=test_project.project_id,\n dataset_id=sample_dataset.dataset_id,\n role=\"roles/bigquery.dataViewer\",\n member=project.number.apply(lambda number: f\"serviceAccount:service-{number}@gcp-sa-aiplatform.iam.gserviceaccount.com\"),\n opts = pulumi.ResourceOptions(depends_on=[featureonlinestore]))\nwait30_seconds = time.index.Sleep(\"wait_30_seconds\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[viewer]))\nsample_table = gcp.bigquery.Table(\"sample_table\",\n deletion_protection=False,\n dataset_id=sample_dataset.dataset_id,\n table_id=\"example_cross_project_featureview\",\n schema=\"\"\"[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\")\nsample_feature_group = gcp.vertex.AiFeatureGroup(\"sample_feature_group\",\n name=\"example_cross_project_featureview\",\n description=\"A sample feature group\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n big_query={\n \"big_query_source\": {\n \"input_uri\": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f\"bq://{project}.{dataset_id}.{table_id}\"),\n },\n \"entity_id_columns\": [\"feature_id\"],\n })\nsample_feature = gcp.vertex.AiFeatureGroupFeature(\"sample_feature\",\n name=\"example_cross_project_featureview\",\n region=\"us-central1\",\n feature_group=sample_feature_group.name,\n description=\"A sample feature\",\n labels={\n \"label-one\": \"value-one\",\n })\ncross_project_featureview = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"cross_project_featureview\",\n name=\"example_cross_project_featureview\",\n project=project.project_id,\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n feature_registry_source={\n \"feature_groups\": [{\n \"feature_group_id\": sample_feature_group.name,\n \"feature_ids\": [sample_feature.name],\n }],\n \"project_number\": test_project.number,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n vertexai,\n wait30_seconds,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testProject = Gcp.Organizations.GetProject.Invoke();\n\n var project = new Gcp.Organizations.Project(\"project\", new()\n {\n ProjectId = \"tf-test_55138\",\n Name = \"tf-test_37559\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var wait60Seconds = new Time.Index.Sleep(\"wait_60_seconds\", new()\n {\n CreateDuration = \"60s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n project,\n },\n });\n\n var vertexai = new Gcp.Projects.Service(\"vertexai\", new()\n {\n ServiceName = \"aiplatform.googleapis.com\",\n Project = project.ProjectId,\n DisableOnDestroy = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait60Seconds,\n },\n });\n\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_cross_project_featureview\",\n Project = project.ProjectId,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexai,\n },\n });\n\n var sampleDataset = new Gcp.BigQuery.Dataset(\"sample_dataset\", new()\n {\n DatasetId = \"example_cross_project_featureview\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var viewer = new Gcp.BigQuery.DatasetIamMember(\"viewer\", new()\n {\n Project = testProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n DatasetId = sampleDataset.DatasetId,\n Role = \"roles/bigquery.dataViewer\",\n Member = project.Number.Apply(number =\u003e $\"serviceAccount:service-{number}@gcp-sa-aiplatform.iam.gserviceaccount.com\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n featureonlinestore,\n },\n });\n\n var wait30Seconds = new Time.Index.Sleep(\"wait_30_seconds\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n viewer,\n },\n });\n\n var sampleTable = new Gcp.BigQuery.Table(\"sample_table\", new()\n {\n DeletionProtection = false,\n DatasetId = sampleDataset.DatasetId,\n TableId = \"example_cross_project_featureview\",\n Schema = @\"[\n {\n \"\"name\"\": \"\"feature_id\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"example_cross_project_featureview\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n });\n\n var sampleFeatureGroup = new Gcp.Vertex.AiFeatureGroup(\"sample_feature_group\", new()\n {\n Name = \"example_cross_project_featureview\",\n Description = \"A sample feature group\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n BigQuery = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryArgs\n {\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryBigQuerySourceArgs\n {\n InputUri = Output.Tuple(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n },\n EntityIdColumns = new[]\n {\n \"feature_id\",\n },\n },\n });\n\n var sampleFeature = new Gcp.Vertex.AiFeatureGroupFeature(\"sample_feature\", new()\n {\n Name = \"example_cross_project_featureview\",\n Region = \"us-central1\",\n FeatureGroup = sampleFeatureGroup.Name,\n Description = \"A sample feature\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var crossProjectFeatureview = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"cross_project_featureview\", new()\n {\n Name = \"example_cross_project_featureview\",\n Project = project.ProjectId,\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n FeatureRegistrySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs\n {\n FeatureGroups = new[]\n {\n new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs\n {\n FeatureGroupId = sampleFeatureGroup.Name,\n FeatureIds = new[]\n {\n sampleFeature.Name,\n },\n },\n },\n ProjectNumber = testProject.Apply(getProjectResult =\u003e getProjectResult.Number),\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexai,\n wait30Seconds,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestProject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.NewProject(ctx, \"project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"tf-test_55138\"),\n\t\t\tName: pulumi.String(\"tf-test_37559\"),\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\twait60Seconds, err := time.NewSleep(ctx, \"wait_60_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"60s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproject,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexai, err := projects.NewService(ctx, \"vertexai\", \u0026projects.ServiceArgs{\n\t\t\tService: pulumi.String(\"aiplatform.googleapis.com\"),\n\t\t\tProject: project.ProjectId,\n\t\t\tDisableOnDestroy: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait60Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tProject: project.ProjectId,\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexai,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleDataset, err := bigquery.NewDataset(ctx, \"sample_dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_cross_project_featureview\"),\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\tviewer, err := bigquery.NewDatasetIamMember(ctx, \"viewer\", \u0026bigquery.DatasetIamMemberArgs{\n\t\t\tProject: pulumi.String(testProject.ProjectId),\n\t\t\tDatasetId: sampleDataset.DatasetId,\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataViewer\"),\n\t\t\tMember: project.Number.ApplyT(func(number string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-aiplatform.iam.gserviceaccount.com\", number), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfeatureonlinestore,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twait30Seconds, err := time.NewSleep(ctx, \"wait_30_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tviewer,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleTable, err := bigquery.NewTable(ctx, \"sample_table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: sampleDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleFeatureGroup, err := vertex.NewAiFeatureGroup(ctx, \"sample_feature_group\", \u0026vertex.AiFeatureGroupArgs{\n\t\t\tName: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tDescription: pulumi.String(\"A sample feature group\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tBigQuery: \u0026vertex.AiFeatureGroupBigQueryArgs{\n\t\t\t\tBigQuerySource: \u0026vertex.AiFeatureGroupBigQueryBigQuerySourceArgs{\n\t\t\t\t\tInputUri: pulumi.All(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"feature_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\tsampleFeature, err := vertex.NewAiFeatureGroupFeature(ctx, \"sample_feature\", \u0026vertex.AiFeatureGroupFeatureArgs{\n\t\t\tName: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureGroup: sampleFeatureGroup.Name,\n\t\t\tDescription: pulumi.String(\"A sample feature\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStoreFeatureview(ctx, \"cross_project_featureview\", \u0026vertex.AiFeatureOnlineStoreFeatureviewArgs{\n\t\t\tName: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tProject: project.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureOnlineStore: featureonlinestore.Name,\n\t\t\tSyncConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs{\n\t\t\t\tCron: pulumi.String(\"0 0 * * *\"),\n\t\t\t},\n\t\t\tFeatureRegistrySource: \u0026vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs{\n\t\t\t\tFeatureGroups: vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArray{\n\t\t\t\t\t\u0026vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs{\n\t\t\t\t\t\tFeatureGroupId: sampleFeatureGroup.Name,\n\t\t\t\t\t\tFeatureIds: pulumi.StringArray{\n\t\t\t\t\t\t\tsampleFeature.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tProjectNumber: pulumi.String(testProject.Number),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexai,\n\t\t\twait30Seconds,\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.DatasetIamMember;\nimport com.pulumi.gcp.bigquery.DatasetIamMemberArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroup;\nimport com.pulumi.gcp.vertex.AiFeatureGroupArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryBigQuerySourceArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeature;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeatureArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureview;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureviewArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs;\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 testProject = OrganizationsFunctions.getProject();\n\n var project = new Project(\"project\", ProjectArgs.builder()\n .projectId(\"tf-test_55138\")\n .name(\"tf-test_37559\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n var wait60Seconds = new Sleep(\"wait60Seconds\", SleepArgs.builder()\n .createDuration(\"60s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(project)\n .build());\n\n var vertexai = new Service(\"vertexai\", ServiceArgs.builder()\n .service(\"aiplatform.googleapis.com\")\n .project(project.projectId())\n .disableOnDestroy(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait60Seconds)\n .build());\n\n var featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_cross_project_featureview\")\n .project(project.projectId())\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vertexai)\n .build());\n\n var sampleDataset = new Dataset(\"sampleDataset\", DatasetArgs.builder()\n .datasetId(\"example_cross_project_featureview\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var viewer = new DatasetIamMember(\"viewer\", DatasetIamMemberArgs.builder()\n .project(testProject.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .datasetId(sampleDataset.datasetId())\n .role(\"roles/bigquery.dataViewer\")\n .member(project.number().applyValue(number -\u003e String.format(\"serviceAccount:service-%s@gcp-sa-aiplatform.iam.gserviceaccount.com\", number)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(featureonlinestore)\n .build());\n\n var wait30Seconds = new Sleep(\"wait30Seconds\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(viewer)\n .build());\n\n var sampleTable = new Table(\"sampleTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(sampleDataset.datasetId())\n .tableId(\"example_cross_project_featureview\")\n .schema(\"\"\"\n[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n var sampleFeatureGroup = new AiFeatureGroup(\"sampleFeatureGroup\", AiFeatureGroupArgs.builder()\n .name(\"example_cross_project_featureview\")\n .description(\"A sample feature group\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .bigQuery(AiFeatureGroupBigQueryArgs.builder()\n .bigQuerySource(AiFeatureGroupBigQueryBigQuerySourceArgs.builder()\n .inputUri(Output.tuple(sampleTable.project(), sampleTable.datasetId(), sampleTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .build())\n .entityIdColumns(\"feature_id\")\n .build())\n .build());\n\n var sampleFeature = new AiFeatureGroupFeature(\"sampleFeature\", AiFeatureGroupFeatureArgs.builder()\n .name(\"example_cross_project_featureview\")\n .region(\"us-central1\")\n .featureGroup(sampleFeatureGroup.name())\n .description(\"A sample feature\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var crossProjectFeatureview = new AiFeatureOnlineStoreFeatureview(\"crossProjectFeatureview\", AiFeatureOnlineStoreFeatureviewArgs.builder()\n .name(\"example_cross_project_featureview\")\n .project(project.projectId())\n .region(\"us-central1\")\n .featureOnlineStore(featureonlinestore.name())\n .syncConfig(AiFeatureOnlineStoreFeatureviewSyncConfigArgs.builder()\n .cron(\"0 0 * * *\")\n .build())\n .featureRegistrySource(AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs.builder()\n .featureGroups(AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs.builder()\n .featureGroupId(sampleFeatureGroup.name())\n .featureIds(sampleFeature.name())\n .build())\n .projectNumber(testProject.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n vertexai,\n wait30Seconds)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:organizations:Project\n properties:\n projectId: tf-test_55138\n name: tf-test_37559\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n wait60Seconds:\n type: time:sleep\n name: wait_60_seconds\n properties:\n createDuration: 60s\n options:\n dependson:\n - ${project}\n wait30Seconds:\n type: time:sleep\n name: wait_30_seconds\n properties:\n createDuration: 30s\n options:\n dependson:\n - ${viewer}\n vertexai:\n type: gcp:projects:Service\n properties:\n service: aiplatform.googleapis.com\n project: ${project.projectId}\n disableOnDestroy: false # Needed for CI tests for permissions to propagate, should not be needed for actual usage\n options:\n dependson:\n - ${wait60Seconds}\n viewer:\n type: gcp:bigquery:DatasetIamMember\n properties:\n project: ${testProject.projectId}\n datasetId: ${sampleDataset.datasetId}\n role: roles/bigquery.dataViewer\n member: serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com\n options:\n dependson:\n - ${featureonlinestore}\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_cross_project_featureview\n project: ${project.projectId}\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n options:\n dependson:\n - ${vertexai}\n sampleDataset:\n type: gcp:bigquery:Dataset\n name: sample_dataset\n properties:\n datasetId: example_cross_project_featureview\n friendlyName: test\n description: This is a test description\n location: US\n sampleTable:\n type: gcp:bigquery:Table\n name: sample_table\n properties:\n deletionProtection: false\n datasetId: ${sampleDataset.datasetId}\n tableId: example_cross_project_featureview\n schema: |\n [\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n ]\n sampleFeatureGroup:\n type: gcp:vertex:AiFeatureGroup\n name: sample_feature_group\n properties:\n name: example_cross_project_featureview\n description: A sample feature group\n region: us-central1\n labels:\n label-one: value-one\n bigQuery:\n bigQuerySource:\n inputUri: bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}\n entityIdColumns:\n - feature_id\n sampleFeature:\n type: gcp:vertex:AiFeatureGroupFeature\n name: sample_feature\n properties:\n name: example_cross_project_featureview\n region: us-central1\n featureGroup: ${sampleFeatureGroup.name}\n description: A sample feature\n labels:\n label-one: value-one\n crossProjectFeatureview:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n name: cross_project_featureview\n properties:\n name: example_cross_project_featureview\n project: ${project.projectId}\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n featureRegistrySource:\n featureGroups:\n - featureGroupId: ${sampleFeatureGroup.name}\n featureIds:\n - ${sampleFeature.name}\n projectNumber: ${testProject.number}\n options:\n dependson:\n - ${vertexai}\n - ${wait30Seconds}\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore Featureview With Vector Search\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_view_vector_search\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n embeddingManagement: {\n enabled: true,\n },\n});\nconst tf_test_dataset = new gcp.bigquery.Dataset(\"tf-test-dataset\", {\n datasetId: \"example_feature_view_vector_search\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst tf_test_table = new gcp.bigquery.Table(\"tf-test-table\", {\n deletionProtection: false,\n datasetId: tf_test_dataset.datasetId,\n tableId: \"example_feature_view_vector_search\",\n schema: `[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n`,\n});\nconst featureviewVectorSearch = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_vector_search\", {\n name: \"example_feature_view_vector_search\",\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n bigQuerySource: {\n uri: pulumi.interpolate`bq://${tf_test_table.project}.${tf_test_table.datasetId}.${tf_test_table.tableId}`,\n entityIdColumns: [\"test_entity_column\"],\n },\n vectorSearchConfig: {\n embeddingColumn: \"embedding\",\n filterColumns: [\"country\"],\n crowdingColumn: \"test_crowding_column\",\n distanceMeasureType: \"DOT_PRODUCT_DISTANCE\",\n treeAhConfig: {\n leafNodeEmbeddingCount: \"1000\",\n },\n embeddingDimension: 2,\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_view_vector_search\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 2,\n \"cpu_utilization_target\": 80,\n },\n },\n embedding_management={\n \"enabled\": True,\n })\ntf_test_dataset = gcp.bigquery.Dataset(\"tf-test-dataset\",\n dataset_id=\"example_feature_view_vector_search\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\ntf_test_table = gcp.bigquery.Table(\"tf-test-table\",\n deletion_protection=False,\n dataset_id=tf_test_dataset.dataset_id,\n table_id=\"example_feature_view_vector_search\",\n schema=\"\"\"[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n\"\"\")\nfeatureview_vector_search = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_vector_search\",\n name=\"example_feature_view_vector_search\",\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n big_query_source={\n \"uri\": pulumi.Output.all(tf_test_table.project, tf_test_table.dataset_id, tf_test_table.table_id).apply(lambda project, dataset_id, table_id: f\"bq://{project}.{dataset_id}.{table_id}\"),\n \"entity_id_columns\": [\"test_entity_column\"],\n },\n vector_search_config={\n \"embedding_column\": \"embedding\",\n \"filter_columns\": [\"country\"],\n \"crowding_column\": \"test_crowding_column\",\n \"distance_measure_type\": \"DOT_PRODUCT_DISTANCE\",\n \"tree_ah_config\": {\n \"leaf_node_embedding_count\": \"1000\",\n },\n \"embedding_dimension\": 2,\n })\nproject = gcp.organizations.get_project()\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 featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_view_vector_search\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n EmbeddingManagement = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreEmbeddingManagementArgs\n {\n Enabled = true,\n },\n });\n\n var tf_test_dataset = new Gcp.BigQuery.Dataset(\"tf-test-dataset\", new()\n {\n DatasetId = \"example_feature_view_vector_search\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var tf_test_table = new Gcp.BigQuery.Table(\"tf-test-table\", new()\n {\n DeletionProtection = false,\n DatasetId = tf_test_dataset.DatasetId,\n TableId = \"example_feature_view_vector_search\",\n Schema = @\"[\n{\n \"\"name\"\": \"\"test_primary_id\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"primary test id\"\"\n},\n{\n \"\"name\"\": \"\"embedding\"\",\n \"\"mode\"\": \"\"REPEATED\"\",\n \"\"type\"\": \"\"FLOAT\"\",\n \"\"description\"\": \"\"embedding column for primary_id column\"\"\n},\n{\n \"\"name\"\": \"\"country\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"country\"\"\n},\n{\n \"\"name\"\": \"\"test_crowding_column\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"INTEGER\"\",\n \"\"description\"\": \"\"test crowding column\"\"\n},\n{\n \"\"name\"\": \"\"entity_id\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"Test default entity_id\"\"\n},\n{\n \"\"name\"\": \"\"test_entity_column\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"test secondary entity column\"\"\n},\n{\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"description\"\": \"\"Default timestamp value\"\"\n}\n]\n\",\n });\n\n var featureviewVectorSearch = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"featureview_vector_search\", new()\n {\n Name = \"example_feature_view_vector_search\",\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs\n {\n Uri = Output.Tuple(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n EntityIdColumns = new[]\n {\n \"test_entity_column\",\n },\n },\n VectorSearchConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs\n {\n EmbeddingColumn = \"embedding\",\n FilterColumns = new[]\n {\n \"country\",\n },\n CrowdingColumn = \"test_crowding_column\",\n DistanceMeasureType = \"DOT_PRODUCT_DISTANCE\",\n TreeAhConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs\n {\n LeafNodeEmbeddingCount = \"1000\",\n },\n EmbeddingDimension = 2,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_vector_search\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEmbeddingManagement: \u0026vertex.AiFeatureOnlineStoreEmbeddingManagementArgs{\n\t\t\t\tEnabled: 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\t_, err = bigquery.NewDataset(ctx, \"tf-test-dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_feature_view_vector_search\"),\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, \"tf-test-table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: tf_test_dataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_feature_view_vector_search\"),\n\t\t\tSchema: pulumi.String(`[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStoreFeatureview(ctx, \"featureview_vector_search\", \u0026vertex.AiFeatureOnlineStoreFeatureviewArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_vector_search\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureOnlineStore: featureonlinestore.Name,\n\t\t\tSyncConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs{\n\t\t\t\tCron: pulumi.String(\"0 0 * * *\"),\n\t\t\t},\n\t\t\tBigQuerySource: \u0026vertex.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs{\n\t\t\t\tUri: pulumi.All(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test_entity_column\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tVectorSearchConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs{\n\t\t\t\tEmbeddingColumn: pulumi.String(\"embedding\"),\n\t\t\t\tFilterColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"country\"),\n\t\t\t\t},\n\t\t\t\tCrowdingColumn: pulumi.String(\"test_crowding_column\"),\n\t\t\t\tDistanceMeasureType: pulumi.String(\"DOT_PRODUCT_DISTANCE\"),\n\t\t\t\tTreeAhConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs{\n\t\t\t\t\tLeafNodeEmbeddingCount: pulumi.String(\"1000\"),\n\t\t\t\t},\n\t\t\t\tEmbeddingDimension: pulumi.Int(2),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreEmbeddingManagementArgs;\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.vertex.AiFeatureOnlineStoreFeatureview;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureviewArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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 featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_view_vector_search\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .embeddingManagement(AiFeatureOnlineStoreEmbeddingManagementArgs.builder()\n .enabled(true)\n .build())\n .build());\n\n var tf_test_dataset = new Dataset(\"tf-test-dataset\", DatasetArgs.builder()\n .datasetId(\"example_feature_view_vector_search\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var tf_test_table = new Table(\"tf-test-table\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(tf_test_dataset.datasetId())\n .tableId(\"example_feature_view_vector_search\")\n .schema(\"\"\"\n[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n \"\"\")\n .build());\n\n var featureviewVectorSearch = new AiFeatureOnlineStoreFeatureview(\"featureviewVectorSearch\", AiFeatureOnlineStoreFeatureviewArgs.builder()\n .name(\"example_feature_view_vector_search\")\n .region(\"us-central1\")\n .featureOnlineStore(featureonlinestore.name())\n .syncConfig(AiFeatureOnlineStoreFeatureviewSyncConfigArgs.builder()\n .cron(\"0 0 * * *\")\n .build())\n .bigQuerySource(AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs.builder()\n .uri(Output.tuple(tf_test_table.project(), tf_test_table.datasetId(), tf_test_table.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .entityIdColumns(\"test_entity_column\")\n .build())\n .vectorSearchConfig(AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs.builder()\n .embeddingColumn(\"embedding\")\n .filterColumns(\"country\")\n .crowdingColumn(\"test_crowding_column\")\n .distanceMeasureType(\"DOT_PRODUCT_DISTANCE\")\n .treeAhConfig(AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs.builder()\n .leafNodeEmbeddingCount(\"1000\")\n .build())\n .embeddingDimension(\"2\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_view_vector_search\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n embeddingManagement:\n enabled: true\n tf-test-dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_feature_view_vector_search\n friendlyName: test\n description: This is a test description\n location: US\n tf-test-table:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${[\"tf-test-dataset\"].datasetId}\n tableId: example_feature_view_vector_search\n schema: |\n [\n {\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n },\n {\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n },\n {\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n },\n {\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n },\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n ]\n featureviewVectorSearch:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n name: featureview_vector_search\n properties:\n name: example_feature_view_vector_search\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n bigQuerySource:\n uri: bq://${[\"tf-test-table\"].project}.${[\"tf-test-table\"].datasetId}.${[\"tf-test-table\"].tableId}\n entityIdColumns:\n - test_entity_column\n vectorSearchConfig:\n embeddingColumn: embedding\n filterColumns:\n - country\n crowdingColumn: test_crowding_column\n distanceMeasureType: DOT_PRODUCT_DISTANCE\n treeAhConfig:\n leafNodeEmbeddingCount: '1000'\n embeddingDimension: '2'\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeatureOnlineStoreFeatureview can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/featureOnlineStores/{{feature_online_store}}/featureViews/{{name}}`\n\n* `{{project}}/{{region}}/{{feature_online_store}}/{{name}}`\n\n* `{{region}}/{{feature_online_store}}/{{name}}`\n\n* `{{feature_online_store}}/{{name}}`\n\nWhen using the `pulumi import` command, FeatureOnlineStoreFeatureview can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default projects/{{project}}/locations/{{region}}/featureOnlineStores/{{feature_online_store}}/featureViews/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default {{project}}/{{region}}/{{feature_online_store}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default {{region}}/{{feature_online_store}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default {{feature_online_store}}/{{name}}\n```\n\n", "properties": { "bigQuerySource": { "$ref": "#/types/gcp:vertex/AiFeatureOnlineStoreFeatureviewBigQuerySource:AiFeatureOnlineStoreFeatureviewBigQuerySource", @@ -244595,7 +244595,7 @@ } }, "gcp:vertex/aiFeatureStore:AiFeatureStore": { - "description": "A collection of DataItems and Annotations on them.\n\n\nTo get more information about Featurestore, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.featurestores)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Featurestore\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featurestore = new gcp.vertex.AiFeatureStore(\"featurestore\", {\n name: \"terraform\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n onlineServingConfig: {\n fixedNodeCount: 2,\n },\n encryptionSpec: {\n kmsKeyName: \"kms-name\",\n },\n forceDestroy: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeaturestore = gcp.vertex.AiFeatureStore(\"featurestore\",\n name=\"terraform\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n online_serving_config={\n \"fixedNodeCount\": 2,\n },\n encryption_spec={\n \"kmsKeyName\": \"kms-name\",\n },\n force_destroy=True)\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 featurestore = new Gcp.Vertex.AiFeatureStore(\"featurestore\", new()\n {\n Name = \"terraform\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n OnlineServingConfig = new Gcp.Vertex.Inputs.AiFeatureStoreOnlineServingConfigArgs\n {\n FixedNodeCount = 2,\n },\n EncryptionSpec = new Gcp.Vertex.Inputs.AiFeatureStoreEncryptionSpecArgs\n {\n KmsKeyName = \"kms-name\",\n },\n ForceDestroy = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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 := vertex.NewAiFeatureStore(ctx, \"featurestore\", \u0026vertex.AiFeatureStoreArgs{\n\t\t\tName: pulumi.String(\"terraform\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOnlineServingConfig: \u0026vertex.AiFeatureStoreOnlineServingConfigArgs{\n\t\t\t\tFixedNodeCount: pulumi.Int(2),\n\t\t\t},\n\t\t\tEncryptionSpec: \u0026vertex.AiFeatureStoreEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-name\"),\n\t\t\t},\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\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.vertex.AiFeatureStore;\nimport com.pulumi.gcp.vertex.AiFeatureStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreOnlineServingConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEncryptionSpecArgs;\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 featurestore = new AiFeatureStore(\"featurestore\", AiFeatureStoreArgs.builder()\n .name(\"terraform\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .onlineServingConfig(AiFeatureStoreOnlineServingConfigArgs.builder()\n .fixedNodeCount(2)\n .build())\n .encryptionSpec(AiFeatureStoreEncryptionSpecArgs.builder()\n .kmsKeyName(\"kms-name\")\n .build())\n .forceDestroy(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featurestore:\n type: gcp:vertex:AiFeatureStore\n properties:\n name: terraform\n labels:\n foo: bar\n region: us-central1\n onlineServingConfig:\n fixedNodeCount: 2\n encryptionSpec:\n kmsKeyName: kms-name\n forceDestroy: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featurestore With Beta Fields\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featurestore = new gcp.vertex.AiFeatureStore(\"featurestore\", {\n name: \"terraform2\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n onlineServingConfig: {\n fixedNodeCount: 2,\n },\n encryptionSpec: {\n kmsKeyName: \"kms-name\",\n },\n onlineStorageTtlDays: 30,\n forceDestroy: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeaturestore = gcp.vertex.AiFeatureStore(\"featurestore\",\n name=\"terraform2\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n online_serving_config={\n \"fixedNodeCount\": 2,\n },\n encryption_spec={\n \"kmsKeyName\": \"kms-name\",\n },\n online_storage_ttl_days=30,\n force_destroy=True)\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 featurestore = new Gcp.Vertex.AiFeatureStore(\"featurestore\", new()\n {\n Name = \"terraform2\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n OnlineServingConfig = new Gcp.Vertex.Inputs.AiFeatureStoreOnlineServingConfigArgs\n {\n FixedNodeCount = 2,\n },\n EncryptionSpec = new Gcp.Vertex.Inputs.AiFeatureStoreEncryptionSpecArgs\n {\n KmsKeyName = \"kms-name\",\n },\n OnlineStorageTtlDays = 30,\n ForceDestroy = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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 := vertex.NewAiFeatureStore(ctx, \"featurestore\", \u0026vertex.AiFeatureStoreArgs{\n\t\t\tName: pulumi.String(\"terraform2\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOnlineServingConfig: \u0026vertex.AiFeatureStoreOnlineServingConfigArgs{\n\t\t\t\tFixedNodeCount: pulumi.Int(2),\n\t\t\t},\n\t\t\tEncryptionSpec: \u0026vertex.AiFeatureStoreEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-name\"),\n\t\t\t},\n\t\t\tOnlineStorageTtlDays: pulumi.Int(30),\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\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.vertex.AiFeatureStore;\nimport com.pulumi.gcp.vertex.AiFeatureStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreOnlineServingConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEncryptionSpecArgs;\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 featurestore = new AiFeatureStore(\"featurestore\", AiFeatureStoreArgs.builder()\n .name(\"terraform2\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .onlineServingConfig(AiFeatureStoreOnlineServingConfigArgs.builder()\n .fixedNodeCount(2)\n .build())\n .encryptionSpec(AiFeatureStoreEncryptionSpecArgs.builder()\n .kmsKeyName(\"kms-name\")\n .build())\n .onlineStorageTtlDays(30)\n .forceDestroy(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featurestore:\n type: gcp:vertex:AiFeatureStore\n properties:\n name: terraform2\n labels:\n foo: bar\n region: us-central1\n onlineServingConfig:\n fixedNodeCount: 2\n encryptionSpec:\n kmsKeyName: kms-name\n onlineStorageTtlDays: 30\n forceDestroy: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featurestore Scaling\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featurestore = new gcp.vertex.AiFeatureStore(\"featurestore\", {\n name: \"terraform3\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n onlineServingConfig: {\n scaling: {\n minNodeCount: 2,\n maxNodeCount: 10,\n },\n },\n encryptionSpec: {\n kmsKeyName: \"kms-name\",\n },\n forceDestroy: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeaturestore = gcp.vertex.AiFeatureStore(\"featurestore\",\n name=\"terraform3\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n online_serving_config={\n \"scaling\": {\n \"minNodeCount\": 2,\n \"maxNodeCount\": 10,\n },\n },\n encryption_spec={\n \"kmsKeyName\": \"kms-name\",\n },\n force_destroy=True)\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 featurestore = new Gcp.Vertex.AiFeatureStore(\"featurestore\", new()\n {\n Name = \"terraform3\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n OnlineServingConfig = new Gcp.Vertex.Inputs.AiFeatureStoreOnlineServingConfigArgs\n {\n Scaling = new Gcp.Vertex.Inputs.AiFeatureStoreOnlineServingConfigScalingArgs\n {\n MinNodeCount = 2,\n MaxNodeCount = 10,\n },\n },\n EncryptionSpec = new Gcp.Vertex.Inputs.AiFeatureStoreEncryptionSpecArgs\n {\n KmsKeyName = \"kms-name\",\n },\n ForceDestroy = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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 := vertex.NewAiFeatureStore(ctx, \"featurestore\", \u0026vertex.AiFeatureStoreArgs{\n\t\t\tName: pulumi.String(\"terraform3\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOnlineServingConfig: \u0026vertex.AiFeatureStoreOnlineServingConfigArgs{\n\t\t\t\tScaling: \u0026vertex.AiFeatureStoreOnlineServingConfigScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(2),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(10),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEncryptionSpec: \u0026vertex.AiFeatureStoreEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-name\"),\n\t\t\t},\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\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.vertex.AiFeatureStore;\nimport com.pulumi.gcp.vertex.AiFeatureStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreOnlineServingConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreOnlineServingConfigScalingArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEncryptionSpecArgs;\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 featurestore = new AiFeatureStore(\"featurestore\", AiFeatureStoreArgs.builder()\n .name(\"terraform3\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .onlineServingConfig(AiFeatureStoreOnlineServingConfigArgs.builder()\n .scaling(AiFeatureStoreOnlineServingConfigScalingArgs.builder()\n .minNodeCount(2)\n .maxNodeCount(10)\n .build())\n .build())\n .encryptionSpec(AiFeatureStoreEncryptionSpecArgs.builder()\n .kmsKeyName(\"kms-name\")\n .build())\n .forceDestroy(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featurestore:\n type: gcp:vertex:AiFeatureStore\n properties:\n name: terraform3\n labels:\n foo: bar\n region: us-central1\n onlineServingConfig:\n scaling:\n minNodeCount: 2\n maxNodeCount: 10\n encryptionSpec:\n kmsKeyName: kms-name\n forceDestroy: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeaturestore can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/featurestores/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Featurestore can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureStore:AiFeatureStore default projects/{{project}}/locations/{{region}}/featurestores/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureStore:AiFeatureStore default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureStore:AiFeatureStore default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureStore:AiFeatureStore default {{name}}\n```\n\n", + "description": "A collection of DataItems and Annotations on them.\n\n\nTo get more information about Featurestore, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.featurestores)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Featurestore\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featurestore = new gcp.vertex.AiFeatureStore(\"featurestore\", {\n name: \"terraform\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n onlineServingConfig: {\n fixedNodeCount: 2,\n },\n encryptionSpec: {\n kmsKeyName: \"kms-name\",\n },\n forceDestroy: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeaturestore = gcp.vertex.AiFeatureStore(\"featurestore\",\n name=\"terraform\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n online_serving_config={\n \"fixed_node_count\": 2,\n },\n encryption_spec={\n \"kms_key_name\": \"kms-name\",\n },\n force_destroy=True)\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 featurestore = new Gcp.Vertex.AiFeatureStore(\"featurestore\", new()\n {\n Name = \"terraform\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n OnlineServingConfig = new Gcp.Vertex.Inputs.AiFeatureStoreOnlineServingConfigArgs\n {\n FixedNodeCount = 2,\n },\n EncryptionSpec = new Gcp.Vertex.Inputs.AiFeatureStoreEncryptionSpecArgs\n {\n KmsKeyName = \"kms-name\",\n },\n ForceDestroy = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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 := vertex.NewAiFeatureStore(ctx, \"featurestore\", \u0026vertex.AiFeatureStoreArgs{\n\t\t\tName: pulumi.String(\"terraform\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOnlineServingConfig: \u0026vertex.AiFeatureStoreOnlineServingConfigArgs{\n\t\t\t\tFixedNodeCount: pulumi.Int(2),\n\t\t\t},\n\t\t\tEncryptionSpec: \u0026vertex.AiFeatureStoreEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-name\"),\n\t\t\t},\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\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.vertex.AiFeatureStore;\nimport com.pulumi.gcp.vertex.AiFeatureStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreOnlineServingConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEncryptionSpecArgs;\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 featurestore = new AiFeatureStore(\"featurestore\", AiFeatureStoreArgs.builder()\n .name(\"terraform\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .onlineServingConfig(AiFeatureStoreOnlineServingConfigArgs.builder()\n .fixedNodeCount(2)\n .build())\n .encryptionSpec(AiFeatureStoreEncryptionSpecArgs.builder()\n .kmsKeyName(\"kms-name\")\n .build())\n .forceDestroy(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featurestore:\n type: gcp:vertex:AiFeatureStore\n properties:\n name: terraform\n labels:\n foo: bar\n region: us-central1\n onlineServingConfig:\n fixedNodeCount: 2\n encryptionSpec:\n kmsKeyName: kms-name\n forceDestroy: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featurestore With Beta Fields\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featurestore = new gcp.vertex.AiFeatureStore(\"featurestore\", {\n name: \"terraform2\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n onlineServingConfig: {\n fixedNodeCount: 2,\n },\n encryptionSpec: {\n kmsKeyName: \"kms-name\",\n },\n onlineStorageTtlDays: 30,\n forceDestroy: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeaturestore = gcp.vertex.AiFeatureStore(\"featurestore\",\n name=\"terraform2\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n online_serving_config={\n \"fixed_node_count\": 2,\n },\n encryption_spec={\n \"kms_key_name\": \"kms-name\",\n },\n online_storage_ttl_days=30,\n force_destroy=True)\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 featurestore = new Gcp.Vertex.AiFeatureStore(\"featurestore\", new()\n {\n Name = \"terraform2\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n OnlineServingConfig = new Gcp.Vertex.Inputs.AiFeatureStoreOnlineServingConfigArgs\n {\n FixedNodeCount = 2,\n },\n EncryptionSpec = new Gcp.Vertex.Inputs.AiFeatureStoreEncryptionSpecArgs\n {\n KmsKeyName = \"kms-name\",\n },\n OnlineStorageTtlDays = 30,\n ForceDestroy = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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 := vertex.NewAiFeatureStore(ctx, \"featurestore\", \u0026vertex.AiFeatureStoreArgs{\n\t\t\tName: pulumi.String(\"terraform2\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOnlineServingConfig: \u0026vertex.AiFeatureStoreOnlineServingConfigArgs{\n\t\t\t\tFixedNodeCount: pulumi.Int(2),\n\t\t\t},\n\t\t\tEncryptionSpec: \u0026vertex.AiFeatureStoreEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-name\"),\n\t\t\t},\n\t\t\tOnlineStorageTtlDays: pulumi.Int(30),\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\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.vertex.AiFeatureStore;\nimport com.pulumi.gcp.vertex.AiFeatureStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreOnlineServingConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEncryptionSpecArgs;\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 featurestore = new AiFeatureStore(\"featurestore\", AiFeatureStoreArgs.builder()\n .name(\"terraform2\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .onlineServingConfig(AiFeatureStoreOnlineServingConfigArgs.builder()\n .fixedNodeCount(2)\n .build())\n .encryptionSpec(AiFeatureStoreEncryptionSpecArgs.builder()\n .kmsKeyName(\"kms-name\")\n .build())\n .onlineStorageTtlDays(30)\n .forceDestroy(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featurestore:\n type: gcp:vertex:AiFeatureStore\n properties:\n name: terraform2\n labels:\n foo: bar\n region: us-central1\n onlineServingConfig:\n fixedNodeCount: 2\n encryptionSpec:\n kmsKeyName: kms-name\n onlineStorageTtlDays: 30\n forceDestroy: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featurestore Scaling\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featurestore = new gcp.vertex.AiFeatureStore(\"featurestore\", {\n name: \"terraform3\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n onlineServingConfig: {\n scaling: {\n minNodeCount: 2,\n maxNodeCount: 10,\n },\n },\n encryptionSpec: {\n kmsKeyName: \"kms-name\",\n },\n forceDestroy: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeaturestore = gcp.vertex.AiFeatureStore(\"featurestore\",\n name=\"terraform3\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n online_serving_config={\n \"scaling\": {\n \"min_node_count\": 2,\n \"max_node_count\": 10,\n },\n },\n encryption_spec={\n \"kms_key_name\": \"kms-name\",\n },\n force_destroy=True)\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 featurestore = new Gcp.Vertex.AiFeatureStore(\"featurestore\", new()\n {\n Name = \"terraform3\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n OnlineServingConfig = new Gcp.Vertex.Inputs.AiFeatureStoreOnlineServingConfigArgs\n {\n Scaling = new Gcp.Vertex.Inputs.AiFeatureStoreOnlineServingConfigScalingArgs\n {\n MinNodeCount = 2,\n MaxNodeCount = 10,\n },\n },\n EncryptionSpec = new Gcp.Vertex.Inputs.AiFeatureStoreEncryptionSpecArgs\n {\n KmsKeyName = \"kms-name\",\n },\n ForceDestroy = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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 := vertex.NewAiFeatureStore(ctx, \"featurestore\", \u0026vertex.AiFeatureStoreArgs{\n\t\t\tName: pulumi.String(\"terraform3\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOnlineServingConfig: \u0026vertex.AiFeatureStoreOnlineServingConfigArgs{\n\t\t\t\tScaling: \u0026vertex.AiFeatureStoreOnlineServingConfigScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(2),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(10),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEncryptionSpec: \u0026vertex.AiFeatureStoreEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-name\"),\n\t\t\t},\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\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.vertex.AiFeatureStore;\nimport com.pulumi.gcp.vertex.AiFeatureStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreOnlineServingConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreOnlineServingConfigScalingArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEncryptionSpecArgs;\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 featurestore = new AiFeatureStore(\"featurestore\", AiFeatureStoreArgs.builder()\n .name(\"terraform3\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .onlineServingConfig(AiFeatureStoreOnlineServingConfigArgs.builder()\n .scaling(AiFeatureStoreOnlineServingConfigScalingArgs.builder()\n .minNodeCount(2)\n .maxNodeCount(10)\n .build())\n .build())\n .encryptionSpec(AiFeatureStoreEncryptionSpecArgs.builder()\n .kmsKeyName(\"kms-name\")\n .build())\n .forceDestroy(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featurestore:\n type: gcp:vertex:AiFeatureStore\n properties:\n name: terraform3\n labels:\n foo: bar\n region: us-central1\n onlineServingConfig:\n scaling:\n minNodeCount: 2\n maxNodeCount: 10\n encryptionSpec:\n kmsKeyName: kms-name\n forceDestroy: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeaturestore can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/featurestores/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Featurestore can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureStore:AiFeatureStore default projects/{{project}}/locations/{{region}}/featurestores/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureStore:AiFeatureStore default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureStore:AiFeatureStore default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureStore:AiFeatureStore default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -244785,7 +244785,7 @@ } }, "gcp:vertex/aiFeatureStoreEntityType:AiFeatureStoreEntityType": { - "description": "An entity type is a type of object in a system that needs to be modeled and have stored information about. For example, driver is an entity type, and driver0 is an instance of an entity type driver.\n\n\nTo get more information about FeaturestoreEntitytype, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.featurestores.entityTypes)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Featurestore Entitytype\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featurestore = new gcp.vertex.AiFeatureStore(\"featurestore\", {\n name: \"terraform\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n onlineServingConfig: {\n fixedNodeCount: 2,\n },\n encryptionSpec: {\n kmsKeyName: \"kms-name\",\n },\n});\nconst entity = new gcp.vertex.AiFeatureStoreEntityType(\"entity\", {\n name: \"terraform\",\n labels: {\n foo: \"bar\",\n },\n description: \"test description\",\n featurestore: featurestore.id,\n monitoringConfig: {\n snapshotAnalysis: {\n disabled: false,\n monitoringIntervalDays: 1,\n stalenessDays: 21,\n },\n numericalThresholdConfig: {\n value: 0.8,\n },\n categoricalThresholdConfig: {\n value: 10,\n },\n importFeaturesAnalysis: {\n state: \"ENABLED\",\n anomalyDetectionBaseline: \"PREVIOUS_IMPORT_FEATURES_STATS\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeaturestore = gcp.vertex.AiFeatureStore(\"featurestore\",\n name=\"terraform\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n online_serving_config={\n \"fixedNodeCount\": 2,\n },\n encryption_spec={\n \"kmsKeyName\": \"kms-name\",\n })\nentity = gcp.vertex.AiFeatureStoreEntityType(\"entity\",\n name=\"terraform\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"test description\",\n featurestore=featurestore.id,\n monitoring_config={\n \"snapshotAnalysis\": {\n \"disabled\": False,\n \"monitoringIntervalDays\": 1,\n \"stalenessDays\": 21,\n },\n \"numericalThresholdConfig\": {\n \"value\": 0.8,\n },\n \"categoricalThresholdConfig\": {\n \"value\": 10,\n },\n \"importFeaturesAnalysis\": {\n \"state\": \"ENABLED\",\n \"anomalyDetectionBaseline\": \"PREVIOUS_IMPORT_FEATURES_STATS\",\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 featurestore = new Gcp.Vertex.AiFeatureStore(\"featurestore\", new()\n {\n Name = \"terraform\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n OnlineServingConfig = new Gcp.Vertex.Inputs.AiFeatureStoreOnlineServingConfigArgs\n {\n FixedNodeCount = 2,\n },\n EncryptionSpec = new Gcp.Vertex.Inputs.AiFeatureStoreEncryptionSpecArgs\n {\n KmsKeyName = \"kms-name\",\n },\n });\n\n var entity = new Gcp.Vertex.AiFeatureStoreEntityType(\"entity\", new()\n {\n Name = \"terraform\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"test description\",\n Featurestore = featurestore.Id,\n MonitoringConfig = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigArgs\n {\n SnapshotAnalysis = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs\n {\n Disabled = false,\n MonitoringIntervalDays = 1,\n StalenessDays = 21,\n },\n NumericalThresholdConfig = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs\n {\n Value = 0.8,\n },\n CategoricalThresholdConfig = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs\n {\n Value = 10,\n },\n ImportFeaturesAnalysis = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigImportFeaturesAnalysisArgs\n {\n State = \"ENABLED\",\n AnomalyDetectionBaseline = \"PREVIOUS_IMPORT_FEATURES_STATS\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeaturestore, err := vertex.NewAiFeatureStore(ctx, \"featurestore\", \u0026vertex.AiFeatureStoreArgs{\n\t\t\tName: pulumi.String(\"terraform\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOnlineServingConfig: \u0026vertex.AiFeatureStoreOnlineServingConfigArgs{\n\t\t\t\tFixedNodeCount: pulumi.Int(2),\n\t\t\t},\n\t\t\tEncryptionSpec: \u0026vertex.AiFeatureStoreEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-name\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureStoreEntityType(ctx, \"entity\", \u0026vertex.AiFeatureStoreEntityTypeArgs{\n\t\t\tName: pulumi.String(\"terraform\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"test description\"),\n\t\t\tFeaturestore: featurestore.ID(),\n\t\t\tMonitoringConfig: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigArgs{\n\t\t\t\tSnapshotAnalysis: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs{\n\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\tMonitoringIntervalDays: pulumi.Int(1),\n\t\t\t\t\tStalenessDays: pulumi.Int(21),\n\t\t\t\t},\n\t\t\t\tNumericalThresholdConfig: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs{\n\t\t\t\t\tValue: pulumi.Float64(0.8),\n\t\t\t\t},\n\t\t\t\tCategoricalThresholdConfig: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs{\n\t\t\t\t\tValue: pulumi.Float64(10),\n\t\t\t\t},\n\t\t\t\tImportFeaturesAnalysis: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigImportFeaturesAnalysisArgs{\n\t\t\t\t\tState: pulumi.String(\"ENABLED\"),\n\t\t\t\t\tAnomalyDetectionBaseline: pulumi.String(\"PREVIOUS_IMPORT_FEATURES_STATS\"),\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.vertex.AiFeatureStore;\nimport com.pulumi.gcp.vertex.AiFeatureStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreOnlineServingConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEncryptionSpecArgs;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityType;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityTypeArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigImportFeaturesAnalysisArgs;\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 featurestore = new AiFeatureStore(\"featurestore\", AiFeatureStoreArgs.builder()\n .name(\"terraform\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .onlineServingConfig(AiFeatureStoreOnlineServingConfigArgs.builder()\n .fixedNodeCount(2)\n .build())\n .encryptionSpec(AiFeatureStoreEncryptionSpecArgs.builder()\n .kmsKeyName(\"kms-name\")\n .build())\n .build());\n\n var entity = new AiFeatureStoreEntityType(\"entity\", AiFeatureStoreEntityTypeArgs.builder()\n .name(\"terraform\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"test description\")\n .featurestore(featurestore.id())\n .monitoringConfig(AiFeatureStoreEntityTypeMonitoringConfigArgs.builder()\n .snapshotAnalysis(AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs.builder()\n .disabled(false)\n .monitoringIntervalDays(1)\n .stalenessDays(21)\n .build())\n .numericalThresholdConfig(AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs.builder()\n .value(0.8)\n .build())\n .categoricalThresholdConfig(AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs.builder()\n .value(10)\n .build())\n .importFeaturesAnalysis(AiFeatureStoreEntityTypeMonitoringConfigImportFeaturesAnalysisArgs.builder()\n .state(\"ENABLED\")\n .anomalyDetectionBaseline(\"PREVIOUS_IMPORT_FEATURES_STATS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featurestore:\n type: gcp:vertex:AiFeatureStore\n properties:\n name: terraform\n labels:\n foo: bar\n region: us-central1\n onlineServingConfig:\n fixedNodeCount: 2\n encryptionSpec:\n kmsKeyName: kms-name\n entity:\n type: gcp:vertex:AiFeatureStoreEntityType\n properties:\n name: terraform\n labels:\n foo: bar\n description: test description\n featurestore: ${featurestore.id}\n monitoringConfig:\n snapshotAnalysis:\n disabled: false\n monitoringIntervalDays: 1\n stalenessDays: 21\n numericalThresholdConfig:\n value: 0.8\n categoricalThresholdConfig:\n value: 10\n importFeaturesAnalysis:\n state: ENABLED\n anomalyDetectionBaseline: PREVIOUS_IMPORT_FEATURES_STATS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featurestore Entitytype With Beta Fields\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featurestore = new gcp.vertex.AiFeatureStore(\"featurestore\", {\n name: \"terraform2\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n onlineServingConfig: {\n fixedNodeCount: 2,\n },\n encryptionSpec: {\n kmsKeyName: \"kms-name\",\n },\n});\nconst entity = new gcp.vertex.AiFeatureStoreEntityType(\"entity\", {\n name: \"terraform2\",\n labels: {\n foo: \"bar\",\n },\n featurestore: featurestore.id,\n monitoringConfig: {\n snapshotAnalysis: {\n disabled: false,\n monitoringInterval: \"86400s\",\n },\n categoricalThresholdConfig: {\n value: 0.3,\n },\n numericalThresholdConfig: {\n value: 0.3,\n },\n },\n offlineStorageTtlDays: 30,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeaturestore = gcp.vertex.AiFeatureStore(\"featurestore\",\n name=\"terraform2\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n online_serving_config={\n \"fixedNodeCount\": 2,\n },\n encryption_spec={\n \"kmsKeyName\": \"kms-name\",\n })\nentity = gcp.vertex.AiFeatureStoreEntityType(\"entity\",\n name=\"terraform2\",\n labels={\n \"foo\": \"bar\",\n },\n featurestore=featurestore.id,\n monitoring_config={\n \"snapshotAnalysis\": {\n \"disabled\": False,\n \"monitoringInterval\": \"86400s\",\n },\n \"categoricalThresholdConfig\": {\n \"value\": 0.3,\n },\n \"numericalThresholdConfig\": {\n \"value\": 0.3,\n },\n },\n offline_storage_ttl_days=30)\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 featurestore = new Gcp.Vertex.AiFeatureStore(\"featurestore\", new()\n {\n Name = \"terraform2\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n OnlineServingConfig = new Gcp.Vertex.Inputs.AiFeatureStoreOnlineServingConfigArgs\n {\n FixedNodeCount = 2,\n },\n EncryptionSpec = new Gcp.Vertex.Inputs.AiFeatureStoreEncryptionSpecArgs\n {\n KmsKeyName = \"kms-name\",\n },\n });\n\n var entity = new Gcp.Vertex.AiFeatureStoreEntityType(\"entity\", new()\n {\n Name = \"terraform2\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Featurestore = featurestore.Id,\n MonitoringConfig = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigArgs\n {\n SnapshotAnalysis = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs\n {\n Disabled = false,\n MonitoringInterval = \"86400s\",\n },\n CategoricalThresholdConfig = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs\n {\n Value = 0.3,\n },\n NumericalThresholdConfig = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs\n {\n Value = 0.3,\n },\n },\n OfflineStorageTtlDays = 30,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeaturestore, err := vertex.NewAiFeatureStore(ctx, \"featurestore\", \u0026vertex.AiFeatureStoreArgs{\n\t\t\tName: pulumi.String(\"terraform2\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOnlineServingConfig: \u0026vertex.AiFeatureStoreOnlineServingConfigArgs{\n\t\t\t\tFixedNodeCount: pulumi.Int(2),\n\t\t\t},\n\t\t\tEncryptionSpec: \u0026vertex.AiFeatureStoreEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-name\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureStoreEntityType(ctx, \"entity\", \u0026vertex.AiFeatureStoreEntityTypeArgs{\n\t\t\tName: pulumi.String(\"terraform2\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tFeaturestore: featurestore.ID(),\n\t\t\tMonitoringConfig: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigArgs{\n\t\t\t\tSnapshotAnalysis: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs{\n\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\tMonitoringInterval: pulumi.String(\"86400s\"),\n\t\t\t\t},\n\t\t\t\tCategoricalThresholdConfig: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs{\n\t\t\t\t\tValue: pulumi.Float64(0.3),\n\t\t\t\t},\n\t\t\t\tNumericalThresholdConfig: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs{\n\t\t\t\t\tValue: pulumi.Float64(0.3),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOfflineStorageTtlDays: pulumi.Int(30),\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.vertex.AiFeatureStore;\nimport com.pulumi.gcp.vertex.AiFeatureStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreOnlineServingConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEncryptionSpecArgs;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityType;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityTypeArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs;\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 featurestore = new AiFeatureStore(\"featurestore\", AiFeatureStoreArgs.builder()\n .name(\"terraform2\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .onlineServingConfig(AiFeatureStoreOnlineServingConfigArgs.builder()\n .fixedNodeCount(2)\n .build())\n .encryptionSpec(AiFeatureStoreEncryptionSpecArgs.builder()\n .kmsKeyName(\"kms-name\")\n .build())\n .build());\n\n var entity = new AiFeatureStoreEntityType(\"entity\", AiFeatureStoreEntityTypeArgs.builder()\n .name(\"terraform2\")\n .labels(Map.of(\"foo\", \"bar\"))\n .featurestore(featurestore.id())\n .monitoringConfig(AiFeatureStoreEntityTypeMonitoringConfigArgs.builder()\n .snapshotAnalysis(AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs.builder()\n .disabled(false)\n .monitoringInterval(\"86400s\")\n .build())\n .categoricalThresholdConfig(AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs.builder()\n .value(0.3)\n .build())\n .numericalThresholdConfig(AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs.builder()\n .value(0.3)\n .build())\n .build())\n .offlineStorageTtlDays(30)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featurestore:\n type: gcp:vertex:AiFeatureStore\n properties:\n name: terraform2\n labels:\n foo: bar\n region: us-central1\n onlineServingConfig:\n fixedNodeCount: 2\n encryptionSpec:\n kmsKeyName: kms-name\n entity:\n type: gcp:vertex:AiFeatureStoreEntityType\n properties:\n name: terraform2\n labels:\n foo: bar\n featurestore: ${featurestore.id}\n monitoringConfig:\n snapshotAnalysis:\n disabled: false\n monitoringInterval: 86400s\n categoricalThresholdConfig:\n value: 0.3\n numericalThresholdConfig:\n value: 0.3\n offlineStorageTtlDays: 30\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeaturestoreEntitytype can be imported using any of these accepted formats:\n\n* `{{featurestore}}/entityTypes/{{name}}`\n\nWhen using the `pulumi import` command, FeaturestoreEntitytype can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureStoreEntityType:AiFeatureStoreEntityType default {{featurestore}}/entityTypes/{{name}}\n```\n\n", + "description": "An entity type is a type of object in a system that needs to be modeled and have stored information about. For example, driver is an entity type, and driver0 is an instance of an entity type driver.\n\n\nTo get more information about FeaturestoreEntitytype, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.featurestores.entityTypes)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Featurestore Entitytype\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featurestore = new gcp.vertex.AiFeatureStore(\"featurestore\", {\n name: \"terraform\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n onlineServingConfig: {\n fixedNodeCount: 2,\n },\n encryptionSpec: {\n kmsKeyName: \"kms-name\",\n },\n});\nconst entity = new gcp.vertex.AiFeatureStoreEntityType(\"entity\", {\n name: \"terraform\",\n labels: {\n foo: \"bar\",\n },\n description: \"test description\",\n featurestore: featurestore.id,\n monitoringConfig: {\n snapshotAnalysis: {\n disabled: false,\n monitoringIntervalDays: 1,\n stalenessDays: 21,\n },\n numericalThresholdConfig: {\n value: 0.8,\n },\n categoricalThresholdConfig: {\n value: 10,\n },\n importFeaturesAnalysis: {\n state: \"ENABLED\",\n anomalyDetectionBaseline: \"PREVIOUS_IMPORT_FEATURES_STATS\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeaturestore = gcp.vertex.AiFeatureStore(\"featurestore\",\n name=\"terraform\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n online_serving_config={\n \"fixed_node_count\": 2,\n },\n encryption_spec={\n \"kms_key_name\": \"kms-name\",\n })\nentity = gcp.vertex.AiFeatureStoreEntityType(\"entity\",\n name=\"terraform\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"test description\",\n featurestore=featurestore.id,\n monitoring_config={\n \"snapshot_analysis\": {\n \"disabled\": False,\n \"monitoring_interval_days\": 1,\n \"staleness_days\": 21,\n },\n \"numerical_threshold_config\": {\n \"value\": 0.8,\n },\n \"categorical_threshold_config\": {\n \"value\": 10,\n },\n \"import_features_analysis\": {\n \"state\": \"ENABLED\",\n \"anomaly_detection_baseline\": \"PREVIOUS_IMPORT_FEATURES_STATS\",\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 featurestore = new Gcp.Vertex.AiFeatureStore(\"featurestore\", new()\n {\n Name = \"terraform\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n OnlineServingConfig = new Gcp.Vertex.Inputs.AiFeatureStoreOnlineServingConfigArgs\n {\n FixedNodeCount = 2,\n },\n EncryptionSpec = new Gcp.Vertex.Inputs.AiFeatureStoreEncryptionSpecArgs\n {\n KmsKeyName = \"kms-name\",\n },\n });\n\n var entity = new Gcp.Vertex.AiFeatureStoreEntityType(\"entity\", new()\n {\n Name = \"terraform\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"test description\",\n Featurestore = featurestore.Id,\n MonitoringConfig = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigArgs\n {\n SnapshotAnalysis = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs\n {\n Disabled = false,\n MonitoringIntervalDays = 1,\n StalenessDays = 21,\n },\n NumericalThresholdConfig = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs\n {\n Value = 0.8,\n },\n CategoricalThresholdConfig = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs\n {\n Value = 10,\n },\n ImportFeaturesAnalysis = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigImportFeaturesAnalysisArgs\n {\n State = \"ENABLED\",\n AnomalyDetectionBaseline = \"PREVIOUS_IMPORT_FEATURES_STATS\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeaturestore, err := vertex.NewAiFeatureStore(ctx, \"featurestore\", \u0026vertex.AiFeatureStoreArgs{\n\t\t\tName: pulumi.String(\"terraform\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOnlineServingConfig: \u0026vertex.AiFeatureStoreOnlineServingConfigArgs{\n\t\t\t\tFixedNodeCount: pulumi.Int(2),\n\t\t\t},\n\t\t\tEncryptionSpec: \u0026vertex.AiFeatureStoreEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-name\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureStoreEntityType(ctx, \"entity\", \u0026vertex.AiFeatureStoreEntityTypeArgs{\n\t\t\tName: pulumi.String(\"terraform\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"test description\"),\n\t\t\tFeaturestore: featurestore.ID(),\n\t\t\tMonitoringConfig: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigArgs{\n\t\t\t\tSnapshotAnalysis: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs{\n\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\tMonitoringIntervalDays: pulumi.Int(1),\n\t\t\t\t\tStalenessDays: pulumi.Int(21),\n\t\t\t\t},\n\t\t\t\tNumericalThresholdConfig: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs{\n\t\t\t\t\tValue: pulumi.Float64(0.8),\n\t\t\t\t},\n\t\t\t\tCategoricalThresholdConfig: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs{\n\t\t\t\t\tValue: pulumi.Float64(10),\n\t\t\t\t},\n\t\t\t\tImportFeaturesAnalysis: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigImportFeaturesAnalysisArgs{\n\t\t\t\t\tState: pulumi.String(\"ENABLED\"),\n\t\t\t\t\tAnomalyDetectionBaseline: pulumi.String(\"PREVIOUS_IMPORT_FEATURES_STATS\"),\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.vertex.AiFeatureStore;\nimport com.pulumi.gcp.vertex.AiFeatureStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreOnlineServingConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEncryptionSpecArgs;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityType;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityTypeArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigImportFeaturesAnalysisArgs;\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 featurestore = new AiFeatureStore(\"featurestore\", AiFeatureStoreArgs.builder()\n .name(\"terraform\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .onlineServingConfig(AiFeatureStoreOnlineServingConfigArgs.builder()\n .fixedNodeCount(2)\n .build())\n .encryptionSpec(AiFeatureStoreEncryptionSpecArgs.builder()\n .kmsKeyName(\"kms-name\")\n .build())\n .build());\n\n var entity = new AiFeatureStoreEntityType(\"entity\", AiFeatureStoreEntityTypeArgs.builder()\n .name(\"terraform\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"test description\")\n .featurestore(featurestore.id())\n .monitoringConfig(AiFeatureStoreEntityTypeMonitoringConfigArgs.builder()\n .snapshotAnalysis(AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs.builder()\n .disabled(false)\n .monitoringIntervalDays(1)\n .stalenessDays(21)\n .build())\n .numericalThresholdConfig(AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs.builder()\n .value(0.8)\n .build())\n .categoricalThresholdConfig(AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs.builder()\n .value(10)\n .build())\n .importFeaturesAnalysis(AiFeatureStoreEntityTypeMonitoringConfigImportFeaturesAnalysisArgs.builder()\n .state(\"ENABLED\")\n .anomalyDetectionBaseline(\"PREVIOUS_IMPORT_FEATURES_STATS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featurestore:\n type: gcp:vertex:AiFeatureStore\n properties:\n name: terraform\n labels:\n foo: bar\n region: us-central1\n onlineServingConfig:\n fixedNodeCount: 2\n encryptionSpec:\n kmsKeyName: kms-name\n entity:\n type: gcp:vertex:AiFeatureStoreEntityType\n properties:\n name: terraform\n labels:\n foo: bar\n description: test description\n featurestore: ${featurestore.id}\n monitoringConfig:\n snapshotAnalysis:\n disabled: false\n monitoringIntervalDays: 1\n stalenessDays: 21\n numericalThresholdConfig:\n value: 0.8\n categoricalThresholdConfig:\n value: 10\n importFeaturesAnalysis:\n state: ENABLED\n anomalyDetectionBaseline: PREVIOUS_IMPORT_FEATURES_STATS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featurestore Entitytype With Beta Fields\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featurestore = new gcp.vertex.AiFeatureStore(\"featurestore\", {\n name: \"terraform2\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n onlineServingConfig: {\n fixedNodeCount: 2,\n },\n encryptionSpec: {\n kmsKeyName: \"kms-name\",\n },\n});\nconst entity = new gcp.vertex.AiFeatureStoreEntityType(\"entity\", {\n name: \"terraform2\",\n labels: {\n foo: \"bar\",\n },\n featurestore: featurestore.id,\n monitoringConfig: {\n snapshotAnalysis: {\n disabled: false,\n monitoringInterval: \"86400s\",\n },\n categoricalThresholdConfig: {\n value: 0.3,\n },\n numericalThresholdConfig: {\n value: 0.3,\n },\n },\n offlineStorageTtlDays: 30,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeaturestore = gcp.vertex.AiFeatureStore(\"featurestore\",\n name=\"terraform2\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n online_serving_config={\n \"fixed_node_count\": 2,\n },\n encryption_spec={\n \"kms_key_name\": \"kms-name\",\n })\nentity = gcp.vertex.AiFeatureStoreEntityType(\"entity\",\n name=\"terraform2\",\n labels={\n \"foo\": \"bar\",\n },\n featurestore=featurestore.id,\n monitoring_config={\n \"snapshot_analysis\": {\n \"disabled\": False,\n \"monitoring_interval\": \"86400s\",\n },\n \"categorical_threshold_config\": {\n \"value\": 0.3,\n },\n \"numerical_threshold_config\": {\n \"value\": 0.3,\n },\n },\n offline_storage_ttl_days=30)\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 featurestore = new Gcp.Vertex.AiFeatureStore(\"featurestore\", new()\n {\n Name = \"terraform2\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n OnlineServingConfig = new Gcp.Vertex.Inputs.AiFeatureStoreOnlineServingConfigArgs\n {\n FixedNodeCount = 2,\n },\n EncryptionSpec = new Gcp.Vertex.Inputs.AiFeatureStoreEncryptionSpecArgs\n {\n KmsKeyName = \"kms-name\",\n },\n });\n\n var entity = new Gcp.Vertex.AiFeatureStoreEntityType(\"entity\", new()\n {\n Name = \"terraform2\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Featurestore = featurestore.Id,\n MonitoringConfig = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigArgs\n {\n SnapshotAnalysis = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs\n {\n Disabled = false,\n MonitoringInterval = \"86400s\",\n },\n CategoricalThresholdConfig = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs\n {\n Value = 0.3,\n },\n NumericalThresholdConfig = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs\n {\n Value = 0.3,\n },\n },\n OfflineStorageTtlDays = 30,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeaturestore, err := vertex.NewAiFeatureStore(ctx, \"featurestore\", \u0026vertex.AiFeatureStoreArgs{\n\t\t\tName: pulumi.String(\"terraform2\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOnlineServingConfig: \u0026vertex.AiFeatureStoreOnlineServingConfigArgs{\n\t\t\t\tFixedNodeCount: pulumi.Int(2),\n\t\t\t},\n\t\t\tEncryptionSpec: \u0026vertex.AiFeatureStoreEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-name\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureStoreEntityType(ctx, \"entity\", \u0026vertex.AiFeatureStoreEntityTypeArgs{\n\t\t\tName: pulumi.String(\"terraform2\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tFeaturestore: featurestore.ID(),\n\t\t\tMonitoringConfig: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigArgs{\n\t\t\t\tSnapshotAnalysis: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs{\n\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\tMonitoringInterval: pulumi.String(\"86400s\"),\n\t\t\t\t},\n\t\t\t\tCategoricalThresholdConfig: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs{\n\t\t\t\t\tValue: pulumi.Float64(0.3),\n\t\t\t\t},\n\t\t\t\tNumericalThresholdConfig: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs{\n\t\t\t\t\tValue: pulumi.Float64(0.3),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOfflineStorageTtlDays: pulumi.Int(30),\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.vertex.AiFeatureStore;\nimport com.pulumi.gcp.vertex.AiFeatureStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreOnlineServingConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEncryptionSpecArgs;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityType;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityTypeArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs;\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 featurestore = new AiFeatureStore(\"featurestore\", AiFeatureStoreArgs.builder()\n .name(\"terraform2\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .onlineServingConfig(AiFeatureStoreOnlineServingConfigArgs.builder()\n .fixedNodeCount(2)\n .build())\n .encryptionSpec(AiFeatureStoreEncryptionSpecArgs.builder()\n .kmsKeyName(\"kms-name\")\n .build())\n .build());\n\n var entity = new AiFeatureStoreEntityType(\"entity\", AiFeatureStoreEntityTypeArgs.builder()\n .name(\"terraform2\")\n .labels(Map.of(\"foo\", \"bar\"))\n .featurestore(featurestore.id())\n .monitoringConfig(AiFeatureStoreEntityTypeMonitoringConfigArgs.builder()\n .snapshotAnalysis(AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs.builder()\n .disabled(false)\n .monitoringInterval(\"86400s\")\n .build())\n .categoricalThresholdConfig(AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs.builder()\n .value(0.3)\n .build())\n .numericalThresholdConfig(AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs.builder()\n .value(0.3)\n .build())\n .build())\n .offlineStorageTtlDays(30)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featurestore:\n type: gcp:vertex:AiFeatureStore\n properties:\n name: terraform2\n labels:\n foo: bar\n region: us-central1\n onlineServingConfig:\n fixedNodeCount: 2\n encryptionSpec:\n kmsKeyName: kms-name\n entity:\n type: gcp:vertex:AiFeatureStoreEntityType\n properties:\n name: terraform2\n labels:\n foo: bar\n featurestore: ${featurestore.id}\n monitoringConfig:\n snapshotAnalysis:\n disabled: false\n monitoringInterval: 86400s\n categoricalThresholdConfig:\n value: 0.3\n numericalThresholdConfig:\n value: 0.3\n offlineStorageTtlDays: 30\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeaturestoreEntitytype can be imported using any of these accepted formats:\n\n* `{{featurestore}}/entityTypes/{{name}}`\n\nWhen using the `pulumi import` command, FeaturestoreEntitytype can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureStoreEntityType:AiFeatureStoreEntityType default {{featurestore}}/entityTypes/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -244960,7 +244960,7 @@ } }, "gcp:vertex/aiFeatureStoreEntityTypeFeature:AiFeatureStoreEntityTypeFeature": { - "description": "Feature Metadata information that describes an attribute of an entity type. For example, apple is an entity type, and color is a feature that describes apple.\n\n\nTo get more information about FeaturestoreEntitytypeFeature, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.featurestores.entityTypes.features)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Featurestore Entitytype Feature\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featurestore = new gcp.vertex.AiFeatureStore(\"featurestore\", {\n name: \"terraform\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n onlineServingConfig: {\n fixedNodeCount: 2,\n },\n});\nconst entity = new gcp.vertex.AiFeatureStoreEntityType(\"entity\", {\n name: \"terraform\",\n labels: {\n foo: \"bar\",\n },\n featurestore: featurestore.id,\n});\nconst feature = new gcp.vertex.AiFeatureStoreEntityTypeFeature(\"feature\", {\n name: \"terraform\",\n labels: {\n foo: \"bar\",\n },\n entitytype: entity.id,\n valueType: \"INT64_ARRAY\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeaturestore = gcp.vertex.AiFeatureStore(\"featurestore\",\n name=\"terraform\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n online_serving_config={\n \"fixedNodeCount\": 2,\n })\nentity = gcp.vertex.AiFeatureStoreEntityType(\"entity\",\n name=\"terraform\",\n labels={\n \"foo\": \"bar\",\n },\n featurestore=featurestore.id)\nfeature = gcp.vertex.AiFeatureStoreEntityTypeFeature(\"feature\",\n name=\"terraform\",\n labels={\n \"foo\": \"bar\",\n },\n entitytype=entity.id,\n value_type=\"INT64_ARRAY\")\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 featurestore = new Gcp.Vertex.AiFeatureStore(\"featurestore\", new()\n {\n Name = \"terraform\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n OnlineServingConfig = new Gcp.Vertex.Inputs.AiFeatureStoreOnlineServingConfigArgs\n {\n FixedNodeCount = 2,\n },\n });\n\n var entity = new Gcp.Vertex.AiFeatureStoreEntityType(\"entity\", new()\n {\n Name = \"terraform\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Featurestore = featurestore.Id,\n });\n\n var feature = new Gcp.Vertex.AiFeatureStoreEntityTypeFeature(\"feature\", new()\n {\n Name = \"terraform\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Entitytype = entity.Id,\n ValueType = \"INT64_ARRAY\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeaturestore, err := vertex.NewAiFeatureStore(ctx, \"featurestore\", \u0026vertex.AiFeatureStoreArgs{\n\t\t\tName: pulumi.String(\"terraform\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOnlineServingConfig: \u0026vertex.AiFeatureStoreOnlineServingConfigArgs{\n\t\t\t\tFixedNodeCount: pulumi.Int(2),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tentity, err := vertex.NewAiFeatureStoreEntityType(ctx, \"entity\", \u0026vertex.AiFeatureStoreEntityTypeArgs{\n\t\t\tName: pulumi.String(\"terraform\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tFeaturestore: featurestore.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureStoreEntityTypeFeature(ctx, \"feature\", \u0026vertex.AiFeatureStoreEntityTypeFeatureArgs{\n\t\t\tName: pulumi.String(\"terraform\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tEntitytype: entity.ID(),\n\t\t\tValueType: pulumi.String(\"INT64_ARRAY\"),\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.vertex.AiFeatureStore;\nimport com.pulumi.gcp.vertex.AiFeatureStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreOnlineServingConfigArgs;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityType;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityTypeArgs;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityTypeFeature;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityTypeFeatureArgs;\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 featurestore = new AiFeatureStore(\"featurestore\", AiFeatureStoreArgs.builder()\n .name(\"terraform\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .onlineServingConfig(AiFeatureStoreOnlineServingConfigArgs.builder()\n .fixedNodeCount(2)\n .build())\n .build());\n\n var entity = new AiFeatureStoreEntityType(\"entity\", AiFeatureStoreEntityTypeArgs.builder()\n .name(\"terraform\")\n .labels(Map.of(\"foo\", \"bar\"))\n .featurestore(featurestore.id())\n .build());\n\n var feature = new AiFeatureStoreEntityTypeFeature(\"feature\", AiFeatureStoreEntityTypeFeatureArgs.builder()\n .name(\"terraform\")\n .labels(Map.of(\"foo\", \"bar\"))\n .entitytype(entity.id())\n .valueType(\"INT64_ARRAY\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featurestore:\n type: gcp:vertex:AiFeatureStore\n properties:\n name: terraform\n labels:\n foo: bar\n region: us-central1\n onlineServingConfig:\n fixedNodeCount: 2\n entity:\n type: gcp:vertex:AiFeatureStoreEntityType\n properties:\n name: terraform\n labels:\n foo: bar\n featurestore: ${featurestore.id}\n feature:\n type: gcp:vertex:AiFeatureStoreEntityTypeFeature\n properties:\n name: terraform\n labels:\n foo: bar\n entitytype: ${entity.id}\n valueType: INT64_ARRAY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featurestore Entitytype Feature With Beta Fields\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featurestore = new gcp.vertex.AiFeatureStore(\"featurestore\", {\n name: \"terraform2\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n onlineServingConfig: {\n fixedNodeCount: 2,\n },\n});\nconst entity = new gcp.vertex.AiFeatureStoreEntityType(\"entity\", {\n name: \"terraform2\",\n labels: {\n foo: \"bar\",\n },\n featurestore: featurestore.id,\n monitoringConfig: {\n snapshotAnalysis: {\n disabled: false,\n monitoringInterval: \"86400s\",\n },\n categoricalThresholdConfig: {\n value: 0.3,\n },\n numericalThresholdConfig: {\n value: 0.3,\n },\n },\n});\nconst feature = new gcp.vertex.AiFeatureStoreEntityTypeFeature(\"feature\", {\n name: \"terraform2\",\n labels: {\n foo: \"bar\",\n },\n entitytype: entity.id,\n valueType: \"INT64_ARRAY\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeaturestore = gcp.vertex.AiFeatureStore(\"featurestore\",\n name=\"terraform2\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n online_serving_config={\n \"fixedNodeCount\": 2,\n })\nentity = gcp.vertex.AiFeatureStoreEntityType(\"entity\",\n name=\"terraform2\",\n labels={\n \"foo\": \"bar\",\n },\n featurestore=featurestore.id,\n monitoring_config={\n \"snapshotAnalysis\": {\n \"disabled\": False,\n \"monitoringInterval\": \"86400s\",\n },\n \"categoricalThresholdConfig\": {\n \"value\": 0.3,\n },\n \"numericalThresholdConfig\": {\n \"value\": 0.3,\n },\n })\nfeature = gcp.vertex.AiFeatureStoreEntityTypeFeature(\"feature\",\n name=\"terraform2\",\n labels={\n \"foo\": \"bar\",\n },\n entitytype=entity.id,\n value_type=\"INT64_ARRAY\")\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 featurestore = new Gcp.Vertex.AiFeatureStore(\"featurestore\", new()\n {\n Name = \"terraform2\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n OnlineServingConfig = new Gcp.Vertex.Inputs.AiFeatureStoreOnlineServingConfigArgs\n {\n FixedNodeCount = 2,\n },\n });\n\n var entity = new Gcp.Vertex.AiFeatureStoreEntityType(\"entity\", new()\n {\n Name = \"terraform2\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Featurestore = featurestore.Id,\n MonitoringConfig = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigArgs\n {\n SnapshotAnalysis = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs\n {\n Disabled = false,\n MonitoringInterval = \"86400s\",\n },\n CategoricalThresholdConfig = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs\n {\n Value = 0.3,\n },\n NumericalThresholdConfig = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs\n {\n Value = 0.3,\n },\n },\n });\n\n var feature = new Gcp.Vertex.AiFeatureStoreEntityTypeFeature(\"feature\", new()\n {\n Name = \"terraform2\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Entitytype = entity.Id,\n ValueType = \"INT64_ARRAY\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeaturestore, err := vertex.NewAiFeatureStore(ctx, \"featurestore\", \u0026vertex.AiFeatureStoreArgs{\n\t\t\tName: pulumi.String(\"terraform2\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOnlineServingConfig: \u0026vertex.AiFeatureStoreOnlineServingConfigArgs{\n\t\t\t\tFixedNodeCount: pulumi.Int(2),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tentity, err := vertex.NewAiFeatureStoreEntityType(ctx, \"entity\", \u0026vertex.AiFeatureStoreEntityTypeArgs{\n\t\t\tName: pulumi.String(\"terraform2\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tFeaturestore: featurestore.ID(),\n\t\t\tMonitoringConfig: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigArgs{\n\t\t\t\tSnapshotAnalysis: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs{\n\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\tMonitoringInterval: pulumi.String(\"86400s\"),\n\t\t\t\t},\n\t\t\t\tCategoricalThresholdConfig: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs{\n\t\t\t\t\tValue: pulumi.Float64(0.3),\n\t\t\t\t},\n\t\t\t\tNumericalThresholdConfig: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs{\n\t\t\t\t\tValue: pulumi.Float64(0.3),\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 = vertex.NewAiFeatureStoreEntityTypeFeature(ctx, \"feature\", \u0026vertex.AiFeatureStoreEntityTypeFeatureArgs{\n\t\t\tName: pulumi.String(\"terraform2\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tEntitytype: entity.ID(),\n\t\t\tValueType: pulumi.String(\"INT64_ARRAY\"),\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.vertex.AiFeatureStore;\nimport com.pulumi.gcp.vertex.AiFeatureStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreOnlineServingConfigArgs;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityType;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityTypeArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityTypeFeature;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityTypeFeatureArgs;\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 featurestore = new AiFeatureStore(\"featurestore\", AiFeatureStoreArgs.builder()\n .name(\"terraform2\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .onlineServingConfig(AiFeatureStoreOnlineServingConfigArgs.builder()\n .fixedNodeCount(2)\n .build())\n .build());\n\n var entity = new AiFeatureStoreEntityType(\"entity\", AiFeatureStoreEntityTypeArgs.builder()\n .name(\"terraform2\")\n .labels(Map.of(\"foo\", \"bar\"))\n .featurestore(featurestore.id())\n .monitoringConfig(AiFeatureStoreEntityTypeMonitoringConfigArgs.builder()\n .snapshotAnalysis(AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs.builder()\n .disabled(false)\n .monitoringInterval(\"86400s\")\n .build())\n .categoricalThresholdConfig(AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs.builder()\n .value(0.3)\n .build())\n .numericalThresholdConfig(AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs.builder()\n .value(0.3)\n .build())\n .build())\n .build());\n\n var feature = new AiFeatureStoreEntityTypeFeature(\"feature\", AiFeatureStoreEntityTypeFeatureArgs.builder()\n .name(\"terraform2\")\n .labels(Map.of(\"foo\", \"bar\"))\n .entitytype(entity.id())\n .valueType(\"INT64_ARRAY\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featurestore:\n type: gcp:vertex:AiFeatureStore\n properties:\n name: terraform2\n labels:\n foo: bar\n region: us-central1\n onlineServingConfig:\n fixedNodeCount: 2\n entity:\n type: gcp:vertex:AiFeatureStoreEntityType\n properties:\n name: terraform2\n labels:\n foo: bar\n featurestore: ${featurestore.id}\n monitoringConfig:\n snapshotAnalysis:\n disabled: false\n monitoringInterval: 86400s\n categoricalThresholdConfig:\n value: 0.3\n numericalThresholdConfig:\n value: 0.3\n feature:\n type: gcp:vertex:AiFeatureStoreEntityTypeFeature\n properties:\n name: terraform2\n labels:\n foo: bar\n entitytype: ${entity.id}\n valueType: INT64_ARRAY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeaturestoreEntitytypeFeature can be imported using any of these accepted formats:\n\n* `{{entitytype}}/features/{{name}}`\n\nWhen using the `pulumi import` command, FeaturestoreEntitytypeFeature can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureStoreEntityTypeFeature:AiFeatureStoreEntityTypeFeature default {{entitytype}}/features/{{name}}\n```\n\n", + "description": "Feature Metadata information that describes an attribute of an entity type. For example, apple is an entity type, and color is a feature that describes apple.\n\n\nTo get more information about FeaturestoreEntitytypeFeature, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.featurestores.entityTypes.features)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Featurestore Entitytype Feature\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featurestore = new gcp.vertex.AiFeatureStore(\"featurestore\", {\n name: \"terraform\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n onlineServingConfig: {\n fixedNodeCount: 2,\n },\n});\nconst entity = new gcp.vertex.AiFeatureStoreEntityType(\"entity\", {\n name: \"terraform\",\n labels: {\n foo: \"bar\",\n },\n featurestore: featurestore.id,\n});\nconst feature = new gcp.vertex.AiFeatureStoreEntityTypeFeature(\"feature\", {\n name: \"terraform\",\n labels: {\n foo: \"bar\",\n },\n entitytype: entity.id,\n valueType: \"INT64_ARRAY\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeaturestore = gcp.vertex.AiFeatureStore(\"featurestore\",\n name=\"terraform\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n online_serving_config={\n \"fixed_node_count\": 2,\n })\nentity = gcp.vertex.AiFeatureStoreEntityType(\"entity\",\n name=\"terraform\",\n labels={\n \"foo\": \"bar\",\n },\n featurestore=featurestore.id)\nfeature = gcp.vertex.AiFeatureStoreEntityTypeFeature(\"feature\",\n name=\"terraform\",\n labels={\n \"foo\": \"bar\",\n },\n entitytype=entity.id,\n value_type=\"INT64_ARRAY\")\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 featurestore = new Gcp.Vertex.AiFeatureStore(\"featurestore\", new()\n {\n Name = \"terraform\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n OnlineServingConfig = new Gcp.Vertex.Inputs.AiFeatureStoreOnlineServingConfigArgs\n {\n FixedNodeCount = 2,\n },\n });\n\n var entity = new Gcp.Vertex.AiFeatureStoreEntityType(\"entity\", new()\n {\n Name = \"terraform\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Featurestore = featurestore.Id,\n });\n\n var feature = new Gcp.Vertex.AiFeatureStoreEntityTypeFeature(\"feature\", new()\n {\n Name = \"terraform\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Entitytype = entity.Id,\n ValueType = \"INT64_ARRAY\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeaturestore, err := vertex.NewAiFeatureStore(ctx, \"featurestore\", \u0026vertex.AiFeatureStoreArgs{\n\t\t\tName: pulumi.String(\"terraform\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOnlineServingConfig: \u0026vertex.AiFeatureStoreOnlineServingConfigArgs{\n\t\t\t\tFixedNodeCount: pulumi.Int(2),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tentity, err := vertex.NewAiFeatureStoreEntityType(ctx, \"entity\", \u0026vertex.AiFeatureStoreEntityTypeArgs{\n\t\t\tName: pulumi.String(\"terraform\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tFeaturestore: featurestore.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureStoreEntityTypeFeature(ctx, \"feature\", \u0026vertex.AiFeatureStoreEntityTypeFeatureArgs{\n\t\t\tName: pulumi.String(\"terraform\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tEntitytype: entity.ID(),\n\t\t\tValueType: pulumi.String(\"INT64_ARRAY\"),\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.vertex.AiFeatureStore;\nimport com.pulumi.gcp.vertex.AiFeatureStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreOnlineServingConfigArgs;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityType;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityTypeArgs;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityTypeFeature;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityTypeFeatureArgs;\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 featurestore = new AiFeatureStore(\"featurestore\", AiFeatureStoreArgs.builder()\n .name(\"terraform\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .onlineServingConfig(AiFeatureStoreOnlineServingConfigArgs.builder()\n .fixedNodeCount(2)\n .build())\n .build());\n\n var entity = new AiFeatureStoreEntityType(\"entity\", AiFeatureStoreEntityTypeArgs.builder()\n .name(\"terraform\")\n .labels(Map.of(\"foo\", \"bar\"))\n .featurestore(featurestore.id())\n .build());\n\n var feature = new AiFeatureStoreEntityTypeFeature(\"feature\", AiFeatureStoreEntityTypeFeatureArgs.builder()\n .name(\"terraform\")\n .labels(Map.of(\"foo\", \"bar\"))\n .entitytype(entity.id())\n .valueType(\"INT64_ARRAY\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featurestore:\n type: gcp:vertex:AiFeatureStore\n properties:\n name: terraform\n labels:\n foo: bar\n region: us-central1\n onlineServingConfig:\n fixedNodeCount: 2\n entity:\n type: gcp:vertex:AiFeatureStoreEntityType\n properties:\n name: terraform\n labels:\n foo: bar\n featurestore: ${featurestore.id}\n feature:\n type: gcp:vertex:AiFeatureStoreEntityTypeFeature\n properties:\n name: terraform\n labels:\n foo: bar\n entitytype: ${entity.id}\n valueType: INT64_ARRAY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featurestore Entitytype Feature With Beta Fields\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featurestore = new gcp.vertex.AiFeatureStore(\"featurestore\", {\n name: \"terraform2\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n onlineServingConfig: {\n fixedNodeCount: 2,\n },\n});\nconst entity = new gcp.vertex.AiFeatureStoreEntityType(\"entity\", {\n name: \"terraform2\",\n labels: {\n foo: \"bar\",\n },\n featurestore: featurestore.id,\n monitoringConfig: {\n snapshotAnalysis: {\n disabled: false,\n monitoringInterval: \"86400s\",\n },\n categoricalThresholdConfig: {\n value: 0.3,\n },\n numericalThresholdConfig: {\n value: 0.3,\n },\n },\n});\nconst feature = new gcp.vertex.AiFeatureStoreEntityTypeFeature(\"feature\", {\n name: \"terraform2\",\n labels: {\n foo: \"bar\",\n },\n entitytype: entity.id,\n valueType: \"INT64_ARRAY\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeaturestore = gcp.vertex.AiFeatureStore(\"featurestore\",\n name=\"terraform2\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n online_serving_config={\n \"fixed_node_count\": 2,\n })\nentity = gcp.vertex.AiFeatureStoreEntityType(\"entity\",\n name=\"terraform2\",\n labels={\n \"foo\": \"bar\",\n },\n featurestore=featurestore.id,\n monitoring_config={\n \"snapshot_analysis\": {\n \"disabled\": False,\n \"monitoring_interval\": \"86400s\",\n },\n \"categorical_threshold_config\": {\n \"value\": 0.3,\n },\n \"numerical_threshold_config\": {\n \"value\": 0.3,\n },\n })\nfeature = gcp.vertex.AiFeatureStoreEntityTypeFeature(\"feature\",\n name=\"terraform2\",\n labels={\n \"foo\": \"bar\",\n },\n entitytype=entity.id,\n value_type=\"INT64_ARRAY\")\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 featurestore = new Gcp.Vertex.AiFeatureStore(\"featurestore\", new()\n {\n Name = \"terraform2\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n OnlineServingConfig = new Gcp.Vertex.Inputs.AiFeatureStoreOnlineServingConfigArgs\n {\n FixedNodeCount = 2,\n },\n });\n\n var entity = new Gcp.Vertex.AiFeatureStoreEntityType(\"entity\", new()\n {\n Name = \"terraform2\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Featurestore = featurestore.Id,\n MonitoringConfig = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigArgs\n {\n SnapshotAnalysis = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs\n {\n Disabled = false,\n MonitoringInterval = \"86400s\",\n },\n CategoricalThresholdConfig = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs\n {\n Value = 0.3,\n },\n NumericalThresholdConfig = new Gcp.Vertex.Inputs.AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs\n {\n Value = 0.3,\n },\n },\n });\n\n var feature = new Gcp.Vertex.AiFeatureStoreEntityTypeFeature(\"feature\", new()\n {\n Name = \"terraform2\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Entitytype = entity.Id,\n ValueType = \"INT64_ARRAY\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeaturestore, err := vertex.NewAiFeatureStore(ctx, \"featurestore\", \u0026vertex.AiFeatureStoreArgs{\n\t\t\tName: pulumi.String(\"terraform2\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOnlineServingConfig: \u0026vertex.AiFeatureStoreOnlineServingConfigArgs{\n\t\t\t\tFixedNodeCount: pulumi.Int(2),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tentity, err := vertex.NewAiFeatureStoreEntityType(ctx, \"entity\", \u0026vertex.AiFeatureStoreEntityTypeArgs{\n\t\t\tName: pulumi.String(\"terraform2\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tFeaturestore: featurestore.ID(),\n\t\t\tMonitoringConfig: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigArgs{\n\t\t\t\tSnapshotAnalysis: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs{\n\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\tMonitoringInterval: pulumi.String(\"86400s\"),\n\t\t\t\t},\n\t\t\t\tCategoricalThresholdConfig: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs{\n\t\t\t\t\tValue: pulumi.Float64(0.3),\n\t\t\t\t},\n\t\t\t\tNumericalThresholdConfig: \u0026vertex.AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs{\n\t\t\t\t\tValue: pulumi.Float64(0.3),\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 = vertex.NewAiFeatureStoreEntityTypeFeature(ctx, \"feature\", \u0026vertex.AiFeatureStoreEntityTypeFeatureArgs{\n\t\t\tName: pulumi.String(\"terraform2\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tEntitytype: entity.ID(),\n\t\t\tValueType: pulumi.String(\"INT64_ARRAY\"),\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.vertex.AiFeatureStore;\nimport com.pulumi.gcp.vertex.AiFeatureStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreOnlineServingConfigArgs;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityType;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityTypeArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityTypeFeature;\nimport com.pulumi.gcp.vertex.AiFeatureStoreEntityTypeFeatureArgs;\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 featurestore = new AiFeatureStore(\"featurestore\", AiFeatureStoreArgs.builder()\n .name(\"terraform2\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .onlineServingConfig(AiFeatureStoreOnlineServingConfigArgs.builder()\n .fixedNodeCount(2)\n .build())\n .build());\n\n var entity = new AiFeatureStoreEntityType(\"entity\", AiFeatureStoreEntityTypeArgs.builder()\n .name(\"terraform2\")\n .labels(Map.of(\"foo\", \"bar\"))\n .featurestore(featurestore.id())\n .monitoringConfig(AiFeatureStoreEntityTypeMonitoringConfigArgs.builder()\n .snapshotAnalysis(AiFeatureStoreEntityTypeMonitoringConfigSnapshotAnalysisArgs.builder()\n .disabled(false)\n .monitoringInterval(\"86400s\")\n .build())\n .categoricalThresholdConfig(AiFeatureStoreEntityTypeMonitoringConfigCategoricalThresholdConfigArgs.builder()\n .value(0.3)\n .build())\n .numericalThresholdConfig(AiFeatureStoreEntityTypeMonitoringConfigNumericalThresholdConfigArgs.builder()\n .value(0.3)\n .build())\n .build())\n .build());\n\n var feature = new AiFeatureStoreEntityTypeFeature(\"feature\", AiFeatureStoreEntityTypeFeatureArgs.builder()\n .name(\"terraform2\")\n .labels(Map.of(\"foo\", \"bar\"))\n .entitytype(entity.id())\n .valueType(\"INT64_ARRAY\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featurestore:\n type: gcp:vertex:AiFeatureStore\n properties:\n name: terraform2\n labels:\n foo: bar\n region: us-central1\n onlineServingConfig:\n fixedNodeCount: 2\n entity:\n type: gcp:vertex:AiFeatureStoreEntityType\n properties:\n name: terraform2\n labels:\n foo: bar\n featurestore: ${featurestore.id}\n monitoringConfig:\n snapshotAnalysis:\n disabled: false\n monitoringInterval: 86400s\n categoricalThresholdConfig:\n value: 0.3\n numericalThresholdConfig:\n value: 0.3\n feature:\n type: gcp:vertex:AiFeatureStoreEntityTypeFeature\n properties:\n name: terraform2\n labels:\n foo: bar\n entitytype: ${entity.id}\n valueType: INT64_ARRAY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeaturestoreEntitytypeFeature can be imported using any of these accepted formats:\n\n* `{{entitytype}}/features/{{name}}`\n\nWhen using the `pulumi import` command, FeaturestoreEntitytypeFeature can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureStoreEntityTypeFeature:AiFeatureStoreEntityTypeFeature default {{entitytype}}/features/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -245731,7 +245731,7 @@ } }, "gcp:vertex/aiIndex:AiIndex": { - "description": "A representation of a collection of database items organized in a way that allows for approximate nearest neighbor (a.k.a ANN) algorithms search.\n\n\nTo get more information about Index, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.indexes/)\n\n## Example Usage\n\n### Vertex Ai Index\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"vertex-ai-index-test\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\n// The sample data comes from the following link:\n// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\nconst data = new gcp.storage.BucketObject(\"data\", {\n name: \"contents/data.json\",\n bucket: bucket.name,\n content: `{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n`,\n});\nconst index = new gcp.vertex.AiIndex(\"index\", {\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n displayName: \"test-index\",\n description: \"index for test\",\n metadata: {\n contentsDeltaUri: pulumi.interpolate`gs://${bucket.name}/contents`,\n config: {\n dimensions: 2,\n approximateNeighborsCount: 150,\n shardSize: \"SHARD_SIZE_SMALL\",\n distanceMeasureType: \"DOT_PRODUCT_DISTANCE\",\n algorithmConfig: {\n treeAhConfig: {\n leafNodeEmbeddingCount: 500,\n leafNodesToSearchPercent: 7,\n },\n },\n },\n },\n indexUpdateMethod: \"BATCH_UPDATE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"vertex-ai-index-test\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\n# The sample data comes from the following link:\n# https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\ndata = gcp.storage.BucketObject(\"data\",\n name=\"contents/data.json\",\n bucket=bucket.name,\n content=\"\"\"{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n\"\"\")\nindex = gcp.vertex.AiIndex(\"index\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n display_name=\"test-index\",\n description=\"index for test\",\n metadata={\n \"contentsDeltaUri\": bucket.name.apply(lambda name: f\"gs://{name}/contents\"),\n \"config\": {\n \"dimensions\": 2,\n \"approximateNeighborsCount\": 150,\n \"shardSize\": \"SHARD_SIZE_SMALL\",\n \"distanceMeasureType\": \"DOT_PRODUCT_DISTANCE\",\n \"algorithmConfig\": {\n \"treeAhConfig\": {\n \"leafNodeEmbeddingCount\": 500,\n \"leafNodesToSearchPercent\": 7,\n },\n },\n },\n },\n index_update_method=\"BATCH_UPDATE\")\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 Name = \"vertex-ai-index-test\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new Gcp.Storage.BucketObject(\"data\", new()\n {\n Name = \"contents/data.json\",\n Bucket = bucket.Name,\n Content = @\"{\"\"id\"\": \"\"42\"\", \"\"embedding\"\": [0.5, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"cat\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"feline\"\"]}]}\n{\"\"id\"\": \"\"43\"\", \"\"embedding\"\": [0.6, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"dog\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"canine\"\"]}]}\n\",\n });\n\n var index = new Gcp.Vertex.AiIndex(\"index\", new()\n {\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n DisplayName = \"test-index\",\n Description = \"index for test\",\n Metadata = new Gcp.Vertex.Inputs.AiIndexMetadataArgs\n {\n ContentsDeltaUri = bucket.Name.Apply(name =\u003e $\"gs://{name}/contents\"),\n Config = new Gcp.Vertex.Inputs.AiIndexMetadataConfigArgs\n {\n Dimensions = 2,\n ApproximateNeighborsCount = 150,\n ShardSize = \"SHARD_SIZE_SMALL\",\n DistanceMeasureType = \"DOT_PRODUCT_DISTANCE\",\n AlgorithmConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigArgs\n {\n TreeAhConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs\n {\n LeafNodeEmbeddingCount = 500,\n LeafNodesToSearchPercent = 7,\n },\n },\n },\n },\n IndexUpdateMethod = \"BATCH_UPDATE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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\tName: pulumi.String(\"vertex-ai-index-test\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\t// The sample data comes from the following link:\n\t\t// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n\t\t_, err = storage.NewBucketObject(ctx, \"data\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"contents/data.json\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tContent: pulumi.String(\"{\\\"id\\\": \\\"42\\\", \\\"embedding\\\": [0.5, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"cat\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"feline\\\"]}]}\\n{\\\"id\\\": \\\"43\\\", \\\"embedding\\\": [0.6, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"dog\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"canine\\\"]}]}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiIndex(ctx, \"index\", \u0026vertex.AiIndexArgs{\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"test-index\"),\n\t\t\tDescription: pulumi.String(\"index for test\"),\n\t\t\tMetadata: \u0026vertex.AiIndexMetadataArgs{\n\t\t\t\tContentsDeltaUri: bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/contents\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tConfig: \u0026vertex.AiIndexMetadataConfigArgs{\n\t\t\t\t\tDimensions: pulumi.Int(2),\n\t\t\t\t\tApproximateNeighborsCount: pulumi.Int(150),\n\t\t\t\t\tShardSize: pulumi.String(\"SHARD_SIZE_SMALL\"),\n\t\t\t\t\tDistanceMeasureType: pulumi.String(\"DOT_PRODUCT_DISTANCE\"),\n\t\t\t\t\tAlgorithmConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigArgs{\n\t\t\t\t\t\tTreeAhConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs{\n\t\t\t\t\t\t\tLeafNodeEmbeddingCount: pulumi.Int(500),\n\t\t\t\t\t\t\tLeafNodesToSearchPercent: pulumi.Int(7),\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\tIndexUpdateMethod: pulumi.String(\"BATCH_UPDATE\"),\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.vertex.AiIndex;\nimport com.pulumi.gcp.vertex.AiIndexArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs;\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 .name(\"vertex-ai-index-test\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new BucketObject(\"data\", BucketObjectArgs.builder()\n .name(\"contents/data.json\")\n .bucket(bucket.name())\n .content(\"\"\"\n{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n \"\"\")\n .build());\n\n var index = new AiIndex(\"index\", AiIndexArgs.builder()\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .displayName(\"test-index\")\n .description(\"index for test\")\n .metadata(AiIndexMetadataArgs.builder()\n .contentsDeltaUri(bucket.name().applyValue(name -\u003e String.format(\"gs://%s/contents\", name)))\n .config(AiIndexMetadataConfigArgs.builder()\n .dimensions(2)\n .approximateNeighborsCount(150)\n .shardSize(\"SHARD_SIZE_SMALL\")\n .distanceMeasureType(\"DOT_PRODUCT_DISTANCE\")\n .algorithmConfig(AiIndexMetadataConfigAlgorithmConfigArgs.builder()\n .treeAhConfig(AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs.builder()\n .leafNodeEmbeddingCount(500)\n .leafNodesToSearchPercent(7)\n .build())\n .build())\n .build())\n .build())\n .indexUpdateMethod(\"BATCH_UPDATE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: vertex-ai-index-test\n location: us-central1\n uniformBucketLevelAccess: true\n # The sample data comes from the following link:\n # https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n data:\n type: gcp:storage:BucketObject\n properties:\n name: contents/data.json\n bucket: ${bucket.name}\n content: |\n {\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n {\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n index:\n type: gcp:vertex:AiIndex\n properties:\n labels:\n foo: bar\n region: us-central1\n displayName: test-index\n description: index for test\n metadata:\n contentsDeltaUri: gs://${bucket.name}/contents\n config:\n dimensions: 2\n approximateNeighborsCount: 150\n shardSize: SHARD_SIZE_SMALL\n distanceMeasureType: DOT_PRODUCT_DISTANCE\n algorithmConfig:\n treeAhConfig:\n leafNodeEmbeddingCount: 500\n leafNodesToSearchPercent: 7\n indexUpdateMethod: BATCH_UPDATE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Index Streaming\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"vertex-ai-index-test\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\n// The sample data comes from the following link:\n// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\nconst data = new gcp.storage.BucketObject(\"data\", {\n name: \"contents/data.json\",\n bucket: bucket.name,\n content: `{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n`,\n});\nconst index = new gcp.vertex.AiIndex(\"index\", {\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n displayName: \"test-index\",\n description: \"index for test\",\n metadata: {\n contentsDeltaUri: pulumi.interpolate`gs://${bucket.name}/contents`,\n config: {\n dimensions: 2,\n shardSize: \"SHARD_SIZE_LARGE\",\n distanceMeasureType: \"COSINE_DISTANCE\",\n featureNormType: \"UNIT_L2_NORM\",\n algorithmConfig: {\n bruteForceConfig: {},\n },\n },\n },\n indexUpdateMethod: \"STREAM_UPDATE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"vertex-ai-index-test\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\n# The sample data comes from the following link:\n# https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\ndata = gcp.storage.BucketObject(\"data\",\n name=\"contents/data.json\",\n bucket=bucket.name,\n content=\"\"\"{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n\"\"\")\nindex = gcp.vertex.AiIndex(\"index\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n display_name=\"test-index\",\n description=\"index for test\",\n metadata={\n \"contentsDeltaUri\": bucket.name.apply(lambda name: f\"gs://{name}/contents\"),\n \"config\": {\n \"dimensions\": 2,\n \"shardSize\": \"SHARD_SIZE_LARGE\",\n \"distanceMeasureType\": \"COSINE_DISTANCE\",\n \"featureNormType\": \"UNIT_L2_NORM\",\n \"algorithmConfig\": {\n \"bruteForceConfig\": {},\n },\n },\n },\n index_update_method=\"STREAM_UPDATE\")\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 Name = \"vertex-ai-index-test\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new Gcp.Storage.BucketObject(\"data\", new()\n {\n Name = \"contents/data.json\",\n Bucket = bucket.Name,\n Content = @\"{\"\"id\"\": \"\"42\"\", \"\"embedding\"\": [0.5, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"cat\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"feline\"\"]}]}\n{\"\"id\"\": \"\"43\"\", \"\"embedding\"\": [0.6, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"dog\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"canine\"\"]}]}\n\",\n });\n\n var index = new Gcp.Vertex.AiIndex(\"index\", new()\n {\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n DisplayName = \"test-index\",\n Description = \"index for test\",\n Metadata = new Gcp.Vertex.Inputs.AiIndexMetadataArgs\n {\n ContentsDeltaUri = bucket.Name.Apply(name =\u003e $\"gs://{name}/contents\"),\n Config = new Gcp.Vertex.Inputs.AiIndexMetadataConfigArgs\n {\n Dimensions = 2,\n ShardSize = \"SHARD_SIZE_LARGE\",\n DistanceMeasureType = \"COSINE_DISTANCE\",\n FeatureNormType = \"UNIT_L2_NORM\",\n AlgorithmConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigArgs\n {\n BruteForceConfig = null,\n },\n },\n },\n IndexUpdateMethod = \"STREAM_UPDATE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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\tName: pulumi.String(\"vertex-ai-index-test\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\t// The sample data comes from the following link:\n\t\t// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n\t\t_, err = storage.NewBucketObject(ctx, \"data\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"contents/data.json\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tContent: pulumi.String(\"{\\\"id\\\": \\\"42\\\", \\\"embedding\\\": [0.5, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"cat\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"feline\\\"]}]}\\n{\\\"id\\\": \\\"43\\\", \\\"embedding\\\": [0.6, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"dog\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"canine\\\"]}]}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiIndex(ctx, \"index\", \u0026vertex.AiIndexArgs{\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"test-index\"),\n\t\t\tDescription: pulumi.String(\"index for test\"),\n\t\t\tMetadata: \u0026vertex.AiIndexMetadataArgs{\n\t\t\t\tContentsDeltaUri: bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/contents\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tConfig: \u0026vertex.AiIndexMetadataConfigArgs{\n\t\t\t\t\tDimensions: pulumi.Int(2),\n\t\t\t\t\tShardSize: pulumi.String(\"SHARD_SIZE_LARGE\"),\n\t\t\t\t\tDistanceMeasureType: pulumi.String(\"COSINE_DISTANCE\"),\n\t\t\t\t\tFeatureNormType: pulumi.String(\"UNIT_L2_NORM\"),\n\t\t\t\t\tAlgorithmConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigArgs{\n\t\t\t\t\t\tBruteForceConfig: nil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tIndexUpdateMethod: pulumi.String(\"STREAM_UPDATE\"),\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.vertex.AiIndex;\nimport com.pulumi.gcp.vertex.AiIndexArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigBruteForceConfigArgs;\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 .name(\"vertex-ai-index-test\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new BucketObject(\"data\", BucketObjectArgs.builder()\n .name(\"contents/data.json\")\n .bucket(bucket.name())\n .content(\"\"\"\n{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n \"\"\")\n .build());\n\n var index = new AiIndex(\"index\", AiIndexArgs.builder()\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .displayName(\"test-index\")\n .description(\"index for test\")\n .metadata(AiIndexMetadataArgs.builder()\n .contentsDeltaUri(bucket.name().applyValue(name -\u003e String.format(\"gs://%s/contents\", name)))\n .config(AiIndexMetadataConfigArgs.builder()\n .dimensions(2)\n .shardSize(\"SHARD_SIZE_LARGE\")\n .distanceMeasureType(\"COSINE_DISTANCE\")\n .featureNormType(\"UNIT_L2_NORM\")\n .algorithmConfig(AiIndexMetadataConfigAlgorithmConfigArgs.builder()\n .bruteForceConfig()\n .build())\n .build())\n .build())\n .indexUpdateMethod(\"STREAM_UPDATE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: vertex-ai-index-test\n location: us-central1\n uniformBucketLevelAccess: true\n # The sample data comes from the following link:\n # https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n data:\n type: gcp:storage:BucketObject\n properties:\n name: contents/data.json\n bucket: ${bucket.name}\n content: |\n {\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n {\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n index:\n type: gcp:vertex:AiIndex\n properties:\n labels:\n foo: bar\n region: us-central1\n displayName: test-index\n description: index for test\n metadata:\n contentsDeltaUri: gs://${bucket.name}/contents\n config:\n dimensions: 2\n shardSize: SHARD_SIZE_LARGE\n distanceMeasureType: COSINE_DISTANCE\n featureNormType: UNIT_L2_NORM\n algorithmConfig:\n bruteForceConfig: {}\n indexUpdateMethod: STREAM_UPDATE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIndex can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/indexes/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Index can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiIndex:AiIndex default projects/{{project}}/locations/{{region}}/indexes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndex:AiIndex default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndex:AiIndex default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndex:AiIndex default {{name}}\n```\n\n", + "description": "A representation of a collection of database items organized in a way that allows for approximate nearest neighbor (a.k.a ANN) algorithms search.\n\n\nTo get more information about Index, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.indexes/)\n\n## Example Usage\n\n### Vertex Ai Index\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"vertex-ai-index-test\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\n// The sample data comes from the following link:\n// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\nconst data = new gcp.storage.BucketObject(\"data\", {\n name: \"contents/data.json\",\n bucket: bucket.name,\n content: `{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n`,\n});\nconst index = new gcp.vertex.AiIndex(\"index\", {\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n displayName: \"test-index\",\n description: \"index for test\",\n metadata: {\n contentsDeltaUri: pulumi.interpolate`gs://${bucket.name}/contents`,\n config: {\n dimensions: 2,\n approximateNeighborsCount: 150,\n shardSize: \"SHARD_SIZE_SMALL\",\n distanceMeasureType: \"DOT_PRODUCT_DISTANCE\",\n algorithmConfig: {\n treeAhConfig: {\n leafNodeEmbeddingCount: 500,\n leafNodesToSearchPercent: 7,\n },\n },\n },\n },\n indexUpdateMethod: \"BATCH_UPDATE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"vertex-ai-index-test\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\n# The sample data comes from the following link:\n# https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\ndata = gcp.storage.BucketObject(\"data\",\n name=\"contents/data.json\",\n bucket=bucket.name,\n content=\"\"\"{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n\"\"\")\nindex = gcp.vertex.AiIndex(\"index\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n display_name=\"test-index\",\n description=\"index for test\",\n metadata={\n \"contents_delta_uri\": bucket.name.apply(lambda name: f\"gs://{name}/contents\"),\n \"config\": {\n \"dimensions\": 2,\n \"approximate_neighbors_count\": 150,\n \"shard_size\": \"SHARD_SIZE_SMALL\",\n \"distance_measure_type\": \"DOT_PRODUCT_DISTANCE\",\n \"algorithm_config\": {\n \"tree_ah_config\": {\n \"leaf_node_embedding_count\": 500,\n \"leaf_nodes_to_search_percent\": 7,\n },\n },\n },\n },\n index_update_method=\"BATCH_UPDATE\")\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 Name = \"vertex-ai-index-test\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new Gcp.Storage.BucketObject(\"data\", new()\n {\n Name = \"contents/data.json\",\n Bucket = bucket.Name,\n Content = @\"{\"\"id\"\": \"\"42\"\", \"\"embedding\"\": [0.5, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"cat\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"feline\"\"]}]}\n{\"\"id\"\": \"\"43\"\", \"\"embedding\"\": [0.6, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"dog\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"canine\"\"]}]}\n\",\n });\n\n var index = new Gcp.Vertex.AiIndex(\"index\", new()\n {\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n DisplayName = \"test-index\",\n Description = \"index for test\",\n Metadata = new Gcp.Vertex.Inputs.AiIndexMetadataArgs\n {\n ContentsDeltaUri = bucket.Name.Apply(name =\u003e $\"gs://{name}/contents\"),\n Config = new Gcp.Vertex.Inputs.AiIndexMetadataConfigArgs\n {\n Dimensions = 2,\n ApproximateNeighborsCount = 150,\n ShardSize = \"SHARD_SIZE_SMALL\",\n DistanceMeasureType = \"DOT_PRODUCT_DISTANCE\",\n AlgorithmConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigArgs\n {\n TreeAhConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs\n {\n LeafNodeEmbeddingCount = 500,\n LeafNodesToSearchPercent = 7,\n },\n },\n },\n },\n IndexUpdateMethod = \"BATCH_UPDATE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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\tName: pulumi.String(\"vertex-ai-index-test\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\t// The sample data comes from the following link:\n\t\t// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n\t\t_, err = storage.NewBucketObject(ctx, \"data\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"contents/data.json\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tContent: pulumi.String(\"{\\\"id\\\": \\\"42\\\", \\\"embedding\\\": [0.5, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"cat\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"feline\\\"]}]}\\n{\\\"id\\\": \\\"43\\\", \\\"embedding\\\": [0.6, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"dog\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"canine\\\"]}]}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiIndex(ctx, \"index\", \u0026vertex.AiIndexArgs{\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"test-index\"),\n\t\t\tDescription: pulumi.String(\"index for test\"),\n\t\t\tMetadata: \u0026vertex.AiIndexMetadataArgs{\n\t\t\t\tContentsDeltaUri: bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/contents\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tConfig: \u0026vertex.AiIndexMetadataConfigArgs{\n\t\t\t\t\tDimensions: pulumi.Int(2),\n\t\t\t\t\tApproximateNeighborsCount: pulumi.Int(150),\n\t\t\t\t\tShardSize: pulumi.String(\"SHARD_SIZE_SMALL\"),\n\t\t\t\t\tDistanceMeasureType: pulumi.String(\"DOT_PRODUCT_DISTANCE\"),\n\t\t\t\t\tAlgorithmConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigArgs{\n\t\t\t\t\t\tTreeAhConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs{\n\t\t\t\t\t\t\tLeafNodeEmbeddingCount: pulumi.Int(500),\n\t\t\t\t\t\t\tLeafNodesToSearchPercent: pulumi.Int(7),\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\tIndexUpdateMethod: pulumi.String(\"BATCH_UPDATE\"),\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.vertex.AiIndex;\nimport com.pulumi.gcp.vertex.AiIndexArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs;\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 .name(\"vertex-ai-index-test\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new BucketObject(\"data\", BucketObjectArgs.builder()\n .name(\"contents/data.json\")\n .bucket(bucket.name())\n .content(\"\"\"\n{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n \"\"\")\n .build());\n\n var index = new AiIndex(\"index\", AiIndexArgs.builder()\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .displayName(\"test-index\")\n .description(\"index for test\")\n .metadata(AiIndexMetadataArgs.builder()\n .contentsDeltaUri(bucket.name().applyValue(name -\u003e String.format(\"gs://%s/contents\", name)))\n .config(AiIndexMetadataConfigArgs.builder()\n .dimensions(2)\n .approximateNeighborsCount(150)\n .shardSize(\"SHARD_SIZE_SMALL\")\n .distanceMeasureType(\"DOT_PRODUCT_DISTANCE\")\n .algorithmConfig(AiIndexMetadataConfigAlgorithmConfigArgs.builder()\n .treeAhConfig(AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs.builder()\n .leafNodeEmbeddingCount(500)\n .leafNodesToSearchPercent(7)\n .build())\n .build())\n .build())\n .build())\n .indexUpdateMethod(\"BATCH_UPDATE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: vertex-ai-index-test\n location: us-central1\n uniformBucketLevelAccess: true\n # The sample data comes from the following link:\n # https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n data:\n type: gcp:storage:BucketObject\n properties:\n name: contents/data.json\n bucket: ${bucket.name}\n content: |\n {\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n {\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n index:\n type: gcp:vertex:AiIndex\n properties:\n labels:\n foo: bar\n region: us-central1\n displayName: test-index\n description: index for test\n metadata:\n contentsDeltaUri: gs://${bucket.name}/contents\n config:\n dimensions: 2\n approximateNeighborsCount: 150\n shardSize: SHARD_SIZE_SMALL\n distanceMeasureType: DOT_PRODUCT_DISTANCE\n algorithmConfig:\n treeAhConfig:\n leafNodeEmbeddingCount: 500\n leafNodesToSearchPercent: 7\n indexUpdateMethod: BATCH_UPDATE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Index Streaming\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"vertex-ai-index-test\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\n// The sample data comes from the following link:\n// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\nconst data = new gcp.storage.BucketObject(\"data\", {\n name: \"contents/data.json\",\n bucket: bucket.name,\n content: `{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n`,\n});\nconst index = new gcp.vertex.AiIndex(\"index\", {\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n displayName: \"test-index\",\n description: \"index for test\",\n metadata: {\n contentsDeltaUri: pulumi.interpolate`gs://${bucket.name}/contents`,\n config: {\n dimensions: 2,\n shardSize: \"SHARD_SIZE_LARGE\",\n distanceMeasureType: \"COSINE_DISTANCE\",\n featureNormType: \"UNIT_L2_NORM\",\n algorithmConfig: {\n bruteForceConfig: {},\n },\n },\n },\n indexUpdateMethod: \"STREAM_UPDATE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"vertex-ai-index-test\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\n# The sample data comes from the following link:\n# https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\ndata = gcp.storage.BucketObject(\"data\",\n name=\"contents/data.json\",\n bucket=bucket.name,\n content=\"\"\"{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n\"\"\")\nindex = gcp.vertex.AiIndex(\"index\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n display_name=\"test-index\",\n description=\"index for test\",\n metadata={\n \"contents_delta_uri\": bucket.name.apply(lambda name: f\"gs://{name}/contents\"),\n \"config\": {\n \"dimensions\": 2,\n \"shard_size\": \"SHARD_SIZE_LARGE\",\n \"distance_measure_type\": \"COSINE_DISTANCE\",\n \"feature_norm_type\": \"UNIT_L2_NORM\",\n \"algorithm_config\": {\n \"brute_force_config\": {},\n },\n },\n },\n index_update_method=\"STREAM_UPDATE\")\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 Name = \"vertex-ai-index-test\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new Gcp.Storage.BucketObject(\"data\", new()\n {\n Name = \"contents/data.json\",\n Bucket = bucket.Name,\n Content = @\"{\"\"id\"\": \"\"42\"\", \"\"embedding\"\": [0.5, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"cat\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"feline\"\"]}]}\n{\"\"id\"\": \"\"43\"\", \"\"embedding\"\": [0.6, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"dog\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"canine\"\"]}]}\n\",\n });\n\n var index = new Gcp.Vertex.AiIndex(\"index\", new()\n {\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n DisplayName = \"test-index\",\n Description = \"index for test\",\n Metadata = new Gcp.Vertex.Inputs.AiIndexMetadataArgs\n {\n ContentsDeltaUri = bucket.Name.Apply(name =\u003e $\"gs://{name}/contents\"),\n Config = new Gcp.Vertex.Inputs.AiIndexMetadataConfigArgs\n {\n Dimensions = 2,\n ShardSize = \"SHARD_SIZE_LARGE\",\n DistanceMeasureType = \"COSINE_DISTANCE\",\n FeatureNormType = \"UNIT_L2_NORM\",\n AlgorithmConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigArgs\n {\n BruteForceConfig = null,\n },\n },\n },\n IndexUpdateMethod = \"STREAM_UPDATE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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\tName: pulumi.String(\"vertex-ai-index-test\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\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\t// The sample data comes from the following link:\n\t\t// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n\t\t_, err = storage.NewBucketObject(ctx, \"data\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"contents/data.json\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tContent: pulumi.String(\"{\\\"id\\\": \\\"42\\\", \\\"embedding\\\": [0.5, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"cat\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"feline\\\"]}]}\\n{\\\"id\\\": \\\"43\\\", \\\"embedding\\\": [0.6, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"dog\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"canine\\\"]}]}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiIndex(ctx, \"index\", \u0026vertex.AiIndexArgs{\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"test-index\"),\n\t\t\tDescription: pulumi.String(\"index for test\"),\n\t\t\tMetadata: \u0026vertex.AiIndexMetadataArgs{\n\t\t\t\tContentsDeltaUri: bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/contents\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tConfig: \u0026vertex.AiIndexMetadataConfigArgs{\n\t\t\t\t\tDimensions: pulumi.Int(2),\n\t\t\t\t\tShardSize: pulumi.String(\"SHARD_SIZE_LARGE\"),\n\t\t\t\t\tDistanceMeasureType: pulumi.String(\"COSINE_DISTANCE\"),\n\t\t\t\t\tFeatureNormType: pulumi.String(\"UNIT_L2_NORM\"),\n\t\t\t\t\tAlgorithmConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigArgs{\n\t\t\t\t\t\tBruteForceConfig: nil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tIndexUpdateMethod: pulumi.String(\"STREAM_UPDATE\"),\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.vertex.AiIndex;\nimport com.pulumi.gcp.vertex.AiIndexArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigBruteForceConfigArgs;\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 .name(\"vertex-ai-index-test\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new BucketObject(\"data\", BucketObjectArgs.builder()\n .name(\"contents/data.json\")\n .bucket(bucket.name())\n .content(\"\"\"\n{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n \"\"\")\n .build());\n\n var index = new AiIndex(\"index\", AiIndexArgs.builder()\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .displayName(\"test-index\")\n .description(\"index for test\")\n .metadata(AiIndexMetadataArgs.builder()\n .contentsDeltaUri(bucket.name().applyValue(name -\u003e String.format(\"gs://%s/contents\", name)))\n .config(AiIndexMetadataConfigArgs.builder()\n .dimensions(2)\n .shardSize(\"SHARD_SIZE_LARGE\")\n .distanceMeasureType(\"COSINE_DISTANCE\")\n .featureNormType(\"UNIT_L2_NORM\")\n .algorithmConfig(AiIndexMetadataConfigAlgorithmConfigArgs.builder()\n .bruteForceConfig()\n .build())\n .build())\n .build())\n .indexUpdateMethod(\"STREAM_UPDATE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: vertex-ai-index-test\n location: us-central1\n uniformBucketLevelAccess: true\n # The sample data comes from the following link:\n # https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n data:\n type: gcp:storage:BucketObject\n properties:\n name: contents/data.json\n bucket: ${bucket.name}\n content: |\n {\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n {\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n index:\n type: gcp:vertex:AiIndex\n properties:\n labels:\n foo: bar\n region: us-central1\n displayName: test-index\n description: index for test\n metadata:\n contentsDeltaUri: gs://${bucket.name}/contents\n config:\n dimensions: 2\n shardSize: SHARD_SIZE_LARGE\n distanceMeasureType: COSINE_DISTANCE\n featureNormType: UNIT_L2_NORM\n algorithmConfig:\n bruteForceConfig: {}\n indexUpdateMethod: STREAM_UPDATE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIndex can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/indexes/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Index can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiIndex:AiIndex default projects/{{project}}/locations/{{region}}/indexes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndex:AiIndex default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndex:AiIndex default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndex:AiIndex default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -245959,7 +245959,7 @@ } }, "gcp:vertex/aiIndexEndpoint:AiIndexEndpoint": { - "description": "An endpoint indexes are deployed into. An index endpoint can have multiple deployed indexes.\n\n\nTo get more information about IndexEndpoint, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.indexEndpoints/)\n\n## Example Usage\n\n### Vertex Ai Index Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vertexNetwork = new gcp.compute.Network(\"vertex_network\", {name: \"network-name\"});\nconst vertexRange = new gcp.compute.GlobalAddress(\"vertex_range\", {\n name: \"address-name\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 24,\n network: vertexNetwork.id,\n});\nconst vertexVpcConnection = new gcp.servicenetworking.Connection(\"vertex_vpc_connection\", {\n network: vertexNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [vertexRange.name],\n});\nconst project = gcp.organizations.getProject({});\nconst indexEndpoint = new gcp.vertex.AiIndexEndpoint(\"index_endpoint\", {\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n network: pulumi.all([project, vertexNetwork.name]).apply(([project, name]) =\u003e `projects/${project.number}/global/networks/${name}`),\n}, {\n dependsOn: [vertexVpcConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvertex_network = gcp.compute.Network(\"vertex_network\", name=\"network-name\")\nvertex_range = gcp.compute.GlobalAddress(\"vertex_range\",\n name=\"address-name\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=24,\n network=vertex_network.id)\nvertex_vpc_connection = gcp.servicenetworking.Connection(\"vertex_vpc_connection\",\n network=vertex_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[vertex_range.name])\nproject = gcp.organizations.get_project()\nindex_endpoint = gcp.vertex.AiIndexEndpoint(\"index_endpoint\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n network=vertex_network.name.apply(lambda name: f\"projects/{project.number}/global/networks/{name}\"),\n opts = pulumi.ResourceOptions(depends_on=[vertex_vpc_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 vertexNetwork = new Gcp.Compute.Network(\"vertex_network\", new()\n {\n Name = \"network-name\",\n });\n\n var vertexRange = new Gcp.Compute.GlobalAddress(\"vertex_range\", new()\n {\n Name = \"address-name\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 24,\n Network = vertexNetwork.Id,\n });\n\n var vertexVpcConnection = new Gcp.ServiceNetworking.Connection(\"vertex_vpc_connection\", new()\n {\n Network = vertexNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n vertexRange.Name,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var indexEndpoint = new Gcp.Vertex.AiIndexEndpoint(\"index_endpoint\", new()\n {\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Network = Output.Tuple(project, vertexNetwork.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/global/networks/{name}\";\n }),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexVpcConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvertexNetwork, err := compute.NewNetwork(ctx, \"vertex_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexRange, err := compute.NewGlobalAddress(ctx, \"vertex_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address-name\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(24),\n\t\t\tNetwork: vertexNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexVpcConnection, err := servicenetworking.NewConnection(ctx, \"vertex_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: vertexNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tvertexRange.Name,\n\t\t\t},\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\t_, err = vertex.NewAiIndexEndpoint(ctx, \"index_endpoint\", \u0026vertex.AiIndexEndpointArgs{\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tNetwork: vertexNetwork.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/global/networks/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexVpcConnection,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiIndexEndpoint;\nimport com.pulumi.gcp.vertex.AiIndexEndpointArgs;\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 vertexNetwork = new Network(\"vertexNetwork\", NetworkArgs.builder()\n .name(\"network-name\")\n .build());\n\n var vertexRange = new GlobalAddress(\"vertexRange\", GlobalAddressArgs.builder()\n .name(\"address-name\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(24)\n .network(vertexNetwork.id())\n .build());\n\n var vertexVpcConnection = new Connection(\"vertexVpcConnection\", ConnectionArgs.builder()\n .network(vertexNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(vertexRange.name())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var indexEndpoint = new AiIndexEndpoint(\"indexEndpoint\", AiIndexEndpointArgs.builder()\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .network(vertexNetwork.name().applyValue(name -\u003e String.format(\"projects/%s/global/networks/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(vertexVpcConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n indexEndpoint:\n type: gcp:vertex:AiIndexEndpoint\n name: index_endpoint\n properties:\n displayName: sample-endpoint\n description: A sample vertex endpoint\n region: us-central1\n labels:\n label-one: value-one\n network: projects/${project.number}/global/networks/${vertexNetwork.name}\n options:\n dependson:\n - ${vertexVpcConnection}\n vertexVpcConnection:\n type: gcp:servicenetworking:Connection\n name: vertex_vpc_connection\n properties:\n network: ${vertexNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${vertexRange.name}\n vertexRange:\n type: gcp:compute:GlobalAddress\n name: vertex_range\n properties:\n name: address-name\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 24\n network: ${vertexNetwork.id}\n vertexNetwork:\n type: gcp:compute:Network\n name: vertex_network\n properties:\n name: network-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Index Endpoint With Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst indexEndpoint = new gcp.vertex.AiIndexEndpoint(\"index_endpoint\", {\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n privateServiceConnectConfig: {\n enablePrivateServiceConnect: true,\n projectAllowlists: [project.then(project =\u003e project.number)],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nindex_endpoint = gcp.vertex.AiIndexEndpoint(\"index_endpoint\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n private_service_connect_config={\n \"enablePrivateServiceConnect\": True,\n \"projectAllowlists\": [project.number],\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 indexEndpoint = new Gcp.Vertex.AiIndexEndpoint(\"index_endpoint\", new()\n {\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n PrivateServiceConnectConfig = new Gcp.Vertex.Inputs.AiIndexEndpointPrivateServiceConnectConfigArgs\n {\n EnablePrivateServiceConnect = true,\n ProjectAllowlists = new[]\n {\n project.Apply(getProjectResult =\u003e getProjectResult.Number),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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\t_, err = vertex.NewAiIndexEndpoint(ctx, \"index_endpoint\", \u0026vertex.AiIndexEndpointArgs{\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tPrivateServiceConnectConfig: \u0026vertex.AiIndexEndpointPrivateServiceConnectConfigArgs{\n\t\t\t\tEnablePrivateServiceConnect: pulumi.Bool(true),\n\t\t\t\tProjectAllowlists: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(project.Number),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiIndexEndpoint;\nimport com.pulumi.gcp.vertex.AiIndexEndpointArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexEndpointPrivateServiceConnectConfigArgs;\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 indexEndpoint = new AiIndexEndpoint(\"indexEndpoint\", AiIndexEndpointArgs.builder()\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .privateServiceConnectConfig(AiIndexEndpointPrivateServiceConnectConfigArgs.builder()\n .enablePrivateServiceConnect(true)\n .projectAllowlists(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n indexEndpoint:\n type: gcp:vertex:AiIndexEndpoint\n name: index_endpoint\n properties:\n displayName: sample-endpoint\n description: A sample vertex endpoint\n region: us-central1\n labels:\n label-one: value-one\n privateServiceConnectConfig:\n enablePrivateServiceConnect: true\n projectAllowlists:\n - ${project.number}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Index Endpoint With Public Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst indexEndpoint = new gcp.vertex.AiIndexEndpoint(\"index_endpoint\", {\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint with an public endpoint\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n publicEndpointEnabled: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nindex_endpoint = gcp.vertex.AiIndexEndpoint(\"index_endpoint\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint with an public endpoint\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n public_endpoint_enabled=True)\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 indexEndpoint = new Gcp.Vertex.AiIndexEndpoint(\"index_endpoint\", new()\n {\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint with an public endpoint\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n PublicEndpointEnabled = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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 := vertex.NewAiIndexEndpoint(ctx, \"index_endpoint\", \u0026vertex.AiIndexEndpointArgs{\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint with an public endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tPublicEndpointEnabled: pulumi.Bool(true),\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.vertex.AiIndexEndpoint;\nimport com.pulumi.gcp.vertex.AiIndexEndpointArgs;\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 indexEndpoint = new AiIndexEndpoint(\"indexEndpoint\", AiIndexEndpointArgs.builder()\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint with an public endpoint\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .publicEndpointEnabled(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n indexEndpoint:\n type: gcp:vertex:AiIndexEndpoint\n name: index_endpoint\n properties:\n displayName: sample-endpoint\n description: A sample vertex endpoint with an public endpoint\n region: us-central1\n labels:\n label-one: value-one\n publicEndpointEnabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIndexEndpoint can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/indexEndpoints/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, IndexEndpoint can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpoint:AiIndexEndpoint default projects/{{project}}/locations/{{region}}/indexEndpoints/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpoint:AiIndexEndpoint default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpoint:AiIndexEndpoint default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpoint:AiIndexEndpoint default {{name}}\n```\n\n", + "description": "An endpoint indexes are deployed into. An index endpoint can have multiple deployed indexes.\n\n\nTo get more information about IndexEndpoint, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.indexEndpoints/)\n\n## Example Usage\n\n### Vertex Ai Index Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vertexNetwork = new gcp.compute.Network(\"vertex_network\", {name: \"network-name\"});\nconst vertexRange = new gcp.compute.GlobalAddress(\"vertex_range\", {\n name: \"address-name\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 24,\n network: vertexNetwork.id,\n});\nconst vertexVpcConnection = new gcp.servicenetworking.Connection(\"vertex_vpc_connection\", {\n network: vertexNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [vertexRange.name],\n});\nconst project = gcp.organizations.getProject({});\nconst indexEndpoint = new gcp.vertex.AiIndexEndpoint(\"index_endpoint\", {\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n network: pulumi.all([project, vertexNetwork.name]).apply(([project, name]) =\u003e `projects/${project.number}/global/networks/${name}`),\n}, {\n dependsOn: [vertexVpcConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvertex_network = gcp.compute.Network(\"vertex_network\", name=\"network-name\")\nvertex_range = gcp.compute.GlobalAddress(\"vertex_range\",\n name=\"address-name\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=24,\n network=vertex_network.id)\nvertex_vpc_connection = gcp.servicenetworking.Connection(\"vertex_vpc_connection\",\n network=vertex_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[vertex_range.name])\nproject = gcp.organizations.get_project()\nindex_endpoint = gcp.vertex.AiIndexEndpoint(\"index_endpoint\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n network=vertex_network.name.apply(lambda name: f\"projects/{project.number}/global/networks/{name}\"),\n opts = pulumi.ResourceOptions(depends_on=[vertex_vpc_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 vertexNetwork = new Gcp.Compute.Network(\"vertex_network\", new()\n {\n Name = \"network-name\",\n });\n\n var vertexRange = new Gcp.Compute.GlobalAddress(\"vertex_range\", new()\n {\n Name = \"address-name\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 24,\n Network = vertexNetwork.Id,\n });\n\n var vertexVpcConnection = new Gcp.ServiceNetworking.Connection(\"vertex_vpc_connection\", new()\n {\n Network = vertexNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n vertexRange.Name,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var indexEndpoint = new Gcp.Vertex.AiIndexEndpoint(\"index_endpoint\", new()\n {\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Network = Output.Tuple(project, vertexNetwork.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/global/networks/{name}\";\n }),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexVpcConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvertexNetwork, err := compute.NewNetwork(ctx, \"vertex_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexRange, err := compute.NewGlobalAddress(ctx, \"vertex_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address-name\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(24),\n\t\t\tNetwork: vertexNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexVpcConnection, err := servicenetworking.NewConnection(ctx, \"vertex_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: vertexNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tvertexRange.Name,\n\t\t\t},\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\t_, err = vertex.NewAiIndexEndpoint(ctx, \"index_endpoint\", \u0026vertex.AiIndexEndpointArgs{\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tNetwork: vertexNetwork.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/global/networks/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexVpcConnection,\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiIndexEndpoint;\nimport com.pulumi.gcp.vertex.AiIndexEndpointArgs;\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 vertexNetwork = new Network(\"vertexNetwork\", NetworkArgs.builder()\n .name(\"network-name\")\n .build());\n\n var vertexRange = new GlobalAddress(\"vertexRange\", GlobalAddressArgs.builder()\n .name(\"address-name\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(24)\n .network(vertexNetwork.id())\n .build());\n\n var vertexVpcConnection = new Connection(\"vertexVpcConnection\", ConnectionArgs.builder()\n .network(vertexNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(vertexRange.name())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var indexEndpoint = new AiIndexEndpoint(\"indexEndpoint\", AiIndexEndpointArgs.builder()\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .network(vertexNetwork.name().applyValue(name -\u003e String.format(\"projects/%s/global/networks/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(vertexVpcConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n indexEndpoint:\n type: gcp:vertex:AiIndexEndpoint\n name: index_endpoint\n properties:\n displayName: sample-endpoint\n description: A sample vertex endpoint\n region: us-central1\n labels:\n label-one: value-one\n network: projects/${project.number}/global/networks/${vertexNetwork.name}\n options:\n dependson:\n - ${vertexVpcConnection}\n vertexVpcConnection:\n type: gcp:servicenetworking:Connection\n name: vertex_vpc_connection\n properties:\n network: ${vertexNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${vertexRange.name}\n vertexRange:\n type: gcp:compute:GlobalAddress\n name: vertex_range\n properties:\n name: address-name\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 24\n network: ${vertexNetwork.id}\n vertexNetwork:\n type: gcp:compute:Network\n name: vertex_network\n properties:\n name: network-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Index Endpoint With Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst indexEndpoint = new gcp.vertex.AiIndexEndpoint(\"index_endpoint\", {\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n privateServiceConnectConfig: {\n enablePrivateServiceConnect: true,\n projectAllowlists: [project.then(project =\u003e project.number)],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nindex_endpoint = gcp.vertex.AiIndexEndpoint(\"index_endpoint\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n private_service_connect_config={\n \"enable_private_service_connect\": True,\n \"project_allowlists\": [project.number],\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 indexEndpoint = new Gcp.Vertex.AiIndexEndpoint(\"index_endpoint\", new()\n {\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n PrivateServiceConnectConfig = new Gcp.Vertex.Inputs.AiIndexEndpointPrivateServiceConnectConfigArgs\n {\n EnablePrivateServiceConnect = true,\n ProjectAllowlists = new[]\n {\n project.Apply(getProjectResult =\u003e getProjectResult.Number),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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\t_, err = vertex.NewAiIndexEndpoint(ctx, \"index_endpoint\", \u0026vertex.AiIndexEndpointArgs{\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tPrivateServiceConnectConfig: \u0026vertex.AiIndexEndpointPrivateServiceConnectConfigArgs{\n\t\t\t\tEnablePrivateServiceConnect: pulumi.Bool(true),\n\t\t\t\tProjectAllowlists: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(project.Number),\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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiIndexEndpoint;\nimport com.pulumi.gcp.vertex.AiIndexEndpointArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexEndpointPrivateServiceConnectConfigArgs;\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 indexEndpoint = new AiIndexEndpoint(\"indexEndpoint\", AiIndexEndpointArgs.builder()\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .privateServiceConnectConfig(AiIndexEndpointPrivateServiceConnectConfigArgs.builder()\n .enablePrivateServiceConnect(true)\n .projectAllowlists(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n indexEndpoint:\n type: gcp:vertex:AiIndexEndpoint\n name: index_endpoint\n properties:\n displayName: sample-endpoint\n description: A sample vertex endpoint\n region: us-central1\n labels:\n label-one: value-one\n privateServiceConnectConfig:\n enablePrivateServiceConnect: true\n projectAllowlists:\n - ${project.number}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Index Endpoint With Public Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst indexEndpoint = new gcp.vertex.AiIndexEndpoint(\"index_endpoint\", {\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint with an public endpoint\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n publicEndpointEnabled: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nindex_endpoint = gcp.vertex.AiIndexEndpoint(\"index_endpoint\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint with an public endpoint\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n public_endpoint_enabled=True)\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 indexEndpoint = new Gcp.Vertex.AiIndexEndpoint(\"index_endpoint\", new()\n {\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint with an public endpoint\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n PublicEndpointEnabled = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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 := vertex.NewAiIndexEndpoint(ctx, \"index_endpoint\", \u0026vertex.AiIndexEndpointArgs{\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint with an public endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tPublicEndpointEnabled: pulumi.Bool(true),\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.vertex.AiIndexEndpoint;\nimport com.pulumi.gcp.vertex.AiIndexEndpointArgs;\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 indexEndpoint = new AiIndexEndpoint(\"indexEndpoint\", AiIndexEndpointArgs.builder()\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint with an public endpoint\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .publicEndpointEnabled(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n indexEndpoint:\n type: gcp:vertex:AiIndexEndpoint\n name: index_endpoint\n properties:\n displayName: sample-endpoint\n description: A sample vertex endpoint with an public endpoint\n region: us-central1\n labels:\n label-one: value-one\n publicEndpointEnabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIndexEndpoint can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/indexEndpoints/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, IndexEndpoint can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpoint:AiIndexEndpoint default projects/{{project}}/locations/{{region}}/indexEndpoints/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpoint:AiIndexEndpoint default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpoint:AiIndexEndpoint default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpoint:AiIndexEndpoint default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -246295,7 +246295,7 @@ } }, "gcp:vertex/aiTensorboard:AiTensorboard": { - "description": "Tensorboard is a physical database that stores users' training metrics. A default Tensorboard is provided in each region of a GCP project. If needed users can also create extra Tensorboards in their projects.\n\n\nTo get more information about Tensorboard, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.tensorboards)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Tensorboard\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tensorboard = new gcp.vertex.AiTensorboard(\"tensorboard\", {\n displayName: \"terraform\",\n description: \"sample description\",\n labels: {\n key1: \"value1\",\n key2: \"value2\",\n },\n region: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntensorboard = gcp.vertex.AiTensorboard(\"tensorboard\",\n display_name=\"terraform\",\n description=\"sample description\",\n labels={\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n },\n region=\"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 tensorboard = new Gcp.Vertex.AiTensorboard(\"tensorboard\", new()\n {\n DisplayName = \"terraform\",\n Description = \"sample description\",\n Labels = \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n },\n Region = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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 := vertex.NewAiTensorboard(ctx, \"tensorboard\", \u0026vertex.AiTensorboardArgs{\n\t\t\tDisplayName: pulumi.String(\"terraform\"),\n\t\t\tDescription: pulumi.String(\"sample description\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t},\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\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.vertex.AiTensorboard;\nimport com.pulumi.gcp.vertex.AiTensorboardArgs;\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 tensorboard = new AiTensorboard(\"tensorboard\", AiTensorboardArgs.builder()\n .displayName(\"terraform\")\n .description(\"sample description\")\n .labels(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\")\n ))\n .region(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tensorboard:\n type: gcp:vertex:AiTensorboard\n properties:\n displayName: terraform\n description: sample description\n labels:\n key1: value1\n key2: value2\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Tensorboard Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"kms-name\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com`),\n});\nconst tensorboard = new gcp.vertex.AiTensorboard(\"tensorboard\", {\n displayName: \"terraform\",\n description: \"sample description\",\n labels: {\n key1: \"value1\",\n key2: \"value2\",\n },\n region: \"us-central1\",\n encryptionSpec: {\n kmsKeyName: \"kms-name\",\n },\n}, {\n dependsOn: [cryptoKey],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"kms-name\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com\")\ntensorboard = gcp.vertex.AiTensorboard(\"tensorboard\",\n display_name=\"terraform\",\n description=\"sample description\",\n labels={\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n },\n region=\"us-central1\",\n encryption_spec={\n \"kmsKeyName\": \"kms-name\",\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key]))\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 cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"kms-name\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-aiplatform.iam.gserviceaccount.com\",\n });\n\n var tensorboard = new Gcp.Vertex.AiTensorboard(\"tensorboard\", new()\n {\n DisplayName = \"terraform\",\n Description = \"sample description\",\n Labels = \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n },\n Region = \"us-central1\",\n EncryptionSpec = new Gcp.Vertex.Inputs.AiTensorboardEncryptionSpecArgs\n {\n KmsKeyName = \"kms-name\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKey,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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\tcryptoKey, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-name\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-aiplatform.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiTensorboard(ctx, \"tensorboard\", \u0026vertex.AiTensorboardArgs{\n\t\t\tDisplayName: pulumi.String(\"terraform\"),\n\t\t\tDescription: pulumi.String(\"sample description\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tEncryptionSpec: \u0026vertex.AiTensorboardEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-name\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKey,\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.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.vertex.AiTensorboard;\nimport com.pulumi.gcp.vertex.AiTensorboardArgs;\nimport com.pulumi.gcp.vertex.inputs.AiTensorboardEncryptionSpecArgs;\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 cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-name\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-aiplatform.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var tensorboard = new AiTensorboard(\"tensorboard\", AiTensorboardArgs.builder()\n .displayName(\"terraform\")\n .description(\"sample description\")\n .labels(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\")\n ))\n .region(\"us-central1\")\n .encryptionSpec(AiTensorboardEncryptionSpecArgs.builder()\n .kmsKeyName(\"kms-name\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKey)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tensorboard:\n type: gcp:vertex:AiTensorboard\n properties:\n displayName: terraform\n description: sample description\n labels:\n key1: value1\n key2: value2\n region: us-central1\n encryptionSpec:\n kmsKeyName: kms-name\n options:\n dependson:\n - ${cryptoKey}\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: kms-name\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTensorboard can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/tensorboards/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Tensorboard can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiTensorboard:AiTensorboard default projects/{{project}}/locations/{{region}}/tensorboards/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiTensorboard:AiTensorboard default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiTensorboard:AiTensorboard default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiTensorboard:AiTensorboard default {{name}}\n```\n\n", + "description": "Tensorboard is a physical database that stores users' training metrics. A default Tensorboard is provided in each region of a GCP project. If needed users can also create extra Tensorboards in their projects.\n\n\nTo get more information about Tensorboard, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.tensorboards)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Tensorboard\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tensorboard = new gcp.vertex.AiTensorboard(\"tensorboard\", {\n displayName: \"terraform\",\n description: \"sample description\",\n labels: {\n key1: \"value1\",\n key2: \"value2\",\n },\n region: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntensorboard = gcp.vertex.AiTensorboard(\"tensorboard\",\n display_name=\"terraform\",\n description=\"sample description\",\n labels={\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n },\n region=\"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 tensorboard = new Gcp.Vertex.AiTensorboard(\"tensorboard\", new()\n {\n DisplayName = \"terraform\",\n Description = \"sample description\",\n Labels = \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n },\n Region = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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 := vertex.NewAiTensorboard(ctx, \"tensorboard\", \u0026vertex.AiTensorboardArgs{\n\t\t\tDisplayName: pulumi.String(\"terraform\"),\n\t\t\tDescription: pulumi.String(\"sample description\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t},\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\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.vertex.AiTensorboard;\nimport com.pulumi.gcp.vertex.AiTensorboardArgs;\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 tensorboard = new AiTensorboard(\"tensorboard\", AiTensorboardArgs.builder()\n .displayName(\"terraform\")\n .description(\"sample description\")\n .labels(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\")\n ))\n .region(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tensorboard:\n type: gcp:vertex:AiTensorboard\n properties:\n displayName: terraform\n description: sample description\n labels:\n key1: value1\n key2: value2\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Tensorboard Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"kms-name\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com`),\n});\nconst tensorboard = new gcp.vertex.AiTensorboard(\"tensorboard\", {\n displayName: \"terraform\",\n description: \"sample description\",\n labels: {\n key1: \"value1\",\n key2: \"value2\",\n },\n region: \"us-central1\",\n encryptionSpec: {\n kmsKeyName: \"kms-name\",\n },\n}, {\n dependsOn: [cryptoKey],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"kms-name\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com\")\ntensorboard = gcp.vertex.AiTensorboard(\"tensorboard\",\n display_name=\"terraform\",\n description=\"sample description\",\n labels={\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n },\n region=\"us-central1\",\n encryption_spec={\n \"kms_key_name\": \"kms-name\",\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key]))\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 cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"kms-name\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-aiplatform.iam.gserviceaccount.com\",\n });\n\n var tensorboard = new Gcp.Vertex.AiTensorboard(\"tensorboard\", new()\n {\n DisplayName = \"terraform\",\n Description = \"sample description\",\n Labels = \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n },\n Region = \"us-central1\",\n EncryptionSpec = new Gcp.Vertex.Inputs.AiTensorboardEncryptionSpecArgs\n {\n KmsKeyName = \"kms-name\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKey,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vertex\"\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\tcryptoKey, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-name\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.String(fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-aiplatform.iam.gserviceaccount.com\", project.Number)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiTensorboard(ctx, \"tensorboard\", \u0026vertex.AiTensorboardArgs{\n\t\t\tDisplayName: pulumi.String(\"terraform\"),\n\t\t\tDescription: pulumi.String(\"sample description\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tEncryptionSpec: \u0026vertex.AiTensorboardEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-name\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKey,\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.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.vertex.AiTensorboard;\nimport com.pulumi.gcp.vertex.AiTensorboardArgs;\nimport com.pulumi.gcp.vertex.inputs.AiTensorboardEncryptionSpecArgs;\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 cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-name\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-aiplatform.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var tensorboard = new AiTensorboard(\"tensorboard\", AiTensorboardArgs.builder()\n .displayName(\"terraform\")\n .description(\"sample description\")\n .labels(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\")\n ))\n .region(\"us-central1\")\n .encryptionSpec(AiTensorboardEncryptionSpecArgs.builder()\n .kmsKeyName(\"kms-name\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKey)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tensorboard:\n type: gcp:vertex:AiTensorboard\n properties:\n displayName: terraform\n description: sample description\n labels:\n key1: value1\n key2: value2\n region: us-central1\n encryptionSpec:\n kmsKeyName: kms-name\n options:\n dependson:\n - ${cryptoKey}\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: kms-name\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTensorboard can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/tensorboards/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Tensorboard can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiTensorboard:AiTensorboard default projects/{{project}}/locations/{{region}}/tensorboards/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiTensorboard:AiTensorboard default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiTensorboard:AiTensorboard default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiTensorboard:AiTensorboard default {{name}}\n```\n\n", "properties": { "blobStoragePathPrefix": { "type": "string", @@ -246482,7 +246482,7 @@ } }, "gcp:vmwareengine/cluster:Cluster": { - "description": "A cluster in a private cloud.\n\n\nTo get more information about Cluster, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.privateClouds.clusters)\n\n## Example Usage\n\n### Vmware Engine Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_nw = new gcp.vmwareengine.Network(\"cluster-nw\", {\n name: \"pc-nw\",\n type: \"STANDARD\",\n location: \"global\",\n description: \"PC network description.\",\n});\nconst cluster_pc = new gcp.vmwareengine.PrivateCloud(\"cluster-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.30.0/24\",\n vmwareEngineNetwork: cluster_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\nconst vmw_engine_ext_cluster = new gcp.vmwareengine.Cluster(\"vmw-engine-ext-cluster\", {\n name: \"ext-cluster\",\n parent: cluster_pc.id,\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_nw = gcp.vmwareengine.Network(\"cluster-nw\",\n name=\"pc-nw\",\n type=\"STANDARD\",\n location=\"global\",\n description=\"PC network description.\")\ncluster_pc = gcp.vmwareengine.PrivateCloud(\"cluster-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"managementCidr\": \"192.168.30.0/24\",\n \"vmwareEngineNetwork\": cluster_nw.id,\n },\n management_cluster={\n \"clusterId\": \"sample-mgmt-cluster\",\n \"nodeTypeConfigs\": [{\n \"nodeTypeId\": \"standard-72\",\n \"nodeCount\": 3,\n }],\n })\nvmw_engine_ext_cluster = gcp.vmwareengine.Cluster(\"vmw-engine-ext-cluster\",\n name=\"ext-cluster\",\n parent=cluster_pc.id,\n node_type_configs=[{\n \"nodeTypeId\": \"standard-72\",\n \"nodeCount\": 3,\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 cluster_nw = new Gcp.VMwareEngine.Network(\"cluster-nw\", new()\n {\n Name = \"pc-nw\",\n Type = \"STANDARD\",\n Location = \"global\",\n Description = \"PC network description.\",\n });\n\n var cluster_pc = new Gcp.VMwareEngine.PrivateCloud(\"cluster-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.30.0/24\",\n VmwareEngineNetwork = cluster_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n var vmw_engine_ext_cluster = new Gcp.VMwareEngine.Cluster(\"vmw-engine-ext-cluster\", new()\n {\n Name = \"ext-cluster\",\n Parent = cluster_pc.Id,\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.ClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vmwareengine\"\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 := vmwareengine.NewNetwork(ctx, \"cluster-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"cluster-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.30.0/24\"),\n\t\t\t\tVmwareEngineNetwork: cluster_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\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 = vmwareengine.NewCluster(ctx, \"vmw-engine-ext-cluster\", \u0026vmwareengine.ClusterArgs{\n\t\t\tName: pulumi.String(\"ext-cluster\"),\n\t\t\tParent: cluster_pc.ID(),\n\t\t\tNodeTypeConfigs: vmwareengine.ClusterNodeTypeConfigArray{\n\t\t\t\t\u0026vmwareengine.ClusterNodeTypeConfigArgs{\n\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\tNodeCount: pulumi.Int(3),\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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.Cluster;\nimport com.pulumi.gcp.vmwareengine.ClusterArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ClusterNodeTypeConfigArgs;\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 cluster_nw = new Network(\"cluster-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .type(\"STANDARD\")\n .location(\"global\")\n .description(\"PC network description.\")\n .build());\n\n var cluster_pc = new PrivateCloud(\"cluster-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.30.0/24\")\n .vmwareEngineNetwork(cluster_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n var vmw_engine_ext_cluster = new Cluster(\"vmw-engine-ext-cluster\", ClusterArgs.builder()\n .name(\"ext-cluster\")\n .parent(cluster_pc.id())\n .nodeTypeConfigs(ClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmw-engine-ext-cluster:\n type: gcp:vmwareengine:Cluster\n properties:\n name: ext-cluster\n parent: ${[\"cluster-pc\"].id}\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n cluster-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.30.0/24\n vmwareEngineNetwork: ${[\"cluster-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n cluster-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n type: STANDARD\n location: global\n description: PC network description.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vmware Engine Cluster Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_nw = new gcp.vmwareengine.Network(\"cluster-nw\", {\n name: \"pc-nw\",\n type: \"STANDARD\",\n location: \"global\",\n description: \"PC network description.\",\n});\nconst cluster_pc = new gcp.vmwareengine.PrivateCloud(\"cluster-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.30.0/24\",\n vmwareEngineNetwork: cluster_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n customCoreCount: 32,\n }],\n },\n});\nconst vmw_ext_cluster = new gcp.vmwareengine.Cluster(\"vmw-ext-cluster\", {\n name: \"ext-cluster\",\n parent: cluster_pc.id,\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n customCoreCount: 32,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_nw = gcp.vmwareengine.Network(\"cluster-nw\",\n name=\"pc-nw\",\n type=\"STANDARD\",\n location=\"global\",\n description=\"PC network description.\")\ncluster_pc = gcp.vmwareengine.PrivateCloud(\"cluster-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"managementCidr\": \"192.168.30.0/24\",\n \"vmwareEngineNetwork\": cluster_nw.id,\n },\n management_cluster={\n \"clusterId\": \"sample-mgmt-cluster\",\n \"nodeTypeConfigs\": [{\n \"nodeTypeId\": \"standard-72\",\n \"nodeCount\": 3,\n \"customCoreCount\": 32,\n }],\n })\nvmw_ext_cluster = gcp.vmwareengine.Cluster(\"vmw-ext-cluster\",\n name=\"ext-cluster\",\n parent=cluster_pc.id,\n node_type_configs=[{\n \"nodeTypeId\": \"standard-72\",\n \"nodeCount\": 3,\n \"customCoreCount\": 32,\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 cluster_nw = new Gcp.VMwareEngine.Network(\"cluster-nw\", new()\n {\n Name = \"pc-nw\",\n Type = \"STANDARD\",\n Location = \"global\",\n Description = \"PC network description.\",\n });\n\n var cluster_pc = new Gcp.VMwareEngine.PrivateCloud(\"cluster-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.30.0/24\",\n VmwareEngineNetwork = cluster_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n CustomCoreCount = 32,\n },\n },\n },\n });\n\n var vmw_ext_cluster = new Gcp.VMwareEngine.Cluster(\"vmw-ext-cluster\", new()\n {\n Name = \"ext-cluster\",\n Parent = cluster_pc.Id,\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.ClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n CustomCoreCount = 32,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vmwareengine\"\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 := vmwareengine.NewNetwork(ctx, \"cluster-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"cluster-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.30.0/24\"),\n\t\t\t\tVmwareEngineNetwork: cluster_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t\t\tCustomCoreCount: pulumi.Int(32),\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 = vmwareengine.NewCluster(ctx, \"vmw-ext-cluster\", \u0026vmwareengine.ClusterArgs{\n\t\t\tName: pulumi.String(\"ext-cluster\"),\n\t\t\tParent: cluster_pc.ID(),\n\t\t\tNodeTypeConfigs: vmwareengine.ClusterNodeTypeConfigArray{\n\t\t\t\t\u0026vmwareengine.ClusterNodeTypeConfigArgs{\n\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t\tCustomCoreCount: pulumi.Int(32),\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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.Cluster;\nimport com.pulumi.gcp.vmwareengine.ClusterArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ClusterNodeTypeConfigArgs;\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 cluster_nw = new Network(\"cluster-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .type(\"STANDARD\")\n .location(\"global\")\n .description(\"PC network description.\")\n .build());\n\n var cluster_pc = new PrivateCloud(\"cluster-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.30.0/24\")\n .vmwareEngineNetwork(cluster_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .customCoreCount(32)\n .build())\n .build())\n .build());\n\n var vmw_ext_cluster = new Cluster(\"vmw-ext-cluster\", ClusterArgs.builder()\n .name(\"ext-cluster\")\n .parent(cluster_pc.id())\n .nodeTypeConfigs(ClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .customCoreCount(32)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmw-ext-cluster:\n type: gcp:vmwareengine:Cluster\n properties:\n name: ext-cluster\n parent: ${[\"cluster-pc\"].id}\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n customCoreCount: 32\n cluster-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.30.0/24\n vmwareEngineNetwork: ${[\"cluster-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n customCoreCount: 32\n cluster-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n type: STANDARD\n location: global\n description: PC network description.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `{{parent}}/clusters/{{name}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/cluster:Cluster default {{parent}}/clusters/{{name}}\n```\n\n", + "description": "A cluster in a private cloud.\n\n\nTo get more information about Cluster, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.privateClouds.clusters)\n\n## Example Usage\n\n### Vmware Engine Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_nw = new gcp.vmwareengine.Network(\"cluster-nw\", {\n name: \"pc-nw\",\n type: \"STANDARD\",\n location: \"global\",\n description: \"PC network description.\",\n});\nconst cluster_pc = new gcp.vmwareengine.PrivateCloud(\"cluster-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.30.0/24\",\n vmwareEngineNetwork: cluster_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\nconst vmw_engine_ext_cluster = new gcp.vmwareengine.Cluster(\"vmw-engine-ext-cluster\", {\n name: \"ext-cluster\",\n parent: cluster_pc.id,\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_nw = gcp.vmwareengine.Network(\"cluster-nw\",\n name=\"pc-nw\",\n type=\"STANDARD\",\n location=\"global\",\n description=\"PC network description.\")\ncluster_pc = gcp.vmwareengine.PrivateCloud(\"cluster-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"management_cidr\": \"192.168.30.0/24\",\n \"vmware_engine_network\": cluster_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n }],\n })\nvmw_engine_ext_cluster = gcp.vmwareengine.Cluster(\"vmw-engine-ext-cluster\",\n name=\"ext-cluster\",\n parent=cluster_pc.id,\n node_type_configs=[{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\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 cluster_nw = new Gcp.VMwareEngine.Network(\"cluster-nw\", new()\n {\n Name = \"pc-nw\",\n Type = \"STANDARD\",\n Location = \"global\",\n Description = \"PC network description.\",\n });\n\n var cluster_pc = new Gcp.VMwareEngine.PrivateCloud(\"cluster-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.30.0/24\",\n VmwareEngineNetwork = cluster_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n var vmw_engine_ext_cluster = new Gcp.VMwareEngine.Cluster(\"vmw-engine-ext-cluster\", new()\n {\n Name = \"ext-cluster\",\n Parent = cluster_pc.Id,\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.ClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vmwareengine\"\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 := vmwareengine.NewNetwork(ctx, \"cluster-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"cluster-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.30.0/24\"),\n\t\t\t\tVmwareEngineNetwork: cluster_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\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 = vmwareengine.NewCluster(ctx, \"vmw-engine-ext-cluster\", \u0026vmwareengine.ClusterArgs{\n\t\t\tName: pulumi.String(\"ext-cluster\"),\n\t\t\tParent: cluster_pc.ID(),\n\t\t\tNodeTypeConfigs: vmwareengine.ClusterNodeTypeConfigArray{\n\t\t\t\t\u0026vmwareengine.ClusterNodeTypeConfigArgs{\n\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\tNodeCount: pulumi.Int(3),\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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.Cluster;\nimport com.pulumi.gcp.vmwareengine.ClusterArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ClusterNodeTypeConfigArgs;\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 cluster_nw = new Network(\"cluster-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .type(\"STANDARD\")\n .location(\"global\")\n .description(\"PC network description.\")\n .build());\n\n var cluster_pc = new PrivateCloud(\"cluster-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.30.0/24\")\n .vmwareEngineNetwork(cluster_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n var vmw_engine_ext_cluster = new Cluster(\"vmw-engine-ext-cluster\", ClusterArgs.builder()\n .name(\"ext-cluster\")\n .parent(cluster_pc.id())\n .nodeTypeConfigs(ClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmw-engine-ext-cluster:\n type: gcp:vmwareengine:Cluster\n properties:\n name: ext-cluster\n parent: ${[\"cluster-pc\"].id}\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n cluster-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.30.0/24\n vmwareEngineNetwork: ${[\"cluster-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n cluster-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n type: STANDARD\n location: global\n description: PC network description.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vmware Engine Cluster Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_nw = new gcp.vmwareengine.Network(\"cluster-nw\", {\n name: \"pc-nw\",\n type: \"STANDARD\",\n location: \"global\",\n description: \"PC network description.\",\n});\nconst cluster_pc = new gcp.vmwareengine.PrivateCloud(\"cluster-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.30.0/24\",\n vmwareEngineNetwork: cluster_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n customCoreCount: 32,\n }],\n },\n});\nconst vmw_ext_cluster = new gcp.vmwareengine.Cluster(\"vmw-ext-cluster\", {\n name: \"ext-cluster\",\n parent: cluster_pc.id,\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n customCoreCount: 32,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_nw = gcp.vmwareengine.Network(\"cluster-nw\",\n name=\"pc-nw\",\n type=\"STANDARD\",\n location=\"global\",\n description=\"PC network description.\")\ncluster_pc = gcp.vmwareengine.PrivateCloud(\"cluster-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"management_cidr\": \"192.168.30.0/24\",\n \"vmware_engine_network\": cluster_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n \"custom_core_count\": 32,\n }],\n })\nvmw_ext_cluster = gcp.vmwareengine.Cluster(\"vmw-ext-cluster\",\n name=\"ext-cluster\",\n parent=cluster_pc.id,\n node_type_configs=[{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n \"custom_core_count\": 32,\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 cluster_nw = new Gcp.VMwareEngine.Network(\"cluster-nw\", new()\n {\n Name = \"pc-nw\",\n Type = \"STANDARD\",\n Location = \"global\",\n Description = \"PC network description.\",\n });\n\n var cluster_pc = new Gcp.VMwareEngine.PrivateCloud(\"cluster-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.30.0/24\",\n VmwareEngineNetwork = cluster_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n CustomCoreCount = 32,\n },\n },\n },\n });\n\n var vmw_ext_cluster = new Gcp.VMwareEngine.Cluster(\"vmw-ext-cluster\", new()\n {\n Name = \"ext-cluster\",\n Parent = cluster_pc.Id,\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.ClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n CustomCoreCount = 32,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vmwareengine\"\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 := vmwareengine.NewNetwork(ctx, \"cluster-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"cluster-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.30.0/24\"),\n\t\t\t\tVmwareEngineNetwork: cluster_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t\t\tCustomCoreCount: pulumi.Int(32),\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 = vmwareengine.NewCluster(ctx, \"vmw-ext-cluster\", \u0026vmwareengine.ClusterArgs{\n\t\t\tName: pulumi.String(\"ext-cluster\"),\n\t\t\tParent: cluster_pc.ID(),\n\t\t\tNodeTypeConfigs: vmwareengine.ClusterNodeTypeConfigArray{\n\t\t\t\t\u0026vmwareengine.ClusterNodeTypeConfigArgs{\n\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t\tCustomCoreCount: pulumi.Int(32),\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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.Cluster;\nimport com.pulumi.gcp.vmwareengine.ClusterArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ClusterNodeTypeConfigArgs;\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 cluster_nw = new Network(\"cluster-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .type(\"STANDARD\")\n .location(\"global\")\n .description(\"PC network description.\")\n .build());\n\n var cluster_pc = new PrivateCloud(\"cluster-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.30.0/24\")\n .vmwareEngineNetwork(cluster_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .customCoreCount(32)\n .build())\n .build())\n .build());\n\n var vmw_ext_cluster = new Cluster(\"vmw-ext-cluster\", ClusterArgs.builder()\n .name(\"ext-cluster\")\n .parent(cluster_pc.id())\n .nodeTypeConfigs(ClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .customCoreCount(32)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmw-ext-cluster:\n type: gcp:vmwareengine:Cluster\n properties:\n name: ext-cluster\n parent: ${[\"cluster-pc\"].id}\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n customCoreCount: 32\n cluster-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.30.0/24\n vmwareEngineNetwork: ${[\"cluster-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n customCoreCount: 32\n cluster-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n type: STANDARD\n location: global\n description: PC network description.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `{{parent}}/clusters/{{name}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/cluster:Cluster default {{parent}}/clusters/{{name}}\n```\n\n", "properties": { "management": { "type": "boolean", @@ -246578,7 +246578,7 @@ } }, "gcp:vmwareengine/externalAccessRule:ExternalAccessRule": { - "description": "External access firewall rules for filtering incoming traffic destined to `ExternalAddress` resources.\n\n\nTo get more information about ExternalAccessRule, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.networkPolicies.externalAccessRules)\n\n## Example Usage\n\n### Vmware Engine External Access Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst external_access_rule_nw = new gcp.vmwareengine.Network(\"external-access-rule-nw\", {\n name: \"sample-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst external_access_rule_np = new gcp.vmwareengine.NetworkPolicy(\"external-access-rule-np\", {\n location: \"us-west1\",\n name: \"sample-np\",\n edgeServicesCidr: \"192.168.30.0/26\",\n vmwareEngineNetwork: external_access_rule_nw.id,\n});\nconst vmw_engine_external_access_rule = new gcp.vmwareengine.ExternalAccessRule(\"vmw-engine-external-access-rule\", {\n name: \"sample-external-access-rule\",\n parent: external_access_rule_np.id,\n priority: 101,\n action: \"DENY\",\n ipProtocol: \"TCP\",\n sourceIpRanges: [{\n ipAddressRange: \"0.0.0.0/0\",\n }],\n sourcePorts: [\"80\"],\n destinationIpRanges: [{\n ipAddressRange: \"0.0.0.0/0\",\n }],\n destinationPorts: [\"433\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexternal_access_rule_nw = gcp.vmwareengine.Network(\"external-access-rule-nw\",\n name=\"sample-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nexternal_access_rule_np = gcp.vmwareengine.NetworkPolicy(\"external-access-rule-np\",\n location=\"us-west1\",\n name=\"sample-np\",\n edge_services_cidr=\"192.168.30.0/26\",\n vmware_engine_network=external_access_rule_nw.id)\nvmw_engine_external_access_rule = gcp.vmwareengine.ExternalAccessRule(\"vmw-engine-external-access-rule\",\n name=\"sample-external-access-rule\",\n parent=external_access_rule_np.id,\n priority=101,\n action=\"DENY\",\n ip_protocol=\"TCP\",\n source_ip_ranges=[{\n \"ipAddressRange\": \"0.0.0.0/0\",\n }],\n source_ports=[\"80\"],\n destination_ip_ranges=[{\n \"ipAddressRange\": \"0.0.0.0/0\",\n }],\n destination_ports=[\"433\"])\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 external_access_rule_nw = new Gcp.VMwareEngine.Network(\"external-access-rule-nw\", new()\n {\n Name = \"sample-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var external_access_rule_np = new Gcp.VMwareEngine.NetworkPolicy(\"external-access-rule-np\", new()\n {\n Location = \"us-west1\",\n Name = \"sample-np\",\n EdgeServicesCidr = \"192.168.30.0/26\",\n VmwareEngineNetwork = external_access_rule_nw.Id,\n });\n\n var vmw_engine_external_access_rule = new Gcp.VMwareEngine.ExternalAccessRule(\"vmw-engine-external-access-rule\", new()\n {\n Name = \"sample-external-access-rule\",\n Parent = external_access_rule_np.Id,\n Priority = 101,\n Action = \"DENY\",\n IpProtocol = \"TCP\",\n SourceIpRanges = new[]\n {\n new Gcp.VMwareEngine.Inputs.ExternalAccessRuleSourceIpRangeArgs\n {\n IpAddressRange = \"0.0.0.0/0\",\n },\n },\n SourcePorts = new[]\n {\n \"80\",\n },\n DestinationIpRanges = new[]\n {\n new Gcp.VMwareEngine.Inputs.ExternalAccessRuleDestinationIpRangeArgs\n {\n IpAddressRange = \"0.0.0.0/0\",\n },\n },\n DestinationPorts = new[]\n {\n \"433\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vmwareengine\"\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 := vmwareengine.NewNetwork(ctx, \"external-access-rule-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"sample-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewNetworkPolicy(ctx, \"external-access-rule-np\", \u0026vmwareengine.NetworkPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"sample-np\"),\n\t\t\tEdgeServicesCidr: pulumi.String(\"192.168.30.0/26\"),\n\t\t\tVmwareEngineNetwork: external_access_rule_nw.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewExternalAccessRule(ctx, \"vmw-engine-external-access-rule\", \u0026vmwareengine.ExternalAccessRuleArgs{\n\t\t\tName: pulumi.String(\"sample-external-access-rule\"),\n\t\t\tParent: external_access_rule_np.ID(),\n\t\t\tPriority: pulumi.Int(101),\n\t\t\tAction: pulumi.String(\"DENY\"),\n\t\t\tIpProtocol: pulumi.String(\"TCP\"),\n\t\t\tSourceIpRanges: vmwareengine.ExternalAccessRuleSourceIpRangeArray{\n\t\t\t\t\u0026vmwareengine.ExternalAccessRuleSourceIpRangeArgs{\n\t\t\t\t\tIpAddressRange: pulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSourcePorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"80\"),\n\t\t\t},\n\t\t\tDestinationIpRanges: vmwareengine.ExternalAccessRuleDestinationIpRangeArray{\n\t\t\t\t\u0026vmwareengine.ExternalAccessRuleDestinationIpRangeArgs{\n\t\t\t\t\tIpAddressRange: pulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationPorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"433\"),\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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicy;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicyArgs;\nimport com.pulumi.gcp.vmwareengine.ExternalAccessRule;\nimport com.pulumi.gcp.vmwareengine.ExternalAccessRuleArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ExternalAccessRuleSourceIpRangeArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ExternalAccessRuleDestinationIpRangeArgs;\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 external_access_rule_nw = new Network(\"external-access-rule-nw\", NetworkArgs.builder()\n .name(\"sample-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var external_access_rule_np = new NetworkPolicy(\"external-access-rule-np\", NetworkPolicyArgs.builder()\n .location(\"us-west1\")\n .name(\"sample-np\")\n .edgeServicesCidr(\"192.168.30.0/26\")\n .vmwareEngineNetwork(external_access_rule_nw.id())\n .build());\n\n var vmw_engine_external_access_rule = new ExternalAccessRule(\"vmw-engine-external-access-rule\", ExternalAccessRuleArgs.builder()\n .name(\"sample-external-access-rule\")\n .parent(external_access_rule_np.id())\n .priority(101)\n .action(\"DENY\")\n .ipProtocol(\"TCP\")\n .sourceIpRanges(ExternalAccessRuleSourceIpRangeArgs.builder()\n .ipAddressRange(\"0.0.0.0/0\")\n .build())\n .sourcePorts(\"80\")\n .destinationIpRanges(ExternalAccessRuleDestinationIpRangeArgs.builder()\n .ipAddressRange(\"0.0.0.0/0\")\n .build())\n .destinationPorts(\"433\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n external-access-rule-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: sample-nw\n location: global\n type: STANDARD\n description: PC network description.\n external-access-rule-np:\n type: gcp:vmwareengine:NetworkPolicy\n properties:\n location: us-west1\n name: sample-np\n edgeServicesCidr: 192.168.30.0/26\n vmwareEngineNetwork: ${[\"external-access-rule-nw\"].id}\n vmw-engine-external-access-rule:\n type: gcp:vmwareengine:ExternalAccessRule\n properties:\n name: sample-external-access-rule\n parent: ${[\"external-access-rule-np\"].id}\n priority: 101\n action: DENY\n ipProtocol: TCP\n sourceIpRanges:\n - ipAddressRange: 0.0.0.0/0\n sourcePorts:\n - '80'\n destinationIpRanges:\n - ipAddressRange: 0.0.0.0/0\n destinationPorts:\n - '433'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vmware Engine External Access Rule Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst external_access_rule_nw = new gcp.vmwareengine.Network(\"external-access-rule-nw\", {\n name: \"sample-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst external_access_rule_pc = new gcp.vmwareengine.PrivateCloud(\"external-access-rule-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.50.0/24\",\n vmwareEngineNetwork: external_access_rule_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\nconst external_access_rule_np = new gcp.vmwareengine.NetworkPolicy(\"external-access-rule-np\", {\n location: \"us-west1\",\n name: \"sample-np\",\n edgeServicesCidr: \"192.168.30.0/26\",\n vmwareEngineNetwork: external_access_rule_nw.id,\n});\nconst external_access_rule_ea = new gcp.vmwareengine.ExternalAddress(\"external-access-rule-ea\", {\n name: \"sample-ea\",\n parent: external_access_rule_pc.id,\n internalIp: \"192.168.0.65\",\n});\nconst vmw_engine_external_access_rule = new gcp.vmwareengine.ExternalAccessRule(\"vmw-engine-external-access-rule\", {\n name: \"sample-external-access-rule\",\n parent: external_access_rule_np.id,\n description: \"Sample Description\",\n priority: 101,\n action: \"ALLOW\",\n ipProtocol: \"tcp\",\n sourceIpRanges: [{\n ipAddressRange: \"0.0.0.0/0\",\n }],\n sourcePorts: [\"80\"],\n destinationIpRanges: [{\n externalAddress: external_access_rule_ea.id,\n }],\n destinationPorts: [\"433\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexternal_access_rule_nw = gcp.vmwareengine.Network(\"external-access-rule-nw\",\n name=\"sample-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nexternal_access_rule_pc = gcp.vmwareengine.PrivateCloud(\"external-access-rule-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"managementCidr\": \"192.168.50.0/24\",\n \"vmwareEngineNetwork\": external_access_rule_nw.id,\n },\n management_cluster={\n \"clusterId\": \"sample-mgmt-cluster\",\n \"nodeTypeConfigs\": [{\n \"nodeTypeId\": \"standard-72\",\n \"nodeCount\": 3,\n }],\n })\nexternal_access_rule_np = gcp.vmwareengine.NetworkPolicy(\"external-access-rule-np\",\n location=\"us-west1\",\n name=\"sample-np\",\n edge_services_cidr=\"192.168.30.0/26\",\n vmware_engine_network=external_access_rule_nw.id)\nexternal_access_rule_ea = gcp.vmwareengine.ExternalAddress(\"external-access-rule-ea\",\n name=\"sample-ea\",\n parent=external_access_rule_pc.id,\n internal_ip=\"192.168.0.65\")\nvmw_engine_external_access_rule = gcp.vmwareengine.ExternalAccessRule(\"vmw-engine-external-access-rule\",\n name=\"sample-external-access-rule\",\n parent=external_access_rule_np.id,\n description=\"Sample Description\",\n priority=101,\n action=\"ALLOW\",\n ip_protocol=\"tcp\",\n source_ip_ranges=[{\n \"ipAddressRange\": \"0.0.0.0/0\",\n }],\n source_ports=[\"80\"],\n destination_ip_ranges=[{\n \"externalAddress\": external_access_rule_ea.id,\n }],\n destination_ports=[\"433\"])\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 external_access_rule_nw = new Gcp.VMwareEngine.Network(\"external-access-rule-nw\", new()\n {\n Name = \"sample-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var external_access_rule_pc = new Gcp.VMwareEngine.PrivateCloud(\"external-access-rule-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.50.0/24\",\n VmwareEngineNetwork = external_access_rule_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n var external_access_rule_np = new Gcp.VMwareEngine.NetworkPolicy(\"external-access-rule-np\", new()\n {\n Location = \"us-west1\",\n Name = \"sample-np\",\n EdgeServicesCidr = \"192.168.30.0/26\",\n VmwareEngineNetwork = external_access_rule_nw.Id,\n });\n\n var external_access_rule_ea = new Gcp.VMwareEngine.ExternalAddress(\"external-access-rule-ea\", new()\n {\n Name = \"sample-ea\",\n Parent = external_access_rule_pc.Id,\n InternalIp = \"192.168.0.65\",\n });\n\n var vmw_engine_external_access_rule = new Gcp.VMwareEngine.ExternalAccessRule(\"vmw-engine-external-access-rule\", new()\n {\n Name = \"sample-external-access-rule\",\n Parent = external_access_rule_np.Id,\n Description = \"Sample Description\",\n Priority = 101,\n Action = \"ALLOW\",\n IpProtocol = \"tcp\",\n SourceIpRanges = new[]\n {\n new Gcp.VMwareEngine.Inputs.ExternalAccessRuleSourceIpRangeArgs\n {\n IpAddressRange = \"0.0.0.0/0\",\n },\n },\n SourcePorts = new[]\n {\n \"80\",\n },\n DestinationIpRanges = new[]\n {\n new Gcp.VMwareEngine.Inputs.ExternalAccessRuleDestinationIpRangeArgs\n {\n ExternalAddress = external_access_rule_ea.Id,\n },\n },\n DestinationPorts = new[]\n {\n \"433\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vmwareengine\"\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 := vmwareengine.NewNetwork(ctx, \"external-access-rule-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"sample-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"external-access-rule-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.50.0/24\"),\n\t\t\t\tVmwareEngineNetwork: external_access_rule_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\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 = vmwareengine.NewNetworkPolicy(ctx, \"external-access-rule-np\", \u0026vmwareengine.NetworkPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"sample-np\"),\n\t\t\tEdgeServicesCidr: pulumi.String(\"192.168.30.0/26\"),\n\t\t\tVmwareEngineNetwork: external_access_rule_nw.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewExternalAddress(ctx, \"external-access-rule-ea\", \u0026vmwareengine.ExternalAddressArgs{\n\t\t\tName: pulumi.String(\"sample-ea\"),\n\t\t\tParent: external_access_rule_pc.ID(),\n\t\t\tInternalIp: pulumi.String(\"192.168.0.65\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewExternalAccessRule(ctx, \"vmw-engine-external-access-rule\", \u0026vmwareengine.ExternalAccessRuleArgs{\n\t\t\tName: pulumi.String(\"sample-external-access-rule\"),\n\t\t\tParent: external_access_rule_np.ID(),\n\t\t\tDescription: pulumi.String(\"Sample Description\"),\n\t\t\tPriority: pulumi.Int(101),\n\t\t\tAction: pulumi.String(\"ALLOW\"),\n\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\tSourceIpRanges: vmwareengine.ExternalAccessRuleSourceIpRangeArray{\n\t\t\t\t\u0026vmwareengine.ExternalAccessRuleSourceIpRangeArgs{\n\t\t\t\t\tIpAddressRange: pulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSourcePorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"80\"),\n\t\t\t},\n\t\t\tDestinationIpRanges: vmwareengine.ExternalAccessRuleDestinationIpRangeArray{\n\t\t\t\t\u0026vmwareengine.ExternalAccessRuleDestinationIpRangeArgs{\n\t\t\t\t\tExternalAddress: external_access_rule_ea.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationPorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"433\"),\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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicy;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicyArgs;\nimport com.pulumi.gcp.vmwareengine.ExternalAddress;\nimport com.pulumi.gcp.vmwareengine.ExternalAddressArgs;\nimport com.pulumi.gcp.vmwareengine.ExternalAccessRule;\nimport com.pulumi.gcp.vmwareengine.ExternalAccessRuleArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ExternalAccessRuleSourceIpRangeArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ExternalAccessRuleDestinationIpRangeArgs;\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 external_access_rule_nw = new Network(\"external-access-rule-nw\", NetworkArgs.builder()\n .name(\"sample-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var external_access_rule_pc = new PrivateCloud(\"external-access-rule-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.50.0/24\")\n .vmwareEngineNetwork(external_access_rule_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n var external_access_rule_np = new NetworkPolicy(\"external-access-rule-np\", NetworkPolicyArgs.builder()\n .location(\"us-west1\")\n .name(\"sample-np\")\n .edgeServicesCidr(\"192.168.30.0/26\")\n .vmwareEngineNetwork(external_access_rule_nw.id())\n .build());\n\n var external_access_rule_ea = new ExternalAddress(\"external-access-rule-ea\", ExternalAddressArgs.builder()\n .name(\"sample-ea\")\n .parent(external_access_rule_pc.id())\n .internalIp(\"192.168.0.65\")\n .build());\n\n var vmw_engine_external_access_rule = new ExternalAccessRule(\"vmw-engine-external-access-rule\", ExternalAccessRuleArgs.builder()\n .name(\"sample-external-access-rule\")\n .parent(external_access_rule_np.id())\n .description(\"Sample Description\")\n .priority(101)\n .action(\"ALLOW\")\n .ipProtocol(\"tcp\")\n .sourceIpRanges(ExternalAccessRuleSourceIpRangeArgs.builder()\n .ipAddressRange(\"0.0.0.0/0\")\n .build())\n .sourcePorts(\"80\")\n .destinationIpRanges(ExternalAccessRuleDestinationIpRangeArgs.builder()\n .externalAddress(external_access_rule_ea.id())\n .build())\n .destinationPorts(\"433\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n external-access-rule-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: sample-nw\n location: global\n type: STANDARD\n description: PC network description.\n external-access-rule-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.50.0/24\n vmwareEngineNetwork: ${[\"external-access-rule-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n external-access-rule-np:\n type: gcp:vmwareengine:NetworkPolicy\n properties:\n location: us-west1\n name: sample-np\n edgeServicesCidr: 192.168.30.0/26\n vmwareEngineNetwork: ${[\"external-access-rule-nw\"].id}\n external-access-rule-ea:\n type: gcp:vmwareengine:ExternalAddress\n properties:\n name: sample-ea\n parent: ${[\"external-access-rule-pc\"].id}\n internalIp: 192.168.0.65\n vmw-engine-external-access-rule:\n type: gcp:vmwareengine:ExternalAccessRule\n properties:\n name: sample-external-access-rule\n parent: ${[\"external-access-rule-np\"].id}\n description: Sample Description\n priority: 101\n action: ALLOW\n ipProtocol: tcp\n sourceIpRanges:\n - ipAddressRange: 0.0.0.0/0\n sourcePorts:\n - '80'\n destinationIpRanges:\n - externalAddress: ${[\"external-access-rule-ea\"].id}\n destinationPorts:\n - '433'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nExternalAccessRule can be imported using any of these accepted formats:\n\n* `{{parent}}/externalAccessRules/{{name}}`\n\nWhen using the `pulumi import` command, ExternalAccessRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/externalAccessRule:ExternalAccessRule default {{parent}}/externalAccessRules/{{name}}\n```\n\n", + "description": "External access firewall rules for filtering incoming traffic destined to `ExternalAddress` resources.\n\n\nTo get more information about ExternalAccessRule, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.networkPolicies.externalAccessRules)\n\n## Example Usage\n\n### Vmware Engine External Access Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst external_access_rule_nw = new gcp.vmwareengine.Network(\"external-access-rule-nw\", {\n name: \"sample-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst external_access_rule_np = new gcp.vmwareengine.NetworkPolicy(\"external-access-rule-np\", {\n location: \"us-west1\",\n name: \"sample-np\",\n edgeServicesCidr: \"192.168.30.0/26\",\n vmwareEngineNetwork: external_access_rule_nw.id,\n});\nconst vmw_engine_external_access_rule = new gcp.vmwareengine.ExternalAccessRule(\"vmw-engine-external-access-rule\", {\n name: \"sample-external-access-rule\",\n parent: external_access_rule_np.id,\n priority: 101,\n action: \"DENY\",\n ipProtocol: \"TCP\",\n sourceIpRanges: [{\n ipAddressRange: \"0.0.0.0/0\",\n }],\n sourcePorts: [\"80\"],\n destinationIpRanges: [{\n ipAddressRange: \"0.0.0.0/0\",\n }],\n destinationPorts: [\"433\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexternal_access_rule_nw = gcp.vmwareengine.Network(\"external-access-rule-nw\",\n name=\"sample-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nexternal_access_rule_np = gcp.vmwareengine.NetworkPolicy(\"external-access-rule-np\",\n location=\"us-west1\",\n name=\"sample-np\",\n edge_services_cidr=\"192.168.30.0/26\",\n vmware_engine_network=external_access_rule_nw.id)\nvmw_engine_external_access_rule = gcp.vmwareengine.ExternalAccessRule(\"vmw-engine-external-access-rule\",\n name=\"sample-external-access-rule\",\n parent=external_access_rule_np.id,\n priority=101,\n action=\"DENY\",\n ip_protocol=\"TCP\",\n source_ip_ranges=[{\n \"ip_address_range\": \"0.0.0.0/0\",\n }],\n source_ports=[\"80\"],\n destination_ip_ranges=[{\n \"ip_address_range\": \"0.0.0.0/0\",\n }],\n destination_ports=[\"433\"])\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 external_access_rule_nw = new Gcp.VMwareEngine.Network(\"external-access-rule-nw\", new()\n {\n Name = \"sample-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var external_access_rule_np = new Gcp.VMwareEngine.NetworkPolicy(\"external-access-rule-np\", new()\n {\n Location = \"us-west1\",\n Name = \"sample-np\",\n EdgeServicesCidr = \"192.168.30.0/26\",\n VmwareEngineNetwork = external_access_rule_nw.Id,\n });\n\n var vmw_engine_external_access_rule = new Gcp.VMwareEngine.ExternalAccessRule(\"vmw-engine-external-access-rule\", new()\n {\n Name = \"sample-external-access-rule\",\n Parent = external_access_rule_np.Id,\n Priority = 101,\n Action = \"DENY\",\n IpProtocol = \"TCP\",\n SourceIpRanges = new[]\n {\n new Gcp.VMwareEngine.Inputs.ExternalAccessRuleSourceIpRangeArgs\n {\n IpAddressRange = \"0.0.0.0/0\",\n },\n },\n SourcePorts = new[]\n {\n \"80\",\n },\n DestinationIpRanges = new[]\n {\n new Gcp.VMwareEngine.Inputs.ExternalAccessRuleDestinationIpRangeArgs\n {\n IpAddressRange = \"0.0.0.0/0\",\n },\n },\n DestinationPorts = new[]\n {\n \"433\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vmwareengine\"\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 := vmwareengine.NewNetwork(ctx, \"external-access-rule-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"sample-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewNetworkPolicy(ctx, \"external-access-rule-np\", \u0026vmwareengine.NetworkPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"sample-np\"),\n\t\t\tEdgeServicesCidr: pulumi.String(\"192.168.30.0/26\"),\n\t\t\tVmwareEngineNetwork: external_access_rule_nw.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewExternalAccessRule(ctx, \"vmw-engine-external-access-rule\", \u0026vmwareengine.ExternalAccessRuleArgs{\n\t\t\tName: pulumi.String(\"sample-external-access-rule\"),\n\t\t\tParent: external_access_rule_np.ID(),\n\t\t\tPriority: pulumi.Int(101),\n\t\t\tAction: pulumi.String(\"DENY\"),\n\t\t\tIpProtocol: pulumi.String(\"TCP\"),\n\t\t\tSourceIpRanges: vmwareengine.ExternalAccessRuleSourceIpRangeArray{\n\t\t\t\t\u0026vmwareengine.ExternalAccessRuleSourceIpRangeArgs{\n\t\t\t\t\tIpAddressRange: pulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSourcePorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"80\"),\n\t\t\t},\n\t\t\tDestinationIpRanges: vmwareengine.ExternalAccessRuleDestinationIpRangeArray{\n\t\t\t\t\u0026vmwareengine.ExternalAccessRuleDestinationIpRangeArgs{\n\t\t\t\t\tIpAddressRange: pulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationPorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"433\"),\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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicy;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicyArgs;\nimport com.pulumi.gcp.vmwareengine.ExternalAccessRule;\nimport com.pulumi.gcp.vmwareengine.ExternalAccessRuleArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ExternalAccessRuleSourceIpRangeArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ExternalAccessRuleDestinationIpRangeArgs;\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 external_access_rule_nw = new Network(\"external-access-rule-nw\", NetworkArgs.builder()\n .name(\"sample-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var external_access_rule_np = new NetworkPolicy(\"external-access-rule-np\", NetworkPolicyArgs.builder()\n .location(\"us-west1\")\n .name(\"sample-np\")\n .edgeServicesCidr(\"192.168.30.0/26\")\n .vmwareEngineNetwork(external_access_rule_nw.id())\n .build());\n\n var vmw_engine_external_access_rule = new ExternalAccessRule(\"vmw-engine-external-access-rule\", ExternalAccessRuleArgs.builder()\n .name(\"sample-external-access-rule\")\n .parent(external_access_rule_np.id())\n .priority(101)\n .action(\"DENY\")\n .ipProtocol(\"TCP\")\n .sourceIpRanges(ExternalAccessRuleSourceIpRangeArgs.builder()\n .ipAddressRange(\"0.0.0.0/0\")\n .build())\n .sourcePorts(\"80\")\n .destinationIpRanges(ExternalAccessRuleDestinationIpRangeArgs.builder()\n .ipAddressRange(\"0.0.0.0/0\")\n .build())\n .destinationPorts(\"433\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n external-access-rule-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: sample-nw\n location: global\n type: STANDARD\n description: PC network description.\n external-access-rule-np:\n type: gcp:vmwareengine:NetworkPolicy\n properties:\n location: us-west1\n name: sample-np\n edgeServicesCidr: 192.168.30.0/26\n vmwareEngineNetwork: ${[\"external-access-rule-nw\"].id}\n vmw-engine-external-access-rule:\n type: gcp:vmwareengine:ExternalAccessRule\n properties:\n name: sample-external-access-rule\n parent: ${[\"external-access-rule-np\"].id}\n priority: 101\n action: DENY\n ipProtocol: TCP\n sourceIpRanges:\n - ipAddressRange: 0.0.0.0/0\n sourcePorts:\n - '80'\n destinationIpRanges:\n - ipAddressRange: 0.0.0.0/0\n destinationPorts:\n - '433'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vmware Engine External Access Rule Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst external_access_rule_nw = new gcp.vmwareengine.Network(\"external-access-rule-nw\", {\n name: \"sample-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst external_access_rule_pc = new gcp.vmwareengine.PrivateCloud(\"external-access-rule-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.50.0/24\",\n vmwareEngineNetwork: external_access_rule_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\nconst external_access_rule_np = new gcp.vmwareengine.NetworkPolicy(\"external-access-rule-np\", {\n location: \"us-west1\",\n name: \"sample-np\",\n edgeServicesCidr: \"192.168.30.0/26\",\n vmwareEngineNetwork: external_access_rule_nw.id,\n});\nconst external_access_rule_ea = new gcp.vmwareengine.ExternalAddress(\"external-access-rule-ea\", {\n name: \"sample-ea\",\n parent: external_access_rule_pc.id,\n internalIp: \"192.168.0.65\",\n});\nconst vmw_engine_external_access_rule = new gcp.vmwareengine.ExternalAccessRule(\"vmw-engine-external-access-rule\", {\n name: \"sample-external-access-rule\",\n parent: external_access_rule_np.id,\n description: \"Sample Description\",\n priority: 101,\n action: \"ALLOW\",\n ipProtocol: \"tcp\",\n sourceIpRanges: [{\n ipAddressRange: \"0.0.0.0/0\",\n }],\n sourcePorts: [\"80\"],\n destinationIpRanges: [{\n externalAddress: external_access_rule_ea.id,\n }],\n destinationPorts: [\"433\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexternal_access_rule_nw = gcp.vmwareengine.Network(\"external-access-rule-nw\",\n name=\"sample-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nexternal_access_rule_pc = gcp.vmwareengine.PrivateCloud(\"external-access-rule-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"management_cidr\": \"192.168.50.0/24\",\n \"vmware_engine_network\": external_access_rule_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n }],\n })\nexternal_access_rule_np = gcp.vmwareengine.NetworkPolicy(\"external-access-rule-np\",\n location=\"us-west1\",\n name=\"sample-np\",\n edge_services_cidr=\"192.168.30.0/26\",\n vmware_engine_network=external_access_rule_nw.id)\nexternal_access_rule_ea = gcp.vmwareengine.ExternalAddress(\"external-access-rule-ea\",\n name=\"sample-ea\",\n parent=external_access_rule_pc.id,\n internal_ip=\"192.168.0.65\")\nvmw_engine_external_access_rule = gcp.vmwareengine.ExternalAccessRule(\"vmw-engine-external-access-rule\",\n name=\"sample-external-access-rule\",\n parent=external_access_rule_np.id,\n description=\"Sample Description\",\n priority=101,\n action=\"ALLOW\",\n ip_protocol=\"tcp\",\n source_ip_ranges=[{\n \"ip_address_range\": \"0.0.0.0/0\",\n }],\n source_ports=[\"80\"],\n destination_ip_ranges=[{\n \"external_address\": external_access_rule_ea.id,\n }],\n destination_ports=[\"433\"])\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 external_access_rule_nw = new Gcp.VMwareEngine.Network(\"external-access-rule-nw\", new()\n {\n Name = \"sample-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var external_access_rule_pc = new Gcp.VMwareEngine.PrivateCloud(\"external-access-rule-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.50.0/24\",\n VmwareEngineNetwork = external_access_rule_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n var external_access_rule_np = new Gcp.VMwareEngine.NetworkPolicy(\"external-access-rule-np\", new()\n {\n Location = \"us-west1\",\n Name = \"sample-np\",\n EdgeServicesCidr = \"192.168.30.0/26\",\n VmwareEngineNetwork = external_access_rule_nw.Id,\n });\n\n var external_access_rule_ea = new Gcp.VMwareEngine.ExternalAddress(\"external-access-rule-ea\", new()\n {\n Name = \"sample-ea\",\n Parent = external_access_rule_pc.Id,\n InternalIp = \"192.168.0.65\",\n });\n\n var vmw_engine_external_access_rule = new Gcp.VMwareEngine.ExternalAccessRule(\"vmw-engine-external-access-rule\", new()\n {\n Name = \"sample-external-access-rule\",\n Parent = external_access_rule_np.Id,\n Description = \"Sample Description\",\n Priority = 101,\n Action = \"ALLOW\",\n IpProtocol = \"tcp\",\n SourceIpRanges = new[]\n {\n new Gcp.VMwareEngine.Inputs.ExternalAccessRuleSourceIpRangeArgs\n {\n IpAddressRange = \"0.0.0.0/0\",\n },\n },\n SourcePorts = new[]\n {\n \"80\",\n },\n DestinationIpRanges = new[]\n {\n new Gcp.VMwareEngine.Inputs.ExternalAccessRuleDestinationIpRangeArgs\n {\n ExternalAddress = external_access_rule_ea.Id,\n },\n },\n DestinationPorts = new[]\n {\n \"433\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vmwareengine\"\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 := vmwareengine.NewNetwork(ctx, \"external-access-rule-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"sample-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"external-access-rule-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.50.0/24\"),\n\t\t\t\tVmwareEngineNetwork: external_access_rule_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\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 = vmwareengine.NewNetworkPolicy(ctx, \"external-access-rule-np\", \u0026vmwareengine.NetworkPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"sample-np\"),\n\t\t\tEdgeServicesCidr: pulumi.String(\"192.168.30.0/26\"),\n\t\t\tVmwareEngineNetwork: external_access_rule_nw.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewExternalAddress(ctx, \"external-access-rule-ea\", \u0026vmwareengine.ExternalAddressArgs{\n\t\t\tName: pulumi.String(\"sample-ea\"),\n\t\t\tParent: external_access_rule_pc.ID(),\n\t\t\tInternalIp: pulumi.String(\"192.168.0.65\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewExternalAccessRule(ctx, \"vmw-engine-external-access-rule\", \u0026vmwareengine.ExternalAccessRuleArgs{\n\t\t\tName: pulumi.String(\"sample-external-access-rule\"),\n\t\t\tParent: external_access_rule_np.ID(),\n\t\t\tDescription: pulumi.String(\"Sample Description\"),\n\t\t\tPriority: pulumi.Int(101),\n\t\t\tAction: pulumi.String(\"ALLOW\"),\n\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\tSourceIpRanges: vmwareengine.ExternalAccessRuleSourceIpRangeArray{\n\t\t\t\t\u0026vmwareengine.ExternalAccessRuleSourceIpRangeArgs{\n\t\t\t\t\tIpAddressRange: pulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSourcePorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"80\"),\n\t\t\t},\n\t\t\tDestinationIpRanges: vmwareengine.ExternalAccessRuleDestinationIpRangeArray{\n\t\t\t\t\u0026vmwareengine.ExternalAccessRuleDestinationIpRangeArgs{\n\t\t\t\t\tExternalAddress: external_access_rule_ea.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationPorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"433\"),\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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicy;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicyArgs;\nimport com.pulumi.gcp.vmwareengine.ExternalAddress;\nimport com.pulumi.gcp.vmwareengine.ExternalAddressArgs;\nimport com.pulumi.gcp.vmwareengine.ExternalAccessRule;\nimport com.pulumi.gcp.vmwareengine.ExternalAccessRuleArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ExternalAccessRuleSourceIpRangeArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ExternalAccessRuleDestinationIpRangeArgs;\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 external_access_rule_nw = new Network(\"external-access-rule-nw\", NetworkArgs.builder()\n .name(\"sample-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var external_access_rule_pc = new PrivateCloud(\"external-access-rule-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.50.0/24\")\n .vmwareEngineNetwork(external_access_rule_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n var external_access_rule_np = new NetworkPolicy(\"external-access-rule-np\", NetworkPolicyArgs.builder()\n .location(\"us-west1\")\n .name(\"sample-np\")\n .edgeServicesCidr(\"192.168.30.0/26\")\n .vmwareEngineNetwork(external_access_rule_nw.id())\n .build());\n\n var external_access_rule_ea = new ExternalAddress(\"external-access-rule-ea\", ExternalAddressArgs.builder()\n .name(\"sample-ea\")\n .parent(external_access_rule_pc.id())\n .internalIp(\"192.168.0.65\")\n .build());\n\n var vmw_engine_external_access_rule = new ExternalAccessRule(\"vmw-engine-external-access-rule\", ExternalAccessRuleArgs.builder()\n .name(\"sample-external-access-rule\")\n .parent(external_access_rule_np.id())\n .description(\"Sample Description\")\n .priority(101)\n .action(\"ALLOW\")\n .ipProtocol(\"tcp\")\n .sourceIpRanges(ExternalAccessRuleSourceIpRangeArgs.builder()\n .ipAddressRange(\"0.0.0.0/0\")\n .build())\n .sourcePorts(\"80\")\n .destinationIpRanges(ExternalAccessRuleDestinationIpRangeArgs.builder()\n .externalAddress(external_access_rule_ea.id())\n .build())\n .destinationPorts(\"433\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n external-access-rule-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: sample-nw\n location: global\n type: STANDARD\n description: PC network description.\n external-access-rule-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.50.0/24\n vmwareEngineNetwork: ${[\"external-access-rule-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n external-access-rule-np:\n type: gcp:vmwareengine:NetworkPolicy\n properties:\n location: us-west1\n name: sample-np\n edgeServicesCidr: 192.168.30.0/26\n vmwareEngineNetwork: ${[\"external-access-rule-nw\"].id}\n external-access-rule-ea:\n type: gcp:vmwareengine:ExternalAddress\n properties:\n name: sample-ea\n parent: ${[\"external-access-rule-pc\"].id}\n internalIp: 192.168.0.65\n vmw-engine-external-access-rule:\n type: gcp:vmwareengine:ExternalAccessRule\n properties:\n name: sample-external-access-rule\n parent: ${[\"external-access-rule-np\"].id}\n description: Sample Description\n priority: 101\n action: ALLOW\n ipProtocol: tcp\n sourceIpRanges:\n - ipAddressRange: 0.0.0.0/0\n sourcePorts:\n - '80'\n destinationIpRanges:\n - externalAddress: ${[\"external-access-rule-ea\"].id}\n destinationPorts:\n - '433'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nExternalAccessRule can be imported using any of these accepted formats:\n\n* `{{parent}}/externalAccessRules/{{name}}`\n\nWhen using the `pulumi import` command, ExternalAccessRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/externalAccessRule:ExternalAccessRule default {{parent}}/externalAccessRules/{{name}}\n```\n\n", "properties": { "action": { "type": "string", @@ -246808,7 +246808,7 @@ } }, "gcp:vmwareengine/externalAddress:ExternalAddress": { - "description": "An allocated external IP address and its corresponding internal IP address in a private cloud.\n\n\nTo get more information about ExternalAddress, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.privateClouds.externalAddresses)\n\n## Example Usage\n\n### Vmware Engine External Address Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst external_address_nw = new gcp.vmwareengine.Network(\"external-address-nw\", {\n name: \"pc-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst external_address_pc = new gcp.vmwareengine.PrivateCloud(\"external-address-pc\", {\n location: \"-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.50.0/24\",\n vmwareEngineNetwork: external_address_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\nconst external_address_np = new gcp.vmwareengine.NetworkPolicy(\"external-address-np\", {\n location: \"\",\n name: \"sample-np\",\n edgeServicesCidr: \"192.168.30.0/26\",\n vmwareEngineNetwork: external_address_nw.id,\n});\nconst vmw_engine_external_address = new gcp.vmwareengine.ExternalAddress(\"vmw-engine-external-address\", {\n name: \"sample-external-address\",\n parent: external_address_pc.id,\n internalIp: \"192.168.0.66\",\n description: \"Sample description.\",\n}, {\n dependsOn: [external_address_np],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexternal_address_nw = gcp.vmwareengine.Network(\"external-address-nw\",\n name=\"pc-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nexternal_address_pc = gcp.vmwareengine.PrivateCloud(\"external-address-pc\",\n location=\"-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"managementCidr\": \"192.168.50.0/24\",\n \"vmwareEngineNetwork\": external_address_nw.id,\n },\n management_cluster={\n \"clusterId\": \"sample-mgmt-cluster\",\n \"nodeTypeConfigs\": [{\n \"nodeTypeId\": \"standard-72\",\n \"nodeCount\": 3,\n }],\n })\nexternal_address_np = gcp.vmwareengine.NetworkPolicy(\"external-address-np\",\n location=\"\",\n name=\"sample-np\",\n edge_services_cidr=\"192.168.30.0/26\",\n vmware_engine_network=external_address_nw.id)\nvmw_engine_external_address = gcp.vmwareengine.ExternalAddress(\"vmw-engine-external-address\",\n name=\"sample-external-address\",\n parent=external_address_pc.id,\n internal_ip=\"192.168.0.66\",\n description=\"Sample description.\",\n opts = pulumi.ResourceOptions(depends_on=[external_address_np]))\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 external_address_nw = new Gcp.VMwareEngine.Network(\"external-address-nw\", new()\n {\n Name = \"pc-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var external_address_pc = new Gcp.VMwareEngine.PrivateCloud(\"external-address-pc\", new()\n {\n Location = \"-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.50.0/24\",\n VmwareEngineNetwork = external_address_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n var external_address_np = new Gcp.VMwareEngine.NetworkPolicy(\"external-address-np\", new()\n {\n Location = \"\",\n Name = \"sample-np\",\n EdgeServicesCidr = \"192.168.30.0/26\",\n VmwareEngineNetwork = external_address_nw.Id,\n });\n\n var vmw_engine_external_address = new Gcp.VMwareEngine.ExternalAddress(\"vmw-engine-external-address\", new()\n {\n Name = \"sample-external-address\",\n Parent = external_address_pc.Id,\n InternalIp = \"192.168.0.66\",\n Description = \"Sample description.\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n external_address_np,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vmwareengine\"\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 := vmwareengine.NewNetwork(ctx, \"external-address-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"external-address-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.50.0/24\"),\n\t\t\t\tVmwareEngineNetwork: external_address_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\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 = vmwareengine.NewNetworkPolicy(ctx, \"external-address-np\", \u0026vmwareengine.NetworkPolicyArgs{\n\t\t\tLocation: pulumi.String(\"\"),\n\t\t\tName: pulumi.String(\"sample-np\"),\n\t\t\tEdgeServicesCidr: pulumi.String(\"192.168.30.0/26\"),\n\t\t\tVmwareEngineNetwork: external_address_nw.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewExternalAddress(ctx, \"vmw-engine-external-address\", \u0026vmwareengine.ExternalAddressArgs{\n\t\t\tName: pulumi.String(\"sample-external-address\"),\n\t\t\tParent: external_address_pc.ID(),\n\t\t\tInternalIp: pulumi.String(\"192.168.0.66\"),\n\t\t\tDescription: pulumi.String(\"Sample description.\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texternal_address_np,\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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicy;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicyArgs;\nimport com.pulumi.gcp.vmwareengine.ExternalAddress;\nimport com.pulumi.gcp.vmwareengine.ExternalAddressArgs;\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 external_address_nw = new Network(\"external-address-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var external_address_pc = new PrivateCloud(\"external-address-pc\", PrivateCloudArgs.builder()\n .location(\"-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.50.0/24\")\n .vmwareEngineNetwork(external_address_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n var external_address_np = new NetworkPolicy(\"external-address-np\", NetworkPolicyArgs.builder()\n .location(\"\")\n .name(\"sample-np\")\n .edgeServicesCidr(\"192.168.30.0/26\")\n .vmwareEngineNetwork(external_address_nw.id())\n .build());\n\n var vmw_engine_external_address = new ExternalAddress(\"vmw-engine-external-address\", ExternalAddressArgs.builder()\n .name(\"sample-external-address\")\n .parent(external_address_pc.id())\n .internalIp(\"192.168.0.66\")\n .description(\"Sample description.\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(external_address_np)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n external-address-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n location: global\n type: STANDARD\n description: PC network description.\n external-address-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: -a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.50.0/24\n vmwareEngineNetwork: ${[\"external-address-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n external-address-np:\n type: gcp:vmwareengine:NetworkPolicy\n properties:\n location:\n name: sample-np\n edgeServicesCidr: 192.168.30.0/26\n vmwareEngineNetwork: ${[\"external-address-nw\"].id}\n vmw-engine-external-address:\n type: gcp:vmwareengine:ExternalAddress\n properties:\n name: sample-external-address\n parent: ${[\"external-address-pc\"].id}\n internalIp: 192.168.0.66\n description: Sample description.\n options:\n dependson:\n - ${[\"external-address-np\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nExternalAddress can be imported using any of these accepted formats:\n\n* `{{parent}}/externalAddresses/{{name}}`\n\nWhen using the `pulumi import` command, ExternalAddress can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/externalAddress:ExternalAddress default {{parent}}/externalAddresses/{{name}}\n```\n\n", + "description": "An allocated external IP address and its corresponding internal IP address in a private cloud.\n\n\nTo get more information about ExternalAddress, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.privateClouds.externalAddresses)\n\n## Example Usage\n\n### Vmware Engine External Address Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst external_address_nw = new gcp.vmwareengine.Network(\"external-address-nw\", {\n name: \"pc-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst external_address_pc = new gcp.vmwareengine.PrivateCloud(\"external-address-pc\", {\n location: \"-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.50.0/24\",\n vmwareEngineNetwork: external_address_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\nconst external_address_np = new gcp.vmwareengine.NetworkPolicy(\"external-address-np\", {\n location: \"\",\n name: \"sample-np\",\n edgeServicesCidr: \"192.168.30.0/26\",\n vmwareEngineNetwork: external_address_nw.id,\n});\nconst vmw_engine_external_address = new gcp.vmwareengine.ExternalAddress(\"vmw-engine-external-address\", {\n name: \"sample-external-address\",\n parent: external_address_pc.id,\n internalIp: \"192.168.0.66\",\n description: \"Sample description.\",\n}, {\n dependsOn: [external_address_np],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexternal_address_nw = gcp.vmwareengine.Network(\"external-address-nw\",\n name=\"pc-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nexternal_address_pc = gcp.vmwareengine.PrivateCloud(\"external-address-pc\",\n location=\"-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"management_cidr\": \"192.168.50.0/24\",\n \"vmware_engine_network\": external_address_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n }],\n })\nexternal_address_np = gcp.vmwareengine.NetworkPolicy(\"external-address-np\",\n location=\"\",\n name=\"sample-np\",\n edge_services_cidr=\"192.168.30.0/26\",\n vmware_engine_network=external_address_nw.id)\nvmw_engine_external_address = gcp.vmwareengine.ExternalAddress(\"vmw-engine-external-address\",\n name=\"sample-external-address\",\n parent=external_address_pc.id,\n internal_ip=\"192.168.0.66\",\n description=\"Sample description.\",\n opts = pulumi.ResourceOptions(depends_on=[external_address_np]))\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 external_address_nw = new Gcp.VMwareEngine.Network(\"external-address-nw\", new()\n {\n Name = \"pc-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var external_address_pc = new Gcp.VMwareEngine.PrivateCloud(\"external-address-pc\", new()\n {\n Location = \"-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.50.0/24\",\n VmwareEngineNetwork = external_address_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n var external_address_np = new Gcp.VMwareEngine.NetworkPolicy(\"external-address-np\", new()\n {\n Location = \"\",\n Name = \"sample-np\",\n EdgeServicesCidr = \"192.168.30.0/26\",\n VmwareEngineNetwork = external_address_nw.Id,\n });\n\n var vmw_engine_external_address = new Gcp.VMwareEngine.ExternalAddress(\"vmw-engine-external-address\", new()\n {\n Name = \"sample-external-address\",\n Parent = external_address_pc.Id,\n InternalIp = \"192.168.0.66\",\n Description = \"Sample description.\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n external_address_np,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vmwareengine\"\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 := vmwareengine.NewNetwork(ctx, \"external-address-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"external-address-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.50.0/24\"),\n\t\t\t\tVmwareEngineNetwork: external_address_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\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 = vmwareengine.NewNetworkPolicy(ctx, \"external-address-np\", \u0026vmwareengine.NetworkPolicyArgs{\n\t\t\tLocation: pulumi.String(\"\"),\n\t\t\tName: pulumi.String(\"sample-np\"),\n\t\t\tEdgeServicesCidr: pulumi.String(\"192.168.30.0/26\"),\n\t\t\tVmwareEngineNetwork: external_address_nw.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewExternalAddress(ctx, \"vmw-engine-external-address\", \u0026vmwareengine.ExternalAddressArgs{\n\t\t\tName: pulumi.String(\"sample-external-address\"),\n\t\t\tParent: external_address_pc.ID(),\n\t\t\tInternalIp: pulumi.String(\"192.168.0.66\"),\n\t\t\tDescription: pulumi.String(\"Sample description.\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texternal_address_np,\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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicy;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicyArgs;\nimport com.pulumi.gcp.vmwareengine.ExternalAddress;\nimport com.pulumi.gcp.vmwareengine.ExternalAddressArgs;\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 external_address_nw = new Network(\"external-address-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var external_address_pc = new PrivateCloud(\"external-address-pc\", PrivateCloudArgs.builder()\n .location(\"-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.50.0/24\")\n .vmwareEngineNetwork(external_address_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n var external_address_np = new NetworkPolicy(\"external-address-np\", NetworkPolicyArgs.builder()\n .location(\"\")\n .name(\"sample-np\")\n .edgeServicesCidr(\"192.168.30.0/26\")\n .vmwareEngineNetwork(external_address_nw.id())\n .build());\n\n var vmw_engine_external_address = new ExternalAddress(\"vmw-engine-external-address\", ExternalAddressArgs.builder()\n .name(\"sample-external-address\")\n .parent(external_address_pc.id())\n .internalIp(\"192.168.0.66\")\n .description(\"Sample description.\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(external_address_np)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n external-address-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n location: global\n type: STANDARD\n description: PC network description.\n external-address-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: -a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.50.0/24\n vmwareEngineNetwork: ${[\"external-address-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n external-address-np:\n type: gcp:vmwareengine:NetworkPolicy\n properties:\n location:\n name: sample-np\n edgeServicesCidr: 192.168.30.0/26\n vmwareEngineNetwork: ${[\"external-address-nw\"].id}\n vmw-engine-external-address:\n type: gcp:vmwareengine:ExternalAddress\n properties:\n name: sample-external-address\n parent: ${[\"external-address-pc\"].id}\n internalIp: 192.168.0.66\n description: Sample description.\n options:\n dependson:\n - ${[\"external-address-np\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nExternalAddress can be imported using any of these accepted formats:\n\n* `{{parent}}/externalAddresses/{{name}}`\n\nWhen using the `pulumi import` command, ExternalAddress can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/externalAddress:ExternalAddress default {{parent}}/externalAddresses/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -247421,7 +247421,7 @@ } }, "gcp:vmwareengine/privateCloud:PrivateCloud": { - "description": "Represents a private cloud resource. Private clouds are zonal resources.\n\n\nTo get more information about PrivateCloud, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.privateClouds)\n\n## Example Usage\n\n### Vmware Engine Private Cloud Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pc_nw = new gcp.vmwareengine.Network(\"pc-nw\", {\n name: \"pc-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst vmw_engine_pc = new gcp.vmwareengine.PrivateCloud(\"vmw-engine-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.30.0/24\",\n vmwareEngineNetwork: pc_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npc_nw = gcp.vmwareengine.Network(\"pc-nw\",\n name=\"pc-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nvmw_engine_pc = gcp.vmwareengine.PrivateCloud(\"vmw-engine-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"managementCidr\": \"192.168.30.0/24\",\n \"vmwareEngineNetwork\": pc_nw.id,\n },\n management_cluster={\n \"clusterId\": \"sample-mgmt-cluster\",\n \"nodeTypeConfigs\": [{\n \"nodeTypeId\": \"standard-72\",\n \"nodeCount\": 3,\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 pc_nw = new Gcp.VMwareEngine.Network(\"pc-nw\", new()\n {\n Name = \"pc-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var vmw_engine_pc = new Gcp.VMwareEngine.PrivateCloud(\"vmw-engine-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.30.0/24\",\n VmwareEngineNetwork = pc_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vmwareengine\"\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 := vmwareengine.NewNetwork(ctx, \"pc-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"vmw-engine-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.30.0/24\"),\n\t\t\t\tVmwareEngineNetwork: pc_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\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 pc_nw = new Network(\"pc-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var vmw_engine_pc = new PrivateCloud(\"vmw-engine-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.30.0/24\")\n .vmwareEngineNetwork(pc_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmw-engine-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.30.0/24\n vmwareEngineNetwork: ${[\"pc-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n pc-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n location: global\n type: STANDARD\n description: PC network description.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vmware Engine Private Cloud Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pc_nw = new gcp.vmwareengine.Network(\"pc-nw\", {\n name: \"pc-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst vmw_engine_pc = new gcp.vmwareengine.PrivateCloud(\"vmw-engine-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n type: \"TIME_LIMITED\",\n networkConfig: {\n managementCidr: \"192.168.30.0/24\",\n vmwareEngineNetwork: pc_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 1,\n customCoreCount: 32,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npc_nw = gcp.vmwareengine.Network(\"pc-nw\",\n name=\"pc-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nvmw_engine_pc = gcp.vmwareengine.PrivateCloud(\"vmw-engine-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n type=\"TIME_LIMITED\",\n network_config={\n \"managementCidr\": \"192.168.30.0/24\",\n \"vmwareEngineNetwork\": pc_nw.id,\n },\n management_cluster={\n \"clusterId\": \"sample-mgmt-cluster\",\n \"nodeTypeConfigs\": [{\n \"nodeTypeId\": \"standard-72\",\n \"nodeCount\": 1,\n \"customCoreCount\": 32,\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 pc_nw = new Gcp.VMwareEngine.Network(\"pc-nw\", new()\n {\n Name = \"pc-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var vmw_engine_pc = new Gcp.VMwareEngine.PrivateCloud(\"vmw-engine-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n Type = \"TIME_LIMITED\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.30.0/24\",\n VmwareEngineNetwork = pc_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 1,\n CustomCoreCount = 32,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vmwareengine\"\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 := vmwareengine.NewNetwork(ctx, \"pc-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"vmw-engine-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tType: pulumi.String(\"TIME_LIMITED\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.30.0/24\"),\n\t\t\t\tVmwareEngineNetwork: pc_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(1),\n\t\t\t\t\t\tCustomCoreCount: pulumi.Int(32),\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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\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 pc_nw = new Network(\"pc-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var vmw_engine_pc = new PrivateCloud(\"vmw-engine-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .type(\"TIME_LIMITED\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.30.0/24\")\n .vmwareEngineNetwork(pc_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(1)\n .customCoreCount(32)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmw-engine-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n type: TIME_LIMITED\n networkConfig:\n managementCidr: 192.168.30.0/24\n vmwareEngineNetwork: ${[\"pc-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 1\n customCoreCount: 32\n pc-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n location: global\n type: STANDARD\n description: PC network description.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPrivateCloud can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/privateClouds/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, PrivateCloud can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/privateCloud:PrivateCloud default projects/{{project}}/locations/{{location}}/privateClouds/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vmwareengine/privateCloud:PrivateCloud default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vmwareengine/privateCloud:PrivateCloud default {{location}}/{{name}}\n```\n\n", + "description": "Represents a private cloud resource. Private clouds are zonal resources.\n\n\nTo get more information about PrivateCloud, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.privateClouds)\n\n## Example Usage\n\n### Vmware Engine Private Cloud Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pc_nw = new gcp.vmwareengine.Network(\"pc-nw\", {\n name: \"pc-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst vmw_engine_pc = new gcp.vmwareengine.PrivateCloud(\"vmw-engine-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.30.0/24\",\n vmwareEngineNetwork: pc_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npc_nw = gcp.vmwareengine.Network(\"pc-nw\",\n name=\"pc-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nvmw_engine_pc = gcp.vmwareengine.PrivateCloud(\"vmw-engine-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"management_cidr\": \"192.168.30.0/24\",\n \"vmware_engine_network\": pc_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\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 pc_nw = new Gcp.VMwareEngine.Network(\"pc-nw\", new()\n {\n Name = \"pc-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var vmw_engine_pc = new Gcp.VMwareEngine.PrivateCloud(\"vmw-engine-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.30.0/24\",\n VmwareEngineNetwork = pc_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vmwareengine\"\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 := vmwareengine.NewNetwork(ctx, \"pc-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"vmw-engine-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.30.0/24\"),\n\t\t\t\tVmwareEngineNetwork: pc_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\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 pc_nw = new Network(\"pc-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var vmw_engine_pc = new PrivateCloud(\"vmw-engine-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.30.0/24\")\n .vmwareEngineNetwork(pc_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmw-engine-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.30.0/24\n vmwareEngineNetwork: ${[\"pc-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n pc-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n location: global\n type: STANDARD\n description: PC network description.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vmware Engine Private Cloud Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pc_nw = new gcp.vmwareengine.Network(\"pc-nw\", {\n name: \"pc-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst vmw_engine_pc = new gcp.vmwareengine.PrivateCloud(\"vmw-engine-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n type: \"TIME_LIMITED\",\n networkConfig: {\n managementCidr: \"192.168.30.0/24\",\n vmwareEngineNetwork: pc_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 1,\n customCoreCount: 32,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npc_nw = gcp.vmwareengine.Network(\"pc-nw\",\n name=\"pc-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nvmw_engine_pc = gcp.vmwareengine.PrivateCloud(\"vmw-engine-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n type=\"TIME_LIMITED\",\n network_config={\n \"management_cidr\": \"192.168.30.0/24\",\n \"vmware_engine_network\": pc_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 1,\n \"custom_core_count\": 32,\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 pc_nw = new Gcp.VMwareEngine.Network(\"pc-nw\", new()\n {\n Name = \"pc-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var vmw_engine_pc = new Gcp.VMwareEngine.PrivateCloud(\"vmw-engine-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n Type = \"TIME_LIMITED\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.30.0/24\",\n VmwareEngineNetwork = pc_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 1,\n CustomCoreCount = 32,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vmwareengine\"\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 := vmwareengine.NewNetwork(ctx, \"pc-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"vmw-engine-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tType: pulumi.String(\"TIME_LIMITED\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.30.0/24\"),\n\t\t\t\tVmwareEngineNetwork: pc_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(1),\n\t\t\t\t\t\tCustomCoreCount: pulumi.Int(32),\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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\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 pc_nw = new Network(\"pc-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var vmw_engine_pc = new PrivateCloud(\"vmw-engine-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .type(\"TIME_LIMITED\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.30.0/24\")\n .vmwareEngineNetwork(pc_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(1)\n .customCoreCount(32)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmw-engine-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n type: TIME_LIMITED\n networkConfig:\n managementCidr: 192.168.30.0/24\n vmwareEngineNetwork: ${[\"pc-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 1\n customCoreCount: 32\n pc-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n location: global\n type: STANDARD\n description: PC network description.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPrivateCloud can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/privateClouds/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, PrivateCloud can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/privateCloud:PrivateCloud default projects/{{project}}/locations/{{location}}/privateClouds/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vmwareengine/privateCloud:PrivateCloud default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vmwareengine/privateCloud:PrivateCloud default {{location}}/{{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -247600,7 +247600,7 @@ } }, "gcp:vmwareengine/subnet:Subnet": { - "description": "Subnet in a private cloud. A Private Cloud contains two types of subnets: `management` subnets (such as vMotion) that\nare read-only,and `userDefined`, which can also be updated. This resource should be used to read and update `userDefined`\nsubnets. To read `management` subnets, please utilize the subnet data source.\n\n\nTo get more information about Subnet, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.privateClouds.subnets)\n\n## Example Usage\n\n### Vmware Engine Subnet User Defined\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst subnet_nw = new gcp.vmwareengine.Network(\"subnet-nw\", {\n name: \"pc-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst subnet_pc = new gcp.vmwareengine.PrivateCloud(\"subnet-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.50.0/24\",\n vmwareEngineNetwork: subnet_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\nconst vmw_engine_subnet = new gcp.vmwareengine.Subnet(\"vmw-engine-subnet\", {\n name: \"service-1\",\n parent: subnet_pc.id,\n ipCidrRange: \"192.168.100.0/26\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsubnet_nw = gcp.vmwareengine.Network(\"subnet-nw\",\n name=\"pc-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nsubnet_pc = gcp.vmwareengine.PrivateCloud(\"subnet-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"managementCidr\": \"192.168.50.0/24\",\n \"vmwareEngineNetwork\": subnet_nw.id,\n },\n management_cluster={\n \"clusterId\": \"sample-mgmt-cluster\",\n \"nodeTypeConfigs\": [{\n \"nodeTypeId\": \"standard-72\",\n \"nodeCount\": 3,\n }],\n })\nvmw_engine_subnet = gcp.vmwareengine.Subnet(\"vmw-engine-subnet\",\n name=\"service-1\",\n parent=subnet_pc.id,\n ip_cidr_range=\"192.168.100.0/26\")\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 subnet_nw = new Gcp.VMwareEngine.Network(\"subnet-nw\", new()\n {\n Name = \"pc-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var subnet_pc = new Gcp.VMwareEngine.PrivateCloud(\"subnet-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.50.0/24\",\n VmwareEngineNetwork = subnet_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n var vmw_engine_subnet = new Gcp.VMwareEngine.Subnet(\"vmw-engine-subnet\", new()\n {\n Name = \"service-1\",\n Parent = subnet_pc.Id,\n IpCidrRange = \"192.168.100.0/26\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vmwareengine\"\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 := vmwareengine.NewNetwork(ctx, \"subnet-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"subnet-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.50.0/24\"),\n\t\t\t\tVmwareEngineNetwork: subnet_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\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 = vmwareengine.NewSubnet(ctx, \"vmw-engine-subnet\", \u0026vmwareengine.SubnetArgs{\n\t\t\tName: pulumi.String(\"service-1\"),\n\t\t\tParent: subnet_pc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.100.0/26\"),\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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.Subnet;\nimport com.pulumi.gcp.vmwareengine.SubnetArgs;\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 subnet_nw = new Network(\"subnet-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var subnet_pc = new PrivateCloud(\"subnet-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.50.0/24\")\n .vmwareEngineNetwork(subnet_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n var vmw_engine_subnet = new Subnet(\"vmw-engine-subnet\", SubnetArgs.builder()\n .name(\"service-1\")\n .parent(subnet_pc.id())\n .ipCidrRange(\"192.168.100.0/26\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnet-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n location: global\n type: STANDARD\n description: PC network description.\n subnet-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.50.0/24\n vmwareEngineNetwork: ${[\"subnet-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n vmw-engine-subnet:\n type: gcp:vmwareengine:Subnet\n properties:\n name: service-1\n parent: ${[\"subnet-pc\"].id}\n ipCidrRange: 192.168.100.0/26\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubnet can be imported using any of these accepted formats:\n\n* `{{parent}}/subnets/{{name}}`\n\nWhen using the `pulumi import` command, Subnet can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/subnet:Subnet default {{parent}}/subnets/{{name}}\n```\n\n", + "description": "Subnet in a private cloud. A Private Cloud contains two types of subnets: `management` subnets (such as vMotion) that\nare read-only,and `userDefined`, which can also be updated. This resource should be used to read and update `userDefined`\nsubnets. To read `management` subnets, please utilize the subnet data source.\n\n\nTo get more information about Subnet, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.privateClouds.subnets)\n\n## Example Usage\n\n### Vmware Engine Subnet User Defined\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst subnet_nw = new gcp.vmwareengine.Network(\"subnet-nw\", {\n name: \"pc-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst subnet_pc = new gcp.vmwareengine.PrivateCloud(\"subnet-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.50.0/24\",\n vmwareEngineNetwork: subnet_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\nconst vmw_engine_subnet = new gcp.vmwareengine.Subnet(\"vmw-engine-subnet\", {\n name: \"service-1\",\n parent: subnet_pc.id,\n ipCidrRange: \"192.168.100.0/26\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsubnet_nw = gcp.vmwareengine.Network(\"subnet-nw\",\n name=\"pc-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nsubnet_pc = gcp.vmwareengine.PrivateCloud(\"subnet-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"management_cidr\": \"192.168.50.0/24\",\n \"vmware_engine_network\": subnet_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n }],\n })\nvmw_engine_subnet = gcp.vmwareengine.Subnet(\"vmw-engine-subnet\",\n name=\"service-1\",\n parent=subnet_pc.id,\n ip_cidr_range=\"192.168.100.0/26\")\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 subnet_nw = new Gcp.VMwareEngine.Network(\"subnet-nw\", new()\n {\n Name = \"pc-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var subnet_pc = new Gcp.VMwareEngine.PrivateCloud(\"subnet-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.50.0/24\",\n VmwareEngineNetwork = subnet_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n var vmw_engine_subnet = new Gcp.VMwareEngine.Subnet(\"vmw-engine-subnet\", new()\n {\n Name = \"service-1\",\n Parent = subnet_pc.Id,\n IpCidrRange = \"192.168.100.0/26\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/vmwareengine\"\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 := vmwareengine.NewNetwork(ctx, \"subnet-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"subnet-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.50.0/24\"),\n\t\t\t\tVmwareEngineNetwork: subnet_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\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 = vmwareengine.NewSubnet(ctx, \"vmw-engine-subnet\", \u0026vmwareengine.SubnetArgs{\n\t\t\tName: pulumi.String(\"service-1\"),\n\t\t\tParent: subnet_pc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.100.0/26\"),\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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.Subnet;\nimport com.pulumi.gcp.vmwareengine.SubnetArgs;\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 subnet_nw = new Network(\"subnet-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var subnet_pc = new PrivateCloud(\"subnet-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.50.0/24\")\n .vmwareEngineNetwork(subnet_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n var vmw_engine_subnet = new Subnet(\"vmw-engine-subnet\", SubnetArgs.builder()\n .name(\"service-1\")\n .parent(subnet_pc.id())\n .ipCidrRange(\"192.168.100.0/26\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnet-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n location: global\n type: STANDARD\n description: PC network description.\n subnet-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.50.0/24\n vmwareEngineNetwork: ${[\"subnet-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n vmw-engine-subnet:\n type: gcp:vmwareengine:Subnet\n properties:\n name: service-1\n parent: ${[\"subnet-pc\"].id}\n ipCidrRange: 192.168.100.0/26\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubnet can be imported using any of these accepted formats:\n\n* `{{parent}}/subnets/{{name}}`\n\nWhen using the `pulumi import` command, Subnet can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/subnet:Subnet default {{parent}}/subnets/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -247966,7 +247966,7 @@ } }, "gcp:workbench/instance:Instance": { - "description": "A Workbench instance.\n\n\n\n## Example Usage\n\n### Workbench Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-west1-a\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-west1-a\")\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.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-west1-a\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\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 := workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\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.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"workbench-instance\")\n .location(\"us-west1-a\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-west1-a\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workbench Instance Basic Container\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-west1-a\",\n gceSetup: {\n containerImage: {\n repository: \"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\",\n tag: \"latest\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-west1-a\",\n gce_setup={\n \"containerImage\": {\n \"repository\": \"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\",\n \"tag\": \"latest\",\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.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-west1-a\",\n GceSetup = new Gcp.Workbench.Inputs.InstanceGceSetupArgs\n {\n ContainerImage = new Gcp.Workbench.Inputs.InstanceGceSetupContainerImageArgs\n {\n Repository = \"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\",\n Tag = \"latest\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\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 := workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tGceSetup: \u0026workbench.InstanceGceSetupArgs{\n\t\t\t\tContainerImage: \u0026workbench.InstanceGceSetupContainerImageArgs{\n\t\t\t\t\tRepository: pulumi.String(\"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\"),\n\t\t\t\t\tTag: pulumi.String(\"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\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.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupContainerImageArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"workbench-instance\")\n .location(\"us-west1-a\")\n .gceSetup(InstanceGceSetupArgs.builder()\n .containerImage(InstanceGceSetupContainerImageArgs.builder()\n .repository(\"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\")\n .tag(\"latest\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-west1-a\n gceSetup:\n containerImage:\n repository: us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\n tag: latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workbench Instance Basic Gpu\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-central1-a\",\n gceSetup: {\n machineType: \"n1-standard-1\",\n acceleratorConfigs: [{\n type: \"NVIDIA_TESLA_T4\",\n coreCount: \"1\",\n }],\n vmImage: {\n project: \"cloud-notebooks-managed\",\n family: \"workbench-instances\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-central1-a\",\n gce_setup={\n \"machineType\": \"n1-standard-1\",\n \"acceleratorConfigs\": [{\n \"type\": \"NVIDIA_TESLA_T4\",\n \"coreCount\": \"1\",\n }],\n \"vmImage\": {\n \"project\": \"cloud-notebooks-managed\",\n \"family\": \"workbench-instances\",\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.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-central1-a\",\n GceSetup = new Gcp.Workbench.Inputs.InstanceGceSetupArgs\n {\n MachineType = \"n1-standard-1\",\n AcceleratorConfigs = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupAcceleratorConfigArgs\n {\n Type = \"NVIDIA_TESLA_T4\",\n CoreCount = \"1\",\n },\n },\n VmImage = new Gcp.Workbench.Inputs.InstanceGceSetupVmImageArgs\n {\n Project = \"cloud-notebooks-managed\",\n Family = \"workbench-instances\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\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 := workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tGceSetup: \u0026workbench.InstanceGceSetupArgs{\n\t\t\t\tMachineType: pulumi.String(\"n1-standard-1\"),\n\t\t\t\tAcceleratorConfigs: workbench.InstanceGceSetupAcceleratorConfigArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupAcceleratorConfigArgs{\n\t\t\t\t\t\tType: pulumi.String(\"NVIDIA_TESLA_T4\"),\n\t\t\t\t\t\tCoreCount: pulumi.String(\"1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVmImage: \u0026workbench.InstanceGceSetupVmImageArgs{\n\t\t\t\t\tProject: pulumi.String(\"cloud-notebooks-managed\"),\n\t\t\t\t\tFamily: pulumi.String(\"workbench-instances\"),\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.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupVmImageArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"workbench-instance\")\n .location(\"us-central1-a\")\n .gceSetup(InstanceGceSetupArgs.builder()\n .machineType(\"n1-standard-1\")\n .acceleratorConfigs(InstanceGceSetupAcceleratorConfigArgs.builder()\n .type(\"NVIDIA_TESLA_T4\")\n .coreCount(1)\n .build())\n .vmImage(InstanceGceSetupVmImageArgs.builder()\n .project(\"cloud-notebooks-managed\")\n .family(\"workbench-instances\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-central1-a\n gceSetup:\n machineType: n1-standard-1\n acceleratorConfigs:\n - type: NVIDIA_TESLA_T4\n coreCount: 1\n vmImage:\n project: cloud-notebooks-managed\n family: workbench-instances\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workbench Instance Labels Stopped\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-central1-a\",\n gceSetup: {\n machineType: \"e2-standard-4\",\n shieldedInstanceConfig: {\n enableSecureBoot: false,\n enableVtpm: false,\n enableIntegrityMonitoring: false,\n },\n serviceAccounts: [{\n email: \"my@service-account.com\",\n }],\n metadata: {\n terraform: \"true\",\n },\n },\n instanceOwners: [\"my@service-account.com\"],\n labels: {\n k: \"val\",\n },\n desiredState: \"STOPPED\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-central1-a\",\n gce_setup={\n \"machineType\": \"e2-standard-4\",\n \"shieldedInstanceConfig\": {\n \"enableSecureBoot\": False,\n \"enableVtpm\": False,\n \"enableIntegrityMonitoring\": False,\n },\n \"serviceAccounts\": [{\n \"email\": \"my@service-account.com\",\n }],\n \"metadata\": {\n \"terraform\": \"true\",\n },\n },\n instance_owners=[\"my@service-account.com\"],\n labels={\n \"k\": \"val\",\n },\n desired_state=\"STOPPED\")\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.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-central1-a\",\n GceSetup = new Gcp.Workbench.Inputs.InstanceGceSetupArgs\n {\n MachineType = \"e2-standard-4\",\n ShieldedInstanceConfig = new Gcp.Workbench.Inputs.InstanceGceSetupShieldedInstanceConfigArgs\n {\n EnableSecureBoot = false,\n EnableVtpm = false,\n EnableIntegrityMonitoring = false,\n },\n ServiceAccounts = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupServiceAccountArgs\n {\n Email = \"my@service-account.com\",\n },\n },\n Metadata = \n {\n { \"terraform\", \"true\" },\n },\n },\n InstanceOwners = new[]\n {\n \"my@service-account.com\",\n },\n Labels = \n {\n { \"k\", \"val\" },\n },\n DesiredState = \"STOPPED\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\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 := workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tGceSetup: \u0026workbench.InstanceGceSetupArgs{\n\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\tShieldedInstanceConfig: \u0026workbench.InstanceGceSetupShieldedInstanceConfigArgs{\n\t\t\t\t\tEnableSecureBoot: pulumi.Bool(false),\n\t\t\t\t\tEnableVtpm: pulumi.Bool(false),\n\t\t\t\t\tEnableIntegrityMonitoring: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tServiceAccounts: workbench.InstanceGceSetupServiceAccountArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupServiceAccountArgs{\n\t\t\t\t\t\tEmail: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"terraform\": pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tInstanceOwners: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my@service-account.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"k\": pulumi.String(\"val\"),\n\t\t\t},\n\t\t\tDesiredState: pulumi.String(\"STOPPED\"),\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.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupShieldedInstanceConfigArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"workbench-instance\")\n .location(\"us-central1-a\")\n .gceSetup(InstanceGceSetupArgs.builder()\n .machineType(\"e2-standard-4\")\n .shieldedInstanceConfig(InstanceGceSetupShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(false)\n .enableVtpm(false)\n .enableIntegrityMonitoring(false)\n .build())\n .serviceAccounts(InstanceGceSetupServiceAccountArgs.builder()\n .email(\"my@service-account.com\")\n .build())\n .metadata(Map.of(\"terraform\", \"true\"))\n .build())\n .instanceOwners(\"my@service-account.com\")\n .labels(Map.of(\"k\", \"val\"))\n .desiredState(\"STOPPED\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-central1-a\n gceSetup:\n machineType: e2-standard-4\n shieldedInstanceConfig:\n enableSecureBoot: false\n enableVtpm: false\n enableIntegrityMonitoring: false\n serviceAccounts:\n - email: my@service-account.com\n metadata:\n terraform: 'true'\n instanceOwners:\n - my@service-account.com\n labels:\n k: val\n desiredState: STOPPED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workbench Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myNetwork = new gcp.compute.Network(\"my_network\", {\n name: \"wbi-test-default\",\n autoCreateSubnetworks: false,\n});\nconst mySubnetwork = new gcp.compute.Subnetwork(\"my_subnetwork\", {\n name: \"wbi-test-default\",\n network: myNetwork.id,\n region: \"us-central1\",\n ipCidrRange: \"10.0.1.0/24\",\n});\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-central1-a\",\n gceSetup: {\n machineType: \"n1-standard-4\",\n acceleratorConfigs: [{\n type: \"NVIDIA_TESLA_T4\",\n coreCount: \"1\",\n }],\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n enableIntegrityMonitoring: true,\n },\n disablePublicIp: false,\n serviceAccounts: [{\n email: \"my@service-account.com\",\n }],\n bootDisk: {\n diskSizeGb: \"310\",\n diskType: \"PD_SSD\",\n diskEncryption: \"CMEK\",\n kmsKey: \"my-crypto-key\",\n },\n dataDisks: {\n diskSizeGb: \"330\",\n diskType: \"PD_SSD\",\n diskEncryption: \"CMEK\",\n kmsKey: \"my-crypto-key\",\n },\n networkInterfaces: [{\n network: myNetwork.id,\n subnet: mySubnetwork.id,\n nicType: \"GVNIC\",\n }],\n metadata: {\n terraform: \"true\",\n },\n enableIpForwarding: true,\n tags: [\n \"abc\",\n \"def\",\n ],\n },\n disableProxyAccess: true,\n instanceOwners: [\"my@service-account.com\"],\n labels: {\n k: \"val\",\n },\n desiredState: \"ACTIVE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_network = gcp.compute.Network(\"my_network\",\n name=\"wbi-test-default\",\n auto_create_subnetworks=False)\nmy_subnetwork = gcp.compute.Subnetwork(\"my_subnetwork\",\n name=\"wbi-test-default\",\n network=my_network.id,\n region=\"us-central1\",\n ip_cidr_range=\"10.0.1.0/24\")\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-central1-a\",\n gce_setup={\n \"machineType\": \"n1-standard-4\",\n \"acceleratorConfigs\": [{\n \"type\": \"NVIDIA_TESLA_T4\",\n \"coreCount\": \"1\",\n }],\n \"shieldedInstanceConfig\": {\n \"enableSecureBoot\": True,\n \"enableVtpm\": True,\n \"enableIntegrityMonitoring\": True,\n },\n \"disablePublicIp\": False,\n \"serviceAccounts\": [{\n \"email\": \"my@service-account.com\",\n }],\n \"bootDisk\": {\n \"diskSizeGb\": \"310\",\n \"diskType\": \"PD_SSD\",\n \"diskEncryption\": \"CMEK\",\n \"kmsKey\": \"my-crypto-key\",\n },\n \"dataDisks\": {\n \"diskSizeGb\": \"330\",\n \"diskType\": \"PD_SSD\",\n \"diskEncryption\": \"CMEK\",\n \"kmsKey\": \"my-crypto-key\",\n },\n \"networkInterfaces\": [{\n \"network\": my_network.id,\n \"subnet\": my_subnetwork.id,\n \"nicType\": \"GVNIC\",\n }],\n \"metadata\": {\n \"terraform\": \"true\",\n },\n \"enableIpForwarding\": True,\n \"tags\": [\n \"abc\",\n \"def\",\n ],\n },\n disable_proxy_access=True,\n instance_owners=[\"my@service-account.com\"],\n labels={\n \"k\": \"val\",\n },\n desired_state=\"ACTIVE\")\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 myNetwork = new Gcp.Compute.Network(\"my_network\", new()\n {\n Name = \"wbi-test-default\",\n AutoCreateSubnetworks = false,\n });\n\n var mySubnetwork = new Gcp.Compute.Subnetwork(\"my_subnetwork\", new()\n {\n Name = \"wbi-test-default\",\n Network = myNetwork.Id,\n Region = \"us-central1\",\n IpCidrRange = \"10.0.1.0/24\",\n });\n\n var instance = new Gcp.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-central1-a\",\n GceSetup = new Gcp.Workbench.Inputs.InstanceGceSetupArgs\n {\n MachineType = \"n1-standard-4\",\n AcceleratorConfigs = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupAcceleratorConfigArgs\n {\n Type = \"NVIDIA_TESLA_T4\",\n CoreCount = \"1\",\n },\n },\n ShieldedInstanceConfig = new Gcp.Workbench.Inputs.InstanceGceSetupShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n EnableIntegrityMonitoring = true,\n },\n DisablePublicIp = false,\n ServiceAccounts = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupServiceAccountArgs\n {\n Email = \"my@service-account.com\",\n },\n },\n BootDisk = new Gcp.Workbench.Inputs.InstanceGceSetupBootDiskArgs\n {\n DiskSizeGb = \"310\",\n DiskType = \"PD_SSD\",\n DiskEncryption = \"CMEK\",\n KmsKey = \"my-crypto-key\",\n },\n DataDisks = new Gcp.Workbench.Inputs.InstanceGceSetupDataDisksArgs\n {\n DiskSizeGb = \"330\",\n DiskType = \"PD_SSD\",\n DiskEncryption = \"CMEK\",\n KmsKey = \"my-crypto-key\",\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupNetworkInterfaceArgs\n {\n Network = myNetwork.Id,\n Subnet = mySubnetwork.Id,\n NicType = \"GVNIC\",\n },\n },\n Metadata = \n {\n { \"terraform\", \"true\" },\n },\n EnableIpForwarding = true,\n Tags = new[]\n {\n \"abc\",\n \"def\",\n },\n },\n DisableProxyAccess = true,\n InstanceOwners = new[]\n {\n \"my@service-account.com\",\n },\n Labels = \n {\n { \"k\", \"val\" },\n },\n DesiredState = \"ACTIVE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyNetwork, err := compute.NewNetwork(ctx, \"my_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"wbi-test-default\"),\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\tmySubnetwork, err := compute.NewSubnetwork(ctx, \"my_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"wbi-test-default\"),\n\t\t\tNetwork: myNetwork.ID(),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tGceSetup: \u0026workbench.InstanceGceSetupArgs{\n\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\tAcceleratorConfigs: workbench.InstanceGceSetupAcceleratorConfigArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupAcceleratorConfigArgs{\n\t\t\t\t\t\tType: pulumi.String(\"NVIDIA_TESLA_T4\"),\n\t\t\t\t\t\tCoreCount: pulumi.String(\"1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tShieldedInstanceConfig: \u0026workbench.InstanceGceSetupShieldedInstanceConfigArgs{\n\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\t\tEnableIntegrityMonitoring: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tDisablePublicIp: pulumi.Bool(false),\n\t\t\t\tServiceAccounts: workbench.InstanceGceSetupServiceAccountArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupServiceAccountArgs{\n\t\t\t\t\t\tEmail: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tBootDisk: \u0026workbench.InstanceGceSetupBootDiskArgs{\n\t\t\t\t\tDiskSizeGb: pulumi.String(\"310\"),\n\t\t\t\t\tDiskType: pulumi.String(\"PD_SSD\"),\n\t\t\t\t\tDiskEncryption: pulumi.String(\"CMEK\"),\n\t\t\t\t\tKmsKey: pulumi.String(\"my-crypto-key\"),\n\t\t\t\t},\n\t\t\t\tDataDisks: \u0026workbench.InstanceGceSetupDataDisksArgs{\n\t\t\t\t\tDiskSizeGb: pulumi.String(\"330\"),\n\t\t\t\t\tDiskType: pulumi.String(\"PD_SSD\"),\n\t\t\t\t\tDiskEncryption: pulumi.String(\"CMEK\"),\n\t\t\t\t\tKmsKey: pulumi.String(\"my-crypto-key\"),\n\t\t\t\t},\n\t\t\t\tNetworkInterfaces: workbench.InstanceGceSetupNetworkInterfaceArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupNetworkInterfaceArgs{\n\t\t\t\t\t\tNetwork: myNetwork.ID(),\n\t\t\t\t\t\tSubnet: mySubnetwork.ID(),\n\t\t\t\t\t\tNicType: pulumi.String(\"GVNIC\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"terraform\": pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t\tEnableIpForwarding: pulumi.Bool(true),\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"abc\"),\n\t\t\t\t\tpulumi.String(\"def\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisableProxyAccess: pulumi.Bool(true),\n\t\t\tInstanceOwners: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my@service-account.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"k\": pulumi.String(\"val\"),\n\t\t\t},\n\t\t\tDesiredState: pulumi.String(\"ACTIVE\"),\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.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupBootDiskArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupDataDisksArgs;\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 myNetwork = new Network(\"myNetwork\", NetworkArgs.builder()\n .name(\"wbi-test-default\")\n .autoCreateSubnetworks(false)\n .build());\n\n var mySubnetwork = new Subnetwork(\"mySubnetwork\", SubnetworkArgs.builder()\n .name(\"wbi-test-default\")\n .network(myNetwork.id())\n .region(\"us-central1\")\n .ipCidrRange(\"10.0.1.0/24\")\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .name(\"workbench-instance\")\n .location(\"us-central1-a\")\n .gceSetup(InstanceGceSetupArgs.builder()\n .machineType(\"n1-standard-4\")\n .acceleratorConfigs(InstanceGceSetupAcceleratorConfigArgs.builder()\n .type(\"NVIDIA_TESLA_T4\")\n .coreCount(1)\n .build())\n .shieldedInstanceConfig(InstanceGceSetupShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .enableIntegrityMonitoring(true)\n .build())\n .disablePublicIp(false)\n .serviceAccounts(InstanceGceSetupServiceAccountArgs.builder()\n .email(\"my@service-account.com\")\n .build())\n .bootDisk(InstanceGceSetupBootDiskArgs.builder()\n .diskSizeGb(310)\n .diskType(\"PD_SSD\")\n .diskEncryption(\"CMEK\")\n .kmsKey(\"my-crypto-key\")\n .build())\n .dataDisks(InstanceGceSetupDataDisksArgs.builder()\n .diskSizeGb(330)\n .diskType(\"PD_SSD\")\n .diskEncryption(\"CMEK\")\n .kmsKey(\"my-crypto-key\")\n .build())\n .networkInterfaces(InstanceGceSetupNetworkInterfaceArgs.builder()\n .network(myNetwork.id())\n .subnet(mySubnetwork.id())\n .nicType(\"GVNIC\")\n .build())\n .metadata(Map.of(\"terraform\", \"true\"))\n .enableIpForwarding(true)\n .tags( \n \"abc\",\n \"def\")\n .build())\n .disableProxyAccess(\"true\")\n .instanceOwners(\"my@service-account.com\")\n .labels(Map.of(\"k\", \"val\"))\n .desiredState(\"ACTIVE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myNetwork:\n type: gcp:compute:Network\n name: my_network\n properties:\n name: wbi-test-default\n autoCreateSubnetworks: false\n mySubnetwork:\n type: gcp:compute:Subnetwork\n name: my_subnetwork\n properties:\n name: wbi-test-default\n network: ${myNetwork.id}\n region: us-central1\n ipCidrRange: 10.0.1.0/24\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-central1-a\n gceSetup:\n machineType: n1-standard-4\n acceleratorConfigs:\n - type: NVIDIA_TESLA_T4\n coreCount: 1\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n enableIntegrityMonitoring: true\n disablePublicIp: false\n serviceAccounts:\n - email: my@service-account.com\n bootDisk:\n diskSizeGb: 310\n diskType: PD_SSD\n diskEncryption: CMEK\n kmsKey: my-crypto-key\n dataDisks:\n diskSizeGb: 330\n diskType: PD_SSD\n diskEncryption: CMEK\n kmsKey: my-crypto-key\n networkInterfaces:\n - network: ${myNetwork.id}\n subnet: ${mySubnetwork.id}\n nicType: GVNIC\n metadata:\n terraform: 'true'\n enableIpForwarding: true\n tags:\n - abc\n - def\n disableProxyAccess: 'true'\n instanceOwners:\n - my@service-account.com\n labels:\n k: val\n desiredState: ACTIVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:workbench/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:workbench/instance:Instance default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:workbench/instance:Instance default {{location}}/{{name}}\n```\n\n", + "description": "A Workbench instance.\n\n\n\n## Example Usage\n\n### Workbench Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-west1-a\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-west1-a\")\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.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-west1-a\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\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 := workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\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.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"workbench-instance\")\n .location(\"us-west1-a\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-west1-a\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workbench Instance Basic Container\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-west1-a\",\n gceSetup: {\n containerImage: {\n repository: \"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\",\n tag: \"latest\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-west1-a\",\n gce_setup={\n \"container_image\": {\n \"repository\": \"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\",\n \"tag\": \"latest\",\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.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-west1-a\",\n GceSetup = new Gcp.Workbench.Inputs.InstanceGceSetupArgs\n {\n ContainerImage = new Gcp.Workbench.Inputs.InstanceGceSetupContainerImageArgs\n {\n Repository = \"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\",\n Tag = \"latest\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\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 := workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tGceSetup: \u0026workbench.InstanceGceSetupArgs{\n\t\t\t\tContainerImage: \u0026workbench.InstanceGceSetupContainerImageArgs{\n\t\t\t\t\tRepository: pulumi.String(\"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\"),\n\t\t\t\t\tTag: pulumi.String(\"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\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.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupContainerImageArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"workbench-instance\")\n .location(\"us-west1-a\")\n .gceSetup(InstanceGceSetupArgs.builder()\n .containerImage(InstanceGceSetupContainerImageArgs.builder()\n .repository(\"us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\")\n .tag(\"latest\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-west1-a\n gceSetup:\n containerImage:\n repository: us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310\n tag: latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workbench Instance Basic Gpu\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-central1-a\",\n gceSetup: {\n machineType: \"n1-standard-1\",\n acceleratorConfigs: [{\n type: \"NVIDIA_TESLA_T4\",\n coreCount: \"1\",\n }],\n vmImage: {\n project: \"cloud-notebooks-managed\",\n family: \"workbench-instances\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-central1-a\",\n gce_setup={\n \"machine_type\": \"n1-standard-1\",\n \"accelerator_configs\": [{\n \"type\": \"NVIDIA_TESLA_T4\",\n \"core_count\": \"1\",\n }],\n \"vm_image\": {\n \"project\": \"cloud-notebooks-managed\",\n \"family\": \"workbench-instances\",\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.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-central1-a\",\n GceSetup = new Gcp.Workbench.Inputs.InstanceGceSetupArgs\n {\n MachineType = \"n1-standard-1\",\n AcceleratorConfigs = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupAcceleratorConfigArgs\n {\n Type = \"NVIDIA_TESLA_T4\",\n CoreCount = \"1\",\n },\n },\n VmImage = new Gcp.Workbench.Inputs.InstanceGceSetupVmImageArgs\n {\n Project = \"cloud-notebooks-managed\",\n Family = \"workbench-instances\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\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 := workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tGceSetup: \u0026workbench.InstanceGceSetupArgs{\n\t\t\t\tMachineType: pulumi.String(\"n1-standard-1\"),\n\t\t\t\tAcceleratorConfigs: workbench.InstanceGceSetupAcceleratorConfigArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupAcceleratorConfigArgs{\n\t\t\t\t\t\tType: pulumi.String(\"NVIDIA_TESLA_T4\"),\n\t\t\t\t\t\tCoreCount: pulumi.String(\"1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVmImage: \u0026workbench.InstanceGceSetupVmImageArgs{\n\t\t\t\t\tProject: pulumi.String(\"cloud-notebooks-managed\"),\n\t\t\t\t\tFamily: pulumi.String(\"workbench-instances\"),\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.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupVmImageArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"workbench-instance\")\n .location(\"us-central1-a\")\n .gceSetup(InstanceGceSetupArgs.builder()\n .machineType(\"n1-standard-1\")\n .acceleratorConfigs(InstanceGceSetupAcceleratorConfigArgs.builder()\n .type(\"NVIDIA_TESLA_T4\")\n .coreCount(1)\n .build())\n .vmImage(InstanceGceSetupVmImageArgs.builder()\n .project(\"cloud-notebooks-managed\")\n .family(\"workbench-instances\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-central1-a\n gceSetup:\n machineType: n1-standard-1\n acceleratorConfigs:\n - type: NVIDIA_TESLA_T4\n coreCount: 1\n vmImage:\n project: cloud-notebooks-managed\n family: workbench-instances\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workbench Instance Labels Stopped\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-central1-a\",\n gceSetup: {\n machineType: \"e2-standard-4\",\n shieldedInstanceConfig: {\n enableSecureBoot: false,\n enableVtpm: false,\n enableIntegrityMonitoring: false,\n },\n serviceAccounts: [{\n email: \"my@service-account.com\",\n }],\n metadata: {\n terraform: \"true\",\n },\n },\n instanceOwners: [\"my@service-account.com\"],\n labels: {\n k: \"val\",\n },\n desiredState: \"STOPPED\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-central1-a\",\n gce_setup={\n \"machine_type\": \"e2-standard-4\",\n \"shielded_instance_config\": {\n \"enable_secure_boot\": False,\n \"enable_vtpm\": False,\n \"enable_integrity_monitoring\": False,\n },\n \"service_accounts\": [{\n \"email\": \"my@service-account.com\",\n }],\n \"metadata\": {\n \"terraform\": \"true\",\n },\n },\n instance_owners=[\"my@service-account.com\"],\n labels={\n \"k\": \"val\",\n },\n desired_state=\"STOPPED\")\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.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-central1-a\",\n GceSetup = new Gcp.Workbench.Inputs.InstanceGceSetupArgs\n {\n MachineType = \"e2-standard-4\",\n ShieldedInstanceConfig = new Gcp.Workbench.Inputs.InstanceGceSetupShieldedInstanceConfigArgs\n {\n EnableSecureBoot = false,\n EnableVtpm = false,\n EnableIntegrityMonitoring = false,\n },\n ServiceAccounts = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupServiceAccountArgs\n {\n Email = \"my@service-account.com\",\n },\n },\n Metadata = \n {\n { \"terraform\", \"true\" },\n },\n },\n InstanceOwners = new[]\n {\n \"my@service-account.com\",\n },\n Labels = \n {\n { \"k\", \"val\" },\n },\n DesiredState = \"STOPPED\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\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 := workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tGceSetup: \u0026workbench.InstanceGceSetupArgs{\n\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\tShieldedInstanceConfig: \u0026workbench.InstanceGceSetupShieldedInstanceConfigArgs{\n\t\t\t\t\tEnableSecureBoot: pulumi.Bool(false),\n\t\t\t\t\tEnableVtpm: pulumi.Bool(false),\n\t\t\t\t\tEnableIntegrityMonitoring: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tServiceAccounts: workbench.InstanceGceSetupServiceAccountArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupServiceAccountArgs{\n\t\t\t\t\t\tEmail: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"terraform\": pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tInstanceOwners: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my@service-account.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"k\": pulumi.String(\"val\"),\n\t\t\t},\n\t\t\tDesiredState: pulumi.String(\"STOPPED\"),\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.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupShieldedInstanceConfigArgs;\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 Instance(\"instance\", InstanceArgs.builder()\n .name(\"workbench-instance\")\n .location(\"us-central1-a\")\n .gceSetup(InstanceGceSetupArgs.builder()\n .machineType(\"e2-standard-4\")\n .shieldedInstanceConfig(InstanceGceSetupShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(false)\n .enableVtpm(false)\n .enableIntegrityMonitoring(false)\n .build())\n .serviceAccounts(InstanceGceSetupServiceAccountArgs.builder()\n .email(\"my@service-account.com\")\n .build())\n .metadata(Map.of(\"terraform\", \"true\"))\n .build())\n .instanceOwners(\"my@service-account.com\")\n .labels(Map.of(\"k\", \"val\"))\n .desiredState(\"STOPPED\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-central1-a\n gceSetup:\n machineType: e2-standard-4\n shieldedInstanceConfig:\n enableSecureBoot: false\n enableVtpm: false\n enableIntegrityMonitoring: false\n serviceAccounts:\n - email: my@service-account.com\n metadata:\n terraform: 'true'\n instanceOwners:\n - my@service-account.com\n labels:\n k: val\n desiredState: STOPPED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workbench Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myNetwork = new gcp.compute.Network(\"my_network\", {\n name: \"wbi-test-default\",\n autoCreateSubnetworks: false,\n});\nconst mySubnetwork = new gcp.compute.Subnetwork(\"my_subnetwork\", {\n name: \"wbi-test-default\",\n network: myNetwork.id,\n region: \"us-central1\",\n ipCidrRange: \"10.0.1.0/24\",\n});\nconst instance = new gcp.workbench.Instance(\"instance\", {\n name: \"workbench-instance\",\n location: \"us-central1-a\",\n gceSetup: {\n machineType: \"n1-standard-4\",\n acceleratorConfigs: [{\n type: \"NVIDIA_TESLA_T4\",\n coreCount: \"1\",\n }],\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n enableIntegrityMonitoring: true,\n },\n disablePublicIp: false,\n serviceAccounts: [{\n email: \"my@service-account.com\",\n }],\n bootDisk: {\n diskSizeGb: \"310\",\n diskType: \"PD_SSD\",\n diskEncryption: \"CMEK\",\n kmsKey: \"my-crypto-key\",\n },\n dataDisks: {\n diskSizeGb: \"330\",\n diskType: \"PD_SSD\",\n diskEncryption: \"CMEK\",\n kmsKey: \"my-crypto-key\",\n },\n networkInterfaces: [{\n network: myNetwork.id,\n subnet: mySubnetwork.id,\n nicType: \"GVNIC\",\n }],\n metadata: {\n terraform: \"true\",\n },\n enableIpForwarding: true,\n tags: [\n \"abc\",\n \"def\",\n ],\n },\n disableProxyAccess: true,\n instanceOwners: [\"my@service-account.com\"],\n labels: {\n k: \"val\",\n },\n desiredState: \"ACTIVE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_network = gcp.compute.Network(\"my_network\",\n name=\"wbi-test-default\",\n auto_create_subnetworks=False)\nmy_subnetwork = gcp.compute.Subnetwork(\"my_subnetwork\",\n name=\"wbi-test-default\",\n network=my_network.id,\n region=\"us-central1\",\n ip_cidr_range=\"10.0.1.0/24\")\ninstance = gcp.workbench.Instance(\"instance\",\n name=\"workbench-instance\",\n location=\"us-central1-a\",\n gce_setup={\n \"machine_type\": \"n1-standard-4\",\n \"accelerator_configs\": [{\n \"type\": \"NVIDIA_TESLA_T4\",\n \"core_count\": \"1\",\n }],\n \"shielded_instance_config\": {\n \"enable_secure_boot\": True,\n \"enable_vtpm\": True,\n \"enable_integrity_monitoring\": True,\n },\n \"disable_public_ip\": False,\n \"service_accounts\": [{\n \"email\": \"my@service-account.com\",\n }],\n \"boot_disk\": {\n \"disk_size_gb\": \"310\",\n \"disk_type\": \"PD_SSD\",\n \"disk_encryption\": \"CMEK\",\n \"kms_key\": \"my-crypto-key\",\n },\n \"data_disks\": {\n \"disk_size_gb\": \"330\",\n \"disk_type\": \"PD_SSD\",\n \"disk_encryption\": \"CMEK\",\n \"kms_key\": \"my-crypto-key\",\n },\n \"network_interfaces\": [{\n \"network\": my_network.id,\n \"subnet\": my_subnetwork.id,\n \"nic_type\": \"GVNIC\",\n }],\n \"metadata\": {\n \"terraform\": \"true\",\n },\n \"enable_ip_forwarding\": True,\n \"tags\": [\n \"abc\",\n \"def\",\n ],\n },\n disable_proxy_access=True,\n instance_owners=[\"my@service-account.com\"],\n labels={\n \"k\": \"val\",\n },\n desired_state=\"ACTIVE\")\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 myNetwork = new Gcp.Compute.Network(\"my_network\", new()\n {\n Name = \"wbi-test-default\",\n AutoCreateSubnetworks = false,\n });\n\n var mySubnetwork = new Gcp.Compute.Subnetwork(\"my_subnetwork\", new()\n {\n Name = \"wbi-test-default\",\n Network = myNetwork.Id,\n Region = \"us-central1\",\n IpCidrRange = \"10.0.1.0/24\",\n });\n\n var instance = new Gcp.Workbench.Instance(\"instance\", new()\n {\n Name = \"workbench-instance\",\n Location = \"us-central1-a\",\n GceSetup = new Gcp.Workbench.Inputs.InstanceGceSetupArgs\n {\n MachineType = \"n1-standard-4\",\n AcceleratorConfigs = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupAcceleratorConfigArgs\n {\n Type = \"NVIDIA_TESLA_T4\",\n CoreCount = \"1\",\n },\n },\n ShieldedInstanceConfig = new Gcp.Workbench.Inputs.InstanceGceSetupShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n EnableIntegrityMonitoring = true,\n },\n DisablePublicIp = false,\n ServiceAccounts = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupServiceAccountArgs\n {\n Email = \"my@service-account.com\",\n },\n },\n BootDisk = new Gcp.Workbench.Inputs.InstanceGceSetupBootDiskArgs\n {\n DiskSizeGb = \"310\",\n DiskType = \"PD_SSD\",\n DiskEncryption = \"CMEK\",\n KmsKey = \"my-crypto-key\",\n },\n DataDisks = new Gcp.Workbench.Inputs.InstanceGceSetupDataDisksArgs\n {\n DiskSizeGb = \"330\",\n DiskType = \"PD_SSD\",\n DiskEncryption = \"CMEK\",\n KmsKey = \"my-crypto-key\",\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Workbench.Inputs.InstanceGceSetupNetworkInterfaceArgs\n {\n Network = myNetwork.Id,\n Subnet = mySubnetwork.Id,\n NicType = \"GVNIC\",\n },\n },\n Metadata = \n {\n { \"terraform\", \"true\" },\n },\n EnableIpForwarding = true,\n Tags = new[]\n {\n \"abc\",\n \"def\",\n },\n },\n DisableProxyAccess = true,\n InstanceOwners = new[]\n {\n \"my@service-account.com\",\n },\n Labels = \n {\n { \"k\", \"val\" },\n },\n DesiredState = \"ACTIVE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workbench\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyNetwork, err := compute.NewNetwork(ctx, \"my_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"wbi-test-default\"),\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\tmySubnetwork, err := compute.NewSubnetwork(ctx, \"my_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"wbi-test-default\"),\n\t\t\tNetwork: myNetwork.ID(),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workbench.NewInstance(ctx, \"instance\", \u0026workbench.InstanceArgs{\n\t\t\tName: pulumi.String(\"workbench-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tGceSetup: \u0026workbench.InstanceGceSetupArgs{\n\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\tAcceleratorConfigs: workbench.InstanceGceSetupAcceleratorConfigArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupAcceleratorConfigArgs{\n\t\t\t\t\t\tType: pulumi.String(\"NVIDIA_TESLA_T4\"),\n\t\t\t\t\t\tCoreCount: pulumi.String(\"1\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tShieldedInstanceConfig: \u0026workbench.InstanceGceSetupShieldedInstanceConfigArgs{\n\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\t\tEnableIntegrityMonitoring: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tDisablePublicIp: pulumi.Bool(false),\n\t\t\t\tServiceAccounts: workbench.InstanceGceSetupServiceAccountArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupServiceAccountArgs{\n\t\t\t\t\t\tEmail: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tBootDisk: \u0026workbench.InstanceGceSetupBootDiskArgs{\n\t\t\t\t\tDiskSizeGb: pulumi.String(\"310\"),\n\t\t\t\t\tDiskType: pulumi.String(\"PD_SSD\"),\n\t\t\t\t\tDiskEncryption: pulumi.String(\"CMEK\"),\n\t\t\t\t\tKmsKey: pulumi.String(\"my-crypto-key\"),\n\t\t\t\t},\n\t\t\t\tDataDisks: \u0026workbench.InstanceGceSetupDataDisksArgs{\n\t\t\t\t\tDiskSizeGb: pulumi.String(\"330\"),\n\t\t\t\t\tDiskType: pulumi.String(\"PD_SSD\"),\n\t\t\t\t\tDiskEncryption: pulumi.String(\"CMEK\"),\n\t\t\t\t\tKmsKey: pulumi.String(\"my-crypto-key\"),\n\t\t\t\t},\n\t\t\t\tNetworkInterfaces: workbench.InstanceGceSetupNetworkInterfaceArray{\n\t\t\t\t\t\u0026workbench.InstanceGceSetupNetworkInterfaceArgs{\n\t\t\t\t\t\tNetwork: myNetwork.ID(),\n\t\t\t\t\t\tSubnet: mySubnetwork.ID(),\n\t\t\t\t\t\tNicType: pulumi.String(\"GVNIC\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"terraform\": pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t\tEnableIpForwarding: pulumi.Bool(true),\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"abc\"),\n\t\t\t\t\tpulumi.String(\"def\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisableProxyAccess: pulumi.Bool(true),\n\t\t\tInstanceOwners: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my@service-account.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"k\": pulumi.String(\"val\"),\n\t\t\t},\n\t\t\tDesiredState: pulumi.String(\"ACTIVE\"),\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.workbench.Instance;\nimport com.pulumi.gcp.workbench.InstanceArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupBootDiskArgs;\nimport com.pulumi.gcp.workbench.inputs.InstanceGceSetupDataDisksArgs;\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 myNetwork = new Network(\"myNetwork\", NetworkArgs.builder()\n .name(\"wbi-test-default\")\n .autoCreateSubnetworks(false)\n .build());\n\n var mySubnetwork = new Subnetwork(\"mySubnetwork\", SubnetworkArgs.builder()\n .name(\"wbi-test-default\")\n .network(myNetwork.id())\n .region(\"us-central1\")\n .ipCidrRange(\"10.0.1.0/24\")\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .name(\"workbench-instance\")\n .location(\"us-central1-a\")\n .gceSetup(InstanceGceSetupArgs.builder()\n .machineType(\"n1-standard-4\")\n .acceleratorConfigs(InstanceGceSetupAcceleratorConfigArgs.builder()\n .type(\"NVIDIA_TESLA_T4\")\n .coreCount(1)\n .build())\n .shieldedInstanceConfig(InstanceGceSetupShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .enableIntegrityMonitoring(true)\n .build())\n .disablePublicIp(false)\n .serviceAccounts(InstanceGceSetupServiceAccountArgs.builder()\n .email(\"my@service-account.com\")\n .build())\n .bootDisk(InstanceGceSetupBootDiskArgs.builder()\n .diskSizeGb(310)\n .diskType(\"PD_SSD\")\n .diskEncryption(\"CMEK\")\n .kmsKey(\"my-crypto-key\")\n .build())\n .dataDisks(InstanceGceSetupDataDisksArgs.builder()\n .diskSizeGb(330)\n .diskType(\"PD_SSD\")\n .diskEncryption(\"CMEK\")\n .kmsKey(\"my-crypto-key\")\n .build())\n .networkInterfaces(InstanceGceSetupNetworkInterfaceArgs.builder()\n .network(myNetwork.id())\n .subnet(mySubnetwork.id())\n .nicType(\"GVNIC\")\n .build())\n .metadata(Map.of(\"terraform\", \"true\"))\n .enableIpForwarding(true)\n .tags( \n \"abc\",\n \"def\")\n .build())\n .disableProxyAccess(\"true\")\n .instanceOwners(\"my@service-account.com\")\n .labels(Map.of(\"k\", \"val\"))\n .desiredState(\"ACTIVE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myNetwork:\n type: gcp:compute:Network\n name: my_network\n properties:\n name: wbi-test-default\n autoCreateSubnetworks: false\n mySubnetwork:\n type: gcp:compute:Subnetwork\n name: my_subnetwork\n properties:\n name: wbi-test-default\n network: ${myNetwork.id}\n region: us-central1\n ipCidrRange: 10.0.1.0/24\n instance:\n type: gcp:workbench:Instance\n properties:\n name: workbench-instance\n location: us-central1-a\n gceSetup:\n machineType: n1-standard-4\n acceleratorConfigs:\n - type: NVIDIA_TESLA_T4\n coreCount: 1\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n enableIntegrityMonitoring: true\n disablePublicIp: false\n serviceAccounts:\n - email: my@service-account.com\n bootDisk:\n diskSizeGb: 310\n diskType: PD_SSD\n diskEncryption: CMEK\n kmsKey: my-crypto-key\n dataDisks:\n diskSizeGb: 330\n diskType: PD_SSD\n diskEncryption: CMEK\n kmsKey: my-crypto-key\n networkInterfaces:\n - network: ${myNetwork.id}\n subnet: ${mySubnetwork.id}\n nicType: GVNIC\n metadata:\n terraform: 'true'\n enableIpForwarding: true\n tags:\n - abc\n - def\n disableProxyAccess: 'true'\n instanceOwners:\n - my@service-account.com\n labels:\n k: val\n desiredState: ACTIVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:workbench/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:workbench/instance:Instance default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:workbench/instance:Instance default {{location}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -248761,7 +248761,7 @@ } }, "gcp:workstations/workstation:Workstation": { - "description": "## Example Usage\n\n### Workstation Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n },\n },\n});\nconst defaultWorkstation = new gcp.workstations.Workstation(\"default\", {\n workstationId: \"work-station\",\n workstationConfigId: defaultWorkstationConfig.workstationConfigId,\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n env: {\n name: \"foo\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gceInstance\": {\n \"machineType\": \"e2-standard-4\",\n \"bootDiskSizeGb\": 35,\n \"disablePublicIpAddresses\": True,\n },\n })\ndefault_workstation = gcp.workstations.Workstation(\"default\",\n workstation_id=\"work-station\",\n workstation_config_id=default_workstation_config.workstation_config_id,\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n env={\n \"name\": \"foo\",\n },\n annotations={\n \"label-one\": \"value-one\",\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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n },\n },\n });\n\n var defaultWorkstation = new Gcp.Workstations.Workstation(\"default\", new()\n {\n WorkstationId = \"work-station\",\n WorkstationConfigId = defaultWorkstationConfig.WorkstationConfigId,\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Env = \n {\n { \"name\", \"foo\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationConfig, err := workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: 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 = workstations.NewWorkstation(ctx, \"default\", \u0026workstations.WorkstationArgs{\n\t\t\tWorkstationId: pulumi.String(\"work-station\"),\n\t\t\tWorkstationConfigId: defaultWorkstationConfig.WorkstationConfigId,\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tEnv: pulumi.StringMap{\n\t\t\t\t\"name\": pulumi.String(\"foo\"),\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})\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.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.Workstation;\nimport com.pulumi.gcp.workstations.WorkstationArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .build())\n .build())\n .build());\n\n var defaultWorkstation = new Workstation(\"defaultWorkstation\", WorkstationArgs.builder()\n .workstationId(\"work-station\")\n .workstationConfigId(defaultWorkstationConfig.workstationConfigId())\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .env(Map.of(\"name\", \"foo\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n defaultWorkstation:\n type: gcp:workstations:Workstation\n name: default\n properties:\n workstationId: work-station\n workstationConfigId: ${defaultWorkstationConfig.workstationConfigId}\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n labels:\n label: key\n env:\n name: foo\n annotations:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkstation can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}/workstations/{{workstation_id}}`\n\n* `{{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}/{{workstation_id}}`\n\n* `{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}/{{workstation_id}}`\n\nWhen using the `pulumi import` command, Workstation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:workstations/workstation:Workstation default projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}/workstations/{{workstation_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstation:Workstation default {{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}/{{workstation_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstation:Workstation default {{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}/{{workstation_id}}\n```\n\n", + "description": "## Example Usage\n\n### Workstation Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n },\n },\n});\nconst defaultWorkstation = new gcp.workstations.Workstation(\"default\", {\n workstationId: \"work-station\",\n workstationConfigId: defaultWorkstationConfig.workstationConfigId,\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n env: {\n name: \"foo\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n },\n })\ndefault_workstation = gcp.workstations.Workstation(\"default\",\n workstation_id=\"work-station\",\n workstation_config_id=default_workstation_config.workstation_config_id,\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n env={\n \"name\": \"foo\",\n },\n annotations={\n \"label-one\": \"value-one\",\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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n },\n },\n });\n\n var defaultWorkstation = new Gcp.Workstations.Workstation(\"default\", new()\n {\n WorkstationId = \"work-station\",\n WorkstationConfigId = defaultWorkstationConfig.WorkstationConfigId,\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Env = \n {\n { \"name\", \"foo\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationConfig, err := workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: 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 = workstations.NewWorkstation(ctx, \"default\", \u0026workstations.WorkstationArgs{\n\t\t\tWorkstationId: pulumi.String(\"work-station\"),\n\t\t\tWorkstationConfigId: defaultWorkstationConfig.WorkstationConfigId,\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tEnv: pulumi.StringMap{\n\t\t\t\t\"name\": pulumi.String(\"foo\"),\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})\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.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.Workstation;\nimport com.pulumi.gcp.workstations.WorkstationArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .build())\n .build())\n .build());\n\n var defaultWorkstation = new Workstation(\"defaultWorkstation\", WorkstationArgs.builder()\n .workstationId(\"work-station\")\n .workstationConfigId(defaultWorkstationConfig.workstationConfigId())\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .env(Map.of(\"name\", \"foo\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n defaultWorkstation:\n type: gcp:workstations:Workstation\n name: default\n properties:\n workstationId: work-station\n workstationConfigId: ${defaultWorkstationConfig.workstationConfigId}\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n labels:\n label: key\n env:\n name: foo\n annotations:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkstation can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}/workstations/{{workstation_id}}`\n\n* `{{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}/{{workstation_id}}`\n\n* `{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}/{{workstation_id}}`\n\nWhen using the `pulumi import` command, Workstation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:workstations/workstation:Workstation default projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}/workstations/{{workstation_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstation:Workstation default {{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}/{{workstation_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstation:Workstation default {{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}/{{workstation_id}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -249024,7 +249024,7 @@ } }, "gcp:workstations/workstationCluster:WorkstationCluster": { - "description": "## Example Usage\n\n### Workstation Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: defaultNetwork.name,\n});\nconst _default = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default_network.name)\ndefault = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\nproject = gcp.organizations.get_project()\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(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = defaultNetwork.Name,\n });\n\n var @default = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.name())\n .build());\n\n var default_ = new WorkstationCluster(\"default\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:workstations:WorkstationCluster\n properties:\n workstationClusterId: workstation-cluster\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${defaultNetwork.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Cluster Private\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster-private\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster-private\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: defaultNetwork.name,\n});\nconst _default = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster-private\",\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n privateClusterConfig: {\n enablePrivateEndpoint: true,\n },\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\",\n name=\"workstation-cluster-private\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster-private\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default_network.name)\ndefault = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster-private\",\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n private_cluster_config={\n \"enablePrivateEndpoint\": True,\n },\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\nproject = gcp.organizations.get_project()\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(\"default\", new()\n {\n Name = \"workstation-cluster-private\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster-private\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = defaultNetwork.Name,\n });\n\n var @default = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster-private\",\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n PrivateClusterConfig = new Gcp.Workstations.Inputs.WorkstationClusterPrivateClusterConfigArgs\n {\n EnablePrivateEndpoint = true,\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster-private\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster-private\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster-private\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateClusterConfig: \u0026workstations.WorkstationClusterPrivateClusterConfigArgs{\n\t\t\t\tEnablePrivateEndpoint: pulumi.Bool(true),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationClusterPrivateClusterConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.builder()\n .name(\"workstation-cluster-private\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster-private\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.name())\n .build());\n\n var default_ = new WorkstationCluster(\"default\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster-private\")\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .privateClusterConfig(WorkstationClusterPrivateClusterConfigArgs.builder()\n .enablePrivateEndpoint(true)\n .build())\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:workstations:WorkstationCluster\n properties:\n workstationClusterId: workstation-cluster-private\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n privateClusterConfig:\n enablePrivateEndpoint: true\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: workstation-cluster-private\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster-private\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${defaultNetwork.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Cluster Custom Domain\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster-custom-domain\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster-custom-domain\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: defaultNetwork.name,\n});\nconst _default = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster-custom-domain\",\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n privateClusterConfig: {\n enablePrivateEndpoint: true,\n },\n domainConfig: {\n domain: \"workstations.example.com\",\n },\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\",\n name=\"workstation-cluster-custom-domain\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster-custom-domain\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default_network.name)\ndefault = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster-custom-domain\",\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n private_cluster_config={\n \"enablePrivateEndpoint\": True,\n },\n domain_config={\n \"domain\": \"workstations.example.com\",\n },\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\nproject = gcp.organizations.get_project()\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(\"default\", new()\n {\n Name = \"workstation-cluster-custom-domain\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster-custom-domain\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = defaultNetwork.Name,\n });\n\n var @default = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster-custom-domain\",\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n PrivateClusterConfig = new Gcp.Workstations.Inputs.WorkstationClusterPrivateClusterConfigArgs\n {\n EnablePrivateEndpoint = true,\n },\n DomainConfig = new Gcp.Workstations.Inputs.WorkstationClusterDomainConfigArgs\n {\n Domain = \"workstations.example.com\",\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster-custom-domain\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster-custom-domain\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster-custom-domain\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateClusterConfig: \u0026workstations.WorkstationClusterPrivateClusterConfigArgs{\n\t\t\t\tEnablePrivateEndpoint: pulumi.Bool(true),\n\t\t\t},\n\t\t\tDomainConfig: \u0026workstations.WorkstationClusterDomainConfigArgs{\n\t\t\t\tDomain: pulumi.String(\"workstations.example.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationClusterPrivateClusterConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationClusterDomainConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.builder()\n .name(\"workstation-cluster-custom-domain\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster-custom-domain\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.name())\n .build());\n\n var default_ = new WorkstationCluster(\"default\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster-custom-domain\")\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .privateClusterConfig(WorkstationClusterPrivateClusterConfigArgs.builder()\n .enablePrivateEndpoint(true)\n .build())\n .domainConfig(WorkstationClusterDomainConfigArgs.builder()\n .domain(\"workstations.example.com\")\n .build())\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:workstations:WorkstationCluster\n properties:\n workstationClusterId: workstation-cluster-custom-domain\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n privateClusterConfig:\n enablePrivateEndpoint: true\n domainConfig:\n domain: workstations.example.com\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: workstation-cluster-custom-domain\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster-custom-domain\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${defaultNetwork.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkstationCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}`\n\n* `{{project}}/{{location}}/{{workstation_cluster_id}}`\n\n* `{{location}}/{{workstation_cluster_id}}`\n\nWhen using the `pulumi import` command, WorkstationCluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:workstations/workstationCluster:WorkstationCluster default projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationCluster:WorkstationCluster default {{project}}/{{location}}/{{workstation_cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationCluster:WorkstationCluster default {{location}}/{{workstation_cluster_id}}\n```\n\n", + "description": "## Example Usage\n\n### Workstation Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: defaultNetwork.name,\n});\nconst _default = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default_network.name)\ndefault = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\nproject = gcp.organizations.get_project()\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(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = defaultNetwork.Name,\n });\n\n var @default = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.name())\n .build());\n\n var default_ = new WorkstationCluster(\"default\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:workstations:WorkstationCluster\n properties:\n workstationClusterId: workstation-cluster\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${defaultNetwork.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Cluster Private\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster-private\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster-private\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: defaultNetwork.name,\n});\nconst _default = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster-private\",\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n privateClusterConfig: {\n enablePrivateEndpoint: true,\n },\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\",\n name=\"workstation-cluster-private\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster-private\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default_network.name)\ndefault = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster-private\",\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n private_cluster_config={\n \"enable_private_endpoint\": True,\n },\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\nproject = gcp.organizations.get_project()\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(\"default\", new()\n {\n Name = \"workstation-cluster-private\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster-private\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = defaultNetwork.Name,\n });\n\n var @default = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster-private\",\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n PrivateClusterConfig = new Gcp.Workstations.Inputs.WorkstationClusterPrivateClusterConfigArgs\n {\n EnablePrivateEndpoint = true,\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster-private\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster-private\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster-private\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateClusterConfig: \u0026workstations.WorkstationClusterPrivateClusterConfigArgs{\n\t\t\t\tEnablePrivateEndpoint: pulumi.Bool(true),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationClusterPrivateClusterConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.builder()\n .name(\"workstation-cluster-private\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster-private\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.name())\n .build());\n\n var default_ = new WorkstationCluster(\"default\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster-private\")\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .privateClusterConfig(WorkstationClusterPrivateClusterConfigArgs.builder()\n .enablePrivateEndpoint(true)\n .build())\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:workstations:WorkstationCluster\n properties:\n workstationClusterId: workstation-cluster-private\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n privateClusterConfig:\n enablePrivateEndpoint: true\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: workstation-cluster-private\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster-private\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${defaultNetwork.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Cluster Custom Domain\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster-custom-domain\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster-custom-domain\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: defaultNetwork.name,\n});\nconst _default = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster-custom-domain\",\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n privateClusterConfig: {\n enablePrivateEndpoint: true,\n },\n domainConfig: {\n domain: \"workstations.example.com\",\n },\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\",\n name=\"workstation-cluster-custom-domain\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster-custom-domain\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default_network.name)\ndefault = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster-custom-domain\",\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n private_cluster_config={\n \"enable_private_endpoint\": True,\n },\n domain_config={\n \"domain\": \"workstations.example.com\",\n },\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\nproject = gcp.organizations.get_project()\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(\"default\", new()\n {\n Name = \"workstation-cluster-custom-domain\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster-custom-domain\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = defaultNetwork.Name,\n });\n\n var @default = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster-custom-domain\",\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n PrivateClusterConfig = new Gcp.Workstations.Inputs.WorkstationClusterPrivateClusterConfigArgs\n {\n EnablePrivateEndpoint = true,\n },\n DomainConfig = new Gcp.Workstations.Inputs.WorkstationClusterDomainConfigArgs\n {\n Domain = \"workstations.example.com\",\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster-custom-domain\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster-custom-domain\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster-custom-domain\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateClusterConfig: \u0026workstations.WorkstationClusterPrivateClusterConfigArgs{\n\t\t\t\tEnablePrivateEndpoint: pulumi.Bool(true),\n\t\t\t},\n\t\t\tDomainConfig: \u0026workstations.WorkstationClusterDomainConfigArgs{\n\t\t\t\tDomain: pulumi.String(\"workstations.example.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, 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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationClusterPrivateClusterConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationClusterDomainConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\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.builder()\n .name(\"workstation-cluster-custom-domain\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster-custom-domain\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.name())\n .build());\n\n var default_ = new WorkstationCluster(\"default\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster-custom-domain\")\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .privateClusterConfig(WorkstationClusterPrivateClusterConfigArgs.builder()\n .enablePrivateEndpoint(true)\n .build())\n .domainConfig(WorkstationClusterDomainConfigArgs.builder()\n .domain(\"workstations.example.com\")\n .build())\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:workstations:WorkstationCluster\n properties:\n workstationClusterId: workstation-cluster-custom-domain\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n privateClusterConfig:\n enablePrivateEndpoint: true\n domainConfig:\n domain: workstations.example.com\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: workstation-cluster-custom-domain\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster-custom-domain\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${defaultNetwork.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkstationCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}`\n\n* `{{project}}/{{location}}/{{workstation_cluster_id}}`\n\n* `{{location}}/{{workstation_cluster_id}}`\n\nWhen using the `pulumi import` command, WorkstationCluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:workstations/workstationCluster:WorkstationCluster default projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationCluster:WorkstationCluster default {{project}}/{{location}}/{{workstation_cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationCluster:WorkstationCluster default {{location}}/{{workstation_cluster_id}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -249312,7 +249312,7 @@ } }, "gcp:workstations/workstationConfig:WorkstationConfig": { - "description": "## Example Usage\n\n### Workstation Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tagKey1 = new gcp.tags.TagKey(\"tag_key1\", {\n parent: \"organizations/123456789\",\n shortName: \"keyname\",\n});\nconst tagValue1 = new gcp.tags.TagValue(\"tag_value1\", {\n parent: pulumi.interpolate`tagKeys/${tagKey1.name}`,\n shortName: \"valuename\",\n});\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n idleTimeout: \"600s\",\n runningTimeout: \"21600s\",\n replicaZones: [\n \"us-central1-a\",\n \"us-central1-b\",\n ],\n annotations: {\n \"label-one\": \"value-one\",\n },\n labels: {\n label: \"key\",\n },\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n disableSsh: false,\n vmTags: pulumi.all([tagKey1.name, tagValue1.name]).apply(([tagKey1Name, tagValue1Name]) =\u003e {\n [`tagKeys/${tagKey1Name}`]: `tagValues/${tagValue1Name}`,\n }),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntag_key1 = gcp.tags.TagKey(\"tag_key1\",\n parent=\"organizations/123456789\",\n short_name=\"keyname\")\ntag_value1 = gcp.tags.TagValue(\"tag_value1\",\n parent=tag_key1.name.apply(lambda name: f\"tagKeys/{name}\"),\n short_name=\"valuename\")\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n idle_timeout=\"600s\",\n running_timeout=\"21600s\",\n replica_zones=[\n \"us-central1-a\",\n \"us-central1-b\",\n ],\n annotations={\n \"label-one\": \"value-one\",\n },\n labels={\n \"label\": \"key\",\n },\n host={\n \"gceInstance\": {\n \"machineType\": \"e2-standard-4\",\n \"bootDiskSizeGb\": 35,\n \"disablePublicIpAddresses\": True,\n \"disableSsh\": False,\n \"vmTags\": pulumi.Output.all(tag_key1.name, tag_value1.name).apply(lambda tagKey1Name, tagValue1Name: {\n f\"tagKeys/{tag_key1_name}\": f\"tagValues/{tag_value1_name}\",\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 tagKey1 = new Gcp.Tags.TagKey(\"tag_key1\", new()\n {\n Parent = \"organizations/123456789\",\n ShortName = \"keyname\",\n });\n\n var tagValue1 = new Gcp.Tags.TagValue(\"tag_value1\", new()\n {\n Parent = tagKey1.Name.Apply(name =\u003e $\"tagKeys/{name}\"),\n ShortName = \"valuename\",\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n IdleTimeout = \"600s\",\n RunningTimeout = \"21600s\",\n ReplicaZones = new[]\n {\n \"us-central1-a\",\n \"us-central1-b\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n DisableSsh = false,\n VmTags = Output.Tuple(tagKey1.Name, tagValue1.Name).Apply(values =\u003e\n {\n var tagKey1Name = values.Item1;\n var tagValue1Name = values.Item2;\n return \n {\n { $\"tagKeys/{tagKey1Name}\", $\"tagValues/{tagValue1Name}\" },\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/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/tags\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\ntagKey1, err := tags.NewTagKey(ctx, \"tag_key1\", \u0026tags.TagKeyArgs{\nParent: pulumi.String(\"organizations/123456789\"),\nShortName: pulumi.String(\"keyname\"),\n})\nif err != nil {\nreturn err\n}\ntagValue1, err := tags.NewTagValue(ctx, \"tag_value1\", \u0026tags.TagValueArgs{\nParent: tagKey1.Name.ApplyT(func(name string) (string, error) {\nreturn fmt.Sprintf(\"tagKeys/%v\", name), nil\n}).(pulumi.StringOutput),\nShortName: pulumi.String(\"valuename\"),\n})\nif err != nil {\nreturn err\n}\n_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\nName: pulumi.String(\"workstation-cluster\"),\nAutoCreateSubnetworks: pulumi.Bool(false),\n})\nif err != nil {\nreturn err\n}\ndefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\nName: pulumi.String(\"workstation-cluster\"),\nIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\nRegion: pulumi.String(\"us-central1\"),\nNetwork: _default.Name,\n})\nif err != nil {\nreturn err\n}\ndefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\nWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\nNetwork: _default.ID(),\nSubnetwork: defaultSubnetwork.ID(),\nLocation: pulumi.String(\"us-central1\"),\nLabels: pulumi.StringMap{\n\"label\": pulumi.String(\"key\"),\n},\nAnnotations: pulumi.StringMap{\n\"label-one\": pulumi.String(\"value-one\"),\n},\n})\nif err != nil {\nreturn err\n}\n_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\nWorkstationConfigId: pulumi.String(\"workstation-config\"),\nWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\nLocation: pulumi.String(\"us-central1\"),\nIdleTimeout: pulumi.String(\"600s\"),\nRunningTimeout: pulumi.String(\"21600s\"),\nReplicaZones: pulumi.StringArray{\npulumi.String(\"us-central1-a\"),\npulumi.String(\"us-central1-b\"),\n},\nAnnotations: pulumi.StringMap{\n\"label-one\": pulumi.String(\"value-one\"),\n},\nLabels: pulumi.StringMap{\n\"label\": pulumi.String(\"key\"),\n},\nHost: \u0026workstations.WorkstationConfigHostArgs{\nGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\nMachineType: pulumi.String(\"e2-standard-4\"),\nBootDiskSizeGb: pulumi.Int(35),\nDisablePublicIpAddresses: pulumi.Bool(true),\nDisableSsh: pulumi.Bool(false),\nVmTags: pulumi.All(tagKey1.Name,tagValue1.Name).ApplyT(func(_args []interface{}) (map[string]string, error) {\ntagKey1Name := _args[0].(string)\ntagValue1Name := _args[1].(string)\nreturn map[string]string{\nfmt.Sprintf(\"tagKeys/%v\", tagKey1Name): fmt.Sprintf(\"tagValues/%v\", tagValue1Name),\n}, nil\n}).(pulumi.Map[string]stringOutput),\n},\n},\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\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.tags.TagKey;\nimport com.pulumi.gcp.tags.TagKeyArgs;\nimport com.pulumi.gcp.tags.TagValue;\nimport com.pulumi.gcp.tags.TagValueArgs;\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.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\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 tagKey1 = new TagKey(\"tagKey1\", TagKeyArgs.builder()\n .parent(\"organizations/123456789\")\n .shortName(\"keyname\")\n .build());\n\n var tagValue1 = new TagValue(\"tagValue1\", TagValueArgs.builder()\n .parent(tagKey1.name().applyValue(name -\u003e String.format(\"tagKeys/%s\", name)))\n .shortName(\"valuename\")\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .idleTimeout(\"600s\")\n .runningTimeout(\"21600s\")\n .replicaZones( \n \"us-central1-a\",\n \"us-central1-b\")\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .labels(Map.of(\"label\", \"key\"))\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .disableSsh(false)\n .vmTags(Output.tuple(tagKey1.name(), tagValue1.name()).applyValue(values -\u003e {\n var tagKey1Name = values.t1;\n var tagValue1Name = values.t2;\n return Map.of(String.format(\"tagKeys/%s\", tagKey1Name), String.format(\"tagValues/%s\", tagValue1Name));\n }))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tagKey1:\n type: gcp:tags:TagKey\n name: tag_key1\n properties:\n parent: organizations/123456789\n shortName: keyname\n tagValue1:\n type: gcp:tags:TagValue\n name: tag_value1\n properties:\n parent: tagKeys/${tagKey1.name}\n shortName: valuename\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n idleTimeout: 600s\n runningTimeout: 21600s\n replicaZones:\n - us-central1-a\n - us-central1-b\n annotations:\n label-one: value-one\n labels:\n label: key\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n disableSsh: false\n vmTags:\n tagKeys/${tagKey1.name}: tagValues/${tagValue1.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Container\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"n1-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n enableNestedVirtualization: true,\n },\n },\n container: {\n image: \"intellij\",\n env: {\n NAME: \"FOO\",\n BABE: \"bar\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gceInstance\": {\n \"machineType\": \"n1-standard-4\",\n \"bootDiskSizeGb\": 35,\n \"disablePublicIpAddresses\": True,\n \"enableNestedVirtualization\": True,\n },\n },\n container={\n \"image\": \"intellij\",\n \"env\": {\n \"NAME\": \"FOO\",\n \"BABE\": \"bar\",\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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"n1-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n EnableNestedVirtualization = true,\n },\n },\n Container = new Gcp.Workstations.Inputs.WorkstationConfigContainerArgs\n {\n Image = \"intellij\",\n Env = \n {\n { \"NAME\", \"FOO\" },\n { \"BABE\", \"bar\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tEnableNestedVirtualization: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tContainer: \u0026workstations.WorkstationConfigContainerArgs{\n\t\t\t\tImage: pulumi.String(\"intellij\"),\n\t\t\t\tEnv: pulumi.StringMap{\n\t\t\t\t\t\"NAME\": pulumi.String(\"FOO\"),\n\t\t\t\t\t\"BABE\": pulumi.String(\"bar\"),\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.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigContainerArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"n1-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .enableNestedVirtualization(true)\n .build())\n .build())\n .container(WorkstationConfigContainerArgs.builder()\n .image(\"intellij\")\n .env(Map.ofEntries(\n Map.entry(\"NAME\", \"FOO\"),\n Map.entry(\"BABE\", \"bar\")\n ))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: n1-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n enableNestedVirtualization: true\n container:\n image: intellij\n env:\n NAME: FOO\n BABE: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Persistent Directories\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n },\n },\n },\n persistentDirectories: [{\n mountPath: \"/home\",\n gcePd: {\n sizeGb: 200,\n fsType: \"ext4\",\n diskType: \"pd-standard\",\n reclaimPolicy: \"DELETE\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gceInstance\": {\n \"machineType\": \"e2-standard-4\",\n \"bootDiskSizeGb\": 35,\n \"disablePublicIpAddresses\": True,\n \"shieldedInstanceConfig\": {\n \"enableSecureBoot\": True,\n \"enableVtpm\": True,\n },\n },\n },\n persistent_directories=[{\n \"mountPath\": \"/home\",\n \"gcePd\": {\n \"sizeGb\": 200,\n \"fsType\": \"ext4\",\n \"diskType\": \"pd-standard\",\n \"reclaimPolicy\": \"DELETE\",\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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n },\n },\n },\n PersistentDirectories = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryArgs\n {\n MountPath = \"/home\",\n GcePd = new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryGcePdArgs\n {\n SizeGb = 200,\n FsType = \"ext4\",\n DiskType = \"pd-standard\",\n ReclaimPolicy = \"DELETE\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tShieldedInstanceConfig: \u0026workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{\n\t\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPersistentDirectories: workstations.WorkstationConfigPersistentDirectoryArray{\n\t\t\t\t\u0026workstations.WorkstationConfigPersistentDirectoryArgs{\n\t\t\t\t\tMountPath: pulumi.String(\"/home\"),\n\t\t\t\t\tGcePd: \u0026workstations.WorkstationConfigPersistentDirectoryGcePdArgs{\n\t\t\t\t\t\tSizeGb: pulumi.Int(200),\n\t\t\t\t\t\tFsType: pulumi.String(\"ext4\"),\n\t\t\t\t\t\tDiskType: pulumi.String(\"pd-standard\"),\n\t\t\t\t\t\tReclaimPolicy: pulumi.String(\"DELETE\"),\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.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryGcePdArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .build())\n .build())\n .build())\n .persistentDirectories(WorkstationConfigPersistentDirectoryArgs.builder()\n .mountPath(\"/home\")\n .gcePd(WorkstationConfigPersistentDirectoryGcePdArgs.builder()\n .sizeGb(200)\n .fsType(\"ext4\")\n .diskType(\"pd-standard\")\n .reclaimPolicy(\"DELETE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n persistentDirectories:\n - mountPath: /home\n gcePd:\n sizeGb: 200\n fsType: ext4\n diskType: pd-standard\n reclaimPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Source Snapshot\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst mySourceDisk = new gcp.compute.Disk(\"my_source_disk\", {\n name: \"workstation-config\",\n size: 10,\n type: \"pd-ssd\",\n zone: \"us-central1-a\",\n});\nconst mySourceSnapshot = new gcp.compute.Snapshot(\"my_source_snapshot\", {\n name: \"workstation-config\",\n sourceDisk: mySourceDisk.name,\n zone: \"us-central1-a\",\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: defaultWorkstationCluster.location,\n persistentDirectories: [{\n mountPath: \"/home\",\n gcePd: {\n sourceSnapshot: mySourceSnapshot.id,\n reclaimPolicy: \"DELETE\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\nmy_source_disk = gcp.compute.Disk(\"my_source_disk\",\n name=\"workstation-config\",\n size=10,\n type=\"pd-ssd\",\n zone=\"us-central1-a\")\nmy_source_snapshot = gcp.compute.Snapshot(\"my_source_snapshot\",\n name=\"workstation-config\",\n source_disk=my_source_disk.name,\n zone=\"us-central1-a\")\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\")\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=default_workstation_cluster.location,\n persistent_directories=[{\n \"mountPath\": \"/home\",\n \"gcePd\": {\n \"sourceSnapshot\": my_source_snapshot.id,\n \"reclaimPolicy\": \"DELETE\",\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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var mySourceDisk = new Gcp.Compute.Disk(\"my_source_disk\", new()\n {\n Name = \"workstation-config\",\n Size = 10,\n Type = \"pd-ssd\",\n Zone = \"us-central1-a\",\n });\n\n var mySourceSnapshot = new Gcp.Compute.Snapshot(\"my_source_snapshot\", new()\n {\n Name = \"workstation-config\",\n SourceDisk = mySourceDisk.Name,\n Zone = \"us-central1-a\",\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = defaultWorkstationCluster.Location,\n PersistentDirectories = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryArgs\n {\n MountPath = \"/home\",\n GcePd = new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryGcePdArgs\n {\n SourceSnapshot = mySourceSnapshot.Id,\n ReclaimPolicy = \"DELETE\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmySourceDisk, err := compute.NewDisk(ctx, \"my_source_disk\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"workstation-config\"),\n\t\t\tSize: pulumi.Int(10),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmySourceSnapshot, err := compute.NewSnapshot(ctx, \"my_source_snapshot\", \u0026compute.SnapshotArgs{\n\t\t\tName: pulumi.String(\"workstation-config\"),\n\t\t\tSourceDisk: mySourceDisk.Name,\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\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 = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: defaultWorkstationCluster.Location,\n\t\t\tPersistentDirectories: workstations.WorkstationConfigPersistentDirectoryArray{\n\t\t\t\t\u0026workstations.WorkstationConfigPersistentDirectoryArgs{\n\t\t\t\t\tMountPath: pulumi.String(\"/home\"),\n\t\t\t\t\tGcePd: \u0026workstations.WorkstationConfigPersistentDirectoryGcePdArgs{\n\t\t\t\t\t\tSourceSnapshot: mySourceSnapshot.ID(),\n\t\t\t\t\t\tReclaimPolicy: pulumi.String(\"DELETE\"),\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.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.Snapshot;\nimport com.pulumi.gcp.compute.SnapshotArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryGcePdArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var mySourceDisk = new Disk(\"mySourceDisk\", DiskArgs.builder()\n .name(\"workstation-config\")\n .size(10)\n .type(\"pd-ssd\")\n .zone(\"us-central1-a\")\n .build());\n\n var mySourceSnapshot = new Snapshot(\"mySourceSnapshot\", SnapshotArgs.builder()\n .name(\"workstation-config\")\n .sourceDisk(mySourceDisk.name())\n .zone(\"us-central1-a\")\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(defaultWorkstationCluster.location())\n .persistentDirectories(WorkstationConfigPersistentDirectoryArgs.builder()\n .mountPath(\"/home\")\n .gcePd(WorkstationConfigPersistentDirectoryGcePdArgs.builder()\n .sourceSnapshot(mySourceSnapshot.id())\n .reclaimPolicy(\"DELETE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n mySourceDisk:\n type: gcp:compute:Disk\n name: my_source_disk\n properties:\n name: workstation-config\n size: 10\n type: pd-ssd\n zone: us-central1-a\n mySourceSnapshot:\n type: gcp:compute:Snapshot\n name: my_source_snapshot\n properties:\n name: workstation-config\n sourceDisk: ${mySourceDisk.name}\n zone: us-central1-a\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: ${defaultWorkstationCluster.location}\n persistentDirectories:\n - mountPath: /home\n gcePd:\n sourceSnapshot: ${mySourceSnapshot.id}\n reclaimPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Shielded Instance Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gceInstance\": {\n \"machineType\": \"e2-standard-4\",\n \"bootDiskSizeGb\": 35,\n \"disablePublicIpAddresses\": True,\n \"shieldedInstanceConfig\": {\n \"enableSecureBoot\": True,\n \"enableVtpm\": True,\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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tShieldedInstanceConfig: \u0026workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{\n\t\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\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.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Accelerators\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"n1-standard-2\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n accelerators: [{\n type: \"nvidia-tesla-t4\",\n count: 1,\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gceInstance\": {\n \"machineType\": \"n1-standard-2\",\n \"bootDiskSizeGb\": 35,\n \"disablePublicIpAddresses\": True,\n \"accelerators\": [{\n \"type\": \"nvidia-tesla-t4\",\n \"count\": 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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"n1-standard-2\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n Accelerators = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceAcceleratorArgs\n {\n Type = \"nvidia-tesla-t4\",\n Count = 1,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tAccelerators: workstations.WorkstationConfigHostGceInstanceAcceleratorArray{\n\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceAcceleratorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"nvidia-tesla-t4\"),\n\t\t\t\t\t\t\tCount: pulumi.Int(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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"n1-standard-2\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .accelerators(WorkstationConfigHostGceInstanceAcceleratorArgs.builder()\n .type(\"nvidia-tesla-t4\")\n .count(\"1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: n1-standard-2\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n accelerators:\n - type: nvidia-tesla-t4\n count: '1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Boost\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n boostConfigs: [\n {\n id: \"boost-1\",\n machineType: \"n1-standard-2\",\n accelerators: [{\n type: \"nvidia-tesla-t4\",\n count: 1,\n }],\n },\n {\n id: \"boost-2\",\n machineType: \"n1-standard-2\",\n poolSize: 2,\n bootDiskSizeGb: 30,\n enableNestedVirtualization: true,\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gceInstance\": {\n \"machineType\": \"e2-standard-4\",\n \"bootDiskSizeGb\": 35,\n \"disablePublicIpAddresses\": True,\n \"boostConfigs\": [\n {\n \"id\": \"boost-1\",\n \"machineType\": \"n1-standard-2\",\n \"accelerators\": [{\n \"type\": \"nvidia-tesla-t4\",\n \"count\": 1,\n }],\n },\n {\n \"id\": \"boost-2\",\n \"machineType\": \"n1-standard-2\",\n \"poolSize\": 2,\n \"bootDiskSizeGb\": 30,\n \"enableNestedVirtualization\": True,\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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n BoostConfigs = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigArgs\n {\n Id = \"boost-1\",\n MachineType = \"n1-standard-2\",\n Accelerators = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs\n {\n Type = \"nvidia-tesla-t4\",\n Count = 1,\n },\n },\n },\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigArgs\n {\n Id = \"boost-2\",\n MachineType = \"n1-standard-2\",\n PoolSize = 2,\n BootDiskSizeGb = 30,\n EnableNestedVirtualization = true,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tBoostConfigs: workstations.WorkstationConfigHostGceInstanceBoostConfigArray{\n\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceBoostConfigArgs{\n\t\t\t\t\t\t\tId: pulumi.String(\"boost-1\"),\n\t\t\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\t\t\tAccelerators: workstations.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArray{\n\t\t\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs{\n\t\t\t\t\t\t\t\t\tType: pulumi.String(\"nvidia-tesla-t4\"),\n\t\t\t\t\t\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceBoostConfigArgs{\n\t\t\t\t\t\t\tId: pulumi.String(\"boost-2\"),\n\t\t\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\t\t\tPoolSize: pulumi.Int(2),\n\t\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(30),\n\t\t\t\t\t\t\tEnableNestedVirtualization: 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})\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.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .boostConfigs( \n WorkstationConfigHostGceInstanceBoostConfigArgs.builder()\n .id(\"boost-1\")\n .machineType(\"n1-standard-2\")\n .accelerators(WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs.builder()\n .type(\"nvidia-tesla-t4\")\n .count(\"1\")\n .build())\n .build(),\n WorkstationConfigHostGceInstanceBoostConfigArgs.builder()\n .id(\"boost-2\")\n .machineType(\"n1-standard-2\")\n .poolSize(2)\n .bootDiskSizeGb(30)\n .enableNestedVirtualization(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n boostConfigs:\n - id: boost-1\n machineType: n1-standard-2\n accelerators:\n - type: nvidia-tesla-t4\n count: '1'\n - id: boost-2\n machineType: n1-standard-2\n poolSize: 2\n bootDiskSizeGb: 30\n enableNestedVirtualization: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Encryption Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultKeyRing = new gcp.kms.KeyRing(\"default\", {\n name: \"workstation-cluster\",\n location: \"us-central1\",\n});\nconst defaultCryptoKey = new gcp.kms.CryptoKey(\"default\", {\n name: \"workstation-cluster\",\n keyRing: defaultKeyRing.id,\n});\nconst defaultAccount = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"my-account\",\n displayName: \"Service Account\",\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n },\n },\n },\n encryptionKey: {\n kmsKey: defaultCryptoKey.id,\n kmsKeyServiceAccount: defaultAccount.email,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_key_ring = gcp.kms.KeyRing(\"default\",\n name=\"workstation-cluster\",\n location=\"us-central1\")\ndefault_crypto_key = gcp.kms.CryptoKey(\"default\",\n name=\"workstation-cluster\",\n key_ring=default_key_ring.id)\ndefault_account = gcp.serviceaccount.Account(\"default\",\n account_id=\"my-account\",\n display_name=\"Service Account\")\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gceInstance\": {\n \"machineType\": \"e2-standard-4\",\n \"bootDiskSizeGb\": 35,\n \"disablePublicIpAddresses\": True,\n \"shieldedInstanceConfig\": {\n \"enableSecureBoot\": True,\n \"enableVtpm\": True,\n },\n },\n },\n encryption_key={\n \"kmsKey\": default_crypto_key.id,\n \"kmsKeyServiceAccount\": default_account.email,\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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultKeyRing = new Gcp.Kms.KeyRing(\"default\", new()\n {\n Name = \"workstation-cluster\",\n Location = \"us-central1\",\n });\n\n var defaultCryptoKey = new Gcp.Kms.CryptoKey(\"default\", new()\n {\n Name = \"workstation-cluster\",\n KeyRing = defaultKeyRing.Id,\n });\n\n var defaultAccount = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Service Account\",\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n },\n },\n },\n EncryptionKey = new Gcp.Workstations.Inputs.WorkstationConfigEncryptionKeyArgs\n {\n KmsKey = defaultCryptoKey.Id,\n KmsKeyServiceAccount = defaultAccount.Email,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultKeyRing, err := kms.NewKeyRing(ctx, \"default\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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\tdefaultCryptoKey, err := kms.NewCryptoKey(ctx, \"default\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tKeyRing: defaultKeyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAccount, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tShieldedInstanceConfig: \u0026workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{\n\t\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEncryptionKey: \u0026workstations.WorkstationConfigEncryptionKeyArgs{\n\t\t\t\tKmsKey: defaultCryptoKey.ID(),\n\t\t\t\tKmsKeyServiceAccount: defaultAccount.Email,\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.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigEncryptionKeyArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultKeyRing = new KeyRing(\"defaultKeyRing\", KeyRingArgs.builder()\n .name(\"workstation-cluster\")\n .location(\"us-central1\")\n .build());\n\n var defaultCryptoKey = new CryptoKey(\"defaultCryptoKey\", CryptoKeyArgs.builder()\n .name(\"workstation-cluster\")\n .keyRing(defaultKeyRing.id())\n .build());\n\n var defaultAccount = new Account(\"defaultAccount\", AccountArgs.builder()\n .accountId(\"my-account\")\n .displayName(\"Service Account\")\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .build())\n .build())\n .build())\n .encryptionKey(WorkstationConfigEncryptionKeyArgs.builder()\n .kmsKey(defaultCryptoKey.id())\n .kmsKeyServiceAccount(defaultAccount.email())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultKeyRing:\n type: gcp:kms:KeyRing\n name: default\n properties:\n name: workstation-cluster\n location: us-central1\n defaultCryptoKey:\n type: gcp:kms:CryptoKey\n name: default\n properties:\n name: workstation-cluster\n keyRing: ${defaultKeyRing.id}\n defaultAccount:\n type: gcp:serviceaccount:Account\n name: default\n properties:\n accountId: my-account\n displayName: Service Account\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n encryptionKey:\n kmsKey: ${defaultCryptoKey.id}\n kmsKeyServiceAccount: ${defaultAccount.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkstationConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}`\n\n* `{{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}`\n\n* `{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}`\n\nWhen using the `pulumi import` command, WorkstationConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default {{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default {{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}\n```\n\n", + "description": "## Example Usage\n\n### Workstation Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tagKey1 = new gcp.tags.TagKey(\"tag_key1\", {\n parent: \"organizations/123456789\",\n shortName: \"keyname\",\n});\nconst tagValue1 = new gcp.tags.TagValue(\"tag_value1\", {\n parent: pulumi.interpolate`tagKeys/${tagKey1.name}`,\n shortName: \"valuename\",\n});\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n idleTimeout: \"600s\",\n runningTimeout: \"21600s\",\n replicaZones: [\n \"us-central1-a\",\n \"us-central1-b\",\n ],\n annotations: {\n \"label-one\": \"value-one\",\n },\n labels: {\n label: \"key\",\n },\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n disableSsh: false,\n vmTags: pulumi.all([tagKey1.name, tagValue1.name]).apply(([tagKey1Name, tagValue1Name]) =\u003e {\n [`tagKeys/${tagKey1Name}`]: `tagValues/${tagValue1Name}`,\n }),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntag_key1 = gcp.tags.TagKey(\"tag_key1\",\n parent=\"organizations/123456789\",\n short_name=\"keyname\")\ntag_value1 = gcp.tags.TagValue(\"tag_value1\",\n parent=tag_key1.name.apply(lambda name: f\"tagKeys/{name}\"),\n short_name=\"valuename\")\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n idle_timeout=\"600s\",\n running_timeout=\"21600s\",\n replica_zones=[\n \"us-central1-a\",\n \"us-central1-b\",\n ],\n annotations={\n \"label-one\": \"value-one\",\n },\n labels={\n \"label\": \"key\",\n },\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"disable_ssh\": False,\n \"vm_tags\": pulumi.Output.all(tag_key1.name, tag_value1.name).apply(lambda tagKey1Name, tagValue1Name: {\n \"\": f\"tagValues/{tag_value1_name}\",\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 tagKey1 = new Gcp.Tags.TagKey(\"tag_key1\", new()\n {\n Parent = \"organizations/123456789\",\n ShortName = \"keyname\",\n });\n\n var tagValue1 = new Gcp.Tags.TagValue(\"tag_value1\", new()\n {\n Parent = tagKey1.Name.Apply(name =\u003e $\"tagKeys/{name}\"),\n ShortName = \"valuename\",\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n IdleTimeout = \"600s\",\n RunningTimeout = \"21600s\",\n ReplicaZones = new[]\n {\n \"us-central1-a\",\n \"us-central1-b\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n DisableSsh = false,\n VmTags = Output.Tuple(tagKey1.Name, tagValue1.Name).Apply(values =\u003e\n {\n var tagKey1Name = values.Item1;\n var tagValue1Name = values.Item2;\n return \n {\n { $\"tagKeys/{tagKey1Name}\", $\"tagValues/{tagValue1Name}\" },\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/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/tags\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\ntagKey1, err := tags.NewTagKey(ctx, \"tag_key1\", \u0026tags.TagKeyArgs{\nParent: pulumi.String(\"organizations/123456789\"),\nShortName: pulumi.String(\"keyname\"),\n})\nif err != nil {\nreturn err\n}\ntagValue1, err := tags.NewTagValue(ctx, \"tag_value1\", \u0026tags.TagValueArgs{\nParent: tagKey1.Name.ApplyT(func(name string) (string, error) {\nreturn fmt.Sprintf(\"tagKeys/%v\", name), nil\n}).(pulumi.StringOutput),\nShortName: pulumi.String(\"valuename\"),\n})\nif err != nil {\nreturn err\n}\n_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\nName: pulumi.String(\"workstation-cluster\"),\nAutoCreateSubnetworks: pulumi.Bool(false),\n})\nif err != nil {\nreturn err\n}\ndefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\nName: pulumi.String(\"workstation-cluster\"),\nIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\nRegion: pulumi.String(\"us-central1\"),\nNetwork: _default.Name,\n})\nif err != nil {\nreturn err\n}\ndefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\nWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\nNetwork: _default.ID(),\nSubnetwork: defaultSubnetwork.ID(),\nLocation: pulumi.String(\"us-central1\"),\nLabels: pulumi.StringMap{\n\"label\": pulumi.String(\"key\"),\n},\nAnnotations: pulumi.StringMap{\n\"label-one\": pulumi.String(\"value-one\"),\n},\n})\nif err != nil {\nreturn err\n}\n_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\nWorkstationConfigId: pulumi.String(\"workstation-config\"),\nWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\nLocation: pulumi.String(\"us-central1\"),\nIdleTimeout: pulumi.String(\"600s\"),\nRunningTimeout: pulumi.String(\"21600s\"),\nReplicaZones: pulumi.StringArray{\npulumi.String(\"us-central1-a\"),\npulumi.String(\"us-central1-b\"),\n},\nAnnotations: pulumi.StringMap{\n\"label-one\": pulumi.String(\"value-one\"),\n},\nLabels: pulumi.StringMap{\n\"label\": pulumi.String(\"key\"),\n},\nHost: \u0026workstations.WorkstationConfigHostArgs{\nGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\nMachineType: pulumi.String(\"e2-standard-4\"),\nBootDiskSizeGb: pulumi.Int(35),\nDisablePublicIpAddresses: pulumi.Bool(true),\nDisableSsh: pulumi.Bool(false),\nVmTags: pulumi.All(tagKey1.Name,tagValue1.Name).ApplyT(func(_args []interface{}) (map[string]string, error) {\ntagKey1Name := _args[0].(string)\ntagValue1Name := _args[1].(string)\nreturn map[string]string{\nfmt.Sprintf(\"tagKeys/%v\", tagKey1Name): fmt.Sprintf(\"tagValues/%v\", tagValue1Name),\n}, nil\n}).(pulumi.Map[string]stringOutput),\n},\n},\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\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.tags.TagKey;\nimport com.pulumi.gcp.tags.TagKeyArgs;\nimport com.pulumi.gcp.tags.TagValue;\nimport com.pulumi.gcp.tags.TagValueArgs;\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.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\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 tagKey1 = new TagKey(\"tagKey1\", TagKeyArgs.builder()\n .parent(\"organizations/123456789\")\n .shortName(\"keyname\")\n .build());\n\n var tagValue1 = new TagValue(\"tagValue1\", TagValueArgs.builder()\n .parent(tagKey1.name().applyValue(name -\u003e String.format(\"tagKeys/%s\", name)))\n .shortName(\"valuename\")\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .idleTimeout(\"600s\")\n .runningTimeout(\"21600s\")\n .replicaZones( \n \"us-central1-a\",\n \"us-central1-b\")\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .labels(Map.of(\"label\", \"key\"))\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .disableSsh(false)\n .vmTags(Output.tuple(tagKey1.name(), tagValue1.name()).applyValue(values -\u003e {\n var tagKey1Name = values.t1;\n var tagValue1Name = values.t2;\n return Map.of(String.format(\"tagKeys/%s\", tagKey1Name), String.format(\"tagValues/%s\", tagValue1Name));\n }))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tagKey1:\n type: gcp:tags:TagKey\n name: tag_key1\n properties:\n parent: organizations/123456789\n shortName: keyname\n tagValue1:\n type: gcp:tags:TagValue\n name: tag_value1\n properties:\n parent: tagKeys/${tagKey1.name}\n shortName: valuename\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n idleTimeout: 600s\n runningTimeout: 21600s\n replicaZones:\n - us-central1-a\n - us-central1-b\n annotations:\n label-one: value-one\n labels:\n label: key\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n disableSsh: false\n vmTags:\n tagKeys/${tagKey1.name}: tagValues/${tagValue1.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Container\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"n1-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n enableNestedVirtualization: true,\n },\n },\n container: {\n image: \"intellij\",\n env: {\n NAME: \"FOO\",\n BABE: \"bar\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"n1-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"enable_nested_virtualization\": True,\n },\n },\n container={\n \"image\": \"intellij\",\n \"env\": {\n \"name\": \"FOO\",\n \"babe\": \"bar\",\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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"n1-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n EnableNestedVirtualization = true,\n },\n },\n Container = new Gcp.Workstations.Inputs.WorkstationConfigContainerArgs\n {\n Image = \"intellij\",\n Env = \n {\n { \"NAME\", \"FOO\" },\n { \"BABE\", \"bar\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tEnableNestedVirtualization: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tContainer: \u0026workstations.WorkstationConfigContainerArgs{\n\t\t\t\tImage: pulumi.String(\"intellij\"),\n\t\t\t\tEnv: pulumi.StringMap{\n\t\t\t\t\t\"NAME\": pulumi.String(\"FOO\"),\n\t\t\t\t\t\"BABE\": pulumi.String(\"bar\"),\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.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigContainerArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"n1-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .enableNestedVirtualization(true)\n .build())\n .build())\n .container(WorkstationConfigContainerArgs.builder()\n .image(\"intellij\")\n .env(Map.ofEntries(\n Map.entry(\"NAME\", \"FOO\"),\n Map.entry(\"BABE\", \"bar\")\n ))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: n1-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n enableNestedVirtualization: true\n container:\n image: intellij\n env:\n NAME: FOO\n BABE: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Persistent Directories\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n },\n },\n },\n persistentDirectories: [{\n mountPath: \"/home\",\n gcePd: {\n sizeGb: 200,\n fsType: \"ext4\",\n diskType: \"pd-standard\",\n reclaimPolicy: \"DELETE\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"shielded_instance_config\": {\n \"enable_secure_boot\": True,\n \"enable_vtpm\": True,\n },\n },\n },\n persistent_directories=[{\n \"mount_path\": \"/home\",\n \"gce_pd\": {\n \"size_gb\": 200,\n \"fs_type\": \"ext4\",\n \"disk_type\": \"pd-standard\",\n \"reclaim_policy\": \"DELETE\",\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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n },\n },\n },\n PersistentDirectories = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryArgs\n {\n MountPath = \"/home\",\n GcePd = new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryGcePdArgs\n {\n SizeGb = 200,\n FsType = \"ext4\",\n DiskType = \"pd-standard\",\n ReclaimPolicy = \"DELETE\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tShieldedInstanceConfig: \u0026workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{\n\t\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPersistentDirectories: workstations.WorkstationConfigPersistentDirectoryArray{\n\t\t\t\t\u0026workstations.WorkstationConfigPersistentDirectoryArgs{\n\t\t\t\t\tMountPath: pulumi.String(\"/home\"),\n\t\t\t\t\tGcePd: \u0026workstations.WorkstationConfigPersistentDirectoryGcePdArgs{\n\t\t\t\t\t\tSizeGb: pulumi.Int(200),\n\t\t\t\t\t\tFsType: pulumi.String(\"ext4\"),\n\t\t\t\t\t\tDiskType: pulumi.String(\"pd-standard\"),\n\t\t\t\t\t\tReclaimPolicy: pulumi.String(\"DELETE\"),\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.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryGcePdArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .build())\n .build())\n .build())\n .persistentDirectories(WorkstationConfigPersistentDirectoryArgs.builder()\n .mountPath(\"/home\")\n .gcePd(WorkstationConfigPersistentDirectoryGcePdArgs.builder()\n .sizeGb(200)\n .fsType(\"ext4\")\n .diskType(\"pd-standard\")\n .reclaimPolicy(\"DELETE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n persistentDirectories:\n - mountPath: /home\n gcePd:\n sizeGb: 200\n fsType: ext4\n diskType: pd-standard\n reclaimPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Source Snapshot\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst mySourceDisk = new gcp.compute.Disk(\"my_source_disk\", {\n name: \"workstation-config\",\n size: 10,\n type: \"pd-ssd\",\n zone: \"us-central1-a\",\n});\nconst mySourceSnapshot = new gcp.compute.Snapshot(\"my_source_snapshot\", {\n name: \"workstation-config\",\n sourceDisk: mySourceDisk.name,\n zone: \"us-central1-a\",\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: defaultWorkstationCluster.location,\n persistentDirectories: [{\n mountPath: \"/home\",\n gcePd: {\n sourceSnapshot: mySourceSnapshot.id,\n reclaimPolicy: \"DELETE\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\nmy_source_disk = gcp.compute.Disk(\"my_source_disk\",\n name=\"workstation-config\",\n size=10,\n type=\"pd-ssd\",\n zone=\"us-central1-a\")\nmy_source_snapshot = gcp.compute.Snapshot(\"my_source_snapshot\",\n name=\"workstation-config\",\n source_disk=my_source_disk.name,\n zone=\"us-central1-a\")\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\")\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=default_workstation_cluster.location,\n persistent_directories=[{\n \"mount_path\": \"/home\",\n \"gce_pd\": {\n \"source_snapshot\": my_source_snapshot.id,\n \"reclaim_policy\": \"DELETE\",\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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var mySourceDisk = new Gcp.Compute.Disk(\"my_source_disk\", new()\n {\n Name = \"workstation-config\",\n Size = 10,\n Type = \"pd-ssd\",\n Zone = \"us-central1-a\",\n });\n\n var mySourceSnapshot = new Gcp.Compute.Snapshot(\"my_source_snapshot\", new()\n {\n Name = \"workstation-config\",\n SourceDisk = mySourceDisk.Name,\n Zone = \"us-central1-a\",\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = defaultWorkstationCluster.Location,\n PersistentDirectories = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryArgs\n {\n MountPath = \"/home\",\n GcePd = new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryGcePdArgs\n {\n SourceSnapshot = mySourceSnapshot.Id,\n ReclaimPolicy = \"DELETE\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmySourceDisk, err := compute.NewDisk(ctx, \"my_source_disk\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"workstation-config\"),\n\t\t\tSize: pulumi.Int(10),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmySourceSnapshot, err := compute.NewSnapshot(ctx, \"my_source_snapshot\", \u0026compute.SnapshotArgs{\n\t\t\tName: pulumi.String(\"workstation-config\"),\n\t\t\tSourceDisk: mySourceDisk.Name,\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\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 = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: defaultWorkstationCluster.Location,\n\t\t\tPersistentDirectories: workstations.WorkstationConfigPersistentDirectoryArray{\n\t\t\t\t\u0026workstations.WorkstationConfigPersistentDirectoryArgs{\n\t\t\t\t\tMountPath: pulumi.String(\"/home\"),\n\t\t\t\t\tGcePd: \u0026workstations.WorkstationConfigPersistentDirectoryGcePdArgs{\n\t\t\t\t\t\tSourceSnapshot: mySourceSnapshot.ID(),\n\t\t\t\t\t\tReclaimPolicy: pulumi.String(\"DELETE\"),\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.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.Snapshot;\nimport com.pulumi.gcp.compute.SnapshotArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryGcePdArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var mySourceDisk = new Disk(\"mySourceDisk\", DiskArgs.builder()\n .name(\"workstation-config\")\n .size(10)\n .type(\"pd-ssd\")\n .zone(\"us-central1-a\")\n .build());\n\n var mySourceSnapshot = new Snapshot(\"mySourceSnapshot\", SnapshotArgs.builder()\n .name(\"workstation-config\")\n .sourceDisk(mySourceDisk.name())\n .zone(\"us-central1-a\")\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(defaultWorkstationCluster.location())\n .persistentDirectories(WorkstationConfigPersistentDirectoryArgs.builder()\n .mountPath(\"/home\")\n .gcePd(WorkstationConfigPersistentDirectoryGcePdArgs.builder()\n .sourceSnapshot(mySourceSnapshot.id())\n .reclaimPolicy(\"DELETE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n mySourceDisk:\n type: gcp:compute:Disk\n name: my_source_disk\n properties:\n name: workstation-config\n size: 10\n type: pd-ssd\n zone: us-central1-a\n mySourceSnapshot:\n type: gcp:compute:Snapshot\n name: my_source_snapshot\n properties:\n name: workstation-config\n sourceDisk: ${mySourceDisk.name}\n zone: us-central1-a\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: ${defaultWorkstationCluster.location}\n persistentDirectories:\n - mountPath: /home\n gcePd:\n sourceSnapshot: ${mySourceSnapshot.id}\n reclaimPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Shielded Instance Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"shielded_instance_config\": {\n \"enable_secure_boot\": True,\n \"enable_vtpm\": True,\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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tShieldedInstanceConfig: \u0026workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{\n\t\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\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.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Accelerators\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"n1-standard-2\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n accelerators: [{\n type: \"nvidia-tesla-t4\",\n count: 1,\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"n1-standard-2\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"accelerators\": [{\n \"type\": \"nvidia-tesla-t4\",\n \"count\": 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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"n1-standard-2\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n Accelerators = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceAcceleratorArgs\n {\n Type = \"nvidia-tesla-t4\",\n Count = 1,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tAccelerators: workstations.WorkstationConfigHostGceInstanceAcceleratorArray{\n\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceAcceleratorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"nvidia-tesla-t4\"),\n\t\t\t\t\t\t\tCount: pulumi.Int(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.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"n1-standard-2\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .accelerators(WorkstationConfigHostGceInstanceAcceleratorArgs.builder()\n .type(\"nvidia-tesla-t4\")\n .count(\"1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: n1-standard-2\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n accelerators:\n - type: nvidia-tesla-t4\n count: '1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Boost\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n boostConfigs: [\n {\n id: \"boost-1\",\n machineType: \"n1-standard-2\",\n accelerators: [{\n type: \"nvidia-tesla-t4\",\n count: 1,\n }],\n },\n {\n id: \"boost-2\",\n machineType: \"n1-standard-2\",\n poolSize: 2,\n bootDiskSizeGb: 30,\n enableNestedVirtualization: true,\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"boost_configs\": [\n {\n \"id\": \"boost-1\",\n \"machine_type\": \"n1-standard-2\",\n \"accelerators\": [{\n \"type\": \"nvidia-tesla-t4\",\n \"count\": 1,\n }],\n },\n {\n \"id\": \"boost-2\",\n \"machine_type\": \"n1-standard-2\",\n \"pool_size\": 2,\n \"boot_disk_size_gb\": 30,\n \"enable_nested_virtualization\": True,\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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n BoostConfigs = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigArgs\n {\n Id = \"boost-1\",\n MachineType = \"n1-standard-2\",\n Accelerators = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs\n {\n Type = \"nvidia-tesla-t4\",\n Count = 1,\n },\n },\n },\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigArgs\n {\n Id = \"boost-2\",\n MachineType = \"n1-standard-2\",\n PoolSize = 2,\n BootDiskSizeGb = 30,\n EnableNestedVirtualization = true,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tBoostConfigs: workstations.WorkstationConfigHostGceInstanceBoostConfigArray{\n\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceBoostConfigArgs{\n\t\t\t\t\t\t\tId: pulumi.String(\"boost-1\"),\n\t\t\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\t\t\tAccelerators: workstations.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArray{\n\t\t\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs{\n\t\t\t\t\t\t\t\t\tType: pulumi.String(\"nvidia-tesla-t4\"),\n\t\t\t\t\t\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceBoostConfigArgs{\n\t\t\t\t\t\t\tId: pulumi.String(\"boost-2\"),\n\t\t\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\t\t\tPoolSize: pulumi.Int(2),\n\t\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(30),\n\t\t\t\t\t\t\tEnableNestedVirtualization: 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})\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.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .boostConfigs( \n WorkstationConfigHostGceInstanceBoostConfigArgs.builder()\n .id(\"boost-1\")\n .machineType(\"n1-standard-2\")\n .accelerators(WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs.builder()\n .type(\"nvidia-tesla-t4\")\n .count(\"1\")\n .build())\n .build(),\n WorkstationConfigHostGceInstanceBoostConfigArgs.builder()\n .id(\"boost-2\")\n .machineType(\"n1-standard-2\")\n .poolSize(2)\n .bootDiskSizeGb(30)\n .enableNestedVirtualization(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n boostConfigs:\n - id: boost-1\n machineType: n1-standard-2\n accelerators:\n - type: nvidia-tesla-t4\n count: '1'\n - id: boost-2\n machineType: n1-standard-2\n poolSize: 2\n bootDiskSizeGb: 30\n enableNestedVirtualization: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Encryption Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultKeyRing = new gcp.kms.KeyRing(\"default\", {\n name: \"workstation-cluster\",\n location: \"us-central1\",\n});\nconst defaultCryptoKey = new gcp.kms.CryptoKey(\"default\", {\n name: \"workstation-cluster\",\n keyRing: defaultKeyRing.id,\n});\nconst defaultAccount = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"my-account\",\n displayName: \"Service Account\",\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n },\n },\n },\n encryptionKey: {\n kmsKey: defaultCryptoKey.id,\n kmsKeyServiceAccount: defaultAccount.email,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_key_ring = gcp.kms.KeyRing(\"default\",\n name=\"workstation-cluster\",\n location=\"us-central1\")\ndefault_crypto_key = gcp.kms.CryptoKey(\"default\",\n name=\"workstation-cluster\",\n key_ring=default_key_ring.id)\ndefault_account = gcp.serviceaccount.Account(\"default\",\n account_id=\"my-account\",\n display_name=\"Service Account\")\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"shielded_instance_config\": {\n \"enable_secure_boot\": True,\n \"enable_vtpm\": True,\n },\n },\n },\n encryption_key={\n \"kms_key\": default_crypto_key.id,\n \"kms_key_service_account\": default_account.email,\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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultKeyRing = new Gcp.Kms.KeyRing(\"default\", new()\n {\n Name = \"workstation-cluster\",\n Location = \"us-central1\",\n });\n\n var defaultCryptoKey = new Gcp.Kms.CryptoKey(\"default\", new()\n {\n Name = \"workstation-cluster\",\n KeyRing = defaultKeyRing.Id,\n });\n\n var defaultAccount = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Service Account\",\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n },\n },\n },\n EncryptionKey = new Gcp.Workstations.Inputs.WorkstationConfigEncryptionKeyArgs\n {\n KmsKey = defaultCryptoKey.Id,\n KmsKeyServiceAccount = defaultAccount.Email,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/workstations\"\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, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultKeyRing, err := kms.NewKeyRing(ctx, \"default\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\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\tdefaultCryptoKey, err := kms.NewCryptoKey(ctx, \"default\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tKeyRing: defaultKeyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAccount, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tShieldedInstanceConfig: \u0026workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{\n\t\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEncryptionKey: \u0026workstations.WorkstationConfigEncryptionKeyArgs{\n\t\t\t\tKmsKey: defaultCryptoKey.ID(),\n\t\t\t\tKmsKeyServiceAccount: defaultAccount.Email,\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.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\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.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigEncryptionKeyArgs;\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 Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultKeyRing = new KeyRing(\"defaultKeyRing\", KeyRingArgs.builder()\n .name(\"workstation-cluster\")\n .location(\"us-central1\")\n .build());\n\n var defaultCryptoKey = new CryptoKey(\"defaultCryptoKey\", CryptoKeyArgs.builder()\n .name(\"workstation-cluster\")\n .keyRing(defaultKeyRing.id())\n .build());\n\n var defaultAccount = new Account(\"defaultAccount\", AccountArgs.builder()\n .accountId(\"my-account\")\n .displayName(\"Service Account\")\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .build())\n .build())\n .build())\n .encryptionKey(WorkstationConfigEncryptionKeyArgs.builder()\n .kmsKey(defaultCryptoKey.id())\n .kmsKeyServiceAccount(defaultAccount.email())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultKeyRing:\n type: gcp:kms:KeyRing\n name: default\n properties:\n name: workstation-cluster\n location: us-central1\n defaultCryptoKey:\n type: gcp:kms:CryptoKey\n name: default\n properties:\n name: workstation-cluster\n keyRing: ${defaultKeyRing.id}\n defaultAccount:\n type: gcp:serviceaccount:Account\n name: default\n properties:\n accountId: my-account\n displayName: Service Account\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n encryptionKey:\n kmsKey: ${defaultCryptoKey.id}\n kmsKeyServiceAccount: ${defaultAccount.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkstationConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}`\n\n* `{{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}`\n\n* `{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}`\n\nWhen using the `pulumi import` command, WorkstationConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default {{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default {{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -255198,7 +255198,7 @@ } }, "gcp:composer/getImageVersions:getImageVersions": { - "description": "Provides access to available Cloud Composer versions in a region for a given project.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst all = gcp.composer.getImageVersions({});\nconst test = new gcp.composer.Environment(\"test\", {\n name: \"test-env\",\n region: \"us-central1\",\n config: {\n softwareConfig: {\n imageVersion: all.then(all =\u003e all.imageVersions?.[0]?.imageVersionId),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nall = gcp.composer.get_image_versions()\ntest = gcp.composer.Environment(\"test\",\n name=\"test-env\",\n region=\"us-central1\",\n config={\n \"softwareConfig\": {\n \"imageVersion\": all.image_versions[0].image_version_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 all = Gcp.Composer.GetImageVersions.Invoke();\n\n var test = new Gcp.Composer.Environment(\"test\", new()\n {\n Name = \"test-env\",\n Region = \"us-central1\",\n Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs\n {\n SoftwareConfig = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigArgs\n {\n ImageVersion = all.Apply(getImageVersionsResult =\u003e getImageVersionsResult.ImageVersions[0]?.ImageVersionId),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/composer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tall, err := composer.GetImageVersions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = composer.NewEnvironment(ctx, \"test\", \u0026composer.EnvironmentArgs{\n\t\t\tName: pulumi.String(\"test-env\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026composer.EnvironmentConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026composer.EnvironmentConfigSoftwareConfigArgs{\n\t\t\t\t\tImageVersion: pulumi.String(all.ImageVersions[0].ImageVersionId),\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.composer.ComposerFunctions;\nimport com.pulumi.gcp.composer.inputs.GetImageVersionsArgs;\nimport com.pulumi.gcp.composer.Environment;\nimport com.pulumi.gcp.composer.EnvironmentArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;\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 all = ComposerFunctions.getImageVersions();\n\n var test = new Environment(\"test\", EnvironmentArgs.builder()\n .name(\"test-env\")\n .region(\"us-central1\")\n .config(EnvironmentConfigArgs.builder()\n .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()\n .imageVersion(all.applyValue(getImageVersionsResult -\u003e getImageVersionsResult.imageVersions()[0].imageVersionId()))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:composer:Environment\n properties:\n name: test-env\n region: us-central1\n config:\n softwareConfig:\n imageVersion: ${all.imageVersions[0].imageVersionId}\nvariables:\n all:\n fn::invoke:\n Function: gcp:composer:getImageVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Provides access to available Cloud Composer versions in a region for a given project.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst all = gcp.composer.getImageVersions({});\nconst test = new gcp.composer.Environment(\"test\", {\n name: \"test-env\",\n region: \"us-central1\",\n config: {\n softwareConfig: {\n imageVersion: all.then(all =\u003e all.imageVersions?.[0]?.imageVersionId),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nall = gcp.composer.get_image_versions()\ntest = gcp.composer.Environment(\"test\",\n name=\"test-env\",\n region=\"us-central1\",\n config={\n \"software_config\": {\n \"image_version\": all.image_versions[0].image_version_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 all = Gcp.Composer.GetImageVersions.Invoke();\n\n var test = new Gcp.Composer.Environment(\"test\", new()\n {\n Name = \"test-env\",\n Region = \"us-central1\",\n Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs\n {\n SoftwareConfig = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigArgs\n {\n ImageVersion = all.Apply(getImageVersionsResult =\u003e getImageVersionsResult.ImageVersions[0]?.ImageVersionId),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/composer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tall, err := composer.GetImageVersions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = composer.NewEnvironment(ctx, \"test\", \u0026composer.EnvironmentArgs{\n\t\t\tName: pulumi.String(\"test-env\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026composer.EnvironmentConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026composer.EnvironmentConfigSoftwareConfigArgs{\n\t\t\t\t\tImageVersion: pulumi.String(all.ImageVersions[0].ImageVersionId),\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.composer.ComposerFunctions;\nimport com.pulumi.gcp.composer.inputs.GetImageVersionsArgs;\nimport com.pulumi.gcp.composer.Environment;\nimport com.pulumi.gcp.composer.EnvironmentArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;\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 all = ComposerFunctions.getImageVersions();\n\n var test = new Environment(\"test\", EnvironmentArgs.builder()\n .name(\"test-env\")\n .region(\"us-central1\")\n .config(EnvironmentConfigArgs.builder()\n .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()\n .imageVersion(all.applyValue(getImageVersionsResult -\u003e getImageVersionsResult.imageVersions()[0].imageVersionId()))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:composer:Environment\n properties:\n name: test-env\n region: us-central1\n config:\n softwareConfig:\n imageVersion: ${all.imageVersions[0].imageVersionId}\nvariables:\n all:\n fn::invoke:\n Function: gcp:composer:getImageVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getImageVersions.\n", "properties": { @@ -255244,7 +255244,7 @@ } }, "gcp:composer/getUserWorkloadsConfigMap:getUserWorkloadsConfigMap": { - "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleEnvironment = new gcp.composer.Environment(\"example\", {\n name: \"example-environment\",\n config: {\n softwareConfig: {\n imageVersion: \"composer-3-airflow-2\",\n },\n },\n});\nconst exampleUserWorkloadsConfigMap = new gcp.composer.UserWorkloadsConfigMap(\"example\", {\n environment: exampleEnvironment.name,\n name: \"example-config-map\",\n data: {\n db_host: \"dbhost:5432\",\n api_host: \"apihost:443\",\n },\n});\nconst example = exampleEnvironment.name.apply(name =\u003e gcp.composer.getUserWorkloadsConfigMapOutput({\n environment: name,\n name: googleComposerUserWorkloadsConfigMap.example.name,\n}));\nexport const debug = example;\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_environment = gcp.composer.Environment(\"example\",\n name=\"example-environment\",\n config={\n \"softwareConfig\": {\n \"imageVersion\": \"composer-3-airflow-2\",\n },\n })\nexample_user_workloads_config_map = gcp.composer.UserWorkloadsConfigMap(\"example\",\n environment=example_environment.name,\n name=\"example-config-map\",\n data={\n \"db_host\": \"dbhost:5432\",\n \"api_host\": \"apihost:443\",\n })\nexample = example_environment.name.apply(lambda name: gcp.composer.get_user_workloads_config_map_output(environment=name,\n name=google_composer_user_workloads_config_map[\"example\"][\"name\"]))\npulumi.export(\"debug\", example)\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 exampleEnvironment = new Gcp.Composer.Environment(\"example\", new()\n {\n Name = \"example-environment\",\n Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs\n {\n SoftwareConfig = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigArgs\n {\n ImageVersion = \"composer-3-airflow-2\",\n },\n },\n });\n\n var exampleUserWorkloadsConfigMap = new Gcp.Composer.UserWorkloadsConfigMap(\"example\", new()\n {\n Environment = exampleEnvironment.Name,\n Name = \"example-config-map\",\n Data = \n {\n { \"db_host\", \"dbhost:5432\" },\n { \"api_host\", \"apihost:443\" },\n },\n });\n\n var example = Gcp.Composer.GetUserWorkloadsConfigMap.Invoke(new()\n {\n Environment = exampleEnvironment.Name,\n Name = googleComposerUserWorkloadsConfigMap.Example.Name,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"debug\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/composer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleEnvironment, err := composer.NewEnvironment(ctx, \"example\", \u0026composer.EnvironmentArgs{\n\t\t\tName: pulumi.String(\"example-environment\"),\n\t\t\tConfig: \u0026composer.EnvironmentConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026composer.EnvironmentConfigSoftwareConfigArgs{\n\t\t\t\t\tImageVersion: pulumi.String(\"composer-3-airflow-2\"),\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 = composer.NewUserWorkloadsConfigMap(ctx, \"example\", \u0026composer.UserWorkloadsConfigMapArgs{\n\t\t\tEnvironment: exampleEnvironment.Name,\n\t\t\tName: pulumi.String(\"example-config-map\"),\n\t\t\tData: pulumi.StringMap{\n\t\t\t\t\"db_host\": pulumi.String(\"dbhost:5432\"),\n\t\t\t\t\"api_host\": pulumi.String(\"apihost:443\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := exampleEnvironment.Name.ApplyT(func(name string) (composer.GetUserWorkloadsConfigMapResult, error) {\n\t\t\treturn composer.LookupUserWorkloadsConfigMapOutput(ctx, composer.GetUserWorkloadsConfigMapOutputArgs{\n\t\t\t\tEnvironment: name,\n\t\t\t\tName: googleComposerUserWorkloadsConfigMap.Example.Name,\n\t\t\t}, nil), nil\n\t\t}).(composer.GetUserWorkloadsConfigMapResultOutput)\n\t\tctx.Export(\"debug\", example)\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.composer.Environment;\nimport com.pulumi.gcp.composer.EnvironmentArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.composer.UserWorkloadsConfigMap;\nimport com.pulumi.gcp.composer.UserWorkloadsConfigMapArgs;\nimport com.pulumi.gcp.composer.ComposerFunctions;\nimport com.pulumi.gcp.composer.inputs.GetUserWorkloadsConfigMapArgs;\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 exampleEnvironment = new Environment(\"exampleEnvironment\", EnvironmentArgs.builder()\n .name(\"example-environment\")\n .config(EnvironmentConfigArgs.builder()\n .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()\n .imageVersion(\"composer-3-airflow-2\")\n .build())\n .build())\n .build());\n\n var exampleUserWorkloadsConfigMap = new UserWorkloadsConfigMap(\"exampleUserWorkloadsConfigMap\", UserWorkloadsConfigMapArgs.builder()\n .environment(exampleEnvironment.name())\n .name(\"example-config-map\")\n .data(Map.ofEntries(\n Map.entry(\"db_host\", \"dbhost:5432\"),\n Map.entry(\"api_host\", \"apihost:443\")\n ))\n .build());\n\n final var example = ComposerFunctions.getUserWorkloadsConfigMap(GetUserWorkloadsConfigMapArgs.builder()\n .environment(exampleEnvironment.name())\n .name(googleComposerUserWorkloadsConfigMap.example().name())\n .build());\n\n ctx.export(\"debug\", example.applyValue(getUserWorkloadsConfigMapResult -\u003e getUserWorkloadsConfigMapResult));\n }\n}\n```\n```yaml\nresources:\n exampleEnvironment:\n type: gcp:composer:Environment\n name: example\n properties:\n name: example-environment\n config:\n softwareConfig:\n imageVersion: composer-3-airflow-2\n exampleUserWorkloadsConfigMap:\n type: gcp:composer:UserWorkloadsConfigMap\n name: example\n properties:\n environment: ${exampleEnvironment.name}\n name: example-config-map\n data:\n db_host: dbhost:5432\n api_host: apihost:443\nvariables:\n example:\n fn::invoke:\n Function: gcp:composer:getUserWorkloadsConfigMap\n Arguments:\n environment: ${exampleEnvironment.name}\n name: ${googleComposerUserWorkloadsConfigMap.example.name}\noutputs:\n debug: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst exampleEnvironment = new gcp.composer.Environment(\"example\", {\n name: \"example-environment\",\n config: {\n softwareConfig: {\n imageVersion: \"composer-3-airflow-2\",\n },\n },\n});\nconst exampleUserWorkloadsConfigMap = new gcp.composer.UserWorkloadsConfigMap(\"example\", {\n environment: exampleEnvironment.name,\n name: \"example-config-map\",\n data: {\n db_host: \"dbhost:5432\",\n api_host: \"apihost:443\",\n },\n});\nconst example = exampleEnvironment.name.apply(name =\u003e gcp.composer.getUserWorkloadsConfigMapOutput({\n environment: name,\n name: googleComposerUserWorkloadsConfigMap.example.name,\n}));\nexport const debug = example;\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_environment = gcp.composer.Environment(\"example\",\n name=\"example-environment\",\n config={\n \"software_config\": {\n \"image_version\": \"composer-3-airflow-2\",\n },\n })\nexample_user_workloads_config_map = gcp.composer.UserWorkloadsConfigMap(\"example\",\n environment=example_environment.name,\n name=\"example-config-map\",\n data={\n \"db_host\": \"dbhost:5432\",\n \"api_host\": \"apihost:443\",\n })\nexample = example_environment.name.apply(lambda name: gcp.composer.get_user_workloads_config_map_output(environment=name,\n name=google_composer_user_workloads_config_map[\"example\"][\"name\"]))\npulumi.export(\"debug\", example)\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 exampleEnvironment = new Gcp.Composer.Environment(\"example\", new()\n {\n Name = \"example-environment\",\n Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs\n {\n SoftwareConfig = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigArgs\n {\n ImageVersion = \"composer-3-airflow-2\",\n },\n },\n });\n\n var exampleUserWorkloadsConfigMap = new Gcp.Composer.UserWorkloadsConfigMap(\"example\", new()\n {\n Environment = exampleEnvironment.Name,\n Name = \"example-config-map\",\n Data = \n {\n { \"db_host\", \"dbhost:5432\" },\n { \"api_host\", \"apihost:443\" },\n },\n });\n\n var example = Gcp.Composer.GetUserWorkloadsConfigMap.Invoke(new()\n {\n Environment = exampleEnvironment.Name,\n Name = googleComposerUserWorkloadsConfigMap.Example.Name,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"debug\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/composer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleEnvironment, err := composer.NewEnvironment(ctx, \"example\", \u0026composer.EnvironmentArgs{\n\t\t\tName: pulumi.String(\"example-environment\"),\n\t\t\tConfig: \u0026composer.EnvironmentConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026composer.EnvironmentConfigSoftwareConfigArgs{\n\t\t\t\t\tImageVersion: pulumi.String(\"composer-3-airflow-2\"),\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 = composer.NewUserWorkloadsConfigMap(ctx, \"example\", \u0026composer.UserWorkloadsConfigMapArgs{\n\t\t\tEnvironment: exampleEnvironment.Name,\n\t\t\tName: pulumi.String(\"example-config-map\"),\n\t\t\tData: pulumi.StringMap{\n\t\t\t\t\"db_host\": pulumi.String(\"dbhost:5432\"),\n\t\t\t\t\"api_host\": pulumi.String(\"apihost:443\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := exampleEnvironment.Name.ApplyT(func(name string) (composer.GetUserWorkloadsConfigMapResult, error) {\n\t\t\treturn composer.GetUserWorkloadsConfigMapResult(interface{}(composer.LookupUserWorkloadsConfigMapOutput(ctx, composer.GetUserWorkloadsConfigMapOutputArgs{\n\t\t\t\tEnvironment: name,\n\t\t\t\tName: googleComposerUserWorkloadsConfigMap.Example.Name,\n\t\t\t}, nil))), nil\n\t\t}).(composer.GetUserWorkloadsConfigMapResultOutput)\n\t\tctx.Export(\"debug\", example)\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.composer.Environment;\nimport com.pulumi.gcp.composer.EnvironmentArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.composer.UserWorkloadsConfigMap;\nimport com.pulumi.gcp.composer.UserWorkloadsConfigMapArgs;\nimport com.pulumi.gcp.composer.ComposerFunctions;\nimport com.pulumi.gcp.composer.inputs.GetUserWorkloadsConfigMapArgs;\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 exampleEnvironment = new Environment(\"exampleEnvironment\", EnvironmentArgs.builder()\n .name(\"example-environment\")\n .config(EnvironmentConfigArgs.builder()\n .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()\n .imageVersion(\"composer-3-airflow-2\")\n .build())\n .build())\n .build());\n\n var exampleUserWorkloadsConfigMap = new UserWorkloadsConfigMap(\"exampleUserWorkloadsConfigMap\", UserWorkloadsConfigMapArgs.builder()\n .environment(exampleEnvironment.name())\n .name(\"example-config-map\")\n .data(Map.ofEntries(\n Map.entry(\"db_host\", \"dbhost:5432\"),\n Map.entry(\"api_host\", \"apihost:443\")\n ))\n .build());\n\n final var example = ComposerFunctions.getUserWorkloadsConfigMap(GetUserWorkloadsConfigMapArgs.builder()\n .environment(exampleEnvironment.name())\n .name(googleComposerUserWorkloadsConfigMap.example().name())\n .build());\n\n ctx.export(\"debug\", example.applyValue(getUserWorkloadsConfigMapResult -\u003e getUserWorkloadsConfigMapResult));\n }\n}\n```\n```yaml\nresources:\n exampleEnvironment:\n type: gcp:composer:Environment\n name: example\n properties:\n name: example-environment\n config:\n softwareConfig:\n imageVersion: composer-3-airflow-2\n exampleUserWorkloadsConfigMap:\n type: gcp:composer:UserWorkloadsConfigMap\n name: example\n properties:\n environment: ${exampleEnvironment.name}\n name: example-config-map\n data:\n db_host: dbhost:5432\n api_host: apihost:443\nvariables:\n example:\n fn::invoke:\n Function: gcp:composer:getUserWorkloadsConfigMap\n Arguments:\n environment: ${exampleEnvironment.name}\n name: ${googleComposerUserWorkloadsConfigMap.example.name}\noutputs:\n debug: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getUserWorkloadsConfigMap.\n", "properties": { @@ -255308,7 +255308,7 @@ } }, "gcp:composer/getUserWorkloadsSecret:getUserWorkloadsSecret": { - "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst exampleEnvironment = new gcp.composer.Environment(\"example\", {\n name: \"example-environment\",\n config: {\n softwareConfig: {\n imageVersion: \"composer-3-airflow-2\",\n },\n },\n});\nconst exampleUserWorkloadsSecret = new gcp.composer.UserWorkloadsSecret(\"example\", {\n environment: exampleEnvironment.name,\n name: \"example-secret\",\n data: {\n username: std.base64encode({\n input: \"username\",\n }).then(invoke =\u003e invoke.result),\n password: std.base64encode({\n input: \"password\",\n }).then(invoke =\u003e invoke.result),\n },\n});\nconst example = exampleEnvironment.name.apply(name =\u003e gcp.composer.getUserWorkloadsSecretOutput({\n environment: name,\n name: googleComposerUserWorkloadsSecret.example.name,\n}));\nexport const debug = example;\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nexample_environment = gcp.composer.Environment(\"example\",\n name=\"example-environment\",\n config={\n \"softwareConfig\": {\n \"imageVersion\": \"composer-3-airflow-2\",\n },\n })\nexample_user_workloads_secret = gcp.composer.UserWorkloadsSecret(\"example\",\n environment=example_environment.name,\n name=\"example-secret\",\n data={\n \"username\": std.base64encode(input=\"username\").result,\n \"password\": std.base64encode(input=\"password\").result,\n })\nexample = example_environment.name.apply(lambda name: gcp.composer.get_user_workloads_secret_output(environment=name,\n name=google_composer_user_workloads_secret[\"example\"][\"name\"]))\npulumi.export(\"debug\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleEnvironment = new Gcp.Composer.Environment(\"example\", new()\n {\n Name = \"example-environment\",\n Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs\n {\n SoftwareConfig = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigArgs\n {\n ImageVersion = \"composer-3-airflow-2\",\n },\n },\n });\n\n var exampleUserWorkloadsSecret = new Gcp.Composer.UserWorkloadsSecret(\"example\", new()\n {\n Environment = exampleEnvironment.Name,\n Name = \"example-secret\",\n Data = \n {\n { \"username\", Std.Base64encode.Invoke(new()\n {\n Input = \"username\",\n }).Apply(invoke =\u003e invoke.Result) },\n { \"password\", Std.Base64encode.Invoke(new()\n {\n Input = \"password\",\n }).Apply(invoke =\u003e invoke.Result) },\n },\n });\n\n var example = Gcp.Composer.GetUserWorkloadsSecret.Invoke(new()\n {\n Environment = exampleEnvironment.Name,\n Name = googleComposerUserWorkloadsSecret.Example.Name,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"debug\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/composer\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleEnvironment, err := composer.NewEnvironment(ctx, \"example\", \u0026composer.EnvironmentArgs{\n\t\t\tName: pulumi.String(\"example-environment\"),\n\t\t\tConfig: \u0026composer.EnvironmentConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026composer.EnvironmentConfigSoftwareConfigArgs{\n\t\t\t\t\tImageVersion: pulumi.String(\"composer-3-airflow-2\"),\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\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"username\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode1, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"password\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = composer.NewUserWorkloadsSecret(ctx, \"example\", \u0026composer.UserWorkloadsSecretArgs{\n\t\t\tEnvironment: exampleEnvironment.Name,\n\t\t\tName: pulumi.String(\"example-secret\"),\n\t\t\tData: pulumi.Map{\n\t\t\t\t\"username\": invokeBase64encode.Result,\n\t\t\t\t\"password\": invokeBase64encode1.Result,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := exampleEnvironment.Name.ApplyT(func(name string) (composer.GetUserWorkloadsSecretResult, error) {\n\t\t\treturn composer.LookupUserWorkloadsSecretOutput(ctx, composer.GetUserWorkloadsSecretOutputArgs{\n\t\t\t\tEnvironment: name,\n\t\t\t\tName: googleComposerUserWorkloadsSecret.Example.Name,\n\t\t\t}, nil), nil\n\t\t}).(composer.GetUserWorkloadsSecretResultOutput)\n\t\tctx.Export(\"debug\", example)\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.composer.Environment;\nimport com.pulumi.gcp.composer.EnvironmentArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.composer.UserWorkloadsSecret;\nimport com.pulumi.gcp.composer.UserWorkloadsSecretArgs;\nimport com.pulumi.gcp.composer.ComposerFunctions;\nimport com.pulumi.gcp.composer.inputs.GetUserWorkloadsSecretArgs;\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 exampleEnvironment = new Environment(\"exampleEnvironment\", EnvironmentArgs.builder()\n .name(\"example-environment\")\n .config(EnvironmentConfigArgs.builder()\n .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()\n .imageVersion(\"composer-3-airflow-2\")\n .build())\n .build())\n .build());\n\n var exampleUserWorkloadsSecret = new UserWorkloadsSecret(\"exampleUserWorkloadsSecret\", UserWorkloadsSecretArgs.builder()\n .environment(exampleEnvironment.name())\n .name(\"example-secret\")\n .data(Map.ofEntries(\n Map.entry(\"username\", StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"username\")\n .build()).result()),\n Map.entry(\"password\", StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"password\")\n .build()).result())\n ))\n .build());\n\n final var example = ComposerFunctions.getUserWorkloadsSecret(GetUserWorkloadsSecretArgs.builder()\n .environment(exampleEnvironment.name())\n .name(googleComposerUserWorkloadsSecret.example().name())\n .build());\n\n ctx.export(\"debug\", example.applyValue(getUserWorkloadsSecretResult -\u003e getUserWorkloadsSecretResult));\n }\n}\n```\n```yaml\nresources:\n exampleEnvironment:\n type: gcp:composer:Environment\n name: example\n properties:\n name: example-environment\n config:\n softwareConfig:\n imageVersion: composer-3-airflow-2\n exampleUserWorkloadsSecret:\n type: gcp:composer:UserWorkloadsSecret\n name: example\n properties:\n environment: ${exampleEnvironment.name}\n name: example-secret\n data:\n username:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: username\n Return: result\n password:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: password\n Return: result\nvariables:\n example:\n fn::invoke:\n Function: gcp:composer:getUserWorkloadsSecret\n Arguments:\n environment: ${exampleEnvironment.name}\n name: ${googleComposerUserWorkloadsSecret.example.name}\noutputs:\n debug: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst exampleEnvironment = new gcp.composer.Environment(\"example\", {\n name: \"example-environment\",\n config: {\n softwareConfig: {\n imageVersion: \"composer-3-airflow-2\",\n },\n },\n});\nconst exampleUserWorkloadsSecret = new gcp.composer.UserWorkloadsSecret(\"example\", {\n environment: exampleEnvironment.name,\n name: \"example-secret\",\n data: {\n username: std.base64encode({\n input: \"username\",\n }).then(invoke =\u003e invoke.result),\n password: std.base64encode({\n input: \"password\",\n }).then(invoke =\u003e invoke.result),\n },\n});\nconst example = exampleEnvironment.name.apply(name =\u003e gcp.composer.getUserWorkloadsSecretOutput({\n environment: name,\n name: googleComposerUserWorkloadsSecret.example.name,\n}));\nexport const debug = example;\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nexample_environment = gcp.composer.Environment(\"example\",\n name=\"example-environment\",\n config={\n \"software_config\": {\n \"image_version\": \"composer-3-airflow-2\",\n },\n })\nexample_user_workloads_secret = gcp.composer.UserWorkloadsSecret(\"example\",\n environment=example_environment.name,\n name=\"example-secret\",\n data={\n \"username\": std.base64encode(input=\"username\").result,\n \"password\": std.base64encode(input=\"password\").result,\n })\nexample = example_environment.name.apply(lambda name: gcp.composer.get_user_workloads_secret_output(environment=name,\n name=google_composer_user_workloads_secret[\"example\"][\"name\"]))\npulumi.export(\"debug\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleEnvironment = new Gcp.Composer.Environment(\"example\", new()\n {\n Name = \"example-environment\",\n Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs\n {\n SoftwareConfig = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigArgs\n {\n ImageVersion = \"composer-3-airflow-2\",\n },\n },\n });\n\n var exampleUserWorkloadsSecret = new Gcp.Composer.UserWorkloadsSecret(\"example\", new()\n {\n Environment = exampleEnvironment.Name,\n Name = \"example-secret\",\n Data = \n {\n { \"username\", Std.Base64encode.Invoke(new()\n {\n Input = \"username\",\n }).Apply(invoke =\u003e invoke.Result) },\n { \"password\", Std.Base64encode.Invoke(new()\n {\n Input = \"password\",\n }).Apply(invoke =\u003e invoke.Result) },\n },\n });\n\n var example = Gcp.Composer.GetUserWorkloadsSecret.Invoke(new()\n {\n Environment = exampleEnvironment.Name,\n Name = googleComposerUserWorkloadsSecret.Example.Name,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"debug\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/composer\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleEnvironment, err := composer.NewEnvironment(ctx, \"example\", \u0026composer.EnvironmentArgs{\n\t\t\tName: pulumi.String(\"example-environment\"),\n\t\t\tConfig: \u0026composer.EnvironmentConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026composer.EnvironmentConfigSoftwareConfigArgs{\n\t\t\t\t\tImageVersion: pulumi.String(\"composer-3-airflow-2\"),\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\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"username\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode1, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"password\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = composer.NewUserWorkloadsSecret(ctx, \"example\", \u0026composer.UserWorkloadsSecretArgs{\n\t\t\tEnvironment: exampleEnvironment.Name,\n\t\t\tName: pulumi.String(\"example-secret\"),\n\t\t\tData: pulumi.Map{\n\t\t\t\t\"username\": invokeBase64encode.Result,\n\t\t\t\t\"password\": invokeBase64encode1.Result,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := exampleEnvironment.Name.ApplyT(func(name string) (composer.GetUserWorkloadsSecretResult, error) {\n\t\t\treturn composer.GetUserWorkloadsSecretResult(interface{}(composer.LookupUserWorkloadsSecretOutput(ctx, composer.GetUserWorkloadsSecretOutputArgs{\n\t\t\t\tEnvironment: name,\n\t\t\t\tName: googleComposerUserWorkloadsSecret.Example.Name,\n\t\t\t}, nil))), nil\n\t\t}).(composer.GetUserWorkloadsSecretResultOutput)\n\t\tctx.Export(\"debug\", example)\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.composer.Environment;\nimport com.pulumi.gcp.composer.EnvironmentArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.composer.UserWorkloadsSecret;\nimport com.pulumi.gcp.composer.UserWorkloadsSecretArgs;\nimport com.pulumi.gcp.composer.ComposerFunctions;\nimport com.pulumi.gcp.composer.inputs.GetUserWorkloadsSecretArgs;\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 exampleEnvironment = new Environment(\"exampleEnvironment\", EnvironmentArgs.builder()\n .name(\"example-environment\")\n .config(EnvironmentConfigArgs.builder()\n .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()\n .imageVersion(\"composer-3-airflow-2\")\n .build())\n .build())\n .build());\n\n var exampleUserWorkloadsSecret = new UserWorkloadsSecret(\"exampleUserWorkloadsSecret\", UserWorkloadsSecretArgs.builder()\n .environment(exampleEnvironment.name())\n .name(\"example-secret\")\n .data(Map.ofEntries(\n Map.entry(\"username\", StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"username\")\n .build()).result()),\n Map.entry(\"password\", StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"password\")\n .build()).result())\n ))\n .build());\n\n final var example = ComposerFunctions.getUserWorkloadsSecret(GetUserWorkloadsSecretArgs.builder()\n .environment(exampleEnvironment.name())\n .name(googleComposerUserWorkloadsSecret.example().name())\n .build());\n\n ctx.export(\"debug\", example.applyValue(getUserWorkloadsSecretResult -\u003e getUserWorkloadsSecretResult));\n }\n}\n```\n```yaml\nresources:\n exampleEnvironment:\n type: gcp:composer:Environment\n name: example\n properties:\n name: example-environment\n config:\n softwareConfig:\n imageVersion: composer-3-airflow-2\n exampleUserWorkloadsSecret:\n type: gcp:composer:UserWorkloadsSecret\n name: example\n properties:\n environment: ${exampleEnvironment.name}\n name: example-secret\n data:\n username:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: username\n Return: result\n password:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: password\n Return: result\nvariables:\n example:\n fn::invoke:\n Function: gcp:composer:getUserWorkloadsSecret\n Arguments:\n environment: ${exampleEnvironment.name}\n name: ${googleComposerUserWorkloadsSecret.example.name}\noutputs:\n debug: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getUserWorkloadsSecret.\n", "properties": { @@ -256037,7 +256037,7 @@ } }, "gcp:compute/getDisk:getDisk": { - "description": "Get information about a Google Compute Persistent disks.\n\n[the official documentation](https://cloud.google.com/compute/docs/disks) and its [API](https://cloud.google.com/compute/docs/reference/latest/disks).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst persistent-boot-disk = gcp.compute.getDisk({\n name: \"persistent-boot-disk\",\n project: \"example\",\n});\nconst _default = new gcp.compute.Instance(\"default\", {bootDisk: {\n source: persistent_boot_disk.then(persistent_boot_disk =\u003e persistent_boot_disk.selfLink),\n autoDelete: false,\n}});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npersistent_boot_disk = gcp.compute.get_disk(name=\"persistent-boot-disk\",\n project=\"example\")\ndefault = gcp.compute.Instance(\"default\", boot_disk={\n \"source\": persistent_boot_disk.self_link,\n \"autoDelete\": False,\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 persistent_boot_disk = Gcp.Compute.GetDisk.Invoke(new()\n {\n Name = \"persistent-boot-disk\",\n Project = \"example\",\n });\n\n var @default = new Gcp.Compute.Instance(\"default\", new()\n {\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n Source = persistent_boot_disk.Apply(persistent_boot_disk =\u003e persistent_boot_disk.Apply(getDiskResult =\u003e getDiskResult.SelfLink)),\n AutoDelete = false,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tpersistent_boot_disk, err := compute.LookupDisk(ctx, \u0026compute.LookupDiskArgs{\n\t\t\tName: \"persistent-boot-disk\",\n\t\t\tProject: pulumi.StringRef(\"example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tSource: pulumi.String(persistent_boot_disk.SelfLink),\n\t\t\t\tAutoDelete: pulumi.Bool(false),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDiskArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\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 persistent-boot-disk = ComputeFunctions.getDisk(GetDiskArgs.builder()\n .name(\"persistent-boot-disk\")\n .project(\"example\")\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .bootDisk(InstanceBootDiskArgs.builder()\n .source(persistent_boot_disk.selfLink())\n .autoDelete(false)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Instance\n properties:\n bootDisk:\n source: ${[\"persistent-boot-disk\"].selfLink}\n autoDelete: false\nvariables:\n persistent-boot-disk:\n fn::invoke:\n Function: gcp:compute:getDisk\n Arguments:\n name: persistent-boot-disk\n project: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about a Google Compute Persistent disks.\n\n[the official documentation](https://cloud.google.com/compute/docs/disks) and its [API](https://cloud.google.com/compute/docs/reference/latest/disks).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst persistent-boot-disk = gcp.compute.getDisk({\n name: \"persistent-boot-disk\",\n project: \"example\",\n});\nconst _default = new gcp.compute.Instance(\"default\", {bootDisk: {\n source: persistent_boot_disk.then(persistent_boot_disk =\u003e persistent_boot_disk.selfLink),\n autoDelete: false,\n}});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npersistent_boot_disk = gcp.compute.get_disk(name=\"persistent-boot-disk\",\n project=\"example\")\ndefault = gcp.compute.Instance(\"default\", boot_disk={\n \"source\": persistent_boot_disk.self_link,\n \"auto_delete\": False,\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 persistent_boot_disk = Gcp.Compute.GetDisk.Invoke(new()\n {\n Name = \"persistent-boot-disk\",\n Project = \"example\",\n });\n\n var @default = new Gcp.Compute.Instance(\"default\", new()\n {\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n Source = persistent_boot_disk.Apply(persistent_boot_disk =\u003e persistent_boot_disk.Apply(getDiskResult =\u003e getDiskResult.SelfLink)),\n AutoDelete = false,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tpersistent_boot_disk, err := compute.LookupDisk(ctx, \u0026compute.LookupDiskArgs{\n\t\t\tName: \"persistent-boot-disk\",\n\t\t\tProject: pulumi.StringRef(\"example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tSource: pulumi.String(persistent_boot_disk.SelfLink),\n\t\t\t\tAutoDelete: pulumi.Bool(false),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDiskArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\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 persistent-boot-disk = ComputeFunctions.getDisk(GetDiskArgs.builder()\n .name(\"persistent-boot-disk\")\n .project(\"example\")\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .bootDisk(InstanceBootDiskArgs.builder()\n .source(persistent_boot_disk.selfLink())\n .autoDelete(false)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Instance\n properties:\n bootDisk:\n source: ${[\"persistent-boot-disk\"].selfLink}\n autoDelete: false\nvariables:\n persistent-boot-disk:\n fn::invoke:\n Function: gcp:compute:getDisk\n Arguments:\n name: persistent-boot-disk\n project: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getDisk.\n", "properties": { @@ -256998,7 +256998,7 @@ } }, "gcp:compute/getImage:getImage": { - "description": "Get information about a Google Compute Image. Check that your service account has the `compute.imageUser` role if you want to share [custom images](https://cloud.google.com/compute/docs/images/sharing-images-across-projects) from another project. If you want to use [public images][pubimg], do not forget to specify the dedicated project. For more information see\n[the official documentation](https://cloud.google.com/compute/docs/images) and its [API](https://cloud.google.com/compute/docs/reference/latest/images).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst _default = new gcp.compute.Instance(\"default\", {bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n}});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault = gcp.compute.Instance(\"default\", boot_disk={\n \"initializeParams\": {\n \"image\": my_image.self_link,\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 myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var @default = new Gcp.Compute.Instance(\"default\", new()\n {\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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 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 myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Instance\n properties:\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about a Google Compute Image. Check that your service account has the `compute.imageUser` role if you want to share [custom images](https://cloud.google.com/compute/docs/images/sharing-images-across-projects) from another project. If you want to use [public images][pubimg], do not forget to specify the dedicated project. For more information see\n[the official documentation](https://cloud.google.com/compute/docs/images) and its [API](https://cloud.google.com/compute/docs/reference/latest/images).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst _default = new gcp.compute.Instance(\"default\", {bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n}});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault = gcp.compute.Instance(\"default\", boot_disk={\n \"initialize_params\": {\n \"image\": my_image.self_link,\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 myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var @default = new Gcp.Compute.Instance(\"default\", new()\n {\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\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 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 myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Instance\n properties:\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getImage.\n", "properties": { @@ -257814,7 +257814,7 @@ } }, "gcp:compute/getInstanceSerialPort:getInstanceSerialPort": { - "description": "Get the serial port output from a Compute Instance. For more information see\nthe official [API](https://cloud.google.com/compute/docs/instances/viewing-serial-port-output) documentation.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serial = gcp.compute.getInstanceSerialPort({\n instance: \"my-instance\",\n zone: \"us-central1-a\",\n port: 1,\n});\nexport const serialOut = serial.then(serial =\u003e serial.contents);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nserial = gcp.compute.get_instance_serial_port(instance=\"my-instance\",\n zone=\"us-central1-a\",\n port=1)\npulumi.export(\"serialOut\", serial.contents)\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 serial = Gcp.Compute.GetInstanceSerialPort.Invoke(new()\n {\n Instance = \"my-instance\",\n Zone = \"us-central1-a\",\n Port = 1,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"serialOut\"] = serial.Apply(getInstanceSerialPortResult =\u003e getInstanceSerialPortResult.Contents),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tserial, err := compute.GetInstanceSerialPort(ctx, \u0026compute.GetInstanceSerialPortArgs{\n\t\t\tInstance: \"my-instance\",\n\t\t\tZone: pulumi.StringRef(\"us-central1-a\"),\n\t\t\tPort: 1,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"serialOut\", serial.Contents)\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetInstanceSerialPortArgs;\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 serial = ComputeFunctions.getInstanceSerialPort(GetInstanceSerialPortArgs.builder()\n .instance(\"my-instance\")\n .zone(\"us-central1-a\")\n .port(1)\n .build());\n\n ctx.export(\"serialOut\", serial.applyValue(getInstanceSerialPortResult -\u003e getInstanceSerialPortResult.contents()));\n }\n}\n```\n```yaml\nvariables:\n serial:\n fn::invoke:\n Function: gcp:compute:getInstanceSerialPort\n Arguments:\n instance: my-instance\n zone: us-central1-a\n port: 1\noutputs:\n serialOut: ${serial.contents}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nUsing the serial port output to generate a windows password, derived from the [official guide](https://cloud.google.com/compute/docs/instances/windows/automate-pw-generation):\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst windows = new gcp.compute.Instance(\"windows\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"windows-instance\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: \"windows-cloud/windows-2019\",\n },\n },\n metadata: {\n \"serial-port-logging-enable\": \"TRUE\",\n \"windows-keys\": JSON.stringify({\n email: \"example.user@example.com\",\n expireOn: \"2020-04-14T01:37:19Z\",\n exponent: \"AQAB\",\n modulus: \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\",\n userName: \"example-user\",\n }),\n },\n serviceAccount: {\n scopes: [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n },\n});\nconst serial = pulumi.all([windows.name, windows.zone]).apply(([name, zone]) =\u003e gcp.compute.getInstanceSerialPortOutput({\n instance: name,\n zone: zone,\n port: 4,\n}));\nexport const serialOut = serial.apply(serial =\u003e serial.contents);\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nwindows = gcp.compute.Instance(\"windows\",\n network_interfaces=[{\n \"accessConfigs\": [{}],\n \"network\": \"default\",\n }],\n name=\"windows-instance\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initializeParams\": {\n \"image\": \"windows-cloud/windows-2019\",\n },\n },\n metadata={\n \"serial-port-logging-enable\": \"TRUE\",\n \"windows-keys\": json.dumps({\n \"email\": \"example.user@example.com\",\n \"expireOn\": \"2020-04-14T01:37:19Z\",\n \"exponent\": \"AQAB\",\n \"modulus\": \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\",\n \"userName\": \"example-user\",\n }),\n },\n service_account={\n \"scopes\": [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n })\nserial = pulumi.Output.all(windows.name, windows.zone).apply(lambda name, zone: gcp.compute.get_instance_serial_port_output(instance=name,\n zone=zone,\n port=4))\npulumi.export(\"serialOut\", serial.contents)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var windows = new Gcp.Compute.Instance(\"windows\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"windows-instance\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"windows-cloud/windows-2019\",\n },\n },\n Metadata = \n {\n { \"serial-port-logging-enable\", \"TRUE\" },\n { \"windows-keys\", JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"email\"] = \"example.user@example.com\",\n [\"expireOn\"] = \"2020-04-14T01:37:19Z\",\n [\"exponent\"] = \"AQAB\",\n [\"modulus\"] = \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\",\n [\"userName\"] = \"example-user\",\n }) },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceServiceAccountArgs\n {\n Scopes = new[]\n {\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n },\n },\n });\n\n var serial = Gcp.Compute.GetInstanceSerialPort.Invoke(new()\n {\n Instance = windows.Name,\n Zone = windows.Zone,\n Port = 4,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"serialOut\"] = serial.Apply(getInstanceSerialPortResult =\u003e getInstanceSerialPortResult.Contents),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"email\": \"example.user@example.com\",\n\t\t\t\"expireOn\": \"2020-04-14T01:37:19Z\",\n\t\t\t\"exponent\": \"AQAB\",\n\t\t\t\"modulus\": \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\",\n\t\t\t\"userName\": \"example-user\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\twindows, err := compute.NewInstance(ctx, \"windows\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"windows-instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"windows-cloud/windows-2019\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"serial-port-logging-enable\": pulumi.String(\"TRUE\"),\n\t\t\t\t\"windows-keys\": pulumi.String(json0),\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceServiceAccountArgs{\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"userinfo-email\"),\n\t\t\t\t\tpulumi.String(\"compute-ro\"),\n\t\t\t\t\tpulumi.String(\"storage-ro\"),\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\tserial := pulumi.All(windows.Name, windows.Zone).ApplyT(func(_args []interface{}) (compute.GetInstanceSerialPortResult, error) {\n\t\t\tname := _args[0].(string)\n\t\t\tzone := _args[1].(string)\n\t\t\treturn compute.GetInstanceSerialPortOutput(ctx, compute.GetInstanceSerialPortOutputArgs{\n\t\t\t\tInstance: name,\n\t\t\t\tZone: zone,\n\t\t\t\tPort: 4,\n\t\t\t}, nil), nil\n\t\t}).(compute.GetInstanceSerialPortResultOutput)\n\t\tctx.Export(\"serialOut\", serial.ApplyT(func(serial compute.GetInstanceSerialPortResult) (*string, error) {\n\t\t\treturn \u0026serial.Contents, nil\n\t\t}).(pulumi.StringPtrOutput))\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.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceServiceAccountArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetInstanceSerialPortArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 windows = new Instance(\"windows\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"windows-instance\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"windows-cloud/windows-2019\")\n .build())\n .build())\n .metadata(Map.ofEntries(\n Map.entry(\"serial-port-logging-enable\", \"TRUE\"),\n Map.entry(\"windows-keys\", serializeJson(\n jsonObject(\n jsonProperty(\"email\", \"example.user@example.com\"),\n jsonProperty(\"expireOn\", \"2020-04-14T01:37:19Z\"),\n jsonProperty(\"exponent\", \"AQAB\"),\n jsonProperty(\"modulus\", \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\"),\n jsonProperty(\"userName\", \"example-user\")\n )))\n ))\n .serviceAccount(InstanceServiceAccountArgs.builder()\n .scopes( \n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\")\n .build())\n .build());\n\n final var serial = ComputeFunctions.getInstanceSerialPort(GetInstanceSerialPortArgs.builder()\n .instance(windows.name())\n .zone(windows.zone())\n .port(4)\n .build());\n\n ctx.export(\"serialOut\", serial.applyValue(getInstanceSerialPortResult -\u003e getInstanceSerialPortResult).applyValue(serial -\u003e serial.applyValue(getInstanceSerialPortResult -\u003e getInstanceSerialPortResult.contents())));\n }\n}\n```\n```yaml\nresources:\n windows:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: windows-instance\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: windows-cloud/windows-2019\n metadata:\n serial-port-logging-enable: TRUE\n windows-keys:\n fn::toJSON:\n email: example.user@example.com\n expireOn: 2020-04-14T01:37:19Z\n exponent: AQAB\n modulus: wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\n userName: example-user\n serviceAccount:\n scopes:\n - userinfo-email\n - compute-ro\n - storage-ro\nvariables:\n serial:\n fn::invoke:\n Function: gcp:compute:getInstanceSerialPort\n Arguments:\n instance: ${windows.name}\n zone: ${windows.zone}\n port: 4\noutputs:\n serialOut: ${serial.contents}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get the serial port output from a Compute Instance. For more information see\nthe official [API](https://cloud.google.com/compute/docs/instances/viewing-serial-port-output) documentation.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serial = gcp.compute.getInstanceSerialPort({\n instance: \"my-instance\",\n zone: \"us-central1-a\",\n port: 1,\n});\nexport const serialOut = serial.then(serial =\u003e serial.contents);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nserial = gcp.compute.get_instance_serial_port(instance=\"my-instance\",\n zone=\"us-central1-a\",\n port=1)\npulumi.export(\"serialOut\", serial.contents)\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 serial = Gcp.Compute.GetInstanceSerialPort.Invoke(new()\n {\n Instance = \"my-instance\",\n Zone = \"us-central1-a\",\n Port = 1,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"serialOut\"] = serial.Apply(getInstanceSerialPortResult =\u003e getInstanceSerialPortResult.Contents),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tserial, err := compute.GetInstanceSerialPort(ctx, \u0026compute.GetInstanceSerialPortArgs{\n\t\t\tInstance: \"my-instance\",\n\t\t\tZone: pulumi.StringRef(\"us-central1-a\"),\n\t\t\tPort: 1,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"serialOut\", serial.Contents)\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetInstanceSerialPortArgs;\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 serial = ComputeFunctions.getInstanceSerialPort(GetInstanceSerialPortArgs.builder()\n .instance(\"my-instance\")\n .zone(\"us-central1-a\")\n .port(1)\n .build());\n\n ctx.export(\"serialOut\", serial.applyValue(getInstanceSerialPortResult -\u003e getInstanceSerialPortResult.contents()));\n }\n}\n```\n```yaml\nvariables:\n serial:\n fn::invoke:\n Function: gcp:compute:getInstanceSerialPort\n Arguments:\n instance: my-instance\n zone: us-central1-a\n port: 1\noutputs:\n serialOut: ${serial.contents}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nUsing the serial port output to generate a windows password, derived from the [official guide](https://cloud.google.com/compute/docs/instances/windows/automate-pw-generation):\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst windows = new gcp.compute.Instance(\"windows\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"windows-instance\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: \"windows-cloud/windows-2019\",\n },\n },\n metadata: {\n \"serial-port-logging-enable\": \"TRUE\",\n \"windows-keys\": JSON.stringify({\n email: \"example.user@example.com\",\n expireOn: \"2020-04-14T01:37:19Z\",\n exponent: \"AQAB\",\n modulus: \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\",\n userName: \"example-user\",\n }),\n },\n serviceAccount: {\n scopes: [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n },\n});\nconst serial = pulumi.all([windows.name, windows.zone]).apply(([name, zone]) =\u003e gcp.compute.getInstanceSerialPortOutput({\n instance: name,\n zone: zone,\n port: 4,\n}));\nexport const serialOut = serial.apply(serial =\u003e serial.contents);\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nwindows = gcp.compute.Instance(\"windows\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"windows-instance\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"windows-cloud/windows-2019\",\n },\n },\n metadata={\n \"serial-port-logging-enable\": \"TRUE\",\n \"windows-keys\": json.dumps({\n \"email\": \"example.user@example.com\",\n \"expireOn\": \"2020-04-14T01:37:19Z\",\n \"exponent\": \"AQAB\",\n \"modulus\": \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\",\n \"userName\": \"example-user\",\n }),\n },\n service_account={\n \"scopes\": [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n })\nserial = pulumi.Output.all(windows.name, windows.zone).apply(lambda name, zone: gcp.compute.get_instance_serial_port_output(instance=name,\n zone=zone,\n port=4))\npulumi.export(\"serialOut\", serial.contents)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var windows = new Gcp.Compute.Instance(\"windows\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"windows-instance\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"windows-cloud/windows-2019\",\n },\n },\n Metadata = \n {\n { \"serial-port-logging-enable\", \"TRUE\" },\n { \"windows-keys\", JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"email\"] = \"example.user@example.com\",\n [\"expireOn\"] = \"2020-04-14T01:37:19Z\",\n [\"exponent\"] = \"AQAB\",\n [\"modulus\"] = \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\",\n [\"userName\"] = \"example-user\",\n }) },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceServiceAccountArgs\n {\n Scopes = new[]\n {\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n },\n },\n });\n\n var serial = Gcp.Compute.GetInstanceSerialPort.Invoke(new()\n {\n Instance = windows.Name,\n Zone = windows.Zone,\n Port = 4,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"serialOut\"] = serial.Apply(getInstanceSerialPortResult =\u003e getInstanceSerialPortResult.Contents),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"email\": \"example.user@example.com\",\n\t\t\t\"expireOn\": \"2020-04-14T01:37:19Z\",\n\t\t\t\"exponent\": \"AQAB\",\n\t\t\t\"modulus\": \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\",\n\t\t\t\"userName\": \"example-user\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\twindows, err := compute.NewInstance(ctx, \"windows\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"windows-instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"windows-cloud/windows-2019\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"serial-port-logging-enable\": pulumi.String(\"TRUE\"),\n\t\t\t\t\"windows-keys\": pulumi.String(json0),\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceServiceAccountArgs{\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"userinfo-email\"),\n\t\t\t\t\tpulumi.String(\"compute-ro\"),\n\t\t\t\t\tpulumi.String(\"storage-ro\"),\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\tserial := pulumi.All(windows.Name, windows.Zone).ApplyT(func(_args []interface{}) (compute.GetInstanceSerialPortResult, error) {\n\t\t\tname := _args[0].(string)\n\t\t\tzone := _args[1].(string)\n\t\t\treturn compute.GetInstanceSerialPortResult(interface{}(compute.GetInstanceSerialPortOutput(ctx, compute.GetInstanceSerialPortOutputArgs{\n\t\t\t\tInstance: name,\n\t\t\t\tZone: zone,\n\t\t\t\tPort: 4,\n\t\t\t}, nil))), nil\n\t\t}).(compute.GetInstanceSerialPortResultOutput)\n\t\tctx.Export(\"serialOut\", serial.ApplyT(func(serial compute.GetInstanceSerialPortResult) (*string, error) {\n\t\t\treturn \u0026serial.Contents, nil\n\t\t}).(pulumi.StringPtrOutput))\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.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceServiceAccountArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetInstanceSerialPortArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 windows = new Instance(\"windows\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"windows-instance\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"windows-cloud/windows-2019\")\n .build())\n .build())\n .metadata(Map.ofEntries(\n Map.entry(\"serial-port-logging-enable\", \"TRUE\"),\n Map.entry(\"windows-keys\", serializeJson(\n jsonObject(\n jsonProperty(\"email\", \"example.user@example.com\"),\n jsonProperty(\"expireOn\", \"2020-04-14T01:37:19Z\"),\n jsonProperty(\"exponent\", \"AQAB\"),\n jsonProperty(\"modulus\", \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\"),\n jsonProperty(\"userName\", \"example-user\")\n )))\n ))\n .serviceAccount(InstanceServiceAccountArgs.builder()\n .scopes( \n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\")\n .build())\n .build());\n\n final var serial = ComputeFunctions.getInstanceSerialPort(GetInstanceSerialPortArgs.builder()\n .instance(windows.name())\n .zone(windows.zone())\n .port(4)\n .build());\n\n ctx.export(\"serialOut\", serial.applyValue(getInstanceSerialPortResult -\u003e getInstanceSerialPortResult).applyValue(serial -\u003e serial.applyValue(getInstanceSerialPortResult -\u003e getInstanceSerialPortResult.contents())));\n }\n}\n```\n```yaml\nresources:\n windows:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: windows-instance\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: windows-cloud/windows-2019\n metadata:\n serial-port-logging-enable: TRUE\n windows-keys:\n fn::toJSON:\n email: example.user@example.com\n expireOn: 2020-04-14T01:37:19Z\n exponent: AQAB\n modulus: wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\n userName: example-user\n serviceAccount:\n scopes:\n - userinfo-email\n - compute-ro\n - storage-ro\nvariables:\n serial:\n fn::invoke:\n Function: gcp:compute:getInstanceSerialPort\n Arguments:\n instance: ${windows.name}\n zone: ${windows.zone}\n port: 4\noutputs:\n serialOut: ${serial.contents}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getInstanceSerialPort.\n", "properties": { @@ -259443,7 +259443,7 @@ } }, "gcp:compute/getRegions:getRegions": { - "description": "Provides access to available Google Compute regions for a given project.\nSee more about [regions and zones](https://cloud.google.com/compute/docs/regions-zones/) in the upstream docs.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nexport = async () =\u003e {\n const available = await gcp.compute.getRegions({});\n const cluster: gcp.compute.Subnetwork[] = [];\n for (const range = {value: 0}; range.value \u003c available.names.length; range.value++) {\n cluster.push(new gcp.compute.Subnetwork(`cluster-${range.value}`, {\n name: \"my-network\",\n ipCidrRange: `10.36.${range.value}.0/24`,\n network: \"my-network\",\n region: available.names[range.value],\n }));\n }\n}\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.compute.get_regions()\ncluster = []\nfor range in [{\"value\": i} for i in range(0, len(available.names))]:\n cluster.append(gcp.compute.Subnetwork(f\"cluster-{range['value']}\",\n name=\"my-network\",\n ip_cidr_range=f\"10.36.{range['value']}.0/24\",\n network=\"my-network\",\n region=available.names[range[\"value\"]]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(async() =\u003e \n{\n var available = await Gcp.Compute.GetRegions.InvokeAsync();\n\n var cluster = new List\u003cGcp.Compute.Subnetwork\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c available.Names.Length; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n cluster.Add(new Gcp.Compute.Subnetwork($\"cluster-{range.Value}\", new()\n {\n Name = \"my-network\",\n IpCidrRange = $\"10.36.{range.Value}.0/24\",\n Network = \"my-network\",\n Region = available.Names[range.Value],\n }));\n }\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tavailable, err := compute.GetRegions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar cluster []*compute.Subnetwork\n\t\tfor index := 0; index \u003c len(available.Names); index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := compute.NewSubnetwork(ctx, fmt.Sprintf(\"cluster-%v\", key0), \u0026compute.SubnetworkArgs{\n\t\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\t\tIpCidrRange: pulumi.String(fmt.Sprintf(\"10.36.%v.0/24\", val0)),\n\t\t\t\tNetwork: pulumi.String(\"my-network\"),\n\t\t\t\tRegion: available.Names[val0],\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcluster = append(cluster, __res)\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetRegionsArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\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 available = ComputeFunctions.getRegions();\n\n for (var i = 0; i \u003c available.applyValue(getRegionsResult -\u003e getRegionsResult.names()).length(); i++) {\n new Subnetwork(\"cluster-\" + i, SubnetworkArgs.builder()\n .name(\"my-network\")\n .ipCidrRange(String.format(\"10.36.%s.0/24\", range.value()))\n .network(\"my-network\")\n .region(available.applyValue(getRegionsResult -\u003e getRegionsResult.names())[range.value()])\n .build());\n\n \n}\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Provides access to available Google Compute regions for a given project.\nSee more about [regions and zones](https://cloud.google.com/compute/docs/regions-zones/) in the upstream docs.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nexport = async () =\u003e {\n const available = await gcp.compute.getRegions({});\n const cluster: gcp.compute.Subnetwork[] = [];\n for (const range = {value: 0}; range.value \u003c available.names.length; range.value++) {\n cluster.push(new gcp.compute.Subnetwork(`cluster-${range.value}`, {\n name: \"my-network\",\n ipCidrRange: `10.36.${range.value}.0/24`,\n network: \"my-network\",\n region: available.names[range.value],\n }));\n }\n}\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.compute.get_regions()\ncluster = []\nfor range in [{\"value\": i} for i in range(0, len(available.names))]:\n cluster.append(gcp.compute.Subnetwork(f\"cluster-{range['value']}\",\n name=\"my-network\",\n ip_cidr_range=f\"10.36.{range['value']}.0/24\",\n network=\"my-network\",\n region=available.names[range[\"value\"]]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(async() =\u003e \n{\n var available = await Gcp.Compute.GetRegions.InvokeAsync();\n\n var cluster = new List\u003cGcp.Compute.Subnetwork\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c available.Names.Length; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n cluster.Add(new Gcp.Compute.Subnetwork($\"cluster-{range.Value}\", new()\n {\n Name = \"my-network\",\n IpCidrRange = $\"10.36.{range.Value}.0/24\",\n Network = \"my-network\",\n Region = available.Names[range.Value],\n }));\n }\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tavailable, err := compute.GetRegions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar cluster []*compute.Subnetwork\n\t\tfor index := 0; index \u003c int(len(available.Names)); index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := compute.NewSubnetwork(ctx, fmt.Sprintf(\"cluster-%v\", key0), \u0026compute.SubnetworkArgs{\n\t\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\t\tIpCidrRange: pulumi.String(fmt.Sprintf(\"10.36.%v.0/24\", val0)),\n\t\t\t\tNetwork: pulumi.String(\"my-network\"),\n\t\t\t\tRegion: pulumi.String(available.Names[val0]),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcluster = append(cluster, __res)\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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetRegionsArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\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 available = ComputeFunctions.getRegions();\n\n for (var i = 0; i \u003c available.applyValue(getRegionsResult -\u003e getRegionsResult.names()).length(); i++) {\n new Subnetwork(\"cluster-\" + i, SubnetworkArgs.builder()\n .name(\"my-network\")\n .ipCidrRange(String.format(\"10.36.%s.0/24\", range.value()))\n .network(\"my-network\")\n .region(available.applyValue(getRegionsResult -\u003e getRegionsResult.names())[range.value()])\n .build());\n\n \n}\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getRegions.\n", "properties": { @@ -263047,7 +263047,7 @@ } }, "gcp:dns/getKeys:getKeys": { - "description": "Get the DNSKEY and DS records of DNSSEC-signed managed zones.\n\nFor more information see the\n[official documentation](https://cloud.google.com/dns/docs/dnskeys/)\nand [API](https://cloud.google.com/dns/docs/reference/v1/dnsKeys).\n\n\u003e A gcp.dns.ManagedZone resource must have DNSSEC enabled in order\nto contain any DNSKEYs. Queries to managed zones without this setting\nenabled will result in a 404 error as the collection of DNSKEYs does\nnot exist in the DNS API.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst foo = new gcp.dns.ManagedZone(\"foo\", {\n name: \"foobar\",\n dnsName: \"foo.bar.\",\n dnssecConfig: {\n state: \"on\",\n nonExistence: \"nsec3\",\n },\n});\nconst fooDnsKeys = gcp.dns.getKeysOutput({\n managedZone: foo.id,\n});\nexport const fooDnsDsRecord = fooDnsKeys.apply(fooDnsKeys =\u003e fooDnsKeys.keySigningKeys?.[0]?.dsRecord);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfoo = gcp.dns.ManagedZone(\"foo\",\n name=\"foobar\",\n dns_name=\"foo.bar.\",\n dnssec_config={\n \"state\": \"on\",\n \"nonExistence\": \"nsec3\",\n })\nfoo_dns_keys = gcp.dns.get_keys_output(managed_zone=foo.id)\npulumi.export(\"fooDnsDsRecord\", foo_dns_keys.key_signing_keys[0].ds_record)\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 foo = new Gcp.Dns.ManagedZone(\"foo\", new()\n {\n Name = \"foobar\",\n DnsName = \"foo.bar.\",\n DnssecConfig = new Gcp.Dns.Inputs.ManagedZoneDnssecConfigArgs\n {\n State = \"on\",\n NonExistence = \"nsec3\",\n },\n });\n\n var fooDnsKeys = Gcp.Dns.GetKeys.Invoke(new()\n {\n ManagedZone = foo.Id,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"fooDnsDsRecord\"] = fooDnsKeys.Apply(getKeysResult =\u003e getKeysResult.KeySigningKeys[0]?.DsRecord),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tfoo, err := dns.NewManagedZone(ctx, \"foo\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"foobar\"),\n\t\t\tDnsName: pulumi.String(\"foo.bar.\"),\n\t\t\tDnssecConfig: \u0026dns.ManagedZoneDnssecConfigArgs{\n\t\t\t\tState: pulumi.String(\"on\"),\n\t\t\t\tNonExistence: pulumi.String(\"nsec3\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfooDnsKeys := dns.GetKeysOutput(ctx, dns.GetKeysOutputArgs{\n\t\t\tManagedZone: foo.ID(),\n\t\t}, nil)\n\t\tctx.Export(\"fooDnsDsRecord\", fooDnsKeys.ApplyT(func(fooDnsKeys dns.GetKeysResult) (*string, error) {\n\t\t\treturn \u0026fooDnsKeys.KeySigningKeys[0].DsRecord, nil\n\t\t}).(pulumi.StringPtrOutput))\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.ManagedZoneDnssecConfigArgs;\nimport com.pulumi.gcp.dns.DnsFunctions;\nimport com.pulumi.gcp.dns.inputs.GetKeysArgs;\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 foo = new ManagedZone(\"foo\", ManagedZoneArgs.builder()\n .name(\"foobar\")\n .dnsName(\"foo.bar.\")\n .dnssecConfig(ManagedZoneDnssecConfigArgs.builder()\n .state(\"on\")\n .nonExistence(\"nsec3\")\n .build())\n .build());\n\n final var fooDnsKeys = DnsFunctions.getKeys(GetKeysArgs.builder()\n .managedZone(foo.id())\n .build());\n\n ctx.export(\"fooDnsDsRecord\", fooDnsKeys.applyValue(getKeysResult -\u003e getKeysResult).applyValue(fooDnsKeys -\u003e fooDnsKeys.applyValue(getKeysResult -\u003e getKeysResult.keySigningKeys()[0].dsRecord())));\n }\n}\n```\n```yaml\nresources:\n foo:\n type: gcp:dns:ManagedZone\n properties:\n name: foobar\n dnsName: foo.bar.\n dnssecConfig:\n state: on\n nonExistence: nsec3\nvariables:\n fooDnsKeys:\n fn::invoke:\n Function: gcp:dns:getKeys\n Arguments:\n managedZone: ${foo.id}\noutputs:\n fooDnsDsRecord: ${fooDnsKeys.keySigningKeys[0].dsRecord}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get the DNSKEY and DS records of DNSSEC-signed managed zones.\n\nFor more information see the\n[official documentation](https://cloud.google.com/dns/docs/dnskeys/)\nand [API](https://cloud.google.com/dns/docs/reference/v1/dnsKeys).\n\n\u003e A gcp.dns.ManagedZone resource must have DNSSEC enabled in order\nto contain any DNSKEYs. Queries to managed zones without this setting\nenabled will result in a 404 error as the collection of DNSKEYs does\nnot exist in the DNS API.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst foo = new gcp.dns.ManagedZone(\"foo\", {\n name: \"foobar\",\n dnsName: \"foo.bar.\",\n dnssecConfig: {\n state: \"on\",\n nonExistence: \"nsec3\",\n },\n});\nconst fooDnsKeys = gcp.dns.getKeysOutput({\n managedZone: foo.id,\n});\nexport const fooDnsDsRecord = fooDnsKeys.apply(fooDnsKeys =\u003e fooDnsKeys.keySigningKeys?.[0]?.dsRecord);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfoo = gcp.dns.ManagedZone(\"foo\",\n name=\"foobar\",\n dns_name=\"foo.bar.\",\n dnssec_config={\n \"state\": \"on\",\n \"non_existence\": \"nsec3\",\n })\nfoo_dns_keys = gcp.dns.get_keys_output(managed_zone=foo.id)\npulumi.export(\"fooDnsDsRecord\", foo_dns_keys.key_signing_keys[0].ds_record)\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 foo = new Gcp.Dns.ManagedZone(\"foo\", new()\n {\n Name = \"foobar\",\n DnsName = \"foo.bar.\",\n DnssecConfig = new Gcp.Dns.Inputs.ManagedZoneDnssecConfigArgs\n {\n State = \"on\",\n NonExistence = \"nsec3\",\n },\n });\n\n var fooDnsKeys = Gcp.Dns.GetKeys.Invoke(new()\n {\n ManagedZone = foo.Id,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"fooDnsDsRecord\"] = fooDnsKeys.Apply(getKeysResult =\u003e getKeysResult.KeySigningKeys[0]?.DsRecord),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tfoo, err := dns.NewManagedZone(ctx, \"foo\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"foobar\"),\n\t\t\tDnsName: pulumi.String(\"foo.bar.\"),\n\t\t\tDnssecConfig: \u0026dns.ManagedZoneDnssecConfigArgs{\n\t\t\t\tState: pulumi.String(\"on\"),\n\t\t\t\tNonExistence: pulumi.String(\"nsec3\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfooDnsKeys := dns.GetKeysOutput(ctx, dns.GetKeysOutputArgs{\n\t\t\tManagedZone: foo.ID(),\n\t\t}, nil)\n\t\tctx.Export(\"fooDnsDsRecord\", fooDnsKeys.ApplyT(func(fooDnsKeys dns.GetKeysResult) (*string, error) {\n\t\t\treturn \u0026fooDnsKeys.KeySigningKeys[0].DsRecord, nil\n\t\t}).(pulumi.StringPtrOutput))\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.ManagedZoneDnssecConfigArgs;\nimport com.pulumi.gcp.dns.DnsFunctions;\nimport com.pulumi.gcp.dns.inputs.GetKeysArgs;\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 foo = new ManagedZone(\"foo\", ManagedZoneArgs.builder()\n .name(\"foobar\")\n .dnsName(\"foo.bar.\")\n .dnssecConfig(ManagedZoneDnssecConfigArgs.builder()\n .state(\"on\")\n .nonExistence(\"nsec3\")\n .build())\n .build());\n\n final var fooDnsKeys = DnsFunctions.getKeys(GetKeysArgs.builder()\n .managedZone(foo.id())\n .build());\n\n ctx.export(\"fooDnsDsRecord\", fooDnsKeys.applyValue(getKeysResult -\u003e getKeysResult).applyValue(fooDnsKeys -\u003e fooDnsKeys.applyValue(getKeysResult -\u003e getKeysResult.keySigningKeys()[0].dsRecord())));\n }\n}\n```\n```yaml\nresources:\n foo:\n type: gcp:dns:ManagedZone\n properties:\n name: foobar\n dnsName: foo.bar.\n dnssecConfig:\n state: on\n nonExistence: nsec3\nvariables:\n fooDnsKeys:\n fn::invoke:\n Function: gcp:dns:getKeys\n Arguments:\n managedZone: ${foo.id}\noutputs:\n fooDnsDsRecord: ${fooDnsKeys.keySigningKeys[0].dsRecord}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getKeys.\n", "properties": { @@ -266067,7 +266067,7 @@ } }, "gcp:kms/getKMSSecretCiphertext:getKMSSecretCiphertext": { - "description": "!\u003e **Warning:** This data source is deprecated. Use the `gcp.kms.SecretCiphertext` **resource** instead.\n\nThis data source allows you to encrypt data with Google Cloud KMS and use the\nciphertext within your resource definitions.\n\nFor more information see\n[the official documentation](https://cloud.google.com/kms/docs/encrypt-decrypt).\n\n\u003e **NOTE:** Using this data source will allow you to conceal secret data within your\nresource definitions, but it does not take care of protecting that data in the\nlogging output, plan output, or state output. Please take care to secure your secret\ndata outside of resource definitions.\n\n## Example Usage\n\nFirst, create a KMS KeyRing and CryptoKey using the resource definitions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myKeyRing = new gcp.kms.KeyRing(\"my_key_ring\", {\n project: \"my-project\",\n name: \"my-key-ring\",\n location: \"us-central1\",\n});\nconst myCryptoKey = new gcp.kms.CryptoKey(\"my_crypto_key\", {\n name: \"my-crypto-key\",\n keyRing: myKeyRing.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_key_ring = gcp.kms.KeyRing(\"my_key_ring\",\n project=\"my-project\",\n name=\"my-key-ring\",\n location=\"us-central1\")\nmy_crypto_key = gcp.kms.CryptoKey(\"my_crypto_key\",\n name=\"my-crypto-key\",\n key_ring=my_key_ring.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 myKeyRing = new Gcp.Kms.KeyRing(\"my_key_ring\", new()\n {\n Project = \"my-project\",\n Name = \"my-key-ring\",\n Location = \"us-central1\",\n });\n\n var myCryptoKey = new Gcp.Kms.CryptoKey(\"my_crypto_key\", new()\n {\n Name = \"my-crypto-key\",\n KeyRing = myKeyRing.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmyKeyRing, err := kms.NewKeyRing(ctx, \"my_key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-key-ring\"),\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 = kms.NewCryptoKey(ctx, \"my_crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-crypto-key\"),\n\t\t\tKeyRing: myKeyRing.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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\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 myKeyRing = new KeyRing(\"myKeyRing\", KeyRingArgs.builder()\n .project(\"my-project\")\n .name(\"my-key-ring\")\n .location(\"us-central1\")\n .build());\n\n var myCryptoKey = new CryptoKey(\"myCryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-crypto-key\")\n .keyRing(myKeyRing.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myKeyRing:\n type: gcp:kms:KeyRing\n name: my_key_ring\n properties:\n project: my-project\n name: my-key-ring\n location: us-central1\n myCryptoKey:\n type: gcp:kms:CryptoKey\n name: my_crypto_key\n properties:\n name: my-crypto-key\n keyRing: ${myKeyRing.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nNext, encrypt some sensitive information and use the encrypted data in your resource definitions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myPassword = gcp.kms.getKMSSecretCiphertext({\n cryptoKey: myCryptoKey.id,\n plaintext: \"my-secret-password\",\n});\nconst instance = new gcp.compute.Instance(\"instance\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"test\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n metadata: {\n password: myPassword.then(myPassword =\u003e myPassword.ciphertext),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_password = gcp.kms.get_kms_secret_ciphertext(crypto_key=my_crypto_key[\"id\"],\n plaintext=\"my-secret-password\")\ninstance = gcp.compute.Instance(\"instance\",\n network_interfaces=[{\n \"accessConfigs\": [{}],\n \"network\": \"default\",\n }],\n name=\"test\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initializeParams\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n metadata={\n \"password\": my_password.ciphertext,\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 myPassword = Gcp.Kms.GetKMSSecretCiphertext.Invoke(new()\n {\n CryptoKey = myCryptoKey.Id,\n Plaintext = \"my-secret-password\",\n });\n\n var instance = new Gcp.Compute.Instance(\"instance\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"test\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\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 Metadata = \n {\n { \"password\", myPassword.Apply(getKMSSecretCiphertextResult =\u003e getKMSSecretCiphertextResult.Ciphertext) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmyPassword, err := kms.GetKMSSecretCiphertext(ctx, \u0026kms.GetKMSSecretCiphertextArgs{\n\t\t\tCryptoKey: myCryptoKey.Id,\n\t\t\tPlaintext: \"my-secret-password\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"instance\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\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\tMetadata: pulumi.StringMap{\n\t\t\t\t\"password\": pulumi.String(myPassword.Ciphertext),\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.KmsFunctions;\nimport com.pulumi.gcp.kms.inputs.GetKMSSecretCiphertextArgs;\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 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 myPassword = KmsFunctions.getKMSSecretCiphertext(GetKMSSecretCiphertextArgs.builder()\n .cryptoKey(myCryptoKey.id())\n .plaintext(\"my-secret-password\")\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"test\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .metadata(Map.of(\"password\", myPassword.applyValue(getKMSSecretCiphertextResult -\u003e getKMSSecretCiphertextResult.ciphertext())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: test\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n metadata:\n password: ${myPassword.ciphertext}\nvariables:\n myPassword:\n fn::invoke:\n Function: gcp:kms:getKMSSecretCiphertext\n Arguments:\n cryptoKey: ${myCryptoKey.id}\n plaintext: my-secret-password\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe resulting instance can then access the encrypted password from its metadata\nand decrypt it, e.g. using the [Cloud SDK](https://cloud.google.com/sdk/gcloud/reference/kms/decrypt)):\n\n```bash\n$ curl -H \"Metadata-Flavor: Google\" http://metadata.google.internal/computeMetadata/v1/instance/attributes/password \\\n\u003e | base64 -d | gcloud kms decrypt \\\n\u003e --project my-project \\\n\u003e --location us-central1 \\\n\u003e --keyring my-key-ring \\\n\u003e --key my-crypto-key \\\n\u003e --plaintext-file - \\\n\u003e --ciphertext-file - \\\nmy-secret-password\n```\n", + "description": "!\u003e **Warning:** This data source is deprecated. Use the `gcp.kms.SecretCiphertext` **resource** instead.\n\nThis data source allows you to encrypt data with Google Cloud KMS and use the\nciphertext within your resource definitions.\n\nFor more information see\n[the official documentation](https://cloud.google.com/kms/docs/encrypt-decrypt).\n\n\u003e **NOTE:** Using this data source will allow you to conceal secret data within your\nresource definitions, but it does not take care of protecting that data in the\nlogging output, plan output, or state output. Please take care to secure your secret\ndata outside of resource definitions.\n\n## Example Usage\n\nFirst, create a KMS KeyRing and CryptoKey using the resource definitions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myKeyRing = new gcp.kms.KeyRing(\"my_key_ring\", {\n project: \"my-project\",\n name: \"my-key-ring\",\n location: \"us-central1\",\n});\nconst myCryptoKey = new gcp.kms.CryptoKey(\"my_crypto_key\", {\n name: \"my-crypto-key\",\n keyRing: myKeyRing.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_key_ring = gcp.kms.KeyRing(\"my_key_ring\",\n project=\"my-project\",\n name=\"my-key-ring\",\n location=\"us-central1\")\nmy_crypto_key = gcp.kms.CryptoKey(\"my_crypto_key\",\n name=\"my-crypto-key\",\n key_ring=my_key_ring.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 myKeyRing = new Gcp.Kms.KeyRing(\"my_key_ring\", new()\n {\n Project = \"my-project\",\n Name = \"my-key-ring\",\n Location = \"us-central1\",\n });\n\n var myCryptoKey = new Gcp.Kms.CryptoKey(\"my_crypto_key\", new()\n {\n Name = \"my-crypto-key\",\n KeyRing = myKeyRing.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmyKeyRing, err := kms.NewKeyRing(ctx, \"my_key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-key-ring\"),\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 = kms.NewCryptoKey(ctx, \"my_crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-crypto-key\"),\n\t\t\tKeyRing: myKeyRing.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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\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 myKeyRing = new KeyRing(\"myKeyRing\", KeyRingArgs.builder()\n .project(\"my-project\")\n .name(\"my-key-ring\")\n .location(\"us-central1\")\n .build());\n\n var myCryptoKey = new CryptoKey(\"myCryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-crypto-key\")\n .keyRing(myKeyRing.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myKeyRing:\n type: gcp:kms:KeyRing\n name: my_key_ring\n properties:\n project: my-project\n name: my-key-ring\n location: us-central1\n myCryptoKey:\n type: gcp:kms:CryptoKey\n name: my_crypto_key\n properties:\n name: my-crypto-key\n keyRing: ${myKeyRing.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nNext, encrypt some sensitive information and use the encrypted data in your resource definitions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myPassword = gcp.kms.getKMSSecretCiphertext({\n cryptoKey: myCryptoKey.id,\n plaintext: \"my-secret-password\",\n});\nconst instance = new gcp.compute.Instance(\"instance\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"test\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n metadata: {\n password: myPassword.then(myPassword =\u003e myPassword.ciphertext),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_password = gcp.kms.get_kms_secret_ciphertext(crypto_key=my_crypto_key[\"id\"],\n plaintext=\"my-secret-password\")\ninstance = gcp.compute.Instance(\"instance\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"test\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n metadata={\n \"password\": my_password.ciphertext,\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 myPassword = Gcp.Kms.GetKMSSecretCiphertext.Invoke(new()\n {\n CryptoKey = myCryptoKey.Id,\n Plaintext = \"my-secret-password\",\n });\n\n var instance = new Gcp.Compute.Instance(\"instance\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"test\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\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 Metadata = \n {\n { \"password\", myPassword.Apply(getKMSSecretCiphertextResult =\u003e getKMSSecretCiphertextResult.Ciphertext) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tmyPassword, err := kms.GetKMSSecretCiphertext(ctx, \u0026kms.GetKMSSecretCiphertextArgs{\n\t\t\tCryptoKey: myCryptoKey.Id,\n\t\t\tPlaintext: \"my-secret-password\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"instance\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\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\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\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\tMetadata: pulumi.StringMap{\n\t\t\t\t\"password\": pulumi.String(myPassword.Ciphertext),\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.KmsFunctions;\nimport com.pulumi.gcp.kms.inputs.GetKMSSecretCiphertextArgs;\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 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 myPassword = KmsFunctions.getKMSSecretCiphertext(GetKMSSecretCiphertextArgs.builder()\n .cryptoKey(myCryptoKey.id())\n .plaintext(\"my-secret-password\")\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"test\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .metadata(Map.of(\"password\", myPassword.applyValue(getKMSSecretCiphertextResult -\u003e getKMSSecretCiphertextResult.ciphertext())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: test\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n metadata:\n password: ${myPassword.ciphertext}\nvariables:\n myPassword:\n fn::invoke:\n Function: gcp:kms:getKMSSecretCiphertext\n Arguments:\n cryptoKey: ${myCryptoKey.id}\n plaintext: my-secret-password\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe resulting instance can then access the encrypted password from its metadata\nand decrypt it, e.g. using the [Cloud SDK](https://cloud.google.com/sdk/gcloud/reference/kms/decrypt)):\n\n```bash\n$ curl -H \"Metadata-Flavor: Google\" http://metadata.google.internal/computeMetadata/v1/instance/attributes/password \\\n\u003e | base64 -d | gcloud kms decrypt \\\n\u003e --project my-project \\\n\u003e --location us-central1 \\\n\u003e --keyring my-key-ring \\\n\u003e --key my-crypto-key \\\n\u003e --plaintext-file - \\\n\u003e --ciphertext-file - \\\nmy-secret-password\n```\n", "inputs": { "description": "A collection of arguments for invoking getKMSSecretCiphertext.\n", "properties": { @@ -266601,7 +266601,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## Example Usage\n\n### Monitoring App Engine Service\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"appengine-static-content\",\n location: \"US\",\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"hello-world.zip\",\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: \"nodejs20\",\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});\n// Monitors the default AppEngine service\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\",\n name=\"appengine-static-content\",\n location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n name=\"hello-world.zip\",\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=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\n \"sourceUrl\": 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)\n# Monitors the default AppEngine service\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 Name = \"appengine-static-content\",\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"hello-world.zip\",\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 = \"nodejs20\",\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 // Monitors the default AppEngine service\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/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"appengine-static-content\"),\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\tName: pulumi.String(\"hello-world.zip\"),\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(\"nodejs20\"),\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// Monitors the default AppEngine service\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 .name(\"appengine-static-content\")\n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"hello-world.zip\")\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(\"nodejs20\")\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 // Monitors the default AppEngine service\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: nodejs20\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 name: appengine-static-content\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n name: hello-world.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\nvariables:\n # Monitors the default AppEngine service\n srv:\n fn::invoke:\n Function: gcp:monitoring:getAppEngineService\n Arguments:\n moduleId: ${myapp.service}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "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## Example Usage\n\n### Monitoring App Engine Service\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"appengine-static-content\",\n location: \"US\",\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"hello-world.zip\",\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: \"nodejs20\",\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});\n// Monitors the default AppEngine service\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\",\n name=\"appengine-static-content\",\n location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n name=\"hello-world.zip\",\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=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\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)\n# Monitors the default AppEngine service\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 Name = \"appengine-static-content\",\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"hello-world.zip\",\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 = \"nodejs20\",\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 // Monitors the default AppEngine service\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/v7/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tName: pulumi.String(\"appengine-static-content\"),\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\tName: pulumi.String(\"hello-world.zip\"),\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(\"nodejs20\"),\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// Monitors the default AppEngine service\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 .name(\"appengine-static-content\")\n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"hello-world.zip\")\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(\"nodejs20\")\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 // Monitors the default AppEngine service\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: nodejs20\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 name: appengine-static-content\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n name: hello-world.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\nvariables:\n # Monitors the default AppEngine service\n srv:\n fn::invoke:\n Function: gcp:monitoring:getAppEngineService\n Arguments:\n moduleId: ${myapp.service}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getAppEngineService.\n", "properties": { @@ -266940,7 +266940,7 @@ } }, "gcp:monitoring/getNotificationChannel:getNotificationChannel": { - "description": "A NotificationChannel is a medium through which an alert is delivered\nwhen a policy violation is detected. Examples of channels include email, SMS,\nand third-party messaging applications. Fields containing sensitive information\nlike authentication tokens or contact info are only partially populated on retrieval.\n\n\nTo get more information about NotificationChannel, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.notificationChannels)\n* How-to Guides\n * [Notification Options](https://cloud.google.com/monitoring/support/notification-options)\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n\n\n## Example Usage\n\n### Notification Channel Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = gcp.monitoring.getNotificationChannel({\n displayName: \"Test Notification Channel\",\n});\nconst alertPolicy = new gcp.monitoring.AlertPolicy(\"alert_policy\", {\n displayName: \"My Alert Policy\",\n notificationChannels: [basic.then(basic =\u003e basic.name)],\n combiner: \"OR\",\n conditions: [{\n displayName: \"test condition\",\n conditionThreshold: {\n filter: \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n duration: \"60s\",\n comparison: \"COMPARISON_GT\",\n aggregations: [{\n alignmentPeriod: \"60s\",\n perSeriesAligner: \"ALIGN_RATE\",\n }],\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.monitoring.get_notification_channel(display_name=\"Test Notification Channel\")\nalert_policy = gcp.monitoring.AlertPolicy(\"alert_policy\",\n display_name=\"My Alert Policy\",\n notification_channels=[basic.name],\n combiner=\"OR\",\n conditions=[{\n \"displayName\": \"test condition\",\n \"conditionThreshold\": {\n \"filter\": \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n \"duration\": \"60s\",\n \"comparison\": \"COMPARISON_GT\",\n \"aggregations\": [{\n \"alignmentPeriod\": \"60s\",\n \"perSeriesAligner\": \"ALIGN_RATE\",\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 basic = Gcp.Monitoring.GetNotificationChannel.Invoke(new()\n {\n DisplayName = \"Test Notification Channel\",\n });\n\n var alertPolicy = new Gcp.Monitoring.AlertPolicy(\"alert_policy\", new()\n {\n DisplayName = \"My Alert Policy\",\n NotificationChannels = new[]\n {\n basic.Apply(getNotificationChannelResult =\u003e getNotificationChannelResult.Name),\n },\n Combiner = \"OR\",\n Conditions = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionArgs\n {\n DisplayName = \"test condition\",\n ConditionThreshold = new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdArgs\n {\n Filter = \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n Duration = \"60s\",\n Comparison = \"COMPARISON_GT\",\n Aggregations = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdAggregationArgs\n {\n AlignmentPeriod = \"60s\",\n PerSeriesAligner = \"ALIGN_RATE\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.LookupNotificationChannel(ctx, \u0026monitoring.LookupNotificationChannelArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"Test Notification Channel\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewAlertPolicy(ctx, \"alert_policy\", \u0026monitoring.AlertPolicyArgs{\n\t\t\tDisplayName: pulumi.String(\"My Alert Policy\"),\n\t\t\tNotificationChannels: pulumi.StringArray{\n\t\t\t\tpulumi.String(basic.Name),\n\t\t\t},\n\t\t\tCombiner: pulumi.String(\"OR\"),\n\t\t\tConditions: monitoring.AlertPolicyConditionArray{\n\t\t\t\t\u0026monitoring.AlertPolicyConditionArgs{\n\t\t\t\t\tDisplayName: pulumi.String(\"test condition\"),\n\t\t\t\t\tConditionThreshold: \u0026monitoring.AlertPolicyConditionConditionThresholdArgs{\n\t\t\t\t\t\tFilter: pulumi.String(\"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\"),\n\t\t\t\t\t\tDuration: pulumi.String(\"60s\"),\n\t\t\t\t\t\tComparison: pulumi.String(\"COMPARISON_GT\"),\n\t\t\t\t\t\tAggregations: monitoring.AlertPolicyConditionConditionThresholdAggregationArray{\n\t\t\t\t\t\t\t\u0026monitoring.AlertPolicyConditionConditionThresholdAggregationArgs{\n\t\t\t\t\t\t\t\tAlignmentPeriod: pulumi.String(\"60s\"),\n\t\t\t\t\t\t\t\tPerSeriesAligner: pulumi.String(\"ALIGN_RATE\"),\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.monitoring.MonitoringFunctions;\nimport com.pulumi.gcp.monitoring.inputs.GetNotificationChannelArgs;\nimport com.pulumi.gcp.monitoring.AlertPolicy;\nimport com.pulumi.gcp.monitoring.AlertPolicyArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionConditionThresholdArgs;\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 basic = MonitoringFunctions.getNotificationChannel(GetNotificationChannelArgs.builder()\n .displayName(\"Test Notification Channel\")\n .build());\n\n var alertPolicy = new AlertPolicy(\"alertPolicy\", AlertPolicyArgs.builder()\n .displayName(\"My Alert Policy\")\n .notificationChannels(basic.applyValue(getNotificationChannelResult -\u003e getNotificationChannelResult.name()))\n .combiner(\"OR\")\n .conditions(AlertPolicyConditionArgs.builder()\n .displayName(\"test condition\")\n .conditionThreshold(AlertPolicyConditionConditionThresholdArgs.builder()\n .filter(\"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\")\n .duration(\"60s\")\n .comparison(\"COMPARISON_GT\")\n .aggregations(AlertPolicyConditionConditionThresholdAggregationArgs.builder()\n .alignmentPeriod(\"60s\")\n .perSeriesAligner(\"ALIGN_RATE\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n alertPolicy:\n type: gcp:monitoring:AlertPolicy\n name: alert_policy\n properties:\n displayName: My Alert Policy\n notificationChannels:\n - ${basic.name}\n combiner: OR\n conditions:\n - displayName: test condition\n conditionThreshold:\n filter: metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" AND resource.type=\"gce_instance\"\n duration: 60s\n comparison: COMPARISON_GT\n aggregations:\n - alignmentPeriod: 60s\n perSeriesAligner: ALIGN_RATE\nvariables:\n basic:\n fn::invoke:\n Function: gcp:monitoring:getNotificationChannel\n Arguments:\n displayName: Test Notification Channel\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "A NotificationChannel is a medium through which an alert is delivered\nwhen a policy violation is detected. Examples of channels include email, SMS,\nand third-party messaging applications. Fields containing sensitive information\nlike authentication tokens or contact info are only partially populated on retrieval.\n\n\nTo get more information about NotificationChannel, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.notificationChannels)\n* How-to Guides\n * [Notification Options](https://cloud.google.com/monitoring/support/notification-options)\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n\n\n## Example Usage\n\n### Notification Channel Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = gcp.monitoring.getNotificationChannel({\n displayName: \"Test Notification Channel\",\n});\nconst alertPolicy = new gcp.monitoring.AlertPolicy(\"alert_policy\", {\n displayName: \"My Alert Policy\",\n notificationChannels: [basic.then(basic =\u003e basic.name)],\n combiner: \"OR\",\n conditions: [{\n displayName: \"test condition\",\n conditionThreshold: {\n filter: \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n duration: \"60s\",\n comparison: \"COMPARISON_GT\",\n aggregations: [{\n alignmentPeriod: \"60s\",\n perSeriesAligner: \"ALIGN_RATE\",\n }],\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.monitoring.get_notification_channel(display_name=\"Test Notification Channel\")\nalert_policy = gcp.monitoring.AlertPolicy(\"alert_policy\",\n display_name=\"My Alert Policy\",\n notification_channels=[basic.name],\n combiner=\"OR\",\n conditions=[{\n \"display_name\": \"test condition\",\n \"condition_threshold\": {\n \"filter\": \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n \"duration\": \"60s\",\n \"comparison\": \"COMPARISON_GT\",\n \"aggregations\": [{\n \"alignment_period\": \"60s\",\n \"per_series_aligner\": \"ALIGN_RATE\",\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 basic = Gcp.Monitoring.GetNotificationChannel.Invoke(new()\n {\n DisplayName = \"Test Notification Channel\",\n });\n\n var alertPolicy = new Gcp.Monitoring.AlertPolicy(\"alert_policy\", new()\n {\n DisplayName = \"My Alert Policy\",\n NotificationChannels = new[]\n {\n basic.Apply(getNotificationChannelResult =\u003e getNotificationChannelResult.Name),\n },\n Combiner = \"OR\",\n Conditions = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionArgs\n {\n DisplayName = \"test condition\",\n ConditionThreshold = new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdArgs\n {\n Filter = \"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\",\n Duration = \"60s\",\n Comparison = \"COMPARISON_GT\",\n Aggregations = new[]\n {\n new Gcp.Monitoring.Inputs.AlertPolicyConditionConditionThresholdAggregationArgs\n {\n AlignmentPeriod = \"60s\",\n PerSeriesAligner = \"ALIGN_RATE\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/monitoring\"\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 := monitoring.LookupNotificationChannel(ctx, \u0026monitoring.LookupNotificationChannelArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"Test Notification Channel\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewAlertPolicy(ctx, \"alert_policy\", \u0026monitoring.AlertPolicyArgs{\n\t\t\tDisplayName: pulumi.String(\"My Alert Policy\"),\n\t\t\tNotificationChannels: pulumi.StringArray{\n\t\t\t\tpulumi.String(basic.Name),\n\t\t\t},\n\t\t\tCombiner: pulumi.String(\"OR\"),\n\t\t\tConditions: monitoring.AlertPolicyConditionArray{\n\t\t\t\t\u0026monitoring.AlertPolicyConditionArgs{\n\t\t\t\t\tDisplayName: pulumi.String(\"test condition\"),\n\t\t\t\t\tConditionThreshold: \u0026monitoring.AlertPolicyConditionConditionThresholdArgs{\n\t\t\t\t\t\tFilter: pulumi.String(\"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\"),\n\t\t\t\t\t\tDuration: pulumi.String(\"60s\"),\n\t\t\t\t\t\tComparison: pulumi.String(\"COMPARISON_GT\"),\n\t\t\t\t\t\tAggregations: monitoring.AlertPolicyConditionConditionThresholdAggregationArray{\n\t\t\t\t\t\t\t\u0026monitoring.AlertPolicyConditionConditionThresholdAggregationArgs{\n\t\t\t\t\t\t\t\tAlignmentPeriod: pulumi.String(\"60s\"),\n\t\t\t\t\t\t\t\tPerSeriesAligner: pulumi.String(\"ALIGN_RATE\"),\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.monitoring.MonitoringFunctions;\nimport com.pulumi.gcp.monitoring.inputs.GetNotificationChannelArgs;\nimport com.pulumi.gcp.monitoring.AlertPolicy;\nimport com.pulumi.gcp.monitoring.AlertPolicyArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionArgs;\nimport com.pulumi.gcp.monitoring.inputs.AlertPolicyConditionConditionThresholdArgs;\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 basic = MonitoringFunctions.getNotificationChannel(GetNotificationChannelArgs.builder()\n .displayName(\"Test Notification Channel\")\n .build());\n\n var alertPolicy = new AlertPolicy(\"alertPolicy\", AlertPolicyArgs.builder()\n .displayName(\"My Alert Policy\")\n .notificationChannels(basic.applyValue(getNotificationChannelResult -\u003e getNotificationChannelResult.name()))\n .combiner(\"OR\")\n .conditions(AlertPolicyConditionArgs.builder()\n .displayName(\"test condition\")\n .conditionThreshold(AlertPolicyConditionConditionThresholdArgs.builder()\n .filter(\"metric.type=\\\"compute.googleapis.com/instance/disk/write_bytes_count\\\" AND resource.type=\\\"gce_instance\\\"\")\n .duration(\"60s\")\n .comparison(\"COMPARISON_GT\")\n .aggregations(AlertPolicyConditionConditionThresholdAggregationArgs.builder()\n .alignmentPeriod(\"60s\")\n .perSeriesAligner(\"ALIGN_RATE\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n alertPolicy:\n type: gcp:monitoring:AlertPolicy\n name: alert_policy\n properties:\n displayName: My Alert Policy\n notificationChannels:\n - ${basic.name}\n combiner: OR\n conditions:\n - displayName: test condition\n conditionThreshold:\n filter: metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" AND resource.type=\"gce_instance\"\n duration: 60s\n comparison: COMPARISON_GT\n aggregations:\n - alignmentPeriod: 60s\n perSeriesAligner: ALIGN_RATE\nvariables:\n basic:\n fn::invoke:\n Function: gcp:monitoring:getNotificationChannel\n Arguments:\n displayName: Test Notification Channel\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getNotificationChannel.\n", "properties": { @@ -269306,7 +269306,7 @@ } }, "gcp:serviceaccount/getAccount:getAccount": { - "description": "Get the service account from a project. For more information see\nthe official [API](https://cloud.google.com/compute/docs/access/service-accounts) documentation.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst objectViewer = gcp.serviceaccount.getAccount({\n accountId: \"object-viewer\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nobject_viewer = gcp.serviceaccount.get_account(account_id=\"object-viewer\")\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 objectViewer = Gcp.ServiceAccount.GetAccount.Invoke(new()\n {\n AccountId = \"object-viewer\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := serviceaccount.LookupAccount(ctx, \u0026serviceaccount.LookupAccountArgs{\n\t\t\tAccountId: \"object-viewer\",\n\t\t}, 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.serviceaccount.ServiceaccountFunctions;\nimport com.pulumi.gcp.serviceaccount.inputs.GetAccountArgs;\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 objectViewer = ServiceaccountFunctions.getAccount(GetAccountArgs.builder()\n .accountId(\"object-viewer\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n objectViewer:\n fn::invoke:\n Function: gcp:serviceaccount:getAccount\n Arguments:\n accountId: object-viewer\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Save Key In Kubernetes Secret\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as kubernetes from \"@pulumi/kubernetes\";\nimport * as std from \"@pulumi/std\";\n\nconst myaccount = gcp.serviceaccount.getAccount({\n accountId: \"myaccount-id\",\n});\nconst mykey = new gcp.serviceaccount.Key(\"mykey\", {serviceAccountId: myaccount.then(myaccount =\u003e myaccount.name)});\nconst google_application_credentials = new kubernetes.core.v1.Secret(\"google-application-credentials\", {\n metadata: {\n name: \"google-application-credentials\",\n },\n data: {\n json: std.base64decodeOutput({\n input: mykey.privateKey,\n }).apply(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_kubernetes as kubernetes\nimport pulumi_std as std\n\nmyaccount = gcp.serviceaccount.get_account(account_id=\"myaccount-id\")\nmykey = gcp.serviceaccount.Key(\"mykey\", service_account_id=myaccount.name)\ngoogle_application_credentials = kubernetes.core.v1.Secret(\"google-application-credentials\",\n metadata=kubernetes.meta.v1.ObjectMetaArgs(\n name=\"google-application-credentials\",\n ),\n data={\n \"json\": std.base64decode_output(input=mykey.private_key).apply(lambda invoke: invoke.result),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Kubernetes = Pulumi.Kubernetes;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myaccount = Gcp.ServiceAccount.GetAccount.Invoke(new()\n {\n AccountId = \"myaccount-id\",\n });\n\n var mykey = new Gcp.ServiceAccount.Key(\"mykey\", new()\n {\n ServiceAccountId = myaccount.Apply(getAccountResult =\u003e getAccountResult.Name),\n });\n\n var google_application_credentials = new Kubernetes.Core.V1.Secret(\"google-application-credentials\", new()\n {\n Metadata = new Kubernetes.Types.Inputs.Meta.V1.ObjectMetaArgs\n {\n Name = \"google-application-credentials\",\n },\n Data = \n {\n { \"json\", Std.Base64decode.Invoke(new()\n {\n Input = mykey.PrivateKey,\n }).Apply(invoke =\u003e invoke.Result) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\tcorev1 \"github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/core/v1\"\n\tmetav1 \"github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyaccount, err := serviceaccount.LookupAccount(ctx, \u0026serviceaccount.LookupAccountArgs{\n\t\t\tAccountId: \"myaccount-id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmykey, err := serviceaccount.NewKey(ctx, \"mykey\", \u0026serviceaccount.KeyArgs{\n\t\t\tServiceAccountId: pulumi.String(myaccount.Name),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = corev1.NewSecret(ctx, \"google-application-credentials\", \u0026corev1.SecretArgs{\n\t\t\tMetadata: \u0026metav1.ObjectMetaArgs{\n\t\t\t\tName: pulumi.String(\"google-application-credentials\"),\n\t\t\t},\n\t\t\tData: pulumi.StringMap{\n\t\t\t\t\"json\": std.Base64decodeOutput(ctx, std.Base64decodeOutputArgs{\n\t\t\t\t\tInput: mykey.PrivateKey,\n\t\t\t\t}, nil).ApplyT(func(invoke std.Base64decodeResult) (*string, error) {\n\t\t\t\t\treturn invoke.Result, 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.serviceaccount.ServiceaccountFunctions;\nimport com.pulumi.gcp.serviceaccount.inputs.GetAccountArgs;\nimport com.pulumi.gcp.serviceaccount.Key;\nimport com.pulumi.gcp.serviceaccount.KeyArgs;\nimport com.pulumi.kubernetes.core_v1.Secret;\nimport com.pulumi.kubernetes.core_v1.SecretArgs;\nimport com.pulumi.kubernetes.meta_v1.inputs.ObjectMetaArgs;\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 myaccount = ServiceaccountFunctions.getAccount(GetAccountArgs.builder()\n .accountId(\"myaccount-id\")\n .build());\n\n var mykey = new Key(\"mykey\", KeyArgs.builder()\n .serviceAccountId(myaccount.applyValue(getAccountResult -\u003e getAccountResult.name()))\n .build());\n\n var google_application_credentials = new Secret(\"google-application-credentials\", SecretArgs.builder()\n .metadata(ObjectMetaArgs.builder()\n .name(\"google-application-credentials\")\n .build())\n .data(Map.of(\"json\", StdFunctions.base64decode().applyValue(invoke -\u003e invoke.result())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mykey:\n type: gcp:serviceaccount:Key\n properties:\n serviceAccountId: ${myaccount.name}\n google-application-credentials:\n type: kubernetes:core/v1:Secret\n properties:\n metadata:\n name: google-application-credentials\n data:\n json:\n fn::invoke:\n Function: std:base64decode\n Arguments:\n input: ${mykey.privateKey}\n Return: result\nvariables:\n myaccount:\n fn::invoke:\n Function: gcp:serviceaccount:getAccount\n Arguments:\n accountId: myaccount-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get the service account from a project. For more information see\nthe official [API](https://cloud.google.com/compute/docs/access/service-accounts) documentation.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst objectViewer = gcp.serviceaccount.getAccount({\n accountId: \"object-viewer\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nobject_viewer = gcp.serviceaccount.get_account(account_id=\"object-viewer\")\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 objectViewer = Gcp.ServiceAccount.GetAccount.Invoke(new()\n {\n AccountId = \"object-viewer\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\t_, err := serviceaccount.LookupAccount(ctx, \u0026serviceaccount.LookupAccountArgs{\n\t\t\tAccountId: \"object-viewer\",\n\t\t}, 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.serviceaccount.ServiceaccountFunctions;\nimport com.pulumi.gcp.serviceaccount.inputs.GetAccountArgs;\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 objectViewer = ServiceaccountFunctions.getAccount(GetAccountArgs.builder()\n .accountId(\"object-viewer\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n objectViewer:\n fn::invoke:\n Function: gcp:serviceaccount:getAccount\n Arguments:\n accountId: object-viewer\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Save Key In Kubernetes Secret\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as kubernetes from \"@pulumi/kubernetes\";\nimport * as std from \"@pulumi/std\";\n\nconst myaccount = gcp.serviceaccount.getAccount({\n accountId: \"myaccount-id\",\n});\nconst mykey = new gcp.serviceaccount.Key(\"mykey\", {serviceAccountId: myaccount.then(myaccount =\u003e myaccount.name)});\nconst google_application_credentials = new kubernetes.core.v1.Secret(\"google-application-credentials\", {\n metadata: {\n name: \"google-application-credentials\",\n },\n data: {\n json: std.base64decodeOutput({\n input: mykey.privateKey,\n }).apply(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_kubernetes as kubernetes\nimport pulumi_std as std\n\nmyaccount = gcp.serviceaccount.get_account(account_id=\"myaccount-id\")\nmykey = gcp.serviceaccount.Key(\"mykey\", service_account_id=myaccount.name)\ngoogle_application_credentials = kubernetes.core.v1.Secret(\"google-application-credentials\",\n metadata=kubernetes.meta.v1.ObjectMetaArgs(\n name=\"google-application-credentials\",\n ),\n data={\n \"json\": std.base64decode_output(input=mykey.private_key).apply(lambda invoke: invoke.result),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Kubernetes = Pulumi.Kubernetes;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myaccount = Gcp.ServiceAccount.GetAccount.Invoke(new()\n {\n AccountId = \"myaccount-id\",\n });\n\n var mykey = new Gcp.ServiceAccount.Key(\"mykey\", new()\n {\n ServiceAccountId = myaccount.Apply(getAccountResult =\u003e getAccountResult.Name),\n });\n\n var google_application_credentials = new Kubernetes.Core.V1.Secret(\"google-application-credentials\", new()\n {\n Metadata = new Kubernetes.Types.Inputs.Meta.V1.ObjectMetaArgs\n {\n Name = \"google-application-credentials\",\n },\n Data = \n {\n { \"json\", Std.Base64decode.Invoke(new()\n {\n Input = mykey.PrivateKey,\n }).Apply(invoke =\u003e invoke.Result) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/serviceaccount\"\n\tcorev1 \"github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/core/v1\"\n\tmetav1 \"github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyaccount, err := serviceaccount.LookupAccount(ctx, \u0026serviceaccount.LookupAccountArgs{\n\t\t\tAccountId: \"myaccount-id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmykey, err := serviceaccount.NewKey(ctx, \"mykey\", \u0026serviceaccount.KeyArgs{\n\t\t\tServiceAccountId: pulumi.String(myaccount.Name),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = corev1.NewSecret(ctx, \"google-application-credentials\", \u0026corev1.SecretArgs{\n\t\t\tMetadata: \u0026metav1.ObjectMetaArgs{\n\t\t\t\tName: pulumi.String(\"google-application-credentials\"),\n\t\t\t},\n\t\t\tData: pulumi.StringMap{\n\t\t\t\t\"json\": pulumi.String(std.Base64decodeOutput(ctx, std.Base64decodeOutputArgs{\n\t\t\t\t\tInput: mykey.PrivateKey,\n\t\t\t\t}, nil).ApplyT(func(invoke std.Base64decodeResult) (*string, error) {\n\t\t\t\t\treturn invoke.Result, 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.serviceaccount.ServiceaccountFunctions;\nimport com.pulumi.gcp.serviceaccount.inputs.GetAccountArgs;\nimport com.pulumi.gcp.serviceaccount.Key;\nimport com.pulumi.gcp.serviceaccount.KeyArgs;\nimport com.pulumi.kubernetes.core_v1.Secret;\nimport com.pulumi.kubernetes.core_v1.SecretArgs;\nimport com.pulumi.kubernetes.meta_v1.inputs.ObjectMetaArgs;\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 myaccount = ServiceaccountFunctions.getAccount(GetAccountArgs.builder()\n .accountId(\"myaccount-id\")\n .build());\n\n var mykey = new Key(\"mykey\", KeyArgs.builder()\n .serviceAccountId(myaccount.applyValue(getAccountResult -\u003e getAccountResult.name()))\n .build());\n\n var google_application_credentials = new Secret(\"google-application-credentials\", SecretArgs.builder()\n .metadata(ObjectMetaArgs.builder()\n .name(\"google-application-credentials\")\n .build())\n .data(Map.of(\"json\", StdFunctions.base64decode().applyValue(invoke -\u003e invoke.result())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mykey:\n type: gcp:serviceaccount:Key\n properties:\n serviceAccountId: ${myaccount.name}\n google-application-credentials:\n type: kubernetes:core/v1:Secret\n properties:\n metadata:\n name: google-application-credentials\n data:\n json:\n fn::invoke:\n Function: std:base64decode\n Arguments:\n input: ${mykey.privateKey}\n Return: result\nvariables:\n myaccount:\n fn::invoke:\n Function: gcp:serviceaccount:getAccount\n Arguments:\n accountId: myaccount-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getAccount.\n", "properties": { @@ -271501,7 +271501,7 @@ } }, "gcp:storage/getProjectServiceAccount:getProjectServiceAccount": { - "description": "Get the email address of a project's unique [automatic Google Cloud Storage service account](https://cloud.google.com/storage/docs/projects#service-accounts).\n\nFor each Google Cloud project, Google maintains a unique service account which\nis used as the identity for various Google Cloud Storage operations, including\noperations involving\n[customer-managed encryption keys](https://cloud.google.com/storage/docs/encryption/customer-managed-keys)\nand those involving\n[storage notifications to pub/sub](https://cloud.google.com/storage/docs/gsutil/commands/notification).\nThis automatic Google service account requires access to the relevant Cloud KMS keys or pub/sub topics, respectively, in order for Cloud Storage to use\nthese customer-managed resources.\n\nThe service account has a well-known, documented naming format which is parameterised on the numeric Google project ID.\nHowever, as noted in [the docs](https://cloud.google.com/storage/docs/projects#service-accounts), it is only created when certain relevant actions occur which\npresuppose its existence.\nThese actions include calling a [Cloud Storage API endpoint](https://cloud.google.com/storage/docs/json_api/v1/projects/serviceAccount/get) to yield the\nservice account's identity, or performing some operations in the UI which must use the service account's identity, such as attempting to list Cloud KMS keys\non the bucket creation page.\n\nUse of this data source calls the relevant API endpoint to obtain the service account's identity and thus ensures it exists prior to any API operations\nwhich demand its existence, such as specifying it in Cloud IAM policy.\nAlways prefer to use this data source over interpolating the project ID into the well-known format for this service account, as the latter approach may cause\nprovider update errors in cases where the service account does not yet exist.\n\n\u003e When you write provider code which uses features depending on this service account *and* your provider code adds the service account in IAM policy on other resources,\n you must take care for race conditions between the establishment of the IAM policy and creation of the relevant Cloud Storage resource.\n Cloud Storage APIs will require permissions on resources such as pub/sub topics or Cloud KMS keys to exist *before* the attempt to utilise them in a\n bucket configuration, otherwise the API calls will fail.\n You may need to use `depends_on` to create an explicit dependency between the IAM policy resource and the Cloud Storage resource which depends on it.\n See the examples here and in the `gcp.storage.Notification` resource.\n\nFor more information see\n[the API reference](https://cloud.google.com/storage/docs/json_api/v1/projects/serviceAccount).\n\n## Example Usage\n\n### Pub/Sub Notifications\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\nconst binding = new gcp.pubsub.TopicIAMBinding(\"binding\", {\n topic: topic.name,\n role: \"roles/pubsub.publisher\",\n members: [gcsAccount.then(gcsAccount =\u003e `serviceAccount:${gcsAccount.emailAddress}`)],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngcs_account = gcp.storage.get_project_service_account()\nbinding = gcp.pubsub.TopicIAMBinding(\"binding\",\n topic=topic[\"name\"],\n role=\"roles/pubsub.publisher\",\n members=[f\"serviceAccount:{gcs_account.email_address}\"])\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 gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n var binding = new Gcp.PubSub.TopicIAMBinding(\"binding\", new()\n {\n Topic = topic.Name,\n Role = \"roles/pubsub.publisher\",\n Members = new[]\n {\n $\"serviceAccount:{gcsAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.EmailAddress)}\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tgcsAccount, err := storage.GetProjectServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewTopicIAMBinding(ctx, \"binding\", \u0026pubsub.TopicIAMBindingArgs{\n\t\t\tTopic: pulumi.Any(topic.Name),\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:%v\", gcsAccount.EmailAddress)),\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.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.pubsub.TopicIAMBinding;\nimport com.pulumi.gcp.pubsub.TopicIAMBindingArgs;\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 gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n var binding = new TopicIAMBinding(\"binding\", TopicIAMBindingArgs.builder()\n .topic(topic.name())\n .role(\"roles/pubsub.publisher\")\n .members(String.format(\"serviceAccount:%s\", gcsAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.emailAddress())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n binding:\n type: gcp:pubsub:TopicIAMBinding\n properties:\n topic: ${topic.name}\n role: roles/pubsub.publisher\n members:\n - serviceAccount:${gcsAccount.emailAddress}\nvariables:\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Cloud KMS Keys\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\nconst binding = new gcp.kms.CryptoKeyIAMBinding(\"binding\", {\n cryptoKeyId: \"your-crypto-key-id\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [gcsAccount.then(gcsAccount =\u003e `serviceAccount:${gcsAccount.emailAddress}`)],\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"kms-protected-bucket\",\n location: \"US\",\n encryption: {\n defaultKmsKeyName: \"your-crypto-key-id\",\n },\n}, {\n dependsOn: [binding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngcs_account = gcp.storage.get_project_service_account()\nbinding = gcp.kms.CryptoKeyIAMBinding(\"binding\",\n crypto_key_id=\"your-crypto-key-id\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:{gcs_account.email_address}\"])\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"kms-protected-bucket\",\n location=\"US\",\n encryption={\n \"defaultKmsKeyName\": \"your-crypto-key-id\",\n },\n opts = pulumi.ResourceOptions(depends_on=[binding]))\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 gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n var binding = new Gcp.Kms.CryptoKeyIAMBinding(\"binding\", new()\n {\n CryptoKeyId = \"your-crypto-key-id\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:{gcsAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.EmailAddress)}\",\n },\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"kms-protected-bucket\",\n Location = \"US\",\n Encryption = new Gcp.Storage.Inputs.BucketEncryptionArgs\n {\n DefaultKmsKeyName = \"your-crypto-key-id\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n binding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tgcsAccount, err := storage.GetProjectServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbinding, err := kms.NewCryptoKeyIAMBinding(ctx, \"binding\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"your-crypto-key-id\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:%v\", gcsAccount.EmailAddress)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"kms-protected-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tEncryption: \u0026storage.BucketEncryptionArgs{\n\t\t\t\tDefaultKmsKeyName: pulumi.String(\"your-crypto-key-id\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbinding,\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.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.inputs.BucketEncryptionArgs;\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 gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n var binding = new CryptoKeyIAMBinding(\"binding\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(\"your-crypto-key-id\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:%s\", gcsAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.emailAddress())))\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"kms-protected-bucket\")\n .location(\"US\")\n .encryption(BucketEncryptionArgs.builder()\n .defaultKmsKeyName(\"your-crypto-key-id\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(binding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n binding:\n type: gcp:kms:CryptoKeyIAMBinding\n properties:\n cryptoKeyId: your-crypto-key-id\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:${gcsAccount.emailAddress}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: kms-protected-bucket\n location: US\n encryption:\n defaultKmsKeyName: your-crypto-key-id\n options:\n dependson:\n - ${binding}\nvariables:\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get the email address of a project's unique [automatic Google Cloud Storage service account](https://cloud.google.com/storage/docs/projects#service-accounts).\n\nFor each Google Cloud project, Google maintains a unique service account which\nis used as the identity for various Google Cloud Storage operations, including\noperations involving\n[customer-managed encryption keys](https://cloud.google.com/storage/docs/encryption/customer-managed-keys)\nand those involving\n[storage notifications to pub/sub](https://cloud.google.com/storage/docs/gsutil/commands/notification).\nThis automatic Google service account requires access to the relevant Cloud KMS keys or pub/sub topics, respectively, in order for Cloud Storage to use\nthese customer-managed resources.\n\nThe service account has a well-known, documented naming format which is parameterised on the numeric Google project ID.\nHowever, as noted in [the docs](https://cloud.google.com/storage/docs/projects#service-accounts), it is only created when certain relevant actions occur which\npresuppose its existence.\nThese actions include calling a [Cloud Storage API endpoint](https://cloud.google.com/storage/docs/json_api/v1/projects/serviceAccount/get) to yield the\nservice account's identity, or performing some operations in the UI which must use the service account's identity, such as attempting to list Cloud KMS keys\non the bucket creation page.\n\nUse of this data source calls the relevant API endpoint to obtain the service account's identity and thus ensures it exists prior to any API operations\nwhich demand its existence, such as specifying it in Cloud IAM policy.\nAlways prefer to use this data source over interpolating the project ID into the well-known format for this service account, as the latter approach may cause\nprovider update errors in cases where the service account does not yet exist.\n\n\u003e When you write provider code which uses features depending on this service account *and* your provider code adds the service account in IAM policy on other resources,\n you must take care for race conditions between the establishment of the IAM policy and creation of the relevant Cloud Storage resource.\n Cloud Storage APIs will require permissions on resources such as pub/sub topics or Cloud KMS keys to exist *before* the attempt to utilise them in a\n bucket configuration, otherwise the API calls will fail.\n You may need to use `depends_on` to create an explicit dependency between the IAM policy resource and the Cloud Storage resource which depends on it.\n See the examples here and in the `gcp.storage.Notification` resource.\n\nFor more information see\n[the API reference](https://cloud.google.com/storage/docs/json_api/v1/projects/serviceAccount).\n\n## Example Usage\n\n### Pub/Sub Notifications\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\nconst binding = new gcp.pubsub.TopicIAMBinding(\"binding\", {\n topic: topic.name,\n role: \"roles/pubsub.publisher\",\n members: [gcsAccount.then(gcsAccount =\u003e `serviceAccount:${gcsAccount.emailAddress}`)],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngcs_account = gcp.storage.get_project_service_account()\nbinding = gcp.pubsub.TopicIAMBinding(\"binding\",\n topic=topic[\"name\"],\n role=\"roles/pubsub.publisher\",\n members=[f\"serviceAccount:{gcs_account.email_address}\"])\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 gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n var binding = new Gcp.PubSub.TopicIAMBinding(\"binding\", new()\n {\n Topic = topic.Name,\n Role = \"roles/pubsub.publisher\",\n Members = new[]\n {\n $\"serviceAccount:{gcsAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.EmailAddress)}\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tgcsAccount, err := storage.GetProjectServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewTopicIAMBinding(ctx, \"binding\", \u0026pubsub.TopicIAMBindingArgs{\n\t\t\tTopic: pulumi.Any(topic.Name),\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:%v\", gcsAccount.EmailAddress)),\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.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.pubsub.TopicIAMBinding;\nimport com.pulumi.gcp.pubsub.TopicIAMBindingArgs;\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 gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n var binding = new TopicIAMBinding(\"binding\", TopicIAMBindingArgs.builder()\n .topic(topic.name())\n .role(\"roles/pubsub.publisher\")\n .members(String.format(\"serviceAccount:%s\", gcsAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.emailAddress())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n binding:\n type: gcp:pubsub:TopicIAMBinding\n properties:\n topic: ${topic.name}\n role: roles/pubsub.publisher\n members:\n - serviceAccount:${gcsAccount.emailAddress}\nvariables:\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Cloud KMS Keys\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\nconst binding = new gcp.kms.CryptoKeyIAMBinding(\"binding\", {\n cryptoKeyId: \"your-crypto-key-id\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [gcsAccount.then(gcsAccount =\u003e `serviceAccount:${gcsAccount.emailAddress}`)],\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"kms-protected-bucket\",\n location: \"US\",\n encryption: {\n defaultKmsKeyName: \"your-crypto-key-id\",\n },\n}, {\n dependsOn: [binding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngcs_account = gcp.storage.get_project_service_account()\nbinding = gcp.kms.CryptoKeyIAMBinding(\"binding\",\n crypto_key_id=\"your-crypto-key-id\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:{gcs_account.email_address}\"])\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"kms-protected-bucket\",\n location=\"US\",\n encryption={\n \"default_kms_key_name\": \"your-crypto-key-id\",\n },\n opts = pulumi.ResourceOptions(depends_on=[binding]))\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 gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n var binding = new Gcp.Kms.CryptoKeyIAMBinding(\"binding\", new()\n {\n CryptoKeyId = \"your-crypto-key-id\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:{gcsAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.EmailAddress)}\",\n },\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"kms-protected-bucket\",\n Location = \"US\",\n Encryption = new Gcp.Storage.Inputs.BucketEncryptionArgs\n {\n DefaultKmsKeyName = \"your-crypto-key-id\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n binding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v7/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\tgcsAccount, err := storage.GetProjectServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbinding, err := kms.NewCryptoKeyIAMBinding(ctx, \"binding\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"your-crypto-key-id\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(fmt.Sprintf(\"serviceAccount:%v\", gcsAccount.EmailAddress)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"kms-protected-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tEncryption: \u0026storage.BucketEncryptionArgs{\n\t\t\t\tDefaultKmsKeyName: pulumi.String(\"your-crypto-key-id\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbinding,\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.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.inputs.BucketEncryptionArgs;\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 gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n var binding = new CryptoKeyIAMBinding(\"binding\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(\"your-crypto-key-id\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:%s\", gcsAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.emailAddress())))\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"kms-protected-bucket\")\n .location(\"US\")\n .encryption(BucketEncryptionArgs.builder()\n .defaultKmsKeyName(\"your-crypto-key-id\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(binding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n binding:\n type: gcp:kms:CryptoKeyIAMBinding\n properties:\n cryptoKeyId: your-crypto-key-id\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:${gcsAccount.emailAddress}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: kms-protected-bucket\n location: US\n encryption:\n defaultKmsKeyName: your-crypto-key-id\n options:\n dependson:\n - ${binding}\nvariables:\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getProjectServiceAccount.\n", "properties": { diff --git a/provider/go.mod b/provider/go.mod index 6a5fbdb266..9792030fd1 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -5,11 +5,11 @@ go 1.21.12 require ( github.com/hashicorp/terraform-plugin-sdk/v2 v2.33.0 github.com/hashicorp/terraform-provider-google-beta v0.0.0 - github.com/pulumi/providertest v0.0.13 - github.com/pulumi/pulumi-terraform-bridge/pf v0.40.0 - github.com/pulumi/pulumi-terraform-bridge/v3 v3.87.0 - github.com/pulumi/pulumi/pkg/v3 v3.124.0 - github.com/pulumi/pulumi/sdk/v3 v3.124.0 + github.com/pulumi/providertest v0.0.14 + github.com/pulumi/pulumi-terraform-bridge/pf v0.41.0 + github.com/pulumi/pulumi-terraform-bridge/v3 v3.88.0 + github.com/pulumi/pulumi/pkg/v3 v3.126.0 + github.com/pulumi/pulumi/sdk/v3 v3.126.0 github.com/stretchr/testify v1.9.0 google.golang.org/api v0.185.0 sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600 diff --git a/provider/go.sum b/provider/go.sum index f66071812d..6d115e8710 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -1960,22 +1960,22 @@ github.com/pulumi/esc v0.9.1 h1:HH5eEv8sgyxSpY5a8yePyqFXzA8cvBvapfH8457+mIs= github.com/pulumi/esc v0.9.1/go.mod h1:oEJ6bOsjYlQUpjf70GiX+CXn3VBmpwFDxUTlmtUN84c= github.com/pulumi/inflector v0.1.1 h1:dvlxlWtXwOJTUUtcYDvwnl6Mpg33prhK+7mzeF+SobA= github.com/pulumi/inflector v0.1.1/go.mod h1:HUFCjcPTz96YtTuUlwG3i3EZG4WlniBvR9bd+iJxCUY= -github.com/pulumi/providertest v0.0.13 h1:9CAaoviOTuCVHDI15h3znXa5JsKYtXLYHIIdxOCzo3Y= -github.com/pulumi/providertest v0.0.13/go.mod h1:REAoaN+hGOtdWJGirfWYqcSjCejlbGfzyVTUuemJTuE= +github.com/pulumi/providertest v0.0.14 h1:5QlAPAAs82jkQraHsJvq1xgVfC7xtW8sFJwv2pHgxQ8= +github.com/pulumi/providertest v0.0.14/go.mod h1:GcsqEGgSngwaNOD+kICJPIUQlnA911fGBU8HDlJvVL0= github.com/pulumi/pulumi-java/pkg v0.11.0 h1:Jw9gBvyfmfOMq/EkYDm9+zGPxsDAA8jfeMpHmtZ+1oA= github.com/pulumi/pulumi-java/pkg v0.11.0/go.mod h1:sXAk25P47AQVQL6ilAbFmRNgZykC7og/+87ihnqzFTc= -github.com/pulumi/pulumi-terraform-bridge/pf v0.40.0 h1:igJrGpUnN53vi0ORXpoomvaTkmjJDmYIFY9CpKKJJxI= -github.com/pulumi/pulumi-terraform-bridge/pf v0.40.0/go.mod h1:zdR+52XBu6oYOUUy8DpsWhsaMnf9f6yhfXwxukVtYmM= -github.com/pulumi/pulumi-terraform-bridge/v3 v3.87.0 h1:XgsT5w1KHhjP3ChPC1eVY6A47cdg1EPq6JzbQruvUHU= -github.com/pulumi/pulumi-terraform-bridge/v3 v3.87.0/go.mod h1:468sr8NULk9QEKwVlMLYy3P+gtWjtgaxLJY1F7fTsak= +github.com/pulumi/pulumi-terraform-bridge/pf v0.41.0 h1:nSXm/mV699EtAXLoA/XrDkFyoyWPFyfcMqk/SGCuH2M= +github.com/pulumi/pulumi-terraform-bridge/pf v0.41.0/go.mod h1:vGN8Ab6u/dxRE1Byqo6dXQE/loVbe9hYqiiHqm00hV4= +github.com/pulumi/pulumi-terraform-bridge/v3 v3.88.0 h1:0W2Y3Fk7VAWHpjD3FwzVnqWo7g1hD+96C0YDobMnvDU= +github.com/pulumi/pulumi-terraform-bridge/v3 v3.88.0/go.mod h1:QSDiqiCMMbfzrsp3oyRPWgSVE/dkVH5ujxoFappqjdo= github.com/pulumi/pulumi-terraform-bridge/x/muxer v0.0.9-0.20240227144008-2da15b3d6f6e h1:yON1jwN6gg4cjnOQF607I3fTiFyIDr9WSsQNXHD6wbM= github.com/pulumi/pulumi-terraform-bridge/x/muxer v0.0.9-0.20240227144008-2da15b3d6f6e/go.mod h1:AvlZujvfRiEu+60frCGEhaLeGttjHwM/g+47+IdPZXw= github.com/pulumi/pulumi-yaml v1.9.1 h1:JPeI80M23SPactxgnCFS1casZlSr7ZhAXwSx4H55QQ4= github.com/pulumi/pulumi-yaml v1.9.1/go.mod h1:OH0R34yJxA5u6zjYBN4JXcWoEvfkRoOVWi6viu8buoA= -github.com/pulumi/pulumi/pkg/v3 v3.124.0 h1:JgUePx6Ga9geBJ1dku6K8GXTrsBYzXMhKIsk+cxeKo8= -github.com/pulumi/pulumi/pkg/v3 v3.124.0/go.mod h1:/XUDPNoIikS3lcQe1HpGuKs73cO5HqBvOdxXFeC3UHM= -github.com/pulumi/pulumi/sdk/v3 v3.124.0 h1:f9Rb2AhLSaacKTaBPbKXPCfviHxTuhEXafhT4E095Y0= -github.com/pulumi/pulumi/sdk/v3 v3.124.0/go.mod h1:p1U24en3zt51agx+WlNboSOV8eLlPWYAkxMzVEXKbnY= +github.com/pulumi/pulumi/pkg/v3 v3.126.0 h1:XaZU1ehjHN2I5ihkfwxK/UFMDiCDM9FSt2TBnbldAx4= +github.com/pulumi/pulumi/pkg/v3 v3.126.0/go.mod h1:1P4/oK9zceOJUm48QQl/TqjDN68lfsdnTR1FITTFddw= +github.com/pulumi/pulumi/sdk/v3 v3.126.0 h1:6GQVhwG2jgnG7wjRiWgrq0/sU39onctAiBcvTlqb20s= +github.com/pulumi/pulumi/sdk/v3 v3.126.0/go.mod h1:p1U24en3zt51agx+WlNboSOV8eLlPWYAkxMzVEXKbnY= github.com/pulumi/schema-tools v0.1.2 h1:Fd9xvUjgck4NA+7/jSk7InqCUT4Kj940+EcnbQKpfZo= github.com/pulumi/schema-tools v0.1.2/go.mod h1:62lgj52Tzq11eqWTIaKd+EVyYAu5dEcDJxMhTjvMO/k= github.com/pulumi/terraform-diff-reader v0.0.2 h1:kTE4nEXU3/SYXESvAIem+wyHMI3abqkI3OhJ0G04LLI= diff --git a/sdk/go.mod b/sdk/go.mod index e270c03f0e..d2000653cd 100644 --- a/sdk/go.mod +++ b/sdk/go.mod @@ -4,7 +4,7 @@ go 1.21 require ( github.com/blang/semver v3.5.1+incompatible - github.com/pulumi/pulumi/sdk/v3 v3.124.0 + github.com/pulumi/pulumi/sdk/v3 v3.126.0 ) require ( diff --git a/sdk/go.sum b/sdk/go.sum index 9d4e77d668..7c3772241a 100644 --- a/sdk/go.sum +++ b/sdk/go.sum @@ -150,8 +150,8 @@ github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435 github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= github.com/pulumi/esc v0.9.1 h1:HH5eEv8sgyxSpY5a8yePyqFXzA8cvBvapfH8457+mIs= github.com/pulumi/esc v0.9.1/go.mod h1:oEJ6bOsjYlQUpjf70GiX+CXn3VBmpwFDxUTlmtUN84c= -github.com/pulumi/pulumi/sdk/v3 v3.124.0 h1:f9Rb2AhLSaacKTaBPbKXPCfviHxTuhEXafhT4E095Y0= -github.com/pulumi/pulumi/sdk/v3 v3.124.0/go.mod h1:p1U24en3zt51agx+WlNboSOV8eLlPWYAkxMzVEXKbnY= +github.com/pulumi/pulumi/sdk/v3 v3.126.0 h1:6GQVhwG2jgnG7wjRiWgrq0/sU39onctAiBcvTlqb20s= +github.com/pulumi/pulumi/sdk/v3 v3.126.0/go.mod h1:p1U24en3zt51agx+WlNboSOV8eLlPWYAkxMzVEXKbnY= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= diff --git a/sdk/go/gcp/accesscontextmanager/gcpUserAccessBinding.go b/sdk/go/gcp/accesscontextmanager/gcpUserAccessBinding.go index 5d7426a84e..e5714f381e 100644 --- a/sdk/go/gcp/accesscontextmanager/gcpUserAccessBinding.go +++ b/sdk/go/gcp/accesscontextmanager/gcpUserAccessBinding.go @@ -89,12 +89,12 @@ import ( // } // _, err = accesscontextmanager.NewGcpUserAccessBinding(ctx, "gcp_user_access_binding", &accesscontextmanager.GcpUserAccessBindingArgs{ // OrganizationId: pulumi.String("123456789"), -// GroupKey: std.TrimprefixOutput(ctx, std.TrimprefixOutputArgs{ +// GroupKey: pulumi.String(std.TrimprefixOutput(ctx, std.TrimprefixOutputArgs{ // Input: group.ID(), // Prefix: pulumi.String("groups/"), // }, nil).ApplyT(func(invoke std.TrimprefixResult) (*string, error) { // return invoke.Result, nil -// }).(pulumi.StringPtrOutput), +// }).(pulumi.StringPtrOutput)), // AccessLevels: accessLevelIdForUserAccessBinding.Name, // }) // if err != nil { diff --git a/sdk/go/gcp/apphub/service.go b/sdk/go/gcp/apphub/service.go index 8f1966b8cd..9c6ac61a98 100644 --- a/sdk/go/gcp/apphub/service.go +++ b/sdk/go/gcp/apphub/service.go @@ -160,9 +160,9 @@ import ( // Location: pulumi.String("us-central1"), // ApplicationId: application.ApplicationId, // ServiceId: forwardingRule.Name, -// DiscoveredService: catalog_service.ApplyT(func(catalog_service apphub.GetDiscoveredServiceResult) (*string, error) { +// DiscoveredService: pulumi.String(catalog_service.ApplyT(func(catalog_service apphub.GetDiscoveredServiceResult) (*string, error) { // return &catalog_service.Name, nil -// }).(pulumi.StringPtrOutput), +// }).(pulumi.StringPtrOutput)), // }) // if err != nil { // return err @@ -316,9 +316,9 @@ import ( // Location: pulumi.String("us-central1"), // ApplicationId: application.ApplicationId, // ServiceId: forwardingRule.Name, -// DiscoveredService: catalog_service.ApplyT(func(catalog_service apphub.GetDiscoveredServiceResult) (*string, error) { +// DiscoveredService: pulumi.String(catalog_service.ApplyT(func(catalog_service apphub.GetDiscoveredServiceResult) (*string, error) { // return &catalog_service.Name, nil -// }).(pulumi.StringPtrOutput), +// }).(pulumi.StringPtrOutput)), // DisplayName: pulumi.String("Example Service Full"), // Description: pulumi.String("Register service for testing"), // Attributes: &apphub.ServiceAttributesArgs{ diff --git a/sdk/go/gcp/bigtable/authorizedView.go b/sdk/go/gcp/bigtable/authorizedView.go index 42df1c7dc7..b258ecd789 100644 --- a/sdk/go/gcp/bigtable/authorizedView.go +++ b/sdk/go/gcp/bigtable/authorizedView.go @@ -86,14 +86,14 @@ import ( // TableName: table.Name, // SubsetView: &bigtable.AuthorizedViewSubsetViewArgs{ // RowPrefixes: pulumi.StringArray{ -// invokeBase64encode.Result, +// pulumi.String(invokeBase64encode.Result), // }, // FamilySubsets: bigtable.AuthorizedViewSubsetViewFamilySubsetArray{ // &bigtable.AuthorizedViewSubsetViewFamilySubsetArgs{ // FamilyName: pulumi.String("family-first"), // Qualifiers: pulumi.StringArray{ -// invokeBase64encode1.Result, -// invokeBase64encode2.Result, +// pulumi.String(invokeBase64encode1.Result), +// pulumi.String(invokeBase64encode2.Result), // }, // }, // &bigtable.AuthorizedViewSubsetViewFamilySubsetArgs{ diff --git a/sdk/go/gcp/certificateauthority/certificate.go b/sdk/go/gcp/certificateauthority/certificate.go index e95329a517..e3f1727345 100644 --- a/sdk/go/gcp/certificateauthority/certificate.go +++ b/sdk/go/gcp/certificateauthority/certificate.go @@ -343,7 +343,7 @@ import ( // CertificateAuthority: defaultAuthority.CertificateAuthorityId, // Name: pulumi.String("my-certificate"), // Lifetime: pulumi.String("860s"), -// PemCsr: invokeFile.Result, +// PemCsr: pulumi.String(invokeFile.Result), // CertificateTemplate: defaultCertificateTemplate.ID(), // }) // if err != nil { @@ -430,7 +430,7 @@ import ( // CertificateAuthority: defaultAuthority.CertificateAuthorityId, // Name: pulumi.String("my-certificate"), // Lifetime: pulumi.String("860s"), -// PemCsr: invokeFile.Result, +// PemCsr: pulumi.String(invokeFile.Result), // }) // if err != nil { // return err @@ -545,7 +545,7 @@ import ( // }, // PublicKey: &certificateauthority.CertificateConfigPublicKeyArgs{ // Format: pulumi.String("PEM"), -// Key: invokeFilebase64.Result, +// Key: pulumi.String(invokeFilebase64.Result), // }, // }, // }, pulumi.DependsOn([]pulumi.Resource{ @@ -667,7 +667,7 @@ import ( // }, // PublicKey: &certificateauthority.CertificateConfigPublicKeyArgs{ // Format: pulumi.String("PEM"), -// Key: invokeFilebase64.Result, +// Key: pulumi.String(invokeFilebase64.Result), // }, // }, // }, pulumi.DependsOn([]pulumi.Resource{ diff --git a/sdk/go/gcp/certificatemanager/certificate.go b/sdk/go/gcp/certificatemanager/certificate.go index 17d2511dd2..2d463f62de 100644 --- a/sdk/go/gcp/certificatemanager/certificate.go +++ b/sdk/go/gcp/certificatemanager/certificate.go @@ -257,8 +257,8 @@ import ( // Description: pulumi.String("Regional cert"), // Location: pulumi.String("us-central1"), // SelfManaged: &certificatemanager.CertificateSelfManagedArgs{ -// PemCertificate: invokeFile.Result, -// PemPrivateKey: invokeFile1.Result, +// PemCertificate: pulumi.String(invokeFile.Result), +// PemPrivateKey: pulumi.String(invokeFile1.Result), // }, // }) // if err != nil { diff --git a/sdk/go/gcp/certificatemanager/trustConfig.go b/sdk/go/gcp/certificatemanager/trustConfig.go index c967288d4d..d91d3505a2 100644 --- a/sdk/go/gcp/certificatemanager/trustConfig.go +++ b/sdk/go/gcp/certificatemanager/trustConfig.go @@ -57,12 +57,12 @@ import ( // &certificatemanager.TrustConfigTrustStoreArgs{ // TrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{ // &certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{ -// PemCertificate: invokeFile.Result, +// PemCertificate: pulumi.String(invokeFile.Result), // }, // }, // IntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{ // &certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{ -// PemCertificate: invokeFile1.Result, +// PemCertificate: pulumi.String(invokeFile1.Result), // }, // }, // }, @@ -112,10 +112,10 @@ import ( // Location: pulumi.String("global"), // AllowlistedCertificates: certificatemanager.TrustConfigAllowlistedCertificateArray{ // &certificatemanager.TrustConfigAllowlistedCertificateArgs{ -// PemCertificate: invokeFile.Result, +// PemCertificate: pulumi.String(invokeFile.Result), // }, // &certificatemanager.TrustConfigAllowlistedCertificateArgs{ -// PemCertificate: invokeFile1.Result, +// PemCertificate: pulumi.String(invokeFile1.Result), // }, // }, // Labels: pulumi.StringMap{ diff --git a/sdk/go/gcp/cloudbuild/bitbucketServerConfig.go b/sdk/go/gcp/cloudbuild/bitbucketServerConfig.go index c6ba7d6578..8ccb9e8e75 100644 --- a/sdk/go/gcp/cloudbuild/bitbucketServerConfig.go +++ b/sdk/go/gcp/cloudbuild/bitbucketServerConfig.go @@ -171,15 +171,15 @@ import ( // }, // Username: pulumi.String("test"), // ApiKey: pulumi.String(""), -// PeeredNetwork: vpcNetwork.ID().ApplyT(func(id string) (std.ReplaceResult, error) { -// return std.ReplaceOutput(ctx, std.ReplaceOutputArgs{ +// PeeredNetwork: pulumi.String(vpcNetwork.ID().ApplyT(func(id string) (std.ReplaceResult, error) { +// return std.ReplaceResult(interface{}(std.ReplaceOutput(ctx, std.ReplaceOutputArgs{ // Text: id, // Search: project.Name, // Replace: project.Number, -// }, nil), nil +// }, nil))), nil // }).(std.ReplaceResultOutput).ApplyT(func(invoke std.ReplaceResult) (*string, error) { // return invoke.Result, nil -// }).(pulumi.StringPtrOutput), +// }).(pulumi.StringPtrOutput)), // SslCa: pulumi.String("-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n"), // }, pulumi.DependsOn([]pulumi.Resource{ // _default, diff --git a/sdk/go/gcp/cloudbuildv2/connection.go b/sdk/go/gcp/cloudbuildv2/connection.go index f932e0469a..287216102a 100644 --- a/sdk/go/gcp/cloudbuildv2/connection.go +++ b/sdk/go/gcp/cloudbuildv2/connection.go @@ -88,7 +88,7 @@ import ( // } // _, err = secretmanager.NewSecretVersion(ctx, "private-key-secret-version", &secretmanager.SecretVersionArgs{ // Secret: private_key_secret.ID(), -// SecretData: invokeFile.Result, +// SecretData: pulumi.String(invokeFile.Result), // }) // if err != nil { // return err @@ -193,7 +193,7 @@ import ( // } // _, err = secretmanager.NewSecretVersion(ctx, "github-token-secret-version", &secretmanager.SecretVersionArgs{ // Secret: github_token_secret.ID(), -// SecretData: invokeFile.Result, +// SecretData: pulumi.String(invokeFile.Result), // }) // if err != nil { // return err diff --git a/sdk/go/gcp/cloudbuildv2/repository.go b/sdk/go/gcp/cloudbuildv2/repository.go index fd249dbda0..ff477fba25 100644 --- a/sdk/go/gcp/cloudbuildv2/repository.go +++ b/sdk/go/gcp/cloudbuildv2/repository.go @@ -56,7 +56,7 @@ import ( // } // _, err = secretmanager.NewSecretVersion(ctx, "private-key-secret-version", &secretmanager.SecretVersionArgs{ // Secret: private_key_secret.ID(), -// SecretData: invokeFile.Result, +// SecretData: pulumi.String(invokeFile.Result), // }) // if err != nil { // return err @@ -170,7 +170,7 @@ import ( // } // _, err = secretmanager.NewSecretVersion(ctx, "github-token-secret-version", &secretmanager.SecretVersionArgs{ // Secret: github_token_secret.ID(), -// SecretData: invokeFile.Result, +// SecretData: pulumi.String(invokeFile.Result), // }) // if err != nil { // return err diff --git a/sdk/go/gcp/cloudscheduler/job.go b/sdk/go/gcp/cloudscheduler/job.go index 34ebc73c77..a97a6bcf85 100644 --- a/sdk/go/gcp/cloudscheduler/job.go +++ b/sdk/go/gcp/cloudscheduler/job.go @@ -56,7 +56,7 @@ import ( // Schedule: pulumi.String("*/2 * * * *"), // PubsubTarget: &cloudscheduler.JobPubsubTargetArgs{ // TopicName: topic.ID(), -// Data: invokeBase64encode.Result, +// Data: pulumi.String(invokeBase64encode.Result), // }, // }) // if err != nil { @@ -100,7 +100,7 @@ import ( // HttpTarget: &cloudscheduler.JobHttpTargetArgs{ // HttpMethod: pulumi.String("POST"), // Uri: pulumi.String("https://example.com/"), -// Body: invokeBase64encode.Result, +// Body: pulumi.String(invokeBase64encode.Result), // Headers: pulumi.StringMap{ // "Content-Type": pulumi.String("application/json"), // }, @@ -148,7 +148,7 @@ import ( // HttpTarget: &cloudscheduler.JobHttpTargetArgs{ // HttpMethod: pulumi.String("POST"), // Uri: pulumi.String("https://example.com/ping"), -// Body: invokeBase64encode.Result, +// Body: pulumi.String(invokeBase64encode.Result), // Headers: pulumi.StringMap{ // "Content-Type": pulumi.String("application/json"), // }, diff --git a/sdk/go/gcp/composer/getUserWorkloadsConfigMap.go b/sdk/go/gcp/composer/getUserWorkloadsConfigMap.go index 25920127f1..31d78ae5cf 100644 --- a/sdk/go/gcp/composer/getUserWorkloadsConfigMap.go +++ b/sdk/go/gcp/composer/getUserWorkloadsConfigMap.go @@ -48,10 +48,10 @@ import ( // return err // } // example := exampleEnvironment.Name.ApplyT(func(name string) (composer.GetUserWorkloadsConfigMapResult, error) { -// return composer.LookupUserWorkloadsConfigMapOutput(ctx, composer.GetUserWorkloadsConfigMapOutputArgs{ +// return composer.GetUserWorkloadsConfigMapResult(interface{}(composer.LookupUserWorkloadsConfigMapOutput(ctx, composer.GetUserWorkloadsConfigMapOutputArgs{ // Environment: name, // Name: googleComposerUserWorkloadsConfigMap.Example.Name, -// }, nil), nil +// }, nil))), nil // }).(composer.GetUserWorkloadsConfigMapResultOutput) // ctx.Export("debug", example) // return nil diff --git a/sdk/go/gcp/composer/getUserWorkloadsSecret.go b/sdk/go/gcp/composer/getUserWorkloadsSecret.go index 2e16facfe7..37b753e68a 100644 --- a/sdk/go/gcp/composer/getUserWorkloadsSecret.go +++ b/sdk/go/gcp/composer/getUserWorkloadsSecret.go @@ -61,10 +61,10 @@ import ( // return err // } // example := exampleEnvironment.Name.ApplyT(func(name string) (composer.GetUserWorkloadsSecretResult, error) { -// return composer.LookupUserWorkloadsSecretOutput(ctx, composer.GetUserWorkloadsSecretOutputArgs{ +// return composer.GetUserWorkloadsSecretResult(interface{}(composer.LookupUserWorkloadsSecretOutput(ctx, composer.GetUserWorkloadsSecretOutputArgs{ // Environment: name, // Name: googleComposerUserWorkloadsSecret.Example.Name, -// }, nil), nil +// }, nil))), nil // }).(composer.GetUserWorkloadsSecretResultOutput) // ctx.Export("debug", example) // return nil diff --git a/sdk/go/gcp/compute/getInstanceSerialPort.go b/sdk/go/gcp/compute/getInstanceSerialPort.go index 0f2b3b6f16..fa1cfd3d26 100644 --- a/sdk/go/gcp/compute/getInstanceSerialPort.go +++ b/sdk/go/gcp/compute/getInstanceSerialPort.go @@ -105,11 +105,11 @@ import ( // serial := pulumi.All(windows.Name, windows.Zone).ApplyT(func(_args []interface{}) (compute.GetInstanceSerialPortResult, error) { // name := _args[0].(string) // zone := _args[1].(string) -// return compute.GetInstanceSerialPortOutput(ctx, compute.GetInstanceSerialPortOutputArgs{ +// return compute.GetInstanceSerialPortResult(interface{}(compute.GetInstanceSerialPortOutput(ctx, compute.GetInstanceSerialPortOutputArgs{ // Instance: name, // Zone: zone, // Port: 4, -// }, nil), nil +// }, nil))), nil // }).(compute.GetInstanceSerialPortResultOutput) // ctx.Export("serialOut", serial.ApplyT(func(serial compute.GetInstanceSerialPortResult) (*string, error) { // return &serial.Contents, nil diff --git a/sdk/go/gcp/compute/getRegions.go b/sdk/go/gcp/compute/getRegions.go index 52be5a69c9..ddaf838ba2 100644 --- a/sdk/go/gcp/compute/getRegions.go +++ b/sdk/go/gcp/compute/getRegions.go @@ -33,14 +33,14 @@ import ( // return err // } // var cluster []*compute.Subnetwork -// for index := 0; index < len(available.Names); index++ { +// for index := 0; index < int(len(available.Names)); index++ { // key0 := index // val0 := index // __res, err := compute.NewSubnetwork(ctx, fmt.Sprintf("cluster-%v", key0), &compute.SubnetworkArgs{ // Name: pulumi.String("my-network"), // IpCidrRange: pulumi.String(fmt.Sprintf("10.36.%v.0/24", val0)), // Network: pulumi.String("my-network"), -// Region: available.Names[val0], +// Region: pulumi.String(available.Names[val0]), // }) // if err != nil { // return err diff --git a/sdk/go/gcp/compute/instanceGroupNamedPort.go b/sdk/go/gcp/compute/instanceGroupNamedPort.go index 47fe82259f..74a111b2cf 100644 --- a/sdk/go/gcp/compute/instanceGroupNamedPort.go +++ b/sdk/go/gcp/compute/instanceGroupNamedPort.go @@ -72,9 +72,9 @@ import ( // return err // } // _, err = compute.NewInstanceGroupNamedPort(ctx, "my_port", &compute.InstanceGroupNamedPortArgs{ -// Group: myCluster.NodePools.ApplyT(func(nodePools []container.ClusterNodePool) (*string, error) { +// Group: pulumi.String(myCluster.NodePools.ApplyT(func(nodePools []container.ClusterNodePool) (*string, error) { // return &nodePools[0].InstanceGroupUrls[0], nil -// }).(pulumi.StringPtrOutput), +// }).(pulumi.StringPtrOutput)), // Zone: pulumi.String("us-central1-a"), // Name: pulumi.String("http"), // Port: pulumi.Int(8080), @@ -83,9 +83,9 @@ import ( // return err // } // _, err = compute.NewInstanceGroupNamedPort(ctx, "my_ports", &compute.InstanceGroupNamedPortArgs{ -// Group: myCluster.NodePools.ApplyT(func(nodePools []container.ClusterNodePool) (*string, error) { +// Group: pulumi.String(myCluster.NodePools.ApplyT(func(nodePools []container.ClusterNodePool) (*string, error) { // return &nodePools[0].InstanceGroupUrls[0], nil -// }).(pulumi.StringPtrOutput), +// }).(pulumi.StringPtrOutput)), // Zone: pulumi.String("us-central1-a"), // Name: pulumi.String("https"), // Port: pulumi.Int(4443), diff --git a/sdk/go/gcp/compute/networkEndpoint.go b/sdk/go/gcp/compute/networkEndpoint.go index a1b74599a6..775ed4deae 100644 --- a/sdk/go/gcp/compute/networkEndpoint.go +++ b/sdk/go/gcp/compute/networkEndpoint.go @@ -91,9 +91,9 @@ import ( // NetworkEndpointGroup: pulumi.Any(neg.Name), // Instance: endpoint_instance.Name, // Port: pulumi.Any(neg.DefaultPort), -// IpAddress: endpoint_instance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) { +// IpAddress: pulumi.String(endpoint_instance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) { // return &networkInterfaces[0].NetworkIp, nil -// }).(pulumi.StringPtrOutput), +// }).(pulumi.StringPtrOutput)), // }) // if err != nil { // return err diff --git a/sdk/go/gcp/compute/networkPeeringRoutesConfig.go b/sdk/go/gcp/compute/networkPeeringRoutesConfig.go index 7bd405e0c3..ca1e81ad59 100644 --- a/sdk/go/gcp/compute/networkPeeringRoutesConfig.go +++ b/sdk/go/gcp/compute/networkPeeringRoutesConfig.go @@ -153,9 +153,9 @@ import ( // return err // } // _, err = compute.NewNetworkPeeringRoutesConfig(ctx, "peering_gke_routes", &compute.NetworkPeeringRoutesConfigArgs{ -// Peering: privateCluster.PrivateClusterConfig.ApplyT(func(privateClusterConfig container.ClusterPrivateClusterConfig) (*string, error) { +// Peering: pulumi.String(privateCluster.PrivateClusterConfig.ApplyT(func(privateClusterConfig container.ClusterPrivateClusterConfig) (*string, error) { // return &privateClusterConfig.PeeringName, nil -// }).(pulumi.StringPtrOutput), +// }).(pulumi.StringPtrOutput)), // Network: containerNetwork.Name, // ImportCustomRoutes: pulumi.Bool(true), // ExportCustomRoutes: pulumi.Bool(true), diff --git a/sdk/go/gcp/compute/regionNetworkEndpoint.go b/sdk/go/gcp/compute/regionNetworkEndpoint.go index fd1929d15b..b016c7eb32 100644 --- a/sdk/go/gcp/compute/regionNetworkEndpoint.go +++ b/sdk/go/gcp/compute/regionNetworkEndpoint.go @@ -187,9 +187,9 @@ import ( // Region: pulumi.String("us-central1"), // Instance: defaultInstance.SelfLink, // Port: pulumi.Int(80), -// IpAddress: defaultInstance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) { +// IpAddress: pulumi.String(defaultInstance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) { // return &networkInterfaces[0].NetworkIp, nil -// }).(pulumi.StringPtrOutput), +// }).(pulumi.StringPtrOutput)), // ClientDestinationPort: pulumi.Int(8080), // }) // if err != nil { diff --git a/sdk/go/gcp/compute/regionTargetHttpsProxy.go b/sdk/go/gcp/compute/regionTargetHttpsProxy.go index 0bd450277c..806943835d 100644 --- a/sdk/go/gcp/compute/regionTargetHttpsProxy.go +++ b/sdk/go/gcp/compute/regionTargetHttpsProxy.go @@ -53,8 +53,8 @@ import ( // defaultRegionSslCertificate, err := compute.NewRegionSslCertificate(ctx, "default", &compute.RegionSslCertificateArgs{ // Region: pulumi.String("us-central1"), // Name: pulumi.String("my-certificate"), -// PrivateKey: invokeFile.Result, -// Certificate: invokeFile1.Result, +// PrivateKey: pulumi.String(invokeFile.Result), +// Certificate: pulumi.String(invokeFile1.Result), // }) // if err != nil { // return err @@ -171,12 +171,12 @@ import ( // &certificatemanager.TrustConfigTrustStoreArgs{ // TrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{ // &certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{ -// PemCertificate: invokeFile.Result, +// PemCertificate: pulumi.String(invokeFile.Result), // }, // }, // IntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{ // &certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{ -// PemCertificate: invokeFile1.Result, +// PemCertificate: pulumi.String(invokeFile1.Result), // }, // }, // }, @@ -218,8 +218,8 @@ import ( // defaultRegionSslCertificate, err := compute.NewRegionSslCertificate(ctx, "default", &compute.RegionSslCertificateArgs{ // Region: pulumi.String("us-central1"), // Name: pulumi.String("my-certificate"), -// PrivateKey: invokeFile2.Result, -// Certificate: invokeFile3.Result, +// PrivateKey: pulumi.String(invokeFile2.Result), +// Certificate: pulumi.String(invokeFile3.Result), // }) // if err != nil { // return err @@ -330,8 +330,8 @@ import ( // Name: pulumi.String("my-certificate"), // Location: pulumi.String("us-central1"), // SelfManaged: &certificatemanager.CertificateSelfManagedArgs{ -// PemCertificate: invokeFile.Result, -// PemPrivateKey: invokeFile1.Result, +// PemCertificate: pulumi.String(invokeFile.Result), +// PemPrivateKey: pulumi.String(invokeFile1.Result), // }, // }) // if err != nil { diff --git a/sdk/go/gcp/compute/targetHttpsProxy.go b/sdk/go/gcp/compute/targetHttpsProxy.go index 5ad37388db..f6c4dad18c 100644 --- a/sdk/go/gcp/compute/targetHttpsProxy.go +++ b/sdk/go/gcp/compute/targetHttpsProxy.go @@ -52,8 +52,8 @@ import ( // } // defaultSSLCertificate, err := compute.NewSSLCertificate(ctx, "default", &compute.SSLCertificateArgs{ // Name: pulumi.String("my-certificate"), -// PrivateKey: invokeFile.Result, -// Certificate: invokeFile1.Result, +// PrivateKey: pulumi.String(invokeFile.Result), +// Certificate: pulumi.String(invokeFile1.Result), // }) // if err != nil { // return err @@ -151,8 +151,8 @@ import ( // } // defaultSSLCertificate, err := compute.NewSSLCertificate(ctx, "default", &compute.SSLCertificateArgs{ // Name: pulumi.String("my-certificate"), -// PrivateKey: invokeFile.Result, -// Certificate: invokeFile1.Result, +// PrivateKey: pulumi.String(invokeFile.Result), +// Certificate: pulumi.String(invokeFile1.Result), // }) // if err != nil { // return err @@ -267,12 +267,12 @@ import ( // &certificatemanager.TrustConfigTrustStoreArgs{ // TrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{ // &certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{ -// PemCertificate: invokeFile.Result, +// PemCertificate: pulumi.String(invokeFile.Result), // }, // }, // IntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{ // &certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{ -// PemCertificate: invokeFile1.Result, +// PemCertificate: pulumi.String(invokeFile1.Result), // }, // }, // }, @@ -313,8 +313,8 @@ import ( // } // defaultSSLCertificate, err := compute.NewSSLCertificate(ctx, "default", &compute.SSLCertificateArgs{ // Name: pulumi.String("my-certificate"), -// PrivateKey: invokeFile2.Result, -// Certificate: invokeFile3.Result, +// PrivateKey: pulumi.String(invokeFile2.Result), +// Certificate: pulumi.String(invokeFile3.Result), // }) // if err != nil { // return err @@ -418,8 +418,8 @@ import ( // Name: pulumi.String("my-certificate"), // Scope: pulumi.String("ALL_REGIONS"), // SelfManaged: &certificatemanager.CertificateSelfManagedArgs{ -// PemCertificate: invokeFile.Result, -// PemPrivateKey: invokeFile1.Result, +// PemCertificate: pulumi.String(invokeFile.Result), +// PemPrivateKey: pulumi.String(invokeFile1.Result), // }, // }) // if err != nil { diff --git a/sdk/go/gcp/compute/targetSSLProxy.go b/sdk/go/gcp/compute/targetSSLProxy.go index 07ce53cfa1..fa4b37f1f1 100644 --- a/sdk/go/gcp/compute/targetSSLProxy.go +++ b/sdk/go/gcp/compute/targetSSLProxy.go @@ -53,8 +53,8 @@ import ( // } // defaultSSLCertificate, err := compute.NewSSLCertificate(ctx, "default", &compute.SSLCertificateArgs{ // Name: pulumi.String("default-cert"), -// PrivateKey: invokeFile.Result, -// Certificate: invokeFile1.Result, +// PrivateKey: pulumi.String(invokeFile.Result), +// Certificate: pulumi.String(invokeFile1.Result), // }) // if err != nil { // return err diff --git a/sdk/go/gcp/container/attachedCluster.go b/sdk/go/gcp/container/attachedCluster.go index 85baba03b1..5c42b7dd04 100644 --- a/sdk/go/gcp/container/attachedCluster.go +++ b/sdk/go/gcp/container/attachedCluster.go @@ -129,7 +129,7 @@ import ( // }, // OidcConfig: &container.AttachedClusterOidcConfigArgs{ // IssuerUrl: pulumi.String("https://oidc.issuer.url"), -// Jwks: invokeBase64encode.Result, +// Jwks: pulumi.String(invokeBase64encode.Result), // }, // PlatformVersion: pulumi.String(versions.ValidVersions[0]), // Fleet: &container.AttachedClusterFleetArgs{ diff --git a/sdk/go/gcp/dataflow/job.go b/sdk/go/gcp/dataflow/job.go index fb1e8f0054..d43ad687b4 100644 --- a/sdk/go/gcp/dataflow/job.go +++ b/sdk/go/gcp/dataflow/job.go @@ -94,9 +94,9 @@ import ( // TempGcsLocation: pulumi.String("gs://my-bucket/tmp_dir"), // EnableStreamingEngine: pulumi.Bool(true), // Parameters: pulumi.Map{ -// "inputFilePattern": bucket1.Url.ApplyT(func(url string) (string, error) { +// "inputFilePattern": interface{}(bucket1.Url.ApplyT(func(url string) (string, error) { // return fmt.Sprintf("%v/*.json", url), nil -// }).(pulumi.StringOutput), +// }).(pulumi.StringOutput)), // "outputTopic": topic.ID(), // }, // TransformNameMapping: pulumi.Map{ diff --git a/sdk/go/gcp/deploymentmanager/deployment.go b/sdk/go/gcp/deploymentmanager/deployment.go index e650522d93..7fb0c4b462 100644 --- a/sdk/go/gcp/deploymentmanager/deployment.go +++ b/sdk/go/gcp/deploymentmanager/deployment.go @@ -53,7 +53,7 @@ import ( // Name: pulumi.String("my-deployment"), // Target: &deploymentmanager.DeploymentTargetArgs{ // Config: &deploymentmanager.DeploymentTargetConfigArgs{ -// Content: invokeFile.Result, +// Content: pulumi.String(invokeFile.Result), // }, // }, // Labels: deploymentmanager.DeploymentLabelArray{ diff --git a/sdk/go/gcp/dns/recordSet.go b/sdk/go/gcp/dns/recordSet.go index 9a892f5f5a..4b74af72db 100644 --- a/sdk/go/gcp/dns/recordSet.go +++ b/sdk/go/gcp/dns/recordSet.go @@ -67,9 +67,9 @@ import ( // Ttl: pulumi.Int(300), // ManagedZone: prod.Name, // Rrdatas: pulumi.StringArray{ -// frontendInstance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) { +// pulumi.String(frontendInstance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) { // return &networkInterfaces[0].AccessConfigs[0].NatIp, nil -// }).(pulumi.StringPtrOutput), +// }).(pulumi.StringPtrOutput)), // }, // }) // if err != nil { diff --git a/sdk/go/gcp/endpoints/service.go b/sdk/go/gcp/endpoints/service.go index 51cee95245..5fe97049b7 100644 --- a/sdk/go/gcp/endpoints/service.go +++ b/sdk/go/gcp/endpoints/service.go @@ -38,7 +38,7 @@ import ( // _, err = endpoints.NewService(ctx, "openapi_service", &endpoints.ServiceArgs{ // ServiceName: pulumi.String("api-name.endpoints.project-id.cloud.goog"), // Project: pulumi.String("project-id"), -// OpenapiConfig: invokeFile.Result, +// OpenapiConfig: pulumi.String(invokeFile.Result), // }) // if err != nil { // return err @@ -58,8 +58,8 @@ import ( // _, err = endpoints.NewService(ctx, "grpc_service", &endpoints.ServiceArgs{ // ServiceName: pulumi.String("api-name.endpoints.project-id.cloud.goog"), // Project: pulumi.String("project-id"), -// GrpcConfig: invokeFile1.Result, -// ProtocOutputBase64: invokeFilebase642.Result, +// GrpcConfig: pulumi.String(invokeFile1.Result), +// ProtocOutputBase64: pulumi.String(invokeFilebase642.Result), // }) // if err != nil { // return err diff --git a/sdk/go/gcp/firebase/appCheckDeviceCheckConfig.go b/sdk/go/gcp/firebase/appCheckDeviceCheckConfig.go index 95b13c54be..dc6e6dec0d 100644 --- a/sdk/go/gcp/firebase/appCheckDeviceCheckConfig.go +++ b/sdk/go/gcp/firebase/appCheckDeviceCheckConfig.go @@ -69,7 +69,7 @@ import ( // AppId: _default.AppId, // TokenTtl: pulumi.String("7200s"), // KeyId: pulumi.String("Key ID"), -// PrivateKey: invokeFile.Result, +// PrivateKey: pulumi.String(invokeFile.Result), // }, pulumi.DependsOn([]pulumi.Resource{ // wait30s, // })) diff --git a/sdk/go/gcp/folder/accessApprovalSettings.go b/sdk/go/gcp/folder/accessApprovalSettings.go index abad7fde52..562150946a 100644 --- a/sdk/go/gcp/folder/accessApprovalSettings.go +++ b/sdk/go/gcp/folder/accessApprovalSettings.go @@ -133,9 +133,9 @@ import ( // }, nil) // _, err = folder.NewAccessApprovalSettings(ctx, "folder_access_approval", &folder.AccessApprovalSettingsArgs{ // FolderId: myFolder.FolderId, -// ActiveKeyVersion: cryptoKeyVersion.ApplyT(func(cryptoKeyVersion kms.GetKMSCryptoKeyVersionResult) (*string, error) { +// ActiveKeyVersion: pulumi.String(cryptoKeyVersion.ApplyT(func(cryptoKeyVersion kms.GetKMSCryptoKeyVersionResult) (*string, error) { // return &cryptoKeyVersion.Name, nil -// }).(pulumi.StringPtrOutput), +// }).(pulumi.StringPtrOutput)), // EnrolledServices: folder.AccessApprovalSettingsEnrolledServiceArray{ // &folder.AccessApprovalSettingsEnrolledServiceArgs{ // CloudProduct: pulumi.String("all"), diff --git a/sdk/go/gcp/iam/accessBoundaryPolicy.go b/sdk/go/gcp/iam/accessBoundaryPolicy.go index 2fff977d8e..b669e0883d 100644 --- a/sdk/go/gcp/iam/accessBoundaryPolicy.go +++ b/sdk/go/gcp/iam/accessBoundaryPolicy.go @@ -87,13 +87,13 @@ import ( // return err // } // _, err = iam.NewAccessBoundaryPolicy(ctx, "example", &iam.AccessBoundaryPolicyArgs{ -// Parent: std.UrlencodeOutput(ctx, std.UrlencodeOutputArgs{ +// Parent: pulumi.String(std.UrlencodeOutput(ctx, std.UrlencodeOutputArgs{ // Input: project.ProjectId.ApplyT(func(projectId string) (string, error) { // return fmt.Sprintf("cloudresourcemanager.googleapis.com/projects/%v", projectId), nil // }).(pulumi.StringOutput), // }, nil).ApplyT(func(invoke std.UrlencodeResult) (*string, error) { // return invoke.Result, nil -// }).(pulumi.StringPtrOutput), +// }).(pulumi.StringPtrOutput)), // Name: pulumi.String("my-ab-policy"), // DisplayName: pulumi.String("My AB policy"), // Rules: iam.AccessBoundaryPolicyRuleArray{ diff --git a/sdk/go/gcp/iam/denyPolicy.go b/sdk/go/gcp/iam/denyPolicy.go index 022ad4c16f..51f6a9ba06 100644 --- a/sdk/go/gcp/iam/denyPolicy.go +++ b/sdk/go/gcp/iam/denyPolicy.go @@ -59,13 +59,13 @@ import ( // return err // } // _, err = iam.NewDenyPolicy(ctx, "example", &iam.DenyPolicyArgs{ -// Parent: std.UrlencodeOutput(ctx, std.UrlencodeOutputArgs{ +// Parent: pulumi.String(std.UrlencodeOutput(ctx, std.UrlencodeOutputArgs{ // Input: project.ProjectId.ApplyT(func(projectId string) (string, error) { // return fmt.Sprintf("cloudresourcemanager.googleapis.com/projects/%v", projectId), nil // }).(pulumi.StringOutput), // }, nil).ApplyT(func(invoke std.UrlencodeResult) (*string, error) { // return invoke.Result, nil -// }).(pulumi.StringPtrOutput), +// }).(pulumi.StringPtrOutput)), // Name: pulumi.String("my-deny-policy"), // DisplayName: pulumi.String("A deny rule"), // Rules: iam.DenyPolicyRuleArray{ diff --git a/sdk/go/gcp/iam/workloadIdentityPoolProvider.go b/sdk/go/gcp/iam/workloadIdentityPoolProvider.go index 123310ef5b..951ef853d6 100644 --- a/sdk/go/gcp/iam/workloadIdentityPoolProvider.go +++ b/sdk/go/gcp/iam/workloadIdentityPoolProvider.go @@ -223,7 +223,7 @@ import ( // "attribute.environment": pulumi.String("assertion.arn.contains(\":instance-profile/Production\") ? \"prod\" : \"test\""), // }, // Saml: &iam.WorkloadIdentityPoolProviderSamlArgs{ -// IdpMetadataXml: invokeFile.Result, +// IdpMetadataXml: pulumi.String(invokeFile.Result), // }, // }) // if err != nil { @@ -273,7 +273,7 @@ import ( // "attribute.environment": pulumi.String("assertion.arn.contains(\":instance-profile/Production\") ? \"prod\" : \"test\""), // }, // Saml: &iam.WorkloadIdentityPoolProviderSamlArgs{ -// IdpMetadataXml: invokeFile.Result, +// IdpMetadataXml: pulumi.String(invokeFile.Result), // }, // }) // if err != nil { diff --git a/sdk/go/gcp/identityplatform/inboundSamlConfig.go b/sdk/go/gcp/identityplatform/inboundSamlConfig.go index e57e5c1918..874186d27a 100644 --- a/sdk/go/gcp/identityplatform/inboundSamlConfig.go +++ b/sdk/go/gcp/identityplatform/inboundSamlConfig.go @@ -50,7 +50,7 @@ import ( // SsoUrl: pulumi.String("https://example.com"), // IdpCertificates: identityplatform.InboundSamlConfigIdpConfigIdpCertificateArray{ // &identityplatform.InboundSamlConfigIdpConfigIdpCertificateArgs{ -// X509Certificate: invokeFile.Result, +// X509Certificate: pulumi.String(invokeFile.Result), // }, // }, // }, diff --git a/sdk/go/gcp/identityplatform/tenantInboundSamlConfig.go b/sdk/go/gcp/identityplatform/tenantInboundSamlConfig.go index 08844e52ed..e945397d60 100644 --- a/sdk/go/gcp/identityplatform/tenantInboundSamlConfig.go +++ b/sdk/go/gcp/identityplatform/tenantInboundSamlConfig.go @@ -57,7 +57,7 @@ import ( // SsoUrl: pulumi.String("https://example.com"), // IdpCertificates: identityplatform.TenantInboundSamlConfigIdpConfigIdpCertificateArray{ // &identityplatform.TenantInboundSamlConfigIdpConfigIdpCertificateArgs{ -// X509Certificate: invokeFile.Result, +// X509Certificate: pulumi.String(invokeFile.Result), // }, // }, // }, diff --git a/sdk/go/gcp/monitoring/slo.go b/sdk/go/gcp/monitoring/slo.go index d8785e5b80..ee96266a03 100644 --- a/sdk/go/gcp/monitoring/slo.go +++ b/sdk/go/gcp/monitoring/slo.go @@ -156,7 +156,7 @@ import ( // CalendarPeriod: pulumi.String("FORTNIGHT"), // WindowsBasedSli: &monitoring.SloWindowsBasedSliArgs{ // WindowPeriod: pulumi.String("400s"), -// GoodBadMetricFilter: invokeJoin.Result, +// GoodBadMetricFilter: pulumi.String(invokeJoin.Result), // }, // }) // if err != nil { @@ -207,7 +207,7 @@ import ( // WindowsBasedSli: &monitoring.SloWindowsBasedSliArgs{ // WindowPeriod: pulumi.String("600s"), // MetricMeanInRange: &monitoring.SloWindowsBasedSliMetricMeanInRangeArgs{ -// TimeSeries: invokeJoin.Result, +// TimeSeries: pulumi.String(invokeJoin.Result), // Range: &monitoring.SloWindowsBasedSliMetricMeanInRangeRangeArgs{ // Max: pulumi.Float64(5), // }, @@ -262,7 +262,7 @@ import ( // WindowsBasedSli: &monitoring.SloWindowsBasedSliArgs{ // WindowPeriod: pulumi.String("400s"), // MetricSumInRange: &monitoring.SloWindowsBasedSliMetricSumInRangeArgs{ -// TimeSeries: invokeJoin.Result, +// TimeSeries: pulumi.String(invokeJoin.Result), // Range: &monitoring.SloWindowsBasedSliMetricSumInRangeRangeArgs{ // Max: pulumi.Float64(5000), // }, @@ -320,7 +320,7 @@ import ( // Threshold: pulumi.Float64(0.1), // Performance: &monitoring.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceArgs{ // DistributionCut: &monitoring.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutArgs{ -// DistributionFilter: invokeJoin.Result, +// DistributionFilter: pulumi.String(invokeJoin.Result), // Range: &monitoring.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutRangeArgs{ // Min: pulumi.Float64(1), // Max: pulumi.Float64(9), diff --git a/sdk/go/gcp/networksecurity/serverTlsPolicy.go b/sdk/go/gcp/networksecurity/serverTlsPolicy.go index 707199c765..be934116a5 100644 --- a/sdk/go/gcp/networksecurity/serverTlsPolicy.go +++ b/sdk/go/gcp/networksecurity/serverTlsPolicy.go @@ -180,12 +180,12 @@ import ( // &certificatemanager.TrustConfigTrustStoreArgs{ // TrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{ // &certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{ -// PemCertificate: invokeFile.Result, +// PemCertificate: pulumi.String(invokeFile.Result), // }, // }, // IntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{ // &certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{ -// PemCertificate: invokeFile1.Result, +// PemCertificate: pulumi.String(invokeFile1.Result), // }, // }, // }, diff --git a/sdk/go/gcp/networksecurity/tlsInspectionPolicy.go b/sdk/go/gcp/networksecurity/tlsInspectionPolicy.go index 265e41bffe..fc15134625 100644 --- a/sdk/go/gcp/networksecurity/tlsInspectionPolicy.go +++ b/sdk/go/gcp/networksecurity/tlsInspectionPolicy.go @@ -254,12 +254,12 @@ import ( // &certificatemanager.TrustConfigTrustStoreArgs{ // TrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{ // &certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{ -// PemCertificate: invokeFile.Result, +// PemCertificate: pulumi.String(invokeFile.Result), // }, // }, // IntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{ // &certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{ -// PemCertificate: invokeFile1.Result, +// PemCertificate: pulumi.String(invokeFile1.Result), // }, // }, // }, diff --git a/sdk/go/gcp/networkservices/gateway.go b/sdk/go/gcp/networkservices/gateway.go index 5bdcb2a345..cfa169b3c9 100644 --- a/sdk/go/gcp/networkservices/gateway.go +++ b/sdk/go/gcp/networkservices/gateway.go @@ -121,8 +121,8 @@ import ( // Name: pulumi.String("my-certificate"), // Location: pulumi.String("us-central1"), // SelfManaged: &certificatemanager.CertificateSelfManagedArgs{ -// PemCertificate: invokeFile.Result, -// PemPrivateKey: invokeFile1.Result, +// PemCertificate: pulumi.String(invokeFile.Result), +// PemPrivateKey: pulumi.String(invokeFile1.Result), // }, // }) // if err != nil { @@ -240,8 +240,8 @@ import ( // Name: pulumi.String("my-certificate"), // Location: pulumi.String("us-south1"), // SelfManaged: &certificatemanager.CertificateSelfManagedArgs{ -// PemCertificate: invokeFile.Result, -// PemPrivateKey: invokeFile1.Result, +// PemCertificate: pulumi.String(invokeFile.Result), +// PemPrivateKey: pulumi.String(invokeFile1.Result), // }, // }) // if err != nil { diff --git a/sdk/go/gcp/organizations/accessApprovalSettings.go b/sdk/go/gcp/organizations/accessApprovalSettings.go index 6b49abb3b9..defef8c140 100644 --- a/sdk/go/gcp/organizations/accessApprovalSettings.go +++ b/sdk/go/gcp/organizations/accessApprovalSettings.go @@ -122,9 +122,9 @@ import ( // }, nil) // _, err = organizations.NewAccessApprovalSettings(ctx, "organization_access_approval", &organizations.AccessApprovalSettingsArgs{ // OrganizationId: pulumi.String("123456789"), -// ActiveKeyVersion: cryptoKeyVersion.ApplyT(func(cryptoKeyVersion kms.GetKMSCryptoKeyVersionResult) (*string, error) { +// ActiveKeyVersion: pulumi.String(cryptoKeyVersion.ApplyT(func(cryptoKeyVersion kms.GetKMSCryptoKeyVersionResult) (*string, error) { // return &cryptoKeyVersion.Name, nil -// }).(pulumi.StringPtrOutput), +// }).(pulumi.StringPtrOutput)), // EnrolledServices: organizations.AccessApprovalSettingsEnrolledServiceArray{ // &organizations.AccessApprovalSettingsEnrolledServiceArgs{ // CloudProduct: pulumi.String("all"), diff --git a/sdk/go/gcp/osconfig/patchDeployment.go b/sdk/go/gcp/osconfig/patchDeployment.go index b63b40bb2f..d2039457b3 100644 --- a/sdk/go/gcp/osconfig/patchDeployment.go +++ b/sdk/go/gcp/osconfig/patchDeployment.go @@ -334,7 +334,7 @@ import ( // }, // Monthly: &osconfig.PatchDeploymentRecurringScheduleMonthlyArgs{ // WeekDayOfMonth: &osconfig.PatchDeploymentRecurringScheduleMonthlyWeekDayOfMonthArgs{ -// WeekOrdinal: -1, +// WeekOrdinal: int(-1), // DayOfWeek: pulumi.String("TUESDAY"), // DayOffset: pulumi.Int(3), // }, diff --git a/sdk/go/gcp/oslogin/sshPublicKey.go b/sdk/go/gcp/oslogin/sshPublicKey.go index 81f86f9180..229358812d 100644 --- a/sdk/go/gcp/oslogin/sshPublicKey.go +++ b/sdk/go/gcp/oslogin/sshPublicKey.go @@ -50,7 +50,7 @@ import ( // } // _, err = oslogin.NewSshPublicKey(ctx, "cache", &oslogin.SshPublicKeyArgs{ // User: pulumi.String(me.Email), -// Key: invokeFile.Result, +// Key: pulumi.String(invokeFile.Result), // }) // if err != nil { // return err diff --git a/sdk/go/gcp/projects/accessApprovalSettings.go b/sdk/go/gcp/projects/accessApprovalSettings.go index 7aec8df184..095d55f19c 100644 --- a/sdk/go/gcp/projects/accessApprovalSettings.go +++ b/sdk/go/gcp/projects/accessApprovalSettings.go @@ -111,9 +111,9 @@ import ( // }, nil) // _, err = projects.NewAccessApprovalSettings(ctx, "project_access_approval", &projects.AccessApprovalSettingsArgs{ // ProjectId: pulumi.String("my-project-name"), -// ActiveKeyVersion: cryptoKeyVersion.ApplyT(func(cryptoKeyVersion kms.GetKMSCryptoKeyVersionResult) (*string, error) { +// ActiveKeyVersion: pulumi.String(cryptoKeyVersion.ApplyT(func(cryptoKeyVersion kms.GetKMSCryptoKeyVersionResult) (*string, error) { // return &cryptoKeyVersion.Name, nil -// }).(pulumi.StringPtrOutput), +// }).(pulumi.StringPtrOutput)), // EnrolledServices: projects.AccessApprovalSettingsEnrolledServiceArray{ // &projects.AccessApprovalSettingsEnrolledServiceArgs{ // CloudProduct: pulumi.String("all"), diff --git a/sdk/go/gcp/runtimeconfig/variable.go b/sdk/go/gcp/runtimeconfig/variable.go index 6031e8cdb4..c590bc01b2 100644 --- a/sdk/go/gcp/runtimeconfig/variable.go +++ b/sdk/go/gcp/runtimeconfig/variable.go @@ -83,7 +83,7 @@ import ( // _, err = runtimeconfig.NewVariable(ctx, "my-secret", &runtimeconfig.VariableArgs{ // Parent: my_runtime_config.Name, // Name: pulumi.String("secret"), -// Value: invokeFilebase64.Result, +// Value: pulumi.String(invokeFilebase64.Result), // }) // if err != nil { // return err diff --git a/sdk/go/gcp/secretmanager/secretVersion.go b/sdk/go/gcp/secretmanager/secretVersion.go index 70f83aaa46..40ea4a78ac 100644 --- a/sdk/go/gcp/secretmanager/secretVersion.go +++ b/sdk/go/gcp/secretmanager/secretVersion.go @@ -177,7 +177,7 @@ import ( // _, err = secretmanager.NewSecretVersion(ctx, "secret-version-base64", &secretmanager.SecretVersionArgs{ // Secret: secret_basic.ID(), // IsSecretDataBase64: pulumi.Bool(true), -// SecretData: invokeFilebase64.Result, +// SecretData: pulumi.String(invokeFilebase64.Result), // }) // if err != nil { // return err diff --git a/sdk/go/gcp/serviceaccount/getAccount.go b/sdk/go/gcp/serviceaccount/getAccount.go index f3eee4064c..8f2310bce6 100644 --- a/sdk/go/gcp/serviceaccount/getAccount.go +++ b/sdk/go/gcp/serviceaccount/getAccount.go @@ -73,11 +73,11 @@ import ( // Name: pulumi.String("google-application-credentials"), // }, // Data: pulumi.StringMap{ -// "json": std.Base64decodeOutput(ctx, std.Base64decodeOutputArgs{ +// "json": pulumi.String(std.Base64decodeOutput(ctx, std.Base64decodeOutputArgs{ // Input: mykey.PrivateKey, // }, nil).ApplyT(func(invoke std.Base64decodeResult) (*string, error) { // return invoke.Result, nil -// }).(pulumi.StringPtrOutput), +// }).(pulumi.StringPtrOutput)), // }, // }) // if err != nil { diff --git a/sdk/go/gcp/serviceaccount/key.go b/sdk/go/gcp/serviceaccount/key.go index 7769bce178..52bbda21e0 100644 --- a/sdk/go/gcp/serviceaccount/key.go +++ b/sdk/go/gcp/serviceaccount/key.go @@ -129,11 +129,11 @@ import ( // Name: pulumi.String("google-application-credentials"), // }, // Data: pulumi.StringMap{ -// "credentials.json": std.Base64decodeOutput(ctx, std.Base64decodeOutputArgs{ +// "credentials.json": pulumi.String(std.Base64decodeOutput(ctx, std.Base64decodeOutputArgs{ // Input: mykey.PrivateKey, // }, nil).ApplyT(func(invoke std.Base64decodeResult) (*string, error) { // return invoke.Result, nil -// }).(pulumi.StringPtrOutput), +// }).(pulumi.StringPtrOutput)), // }, // }) // if err != nil { diff --git a/sdk/go/gcp/serviceusage/consumerQuotaOverride.go b/sdk/go/gcp/serviceusage/consumerQuotaOverride.go index 289ce06774..a8e3330aee 100644 --- a/sdk/go/gcp/serviceusage/consumerQuotaOverride.go +++ b/sdk/go/gcp/serviceusage/consumerQuotaOverride.go @@ -63,8 +63,8 @@ import ( // _, err = serviceusage.NewConsumerQuotaOverride(ctx, "override", &serviceusage.ConsumerQuotaOverrideArgs{ // Project: myProject.ProjectId, // Service: pulumi.String("servicemanagement.googleapis.com"), -// Metric: invokeUrlencode.Result, -// Limit: invokeUrlencode1.Result, +// Metric: pulumi.String(invokeUrlencode.Result), +// Limit: pulumi.String(invokeUrlencode1.Result), // OverrideValue: pulumi.String("95"), // Force: pulumi.Bool(true), // }) @@ -118,8 +118,8 @@ import ( // }, // Project: myProject.ProjectId, // Service: pulumi.String("compute.googleapis.com"), -// Metric: invokeUrlencode.Result, -// Limit: invokeUrlencode1.Result, +// Metric: pulumi.String(invokeUrlencode.Result), +// Limit: pulumi.String(invokeUrlencode1.Result), // OverrideValue: pulumi.String("8"), // Force: pulumi.Bool(true), // }) @@ -170,8 +170,8 @@ import ( // _, err = serviceusage.NewConsumerQuotaOverride(ctx, "override", &serviceusage.ConsumerQuotaOverrideArgs{ // Project: myProject.ProjectId, // Service: pulumi.String("libraryagent.googleapis.com"), -// Metric: invokeUrlencode.Result, -// Limit: invokeUrlencode1.Result, +// Metric: pulumi.String(invokeUrlencode.Result), +// Limit: pulumi.String(invokeUrlencode1.Result), // OverrideValue: pulumi.String("1"), // Force: pulumi.Bool(true), // Dimensions: pulumi.StringMap{ diff --git a/sdk/go/gcp/sql/user.go b/sdk/go/gcp/sql/user.go index 2c9a81ce85..da7b22ab11 100644 --- a/sdk/go/gcp/sql/user.go +++ b/sdk/go/gcp/sql/user.go @@ -124,7 +124,7 @@ import ( // return err // } // _, err = sql.NewUser(ctx, "iam_service_account_user", &sql.UserArgs{ -// Name: invokeTrimsuffix.Result, +// Name: pulumi.String(invokeTrimsuffix.Result), // Instance: main.Name, // Type: pulumi.String("CLOUD_IAM_SERVICE_ACCOUNT"), // }) diff --git a/sdk/python/pulumi_gcp/_utilities.py b/sdk/python/pulumi_gcp/_utilities.py index c92fd32f28..d14b49ace3 100644 --- a/sdk/python/pulumi_gcp/_utilities.py +++ b/sdk/python/pulumi_gcp/_utilities.py @@ -13,10 +13,12 @@ import sys import typing import warnings +import base64 import pulumi import pulumi.runtime from pulumi.runtime.sync_await import _sync_await +from pulumi.runtime.proto import resource_pb2 from semver import VersionInfo as SemverVersion from parver import Version as PEP440Version diff --git a/sdk/python/pulumi_gcp/accesscontextmanager/access_level.py b/sdk/python/pulumi_gcp/accesscontextmanager/access_level.py index 60f8f39f60..ed10bae9db 100644 --- a/sdk/python/pulumi_gcp/accesscontextmanager/access_level.py +++ b/sdk/python/pulumi_gcp/accesscontextmanager/access_level.py @@ -305,10 +305,10 @@ def __init__(__self__, title="chromeos_no_lock", basic={ "conditions": [{ - "devicePolicy": { - "requireScreenLock": True, - "osConstraints": [{ - "osType": "DESKTOP_CHROME_OS", + "device_policy": { + "require_screen_lock": True, + "os_constraints": [{ + "os_type": "DESKTOP_CHROME_OS", }], }, "regions": [ @@ -389,10 +389,10 @@ def __init__(__self__, title="chromeos_no_lock", basic={ "conditions": [{ - "devicePolicy": { - "requireScreenLock": True, - "osConstraints": [{ - "osType": "DESKTOP_CHROME_OS", + "device_policy": { + "require_screen_lock": True, + "os_constraints": [{ + "os_type": "DESKTOP_CHROME_OS", }], }, "regions": [ diff --git a/sdk/python/pulumi_gcp/accesscontextmanager/access_level_condition.py b/sdk/python/pulumi_gcp/accesscontextmanager/access_level_condition.py index 4a76b995e2..71ea360383 100644 --- a/sdk/python/pulumi_gcp/accesscontextmanager/access_level_condition.py +++ b/sdk/python/pulumi_gcp/accesscontextmanager/access_level_condition.py @@ -462,10 +462,10 @@ def __init__(__self__, title="chromeos_no_lock", basic={ "conditions": [{ - "devicePolicy": { - "requireScreenLock": True, - "osConstraints": [{ - "osType": "DESKTOP_CHROME_OS", + "device_policy": { + "require_screen_lock": True, + "os_constraints": [{ + "os_type": "DESKTOP_CHROME_OS", }], }, "regions": [ @@ -486,11 +486,11 @@ def __init__(__self__, ], negate=False, device_policy={ - "requireScreenLock": False, - "requireAdminApproval": False, - "requireCorpOwned": True, - "osConstraints": [{ - "osType": "DESKTOP_CHROME_OS", + "require_screen_lock": False, + "require_admin_approval": False, + "require_corp_owned": True, + "os_constraints": [{ + "os_type": "DESKTOP_CHROME_OS", }], }, regions=[ @@ -589,10 +589,10 @@ def __init__(__self__, title="chromeos_no_lock", basic={ "conditions": [{ - "devicePolicy": { - "requireScreenLock": True, - "osConstraints": [{ - "osType": "DESKTOP_CHROME_OS", + "device_policy": { + "require_screen_lock": True, + "os_constraints": [{ + "os_type": "DESKTOP_CHROME_OS", }], }, "regions": [ @@ -613,11 +613,11 @@ def __init__(__self__, ], negate=False, device_policy={ - "requireScreenLock": False, - "requireAdminApproval": False, - "requireCorpOwned": True, - "osConstraints": [{ - "osType": "DESKTOP_CHROME_OS", + "require_screen_lock": False, + "require_admin_approval": False, + "require_corp_owned": True, + "os_constraints": [{ + "os_type": "DESKTOP_CHROME_OS", }], }, regions=[ diff --git a/sdk/python/pulumi_gcp/accesscontextmanager/access_levels.py b/sdk/python/pulumi_gcp/accesscontextmanager/access_levels.py index 38a5b097f3..49975da2e4 100644 --- a/sdk/python/pulumi_gcp/accesscontextmanager/access_levels.py +++ b/sdk/python/pulumi_gcp/accesscontextmanager/access_levels.py @@ -145,10 +145,10 @@ def __init__(__self__, "title": "chromeos_no_lock", "basic": { "conditions": [{ - "devicePolicy": { - "requireScreenLock": True, - "osConstraints": [{ - "osType": "DESKTOP_CHROME_OS", + "device_policy": { + "require_screen_lock": True, + "os_constraints": [{ + "os_type": "DESKTOP_CHROME_OS", }], }, "regions": [ @@ -164,10 +164,10 @@ def __init__(__self__, "title": "mac_no_lock", "basic": { "conditions": [{ - "devicePolicy": { - "requireScreenLock": True, - "osConstraints": [{ - "osType": "DESKTOP_MAC", + "device_policy": { + "require_screen_lock": True, + "os_constraints": [{ + "os_type": "DESKTOP_MAC", }], }, "regions": [ @@ -235,10 +235,10 @@ def __init__(__self__, "title": "chromeos_no_lock", "basic": { "conditions": [{ - "devicePolicy": { - "requireScreenLock": True, - "osConstraints": [{ - "osType": "DESKTOP_CHROME_OS", + "device_policy": { + "require_screen_lock": True, + "os_constraints": [{ + "os_type": "DESKTOP_CHROME_OS", }], }, "regions": [ @@ -254,10 +254,10 @@ def __init__(__self__, "title": "mac_no_lock", "basic": { "conditions": [{ - "devicePolicy": { - "requireScreenLock": True, - "osConstraints": [{ - "osType": "DESKTOP_MAC", + "device_policy": { + "require_screen_lock": True, + "os_constraints": [{ + "os_type": "DESKTOP_MAC", }], }, "regions": [ diff --git a/sdk/python/pulumi_gcp/accesscontextmanager/gcp_user_access_binding.py b/sdk/python/pulumi_gcp/accesscontextmanager/gcp_user_access_binding.py index a77e7a8bc8..89cd6abb6d 100644 --- a/sdk/python/pulumi_gcp/accesscontextmanager/gcp_user_access_binding.py +++ b/sdk/python/pulumi_gcp/accesscontextmanager/gcp_user_access_binding.py @@ -196,10 +196,10 @@ def __init__(__self__, title="chromeos_no_lock", basic={ "conditions": [{ - "devicePolicy": { - "requireScreenLock": True, - "osConstraints": [{ - "osType": "DESKTOP_CHROME_OS", + "device_policy": { + "require_screen_lock": True, + "os_constraints": [{ + "os_type": "DESKTOP_CHROME_OS", }], }, "regions": ["US"], @@ -273,10 +273,10 @@ def __init__(__self__, title="chromeos_no_lock", basic={ "conditions": [{ - "devicePolicy": { - "requireScreenLock": True, - "osConstraints": [{ - "osType": "DESKTOP_CHROME_OS", + "device_policy": { + "require_screen_lock": True, + "os_constraints": [{ + "os_type": "DESKTOP_CHROME_OS", }], }, "regions": ["US"], diff --git a/sdk/python/pulumi_gcp/accesscontextmanager/service_perimeter.py b/sdk/python/pulumi_gcp/accesscontextmanager/service_perimeter.py index 7a63a4c58e..a0542c4bf9 100644 --- a/sdk/python/pulumi_gcp/accesscontextmanager/service_perimeter.py +++ b/sdk/python/pulumi_gcp/accesscontextmanager/service_perimeter.py @@ -521,7 +521,7 @@ def __init__(__self__, name=access_policy.name.apply(lambda name: f"accessPolicies/{name}/servicePerimeters/restrict_storage"), title="restrict_storage", status={ - "restrictedServices": ["storage.googleapis.com"], + "restricted_services": ["storage.googleapis.com"], }) access_level = gcp.accesscontextmanager.AccessLevel("access-level", parent=access_policy.name.apply(lambda name: f"accessPolicies/{name}"), @@ -529,10 +529,10 @@ def __init__(__self__, title="chromeos_no_lock", basic={ "conditions": [{ - "devicePolicy": { - "requireScreenLock": False, - "osConstraints": [{ - "osType": "DESKTOP_CHROME_OS", + "device_policy": { + "require_screen_lock": False, + "os_constraints": [{ + "os_type": "DESKTOP_CHROME_OS", }], }, "regions": [ @@ -559,17 +559,17 @@ def __init__(__self__, "name": access_policy.name.apply(lambda name: f"accessPolicies/{name}/servicePerimeters/"), "title": "", "status": { - "restrictedServices": ["storage.googleapis.com"], + "restricted_services": ["storage.googleapis.com"], }, }, { "name": access_policy.name.apply(lambda name: f"accessPolicies/{name}/servicePerimeters/"), "title": "", "status": { - "restrictedServices": ["bigtable.googleapis.com"], - "vpcAccessibleServices": { - "enableRestriction": True, - "allowedServices": ["bigquery.googleapis.com"], + "restricted_services": ["bigtable.googleapis.com"], + "vpc_accessible_services": { + "enable_restriction": True, + "allowed_services": ["bigquery.googleapis.com"], }, }, }, @@ -580,10 +580,10 @@ def __init__(__self__, title="secure_data_exchange", basic={ "conditions": [{ - "devicePolicy": { - "requireScreenLock": False, - "osConstraints": [{ - "osType": "DESKTOP_CHROME_OS", + "device_policy": { + "require_screen_lock": False, + "os_constraints": [{ + "os_type": "DESKTOP_CHROME_OS", }], }, "regions": [ @@ -599,31 +599,31 @@ def __init__(__self__, title="%s", perimeter_type="PERIMETER_TYPE_REGULAR", status={ - "restrictedServices": [ + "restricted_services": [ "bigquery.googleapis.com", "storage.googleapis.com", ], - "accessLevels": [access_level.name], - "vpcAccessibleServices": { - "enableRestriction": True, - "allowedServices": [ + "access_levels": [access_level.name], + "vpc_accessible_services": { + "enable_restriction": True, + "allowed_services": [ "bigquery.googleapis.com", "storage.googleapis.com", ], }, - "ingressPolicies": [{ - "ingressFrom": { + "ingress_policies": [{ + "ingress_from": { "sources": [{ - "accessLevel": test_access_google_access_context_manager_access_level["name"], + "access_level": test_access_google_access_context_manager_access_level["name"], }], - "identityType": "ANY_IDENTITY", + "identity_type": "ANY_IDENTITY", }, - "ingressTo": { + "ingress_to": { "resources": ["*"], "operations": [ { - "serviceName": "bigquery.googleapis.com", - "methodSelectors": [ + "service_name": "bigquery.googleapis.com", + "method_selectors": [ { "method": "BigQueryStorage.ReadRows", }, @@ -636,17 +636,17 @@ def __init__(__self__, ], }, { - "serviceName": "storage.googleapis.com", - "methodSelectors": [{ + "service_name": "storage.googleapis.com", + "method_selectors": [{ "method": "google.storage.objects.create", }], }, ], }, }], - "egressPolicies": [{ - "egressFrom": { - "identityType": "ANY_USER_ACCOUNT", + "egress_policies": [{ + "egress_from": { + "identity_type": "ANY_USER_ACCOUNT", }, }], }) @@ -665,10 +665,10 @@ def __init__(__self__, name=access_policy.name.apply(lambda name: f"accessPolicies/{name}/servicePerimeters/restrict_bigquery_dryrun_storage"), title="restrict_bigquery_dryrun_storage", status={ - "restrictedServices": ["bigquery.googleapis.com"], + "restricted_services": ["bigquery.googleapis.com"], }, spec={ - "restrictedServices": ["storage.googleapis.com"], + "restricted_services": ["storage.googleapis.com"], }, use_explicit_dry_run_spec=True) ``` @@ -778,7 +778,7 @@ def __init__(__self__, name=access_policy.name.apply(lambda name: f"accessPolicies/{name}/servicePerimeters/restrict_storage"), title="restrict_storage", status={ - "restrictedServices": ["storage.googleapis.com"], + "restricted_services": ["storage.googleapis.com"], }) access_level = gcp.accesscontextmanager.AccessLevel("access-level", parent=access_policy.name.apply(lambda name: f"accessPolicies/{name}"), @@ -786,10 +786,10 @@ def __init__(__self__, title="chromeos_no_lock", basic={ "conditions": [{ - "devicePolicy": { - "requireScreenLock": False, - "osConstraints": [{ - "osType": "DESKTOP_CHROME_OS", + "device_policy": { + "require_screen_lock": False, + "os_constraints": [{ + "os_type": "DESKTOP_CHROME_OS", }], }, "regions": [ @@ -816,17 +816,17 @@ def __init__(__self__, "name": access_policy.name.apply(lambda name: f"accessPolicies/{name}/servicePerimeters/"), "title": "", "status": { - "restrictedServices": ["storage.googleapis.com"], + "restricted_services": ["storage.googleapis.com"], }, }, { "name": access_policy.name.apply(lambda name: f"accessPolicies/{name}/servicePerimeters/"), "title": "", "status": { - "restrictedServices": ["bigtable.googleapis.com"], - "vpcAccessibleServices": { - "enableRestriction": True, - "allowedServices": ["bigquery.googleapis.com"], + "restricted_services": ["bigtable.googleapis.com"], + "vpc_accessible_services": { + "enable_restriction": True, + "allowed_services": ["bigquery.googleapis.com"], }, }, }, @@ -837,10 +837,10 @@ def __init__(__self__, title="secure_data_exchange", basic={ "conditions": [{ - "devicePolicy": { - "requireScreenLock": False, - "osConstraints": [{ - "osType": "DESKTOP_CHROME_OS", + "device_policy": { + "require_screen_lock": False, + "os_constraints": [{ + "os_type": "DESKTOP_CHROME_OS", }], }, "regions": [ @@ -856,31 +856,31 @@ def __init__(__self__, title="%s", perimeter_type="PERIMETER_TYPE_REGULAR", status={ - "restrictedServices": [ + "restricted_services": [ "bigquery.googleapis.com", "storage.googleapis.com", ], - "accessLevels": [access_level.name], - "vpcAccessibleServices": { - "enableRestriction": True, - "allowedServices": [ + "access_levels": [access_level.name], + "vpc_accessible_services": { + "enable_restriction": True, + "allowed_services": [ "bigquery.googleapis.com", "storage.googleapis.com", ], }, - "ingressPolicies": [{ - "ingressFrom": { + "ingress_policies": [{ + "ingress_from": { "sources": [{ - "accessLevel": test_access_google_access_context_manager_access_level["name"], + "access_level": test_access_google_access_context_manager_access_level["name"], }], - "identityType": "ANY_IDENTITY", + "identity_type": "ANY_IDENTITY", }, - "ingressTo": { + "ingress_to": { "resources": ["*"], "operations": [ { - "serviceName": "bigquery.googleapis.com", - "methodSelectors": [ + "service_name": "bigquery.googleapis.com", + "method_selectors": [ { "method": "BigQueryStorage.ReadRows", }, @@ -893,17 +893,17 @@ def __init__(__self__, ], }, { - "serviceName": "storage.googleapis.com", - "methodSelectors": [{ + "service_name": "storage.googleapis.com", + "method_selectors": [{ "method": "google.storage.objects.create", }], }, ], }, }], - "egressPolicies": [{ - "egressFrom": { - "identityType": "ANY_USER_ACCOUNT", + "egress_policies": [{ + "egress_from": { + "identity_type": "ANY_USER_ACCOUNT", }, }], }) @@ -922,10 +922,10 @@ def __init__(__self__, name=access_policy.name.apply(lambda name: f"accessPolicies/{name}/servicePerimeters/restrict_bigquery_dryrun_storage"), title="restrict_bigquery_dryrun_storage", status={ - "restrictedServices": ["bigquery.googleapis.com"], + "restricted_services": ["bigquery.googleapis.com"], }, spec={ - "restrictedServices": ["storage.googleapis.com"], + "restricted_services": ["storage.googleapis.com"], }, use_explicit_dry_run_spec=True) ``` diff --git a/sdk/python/pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_resource.py b/sdk/python/pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_resource.py index de9c8abffc..6b8804f24e 100644 --- a/sdk/python/pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_resource.py +++ b/sdk/python/pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_resource.py @@ -161,7 +161,7 @@ def __init__(__self__, name=access_policy.name.apply(lambda name: f"accessPolicies/{name}/servicePerimeters/restrict_all"), title="restrict_all", spec={ - "restrictedServices": ["storage.googleapis.com"], + "restricted_services": ["storage.googleapis.com"], }, use_explicit_dry_run_spec=True) service_perimeter_dry_run_resource = gcp.accesscontextmanager.ServicePerimeterDryRunResource("service-perimeter-dry-run-resource", @@ -236,7 +236,7 @@ def __init__(__self__, name=access_policy.name.apply(lambda name: f"accessPolicies/{name}/servicePerimeters/restrict_all"), title="restrict_all", spec={ - "restrictedServices": ["storage.googleapis.com"], + "restricted_services": ["storage.googleapis.com"], }, use_explicit_dry_run_spec=True) service_perimeter_dry_run_resource = gcp.accesscontextmanager.ServicePerimeterDryRunResource("service-perimeter-dry-run-resource", diff --git a/sdk/python/pulumi_gcp/accesscontextmanager/service_perimeter_resource.py b/sdk/python/pulumi_gcp/accesscontextmanager/service_perimeter_resource.py index a7bdefeeb9..d3d00b83c5 100644 --- a/sdk/python/pulumi_gcp/accesscontextmanager/service_perimeter_resource.py +++ b/sdk/python/pulumi_gcp/accesscontextmanager/service_perimeter_resource.py @@ -161,7 +161,7 @@ def __init__(__self__, name=access_policy.name.apply(lambda name: f"accessPolicies/{name}/servicePerimeters/restrict_all"), title="restrict_all", status={ - "restrictedServices": ["storage.googleapis.com"], + "restricted_services": ["storage.googleapis.com"], }) service_perimeter_resource = gcp.accesscontextmanager.ServicePerimeterResource("service-perimeter-resource", perimeter_name=service_perimeter_resource_service_perimeter.name, @@ -235,7 +235,7 @@ def __init__(__self__, name=access_policy.name.apply(lambda name: f"accessPolicies/{name}/servicePerimeters/restrict_all"), title="restrict_all", status={ - "restrictedServices": ["storage.googleapis.com"], + "restricted_services": ["storage.googleapis.com"], }) service_perimeter_resource = gcp.accesscontextmanager.ServicePerimeterResource("service-perimeter-resource", perimeter_name=service_perimeter_resource_service_perimeter.name, diff --git a/sdk/python/pulumi_gcp/accesscontextmanager/service_perimeters.py b/sdk/python/pulumi_gcp/accesscontextmanager/service_perimeters.py index f4cb6e1b60..95fd5ccec8 100644 --- a/sdk/python/pulumi_gcp/accesscontextmanager/service_perimeters.py +++ b/sdk/python/pulumi_gcp/accesscontextmanager/service_perimeters.py @@ -154,14 +154,14 @@ def __init__(__self__, "name": access_policy.name.apply(lambda name: f"accessPolicies/{name}/servicePerimeters/"), "title": "", "status": { - "restrictedServices": ["storage.googleapis.com"], + "restricted_services": ["storage.googleapis.com"], }, }, { "name": access_policy.name.apply(lambda name: f"accessPolicies/{name}/servicePerimeters/"), "title": "", "status": { - "restrictedServices": ["bigtable.googleapis.com"], + "restricted_services": ["bigtable.googleapis.com"], }, }, ]) @@ -171,10 +171,10 @@ def __init__(__self__, title="chromeos_no_lock", basic={ "conditions": [{ - "devicePolicy": { - "requireScreenLock": False, - "osConstraints": [{ - "osType": "DESKTOP_CHROME_OS", + "device_policy": { + "require_screen_lock": False, + "os_constraints": [{ + "os_type": "DESKTOP_CHROME_OS", }], }, "regions": [ @@ -249,14 +249,14 @@ def __init__(__self__, "name": access_policy.name.apply(lambda name: f"accessPolicies/{name}/servicePerimeters/"), "title": "", "status": { - "restrictedServices": ["storage.googleapis.com"], + "restricted_services": ["storage.googleapis.com"], }, }, { "name": access_policy.name.apply(lambda name: f"accessPolicies/{name}/servicePerimeters/"), "title": "", "status": { - "restrictedServices": ["bigtable.googleapis.com"], + "restricted_services": ["bigtable.googleapis.com"], }, }, ]) @@ -266,10 +266,10 @@ def __init__(__self__, title="chromeos_no_lock", basic={ "conditions": [{ - "devicePolicy": { - "requireScreenLock": False, - "osConstraints": [{ - "osType": "DESKTOP_CHROME_OS", + "device_policy": { + "require_screen_lock": False, + "os_constraints": [{ + "os_type": "DESKTOP_CHROME_OS", }], }, "regions": [ diff --git a/sdk/python/pulumi_gcp/alloydb/cluster.py b/sdk/python/pulumi_gcp/alloydb/cluster.py index 2e7f6cf8db..4e88b1503d 100644 --- a/sdk/python/pulumi_gcp/alloydb/cluster.py +++ b/sdk/python/pulumi_gcp/alloydb/cluster.py @@ -1081,22 +1081,22 @@ def __init__(__self__, }, continuous_backup_config={ "enabled": True, - "recoveryWindowDays": 14, + "recovery_window_days": 14, }, automated_backup_policy={ "location": "us-central1", - "backupWindow": "1800s", + "backup_window": "1800s", "enabled": True, - "weeklySchedule": { - "daysOfWeeks": ["MONDAY"], - "startTimes": [{ + "weekly_schedule": { + "days_of_weeks": ["MONDAY"], + "start_times": [{ "hours": 23, "minutes": 0, "seconds": 0, "nanos": 0, }], }, - "quantityBasedRetention": { + "quantity_based_retention": { "count": 1, }, "labels": { @@ -1137,7 +1137,7 @@ def __init__(__self__, instance_id="alloydb-instance", instance_type="PRIMARY", machine_config={ - "cpuCount": 2, + "cpu_count": 2, }, opts = pulumi.ResourceOptions(depends_on=[vpc_connection])) source_backup = gcp.alloydb.Backup("source", @@ -1152,7 +1152,7 @@ def __init__(__self__, "network": default.id, }, restore_backup_source={ - "backupName": source_backup.name, + "backup_name": source_backup.name, }) restored_via_pitr = gcp.alloydb.Cluster("restored_via_pitr", cluster_id="alloydb-pitr-restored", @@ -1160,7 +1160,7 @@ def __init__(__self__, network=default.id, restore_continuous_backup_source={ "cluster": source.name, - "pointInTime": "2023-08-03T19:19:00.094Z", + "point_in_time": "2023-08-03T19:19:00.094Z", }) project = gcp.organizations.get_project() ``` @@ -1190,7 +1190,7 @@ def __init__(__self__, instance_id="alloydb-primary-instance", instance_type="PRIMARY", machine_config={ - "cpuCount": 2, + "cpu_count": 2, }, opts = pulumi.ResourceOptions(depends_on=[vpc_connection])) secondary = gcp.alloydb.Cluster("secondary", @@ -1202,7 +1202,7 @@ def __init__(__self__, "enabled": False, }, secondary_config={ - "primaryClusterName": primary.name, + "primary_cluster_name": primary.name, }, opts = pulumi.ResourceOptions(depends_on=[primary_instance])) project = gcp.organizations.get_project() @@ -1335,22 +1335,22 @@ def __init__(__self__, }, continuous_backup_config={ "enabled": True, - "recoveryWindowDays": 14, + "recovery_window_days": 14, }, automated_backup_policy={ "location": "us-central1", - "backupWindow": "1800s", + "backup_window": "1800s", "enabled": True, - "weeklySchedule": { - "daysOfWeeks": ["MONDAY"], - "startTimes": [{ + "weekly_schedule": { + "days_of_weeks": ["MONDAY"], + "start_times": [{ "hours": 23, "minutes": 0, "seconds": 0, "nanos": 0, }], }, - "quantityBasedRetention": { + "quantity_based_retention": { "count": 1, }, "labels": { @@ -1391,7 +1391,7 @@ def __init__(__self__, instance_id="alloydb-instance", instance_type="PRIMARY", machine_config={ - "cpuCount": 2, + "cpu_count": 2, }, opts = pulumi.ResourceOptions(depends_on=[vpc_connection])) source_backup = gcp.alloydb.Backup("source", @@ -1406,7 +1406,7 @@ def __init__(__self__, "network": default.id, }, restore_backup_source={ - "backupName": source_backup.name, + "backup_name": source_backup.name, }) restored_via_pitr = gcp.alloydb.Cluster("restored_via_pitr", cluster_id="alloydb-pitr-restored", @@ -1414,7 +1414,7 @@ def __init__(__self__, network=default.id, restore_continuous_backup_source={ "cluster": source.name, - "pointInTime": "2023-08-03T19:19:00.094Z", + "point_in_time": "2023-08-03T19:19:00.094Z", }) project = gcp.organizations.get_project() ``` @@ -1444,7 +1444,7 @@ def __init__(__self__, instance_id="alloydb-primary-instance", instance_type="PRIMARY", machine_config={ - "cpuCount": 2, + "cpu_count": 2, }, opts = pulumi.ResourceOptions(depends_on=[vpc_connection])) secondary = gcp.alloydb.Cluster("secondary", @@ -1456,7 +1456,7 @@ def __init__(__self__, "enabled": False, }, secondary_config={ - "primaryClusterName": primary.name, + "primary_cluster_name": primary.name, }, opts = pulumi.ResourceOptions(depends_on=[primary_instance])) project = gcp.organizations.get_project() diff --git a/sdk/python/pulumi_gcp/alloydb/instance.py b/sdk/python/pulumi_gcp/alloydb/instance.py index abf29d89d0..68bb8f7d5c 100644 --- a/sdk/python/pulumi_gcp/alloydb/instance.py +++ b/sdk/python/pulumi_gcp/alloydb/instance.py @@ -816,7 +816,7 @@ def __init__(__self__, instance_id="alloydb-instance", instance_type="PRIMARY", machine_config={ - "cpuCount": 2, + "cpu_count": 2, }, opts = pulumi.ResourceOptions(depends_on=[vpc_connection])) project = gcp.organizations.get_project() @@ -847,7 +847,7 @@ def __init__(__self__, instance_id="alloydb-primary-instance", instance_type="PRIMARY", machine_config={ - "cpuCount": 2, + "cpu_count": 2, }, opts = pulumi.ResourceOptions(depends_on=[vpc_connection])) secondary = gcp.alloydb.Cluster("secondary", @@ -859,7 +859,7 @@ def __init__(__self__, "enabled": False, }, secondary_config={ - "primaryClusterName": primary.name, + "primary_cluster_name": primary.name, }, deletion_policy="FORCE", opts = pulumi.ResourceOptions(depends_on=[primary_instance])) @@ -868,7 +868,7 @@ def __init__(__self__, instance_id="alloydb-secondary-instance", instance_type=secondary.cluster_type, machine_config={ - "cpuCount": 2, + "cpu_count": 2, }, opts = pulumi.ResourceOptions(depends_on=[vpc_connection])) project = gcp.organizations.get_project() @@ -975,7 +975,7 @@ def __init__(__self__, instance_id="alloydb-instance", instance_type="PRIMARY", machine_config={ - "cpuCount": 2, + "cpu_count": 2, }, opts = pulumi.ResourceOptions(depends_on=[vpc_connection])) project = gcp.organizations.get_project() @@ -1006,7 +1006,7 @@ def __init__(__self__, instance_id="alloydb-primary-instance", instance_type="PRIMARY", machine_config={ - "cpuCount": 2, + "cpu_count": 2, }, opts = pulumi.ResourceOptions(depends_on=[vpc_connection])) secondary = gcp.alloydb.Cluster("secondary", @@ -1018,7 +1018,7 @@ def __init__(__self__, "enabled": False, }, secondary_config={ - "primaryClusterName": primary.name, + "primary_cluster_name": primary.name, }, deletion_policy="FORCE", opts = pulumi.ResourceOptions(depends_on=[primary_instance])) @@ -1027,7 +1027,7 @@ def __init__(__self__, instance_id="alloydb-secondary-instance", instance_type=secondary.cluster_type, machine_config={ - "cpuCount": 2, + "cpu_count": 2, }, opts = pulumi.ResourceOptions(depends_on=[vpc_connection])) project = gcp.organizations.get_project() diff --git a/sdk/python/pulumi_gcp/apigee/addons_config.py b/sdk/python/pulumi_gcp/apigee/addons_config.py index 02b41e5116..4adb1e383c 100644 --- a/sdk/python/pulumi_gcp/apigee/addons_config.py +++ b/sdk/python/pulumi_gcp/apigee/addons_config.py @@ -141,10 +141,10 @@ def __init__(__self__, test_organization = gcp.apigee.AddonsConfig("test_organization", org="test_organization", addons_config={ - "apiSecurityConfig": { + "api_security_config": { "enabled": True, }, - "monetizationConfig": { + "monetization_config": { "enabled": True, }, }) @@ -192,19 +192,19 @@ def __init__(__self__, test_organization = gcp.apigee.AddonsConfig("test_organization", org=org.name, addons_config={ - "integrationConfig": { + "integration_config": { "enabled": True, }, - "apiSecurityConfig": { + "api_security_config": { "enabled": True, }, - "connectorsPlatformConfig": { + "connectors_platform_config": { "enabled": True, }, - "monetizationConfig": { + "monetization_config": { "enabled": True, }, - "advancedApiOpsConfig": { + "advanced_api_ops_config": { "enabled": True, }, }) @@ -263,10 +263,10 @@ def __init__(__self__, test_organization = gcp.apigee.AddonsConfig("test_organization", org="test_organization", addons_config={ - "apiSecurityConfig": { + "api_security_config": { "enabled": True, }, - "monetizationConfig": { + "monetization_config": { "enabled": True, }, }) @@ -314,19 +314,19 @@ def __init__(__self__, test_organization = gcp.apigee.AddonsConfig("test_organization", org=org.name, addons_config={ - "integrationConfig": { + "integration_config": { "enabled": True, }, - "apiSecurityConfig": { + "api_security_config": { "enabled": True, }, - "connectorsPlatformConfig": { + "connectors_platform_config": { "enabled": True, }, - "monetizationConfig": { + "monetization_config": { "enabled": True, }, - "advancedApiOpsConfig": { + "advanced_api_ops_config": { "enabled": True, }, }) diff --git a/sdk/python/pulumi_gcp/apigee/keystores_aliases_self_signed_cert.py b/sdk/python/pulumi_gcp/apigee/keystores_aliases_self_signed_cert.py index 9d7354fff6..72ee62dc7b 100644 --- a/sdk/python/pulumi_gcp/apigee/keystores_aliases_self_signed_cert.py +++ b/sdk/python/pulumi_gcp/apigee/keystores_aliases_self_signed_cert.py @@ -451,11 +451,11 @@ def __init__(__self__, sig_alg="SHA512withRSA", cert_validity_in_days=4, subject={ - "commonName": "selfsigned_example", - "countryCode": "US", + "common_name": "selfsigned_example", + "country_code": "US", "locality": "TX", "org": "CCE", - "orgUnit": "PSO", + "org_unit": "PSO", }) ``` @@ -572,11 +572,11 @@ def __init__(__self__, sig_alg="SHA512withRSA", cert_validity_in_days=4, subject={ - "commonName": "selfsigned_example", - "countryCode": "US", + "common_name": "selfsigned_example", + "country_code": "US", "locality": "TX", "org": "CCE", - "orgUnit": "PSO", + "org_unit": "PSO", }) ``` 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 b62cbfe775..34f8c91c34 100644 --- a/sdk/python/pulumi_gcp/appengine/application_url_dispatch_rules.py +++ b/sdk/python/pulumi_gcp/appengine/application_url_dispatch_rules.py @@ -132,7 +132,7 @@ def __init__(__self__, }, deployment={ "zip": { - "sourceUrl": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), + "source_url": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), }, }, env_variables={ @@ -207,7 +207,7 @@ def __init__(__self__, }, deployment={ "zip": { - "sourceUrl": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), + "source_url": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), }, }, env_variables={ diff --git a/sdk/python/pulumi_gcp/appengine/domain_mapping.py b/sdk/python/pulumi_gcp/appengine/domain_mapping.py index 766328eb04..5ab7e458c5 100644 --- a/sdk/python/pulumi_gcp/appengine/domain_mapping.py +++ b/sdk/python/pulumi_gcp/appengine/domain_mapping.py @@ -259,7 +259,7 @@ def __init__(__self__, domain_mapping = gcp.appengine.DomainMapping("domain_mapping", domain_name="verified-domain.com", ssl_settings={ - "sslManagementType": "AUTOMATIC", + "ssl_management_type": "AUTOMATIC", }) ``` @@ -328,7 +328,7 @@ def __init__(__self__, domain_mapping = gcp.appengine.DomainMapping("domain_mapping", domain_name="verified-domain.com", ssl_settings={ - "sslManagementType": "AUTOMATIC", + "ssl_management_type": "AUTOMATIC", }) ``` diff --git a/sdk/python/pulumi_gcp/appengine/engine_split_traffic.py b/sdk/python/pulumi_gcp/appengine/engine_split_traffic.py index b9723e98ba..93d7223a02 100644 --- a/sdk/python/pulumi_gcp/appengine/engine_split_traffic.py +++ b/sdk/python/pulumi_gcp/appengine/engine_split_traffic.py @@ -198,7 +198,7 @@ def __init__(__self__, }, deployment={ "zip": { - "sourceUrl": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), + "source_url": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), }, }, env_variables={ @@ -214,7 +214,7 @@ def __init__(__self__, }, deployment={ "zip": { - "sourceUrl": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), + "source_url": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), }, }, env_variables={ @@ -224,10 +224,10 @@ def __init__(__self__, service=liveapp_v2.service, migrate_traffic=False, split={ - "shardBy": "IP", + "shard_by": "IP", "allocations": pulumi.Output.all(liveapp_v1.version_id, liveapp_v2.version_id).apply(lambda liveappV1Version_id, liveappV2Version_id: { - liveapp_v1_version_id: 0.75, - liveapp_v2_version_id: 0.25, + "": 0.75, + "": 0.25, }), }) ``` @@ -301,7 +301,7 @@ def __init__(__self__, }, deployment={ "zip": { - "sourceUrl": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), + "source_url": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), }, }, env_variables={ @@ -317,7 +317,7 @@ def __init__(__self__, }, deployment={ "zip": { - "sourceUrl": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), + "source_url": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), }, }, env_variables={ @@ -327,10 +327,10 @@ def __init__(__self__, service=liveapp_v2.service, migrate_traffic=False, split={ - "shardBy": "IP", + "shard_by": "IP", "allocations": pulumi.Output.all(liveapp_v1.version_id, liveapp_v2.version_id).apply(lambda liveappV1Version_id, liveappV2Version_id: { - liveapp_v1_version_id: 0.75, - liveapp_v2_version_id: 0.25, + "": 0.75, + "": 0.25, }), }) ``` diff --git a/sdk/python/pulumi_gcp/appengine/flexible_app_version.py b/sdk/python/pulumi_gcp/appengine/flexible_app_version.py index cf7bcd81fb..fd4e74f2e2 100644 --- a/sdk/python/pulumi_gcp/appengine/flexible_app_version.py +++ b/sdk/python/pulumi_gcp/appengine/flexible_app_version.py @@ -1151,7 +1151,7 @@ def __init__(__self__, }, deployment={ "zip": { - "sourceUrl": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), + "source_url": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), }, }, liveness_check={ @@ -1164,19 +1164,19 @@ def __init__(__self__, "port": "8080", }, handlers=[{ - "urlRegex": ".*\\\\/my-path\\\\/*", - "securityLevel": "SECURE_ALWAYS", + "url_regex": ".*\\\\/my-path\\\\/*", + "security_level": "SECURE_ALWAYS", "login": "LOGIN_REQUIRED", - "authFailAction": "AUTH_FAIL_ACTION_REDIRECT", - "staticFiles": { + "auth_fail_action": "AUTH_FAIL_ACTION_REDIRECT", + "static_files": { "path": "my-other-path", - "uploadPathRegex": ".*\\\\/my-path\\\\/*", + "upload_path_regex": ".*\\\\/my-path\\\\/*", }, }], automatic_scaling={ - "coolDownPeriod": "120s", - "cpuUtilization": { - "targetUtilization": 0.5, + "cool_down_period": "120s", + "cpu_utilization": { + "target_utilization": 0.5, }, }, noop_on_destroy=True, @@ -1327,7 +1327,7 @@ def __init__(__self__, }, deployment={ "zip": { - "sourceUrl": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), + "source_url": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), }, }, liveness_check={ @@ -1340,19 +1340,19 @@ def __init__(__self__, "port": "8080", }, handlers=[{ - "urlRegex": ".*\\\\/my-path\\\\/*", - "securityLevel": "SECURE_ALWAYS", + "url_regex": ".*\\\\/my-path\\\\/*", + "security_level": "SECURE_ALWAYS", "login": "LOGIN_REQUIRED", - "authFailAction": "AUTH_FAIL_ACTION_REDIRECT", - "staticFiles": { + "auth_fail_action": "AUTH_FAIL_ACTION_REDIRECT", + "static_files": { "path": "my-other-path", - "uploadPathRegex": ".*\\\\/my-path\\\\/*", + "upload_path_regex": ".*\\\\/my-path\\\\/*", }, }], automatic_scaling={ - "coolDownPeriod": "120s", - "cpuUtilization": { - "targetUtilization": 0.5, + "cool_down_period": "120s", + "cpu_utilization": { + "target_utilization": 0.5, }, }, noop_on_destroy=True, diff --git a/sdk/python/pulumi_gcp/appengine/service_network_settings.py b/sdk/python/pulumi_gcp/appengine/service_network_settings.py index d2dd8e7cfc..97a9b28510 100644 --- a/sdk/python/pulumi_gcp/appengine/service_network_settings.py +++ b/sdk/python/pulumi_gcp/appengine/service_network_settings.py @@ -165,7 +165,7 @@ def __init__(__self__, }, deployment={ "zip": { - "sourceUrl": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), + "source_url": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), }, }, env_variables={ @@ -174,7 +174,7 @@ def __init__(__self__, internalapp_service_network_settings = gcp.appengine.ServiceNetworkSettings("internalapp", service=internalapp.service, network_settings={ - "ingressTrafficAllowed": "INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY", + "ingress_traffic_allowed": "INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY", }) ``` @@ -246,7 +246,7 @@ def __init__(__self__, }, deployment={ "zip": { - "sourceUrl": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), + "source_url": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), }, }, env_variables={ @@ -255,7 +255,7 @@ def __init__(__self__, internalapp_service_network_settings = gcp.appengine.ServiceNetworkSettings("internalapp", service=internalapp.service, network_settings={ - "ingressTrafficAllowed": "INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY", + "ingress_traffic_allowed": "INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY", }) ``` diff --git a/sdk/python/pulumi_gcp/appengine/standard_app_version.py b/sdk/python/pulumi_gcp/appengine/standard_app_version.py index 8f185903d1..29c969df52 100644 --- a/sdk/python/pulumi_gcp/appengine/standard_app_version.py +++ b/sdk/python/pulumi_gcp/appengine/standard_app_version.py @@ -840,23 +840,23 @@ def __init__(__self__, }, deployment={ "zip": { - "sourceUrl": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), + "source_url": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), }, }, env_variables={ "port": "8080", }, automatic_scaling={ - "maxConcurrentRequests": 10, - "minIdleInstances": 1, - "maxIdleInstances": 3, - "minPendingLatency": "1s", - "maxPendingLatency": "5s", - "standardSchedulerSettings": { - "targetCpuUtilization": 0.5, - "targetThroughputUtilization": 0.75, - "minInstances": 2, - "maxInstances": 10, + "max_concurrent_requests": 10, + "min_idle_instances": 1, + "max_idle_instances": 3, + "min_pending_latency": "1s", + "max_pending_latency": "5s", + "standard_scheduler_settings": { + "target_cpu_utilization": 0.5, + "target_throughput_utilization": 0.75, + "min_instances": 2, + "max_instances": 10, }, }, delete_service_on_destroy=True, @@ -871,14 +871,14 @@ def __init__(__self__, }, deployment={ "zip": { - "sourceUrl": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), + "source_url": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), }, }, env_variables={ "port": "8080", }, basic_scaling={ - "maxInstances": 5, + "max_instances": 5, }, noop_on_destroy=True, service_account=custom_service_account.email) @@ -998,23 +998,23 @@ def __init__(__self__, }, deployment={ "zip": { - "sourceUrl": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), + "source_url": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), }, }, env_variables={ "port": "8080", }, automatic_scaling={ - "maxConcurrentRequests": 10, - "minIdleInstances": 1, - "maxIdleInstances": 3, - "minPendingLatency": "1s", - "maxPendingLatency": "5s", - "standardSchedulerSettings": { - "targetCpuUtilization": 0.5, - "targetThroughputUtilization": 0.75, - "minInstances": 2, - "maxInstances": 10, + "max_concurrent_requests": 10, + "min_idle_instances": 1, + "max_idle_instances": 3, + "min_pending_latency": "1s", + "max_pending_latency": "5s", + "standard_scheduler_settings": { + "target_cpu_utilization": 0.5, + "target_throughput_utilization": 0.75, + "min_instances": 2, + "max_instances": 10, }, }, delete_service_on_destroy=True, @@ -1029,14 +1029,14 @@ def __init__(__self__, }, deployment={ "zip": { - "sourceUrl": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), + "source_url": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), }, }, env_variables={ "port": "8080", }, basic_scaling={ - "maxInstances": 5, + "max_instances": 5, }, noop_on_destroy=True, service_account=custom_service_account.email) diff --git a/sdk/python/pulumi_gcp/apphub/application.py b/sdk/python/pulumi_gcp/apphub/application.py index e0749adf58..ebe30f9901 100644 --- a/sdk/python/pulumi_gcp/apphub/application.py +++ b/sdk/python/pulumi_gcp/apphub/application.py @@ -395,16 +395,16 @@ def __init__(__self__, "criticality": { "type": "MISSION_CRITICAL", }, - "businessOwners": [{ - "displayName": "Alice", + "business_owners": [{ + "display_name": "Alice", "email": "alice@google.com", }], - "developerOwners": [{ - "displayName": "Bob", + "developer_owners": [{ + "display_name": "Bob", "email": "bob@google.com", }], - "operatorOwners": [{ - "displayName": "Charlie", + "operator_owners": [{ + "display_name": "Charlie", "email": "charlie@google.com", }], }) @@ -489,16 +489,16 @@ def __init__(__self__, "criticality": { "type": "MISSION_CRITICAL", }, - "businessOwners": [{ - "displayName": "Alice", + "business_owners": [{ + "display_name": "Alice", "email": "alice@google.com", }], - "developerOwners": [{ - "displayName": "Bob", + "developer_owners": [{ + "display_name": "Bob", "email": "bob@google.com", }], - "operatorOwners": [{ - "displayName": "Charlie", + "operator_owners": [{ + "display_name": "Charlie", "email": "charlie@google.com", }], }) diff --git a/sdk/python/pulumi_gcp/apphub/service.py b/sdk/python/pulumi_gcp/apphub/service.py index cdfcffa803..b36ac3609b 100644 --- a/sdk/python/pulumi_gcp/apphub/service.py +++ b/sdk/python/pulumi_gcp/apphub/service.py @@ -607,16 +607,16 @@ def __init__(__self__, "criticality": { "type": "MISSION_CRITICAL", }, - "businessOwners": [{ - "displayName": "Alice", + "business_owners": [{ + "display_name": "Alice", "email": "alice@google.com", }], - "developerOwners": [{ - "displayName": "Bob", + "developer_owners": [{ + "display_name": "Bob", "email": "bob@google.com", }], - "operatorOwners": [{ - "displayName": "Charlie", + "operator_owners": [{ + "display_name": "Charlie", "email": "charlie@google.com", }], }) @@ -835,16 +835,16 @@ def __init__(__self__, "criticality": { "type": "MISSION_CRITICAL", }, - "businessOwners": [{ - "displayName": "Alice", + "business_owners": [{ + "display_name": "Alice", "email": "alice@google.com", }], - "developerOwners": [{ - "displayName": "Bob", + "developer_owners": [{ + "display_name": "Bob", "email": "bob@google.com", }], - "operatorOwners": [{ - "displayName": "Charlie", + "operator_owners": [{ + "display_name": "Charlie", "email": "charlie@google.com", }], }) diff --git a/sdk/python/pulumi_gcp/applicationintegration/auth_config.py b/sdk/python/pulumi_gcp/applicationintegration/auth_config.py index 6f54802fdb..3736cdd0c7 100644 --- a/sdk/python/pulumi_gcp/applicationintegration/auth_config.py +++ b/sdk/python/pulumi_gcp/applicationintegration/auth_config.py @@ -579,8 +579,8 @@ def __init__(__self__, display_name="test-authconfig", description="Test auth config created via terraform", decrypted_credential={ - "credentialType": "USERNAME_AND_PASSWORD", - "usernameAndPassword": { + "credential_type": "USERNAME_AND_PASSWORD", + "username_and_password": { "username": "test-username", "password": "test-password", }, @@ -651,8 +651,8 @@ def __init__(__self__, display_name="test-authconfig", description="Test auth config created via terraform", decrypted_credential={ - "credentialType": "USERNAME_AND_PASSWORD", - "usernameAndPassword": { + "credential_type": "USERNAME_AND_PASSWORD", + "username_and_password": { "username": "test-username", "password": "test-password", }, diff --git a/sdk/python/pulumi_gcp/applicationintegration/client.py b/sdk/python/pulumi_gcp/applicationintegration/client.py index ff07de49f6..f070815903 100644 --- a/sdk/python/pulumi_gcp/applicationintegration/client.py +++ b/sdk/python/pulumi_gcp/applicationintegration/client.py @@ -373,11 +373,11 @@ def __init__(__self__, create_sample_integrations=True, run_as_service_account=service_account.email, cloud_kms_config={ - "kmsLocation": "us-east1", - "kmsRing": keyring.id, + "kms_location": "us-east1", + "kms_ring": keyring.id, "key": cryptokey.id, - "keyVersion": test_key.id, - "kmsProjectId": test_project.project_id, + "key_version": test_key.id, + "kms_project_id": test_project.project_id, }) ``` @@ -475,11 +475,11 @@ def __init__(__self__, create_sample_integrations=True, run_as_service_account=service_account.email, cloud_kms_config={ - "kmsLocation": "us-east1", - "kmsRing": keyring.id, + "kms_location": "us-east1", + "kms_ring": keyring.id, "key": cryptokey.id, - "keyVersion": test_key.id, - "kmsProjectId": test_project.project_id, + "key_version": test_key.id, + "kms_project_id": test_project.project_id, }) ``` diff --git a/sdk/python/pulumi_gcp/artifactregistry/repository.py b/sdk/python/pulumi_gcp/artifactregistry/repository.py index e4f629aeef..9ceb0e0ad6 100644 --- a/sdk/python/pulumi_gcp/artifactregistry/repository.py +++ b/sdk/python/pulumi_gcp/artifactregistry/repository.py @@ -743,7 +743,7 @@ def __init__(__self__, description="example docker repository", format="DOCKER", docker_config={ - "immutableTags": True, + "immutable_tags": True, }) ``` ### Artifact Registry Repository Cmek @@ -788,7 +788,7 @@ def __init__(__self__, format="DOCKER", mode="VIRTUAL_REPOSITORY", virtual_repository_config={ - "upstreamPolicies": [ + "upstream_policies": [ { "id": "my-repository-upstream-1", "repository": my_repo_upstream_1.id, @@ -816,8 +816,8 @@ def __init__(__self__, mode="REMOTE_REPOSITORY", remote_repository_config={ "description": "docker hub", - "dockerRepository": { - "publicRepository": "DOCKER_HUB", + "docker_repository": { + "public_repository": "DOCKER_HUB", }, }) ``` @@ -835,10 +835,10 @@ def __init__(__self__, mode="REMOTE_REPOSITORY", remote_repository_config={ "description": "Debian buster remote repository", - "aptRepository": { - "publicRepository": { - "repositoryBase": "DEBIAN", - "repositoryPath": "debian/dists/buster", + "apt_repository": { + "public_repository": { + "repository_base": "DEBIAN", + "repository_path": "debian/dists/buster", }, }, }) @@ -857,10 +857,10 @@ def __init__(__self__, mode="REMOTE_REPOSITORY", remote_repository_config={ "description": "Rocky 9 remote repository", - "yumRepository": { - "publicRepository": { - "repositoryBase": "ROCKY", - "repositoryPath": "pub/rocky/9/BaseOS/x86_64/os", + "yum_repository": { + "public_repository": { + "repository_base": "ROCKY", + "repository_path": "pub/rocky/9/BaseOS/x86_64/os", }, }, }) @@ -882,21 +882,21 @@ def __init__(__self__, "id": "delete-prerelease", "action": "DELETE", "condition": { - "tagState": "TAGGED", - "tagPrefixes": [ + "tag_state": "TAGGED", + "tag_prefixes": [ "alpha", "v0", ], - "olderThan": "2592000s", + "older_than": "2592000s", }, }, { "id": "keep-tagged-release", "action": "KEEP", "condition": { - "tagState": "TAGGED", - "tagPrefixes": ["release"], - "packageNamePrefixes": [ + "tag_state": "TAGGED", + "tag_prefixes": ["release"], + "package_name_prefixes": [ "webapp", "mobile", ], @@ -905,13 +905,13 @@ def __init__(__self__, { "id": "keep-minimum-versions", "action": "KEEP", - "mostRecentVersions": { - "packageNamePrefixes": [ + "most_recent_versions": { + "package_name_prefixes": [ "webapp", "mobile", "sandbox", ], - "keepCount": 5, + "keep_count": 5, }, }, ]) @@ -943,14 +943,14 @@ def __init__(__self__, mode="REMOTE_REPOSITORY", remote_repository_config={ "description": "docker hub with custom credentials", - "disableUpstreamValidation": True, - "dockerRepository": { - "publicRepository": "DOCKER_HUB", + "disable_upstream_validation": True, + "docker_repository": { + "public_repository": "DOCKER_HUB", }, - "upstreamCredentials": { - "usernamePasswordCredentials": { + "upstream_credentials": { + "username_password_credentials": { "username": "remote-username", - "passwordSecretVersion": example_remote_secret_version.name, + "password_secret_version": example_remote_secret_version.name, }, }, }) @@ -982,16 +982,16 @@ def __init__(__self__, mode="REMOTE_REPOSITORY", remote_repository_config={ "description": "custom docker remote with credentials", - "disableUpstreamValidation": True, - "dockerRepository": { - "customRepository": { + "disable_upstream_validation": True, + "docker_repository": { + "custom_repository": { "uri": "https://registry-1.docker.io", }, }, - "upstreamCredentials": { - "usernamePasswordCredentials": { + "upstream_credentials": { + "username_password_credentials": { "username": "remote-username", - "passwordSecretVersion": example_remote_secret_version.name, + "password_secret_version": example_remote_secret_version.name, }, }, }) @@ -1023,16 +1023,16 @@ def __init__(__self__, mode="REMOTE_REPOSITORY", remote_repository_config={ "description": "custom maven remote with credentials", - "disableUpstreamValidation": True, - "mavenRepository": { - "customRepository": { + "disable_upstream_validation": True, + "maven_repository": { + "custom_repository": { "uri": "https://my.maven.registry", }, }, - "upstreamCredentials": { - "usernamePasswordCredentials": { + "upstream_credentials": { + "username_password_credentials": { "username": "remote-username", - "passwordSecretVersion": example_remote_secret_version.name, + "password_secret_version": example_remote_secret_version.name, }, }, }) @@ -1064,16 +1064,16 @@ def __init__(__self__, mode="REMOTE_REPOSITORY", remote_repository_config={ "description": "custom npm with credentials", - "disableUpstreamValidation": True, - "npmRepository": { - "customRepository": { + "disable_upstream_validation": True, + "npm_repository": { + "custom_repository": { "uri": "https://my.npm.registry", }, }, - "upstreamCredentials": { - "usernamePasswordCredentials": { + "upstream_credentials": { + "username_password_credentials": { "username": "remote-username", - "passwordSecretVersion": example_remote_secret_version.name, + "password_secret_version": example_remote_secret_version.name, }, }, }) @@ -1105,16 +1105,16 @@ def __init__(__self__, mode="REMOTE_REPOSITORY", remote_repository_config={ "description": "custom npm with credentials", - "disableUpstreamValidation": True, - "pythonRepository": { - "customRepository": { + "disable_upstream_validation": True, + "python_repository": { + "custom_repository": { "uri": "https://my.python.registry", }, }, - "upstreamCredentials": { - "usernamePasswordCredentials": { + "upstream_credentials": { + "username_password_credentials": { "username": "remote-username", - "passwordSecretVersion": example_remote_secret_version.name, + "password_secret_version": example_remote_secret_version.name, }, }, }) @@ -1239,7 +1239,7 @@ def __init__(__self__, description="example docker repository", format="DOCKER", docker_config={ - "immutableTags": True, + "immutable_tags": True, }) ``` ### Artifact Registry Repository Cmek @@ -1284,7 +1284,7 @@ def __init__(__self__, format="DOCKER", mode="VIRTUAL_REPOSITORY", virtual_repository_config={ - "upstreamPolicies": [ + "upstream_policies": [ { "id": "my-repository-upstream-1", "repository": my_repo_upstream_1.id, @@ -1312,8 +1312,8 @@ def __init__(__self__, mode="REMOTE_REPOSITORY", remote_repository_config={ "description": "docker hub", - "dockerRepository": { - "publicRepository": "DOCKER_HUB", + "docker_repository": { + "public_repository": "DOCKER_HUB", }, }) ``` @@ -1331,10 +1331,10 @@ def __init__(__self__, mode="REMOTE_REPOSITORY", remote_repository_config={ "description": "Debian buster remote repository", - "aptRepository": { - "publicRepository": { - "repositoryBase": "DEBIAN", - "repositoryPath": "debian/dists/buster", + "apt_repository": { + "public_repository": { + "repository_base": "DEBIAN", + "repository_path": "debian/dists/buster", }, }, }) @@ -1353,10 +1353,10 @@ def __init__(__self__, mode="REMOTE_REPOSITORY", remote_repository_config={ "description": "Rocky 9 remote repository", - "yumRepository": { - "publicRepository": { - "repositoryBase": "ROCKY", - "repositoryPath": "pub/rocky/9/BaseOS/x86_64/os", + "yum_repository": { + "public_repository": { + "repository_base": "ROCKY", + "repository_path": "pub/rocky/9/BaseOS/x86_64/os", }, }, }) @@ -1378,21 +1378,21 @@ def __init__(__self__, "id": "delete-prerelease", "action": "DELETE", "condition": { - "tagState": "TAGGED", - "tagPrefixes": [ + "tag_state": "TAGGED", + "tag_prefixes": [ "alpha", "v0", ], - "olderThan": "2592000s", + "older_than": "2592000s", }, }, { "id": "keep-tagged-release", "action": "KEEP", "condition": { - "tagState": "TAGGED", - "tagPrefixes": ["release"], - "packageNamePrefixes": [ + "tag_state": "TAGGED", + "tag_prefixes": ["release"], + "package_name_prefixes": [ "webapp", "mobile", ], @@ -1401,13 +1401,13 @@ def __init__(__self__, { "id": "keep-minimum-versions", "action": "KEEP", - "mostRecentVersions": { - "packageNamePrefixes": [ + "most_recent_versions": { + "package_name_prefixes": [ "webapp", "mobile", "sandbox", ], - "keepCount": 5, + "keep_count": 5, }, }, ]) @@ -1439,14 +1439,14 @@ def __init__(__self__, mode="REMOTE_REPOSITORY", remote_repository_config={ "description": "docker hub with custom credentials", - "disableUpstreamValidation": True, - "dockerRepository": { - "publicRepository": "DOCKER_HUB", + "disable_upstream_validation": True, + "docker_repository": { + "public_repository": "DOCKER_HUB", }, - "upstreamCredentials": { - "usernamePasswordCredentials": { + "upstream_credentials": { + "username_password_credentials": { "username": "remote-username", - "passwordSecretVersion": example_remote_secret_version.name, + "password_secret_version": example_remote_secret_version.name, }, }, }) @@ -1478,16 +1478,16 @@ def __init__(__self__, mode="REMOTE_REPOSITORY", remote_repository_config={ "description": "custom docker remote with credentials", - "disableUpstreamValidation": True, - "dockerRepository": { - "customRepository": { + "disable_upstream_validation": True, + "docker_repository": { + "custom_repository": { "uri": "https://registry-1.docker.io", }, }, - "upstreamCredentials": { - "usernamePasswordCredentials": { + "upstream_credentials": { + "username_password_credentials": { "username": "remote-username", - "passwordSecretVersion": example_remote_secret_version.name, + "password_secret_version": example_remote_secret_version.name, }, }, }) @@ -1519,16 +1519,16 @@ def __init__(__self__, mode="REMOTE_REPOSITORY", remote_repository_config={ "description": "custom maven remote with credentials", - "disableUpstreamValidation": True, - "mavenRepository": { - "customRepository": { + "disable_upstream_validation": True, + "maven_repository": { + "custom_repository": { "uri": "https://my.maven.registry", }, }, - "upstreamCredentials": { - "usernamePasswordCredentials": { + "upstream_credentials": { + "username_password_credentials": { "username": "remote-username", - "passwordSecretVersion": example_remote_secret_version.name, + "password_secret_version": example_remote_secret_version.name, }, }, }) @@ -1560,16 +1560,16 @@ def __init__(__self__, mode="REMOTE_REPOSITORY", remote_repository_config={ "description": "custom npm with credentials", - "disableUpstreamValidation": True, - "npmRepository": { - "customRepository": { + "disable_upstream_validation": True, + "npm_repository": { + "custom_repository": { "uri": "https://my.npm.registry", }, }, - "upstreamCredentials": { - "usernamePasswordCredentials": { + "upstream_credentials": { + "username_password_credentials": { "username": "remote-username", - "passwordSecretVersion": example_remote_secret_version.name, + "password_secret_version": example_remote_secret_version.name, }, }, }) @@ -1601,16 +1601,16 @@ def __init__(__self__, mode="REMOTE_REPOSITORY", remote_repository_config={ "description": "custom npm with credentials", - "disableUpstreamValidation": True, - "pythonRepository": { - "customRepository": { + "disable_upstream_validation": True, + "python_repository": { + "custom_repository": { "uri": "https://my.python.registry", }, }, - "upstreamCredentials": { - "usernamePasswordCredentials": { + "upstream_credentials": { + "username_password_credentials": { "username": "remote-username", - "passwordSecretVersion": example_remote_secret_version.name, + "password_secret_version": example_remote_secret_version.name, }, }, }) diff --git a/sdk/python/pulumi_gcp/assuredworkloads/workload.py b/sdk/python/pulumi_gcp/assuredworkloads/workload.py index 170819d8f0..6382ae3b50 100644 --- a/sdk/python/pulumi_gcp/assuredworkloads/workload.py +++ b/sdk/python/pulumi_gcp/assuredworkloads/workload.py @@ -671,21 +671,21 @@ def __init__(__self__, organization="123456789", billing_account="billingAccounts/000000-0000000-0000000-000000", kms_settings={ - "nextRotationTime": "9999-10-02T15:01:23Z", - "rotationPeriod": "10368000s", + "next_rotation_time": "9999-10-02T15:01:23Z", + "rotation_period": "10368000s", }, provisioned_resources_parent="folders/519620126891", resource_settings=[ { - "displayName": "folder-display-name", - "resourceType": "CONSUMER_FOLDER", + "display_name": "folder-display-name", + "resource_type": "CONSUMER_FOLDER", }, { - "resourceType": "ENCRYPTION_KEYS_PROJECT", + "resource_type": "ENCRYPTION_KEYS_PROJECT", }, { - "resourceId": "ring", - "resourceType": "KEYRING", + "resource_id": "ring", + "resource_type": "KEYRING", }, ], violation_notifications_enabled=True, @@ -707,19 +707,19 @@ def __init__(__self__, billing_account="billingAccounts/000000-0000000-0000000-000000", enable_sovereign_controls=True, kms_settings={ - "nextRotationTime": "9999-10-02T15:01:23Z", - "rotationPeriod": "10368000s", + "next_rotation_time": "9999-10-02T15:01:23Z", + "rotation_period": "10368000s", }, resource_settings=[ { - "resourceType": "CONSUMER_FOLDER", + "resource_type": "CONSUMER_FOLDER", }, { - "resourceType": "ENCRYPTION_KEYS_PROJECT", + "resource_type": "ENCRYPTION_KEYS_PROJECT", }, { - "resourceId": "ring", - "resourceType": "KEYRING", + "resource_id": "ring", + "resource_type": "KEYRING", }, ], labels={ @@ -792,21 +792,21 @@ def __init__(__self__, organization="123456789", billing_account="billingAccounts/000000-0000000-0000000-000000", kms_settings={ - "nextRotationTime": "9999-10-02T15:01:23Z", - "rotationPeriod": "10368000s", + "next_rotation_time": "9999-10-02T15:01:23Z", + "rotation_period": "10368000s", }, provisioned_resources_parent="folders/519620126891", resource_settings=[ { - "displayName": "folder-display-name", - "resourceType": "CONSUMER_FOLDER", + "display_name": "folder-display-name", + "resource_type": "CONSUMER_FOLDER", }, { - "resourceType": "ENCRYPTION_KEYS_PROJECT", + "resource_type": "ENCRYPTION_KEYS_PROJECT", }, { - "resourceId": "ring", - "resourceType": "KEYRING", + "resource_id": "ring", + "resource_type": "KEYRING", }, ], violation_notifications_enabled=True, @@ -828,19 +828,19 @@ def __init__(__self__, billing_account="billingAccounts/000000-0000000-0000000-000000", enable_sovereign_controls=True, kms_settings={ - "nextRotationTime": "9999-10-02T15:01:23Z", - "rotationPeriod": "10368000s", + "next_rotation_time": "9999-10-02T15:01:23Z", + "rotation_period": "10368000s", }, resource_settings=[ { - "resourceType": "CONSUMER_FOLDER", + "resource_type": "CONSUMER_FOLDER", }, { - "resourceType": "ENCRYPTION_KEYS_PROJECT", + "resource_type": "ENCRYPTION_KEYS_PROJECT", }, { - "resourceId": "ring", - "resourceType": "KEYRING", + "resource_id": "ring", + "resource_type": "KEYRING", }, ], labels={ diff --git a/sdk/python/pulumi_gcp/backupdisasterrecovery/management_server.py b/sdk/python/pulumi_gcp/backupdisasterrecovery/management_server.py index c494b99c55..e1078254b9 100644 --- a/sdk/python/pulumi_gcp/backupdisasterrecovery/management_server.py +++ b/sdk/python/pulumi_gcp/backupdisasterrecovery/management_server.py @@ -259,7 +259,7 @@ def __init__(__self__, type="BACKUP_RESTORE", networks=[{ "network": default.id, - "peeringMode": "PRIVATE_SERVICE_ACCESS", + "peering_mode": "PRIVATE_SERVICE_ACCESS", }], opts = pulumi.ResourceOptions(depends_on=[default_connection])) ``` @@ -328,7 +328,7 @@ def __init__(__self__, type="BACKUP_RESTORE", networks=[{ "network": default.id, - "peeringMode": "PRIVATE_SERVICE_ACCESS", + "peering_mode": "PRIVATE_SERVICE_ACCESS", }], opts = pulumi.ResourceOptions(depends_on=[default_connection])) ``` diff --git a/sdk/python/pulumi_gcp/beyondcorp/app_connection.py b/sdk/python/pulumi_gcp/beyondcorp/app_connection.py index 6fce8d14f6..f258bdda4d 100644 --- a/sdk/python/pulumi_gcp/beyondcorp/app_connection.py +++ b/sdk/python/pulumi_gcp/beyondcorp/app_connection.py @@ -407,7 +407,7 @@ def __init__(__self__, app_connector = gcp.beyondcorp.AppConnector("app_connector", name="my-app-connector", principal_info={ - "serviceAccount": { + "service_account": { "email": service_account.email, }, }) @@ -436,7 +436,7 @@ def __init__(__self__, app_connector = gcp.beyondcorp.AppConnector("app_connector", name="my-app-connector", principal_info={ - "serviceAccount": { + "service_account": { "email": service_account.email, }, }) @@ -450,7 +450,7 @@ def __init__(__self__, }, connectors=[app_connector.id], gateway={ - "appGateway": app_gateway.id, + "app_gateway": app_gateway.id, }, labels={ "foo": "bar", @@ -535,7 +535,7 @@ def __init__(__self__, app_connector = gcp.beyondcorp.AppConnector("app_connector", name="my-app-connector", principal_info={ - "serviceAccount": { + "service_account": { "email": service_account.email, }, }) @@ -564,7 +564,7 @@ def __init__(__self__, app_connector = gcp.beyondcorp.AppConnector("app_connector", name="my-app-connector", principal_info={ - "serviceAccount": { + "service_account": { "email": service_account.email, }, }) @@ -578,7 +578,7 @@ def __init__(__self__, }, connectors=[app_connector.id], gateway={ - "appGateway": app_gateway.id, + "app_gateway": app_gateway.id, }, labels={ "foo": "bar", diff --git a/sdk/python/pulumi_gcp/beyondcorp/app_connector.py b/sdk/python/pulumi_gcp/beyondcorp/app_connector.py index c84bfadc7e..a7e6dea534 100644 --- a/sdk/python/pulumi_gcp/beyondcorp/app_connector.py +++ b/sdk/python/pulumi_gcp/beyondcorp/app_connector.py @@ -317,7 +317,7 @@ def __init__(__self__, app_connector = gcp.beyondcorp.AppConnector("app_connector", name="my-app-connector", principal_info={ - "serviceAccount": { + "service_account": { "email": service_account.email, }, }) @@ -336,7 +336,7 @@ def __init__(__self__, region="us-central1", display_name="some display name", principal_info={ - "serviceAccount": { + "service_account": { "email": service_account.email, }, }, @@ -419,7 +419,7 @@ def __init__(__self__, app_connector = gcp.beyondcorp.AppConnector("app_connector", name="my-app-connector", principal_info={ - "serviceAccount": { + "service_account": { "email": service_account.email, }, }) @@ -438,7 +438,7 @@ def __init__(__self__, region="us-central1", display_name="some display name", principal_info={ - "serviceAccount": { + "service_account": { "email": service_account.email, }, }, diff --git a/sdk/python/pulumi_gcp/biglake/database.py b/sdk/python/pulumi_gcp/biglake/database.py index 0ceb223c0e..599a002690 100644 --- a/sdk/python/pulumi_gcp/biglake/database.py +++ b/sdk/python/pulumi_gcp/biglake/database.py @@ -295,7 +295,7 @@ def __init__(__self__, catalog=catalog.id, type="HIVE", hive_options={ - "locationUri": pulumi.Output.all(bucket.name, metadata_folder.name).apply(lambda bucketName, metadataFolderName: f"gs://{bucket_name}/{metadata_folder_name}"), + "location_uri": pulumi.Output.all(bucket.name, metadata_folder.name).apply(lambda bucketName, metadataFolderName: f"gs://{bucket_name}/{metadata_folder_name}"), "parameters": { "owner": "John Doe", }, @@ -362,7 +362,7 @@ def __init__(__self__, catalog=catalog.id, type="HIVE", hive_options={ - "locationUri": pulumi.Output.all(bucket.name, metadata_folder.name).apply(lambda bucketName, metadataFolderName: f"gs://{bucket_name}/{metadata_folder_name}"), + "location_uri": pulumi.Output.all(bucket.name, metadata_folder.name).apply(lambda bucketName, metadataFolderName: f"gs://{bucket_name}/{metadata_folder_name}"), "parameters": { "owner": "John Doe", }, diff --git a/sdk/python/pulumi_gcp/biglake/table.py b/sdk/python/pulumi_gcp/biglake/table.py index c8e74870aa..645229a94c 100644 --- a/sdk/python/pulumi_gcp/biglake/table.py +++ b/sdk/python/pulumi_gcp/biglake/table.py @@ -344,7 +344,7 @@ def __init__(__self__, catalog=catalog.id, type="HIVE", hive_options={ - "locationUri": pulumi.Output.all(bucket.name, metadata_folder.name).apply(lambda bucketName, metadataFolderName: f"gs://{bucket_name}/{metadata_folder_name}"), + "location_uri": pulumi.Output.all(bucket.name, metadata_folder.name).apply(lambda bucketName, metadataFolderName: f"gs://{bucket_name}/{metadata_folder_name}"), "parameters": { "owner": "Alex", }, @@ -354,20 +354,20 @@ def __init__(__self__, database=database.id, type="HIVE", hive_options={ - "tableType": "MANAGED_TABLE", - "storageDescriptor": { - "locationUri": pulumi.Output.all(bucket.name, data_folder.name).apply(lambda bucketName, dataFolderName: f"gs://{bucket_name}/{data_folder_name}"), - "inputFormat": "org.apache.hadoop.mapred.SequenceFileInputFormat", - "outputFormat": "org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat", + "table_type": "MANAGED_TABLE", + "storage_descriptor": { + "location_uri": pulumi.Output.all(bucket.name, data_folder.name).apply(lambda bucketName, dataFolderName: f"gs://{bucket_name}/{data_folder_name}"), + "input_format": "org.apache.hadoop.mapred.SequenceFileInputFormat", + "output_format": "org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat", }, "parameters": { - "spark.sql.create.version": "3.1.3", - "spark.sql.sources.schema.numParts": "1", - "transient_lastDdlTime": "1680894197", - "spark.sql.partitionProvider": "catalog", + "spark_sql_create_version": "3.1.3", + "spark_sql_sources_schema_num_parts": "1", + "transient_last_ddl_time": "1680894197", + "spark_sql_partition_provider": "catalog", "owner": "John Doe", - "spark.sql.sources.schema.part.0": "{\\"type\\":\\"struct\\",\\"fields\\":[{\\"name\\":\\"id\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"name\\",\\"type\\":\\"string\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"age\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}}]}", - "spark.sql.sources.provider": "iceberg", + "spark_sql_sources_schema_part_0": "{\\"type\\":\\"struct\\",\\"fields\\":[{\\"name\\":\\"id\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"name\\",\\"type\\":\\"string\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"age\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}}]}", + "spark_sql_sources_provider": "iceberg", "provider": "iceberg", }, }) @@ -442,7 +442,7 @@ def __init__(__self__, catalog=catalog.id, type="HIVE", hive_options={ - "locationUri": pulumi.Output.all(bucket.name, metadata_folder.name).apply(lambda bucketName, metadataFolderName: f"gs://{bucket_name}/{metadata_folder_name}"), + "location_uri": pulumi.Output.all(bucket.name, metadata_folder.name).apply(lambda bucketName, metadataFolderName: f"gs://{bucket_name}/{metadata_folder_name}"), "parameters": { "owner": "Alex", }, @@ -452,20 +452,20 @@ def __init__(__self__, database=database.id, type="HIVE", hive_options={ - "tableType": "MANAGED_TABLE", - "storageDescriptor": { - "locationUri": pulumi.Output.all(bucket.name, data_folder.name).apply(lambda bucketName, dataFolderName: f"gs://{bucket_name}/{data_folder_name}"), - "inputFormat": "org.apache.hadoop.mapred.SequenceFileInputFormat", - "outputFormat": "org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat", + "table_type": "MANAGED_TABLE", + "storage_descriptor": { + "location_uri": pulumi.Output.all(bucket.name, data_folder.name).apply(lambda bucketName, dataFolderName: f"gs://{bucket_name}/{data_folder_name}"), + "input_format": "org.apache.hadoop.mapred.SequenceFileInputFormat", + "output_format": "org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat", }, "parameters": { - "spark.sql.create.version": "3.1.3", - "spark.sql.sources.schema.numParts": "1", - "transient_lastDdlTime": "1680894197", - "spark.sql.partitionProvider": "catalog", + "spark_sql_create_version": "3.1.3", + "spark_sql_sources_schema_num_parts": "1", + "transient_last_ddl_time": "1680894197", + "spark_sql_partition_provider": "catalog", "owner": "John Doe", - "spark.sql.sources.schema.part.0": "{\\"type\\":\\"struct\\",\\"fields\\":[{\\"name\\":\\"id\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"name\\",\\"type\\":\\"string\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"age\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}}]}", - "spark.sql.sources.provider": "iceberg", + "spark_sql_sources_schema_part_0": "{\\"type\\":\\"struct\\",\\"fields\\":[{\\"name\\":\\"id\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"name\\",\\"type\\":\\"string\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"age\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}}]}", + "spark_sql_sources_provider": "iceberg", "provider": "iceberg", }, }) diff --git a/sdk/python/pulumi_gcp/bigquery/app_profile.py b/sdk/python/pulumi_gcp/bigquery/app_profile.py index d7c26d32c5..5c51bfe890 100644 --- a/sdk/python/pulumi_gcp/bigquery/app_profile.py +++ b/sdk/python/pulumi_gcp/bigquery/app_profile.py @@ -407,22 +407,22 @@ def __init__(__self__, name="bt-instance", clusters=[ { - "clusterId": "cluster-1", + "cluster_id": "cluster-1", "zone": "us-central1-a", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }, { - "clusterId": "cluster-2", + "cluster_id": "cluster-2", "zone": "us-central1-b", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }, { - "clusterId": "cluster-3", + "cluster_id": "cluster-3", "zone": "us-central1-c", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }, ], deletion_protection=True) @@ -441,18 +441,18 @@ def __init__(__self__, instance = gcp.bigtable.Instance("instance", name="bt-instance", clusters=[{ - "clusterId": "cluster-1", + "cluster_id": "cluster-1", "zone": "us-central1-b", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }], deletion_protection=True) ap = gcp.bigquery.AppProfile("ap", instance=instance.name, app_profile_id="bt-profile", single_cluster_routing={ - "clusterId": "cluster-1", - "allowTransactionalWrites": True, + "cluster_id": "cluster-1", + "allow_transactional_writes": True, }, ignore_warnings=True) ``` @@ -466,22 +466,22 @@ def __init__(__self__, name="bt-instance", clusters=[ { - "clusterId": "cluster-1", + "cluster_id": "cluster-1", "zone": "us-central1-a", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }, { - "clusterId": "cluster-2", + "cluster_id": "cluster-2", "zone": "us-central1-b", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }, { - "clusterId": "cluster-3", + "cluster_id": "cluster-3", "zone": "us-central1-c", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }, ], deletion_protection=True) @@ -504,18 +504,18 @@ def __init__(__self__, instance = gcp.bigtable.Instance("instance", name="bt-instance", clusters=[{ - "clusterId": "cluster-1", + "cluster_id": "cluster-1", "zone": "us-central1-b", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }], deletion_protection=True) ap = gcp.bigquery.AppProfile("ap", instance=instance.name, app_profile_id="bt-profile", single_cluster_routing={ - "clusterId": "cluster-1", - "allowTransactionalWrites": True, + "cluster_id": "cluster-1", + "allow_transactional_writes": True, }, standard_isolation={ "priority": "PRIORITY_LOW", @@ -593,22 +593,22 @@ def __init__(__self__, name="bt-instance", clusters=[ { - "clusterId": "cluster-1", + "cluster_id": "cluster-1", "zone": "us-central1-a", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }, { - "clusterId": "cluster-2", + "cluster_id": "cluster-2", "zone": "us-central1-b", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }, { - "clusterId": "cluster-3", + "cluster_id": "cluster-3", "zone": "us-central1-c", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }, ], deletion_protection=True) @@ -627,18 +627,18 @@ def __init__(__self__, instance = gcp.bigtable.Instance("instance", name="bt-instance", clusters=[{ - "clusterId": "cluster-1", + "cluster_id": "cluster-1", "zone": "us-central1-b", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }], deletion_protection=True) ap = gcp.bigquery.AppProfile("ap", instance=instance.name, app_profile_id="bt-profile", single_cluster_routing={ - "clusterId": "cluster-1", - "allowTransactionalWrites": True, + "cluster_id": "cluster-1", + "allow_transactional_writes": True, }, ignore_warnings=True) ``` @@ -652,22 +652,22 @@ def __init__(__self__, name="bt-instance", clusters=[ { - "clusterId": "cluster-1", + "cluster_id": "cluster-1", "zone": "us-central1-a", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }, { - "clusterId": "cluster-2", + "cluster_id": "cluster-2", "zone": "us-central1-b", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }, { - "clusterId": "cluster-3", + "cluster_id": "cluster-3", "zone": "us-central1-c", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }, ], deletion_protection=True) @@ -690,18 +690,18 @@ def __init__(__self__, instance = gcp.bigtable.Instance("instance", name="bt-instance", clusters=[{ - "clusterId": "cluster-1", + "cluster_id": "cluster-1", "zone": "us-central1-b", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }], deletion_protection=True) ap = gcp.bigquery.AppProfile("ap", instance=instance.name, app_profile_id="bt-profile", single_cluster_routing={ - "clusterId": "cluster-1", - "allowTransactionalWrites": True, + "cluster_id": "cluster-1", + "allow_transactional_writes": True, }, standard_isolation={ "priority": "PRIORITY_LOW", diff --git a/sdk/python/pulumi_gcp/bigquery/connection.py b/sdk/python/pulumi_gcp/bigquery/connection.py index ec5a66d12d..f3e531e43f 100644 --- a/sdk/python/pulumi_gcp/bigquery/connection.py +++ b/sdk/python/pulumi_gcp/bigquery/connection.py @@ -580,7 +580,7 @@ def __init__(__self__, description="a riveting description", location="US", cloud_sql={ - "instanceId": instance.connection_name, + "instance_id": instance.connection_name, "database": db.name, "type": "POSTGRES", "credential": { @@ -620,7 +620,7 @@ def __init__(__self__, friendly_name="👋", description="a riveting description", cloud_sql={ - "instanceId": instance.connection_name, + "instance_id": instance.connection_name, "database": db.name, "type": "POSTGRES", "credential": { @@ -641,8 +641,8 @@ def __init__(__self__, friendly_name="👋", description="a riveting description", aws={ - "accessRole": { - "iamRoleId": "arn:aws:iam::999999999999:role/omnirole", + "access_role": { + "iam_role_id": "arn:aws:iam::999999999999:role/omnirole", }, }) ``` @@ -658,8 +658,8 @@ def __init__(__self__, friendly_name="👋", description="a riveting description", azure={ - "customerTenantId": "customer-tenant-id", - "federatedApplicationClientId": "b43eeeee-eeee-eeee-eeee-a480155501ce", + "customer_tenant_id": "customer-tenant-id", + "federated_application_client_id": "b43eeeee-eeee-eeee-eeee-a480155501ce", }) ``` ### Bigquery Connection Cloudspanner @@ -675,7 +675,7 @@ def __init__(__self__, description="a riveting description", cloud_spanner={ "database": "projects/project/instances/instance/databases/database", - "databaseRole": "database_role", + "database_role": "database_role", }) ``` ### Bigquery Connection Cloudspanner Databoost @@ -691,9 +691,9 @@ def __init__(__self__, description="a riveting description", cloud_spanner={ "database": "projects/project/instances/instance/databases/database", - "useParallelism": True, - "useDataBoost": True, - "maxParallelism": 100, + "use_parallelism": True, + "use_data_boost": True, + "max_parallelism": 100, }) ``` ### Bigquery Connection Spark @@ -706,16 +706,16 @@ def __init__(__self__, name="my-connection", region="us-central1", cluster_config={ - "softwareConfig": { - "overrideProperties": { - "dataproc:dataproc.allow.zero.workers": "true", + "software_config": { + "override_properties": { + "dataproc_dataproc_allow_zero_workers": "true", }, }, - "masterConfig": { - "numInstances": 1, - "machineType": "e2-standard-2", - "diskConfig": { - "bootDiskSizeGb": 35, + "master_config": { + "num_instances": 1, + "machine_type": "e2-standard-2", + "disk_config": { + "boot_disk_size_gb": 35, }, }, }) @@ -725,8 +725,8 @@ def __init__(__self__, friendly_name="👋", description="a riveting description", spark={ - "sparkHistoryServerConfig": { - "dataprocCluster": basic.id, + "spark_history_server_config": { + "dataproc_cluster": basic.id, }, }) ``` @@ -757,7 +757,7 @@ def __init__(__self__, location="US", kms_key_name="projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key", cloud_sql={ - "instanceId": instance.connection_name, + "instance_id": instance.connection_name, "database": db.name, "type": "POSTGRES", "credential": { @@ -880,7 +880,7 @@ def __init__(__self__, description="a riveting description", location="US", cloud_sql={ - "instanceId": instance.connection_name, + "instance_id": instance.connection_name, "database": db.name, "type": "POSTGRES", "credential": { @@ -920,7 +920,7 @@ def __init__(__self__, friendly_name="👋", description="a riveting description", cloud_sql={ - "instanceId": instance.connection_name, + "instance_id": instance.connection_name, "database": db.name, "type": "POSTGRES", "credential": { @@ -941,8 +941,8 @@ def __init__(__self__, friendly_name="👋", description="a riveting description", aws={ - "accessRole": { - "iamRoleId": "arn:aws:iam::999999999999:role/omnirole", + "access_role": { + "iam_role_id": "arn:aws:iam::999999999999:role/omnirole", }, }) ``` @@ -958,8 +958,8 @@ def __init__(__self__, friendly_name="👋", description="a riveting description", azure={ - "customerTenantId": "customer-tenant-id", - "federatedApplicationClientId": "b43eeeee-eeee-eeee-eeee-a480155501ce", + "customer_tenant_id": "customer-tenant-id", + "federated_application_client_id": "b43eeeee-eeee-eeee-eeee-a480155501ce", }) ``` ### Bigquery Connection Cloudspanner @@ -975,7 +975,7 @@ def __init__(__self__, description="a riveting description", cloud_spanner={ "database": "projects/project/instances/instance/databases/database", - "databaseRole": "database_role", + "database_role": "database_role", }) ``` ### Bigquery Connection Cloudspanner Databoost @@ -991,9 +991,9 @@ def __init__(__self__, description="a riveting description", cloud_spanner={ "database": "projects/project/instances/instance/databases/database", - "useParallelism": True, - "useDataBoost": True, - "maxParallelism": 100, + "use_parallelism": True, + "use_data_boost": True, + "max_parallelism": 100, }) ``` ### Bigquery Connection Spark @@ -1006,16 +1006,16 @@ def __init__(__self__, name="my-connection", region="us-central1", cluster_config={ - "softwareConfig": { - "overrideProperties": { - "dataproc:dataproc.allow.zero.workers": "true", + "software_config": { + "override_properties": { + "dataproc_dataproc_allow_zero_workers": "true", }, }, - "masterConfig": { - "numInstances": 1, - "machineType": "e2-standard-2", - "diskConfig": { - "bootDiskSizeGb": 35, + "master_config": { + "num_instances": 1, + "machine_type": "e2-standard-2", + "disk_config": { + "boot_disk_size_gb": 35, }, }, }) @@ -1025,8 +1025,8 @@ def __init__(__self__, friendly_name="👋", description="a riveting description", spark={ - "sparkHistoryServerConfig": { - "dataprocCluster": basic.id, + "spark_history_server_config": { + "dataproc_cluster": basic.id, }, }) ``` @@ -1057,7 +1057,7 @@ def __init__(__self__, location="US", kms_key_name="projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key", cloud_sql={ - "instanceId": instance.connection_name, + "instance_id": instance.connection_name, "database": db.name, "type": "POSTGRES", "credential": { diff --git a/sdk/python/pulumi_gcp/bigquery/dataset.py b/sdk/python/pulumi_gcp/bigquery/dataset.py index 066dc1b4a5..e7febf7c0d 100644 --- a/sdk/python/pulumi_gcp/bigquery/dataset.py +++ b/sdk/python/pulumi_gcp/bigquery/dataset.py @@ -976,7 +976,7 @@ def __init__(__self__, accesses=[ { "role": "OWNER", - "userByEmail": bqowner.email, + "user_by_email": bqowner.email, }, { "role": "READER", @@ -1003,7 +1003,7 @@ def __init__(__self__, location="US", default_table_expiration_ms=3600000, default_encryption_configuration={ - "kmsKeyName": crypto_key.id, + "kms_key_name": crypto_key.id, }) ``` ### Bigquery Dataset Authorized Dataset @@ -1025,7 +1025,7 @@ def __init__(__self__, accesses=[ { "role": "OWNER", - "userByEmail": bqowner.email, + "user_by_email": bqowner.email, }, { "role": "READER", @@ -1044,7 +1044,7 @@ def __init__(__self__, accesses=[ { "role": "OWNER", - "userByEmail": bqowner.email, + "user_by_email": bqowner.email, }, { "role": "READER", @@ -1053,10 +1053,10 @@ def __init__(__self__, { "dataset": { "dataset": { - "projectId": public.project, - "datasetId": public.dataset_id, + "project_id": public.project, + "dataset_id": public.dataset_id, }, - "targetTypes": ["VIEWS"], + "target_types": ["VIEWS"], }, }, ]) @@ -1079,9 +1079,9 @@ def __init__(__self__, definition_body="SELECT 1 + value AS value\\n", arguments=[{ "name": "value", - "argumentKind": "FIXED_TYPE", - "dataType": json.dumps({ - "typeKind": "INT64", + "argument_kind": "FIXED_TYPE", + "data_type": json.dumps({ + "type_kind": "INT64", }), }], return_table_type=json.dumps({ @@ -1098,13 +1098,13 @@ def __init__(__self__, accesses=[ { "role": "OWNER", - "userByEmail": "my@service-account.com", + "user_by_email": "my@service-account.com", }, { "routine": { - "projectId": public_routine.project, - "datasetId": public_routine.dataset_id, - "routineId": public_routine.routine_id, + "project_id": public_routine.project, + "dataset_id": public_routine.dataset_id, + "routine_id": public_routine.routine_id, }, }, ]) @@ -1121,7 +1121,7 @@ def __init__(__self__, description="This is a test description", location="aws-us-east-1", external_dataset_reference={ - "externalSource": "aws-glue://arn:aws:glue:us-east-1:999999999999:database/database", + "external_source": "aws-glue://arn:aws:glue:us-east-1:999999999999:database/database", "connection": "projects/project/locations/aws-us-east-1/connections/connection", }) ``` @@ -1261,7 +1261,7 @@ def __init__(__self__, accesses=[ { "role": "OWNER", - "userByEmail": bqowner.email, + "user_by_email": bqowner.email, }, { "role": "READER", @@ -1288,7 +1288,7 @@ def __init__(__self__, location="US", default_table_expiration_ms=3600000, default_encryption_configuration={ - "kmsKeyName": crypto_key.id, + "kms_key_name": crypto_key.id, }) ``` ### Bigquery Dataset Authorized Dataset @@ -1310,7 +1310,7 @@ def __init__(__self__, accesses=[ { "role": "OWNER", - "userByEmail": bqowner.email, + "user_by_email": bqowner.email, }, { "role": "READER", @@ -1329,7 +1329,7 @@ def __init__(__self__, accesses=[ { "role": "OWNER", - "userByEmail": bqowner.email, + "user_by_email": bqowner.email, }, { "role": "READER", @@ -1338,10 +1338,10 @@ def __init__(__self__, { "dataset": { "dataset": { - "projectId": public.project, - "datasetId": public.dataset_id, + "project_id": public.project, + "dataset_id": public.dataset_id, }, - "targetTypes": ["VIEWS"], + "target_types": ["VIEWS"], }, }, ]) @@ -1364,9 +1364,9 @@ def __init__(__self__, definition_body="SELECT 1 + value AS value\\n", arguments=[{ "name": "value", - "argumentKind": "FIXED_TYPE", - "dataType": json.dumps({ - "typeKind": "INT64", + "argument_kind": "FIXED_TYPE", + "data_type": json.dumps({ + "type_kind": "INT64", }), }], return_table_type=json.dumps({ @@ -1383,13 +1383,13 @@ def __init__(__self__, accesses=[ { "role": "OWNER", - "userByEmail": "my@service-account.com", + "user_by_email": "my@service-account.com", }, { "routine": { - "projectId": public_routine.project, - "datasetId": public_routine.dataset_id, - "routineId": public_routine.routine_id, + "project_id": public_routine.project, + "dataset_id": public_routine.dataset_id, + "routine_id": public_routine.routine_id, }, }, ]) @@ -1406,7 +1406,7 @@ def __init__(__self__, description="This is a test description", location="aws-us-east-1", external_dataset_reference={ - "externalSource": "aws-glue://arn:aws:glue:us-east-1:999999999999:database/database", + "external_source": "aws-glue://arn:aws:glue:us-east-1:999999999999:database/database", "connection": "projects/project/locations/aws-us-east-1/connections/connection", }) ``` diff --git a/sdk/python/pulumi_gcp/bigquery/dataset_access.py b/sdk/python/pulumi_gcp/bigquery/dataset_access.py index d651a61b3e..e5ed6cad62 100644 --- a/sdk/python/pulumi_gcp/bigquery/dataset_access.py +++ b/sdk/python/pulumi_gcp/bigquery/dataset_access.py @@ -566,14 +566,14 @@ def __init__(__self__, table_id="example_table", view={ "query": "SELECT state FROM [lookerdata:cdc.project_tycho_reports]", - "useLegacySql": False, + "use_legacy_sql": False, }) access = gcp.bigquery.DatasetAccess("access", dataset_id=private.dataset_id, view={ - "projectId": public_table.project, - "datasetId": public.dataset_id, - "tableId": public_table.table_id, + "project_id": public_table.project, + "dataset_id": public.dataset_id, + "table_id": public_table.table_id, }) ``` ### Bigquery Dataset Access Authorized Dataset @@ -588,10 +588,10 @@ def __init__(__self__, dataset_id=private.dataset_id, authorized_dataset={ "dataset": { - "projectId": public.project, - "datasetId": public.dataset_id, + "project_id": public.project, + "dataset_id": public.dataset_id, }, - "targetTypes": ["VIEWS"], + "target_types": ["VIEWS"], }) ``` ### Bigquery Dataset Access Authorized Routine @@ -612,9 +612,9 @@ def __init__(__self__, definition_body="SELECT 1 + value AS value\\n", arguments=[{ "name": "value", - "argumentKind": "FIXED_TYPE", - "dataType": json.dumps({ - "typeKind": "INT64", + "argument_kind": "FIXED_TYPE", + "data_type": json.dumps({ + "type_kind": "INT64", }), }], return_table_type=json.dumps({ @@ -631,9 +631,9 @@ def __init__(__self__, authorized_routine = gcp.bigquery.DatasetAccess("authorized_routine", dataset_id=private.dataset_id, routine={ - "projectId": public_routine.project, - "datasetId": public_routine.dataset_id, - "routineId": public_routine.routine_id, + "project_id": public_routine.project, + "dataset_id": public_routine.dataset_id, + "routine_id": public_routine.routine_id, }) ``` @@ -720,14 +720,14 @@ def __init__(__self__, table_id="example_table", view={ "query": "SELECT state FROM [lookerdata:cdc.project_tycho_reports]", - "useLegacySql": False, + "use_legacy_sql": False, }) access = gcp.bigquery.DatasetAccess("access", dataset_id=private.dataset_id, view={ - "projectId": public_table.project, - "datasetId": public.dataset_id, - "tableId": public_table.table_id, + "project_id": public_table.project, + "dataset_id": public.dataset_id, + "table_id": public_table.table_id, }) ``` ### Bigquery Dataset Access Authorized Dataset @@ -742,10 +742,10 @@ def __init__(__self__, dataset_id=private.dataset_id, authorized_dataset={ "dataset": { - "projectId": public.project, - "datasetId": public.dataset_id, + "project_id": public.project, + "dataset_id": public.dataset_id, }, - "targetTypes": ["VIEWS"], + "target_types": ["VIEWS"], }) ``` ### Bigquery Dataset Access Authorized Routine @@ -766,9 +766,9 @@ def __init__(__self__, definition_body="SELECT 1 + value AS value\\n", arguments=[{ "name": "value", - "argumentKind": "FIXED_TYPE", - "dataType": json.dumps({ - "typeKind": "INT64", + "argument_kind": "FIXED_TYPE", + "data_type": json.dumps({ + "type_kind": "INT64", }), }], return_table_type=json.dumps({ @@ -785,9 +785,9 @@ def __init__(__self__, authorized_routine = gcp.bigquery.DatasetAccess("authorized_routine", dataset_id=private.dataset_id, routine={ - "projectId": public_routine.project, - "datasetId": public_routine.dataset_id, - "routineId": public_routine.routine_id, + "project_id": public_routine.project, + "dataset_id": public_routine.dataset_id, + "routine_id": public_routine.routine_id, }) ``` diff --git a/sdk/python/pulumi_gcp/bigquery/job.py b/sdk/python/pulumi_gcp/bigquery/job.py index 1d565ec7f8..b1e129dc6f 100644 --- a/sdk/python/pulumi_gcp/bigquery/job.py +++ b/sdk/python/pulumi_gcp/bigquery/job.py @@ -460,15 +460,15 @@ def __init__(__self__, }, query={ "query": "SELECT state FROM [lookerdata:cdc.project_tycho_reports]", - "destinationTable": { - "projectId": foo.project, - "datasetId": foo.dataset_id, - "tableId": foo.table_id, + "destination_table": { + "project_id": foo.project, + "dataset_id": foo.dataset_id, + "table_id": foo.table_id, }, - "allowLargeResults": True, - "flattenResults": True, - "scriptOptions": { - "keyResultStatement": "LAST", + "allow_large_results": True, + "flatten_results": True, + "script_options": { + "key_result_statement": "LAST", }, }) ``` @@ -494,16 +494,16 @@ def __init__(__self__, }, query={ "query": "SELECT state FROM [lookerdata:cdc.project_tycho_reports]", - "destinationTable": { - "tableId": foo.id, + "destination_table": { + "table_id": foo.id, }, - "defaultDataset": { - "datasetId": bar.id, + "default_dataset": { + "dataset_id": bar.id, }, - "allowLargeResults": True, - "flattenResults": True, - "scriptOptions": { - "keyResultStatement": "LAST", + "allow_large_results": True, + "flatten_results": True, + "script_options": { + "key_result_statement": "LAST", }, }) ``` @@ -528,18 +528,18 @@ def __init__(__self__, "my_job": "load", }, load={ - "sourceUris": ["gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv"], - "destinationTable": { - "projectId": foo.project, - "datasetId": foo.dataset_id, - "tableId": foo.table_id, + "source_uris": ["gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv"], + "destination_table": { + "project_id": foo.project, + "dataset_id": foo.dataset_id, + "table_id": foo.table_id, }, - "skipLeadingRows": 1, - "schemaUpdateOptions": [ + "skip_leading_rows": 1, + "schema_update_options": [ "ALLOW_FIELD_RELAXATION", "ALLOW_FIELD_ADDITION", ], - "writeDisposition": "WRITE_APPEND", + "write_disposition": "WRITE_APPEND", "autodetect": True, }) ``` @@ -575,16 +575,16 @@ def __init__(__self__, "my_job": "load", }, load={ - "sourceUris": [pulumi.Output.all(object.bucket, object.name).apply(lambda bucket, name: f"gs://{bucket}/{name}")], - "destinationTable": { - "projectId": foo.project, - "datasetId": foo.dataset_id, - "tableId": foo.table_id, + "source_uris": [pulumi.Output.all(object.bucket, object.name).apply(lambda bucket, name: f"gs://{bucket}/{name}")], + "destination_table": { + "project_id": foo.project, + "dataset_id": foo.dataset_id, + "table_id": foo.table_id, }, - "writeDisposition": "WRITE_TRUNCATE", + "write_disposition": "WRITE_TRUNCATE", "autodetect": True, - "sourceFormat": "NEWLINE_DELIMITED_JSON", - "jsonExtension": "GEOJSON", + "source_format": "NEWLINE_DELIMITED_JSON", + "json_extension": "GEOJSON", }, opts = pulumi.ResourceOptions(depends_on=[object])) ``` @@ -617,22 +617,22 @@ def __init__(__self__, "my_job": "load", }, load={ - "sourceUris": [pulumi.Output.all(test_bucket_object.bucket, test_bucket_object.name).apply(lambda bucket, name: f"gs://{bucket}/{name}")], - "destinationTable": { - "projectId": test_table.project, - "datasetId": test_table.dataset_id, - "tableId": test_table.table_id, + "source_uris": [pulumi.Output.all(test_bucket_object.bucket, test_bucket_object.name).apply(lambda bucket, name: f"gs://{bucket}/{name}")], + "destination_table": { + "project_id": test_table.project, + "dataset_id": test_table.dataset_id, + "table_id": test_table.table_id, }, - "schemaUpdateOptions": [ + "schema_update_options": [ "ALLOW_FIELD_RELAXATION", "ALLOW_FIELD_ADDITION", ], - "writeDisposition": "WRITE_APPEND", - "sourceFormat": "PARQUET", + "write_disposition": "WRITE_APPEND", + "source_format": "PARQUET", "autodetect": True, - "parquetOptions": { - "enumAsString": True, - "enableListInference": True, + "parquet_options": { + "enum_as_string": True, + "enable_list_inference": True, }, }) ``` @@ -713,31 +713,31 @@ def __init__(__self__, ] \"\"\", encryption_configuration={ - "kmsKeyName": crypto_key.id, + "kms_key_name": crypto_key.id, }, opts = pulumi.ResourceOptions(depends_on=[encrypt_role])) job = gcp.bigquery.Job("job", job_id="job_copy", copy={ - "sourceTables": [ + "source_tables": [ { - "projectId": source[0].project, - "datasetId": source[0].dataset_id, - "tableId": source[0].table_id, + "project_id": source[0].project, + "dataset_id": source[0].dataset_id, + "table_id": source[0].table_id, }, { - "projectId": source[1].project, - "datasetId": source[1].dataset_id, - "tableId": source[1].table_id, + "project_id": source[1].project, + "dataset_id": source[1].dataset_id, + "table_id": source[1].table_id, }, ], - "destinationTable": { - "projectId": dest.project, - "datasetId": dest.dataset_id, - "tableId": dest.table_id, + "destination_table": { + "project_id": dest.project, + "dataset_id": dest.dataset_id, + "table_id": dest.table_id, }, - "destinationEncryptionConfiguration": { - "kmsKeyName": crypto_key.id, + "destination_encryption_configuration": { + "kms_key_name": crypto_key.id, }, }, opts = pulumi.ResourceOptions(depends_on=[encrypt_role])) @@ -782,13 +782,13 @@ def __init__(__self__, job = gcp.bigquery.Job("job", job_id="job_extract", extract={ - "destinationUris": [dest.url.apply(lambda url: f"{url}/extract")], - "sourceTable": { - "projectId": source_one.project, - "datasetId": source_one.dataset_id, - "tableId": source_one.table_id, + "destination_uris": [dest.url.apply(lambda url: f"{url}/extract")], + "source_table": { + "project_id": source_one.project, + "dataset_id": source_one.dataset_id, + "table_id": source_one.table_id, }, - "destinationFormat": "NEWLINE_DELIMITED_JSON", + "destination_format": "NEWLINE_DELIMITED_JSON", "compression": "GZIP", }) ``` @@ -888,15 +888,15 @@ def __init__(__self__, }, query={ "query": "SELECT state FROM [lookerdata:cdc.project_tycho_reports]", - "destinationTable": { - "projectId": foo.project, - "datasetId": foo.dataset_id, - "tableId": foo.table_id, + "destination_table": { + "project_id": foo.project, + "dataset_id": foo.dataset_id, + "table_id": foo.table_id, }, - "allowLargeResults": True, - "flattenResults": True, - "scriptOptions": { - "keyResultStatement": "LAST", + "allow_large_results": True, + "flatten_results": True, + "script_options": { + "key_result_statement": "LAST", }, }) ``` @@ -922,16 +922,16 @@ def __init__(__self__, }, query={ "query": "SELECT state FROM [lookerdata:cdc.project_tycho_reports]", - "destinationTable": { - "tableId": foo.id, + "destination_table": { + "table_id": foo.id, }, - "defaultDataset": { - "datasetId": bar.id, + "default_dataset": { + "dataset_id": bar.id, }, - "allowLargeResults": True, - "flattenResults": True, - "scriptOptions": { - "keyResultStatement": "LAST", + "allow_large_results": True, + "flatten_results": True, + "script_options": { + "key_result_statement": "LAST", }, }) ``` @@ -956,18 +956,18 @@ def __init__(__self__, "my_job": "load", }, load={ - "sourceUris": ["gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv"], - "destinationTable": { - "projectId": foo.project, - "datasetId": foo.dataset_id, - "tableId": foo.table_id, + "source_uris": ["gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv"], + "destination_table": { + "project_id": foo.project, + "dataset_id": foo.dataset_id, + "table_id": foo.table_id, }, - "skipLeadingRows": 1, - "schemaUpdateOptions": [ + "skip_leading_rows": 1, + "schema_update_options": [ "ALLOW_FIELD_RELAXATION", "ALLOW_FIELD_ADDITION", ], - "writeDisposition": "WRITE_APPEND", + "write_disposition": "WRITE_APPEND", "autodetect": True, }) ``` @@ -1003,16 +1003,16 @@ def __init__(__self__, "my_job": "load", }, load={ - "sourceUris": [pulumi.Output.all(object.bucket, object.name).apply(lambda bucket, name: f"gs://{bucket}/{name}")], - "destinationTable": { - "projectId": foo.project, - "datasetId": foo.dataset_id, - "tableId": foo.table_id, + "source_uris": [pulumi.Output.all(object.bucket, object.name).apply(lambda bucket, name: f"gs://{bucket}/{name}")], + "destination_table": { + "project_id": foo.project, + "dataset_id": foo.dataset_id, + "table_id": foo.table_id, }, - "writeDisposition": "WRITE_TRUNCATE", + "write_disposition": "WRITE_TRUNCATE", "autodetect": True, - "sourceFormat": "NEWLINE_DELIMITED_JSON", - "jsonExtension": "GEOJSON", + "source_format": "NEWLINE_DELIMITED_JSON", + "json_extension": "GEOJSON", }, opts = pulumi.ResourceOptions(depends_on=[object])) ``` @@ -1045,22 +1045,22 @@ def __init__(__self__, "my_job": "load", }, load={ - "sourceUris": [pulumi.Output.all(test_bucket_object.bucket, test_bucket_object.name).apply(lambda bucket, name: f"gs://{bucket}/{name}")], - "destinationTable": { - "projectId": test_table.project, - "datasetId": test_table.dataset_id, - "tableId": test_table.table_id, + "source_uris": [pulumi.Output.all(test_bucket_object.bucket, test_bucket_object.name).apply(lambda bucket, name: f"gs://{bucket}/{name}")], + "destination_table": { + "project_id": test_table.project, + "dataset_id": test_table.dataset_id, + "table_id": test_table.table_id, }, - "schemaUpdateOptions": [ + "schema_update_options": [ "ALLOW_FIELD_RELAXATION", "ALLOW_FIELD_ADDITION", ], - "writeDisposition": "WRITE_APPEND", - "sourceFormat": "PARQUET", + "write_disposition": "WRITE_APPEND", + "source_format": "PARQUET", "autodetect": True, - "parquetOptions": { - "enumAsString": True, - "enableListInference": True, + "parquet_options": { + "enum_as_string": True, + "enable_list_inference": True, }, }) ``` @@ -1141,31 +1141,31 @@ def __init__(__self__, ] \"\"\", encryption_configuration={ - "kmsKeyName": crypto_key.id, + "kms_key_name": crypto_key.id, }, opts = pulumi.ResourceOptions(depends_on=[encrypt_role])) job = gcp.bigquery.Job("job", job_id="job_copy", copy={ - "sourceTables": [ + "source_tables": [ { - "projectId": source[0].project, - "datasetId": source[0].dataset_id, - "tableId": source[0].table_id, + "project_id": source[0].project, + "dataset_id": source[0].dataset_id, + "table_id": source[0].table_id, }, { - "projectId": source[1].project, - "datasetId": source[1].dataset_id, - "tableId": source[1].table_id, + "project_id": source[1].project, + "dataset_id": source[1].dataset_id, + "table_id": source[1].table_id, }, ], - "destinationTable": { - "projectId": dest.project, - "datasetId": dest.dataset_id, - "tableId": dest.table_id, + "destination_table": { + "project_id": dest.project, + "dataset_id": dest.dataset_id, + "table_id": dest.table_id, }, - "destinationEncryptionConfiguration": { - "kmsKeyName": crypto_key.id, + "destination_encryption_configuration": { + "kms_key_name": crypto_key.id, }, }, opts = pulumi.ResourceOptions(depends_on=[encrypt_role])) @@ -1210,13 +1210,13 @@ def __init__(__self__, job = gcp.bigquery.Job("job", job_id="job_extract", extract={ - "destinationUris": [dest.url.apply(lambda url: f"{url}/extract")], - "sourceTable": { - "projectId": source_one.project, - "datasetId": source_one.dataset_id, - "tableId": source_one.table_id, + "destination_uris": [dest.url.apply(lambda url: f"{url}/extract")], + "source_table": { + "project_id": source_one.project, + "dataset_id": source_one.dataset_id, + "table_id": source_one.table_id, }, - "destinationFormat": "NEWLINE_DELIMITED_JSON", + "destination_format": "NEWLINE_DELIMITED_JSON", "compression": "GZIP", }) ``` diff --git a/sdk/python/pulumi_gcp/bigquery/reservation.py b/sdk/python/pulumi_gcp/bigquery/reservation.py index 5420b22da7..233e150bc1 100644 --- a/sdk/python/pulumi_gcp/bigquery/reservation.py +++ b/sdk/python/pulumi_gcp/bigquery/reservation.py @@ -401,7 +401,7 @@ def __init__(__self__, ignore_idle_slots=True, concurrency=0, autoscale={ - "maxSlots": 100, + "max_slots": 100, }) ``` @@ -482,7 +482,7 @@ def __init__(__self__, ignore_idle_slots=True, concurrency=0, autoscale={ - "maxSlots": 100, + "max_slots": 100, }) ``` diff --git a/sdk/python/pulumi_gcp/bigquery/routine.py b/sdk/python/pulumi_gcp/bigquery/routine.py index 72e012cb81..a46e6cec5a 100644 --- a/sdk/python/pulumi_gcp/bigquery/routine.py +++ b/sdk/python/pulumi_gcp/bigquery/routine.py @@ -704,11 +704,11 @@ def __init__(__self__, arguments=[ { "name": "x", - "dataType": "{\\"typeKind\\" : \\"FLOAT64\\"}", + "data_type": "{\\"typeKind\\" : \\"FLOAT64\\"}", }, { "name": "y", - "dataType": "{\\"typeKind\\" : \\"FLOAT64\\"}", + "data_type": "{\\"typeKind\\" : \\"FLOAT64\\"}", }, ], return_type="{\\"typeKind\\" : \\"FLOAT64\\"}") @@ -729,9 +729,9 @@ def __init__(__self__, definition_body="SELECT 1 + value AS value\\n", arguments=[{ "name": "value", - "argumentKind": "FIXED_TYPE", - "dataType": json.dumps({ - "typeKind": "INT64", + "argument_kind": "FIXED_TYPE", + "data_type": json.dumps({ + "type_kind": "INT64", }), }], return_table_type=json.dumps({ @@ -781,7 +781,7 @@ def __init__(__self__, \"\"\", spark_options={ "connection": test_connection.name, - "runtimeVersion": "2.1", + "runtime_version": "2.1", }) ``` ### Bigquery Routine Pyspark Mainfile @@ -803,11 +803,11 @@ def __init__(__self__, definition_body="", spark_options={ "connection": test_connection.name, - "runtimeVersion": "2.1", - "mainFileUri": "gs://test-bucket/main.py", - "pyFileUris": ["gs://test-bucket/lib.py"], - "fileUris": ["gs://test-bucket/distribute_in_executor.json"], - "archiveUris": ["gs://test-bucket/distribute_in_executor.tar.gz"], + "runtime_version": "2.1", + "main_file_uri": "gs://test-bucket/main.py", + "py_file_uris": ["gs://test-bucket/lib.py"], + "file_uris": ["gs://test-bucket/distribute_in_executor.json"], + "archive_uris": ["gs://test-bucket/distribute_in_executor.tar.gz"], }) ``` ### Bigquery Routine Spark Jar @@ -829,13 +829,13 @@ def __init__(__self__, definition_body="", spark_options={ "connection": test_connection.name, - "runtimeVersion": "2.1", - "containerImage": "gcr.io/my-project-id/my-spark-image:latest", - "mainClass": "com.google.test.jar.MainClass", - "jarUris": ["gs://test-bucket/uberjar_spark_spark3.jar"], + "runtime_version": "2.1", + "container_image": "gcr.io/my-project-id/my-spark-image:latest", + "main_class": "com.google.test.jar.MainClass", + "jar_uris": ["gs://test-bucket/uberjar_spark_spark3.jar"], "properties": { - "spark.dataproc.scaling.version": "2", - "spark.reducer.fetchMigratedShuffle.enabled": "true", + "spark_dataproc_scaling_version": "2", + "spark_reducer_fetch_migrated_shuffle_enabled": "true", }, }) ``` @@ -855,7 +855,7 @@ def __init__(__self__, definition_body="SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')", arguments=[{ "name": "ssn", - "dataType": "{\\"typeKind\\" : \\"STRING\\"}", + "data_type": "{\\"typeKind\\" : \\"STRING\\"}", }], return_type="{\\"typeKind\\" : \\"STRING\\"}") ``` @@ -879,8 +879,8 @@ def __init__(__self__, remote_function_options={ "endpoint": "https://us-east1-my_gcf_project.cloudfunctions.net/remote_add", "connection": test_connection.name, - "maxBatchingRows": "10", - "userDefinedContext": { + "max_batching_rows": "10", + "user_defined_context": { "z": "1.5", }, }) @@ -999,11 +999,11 @@ def __init__(__self__, arguments=[ { "name": "x", - "dataType": "{\\"typeKind\\" : \\"FLOAT64\\"}", + "data_type": "{\\"typeKind\\" : \\"FLOAT64\\"}", }, { "name": "y", - "dataType": "{\\"typeKind\\" : \\"FLOAT64\\"}", + "data_type": "{\\"typeKind\\" : \\"FLOAT64\\"}", }, ], return_type="{\\"typeKind\\" : \\"FLOAT64\\"}") @@ -1024,9 +1024,9 @@ def __init__(__self__, definition_body="SELECT 1 + value AS value\\n", arguments=[{ "name": "value", - "argumentKind": "FIXED_TYPE", - "dataType": json.dumps({ - "typeKind": "INT64", + "argument_kind": "FIXED_TYPE", + "data_type": json.dumps({ + "type_kind": "INT64", }), }], return_table_type=json.dumps({ @@ -1076,7 +1076,7 @@ def __init__(__self__, \"\"\", spark_options={ "connection": test_connection.name, - "runtimeVersion": "2.1", + "runtime_version": "2.1", }) ``` ### Bigquery Routine Pyspark Mainfile @@ -1098,11 +1098,11 @@ def __init__(__self__, definition_body="", spark_options={ "connection": test_connection.name, - "runtimeVersion": "2.1", - "mainFileUri": "gs://test-bucket/main.py", - "pyFileUris": ["gs://test-bucket/lib.py"], - "fileUris": ["gs://test-bucket/distribute_in_executor.json"], - "archiveUris": ["gs://test-bucket/distribute_in_executor.tar.gz"], + "runtime_version": "2.1", + "main_file_uri": "gs://test-bucket/main.py", + "py_file_uris": ["gs://test-bucket/lib.py"], + "file_uris": ["gs://test-bucket/distribute_in_executor.json"], + "archive_uris": ["gs://test-bucket/distribute_in_executor.tar.gz"], }) ``` ### Bigquery Routine Spark Jar @@ -1124,13 +1124,13 @@ def __init__(__self__, definition_body="", spark_options={ "connection": test_connection.name, - "runtimeVersion": "2.1", - "containerImage": "gcr.io/my-project-id/my-spark-image:latest", - "mainClass": "com.google.test.jar.MainClass", - "jarUris": ["gs://test-bucket/uberjar_spark_spark3.jar"], + "runtime_version": "2.1", + "container_image": "gcr.io/my-project-id/my-spark-image:latest", + "main_class": "com.google.test.jar.MainClass", + "jar_uris": ["gs://test-bucket/uberjar_spark_spark3.jar"], "properties": { - "spark.dataproc.scaling.version": "2", - "spark.reducer.fetchMigratedShuffle.enabled": "true", + "spark_dataproc_scaling_version": "2", + "spark_reducer_fetch_migrated_shuffle_enabled": "true", }, }) ``` @@ -1150,7 +1150,7 @@ def __init__(__self__, definition_body="SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')", arguments=[{ "name": "ssn", - "dataType": "{\\"typeKind\\" : \\"STRING\\"}", + "data_type": "{\\"typeKind\\" : \\"STRING\\"}", }], return_type="{\\"typeKind\\" : \\"STRING\\"}") ``` @@ -1174,8 +1174,8 @@ def __init__(__self__, remote_function_options={ "endpoint": "https://us-east1-my_gcf_project.cloudfunctions.net/remote_add", "connection": test_connection.name, - "maxBatchingRows": "10", - "userDefinedContext": { + "max_batching_rows": "10", + "user_defined_context": { "z": "1.5", }, }) diff --git a/sdk/python/pulumi_gcp/bigquery/table.py b/sdk/python/pulumi_gcp/bigquery/table.py index eca73a2e84..ed8dce5865 100644 --- a/sdk/python/pulumi_gcp/bigquery/table.py +++ b/sdk/python/pulumi_gcp/bigquery/table.py @@ -1163,11 +1163,11 @@ def __init__(__self__, table_id="sheet", external_data_configuration={ "autodetect": True, - "sourceFormat": "GOOGLE_SHEETS", - "googleSheetsOptions": { - "skipLeadingRows": 1, + "source_format": "GOOGLE_SHEETS", + "google_sheets_options": { + "skip_leading_rows": 1, }, - "sourceUris": ["https://docs.google.com/spreadsheets/d/123456789012345"], + "source_uris": ["https://docs.google.com/spreadsheets/d/123456789012345"], }) ``` @@ -1314,11 +1314,11 @@ def __init__(__self__, table_id="sheet", external_data_configuration={ "autodetect": True, - "sourceFormat": "GOOGLE_SHEETS", - "googleSheetsOptions": { - "skipLeadingRows": 1, + "source_format": "GOOGLE_SHEETS", + "google_sheets_options": { + "skip_leading_rows": 1, }, - "sourceUris": ["https://docs.google.com/spreadsheets/d/123456789012345"], + "source_uris": ["https://docs.google.com/spreadsheets/d/123456789012345"], }) ``` diff --git a/sdk/python/pulumi_gcp/bigqueryanalyticshub/listing.py b/sdk/python/pulumi_gcp/bigqueryanalyticshub/listing.py index 20e4142579..d523e4a3d4 100644 --- a/sdk/python/pulumi_gcp/bigqueryanalyticshub/listing.py +++ b/sdk/python/pulumi_gcp/bigqueryanalyticshub/listing.py @@ -610,7 +610,7 @@ def __init__(__self__, }, restricted_export_config={ "enabled": True, - "restrictQueryResult": True, + "restrict_query_result": True, }) ``` @@ -727,7 +727,7 @@ def __init__(__self__, }, restricted_export_config={ "enabled": True, - "restrictQueryResult": True, + "restrict_query_result": True, }) ``` diff --git a/sdk/python/pulumi_gcp/bigquerydatapolicy/data_policy.py b/sdk/python/pulumi_gcp/bigquerydatapolicy/data_policy.py index 2d073d03b0..ca9532184b 100644 --- a/sdk/python/pulumi_gcp/bigquerydatapolicy/data_policy.py +++ b/sdk/python/pulumi_gcp/bigquerydatapolicy/data_policy.py @@ -334,7 +334,7 @@ def __init__(__self__, return_type="{\\"typeKind\\" : \\"STRING\\"}", arguments=[{ "name": "ssn", - "dataType": "{\\"typeKind\\" : \\"STRING\\"}", + "data_type": "{\\"typeKind\\" : \\"STRING\\"}", }]) data_policy = gcp.bigquerydatapolicy.DataPolicy("data_policy", location="us-central1", @@ -451,7 +451,7 @@ def __init__(__self__, return_type="{\\"typeKind\\" : \\"STRING\\"}", arguments=[{ "name": "ssn", - "dataType": "{\\"typeKind\\" : \\"STRING\\"}", + "data_type": "{\\"typeKind\\" : \\"STRING\\"}", }]) data_policy = gcp.bigquerydatapolicy.DataPolicy("data_policy", location="us-central1", diff --git a/sdk/python/pulumi_gcp/bigtable/authorized_view.py b/sdk/python/pulumi_gcp/bigtable/authorized_view.py index e3206d6717..ed087a351f 100644 --- a/sdk/python/pulumi_gcp/bigtable/authorized_view.py +++ b/sdk/python/pulumi_gcp/bigtable/authorized_view.py @@ -251,10 +251,10 @@ def __init__(__self__, instance = gcp.bigtable.Instance("instance", name="tf-instance", clusters=[{ - "clusterId": "tf-instance-cluster", + "cluster_id": "tf-instance-cluster", "zone": "us-central1-b", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }]) table = gcp.bigtable.Table("table", name="tf-table", @@ -278,18 +278,18 @@ def __init__(__self__, instance_name=instance.name, table_name=table.name, subset_view={ - "rowPrefixes": [std.base64encode(input="prefix#").result], - "familySubsets": [ + "row_prefixes": [std.base64encode(input="prefix#").result], + "family_subsets": [ { - "familyName": "family-first", + "family_name": "family-first", "qualifiers": [ std.base64encode(input="qualifier").result, std.base64encode(input="qualifier-second").result, ], }, { - "familyName": "family-second", - "qualifierPrefixes": [""], + "family_name": "family-second", + "qualifier_prefixes": [""], }, ], }) @@ -347,10 +347,10 @@ def __init__(__self__, instance = gcp.bigtable.Instance("instance", name="tf-instance", clusters=[{ - "clusterId": "tf-instance-cluster", + "cluster_id": "tf-instance-cluster", "zone": "us-central1-b", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }]) table = gcp.bigtable.Table("table", name="tf-table", @@ -374,18 +374,18 @@ def __init__(__self__, instance_name=instance.name, table_name=table.name, subset_view={ - "rowPrefixes": [std.base64encode(input="prefix#").result], - "familySubsets": [ + "row_prefixes": [std.base64encode(input="prefix#").result], + "family_subsets": [ { - "familyName": "family-first", + "family_name": "family-first", "qualifiers": [ std.base64encode(input="qualifier").result, std.base64encode(input="qualifier-second").result, ], }, { - "familyName": "family-second", - "qualifierPrefixes": [""], + "family_name": "family-second", + "qualifier_prefixes": [""], }, ], }) diff --git a/sdk/python/pulumi_gcp/bigtable/gc_policy.py b/sdk/python/pulumi_gcp/bigtable/gc_policy.py index 0b1e935cb0..363050d506 100644 --- a/sdk/python/pulumi_gcp/bigtable/gc_policy.py +++ b/sdk/python/pulumi_gcp/bigtable/gc_policy.py @@ -414,9 +414,9 @@ def __init__(__self__, instance = gcp.bigtable.Instance("instance", name="tf-instance", clusters=[{ - "clusterId": "tf-instance-cluster", - "numNodes": 3, - "storageType": "HDD", + "cluster_id": "tf-instance-cluster", + "num_nodes": 3, + "storage_type": "HDD", }]) table = gcp.bigtable.Table("table", name="tf-table", @@ -472,7 +472,7 @@ def __init__(__self__, instance = gcp.bigtable.Instance("instance", name="instance_name", clusters=[{ - "clusterId": "cid", + "cluster_id": "cid", "zone": "us-central1-b", }], instance_type="DEVELOPMENT", @@ -563,9 +563,9 @@ def __init__(__self__, instance = gcp.bigtable.Instance("instance", name="tf-instance", clusters=[{ - "clusterId": "tf-instance-cluster", - "numNodes": 3, - "storageType": "HDD", + "cluster_id": "tf-instance-cluster", + "num_nodes": 3, + "storage_type": "HDD", }]) table = gcp.bigtable.Table("table", name="tf-table", @@ -621,7 +621,7 @@ def __init__(__self__, instance = gcp.bigtable.Instance("instance", name="instance_name", clusters=[{ - "clusterId": "cid", + "cluster_id": "cid", "zone": "us-central1-b", }], instance_type="DEVELOPMENT", diff --git a/sdk/python/pulumi_gcp/bigtable/instance.py b/sdk/python/pulumi_gcp/bigtable/instance.py index a3e059ac3a..f1adadfc62 100644 --- a/sdk/python/pulumi_gcp/bigtable/instance.py +++ b/sdk/python/pulumi_gcp/bigtable/instance.py @@ -427,9 +427,9 @@ def __init__(__self__, production_instance = gcp.bigtable.Instance("production-instance", name="tf-instance", clusters=[{ - "clusterId": "tf-instance-cluster", - "numNodes": 1, - "storageType": "HDD", + "cluster_id": "tf-instance-cluster", + "num_nodes": 1, + "storage_type": "HDD", }], labels={ "my-label": "prod-label", @@ -446,19 +446,19 @@ def __init__(__self__, name="tf-instance", clusters=[ { - "clusterId": "tf-instance-cluster1", - "numNodes": 1, - "storageType": "HDD", + "cluster_id": "tf-instance-cluster1", + "num_nodes": 1, + "storage_type": "HDD", "zone": "us-central1-c", }, { - "clusterId": "tf-instance-cluster2", - "storageType": "HDD", + "cluster_id": "tf-instance-cluster2", + "storage_type": "HDD", "zone": "us-central1-b", - "autoscalingConfig": { - "minNodes": 1, - "maxNodes": 3, - "cpuTarget": 50, + "autoscaling_config": { + "min_nodes": 1, + "max_nodes": 3, + "cpu_target": 50, }, }, ], @@ -548,9 +548,9 @@ def __init__(__self__, production_instance = gcp.bigtable.Instance("production-instance", name="tf-instance", clusters=[{ - "clusterId": "tf-instance-cluster", - "numNodes": 1, - "storageType": "HDD", + "cluster_id": "tf-instance-cluster", + "num_nodes": 1, + "storage_type": "HDD", }], labels={ "my-label": "prod-label", @@ -567,19 +567,19 @@ def __init__(__self__, name="tf-instance", clusters=[ { - "clusterId": "tf-instance-cluster1", - "numNodes": 1, - "storageType": "HDD", + "cluster_id": "tf-instance-cluster1", + "num_nodes": 1, + "storage_type": "HDD", "zone": "us-central1-c", }, { - "clusterId": "tf-instance-cluster2", - "storageType": "HDD", + "cluster_id": "tf-instance-cluster2", + "storage_type": "HDD", "zone": "us-central1-b", - "autoscalingConfig": { - "minNodes": 1, - "maxNodes": 3, - "cpuTarget": 50, + "autoscaling_config": { + "min_nodes": 1, + "max_nodes": 3, + "cpu_target": 50, }, }, ], diff --git a/sdk/python/pulumi_gcp/bigtable/table.py b/sdk/python/pulumi_gcp/bigtable/table.py index cecb7865ef..9096c4a649 100644 --- a/sdk/python/pulumi_gcp/bigtable/table.py +++ b/sdk/python/pulumi_gcp/bigtable/table.py @@ -341,10 +341,10 @@ def __init__(__self__, instance = gcp.bigtable.Instance("instance", name="tf-instance", clusters=[{ - "clusterId": "tf-instance-cluster", + "cluster_id": "tf-instance-cluster", "zone": "us-central1-b", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }]) table = gcp.bigtable.Table("table", name="tf-table", @@ -428,10 +428,10 @@ def __init__(__self__, instance = gcp.bigtable.Instance("instance", name="tf-instance", clusters=[{ - "clusterId": "tf-instance-cluster", + "cluster_id": "tf-instance-cluster", "zone": "us-central1-b", - "numNodes": 3, - "storageType": "HDD", + "num_nodes": 3, + "storage_type": "HDD", }]) table = gcp.bigtable.Table("table", name="tf-table", diff --git a/sdk/python/pulumi_gcp/billing/budget.py b/sdk/python/pulumi_gcp/billing/budget.py index 0932ad99f4..09bbf6da3c 100644 --- a/sdk/python/pulumi_gcp/billing/budget.py +++ b/sdk/python/pulumi_gcp/billing/budget.py @@ -333,13 +333,13 @@ def __init__(__self__, billing_account=account.id, display_name="Example Billing Budget", amount={ - "specifiedAmount": { - "currencyCode": "USD", + "specified_amount": { + "currency_code": "USD", "units": "100000", }, }, threshold_rules=[{ - "thresholdPercent": 0.5, + "threshold_percent": 0.5, }]) ``` ### Billing Budget Lastperiod @@ -357,10 +357,10 @@ def __init__(__self__, "projects": [f"projects/{project.number}"], }, amount={ - "lastPeriodAmount": True, + "last_period_amount": True, }, threshold_rules=[{ - "thresholdPercent": 10, + "threshold_percent": 10, }]) ``` ### Billing Budget Filter @@ -376,27 +376,27 @@ def __init__(__self__, display_name="Example Billing Budget", budget_filter={ "projects": [f"projects/{project.number}"], - "creditTypesTreatment": "INCLUDE_SPECIFIED_CREDITS", + "credit_types_treatment": "INCLUDE_SPECIFIED_CREDITS", "services": ["services/24E6-581D-38E5"], - "creditTypes": [ + "credit_types": [ "PROMOTION", "FREE_TIER", ], - "resourceAncestors": ["organizations/123456789"], + "resource_ancestors": ["organizations/123456789"], }, amount={ - "specifiedAmount": { - "currencyCode": "USD", + "specified_amount": { + "currency_code": "USD", "units": "100000", }, }, threshold_rules=[ { - "thresholdPercent": 0.5, + "threshold_percent": 0.5, }, { - "thresholdPercent": 0.9, - "spendBasis": "FORECASTED_SPEND", + "threshold_percent": 0.9, + "spend_basis": "FORECASTED_SPEND", }, ]) ``` @@ -421,23 +421,23 @@ def __init__(__self__, "projects": [f"projects/{project.number}"], }, amount={ - "specifiedAmount": { - "currencyCode": "USD", + "specified_amount": { + "currency_code": "USD", "units": "100000", }, }, threshold_rules=[ { - "thresholdPercent": 1, + "threshold_percent": 1, }, { - "thresholdPercent": 1, - "spendBasis": "FORECASTED_SPEND", + "threshold_percent": 1, + "spend_basis": "FORECASTED_SPEND", }, ], all_updates_rule={ - "monitoringNotificationChannels": [notification_channel.id], - "disableDefaultIamRecipients": True, + "monitoring_notification_channels": [notification_channel.id], + "disable_default_iam_recipients": True, }) ``` ### Billing Budget Notify Project Recipient @@ -455,14 +455,14 @@ def __init__(__self__, "projects": [f"projects/{project.number}"], }, amount={ - "specifiedAmount": { - "currencyCode": "USD", + "specified_amount": { + "currency_code": "USD", "units": "100000", }, }, all_updates_rule={ - "monitoringNotificationChannels": [], - "enableProjectLevelRecipients": True, + "monitoring_notification_channels": [], + "enable_project_level_recipients": True, }) ``` ### Billing Budget Customperiod @@ -478,15 +478,15 @@ def __init__(__self__, display_name="Example Billing Budget", budget_filter={ "projects": [f"projects/{project.number}"], - "creditTypesTreatment": "EXCLUDE_ALL_CREDITS", + "credit_types_treatment": "EXCLUDE_ALL_CREDITS", "services": ["services/24E6-581D-38E5"], - "customPeriod": { - "startDate": { + "custom_period": { + "start_date": { "year": 2022, "month": 1, "day": 1, }, - "endDate": { + "end_date": { "year": 2023, "month": 12, "day": 31, @@ -494,17 +494,17 @@ def __init__(__self__, }, }, amount={ - "specifiedAmount": { - "currencyCode": "USD", + "specified_amount": { + "currency_code": "USD", "units": "100000", }, }, threshold_rules=[ { - "thresholdPercent": 0.5, + "threshold_percent": 0.5, }, { - "thresholdPercent": 0.9, + "threshold_percent": 0.9, }, ]) ``` @@ -581,13 +581,13 @@ def __init__(__self__, billing_account=account.id, display_name="Example Billing Budget", amount={ - "specifiedAmount": { - "currencyCode": "USD", + "specified_amount": { + "currency_code": "USD", "units": "100000", }, }, threshold_rules=[{ - "thresholdPercent": 0.5, + "threshold_percent": 0.5, }]) ``` ### Billing Budget Lastperiod @@ -605,10 +605,10 @@ def __init__(__self__, "projects": [f"projects/{project.number}"], }, amount={ - "lastPeriodAmount": True, + "last_period_amount": True, }, threshold_rules=[{ - "thresholdPercent": 10, + "threshold_percent": 10, }]) ``` ### Billing Budget Filter @@ -624,27 +624,27 @@ def __init__(__self__, display_name="Example Billing Budget", budget_filter={ "projects": [f"projects/{project.number}"], - "creditTypesTreatment": "INCLUDE_SPECIFIED_CREDITS", + "credit_types_treatment": "INCLUDE_SPECIFIED_CREDITS", "services": ["services/24E6-581D-38E5"], - "creditTypes": [ + "credit_types": [ "PROMOTION", "FREE_TIER", ], - "resourceAncestors": ["organizations/123456789"], + "resource_ancestors": ["organizations/123456789"], }, amount={ - "specifiedAmount": { - "currencyCode": "USD", + "specified_amount": { + "currency_code": "USD", "units": "100000", }, }, threshold_rules=[ { - "thresholdPercent": 0.5, + "threshold_percent": 0.5, }, { - "thresholdPercent": 0.9, - "spendBasis": "FORECASTED_SPEND", + "threshold_percent": 0.9, + "spend_basis": "FORECASTED_SPEND", }, ]) ``` @@ -669,23 +669,23 @@ def __init__(__self__, "projects": [f"projects/{project.number}"], }, amount={ - "specifiedAmount": { - "currencyCode": "USD", + "specified_amount": { + "currency_code": "USD", "units": "100000", }, }, threshold_rules=[ { - "thresholdPercent": 1, + "threshold_percent": 1, }, { - "thresholdPercent": 1, - "spendBasis": "FORECASTED_SPEND", + "threshold_percent": 1, + "spend_basis": "FORECASTED_SPEND", }, ], all_updates_rule={ - "monitoringNotificationChannels": [notification_channel.id], - "disableDefaultIamRecipients": True, + "monitoring_notification_channels": [notification_channel.id], + "disable_default_iam_recipients": True, }) ``` ### Billing Budget Notify Project Recipient @@ -703,14 +703,14 @@ def __init__(__self__, "projects": [f"projects/{project.number}"], }, amount={ - "specifiedAmount": { - "currencyCode": "USD", + "specified_amount": { + "currency_code": "USD", "units": "100000", }, }, all_updates_rule={ - "monitoringNotificationChannels": [], - "enableProjectLevelRecipients": True, + "monitoring_notification_channels": [], + "enable_project_level_recipients": True, }) ``` ### Billing Budget Customperiod @@ -726,15 +726,15 @@ def __init__(__self__, display_name="Example Billing Budget", budget_filter={ "projects": [f"projects/{project.number}"], - "creditTypesTreatment": "EXCLUDE_ALL_CREDITS", + "credit_types_treatment": "EXCLUDE_ALL_CREDITS", "services": ["services/24E6-581D-38E5"], - "customPeriod": { - "startDate": { + "custom_period": { + "start_date": { "year": 2022, "month": 1, "day": 1, }, - "endDate": { + "end_date": { "year": 2023, "month": 12, "day": 31, @@ -742,17 +742,17 @@ def __init__(__self__, }, }, amount={ - "specifiedAmount": { - "currencyCode": "USD", + "specified_amount": { + "currency_code": "USD", "units": "100000", }, }, threshold_rules=[ { - "thresholdPercent": 0.5, + "threshold_percent": 0.5, }, { - "thresholdPercent": 0.9, + "threshold_percent": 0.9, }, ]) ``` diff --git a/sdk/python/pulumi_gcp/binaryauthorization/attestor.py b/sdk/python/pulumi_gcp/binaryauthorization/attestor.py index 846ee39edf..0eb90eeeb0 100644 --- a/sdk/python/pulumi_gcp/binaryauthorization/attestor.py +++ b/sdk/python/pulumi_gcp/binaryauthorization/attestor.py @@ -188,15 +188,15 @@ def __init__(__self__, name="test-attestor-note", attestation_authority={ "hint": { - "humanReadableName": "Attestor Note", + "human_readable_name": "Attestor Note", }, }) attestor = gcp.binaryauthorization.Attestor("attestor", name="test-attestor", attestation_authority_note={ - "noteReference": note.name, - "publicKeys": [{ - "asciiArmoredPgpPublicKey": \"\"\"mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl + "note_reference": note.name, + "public_keys": [{ + "ascii_armored_pgp_public_key": \"\"\"mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl bB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0 oR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6 V39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD @@ -236,18 +236,18 @@ def __init__(__self__, name="test-attestor-note", attestation_authority={ "hint": { - "humanReadableName": "Attestor Note", + "human_readable_name": "Attestor Note", }, }) attestor = gcp.binaryauthorization.Attestor("attestor", name="test-attestor", attestation_authority_note={ - "noteReference": note.name, - "publicKeys": [{ + "note_reference": note.name, + "public_keys": [{ "id": version.id, - "pkixPublicKey": { - "publicKeyPem": version.public_keys[0].pem, - "signatureAlgorithm": version.public_keys[0].algorithm, + "pkix_public_key": { + "public_key_pem": version.public_keys[0].pem, + "signature_algorithm": version.public_keys[0].algorithm, }, }], }) @@ -311,15 +311,15 @@ def __init__(__self__, name="test-attestor-note", attestation_authority={ "hint": { - "humanReadableName": "Attestor Note", + "human_readable_name": "Attestor Note", }, }) attestor = gcp.binaryauthorization.Attestor("attestor", name="test-attestor", attestation_authority_note={ - "noteReference": note.name, - "publicKeys": [{ - "asciiArmoredPgpPublicKey": \"\"\"mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl + "note_reference": note.name, + "public_keys": [{ + "ascii_armored_pgp_public_key": \"\"\"mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl bB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0 oR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6 V39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD @@ -359,18 +359,18 @@ def __init__(__self__, name="test-attestor-note", attestation_authority={ "hint": { - "humanReadableName": "Attestor Note", + "human_readable_name": "Attestor Note", }, }) attestor = gcp.binaryauthorization.Attestor("attestor", name="test-attestor", attestation_authority_note={ - "noteReference": note.name, - "publicKeys": [{ + "note_reference": note.name, + "public_keys": [{ "id": version.id, - "pkixPublicKey": { - "publicKeyPem": version.public_keys[0].pem, - "signatureAlgorithm": version.public_keys[0].algorithm, + "pkix_public_key": { + "public_key_pem": version.public_keys[0].pem, + "signature_algorithm": version.public_keys[0].algorithm, }, }], }) diff --git a/sdk/python/pulumi_gcp/binaryauthorization/policy.py b/sdk/python/pulumi_gcp/binaryauthorization/policy.py index 299a6e6387..c54111c27c 100644 --- a/sdk/python/pulumi_gcp/binaryauthorization/policy.py +++ b/sdk/python/pulumi_gcp/binaryauthorization/policy.py @@ -278,27 +278,27 @@ def __init__(__self__, name="test-attestor-note", attestation_authority={ "hint": { - "humanReadableName": "My attestor", + "human_readable_name": "My attestor", }, }) attestor = gcp.binaryauthorization.Attestor("attestor", name="test-attestor", attestation_authority_note={ - "noteReference": note.name, + "note_reference": note.name, }) policy = gcp.binaryauthorization.Policy("policy", admission_whitelist_patterns=[{ - "namePattern": "gcr.io/google_containers/*", + "name_pattern": "gcr.io/google_containers/*", }], default_admission_rule={ - "evaluationMode": "ALWAYS_ALLOW", - "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG", + "evaluation_mode": "ALWAYS_ALLOW", + "enforcement_mode": "ENFORCED_BLOCK_AND_AUDIT_LOG", }, cluster_admission_rules=[{ "cluster": "us-central1-a.prod-cluster", - "evaluationMode": "REQUIRE_ATTESTATION", - "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG", - "requireAttestationsBies": [attestor.name], + "evaluation_mode": "REQUIRE_ATTESTATION", + "enforcement_mode": "ENFORCED_BLOCK_AND_AUDIT_LOG", + "require_attestations_bies": [attestor.name], }]) ``` ### Binary Authorization Policy Global Evaluation @@ -311,19 +311,19 @@ def __init__(__self__, name="test-attestor-note", attestation_authority={ "hint": { - "humanReadableName": "My attestor", + "human_readable_name": "My attestor", }, }) attestor = gcp.binaryauthorization.Attestor("attestor", name="test-attestor", attestation_authority_note={ - "noteReference": note.name, + "note_reference": note.name, }) policy = gcp.binaryauthorization.Policy("policy", default_admission_rule={ - "evaluationMode": "REQUIRE_ATTESTATION", - "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG", - "requireAttestationsBies": [attestor.name], + "evaluation_mode": "REQUIRE_ATTESTATION", + "enforcement_mode": "ENFORCED_BLOCK_AND_AUDIT_LOG", + "require_attestations_bies": [attestor.name], }, global_policy_evaluation_mode="ENABLE") ``` @@ -388,27 +388,27 @@ def __init__(__self__, name="test-attestor-note", attestation_authority={ "hint": { - "humanReadableName": "My attestor", + "human_readable_name": "My attestor", }, }) attestor = gcp.binaryauthorization.Attestor("attestor", name="test-attestor", attestation_authority_note={ - "noteReference": note.name, + "note_reference": note.name, }) policy = gcp.binaryauthorization.Policy("policy", admission_whitelist_patterns=[{ - "namePattern": "gcr.io/google_containers/*", + "name_pattern": "gcr.io/google_containers/*", }], default_admission_rule={ - "evaluationMode": "ALWAYS_ALLOW", - "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG", + "evaluation_mode": "ALWAYS_ALLOW", + "enforcement_mode": "ENFORCED_BLOCK_AND_AUDIT_LOG", }, cluster_admission_rules=[{ "cluster": "us-central1-a.prod-cluster", - "evaluationMode": "REQUIRE_ATTESTATION", - "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG", - "requireAttestationsBies": [attestor.name], + "evaluation_mode": "REQUIRE_ATTESTATION", + "enforcement_mode": "ENFORCED_BLOCK_AND_AUDIT_LOG", + "require_attestations_bies": [attestor.name], }]) ``` ### Binary Authorization Policy Global Evaluation @@ -421,19 +421,19 @@ def __init__(__self__, name="test-attestor-note", attestation_authority={ "hint": { - "humanReadableName": "My attestor", + "human_readable_name": "My attestor", }, }) attestor = gcp.binaryauthorization.Attestor("attestor", name="test-attestor", attestation_authority_note={ - "noteReference": note.name, + "note_reference": note.name, }) policy = gcp.binaryauthorization.Policy("policy", default_admission_rule={ - "evaluationMode": "REQUIRE_ATTESTATION", - "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG", - "requireAttestationsBies": [attestor.name], + "evaluation_mode": "REQUIRE_ATTESTATION", + "enforcement_mode": "ENFORCED_BLOCK_AND_AUDIT_LOG", + "require_attestations_bies": [attestor.name], }, global_policy_evaluation_mode="ENABLE") ``` diff --git a/sdk/python/pulumi_gcp/blockchainnodeengine/blockchain_nodes.py b/sdk/python/pulumi_gcp/blockchainnodeengine/blockchain_nodes.py index d780d58044..369b7655d2 100644 --- a/sdk/python/pulumi_gcp/blockchainnodeengine/blockchain_nodes.py +++ b/sdk/python/pulumi_gcp/blockchainnodeengine/blockchain_nodes.py @@ -394,17 +394,17 @@ def __init__(__self__, blockchain_type="ETHEREUM", blockchain_node_id="blockchain_basic_node", ethereum_details={ - "apiEnableAdmin": True, - "apiEnableDebug": True, - "validatorConfig": { - "mevRelayUrls": [ + "api_enable_admin": True, + "api_enable_debug": True, + "validator_config": { + "mev_relay_urls": [ "https://mev1.example.org/", "https://mev2.example.org/", ], }, - "nodeType": "ARCHIVE", - "consensusClient": "LIGHTHOUSE", - "executionClient": "ERIGON", + "node_type": "ARCHIVE", + "consensus_client": "LIGHTHOUSE", + "execution_client": "ERIGON", "network": "MAINNET", }, labels={ @@ -422,20 +422,20 @@ def __init__(__self__, blockchain_type="ETHEREUM", blockchain_node_id="blockchain_geth_node", ethereum_details={ - "apiEnableAdmin": True, - "apiEnableDebug": True, - "validatorConfig": { - "mevRelayUrls": [ + "api_enable_admin": True, + "api_enable_debug": True, + "validator_config": { + "mev_relay_urls": [ "https://mev1.example.org/", "https://mev2.example.org/", ], }, - "nodeType": "FULL", - "consensusClient": "LIGHTHOUSE", - "executionClient": "GETH", + "node_type": "FULL", + "consensus_client": "LIGHTHOUSE", + "execution_client": "GETH", "network": "MAINNET", - "gethDetails": { - "garbageCollectionMode": "FULL", + "geth_details": { + "garbage_collection_mode": "FULL", }, }, labels={ @@ -513,17 +513,17 @@ def __init__(__self__, blockchain_type="ETHEREUM", blockchain_node_id="blockchain_basic_node", ethereum_details={ - "apiEnableAdmin": True, - "apiEnableDebug": True, - "validatorConfig": { - "mevRelayUrls": [ + "api_enable_admin": True, + "api_enable_debug": True, + "validator_config": { + "mev_relay_urls": [ "https://mev1.example.org/", "https://mev2.example.org/", ], }, - "nodeType": "ARCHIVE", - "consensusClient": "LIGHTHOUSE", - "executionClient": "ERIGON", + "node_type": "ARCHIVE", + "consensus_client": "LIGHTHOUSE", + "execution_client": "ERIGON", "network": "MAINNET", }, labels={ @@ -541,20 +541,20 @@ def __init__(__self__, blockchain_type="ETHEREUM", blockchain_node_id="blockchain_geth_node", ethereum_details={ - "apiEnableAdmin": True, - "apiEnableDebug": True, - "validatorConfig": { - "mevRelayUrls": [ + "api_enable_admin": True, + "api_enable_debug": True, + "validator_config": { + "mev_relay_urls": [ "https://mev1.example.org/", "https://mev2.example.org/", ], }, - "nodeType": "FULL", - "consensusClient": "LIGHTHOUSE", - "executionClient": "GETH", + "node_type": "FULL", + "consensus_client": "LIGHTHOUSE", + "execution_client": "GETH", "network": "MAINNET", - "gethDetails": { - "garbageCollectionMode": "FULL", + "geth_details": { + "garbage_collection_mode": "FULL", }, }, labels={ diff --git a/sdk/python/pulumi_gcp/certificateauthority/authority.py b/sdk/python/pulumi_gcp/certificateauthority/authority.py index e2206747ae..7acc80d5e1 100644 --- a/sdk/python/pulumi_gcp/certificateauthority/authority.py +++ b/sdk/python/pulumi_gcp/certificateauthority/authority.py @@ -791,37 +791,37 @@ def __init__(__self__, location="us-central1", deletion_protection=True, config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, - "maxIssuerPathLength": 10, + "x509_config": { + "ca_options": { + "is_ca": True, + "max_issuer_path_length": 10, }, - "keyUsage": { - "baseKeyUsage": { - "digitalSignature": True, - "contentCommitment": True, - "keyEncipherment": False, - "dataEncipherment": True, - "keyAgreement": True, - "certSign": True, - "crlSign": True, - "decipherOnly": True, + "key_usage": { + "base_key_usage": { + "digital_signature": True, + "content_commitment": True, + "key_encipherment": False, + "data_encipherment": True, + "key_agreement": True, + "cert_sign": True, + "crl_sign": True, + "decipher_only": True, }, - "extendedKeyUsage": { - "serverAuth": True, - "clientAuth": False, - "emailProtection": True, - "codeSigning": True, - "timeStamping": True, + "extended_key_usage": { + "server_auth": True, + "client_auth": False, + "email_protection": True, + "code_signing": True, + "time_stamping": True, }, }, }, @@ -842,26 +842,26 @@ def __init__(__self__, certificate_authority_id="my-certificate-authority-root", location="us-central1", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, + "x509_config": { + "ca_options": { + "is_ca": True, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": False, + "extended_key_usage": { + "server_auth": False, }, }, }, @@ -878,40 +878,40 @@ def __init__(__self__, location="us-central1", deletion_protection=True, subordinate_config={ - "certificateAuthority": root_ca.name, + "certificate_authority": root_ca.name, }, config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-subordinate-authority", + "common_name": "my-subordinate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, - "maxIssuerPathLength": 0, + "x509_config": { + "ca_options": { + "is_ca": True, + "max_issuer_path_length": 0, }, - "keyUsage": { - "baseKeyUsage": { - "digitalSignature": True, - "contentCommitment": True, - "keyEncipherment": False, - "dataEncipherment": True, - "keyAgreement": True, - "certSign": True, - "crlSign": True, - "decipherOnly": True, + "key_usage": { + "base_key_usage": { + "digital_signature": True, + "content_commitment": True, + "key_encipherment": False, + "data_encipherment": True, + "key_agreement": True, + "cert_sign": True, + "crl_sign": True, + "decipher_only": True, }, - "extendedKeyUsage": { - "serverAuth": True, - "clientAuth": False, - "emailProtection": True, - "codeSigning": True, - "timeStamping": True, + "extended_key_usage": { + "server_auth": True, + "client_auth": False, + "email_protection": True, + "code_signing": True, + "time_stamping": True, }, }, }, @@ -943,39 +943,39 @@ def __init__(__self__, location="us-central1", deletion_protection=True, key_spec={ - "cloudKmsKeyVersion": "projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1", + "cloud_kms_key_version": "projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1", }, config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "Example, Org.", - "commonName": "Example Authority", + "common_name": "Example Authority", }, }, - "x509Config": { - "caOptions": { - "isCa": True, - "maxIssuerPathLength": 10, + "x509_config": { + "ca_options": { + "is_ca": True, + "max_issuer_path_length": 10, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": False, + "extended_key_usage": { + "server_auth": False, }, }, - "nameConstraints": { + "name_constraints": { "critical": True, - "permittedDnsNames": ["*.example.com"], - "excludedDnsNames": ["*.deny.example.com"], - "permittedIpRanges": ["10.0.0.0/8"], - "excludedIpRanges": ["10.1.1.0/24"], - "permittedEmailAddresses": [".example.com"], - "excludedEmailAddresses": [".deny.example.com"], - "permittedUris": [".example.com"], - "excludedUris": [".deny.example.com"], + "permitted_dns_names": ["*.example.com"], + "excluded_dns_names": ["*.deny.example.com"], + "permitted_ip_ranges": ["10.0.0.0/8"], + "excluded_ip_ranges": ["10.1.1.0/24"], + "permitted_email_addresses": [".example.com"], + "excluded_email_addresses": [".deny.example.com"], + "permitted_uris": [".example.com"], + "excluded_uris": [".deny.example.com"], }, }, }, @@ -996,47 +996,47 @@ def __init__(__self__, location="us-central1", deletion_protection=True, config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "subjectKeyId": { - "keyId": "4cf3372289b1d411b999dbb9ebcd44744b6b2fca", + "subject_key_id": { + "key_id": "4cf3372289b1d411b999dbb9ebcd44744b6b2fca", }, - "x509Config": { - "caOptions": { - "isCa": True, - "maxIssuerPathLength": 10, + "x509_config": { + "ca_options": { + "is_ca": True, + "max_issuer_path_length": 10, }, - "keyUsage": { - "baseKeyUsage": { - "digitalSignature": True, - "contentCommitment": True, - "keyEncipherment": False, - "dataEncipherment": True, - "keyAgreement": True, - "certSign": True, - "crlSign": True, - "decipherOnly": True, + "key_usage": { + "base_key_usage": { + "digital_signature": True, + "content_commitment": True, + "key_encipherment": False, + "data_encipherment": True, + "key_agreement": True, + "cert_sign": True, + "crl_sign": True, + "decipher_only": True, }, - "extendedKeyUsage": { - "serverAuth": True, - "clientAuth": False, - "emailProtection": True, - "codeSigning": True, - "timeStamping": True, + "extended_key_usage": { + "server_auth": True, + "client_auth": False, + "email_protection": True, + "code_signing": True, + "time_stamping": True, }, }, }, }, lifetime="86400s", key_spec={ - "cloudKmsKeyVersion": "projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1", + "cloud_kms_key_version": "projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1", }) ``` @@ -1132,37 +1132,37 @@ def __init__(__self__, location="us-central1", deletion_protection=True, config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, - "maxIssuerPathLength": 10, + "x509_config": { + "ca_options": { + "is_ca": True, + "max_issuer_path_length": 10, }, - "keyUsage": { - "baseKeyUsage": { - "digitalSignature": True, - "contentCommitment": True, - "keyEncipherment": False, - "dataEncipherment": True, - "keyAgreement": True, - "certSign": True, - "crlSign": True, - "decipherOnly": True, + "key_usage": { + "base_key_usage": { + "digital_signature": True, + "content_commitment": True, + "key_encipherment": False, + "data_encipherment": True, + "key_agreement": True, + "cert_sign": True, + "crl_sign": True, + "decipher_only": True, }, - "extendedKeyUsage": { - "serverAuth": True, - "clientAuth": False, - "emailProtection": True, - "codeSigning": True, - "timeStamping": True, + "extended_key_usage": { + "server_auth": True, + "client_auth": False, + "email_protection": True, + "code_signing": True, + "time_stamping": True, }, }, }, @@ -1183,26 +1183,26 @@ def __init__(__self__, certificate_authority_id="my-certificate-authority-root", location="us-central1", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, + "x509_config": { + "ca_options": { + "is_ca": True, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": False, + "extended_key_usage": { + "server_auth": False, }, }, }, @@ -1219,40 +1219,40 @@ def __init__(__self__, location="us-central1", deletion_protection=True, subordinate_config={ - "certificateAuthority": root_ca.name, + "certificate_authority": root_ca.name, }, config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-subordinate-authority", + "common_name": "my-subordinate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, - "maxIssuerPathLength": 0, + "x509_config": { + "ca_options": { + "is_ca": True, + "max_issuer_path_length": 0, }, - "keyUsage": { - "baseKeyUsage": { - "digitalSignature": True, - "contentCommitment": True, - "keyEncipherment": False, - "dataEncipherment": True, - "keyAgreement": True, - "certSign": True, - "crlSign": True, - "decipherOnly": True, + "key_usage": { + "base_key_usage": { + "digital_signature": True, + "content_commitment": True, + "key_encipherment": False, + "data_encipherment": True, + "key_agreement": True, + "cert_sign": True, + "crl_sign": True, + "decipher_only": True, }, - "extendedKeyUsage": { - "serverAuth": True, - "clientAuth": False, - "emailProtection": True, - "codeSigning": True, - "timeStamping": True, + "extended_key_usage": { + "server_auth": True, + "client_auth": False, + "email_protection": True, + "code_signing": True, + "time_stamping": True, }, }, }, @@ -1284,39 +1284,39 @@ def __init__(__self__, location="us-central1", deletion_protection=True, key_spec={ - "cloudKmsKeyVersion": "projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1", + "cloud_kms_key_version": "projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1", }, config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "Example, Org.", - "commonName": "Example Authority", + "common_name": "Example Authority", }, }, - "x509Config": { - "caOptions": { - "isCa": True, - "maxIssuerPathLength": 10, + "x509_config": { + "ca_options": { + "is_ca": True, + "max_issuer_path_length": 10, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": False, + "extended_key_usage": { + "server_auth": False, }, }, - "nameConstraints": { + "name_constraints": { "critical": True, - "permittedDnsNames": ["*.example.com"], - "excludedDnsNames": ["*.deny.example.com"], - "permittedIpRanges": ["10.0.0.0/8"], - "excludedIpRanges": ["10.1.1.0/24"], - "permittedEmailAddresses": [".example.com"], - "excludedEmailAddresses": [".deny.example.com"], - "permittedUris": [".example.com"], - "excludedUris": [".deny.example.com"], + "permitted_dns_names": ["*.example.com"], + "excluded_dns_names": ["*.deny.example.com"], + "permitted_ip_ranges": ["10.0.0.0/8"], + "excluded_ip_ranges": ["10.1.1.0/24"], + "permitted_email_addresses": [".example.com"], + "excluded_email_addresses": [".deny.example.com"], + "permitted_uris": [".example.com"], + "excluded_uris": [".deny.example.com"], }, }, }, @@ -1337,47 +1337,47 @@ def __init__(__self__, location="us-central1", deletion_protection=True, config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "subjectKeyId": { - "keyId": "4cf3372289b1d411b999dbb9ebcd44744b6b2fca", + "subject_key_id": { + "key_id": "4cf3372289b1d411b999dbb9ebcd44744b6b2fca", }, - "x509Config": { - "caOptions": { - "isCa": True, - "maxIssuerPathLength": 10, + "x509_config": { + "ca_options": { + "is_ca": True, + "max_issuer_path_length": 10, }, - "keyUsage": { - "baseKeyUsage": { - "digitalSignature": True, - "contentCommitment": True, - "keyEncipherment": False, - "dataEncipherment": True, - "keyAgreement": True, - "certSign": True, - "crlSign": True, - "decipherOnly": True, + "key_usage": { + "base_key_usage": { + "digital_signature": True, + "content_commitment": True, + "key_encipherment": False, + "data_encipherment": True, + "key_agreement": True, + "cert_sign": True, + "crl_sign": True, + "decipher_only": True, }, - "extendedKeyUsage": { - "serverAuth": True, - "clientAuth": False, - "emailProtection": True, - "codeSigning": True, - "timeStamping": True, + "extended_key_usage": { + "server_auth": True, + "client_auth": False, + "email_protection": True, + "code_signing": True, + "time_stamping": True, }, }, }, }, lifetime="86400s", key_spec={ - "cloudKmsKeyVersion": "projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1", + "cloud_kms_key_version": "projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1", }) ``` diff --git a/sdk/python/pulumi_gcp/certificateauthority/ca_pool.py b/sdk/python/pulumi_gcp/certificateauthority/ca_pool.py index 7186d96cd5..f87e0e7350 100644 --- a/sdk/python/pulumi_gcp/certificateauthority/ca_pool.py +++ b/sdk/python/pulumi_gcp/certificateauthority/ca_pool.py @@ -373,8 +373,8 @@ def __init__(__self__, location="us-central1", tier="ENTERPRISE", publishing_options={ - "publishCaCert": True, - "publishCrl": True, + "publish_ca_cert": True, + "publish_crl": True, }, labels={ "foo": "bar", @@ -391,121 +391,121 @@ def __init__(__self__, location="us-central1", tier="ENTERPRISE", publishing_options={ - "publishCaCert": False, - "publishCrl": True, - "encodingFormat": "PEM", + "publish_ca_cert": False, + "publish_crl": True, + "encoding_format": "PEM", }, labels={ "foo": "bar", }, issuance_policy={ - "allowedKeyTypes": [ + "allowed_key_types": [ { - "ellipticCurve": { - "signatureAlgorithm": "ECDSA_P256", + "elliptic_curve": { + "signature_algorithm": "ECDSA_P256", }, }, { "rsa": { - "minModulusSize": "5", - "maxModulusSize": "10", + "min_modulus_size": "5", + "max_modulus_size": "10", }, }, ], - "maximumLifetime": "50000s", - "allowedIssuanceModes": { - "allowCsrBasedIssuance": True, - "allowConfigBasedIssuance": True, + "maximum_lifetime": "50000s", + "allowed_issuance_modes": { + "allow_csr_based_issuance": True, + "allow_config_based_issuance": True, }, - "identityConstraints": { - "allowSubjectPassthrough": True, - "allowSubjectAltNamesPassthrough": True, - "celExpression": { + "identity_constraints": { + "allow_subject_passthrough": True, + "allow_subject_alt_names_passthrough": True, + "cel_expression": { "expression": "subject_alt_names.all(san, san.type == DNS || san.type == EMAIL )", "title": "My title", }, }, - "baselineValues": { - "aiaOcspServers": ["example.com"], - "additionalExtensions": [{ + "baseline_values": { + "aia_ocsp_servers": ["example.com"], + "additional_extensions": [{ "critical": True, "value": "asdf", - "objectId": { - "objectIdPaths": [ + "object_id": { + "object_id_paths": [ 1, 7, ], }, }], - "policyIds": [ + "policy_ids": [ { - "objectIdPaths": [ + "object_id_paths": [ 1, 5, ], }, { - "objectIdPaths": [ + "object_id_paths": [ 1, 5, 7, ], }, ], - "caOptions": { - "isCa": True, - "maxIssuerPathLength": 10, + "ca_options": { + "is_ca": True, + "max_issuer_path_length": 10, }, - "keyUsage": { - "baseKeyUsage": { - "digitalSignature": True, - "contentCommitment": True, - "keyEncipherment": False, - "dataEncipherment": True, - "keyAgreement": True, - "certSign": False, - "crlSign": True, - "decipherOnly": True, + "key_usage": { + "base_key_usage": { + "digital_signature": True, + "content_commitment": True, + "key_encipherment": False, + "data_encipherment": True, + "key_agreement": True, + "cert_sign": False, + "crl_sign": True, + "decipher_only": True, }, - "extendedKeyUsage": { - "serverAuth": True, - "clientAuth": False, - "emailProtection": True, - "codeSigning": True, - "timeStamping": True, + "extended_key_usage": { + "server_auth": True, + "client_auth": False, + "email_protection": True, + "code_signing": True, + "time_stamping": True, }, }, - "nameConstraints": { + "name_constraints": { "critical": True, - "permittedDnsNames": [ + "permitted_dns_names": [ "*.example1.com", "*.example2.com", ], - "excludedDnsNames": [ + "excluded_dns_names": [ "*.deny.example1.com", "*.deny.example2.com", ], - "permittedIpRanges": [ + "permitted_ip_ranges": [ "10.0.0.0/8", "11.0.0.0/8", ], - "excludedIpRanges": [ + "excluded_ip_ranges": [ "10.1.1.0/24", "11.1.1.0/24", ], - "permittedEmailAddresses": [ + "permitted_email_addresses": [ ".example1.com", ".example2.com", ], - "excludedEmailAddresses": [ + "excluded_email_addresses": [ ".deny.example1.com", ".deny.example2.com", ], - "permittedUris": [ + "permitted_uris": [ ".example1.com", ".example2.com", ], - "excludedUris": [ + "excluded_uris": [ ".deny.example1.com", ".deny.example2.com", ], @@ -585,8 +585,8 @@ def __init__(__self__, location="us-central1", tier="ENTERPRISE", publishing_options={ - "publishCaCert": True, - "publishCrl": True, + "publish_ca_cert": True, + "publish_crl": True, }, labels={ "foo": "bar", @@ -603,121 +603,121 @@ def __init__(__self__, location="us-central1", tier="ENTERPRISE", publishing_options={ - "publishCaCert": False, - "publishCrl": True, - "encodingFormat": "PEM", + "publish_ca_cert": False, + "publish_crl": True, + "encoding_format": "PEM", }, labels={ "foo": "bar", }, issuance_policy={ - "allowedKeyTypes": [ + "allowed_key_types": [ { - "ellipticCurve": { - "signatureAlgorithm": "ECDSA_P256", + "elliptic_curve": { + "signature_algorithm": "ECDSA_P256", }, }, { "rsa": { - "minModulusSize": "5", - "maxModulusSize": "10", + "min_modulus_size": "5", + "max_modulus_size": "10", }, }, ], - "maximumLifetime": "50000s", - "allowedIssuanceModes": { - "allowCsrBasedIssuance": True, - "allowConfigBasedIssuance": True, + "maximum_lifetime": "50000s", + "allowed_issuance_modes": { + "allow_csr_based_issuance": True, + "allow_config_based_issuance": True, }, - "identityConstraints": { - "allowSubjectPassthrough": True, - "allowSubjectAltNamesPassthrough": True, - "celExpression": { + "identity_constraints": { + "allow_subject_passthrough": True, + "allow_subject_alt_names_passthrough": True, + "cel_expression": { "expression": "subject_alt_names.all(san, san.type == DNS || san.type == EMAIL )", "title": "My title", }, }, - "baselineValues": { - "aiaOcspServers": ["example.com"], - "additionalExtensions": [{ + "baseline_values": { + "aia_ocsp_servers": ["example.com"], + "additional_extensions": [{ "critical": True, "value": "asdf", - "objectId": { - "objectIdPaths": [ + "object_id": { + "object_id_paths": [ 1, 7, ], }, }], - "policyIds": [ + "policy_ids": [ { - "objectIdPaths": [ + "object_id_paths": [ 1, 5, ], }, { - "objectIdPaths": [ + "object_id_paths": [ 1, 5, 7, ], }, ], - "caOptions": { - "isCa": True, - "maxIssuerPathLength": 10, + "ca_options": { + "is_ca": True, + "max_issuer_path_length": 10, }, - "keyUsage": { - "baseKeyUsage": { - "digitalSignature": True, - "contentCommitment": True, - "keyEncipherment": False, - "dataEncipherment": True, - "keyAgreement": True, - "certSign": False, - "crlSign": True, - "decipherOnly": True, + "key_usage": { + "base_key_usage": { + "digital_signature": True, + "content_commitment": True, + "key_encipherment": False, + "data_encipherment": True, + "key_agreement": True, + "cert_sign": False, + "crl_sign": True, + "decipher_only": True, }, - "extendedKeyUsage": { - "serverAuth": True, - "clientAuth": False, - "emailProtection": True, - "codeSigning": True, - "timeStamping": True, + "extended_key_usage": { + "server_auth": True, + "client_auth": False, + "email_protection": True, + "code_signing": True, + "time_stamping": True, }, }, - "nameConstraints": { + "name_constraints": { "critical": True, - "permittedDnsNames": [ + "permitted_dns_names": [ "*.example1.com", "*.example2.com", ], - "excludedDnsNames": [ + "excluded_dns_names": [ "*.deny.example1.com", "*.deny.example2.com", ], - "permittedIpRanges": [ + "permitted_ip_ranges": [ "10.0.0.0/8", "11.0.0.0/8", ], - "excludedIpRanges": [ + "excluded_ip_ranges": [ "10.1.1.0/24", "11.1.1.0/24", ], - "permittedEmailAddresses": [ + "permitted_email_addresses": [ ".example1.com", ".example2.com", ], - "excludedEmailAddresses": [ + "excluded_email_addresses": [ ".deny.example1.com", ".deny.example2.com", ], - "permittedUris": [ + "permitted_uris": [ ".example1.com", ".example2.com", ], - "excludedUris": [ + "excluded_uris": [ ".deny.example1.com", ".deny.example2.com", ], diff --git a/sdk/python/pulumi_gcp/certificateauthority/certificate.py b/sdk/python/pulumi_gcp/certificateauthority/certificate.py index 507b245921..70a7e5ea54 100644 --- a/sdk/python/pulumi_gcp/certificateauthority/certificate.py +++ b/sdk/python/pulumi_gcp/certificateauthority/certificate.py @@ -621,26 +621,26 @@ def __init__(__self__, pool=default.name, certificate_authority_id="my-authority", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, - }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "x509_config": { + "ca_options": { + "is_ca": True, + }, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": True, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -659,48 +659,48 @@ def __init__(__self__, lifetime="86000s", name="cert-1", config={ - "subjectConfig": { + "subject_config": { "subject": { - "commonName": "san1.example.com", - "countryCode": "us", + "common_name": "san1.example.com", + "country_code": "us", "organization": "google", - "organizationalUnit": "enterprise", + "organizational_unit": "enterprise", "locality": "mountain view", "province": "california", - "streetAddress": "1600 amphitheatre parkway", + "street_address": "1600 amphitheatre parkway", }, - "subjectAltName": { - "emailAddresses": ["email@example.com"], - "ipAddresses": ["127.0.0.1"], + "subject_alt_name": { + "email_addresses": ["email@example.com"], + "ip_addresses": ["127.0.0.1"], "uris": ["http://www.ietf.org/rfc/rfc3986.txt"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, - }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "x509_config": { + "ca_options": { + "is_ca": True, + }, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": False, + "extended_key_usage": { + "server_auth": False, }, }, - "nameConstraints": { + "name_constraints": { "critical": True, - "permittedDnsNames": ["*.example.com"], - "excludedDnsNames": ["*.deny.example.com"], - "permittedIpRanges": ["10.0.0.0/8"], - "excludedIpRanges": ["10.1.1.0/24"], - "permittedEmailAddresses": [".example.com"], - "excludedEmailAddresses": [".deny.example.com"], - "permittedUris": [".example.com"], - "excludedUris": [".deny.example.com"], + "permitted_dns_names": ["*.example.com"], + "excluded_dns_names": ["*.deny.example.com"], + "permitted_ip_ranges": ["10.0.0.0/8"], + "excluded_ip_ranges": ["10.1.1.0/24"], + "permitted_email_addresses": [".example.com"], + "excluded_email_addresses": [".deny.example.com"], + "permitted_uris": [".example.com"], + "excluded_uris": [".deny.example.com"], }, }, - "publicKey": { + "public_key": { "format": "PEM", "key": std.base64encode_output(input=cert_key.public_key_pem).apply(lambda invoke: invoke.result), }, @@ -722,9 +722,9 @@ def __init__(__self__, name="my-certificate-template", description="An updated sample certificate template", identity_constraints={ - "allowSubjectAltNamesPassthrough": True, - "allowSubjectPassthrough": True, - "celExpression": { + "allow_subject_alt_names_passthrough": True, + "allow_subject_passthrough": True, + "cel_expression": { "description": "Always true", "expression": "true", "location": "any.file.anywhere", @@ -732,18 +732,18 @@ def __init__(__self__, }, }, passthrough_extensions={ - "additionalExtensions": [{ - "objectIdPaths": [ + "additional_extensions": [{ + "object_id_paths": [ 1, 6, ], }], - "knownExtensions": ["EXTENDED_KEY_USAGE"], + "known_extensions": ["EXTENDED_KEY_USAGE"], }, predefined_values={ - "additionalExtensions": [{ - "objectId": { - "objectIdPaths": [ + "additional_extensions": [{ + "object_id": { + "object_id_paths": [ 1, 6, ], @@ -751,40 +751,40 @@ def __init__(__self__, "value": "c3RyaW5nCg==", "critical": True, }], - "aiaOcspServers": ["string"], - "caOptions": { - "isCa": False, - "maxIssuerPathLength": 6, + "aia_ocsp_servers": ["string"], + "ca_options": { + "is_ca": False, + "max_issuer_path_length": 6, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": False, - "contentCommitment": True, - "crlSign": False, - "dataEncipherment": True, - "decipherOnly": True, - "digitalSignature": True, - "encipherOnly": True, - "keyAgreement": True, - "keyEncipherment": True, - }, - "extendedKeyUsage": { - "clientAuth": True, - "codeSigning": True, - "emailProtection": True, - "ocspSigning": True, - "serverAuth": True, - "timeStamping": True, - }, - "unknownExtendedKeyUsages": [{ - "objectIdPaths": [ + "key_usage": { + "base_key_usage": { + "cert_sign": False, + "content_commitment": True, + "crl_sign": False, + "data_encipherment": True, + "decipher_only": True, + "digital_signature": True, + "encipher_only": True, + "key_agreement": True, + "key_encipherment": True, + }, + "extended_key_usage": { + "client_auth": True, + "code_signing": True, + "email_protection": True, + "ocsp_signing": True, + "server_auth": True, + "time_stamping": True, + }, + "unknown_extended_key_usages": [{ + "object_id_paths": [ 1, 6, ], }], }, - "policyIds": [{ - "objectIdPaths": [ + "policy_ids": [{ + "object_id_paths": [ 1, 6, ], @@ -795,26 +795,26 @@ def __init__(__self__, pool=default.name, certificate_authority_id="my-authority", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, - }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "x509_config": { + "ca_options": { + "is_ca": True, + }, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": False, + "extended_key_usage": { + "server_auth": False, }, }, }, @@ -850,26 +850,26 @@ def __init__(__self__, pool=default.name, certificate_authority_id="my-authority", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, - }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "x509_config": { + "ca_options": { + "is_ca": True, + }, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": False, + "extended_key_usage": { + "server_auth": False, }, }, }, @@ -904,27 +904,27 @@ def __init__(__self__, pool=default.name, certificate_authority_id="my-authority", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, - }, - "keyUsage": { - "baseKeyUsage": { - "digitalSignature": True, - "certSign": True, - "crlSign": True, + "x509_config": { + "ca_options": { + "is_ca": True, + }, + "key_usage": { + "base_key_usage": { + "digital_signature": True, + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": True, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -942,32 +942,32 @@ def __init__(__self__, name="my-certificate", lifetime="860s", config={ - "subjectConfig": { + "subject_config": { "subject": { - "commonName": "san1.example.com", - "countryCode": "us", + "common_name": "san1.example.com", + "country_code": "us", "organization": "google", - "organizationalUnit": "enterprise", + "organizational_unit": "enterprise", "locality": "mountain view", "province": "california", - "streetAddress": "1600 amphitheatre parkway", - "postalCode": "94109", + "street_address": "1600 amphitheatre parkway", + "postal_code": "94109", }, }, - "x509Config": { - "caOptions": { - "isCa": False, + "x509_config": { + "ca_options": { + "is_ca": False, }, - "keyUsage": { - "baseKeyUsage": { - "crlSign": True, + "key_usage": { + "base_key_usage": { + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": True, + "extended_key_usage": { + "server_auth": True, }, }, }, - "publicKey": { + "public_key": { "format": "PEM", "key": std.filebase64(input="test-fixtures/rsa_public.pem").result, }, @@ -990,27 +990,27 @@ def __init__(__self__, pool=default.name, certificate_authority_id="my-authority", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, - }, - "keyUsage": { - "baseKeyUsage": { - "digitalSignature": True, - "certSign": True, - "crlSign": True, + "x509_config": { + "ca_options": { + "is_ca": True, + }, + "key_usage": { + "base_key_usage": { + "digital_signature": True, + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": True, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -1028,35 +1028,35 @@ def __init__(__self__, name="my-certificate", lifetime="860s", config={ - "subjectConfig": { + "subject_config": { "subject": { - "commonName": "san1.example.com", - "countryCode": "us", + "common_name": "san1.example.com", + "country_code": "us", "organization": "google", - "organizationalUnit": "enterprise", + "organizational_unit": "enterprise", "locality": "mountain view", "province": "california", - "streetAddress": "1600 amphitheatre parkway", - "postalCode": "94109", + "street_address": "1600 amphitheatre parkway", + "postal_code": "94109", }, }, - "subjectKeyId": { - "keyId": "4cf3372289b1d411b999dbb9ebcd44744b6b2fca", + "subject_key_id": { + "key_id": "4cf3372289b1d411b999dbb9ebcd44744b6b2fca", }, - "x509Config": { - "caOptions": { - "isCa": False, + "x509_config": { + "ca_options": { + "is_ca": False, }, - "keyUsage": { - "baseKeyUsage": { - "crlSign": True, + "key_usage": { + "base_key_usage": { + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": True, + "extended_key_usage": { + "server_auth": True, }, }, }, - "publicKey": { + "public_key": { "format": "PEM", "key": std.filebase64(input="test-fixtures/rsa_public.pem").result, }, @@ -1150,26 +1150,26 @@ def __init__(__self__, pool=default.name, certificate_authority_id="my-authority", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, - }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "x509_config": { + "ca_options": { + "is_ca": True, + }, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": True, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -1188,48 +1188,48 @@ def __init__(__self__, lifetime="86000s", name="cert-1", config={ - "subjectConfig": { + "subject_config": { "subject": { - "commonName": "san1.example.com", - "countryCode": "us", + "common_name": "san1.example.com", + "country_code": "us", "organization": "google", - "organizationalUnit": "enterprise", + "organizational_unit": "enterprise", "locality": "mountain view", "province": "california", - "streetAddress": "1600 amphitheatre parkway", + "street_address": "1600 amphitheatre parkway", }, - "subjectAltName": { - "emailAddresses": ["email@example.com"], - "ipAddresses": ["127.0.0.1"], + "subject_alt_name": { + "email_addresses": ["email@example.com"], + "ip_addresses": ["127.0.0.1"], "uris": ["http://www.ietf.org/rfc/rfc3986.txt"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, - }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "x509_config": { + "ca_options": { + "is_ca": True, + }, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": False, + "extended_key_usage": { + "server_auth": False, }, }, - "nameConstraints": { + "name_constraints": { "critical": True, - "permittedDnsNames": ["*.example.com"], - "excludedDnsNames": ["*.deny.example.com"], - "permittedIpRanges": ["10.0.0.0/8"], - "excludedIpRanges": ["10.1.1.0/24"], - "permittedEmailAddresses": [".example.com"], - "excludedEmailAddresses": [".deny.example.com"], - "permittedUris": [".example.com"], - "excludedUris": [".deny.example.com"], + "permitted_dns_names": ["*.example.com"], + "excluded_dns_names": ["*.deny.example.com"], + "permitted_ip_ranges": ["10.0.0.0/8"], + "excluded_ip_ranges": ["10.1.1.0/24"], + "permitted_email_addresses": [".example.com"], + "excluded_email_addresses": [".deny.example.com"], + "permitted_uris": [".example.com"], + "excluded_uris": [".deny.example.com"], }, }, - "publicKey": { + "public_key": { "format": "PEM", "key": std.base64encode_output(input=cert_key.public_key_pem).apply(lambda invoke: invoke.result), }, @@ -1251,9 +1251,9 @@ def __init__(__self__, name="my-certificate-template", description="An updated sample certificate template", identity_constraints={ - "allowSubjectAltNamesPassthrough": True, - "allowSubjectPassthrough": True, - "celExpression": { + "allow_subject_alt_names_passthrough": True, + "allow_subject_passthrough": True, + "cel_expression": { "description": "Always true", "expression": "true", "location": "any.file.anywhere", @@ -1261,18 +1261,18 @@ def __init__(__self__, }, }, passthrough_extensions={ - "additionalExtensions": [{ - "objectIdPaths": [ + "additional_extensions": [{ + "object_id_paths": [ 1, 6, ], }], - "knownExtensions": ["EXTENDED_KEY_USAGE"], + "known_extensions": ["EXTENDED_KEY_USAGE"], }, predefined_values={ - "additionalExtensions": [{ - "objectId": { - "objectIdPaths": [ + "additional_extensions": [{ + "object_id": { + "object_id_paths": [ 1, 6, ], @@ -1280,40 +1280,40 @@ def __init__(__self__, "value": "c3RyaW5nCg==", "critical": True, }], - "aiaOcspServers": ["string"], - "caOptions": { - "isCa": False, - "maxIssuerPathLength": 6, + "aia_ocsp_servers": ["string"], + "ca_options": { + "is_ca": False, + "max_issuer_path_length": 6, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": False, - "contentCommitment": True, - "crlSign": False, - "dataEncipherment": True, - "decipherOnly": True, - "digitalSignature": True, - "encipherOnly": True, - "keyAgreement": True, - "keyEncipherment": True, - }, - "extendedKeyUsage": { - "clientAuth": True, - "codeSigning": True, - "emailProtection": True, - "ocspSigning": True, - "serverAuth": True, - "timeStamping": True, - }, - "unknownExtendedKeyUsages": [{ - "objectIdPaths": [ + "key_usage": { + "base_key_usage": { + "cert_sign": False, + "content_commitment": True, + "crl_sign": False, + "data_encipherment": True, + "decipher_only": True, + "digital_signature": True, + "encipher_only": True, + "key_agreement": True, + "key_encipherment": True, + }, + "extended_key_usage": { + "client_auth": True, + "code_signing": True, + "email_protection": True, + "ocsp_signing": True, + "server_auth": True, + "time_stamping": True, + }, + "unknown_extended_key_usages": [{ + "object_id_paths": [ 1, 6, ], }], }, - "policyIds": [{ - "objectIdPaths": [ + "policy_ids": [{ + "object_id_paths": [ 1, 6, ], @@ -1324,26 +1324,26 @@ def __init__(__self__, pool=default.name, certificate_authority_id="my-authority", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, - }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "x509_config": { + "ca_options": { + "is_ca": True, + }, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": False, + "extended_key_usage": { + "server_auth": False, }, }, }, @@ -1379,26 +1379,26 @@ def __init__(__self__, pool=default.name, certificate_authority_id="my-authority", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, - }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "x509_config": { + "ca_options": { + "is_ca": True, + }, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": False, + "extended_key_usage": { + "server_auth": False, }, }, }, @@ -1433,27 +1433,27 @@ def __init__(__self__, pool=default.name, certificate_authority_id="my-authority", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, - }, - "keyUsage": { - "baseKeyUsage": { - "digitalSignature": True, - "certSign": True, - "crlSign": True, + "x509_config": { + "ca_options": { + "is_ca": True, + }, + "key_usage": { + "base_key_usage": { + "digital_signature": True, + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": True, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -1471,32 +1471,32 @@ def __init__(__self__, name="my-certificate", lifetime="860s", config={ - "subjectConfig": { + "subject_config": { "subject": { - "commonName": "san1.example.com", - "countryCode": "us", + "common_name": "san1.example.com", + "country_code": "us", "organization": "google", - "organizationalUnit": "enterprise", + "organizational_unit": "enterprise", "locality": "mountain view", "province": "california", - "streetAddress": "1600 amphitheatre parkway", - "postalCode": "94109", + "street_address": "1600 amphitheatre parkway", + "postal_code": "94109", }, }, - "x509Config": { - "caOptions": { - "isCa": False, + "x509_config": { + "ca_options": { + "is_ca": False, }, - "keyUsage": { - "baseKeyUsage": { - "crlSign": True, + "key_usage": { + "base_key_usage": { + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": True, + "extended_key_usage": { + "server_auth": True, }, }, }, - "publicKey": { + "public_key": { "format": "PEM", "key": std.filebase64(input="test-fixtures/rsa_public.pem").result, }, @@ -1519,27 +1519,27 @@ def __init__(__self__, pool=default.name, certificate_authority_id="my-authority", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, - }, - "keyUsage": { - "baseKeyUsage": { - "digitalSignature": True, - "certSign": True, - "crlSign": True, + "x509_config": { + "ca_options": { + "is_ca": True, + }, + "key_usage": { + "base_key_usage": { + "digital_signature": True, + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": True, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -1557,35 +1557,35 @@ def __init__(__self__, name="my-certificate", lifetime="860s", config={ - "subjectConfig": { + "subject_config": { "subject": { - "commonName": "san1.example.com", - "countryCode": "us", + "common_name": "san1.example.com", + "country_code": "us", "organization": "google", - "organizationalUnit": "enterprise", + "organizational_unit": "enterprise", "locality": "mountain view", "province": "california", - "streetAddress": "1600 amphitheatre parkway", - "postalCode": "94109", + "street_address": "1600 amphitheatre parkway", + "postal_code": "94109", }, }, - "subjectKeyId": { - "keyId": "4cf3372289b1d411b999dbb9ebcd44744b6b2fca", + "subject_key_id": { + "key_id": "4cf3372289b1d411b999dbb9ebcd44744b6b2fca", }, - "x509Config": { - "caOptions": { - "isCa": False, + "x509_config": { + "ca_options": { + "is_ca": False, }, - "keyUsage": { - "baseKeyUsage": { - "crlSign": True, + "key_usage": { + "base_key_usage": { + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": True, + "extended_key_usage": { + "server_auth": True, }, }, }, - "publicKey": { + "public_key": { "format": "PEM", "key": std.filebase64(input="test-fixtures/rsa_public.pem").result, }, diff --git a/sdk/python/pulumi_gcp/certificateauthority/certificate_template.py b/sdk/python/pulumi_gcp/certificateauthority/certificate_template.py index 4f1a67f395..dc97d7c707 100644 --- a/sdk/python/pulumi_gcp/certificateauthority/certificate_template.py +++ b/sdk/python/pulumi_gcp/certificateauthority/certificate_template.py @@ -462,9 +462,9 @@ def __init__(__self__, location="us-central1", description="A sample certificate template", identity_constraints={ - "allowSubjectAltNamesPassthrough": True, - "allowSubjectPassthrough": True, - "celExpression": { + "allow_subject_alt_names_passthrough": True, + "allow_subject_passthrough": True, + "cel_expression": { "description": "Always true", "expression": "true", "location": "any.file.anywhere", @@ -473,18 +473,18 @@ def __init__(__self__, }, maximum_lifetime="86400s", passthrough_extensions={ - "additionalExtensions": [{ - "objectIdPaths": [ + "additional_extensions": [{ + "object_id_paths": [ 1, 6, ], }], - "knownExtensions": ["EXTENDED_KEY_USAGE"], + "known_extensions": ["EXTENDED_KEY_USAGE"], }, predefined_values={ - "additionalExtensions": [{ - "objectId": { - "objectIdPaths": [ + "additional_extensions": [{ + "object_id": { + "object_id_paths": [ 1, 6, ], @@ -492,40 +492,40 @@ def __init__(__self__, "value": "c3RyaW5nCg==", "critical": True, }], - "aiaOcspServers": ["string"], - "caOptions": { - "isCa": False, - "maxIssuerPathLength": 6, + "aia_ocsp_servers": ["string"], + "ca_options": { + "is_ca": False, + "max_issuer_path_length": 6, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": False, - "contentCommitment": True, - "crlSign": False, - "dataEncipherment": True, - "decipherOnly": True, - "digitalSignature": True, - "encipherOnly": True, - "keyAgreement": True, - "keyEncipherment": True, + "key_usage": { + "base_key_usage": { + "cert_sign": False, + "content_commitment": True, + "crl_sign": False, + "data_encipherment": True, + "decipher_only": True, + "digital_signature": True, + "encipher_only": True, + "key_agreement": True, + "key_encipherment": True, }, - "extendedKeyUsage": { - "clientAuth": True, - "codeSigning": True, - "emailProtection": True, - "ocspSigning": True, - "serverAuth": True, - "timeStamping": True, + "extended_key_usage": { + "client_auth": True, + "code_signing": True, + "email_protection": True, + "ocsp_signing": True, + "server_auth": True, + "time_stamping": True, }, - "unknownExtendedKeyUsages": [{ - "objectIdPaths": [ + "unknown_extended_key_usages": [{ + "object_id_paths": [ 1, 6, ], }], }, - "policyIds": [{ - "objectIdPaths": [ + "policy_ids": [{ + "object_id_paths": [ 1, 6, ], @@ -611,9 +611,9 @@ def __init__(__self__, location="us-central1", description="A sample certificate template", identity_constraints={ - "allowSubjectAltNamesPassthrough": True, - "allowSubjectPassthrough": True, - "celExpression": { + "allow_subject_alt_names_passthrough": True, + "allow_subject_passthrough": True, + "cel_expression": { "description": "Always true", "expression": "true", "location": "any.file.anywhere", @@ -622,18 +622,18 @@ def __init__(__self__, }, maximum_lifetime="86400s", passthrough_extensions={ - "additionalExtensions": [{ - "objectIdPaths": [ + "additional_extensions": [{ + "object_id_paths": [ 1, 6, ], }], - "knownExtensions": ["EXTENDED_KEY_USAGE"], + "known_extensions": ["EXTENDED_KEY_USAGE"], }, predefined_values={ - "additionalExtensions": [{ - "objectId": { - "objectIdPaths": [ + "additional_extensions": [{ + "object_id": { + "object_id_paths": [ 1, 6, ], @@ -641,40 +641,40 @@ def __init__(__self__, "value": "c3RyaW5nCg==", "critical": True, }], - "aiaOcspServers": ["string"], - "caOptions": { - "isCa": False, - "maxIssuerPathLength": 6, + "aia_ocsp_servers": ["string"], + "ca_options": { + "is_ca": False, + "max_issuer_path_length": 6, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": False, - "contentCommitment": True, - "crlSign": False, - "dataEncipherment": True, - "decipherOnly": True, - "digitalSignature": True, - "encipherOnly": True, - "keyAgreement": True, - "keyEncipherment": True, + "key_usage": { + "base_key_usage": { + "cert_sign": False, + "content_commitment": True, + "crl_sign": False, + "data_encipherment": True, + "decipher_only": True, + "digital_signature": True, + "encipher_only": True, + "key_agreement": True, + "key_encipherment": True, }, - "extendedKeyUsage": { - "clientAuth": True, - "codeSigning": True, - "emailProtection": True, - "ocspSigning": True, - "serverAuth": True, - "timeStamping": True, + "extended_key_usage": { + "client_auth": True, + "code_signing": True, + "email_protection": True, + "ocsp_signing": True, + "server_auth": True, + "time_stamping": True, }, - "unknownExtendedKeyUsages": [{ - "objectIdPaths": [ + "unknown_extended_key_usages": [{ + "object_id_paths": [ 1, 6, ], }], }, - "policyIds": [{ - "objectIdPaths": [ + "policy_ids": [{ + "object_id_paths": [ 1, 6, ], diff --git a/sdk/python/pulumi_gcp/certificatemanager/certificate.py b/sdk/python/pulumi_gcp/certificatemanager/certificate.py index 56d474a541..dc637a23c1 100644 --- a/sdk/python/pulumi_gcp/certificatemanager/certificate.py +++ b/sdk/python/pulumi_gcp/certificatemanager/certificate.py @@ -449,7 +449,7 @@ def __init__(__self__, instance.domain, instance2.domain, ], - "dnsAuthorizations": [ + "dns_authorizations": [ instance.id, instance2.id, ], @@ -470,26 +470,26 @@ def __init__(__self__, pool=pool.name, certificate_authority_id="ca-authority", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, + "x509_config": { + "ca_options": { + "is_ca": True, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": True, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -505,8 +505,8 @@ def __init__(__self__, name="issuance-config", description="sample description for the certificate issuanceConfigs", certificate_authority_config={ - "certificateAuthorityServiceConfig": { - "caPool": pool.id, + "certificate_authority_service_config": { + "ca_pool": pool.id, }, }, lifetime="1814400s", @@ -519,7 +519,7 @@ def __init__(__self__, scope="EDGE_CACHE", managed={ "domains": ["terraform.subdomain1.com"], - "issuanceConfig": issuanceconfig.id, + "issuance_config": issuanceconfig.id, }) ``` ### Certificate Manager Certificate Basic @@ -545,7 +545,7 @@ def __init__(__self__, instance.domain, instance2.domain, ], - "dnsAuthorizations": [ + "dns_authorizations": [ instance.id, instance2.id, ], @@ -563,8 +563,8 @@ def __init__(__self__, description="Regional cert", location="us-central1", self_managed={ - "pemCertificate": std.file(input="test-fixtures/cert.pem").result, - "pemPrivateKey": std.file(input="test-fixtures/private-key.pem").result, + "pem_certificate": std.file(input="test-fixtures/cert.pem").result, + "pem_private_key": std.file(input="test-fixtures/private-key.pem").result, }) ``` ### Certificate Manager Google Managed Certificate Issuance Config All Regions @@ -582,26 +582,26 @@ def __init__(__self__, pool=pool.name, certificate_authority_id="ca-authority", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, + "x509_config": { + "ca_options": { + "is_ca": True, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": True, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -617,8 +617,8 @@ def __init__(__self__, name="issuance-config", description="sample description for the certificate issuanceConfigs", certificate_authority_config={ - "certificateAuthorityServiceConfig": { - "caPool": pool.id, + "certificate_authority_service_config": { + "ca_pool": pool.id, }, }, lifetime="1814400s", @@ -631,7 +631,7 @@ def __init__(__self__, scope="ALL_REGIONS", managed={ "domains": ["terraform.subdomain1.com"], - "issuanceConfig": issuanceconfig.id, + "issuance_config": issuanceconfig.id, }) ``` ### Certificate Manager Google Managed Certificate Dns All Regions @@ -657,7 +657,7 @@ def __init__(__self__, instance.domain, instance2.domain, ], - "dnsAuthorizations": [ + "dns_authorizations": [ instance.id, instance2.id, ], @@ -680,7 +680,7 @@ def __init__(__self__, location="us-central1", managed={ "domains": [instance.domain], - "dnsAuthorizations": [instance.id], + "dns_authorizations": [instance.id], }) ``` @@ -776,7 +776,7 @@ def __init__(__self__, instance.domain, instance2.domain, ], - "dnsAuthorizations": [ + "dns_authorizations": [ instance.id, instance2.id, ], @@ -797,26 +797,26 @@ def __init__(__self__, pool=pool.name, certificate_authority_id="ca-authority", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, + "x509_config": { + "ca_options": { + "is_ca": True, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": True, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -832,8 +832,8 @@ def __init__(__self__, name="issuance-config", description="sample description for the certificate issuanceConfigs", certificate_authority_config={ - "certificateAuthorityServiceConfig": { - "caPool": pool.id, + "certificate_authority_service_config": { + "ca_pool": pool.id, }, }, lifetime="1814400s", @@ -846,7 +846,7 @@ def __init__(__self__, scope="EDGE_CACHE", managed={ "domains": ["terraform.subdomain1.com"], - "issuanceConfig": issuanceconfig.id, + "issuance_config": issuanceconfig.id, }) ``` ### Certificate Manager Certificate Basic @@ -872,7 +872,7 @@ def __init__(__self__, instance.domain, instance2.domain, ], - "dnsAuthorizations": [ + "dns_authorizations": [ instance.id, instance2.id, ], @@ -890,8 +890,8 @@ def __init__(__self__, description="Regional cert", location="us-central1", self_managed={ - "pemCertificate": std.file(input="test-fixtures/cert.pem").result, - "pemPrivateKey": std.file(input="test-fixtures/private-key.pem").result, + "pem_certificate": std.file(input="test-fixtures/cert.pem").result, + "pem_private_key": std.file(input="test-fixtures/private-key.pem").result, }) ``` ### Certificate Manager Google Managed Certificate Issuance Config All Regions @@ -909,26 +909,26 @@ def __init__(__self__, pool=pool.name, certificate_authority_id="ca-authority", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, + "x509_config": { + "ca_options": { + "is_ca": True, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": True, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -944,8 +944,8 @@ def __init__(__self__, name="issuance-config", description="sample description for the certificate issuanceConfigs", certificate_authority_config={ - "certificateAuthorityServiceConfig": { - "caPool": pool.id, + "certificate_authority_service_config": { + "ca_pool": pool.id, }, }, lifetime="1814400s", @@ -958,7 +958,7 @@ def __init__(__self__, scope="ALL_REGIONS", managed={ "domains": ["terraform.subdomain1.com"], - "issuanceConfig": issuanceconfig.id, + "issuance_config": issuanceconfig.id, }) ``` ### Certificate Manager Google Managed Certificate Dns All Regions @@ -984,7 +984,7 @@ def __init__(__self__, instance.domain, instance2.domain, ], - "dnsAuthorizations": [ + "dns_authorizations": [ instance.id, instance2.id, ], @@ -1007,7 +1007,7 @@ def __init__(__self__, location="us-central1", managed={ "domains": [instance.domain], - "dnsAuthorizations": [instance.id], + "dns_authorizations": [instance.id], }) ``` diff --git a/sdk/python/pulumi_gcp/certificatemanager/certificate_issuance_config.py b/sdk/python/pulumi_gcp/certificatemanager/certificate_issuance_config.py index 88f2efff6d..6679f42981 100644 --- a/sdk/python/pulumi_gcp/certificatemanager/certificate_issuance_config.py +++ b/sdk/python/pulumi_gcp/certificatemanager/certificate_issuance_config.py @@ -465,26 +465,26 @@ def __init__(__self__, pool=pool.name, certificate_authority_id="ca-authority", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, + "x509_config": { + "ca_options": { + "is_ca": True, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": True, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -499,8 +499,8 @@ def __init__(__self__, name="issuance-config", description="sample description for the certificate issuanceConfigs", certificate_authority_config={ - "certificateAuthorityServiceConfig": { - "caPool": pool.id, + "certificate_authority_service_config": { + "ca_pool": pool.id, }, }, lifetime="1814400s", @@ -590,26 +590,26 @@ def __init__(__self__, pool=pool.name, certificate_authority_id="ca-authority", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "HashiCorp", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, - "subjectAltName": { - "dnsNames": ["hashicorp.com"], + "subject_alt_name": { + "dns_names": ["hashicorp.com"], }, }, - "x509Config": { - "caOptions": { - "isCa": True, + "x509_config": { + "ca_options": { + "is_ca": True, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": True, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -624,8 +624,8 @@ def __init__(__self__, name="issuance-config", description="sample description for the certificate issuanceConfigs", certificate_authority_config={ - "certificateAuthorityServiceConfig": { - "caPool": pool.id, + "certificate_authority_service_config": { + "ca_pool": pool.id, }, }, lifetime="1814400s", diff --git a/sdk/python/pulumi_gcp/certificatemanager/certificate_map_entry.py b/sdk/python/pulumi_gcp/certificatemanager/certificate_map_entry.py index 49ab900bc3..b92b833732 100644 --- a/sdk/python/pulumi_gcp/certificatemanager/certificate_map_entry.py +++ b/sdk/python/pulumi_gcp/certificatemanager/certificate_map_entry.py @@ -486,7 +486,7 @@ def __init__(__self__, instance.domain, instance2.domain, ], - "dnsAuthorizations": [ + "dns_authorizations": [ instance.id, instance2.id, ], @@ -595,7 +595,7 @@ def __init__(__self__, instance.domain, instance2.domain, ], - "dnsAuthorizations": [ + "dns_authorizations": [ instance.id, instance2.id, ], diff --git a/sdk/python/pulumi_gcp/certificatemanager/trust_config.py b/sdk/python/pulumi_gcp/certificatemanager/trust_config.py index cae4dc38d2..321631ec68 100644 --- a/sdk/python/pulumi_gcp/certificatemanager/trust_config.py +++ b/sdk/python/pulumi_gcp/certificatemanager/trust_config.py @@ -407,11 +407,11 @@ def __init__(__self__, description="sample description for the trust config", location="us-central1", trust_stores=[{ - "trustAnchors": [{ - "pemCertificate": std.file(input="test-fixtures/cert.pem").result, + "trust_anchors": [{ + "pem_certificate": std.file(input="test-fixtures/cert.pem").result, }], - "intermediateCas": [{ - "pemCertificate": std.file(input="test-fixtures/cert.pem").result, + "intermediate_cas": [{ + "pem_certificate": std.file(input="test-fixtures/cert.pem").result, }], }], labels={ @@ -431,10 +431,10 @@ def __init__(__self__, location="global", allowlisted_certificates=[ { - "pemCertificate": std.file(input="test-fixtures/cert.pem").result, + "pem_certificate": std.file(input="test-fixtures/cert.pem").result, }, { - "pemCertificate": std.file(input="test-fixtures/cert2.pem").result, + "pem_certificate": std.file(input="test-fixtures/cert2.pem").result, }, ], labels={ @@ -515,11 +515,11 @@ def __init__(__self__, description="sample description for the trust config", location="us-central1", trust_stores=[{ - "trustAnchors": [{ - "pemCertificate": std.file(input="test-fixtures/cert.pem").result, + "trust_anchors": [{ + "pem_certificate": std.file(input="test-fixtures/cert.pem").result, }], - "intermediateCas": [{ - "pemCertificate": std.file(input="test-fixtures/cert.pem").result, + "intermediate_cas": [{ + "pem_certificate": std.file(input="test-fixtures/cert.pem").result, }], }], labels={ @@ -539,10 +539,10 @@ def __init__(__self__, location="global", allowlisted_certificates=[ { - "pemCertificate": std.file(input="test-fixtures/cert.pem").result, + "pem_certificate": std.file(input="test-fixtures/cert.pem").result, }, { - "pemCertificate": std.file(input="test-fixtures/cert2.pem").result, + "pem_certificate": std.file(input="test-fixtures/cert2.pem").result, }, ], labels={ diff --git a/sdk/python/pulumi_gcp/cloudasset/folder_feed.py b/sdk/python/pulumi_gcp/cloudasset/folder_feed.py index 954249ece8..e88e7a4369 100644 --- a/sdk/python/pulumi_gcp/cloudasset/folder_feed.py +++ b/sdk/python/pulumi_gcp/cloudasset/folder_feed.py @@ -423,7 +423,7 @@ def __init__(__self__, "compute.googleapis.com/Network", ], feed_output_config={ - "pubsubDestination": { + "pubsub_destination": { "topic": feed_output.id, }, }, @@ -524,7 +524,7 @@ def __init__(__self__, "compute.googleapis.com/Network", ], feed_output_config={ - "pubsubDestination": { + "pubsub_destination": { "topic": feed_output.id, }, }, diff --git a/sdk/python/pulumi_gcp/cloudasset/organization_feed.py b/sdk/python/pulumi_gcp/cloudasset/organization_feed.py index a96d08f108..cf08e46f98 100644 --- a/sdk/python/pulumi_gcp/cloudasset/organization_feed.py +++ b/sdk/python/pulumi_gcp/cloudasset/organization_feed.py @@ -401,7 +401,7 @@ def __init__(__self__, "compute.googleapis.com/Network", ], feed_output_config={ - "pubsubDestination": { + "pubsub_destination": { "topic": feed_output.id, }, }, @@ -498,7 +498,7 @@ def __init__(__self__, "compute.googleapis.com/Network", ], feed_output_config={ - "pubsubDestination": { + "pubsub_destination": { "topic": feed_output.id, }, }, diff --git a/sdk/python/pulumi_gcp/cloudasset/project_feed.py b/sdk/python/pulumi_gcp/cloudasset/project_feed.py index e263cc0c57..fb30e23bd1 100644 --- a/sdk/python/pulumi_gcp/cloudasset/project_feed.py +++ b/sdk/python/pulumi_gcp/cloudasset/project_feed.py @@ -389,7 +389,7 @@ def __init__(__self__, "compute.googleapis.com/Network", ], feed_output_config={ - "pubsubDestination": { + "pubsub_destination": { "topic": feed_output.id, }, }, @@ -488,7 +488,7 @@ def __init__(__self__, "compute.googleapis.com/Network", ], feed_output_config={ - "pubsubDestination": { + "pubsub_destination": { "topic": feed_output.id, }, }, diff --git a/sdk/python/pulumi_gcp/cloudbuild/bitbucket_server_config.py b/sdk/python/pulumi_gcp/cloudbuild/bitbucket_server_config.py index c777bfead6..0083ab342e 100644 --- a/sdk/python/pulumi_gcp/cloudbuild/bitbucket_server_config.py +++ b/sdk/python/pulumi_gcp/cloudbuild/bitbucket_server_config.py @@ -442,9 +442,9 @@ def __init__(__self__, location="us-central1", host_uri="https://bbs.com", secrets={ - "adminAccessTokenVersionName": "projects/myProject/secrets/mybbspat/versions/1", - "readAccessTokenVersionName": "projects/myProject/secrets/mybbspat/versions/1", - "webhookSecretVersionName": "projects/myProject/secrets/mybbspat/versions/1", + "admin_access_token_version_name": "projects/myProject/secrets/mybbspat/versions/1", + "read_access_token_version_name": "projects/myProject/secrets/mybbspat/versions/1", + "webhook_secret_version_name": "projects/myProject/secrets/mybbspat/versions/1", }, username="test", api_key="") @@ -460,20 +460,20 @@ def __init__(__self__, location="us-central1", host_uri="https://bbs.com", secrets={ - "adminAccessTokenVersionName": "projects/myProject/secrets/mybbspat/versions/1", - "readAccessTokenVersionName": "projects/myProject/secrets/mybbspat/versions/1", - "webhookSecretVersionName": "projects/myProject/secrets/mybbspat/versions/1", + "admin_access_token_version_name": "projects/myProject/secrets/mybbspat/versions/1", + "read_access_token_version_name": "projects/myProject/secrets/mybbspat/versions/1", + "webhook_secret_version_name": "projects/myProject/secrets/mybbspat/versions/1", }, username="test", api_key="", connected_repositories=[ { - "projectKey": "DEV", - "repoSlug": "repo1", + "project_key": "DEV", + "repo_slug": "repo1", }, { - "projectKey": "PROD", - "repoSlug": "repo1", + "project_key": "PROD", + "repo_slug": "repo1", }, ]) ``` @@ -506,9 +506,9 @@ def __init__(__self__, location="us-central1", host_uri="https://bbs.com", secrets={ - "adminAccessTokenVersionName": "projects/myProject/secrets/mybbspat/versions/1", - "readAccessTokenVersionName": "projects/myProject/secrets/mybbspat/versions/1", - "webhookSecretVersionName": "projects/myProject/secrets/mybbspat/versions/1", + "admin_access_token_version_name": "projects/myProject/secrets/mybbspat/versions/1", + "read_access_token_version_name": "projects/myProject/secrets/mybbspat/versions/1", + "webhook_secret_version_name": "projects/myProject/secrets/mybbspat/versions/1", }, username="test", api_key="", @@ -595,9 +595,9 @@ def __init__(__self__, location="us-central1", host_uri="https://bbs.com", secrets={ - "adminAccessTokenVersionName": "projects/myProject/secrets/mybbspat/versions/1", - "readAccessTokenVersionName": "projects/myProject/secrets/mybbspat/versions/1", - "webhookSecretVersionName": "projects/myProject/secrets/mybbspat/versions/1", + "admin_access_token_version_name": "projects/myProject/secrets/mybbspat/versions/1", + "read_access_token_version_name": "projects/myProject/secrets/mybbspat/versions/1", + "webhook_secret_version_name": "projects/myProject/secrets/mybbspat/versions/1", }, username="test", api_key="") @@ -613,20 +613,20 @@ def __init__(__self__, location="us-central1", host_uri="https://bbs.com", secrets={ - "adminAccessTokenVersionName": "projects/myProject/secrets/mybbspat/versions/1", - "readAccessTokenVersionName": "projects/myProject/secrets/mybbspat/versions/1", - "webhookSecretVersionName": "projects/myProject/secrets/mybbspat/versions/1", + "admin_access_token_version_name": "projects/myProject/secrets/mybbspat/versions/1", + "read_access_token_version_name": "projects/myProject/secrets/mybbspat/versions/1", + "webhook_secret_version_name": "projects/myProject/secrets/mybbspat/versions/1", }, username="test", api_key="", connected_repositories=[ { - "projectKey": "DEV", - "repoSlug": "repo1", + "project_key": "DEV", + "repo_slug": "repo1", }, { - "projectKey": "PROD", - "repoSlug": "repo1", + "project_key": "PROD", + "repo_slug": "repo1", }, ]) ``` @@ -659,9 +659,9 @@ def __init__(__self__, location="us-central1", host_uri="https://bbs.com", secrets={ - "adminAccessTokenVersionName": "projects/myProject/secrets/mybbspat/versions/1", - "readAccessTokenVersionName": "projects/myProject/secrets/mybbspat/versions/1", - "webhookSecretVersionName": "projects/myProject/secrets/mybbspat/versions/1", + "admin_access_token_version_name": "projects/myProject/secrets/mybbspat/versions/1", + "read_access_token_version_name": "projects/myProject/secrets/mybbspat/versions/1", + "webhook_secret_version_name": "projects/myProject/secrets/mybbspat/versions/1", }, username="test", api_key="", diff --git a/sdk/python/pulumi_gcp/cloudbuild/trigger.py b/sdk/python/pulumi_gcp/cloudbuild/trigger.py index 7fcaba3176..591c5923d5 100644 --- a/sdk/python/pulumi_gcp/cloudbuild/trigger.py +++ b/sdk/python/pulumi_gcp/cloudbuild/trigger.py @@ -1053,8 +1053,8 @@ def __init__(__self__, filename_trigger = gcp.cloudbuild.Trigger("filename-trigger", location="us-central1", trigger_template={ - "branchName": "main", - "repoName": "my-repo", + "branch_name": "main", + "repo_name": "my-repo", }, substitutions={ "_FOO": "bar", @@ -1072,8 +1072,8 @@ def __init__(__self__, name="my-trigger", location="global", trigger_template={ - "branchName": "main", - "repoName": "my-repo", + "branch_name": "main", + "repo_name": "my-repo", }, build={ "steps": [ @@ -1085,7 +1085,7 @@ def __init__(__self__, "localfile.zip", ], "timeout": "120s", - "secretEnvs": ["MY_SECRET"], + "secret_envs": ["MY_SECRET"], }, { "name": "ubuntu", @@ -1093,7 +1093,7 @@ def __init__(__self__, }, ], "source": { - "storageSource": { + "storage_source": { "bucket": "mybucket", "object": "source_code.tar.gz", }, @@ -1103,21 +1103,21 @@ def __init__(__self__, "newFeature", ], "substitutions": { - "_FOO": "bar", - "_BAZ": "qux", + "__foo": "bar", + "__baz": "qux", }, - "queueTtl": "20s", - "logsBucket": "gs://mybucket/logs", + "queue_ttl": "20s", + "logs_bucket": "gs://mybucket/logs", "secrets": [{ - "kmsKeyName": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", - "secretEnv": { - "PASSWORD": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", + "kms_key_name": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", + "secret_env": { + "password": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", }, }], - "availableSecrets": { - "secretManagers": [{ + "available_secrets": { + "secret_managers": [{ "env": "MY_SECRET", - "versionName": "projects/myProject/secrets/mySecret/versions/latest", + "version_name": "projects/myProject/secrets/mySecret/versions/latest", }], }, "artifacts": { @@ -1126,34 +1126,34 @@ def __init__(__self__, "location": "gs://bucket/path/to/somewhere/", "paths": ["path"], }, - "npmPackages": [{ - "packagePath": "package.json", + "npm_packages": [{ + "package_path": "package.json", "repository": "https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo", }], - "pythonPackages": [{ + "python_packages": [{ "paths": ["dist/*"], "repository": "https://us-west1-python.pkg.dev/myProject/quickstart-python-repo", }], - "mavenArtifacts": [{ + "maven_artifacts": [{ "repository": "https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo", "path": "/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar", - "artifactId": "my-app", - "groupId": "com.mycompany.app", + "artifact_id": "my-app", + "group_id": "com.mycompany.app", "version": "1.0", }], }, "options": { - "sourceProvenanceHashes": ["MD5"], - "requestedVerifyOption": "VERIFIED", - "machineType": "N1_HIGHCPU_8", - "diskSizeGb": 100, - "substitutionOption": "ALLOW_LOOSE", - "dynamicSubstitutions": True, - "logStreamingOption": "STREAM_OFF", - "workerPool": "pool", + "source_provenance_hashes": ["MD5"], + "requested_verify_option": "VERIFIED", + "machine_type": "N1_HIGHCPU_8", + "disk_size_gb": 100, + "substitution_option": "ALLOW_LOOSE", + "dynamic_substitutions": True, + "log_streaming_option": "STREAM_OFF", + "worker_pool": "pool", "logging": "LEGACY", "envs": ["ekey = evalue"], - "secretEnvs": ["secretenv = svalue"], + "secret_envs": ["secretenv = svalue"], "volumes": [{ "name": "v1", "path": "v1", @@ -1179,8 +1179,8 @@ def __init__(__self__, member=cloudbuild_service_account.email.apply(lambda email: f"serviceAccount:{email}")) service_account_trigger = gcp.cloudbuild.Trigger("service-account-trigger", trigger_template={ - "branchName": "main", - "repoName": "my-repo", + "branch_name": "main", + "repo_name": "my-repo", }, service_account=cloudbuild_service_account.id, filename="cloudbuild.yaml", @@ -1225,13 +1225,13 @@ def __init__(__self__, source_to_build={ "uri": "https://hashicorp/terraform-provider-google-beta", "ref": "refs/heads/main", - "repoType": "GITHUB", + "repo_type": "GITHUB", }, git_file_source={ "path": "cloudbuild.yaml", "uri": "https://hashicorp/terraform-provider-google-beta", "revision": "refs/heads/main", - "repoType": "GITHUB", + "repo_type": "GITHUB", }, substitutions={ "_ACTION": "$(body.message.data.action)", @@ -1247,7 +1247,7 @@ def __init__(__self__, webhook_trigger_secret_key = gcp.secretmanager.Secret("webhook_trigger_secret_key", secret_id="webhook-trigger-secret-key", replication={ - "userManaged": { + "user_managed": { "replicas": [{ "location": "us-central1", }], @@ -1274,13 +1274,13 @@ def __init__(__self__, source_to_build={ "uri": "https://hashicorp/terraform-provider-google-beta", "ref": "refs/heads/main", - "repoType": "GITHUB", + "repo_type": "GITHUB", }, git_file_source={ "path": "cloudbuild.yaml", "uri": "https://hashicorp/terraform-provider-google-beta", "revision": "refs/heads/main", - "repoType": "GITHUB", + "repo_type": "GITHUB", }) ``` ### Cloudbuild Trigger Manual @@ -1294,16 +1294,16 @@ def __init__(__self__, source_to_build={ "uri": "https://hashicorp/terraform-provider-google-beta", "ref": "refs/heads/main", - "repoType": "GITHUB", + "repo_type": "GITHUB", }, git_file_source={ "path": "cloudbuild.yaml", "uri": "https://hashicorp/terraform-provider-google-beta", "revision": "refs/heads/main", - "repoType": "GITHUB", + "repo_type": "GITHUB", }, approval_config={ - "approvalRequired": True, + "approval_required": True, }) ``` ### Cloudbuild Trigger Manual Github Enterprise @@ -1317,15 +1317,15 @@ def __init__(__self__, source_to_build={ "uri": "https://hashicorp/terraform-provider-google-beta", "ref": "refs/heads/main", - "repoType": "GITHUB", - "githubEnterpriseConfig": "projects/myProject/locations/global/githubEnterpriseConfigs/configID", + "repo_type": "GITHUB", + "github_enterprise_config": "projects/myProject/locations/global/githubEnterpriseConfigs/configID", }, git_file_source={ "path": "cloudbuild.yaml", "uri": "https://hashicorp/terraform-provider-google-beta", "revision": "refs/heads/main", - "repoType": "GITHUB", - "githubEnterpriseConfig": "projects/myProject/locations/global/githubEnterpriseConfigs/configID", + "repo_type": "GITHUB", + "github_enterprise_config": "projects/myProject/locations/global/githubEnterpriseConfigs/configID", }) ``` ### Cloudbuild Trigger Manual Bitbucket Server @@ -1339,15 +1339,15 @@ def __init__(__self__, source_to_build={ "uri": "https://bbs.com/scm/stag/test-repo.git", "ref": "refs/heads/main", - "repoType": "BITBUCKET_SERVER", - "bitbucketServerConfig": "projects/myProject/locations/global/bitbucketServerConfigs/configID", + "repo_type": "BITBUCKET_SERVER", + "bitbucket_server_config": "projects/myProject/locations/global/bitbucketServerConfigs/configID", }, git_file_source={ "path": "cloudbuild.yaml", "uri": "https://bbs.com/scm/stag/test-repo.git", "revision": "refs/heads/main", - "repoType": "BITBUCKET_SERVER", - "bitbucketServerConfig": "projects/myProject/locations/global/bitbucketServerConfigs/configID", + "repo_type": "BITBUCKET_SERVER", + "bitbucket_server_config": "projects/myProject/locations/global/bitbucketServerConfigs/configID", }) ``` ### Cloudbuild Trigger Repo @@ -1360,9 +1360,9 @@ def __init__(__self__, location="us-central1", name="my-connection", github_config={ - "appInstallationId": 123123, - "authorizerCredential": { - "oauthTokenSecretVersion": "projects/my-project/secrets/github-pat-secret/versions/latest", + "app_installation_id": 123123, + "authorizer_credential": { + "oauth_token_secret_version": "projects/my-project/secrets/github-pat-secret/versions/latest", }, }) my_repository = gcp.cloudbuildv2.Repository("my-repository", @@ -1389,12 +1389,12 @@ def __init__(__self__, name="bbs-push-trigger", location="us-central1", bitbucket_server_trigger_config={ - "repoSlug": "bbs-push-trigger", - "projectKey": "STAG", - "bitbucketServerConfigResource": "projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig", + "repo_slug": "bbs-push-trigger", + "project_key": "STAG", + "bitbucket_server_config_resource": "projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig", "push": { "tag": "^0.1.*", - "invertRegex": True, + "invert_regex": True, }, }, filename="cloudbuild.yaml") @@ -1409,13 +1409,13 @@ def __init__(__self__, name="ghe-trigger", location="us-central1", bitbucket_server_trigger_config={ - "repoSlug": "terraform-provider-google", - "projectKey": "STAG", - "bitbucketServerConfigResource": "projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig", - "pullRequest": { + "repo_slug": "terraform-provider-google", + "project_key": "STAG", + "bitbucket_server_config_resource": "projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig", + "pull_request": { "branch": "^master$", - "invertRegex": False, - "commentControl": "COMMENTS_ENABLED", + "invert_regex": False, + "comment_control": "COMMENTS_ENABLED", }, }, filename="cloudbuild.yaml") @@ -1435,7 +1435,7 @@ def __init__(__self__, "push": { "branch": "^main$", }, - "enterpriseConfigResourceName": "projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID", + "enterprise_config_resource_name": "projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID", }, filename="cloudbuild.yaml") ``` @@ -1449,8 +1449,8 @@ def __init__(__self__, name="my-trigger", location="global", trigger_template={ - "branchName": "main", - "repoName": "my-repo", + "branch_name": "main", + "repo_name": "my-repo", }, build={ "steps": [{ @@ -1459,10 +1459,10 @@ def __init__(__self__, "-c", "exit 1", ], - "allowFailure": True, + "allow_failure": True, }], "source": { - "storageSource": { + "storage_source": { "bucket": "mybucket", "object": "source_code.tar.gz", }, @@ -1472,21 +1472,21 @@ def __init__(__self__, "newFeature", ], "substitutions": { - "_FOO": "bar", - "_BAZ": "qux", + "__foo": "bar", + "__baz": "qux", }, - "queueTtl": "20s", - "logsBucket": "gs://mybucket/logs", + "queue_ttl": "20s", + "logs_bucket": "gs://mybucket/logs", "secrets": [{ - "kmsKeyName": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", - "secretEnv": { - "PASSWORD": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", + "kms_key_name": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", + "secret_env": { + "password": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", }, }], - "availableSecrets": { - "secretManagers": [{ + "available_secrets": { + "secret_managers": [{ "env": "MY_SECRET", - "versionName": "projects/myProject/secrets/mySecret/versions/latest", + "version_name": "projects/myProject/secrets/mySecret/versions/latest", }], }, "artifacts": { @@ -1497,17 +1497,17 @@ def __init__(__self__, }, }, "options": { - "sourceProvenanceHashes": ["MD5"], - "requestedVerifyOption": "VERIFIED", - "machineType": "N1_HIGHCPU_8", - "diskSizeGb": 100, - "substitutionOption": "ALLOW_LOOSE", - "dynamicSubstitutions": True, - "logStreamingOption": "STREAM_OFF", - "workerPool": "pool", + "source_provenance_hashes": ["MD5"], + "requested_verify_option": "VERIFIED", + "machine_type": "N1_HIGHCPU_8", + "disk_size_gb": 100, + "substitution_option": "ALLOW_LOOSE", + "dynamic_substitutions": True, + "log_streaming_option": "STREAM_OFF", + "worker_pool": "pool", "logging": "LEGACY", "envs": ["ekey = evalue"], - "secretEnvs": ["secretenv = svalue"], + "secret_envs": ["secretenv = svalue"], "volumes": [{ "name": "v1", "path": "v1", @@ -1525,8 +1525,8 @@ def __init__(__self__, name="my-trigger", location="global", trigger_template={ - "branchName": "main", - "repoName": "my-repo", + "branch_name": "main", + "repo_name": "my-repo", }, build={ "steps": [{ @@ -1535,13 +1535,13 @@ def __init__(__self__, "-c", "exit 1", ], - "allowExitCodes": [ + "allow_exit_codes": [ 1, 3, ], }], "source": { - "storageSource": { + "storage_source": { "bucket": "mybucket", "object": "source_code.tar.gz", }, @@ -1551,21 +1551,21 @@ def __init__(__self__, "newFeature", ], "substitutions": { - "_FOO": "bar", - "_BAZ": "qux", + "__foo": "bar", + "__baz": "qux", }, - "queueTtl": "20s", - "logsBucket": "gs://mybucket/logs", + "queue_ttl": "20s", + "logs_bucket": "gs://mybucket/logs", "secrets": [{ - "kmsKeyName": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", - "secretEnv": { - "PASSWORD": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", + "kms_key_name": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", + "secret_env": { + "password": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", }, }], - "availableSecrets": { - "secretManagers": [{ + "available_secrets": { + "secret_managers": [{ "env": "MY_SECRET", - "versionName": "projects/myProject/secrets/mySecret/versions/latest", + "version_name": "projects/myProject/secrets/mySecret/versions/latest", }], }, "artifacts": { @@ -1576,17 +1576,17 @@ def __init__(__self__, }, }, "options": { - "sourceProvenanceHashes": ["MD5"], - "requestedVerifyOption": "VERIFIED", - "machineType": "N1_HIGHCPU_8", - "diskSizeGb": 100, - "substitutionOption": "ALLOW_LOOSE", - "dynamicSubstitutions": True, - "logStreamingOption": "STREAM_OFF", - "workerPool": "pool", + "source_provenance_hashes": ["MD5"], + "requested_verify_option": "VERIFIED", + "machine_type": "N1_HIGHCPU_8", + "disk_size_gb": 100, + "substitution_option": "ALLOW_LOOSE", + "dynamic_substitutions": True, + "log_streaming_option": "STREAM_OFF", + "worker_pool": "pool", "logging": "LEGACY", "envs": ["ekey = evalue"], - "secretEnvs": ["secretenv = svalue"], + "secret_envs": ["secretenv = svalue"], "volumes": [{ "name": "v1", "path": "v1", @@ -1604,9 +1604,9 @@ def __init__(__self__, location="us-central1", name="my-connection", github_config={ - "appInstallationId": 123123, - "authorizerCredential": { - "oauthTokenSecretVersion": "projects/my-project/secrets/github-pat-secret/versions/latest", + "app_installation_id": 123123, + "authorizer_credential": { + "oauth_token_secret_version": "projects/my-project/secrets/github-pat-secret/versions/latest", }, }) my_repository = gcp.cloudbuildv2.Repository("my-repository", @@ -1623,13 +1623,13 @@ def __init__(__self__, source_to_build={ "repository": my_repository.id, "ref": "refs/heads/main", - "repoType": "GITHUB", + "repo_type": "GITHUB", }, git_file_source={ "path": "cloudbuild.yaml", "repository": my_repository.id, "revision": "refs/heads/main", - "repoType": "GITHUB", + "repo_type": "GITHUB", }) ``` @@ -1767,8 +1767,8 @@ def __init__(__self__, filename_trigger = gcp.cloudbuild.Trigger("filename-trigger", location="us-central1", trigger_template={ - "branchName": "main", - "repoName": "my-repo", + "branch_name": "main", + "repo_name": "my-repo", }, substitutions={ "_FOO": "bar", @@ -1786,8 +1786,8 @@ def __init__(__self__, name="my-trigger", location="global", trigger_template={ - "branchName": "main", - "repoName": "my-repo", + "branch_name": "main", + "repo_name": "my-repo", }, build={ "steps": [ @@ -1799,7 +1799,7 @@ def __init__(__self__, "localfile.zip", ], "timeout": "120s", - "secretEnvs": ["MY_SECRET"], + "secret_envs": ["MY_SECRET"], }, { "name": "ubuntu", @@ -1807,7 +1807,7 @@ def __init__(__self__, }, ], "source": { - "storageSource": { + "storage_source": { "bucket": "mybucket", "object": "source_code.tar.gz", }, @@ -1817,21 +1817,21 @@ def __init__(__self__, "newFeature", ], "substitutions": { - "_FOO": "bar", - "_BAZ": "qux", + "__foo": "bar", + "__baz": "qux", }, - "queueTtl": "20s", - "logsBucket": "gs://mybucket/logs", + "queue_ttl": "20s", + "logs_bucket": "gs://mybucket/logs", "secrets": [{ - "kmsKeyName": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", - "secretEnv": { - "PASSWORD": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", + "kms_key_name": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", + "secret_env": { + "password": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", }, }], - "availableSecrets": { - "secretManagers": [{ + "available_secrets": { + "secret_managers": [{ "env": "MY_SECRET", - "versionName": "projects/myProject/secrets/mySecret/versions/latest", + "version_name": "projects/myProject/secrets/mySecret/versions/latest", }], }, "artifacts": { @@ -1840,34 +1840,34 @@ def __init__(__self__, "location": "gs://bucket/path/to/somewhere/", "paths": ["path"], }, - "npmPackages": [{ - "packagePath": "package.json", + "npm_packages": [{ + "package_path": "package.json", "repository": "https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo", }], - "pythonPackages": [{ + "python_packages": [{ "paths": ["dist/*"], "repository": "https://us-west1-python.pkg.dev/myProject/quickstart-python-repo", }], - "mavenArtifacts": [{ + "maven_artifacts": [{ "repository": "https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo", "path": "/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar", - "artifactId": "my-app", - "groupId": "com.mycompany.app", + "artifact_id": "my-app", + "group_id": "com.mycompany.app", "version": "1.0", }], }, "options": { - "sourceProvenanceHashes": ["MD5"], - "requestedVerifyOption": "VERIFIED", - "machineType": "N1_HIGHCPU_8", - "diskSizeGb": 100, - "substitutionOption": "ALLOW_LOOSE", - "dynamicSubstitutions": True, - "logStreamingOption": "STREAM_OFF", - "workerPool": "pool", + "source_provenance_hashes": ["MD5"], + "requested_verify_option": "VERIFIED", + "machine_type": "N1_HIGHCPU_8", + "disk_size_gb": 100, + "substitution_option": "ALLOW_LOOSE", + "dynamic_substitutions": True, + "log_streaming_option": "STREAM_OFF", + "worker_pool": "pool", "logging": "LEGACY", "envs": ["ekey = evalue"], - "secretEnvs": ["secretenv = svalue"], + "secret_envs": ["secretenv = svalue"], "volumes": [{ "name": "v1", "path": "v1", @@ -1893,8 +1893,8 @@ def __init__(__self__, member=cloudbuild_service_account.email.apply(lambda email: f"serviceAccount:{email}")) service_account_trigger = gcp.cloudbuild.Trigger("service-account-trigger", trigger_template={ - "branchName": "main", - "repoName": "my-repo", + "branch_name": "main", + "repo_name": "my-repo", }, service_account=cloudbuild_service_account.id, filename="cloudbuild.yaml", @@ -1939,13 +1939,13 @@ def __init__(__self__, source_to_build={ "uri": "https://hashicorp/terraform-provider-google-beta", "ref": "refs/heads/main", - "repoType": "GITHUB", + "repo_type": "GITHUB", }, git_file_source={ "path": "cloudbuild.yaml", "uri": "https://hashicorp/terraform-provider-google-beta", "revision": "refs/heads/main", - "repoType": "GITHUB", + "repo_type": "GITHUB", }, substitutions={ "_ACTION": "$(body.message.data.action)", @@ -1961,7 +1961,7 @@ def __init__(__self__, webhook_trigger_secret_key = gcp.secretmanager.Secret("webhook_trigger_secret_key", secret_id="webhook-trigger-secret-key", replication={ - "userManaged": { + "user_managed": { "replicas": [{ "location": "us-central1", }], @@ -1988,13 +1988,13 @@ def __init__(__self__, source_to_build={ "uri": "https://hashicorp/terraform-provider-google-beta", "ref": "refs/heads/main", - "repoType": "GITHUB", + "repo_type": "GITHUB", }, git_file_source={ "path": "cloudbuild.yaml", "uri": "https://hashicorp/terraform-provider-google-beta", "revision": "refs/heads/main", - "repoType": "GITHUB", + "repo_type": "GITHUB", }) ``` ### Cloudbuild Trigger Manual @@ -2008,16 +2008,16 @@ def __init__(__self__, source_to_build={ "uri": "https://hashicorp/terraform-provider-google-beta", "ref": "refs/heads/main", - "repoType": "GITHUB", + "repo_type": "GITHUB", }, git_file_source={ "path": "cloudbuild.yaml", "uri": "https://hashicorp/terraform-provider-google-beta", "revision": "refs/heads/main", - "repoType": "GITHUB", + "repo_type": "GITHUB", }, approval_config={ - "approvalRequired": True, + "approval_required": True, }) ``` ### Cloudbuild Trigger Manual Github Enterprise @@ -2031,15 +2031,15 @@ def __init__(__self__, source_to_build={ "uri": "https://hashicorp/terraform-provider-google-beta", "ref": "refs/heads/main", - "repoType": "GITHUB", - "githubEnterpriseConfig": "projects/myProject/locations/global/githubEnterpriseConfigs/configID", + "repo_type": "GITHUB", + "github_enterprise_config": "projects/myProject/locations/global/githubEnterpriseConfigs/configID", }, git_file_source={ "path": "cloudbuild.yaml", "uri": "https://hashicorp/terraform-provider-google-beta", "revision": "refs/heads/main", - "repoType": "GITHUB", - "githubEnterpriseConfig": "projects/myProject/locations/global/githubEnterpriseConfigs/configID", + "repo_type": "GITHUB", + "github_enterprise_config": "projects/myProject/locations/global/githubEnterpriseConfigs/configID", }) ``` ### Cloudbuild Trigger Manual Bitbucket Server @@ -2053,15 +2053,15 @@ def __init__(__self__, source_to_build={ "uri": "https://bbs.com/scm/stag/test-repo.git", "ref": "refs/heads/main", - "repoType": "BITBUCKET_SERVER", - "bitbucketServerConfig": "projects/myProject/locations/global/bitbucketServerConfigs/configID", + "repo_type": "BITBUCKET_SERVER", + "bitbucket_server_config": "projects/myProject/locations/global/bitbucketServerConfigs/configID", }, git_file_source={ "path": "cloudbuild.yaml", "uri": "https://bbs.com/scm/stag/test-repo.git", "revision": "refs/heads/main", - "repoType": "BITBUCKET_SERVER", - "bitbucketServerConfig": "projects/myProject/locations/global/bitbucketServerConfigs/configID", + "repo_type": "BITBUCKET_SERVER", + "bitbucket_server_config": "projects/myProject/locations/global/bitbucketServerConfigs/configID", }) ``` ### Cloudbuild Trigger Repo @@ -2074,9 +2074,9 @@ def __init__(__self__, location="us-central1", name="my-connection", github_config={ - "appInstallationId": 123123, - "authorizerCredential": { - "oauthTokenSecretVersion": "projects/my-project/secrets/github-pat-secret/versions/latest", + "app_installation_id": 123123, + "authorizer_credential": { + "oauth_token_secret_version": "projects/my-project/secrets/github-pat-secret/versions/latest", }, }) my_repository = gcp.cloudbuildv2.Repository("my-repository", @@ -2103,12 +2103,12 @@ def __init__(__self__, name="bbs-push-trigger", location="us-central1", bitbucket_server_trigger_config={ - "repoSlug": "bbs-push-trigger", - "projectKey": "STAG", - "bitbucketServerConfigResource": "projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig", + "repo_slug": "bbs-push-trigger", + "project_key": "STAG", + "bitbucket_server_config_resource": "projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig", "push": { "tag": "^0.1.*", - "invertRegex": True, + "invert_regex": True, }, }, filename="cloudbuild.yaml") @@ -2123,13 +2123,13 @@ def __init__(__self__, name="ghe-trigger", location="us-central1", bitbucket_server_trigger_config={ - "repoSlug": "terraform-provider-google", - "projectKey": "STAG", - "bitbucketServerConfigResource": "projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig", - "pullRequest": { + "repo_slug": "terraform-provider-google", + "project_key": "STAG", + "bitbucket_server_config_resource": "projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig", + "pull_request": { "branch": "^master$", - "invertRegex": False, - "commentControl": "COMMENTS_ENABLED", + "invert_regex": False, + "comment_control": "COMMENTS_ENABLED", }, }, filename="cloudbuild.yaml") @@ -2149,7 +2149,7 @@ def __init__(__self__, "push": { "branch": "^main$", }, - "enterpriseConfigResourceName": "projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID", + "enterprise_config_resource_name": "projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID", }, filename="cloudbuild.yaml") ``` @@ -2163,8 +2163,8 @@ def __init__(__self__, name="my-trigger", location="global", trigger_template={ - "branchName": "main", - "repoName": "my-repo", + "branch_name": "main", + "repo_name": "my-repo", }, build={ "steps": [{ @@ -2173,10 +2173,10 @@ def __init__(__self__, "-c", "exit 1", ], - "allowFailure": True, + "allow_failure": True, }], "source": { - "storageSource": { + "storage_source": { "bucket": "mybucket", "object": "source_code.tar.gz", }, @@ -2186,21 +2186,21 @@ def __init__(__self__, "newFeature", ], "substitutions": { - "_FOO": "bar", - "_BAZ": "qux", + "__foo": "bar", + "__baz": "qux", }, - "queueTtl": "20s", - "logsBucket": "gs://mybucket/logs", + "queue_ttl": "20s", + "logs_bucket": "gs://mybucket/logs", "secrets": [{ - "kmsKeyName": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", - "secretEnv": { - "PASSWORD": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", + "kms_key_name": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", + "secret_env": { + "password": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", }, }], - "availableSecrets": { - "secretManagers": [{ + "available_secrets": { + "secret_managers": [{ "env": "MY_SECRET", - "versionName": "projects/myProject/secrets/mySecret/versions/latest", + "version_name": "projects/myProject/secrets/mySecret/versions/latest", }], }, "artifacts": { @@ -2211,17 +2211,17 @@ def __init__(__self__, }, }, "options": { - "sourceProvenanceHashes": ["MD5"], - "requestedVerifyOption": "VERIFIED", - "machineType": "N1_HIGHCPU_8", - "diskSizeGb": 100, - "substitutionOption": "ALLOW_LOOSE", - "dynamicSubstitutions": True, - "logStreamingOption": "STREAM_OFF", - "workerPool": "pool", + "source_provenance_hashes": ["MD5"], + "requested_verify_option": "VERIFIED", + "machine_type": "N1_HIGHCPU_8", + "disk_size_gb": 100, + "substitution_option": "ALLOW_LOOSE", + "dynamic_substitutions": True, + "log_streaming_option": "STREAM_OFF", + "worker_pool": "pool", "logging": "LEGACY", "envs": ["ekey = evalue"], - "secretEnvs": ["secretenv = svalue"], + "secret_envs": ["secretenv = svalue"], "volumes": [{ "name": "v1", "path": "v1", @@ -2239,8 +2239,8 @@ def __init__(__self__, name="my-trigger", location="global", trigger_template={ - "branchName": "main", - "repoName": "my-repo", + "branch_name": "main", + "repo_name": "my-repo", }, build={ "steps": [{ @@ -2249,13 +2249,13 @@ def __init__(__self__, "-c", "exit 1", ], - "allowExitCodes": [ + "allow_exit_codes": [ 1, 3, ], }], "source": { - "storageSource": { + "storage_source": { "bucket": "mybucket", "object": "source_code.tar.gz", }, @@ -2265,21 +2265,21 @@ def __init__(__self__, "newFeature", ], "substitutions": { - "_FOO": "bar", - "_BAZ": "qux", + "__foo": "bar", + "__baz": "qux", }, - "queueTtl": "20s", - "logsBucket": "gs://mybucket/logs", + "queue_ttl": "20s", + "logs_bucket": "gs://mybucket/logs", "secrets": [{ - "kmsKeyName": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", - "secretEnv": { - "PASSWORD": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", + "kms_key_name": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", + "secret_env": { + "password": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", }, }], - "availableSecrets": { - "secretManagers": [{ + "available_secrets": { + "secret_managers": [{ "env": "MY_SECRET", - "versionName": "projects/myProject/secrets/mySecret/versions/latest", + "version_name": "projects/myProject/secrets/mySecret/versions/latest", }], }, "artifacts": { @@ -2290,17 +2290,17 @@ def __init__(__self__, }, }, "options": { - "sourceProvenanceHashes": ["MD5"], - "requestedVerifyOption": "VERIFIED", - "machineType": "N1_HIGHCPU_8", - "diskSizeGb": 100, - "substitutionOption": "ALLOW_LOOSE", - "dynamicSubstitutions": True, - "logStreamingOption": "STREAM_OFF", - "workerPool": "pool", + "source_provenance_hashes": ["MD5"], + "requested_verify_option": "VERIFIED", + "machine_type": "N1_HIGHCPU_8", + "disk_size_gb": 100, + "substitution_option": "ALLOW_LOOSE", + "dynamic_substitutions": True, + "log_streaming_option": "STREAM_OFF", + "worker_pool": "pool", "logging": "LEGACY", "envs": ["ekey = evalue"], - "secretEnvs": ["secretenv = svalue"], + "secret_envs": ["secretenv = svalue"], "volumes": [{ "name": "v1", "path": "v1", @@ -2318,9 +2318,9 @@ def __init__(__self__, location="us-central1", name="my-connection", github_config={ - "appInstallationId": 123123, - "authorizerCredential": { - "oauthTokenSecretVersion": "projects/my-project/secrets/github-pat-secret/versions/latest", + "app_installation_id": 123123, + "authorizer_credential": { + "oauth_token_secret_version": "projects/my-project/secrets/github-pat-secret/versions/latest", }, }) my_repository = gcp.cloudbuildv2.Repository("my-repository", @@ -2337,13 +2337,13 @@ def __init__(__self__, source_to_build={ "repository": my_repository.id, "ref": "refs/heads/main", - "repoType": "GITHUB", + "repo_type": "GITHUB", }, git_file_source={ "path": "cloudbuild.yaml", "repository": my_repository.id, "revision": "refs/heads/main", - "repoType": "GITHUB", + "repo_type": "GITHUB", }) ``` diff --git a/sdk/python/pulumi_gcp/cloudbuild/worker_pool.py b/sdk/python/pulumi_gcp/cloudbuild/worker_pool.py index 3b4b6e5ba6..3707b24344 100644 --- a/sdk/python/pulumi_gcp/cloudbuild/worker_pool.py +++ b/sdk/python/pulumi_gcp/cloudbuild/worker_pool.py @@ -395,9 +395,9 @@ def __init__(__self__, name="my-pool", location="europe-west1", worker_config={ - "diskSizeGb": 100, - "machineType": "e2-standard-4", - "noExternalIp": False, + "disk_size_gb": 100, + "machine_type": "e2-standard-4", + "no_external_ip": False, }) ``` @@ -429,13 +429,13 @@ def __init__(__self__, name="my-pool", location="europe-west1", worker_config={ - "diskSizeGb": 100, - "machineType": "e2-standard-4", - "noExternalIp": False, + "disk_size_gb": 100, + "machine_type": "e2-standard-4", + "no_external_ip": False, }, network_config={ - "peeredNetwork": network.id, - "peeredNetworkIpRange": "/29", + "peered_network": network.id, + "peered_network_ip_range": "/29", }, opts = pulumi.ResourceOptions(depends_on=[worker_pool_conn])) ``` @@ -498,9 +498,9 @@ def __init__(__self__, name="my-pool", location="europe-west1", worker_config={ - "diskSizeGb": 100, - "machineType": "e2-standard-4", - "noExternalIp": False, + "disk_size_gb": 100, + "machine_type": "e2-standard-4", + "no_external_ip": False, }) ``` @@ -532,13 +532,13 @@ def __init__(__self__, name="my-pool", location="europe-west1", worker_config={ - "diskSizeGb": 100, - "machineType": "e2-standard-4", - "noExternalIp": False, + "disk_size_gb": 100, + "machine_type": "e2-standard-4", + "no_external_ip": False, }, network_config={ - "peeredNetwork": network.id, - "peeredNetworkIpRange": "/29", + "peered_network": network.id, + "peered_network_ip_range": "/29", }, opts = pulumi.ResourceOptions(depends_on=[worker_pool_conn])) ``` diff --git a/sdk/python/pulumi_gcp/cloudbuildv2/connection.py b/sdk/python/pulumi_gcp/cloudbuildv2/connection.py index caa1c20674..e5bb48cb42 100644 --- a/sdk/python/pulumi_gcp/cloudbuildv2/connection.py +++ b/sdk/python/pulumi_gcp/cloudbuildv2/connection.py @@ -528,9 +528,9 @@ def __init__(__self__, location="us-central1", name="tf-test-connection", github_config={ - "appInstallationId": 0, - "authorizerCredential": { - "oauthTokenSecretVersion": "projects/gcb-terraform-creds/secrets/github-pat/versions/1", + "app_installation_id": 0, + "authorizer_credential": { + "oauth_token_secret_version": "projects/gcb-terraform-creds/secrets/github-pat/versions/1", }, }) ``` @@ -571,12 +571,12 @@ def __init__(__self__, location="us-central1", name="my-terraform-ghe-connection", github_enterprise_config={ - "hostUri": "https://ghe.com", - "privateKeySecretVersion": private_key_secret_version.id, - "webhookSecretSecretVersion": webhook_secret_secret_version.id, - "appId": 200, - "appSlug": "gcb-app", - "appInstallationId": 300, + "host_uri": "https://ghe.com", + "private_key_secret_version": private_key_secret_version.id, + "webhook_secret_secret_version": webhook_secret_secret_version.id, + "app_id": 200, + "app_slug": "gcb-app", + "app_installation_id": 300, }, opts = pulumi.ResourceOptions(depends_on=[ policy_pk, @@ -609,9 +609,9 @@ def __init__(__self__, location="us-central1", name="my-connection", github_config={ - "appInstallationId": 123123, - "authorizerCredential": { - "oauthTokenSecretVersion": github_token_secret_version.id, + "app_installation_id": 123123, + "authorizer_credential": { + "oauth_token_secret_version": github_token_secret_version.id, }, }) ``` @@ -697,9 +697,9 @@ def __init__(__self__, location="us-central1", name="tf-test-connection", github_config={ - "appInstallationId": 0, - "authorizerCredential": { - "oauthTokenSecretVersion": "projects/gcb-terraform-creds/secrets/github-pat/versions/1", + "app_installation_id": 0, + "authorizer_credential": { + "oauth_token_secret_version": "projects/gcb-terraform-creds/secrets/github-pat/versions/1", }, }) ``` @@ -740,12 +740,12 @@ def __init__(__self__, location="us-central1", name="my-terraform-ghe-connection", github_enterprise_config={ - "hostUri": "https://ghe.com", - "privateKeySecretVersion": private_key_secret_version.id, - "webhookSecretSecretVersion": webhook_secret_secret_version.id, - "appId": 200, - "appSlug": "gcb-app", - "appInstallationId": 300, + "host_uri": "https://ghe.com", + "private_key_secret_version": private_key_secret_version.id, + "webhook_secret_secret_version": webhook_secret_secret_version.id, + "app_id": 200, + "app_slug": "gcb-app", + "app_installation_id": 300, }, opts = pulumi.ResourceOptions(depends_on=[ policy_pk, @@ -778,9 +778,9 @@ def __init__(__self__, location="us-central1", name="my-connection", github_config={ - "appInstallationId": 123123, - "authorizerCredential": { - "oauthTokenSecretVersion": github_token_secret_version.id, + "app_installation_id": 123123, + "authorizer_credential": { + "oauth_token_secret_version": github_token_secret_version.id, }, }) ``` diff --git a/sdk/python/pulumi_gcp/cloudbuildv2/repository.py b/sdk/python/pulumi_gcp/cloudbuildv2/repository.py index 28b01921e8..9073eabab6 100644 --- a/sdk/python/pulumi_gcp/cloudbuildv2/repository.py +++ b/sdk/python/pulumi_gcp/cloudbuildv2/repository.py @@ -366,12 +366,12 @@ def __init__(__self__, location="us-central1", name="my-terraform-ghe-connection", github_enterprise_config={ - "hostUri": "https://ghe.com", - "privateKeySecretVersion": private_key_secret_version.id, - "webhookSecretSecretVersion": webhook_secret_secret_version.id, - "appId": 200, - "appSlug": "gcb-app", - "appInstallationId": 300, + "host_uri": "https://ghe.com", + "private_key_secret_version": private_key_secret_version.id, + "webhook_secret_secret_version": webhook_secret_secret_version.id, + "app_id": 200, + "app_slug": "gcb-app", + "app_installation_id": 300, }, opts = pulumi.ResourceOptions(depends_on=[ policy_pk, @@ -409,9 +409,9 @@ def __init__(__self__, location="us-central1", name="my-connection", github_config={ - "appInstallationId": 123123, - "authorizerCredential": { - "oauthTokenSecretVersion": github_token_secret_version.id, + "app_installation_id": 123123, + "authorizer_credential": { + "oauth_token_secret_version": github_token_secret_version.id, }, }) my_repository = gcp.cloudbuildv2.Repository("my-repository", @@ -514,12 +514,12 @@ def __init__(__self__, location="us-central1", name="my-terraform-ghe-connection", github_enterprise_config={ - "hostUri": "https://ghe.com", - "privateKeySecretVersion": private_key_secret_version.id, - "webhookSecretSecretVersion": webhook_secret_secret_version.id, - "appId": 200, - "appSlug": "gcb-app", - "appInstallationId": 300, + "host_uri": "https://ghe.com", + "private_key_secret_version": private_key_secret_version.id, + "webhook_secret_secret_version": webhook_secret_secret_version.id, + "app_id": 200, + "app_slug": "gcb-app", + "app_installation_id": 300, }, opts = pulumi.ResourceOptions(depends_on=[ policy_pk, @@ -557,9 +557,9 @@ def __init__(__self__, location="us-central1", name="my-connection", github_config={ - "appInstallationId": 123123, - "authorizerCredential": { - "oauthTokenSecretVersion": github_token_secret_version.id, + "app_installation_id": 123123, + "authorizer_credential": { + "oauth_token_secret_version": github_token_secret_version.id, }, }) my_repository = gcp.cloudbuildv2.Repository("my-repository", diff --git a/sdk/python/pulumi_gcp/clouddeploy/automation.py b/sdk/python/pulumi_gcp/clouddeploy/automation.py index aa01c30067..ead0b26a80 100644 --- a/sdk/python/pulumi_gcp/clouddeploy/automation.py +++ b/sdk/python/pulumi_gcp/clouddeploy/automation.py @@ -586,7 +586,7 @@ def __init__(__self__, location="us-central1", serial_pipeline={ "stages": [{ - "targetId": "test", + "target_id": "test", "profiles": [], }], }) @@ -603,7 +603,7 @@ def __init__(__self__, }, suspended=False, rules=[{ - "promoteReleaseRule": { + "promote_release_rule": { "id": "promote-release", }, }]) @@ -619,7 +619,7 @@ def __init__(__self__, location="us-central1", serial_pipeline={ "stages": [{ - "targetId": "test", + "target_id": "test", "profiles": ["test-profile"], }], }) @@ -648,17 +648,17 @@ def __init__(__self__, suspended=True, rules=[ { - "promoteReleaseRule": { + "promote_release_rule": { "id": "promote-release", "wait": "200s", - "destinationTargetId": "@next", - "destinationPhase": "stable", + "destination_target_id": "@next", + "destination_phase": "stable", }, }, { - "advanceRolloutRule": { + "advance_rollout_rule": { "id": "advance-rollout", - "sourcePhases": ["deploy"], + "source_phases": ["deploy"], "wait": "200s", }, }, @@ -746,7 +746,7 @@ def __init__(__self__, location="us-central1", serial_pipeline={ "stages": [{ - "targetId": "test", + "target_id": "test", "profiles": [], }], }) @@ -763,7 +763,7 @@ def __init__(__self__, }, suspended=False, rules=[{ - "promoteReleaseRule": { + "promote_release_rule": { "id": "promote-release", }, }]) @@ -779,7 +779,7 @@ def __init__(__self__, location="us-central1", serial_pipeline={ "stages": [{ - "targetId": "test", + "target_id": "test", "profiles": ["test-profile"], }], }) @@ -808,17 +808,17 @@ def __init__(__self__, suspended=True, rules=[ { - "promoteReleaseRule": { + "promote_release_rule": { "id": "promote-release", "wait": "200s", - "destinationTargetId": "@next", - "destinationPhase": "stable", + "destination_target_id": "@next", + "destination_phase": "stable", }, }, { - "advanceRolloutRule": { + "advance_rollout_rule": { "id": "advance-rollout", - "sourcePhases": ["deploy"], + "source_phases": ["deploy"], "wait": "200s", }, }, diff --git a/sdk/python/pulumi_gcp/clouddeploy/custom_target_type.py b/sdk/python/pulumi_gcp/clouddeploy/custom_target_type.py index 4ed7b52145..7097c57143 100644 --- a/sdk/python/pulumi_gcp/clouddeploy/custom_target_type.py +++ b/sdk/python/pulumi_gcp/clouddeploy/custom_target_type.py @@ -463,8 +463,8 @@ def __init__(__self__, "my_second_label": "example-label-2", }, custom_actions={ - "renderAction": "renderAction", - "deployAction": "deployAction", + "render_action": "renderAction", + "deploy_action": "deployAction", }) ``` ### Clouddeploy Custom Target Type Git Skaffold Modules @@ -478,9 +478,9 @@ def __init__(__self__, name="my-custom-target-type", description="My custom target type", custom_actions={ - "renderAction": "renderAction", - "deployAction": "deployAction", - "includeSkaffoldModules": [{ + "render_action": "renderAction", + "deploy_action": "deployAction", + "include_skaffold_modules": [{ "configs": ["my-config"], "git": { "repo": "http://github.com/example/example-repo.git", @@ -501,11 +501,11 @@ def __init__(__self__, name="my-custom-target-type", description="My custom target type", custom_actions={ - "renderAction": "renderAction", - "deployAction": "deployAction", - "includeSkaffoldModules": [{ + "render_action": "renderAction", + "deploy_action": "deployAction", + "include_skaffold_modules": [{ "configs": ["my-config"], - "googleCloudStorage": { + "google_cloud_storage": { "source": "gs://example-bucket/dir/configs/*", "path": "skaffold.yaml", }, @@ -523,11 +523,11 @@ def __init__(__self__, name="my-custom-target-type", description="My custom target type", custom_actions={ - "renderAction": "renderAction", - "deployAction": "deployAction", - "includeSkaffoldModules": [{ + "render_action": "renderAction", + "deploy_action": "deployAction", + "include_skaffold_modules": [{ "configs": ["my-config"], - "googleCloudBuildRepo": { + "google_cloud_build_repo": { "repository": "projects/example/locations/us-central1/connections/git/repositories/example-repo", "path": "configs/skaffold.yaml", "ref": "main", @@ -616,8 +616,8 @@ def __init__(__self__, "my_second_label": "example-label-2", }, custom_actions={ - "renderAction": "renderAction", - "deployAction": "deployAction", + "render_action": "renderAction", + "deploy_action": "deployAction", }) ``` ### Clouddeploy Custom Target Type Git Skaffold Modules @@ -631,9 +631,9 @@ def __init__(__self__, name="my-custom-target-type", description="My custom target type", custom_actions={ - "renderAction": "renderAction", - "deployAction": "deployAction", - "includeSkaffoldModules": [{ + "render_action": "renderAction", + "deploy_action": "deployAction", + "include_skaffold_modules": [{ "configs": ["my-config"], "git": { "repo": "http://github.com/example/example-repo.git", @@ -654,11 +654,11 @@ def __init__(__self__, name="my-custom-target-type", description="My custom target type", custom_actions={ - "renderAction": "renderAction", - "deployAction": "deployAction", - "includeSkaffoldModules": [{ + "render_action": "renderAction", + "deploy_action": "deployAction", + "include_skaffold_modules": [{ "configs": ["my-config"], - "googleCloudStorage": { + "google_cloud_storage": { "source": "gs://example-bucket/dir/configs/*", "path": "skaffold.yaml", }, @@ -676,11 +676,11 @@ def __init__(__self__, name="my-custom-target-type", description="My custom target type", custom_actions={ - "renderAction": "renderAction", - "deployAction": "deployAction", - "includeSkaffoldModules": [{ + "render_action": "renderAction", + "deploy_action": "deployAction", + "include_skaffold_modules": [{ "configs": ["my-config"], - "googleCloudBuildRepo": { + "google_cloud_build_repo": { "repository": "projects/example/locations/us-central1/connections/git/repositories/example-repo", "path": "configs/skaffold.yaml", "ref": "main", diff --git a/sdk/python/pulumi_gcp/clouddeploy/delivery_pipeline.py b/sdk/python/pulumi_gcp/clouddeploy/delivery_pipeline.py index 3d583f7fb0..7ec3881c89 100644 --- a/sdk/python/pulumi_gcp/clouddeploy/delivery_pipeline.py +++ b/sdk/python/pulumi_gcp/clouddeploy/delivery_pipeline.py @@ -482,21 +482,21 @@ def __init__(__self__, serial_pipeline={ "stages": [ { - "deployParameters": [{ + "deploy_parameters": [{ "values": { - "deployParameterKey": "deployParameterValue", + "deploy_parameter_key": "deployParameterValue", }, - "matchTargetLabels": {}, + "match_target_labels": {}, }], "profiles": [ "example-profile-one", "example-profile-two", ], - "targetId": "example-target-one", + "target_id": "example-target-one", }, { "profiles": [], - "targetId": "example-target-two", + "target_id": "example-target-two", }, ], }, @@ -523,21 +523,21 @@ def __init__(__self__, serial_pipeline={ "stages": [ { - "deployParameters": [{ + "deploy_parameters": [{ "values": { - "deployParameterKey": "deployParameterValue", + "deploy_parameter_key": "deployParameterValue", }, - "matchTargetLabels": {}, + "match_target_labels": {}, }], "profiles": [ "example-profile-one", "example-profile-two", ], - "targetId": "example-target-one", + "target_id": "example-target-one", }, { "profiles": [], - "targetId": "example-target-two", + "target_id": "example-target-two", }, ], }, @@ -564,21 +564,21 @@ def __init__(__self__, serial_pipeline={ "stages": [ { - "deployParameters": [{ + "deploy_parameters": [{ "values": { - "deployParameterKey": "deployParameterValue", + "deploy_parameter_key": "deployParameterValue", }, - "matchTargetLabels": {}, + "match_target_labels": {}, }], "profiles": [ "example-profile-one", "example-profile-two", ], - "targetId": "example-target-one", + "target_id": "example-target-one", }, { "profiles": [], - "targetId": "example-target-two", + "target_id": "example-target-two", }, ], }, @@ -605,21 +605,21 @@ def __init__(__self__, serial_pipeline={ "stages": [ { - "deployParameters": [{ + "deploy_parameters": [{ "values": { - "deployParameterKey": "deployParameterValue", + "deploy_parameter_key": "deployParameterValue", }, - "matchTargetLabels": {}, + "match_target_labels": {}, }], "profiles": [ "example-profile-one", "example-profile-two", ], - "targetId": "example-target-one", + "target_id": "example-target-one", }, { "profiles": [], - "targetId": "example-target-two", + "target_id": "example-target-two", }, ], }, @@ -646,21 +646,21 @@ def __init__(__self__, serial_pipeline={ "stages": [ { - "deployParameters": [{ + "deploy_parameters": [{ "values": { - "deployParameterKey": "deployParameterValue", + "deploy_parameter_key": "deployParameterValue", }, - "matchTargetLabels": {}, + "match_target_labels": {}, }], "profiles": [ "example-profile-one", "example-profile-two", ], - "targetId": "example-target-one", + "target_id": "example-target-one", }, { "profiles": [], - "targetId": "example-target-two", + "target_id": "example-target-two", }, ], }, @@ -743,21 +743,21 @@ def __init__(__self__, serial_pipeline={ "stages": [ { - "deployParameters": [{ + "deploy_parameters": [{ "values": { - "deployParameterKey": "deployParameterValue", + "deploy_parameter_key": "deployParameterValue", }, - "matchTargetLabels": {}, + "match_target_labels": {}, }], "profiles": [ "example-profile-one", "example-profile-two", ], - "targetId": "example-target-one", + "target_id": "example-target-one", }, { "profiles": [], - "targetId": "example-target-two", + "target_id": "example-target-two", }, ], }, @@ -784,21 +784,21 @@ def __init__(__self__, serial_pipeline={ "stages": [ { - "deployParameters": [{ + "deploy_parameters": [{ "values": { - "deployParameterKey": "deployParameterValue", + "deploy_parameter_key": "deployParameterValue", }, - "matchTargetLabels": {}, + "match_target_labels": {}, }], "profiles": [ "example-profile-one", "example-profile-two", ], - "targetId": "example-target-one", + "target_id": "example-target-one", }, { "profiles": [], - "targetId": "example-target-two", + "target_id": "example-target-two", }, ], }, @@ -825,21 +825,21 @@ def __init__(__self__, serial_pipeline={ "stages": [ { - "deployParameters": [{ + "deploy_parameters": [{ "values": { - "deployParameterKey": "deployParameterValue", + "deploy_parameter_key": "deployParameterValue", }, - "matchTargetLabels": {}, + "match_target_labels": {}, }], "profiles": [ "example-profile-one", "example-profile-two", ], - "targetId": "example-target-one", + "target_id": "example-target-one", }, { "profiles": [], - "targetId": "example-target-two", + "target_id": "example-target-two", }, ], }, @@ -866,21 +866,21 @@ def __init__(__self__, serial_pipeline={ "stages": [ { - "deployParameters": [{ + "deploy_parameters": [{ "values": { - "deployParameterKey": "deployParameterValue", + "deploy_parameter_key": "deployParameterValue", }, - "matchTargetLabels": {}, + "match_target_labels": {}, }], "profiles": [ "example-profile-one", "example-profile-two", ], - "targetId": "example-target-one", + "target_id": "example-target-one", }, { "profiles": [], - "targetId": "example-target-two", + "target_id": "example-target-two", }, ], }, @@ -907,21 +907,21 @@ def __init__(__self__, serial_pipeline={ "stages": [ { - "deployParameters": [{ + "deploy_parameters": [{ "values": { - "deployParameterKey": "deployParameterValue", + "deploy_parameter_key": "deployParameterValue", }, - "matchTargetLabels": {}, + "match_target_labels": {}, }], "profiles": [ "example-profile-one", "example-profile-two", ], - "targetId": "example-target-one", + "target_id": "example-target-one", }, { "profiles": [], - "targetId": "example-target-two", + "target_id": "example-target-two", }, ], }, diff --git a/sdk/python/pulumi_gcp/clouddeploy/target.py b/sdk/python/pulumi_gcp/clouddeploy/target.py index 5fd5db7e2c..1b4da7bcdf 100644 --- a/sdk/python/pulumi_gcp/clouddeploy/target.py +++ b/sdk/python/pulumi_gcp/clouddeploy/target.py @@ -686,10 +686,10 @@ def __init__(__self__, "RENDER", "DEPLOY", ], - "executionTimeout": "3600s", + "execution_timeout": "3600s", }], multi_target={ - "targetIds": [ + "target_ids": [ "1", "2", ], @@ -721,7 +721,7 @@ def __init__(__self__, "RENDER", "DEPLOY", ], - "executionTimeout": "3600s", + "execution_timeout": "3600s", }], project="my-project-name", require_approval=False, @@ -843,10 +843,10 @@ def __init__(__self__, "RENDER", "DEPLOY", ], - "executionTimeout": "3600s", + "execution_timeout": "3600s", }], multi_target={ - "targetIds": [ + "target_ids": [ "1", "2", ], @@ -878,7 +878,7 @@ def __init__(__self__, "RENDER", "DEPLOY", ], - "executionTimeout": "3600s", + "execution_timeout": "3600s", }], project="my-project-name", require_approval=False, diff --git a/sdk/python/pulumi_gcp/clouddomains/registration.py b/sdk/python/pulumi_gcp/clouddomains/registration.py index 815fb9c205..321ec6855c 100644 --- a/sdk/python/pulumi_gcp/clouddomains/registration.py +++ b/sdk/python/pulumi_gcp/clouddomains/registration.py @@ -540,12 +540,12 @@ def __init__(__self__, "labelkey": "labelvalue", }, yearly_price={ - "currencyCode": "USD", + "currency_code": "USD", "units": "12", }, dns_settings={ - "customDns": { - "nameServers": [ + "custom_dns": { + "name_servers": [ "ns-cloud-a1.googledomains.com.", "ns-cloud-a2.googledomains.com.", "ns-cloud-a3.googledomains.com.", @@ -555,39 +555,39 @@ def __init__(__self__, }, contact_settings={ "privacy": "REDACTED_CONTACT_DATA", - "registrantContact": { - "phoneNumber": "+12345000000", + "registrant_contact": { + "phone_number": "+12345000000", "email": "user@example.com", - "postalAddress": { - "regionCode": "US", - "postalCode": "95050", - "administrativeArea": "CA", + "postal_address": { + "region_code": "US", + "postal_code": "95050", + "administrative_area": "CA", "locality": "Example City", - "addressLines": ["1234 Example street"], + "address_lines": ["1234 Example street"], "recipients": ["example recipient"], }, }, - "adminContact": { - "phoneNumber": "+12345000000", + "admin_contact": { + "phone_number": "+12345000000", "email": "user@example.com", - "postalAddress": { - "regionCode": "US", - "postalCode": "95050", - "administrativeArea": "CA", + "postal_address": { + "region_code": "US", + "postal_code": "95050", + "administrative_area": "CA", "locality": "Example City", - "addressLines": ["1234 Example street"], + "address_lines": ["1234 Example street"], "recipients": ["example recipient"], }, }, - "technicalContact": { - "phoneNumber": "+12345000000", + "technical_contact": { + "phone_number": "+12345000000", "email": "user@example.com", - "postalAddress": { - "regionCode": "US", - "postalCode": "95050", - "administrativeArea": "CA", + "postal_address": { + "region_code": "US", + "postal_code": "95050", + "administrative_area": "CA", "locality": "Example City", - "addressLines": ["1234 Example street"], + "address_lines": ["1234 Example street"], "recipients": ["example recipient"], }, }, @@ -657,12 +657,12 @@ def __init__(__self__, "labelkey": "labelvalue", }, yearly_price={ - "currencyCode": "USD", + "currency_code": "USD", "units": "12", }, dns_settings={ - "customDns": { - "nameServers": [ + "custom_dns": { + "name_servers": [ "ns-cloud-a1.googledomains.com.", "ns-cloud-a2.googledomains.com.", "ns-cloud-a3.googledomains.com.", @@ -672,39 +672,39 @@ def __init__(__self__, }, contact_settings={ "privacy": "REDACTED_CONTACT_DATA", - "registrantContact": { - "phoneNumber": "+12345000000", + "registrant_contact": { + "phone_number": "+12345000000", "email": "user@example.com", - "postalAddress": { - "regionCode": "US", - "postalCode": "95050", - "administrativeArea": "CA", + "postal_address": { + "region_code": "US", + "postal_code": "95050", + "administrative_area": "CA", "locality": "Example City", - "addressLines": ["1234 Example street"], + "address_lines": ["1234 Example street"], "recipients": ["example recipient"], }, }, - "adminContact": { - "phoneNumber": "+12345000000", + "admin_contact": { + "phone_number": "+12345000000", "email": "user@example.com", - "postalAddress": { - "regionCode": "US", - "postalCode": "95050", - "administrativeArea": "CA", + "postal_address": { + "region_code": "US", + "postal_code": "95050", + "administrative_area": "CA", "locality": "Example City", - "addressLines": ["1234 Example street"], + "address_lines": ["1234 Example street"], "recipients": ["example recipient"], }, }, - "technicalContact": { - "phoneNumber": "+12345000000", + "technical_contact": { + "phone_number": "+12345000000", "email": "user@example.com", - "postalAddress": { - "regionCode": "US", - "postalCode": "95050", - "administrativeArea": "CA", + "postal_address": { + "region_code": "US", + "postal_code": "95050", + "administrative_area": "CA", "locality": "Example City", - "addressLines": ["1234 Example street"], + "address_lines": ["1234 Example street"], "recipients": ["example recipient"], }, }, diff --git a/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py b/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py index 038025cd0d..cda29d4a88 100644 --- a/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py +++ b/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py @@ -520,18 +520,18 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs16", - "entryPoint": "helloHttp", + "entry_point": "helloHttp", "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, }, service_config={ - "maxInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, + "max_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, }) ``` ### Cloudfunctions2 Full @@ -559,36 +559,36 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs16", - "entryPoint": "helloPubSub", - "environmentVariables": { - "BUILD_CONFIG_TEST": "build_test", + "entry_point": "helloPubSub", + "environment_variables": { + "buil_d__confi_g__test": "build_test", }, "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, }, service_config={ - "maxInstanceCount": 3, - "minInstanceCount": 1, - "availableMemory": "4Gi", - "timeoutSeconds": 60, - "maxInstanceRequestConcurrency": 80, - "availableCpu": "4", - "environmentVariables": { - "SERVICE_CONFIG_TEST": "config_test", + "max_instance_count": 3, + "min_instance_count": 1, + "available_memory": "4Gi", + "timeout_seconds": 60, + "max_instance_request_concurrency": 80, + "available_cpu": "4", + "environment_variables": { + "servic_e__confi_g__test": "config_test", }, - "ingressSettings": "ALLOW_INTERNAL_ONLY", - "allTrafficOnLatestRevision": True, - "serviceAccountEmail": account.email, + "ingress_settings": "ALLOW_INTERNAL_ONLY", + "all_traffic_on_latest_revision": True, + "service_account_email": account.email, }, event_trigger={ - "triggerRegion": "us-central1", - "eventType": "google.cloud.pubsub.topic.v1.messagePublished", - "pubsubTopic": topic.id, - "retryPolicy": "RETRY_POLICY_RETRY", + "trigger_region": "us-central1", + "event_type": "google.cloud.pubsub.topic.v1.messagePublished", + "pubsub_topic": topic.id, + "retry_policy": "RETRY_POLICY_RETRY", }) ``` ### Cloudfunctions2 Scheduler Auth @@ -615,19 +615,19 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs16", - "entryPoint": "helloHttp", + "entry_point": "helloHttp", "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, }, service_config={ - "minInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, - "serviceAccountEmail": account.email, + "min_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, + "service_account_email": account.email, }) invoker = gcp.cloudfunctionsv2.FunctionIamMember("invoker", project=function.project, @@ -649,10 +649,10 @@ def __init__(__self__, region=function.location, http_target={ "uri": function.service_config.uri, - "httpMethod": "POST", - "oidcToken": { + "http_method": "POST", + "oidc_token": { "audience": function.service_config.apply(lambda service_config: f"{service_config.uri}/"), - "serviceAccountEmail": account.email, + "service_account_email": account.email, }, }) ``` @@ -706,34 +706,34 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs12", - "entryPoint": "entryPoint", - "environmentVariables": { - "BUILD_CONFIG_TEST": "build_test", + "entry_point": "entryPoint", + "environment_variables": { + "buil_d__confi_g__test": "build_test", }, "source": { - "storageSource": { + "storage_source": { "bucket": source_bucket.name, "object": object.name, }, }, }, service_config={ - "maxInstanceCount": 3, - "minInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, - "environmentVariables": { - "SERVICE_CONFIG_TEST": "config_test", + "max_instance_count": 3, + "min_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, + "environment_variables": { + "servic_e__confi_g__test": "config_test", }, - "ingressSettings": "ALLOW_INTERNAL_ONLY", - "allTrafficOnLatestRevision": True, - "serviceAccountEmail": account.email, + "ingress_settings": "ALLOW_INTERNAL_ONLY", + "all_traffic_on_latest_revision": True, + "service_account_email": account.email, }, event_trigger={ - "eventType": "google.cloud.storage.object.v1.finalized", - "retryPolicy": "RETRY_POLICY_RETRY", - "serviceAccountEmail": account.email, - "eventFilters": [{ + "event_type": "google.cloud.storage.object.v1.finalized", + "retry_policy": "RETRY_POLICY_RETRY", + "service_account_email": account.email, + "event_filters": [{ "attribute": "bucket", "value": trigger_bucket.name, }], @@ -792,35 +792,35 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs12", - "entryPoint": "entryPoint", - "environmentVariables": { - "BUILD_CONFIG_TEST": "build_test", + "entry_point": "entryPoint", + "environment_variables": { + "buil_d__confi_g__test": "build_test", }, "source": { - "storageSource": { + "storage_source": { "bucket": source_bucket.name, "object": object.name, }, }, }, service_config={ - "maxInstanceCount": 3, - "minInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, - "environmentVariables": { - "SERVICE_CONFIG_TEST": "config_test", + "max_instance_count": 3, + "min_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, + "environment_variables": { + "servic_e__confi_g__test": "config_test", }, - "ingressSettings": "ALLOW_INTERNAL_ONLY", - "allTrafficOnLatestRevision": True, - "serviceAccountEmail": account.email, + "ingress_settings": "ALLOW_INTERNAL_ONLY", + "all_traffic_on_latest_revision": True, + "service_account_email": account.email, }, event_trigger={ - "triggerRegion": "us-central1", - "eventType": "google.cloud.audit.log.v1.written", - "retryPolicy": "RETRY_POLICY_RETRY", - "serviceAccountEmail": account.email, - "eventFilters": [ + "trigger_region": "us-central1", + "event_type": "google.cloud.audit.log.v1.written", + "retry_policy": "RETRY_POLICY_RETRY", + "service_account_email": account.email, + "event_filters": [ { "attribute": "serviceName", "value": "storage.googleapis.com", @@ -885,19 +885,19 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs16", - "entryPoint": "helloHttp", + "entry_point": "helloHttp", "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, - "serviceAccount": account.id, + "service_account": account.id, }, service_config={ - "maxInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, + "max_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, }, opts = pulumi.ResourceOptions(depends_on=[wait60s])) ``` @@ -919,7 +919,7 @@ def __init__(__self__, secret = gcp.secretmanager.Secret("secret", secret_id="secret", replication={ - "userManaged": { + "user_managed": { "replicas": [{ "location": "us-central1", }], @@ -935,21 +935,21 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs16", - "entryPoint": "helloHttp", + "entry_point": "helloHttp", "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, }, service_config={ - "maxInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, - "secretEnvironmentVariables": [{ + "max_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, + "secret_environment_variables": [{ "key": "TEST", - "projectId": project, + "project_id": project, "secret": secret.secret_id, "version": "latest", }], @@ -974,7 +974,7 @@ def __init__(__self__, secret = gcp.secretmanager.Secret("secret", secret_id="secret", replication={ - "userManaged": { + "user_managed": { "replicas": [{ "location": "us-central1", }], @@ -990,21 +990,21 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs16", - "entryPoint": "helloHttp", + "entry_point": "helloHttp", "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, }, service_config={ - "maxInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, - "secretVolumes": [{ - "mountPath": "/etc/secrets", - "projectId": project, + "max_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, + "secret_volumes": [{ + "mount_path": "/etc/secrets", + "project_id": project, "secret": secret.secret_id, }], }, @@ -1029,9 +1029,9 @@ def __init__(__self__, name="workerpool", location="us-central1", worker_config={ - "diskSizeGb": 100, - "machineType": "e2-standard-8", - "noExternalIp": False, + "disk_size_gb": 100, + "machine_type": "e2-standard-8", + "no_external_ip": False, }) function = gcp.cloudfunctionsv2.Function("function", name="function-workerpool", @@ -1039,19 +1039,19 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs16", - "entryPoint": "helloHttp", + "entry_point": "helloHttp", "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, - "workerPool": pool.id, + "worker_pool": pool.id, }, service_config={ - "maxInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, + "max_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, }) ``` ### Cloudfunctions2 Cmek Docs @@ -1106,19 +1106,19 @@ def __init__(__self__, kms_key_name="cmek-key", build_config={ "runtime": "nodejs16", - "entryPoint": "helloHttp", - "dockerRepository": encoded_ar_repo.id, + "entry_point": "helloHttp", + "docker_repository": encoded_ar_repo.id, "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, }, service_config={ - "maxInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, + "max_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, }, opts = pulumi.ResourceOptions(depends_on=[gcf_cmek_keyuser])) ``` @@ -1147,37 +1147,37 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs16", - "entryPoint": "helloPubSub", - "environmentVariables": { - "BUILD_CONFIG_TEST": "build_test", + "entry_point": "helloPubSub", + "environment_variables": { + "buil_d__confi_g__test": "build_test", }, "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, - "automaticUpdatePolicy": {}, + "automatic_update_policy": {}, }, service_config={ - "maxInstanceCount": 3, - "minInstanceCount": 1, - "availableMemory": "4Gi", - "timeoutSeconds": 60, - "maxInstanceRequestConcurrency": 80, - "availableCpu": "4", - "environmentVariables": { - "SERVICE_CONFIG_TEST": "config_test", + "max_instance_count": 3, + "min_instance_count": 1, + "available_memory": "4Gi", + "timeout_seconds": 60, + "max_instance_request_concurrency": 80, + "available_cpu": "4", + "environment_variables": { + "servic_e__confi_g__test": "config_test", }, - "ingressSettings": "ALLOW_INTERNAL_ONLY", - "allTrafficOnLatestRevision": True, - "serviceAccountEmail": account.email, + "ingress_settings": "ALLOW_INTERNAL_ONLY", + "all_traffic_on_latest_revision": True, + "service_account_email": account.email, }, event_trigger={ - "triggerRegion": "us-central1", - "eventType": "google.cloud.pubsub.topic.v1.messagePublished", - "pubsubTopic": topic.id, - "retryPolicy": "RETRY_POLICY_RETRY", + "trigger_region": "us-central1", + "event_type": "google.cloud.pubsub.topic.v1.messagePublished", + "pubsub_topic": topic.id, + "retry_policy": "RETRY_POLICY_RETRY", }) ``` ### Cloudfunctions2 Abiu On Deploy @@ -1205,37 +1205,37 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs16", - "entryPoint": "helloPubSub", - "environmentVariables": { - "BUILD_CONFIG_TEST": "build_test", + "entry_point": "helloPubSub", + "environment_variables": { + "buil_d__confi_g__test": "build_test", }, "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, - "onDeployUpdatePolicy": {}, + "on_deploy_update_policy": {}, }, service_config={ - "maxInstanceCount": 3, - "minInstanceCount": 1, - "availableMemory": "4Gi", - "timeoutSeconds": 60, - "maxInstanceRequestConcurrency": 80, - "availableCpu": "4", - "environmentVariables": { - "SERVICE_CONFIG_TEST": "config_test", + "max_instance_count": 3, + "min_instance_count": 1, + "available_memory": "4Gi", + "timeout_seconds": 60, + "max_instance_request_concurrency": 80, + "available_cpu": "4", + "environment_variables": { + "servic_e__confi_g__test": "config_test", }, - "ingressSettings": "ALLOW_INTERNAL_ONLY", - "allTrafficOnLatestRevision": True, - "serviceAccountEmail": account.email, + "ingress_settings": "ALLOW_INTERNAL_ONLY", + "all_traffic_on_latest_revision": True, + "service_account_email": account.email, }, event_trigger={ - "triggerRegion": "us-central1", - "eventType": "google.cloud.pubsub.topic.v1.messagePublished", - "pubsubTopic": topic.id, - "retryPolicy": "RETRY_POLICY_RETRY", + "trigger_region": "us-central1", + "event_type": "google.cloud.pubsub.topic.v1.messagePublished", + "pubsub_topic": topic.id, + "retry_policy": "RETRY_POLICY_RETRY", }) ``` @@ -1325,18 +1325,18 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs16", - "entryPoint": "helloHttp", + "entry_point": "helloHttp", "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, }, service_config={ - "maxInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, + "max_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, }) ``` ### Cloudfunctions2 Full @@ -1364,36 +1364,36 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs16", - "entryPoint": "helloPubSub", - "environmentVariables": { - "BUILD_CONFIG_TEST": "build_test", + "entry_point": "helloPubSub", + "environment_variables": { + "buil_d__confi_g__test": "build_test", }, "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, }, service_config={ - "maxInstanceCount": 3, - "minInstanceCount": 1, - "availableMemory": "4Gi", - "timeoutSeconds": 60, - "maxInstanceRequestConcurrency": 80, - "availableCpu": "4", - "environmentVariables": { - "SERVICE_CONFIG_TEST": "config_test", + "max_instance_count": 3, + "min_instance_count": 1, + "available_memory": "4Gi", + "timeout_seconds": 60, + "max_instance_request_concurrency": 80, + "available_cpu": "4", + "environment_variables": { + "servic_e__confi_g__test": "config_test", }, - "ingressSettings": "ALLOW_INTERNAL_ONLY", - "allTrafficOnLatestRevision": True, - "serviceAccountEmail": account.email, + "ingress_settings": "ALLOW_INTERNAL_ONLY", + "all_traffic_on_latest_revision": True, + "service_account_email": account.email, }, event_trigger={ - "triggerRegion": "us-central1", - "eventType": "google.cloud.pubsub.topic.v1.messagePublished", - "pubsubTopic": topic.id, - "retryPolicy": "RETRY_POLICY_RETRY", + "trigger_region": "us-central1", + "event_type": "google.cloud.pubsub.topic.v1.messagePublished", + "pubsub_topic": topic.id, + "retry_policy": "RETRY_POLICY_RETRY", }) ``` ### Cloudfunctions2 Scheduler Auth @@ -1420,19 +1420,19 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs16", - "entryPoint": "helloHttp", + "entry_point": "helloHttp", "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, }, service_config={ - "minInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, - "serviceAccountEmail": account.email, + "min_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, + "service_account_email": account.email, }) invoker = gcp.cloudfunctionsv2.FunctionIamMember("invoker", project=function.project, @@ -1454,10 +1454,10 @@ def __init__(__self__, region=function.location, http_target={ "uri": function.service_config.uri, - "httpMethod": "POST", - "oidcToken": { + "http_method": "POST", + "oidc_token": { "audience": function.service_config.apply(lambda service_config: f"{service_config.uri}/"), - "serviceAccountEmail": account.email, + "service_account_email": account.email, }, }) ``` @@ -1511,34 +1511,34 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs12", - "entryPoint": "entryPoint", - "environmentVariables": { - "BUILD_CONFIG_TEST": "build_test", + "entry_point": "entryPoint", + "environment_variables": { + "buil_d__confi_g__test": "build_test", }, "source": { - "storageSource": { + "storage_source": { "bucket": source_bucket.name, "object": object.name, }, }, }, service_config={ - "maxInstanceCount": 3, - "minInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, - "environmentVariables": { - "SERVICE_CONFIG_TEST": "config_test", + "max_instance_count": 3, + "min_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, + "environment_variables": { + "servic_e__confi_g__test": "config_test", }, - "ingressSettings": "ALLOW_INTERNAL_ONLY", - "allTrafficOnLatestRevision": True, - "serviceAccountEmail": account.email, + "ingress_settings": "ALLOW_INTERNAL_ONLY", + "all_traffic_on_latest_revision": True, + "service_account_email": account.email, }, event_trigger={ - "eventType": "google.cloud.storage.object.v1.finalized", - "retryPolicy": "RETRY_POLICY_RETRY", - "serviceAccountEmail": account.email, - "eventFilters": [{ + "event_type": "google.cloud.storage.object.v1.finalized", + "retry_policy": "RETRY_POLICY_RETRY", + "service_account_email": account.email, + "event_filters": [{ "attribute": "bucket", "value": trigger_bucket.name, }], @@ -1597,35 +1597,35 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs12", - "entryPoint": "entryPoint", - "environmentVariables": { - "BUILD_CONFIG_TEST": "build_test", + "entry_point": "entryPoint", + "environment_variables": { + "buil_d__confi_g__test": "build_test", }, "source": { - "storageSource": { + "storage_source": { "bucket": source_bucket.name, "object": object.name, }, }, }, service_config={ - "maxInstanceCount": 3, - "minInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, - "environmentVariables": { - "SERVICE_CONFIG_TEST": "config_test", + "max_instance_count": 3, + "min_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, + "environment_variables": { + "servic_e__confi_g__test": "config_test", }, - "ingressSettings": "ALLOW_INTERNAL_ONLY", - "allTrafficOnLatestRevision": True, - "serviceAccountEmail": account.email, + "ingress_settings": "ALLOW_INTERNAL_ONLY", + "all_traffic_on_latest_revision": True, + "service_account_email": account.email, }, event_trigger={ - "triggerRegion": "us-central1", - "eventType": "google.cloud.audit.log.v1.written", - "retryPolicy": "RETRY_POLICY_RETRY", - "serviceAccountEmail": account.email, - "eventFilters": [ + "trigger_region": "us-central1", + "event_type": "google.cloud.audit.log.v1.written", + "retry_policy": "RETRY_POLICY_RETRY", + "service_account_email": account.email, + "event_filters": [ { "attribute": "serviceName", "value": "storage.googleapis.com", @@ -1690,19 +1690,19 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs16", - "entryPoint": "helloHttp", + "entry_point": "helloHttp", "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, - "serviceAccount": account.id, + "service_account": account.id, }, service_config={ - "maxInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, + "max_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, }, opts = pulumi.ResourceOptions(depends_on=[wait60s])) ``` @@ -1724,7 +1724,7 @@ def __init__(__self__, secret = gcp.secretmanager.Secret("secret", secret_id="secret", replication={ - "userManaged": { + "user_managed": { "replicas": [{ "location": "us-central1", }], @@ -1740,21 +1740,21 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs16", - "entryPoint": "helloHttp", + "entry_point": "helloHttp", "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, }, service_config={ - "maxInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, - "secretEnvironmentVariables": [{ + "max_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, + "secret_environment_variables": [{ "key": "TEST", - "projectId": project, + "project_id": project, "secret": secret.secret_id, "version": "latest", }], @@ -1779,7 +1779,7 @@ def __init__(__self__, secret = gcp.secretmanager.Secret("secret", secret_id="secret", replication={ - "userManaged": { + "user_managed": { "replicas": [{ "location": "us-central1", }], @@ -1795,21 +1795,21 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs16", - "entryPoint": "helloHttp", + "entry_point": "helloHttp", "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, }, service_config={ - "maxInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, - "secretVolumes": [{ - "mountPath": "/etc/secrets", - "projectId": project, + "max_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, + "secret_volumes": [{ + "mount_path": "/etc/secrets", + "project_id": project, "secret": secret.secret_id, }], }, @@ -1834,9 +1834,9 @@ def __init__(__self__, name="workerpool", location="us-central1", worker_config={ - "diskSizeGb": 100, - "machineType": "e2-standard-8", - "noExternalIp": False, + "disk_size_gb": 100, + "machine_type": "e2-standard-8", + "no_external_ip": False, }) function = gcp.cloudfunctionsv2.Function("function", name="function-workerpool", @@ -1844,19 +1844,19 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs16", - "entryPoint": "helloHttp", + "entry_point": "helloHttp", "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, - "workerPool": pool.id, + "worker_pool": pool.id, }, service_config={ - "maxInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, + "max_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, }) ``` ### Cloudfunctions2 Cmek Docs @@ -1911,19 +1911,19 @@ def __init__(__self__, kms_key_name="cmek-key", build_config={ "runtime": "nodejs16", - "entryPoint": "helloHttp", - "dockerRepository": encoded_ar_repo.id, + "entry_point": "helloHttp", + "docker_repository": encoded_ar_repo.id, "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, }, service_config={ - "maxInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, + "max_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, }, opts = pulumi.ResourceOptions(depends_on=[gcf_cmek_keyuser])) ``` @@ -1952,37 +1952,37 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs16", - "entryPoint": "helloPubSub", - "environmentVariables": { - "BUILD_CONFIG_TEST": "build_test", + "entry_point": "helloPubSub", + "environment_variables": { + "buil_d__confi_g__test": "build_test", }, "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, - "automaticUpdatePolicy": {}, + "automatic_update_policy": {}, }, service_config={ - "maxInstanceCount": 3, - "minInstanceCount": 1, - "availableMemory": "4Gi", - "timeoutSeconds": 60, - "maxInstanceRequestConcurrency": 80, - "availableCpu": "4", - "environmentVariables": { - "SERVICE_CONFIG_TEST": "config_test", + "max_instance_count": 3, + "min_instance_count": 1, + "available_memory": "4Gi", + "timeout_seconds": 60, + "max_instance_request_concurrency": 80, + "available_cpu": "4", + "environment_variables": { + "servic_e__confi_g__test": "config_test", }, - "ingressSettings": "ALLOW_INTERNAL_ONLY", - "allTrafficOnLatestRevision": True, - "serviceAccountEmail": account.email, + "ingress_settings": "ALLOW_INTERNAL_ONLY", + "all_traffic_on_latest_revision": True, + "service_account_email": account.email, }, event_trigger={ - "triggerRegion": "us-central1", - "eventType": "google.cloud.pubsub.topic.v1.messagePublished", - "pubsubTopic": topic.id, - "retryPolicy": "RETRY_POLICY_RETRY", + "trigger_region": "us-central1", + "event_type": "google.cloud.pubsub.topic.v1.messagePublished", + "pubsub_topic": topic.id, + "retry_policy": "RETRY_POLICY_RETRY", }) ``` ### Cloudfunctions2 Abiu On Deploy @@ -2010,37 +2010,37 @@ def __init__(__self__, description="a new function", build_config={ "runtime": "nodejs16", - "entryPoint": "helloPubSub", - "environmentVariables": { - "BUILD_CONFIG_TEST": "build_test", + "entry_point": "helloPubSub", + "environment_variables": { + "buil_d__confi_g__test": "build_test", }, "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, - "onDeployUpdatePolicy": {}, + "on_deploy_update_policy": {}, }, service_config={ - "maxInstanceCount": 3, - "minInstanceCount": 1, - "availableMemory": "4Gi", - "timeoutSeconds": 60, - "maxInstanceRequestConcurrency": 80, - "availableCpu": "4", - "environmentVariables": { - "SERVICE_CONFIG_TEST": "config_test", + "max_instance_count": 3, + "min_instance_count": 1, + "available_memory": "4Gi", + "timeout_seconds": 60, + "max_instance_request_concurrency": 80, + "available_cpu": "4", + "environment_variables": { + "servic_e__confi_g__test": "config_test", }, - "ingressSettings": "ALLOW_INTERNAL_ONLY", - "allTrafficOnLatestRevision": True, - "serviceAccountEmail": account.email, + "ingress_settings": "ALLOW_INTERNAL_ONLY", + "all_traffic_on_latest_revision": True, + "service_account_email": account.email, }, event_trigger={ - "triggerRegion": "us-central1", - "eventType": "google.cloud.pubsub.topic.v1.messagePublished", - "pubsubTopic": topic.id, - "retryPolicy": "RETRY_POLICY_RETRY", + "trigger_region": "us-central1", + "event_type": "google.cloud.pubsub.topic.v1.messagePublished", + "pubsub_topic": topic.id, + "retry_policy": "RETRY_POLICY_RETRY", }) ``` diff --git a/sdk/python/pulumi_gcp/cloudquota/s_quota_preference.py b/sdk/python/pulumi_gcp/cloudquota/s_quota_preference.py index ac9062df5b..7ee12afa78 100644 --- a/sdk/python/pulumi_gcp/cloudquota/s_quota_preference.py +++ b/sdk/python/pulumi_gcp/cloudquota/s_quota_preference.py @@ -475,7 +475,7 @@ def __init__(__self__, quota_id="CPUS-per-project-region", contact_email="testuser@gmail.com", quota_config={ - "preferredValue": "200", + "preferred_value": "200", }) ``` @@ -547,7 +547,7 @@ def __init__(__self__, quota_id="CPUS-per-project-region", contact_email="testuser@gmail.com", quota_config={ - "preferredValue": "200", + "preferred_value": "200", }) ``` diff --git a/sdk/python/pulumi_gcp/cloudrun/domain_mapping.py b/sdk/python/pulumi_gcp/cloudrun/domain_mapping.py index b83d9e790e..ca723c05b5 100644 --- a/sdk/python/pulumi_gcp/cloudrun/domain_mapping.py +++ b/sdk/python/pulumi_gcp/cloudrun/domain_mapping.py @@ -254,7 +254,7 @@ def __init__(__self__, "namespace": "my-project-name", }, spec={ - "routeName": default.name, + "route_name": default.name, }) ``` @@ -333,7 +333,7 @@ def __init__(__self__, "namespace": "my-project-name", }, spec={ - "routeName": default.name, + "route_name": default.name, }) ``` diff --git a/sdk/python/pulumi_gcp/cloudrun/service.py b/sdk/python/pulumi_gcp/cloudrun/service.py index b7f931d99f..1666307d11 100644 --- a/sdk/python/pulumi_gcp/cloudrun/service.py +++ b/sdk/python/pulumi_gcp/cloudrun/service.py @@ -364,7 +364,7 @@ def __init__(__self__, }, traffics=[{ "percent": 100, - "latestRevision": True, + "latest_revision": True, }]) sa = gcp.serviceaccount.Account("sa", account_id="cloud-run-pubsub-invoker", @@ -382,12 +382,12 @@ def __init__(__self__, name="pubsub_subscription", topic=topic.name, push_config={ - "pushEndpoint": default.statuses[0].url, - "oidcToken": { - "serviceAccountEmail": sa.email, + "push_endpoint": default.statuses[0].url, + "oidc_token": { + "service_account_email": sa.email, }, "attributes": { - "x-goog-version": "v1", + "x_goog_version": "v1", }, }) ``` @@ -410,7 +410,7 @@ def __init__(__self__, }, traffics=[{ "percent": 100, - "latestRevision": True, + "latest_revision": True, }]) ``` ### Cloud Run Service Sql @@ -438,9 +438,9 @@ def __init__(__self__, }, "metadata": { "annotations": { - "autoscaling.knative.dev/maxScale": "1000", - "run.googleapis.com/cloudsql-instances": instance.connection_name, - "run.googleapis.com/client-name": "demo", + "autoscaling_knative_dev_max_scale": "1000", + "run_googleapis_com_cloudsql_instances": instance.connection_name, + "run_googleapis_com_client_name": "demo", }, }, }, @@ -485,17 +485,17 @@ def __init__(__self__, "spec": { "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/hello", - "startupProbe": { - "initialDelaySeconds": 0, - "timeoutSeconds": 1, - "periodSeconds": 3, - "failureThreshold": 1, - "tcpSocket": { + "startup_probe": { + "initial_delay_seconds": 0, + "timeout_seconds": 1, + "period_seconds": 3, + "failure_threshold": 1, + "tcp_socket": { "port": 8080, }, }, - "livenessProbe": { - "httpGet": { + "liveness_probe": { + "http_get": { "path": "/", }, }, @@ -504,7 +504,7 @@ def __init__(__self__, }, traffics=[{ "percent": 100, - "latestRevision": True, + "latest_revision": True, }]) ``` ### Cloud Run Service Multicontainer @@ -519,14 +519,14 @@ def __init__(__self__, location="us-central1", metadata={ "annotations": { - "run.googleapis.com/launch-stage": "BETA", + "run_googleapis_com_launch_stage": "BETA", }, }, template={ "metadata": { "annotations": { - "run.googleapis.com/container-dependencies": json.dumps({ - "hello-1": ["hello-2"], + "run_googleapis_com_container_dependencies": json.dumps({ + "hello_1": ["hello-2"], }), }, }, @@ -535,12 +535,12 @@ def __init__(__self__, { "name": "hello-1", "ports": [{ - "containerPort": 8080, + "container_port": 8080, }], "image": "us-docker.pkg.dev/cloudrun/container/hello", - "volumeMounts": [{ + "volume_mounts": [{ "name": "shared-volume", - "mountPath": "/mnt/shared", + "mount_path": "/mnt/shared", }], }, { @@ -550,22 +550,22 @@ def __init__(__self__, "name": "PORT", "value": "8081", }], - "startupProbe": { - "httpGet": { + "startup_probe": { + "http_get": { "port": 8081, }, }, - "volumeMounts": [{ + "volume_mounts": [{ "name": "shared-volume", - "mountPath": "/mnt/shared", + "mount_path": "/mnt/shared", }], }, ], "volumes": [{ "name": "shared-volume", - "emptyDir": { + "empty_dir": { "medium": "Memory", - "sizeLimit": "128Mi", + "size_limit": "128Mi", }, }], }, @@ -656,7 +656,7 @@ def __init__(__self__, }, traffics=[{ "percent": 100, - "latestRevision": True, + "latest_revision": True, }]) sa = gcp.serviceaccount.Account("sa", account_id="cloud-run-pubsub-invoker", @@ -674,12 +674,12 @@ def __init__(__self__, name="pubsub_subscription", topic=topic.name, push_config={ - "pushEndpoint": default.statuses[0].url, - "oidcToken": { - "serviceAccountEmail": sa.email, + "push_endpoint": default.statuses[0].url, + "oidc_token": { + "service_account_email": sa.email, }, "attributes": { - "x-goog-version": "v1", + "x_goog_version": "v1", }, }) ``` @@ -702,7 +702,7 @@ def __init__(__self__, }, traffics=[{ "percent": 100, - "latestRevision": True, + "latest_revision": True, }]) ``` ### Cloud Run Service Sql @@ -730,9 +730,9 @@ def __init__(__self__, }, "metadata": { "annotations": { - "autoscaling.knative.dev/maxScale": "1000", - "run.googleapis.com/cloudsql-instances": instance.connection_name, - "run.googleapis.com/client-name": "demo", + "autoscaling_knative_dev_max_scale": "1000", + "run_googleapis_com_cloudsql_instances": instance.connection_name, + "run_googleapis_com_client_name": "demo", }, }, }, @@ -777,17 +777,17 @@ def __init__(__self__, "spec": { "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/hello", - "startupProbe": { - "initialDelaySeconds": 0, - "timeoutSeconds": 1, - "periodSeconds": 3, - "failureThreshold": 1, - "tcpSocket": { + "startup_probe": { + "initial_delay_seconds": 0, + "timeout_seconds": 1, + "period_seconds": 3, + "failure_threshold": 1, + "tcp_socket": { "port": 8080, }, }, - "livenessProbe": { - "httpGet": { + "liveness_probe": { + "http_get": { "path": "/", }, }, @@ -796,7 +796,7 @@ def __init__(__self__, }, traffics=[{ "percent": 100, - "latestRevision": True, + "latest_revision": True, }]) ``` ### Cloud Run Service Multicontainer @@ -811,14 +811,14 @@ def __init__(__self__, location="us-central1", metadata={ "annotations": { - "run.googleapis.com/launch-stage": "BETA", + "run_googleapis_com_launch_stage": "BETA", }, }, template={ "metadata": { "annotations": { - "run.googleapis.com/container-dependencies": json.dumps({ - "hello-1": ["hello-2"], + "run_googleapis_com_container_dependencies": json.dumps({ + "hello_1": ["hello-2"], }), }, }, @@ -827,12 +827,12 @@ def __init__(__self__, { "name": "hello-1", "ports": [{ - "containerPort": 8080, + "container_port": 8080, }], "image": "us-docker.pkg.dev/cloudrun/container/hello", - "volumeMounts": [{ + "volume_mounts": [{ "name": "shared-volume", - "mountPath": "/mnt/shared", + "mount_path": "/mnt/shared", }], }, { @@ -842,22 +842,22 @@ def __init__(__self__, "name": "PORT", "value": "8081", }], - "startupProbe": { - "httpGet": { + "startup_probe": { + "http_get": { "port": 8081, }, }, - "volumeMounts": [{ + "volume_mounts": [{ "name": "shared-volume", - "mountPath": "/mnt/shared", + "mount_path": "/mnt/shared", }], }, ], "volumes": [{ "name": "shared-volume", - "emptyDir": { + "empty_dir": { "medium": "Memory", - "sizeLimit": "128Mi", + "size_limit": "128Mi", }, }], }, diff --git a/sdk/python/pulumi_gcp/cloudrunv2/job.py b/sdk/python/pulumi_gcp/cloudrunv2/job.py index 387112722e..34252064db 100644 --- a/sdk/python/pulumi_gcp/cloudrunv2/job.py +++ b/sdk/python/pulumi_gcp/cloudrunv2/job.py @@ -889,7 +889,7 @@ def __init__(__self__, "template": { "volumes": [{ "name": "cloudsql", - "cloudSqlInstance": { + "cloud_sql_instance": { "instances": [instance.connection_name], }, }], @@ -902,17 +902,17 @@ def __init__(__self__, }, { "name": "latestdclsecret", - "valueSource": { - "secretKeyRef": { + "value_source": { + "secret_key_ref": { "secret": secret.secret_id, "version": "1", }, }, }, ], - "volumeMounts": [{ + "volume_mounts": [{ "name": "cloudsql", - "mountPath": "/cloudsql", + "mount_path": "/cloudsql", }], }], }, @@ -958,7 +958,7 @@ def __init__(__self__, "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/job", }], - "vpcAccess": { + "vpc_access": { "connector": connector.id, "egress": "ALL_TRAFFIC", }, @@ -980,8 +980,8 @@ def __init__(__self__, "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/job", }], - "vpcAccess": { - "networkInterfaces": [{ + "vpc_access": { + "network_interfaces": [{ "network": "default", "subnetwork": "default", "tags": [ @@ -1023,7 +1023,7 @@ def __init__(__self__, "name": "a-volume", "secret": { "secret": secret.secret_id, - "defaultMode": 292, + "default_mode": 292, "items": [{ "version": "1", "path": "my-secret", @@ -1033,9 +1033,9 @@ def __init__(__self__, }], "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/job", - "volumeMounts": [{ + "volume_mounts": [{ "name": "a-volume", - "mountPath": "/secrets", + "mount_path": "/secrets", }], }], }, @@ -1059,16 +1059,16 @@ def __init__(__self__, "template": { "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/job", - "volumeMounts": [{ + "volume_mounts": [{ "name": "empty-dir-volume", - "mountPath": "/mnt", + "mount_path": "/mnt", }], }], "volumes": [{ "name": "empty-dir-volume", - "emptyDir": { + "empty_dir": { "medium": "MEMORY", - "sizeLimit": "128Mi", + "size_limit": "128Mi", }, }], }, @@ -1235,7 +1235,7 @@ def __init__(__self__, "template": { "volumes": [{ "name": "cloudsql", - "cloudSqlInstance": { + "cloud_sql_instance": { "instances": [instance.connection_name], }, }], @@ -1248,17 +1248,17 @@ def __init__(__self__, }, { "name": "latestdclsecret", - "valueSource": { - "secretKeyRef": { + "value_source": { + "secret_key_ref": { "secret": secret.secret_id, "version": "1", }, }, }, ], - "volumeMounts": [{ + "volume_mounts": [{ "name": "cloudsql", - "mountPath": "/cloudsql", + "mount_path": "/cloudsql", }], }], }, @@ -1304,7 +1304,7 @@ def __init__(__self__, "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/job", }], - "vpcAccess": { + "vpc_access": { "connector": connector.id, "egress": "ALL_TRAFFIC", }, @@ -1326,8 +1326,8 @@ def __init__(__self__, "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/job", }], - "vpcAccess": { - "networkInterfaces": [{ + "vpc_access": { + "network_interfaces": [{ "network": "default", "subnetwork": "default", "tags": [ @@ -1369,7 +1369,7 @@ def __init__(__self__, "name": "a-volume", "secret": { "secret": secret.secret_id, - "defaultMode": 292, + "default_mode": 292, "items": [{ "version": "1", "path": "my-secret", @@ -1379,9 +1379,9 @@ def __init__(__self__, }], "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/job", - "volumeMounts": [{ + "volume_mounts": [{ "name": "a-volume", - "mountPath": "/secrets", + "mount_path": "/secrets", }], }], }, @@ -1405,16 +1405,16 @@ def __init__(__self__, "template": { "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/job", - "volumeMounts": [{ + "volume_mounts": [{ "name": "empty-dir-volume", - "mountPath": "/mnt", + "mount_path": "/mnt", }], }], "volumes": [{ "name": "empty-dir-volume", - "emptyDir": { + "empty_dir": { "medium": "MEMORY", - "sizeLimit": "128Mi", + "size_limit": "128Mi", }, }], }, diff --git a/sdk/python/pulumi_gcp/cloudrunv2/service.py b/sdk/python/pulumi_gcp/cloudrunv2/service.py index 70e5c3c867..2033a8e379 100644 --- a/sdk/python/pulumi_gcp/cloudrunv2/service.py +++ b/sdk/python/pulumi_gcp/cloudrunv2/service.py @@ -1063,11 +1063,11 @@ def __init__(__self__, ingress="INGRESS_TRAFFIC_ALL", template={ "scaling": { - "maxInstanceCount": 2, + "max_instance_count": 2, }, "volumes": [{ "name": "cloudsql", - "cloudSqlInstance": { + "cloud_sql_instance": { "instances": [instance.connection_name], }, }], @@ -1080,17 +1080,17 @@ def __init__(__self__, }, { "name": "SECRET_ENV_VAR", - "valueSource": { - "secretKeyRef": { + "value_source": { + "secret_key_ref": { "secret": secret.secret_id, "version": "1", }, }, }, ], - "volumeMounts": [{ + "volume_mounts": [{ "name": "cloudsql", - "mountPath": "/cloudsql", + "mount_path": "/cloudsql", }], }], }, @@ -1136,7 +1136,7 @@ def __init__(__self__, "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/hello", }], - "vpcAccess": { + "vpc_access": { "connector": connector.id, "egress": "ALL_TRAFFIC", }, @@ -1156,8 +1156,8 @@ def __init__(__self__, "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/hello", }], - "vpcAccess": { - "networkInterfaces": [{ + "vpc_access": { + "network_interfaces": [{ "network": "default", "subnetwork": "default", "tags": [ @@ -1181,17 +1181,17 @@ def __init__(__self__, template={ "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/hello", - "startupProbe": { - "initialDelaySeconds": 0, - "timeoutSeconds": 1, - "periodSeconds": 3, - "failureThreshold": 1, - "tcpSocket": { + "startup_probe": { + "initial_delay_seconds": 0, + "timeout_seconds": 1, + "period_seconds": 3, + "failure_threshold": 1, + "tcp_socket": { "port": 8080, }, }, - "livenessProbe": { - "httpGet": { + "liveness_probe": { + "http_get": { "path": "/", }, }, @@ -1221,7 +1221,7 @@ def __init__(__self__, "name": "a-volume", "secret": { "secret": secret.secret_id, - "defaultMode": 292, + "default_mode": 292, "items": [{ "version": "1", "path": "my-secret", @@ -1230,9 +1230,9 @@ def __init__(__self__, }], "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/hello", - "volumeMounts": [{ + "volume_mounts": [{ "name": "a-volume", - "mountPath": "/secrets", + "mount_path": "/secrets", }], }], }, @@ -1260,13 +1260,13 @@ def __init__(__self__, { "name": "hello-1", "ports": { - "containerPort": 8080, + "container_port": 8080, }, "image": "us-docker.pkg.dev/cloudrun/container/hello", - "dependsOns": ["hello-2"], - "volumeMounts": [{ + "depends_ons": ["hello-2"], + "volume_mounts": [{ "name": "empty-dir-volume", - "mountPath": "/mnt", + "mount_path": "/mnt", }], }, { @@ -1276,8 +1276,8 @@ def __init__(__self__, "name": "PORT", "value": "8081", }], - "startupProbe": { - "httpGet": { + "startup_probe": { + "http_get": { "port": 8081, }, }, @@ -1285,9 +1285,9 @@ def __init__(__self__, ], "volumes": [{ "name": "empty-dir-volume", - "emptyDir": { + "empty_dir": { "medium": "MEMORY", - "sizeLimit": "256Mi", + "size_limit": "256Mi", }, }], }) @@ -1306,19 +1306,19 @@ def __init__(__self__, location="us-central1", launch_stage="BETA", template={ - "executionEnvironment": "EXECUTION_ENVIRONMENT_GEN2", + "execution_environment": "EXECUTION_ENVIRONMENT_GEN2", "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/hello", - "volumeMounts": [{ + "volume_mounts": [{ "name": "bucket", - "mountPath": "/var/www", + "mount_path": "/var/www", }], }], "volumes": [{ "name": "bucket", "gcs": { "bucket": default_bucket.name, - "readOnly": False, + "read_only": False, }, }], }) @@ -1334,7 +1334,7 @@ def __init__(__self__, location="us-central1-b", tier="BASIC_HDD", file_shares={ - "capacityGb": 1024, + "capacity_gb": 1024, "name": "share1", }, networks=[{ @@ -1347,16 +1347,16 @@ def __init__(__self__, ingress="INGRESS_TRAFFIC_ALL", launch_stage="BETA", template={ - "executionEnvironment": "EXECUTION_ENVIRONMENT_GEN2", + "execution_environment": "EXECUTION_ENVIRONMENT_GEN2", "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/hello:latest", - "volumeMounts": [{ + "volume_mounts": [{ "name": "nfs", - "mountPath": "/mnt/nfs/filestore", + "mount_path": "/mnt/nfs/filestore", }], }], - "vpcAccess": { - "networkInterfaces": [{ + "vpc_access": { + "network_interfaces": [{ "network": "default", "subnetwork": "default", }], @@ -1366,7 +1366,7 @@ def __init__(__self__, "nfs": { "server": default_instance.networks[0].ip_addresses[0], "path": "/share1", - "readOnly": False, + "read_only": False, }, }], }) @@ -1521,11 +1521,11 @@ def __init__(__self__, ingress="INGRESS_TRAFFIC_ALL", template={ "scaling": { - "maxInstanceCount": 2, + "max_instance_count": 2, }, "volumes": [{ "name": "cloudsql", - "cloudSqlInstance": { + "cloud_sql_instance": { "instances": [instance.connection_name], }, }], @@ -1538,17 +1538,17 @@ def __init__(__self__, }, { "name": "SECRET_ENV_VAR", - "valueSource": { - "secretKeyRef": { + "value_source": { + "secret_key_ref": { "secret": secret.secret_id, "version": "1", }, }, }, ], - "volumeMounts": [{ + "volume_mounts": [{ "name": "cloudsql", - "mountPath": "/cloudsql", + "mount_path": "/cloudsql", }], }], }, @@ -1594,7 +1594,7 @@ def __init__(__self__, "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/hello", }], - "vpcAccess": { + "vpc_access": { "connector": connector.id, "egress": "ALL_TRAFFIC", }, @@ -1614,8 +1614,8 @@ def __init__(__self__, "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/hello", }], - "vpcAccess": { - "networkInterfaces": [{ + "vpc_access": { + "network_interfaces": [{ "network": "default", "subnetwork": "default", "tags": [ @@ -1639,17 +1639,17 @@ def __init__(__self__, template={ "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/hello", - "startupProbe": { - "initialDelaySeconds": 0, - "timeoutSeconds": 1, - "periodSeconds": 3, - "failureThreshold": 1, - "tcpSocket": { + "startup_probe": { + "initial_delay_seconds": 0, + "timeout_seconds": 1, + "period_seconds": 3, + "failure_threshold": 1, + "tcp_socket": { "port": 8080, }, }, - "livenessProbe": { - "httpGet": { + "liveness_probe": { + "http_get": { "path": "/", }, }, @@ -1679,7 +1679,7 @@ def __init__(__self__, "name": "a-volume", "secret": { "secret": secret.secret_id, - "defaultMode": 292, + "default_mode": 292, "items": [{ "version": "1", "path": "my-secret", @@ -1688,9 +1688,9 @@ def __init__(__self__, }], "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/hello", - "volumeMounts": [{ + "volume_mounts": [{ "name": "a-volume", - "mountPath": "/secrets", + "mount_path": "/secrets", }], }], }, @@ -1718,13 +1718,13 @@ def __init__(__self__, { "name": "hello-1", "ports": { - "containerPort": 8080, + "container_port": 8080, }, "image": "us-docker.pkg.dev/cloudrun/container/hello", - "dependsOns": ["hello-2"], - "volumeMounts": [{ + "depends_ons": ["hello-2"], + "volume_mounts": [{ "name": "empty-dir-volume", - "mountPath": "/mnt", + "mount_path": "/mnt", }], }, { @@ -1734,8 +1734,8 @@ def __init__(__self__, "name": "PORT", "value": "8081", }], - "startupProbe": { - "httpGet": { + "startup_probe": { + "http_get": { "port": 8081, }, }, @@ -1743,9 +1743,9 @@ def __init__(__self__, ], "volumes": [{ "name": "empty-dir-volume", - "emptyDir": { + "empty_dir": { "medium": "MEMORY", - "sizeLimit": "256Mi", + "size_limit": "256Mi", }, }], }) @@ -1764,19 +1764,19 @@ def __init__(__self__, location="us-central1", launch_stage="BETA", template={ - "executionEnvironment": "EXECUTION_ENVIRONMENT_GEN2", + "execution_environment": "EXECUTION_ENVIRONMENT_GEN2", "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/hello", - "volumeMounts": [{ + "volume_mounts": [{ "name": "bucket", - "mountPath": "/var/www", + "mount_path": "/var/www", }], }], "volumes": [{ "name": "bucket", "gcs": { "bucket": default_bucket.name, - "readOnly": False, + "read_only": False, }, }], }) @@ -1792,7 +1792,7 @@ def __init__(__self__, location="us-central1-b", tier="BASIC_HDD", file_shares={ - "capacityGb": 1024, + "capacity_gb": 1024, "name": "share1", }, networks=[{ @@ -1805,16 +1805,16 @@ def __init__(__self__, ingress="INGRESS_TRAFFIC_ALL", launch_stage="BETA", template={ - "executionEnvironment": "EXECUTION_ENVIRONMENT_GEN2", + "execution_environment": "EXECUTION_ENVIRONMENT_GEN2", "containers": [{ "image": "us-docker.pkg.dev/cloudrun/container/hello:latest", - "volumeMounts": [{ + "volume_mounts": [{ "name": "nfs", - "mountPath": "/mnt/nfs/filestore", + "mount_path": "/mnt/nfs/filestore", }], }], - "vpcAccess": { - "networkInterfaces": [{ + "vpc_access": { + "network_interfaces": [{ "network": "default", "subnetwork": "default", }], @@ -1824,7 +1824,7 @@ def __init__(__self__, "nfs": { "server": default_instance.networks[0].ip_addresses[0], "path": "/share1", - "readOnly": False, + "read_only": False, }, }], }) diff --git a/sdk/python/pulumi_gcp/cloudscheduler/job.py b/sdk/python/pulumi_gcp/cloudscheduler/job.py index 2ff697ba41..00033a4638 100644 --- a/sdk/python/pulumi_gcp/cloudscheduler/job.py +++ b/sdk/python/pulumi_gcp/cloudscheduler/job.py @@ -577,7 +577,7 @@ def __init__(__self__, description="test job", schedule="*/2 * * * *", pubsub_target={ - "topicName": topic.id, + "topic_name": topic.id, "data": std.base64encode(input="test").result, }) ``` @@ -595,14 +595,14 @@ def __init__(__self__, time_zone="America/New_York", attempt_deadline="320s", retry_config={ - "retryCount": 1, + "retry_count": 1, }, http_target={ - "httpMethod": "POST", + "http_method": "POST", "uri": "https://example.com/", "body": std.base64encode(input="{\\"foo\\":\\"bar\\"}").result, "headers": { - "Content-Type": "application/json", + "content__type": "application/json", }, }) ``` @@ -621,14 +621,14 @@ def __init__(__self__, time_zone="America/New_York", attempt_deadline="320s", retry_config={ - "retryCount": 1, + "retry_count": 1, }, http_target={ - "httpMethod": "POST", + "http_method": "POST", "uri": "https://example.com/ping", "body": std.base64encode(input="{\\"foo\\":\\"bar\\"}").result, "headers": { - "Content-Type": "application/json", + "content__type": "application/json", }, }) ``` @@ -645,19 +645,19 @@ def __init__(__self__, time_zone="Europe/London", attempt_deadline="320s", retry_config={ - "minBackoffDuration": "1s", - "maxRetryDuration": "10s", - "maxDoublings": 2, - "retryCount": 3, + "min_backoff_duration": "1s", + "max_retry_duration": "10s", + "max_doublings": 2, + "retry_count": 3, }, app_engine_http_target={ - "httpMethod": "POST", - "appEngineRouting": { + "http_method": "POST", + "app_engine_routing": { "service": "web", "version": "prod", "instance": "my-instance-001", }, - "relativeUri": "/ping", + "relative_uri": "/ping", }) ``` ### Scheduler Job Oauth @@ -674,10 +674,10 @@ def __init__(__self__, time_zone="America/New_York", attempt_deadline="320s", http_target={ - "httpMethod": "GET", + "http_method": "GET", "uri": "https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs", - "oauthToken": { - "serviceAccountEmail": default.email, + "oauth_token": { + "service_account_email": default.email, }, }) ``` @@ -695,10 +695,10 @@ def __init__(__self__, time_zone="America/New_York", attempt_deadline="320s", http_target={ - "httpMethod": "GET", + "http_method": "GET", "uri": "https://example.com/ping", - "oidcToken": { - "serviceAccountEmail": default.email, + "oidc_token": { + "service_account_email": default.email, }, }) ``` @@ -804,7 +804,7 @@ def __init__(__self__, description="test job", schedule="*/2 * * * *", pubsub_target={ - "topicName": topic.id, + "topic_name": topic.id, "data": std.base64encode(input="test").result, }) ``` @@ -822,14 +822,14 @@ def __init__(__self__, time_zone="America/New_York", attempt_deadline="320s", retry_config={ - "retryCount": 1, + "retry_count": 1, }, http_target={ - "httpMethod": "POST", + "http_method": "POST", "uri": "https://example.com/", "body": std.base64encode(input="{\\"foo\\":\\"bar\\"}").result, "headers": { - "Content-Type": "application/json", + "content__type": "application/json", }, }) ``` @@ -848,14 +848,14 @@ def __init__(__self__, time_zone="America/New_York", attempt_deadline="320s", retry_config={ - "retryCount": 1, + "retry_count": 1, }, http_target={ - "httpMethod": "POST", + "http_method": "POST", "uri": "https://example.com/ping", "body": std.base64encode(input="{\\"foo\\":\\"bar\\"}").result, "headers": { - "Content-Type": "application/json", + "content__type": "application/json", }, }) ``` @@ -872,19 +872,19 @@ def __init__(__self__, time_zone="Europe/London", attempt_deadline="320s", retry_config={ - "minBackoffDuration": "1s", - "maxRetryDuration": "10s", - "maxDoublings": 2, - "retryCount": 3, + "min_backoff_duration": "1s", + "max_retry_duration": "10s", + "max_doublings": 2, + "retry_count": 3, }, app_engine_http_target={ - "httpMethod": "POST", - "appEngineRouting": { + "http_method": "POST", + "app_engine_routing": { "service": "web", "version": "prod", "instance": "my-instance-001", }, - "relativeUri": "/ping", + "relative_uri": "/ping", }) ``` ### Scheduler Job Oauth @@ -901,10 +901,10 @@ def __init__(__self__, time_zone="America/New_York", attempt_deadline="320s", http_target={ - "httpMethod": "GET", + "http_method": "GET", "uri": "https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs", - "oauthToken": { - "serviceAccountEmail": default.email, + "oauth_token": { + "service_account_email": default.email, }, }) ``` @@ -922,10 +922,10 @@ def __init__(__self__, time_zone="America/New_York", attempt_deadline="320s", http_target={ - "httpMethod": "GET", + "http_method": "GET", "uri": "https://example.com/ping", - "oidcToken": { - "serviceAccountEmail": default.email, + "oidc_token": { + "service_account_email": default.email, }, }) ``` diff --git a/sdk/python/pulumi_gcp/cloudtasks/queue.py b/sdk/python/pulumi_gcp/cloudtasks/queue.py index fa4eaef647..65ec1f89d8 100644 --- a/sdk/python/pulumi_gcp/cloudtasks/queue.py +++ b/sdk/python/pulumi_gcp/cloudtasks/queue.py @@ -360,18 +360,18 @@ def __init__(__self__, "instance": "test", }, rate_limits={ - "maxConcurrentDispatches": 3, - "maxDispatchesPerSecond": 2, + "max_concurrent_dispatches": 3, + "max_dispatches_per_second": 2, }, retry_config={ - "maxAttempts": 5, - "maxRetryDuration": "4s", - "maxBackoff": "3s", - "minBackoff": "2s", - "maxDoublings": 1, + "max_attempts": 5, + "max_retry_duration": "4s", + "max_backoff": "3s", + "min_backoff": "2s", + "max_doublings": 1, }, stackdriver_logging_config={ - "samplingRatio": 0.9, + "sampling_ratio": 0.9, }) ``` @@ -460,18 +460,18 @@ def __init__(__self__, "instance": "test", }, rate_limits={ - "maxConcurrentDispatches": 3, - "maxDispatchesPerSecond": 2, + "max_concurrent_dispatches": 3, + "max_dispatches_per_second": 2, }, retry_config={ - "maxAttempts": 5, - "maxRetryDuration": "4s", - "maxBackoff": "3s", - "minBackoff": "2s", - "maxDoublings": 1, + "max_attempts": 5, + "max_retry_duration": "4s", + "max_backoff": "3s", + "min_backoff": "2s", + "max_doublings": 1, }, stackdriver_logging_config={ - "samplingRatio": 0.9, + "sampling_ratio": 0.9, }) ``` diff --git a/sdk/python/pulumi_gcp/composer/get_image_versions.py b/sdk/python/pulumi_gcp/composer/get_image_versions.py index 762b4e87d1..d6a092a82a 100644 --- a/sdk/python/pulumi_gcp/composer/get_image_versions.py +++ b/sdk/python/pulumi_gcp/composer/get_image_versions.py @@ -97,8 +97,8 @@ def get_image_versions(project: Optional[str] = None, name="test-env", region="us-central1", config={ - "softwareConfig": { - "imageVersion": all.image_versions[0].image_version_id, + "software_config": { + "image_version": all.image_versions[0].image_version_id, }, }) ``` @@ -140,8 +140,8 @@ def get_image_versions_output(project: Optional[pulumi.Input[Optional[str]]] = N name="test-env", region="us-central1", config={ - "softwareConfig": { - "imageVersion": all.image_versions[0].image_version_id, + "software_config": { + "image_version": all.image_versions[0].image_version_id, }, }) ``` diff --git a/sdk/python/pulumi_gcp/composer/get_user_workloads_config_map.py b/sdk/python/pulumi_gcp/composer/get_user_workloads_config_map.py index fbedf6bfb8..0558c06c9b 100644 --- a/sdk/python/pulumi_gcp/composer/get_user_workloads_config_map.py +++ b/sdk/python/pulumi_gcp/composer/get_user_workloads_config_map.py @@ -113,8 +113,8 @@ def get_user_workloads_config_map(environment: Optional[str] = None, example_environment = gcp.composer.Environment("example", name="example-environment", config={ - "softwareConfig": { - "imageVersion": "composer-3-airflow-2", + "software_config": { + "image_version": "composer-3-airflow-2", }, }) example_user_workloads_config_map = gcp.composer.UserWorkloadsConfigMap("example", @@ -169,8 +169,8 @@ def get_user_workloads_config_map_output(environment: Optional[pulumi.Input[str] example_environment = gcp.composer.Environment("example", name="example-environment", config={ - "softwareConfig": { - "imageVersion": "composer-3-airflow-2", + "software_config": { + "image_version": "composer-3-airflow-2", }, }) example_user_workloads_config_map = gcp.composer.UserWorkloadsConfigMap("example", diff --git a/sdk/python/pulumi_gcp/composer/get_user_workloads_secret.py b/sdk/python/pulumi_gcp/composer/get_user_workloads_secret.py index 63f44dbadf..717782d26d 100644 --- a/sdk/python/pulumi_gcp/composer/get_user_workloads_secret.py +++ b/sdk/python/pulumi_gcp/composer/get_user_workloads_secret.py @@ -110,8 +110,8 @@ def get_user_workloads_secret(environment: Optional[str] = None, example_environment = gcp.composer.Environment("example", name="example-environment", config={ - "softwareConfig": { - "imageVersion": "composer-3-airflow-2", + "software_config": { + "image_version": "composer-3-airflow-2", }, }) example_user_workloads_secret = gcp.composer.UserWorkloadsSecret("example", @@ -167,8 +167,8 @@ def get_user_workloads_secret_output(environment: Optional[pulumi.Input[str]] = example_environment = gcp.composer.Environment("example", name="example-environment", config={ - "softwareConfig": { - "imageVersion": "composer-3-airflow-2", + "software_config": { + "image_version": "composer-3-airflow-2", }, }) example_user_workloads_secret = gcp.composer.UserWorkloadsSecret("example", diff --git a/sdk/python/pulumi_gcp/composer/user_workloads_config_map.py b/sdk/python/pulumi_gcp/composer/user_workloads_config_map.py index e6363acb46..cb1f60457f 100644 --- a/sdk/python/pulumi_gcp/composer/user_workloads_config_map.py +++ b/sdk/python/pulumi_gcp/composer/user_workloads_config_map.py @@ -235,8 +235,8 @@ def __init__(__self__, name="test-environment", region="us-central1", config={ - "softwareConfig": { - "imageVersion": "composer-3-airflow-2", + "software_config": { + "image_version": "composer-3-airflow-2", }, }) config_map = gcp.composer.UserWorkloadsConfigMap("config_map", @@ -310,8 +310,8 @@ def __init__(__self__, name="test-environment", region="us-central1", config={ - "softwareConfig": { - "imageVersion": "composer-3-airflow-2", + "software_config": { + "image_version": "composer-3-airflow-2", }, }) config_map = gcp.composer.UserWorkloadsConfigMap("config_map", diff --git a/sdk/python/pulumi_gcp/composer/user_workloads_secret.py b/sdk/python/pulumi_gcp/composer/user_workloads_secret.py index 0d8bcdb3bc..443499b803 100644 --- a/sdk/python/pulumi_gcp/composer/user_workloads_secret.py +++ b/sdk/python/pulumi_gcp/composer/user_workloads_secret.py @@ -219,8 +219,8 @@ def __init__(__self__, project="example-project", region="us-central1", config={ - "softwareConfig": { - "imageVersion": "example-image-version", + "software_config": { + "image_version": "example-image-version", }, }) example_user_workloads_secret = gcp.composer.UserWorkloadsSecret("example", @@ -286,8 +286,8 @@ def __init__(__self__, project="example-project", region="us-central1", config={ - "softwareConfig": { - "imageVersion": "example-image-version", + "software_config": { + "image_version": "example-image-version", }, }) example_user_workloads_secret = gcp.composer.UserWorkloadsSecret("example", diff --git a/sdk/python/pulumi_gcp/compute/address.py b/sdk/python/pulumi_gcp/compute/address.py index 86028b83ab..50e4c8e7c4 100644 --- a/sdk/python/pulumi_gcp/compute/address.py +++ b/sdk/python/pulumi_gcp/compute/address.py @@ -844,14 +844,14 @@ def __init__(__self__, machine_type="f1-micro", zone="us-central1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": debian_image.self_link, }, }, network_interfaces=[{ "network": "default", - "accessConfigs": [{ - "natIp": static.address, + "access_configs": [{ + "nat_ip": static.address, }], }]) ``` @@ -1044,14 +1044,14 @@ def __init__(__self__, machine_type="f1-micro", zone="us-central1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": debian_image.self_link, }, }, network_interfaces=[{ "network": "default", - "accessConfigs": [{ - "natIp": static.address, + "access_configs": [{ + "nat_ip": static.address, }], }]) ``` diff --git a/sdk/python/pulumi_gcp/compute/attached_disk.py b/sdk/python/pulumi_gcp/compute/attached_disk.py index bdec8e953f..b7890362d4 100644 --- a/sdk/python/pulumi_gcp/compute/attached_disk.py +++ b/sdk/python/pulumi_gcp/compute/attached_disk.py @@ -348,7 +348,7 @@ def __init__(__self__, machine_type="e2-medium", zone="us-west1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }, @@ -441,7 +441,7 @@ def __init__(__self__, machine_type="e2-medium", zone="us-west1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }, diff --git a/sdk/python/pulumi_gcp/compute/autoscaler.py b/sdk/python/pulumi_gcp/compute/autoscaler.py index 6865ca505f..716468dc9b 100644 --- a/sdk/python/pulumi_gcp/compute/autoscaler.py +++ b/sdk/python/pulumi_gcp/compute/autoscaler.py @@ -328,7 +328,7 @@ def __init__(__self__, "bar", ], disks=[{ - "sourceImage": debian9.id, + "source_image": debian9.id, }], network_interfaces=[{ "network": "default", @@ -348,7 +348,7 @@ def __init__(__self__, name="my-igm", zone="us-central1-f", versions=[{ - "instanceTemplate": default_instance_template.id, + "instance_template": default_instance_template.id, "name": "primary", }], target_pools=[default_target_pool.id], @@ -358,13 +358,13 @@ def __init__(__self__, zone="us-central1-f", target=default_instance_group_manager.id, autoscaling_policy={ - "maxReplicas": 5, - "minReplicas": 1, - "cooldownPeriod": 60, + "max_replicas": 5, + "min_replicas": 1, + "cooldown_period": 60, "metrics": [{ "name": "pubsub.googleapis.com/subscription/num_undelivered_messages", "filter": "resource.type = pubsub_subscription AND resource.label.subscription_id = our-subscription", - "singleInstanceAssignment": 65535, + "single_instance_assignment": 65535, }], }) ``` @@ -385,7 +385,7 @@ def __init__(__self__, "bar", ], disks=[{ - "sourceImage": debian9.id, + "source_image": debian9.id, }], network_interfaces=[{ "network": "default", @@ -405,7 +405,7 @@ def __init__(__self__, name="my-igm", zone="us-central1-f", versions=[{ - "instanceTemplate": foobar_instance_template.id, + "instance_template": foobar_instance_template.id, "name": "primary", }], target_pools=[foobar_target_pool.id], @@ -415,10 +415,10 @@ def __init__(__self__, zone="us-central1-f", target=foobar_instance_group_manager.id, autoscaling_policy={ - "maxReplicas": 5, - "minReplicas": 1, - "cooldownPeriod": 60, - "cpuUtilization": { + "max_replicas": 5, + "min_replicas": 1, + "cooldown_period": 60, + "cpu_utilization": { "target": 0.5, }, }) @@ -509,7 +509,7 @@ def __init__(__self__, "bar", ], disks=[{ - "sourceImage": debian9.id, + "source_image": debian9.id, }], network_interfaces=[{ "network": "default", @@ -529,7 +529,7 @@ def __init__(__self__, name="my-igm", zone="us-central1-f", versions=[{ - "instanceTemplate": default_instance_template.id, + "instance_template": default_instance_template.id, "name": "primary", }], target_pools=[default_target_pool.id], @@ -539,13 +539,13 @@ def __init__(__self__, zone="us-central1-f", target=default_instance_group_manager.id, autoscaling_policy={ - "maxReplicas": 5, - "minReplicas": 1, - "cooldownPeriod": 60, + "max_replicas": 5, + "min_replicas": 1, + "cooldown_period": 60, "metrics": [{ "name": "pubsub.googleapis.com/subscription/num_undelivered_messages", "filter": "resource.type = pubsub_subscription AND resource.label.subscription_id = our-subscription", - "singleInstanceAssignment": 65535, + "single_instance_assignment": 65535, }], }) ``` @@ -566,7 +566,7 @@ def __init__(__self__, "bar", ], disks=[{ - "sourceImage": debian9.id, + "source_image": debian9.id, }], network_interfaces=[{ "network": "default", @@ -586,7 +586,7 @@ def __init__(__self__, name="my-igm", zone="us-central1-f", versions=[{ - "instanceTemplate": foobar_instance_template.id, + "instance_template": foobar_instance_template.id, "name": "primary", }], target_pools=[foobar_target_pool.id], @@ -596,10 +596,10 @@ def __init__(__self__, zone="us-central1-f", target=foobar_instance_group_manager.id, autoscaling_policy={ - "maxReplicas": 5, - "minReplicas": 1, - "cooldownPeriod": 60, - "cpuUtilization": { + "max_replicas": 5, + "min_replicas": 1, + "cooldown_period": 60, + "cpu_utilization": { "target": 0.5, }, }) diff --git a/sdk/python/pulumi_gcp/compute/backend_bucket.py b/sdk/python/pulumi_gcp/compute/backend_bucket.py index 1436dbebeb..16fd8fb3e5 100644 --- a/sdk/python/pulumi_gcp/compute/backend_bucket.py +++ b/sdk/python/pulumi_gcp/compute/backend_bucket.py @@ -487,8 +487,8 @@ def __init__(__self__, bucket_name=image_bucket.name, enable_cdn=True, cdn_policy={ - "cacheKeyPolicy": { - "queryStringWhitelists": ["image-version"], + "cache_key_policy": { + "query_string_whitelists": ["image-version"], }, }) ``` @@ -507,8 +507,8 @@ def __init__(__self__, bucket_name=image_bucket.name, enable_cdn=True, cdn_policy={ - "cacheKeyPolicy": { - "includeHttpHeaders": ["X-My-Header-Field"], + "cache_key_policy": { + "include_http_headers": ["X-My-Header-Field"], }, }) ``` @@ -635,8 +635,8 @@ def __init__(__self__, bucket_name=image_bucket.name, enable_cdn=True, cdn_policy={ - "cacheKeyPolicy": { - "queryStringWhitelists": ["image-version"], + "cache_key_policy": { + "query_string_whitelists": ["image-version"], }, }) ``` @@ -655,8 +655,8 @@ def __init__(__self__, bucket_name=image_bucket.name, enable_cdn=True, cdn_policy={ - "cacheKeyPolicy": { - "includeHttpHeaders": ["X-My-Header-Field"], + "cache_key_policy": { + "include_http_headers": ["X-My-Header-Field"], }, }) ``` diff --git a/sdk/python/pulumi_gcp/compute/backend_service.py b/sdk/python/pulumi_gcp/compute/backend_service.py index 7928717b2e..cbd83b1281 100644 --- a/sdk/python/pulumi_gcp/compute/backend_service.py +++ b/sdk/python/pulumi_gcp/compute/backend_service.py @@ -1504,8 +1504,8 @@ def __init__(__self__, protocol="HTTP", load_balancing_scheme="EXTERNAL", iap={ - "oauth2ClientId": "abc", - "oauth2ClientSecret": "xyz", + "oauth2_client_id": "abc", + "oauth2_client_secret": "xyz", }) ``` ### Backend Service Cache Simple @@ -1524,7 +1524,7 @@ def __init__(__self__, health_checks=default_http_health_check.id, enable_cdn=True, cdn_policy={ - "signedUrlCacheMaxAgeSec": 7200, + "signed_url_cache_max_age_sec": 7200, }) ``` ### Backend Service Cache Include Http Headers @@ -1537,12 +1537,12 @@ def __init__(__self__, name="backend-service", enable_cdn=True, cdn_policy={ - "cacheMode": "USE_ORIGIN_HEADERS", - "cacheKeyPolicy": { - "includeHost": True, - "includeProtocol": True, - "includeQueryString": True, - "includeHttpHeaders": ["X-My-Header-Field"], + "cache_mode": "USE_ORIGIN_HEADERS", + "cache_key_policy": { + "include_host": True, + "include_protocol": True, + "include_query_string": True, + "include_http_headers": ["X-My-Header-Field"], }, }) ``` @@ -1556,15 +1556,15 @@ def __init__(__self__, name="backend-service", enable_cdn=True, cdn_policy={ - "cacheMode": "CACHE_ALL_STATIC", - "defaultTtl": 3600, - "clientTtl": 7200, - "maxTtl": 10800, - "cacheKeyPolicy": { - "includeHost": True, - "includeProtocol": True, - "includeQueryString": True, - "includeNamedCookies": [ + "cache_mode": "CACHE_ALL_STATIC", + "default_ttl": 3600, + "client_ttl": 7200, + "max_ttl": 10800, + "cache_key_policy": { + "include_host": True, + "include_protocol": True, + "include_query_string": True, + "include_named_cookies": [ "__next_preview_data", "__prerender_bypass", ], @@ -1587,12 +1587,12 @@ def __init__(__self__, health_checks=default_http_health_check.id, enable_cdn=True, cdn_policy={ - "cacheMode": "CACHE_ALL_STATIC", - "defaultTtl": 3600, - "clientTtl": 7200, - "maxTtl": 10800, - "negativeCaching": True, - "signedUrlCacheMaxAgeSec": 7200, + "cache_mode": "CACHE_ALL_STATIC", + "default_ttl": 3600, + "client_ttl": 7200, + "max_ttl": 10800, + "negative_caching": True, + "signed_url_cache_max_age_sec": 7200, }) ``` ### Backend Service Cache Bypass Cache On Request Headers @@ -1611,18 +1611,18 @@ def __init__(__self__, health_checks=default_http_health_check.id, enable_cdn=True, cdn_policy={ - "cacheMode": "CACHE_ALL_STATIC", - "defaultTtl": 3600, - "clientTtl": 7200, - "maxTtl": 10800, - "negativeCaching": True, - "signedUrlCacheMaxAgeSec": 7200, - "bypassCacheOnRequestHeaders": [ + "cache_mode": "CACHE_ALL_STATIC", + "default_ttl": 3600, + "client_ttl": 7200, + "max_ttl": 10800, + "negative_caching": True, + "signed_url_cache_max_age_sec": 7200, + "bypass_cache_on_request_headers": [ { - "headerName": "Authorization", + "header_name": "Authorization", }, { - "headerName": "Proxy-Authorization", + "header_name": "Proxy-Authorization", }, ], }) @@ -1662,10 +1662,10 @@ def __init__(__self__, locality_lb_policy="RING_HASH", session_affinity="HTTP_COOKIE", circuit_breakers={ - "maxConnections": 10, + "max_connections": 10, }, consistent_hash={ - "httpCookie": { + "http_cookie": { "ttl": { "seconds": 11, "nanos": 1111, @@ -1674,7 +1674,7 @@ def __init__(__self__, }, }, outlier_detection={ - "consecutiveErrors": 2, + "consecutive_errors": 2, }) ``` ### Backend Service Network Endpoint @@ -1931,8 +1931,8 @@ def __init__(__self__, protocol="HTTP", load_balancing_scheme="EXTERNAL", iap={ - "oauth2ClientId": "abc", - "oauth2ClientSecret": "xyz", + "oauth2_client_id": "abc", + "oauth2_client_secret": "xyz", }) ``` ### Backend Service Cache Simple @@ -1951,7 +1951,7 @@ def __init__(__self__, health_checks=default_http_health_check.id, enable_cdn=True, cdn_policy={ - "signedUrlCacheMaxAgeSec": 7200, + "signed_url_cache_max_age_sec": 7200, }) ``` ### Backend Service Cache Include Http Headers @@ -1964,12 +1964,12 @@ def __init__(__self__, name="backend-service", enable_cdn=True, cdn_policy={ - "cacheMode": "USE_ORIGIN_HEADERS", - "cacheKeyPolicy": { - "includeHost": True, - "includeProtocol": True, - "includeQueryString": True, - "includeHttpHeaders": ["X-My-Header-Field"], + "cache_mode": "USE_ORIGIN_HEADERS", + "cache_key_policy": { + "include_host": True, + "include_protocol": True, + "include_query_string": True, + "include_http_headers": ["X-My-Header-Field"], }, }) ``` @@ -1983,15 +1983,15 @@ def __init__(__self__, name="backend-service", enable_cdn=True, cdn_policy={ - "cacheMode": "CACHE_ALL_STATIC", - "defaultTtl": 3600, - "clientTtl": 7200, - "maxTtl": 10800, - "cacheKeyPolicy": { - "includeHost": True, - "includeProtocol": True, - "includeQueryString": True, - "includeNamedCookies": [ + "cache_mode": "CACHE_ALL_STATIC", + "default_ttl": 3600, + "client_ttl": 7200, + "max_ttl": 10800, + "cache_key_policy": { + "include_host": True, + "include_protocol": True, + "include_query_string": True, + "include_named_cookies": [ "__next_preview_data", "__prerender_bypass", ], @@ -2014,12 +2014,12 @@ def __init__(__self__, health_checks=default_http_health_check.id, enable_cdn=True, cdn_policy={ - "cacheMode": "CACHE_ALL_STATIC", - "defaultTtl": 3600, - "clientTtl": 7200, - "maxTtl": 10800, - "negativeCaching": True, - "signedUrlCacheMaxAgeSec": 7200, + "cache_mode": "CACHE_ALL_STATIC", + "default_ttl": 3600, + "client_ttl": 7200, + "max_ttl": 10800, + "negative_caching": True, + "signed_url_cache_max_age_sec": 7200, }) ``` ### Backend Service Cache Bypass Cache On Request Headers @@ -2038,18 +2038,18 @@ def __init__(__self__, health_checks=default_http_health_check.id, enable_cdn=True, cdn_policy={ - "cacheMode": "CACHE_ALL_STATIC", - "defaultTtl": 3600, - "clientTtl": 7200, - "maxTtl": 10800, - "negativeCaching": True, - "signedUrlCacheMaxAgeSec": 7200, - "bypassCacheOnRequestHeaders": [ + "cache_mode": "CACHE_ALL_STATIC", + "default_ttl": 3600, + "client_ttl": 7200, + "max_ttl": 10800, + "negative_caching": True, + "signed_url_cache_max_age_sec": 7200, + "bypass_cache_on_request_headers": [ { - "headerName": "Authorization", + "header_name": "Authorization", }, { - "headerName": "Proxy-Authorization", + "header_name": "Proxy-Authorization", }, ], }) @@ -2089,10 +2089,10 @@ def __init__(__self__, locality_lb_policy="RING_HASH", session_affinity="HTTP_COOKIE", circuit_breakers={ - "maxConnections": 10, + "max_connections": 10, }, consistent_hash={ - "httpCookie": { + "http_cookie": { "ttl": { "seconds": 11, "nanos": 1111, @@ -2101,7 +2101,7 @@ def __init__(__self__, }, }, outlier_detection={ - "consecutiveErrors": 2, + "consecutive_errors": 2, }) ``` ### Backend Service Network Endpoint diff --git a/sdk/python/pulumi_gcp/compute/backend_service_signed_url_key.py b/sdk/python/pulumi_gcp/compute/backend_service_signed_url_key.py index 9f8432864f..82347f57ef 100644 --- a/sdk/python/pulumi_gcp/compute/backend_service_signed_url_key.py +++ b/sdk/python/pulumi_gcp/compute/backend_service_signed_url_key.py @@ -218,14 +218,14 @@ def __init__(__self__, "network": "default", }], disks=[{ - "sourceImage": "debian-cloud/debian-11", - "autoDelete": True, + "source_image": "debian-cloud/debian-11", + "auto_delete": True, "boot": True, }]) webservers = gcp.compute.InstanceGroupManager("webservers", name="my-webservers", versions=[{ - "instanceTemplate": webserver.id, + "instance_template": webserver.id, "name": "primary", }], base_instance_name="webserver", @@ -302,14 +302,14 @@ def __init__(__self__, "network": "default", }], disks=[{ - "sourceImage": "debian-cloud/debian-11", - "autoDelete": True, + "source_image": "debian-cloud/debian-11", + "auto_delete": True, "boot": True, }]) webservers = gcp.compute.InstanceGroupManager("webservers", name="my-webservers", versions=[{ - "instanceTemplate": webserver.id, + "instance_template": webserver.id, "name": "primary", }], base_instance_name="webserver", diff --git a/sdk/python/pulumi_gcp/compute/disk_resource_policy_attachment.py b/sdk/python/pulumi_gcp/compute/disk_resource_policy_attachment.py index 86ed78445a..9abe32c2ec 100644 --- a/sdk/python/pulumi_gcp/compute/disk_resource_policy_attachment.py +++ b/sdk/python/pulumi_gcp/compute/disk_resource_policy_attachment.py @@ -216,9 +216,9 @@ def __init__(__self__, region="us-central1", snapshot_schedule_policy={ "schedule": { - "dailySchedule": { - "daysInCycle": 1, - "startTime": "04:00", + "daily_schedule": { + "days_in_cycle": 1, + "start_time": "04:00", }, }, }) @@ -303,9 +303,9 @@ def __init__(__self__, region="us-central1", snapshot_schedule_policy={ "schedule": { - "dailySchedule": { - "daysInCycle": 1, - "startTime": "04:00", + "daily_schedule": { + "days_in_cycle": 1, + "start_time": "04:00", }, }, }) diff --git a/sdk/python/pulumi_gcp/compute/external_vpn_gateway.py b/sdk/python/pulumi_gcp/compute/external_vpn_gateway.py index bcc8a7793c..e8dff989df 100644 --- a/sdk/python/pulumi_gcp/compute/external_vpn_gateway.py +++ b/sdk/python/pulumi_gcp/compute/external_vpn_gateway.py @@ -391,7 +391,7 @@ def __init__(__self__, description="An externally managed VPN gateway", interfaces=[{ "id": 0, - "ipAddress": "8.8.8.8", + "ip_address": "8.8.8.8", }]) network_subnet1 = gcp.compute.Subnetwork("network_subnet1", name="ha-vpn-subnet-1", @@ -539,7 +539,7 @@ def __init__(__self__, description="An externally managed VPN gateway", interfaces=[{ "id": 0, - "ipAddress": "8.8.8.8", + "ip_address": "8.8.8.8", }]) network_subnet1 = gcp.compute.Subnetwork("network_subnet1", name="ha-vpn-subnet-1", diff --git a/sdk/python/pulumi_gcp/compute/firewall_policy_rule.py b/sdk/python/pulumi_gcp/compute/firewall_policy_rule.py index beb19529a1..adcf1f87fa 100644 --- a/sdk/python/pulumi_gcp/compute/firewall_policy_rule.py +++ b/sdk/python/pulumi_gcp/compute/firewall_policy_rule.py @@ -525,22 +525,22 @@ def __init__(__self__, direction="EGRESS", disabled=False, match={ - "layer4Configs": [ + "layer4_configs": [ { - "ipProtocol": "tcp", + "ip_protocol": "tcp", "ports": ["8080"], }, { - "ipProtocol": "udp", + "ip_protocol": "udp", "ports": ["22"], }, ], - "destIpRanges": ["11.100.0.1/32"], - "destFqdns": [], - "destRegionCodes": ["US"], - "destThreatIntelligences": ["iplist-known-malicious-ips"], - "srcAddressGroups": [], - "destAddressGroups": [basic_global_networksecurity_address_group.id], + "dest_ip_ranges": ["11.100.0.1/32"], + "dest_fqdns": [], + "dest_region_codes": ["US"], + "dest_threat_intelligences": ["iplist-known-malicious-ips"], + "src_address_groups": [], + "dest_address_groups": [basic_global_networksecurity_address_group.id], }, target_service_accounts=["my@service-account.com"]) ``` @@ -625,22 +625,22 @@ def __init__(__self__, direction="EGRESS", disabled=False, match={ - "layer4Configs": [ + "layer4_configs": [ { - "ipProtocol": "tcp", + "ip_protocol": "tcp", "ports": ["8080"], }, { - "ipProtocol": "udp", + "ip_protocol": "udp", "ports": ["22"], }, ], - "destIpRanges": ["11.100.0.1/32"], - "destFqdns": [], - "destRegionCodes": ["US"], - "destThreatIntelligences": ["iplist-known-malicious-ips"], - "srcAddressGroups": [], - "destAddressGroups": [basic_global_networksecurity_address_group.id], + "dest_ip_ranges": ["11.100.0.1/32"], + "dest_fqdns": [], + "dest_region_codes": ["US"], + "dest_threat_intelligences": ["iplist-known-malicious-ips"], + "src_address_groups": [], + "dest_address_groups": [basic_global_networksecurity_address_group.id], }, target_service_accounts=["my@service-account.com"]) ``` diff --git a/sdk/python/pulumi_gcp/compute/forwarding_rule.py b/sdk/python/pulumi_gcp/compute/forwarding_rule.py index 9b075db42f..12bcc13ca5 100644 --- a/sdk/python/pulumi_gcp/compute/forwarding_rule.py +++ b/sdk/python/pulumi_gcp/compute/forwarding_rule.py @@ -1851,8 +1851,8 @@ def __init__(__self__, "subnetwork": default_subnetwork.id, }], disks=[{ - "sourceImage": debian_image.self_link, - "autoDelete": True, + "source_image": debian_image.self_link, + "auto_delete": True, "boot": True, }], tags=[ @@ -1863,7 +1863,7 @@ def __init__(__self__, region="us-central1", name="website-rigm", versions=[{ - "instanceTemplate": instance_template.id, + "instance_template": instance_template.id, "name": "primary", }], base_instance_name="internal-glb", @@ -1933,15 +1933,15 @@ def __init__(__self__, region="us-central1", name="website-hc", http_health_check={ - "portSpecification": "USE_SERVING_PORT", + "port_specification": "USE_SERVING_PORT", }, opts = pulumi.ResourceOptions(depends_on=[fw4])) default_region_backend_service = gcp.compute.RegionBackendService("default", load_balancing_scheme="INTERNAL_MANAGED", backends=[{ "group": rigm.instance_group, - "balancingMode": "UTILIZATION", - "capacityScaler": 1, + "balancing_mode": "UTILIZATION", + "capacity_scaler": 1, }], region="us-central1", name="website-backend", @@ -2001,8 +2001,8 @@ def __init__(__self__, "subnetwork": default_subnetwork.id, }], disks=[{ - "sourceImage": debian_image.self_link, - "autoDelete": True, + "source_image": debian_image.self_link, + "auto_delete": True, "boot": True, }], tags=[ @@ -2013,7 +2013,7 @@ def __init__(__self__, region="us-central1", name="website-rigm", versions=[{ - "instanceTemplate": instance_template.id, + "instance_template": instance_template.id, "name": "primary", }], base_instance_name="internal-glb", @@ -2083,15 +2083,15 @@ def __init__(__self__, region="us-central1", name="website-hc", http_health_check={ - "portSpecification": "USE_SERVING_PORT", + "port_specification": "USE_SERVING_PORT", }, opts = pulumi.ResourceOptions(depends_on=[fw4])) default_region_backend_service = gcp.compute.RegionBackendService("default", load_balancing_scheme="EXTERNAL_MANAGED", backends=[{ "group": rigm.instance_group, - "balancingMode": "UTILIZATION", - "capacityScaler": 1, + "balancing_mode": "UTILIZATION", + "capacity_scaler": 1, }], region="us-central1", name="website-backend", @@ -2746,8 +2746,8 @@ def __init__(__self__, "subnetwork": default_subnetwork.id, }], disks=[{ - "sourceImage": debian_image.self_link, - "autoDelete": True, + "source_image": debian_image.self_link, + "auto_delete": True, "boot": True, }], tags=[ @@ -2758,7 +2758,7 @@ def __init__(__self__, region="us-central1", name="website-rigm", versions=[{ - "instanceTemplate": instance_template.id, + "instance_template": instance_template.id, "name": "primary", }], base_instance_name="internal-glb", @@ -2828,15 +2828,15 @@ def __init__(__self__, region="us-central1", name="website-hc", http_health_check={ - "portSpecification": "USE_SERVING_PORT", + "port_specification": "USE_SERVING_PORT", }, opts = pulumi.ResourceOptions(depends_on=[fw4])) default_region_backend_service = gcp.compute.RegionBackendService("default", load_balancing_scheme="INTERNAL_MANAGED", backends=[{ "group": rigm.instance_group, - "balancingMode": "UTILIZATION", - "capacityScaler": 1, + "balancing_mode": "UTILIZATION", + "capacity_scaler": 1, }], region="us-central1", name="website-backend", @@ -2896,8 +2896,8 @@ def __init__(__self__, "subnetwork": default_subnetwork.id, }], disks=[{ - "sourceImage": debian_image.self_link, - "autoDelete": True, + "source_image": debian_image.self_link, + "auto_delete": True, "boot": True, }], tags=[ @@ -2908,7 +2908,7 @@ def __init__(__self__, region="us-central1", name="website-rigm", versions=[{ - "instanceTemplate": instance_template.id, + "instance_template": instance_template.id, "name": "primary", }], base_instance_name="internal-glb", @@ -2978,15 +2978,15 @@ def __init__(__self__, region="us-central1", name="website-hc", http_health_check={ - "portSpecification": "USE_SERVING_PORT", + "port_specification": "USE_SERVING_PORT", }, opts = pulumi.ResourceOptions(depends_on=[fw4])) default_region_backend_service = gcp.compute.RegionBackendService("default", load_balancing_scheme="EXTERNAL_MANAGED", backends=[{ "group": rigm.instance_group, - "balancingMode": "UTILIZATION", - "capacityScaler": 1, + "balancing_mode": "UTILIZATION", + "capacity_scaler": 1, }], region="us-central1", name="website-backend", diff --git a/sdk/python/pulumi_gcp/compute/get_disk.py b/sdk/python/pulumi_gcp/compute/get_disk.py index 88f151ba67..e5ebda244e 100644 --- a/sdk/python/pulumi_gcp/compute/get_disk.py +++ b/sdk/python/pulumi_gcp/compute/get_disk.py @@ -459,7 +459,7 @@ def get_disk(name: Optional[str] = None, project="example") default = gcp.compute.Instance("default", boot_disk={ "source": persistent_boot_disk.self_link, - "autoDelete": False, + "auto_delete": False, }) ``` @@ -538,7 +538,7 @@ def get_disk_output(name: Optional[pulumi.Input[str]] = None, project="example") default = gcp.compute.Instance("default", boot_disk={ "source": persistent_boot_disk.self_link, - "autoDelete": False, + "auto_delete": False, }) ``` diff --git a/sdk/python/pulumi_gcp/compute/get_image.py b/sdk/python/pulumi_gcp/compute/get_image.py index fc6922d59c..e0217f8594 100644 --- a/sdk/python/pulumi_gcp/compute/get_image.py +++ b/sdk/python/pulumi_gcp/compute/get_image.py @@ -303,7 +303,7 @@ def get_image(family: Optional[str] = None, my_image = gcp.compute.get_image(family="debian-11", project="debian-cloud") default = gcp.compute.Instance("default", boot_disk={ - "initializeParams": { + "initialize_params": { "image": my_image.self_link, }, }) @@ -378,7 +378,7 @@ def get_image_output(family: Optional[pulumi.Input[Optional[str]]] = None, my_image = gcp.compute.get_image(family="debian-11", project="debian-cloud") default = gcp.compute.Instance("default", boot_disk={ - "initializeParams": { + "initialize_params": { "image": my_image.self_link, }, }) diff --git a/sdk/python/pulumi_gcp/compute/get_instance_serial_port.py b/sdk/python/pulumi_gcp/compute/get_instance_serial_port.py index 83d4bb2776..438d76128a 100644 --- a/sdk/python/pulumi_gcp/compute/get_instance_serial_port.py +++ b/sdk/python/pulumi_gcp/compute/get_instance_serial_port.py @@ -127,14 +127,14 @@ def get_instance_serial_port(instance: Optional[str] = None, windows = gcp.compute.Instance("windows", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "network": "default", }], name="windows-instance", machine_type="e2-medium", zone="us-central1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "windows-cloud/windows-2019", }, }, @@ -219,14 +219,14 @@ def get_instance_serial_port_output(instance: Optional[pulumi.Input[str]] = None windows = gcp.compute.Instance("windows", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "network": "default", }], name="windows-instance", machine_type="e2-medium", zone="us-central1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "windows-cloud/windows-2019", }, }, diff --git a/sdk/python/pulumi_gcp/compute/global_forwarding_rule.py b/sdk/python/pulumi_gcp/compute/global_forwarding_rule.py index 97638a9492..53af3ff549 100644 --- a/sdk/python/pulumi_gcp/compute/global_forwarding_rule.py +++ b/sdk/python/pulumi_gcp/compute/global_forwarding_rule.py @@ -1201,12 +1201,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], @@ -1235,14 +1235,14 @@ def __init__(__self__, "network": "default", }], disks=[{ - "sourceImage": debian_image.self_link, - "autoDelete": True, + "source_image": debian_image.self_link, + "auto_delete": True, "boot": True, }]) igm = gcp.compute.InstanceGroupManager("igm", name="igm-internal", versions=[{ - "instanceTemplate": instance_template.id, + "instance_template": instance_template.id, "name": "primary", }], base_instance_name="internal-glb", @@ -1263,9 +1263,9 @@ def __init__(__self__, load_balancing_scheme="INTERNAL_SELF_MANAGED", backends=[{ "group": igm.instance_group, - "balancingMode": "RATE", - "capacityScaler": 0.4, - "maxRatePerInstance": 50, + "balancing_mode": "RATE", + "capacity_scaler": 0.4, + "max_rate_per_instance": 50, }], health_checks=default_health_check.id) default_url_map = gcp.compute.URLMap("default", @@ -1274,12 +1274,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], @@ -1295,8 +1295,8 @@ def __init__(__self__, load_balancing_scheme="INTERNAL_SELF_MANAGED", ip_address="0.0.0.0", metadata_filters=[{ - "filterMatchCriteria": "MATCH_ANY", - "filterLabels": [{ + "filter_match_criteria": "MATCH_ANY", + "filter_labels": [{ "name": "PLANET", "value": "MARS", }], @@ -1320,12 +1320,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], @@ -1400,8 +1400,8 @@ def __init__(__self__, timeout_sec=10, backends=[{ "group": default_network_endpoint_group.id, - "balancingMode": "RATE", - "maxRatePerEndpoint": 10, + "balancing_mode": "RATE", + "max_rate_per_endpoint": 10, }], health_checks=default_health_check.id) # Backgend service for Hybrid NEG @@ -1412,8 +1412,8 @@ def __init__(__self__, timeout_sec=10, backends=[{ "group": hybrid.id, - "balancingMode": "RATE", - "maxRatePerEndpoint": 10, + "balancing_mode": "RATE", + "max_rate_per_endpoint": 10, }], health_checks=default_health_check.id) default_url_map = gcp.compute.URLMap("default", @@ -1422,12 +1422,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [ + "default_service": default_backend_service.id, + "path_rules": [ { "paths": ["/*"], "service": default_backend_service.id, @@ -1480,7 +1480,7 @@ def __init__(__self__, load_balancing_scheme="", service_directory_registrations={ "namespace": "sd-namespace", - "serviceDirectoryRegion": "europe-west3", + "service_directory_region": "europe-west3", }) ``` ### Private Service Connect Google Apis No Automate Dns @@ -1713,12 +1713,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], @@ -1747,14 +1747,14 @@ def __init__(__self__, "network": "default", }], disks=[{ - "sourceImage": debian_image.self_link, - "autoDelete": True, + "source_image": debian_image.self_link, + "auto_delete": True, "boot": True, }]) igm = gcp.compute.InstanceGroupManager("igm", name="igm-internal", versions=[{ - "instanceTemplate": instance_template.id, + "instance_template": instance_template.id, "name": "primary", }], base_instance_name="internal-glb", @@ -1775,9 +1775,9 @@ def __init__(__self__, load_balancing_scheme="INTERNAL_SELF_MANAGED", backends=[{ "group": igm.instance_group, - "balancingMode": "RATE", - "capacityScaler": 0.4, - "maxRatePerInstance": 50, + "balancing_mode": "RATE", + "capacity_scaler": 0.4, + "max_rate_per_instance": 50, }], health_checks=default_health_check.id) default_url_map = gcp.compute.URLMap("default", @@ -1786,12 +1786,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], @@ -1807,8 +1807,8 @@ def __init__(__self__, load_balancing_scheme="INTERNAL_SELF_MANAGED", ip_address="0.0.0.0", metadata_filters=[{ - "filterMatchCriteria": "MATCH_ANY", - "filterLabels": [{ + "filter_match_criteria": "MATCH_ANY", + "filter_labels": [{ "name": "PLANET", "value": "MARS", }], @@ -1832,12 +1832,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], @@ -1912,8 +1912,8 @@ def __init__(__self__, timeout_sec=10, backends=[{ "group": default_network_endpoint_group.id, - "balancingMode": "RATE", - "maxRatePerEndpoint": 10, + "balancing_mode": "RATE", + "max_rate_per_endpoint": 10, }], health_checks=default_health_check.id) # Backgend service for Hybrid NEG @@ -1924,8 +1924,8 @@ def __init__(__self__, timeout_sec=10, backends=[{ "group": hybrid.id, - "balancingMode": "RATE", - "maxRatePerEndpoint": 10, + "balancing_mode": "RATE", + "max_rate_per_endpoint": 10, }], health_checks=default_health_check.id) default_url_map = gcp.compute.URLMap("default", @@ -1934,12 +1934,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [ + "default_service": default_backend_service.id, + "path_rules": [ { "paths": ["/*"], "service": default_backend_service.id, @@ -1992,7 +1992,7 @@ def __init__(__self__, load_balancing_scheme="", service_directory_registrations={ "namespace": "sd-namespace", - "serviceDirectoryRegion": "europe-west3", + "service_directory_region": "europe-west3", }) ``` ### Private Service Connect Google Apis No Automate Dns diff --git a/sdk/python/pulumi_gcp/compute/ha_vpn_gateway.py b/sdk/python/pulumi_gcp/compute/ha_vpn_gateway.py index 5ebe0dd10c..7b053c4e3f 100644 --- a/sdk/python/pulumi_gcp/compute/ha_vpn_gateway.py +++ b/sdk/python/pulumi_gcp/compute/ha_vpn_gateway.py @@ -435,11 +435,11 @@ def __init__(__self__, vpn_interfaces=[ { "id": 0, - "interconnectAttachment": attachment1.self_link, + "interconnect_attachment": attachment1.self_link, }, { "id": 1, - "interconnectAttachment": attachment2.self_link, + "interconnect_attachment": attachment2.self_link, }, ]) ``` @@ -597,11 +597,11 @@ def __init__(__self__, vpn_interfaces=[ { "id": 0, - "interconnectAttachment": attachment1.self_link, + "interconnect_attachment": attachment1.self_link, }, { "id": 1, - "interconnectAttachment": attachment2.self_link, + "interconnect_attachment": attachment2.self_link, }, ]) ``` diff --git a/sdk/python/pulumi_gcp/compute/health_check.py b/sdk/python/pulumi_gcp/compute/health_check.py index a4b48c851d..f925176596 100644 --- a/sdk/python/pulumi_gcp/compute/health_check.py +++ b/sdk/python/pulumi_gcp/compute/health_check.py @@ -772,10 +772,10 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, tcp_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "request": "ARE YOU HEALTHY?", - "proxyHeader": "NONE", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -807,10 +807,10 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, ssl_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "request": "ARE YOU HEALTHY?", - "proxyHeader": "NONE", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -842,11 +842,11 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, http_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "host": "1.2.3.4", - "requestPath": "/mypath", - "proxyHeader": "NONE", + "request_path": "/mypath", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -878,11 +878,11 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, https_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "host": "1.2.3.4", - "requestPath": "/mypath", - "proxyHeader": "NONE", + "request_path": "/mypath", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -914,11 +914,11 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, http2_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "host": "1.2.3.4", - "requestPath": "/mypath", - "proxyHeader": "NONE", + "request_path": "/mypath", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -947,9 +947,9 @@ def __init__(__self__, timeout_sec=1, check_interval_sec=1, grpc_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", - "grpcServiceName": "testservice", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", + "grpc_service_name": "testservice", }) ``` ### Health Check With Logging @@ -1105,10 +1105,10 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, tcp_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "request": "ARE YOU HEALTHY?", - "proxyHeader": "NONE", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -1140,10 +1140,10 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, ssl_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "request": "ARE YOU HEALTHY?", - "proxyHeader": "NONE", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -1175,11 +1175,11 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, http_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "host": "1.2.3.4", - "requestPath": "/mypath", - "proxyHeader": "NONE", + "request_path": "/mypath", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -1211,11 +1211,11 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, https_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "host": "1.2.3.4", - "requestPath": "/mypath", - "proxyHeader": "NONE", + "request_path": "/mypath", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -1247,11 +1247,11 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, http2_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "host": "1.2.3.4", - "requestPath": "/mypath", - "proxyHeader": "NONE", + "request_path": "/mypath", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -1280,9 +1280,9 @@ def __init__(__self__, timeout_sec=1, check_interval_sec=1, grpc_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", - "grpcServiceName": "testservice", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", + "grpc_service_name": "testservice", }) ``` ### Health Check With Logging diff --git a/sdk/python/pulumi_gcp/compute/instance.py b/sdk/python/pulumi_gcp/compute/instance.py index f09c336240..8eb61ac62a 100644 --- a/sdk/python/pulumi_gcp/compute/instance.py +++ b/sdk/python/pulumi_gcp/compute/instance.py @@ -1457,7 +1457,7 @@ def __init__(__self__, display_name="Custom SA for VM Instance") default_instance = gcp.compute.Instance("default", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "network": "default", }], name="my-instance", @@ -1468,7 +1468,7 @@ def __init__(__self__, "bar", ], boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", "labels": { "my_label": "value", @@ -1628,7 +1628,7 @@ def __init__(__self__, display_name="Custom SA for VM Instance") default_instance = gcp.compute.Instance("default", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "network": "default", }], name="my-instance", @@ -1639,7 +1639,7 @@ def __init__(__self__, "bar", ], boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", "labels": { "my_label": "value", diff --git a/sdk/python/pulumi_gcp/compute/instance_from_template.py b/sdk/python/pulumi_gcp/compute/instance_from_template.py index debc11ac53..3ef4f08353 100644 --- a/sdk/python/pulumi_gcp/compute/instance_from_template.py +++ b/sdk/python/pulumi_gcp/compute/instance_from_template.py @@ -1319,9 +1319,9 @@ def __init__(__self__, name="template", machine_type="e2-medium", disks=[{ - "sourceImage": "debian-cloud/debian-11", - "autoDelete": True, - "diskSizeGb": 100, + "source_image": "debian-cloud/debian-11", + "auto_delete": True, + "disk_size_gb": 100, "boot": True, }], network_interfaces=[{ @@ -1422,9 +1422,9 @@ def __init__(__self__, name="template", machine_type="e2-medium", disks=[{ - "sourceImage": "debian-cloud/debian-11", - "autoDelete": True, - "diskSizeGb": 100, + "source_image": "debian-cloud/debian-11", + "auto_delete": True, + "disk_size_gb": 100, "boot": True, }], network_interfaces=[{ diff --git a/sdk/python/pulumi_gcp/compute/instance_group_manager.py b/sdk/python/pulumi_gcp/compute/instance_group_manager.py index ecaa3a24d9..b2986dd8da 100644 --- a/sdk/python/pulumi_gcp/compute/instance_group_manager.py +++ b/sdk/python/pulumi_gcp/compute/instance_group_manager.py @@ -1048,7 +1048,7 @@ def __init__(__self__, healthy_threshold=2, unhealthy_threshold=10, http_health_check={ - "requestPath": "/healthz", + "request_path": "/healthz", "port": 8080, }) appserver = gcp.compute.InstanceGroupManager("appserver", @@ -1056,7 +1056,7 @@ def __init__(__self__, base_instance_name="app", zone="us-central1-a", versions=[{ - "instanceTemplate": appserver_google_compute_instance_template["selfLinkUnique"], + "instance_template": appserver_google_compute_instance_template["selfLinkUnique"], }], all_instances_config={ "metadata": { @@ -1073,8 +1073,8 @@ def __init__(__self__, "port": 8888, }], auto_healing_policies={ - "healthCheck": autohealing.id, - "initialDelaySec": 300, + "health_check": autohealing.id, + "initial_delay_sec": 300, }) ``` @@ -1091,12 +1091,12 @@ def __init__(__self__, versions=[ { "name": "appserver", - "instanceTemplate": appserver_google_compute_instance_template["selfLinkUnique"], + "instance_template": appserver_google_compute_instance_template["selfLinkUnique"], }, { "name": "appserver-canary", - "instanceTemplate": appserver_canary["selfLinkUnique"], - "targetSize": { + "instance_template": appserver_canary["selfLinkUnique"], + "target_size": { "fixed": 1, }, }, @@ -1114,11 +1114,11 @@ def __init__(__self__, zone="us-central1-a", target_size=5, versions=[{ - "instanceTemplate": sr_igm["selfLink"], + "instance_template": sr_igm["selfLink"], "name": "primary", }], standby_policy={ - "initialDelaySec": 30, + "initial_delay_sec": 30, "mode": "MANUAL", }, target_suspended_size=2, @@ -1244,7 +1244,7 @@ def __init__(__self__, healthy_threshold=2, unhealthy_threshold=10, http_health_check={ - "requestPath": "/healthz", + "request_path": "/healthz", "port": 8080, }) appserver = gcp.compute.InstanceGroupManager("appserver", @@ -1252,7 +1252,7 @@ def __init__(__self__, base_instance_name="app", zone="us-central1-a", versions=[{ - "instanceTemplate": appserver_google_compute_instance_template["selfLinkUnique"], + "instance_template": appserver_google_compute_instance_template["selfLinkUnique"], }], all_instances_config={ "metadata": { @@ -1269,8 +1269,8 @@ def __init__(__self__, "port": 8888, }], auto_healing_policies={ - "healthCheck": autohealing.id, - "initialDelaySec": 300, + "health_check": autohealing.id, + "initial_delay_sec": 300, }) ``` @@ -1287,12 +1287,12 @@ def __init__(__self__, versions=[ { "name": "appserver", - "instanceTemplate": appserver_google_compute_instance_template["selfLinkUnique"], + "instance_template": appserver_google_compute_instance_template["selfLinkUnique"], }, { "name": "appserver-canary", - "instanceTemplate": appserver_canary["selfLinkUnique"], - "targetSize": { + "instance_template": appserver_canary["selfLinkUnique"], + "target_size": { "fixed": 1, }, }, @@ -1310,11 +1310,11 @@ def __init__(__self__, zone="us-central1-a", target_size=5, versions=[{ - "instanceTemplate": sr_igm["selfLink"], + "instance_template": sr_igm["selfLink"], "name": "primary", }], standby_policy={ - "initialDelaySec": 30, + "initial_delay_sec": 30, "mode": "MANUAL", }, target_suspended_size=2, diff --git a/sdk/python/pulumi_gcp/compute/instance_group_membership.py b/sdk/python/pulumi_gcp/compute/instance_group_membership.py index 84bf9c317f..2c4c8a10ae 100644 --- a/sdk/python/pulumi_gcp/compute/instance_group_membership.py +++ b/sdk/python/pulumi_gcp/compute/instance_group_membership.py @@ -217,7 +217,7 @@ def __init__(__self__, name="instance", machine_type="e2-medium", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }, @@ -310,7 +310,7 @@ def __init__(__self__, name="instance", machine_type="e2-medium", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }, diff --git a/sdk/python/pulumi_gcp/compute/instance_group_named_port.py b/sdk/python/pulumi_gcp/compute/instance_group_named_port.py index 3fe34b3b7b..5a06d28866 100644 --- a/sdk/python/pulumi_gcp/compute/instance_group_named_port.py +++ b/sdk/python/pulumi_gcp/compute/instance_group_named_port.py @@ -256,8 +256,8 @@ def __init__(__self__, network=container_network.name, subnetwork=container_subnetwork.name, ip_allocation_policy={ - "clusterIpv4CidrBlock": "/19", - "servicesIpv4CidrBlock": "/22", + "cluster_ipv4_cidr_block": "/19", + "services_ipv4_cidr_block": "/22", }, deletion_protection=True) my_port = gcp.compute.InstanceGroupNamedPort("my_port", @@ -356,8 +356,8 @@ def __init__(__self__, network=container_network.name, subnetwork=container_subnetwork.name, ip_allocation_policy={ - "clusterIpv4CidrBlock": "/19", - "servicesIpv4CidrBlock": "/22", + "cluster_ipv4_cidr_block": "/19", + "services_ipv4_cidr_block": "/22", }, deletion_protection=True) my_port = gcp.compute.InstanceGroupNamedPort("my_port", diff --git a/sdk/python/pulumi_gcp/compute/instance_template.py b/sdk/python/pulumi_gcp/compute/instance_template.py index 18ed99db06..c0cefd9154 100644 --- a/sdk/python/pulumi_gcp/compute/instance_template.py +++ b/sdk/python/pulumi_gcp/compute/instance_template.py @@ -1201,9 +1201,9 @@ def __init__(__self__, region="us-central1", snapshot_schedule_policy={ "schedule": { - "dailySchedule": { - "daysInCycle": 1, - "startTime": "04:00", + "daily_schedule": { + "days_in_cycle": 1, + "start_time": "04:00", }, }, }) @@ -1221,19 +1221,19 @@ def __init__(__self__, machine_type="e2-medium", can_ip_forward=False, scheduling={ - "automaticRestart": True, - "onHostMaintenance": "MIGRATE", + "automatic_restart": True, + "on_host_maintenance": "MIGRATE", }, disks=[ { - "sourceImage": "debian-cloud/debian-11", - "autoDelete": True, + "source_image": "debian-cloud/debian-11", + "auto_delete": True, "boot": True, - "resourcePolicies": daily_backup.id, + "resource_policies": daily_backup.id, }, { "source": foobar.name, - "autoDelete": False, + "auto_delete": False, "boot": False, }, ], @@ -1267,8 +1267,8 @@ def __init__(__self__, "bar", ], disks=[{ - "sourceImage": my_image.self_link, - "autoDelete": True, + "source_image": my_image.self_link, + "auto_delete": True, "boot": True, }], network_interfaces=[{ @@ -1276,7 +1276,7 @@ def __init__(__self__, }], scheduling={ "preemptible": False, - "automaticRestart": True, + "automatic_restart": True, }, metadata={ "gce-software-declaration": \"\"\"{ @@ -1467,9 +1467,9 @@ def __init__(__self__, region="us-central1", snapshot_schedule_policy={ "schedule": { - "dailySchedule": { - "daysInCycle": 1, - "startTime": "04:00", + "daily_schedule": { + "days_in_cycle": 1, + "start_time": "04:00", }, }, }) @@ -1487,19 +1487,19 @@ def __init__(__self__, machine_type="e2-medium", can_ip_forward=False, scheduling={ - "automaticRestart": True, - "onHostMaintenance": "MIGRATE", + "automatic_restart": True, + "on_host_maintenance": "MIGRATE", }, disks=[ { - "sourceImage": "debian-cloud/debian-11", - "autoDelete": True, + "source_image": "debian-cloud/debian-11", + "auto_delete": True, "boot": True, - "resourcePolicies": daily_backup.id, + "resource_policies": daily_backup.id, }, { "source": foobar.name, - "autoDelete": False, + "auto_delete": False, "boot": False, }, ], @@ -1533,8 +1533,8 @@ def __init__(__self__, "bar", ], disks=[{ - "sourceImage": my_image.self_link, - "autoDelete": True, + "source_image": my_image.self_link, + "auto_delete": True, "boot": True, }], network_interfaces=[{ @@ -1542,7 +1542,7 @@ def __init__(__self__, }], scheduling={ "preemptible": False, - "automaticRestart": True, + "automatic_restart": True, }, metadata={ "gce-software-declaration": \"\"\"{ diff --git a/sdk/python/pulumi_gcp/compute/machine_image.py b/sdk/python/pulumi_gcp/compute/machine_image.py index a1c2b3c41d..337e6dd75e 100644 --- a/sdk/python/pulumi_gcp/compute/machine_image.py +++ b/sdk/python/pulumi_gcp/compute/machine_image.py @@ -328,7 +328,7 @@ def __init__(__self__, name="my-vm", machine_type="e2-medium", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }, @@ -349,7 +349,7 @@ def __init__(__self__, name="my-vm", machine_type="e2-medium", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }, @@ -366,7 +366,7 @@ def __init__(__self__, name="my-image", source_instance=vm.self_link, machine_image_encryption_key={ - "kmsKeyName": crypto_key.id, + "kms_key_name": crypto_key.id, }) ``` @@ -441,7 +441,7 @@ def __init__(__self__, name="my-vm", machine_type="e2-medium", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }, @@ -462,7 +462,7 @@ def __init__(__self__, name="my-vm", machine_type="e2-medium", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }, @@ -479,7 +479,7 @@ def __init__(__self__, name="my-image", source_instance=vm.self_link, machine_image_encryption_key={ - "kmsKeyName": crypto_key.id, + "kms_key_name": crypto_key.id, }) ``` diff --git a/sdk/python/pulumi_gcp/compute/managed_ssl_certificate.py b/sdk/python/pulumi_gcp/compute/managed_ssl_certificate.py index a3db8f9e15..5b2fd6dd0e 100644 --- a/sdk/python/pulumi_gcp/compute/managed_ssl_certificate.py +++ b/sdk/python/pulumi_gcp/compute/managed_ssl_certificate.py @@ -411,12 +411,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["sslcert.tf-test.club"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], @@ -539,12 +539,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["sslcert.tf-test.club"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], diff --git a/sdk/python/pulumi_gcp/compute/manged_ssl_certificate.py b/sdk/python/pulumi_gcp/compute/manged_ssl_certificate.py index a1f0cd76d3..0498f89da0 100644 --- a/sdk/python/pulumi_gcp/compute/manged_ssl_certificate.py +++ b/sdk/python/pulumi_gcp/compute/manged_ssl_certificate.py @@ -416,12 +416,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["sslcert.tf-test.club"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], @@ -544,12 +544,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["sslcert.tf-test.club"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], diff --git a/sdk/python/pulumi_gcp/compute/network_attachment.py b/sdk/python/pulumi_gcp/compute/network_attachment.py index c82662d276..aa9ecdbbeb 100644 --- a/sdk/python/pulumi_gcp/compute/network_attachment.py +++ b/sdk/python/pulumi_gcp/compute/network_attachment.py @@ -509,7 +509,7 @@ def __init__(__self__, zone="us-central1-a", machine_type="e2-micro", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }, @@ -518,7 +518,7 @@ def __init__(__self__, "network": "default", }, { - "networkAttachment": default_network_attachment.self_link, + "network_attachment": default_network_attachment.self_link, }, ]) ``` @@ -644,7 +644,7 @@ def __init__(__self__, zone="us-central1-a", machine_type="e2-micro", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }, @@ -653,7 +653,7 @@ def __init__(__self__, "network": "default", }, { - "networkAttachment": default_network_attachment.self_link, + "network_attachment": default_network_attachment.self_link, }, ]) ``` diff --git a/sdk/python/pulumi_gcp/compute/network_endpoint.py b/sdk/python/pulumi_gcp/compute/network_endpoint.py index 1cef36ac15..893ecd1748 100644 --- a/sdk/python/pulumi_gcp/compute/network_endpoint.py +++ b/sdk/python/pulumi_gcp/compute/network_endpoint.py @@ -311,13 +311,13 @@ def __init__(__self__, network=default.id) endpoint_instance = gcp.compute.Instance("endpoint-instance", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "subnetwork": default_subnetwork.id, }], name="endpoint-instance", machine_type="e2-medium", boot_disk={ - "initializeParams": { + "initialize_params": { "image": my_image.self_link, }, }) @@ -426,13 +426,13 @@ def __init__(__self__, network=default.id) endpoint_instance = gcp.compute.Instance("endpoint-instance", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "subnetwork": default_subnetwork.id, }], name="endpoint-instance", machine_type="e2-medium", boot_disk={ - "initializeParams": { + "initialize_params": { "image": my_image.self_link, }, }) diff --git a/sdk/python/pulumi_gcp/compute/network_endpoint_list.py b/sdk/python/pulumi_gcp/compute/network_endpoint_list.py index 6c8f2560df..ac2ebb02c0 100644 --- a/sdk/python/pulumi_gcp/compute/network_endpoint_list.py +++ b/sdk/python/pulumi_gcp/compute/network_endpoint_list.py @@ -239,25 +239,25 @@ def __init__(__self__, network=default.id) endpoint_instance1 = gcp.compute.Instance("endpoint-instance1", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "subnetwork": default_subnetwork.id, }], name="endpoint-instance1", machine_type="e2-medium", boot_disk={ - "initializeParams": { + "initialize_params": { "image": my_image.self_link, }, }) endpoint_instance2 = gcp.compute.Instance("endpoint-instance2", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "subnetwork": default_subnetwork.id, }], name="endpoint-instance2", machine_type="e2-medium", boot_disk={ - "initializeParams": { + "initialize_params": { "image": my_image.self_link, }, }) @@ -267,12 +267,12 @@ def __init__(__self__, { "instance": endpoint_instance1.name, "port": neg["defaultPort"], - "ipAddress": endpoint_instance1.network_interfaces[0].network_ip, + "ip_address": endpoint_instance1.network_interfaces[0].network_ip, }, { "instance": endpoint_instance2.name, "port": neg["defaultPort"], - "ipAddress": endpoint_instance2.network_interfaces[0].network_ip, + "ip_address": endpoint_instance2.network_interfaces[0].network_ip, }, ]) group = gcp.compute.NetworkEndpointGroup("group", @@ -373,25 +373,25 @@ def __init__(__self__, network=default.id) endpoint_instance1 = gcp.compute.Instance("endpoint-instance1", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "subnetwork": default_subnetwork.id, }], name="endpoint-instance1", machine_type="e2-medium", boot_disk={ - "initializeParams": { + "initialize_params": { "image": my_image.self_link, }, }) endpoint_instance2 = gcp.compute.Instance("endpoint-instance2", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "subnetwork": default_subnetwork.id, }], name="endpoint-instance2", machine_type="e2-medium", boot_disk={ - "initializeParams": { + "initialize_params": { "image": my_image.self_link, }, }) @@ -401,12 +401,12 @@ def __init__(__self__, { "instance": endpoint_instance1.name, "port": neg["defaultPort"], - "ipAddress": endpoint_instance1.network_interfaces[0].network_ip, + "ip_address": endpoint_instance1.network_interfaces[0].network_ip, }, { "instance": endpoint_instance2.name, "port": neg["defaultPort"], - "ipAddress": endpoint_instance2.network_interfaces[0].network_ip, + "ip_address": endpoint_instance2.network_interfaces[0].network_ip, }, ]) group = gcp.compute.NetworkEndpointGroup("group", diff --git a/sdk/python/pulumi_gcp/compute/network_firewall_policy_rule.py b/sdk/python/pulumi_gcp/compute/network_firewall_policy_rule.py index ab5a86f93b..fe22238a98 100644 --- a/sdk/python/pulumi_gcp/compute/network_firewall_policy_rule.py +++ b/sdk/python/pulumi_gcp/compute/network_firewall_policy_rule.py @@ -619,17 +619,17 @@ def __init__(__self__, rule_name="test-rule", target_service_accounts=["my@service-account.com"], match={ - "srcIpRanges": ["10.100.0.1/32"], - "srcFqdns": ["google.com"], - "srcRegionCodes": ["US"], - "srcThreatIntelligences": ["iplist-known-malicious-ips"], - "srcSecureTags": [{ + "src_ip_ranges": ["10.100.0.1/32"], + "src_fqdns": ["google.com"], + "src_region_codes": ["US"], + "src_threat_intelligences": ["iplist-known-malicious-ips"], + "src_secure_tags": [{ "name": basic_value.name.apply(lambda name: f"tagValues/{name}"), }], - "layer4Configs": [{ - "ipProtocol": "all", + "layer4_configs": [{ + "ip_protocol": "all", }], - "srcAddressGroups": [basic_global_networksecurity_address_group.id], + "src_address_groups": [basic_global_networksecurity_address_group.id], }) ``` @@ -737,17 +737,17 @@ def __init__(__self__, rule_name="test-rule", target_service_accounts=["my@service-account.com"], match={ - "srcIpRanges": ["10.100.0.1/32"], - "srcFqdns": ["google.com"], - "srcRegionCodes": ["US"], - "srcThreatIntelligences": ["iplist-known-malicious-ips"], - "srcSecureTags": [{ + "src_ip_ranges": ["10.100.0.1/32"], + "src_fqdns": ["google.com"], + "src_region_codes": ["US"], + "src_threat_intelligences": ["iplist-known-malicious-ips"], + "src_secure_tags": [{ "name": basic_value.name.apply(lambda name: f"tagValues/{name}"), }], - "layer4Configs": [{ - "ipProtocol": "all", + "layer4_configs": [{ + "ip_protocol": "all", }], - "srcAddressGroups": [basic_global_networksecurity_address_group.id], + "src_address_groups": [basic_global_networksecurity_address_group.id], }) ``` diff --git a/sdk/python/pulumi_gcp/compute/network_peering_routes_config.py b/sdk/python/pulumi_gcp/compute/network_peering_routes_config.py index d997e4c227..595f41e56c 100644 --- a/sdk/python/pulumi_gcp/compute/network_peering_routes_config.py +++ b/sdk/python/pulumi_gcp/compute/network_peering_routes_config.py @@ -274,12 +274,12 @@ def __init__(__self__, private_ip_google_access=True, secondary_ip_ranges=[ { - "rangeName": "pod", - "ipCidrRange": "10.0.0.0/19", + "range_name": "pod", + "ip_cidr_range": "10.0.0.0/19", }, { - "rangeName": "svc", - "ipCidrRange": "10.0.32.0/22", + "range_name": "svc", + "ip_cidr_range": "10.0.32.0/22", }, ]) private_cluster = gcp.container.Cluster("private_cluster", @@ -289,14 +289,14 @@ def __init__(__self__, network=container_network.name, subnetwork=container_subnetwork.name, private_cluster_config={ - "enablePrivateEndpoint": True, - "enablePrivateNodes": True, - "masterIpv4CidrBlock": "10.42.0.0/28", + "enable_private_endpoint": True, + "enable_private_nodes": True, + "master_ipv4_cidr_block": "10.42.0.0/28", }, master_authorized_networks_config={}, ip_allocation_policy={ - "clusterSecondaryRangeName": container_subnetwork.secondary_ip_ranges[0].range_name, - "servicesSecondaryRangeName": container_subnetwork.secondary_ip_ranges[1].range_name, + "cluster_secondary_range_name": container_subnetwork.secondary_ip_ranges[0].range_name, + "services_secondary_range_name": container_subnetwork.secondary_ip_ranges[1].range_name, }, deletion_protection=True) peering_gke_routes = gcp.compute.NetworkPeeringRoutesConfig("peering_gke_routes", @@ -407,12 +407,12 @@ def __init__(__self__, private_ip_google_access=True, secondary_ip_ranges=[ { - "rangeName": "pod", - "ipCidrRange": "10.0.0.0/19", + "range_name": "pod", + "ip_cidr_range": "10.0.0.0/19", }, { - "rangeName": "svc", - "ipCidrRange": "10.0.32.0/22", + "range_name": "svc", + "ip_cidr_range": "10.0.32.0/22", }, ]) private_cluster = gcp.container.Cluster("private_cluster", @@ -422,14 +422,14 @@ def __init__(__self__, network=container_network.name, subnetwork=container_subnetwork.name, private_cluster_config={ - "enablePrivateEndpoint": True, - "enablePrivateNodes": True, - "masterIpv4CidrBlock": "10.42.0.0/28", + "enable_private_endpoint": True, + "enable_private_nodes": True, + "master_ipv4_cidr_block": "10.42.0.0/28", }, master_authorized_networks_config={}, ip_allocation_policy={ - "clusterSecondaryRangeName": container_subnetwork.secondary_ip_ranges[0].range_name, - "servicesSecondaryRangeName": container_subnetwork.secondary_ip_ranges[1].range_name, + "cluster_secondary_range_name": container_subnetwork.secondary_ip_ranges[0].range_name, + "services_secondary_range_name": container_subnetwork.secondary_ip_ranges[1].range_name, }, deletion_protection=True) peering_gke_routes = gcp.compute.NetworkPeeringRoutesConfig("peering_gke_routes", diff --git a/sdk/python/pulumi_gcp/compute/node_group.py b/sdk/python/pulumi_gcp/compute/node_group.py index 289548ad91..99031a0a64 100644 --- a/sdk/python/pulumi_gcp/compute/node_group.py +++ b/sdk/python/pulumi_gcp/compute/node_group.py @@ -565,14 +565,14 @@ def __init__(__self__, description="example google_compute_node_group for Google Provider", maintenance_policy="RESTART_IN_PLACE", maintenance_window={ - "startTime": "08:00", + "start_time": "08:00", }, initial_size=1, node_template=soletenant_tmpl.id, autoscaling_policy={ "mode": "ONLY_SCALE_OUT", - "minNodes": 1, - "maxNodes": 10, + "min_nodes": 1, + "max_nodes": 10, }) ``` ### Node Group Share Settings @@ -596,10 +596,10 @@ def __init__(__self__, initial_size=1, node_template=soletenant_tmpl.id, share_settings={ - "shareType": "SPECIFIC_PROJECTS", - "projectMaps": [{ + "share_type": "SPECIFIC_PROJECTS", + "project_maps": [{ "id": guest_project.project_id, - "projectId": guest_project.project_id, + "project_id": guest_project.project_id, }], }) ``` @@ -733,14 +733,14 @@ def __init__(__self__, description="example google_compute_node_group for Google Provider", maintenance_policy="RESTART_IN_PLACE", maintenance_window={ - "startTime": "08:00", + "start_time": "08:00", }, initial_size=1, node_template=soletenant_tmpl.id, autoscaling_policy={ "mode": "ONLY_SCALE_OUT", - "minNodes": 1, - "maxNodes": 10, + "min_nodes": 1, + "max_nodes": 10, }) ``` ### Node Group Share Settings @@ -764,10 +764,10 @@ def __init__(__self__, initial_size=1, node_template=soletenant_tmpl.id, share_settings={ - "shareType": "SPECIFIC_PROJECTS", - "projectMaps": [{ + "share_type": "SPECIFIC_PROJECTS", + "project_maps": [{ "id": guest_project.project_id, - "projectId": guest_project.project_id, + "project_id": guest_project.project_id, }], }) ``` diff --git a/sdk/python/pulumi_gcp/compute/organization_security_policy_association.py b/sdk/python/pulumi_gcp/compute/organization_security_policy_association.py index 090d38bc4e..9d99853ea2 100644 --- a/sdk/python/pulumi_gcp/compute/organization_security_policy_association.py +++ b/sdk/python/pulumi_gcp/compute/organization_security_policy_association.py @@ -193,17 +193,17 @@ def __init__(__self__, enable_logging=True, match={ "config": { - "srcIpRanges": [ + "src_ip_ranges": [ "192.168.0.0/16", "10.0.0.0/8", ], - "layer4Configs": [ + "layer4_configs": [ { - "ipProtocol": "tcp", + "ip_protocol": "tcp", "ports": ["22"], }, { - "ipProtocol": "icmp", + "ip_protocol": "icmp", }, ], }, @@ -272,17 +272,17 @@ def __init__(__self__, enable_logging=True, match={ "config": { - "srcIpRanges": [ + "src_ip_ranges": [ "192.168.0.0/16", "10.0.0.0/8", ], - "layer4Configs": [ + "layer4_configs": [ { - "ipProtocol": "tcp", + "ip_protocol": "tcp", "ports": ["22"], }, { - "ipProtocol": "icmp", + "ip_protocol": "icmp", }, ], }, diff --git a/sdk/python/pulumi_gcp/compute/organization_security_policy_rule.py b/sdk/python/pulumi_gcp/compute/organization_security_policy_rule.py index b7b90e21ce..32d122bc74 100644 --- a/sdk/python/pulumi_gcp/compute/organization_security_policy_rule.py +++ b/sdk/python/pulumi_gcp/compute/organization_security_policy_rule.py @@ -421,17 +421,17 @@ def __init__(__self__, enable_logging=True, match={ "config": { - "srcIpRanges": [ + "src_ip_ranges": [ "192.168.0.0/16", "10.0.0.0/8", ], - "layer4Configs": [ + "layer4_configs": [ { - "ipProtocol": "tcp", + "ip_protocol": "tcp", "ports": ["22"], }, { - "ipProtocol": "icmp", + "ip_protocol": "icmp", }, ], }, @@ -504,17 +504,17 @@ def __init__(__self__, enable_logging=True, match={ "config": { - "srcIpRanges": [ + "src_ip_ranges": [ "192.168.0.0/16", "10.0.0.0/8", ], - "layer4Configs": [ + "layer4_configs": [ { - "ipProtocol": "tcp", + "ip_protocol": "tcp", "ports": ["22"], }, { - "ipProtocol": "icmp", + "ip_protocol": "icmp", }, ], }, diff --git a/sdk/python/pulumi_gcp/compute/packet_mirroring.py b/sdk/python/pulumi_gcp/compute/packet_mirroring.py index e223a41e57..35f70dc6d6 100644 --- a/sdk/python/pulumi_gcp/compute/packet_mirroring.py +++ b/sdk/python/pulumi_gcp/compute/packet_mirroring.py @@ -384,13 +384,13 @@ def __init__(__self__, default = gcp.compute.Network("default", name="my-network") mirror = gcp.compute.Instance("mirror", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "network": default.id, }], name="my-instance", machine_type="e2-medium", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }) @@ -435,8 +435,8 @@ def __init__(__self__, }], }, filter={ - "ipProtocols": ["tcp"], - "cidrRanges": ["0.0.0.0/0"], + "ip_protocols": ["tcp"], + "cidr_ranges": ["0.0.0.0/0"], "direction": "BOTH", }) ``` @@ -519,13 +519,13 @@ def __init__(__self__, default = gcp.compute.Network("default", name="my-network") mirror = gcp.compute.Instance("mirror", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "network": default.id, }], name="my-instance", machine_type="e2-medium", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }) @@ -570,8 +570,8 @@ def __init__(__self__, }], }, filter={ - "ipProtocols": ["tcp"], - "cidrRanges": ["0.0.0.0/0"], + "ip_protocols": ["tcp"], + "cidr_ranges": ["0.0.0.0/0"], "direction": "BOTH", }) ``` diff --git a/sdk/python/pulumi_gcp/compute/per_instance_config.py b/sdk/python/pulumi_gcp/compute/per_instance_config.py index f6e746b4d2..f02d58d4bf 100644 --- a/sdk/python/pulumi_gcp/compute/per_instance_config.py +++ b/sdk/python/pulumi_gcp/compute/per_instance_config.py @@ -437,8 +437,8 @@ def __init__(__self__, "bar", ], disks=[{ - "sourceImage": my_image.self_link, - "autoDelete": True, + "source_image": my_image.self_link, + "auto_delete": True, "boot": True, }], network_interfaces=[{ @@ -456,7 +456,7 @@ def __init__(__self__, name="my-igm", versions=[{ "name": "prod", - "instanceTemplate": igm_basic.self_link, + "instance_template": igm_basic.self_link, }], base_instance_name="igm-no-tp", zone="us-central1-c", @@ -477,7 +477,7 @@ def __init__(__self__, "instance_template": igm_basic.self_link, }, "disks": [{ - "deviceName": "my-stateful-disk", + "device_name": "my-stateful-disk", "source": default.id, "mode": "READ_ONLY", }], @@ -579,8 +579,8 @@ def __init__(__self__, "bar", ], disks=[{ - "sourceImage": my_image.self_link, - "autoDelete": True, + "source_image": my_image.self_link, + "auto_delete": True, "boot": True, }], network_interfaces=[{ @@ -598,7 +598,7 @@ def __init__(__self__, name="my-igm", versions=[{ "name": "prod", - "instanceTemplate": igm_basic.self_link, + "instance_template": igm_basic.self_link, }], base_instance_name="igm-no-tp", zone="us-central1-c", @@ -619,7 +619,7 @@ def __init__(__self__, "instance_template": igm_basic.self_link, }, "disks": [{ - "deviceName": "my-stateful-disk", + "device_name": "my-stateful-disk", "source": default.id, "mode": "READ_ONLY", }], diff --git a/sdk/python/pulumi_gcp/compute/region_autoscaler.py b/sdk/python/pulumi_gcp/compute/region_autoscaler.py index 7403981a39..e70b3ad218 100644 --- a/sdk/python/pulumi_gcp/compute/region_autoscaler.py +++ b/sdk/python/pulumi_gcp/compute/region_autoscaler.py @@ -321,13 +321,13 @@ def __init__(__self__, name="my-instance-template", machine_type="e2-standard-4", disks=[{ - "sourceImage": "debian-cloud/debian-11", - "diskSizeGb": 250, + "source_image": "debian-cloud/debian-11", + "disk_size_gb": 250, }], network_interfaces=[{ "network": "default", - "accessConfigs": [{ - "networkTier": "PREMIUM", + "access_configs": [{ + "network_tier": "PREMIUM", }], }], service_account={ @@ -346,7 +346,7 @@ def __init__(__self__, name="my-region-igm", region="us-central1", versions=[{ - "instanceTemplate": foobar_instance_template.id, + "instance_template": foobar_instance_template.id, "name": "primary", }], target_pools=[foobar_target_pool.id], @@ -356,10 +356,10 @@ def __init__(__self__, region="us-central1", target=foobar_region_instance_group_manager.id, autoscaling_policy={ - "maxReplicas": 5, - "minReplicas": 1, - "cooldownPeriod": 60, - "cpuUtilization": { + "max_replicas": 5, + "min_replicas": 1, + "cooldown_period": 60, + "cpu_utilization": { "target": 0.5, }, }) @@ -445,13 +445,13 @@ def __init__(__self__, name="my-instance-template", machine_type="e2-standard-4", disks=[{ - "sourceImage": "debian-cloud/debian-11", - "diskSizeGb": 250, + "source_image": "debian-cloud/debian-11", + "disk_size_gb": 250, }], network_interfaces=[{ "network": "default", - "accessConfigs": [{ - "networkTier": "PREMIUM", + "access_configs": [{ + "network_tier": "PREMIUM", }], }], service_account={ @@ -470,7 +470,7 @@ def __init__(__self__, name="my-region-igm", region="us-central1", versions=[{ - "instanceTemplate": foobar_instance_template.id, + "instance_template": foobar_instance_template.id, "name": "primary", }], target_pools=[foobar_target_pool.id], @@ -480,10 +480,10 @@ def __init__(__self__, region="us-central1", target=foobar_region_instance_group_manager.id, autoscaling_policy={ - "maxReplicas": 5, - "minReplicas": 1, - "cooldownPeriod": 60, - "cpuUtilization": { + "max_replicas": 5, + "min_replicas": 1, + "cooldown_period": 60, + "cpu_utilization": { "target": 0.5, }, }) diff --git a/sdk/python/pulumi_gcp/compute/region_backend_service.py b/sdk/python/pulumi_gcp/compute/region_backend_service.py index a44c1d0ecb..b59d4ccbdb 100644 --- a/sdk/python/pulumi_gcp/compute/region_backend_service.py +++ b/sdk/python/pulumi_gcp/compute/region_backend_service.py @@ -1416,8 +1416,8 @@ def __init__(__self__, protocol="HTTP", load_balancing_scheme="EXTERNAL", iap={ - "oauth2ClientId": "abc", - "oauth2ClientSecret": "xyz", + "oauth2_client_id": "abc", + "oauth2_client_secret": "xyz", }) ``` ### Region Backend Service Cache @@ -1438,12 +1438,12 @@ def __init__(__self__, health_checks=default_region_health_check.id, enable_cdn=True, cdn_policy={ - "cacheMode": "CACHE_ALL_STATIC", - "defaultTtl": 3600, - "clientTtl": 7200, - "maxTtl": 10800, - "negativeCaching": True, - "signedUrlCacheMaxAgeSec": 7200, + "cache_mode": "CACHE_ALL_STATIC", + "default_ttl": 3600, + "client_ttl": 7200, + "max_ttl": 10800, + "negative_caching": True, + "signed_url_cache_max_age_sec": 7200, }, load_balancing_scheme="EXTERNAL", protocol="HTTP") @@ -1526,10 +1526,10 @@ def __init__(__self__, session_affinity="HTTP_COOKIE", protocol="HTTP", circuit_breakers={ - "maxConnections": 10, + "max_connections": 10, }, consistent_hash={ - "httpCookie": { + "http_cookie": { "ttl": { "seconds": 11, "nanos": 1111, @@ -1538,7 +1538,7 @@ def __init__(__self__, }, }, outlier_detection={ - "consecutiveErrors": 2, + "consecutive_errors": 2, }) ``` ### Region Backend Service Balancing Mode @@ -1566,8 +1566,8 @@ def __init__(__self__, "subnetwork": default_subnetwork.id, }], disks=[{ - "sourceImage": debian_image.self_link, - "autoDelete": True, + "source_image": debian_image.self_link, + "auto_delete": True, "boot": True, }], tags=[ @@ -1578,7 +1578,7 @@ def __init__(__self__, region="us-central1", name="rbs-rigm", versions=[{ - "instanceTemplate": instance_template.id, + "instance_template": instance_template.id, "name": "primary", }], base_instance_name="internal-glb", @@ -1587,14 +1587,14 @@ def __init__(__self__, region="us-central1", name="rbs-health-check", http_health_check={ - "portSpecification": "USE_SERVING_PORT", + "port_specification": "USE_SERVING_PORT", }) default = gcp.compute.RegionBackendService("default", load_balancing_scheme="INTERNAL_MANAGED", backends=[{ "group": rigm.instance_group, - "balancingMode": "UTILIZATION", - "capacityScaler": 1, + "balancing_mode": "UTILIZATION", + "capacity_scaler": 1, }], region="us-central1", name="region-service", @@ -1623,10 +1623,10 @@ def __init__(__self__, protocol="TCP", load_balancing_scheme="EXTERNAL", connection_tracking_policy={ - "trackingMode": "PER_SESSION", - "connectionPersistenceOnUnhealthyBackends": "NEVER_PERSIST", - "idleTimeoutSec": 60, - "enableStrongAffinity": True, + "tracking_mode": "PER_SESSION", + "connection_persistence_on_unhealthy_backends": "NEVER_PERSIST", + "idle_timeout_sec": 60, + "enable_strong_affinity": True, }) ``` @@ -1842,8 +1842,8 @@ def __init__(__self__, protocol="HTTP", load_balancing_scheme="EXTERNAL", iap={ - "oauth2ClientId": "abc", - "oauth2ClientSecret": "xyz", + "oauth2_client_id": "abc", + "oauth2_client_secret": "xyz", }) ``` ### Region Backend Service Cache @@ -1864,12 +1864,12 @@ def __init__(__self__, health_checks=default_region_health_check.id, enable_cdn=True, cdn_policy={ - "cacheMode": "CACHE_ALL_STATIC", - "defaultTtl": 3600, - "clientTtl": 7200, - "maxTtl": 10800, - "negativeCaching": True, - "signedUrlCacheMaxAgeSec": 7200, + "cache_mode": "CACHE_ALL_STATIC", + "default_ttl": 3600, + "client_ttl": 7200, + "max_ttl": 10800, + "negative_caching": True, + "signed_url_cache_max_age_sec": 7200, }, load_balancing_scheme="EXTERNAL", protocol="HTTP") @@ -1952,10 +1952,10 @@ def __init__(__self__, session_affinity="HTTP_COOKIE", protocol="HTTP", circuit_breakers={ - "maxConnections": 10, + "max_connections": 10, }, consistent_hash={ - "httpCookie": { + "http_cookie": { "ttl": { "seconds": 11, "nanos": 1111, @@ -1964,7 +1964,7 @@ def __init__(__self__, }, }, outlier_detection={ - "consecutiveErrors": 2, + "consecutive_errors": 2, }) ``` ### Region Backend Service Balancing Mode @@ -1992,8 +1992,8 @@ def __init__(__self__, "subnetwork": default_subnetwork.id, }], disks=[{ - "sourceImage": debian_image.self_link, - "autoDelete": True, + "source_image": debian_image.self_link, + "auto_delete": True, "boot": True, }], tags=[ @@ -2004,7 +2004,7 @@ def __init__(__self__, region="us-central1", name="rbs-rigm", versions=[{ - "instanceTemplate": instance_template.id, + "instance_template": instance_template.id, "name": "primary", }], base_instance_name="internal-glb", @@ -2013,14 +2013,14 @@ def __init__(__self__, region="us-central1", name="rbs-health-check", http_health_check={ - "portSpecification": "USE_SERVING_PORT", + "port_specification": "USE_SERVING_PORT", }) default = gcp.compute.RegionBackendService("default", load_balancing_scheme="INTERNAL_MANAGED", backends=[{ "group": rigm.instance_group, - "balancingMode": "UTILIZATION", - "capacityScaler": 1, + "balancing_mode": "UTILIZATION", + "capacity_scaler": 1, }], region="us-central1", name="region-service", @@ -2049,10 +2049,10 @@ def __init__(__self__, protocol="TCP", load_balancing_scheme="EXTERNAL", connection_tracking_policy={ - "trackingMode": "PER_SESSION", - "connectionPersistenceOnUnhealthyBackends": "NEVER_PERSIST", - "idleTimeoutSec": 60, - "enableStrongAffinity": True, + "tracking_mode": "PER_SESSION", + "connection_persistence_on_unhealthy_backends": "NEVER_PERSIST", + "idle_timeout_sec": 60, + "enable_strong_affinity": True, }) ``` diff --git a/sdk/python/pulumi_gcp/compute/region_disk_resource_policy_attachment.py b/sdk/python/pulumi_gcp/compute/region_disk_resource_policy_attachment.py index 20896ba941..751c548b1b 100644 --- a/sdk/python/pulumi_gcp/compute/region_disk_resource_policy_attachment.py +++ b/sdk/python/pulumi_gcp/compute/region_disk_resource_policy_attachment.py @@ -228,9 +228,9 @@ def __init__(__self__, region="us-central1", snapshot_schedule_policy={ "schedule": { - "dailySchedule": { - "daysInCycle": 1, - "startTime": "04:00", + "daily_schedule": { + "days_in_cycle": 1, + "start_time": "04:00", }, }, }) @@ -329,9 +329,9 @@ def __init__(__self__, region="us-central1", snapshot_schedule_policy={ "schedule": { - "dailySchedule": { - "daysInCycle": 1, - "startTime": "04:00", + "daily_schedule": { + "days_in_cycle": 1, + "start_time": "04:00", }, }, }) diff --git a/sdk/python/pulumi_gcp/compute/region_health_check.py b/sdk/python/pulumi_gcp/compute/region_health_check.py index 8818706506..d8e8807738 100644 --- a/sdk/python/pulumi_gcp/compute/region_health_check.py +++ b/sdk/python/pulumi_gcp/compute/region_health_check.py @@ -728,10 +728,10 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, tcp_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "request": "ARE YOU HEALTHY?", - "proxyHeader": "NONE", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -763,10 +763,10 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, ssl_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "request": "ARE YOU HEALTHY?", - "proxyHeader": "NONE", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -815,11 +815,11 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, http_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "host": "1.2.3.4", - "requestPath": "/mypath", - "proxyHeader": "NONE", + "request_path": "/mypath", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -851,11 +851,11 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, https_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "host": "1.2.3.4", - "requestPath": "/mypath", - "proxyHeader": "NONE", + "request_path": "/mypath", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -887,11 +887,11 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, http2_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "host": "1.2.3.4", - "requestPath": "/mypath", - "proxyHeader": "NONE", + "request_path": "/mypath", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -920,9 +920,9 @@ def __init__(__self__, timeout_sec=1, check_interval_sec=1, grpc_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", - "grpcServiceName": "testservice", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", + "grpc_service_name": "testservice", }) ``` @@ -1053,10 +1053,10 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, tcp_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "request": "ARE YOU HEALTHY?", - "proxyHeader": "NONE", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -1088,10 +1088,10 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, ssl_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "request": "ARE YOU HEALTHY?", - "proxyHeader": "NONE", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -1140,11 +1140,11 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, http_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "host": "1.2.3.4", - "requestPath": "/mypath", - "proxyHeader": "NONE", + "request_path": "/mypath", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -1176,11 +1176,11 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, https_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "host": "1.2.3.4", - "requestPath": "/mypath", - "proxyHeader": "NONE", + "request_path": "/mypath", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -1212,11 +1212,11 @@ def __init__(__self__, healthy_threshold=4, unhealthy_threshold=5, http2_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", "host": "1.2.3.4", - "requestPath": "/mypath", - "proxyHeader": "NONE", + "request_path": "/mypath", + "proxy_header": "NONE", "response": "I AM HEALTHY", }) ``` @@ -1245,9 +1245,9 @@ def __init__(__self__, timeout_sec=1, check_interval_sec=1, grpc_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", - "grpcServiceName": "testservice", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", + "grpc_service_name": "testservice", }) ``` diff --git a/sdk/python/pulumi_gcp/compute/region_instance_group_manager.py b/sdk/python/pulumi_gcp/compute/region_instance_group_manager.py index d11242b412..58bbbf7a4a 100644 --- a/sdk/python/pulumi_gcp/compute/region_instance_group_manager.py +++ b/sdk/python/pulumi_gcp/compute/region_instance_group_manager.py @@ -1107,7 +1107,7 @@ def __init__(__self__, healthy_threshold=2, unhealthy_threshold=10, http_health_check={ - "requestPath": "/healthz", + "request_path": "/healthz", "port": 8080, }) appserver = gcp.compute.RegionInstanceGroupManager("appserver", @@ -1119,7 +1119,7 @@ def __init__(__self__, "us-central1-f", ], versions=[{ - "instanceTemplate": appserver_google_compute_instance_template["selfLinkUnique"], + "instance_template": appserver_google_compute_instance_template["selfLinkUnique"], }], all_instances_config={ "metadata": { @@ -1136,8 +1136,8 @@ def __init__(__self__, "port": 8888, }], auto_healing_policies={ - "healthCheck": autohealing.id, - "initialDelaySec": 300, + "health_check": autohealing.id, + "initial_delay_sec": 300, }) ``` @@ -1153,11 +1153,11 @@ def __init__(__self__, target_size=5, versions=[ { - "instanceTemplate": appserver_google_compute_instance_template["selfLinkUnique"], + "instance_template": appserver_google_compute_instance_template["selfLinkUnique"], }, { - "instanceTemplate": appserver_canary["selfLinkUnique"], - "targetSize": { + "instance_template": appserver_canary["selfLinkUnique"], + "target_size": { "fixed": 1, }, }, @@ -1175,11 +1175,11 @@ def __init__(__self__, region="us-central1", target_size=5, versions=[{ - "instanceTemplate": sr_igm["selfLink"], + "instance_template": sr_igm["selfLink"], "name": "primary", }], standby_policy={ - "initialDelaySec": 50, + "initial_delay_sec": 50, "mode": "SCALE_OUT_POOL", }, target_suspended_size=1, @@ -1294,7 +1294,7 @@ def __init__(__self__, healthy_threshold=2, unhealthy_threshold=10, http_health_check={ - "requestPath": "/healthz", + "request_path": "/healthz", "port": 8080, }) appserver = gcp.compute.RegionInstanceGroupManager("appserver", @@ -1306,7 +1306,7 @@ def __init__(__self__, "us-central1-f", ], versions=[{ - "instanceTemplate": appserver_google_compute_instance_template["selfLinkUnique"], + "instance_template": appserver_google_compute_instance_template["selfLinkUnique"], }], all_instances_config={ "metadata": { @@ -1323,8 +1323,8 @@ def __init__(__self__, "port": 8888, }], auto_healing_policies={ - "healthCheck": autohealing.id, - "initialDelaySec": 300, + "health_check": autohealing.id, + "initial_delay_sec": 300, }) ``` @@ -1340,11 +1340,11 @@ def __init__(__self__, target_size=5, versions=[ { - "instanceTemplate": appserver_google_compute_instance_template["selfLinkUnique"], + "instance_template": appserver_google_compute_instance_template["selfLinkUnique"], }, { - "instanceTemplate": appserver_canary["selfLinkUnique"], - "targetSize": { + "instance_template": appserver_canary["selfLinkUnique"], + "target_size": { "fixed": 1, }, }, @@ -1362,11 +1362,11 @@ def __init__(__self__, region="us-central1", target_size=5, versions=[{ - "instanceTemplate": sr_igm["selfLink"], + "instance_template": sr_igm["selfLink"], "name": "primary", }], standby_policy={ - "initialDelaySec": 50, + "initial_delay_sec": 50, "mode": "SCALE_OUT_POOL", }, target_suspended_size=1, diff --git a/sdk/python/pulumi_gcp/compute/region_network_endpoint.py b/sdk/python/pulumi_gcp/compute/region_network_endpoint.py index 9602c4cb4a..d17f599648 100644 --- a/sdk/python/pulumi_gcp/compute/region_network_endpoint.py +++ b/sdk/python/pulumi_gcp/compute/region_network_endpoint.py @@ -407,14 +407,14 @@ def __init__(__self__, project="debian-cloud") default_instance = gcp.compute.Instance("default", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "subnetwork": default_subnetwork.id, }], name="instance", machine_type="e2-medium", zone="us-central1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": my_image.self_link, }, }) @@ -560,14 +560,14 @@ def __init__(__self__, project="debian-cloud") default_instance = gcp.compute.Instance("default", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "subnetwork": default_subnetwork.id, }], name="instance", machine_type="e2-medium", zone="us-central1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": my_image.self_link, }, }) 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 09ae678ca0..2887ad37a3 100644 --- a/sdk/python/pulumi_gcp/compute/region_network_endpoint_group.py +++ b/sdk/python/pulumi_gcp/compute/region_network_endpoint_group.py @@ -618,7 +618,7 @@ def __init__(__self__, }, traffics=[{ "percent": 100, - "latestRevision": True, + "latest_revision": True, }]) # Cloud Run Example cloudrun_neg = gcp.compute.RegionNetworkEndpointGroup("cloudrun_neg", @@ -651,7 +651,7 @@ def __init__(__self__, }, deployment={ "zip": { - "sourceUrl": 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}"), + "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}"), }, }, liveness_check={ @@ -664,19 +664,19 @@ def __init__(__self__, "port": "8080", }, handlers=[{ - "urlRegex": ".*\\\\/my-path\\\\/*", - "securityLevel": "SECURE_ALWAYS", + "url_regex": ".*\\\\/my-path\\\\/*", + "security_level": "SECURE_ALWAYS", "login": "LOGIN_REQUIRED", - "authFailAction": "AUTH_FAIL_ACTION_REDIRECT", - "staticFiles": { + "auth_fail_action": "AUTH_FAIL_ACTION_REDIRECT", + "static_files": { "path": "my-other-path", - "uploadPathRegex": ".*\\\\/my-path\\\\/*", + "upload_path_regex": ".*\\\\/my-path\\\\/*", }, }], automatic_scaling={ - "coolDownPeriod": "120s", - "cpuUtilization": { - "targetUtilization": 0.5, + "cool_down_period": "120s", + "cpu_utilization": { + "target_utilization": 0.5, }, }, delete_service_on_destroy=True) @@ -954,7 +954,7 @@ def __init__(__self__, }, traffics=[{ "percent": 100, - "latestRevision": True, + "latest_revision": True, }]) # Cloud Run Example cloudrun_neg = gcp.compute.RegionNetworkEndpointGroup("cloudrun_neg", @@ -987,7 +987,7 @@ def __init__(__self__, }, deployment={ "zip": { - "sourceUrl": 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}"), + "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}"), }, }, liveness_check={ @@ -1000,19 +1000,19 @@ def __init__(__self__, "port": "8080", }, handlers=[{ - "urlRegex": ".*\\\\/my-path\\\\/*", - "securityLevel": "SECURE_ALWAYS", + "url_regex": ".*\\\\/my-path\\\\/*", + "security_level": "SECURE_ALWAYS", "login": "LOGIN_REQUIRED", - "authFailAction": "AUTH_FAIL_ACTION_REDIRECT", - "staticFiles": { + "auth_fail_action": "AUTH_FAIL_ACTION_REDIRECT", + "static_files": { "path": "my-other-path", - "uploadPathRegex": ".*\\\\/my-path\\\\/*", + "upload_path_regex": ".*\\\\/my-path\\\\/*", }, }], automatic_scaling={ - "coolDownPeriod": "120s", - "cpuUtilization": { - "targetUtilization": 0.5, + "cool_down_period": "120s", + "cpu_utilization": { + "target_utilization": 0.5, }, }, delete_service_on_destroy=True) diff --git a/sdk/python/pulumi_gcp/compute/region_network_firewall_policy_rule.py b/sdk/python/pulumi_gcp/compute/region_network_firewall_policy_rule.py index b040cd6e82..fcb9c99bb0 100644 --- a/sdk/python/pulumi_gcp/compute/region_network_firewall_policy_rule.py +++ b/sdk/python/pulumi_gcp/compute/region_network_firewall_policy_rule.py @@ -654,17 +654,17 @@ def __init__(__self__, rule_name="test-rule", target_service_accounts=["my@service-account.com"], match={ - "srcIpRanges": ["10.100.0.1/32"], - "srcFqdns": ["example.com"], - "srcRegionCodes": ["US"], - "srcThreatIntelligences": ["iplist-known-malicious-ips"], - "layer4Configs": [{ - "ipProtocol": "all", + "src_ip_ranges": ["10.100.0.1/32"], + "src_fqdns": ["example.com"], + "src_region_codes": ["US"], + "src_threat_intelligences": ["iplist-known-malicious-ips"], + "layer4_configs": [{ + "ip_protocol": "all", }], - "srcSecureTags": [{ + "src_secure_tags": [{ "name": basic_value.name.apply(lambda name: f"tagValues/{name}"), }], - "srcAddressGroups": [basic_regional_networksecurity_address_group.id], + "src_address_groups": [basic_regional_networksecurity_address_group.id], }) ``` @@ -781,17 +781,17 @@ def __init__(__self__, rule_name="test-rule", target_service_accounts=["my@service-account.com"], match={ - "srcIpRanges": ["10.100.0.1/32"], - "srcFqdns": ["example.com"], - "srcRegionCodes": ["US"], - "srcThreatIntelligences": ["iplist-known-malicious-ips"], - "layer4Configs": [{ - "ipProtocol": "all", + "src_ip_ranges": ["10.100.0.1/32"], + "src_fqdns": ["example.com"], + "src_region_codes": ["US"], + "src_threat_intelligences": ["iplist-known-malicious-ips"], + "layer4_configs": [{ + "ip_protocol": "all", }], - "srcSecureTags": [{ + "src_secure_tags": [{ "name": basic_value.name.apply(lambda name: f"tagValues/{name}"), }], - "srcAddressGroups": [basic_regional_networksecurity_address_group.id], + "src_address_groups": [basic_regional_networksecurity_address_group.id], }) ``` diff --git a/sdk/python/pulumi_gcp/compute/region_per_instance_config.py b/sdk/python/pulumi_gcp/compute/region_per_instance_config.py index df894d06a5..da01798ecb 100644 --- a/sdk/python/pulumi_gcp/compute/region_per_instance_config.py +++ b/sdk/python/pulumi_gcp/compute/region_per_instance_config.py @@ -438,8 +438,8 @@ def __init__(__self__, "bar", ], disks=[{ - "sourceImage": my_image.self_link, - "autoDelete": True, + "source_image": my_image.self_link, + "auto_delete": True, "boot": True, }], network_interfaces=[{ @@ -457,12 +457,12 @@ def __init__(__self__, name="my-rigm", versions=[{ "name": "prod", - "instanceTemplate": igm_basic.self_link, + "instance_template": igm_basic.self_link, }], update_policy={ "type": "OPPORTUNISTIC", - "instanceRedistributionType": "NONE", - "minimalAction": "RESTART", + "instance_redistribution_type": "NONE", + "minimal_action": "RESTART", }, base_instance_name="rigm", region="us-central1", @@ -483,7 +483,7 @@ def __init__(__self__, "instance_template": igm_basic.self_link, }, "disks": [{ - "deviceName": "my-stateful-disk", + "device_name": "my-stateful-disk", "source": default.id, "mode": "READ_ONLY", }], @@ -586,8 +586,8 @@ def __init__(__self__, "bar", ], disks=[{ - "sourceImage": my_image.self_link, - "autoDelete": True, + "source_image": my_image.self_link, + "auto_delete": True, "boot": True, }], network_interfaces=[{ @@ -605,12 +605,12 @@ def __init__(__self__, name="my-rigm", versions=[{ "name": "prod", - "instanceTemplate": igm_basic.self_link, + "instance_template": igm_basic.self_link, }], update_policy={ "type": "OPPORTUNISTIC", - "instanceRedistributionType": "NONE", - "minimalAction": "RESTART", + "instance_redistribution_type": "NONE", + "minimal_action": "RESTART", }, base_instance_name="rigm", region="us-central1", @@ -631,7 +631,7 @@ def __init__(__self__, "instance_template": igm_basic.self_link, }, "disks": [{ - "deviceName": "my-stateful-disk", + "device_name": "my-stateful-disk", "source": default.id, "mode": "READ_ONLY", }], diff --git a/sdk/python/pulumi_gcp/compute/region_security_policy.py b/sdk/python/pulumi_gcp/compute/region_security_policy.py index 27563a200e..d8bfcf94a9 100644 --- a/sdk/python/pulumi_gcp/compute/region_security_policy.py +++ b/sdk/python/pulumi_gcp/compute/region_security_policy.py @@ -422,7 +422,7 @@ def __init__(__self__, description="with ddos protection config", type="CLOUD_ARMOR_NETWORK", ddos_protection_config={ - "ddosProtection": "ADVANCED_PREVIEW", + "ddos_protection": "ADVANCED_PREVIEW", }) ``` ### Region Security Policy With User Defined Fields @@ -539,7 +539,7 @@ def __init__(__self__, description="with ddos protection config", type="CLOUD_ARMOR_NETWORK", ddos_protection_config={ - "ddosProtection": "ADVANCED_PREVIEW", + "ddos_protection": "ADVANCED_PREVIEW", }) ``` ### Region Security Policy With 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 index a9d690d9a7..066e479753 100644 --- a/sdk/python/pulumi_gcp/compute/region_security_policy_rule.py +++ b/sdk/python/pulumi_gcp/compute/region_security_policy_rule.py @@ -515,9 +515,9 @@ def __init__(__self__, description="new rule", priority=100, match={ - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["10.10.0.0/16"], + "src_ip_ranges": ["10.10.0.0/16"], }, }, action="allow", @@ -540,9 +540,9 @@ def __init__(__self__, description="new rule one", priority=100, match={ - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["10.10.0.0/16"], + "src_ip_ranges": ["10.10.0.0/16"], }, }, action="allow", @@ -553,9 +553,9 @@ def __init__(__self__, description="new rule two", priority=101, match={ - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": [ + "src_ip_ranges": [ "192.168.0.0/16", "10.0.0.0/8", ], @@ -581,22 +581,22 @@ def __init__(__self__, description="new rule", priority=100, match={ - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["10.10.0.0/16"], + "src_ip_ranges": ["10.10.0.0/16"], }, }, preconfigured_waf_config={ "exclusions": [ { - "requestUris": [{ + "request_uris": [{ "operator": "STARTS_WITH", "value": "/admin", }], - "targetRuleSet": "rce-stable", + "target_rule_set": "rce-stable", }, { - "requestQueryParams": [ + "request_query_params": [ { "operator": "CONTAINS", "value": "password", @@ -610,8 +610,8 @@ def __init__(__self__, "value": "description", }, ], - "targetRuleSet": "xss-stable", - "targetRuleIds": [ + "target_rule_set": "xss-stable", + "target_rule_ids": [ "owasp-crs-v030001-id941330-xss", "owasp-crs-v030001-id941340-xss", ], @@ -634,7 +634,7 @@ def __init__(__self__, description="policy for activating network DDoS protection for the desired region", type="CLOUD_ARMOR_NETWORK", ddos_protection_config={ - "ddosProtection": "ADVANCED_PREVIEW", + "ddos_protection": "ADVANCED_PREVIEW", }) edge_sec_service = gcp.compute.NetworkEdgeSecurityService("edge_sec_service", region="us-west2", @@ -661,8 +661,8 @@ def __init__(__self__, description="custom rule for network match", priority=100, network_match={ - "srcIpRanges": ["10.10.0.0/16"], - "userDefinedFields": [{ + "src_ip_ranges": ["10.10.0.0/16"], + "user_defined_fields": [{ "name": "SIG1_AT_0", "values": ["0x8F00"], }], @@ -765,9 +765,9 @@ def __init__(__self__, description="new rule", priority=100, match={ - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["10.10.0.0/16"], + "src_ip_ranges": ["10.10.0.0/16"], }, }, action="allow", @@ -790,9 +790,9 @@ def __init__(__self__, description="new rule one", priority=100, match={ - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["10.10.0.0/16"], + "src_ip_ranges": ["10.10.0.0/16"], }, }, action="allow", @@ -803,9 +803,9 @@ def __init__(__self__, description="new rule two", priority=101, match={ - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": [ + "src_ip_ranges": [ "192.168.0.0/16", "10.0.0.0/8", ], @@ -831,22 +831,22 @@ def __init__(__self__, description="new rule", priority=100, match={ - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["10.10.0.0/16"], + "src_ip_ranges": ["10.10.0.0/16"], }, }, preconfigured_waf_config={ "exclusions": [ { - "requestUris": [{ + "request_uris": [{ "operator": "STARTS_WITH", "value": "/admin", }], - "targetRuleSet": "rce-stable", + "target_rule_set": "rce-stable", }, { - "requestQueryParams": [ + "request_query_params": [ { "operator": "CONTAINS", "value": "password", @@ -860,8 +860,8 @@ def __init__(__self__, "value": "description", }, ], - "targetRuleSet": "xss-stable", - "targetRuleIds": [ + "target_rule_set": "xss-stable", + "target_rule_ids": [ "owasp-crs-v030001-id941330-xss", "owasp-crs-v030001-id941340-xss", ], @@ -884,7 +884,7 @@ def __init__(__self__, description="policy for activating network DDoS protection for the desired region", type="CLOUD_ARMOR_NETWORK", ddos_protection_config={ - "ddosProtection": "ADVANCED_PREVIEW", + "ddos_protection": "ADVANCED_PREVIEW", }) edge_sec_service = gcp.compute.NetworkEdgeSecurityService("edge_sec_service", region="us-west2", @@ -911,8 +911,8 @@ def __init__(__self__, description="custom rule for network match", priority=100, network_match={ - "srcIpRanges": ["10.10.0.0/16"], - "userDefinedFields": [{ + "src_ip_ranges": ["10.10.0.0/16"], + "user_defined_fields": [{ "name": "SIG1_AT_0", "values": ["0x8F00"], }], diff --git a/sdk/python/pulumi_gcp/compute/region_target_http_proxy.py b/sdk/python/pulumi_gcp/compute/region_target_http_proxy.py index 29fbd19829..93986006d9 100644 --- a/sdk/python/pulumi_gcp/compute/region_target_http_proxy.py +++ b/sdk/python/pulumi_gcp/compute/region_target_http_proxy.py @@ -335,12 +335,12 @@ def __init__(__self__, default_service=default_region_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_region_backend_service.id, - "pathRules": [{ + "default_service": default_region_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_region_backend_service.id, }], @@ -360,8 +360,8 @@ def __init__(__self__, region="us-central1", name="url-map", default_url_redirect={ - "httpsRedirect": True, - "stripQuery": False, + "https_redirect": True, + "strip_query": False, }) default = gcp.compute.RegionTargetHttpProxy("default", region="us-central1", @@ -462,12 +462,12 @@ def __init__(__self__, default_service=default_region_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_region_backend_service.id, - "pathRules": [{ + "default_service": default_region_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_region_backend_service.id, }], @@ -487,8 +487,8 @@ def __init__(__self__, region="us-central1", name="url-map", default_url_redirect={ - "httpsRedirect": True, - "stripQuery": False, + "https_redirect": True, + "strip_query": False, }) default = gcp.compute.RegionTargetHttpProxy("default", region="us-central1", diff --git a/sdk/python/pulumi_gcp/compute/region_target_https_proxy.py b/sdk/python/pulumi_gcp/compute/region_target_https_proxy.py index 2e643b87cb..c9bd255f51 100644 --- a/sdk/python/pulumi_gcp/compute/region_target_https_proxy.py +++ b/sdk/python/pulumi_gcp/compute/region_target_https_proxy.py @@ -530,12 +530,12 @@ def __init__(__self__, default_service=default_region_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_region_backend_service.id, - "pathRules": [{ + "default_service": default_region_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_region_backend_service.id, }], @@ -559,11 +559,11 @@ def __init__(__self__, name="my-trust-config", description="sample description for trust config", trust_stores=[{ - "trustAnchors": [{ - "pemCertificate": std.file(input="test-fixtures/ca_cert.pem").result, + "trust_anchors": [{ + "pem_certificate": std.file(input="test-fixtures/ca_cert.pem").result, }], - "intermediateCas": [{ - "pemCertificate": std.file(input="test-fixtures/ca_cert.pem").result, + "intermediate_cas": [{ + "pem_certificate": std.file(input="test-fixtures/ca_cert.pem").result, }], }], labels={ @@ -575,8 +575,8 @@ def __init__(__self__, description="my description", allow_open=False, mtls_policy={ - "clientValidationMode": "REJECT_INVALID", - "clientValidationTrustConfig": default_trust_config.name.apply(lambda name: f"projects/{project.number}/locations/us-central1/trustConfigs/{name}"), + "client_validation_mode": "REJECT_INVALID", + "client_validation_trust_config": default_trust_config.name.apply(lambda name: f"projects/{project.number}/locations/us-central1/trustConfigs/{name}"), }) default_region_ssl_certificate = gcp.compute.RegionSslCertificate("default", region="us-central1", @@ -606,12 +606,12 @@ def __init__(__self__, default_service=default_region_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_region_backend_service.id, - "pathRules": [{ + "default_service": default_region_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_region_backend_service.id, }], @@ -634,8 +634,8 @@ def __init__(__self__, name="my-certificate", location="us-central1", self_managed={ - "pemCertificate": std.file(input="test-fixtures/cert.pem").result, - "pemPrivateKey": std.file(input="test-fixtures/private-key.pem").result, + "pem_certificate": std.file(input="test-fixtures/cert.pem").result, + "pem_private_key": std.file(input="test-fixtures/private-key.pem").result, }) default_region_backend_service = gcp.compute.RegionBackendService("default", name="backend-service", @@ -771,12 +771,12 @@ def __init__(__self__, default_service=default_region_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_region_backend_service.id, - "pathRules": [{ + "default_service": default_region_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_region_backend_service.id, }], @@ -800,11 +800,11 @@ def __init__(__self__, name="my-trust-config", description="sample description for trust config", trust_stores=[{ - "trustAnchors": [{ - "pemCertificate": std.file(input="test-fixtures/ca_cert.pem").result, + "trust_anchors": [{ + "pem_certificate": std.file(input="test-fixtures/ca_cert.pem").result, }], - "intermediateCas": [{ - "pemCertificate": std.file(input="test-fixtures/ca_cert.pem").result, + "intermediate_cas": [{ + "pem_certificate": std.file(input="test-fixtures/ca_cert.pem").result, }], }], labels={ @@ -816,8 +816,8 @@ def __init__(__self__, description="my description", allow_open=False, mtls_policy={ - "clientValidationMode": "REJECT_INVALID", - "clientValidationTrustConfig": default_trust_config.name.apply(lambda name: f"projects/{project.number}/locations/us-central1/trustConfigs/{name}"), + "client_validation_mode": "REJECT_INVALID", + "client_validation_trust_config": default_trust_config.name.apply(lambda name: f"projects/{project.number}/locations/us-central1/trustConfigs/{name}"), }) default_region_ssl_certificate = gcp.compute.RegionSslCertificate("default", region="us-central1", @@ -847,12 +847,12 @@ def __init__(__self__, default_service=default_region_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_region_backend_service.id, - "pathRules": [{ + "default_service": default_region_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_region_backend_service.id, }], @@ -875,8 +875,8 @@ def __init__(__self__, name="my-certificate", location="us-central1", self_managed={ - "pemCertificate": std.file(input="test-fixtures/cert.pem").result, - "pemPrivateKey": std.file(input="test-fixtures/private-key.pem").result, + "pem_certificate": std.file(input="test-fixtures/cert.pem").result, + "pem_private_key": std.file(input="test-fixtures/private-key.pem").result, }) default_region_backend_service = gcp.compute.RegionBackendService("default", name="backend-service", diff --git a/sdk/python/pulumi_gcp/compute/region_url_map.py b/sdk/python/pulumi_gcp/compute/region_url_map.py index 16d93bfdf6..452e5cddf5 100644 --- a/sdk/python/pulumi_gcp/compute/region_url_map.py +++ b/sdk/python/pulumi_gcp/compute/region_url_map.py @@ -571,7 +571,7 @@ def __init__(__self__, timeout_sec=1, http_health_check={ "port": 80, - "requestPath": "/", + "request_path": "/", }) login = gcp.compute.RegionBackendService("login", region="us-central1", @@ -594,12 +594,12 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "pathRules": [ + "default_service": home.id, + "path_rules": [ { "paths": ["/home"], "service": home.id, @@ -629,7 +629,7 @@ def __init__(__self__, timeout_sec=1, http_health_check={ "port": 80, - "requestPath": "/", + "request_path": "/", }) login = gcp.compute.RegionBackendService("login", region="us-central1", @@ -650,98 +650,98 @@ def __init__(__self__, name="regionurlmap", description="a description", default_route_action={ - "retryPolicy": { - "retryConditions": [ + "retry_policy": { + "retry_conditions": [ "5xx", "gateway-error", ], - "numRetries": 3, - "perTryTimeout": { + "num_retries": 3, + "per_try_timeout": { "seconds": "0", "nanos": 500, }, }, - "requestMirrorPolicy": { - "backendService": home.id, + "request_mirror_policy": { + "backend_service": home.id, }, - "weightedBackendServices": [ + "weighted_backend_services": [ { - "backendService": login.id, + "backend_service": login.id, "weight": 200, - "headerAction": { - "requestHeadersToAdds": [{ - "headerName": "foo-request-1", - "headerValue": "bar", + "header_action": { + "request_headers_to_adds": [{ + "header_name": "foo-request-1", + "header_value": "bar", "replace": True, }], - "requestHeadersToRemoves": ["fizz"], - "responseHeadersToAdds": [{ - "headerName": "foo-response-1", - "headerValue": "bar", + "request_headers_to_removes": ["fizz"], + "response_headers_to_adds": [{ + "header_name": "foo-response-1", + "header_value": "bar", "replace": True, }], - "responseHeadersToRemoves": ["buzz"], + "response_headers_to_removes": ["buzz"], }, }, { - "backendService": home.id, + "backend_service": home.id, "weight": 100, - "headerAction": { - "requestHeadersToAdds": [ + "header_action": { + "request_headers_to_adds": [ { - "headerName": "foo-request-1", - "headerValue": "bar", + "header_name": "foo-request-1", + "header_value": "bar", "replace": True, }, { - "headerName": "foo-request-2", - "headerValue": "bar", + "header_name": "foo-request-2", + "header_value": "bar", "replace": True, }, ], - "requestHeadersToRemoves": ["fizz"], - "responseHeadersToAdds": [ + "request_headers_to_removes": ["fizz"], + "response_headers_to_adds": [ { - "headerName": "foo-response-2", - "headerValue": "bar", + "header_name": "foo-response-2", + "header_value": "bar", "replace": True, }, { - "headerName": "foo-response-1", - "headerValue": "bar", + "header_name": "foo-response-1", + "header_value": "bar", "replace": True, }, ], - "responseHeadersToRemoves": ["buzz"], + "response_headers_to_removes": ["buzz"], }, }, ], - "urlRewrite": { - "hostRewrite": "dev.example.com", - "pathPrefixRewrite": "/v1/api/", + "url_rewrite": { + "host_rewrite": "dev.example.com", + "path_prefix_rewrite": "/v1/api/", }, - "corsPolicy": { + "cors_policy": { "disabled": False, - "allowCredentials": True, - "allowHeaders": ["foobar"], - "allowMethods": [ + "allow_credentials": True, + "allow_headers": ["foobar"], + "allow_methods": [ "GET", "POST", ], - "allowOrigins": ["example.com"], - "exposeHeaders": ["foobar"], - "maxAge": 60, + "allow_origins": ["example.com"], + "expose_headers": ["foobar"], + "max_age": 60, }, - "faultInjectionPolicy": { + "fault_injection_policy": { "delay": { - "fixedDelay": { + "fixed_delay": { "seconds": "0", "nanos": 500, }, "percentage": 0.5, }, "abort": { - "httpStatus": 500, + "http_status": 500, "percentage": 0.5, }, }, @@ -752,12 +752,12 @@ def __init__(__self__, }, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "pathRules": [ + "default_service": home.id, + "path_rules": [ { "paths": ["/home"], "service": home.id, @@ -797,45 +797,45 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "pathRules": [{ + "default_service": home.id, + "path_rules": [{ "paths": ["/home"], - "routeAction": { - "corsPolicy": { - "allowCredentials": True, - "allowHeaders": ["Allowed content"], - "allowMethods": ["GET"], - "allowOrigins": ["Allowed origin"], - "exposeHeaders": ["Exposed header"], - "maxAge": 30, + "route_action": { + "cors_policy": { + "allow_credentials": True, + "allow_headers": ["Allowed content"], + "allow_methods": ["GET"], + "allow_origins": ["Allowed origin"], + "expose_headers": ["Exposed header"], + "max_age": 30, "disabled": False, }, - "faultInjectionPolicy": { + "fault_injection_policy": { "abort": { - "httpStatus": 234, + "http_status": 234, "percentage": 5.6, }, "delay": { - "fixedDelay": { + "fixed_delay": { "seconds": "0", "nanos": 50000, }, "percentage": 7.8, }, }, - "requestMirrorPolicy": { - "backendService": home.id, + "request_mirror_policy": { + "backend_service": home.id, }, - "retryPolicy": { - "numRetries": 4, - "perTryTimeout": { + "retry_policy": { + "num_retries": 4, + "per_try_timeout": { "seconds": "30", }, - "retryConditions": [ + "retry_conditions": [ "5xx", "deadline-exceeded", ], @@ -844,24 +844,24 @@ def __init__(__self__, "seconds": "20", "nanos": 750000000, }, - "urlRewrite": { - "hostRewrite": "dev.example.com", - "pathPrefixRewrite": "/v1/api/", + "url_rewrite": { + "host_rewrite": "dev.example.com", + "path_prefix_rewrite": "/v1/api/", }, - "weightedBackendServices": [{ - "backendService": home.id, + "weighted_backend_services": [{ + "backend_service": home.id, "weight": 400, - "headerAction": { - "requestHeadersToRemoves": ["RemoveMe"], - "requestHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "header_action": { + "request_headers_to_removes": ["RemoveMe"], + "request_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": True, }], - "responseHeadersToRemoves": ["RemoveMe"], - "responseHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "response_headers_to_removes": ["RemoveMe"], + "response_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": False, }], }, @@ -898,20 +898,20 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "pathRules": [{ + "default_service": home.id, + "path_rules": [{ "paths": ["/home"], - "routeAction": { - "retryPolicy": { - "numRetries": 4, - "perTryTimeout": { + "route_action": { + "retry_policy": { + "num_retries": 4, + "per_try_timeout": { "seconds": "30", }, - "retryConditions": [ + "retry_conditions": [ "5xx", "deadline-exceeded", ], @@ -920,17 +920,17 @@ def __init__(__self__, "seconds": "20", "nanos": 750000000, }, - "urlRewrite": { - "hostRewrite": "dev.example.com", - "pathPrefixRewrite": "/v1/api/", + "url_rewrite": { + "host_rewrite": "dev.example.com", + "path_prefix_rewrite": "/v1/api/", }, - "weightedBackendServices": [{ - "backendService": home.id, + "weighted_backend_services": [{ + "backend_service": home.id, "weight": 400, - "headerAction": { - "responseHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "header_action": { + "response_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": False, }], }, @@ -967,53 +967,53 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "routeRules": [{ + "default_service": home.id, + "route_rules": [{ "priority": 1, - "headerAction": { - "requestHeadersToRemoves": ["RemoveMe2"], - "requestHeadersToAdds": [{ - "headerName": "AddSomethingElse", - "headerValue": "MyOtherValue", + "header_action": { + "request_headers_to_removes": ["RemoveMe2"], + "request_headers_to_adds": [{ + "header_name": "AddSomethingElse", + "header_value": "MyOtherValue", "replace": True, }], - "responseHeadersToRemoves": ["RemoveMe3"], - "responseHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "response_headers_to_removes": ["RemoveMe3"], + "response_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": False, }], }, - "matchRules": [{ - "fullPathMatch": "a full path", - "headerMatches": [{ - "headerName": "someheader", - "exactMatch": "match this exactly", - "invertMatch": True, + "match_rules": [{ + "full_path_match": "a full path", + "header_matches": [{ + "header_name": "someheader", + "exact_match": "match this exactly", + "invert_match": True, }], - "ignoreCase": True, - "metadataFilters": [{ - "filterMatchCriteria": "MATCH_ANY", - "filterLabels": [{ + "ignore_case": True, + "metadata_filters": [{ + "filter_match_criteria": "MATCH_ANY", + "filter_labels": [{ "name": "PLANET", "value": "MARS", }], }], - "queryParameterMatches": [{ + "query_parameter_matches": [{ "name": "a query parameter", - "presentMatch": True, + "present_match": True, }], }], - "urlRedirect": { - "hostRedirect": "A host", - "httpsRedirect": False, - "pathRedirect": "some/path", - "redirectResponseCode": "TEMPORARY_REDIRECT", - "stripQuery": True, + "url_redirect": { + "host_redirect": "A host", + "https_redirect": False, + "path_redirect": "some/path", + "redirect_response_code": "TEMPORARY_REDIRECT", + "strip_query": True, }, }], }], @@ -1046,27 +1046,27 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "routeRules": [{ + "default_service": home.id, + "route_rules": [{ "priority": 1, "service": home.id, - "headerAction": { - "requestHeadersToRemoves": ["RemoveMe2"], + "header_action": { + "request_headers_to_removes": ["RemoveMe2"], }, - "matchRules": [{ - "fullPathMatch": "a full path", - "headerMatches": [{ - "headerName": "someheader", - "exactMatch": "match this exactly", - "invertMatch": True, + "match_rules": [{ + "full_path_match": "a full path", + "header_matches": [{ + "header_name": "someheader", + "exact_match": "match this exactly", + "invert_match": True, }], - "queryParameterMatches": [{ + "query_parameter_matches": [{ "name": "a query parameter", - "presentMatch": True, + "present_match": True, }], }], }], @@ -1090,7 +1090,7 @@ def __init__(__self__, timeout_sec=1, http_health_check={ "port": 80, - "requestPath": "/", + "request_path": "/", }) home_backend = gcp.compute.RegionBackendService("home-backend", region="us-central1", @@ -1123,27 +1123,27 @@ def __init__(__self__, default_service=home_backend.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "mysite", + "path_matcher": "mysite", }], path_matchers=[{ "name": "mysite", - "defaultService": home_backend.id, - "routeRules": [ + "default_service": home_backend.id, + "route_rules": [ { - "matchRules": [{ - "pathTemplateMatch": "/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}", + "match_rules": [{ + "path_template_match": "/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}", }], "service": cart_backend.id, "priority": 1, - "routeAction": { - "urlRewrite": { - "pathTemplateRewrite": "/{username}-{cartid}/", + "route_action": { + "url_rewrite": { + "path_template_rewrite": "/{username}-{cartid}/", }, }, }, { - "matchRules": [{ - "pathTemplateMatch": "/xyzwebservices/v2/xyz/users/*/accountinfo/*", + "match_rules": [{ + "path_template_match": "/xyzwebservices/v2/xyz/users/*/accountinfo/*", }], "service": user_backend.id, "priority": 2, @@ -1249,7 +1249,7 @@ def __init__(__self__, timeout_sec=1, http_health_check={ "port": 80, - "requestPath": "/", + "request_path": "/", }) login = gcp.compute.RegionBackendService("login", region="us-central1", @@ -1272,12 +1272,12 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "pathRules": [ + "default_service": home.id, + "path_rules": [ { "paths": ["/home"], "service": home.id, @@ -1307,7 +1307,7 @@ def __init__(__self__, timeout_sec=1, http_health_check={ "port": 80, - "requestPath": "/", + "request_path": "/", }) login = gcp.compute.RegionBackendService("login", region="us-central1", @@ -1328,98 +1328,98 @@ def __init__(__self__, name="regionurlmap", description="a description", default_route_action={ - "retryPolicy": { - "retryConditions": [ + "retry_policy": { + "retry_conditions": [ "5xx", "gateway-error", ], - "numRetries": 3, - "perTryTimeout": { + "num_retries": 3, + "per_try_timeout": { "seconds": "0", "nanos": 500, }, }, - "requestMirrorPolicy": { - "backendService": home.id, + "request_mirror_policy": { + "backend_service": home.id, }, - "weightedBackendServices": [ + "weighted_backend_services": [ { - "backendService": login.id, + "backend_service": login.id, "weight": 200, - "headerAction": { - "requestHeadersToAdds": [{ - "headerName": "foo-request-1", - "headerValue": "bar", + "header_action": { + "request_headers_to_adds": [{ + "header_name": "foo-request-1", + "header_value": "bar", "replace": True, }], - "requestHeadersToRemoves": ["fizz"], - "responseHeadersToAdds": [{ - "headerName": "foo-response-1", - "headerValue": "bar", + "request_headers_to_removes": ["fizz"], + "response_headers_to_adds": [{ + "header_name": "foo-response-1", + "header_value": "bar", "replace": True, }], - "responseHeadersToRemoves": ["buzz"], + "response_headers_to_removes": ["buzz"], }, }, { - "backendService": home.id, + "backend_service": home.id, "weight": 100, - "headerAction": { - "requestHeadersToAdds": [ + "header_action": { + "request_headers_to_adds": [ { - "headerName": "foo-request-1", - "headerValue": "bar", + "header_name": "foo-request-1", + "header_value": "bar", "replace": True, }, { - "headerName": "foo-request-2", - "headerValue": "bar", + "header_name": "foo-request-2", + "header_value": "bar", "replace": True, }, ], - "requestHeadersToRemoves": ["fizz"], - "responseHeadersToAdds": [ + "request_headers_to_removes": ["fizz"], + "response_headers_to_adds": [ { - "headerName": "foo-response-2", - "headerValue": "bar", + "header_name": "foo-response-2", + "header_value": "bar", "replace": True, }, { - "headerName": "foo-response-1", - "headerValue": "bar", + "header_name": "foo-response-1", + "header_value": "bar", "replace": True, }, ], - "responseHeadersToRemoves": ["buzz"], + "response_headers_to_removes": ["buzz"], }, }, ], - "urlRewrite": { - "hostRewrite": "dev.example.com", - "pathPrefixRewrite": "/v1/api/", + "url_rewrite": { + "host_rewrite": "dev.example.com", + "path_prefix_rewrite": "/v1/api/", }, - "corsPolicy": { + "cors_policy": { "disabled": False, - "allowCredentials": True, - "allowHeaders": ["foobar"], - "allowMethods": [ + "allow_credentials": True, + "allow_headers": ["foobar"], + "allow_methods": [ "GET", "POST", ], - "allowOrigins": ["example.com"], - "exposeHeaders": ["foobar"], - "maxAge": 60, + "allow_origins": ["example.com"], + "expose_headers": ["foobar"], + "max_age": 60, }, - "faultInjectionPolicy": { + "fault_injection_policy": { "delay": { - "fixedDelay": { + "fixed_delay": { "seconds": "0", "nanos": 500, }, "percentage": 0.5, }, "abort": { - "httpStatus": 500, + "http_status": 500, "percentage": 0.5, }, }, @@ -1430,12 +1430,12 @@ def __init__(__self__, }, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "pathRules": [ + "default_service": home.id, + "path_rules": [ { "paths": ["/home"], "service": home.id, @@ -1475,45 +1475,45 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "pathRules": [{ + "default_service": home.id, + "path_rules": [{ "paths": ["/home"], - "routeAction": { - "corsPolicy": { - "allowCredentials": True, - "allowHeaders": ["Allowed content"], - "allowMethods": ["GET"], - "allowOrigins": ["Allowed origin"], - "exposeHeaders": ["Exposed header"], - "maxAge": 30, + "route_action": { + "cors_policy": { + "allow_credentials": True, + "allow_headers": ["Allowed content"], + "allow_methods": ["GET"], + "allow_origins": ["Allowed origin"], + "expose_headers": ["Exposed header"], + "max_age": 30, "disabled": False, }, - "faultInjectionPolicy": { + "fault_injection_policy": { "abort": { - "httpStatus": 234, + "http_status": 234, "percentage": 5.6, }, "delay": { - "fixedDelay": { + "fixed_delay": { "seconds": "0", "nanos": 50000, }, "percentage": 7.8, }, }, - "requestMirrorPolicy": { - "backendService": home.id, + "request_mirror_policy": { + "backend_service": home.id, }, - "retryPolicy": { - "numRetries": 4, - "perTryTimeout": { + "retry_policy": { + "num_retries": 4, + "per_try_timeout": { "seconds": "30", }, - "retryConditions": [ + "retry_conditions": [ "5xx", "deadline-exceeded", ], @@ -1522,24 +1522,24 @@ def __init__(__self__, "seconds": "20", "nanos": 750000000, }, - "urlRewrite": { - "hostRewrite": "dev.example.com", - "pathPrefixRewrite": "/v1/api/", + "url_rewrite": { + "host_rewrite": "dev.example.com", + "path_prefix_rewrite": "/v1/api/", }, - "weightedBackendServices": [{ - "backendService": home.id, + "weighted_backend_services": [{ + "backend_service": home.id, "weight": 400, - "headerAction": { - "requestHeadersToRemoves": ["RemoveMe"], - "requestHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "header_action": { + "request_headers_to_removes": ["RemoveMe"], + "request_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": True, }], - "responseHeadersToRemoves": ["RemoveMe"], - "responseHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "response_headers_to_removes": ["RemoveMe"], + "response_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": False, }], }, @@ -1576,20 +1576,20 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "pathRules": [{ + "default_service": home.id, + "path_rules": [{ "paths": ["/home"], - "routeAction": { - "retryPolicy": { - "numRetries": 4, - "perTryTimeout": { + "route_action": { + "retry_policy": { + "num_retries": 4, + "per_try_timeout": { "seconds": "30", }, - "retryConditions": [ + "retry_conditions": [ "5xx", "deadline-exceeded", ], @@ -1598,17 +1598,17 @@ def __init__(__self__, "seconds": "20", "nanos": 750000000, }, - "urlRewrite": { - "hostRewrite": "dev.example.com", - "pathPrefixRewrite": "/v1/api/", + "url_rewrite": { + "host_rewrite": "dev.example.com", + "path_prefix_rewrite": "/v1/api/", }, - "weightedBackendServices": [{ - "backendService": home.id, + "weighted_backend_services": [{ + "backend_service": home.id, "weight": 400, - "headerAction": { - "responseHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "header_action": { + "response_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": False, }], }, @@ -1645,53 +1645,53 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "routeRules": [{ + "default_service": home.id, + "route_rules": [{ "priority": 1, - "headerAction": { - "requestHeadersToRemoves": ["RemoveMe2"], - "requestHeadersToAdds": [{ - "headerName": "AddSomethingElse", - "headerValue": "MyOtherValue", + "header_action": { + "request_headers_to_removes": ["RemoveMe2"], + "request_headers_to_adds": [{ + "header_name": "AddSomethingElse", + "header_value": "MyOtherValue", "replace": True, }], - "responseHeadersToRemoves": ["RemoveMe3"], - "responseHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "response_headers_to_removes": ["RemoveMe3"], + "response_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": False, }], }, - "matchRules": [{ - "fullPathMatch": "a full path", - "headerMatches": [{ - "headerName": "someheader", - "exactMatch": "match this exactly", - "invertMatch": True, + "match_rules": [{ + "full_path_match": "a full path", + "header_matches": [{ + "header_name": "someheader", + "exact_match": "match this exactly", + "invert_match": True, }], - "ignoreCase": True, - "metadataFilters": [{ - "filterMatchCriteria": "MATCH_ANY", - "filterLabels": [{ + "ignore_case": True, + "metadata_filters": [{ + "filter_match_criteria": "MATCH_ANY", + "filter_labels": [{ "name": "PLANET", "value": "MARS", }], }], - "queryParameterMatches": [{ + "query_parameter_matches": [{ "name": "a query parameter", - "presentMatch": True, + "present_match": True, }], }], - "urlRedirect": { - "hostRedirect": "A host", - "httpsRedirect": False, - "pathRedirect": "some/path", - "redirectResponseCode": "TEMPORARY_REDIRECT", - "stripQuery": True, + "url_redirect": { + "host_redirect": "A host", + "https_redirect": False, + "path_redirect": "some/path", + "redirect_response_code": "TEMPORARY_REDIRECT", + "strip_query": True, }, }], }], @@ -1724,27 +1724,27 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "routeRules": [{ + "default_service": home.id, + "route_rules": [{ "priority": 1, "service": home.id, - "headerAction": { - "requestHeadersToRemoves": ["RemoveMe2"], + "header_action": { + "request_headers_to_removes": ["RemoveMe2"], }, - "matchRules": [{ - "fullPathMatch": "a full path", - "headerMatches": [{ - "headerName": "someheader", - "exactMatch": "match this exactly", - "invertMatch": True, + "match_rules": [{ + "full_path_match": "a full path", + "header_matches": [{ + "header_name": "someheader", + "exact_match": "match this exactly", + "invert_match": True, }], - "queryParameterMatches": [{ + "query_parameter_matches": [{ "name": "a query parameter", - "presentMatch": True, + "present_match": True, }], }], }], @@ -1768,7 +1768,7 @@ def __init__(__self__, timeout_sec=1, http_health_check={ "port": 80, - "requestPath": "/", + "request_path": "/", }) home_backend = gcp.compute.RegionBackendService("home-backend", region="us-central1", @@ -1801,27 +1801,27 @@ def __init__(__self__, default_service=home_backend.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "mysite", + "path_matcher": "mysite", }], path_matchers=[{ "name": "mysite", - "defaultService": home_backend.id, - "routeRules": [ + "default_service": home_backend.id, + "route_rules": [ { - "matchRules": [{ - "pathTemplateMatch": "/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}", + "match_rules": [{ + "path_template_match": "/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}", }], "service": cart_backend.id, "priority": 1, - "routeAction": { - "urlRewrite": { - "pathTemplateRewrite": "/{username}-{cartid}/", + "route_action": { + "url_rewrite": { + "path_template_rewrite": "/{username}-{cartid}/", }, }, }, { - "matchRules": [{ - "pathTemplateMatch": "/xyzwebservices/v2/xyz/users/*/accountinfo/*", + "match_rules": [{ + "path_template_match": "/xyzwebservices/v2/xyz/users/*/accountinfo/*", }], "service": user_backend.id, "priority": 2, diff --git a/sdk/python/pulumi_gcp/compute/reservation.py b/sdk/python/pulumi_gcp/compute/reservation.py index 0089c60dd4..9924c0375f 100644 --- a/sdk/python/pulumi_gcp/compute/reservation.py +++ b/sdk/python/pulumi_gcp/compute/reservation.py @@ -388,9 +388,9 @@ def __init__(__self__, zone="us-central1-a", specific_reservation={ "count": 1, - "instanceProperties": { - "minCpuPlatform": "Intel Cascade Lake", - "machineType": "n2-standard-2", + "instance_properties": { + "min_cpu_platform": "Intel Cascade Lake", + "machine_type": "n2-standard-2", }, }) ``` @@ -477,9 +477,9 @@ def __init__(__self__, zone="us-central1-a", specific_reservation={ "count": 1, - "instanceProperties": { - "minCpuPlatform": "Intel Cascade Lake", - "machineType": "n2-standard-2", + "instance_properties": { + "min_cpu_platform": "Intel Cascade Lake", + "machine_type": "n2-standard-2", }, }) ``` diff --git a/sdk/python/pulumi_gcp/compute/resource_policy.py b/sdk/python/pulumi_gcp/compute/resource_policy.py index 17a3ccac8c..6d456ff4d1 100644 --- a/sdk/python/pulumi_gcp/compute/resource_policy.py +++ b/sdk/python/pulumi_gcp/compute/resource_policy.py @@ -396,9 +396,9 @@ def __init__(__self__, region="us-central1", snapshot_schedule_policy={ "schedule": { - "dailySchedule": { - "daysInCycle": 1, - "startTime": "04:00", + "daily_schedule": { + "days_in_cycle": 1, + "start_time": "04:00", }, }, }) @@ -414,21 +414,21 @@ def __init__(__self__, region="us-central1", snapshot_schedule_policy={ "schedule": { - "hourlySchedule": { - "hoursInCycle": 20, - "startTime": "23:00", + "hourly_schedule": { + "hours_in_cycle": 20, + "start_time": "23:00", }, }, - "retentionPolicy": { - "maxRetentionDays": 10, - "onSourceDiskDelete": "KEEP_AUTO_SNAPSHOTS", + "retention_policy": { + "max_retention_days": 10, + "on_source_disk_delete": "KEEP_AUTO_SNAPSHOTS", }, - "snapshotProperties": { + "snapshot_properties": { "labels": { "my_label": "value", }, - "storageLocations": "us", - "guestFlush": True, + "storage_locations": "us", + "guest_flush": True, }, }) ``` @@ -442,7 +442,7 @@ def __init__(__self__, name="gce-policy", region="us-central1", group_placement_policy={ - "vmCount": 2, + "vm_count": 2, "collocation": "COLLOCATED", }) ``` @@ -456,9 +456,9 @@ def __init__(__self__, name="gce-policy", region="us-central1", group_placement_policy={ - "vmCount": 2, + "vm_count": 2, "collocation": "COLLOCATED", - "maxDistance": 2, + "max_distance": 2, }) ``` ### Resource Policy Instance Schedule Policy @@ -472,13 +472,13 @@ def __init__(__self__, region="us-central1", description="Start and stop instances", instance_schedule_policy={ - "vmStartSchedule": { + "vm_start_schedule": { "schedule": "0 * * * *", }, - "vmStopSchedule": { + "vm_stop_schedule": { "schedule": "15 * * * *", }, - "timeZone": "US/Central", + "time_zone": "US/Central", }) ``` ### Resource Policy Snapshot Schedule Chain Name @@ -493,22 +493,22 @@ def __init__(__self__, description="chain name snapshot", snapshot_schedule_policy={ "schedule": { - "hourlySchedule": { - "hoursInCycle": 20, - "startTime": "23:00", + "hourly_schedule": { + "hours_in_cycle": 20, + "start_time": "23:00", }, }, - "retentionPolicy": { - "maxRetentionDays": 14, - "onSourceDiskDelete": "KEEP_AUTO_SNAPSHOTS", + "retention_policy": { + "max_retention_days": 14, + "on_source_disk_delete": "KEEP_AUTO_SNAPSHOTS", }, - "snapshotProperties": { + "snapshot_properties": { "labels": { "my_label": "value", }, - "storageLocations": "us", - "guestFlush": True, - "chainName": "test-schedule-chain-name", + "storage_locations": "us", + "guest_flush": True, + "chain_name": "test-schedule-chain-name", }, }) ``` @@ -607,9 +607,9 @@ def __init__(__self__, region="us-central1", snapshot_schedule_policy={ "schedule": { - "dailySchedule": { - "daysInCycle": 1, - "startTime": "04:00", + "daily_schedule": { + "days_in_cycle": 1, + "start_time": "04:00", }, }, }) @@ -625,21 +625,21 @@ def __init__(__self__, region="us-central1", snapshot_schedule_policy={ "schedule": { - "hourlySchedule": { - "hoursInCycle": 20, - "startTime": "23:00", + "hourly_schedule": { + "hours_in_cycle": 20, + "start_time": "23:00", }, }, - "retentionPolicy": { - "maxRetentionDays": 10, - "onSourceDiskDelete": "KEEP_AUTO_SNAPSHOTS", + "retention_policy": { + "max_retention_days": 10, + "on_source_disk_delete": "KEEP_AUTO_SNAPSHOTS", }, - "snapshotProperties": { + "snapshot_properties": { "labels": { "my_label": "value", }, - "storageLocations": "us", - "guestFlush": True, + "storage_locations": "us", + "guest_flush": True, }, }) ``` @@ -653,7 +653,7 @@ def __init__(__self__, name="gce-policy", region="us-central1", group_placement_policy={ - "vmCount": 2, + "vm_count": 2, "collocation": "COLLOCATED", }) ``` @@ -667,9 +667,9 @@ def __init__(__self__, name="gce-policy", region="us-central1", group_placement_policy={ - "vmCount": 2, + "vm_count": 2, "collocation": "COLLOCATED", - "maxDistance": 2, + "max_distance": 2, }) ``` ### Resource Policy Instance Schedule Policy @@ -683,13 +683,13 @@ def __init__(__self__, region="us-central1", description="Start and stop instances", instance_schedule_policy={ - "vmStartSchedule": { + "vm_start_schedule": { "schedule": "0 * * * *", }, - "vmStopSchedule": { + "vm_stop_schedule": { "schedule": "15 * * * *", }, - "timeZone": "US/Central", + "time_zone": "US/Central", }) ``` ### Resource Policy Snapshot Schedule Chain Name @@ -704,22 +704,22 @@ def __init__(__self__, description="chain name snapshot", snapshot_schedule_policy={ "schedule": { - "hourlySchedule": { - "hoursInCycle": 20, - "startTime": "23:00", + "hourly_schedule": { + "hours_in_cycle": 20, + "start_time": "23:00", }, }, - "retentionPolicy": { - "maxRetentionDays": 14, - "onSourceDiskDelete": "KEEP_AUTO_SNAPSHOTS", + "retention_policy": { + "max_retention_days": 14, + "on_source_disk_delete": "KEEP_AUTO_SNAPSHOTS", }, - "snapshotProperties": { + "snapshot_properties": { "labels": { "my_label": "value", }, - "storageLocations": "us", - "guestFlush": True, - "chainName": "test-schedule-chain-name", + "storage_locations": "us", + "guest_flush": True, + "chain_name": "test-schedule-chain-name", }, }) ``` diff --git a/sdk/python/pulumi_gcp/compute/router.py b/sdk/python/pulumi_gcp/compute/router.py index 0c36f007b2..1c1d6c20fb 100644 --- a/sdk/python/pulumi_gcp/compute/router.py +++ b/sdk/python/pulumi_gcp/compute/router.py @@ -371,9 +371,9 @@ def __init__(__self__, network=foobar_network.name, bgp={ "asn": 64514, - "advertiseMode": "CUSTOM", - "advertisedGroups": ["ALL_SUBNETS"], - "advertisedIpRanges": [ + "advertise_mode": "CUSTOM", + "advertised_groups": ["ALL_SUBNETS"], + "advertised_ip_ranges": [ { "range": "1.2.3.4", }, @@ -483,9 +483,9 @@ def __init__(__self__, network=foobar_network.name, bgp={ "asn": 64514, - "advertiseMode": "CUSTOM", - "advertisedGroups": ["ALL_SUBNETS"], - "advertisedIpRanges": [ + "advertise_mode": "CUSTOM", + "advertised_groups": ["ALL_SUBNETS"], + "advertised_ip_ranges": [ { "range": "1.2.3.4", }, diff --git a/sdk/python/pulumi_gcp/compute/router_nat.py b/sdk/python/pulumi_gcp/compute/router_nat.py index e4b0ff6ed4..6506c32d41 100644 --- a/sdk/python/pulumi_gcp/compute/router_nat.py +++ b/sdk/python/pulumi_gcp/compute/router_nat.py @@ -1048,7 +1048,7 @@ def __init__(__self__, source_subnetwork_ip_ranges_to_nat="LIST_OF_SUBNETWORKS", subnetworks=[{ "name": subnet.id, - "sourceIpRangesToNats": ["ALL_IP_RANGES"], + "source_ip_ranges_to_nats": ["ALL_IP_RANGES"], }]) ``` ### Router Nat Rules @@ -1087,14 +1087,14 @@ def __init__(__self__, source_subnetwork_ip_ranges_to_nat="LIST_OF_SUBNETWORKS", subnetworks=[{ "name": subnet.id, - "sourceIpRangesToNats": ["ALL_IP_RANGES"], + "source_ip_ranges_to_nats": ["ALL_IP_RANGES"], }], rules=[{ - "ruleNumber": 100, + "rule_number": 100, "description": "nat rules example", "match": "inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')", "action": { - "sourceNatActiveIps": [ + "source_nat_active_ips": [ addr2.self_link, addr3.self_link, ], @@ -1128,7 +1128,7 @@ def __init__(__self__, description="vpc spoke for inter vpc nat", hub=hub.id, linked_vpc_network={ - "excludeExportRanges": [ + "exclude_export_ranges": [ "198.51.100.0/24", "10.10.0.0/16", ], @@ -1145,14 +1145,14 @@ def __init__(__self__, type="PRIVATE", subnetworks=[{ "name": subnet.id, - "sourceIpRangesToNats": ["ALL_IP_RANGES"], + "source_ip_ranges_to_nats": ["ALL_IP_RANGES"], }], rules=[{ - "ruleNumber": 100, + "rule_number": 100, "description": "rule for private nat", "match": "nexthop.hub == \\"//networkconnectivity.googleapis.com/projects/acm-test-proj-123/locations/global/hubs/my-hub\\"", "action": { - "sourceNatActiveRanges": [subnet.self_link], + "source_nat_active_ranges": [subnet.self_link], }, }]) ``` @@ -1335,7 +1335,7 @@ def __init__(__self__, source_subnetwork_ip_ranges_to_nat="LIST_OF_SUBNETWORKS", subnetworks=[{ "name": subnet.id, - "sourceIpRangesToNats": ["ALL_IP_RANGES"], + "source_ip_ranges_to_nats": ["ALL_IP_RANGES"], }]) ``` ### Router Nat Rules @@ -1374,14 +1374,14 @@ def __init__(__self__, source_subnetwork_ip_ranges_to_nat="LIST_OF_SUBNETWORKS", subnetworks=[{ "name": subnet.id, - "sourceIpRangesToNats": ["ALL_IP_RANGES"], + "source_ip_ranges_to_nats": ["ALL_IP_RANGES"], }], rules=[{ - "ruleNumber": 100, + "rule_number": 100, "description": "nat rules example", "match": "inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')", "action": { - "sourceNatActiveIps": [ + "source_nat_active_ips": [ addr2.self_link, addr3.self_link, ], @@ -1415,7 +1415,7 @@ def __init__(__self__, description="vpc spoke for inter vpc nat", hub=hub.id, linked_vpc_network={ - "excludeExportRanges": [ + "exclude_export_ranges": [ "198.51.100.0/24", "10.10.0.0/16", ], @@ -1432,14 +1432,14 @@ def __init__(__self__, type="PRIVATE", subnetworks=[{ "name": subnet.id, - "sourceIpRangesToNats": ["ALL_IP_RANGES"], + "source_ip_ranges_to_nats": ["ALL_IP_RANGES"], }], rules=[{ - "ruleNumber": 100, + "rule_number": 100, "description": "rule for private nat", "match": "nexthop.hub == \\"//networkconnectivity.googleapis.com/projects/acm-test-proj-123/locations/global/hubs/my-hub\\"", "action": { - "sourceNatActiveRanges": [subnet.self_link], + "source_nat_active_ranges": [subnet.self_link], }, }]) ``` diff --git a/sdk/python/pulumi_gcp/compute/router_peer.py b/sdk/python/pulumi_gcp/compute/router_peer.py index 28513c7504..d1ebcb3e0d 100644 --- a/sdk/python/pulumi_gcp/compute/router_peer.py +++ b/sdk/python/pulumi_gcp/compute/router_peer.py @@ -1038,10 +1038,10 @@ def __init__(__self__, advertised_route_priority=100, interface="interface-1", bfd={ - "minReceiveInterval": 1000, - "minTransmitInterval": 1000, + "min_receive_interval": 1000, + "min_transmit_interval": 1000, "multiplier": 5, - "sessionInitializationMode": "ACTIVE", + "session_initialization_mode": "ACTIVE", }) ``` ### Router Peer Router Appliance @@ -1079,12 +1079,12 @@ def __init__(__self__, machine_type="e2-medium", can_ip_forward=True, boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }, network_interfaces=[{ - "networkIp": addr_peer.address, + "network_ip": addr_peer.address, "subnetwork": subnetwork.self_link, }]) hub = gcp.networkconnectivity.Hub("hub", name="my-router-hub") @@ -1094,10 +1094,10 @@ def __init__(__self__, hub=hub.id, linked_router_appliance_instances={ "instances": [{ - "virtualMachine": instance.self_link, - "ipAddress": addr_peer.address, + "virtual_machine": instance.self_link, + "ip_address": addr_peer.address, }], - "siteToSiteDataTransfer": False, + "site_to_site_data_transfer": False, }) router = gcp.compute.Router("router", name="my-router-router", @@ -1315,10 +1315,10 @@ def __init__(__self__, advertised_route_priority=100, interface="interface-1", bfd={ - "minReceiveInterval": 1000, - "minTransmitInterval": 1000, + "min_receive_interval": 1000, + "min_transmit_interval": 1000, "multiplier": 5, - "sessionInitializationMode": "ACTIVE", + "session_initialization_mode": "ACTIVE", }) ``` ### Router Peer Router Appliance @@ -1356,12 +1356,12 @@ def __init__(__self__, machine_type="e2-medium", can_ip_forward=True, boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }, network_interfaces=[{ - "networkIp": addr_peer.address, + "network_ip": addr_peer.address, "subnetwork": subnetwork.self_link, }]) hub = gcp.networkconnectivity.Hub("hub", name="my-router-hub") @@ -1371,10 +1371,10 @@ def __init__(__self__, hub=hub.id, linked_router_appliance_instances={ "instances": [{ - "virtualMachine": instance.self_link, - "ipAddress": addr_peer.address, + "virtual_machine": instance.self_link, + "ip_address": addr_peer.address, }], - "siteToSiteDataTransfer": False, + "site_to_site_data_transfer": False, }) router = gcp.compute.Router("router", name="my-router-router", diff --git a/sdk/python/pulumi_gcp/compute/security_policy.py b/sdk/python/pulumi_gcp/compute/security_policy.py index cb9101f6d8..31ce32b39a 100644 --- a/sdk/python/pulumi_gcp/compute/security_policy.py +++ b/sdk/python/pulumi_gcp/compute/security_policy.py @@ -408,9 +408,9 @@ def __init__(__self__, "action": "deny(403)", "priority": 1000, "match": { - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["9.9.9.0/24"], + "src_ip_ranges": ["9.9.9.0/24"], }, }, "description": "Deny access to IPs in 9.9.9.0/24", @@ -419,9 +419,9 @@ def __init__(__self__, "action": "allow", "priority": 2147483647, "match": { - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["*"], + "src_ip_ranges": ["*"], }, }, "description": "default rule", @@ -442,16 +442,16 @@ def __init__(__self__, }, project="my-project-name", web_settings={ - "integrationType": "INVISIBLE", - "allowAllDomains": True, - "allowedDomains": ["localhost"], + "integration_type": "INVISIBLE", + "allow_all_domains": True, + "allowed_domains": ["localhost"], }) policy = gcp.compute.SecurityPolicy("policy", name="my-policy", description="basic security policy", type="CLOUD_ARMOR", recaptcha_options_config={ - "redirectSiteKey": primary.name, + "redirect_site_key": primary.name, }) ``` @@ -468,9 +468,9 @@ def __init__(__self__, "action": "allow", "priority": 2147483647, "match": { - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["*"], + "src_ip_ranges": ["*"], }, }, "description": "default rule", @@ -483,15 +483,15 @@ def __init__(__self__, "expression": "request.path.matches(\\"/login.html\\") && token.recaptcha_session.score < 0.2", }, }, - "headerAction": { - "requestHeadersToAdds": [ + "header_action": { + "request_headers_to_adds": [ { - "headerName": "reCAPTCHA-Warning", - "headerValue": "high", + "header_name": "reCAPTCHA-Warning", + "header_value": "high", }, { - "headerName": "X-Resource", - "headerValue": "test", + "header_name": "X-Resource", + "header_value": "test", }, ], }, @@ -513,26 +513,26 @@ def __init__(__self__, "action": "throttle", "priority": 2147483647, "match": { - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["*"], + "src_ip_ranges": ["*"], }, }, "description": "default rule", - "rateLimitOptions": { - "conformAction": "allow", - "exceedAction": "redirect", - "enforceOnKey": "", - "enforceOnKeyConfigs": [{ - "enforceOnKeyType": "IP", + "rate_limit_options": { + "conform_action": "allow", + "exceed_action": "redirect", + "enforce_on_key": "", + "enforce_on_key_configs": [{ + "enforce_on_key_type": "IP", }], - "exceedRedirectOptions": { + "exceed_redirect_options": { "type": "EXTERNAL_302", "target": "", }, - "rateLimitThreshold": { + "rate_limit_threshold": { "count": 10, - "intervalSec": 60, + "interval_sec": 60, }, }, }]) @@ -612,9 +612,9 @@ def __init__(__self__, "action": "deny(403)", "priority": 1000, "match": { - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["9.9.9.0/24"], + "src_ip_ranges": ["9.9.9.0/24"], }, }, "description": "Deny access to IPs in 9.9.9.0/24", @@ -623,9 +623,9 @@ def __init__(__self__, "action": "allow", "priority": 2147483647, "match": { - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["*"], + "src_ip_ranges": ["*"], }, }, "description": "default rule", @@ -646,16 +646,16 @@ def __init__(__self__, }, project="my-project-name", web_settings={ - "integrationType": "INVISIBLE", - "allowAllDomains": True, - "allowedDomains": ["localhost"], + "integration_type": "INVISIBLE", + "allow_all_domains": True, + "allowed_domains": ["localhost"], }) policy = gcp.compute.SecurityPolicy("policy", name="my-policy", description="basic security policy", type="CLOUD_ARMOR", recaptcha_options_config={ - "redirectSiteKey": primary.name, + "redirect_site_key": primary.name, }) ``` @@ -672,9 +672,9 @@ def __init__(__self__, "action": "allow", "priority": 2147483647, "match": { - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["*"], + "src_ip_ranges": ["*"], }, }, "description": "default rule", @@ -687,15 +687,15 @@ def __init__(__self__, "expression": "request.path.matches(\\"/login.html\\") && token.recaptcha_session.score < 0.2", }, }, - "headerAction": { - "requestHeadersToAdds": [ + "header_action": { + "request_headers_to_adds": [ { - "headerName": "reCAPTCHA-Warning", - "headerValue": "high", + "header_name": "reCAPTCHA-Warning", + "header_value": "high", }, { - "headerName": "X-Resource", - "headerValue": "test", + "header_name": "X-Resource", + "header_value": "test", }, ], }, @@ -717,26 +717,26 @@ def __init__(__self__, "action": "throttle", "priority": 2147483647, "match": { - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["*"], + "src_ip_ranges": ["*"], }, }, "description": "default rule", - "rateLimitOptions": { - "conformAction": "allow", - "exceedAction": "redirect", - "enforceOnKey": "", - "enforceOnKeyConfigs": [{ - "enforceOnKeyType": "IP", + "rate_limit_options": { + "conform_action": "allow", + "exceed_action": "redirect", + "enforce_on_key": "", + "enforce_on_key_configs": [{ + "enforce_on_key_type": "IP", }], - "exceedRedirectOptions": { + "exceed_redirect_options": { "type": "EXTERNAL_302", "target": "", }, - "rateLimitThreshold": { + "rate_limit_threshold": { "count": 10, - "intervalSec": 60, + "interval_sec": 60, }, }, }]) diff --git a/sdk/python/pulumi_gcp/compute/security_policy_rule.py b/sdk/python/pulumi_gcp/compute/security_policy_rule.py index be5d629692..5df772bacf 100644 --- a/sdk/python/pulumi_gcp/compute/security_policy_rule.py +++ b/sdk/python/pulumi_gcp/compute/security_policy_rule.py @@ -424,9 +424,9 @@ def __init__(__self__, description="new rule", priority=100, match={ - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["10.10.0.0/16"], + "src_ip_ranges": ["10.10.0.0/16"], }, }, action="allow", @@ -453,9 +453,9 @@ def __init__(__self__, action="allow", priority=2147483647, match={ - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["*"], + "src_ip_ranges": ["*"], }, }) policy_rule = gcp.compute.SecurityPolicyRule("policy_rule", @@ -463,9 +463,9 @@ def __init__(__self__, description="new rule", priority=100, match={ - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["10.10.0.0/16"], + "src_ip_ranges": ["10.10.0.0/16"], }, }, action="allow", @@ -486,9 +486,9 @@ def __init__(__self__, description="new rule one", priority=100, match={ - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["10.10.0.0/16"], + "src_ip_ranges": ["10.10.0.0/16"], }, }, action="allow", @@ -498,9 +498,9 @@ def __init__(__self__, description="new rule two", priority=101, match={ - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": [ + "src_ip_ranges": [ "192.168.0.0/16", "10.0.0.0/8", ], @@ -594,9 +594,9 @@ def __init__(__self__, description="new rule", priority=100, match={ - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["10.10.0.0/16"], + "src_ip_ranges": ["10.10.0.0/16"], }, }, action="allow", @@ -623,9 +623,9 @@ def __init__(__self__, action="allow", priority=2147483647, match={ - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["*"], + "src_ip_ranges": ["*"], }, }) policy_rule = gcp.compute.SecurityPolicyRule("policy_rule", @@ -633,9 +633,9 @@ def __init__(__self__, description="new rule", priority=100, match={ - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["10.10.0.0/16"], + "src_ip_ranges": ["10.10.0.0/16"], }, }, action="allow", @@ -656,9 +656,9 @@ def __init__(__self__, description="new rule one", priority=100, match={ - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": ["10.10.0.0/16"], + "src_ip_ranges": ["10.10.0.0/16"], }, }, action="allow", @@ -668,9 +668,9 @@ def __init__(__self__, description="new rule two", priority=101, match={ - "versionedExpr": "SRC_IPS_V1", + "versioned_expr": "SRC_IPS_V1", "config": { - "srcIpRanges": [ + "src_ip_ranges": [ "192.168.0.0/16", "10.0.0.0/8", ], diff --git a/sdk/python/pulumi_gcp/compute/service_attachment.py b/sdk/python/pulumi_gcp/compute/service_attachment.py index a0aad3d83d..1e742a1dbb 100644 --- a/sdk/python/pulumi_gcp/compute/service_attachment.py +++ b/sdk/python/pulumi_gcp/compute/service_attachment.py @@ -695,8 +695,8 @@ def __init__(__self__, "482878270665", ], consumer_accept_lists=[{ - "projectIdOrNum": "658859330310", - "connectionLimit": 4, + "project_id_or_num": "658859330310", + "connection_limit": 4, }]) psc_ilb_consumer_address = gcp.compute.Address("psc_ilb_consumer_address", name="psc-ilb-consumer-address", @@ -762,8 +762,8 @@ def __init__(__self__, nat_subnets=[psc_ilb_nat.id], target_service=psc_ilb_target_service.id, consumer_accept_lists=[{ - "networkUrl": psc_ilb_consumer_network.self_link, - "connectionLimit": 1, + "network_url": psc_ilb_consumer_network.self_link, + "connection_limit": 1, }]) psc_ilb_consumer_subnetwork = gcp.compute.Subnetwork("psc_ilb_consumer_subnetwork", name="psc-ilb-consumer-network", @@ -837,8 +837,8 @@ def __init__(__self__, "482878270665", ], consumer_accept_lists=[{ - "projectIdOrNum": "658859330310", - "connectionLimit": 4, + "project_id_or_num": "658859330310", + "connection_limit": 4, }], reconcile_connections=False) ``` @@ -1040,8 +1040,8 @@ def __init__(__self__, "482878270665", ], consumer_accept_lists=[{ - "projectIdOrNum": "658859330310", - "connectionLimit": 4, + "project_id_or_num": "658859330310", + "connection_limit": 4, }]) psc_ilb_consumer_address = gcp.compute.Address("psc_ilb_consumer_address", name="psc-ilb-consumer-address", @@ -1107,8 +1107,8 @@ def __init__(__self__, nat_subnets=[psc_ilb_nat.id], target_service=psc_ilb_target_service.id, consumer_accept_lists=[{ - "networkUrl": psc_ilb_consumer_network.self_link, - "connectionLimit": 1, + "network_url": psc_ilb_consumer_network.self_link, + "connection_limit": 1, }]) psc_ilb_consumer_subnetwork = gcp.compute.Subnetwork("psc_ilb_consumer_subnetwork", name="psc-ilb-consumer-network", @@ -1182,8 +1182,8 @@ def __init__(__self__, "482878270665", ], consumer_accept_lists=[{ - "projectIdOrNum": "658859330310", - "connectionLimit": 4, + "project_id_or_num": "658859330310", + "connection_limit": 4, }], reconcile_connections=False) ``` diff --git a/sdk/python/pulumi_gcp/compute/subnetwork.py b/sdk/python/pulumi_gcp/compute/subnetwork.py index 0236b4959c..b6172e29b7 100644 --- a/sdk/python/pulumi_gcp/compute/subnetwork.py +++ b/sdk/python/pulumi_gcp/compute/subnetwork.py @@ -892,8 +892,8 @@ def __init__(__self__, region="us-central1", network=custom_test.id, secondary_ip_ranges=[{ - "rangeName": "tf-test-secondary-range-update1", - "ipCidrRange": "192.168.10.0/24", + "range_name": "tf-test-secondary-range-update1", + "ip_cidr_range": "192.168.10.0/24", }]) ``` ### Subnetwork Logging Config @@ -911,8 +911,8 @@ def __init__(__self__, region="us-central1", network=custom_test.id, log_config={ - "aggregationInterval": "INTERVAL_10_MIN", - "flowSampling": 0.5, + "aggregation_interval": "INTERVAL_10_MIN", + "flow_sampling": 0.5, "metadata": "INCLUDE_ALL_METADATA", }) ``` @@ -1148,8 +1148,8 @@ def __init__(__self__, region="us-central1", network=custom_test.id, secondary_ip_ranges=[{ - "rangeName": "tf-test-secondary-range-update1", - "ipCidrRange": "192.168.10.0/24", + "range_name": "tf-test-secondary-range-update1", + "ip_cidr_range": "192.168.10.0/24", }]) ``` ### Subnetwork Logging Config @@ -1167,8 +1167,8 @@ def __init__(__self__, region="us-central1", network=custom_test.id, log_config={ - "aggregationInterval": "INTERVAL_10_MIN", - "flowSampling": 0.5, + "aggregation_interval": "INTERVAL_10_MIN", + "flow_sampling": 0.5, "metadata": "INCLUDE_ALL_METADATA", }) ``` diff --git a/sdk/python/pulumi_gcp/compute/target_grpc_proxy.py b/sdk/python/pulumi_gcp/compute/target_grpc_proxy.py index 2c50e04a45..bc43519fb7 100644 --- a/sdk/python/pulumi_gcp/compute/target_grpc_proxy.py +++ b/sdk/python/pulumi_gcp/compute/target_grpc_proxy.py @@ -388,9 +388,9 @@ def __init__(__self__, timeout_sec=1, check_interval_sec=1, grpc_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", - "grpcServiceName": "testservice", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", + "grpc_service_name": "testservice", }) home = gcp.compute.BackendService("home", name="backend", @@ -405,53 +405,53 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "routeRules": [{ + "default_service": home.id, + "route_rules": [{ "priority": 1, - "headerAction": { - "requestHeadersToRemoves": ["RemoveMe2"], - "requestHeadersToAdds": [{ - "headerName": "AddSomethingElse", - "headerValue": "MyOtherValue", + "header_action": { + "request_headers_to_removes": ["RemoveMe2"], + "request_headers_to_adds": [{ + "header_name": "AddSomethingElse", + "header_value": "MyOtherValue", "replace": True, }], - "responseHeadersToRemoves": ["RemoveMe3"], - "responseHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "response_headers_to_removes": ["RemoveMe3"], + "response_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": False, }], }, - "matchRules": [{ - "fullPathMatch": "a full path", - "headerMatches": [{ - "headerName": "someheader", - "exactMatch": "match this exactly", - "invertMatch": True, + "match_rules": [{ + "full_path_match": "a full path", + "header_matches": [{ + "header_name": "someheader", + "exact_match": "match this exactly", + "invert_match": True, }], - "ignoreCase": True, - "metadataFilters": [{ - "filterMatchCriteria": "MATCH_ANY", - "filterLabels": [{ + "ignore_case": True, + "metadata_filters": [{ + "filter_match_criteria": "MATCH_ANY", + "filter_labels": [{ "name": "PLANET", "value": "MARS", }], }], - "queryParameterMatches": [{ + "query_parameter_matches": [{ "name": "a query parameter", - "presentMatch": True, + "present_match": True, }], }], - "urlRedirect": { - "hostRedirect": "A host", - "httpsRedirect": False, - "pathRedirect": "some/path", - "redirectResponseCode": "TEMPORARY_REDIRECT", - "stripQuery": True, + "url_redirect": { + "host_redirect": "A host", + "https_redirect": False, + "path_redirect": "some/path", + "redirect_response_code": "TEMPORARY_REDIRECT", + "strip_query": True, }, }], }], @@ -550,9 +550,9 @@ def __init__(__self__, timeout_sec=1, check_interval_sec=1, grpc_health_check={ - "portName": "health-check-port", - "portSpecification": "USE_NAMED_PORT", - "grpcServiceName": "testservice", + "port_name": "health-check-port", + "port_specification": "USE_NAMED_PORT", + "grpc_service_name": "testservice", }) home = gcp.compute.BackendService("home", name="backend", @@ -567,53 +567,53 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "routeRules": [{ + "default_service": home.id, + "route_rules": [{ "priority": 1, - "headerAction": { - "requestHeadersToRemoves": ["RemoveMe2"], - "requestHeadersToAdds": [{ - "headerName": "AddSomethingElse", - "headerValue": "MyOtherValue", + "header_action": { + "request_headers_to_removes": ["RemoveMe2"], + "request_headers_to_adds": [{ + "header_name": "AddSomethingElse", + "header_value": "MyOtherValue", "replace": True, }], - "responseHeadersToRemoves": ["RemoveMe3"], - "responseHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "response_headers_to_removes": ["RemoveMe3"], + "response_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": False, }], }, - "matchRules": [{ - "fullPathMatch": "a full path", - "headerMatches": [{ - "headerName": "someheader", - "exactMatch": "match this exactly", - "invertMatch": True, + "match_rules": [{ + "full_path_match": "a full path", + "header_matches": [{ + "header_name": "someheader", + "exact_match": "match this exactly", + "invert_match": True, }], - "ignoreCase": True, - "metadataFilters": [{ - "filterMatchCriteria": "MATCH_ANY", - "filterLabels": [{ + "ignore_case": True, + "metadata_filters": [{ + "filter_match_criteria": "MATCH_ANY", + "filter_labels": [{ "name": "PLANET", "value": "MARS", }], }], - "queryParameterMatches": [{ + "query_parameter_matches": [{ "name": "a query parameter", - "presentMatch": True, + "present_match": True, }], }], - "urlRedirect": { - "hostRedirect": "A host", - "httpsRedirect": False, - "pathRedirect": "some/path", - "redirectResponseCode": "TEMPORARY_REDIRECT", - "stripQuery": True, + "url_redirect": { + "host_redirect": "A host", + "https_redirect": False, + "path_redirect": "some/path", + "redirect_response_code": "TEMPORARY_REDIRECT", + "strip_query": True, }, }], }], diff --git a/sdk/python/pulumi_gcp/compute/target_http_proxy.py b/sdk/python/pulumi_gcp/compute/target_http_proxy.py index 3f121f9f8b..2d0f7bd6fe 100644 --- a/sdk/python/pulumi_gcp/compute/target_http_proxy.py +++ b/sdk/python/pulumi_gcp/compute/target_http_proxy.py @@ -385,12 +385,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], @@ -422,12 +422,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], @@ -446,8 +446,8 @@ def __init__(__self__, default_url_map = gcp.compute.URLMap("default", name="url-map", default_url_redirect={ - "httpsRedirect": True, - "stripQuery": False, + "https_redirect": True, + "strip_query": False, }) default = gcp.compute.TargetHttpProxy("default", name="test-https-redirect-proxy", @@ -544,12 +544,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], @@ -581,12 +581,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], @@ -605,8 +605,8 @@ def __init__(__self__, default_url_map = gcp.compute.URLMap("default", name="url-map", default_url_redirect={ - "httpsRedirect": True, - "stripQuery": False, + "https_redirect": True, + "strip_query": False, }) default = gcp.compute.TargetHttpProxy("default", name="test-https-redirect-proxy", diff --git a/sdk/python/pulumi_gcp/compute/target_https_proxy.py b/sdk/python/pulumi_gcp/compute/target_https_proxy.py index 2c3eb70ccf..615451edd8 100644 --- a/sdk/python/pulumi_gcp/compute/target_https_proxy.py +++ b/sdk/python/pulumi_gcp/compute/target_https_proxy.py @@ -734,12 +734,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], @@ -778,12 +778,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], @@ -807,11 +807,11 @@ def __init__(__self__, description="sample description for the trust config", location="global", trust_stores=[{ - "trustAnchors": [{ - "pemCertificate": std.file(input="test-fixtures/ca_cert.pem").result, + "trust_anchors": [{ + "pem_certificate": std.file(input="test-fixtures/ca_cert.pem").result, }], - "intermediateCas": [{ - "pemCertificate": std.file(input="test-fixtures/ca_cert.pem").result, + "intermediate_cas": [{ + "pem_certificate": std.file(input="test-fixtures/ca_cert.pem").result, }], }], labels={ @@ -823,8 +823,8 @@ def __init__(__self__, location="global", allow_open=False, mtls_policy={ - "clientValidationMode": "ALLOW_INVALID_OR_MISSING_CLIENT_CERT", - "clientValidationTrustConfig": default_trust_config.name.apply(lambda name: f"projects/{project.number}/locations/global/trustConfigs/{name}"), + "client_validation_mode": "ALLOW_INVALID_OR_MISSING_CLIENT_CERT", + "client_validation_trust_config": default_trust_config.name.apply(lambda name: f"projects/{project.number}/locations/global/trustConfigs/{name}"), }) default_ssl_certificate = gcp.compute.SSLCertificate("default", name="my-certificate", @@ -847,12 +847,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], @@ -874,8 +874,8 @@ def __init__(__self__, name="my-certificate", scope="ALL_REGIONS", self_managed={ - "pemCertificate": std.file(input="test-fixtures/cert.pem").result, - "pemPrivateKey": std.file(input="test-fixtures/private-key.pem").result, + "pem_certificate": std.file(input="test-fixtures/cert.pem").result, + "pem_private_key": std.file(input="test-fixtures/private-key.pem").result, }) default_backend_service = gcp.compute.BackendService("default", name="backend-service", @@ -889,12 +889,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], @@ -1036,12 +1036,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], @@ -1080,12 +1080,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], @@ -1109,11 +1109,11 @@ def __init__(__self__, description="sample description for the trust config", location="global", trust_stores=[{ - "trustAnchors": [{ - "pemCertificate": std.file(input="test-fixtures/ca_cert.pem").result, + "trust_anchors": [{ + "pem_certificate": std.file(input="test-fixtures/ca_cert.pem").result, }], - "intermediateCas": [{ - "pemCertificate": std.file(input="test-fixtures/ca_cert.pem").result, + "intermediate_cas": [{ + "pem_certificate": std.file(input="test-fixtures/ca_cert.pem").result, }], }], labels={ @@ -1125,8 +1125,8 @@ def __init__(__self__, location="global", allow_open=False, mtls_policy={ - "clientValidationMode": "ALLOW_INVALID_OR_MISSING_CLIENT_CERT", - "clientValidationTrustConfig": default_trust_config.name.apply(lambda name: f"projects/{project.number}/locations/global/trustConfigs/{name}"), + "client_validation_mode": "ALLOW_INVALID_OR_MISSING_CLIENT_CERT", + "client_validation_trust_config": default_trust_config.name.apply(lambda name: f"projects/{project.number}/locations/global/trustConfigs/{name}"), }) default_ssl_certificate = gcp.compute.SSLCertificate("default", name="my-certificate", @@ -1149,12 +1149,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], @@ -1176,8 +1176,8 @@ def __init__(__self__, name="my-certificate", scope="ALL_REGIONS", self_managed={ - "pemCertificate": std.file(input="test-fixtures/cert.pem").result, - "pemPrivateKey": std.file(input="test-fixtures/private-key.pem").result, + "pem_certificate": std.file(input="test-fixtures/cert.pem").result, + "pem_private_key": std.file(input="test-fixtures/private-key.pem").result, }) default_backend_service = gcp.compute.BackendService("default", name="backend-service", @@ -1191,12 +1191,12 @@ def __init__(__self__, default_service=default_backend_service.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default_backend_service.id, - "pathRules": [{ + "default_service": default_backend_service.id, + "path_rules": [{ "paths": ["/*"], "service": default_backend_service.id, }], diff --git a/sdk/python/pulumi_gcp/compute/target_instance.py b/sdk/python/pulumi_gcp/compute/target_instance.py index 5a62c5d56b..25ced313b7 100644 --- a/sdk/python/pulumi_gcp/compute/target_instance.py +++ b/sdk/python/pulumi_gcp/compute/target_instance.py @@ -434,7 +434,7 @@ def __init__(__self__, machine_type="e2-medium", zone="us-central1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": vmimage.self_link, }, }, @@ -459,7 +459,7 @@ def __init__(__self__, machine_type="e2-medium", zone="us-central1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": vmimage.self_link, }, }, @@ -493,7 +493,7 @@ def __init__(__self__, project="debian-cloud") target_vm = gcp.compute.Instance("target-vm", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "network": default.self_link, "subnetwork": default_subnetwork.self_link, }], @@ -501,7 +501,7 @@ def __init__(__self__, machine_type="e2-medium", zone="southamerica-west1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": vmimage.self_link, }, }) @@ -511,7 +511,7 @@ def __init__(__self__, description="ddos protection security policy to set target instance", type="CLOUD_ARMOR_NETWORK", ddos_protection_config={ - "ddosProtection": "ADVANCED_PREVIEW", + "ddos_protection": "ADVANCED_PREVIEW", }) edge_sec_service = gcp.compute.NetworkEdgeSecurityService("edge_sec_service", region="southamerica-west1", @@ -624,7 +624,7 @@ def __init__(__self__, machine_type="e2-medium", zone="us-central1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": vmimage.self_link, }, }, @@ -649,7 +649,7 @@ def __init__(__self__, machine_type="e2-medium", zone="us-central1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": vmimage.self_link, }, }, @@ -683,7 +683,7 @@ def __init__(__self__, project="debian-cloud") target_vm = gcp.compute.Instance("target-vm", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "network": default.self_link, "subnetwork": default_subnetwork.self_link, }], @@ -691,7 +691,7 @@ def __init__(__self__, machine_type="e2-medium", zone="southamerica-west1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": vmimage.self_link, }, }) @@ -701,7 +701,7 @@ def __init__(__self__, description="ddos protection security policy to set target instance", type="CLOUD_ARMOR_NETWORK", ddos_protection_config={ - "ddosProtection": "ADVANCED_PREVIEW", + "ddos_protection": "ADVANCED_PREVIEW", }) edge_sec_service = gcp.compute.NetworkEdgeSecurityService("edge_sec_service", region="southamerica-west1", diff --git a/sdk/python/pulumi_gcp/compute/url_map.py b/sdk/python/pulumi_gcp/compute/url_map.py index 5374e98845..0e96f2a86d 100644 --- a/sdk/python/pulumi_gcp/compute/url_map.py +++ b/sdk/python/pulumi_gcp/compute/url_map.py @@ -646,18 +646,18 @@ def __init__(__self__, host_rules=[ { "hosts": ["mysite.com"], - "pathMatcher": "mysite", + "path_matcher": "mysite", }, { "hosts": ["myothersite.com"], - "pathMatcher": "otherpaths", + "path_matcher": "otherpaths", }, ], path_matchers=[ { "name": "mysite", - "defaultService": static.id, - "pathRules": [ + "default_service": static.id, + "path_rules": [ { "paths": ["/home"], "service": static.id, @@ -674,7 +674,7 @@ def __init__(__self__, }, { "name": "otherpaths", - "defaultService": static.id, + "default_service": static.id, }, ], tests=[{ @@ -707,53 +707,53 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "routeRules": [{ + "default_service": home.id, + "route_rules": [{ "priority": 1, - "headerAction": { - "requestHeadersToRemoves": ["RemoveMe2"], - "requestHeadersToAdds": [{ - "headerName": "AddSomethingElse", - "headerValue": "MyOtherValue", + "header_action": { + "request_headers_to_removes": ["RemoveMe2"], + "request_headers_to_adds": [{ + "header_name": "AddSomethingElse", + "header_value": "MyOtherValue", "replace": True, }], - "responseHeadersToRemoves": ["RemoveMe3"], - "responseHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "response_headers_to_removes": ["RemoveMe3"], + "response_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": False, }], }, - "matchRules": [{ - "fullPathMatch": "a full path", - "headerMatches": [{ - "headerName": "someheader", - "exactMatch": "match this exactly", - "invertMatch": True, + "match_rules": [{ + "full_path_match": "a full path", + "header_matches": [{ + "header_name": "someheader", + "exact_match": "match this exactly", + "invert_match": True, }], - "ignoreCase": True, - "metadataFilters": [{ - "filterMatchCriteria": "MATCH_ANY", - "filterLabels": [{ + "ignore_case": True, + "metadata_filters": [{ + "filter_match_criteria": "MATCH_ANY", + "filter_labels": [{ "name": "PLANET", "value": "MARS", }], }], - "queryParameterMatches": [{ + "query_parameter_matches": [{ "name": "a query parameter", - "presentMatch": True, + "present_match": True, }], }], - "urlRedirect": { - "hostRedirect": "A host", - "httpsRedirect": False, - "pathRedirect": "some/path", - "redirectResponseCode": "TEMPORARY_REDIRECT", - "stripQuery": True, + "url_redirect": { + "host_redirect": "A host", + "https_redirect": False, + "path_redirect": "some/path", + "redirect_response_code": "TEMPORARY_REDIRECT", + "strip_query": True, }, }], }], @@ -787,24 +787,24 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "routeRules": [{ + "default_service": home.id, + "route_rules": [{ "priority": 1, - "matchRules": [{ - "prefixMatch": "/someprefix", - "headerMatches": [{ - "headerName": "someheader", - "exactMatch": "match this exactly", - "invertMatch": True, + "match_rules": [{ + "prefix_match": "/someprefix", + "header_matches": [{ + "header_name": "someheader", + "exact_match": "match this exactly", + "invert_match": True, }], }], - "urlRedirect": { - "pathRedirect": "some/path", - "redirectResponseCode": "TEMPORARY_REDIRECT", + "url_redirect": { + "path_redirect": "some/path", + "redirect_response_code": "TEMPORARY_REDIRECT", }, }], }], @@ -838,46 +838,46 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "pathRules": [{ + "default_service": home.id, + "path_rules": [{ "paths": ["/home"], - "routeAction": { - "corsPolicy": { - "allowCredentials": True, - "allowHeaders": ["Allowed content"], - "allowMethods": ["GET"], - "allowOriginRegexes": ["abc.*"], - "allowOrigins": ["Allowed origin"], - "exposeHeaders": ["Exposed header"], - "maxAge": 30, + "route_action": { + "cors_policy": { + "allow_credentials": True, + "allow_headers": ["Allowed content"], + "allow_methods": ["GET"], + "allow_origin_regexes": ["abc.*"], + "allow_origins": ["Allowed origin"], + "expose_headers": ["Exposed header"], + "max_age": 30, "disabled": False, }, - "faultInjectionPolicy": { + "fault_injection_policy": { "abort": { - "httpStatus": 234, + "http_status": 234, "percentage": 5.6, }, "delay": { - "fixedDelay": { + "fixed_delay": { "seconds": "0", "nanos": 50000, }, "percentage": 7.8, }, }, - "requestMirrorPolicy": { - "backendService": home.id, + "request_mirror_policy": { + "backend_service": home.id, }, - "retryPolicy": { - "numRetries": 4, - "perTryTimeout": { + "retry_policy": { + "num_retries": 4, + "per_try_timeout": { "seconds": "30", }, - "retryConditions": [ + "retry_conditions": [ "5xx", "deadline-exceeded", ], @@ -886,24 +886,24 @@ def __init__(__self__, "seconds": "20", "nanos": 750000000, }, - "urlRewrite": { - "hostRewrite": "dev.example.com", - "pathPrefixRewrite": "/v1/api/", + "url_rewrite": { + "host_rewrite": "dev.example.com", + "path_prefix_rewrite": "/v1/api/", }, - "weightedBackendServices": [{ - "backendService": home.id, + "weighted_backend_services": [{ + "backend_service": home.id, "weight": 400, - "headerAction": { - "requestHeadersToRemoves": ["RemoveMe"], - "requestHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "header_action": { + "request_headers_to_removes": ["RemoveMe"], + "request_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": True, }], - "responseHeadersToRemoves": ["RemoveMe"], - "responseHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "response_headers_to_removes": ["RemoveMe"], + "response_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": False, }], }, @@ -941,38 +941,38 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "pathRules": [{ + "default_service": home.id, + "path_rules": [{ "paths": ["/home"], - "routeAction": { - "corsPolicy": { - "allowCredentials": True, - "allowHeaders": ["Allowed content"], - "allowMethods": ["GET"], - "allowOriginRegexes": ["abc.*"], - "allowOrigins": ["Allowed origin"], - "exposeHeaders": ["Exposed header"], - "maxAge": 30, + "route_action": { + "cors_policy": { + "allow_credentials": True, + "allow_headers": ["Allowed content"], + "allow_methods": ["GET"], + "allow_origin_regexes": ["abc.*"], + "allow_origins": ["Allowed origin"], + "expose_headers": ["Exposed header"], + "max_age": 30, "disabled": False, }, - "weightedBackendServices": [{ - "backendService": home.id, + "weighted_backend_services": [{ + "backend_service": home.id, "weight": 400, - "headerAction": { - "requestHeadersToRemoves": ["RemoveMe"], - "requestHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "header_action": { + "request_headers_to_removes": ["RemoveMe"], + "request_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": True, }], - "responseHeadersToRemoves": ["RemoveMe"], - "responseHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "response_headers_to_removes": ["RemoveMe"], + "response_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": False, }], }, @@ -1021,33 +1021,33 @@ def __init__(__self__, default_service=default.id, host_rules=[{ "hosts": ["*"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default.id, - "routeRules": [ + "default_service": default.id, + "route_rules": [ { "priority": 1, "service": service_a.id, - "matchRules": [{ - "prefixMatch": "/", - "ignoreCase": True, - "headerMatches": [{ - "headerName": "abtest", - "exactMatch": "a", + "match_rules": [{ + "prefix_match": "/", + "ignore_case": True, + "header_matches": [{ + "header_name": "abtest", + "exact_match": "a", }], }], }, { "priority": 2, "service": service_b.id, - "matchRules": [{ - "ignoreCase": True, - "prefixMatch": "/", - "headerMatches": [{ - "headerName": "abtest", - "exactMatch": "b", + "match_rules": [{ + "ignore_case": True, + "prefix_match": "/", + "header_matches": [{ + "header_name": "abtest", + "exact_match": "b", }], }], }, @@ -1089,33 +1089,33 @@ def __init__(__self__, default_service=default.id, host_rules=[{ "hosts": ["*"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default.id, - "routeRules": [ + "default_service": default.id, + "route_rules": [ { "priority": 1, "service": service_a.id, - "matchRules": [{ - "prefixMatch": "/", - "ignoreCase": True, - "queryParameterMatches": [{ + "match_rules": [{ + "prefix_match": "/", + "ignore_case": True, + "query_parameter_matches": [{ "name": "abtest", - "exactMatch": "a", + "exact_match": "a", }], }], }, { "priority": 2, "service": service_b.id, - "matchRules": [{ - "ignoreCase": True, - "prefixMatch": "/", - "queryParameterMatches": [{ + "match_rules": [{ + "ignore_case": True, + "prefix_match": "/", + "query_parameter_matches": [{ "name": "abtest", - "exactMatch": "b", + "exact_match": "b", }], }], }, @@ -1160,27 +1160,27 @@ def __init__(__self__, default_service=static.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "mysite", + "path_matcher": "mysite", }], path_matchers=[{ "name": "mysite", - "defaultService": static.id, - "routeRules": [ + "default_service": static.id, + "route_rules": [ { - "matchRules": [{ - "pathTemplateMatch": "/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}", + "match_rules": [{ + "path_template_match": "/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}", }], "service": cart_backend.id, "priority": 1, - "routeAction": { - "urlRewrite": { - "pathTemplateRewrite": "/{username}-{cartid}/", + "route_action": { + "url_rewrite": { + "path_template_rewrite": "/{username}-{cartid}/", }, }, }, { - "matchRules": [{ - "pathTemplateMatch": "/xyzwebservices/v2/xyz/users/*/accountinfo/*", + "match_rules": [{ + "path_template_match": "/xyzwebservices/v2/xyz/users/*/accountinfo/*", }], "service": user_backend.id, "priority": 2, @@ -1218,48 +1218,48 @@ def __init__(__self__, description="a description", default_service=example.id, default_custom_error_response_policy={ - "errorResponseRules": [{ - "matchResponseCodes": ["5xx"], + "error_response_rules": [{ + "match_response_codes": ["5xx"], "path": "/*", - "overrideResponseCode": 502, + "override_response_code": 502, }], - "errorService": error.id, + "error_service": error.id, }, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "mysite", + "path_matcher": "mysite", }], path_matchers=[{ "name": "mysite", - "defaultService": example.id, - "defaultCustomErrorResponsePolicy": { - "errorResponseRules": [ + "default_service": example.id, + "default_custom_error_response_policy": { + "error_response_rules": [ { - "matchResponseCodes": [ + "match_response_codes": [ "4xx", "5xx", ], "path": "/login", - "overrideResponseCode": 404, + "override_response_code": 404, }, { - "matchResponseCodes": ["503"], + "match_response_codes": ["503"], "path": "/example", - "overrideResponseCode": 502, + "override_response_code": 502, }, ], - "errorService": error.id, + "error_service": error.id, }, - "pathRules": [{ + "path_rules": [{ "paths": ["/*"], "service": example.id, - "customErrorResponsePolicy": { - "errorResponseRules": [{ - "matchResponseCodes": ["4xx"], + "custom_error_response_policy": { + "error_response_rules": [{ + "match_response_codes": ["4xx"], "path": "/register", - "overrideResponseCode": 401, + "override_response_code": 401, }], - "errorService": error.id, + "error_service": error.id, }, }], }]) @@ -1384,18 +1384,18 @@ def __init__(__self__, host_rules=[ { "hosts": ["mysite.com"], - "pathMatcher": "mysite", + "path_matcher": "mysite", }, { "hosts": ["myothersite.com"], - "pathMatcher": "otherpaths", + "path_matcher": "otherpaths", }, ], path_matchers=[ { "name": "mysite", - "defaultService": static.id, - "pathRules": [ + "default_service": static.id, + "path_rules": [ { "paths": ["/home"], "service": static.id, @@ -1412,7 +1412,7 @@ def __init__(__self__, }, { "name": "otherpaths", - "defaultService": static.id, + "default_service": static.id, }, ], tests=[{ @@ -1445,53 +1445,53 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "routeRules": [{ + "default_service": home.id, + "route_rules": [{ "priority": 1, - "headerAction": { - "requestHeadersToRemoves": ["RemoveMe2"], - "requestHeadersToAdds": [{ - "headerName": "AddSomethingElse", - "headerValue": "MyOtherValue", + "header_action": { + "request_headers_to_removes": ["RemoveMe2"], + "request_headers_to_adds": [{ + "header_name": "AddSomethingElse", + "header_value": "MyOtherValue", "replace": True, }], - "responseHeadersToRemoves": ["RemoveMe3"], - "responseHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "response_headers_to_removes": ["RemoveMe3"], + "response_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": False, }], }, - "matchRules": [{ - "fullPathMatch": "a full path", - "headerMatches": [{ - "headerName": "someheader", - "exactMatch": "match this exactly", - "invertMatch": True, + "match_rules": [{ + "full_path_match": "a full path", + "header_matches": [{ + "header_name": "someheader", + "exact_match": "match this exactly", + "invert_match": True, }], - "ignoreCase": True, - "metadataFilters": [{ - "filterMatchCriteria": "MATCH_ANY", - "filterLabels": [{ + "ignore_case": True, + "metadata_filters": [{ + "filter_match_criteria": "MATCH_ANY", + "filter_labels": [{ "name": "PLANET", "value": "MARS", }], }], - "queryParameterMatches": [{ + "query_parameter_matches": [{ "name": "a query parameter", - "presentMatch": True, + "present_match": True, }], }], - "urlRedirect": { - "hostRedirect": "A host", - "httpsRedirect": False, - "pathRedirect": "some/path", - "redirectResponseCode": "TEMPORARY_REDIRECT", - "stripQuery": True, + "url_redirect": { + "host_redirect": "A host", + "https_redirect": False, + "path_redirect": "some/path", + "redirect_response_code": "TEMPORARY_REDIRECT", + "strip_query": True, }, }], }], @@ -1525,24 +1525,24 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "routeRules": [{ + "default_service": home.id, + "route_rules": [{ "priority": 1, - "matchRules": [{ - "prefixMatch": "/someprefix", - "headerMatches": [{ - "headerName": "someheader", - "exactMatch": "match this exactly", - "invertMatch": True, + "match_rules": [{ + "prefix_match": "/someprefix", + "header_matches": [{ + "header_name": "someheader", + "exact_match": "match this exactly", + "invert_match": True, }], }], - "urlRedirect": { - "pathRedirect": "some/path", - "redirectResponseCode": "TEMPORARY_REDIRECT", + "url_redirect": { + "path_redirect": "some/path", + "redirect_response_code": "TEMPORARY_REDIRECT", }, }], }], @@ -1576,46 +1576,46 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "pathRules": [{ + "default_service": home.id, + "path_rules": [{ "paths": ["/home"], - "routeAction": { - "corsPolicy": { - "allowCredentials": True, - "allowHeaders": ["Allowed content"], - "allowMethods": ["GET"], - "allowOriginRegexes": ["abc.*"], - "allowOrigins": ["Allowed origin"], - "exposeHeaders": ["Exposed header"], - "maxAge": 30, + "route_action": { + "cors_policy": { + "allow_credentials": True, + "allow_headers": ["Allowed content"], + "allow_methods": ["GET"], + "allow_origin_regexes": ["abc.*"], + "allow_origins": ["Allowed origin"], + "expose_headers": ["Exposed header"], + "max_age": 30, "disabled": False, }, - "faultInjectionPolicy": { + "fault_injection_policy": { "abort": { - "httpStatus": 234, + "http_status": 234, "percentage": 5.6, }, "delay": { - "fixedDelay": { + "fixed_delay": { "seconds": "0", "nanos": 50000, }, "percentage": 7.8, }, }, - "requestMirrorPolicy": { - "backendService": home.id, + "request_mirror_policy": { + "backend_service": home.id, }, - "retryPolicy": { - "numRetries": 4, - "perTryTimeout": { + "retry_policy": { + "num_retries": 4, + "per_try_timeout": { "seconds": "30", }, - "retryConditions": [ + "retry_conditions": [ "5xx", "deadline-exceeded", ], @@ -1624,24 +1624,24 @@ def __init__(__self__, "seconds": "20", "nanos": 750000000, }, - "urlRewrite": { - "hostRewrite": "dev.example.com", - "pathPrefixRewrite": "/v1/api/", + "url_rewrite": { + "host_rewrite": "dev.example.com", + "path_prefix_rewrite": "/v1/api/", }, - "weightedBackendServices": [{ - "backendService": home.id, + "weighted_backend_services": [{ + "backend_service": home.id, "weight": 400, - "headerAction": { - "requestHeadersToRemoves": ["RemoveMe"], - "requestHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "header_action": { + "request_headers_to_removes": ["RemoveMe"], + "request_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": True, }], - "responseHeadersToRemoves": ["RemoveMe"], - "responseHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "response_headers_to_removes": ["RemoveMe"], + "response_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": False, }], }, @@ -1679,38 +1679,38 @@ def __init__(__self__, default_service=home.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": home.id, - "pathRules": [{ + "default_service": home.id, + "path_rules": [{ "paths": ["/home"], - "routeAction": { - "corsPolicy": { - "allowCredentials": True, - "allowHeaders": ["Allowed content"], - "allowMethods": ["GET"], - "allowOriginRegexes": ["abc.*"], - "allowOrigins": ["Allowed origin"], - "exposeHeaders": ["Exposed header"], - "maxAge": 30, + "route_action": { + "cors_policy": { + "allow_credentials": True, + "allow_headers": ["Allowed content"], + "allow_methods": ["GET"], + "allow_origin_regexes": ["abc.*"], + "allow_origins": ["Allowed origin"], + "expose_headers": ["Exposed header"], + "max_age": 30, "disabled": False, }, - "weightedBackendServices": [{ - "backendService": home.id, + "weighted_backend_services": [{ + "backend_service": home.id, "weight": 400, - "headerAction": { - "requestHeadersToRemoves": ["RemoveMe"], - "requestHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "header_action": { + "request_headers_to_removes": ["RemoveMe"], + "request_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": True, }], - "responseHeadersToRemoves": ["RemoveMe"], - "responseHeadersToAdds": [{ - "headerName": "AddMe", - "headerValue": "MyValue", + "response_headers_to_removes": ["RemoveMe"], + "response_headers_to_adds": [{ + "header_name": "AddMe", + "header_value": "MyValue", "replace": False, }], }, @@ -1759,33 +1759,33 @@ def __init__(__self__, default_service=default.id, host_rules=[{ "hosts": ["*"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default.id, - "routeRules": [ + "default_service": default.id, + "route_rules": [ { "priority": 1, "service": service_a.id, - "matchRules": [{ - "prefixMatch": "/", - "ignoreCase": True, - "headerMatches": [{ - "headerName": "abtest", - "exactMatch": "a", + "match_rules": [{ + "prefix_match": "/", + "ignore_case": True, + "header_matches": [{ + "header_name": "abtest", + "exact_match": "a", }], }], }, { "priority": 2, "service": service_b.id, - "matchRules": [{ - "ignoreCase": True, - "prefixMatch": "/", - "headerMatches": [{ - "headerName": "abtest", - "exactMatch": "b", + "match_rules": [{ + "ignore_case": True, + "prefix_match": "/", + "header_matches": [{ + "header_name": "abtest", + "exact_match": "b", }], }], }, @@ -1827,33 +1827,33 @@ def __init__(__self__, default_service=default.id, host_rules=[{ "hosts": ["*"], - "pathMatcher": "allpaths", + "path_matcher": "allpaths", }], path_matchers=[{ "name": "allpaths", - "defaultService": default.id, - "routeRules": [ + "default_service": default.id, + "route_rules": [ { "priority": 1, "service": service_a.id, - "matchRules": [{ - "prefixMatch": "/", - "ignoreCase": True, - "queryParameterMatches": [{ + "match_rules": [{ + "prefix_match": "/", + "ignore_case": True, + "query_parameter_matches": [{ "name": "abtest", - "exactMatch": "a", + "exact_match": "a", }], }], }, { "priority": 2, "service": service_b.id, - "matchRules": [{ - "ignoreCase": True, - "prefixMatch": "/", - "queryParameterMatches": [{ + "match_rules": [{ + "ignore_case": True, + "prefix_match": "/", + "query_parameter_matches": [{ "name": "abtest", - "exactMatch": "b", + "exact_match": "b", }], }], }, @@ -1898,27 +1898,27 @@ def __init__(__self__, default_service=static.id, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "mysite", + "path_matcher": "mysite", }], path_matchers=[{ "name": "mysite", - "defaultService": static.id, - "routeRules": [ + "default_service": static.id, + "route_rules": [ { - "matchRules": [{ - "pathTemplateMatch": "/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}", + "match_rules": [{ + "path_template_match": "/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}", }], "service": cart_backend.id, "priority": 1, - "routeAction": { - "urlRewrite": { - "pathTemplateRewrite": "/{username}-{cartid}/", + "route_action": { + "url_rewrite": { + "path_template_rewrite": "/{username}-{cartid}/", }, }, }, { - "matchRules": [{ - "pathTemplateMatch": "/xyzwebservices/v2/xyz/users/*/accountinfo/*", + "match_rules": [{ + "path_template_match": "/xyzwebservices/v2/xyz/users/*/accountinfo/*", }], "service": user_backend.id, "priority": 2, @@ -1956,48 +1956,48 @@ def __init__(__self__, description="a description", default_service=example.id, default_custom_error_response_policy={ - "errorResponseRules": [{ - "matchResponseCodes": ["5xx"], + "error_response_rules": [{ + "match_response_codes": ["5xx"], "path": "/*", - "overrideResponseCode": 502, + "override_response_code": 502, }], - "errorService": error.id, + "error_service": error.id, }, host_rules=[{ "hosts": ["mysite.com"], - "pathMatcher": "mysite", + "path_matcher": "mysite", }], path_matchers=[{ "name": "mysite", - "defaultService": example.id, - "defaultCustomErrorResponsePolicy": { - "errorResponseRules": [ + "default_service": example.id, + "default_custom_error_response_policy": { + "error_response_rules": [ { - "matchResponseCodes": [ + "match_response_codes": [ "4xx", "5xx", ], "path": "/login", - "overrideResponseCode": 404, + "override_response_code": 404, }, { - "matchResponseCodes": ["503"], + "match_response_codes": ["503"], "path": "/example", - "overrideResponseCode": 502, + "override_response_code": 502, }, ], - "errorService": error.id, + "error_service": error.id, }, - "pathRules": [{ + "path_rules": [{ "paths": ["/*"], "service": example.id, - "customErrorResponsePolicy": { - "errorResponseRules": [{ - "matchResponseCodes": ["4xx"], + "custom_error_response_policy": { + "error_response_rules": [{ + "match_response_codes": ["4xx"], "path": "/register", - "overrideResponseCode": 401, + "override_response_code": 401, }], - "errorService": error.id, + "error_service": error.id, }, }], }]) diff --git a/sdk/python/pulumi_gcp/container/attached_cluster.py b/sdk/python/pulumi_gcp/container/attached_cluster.py index 83fcae6ad1..ca443e1002 100644 --- a/sdk/python/pulumi_gcp/container/attached_cluster.py +++ b/sdk/python/pulumi_gcp/container/attached_cluster.py @@ -782,7 +782,7 @@ def __init__(__self__, description="Test cluster", distribution="aks", oidc_config={ - "issuerUrl": "https://oidc.issuer.url", + "issuer_url": "https://oidc.issuer.url", }, platform_version=versions.valid_versions[0], fleet={ @@ -809,17 +809,17 @@ def __init__(__self__, "label-one": "value-one", }, authorization={ - "adminUsers": [ + "admin_users": [ "user1@example.com", "user2@example.com", ], - "adminGroups": [ + "admin_groups": [ "group1@example.com", "group2@example.com", ], }, oidc_config={ - "issuerUrl": "https://oidc.issuer.url", + "issuer_url": "https://oidc.issuer.url", "jwks": std.base64encode(input="{\\"keys\\":[{\\"use\\":\\"sig\\",\\"kty\\":\\"RSA\\",\\"kid\\":\\"testid\\",\\"alg\\":\\"RS256\\",\\"n\\":\\"somedata\\",\\"e\\":\\"AQAB\\"}]}").result, }, platform_version=versions.valid_versions[0], @@ -827,23 +827,23 @@ def __init__(__self__, "project": f"projects/{project.number}", }, logging_config={ - "componentConfig": { - "enableComponents": [ + "component_config": { + "enable_components": [ "SYSTEM_COMPONENTS", "WORKLOADS", ], }, }, monitoring_config={ - "managedPrometheusConfig": { + "managed_prometheus_config": { "enabled": True, }, }, binary_authorization={ - "evaluationMode": "PROJECT_SINGLETON_POLICY_ENFORCE", + "evaluation_mode": "PROJECT_SINGLETON_POLICY_ENFORCE", }, proxy_config={ - "kubernetesSecret": { + "kubernetes_secret": { "name": "proxy-config", "namespace": "default", }, @@ -865,7 +865,7 @@ def __init__(__self__, description="Test cluster", distribution="aks", oidc_config={ - "issuerUrl": "https://oidc.issuer.url", + "issuer_url": "https://oidc.issuer.url", }, platform_version=versions.valid_versions[0], fleet={ @@ -965,7 +965,7 @@ def __init__(__self__, description="Test cluster", distribution="aks", oidc_config={ - "issuerUrl": "https://oidc.issuer.url", + "issuer_url": "https://oidc.issuer.url", }, platform_version=versions.valid_versions[0], fleet={ @@ -992,17 +992,17 @@ def __init__(__self__, "label-one": "value-one", }, authorization={ - "adminUsers": [ + "admin_users": [ "user1@example.com", "user2@example.com", ], - "adminGroups": [ + "admin_groups": [ "group1@example.com", "group2@example.com", ], }, oidc_config={ - "issuerUrl": "https://oidc.issuer.url", + "issuer_url": "https://oidc.issuer.url", "jwks": std.base64encode(input="{\\"keys\\":[{\\"use\\":\\"sig\\",\\"kty\\":\\"RSA\\",\\"kid\\":\\"testid\\",\\"alg\\":\\"RS256\\",\\"n\\":\\"somedata\\",\\"e\\":\\"AQAB\\"}]}").result, }, platform_version=versions.valid_versions[0], @@ -1010,23 +1010,23 @@ def __init__(__self__, "project": f"projects/{project.number}", }, logging_config={ - "componentConfig": { - "enableComponents": [ + "component_config": { + "enable_components": [ "SYSTEM_COMPONENTS", "WORKLOADS", ], }, }, monitoring_config={ - "managedPrometheusConfig": { + "managed_prometheus_config": { "enabled": True, }, }, binary_authorization={ - "evaluationMode": "PROJECT_SINGLETON_POLICY_ENFORCE", + "evaluation_mode": "PROJECT_SINGLETON_POLICY_ENFORCE", }, proxy_config={ - "kubernetesSecret": { + "kubernetes_secret": { "name": "proxy-config", "namespace": "default", }, @@ -1048,7 +1048,7 @@ def __init__(__self__, description="Test cluster", distribution="aks", oidc_config={ - "issuerUrl": "https://oidc.issuer.url", + "issuer_url": "https://oidc.issuer.url", }, platform_version=versions.valid_versions[0], fleet={ diff --git a/sdk/python/pulumi_gcp/container/aws_cluster.py b/sdk/python/pulumi_gcp/container/aws_cluster.py index 097941e234..e47ce03029 100644 --- a/sdk/python/pulumi_gcp/container/aws_cluster.py +++ b/sdk/python/pulumi_gcp/container/aws_cluster.py @@ -607,48 +607,48 @@ def __init__(__self__, location="us-west1") primary = gcp.container.AwsCluster("primary", authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "my@service-account.com", }], - "adminGroups": [{ + "admin_groups": [{ "group": "group@domain.com", }], }, aws_region="my-aws-region", control_plane={ - "awsServicesAuthentication": { - "roleArn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", - "roleSessionName": "my--1p-dev-session", + "aws_services_authentication": { + "role_arn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + "role_session_name": "my--1p-dev-session", }, - "configEncryption": { - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "config_encryption": { + "kms_key_arn": "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", + "database_encryption": { + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", }, - "iamInstanceProfile": "my--1p-dev-controlplane", - "subnetIds": ["subnet-00000000000000000"], + "iam_instance_profile": "my--1p-dev-controlplane", + "subnet_ids": ["subnet-00000000000000000"], "version": versions.valid_versions[0], - "instanceType": "t3.medium", - "mainVolume": { + "instance_type": "t3.medium", + "main_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "GP3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "GP3", }, - "proxyConfig": { - "secretArn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", - "secretVersion": "12345678-ABCD-EFGH-IJKL-987654321098", + "proxy_config": { + "secret_arn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + "secret_version": "12345678-ABCD-EFGH-IJKL-987654321098", }, - "rootVolume": { + "root_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "GP3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "GP3", }, - "securityGroupIds": ["sg-00000000000000000"], - "sshConfig": { - "ec2KeyPair": "my--1p-dev-ssh", + "security_group_ids": ["sg-00000000000000000"], + "ssh_config": { + "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { "owner": "my@service-account.com", @@ -660,9 +660,9 @@ def __init__(__self__, location="us-west1", name="name", networking={ - "podAddressCidrBlocks": ["10.2.0.0/16"], - "serviceAddressCidrBlocks": ["10.1.0.0/16"], - "vpcId": "vpc-00000000000000000", + "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", @@ -680,45 +680,45 @@ def __init__(__self__, location="us-west1") primary = gcp.container.AwsCluster("primary", authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "my@service-account.com", }], }, aws_region="my-aws-region", control_plane={ - "awsServicesAuthentication": { - "roleArn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", - "roleSessionName": "my--1p-dev-session", + "aws_services_authentication": { + "role_arn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + "role_session_name": "my--1p-dev-session", }, - "configEncryption": { - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "config_encryption": { + "kms_key_arn": "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", + "database_encryption": { + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", }, - "iamInstanceProfile": "my--1p-dev-controlplane", - "subnetIds": ["subnet-00000000000000000"], + "iam_instance_profile": "my--1p-dev-controlplane", + "subnet_ids": ["subnet-00000000000000000"], "version": versions.valid_versions[0], - "instanceType": "t3.medium", - "mainVolume": { + "instance_type": "t3.medium", + "main_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "gp3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "gp3", }, - "proxyConfig": { - "secretArn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", - "secretVersion": "12345678-ABCD-EFGH-IJKL-987654321098", + "proxy_config": { + "secret_arn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + "secret_version": "12345678-ABCD-EFGH-IJKL-987654321098", }, - "rootVolume": { + "root_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "gp3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "gp3", }, - "securityGroupIds": ["sg-00000000000000000"], - "sshConfig": { - "ec2KeyPair": "my--1p-dev-ssh", + "security_group_ids": ["sg-00000000000000000"], + "ssh_config": { + "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { "owner": "my@service-account.com", @@ -730,9 +730,9 @@ def __init__(__self__, location="us-west1", name="name", networking={ - "podAddressCidrBlocks": ["10.2.0.0/16"], - "serviceAddressCidrBlocks": ["10.1.0.0/16"], - "vpcId": "vpc-00000000000000000", + "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", @@ -750,50 +750,50 @@ def __init__(__self__, location="us-west1") primary = gcp.container.AwsCluster("primary", authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "my@service-account.com", }], }, aws_region="my-aws-region", control_plane={ - "awsServicesAuthentication": { - "roleArn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", - "roleSessionName": "my--1p-dev-session", + "aws_services_authentication": { + "role_arn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + "role_session_name": "my--1p-dev-session", }, - "configEncryption": { - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "config_encryption": { + "kms_key_arn": "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", + "database_encryption": { + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", }, - "iamInstanceProfile": "my--1p-dev-controlplane", - "subnetIds": ["subnet-00000000000000000"], + "iam_instance_profile": "my--1p-dev-controlplane", + "subnet_ids": ["subnet-00000000000000000"], "version": versions.valid_versions[0], - "instanceType": "t3.medium", - "mainVolume": { + "instance_type": "t3.medium", + "main_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "gp3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "gp3", }, - "proxyConfig": { - "secretArn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", - "secretVersion": "12345678-ABCD-EFGH-IJKL-987654321098", + "proxy_config": { + "secret_arn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + "secret_version": "12345678-ABCD-EFGH-IJKL-987654321098", }, - "rootVolume": { + "root_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "gp3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "gp3", }, - "securityGroupIds": ["sg-00000000000000000"], - "sshConfig": { - "ec2KeyPair": "my--1p-dev-ssh", + "security_group_ids": ["sg-00000000000000000"], + "ssh_config": { + "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { "owner": "my@service-account.com", }, - "instancePlacement": { + "instance_placement": { "tenancy": "dedicated", }, }, @@ -803,9 +803,9 @@ def __init__(__self__, location="us-west1", name="name", networking={ - "podAddressCidrBlocks": ["10.2.0.0/16"], - "serviceAddressCidrBlocks": ["10.1.0.0/16"], - "vpcId": "vpc-00000000000000000", + "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", @@ -813,8 +813,8 @@ def __init__(__self__, description="A sample aws cluster", project="my-project-name", logging_config={ - "componentConfig": { - "enableComponents": [ + "component_config": { + "enable_components": [ "system_components", "workloads", ], @@ -889,48 +889,48 @@ def __init__(__self__, location="us-west1") primary = gcp.container.AwsCluster("primary", authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "my@service-account.com", }], - "adminGroups": [{ + "admin_groups": [{ "group": "group@domain.com", }], }, aws_region="my-aws-region", control_plane={ - "awsServicesAuthentication": { - "roleArn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", - "roleSessionName": "my--1p-dev-session", + "aws_services_authentication": { + "role_arn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + "role_session_name": "my--1p-dev-session", }, - "configEncryption": { - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "config_encryption": { + "kms_key_arn": "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", + "database_encryption": { + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", }, - "iamInstanceProfile": "my--1p-dev-controlplane", - "subnetIds": ["subnet-00000000000000000"], + "iam_instance_profile": "my--1p-dev-controlplane", + "subnet_ids": ["subnet-00000000000000000"], "version": versions.valid_versions[0], - "instanceType": "t3.medium", - "mainVolume": { + "instance_type": "t3.medium", + "main_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "GP3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "GP3", }, - "proxyConfig": { - "secretArn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", - "secretVersion": "12345678-ABCD-EFGH-IJKL-987654321098", + "proxy_config": { + "secret_arn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + "secret_version": "12345678-ABCD-EFGH-IJKL-987654321098", }, - "rootVolume": { + "root_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "GP3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "GP3", }, - "securityGroupIds": ["sg-00000000000000000"], - "sshConfig": { - "ec2KeyPair": "my--1p-dev-ssh", + "security_group_ids": ["sg-00000000000000000"], + "ssh_config": { + "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { "owner": "my@service-account.com", @@ -942,9 +942,9 @@ def __init__(__self__, location="us-west1", name="name", networking={ - "podAddressCidrBlocks": ["10.2.0.0/16"], - "serviceAddressCidrBlocks": ["10.1.0.0/16"], - "vpcId": "vpc-00000000000000000", + "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", @@ -962,45 +962,45 @@ def __init__(__self__, location="us-west1") primary = gcp.container.AwsCluster("primary", authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "my@service-account.com", }], }, aws_region="my-aws-region", control_plane={ - "awsServicesAuthentication": { - "roleArn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", - "roleSessionName": "my--1p-dev-session", + "aws_services_authentication": { + "role_arn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + "role_session_name": "my--1p-dev-session", }, - "configEncryption": { - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "config_encryption": { + "kms_key_arn": "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", + "database_encryption": { + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", }, - "iamInstanceProfile": "my--1p-dev-controlplane", - "subnetIds": ["subnet-00000000000000000"], + "iam_instance_profile": "my--1p-dev-controlplane", + "subnet_ids": ["subnet-00000000000000000"], "version": versions.valid_versions[0], - "instanceType": "t3.medium", - "mainVolume": { + "instance_type": "t3.medium", + "main_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "gp3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "gp3", }, - "proxyConfig": { - "secretArn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", - "secretVersion": "12345678-ABCD-EFGH-IJKL-987654321098", + "proxy_config": { + "secret_arn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + "secret_version": "12345678-ABCD-EFGH-IJKL-987654321098", }, - "rootVolume": { + "root_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "gp3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "gp3", }, - "securityGroupIds": ["sg-00000000000000000"], - "sshConfig": { - "ec2KeyPair": "my--1p-dev-ssh", + "security_group_ids": ["sg-00000000000000000"], + "ssh_config": { + "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { "owner": "my@service-account.com", @@ -1012,9 +1012,9 @@ def __init__(__self__, location="us-west1", name="name", networking={ - "podAddressCidrBlocks": ["10.2.0.0/16"], - "serviceAddressCidrBlocks": ["10.1.0.0/16"], - "vpcId": "vpc-00000000000000000", + "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", @@ -1032,50 +1032,50 @@ def __init__(__self__, location="us-west1") primary = gcp.container.AwsCluster("primary", authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "my@service-account.com", }], }, aws_region="my-aws-region", control_plane={ - "awsServicesAuthentication": { - "roleArn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", - "roleSessionName": "my--1p-dev-session", + "aws_services_authentication": { + "role_arn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + "role_session_name": "my--1p-dev-session", }, - "configEncryption": { - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "config_encryption": { + "kms_key_arn": "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", + "database_encryption": { + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", }, - "iamInstanceProfile": "my--1p-dev-controlplane", - "subnetIds": ["subnet-00000000000000000"], + "iam_instance_profile": "my--1p-dev-controlplane", + "subnet_ids": ["subnet-00000000000000000"], "version": versions.valid_versions[0], - "instanceType": "t3.medium", - "mainVolume": { + "instance_type": "t3.medium", + "main_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "gp3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "gp3", }, - "proxyConfig": { - "secretArn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", - "secretVersion": "12345678-ABCD-EFGH-IJKL-987654321098", + "proxy_config": { + "secret_arn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + "secret_version": "12345678-ABCD-EFGH-IJKL-987654321098", }, - "rootVolume": { + "root_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "gp3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "gp3", }, - "securityGroupIds": ["sg-00000000000000000"], - "sshConfig": { - "ec2KeyPair": "my--1p-dev-ssh", + "security_group_ids": ["sg-00000000000000000"], + "ssh_config": { + "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { "owner": "my@service-account.com", }, - "instancePlacement": { + "instance_placement": { "tenancy": "dedicated", }, }, @@ -1085,9 +1085,9 @@ def __init__(__self__, location="us-west1", name="name", networking={ - "podAddressCidrBlocks": ["10.2.0.0/16"], - "serviceAddressCidrBlocks": ["10.1.0.0/16"], - "vpcId": "vpc-00000000000000000", + "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", @@ -1095,8 +1095,8 @@ def __init__(__self__, description="A sample aws cluster", project="my-project-name", logging_config={ - "componentConfig": { - "enableComponents": [ + "component_config": { + "enable_components": [ "system_components", "workloads", ], diff --git a/sdk/python/pulumi_gcp/container/aws_node_pool.py b/sdk/python/pulumi_gcp/container/aws_node_pool.py index 9d5ceb8bbc..4d65380423 100644 --- a/sdk/python/pulumi_gcp/container/aws_node_pool.py +++ b/sdk/python/pulumi_gcp/container/aws_node_pool.py @@ -574,45 +574,45 @@ def __init__(__self__, location="us-west1") primary = gcp.container.AwsCluster("primary", authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "my@service-account.com", }], }, aws_region="my-aws-region", control_plane={ - "awsServicesAuthentication": { - "roleArn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", - "roleSessionName": "my--1p-dev-session", + "aws_services_authentication": { + "role_arn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + "role_session_name": "my--1p-dev-session", }, - "configEncryption": { - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "config_encryption": { + "kms_key_arn": "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", + "database_encryption": { + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", }, - "iamInstanceProfile": "my--1p-dev-controlplane", - "subnetIds": ["subnet-00000000000000000"], + "iam_instance_profile": "my--1p-dev-controlplane", + "subnet_ids": ["subnet-00000000000000000"], "version": versions.valid_versions[0], - "instanceType": "t3.medium", - "mainVolume": { + "instance_type": "t3.medium", + "main_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "GP3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "GP3", }, - "proxyConfig": { - "secretArn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", - "secretVersion": "12345678-ABCD-EFGH-IJKL-987654321098", + "proxy_config": { + "secret_arn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + "secret_version": "12345678-ABCD-EFGH-IJKL-987654321098", }, - "rootVolume": { + "root_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "GP3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "GP3", }, - "securityGroupIds": ["sg-00000000000000000"], - "sshConfig": { - "ec2KeyPair": "my--1p-dev-ssh", + "security_group_ids": ["sg-00000000000000000"], + "ssh_config": { + "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { "owner": "my@service-account.com", @@ -624,9 +624,9 @@ def __init__(__self__, location="us-west1", name="name", networking={ - "podAddressCidrBlocks": ["10.2.0.0/16"], - "serviceAddressCidrBlocks": ["10.1.0.0/16"], - "vpcId": "vpc-00000000000000000", + "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", @@ -635,35 +635,35 @@ def __init__(__self__, project="my-project-name") primary_aws_node_pool = gcp.container.AwsNodePool("primary", autoscaling={ - "maxNodeCount": 5, - "minNodeCount": 1, + "max_node_count": 5, + "min_node_count": 1, }, cluster=primary.name, config={ - "configEncryption": { - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "config_encryption": { + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", }, - "iamInstanceProfile": "my--1p-dev-nodepool", - "instanceType": "t3.medium", + "iam_instance_profile": "my--1p-dev-nodepool", + "instance_type": "t3.medium", "labels": { - "label-one": "value-one", + "label_one": "value-one", }, - "rootVolume": { + "root_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "GP3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "GP3", }, - "securityGroupIds": ["sg-00000000000000000"], - "proxyConfig": { - "secretArn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", - "secretVersion": "12345678-ABCD-EFGH-IJKL-987654321098", + "security_group_ids": ["sg-00000000000000000"], + "proxy_config": { + "secret_arn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + "secret_version": "12345678-ABCD-EFGH-IJKL-987654321098", }, - "sshConfig": { - "ec2KeyPair": "my--1p-dev-ssh", + "ssh_config": { + "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { - "tag-one": "value-one", + "tag_one": "value-one", }, "taints": [{ "effect": "PREFER_NO_SCHEDULE", @@ -673,7 +673,7 @@ def __init__(__self__, }, location="us-west1", max_pods_constraint={ - "maxPodsPerNode": 110, + "max_pods_per_node": 110, }, name="node-pool-name", subnet_id="subnet-00000000000000000", @@ -682,7 +682,7 @@ def __init__(__self__, "label-one": "value-one", }, management={ - "autoRepair": True, + "auto_repair": True, }, project="my-project-name") ``` @@ -696,45 +696,45 @@ def __init__(__self__, location="us-west1") primary = gcp.container.AwsCluster("primary", authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "my@service-account.com", }], }, aws_region="my-aws-region", control_plane={ - "awsServicesAuthentication": { - "roleArn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", - "roleSessionName": "my--1p-dev-session", + "aws_services_authentication": { + "role_arn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + "role_session_name": "my--1p-dev-session", }, - "configEncryption": { - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "config_encryption": { + "kms_key_arn": "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", + "database_encryption": { + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", }, - "iamInstanceProfile": "my--1p-dev-controlplane", - "subnetIds": ["subnet-00000000000000000"], + "iam_instance_profile": "my--1p-dev-controlplane", + "subnet_ids": ["subnet-00000000000000000"], "version": versions.valid_versions[0], - "instanceType": "t3.medium", - "mainVolume": { + "instance_type": "t3.medium", + "main_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "GP3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "GP3", }, - "proxyConfig": { - "secretArn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", - "secretVersion": "12345678-ABCD-EFGH-IJKL-987654321098", + "proxy_config": { + "secret_arn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + "secret_version": "12345678-ABCD-EFGH-IJKL-987654321098", }, - "rootVolume": { + "root_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "GP3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "GP3", }, - "securityGroupIds": ["sg-00000000000000000"], - "sshConfig": { - "ec2KeyPair": "my--1p-dev-ssh", + "security_group_ids": ["sg-00000000000000000"], + "ssh_config": { + "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { "owner": "my@service-account.com", @@ -746,9 +746,9 @@ def __init__(__self__, location="us-west1", name="name", networking={ - "podAddressCidrBlocks": ["10.2.0.0/16"], - "serviceAddressCidrBlocks": ["10.1.0.0/16"], - "vpcId": "vpc-00000000000000000", + "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", @@ -757,35 +757,35 @@ def __init__(__self__, project="my-project-name") primary_aws_node_pool = gcp.container.AwsNodePool("primary", autoscaling={ - "maxNodeCount": 5, - "minNodeCount": 1, + "max_node_count": 5, + "min_node_count": 1, }, cluster=primary.name, config={ - "configEncryption": { - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "config_encryption": { + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", }, - "iamInstanceProfile": "my--1p-dev-nodepool", - "instanceType": "t3.medium", + "iam_instance_profile": "my--1p-dev-nodepool", + "instance_type": "t3.medium", "labels": { - "label-one": "value-one", + "label_one": "value-one", }, - "rootVolume": { + "root_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "gp3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "gp3", }, - "securityGroupIds": ["sg-00000000000000000"], - "proxyConfig": { - "secretArn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", - "secretVersion": "12345678-ABCD-EFGH-IJKL-987654321098", + "security_group_ids": ["sg-00000000000000000"], + "proxy_config": { + "secret_arn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + "secret_version": "12345678-ABCD-EFGH-IJKL-987654321098", }, - "sshConfig": { - "ec2KeyPair": "my--1p-dev-ssh", + "ssh_config": { + "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { - "tag-one": "value-one", + "tag_one": "value-one", }, "taints": [{ "effect": "prefer_no_schedule", @@ -795,7 +795,7 @@ def __init__(__self__, }, location="us-west1", max_pods_constraint={ - "maxPodsPerNode": 110, + "max_pods_per_node": 110, }, name="node-pool-name", subnet_id="subnet-00000000000000000", @@ -815,45 +815,45 @@ def __init__(__self__, location="us-west1") primary = gcp.container.AwsCluster("primary", authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "my@service-account.com", }], }, aws_region="my-aws-region", control_plane={ - "awsServicesAuthentication": { - "roleArn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", - "roleSessionName": "my--1p-dev-session", + "aws_services_authentication": { + "role_arn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + "role_session_name": "my--1p-dev-session", }, - "configEncryption": { - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "config_encryption": { + "kms_key_arn": "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", + "database_encryption": { + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", }, - "iamInstanceProfile": "my--1p-dev-controlplane", - "subnetIds": ["subnet-00000000000000000"], + "iam_instance_profile": "my--1p-dev-controlplane", + "subnet_ids": ["subnet-00000000000000000"], "version": versions.valid_versions[0], - "instanceType": "t3.medium", - "mainVolume": { + "instance_type": "t3.medium", + "main_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "GP3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "GP3", }, - "proxyConfig": { - "secretArn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", - "secretVersion": "12345678-ABCD-EFGH-IJKL-987654321098", + "proxy_config": { + "secret_arn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + "secret_version": "12345678-ABCD-EFGH-IJKL-987654321098", }, - "rootVolume": { + "root_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "GP3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "GP3", }, - "securityGroupIds": ["sg-00000000000000000"], - "sshConfig": { - "ec2KeyPair": "my--1p-dev-ssh", + "security_group_ids": ["sg-00000000000000000"], + "ssh_config": { + "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { "owner": "my@service-account.com", @@ -865,9 +865,9 @@ def __init__(__self__, location="us-west1", name="name", networking={ - "podAddressCidrBlocks": ["10.2.0.0/16"], - "serviceAddressCidrBlocks": ["10.1.0.0/16"], - "vpcId": "vpc-00000000000000000", + "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", @@ -876,49 +876,49 @@ def __init__(__self__, project="my-project-name") primary_aws_node_pool = gcp.container.AwsNodePool("primary", autoscaling={ - "maxNodeCount": 5, - "minNodeCount": 1, + "max_node_count": 5, + "min_node_count": 1, }, cluster=primary.name, config={ - "configEncryption": { - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "config_encryption": { + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", }, - "iamInstanceProfile": "my--1p-dev-nodepool", - "instanceType": "t3.medium", + "iam_instance_profile": "my--1p-dev-nodepool", + "instance_type": "t3.medium", "labels": { - "label-one": "value-one", + "label_one": "value-one", }, - "rootVolume": { + "root_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "gp3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "gp3", }, - "securityGroupIds": ["sg-00000000000000000"], - "proxyConfig": { - "secretArn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", - "secretVersion": "12345678-ABCD-EFGH-IJKL-987654321098", + "security_group_ids": ["sg-00000000000000000"], + "proxy_config": { + "secret_arn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + "secret_version": "12345678-ABCD-EFGH-IJKL-987654321098", }, - "sshConfig": { - "ec2KeyPair": "my--1p-dev-ssh", + "ssh_config": { + "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { - "tag-one": "value-one", + "tag_one": "value-one", }, "taints": [{ "effect": "prefer_no_schedule", "key": "taint-key", "value": "taint-value", }], - "instancePlacement": { + "instance_placement": { "tenancy": "dedicated", }, - "imageType": "ubuntu", + "image_type": "ubuntu", }, location="us-west1", max_pods_constraint={ - "maxPodsPerNode": 110, + "max_pods_per_node": 110, }, name="node-pool-name", subnet_id="subnet-00000000000000000", @@ -996,45 +996,45 @@ def __init__(__self__, location="us-west1") primary = gcp.container.AwsCluster("primary", authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "my@service-account.com", }], }, aws_region="my-aws-region", control_plane={ - "awsServicesAuthentication": { - "roleArn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", - "roleSessionName": "my--1p-dev-session", + "aws_services_authentication": { + "role_arn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + "role_session_name": "my--1p-dev-session", }, - "configEncryption": { - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "config_encryption": { + "kms_key_arn": "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", + "database_encryption": { + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", }, - "iamInstanceProfile": "my--1p-dev-controlplane", - "subnetIds": ["subnet-00000000000000000"], + "iam_instance_profile": "my--1p-dev-controlplane", + "subnet_ids": ["subnet-00000000000000000"], "version": versions.valid_versions[0], - "instanceType": "t3.medium", - "mainVolume": { + "instance_type": "t3.medium", + "main_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "GP3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "GP3", }, - "proxyConfig": { - "secretArn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", - "secretVersion": "12345678-ABCD-EFGH-IJKL-987654321098", + "proxy_config": { + "secret_arn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + "secret_version": "12345678-ABCD-EFGH-IJKL-987654321098", }, - "rootVolume": { + "root_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "GP3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "GP3", }, - "securityGroupIds": ["sg-00000000000000000"], - "sshConfig": { - "ec2KeyPair": "my--1p-dev-ssh", + "security_group_ids": ["sg-00000000000000000"], + "ssh_config": { + "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { "owner": "my@service-account.com", @@ -1046,9 +1046,9 @@ def __init__(__self__, location="us-west1", name="name", networking={ - "podAddressCidrBlocks": ["10.2.0.0/16"], - "serviceAddressCidrBlocks": ["10.1.0.0/16"], - "vpcId": "vpc-00000000000000000", + "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", @@ -1057,35 +1057,35 @@ def __init__(__self__, project="my-project-name") primary_aws_node_pool = gcp.container.AwsNodePool("primary", autoscaling={ - "maxNodeCount": 5, - "minNodeCount": 1, + "max_node_count": 5, + "min_node_count": 1, }, cluster=primary.name, config={ - "configEncryption": { - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "config_encryption": { + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", }, - "iamInstanceProfile": "my--1p-dev-nodepool", - "instanceType": "t3.medium", + "iam_instance_profile": "my--1p-dev-nodepool", + "instance_type": "t3.medium", "labels": { - "label-one": "value-one", + "label_one": "value-one", }, - "rootVolume": { + "root_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "GP3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "GP3", }, - "securityGroupIds": ["sg-00000000000000000"], - "proxyConfig": { - "secretArn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", - "secretVersion": "12345678-ABCD-EFGH-IJKL-987654321098", + "security_group_ids": ["sg-00000000000000000"], + "proxy_config": { + "secret_arn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + "secret_version": "12345678-ABCD-EFGH-IJKL-987654321098", }, - "sshConfig": { - "ec2KeyPair": "my--1p-dev-ssh", + "ssh_config": { + "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { - "tag-one": "value-one", + "tag_one": "value-one", }, "taints": [{ "effect": "PREFER_NO_SCHEDULE", @@ -1095,7 +1095,7 @@ def __init__(__self__, }, location="us-west1", max_pods_constraint={ - "maxPodsPerNode": 110, + "max_pods_per_node": 110, }, name="node-pool-name", subnet_id="subnet-00000000000000000", @@ -1104,7 +1104,7 @@ def __init__(__self__, "label-one": "value-one", }, management={ - "autoRepair": True, + "auto_repair": True, }, project="my-project-name") ``` @@ -1118,45 +1118,45 @@ def __init__(__self__, location="us-west1") primary = gcp.container.AwsCluster("primary", authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "my@service-account.com", }], }, aws_region="my-aws-region", control_plane={ - "awsServicesAuthentication": { - "roleArn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", - "roleSessionName": "my--1p-dev-session", + "aws_services_authentication": { + "role_arn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + "role_session_name": "my--1p-dev-session", }, - "configEncryption": { - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "config_encryption": { + "kms_key_arn": "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", + "database_encryption": { + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", }, - "iamInstanceProfile": "my--1p-dev-controlplane", - "subnetIds": ["subnet-00000000000000000"], + "iam_instance_profile": "my--1p-dev-controlplane", + "subnet_ids": ["subnet-00000000000000000"], "version": versions.valid_versions[0], - "instanceType": "t3.medium", - "mainVolume": { + "instance_type": "t3.medium", + "main_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "GP3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "GP3", }, - "proxyConfig": { - "secretArn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", - "secretVersion": "12345678-ABCD-EFGH-IJKL-987654321098", + "proxy_config": { + "secret_arn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + "secret_version": "12345678-ABCD-EFGH-IJKL-987654321098", }, - "rootVolume": { + "root_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "GP3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "GP3", }, - "securityGroupIds": ["sg-00000000000000000"], - "sshConfig": { - "ec2KeyPair": "my--1p-dev-ssh", + "security_group_ids": ["sg-00000000000000000"], + "ssh_config": { + "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { "owner": "my@service-account.com", @@ -1168,9 +1168,9 @@ def __init__(__self__, location="us-west1", name="name", networking={ - "podAddressCidrBlocks": ["10.2.0.0/16"], - "serviceAddressCidrBlocks": ["10.1.0.0/16"], - "vpcId": "vpc-00000000000000000", + "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", @@ -1179,35 +1179,35 @@ def __init__(__self__, project="my-project-name") primary_aws_node_pool = gcp.container.AwsNodePool("primary", autoscaling={ - "maxNodeCount": 5, - "minNodeCount": 1, + "max_node_count": 5, + "min_node_count": 1, }, cluster=primary.name, config={ - "configEncryption": { - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "config_encryption": { + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", }, - "iamInstanceProfile": "my--1p-dev-nodepool", - "instanceType": "t3.medium", + "iam_instance_profile": "my--1p-dev-nodepool", + "instance_type": "t3.medium", "labels": { - "label-one": "value-one", + "label_one": "value-one", }, - "rootVolume": { + "root_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "gp3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "gp3", }, - "securityGroupIds": ["sg-00000000000000000"], - "proxyConfig": { - "secretArn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", - "secretVersion": "12345678-ABCD-EFGH-IJKL-987654321098", + "security_group_ids": ["sg-00000000000000000"], + "proxy_config": { + "secret_arn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + "secret_version": "12345678-ABCD-EFGH-IJKL-987654321098", }, - "sshConfig": { - "ec2KeyPair": "my--1p-dev-ssh", + "ssh_config": { + "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { - "tag-one": "value-one", + "tag_one": "value-one", }, "taints": [{ "effect": "prefer_no_schedule", @@ -1217,7 +1217,7 @@ def __init__(__self__, }, location="us-west1", max_pods_constraint={ - "maxPodsPerNode": 110, + "max_pods_per_node": 110, }, name="node-pool-name", subnet_id="subnet-00000000000000000", @@ -1237,45 +1237,45 @@ def __init__(__self__, location="us-west1") primary = gcp.container.AwsCluster("primary", authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "my@service-account.com", }], }, aws_region="my-aws-region", control_plane={ - "awsServicesAuthentication": { - "roleArn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", - "roleSessionName": "my--1p-dev-session", + "aws_services_authentication": { + "role_arn": "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + "role_session_name": "my--1p-dev-session", }, - "configEncryption": { - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "config_encryption": { + "kms_key_arn": "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", + "database_encryption": { + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", }, - "iamInstanceProfile": "my--1p-dev-controlplane", - "subnetIds": ["subnet-00000000000000000"], + "iam_instance_profile": "my--1p-dev-controlplane", + "subnet_ids": ["subnet-00000000000000000"], "version": versions.valid_versions[0], - "instanceType": "t3.medium", - "mainVolume": { + "instance_type": "t3.medium", + "main_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "GP3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "GP3", }, - "proxyConfig": { - "secretArn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", - "secretVersion": "12345678-ABCD-EFGH-IJKL-987654321098", + "proxy_config": { + "secret_arn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + "secret_version": "12345678-ABCD-EFGH-IJKL-987654321098", }, - "rootVolume": { + "root_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "GP3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "GP3", }, - "securityGroupIds": ["sg-00000000000000000"], - "sshConfig": { - "ec2KeyPair": "my--1p-dev-ssh", + "security_group_ids": ["sg-00000000000000000"], + "ssh_config": { + "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { "owner": "my@service-account.com", @@ -1287,9 +1287,9 @@ def __init__(__self__, location="us-west1", name="name", networking={ - "podAddressCidrBlocks": ["10.2.0.0/16"], - "serviceAddressCidrBlocks": ["10.1.0.0/16"], - "vpcId": "vpc-00000000000000000", + "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", @@ -1298,49 +1298,49 @@ def __init__(__self__, project="my-project-name") primary_aws_node_pool = gcp.container.AwsNodePool("primary", autoscaling={ - "maxNodeCount": 5, - "minNodeCount": 1, + "max_node_count": 5, + "min_node_count": 1, }, cluster=primary.name, config={ - "configEncryption": { - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "config_encryption": { + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", }, - "iamInstanceProfile": "my--1p-dev-nodepool", - "instanceType": "t3.medium", + "iam_instance_profile": "my--1p-dev-nodepool", + "instance_type": "t3.medium", "labels": { - "label-one": "value-one", + "label_one": "value-one", }, - "rootVolume": { + "root_volume": { "iops": 3000, - "kmsKeyArn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", - "sizeGib": 10, - "volumeType": "gp3", + "kms_key_arn": "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + "size_gib": 10, + "volume_type": "gp3", }, - "securityGroupIds": ["sg-00000000000000000"], - "proxyConfig": { - "secretArn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", - "secretVersion": "12345678-ABCD-EFGH-IJKL-987654321098", + "security_group_ids": ["sg-00000000000000000"], + "proxy_config": { + "secret_arn": "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + "secret_version": "12345678-ABCD-EFGH-IJKL-987654321098", }, - "sshConfig": { - "ec2KeyPair": "my--1p-dev-ssh", + "ssh_config": { + "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { - "tag-one": "value-one", + "tag_one": "value-one", }, "taints": [{ "effect": "prefer_no_schedule", "key": "taint-key", "value": "taint-value", }], - "instancePlacement": { + "instance_placement": { "tenancy": "dedicated", }, - "imageType": "ubuntu", + "image_type": "ubuntu", }, location="us-west1", max_pods_constraint={ - "maxPodsPerNode": 110, + "max_pods_per_node": 110, }, name="node-pool-name", subnet_id="subnet-00000000000000000", diff --git a/sdk/python/pulumi_gcp/container/azure_cluster.py b/sdk/python/pulumi_gcp/container/azure_cluster.py index 455b9c040b..445491696a 100644 --- a/sdk/python/pulumi_gcp/container/azure_cluster.py +++ b/sdk/python/pulumi_gcp/container/azure_cluster.py @@ -690,20 +690,20 @@ def __init__(__self__, project="my-project-name") primary = gcp.container.AzureCluster("primary", authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "mmv2@google.com", }], - "adminGroups": [{ + "admin_groups": [{ "group": "group@domain.com", }], }, azure_region="westus2", client=basic.name.apply(lambda name: f"projects/my-project-number/locations/us-west1/azureClients/{name}"), control_plane={ - "sshConfig": { - "authorizedKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers", + "ssh_config": { + "authorized_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers", }, - "subnetId": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default", + "subnet_id": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default", "version": versions.valid_versions[0], }, fleet={ @@ -712,9 +712,9 @@ def __init__(__self__, location="us-west1", name="name", networking={ - "podAddressCidrBlocks": ["10.200.0.0/16"], - "serviceAddressCidrBlocks": ["10.32.0.0/24"], - "virtualNetworkId": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet", + "pod_address_cidr_blocks": ["10.200.0.0/16"], + "service_address_cidr_blocks": ["10.32.0.0/24"], + "virtual_network_id": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet", }, resource_group_id="/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster", project="my-project-name") @@ -735,17 +735,17 @@ def __init__(__self__, project="my-project-name") primary = gcp.container.AzureCluster("primary", authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "mmv2@google.com", }], }, azure_region="westus2", client=basic.name.apply(lambda name: f"projects/my-project-number/locations/us-west1/azureClients/{name}"), control_plane={ - "sshConfig": { - "authorizedKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers", + "ssh_config": { + "authorized_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers", }, - "subnetId": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default", + "subnet_id": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default", "version": versions.valid_versions[0], }, fleet={ @@ -754,15 +754,15 @@ def __init__(__self__, location="us-west1", name="name", networking={ - "podAddressCidrBlocks": ["10.200.0.0/16"], - "serviceAddressCidrBlocks": ["10.32.0.0/24"], - "virtualNetworkId": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet", + "pod_address_cidr_blocks": ["10.200.0.0/16"], + "service_address_cidr_blocks": ["10.32.0.0/24"], + "virtual_network_id": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet", }, resource_group_id="/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster", project="my-project-name", logging_config={ - "componentConfig": { - "enableComponents": [ + "component_config": { + "enable_components": [ "system_components", "workloads", ], @@ -848,20 +848,20 @@ def __init__(__self__, project="my-project-name") primary = gcp.container.AzureCluster("primary", authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "mmv2@google.com", }], - "adminGroups": [{ + "admin_groups": [{ "group": "group@domain.com", }], }, azure_region="westus2", client=basic.name.apply(lambda name: f"projects/my-project-number/locations/us-west1/azureClients/{name}"), control_plane={ - "sshConfig": { - "authorizedKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers", + "ssh_config": { + "authorized_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers", }, - "subnetId": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default", + "subnet_id": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default", "version": versions.valid_versions[0], }, fleet={ @@ -870,9 +870,9 @@ def __init__(__self__, location="us-west1", name="name", networking={ - "podAddressCidrBlocks": ["10.200.0.0/16"], - "serviceAddressCidrBlocks": ["10.32.0.0/24"], - "virtualNetworkId": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet", + "pod_address_cidr_blocks": ["10.200.0.0/16"], + "service_address_cidr_blocks": ["10.32.0.0/24"], + "virtual_network_id": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet", }, resource_group_id="/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster", project="my-project-name") @@ -893,17 +893,17 @@ def __init__(__self__, project="my-project-name") primary = gcp.container.AzureCluster("primary", authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "mmv2@google.com", }], }, azure_region="westus2", client=basic.name.apply(lambda name: f"projects/my-project-number/locations/us-west1/azureClients/{name}"), control_plane={ - "sshConfig": { - "authorizedKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers", + "ssh_config": { + "authorized_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers", }, - "subnetId": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default", + "subnet_id": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default", "version": versions.valid_versions[0], }, fleet={ @@ -912,15 +912,15 @@ def __init__(__self__, location="us-west1", name="name", networking={ - "podAddressCidrBlocks": ["10.200.0.0/16"], - "serviceAddressCidrBlocks": ["10.32.0.0/24"], - "virtualNetworkId": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet", + "pod_address_cidr_blocks": ["10.200.0.0/16"], + "service_address_cidr_blocks": ["10.32.0.0/24"], + "virtual_network_id": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet", }, resource_group_id="/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster", project="my-project-name", logging_config={ - "componentConfig": { - "enableComponents": [ + "component_config": { + "enable_components": [ "system_components", "workloads", ], diff --git a/sdk/python/pulumi_gcp/container/azure_node_pool.py b/sdk/python/pulumi_gcp/container/azure_node_pool.py index fe0a6c9b4a..fe511813c2 100644 --- a/sdk/python/pulumi_gcp/container/azure_node_pool.py +++ b/sdk/python/pulumi_gcp/container/azure_node_pool.py @@ -580,17 +580,17 @@ def __init__(__self__, project="my-project-name") primary = gcp.container.AzureCluster("primary", authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "mmv2@google.com", }], }, azure_region="westus2", client=basic.name.apply(lambda name: f"projects/my-project-number/locations/us-west1/azureClients/{name}"), control_plane={ - "sshConfig": { - "authorizedKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers", + "ssh_config": { + "authorized_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers", }, - "subnetId": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default", + "subnet_id": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default", "version": versions.valid_versions[0], }, fleet={ @@ -599,28 +599,28 @@ def __init__(__self__, location="us-west1", name="name", networking={ - "podAddressCidrBlocks": ["10.200.0.0/16"], - "serviceAddressCidrBlocks": ["10.32.0.0/24"], - "virtualNetworkId": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet", + "pod_address_cidr_blocks": ["10.200.0.0/16"], + "service_address_cidr_blocks": ["10.32.0.0/24"], + "virtual_network_id": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet", }, resource_group_id="/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster", project="my-project-name") primary_azure_node_pool = gcp.container.AzureNodePool("primary", autoscaling={ - "maxNodeCount": 3, - "minNodeCount": 2, + "max_node_count": 3, + "min_node_count": 2, }, cluster=primary.name, config={ - "sshConfig": { - "authorizedKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers", + "ssh_config": { + "authorized_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers", }, - "proxyConfig": { - "resourceGroupId": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster", - "secretId": "https://my--dev-keyvault.vault.azure.net/secrets/my--dev-secret/0000000000000000000000000000000000", + "proxy_config": { + "resource_group_id": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster", + "secret_id": "https://my--dev-keyvault.vault.azure.net/secrets/my--dev-secret/0000000000000000000000000000000000", }, - "rootVolume": { - "sizeGib": 32, + "root_volume": { + "size_gib": 32, }, "tags": { "owner": "mmv2", @@ -628,11 +628,11 @@ def __init__(__self__, "labels": { "key_one": "label_one", }, - "vmSize": "Standard_DS2_v2", + "vm_size": "Standard_DS2_v2", }, location="us-west1", max_pods_constraint={ - "maxPodsPerNode": 110, + "max_pods_per_node": 110, }, name="node-pool-name", subnet_id="/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default", @@ -641,7 +641,7 @@ def __init__(__self__, "annotation-one": "value-one", }, management={ - "autoRepair": True, + "auto_repair": True, }, project="my-project-name") ``` @@ -719,17 +719,17 @@ def __init__(__self__, project="my-project-name") primary = gcp.container.AzureCluster("primary", authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "mmv2@google.com", }], }, azure_region="westus2", client=basic.name.apply(lambda name: f"projects/my-project-number/locations/us-west1/azureClients/{name}"), control_plane={ - "sshConfig": { - "authorizedKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers", + "ssh_config": { + "authorized_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers", }, - "subnetId": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default", + "subnet_id": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default", "version": versions.valid_versions[0], }, fleet={ @@ -738,28 +738,28 @@ def __init__(__self__, location="us-west1", name="name", networking={ - "podAddressCidrBlocks": ["10.200.0.0/16"], - "serviceAddressCidrBlocks": ["10.32.0.0/24"], - "virtualNetworkId": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet", + "pod_address_cidr_blocks": ["10.200.0.0/16"], + "service_address_cidr_blocks": ["10.32.0.0/24"], + "virtual_network_id": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet", }, resource_group_id="/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster", project="my-project-name") primary_azure_node_pool = gcp.container.AzureNodePool("primary", autoscaling={ - "maxNodeCount": 3, - "minNodeCount": 2, + "max_node_count": 3, + "min_node_count": 2, }, cluster=primary.name, config={ - "sshConfig": { - "authorizedKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers", + "ssh_config": { + "authorized_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8yaayO6lnb2v+SedxUMa2c8vtIEzCzBjM3EJJsv8Vm9zUDWR7dXWKoNGARUb2mNGXASvI6mFIDXTIlkQ0poDEPpMaXR0g2cb5xT8jAAJq7fqXL3+0rcJhY/uigQ+MrT6s+ub0BFVbsmGHNrMQttXX9gtmwkeAEvj3mra9e5pkNf90qlKnZz6U0SVArxVsLx07vHPHDIYrl0OPG4zUREF52igbBPiNrHJFDQJT/4YlDMJmo/QT/A1D6n9ocemvZSzhRx15/Arjowhr+VVKSbaxzPtEfY0oIg2SrqJnnr/l3Du5qIefwh5VmCZe4xopPUaDDoOIEFriZ88sB+3zz8ib8sk8zJJQCgeP78tQvXCgS+4e5W3TUg9mxjB6KjXTyHIVhDZqhqde0OI3Fy1UuVzRUwnBaLjBnAwP5EoFQGRmDYk/rEYe7HTmovLeEBUDQocBQKT4Ripm/xJkkWY7B07K/tfo56dGUCkvyIVXKBInCh+dLK7gZapnd4UWkY0xBYcwo1geMLRq58iFTLA2j/JmpmHXp7m0l7jJii7d44uD3tTIFYThn7NlOnvhLim/YcBK07GMGIN7XwrrKZKmxXaspw6KBWVhzuw1UPxctxshYEaMLfFg/bwOw8HvMPr9VtrElpSB7oiOh91PDIPdPBgHCi7N2QgQ5l/ZDBHieSpNrQ== thomasrodgers", }, - "proxyConfig": { - "resourceGroupId": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster", - "secretId": "https://my--dev-keyvault.vault.azure.net/secrets/my--dev-secret/0000000000000000000000000000000000", + "proxy_config": { + "resource_group_id": "/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-cluster", + "secret_id": "https://my--dev-keyvault.vault.azure.net/secrets/my--dev-secret/0000000000000000000000000000000000", }, - "rootVolume": { - "sizeGib": 32, + "root_volume": { + "size_gib": 32, }, "tags": { "owner": "mmv2", @@ -767,11 +767,11 @@ def __init__(__self__, "labels": { "key_one": "label_one", }, - "vmSize": "Standard_DS2_v2", + "vm_size": "Standard_DS2_v2", }, location="us-west1", max_pods_constraint={ - "maxPodsPerNode": 110, + "max_pods_per_node": 110, }, name="node-pool-name", subnet_id="/subscriptions/12345678-1234-1234-1234-123456789111/resourceGroups/my--dev-byo/providers/Microsoft.Network/virtualNetworks/my--dev-vnet/subnets/default", @@ -780,7 +780,7 @@ def __init__(__self__, "annotation-one": "value-one", }, management={ - "autoRepair": True, + "auto_repair": True, }, project="my-project-name") ``` diff --git a/sdk/python/pulumi_gcp/container/cluster.py b/sdk/python/pulumi_gcp/container/cluster.py index f7de0b3702..c2f640dc8f 100644 --- a/sdk/python/pulumi_gcp/container/cluster.py +++ b/sdk/python/pulumi_gcp/container/cluster.py @@ -3042,9 +3042,9 @@ def __init__(__self__, node_count=1, node_config={ "preemptible": True, - "machineType": "e2-medium", - "serviceAccount": default.email, - "oauthScopes": ["https://www.googleapis.com/auth/cloud-platform"], + "machine_type": "e2-medium", + "service_account": default.email, + "oauth_scopes": ["https://www.googleapis.com/auth/cloud-platform"], }) ``` @@ -3066,8 +3066,8 @@ def __init__(__self__, location="us-central1-a", initial_node_count=3, node_config={ - "serviceAccount": default.email, - "oauthScopes": ["https://www.googleapis.com/auth/cloud-platform"], + "service_account": default.email, + "oauth_scopes": ["https://www.googleapis.com/auth/cloud-platform"], "labels": { "foo": "bar", }, @@ -3376,9 +3376,9 @@ def __init__(__self__, node_count=1, node_config={ "preemptible": True, - "machineType": "e2-medium", - "serviceAccount": default.email, - "oauthScopes": ["https://www.googleapis.com/auth/cloud-platform"], + "machine_type": "e2-medium", + "service_account": default.email, + "oauth_scopes": ["https://www.googleapis.com/auth/cloud-platform"], }) ``` @@ -3400,8 +3400,8 @@ def __init__(__self__, location="us-central1-a", initial_node_count=3, node_config={ - "serviceAccount": default.email, - "oauthScopes": ["https://www.googleapis.com/auth/cloud-platform"], + "service_account": default.email, + "oauth_scopes": ["https://www.googleapis.com/auth/cloud-platform"], "labels": { "foo": "bar", }, diff --git a/sdk/python/pulumi_gcp/container/node_pool.py b/sdk/python/pulumi_gcp/container/node_pool.py index 3d29a8e413..bcbab46a40 100644 --- a/sdk/python/pulumi_gcp/container/node_pool.py +++ b/sdk/python/pulumi_gcp/container/node_pool.py @@ -831,9 +831,9 @@ def __init__(__self__, node_count=1, node_config={ "preemptible": True, - "machineType": "e2-medium", - "serviceAccount": default.email, - "oauthScopes": ["https://www.googleapis.com/auth/cloud-platform"], + "machine_type": "e2-medium", + "service_account": default.email, + "oauth_scopes": ["https://www.googleapis.com/auth/cloud-platform"], }) ``` @@ -852,9 +852,9 @@ def __init__(__self__, initial_node_count=3, node_locations=["us-central1-c"], node_config={ - "serviceAccount": default.email, - "oauthScopes": ["https://www.googleapis.com/auth/cloud-platform"], - "guestAccelerators": [{ + "service_account": default.email, + "oauth_scopes": ["https://www.googleapis.com/auth/cloud-platform"], + "guest_accelerators": [{ "type": "nvidia-tesla-k80", "count": 1, }], @@ -863,9 +863,9 @@ def __init__(__self__, name="my-node-pool", cluster=primary.id, node_config={ - "machineType": "e2-medium", - "serviceAccount": default.email, - "oauthScopes": ["https://www.googleapis.com/auth/cloud-platform"], + "machine_type": "e2-medium", + "service_account": default.email, + "oauth_scopes": ["https://www.googleapis.com/auth/cloud-platform"], }) ``` @@ -982,9 +982,9 @@ def __init__(__self__, node_count=1, node_config={ "preemptible": True, - "machineType": "e2-medium", - "serviceAccount": default.email, - "oauthScopes": ["https://www.googleapis.com/auth/cloud-platform"], + "machine_type": "e2-medium", + "service_account": default.email, + "oauth_scopes": ["https://www.googleapis.com/auth/cloud-platform"], }) ``` @@ -1003,9 +1003,9 @@ def __init__(__self__, initial_node_count=3, node_locations=["us-central1-c"], node_config={ - "serviceAccount": default.email, - "oauthScopes": ["https://www.googleapis.com/auth/cloud-platform"], - "guestAccelerators": [{ + "service_account": default.email, + "oauth_scopes": ["https://www.googleapis.com/auth/cloud-platform"], + "guest_accelerators": [{ "type": "nvidia-tesla-k80", "count": 1, }], @@ -1014,9 +1014,9 @@ def __init__(__self__, name="my-node-pool", cluster=primary.id, node_config={ - "machineType": "e2-medium", - "serviceAccount": default.email, - "oauthScopes": ["https://www.googleapis.com/auth/cloud-platform"], + "machine_type": "e2-medium", + "service_account": default.email, + "oauth_scopes": ["https://www.googleapis.com/auth/cloud-platform"], }) ``` diff --git a/sdk/python/pulumi_gcp/containeranalysis/note.py b/sdk/python/pulumi_gcp/containeranalysis/note.py index eb09f7dfbe..af5e8ee776 100644 --- a/sdk/python/pulumi_gcp/containeranalysis/note.py +++ b/sdk/python/pulumi_gcp/containeranalysis/note.py @@ -402,7 +402,7 @@ def __init__(__self__, name="attestor-note", attestation_authority={ "hint": { - "humanReadableName": "Attestor Note", + "human_readable_name": "Attestor Note", }, }) ``` @@ -428,7 +428,7 @@ def __init__(__self__, ], attestation_authority={ "hint": { - "humanReadableName": "Attestor Note", + "human_readable_name": "Attestor Note", }, }) ``` @@ -505,7 +505,7 @@ def __init__(__self__, name="attestor-note", attestation_authority={ "hint": { - "humanReadableName": "Attestor Note", + "human_readable_name": "Attestor Note", }, }) ``` @@ -531,7 +531,7 @@ def __init__(__self__, ], attestation_authority={ "hint": { - "humanReadableName": "Attestor Note", + "human_readable_name": "Attestor Note", }, }) ``` diff --git a/sdk/python/pulumi_gcp/databasemigrationservice/connection_profile.py b/sdk/python/pulumi_gcp/databasemigrationservice/connection_profile.py index 4d8b066b5f..83ea3bd3a2 100644 --- a/sdk/python/pulumi_gcp/databasemigrationservice/connection_profile.py +++ b/sdk/python/pulumi_gcp/databasemigrationservice/connection_profile.py @@ -556,7 +556,7 @@ def __init__(__self__, database_version="MYSQL_5_7", settings={ "tier": "db-n1-standard-1", - "deletionProtectionEnabled": False, + "deletion_protection_enabled": False, }, deletion_protection=False) sql_client_cert = gcp.sql.SslCert("sql_client_cert", @@ -581,11 +581,11 @@ def __init__(__self__, "username": sqldb_user.name, "password": sqldb_user.password, "ssl": { - "clientKey": sql_client_cert.private_key, - "clientCertificate": sql_client_cert.cert, - "caCertificate": sql_client_cert.server_ca_cert, + "client_key": sql_client_cert.private_key, + "client_certificate": sql_client_cert.cert, + "ca_certificate": sql_client_cert.server_ca_cert, }, - "cloudSqlId": "my-database", + "cloud_sql_id": "my-database", }, opts = pulumi.ResourceOptions(depends_on=[sqldb_user])) cloudsqlprofile_destination = gcp.databasemigrationservice.ConnectionProfile("cloudsqlprofile_destination", @@ -597,24 +597,24 @@ def __init__(__self__, }, cloudsql={ "settings": { - "databaseVersion": "MYSQL_5_7", - "userLabels": { + "database_version": "MYSQL_5_7", + "user_labels": { "cloudfoo": "cloudbar", }, "tier": "db-n1-standard-1", "edition": "ENTERPRISE", - "storageAutoResizeLimit": "0", - "activationPolicy": "ALWAYS", - "ipConfig": { - "enableIpv4": True, - "requireSsl": True, + "storage_auto_resize_limit": "0", + "activation_policy": "ALWAYS", + "ip_config": { + "enable_ipv4": True, + "require_ssl": True, }, - "autoStorageIncrease": True, - "dataDiskType": "PD_HDD", - "dataDiskSizeGb": "11", + "auto_storage_increase": True, + "data_disk_type": "PD_HDD", + "data_disk_size_gb": "11", "zone": "us-central1-b", - "sourceId": f"projects/{project.project_id}/locations/us-central1/connectionProfiles/my-fromprofileid", - "rootPassword": "testpasscloudsql", + "source_id": f"projects/{project.project_id}/locations/us-central1/connectionProfiles/my-fromprofileid", + "root_password": "testpasscloudsql", }, }, opts = pulumi.ResourceOptions(depends_on=[cloudsqlprofile])) @@ -654,11 +654,11 @@ def __init__(__self__, "username": sqldb_user.name, "password": sqldb_user.password, "ssl": { - "clientKey": sql_client_cert.private_key, - "clientCertificate": sql_client_cert.cert, - "caCertificate": sql_client_cert.server_ca_cert, + "client_key": sql_client_cert.private_key, + "client_certificate": sql_client_cert.cert, + "ca_certificate": sql_client_cert.server_ca_cert, }, - "cloudSqlId": "my-database", + "cloud_sql_id": "my-database", }, opts = pulumi.ResourceOptions(depends_on=[sqldb_user])) ``` @@ -680,8 +680,8 @@ def __init__(__self__, "port": 1521, "username": "username", "password": "password", - "databaseService": "dbprovider", - "staticServiceIpConnectivity": {}, + "database_service": "dbprovider", + "static_service_ip_connectivity": {}, }) ``` ### Database Migration Service Connection Profile Alloydb @@ -710,22 +710,22 @@ def __init__(__self__, "foo": "bar", }, alloydb={ - "clusterId": "tf-test-dbmsalloycluster_52865", + "cluster_id": "tf-test-dbmsalloycluster_52865", "settings": { - "initialUser": { + "initial_user": { "user": "alloyuser_85840", "password": "alloypass_60302", }, - "vpcNetwork": default.id, + "vpc_network": default.id, "labels": { "alloyfoo": "alloybar", }, - "primaryInstanceSettings": { + "primary_instance_settings": { "id": "priminstid", - "machineConfig": { - "cpuCount": 2, + "machine_config": { + "cpu_count": 2, }, - "databaseFlags": {}, + "database_flags": {}, "labels": { "alloysinstfoo": "allowinstbar", }, @@ -813,7 +813,7 @@ def __init__(__self__, database_version="MYSQL_5_7", settings={ "tier": "db-n1-standard-1", - "deletionProtectionEnabled": False, + "deletion_protection_enabled": False, }, deletion_protection=False) sql_client_cert = gcp.sql.SslCert("sql_client_cert", @@ -838,11 +838,11 @@ def __init__(__self__, "username": sqldb_user.name, "password": sqldb_user.password, "ssl": { - "clientKey": sql_client_cert.private_key, - "clientCertificate": sql_client_cert.cert, - "caCertificate": sql_client_cert.server_ca_cert, + "client_key": sql_client_cert.private_key, + "client_certificate": sql_client_cert.cert, + "ca_certificate": sql_client_cert.server_ca_cert, }, - "cloudSqlId": "my-database", + "cloud_sql_id": "my-database", }, opts = pulumi.ResourceOptions(depends_on=[sqldb_user])) cloudsqlprofile_destination = gcp.databasemigrationservice.ConnectionProfile("cloudsqlprofile_destination", @@ -854,24 +854,24 @@ def __init__(__self__, }, cloudsql={ "settings": { - "databaseVersion": "MYSQL_5_7", - "userLabels": { + "database_version": "MYSQL_5_7", + "user_labels": { "cloudfoo": "cloudbar", }, "tier": "db-n1-standard-1", "edition": "ENTERPRISE", - "storageAutoResizeLimit": "0", - "activationPolicy": "ALWAYS", - "ipConfig": { - "enableIpv4": True, - "requireSsl": True, + "storage_auto_resize_limit": "0", + "activation_policy": "ALWAYS", + "ip_config": { + "enable_ipv4": True, + "require_ssl": True, }, - "autoStorageIncrease": True, - "dataDiskType": "PD_HDD", - "dataDiskSizeGb": "11", + "auto_storage_increase": True, + "data_disk_type": "PD_HDD", + "data_disk_size_gb": "11", "zone": "us-central1-b", - "sourceId": f"projects/{project.project_id}/locations/us-central1/connectionProfiles/my-fromprofileid", - "rootPassword": "testpasscloudsql", + "source_id": f"projects/{project.project_id}/locations/us-central1/connectionProfiles/my-fromprofileid", + "root_password": "testpasscloudsql", }, }, opts = pulumi.ResourceOptions(depends_on=[cloudsqlprofile])) @@ -911,11 +911,11 @@ def __init__(__self__, "username": sqldb_user.name, "password": sqldb_user.password, "ssl": { - "clientKey": sql_client_cert.private_key, - "clientCertificate": sql_client_cert.cert, - "caCertificate": sql_client_cert.server_ca_cert, + "client_key": sql_client_cert.private_key, + "client_certificate": sql_client_cert.cert, + "ca_certificate": sql_client_cert.server_ca_cert, }, - "cloudSqlId": "my-database", + "cloud_sql_id": "my-database", }, opts = pulumi.ResourceOptions(depends_on=[sqldb_user])) ``` @@ -937,8 +937,8 @@ def __init__(__self__, "port": 1521, "username": "username", "password": "password", - "databaseService": "dbprovider", - "staticServiceIpConnectivity": {}, + "database_service": "dbprovider", + "static_service_ip_connectivity": {}, }) ``` ### Database Migration Service Connection Profile Alloydb @@ -967,22 +967,22 @@ def __init__(__self__, "foo": "bar", }, alloydb={ - "clusterId": "tf-test-dbmsalloycluster_52865", + "cluster_id": "tf-test-dbmsalloycluster_52865", "settings": { - "initialUser": { + "initial_user": { "user": "alloyuser_85840", "password": "alloypass_60302", }, - "vpcNetwork": default.id, + "vpc_network": default.id, "labels": { "alloyfoo": "alloybar", }, - "primaryInstanceSettings": { + "primary_instance_settings": { "id": "priminstid", - "machineConfig": { - "cpuCount": 2, + "machine_config": { + "cpu_count": 2, }, - "databaseFlags": {}, + "database_flags": {}, "labels": { "alloysinstfoo": "allowinstbar", }, diff --git a/sdk/python/pulumi_gcp/databasemigrationservice/private_connection.py b/sdk/python/pulumi_gcp/databasemigrationservice/private_connection.py index abaa007da1..8fb66cdff2 100644 --- a/sdk/python/pulumi_gcp/databasemigrationservice/private_connection.py +++ b/sdk/python/pulumi_gcp/databasemigrationservice/private_connection.py @@ -349,7 +349,7 @@ def __init__(__self__, "key": "value", }, vpc_peering_config={ - "vpcName": default.id, + "vpc_name": default.id, "subnet": "10.0.0.0/29", }) ``` @@ -421,7 +421,7 @@ def __init__(__self__, "key": "value", }, vpc_peering_config={ - "vpcName": default.id, + "vpc_name": default.id, "subnet": "10.0.0.0/29", }) ``` diff --git a/sdk/python/pulumi_gcp/datacatalog/entry.py b/sdk/python/pulumi_gcp/datacatalog/entry.py index e66ca888cf..e82f7b8d76 100644 --- a/sdk/python/pulumi_gcp/datacatalog/entry.py +++ b/sdk/python/pulumi_gcp/datacatalog/entry.py @@ -567,7 +567,7 @@ def __init__(__self__, entry_id="my_entry", type="FILESET", gcs_fileset_spec={ - "filePatterns": ["gs://fake_bucket/dir/*"], + "file_patterns": ["gs://fake_bucket/dir/*"], }) ``` ### Data Catalog Entry Full @@ -717,7 +717,7 @@ def __init__(__self__, entry_id="my_entry", type="FILESET", gcs_fileset_spec={ - "filePatterns": ["gs://fake_bucket/dir/*"], + "file_patterns": ["gs://fake_bucket/dir/*"], }) ``` ### Data Catalog Entry Full diff --git a/sdk/python/pulumi_gcp/datacatalog/tag.py b/sdk/python/pulumi_gcp/datacatalog/tag.py index f07ce10b8a..31b9547d3a 100644 --- a/sdk/python/pulumi_gcp/datacatalog/tag.py +++ b/sdk/python/pulumi_gcp/datacatalog/tag.py @@ -267,34 +267,34 @@ def __init__(__self__, display_name="Demo Tag Template", fields=[ { - "fieldId": "source", - "displayName": "Source of data asset", + "field_id": "source", + "display_name": "Source of data asset", "type": { - "primitiveType": "STRING", + "primitive_type": "STRING", }, - "isRequired": True, + "is_required": True, }, { - "fieldId": "num_rows", - "displayName": "Number of rows in the data asset", + "field_id": "num_rows", + "display_name": "Number of rows in the data asset", "type": { - "primitiveType": "DOUBLE", + "primitive_type": "DOUBLE", }, }, { - "fieldId": "pii_type", - "displayName": "PII type", + "field_id": "pii_type", + "display_name": "PII type", "type": { - "enumType": { - "allowedValues": [ + "enum_type": { + "allowed_values": [ { - "displayName": "EMAIL", + "display_name": "EMAIL", }, { - "displayName": "SOCIAL SECURITY NUMBER", + "display_name": "SOCIAL SECURITY NUMBER", }, { - "displayName": "NONE", + "display_name": "NONE", }, ], }, @@ -306,8 +306,8 @@ def __init__(__self__, parent=entry.id, template=tag_template.id, fields=[{ - "fieldName": "source", - "stringValue": "my-string", + "field_name": "source", + "string_value": "my-string", }]) ``` ### Data Catalog Entry Group Tag @@ -333,34 +333,34 @@ def __init__(__self__, display_name="Demo Tag Template", fields=[ { - "fieldId": "source", - "displayName": "Source of data asset", + "field_id": "source", + "display_name": "Source of data asset", "type": { - "primitiveType": "STRING", + "primitive_type": "STRING", }, - "isRequired": True, + "is_required": True, }, { - "fieldId": "num_rows", - "displayName": "Number of rows in the data asset", + "field_id": "num_rows", + "display_name": "Number of rows in the data asset", "type": { - "primitiveType": "DOUBLE", + "primitive_type": "DOUBLE", }, }, { - "fieldId": "pii_type", - "displayName": "PII type", + "field_id": "pii_type", + "display_name": "PII type", "type": { - "enumType": { - "allowedValues": [ + "enum_type": { + "allowed_values": [ { - "displayName": "EMAIL", + "display_name": "EMAIL", }, { - "displayName": "SOCIAL SECURITY NUMBER", + "display_name": "SOCIAL SECURITY NUMBER", }, { - "displayName": "NONE", + "display_name": "NONE", }, ], }, @@ -372,8 +372,8 @@ def __init__(__self__, parent=entry_group.id, template=tag_template.id, fields=[{ - "fieldName": "source", - "stringValue": "my-string", + "field_name": "source", + "string_value": "my-string", }]) ``` ### Data Catalog Entry Tag Full @@ -431,34 +431,34 @@ def __init__(__self__, display_name="Demo Tag Template", fields=[ { - "fieldId": "source", - "displayName": "Source of data asset", + "field_id": "source", + "display_name": "Source of data asset", "type": { - "primitiveType": "STRING", + "primitive_type": "STRING", }, - "isRequired": True, + "is_required": True, }, { - "fieldId": "num_rows", - "displayName": "Number of rows in the data asset", + "field_id": "num_rows", + "display_name": "Number of rows in the data asset", "type": { - "primitiveType": "DOUBLE", + "primitive_type": "DOUBLE", }, }, { - "fieldId": "pii_type", - "displayName": "PII type", + "field_id": "pii_type", + "display_name": "PII type", "type": { - "enumType": { - "allowedValues": [ + "enum_type": { + "allowed_values": [ { - "displayName": "EMAIL", + "display_name": "EMAIL", }, { - "displayName": "SOCIAL SECURITY NUMBER", + "display_name": "SOCIAL SECURITY NUMBER", }, { - "displayName": "NONE", + "display_name": "NONE", }, ], }, @@ -471,16 +471,16 @@ def __init__(__self__, template=tag_template.id, fields=[ { - "fieldName": "source", - "stringValue": "my-string", + "field_name": "source", + "string_value": "my-string", }, { - "fieldName": "num_rows", - "doubleValue": 5, + "field_name": "num_rows", + "double_value": 5, }, { - "fieldName": "pii_type", - "enumValue": "EMAIL", + "field_name": "pii_type", + "enum_value": "EMAIL", }, ], column="address") @@ -489,12 +489,12 @@ def __init__(__self__, template=tag_template.id, fields=[ { - "fieldName": "source", - "stringValue": "my-string", + "field_name": "source", + "string_value": "my-string", }, { - "fieldName": "pii_type", - "enumValue": "NONE", + "field_name": "pii_type", + "enum_value": "NONE", }, ], column="first_name") @@ -563,34 +563,34 @@ def __init__(__self__, display_name="Demo Tag Template", fields=[ { - "fieldId": "source", - "displayName": "Source of data asset", + "field_id": "source", + "display_name": "Source of data asset", "type": { - "primitiveType": "STRING", + "primitive_type": "STRING", }, - "isRequired": True, + "is_required": True, }, { - "fieldId": "num_rows", - "displayName": "Number of rows in the data asset", + "field_id": "num_rows", + "display_name": "Number of rows in the data asset", "type": { - "primitiveType": "DOUBLE", + "primitive_type": "DOUBLE", }, }, { - "fieldId": "pii_type", - "displayName": "PII type", + "field_id": "pii_type", + "display_name": "PII type", "type": { - "enumType": { - "allowedValues": [ + "enum_type": { + "allowed_values": [ { - "displayName": "EMAIL", + "display_name": "EMAIL", }, { - "displayName": "SOCIAL SECURITY NUMBER", + "display_name": "SOCIAL SECURITY NUMBER", }, { - "displayName": "NONE", + "display_name": "NONE", }, ], }, @@ -602,8 +602,8 @@ def __init__(__self__, parent=entry.id, template=tag_template.id, fields=[{ - "fieldName": "source", - "stringValue": "my-string", + "field_name": "source", + "string_value": "my-string", }]) ``` ### Data Catalog Entry Group Tag @@ -629,34 +629,34 @@ def __init__(__self__, display_name="Demo Tag Template", fields=[ { - "fieldId": "source", - "displayName": "Source of data asset", + "field_id": "source", + "display_name": "Source of data asset", "type": { - "primitiveType": "STRING", + "primitive_type": "STRING", }, - "isRequired": True, + "is_required": True, }, { - "fieldId": "num_rows", - "displayName": "Number of rows in the data asset", + "field_id": "num_rows", + "display_name": "Number of rows in the data asset", "type": { - "primitiveType": "DOUBLE", + "primitive_type": "DOUBLE", }, }, { - "fieldId": "pii_type", - "displayName": "PII type", + "field_id": "pii_type", + "display_name": "PII type", "type": { - "enumType": { - "allowedValues": [ + "enum_type": { + "allowed_values": [ { - "displayName": "EMAIL", + "display_name": "EMAIL", }, { - "displayName": "SOCIAL SECURITY NUMBER", + "display_name": "SOCIAL SECURITY NUMBER", }, { - "displayName": "NONE", + "display_name": "NONE", }, ], }, @@ -668,8 +668,8 @@ def __init__(__self__, parent=entry_group.id, template=tag_template.id, fields=[{ - "fieldName": "source", - "stringValue": "my-string", + "field_name": "source", + "string_value": "my-string", }]) ``` ### Data Catalog Entry Tag Full @@ -727,34 +727,34 @@ def __init__(__self__, display_name="Demo Tag Template", fields=[ { - "fieldId": "source", - "displayName": "Source of data asset", + "field_id": "source", + "display_name": "Source of data asset", "type": { - "primitiveType": "STRING", + "primitive_type": "STRING", }, - "isRequired": True, + "is_required": True, }, { - "fieldId": "num_rows", - "displayName": "Number of rows in the data asset", + "field_id": "num_rows", + "display_name": "Number of rows in the data asset", "type": { - "primitiveType": "DOUBLE", + "primitive_type": "DOUBLE", }, }, { - "fieldId": "pii_type", - "displayName": "PII type", + "field_id": "pii_type", + "display_name": "PII type", "type": { - "enumType": { - "allowedValues": [ + "enum_type": { + "allowed_values": [ { - "displayName": "EMAIL", + "display_name": "EMAIL", }, { - "displayName": "SOCIAL SECURITY NUMBER", + "display_name": "SOCIAL SECURITY NUMBER", }, { - "displayName": "NONE", + "display_name": "NONE", }, ], }, @@ -767,16 +767,16 @@ def __init__(__self__, template=tag_template.id, fields=[ { - "fieldName": "source", - "stringValue": "my-string", + "field_name": "source", + "string_value": "my-string", }, { - "fieldName": "num_rows", - "doubleValue": 5, + "field_name": "num_rows", + "double_value": 5, }, { - "fieldName": "pii_type", - "enumValue": "EMAIL", + "field_name": "pii_type", + "enum_value": "EMAIL", }, ], column="address") @@ -785,12 +785,12 @@ def __init__(__self__, template=tag_template.id, fields=[ { - "fieldName": "source", - "stringValue": "my-string", + "field_name": "source", + "string_value": "my-string", }, { - "fieldName": "pii_type", - "enumValue": "NONE", + "field_name": "pii_type", + "enum_value": "NONE", }, ], column="first_name") diff --git a/sdk/python/pulumi_gcp/datacatalog/tag_template.py b/sdk/python/pulumi_gcp/datacatalog/tag_template.py index 4c95b4b649..e4ed7ace4e 100644 --- a/sdk/python/pulumi_gcp/datacatalog/tag_template.py +++ b/sdk/python/pulumi_gcp/datacatalog/tag_template.py @@ -276,34 +276,34 @@ def __init__(__self__, display_name="Demo Tag Template", fields=[ { - "fieldId": "source", - "displayName": "Source of data asset", + "field_id": "source", + "display_name": "Source of data asset", "type": { - "primitiveType": "STRING", + "primitive_type": "STRING", }, - "isRequired": True, + "is_required": True, }, { - "fieldId": "num_rows", - "displayName": "Number of rows in the data asset", + "field_id": "num_rows", + "display_name": "Number of rows in the data asset", "type": { - "primitiveType": "DOUBLE", + "primitive_type": "DOUBLE", }, }, { - "fieldId": "pii_type", - "displayName": "PII type", + "field_id": "pii_type", + "display_name": "PII type", "type": { - "enumType": { - "allowedValues": [ + "enum_type": { + "allowed_values": [ { - "displayName": "EMAIL", + "display_name": "EMAIL", }, { - "displayName": "SOCIAL SECURITY NUMBER", + "display_name": "SOCIAL SECURITY NUMBER", }, { - "displayName": "NONE", + "display_name": "NONE", }, ], }, @@ -365,34 +365,34 @@ def __init__(__self__, display_name="Demo Tag Template", fields=[ { - "fieldId": "source", - "displayName": "Source of data asset", + "field_id": "source", + "display_name": "Source of data asset", "type": { - "primitiveType": "STRING", + "primitive_type": "STRING", }, - "isRequired": True, + "is_required": True, }, { - "fieldId": "num_rows", - "displayName": "Number of rows in the data asset", + "field_id": "num_rows", + "display_name": "Number of rows in the data asset", "type": { - "primitiveType": "DOUBLE", + "primitive_type": "DOUBLE", }, }, { - "fieldId": "pii_type", - "displayName": "PII type", + "field_id": "pii_type", + "display_name": "PII type", "type": { - "enumType": { - "allowedValues": [ + "enum_type": { + "allowed_values": [ { - "displayName": "EMAIL", + "display_name": "EMAIL", }, { - "displayName": "SOCIAL SECURITY NUMBER", + "display_name": "SOCIAL SECURITY NUMBER", }, { - "displayName": "NONE", + "display_name": "NONE", }, ], }, diff --git a/sdk/python/pulumi_gcp/dataflow/pipeline.py b/sdk/python/pulumi_gcp/dataflow/pipeline.py index 89eec6fa1d..7cde27acf0 100644 --- a/sdk/python/pulumi_gcp/dataflow/pipeline.py +++ b/sdk/python/pulumi_gcp/dataflow/pipeline.py @@ -511,32 +511,32 @@ def __init__(__self__, state="STATE_ACTIVE", region="us-central1", workload={ - "dataflowLaunchTemplateRequest": { - "projectId": "my-project", - "gcsPath": "gs://my-bucket/path", - "launchParameters": { - "jobName": "my-job", + "dataflow_launch_template_request": { + "project_id": "my-project", + "gcs_path": "gs://my-bucket/path", + "launch_parameters": { + "job_name": "my-job", "parameters": { "name": "wrench", }, "environment": { - "numWorkers": 5, - "maxWorkers": 5, + "num_workers": 5, + "max_workers": 5, "zone": "us-centra1-a", - "serviceAccountEmail": service_account.email, + "service_account_email": service_account.email, "network": "default", - "tempLocation": "gs://my-bucket/tmp_dir", - "bypassTempDirValidation": False, - "machineType": "E2", - "additionalUserLabels": { + "temp_location": "gs://my-bucket/tmp_dir", + "bypass_temp_dir_validation": False, + "machine_type": "E2", + "additional_user_labels": { "context": "test", }, - "workerRegion": "us-central1", - "workerZone": "us-central1-a", - "enableStreamingEngine": False, + "worker_region": "us-central1", + "worker_zone": "us-central1-a", + "enable_streaming_engine": False, }, "update": False, - "transformNameMapping": { + "transform_name_mapping": { "name": "wrench", }, }, @@ -640,32 +640,32 @@ def __init__(__self__, state="STATE_ACTIVE", region="us-central1", workload={ - "dataflowLaunchTemplateRequest": { - "projectId": "my-project", - "gcsPath": "gs://my-bucket/path", - "launchParameters": { - "jobName": "my-job", + "dataflow_launch_template_request": { + "project_id": "my-project", + "gcs_path": "gs://my-bucket/path", + "launch_parameters": { + "job_name": "my-job", "parameters": { "name": "wrench", }, "environment": { - "numWorkers": 5, - "maxWorkers": 5, + "num_workers": 5, + "max_workers": 5, "zone": "us-centra1-a", - "serviceAccountEmail": service_account.email, + "service_account_email": service_account.email, "network": "default", - "tempLocation": "gs://my-bucket/tmp_dir", - "bypassTempDirValidation": False, - "machineType": "E2", - "additionalUserLabels": { + "temp_location": "gs://my-bucket/tmp_dir", + "bypass_temp_dir_validation": False, + "machine_type": "E2", + "additional_user_labels": { "context": "test", }, - "workerRegion": "us-central1", - "workerZone": "us-central1-a", - "enableStreamingEngine": False, + "worker_region": "us-central1", + "worker_zone": "us-central1-a", + "enable_streaming_engine": False, }, "update": False, - "transformNameMapping": { + "transform_name_mapping": { "name": "wrench", }, }, diff --git a/sdk/python/pulumi_gcp/dataform/repository.py b/sdk/python/pulumi_gcp/dataform/repository.py index 96dd0640f8..213b47a4e8 100644 --- a/sdk/python/pulumi_gcp/dataform/repository.py +++ b/sdk/python/pulumi_gcp/dataform/repository.py @@ -437,13 +437,13 @@ def __init__(__self__, }, git_remote_settings={ "url": "https://github.com/OWNER/REPOSITORY.git", - "defaultBranch": "main", - "authenticationTokenSecretVersion": secret_version.id, + "default_branch": "main", + "authentication_token_secret_version": secret_version.id, }, workspace_compilation_overrides={ - "defaultDatabase": "database", - "schemaSuffix": "_suffix", - "tablePrefix": "prefix_", + "default_database": "database", + "schema_suffix": "_suffix", + "table_prefix": "prefix_", }) ``` @@ -531,13 +531,13 @@ def __init__(__self__, }, git_remote_settings={ "url": "https://github.com/OWNER/REPOSITORY.git", - "defaultBranch": "main", - "authenticationTokenSecretVersion": secret_version.id, + "default_branch": "main", + "authentication_token_secret_version": secret_version.id, }, workspace_compilation_overrides={ - "defaultDatabase": "database", - "schemaSuffix": "_suffix", - "tablePrefix": "prefix_", + "default_database": "database", + "schema_suffix": "_suffix", + "table_prefix": "prefix_", }) ``` diff --git a/sdk/python/pulumi_gcp/dataform/repository_release_config.py b/sdk/python/pulumi_gcp/dataform/repository_release_config.py index d656c0e3ae..37e0c93ac3 100644 --- a/sdk/python/pulumi_gcp/dataform/repository_release_config.py +++ b/sdk/python/pulumi_gcp/dataform/repository_release_config.py @@ -364,13 +364,13 @@ def __init__(__self__, region="us-central1", git_remote_settings={ "url": git_repository.url, - "defaultBranch": "main", - "authenticationTokenSecretVersion": secret_version.id, + "default_branch": "main", + "authentication_token_secret_version": secret_version.id, }, workspace_compilation_overrides={ - "defaultDatabase": "database", - "schemaSuffix": "_suffix", - "tablePrefix": "prefix_", + "default_database": "database", + "schema_suffix": "_suffix", + "table_prefix": "prefix_", }) release = gcp.dataform.RepositoryReleaseConfig("release", project=repository.project, @@ -381,13 +381,13 @@ def __init__(__self__, cron_schedule="0 7 * * *", time_zone="America/New_York", code_compilation_config={ - "defaultDatabase": "gcp-example-project", - "defaultSchema": "example-dataset", - "defaultLocation": "us-central1", - "assertionSchema": "example-assertion-dataset", - "databaseSuffix": "", - "schemaSuffix": "", - "tablePrefix": "", + "default_database": "gcp-example-project", + "default_schema": "example-dataset", + "default_location": "us-central1", + "assertion_schema": "example-assertion-dataset", + "database_suffix": "", + "schema_suffix": "", + "table_prefix": "", "vars": { "var1": "value", }, @@ -469,13 +469,13 @@ def __init__(__self__, region="us-central1", git_remote_settings={ "url": git_repository.url, - "defaultBranch": "main", - "authenticationTokenSecretVersion": secret_version.id, + "default_branch": "main", + "authentication_token_secret_version": secret_version.id, }, workspace_compilation_overrides={ - "defaultDatabase": "database", - "schemaSuffix": "_suffix", - "tablePrefix": "prefix_", + "default_database": "database", + "schema_suffix": "_suffix", + "table_prefix": "prefix_", }) release = gcp.dataform.RepositoryReleaseConfig("release", project=repository.project, @@ -486,13 +486,13 @@ def __init__(__self__, cron_schedule="0 7 * * *", time_zone="America/New_York", code_compilation_config={ - "defaultDatabase": "gcp-example-project", - "defaultSchema": "example-dataset", - "defaultLocation": "us-central1", - "assertionSchema": "example-assertion-dataset", - "databaseSuffix": "", - "schemaSuffix": "", - "tablePrefix": "", + "default_database": "gcp-example-project", + "default_schema": "example-dataset", + "default_location": "us-central1", + "assertion_schema": "example-assertion-dataset", + "database_suffix": "", + "schema_suffix": "", + "table_prefix": "", "vars": { "var1": "value", }, diff --git a/sdk/python/pulumi_gcp/dataform/repository_workflow_config.py b/sdk/python/pulumi_gcp/dataform/repository_workflow_config.py index b97067a919..b976c58927 100644 --- a/sdk/python/pulumi_gcp/dataform/repository_workflow_config.py +++ b/sdk/python/pulumi_gcp/dataform/repository_workflow_config.py @@ -364,13 +364,13 @@ def __init__(__self__, region="us-central1", git_remote_settings={ "url": git_repository.url, - "defaultBranch": "main", - "authenticationTokenSecretVersion": secret_version.id, + "default_branch": "main", + "authentication_token_secret_version": secret_version.id, }, workspace_compilation_overrides={ - "defaultDatabase": "database", - "schemaSuffix": "_suffix", - "tablePrefix": "prefix_", + "default_database": "database", + "schema_suffix": "_suffix", + "table_prefix": "prefix_", }) release_config = gcp.dataform.RepositoryReleaseConfig("release_config", project=repository.project, @@ -381,13 +381,13 @@ def __init__(__self__, cron_schedule="0 7 * * *", time_zone="America/New_York", code_compilation_config={ - "defaultDatabase": "gcp-example-project", - "defaultSchema": "example-dataset", - "defaultLocation": "us-central1", - "assertionSchema": "example-assertion-dataset", - "databaseSuffix": "", - "schemaSuffix": "", - "tablePrefix": "", + "default_database": "gcp-example-project", + "default_schema": "example-dataset", + "default_location": "us-central1", + "assertion_schema": "example-assertion-dataset", + "database_suffix": "", + "schema_suffix": "", + "table_prefix": "", "vars": { "var1": "value", }, @@ -402,7 +402,7 @@ def __init__(__self__, name="my_workflow", release_config=release_config.id, invocation_config={ - "includedTargets": [ + "included_targets": [ { "database": "gcp-example-project", "schema": "example-dataset", @@ -414,11 +414,11 @@ def __init__(__self__, "name": "target_2", }, ], - "includedTags": ["tag_1"], - "transitiveDependenciesIncluded": True, - "transitiveDependentsIncluded": True, - "fullyRefreshIncrementalTablesEnabled": False, - "serviceAccount": dataform_sa.email, + "included_tags": ["tag_1"], + "transitive_dependencies_included": True, + "transitive_dependents_included": True, + "fully_refresh_incremental_tables_enabled": False, + "service_account": dataform_sa.email, }, cron_schedule="0 7 * * *", time_zone="America/New_York") @@ -499,13 +499,13 @@ def __init__(__self__, region="us-central1", git_remote_settings={ "url": git_repository.url, - "defaultBranch": "main", - "authenticationTokenSecretVersion": secret_version.id, + "default_branch": "main", + "authentication_token_secret_version": secret_version.id, }, workspace_compilation_overrides={ - "defaultDatabase": "database", - "schemaSuffix": "_suffix", - "tablePrefix": "prefix_", + "default_database": "database", + "schema_suffix": "_suffix", + "table_prefix": "prefix_", }) release_config = gcp.dataform.RepositoryReleaseConfig("release_config", project=repository.project, @@ -516,13 +516,13 @@ def __init__(__self__, cron_schedule="0 7 * * *", time_zone="America/New_York", code_compilation_config={ - "defaultDatabase": "gcp-example-project", - "defaultSchema": "example-dataset", - "defaultLocation": "us-central1", - "assertionSchema": "example-assertion-dataset", - "databaseSuffix": "", - "schemaSuffix": "", - "tablePrefix": "", + "default_database": "gcp-example-project", + "default_schema": "example-dataset", + "default_location": "us-central1", + "assertion_schema": "example-assertion-dataset", + "database_suffix": "", + "schema_suffix": "", + "table_prefix": "", "vars": { "var1": "value", }, @@ -537,7 +537,7 @@ def __init__(__self__, name="my_workflow", release_config=release_config.id, invocation_config={ - "includedTargets": [ + "included_targets": [ { "database": "gcp-example-project", "schema": "example-dataset", @@ -549,11 +549,11 @@ def __init__(__self__, "name": "target_2", }, ], - "includedTags": ["tag_1"], - "transitiveDependenciesIncluded": True, - "transitiveDependentsIncluded": True, - "fullyRefreshIncrementalTablesEnabled": False, - "serviceAccount": dataform_sa.email, + "included_tags": ["tag_1"], + "transitive_dependencies_included": True, + "transitive_dependents_included": True, + "fully_refresh_incremental_tables_enabled": False, + "service_account": dataform_sa.email, }, cron_schedule="0 7 * * *", time_zone="America/New_York") diff --git a/sdk/python/pulumi_gcp/datafusion/instance.py b/sdk/python/pulumi_gcp/datafusion/instance.py index 39abe93ed0..9943c5d57f 100644 --- a/sdk/python/pulumi_gcp/datafusion/instance.py +++ b/sdk/python/pulumi_gcp/datafusion/instance.py @@ -1031,10 +1031,10 @@ def __init__(__self__, }, network_config={ "network": "default", - "ipAllocation": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f"{address}/{prefix_length}"), + "ip_allocation": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f"{address}/{prefix_length}"), }, accelerators=[{ - "acceleratorType": "CDC", + "accelerator_type": "CDC", "state": "ENABLED", }]) ``` @@ -1063,10 +1063,10 @@ def __init__(__self__, type="BASIC", private_instance=True, network_config={ - "connectionType": "PRIVATE_SERVICE_CONNECT_INTERFACES", - "privateServiceConnectConfig": { - "networkAttachment": psc_network_attachment.id, - "unreachableCidrBlock": "192.168.0.0/25", + "connection_type": "PRIVATE_SERVICE_CONNECT_INTERFACES", + "private_service_connect_config": { + "network_attachment": psc_network_attachment.id, + "unreachable_cidr_block": "192.168.0.0/25", }, }) ``` @@ -1092,7 +1092,7 @@ def __init__(__self__, region="us-central1", type="BASIC", crypto_key_config={ - "keyReference": crypto_key.id, + "key_reference": crypto_key.id, }, opts = pulumi.ResourceOptions(depends_on=[crypto_key_member])) ``` @@ -1272,10 +1272,10 @@ def __init__(__self__, }, network_config={ "network": "default", - "ipAllocation": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f"{address}/{prefix_length}"), + "ip_allocation": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f"{address}/{prefix_length}"), }, accelerators=[{ - "acceleratorType": "CDC", + "accelerator_type": "CDC", "state": "ENABLED", }]) ``` @@ -1304,10 +1304,10 @@ def __init__(__self__, type="BASIC", private_instance=True, network_config={ - "connectionType": "PRIVATE_SERVICE_CONNECT_INTERFACES", - "privateServiceConnectConfig": { - "networkAttachment": psc_network_attachment.id, - "unreachableCidrBlock": "192.168.0.0/25", + "connection_type": "PRIVATE_SERVICE_CONNECT_INTERFACES", + "private_service_connect_config": { + "network_attachment": psc_network_attachment.id, + "unreachable_cidr_block": "192.168.0.0/25", }, }) ``` @@ -1333,7 +1333,7 @@ def __init__(__self__, region="us-central1", type="BASIC", crypto_key_config={ - "keyReference": crypto_key.id, + "key_reference": crypto_key.id, }, opts = pulumi.ResourceOptions(depends_on=[crypto_key_member])) ``` diff --git a/sdk/python/pulumi_gcp/dataloss/prevention_deidentify_template.py b/sdk/python/pulumi_gcp/dataloss/prevention_deidentify_template.py index 10112b39af..1ba0a62571 100644 --- a/sdk/python/pulumi_gcp/dataloss/prevention_deidentify_template.py +++ b/sdk/python/pulumi_gcp/dataloss/prevention_deidentify_template.py @@ -297,18 +297,18 @@ def __init__(__self__, description="Description", display_name="Displayname", deidentify_config={ - "infoTypeTransformations": { + "info_type_transformations": { "transformations": [ { - "infoTypes": [{ + "info_types": [{ "name": "FIRST_NAME", }], - "primitiveTransformation": { - "replaceWithInfoTypeConfig": True, + "primitive_transformation": { + "replace_with_info_type_config": True, }, }, { - "infoTypes": [ + "info_types": [ { "name": "PHONE_NUMBER", }, @@ -316,16 +316,16 @@ def __init__(__self__, "name": "AGE", }, ], - "primitiveTransformation": { - "replaceConfig": { - "newValue": { - "integerValue": 9, + "primitive_transformation": { + "replace_config": { + "new_value": { + "integer_value": 9, }, }, }, }, { - "infoTypes": [ + "info_types": [ { "name": "EMAIL_ADDRESS", }, @@ -333,25 +333,25 @@ def __init__(__self__, "name": "LAST_NAME", }, ], - "primitiveTransformation": { - "characterMaskConfig": { - "maskingCharacter": "X", - "numberToMask": 4, - "reverseOrder": True, - "charactersToIgnores": [{ - "commonCharactersToIgnore": "PUNCTUATION", + "primitive_transformation": { + "character_mask_config": { + "masking_character": "X", + "number_to_mask": 4, + "reverse_order": True, + "characters_to_ignores": [{ + "common_characters_to_ignore": "PUNCTUATION", }], }, }, }, { - "infoTypes": [{ + "info_types": [{ "name": "DATE_OF_BIRTH", }], - "primitiveTransformation": { - "replaceConfig": { - "newValue": { - "dateValue": { + "primitive_transformation": { + "replace_config": { + "new_value": { + "date_value": { "year": 2020, "month": 1, "day": 1, @@ -361,20 +361,20 @@ def __init__(__self__, }, }, { - "infoTypes": [{ + "info_types": [{ "name": "CREDIT_CARD_NUMBER", }], - "primitiveTransformation": { - "cryptoDeterministicConfig": { + "primitive_transformation": { + "crypto_deterministic_config": { "context": { "name": "sometweak", }, - "cryptoKey": { + "crypto_key": { "transient": { "name": "beep", }, }, - "surrogateInfoType": { + "surrogate_info_type": { "name": "abc", }, }, @@ -395,26 +395,26 @@ def __init__(__self__, description="Description", display_name="Displayname", deidentify_config={ - "imageTransformations": { + "image_transformations": { "transforms": [ { - "redactionColor": { + "redaction_color": { "red": 0.5, "blue": 1, "green": 0.2, }, - "selectedInfoTypes": { - "infoTypes": [{ + "selected_info_types": { + "info_types": [{ "name": "COLOR_INFO", "version": "latest", }], }, }, { - "allInfoTypes": {}, + "all_info_types": {}, }, { - "allText": {}, + "all_text": {}, }, ], }, @@ -481,18 +481,18 @@ def __init__(__self__, description="Description", display_name="Displayname", deidentify_config={ - "infoTypeTransformations": { + "info_type_transformations": { "transformations": [ { - "infoTypes": [{ + "info_types": [{ "name": "FIRST_NAME", }], - "primitiveTransformation": { - "replaceWithInfoTypeConfig": True, + "primitive_transformation": { + "replace_with_info_type_config": True, }, }, { - "infoTypes": [ + "info_types": [ { "name": "PHONE_NUMBER", }, @@ -500,16 +500,16 @@ def __init__(__self__, "name": "AGE", }, ], - "primitiveTransformation": { - "replaceConfig": { - "newValue": { - "integerValue": 9, + "primitive_transformation": { + "replace_config": { + "new_value": { + "integer_value": 9, }, }, }, }, { - "infoTypes": [ + "info_types": [ { "name": "EMAIL_ADDRESS", }, @@ -517,25 +517,25 @@ def __init__(__self__, "name": "LAST_NAME", }, ], - "primitiveTransformation": { - "characterMaskConfig": { - "maskingCharacter": "X", - "numberToMask": 4, - "reverseOrder": True, - "charactersToIgnores": [{ - "commonCharactersToIgnore": "PUNCTUATION", + "primitive_transformation": { + "character_mask_config": { + "masking_character": "X", + "number_to_mask": 4, + "reverse_order": True, + "characters_to_ignores": [{ + "common_characters_to_ignore": "PUNCTUATION", }], }, }, }, { - "infoTypes": [{ + "info_types": [{ "name": "DATE_OF_BIRTH", }], - "primitiveTransformation": { - "replaceConfig": { - "newValue": { - "dateValue": { + "primitive_transformation": { + "replace_config": { + "new_value": { + "date_value": { "year": 2020, "month": 1, "day": 1, @@ -545,20 +545,20 @@ def __init__(__self__, }, }, { - "infoTypes": [{ + "info_types": [{ "name": "CREDIT_CARD_NUMBER", }], - "primitiveTransformation": { - "cryptoDeterministicConfig": { + "primitive_transformation": { + "crypto_deterministic_config": { "context": { "name": "sometweak", }, - "cryptoKey": { + "crypto_key": { "transient": { "name": "beep", }, }, - "surrogateInfoType": { + "surrogate_info_type": { "name": "abc", }, }, @@ -579,26 +579,26 @@ def __init__(__self__, description="Description", display_name="Displayname", deidentify_config={ - "imageTransformations": { + "image_transformations": { "transforms": [ { - "redactionColor": { + "redaction_color": { "red": 0.5, "blue": 1, "green": 0.2, }, - "selectedInfoTypes": { - "infoTypes": [{ + "selected_info_types": { + "info_types": [{ "name": "COLOR_INFO", "version": "latest", }], }, }, { - "allInfoTypes": {}, + "all_info_types": {}, }, { - "allText": {}, + "all_text": {}, }, ], }, diff --git a/sdk/python/pulumi_gcp/dataloss/prevention_inspect_template.py b/sdk/python/pulumi_gcp/dataloss/prevention_inspect_template.py index c3d963de39..fa66ea2d0a 100644 --- a/sdk/python/pulumi_gcp/dataloss/prevention_inspect_template.py +++ b/sdk/python/pulumi_gcp/dataloss/prevention_inspect_template.py @@ -282,7 +282,7 @@ def __init__(__self__, description="My description", display_name="display_name", inspect_config={ - "infoTypes": [ + "info_types": [ { "name": "EMAIL_ADDRESS", }, @@ -302,23 +302,23 @@ def __init__(__self__, "name": "FIRST_NAME", }, ], - "minLikelihood": "UNLIKELY", - "ruleSets": [ + "min_likelihood": "UNLIKELY", + "rule_sets": [ { - "infoTypes": [{ + "info_types": [{ "name": "EMAIL_ADDRESS", }], "rules": [{ - "exclusionRule": { + "exclusion_rule": { "regex": { "pattern": ".+@example.com", }, - "matchingType": "MATCHING_TYPE_FULL_MATCH", + "matching_type": "MATCHING_TYPE_FULL_MATCH", }, }], }, { - "infoTypes": [ + "info_types": [ { "name": "EMAIL_ADDRESS", }, @@ -336,48 +336,48 @@ def __init__(__self__, }, ], "rules": [{ - "exclusionRule": { + "exclusion_rule": { "dictionary": { - "wordList": { + "word_list": { "words": ["TEST"], }, }, - "matchingType": "MATCHING_TYPE_PARTIAL_MATCH", + "matching_type": "MATCHING_TYPE_PARTIAL_MATCH", }, }], }, { - "infoTypes": [{ + "info_types": [{ "name": "PERSON_NAME", }], "rules": [{ - "hotwordRule": { - "hotwordRegex": { + "hotword_rule": { + "hotword_regex": { "pattern": "patient", }, "proximity": { - "windowBefore": 50, + "window_before": 50, }, - "likelihoodAdjustment": { - "fixedLikelihood": "VERY_LIKELY", + "likelihood_adjustment": { + "fixed_likelihood": "VERY_LIKELY", }, }, }], }, ], "limits": { - "maxFindingsPerItem": 10, - "maxFindingsPerRequest": 50, - "maxFindingsPerInfoTypes": [ + "max_findings_per_item": 10, + "max_findings_per_request": 50, + "max_findings_per_info_types": [ { - "maxFindings": 75, - "infoType": { + "max_findings": 75, + "info_type": { "name": "PERSON_NAME", }, }, { - "maxFindings": 80, - "infoType": { + "max_findings": 80, + "info_type": { "name": "LAST_NAME", }, }, @@ -396,8 +396,8 @@ def __init__(__self__, description="My description", display_name="display_name", inspect_config={ - "customInfoTypes": [{ - "infoType": { + "custom_info_types": [{ + "info_type": { "name": "MY_CUSTOM_TYPE", }, "likelihood": "UNLIKELY", @@ -405,46 +405,46 @@ def __init__(__self__, "pattern": "test*", }, }], - "infoTypes": [{ + "info_types": [{ "name": "EMAIL_ADDRESS", }], - "minLikelihood": "UNLIKELY", - "ruleSets": [ + "min_likelihood": "UNLIKELY", + "rule_sets": [ { - "infoTypes": [{ + "info_types": [{ "name": "EMAIL_ADDRESS", }], "rules": [{ - "exclusionRule": { + "exclusion_rule": { "regex": { "pattern": ".+@example.com", }, - "matchingType": "MATCHING_TYPE_FULL_MATCH", + "matching_type": "MATCHING_TYPE_FULL_MATCH", }, }], }, { - "infoTypes": [{ + "info_types": [{ "name": "MY_CUSTOM_TYPE", }], "rules": [{ - "hotwordRule": { - "hotwordRegex": { + "hotword_rule": { + "hotword_regex": { "pattern": "example*", }, "proximity": { - "windowBefore": 50, + "window_before": 50, }, - "likelihoodAdjustment": { - "fixedLikelihood": "VERY_LIKELY", + "likelihood_adjustment": { + "fixed_likelihood": "VERY_LIKELY", }, }, }], }, ], "limits": { - "maxFindingsPerItem": 10, - "maxFindingsPerRequest": 50, + "max_findings_per_item": 10, + "max_findings_per_request": 50, }, }) ``` @@ -459,53 +459,53 @@ def __init__(__self__, description="My description", display_name="display_name", inspect_config={ - "customInfoTypes": [{ - "infoType": { + "custom_info_types": [{ + "info_type": { "name": "MY_CUSTOM_TYPE", }, "likelihood": "UNLIKELY", - "surrogateType": {}, + "surrogate_type": {}, }], - "infoTypes": [{ + "info_types": [{ "name": "EMAIL_ADDRESS", }], - "minLikelihood": "UNLIKELY", - "ruleSets": [ + "min_likelihood": "UNLIKELY", + "rule_sets": [ { - "infoTypes": [{ + "info_types": [{ "name": "EMAIL_ADDRESS", }], "rules": [{ - "exclusionRule": { + "exclusion_rule": { "regex": { "pattern": ".+@example.com", }, - "matchingType": "MATCHING_TYPE_FULL_MATCH", + "matching_type": "MATCHING_TYPE_FULL_MATCH", }, }], }, { - "infoTypes": [{ + "info_types": [{ "name": "MY_CUSTOM_TYPE", }], "rules": [{ - "hotwordRule": { - "hotwordRegex": { + "hotword_rule": { + "hotword_regex": { "pattern": "example*", }, "proximity": { - "windowBefore": 50, + "window_before": 50, }, - "likelihoodAdjustment": { - "fixedLikelihood": "VERY_LIKELY", + "likelihood_adjustment": { + "fixed_likelihood": "VERY_LIKELY", }, }, }], }, ], "limits": { - "maxFindingsPerItem": 10, - "maxFindingsPerRequest": 50, + "max_findings_per_item": 10, + "max_findings_per_request": 50, }, }) ``` @@ -518,7 +518,7 @@ def __init__(__self__, max_infotype_per_finding_default = gcp.dataloss.PreventionInspectTemplate("max_infotype_per_finding_default", parent="projects/my-project-name", inspect_config={ - "infoTypes": [ + "info_types": [ { "name": "EMAIL_ADDRESS", }, @@ -526,12 +526,12 @@ def __init__(__self__, "name": "PERSON_NAME", }, ], - "minLikelihood": "UNLIKELY", + "min_likelihood": "UNLIKELY", "limits": { - "maxFindingsPerRequest": 333, - "maxFindingsPerItem": 222, - "maxFindingsPerInfoTypes": [{ - "maxFindings": 111, + "max_findings_per_request": 333, + "max_findings_per_item": 222, + "max_findings_per_info_types": [{ + "max_findings": 111, }], }, }) @@ -601,7 +601,7 @@ def __init__(__self__, description="My description", display_name="display_name", inspect_config={ - "infoTypes": [ + "info_types": [ { "name": "EMAIL_ADDRESS", }, @@ -621,23 +621,23 @@ def __init__(__self__, "name": "FIRST_NAME", }, ], - "minLikelihood": "UNLIKELY", - "ruleSets": [ + "min_likelihood": "UNLIKELY", + "rule_sets": [ { - "infoTypes": [{ + "info_types": [{ "name": "EMAIL_ADDRESS", }], "rules": [{ - "exclusionRule": { + "exclusion_rule": { "regex": { "pattern": ".+@example.com", }, - "matchingType": "MATCHING_TYPE_FULL_MATCH", + "matching_type": "MATCHING_TYPE_FULL_MATCH", }, }], }, { - "infoTypes": [ + "info_types": [ { "name": "EMAIL_ADDRESS", }, @@ -655,48 +655,48 @@ def __init__(__self__, }, ], "rules": [{ - "exclusionRule": { + "exclusion_rule": { "dictionary": { - "wordList": { + "word_list": { "words": ["TEST"], }, }, - "matchingType": "MATCHING_TYPE_PARTIAL_MATCH", + "matching_type": "MATCHING_TYPE_PARTIAL_MATCH", }, }], }, { - "infoTypes": [{ + "info_types": [{ "name": "PERSON_NAME", }], "rules": [{ - "hotwordRule": { - "hotwordRegex": { + "hotword_rule": { + "hotword_regex": { "pattern": "patient", }, "proximity": { - "windowBefore": 50, + "window_before": 50, }, - "likelihoodAdjustment": { - "fixedLikelihood": "VERY_LIKELY", + "likelihood_adjustment": { + "fixed_likelihood": "VERY_LIKELY", }, }, }], }, ], "limits": { - "maxFindingsPerItem": 10, - "maxFindingsPerRequest": 50, - "maxFindingsPerInfoTypes": [ + "max_findings_per_item": 10, + "max_findings_per_request": 50, + "max_findings_per_info_types": [ { - "maxFindings": 75, - "infoType": { + "max_findings": 75, + "info_type": { "name": "PERSON_NAME", }, }, { - "maxFindings": 80, - "infoType": { + "max_findings": 80, + "info_type": { "name": "LAST_NAME", }, }, @@ -715,8 +715,8 @@ def __init__(__self__, description="My description", display_name="display_name", inspect_config={ - "customInfoTypes": [{ - "infoType": { + "custom_info_types": [{ + "info_type": { "name": "MY_CUSTOM_TYPE", }, "likelihood": "UNLIKELY", @@ -724,46 +724,46 @@ def __init__(__self__, "pattern": "test*", }, }], - "infoTypes": [{ + "info_types": [{ "name": "EMAIL_ADDRESS", }], - "minLikelihood": "UNLIKELY", - "ruleSets": [ + "min_likelihood": "UNLIKELY", + "rule_sets": [ { - "infoTypes": [{ + "info_types": [{ "name": "EMAIL_ADDRESS", }], "rules": [{ - "exclusionRule": { + "exclusion_rule": { "regex": { "pattern": ".+@example.com", }, - "matchingType": "MATCHING_TYPE_FULL_MATCH", + "matching_type": "MATCHING_TYPE_FULL_MATCH", }, }], }, { - "infoTypes": [{ + "info_types": [{ "name": "MY_CUSTOM_TYPE", }], "rules": [{ - "hotwordRule": { - "hotwordRegex": { + "hotword_rule": { + "hotword_regex": { "pattern": "example*", }, "proximity": { - "windowBefore": 50, + "window_before": 50, }, - "likelihoodAdjustment": { - "fixedLikelihood": "VERY_LIKELY", + "likelihood_adjustment": { + "fixed_likelihood": "VERY_LIKELY", }, }, }], }, ], "limits": { - "maxFindingsPerItem": 10, - "maxFindingsPerRequest": 50, + "max_findings_per_item": 10, + "max_findings_per_request": 50, }, }) ``` @@ -778,53 +778,53 @@ def __init__(__self__, description="My description", display_name="display_name", inspect_config={ - "customInfoTypes": [{ - "infoType": { + "custom_info_types": [{ + "info_type": { "name": "MY_CUSTOM_TYPE", }, "likelihood": "UNLIKELY", - "surrogateType": {}, + "surrogate_type": {}, }], - "infoTypes": [{ + "info_types": [{ "name": "EMAIL_ADDRESS", }], - "minLikelihood": "UNLIKELY", - "ruleSets": [ + "min_likelihood": "UNLIKELY", + "rule_sets": [ { - "infoTypes": [{ + "info_types": [{ "name": "EMAIL_ADDRESS", }], "rules": [{ - "exclusionRule": { + "exclusion_rule": { "regex": { "pattern": ".+@example.com", }, - "matchingType": "MATCHING_TYPE_FULL_MATCH", + "matching_type": "MATCHING_TYPE_FULL_MATCH", }, }], }, { - "infoTypes": [{ + "info_types": [{ "name": "MY_CUSTOM_TYPE", }], "rules": [{ - "hotwordRule": { - "hotwordRegex": { + "hotword_rule": { + "hotword_regex": { "pattern": "example*", }, "proximity": { - "windowBefore": 50, + "window_before": 50, }, - "likelihoodAdjustment": { - "fixedLikelihood": "VERY_LIKELY", + "likelihood_adjustment": { + "fixed_likelihood": "VERY_LIKELY", }, }, }], }, ], "limits": { - "maxFindingsPerItem": 10, - "maxFindingsPerRequest": 50, + "max_findings_per_item": 10, + "max_findings_per_request": 50, }, }) ``` @@ -837,7 +837,7 @@ def __init__(__self__, max_infotype_per_finding_default = gcp.dataloss.PreventionInspectTemplate("max_infotype_per_finding_default", parent="projects/my-project-name", inspect_config={ - "infoTypes": [ + "info_types": [ { "name": "EMAIL_ADDRESS", }, @@ -845,12 +845,12 @@ def __init__(__self__, "name": "PERSON_NAME", }, ], - "minLikelihood": "UNLIKELY", + "min_likelihood": "UNLIKELY", "limits": { - "maxFindingsPerRequest": 333, - "maxFindingsPerItem": 222, - "maxFindingsPerInfoTypes": [{ - "maxFindings": 111, + "max_findings_per_request": 333, + "max_findings_per_item": 222, + "max_findings_per_info_types": [{ + "max_findings": 111, }], }, }) diff --git a/sdk/python/pulumi_gcp/dataloss/prevention_job_trigger.py b/sdk/python/pulumi_gcp/dataloss/prevention_job_trigger.py index eae2a0939f..12c4679007 100644 --- a/sdk/python/pulumi_gcp/dataloss/prevention_job_trigger.py +++ b/sdk/python/pulumi_gcp/dataloss/prevention_job_trigger.py @@ -368,24 +368,24 @@ def __init__(__self__, display_name="Displayname", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "fake", + "inspect_template_name": "fake", "actions": [{ - "saveFindings": { - "outputConfig": { + "save_findings": { + "output_config": { "table": { - "projectId": "project", - "datasetId": "dataset", + "project_id": "project", + "dataset_id": "dataset", }, }, }, }], - "storageConfig": { - "cloudStorageOptions": { - "fileSet": { + "storage_config": { + "cloud_storage_options": { + "file_set": { "url": "gs://mybucket/directory/", }, }, @@ -404,30 +404,30 @@ def __init__(__self__, display_name="Displayname", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "fake", + "inspect_template_name": "fake", "actions": [{ - "saveFindings": { - "outputConfig": { + "save_findings": { + "output_config": { "table": { - "projectId": "project", - "datasetId": "dataset", + "project_id": "project", + "dataset_id": "dataset", }, }, }, }], - "storageConfig": { - "bigQueryOptions": { - "tableReference": { - "projectId": "project", - "datasetId": "dataset", - "tableId": "table_to_scan", + "storage_config": { + "big_query_options": { + "table_reference": { + "project_id": "project", + "dataset_id": "dataset", + "table_id": "table_to_scan", }, - "rowsLimit": 1000, - "sampleMethod": "RANDOM_START", + "rows_limit": 1000, + "sample_method": "RANDOM_START", }, }, }) @@ -444,30 +444,30 @@ def __init__(__self__, display_name="Displayname", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "fake", + "inspect_template_name": "fake", "actions": [{ - "saveFindings": { - "outputConfig": { + "save_findings": { + "output_config": { "table": { - "projectId": "project", - "datasetId": "dataset", + "project_id": "project", + "dataset_id": "dataset", }, }, }, }], - "storageConfig": { - "bigQueryOptions": { - "tableReference": { - "projectId": "project", - "datasetId": "dataset", - "tableId": "table_to_scan", + "storage_config": { + "big_query_options": { + "table_reference": { + "project_id": "project", + "dataset_id": "dataset", + "table_id": "table_to_scan", }, - "rowsLimitPercent": 50, - "sampleMethod": "RANDOM_START", + "rows_limit_percent": 50, + "sample_method": "RANDOM_START", }, }, }) @@ -484,17 +484,17 @@ def __init__(__self__, display_name="TerraformDisplayName", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "sample-inspect-template", + "inspect_template_name": "sample-inspect-template", "actions": [{ - "jobNotificationEmails": {}, + "job_notification_emails": {}, }], - "storageConfig": { - "cloudStorageOptions": { - "fileSet": { + "storage_config": { + "cloud_storage_options": { + "file_set": { "url": "gs://mybucket/directory/", }, }, @@ -547,35 +547,35 @@ def __init__(__self__, display_name="TerraformDisplayName", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "sample-inspect-template", + "inspect_template_name": "sample-inspect-template", "actions": [{ "deidentify": { - "cloudStorageOutput": "gs://samplebucket/dir/", - "fileTypesToTransforms": [ + "cloud_storage_output": "gs://samplebucket/dir/", + "file_types_to_transforms": [ "CSV", "TSV", ], - "transformationDetailsStorageConfig": { + "transformation_details_storage_config": { "table": { - "projectId": "my-project-name", - "datasetId": default.dataset_id, - "tableId": default_table.table_id, + "project_id": "my-project-name", + "dataset_id": default.dataset_id, + "table_id": default_table.table_id, }, }, - "transformationConfig": { - "deidentifyTemplate": "sample-deidentify-template", - "imageRedactTemplate": "sample-image-redact-template", - "structuredDeidentifyTemplate": "sample-structured-deidentify-template", + "transformation_config": { + "deidentify_template": "sample-deidentify-template", + "image_redact_template": "sample-image-redact-template", + "structured_deidentify_template": "sample-structured-deidentify-template", }, }, }], - "storageConfig": { - "cloudStorageOptions": { - "fileSet": { + "storage_config": { + "cloud_storage_options": { + "file_set": { "url": "gs://mybucket/directory/", }, }, @@ -594,26 +594,26 @@ def __init__(__self__, "manual": {}, }], inspect_job={ - "inspectTemplateName": "fake", + "inspect_template_name": "fake", "actions": [{ - "saveFindings": { - "outputConfig": { + "save_findings": { + "output_config": { "table": { - "projectId": "project", - "datasetId": "dataset", + "project_id": "project", + "dataset_id": "dataset", }, }, }, }], - "storageConfig": { - "hybridOptions": { + "storage_config": { + "hybrid_options": { "description": "Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings", - "requiredFindingLabelKeys": ["appointment-bookings-comments"], + "required_finding_label_keys": ["appointment-bookings-comments"], "labels": { "env": "prod", }, - "tableOptions": { - "identifyingFields": [{ + "table_options": { + "identifying_fields": [{ "name": "booking_id", }], }, @@ -633,31 +633,31 @@ def __init__(__self__, display_name="Displayname", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "fake", + "inspect_template_name": "fake", "actions": [{ - "saveFindings": { - "outputConfig": { + "save_findings": { + "output_config": { "table": { - "projectId": "project", - "datasetId": "dataset", + "project_id": "project", + "dataset_id": "dataset", }, }, }, }], - "storageConfig": { - "cloudStorageOptions": { - "fileSet": { + "storage_config": { + "cloud_storage_options": { + "file_set": { "url": "gs://mybucket/directory/", }, }, }, - "inspectConfig": { - "customInfoTypes": [{ - "infoType": { + "inspect_config": { + "custom_info_types": [{ + "info_type": { "name": "MY_CUSTOM_TYPE", }, "likelihood": "UNLIKELY", @@ -665,46 +665,46 @@ def __init__(__self__, "pattern": "test*", }, }], - "infoTypes": [{ + "info_types": [{ "name": "EMAIL_ADDRESS", }], - "minLikelihood": "UNLIKELY", - "ruleSets": [ + "min_likelihood": "UNLIKELY", + "rule_sets": [ { - "infoTypes": [{ + "info_types": [{ "name": "EMAIL_ADDRESS", }], "rules": [{ - "exclusionRule": { + "exclusion_rule": { "regex": { "pattern": ".+@example.com", }, - "matchingType": "MATCHING_TYPE_FULL_MATCH", + "matching_type": "MATCHING_TYPE_FULL_MATCH", }, }], }, { - "infoTypes": [{ + "info_types": [{ "name": "MY_CUSTOM_TYPE", }], "rules": [{ - "hotwordRule": { - "hotwordRegex": { + "hotword_rule": { + "hotword_regex": { "pattern": "example*", }, "proximity": { - "windowBefore": 50, + "window_before": 50, }, - "likelihoodAdjustment": { - "fixedLikelihood": "VERY_LIKELY", + "likelihood_adjustment": { + "fixed_likelihood": "VERY_LIKELY", }, }, }], }, ], "limits": { - "maxFindingsPerItem": 10, - "maxFindingsPerRequest": 50, + "max_findings_per_item": 10, + "max_findings_per_request": 50, }, }, }) @@ -721,17 +721,17 @@ def __init__(__self__, display_name="TerraformDisplayName", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "sample-inspect-template", + "inspect_template_name": "sample-inspect-template", "actions": [{ - "publishToStackdriver": {}, + "publish_to_stackdriver": {}, }], - "storageConfig": { - "cloudStorageOptions": { - "fileSet": { + "storage_config": { + "cloud_storage_options": { + "file_set": { "url": "gs://mybucket/directory/", }, }, @@ -751,24 +751,24 @@ def __init__(__self__, trigger_id="id-", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "fake", + "inspect_template_name": "fake", "actions": [{ - "saveFindings": { - "outputConfig": { + "save_findings": { + "output_config": { "table": { - "projectId": "project", - "datasetId": "dataset123", + "project_id": "project", + "dataset_id": "dataset123", }, }, }, }], - "storageConfig": { - "cloudStorageOptions": { - "fileSet": { + "storage_config": { + "cloud_storage_options": { + "file_set": { "url": "gs://mybucket/directory/", }, }, @@ -787,31 +787,31 @@ def __init__(__self__, display_name="Displayname", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "fake", + "inspect_template_name": "fake", "actions": [ { - "saveFindings": { - "outputConfig": { + "save_findings": { + "output_config": { "table": { - "projectId": "project", - "datasetId": "dataset", + "project_id": "project", + "dataset_id": "dataset", }, }, }, }, { - "pubSub": { + "pub_sub": { "topic": "projects/project/topics/topic-name", }, }, ], - "storageConfig": { - "cloudStorageOptions": { - "fileSet": { + "storage_config": { + "cloud_storage_options": { + "file_set": { "url": "gs://mybucket/directory/", }, }, @@ -830,27 +830,27 @@ def __init__(__self__, display_name="Displayname", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "fake", + "inspect_template_name": "fake", "actions": [{ - "saveFindings": { - "outputConfig": { + "save_findings": { + "output_config": { "table": { - "projectId": "project", - "datasetId": "dataset", + "project_id": "project", + "dataset_id": "dataset", }, }, }, }], - "storageConfig": { - "timespanConfig": { - "enableAutoPopulationOfTimespanConfig": True, + "storage_config": { + "timespan_config": { + "enable_auto_population_of_timespan_config": True, }, - "cloudStorageOptions": { - "fileSet": { + "cloud_storage_options": { + "file_set": { "url": "gs://mybucket/directory/", }, }, @@ -869,33 +869,33 @@ def __init__(__self__, display_name="bigquery-dlp-job-trigger-limit-timespan", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "projects/test/locations/global/inspectTemplates/6425492983381733900", - "storageConfig": { - "bigQueryOptions": { - "tableReference": { - "projectId": "project", - "datasetId": "dataset", - "tableId": "table", + "inspect_template_name": "projects/test/locations/global/inspectTemplates/6425492983381733900", + "storage_config": { + "big_query_options": { + "table_reference": { + "project_id": "project", + "dataset_id": "dataset", + "table_id": "table", }, - "sampleMethod": "", + "sample_method": "", }, - "timespanConfig": { - "startTime": "2023-01-01T00:00:23Z", - "timestampField": { + "timespan_config": { + "start_time": "2023-01-01T00:00:23Z", + "timestamp_field": { "name": "timestamp", }, }, }, "actions": [{ - "saveFindings": { - "outputConfig": { + "save_findings": { + "output_config": { "table": { - "projectId": "project", - "datasetId": "output", + "project_id": "project", + "dataset_id": "output", }, }, }, @@ -963,24 +963,24 @@ def __init__(__self__, display_name="Displayname", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "fake", + "inspect_template_name": "fake", "actions": [{ - "saveFindings": { - "outputConfig": { + "save_findings": { + "output_config": { "table": { - "projectId": "project", - "datasetId": "dataset", + "project_id": "project", + "dataset_id": "dataset", }, }, }, }], - "storageConfig": { - "cloudStorageOptions": { - "fileSet": { + "storage_config": { + "cloud_storage_options": { + "file_set": { "url": "gs://mybucket/directory/", }, }, @@ -999,30 +999,30 @@ def __init__(__self__, display_name="Displayname", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "fake", + "inspect_template_name": "fake", "actions": [{ - "saveFindings": { - "outputConfig": { + "save_findings": { + "output_config": { "table": { - "projectId": "project", - "datasetId": "dataset", + "project_id": "project", + "dataset_id": "dataset", }, }, }, }], - "storageConfig": { - "bigQueryOptions": { - "tableReference": { - "projectId": "project", - "datasetId": "dataset", - "tableId": "table_to_scan", + "storage_config": { + "big_query_options": { + "table_reference": { + "project_id": "project", + "dataset_id": "dataset", + "table_id": "table_to_scan", }, - "rowsLimit": 1000, - "sampleMethod": "RANDOM_START", + "rows_limit": 1000, + "sample_method": "RANDOM_START", }, }, }) @@ -1039,30 +1039,30 @@ def __init__(__self__, display_name="Displayname", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "fake", + "inspect_template_name": "fake", "actions": [{ - "saveFindings": { - "outputConfig": { + "save_findings": { + "output_config": { "table": { - "projectId": "project", - "datasetId": "dataset", + "project_id": "project", + "dataset_id": "dataset", }, }, }, }], - "storageConfig": { - "bigQueryOptions": { - "tableReference": { - "projectId": "project", - "datasetId": "dataset", - "tableId": "table_to_scan", + "storage_config": { + "big_query_options": { + "table_reference": { + "project_id": "project", + "dataset_id": "dataset", + "table_id": "table_to_scan", }, - "rowsLimitPercent": 50, - "sampleMethod": "RANDOM_START", + "rows_limit_percent": 50, + "sample_method": "RANDOM_START", }, }, }) @@ -1079,17 +1079,17 @@ def __init__(__self__, display_name="TerraformDisplayName", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "sample-inspect-template", + "inspect_template_name": "sample-inspect-template", "actions": [{ - "jobNotificationEmails": {}, + "job_notification_emails": {}, }], - "storageConfig": { - "cloudStorageOptions": { - "fileSet": { + "storage_config": { + "cloud_storage_options": { + "file_set": { "url": "gs://mybucket/directory/", }, }, @@ -1142,35 +1142,35 @@ def __init__(__self__, display_name="TerraformDisplayName", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "sample-inspect-template", + "inspect_template_name": "sample-inspect-template", "actions": [{ "deidentify": { - "cloudStorageOutput": "gs://samplebucket/dir/", - "fileTypesToTransforms": [ + "cloud_storage_output": "gs://samplebucket/dir/", + "file_types_to_transforms": [ "CSV", "TSV", ], - "transformationDetailsStorageConfig": { + "transformation_details_storage_config": { "table": { - "projectId": "my-project-name", - "datasetId": default.dataset_id, - "tableId": default_table.table_id, + "project_id": "my-project-name", + "dataset_id": default.dataset_id, + "table_id": default_table.table_id, }, }, - "transformationConfig": { - "deidentifyTemplate": "sample-deidentify-template", - "imageRedactTemplate": "sample-image-redact-template", - "structuredDeidentifyTemplate": "sample-structured-deidentify-template", + "transformation_config": { + "deidentify_template": "sample-deidentify-template", + "image_redact_template": "sample-image-redact-template", + "structured_deidentify_template": "sample-structured-deidentify-template", }, }, }], - "storageConfig": { - "cloudStorageOptions": { - "fileSet": { + "storage_config": { + "cloud_storage_options": { + "file_set": { "url": "gs://mybucket/directory/", }, }, @@ -1189,26 +1189,26 @@ def __init__(__self__, "manual": {}, }], inspect_job={ - "inspectTemplateName": "fake", + "inspect_template_name": "fake", "actions": [{ - "saveFindings": { - "outputConfig": { + "save_findings": { + "output_config": { "table": { - "projectId": "project", - "datasetId": "dataset", + "project_id": "project", + "dataset_id": "dataset", }, }, }, }], - "storageConfig": { - "hybridOptions": { + "storage_config": { + "hybrid_options": { "description": "Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings", - "requiredFindingLabelKeys": ["appointment-bookings-comments"], + "required_finding_label_keys": ["appointment-bookings-comments"], "labels": { "env": "prod", }, - "tableOptions": { - "identifyingFields": [{ + "table_options": { + "identifying_fields": [{ "name": "booking_id", }], }, @@ -1228,31 +1228,31 @@ def __init__(__self__, display_name="Displayname", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "fake", + "inspect_template_name": "fake", "actions": [{ - "saveFindings": { - "outputConfig": { + "save_findings": { + "output_config": { "table": { - "projectId": "project", - "datasetId": "dataset", + "project_id": "project", + "dataset_id": "dataset", }, }, }, }], - "storageConfig": { - "cloudStorageOptions": { - "fileSet": { + "storage_config": { + "cloud_storage_options": { + "file_set": { "url": "gs://mybucket/directory/", }, }, }, - "inspectConfig": { - "customInfoTypes": [{ - "infoType": { + "inspect_config": { + "custom_info_types": [{ + "info_type": { "name": "MY_CUSTOM_TYPE", }, "likelihood": "UNLIKELY", @@ -1260,46 +1260,46 @@ def __init__(__self__, "pattern": "test*", }, }], - "infoTypes": [{ + "info_types": [{ "name": "EMAIL_ADDRESS", }], - "minLikelihood": "UNLIKELY", - "ruleSets": [ + "min_likelihood": "UNLIKELY", + "rule_sets": [ { - "infoTypes": [{ + "info_types": [{ "name": "EMAIL_ADDRESS", }], "rules": [{ - "exclusionRule": { + "exclusion_rule": { "regex": { "pattern": ".+@example.com", }, - "matchingType": "MATCHING_TYPE_FULL_MATCH", + "matching_type": "MATCHING_TYPE_FULL_MATCH", }, }], }, { - "infoTypes": [{ + "info_types": [{ "name": "MY_CUSTOM_TYPE", }], "rules": [{ - "hotwordRule": { - "hotwordRegex": { + "hotword_rule": { + "hotword_regex": { "pattern": "example*", }, "proximity": { - "windowBefore": 50, + "window_before": 50, }, - "likelihoodAdjustment": { - "fixedLikelihood": "VERY_LIKELY", + "likelihood_adjustment": { + "fixed_likelihood": "VERY_LIKELY", }, }, }], }, ], "limits": { - "maxFindingsPerItem": 10, - "maxFindingsPerRequest": 50, + "max_findings_per_item": 10, + "max_findings_per_request": 50, }, }, }) @@ -1316,17 +1316,17 @@ def __init__(__self__, display_name="TerraformDisplayName", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "sample-inspect-template", + "inspect_template_name": "sample-inspect-template", "actions": [{ - "publishToStackdriver": {}, + "publish_to_stackdriver": {}, }], - "storageConfig": { - "cloudStorageOptions": { - "fileSet": { + "storage_config": { + "cloud_storage_options": { + "file_set": { "url": "gs://mybucket/directory/", }, }, @@ -1346,24 +1346,24 @@ def __init__(__self__, trigger_id="id-", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "fake", + "inspect_template_name": "fake", "actions": [{ - "saveFindings": { - "outputConfig": { + "save_findings": { + "output_config": { "table": { - "projectId": "project", - "datasetId": "dataset123", + "project_id": "project", + "dataset_id": "dataset123", }, }, }, }], - "storageConfig": { - "cloudStorageOptions": { - "fileSet": { + "storage_config": { + "cloud_storage_options": { + "file_set": { "url": "gs://mybucket/directory/", }, }, @@ -1382,31 +1382,31 @@ def __init__(__self__, display_name="Displayname", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "fake", + "inspect_template_name": "fake", "actions": [ { - "saveFindings": { - "outputConfig": { + "save_findings": { + "output_config": { "table": { - "projectId": "project", - "datasetId": "dataset", + "project_id": "project", + "dataset_id": "dataset", }, }, }, }, { - "pubSub": { + "pub_sub": { "topic": "projects/project/topics/topic-name", }, }, ], - "storageConfig": { - "cloudStorageOptions": { - "fileSet": { + "storage_config": { + "cloud_storage_options": { + "file_set": { "url": "gs://mybucket/directory/", }, }, @@ -1425,27 +1425,27 @@ def __init__(__self__, display_name="Displayname", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "fake", + "inspect_template_name": "fake", "actions": [{ - "saveFindings": { - "outputConfig": { + "save_findings": { + "output_config": { "table": { - "projectId": "project", - "datasetId": "dataset", + "project_id": "project", + "dataset_id": "dataset", }, }, }, }], - "storageConfig": { - "timespanConfig": { - "enableAutoPopulationOfTimespanConfig": True, + "storage_config": { + "timespan_config": { + "enable_auto_population_of_timespan_config": True, }, - "cloudStorageOptions": { - "fileSet": { + "cloud_storage_options": { + "file_set": { "url": "gs://mybucket/directory/", }, }, @@ -1464,33 +1464,33 @@ def __init__(__self__, display_name="bigquery-dlp-job-trigger-limit-timespan", triggers=[{ "schedule": { - "recurrencePeriodDuration": "86400s", + "recurrence_period_duration": "86400s", }, }], inspect_job={ - "inspectTemplateName": "projects/test/locations/global/inspectTemplates/6425492983381733900", - "storageConfig": { - "bigQueryOptions": { - "tableReference": { - "projectId": "project", - "datasetId": "dataset", - "tableId": "table", + "inspect_template_name": "projects/test/locations/global/inspectTemplates/6425492983381733900", + "storage_config": { + "big_query_options": { + "table_reference": { + "project_id": "project", + "dataset_id": "dataset", + "table_id": "table", }, - "sampleMethod": "", + "sample_method": "", }, - "timespanConfig": { - "startTime": "2023-01-01T00:00:23Z", - "timestampField": { + "timespan_config": { + "start_time": "2023-01-01T00:00:23Z", + "timestamp_field": { "name": "timestamp", }, }, }, "actions": [{ - "saveFindings": { - "outputConfig": { + "save_findings": { + "output_config": { "table": { - "projectId": "project", - "datasetId": "output", + "project_id": "project", + "dataset_id": "output", }, }, }, 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 39a9e2ae5b..1ab3650aa2 100644 --- a/sdk/python/pulumi_gcp/dataloss/prevention_stored_info_type.py +++ b/sdk/python/pulumi_gcp/dataloss/prevention_stored_info_type.py @@ -357,7 +357,7 @@ def __init__(__self__, display_name="Displayname", regex={ "pattern": "patient", - "groupIndexes": [2], + "group_indexes": [2], }) ``` ### Dlp Stored Info Type Dictionary @@ -371,7 +371,7 @@ def __init__(__self__, description="Description", display_name="Displayname", dictionary={ - "wordList": { + "word_list": { "words": [ "word", "word2", @@ -398,10 +398,10 @@ def __init__(__self__, description="Description", display_name="Displayname", large_custom_dictionary={ - "cloudStorageFileSet": { + "cloud_storage_file_set": { "url": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"gs://{bucket_name}/{object_name}"), }, - "outputPath": { + "output_path": { "path": bucket.name.apply(lambda name: f"gs://{name}/output/dictionary.txt"), }, }) @@ -419,7 +419,7 @@ def __init__(__self__, stored_info_type_id="id-", regex={ "pattern": "patient", - "groupIndexes": [2], + "group_indexes": [2], }) ``` @@ -492,7 +492,7 @@ def __init__(__self__, display_name="Displayname", regex={ "pattern": "patient", - "groupIndexes": [2], + "group_indexes": [2], }) ``` ### Dlp Stored Info Type Dictionary @@ -506,7 +506,7 @@ def __init__(__self__, description="Description", display_name="Displayname", dictionary={ - "wordList": { + "word_list": { "words": [ "word", "word2", @@ -533,10 +533,10 @@ def __init__(__self__, description="Description", display_name="Displayname", large_custom_dictionary={ - "cloudStorageFileSet": { + "cloud_storage_file_set": { "url": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"gs://{bucket_name}/{object_name}"), }, - "outputPath": { + "output_path": { "path": bucket.name.apply(lambda name: f"gs://{name}/output/dictionary.txt"), }, }) @@ -554,7 +554,7 @@ def __init__(__self__, stored_info_type_id="id-", regex={ "pattern": "patient", - "groupIndexes": [2], + "group_indexes": [2], }) ``` diff --git a/sdk/python/pulumi_gcp/dataplex/asset.py b/sdk/python/pulumi_gcp/dataplex/asset.py index f03044dc37..548a1befd9 100644 --- a/sdk/python/pulumi_gcp/dataplex/asset.py +++ b/sdk/python/pulumi_gcp/dataplex/asset.py @@ -545,7 +545,7 @@ def __init__(__self__, "enabled": False, }, resource_spec={ - "locationType": "SINGLE_REGION", + "location_type": "SINGLE_REGION", }, project="my-project-name") primary = gcp.dataplex.Asset("primary", @@ -641,7 +641,7 @@ def __init__(__self__, "enabled": False, }, resource_spec={ - "locationType": "SINGLE_REGION", + "location_type": "SINGLE_REGION", }, project="my-project-name") primary = gcp.dataplex.Asset("primary", diff --git a/sdk/python/pulumi_gcp/dataplex/datascan.py b/sdk/python/pulumi_gcp/dataplex/datascan.py index ada0f8f4bc..1791fe27f3 100644 --- a/sdk/python/pulumi_gcp/dataplex/datascan.py +++ b/sdk/python/pulumi_gcp/dataplex/datascan.py @@ -547,7 +547,7 @@ def __init__(__self__, }, execution_spec={ "trigger": { - "onDemand": {}, + "on_demand": {}, }, }, data_profile_spec={}, @@ -584,17 +584,17 @@ def __init__(__self__, }, }, data_profile_spec={ - "samplingPercent": 80, - "rowFilter": "word_count > 10", - "includeFields": { - "fieldNames": ["word_count"], + "sampling_percent": 80, + "row_filter": "word_count > 10", + "include_fields": { + "field_names": ["word_count"], }, - "excludeFields": { - "fieldNames": ["property_type"], + "exclude_fields": { + "field_names": ["property_type"], }, - "postScanActions": { - "bigqueryExport": { - "resultsTable": "//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export", + "post_scan_actions": { + "bigquery_export": { + "results_table": "//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export", }, }, }, @@ -615,7 +615,7 @@ def __init__(__self__, }, execution_spec={ "trigger": { - "onDemand": {}, + "on_demand": {}, }, }, data_quality_spec={ @@ -623,8 +623,8 @@ def __init__(__self__, "dimension": "VALIDITY", "name": "rule1", "description": "rule 1 for validity dimension", - "tableConditionExpectation": { - "sqlExpression": "COUNT(*) > 0", + "table_condition_expectation": { + "sql_expression": "COUNT(*) > 0", }, }], }, @@ -656,40 +656,40 @@ def __init__(__self__, "field": "modified_date", }, data_quality_spec={ - "samplingPercent": 5, - "rowFilter": "station_id > 1000", + "sampling_percent": 5, + "row_filter": "station_id > 1000", "rules": [ { "column": "address", "dimension": "VALIDITY", "threshold": 0.99, - "nonNullExpectation": {}, + "non_null_expectation": {}, }, { "column": "council_district", "dimension": "VALIDITY", - "ignoreNull": True, + "ignore_null": True, "threshold": 0.9, - "rangeExpectation": { - "minValue": "1", - "maxValue": "10", - "strictMinEnabled": True, - "strictMaxEnabled": False, + "range_expectation": { + "min_value": "1", + "max_value": "10", + "strict_min_enabled": True, + "strict_max_enabled": False, }, }, { "column": "power_type", "dimension": "VALIDITY", - "ignoreNull": False, - "regexExpectation": { + "ignore_null": False, + "regex_expectation": { "regex": ".*solar.*", }, }, { "column": "property_type", "dimension": "VALIDITY", - "ignoreNull": False, - "setExpectation": { + "ignore_null": False, + "set_expectation": { "values": [ "sidewalk", "parkland", @@ -699,36 +699,36 @@ def __init__(__self__, { "column": "address", "dimension": "UNIQUENESS", - "uniquenessExpectation": {}, + "uniqueness_expectation": {}, }, { "column": "number_of_docks", "dimension": "VALIDITY", - "statisticRangeExpectation": { + "statistic_range_expectation": { "statistic": "MEAN", - "minValue": "5", - "maxValue": "15", - "strictMinEnabled": True, - "strictMaxEnabled": True, + "min_value": "5", + "max_value": "15", + "strict_min_enabled": True, + "strict_max_enabled": True, }, }, { "column": "footprint_length", "dimension": "VALIDITY", - "rowConditionExpectation": { - "sqlExpression": "footprint_length > 0 AND footprint_length <= 10", + "row_condition_expectation": { + "sql_expression": "footprint_length > 0 AND footprint_length <= 10", }, }, { "dimension": "VALIDITY", - "tableConditionExpectation": { - "sqlExpression": "COUNT(*) > 0", + "table_condition_expectation": { + "sql_expression": "COUNT(*) > 0", }, }, { "dimension": "VALIDITY", - "sqlAssertion": { - "sqlStatement": "select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null", + "sql_assertion": { + "sql_statement": "select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null", }, }, ], @@ -813,7 +813,7 @@ def __init__(__self__, }, execution_spec={ "trigger": { - "onDemand": {}, + "on_demand": {}, }, }, data_profile_spec={}, @@ -850,17 +850,17 @@ def __init__(__self__, }, }, data_profile_spec={ - "samplingPercent": 80, - "rowFilter": "word_count > 10", - "includeFields": { - "fieldNames": ["word_count"], + "sampling_percent": 80, + "row_filter": "word_count > 10", + "include_fields": { + "field_names": ["word_count"], }, - "excludeFields": { - "fieldNames": ["property_type"], + "exclude_fields": { + "field_names": ["property_type"], }, - "postScanActions": { - "bigqueryExport": { - "resultsTable": "//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export", + "post_scan_actions": { + "bigquery_export": { + "results_table": "//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export", }, }, }, @@ -881,7 +881,7 @@ def __init__(__self__, }, execution_spec={ "trigger": { - "onDemand": {}, + "on_demand": {}, }, }, data_quality_spec={ @@ -889,8 +889,8 @@ def __init__(__self__, "dimension": "VALIDITY", "name": "rule1", "description": "rule 1 for validity dimension", - "tableConditionExpectation": { - "sqlExpression": "COUNT(*) > 0", + "table_condition_expectation": { + "sql_expression": "COUNT(*) > 0", }, }], }, @@ -922,40 +922,40 @@ def __init__(__self__, "field": "modified_date", }, data_quality_spec={ - "samplingPercent": 5, - "rowFilter": "station_id > 1000", + "sampling_percent": 5, + "row_filter": "station_id > 1000", "rules": [ { "column": "address", "dimension": "VALIDITY", "threshold": 0.99, - "nonNullExpectation": {}, + "non_null_expectation": {}, }, { "column": "council_district", "dimension": "VALIDITY", - "ignoreNull": True, + "ignore_null": True, "threshold": 0.9, - "rangeExpectation": { - "minValue": "1", - "maxValue": "10", - "strictMinEnabled": True, - "strictMaxEnabled": False, + "range_expectation": { + "min_value": "1", + "max_value": "10", + "strict_min_enabled": True, + "strict_max_enabled": False, }, }, { "column": "power_type", "dimension": "VALIDITY", - "ignoreNull": False, - "regexExpectation": { + "ignore_null": False, + "regex_expectation": { "regex": ".*solar.*", }, }, { "column": "property_type", "dimension": "VALIDITY", - "ignoreNull": False, - "setExpectation": { + "ignore_null": False, + "set_expectation": { "values": [ "sidewalk", "parkland", @@ -965,36 +965,36 @@ def __init__(__self__, { "column": "address", "dimension": "UNIQUENESS", - "uniquenessExpectation": {}, + "uniqueness_expectation": {}, }, { "column": "number_of_docks", "dimension": "VALIDITY", - "statisticRangeExpectation": { + "statistic_range_expectation": { "statistic": "MEAN", - "minValue": "5", - "maxValue": "15", - "strictMinEnabled": True, - "strictMaxEnabled": True, + "min_value": "5", + "max_value": "15", + "strict_min_enabled": True, + "strict_max_enabled": True, }, }, { "column": "footprint_length", "dimension": "VALIDITY", - "rowConditionExpectation": { - "sqlExpression": "footprint_length > 0 AND footprint_length <= 10", + "row_condition_expectation": { + "sql_expression": "footprint_length > 0 AND footprint_length <= 10", }, }, { "dimension": "VALIDITY", - "tableConditionExpectation": { - "sqlExpression": "COUNT(*) > 0", + "table_condition_expectation": { + "sql_expression": "COUNT(*) > 0", }, }, { "dimension": "VALIDITY", - "sqlAssertion": { - "sqlStatement": "select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null", + "sql_assertion": { + "sql_statement": "select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null", }, }, ], diff --git a/sdk/python/pulumi_gcp/dataplex/task.py b/sdk/python/pulumi_gcp/dataplex/task.py index b8368d5480..497995f851 100644 --- a/sdk/python/pulumi_gcp/dataplex/task.py +++ b/sdk/python/pulumi_gcp/dataplex/task.py @@ -587,18 +587,18 @@ def __init__(__self__, trigger_spec={ "type": "RECURRING", "disabled": False, - "maxRetries": 3, - "startTime": "2023-10-02T15:01:23Z", + "max_retries": 3, + "start_time": "2023-10-02T15:01:23Z", "schedule": "1 * * * *", }, execution_spec={ - "serviceAccount": f"{project.number}-compute@developer.gserviceaccount.com", + "service_account": f"{project.number}-compute@developer.gserviceaccount.com", "project": "my-project-name", - "maxJobExecutionLifetime": "100s", - "kmsKey": "234jn2kjn42k3n423", + "max_job_execution_lifetime": "100s", + "kms_key": "234jn2kjn42k3n423", }, spark={ - "pythonScriptFile": "gs://dataproc-examples/pyspark/hello-world/hello-world.py", + "python_script_file": "gs://dataproc-examples/pyspark/hello-world/hello-world.py", }, project="my-project-name") ``` @@ -626,35 +626,35 @@ def __init__(__self__, }, description="task-spark-terraform", execution_spec={ - "serviceAccount": f"{project.number}-compute@developer.gserviceaccount.com", + "service_account": f"{project.number}-compute@developer.gserviceaccount.com", "args": { - "TASK_ARGS": "--output_location,gs://spark-job/task-result, --output_format, json", + "tas_k__args": "--output_location,gs://spark-job/task-result, --output_format, json", }, }, spark={ - "infrastructureSpec": { + "infrastructure_spec": { "batch": { - "executorsCount": 2, - "maxExecutorsCount": 100, + "executors_count": 2, + "max_executors_count": 100, }, - "containerImage": { + "container_image": { "image": "test-image", - "javaJars": ["test-java-jars.jar"], - "pythonPackages": ["gs://bucket-name/my/path/to/lib.tar.gz"], + "java_jars": ["test-java-jars.jar"], + "python_packages": ["gs://bucket-name/my/path/to/lib.tar.gz"], "properties": { "name": "wrench", "mass": "1.3kg", "count": "3", }, }, - "vpcNetwork": { - "networkTags": ["test-network-tag"], - "subNetwork": default.id, + "vpc_network": { + "network_tags": ["test-network-tag"], + "sub_network": default.id, }, }, - "fileUris": ["gs://terrafrom-test/test.csv"], - "archiveUris": ["gs://terraform-test/test.csv"], - "sqlScript": "show databases", + "file_uris": ["gs://terrafrom-test/test.csv"], + "archive_uris": ["gs://terraform-test/test.csv"], + "sql_script": "show databases", }, project="my-project-name") ``` @@ -682,35 +682,35 @@ def __init__(__self__, "schedule": "1 * * * *", }, execution_spec={ - "serviceAccount": f"{project.number}-compute@developer.gserviceaccount.com", + "service_account": f"{project.number}-compute@developer.gserviceaccount.com", "args": { - "TASK_ARGS": "--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json", + "tas_k__args": "--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json", }, }, notebook={ "notebook": "gs://terraform-test/test-notebook.ipynb", - "infrastructureSpec": { + "infrastructure_spec": { "batch": { - "executorsCount": 2, - "maxExecutorsCount": 100, + "executors_count": 2, + "max_executors_count": 100, }, - "containerImage": { + "container_image": { "image": "test-image", - "javaJars": ["test-java-jars.jar"], - "pythonPackages": ["gs://bucket-name/my/path/to/lib.tar.gz"], + "java_jars": ["test-java-jars.jar"], + "python_packages": ["gs://bucket-name/my/path/to/lib.tar.gz"], "properties": { "name": "wrench", "mass": "1.3kg", "count": "3", }, }, - "vpcNetwork": { - "networkTags": ["test-network-tag"], + "vpc_network": { + "network_tags": ["test-network-tag"], "network": default.id, }, }, - "fileUris": ["gs://terraform-test/test.csv"], - "archiveUris": ["gs://terraform-test/test.csv"], + "file_uris": ["gs://terraform-test/test.csv"], + "archive_uris": ["gs://terraform-test/test.csv"], }, project="my-project-name") ``` @@ -797,18 +797,18 @@ def __init__(__self__, trigger_spec={ "type": "RECURRING", "disabled": False, - "maxRetries": 3, - "startTime": "2023-10-02T15:01:23Z", + "max_retries": 3, + "start_time": "2023-10-02T15:01:23Z", "schedule": "1 * * * *", }, execution_spec={ - "serviceAccount": f"{project.number}-compute@developer.gserviceaccount.com", + "service_account": f"{project.number}-compute@developer.gserviceaccount.com", "project": "my-project-name", - "maxJobExecutionLifetime": "100s", - "kmsKey": "234jn2kjn42k3n423", + "max_job_execution_lifetime": "100s", + "kms_key": "234jn2kjn42k3n423", }, spark={ - "pythonScriptFile": "gs://dataproc-examples/pyspark/hello-world/hello-world.py", + "python_script_file": "gs://dataproc-examples/pyspark/hello-world/hello-world.py", }, project="my-project-name") ``` @@ -836,35 +836,35 @@ def __init__(__self__, }, description="task-spark-terraform", execution_spec={ - "serviceAccount": f"{project.number}-compute@developer.gserviceaccount.com", + "service_account": f"{project.number}-compute@developer.gserviceaccount.com", "args": { - "TASK_ARGS": "--output_location,gs://spark-job/task-result, --output_format, json", + "tas_k__args": "--output_location,gs://spark-job/task-result, --output_format, json", }, }, spark={ - "infrastructureSpec": { + "infrastructure_spec": { "batch": { - "executorsCount": 2, - "maxExecutorsCount": 100, + "executors_count": 2, + "max_executors_count": 100, }, - "containerImage": { + "container_image": { "image": "test-image", - "javaJars": ["test-java-jars.jar"], - "pythonPackages": ["gs://bucket-name/my/path/to/lib.tar.gz"], + "java_jars": ["test-java-jars.jar"], + "python_packages": ["gs://bucket-name/my/path/to/lib.tar.gz"], "properties": { "name": "wrench", "mass": "1.3kg", "count": "3", }, }, - "vpcNetwork": { - "networkTags": ["test-network-tag"], - "subNetwork": default.id, + "vpc_network": { + "network_tags": ["test-network-tag"], + "sub_network": default.id, }, }, - "fileUris": ["gs://terrafrom-test/test.csv"], - "archiveUris": ["gs://terraform-test/test.csv"], - "sqlScript": "show databases", + "file_uris": ["gs://terrafrom-test/test.csv"], + "archive_uris": ["gs://terraform-test/test.csv"], + "sql_script": "show databases", }, project="my-project-name") ``` @@ -892,35 +892,35 @@ def __init__(__self__, "schedule": "1 * * * *", }, execution_spec={ - "serviceAccount": f"{project.number}-compute@developer.gserviceaccount.com", + "service_account": f"{project.number}-compute@developer.gserviceaccount.com", "args": { - "TASK_ARGS": "--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json", + "tas_k__args": "--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json", }, }, notebook={ "notebook": "gs://terraform-test/test-notebook.ipynb", - "infrastructureSpec": { + "infrastructure_spec": { "batch": { - "executorsCount": 2, - "maxExecutorsCount": 100, + "executors_count": 2, + "max_executors_count": 100, }, - "containerImage": { + "container_image": { "image": "test-image", - "javaJars": ["test-java-jars.jar"], - "pythonPackages": ["gs://bucket-name/my/path/to/lib.tar.gz"], + "java_jars": ["test-java-jars.jar"], + "python_packages": ["gs://bucket-name/my/path/to/lib.tar.gz"], "properties": { "name": "wrench", "mass": "1.3kg", "count": "3", }, }, - "vpcNetwork": { - "networkTags": ["test-network-tag"], + "vpc_network": { + "network_tags": ["test-network-tag"], "network": default.id, }, }, - "fileUris": ["gs://terraform-test/test.csv"], - "archiveUris": ["gs://terraform-test/test.csv"], + "file_uris": ["gs://terraform-test/test.csv"], + "archive_uris": ["gs://terraform-test/test.csv"], }, project="my-project-name") ``` diff --git a/sdk/python/pulumi_gcp/dataplex/zone.py b/sdk/python/pulumi_gcp/dataplex/zone.py index 46feb3e407..d41e5651cc 100644 --- a/sdk/python/pulumi_gcp/dataplex/zone.py +++ b/sdk/python/pulumi_gcp/dataplex/zone.py @@ -513,7 +513,7 @@ def __init__(__self__, location="us-west1", name="zone", resource_spec={ - "locationType": "MULTI_REGION", + "location_type": "MULTI_REGION", }, type="RAW", description="Zone for DCL", @@ -595,7 +595,7 @@ def __init__(__self__, location="us-west1", name="zone", resource_spec={ - "locationType": "MULTI_REGION", + "location_type": "MULTI_REGION", }, type="RAW", description="Zone for DCL", diff --git a/sdk/python/pulumi_gcp/dataproc/autoscaling_policy.py b/sdk/python/pulumi_gcp/dataproc/autoscaling_policy.py index 93cb01af43..d069ea5d77 100644 --- a/sdk/python/pulumi_gcp/dataproc/autoscaling_policy.py +++ b/sdk/python/pulumi_gcp/dataproc/autoscaling_policy.py @@ -308,21 +308,21 @@ def __init__(__self__, policy_id="dataproc-policy", location="us-central1", worker_config={ - "maxInstances": 3, + "max_instances": 3, }, basic_algorithm={ - "yarnConfig": { - "gracefulDecommissionTimeout": "30s", - "scaleUpFactor": 0.5, - "scaleDownFactor": 0.5, + "yarn_config": { + "graceful_decommission_timeout": "30s", + "scale_up_factor": 0.5, + "scale_down_factor": 0.5, }, }) basic = gcp.dataproc.Cluster("basic", name="dataproc-policy", region="us-central1", cluster_config={ - "autoscalingConfig": { - "policyUri": asp.name, + "autoscaling_config": { + "policy_uri": asp.name, }, }) ``` @@ -391,21 +391,21 @@ def __init__(__self__, policy_id="dataproc-policy", location="us-central1", worker_config={ - "maxInstances": 3, + "max_instances": 3, }, basic_algorithm={ - "yarnConfig": { - "gracefulDecommissionTimeout": "30s", - "scaleUpFactor": 0.5, - "scaleDownFactor": 0.5, + "yarn_config": { + "graceful_decommission_timeout": "30s", + "scale_up_factor": 0.5, + "scale_down_factor": 0.5, }, }) basic = gcp.dataproc.Cluster("basic", name="dataproc-policy", region="us-central1", cluster_config={ - "autoscalingConfig": { - "policyUri": asp.name, + "autoscaling_config": { + "policy_uri": asp.name, }, }) ``` diff --git a/sdk/python/pulumi_gcp/dataproc/cluster.py b/sdk/python/pulumi_gcp/dataproc/cluster.py index 2337ee480e..fa785d6222 100644 --- a/sdk/python/pulumi_gcp/dataproc/cluster.py +++ b/sdk/python/pulumi_gcp/dataproc/cluster.py @@ -376,44 +376,44 @@ def __init__(__self__, "foo": "bar", }, cluster_config={ - "stagingBucket": "dataproc-staging-bucket", - "masterConfig": { - "numInstances": 1, - "machineType": "e2-medium", - "diskConfig": { - "bootDiskType": "pd-ssd", - "bootDiskSizeGb": 30, + "staging_bucket": "dataproc-staging-bucket", + "master_config": { + "num_instances": 1, + "machine_type": "e2-medium", + "disk_config": { + "boot_disk_type": "pd-ssd", + "boot_disk_size_gb": 30, }, }, - "workerConfig": { - "numInstances": 2, - "machineType": "e2-medium", - "minCpuPlatform": "Intel Skylake", - "diskConfig": { - "bootDiskSizeGb": 30, - "numLocalSsds": 1, + "worker_config": { + "num_instances": 2, + "machine_type": "e2-medium", + "min_cpu_platform": "Intel Skylake", + "disk_config": { + "boot_disk_size_gb": 30, + "num_local_ssds": 1, }, }, - "preemptibleWorkerConfig": { - "numInstances": 0, + "preemptible_worker_config": { + "num_instances": 0, }, - "softwareConfig": { - "imageVersion": "2.0.35-debian10", - "overrideProperties": { - "dataproc:dataproc.allow.zero.workers": "true", + "software_config": { + "image_version": "2.0.35-debian10", + "override_properties": { + "dataproc_dataproc_allow_zero_workers": "true", }, }, - "gceClusterConfig": { + "gce_cluster_config": { "tags": [ "foo", "bar", ], - "serviceAccount": default.email, - "serviceAccountScopes": ["cloud-platform"], + "service_account": default.email, + "service_account_scopes": ["cloud-platform"], }, - "initializationActions": [{ + "initialization_actions": [{ "script": "gs://dataproc-initialization-actions/stackdriver/stackdriver.sh", - "timeoutSec": 500, + "timeout_sec": 500, }], }) ``` @@ -428,13 +428,13 @@ def __init__(__self__, name="my-cluster-with-gpu", region="us-central1", cluster_config={ - "gceClusterConfig": { + "gce_cluster_config": { "zone": "us-central1-a", }, - "masterConfig": { + "master_config": { "accelerators": [{ - "acceleratorType": "nvidia-tesla-k80", - "acceleratorCount": 1, + "accelerator_type": "nvidia-tesla-k80", + "accelerator_count": 1, }], }, }) @@ -509,44 +509,44 @@ def __init__(__self__, "foo": "bar", }, cluster_config={ - "stagingBucket": "dataproc-staging-bucket", - "masterConfig": { - "numInstances": 1, - "machineType": "e2-medium", - "diskConfig": { - "bootDiskType": "pd-ssd", - "bootDiskSizeGb": 30, + "staging_bucket": "dataproc-staging-bucket", + "master_config": { + "num_instances": 1, + "machine_type": "e2-medium", + "disk_config": { + "boot_disk_type": "pd-ssd", + "boot_disk_size_gb": 30, }, }, - "workerConfig": { - "numInstances": 2, - "machineType": "e2-medium", - "minCpuPlatform": "Intel Skylake", - "diskConfig": { - "bootDiskSizeGb": 30, - "numLocalSsds": 1, + "worker_config": { + "num_instances": 2, + "machine_type": "e2-medium", + "min_cpu_platform": "Intel Skylake", + "disk_config": { + "boot_disk_size_gb": 30, + "num_local_ssds": 1, }, }, - "preemptibleWorkerConfig": { - "numInstances": 0, + "preemptible_worker_config": { + "num_instances": 0, }, - "softwareConfig": { - "imageVersion": "2.0.35-debian10", - "overrideProperties": { - "dataproc:dataproc.allow.zero.workers": "true", + "software_config": { + "image_version": "2.0.35-debian10", + "override_properties": { + "dataproc_dataproc_allow_zero_workers": "true", }, }, - "gceClusterConfig": { + "gce_cluster_config": { "tags": [ "foo", "bar", ], - "serviceAccount": default.email, - "serviceAccountScopes": ["cloud-platform"], + "service_account": default.email, + "service_account_scopes": ["cloud-platform"], }, - "initializationActions": [{ + "initialization_actions": [{ "script": "gs://dataproc-initialization-actions/stackdriver/stackdriver.sh", - "timeoutSec": 500, + "timeout_sec": 500, }], }) ``` @@ -561,13 +561,13 @@ def __init__(__self__, name="my-cluster-with-gpu", region="us-central1", cluster_config={ - "gceClusterConfig": { + "gce_cluster_config": { "zone": "us-central1-a", }, - "masterConfig": { + "master_config": { "accelerators": [{ - "acceleratorType": "nvidia-tesla-k80", - "acceleratorCount": 1, + "accelerator_type": "nvidia-tesla-k80", + "accelerator_count": 1, }], }, }) diff --git a/sdk/python/pulumi_gcp/dataproc/job.py b/sdk/python/pulumi_gcp/dataproc/job.py index 2634f59857..87bc3cf402 100644 --- a/sdk/python/pulumi_gcp/dataproc/job.py +++ b/sdk/python/pulumi_gcp/dataproc/job.py @@ -633,17 +633,17 @@ def __init__(__self__, region=mycluster.region, force_delete=True, placement={ - "clusterName": mycluster.name, + "cluster_name": mycluster.name, }, spark_config={ - "mainClass": "org.apache.spark.examples.SparkPi", - "jarFileUris": ["file:///usr/lib/spark/examples/jars/spark-examples.jar"], + "main_class": "org.apache.spark.examples.SparkPi", + "jar_file_uris": ["file:///usr/lib/spark/examples/jars/spark-examples.jar"], "args": ["1000"], "properties": { - "spark.logConf": "true", + "spark_log_conf": "true", }, - "loggingConfig": { - "driverLogLevels": { + "logging_config": { + "driver_log_levels": { "root": "INFO", }, }, @@ -653,12 +653,12 @@ def __init__(__self__, region=mycluster.region, force_delete=True, placement={ - "clusterName": mycluster.name, + "cluster_name": mycluster.name, }, pyspark_config={ - "mainPythonFileUri": "gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py", + "main_python_file_uri": "gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py", "properties": { - "spark.logConf": "true", + "spark_log_conf": "true", }, }) pulumi.export("sparkStatus", spark.statuses[0].state) @@ -718,17 +718,17 @@ def __init__(__self__, region=mycluster.region, force_delete=True, placement={ - "clusterName": mycluster.name, + "cluster_name": mycluster.name, }, spark_config={ - "mainClass": "org.apache.spark.examples.SparkPi", - "jarFileUris": ["file:///usr/lib/spark/examples/jars/spark-examples.jar"], + "main_class": "org.apache.spark.examples.SparkPi", + "jar_file_uris": ["file:///usr/lib/spark/examples/jars/spark-examples.jar"], "args": ["1000"], "properties": { - "spark.logConf": "true", + "spark_log_conf": "true", }, - "loggingConfig": { - "driverLogLevels": { + "logging_config": { + "driver_log_levels": { "root": "INFO", }, }, @@ -738,12 +738,12 @@ def __init__(__self__, region=mycluster.region, force_delete=True, placement={ - "clusterName": mycluster.name, + "cluster_name": mycluster.name, }, pyspark_config={ - "mainPythonFileUri": "gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py", + "main_python_file_uri": "gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py", "properties": { - "spark.logConf": "true", + "spark_log_conf": "true", }, }) pulumi.export("sparkStatus", spark.statuses[0].state) diff --git a/sdk/python/pulumi_gcp/dataproc/metastore_federation.py b/sdk/python/pulumi_gcp/dataproc/metastore_federation.py index 8b6a6d9ee8..2a879f6230 100644 --- a/sdk/python/pulumi_gcp/dataproc/metastore_federation.py +++ b/sdk/python/pulumi_gcp/dataproc/metastore_federation.py @@ -378,7 +378,7 @@ def __init__(__self__, tier="DEVELOPER", hive_metastore_config={ "version": "3.1.2", - "endpointProtocol": "GRPC", + "endpoint_protocol": "GRPC", }) default = gcp.dataproc.MetastoreFederation("default", location="us-central1", @@ -387,7 +387,7 @@ def __init__(__self__, backend_metastores=[{ "rank": "1", "name": default_metastore_service.id, - "metastoreType": "DATAPROC_METASTORE", + "metastore_type": "DATAPROC_METASTORE", }]) ``` ### Dataproc Metastore Federation Bigquery @@ -402,7 +402,7 @@ def __init__(__self__, tier="DEVELOPER", hive_metastore_config={ "version": "3.1.2", - "endpointProtocol": "GRPC", + "endpoint_protocol": "GRPC", }) project = gcp.organizations.get_project() default = gcp.dataproc.MetastoreFederation("default", @@ -413,12 +413,12 @@ def __init__(__self__, { "rank": "2", "name": project.id, - "metastoreType": "BIGQUERY", + "metastore_type": "BIGQUERY", }, { "rank": "1", "name": default_metastore_service.id, - "metastoreType": "DATAPROC_METASTORE", + "metastore_type": "DATAPROC_METASTORE", }, ]) ``` @@ -483,7 +483,7 @@ def __init__(__self__, tier="DEVELOPER", hive_metastore_config={ "version": "3.1.2", - "endpointProtocol": "GRPC", + "endpoint_protocol": "GRPC", }) default = gcp.dataproc.MetastoreFederation("default", location="us-central1", @@ -492,7 +492,7 @@ def __init__(__self__, backend_metastores=[{ "rank": "1", "name": default_metastore_service.id, - "metastoreType": "DATAPROC_METASTORE", + "metastore_type": "DATAPROC_METASTORE", }]) ``` ### Dataproc Metastore Federation Bigquery @@ -507,7 +507,7 @@ def __init__(__self__, tier="DEVELOPER", hive_metastore_config={ "version": "3.1.2", - "endpointProtocol": "GRPC", + "endpoint_protocol": "GRPC", }) project = gcp.organizations.get_project() default = gcp.dataproc.MetastoreFederation("default", @@ -518,12 +518,12 @@ def __init__(__self__, { "rank": "2", "name": project.id, - "metastoreType": "BIGQUERY", + "metastore_type": "BIGQUERY", }, { "rank": "1", "name": default_metastore_service.id, - "metastoreType": "DATAPROC_METASTORE", + "metastore_type": "DATAPROC_METASTORE", }, ]) ``` diff --git a/sdk/python/pulumi_gcp/dataproc/metastore_service.py b/sdk/python/pulumi_gcp/dataproc/metastore_service.py index 124697235f..297d96ac85 100644 --- a/sdk/python/pulumi_gcp/dataproc/metastore_service.py +++ b/sdk/python/pulumi_gcp/dataproc/metastore_service.py @@ -857,8 +857,8 @@ def __init__(__self__, port=9080, tier="DEVELOPER", maintenance_window={ - "hourOfDay": 2, - "dayOfWeek": "SUNDAY", + "hour_of_day": 2, + "day_of_week": "SUNDAY", }, hive_metastore_config={ "version": "2.3.6", @@ -884,7 +884,7 @@ def __init__(__self__, service_id="example-service", location="us-central1", encryption_config={ - "kmsKey": crypto_key.id, + "kms_key": crypto_key.id, }, hive_metastore_config={ "version": "3.1.2", @@ -942,7 +942,7 @@ def __init__(__self__, "consumers": [{ "subnetwork": subnet.id, }], - "customRoutesEnabled": True, + "custom_routes_enabled": True, }) ``` ### Dataproc Metastore Service Dpms2 @@ -959,7 +959,7 @@ def __init__(__self__, "version": "3.1.2", }, scaling_config={ - "instanceSize": "EXTRA_SMALL", + "instance_size": "EXTRA_SMALL", }) ``` ### Dataproc Metastore Service Dpms2 Scaling Factor @@ -976,7 +976,7 @@ def __init__(__self__, "version": "3.1.2", }, scaling_config={ - "scalingFactor": 2, + "scaling_factor": 2, }) ``` ### Dataproc Metastore Service Scheduled Backup @@ -994,17 +994,17 @@ def __init__(__self__, port=9080, tier="DEVELOPER", maintenance_window={ - "hourOfDay": 2, - "dayOfWeek": "SUNDAY", + "hour_of_day": 2, + "day_of_week": "SUNDAY", }, hive_metastore_config={ "version": "2.3.6", }, scheduled_backup={ "enabled": True, - "cronSchedule": "0 0 * * *", - "timeZone": "UTC", - "backupLocation": bucket.name.apply(lambda name: f"gs://{name}"), + "cron_schedule": "0 0 * * *", + "time_zone": "UTC", + "backup_location": bucket.name.apply(lambda name: f"gs://{name}"), }, labels={ "env": "test", @@ -1024,10 +1024,10 @@ def __init__(__self__, "version": "3.1.2", }, scaling_config={ - "autoscalingConfig": { - "autoscalingEnabled": True, - "limitConfig": { - "maxScalingFactor": 1, + "autoscaling_config": { + "autoscaling_enabled": True, + "limit_config": { + "max_scaling_factor": 1, }, }, }) @@ -1046,11 +1046,11 @@ def __init__(__self__, "version": "3.1.2", }, scaling_config={ - "autoscalingConfig": { - "autoscalingEnabled": True, - "limitConfig": { - "minScalingFactor": 0.1, - "maxScalingFactor": 1, + "autoscaling_config": { + "autoscaling_enabled": True, + "limit_config": { + "min_scaling_factor": 0.1, + "max_scaling_factor": 1, }, }, }) @@ -1069,10 +1069,10 @@ def __init__(__self__, "version": "3.1.2", }, scaling_config={ - "autoscalingConfig": { - "autoscalingEnabled": True, - "limitConfig": { - "minScalingFactor": 0.1, + "autoscaling_config": { + "autoscaling_enabled": True, + "limit_config": { + "min_scaling_factor": 0.1, }, }, }) @@ -1091,8 +1091,8 @@ def __init__(__self__, "version": "3.1.2", }, scaling_config={ - "autoscalingConfig": { - "autoscalingEnabled": True, + "autoscaling_config": { + "autoscaling_enabled": True, }, }) ``` @@ -1196,8 +1196,8 @@ def __init__(__self__, port=9080, tier="DEVELOPER", maintenance_window={ - "hourOfDay": 2, - "dayOfWeek": "SUNDAY", + "hour_of_day": 2, + "day_of_week": "SUNDAY", }, hive_metastore_config={ "version": "2.3.6", @@ -1223,7 +1223,7 @@ def __init__(__self__, service_id="example-service", location="us-central1", encryption_config={ - "kmsKey": crypto_key.id, + "kms_key": crypto_key.id, }, hive_metastore_config={ "version": "3.1.2", @@ -1281,7 +1281,7 @@ def __init__(__self__, "consumers": [{ "subnetwork": subnet.id, }], - "customRoutesEnabled": True, + "custom_routes_enabled": True, }) ``` ### Dataproc Metastore Service Dpms2 @@ -1298,7 +1298,7 @@ def __init__(__self__, "version": "3.1.2", }, scaling_config={ - "instanceSize": "EXTRA_SMALL", + "instance_size": "EXTRA_SMALL", }) ``` ### Dataproc Metastore Service Dpms2 Scaling Factor @@ -1315,7 +1315,7 @@ def __init__(__self__, "version": "3.1.2", }, scaling_config={ - "scalingFactor": 2, + "scaling_factor": 2, }) ``` ### Dataproc Metastore Service Scheduled Backup @@ -1333,17 +1333,17 @@ def __init__(__self__, port=9080, tier="DEVELOPER", maintenance_window={ - "hourOfDay": 2, - "dayOfWeek": "SUNDAY", + "hour_of_day": 2, + "day_of_week": "SUNDAY", }, hive_metastore_config={ "version": "2.3.6", }, scheduled_backup={ "enabled": True, - "cronSchedule": "0 0 * * *", - "timeZone": "UTC", - "backupLocation": bucket.name.apply(lambda name: f"gs://{name}"), + "cron_schedule": "0 0 * * *", + "time_zone": "UTC", + "backup_location": bucket.name.apply(lambda name: f"gs://{name}"), }, labels={ "env": "test", @@ -1363,10 +1363,10 @@ def __init__(__self__, "version": "3.1.2", }, scaling_config={ - "autoscalingConfig": { - "autoscalingEnabled": True, - "limitConfig": { - "maxScalingFactor": 1, + "autoscaling_config": { + "autoscaling_enabled": True, + "limit_config": { + "max_scaling_factor": 1, }, }, }) @@ -1385,11 +1385,11 @@ def __init__(__self__, "version": "3.1.2", }, scaling_config={ - "autoscalingConfig": { - "autoscalingEnabled": True, - "limitConfig": { - "minScalingFactor": 0.1, - "maxScalingFactor": 1, + "autoscaling_config": { + "autoscaling_enabled": True, + "limit_config": { + "min_scaling_factor": 0.1, + "max_scaling_factor": 1, }, }, }) @@ -1408,10 +1408,10 @@ def __init__(__self__, "version": "3.1.2", }, scaling_config={ - "autoscalingConfig": { - "autoscalingEnabled": True, - "limitConfig": { - "minScalingFactor": 0.1, + "autoscaling_config": { + "autoscaling_enabled": True, + "limit_config": { + "min_scaling_factor": 0.1, }, }, }) @@ -1430,8 +1430,8 @@ def __init__(__self__, "version": "3.1.2", }, scaling_config={ - "autoscalingConfig": { - "autoscalingEnabled": True, + "autoscaling_config": { + "autoscaling_enabled": True, }, }) ``` diff --git a/sdk/python/pulumi_gcp/dataproc/workflow_template.py b/sdk/python/pulumi_gcp/dataproc/workflow_template.py index a4b7450807..63c07a4fad 100644 --- a/sdk/python/pulumi_gcp/dataproc/workflow_template.py +++ b/sdk/python/pulumi_gcp/dataproc/workflow_template.py @@ -463,53 +463,53 @@ def __init__(__self__, name="template-example", location="us-central1", placement={ - "managedCluster": { - "clusterName": "my-cluster", + "managed_cluster": { + "cluster_name": "my-cluster", "config": { - "gceClusterConfig": { + "gce_cluster_config": { "zone": "us-central1-a", "tags": [ "foo", "bar", ], }, - "masterConfig": { - "numInstances": 1, - "machineType": "n1-standard-1", - "diskConfig": { - "bootDiskType": "pd-ssd", - "bootDiskSizeGb": 15, + "master_config": { + "num_instances": 1, + "machine_type": "n1-standard-1", + "disk_config": { + "boot_disk_type": "pd-ssd", + "boot_disk_size_gb": 15, }, }, - "workerConfig": { - "numInstances": 3, - "machineType": "n1-standard-2", - "diskConfig": { - "bootDiskSizeGb": 10, - "numLocalSsds": 2, + "worker_config": { + "num_instances": 3, + "machine_type": "n1-standard-2", + "disk_config": { + "boot_disk_size_gb": 10, + "num_local_ssds": 2, }, }, - "secondaryWorkerConfig": { - "numInstances": 2, + "secondary_worker_config": { + "num_instances": 2, }, - "softwareConfig": { - "imageVersion": "2.0.35-debian10", + "software_config": { + "image_version": "2.0.35-debian10", }, }, }, }, jobs=[ { - "stepId": "someJob", - "sparkJob": { - "mainClass": "SomeClass", + "step_id": "someJob", + "spark_job": { + "main_class": "SomeClass", }, }, { - "stepId": "otherJob", - "prerequisiteStepIds": ["someJob"], - "prestoJob": { - "queryFileUri": "someuri", + "step_id": "otherJob", + "prerequisite_step_ids": ["someJob"], + "presto_job": { + "query_file_uri": "someuri", }, }, ]) @@ -582,53 +582,53 @@ def __init__(__self__, name="template-example", location="us-central1", placement={ - "managedCluster": { - "clusterName": "my-cluster", + "managed_cluster": { + "cluster_name": "my-cluster", "config": { - "gceClusterConfig": { + "gce_cluster_config": { "zone": "us-central1-a", "tags": [ "foo", "bar", ], }, - "masterConfig": { - "numInstances": 1, - "machineType": "n1-standard-1", - "diskConfig": { - "bootDiskType": "pd-ssd", - "bootDiskSizeGb": 15, + "master_config": { + "num_instances": 1, + "machine_type": "n1-standard-1", + "disk_config": { + "boot_disk_type": "pd-ssd", + "boot_disk_size_gb": 15, }, }, - "workerConfig": { - "numInstances": 3, - "machineType": "n1-standard-2", - "diskConfig": { - "bootDiskSizeGb": 10, - "numLocalSsds": 2, + "worker_config": { + "num_instances": 3, + "machine_type": "n1-standard-2", + "disk_config": { + "boot_disk_size_gb": 10, + "num_local_ssds": 2, }, }, - "secondaryWorkerConfig": { - "numInstances": 2, + "secondary_worker_config": { + "num_instances": 2, }, - "softwareConfig": { - "imageVersion": "2.0.35-debian10", + "software_config": { + "image_version": "2.0.35-debian10", }, }, }, }, jobs=[ { - "stepId": "someJob", - "sparkJob": { - "mainClass": "SomeClass", + "step_id": "someJob", + "spark_job": { + "main_class": "SomeClass", }, }, { - "stepId": "otherJob", - "prerequisiteStepIds": ["someJob"], - "prestoJob": { - "queryFileUri": "someuri", + "step_id": "otherJob", + "prerequisite_step_ids": ["someJob"], + "presto_job": { + "query_file_uri": "someuri", }, }, ]) diff --git a/sdk/python/pulumi_gcp/datastream/connection_profile.py b/sdk/python/pulumi_gcp/datastream/connection_profile.py index c97b438c3a..a028a12506 100644 --- a/sdk/python/pulumi_gcp/datastream/connection_profile.py +++ b/sdk/python/pulumi_gcp/datastream/connection_profile.py @@ -624,7 +624,7 @@ def __init__(__self__, connection_profile_id="my-profile", gcs_profile={ "bucket": "my-bucket", - "rootPath": "/path", + "root_path": "/path", }) ``` ### Datastream Connection Profile Postgresql Private Connection @@ -652,8 +652,8 @@ def __init__(__self__, region="us-central1", settings={ "tier": "db-f1-micro", - "ipConfiguration": { - "authorizedNetworks": [ + "ip_configuration": { + "authorized_networks": [ { "value": "34.71.242.81", }, @@ -694,7 +694,7 @@ def __init__(__self__, "database": db.name, }, private_connectivity={ - "privateConnection": private_connection.id, + "private_connection": private_connection.id, }) ``` ### Datastream Connection Profile Full @@ -709,7 +709,7 @@ def __init__(__self__, connection_profile_id="my-profile", gcs_profile={ "bucket": "my-bucket", - "rootPath": "/path", + "root_path": "/path", }, forward_ssh_connectivity={ "hostname": "google.com", @@ -734,8 +734,8 @@ def __init__(__self__, region="us-central1", settings={ "tier": "db-f1-micro", - "ipConfiguration": { - "authorizedNetworks": [ + "ip_configuration": { + "authorized_networks": [ { "value": "34.71.242.81", }, @@ -790,8 +790,8 @@ def __init__(__self__, deletion_protection=True, settings={ "tier": "db-custom-2-4096", - "ipConfiguration": { - "authorizedNetworks": [ + "ip_configuration": { + "authorized_networks": [ { "value": "34.71.242.81", }, @@ -913,7 +913,7 @@ def __init__(__self__, connection_profile_id="my-profile", gcs_profile={ "bucket": "my-bucket", - "rootPath": "/path", + "root_path": "/path", }) ``` ### Datastream Connection Profile Postgresql Private Connection @@ -941,8 +941,8 @@ def __init__(__self__, region="us-central1", settings={ "tier": "db-f1-micro", - "ipConfiguration": { - "authorizedNetworks": [ + "ip_configuration": { + "authorized_networks": [ { "value": "34.71.242.81", }, @@ -983,7 +983,7 @@ def __init__(__self__, "database": db.name, }, private_connectivity={ - "privateConnection": private_connection.id, + "private_connection": private_connection.id, }) ``` ### Datastream Connection Profile Full @@ -998,7 +998,7 @@ def __init__(__self__, connection_profile_id="my-profile", gcs_profile={ "bucket": "my-bucket", - "rootPath": "/path", + "root_path": "/path", }, forward_ssh_connectivity={ "hostname": "google.com", @@ -1023,8 +1023,8 @@ def __init__(__self__, region="us-central1", settings={ "tier": "db-f1-micro", - "ipConfiguration": { - "authorizedNetworks": [ + "ip_configuration": { + "authorized_networks": [ { "value": "34.71.242.81", }, @@ -1079,8 +1079,8 @@ def __init__(__self__, deletion_protection=True, settings={ "tier": "db-custom-2-4096", - "ipConfiguration": { - "authorizedNetworks": [ + "ip_configuration": { + "authorized_networks": [ { "value": "34.71.242.81", }, diff --git a/sdk/python/pulumi_gcp/datastream/stream.py b/sdk/python/pulumi_gcp/datastream/stream.py index 500ee8fd4e..da89221c35 100644 --- a/sdk/python/pulumi_gcp/datastream/stream.py +++ b/sdk/python/pulumi_gcp/datastream/stream.py @@ -530,12 +530,12 @@ def __init__(__self__, region="us-central1", settings={ "tier": "db-f1-micro", - "backupConfiguration": { + "backup_configuration": { "enabled": True, - "binaryLogEnabled": True, + "binary_log_enabled": True, }, - "ipConfiguration": { - "authorizedNetworks": [ + "ip_configuration": { + "authorized_networks": [ { "value": "34.71.242.81", }, @@ -601,7 +601,7 @@ def __init__(__self__, connection_profile_id="destination-profile", gcs_profile={ "bucket": bucket.name, - "rootPath": "/path", + "root_path": "/path", }) default = gcp.datastream.Stream("default", stream_id="my-stream", @@ -612,21 +612,21 @@ def __init__(__self__, "key": "value", }, source_config={ - "sourceConnectionProfile": source_connection_profile.id, - "mysqlSourceConfig": { - "includeObjects": { - "mysqlDatabases": [{ + "source_connection_profile": source_connection_profile.id, + "mysql_source_config": { + "include_objects": { + "mysql_databases": [{ "database": "my-database", - "mysqlTables": [ + "mysql_tables": [ { "table": "includedTable", - "mysqlColumns": [{ + "mysql_columns": [{ "column": "includedColumn", - "dataType": "VARCHAR", + "data_type": "VARCHAR", "collation": "utf8mb4", - "primaryKey": False, + "primary_key": False, "nullable": False, - "ordinalPosition": 0, + "ordinal_position": 0, }], }, { @@ -635,50 +635,50 @@ def __init__(__self__, ], }], }, - "excludeObjects": { - "mysqlDatabases": [{ + "exclude_objects": { + "mysql_databases": [{ "database": "my-database", - "mysqlTables": [{ + "mysql_tables": [{ "table": "excludedTable", - "mysqlColumns": [{ + "mysql_columns": [{ "column": "excludedColumn", - "dataType": "VARCHAR", + "data_type": "VARCHAR", "collation": "utf8mb4", - "primaryKey": False, + "primary_key": False, "nullable": False, - "ordinalPosition": 0, + "ordinal_position": 0, }], }], }], }, - "maxConcurrentCdcTasks": 5, + "max_concurrent_cdc_tasks": 5, }, }, destination_config={ - "destinationConnectionProfile": destination_connection_profile.id, - "gcsDestinationConfig": { + "destination_connection_profile": destination_connection_profile.id, + "gcs_destination_config": { "path": "mydata", - "fileRotationMb": 200, - "fileRotationInterval": "60s", - "jsonFileFormat": { - "schemaFileFormat": "NO_SCHEMA_FILE", + "file_rotation_mb": 200, + "file_rotation_interval": "60s", + "json_file_format": { + "schema_file_format": "NO_SCHEMA_FILE", "compression": "GZIP", }, }, }, backfill_all={ - "mysqlExcludedObjects": { - "mysqlDatabases": [{ + "mysql_excluded_objects": { + "mysql_databases": [{ "database": "my-database", - "mysqlTables": [{ + "mysql_tables": [{ "table": "excludedTable", - "mysqlColumns": [{ + "mysql_columns": [{ "column": "excludedColumn", - "dataType": "VARCHAR", + "data_type": "VARCHAR", "collation": "utf8mb4", - "primaryKey": False, + "primary_key": False, "nullable": False, - "ordinalPosition": 0, + "ordinal_position": 0, }], }], }], @@ -715,28 +715,28 @@ def __init__(__self__, stream_id="my-stream", desired_state="RUNNING", source_config={ - "sourceConnectionProfile": source.id, - "postgresqlSourceConfig": { - "maxConcurrentBackfillTasks": 12, + "source_connection_profile": source.id, + "postgresql_source_config": { + "max_concurrent_backfill_tasks": 12, "publication": "publication", - "replicationSlot": "replication_slot", - "includeObjects": { - "postgresqlSchemas": [{ + "replication_slot": "replication_slot", + "include_objects": { + "postgresql_schemas": [{ "schema": "schema", - "postgresqlTables": [{ + "postgresql_tables": [{ "table": "table", - "postgresqlColumns": [{ + "postgresql_columns": [{ "column": "column", }], }], }], }, - "excludeObjects": { - "postgresqlSchemas": [{ + "exclude_objects": { + "postgresql_schemas": [{ "schema": "schema", - "postgresqlTables": [{ + "postgresql_tables": [{ "table": "table", - "postgresqlColumns": [{ + "postgresql_columns": [{ "column": "column", }], }], @@ -745,23 +745,23 @@ def __init__(__self__, }, }, destination_config={ - "destinationConnectionProfile": destination.id, - "bigqueryDestinationConfig": { - "dataFreshness": "900s", - "sourceHierarchyDatasets": { - "datasetTemplate": { + "destination_connection_profile": destination.id, + "bigquery_destination_config": { + "data_freshness": "900s", + "source_hierarchy_datasets": { + "dataset_template": { "location": "us-central1", }, }, }, }, backfill_all={ - "postgresqlExcludedObjects": { - "postgresqlSchemas": [{ + "postgresql_excluded_objects": { + "postgresql_schemas": [{ "schema": "schema", - "postgresqlTables": [{ + "postgresql_tables": [{ "table": "table", - "postgresqlColumns": [{ + "postgresql_columns": [{ "column": "column", }], }], @@ -784,7 +784,7 @@ def __init__(__self__, "port": 1521, "username": "user", "password": "pass", - "databaseService": "ORCL", + "database_service": "ORCL", }) destination = gcp.datastream.ConnectionProfile("destination", display_name="BigQuery Destination", @@ -797,53 +797,53 @@ def __init__(__self__, stream_id="my-stream", desired_state="RUNNING", source_config={ - "sourceConnectionProfile": source.id, - "oracleSourceConfig": { - "maxConcurrentCdcTasks": 8, - "maxConcurrentBackfillTasks": 12, - "includeObjects": { - "oracleSchemas": [{ + "source_connection_profile": source.id, + "oracle_source_config": { + "max_concurrent_cdc_tasks": 8, + "max_concurrent_backfill_tasks": 12, + "include_objects": { + "oracle_schemas": [{ "schema": "schema", - "oracleTables": [{ + "oracle_tables": [{ "table": "table", - "oracleColumns": [{ + "oracle_columns": [{ "column": "column", }], }], }], }, - "excludeObjects": { - "oracleSchemas": [{ + "exclude_objects": { + "oracle_schemas": [{ "schema": "schema", - "oracleTables": [{ + "oracle_tables": [{ "table": "table", - "oracleColumns": [{ + "oracle_columns": [{ "column": "column", }], }], }], }, - "dropLargeObjects": {}, + "drop_large_objects": {}, }, }, destination_config={ - "destinationConnectionProfile": destination.id, - "bigqueryDestinationConfig": { - "dataFreshness": "900s", - "sourceHierarchyDatasets": { - "datasetTemplate": { + "destination_connection_profile": destination.id, + "bigquery_destination_config": { + "data_freshness": "900s", + "source_hierarchy_datasets": { + "dataset_template": { "location": "us-central1", }, }, }, }, backfill_all={ - "oracleExcludedObjects": { - "oracleSchemas": [{ + "oracle_excluded_objects": { + "oracle_schemas": [{ "schema": "schema", - "oracleTables": [{ + "oracle_tables": [{ "table": "table", - "oracleColumns": [{ + "oracle_columns": [{ "column": "column", }], }], @@ -865,8 +865,8 @@ def __init__(__self__, deletion_protection=True, settings={ "tier": "db-custom-2-4096", - "ipConfiguration": { - "authorizedNetworks": [ + "ip_configuration": { + "authorized_networks": [ { "value": "34.71.242.81", }, @@ -914,9 +914,9 @@ def __init__(__self__, location="us-central1", stream_id="stream", source_config={ - "sourceConnectionProfile": source.id, - "sqlServerSourceConfig": { - "includeObjects": { + "source_connection_profile": source.id, + "sql_server_source_config": { + "include_objects": { "schemas": [{ "schema": "schema", "tables": [{ @@ -927,11 +927,11 @@ def __init__(__self__, }, }, destination_config={ - "destinationConnectionProfile": destination.id, - "bigqueryDestinationConfig": { - "dataFreshness": "900s", - "sourceHierarchyDatasets": { - "datasetTemplate": { + "destination_connection_profile": destination.id, + "bigquery_destination_config": { + "data_freshness": "900s", + "source_hierarchy_datasets": { + "dataset_template": { "location": "us-central1", }, }, @@ -962,12 +962,12 @@ def __init__(__self__, region="us-central1", settings={ "tier": "db-f1-micro", - "backupConfiguration": { + "backup_configuration": { "enabled": True, - "binaryLogEnabled": True, + "binary_log_enabled": True, }, - "ipConfiguration": { - "authorizedNetworks": [ + "ip_configuration": { + "authorized_networks": [ { "value": "34.71.242.81", }, @@ -1009,15 +1009,15 @@ def __init__(__self__, location="us-central1", stream_id="postgres-bigquery", source_config={ - "sourceConnectionProfile": source_connection_profile.id, - "mysqlSourceConfig": {}, + "source_connection_profile": source_connection_profile.id, + "mysql_source_config": {}, }, destination_config={ - "destinationConnectionProfile": destination_connection_profile2.id, - "bigqueryDestinationConfig": { - "dataFreshness": "900s", - "singleTargetDataset": { - "datasetId": postgres.id, + "destination_connection_profile": destination_connection_profile2.id, + "bigquery_destination_config": { + "data_freshness": "900s", + "single_target_dataset": { + "dataset_id": postgres.id, }, }, }, @@ -1040,12 +1040,12 @@ def __init__(__self__, region="us-central1", settings={ "tier": "db-f1-micro", - "backupConfiguration": { + "backup_configuration": { "enabled": True, - "binaryLogEnabled": True, + "binary_log_enabled": True, }, - "ipConfiguration": { - "authorizedNetworks": [ + "ip_configuration": { + "authorized_networks": [ { "value": "34.71.242.81", }, @@ -1100,16 +1100,16 @@ def __init__(__self__, location="us-central1", display_name="my stream", source_config={ - "sourceConnectionProfile": source_connection_profile.id, - "mysqlSourceConfig": {}, + "source_connection_profile": source_connection_profile.id, + "mysql_source_config": {}, }, destination_config={ - "destinationConnectionProfile": destination_connection_profile.id, - "bigqueryDestinationConfig": { - "sourceHierarchyDatasets": { - "datasetTemplate": { + "destination_connection_profile": destination_connection_profile.id, + "bigquery_destination_config": { + "source_hierarchy_datasets": { + "dataset_template": { "location": "us-central1", - "kmsKeyName": "bigquery-kms-name", + "kms_key_name": "bigquery-kms-name", }, }, }, @@ -1191,12 +1191,12 @@ def __init__(__self__, region="us-central1", settings={ "tier": "db-f1-micro", - "backupConfiguration": { + "backup_configuration": { "enabled": True, - "binaryLogEnabled": True, + "binary_log_enabled": True, }, - "ipConfiguration": { - "authorizedNetworks": [ + "ip_configuration": { + "authorized_networks": [ { "value": "34.71.242.81", }, @@ -1262,7 +1262,7 @@ def __init__(__self__, connection_profile_id="destination-profile", gcs_profile={ "bucket": bucket.name, - "rootPath": "/path", + "root_path": "/path", }) default = gcp.datastream.Stream("default", stream_id="my-stream", @@ -1273,21 +1273,21 @@ def __init__(__self__, "key": "value", }, source_config={ - "sourceConnectionProfile": source_connection_profile.id, - "mysqlSourceConfig": { - "includeObjects": { - "mysqlDatabases": [{ + "source_connection_profile": source_connection_profile.id, + "mysql_source_config": { + "include_objects": { + "mysql_databases": [{ "database": "my-database", - "mysqlTables": [ + "mysql_tables": [ { "table": "includedTable", - "mysqlColumns": [{ + "mysql_columns": [{ "column": "includedColumn", - "dataType": "VARCHAR", + "data_type": "VARCHAR", "collation": "utf8mb4", - "primaryKey": False, + "primary_key": False, "nullable": False, - "ordinalPosition": 0, + "ordinal_position": 0, }], }, { @@ -1296,50 +1296,50 @@ def __init__(__self__, ], }], }, - "excludeObjects": { - "mysqlDatabases": [{ + "exclude_objects": { + "mysql_databases": [{ "database": "my-database", - "mysqlTables": [{ + "mysql_tables": [{ "table": "excludedTable", - "mysqlColumns": [{ + "mysql_columns": [{ "column": "excludedColumn", - "dataType": "VARCHAR", + "data_type": "VARCHAR", "collation": "utf8mb4", - "primaryKey": False, + "primary_key": False, "nullable": False, - "ordinalPosition": 0, + "ordinal_position": 0, }], }], }], }, - "maxConcurrentCdcTasks": 5, + "max_concurrent_cdc_tasks": 5, }, }, destination_config={ - "destinationConnectionProfile": destination_connection_profile.id, - "gcsDestinationConfig": { + "destination_connection_profile": destination_connection_profile.id, + "gcs_destination_config": { "path": "mydata", - "fileRotationMb": 200, - "fileRotationInterval": "60s", - "jsonFileFormat": { - "schemaFileFormat": "NO_SCHEMA_FILE", + "file_rotation_mb": 200, + "file_rotation_interval": "60s", + "json_file_format": { + "schema_file_format": "NO_SCHEMA_FILE", "compression": "GZIP", }, }, }, backfill_all={ - "mysqlExcludedObjects": { - "mysqlDatabases": [{ + "mysql_excluded_objects": { + "mysql_databases": [{ "database": "my-database", - "mysqlTables": [{ + "mysql_tables": [{ "table": "excludedTable", - "mysqlColumns": [{ + "mysql_columns": [{ "column": "excludedColumn", - "dataType": "VARCHAR", + "data_type": "VARCHAR", "collation": "utf8mb4", - "primaryKey": False, + "primary_key": False, "nullable": False, - "ordinalPosition": 0, + "ordinal_position": 0, }], }], }], @@ -1376,28 +1376,28 @@ def __init__(__self__, stream_id="my-stream", desired_state="RUNNING", source_config={ - "sourceConnectionProfile": source.id, - "postgresqlSourceConfig": { - "maxConcurrentBackfillTasks": 12, + "source_connection_profile": source.id, + "postgresql_source_config": { + "max_concurrent_backfill_tasks": 12, "publication": "publication", - "replicationSlot": "replication_slot", - "includeObjects": { - "postgresqlSchemas": [{ + "replication_slot": "replication_slot", + "include_objects": { + "postgresql_schemas": [{ "schema": "schema", - "postgresqlTables": [{ + "postgresql_tables": [{ "table": "table", - "postgresqlColumns": [{ + "postgresql_columns": [{ "column": "column", }], }], }], }, - "excludeObjects": { - "postgresqlSchemas": [{ + "exclude_objects": { + "postgresql_schemas": [{ "schema": "schema", - "postgresqlTables": [{ + "postgresql_tables": [{ "table": "table", - "postgresqlColumns": [{ + "postgresql_columns": [{ "column": "column", }], }], @@ -1406,23 +1406,23 @@ def __init__(__self__, }, }, destination_config={ - "destinationConnectionProfile": destination.id, - "bigqueryDestinationConfig": { - "dataFreshness": "900s", - "sourceHierarchyDatasets": { - "datasetTemplate": { + "destination_connection_profile": destination.id, + "bigquery_destination_config": { + "data_freshness": "900s", + "source_hierarchy_datasets": { + "dataset_template": { "location": "us-central1", }, }, }, }, backfill_all={ - "postgresqlExcludedObjects": { - "postgresqlSchemas": [{ + "postgresql_excluded_objects": { + "postgresql_schemas": [{ "schema": "schema", - "postgresqlTables": [{ + "postgresql_tables": [{ "table": "table", - "postgresqlColumns": [{ + "postgresql_columns": [{ "column": "column", }], }], @@ -1445,7 +1445,7 @@ def __init__(__self__, "port": 1521, "username": "user", "password": "pass", - "databaseService": "ORCL", + "database_service": "ORCL", }) destination = gcp.datastream.ConnectionProfile("destination", display_name="BigQuery Destination", @@ -1458,53 +1458,53 @@ def __init__(__self__, stream_id="my-stream", desired_state="RUNNING", source_config={ - "sourceConnectionProfile": source.id, - "oracleSourceConfig": { - "maxConcurrentCdcTasks": 8, - "maxConcurrentBackfillTasks": 12, - "includeObjects": { - "oracleSchemas": [{ + "source_connection_profile": source.id, + "oracle_source_config": { + "max_concurrent_cdc_tasks": 8, + "max_concurrent_backfill_tasks": 12, + "include_objects": { + "oracle_schemas": [{ "schema": "schema", - "oracleTables": [{ + "oracle_tables": [{ "table": "table", - "oracleColumns": [{ + "oracle_columns": [{ "column": "column", }], }], }], }, - "excludeObjects": { - "oracleSchemas": [{ + "exclude_objects": { + "oracle_schemas": [{ "schema": "schema", - "oracleTables": [{ + "oracle_tables": [{ "table": "table", - "oracleColumns": [{ + "oracle_columns": [{ "column": "column", }], }], }], }, - "dropLargeObjects": {}, + "drop_large_objects": {}, }, }, destination_config={ - "destinationConnectionProfile": destination.id, - "bigqueryDestinationConfig": { - "dataFreshness": "900s", - "sourceHierarchyDatasets": { - "datasetTemplate": { + "destination_connection_profile": destination.id, + "bigquery_destination_config": { + "data_freshness": "900s", + "source_hierarchy_datasets": { + "dataset_template": { "location": "us-central1", }, }, }, }, backfill_all={ - "oracleExcludedObjects": { - "oracleSchemas": [{ + "oracle_excluded_objects": { + "oracle_schemas": [{ "schema": "schema", - "oracleTables": [{ + "oracle_tables": [{ "table": "table", - "oracleColumns": [{ + "oracle_columns": [{ "column": "column", }], }], @@ -1526,8 +1526,8 @@ def __init__(__self__, deletion_protection=True, settings={ "tier": "db-custom-2-4096", - "ipConfiguration": { - "authorizedNetworks": [ + "ip_configuration": { + "authorized_networks": [ { "value": "34.71.242.81", }, @@ -1575,9 +1575,9 @@ def __init__(__self__, location="us-central1", stream_id="stream", source_config={ - "sourceConnectionProfile": source.id, - "sqlServerSourceConfig": { - "includeObjects": { + "source_connection_profile": source.id, + "sql_server_source_config": { + "include_objects": { "schemas": [{ "schema": "schema", "tables": [{ @@ -1588,11 +1588,11 @@ def __init__(__self__, }, }, destination_config={ - "destinationConnectionProfile": destination.id, - "bigqueryDestinationConfig": { - "dataFreshness": "900s", - "sourceHierarchyDatasets": { - "datasetTemplate": { + "destination_connection_profile": destination.id, + "bigquery_destination_config": { + "data_freshness": "900s", + "source_hierarchy_datasets": { + "dataset_template": { "location": "us-central1", }, }, @@ -1623,12 +1623,12 @@ def __init__(__self__, region="us-central1", settings={ "tier": "db-f1-micro", - "backupConfiguration": { + "backup_configuration": { "enabled": True, - "binaryLogEnabled": True, + "binary_log_enabled": True, }, - "ipConfiguration": { - "authorizedNetworks": [ + "ip_configuration": { + "authorized_networks": [ { "value": "34.71.242.81", }, @@ -1670,15 +1670,15 @@ def __init__(__self__, location="us-central1", stream_id="postgres-bigquery", source_config={ - "sourceConnectionProfile": source_connection_profile.id, - "mysqlSourceConfig": {}, + "source_connection_profile": source_connection_profile.id, + "mysql_source_config": {}, }, destination_config={ - "destinationConnectionProfile": destination_connection_profile2.id, - "bigqueryDestinationConfig": { - "dataFreshness": "900s", - "singleTargetDataset": { - "datasetId": postgres.id, + "destination_connection_profile": destination_connection_profile2.id, + "bigquery_destination_config": { + "data_freshness": "900s", + "single_target_dataset": { + "dataset_id": postgres.id, }, }, }, @@ -1701,12 +1701,12 @@ def __init__(__self__, region="us-central1", settings={ "tier": "db-f1-micro", - "backupConfiguration": { + "backup_configuration": { "enabled": True, - "binaryLogEnabled": True, + "binary_log_enabled": True, }, - "ipConfiguration": { - "authorizedNetworks": [ + "ip_configuration": { + "authorized_networks": [ { "value": "34.71.242.81", }, @@ -1761,16 +1761,16 @@ def __init__(__self__, location="us-central1", display_name="my stream", source_config={ - "sourceConnectionProfile": source_connection_profile.id, - "mysqlSourceConfig": {}, + "source_connection_profile": source_connection_profile.id, + "mysql_source_config": {}, }, destination_config={ - "destinationConnectionProfile": destination_connection_profile.id, - "bigqueryDestinationConfig": { - "sourceHierarchyDatasets": { - "datasetTemplate": { + "destination_connection_profile": destination_connection_profile.id, + "bigquery_destination_config": { + "source_hierarchy_datasets": { + "dataset_template": { "location": "us-central1", - "kmsKeyName": "bigquery-kms-name", + "kms_key_name": "bigquery-kms-name", }, }, }, diff --git a/sdk/python/pulumi_gcp/diagflow/cx_agent.py b/sdk/python/pulumi_gcp/diagflow/cx_agent.py index 8ebae5063c..6f6ee8e2c5 100644 --- a/sdk/python/pulumi_gcp/diagflow/cx_agent.py +++ b/sdk/python/pulumi_gcp/diagflow/cx_agent.py @@ -656,29 +656,29 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }, advanced_settings={ - "audioExportGcsDestination": { + "audio_export_gcs_destination": { "uri": bucket.url.apply(lambda url: f"{url}/prefix-"), }, - "dtmfSettings": { + "dtmf_settings": { "enabled": True, - "maxDigits": 1, - "finishDigit": "#", + "max_digits": 1, + "finish_digit": "#", }, }, git_integration_settings={ - "githubSettings": { - "displayName": "Github Repo", - "repositoryUri": "https://api.github.com/repos/githubtraining/hellogitworld", - "trackingBranch": "main", - "accessToken": "secret-token", + "github_settings": { + "display_name": "Github Repo", + "repository_uri": "https://api.github.com/repos/githubtraining/hellogitworld", + "tracking_branch": "main", + "access_token": "secret-token", "branches": ["main"], }, }, text_to_speech_settings={ - "synthesizeSpeechConfigs": json.dumps({ + "synthesize_speech_configs": json.dumps({ "en": { "voice": { "name": "en-US-Neural2-A", @@ -792,29 +792,29 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }, advanced_settings={ - "audioExportGcsDestination": { + "audio_export_gcs_destination": { "uri": bucket.url.apply(lambda url: f"{url}/prefix-"), }, - "dtmfSettings": { + "dtmf_settings": { "enabled": True, - "maxDigits": 1, - "finishDigit": "#", + "max_digits": 1, + "finish_digit": "#", }, }, git_integration_settings={ - "githubSettings": { - "displayName": "Github Repo", - "repositoryUri": "https://api.github.com/repos/githubtraining/hellogitworld", - "trackingBranch": "main", - "accessToken": "secret-token", + "github_settings": { + "display_name": "Github Repo", + "repository_uri": "https://api.github.com/repos/githubtraining/hellogitworld", + "tracking_branch": "main", + "access_token": "secret-token", "branches": ["main"], }, }, text_to_speech_settings={ - "synthesizeSpeechConfigs": json.dumps({ + "synthesize_speech_configs": json.dumps({ "en": { "voice": { "name": "en-US-Neural2-A", diff --git a/sdk/python/pulumi_gcp/diagflow/cx_entity_type.py b/sdk/python/pulumi_gcp/diagflow/cx_entity_type.py index 0e31575c6d..1c4a8bac0c 100644 --- a/sdk/python/pulumi_gcp/diagflow/cx_entity_type.py +++ b/sdk/python/pulumi_gcp/diagflow/cx_entity_type.py @@ -433,7 +433,7 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }) basic_entity_type = gcp.diagflow.CxEntityType("basic_entity_type", parent=agent.id, @@ -539,7 +539,7 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }) basic_entity_type = gcp.diagflow.CxEntityType("basic_entity_type", parent=agent.id, diff --git a/sdk/python/pulumi_gcp/diagflow/cx_environment.py b/sdk/python/pulumi_gcp/diagflow/cx_environment.py index 9ff2612c4e..523c6e4a7b 100644 --- a/sdk/python/pulumi_gcp/diagflow/cx_environment.py +++ b/sdk/python/pulumi_gcp/diagflow/cx_environment.py @@ -244,7 +244,7 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }) version1 = gcp.diagflow.CxVersion("version_1", parent=agent.start_flow, @@ -326,7 +326,7 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }) version1 = gcp.diagflow.CxVersion("version_1", parent=agent.start_flow, diff --git a/sdk/python/pulumi_gcp/diagflow/cx_flow.py b/sdk/python/pulumi_gcp/diagflow/cx_flow.py index fa6762740b..0acdbb8ebc 100644 --- a/sdk/python/pulumi_gcp/diagflow/cx_flow.py +++ b/sdk/python/pulumi_gcp/diagflow/cx_flow.py @@ -535,21 +535,21 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }) basic_flow = gcp.diagflow.CxFlow("basic_flow", parent=agent.id, display_name="MyFlow", description="Test Flow", nlu_settings={ - "classificationThreshold": 0.3, - "modelType": "MODEL_TYPE_STANDARD", + "classification_threshold": 0.3, + "model_type": "MODEL_TYPE_STANDARD", }, event_handlers=[ { "event": "custom-event", - "triggerFulfillment": { - "returnPartialResponses": False, + "trigger_fulfillment": { + "return_partial_responses": False, "messages": [{ "text": { "texts": ["I didn't get that. Can you say it again?"], @@ -559,8 +559,8 @@ def __init__(__self__, }, { "event": "sys.no-match-default", - "triggerFulfillment": { - "returnPartialResponses": False, + "trigger_fulfillment": { + "return_partial_responses": False, "messages": [{ "text": { "texts": ["Sorry, could you say that again?"], @@ -570,8 +570,8 @@ def __init__(__self__, }, { "event": "sys.no-input-default", - "triggerFulfillment": { - "returnPartialResponses": False, + "trigger_fulfillment": { + "return_partial_responses": False, "messages": [{ "text": { "texts": ["One more time?"], @@ -603,7 +603,7 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }) bucket = gcp.storage.Bucket("bucket", name="dialogflowcx-bucket", @@ -614,14 +614,14 @@ def __init__(__self__, display_name="MyFlow", description="Test Flow", nlu_settings={ - "classificationThreshold": 0.3, - "modelType": "MODEL_TYPE_STANDARD", + "classification_threshold": 0.3, + "model_type": "MODEL_TYPE_STANDARD", }, event_handlers=[ { "event": "custom-event", - "triggerFulfillment": { - "returnPartialResponses": False, + "trigger_fulfillment": { + "return_partial_responses": False, "messages": [{ "text": { "texts": ["I didn't get that. Can you say it again?"], @@ -631,8 +631,8 @@ def __init__(__self__, }, { "event": "sys.no-match-default", - "triggerFulfillment": { - "returnPartialResponses": False, + "trigger_fulfillment": { + "return_partial_responses": False, "messages": [{ "text": { "texts": ["Sorry, could you say that again?"], @@ -642,8 +642,8 @@ def __init__(__self__, }, { "event": "sys.no-input-default", - "triggerFulfillment": { - "returnPartialResponses": False, + "trigger_fulfillment": { + "return_partial_responses": False, "messages": [{ "text": { "texts": ["One more time?"], @@ -653,8 +653,8 @@ def __init__(__self__, }, { "event": "another-event", - "triggerFulfillment": { - "returnPartialResponses": True, + "trigger_fulfillment": { + "return_partial_responses": True, "messages": [ { "channel": "some-channel", @@ -666,37 +666,37 @@ def __init__(__self__, "payload": " {\\"some-key\\": \\"some-value\\", \\"other-key\\": [\\"other-value\\"]}\\n", }, { - "conversationSuccess": { + "conversation_success": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "outputAudioText": { + "output_audio_text": { "text": "some output text", }, }, { - "outputAudioText": { + "output_audio_text": { "ssml": " Some example SSML XML\\n", }, }, { - "liveAgentHandoff": { + "live_agent_handoff": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "playAudio": { - "audioUri": "http://example.com/some-audio-file.mp3", + "play_audio": { + "audio_uri": "http://example.com/some-audio-file.mp3", }, }, { - "telephonyTransferCall": { - "phoneNumber": "1-234-567-8901", + "telephony_transfer_call": { + "phone_number": "1-234-567-8901", }, }, ], - "setParameterActions": [ + "set_parameter_actions": [ { "parameter": "some-param", "value": "123.45", @@ -710,11 +710,11 @@ def __init__(__self__, "value": json.dumps(["foo"]), }, ], - "conditionalCases": [{ + "conditional_cases": [{ "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "caseContent": [ + "case_content": [ { "message": { "text": { @@ -754,8 +754,8 @@ def __init__(__self__, ], transition_routes=[{ "condition": "true", - "triggerFulfillment": { - "returnPartialResponses": True, + "trigger_fulfillment": { + "return_partial_responses": True, "messages": [ { "channel": "some-channel", @@ -767,37 +767,37 @@ def __init__(__self__, "payload": " {\\"some-key\\": \\"some-value\\", \\"other-key\\": [\\"other-value\\"]}\\n", }, { - "conversationSuccess": { + "conversation_success": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "outputAudioText": { + "output_audio_text": { "text": "some output text", }, }, { - "outputAudioText": { + "output_audio_text": { "ssml": " Some example SSML XML\\n", }, }, { - "liveAgentHandoff": { + "live_agent_handoff": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "playAudio": { - "audioUri": "http://example.com/some-audio-file.mp3", + "play_audio": { + "audio_uri": "http://example.com/some-audio-file.mp3", }, }, { - "telephonyTransferCall": { - "phoneNumber": "1-234-567-8901", + "telephony_transfer_call": { + "phone_number": "1-234-567-8901", }, }, ], - "setParameterActions": [ + "set_parameter_actions": [ { "parameter": "some-param", "value": "123.45", @@ -811,11 +811,11 @@ def __init__(__self__, "value": json.dumps(["foo"]), }, ], - "conditionalCases": [{ + "conditional_cases": [{ "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "caseContent": [ + "case_content": [ { "message": { "text": { @@ -851,16 +851,16 @@ def __init__(__self__, ]), }], }, - "targetFlow": agent.start_flow, + "target_flow": agent.start_flow, }], advanced_settings={ - "audioExportGcsDestination": { + "audio_export_gcs_destination": { "uri": bucket.url.apply(lambda url: f"{url}/prefix-"), }, - "dtmfSettings": { + "dtmf_settings": { "enabled": True, - "maxDigits": 1, - "finishDigit": "#", + "max_digits": 1, + "finish_digit": "#", }, }) ``` @@ -963,21 +963,21 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }) basic_flow = gcp.diagflow.CxFlow("basic_flow", parent=agent.id, display_name="MyFlow", description="Test Flow", nlu_settings={ - "classificationThreshold": 0.3, - "modelType": "MODEL_TYPE_STANDARD", + "classification_threshold": 0.3, + "model_type": "MODEL_TYPE_STANDARD", }, event_handlers=[ { "event": "custom-event", - "triggerFulfillment": { - "returnPartialResponses": False, + "trigger_fulfillment": { + "return_partial_responses": False, "messages": [{ "text": { "texts": ["I didn't get that. Can you say it again?"], @@ -987,8 +987,8 @@ def __init__(__self__, }, { "event": "sys.no-match-default", - "triggerFulfillment": { - "returnPartialResponses": False, + "trigger_fulfillment": { + "return_partial_responses": False, "messages": [{ "text": { "texts": ["Sorry, could you say that again?"], @@ -998,8 +998,8 @@ def __init__(__self__, }, { "event": "sys.no-input-default", - "triggerFulfillment": { - "returnPartialResponses": False, + "trigger_fulfillment": { + "return_partial_responses": False, "messages": [{ "text": { "texts": ["One more time?"], @@ -1031,7 +1031,7 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }) bucket = gcp.storage.Bucket("bucket", name="dialogflowcx-bucket", @@ -1042,14 +1042,14 @@ def __init__(__self__, display_name="MyFlow", description="Test Flow", nlu_settings={ - "classificationThreshold": 0.3, - "modelType": "MODEL_TYPE_STANDARD", + "classification_threshold": 0.3, + "model_type": "MODEL_TYPE_STANDARD", }, event_handlers=[ { "event": "custom-event", - "triggerFulfillment": { - "returnPartialResponses": False, + "trigger_fulfillment": { + "return_partial_responses": False, "messages": [{ "text": { "texts": ["I didn't get that. Can you say it again?"], @@ -1059,8 +1059,8 @@ def __init__(__self__, }, { "event": "sys.no-match-default", - "triggerFulfillment": { - "returnPartialResponses": False, + "trigger_fulfillment": { + "return_partial_responses": False, "messages": [{ "text": { "texts": ["Sorry, could you say that again?"], @@ -1070,8 +1070,8 @@ def __init__(__self__, }, { "event": "sys.no-input-default", - "triggerFulfillment": { - "returnPartialResponses": False, + "trigger_fulfillment": { + "return_partial_responses": False, "messages": [{ "text": { "texts": ["One more time?"], @@ -1081,8 +1081,8 @@ def __init__(__self__, }, { "event": "another-event", - "triggerFulfillment": { - "returnPartialResponses": True, + "trigger_fulfillment": { + "return_partial_responses": True, "messages": [ { "channel": "some-channel", @@ -1094,37 +1094,37 @@ def __init__(__self__, "payload": " {\\"some-key\\": \\"some-value\\", \\"other-key\\": [\\"other-value\\"]}\\n", }, { - "conversationSuccess": { + "conversation_success": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "outputAudioText": { + "output_audio_text": { "text": "some output text", }, }, { - "outputAudioText": { + "output_audio_text": { "ssml": " Some example SSML XML\\n", }, }, { - "liveAgentHandoff": { + "live_agent_handoff": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "playAudio": { - "audioUri": "http://example.com/some-audio-file.mp3", + "play_audio": { + "audio_uri": "http://example.com/some-audio-file.mp3", }, }, { - "telephonyTransferCall": { - "phoneNumber": "1-234-567-8901", + "telephony_transfer_call": { + "phone_number": "1-234-567-8901", }, }, ], - "setParameterActions": [ + "set_parameter_actions": [ { "parameter": "some-param", "value": "123.45", @@ -1138,11 +1138,11 @@ def __init__(__self__, "value": json.dumps(["foo"]), }, ], - "conditionalCases": [{ + "conditional_cases": [{ "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "caseContent": [ + "case_content": [ { "message": { "text": { @@ -1182,8 +1182,8 @@ def __init__(__self__, ], transition_routes=[{ "condition": "true", - "triggerFulfillment": { - "returnPartialResponses": True, + "trigger_fulfillment": { + "return_partial_responses": True, "messages": [ { "channel": "some-channel", @@ -1195,37 +1195,37 @@ def __init__(__self__, "payload": " {\\"some-key\\": \\"some-value\\", \\"other-key\\": [\\"other-value\\"]}\\n", }, { - "conversationSuccess": { + "conversation_success": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "outputAudioText": { + "output_audio_text": { "text": "some output text", }, }, { - "outputAudioText": { + "output_audio_text": { "ssml": " Some example SSML XML\\n", }, }, { - "liveAgentHandoff": { + "live_agent_handoff": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "playAudio": { - "audioUri": "http://example.com/some-audio-file.mp3", + "play_audio": { + "audio_uri": "http://example.com/some-audio-file.mp3", }, }, { - "telephonyTransferCall": { - "phoneNumber": "1-234-567-8901", + "telephony_transfer_call": { + "phone_number": "1-234-567-8901", }, }, ], - "setParameterActions": [ + "set_parameter_actions": [ { "parameter": "some-param", "value": "123.45", @@ -1239,11 +1239,11 @@ def __init__(__self__, "value": json.dumps(["foo"]), }, ], - "conditionalCases": [{ + "conditional_cases": [{ "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "caseContent": [ + "case_content": [ { "message": { "text": { @@ -1279,16 +1279,16 @@ def __init__(__self__, ]), }], }, - "targetFlow": agent.start_flow, + "target_flow": agent.start_flow, }], advanced_settings={ - "audioExportGcsDestination": { + "audio_export_gcs_destination": { "uri": bucket.url.apply(lambda url: f"{url}/prefix-"), }, - "dtmfSettings": { + "dtmf_settings": { "enabled": True, - "maxDigits": 1, - "finishDigit": "#", + "max_digits": 1, + "finish_digit": "#", }, }) ``` diff --git a/sdk/python/pulumi_gcp/diagflow/cx_intent.py b/sdk/python/pulumi_gcp/diagflow/cx_intent.py index d71bb0d059..14c439f353 100644 --- a/sdk/python/pulumi_gcp/diagflow/cx_intent.py +++ b/sdk/python/pulumi_gcp/diagflow/cx_intent.py @@ -578,7 +578,7 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }) basic_intent = gcp.diagflow.CxIntent("basic_intent", parent=agent.id, @@ -597,11 +597,11 @@ def __init__(__self__, "text": "example", }, ], - "repeatCount": 1, + "repeat_count": 1, }], parameters=[{ "id": "param1", - "entityType": "projects/-/locations/-/agents/-/entityTypes/sys.date", + "entity_type": "projects/-/locations/-/agents/-/entityTypes/sys.date", }], labels={ "label1": "value1", @@ -702,7 +702,7 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }) basic_intent = gcp.diagflow.CxIntent("basic_intent", parent=agent.id, @@ -721,11 +721,11 @@ def __init__(__self__, "text": "example", }, ], - "repeatCount": 1, + "repeat_count": 1, }], parameters=[{ "id": "param1", - "entityType": "projects/-/locations/-/agents/-/entityTypes/sys.date", + "entity_type": "projects/-/locations/-/agents/-/entityTypes/sys.date", }], labels={ "label1": "value1", diff --git a/sdk/python/pulumi_gcp/diagflow/cx_page.py b/sdk/python/pulumi_gcp/diagflow/cx_page.py index 7ff55d6e63..d08d4f3522 100644 --- a/sdk/python/pulumi_gcp/diagflow/cx_page.py +++ b/sdk/python/pulumi_gcp/diagflow/cx_page.py @@ -511,7 +511,7 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }) my_page2 = gcp.diagflow.CxPage("my_page2", parent=agent.start_flow, @@ -537,37 +537,37 @@ def __init__(__self__, "payload": " {\\"some-key\\": \\"some-value\\", \\"other-key\\": [\\"other-value\\"]}\\n", }, { - "conversationSuccess": { + "conversation_success": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "outputAudioText": { + "output_audio_text": { "text": "some output text", }, }, { - "outputAudioText": { + "output_audio_text": { "ssml": " Some example SSML XML\\n", }, }, { - "liveAgentHandoff": { + "live_agent_handoff": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "playAudio": { - "audioUri": "http://example.com/some-audio-file.mp3", + "play_audio": { + "audio_uri": "http://example.com/some-audio-file.mp3", }, }, { - "telephonyTransferCall": { - "phoneNumber": "1-234-567-8901", + "telephony_transfer_call": { + "phone_number": "1-234-567-8901", }, }, ], - "setParameterActions": [ + "set_parameter_actions": [ { "parameter": "some-param", "value": "123.45", @@ -581,11 +581,11 @@ def __init__(__self__, "value": json.dumps(["foo"]), }, ], - "conditionalCases": [{ + "conditional_cases": [{ "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "caseContent": [ + "case_content": [ { "message": { "text": { @@ -623,8 +623,8 @@ def __init__(__self__, }, event_handlers=[{ "event": "some-event", - "triggerFulfillment": { - "returnPartialResponses": True, + "trigger_fulfillment": { + "return_partial_responses": True, "messages": [ { "channel": "some-channel", @@ -636,37 +636,37 @@ def __init__(__self__, "payload": " {\\"some-key\\": \\"some-value\\", \\"other-key\\": [\\"other-value\\"]}\\n", }, { - "conversationSuccess": { + "conversation_success": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "outputAudioText": { + "output_audio_text": { "text": "some output text", }, }, { - "outputAudioText": { + "output_audio_text": { "ssml": " Some example SSML XML\\n", }, }, { - "liveAgentHandoff": { + "live_agent_handoff": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "playAudio": { - "audioUri": "http://example.com/some-audio-file.mp3", + "play_audio": { + "audio_uri": "http://example.com/some-audio-file.mp3", }, }, { - "telephonyTransferCall": { - "phoneNumber": "1-234-567-8901", + "telephony_transfer_call": { + "phone_number": "1-234-567-8901", }, }, ], - "setParameterActions": [ + "set_parameter_actions": [ { "parameter": "some-param", "value": "123.45", @@ -680,11 +680,11 @@ def __init__(__self__, "value": json.dumps(["foo"]), }, ], - "conditionalCases": [{ + "conditional_cases": [{ "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "caseContent": [ + "case_content": [ { "message": { "text": { @@ -723,11 +723,11 @@ def __init__(__self__, }], form={ "parameters": [{ - "displayName": "param1", - "entityType": "projects/-/locations/-/agents/-/entityTypes/sys.date", - "defaultValue": json.dumps("2000-01-01"), - "fillBehavior": { - "initialPromptFulfillment": { + "display_name": "param1", + "entity_type": "projects/-/locations/-/agents/-/entityTypes/sys.date", + "default_value": json.dumps("2000-01-01"), + "fill_behavior": { + "initial_prompt_fulfillment": { "messages": [ { "channel": "some-channel", @@ -739,37 +739,37 @@ def __init__(__self__, "payload": " {\\"some-key\\": \\"some-value\\", \\"other-key\\": [\\"other-value\\"]}\\n", }, { - "conversationSuccess": { + "conversation_success": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "outputAudioText": { + "output_audio_text": { "text": "some output text", }, }, { - "outputAudioText": { + "output_audio_text": { "ssml": " Some example SSML XML\\n", }, }, { - "liveAgentHandoff": { + "live_agent_handoff": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "playAudio": { - "audioUri": "http://example.com/some-audio-file.mp3", + "play_audio": { + "audio_uri": "http://example.com/some-audio-file.mp3", }, }, { - "telephonyTransferCall": { - "phoneNumber": "1-234-567-8901", + "telephony_transfer_call": { + "phone_number": "1-234-567-8901", }, }, ], - "setParameterActions": [ + "set_parameter_actions": [ { "parameter": "some-param", "value": "123.45", @@ -783,11 +783,11 @@ def __init__(__self__, "value": json.dumps(["foo"]), }, ], - "conditionalCases": [{ + "conditional_cases": [{ "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "caseContent": [ + "case_content": [ { "message": { "text": { @@ -823,11 +823,11 @@ def __init__(__self__, ]), }], }, - "repromptEventHandlers": [ + "reprompt_event_handlers": [ { "event": "sys.no-match-1", - "triggerFulfillment": { - "returnPartialResponses": True, + "trigger_fulfillment": { + "return_partial_responses": True, "webhook": my_webhook.id, "tag": "some-tag", "messages": [ @@ -841,37 +841,37 @@ def __init__(__self__, "payload": " {\\"some-key\\": \\"some-value\\", \\"other-key\\": [\\"other-value\\"]}\\n", }, { - "conversationSuccess": { + "conversation_success": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "outputAudioText": { + "output_audio_text": { "text": "some output text", }, }, { - "outputAudioText": { + "output_audio_text": { "ssml": " Some example SSML XML\\n", }, }, { - "liveAgentHandoff": { + "live_agent_handoff": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "playAudio": { - "audioUri": "http://example.com/some-audio-file.mp3", + "play_audio": { + "audio_uri": "http://example.com/some-audio-file.mp3", }, }, { - "telephonyTransferCall": { - "phoneNumber": "1-234-567-8901", + "telephony_transfer_call": { + "phone_number": "1-234-567-8901", }, }, ], - "setParameterActions": [ + "set_parameter_actions": [ { "parameter": "some-param", "value": "123.45", @@ -885,11 +885,11 @@ def __init__(__self__, "value": json.dumps(["foo"]), }, ], - "conditionalCases": [{ + "conditional_cases": [{ "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "caseContent": [ + "case_content": [ { "message": { "text": { @@ -928,28 +928,28 @@ def __init__(__self__, }, { "event": "sys.no-match-2", - "targetFlow": agent.start_flow, + "target_flow": agent.start_flow, }, { "event": "sys.no-match-3", - "targetPage": my_page2.id, + "target_page": my_page2.id, }, ], }, "required": True, "redact": True, - "advancedSettings": { - "dtmfSettings": { + "advanced_settings": { + "dtmf_settings": { "enabled": True, - "maxDigits": 1, - "finishDigit": "#", + "max_digits": 1, + "finish_digit": "#", }, }, }], }, transition_routes=[{ "condition": "$page.params.status = 'FINAL'", - "triggerFulfillment": { + "trigger_fulfillment": { "messages": [ { "channel": "some-channel", @@ -961,37 +961,37 @@ def __init__(__self__, "payload": " {\\"some-key\\": \\"some-value\\", \\"other-key\\": [\\"other-value\\"]}\\n", }, { - "conversationSuccess": { + "conversation_success": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "outputAudioText": { + "output_audio_text": { "text": "some output text", }, }, { - "outputAudioText": { + "output_audio_text": { "ssml": " Some example SSML XML\\n", }, }, { - "liveAgentHandoff": { + "live_agent_handoff": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "playAudio": { - "audioUri": "http://example.com/some-audio-file.mp3", + "play_audio": { + "audio_uri": "http://example.com/some-audio-file.mp3", }, }, { - "telephonyTransferCall": { - "phoneNumber": "1-234-567-8901", + "telephony_transfer_call": { + "phone_number": "1-234-567-8901", }, }, ], - "setParameterActions": [ + "set_parameter_actions": [ { "parameter": "some-param", "value": "123.45", @@ -1005,11 +1005,11 @@ def __init__(__self__, "value": json.dumps(["foo"]), }, ], - "conditionalCases": [{ + "conditional_cases": [{ "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "caseContent": [ + "case_content": [ { "message": { "text": { @@ -1045,13 +1045,13 @@ def __init__(__self__, ]), }], }, - "targetPage": my_page2.id, + "target_page": my_page2.id, }], advanced_settings={ - "dtmfSettings": { + "dtmf_settings": { "enabled": True, - "maxDigits": 1, - "finishDigit": "#", + "max_digits": 1, + "finish_digit": "#", }, }) ``` @@ -1156,7 +1156,7 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }) my_page2 = gcp.diagflow.CxPage("my_page2", parent=agent.start_flow, @@ -1182,37 +1182,37 @@ def __init__(__self__, "payload": " {\\"some-key\\": \\"some-value\\", \\"other-key\\": [\\"other-value\\"]}\\n", }, { - "conversationSuccess": { + "conversation_success": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "outputAudioText": { + "output_audio_text": { "text": "some output text", }, }, { - "outputAudioText": { + "output_audio_text": { "ssml": " Some example SSML XML\\n", }, }, { - "liveAgentHandoff": { + "live_agent_handoff": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "playAudio": { - "audioUri": "http://example.com/some-audio-file.mp3", + "play_audio": { + "audio_uri": "http://example.com/some-audio-file.mp3", }, }, { - "telephonyTransferCall": { - "phoneNumber": "1-234-567-8901", + "telephony_transfer_call": { + "phone_number": "1-234-567-8901", }, }, ], - "setParameterActions": [ + "set_parameter_actions": [ { "parameter": "some-param", "value": "123.45", @@ -1226,11 +1226,11 @@ def __init__(__self__, "value": json.dumps(["foo"]), }, ], - "conditionalCases": [{ + "conditional_cases": [{ "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "caseContent": [ + "case_content": [ { "message": { "text": { @@ -1268,8 +1268,8 @@ def __init__(__self__, }, event_handlers=[{ "event": "some-event", - "triggerFulfillment": { - "returnPartialResponses": True, + "trigger_fulfillment": { + "return_partial_responses": True, "messages": [ { "channel": "some-channel", @@ -1281,37 +1281,37 @@ def __init__(__self__, "payload": " {\\"some-key\\": \\"some-value\\", \\"other-key\\": [\\"other-value\\"]}\\n", }, { - "conversationSuccess": { + "conversation_success": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "outputAudioText": { + "output_audio_text": { "text": "some output text", }, }, { - "outputAudioText": { + "output_audio_text": { "ssml": " Some example SSML XML\\n", }, }, { - "liveAgentHandoff": { + "live_agent_handoff": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "playAudio": { - "audioUri": "http://example.com/some-audio-file.mp3", + "play_audio": { + "audio_uri": "http://example.com/some-audio-file.mp3", }, }, { - "telephonyTransferCall": { - "phoneNumber": "1-234-567-8901", + "telephony_transfer_call": { + "phone_number": "1-234-567-8901", }, }, ], - "setParameterActions": [ + "set_parameter_actions": [ { "parameter": "some-param", "value": "123.45", @@ -1325,11 +1325,11 @@ def __init__(__self__, "value": json.dumps(["foo"]), }, ], - "conditionalCases": [{ + "conditional_cases": [{ "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "caseContent": [ + "case_content": [ { "message": { "text": { @@ -1368,11 +1368,11 @@ def __init__(__self__, }], form={ "parameters": [{ - "displayName": "param1", - "entityType": "projects/-/locations/-/agents/-/entityTypes/sys.date", - "defaultValue": json.dumps("2000-01-01"), - "fillBehavior": { - "initialPromptFulfillment": { + "display_name": "param1", + "entity_type": "projects/-/locations/-/agents/-/entityTypes/sys.date", + "default_value": json.dumps("2000-01-01"), + "fill_behavior": { + "initial_prompt_fulfillment": { "messages": [ { "channel": "some-channel", @@ -1384,37 +1384,37 @@ def __init__(__self__, "payload": " {\\"some-key\\": \\"some-value\\", \\"other-key\\": [\\"other-value\\"]}\\n", }, { - "conversationSuccess": { + "conversation_success": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "outputAudioText": { + "output_audio_text": { "text": "some output text", }, }, { - "outputAudioText": { + "output_audio_text": { "ssml": " Some example SSML XML\\n", }, }, { - "liveAgentHandoff": { + "live_agent_handoff": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "playAudio": { - "audioUri": "http://example.com/some-audio-file.mp3", + "play_audio": { + "audio_uri": "http://example.com/some-audio-file.mp3", }, }, { - "telephonyTransferCall": { - "phoneNumber": "1-234-567-8901", + "telephony_transfer_call": { + "phone_number": "1-234-567-8901", }, }, ], - "setParameterActions": [ + "set_parameter_actions": [ { "parameter": "some-param", "value": "123.45", @@ -1428,11 +1428,11 @@ def __init__(__self__, "value": json.dumps(["foo"]), }, ], - "conditionalCases": [{ + "conditional_cases": [{ "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "caseContent": [ + "case_content": [ { "message": { "text": { @@ -1468,11 +1468,11 @@ def __init__(__self__, ]), }], }, - "repromptEventHandlers": [ + "reprompt_event_handlers": [ { "event": "sys.no-match-1", - "triggerFulfillment": { - "returnPartialResponses": True, + "trigger_fulfillment": { + "return_partial_responses": True, "webhook": my_webhook.id, "tag": "some-tag", "messages": [ @@ -1486,37 +1486,37 @@ def __init__(__self__, "payload": " {\\"some-key\\": \\"some-value\\", \\"other-key\\": [\\"other-value\\"]}\\n", }, { - "conversationSuccess": { + "conversation_success": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "outputAudioText": { + "output_audio_text": { "text": "some output text", }, }, { - "outputAudioText": { + "output_audio_text": { "ssml": " Some example SSML XML\\n", }, }, { - "liveAgentHandoff": { + "live_agent_handoff": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "playAudio": { - "audioUri": "http://example.com/some-audio-file.mp3", + "play_audio": { + "audio_uri": "http://example.com/some-audio-file.mp3", }, }, { - "telephonyTransferCall": { - "phoneNumber": "1-234-567-8901", + "telephony_transfer_call": { + "phone_number": "1-234-567-8901", }, }, ], - "setParameterActions": [ + "set_parameter_actions": [ { "parameter": "some-param", "value": "123.45", @@ -1530,11 +1530,11 @@ def __init__(__self__, "value": json.dumps(["foo"]), }, ], - "conditionalCases": [{ + "conditional_cases": [{ "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "caseContent": [ + "case_content": [ { "message": { "text": { @@ -1573,28 +1573,28 @@ def __init__(__self__, }, { "event": "sys.no-match-2", - "targetFlow": agent.start_flow, + "target_flow": agent.start_flow, }, { "event": "sys.no-match-3", - "targetPage": my_page2.id, + "target_page": my_page2.id, }, ], }, "required": True, "redact": True, - "advancedSettings": { - "dtmfSettings": { + "advanced_settings": { + "dtmf_settings": { "enabled": True, - "maxDigits": 1, - "finishDigit": "#", + "max_digits": 1, + "finish_digit": "#", }, }, }], }, transition_routes=[{ "condition": "$page.params.status = 'FINAL'", - "triggerFulfillment": { + "trigger_fulfillment": { "messages": [ { "channel": "some-channel", @@ -1606,37 +1606,37 @@ def __init__(__self__, "payload": " {\\"some-key\\": \\"some-value\\", \\"other-key\\": [\\"other-value\\"]}\\n", }, { - "conversationSuccess": { + "conversation_success": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "outputAudioText": { + "output_audio_text": { "text": "some output text", }, }, { - "outputAudioText": { + "output_audio_text": { "ssml": " Some example SSML XML\\n", }, }, { - "liveAgentHandoff": { + "live_agent_handoff": { "metadata": " {\\"some-metadata-key\\": \\"some-value\\", \\"other-metadata-key\\": 1234}\\n", }, }, { - "playAudio": { - "audioUri": "http://example.com/some-audio-file.mp3", + "play_audio": { + "audio_uri": "http://example.com/some-audio-file.mp3", }, }, { - "telephonyTransferCall": { - "phoneNumber": "1-234-567-8901", + "telephony_transfer_call": { + "phone_number": "1-234-567-8901", }, }, ], - "setParameterActions": [ + "set_parameter_actions": [ { "parameter": "some-param", "value": "123.45", @@ -1650,11 +1650,11 @@ def __init__(__self__, "value": json.dumps(["foo"]), }, ], - "conditionalCases": [{ + "conditional_cases": [{ "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "caseContent": [ + "case_content": [ { "message": { "text": { @@ -1690,13 +1690,13 @@ def __init__(__self__, ]), }], }, - "targetPage": my_page2.id, + "target_page": my_page2.id, }], advanced_settings={ - "dtmfSettings": { + "dtmf_settings": { "enabled": True, - "maxDigits": 1, - "finishDigit": "#", + "max_digits": 1, + "finish_digit": "#", }, }) ``` diff --git a/sdk/python/pulumi_gcp/diagflow/cx_security_settings.py b/sdk/python/pulumi_gcp/diagflow/cx_security_settings.py index 6fe026a0ad..9a3dc67a63 100644 --- a/sdk/python/pulumi_gcp/diagflow/cx_security_settings.py +++ b/sdk/python/pulumi_gcp/diagflow/cx_security_settings.py @@ -578,7 +578,7 @@ def __init__(__self__, parent="projects/my-project-name/locations/global", display_name="dialogflowcx-inspect-template", inspect_config={ - "infoTypes": [{ + "info_types": [{ "name": "EMAIL_ADDRESS", }], }) @@ -586,12 +586,12 @@ def __init__(__self__, parent="projects/my-project-name/locations/global", display_name="dialogflowcx-deidentify-template", deidentify_config={ - "infoTypeTransformations": { + "info_type_transformations": { "transformations": [{ - "primitiveTransformation": { - "replaceConfig": { - "newValue": { - "stringValue": "[REDACTED]", + "primitive_transformation": { + "replace_config": { + "new_value": { + "string_value": "[REDACTED]", }, }, }, @@ -611,13 +611,13 @@ def __init__(__self__, deidentify_template=deidentify.id, purge_data_types=["DIALOGFLOW_HISTORY"], audio_export_settings={ - "gcsBucket": bucket.id, - "audioExportPattern": "export", - "enableAudioRedaction": True, - "audioFormat": "OGG", + "gcs_bucket": bucket.id, + "audio_export_pattern": "export", + "enable_audio_redaction": True, + "audio_format": "OGG", }, insights_export_settings={ - "enableInsightsExport": True, + "enable_insights_export": True, }, retention_strategy="REMOVE_AFTER_CONVERSATION") ``` @@ -724,7 +724,7 @@ def __init__(__self__, parent="projects/my-project-name/locations/global", display_name="dialogflowcx-inspect-template", inspect_config={ - "infoTypes": [{ + "info_types": [{ "name": "EMAIL_ADDRESS", }], }) @@ -732,12 +732,12 @@ def __init__(__self__, parent="projects/my-project-name/locations/global", display_name="dialogflowcx-deidentify-template", deidentify_config={ - "infoTypeTransformations": { + "info_type_transformations": { "transformations": [{ - "primitiveTransformation": { - "replaceConfig": { - "newValue": { - "stringValue": "[REDACTED]", + "primitive_transformation": { + "replace_config": { + "new_value": { + "string_value": "[REDACTED]", }, }, }, @@ -757,13 +757,13 @@ def __init__(__self__, deidentify_template=deidentify.id, purge_data_types=["DIALOGFLOW_HISTORY"], audio_export_settings={ - "gcsBucket": bucket.id, - "audioExportPattern": "export", - "enableAudioRedaction": True, - "audioFormat": "OGG", + "gcs_bucket": bucket.id, + "audio_export_pattern": "export", + "enable_audio_redaction": True, + "audio_format": "OGG", }, insights_export_settings={ - "enableInsightsExport": True, + "enable_insights_export": True, }, retention_strategy="REMOVE_AFTER_CONVERSATION") ``` diff --git a/sdk/python/pulumi_gcp/diagflow/cx_test_case.py b/sdk/python/pulumi_gcp/diagflow/cx_test_case.py index 24dcd0be81..6a1a7de31b 100644 --- a/sdk/python/pulumi_gcp/diagflow/cx_test_case.py +++ b/sdk/python/pulumi_gcp/diagflow/cx_test_case.py @@ -350,7 +350,7 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }) intent = gcp.diagflow.CxIntent("intent", parent=agent.id, @@ -360,14 +360,14 @@ def __init__(__self__, "parts": [{ "text": "training phrase", }], - "repeatCount": 1, + "repeat_count": 1, }]) page = gcp.diagflow.CxPage("page", parent=agent.start_flow, display_name="MyPage", transition_routes=[{ "intent": intent.id, - "triggerFulfillment": { + "trigger_fulfillment": { "messages": [{ "text": { "texts": ["Training phrase response"], @@ -377,7 +377,7 @@ def __init__(__self__, }], event_handlers=[{ "event": "some-event", - "triggerFulfillment": { + "trigger_fulfillment": { "messages": [{ "text": { "texts": ["Handling some event"], @@ -391,67 +391,67 @@ def __init__(__self__, tags=["#tag1"], notes="demonstrates a simple training phrase response", test_config={ - "trackingParameters": ["some_param"], + "tracking_parameters": ["some_param"], "page": page.id, }, test_case_conversation_turns=[ { - "userInput": { + "user_input": { "input": { - "languageCode": "en", + "language_code": "en", "text": { "text": "training phrase", }, }, - "injectedParameters": json.dumps({ + "injected_parameters": json.dumps({ "some_param": "1", }), - "isWebhookEnabled": True, - "enableSentimentAnalysis": True, + "is_webhook_enabled": True, + "enable_sentiment_analysis": True, }, - "virtualAgentOutput": { - "sessionParameters": json.dumps({ + "virtual_agent_output": { + "session_parameters": json.dumps({ "some_param": "1", }), - "triggeredIntent": { + "triggered_intent": { "name": intent.id, }, - "currentPage": { + "current_page": { "name": page.id, }, - "textResponses": [{ + "text_responses": [{ "texts": ["Training phrase response"], }], }, }, { - "userInput": { + "user_input": { "input": { "event": { "event": "some-event", }, }, }, - "virtualAgentOutput": { - "currentPage": { + "virtual_agent_output": { + "current_page": { "name": page.id, }, - "textResponses": [{ + "text_responses": [{ "texts": ["Handling some event"], }], }, }, { - "userInput": { + "user_input": { "input": { "dtmf": { "digits": "12", - "finishDigit": "3", + "finish_digit": "3", }, }, }, - "virtualAgentOutput": { - "textResponses": [{ + "virtual_agent_output": { + "text_responses": [{ "texts": ["I didn't get that. Can you say it again?"], }], }, @@ -526,7 +526,7 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }) intent = gcp.diagflow.CxIntent("intent", parent=agent.id, @@ -536,14 +536,14 @@ def __init__(__self__, "parts": [{ "text": "training phrase", }], - "repeatCount": 1, + "repeat_count": 1, }]) page = gcp.diagflow.CxPage("page", parent=agent.start_flow, display_name="MyPage", transition_routes=[{ "intent": intent.id, - "triggerFulfillment": { + "trigger_fulfillment": { "messages": [{ "text": { "texts": ["Training phrase response"], @@ -553,7 +553,7 @@ def __init__(__self__, }], event_handlers=[{ "event": "some-event", - "triggerFulfillment": { + "trigger_fulfillment": { "messages": [{ "text": { "texts": ["Handling some event"], @@ -567,67 +567,67 @@ def __init__(__self__, tags=["#tag1"], notes="demonstrates a simple training phrase response", test_config={ - "trackingParameters": ["some_param"], + "tracking_parameters": ["some_param"], "page": page.id, }, test_case_conversation_turns=[ { - "userInput": { + "user_input": { "input": { - "languageCode": "en", + "language_code": "en", "text": { "text": "training phrase", }, }, - "injectedParameters": json.dumps({ + "injected_parameters": json.dumps({ "some_param": "1", }), - "isWebhookEnabled": True, - "enableSentimentAnalysis": True, + "is_webhook_enabled": True, + "enable_sentiment_analysis": True, }, - "virtualAgentOutput": { - "sessionParameters": json.dumps({ + "virtual_agent_output": { + "session_parameters": json.dumps({ "some_param": "1", }), - "triggeredIntent": { + "triggered_intent": { "name": intent.id, }, - "currentPage": { + "current_page": { "name": page.id, }, - "textResponses": [{ + "text_responses": [{ "texts": ["Training phrase response"], }], }, }, { - "userInput": { + "user_input": { "input": { "event": { "event": "some-event", }, }, }, - "virtualAgentOutput": { - "currentPage": { + "virtual_agent_output": { + "current_page": { "name": page.id, }, - "textResponses": [{ + "text_responses": [{ "texts": ["Handling some event"], }], }, }, { - "userInput": { + "user_input": { "input": { "dtmf": { "digits": "12", - "finishDigit": "3", + "finish_digit": "3", }, }, }, - "virtualAgentOutput": { - "textResponses": [{ + "virtual_agent_output": { + "text_responses": [{ "texts": ["I didn't get that. Can you say it again?"], }], }, diff --git a/sdk/python/pulumi_gcp/diagflow/cx_version.py b/sdk/python/pulumi_gcp/diagflow/cx_version.py index eccef488f0..cd9b493ff2 100644 --- a/sdk/python/pulumi_gcp/diagflow/cx_version.py +++ b/sdk/python/pulumi_gcp/diagflow/cx_version.py @@ -259,7 +259,7 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }) version1 = gcp.diagflow.CxVersion("version_1", parent=agent.start_flow, @@ -334,7 +334,7 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }) version1 = gcp.diagflow.CxVersion("version_1", parent=agent.start_flow, diff --git a/sdk/python/pulumi_gcp/diagflow/cx_webhook.py b/sdk/python/pulumi_gcp/diagflow/cx_webhook.py index 7765076da9..d914787a7a 100644 --- a/sdk/python/pulumi_gcp/diagflow/cx_webhook.py +++ b/sdk/python/pulumi_gcp/diagflow/cx_webhook.py @@ -426,7 +426,7 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }) basic_webhook = gcp.diagflow.CxWebhook("basic_webhook", parent=agent.id, @@ -510,7 +510,7 @@ def __init__(__self__, enable_stackdriver_logging=True, enable_spell_correction=True, speech_to_text_settings={ - "enableSpeechAdaptation": True, + "enable_speech_adaptation": True, }) basic_webhook = gcp.diagflow.CxWebhook("basic_webhook", parent=agent.id, diff --git a/sdk/python/pulumi_gcp/diagflow/fulfillment.py b/sdk/python/pulumi_gcp/diagflow/fulfillment.py index 57cce2d93a..b92b3ddf21 100644 --- a/sdk/python/pulumi_gcp/diagflow/fulfillment.py +++ b/sdk/python/pulumi_gcp/diagflow/fulfillment.py @@ -274,7 +274,7 @@ def __init__(__self__, "uri": "https://google.com", "username": "admin", "password": "password", - "requestHeaders": { + "request_headers": { "name": "wrench", }, }, @@ -341,7 +341,7 @@ def __init__(__self__, "uri": "https://google.com", "username": "admin", "password": "password", - "requestHeaders": { + "request_headers": { "name": "wrench", }, }, diff --git a/sdk/python/pulumi_gcp/discoveryengine/chat_engine.py b/sdk/python/pulumi_gcp/discoveryengine/chat_engine.py index 9c8e8408ec..7e5099da33 100644 --- a/sdk/python/pulumi_gcp/discoveryengine/chat_engine.py +++ b/sdk/python/pulumi_gcp/discoveryengine/chat_engine.py @@ -445,13 +445,13 @@ def __init__(__self__, test_data_store2.data_store_id, ], common_config={ - "companyName": "test-company", + "company_name": "test-company", }, chat_engine_config={ - "agentCreationConfig": { + "agent_creation_config": { "business": "test business name", - "defaultLanguageCode": "en", - "timeZone": "America/Los_Angeles", + "default_language_code": "en", + "time_zone": "America/Los_Angeles", }, }) ``` @@ -541,13 +541,13 @@ def __init__(__self__, test_data_store2.data_store_id, ], common_config={ - "companyName": "test-company", + "company_name": "test-company", }, chat_engine_config={ - "agentCreationConfig": { + "agent_creation_config": { "business": "test business name", - "defaultLanguageCode": "en", - "timeZone": "America/Los_Angeles", + "default_language_code": "en", + "time_zone": "America/Los_Angeles", }, }) ``` diff --git a/sdk/python/pulumi_gcp/discoveryengine/data_store.py b/sdk/python/pulumi_gcp/discoveryengine/data_store.py index 02db5b962c..1d168e1cd0 100644 --- a/sdk/python/pulumi_gcp/discoveryengine/data_store.py +++ b/sdk/python/pulumi_gcp/discoveryengine/data_store.py @@ -477,13 +477,13 @@ def __init__(__self__, solution_types=["SOLUTION_TYPE_SEARCH"], create_advanced_site_search=False, document_processing_config={ - "defaultParsingConfig": { - "digitalParsingConfig": {}, + "default_parsing_config": { + "digital_parsing_config": {}, }, - "parsingConfigOverrides": [{ - "fileType": "pdf", - "ocrParsingConfig": { - "useNativeText": True, + "parsing_config_overrides": [{ + "file_type": "pdf", + "ocr_parsing_config": { + "use_native_text": True, }, }], }) @@ -586,13 +586,13 @@ def __init__(__self__, solution_types=["SOLUTION_TYPE_SEARCH"], create_advanced_site_search=False, document_processing_config={ - "defaultParsingConfig": { - "digitalParsingConfig": {}, + "default_parsing_config": { + "digital_parsing_config": {}, }, - "parsingConfigOverrides": [{ - "fileType": "pdf", - "ocrParsingConfig": { - "useNativeText": True, + "parsing_config_overrides": [{ + "file_type": "pdf", + "ocr_parsing_config": { + "use_native_text": True, }, }], }) diff --git a/sdk/python/pulumi_gcp/dns/get_keys.py b/sdk/python/pulumi_gcp/dns/get_keys.py index 47aff11bbf..9a4ac9ee75 100644 --- a/sdk/python/pulumi_gcp/dns/get_keys.py +++ b/sdk/python/pulumi_gcp/dns/get_keys.py @@ -118,7 +118,7 @@ def get_keys(managed_zone: Optional[str] = None, dns_name="foo.bar.", dnssec_config={ "state": "on", - "nonExistence": "nsec3", + "non_existence": "nsec3", }) foo_dns_keys = gcp.dns.get_keys_output(managed_zone=foo.id) pulumi.export("fooDnsDsRecord", foo_dns_keys.key_signing_keys[0].ds_record) @@ -169,7 +169,7 @@ def get_keys_output(managed_zone: Optional[pulumi.Input[str]] = None, dns_name="foo.bar.", dnssec_config={ "state": "on", - "nonExistence": "nsec3", + "non_existence": "nsec3", }) foo_dns_keys = gcp.dns.get_keys_output(managed_zone=foo.id) pulumi.export("fooDnsDsRecord", foo_dns_keys.key_signing_keys[0].ds_record) diff --git a/sdk/python/pulumi_gcp/dns/managed_zone.py b/sdk/python/pulumi_gcp/dns/managed_zone.py index a3a337f6d6..d66289bd1c 100644 --- a/sdk/python/pulumi_gcp/dns/managed_zone.py +++ b/sdk/python/pulumi_gcp/dns/managed_zone.py @@ -729,10 +729,10 @@ def __init__(__self__, private_visibility_config={ "networks": [ { - "networkUrl": network_1.id, + "network_url": network_1.id, }, { - "networkUrl": network_2.id, + "network_url": network_2.id, }, ], }) @@ -760,20 +760,20 @@ def __init__(__self__, private_visibility_config={ "networks": [ { - "networkUrl": network_1.id, + "network_url": network_1.id, }, { - "networkUrl": network_2.id, + "network_url": network_2.id, }, ], }, forwarding_config={ - "targetNameServers": [ + "target_name_servers": [ { - "ipv4Address": "172.16.1.10", + "ipv4_address": "172.16.1.10", }, { - "ipv4Address": "172.16.1.20", + "ipv4_address": "172.16.1.20", }, ], }) @@ -795,12 +795,12 @@ def __init__(__self__, private_ip_google_access=True, secondary_ip_ranges=[ { - "rangeName": "pod", - "ipCidrRange": "10.0.0.0/19", + "range_name": "pod", + "ip_cidr_range": "10.0.0.0/19", }, { - "rangeName": "svc", - "ipCidrRange": "10.0.32.0/22", + "range_name": "svc", + "ip_cidr_range": "10.0.32.0/22", }, ]) cluster_1 = gcp.container.Cluster("cluster-1", @@ -814,17 +814,17 @@ def __init__(__self__, network=network_1.name, subnetwork=subnetwork_1.name, private_cluster_config={ - "enablePrivateEndpoint": True, - "enablePrivateNodes": True, - "masterIpv4CidrBlock": "10.42.0.0/28", - "masterGlobalAccessConfig": { + "enable_private_endpoint": True, + "enable_private_nodes": True, + "master_ipv4_cidr_block": "10.42.0.0/28", + "master_global_access_config": { "enabled": True, }, }, master_authorized_networks_config={}, ip_allocation_policy={ - "clusterSecondaryRangeName": subnetwork_1.secondary_ip_ranges[0].range_name, - "servicesSecondaryRangeName": subnetwork_1.secondary_ip_ranges[1].range_name, + "cluster_secondary_range_name": subnetwork_1.secondary_ip_ranges[0].range_name, + "services_secondary_range_name": subnetwork_1.secondary_ip_ranges[1].range_name, }, deletion_protection=True) private_zone_gke = gcp.dns.ManagedZone("private-zone-gke", @@ -836,8 +836,8 @@ def __init__(__self__, }, visibility="private", private_visibility_config={ - "gkeClusters": [{ - "gkeClusterName": cluster_1.id, + "gke_clusters": [{ + "gke_cluster_name": cluster_1.id, }], }) ``` @@ -860,12 +860,12 @@ def __init__(__self__, visibility="private", private_visibility_config={ "networks": [{ - "networkUrl": network_source.id, + "network_url": network_source.id, }], }, peering_config={ - "targetNetwork": { - "networkUrl": network_target.id, + "target_network": { + "network_url": network_target.id, }, }) ``` @@ -885,7 +885,7 @@ def __init__(__self__, visibility="private", service_directory_config={ "namespace": { - "namespaceUrl": example.id, + "namespace_url": example.id, }, }) network = gcp.compute.Network("network", @@ -906,7 +906,7 @@ def __init__(__self__, "foo": "bar", }, cloud_logging_config={ - "enableLogging": True, + "enable_logging": True, }) ``` @@ -1029,10 +1029,10 @@ def __init__(__self__, private_visibility_config={ "networks": [ { - "networkUrl": network_1.id, + "network_url": network_1.id, }, { - "networkUrl": network_2.id, + "network_url": network_2.id, }, ], }) @@ -1060,20 +1060,20 @@ def __init__(__self__, private_visibility_config={ "networks": [ { - "networkUrl": network_1.id, + "network_url": network_1.id, }, { - "networkUrl": network_2.id, + "network_url": network_2.id, }, ], }, forwarding_config={ - "targetNameServers": [ + "target_name_servers": [ { - "ipv4Address": "172.16.1.10", + "ipv4_address": "172.16.1.10", }, { - "ipv4Address": "172.16.1.20", + "ipv4_address": "172.16.1.20", }, ], }) @@ -1095,12 +1095,12 @@ def __init__(__self__, private_ip_google_access=True, secondary_ip_ranges=[ { - "rangeName": "pod", - "ipCidrRange": "10.0.0.0/19", + "range_name": "pod", + "ip_cidr_range": "10.0.0.0/19", }, { - "rangeName": "svc", - "ipCidrRange": "10.0.32.0/22", + "range_name": "svc", + "ip_cidr_range": "10.0.32.0/22", }, ]) cluster_1 = gcp.container.Cluster("cluster-1", @@ -1114,17 +1114,17 @@ def __init__(__self__, network=network_1.name, subnetwork=subnetwork_1.name, private_cluster_config={ - "enablePrivateEndpoint": True, - "enablePrivateNodes": True, - "masterIpv4CidrBlock": "10.42.0.0/28", - "masterGlobalAccessConfig": { + "enable_private_endpoint": True, + "enable_private_nodes": True, + "master_ipv4_cidr_block": "10.42.0.0/28", + "master_global_access_config": { "enabled": True, }, }, master_authorized_networks_config={}, ip_allocation_policy={ - "clusterSecondaryRangeName": subnetwork_1.secondary_ip_ranges[0].range_name, - "servicesSecondaryRangeName": subnetwork_1.secondary_ip_ranges[1].range_name, + "cluster_secondary_range_name": subnetwork_1.secondary_ip_ranges[0].range_name, + "services_secondary_range_name": subnetwork_1.secondary_ip_ranges[1].range_name, }, deletion_protection=True) private_zone_gke = gcp.dns.ManagedZone("private-zone-gke", @@ -1136,8 +1136,8 @@ def __init__(__self__, }, visibility="private", private_visibility_config={ - "gkeClusters": [{ - "gkeClusterName": cluster_1.id, + "gke_clusters": [{ + "gke_cluster_name": cluster_1.id, }], }) ``` @@ -1160,12 +1160,12 @@ def __init__(__self__, visibility="private", private_visibility_config={ "networks": [{ - "networkUrl": network_source.id, + "network_url": network_source.id, }], }, peering_config={ - "targetNetwork": { - "networkUrl": network_target.id, + "target_network": { + "network_url": network_target.id, }, }) ``` @@ -1185,7 +1185,7 @@ def __init__(__self__, visibility="private", service_directory_config={ "namespace": { - "namespaceUrl": example.id, + "namespace_url": example.id, }, }) network = gcp.compute.Network("network", @@ -1206,7 +1206,7 @@ def __init__(__self__, "foo": "bar", }, cloud_logging_config={ - "enableLogging": True, + "enable_logging": True, }) ``` diff --git a/sdk/python/pulumi_gcp/dns/policy.py b/sdk/python/pulumi_gcp/dns/policy.py index 374333c3c2..b1da1d9e1e 100644 --- a/sdk/python/pulumi_gcp/dns/policy.py +++ b/sdk/python/pulumi_gcp/dns/policy.py @@ -348,22 +348,22 @@ def __init__(__self__, enable_inbound_forwarding=True, enable_logging=True, alternative_name_server_config={ - "targetNameServers": [ + "target_name_servers": [ { - "ipv4Address": "172.16.1.10", - "forwardingPath": "private", + "ipv4_address": "172.16.1.10", + "forwarding_path": "private", }, { - "ipv4Address": "172.16.1.20", + "ipv4_address": "172.16.1.20", }, ], }, networks=[ { - "networkUrl": network_1.id, + "network_url": network_1.id, }, { - "networkUrl": network_2.id, + "network_url": network_2.id, }, ]) ``` @@ -449,22 +449,22 @@ def __init__(__self__, enable_inbound_forwarding=True, enable_logging=True, alternative_name_server_config={ - "targetNameServers": [ + "target_name_servers": [ { - "ipv4Address": "172.16.1.10", - "forwardingPath": "private", + "ipv4_address": "172.16.1.10", + "forwarding_path": "private", }, { - "ipv4Address": "172.16.1.20", + "ipv4_address": "172.16.1.20", }, ], }, networks=[ { - "networkUrl": network_1.id, + "network_url": network_1.id, }, { - "networkUrl": network_2.id, + "network_url": network_2.id, }, ]) ``` diff --git a/sdk/python/pulumi_gcp/dns/record_set.py b/sdk/python/pulumi_gcp/dns/record_set.py index eee0edb475..69b49b0915 100644 --- a/sdk/python/pulumi_gcp/dns/record_set.py +++ b/sdk/python/pulumi_gcp/dns/record_set.py @@ -295,14 +295,14 @@ def __init__(__self__, frontend_instance = gcp.compute.Instance("frontend", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "network": "default", }], name="frontend", machine_type="g1-small", zone="us-central1-b", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }) @@ -448,20 +448,20 @@ def __init__(__self__, type="A", ttl=300, routing_policy={ - "primaryBackup": { - "trickleRatio": 0.1, + "primary_backup": { + "trickle_ratio": 0.1, "primary": { - "internalLoadBalancers": [{ - "loadBalancerType": "regionalL4ilb", - "ipAddress": prod_forwarding_rule.ip_address, + "internal_load_balancers": [{ + "load_balancer_type": "regionalL4ilb", + "ip_address": prod_forwarding_rule.ip_address, "port": "80", - "ipProtocol": "tcp", - "networkUrl": prod_network.id, + "ip_protocol": "tcp", + "network_url": prod_network.id, "project": prod_forwarding_rule.project, "region": prod_forwarding_rule.region, }], }, - "backupGeos": [ + "backup_geos": [ { "location": "asia-east1", "rrdatas": ["10.128.1.1"], @@ -533,14 +533,14 @@ def __init__(__self__, frontend_instance = gcp.compute.Instance("frontend", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "network": "default", }], name="frontend", machine_type="g1-small", zone="us-central1-b", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }) @@ -686,20 +686,20 @@ def __init__(__self__, type="A", ttl=300, routing_policy={ - "primaryBackup": { - "trickleRatio": 0.1, + "primary_backup": { + "trickle_ratio": 0.1, "primary": { - "internalLoadBalancers": [{ - "loadBalancerType": "regionalL4ilb", - "ipAddress": prod_forwarding_rule.ip_address, + "internal_load_balancers": [{ + "load_balancer_type": "regionalL4ilb", + "ip_address": prod_forwarding_rule.ip_address, "port": "80", - "ipProtocol": "tcp", - "networkUrl": prod_network.id, + "ip_protocol": "tcp", + "network_url": prod_network.id, "project": prod_forwarding_rule.project, "region": prod_forwarding_rule.region, }], }, - "backupGeos": [ + "backup_geos": [ { "location": "asia-east1", "rrdatas": ["10.128.1.1"], diff --git a/sdk/python/pulumi_gcp/dns/response_policy.py b/sdk/python/pulumi_gcp/dns/response_policy.py index c693b17037..960cf3a366 100644 --- a/sdk/python/pulumi_gcp/dns/response_policy.py +++ b/sdk/python/pulumi_gcp/dns/response_policy.py @@ -254,12 +254,12 @@ def __init__(__self__, private_ip_google_access=True, secondary_ip_ranges=[ { - "rangeName": "pod", - "ipCidrRange": "10.0.0.0/19", + "range_name": "pod", + "ip_cidr_range": "10.0.0.0/19", }, { - "rangeName": "svc", - "ipCidrRange": "10.0.32.0/22", + "range_name": "svc", + "ip_cidr_range": "10.0.32.0/22", }, ]) cluster_1 = gcp.container.Cluster("cluster-1", @@ -273,31 +273,31 @@ def __init__(__self__, network=network_1.name, subnetwork=subnetwork_1.name, private_cluster_config={ - "enablePrivateEndpoint": True, - "enablePrivateNodes": True, - "masterIpv4CidrBlock": "10.42.0.0/28", - "masterGlobalAccessConfig": { + "enable_private_endpoint": True, + "enable_private_nodes": True, + "master_ipv4_cidr_block": "10.42.0.0/28", + "master_global_access_config": { "enabled": True, }, }, master_authorized_networks_config={}, ip_allocation_policy={ - "clusterSecondaryRangeName": subnetwork_1.secondary_ip_ranges[0].range_name, - "servicesSecondaryRangeName": subnetwork_1.secondary_ip_ranges[1].range_name, + "cluster_secondary_range_name": subnetwork_1.secondary_ip_ranges[0].range_name, + "services_secondary_range_name": subnetwork_1.secondary_ip_ranges[1].range_name, }, deletion_protection=True) example_response_policy = gcp.dns.ResponsePolicy("example-response-policy", response_policy_name="example-response-policy", networks=[ { - "networkUrl": network_1.id, + "network_url": network_1.id, }, { - "networkUrl": network_2.id, + "network_url": network_2.id, }, ], gke_clusters=[{ - "gkeClusterName": cluster_1.id, + "gke_cluster_name": cluster_1.id, }]) ``` @@ -371,12 +371,12 @@ def __init__(__self__, private_ip_google_access=True, secondary_ip_ranges=[ { - "rangeName": "pod", - "ipCidrRange": "10.0.0.0/19", + "range_name": "pod", + "ip_cidr_range": "10.0.0.0/19", }, { - "rangeName": "svc", - "ipCidrRange": "10.0.32.0/22", + "range_name": "svc", + "ip_cidr_range": "10.0.32.0/22", }, ]) cluster_1 = gcp.container.Cluster("cluster-1", @@ -390,31 +390,31 @@ def __init__(__self__, network=network_1.name, subnetwork=subnetwork_1.name, private_cluster_config={ - "enablePrivateEndpoint": True, - "enablePrivateNodes": True, - "masterIpv4CidrBlock": "10.42.0.0/28", - "masterGlobalAccessConfig": { + "enable_private_endpoint": True, + "enable_private_nodes": True, + "master_ipv4_cidr_block": "10.42.0.0/28", + "master_global_access_config": { "enabled": True, }, }, master_authorized_networks_config={}, ip_allocation_policy={ - "clusterSecondaryRangeName": subnetwork_1.secondary_ip_ranges[0].range_name, - "servicesSecondaryRangeName": subnetwork_1.secondary_ip_ranges[1].range_name, + "cluster_secondary_range_name": subnetwork_1.secondary_ip_ranges[0].range_name, + "services_secondary_range_name": subnetwork_1.secondary_ip_ranges[1].range_name, }, deletion_protection=True) example_response_policy = gcp.dns.ResponsePolicy("example-response-policy", response_policy_name="example-response-policy", networks=[ { - "networkUrl": network_1.id, + "network_url": network_1.id, }, { - "networkUrl": network_2.id, + "network_url": network_2.id, }, ], gke_clusters=[{ - "gkeClusterName": cluster_1.id, + "gke_cluster_name": cluster_1.id, }]) ``` diff --git a/sdk/python/pulumi_gcp/dns/response_policy_rule.py b/sdk/python/pulumi_gcp/dns/response_policy_rule.py index ece9085cd3..1deb6e76df 100644 --- a/sdk/python/pulumi_gcp/dns/response_policy_rule.py +++ b/sdk/python/pulumi_gcp/dns/response_policy_rule.py @@ -283,10 +283,10 @@ def __init__(__self__, response_policy_name="example-response-policy", networks=[ { - "networkUrl": network_1.id, + "network_url": network_1.id, }, { - "networkUrl": network_2.id, + "network_url": network_2.id, }, ]) example_response_policy_rule = gcp.dns.ResponsePolicyRule("example-response-policy-rule", @@ -294,7 +294,7 @@ def __init__(__self__, rule_name="example-rule", dns_name="dns.example.com.", local_data={ - "localDatas": [{ + "local_datas": [{ "name": "dns.example.com.", "type": "A", "ttl": 300, @@ -372,10 +372,10 @@ def __init__(__self__, response_policy_name="example-response-policy", networks=[ { - "networkUrl": network_1.id, + "network_url": network_1.id, }, { - "networkUrl": network_2.id, + "network_url": network_2.id, }, ]) example_response_policy_rule = gcp.dns.ResponsePolicyRule("example-response-policy-rule", @@ -383,7 +383,7 @@ def __init__(__self__, rule_name="example-rule", dns_name="dns.example.com.", local_data={ - "localDatas": [{ + "local_datas": [{ "name": "dns.example.com.", "type": "A", "ttl": 300, diff --git a/sdk/python/pulumi_gcp/edgecontainer/cluster.py b/sdk/python/pulumi_gcp/edgecontainer/cluster.py index 0f5cd16b2d..887e15077d 100644 --- a/sdk/python/pulumi_gcp/edgecontainer/cluster.py +++ b/sdk/python/pulumi_gcp/edgecontainer/cluster.py @@ -787,13 +787,13 @@ def __init__(__self__, name="basic-cluster", location="us-central1", authorization={ - "adminUsers": { + "admin_users": { "username": "admin@hashicorptest.com", }, }, networking={ - "clusterIpv4CidrBlocks": ["10.0.0.0/16"], - "servicesIpv4CidrBlocks": ["10.1.0.0/16"], + "cluster_ipv4_cidr_blocks": ["10.0.0.0/16"], + "services_ipv4_cidr_blocks": ["10.1.0.0/16"], }, fleet={ "project": f"projects/{project.number}", @@ -814,23 +814,23 @@ def __init__(__self__, name="cluster-with-maintenance", location="us-central1", authorization={ - "adminUsers": { + "admin_users": { "username": "admin@hashicorptest.com", }, }, networking={ - "clusterIpv4CidrBlocks": ["10.0.0.0/16"], - "servicesIpv4CidrBlocks": ["10.1.0.0/16"], + "cluster_ipv4_cidr_blocks": ["10.0.0.0/16"], + "services_ipv4_cidr_blocks": ["10.1.0.0/16"], }, fleet={ "project": f"projects/{project.number}", }, maintenance_policy={ "window": { - "recurringWindow": { + "recurring_window": { "window": { - "startTime": "2023-01-01T08:00:00Z", - "endTime": "2023-01-01T17:00:00Z", + "start_time": "2023-01-01T08:00:00Z", + "end_time": "2023-01-01T17:00:00Z", }, "recurrence": "FREQ=WEEKLY;BYDAY=SA", }, @@ -848,13 +848,13 @@ def __init__(__self__, name="local-control-plane-cluster", location="us-central1", authorization={ - "adminUsers": { + "admin_users": { "username": "admin@hashicorptest.com", }, }, networking={ - "clusterIpv4CidrBlocks": ["10.0.0.0/16"], - "servicesIpv4CidrBlocks": ["10.1.0.0/16"], + "cluster_ipv4_cidr_blocks": ["10.0.0.0/16"], + "services_ipv4_cidr_blocks": ["10.1.0.0/16"], }, fleet={ "project": f"projects/{project.number}", @@ -862,10 +862,10 @@ def __init__(__self__, external_load_balancer_ipv4_address_pools=["10.100.0.0-10.100.0.10"], control_plane={ "local": { - "nodeLocation": "us-central1-edge-example-edgesite", - "nodeCount": 1, - "machineFilter": "machine-name", - "sharedDeploymentPolicy": "ALLOWED", + "node_location": "us-central1-edge-example-edgesite", + "node_count": 1, + "machine_filter": "machine-name", + "shared_deployment_policy": "ALLOWED", }, }) ``` @@ -952,13 +952,13 @@ def __init__(__self__, name="basic-cluster", location="us-central1", authorization={ - "adminUsers": { + "admin_users": { "username": "admin@hashicorptest.com", }, }, networking={ - "clusterIpv4CidrBlocks": ["10.0.0.0/16"], - "servicesIpv4CidrBlocks": ["10.1.0.0/16"], + "cluster_ipv4_cidr_blocks": ["10.0.0.0/16"], + "services_ipv4_cidr_blocks": ["10.1.0.0/16"], }, fleet={ "project": f"projects/{project.number}", @@ -979,23 +979,23 @@ def __init__(__self__, name="cluster-with-maintenance", location="us-central1", authorization={ - "adminUsers": { + "admin_users": { "username": "admin@hashicorptest.com", }, }, networking={ - "clusterIpv4CidrBlocks": ["10.0.0.0/16"], - "servicesIpv4CidrBlocks": ["10.1.0.0/16"], + "cluster_ipv4_cidr_blocks": ["10.0.0.0/16"], + "services_ipv4_cidr_blocks": ["10.1.0.0/16"], }, fleet={ "project": f"projects/{project.number}", }, maintenance_policy={ "window": { - "recurringWindow": { + "recurring_window": { "window": { - "startTime": "2023-01-01T08:00:00Z", - "endTime": "2023-01-01T17:00:00Z", + "start_time": "2023-01-01T08:00:00Z", + "end_time": "2023-01-01T17:00:00Z", }, "recurrence": "FREQ=WEEKLY;BYDAY=SA", }, @@ -1013,13 +1013,13 @@ def __init__(__self__, name="local-control-plane-cluster", location="us-central1", authorization={ - "adminUsers": { + "admin_users": { "username": "admin@hashicorptest.com", }, }, networking={ - "clusterIpv4CidrBlocks": ["10.0.0.0/16"], - "servicesIpv4CidrBlocks": ["10.1.0.0/16"], + "cluster_ipv4_cidr_blocks": ["10.0.0.0/16"], + "services_ipv4_cidr_blocks": ["10.1.0.0/16"], }, fleet={ "project": f"projects/{project.number}", @@ -1027,10 +1027,10 @@ def __init__(__self__, external_load_balancer_ipv4_address_pools=["10.100.0.0-10.100.0.10"], control_plane={ "local": { - "nodeLocation": "us-central1-edge-example-edgesite", - "nodeCount": 1, - "machineFilter": "machine-name", - "sharedDeploymentPolicy": "ALLOWED", + "node_location": "us-central1-edge-example-edgesite", + "node_count": 1, + "machine_filter": "machine-name", + "shared_deployment_policy": "ALLOWED", }, }) ``` diff --git a/sdk/python/pulumi_gcp/edgecontainer/node_pool.py b/sdk/python/pulumi_gcp/edgecontainer/node_pool.py index 5006020251..4fb02fe57c 100644 --- a/sdk/python/pulumi_gcp/edgecontainer/node_pool.py +++ b/sdk/python/pulumi_gcp/edgecontainer/node_pool.py @@ -510,13 +510,13 @@ def __init__(__self__, name="default", location="us-central1", authorization={ - "adminUsers": { + "admin_users": { "username": "admin@hashicorptest.com", }, }, networking={ - "clusterIpv4CidrBlocks": ["10.0.0.0/16"], - "servicesIpv4CidrBlocks": ["10.1.0.0/16"], + "cluster_ipv4_cidr_blocks": ["10.0.0.0/16"], + "services_ipv4_cidr_blocks": ["10.1.0.0/16"], }, fleet={ "project": f"projects/{project.number}", @@ -543,13 +543,13 @@ def __init__(__self__, name="default", location="us-central1", authorization={ - "adminUsers": { + "admin_users": { "username": "admin@hashicorptest.com", }, }, networking={ - "clusterIpv4CidrBlocks": ["10.0.0.0/16"], - "servicesIpv4CidrBlocks": ["10.1.0.0/16"], + "cluster_ipv4_cidr_blocks": ["10.0.0.0/16"], + "services_ipv4_cidr_blocks": ["10.1.0.0/16"], }, fleet={ "project": f"projects/{project.number}", @@ -571,7 +571,7 @@ def __init__(__self__, node_location="us-central1-edge-example-edgesite", node_count=3, local_disk_encryption={ - "kmsKey": crypto_key_crypto_key.id, + "kms_key": crypto_key_crypto_key.id, }, opts = pulumi.ResourceOptions(depends_on=[crypto_key])) ``` @@ -586,13 +586,13 @@ def __init__(__self__, name="", location="us-central1", authorization={ - "adminUsers": { + "admin_users": { "username": "admin@hashicorptest.com", }, }, networking={ - "clusterIpv4CidrBlocks": ["10.0.0.0/16"], - "servicesIpv4CidrBlocks": ["10.1.0.0/16"], + "cluster_ipv4_cidr_blocks": ["10.0.0.0/16"], + "services_ipv4_cidr_blocks": ["10.1.0.0/16"], }, fleet={ "project": f"projects/{project.number}", @@ -600,10 +600,10 @@ def __init__(__self__, external_load_balancer_ipv4_address_pools=["10.100.0.0-10.100.0.10"], control_plane={ "local": { - "nodeLocation": "us-central1-edge-example-edgesite", - "nodeCount": 1, - "machineFilter": "machine-name", - "sharedDeploymentPolicy": "ALLOWED", + "node_location": "us-central1-edge-example-edgesite", + "node_count": 1, + "machine_filter": "machine-name", + "shared_deployment_policy": "ALLOWED", }, }) default_node_pool = gcp.edgecontainer.NodePool("default", @@ -689,13 +689,13 @@ def __init__(__self__, name="default", location="us-central1", authorization={ - "adminUsers": { + "admin_users": { "username": "admin@hashicorptest.com", }, }, networking={ - "clusterIpv4CidrBlocks": ["10.0.0.0/16"], - "servicesIpv4CidrBlocks": ["10.1.0.0/16"], + "cluster_ipv4_cidr_blocks": ["10.0.0.0/16"], + "services_ipv4_cidr_blocks": ["10.1.0.0/16"], }, fleet={ "project": f"projects/{project.number}", @@ -722,13 +722,13 @@ def __init__(__self__, name="default", location="us-central1", authorization={ - "adminUsers": { + "admin_users": { "username": "admin@hashicorptest.com", }, }, networking={ - "clusterIpv4CidrBlocks": ["10.0.0.0/16"], - "servicesIpv4CidrBlocks": ["10.1.0.0/16"], + "cluster_ipv4_cidr_blocks": ["10.0.0.0/16"], + "services_ipv4_cidr_blocks": ["10.1.0.0/16"], }, fleet={ "project": f"projects/{project.number}", @@ -750,7 +750,7 @@ def __init__(__self__, node_location="us-central1-edge-example-edgesite", node_count=3, local_disk_encryption={ - "kmsKey": crypto_key_crypto_key.id, + "kms_key": crypto_key_crypto_key.id, }, opts = pulumi.ResourceOptions(depends_on=[crypto_key])) ``` @@ -765,13 +765,13 @@ def __init__(__self__, name="", location="us-central1", authorization={ - "adminUsers": { + "admin_users": { "username": "admin@hashicorptest.com", }, }, networking={ - "clusterIpv4CidrBlocks": ["10.0.0.0/16"], - "servicesIpv4CidrBlocks": ["10.1.0.0/16"], + "cluster_ipv4_cidr_blocks": ["10.0.0.0/16"], + "services_ipv4_cidr_blocks": ["10.1.0.0/16"], }, fleet={ "project": f"projects/{project.number}", @@ -779,10 +779,10 @@ def __init__(__self__, external_load_balancer_ipv4_address_pools=["10.100.0.0-10.100.0.10"], control_plane={ "local": { - "nodeLocation": "us-central1-edge-example-edgesite", - "nodeCount": 1, - "machineFilter": "machine-name", - "sharedDeploymentPolicy": "ALLOWED", + "node_location": "us-central1-edge-example-edgesite", + "node_count": 1, + "machine_filter": "machine-name", + "shared_deployment_policy": "ALLOWED", }, }) default_node_pool = gcp.edgecontainer.NodePool("default", diff --git a/sdk/python/pulumi_gcp/edgecontainer/vpn_connection.py b/sdk/python/pulumi_gcp/edgecontainer/vpn_connection.py index 23f560925d..10b762283e 100644 --- a/sdk/python/pulumi_gcp/edgecontainer/vpn_connection.py +++ b/sdk/python/pulumi_gcp/edgecontainer/vpn_connection.py @@ -506,13 +506,13 @@ def __init__(__self__, name="default", location="us-central1", authorization={ - "adminUsers": { + "admin_users": { "username": "admin@hashicorptest.com", }, }, networking={ - "clusterIpv4CidrBlocks": ["10.0.0.0/16"], - "servicesIpv4CidrBlocks": ["10.1.0.0/16"], + "cluster_ipv4_cidr_blocks": ["10.0.0.0/16"], + "services_ipv4_cidr_blocks": ["10.1.0.0/16"], }, fleet={ "project": f"projects/{project.number}", @@ -610,13 +610,13 @@ def __init__(__self__, name="default", location="us-central1", authorization={ - "adminUsers": { + "admin_users": { "username": "admin@hashicorptest.com", }, }, networking={ - "clusterIpv4CidrBlocks": ["10.0.0.0/16"], - "servicesIpv4CidrBlocks": ["10.1.0.0/16"], + "cluster_ipv4_cidr_blocks": ["10.0.0.0/16"], + "services_ipv4_cidr_blocks": ["10.1.0.0/16"], }, fleet={ "project": f"projects/{project.number}", diff --git a/sdk/python/pulumi_gcp/essentialcontacts/document_ai_warehouse_document_schema.py b/sdk/python/pulumi_gcp/essentialcontacts/document_ai_warehouse_document_schema.py index dfd44db619..c5025e2f2f 100644 --- a/sdk/python/pulumi_gcp/essentialcontacts/document_ai_warehouse_document_schema.py +++ b/sdk/python/pulumi_gcp/essentialcontacts/document_ai_warehouse_document_schema.py @@ -246,18 +246,18 @@ def __init__(__self__, document_is_folder=False, property_definitions=[{ "name": "prop3", - "displayName": "propdisp3", - "isRepeatable": False, - "isFilterable": True, - "isSearchable": True, - "isMetadata": False, - "isRequired": False, - "retrievalImportance": "HIGHEST", - "schemaSources": [{ + "display_name": "propdisp3", + "is_repeatable": False, + "is_filterable": True, + "is_searchable": True, + "is_metadata": False, + "is_required": False, + "retrieval_importance": "HIGHEST", + "schema_sources": [{ "name": "dummy_source", - "processorType": "dummy_processor", + "processor_type": "dummy_processor", }], - "textTypeOptions": {}, + "text_type_options": {}, }]) ``` @@ -319,18 +319,18 @@ def __init__(__self__, document_is_folder=False, property_definitions=[{ "name": "prop3", - "displayName": "propdisp3", - "isRepeatable": False, - "isFilterable": True, - "isSearchable": True, - "isMetadata": False, - "isRequired": False, - "retrievalImportance": "HIGHEST", - "schemaSources": [{ + "display_name": "propdisp3", + "is_repeatable": False, + "is_filterable": True, + "is_searchable": True, + "is_metadata": False, + "is_required": False, + "retrieval_importance": "HIGHEST", + "schema_sources": [{ "name": "dummy_source", - "processorType": "dummy_processor", + "processor_type": "dummy_processor", }], - "textTypeOptions": {}, + "text_type_options": {}, }]) ``` diff --git a/sdk/python/pulumi_gcp/eventarc/trigger.py b/sdk/python/pulumi_gcp/eventarc/trigger.py index e7f8622892..88f101823b 100644 --- a/sdk/python/pulumi_gcp/eventarc/trigger.py +++ b/sdk/python/pulumi_gcp/eventarc/trigger.py @@ -548,16 +548,16 @@ def __init__(__self__, "containers": [{ "image": "gcr.io/cloudrun/hello", "ports": [{ - "containerPort": 8080, + "container_port": 8080, }], }], - "containerConcurrency": 50, - "timeoutSeconds": 100, + "container_concurrency": 50, + "timeout_seconds": 100, }, }, traffics=[{ "percent": 100, - "latestRevision": True, + "latest_revision": True, }]) primary = gcp.eventarc.Trigger("primary", name="name", @@ -567,7 +567,7 @@ def __init__(__self__, "value": "google.cloud.pubsub.topic.v1.messagePublished", }], destination={ - "cloudRunService": { + "cloud_run_service": { "service": default.name, "region": "europe-west1", }, @@ -654,16 +654,16 @@ def __init__(__self__, "containers": [{ "image": "gcr.io/cloudrun/hello", "ports": [{ - "containerPort": 8080, + "container_port": 8080, }], }], - "containerConcurrency": 50, - "timeoutSeconds": 100, + "container_concurrency": 50, + "timeout_seconds": 100, }, }, traffics=[{ "percent": 100, - "latestRevision": True, + "latest_revision": True, }]) primary = gcp.eventarc.Trigger("primary", name="name", @@ -673,7 +673,7 @@ def __init__(__self__, "value": "google.cloud.pubsub.topic.v1.messagePublished", }], destination={ - "cloudRunService": { + "cloud_run_service": { "service": default.name, "region": "europe-west1", }, diff --git a/sdk/python/pulumi_gcp/filestore/backup.py b/sdk/python/pulumi_gcp/filestore/backup.py index 17ea6d17df..893162bf01 100644 --- a/sdk/python/pulumi_gcp/filestore/backup.py +++ b/sdk/python/pulumi_gcp/filestore/backup.py @@ -487,13 +487,13 @@ def __init__(__self__, location="us-central1-b", tier="BASIC_HDD", file_shares={ - "capacityGb": 1024, + "capacity_gb": 1024, "name": "share1", }, networks=[{ "network": "default", "modes": ["MODE_IPV4"], - "connectMode": "DIRECT_PEERING", + "connect_mode": "DIRECT_PEERING", }]) backup = gcp.filestore.Backup("backup", name="tf-fs-bkup", @@ -583,13 +583,13 @@ def __init__(__self__, location="us-central1-b", tier="BASIC_HDD", file_shares={ - "capacityGb": 1024, + "capacity_gb": 1024, "name": "share1", }, networks=[{ "network": "default", "modes": ["MODE_IPV4"], - "connectMode": "DIRECT_PEERING", + "connect_mode": "DIRECT_PEERING", }]) backup = gcp.filestore.Backup("backup", name="tf-fs-bkup", diff --git a/sdk/python/pulumi_gcp/filestore/instance.py b/sdk/python/pulumi_gcp/filestore/instance.py index f8359eb47c..f4ef7a03e3 100644 --- a/sdk/python/pulumi_gcp/filestore/instance.py +++ b/sdk/python/pulumi_gcp/filestore/instance.py @@ -528,7 +528,7 @@ def __init__(__self__, location="us-central1-b", tier="BASIC_HDD", file_shares={ - "capacityGb": 1024, + "capacity_gb": 1024, "name": "share1", }, networks=[{ @@ -547,27 +547,27 @@ def __init__(__self__, location="us-central1-b", tier="BASIC_SSD", file_shares={ - "capacityGb": 2560, + "capacity_gb": 2560, "name": "share1", - "nfsExportOptions": [ + "nfs_export_options": [ { - "ipRanges": ["10.0.0.0/24"], - "accessMode": "READ_WRITE", - "squashMode": "NO_ROOT_SQUASH", + "ip_ranges": ["10.0.0.0/24"], + "access_mode": "READ_WRITE", + "squash_mode": "NO_ROOT_SQUASH", }, { - "ipRanges": ["10.10.0.0/24"], - "accessMode": "READ_ONLY", - "squashMode": "ROOT_SQUASH", - "anonUid": 123, - "anonGid": 456, + "ip_ranges": ["10.10.0.0/24"], + "access_mode": "READ_ONLY", + "squash_mode": "ROOT_SQUASH", + "anon_uid": 123, + "anon_gid": 456, }, ], }, networks=[{ "network": "default", "modes": ["MODE_IPV4"], - "connectMode": "DIRECT_PEERING", + "connect_mode": "DIRECT_PEERING", }]) ``` ### Filestore Instance Protocol @@ -582,7 +582,7 @@ def __init__(__self__, tier="ENTERPRISE", protocol="NFS_V4_1", file_shares={ - "capacityGb": 1024, + "capacity_gb": 1024, "name": "share1", }, networks=[{ @@ -607,7 +607,7 @@ def __init__(__self__, location="us-central1", tier="ENTERPRISE", file_shares={ - "capacityGb": 1024, + "capacity_gb": 1024, "name": "share1", }, networks=[{ @@ -693,7 +693,7 @@ def __init__(__self__, location="us-central1-b", tier="BASIC_HDD", file_shares={ - "capacityGb": 1024, + "capacity_gb": 1024, "name": "share1", }, networks=[{ @@ -712,27 +712,27 @@ def __init__(__self__, location="us-central1-b", tier="BASIC_SSD", file_shares={ - "capacityGb": 2560, + "capacity_gb": 2560, "name": "share1", - "nfsExportOptions": [ + "nfs_export_options": [ { - "ipRanges": ["10.0.0.0/24"], - "accessMode": "READ_WRITE", - "squashMode": "NO_ROOT_SQUASH", + "ip_ranges": ["10.0.0.0/24"], + "access_mode": "READ_WRITE", + "squash_mode": "NO_ROOT_SQUASH", }, { - "ipRanges": ["10.10.0.0/24"], - "accessMode": "READ_ONLY", - "squashMode": "ROOT_SQUASH", - "anonUid": 123, - "anonGid": 456, + "ip_ranges": ["10.10.0.0/24"], + "access_mode": "READ_ONLY", + "squash_mode": "ROOT_SQUASH", + "anon_uid": 123, + "anon_gid": 456, }, ], }, networks=[{ "network": "default", "modes": ["MODE_IPV4"], - "connectMode": "DIRECT_PEERING", + "connect_mode": "DIRECT_PEERING", }]) ``` ### Filestore Instance Protocol @@ -747,7 +747,7 @@ def __init__(__self__, tier="ENTERPRISE", protocol="NFS_V4_1", file_shares={ - "capacityGb": 1024, + "capacity_gb": 1024, "name": "share1", }, networks=[{ @@ -772,7 +772,7 @@ def __init__(__self__, location="us-central1", tier="ENTERPRISE", file_shares={ - "capacityGb": 1024, + "capacity_gb": 1024, "name": "share1", }, networks=[{ diff --git a/sdk/python/pulumi_gcp/filestore/snapshot.py b/sdk/python/pulumi_gcp/filestore/snapshot.py index 4a81ebd281..c26125ef2e 100644 --- a/sdk/python/pulumi_gcp/filestore/snapshot.py +++ b/sdk/python/pulumi_gcp/filestore/snapshot.py @@ -391,7 +391,7 @@ def __init__(__self__, location="us-east1", tier="ENTERPRISE", file_shares={ - "capacityGb": 1024, + "capacity_gb": 1024, "name": "share1", }, networks=[{ @@ -414,7 +414,7 @@ def __init__(__self__, location="us-west1", tier="ENTERPRISE", file_shares={ - "capacityGb": 1024, + "capacity_gb": 1024, "name": "share1", }, networks=[{ @@ -506,7 +506,7 @@ def __init__(__self__, location="us-east1", tier="ENTERPRISE", file_shares={ - "capacityGb": 1024, + "capacity_gb": 1024, "name": "share1", }, networks=[{ @@ -529,7 +529,7 @@ def __init__(__self__, location="us-west1", tier="ENTERPRISE", file_shares={ - "capacityGb": 1024, + "capacity_gb": 1024, "name": "share1", }, networks=[{ diff --git a/sdk/python/pulumi_gcp/firebase/android_app.py b/sdk/python/pulumi_gcp/firebase/android_app.py index cfa00f9d3b..70c76cb232 100644 --- a/sdk/python/pulumi_gcp/firebase/android_app.py +++ b/sdk/python/pulumi_gcp/firebase/android_app.py @@ -368,10 +368,10 @@ def __init__(__self__, display_name="Display Name", project="my-project-name", restrictions={ - "androidKeyRestrictions": { - "allowedApplications": [{ - "packageName": "android.package.app", - "sha1Fingerprint": "2145bdf698b8715039bd0e83f2069bed435ac21c", + "android_key_restrictions": { + "allowed_applications": [{ + "package_name": "android.package.app", + "sha1_fingerprint": "2145bdf698b8715039bd0e83f2069bed435ac21c", }], }, }) @@ -469,10 +469,10 @@ def __init__(__self__, display_name="Display Name", project="my-project-name", restrictions={ - "androidKeyRestrictions": { - "allowedApplications": [{ - "packageName": "android.package.app", - "sha1Fingerprint": "2145bdf698b8715039bd0e83f2069bed435ac21c", + "android_key_restrictions": { + "allowed_applications": [{ + "package_name": "android.package.app", + "sha1_fingerprint": "2145bdf698b8715039bd0e83f2069bed435ac21c", }], }, }) diff --git a/sdk/python/pulumi_gcp/firebase/apple_app.py b/sdk/python/pulumi_gcp/firebase/apple_app.py index 8a09502104..d97a267fd2 100644 --- a/sdk/python/pulumi_gcp/firebase/apple_app.py +++ b/sdk/python/pulumi_gcp/firebase/apple_app.py @@ -344,8 +344,8 @@ def __init__(__self__, display_name="Display Name Full", project="my-project-name", restrictions={ - "iosKeyRestrictions": { - "allowedBundleIds": ["apple.app.12345"], + "ios_key_restrictions": { + "allowed_bundle_ids": ["apple.app.12345"], }, }) full = gcp.firebase.AppleApp("full", @@ -439,8 +439,8 @@ def __init__(__self__, display_name="Display Name Full", project="my-project-name", restrictions={ - "iosKeyRestrictions": { - "allowedBundleIds": ["apple.app.12345"], + "ios_key_restrictions": { + "allowed_bundle_ids": ["apple.app.12345"], }, }) full = gcp.firebase.AppleApp("full", diff --git a/sdk/python/pulumi_gcp/firebase/extensions_instance.py b/sdk/python/pulumi_gcp/firebase/extensions_instance.py index 228ac256a9..6994b2f497 100644 --- a/sdk/python/pulumi_gcp/firebase/extensions_instance.py +++ b/sdk/python/pulumi_gcp/firebase/extensions_instance.py @@ -330,26 +330,26 @@ def __init__(__self__, project="my-project-name", instance_id="storage-resize-images", config={ - "extensionRef": "firebase/storage-resize-images", - "extensionVersion": "0.2.2", + "extension_ref": "firebase/storage-resize-images", + "extension_version": "0.2.2", "params": { - "DELETE_ORIGINAL_FILE": "false", - "MAKE_PUBLIC": "false", - "IMAGE_TYPE": "false", - "IS_ANIMATED": "true", - "FUNCTION_MEMORY": "1024", - "DO_BACKFILL": "false", - "IMG_SIZES": "200x200", - "IMG_BUCKET": images.name, + "delet_e__origina_l__file": "false", + "mak_e__public": "false", + "imag_e__type": "false", + "i_s__animated": "true", + "functio_n__memory": "1024", + "d_o__backfill": "false", + "im_g__sizes": "200x200", + "im_g__bucket": images.name, }, - "systemParams": { - "firebaseextensions.v1beta.function/location": "", - "firebaseextensions.v1beta.function/maxInstances": "3000", - "firebaseextensions.v1beta.function/minInstances": "0", - "firebaseextensions.v1beta.function/vpcConnectorEgressSettings": "VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED", + "system_params": { + "firebaseextensions_v1beta_function_location": "", + "firebaseextensions_v1beta_function_max_instances": "3000", + "firebaseextensions_v1beta_function_min_instances": "0", + "firebaseextensions_v1beta_function_vpc_connector_egress_settings": "VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED", }, - "allowedEventTypes": ["firebase.extensions.storage-resize-images.v1.onCompletion"], - "eventarcChannel": "projects/my-project-name/locations//channels/firebase", + "allowed_event_types": ["firebase.extensions.storage-resize-images.v1.onCompletion"], + "eventarc_channel": "projects/my-project-name/locations//channels/firebase", }) ``` @@ -409,26 +409,26 @@ def __init__(__self__, project="my-project-name", instance_id="storage-resize-images", config={ - "extensionRef": "firebase/storage-resize-images", - "extensionVersion": "0.2.2", + "extension_ref": "firebase/storage-resize-images", + "extension_version": "0.2.2", "params": { - "DELETE_ORIGINAL_FILE": "false", - "MAKE_PUBLIC": "false", - "IMAGE_TYPE": "false", - "IS_ANIMATED": "true", - "FUNCTION_MEMORY": "1024", - "DO_BACKFILL": "false", - "IMG_SIZES": "200x200", - "IMG_BUCKET": images.name, + "delet_e__origina_l__file": "false", + "mak_e__public": "false", + "imag_e__type": "false", + "i_s__animated": "true", + "functio_n__memory": "1024", + "d_o__backfill": "false", + "im_g__sizes": "200x200", + "im_g__bucket": images.name, }, - "systemParams": { - "firebaseextensions.v1beta.function/location": "", - "firebaseextensions.v1beta.function/maxInstances": "3000", - "firebaseextensions.v1beta.function/minInstances": "0", - "firebaseextensions.v1beta.function/vpcConnectorEgressSettings": "VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED", + "system_params": { + "firebaseextensions_v1beta_function_location": "", + "firebaseextensions_v1beta_function_max_instances": "3000", + "firebaseextensions_v1beta_function_min_instances": "0", + "firebaseextensions_v1beta_function_vpc_connector_egress_settings": "VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED", }, - "allowedEventTypes": ["firebase.extensions.storage-resize-images.v1.onCompletion"], - "eventarcChannel": "projects/my-project-name/locations//channels/firebase", + "allowed_event_types": ["firebase.extensions.storage-resize-images.v1.onCompletion"], + "eventarc_channel": "projects/my-project-name/locations//channels/firebase", }) ``` diff --git a/sdk/python/pulumi_gcp/firebase/hosting_custom_domain.py b/sdk/python/pulumi_gcp/firebase/hosting_custom_domain.py index c262a5e48d..aa6fb79b69 100644 --- a/sdk/python/pulumi_gcp/firebase/hosting_custom_domain.py +++ b/sdk/python/pulumi_gcp/firebase/hosting_custom_domain.py @@ -648,7 +648,7 @@ def __init__(__self__, "rewrites": [{ "glob": "/hello/**", "run": { - "serviceId": default_service.name, + "service_id": default_service.name, "region": default_service.location, }, }], @@ -774,7 +774,7 @@ def __init__(__self__, "rewrites": [{ "glob": "/hello/**", "run": { - "serviceId": default_service.name, + "service_id": default_service.name, "region": default_service.location, }, }], diff --git a/sdk/python/pulumi_gcp/firebase/hosting_release.py b/sdk/python/pulumi_gcp/firebase/hosting_release.py index 0a7facdbfc..14414525b7 100644 --- a/sdk/python/pulumi_gcp/firebase/hosting_release.py +++ b/sdk/python/pulumi_gcp/firebase/hosting_release.py @@ -303,7 +303,7 @@ def __init__(__self__, config={ "redirects": [{ "glob": "/google/**", - "statusCode": 302, + "status_code": 302, "location": "https://www.google.com", }], }) @@ -326,7 +326,7 @@ def __init__(__self__, config={ "redirects": [{ "glob": "/google/**", - "statusCode": 302, + "status_code": 302, "location": "https://www.google.com", }], }) @@ -427,7 +427,7 @@ def __init__(__self__, config={ "redirects": [{ "glob": "/google/**", - "statusCode": 302, + "status_code": 302, "location": "https://www.google.com", }], }) @@ -450,7 +450,7 @@ def __init__(__self__, config={ "redirects": [{ "glob": "/google/**", - "statusCode": 302, + "status_code": 302, "location": "https://www.google.com", }], }) diff --git a/sdk/python/pulumi_gcp/firebase/hosting_version.py b/sdk/python/pulumi_gcp/firebase/hosting_version.py index 0c4439eb52..6ea4faab82 100644 --- a/sdk/python/pulumi_gcp/firebase/hosting_version.py +++ b/sdk/python/pulumi_gcp/firebase/hosting_version.py @@ -172,7 +172,7 @@ def __init__(__self__, config={ "redirects": [{ "glob": "/google/**", - "statusCode": 302, + "status_code": 302, "location": "https://www.google.com", }], }) @@ -228,7 +228,7 @@ def __init__(__self__, "rewrites": [{ "glob": "/hello/**", "run": { - "serviceId": default_service.name, + "service_id": default_service.name, "region": default_service.location, }, }], @@ -330,7 +330,7 @@ def __init__(__self__, config={ "redirects": [{ "glob": "/google/**", - "statusCode": 302, + "status_code": 302, "location": "https://www.google.com", }], }) @@ -386,7 +386,7 @@ def __init__(__self__, "rewrites": [{ "glob": "/hello/**", "run": { - "serviceId": default_service.name, + "service_id": default_service.name, "region": default_service.location, }, }], diff --git a/sdk/python/pulumi_gcp/firebase/web_app.py b/sdk/python/pulumi_gcp/firebase/web_app.py index def12d99ba..e3361af28e 100644 --- a/sdk/python/pulumi_gcp/firebase/web_app.py +++ b/sdk/python/pulumi_gcp/firebase/web_app.py @@ -259,8 +259,8 @@ def __init__(__self__, name="api-key", display_name="Display Name", restrictions={ - "browserKeyRestrictions": { - "allowedReferrers": ["*"], + "browser_key_restrictions": { + "allowed_referrers": ["*"], }, }) default = gcp.firebase.WebApp("default", @@ -346,8 +346,8 @@ def __init__(__self__, name="api-key", display_name="Display Name", restrictions={ - "browserKeyRestrictions": { - "allowedReferrers": ["*"], + "browser_key_restrictions": { + "allowed_referrers": ["*"], }, }) default = gcp.firebase.WebApp("default", diff --git a/sdk/python/pulumi_gcp/firestore/database.py b/sdk/python/pulumi_gcp/firestore/database.py index 647a99c647..f159d3b8b1 100644 --- a/sdk/python/pulumi_gcp/firestore/database.py +++ b/sdk/python/pulumi_gcp/firestore/database.py @@ -655,7 +655,7 @@ def __init__(__self__, delete_protection_state="DELETE_PROTECTION_ENABLED", deletion_policy="DELETE", cmek_config={ - "kmsKeyName": crypto_key.id, + "kms_key_name": crypto_key.id, }, opts = pulumi.ResourceOptions(depends_on=[firestore_cmek_keyuser])) ``` @@ -717,7 +717,7 @@ def __init__(__self__, delete_protection_state="DELETE_PROTECTION_ENABLED", deletion_policy="DELETE", cmek_config={ - "kmsKeyName": crypto_key.id, + "kms_key_name": crypto_key.id, }, opts = pulumi.ResourceOptions(depends_on=[firestore_cmek_keyuser])) ``` @@ -862,7 +862,7 @@ def __init__(__self__, delete_protection_state="DELETE_PROTECTION_ENABLED", deletion_policy="DELETE", cmek_config={ - "kmsKeyName": crypto_key.id, + "kms_key_name": crypto_key.id, }, opts = pulumi.ResourceOptions(depends_on=[firestore_cmek_keyuser])) ``` @@ -924,7 +924,7 @@ def __init__(__self__, delete_protection_state="DELETE_PROTECTION_ENABLED", deletion_policy="DELETE", cmek_config={ - "kmsKeyName": crypto_key.id, + "kms_key_name": crypto_key.id, }, opts = pulumi.ResourceOptions(depends_on=[firestore_cmek_keyuser])) ``` diff --git a/sdk/python/pulumi_gcp/firestore/field.py b/sdk/python/pulumi_gcp/firestore/field.py index a9b3b078f4..d53ba5fefe 100644 --- a/sdk/python/pulumi_gcp/firestore/field.py +++ b/sdk/python/pulumi_gcp/firestore/field.py @@ -330,10 +330,10 @@ def __init__(__self__, "indexes": [ { "order": "ASCENDING", - "queryScope": "COLLECTION_GROUP", + "query_scope": "COLLECTION_GROUP", }, { - "arrayConfig": "CONTAINS", + "array_config": "CONTAINS", }, ], }) @@ -386,7 +386,7 @@ def __init__(__self__, "order": "DESCENDING", }, { - "arrayConfig": "CONTAINS", + "array_config": "CONTAINS", }, ], }) @@ -468,10 +468,10 @@ def __init__(__self__, "indexes": [ { "order": "ASCENDING", - "queryScope": "COLLECTION_GROUP", + "query_scope": "COLLECTION_GROUP", }, { - "arrayConfig": "CONTAINS", + "array_config": "CONTAINS", }, ], }) @@ -524,7 +524,7 @@ def __init__(__self__, "order": "DESCENDING", }, { - "arrayConfig": "CONTAINS", + "array_config": "CONTAINS", }, ], }) diff --git a/sdk/python/pulumi_gcp/firestore/index.py b/sdk/python/pulumi_gcp/firestore/index.py index 43e65c8750..7b26af28d0 100644 --- a/sdk/python/pulumi_gcp/firestore/index.py +++ b/sdk/python/pulumi_gcp/firestore/index.py @@ -314,11 +314,11 @@ def __init__(__self__, collection="atestcollection", fields=[ { - "fieldPath": "name", + "field_path": "name", "order": "ASCENDING", }, { - "fieldPath": "description", + "field_path": "description", "order": "DESCENDING", }, ]) @@ -344,11 +344,11 @@ def __init__(__self__, api_scope="DATASTORE_MODE_API", fields=[ { - "fieldPath": "name", + "field_path": "name", "order": "ASCENDING", }, { - "fieldPath": "description", + "field_path": "description", "order": "DESCENDING", }, ]) @@ -372,16 +372,16 @@ def __init__(__self__, collection="atestcollection", fields=[ { - "fieldPath": "field_name", + "field_path": "field_name", "order": "ASCENDING", }, { - "fieldPath": "__name__", + "field_path": "__name__", "order": "ASCENDING", }, { - "fieldPath": "description", - "vectorConfig": { + "field_path": "description", + "vector_config": { "dimension": 128, "flat": {}, }, @@ -462,11 +462,11 @@ def __init__(__self__, collection="atestcollection", fields=[ { - "fieldPath": "name", + "field_path": "name", "order": "ASCENDING", }, { - "fieldPath": "description", + "field_path": "description", "order": "DESCENDING", }, ]) @@ -492,11 +492,11 @@ def __init__(__self__, api_scope="DATASTORE_MODE_API", fields=[ { - "fieldPath": "name", + "field_path": "name", "order": "ASCENDING", }, { - "fieldPath": "description", + "field_path": "description", "order": "DESCENDING", }, ]) @@ -520,16 +520,16 @@ def __init__(__self__, collection="atestcollection", fields=[ { - "fieldPath": "field_name", + "field_path": "field_name", "order": "ASCENDING", }, { - "fieldPath": "__name__", + "field_path": "__name__", "order": "ASCENDING", }, { - "fieldPath": "description", - "vectorConfig": { + "field_path": "description", + "vector_config": { "dimension": 128, "flat": {}, }, diff --git a/sdk/python/pulumi_gcp/folder/access_approval_settings.py b/sdk/python/pulumi_gcp/folder/access_approval_settings.py index e50dcbb0a9..8ed47dad3e 100644 --- a/sdk/python/pulumi_gcp/folder/access_approval_settings.py +++ b/sdk/python/pulumi_gcp/folder/access_approval_settings.py @@ -297,7 +297,7 @@ def __init__(__self__, "example.user@example.com", ], enrolled_services=[{ - "cloudProduct": "all", + "cloud_product": "all", }]) ``` ### Folder Access Approval Active Key Version @@ -334,7 +334,7 @@ def __init__(__self__, folder_id=my_folder.folder_id, active_key_version=crypto_key_version.name, enrolled_services=[{ - "cloudProduct": "all", + "cloud_product": "all", }], opts = pulumi.ResourceOptions(depends_on=[iam])) ``` @@ -403,7 +403,7 @@ def __init__(__self__, "example.user@example.com", ], enrolled_services=[{ - "cloudProduct": "all", + "cloud_product": "all", }]) ``` ### Folder Access Approval Active Key Version @@ -440,7 +440,7 @@ def __init__(__self__, folder_id=my_folder.folder_id, active_key_version=crypto_key_version.name, enrolled_services=[{ - "cloudProduct": "all", + "cloud_product": "all", }], opts = pulumi.ResourceOptions(depends_on=[iam])) ``` diff --git a/sdk/python/pulumi_gcp/folder/iam_audit_config.py b/sdk/python/pulumi_gcp/folder/iam_audit_config.py index 2ac2e6c35f..2467bb67ef 100644 --- a/sdk/python/pulumi_gcp/folder/iam_audit_config.py +++ b/sdk/python/pulumi_gcp/folder/iam_audit_config.py @@ -279,11 +279,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -400,11 +400,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -574,11 +574,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -695,11 +695,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` diff --git a/sdk/python/pulumi_gcp/folder/iam_member.py b/sdk/python/pulumi_gcp/folder/iam_member.py index a69f6a1c7b..bd9f5a4c35 100644 --- a/sdk/python/pulumi_gcp/folder/iam_member.py +++ b/sdk/python/pulumi_gcp/folder/iam_member.py @@ -344,11 +344,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -465,11 +465,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -648,11 +648,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -769,11 +769,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` diff --git a/sdk/python/pulumi_gcp/folder/iam_policy.py b/sdk/python/pulumi_gcp/folder/iam_policy.py index 7327cbd680..972cf4914d 100644 --- a/sdk/python/pulumi_gcp/folder/iam_policy.py +++ b/sdk/python/pulumi_gcp/folder/iam_policy.py @@ -273,11 +273,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -394,11 +394,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -574,11 +574,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -695,11 +695,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` diff --git a/sdk/python/pulumi_gcp/folder/organization_policy.py b/sdk/python/pulumi_gcp/folder/organization_policy.py index 19ff9dd0ff..e265b1660a 100644 --- a/sdk/python/pulumi_gcp/folder/organization_policy.py +++ b/sdk/python/pulumi_gcp/folder/organization_policy.py @@ -353,7 +353,7 @@ def __init__(__self__, folder="folders/123456789", constraint="serviceuser.services", list_policy={ - "suggestedValue": "compute.googleapis.com", + "suggested_value": "compute.googleapis.com", "deny": { "values": ["cloudresourcemanager.googleapis.com"], }, @@ -468,7 +468,7 @@ def __init__(__self__, folder="folders/123456789", constraint="serviceuser.services", list_policy={ - "suggestedValue": "compute.googleapis.com", + "suggested_value": "compute.googleapis.com", "deny": { "values": ["cloudresourcemanager.googleapis.com"], }, diff --git a/sdk/python/pulumi_gcp/gkebackup/backup_plan.py b/sdk/python/pulumi_gcp/gkebackup/backup_plan.py index 828d73b318..5265c5d1a7 100644 --- a/sdk/python/pulumi_gcp/gkebackup/backup_plan.py +++ b/sdk/python/pulumi_gcp/gkebackup/backup_plan.py @@ -574,10 +574,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -589,9 +589,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) ``` ### Gkebackup Backupplan Autopilot @@ -609,7 +609,7 @@ def __init__(__self__, "channel": "RAPID", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -621,9 +621,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) ``` ### Gkebackup Backupplan Cmek @@ -637,10 +637,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -658,16 +658,16 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "selectedNamespaces": { + "include_volume_data": True, + "include_secrets": True, + "selected_namespaces": { "namespaces": [ "default", "test", ], }, - "encryptionKey": { - "gcpKmsEncryptionKey": crypto_key.id, + "encryption_key": { + "gcp_kms_encryption_key": crypto_key.id, }, }) ``` @@ -682,10 +682,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -697,17 +697,17 @@ def __init__(__self__, cluster=primary.id, location="us-central1", retention_policy={ - "backupDeleteLockDays": 30, - "backupRetainDays": 180, + "backup_delete_lock_days": 30, + "backup_retain_days": 180, }, backup_schedule={ - "cronSchedule": "0 9 * * 1", + "cron_schedule": "0 9 * * 1", }, backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "selectedApplications": { - "namespacedNames": [ + "include_volume_data": True, + "include_secrets": True, + "selected_applications": { + "namespaced_names": [ { "name": "app1", "namespace": "ns1", @@ -731,10 +731,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -746,18 +746,18 @@ def __init__(__self__, cluster=primary.id, location="us-central1", retention_policy={ - "backupDeleteLockDays": 30, - "backupRetainDays": 180, + "backup_delete_lock_days": 30, + "backup_retain_days": 180, }, backup_schedule={ - "cronSchedule": "0 9 * * 1", + "cron_schedule": "0 9 * * 1", }, backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "permissiveMode": True, - "selectedApplications": { - "namespacedNames": [ + "include_volume_data": True, + "include_secrets": True, + "permissive_mode": True, + "selected_applications": { + "namespaced_names": [ { "name": "app1", "namespace": "ns1", @@ -781,10 +781,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -796,30 +796,30 @@ def __init__(__self__, cluster=primary.id, location="us-central1", retention_policy={ - "backupDeleteLockDays": 30, - "backupRetainDays": 180, + "backup_delete_lock_days": 30, + "backup_retain_days": 180, }, backup_schedule={ "paused": True, - "rpoConfig": { - "targetRpoMinutes": 1440, - "exclusionWindows": [ + "rpo_config": { + "target_rpo_minutes": 1440, + "exclusion_windows": [ { - "startTime": { + "start_time": { "hours": 12, }, "duration": "7200s", "daily": True, }, { - "startTime": { + "start_time": { "hours": 8, "minutes": 40, "seconds": 1, "nanos": 100, }, "duration": "3600s", - "singleOccurrenceDate": { + "single_occurrence_date": { "year": 2024, "month": 3, "day": 16, @@ -829,9 +829,9 @@ def __init__(__self__, }, }, backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) ``` ### Gkebackup Backupplan Rpo Weekly Window @@ -845,10 +845,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -860,45 +860,45 @@ def __init__(__self__, cluster=primary.id, location="us-central1", retention_policy={ - "backupDeleteLockDays": 30, - "backupRetainDays": 180, + "backup_delete_lock_days": 30, + "backup_retain_days": 180, }, backup_schedule={ "paused": True, - "rpoConfig": { - "targetRpoMinutes": 1440, - "exclusionWindows": [ + "rpo_config": { + "target_rpo_minutes": 1440, + "exclusion_windows": [ { - "startTime": { + "start_time": { "hours": 1, "minutes": 23, }, "duration": "1800s", - "daysOfWeek": { - "daysOfWeeks": [ + "days_of_week": { + "days_of_weeks": [ "MONDAY", "THURSDAY", ], }, }, { - "startTime": { + "start_time": { "hours": 12, }, "duration": "3600s", - "singleOccurrenceDate": { + "single_occurrence_date": { "year": 2024, "month": 3, "day": 17, }, }, { - "startTime": { + "start_time": { "hours": 8, "minutes": 40, }, "duration": "600s", - "singleOccurrenceDate": { + "single_occurrence_date": { "year": 2024, "month": 3, "day": 18, @@ -908,9 +908,9 @@ def __init__(__self__, }, }, backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) ``` @@ -994,10 +994,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -1009,9 +1009,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) ``` ### Gkebackup Backupplan Autopilot @@ -1029,7 +1029,7 @@ def __init__(__self__, "channel": "RAPID", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -1041,9 +1041,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) ``` ### Gkebackup Backupplan Cmek @@ -1057,10 +1057,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -1078,16 +1078,16 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "selectedNamespaces": { + "include_volume_data": True, + "include_secrets": True, + "selected_namespaces": { "namespaces": [ "default", "test", ], }, - "encryptionKey": { - "gcpKmsEncryptionKey": crypto_key.id, + "encryption_key": { + "gcp_kms_encryption_key": crypto_key.id, }, }) ``` @@ -1102,10 +1102,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -1117,17 +1117,17 @@ def __init__(__self__, cluster=primary.id, location="us-central1", retention_policy={ - "backupDeleteLockDays": 30, - "backupRetainDays": 180, + "backup_delete_lock_days": 30, + "backup_retain_days": 180, }, backup_schedule={ - "cronSchedule": "0 9 * * 1", + "cron_schedule": "0 9 * * 1", }, backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "selectedApplications": { - "namespacedNames": [ + "include_volume_data": True, + "include_secrets": True, + "selected_applications": { + "namespaced_names": [ { "name": "app1", "namespace": "ns1", @@ -1151,10 +1151,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -1166,18 +1166,18 @@ def __init__(__self__, cluster=primary.id, location="us-central1", retention_policy={ - "backupDeleteLockDays": 30, - "backupRetainDays": 180, + "backup_delete_lock_days": 30, + "backup_retain_days": 180, }, backup_schedule={ - "cronSchedule": "0 9 * * 1", + "cron_schedule": "0 9 * * 1", }, backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "permissiveMode": True, - "selectedApplications": { - "namespacedNames": [ + "include_volume_data": True, + "include_secrets": True, + "permissive_mode": True, + "selected_applications": { + "namespaced_names": [ { "name": "app1", "namespace": "ns1", @@ -1201,10 +1201,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -1216,30 +1216,30 @@ def __init__(__self__, cluster=primary.id, location="us-central1", retention_policy={ - "backupDeleteLockDays": 30, - "backupRetainDays": 180, + "backup_delete_lock_days": 30, + "backup_retain_days": 180, }, backup_schedule={ "paused": True, - "rpoConfig": { - "targetRpoMinutes": 1440, - "exclusionWindows": [ + "rpo_config": { + "target_rpo_minutes": 1440, + "exclusion_windows": [ { - "startTime": { + "start_time": { "hours": 12, }, "duration": "7200s", "daily": True, }, { - "startTime": { + "start_time": { "hours": 8, "minutes": 40, "seconds": 1, "nanos": 100, }, "duration": "3600s", - "singleOccurrenceDate": { + "single_occurrence_date": { "year": 2024, "month": 3, "day": 16, @@ -1249,9 +1249,9 @@ def __init__(__self__, }, }, backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) ``` ### Gkebackup Backupplan Rpo Weekly Window @@ -1265,10 +1265,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -1280,45 +1280,45 @@ def __init__(__self__, cluster=primary.id, location="us-central1", retention_policy={ - "backupDeleteLockDays": 30, - "backupRetainDays": 180, + "backup_delete_lock_days": 30, + "backup_retain_days": 180, }, backup_schedule={ "paused": True, - "rpoConfig": { - "targetRpoMinutes": 1440, - "exclusionWindows": [ + "rpo_config": { + "target_rpo_minutes": 1440, + "exclusion_windows": [ { - "startTime": { + "start_time": { "hours": 1, "minutes": 23, }, "duration": "1800s", - "daysOfWeek": { - "daysOfWeeks": [ + "days_of_week": { + "days_of_weeks": [ "MONDAY", "THURSDAY", ], }, }, { - "startTime": { + "start_time": { "hours": 12, }, "duration": "3600s", - "singleOccurrenceDate": { + "single_occurrence_date": { "year": 2024, "month": 3, "day": 17, }, }, { - "startTime": { + "start_time": { "hours": 8, "minutes": 40, }, "duration": "600s", - "singleOccurrenceDate": { + "single_occurrence_date": { "year": 2024, "month": 3, "day": 18, @@ -1328,9 +1328,9 @@ def __init__(__self__, }, }, backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) ``` diff --git a/sdk/python/pulumi_gcp/gkebackup/restore_plan.py b/sdk/python/pulumi_gcp/gkebackup/restore_plan.py index f162700945..8c0bf6c3a0 100644 --- a/sdk/python/pulumi_gcp/gkebackup/restore_plan.py +++ b/sdk/python/pulumi_gcp/gkebackup/restore_plan.py @@ -412,10 +412,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -427,9 +427,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) all_ns = gcp.gkebackup.RestorePlan("all_ns", name="restore-all-ns", @@ -437,13 +437,13 @@ def __init__(__self__, backup_plan=basic.id, cluster=primary.id, restore_config={ - "allNamespaces": True, - "namespacedResourceRestoreMode": "FAIL_ON_CONFLICT", - "volumeDataRestorePolicy": "RESTORE_VOLUME_DATA_FROM_BACKUP", - "clusterResourceRestoreScope": { - "allGroupKinds": True, + "all_namespaces": True, + "namespaced_resource_restore_mode": "FAIL_ON_CONFLICT", + "volume_data_restore_policy": "RESTORE_VOLUME_DATA_FROM_BACKUP", + "cluster_resource_restore_scope": { + "all_group_kinds": True, }, - "clusterResourceConflictPolicy": "USE_EXISTING_VERSION", + "cluster_resource_conflict_policy": "USE_EXISTING_VERSION", }) ``` ### Gkebackup Restoreplan Rollback Namespace @@ -457,10 +457,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -472,9 +472,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) rollback_ns = gcp.gkebackup.RestorePlan("rollback_ns", name="rollback-ns-rp", @@ -482,24 +482,24 @@ def __init__(__self__, backup_plan=basic.id, cluster=primary.id, restore_config={ - "selectedNamespaces": { + "selected_namespaces": { "namespaces": ["my-ns"], }, - "namespacedResourceRestoreMode": "DELETE_AND_RESTORE", - "volumeDataRestorePolicy": "RESTORE_VOLUME_DATA_FROM_BACKUP", - "clusterResourceRestoreScope": { - "selectedGroupKinds": [ + "namespaced_resource_restore_mode": "DELETE_AND_RESTORE", + "volume_data_restore_policy": "RESTORE_VOLUME_DATA_FROM_BACKUP", + "cluster_resource_restore_scope": { + "selected_group_kinds": [ { - "resourceGroup": "apiextension.k8s.io", - "resourceKind": "CustomResourceDefinition", + "resource_group": "apiextension.k8s.io", + "resource_kind": "CustomResourceDefinition", }, { - "resourceGroup": "storage.k8s.io", - "resourceKind": "StorageClass", + "resource_group": "storage.k8s.io", + "resource_kind": "StorageClass", }, ], }, - "clusterResourceConflictPolicy": "USE_EXISTING_VERSION", + "cluster_resource_conflict_policy": "USE_EXISTING_VERSION", }) ``` ### Gkebackup Restoreplan Protected Application @@ -513,10 +513,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -528,9 +528,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) rollback_app = gcp.gkebackup.RestorePlan("rollback_app", name="rollback-app-rp", @@ -538,16 +538,16 @@ def __init__(__self__, backup_plan=basic.id, cluster=primary.id, restore_config={ - "selectedApplications": { - "namespacedNames": [{ + "selected_applications": { + "namespaced_names": [{ "name": "my-app", "namespace": "my-ns", }], }, - "namespacedResourceRestoreMode": "DELETE_AND_RESTORE", - "volumeDataRestorePolicy": "REUSE_VOLUME_HANDLE_FROM_BACKUP", - "clusterResourceRestoreScope": { - "noGroupKinds": True, + "namespaced_resource_restore_mode": "DELETE_AND_RESTORE", + "volume_data_restore_policy": "REUSE_VOLUME_HANDLE_FROM_BACKUP", + "cluster_resource_restore_scope": { + "no_group_kinds": True, }, }) ``` @@ -562,10 +562,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -577,9 +577,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) all_cluster_resources = gcp.gkebackup.RestorePlan("all_cluster_resources", name="all-groupkinds-rp", @@ -587,12 +587,12 @@ def __init__(__self__, backup_plan=basic.id, cluster=primary.id, restore_config={ - "noNamespaces": True, - "namespacedResourceRestoreMode": "FAIL_ON_CONFLICT", - "clusterResourceRestoreScope": { - "allGroupKinds": True, + "no_namespaces": True, + "namespaced_resource_restore_mode": "FAIL_ON_CONFLICT", + "cluster_resource_restore_scope": { + "all_group_kinds": True, }, - "clusterResourceConflictPolicy": "USE_EXISTING_VERSION", + "cluster_resource_conflict_policy": "USE_EXISTING_VERSION", }) ``` ### Gkebackup Restoreplan Rename Namespace @@ -606,10 +606,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -621,9 +621,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) rename_ns = gcp.gkebackup.RestorePlan("rename_ns", name="rename-ns-rp", @@ -631,24 +631,24 @@ def __init__(__self__, backup_plan=basic.id, cluster=primary.id, restore_config={ - "selectedNamespaces": { + "selected_namespaces": { "namespaces": ["ns1"], }, - "namespacedResourceRestoreMode": "FAIL_ON_CONFLICT", - "volumeDataRestorePolicy": "REUSE_VOLUME_HANDLE_FROM_BACKUP", - "clusterResourceRestoreScope": { - "noGroupKinds": True, + "namespaced_resource_restore_mode": "FAIL_ON_CONFLICT", + "volume_data_restore_policy": "REUSE_VOLUME_HANDLE_FROM_BACKUP", + "cluster_resource_restore_scope": { + "no_group_kinds": True, }, - "transformationRules": [ + "transformation_rules": [ { "description": "rename namespace from ns1 to ns2", - "resourceFilter": { - "groupKinds": [{ - "resourceKind": "Namespace", + "resource_filter": { + "group_kinds": [{ + "resource_kind": "Namespace", }], - "jsonPath": ".metadata[?(@.name == 'ns1')]", + "json_path": ".metadata[?(@.name == 'ns1')]", }, - "fieldActions": [{ + "field_actions": [{ "op": "REPLACE", "path": "/metadata/name", "value": "ns2", @@ -656,10 +656,10 @@ def __init__(__self__, }, { "description": "move all resources from ns1 to ns2", - "resourceFilter": { + "resource_filter": { "namespaces": ["ns1"], }, - "fieldActions": [{ + "field_actions": [{ "op": "REPLACE", "path": "/metadata/namespace", "value": "ns2", @@ -679,10 +679,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -694,9 +694,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) transform_rule = gcp.gkebackup.RestorePlan("transform_rule", name="transform-rule-rp", @@ -708,31 +708,31 @@ def __init__(__self__, backup_plan=basic.id, cluster=primary.id, restore_config={ - "excludedNamespaces": { + "excluded_namespaces": { "namespaces": ["my-ns"], }, - "namespacedResourceRestoreMode": "DELETE_AND_RESTORE", - "volumeDataRestorePolicy": "RESTORE_VOLUME_DATA_FROM_BACKUP", - "clusterResourceRestoreScope": { - "excludedGroupKinds": [{ - "resourceGroup": "apiextension.k8s.io", - "resourceKind": "CustomResourceDefinition", + "namespaced_resource_restore_mode": "DELETE_AND_RESTORE", + "volume_data_restore_policy": "RESTORE_VOLUME_DATA_FROM_BACKUP", + "cluster_resource_restore_scope": { + "excluded_group_kinds": [{ + "resource_group": "apiextension.k8s.io", + "resource_kind": "CustomResourceDefinition", }], }, - "clusterResourceConflictPolicy": "USE_EXISTING_VERSION", - "transformationRules": [{ + "cluster_resource_conflict_policy": "USE_EXISTING_VERSION", + "transformation_rules": [{ "description": "Copy environment variables from the nginx container to the install init container.", - "resourceFilter": { - "groupKinds": [{ - "resourceKind": "Pod", - "resourceGroup": "", + "resource_filter": { + "group_kinds": [{ + "resource_kind": "Pod", + "resource_group": "", }], - "jsonPath": ".metadata[?(@.name == 'nginx')]", + "json_path": ".metadata[?(@.name == 'nginx')]", }, - "fieldActions": [{ + "field_actions": [{ "op": "COPY", "path": "/spec/initContainers/0/env", - "fromPath": "/spec/containers/0/env", + "from_path": "/spec/containers/0/env", }], }], }) @@ -748,10 +748,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -763,9 +763,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) gitops_mode = gcp.gkebackup.RestorePlan("gitops_mode", name="gitops-mode", @@ -773,13 +773,13 @@ def __init__(__self__, backup_plan=basic.id, cluster=primary.id, restore_config={ - "allNamespaces": True, - "namespacedResourceRestoreMode": "MERGE_SKIP_ON_CONFLICT", - "volumeDataRestorePolicy": "RESTORE_VOLUME_DATA_FROM_BACKUP", - "clusterResourceRestoreScope": { - "allGroupKinds": True, + "all_namespaces": True, + "namespaced_resource_restore_mode": "MERGE_SKIP_ON_CONFLICT", + "volume_data_restore_policy": "RESTORE_VOLUME_DATA_FROM_BACKUP", + "cluster_resource_restore_scope": { + "all_group_kinds": True, }, - "clusterResourceConflictPolicy": "USE_EXISTING_VERSION", + "cluster_resource_conflict_policy": "USE_EXISTING_VERSION", }) ``` ### Gkebackup Restoreplan Restore Order @@ -793,10 +793,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -808,9 +808,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) restore_order = gcp.gkebackup.RestorePlan("restore_order", name="restore-order", @@ -818,33 +818,33 @@ def __init__(__self__, backup_plan=basic.id, cluster=primary.id, restore_config={ - "allNamespaces": True, - "namespacedResourceRestoreMode": "FAIL_ON_CONFLICT", - "volumeDataRestorePolicy": "RESTORE_VOLUME_DATA_FROM_BACKUP", - "clusterResourceRestoreScope": { - "allGroupKinds": True, + "all_namespaces": True, + "namespaced_resource_restore_mode": "FAIL_ON_CONFLICT", + "volume_data_restore_policy": "RESTORE_VOLUME_DATA_FROM_BACKUP", + "cluster_resource_restore_scope": { + "all_group_kinds": True, }, - "clusterResourceConflictPolicy": "USE_EXISTING_VERSION", - "restoreOrder": { - "groupKindDependencies": [ + "cluster_resource_conflict_policy": "USE_EXISTING_VERSION", + "restore_order": { + "group_kind_dependencies": [ { "satisfying": { - "resourceGroup": "stable.example.com", - "resourceKind": "kindA", + "resource_group": "stable.example.com", + "resource_kind": "kindA", }, "requiring": { - "resourceGroup": "stable.example.com", - "resourceKind": "kindB", + "resource_group": "stable.example.com", + "resource_kind": "kindB", }, }, { "satisfying": { - "resourceGroup": "stable.example.com", - "resourceKind": "kindB", + "resource_group": "stable.example.com", + "resource_kind": "kindB", }, "requiring": { - "resourceGroup": "stable.example.com", - "resourceKind": "kindC", + "resource_group": "stable.example.com", + "resource_kind": "kindC", }, }, ], @@ -862,10 +862,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -877,9 +877,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) volume_res = gcp.gkebackup.RestorePlan("volume_res", name="volume-res", @@ -887,16 +887,16 @@ def __init__(__self__, backup_plan=basic.id, cluster=primary.id, restore_config={ - "allNamespaces": True, - "namespacedResourceRestoreMode": "FAIL_ON_CONFLICT", - "volumeDataRestorePolicy": "NO_VOLUME_DATA_RESTORATION", - "clusterResourceRestoreScope": { - "allGroupKinds": True, + "all_namespaces": True, + "namespaced_resource_restore_mode": "FAIL_ON_CONFLICT", + "volume_data_restore_policy": "NO_VOLUME_DATA_RESTORATION", + "cluster_resource_restore_scope": { + "all_group_kinds": True, }, - "clusterResourceConflictPolicy": "USE_EXISTING_VERSION", - "volumeDataRestorePolicyBindings": [{ + "cluster_resource_conflict_policy": "USE_EXISTING_VERSION", + "volume_data_restore_policy_bindings": [{ "policy": "RESTORE_VOLUME_DATA_FROM_BACKUP", - "volumeType": "GCE_PERSISTENT_DISK", + "volume_type": "GCE_PERSISTENT_DISK", }], }) ``` @@ -967,10 +967,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -982,9 +982,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) all_ns = gcp.gkebackup.RestorePlan("all_ns", name="restore-all-ns", @@ -992,13 +992,13 @@ def __init__(__self__, backup_plan=basic.id, cluster=primary.id, restore_config={ - "allNamespaces": True, - "namespacedResourceRestoreMode": "FAIL_ON_CONFLICT", - "volumeDataRestorePolicy": "RESTORE_VOLUME_DATA_FROM_BACKUP", - "clusterResourceRestoreScope": { - "allGroupKinds": True, + "all_namespaces": True, + "namespaced_resource_restore_mode": "FAIL_ON_CONFLICT", + "volume_data_restore_policy": "RESTORE_VOLUME_DATA_FROM_BACKUP", + "cluster_resource_restore_scope": { + "all_group_kinds": True, }, - "clusterResourceConflictPolicy": "USE_EXISTING_VERSION", + "cluster_resource_conflict_policy": "USE_EXISTING_VERSION", }) ``` ### Gkebackup Restoreplan Rollback Namespace @@ -1012,10 +1012,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -1027,9 +1027,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) rollback_ns = gcp.gkebackup.RestorePlan("rollback_ns", name="rollback-ns-rp", @@ -1037,24 +1037,24 @@ def __init__(__self__, backup_plan=basic.id, cluster=primary.id, restore_config={ - "selectedNamespaces": { + "selected_namespaces": { "namespaces": ["my-ns"], }, - "namespacedResourceRestoreMode": "DELETE_AND_RESTORE", - "volumeDataRestorePolicy": "RESTORE_VOLUME_DATA_FROM_BACKUP", - "clusterResourceRestoreScope": { - "selectedGroupKinds": [ + "namespaced_resource_restore_mode": "DELETE_AND_RESTORE", + "volume_data_restore_policy": "RESTORE_VOLUME_DATA_FROM_BACKUP", + "cluster_resource_restore_scope": { + "selected_group_kinds": [ { - "resourceGroup": "apiextension.k8s.io", - "resourceKind": "CustomResourceDefinition", + "resource_group": "apiextension.k8s.io", + "resource_kind": "CustomResourceDefinition", }, { - "resourceGroup": "storage.k8s.io", - "resourceKind": "StorageClass", + "resource_group": "storage.k8s.io", + "resource_kind": "StorageClass", }, ], }, - "clusterResourceConflictPolicy": "USE_EXISTING_VERSION", + "cluster_resource_conflict_policy": "USE_EXISTING_VERSION", }) ``` ### Gkebackup Restoreplan Protected Application @@ -1068,10 +1068,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -1083,9 +1083,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) rollback_app = gcp.gkebackup.RestorePlan("rollback_app", name="rollback-app-rp", @@ -1093,16 +1093,16 @@ def __init__(__self__, backup_plan=basic.id, cluster=primary.id, restore_config={ - "selectedApplications": { - "namespacedNames": [{ + "selected_applications": { + "namespaced_names": [{ "name": "my-app", "namespace": "my-ns", }], }, - "namespacedResourceRestoreMode": "DELETE_AND_RESTORE", - "volumeDataRestorePolicy": "REUSE_VOLUME_HANDLE_FROM_BACKUP", - "clusterResourceRestoreScope": { - "noGroupKinds": True, + "namespaced_resource_restore_mode": "DELETE_AND_RESTORE", + "volume_data_restore_policy": "REUSE_VOLUME_HANDLE_FROM_BACKUP", + "cluster_resource_restore_scope": { + "no_group_kinds": True, }, }) ``` @@ -1117,10 +1117,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -1132,9 +1132,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) all_cluster_resources = gcp.gkebackup.RestorePlan("all_cluster_resources", name="all-groupkinds-rp", @@ -1142,12 +1142,12 @@ def __init__(__self__, backup_plan=basic.id, cluster=primary.id, restore_config={ - "noNamespaces": True, - "namespacedResourceRestoreMode": "FAIL_ON_CONFLICT", - "clusterResourceRestoreScope": { - "allGroupKinds": True, + "no_namespaces": True, + "namespaced_resource_restore_mode": "FAIL_ON_CONFLICT", + "cluster_resource_restore_scope": { + "all_group_kinds": True, }, - "clusterResourceConflictPolicy": "USE_EXISTING_VERSION", + "cluster_resource_conflict_policy": "USE_EXISTING_VERSION", }) ``` ### Gkebackup Restoreplan Rename Namespace @@ -1161,10 +1161,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -1176,9 +1176,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) rename_ns = gcp.gkebackup.RestorePlan("rename_ns", name="rename-ns-rp", @@ -1186,24 +1186,24 @@ def __init__(__self__, backup_plan=basic.id, cluster=primary.id, restore_config={ - "selectedNamespaces": { + "selected_namespaces": { "namespaces": ["ns1"], }, - "namespacedResourceRestoreMode": "FAIL_ON_CONFLICT", - "volumeDataRestorePolicy": "REUSE_VOLUME_HANDLE_FROM_BACKUP", - "clusterResourceRestoreScope": { - "noGroupKinds": True, + "namespaced_resource_restore_mode": "FAIL_ON_CONFLICT", + "volume_data_restore_policy": "REUSE_VOLUME_HANDLE_FROM_BACKUP", + "cluster_resource_restore_scope": { + "no_group_kinds": True, }, - "transformationRules": [ + "transformation_rules": [ { "description": "rename namespace from ns1 to ns2", - "resourceFilter": { - "groupKinds": [{ - "resourceKind": "Namespace", + "resource_filter": { + "group_kinds": [{ + "resource_kind": "Namespace", }], - "jsonPath": ".metadata[?(@.name == 'ns1')]", + "json_path": ".metadata[?(@.name == 'ns1')]", }, - "fieldActions": [{ + "field_actions": [{ "op": "REPLACE", "path": "/metadata/name", "value": "ns2", @@ -1211,10 +1211,10 @@ def __init__(__self__, }, { "description": "move all resources from ns1 to ns2", - "resourceFilter": { + "resource_filter": { "namespaces": ["ns1"], }, - "fieldActions": [{ + "field_actions": [{ "op": "REPLACE", "path": "/metadata/namespace", "value": "ns2", @@ -1234,10 +1234,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -1249,9 +1249,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) transform_rule = gcp.gkebackup.RestorePlan("transform_rule", name="transform-rule-rp", @@ -1263,31 +1263,31 @@ def __init__(__self__, backup_plan=basic.id, cluster=primary.id, restore_config={ - "excludedNamespaces": { + "excluded_namespaces": { "namespaces": ["my-ns"], }, - "namespacedResourceRestoreMode": "DELETE_AND_RESTORE", - "volumeDataRestorePolicy": "RESTORE_VOLUME_DATA_FROM_BACKUP", - "clusterResourceRestoreScope": { - "excludedGroupKinds": [{ - "resourceGroup": "apiextension.k8s.io", - "resourceKind": "CustomResourceDefinition", + "namespaced_resource_restore_mode": "DELETE_AND_RESTORE", + "volume_data_restore_policy": "RESTORE_VOLUME_DATA_FROM_BACKUP", + "cluster_resource_restore_scope": { + "excluded_group_kinds": [{ + "resource_group": "apiextension.k8s.io", + "resource_kind": "CustomResourceDefinition", }], }, - "clusterResourceConflictPolicy": "USE_EXISTING_VERSION", - "transformationRules": [{ + "cluster_resource_conflict_policy": "USE_EXISTING_VERSION", + "transformation_rules": [{ "description": "Copy environment variables from the nginx container to the install init container.", - "resourceFilter": { - "groupKinds": [{ - "resourceKind": "Pod", - "resourceGroup": "", + "resource_filter": { + "group_kinds": [{ + "resource_kind": "Pod", + "resource_group": "", }], - "jsonPath": ".metadata[?(@.name == 'nginx')]", + "json_path": ".metadata[?(@.name == 'nginx')]", }, - "fieldActions": [{ + "field_actions": [{ "op": "COPY", "path": "/spec/initContainers/0/env", - "fromPath": "/spec/containers/0/env", + "from_path": "/spec/containers/0/env", }], }], }) @@ -1303,10 +1303,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -1318,9 +1318,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) gitops_mode = gcp.gkebackup.RestorePlan("gitops_mode", name="gitops-mode", @@ -1328,13 +1328,13 @@ def __init__(__self__, backup_plan=basic.id, cluster=primary.id, restore_config={ - "allNamespaces": True, - "namespacedResourceRestoreMode": "MERGE_SKIP_ON_CONFLICT", - "volumeDataRestorePolicy": "RESTORE_VOLUME_DATA_FROM_BACKUP", - "clusterResourceRestoreScope": { - "allGroupKinds": True, + "all_namespaces": True, + "namespaced_resource_restore_mode": "MERGE_SKIP_ON_CONFLICT", + "volume_data_restore_policy": "RESTORE_VOLUME_DATA_FROM_BACKUP", + "cluster_resource_restore_scope": { + "all_group_kinds": True, }, - "clusterResourceConflictPolicy": "USE_EXISTING_VERSION", + "cluster_resource_conflict_policy": "USE_EXISTING_VERSION", }) ``` ### Gkebackup Restoreplan Restore Order @@ -1348,10 +1348,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -1363,9 +1363,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) restore_order = gcp.gkebackup.RestorePlan("restore_order", name="restore-order", @@ -1373,33 +1373,33 @@ def __init__(__self__, backup_plan=basic.id, cluster=primary.id, restore_config={ - "allNamespaces": True, - "namespacedResourceRestoreMode": "FAIL_ON_CONFLICT", - "volumeDataRestorePolicy": "RESTORE_VOLUME_DATA_FROM_BACKUP", - "clusterResourceRestoreScope": { - "allGroupKinds": True, + "all_namespaces": True, + "namespaced_resource_restore_mode": "FAIL_ON_CONFLICT", + "volume_data_restore_policy": "RESTORE_VOLUME_DATA_FROM_BACKUP", + "cluster_resource_restore_scope": { + "all_group_kinds": True, }, - "clusterResourceConflictPolicy": "USE_EXISTING_VERSION", - "restoreOrder": { - "groupKindDependencies": [ + "cluster_resource_conflict_policy": "USE_EXISTING_VERSION", + "restore_order": { + "group_kind_dependencies": [ { "satisfying": { - "resourceGroup": "stable.example.com", - "resourceKind": "kindA", + "resource_group": "stable.example.com", + "resource_kind": "kindA", }, "requiring": { - "resourceGroup": "stable.example.com", - "resourceKind": "kindB", + "resource_group": "stable.example.com", + "resource_kind": "kindB", }, }, { "satisfying": { - "resourceGroup": "stable.example.com", - "resourceKind": "kindB", + "resource_group": "stable.example.com", + "resource_kind": "kindB", }, "requiring": { - "resourceGroup": "stable.example.com", - "resourceKind": "kindC", + "resource_group": "stable.example.com", + "resource_kind": "kindC", }, }, ], @@ -1417,10 +1417,10 @@ def __init__(__self__, location="us-central1", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, addons_config={ - "gkeBackupAgentConfig": { + "gke_backup_agent_config": { "enabled": True, }, }, @@ -1432,9 +1432,9 @@ def __init__(__self__, cluster=primary.id, location="us-central1", backup_config={ - "includeVolumeData": True, - "includeSecrets": True, - "allNamespaces": True, + "include_volume_data": True, + "include_secrets": True, + "all_namespaces": True, }) volume_res = gcp.gkebackup.RestorePlan("volume_res", name="volume-res", @@ -1442,16 +1442,16 @@ def __init__(__self__, backup_plan=basic.id, cluster=primary.id, restore_config={ - "allNamespaces": True, - "namespacedResourceRestoreMode": "FAIL_ON_CONFLICT", - "volumeDataRestorePolicy": "NO_VOLUME_DATA_RESTORATION", - "clusterResourceRestoreScope": { - "allGroupKinds": True, + "all_namespaces": True, + "namespaced_resource_restore_mode": "FAIL_ON_CONFLICT", + "volume_data_restore_policy": "NO_VOLUME_DATA_RESTORATION", + "cluster_resource_restore_scope": { + "all_group_kinds": True, }, - "clusterResourceConflictPolicy": "USE_EXISTING_VERSION", - "volumeDataRestorePolicyBindings": [{ + "cluster_resource_conflict_policy": "USE_EXISTING_VERSION", + "volume_data_restore_policy_bindings": [{ "policy": "RESTORE_VOLUME_DATA_FROM_BACKUP", - "volumeType": "GCE_PERSISTENT_DISK", + "volume_type": "GCE_PERSISTENT_DISK", }], }) ``` diff --git a/sdk/python/pulumi_gcp/gkehub/feature.py b/sdk/python/pulumi_gcp/gkehub/feature.py index 44ffc604d0..a4a5ed30a3 100644 --- a/sdk/python/pulumi_gcp/gkehub/feature.py +++ b/sdk/python/pulumi_gcp/gkehub/feature.py @@ -415,8 +415,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="my-membership", endpoint={ - "gkeCluster": { - "resourceLink": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }, description="Membership") @@ -425,7 +425,7 @@ def __init__(__self__, location="global", spec={ "multiclusteringress": { - "configMembership": membership.id, + "config_membership": membership.id, }, }) ``` @@ -463,8 +463,8 @@ def __init__(__self__, location="global", spec={ "fleetobservability": { - "loggingConfig": { - "defaultConfig": { + "logging_config": { + "default_config": { "mode": "COPY", }, }, @@ -482,8 +482,8 @@ def __init__(__self__, location="global", spec={ "fleetobservability": { - "loggingConfig": { - "fleetScopeLogsConfig": { + "logging_config": { + "fleet_scope_logs_config": { "mode": "MOVE", }, }, @@ -501,11 +501,11 @@ def __init__(__self__, location="global", spec={ "fleetobservability": { - "loggingConfig": { - "defaultConfig": { + "logging_config": { + "default_config": { "mode": "COPY", }, - "fleetScopeLogsConfig": { + "fleet_scope_logs_config": { "mode": "MOVE", }, }, @@ -538,9 +538,9 @@ def __init__(__self__, location="global", fleet_default_member_config={ "configmanagement": { - "configSync": { + "config_sync": { "git": { - "syncRepo": "https://github.com/hashicorp/terraform", + "sync_repo": "https://github.com/hashicorp/terraform", }, }, }, @@ -557,23 +557,23 @@ def __init__(__self__, location="global", fleet_default_member_config={ "policycontroller": { - "policyControllerHubConfig": { - "installSpec": "INSTALL_SPEC_ENABLED", - "exemptableNamespaces": ["foo"], - "policyContent": { + "policy_controller_hub_config": { + "install_spec": "INSTALL_SPEC_ENABLED", + "exemptable_namespaces": ["foo"], + "policy_content": { "bundles": [{ "bundle": "policy-essentials-v2022", - "exemptedNamespaces": [ + "exempted_namespaces": [ "foo", "bar", ], }], - "templateLibrary": { + "template_library": { "installation": "ALL", }, }, - "auditIntervalSeconds": 30, - "referentialRulesEnabled": True, + "audit_interval_seconds": 30, + "referential_rules_enabled": True, }, }, }) @@ -589,39 +589,39 @@ def __init__(__self__, location="global", fleet_default_member_config={ "policycontroller": { - "policyControllerHubConfig": { - "installSpec": "INSTALL_SPEC_SUSPENDED", - "policyContent": { + "policy_controller_hub_config": { + "install_spec": "INSTALL_SPEC_SUSPENDED", + "policy_content": { "bundles": [ { "bundle": "pci-dss-v3.2.1", - "exemptedNamespaces": [ + "exempted_namespaces": [ "baz", "bar", ], }, { "bundle": "nist-sp-800-190", - "exemptedNamespaces": [], + "exempted_namespaces": [], }, ], - "templateLibrary": { + "template_library": { "installation": "ALL", }, }, - "constraintViolationLimit": 50, - "referentialRulesEnabled": True, - "logDeniesEnabled": True, - "mutationEnabled": True, - "deploymentConfigs": [ + "constraint_violation_limit": 50, + "referential_rules_enabled": True, + "log_denies_enabled": True, + "mutation_enabled": True, + "deployment_configs": [ { "component": "admission", - "replicaCount": 2, - "podAffinity": "ANTI_AFFINITY", + "replica_count": 2, + "pod_affinity": "ANTI_AFFINITY", }, { "component": "audit", - "containerResources": { + "container_resources": { "limits": { "memory": "1Gi", "cpu": "1.5", @@ -631,7 +631,7 @@ def __init__(__self__, "cpu": "150m", }, }, - "podTolerations": [{ + "pod_tolerations": [{ "key": "key1", "operator": "Equal", "value": "value1", @@ -657,14 +657,14 @@ def __init__(__self__, location="global", fleet_default_member_config={ "policycontroller": { - "policyControllerHubConfig": { - "installSpec": "INSTALL_SPEC_ENABLED", - "policyContent": {}, - "constraintViolationLimit": 50, - "referentialRulesEnabled": True, - "logDeniesEnabled": True, - "mutationEnabled": True, - "deploymentConfigs": [{ + "policy_controller_hub_config": { + "install_spec": "INSTALL_SPEC_ENABLED", + "policy_content": {}, + "constraint_violation_limit": 50, + "referential_rules_enabled": True, + "log_denies_enabled": True, + "mutation_enabled": True, + "deployment_configs": [{ "component": "admission", }], "monitoring": {}, @@ -683,8 +683,8 @@ def __init__(__self__, location="global", spec={ "clusterupgrade": { - "upstreamFleets": [], - "postConditions": { + "upstream_fleets": [], + "post_conditions": { "soaking": "60s", }, }, @@ -762,8 +762,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="my-membership", endpoint={ - "gkeCluster": { - "resourceLink": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }, description="Membership") @@ -772,7 +772,7 @@ def __init__(__self__, location="global", spec={ "multiclusteringress": { - "configMembership": membership.id, + "config_membership": membership.id, }, }) ``` @@ -810,8 +810,8 @@ def __init__(__self__, location="global", spec={ "fleetobservability": { - "loggingConfig": { - "defaultConfig": { + "logging_config": { + "default_config": { "mode": "COPY", }, }, @@ -829,8 +829,8 @@ def __init__(__self__, location="global", spec={ "fleetobservability": { - "loggingConfig": { - "fleetScopeLogsConfig": { + "logging_config": { + "fleet_scope_logs_config": { "mode": "MOVE", }, }, @@ -848,11 +848,11 @@ def __init__(__self__, location="global", spec={ "fleetobservability": { - "loggingConfig": { - "defaultConfig": { + "logging_config": { + "default_config": { "mode": "COPY", }, - "fleetScopeLogsConfig": { + "fleet_scope_logs_config": { "mode": "MOVE", }, }, @@ -885,9 +885,9 @@ def __init__(__self__, location="global", fleet_default_member_config={ "configmanagement": { - "configSync": { + "config_sync": { "git": { - "syncRepo": "https://github.com/hashicorp/terraform", + "sync_repo": "https://github.com/hashicorp/terraform", }, }, }, @@ -904,23 +904,23 @@ def __init__(__self__, location="global", fleet_default_member_config={ "policycontroller": { - "policyControllerHubConfig": { - "installSpec": "INSTALL_SPEC_ENABLED", - "exemptableNamespaces": ["foo"], - "policyContent": { + "policy_controller_hub_config": { + "install_spec": "INSTALL_SPEC_ENABLED", + "exemptable_namespaces": ["foo"], + "policy_content": { "bundles": [{ "bundle": "policy-essentials-v2022", - "exemptedNamespaces": [ + "exempted_namespaces": [ "foo", "bar", ], }], - "templateLibrary": { + "template_library": { "installation": "ALL", }, }, - "auditIntervalSeconds": 30, - "referentialRulesEnabled": True, + "audit_interval_seconds": 30, + "referential_rules_enabled": True, }, }, }) @@ -936,39 +936,39 @@ def __init__(__self__, location="global", fleet_default_member_config={ "policycontroller": { - "policyControllerHubConfig": { - "installSpec": "INSTALL_SPEC_SUSPENDED", - "policyContent": { + "policy_controller_hub_config": { + "install_spec": "INSTALL_SPEC_SUSPENDED", + "policy_content": { "bundles": [ { "bundle": "pci-dss-v3.2.1", - "exemptedNamespaces": [ + "exempted_namespaces": [ "baz", "bar", ], }, { "bundle": "nist-sp-800-190", - "exemptedNamespaces": [], + "exempted_namespaces": [], }, ], - "templateLibrary": { + "template_library": { "installation": "ALL", }, }, - "constraintViolationLimit": 50, - "referentialRulesEnabled": True, - "logDeniesEnabled": True, - "mutationEnabled": True, - "deploymentConfigs": [ + "constraint_violation_limit": 50, + "referential_rules_enabled": True, + "log_denies_enabled": True, + "mutation_enabled": True, + "deployment_configs": [ { "component": "admission", - "replicaCount": 2, - "podAffinity": "ANTI_AFFINITY", + "replica_count": 2, + "pod_affinity": "ANTI_AFFINITY", }, { "component": "audit", - "containerResources": { + "container_resources": { "limits": { "memory": "1Gi", "cpu": "1.5", @@ -978,7 +978,7 @@ def __init__(__self__, "cpu": "150m", }, }, - "podTolerations": [{ + "pod_tolerations": [{ "key": "key1", "operator": "Equal", "value": "value1", @@ -1004,14 +1004,14 @@ def __init__(__self__, location="global", fleet_default_member_config={ "policycontroller": { - "policyControllerHubConfig": { - "installSpec": "INSTALL_SPEC_ENABLED", - "policyContent": {}, - "constraintViolationLimit": 50, - "referentialRulesEnabled": True, - "logDeniesEnabled": True, - "mutationEnabled": True, - "deploymentConfigs": [{ + "policy_controller_hub_config": { + "install_spec": "INSTALL_SPEC_ENABLED", + "policy_content": {}, + "constraint_violation_limit": 50, + "referential_rules_enabled": True, + "log_denies_enabled": True, + "mutation_enabled": True, + "deployment_configs": [{ "component": "admission", }], "monitoring": {}, @@ -1030,8 +1030,8 @@ def __init__(__self__, location="global", spec={ "clusterupgrade": { - "upstreamFleets": [], - "postConditions": { + "upstream_fleets": [], + "post_conditions": { "soaking": "60s", }, }, diff --git a/sdk/python/pulumi_gcp/gkehub/feature_membership.py b/sdk/python/pulumi_gcp/gkehub/feature_membership.py index 920fa128f8..7d05947471 100644 --- a/sdk/python/pulumi_gcp/gkehub/feature_membership.py +++ b/sdk/python/pulumi_gcp/gkehub/feature_membership.py @@ -319,8 +319,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="my-membership", endpoint={ - "gkeCluster": { - "resourceLink": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }) feature = gcp.gkehub.Feature("feature", @@ -335,9 +335,9 @@ def __init__(__self__, membership=membership.membership_id, configmanagement={ "version": "1.6.2", - "configSync": { + "config_sync": { "git": { - "syncRepo": "https://github.com/hashicorp/terraform", + "sync_repo": "https://github.com/hashicorp/terraform", }, }, }) @@ -355,8 +355,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="my-membership", endpoint={ - "gkeCluster": { - "resourceLink": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }) feature = gcp.gkehub.Feature("feature", @@ -371,13 +371,13 @@ def __init__(__self__, membership=membership.membership_id, configmanagement={ "version": "1.15.1", - "configSync": { + "config_sync": { "oci": { - "syncRepo": "us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest", - "policyDir": "config-connector", - "syncWaitSecs": "20", - "secretType": "gcpserviceaccount", - "gcpServiceAccountEmail": "sa@project-id.iam.gserviceaccount.com", + "sync_repo": "us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest", + "policy_dir": "config-connector", + "sync_wait_secs": "20", + "secret_type": "gcpserviceaccount", + "gcp_service_account_email": "sa@project-id.iam.gserviceaccount.com", }, }, }) @@ -410,8 +410,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="my-membership", endpoint={ - "gkeCluster": { - "resourceLink": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }) feature = gcp.gkehub.Feature("feature", @@ -440,8 +440,8 @@ def __init__(__self__, membership_id="my-membership", location="us-central1", endpoint={ - "gkeCluster": { - "resourceLink": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }) feature = gcp.gkehub.Feature("feature", @@ -457,9 +457,9 @@ def __init__(__self__, membership_location=membership.location, configmanagement={ "version": "1.6.2", - "configSync": { + "config_sync": { "git": { - "syncRepo": "https://github.com/hashicorp/terraform", + "sync_repo": "https://github.com/hashicorp/terraform", }, }, }) @@ -478,8 +478,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="my-membership", endpoint={ - "gkeCluster": { - "resourceLink": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }) feature = gcp.gkehub.Feature("feature", @@ -490,8 +490,8 @@ def __init__(__self__, feature=feature.name, membership=membership.membership_id, policycontroller={ - "policyControllerHubConfig": { - "installSpec": "INSTALL_SPEC_ENABLED", + "policy_controller_hub_config": { + "install_spec": "INSTALL_SPEC_ENABLED", }, }) ``` @@ -509,8 +509,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="my-membership", endpoint={ - "gkeCluster": { - "resourceLink": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }) feature = gcp.gkehub.Feature("feature", @@ -521,18 +521,18 @@ def __init__(__self__, feature=feature.name, membership=membership.membership_id, policycontroller={ - "policyControllerHubConfig": { - "installSpec": "INSTALL_SPEC_SUSPENDED", - "policyContent": { - "templateLibrary": { + "policy_controller_hub_config": { + "install_spec": "INSTALL_SPEC_SUSPENDED", + "policy_content": { + "template_library": { "installation": "NOT_INSTALLED", }, }, - "constraintViolationLimit": 50, - "auditIntervalSeconds": 120, - "referentialRulesEnabled": True, - "logDeniesEnabled": True, - "mutationEnabled": True, + "constraint_violation_limit": 50, + "audit_interval_seconds": 120, + "referential_rules_enabled": True, + "log_denies_enabled": True, + "mutation_enabled": True, }, "version": "1.17.0", }) @@ -597,8 +597,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="my-membership", endpoint={ - "gkeCluster": { - "resourceLink": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }) feature = gcp.gkehub.Feature("feature", @@ -613,9 +613,9 @@ def __init__(__self__, membership=membership.membership_id, configmanagement={ "version": "1.6.2", - "configSync": { + "config_sync": { "git": { - "syncRepo": "https://github.com/hashicorp/terraform", + "sync_repo": "https://github.com/hashicorp/terraform", }, }, }) @@ -633,8 +633,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="my-membership", endpoint={ - "gkeCluster": { - "resourceLink": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }) feature = gcp.gkehub.Feature("feature", @@ -649,13 +649,13 @@ def __init__(__self__, membership=membership.membership_id, configmanagement={ "version": "1.15.1", - "configSync": { + "config_sync": { "oci": { - "syncRepo": "us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest", - "policyDir": "config-connector", - "syncWaitSecs": "20", - "secretType": "gcpserviceaccount", - "gcpServiceAccountEmail": "sa@project-id.iam.gserviceaccount.com", + "sync_repo": "us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest", + "policy_dir": "config-connector", + "sync_wait_secs": "20", + "secret_type": "gcpserviceaccount", + "gcp_service_account_email": "sa@project-id.iam.gserviceaccount.com", }, }, }) @@ -688,8 +688,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="my-membership", endpoint={ - "gkeCluster": { - "resourceLink": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }) feature = gcp.gkehub.Feature("feature", @@ -718,8 +718,8 @@ def __init__(__self__, membership_id="my-membership", location="us-central1", endpoint={ - "gkeCluster": { - "resourceLink": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }) feature = gcp.gkehub.Feature("feature", @@ -735,9 +735,9 @@ def __init__(__self__, membership_location=membership.location, configmanagement={ "version": "1.6.2", - "configSync": { + "config_sync": { "git": { - "syncRepo": "https://github.com/hashicorp/terraform", + "sync_repo": "https://github.com/hashicorp/terraform", }, }, }) @@ -756,8 +756,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="my-membership", endpoint={ - "gkeCluster": { - "resourceLink": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }) feature = gcp.gkehub.Feature("feature", @@ -768,8 +768,8 @@ def __init__(__self__, feature=feature.name, membership=membership.membership_id, policycontroller={ - "policyControllerHubConfig": { - "installSpec": "INSTALL_SPEC_ENABLED", + "policy_controller_hub_config": { + "install_spec": "INSTALL_SPEC_ENABLED", }, }) ``` @@ -787,8 +787,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="my-membership", endpoint={ - "gkeCluster": { - "resourceLink": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }) feature = gcp.gkehub.Feature("feature", @@ -799,18 +799,18 @@ def __init__(__self__, feature=feature.name, membership=membership.membership_id, policycontroller={ - "policyControllerHubConfig": { - "installSpec": "INSTALL_SPEC_SUSPENDED", - "policyContent": { - "templateLibrary": { + "policy_controller_hub_config": { + "install_spec": "INSTALL_SPEC_SUSPENDED", + "policy_content": { + "template_library": { "installation": "NOT_INSTALLED", }, }, - "constraintViolationLimit": 50, - "auditIntervalSeconds": 120, - "referentialRulesEnabled": True, - "logDeniesEnabled": True, - "mutationEnabled": True, + "constraint_violation_limit": 50, + "audit_interval_seconds": 120, + "referential_rules_enabled": True, + "log_denies_enabled": True, + "mutation_enabled": True, }, "version": "1.17.0", }) diff --git a/sdk/python/pulumi_gcp/gkehub/fleet.py b/sdk/python/pulumi_gcp/gkehub/fleet.py index e1b58e70ab..bb98130dbd 100644 --- a/sdk/python/pulumi_gcp/gkehub/fleet.py +++ b/sdk/python/pulumi_gcp/gkehub/fleet.py @@ -257,9 +257,9 @@ def __init__(__self__, default = gcp.gkehub.Fleet("default", display_name="my production fleet", default_cluster_config={ - "securityPostureConfig": { + "security_posture_config": { "mode": "DISABLED", - "vulnerabilityMode": "VULNERABILITY_DISABLED", + "vulnerability_mode": "VULNERABILITY_DISABLED", }, }) ``` @@ -317,9 +317,9 @@ def __init__(__self__, default = gcp.gkehub.Fleet("default", display_name="my production fleet", default_cluster_config={ - "securityPostureConfig": { + "security_posture_config": { "mode": "DISABLED", - "vulnerabilityMode": "VULNERABILITY_DISABLED", + "vulnerability_mode": "VULNERABILITY_DISABLED", }, }) ``` diff --git a/sdk/python/pulumi_gcp/gkehub/membership.py b/sdk/python/pulumi_gcp/gkehub/membership.py index abc676f278..a34fd6c675 100644 --- a/sdk/python/pulumi_gcp/gkehub/membership.py +++ b/sdk/python/pulumi_gcp/gkehub/membership.py @@ -412,8 +412,8 @@ def __init__(__self__, membership_id="basic", location="us-west1", endpoint={ - "gkeCluster": { - "resourceLink": primary.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": primary.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }) ``` @@ -433,8 +433,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="basic", endpoint={ - "gkeCluster": { - "resourceLink": primary.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": primary.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }, labels={ @@ -452,7 +452,7 @@ def __init__(__self__, location="us-central1-a", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, deletion_protection=True, network="default", @@ -460,8 +460,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="basic", endpoint={ - "gkeCluster": { - "resourceLink": primary.id, + "gke_cluster": { + "resource_link": primary.id, }, }, authority={ @@ -551,8 +551,8 @@ def __init__(__self__, membership_id="basic", location="us-west1", endpoint={ - "gkeCluster": { - "resourceLink": primary.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": primary.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }) ``` @@ -572,8 +572,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="basic", endpoint={ - "gkeCluster": { - "resourceLink": primary.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": primary.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }, labels={ @@ -591,7 +591,7 @@ def __init__(__self__, location="us-central1-a", initial_node_count=1, workload_identity_config={ - "workloadPool": "my-project-name.svc.id.goog", + "workload_pool": "my-project-name.svc.id.goog", }, deletion_protection=True, network="default", @@ -599,8 +599,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="basic", endpoint={ - "gkeCluster": { - "resourceLink": primary.id, + "gke_cluster": { + "resource_link": primary.id, }, }, authority={ diff --git a/sdk/python/pulumi_gcp/gkehub/membership_binding.py b/sdk/python/pulumi_gcp/gkehub/membership_binding.py index 36ab17510c..992a56a564 100644 --- a/sdk/python/pulumi_gcp/gkehub/membership_binding.py +++ b/sdk/python/pulumi_gcp/gkehub/membership_binding.py @@ -425,8 +425,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="tf-test-membership_39249", endpoint={ - "gkeCluster": { - "resourceLink": primary.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": primary.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }, opts = pulumi.ResourceOptions(depends_on=[primary])) @@ -521,8 +521,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="tf-test-membership_39249", endpoint={ - "gkeCluster": { - "resourceLink": primary.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": primary.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }, opts = pulumi.ResourceOptions(depends_on=[primary])) diff --git a/sdk/python/pulumi_gcp/gkehub/membership_rbac_role_binding.py b/sdk/python/pulumi_gcp/gkehub/membership_rbac_role_binding.py index 3ad77dc85e..bd6f3629c8 100644 --- a/sdk/python/pulumi_gcp/gkehub/membership_rbac_role_binding.py +++ b/sdk/python/pulumi_gcp/gkehub/membership_rbac_role_binding.py @@ -358,8 +358,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="tf-test-membership_8493", endpoint={ - "gkeCluster": { - "resourceLink": primary.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": primary.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }, opts = pulumi.ResourceOptions(depends_on=[primary])) @@ -369,7 +369,7 @@ def __init__(__self__, membership_id=membership.membership_id, user=f"service-{project.number}@gcp-sa-anthossupport.iam.gserviceaccount.com", role={ - "predefinedRole": "ANTHOS_SUPPORT", + "predefined_role": "ANTHOS_SUPPORT", }, location="global", opts = pulumi.ResourceOptions(depends_on=[membership])) @@ -436,8 +436,8 @@ def __init__(__self__, membership = gcp.gkehub.Membership("membership", membership_id="tf-test-membership_8493", endpoint={ - "gkeCluster": { - "resourceLink": primary.id.apply(lambda id: f"//container.googleapis.com/{id}"), + "gke_cluster": { + "resource_link": primary.id.apply(lambda id: f"//container.googleapis.com/{id}"), }, }, opts = pulumi.ResourceOptions(depends_on=[primary])) @@ -447,7 +447,7 @@ def __init__(__self__, membership_id=membership.membership_id, user=f"service-{project.number}@gcp-sa-anthossupport.iam.gserviceaccount.com", role={ - "predefinedRole": "ANTHOS_SUPPORT", + "predefined_role": "ANTHOS_SUPPORT", }, location="global", opts = pulumi.ResourceOptions(depends_on=[membership])) diff --git a/sdk/python/pulumi_gcp/gkehub/scope_rbac_role_binding.py b/sdk/python/pulumi_gcp/gkehub/scope_rbac_role_binding.py index ca4ce3b34a..8e1f5df8a7 100644 --- a/sdk/python/pulumi_gcp/gkehub/scope_rbac_role_binding.py +++ b/sdk/python/pulumi_gcp/gkehub/scope_rbac_role_binding.py @@ -435,7 +435,7 @@ def __init__(__self__, scope_id=scope.scope_id, user="test-email@gmail.com", role={ - "predefinedRole": "ADMIN", + "predefined_role": "ADMIN", }, labels={ "key": "value", @@ -510,7 +510,7 @@ def __init__(__self__, scope_id=scope.scope_id, user="test-email@gmail.com", role={ - "predefinedRole": "ADMIN", + "predefined_role": "ADMIN", }, labels={ "key": "value", diff --git a/sdk/python/pulumi_gcp/gkeonprem/bare_metal_admin_cluster.py b/sdk/python/pulumi_gcp/gkeonprem/bare_metal_admin_cluster.py index b1079ee76d..de623458df 100644 --- a/sdk/python/pulumi_gcp/gkeonprem/bare_metal_admin_cluster.py +++ b/sdk/python/pulumi_gcp/gkeonprem/bare_metal_admin_cluster.py @@ -929,59 +929,59 @@ def __init__(__self__, location="us-west1", bare_metal_version="1.13.4", network_config={ - "islandModeCidr": { - "serviceAddressCidrBlocks": ["172.26.0.0/16"], - "podAddressCidrBlocks": ["10.240.0.0/13"], + "island_mode_cidr": { + "service_address_cidr_blocks": ["172.26.0.0/16"], + "pod_address_cidr_blocks": ["10.240.0.0/13"], }, }, node_config={ - "maxPodsPerNode": 250, + "max_pods_per_node": 250, }, control_plane={ - "controlPlaneNodePoolConfig": { - "nodePoolConfig": { + "control_plane_node_pool_config": { + "node_pool_config": { "labels": {}, - "operatingSystem": "LINUX", - "nodeConfigs": [ + "operating_system": "LINUX", + "node_configs": [ { "labels": {}, - "nodeIp": "10.200.0.2", + "node_ip": "10.200.0.2", }, { "labels": {}, - "nodeIp": "10.200.0.3", + "node_ip": "10.200.0.3", }, { "labels": {}, - "nodeIp": "10.200.0.4", + "node_ip": "10.200.0.4", }, ], }, }, }, load_balancer={ - "portConfig": { - "controlPlaneLoadBalancerPort": 443, + "port_config": { + "control_plane_load_balancer_port": 443, }, - "vipConfig": { - "controlPlaneVip": "10.200.0.5", + "vip_config": { + "control_plane_vip": "10.200.0.5", }, }, storage={ - "lvpShareConfig": { - "lvpConfig": { + "lvp_share_config": { + "lvp_config": { "path": "/mnt/localpv-share", - "storageClass": "local-shared", + "storage_class": "local-shared", }, - "sharedPathPvCount": 5, + "shared_path_pv_count": 5, }, - "lvpNodeMountsConfig": { + "lvp_node_mounts_config": { "path": "/mnt/localpv-disk", - "storageClass": "local-disks", + "storage_class": "local-disks", }, }, node_access_config={ - "loginUser": "root", + "login_user": "root", }) ``` ### Gkeonprem Bare Metal Admin Cluster Full @@ -999,31 +999,31 @@ def __init__(__self__, "env": "test", }, network_config={ - "islandModeCidr": { - "serviceAddressCidrBlocks": ["172.26.0.0/16"], - "podAddressCidrBlocks": ["10.240.0.0/13"], + "island_mode_cidr": { + "service_address_cidr_blocks": ["172.26.0.0/16"], + "pod_address_cidr_blocks": ["10.240.0.0/13"], }, }, node_config={ - "maxPodsPerNode": 250, + "max_pods_per_node": 250, }, control_plane={ - "controlPlaneNodePoolConfig": { - "nodePoolConfig": { + "control_plane_node_pool_config": { + "node_pool_config": { "labels": {}, - "operatingSystem": "LINUX", - "nodeConfigs": [ + "operating_system": "LINUX", + "node_configs": [ { "labels": {}, - "nodeIp": "10.200.0.2", + "node_ip": "10.200.0.2", }, { "labels": {}, - "nodeIp": "10.200.0.3", + "node_ip": "10.200.0.3", }, { "labels": {}, - "nodeIp": "10.200.0.4", + "node_ip": "10.200.0.4", }, ], "taints": [{ @@ -1033,57 +1033,57 @@ def __init__(__self__, }], }, }, - "apiServerArgs": [{ + "api_server_args": [{ "argument": "test argument", "value": "test value", }], }, load_balancer={ - "portConfig": { - "controlPlaneLoadBalancerPort": 443, + "port_config": { + "control_plane_load_balancer_port": 443, }, - "vipConfig": { - "controlPlaneVip": "10.200.0.5", + "vip_config": { + "control_plane_vip": "10.200.0.5", }, - "manualLbConfig": { + "manual_lb_config": { "enabled": True, }, }, storage={ - "lvpShareConfig": { - "lvpConfig": { + "lvp_share_config": { + "lvp_config": { "path": "/mnt/localpv-share", - "storageClass": "local-shared", + "storage_class": "local-shared", }, - "sharedPathPvCount": 5, + "shared_path_pv_count": 5, }, - "lvpNodeMountsConfig": { + "lvp_node_mounts_config": { "path": "/mnt/localpv-disk", - "storageClass": "local-disks", + "storage_class": "local-disks", }, }, node_access_config={ - "loginUser": "root", + "login_user": "root", }, security_config={ "authorization": { - "adminUsers": [{ + "admin_users": [{ "username": "admin@hashicorptest.com", }], }, }, maintenance_config={ - "maintenanceAddressCidrBlocks": [ + "maintenance_address_cidr_blocks": [ "10.0.0.1/32", "10.0.0.2/32", ], }, cluster_operations={ - "enableApplicationLogs": True, + "enable_application_logs": True, }, proxy={ "uri": "test proxy uri", - "noProxies": ["127.0.0.1"], + "no_proxies": ["127.0.0.1"], }) ``` @@ -1176,59 +1176,59 @@ def __init__(__self__, location="us-west1", bare_metal_version="1.13.4", network_config={ - "islandModeCidr": { - "serviceAddressCidrBlocks": ["172.26.0.0/16"], - "podAddressCidrBlocks": ["10.240.0.0/13"], + "island_mode_cidr": { + "service_address_cidr_blocks": ["172.26.0.0/16"], + "pod_address_cidr_blocks": ["10.240.0.0/13"], }, }, node_config={ - "maxPodsPerNode": 250, + "max_pods_per_node": 250, }, control_plane={ - "controlPlaneNodePoolConfig": { - "nodePoolConfig": { + "control_plane_node_pool_config": { + "node_pool_config": { "labels": {}, - "operatingSystem": "LINUX", - "nodeConfigs": [ + "operating_system": "LINUX", + "node_configs": [ { "labels": {}, - "nodeIp": "10.200.0.2", + "node_ip": "10.200.0.2", }, { "labels": {}, - "nodeIp": "10.200.0.3", + "node_ip": "10.200.0.3", }, { "labels": {}, - "nodeIp": "10.200.0.4", + "node_ip": "10.200.0.4", }, ], }, }, }, load_balancer={ - "portConfig": { - "controlPlaneLoadBalancerPort": 443, + "port_config": { + "control_plane_load_balancer_port": 443, }, - "vipConfig": { - "controlPlaneVip": "10.200.0.5", + "vip_config": { + "control_plane_vip": "10.200.0.5", }, }, storage={ - "lvpShareConfig": { - "lvpConfig": { + "lvp_share_config": { + "lvp_config": { "path": "/mnt/localpv-share", - "storageClass": "local-shared", + "storage_class": "local-shared", }, - "sharedPathPvCount": 5, + "shared_path_pv_count": 5, }, - "lvpNodeMountsConfig": { + "lvp_node_mounts_config": { "path": "/mnt/localpv-disk", - "storageClass": "local-disks", + "storage_class": "local-disks", }, }, node_access_config={ - "loginUser": "root", + "login_user": "root", }) ``` ### Gkeonprem Bare Metal Admin Cluster Full @@ -1246,31 +1246,31 @@ def __init__(__self__, "env": "test", }, network_config={ - "islandModeCidr": { - "serviceAddressCidrBlocks": ["172.26.0.0/16"], - "podAddressCidrBlocks": ["10.240.0.0/13"], + "island_mode_cidr": { + "service_address_cidr_blocks": ["172.26.0.0/16"], + "pod_address_cidr_blocks": ["10.240.0.0/13"], }, }, node_config={ - "maxPodsPerNode": 250, + "max_pods_per_node": 250, }, control_plane={ - "controlPlaneNodePoolConfig": { - "nodePoolConfig": { + "control_plane_node_pool_config": { + "node_pool_config": { "labels": {}, - "operatingSystem": "LINUX", - "nodeConfigs": [ + "operating_system": "LINUX", + "node_configs": [ { "labels": {}, - "nodeIp": "10.200.0.2", + "node_ip": "10.200.0.2", }, { "labels": {}, - "nodeIp": "10.200.0.3", + "node_ip": "10.200.0.3", }, { "labels": {}, - "nodeIp": "10.200.0.4", + "node_ip": "10.200.0.4", }, ], "taints": [{ @@ -1280,57 +1280,57 @@ def __init__(__self__, }], }, }, - "apiServerArgs": [{ + "api_server_args": [{ "argument": "test argument", "value": "test value", }], }, load_balancer={ - "portConfig": { - "controlPlaneLoadBalancerPort": 443, + "port_config": { + "control_plane_load_balancer_port": 443, }, - "vipConfig": { - "controlPlaneVip": "10.200.0.5", + "vip_config": { + "control_plane_vip": "10.200.0.5", }, - "manualLbConfig": { + "manual_lb_config": { "enabled": True, }, }, storage={ - "lvpShareConfig": { - "lvpConfig": { + "lvp_share_config": { + "lvp_config": { "path": "/mnt/localpv-share", - "storageClass": "local-shared", + "storage_class": "local-shared", }, - "sharedPathPvCount": 5, + "shared_path_pv_count": 5, }, - "lvpNodeMountsConfig": { + "lvp_node_mounts_config": { "path": "/mnt/localpv-disk", - "storageClass": "local-disks", + "storage_class": "local-disks", }, }, node_access_config={ - "loginUser": "root", + "login_user": "root", }, security_config={ "authorization": { - "adminUsers": [{ + "admin_users": [{ "username": "admin@hashicorptest.com", }], }, }, maintenance_config={ - "maintenanceAddressCidrBlocks": [ + "maintenance_address_cidr_blocks": [ "10.0.0.1/32", "10.0.0.2/32", ], }, cluster_operations={ - "enableApplicationLogs": True, + "enable_application_logs": True, }, proxy={ "uri": "test proxy uri", - "noProxies": ["127.0.0.1"], + "no_proxies": ["127.0.0.1"], }) ``` diff --git a/sdk/python/pulumi_gcp/gkeonprem/bare_metal_cluster.py b/sdk/python/pulumi_gcp/gkeonprem/bare_metal_cluster.py index 9a7537d6e8..1c849b02e0 100644 --- a/sdk/python/pulumi_gcp/gkeonprem/bare_metal_cluster.py +++ b/sdk/python/pulumi_gcp/gkeonprem/bare_metal_cluster.py @@ -996,33 +996,33 @@ def __init__(__self__, admin_cluster_membership="projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", bare_metal_version="1.12.3", network_config={ - "islandModeCidr": { - "serviceAddressCidrBlocks": ["172.26.0.0/16"], - "podAddressCidrBlocks": ["10.240.0.0/13"], + "island_mode_cidr": { + "service_address_cidr_blocks": ["172.26.0.0/16"], + "pod_address_cidr_blocks": ["10.240.0.0/13"], }, }, control_plane={ - "controlPlaneNodePoolConfig": { - "nodePoolConfig": { + "control_plane_node_pool_config": { + "node_pool_config": { "labels": {}, - "operatingSystem": "LINUX", - "nodeConfigs": [{ + "operating_system": "LINUX", + "node_configs": [{ "labels": {}, - "nodeIp": "10.200.0.9", + "node_ip": "10.200.0.9", }], }, }, }, load_balancer={ - "portConfig": { - "controlPlaneLoadBalancerPort": 443, + "port_config": { + "control_plane_load_balancer_port": 443, }, - "vipConfig": { - "controlPlaneVip": "10.200.0.13", - "ingressVip": "10.200.0.14", + "vip_config": { + "control_plane_vip": "10.200.0.13", + "ingress_vip": "10.200.0.14", }, - "metalLbConfig": { - "addressPools": [{ + "metal_lb_config": { + "address_pools": [{ "pool": "pool1", "addresses": [ "10.200.0.14/32", @@ -1035,27 +1035,27 @@ def __init__(__self__, "fd00:1::11/128", "fd00:1::12/128", ], - "avoidBuggyIps": True, - "manualAssign": True, + "avoid_buggy_ips": True, + "manual_assign": True, }], }, }, storage={ - "lvpShareConfig": { - "lvpConfig": { + "lvp_share_config": { + "lvp_config": { "path": "/mnt/localpv-share", - "storageClass": "local-shared", + "storage_class": "local-shared", }, - "sharedPathPvCount": 5, + "shared_path_pv_count": 5, }, - "lvpNodeMountsConfig": { + "lvp_node_mounts_config": { "path": "/mnt/localpv-disk", - "storageClass": "local-disks", + "storage_class": "local-disks", }, }, security_config={ "authorization": { - "adminUsers": [{ + "admin_users": [{ "username": "admin@hashicorptest.com", }], }, @@ -1073,57 +1073,57 @@ def __init__(__self__, admin_cluster_membership="projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", bare_metal_version="1.12.3", network_config={ - "islandModeCidr": { - "serviceAddressCidrBlocks": ["172.26.0.0/16"], - "podAddressCidrBlocks": ["10.240.0.0/13"], + "island_mode_cidr": { + "service_address_cidr_blocks": ["172.26.0.0/16"], + "pod_address_cidr_blocks": ["10.240.0.0/13"], }, }, control_plane={ - "controlPlaneNodePoolConfig": { - "nodePoolConfig": { + "control_plane_node_pool_config": { + "node_pool_config": { "labels": {}, - "operatingSystem": "LINUX", - "nodeConfigs": [{ + "operating_system": "LINUX", + "node_configs": [{ "labels": {}, - "nodeIp": "10.200.0.9", + "node_ip": "10.200.0.9", }], }, }, }, load_balancer={ - "portConfig": { - "controlPlaneLoadBalancerPort": 443, + "port_config": { + "control_plane_load_balancer_port": 443, }, - "vipConfig": { - "controlPlaneVip": "10.200.0.13", - "ingressVip": "10.200.0.14", + "vip_config": { + "control_plane_vip": "10.200.0.13", + "ingress_vip": "10.200.0.14", }, - "manualLbConfig": { + "manual_lb_config": { "enabled": True, }, }, storage={ - "lvpShareConfig": { - "lvpConfig": { + "lvp_share_config": { + "lvp_config": { "path": "/mnt/localpv-share", - "storageClass": "local-shared", + "storage_class": "local-shared", }, - "sharedPathPvCount": 5, + "shared_path_pv_count": 5, }, - "lvpNodeMountsConfig": { + "lvp_node_mounts_config": { "path": "/mnt/localpv-disk", - "storageClass": "local-disks", + "storage_class": "local-disks", }, }, security_config={ "authorization": { - "adminUsers": [{ + "admin_users": [{ "username": "admin@hashicorptest.com", }], }, }, binary_authorization={ - "evaluationMode": "DISABLED", + "evaluation_mode": "DISABLED", }, upgrade_policy={ "policy": "SERIAL", @@ -1141,26 +1141,26 @@ def __init__(__self__, admin_cluster_membership="projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", bare_metal_version="1.12.3", network_config={ - "islandModeCidr": { - "serviceAddressCidrBlocks": ["172.26.0.0/16"], - "podAddressCidrBlocks": ["10.240.0.0/13"], + "island_mode_cidr": { + "service_address_cidr_blocks": ["172.26.0.0/16"], + "pod_address_cidr_blocks": ["10.240.0.0/13"], }, - "advancedNetworking": True, - "multipleNetworkInterfacesConfig": { + "advanced_networking": True, + "multiple_network_interfaces_config": { "enabled": True, }, - "srIovConfig": { + "sr_iov_config": { "enabled": True, }, }, control_plane={ - "controlPlaneNodePoolConfig": { - "nodePoolConfig": { + "control_plane_node_pool_config": { + "node_pool_config": { "labels": {}, - "operatingSystem": "LINUX", - "nodeConfigs": [{ + "operating_system": "LINUX", + "node_configs": [{ "labels": {}, - "nodeIp": "10.200.0.9", + "node_ip": "10.200.0.9", }], "taints": [{ "key": "test-key", @@ -1169,27 +1169,27 @@ def __init__(__self__, }], }, }, - "apiServerArgs": [{ + "api_server_args": [{ "argument": "test-argument", "value": "test-value", }], }, load_balancer={ - "portConfig": { - "controlPlaneLoadBalancerPort": 443, + "port_config": { + "control_plane_load_balancer_port": 443, }, - "vipConfig": { - "controlPlaneVip": "10.200.0.13", - "ingressVip": "10.200.0.14", + "vip_config": { + "control_plane_vip": "10.200.0.13", + "ingress_vip": "10.200.0.14", }, - "bgpLbConfig": { + "bgp_lb_config": { "asn": 123456, - "bgpPeerConfigs": [{ + "bgp_peer_configs": [{ "asn": 123457, - "ipAddress": "10.0.0.1", - "controlPlaneNodes": ["test-node"], + "ip_address": "10.0.0.1", + "control_plane_nodes": ["test-node"], }], - "addressPools": [{ + "address_pools": [{ "pool": "pool1", "addresses": [ "10.200.0.14/32", @@ -1203,67 +1203,67 @@ def __init__(__self__, "fd00:1::12/128", ], }], - "loadBalancerNodePoolConfig": { - "nodePoolConfig": { + "load_balancer_node_pool_config": { + "node_pool_config": { "labels": {}, - "operatingSystem": "LINUX", - "nodeConfigs": [{ + "operating_system": "LINUX", + "node_configs": [{ "labels": {}, - "nodeIp": "10.200.0.9", + "node_ip": "10.200.0.9", }], "taints": [{ "key": "test-key", "value": "test-value", "effect": "NO_EXECUTE", }], - "kubeletConfig": { - "registryPullQps": 10, - "registryBurst": 12, - "serializeImagePullsDisabled": True, + "kubelet_config": { + "registry_pull_qps": 10, + "registry_burst": 12, + "serialize_image_pulls_disabled": True, }, }, }, }, }, storage={ - "lvpShareConfig": { - "lvpConfig": { + "lvp_share_config": { + "lvp_config": { "path": "/mnt/localpv-share", - "storageClass": "local-shared", + "storage_class": "local-shared", }, - "sharedPathPvCount": 5, + "shared_path_pv_count": 5, }, - "lvpNodeMountsConfig": { + "lvp_node_mounts_config": { "path": "/mnt/localpv-disk", - "storageClass": "local-disks", + "storage_class": "local-disks", }, }, security_config={ "authorization": { - "adminUsers": [{ + "admin_users": [{ "username": "admin@hashicorptest.com", }], }, }, proxy={ "uri": "http://test-domain/test", - "noProxies": ["127.0.0.1"], + "no_proxies": ["127.0.0.1"], }, cluster_operations={ - "enableApplicationLogs": True, + "enable_application_logs": True, }, maintenance_config={ - "maintenanceAddressCidrBlocks": ["192.168.0.1/20"], + "maintenance_address_cidr_blocks": ["192.168.0.1/20"], }, node_config={ - "maxPodsPerNode": 10, - "containerRuntime": "CONTAINERD", + "max_pods_per_node": 10, + "container_runtime": "CONTAINERD", }, node_access_config={ - "loginUser": "test@example.com", + "login_user": "test@example.com", }, os_environment_config={ - "packageRepoExcluded": True, + "package_repo_excluded": True, }) ``` @@ -1347,33 +1347,33 @@ def __init__(__self__, admin_cluster_membership="projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", bare_metal_version="1.12.3", network_config={ - "islandModeCidr": { - "serviceAddressCidrBlocks": ["172.26.0.0/16"], - "podAddressCidrBlocks": ["10.240.0.0/13"], + "island_mode_cidr": { + "service_address_cidr_blocks": ["172.26.0.0/16"], + "pod_address_cidr_blocks": ["10.240.0.0/13"], }, }, control_plane={ - "controlPlaneNodePoolConfig": { - "nodePoolConfig": { + "control_plane_node_pool_config": { + "node_pool_config": { "labels": {}, - "operatingSystem": "LINUX", - "nodeConfigs": [{ + "operating_system": "LINUX", + "node_configs": [{ "labels": {}, - "nodeIp": "10.200.0.9", + "node_ip": "10.200.0.9", }], }, }, }, load_balancer={ - "portConfig": { - "controlPlaneLoadBalancerPort": 443, + "port_config": { + "control_plane_load_balancer_port": 443, }, - "vipConfig": { - "controlPlaneVip": "10.200.0.13", - "ingressVip": "10.200.0.14", + "vip_config": { + "control_plane_vip": "10.200.0.13", + "ingress_vip": "10.200.0.14", }, - "metalLbConfig": { - "addressPools": [{ + "metal_lb_config": { + "address_pools": [{ "pool": "pool1", "addresses": [ "10.200.0.14/32", @@ -1386,27 +1386,27 @@ def __init__(__self__, "fd00:1::11/128", "fd00:1::12/128", ], - "avoidBuggyIps": True, - "manualAssign": True, + "avoid_buggy_ips": True, + "manual_assign": True, }], }, }, storage={ - "lvpShareConfig": { - "lvpConfig": { + "lvp_share_config": { + "lvp_config": { "path": "/mnt/localpv-share", - "storageClass": "local-shared", + "storage_class": "local-shared", }, - "sharedPathPvCount": 5, + "shared_path_pv_count": 5, }, - "lvpNodeMountsConfig": { + "lvp_node_mounts_config": { "path": "/mnt/localpv-disk", - "storageClass": "local-disks", + "storage_class": "local-disks", }, }, security_config={ "authorization": { - "adminUsers": [{ + "admin_users": [{ "username": "admin@hashicorptest.com", }], }, @@ -1424,57 +1424,57 @@ def __init__(__self__, admin_cluster_membership="projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", bare_metal_version="1.12.3", network_config={ - "islandModeCidr": { - "serviceAddressCidrBlocks": ["172.26.0.0/16"], - "podAddressCidrBlocks": ["10.240.0.0/13"], + "island_mode_cidr": { + "service_address_cidr_blocks": ["172.26.0.0/16"], + "pod_address_cidr_blocks": ["10.240.0.0/13"], }, }, control_plane={ - "controlPlaneNodePoolConfig": { - "nodePoolConfig": { + "control_plane_node_pool_config": { + "node_pool_config": { "labels": {}, - "operatingSystem": "LINUX", - "nodeConfigs": [{ + "operating_system": "LINUX", + "node_configs": [{ "labels": {}, - "nodeIp": "10.200.0.9", + "node_ip": "10.200.0.9", }], }, }, }, load_balancer={ - "portConfig": { - "controlPlaneLoadBalancerPort": 443, + "port_config": { + "control_plane_load_balancer_port": 443, }, - "vipConfig": { - "controlPlaneVip": "10.200.0.13", - "ingressVip": "10.200.0.14", + "vip_config": { + "control_plane_vip": "10.200.0.13", + "ingress_vip": "10.200.0.14", }, - "manualLbConfig": { + "manual_lb_config": { "enabled": True, }, }, storage={ - "lvpShareConfig": { - "lvpConfig": { + "lvp_share_config": { + "lvp_config": { "path": "/mnt/localpv-share", - "storageClass": "local-shared", + "storage_class": "local-shared", }, - "sharedPathPvCount": 5, + "shared_path_pv_count": 5, }, - "lvpNodeMountsConfig": { + "lvp_node_mounts_config": { "path": "/mnt/localpv-disk", - "storageClass": "local-disks", + "storage_class": "local-disks", }, }, security_config={ "authorization": { - "adminUsers": [{ + "admin_users": [{ "username": "admin@hashicorptest.com", }], }, }, binary_authorization={ - "evaluationMode": "DISABLED", + "evaluation_mode": "DISABLED", }, upgrade_policy={ "policy": "SERIAL", @@ -1492,26 +1492,26 @@ def __init__(__self__, admin_cluster_membership="projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", bare_metal_version="1.12.3", network_config={ - "islandModeCidr": { - "serviceAddressCidrBlocks": ["172.26.0.0/16"], - "podAddressCidrBlocks": ["10.240.0.0/13"], + "island_mode_cidr": { + "service_address_cidr_blocks": ["172.26.0.0/16"], + "pod_address_cidr_blocks": ["10.240.0.0/13"], }, - "advancedNetworking": True, - "multipleNetworkInterfacesConfig": { + "advanced_networking": True, + "multiple_network_interfaces_config": { "enabled": True, }, - "srIovConfig": { + "sr_iov_config": { "enabled": True, }, }, control_plane={ - "controlPlaneNodePoolConfig": { - "nodePoolConfig": { + "control_plane_node_pool_config": { + "node_pool_config": { "labels": {}, - "operatingSystem": "LINUX", - "nodeConfigs": [{ + "operating_system": "LINUX", + "node_configs": [{ "labels": {}, - "nodeIp": "10.200.0.9", + "node_ip": "10.200.0.9", }], "taints": [{ "key": "test-key", @@ -1520,27 +1520,27 @@ def __init__(__self__, }], }, }, - "apiServerArgs": [{ + "api_server_args": [{ "argument": "test-argument", "value": "test-value", }], }, load_balancer={ - "portConfig": { - "controlPlaneLoadBalancerPort": 443, + "port_config": { + "control_plane_load_balancer_port": 443, }, - "vipConfig": { - "controlPlaneVip": "10.200.0.13", - "ingressVip": "10.200.0.14", + "vip_config": { + "control_plane_vip": "10.200.0.13", + "ingress_vip": "10.200.0.14", }, - "bgpLbConfig": { + "bgp_lb_config": { "asn": 123456, - "bgpPeerConfigs": [{ + "bgp_peer_configs": [{ "asn": 123457, - "ipAddress": "10.0.0.1", - "controlPlaneNodes": ["test-node"], + "ip_address": "10.0.0.1", + "control_plane_nodes": ["test-node"], }], - "addressPools": [{ + "address_pools": [{ "pool": "pool1", "addresses": [ "10.200.0.14/32", @@ -1554,67 +1554,67 @@ def __init__(__self__, "fd00:1::12/128", ], }], - "loadBalancerNodePoolConfig": { - "nodePoolConfig": { + "load_balancer_node_pool_config": { + "node_pool_config": { "labels": {}, - "operatingSystem": "LINUX", - "nodeConfigs": [{ + "operating_system": "LINUX", + "node_configs": [{ "labels": {}, - "nodeIp": "10.200.0.9", + "node_ip": "10.200.0.9", }], "taints": [{ "key": "test-key", "value": "test-value", "effect": "NO_EXECUTE", }], - "kubeletConfig": { - "registryPullQps": 10, - "registryBurst": 12, - "serializeImagePullsDisabled": True, + "kubelet_config": { + "registry_pull_qps": 10, + "registry_burst": 12, + "serialize_image_pulls_disabled": True, }, }, }, }, }, storage={ - "lvpShareConfig": { - "lvpConfig": { + "lvp_share_config": { + "lvp_config": { "path": "/mnt/localpv-share", - "storageClass": "local-shared", + "storage_class": "local-shared", }, - "sharedPathPvCount": 5, + "shared_path_pv_count": 5, }, - "lvpNodeMountsConfig": { + "lvp_node_mounts_config": { "path": "/mnt/localpv-disk", - "storageClass": "local-disks", + "storage_class": "local-disks", }, }, security_config={ "authorization": { - "adminUsers": [{ + "admin_users": [{ "username": "admin@hashicorptest.com", }], }, }, proxy={ "uri": "http://test-domain/test", - "noProxies": ["127.0.0.1"], + "no_proxies": ["127.0.0.1"], }, cluster_operations={ - "enableApplicationLogs": True, + "enable_application_logs": True, }, maintenance_config={ - "maintenanceAddressCidrBlocks": ["192.168.0.1/20"], + "maintenance_address_cidr_blocks": ["192.168.0.1/20"], }, node_config={ - "maxPodsPerNode": 10, - "containerRuntime": "CONTAINERD", + "max_pods_per_node": 10, + "container_runtime": "CONTAINERD", }, node_access_config={ - "loginUser": "test@example.com", + "login_user": "test@example.com", }, os_environment_config={ - "packageRepoExcluded": True, + "package_repo_excluded": True, }) ``` diff --git a/sdk/python/pulumi_gcp/gkeonprem/bare_metal_node_pool.py b/sdk/python/pulumi_gcp/gkeonprem/bare_metal_node_pool.py index 976b60e89a..d618472474 100644 --- a/sdk/python/pulumi_gcp/gkeonprem/bare_metal_node_pool.py +++ b/sdk/python/pulumi_gcp/gkeonprem/bare_metal_node_pool.py @@ -453,33 +453,33 @@ def __init__(__self__, admin_cluster_membership="projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", bare_metal_version="1.12.3", network_config={ - "islandModeCidr": { - "serviceAddressCidrBlocks": ["172.26.0.0/16"], - "podAddressCidrBlocks": ["10.240.0.0/13"], + "island_mode_cidr": { + "service_address_cidr_blocks": ["172.26.0.0/16"], + "pod_address_cidr_blocks": ["10.240.0.0/13"], }, }, control_plane={ - "controlPlaneNodePoolConfig": { - "nodePoolConfig": { + "control_plane_node_pool_config": { + "node_pool_config": { "labels": {}, - "operatingSystem": "LINUX", - "nodeConfigs": [{ + "operating_system": "LINUX", + "node_configs": [{ "labels": {}, - "nodeIp": "10.200.0.9", + "node_ip": "10.200.0.9", }], }, }, }, load_balancer={ - "portConfig": { - "controlPlaneLoadBalancerPort": 443, + "port_config": { + "control_plane_load_balancer_port": 443, }, - "vipConfig": { - "controlPlaneVip": "10.200.0.13", - "ingressVip": "10.200.0.14", + "vip_config": { + "control_plane_vip": "10.200.0.13", + "ingress_vip": "10.200.0.14", }, - "metalLbConfig": { - "addressPools": [{ + "metal_lb_config": { + "address_pools": [{ "pool": "pool1", "addresses": [ "10.200.0.14/32", @@ -496,21 +496,21 @@ def __init__(__self__, }, }, storage={ - "lvpShareConfig": { - "lvpConfig": { + "lvp_share_config": { + "lvp_config": { "path": "/mnt/localpv-share", - "storageClass": "local-shared", + "storage_class": "local-shared", }, - "sharedPathPvCount": 5, + "shared_path_pv_count": 5, }, - "lvpNodeMountsConfig": { + "lvp_node_mounts_config": { "path": "/mnt/localpv-disk", - "storageClass": "local-disks", + "storage_class": "local-disks", }, }, security_config={ "authorization": { - "adminUsers": [{ + "admin_users": [{ "username": "admin@hashicorptest.com", }], }, @@ -520,9 +520,9 @@ def __init__(__self__, bare_metal_cluster=default_basic.name, location="us-west1", node_pool_config={ - "operatingSystem": "LINUX", - "nodeConfigs": [{ - "nodeIp": "10.200.0.11", + "operating_system": "LINUX", + "node_configs": [{ + "node_ip": "10.200.0.11", }], }) ``` @@ -538,33 +538,33 @@ def __init__(__self__, admin_cluster_membership="projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", bare_metal_version="1.12.3", network_config={ - "islandModeCidr": { - "serviceAddressCidrBlocks": ["172.26.0.0/16"], - "podAddressCidrBlocks": ["10.240.0.0/13"], + "island_mode_cidr": { + "service_address_cidr_blocks": ["172.26.0.0/16"], + "pod_address_cidr_blocks": ["10.240.0.0/13"], }, }, control_plane={ - "controlPlaneNodePoolConfig": { - "nodePoolConfig": { + "control_plane_node_pool_config": { + "node_pool_config": { "labels": {}, - "operatingSystem": "LINUX", - "nodeConfigs": [{ + "operating_system": "LINUX", + "node_configs": [{ "labels": {}, - "nodeIp": "10.200.0.9", + "node_ip": "10.200.0.9", }], }, }, }, load_balancer={ - "portConfig": { - "controlPlaneLoadBalancerPort": 443, + "port_config": { + "control_plane_load_balancer_port": 443, }, - "vipConfig": { - "controlPlaneVip": "10.200.0.13", - "ingressVip": "10.200.0.14", + "vip_config": { + "control_plane_vip": "10.200.0.13", + "ingress_vip": "10.200.0.14", }, - "metalLbConfig": { - "addressPools": [{ + "metal_lb_config": { + "address_pools": [{ "pool": "pool1", "addresses": [ "10.200.0.14/32", @@ -581,21 +581,21 @@ def __init__(__self__, }, }, storage={ - "lvpShareConfig": { - "lvpConfig": { + "lvp_share_config": { + "lvp_config": { "path": "/mnt/localpv-share", - "storageClass": "local-shared", + "storage_class": "local-shared", }, - "sharedPathPvCount": 5, + "shared_path_pv_count": 5, }, - "lvpNodeMountsConfig": { + "lvp_node_mounts_config": { "path": "/mnt/localpv-disk", - "storageClass": "local-disks", + "storage_class": "local-disks", }, }, security_config={ "authorization": { - "adminUsers": [{ + "admin_users": [{ "username": "admin@hashicorptest.com", }], }, @@ -607,10 +607,10 @@ def __init__(__self__, location="us-west1", annotations={}, node_pool_config={ - "operatingSystem": "LINUX", + "operating_system": "LINUX", "labels": {}, - "nodeConfigs": [{ - "nodeIp": "10.200.0.11", + "node_configs": [{ + "node_ip": "10.200.0.11", "labels": {}, }], "taints": [{ @@ -683,33 +683,33 @@ def __init__(__self__, admin_cluster_membership="projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", bare_metal_version="1.12.3", network_config={ - "islandModeCidr": { - "serviceAddressCidrBlocks": ["172.26.0.0/16"], - "podAddressCidrBlocks": ["10.240.0.0/13"], + "island_mode_cidr": { + "service_address_cidr_blocks": ["172.26.0.0/16"], + "pod_address_cidr_blocks": ["10.240.0.0/13"], }, }, control_plane={ - "controlPlaneNodePoolConfig": { - "nodePoolConfig": { + "control_plane_node_pool_config": { + "node_pool_config": { "labels": {}, - "operatingSystem": "LINUX", - "nodeConfigs": [{ + "operating_system": "LINUX", + "node_configs": [{ "labels": {}, - "nodeIp": "10.200.0.9", + "node_ip": "10.200.0.9", }], }, }, }, load_balancer={ - "portConfig": { - "controlPlaneLoadBalancerPort": 443, + "port_config": { + "control_plane_load_balancer_port": 443, }, - "vipConfig": { - "controlPlaneVip": "10.200.0.13", - "ingressVip": "10.200.0.14", + "vip_config": { + "control_plane_vip": "10.200.0.13", + "ingress_vip": "10.200.0.14", }, - "metalLbConfig": { - "addressPools": [{ + "metal_lb_config": { + "address_pools": [{ "pool": "pool1", "addresses": [ "10.200.0.14/32", @@ -726,21 +726,21 @@ def __init__(__self__, }, }, storage={ - "lvpShareConfig": { - "lvpConfig": { + "lvp_share_config": { + "lvp_config": { "path": "/mnt/localpv-share", - "storageClass": "local-shared", + "storage_class": "local-shared", }, - "sharedPathPvCount": 5, + "shared_path_pv_count": 5, }, - "lvpNodeMountsConfig": { + "lvp_node_mounts_config": { "path": "/mnt/localpv-disk", - "storageClass": "local-disks", + "storage_class": "local-disks", }, }, security_config={ "authorization": { - "adminUsers": [{ + "admin_users": [{ "username": "admin@hashicorptest.com", }], }, @@ -750,9 +750,9 @@ def __init__(__self__, bare_metal_cluster=default_basic.name, location="us-west1", node_pool_config={ - "operatingSystem": "LINUX", - "nodeConfigs": [{ - "nodeIp": "10.200.0.11", + "operating_system": "LINUX", + "node_configs": [{ + "node_ip": "10.200.0.11", }], }) ``` @@ -768,33 +768,33 @@ def __init__(__self__, admin_cluster_membership="projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", bare_metal_version="1.12.3", network_config={ - "islandModeCidr": { - "serviceAddressCidrBlocks": ["172.26.0.0/16"], - "podAddressCidrBlocks": ["10.240.0.0/13"], + "island_mode_cidr": { + "service_address_cidr_blocks": ["172.26.0.0/16"], + "pod_address_cidr_blocks": ["10.240.0.0/13"], }, }, control_plane={ - "controlPlaneNodePoolConfig": { - "nodePoolConfig": { + "control_plane_node_pool_config": { + "node_pool_config": { "labels": {}, - "operatingSystem": "LINUX", - "nodeConfigs": [{ + "operating_system": "LINUX", + "node_configs": [{ "labels": {}, - "nodeIp": "10.200.0.9", + "node_ip": "10.200.0.9", }], }, }, }, load_balancer={ - "portConfig": { - "controlPlaneLoadBalancerPort": 443, + "port_config": { + "control_plane_load_balancer_port": 443, }, - "vipConfig": { - "controlPlaneVip": "10.200.0.13", - "ingressVip": "10.200.0.14", + "vip_config": { + "control_plane_vip": "10.200.0.13", + "ingress_vip": "10.200.0.14", }, - "metalLbConfig": { - "addressPools": [{ + "metal_lb_config": { + "address_pools": [{ "pool": "pool1", "addresses": [ "10.200.0.14/32", @@ -811,21 +811,21 @@ def __init__(__self__, }, }, storage={ - "lvpShareConfig": { - "lvpConfig": { + "lvp_share_config": { + "lvp_config": { "path": "/mnt/localpv-share", - "storageClass": "local-shared", + "storage_class": "local-shared", }, - "sharedPathPvCount": 5, + "shared_path_pv_count": 5, }, - "lvpNodeMountsConfig": { + "lvp_node_mounts_config": { "path": "/mnt/localpv-disk", - "storageClass": "local-disks", + "storage_class": "local-disks", }, }, security_config={ "authorization": { - "adminUsers": [{ + "admin_users": [{ "username": "admin@hashicorptest.com", }], }, @@ -837,10 +837,10 @@ def __init__(__self__, location="us-west1", annotations={}, node_pool_config={ - "operatingSystem": "LINUX", + "operating_system": "LINUX", "labels": {}, - "nodeConfigs": [{ - "nodeIp": "10.200.0.11", + "node_configs": [{ + "node_ip": "10.200.0.11", "labels": {}, }], "taints": [{ diff --git a/sdk/python/pulumi_gcp/gkeonprem/v_mware_cluster.py b/sdk/python/pulumi_gcp/gkeonprem/v_mware_cluster.py index c7f25c673f..6f41c3a899 100644 --- a/sdk/python/pulumi_gcp/gkeonprem/v_mware_cluster.py +++ b/sdk/python/pulumi_gcp/gkeonprem/v_mware_cluster.py @@ -987,9 +987,9 @@ def __init__(__self__, on_prem_version="1.13.1-gke.35", annotations={}, network_config={ - "serviceAddressCidrBlocks": ["10.96.0.0/12"], - "podAddressCidrBlocks": ["192.168.0.0/16"], - "dhcpIpConfig": { + "service_address_cidr_blocks": ["10.96.0.0/12"], + "pod_address_cidr_blocks": ["192.168.0.0/16"], + "dhcp_ip_config": { "enabled": True, }, }, @@ -999,23 +999,23 @@ def __init__(__self__, "replicas": 1, }, load_balancer={ - "vipConfig": { - "controlPlaneVip": "10.251.133.5", - "ingressVip": "10.251.135.19", + "vip_config": { + "control_plane_vip": "10.251.133.5", + "ingress_vip": "10.251.135.19", }, - "metalLbConfig": { - "addressPools": [ + "metal_lb_config": { + "address_pools": [ { "pool": "ingress-ip", - "manualAssign": True, + "manual_assign": True, "addresses": ["10.251.135.19"], - "avoidBuggyIps": True, + "avoid_buggy_ips": True, }, { "pool": "lb-test-ip", - "manualAssign": True, + "manual_assign": True, "addresses": ["10.251.135.19"], - "avoidBuggyIps": True, + "avoid_buggy_ips": True, }, ], }, @@ -1035,13 +1035,13 @@ def __init__(__self__, on_prem_version="1.13.1-gke.35", annotations={}, network_config={ - "serviceAddressCidrBlocks": ["10.96.0.0/12"], - "podAddressCidrBlocks": ["192.168.0.0/16"], - "dhcpIpConfig": { + "service_address_cidr_blocks": ["10.96.0.0/12"], + "pod_address_cidr_blocks": ["192.168.0.0/16"], + "dhcp_ip_config": { "enabled": True, }, - "controlPlaneV2Config": { - "controlPlaneIpBlock": { + "control_plane_v2_config": { + "control_plane_ip_block": { "ips": [{ "hostname": "test-hostname", "ip": "10.0.0.1", @@ -1050,48 +1050,48 @@ def __init__(__self__, "gateway": "test-gateway", }, }, - "vcenterNetwork": "test-vcenter-network", + "vcenter_network": "test-vcenter-network", }, control_plane_node={ "cpus": 4, "memory": 8192, "replicas": 1, - "autoResizeConfig": { + "auto_resize_config": { "enabled": True, }, }, load_balancer={ - "vipConfig": { - "controlPlaneVip": "10.251.133.5", - "ingressVip": "10.251.135.19", + "vip_config": { + "control_plane_vip": "10.251.133.5", + "ingress_vip": "10.251.135.19", }, - "f5Config": { + "f5_config": { "address": "10.0.0.1", "partition": "test-partition", - "snatPool": "test-snap-pool", + "snat_pool": "test-snap-pool", }, }, dataplane_v2={ - "dataplaneV2Enabled": True, - "windowsDataplaneV2Enabled": True, - "advancedNetworking": True, + "dataplane_v2_enabled": True, + "windows_dataplane_v2_enabled": True, + "advanced_networking": True, }, vm_tracking_enabled=True, enable_control_plane_v2=True, disable_bundled_ingress=True, authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "testuser@gmail.com", }], }, anti_affinity_groups={ - "aagConfigDisabled": True, + "aag_config_disabled": True, }, auto_repair_config={ "enabled": True, }, storage={ - "vsphereCsiDisabled": True, + "vsphere_csi_disabled": True, }) ``` ### Gkeonprem Vmware Cluster Manuallb @@ -1108,15 +1108,15 @@ def __init__(__self__, on_prem_version="1.13.1-gke.35", annotations={}, network_config={ - "serviceAddressCidrBlocks": ["10.96.0.0/12"], - "podAddressCidrBlocks": ["192.168.0.0/16"], - "hostConfig": { - "dnsServers": ["10.254.41.1"], - "ntpServers": ["216.239.35.8"], - "dnsSearchDomains": ["test-domain"], + "service_address_cidr_blocks": ["10.96.0.0/12"], + "pod_address_cidr_blocks": ["192.168.0.0/16"], + "host_config": { + "dns_servers": ["10.254.41.1"], + "ntp_servers": ["216.239.35.8"], + "dns_search_domains": ["test-domain"], }, - "staticIpConfig": { - "ipBlocks": [{ + "static_ip_config": { + "ip_blocks": [{ "netmask": "255.255.252.0", "gateway": "10.251.31.254", "ips": [ @@ -1144,48 +1144,48 @@ def __init__(__self__, "cpus": 4, "memory": 8192, "replicas": 1, - "autoResizeConfig": { + "auto_resize_config": { "enabled": True, }, }, load_balancer={ - "vipConfig": { - "controlPlaneVip": "10.251.133.5", - "ingressVip": "10.251.135.19", + "vip_config": { + "control_plane_vip": "10.251.133.5", + "ingress_vip": "10.251.135.19", }, - "manualLbConfig": { - "ingressHttpNodePort": 30005, - "ingressHttpsNodePort": 30006, - "controlPlaneNodePort": 30007, - "konnectivityServerNodePort": 30008, + "manual_lb_config": { + "ingress_http_node_port": 30005, + "ingress_https_node_port": 30006, + "control_plane_node_port": 30007, + "konnectivity_server_node_port": 30008, }, }, vcenters=[{ - "resourcePool": "test-resource-pool", + "resource_pool": "test-resource-pool", "datastore": "test-datastore", "datacenter": "test-datacenter", "cluster": "test-cluster", "folder": "test-folder", - "caCertData": "test-ca-cert-data", - "storagePolicyName": "test-storage-policy-name", + "ca_cert_data": "test-ca-cert-data", + "storage_policy_name": "test-storage-policy-name", }], dataplane_v2={ - "dataplaneV2Enabled": True, - "windowsDataplaneV2Enabled": True, - "advancedNetworking": True, + "dataplane_v2_enabled": True, + "windows_dataplane_v2_enabled": True, + "advanced_networking": True, }, vm_tracking_enabled=True, enable_control_plane_v2=True, upgrade_policy={ - "controlPlaneOnly": True, + "control_plane_only": True, }, authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "testuser@gmail.com", }], }, anti_affinity_groups={ - "aagConfigDisabled": True, + "aag_config_disabled": True, }, auto_repair_config={ "enabled": True, @@ -1273,9 +1273,9 @@ def __init__(__self__, on_prem_version="1.13.1-gke.35", annotations={}, network_config={ - "serviceAddressCidrBlocks": ["10.96.0.0/12"], - "podAddressCidrBlocks": ["192.168.0.0/16"], - "dhcpIpConfig": { + "service_address_cidr_blocks": ["10.96.0.0/12"], + "pod_address_cidr_blocks": ["192.168.0.0/16"], + "dhcp_ip_config": { "enabled": True, }, }, @@ -1285,23 +1285,23 @@ def __init__(__self__, "replicas": 1, }, load_balancer={ - "vipConfig": { - "controlPlaneVip": "10.251.133.5", - "ingressVip": "10.251.135.19", + "vip_config": { + "control_plane_vip": "10.251.133.5", + "ingress_vip": "10.251.135.19", }, - "metalLbConfig": { - "addressPools": [ + "metal_lb_config": { + "address_pools": [ { "pool": "ingress-ip", - "manualAssign": True, + "manual_assign": True, "addresses": ["10.251.135.19"], - "avoidBuggyIps": True, + "avoid_buggy_ips": True, }, { "pool": "lb-test-ip", - "manualAssign": True, + "manual_assign": True, "addresses": ["10.251.135.19"], - "avoidBuggyIps": True, + "avoid_buggy_ips": True, }, ], }, @@ -1321,13 +1321,13 @@ def __init__(__self__, on_prem_version="1.13.1-gke.35", annotations={}, network_config={ - "serviceAddressCidrBlocks": ["10.96.0.0/12"], - "podAddressCidrBlocks": ["192.168.0.0/16"], - "dhcpIpConfig": { + "service_address_cidr_blocks": ["10.96.0.0/12"], + "pod_address_cidr_blocks": ["192.168.0.0/16"], + "dhcp_ip_config": { "enabled": True, }, - "controlPlaneV2Config": { - "controlPlaneIpBlock": { + "control_plane_v2_config": { + "control_plane_ip_block": { "ips": [{ "hostname": "test-hostname", "ip": "10.0.0.1", @@ -1336,48 +1336,48 @@ def __init__(__self__, "gateway": "test-gateway", }, }, - "vcenterNetwork": "test-vcenter-network", + "vcenter_network": "test-vcenter-network", }, control_plane_node={ "cpus": 4, "memory": 8192, "replicas": 1, - "autoResizeConfig": { + "auto_resize_config": { "enabled": True, }, }, load_balancer={ - "vipConfig": { - "controlPlaneVip": "10.251.133.5", - "ingressVip": "10.251.135.19", + "vip_config": { + "control_plane_vip": "10.251.133.5", + "ingress_vip": "10.251.135.19", }, - "f5Config": { + "f5_config": { "address": "10.0.0.1", "partition": "test-partition", - "snatPool": "test-snap-pool", + "snat_pool": "test-snap-pool", }, }, dataplane_v2={ - "dataplaneV2Enabled": True, - "windowsDataplaneV2Enabled": True, - "advancedNetworking": True, + "dataplane_v2_enabled": True, + "windows_dataplane_v2_enabled": True, + "advanced_networking": True, }, vm_tracking_enabled=True, enable_control_plane_v2=True, disable_bundled_ingress=True, authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "testuser@gmail.com", }], }, anti_affinity_groups={ - "aagConfigDisabled": True, + "aag_config_disabled": True, }, auto_repair_config={ "enabled": True, }, storage={ - "vsphereCsiDisabled": True, + "vsphere_csi_disabled": True, }) ``` ### Gkeonprem Vmware Cluster Manuallb @@ -1394,15 +1394,15 @@ def __init__(__self__, on_prem_version="1.13.1-gke.35", annotations={}, network_config={ - "serviceAddressCidrBlocks": ["10.96.0.0/12"], - "podAddressCidrBlocks": ["192.168.0.0/16"], - "hostConfig": { - "dnsServers": ["10.254.41.1"], - "ntpServers": ["216.239.35.8"], - "dnsSearchDomains": ["test-domain"], + "service_address_cidr_blocks": ["10.96.0.0/12"], + "pod_address_cidr_blocks": ["192.168.0.0/16"], + "host_config": { + "dns_servers": ["10.254.41.1"], + "ntp_servers": ["216.239.35.8"], + "dns_search_domains": ["test-domain"], }, - "staticIpConfig": { - "ipBlocks": [{ + "static_ip_config": { + "ip_blocks": [{ "netmask": "255.255.252.0", "gateway": "10.251.31.254", "ips": [ @@ -1430,48 +1430,48 @@ def __init__(__self__, "cpus": 4, "memory": 8192, "replicas": 1, - "autoResizeConfig": { + "auto_resize_config": { "enabled": True, }, }, load_balancer={ - "vipConfig": { - "controlPlaneVip": "10.251.133.5", - "ingressVip": "10.251.135.19", + "vip_config": { + "control_plane_vip": "10.251.133.5", + "ingress_vip": "10.251.135.19", }, - "manualLbConfig": { - "ingressHttpNodePort": 30005, - "ingressHttpsNodePort": 30006, - "controlPlaneNodePort": 30007, - "konnectivityServerNodePort": 30008, + "manual_lb_config": { + "ingress_http_node_port": 30005, + "ingress_https_node_port": 30006, + "control_plane_node_port": 30007, + "konnectivity_server_node_port": 30008, }, }, vcenters=[{ - "resourcePool": "test-resource-pool", + "resource_pool": "test-resource-pool", "datastore": "test-datastore", "datacenter": "test-datacenter", "cluster": "test-cluster", "folder": "test-folder", - "caCertData": "test-ca-cert-data", - "storagePolicyName": "test-storage-policy-name", + "ca_cert_data": "test-ca-cert-data", + "storage_policy_name": "test-storage-policy-name", }], dataplane_v2={ - "dataplaneV2Enabled": True, - "windowsDataplaneV2Enabled": True, - "advancedNetworking": True, + "dataplane_v2_enabled": True, + "windows_dataplane_v2_enabled": True, + "advanced_networking": True, }, vm_tracking_enabled=True, enable_control_plane_v2=True, upgrade_policy={ - "controlPlaneOnly": True, + "control_plane_only": True, }, authorization={ - "adminUsers": [{ + "admin_users": [{ "username": "testuser@gmail.com", }], }, anti_affinity_groups={ - "aagConfigDisabled": True, + "aag_config_disabled": True, }, auto_repair_config={ "enabled": True, diff --git a/sdk/python/pulumi_gcp/gkeonprem/v_mware_node_pool.py b/sdk/python/pulumi_gcp/gkeonprem/v_mware_node_pool.py index 832e357326..4433f1520c 100644 --- a/sdk/python/pulumi_gcp/gkeonprem/v_mware_node_pool.py +++ b/sdk/python/pulumi_gcp/gkeonprem/v_mware_node_pool.py @@ -503,9 +503,9 @@ def __init__(__self__, description="test cluster", on_prem_version="1.13.1-gke.35", network_config={ - "serviceAddressCidrBlocks": ["10.96.0.0/12"], - "podAddressCidrBlocks": ["192.168.0.0/16"], - "dhcpIpConfig": { + "service_address_cidr_blocks": ["10.96.0.0/12"], + "pod_address_cidr_blocks": ["192.168.0.0/16"], + "dhcp_ip_config": { "enabled": True, }, }, @@ -515,20 +515,20 @@ def __init__(__self__, "replicas": 1, }, load_balancer={ - "vipConfig": { - "controlPlaneVip": "10.251.133.5", - "ingressVip": "10.251.135.19", + "vip_config": { + "control_plane_vip": "10.251.133.5", + "ingress_vip": "10.251.135.19", }, - "metalLbConfig": { - "addressPools": [ + "metal_lb_config": { + "address_pools": [ { "pool": "ingress-ip", - "manualAssign": True, + "manual_assign": True, "addresses": ["10.251.135.19"], }, { "pool": "lb-test-ip", - "manualAssign": True, + "manual_assign": True, "addresses": ["10.251.135.19"], }, ], @@ -540,8 +540,8 @@ def __init__(__self__, vmware_cluster=default_basic.name, config={ "replicas": 3, - "imageType": "ubuntu_containerd", - "enableLoadBalancer": True, + "image_type": "ubuntu_containerd", + "enable_load_balancer": True, }) ``` ## Import @@ -608,9 +608,9 @@ def __init__(__self__, description="test cluster", on_prem_version="1.13.1-gke.35", network_config={ - "serviceAddressCidrBlocks": ["10.96.0.0/12"], - "podAddressCidrBlocks": ["192.168.0.0/16"], - "dhcpIpConfig": { + "service_address_cidr_blocks": ["10.96.0.0/12"], + "pod_address_cidr_blocks": ["192.168.0.0/16"], + "dhcp_ip_config": { "enabled": True, }, }, @@ -620,20 +620,20 @@ def __init__(__self__, "replicas": 1, }, load_balancer={ - "vipConfig": { - "controlPlaneVip": "10.251.133.5", - "ingressVip": "10.251.135.19", + "vip_config": { + "control_plane_vip": "10.251.133.5", + "ingress_vip": "10.251.135.19", }, - "metalLbConfig": { - "addressPools": [ + "metal_lb_config": { + "address_pools": [ { "pool": "ingress-ip", - "manualAssign": True, + "manual_assign": True, "addresses": ["10.251.135.19"], }, { "pool": "lb-test-ip", - "manualAssign": True, + "manual_assign": True, "addresses": ["10.251.135.19"], }, ], @@ -645,8 +645,8 @@ def __init__(__self__, vmware_cluster=default_basic.name, config={ "replicas": 3, - "imageType": "ubuntu_containerd", - "enableLoadBalancer": True, + "image_type": "ubuntu_containerd", + "enable_load_balancer": True, }) ``` ## Import diff --git a/sdk/python/pulumi_gcp/healthcare/dataset.py b/sdk/python/pulumi_gcp/healthcare/dataset.py index f10afc87ac..f36af9d0fa 100644 --- a/sdk/python/pulumi_gcp/healthcare/dataset.py +++ b/sdk/python/pulumi_gcp/healthcare/dataset.py @@ -293,7 +293,7 @@ def __init__(__self__, location="us-central1", time_zone="UTC", encryption_spec={ - "kmsKeyName": crypto_key.id, + "kms_key_name": crypto_key.id, }, opts = pulumi.ResourceOptions(depends_on=[healthcare_cmek_keyuser])) ``` @@ -388,7 +388,7 @@ def __init__(__self__, location="us-central1", time_zone="UTC", encryption_spec={ - "kmsKeyName": crypto_key.id, + "kms_key_name": crypto_key.id, }, opts = pulumi.ResourceOptions(depends_on=[healthcare_cmek_keyuser])) ``` diff --git a/sdk/python/pulumi_gcp/healthcare/dicom_store.py b/sdk/python/pulumi_gcp/healthcare/dicom_store.py index 2b72365477..95c2c0d03c 100644 --- a/sdk/python/pulumi_gcp/healthcare/dicom_store.py +++ b/sdk/python/pulumi_gcp/healthcare/dicom_store.py @@ -352,7 +352,7 @@ def __init__(__self__, name="example-dicom-store", dataset=dataset.id, notification_config={ - "pubsubTopic": topic.id, + "pubsub_topic": topic.id, }, labels={ "label1": "labelvalue1", @@ -382,15 +382,15 @@ def __init__(__self__, name="example-dicom-store", dataset=dataset.id, notification_config={ - "pubsubTopic": topic.id, - "sendForBulkImport": True, + "pubsub_topic": topic.id, + "send_for_bulk_import": True, }, labels={ "label1": "labelvalue1", }, stream_configs=[{ - "bigqueryDestination": { - "tableUri": pulumi.Output.all(bq_dataset.project, bq_dataset.dataset_id, bq_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), + "bigquery_destination": { + "table_uri": pulumi.Output.all(bq_dataset.project, bq_dataset.dataset_id, bq_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), }, }]) ``` @@ -471,7 +471,7 @@ def __init__(__self__, name="example-dicom-store", dataset=dataset.id, notification_config={ - "pubsubTopic": topic.id, + "pubsub_topic": topic.id, }, labels={ "label1": "labelvalue1", @@ -501,15 +501,15 @@ def __init__(__self__, name="example-dicom-store", dataset=dataset.id, notification_config={ - "pubsubTopic": topic.id, - "sendForBulkImport": True, + "pubsub_topic": topic.id, + "send_for_bulk_import": True, }, labels={ "label1": "labelvalue1", }, stream_configs=[{ - "bigqueryDestination": { - "tableUri": pulumi.Output.all(bq_dataset.project, bq_dataset.dataset_id, bq_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), + "bigquery_destination": { + "table_uri": pulumi.Output.all(bq_dataset.project, bq_dataset.dataset_id, bq_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), }, }]) ``` diff --git a/sdk/python/pulumi_gcp/healthcare/fhir_store.py b/sdk/python/pulumi_gcp/healthcare/fhir_store.py index 5d5fb67b3d..42a5a2763b 100644 --- a/sdk/python/pulumi_gcp/healthcare/fhir_store.py +++ b/sdk/python/pulumi_gcp/healthcare/fhir_store.py @@ -800,7 +800,7 @@ def __init__(__self__, enable_history_import=False, default_search_handling_strict=False, notification_configs=[{ - "pubsubTopic": topic.id, + "pubsub_topic": topic.id, }], labels={ "label1": "labelvalue1", @@ -833,14 +833,14 @@ def __init__(__self__, "label1": "labelvalue1", }, stream_configs=[{ - "resourceTypes": ["Observation"], - "bigqueryDestination": { - "datasetUri": pulumi.Output.all(bq_dataset.project, bq_dataset.dataset_id).apply(lambda project, dataset_id: f"bq://{project}.{dataset_id}"), - "schemaConfig": { - "recursiveStructureDepth": 3, - "lastUpdatedPartitionConfig": { + "resource_types": ["Observation"], + "bigquery_destination": { + "dataset_uri": pulumi.Output.all(bq_dataset.project, bq_dataset.dataset_id).apply(lambda project, dataset_id: f"bq://{project}.{dataset_id}"), + "schema_config": { + "recursive_structure_depth": 3, + "last_updated_partition_config": { "type": "HOUR", - "expirationMs": "1000000", + "expiration_ms": "1000000", }, }, }, @@ -869,9 +869,9 @@ def __init__(__self__, "label1": "labelvalue1", }, notification_configs=[{ - "pubsubTopic": topic.id, - "sendFullResource": True, - "sendPreviousResourceOnDelete": True, + "pubsub_topic": topic.id, + "send_full_resource": True, + "send_previous_resource_on_delete": True, }]) ``` @@ -1001,7 +1001,7 @@ def __init__(__self__, enable_history_import=False, default_search_handling_strict=False, notification_configs=[{ - "pubsubTopic": topic.id, + "pubsub_topic": topic.id, }], labels={ "label1": "labelvalue1", @@ -1034,14 +1034,14 @@ def __init__(__self__, "label1": "labelvalue1", }, stream_configs=[{ - "resourceTypes": ["Observation"], - "bigqueryDestination": { - "datasetUri": pulumi.Output.all(bq_dataset.project, bq_dataset.dataset_id).apply(lambda project, dataset_id: f"bq://{project}.{dataset_id}"), - "schemaConfig": { - "recursiveStructureDepth": 3, - "lastUpdatedPartitionConfig": { + "resource_types": ["Observation"], + "bigquery_destination": { + "dataset_uri": pulumi.Output.all(bq_dataset.project, bq_dataset.dataset_id).apply(lambda project, dataset_id: f"bq://{project}.{dataset_id}"), + "schema_config": { + "recursive_structure_depth": 3, + "last_updated_partition_config": { "type": "HOUR", - "expirationMs": "1000000", + "expiration_ms": "1000000", }, }, }, @@ -1070,9 +1070,9 @@ def __init__(__self__, "label1": "labelvalue1", }, notification_configs=[{ - "pubsubTopic": topic.id, - "sendFullResource": True, - "sendPreviousResourceOnDelete": True, + "pubsub_topic": topic.id, + "send_full_resource": True, + "send_previous_resource_on_delete": True, }]) ``` diff --git a/sdk/python/pulumi_gcp/healthcare/hl7_store.py b/sdk/python/pulumi_gcp/healthcare/hl7_store.py index 7b9035a5f8..7935a6bc03 100644 --- a/sdk/python/pulumi_gcp/healthcare/hl7_store.py +++ b/sdk/python/pulumi_gcp/healthcare/hl7_store.py @@ -447,7 +447,7 @@ def __init__(__self__, dataset=dataset.id, reject_duplicate_message=True, notification_configs=[{ - "pubsubTopic": topic.id, + "pubsub_topic": topic.id, }], labels={ "label1": "labelvalue1", @@ -466,8 +466,8 @@ def __init__(__self__, name="example-hl7-v2-store", dataset=dataset.id, parser_config={ - "allowNullHeader": False, - "segmentTerminator": "Jw==", + "allow_null_header": False, + "segment_terminator": "Jw==", "schema": \"\"\"{ "schemas": [{ "messageSchemaConfigs": { @@ -562,8 +562,8 @@ def __init__(__self__, name="example-hl7-v2-store", dataset=dataset.id, parser_config={ - "allowNullHeader": False, - "segmentTerminator": "Jw==", + "allow_null_header": False, + "segment_terminator": "Jw==", "version": "V2", }) ``` @@ -652,7 +652,7 @@ def __init__(__self__, dataset=dataset.id, reject_duplicate_message=True, notification_configs=[{ - "pubsubTopic": topic.id, + "pubsub_topic": topic.id, }], labels={ "label1": "labelvalue1", @@ -671,8 +671,8 @@ def __init__(__self__, name="example-hl7-v2-store", dataset=dataset.id, parser_config={ - "allowNullHeader": False, - "segmentTerminator": "Jw==", + "allow_null_header": False, + "segment_terminator": "Jw==", "schema": \"\"\"{ "schemas": [{ "messageSchemaConfigs": { @@ -767,8 +767,8 @@ def __init__(__self__, name="example-hl7-v2-store", dataset=dataset.id, parser_config={ - "allowNullHeader": False, - "segmentTerminator": "Jw==", + "allow_null_header": False, + "segment_terminator": "Jw==", "version": "V2", }) ``` diff --git a/sdk/python/pulumi_gcp/iam/access_boundary_policy.py b/sdk/python/pulumi_gcp/iam/access_boundary_policy.py index a0d2edc69a..9d6b5fec4b 100644 --- a/sdk/python/pulumi_gcp/iam/access_boundary_policy.py +++ b/sdk/python/pulumi_gcp/iam/access_boundary_policy.py @@ -218,10 +218,10 @@ def __init__(__self__, title="chromeos_no_lock", basic={ "conditions": [{ - "devicePolicy": { - "requireScreenLock": True, - "osConstraints": [{ - "osType": "DESKTOP_CHROME_OS", + "device_policy": { + "require_screen_lock": True, + "os_constraints": [{ + "os_type": "DESKTOP_CHROME_OS", }], }, "regions": [ @@ -237,10 +237,10 @@ def __init__(__self__, display_name="My AB policy", rules=[{ "description": "AB rule", - "accessBoundaryRule": { - "availableResource": "*", - "availablePermissions": ["*"], - "availabilityCondition": { + "access_boundary_rule": { + "available_resource": "*", + "available_permissions": ["*"], + "availability_condition": { "title": "Access level expr", "expression": pulumi.Output.all(project.org_id, test_access.name).apply(lambda org_id, name: f"request.matchAccessLevels('{org_id}', ['{name}'])"), }, @@ -302,10 +302,10 @@ def __init__(__self__, title="chromeos_no_lock", basic={ "conditions": [{ - "devicePolicy": { - "requireScreenLock": True, - "osConstraints": [{ - "osType": "DESKTOP_CHROME_OS", + "device_policy": { + "require_screen_lock": True, + "os_constraints": [{ + "os_type": "DESKTOP_CHROME_OS", }], }, "regions": [ @@ -321,10 +321,10 @@ def __init__(__self__, display_name="My AB policy", rules=[{ "description": "AB rule", - "accessBoundaryRule": { - "availableResource": "*", - "availablePermissions": ["*"], - "availabilityCondition": { + "access_boundary_rule": { + "available_resource": "*", + "available_permissions": ["*"], + "availability_condition": { "title": "Access level expr", "expression": pulumi.Output.all(project.org_id, test_access.name).apply(lambda org_id, name: f"request.matchAccessLevels('{org_id}', ['{name}'])"), }, diff --git a/sdk/python/pulumi_gcp/iam/deny_policy.py b/sdk/python/pulumi_gcp/iam/deny_policy.py index 2d00e562d3..dce2f6a0c4 100644 --- a/sdk/python/pulumi_gcp/iam/deny_policy.py +++ b/sdk/python/pulumi_gcp/iam/deny_policy.py @@ -224,25 +224,25 @@ def __init__(__self__, rules=[ { "description": "First rule", - "denyRule": { - "deniedPrincipals": ["principalSet://goog/public:all"], - "denialCondition": { + "deny_rule": { + "denied_principals": ["principalSet://goog/public:all"], + "denial_condition": { "title": "Some expr", "expression": "!resource.matchTag('12345678/env', 'test')", }, - "deniedPermissions": ["cloudresourcemanager.googleapis.com/projects.update"], + "denied_permissions": ["cloudresourcemanager.googleapis.com/projects.update"], }, }, { "description": "Second rule", - "denyRule": { - "deniedPrincipals": ["principalSet://goog/public:all"], - "denialCondition": { + "deny_rule": { + "denied_principals": ["principalSet://goog/public:all"], + "denial_condition": { "title": "Some expr", "expression": "!resource.matchTag('12345678/env', 'test')", }, - "deniedPermissions": ["cloudresourcemanager.googleapis.com/projects.update"], - "exceptionPrincipals": [test_account.email.apply(lambda email: f"principal://iam.googleapis.com/projects/-/serviceAccounts/{email}")], + "denied_permissions": ["cloudresourcemanager.googleapis.com/projects.update"], + "exception_principals": [test_account.email.apply(lambda email: f"principal://iam.googleapis.com/projects/-/serviceAccounts/{email}")], }, }, ]) @@ -308,25 +308,25 @@ def __init__(__self__, rules=[ { "description": "First rule", - "denyRule": { - "deniedPrincipals": ["principalSet://goog/public:all"], - "denialCondition": { + "deny_rule": { + "denied_principals": ["principalSet://goog/public:all"], + "denial_condition": { "title": "Some expr", "expression": "!resource.matchTag('12345678/env', 'test')", }, - "deniedPermissions": ["cloudresourcemanager.googleapis.com/projects.update"], + "denied_permissions": ["cloudresourcemanager.googleapis.com/projects.update"], }, }, { "description": "Second rule", - "denyRule": { - "deniedPrincipals": ["principalSet://goog/public:all"], - "denialCondition": { + "deny_rule": { + "denied_principals": ["principalSet://goog/public:all"], + "denial_condition": { "title": "Some expr", "expression": "!resource.matchTag('12345678/env', 'test')", }, - "deniedPermissions": ["cloudresourcemanager.googleapis.com/projects.update"], - "exceptionPrincipals": [test_account.email.apply(lambda email: f"principal://iam.googleapis.com/projects/-/serviceAccounts/{email}")], + "denied_permissions": ["cloudresourcemanager.googleapis.com/projects.update"], + "exception_principals": [test_account.email.apply(lambda email: f"principal://iam.googleapis.com/projects/-/serviceAccounts/{email}")], }, }, ]) diff --git a/sdk/python/pulumi_gcp/iam/workforce_pool.py b/sdk/python/pulumi_gcp/iam/workforce_pool.py index d710c82acc..93b82c3c7c 100644 --- a/sdk/python/pulumi_gcp/iam/workforce_pool.py +++ b/sdk/python/pulumi_gcp/iam/workforce_pool.py @@ -442,10 +442,10 @@ def __init__(__self__, disabled=False, session_duration="7200s", access_restrictions={ - "allowedServices": [{ + "allowed_services": [{ "domain": "backstory.chronicle.security", }], - "disableProgrammaticSignin": False, + "disable_programmatic_signin": False, }) ``` @@ -537,10 +537,10 @@ def __init__(__self__, disabled=False, session_duration="7200s", access_restrictions={ - "allowedServices": [{ + "allowed_services": [{ "domain": "backstory.chronicle.security", }], - "disableProgrammaticSignin": False, + "disable_programmatic_signin": False, }) ``` diff --git a/sdk/python/pulumi_gcp/iam/workforce_pool_provider.py b/sdk/python/pulumi_gcp/iam/workforce_pool_provider.py index f903e8eab9..51ad73e5ea 100644 --- a/sdk/python/pulumi_gcp/iam/workforce_pool_provider.py +++ b/sdk/python/pulumi_gcp/iam/workforce_pool_provider.py @@ -716,7 +716,7 @@ def __init__(__self__, "google.subject": "assertion.sub", }, saml={ - "idpMetadataXml": " MIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv", + "idp_metadata_xml": " MIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv", }) ``` ### Iam Workforce Pool Provider Saml Full @@ -737,7 +737,7 @@ def __init__(__self__, "google.subject": "assertion.sub", }, saml={ - "idpMetadataXml": " MIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv", + "idp_metadata_xml": " MIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv", }, display_name="Display name", description="A sample SAML workforce pool provider.", @@ -762,16 +762,16 @@ def __init__(__self__, "google.subject": "assertion.sub", }, oidc={ - "issuerUri": "https://accounts.thirdparty.com", - "clientId": "client-id", - "clientSecret": { + "issuer_uri": "https://accounts.thirdparty.com", + "client_id": "client-id", + "client_secret": { "value": { - "plainText": "client-secret", + "plain_text": "client-secret", }, }, - "webSsoConfig": { - "responseType": "CODE", - "assertionClaimsBehavior": "MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS", + "web_sso_config": { + "response_type": "CODE", + "assertion_claims_behavior": "MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS", }, }) ``` @@ -793,17 +793,17 @@ def __init__(__self__, "google.subject": "assertion.sub", }, oidc={ - "issuerUri": "https://accounts.thirdparty.com", - "clientId": "client-id", - "clientSecret": { + "issuer_uri": "https://accounts.thirdparty.com", + "client_id": "client-id", + "client_secret": { "value": { - "plainText": "client-secret", + "plain_text": "client-secret", }, }, - "webSsoConfig": { - "responseType": "CODE", - "assertionClaimsBehavior": "MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS", - "additionalScopes": [ + "web_sso_config": { + "response_type": "CODE", + "assertion_claims_behavior": "MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS", + "additional_scopes": [ "groups", "roles", ], @@ -832,27 +832,27 @@ def __init__(__self__, "google.subject": "assertion.sub", }, oidc={ - "issuerUri": "https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/", - "clientId": "https://analysis.windows.net/powerbi/connector/GoogleBigQuery", - "webSsoConfig": { - "responseType": "CODE", - "assertionClaimsBehavior": "MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS", + "issuer_uri": "https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/", + "client_id": "https://analysis.windows.net/powerbi/connector/GoogleBigQuery", + "web_sso_config": { + "response_type": "CODE", + "assertion_claims_behavior": "MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS", }, - "clientSecret": { + "client_secret": { "value": { - "plainText": "client-secret", + "plain_text": "client-secret", }, }, }, extra_attributes_oauth2_client={ - "issuerUri": "https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0", - "clientId": "client-id", - "clientSecret": { + "issuer_uri": "https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0", + "client_id": "client-id", + "client_secret": { "value": { - "plainText": "client-secret", + "plain_text": "client-secret", }, }, - "attributesType": "AZURE_AD_GROUPS_MAIL", + "attributes_type": "AZURE_AD_GROUPS_MAIL", }) ``` ### Iam Workforce Pool Provider Extra Attributes Oauth2 Config Client Full @@ -873,28 +873,28 @@ def __init__(__self__, "google.subject": "assertion.sub", }, oidc={ - "issuerUri": "https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/", - "clientId": "https://analysis.windows.net/powerbi/connector/GoogleBigQuery", - "clientSecret": { + "issuer_uri": "https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/", + "client_id": "https://analysis.windows.net/powerbi/connector/GoogleBigQuery", + "client_secret": { "value": { - "plainText": "client-secret", + "plain_text": "client-secret", }, }, - "webSsoConfig": { - "responseType": "CODE", - "assertionClaimsBehavior": "MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS", + "web_sso_config": { + "response_type": "CODE", + "assertion_claims_behavior": "MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS", }, }, extra_attributes_oauth2_client={ - "issuerUri": "https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0", - "clientId": "client-id", - "clientSecret": { + "issuer_uri": "https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0", + "client_id": "client-id", + "client_secret": { "value": { - "plainText": "client-secret", + "plain_text": "client-secret", }, }, - "attributesType": "AZURE_AD_GROUPS_MAIL", - "queryParameters": { + "attributes_type": "AZURE_AD_GROUPS_MAIL", + "query_parameters": { "filter": "mail:gcp", }, }) @@ -1030,7 +1030,7 @@ def __init__(__self__, "google.subject": "assertion.sub", }, saml={ - "idpMetadataXml": " MIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv", + "idp_metadata_xml": " MIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv", }) ``` ### Iam Workforce Pool Provider Saml Full @@ -1051,7 +1051,7 @@ def __init__(__self__, "google.subject": "assertion.sub", }, saml={ - "idpMetadataXml": " MIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv", + "idp_metadata_xml": " MIIDpDCCAoygAwIBAgIGAX7/5qPhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEzARBgNVBAMMCmRldi00NTg0MjExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wHhcNMjIwMjE2MDAxOTEyWhcNMzIwMjE2MDAyMDEyWjCBkjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDTALBgNVBAoMBE9rdGExFDASBgNVBAsMC1NTT1Byb3ZpZGVyMRMwEQYDVQQDDApkZXYtNDU4NDIxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrBl7GKz52cRpxF9xCsirnRuMxnhFBaUrsHqAQrLqWmdlpNYZTVg+T9iQ+aq/iE68L+BRZcZniKIvW58wqqS0ltXVvIkXuDSvnvnkkI5yMIVErR20K8jSOKQm1FmK+fgAJ4koshFiu9oLiqu0Ejc0DuL3/XRsb4RuxjktKTb1khgBBtb+7idEk0sFR0RPefAweXImJkDHDm7SxjDwGJUubbqpdTxasPr0W+AHI1VUzsUsTiHAoyb0XDkYqHfDzhj/ZdIEl4zHQ3bEZvlD984ztAnmX2SuFLLKfXeAAGHei8MMixJvwxYkkPeYZ/5h8WgBZPP4heS2CPjwYExt29L8QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQARjJFz++a9Z5IQGFzsZMrX2EDR5ML4xxUiQkbhld1S1PljOLcYFARDmUC2YYHOueU4ee8Jid9nPGEUebV/4Jok+b+oQh+dWMgiWjSLI7h5q4OYZ3VJtdlVwgMFt2iz+/4yBKMUZ50g3Qgg36vE34us+eKitg759JgCNsibxn0qtJgSPm0sgP2L6yTaLnoEUbXBRxCwynTSkp9ZijZqEzbhN0e2dWv7Rx/nfpohpDP6vEiFImKFHpDSv3M/5de1ytQzPFrZBYt9WlzlYwE1aD9FHCxdd+rWgYMVVoRaRmndpV/Rq3QUuDuFJtaoX11bC7ExkOpg9KstZzA63i3VcfYv", }, display_name="Display name", description="A sample SAML workforce pool provider.", @@ -1076,16 +1076,16 @@ def __init__(__self__, "google.subject": "assertion.sub", }, oidc={ - "issuerUri": "https://accounts.thirdparty.com", - "clientId": "client-id", - "clientSecret": { + "issuer_uri": "https://accounts.thirdparty.com", + "client_id": "client-id", + "client_secret": { "value": { - "plainText": "client-secret", + "plain_text": "client-secret", }, }, - "webSsoConfig": { - "responseType": "CODE", - "assertionClaimsBehavior": "MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS", + "web_sso_config": { + "response_type": "CODE", + "assertion_claims_behavior": "MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS", }, }) ``` @@ -1107,17 +1107,17 @@ def __init__(__self__, "google.subject": "assertion.sub", }, oidc={ - "issuerUri": "https://accounts.thirdparty.com", - "clientId": "client-id", - "clientSecret": { + "issuer_uri": "https://accounts.thirdparty.com", + "client_id": "client-id", + "client_secret": { "value": { - "plainText": "client-secret", + "plain_text": "client-secret", }, }, - "webSsoConfig": { - "responseType": "CODE", - "assertionClaimsBehavior": "MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS", - "additionalScopes": [ + "web_sso_config": { + "response_type": "CODE", + "assertion_claims_behavior": "MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS", + "additional_scopes": [ "groups", "roles", ], @@ -1146,27 +1146,27 @@ def __init__(__self__, "google.subject": "assertion.sub", }, oidc={ - "issuerUri": "https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/", - "clientId": "https://analysis.windows.net/powerbi/connector/GoogleBigQuery", - "webSsoConfig": { - "responseType": "CODE", - "assertionClaimsBehavior": "MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS", + "issuer_uri": "https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/", + "client_id": "https://analysis.windows.net/powerbi/connector/GoogleBigQuery", + "web_sso_config": { + "response_type": "CODE", + "assertion_claims_behavior": "MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS", }, - "clientSecret": { + "client_secret": { "value": { - "plainText": "client-secret", + "plain_text": "client-secret", }, }, }, extra_attributes_oauth2_client={ - "issuerUri": "https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0", - "clientId": "client-id", - "clientSecret": { + "issuer_uri": "https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0", + "client_id": "client-id", + "client_secret": { "value": { - "plainText": "client-secret", + "plain_text": "client-secret", }, }, - "attributesType": "AZURE_AD_GROUPS_MAIL", + "attributes_type": "AZURE_AD_GROUPS_MAIL", }) ``` ### Iam Workforce Pool Provider Extra Attributes Oauth2 Config Client Full @@ -1187,28 +1187,28 @@ def __init__(__self__, "google.subject": "assertion.sub", }, oidc={ - "issuerUri": "https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/", - "clientId": "https://analysis.windows.net/powerbi/connector/GoogleBigQuery", - "clientSecret": { + "issuer_uri": "https://sts.windows.net/826602fe-2101-470c-9d71-ee1343668989/", + "client_id": "https://analysis.windows.net/powerbi/connector/GoogleBigQuery", + "client_secret": { "value": { - "plainText": "client-secret", + "plain_text": "client-secret", }, }, - "webSsoConfig": { - "responseType": "CODE", - "assertionClaimsBehavior": "MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS", + "web_sso_config": { + "response_type": "CODE", + "assertion_claims_behavior": "MERGE_USER_INFO_OVER_ID_TOKEN_CLAIMS", }, }, extra_attributes_oauth2_client={ - "issuerUri": "https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0", - "clientId": "client-id", - "clientSecret": { + "issuer_uri": "https://login.microsoftonline.com/826602fe-2101-470c-9d71-ee1343668989/v2.0", + "client_id": "client-id", + "client_secret": { "value": { - "plainText": "client-secret", + "plain_text": "client-secret", }, }, - "attributesType": "AZURE_AD_GROUPS_MAIL", - "queryParameters": { + "attributes_type": "AZURE_AD_GROUPS_MAIL", + "query_parameters": { "filter": "mail:gcp", }, }) diff --git a/sdk/python/pulumi_gcp/iam/workload_identity_pool_provider.py b/sdk/python/pulumi_gcp/iam/workload_identity_pool_provider.py index 6d7a8c4e3f..dd145d0202 100644 --- a/sdk/python/pulumi_gcp/iam/workload_identity_pool_provider.py +++ b/sdk/python/pulumi_gcp/iam/workload_identity_pool_provider.py @@ -733,7 +733,7 @@ def __init__(__self__, workload_identity_pool_id=pool.workload_identity_pool_id, workload_identity_pool_provider_id="example-prvdr", aws={ - "accountId": "999999999999", + "account_id": "999999999999", }) ``` ### Iam Workload Identity Pool Provider Aws Full @@ -756,7 +756,7 @@ def __init__(__self__, "attribute.environment": "assertion.arn.contains(\\":instance-profile/Production\\") ? \\"prod\\" : \\"test\\"", }, aws={ - "accountId": "999999999999", + "account_id": "999999999999", }) ``` ### Iam Workload Identity Pool Provider Oidc Basic @@ -773,7 +773,7 @@ def __init__(__self__, "google.subject": "assertion.sub", }, oidc={ - "issuerUri": "https://sts.windows.net/azure-tenant-id", + "issuer_uri": "https://sts.windows.net/azure-tenant-id", }) ``` ### Iam Workload Identity Pool Provider Oidc Full @@ -800,11 +800,11 @@ def __init__(__self__, \"\"\", }, oidc={ - "allowedAudiences": [ + "allowed_audiences": [ "https://example.com/gcp-oidc-federation", "example.com/gcp-oidc-federation", ], - "issuerUri": "https://sts.windows.net/azure-tenant-id", + "issuer_uri": "https://sts.windows.net/azure-tenant-id", }) ``` ### Iam Workload Identity Pool Provider Saml Basic @@ -824,7 +824,7 @@ def __init__(__self__, "attribute.environment": "assertion.arn.contains(\\":instance-profile/Production\\") ? \\"prod\\" : \\"test\\"", }, saml={ - "idpMetadataXml": std.file(input="test-fixtures/metadata.xml").result, + "idp_metadata_xml": std.file(input="test-fixtures/metadata.xml").result, }) ``` ### Iam Workload Identity Pool Provider Saml Full @@ -847,7 +847,7 @@ def __init__(__self__, "attribute.environment": "assertion.arn.contains(\\":instance-profile/Production\\") ? \\"prod\\" : \\"test\\"", }, saml={ - "idpMetadataXml": std.file(input="test-fixtures/metadata.xml").result, + "idp_metadata_xml": std.file(input="test-fixtures/metadata.xml").result, }) ``` ### Iam Workload Identity Pool Provider Oidc Upload Key @@ -874,12 +874,12 @@ def __init__(__self__, \"\"\", }, oidc={ - "allowedAudiences": [ + "allowed_audiences": [ "https://example.com/gcp-oidc-federation", "example.com/gcp-oidc-federation", ], - "issuerUri": "https://sts.windows.net/azure-tenant-id", - "jwksJson": "{\\"keys\\":[{\\"kty\\":\\"RSA\\",\\"alg\\":\\"RS256\\",\\"kid\\":\\"sif0AR-F6MuvksAyAOv-Pds08Bcf2eUMlxE30NofddA\\",\\"use\\":\\"sig\\",\\"e\\":\\"AQAB\\",\\"n\\":\\"ylH1Chl1tpfti3lh51E1g5dPogzXDaQseqjsefGLknaNl5W6Wd4frBhHyE2t41Q5zgz_Ll0-NvWm0FlaG6brhrN9QZu6sJP1bM8WPfJVPgXOanxi7d7TXCkeNubGeiLTf5R3UXtS9Lm_guemU7MxDjDTelxnlgGCihOVTcL526suNJUdfXtpwUsvdU6_ZnAp9IpsuYjCtwPm9hPumlcZGMbxstdh07O4y4O90cVQClJOKSGQjAUCKJWXIQ0cqffGS_HuS_725CPzQ85SzYZzaNpgfhAER7kx_9P16ARM3BJz0PI5fe2hECE61J4GYU_BY43sxDfs7HyJpEXKLU9eWw\\"}]}", + "issuer_uri": "https://sts.windows.net/azure-tenant-id", + "jwks_json": "{\\"keys\\":[{\\"kty\\":\\"RSA\\",\\"alg\\":\\"RS256\\",\\"kid\\":\\"sif0AR-F6MuvksAyAOv-Pds08Bcf2eUMlxE30NofddA\\",\\"use\\":\\"sig\\",\\"e\\":\\"AQAB\\",\\"n\\":\\"ylH1Chl1tpfti3lh51E1g5dPogzXDaQseqjsefGLknaNl5W6Wd4frBhHyE2t41Q5zgz_Ll0-NvWm0FlaG6brhrN9QZu6sJP1bM8WPfJVPgXOanxi7d7TXCkeNubGeiLTf5R3UXtS9Lm_guemU7MxDjDTelxnlgGCihOVTcL526suNJUdfXtpwUsvdU6_ZnAp9IpsuYjCtwPm9hPumlcZGMbxstdh07O4y4O90cVQClJOKSGQjAUCKJWXIQ0cqffGS_HuS_725CPzQ85SzYZzaNpgfhAER7kx_9P16ARM3BJz0PI5fe2hECE61J4GYU_BY43sxDfs7HyJpEXKLU9eWw\\"}]}", }) ``` @@ -1015,7 +1015,7 @@ def __init__(__self__, workload_identity_pool_id=pool.workload_identity_pool_id, workload_identity_pool_provider_id="example-prvdr", aws={ - "accountId": "999999999999", + "account_id": "999999999999", }) ``` ### Iam Workload Identity Pool Provider Aws Full @@ -1038,7 +1038,7 @@ def __init__(__self__, "attribute.environment": "assertion.arn.contains(\\":instance-profile/Production\\") ? \\"prod\\" : \\"test\\"", }, aws={ - "accountId": "999999999999", + "account_id": "999999999999", }) ``` ### Iam Workload Identity Pool Provider Oidc Basic @@ -1055,7 +1055,7 @@ def __init__(__self__, "google.subject": "assertion.sub", }, oidc={ - "issuerUri": "https://sts.windows.net/azure-tenant-id", + "issuer_uri": "https://sts.windows.net/azure-tenant-id", }) ``` ### Iam Workload Identity Pool Provider Oidc Full @@ -1082,11 +1082,11 @@ def __init__(__self__, \"\"\", }, oidc={ - "allowedAudiences": [ + "allowed_audiences": [ "https://example.com/gcp-oidc-federation", "example.com/gcp-oidc-federation", ], - "issuerUri": "https://sts.windows.net/azure-tenant-id", + "issuer_uri": "https://sts.windows.net/azure-tenant-id", }) ``` ### Iam Workload Identity Pool Provider Saml Basic @@ -1106,7 +1106,7 @@ def __init__(__self__, "attribute.environment": "assertion.arn.contains(\\":instance-profile/Production\\") ? \\"prod\\" : \\"test\\"", }, saml={ - "idpMetadataXml": std.file(input="test-fixtures/metadata.xml").result, + "idp_metadata_xml": std.file(input="test-fixtures/metadata.xml").result, }) ``` ### Iam Workload Identity Pool Provider Saml Full @@ -1129,7 +1129,7 @@ def __init__(__self__, "attribute.environment": "assertion.arn.contains(\\":instance-profile/Production\\") ? \\"prod\\" : \\"test\\"", }, saml={ - "idpMetadataXml": std.file(input="test-fixtures/metadata.xml").result, + "idp_metadata_xml": std.file(input="test-fixtures/metadata.xml").result, }) ``` ### Iam Workload Identity Pool Provider Oidc Upload Key @@ -1156,12 +1156,12 @@ def __init__(__self__, \"\"\", }, oidc={ - "allowedAudiences": [ + "allowed_audiences": [ "https://example.com/gcp-oidc-federation", "example.com/gcp-oidc-federation", ], - "issuerUri": "https://sts.windows.net/azure-tenant-id", - "jwksJson": "{\\"keys\\":[{\\"kty\\":\\"RSA\\",\\"alg\\":\\"RS256\\",\\"kid\\":\\"sif0AR-F6MuvksAyAOv-Pds08Bcf2eUMlxE30NofddA\\",\\"use\\":\\"sig\\",\\"e\\":\\"AQAB\\",\\"n\\":\\"ylH1Chl1tpfti3lh51E1g5dPogzXDaQseqjsefGLknaNl5W6Wd4frBhHyE2t41Q5zgz_Ll0-NvWm0FlaG6brhrN9QZu6sJP1bM8WPfJVPgXOanxi7d7TXCkeNubGeiLTf5R3UXtS9Lm_guemU7MxDjDTelxnlgGCihOVTcL526suNJUdfXtpwUsvdU6_ZnAp9IpsuYjCtwPm9hPumlcZGMbxstdh07O4y4O90cVQClJOKSGQjAUCKJWXIQ0cqffGS_HuS_725CPzQ85SzYZzaNpgfhAER7kx_9P16ARM3BJz0PI5fe2hECE61J4GYU_BY43sxDfs7HyJpEXKLU9eWw\\"}]}", + "issuer_uri": "https://sts.windows.net/azure-tenant-id", + "jwks_json": "{\\"keys\\":[{\\"kty\\":\\"RSA\\",\\"alg\\":\\"RS256\\",\\"kid\\":\\"sif0AR-F6MuvksAyAOv-Pds08Bcf2eUMlxE30NofddA\\",\\"use\\":\\"sig\\",\\"e\\":\\"AQAB\\",\\"n\\":\\"ylH1Chl1tpfti3lh51E1g5dPogzXDaQseqjsefGLknaNl5W6Wd4frBhHyE2t41Q5zgz_Ll0-NvWm0FlaG6brhrN9QZu6sJP1bM8WPfJVPgXOanxi7d7TXCkeNubGeiLTf5R3UXtS9Lm_guemU7MxDjDTelxnlgGCihOVTcL526suNJUdfXtpwUsvdU6_ZnAp9IpsuYjCtwPm9hPumlcZGMbxstdh07O4y4O90cVQClJOKSGQjAUCKJWXIQ0cqffGS_HuS_725CPzQ85SzYZzaNpgfhAER7kx_9P16ARM3BJz0PI5fe2hECE61J4GYU_BY43sxDfs7HyJpEXKLU9eWw\\"}]}", }) ``` diff --git a/sdk/python/pulumi_gcp/identityplatform/config.py b/sdk/python/pulumi_gcp/identityplatform/config.py index 5272485419..1f4a83892b 100644 --- a/sdk/python/pulumi_gcp/identityplatform/config.py +++ b/sdk/python/pulumi_gcp/identityplatform/config.py @@ -493,24 +493,24 @@ def __init__(__self__, project=default.project_id, autodelete_anonymous_users=True, sign_in={ - "allowDuplicateEmails": True, + "allow_duplicate_emails": True, "anonymous": { "enabled": True, }, "email": { "enabled": True, - "passwordRequired": False, + "password_required": False, }, - "phoneNumber": { + "phone_number": { "enabled": True, - "testPhoneNumbers": { - "+11231231234": "000000", + "test_phone_numbers": { + "_11231231234": "000000", }, }, }, sms_region_config={ - "allowlistOnly": { - "allowedRegions": [ + "allowlist_only": { + "allowed_regions": [ "US", "CA", ], @@ -518,20 +518,20 @@ def __init__(__self__, }, blocking_functions={ "triggers": [{ - "eventType": "beforeSignIn", - "functionUri": "https://us-east1-my-project.cloudfunctions.net/before-sign-in", + "event_type": "beforeSignIn", + "function_uri": "https://us-east1-my-project.cloudfunctions.net/before-sign-in", }], - "forwardInboundCredentials": { - "refreshToken": True, - "accessToken": True, - "idToken": True, + "forward_inbound_credentials": { + "refresh_token": True, + "access_token": True, + "id_token": True, }, }, quota={ - "signUpQuotaConfig": { + "sign_up_quota_config": { "quota": 1000, - "startTime": "", - "quotaDuration": "7200s", + "start_time": "", + "quota_duration": "7200s", }, }, authorized_domains=[ @@ -632,24 +632,24 @@ def __init__(__self__, project=default.project_id, autodelete_anonymous_users=True, sign_in={ - "allowDuplicateEmails": True, + "allow_duplicate_emails": True, "anonymous": { "enabled": True, }, "email": { "enabled": True, - "passwordRequired": False, + "password_required": False, }, - "phoneNumber": { + "phone_number": { "enabled": True, - "testPhoneNumbers": { - "+11231231234": "000000", + "test_phone_numbers": { + "_11231231234": "000000", }, }, }, sms_region_config={ - "allowlistOnly": { - "allowedRegions": [ + "allowlist_only": { + "allowed_regions": [ "US", "CA", ], @@ -657,20 +657,20 @@ def __init__(__self__, }, blocking_functions={ "triggers": [{ - "eventType": "beforeSignIn", - "functionUri": "https://us-east1-my-project.cloudfunctions.net/before-sign-in", + "event_type": "beforeSignIn", + "function_uri": "https://us-east1-my-project.cloudfunctions.net/before-sign-in", }], - "forwardInboundCredentials": { - "refreshToken": True, - "accessToken": True, - "idToken": True, + "forward_inbound_credentials": { + "refresh_token": True, + "access_token": True, + "id_token": True, }, }, quota={ - "signUpQuotaConfig": { + "sign_up_quota_config": { "quota": 1000, - "startTime": "", - "quotaDuration": "7200s", + "start_time": "", + "quota_duration": "7200s", }, }, authorized_domains=[ diff --git a/sdk/python/pulumi_gcp/identityplatform/inbound_saml_config.py b/sdk/python/pulumi_gcp/identityplatform/inbound_saml_config.py index 045f46f3f5..682858645f 100644 --- a/sdk/python/pulumi_gcp/identityplatform/inbound_saml_config.py +++ b/sdk/python/pulumi_gcp/identityplatform/inbound_saml_config.py @@ -267,16 +267,16 @@ def __init__(__self__, name="saml.tf-config", display_name="Display Name", idp_config={ - "idpEntityId": "tf-idp", - "signRequest": True, - "ssoUrl": "https://example.com", - "idpCertificates": [{ - "x509Certificate": std.file(input="test-fixtures/rsa_cert.pem").result, + "idp_entity_id": "tf-idp", + "sign_request": True, + "sso_url": "https://example.com", + "idp_certificates": [{ + "x509_certificate": std.file(input="test-fixtures/rsa_cert.pem").result, }], }, sp_config={ - "spEntityId": "tf-sp", - "callbackUri": "https://example.com", + "sp_entity_id": "tf-sp", + "callback_uri": "https://example.com", }) ``` @@ -343,16 +343,16 @@ def __init__(__self__, name="saml.tf-config", display_name="Display Name", idp_config={ - "idpEntityId": "tf-idp", - "signRequest": True, - "ssoUrl": "https://example.com", - "idpCertificates": [{ - "x509Certificate": std.file(input="test-fixtures/rsa_cert.pem").result, + "idp_entity_id": "tf-idp", + "sign_request": True, + "sso_url": "https://example.com", + "idp_certificates": [{ + "x509_certificate": std.file(input="test-fixtures/rsa_cert.pem").result, }], }, sp_config={ - "spEntityId": "tf-sp", - "callbackUri": "https://example.com", + "sp_entity_id": "tf-sp", + "callback_uri": "https://example.com", }) ``` diff --git a/sdk/python/pulumi_gcp/identityplatform/project_default_config.py b/sdk/python/pulumi_gcp/identityplatform/project_default_config.py index e38a107104..eeb061ed05 100644 --- a/sdk/python/pulumi_gcp/identityplatform/project_default_config.py +++ b/sdk/python/pulumi_gcp/identityplatform/project_default_config.py @@ -150,18 +150,18 @@ def __init__(__self__, import pulumi_gcp as gcp default = gcp.identityplatform.ProjectDefaultConfig("default", sign_in={ - "allowDuplicateEmails": True, + "allow_duplicate_emails": True, "anonymous": { "enabled": True, }, "email": { "enabled": True, - "passwordRequired": False, + "password_required": False, }, - "phoneNumber": { + "phone_number": { "enabled": True, - "testPhoneNumbers": { - "+11231231234": "000000", + "test_phone_numbers": { + "_11231231234": "000000", }, }, }) @@ -224,18 +224,18 @@ def __init__(__self__, import pulumi_gcp as gcp default = gcp.identityplatform.ProjectDefaultConfig("default", sign_in={ - "allowDuplicateEmails": True, + "allow_duplicate_emails": True, "anonymous": { "enabled": True, }, "email": { "enabled": True, - "passwordRequired": False, + "password_required": False, }, - "phoneNumber": { + "phone_number": { "enabled": True, - "testPhoneNumbers": { - "+11231231234": "000000", + "test_phone_numbers": { + "_11231231234": "000000", }, }, }) diff --git a/sdk/python/pulumi_gcp/identityplatform/tenant_inbound_saml_config.py b/sdk/python/pulumi_gcp/identityplatform/tenant_inbound_saml_config.py index 4638f3f972..c59a01ec77 100644 --- a/sdk/python/pulumi_gcp/identityplatform/tenant_inbound_saml_config.py +++ b/sdk/python/pulumi_gcp/identityplatform/tenant_inbound_saml_config.py @@ -301,16 +301,16 @@ def __init__(__self__, display_name="Display Name", tenant=tenant.name, idp_config={ - "idpEntityId": "tf-idp", - "signRequest": True, - "ssoUrl": "https://example.com", - "idpCertificates": [{ - "x509Certificate": std.file(input="test-fixtures/rsa_cert.pem").result, + "idp_entity_id": "tf-idp", + "sign_request": True, + "sso_url": "https://example.com", + "idp_certificates": [{ + "x509_certificate": std.file(input="test-fixtures/rsa_cert.pem").result, }], }, sp_config={ - "spEntityId": "tf-sp", - "callbackUri": "https://example.com", + "sp_entity_id": "tf-sp", + "callback_uri": "https://example.com", }) ``` @@ -380,16 +380,16 @@ def __init__(__self__, display_name="Display Name", tenant=tenant.name, idp_config={ - "idpEntityId": "tf-idp", - "signRequest": True, - "ssoUrl": "https://example.com", - "idpCertificates": [{ - "x509Certificate": std.file(input="test-fixtures/rsa_cert.pem").result, + "idp_entity_id": "tf-idp", + "sign_request": True, + "sso_url": "https://example.com", + "idp_certificates": [{ + "x509_certificate": std.file(input="test-fixtures/rsa_cert.pem").result, }], }, sp_config={ - "spEntityId": "tf-sp", - "callbackUri": "https://example.com", + "sp_entity_id": "tf-sp", + "callback_uri": "https://example.com", }) ``` diff --git a/sdk/python/pulumi_gcp/integrationconnectors/connection.py b/sdk/python/pulumi_gcp/integrationconnectors/connection.py index a46e3e8925..770b732edc 100644 --- a/sdk/python/pulumi_gcp/integrationconnectors/connection.py +++ b/sdk/python/pulumi_gcp/integrationconnectors/connection.py @@ -877,11 +877,11 @@ def __init__(__self__, config_variables=[ { "key": "project_id", - "stringValue": "connectors-example", + "string_value": "connectors-example", }, { "key": "topic_id", - "stringValue": "test", + "string_value": "test", }, ]) ``` @@ -895,7 +895,7 @@ def __init__(__self__, secret_basic = gcp.secretmanager.Secret("secret-basic", secret_id="test-secret", replication={ - "userManaged": { + "user_managed": { "replicas": [{ "location": "us-central1", }], @@ -918,61 +918,61 @@ def __init__(__self__, config_variables=[ { "key": "proxy_enabled", - "booleanValue": False, + "boolean_value": False, }, { "key": "sample_integer_value", - "integerValue": 1, + "integer_value": 1, }, { "key": "sample_encryption_key_value", - "encryptionKeyValue": { + "encryption_key_value": { "type": "GOOGLE_MANAGED", - "kmsKeyName": "sampleKMSKkey", + "kms_key_name": "sampleKMSKkey", }, }, { "key": "sample_secret_value", - "secretValue": { - "secretVersion": secret_version_basic.name, + "secret_value": { + "secret_version": secret_version_basic.name, }, }, ], suspended=False, auth_config={ - "additionalVariables": [ + "additional_variables": [ { "key": "sample_string", - "stringValue": "sampleString", + "string_value": "sampleString", }, { "key": "sample_boolean", - "booleanValue": False, + "boolean_value": False, }, { "key": "sample_integer", - "integerValue": 1, + "integer_value": 1, }, { "key": "sample_secret_value", - "secretValue": { - "secretVersion": secret_version_basic.name, + "secret_value": { + "secret_version": secret_version_basic.name, }, }, { "key": "sample_encryption_key_value", - "encryptionKeyValue": { + "encryption_key_value": { "type": "GOOGLE_MANAGED", - "kmsKeyName": "sampleKMSKkey", + "kms_key_name": "sampleKMSKkey", }, }, ], - "authType": "USER_PASSWORD", - "authKey": "sampleAuthKey", - "userPassword": { + "auth_type": "USER_PASSWORD", + "auth_key": "sampleAuthKey", + "user_password": { "username": "user@xyz.com", "password": { - "secretVersion": secret_version_basic.name, + "secret_version": secret_version_basic.name, }, }, }, @@ -991,132 +991,132 @@ def __init__(__self__, "enabled": True, }, node_config={ - "minNodeCount": 2, - "maxNodeCount": 50, + "min_node_count": 2, + "max_node_count": 50, }, labels={ "foo": "bar", }, ssl_config={ - "additionalVariables": [ + "additional_variables": [ { "key": "sample_string", - "stringValue": "sampleString", + "string_value": "sampleString", }, { "key": "sample_boolean", - "booleanValue": False, + "boolean_value": False, }, { "key": "sample_integer", - "integerValue": 1, + "integer_value": 1, }, { "key": "sample_secret_value", - "secretValue": { - "secretVersion": secret_version_basic.name, + "secret_value": { + "secret_version": secret_version_basic.name, }, }, { "key": "sample_encryption_key_value", - "encryptionKeyValue": { + "encryption_key_value": { "type": "GOOGLE_MANAGED", - "kmsKeyName": "sampleKMSKkey", + "kms_key_name": "sampleKMSKkey", }, }, ], - "clientCertType": "PEM", - "clientCertificate": { - "secretVersion": secret_version_basic.name, + "client_cert_type": "PEM", + "client_certificate": { + "secret_version": secret_version_basic.name, }, - "clientPrivateKey": { - "secretVersion": secret_version_basic.name, + "client_private_key": { + "secret_version": secret_version_basic.name, }, - "clientPrivateKeyPass": { - "secretVersion": secret_version_basic.name, + "client_private_key_pass": { + "secret_version": secret_version_basic.name, }, - "privateServerCertificate": { - "secretVersion": secret_version_basic.name, + "private_server_certificate": { + "secret_version": secret_version_basic.name, }, - "serverCertType": "PEM", - "trustModel": "PRIVATE", + "server_cert_type": "PEM", + "trust_model": "PRIVATE", "type": "TLS", - "useSsl": True, + "use_ssl": True, }, eventing_enablement_type="EVENTING_AND_CONNECTION", eventing_config={ - "additionalVariables": [ + "additional_variables": [ { "key": "sample_string", - "stringValue": "sampleString", + "string_value": "sampleString", }, { "key": "sample_boolean", - "booleanValue": False, + "boolean_value": False, }, { "key": "sample_integer", - "integerValue": 1, + "integer_value": 1, }, { "key": "sample_secret_value", - "secretValue": { - "secretVersion": secret_version_basic.name, + "secret_value": { + "secret_version": secret_version_basic.name, }, }, { "key": "sample_encryption_key_value", - "encryptionKeyValue": { + "encryption_key_value": { "type": "GOOGLE_MANAGED", - "kmsKeyName": "sampleKMSKkey", + "kms_key_name": "sampleKMSKkey", }, }, ], - "registrationDestinationConfig": { + "registration_destination_config": { "key": "registration_destination_config", "destinations": [{ "host": "https://test.zendesk.com", "port": 80, }], }, - "authConfig": { - "authType": "USER_PASSWORD", - "authKey": "sampleAuthKey", - "userPassword": { + "auth_config": { + "auth_type": "USER_PASSWORD", + "auth_key": "sampleAuthKey", + "user_password": { "username": "user@xyz.com", "password": { - "secretVersion": secret_version_basic.name, + "secret_version": secret_version_basic.name, }, }, - "additionalVariables": [ + "additional_variables": [ { "key": "sample_string", - "stringValue": "sampleString", + "string_value": "sampleString", }, { "key": "sample_boolean", - "booleanValue": False, + "boolean_value": False, }, { "key": "sample_integer", - "integerValue": 1, + "integer_value": 1, }, { "key": "sample_secret_value", - "secretValue": { - "secretVersion": secret_version_basic.name, + "secret_value": { + "secret_version": secret_version_basic.name, }, }, { "key": "sample_encryption_key_value", - "encryptionKeyValue": { + "encryption_key_value": { "type": "GOOGLE_MANAGED", - "kmsKeyName": "sampleKMSKkey", + "kms_key_name": "sampleKMSKkey", }, }, ], }, - "enrichmentEnabled": True, + "enrichment_enabled": True, }) ``` @@ -1212,11 +1212,11 @@ def __init__(__self__, config_variables=[ { "key": "project_id", - "stringValue": "connectors-example", + "string_value": "connectors-example", }, { "key": "topic_id", - "stringValue": "test", + "string_value": "test", }, ]) ``` @@ -1230,7 +1230,7 @@ def __init__(__self__, secret_basic = gcp.secretmanager.Secret("secret-basic", secret_id="test-secret", replication={ - "userManaged": { + "user_managed": { "replicas": [{ "location": "us-central1", }], @@ -1253,61 +1253,61 @@ def __init__(__self__, config_variables=[ { "key": "proxy_enabled", - "booleanValue": False, + "boolean_value": False, }, { "key": "sample_integer_value", - "integerValue": 1, + "integer_value": 1, }, { "key": "sample_encryption_key_value", - "encryptionKeyValue": { + "encryption_key_value": { "type": "GOOGLE_MANAGED", - "kmsKeyName": "sampleKMSKkey", + "kms_key_name": "sampleKMSKkey", }, }, { "key": "sample_secret_value", - "secretValue": { - "secretVersion": secret_version_basic.name, + "secret_value": { + "secret_version": secret_version_basic.name, }, }, ], suspended=False, auth_config={ - "additionalVariables": [ + "additional_variables": [ { "key": "sample_string", - "stringValue": "sampleString", + "string_value": "sampleString", }, { "key": "sample_boolean", - "booleanValue": False, + "boolean_value": False, }, { "key": "sample_integer", - "integerValue": 1, + "integer_value": 1, }, { "key": "sample_secret_value", - "secretValue": { - "secretVersion": secret_version_basic.name, + "secret_value": { + "secret_version": secret_version_basic.name, }, }, { "key": "sample_encryption_key_value", - "encryptionKeyValue": { + "encryption_key_value": { "type": "GOOGLE_MANAGED", - "kmsKeyName": "sampleKMSKkey", + "kms_key_name": "sampleKMSKkey", }, }, ], - "authType": "USER_PASSWORD", - "authKey": "sampleAuthKey", - "userPassword": { + "auth_type": "USER_PASSWORD", + "auth_key": "sampleAuthKey", + "user_password": { "username": "user@xyz.com", "password": { - "secretVersion": secret_version_basic.name, + "secret_version": secret_version_basic.name, }, }, }, @@ -1326,132 +1326,132 @@ def __init__(__self__, "enabled": True, }, node_config={ - "minNodeCount": 2, - "maxNodeCount": 50, + "min_node_count": 2, + "max_node_count": 50, }, labels={ "foo": "bar", }, ssl_config={ - "additionalVariables": [ + "additional_variables": [ { "key": "sample_string", - "stringValue": "sampleString", + "string_value": "sampleString", }, { "key": "sample_boolean", - "booleanValue": False, + "boolean_value": False, }, { "key": "sample_integer", - "integerValue": 1, + "integer_value": 1, }, { "key": "sample_secret_value", - "secretValue": { - "secretVersion": secret_version_basic.name, + "secret_value": { + "secret_version": secret_version_basic.name, }, }, { "key": "sample_encryption_key_value", - "encryptionKeyValue": { + "encryption_key_value": { "type": "GOOGLE_MANAGED", - "kmsKeyName": "sampleKMSKkey", + "kms_key_name": "sampleKMSKkey", }, }, ], - "clientCertType": "PEM", - "clientCertificate": { - "secretVersion": secret_version_basic.name, + "client_cert_type": "PEM", + "client_certificate": { + "secret_version": secret_version_basic.name, }, - "clientPrivateKey": { - "secretVersion": secret_version_basic.name, + "client_private_key": { + "secret_version": secret_version_basic.name, }, - "clientPrivateKeyPass": { - "secretVersion": secret_version_basic.name, + "client_private_key_pass": { + "secret_version": secret_version_basic.name, }, - "privateServerCertificate": { - "secretVersion": secret_version_basic.name, + "private_server_certificate": { + "secret_version": secret_version_basic.name, }, - "serverCertType": "PEM", - "trustModel": "PRIVATE", + "server_cert_type": "PEM", + "trust_model": "PRIVATE", "type": "TLS", - "useSsl": True, + "use_ssl": True, }, eventing_enablement_type="EVENTING_AND_CONNECTION", eventing_config={ - "additionalVariables": [ + "additional_variables": [ { "key": "sample_string", - "stringValue": "sampleString", + "string_value": "sampleString", }, { "key": "sample_boolean", - "booleanValue": False, + "boolean_value": False, }, { "key": "sample_integer", - "integerValue": 1, + "integer_value": 1, }, { "key": "sample_secret_value", - "secretValue": { - "secretVersion": secret_version_basic.name, + "secret_value": { + "secret_version": secret_version_basic.name, }, }, { "key": "sample_encryption_key_value", - "encryptionKeyValue": { + "encryption_key_value": { "type": "GOOGLE_MANAGED", - "kmsKeyName": "sampleKMSKkey", + "kms_key_name": "sampleKMSKkey", }, }, ], - "registrationDestinationConfig": { + "registration_destination_config": { "key": "registration_destination_config", "destinations": [{ "host": "https://test.zendesk.com", "port": 80, }], }, - "authConfig": { - "authType": "USER_PASSWORD", - "authKey": "sampleAuthKey", - "userPassword": { + "auth_config": { + "auth_type": "USER_PASSWORD", + "auth_key": "sampleAuthKey", + "user_password": { "username": "user@xyz.com", "password": { - "secretVersion": secret_version_basic.name, + "secret_version": secret_version_basic.name, }, }, - "additionalVariables": [ + "additional_variables": [ { "key": "sample_string", - "stringValue": "sampleString", + "string_value": "sampleString", }, { "key": "sample_boolean", - "booleanValue": False, + "boolean_value": False, }, { "key": "sample_integer", - "integerValue": 1, + "integer_value": 1, }, { "key": "sample_secret_value", - "secretValue": { - "secretVersion": secret_version_basic.name, + "secret_value": { + "secret_version": secret_version_basic.name, }, }, { "key": "sample_encryption_key_value", - "encryptionKeyValue": { + "encryption_key_value": { "type": "GOOGLE_MANAGED", - "kmsKeyName": "sampleKMSKkey", + "kms_key_name": "sampleKMSKkey", }, }, ], }, - "enrichmentEnabled": True, + "enrichment_enabled": True, }) ``` diff --git a/sdk/python/pulumi_gcp/integrationconnectors/managed_zone.py b/sdk/python/pulumi_gcp/integrationconnectors/managed_zone.py index c42cb4593c..9f84ed93da 100644 --- a/sdk/python/pulumi_gcp/integrationconnectors/managed_zone.py +++ b/sdk/python/pulumi_gcp/integrationconnectors/managed_zone.py @@ -404,7 +404,7 @@ def __init__(__self__, visibility="private", private_visibility_config={ "networks": [{ - "networkUrl": network.id, + "network_url": network.id, }], }, opts = pulumi.ResourceOptions(depends_on=[dns])) @@ -514,7 +514,7 @@ def __init__(__self__, visibility="private", private_visibility_config={ "networks": [{ - "networkUrl": network.id, + "network_url": network.id, }], }, opts = pulumi.ResourceOptions(depends_on=[dns])) diff --git a/sdk/python/pulumi_gcp/kms/ekm_connection.py b/sdk/python/pulumi_gcp/kms/ekm_connection.py index 380546acdc..6359be8de5 100644 --- a/sdk/python/pulumi_gcp/kms/ekm_connection.py +++ b/sdk/python/pulumi_gcp/kms/ekm_connection.py @@ -320,10 +320,10 @@ def __init__(__self__, location="us-central1", key_management_mode="MANUAL", service_resolvers=[{ - "serviceDirectoryService": "projects/project_id/locations/us-central1/namespaces/namespace_name/services/service_name", + "service_directory_service": "projects/project_id/locations/us-central1/namespaces/namespace_name/services/service_name", "hostname": "example-ekm.goog", - "serverCertificates": [{ - "rawDer": "==HAwIBCCAr6gAwIBAgIUWR+EV4lqiV7Ql12VY==", + "server_certificates": [{ + "raw_der": "==HAwIBCCAr6gAwIBAgIUWR+EV4lqiV7Ql12VY==", }], }]) ``` @@ -396,10 +396,10 @@ def __init__(__self__, location="us-central1", key_management_mode="MANUAL", service_resolvers=[{ - "serviceDirectoryService": "projects/project_id/locations/us-central1/namespaces/namespace_name/services/service_name", + "service_directory_service": "projects/project_id/locations/us-central1/namespaces/namespace_name/services/service_name", "hostname": "example-ekm.goog", - "serverCertificates": [{ - "rawDer": "==HAwIBCCAr6gAwIBAgIUWR+EV4lqiV7Ql12VY==", + "server_certificates": [{ + "raw_der": "==HAwIBCCAr6gAwIBAgIUWR+EV4lqiV7Ql12VY==", }], }]) ``` diff --git a/sdk/python/pulumi_gcp/kms/get_kms_secret_ciphertext.py b/sdk/python/pulumi_gcp/kms/get_kms_secret_ciphertext.py index 0cb4c4a59e..44a79db647 100644 --- a/sdk/python/pulumi_gcp/kms/get_kms_secret_ciphertext.py +++ b/sdk/python/pulumi_gcp/kms/get_kms_secret_ciphertext.py @@ -123,14 +123,14 @@ def get_kms_secret_ciphertext(crypto_key: Optional[str] = None, plaintext="my-secret-password") instance = gcp.compute.Instance("instance", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "network": "default", }], name="test", machine_type="e2-medium", zone="us-central1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }, @@ -206,14 +206,14 @@ def get_kms_secret_ciphertext_output(crypto_key: Optional[pulumi.Input[str]] = N plaintext="my-secret-password") instance = gcp.compute.Instance("instance", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "network": "default", }], name="test", machine_type="e2-medium", zone="us-central1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }, diff --git a/sdk/python/pulumi_gcp/kms/secret_ciphertext.py b/sdk/python/pulumi_gcp/kms/secret_ciphertext.py index 836862e55f..6fcac3b288 100644 --- a/sdk/python/pulumi_gcp/kms/secret_ciphertext.py +++ b/sdk/python/pulumi_gcp/kms/secret_ciphertext.py @@ -209,14 +209,14 @@ def __init__(__self__, plaintext="my-secret-password") instance = gcp.compute.Instance("instance", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "network": "default", }], name="my-instance", machine_type="e2-medium", zone="us-central1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }, @@ -281,14 +281,14 @@ def __init__(__self__, plaintext="my-secret-password") instance = gcp.compute.Instance("instance", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "network": "default", }], name="my-instance", machine_type="e2-medium", zone="us-central1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "debian-cloud/debian-11", }, }, diff --git a/sdk/python/pulumi_gcp/logging/folder_bucket_config.py b/sdk/python/pulumi_gcp/logging/folder_bucket_config.py index 92553c04ae..d7b43f8b1f 100644 --- a/sdk/python/pulumi_gcp/logging/folder_bucket_config.py +++ b/sdk/python/pulumi_gcp/logging/folder_bucket_config.py @@ -330,7 +330,7 @@ def __init__(__self__, retention_days=30, bucket_id="_Default", index_configs=[{ - "fieldPath": "jsonPayload.request.status", + "field_path": "jsonPayload.request.status", "type": "INDEX_TYPE_STRING", }]) ``` @@ -387,7 +387,7 @@ def __init__(__self__, retention_days=30, bucket_id="_Default", index_configs=[{ - "fieldPath": "jsonPayload.request.status", + "field_path": "jsonPayload.request.status", "type": "INDEX_TYPE_STRING", }]) ``` diff --git a/sdk/python/pulumi_gcp/logging/metric.py b/sdk/python/pulumi_gcp/logging/metric.py index 635e7b80dd..90b6924197 100644 --- a/sdk/python/pulumi_gcp/logging/metric.py +++ b/sdk/python/pulumi_gcp/logging/metric.py @@ -496,22 +496,22 @@ def __init__(__self__, name="my-(custom)/metric", filter="resource.type=gae_app AND severity>=ERROR", metric_descriptor={ - "metricKind": "DELTA", - "valueType": "DISTRIBUTION", + "metric_kind": "DELTA", + "value_type": "DISTRIBUTION", "unit": "1", "labels": [ { "key": "mass", - "valueType": "STRING", + "value_type": "STRING", "description": "amount of matter", }, { "key": "sku", - "valueType": "INT64", + "value_type": "INT64", "description": "Identifying number for item", }, ], - "displayName": "My metric", + "display_name": "My metric", }, value_extractor="EXTRACT(jsonPayload.request)", label_extractors={ @@ -519,8 +519,8 @@ def __init__(__self__, "sku": "EXTRACT(jsonPayload.id)", }, bucket_options={ - "linearBuckets": { - "numFiniteBuckets": 3, + "linear_buckets": { + "num_finite_buckets": 3, "width": 1, "offset": 1, }, @@ -536,8 +536,8 @@ def __init__(__self__, name="my-(custom)/metric", filter="resource.type=gae_app AND severity>=ERROR", metric_descriptor={ - "metricKind": "DELTA", - "valueType": "INT64", + "metric_kind": "DELTA", + "value_type": "INT64", }) ``` ### Logging Metric Counter Labels @@ -550,11 +550,11 @@ def __init__(__self__, name="my-(custom)/metric", filter="resource.type=gae_app AND severity>=ERROR", metric_descriptor={ - "metricKind": "DELTA", - "valueType": "INT64", + "metric_kind": "DELTA", + "value_type": "INT64", "labels": [{ "key": "mass", - "valueType": "STRING", + "value_type": "STRING", "description": "amount of matter", }], }, @@ -587,8 +587,8 @@ def __init__(__self__, name="my-(custom)/metric", filter="resource.type=gae_app AND severity>=ERROR", metric_descriptor={ - "metricKind": "DELTA", - "valueType": "INT64", + "metric_kind": "DELTA", + "value_type": "INT64", }, disabled=True) ``` @@ -679,22 +679,22 @@ def __init__(__self__, name="my-(custom)/metric", filter="resource.type=gae_app AND severity>=ERROR", metric_descriptor={ - "metricKind": "DELTA", - "valueType": "DISTRIBUTION", + "metric_kind": "DELTA", + "value_type": "DISTRIBUTION", "unit": "1", "labels": [ { "key": "mass", - "valueType": "STRING", + "value_type": "STRING", "description": "amount of matter", }, { "key": "sku", - "valueType": "INT64", + "value_type": "INT64", "description": "Identifying number for item", }, ], - "displayName": "My metric", + "display_name": "My metric", }, value_extractor="EXTRACT(jsonPayload.request)", label_extractors={ @@ -702,8 +702,8 @@ def __init__(__self__, "sku": "EXTRACT(jsonPayload.id)", }, bucket_options={ - "linearBuckets": { - "numFiniteBuckets": 3, + "linear_buckets": { + "num_finite_buckets": 3, "width": 1, "offset": 1, }, @@ -719,8 +719,8 @@ def __init__(__self__, name="my-(custom)/metric", filter="resource.type=gae_app AND severity>=ERROR", metric_descriptor={ - "metricKind": "DELTA", - "valueType": "INT64", + "metric_kind": "DELTA", + "value_type": "INT64", }) ``` ### Logging Metric Counter Labels @@ -733,11 +733,11 @@ def __init__(__self__, name="my-(custom)/metric", filter="resource.type=gae_app AND severity>=ERROR", metric_descriptor={ - "metricKind": "DELTA", - "valueType": "INT64", + "metric_kind": "DELTA", + "value_type": "INT64", "labels": [{ "key": "mass", - "valueType": "STRING", + "value_type": "STRING", "description": "amount of matter", }], }, @@ -770,8 +770,8 @@ def __init__(__self__, name="my-(custom)/metric", filter="resource.type=gae_app AND severity>=ERROR", metric_descriptor={ - "metricKind": "DELTA", - "valueType": "INT64", + "metric_kind": "DELTA", + "value_type": "INT64", }, disabled=True) ``` diff --git a/sdk/python/pulumi_gcp/logging/organization_bucket_config.py b/sdk/python/pulumi_gcp/logging/organization_bucket_config.py index 6d4bc9f1f4..bb0f3beda1 100644 --- a/sdk/python/pulumi_gcp/logging/organization_bucket_config.py +++ b/sdk/python/pulumi_gcp/logging/organization_bucket_config.py @@ -328,7 +328,7 @@ def __init__(__self__, retention_days=30, bucket_id="_Default", index_configs=[{ - "fieldPath": "jsonPayload.request.status", + "field_path": "jsonPayload.request.status", "type": "INDEX_TYPE_STRING", }]) ``` @@ -383,7 +383,7 @@ def __init__(__self__, retention_days=30, bucket_id="_Default", index_configs=[{ - "fieldPath": "jsonPayload.request.status", + "field_path": "jsonPayload.request.status", "type": "INDEX_TYPE_STRING", }]) ``` diff --git a/sdk/python/pulumi_gcp/logging/project_bucket_config.py b/sdk/python/pulumi_gcp/logging/project_bucket_config.py index 33eb354732..de02383436 100644 --- a/sdk/python/pulumi_gcp/logging/project_bucket_config.py +++ b/sdk/python/pulumi_gcp/logging/project_bucket_config.py @@ -441,7 +441,7 @@ def __init__(__self__, retention_days=30, bucket_id="custom-bucket", cmek_settings={ - "kmsKeyName": key.id, + "kms_key_name": key.id, }, opts = pulumi.ResourceOptions(depends_on=[crypto_key_binding])) ``` @@ -458,7 +458,7 @@ def __init__(__self__, retention_days=30, bucket_id="custom-bucket", index_configs=[{ - "fieldPath": "jsonPayload.request.status", + "field_path": "jsonPayload.request.status", "type": "INDEX_TYPE_STRING", }]) ``` @@ -568,7 +568,7 @@ def __init__(__self__, retention_days=30, bucket_id="custom-bucket", cmek_settings={ - "kmsKeyName": key.id, + "kms_key_name": key.id, }, opts = pulumi.ResourceOptions(depends_on=[crypto_key_binding])) ``` @@ -585,7 +585,7 @@ def __init__(__self__, retention_days=30, bucket_id="custom-bucket", index_configs=[{ - "fieldPath": "jsonPayload.request.status", + "field_path": "jsonPayload.request.status", "type": "INDEX_TYPE_STRING", }]) ``` diff --git a/sdk/python/pulumi_gcp/looker/instance.py b/sdk/python/pulumi_gcp/looker/instance.py index a12b1779c4..57779904f9 100644 --- a/sdk/python/pulumi_gcp/looker/instance.py +++ b/sdk/python/pulumi_gcp/looker/instance.py @@ -802,8 +802,8 @@ def __init__(__self__, platform_edition="LOOKER_CORE_STANDARD_ANNUAL", region="us-central1", oauth_config={ - "clientId": "my-client-id", - "clientSecret": "my-client-secret", + "client_id": "my-client-id", + "client_secret": "my-client-secret", }) ``` ### Looker Instance Full @@ -818,11 +818,11 @@ def __init__(__self__, region="us-central1", public_ip_enabled=True, admin_settings={ - "allowedEmailDomains": ["google.com"], + "allowed_email_domains": ["google.com"], }, maintenance_window={ - "dayOfWeek": "THURSDAY", - "startTime": { + "day_of_week": "THURSDAY", + "start_time": { "hours": 22, "minutes": 0, "seconds": 0, @@ -830,12 +830,12 @@ def __init__(__self__, }, }, deny_maintenance_period={ - "startDate": { + "start_date": { "year": 2050, "month": 1, "day": 1, }, - "endDate": { + "end_date": { "year": 2050, "month": 2, "day": 1, @@ -848,8 +848,8 @@ def __init__(__self__, }, }, oauth_config={ - "clientId": "my-client-id", - "clientSecret": "my-client-secret", + "client_id": "my-client-id", + "client_secret": "my-client-secret", }) ``` ### Looker Instance Enterprise Full @@ -878,14 +878,14 @@ def __init__(__self__, reserved_range=looker_range.name, consumer_network=looker_network.id, admin_settings={ - "allowedEmailDomains": ["google.com"], + "allowed_email_domains": ["google.com"], }, encryption_config={ - "kmsKeyName": "looker-kms-key", + "kms_key_name": "looker-kms-key", }, maintenance_window={ - "dayOfWeek": "THURSDAY", - "startTime": { + "day_of_week": "THURSDAY", + "start_time": { "hours": 22, "minutes": 0, "seconds": 0, @@ -893,12 +893,12 @@ def __init__(__self__, }, }, deny_maintenance_period={ - "startDate": { + "start_date": { "year": 2050, "month": 1, "day": 1, }, - "endDate": { + "end_date": { "year": 2050, "month": 2, "day": 1, @@ -911,8 +911,8 @@ def __init__(__self__, }, }, oauth_config={ - "clientId": "my-client-id", - "clientSecret": "my-client-secret", + "client_id": "my-client-id", + "client_secret": "my-client-secret", }, opts = pulumi.ResourceOptions(depends_on=[looker_vpc_connection])) project = gcp.organizations.get_project() @@ -932,8 +932,8 @@ def __init__(__self__, platform_edition="LOOKER_CORE_STANDARD_ANNUAL", region="us-central1", oauth_config={ - "clientId": "my-client-id", - "clientSecret": "my-client-secret", + "client_id": "my-client-id", + "client_secret": "my-client-secret", }, custom_domain={ "domain": "my-custom-domain.com", @@ -1049,8 +1049,8 @@ def __init__(__self__, platform_edition="LOOKER_CORE_STANDARD_ANNUAL", region="us-central1", oauth_config={ - "clientId": "my-client-id", - "clientSecret": "my-client-secret", + "client_id": "my-client-id", + "client_secret": "my-client-secret", }) ``` ### Looker Instance Full @@ -1065,11 +1065,11 @@ def __init__(__self__, region="us-central1", public_ip_enabled=True, admin_settings={ - "allowedEmailDomains": ["google.com"], + "allowed_email_domains": ["google.com"], }, maintenance_window={ - "dayOfWeek": "THURSDAY", - "startTime": { + "day_of_week": "THURSDAY", + "start_time": { "hours": 22, "minutes": 0, "seconds": 0, @@ -1077,12 +1077,12 @@ def __init__(__self__, }, }, deny_maintenance_period={ - "startDate": { + "start_date": { "year": 2050, "month": 1, "day": 1, }, - "endDate": { + "end_date": { "year": 2050, "month": 2, "day": 1, @@ -1095,8 +1095,8 @@ def __init__(__self__, }, }, oauth_config={ - "clientId": "my-client-id", - "clientSecret": "my-client-secret", + "client_id": "my-client-id", + "client_secret": "my-client-secret", }) ``` ### Looker Instance Enterprise Full @@ -1125,14 +1125,14 @@ def __init__(__self__, reserved_range=looker_range.name, consumer_network=looker_network.id, admin_settings={ - "allowedEmailDomains": ["google.com"], + "allowed_email_domains": ["google.com"], }, encryption_config={ - "kmsKeyName": "looker-kms-key", + "kms_key_name": "looker-kms-key", }, maintenance_window={ - "dayOfWeek": "THURSDAY", - "startTime": { + "day_of_week": "THURSDAY", + "start_time": { "hours": 22, "minutes": 0, "seconds": 0, @@ -1140,12 +1140,12 @@ def __init__(__self__, }, }, deny_maintenance_period={ - "startDate": { + "start_date": { "year": 2050, "month": 1, "day": 1, }, - "endDate": { + "end_date": { "year": 2050, "month": 2, "day": 1, @@ -1158,8 +1158,8 @@ def __init__(__self__, }, }, oauth_config={ - "clientId": "my-client-id", - "clientSecret": "my-client-secret", + "client_id": "my-client-id", + "client_secret": "my-client-secret", }, opts = pulumi.ResourceOptions(depends_on=[looker_vpc_connection])) project = gcp.organizations.get_project() @@ -1179,8 +1179,8 @@ def __init__(__self__, platform_edition="LOOKER_CORE_STANDARD_ANNUAL", region="us-central1", oauth_config={ - "clientId": "my-client-id", - "clientSecret": "my-client-secret", + "client_id": "my-client-id", + "client_secret": "my-client-secret", }, custom_domain={ "domain": "my-custom-domain.com", diff --git a/sdk/python/pulumi_gcp/managedkafka/cluster.py b/sdk/python/pulumi_gcp/managedkafka/cluster.py index 4e6d14ef57..e874e8eeb3 100644 --- a/sdk/python/pulumi_gcp/managedkafka/cluster.py +++ b/sdk/python/pulumi_gcp/managedkafka/cluster.py @@ -391,12 +391,12 @@ def __init__(__self__, cluster_id="my-cluster", location="us-central1", capacity_config={ - "vcpuCount": "3", - "memoryBytes": "3221225472", + "vcpu_count": "3", + "memory_bytes": "3221225472", }, gcp_config={ - "accessConfig": { - "networkConfigs": [{ + "access_config": { + "network_configs": [{ "subnet": f"projects/{project.number}/regions/us-central1/subnetworks/default", }], }, @@ -425,16 +425,16 @@ def __init__(__self__, cluster_id="my-cluster", location="us-central1", capacity_config={ - "vcpuCount": "3", - "memoryBytes": "3221225472", + "vcpu_count": "3", + "memory_bytes": "3221225472", }, gcp_config={ - "accessConfig": { - "networkConfigs": [{ + "access_config": { + "network_configs": [{ "subnet": f"projects/{project.number}/regions/us-central1/subnetworks/default", }], }, - "kmsKey": key.id, + "kms_key": key.id, }) kafka_service_identity = gcp.projects.ServiceIdentity("kafka_service_identity", project=project.project_id, @@ -503,12 +503,12 @@ def __init__(__self__, cluster_id="my-cluster", location="us-central1", capacity_config={ - "vcpuCount": "3", - "memoryBytes": "3221225472", + "vcpu_count": "3", + "memory_bytes": "3221225472", }, gcp_config={ - "accessConfig": { - "networkConfigs": [{ + "access_config": { + "network_configs": [{ "subnet": f"projects/{project.number}/regions/us-central1/subnetworks/default", }], }, @@ -537,16 +537,16 @@ def __init__(__self__, cluster_id="my-cluster", location="us-central1", capacity_config={ - "vcpuCount": "3", - "memoryBytes": "3221225472", + "vcpu_count": "3", + "memory_bytes": "3221225472", }, gcp_config={ - "accessConfig": { - "networkConfigs": [{ + "access_config": { + "network_configs": [{ "subnet": f"projects/{project.number}/regions/us-central1/subnetworks/default", }], }, - "kmsKey": key.id, + "kms_key": key.id, }) kafka_service_identity = gcp.projects.ServiceIdentity("kafka_service_identity", project=project.project_id, diff --git a/sdk/python/pulumi_gcp/managedkafka/topic.py b/sdk/python/pulumi_gcp/managedkafka/topic.py index 3c80dc56fb..b2d50f2873 100644 --- a/sdk/python/pulumi_gcp/managedkafka/topic.py +++ b/sdk/python/pulumi_gcp/managedkafka/topic.py @@ -311,12 +311,12 @@ def __init__(__self__, cluster_id="my-cluster", location="us-central1", capacity_config={ - "vcpuCount": "3", - "memoryBytes": "3221225472", + "vcpu_count": "3", + "memory_bytes": "3221225472", }, gcp_config={ - "accessConfig": { - "networkConfigs": [{ + "access_config": { + "network_configs": [{ "subnet": f"projects/{project.number}/regions/us-central1/subnetworks/default", }], }, @@ -390,12 +390,12 @@ def __init__(__self__, cluster_id="my-cluster", location="us-central1", capacity_config={ - "vcpuCount": "3", - "memoryBytes": "3221225472", + "vcpu_count": "3", + "memory_bytes": "3221225472", }, gcp_config={ - "accessConfig": { - "networkConfigs": [{ + "access_config": { + "network_configs": [{ "subnet": f"projects/{project.number}/regions/us-central1/subnetworks/default", }], }, diff --git a/sdk/python/pulumi_gcp/memcache/instance.py b/sdk/python/pulumi_gcp/memcache/instance.py index ec40486709..1391706ba7 100644 --- a/sdk/python/pulumi_gcp/memcache/instance.py +++ b/sdk/python/pulumi_gcp/memcache/instance.py @@ -644,16 +644,16 @@ def __init__(__self__, "env": "test", }, node_config={ - "cpuCount": 1, - "memorySizeMb": 1024, + "cpu_count": 1, + "memory_size_mb": 1024, }, node_count=1, memcache_version="MEMCACHE_1_5", maintenance_policy={ - "weeklyMaintenanceWindows": [{ + "weekly_maintenance_windows": [{ "day": "SATURDAY", "duration": "14400s", - "startTime": { + "start_time": { "hours": 0, "minutes": 30, "seconds": 0, @@ -763,16 +763,16 @@ def __init__(__self__, "env": "test", }, node_config={ - "cpuCount": 1, - "memorySizeMb": 1024, + "cpu_count": 1, + "memory_size_mb": 1024, }, node_count=1, memcache_version="MEMCACHE_1_5", maintenance_policy={ - "weeklyMaintenanceWindows": [{ + "weekly_maintenance_windows": [{ "day": "SATURDAY", "duration": "14400s", - "startTime": { + "start_time": { "hours": 0, "minutes": 30, "seconds": 0, diff --git a/sdk/python/pulumi_gcp/migrationcenter/preference_set.py b/sdk/python/pulumi_gcp/migrationcenter/preference_set.py index ae6d5fdaca..bd69e76b95 100644 --- a/sdk/python/pulumi_gcp/migrationcenter/preference_set.py +++ b/sdk/python/pulumi_gcp/migrationcenter/preference_set.py @@ -327,11 +327,11 @@ def __init__(__self__, description="Terraform integration test description", display_name="Terraform integration test display", virtual_machine_preferences={ - "vmwareEnginePreferences": { - "cpuOvercommitRatio": 1.5, + "vmware_engine_preferences": { + "cpu_overcommit_ratio": 1.5, }, - "sizingOptimizationStrategy": "SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE", - "targetProduct": "COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE", + "sizing_optimization_strategy": "SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE", + "target_product": "COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE", }) ``` ### Preference Set Full @@ -346,29 +346,29 @@ def __init__(__self__, description="Terraform integration test description", display_name="Terraform integration test display", virtual_machine_preferences={ - "vmwareEnginePreferences": { - "cpuOvercommitRatio": 1.5, - "storageDeduplicationCompressionRatio": 1.3, - "commitmentPlan": "ON_DEMAND", + "vmware_engine_preferences": { + "cpu_overcommit_ratio": 1.5, + "storage_deduplication_compression_ratio": 1.3, + "commitment_plan": "ON_DEMAND", }, - "sizingOptimizationStrategy": "SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE", - "targetProduct": "COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE", - "commitmentPlan": "COMMITMENT_PLAN_ONE_YEAR", - "regionPreferences": { - "preferredRegions": ["us-central1"], + "sizing_optimization_strategy": "SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE", + "target_product": "COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE", + "commitment_plan": "COMMITMENT_PLAN_ONE_YEAR", + "region_preferences": { + "preferred_regions": ["us-central1"], }, - "soleTenancyPreferences": { - "commitmentPlan": "ON_DEMAND", - "cpuOvercommitRatio": 1.2, - "hostMaintenancePolicy": "HOST_MAINTENANCE_POLICY_DEFAULT", - "nodeTypes": [{ - "nodeName": "tf-test", + "sole_tenancy_preferences": { + "commitment_plan": "ON_DEMAND", + "cpu_overcommit_ratio": 1.2, + "host_maintenance_policy": "HOST_MAINTENANCE_POLICY_DEFAULT", + "node_types": [{ + "node_name": "tf-test", }], }, - "computeEnginePreferences": { - "licenseType": "LICENSE_TYPE_BRING_YOUR_OWN_LICENSE", - "machinePreferences": { - "allowedMachineSeries": [{ + "compute_engine_preferences": { + "license_type": "LICENSE_TYPE_BRING_YOUR_OWN_LICENSE", + "machine_preferences": { + "allowed_machine_series": [{ "code": "C3", }], }, @@ -443,11 +443,11 @@ def __init__(__self__, description="Terraform integration test description", display_name="Terraform integration test display", virtual_machine_preferences={ - "vmwareEnginePreferences": { - "cpuOvercommitRatio": 1.5, + "vmware_engine_preferences": { + "cpu_overcommit_ratio": 1.5, }, - "sizingOptimizationStrategy": "SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE", - "targetProduct": "COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE", + "sizing_optimization_strategy": "SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE", + "target_product": "COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE", }) ``` ### Preference Set Full @@ -462,29 +462,29 @@ def __init__(__self__, description="Terraform integration test description", display_name="Terraform integration test display", virtual_machine_preferences={ - "vmwareEnginePreferences": { - "cpuOvercommitRatio": 1.5, - "storageDeduplicationCompressionRatio": 1.3, - "commitmentPlan": "ON_DEMAND", + "vmware_engine_preferences": { + "cpu_overcommit_ratio": 1.5, + "storage_deduplication_compression_ratio": 1.3, + "commitment_plan": "ON_DEMAND", }, - "sizingOptimizationStrategy": "SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE", - "targetProduct": "COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE", - "commitmentPlan": "COMMITMENT_PLAN_ONE_YEAR", - "regionPreferences": { - "preferredRegions": ["us-central1"], + "sizing_optimization_strategy": "SIZING_OPTIMIZATION_STRATEGY_SAME_AS_SOURCE", + "target_product": "COMPUTE_MIGRATION_TARGET_PRODUCT_COMPUTE_ENGINE", + "commitment_plan": "COMMITMENT_PLAN_ONE_YEAR", + "region_preferences": { + "preferred_regions": ["us-central1"], }, - "soleTenancyPreferences": { - "commitmentPlan": "ON_DEMAND", - "cpuOvercommitRatio": 1.2, - "hostMaintenancePolicy": "HOST_MAINTENANCE_POLICY_DEFAULT", - "nodeTypes": [{ - "nodeName": "tf-test", + "sole_tenancy_preferences": { + "commitment_plan": "ON_DEMAND", + "cpu_overcommit_ratio": 1.2, + "host_maintenance_policy": "HOST_MAINTENANCE_POLICY_DEFAULT", + "node_types": [{ + "node_name": "tf-test", }], }, - "computeEnginePreferences": { - "licenseType": "LICENSE_TYPE_BRING_YOUR_OWN_LICENSE", - "machinePreferences": { - "allowedMachineSeries": [{ + "compute_engine_preferences": { + "license_type": "LICENSE_TYPE_BRING_YOUR_OWN_LICENSE", + "machine_preferences": { + "allowed_machine_series": [{ "code": "C3", }], }, diff --git a/sdk/python/pulumi_gcp/monitoring/alert_policy.py b/sdk/python/pulumi_gcp/monitoring/alert_policy.py index 06b8adee94..88de61ecca 100644 --- a/sdk/python/pulumi_gcp/monitoring/alert_policy.py +++ b/sdk/python/pulumi_gcp/monitoring/alert_policy.py @@ -494,14 +494,14 @@ def __init__(__self__, display_name="My Alert Policy", combiner="OR", conditions=[{ - "displayName": "test condition", - "conditionThreshold": { + "display_name": "test condition", + "condition_threshold": { "filter": "metric.type=\\"compute.googleapis.com/instance/disk/write_bytes_count\\" AND resource.type=\\"gce_instance\\"", "duration": "60s", "comparison": "COMPARISON_GT", "aggregations": [{ - "alignmentPeriod": "60s", - "perSeriesAligner": "ALIGN_RATE", + "alignment_period": "60s", + "per_series_aligner": "ALIGN_RATE", }], }, }], @@ -519,16 +519,16 @@ def __init__(__self__, display_name="My Alert Policy", combiner="OR", conditions=[{ - "displayName": "test condition", - "conditionThreshold": { + "display_name": "test condition", + "condition_threshold": { "filter": "metric.type=\\"compute.googleapis.com/instance/disk/write_bytes_count\\" AND resource.type=\\"gce_instance\\"", "duration": "60s", "comparison": "COMPARISON_GT", "aggregations": [{ - "alignmentPeriod": "60s", - "perSeriesAligner": "ALIGN_RATE", + "alignment_period": "60s", + "per_series_aligner": "ALIGN_RATE", }], - "evaluationMissingData": "EVALUATION_MISSING_DATA_INACTIVE", + "evaluation_missing_data": "EVALUATION_MISSING_DATA_INACTIVE", }, }], user_labels={ @@ -545,17 +545,17 @@ def __init__(__self__, display_name="My Alert Policy", combiner="OR", conditions=[{ - "displayName": "test condition", - "conditionThreshold": { + "display_name": "test condition", + "condition_threshold": { "filter": "metric.type=\\"compute.googleapis.com/instance/disk/write_bytes_count\\" AND resource.type=\\"gce_instance\\"", "duration": "60s", - "forecastOptions": { - "forecastHorizon": "3600s", + "forecast_options": { + "forecast_horizon": "3600s", }, "comparison": "COMPARISON_GT", "aggregations": [{ - "alignmentPeriod": "60s", - "perSeriesAligner": "ALIGN_RATE", + "alignment_period": "60s", + "per_series_aligner": "ALIGN_RATE", }], }, }], @@ -573,17 +573,17 @@ def __init__(__self__, display_name="My Alert Policy", combiner="OR", conditions=[{ - "displayName": "test condition", - "conditionPrometheusQueryLanguage": { + "display_name": "test condition", + "condition_prometheus_query_language": { "query": "compute_googleapis_com:instance_cpu_usage_time > 0", "duration": "60s", - "evaluationInterval": "60s", - "alertRule": "AlwaysOn", - "ruleGroup": "a test", + "evaluation_interval": "60s", + "alert_rule": "AlwaysOn", + "rule_group": "a test", }, }], alert_strategy={ - "autoClose": "1800s", + "auto_close": "1800s", }) ``` @@ -658,14 +658,14 @@ def __init__(__self__, display_name="My Alert Policy", combiner="OR", conditions=[{ - "displayName": "test condition", - "conditionThreshold": { + "display_name": "test condition", + "condition_threshold": { "filter": "metric.type=\\"compute.googleapis.com/instance/disk/write_bytes_count\\" AND resource.type=\\"gce_instance\\"", "duration": "60s", "comparison": "COMPARISON_GT", "aggregations": [{ - "alignmentPeriod": "60s", - "perSeriesAligner": "ALIGN_RATE", + "alignment_period": "60s", + "per_series_aligner": "ALIGN_RATE", }], }, }], @@ -683,16 +683,16 @@ def __init__(__self__, display_name="My Alert Policy", combiner="OR", conditions=[{ - "displayName": "test condition", - "conditionThreshold": { + "display_name": "test condition", + "condition_threshold": { "filter": "metric.type=\\"compute.googleapis.com/instance/disk/write_bytes_count\\" AND resource.type=\\"gce_instance\\"", "duration": "60s", "comparison": "COMPARISON_GT", "aggregations": [{ - "alignmentPeriod": "60s", - "perSeriesAligner": "ALIGN_RATE", + "alignment_period": "60s", + "per_series_aligner": "ALIGN_RATE", }], - "evaluationMissingData": "EVALUATION_MISSING_DATA_INACTIVE", + "evaluation_missing_data": "EVALUATION_MISSING_DATA_INACTIVE", }, }], user_labels={ @@ -709,17 +709,17 @@ def __init__(__self__, display_name="My Alert Policy", combiner="OR", conditions=[{ - "displayName": "test condition", - "conditionThreshold": { + "display_name": "test condition", + "condition_threshold": { "filter": "metric.type=\\"compute.googleapis.com/instance/disk/write_bytes_count\\" AND resource.type=\\"gce_instance\\"", "duration": "60s", - "forecastOptions": { - "forecastHorizon": "3600s", + "forecast_options": { + "forecast_horizon": "3600s", }, "comparison": "COMPARISON_GT", "aggregations": [{ - "alignmentPeriod": "60s", - "perSeriesAligner": "ALIGN_RATE", + "alignment_period": "60s", + "per_series_aligner": "ALIGN_RATE", }], }, }], @@ -737,17 +737,17 @@ def __init__(__self__, display_name="My Alert Policy", combiner="OR", conditions=[{ - "displayName": "test condition", - "conditionPrometheusQueryLanguage": { + "display_name": "test condition", + "condition_prometheus_query_language": { "query": "compute_googleapis_com:instance_cpu_usage_time > 0", "duration": "60s", - "evaluationInterval": "60s", - "alertRule": "AlwaysOn", - "ruleGroup": "a test", + "evaluation_interval": "60s", + "alert_rule": "AlwaysOn", + "rule_group": "a test", }, }], alert_strategy={ - "autoClose": "1800s", + "auto_close": "1800s", }) ``` diff --git a/sdk/python/pulumi_gcp/monitoring/custom_service.py b/sdk/python/pulumi_gcp/monitoring/custom_service.py index ee2e7c422f..f230f0c6d0 100644 --- a/sdk/python/pulumi_gcp/monitoring/custom_service.py +++ b/sdk/python/pulumi_gcp/monitoring/custom_service.py @@ -281,7 +281,7 @@ def __init__(__self__, service_id="custom-srv", display_name="My Custom Service custom-srv", telemetry={ - "resourceName": "//product.googleapis.com/foo/foo/services/test", + "resource_name": "//product.googleapis.com/foo/foo/services/test", }, user_labels={ "my_key": "my_value", @@ -349,7 +349,7 @@ def __init__(__self__, service_id="custom-srv", display_name="My Custom Service custom-srv", telemetry={ - "resourceName": "//product.googleapis.com/foo/foo/services/test", + "resource_name": "//product.googleapis.com/foo/foo/services/test", }, user_labels={ "my_key": "my_value", diff --git a/sdk/python/pulumi_gcp/monitoring/generic_service.py b/sdk/python/pulumi_gcp/monitoring/generic_service.py index dd7b0124d9..809a09ff65 100644 --- a/sdk/python/pulumi_gcp/monitoring/generic_service.py +++ b/sdk/python/pulumi_gcp/monitoring/generic_service.py @@ -322,8 +322,8 @@ def __init__(__self__, "my_other_key": "my_other_value", }, basic_service={ - "serviceType": "APP_ENGINE", - "serviceLabels": { + "service_type": "APP_ENGINE", + "service_labels": { "module_id": "another-module-id", }, }) @@ -410,8 +410,8 @@ def __init__(__self__, "my_other_key": "my_other_value", }, basic_service={ - "serviceType": "APP_ENGINE", - "serviceLabels": { + "service_type": "APP_ENGINE", + "service_labels": { "module_id": "another-module-id", }, }) 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 fdc9cbcc71..02dda89c94 100644 --- a/sdk/python/pulumi_gcp/monitoring/get_app_engine_service.py +++ b/sdk/python/pulumi_gcp/monitoring/get_app_engine_service.py @@ -165,7 +165,7 @@ def get_app_engine_service(module_id: Optional[str] = None, }, deployment={ "zip": { - "sourceUrl": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), + "source_url": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), }, }, env_variables={ @@ -246,7 +246,7 @@ def get_app_engine_service_output(module_id: Optional[pulumi.Input[str]] = None, }, deployment={ "zip": { - "sourceUrl": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), + "source_url": pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f"https://storage.googleapis.com/{bucket_name}/{object_name}"), }, }, env_variables={ diff --git a/sdk/python/pulumi_gcp/monitoring/get_notification_channel.py b/sdk/python/pulumi_gcp/monitoring/get_notification_channel.py index 578cba2e4c..ca75bf44d4 100644 --- a/sdk/python/pulumi_gcp/monitoring/get_notification_channel.py +++ b/sdk/python/pulumi_gcp/monitoring/get_notification_channel.py @@ -201,14 +201,14 @@ def get_notification_channel(display_name: Optional[str] = None, notification_channels=[basic.name], combiner="OR", conditions=[{ - "displayName": "test condition", - "conditionThreshold": { + "display_name": "test condition", + "condition_threshold": { "filter": "metric.type=\\"compute.googleapis.com/instance/disk/write_bytes_count\\" AND resource.type=\\"gce_instance\\"", "duration": "60s", "comparison": "COMPARISON_GT", "aggregations": [{ - "alignmentPeriod": "60s", - "perSeriesAligner": "ALIGN_RATE", + "alignment_period": "60s", + "per_series_aligner": "ALIGN_RATE", }], }, }]) @@ -285,14 +285,14 @@ def get_notification_channel_output(display_name: Optional[pulumi.Input[Optional notification_channels=[basic.name], combiner="OR", conditions=[{ - "displayName": "test condition", - "conditionThreshold": { + "display_name": "test condition", + "condition_threshold": { "filter": "metric.type=\\"compute.googleapis.com/instance/disk/write_bytes_count\\" AND resource.type=\\"gce_instance\\"", "duration": "60s", "comparison": "COMPARISON_GT", "aggregations": [{ - "alignmentPeriod": "60s", - "perSeriesAligner": "ALIGN_RATE", + "alignment_period": "60s", + "per_series_aligner": "ALIGN_RATE", }], }, }]) diff --git a/sdk/python/pulumi_gcp/monitoring/metric_descriptor.py b/sdk/python/pulumi_gcp/monitoring/metric_descriptor.py index 239e90ce46..9c9642e8f9 100644 --- a/sdk/python/pulumi_gcp/monitoring/metric_descriptor.py +++ b/sdk/python/pulumi_gcp/monitoring/metric_descriptor.py @@ -523,13 +523,13 @@ def __init__(__self__, unit="{USD}", labels=[{ "key": "store_id", - "valueType": "STRING", + "value_type": "STRING", "description": "The ID of the store.", }], launch_stage="BETA", metadata={ - "samplePeriod": "60s", - "ingestDelay": "30s", + "sample_period": "60s", + "ingest_delay": "30s", }) ``` ### Monitoring Metric Descriptor Alert @@ -549,8 +549,8 @@ def __init__(__self__, display_name="metric-descriptor", combiner="OR", conditions=[{ - "displayName": "test condition", - "conditionThreshold": { + "display_name": "test condition", + "condition_threshold": { "filter": with_alert.type.apply(lambda type: f"metric.type=\\"{type}\\" AND resource.type=\\"gce_instance\\""), "duration": "60s", "comparison": "COMPARISON_GT", @@ -640,13 +640,13 @@ def __init__(__self__, unit="{USD}", labels=[{ "key": "store_id", - "valueType": "STRING", + "value_type": "STRING", "description": "The ID of the store.", }], launch_stage="BETA", metadata={ - "samplePeriod": "60s", - "ingestDelay": "30s", + "sample_period": "60s", + "ingest_delay": "30s", }) ``` ### Monitoring Metric Descriptor Alert @@ -666,8 +666,8 @@ def __init__(__self__, display_name="metric-descriptor", combiner="OR", conditions=[{ - "displayName": "test condition", - "conditionThreshold": { + "display_name": "test condition", + "condition_threshold": { "filter": with_alert.type.apply(lambda type: f"metric.type=\\"{type}\\" AND resource.type=\\"gce_instance\\""), "duration": "60s", "comparison": "COMPARISON_GT", diff --git a/sdk/python/pulumi_gcp/monitoring/notification_channel.py b/sdk/python/pulumi_gcp/monitoring/notification_channel.py index e3d356e617..61964cd962 100644 --- a/sdk/python/pulumi_gcp/monitoring/notification_channel.py +++ b/sdk/python/pulumi_gcp/monitoring/notification_channel.py @@ -502,7 +502,7 @@ def __init__(__self__, "channel_name": "#foobar", }, sensitive_labels={ - "authToken": "one", + "auth_token": "one", }) ``` @@ -609,7 +609,7 @@ def __init__(__self__, "channel_name": "#foobar", }, sensitive_labels={ - "authToken": "one", + "auth_token": "one", }) ``` diff --git a/sdk/python/pulumi_gcp/monitoring/slo.py b/sdk/python/pulumi_gcp/monitoring/slo.py index d282a0688b..fd82e643b8 100644 --- a/sdk/python/pulumi_gcp/monitoring/slo.py +++ b/sdk/python/pulumi_gcp/monitoring/slo.py @@ -608,8 +608,8 @@ def __init__(__self__, goal=0.9, rolling_period_days=30, request_based_sli={ - "distributionCut": { - "distributionFilter": "metric.type=\\"serviceruntime.googleapis.com/api/request_latencies\\" resource.type=\\"api\\" ", + "distribution_cut": { + "distribution_filter": "metric.type=\\"serviceruntime.googleapis.com/api/request_latencies\\" resource.type=\\"api\\" ", "range": { "max": 0.5, }, @@ -632,8 +632,8 @@ def __init__(__self__, goal=0.95, calendar_period="FORTNIGHT", windows_based_sli={ - "windowPeriod": "400s", - "goodBadMetricFilter": std.join(separator=" AND ", + "window_period": "400s", + "good_bad_metric_filter": std.join(separator=" AND ", input=[ "metric.type=\\"monitoring.googleapis.com/uptime_check/check_passed\\"", "resource.type=\\"uptime_url\\"", @@ -656,9 +656,9 @@ def __init__(__self__, goal=0.9, rolling_period_days=20, windows_based_sli={ - "windowPeriod": "600s", - "metricMeanInRange": { - "timeSeries": std.join(separator=" AND ", + "window_period": "600s", + "metric_mean_in_range": { + "time_series": std.join(separator=" AND ", input=[ "metric.type=\\"agent.googleapis.com/cassandra/client_request/latency/95p\\"", "resource.type=\\"gce_instance\\"", @@ -685,9 +685,9 @@ def __init__(__self__, goal=0.9, rolling_period_days=20, windows_based_sli={ - "windowPeriod": "400s", - "metricSumInRange": { - "timeSeries": std.join(separator=" AND ", + "window_period": "400s", + "metric_sum_in_range": { + "time_series": std.join(separator=" AND ", input=[ "metric.type=\\"monitoring.googleapis.com/uptime_check/request_latency\\"", "resource.type=\\"uptime_url\\"", @@ -714,12 +714,12 @@ def __init__(__self__, goal=0.9, rolling_period_days=20, windows_based_sli={ - "windowPeriod": "100s", - "goodTotalRatioThreshold": { + "window_period": "100s", + "good_total_ratio_threshold": { "threshold": 0.1, "performance": { - "distributionCut": { - "distributionFilter": std.join(separator=" AND ", + "distribution_cut": { + "distribution_filter": std.join(separator=" AND ", input=[ "metric.type=\\"serviceruntime.googleapis.com/api/request_latencies\\"", "resource.type=\\"consumed_api\\"", @@ -856,8 +856,8 @@ def __init__(__self__, goal=0.9, rolling_period_days=30, request_based_sli={ - "distributionCut": { - "distributionFilter": "metric.type=\\"serviceruntime.googleapis.com/api/request_latencies\\" resource.type=\\"api\\" ", + "distribution_cut": { + "distribution_filter": "metric.type=\\"serviceruntime.googleapis.com/api/request_latencies\\" resource.type=\\"api\\" ", "range": { "max": 0.5, }, @@ -880,8 +880,8 @@ def __init__(__self__, goal=0.95, calendar_period="FORTNIGHT", windows_based_sli={ - "windowPeriod": "400s", - "goodBadMetricFilter": std.join(separator=" AND ", + "window_period": "400s", + "good_bad_metric_filter": std.join(separator=" AND ", input=[ "metric.type=\\"monitoring.googleapis.com/uptime_check/check_passed\\"", "resource.type=\\"uptime_url\\"", @@ -904,9 +904,9 @@ def __init__(__self__, goal=0.9, rolling_period_days=20, windows_based_sli={ - "windowPeriod": "600s", - "metricMeanInRange": { - "timeSeries": std.join(separator=" AND ", + "window_period": "600s", + "metric_mean_in_range": { + "time_series": std.join(separator=" AND ", input=[ "metric.type=\\"agent.googleapis.com/cassandra/client_request/latency/95p\\"", "resource.type=\\"gce_instance\\"", @@ -933,9 +933,9 @@ def __init__(__self__, goal=0.9, rolling_period_days=20, windows_based_sli={ - "windowPeriod": "400s", - "metricSumInRange": { - "timeSeries": std.join(separator=" AND ", + "window_period": "400s", + "metric_sum_in_range": { + "time_series": std.join(separator=" AND ", input=[ "metric.type=\\"monitoring.googleapis.com/uptime_check/request_latency\\"", "resource.type=\\"uptime_url\\"", @@ -962,12 +962,12 @@ def __init__(__self__, goal=0.9, rolling_period_days=20, windows_based_sli={ - "windowPeriod": "100s", - "goodTotalRatioThreshold": { + "window_period": "100s", + "good_total_ratio_threshold": { "threshold": 0.1, "performance": { - "distributionCut": { - "distributionFilter": std.join(separator=" AND ", + "distribution_cut": { + "distribution_filter": std.join(separator=" AND ", input=[ "metric.type=\\"serviceruntime.googleapis.com/api/request_latencies\\"", "resource.type=\\"consumed_api\\"", diff --git a/sdk/python/pulumi_gcp/monitoring/uptime_check_config.py b/sdk/python/pulumi_gcp/monitoring/uptime_check_config.py index 9606df1394..8493e96bf5 100644 --- a/sdk/python/pulumi_gcp/monitoring/uptime_check_config.py +++ b/sdk/python/pulumi_gcp/monitoring/uptime_check_config.py @@ -577,12 +577,12 @@ def __init__(__self__, http_check={ "path": "some-path", "port": 8010, - "requestMethod": "POST", - "contentType": "USER_PROVIDED", - "customContentType": "application/json", + "request_method": "POST", + "content_type": "USER_PROVIDED", + "custom_content_type": "application/json", "body": "Zm9vJTI1M0RiYXI=", - "pingConfig": { - "pingsCount": 1, + "ping_config": { + "pings_count": 1, }, }, monitored_resource={ @@ -595,9 +595,9 @@ def __init__(__self__, content_matchers=[{ "content": "\\"example\\"", "matcher": "MATCHES_JSON_PATH", - "jsonPathMatcher": { - "jsonPath": "$.path", - "jsonMatcher": "EXACT_MATCH", + "json_path_matcher": { + "json_path": "$.path", + "json_matcher": "EXACT_MATCH", }, }], checker_type="STATIC_IP_CHECKERS") @@ -614,18 +614,18 @@ def __init__(__self__, http_check={ "path": "some-path", "port": 8010, - "requestMethod": "POST", - "contentType": "URL_ENCODED", + "request_method": "POST", + "content_type": "URL_ENCODED", "body": "Zm9vJTI1M0RiYXI=", - "acceptedResponseStatusCodes": [ + "accepted_response_status_codes": [ { - "statusClass": "STATUS_CLASS_2XX", + "status_class": "STATUS_CLASS_2XX", }, { - "statusValue": 301, + "status_value": 301, }, { - "statusValue": 302, + "status_value": 302, }, ], }, @@ -639,9 +639,9 @@ def __init__(__self__, content_matchers=[{ "content": "\\"example\\"", "matcher": "MATCHES_JSON_PATH", - "jsonPathMatcher": { - "jsonPath": "$.path", - "jsonMatcher": "EXACT_MATCH", + "json_path_matcher": { + "json_path": "$.path", + "json_matcher": "EXACT_MATCH", }, }], checker_type="STATIC_IP_CHECKERS") @@ -658,9 +658,9 @@ def __init__(__self__, http_check={ "path": "/some-path", "port": 443, - "useSsl": True, - "validateSsl": True, - "serviceAgentAuthentication": { + "use_ssl": True, + "validate_ssl": True, + "service_agent_authentication": { "type": "OIDC_TOKEN", }, }, @@ -674,9 +674,9 @@ def __init__(__self__, content_matchers=[{ "content": "example", "matcher": "MATCHES_JSON_PATH", - "jsonPathMatcher": { - "jsonPath": "$.path", - "jsonMatcher": "REGEX_MATCH", + "json_path_matcher": { + "json_path": "$.path", + "json_matcher": "REGEX_MATCH", }, }]) ``` @@ -694,13 +694,13 @@ def __init__(__self__, timeout="60s", tcp_check={ "port": 888, - "pingConfig": { - "pingsCount": 2, + "ping_config": { + "pings_count": 2, }, }, resource_group={ - "resourceType": "INSTANCE", - "groupId": check.name, + "resource_type": "INSTANCE", + "group_id": check.name, }) ``` ### Uptime Check Config Synthetic Monitor @@ -722,24 +722,24 @@ def __init__(__self__, location="us-central1", build_config={ "runtime": "nodejs16", - "entryPoint": "SyntheticFunction", + "entry_point": "SyntheticFunction", "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, }, service_config={ - "maxInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, + "max_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, }) synthetic_monitor = gcp.monitoring.UptimeCheckConfig("synthetic_monitor", display_name="synthetic_monitor", timeout="60s", synthetic_monitor={ - "cloudFunctionV2": { + "cloud_function_v2": { "name": function.id, }, }) @@ -818,12 +818,12 @@ def __init__(__self__, http_check={ "path": "some-path", "port": 8010, - "requestMethod": "POST", - "contentType": "USER_PROVIDED", - "customContentType": "application/json", + "request_method": "POST", + "content_type": "USER_PROVIDED", + "custom_content_type": "application/json", "body": "Zm9vJTI1M0RiYXI=", - "pingConfig": { - "pingsCount": 1, + "ping_config": { + "pings_count": 1, }, }, monitored_resource={ @@ -836,9 +836,9 @@ def __init__(__self__, content_matchers=[{ "content": "\\"example\\"", "matcher": "MATCHES_JSON_PATH", - "jsonPathMatcher": { - "jsonPath": "$.path", - "jsonMatcher": "EXACT_MATCH", + "json_path_matcher": { + "json_path": "$.path", + "json_matcher": "EXACT_MATCH", }, }], checker_type="STATIC_IP_CHECKERS") @@ -855,18 +855,18 @@ def __init__(__self__, http_check={ "path": "some-path", "port": 8010, - "requestMethod": "POST", - "contentType": "URL_ENCODED", + "request_method": "POST", + "content_type": "URL_ENCODED", "body": "Zm9vJTI1M0RiYXI=", - "acceptedResponseStatusCodes": [ + "accepted_response_status_codes": [ { - "statusClass": "STATUS_CLASS_2XX", + "status_class": "STATUS_CLASS_2XX", }, { - "statusValue": 301, + "status_value": 301, }, { - "statusValue": 302, + "status_value": 302, }, ], }, @@ -880,9 +880,9 @@ def __init__(__self__, content_matchers=[{ "content": "\\"example\\"", "matcher": "MATCHES_JSON_PATH", - "jsonPathMatcher": { - "jsonPath": "$.path", - "jsonMatcher": "EXACT_MATCH", + "json_path_matcher": { + "json_path": "$.path", + "json_matcher": "EXACT_MATCH", }, }], checker_type="STATIC_IP_CHECKERS") @@ -899,9 +899,9 @@ def __init__(__self__, http_check={ "path": "/some-path", "port": 443, - "useSsl": True, - "validateSsl": True, - "serviceAgentAuthentication": { + "use_ssl": True, + "validate_ssl": True, + "service_agent_authentication": { "type": "OIDC_TOKEN", }, }, @@ -915,9 +915,9 @@ def __init__(__self__, content_matchers=[{ "content": "example", "matcher": "MATCHES_JSON_PATH", - "jsonPathMatcher": { - "jsonPath": "$.path", - "jsonMatcher": "REGEX_MATCH", + "json_path_matcher": { + "json_path": "$.path", + "json_matcher": "REGEX_MATCH", }, }]) ``` @@ -935,13 +935,13 @@ def __init__(__self__, timeout="60s", tcp_check={ "port": 888, - "pingConfig": { - "pingsCount": 2, + "ping_config": { + "pings_count": 2, }, }, resource_group={ - "resourceType": "INSTANCE", - "groupId": check.name, + "resource_type": "INSTANCE", + "group_id": check.name, }) ``` ### Uptime Check Config Synthetic Monitor @@ -963,24 +963,24 @@ def __init__(__self__, location="us-central1", build_config={ "runtime": "nodejs16", - "entryPoint": "SyntheticFunction", + "entry_point": "SyntheticFunction", "source": { - "storageSource": { + "storage_source": { "bucket": bucket.name, "object": object.name, }, }, }, service_config={ - "maxInstanceCount": 1, - "availableMemory": "256M", - "timeoutSeconds": 60, + "max_instance_count": 1, + "available_memory": "256M", + "timeout_seconds": 60, }) synthetic_monitor = gcp.monitoring.UptimeCheckConfig("synthetic_monitor", display_name="synthetic_monitor", timeout="60s", synthetic_monitor={ - "cloudFunctionV2": { + "cloud_function_v2": { "name": function.id, }, }) diff --git a/sdk/python/pulumi_gcp/netapp/backup.py b/sdk/python/pulumi_gcp/netapp/backup.py index 04929e8ed7..e0c36cba1f 100644 --- a/sdk/python/pulumi_gcp/netapp/backup.py +++ b/sdk/python/pulumi_gcp/netapp/backup.py @@ -501,7 +501,7 @@ def __init__(__self__, protocols=["NFSV3"], deletion_policy="FORCE", backup_config={ - "backupVault": default_backup_vault.id, + "backup_vault": default_backup_vault.id, }) test_backup = gcp.netapp.Backup("test_backup", name="test-backup", @@ -609,7 +609,7 @@ def __init__(__self__, protocols=["NFSV3"], deletion_policy="FORCE", backup_config={ - "backupVault": default_backup_vault.id, + "backup_vault": default_backup_vault.id, }) test_backup = gcp.netapp.Backup("test_backup", name="test-backup", diff --git a/sdk/python/pulumi_gcp/netapp/volume_replication.py b/sdk/python/pulumi_gcp/netapp/volume_replication.py index ea28428af6..18a80f801a 100644 --- a/sdk/python/pulumi_gcp/netapp/volume_replication.py +++ b/sdk/python/pulumi_gcp/netapp/volume_replication.py @@ -708,9 +708,9 @@ def __init__(__self__, replication_schedule="EVERY_10_MINUTES", description="This is a replication resource", destination_volume_parameters={ - "storagePool": destination_pool.id, - "volumeId": "destination-volume", - "shareName": "source-volume", + "storage_pool": destination_pool.id, + "volume_id": "destination-volume", + "share_name": "source-volume", "description": "This is a replicated volume", }, delete_destination_volume=True, @@ -813,9 +813,9 @@ def __init__(__self__, replication_schedule="EVERY_10_MINUTES", description="This is a replication resource", destination_volume_parameters={ - "storagePool": destination_pool.id, - "volumeId": "destination-volume", - "shareName": "source-volume", + "storage_pool": destination_pool.id, + "volume_id": "destination-volume", + "share_name": "source-volume", "description": "This is a replicated volume", }, delete_destination_volume=True, diff --git a/sdk/python/pulumi_gcp/networkconnectivity/policy_based_route.py b/sdk/python/pulumi_gcp/networkconnectivity/policy_based_route.py index 99e4f5d043..1e8dd87400 100644 --- a/sdk/python/pulumi_gcp/networkconnectivity/policy_based_route.py +++ b/sdk/python/pulumi_gcp/networkconnectivity/policy_based_route.py @@ -533,7 +533,7 @@ def __init__(__self__, name="my-pbr", network=my_network.id, filter={ - "protocolVersion": "IPV4", + "protocol_version": "IPV4", }, next_hop_other_routes="DEFAULT_ROUTING") ``` @@ -556,10 +556,10 @@ def __init__(__self__, network=my_network.id, priority=2302, filter={ - "protocolVersion": "IPV4", - "ipProtocol": "UDP", - "srcRange": "10.0.0.0/24", - "destRange": "0.0.0.0/0", + "protocol_version": "IPV4", + "ip_protocol": "UDP", + "src_range": "10.0.0.0/24", + "dest_range": "0.0.0.0/0", }, next_hop_ilb_ip=ilb.address, virtual_machine={ @@ -641,7 +641,7 @@ def __init__(__self__, name="my-pbr", network=my_network.id, filter={ - "protocolVersion": "IPV4", + "protocol_version": "IPV4", }, next_hop_other_routes="DEFAULT_ROUTING") ``` @@ -664,10 +664,10 @@ def __init__(__self__, network=my_network.id, priority=2302, filter={ - "protocolVersion": "IPV4", - "ipProtocol": "UDP", - "srcRange": "10.0.0.0/24", - "destRange": "0.0.0.0/0", + "protocol_version": "IPV4", + "ip_protocol": "UDP", + "src_range": "10.0.0.0/24", + "dest_range": "0.0.0.0/0", }, next_hop_ilb_ip=ilb.address, virtual_machine={ diff --git a/sdk/python/pulumi_gcp/networkconnectivity/spoke.py b/sdk/python/pulumi_gcp/networkconnectivity/spoke.py index d59a2766f3..b78b788a83 100644 --- a/sdk/python/pulumi_gcp/networkconnectivity/spoke.py +++ b/sdk/python/pulumi_gcp/networkconnectivity/spoke.py @@ -512,7 +512,7 @@ def __init__(__self__, }, hub=basic_hub.id, linked_vpc_network={ - "excludeExportRanges": [ + "exclude_export_ranges": [ "198.51.100.0/24", "10.10.0.0/16", ], @@ -538,15 +538,15 @@ def __init__(__self__, can_ip_forward=True, zone="us-west1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "projects/debian-cloud/global/images/debian-10-buster-v20210817", }, }, network_interfaces=[{ "subnetwork": subnetwork.name, - "networkIp": "10.0.0.2", - "accessConfigs": [{ - "networkTier": "PREMIUM", + "network_ip": "10.0.0.2", + "access_configs": [{ + "network_tier": "PREMIUM", }], }]) basic_hub = gcp.networkconnectivity.Hub("basic_hub", @@ -565,10 +565,10 @@ def __init__(__self__, hub=basic_hub.id, linked_router_appliance_instances={ "instances": [{ - "virtualMachine": instance.self_link, - "ipAddress": "10.0.0.2", + "virtual_machine": instance.self_link, + "ip_address": "10.0.0.2", }], - "siteToSiteDataTransfer": True, + "site_to_site_data_transfer": True, }) ``` @@ -648,7 +648,7 @@ def __init__(__self__, }, hub=basic_hub.id, linked_vpc_network={ - "excludeExportRanges": [ + "exclude_export_ranges": [ "198.51.100.0/24", "10.10.0.0/16", ], @@ -674,15 +674,15 @@ def __init__(__self__, can_ip_forward=True, zone="us-west1-a", boot_disk={ - "initializeParams": { + "initialize_params": { "image": "projects/debian-cloud/global/images/debian-10-buster-v20210817", }, }, network_interfaces=[{ "subnetwork": subnetwork.name, - "networkIp": "10.0.0.2", - "accessConfigs": [{ - "networkTier": "PREMIUM", + "network_ip": "10.0.0.2", + "access_configs": [{ + "network_tier": "PREMIUM", }], }]) basic_hub = gcp.networkconnectivity.Hub("basic_hub", @@ -701,10 +701,10 @@ def __init__(__self__, hub=basic_hub.id, linked_router_appliance_instances={ "instances": [{ - "virtualMachine": instance.self_link, - "ipAddress": "10.0.0.2", + "virtual_machine": instance.self_link, + "ip_address": "10.0.0.2", }], - "siteToSiteDataTransfer": True, + "site_to_site_data_transfer": True, }) ``` diff --git a/sdk/python/pulumi_gcp/networkmanagement/connectivity_test.py b/sdk/python/pulumi_gcp/networkmanagement/connectivity_test.py index 10896e80ea..b1e1066891 100644 --- a/sdk/python/pulumi_gcp/networkmanagement/connectivity_test.py +++ b/sdk/python/pulumi_gcp/networkmanagement/connectivity_test.py @@ -492,25 +492,25 @@ def __init__(__self__, project="debian-cloud") source = gcp.compute.Instance("source", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "network": vpc.id, }], name="source-vm", machine_type="e2-medium", boot_disk={ - "initializeParams": { + "initialize_params": { "image": debian9.id, }, }) destination = gcp.compute.Instance("destination", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "network": vpc.id, }], name="dest-vm", machine_type="e2-medium", boot_disk={ - "initializeParams": { + "initialize_params": { "image": debian9.id, }, }) @@ -554,14 +554,14 @@ def __init__(__self__, address_test = gcp.networkmanagement.ConnectivityTest("address-test", name="conn-test-addr", source={ - "ipAddress": source_addr.address, - "projectId": source_addr.project, + "ip_address": source_addr.address, + "project_id": source_addr.project, "network": vpc.id, - "networkType": "GCP_NETWORK", + "network_type": "GCP_NETWORK", }, destination={ - "ipAddress": dest_addr.address, - "projectId": dest_addr.project, + "ip_address": dest_addr.address, + "project_id": dest_addr.project, "network": vpc.id, }, protocol="UDP") @@ -666,25 +666,25 @@ def __init__(__self__, project="debian-cloud") source = gcp.compute.Instance("source", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "network": vpc.id, }], name="source-vm", machine_type="e2-medium", boot_disk={ - "initializeParams": { + "initialize_params": { "image": debian9.id, }, }) destination = gcp.compute.Instance("destination", network_interfaces=[{ - "accessConfigs": [{}], + "access_configs": [{}], "network": vpc.id, }], name="dest-vm", machine_type="e2-medium", boot_disk={ - "initializeParams": { + "initialize_params": { "image": debian9.id, }, }) @@ -728,14 +728,14 @@ def __init__(__self__, address_test = gcp.networkmanagement.ConnectivityTest("address-test", name="conn-test-addr", source={ - "ipAddress": source_addr.address, - "projectId": source_addr.project, + "ip_address": source_addr.address, + "project_id": source_addr.project, "network": vpc.id, - "networkType": "GCP_NETWORK", + "network_type": "GCP_NETWORK", }, destination={ - "ipAddress": dest_addr.address, - "projectId": dest_addr.project, + "ip_address": dest_addr.address, + "project_id": dest_addr.project, "network": vpc.id, }, protocol="UDP") diff --git a/sdk/python/pulumi_gcp/networksecurity/authorization_policy.py b/sdk/python/pulumi_gcp/networksecurity/authorization_policy.py index 89cb9d3ad6..0a1e4d0ec1 100644 --- a/sdk/python/pulumi_gcp/networksecurity/authorization_policy.py +++ b/sdk/python/pulumi_gcp/networksecurity/authorization_policy.py @@ -395,7 +395,7 @@ def __init__(__self__, rules=[{ "sources": [{ "principals": ["namespace/*"], - "ipBlocks": ["1.2.3.0/24"], + "ip_blocks": ["1.2.3.0/24"], }], }]) ``` @@ -415,15 +415,15 @@ def __init__(__self__, rules=[{ "sources": [{ "principals": ["namespace/*"], - "ipBlocks": ["1.2.3.0/24"], + "ip_blocks": ["1.2.3.0/24"], }], "destinations": [{ "hosts": ["mydomain.*"], "ports": [8080], "methods": ["GET"], - "httpHeaderMatch": { - "headerName": ":method", - "regexMatch": "GET", + "http_header_match": { + "header_name": ":method", + "regex_match": "GET", }, }], }]) @@ -498,7 +498,7 @@ def __init__(__self__, rules=[{ "sources": [{ "principals": ["namespace/*"], - "ipBlocks": ["1.2.3.0/24"], + "ip_blocks": ["1.2.3.0/24"], }], }]) ``` @@ -518,15 +518,15 @@ def __init__(__self__, rules=[{ "sources": [{ "principals": ["namespace/*"], - "ipBlocks": ["1.2.3.0/24"], + "ip_blocks": ["1.2.3.0/24"], }], "destinations": [{ "hosts": ["mydomain.*"], "ports": [8080], "methods": ["GET"], - "httpHeaderMatch": { - "headerName": ":method", - "regexMatch": "GET", + "http_header_match": { + "header_name": ":method", + "regex_match": "GET", }, }], }]) diff --git a/sdk/python/pulumi_gcp/networksecurity/client_tls_policy.py b/sdk/python/pulumi_gcp/networksecurity/client_tls_policy.py index f3a73b4fed..481f50b64d 100644 --- a/sdk/python/pulumi_gcp/networksecurity/client_tls_policy.py +++ b/sdk/python/pulumi_gcp/networksecurity/client_tls_policy.py @@ -436,19 +436,19 @@ def __init__(__self__, }, description="my description", client_certificate={ - "certificateProviderInstance": { - "pluginInstance": "google_cloud_private_spiffe", + "certificate_provider_instance": { + "plugin_instance": "google_cloud_private_spiffe", }, }, server_validation_cas=[ { - "grpcEndpoint": { - "targetUri": "unix:mypath", + "grpc_endpoint": { + "target_uri": "unix:mypath", }, }, { - "grpcEndpoint": { - "targetUri": "unix:mypath1", + "grpc_endpoint": { + "target_uri": "unix:mypath1", }, }, ]) @@ -534,19 +534,19 @@ def __init__(__self__, }, description="my description", client_certificate={ - "certificateProviderInstance": { - "pluginInstance": "google_cloud_private_spiffe", + "certificate_provider_instance": { + "plugin_instance": "google_cloud_private_spiffe", }, }, server_validation_cas=[ { - "grpcEndpoint": { - "targetUri": "unix:mypath", + "grpc_endpoint": { + "target_uri": "unix:mypath", }, }, { - "grpcEndpoint": { - "targetUri": "unix:mypath1", + "grpc_endpoint": { + "target_uri": "unix:mypath1", }, }, ]) diff --git a/sdk/python/pulumi_gcp/networksecurity/gateway_security_policy.py b/sdk/python/pulumi_gcp/networksecurity/gateway_security_policy.py index cf2bdbfba9..29dc136e5b 100644 --- a/sdk/python/pulumi_gcp/networksecurity/gateway_security_policy.py +++ b/sdk/python/pulumi_gcp/networksecurity/gateway_security_policy.py @@ -314,19 +314,19 @@ def __init__(__self__, location="us-central1", tier="DEVOPS", publishing_options={ - "publishCaCert": False, - "publishCrl": False, + "publish_ca_cert": False, + "publish_crl": False, }, issuance_policy={ - "maximumLifetime": "1209600s", - "baselineValues": { - "caOptions": { - "isCa": False, + "maximum_lifetime": "1209600s", + "baseline_values": { + "ca_options": { + "is_ca": False, }, - "keyUsage": { - "baseKeyUsage": {}, - "extendedKeyUsage": { - "serverAuth": True, + "key_usage": { + "base_key_usage": {}, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -341,23 +341,23 @@ def __init__(__self__, skip_grace_period=True, ignore_active_certificates_on_deletion=True, config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "Test LLC", - "commonName": "my-ca", + "common_name": "my-ca", }, }, - "x509Config": { - "caOptions": { - "isCa": True, + "x509_config": { + "ca_options": { + "is_ca": True, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": False, + "extended_key_usage": { + "server_auth": False, }, }, }, @@ -462,19 +462,19 @@ def __init__(__self__, location="us-central1", tier="DEVOPS", publishing_options={ - "publishCaCert": False, - "publishCrl": False, + "publish_ca_cert": False, + "publish_crl": False, }, issuance_policy={ - "maximumLifetime": "1209600s", - "baselineValues": { - "caOptions": { - "isCa": False, + "maximum_lifetime": "1209600s", + "baseline_values": { + "ca_options": { + "is_ca": False, }, - "keyUsage": { - "baseKeyUsage": {}, - "extendedKeyUsage": { - "serverAuth": True, + "key_usage": { + "base_key_usage": {}, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -489,23 +489,23 @@ def __init__(__self__, skip_grace_period=True, ignore_active_certificates_on_deletion=True, config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "Test LLC", - "commonName": "my-ca", + "common_name": "my-ca", }, }, - "x509Config": { - "caOptions": { - "isCa": True, + "x509_config": { + "ca_options": { + "is_ca": True, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": False, + "extended_key_usage": { + "server_auth": False, }, }, }, diff --git a/sdk/python/pulumi_gcp/networksecurity/security_profile.py b/sdk/python/pulumi_gcp/networksecurity/security_profile.py index 4b8d7e09b1..0e624a94db 100644 --- a/sdk/python/pulumi_gcp/networksecurity/security_profile.py +++ b/sdk/python/pulumi_gcp/networksecurity/security_profile.py @@ -450,7 +450,7 @@ def __init__(__self__, description="my description", type="THREAT_PREVENTION", threat_prevention_profile={ - "severityOverrides": [ + "severity_overrides": [ { "action": "ALLOW", "severity": "INFORMATIONAL", @@ -460,9 +460,9 @@ def __init__(__self__, "severity": "HIGH", }, ], - "threatOverrides": [{ + "threat_overrides": [{ "action": "ALLOW", - "threatId": "280647", + "threat_id": "280647", }], }) ``` @@ -543,7 +543,7 @@ def __init__(__self__, description="my description", type="THREAT_PREVENTION", threat_prevention_profile={ - "severityOverrides": [ + "severity_overrides": [ { "action": "ALLOW", "severity": "INFORMATIONAL", @@ -553,9 +553,9 @@ def __init__(__self__, "severity": "HIGH", }, ], - "threatOverrides": [{ + "threat_overrides": [{ "action": "ALLOW", - "threatId": "280647", + "threat_id": "280647", }], }) ``` diff --git a/sdk/python/pulumi_gcp/networksecurity/server_tls_policy.py b/sdk/python/pulumi_gcp/networksecurity/server_tls_policy.py index 99d5454cc9..8d3ea34d21 100644 --- a/sdk/python/pulumi_gcp/networksecurity/server_tls_policy.py +++ b/sdk/python/pulumi_gcp/networksecurity/server_tls_policy.py @@ -435,25 +435,25 @@ def __init__(__self__, description="my description", allow_open=False, server_certificate={ - "certificateProviderInstance": { - "pluginInstance": "google_cloud_private_spiffe", + "certificate_provider_instance": { + "plugin_instance": "google_cloud_private_spiffe", }, }, mtls_policy={ - "clientValidationCas": [ + "client_validation_cas": [ { - "grpcEndpoint": { - "targetUri": "unix:mypath", + "grpc_endpoint": { + "target_uri": "unix:mypath", }, }, { - "grpcEndpoint": { - "targetUri": "unix:abc/mypath", + "grpc_endpoint": { + "target_uri": "unix:abc/mypath", }, }, { - "certificateProviderInstance": { - "pluginInstance": "google_cloud_private_spiffe", + "certificate_provider_instance": { + "plugin_instance": "google_cloud_private_spiffe", }, }, ], @@ -474,7 +474,7 @@ def __init__(__self__, location="global", allow_open=False, mtls_policy={ - "clientValidationMode": "ALLOW_INVALID_OR_MISSING_CLIENT_CERT", + "client_validation_mode": "ALLOW_INVALID_OR_MISSING_CLIENT_CERT", }) ``` ### Network Security Server Tls Policy Server Cert @@ -492,8 +492,8 @@ def __init__(__self__, location="global", allow_open=False, server_certificate={ - "grpcEndpoint": { - "targetUri": "unix:mypath", + "grpc_endpoint": { + "target_uri": "unix:mypath", }, }) ``` @@ -510,11 +510,11 @@ def __init__(__self__, description="sample trust config description", location="global", trust_stores=[{ - "trustAnchors": [{ - "pemCertificate": std.file(input="test-fixtures/ca_cert.pem").result, + "trust_anchors": [{ + "pem_certificate": std.file(input="test-fixtures/ca_cert.pem").result, }], - "intermediateCas": [{ - "pemCertificate": std.file(input="test-fixtures/ca_cert.pem").result, + "intermediate_cas": [{ + "pem_certificate": std.file(input="test-fixtures/ca_cert.pem").result, }], }], labels={ @@ -526,8 +526,8 @@ def __init__(__self__, location="global", allow_open=False, mtls_policy={ - "clientValidationMode": "REJECT_INVALID", - "clientValidationTrustConfig": default_trust_config.name.apply(lambda name: f"projects/{project.number}/locations/global/trustConfigs/{name}"), + "client_validation_mode": "REJECT_INVALID", + "client_validation_trust_config": default_trust_config.name.apply(lambda name: f"projects/{project.number}/locations/global/trustConfigs/{name}"), }, labels={ "foo": "bar", @@ -604,25 +604,25 @@ def __init__(__self__, description="my description", allow_open=False, server_certificate={ - "certificateProviderInstance": { - "pluginInstance": "google_cloud_private_spiffe", + "certificate_provider_instance": { + "plugin_instance": "google_cloud_private_spiffe", }, }, mtls_policy={ - "clientValidationCas": [ + "client_validation_cas": [ { - "grpcEndpoint": { - "targetUri": "unix:mypath", + "grpc_endpoint": { + "target_uri": "unix:mypath", }, }, { - "grpcEndpoint": { - "targetUri": "unix:abc/mypath", + "grpc_endpoint": { + "target_uri": "unix:abc/mypath", }, }, { - "certificateProviderInstance": { - "pluginInstance": "google_cloud_private_spiffe", + "certificate_provider_instance": { + "plugin_instance": "google_cloud_private_spiffe", }, }, ], @@ -643,7 +643,7 @@ def __init__(__self__, location="global", allow_open=False, mtls_policy={ - "clientValidationMode": "ALLOW_INVALID_OR_MISSING_CLIENT_CERT", + "client_validation_mode": "ALLOW_INVALID_OR_MISSING_CLIENT_CERT", }) ``` ### Network Security Server Tls Policy Server Cert @@ -661,8 +661,8 @@ def __init__(__self__, location="global", allow_open=False, server_certificate={ - "grpcEndpoint": { - "targetUri": "unix:mypath", + "grpc_endpoint": { + "target_uri": "unix:mypath", }, }) ``` @@ -679,11 +679,11 @@ def __init__(__self__, description="sample trust config description", location="global", trust_stores=[{ - "trustAnchors": [{ - "pemCertificate": std.file(input="test-fixtures/ca_cert.pem").result, + "trust_anchors": [{ + "pem_certificate": std.file(input="test-fixtures/ca_cert.pem").result, }], - "intermediateCas": [{ - "pemCertificate": std.file(input="test-fixtures/ca_cert.pem").result, + "intermediate_cas": [{ + "pem_certificate": std.file(input="test-fixtures/ca_cert.pem").result, }], }], labels={ @@ -695,8 +695,8 @@ def __init__(__self__, location="global", allow_open=False, mtls_policy={ - "clientValidationMode": "REJECT_INVALID", - "clientValidationTrustConfig": default_trust_config.name.apply(lambda name: f"projects/{project.number}/locations/global/trustConfigs/{name}"), + "client_validation_mode": "REJECT_INVALID", + "client_validation_trust_config": default_trust_config.name.apply(lambda name: f"projects/{project.number}/locations/global/trustConfigs/{name}"), }, labels={ "foo": "bar", diff --git a/sdk/python/pulumi_gcp/networksecurity/tls_inspection_policy.py b/sdk/python/pulumi_gcp/networksecurity/tls_inspection_policy.py index 73e71ef66c..b6a0149f9f 100644 --- a/sdk/python/pulumi_gcp/networksecurity/tls_inspection_policy.py +++ b/sdk/python/pulumi_gcp/networksecurity/tls_inspection_policy.py @@ -445,19 +445,19 @@ def __init__(__self__, location="us-central1", tier="DEVOPS", publishing_options={ - "publishCaCert": False, - "publishCrl": False, + "publish_ca_cert": False, + "publish_crl": False, }, issuance_policy={ - "maximumLifetime": "1209600s", - "baselineValues": { - "caOptions": { - "isCa": False, + "maximum_lifetime": "1209600s", + "baseline_values": { + "ca_options": { + "is_ca": False, }, - "keyUsage": { - "baseKeyUsage": {}, - "extendedKeyUsage": { - "serverAuth": True, + "key_usage": { + "base_key_usage": {}, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -472,23 +472,23 @@ def __init__(__self__, skip_grace_period=True, ignore_active_certificates_on_deletion=True, config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "Test LLC", - "commonName": "my-ca", + "common_name": "my-ca", }, }, - "x509Config": { - "caOptions": { - "isCa": True, + "x509_config": { + "ca_options": { + "is_ca": True, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": False, + "extended_key_usage": { + "server_auth": False, }, }, }, @@ -524,19 +524,19 @@ def __init__(__self__, location="us-central1", tier="DEVOPS", publishing_options={ - "publishCaCert": False, - "publishCrl": False, + "publish_ca_cert": False, + "publish_crl": False, }, issuance_policy={ - "maximumLifetime": "1209600s", - "baselineValues": { - "caOptions": { - "isCa": False, + "maximum_lifetime": "1209600s", + "baseline_values": { + "ca_options": { + "is_ca": False, }, - "keyUsage": { - "baseKeyUsage": {}, - "extendedKeyUsage": { - "serverAuth": True, + "key_usage": { + "base_key_usage": {}, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -551,23 +551,23 @@ def __init__(__self__, skip_grace_period=True, ignore_active_certificates_on_deletion=True, config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "Test LLC", - "commonName": "my-ca", + "common_name": "my-ca", }, }, - "x509Config": { - "caOptions": { - "isCa": True, + "x509_config": { + "ca_options": { + "is_ca": True, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": False, + "extended_key_usage": { + "server_auth": False, }, }, }, @@ -585,11 +585,11 @@ def __init__(__self__, description="sample trust config description", location="us-central1", trust_stores=[{ - "trustAnchors": [{ - "pemCertificate": std.file(input="test-fixtures/ca_cert.pem").result, + "trust_anchors": [{ + "pem_certificate": std.file(input="test-fixtures/ca_cert.pem").result, }], - "intermediateCas": [{ - "pemCertificate": std.file(input="test-fixtures/ca_cert.pem").result, + "intermediate_cas": [{ + "pem_certificate": std.file(input="test-fixtures/ca_cert.pem").result, }], }]) default_tls_inspection_policy = gcp.networksecurity.TlsInspectionPolicy("default", @@ -694,19 +694,19 @@ def __init__(__self__, location="us-central1", tier="DEVOPS", publishing_options={ - "publishCaCert": False, - "publishCrl": False, + "publish_ca_cert": False, + "publish_crl": False, }, issuance_policy={ - "maximumLifetime": "1209600s", - "baselineValues": { - "caOptions": { - "isCa": False, + "maximum_lifetime": "1209600s", + "baseline_values": { + "ca_options": { + "is_ca": False, }, - "keyUsage": { - "baseKeyUsage": {}, - "extendedKeyUsage": { - "serverAuth": True, + "key_usage": { + "base_key_usage": {}, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -721,23 +721,23 @@ def __init__(__self__, skip_grace_period=True, ignore_active_certificates_on_deletion=True, config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "Test LLC", - "commonName": "my-ca", + "common_name": "my-ca", }, }, - "x509Config": { - "caOptions": { - "isCa": True, + "x509_config": { + "ca_options": { + "is_ca": True, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": False, + "extended_key_usage": { + "server_auth": False, }, }, }, @@ -773,19 +773,19 @@ def __init__(__self__, location="us-central1", tier="DEVOPS", publishing_options={ - "publishCaCert": False, - "publishCrl": False, + "publish_ca_cert": False, + "publish_crl": False, }, issuance_policy={ - "maximumLifetime": "1209600s", - "baselineValues": { - "caOptions": { - "isCa": False, + "maximum_lifetime": "1209600s", + "baseline_values": { + "ca_options": { + "is_ca": False, }, - "keyUsage": { - "baseKeyUsage": {}, - "extendedKeyUsage": { - "serverAuth": True, + "key_usage": { + "base_key_usage": {}, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -800,23 +800,23 @@ def __init__(__self__, skip_grace_period=True, ignore_active_certificates_on_deletion=True, config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "Test LLC", - "commonName": "my-ca", + "common_name": "my-ca", }, }, - "x509Config": { - "caOptions": { - "isCa": True, + "x509_config": { + "ca_options": { + "is_ca": True, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": False, + "extended_key_usage": { + "server_auth": False, }, }, }, @@ -834,11 +834,11 @@ def __init__(__self__, description="sample trust config description", location="us-central1", trust_stores=[{ - "trustAnchors": [{ - "pemCertificate": std.file(input="test-fixtures/ca_cert.pem").result, + "trust_anchors": [{ + "pem_certificate": std.file(input="test-fixtures/ca_cert.pem").result, }], - "intermediateCas": [{ - "pemCertificate": std.file(input="test-fixtures/ca_cert.pem").result, + "intermediate_cas": [{ + "pem_certificate": std.file(input="test-fixtures/ca_cert.pem").result, }], }]) default_tls_inspection_policy = gcp.networksecurity.TlsInspectionPolicy("default", diff --git a/sdk/python/pulumi_gcp/networkservices/edge_cache_keyset.py b/sdk/python/pulumi_gcp/networkservices/edge_cache_keyset.py index ce3e6bf26e..0f6df7c5e6 100644 --- a/sdk/python/pulumi_gcp/networkservices/edge_cache_keyset.py +++ b/sdk/python/pulumi_gcp/networkservices/edge_cache_keyset.py @@ -397,7 +397,7 @@ def __init__(__self__, "managed": True, }], validation_shared_keys=[{ - "secretVersion": secret_version_basic.id, + "secret_version": secret_version_basic.id, }]) ``` @@ -511,7 +511,7 @@ def __init__(__self__, "managed": True, }], validation_shared_keys=[{ - "secretVersion": secret_version_basic.id, + "secret_version": secret_version_basic.id, }]) ``` diff --git a/sdk/python/pulumi_gcp/networkservices/edge_cache_origin.py b/sdk/python/pulumi_gcp/networkservices/edge_cache_origin.py index 9fd9c9ac8c..ab74521a60 100644 --- a/sdk/python/pulumi_gcp/networkservices/edge_cache_origin.py +++ b/sdk/python/pulumi_gcp/networkservices/edge_cache_origin.py @@ -743,25 +743,25 @@ def __init__(__self__, "FORBIDDEN", ], timeout={ - "connectTimeout": "10s", - "maxAttemptsTimeout": "20s", - "responseTimeout": "60s", - "readTimeout": "5s", + "connect_timeout": "10s", + "max_attempts_timeout": "20s", + "response_timeout": "60s", + "read_timeout": "5s", }, origin_override_action={ - "urlRewrite": { - "hostRewrite": "example.com", + "url_rewrite": { + "host_rewrite": "example.com", }, - "headerAction": { - "requestHeadersToAdds": [{ - "headerName": "x-header", - "headerValue": "value", + "header_action": { + "request_headers_to_adds": [{ + "header_name": "x-header", + "header_value": "value", "replace": True, }], }, }, origin_redirect={ - "redirectConditions": [ + "redirect_conditions": [ "MOVED_PERMANENTLY", "FOUND", "SEE_OTHER", @@ -779,7 +779,7 @@ def __init__(__self__, "a": "b", }, timeout={ - "connectTimeout": "10s", + "connect_timeout": "10s", }) ``` ### Network Services Edge Cache Origin V4auth @@ -801,9 +801,9 @@ def __init__(__self__, origin_address="gs://media-edge-default", description="The default bucket for V4 authentication", aws_v4_authentication={ - "accessKeyId": "ACCESSKEYID", - "secretAccessKeyVersion": secret_version_basic.id, - "originRegion": "auto", + "access_key_id": "ACCESSKEYID", + "secret_access_key_version": secret_version_basic.id, + "origin_region": "auto", }) ``` @@ -936,25 +936,25 @@ def __init__(__self__, "FORBIDDEN", ], timeout={ - "connectTimeout": "10s", - "maxAttemptsTimeout": "20s", - "responseTimeout": "60s", - "readTimeout": "5s", + "connect_timeout": "10s", + "max_attempts_timeout": "20s", + "response_timeout": "60s", + "read_timeout": "5s", }, origin_override_action={ - "urlRewrite": { - "hostRewrite": "example.com", + "url_rewrite": { + "host_rewrite": "example.com", }, - "headerAction": { - "requestHeadersToAdds": [{ - "headerName": "x-header", - "headerValue": "value", + "header_action": { + "request_headers_to_adds": [{ + "header_name": "x-header", + "header_value": "value", "replace": True, }], }, }, origin_redirect={ - "redirectConditions": [ + "redirect_conditions": [ "MOVED_PERMANENTLY", "FOUND", "SEE_OTHER", @@ -972,7 +972,7 @@ def __init__(__self__, "a": "b", }, timeout={ - "connectTimeout": "10s", + "connect_timeout": "10s", }) ``` ### Network Services Edge Cache Origin V4auth @@ -994,9 +994,9 @@ def __init__(__self__, origin_address="gs://media-edge-default", description="The default bucket for V4 authentication", aws_v4_authentication={ - "accessKeyId": "ACCESSKEYID", - "secretAccessKeyVersion": secret_version_basic.id, - "originRegion": "auto", + "access_key_id": "ACCESSKEYID", + "secret_access_key_version": secret_version_basic.id, + "origin_region": "auto", }) ``` diff --git a/sdk/python/pulumi_gcp/networkservices/edge_cache_service.py b/sdk/python/pulumi_gcp/networkservices/edge_cache_service.py index 48f7c40f9b..e521864955 100644 --- a/sdk/python/pulumi_gcp/networkservices/edge_cache_service.py +++ b/sdk/python/pulumi_gcp/networkservices/edge_cache_service.py @@ -572,36 +572,36 @@ def __init__(__self__, description="The default bucket for media edge test", max_attempts=2, timeout={ - "connectTimeout": "10s", + "connect_timeout": "10s", }) instance_edge_cache_service = gcp.networkservices.EdgeCacheService("instance", name="my-service", description="some description", routing={ - "hostRules": [{ + "host_rules": [{ "description": "host rule description", "hosts": ["sslcert.tf-test.club"], - "pathMatcher": "routes", + "path_matcher": "routes", }], - "pathMatchers": [{ + "path_matchers": [{ "name": "routes", - "routeRules": [{ + "route_rules": [{ "description": "a route rule to match against", "priority": "1", - "matchRules": [{ - "prefixMatch": "/", + "match_rules": [{ + "prefix_match": "/", }], "origin": instance.name, - "routeAction": { - "cdnPolicy": { - "cacheMode": "CACHE_ALL_STATIC", - "defaultTtl": "3600s", + "route_action": { + "cdn_policy": { + "cache_mode": "CACHE_ALL_STATIC", + "default_ttl": "3600s", }, }, - "headerAction": { - "responseHeaderToAdds": [{ - "headerName": "x-cache-status", - "headerValue": "{cdn_cache_status}", + "header_action": { + "response_header_to_adds": [{ + "header_name": "x-cache-status", + "header_value": "{cdn_cache_status}", }], }, }], @@ -624,7 +624,7 @@ def __init__(__self__, description="The default bucket for media edge test", max_attempts=2, timeout={ - "connectTimeout": "10s", + "connect_timeout": "10s", }) instance = gcp.networkservices.EdgeCacheOrigin("instance", name="my-origin", @@ -632,7 +632,7 @@ def __init__(__self__, description="The default bucket for media edge test", max_attempts=2, timeout={ - "connectTimeout": "10s", + "connect_timeout": "10s", }) instance_edge_cache_service = gcp.networkservices.EdgeCacheService("instance", name="my-service", @@ -643,43 +643,43 @@ def __init__(__self__, "a": "b", }, routing={ - "hostRules": [ + "host_rules": [ { "description": "host rule description", "hosts": ["sslcert.tf-test.club"], - "pathMatcher": "routes", + "path_matcher": "routes", }, { "description": "host rule2", "hosts": ["sslcert.tf-test2.club"], - "pathMatcher": "routes", + "path_matcher": "routes", }, { "description": "host rule3", "hosts": ["sslcert.tf-test3.club"], - "pathMatcher": "routesAdvanced", + "path_matcher": "routesAdvanced", }, ], - "pathMatchers": [ + "path_matchers": [ { "name": "routes", - "routeRules": [{ + "route_rules": [{ "description": "a route rule to match against", "priority": "1", - "matchRules": [{ - "prefixMatch": "/", + "match_rules": [{ + "prefix_match": "/", }], "origin": instance.name, - "routeAction": { - "cdnPolicy": { - "cacheMode": "CACHE_ALL_STATIC", - "defaultTtl": "3600s", + "route_action": { + "cdn_policy": { + "cache_mode": "CACHE_ALL_STATIC", + "default_ttl": "3600s", }, }, - "headerAction": { - "responseHeaderToAdds": [{ - "headerName": "x-cache-status", - "headerValue": "{cdn_cache_status}", + "header_action": { + "response_header_to_adds": [{ + "header_name": "x-cache-status", + "header_value": "{cdn_cache_status}", }], }, }], @@ -687,109 +687,109 @@ def __init__(__self__, { "name": "routesAdvanced", "description": "an advanced ruleset", - "routeRules": [ + "route_rules": [ { "description": "an advanced route rule to match against", "priority": "1", - "matchRules": [ + "match_rules": [ { - "prefixMatch": "/potato/", - "queryParameterMatches": [ + "prefix_match": "/potato/", + "query_parameter_matches": [ { "name": "debug", - "presentMatch": True, + "present_match": True, }, { "name": "state", - "exactMatch": "debug", + "exact_match": "debug", }, ], }, { - "fullPathMatch": "/apple", + "full_path_match": "/apple", }, ], - "headerAction": { - "requestHeaderToAdds": [ + "header_action": { + "request_header_to_adds": [ { - "headerName": "debug", - "headerValue": "true", + "header_name": "debug", + "header_value": "true", "replace": True, }, { - "headerName": "potato", - "headerValue": "plant", + "header_name": "potato", + "header_value": "plant", }, ], - "responseHeaderToAdds": [{ - "headerName": "potato", - "headerValue": "plant", + "response_header_to_adds": [{ + "header_name": "potato", + "header_value": "plant", "replace": True, }], - "requestHeaderToRemoves": [{ - "headerName": "prod", + "request_header_to_removes": [{ + "header_name": "prod", }], - "responseHeaderToRemoves": [{ - "headerName": "prod", + "response_header_to_removes": [{ + "header_name": "prod", }], }, "origin": instance.name, - "routeAction": { - "cdnPolicy": { - "cacheMode": "CACHE_ALL_STATIC", - "defaultTtl": "3800s", - "clientTtl": "3600s", - "maxTtl": "9000s", - "cacheKeyPolicy": { - "includeProtocol": True, - "excludeHost": True, - "includedQueryParameters": [ + "route_action": { + "cdn_policy": { + "cache_mode": "CACHE_ALL_STATIC", + "default_ttl": "3800s", + "client_ttl": "3600s", + "max_ttl": "9000s", + "cache_key_policy": { + "include_protocol": True, + "exclude_host": True, + "included_query_parameters": [ "apple", "dev", "santa", "claus", ], - "includedHeaderNames": ["banana"], - "includedCookieNames": ["orange"], + "included_header_names": ["banana"], + "included_cookie_names": ["orange"], }, - "negativeCaching": True, - "signedRequestMode": "DISABLED", - "negativeCachingPolicy": { - "500": "3000s", + "negative_caching": True, + "signed_request_mode": "DISABLED", + "negative_caching_policy": { + "_500": "3000s", }, }, - "urlRewrite": { - "pathPrefixRewrite": "/dev", - "hostRewrite": "dev.club", + "url_rewrite": { + "path_prefix_rewrite": "/dev", + "host_rewrite": "dev.club", }, - "corsPolicy": { - "maxAge": "2500s", - "allowCredentials": True, - "allowOrigins": ["*"], - "allowMethods": ["GET"], - "allowHeaders": ["dev"], - "exposeHeaders": ["prod"], + "cors_policy": { + "max_age": "2500s", + "allow_credentials": True, + "allow_origins": ["*"], + "allow_methods": ["GET"], + "allow_headers": ["dev"], + "expose_headers": ["prod"], }, }, }, { "description": "a second route rule to match against", "priority": "2", - "matchRules": [{ - "fullPathMatch": "/yay", + "match_rules": [{ + "full_path_match": "/yay", }], "origin": instance.name, - "routeAction": { - "cdnPolicy": { - "cacheMode": "CACHE_ALL_STATIC", - "defaultTtl": "3600s", - "cacheKeyPolicy": { - "excludedQueryParameters": ["dev"], + "route_action": { + "cdn_policy": { + "cache_mode": "CACHE_ALL_STATIC", + "default_ttl": "3600s", + "cache_key_policy": { + "excluded_query_parameters": ["dev"], }, }, - "corsPolicy": { - "maxAge": "3000s", - "allowHeaders": ["dev"], + "cors_policy": { + "max_age": "3000s", + "allow_headers": ["dev"], "disabled": True, }, }, @@ -800,7 +800,7 @@ def __init__(__self__, }, log_config={ "enable": True, - "sampleRate": 0.01, + "sample_rate": 0.01, }) ``` ### Network Services Edge Cache Service Dual Token @@ -825,7 +825,7 @@ def __init__(__self__, "managed": True, }], validation_shared_keys=[{ - "secretVersion": secret_version_basic.id, + "secret_version": secret_version_basic.id, }]) instance = gcp.networkservices.EdgeCacheOrigin("instance", name="my-origin", @@ -835,33 +835,33 @@ def __init__(__self__, name="my-service", description="some description", routing={ - "hostRules": [{ + "host_rules": [{ "description": "host rule description", "hosts": ["sslcert.tf-test.club"], - "pathMatcher": "routes", + "path_matcher": "routes", }], - "pathMatchers": [{ + "path_matchers": [{ "name": "routes", - "routeRules": [ + "route_rules": [ { "description": "a route rule to match against master playlist", "priority": "1", - "matchRules": [{ - "pathTemplateMatch": "/master.m3u8", + "match_rules": [{ + "path_template_match": "/master.m3u8", }], "origin": instance.name, - "routeAction": { - "cdnPolicy": { - "signedRequestMode": "REQUIRE_TOKENS", - "signedRequestKeyset": keyset.id, - "signedTokenOptions": { - "tokenQueryParameter": "edge-cache-token", + "route_action": { + "cdn_policy": { + "signed_request_mode": "REQUIRE_TOKENS", + "signed_request_keyset": keyset.id, + "signed_token_options": { + "token_query_parameter": "edge-cache-token", }, - "signedRequestMaximumExpirationTtl": "600s", - "addSignatures": { + "signed_request_maximum_expiration_ttl": "600s", + "add_signatures": { "actions": "GENERATE_COOKIE", "keyset": keyset.id, - "copiedParameters": [ + "copied_parameters": [ "PathGlobs", "SessionID", ], @@ -872,28 +872,28 @@ def __init__(__self__, { "description": "a route rule to match against all playlists", "priority": "2", - "matchRules": [{ - "pathTemplateMatch": "/*.m3u8", + "match_rules": [{ + "path_template_match": "/*.m3u8", }], "origin": instance.name, - "routeAction": { - "cdnPolicy": { - "signedRequestMode": "REQUIRE_TOKENS", - "signedRequestKeyset": keyset.id, - "signedTokenOptions": { - "tokenQueryParameter": "hdnts", - "allowedSignatureAlgorithms": [ + "route_action": { + "cdn_policy": { + "signed_request_mode": "REQUIRE_TOKENS", + "signed_request_keyset": keyset.id, + "signed_token_options": { + "token_query_parameter": "hdnts", + "allowed_signature_algorithms": [ "ED25519", "HMAC_SHA_256", "HMAC_SHA1", ], }, - "addSignatures": { + "add_signatures": { "actions": "GENERATE_TOKEN_HLS_COOKIELESS", "keyset": keyset.id, - "tokenTtl": "1200s", - "tokenQueryParameter": "hdntl", - "copiedParameters": ["URLPrefix"], + "token_ttl": "1200s", + "token_query_parameter": "hdntl", + "copied_parameters": ["URLPrefix"], }, }, }, @@ -901,20 +901,20 @@ def __init__(__self__, { "description": "a route rule to match against", "priority": "3", - "matchRules": [{ - "pathTemplateMatch": "/**.m3u8", + "match_rules": [{ + "path_template_match": "/**.m3u8", }], "origin": instance.name, - "routeAction": { - "cdnPolicy": { - "signedRequestMode": "REQUIRE_TOKENS", - "signedRequestKeyset": keyset.id, - "signedTokenOptions": { - "tokenQueryParameter": "hdntl", + "route_action": { + "cdn_policy": { + "signed_request_mode": "REQUIRE_TOKENS", + "signed_request_keyset": keyset.id, + "signed_token_options": { + "token_query_parameter": "hdntl", }, - "addSignatures": { + "add_signatures": { "actions": "PROPAGATE_TOKEN_HLS_COOKIELESS", - "tokenQueryParameter": "hdntl", + "token_query_parameter": "hdntl", }, }, }, @@ -1005,36 +1005,36 @@ def __init__(__self__, description="The default bucket for media edge test", max_attempts=2, timeout={ - "connectTimeout": "10s", + "connect_timeout": "10s", }) instance_edge_cache_service = gcp.networkservices.EdgeCacheService("instance", name="my-service", description="some description", routing={ - "hostRules": [{ + "host_rules": [{ "description": "host rule description", "hosts": ["sslcert.tf-test.club"], - "pathMatcher": "routes", + "path_matcher": "routes", }], - "pathMatchers": [{ + "path_matchers": [{ "name": "routes", - "routeRules": [{ + "route_rules": [{ "description": "a route rule to match against", "priority": "1", - "matchRules": [{ - "prefixMatch": "/", + "match_rules": [{ + "prefix_match": "/", }], "origin": instance.name, - "routeAction": { - "cdnPolicy": { - "cacheMode": "CACHE_ALL_STATIC", - "defaultTtl": "3600s", + "route_action": { + "cdn_policy": { + "cache_mode": "CACHE_ALL_STATIC", + "default_ttl": "3600s", }, }, - "headerAction": { - "responseHeaderToAdds": [{ - "headerName": "x-cache-status", - "headerValue": "{cdn_cache_status}", + "header_action": { + "response_header_to_adds": [{ + "header_name": "x-cache-status", + "header_value": "{cdn_cache_status}", }], }, }], @@ -1057,7 +1057,7 @@ def __init__(__self__, description="The default bucket for media edge test", max_attempts=2, timeout={ - "connectTimeout": "10s", + "connect_timeout": "10s", }) instance = gcp.networkservices.EdgeCacheOrigin("instance", name="my-origin", @@ -1065,7 +1065,7 @@ def __init__(__self__, description="The default bucket for media edge test", max_attempts=2, timeout={ - "connectTimeout": "10s", + "connect_timeout": "10s", }) instance_edge_cache_service = gcp.networkservices.EdgeCacheService("instance", name="my-service", @@ -1076,43 +1076,43 @@ def __init__(__self__, "a": "b", }, routing={ - "hostRules": [ + "host_rules": [ { "description": "host rule description", "hosts": ["sslcert.tf-test.club"], - "pathMatcher": "routes", + "path_matcher": "routes", }, { "description": "host rule2", "hosts": ["sslcert.tf-test2.club"], - "pathMatcher": "routes", + "path_matcher": "routes", }, { "description": "host rule3", "hosts": ["sslcert.tf-test3.club"], - "pathMatcher": "routesAdvanced", + "path_matcher": "routesAdvanced", }, ], - "pathMatchers": [ + "path_matchers": [ { "name": "routes", - "routeRules": [{ + "route_rules": [{ "description": "a route rule to match against", "priority": "1", - "matchRules": [{ - "prefixMatch": "/", + "match_rules": [{ + "prefix_match": "/", }], "origin": instance.name, - "routeAction": { - "cdnPolicy": { - "cacheMode": "CACHE_ALL_STATIC", - "defaultTtl": "3600s", + "route_action": { + "cdn_policy": { + "cache_mode": "CACHE_ALL_STATIC", + "default_ttl": "3600s", }, }, - "headerAction": { - "responseHeaderToAdds": [{ - "headerName": "x-cache-status", - "headerValue": "{cdn_cache_status}", + "header_action": { + "response_header_to_adds": [{ + "header_name": "x-cache-status", + "header_value": "{cdn_cache_status}", }], }, }], @@ -1120,109 +1120,109 @@ def __init__(__self__, { "name": "routesAdvanced", "description": "an advanced ruleset", - "routeRules": [ + "route_rules": [ { "description": "an advanced route rule to match against", "priority": "1", - "matchRules": [ + "match_rules": [ { - "prefixMatch": "/potato/", - "queryParameterMatches": [ + "prefix_match": "/potato/", + "query_parameter_matches": [ { "name": "debug", - "presentMatch": True, + "present_match": True, }, { "name": "state", - "exactMatch": "debug", + "exact_match": "debug", }, ], }, { - "fullPathMatch": "/apple", + "full_path_match": "/apple", }, ], - "headerAction": { - "requestHeaderToAdds": [ + "header_action": { + "request_header_to_adds": [ { - "headerName": "debug", - "headerValue": "true", + "header_name": "debug", + "header_value": "true", "replace": True, }, { - "headerName": "potato", - "headerValue": "plant", + "header_name": "potato", + "header_value": "plant", }, ], - "responseHeaderToAdds": [{ - "headerName": "potato", - "headerValue": "plant", + "response_header_to_adds": [{ + "header_name": "potato", + "header_value": "plant", "replace": True, }], - "requestHeaderToRemoves": [{ - "headerName": "prod", + "request_header_to_removes": [{ + "header_name": "prod", }], - "responseHeaderToRemoves": [{ - "headerName": "prod", + "response_header_to_removes": [{ + "header_name": "prod", }], }, "origin": instance.name, - "routeAction": { - "cdnPolicy": { - "cacheMode": "CACHE_ALL_STATIC", - "defaultTtl": "3800s", - "clientTtl": "3600s", - "maxTtl": "9000s", - "cacheKeyPolicy": { - "includeProtocol": True, - "excludeHost": True, - "includedQueryParameters": [ + "route_action": { + "cdn_policy": { + "cache_mode": "CACHE_ALL_STATIC", + "default_ttl": "3800s", + "client_ttl": "3600s", + "max_ttl": "9000s", + "cache_key_policy": { + "include_protocol": True, + "exclude_host": True, + "included_query_parameters": [ "apple", "dev", "santa", "claus", ], - "includedHeaderNames": ["banana"], - "includedCookieNames": ["orange"], + "included_header_names": ["banana"], + "included_cookie_names": ["orange"], }, - "negativeCaching": True, - "signedRequestMode": "DISABLED", - "negativeCachingPolicy": { - "500": "3000s", + "negative_caching": True, + "signed_request_mode": "DISABLED", + "negative_caching_policy": { + "_500": "3000s", }, }, - "urlRewrite": { - "pathPrefixRewrite": "/dev", - "hostRewrite": "dev.club", + "url_rewrite": { + "path_prefix_rewrite": "/dev", + "host_rewrite": "dev.club", }, - "corsPolicy": { - "maxAge": "2500s", - "allowCredentials": True, - "allowOrigins": ["*"], - "allowMethods": ["GET"], - "allowHeaders": ["dev"], - "exposeHeaders": ["prod"], + "cors_policy": { + "max_age": "2500s", + "allow_credentials": True, + "allow_origins": ["*"], + "allow_methods": ["GET"], + "allow_headers": ["dev"], + "expose_headers": ["prod"], }, }, }, { "description": "a second route rule to match against", "priority": "2", - "matchRules": [{ - "fullPathMatch": "/yay", + "match_rules": [{ + "full_path_match": "/yay", }], "origin": instance.name, - "routeAction": { - "cdnPolicy": { - "cacheMode": "CACHE_ALL_STATIC", - "defaultTtl": "3600s", - "cacheKeyPolicy": { - "excludedQueryParameters": ["dev"], + "route_action": { + "cdn_policy": { + "cache_mode": "CACHE_ALL_STATIC", + "default_ttl": "3600s", + "cache_key_policy": { + "excluded_query_parameters": ["dev"], }, }, - "corsPolicy": { - "maxAge": "3000s", - "allowHeaders": ["dev"], + "cors_policy": { + "max_age": "3000s", + "allow_headers": ["dev"], "disabled": True, }, }, @@ -1233,7 +1233,7 @@ def __init__(__self__, }, log_config={ "enable": True, - "sampleRate": 0.01, + "sample_rate": 0.01, }) ``` ### Network Services Edge Cache Service Dual Token @@ -1258,7 +1258,7 @@ def __init__(__self__, "managed": True, }], validation_shared_keys=[{ - "secretVersion": secret_version_basic.id, + "secret_version": secret_version_basic.id, }]) instance = gcp.networkservices.EdgeCacheOrigin("instance", name="my-origin", @@ -1268,33 +1268,33 @@ def __init__(__self__, name="my-service", description="some description", routing={ - "hostRules": [{ + "host_rules": [{ "description": "host rule description", "hosts": ["sslcert.tf-test.club"], - "pathMatcher": "routes", + "path_matcher": "routes", }], - "pathMatchers": [{ + "path_matchers": [{ "name": "routes", - "routeRules": [ + "route_rules": [ { "description": "a route rule to match against master playlist", "priority": "1", - "matchRules": [{ - "pathTemplateMatch": "/master.m3u8", + "match_rules": [{ + "path_template_match": "/master.m3u8", }], "origin": instance.name, - "routeAction": { - "cdnPolicy": { - "signedRequestMode": "REQUIRE_TOKENS", - "signedRequestKeyset": keyset.id, - "signedTokenOptions": { - "tokenQueryParameter": "edge-cache-token", + "route_action": { + "cdn_policy": { + "signed_request_mode": "REQUIRE_TOKENS", + "signed_request_keyset": keyset.id, + "signed_token_options": { + "token_query_parameter": "edge-cache-token", }, - "signedRequestMaximumExpirationTtl": "600s", - "addSignatures": { + "signed_request_maximum_expiration_ttl": "600s", + "add_signatures": { "actions": "GENERATE_COOKIE", "keyset": keyset.id, - "copiedParameters": [ + "copied_parameters": [ "PathGlobs", "SessionID", ], @@ -1305,28 +1305,28 @@ def __init__(__self__, { "description": "a route rule to match against all playlists", "priority": "2", - "matchRules": [{ - "pathTemplateMatch": "/*.m3u8", + "match_rules": [{ + "path_template_match": "/*.m3u8", }], "origin": instance.name, - "routeAction": { - "cdnPolicy": { - "signedRequestMode": "REQUIRE_TOKENS", - "signedRequestKeyset": keyset.id, - "signedTokenOptions": { - "tokenQueryParameter": "hdnts", - "allowedSignatureAlgorithms": [ + "route_action": { + "cdn_policy": { + "signed_request_mode": "REQUIRE_TOKENS", + "signed_request_keyset": keyset.id, + "signed_token_options": { + "token_query_parameter": "hdnts", + "allowed_signature_algorithms": [ "ED25519", "HMAC_SHA_256", "HMAC_SHA1", ], }, - "addSignatures": { + "add_signatures": { "actions": "GENERATE_TOKEN_HLS_COOKIELESS", "keyset": keyset.id, - "tokenTtl": "1200s", - "tokenQueryParameter": "hdntl", - "copiedParameters": ["URLPrefix"], + "token_ttl": "1200s", + "token_query_parameter": "hdntl", + "copied_parameters": ["URLPrefix"], }, }, }, @@ -1334,20 +1334,20 @@ def __init__(__self__, { "description": "a route rule to match against", "priority": "3", - "matchRules": [{ - "pathTemplateMatch": "/**.m3u8", + "match_rules": [{ + "path_template_match": "/**.m3u8", }], "origin": instance.name, - "routeAction": { - "cdnPolicy": { - "signedRequestMode": "REQUIRE_TOKENS", - "signedRequestKeyset": keyset.id, - "signedTokenOptions": { - "tokenQueryParameter": "hdntl", + "route_action": { + "cdn_policy": { + "signed_request_mode": "REQUIRE_TOKENS", + "signed_request_keyset": keyset.id, + "signed_token_options": { + "token_query_parameter": "hdntl", }, - "addSignatures": { + "add_signatures": { "actions": "PROPAGATE_TOKEN_HLS_COOKIELESS", - "tokenQueryParameter": "hdntl", + "token_query_parameter": "hdntl", }, }, }, diff --git a/sdk/python/pulumi_gcp/networkservices/endpoint_policy.py b/sdk/python/pulumi_gcp/networkservices/endpoint_policy.py index 210b138e3c..ec008d67af 100644 --- a/sdk/python/pulumi_gcp/networkservices/endpoint_policy.py +++ b/sdk/python/pulumi_gcp/networkservices/endpoint_policy.py @@ -474,11 +474,11 @@ def __init__(__self__, "ports": ["8081"], }, endpoint_matcher={ - "metadataLabelMatcher": { - "metadataLabelMatchCriteria": "MATCH_ANY", - "metadataLabels": [{ - "labelName": "foo", - "labelValue": "bar", + "metadata_label_matcher": { + "metadata_label_match_criteria": "MATCH_ANY", + "metadata_labels": [{ + "label_name": "foo", + "label_value": "bar", }], }, }) @@ -500,8 +500,8 @@ def __init__(__self__, "ports": ["8081"], }, endpoint_matcher={ - "metadataLabelMatcher": { - "metadataLabelMatchCriteria": "MATCH_ANY", + "metadata_label_matcher": { + "metadata_label_match_criteria": "MATCH_ANY", }, }) ``` @@ -575,11 +575,11 @@ def __init__(__self__, "ports": ["8081"], }, endpoint_matcher={ - "metadataLabelMatcher": { - "metadataLabelMatchCriteria": "MATCH_ANY", - "metadataLabels": [{ - "labelName": "foo", - "labelValue": "bar", + "metadata_label_matcher": { + "metadata_label_match_criteria": "MATCH_ANY", + "metadata_labels": [{ + "label_name": "foo", + "label_value": "bar", }], }, }) @@ -601,8 +601,8 @@ def __init__(__self__, "ports": ["8081"], }, endpoint_matcher={ - "metadataLabelMatcher": { - "metadataLabelMatchCriteria": "MATCH_ANY", + "metadata_label_matcher": { + "metadata_label_match_criteria": "MATCH_ANY", }, }) ``` diff --git a/sdk/python/pulumi_gcp/networkservices/gateway.py b/sdk/python/pulumi_gcp/networkservices/gateway.py index e671c70088..1937e1aa6a 100644 --- a/sdk/python/pulumi_gcp/networkservices/gateway.py +++ b/sdk/python/pulumi_gcp/networkservices/gateway.py @@ -760,8 +760,8 @@ def __init__(__self__, name="my-certificate", location="us-central1", self_managed={ - "pemCertificate": std.file(input="test-fixtures/cert.pem").result, - "pemPrivateKey": std.file(input="test-fixtures/private-key.pem").result, + "pem_certificate": std.file(input="test-fixtures/cert.pem").result, + "pem_private_key": std.file(input="test-fixtures/private-key.pem").result, }) default_network = gcp.compute.Network("default", name="my-network", @@ -817,8 +817,8 @@ def __init__(__self__, name="my-certificate", location="us-south1", self_managed={ - "pemCertificate": std.file(input="test-fixtures/cert.pem").result, - "pemPrivateKey": std.file(input="test-fixtures/private-key.pem").result, + "pem_certificate": std.file(input="test-fixtures/cert.pem").result, + "pem_private_key": std.file(input="test-fixtures/private-key.pem").result, }) default_network = gcp.compute.Network("default", name="my-network", @@ -1000,8 +1000,8 @@ def __init__(__self__, name="my-certificate", location="us-central1", self_managed={ - "pemCertificate": std.file(input="test-fixtures/cert.pem").result, - "pemPrivateKey": std.file(input="test-fixtures/private-key.pem").result, + "pem_certificate": std.file(input="test-fixtures/cert.pem").result, + "pem_private_key": std.file(input="test-fixtures/private-key.pem").result, }) default_network = gcp.compute.Network("default", name="my-network", @@ -1057,8 +1057,8 @@ def __init__(__self__, name="my-certificate", location="us-south1", self_managed={ - "pemCertificate": std.file(input="test-fixtures/cert.pem").result, - "pemPrivateKey": std.file(input="test-fixtures/private-key.pem").result, + "pem_certificate": std.file(input="test-fixtures/cert.pem").result, + "pem_private_key": std.file(input="test-fixtures/private-key.pem").result, }) default_network = gcp.compute.Network("default", name="my-network", diff --git a/sdk/python/pulumi_gcp/networkservices/grpc_route.py b/sdk/python/pulumi_gcp/networkservices/grpc_route.py index e4b7489b28..644866b8fd 100644 --- a/sdk/python/pulumi_gcp/networkservices/grpc_route.py +++ b/sdk/python/pulumi_gcp/networkservices/grpc_route.py @@ -412,9 +412,9 @@ def __init__(__self__, }], }], "action": { - "retryPolicy": { - "retryConditions": ["cancelled"], - "numRetries": 1, + "retry_policy": { + "retry_conditions": ["cancelled"], + "num_retries": 1, }, }, }]) @@ -446,26 +446,26 @@ def __init__(__self__, "value": "value", }], "method": { - "grpcService": "foo", - "grpcMethod": "bar", - "caseSensitive": True, + "grpc_service": "foo", + "grpc_method": "bar", + "case_sensitive": True, }, }, ], "action": { - "faultInjectionPolicy": { + "fault_injection_policy": { "delay": { - "fixedDelay": "1s", + "fixed_delay": "1s", "percentage": 1, }, "abort": { - "httpStatus": 500, + "http_status": 500, "percentage": 1, }, }, - "retryPolicy": { - "retryConditions": ["cancelled"], - "numRetries": 1, + "retry_policy": { + "retry_conditions": ["cancelled"], + "num_retries": 1, }, }, }]) @@ -485,19 +485,19 @@ def __init__(__self__, hostnames=["example"], rules=[{ "action": { - "faultInjectionPolicy": { + "fault_injection_policy": { "delay": { - "fixedDelay": "1s", + "fixed_delay": "1s", "percentage": 1, }, "abort": { - "httpStatus": 500, + "http_status": 500, "percentage": 1, }, }, - "retryPolicy": { - "retryConditions": ["cancelled"], - "numRetries": 1, + "retry_policy": { + "retry_conditions": ["cancelled"], + "num_retries": 1, }, }, }]) @@ -570,9 +570,9 @@ def __init__(__self__, }], }], "action": { - "retryPolicy": { - "retryConditions": ["cancelled"], - "numRetries": 1, + "retry_policy": { + "retry_conditions": ["cancelled"], + "num_retries": 1, }, }, }]) @@ -604,26 +604,26 @@ def __init__(__self__, "value": "value", }], "method": { - "grpcService": "foo", - "grpcMethod": "bar", - "caseSensitive": True, + "grpc_service": "foo", + "grpc_method": "bar", + "case_sensitive": True, }, }, ], "action": { - "faultInjectionPolicy": { + "fault_injection_policy": { "delay": { - "fixedDelay": "1s", + "fixed_delay": "1s", "percentage": 1, }, "abort": { - "httpStatus": 500, + "http_status": 500, "percentage": 1, }, }, - "retryPolicy": { - "retryConditions": ["cancelled"], - "numRetries": 1, + "retry_policy": { + "retry_conditions": ["cancelled"], + "num_retries": 1, }, }, }]) @@ -643,19 +643,19 @@ def __init__(__self__, hostnames=["example"], rules=[{ "action": { - "faultInjectionPolicy": { + "fault_injection_policy": { "delay": { - "fixedDelay": "1s", + "fixed_delay": "1s", "percentage": 1, }, "abort": { - "httpStatus": 500, + "http_status": 500, "percentage": 1, }, }, - "retryPolicy": { - "retryConditions": ["cancelled"], - "numRetries": 1, + "retry_policy": { + "retry_conditions": ["cancelled"], + "num_retries": 1, }, }, }]) diff --git a/sdk/python/pulumi_gcp/networkservices/http_route.py b/sdk/python/pulumi_gcp/networkservices/http_route.py index 0084319981..e1a2b4bdf1 100644 --- a/sdk/python/pulumi_gcp/networkservices/http_route.py +++ b/sdk/python/pulumi_gcp/networkservices/http_route.py @@ -422,11 +422,11 @@ def __init__(__self__, hostnames=["example"], rules=[{ "matches": [{ - "queryParameters": [{ - "queryParameter": "key", - "exactMatch": "value", + "query_parameters": [{ + "query_parameter": "key", + "exact_match": "value", }], - "fullPathMatch": "example", + "full_path_match": "example", }], }]) ``` @@ -448,83 +448,83 @@ def __init__(__self__, { "headers": [{ "header": "header", - "invertMatch": False, - "regexMatch": "header-value", + "invert_match": False, + "regex_match": "header-value", }], - "queryParameters": [{ - "queryParameter": "key", - "exactMatch": "value", + "query_parameters": [{ + "query_parameter": "key", + "exact_match": "value", }], - "prefixMatch": "example", - "ignoreCase": False, + "prefix_match": "example", + "ignore_case": False, }, { "headers": [{ "header": "header", - "invertMatch": False, - "presentMatch": True, + "invert_match": False, + "present_match": True, }], - "queryParameters": [{ - "queryParameter": "key", - "regexMatch": "value", + "query_parameters": [{ + "query_parameter": "key", + "regex_match": "value", }], - "regexMatch": "example", - "ignoreCase": False, + "regex_match": "example", + "ignore_case": False, }, { "headers": [{ "header": "header", - "invertMatch": False, - "presentMatch": True, + "invert_match": False, + "present_match": True, }], - "queryParameters": [{ - "queryParameter": "key", - "presentMatch": True, + "query_parameters": [{ + "query_parameter": "key", + "present_match": True, }], - "fullPathMatch": "example", - "ignoreCase": False, + "full_path_match": "example", + "ignore_case": False, }, ], "action": { "redirect": { - "hostRedirect": "new-host", - "pathRedirect": "new-path", - "prefixRewrite": "new-prefix", - "httpsRedirect": True, - "stripQuery": True, - "portRedirect": 8081, + "host_redirect": "new-host", + "path_redirect": "new-path", + "prefix_rewrite": "new-prefix", + "https_redirect": True, + "strip_query": True, + "port_redirect": 8081, }, - "urlRewrite": { - "pathPrefixRewrite": "new-prefix", - "hostRewrite": "new-host", + "url_rewrite": { + "path_prefix_rewrite": "new-prefix", + "host_rewrite": "new-host", }, - "retryPolicy": { - "retryConditions": ["server_error"], - "numRetries": 1, - "perTryTimeout": "1s", + "retry_policy": { + "retry_conditions": ["server_error"], + "num_retries": 1, + "per_try_timeout": "1s", }, - "requestMirrorPolicy": { + "request_mirror_policy": { "destination": { - "serviceName": "new", + "service_name": "new", "weight": 1, }, }, - "corsPolicy": { - "allowOrigins": ["example"], - "allowMethods": [ + "cors_policy": { + "allow_origins": ["example"], + "allow_methods": [ "GET", "PUT", ], - "allowHeaders": [ + "allow_headers": [ "version", "type", ], - "exposeHeaders": [ + "expose_headers": [ "version", "type", ], - "maxAge": "1s", - "allowCredentials": True, + "max_age": "1s", + "allow_credentials": True, "disabled": False, }, }, @@ -545,66 +545,66 @@ def __init__(__self__, hostnames=["example"], rules=[{ "action": { - "faultInjectionPolicy": { + "fault_injection_policy": { "delay": { - "fixedDelay": "1s", + "fixed_delay": "1s", "percentage": 1, }, "abort": { - "httpStatus": 500, + "http_status": 500, "percentage": 1, }, }, - "urlRewrite": { - "pathPrefixRewrite": "new-prefix", - "hostRewrite": "new-host", + "url_rewrite": { + "path_prefix_rewrite": "new-prefix", + "host_rewrite": "new-host", }, - "retryPolicy": { - "retryConditions": ["server_error"], - "numRetries": 1, - "perTryTimeout": "1s", + "retry_policy": { + "retry_conditions": ["server_error"], + "num_retries": 1, + "per_try_timeout": "1s", }, - "requestMirrorPolicy": { + "request_mirror_policy": { "destination": { - "serviceName": "new", + "service_name": "new", "weight": 1, }, }, - "corsPolicy": { - "allowOrigins": ["example"], - "allowMethods": [ + "cors_policy": { + "allow_origins": ["example"], + "allow_methods": [ "GET", "PUT", ], - "allowHeaders": [ + "allow_headers": [ "version", "type", ], - "exposeHeaders": [ + "expose_headers": [ "version", "type", ], - "maxAge": "1s", - "allowCredentials": True, + "max_age": "1s", + "allow_credentials": True, "disabled": False, }, - "requestHeaderModifier": { + "request_header_modifier": { "set": { "version": "1", "type": "json", }, "add": { - "minor-version": "1", + "minor_version": "1", }, "removes": ["arg"], }, - "responseHeaderModifier": { + "response_header_modifier": { "set": { "version": "1", "type": "json", }, "add": { - "minor-version": "1", + "minor_version": "1", }, "removes": ["removearg"], }, @@ -633,11 +633,11 @@ def __init__(__self__, meshes=[default.id], rules=[{ "matches": [{ - "queryParameters": [{ - "queryParameter": "key", - "exactMatch": "value", + "query_parameters": [{ + "query_parameter": "key", + "exact_match": "value", }], - "fullPathMatch": "example", + "full_path_match": "example", }], }]) ``` @@ -707,11 +707,11 @@ def __init__(__self__, hostnames=["example"], rules=[{ "matches": [{ - "queryParameters": [{ - "queryParameter": "key", - "exactMatch": "value", + "query_parameters": [{ + "query_parameter": "key", + "exact_match": "value", }], - "fullPathMatch": "example", + "full_path_match": "example", }], }]) ``` @@ -733,83 +733,83 @@ def __init__(__self__, { "headers": [{ "header": "header", - "invertMatch": False, - "regexMatch": "header-value", + "invert_match": False, + "regex_match": "header-value", }], - "queryParameters": [{ - "queryParameter": "key", - "exactMatch": "value", + "query_parameters": [{ + "query_parameter": "key", + "exact_match": "value", }], - "prefixMatch": "example", - "ignoreCase": False, + "prefix_match": "example", + "ignore_case": False, }, { "headers": [{ "header": "header", - "invertMatch": False, - "presentMatch": True, + "invert_match": False, + "present_match": True, }], - "queryParameters": [{ - "queryParameter": "key", - "regexMatch": "value", + "query_parameters": [{ + "query_parameter": "key", + "regex_match": "value", }], - "regexMatch": "example", - "ignoreCase": False, + "regex_match": "example", + "ignore_case": False, }, { "headers": [{ "header": "header", - "invertMatch": False, - "presentMatch": True, + "invert_match": False, + "present_match": True, }], - "queryParameters": [{ - "queryParameter": "key", - "presentMatch": True, + "query_parameters": [{ + "query_parameter": "key", + "present_match": True, }], - "fullPathMatch": "example", - "ignoreCase": False, + "full_path_match": "example", + "ignore_case": False, }, ], "action": { "redirect": { - "hostRedirect": "new-host", - "pathRedirect": "new-path", - "prefixRewrite": "new-prefix", - "httpsRedirect": True, - "stripQuery": True, - "portRedirect": 8081, + "host_redirect": "new-host", + "path_redirect": "new-path", + "prefix_rewrite": "new-prefix", + "https_redirect": True, + "strip_query": True, + "port_redirect": 8081, }, - "urlRewrite": { - "pathPrefixRewrite": "new-prefix", - "hostRewrite": "new-host", + "url_rewrite": { + "path_prefix_rewrite": "new-prefix", + "host_rewrite": "new-host", }, - "retryPolicy": { - "retryConditions": ["server_error"], - "numRetries": 1, - "perTryTimeout": "1s", + "retry_policy": { + "retry_conditions": ["server_error"], + "num_retries": 1, + "per_try_timeout": "1s", }, - "requestMirrorPolicy": { + "request_mirror_policy": { "destination": { - "serviceName": "new", + "service_name": "new", "weight": 1, }, }, - "corsPolicy": { - "allowOrigins": ["example"], - "allowMethods": [ + "cors_policy": { + "allow_origins": ["example"], + "allow_methods": [ "GET", "PUT", ], - "allowHeaders": [ + "allow_headers": [ "version", "type", ], - "exposeHeaders": [ + "expose_headers": [ "version", "type", ], - "maxAge": "1s", - "allowCredentials": True, + "max_age": "1s", + "allow_credentials": True, "disabled": False, }, }, @@ -830,66 +830,66 @@ def __init__(__self__, hostnames=["example"], rules=[{ "action": { - "faultInjectionPolicy": { + "fault_injection_policy": { "delay": { - "fixedDelay": "1s", + "fixed_delay": "1s", "percentage": 1, }, "abort": { - "httpStatus": 500, + "http_status": 500, "percentage": 1, }, }, - "urlRewrite": { - "pathPrefixRewrite": "new-prefix", - "hostRewrite": "new-host", + "url_rewrite": { + "path_prefix_rewrite": "new-prefix", + "host_rewrite": "new-host", }, - "retryPolicy": { - "retryConditions": ["server_error"], - "numRetries": 1, - "perTryTimeout": "1s", + "retry_policy": { + "retry_conditions": ["server_error"], + "num_retries": 1, + "per_try_timeout": "1s", }, - "requestMirrorPolicy": { + "request_mirror_policy": { "destination": { - "serviceName": "new", + "service_name": "new", "weight": 1, }, }, - "corsPolicy": { - "allowOrigins": ["example"], - "allowMethods": [ + "cors_policy": { + "allow_origins": ["example"], + "allow_methods": [ "GET", "PUT", ], - "allowHeaders": [ + "allow_headers": [ "version", "type", ], - "exposeHeaders": [ + "expose_headers": [ "version", "type", ], - "maxAge": "1s", - "allowCredentials": True, + "max_age": "1s", + "allow_credentials": True, "disabled": False, }, - "requestHeaderModifier": { + "request_header_modifier": { "set": { "version": "1", "type": "json", }, "add": { - "minor-version": "1", + "minor_version": "1", }, "removes": ["arg"], }, - "responseHeaderModifier": { + "response_header_modifier": { "set": { "version": "1", "type": "json", }, "add": { - "minor-version": "1", + "minor_version": "1", }, "removes": ["removearg"], }, @@ -918,11 +918,11 @@ def __init__(__self__, meshes=[default.id], rules=[{ "matches": [{ - "queryParameters": [{ - "queryParameter": "key", - "exactMatch": "value", + "query_parameters": [{ + "query_parameter": "key", + "exact_match": "value", }], - "fullPathMatch": "example", + "full_path_match": "example", }], }]) ``` diff --git a/sdk/python/pulumi_gcp/networkservices/service_lb_policies.py b/sdk/python/pulumi_gcp/networkservices/service_lb_policies.py index 62bea12c9f..589ad52476 100644 --- a/sdk/python/pulumi_gcp/networkservices/service_lb_policies.py +++ b/sdk/python/pulumi_gcp/networkservices/service_lb_policies.py @@ -433,7 +433,7 @@ def __init__(__self__, "enable": True, }, failover_config={ - "failoverHealthThreshold": 70, + "failover_health_threshold": 70, }, labels={ "foo": "bar", @@ -524,7 +524,7 @@ def __init__(__self__, "enable": True, }, failover_config={ - "failoverHealthThreshold": 70, + "failover_health_threshold": 70, }, labels={ "foo": "bar", diff --git a/sdk/python/pulumi_gcp/networkservices/tcp_route.py b/sdk/python/pulumi_gcp/networkservices/tcp_route.py index f3819a5576..269968087d 100644 --- a/sdk/python/pulumi_gcp/networkservices/tcp_route.py +++ b/sdk/python/pulumi_gcp/networkservices/tcp_route.py @@ -406,10 +406,10 @@ def __init__(__self__, }], "action": { "destinations": [{ - "serviceName": default.id, + "service_name": default.id, "weight": 1, }], - "originalDestination": False, + "original_destination": False, }, }]) ``` @@ -436,10 +436,10 @@ def __init__(__self__, rules=[{ "action": { "destinations": [{ - "serviceName": default.id, + "service_name": default.id, "weight": 1, }], - "originalDestination": False, + "original_destination": False, }, }]) ``` @@ -477,10 +477,10 @@ def __init__(__self__, }], "action": { "destinations": [{ - "serviceName": default.id, + "service_name": default.id, "weight": 1, }], - "originalDestination": False, + "original_destination": False, }, }]) ``` @@ -521,10 +521,10 @@ def __init__(__self__, }], "action": { "destinations": [{ - "serviceName": default.id, + "service_name": default.id, "weight": 1, }], - "originalDestination": False, + "original_destination": False, }, }]) ``` @@ -606,10 +606,10 @@ def __init__(__self__, }], "action": { "destinations": [{ - "serviceName": default.id, + "service_name": default.id, "weight": 1, }], - "originalDestination": False, + "original_destination": False, }, }]) ``` @@ -636,10 +636,10 @@ def __init__(__self__, rules=[{ "action": { "destinations": [{ - "serviceName": default.id, + "service_name": default.id, "weight": 1, }], - "originalDestination": False, + "original_destination": False, }, }]) ``` @@ -677,10 +677,10 @@ def __init__(__self__, }], "action": { "destinations": [{ - "serviceName": default.id, + "service_name": default.id, "weight": 1, }], - "originalDestination": False, + "original_destination": False, }, }]) ``` @@ -721,10 +721,10 @@ def __init__(__self__, }], "action": { "destinations": [{ - "serviceName": default.id, + "service_name": default.id, "weight": 1, }], - "originalDestination": False, + "original_destination": False, }, }]) ``` diff --git a/sdk/python/pulumi_gcp/networkservices/tls_route.py b/sdk/python/pulumi_gcp/networkservices/tls_route.py index 1b0c1db826..628ddb1d8e 100644 --- a/sdk/python/pulumi_gcp/networkservices/tls_route.py +++ b/sdk/python/pulumi_gcp/networkservices/tls_route.py @@ -319,12 +319,12 @@ def __init__(__self__, description="my description", rules=[{ "matches": [{ - "sniHosts": ["example.com"], + "sni_hosts": ["example.com"], "alpns": ["http/1.1"], }], "action": { "destinations": [{ - "serviceName": default.id, + "service_name": default.id, "weight": 1, }], }, @@ -356,12 +356,12 @@ def __init__(__self__, meshes=[default_mesh.id], rules=[{ "matches": [{ - "sniHosts": ["example.com"], + "sni_hosts": ["example.com"], "alpns": ["http/1.1"], }], "action": { "destinations": [{ - "serviceName": default.id, + "service_name": default.id, "weight": 1, }], }, @@ -396,12 +396,12 @@ def __init__(__self__, gateways=[default_gateway.id], rules=[{ "matches": [{ - "sniHosts": ["example.com"], + "sni_hosts": ["example.com"], "alpns": ["http/1.1"], }], "action": { "destinations": [{ - "serviceName": default.id, + "service_name": default.id, "weight": 1, }], }, @@ -473,12 +473,12 @@ def __init__(__self__, description="my description", rules=[{ "matches": [{ - "sniHosts": ["example.com"], + "sni_hosts": ["example.com"], "alpns": ["http/1.1"], }], "action": { "destinations": [{ - "serviceName": default.id, + "service_name": default.id, "weight": 1, }], }, @@ -510,12 +510,12 @@ def __init__(__self__, meshes=[default_mesh.id], rules=[{ "matches": [{ - "sniHosts": ["example.com"], + "sni_hosts": ["example.com"], "alpns": ["http/1.1"], }], "action": { "destinations": [{ - "serviceName": default.id, + "service_name": default.id, "weight": 1, }], }, @@ -550,12 +550,12 @@ def __init__(__self__, gateways=[default_gateway.id], rules=[{ "matches": [{ - "sniHosts": ["example.com"], + "sni_hosts": ["example.com"], "alpns": ["http/1.1"], }], "action": { "destinations": [{ - "serviceName": default.id, + "service_name": default.id, "weight": 1, }], }, diff --git a/sdk/python/pulumi_gcp/notebooks/instance.py b/sdk/python/pulumi_gcp/notebooks/instance.py index 5a33a05062..0d335f272f 100644 --- a/sdk/python/pulumi_gcp/notebooks/instance.py +++ b/sdk/python/pulumi_gcp/notebooks/instance.py @@ -1408,7 +1408,7 @@ def __init__(__self__, machine_type="e2-medium", vm_image={ "project": "deeplearning-platform-release", - "imageFamily": "tf-latest-cpu", + "image_family": "tf-latest-cpu", }) ``` ### Notebook Instance Basic Stopped @@ -1423,7 +1423,7 @@ def __init__(__self__, machine_type="e2-medium", vm_image={ "project": "deeplearning-platform-release", - "imageFamily": "tf-latest-cpu", + "image_family": "tf-latest-cpu", }, desired_state="STOPPED") ``` @@ -1458,11 +1458,11 @@ def __init__(__self__, install_gpu_driver=True, accelerator_config={ "type": "NVIDIA_TESLA_T4", - "coreCount": 1, + "core_count": 1, }, vm_image={ "project": "deeplearning-platform-release", - "imageFamily": "tf-latest-gpu", + "image_family": "tf-latest-gpu", }) ``` ### Notebook Instance Full @@ -1480,7 +1480,7 @@ def __init__(__self__, machine_type="e2-medium", vm_image={ "project": "deeplearning-platform-release", - "imageFamily": "tf-latest-cpu", + "image_family": "tf-latest-cpu", }, instance_owners=["my@service-account.com"], service_account="my@service-account.com", @@ -1652,7 +1652,7 @@ def __init__(__self__, machine_type="e2-medium", vm_image={ "project": "deeplearning-platform-release", - "imageFamily": "tf-latest-cpu", + "image_family": "tf-latest-cpu", }) ``` ### Notebook Instance Basic Stopped @@ -1667,7 +1667,7 @@ def __init__(__self__, machine_type="e2-medium", vm_image={ "project": "deeplearning-platform-release", - "imageFamily": "tf-latest-cpu", + "image_family": "tf-latest-cpu", }, desired_state="STOPPED") ``` @@ -1702,11 +1702,11 @@ def __init__(__self__, install_gpu_driver=True, accelerator_config={ "type": "NVIDIA_TESLA_T4", - "coreCount": 1, + "core_count": 1, }, vm_image={ "project": "deeplearning-platform-release", - "imageFamily": "tf-latest-gpu", + "image_family": "tf-latest-gpu", }) ``` ### Notebook Instance Full @@ -1724,7 +1724,7 @@ def __init__(__self__, machine_type="e2-medium", vm_image={ "project": "deeplearning-platform-release", - "imageFamily": "tf-latest-cpu", + "image_family": "tf-latest-cpu", }, instance_owners=["my@service-account.com"], service_account="my@service-account.com", diff --git a/sdk/python/pulumi_gcp/notebooks/runtime.py b/sdk/python/pulumi_gcp/notebooks/runtime.py index b6c8240e1e..d576a7028c 100644 --- a/sdk/python/pulumi_gcp/notebooks/runtime.py +++ b/sdk/python/pulumi_gcp/notebooks/runtime.py @@ -445,16 +445,16 @@ def __init__(__self__, name="notebooks-runtime", location="us-central1", access_config={ - "accessType": "SINGLE_USER", - "runtimeOwner": "admin@hashicorptest.com", + "access_type": "SINGLE_USER", + "runtime_owner": "admin@hashicorptest.com", }, virtual_machine={ - "virtualMachineConfig": { - "machineType": "n1-standard-4", - "dataDisk": { - "initializeParams": { - "diskSizeGb": 100, - "diskType": "PD_STANDARD", + "virtual_machine_config": { + "machine_type": "n1-standard-4", + "data_disk": { + "initialize_params": { + "disk_size_gb": 100, + "disk_type": "PD_STANDARD", }, }, }, @@ -470,23 +470,23 @@ def __init__(__self__, name="notebooks-runtime-gpu", location="us-central1", access_config={ - "accessType": "SINGLE_USER", - "runtimeOwner": "admin@hashicorptest.com", + "access_type": "SINGLE_USER", + "runtime_owner": "admin@hashicorptest.com", }, software_config={ - "installGpuDriver": True, + "install_gpu_driver": True, }, virtual_machine={ - "virtualMachineConfig": { - "machineType": "n1-standard-4", - "dataDisk": { - "initializeParams": { - "diskSizeGb": 100, - "diskType": "PD_STANDARD", + "virtual_machine_config": { + "machine_type": "n1-standard-4", + "data_disk": { + "initialize_params": { + "disk_size_gb": 100, + "disk_type": "PD_STANDARD", }, }, - "acceleratorConfig": { - "coreCount": 1, + "accelerator_config": { + "core_count": 1, "type": "NVIDIA_TESLA_V100", }, }, @@ -502,19 +502,19 @@ def __init__(__self__, name="notebooks-runtime-container", location="us-central1", access_config={ - "accessType": "SINGLE_USER", - "runtimeOwner": "admin@hashicorptest.com", + "access_type": "SINGLE_USER", + "runtime_owner": "admin@hashicorptest.com", }, virtual_machine={ - "virtualMachineConfig": { - "machineType": "n1-standard-4", - "dataDisk": { - "initializeParams": { - "diskSizeGb": 100, - "diskType": "PD_STANDARD", + "virtual_machine_config": { + "machine_type": "n1-standard-4", + "data_disk": { + "initialize_params": { + "disk_size_gb": 100, + "disk_type": "PD_STANDARD", }, }, - "containerImages": [ + "container_images": [ { "repository": "gcr.io/deeplearning-platform-release/base-cpu", "tag": "latest", @@ -537,8 +537,8 @@ def __init__(__self__, name="notebooks-runtime-kernel", location="us-central1", access_config={ - "accessType": "SINGLE_USER", - "runtimeOwner": "admin@hashicorptest.com", + "access_type": "SINGLE_USER", + "runtime_owner": "admin@hashicorptest.com", }, software_config={ "kernels": [{ @@ -547,12 +547,12 @@ def __init__(__self__, }], }, virtual_machine={ - "virtualMachineConfig": { - "machineType": "n1-standard-4", - "dataDisk": { - "initializeParams": { - "diskSizeGb": 100, - "diskType": "PD_STANDARD", + "virtual_machine_config": { + "machine_type": "n1-standard-4", + "data_disk": { + "initialize_params": { + "disk_size_gb": 100, + "disk_type": "PD_STANDARD", }, }, }, @@ -571,19 +571,19 @@ def __init__(__self__, name="notebooks-runtime-script", location="us-central1", access_config={ - "accessType": "SINGLE_USER", - "runtimeOwner": "admin@hashicorptest.com", + "access_type": "SINGLE_USER", + "runtime_owner": "admin@hashicorptest.com", }, software_config={ - "postStartupScriptBehavior": "RUN_EVERY_START", + "post_startup_script_behavior": "RUN_EVERY_START", }, virtual_machine={ - "virtualMachineConfig": { - "machineType": "n1-standard-4", - "dataDisk": { - "initializeParams": { - "diskSizeGb": 100, - "diskType": "PD_STANDARD", + "virtual_machine_config": { + "machine_type": "n1-standard-4", + "data_disk": { + "initialize_params": { + "disk_size_gb": 100, + "disk_type": "PD_STANDARD", }, }, }, @@ -673,16 +673,16 @@ def __init__(__self__, name="notebooks-runtime", location="us-central1", access_config={ - "accessType": "SINGLE_USER", - "runtimeOwner": "admin@hashicorptest.com", + "access_type": "SINGLE_USER", + "runtime_owner": "admin@hashicorptest.com", }, virtual_machine={ - "virtualMachineConfig": { - "machineType": "n1-standard-4", - "dataDisk": { - "initializeParams": { - "diskSizeGb": 100, - "diskType": "PD_STANDARD", + "virtual_machine_config": { + "machine_type": "n1-standard-4", + "data_disk": { + "initialize_params": { + "disk_size_gb": 100, + "disk_type": "PD_STANDARD", }, }, }, @@ -698,23 +698,23 @@ def __init__(__self__, name="notebooks-runtime-gpu", location="us-central1", access_config={ - "accessType": "SINGLE_USER", - "runtimeOwner": "admin@hashicorptest.com", + "access_type": "SINGLE_USER", + "runtime_owner": "admin@hashicorptest.com", }, software_config={ - "installGpuDriver": True, + "install_gpu_driver": True, }, virtual_machine={ - "virtualMachineConfig": { - "machineType": "n1-standard-4", - "dataDisk": { - "initializeParams": { - "diskSizeGb": 100, - "diskType": "PD_STANDARD", + "virtual_machine_config": { + "machine_type": "n1-standard-4", + "data_disk": { + "initialize_params": { + "disk_size_gb": 100, + "disk_type": "PD_STANDARD", }, }, - "acceleratorConfig": { - "coreCount": 1, + "accelerator_config": { + "core_count": 1, "type": "NVIDIA_TESLA_V100", }, }, @@ -730,19 +730,19 @@ def __init__(__self__, name="notebooks-runtime-container", location="us-central1", access_config={ - "accessType": "SINGLE_USER", - "runtimeOwner": "admin@hashicorptest.com", + "access_type": "SINGLE_USER", + "runtime_owner": "admin@hashicorptest.com", }, virtual_machine={ - "virtualMachineConfig": { - "machineType": "n1-standard-4", - "dataDisk": { - "initializeParams": { - "diskSizeGb": 100, - "diskType": "PD_STANDARD", + "virtual_machine_config": { + "machine_type": "n1-standard-4", + "data_disk": { + "initialize_params": { + "disk_size_gb": 100, + "disk_type": "PD_STANDARD", }, }, - "containerImages": [ + "container_images": [ { "repository": "gcr.io/deeplearning-platform-release/base-cpu", "tag": "latest", @@ -765,8 +765,8 @@ def __init__(__self__, name="notebooks-runtime-kernel", location="us-central1", access_config={ - "accessType": "SINGLE_USER", - "runtimeOwner": "admin@hashicorptest.com", + "access_type": "SINGLE_USER", + "runtime_owner": "admin@hashicorptest.com", }, software_config={ "kernels": [{ @@ -775,12 +775,12 @@ def __init__(__self__, }], }, virtual_machine={ - "virtualMachineConfig": { - "machineType": "n1-standard-4", - "dataDisk": { - "initializeParams": { - "diskSizeGb": 100, - "diskType": "PD_STANDARD", + "virtual_machine_config": { + "machine_type": "n1-standard-4", + "data_disk": { + "initialize_params": { + "disk_size_gb": 100, + "disk_type": "PD_STANDARD", }, }, }, @@ -799,19 +799,19 @@ def __init__(__self__, name="notebooks-runtime-script", location="us-central1", access_config={ - "accessType": "SINGLE_USER", - "runtimeOwner": "admin@hashicorptest.com", + "access_type": "SINGLE_USER", + "runtime_owner": "admin@hashicorptest.com", }, software_config={ - "postStartupScriptBehavior": "RUN_EVERY_START", + "post_startup_script_behavior": "RUN_EVERY_START", }, virtual_machine={ - "virtualMachineConfig": { - "machineType": "n1-standard-4", - "dataDisk": { - "initializeParams": { - "diskSizeGb": 100, - "diskType": "PD_STANDARD", + "virtual_machine_config": { + "machine_type": "n1-standard-4", + "data_disk": { + "initialize_params": { + "disk_size_gb": 100, + "disk_type": "PD_STANDARD", }, }, }, diff --git a/sdk/python/pulumi_gcp/organizations/access_approval_settings.py b/sdk/python/pulumi_gcp/organizations/access_approval_settings.py index f15f2fde27..0ed43b8ae5 100644 --- a/sdk/python/pulumi_gcp/organizations/access_approval_settings.py +++ b/sdk/python/pulumi_gcp/organizations/access_approval_settings.py @@ -289,11 +289,11 @@ def __init__(__self__, ], enrolled_services=[ { - "cloudProduct": "appengine.googleapis.com", + "cloud_product": "appengine.googleapis.com", }, { - "cloudProduct": "dataflow.googleapis.com", - "enrollmentLevel": "BLOCK_ALL", + "cloud_product": "dataflow.googleapis.com", + "enrollment_level": "BLOCK_ALL", }, ]) ``` @@ -328,7 +328,7 @@ def __init__(__self__, organization_id="123456789", active_key_version=crypto_key_version.name, enrolled_services=[{ - "cloudProduct": "all", + "cloud_product": "all", }], opts = pulumi.ResourceOptions(depends_on=[iam])) ``` @@ -394,11 +394,11 @@ def __init__(__self__, ], enrolled_services=[ { - "cloudProduct": "appengine.googleapis.com", + "cloud_product": "appengine.googleapis.com", }, { - "cloudProduct": "dataflow.googleapis.com", - "enrollmentLevel": "BLOCK_ALL", + "cloud_product": "dataflow.googleapis.com", + "enrollment_level": "BLOCK_ALL", }, ]) ``` @@ -433,7 +433,7 @@ def __init__(__self__, organization_id="123456789", active_key_version=crypto_key_version.name, enrolled_services=[{ - "cloudProduct": "all", + "cloud_product": "all", }], opts = pulumi.ResourceOptions(depends_on=[iam])) ``` diff --git a/sdk/python/pulumi_gcp/organizations/iam_audit_config.py b/sdk/python/pulumi_gcp/organizations/iam_audit_config.py index 393f8117df..bf549c7fd3 100644 --- a/sdk/python/pulumi_gcp/organizations/iam_audit_config.py +++ b/sdk/python/pulumi_gcp/organizations/iam_audit_config.py @@ -165,8 +165,8 @@ def __init__(__self__, org_id="your-organization-id", service="allServices", audit_log_configs=[{ - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }]) ``` @@ -203,8 +203,8 @@ def __init__(__self__, org_id="your-organization-id", service="allServices", audit_log_configs=[{ - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }]) ``` diff --git a/sdk/python/pulumi_gcp/organizations/iam_member.py b/sdk/python/pulumi_gcp/organizations/iam_member.py index 77777b89c4..1f3ef9111f 100644 --- a/sdk/python/pulumi_gcp/organizations/iam_member.py +++ b/sdk/python/pulumi_gcp/organizations/iam_member.py @@ -347,11 +347,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -474,11 +474,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -660,11 +660,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -787,11 +787,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` diff --git a/sdk/python/pulumi_gcp/organizations/iam_policy.py b/sdk/python/pulumi_gcp/organizations/iam_policy.py index 0df425e2b6..c4ae6588e0 100644 --- a/sdk/python/pulumi_gcp/organizations/iam_policy.py +++ b/sdk/python/pulumi_gcp/organizations/iam_policy.py @@ -276,11 +276,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -403,11 +403,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -586,11 +586,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -713,11 +713,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` diff --git a/sdk/python/pulumi_gcp/organizations/policy.py b/sdk/python/pulumi_gcp/organizations/policy.py index 77f532a31a..a6cb2e1a14 100644 --- a/sdk/python/pulumi_gcp/organizations/policy.py +++ b/sdk/python/pulumi_gcp/organizations/policy.py @@ -353,7 +353,7 @@ def __init__(__self__, org_id="123456789", constraint="serviceuser.services", list_policy={ - "suggestedValue": "compute.googleapis.com", + "suggested_value": "compute.googleapis.com", "deny": { "values": ["cloudresourcemanager.googleapis.com"], }, @@ -464,7 +464,7 @@ def __init__(__self__, org_id="123456789", constraint="serviceuser.services", list_policy={ - "suggestedValue": "compute.googleapis.com", + "suggested_value": "compute.googleapis.com", "deny": { "values": ["cloudresourcemanager.googleapis.com"], }, diff --git a/sdk/python/pulumi_gcp/orgpolicy/policy.py b/sdk/python/pulumi_gcp/orgpolicy/policy.py index 055a9ace39..7ce82c83ed 100644 --- a/sdk/python/pulumi_gcp/orgpolicy/policy.py +++ b/sdk/python/pulumi_gcp/orgpolicy/policy.py @@ -251,9 +251,9 @@ def __init__(__self__, name=basic.name.apply(lambda name: f"{name}/policies/gcp.resourceLocations"), parent=basic.name, spec={ - "inheritFromParent": True, + "inherit_from_parent": True, "rules": [{ - "denyAll": "TRUE", + "deny_all": "TRUE", }], }) ``` @@ -293,12 +293,12 @@ def __init__(__self__, "title": "sample-condition", }, "values": { - "allowedValues": ["projects/allowed-project"], - "deniedValues": ["projects/denied-project"], + "allowed_values": ["projects/allowed-project"], + "denied_values": ["projects/denied-project"], }, }, { - "allowAll": "TRUE", + "allow_all": "TRUE", }, ], }) @@ -327,7 +327,7 @@ def __init__(__self__, }], }, dry_run_spec={ - "inheritFromParent": False, + "inherit_from_parent": False, "reset": False, "rules": [{ "enforce": "FALSE", @@ -409,9 +409,9 @@ def __init__(__self__, name=basic.name.apply(lambda name: f"{name}/policies/gcp.resourceLocations"), parent=basic.name, spec={ - "inheritFromParent": True, + "inherit_from_parent": True, "rules": [{ - "denyAll": "TRUE", + "deny_all": "TRUE", }], }) ``` @@ -451,12 +451,12 @@ def __init__(__self__, "title": "sample-condition", }, "values": { - "allowedValues": ["projects/allowed-project"], - "deniedValues": ["projects/denied-project"], + "allowed_values": ["projects/allowed-project"], + "denied_values": ["projects/denied-project"], }, }, { - "allowAll": "TRUE", + "allow_all": "TRUE", }, ], }) @@ -485,7 +485,7 @@ def __init__(__self__, }], }, dry_run_spec={ - "inheritFromParent": False, + "inherit_from_parent": False, "reset": False, "rules": [{ "enforce": "FALSE", diff --git a/sdk/python/pulumi_gcp/osconfig/guest_policies.py b/sdk/python/pulumi_gcp/osconfig/guest_policies.py index 9ab5f51a43..a516ac3ddc 100644 --- a/sdk/python/pulumi_gcp/osconfig/guest_policies.py +++ b/sdk/python/pulumi_gcp/osconfig/guest_policies.py @@ -433,7 +433,7 @@ def __init__(__self__, "bar", ], boot_disk={ - "initializeParams": { + "initialize_params": { "image": my_image.self_link, }, }, @@ -450,7 +450,7 @@ def __init__(__self__, }, packages=[{ "name": "my-package", - "desiredState": "UPDATED", + "desired_state": "UPDATED", }]) ``` ### Os Config Guest Policies Packages @@ -462,7 +462,7 @@ def __init__(__self__, guest_policies = gcp.osconfig.GuestPolicies("guest_policies", guest_policy_id="guest-policy", assignment={ - "groupLabels": [ + "group_labels": [ { "labels": { "color": "red", @@ -480,15 +480,15 @@ def __init__(__self__, packages=[ { "name": "my-package", - "desiredState": "INSTALLED", + "desired_state": "INSTALLED", }, { "name": "bad-package-1", - "desiredState": "REMOVED", + "desired_state": "REMOVED", }, { "name": "bad-package-2", - "desiredState": "REMOVED", + "desired_state": "REMOVED", "manager": "APT", }, ], @@ -496,7 +496,7 @@ def __init__(__self__, { "apt": { "uri": "https://packages.cloud.google.com/apt", - "archiveType": "DEB", + "archive_type": "DEB", "distribution": "cloud-sdk-stretch", "components": ["main"], }, @@ -504,9 +504,9 @@ def __init__(__self__, { "yum": { "id": "google-cloud-sdk", - "displayName": "Google Cloud SDK", - "baseUrl": "https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64", - "gpgKeys": [ + "display_name": "Google Cloud SDK", + "base_url": "https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64", + "gpg_keys": [ "https://packages.cloud.google.com/yum/doc/yum-key.gpg", "https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg", ], @@ -530,7 +530,7 @@ def __init__(__self__, }, recipes=[{ "name": "guest-policy-recipe", - "desiredState": "INSTALLED", + "desired_state": "INSTALLED", "artifacts": [{ "id": "guest-policy-artifact-id", "gcs": { @@ -539,9 +539,9 @@ def __init__(__self__, "generation": 1546030865175603, }, }], - "installSteps": [{ - "msiInstallation": { - "artifactId": "guest-policy-artifact-id", + "install_steps": [{ + "msi_installation": { + "artifact_id": "guest-policy-artifact-id", }, }], }]) @@ -632,7 +632,7 @@ def __init__(__self__, "bar", ], boot_disk={ - "initializeParams": { + "initialize_params": { "image": my_image.self_link, }, }, @@ -649,7 +649,7 @@ def __init__(__self__, }, packages=[{ "name": "my-package", - "desiredState": "UPDATED", + "desired_state": "UPDATED", }]) ``` ### Os Config Guest Policies Packages @@ -661,7 +661,7 @@ def __init__(__self__, guest_policies = gcp.osconfig.GuestPolicies("guest_policies", guest_policy_id="guest-policy", assignment={ - "groupLabels": [ + "group_labels": [ { "labels": { "color": "red", @@ -679,15 +679,15 @@ def __init__(__self__, packages=[ { "name": "my-package", - "desiredState": "INSTALLED", + "desired_state": "INSTALLED", }, { "name": "bad-package-1", - "desiredState": "REMOVED", + "desired_state": "REMOVED", }, { "name": "bad-package-2", - "desiredState": "REMOVED", + "desired_state": "REMOVED", "manager": "APT", }, ], @@ -695,7 +695,7 @@ def __init__(__self__, { "apt": { "uri": "https://packages.cloud.google.com/apt", - "archiveType": "DEB", + "archive_type": "DEB", "distribution": "cloud-sdk-stretch", "components": ["main"], }, @@ -703,9 +703,9 @@ def __init__(__self__, { "yum": { "id": "google-cloud-sdk", - "displayName": "Google Cloud SDK", - "baseUrl": "https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64", - "gpgKeys": [ + "display_name": "Google Cloud SDK", + "base_url": "https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64", + "gpg_keys": [ "https://packages.cloud.google.com/yum/doc/yum-key.gpg", "https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg", ], @@ -729,7 +729,7 @@ def __init__(__self__, }, recipes=[{ "name": "guest-policy-recipe", - "desiredState": "INSTALLED", + "desired_state": "INSTALLED", "artifacts": [{ "id": "guest-policy-artifact-id", "gcs": { @@ -738,9 +738,9 @@ def __init__(__self__, "generation": 1546030865175603, }, }], - "installSteps": [{ - "msiInstallation": { - "artifactId": "guest-policy-artifact-id", + "install_steps": [{ + "msi_installation": { + "artifact_id": "guest-policy-artifact-id", }, }], }]) diff --git a/sdk/python/pulumi_gcp/osconfig/os_policy_assignment.py b/sdk/python/pulumi_gcp/osconfig/os_policy_assignment.py index c16f8bc0c7..5a79e1e50a 100644 --- a/sdk/python/pulumi_gcp/osconfig/os_policy_assignment.py +++ b/sdk/python/pulumi_gcp/osconfig/os_policy_assignment.py @@ -496,19 +496,19 @@ def __init__(__self__, primary = gcp.osconfig.OsPolicyAssignment("primary", instance_filter={ "all": False, - "exclusionLabels": [{ + "exclusion_labels": [{ "labels": { - "label-two": "value-two", + "label_two": "value-two", }, }], - "inclusionLabels": [{ + "inclusion_labels": [{ "labels": { - "label-one": "value-one", + "label_one": "value-one", }, }], "inventories": [{ - "osShortName": "centos", - "osVersion": "8.*", + "os_short_name": "centos", + "os_version": "8.*", }], }, location="us-central1-a", @@ -516,59 +516,59 @@ def __init__(__self__, os_policies=[{ "id": "policy", "mode": "VALIDATION", - "resourceGroups": [{ + "resource_groups": [{ "resources": [ { "id": "apt-to-yum", "repository": { "apt": { - "archiveType": "DEB", + "archive_type": "DEB", "components": ["doc"], "distribution": "debian", "uri": "https://atl.mirrors.clouvider.net/debian", - "gpgKey": ".gnupg/pubring.kbx", + "gpg_key": ".gnupg/pubring.kbx", }, }, }, { "id": "exec1", - "exec": { + "exec_": { "validate": { "interpreter": "SHELL", "args": ["arg1"], "file": { - "localPath": "$HOME/script.sh", + "local_path": "$HOME/script.sh", }, - "outputFilePath": "$HOME/out", + "output_file_path": "$HOME/out", }, "enforce": { "interpreter": "SHELL", "args": ["arg1"], "file": { - "allowInsecure": True, + "allow_insecure": True, "remote": { "uri": "https://www.example.com/script.sh", - "sha256Checksum": "c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063", + "sha256_checksum": "c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063", }, }, - "outputFilePath": "$HOME/out", + "output_file_path": "$HOME/out", }, }, }, ], - "inventoryFilters": [{ - "osShortName": "centos", - "osVersion": "8.*", + "inventory_filters": [{ + "os_short_name": "centos", + "os_version": "8.*", }], }], - "allowNoResourceGroupMatch": False, + "allow_no_resource_group_match": False, "description": "A test os policy", }], rollout={ - "disruptionBudget": { + "disruption_budget": { "percent": 100, }, - "minWaitDuration": "3s", + "min_wait_duration": "3s", }, description="A test os policy assignment") ``` @@ -646,19 +646,19 @@ def __init__(__self__, primary = gcp.osconfig.OsPolicyAssignment("primary", instance_filter={ "all": False, - "exclusionLabels": [{ + "exclusion_labels": [{ "labels": { - "label-two": "value-two", + "label_two": "value-two", }, }], - "inclusionLabels": [{ + "inclusion_labels": [{ "labels": { - "label-one": "value-one", + "label_one": "value-one", }, }], "inventories": [{ - "osShortName": "centos", - "osVersion": "8.*", + "os_short_name": "centos", + "os_version": "8.*", }], }, location="us-central1-a", @@ -666,59 +666,59 @@ def __init__(__self__, os_policies=[{ "id": "policy", "mode": "VALIDATION", - "resourceGroups": [{ + "resource_groups": [{ "resources": [ { "id": "apt-to-yum", "repository": { "apt": { - "archiveType": "DEB", + "archive_type": "DEB", "components": ["doc"], "distribution": "debian", "uri": "https://atl.mirrors.clouvider.net/debian", - "gpgKey": ".gnupg/pubring.kbx", + "gpg_key": ".gnupg/pubring.kbx", }, }, }, { "id": "exec1", - "exec": { + "exec_": { "validate": { "interpreter": "SHELL", "args": ["arg1"], "file": { - "localPath": "$HOME/script.sh", + "local_path": "$HOME/script.sh", }, - "outputFilePath": "$HOME/out", + "output_file_path": "$HOME/out", }, "enforce": { "interpreter": "SHELL", "args": ["arg1"], "file": { - "allowInsecure": True, + "allow_insecure": True, "remote": { "uri": "https://www.example.com/script.sh", - "sha256Checksum": "c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063", + "sha256_checksum": "c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063", }, }, - "outputFilePath": "$HOME/out", + "output_file_path": "$HOME/out", }, }, }, ], - "inventoryFilters": [{ - "osShortName": "centos", - "osVersion": "8.*", + "inventory_filters": [{ + "os_short_name": "centos", + "os_version": "8.*", }], }], - "allowNoResourceGroupMatch": False, + "allow_no_resource_group_match": False, "description": "A test os policy", }], rollout={ - "disruptionBudget": { + "disruption_budget": { "percent": 100, }, - "minWaitDuration": "3s", + "min_wait_duration": "3s", }, description="A test os policy assignment") ``` diff --git a/sdk/python/pulumi_gcp/osconfig/patch_deployment.py b/sdk/python/pulumi_gcp/osconfig/patch_deployment.py index 31cc767c23..3d224833e3 100644 --- a/sdk/python/pulumi_gcp/osconfig/patch_deployment.py +++ b/sdk/python/pulumi_gcp/osconfig/patch_deployment.py @@ -451,7 +451,7 @@ def __init__(__self__, "all": True, }, one_time_schedule={ - "executeTime": "2999-10-10T10:10:10.045123456Z", + "execute_time": "2999-10-10T10:10:10.045123456Z", }) ``` ### Os Config Patch Deployment Daily @@ -466,10 +466,10 @@ def __init__(__self__, "all": True, }, recurring_schedule={ - "timeZone": { + "time_zone": { "id": "America/New_York", }, - "timeOfDay": { + "time_of_day": { "hours": 0, "minutes": 30, "seconds": 30, @@ -489,10 +489,10 @@ def __init__(__self__, "all": True, }, recurring_schedule={ - "timeZone": { + "time_zone": { "id": "America/New_York", }, - "timeOfDay": { + "time_of_day": { "hours": 0, "minutes": 0, "seconds": 0, @@ -518,7 +518,7 @@ def __init__(__self__, "bar", ], boot_disk={ - "initializeParams": { + "initialize_params": { "image": my_image.self_link, }, }, @@ -541,17 +541,17 @@ def __init__(__self__, }, }, recurring_schedule={ - "timeZone": { + "time_zone": { "id": "America/New_York", }, - "timeOfDay": { + "time_of_day": { "hours": 0, "minutes": 30, "seconds": 30, "nanos": 20, }, "monthly": { - "monthDay": 1, + "month_day": 1, }, }) ``` @@ -564,21 +564,21 @@ def __init__(__self__, patch = gcp.osconfig.PatchDeployment("patch", patch_deployment_id="patch-deploy", instance_filter={ - "groupLabels": [{ + "group_labels": [{ "labels": { "env": "dev", "app": "web", }, }], - "instanceNamePrefixes": ["test-"], + "instance_name_prefixes": ["test-"], "zones": [ "us-central1-a", "us-central-1c", ], }, patch_config={ - "migInstancesAllowed": True, - "rebootConfig": "ALWAYS", + "mig_instances_allowed": True, + "reboot_config": "ALWAYS", "apt": { "type": "DIST", "excludes": ["python"], @@ -594,7 +594,7 @@ def __init__(__self__, "zypper": { "categories": ["security"], }, - "windowsUpdate": { + "windows_update": { "classifications": [ "CRITICAL", "SECURITY", @@ -602,36 +602,36 @@ def __init__(__self__, ], "excludes": ["5012170"], }, - "preStep": { - "linuxExecStepConfig": { - "allowedSuccessCodes": [ + "pre_step": { + "linux_exec_step_config": { + "allowed_success_codes": [ 0, 3, ], - "localPath": "/tmp/pre_patch_script.sh", + "local_path": "/tmp/pre_patch_script.sh", }, - "windowsExecStepConfig": { + "windows_exec_step_config": { "interpreter": "SHELL", - "allowedSuccessCodes": [ + "allowed_success_codes": [ 0, 2, ], - "localPath": "C:\\\\Users\\\\user\\\\pre-patch-script.cmd", + "local_path": "C:\\\\Users\\\\user\\\\pre-patch-script.cmd", }, }, - "postStep": { - "linuxExecStepConfig": { - "gcsObject": { + "post_step": { + "linux_exec_step_config": { + "gcs_object": { "bucket": "my-patch-scripts", - "generationNumber": "1523477886880", + "generation_number": "1523477886880", "object": "linux/post_patch_script", }, }, - "windowsExecStepConfig": { + "windows_exec_step_config": { "interpreter": "POWERSHELL", - "gcsObject": { + "gcs_object": { "bucket": "my-patch-scripts", - "generationNumber": "135920493447", + "generation_number": "135920493447", "object": "windows/post_patch_script.ps1", }, }, @@ -639,26 +639,26 @@ def __init__(__self__, }, duration="10s", recurring_schedule={ - "timeZone": { + "time_zone": { "id": "America/New_York", }, - "timeOfDay": { + "time_of_day": { "hours": 0, "minutes": 30, "seconds": 30, "nanos": 20, }, "monthly": { - "weekDayOfMonth": { - "weekOrdinal": -1, - "dayOfWeek": "TUESDAY", - "dayOffset": 3, + "week_day_of_month": { + "week_ordinal": -1, + "day_of_week": "TUESDAY", + "day_offset": 3, }, }, }, rollout={ "mode": "ZONE_BY_ZONE", - "disruptionBudget": { + "disruption_budget": { "fixed": 1, }, }) @@ -736,7 +736,7 @@ def __init__(__self__, "all": True, }, one_time_schedule={ - "executeTime": "2999-10-10T10:10:10.045123456Z", + "execute_time": "2999-10-10T10:10:10.045123456Z", }) ``` ### Os Config Patch Deployment Daily @@ -751,10 +751,10 @@ def __init__(__self__, "all": True, }, recurring_schedule={ - "timeZone": { + "time_zone": { "id": "America/New_York", }, - "timeOfDay": { + "time_of_day": { "hours": 0, "minutes": 30, "seconds": 30, @@ -774,10 +774,10 @@ def __init__(__self__, "all": True, }, recurring_schedule={ - "timeZone": { + "time_zone": { "id": "America/New_York", }, - "timeOfDay": { + "time_of_day": { "hours": 0, "minutes": 0, "seconds": 0, @@ -803,7 +803,7 @@ def __init__(__self__, "bar", ], boot_disk={ - "initializeParams": { + "initialize_params": { "image": my_image.self_link, }, }, @@ -826,17 +826,17 @@ def __init__(__self__, }, }, recurring_schedule={ - "timeZone": { + "time_zone": { "id": "America/New_York", }, - "timeOfDay": { + "time_of_day": { "hours": 0, "minutes": 30, "seconds": 30, "nanos": 20, }, "monthly": { - "monthDay": 1, + "month_day": 1, }, }) ``` @@ -849,21 +849,21 @@ def __init__(__self__, patch = gcp.osconfig.PatchDeployment("patch", patch_deployment_id="patch-deploy", instance_filter={ - "groupLabels": [{ + "group_labels": [{ "labels": { "env": "dev", "app": "web", }, }], - "instanceNamePrefixes": ["test-"], + "instance_name_prefixes": ["test-"], "zones": [ "us-central1-a", "us-central-1c", ], }, patch_config={ - "migInstancesAllowed": True, - "rebootConfig": "ALWAYS", + "mig_instances_allowed": True, + "reboot_config": "ALWAYS", "apt": { "type": "DIST", "excludes": ["python"], @@ -879,7 +879,7 @@ def __init__(__self__, "zypper": { "categories": ["security"], }, - "windowsUpdate": { + "windows_update": { "classifications": [ "CRITICAL", "SECURITY", @@ -887,36 +887,36 @@ def __init__(__self__, ], "excludes": ["5012170"], }, - "preStep": { - "linuxExecStepConfig": { - "allowedSuccessCodes": [ + "pre_step": { + "linux_exec_step_config": { + "allowed_success_codes": [ 0, 3, ], - "localPath": "/tmp/pre_patch_script.sh", + "local_path": "/tmp/pre_patch_script.sh", }, - "windowsExecStepConfig": { + "windows_exec_step_config": { "interpreter": "SHELL", - "allowedSuccessCodes": [ + "allowed_success_codes": [ 0, 2, ], - "localPath": "C:\\\\Users\\\\user\\\\pre-patch-script.cmd", + "local_path": "C:\\\\Users\\\\user\\\\pre-patch-script.cmd", }, }, - "postStep": { - "linuxExecStepConfig": { - "gcsObject": { + "post_step": { + "linux_exec_step_config": { + "gcs_object": { "bucket": "my-patch-scripts", - "generationNumber": "1523477886880", + "generation_number": "1523477886880", "object": "linux/post_patch_script", }, }, - "windowsExecStepConfig": { + "windows_exec_step_config": { "interpreter": "POWERSHELL", - "gcsObject": { + "gcs_object": { "bucket": "my-patch-scripts", - "generationNumber": "135920493447", + "generation_number": "135920493447", "object": "windows/post_patch_script.ps1", }, }, @@ -924,26 +924,26 @@ def __init__(__self__, }, duration="10s", recurring_schedule={ - "timeZone": { + "time_zone": { "id": "America/New_York", }, - "timeOfDay": { + "time_of_day": { "hours": 0, "minutes": 30, "seconds": 30, "nanos": 20, }, "monthly": { - "weekDayOfMonth": { - "weekOrdinal": -1, - "dayOfWeek": "TUESDAY", - "dayOffset": 3, + "week_day_of_month": { + "week_ordinal": -1, + "day_of_week": "TUESDAY", + "day_offset": 3, }, }, }, rollout={ "mode": "ZONE_BY_ZONE", - "disruptionBudget": { + "disruption_budget": { "fixed": 1, }, }) diff --git a/sdk/python/pulumi_gcp/privilegedaccessmanager/entitlement.py b/sdk/python/pulumi_gcp/privilegedaccessmanager/entitlement.py index 5299e289fd..be528589c9 100644 --- a/sdk/python/pulumi_gcp/privilegedaccessmanager/entitlement.py +++ b/sdk/python/pulumi_gcp/privilegedaccessmanager/entitlement.py @@ -471,25 +471,25 @@ def __init__(__self__, "principals": ["group:test@google.com"], }], privileged_access={ - "gcpIamAccess": { - "roleBindings": [{ + "gcp_iam_access": { + "role_bindings": [{ "role": "roles/storage.admin", - "conditionExpression": "request.time < timestamp(\\"2024-04-23T18:30:00.000Z\\")", + "condition_expression": "request.time < timestamp(\\"2024-04-23T18:30:00.000Z\\")", }], "resource": "//cloudresourcemanager.googleapis.com/projects/my-project-name", - "resourceType": "cloudresourcemanager.googleapis.com/Project", + "resource_type": "cloudresourcemanager.googleapis.com/Project", }, }, additional_notification_targets={ - "adminEmailRecipients": ["user@example.com"], - "requesterEmailRecipients": ["user@example.com"], + "admin_email_recipients": ["user@example.com"], + "requester_email_recipients": ["user@example.com"], }, approval_workflow={ - "manualApprovals": { - "requireApproverJustification": True, + "manual_approvals": { + "require_approver_justification": True, "steps": [{ - "approvalsNeeded": 1, - "approverEmailRecipients": ["user@example.com"], + "approvals_needed": 1, + "approver_email_recipients": ["user@example.com"], "approvers": { "principals": ["group:test@google.com"], }, @@ -559,25 +559,25 @@ def __init__(__self__, "principals": ["group:test@google.com"], }], privileged_access={ - "gcpIamAccess": { - "roleBindings": [{ + "gcp_iam_access": { + "role_bindings": [{ "role": "roles/storage.admin", - "conditionExpression": "request.time < timestamp(\\"2024-04-23T18:30:00.000Z\\")", + "condition_expression": "request.time < timestamp(\\"2024-04-23T18:30:00.000Z\\")", }], "resource": "//cloudresourcemanager.googleapis.com/projects/my-project-name", - "resourceType": "cloudresourcemanager.googleapis.com/Project", + "resource_type": "cloudresourcemanager.googleapis.com/Project", }, }, additional_notification_targets={ - "adminEmailRecipients": ["user@example.com"], - "requesterEmailRecipients": ["user@example.com"], + "admin_email_recipients": ["user@example.com"], + "requester_email_recipients": ["user@example.com"], }, approval_workflow={ - "manualApprovals": { - "requireApproverJustification": True, + "manual_approvals": { + "require_approver_justification": True, "steps": [{ - "approvalsNeeded": 1, - "approverEmailRecipients": ["user@example.com"], + "approvals_needed": 1, + "approver_email_recipients": ["user@example.com"], "approvers": { "principals": ["group:test@google.com"], }, diff --git a/sdk/python/pulumi_gcp/projects/access_approval_settings.py b/sdk/python/pulumi_gcp/projects/access_approval_settings.py index 2579fd5db3..9f808b84b5 100644 --- a/sdk/python/pulumi_gcp/projects/access_approval_settings.py +++ b/sdk/python/pulumi_gcp/projects/access_approval_settings.py @@ -335,8 +335,8 @@ def __init__(__self__, "example.user@example.com", ], enrolled_services=[{ - "cloudProduct": "all", - "enrollmentLevel": "BLOCK_ALL", + "cloud_product": "all", + "enrollment_level": "BLOCK_ALL", }]) ``` ### Project Access Approval Active Key Version @@ -366,7 +366,7 @@ def __init__(__self__, project_id="my-project-name", active_key_version=crypto_key_version.name, enrolled_services=[{ - "cloudProduct": "all", + "cloud_product": "all", }], opts = pulumi.ResourceOptions(depends_on=[iam])) ``` @@ -433,8 +433,8 @@ def __init__(__self__, "example.user@example.com", ], enrolled_services=[{ - "cloudProduct": "all", - "enrollmentLevel": "BLOCK_ALL", + "cloud_product": "all", + "enrollment_level": "BLOCK_ALL", }]) ``` ### Project Access Approval Active Key Version @@ -464,7 +464,7 @@ def __init__(__self__, project_id="my-project-name", active_key_version=crypto_key_version.name, enrolled_services=[{ - "cloudProduct": "all", + "cloud_product": "all", }], opts = pulumi.ResourceOptions(depends_on=[iam])) ``` diff --git a/sdk/python/pulumi_gcp/projects/api_key.py b/sdk/python/pulumi_gcp/projects/api_key.py index d31e88e016..0872204ece 100644 --- a/sdk/python/pulumi_gcp/projects/api_key.py +++ b/sdk/python/pulumi_gcp/projects/api_key.py @@ -224,13 +224,13 @@ def __init__(__self__, display_name="sample-key", project=basic.name, restrictions={ - "androidKeyRestrictions": { - "allowedApplications": [{ - "packageName": "com.example.app123", - "sha1Fingerprint": "1699466a142d4682a5f91b50fdf400f2358e2b0b", + "android_key_restrictions": { + "allowed_applications": [{ + "package_name": "com.example.app123", + "sha1_fingerprint": "1699466a142d4682a5f91b50fdf400f2358e2b0b", }], }, - "apiTargets": [{ + "api_targets": [{ "service": "translate.googleapis.com", "methods": ["GET*"], }], @@ -251,12 +251,12 @@ def __init__(__self__, display_name="sample-key", project=basic.name, restrictions={ - "apiTargets": [{ + "api_targets": [{ "service": "translate.googleapis.com", "methods": ["GET*"], }], - "browserKeyRestrictions": { - "allowedReferrers": [".*"], + "browser_key_restrictions": { + "allowed_referrers": [".*"], }, }) ``` @@ -275,12 +275,12 @@ def __init__(__self__, display_name="sample-key", project=basic.name, restrictions={ - "apiTargets": [{ + "api_targets": [{ "service": "translate.googleapis.com", "methods": ["GET*"], }], - "iosKeyRestrictions": { - "allowedBundleIds": ["com.google.app.macos"], + "ios_key_restrictions": { + "allowed_bundle_ids": ["com.google.app.macos"], }, }) ``` @@ -314,12 +314,12 @@ def __init__(__self__, display_name="sample-key", project=basic.name, restrictions={ - "apiTargets": [{ + "api_targets": [{ "service": "translate.googleapis.com", "methods": ["GET*"], }], - "serverKeyRestrictions": { - "allowedIps": ["127.0.0.1"], + "server_key_restrictions": { + "allowed_ips": ["127.0.0.1"], }, }) ``` @@ -381,13 +381,13 @@ def __init__(__self__, display_name="sample-key", project=basic.name, restrictions={ - "androidKeyRestrictions": { - "allowedApplications": [{ - "packageName": "com.example.app123", - "sha1Fingerprint": "1699466a142d4682a5f91b50fdf400f2358e2b0b", + "android_key_restrictions": { + "allowed_applications": [{ + "package_name": "com.example.app123", + "sha1_fingerprint": "1699466a142d4682a5f91b50fdf400f2358e2b0b", }], }, - "apiTargets": [{ + "api_targets": [{ "service": "translate.googleapis.com", "methods": ["GET*"], }], @@ -408,12 +408,12 @@ def __init__(__self__, display_name="sample-key", project=basic.name, restrictions={ - "apiTargets": [{ + "api_targets": [{ "service": "translate.googleapis.com", "methods": ["GET*"], }], - "browserKeyRestrictions": { - "allowedReferrers": [".*"], + "browser_key_restrictions": { + "allowed_referrers": [".*"], }, }) ``` @@ -432,12 +432,12 @@ def __init__(__self__, display_name="sample-key", project=basic.name, restrictions={ - "apiTargets": [{ + "api_targets": [{ "service": "translate.googleapis.com", "methods": ["GET*"], }], - "iosKeyRestrictions": { - "allowedBundleIds": ["com.google.app.macos"], + "ios_key_restrictions": { + "allowed_bundle_ids": ["com.google.app.macos"], }, }) ``` @@ -471,12 +471,12 @@ def __init__(__self__, display_name="sample-key", project=basic.name, restrictions={ - "apiTargets": [{ + "api_targets": [{ "service": "translate.googleapis.com", "methods": ["GET*"], }], - "serverKeyRestrictions": { - "allowedIps": ["127.0.0.1"], + "server_key_restrictions": { + "allowed_ips": ["127.0.0.1"], }, }) ``` diff --git a/sdk/python/pulumi_gcp/projects/iam_audit_config.py b/sdk/python/pulumi_gcp/projects/iam_audit_config.py index 1836b26a8e..538b594a8d 100644 --- a/sdk/python/pulumi_gcp/projects/iam_audit_config.py +++ b/sdk/python/pulumi_gcp/projects/iam_audit_config.py @@ -283,11 +283,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -404,11 +404,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -579,11 +579,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -700,11 +700,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` diff --git a/sdk/python/pulumi_gcp/projects/iam_binding.py b/sdk/python/pulumi_gcp/projects/iam_binding.py index 7644cfe829..09614c20bc 100644 --- a/sdk/python/pulumi_gcp/projects/iam_binding.py +++ b/sdk/python/pulumi_gcp/projects/iam_binding.py @@ -348,11 +348,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -469,11 +469,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -653,11 +653,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -774,11 +774,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` diff --git a/sdk/python/pulumi_gcp/projects/iam_member.py b/sdk/python/pulumi_gcp/projects/iam_member.py index 85aa380173..b6b7adf791 100644 --- a/sdk/python/pulumi_gcp/projects/iam_member.py +++ b/sdk/python/pulumi_gcp/projects/iam_member.py @@ -348,11 +348,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -469,11 +469,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -653,11 +653,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -774,11 +774,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` diff --git a/sdk/python/pulumi_gcp/projects/iam_policy.py b/sdk/python/pulumi_gcp/projects/iam_policy.py index f01df15be6..93cde60ce9 100644 --- a/sdk/python/pulumi_gcp/projects/iam_policy.py +++ b/sdk/python/pulumi_gcp/projects/iam_policy.py @@ -277,11 +277,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -398,11 +398,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -579,11 +579,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` @@ -700,11 +700,11 @@ def __init__(__self__, service="allServices", audit_log_configs=[ { - "logType": "ADMIN_READ", + "log_type": "ADMIN_READ", }, { - "logType": "DATA_READ", - "exemptedMembers": ["user:joebloggs@example.com"], + "log_type": "DATA_READ", + "exempted_members": ["user:joebloggs@example.com"], }, ]) ``` diff --git a/sdk/python/pulumi_gcp/projects/organization_policy.py b/sdk/python/pulumi_gcp/projects/organization_policy.py index c99e08cb3b..0099070b40 100644 --- a/sdk/python/pulumi_gcp/projects/organization_policy.py +++ b/sdk/python/pulumi_gcp/projects/organization_policy.py @@ -349,7 +349,7 @@ def __init__(__self__, project="your-project-id", constraint="serviceuser.services", list_policy={ - "suggestedValue": "compute.googleapis.com", + "suggested_value": "compute.googleapis.com", "deny": { "values": ["cloudresourcemanager.googleapis.com"], }, @@ -469,7 +469,7 @@ def __init__(__self__, project="your-project-id", constraint="serviceuser.services", list_policy={ - "suggestedValue": "compute.googleapis.com", + "suggested_value": "compute.googleapis.com", "deny": { "values": ["cloudresourcemanager.googleapis.com"], }, diff --git a/sdk/python/pulumi_gcp/pubsub/lite_subscription.py b/sdk/python/pulumi_gcp/pubsub/lite_subscription.py index 0eddf680cc..1b6b2f278c 100644 --- a/sdk/python/pulumi_gcp/pubsub/lite_subscription.py +++ b/sdk/python/pulumi_gcp/pubsub/lite_subscription.py @@ -282,18 +282,18 @@ def __init__(__self__, partition_config={ "count": 1, "capacity": { - "publishMibPerSec": 4, - "subscribeMibPerSec": 8, + "publish_mib_per_sec": 4, + "subscribe_mib_per_sec": 8, }, }, retention_config={ - "perPartitionBytes": "32212254720", + "per_partition_bytes": "32212254720", }) example_lite_subscription = gcp.pubsub.LiteSubscription("example", name="example-subscription", topic=example.name, delivery_config={ - "deliveryRequirement": "DELIVER_AFTER_STORED", + "delivery_requirement": "DELIVER_AFTER_STORED", }) ``` @@ -372,18 +372,18 @@ def __init__(__self__, partition_config={ "count": 1, "capacity": { - "publishMibPerSec": 4, - "subscribeMibPerSec": 8, + "publish_mib_per_sec": 4, + "subscribe_mib_per_sec": 8, }, }, retention_config={ - "perPartitionBytes": "32212254720", + "per_partition_bytes": "32212254720", }) example_lite_subscription = gcp.pubsub.LiteSubscription("example", name="example-subscription", topic=example.name, delivery_config={ - "deliveryRequirement": "DELIVER_AFTER_STORED", + "delivery_requirement": "DELIVER_AFTER_STORED", }) ``` diff --git a/sdk/python/pulumi_gcp/pubsub/lite_topic.py b/sdk/python/pulumi_gcp/pubsub/lite_topic.py index 721464040c..5dac3b951a 100644 --- a/sdk/python/pulumi_gcp/pubsub/lite_topic.py +++ b/sdk/python/pulumi_gcp/pubsub/lite_topic.py @@ -327,15 +327,15 @@ def __init__(__self__, partition_config={ "count": 1, "capacity": { - "publishMibPerSec": 4, - "subscribeMibPerSec": 8, + "publish_mib_per_sec": 4, + "subscribe_mib_per_sec": 8, }, }, retention_config={ - "perPartitionBytes": "32212254720", + "per_partition_bytes": "32212254720", }, reservation_config={ - "throughputReservation": example.name, + "throughput_reservation": example.name, }) ``` @@ -420,15 +420,15 @@ def __init__(__self__, partition_config={ "count": 1, "capacity": { - "publishMibPerSec": 4, - "subscribeMibPerSec": 8, + "publish_mib_per_sec": 4, + "subscribe_mib_per_sec": 8, }, }, retention_config={ - "perPartitionBytes": "32212254720", + "per_partition_bytes": "32212254720", }, reservation_config={ - "throughputReservation": example.name, + "throughput_reservation": example.name, }) ``` diff --git a/sdk/python/pulumi_gcp/pubsub/subscription.py b/sdk/python/pulumi_gcp/pubsub/subscription.py index b85aa24276..cc50133908 100644 --- a/sdk/python/pulumi_gcp/pubsub/subscription.py +++ b/sdk/python/pulumi_gcp/pubsub/subscription.py @@ -907,9 +907,9 @@ def __init__(__self__, "foo": "bar", }, push_config={ - "pushEndpoint": "https://example.com/push", + "push_endpoint": "https://example.com/push", "attributes": { - "x-goog-version": "v1", + "x_goog_version": "v1", }, }) ``` @@ -933,7 +933,7 @@ def __init__(__self__, "ttl": "300000.5s", }, retry_policy={ - "minimumBackoff": "10s", + "minimum_backoff": "10s", }, enable_message_ordering=False) ``` @@ -949,8 +949,8 @@ def __init__(__self__, name="example-subscription", topic=example.id, dead_letter_policy={ - "deadLetterTopic": example_dead_letter.id, - "maxDeliveryAttempts": 10, + "dead_letter_topic": example_dead_letter.id, + "max_delivery_attempts": 10, }) ``` ### Pubsub Subscription Push Bq @@ -1029,7 +1029,7 @@ def __init__(__self__, topic=example.id, bigquery_config={ "table": pulumi.Output.all(test_table.project, test_table.dataset_id, test_table.table_id).apply(lambda project, dataset_id, table_id: f"{project}.{dataset_id}.{table_id}"), - "useTableSchema": True, + "use_table_schema": True, }, opts = pulumi.ResourceOptions(depends_on=[ viewer, @@ -1074,7 +1074,7 @@ def __init__(__self__, topic=example.id, bigquery_config={ "table": pulumi.Output.all(test_table.project, test_table.dataset_id, test_table.table_id).apply(lambda project, dataset_id, table_id: f"{project}.{dataset_id}.{table_id}"), - "serviceAccountEmail": bq_write_service_account.email, + "service_account_email": bq_write_service_account.email, }, opts = pulumi.ResourceOptions(depends_on=[ bq_write_service_account, @@ -1103,11 +1103,11 @@ def __init__(__self__, topic=example_topic.id, cloud_storage_config={ "bucket": example.name, - "filenamePrefix": "pre-", - "filenameSuffix": "-_79169", - "filenameDatetimeFormat": "YYYY-MM-DD/hh_mm_ssZ", - "maxBytes": 1000, - "maxDuration": "300s", + "filename_prefix": "pre-", + "filename_suffix": "-_79169", + "filename_datetime_format": "YYYY-MM-DD/hh_mm_ssZ", + "max_bytes": 1000, + "max_duration": "300s", }, opts = pulumi.ResourceOptions(depends_on=[ example, @@ -1135,13 +1135,13 @@ def __init__(__self__, topic=example_topic.id, cloud_storage_config={ "bucket": example.name, - "filenamePrefix": "pre-", - "filenameSuffix": "-_56529", - "filenameDatetimeFormat": "YYYY-MM-DD/hh_mm_ssZ", - "maxBytes": 1000, - "maxDuration": "300s", - "avroConfig": { - "writeMetadata": True, + "filename_prefix": "pre-", + "filename_suffix": "-_56529", + "filename_datetime_format": "YYYY-MM-DD/hh_mm_ssZ", + "max_bytes": 1000, + "max_duration": "300s", + "avro_config": { + "write_metadata": True, }, }, opts = pulumi.ResourceOptions(depends_on=[ @@ -1172,12 +1172,12 @@ def __init__(__self__, topic=example_topic.id, cloud_storage_config={ "bucket": example.name, - "filenamePrefix": "pre-", - "filenameSuffix": "-_75413", - "filenameDatetimeFormat": "YYYY-MM-DD/hh_mm_ssZ", - "maxBytes": 1000, - "maxDuration": "300s", - "serviceAccountEmail": storage_write_service_account.email, + "filename_prefix": "pre-", + "filename_suffix": "-_75413", + "filename_datetime_format": "YYYY-MM-DD/hh_mm_ssZ", + "max_bytes": 1000, + "max_duration": "300s", + "service_account_email": storage_write_service_account.email, }, opts = pulumi.ResourceOptions(depends_on=[ storage_write_service_account, @@ -1335,9 +1335,9 @@ def __init__(__self__, "foo": "bar", }, push_config={ - "pushEndpoint": "https://example.com/push", + "push_endpoint": "https://example.com/push", "attributes": { - "x-goog-version": "v1", + "x_goog_version": "v1", }, }) ``` @@ -1361,7 +1361,7 @@ def __init__(__self__, "ttl": "300000.5s", }, retry_policy={ - "minimumBackoff": "10s", + "minimum_backoff": "10s", }, enable_message_ordering=False) ``` @@ -1377,8 +1377,8 @@ def __init__(__self__, name="example-subscription", topic=example.id, dead_letter_policy={ - "deadLetterTopic": example_dead_letter.id, - "maxDeliveryAttempts": 10, + "dead_letter_topic": example_dead_letter.id, + "max_delivery_attempts": 10, }) ``` ### Pubsub Subscription Push Bq @@ -1457,7 +1457,7 @@ def __init__(__self__, topic=example.id, bigquery_config={ "table": pulumi.Output.all(test_table.project, test_table.dataset_id, test_table.table_id).apply(lambda project, dataset_id, table_id: f"{project}.{dataset_id}.{table_id}"), - "useTableSchema": True, + "use_table_schema": True, }, opts = pulumi.ResourceOptions(depends_on=[ viewer, @@ -1502,7 +1502,7 @@ def __init__(__self__, topic=example.id, bigquery_config={ "table": pulumi.Output.all(test_table.project, test_table.dataset_id, test_table.table_id).apply(lambda project, dataset_id, table_id: f"{project}.{dataset_id}.{table_id}"), - "serviceAccountEmail": bq_write_service_account.email, + "service_account_email": bq_write_service_account.email, }, opts = pulumi.ResourceOptions(depends_on=[ bq_write_service_account, @@ -1531,11 +1531,11 @@ def __init__(__self__, topic=example_topic.id, cloud_storage_config={ "bucket": example.name, - "filenamePrefix": "pre-", - "filenameSuffix": "-_79169", - "filenameDatetimeFormat": "YYYY-MM-DD/hh_mm_ssZ", - "maxBytes": 1000, - "maxDuration": "300s", + "filename_prefix": "pre-", + "filename_suffix": "-_79169", + "filename_datetime_format": "YYYY-MM-DD/hh_mm_ssZ", + "max_bytes": 1000, + "max_duration": "300s", }, opts = pulumi.ResourceOptions(depends_on=[ example, @@ -1563,13 +1563,13 @@ def __init__(__self__, topic=example_topic.id, cloud_storage_config={ "bucket": example.name, - "filenamePrefix": "pre-", - "filenameSuffix": "-_56529", - "filenameDatetimeFormat": "YYYY-MM-DD/hh_mm_ssZ", - "maxBytes": 1000, - "maxDuration": "300s", - "avroConfig": { - "writeMetadata": True, + "filename_prefix": "pre-", + "filename_suffix": "-_56529", + "filename_datetime_format": "YYYY-MM-DD/hh_mm_ssZ", + "max_bytes": 1000, + "max_duration": "300s", + "avro_config": { + "write_metadata": True, }, }, opts = pulumi.ResourceOptions(depends_on=[ @@ -1600,12 +1600,12 @@ def __init__(__self__, topic=example_topic.id, cloud_storage_config={ "bucket": example.name, - "filenamePrefix": "pre-", - "filenameSuffix": "-_75413", - "filenameDatetimeFormat": "YYYY-MM-DD/hh_mm_ssZ", - "maxBytes": 1000, - "maxDuration": "300s", - "serviceAccountEmail": storage_write_service_account.email, + "filename_prefix": "pre-", + "filename_suffix": "-_75413", + "filename_datetime_format": "YYYY-MM-DD/hh_mm_ssZ", + "max_bytes": 1000, + "max_duration": "300s", + "service_account_email": storage_write_service_account.email, }, opts = pulumi.ResourceOptions(depends_on=[ storage_write_service_account, diff --git a/sdk/python/pulumi_gcp/pubsub/topic.py b/sdk/python/pulumi_gcp/pubsub/topic.py index bd9058b42a..bad1a7859d 100644 --- a/sdk/python/pulumi_gcp/pubsub/topic.py +++ b/sdk/python/pulumi_gcp/pubsub/topic.py @@ -482,7 +482,7 @@ def __init__(__self__, example = gcp.pubsub.Topic("example", name="example-topic", message_storage_policy={ - "allowedPersistenceRegions": ["europe-west3"], + "allowed_persistence_regions": ["europe-west3"], }) ``` ### Pubsub Topic Schema Settings @@ -526,11 +526,11 @@ def __init__(__self__, example = gcp.pubsub.Topic("example", name="example-topic", ingestion_data_source_settings={ - "awsKinesis": { - "streamArn": "arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name", - "consumerArn": "arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name/consumer/consumer-1:1111111111", - "awsRoleArn": "arn:aws:iam::111111111111:role/fake-role-name", - "gcpServiceAccount": "fake-service-account@fake-gcp-project.iam.gserviceaccount.com", + "aws_kinesis": { + "stream_arn": "arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name", + "consumer_arn": "arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name/consumer/consumer-1:1111111111", + "aws_role_arn": "arn:aws:iam::111111111111:role/fake-role-name", + "gcp_service_account": "fake-service-account@fake-gcp-project.iam.gserviceaccount.com", }, }) ``` @@ -651,7 +651,7 @@ def __init__(__self__, example = gcp.pubsub.Topic("example", name="example-topic", message_storage_policy={ - "allowedPersistenceRegions": ["europe-west3"], + "allowed_persistence_regions": ["europe-west3"], }) ``` ### Pubsub Topic Schema Settings @@ -695,11 +695,11 @@ def __init__(__self__, example = gcp.pubsub.Topic("example", name="example-topic", ingestion_data_source_settings={ - "awsKinesis": { - "streamArn": "arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name", - "consumerArn": "arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name/consumer/consumer-1:1111111111", - "awsRoleArn": "arn:aws:iam::111111111111:role/fake-role-name", - "gcpServiceAccount": "fake-service-account@fake-gcp-project.iam.gserviceaccount.com", + "aws_kinesis": { + "stream_arn": "arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name", + "consumer_arn": "arn:aws:kinesis:us-west-2:111111111111:stream/fake-stream-name/consumer/consumer-1:1111111111", + "aws_role_arn": "arn:aws:iam::111111111111:role/fake-role-name", + "gcp_service_account": "fake-service-account@fake-gcp-project.iam.gserviceaccount.com", }, }) ``` diff --git a/sdk/python/pulumi_gcp/recaptcha/enterprise_key.py b/sdk/python/pulumi_gcp/recaptcha/enterprise_key.py index 9948dd2a28..5b05e92def 100644 --- a/sdk/python/pulumi_gcp/recaptcha/enterprise_key.py +++ b/sdk/python/pulumi_gcp/recaptcha/enterprise_key.py @@ -409,12 +409,12 @@ def __init__(__self__, primary = gcp.recaptcha.EnterpriseKey("primary", display_name="display-name-one", android_settings={ - "allowAllPackageNames": True, - "allowedPackageNames": [], + "allow_all_package_names": True, + "allowed_package_names": [], }, project="my-project-name", testing_options={ - "testingScore": 0.8, + "testing_score": 0.8, }, labels={ "label-one": "value-one", @@ -429,12 +429,12 @@ def __init__(__self__, primary = gcp.recaptcha.EnterpriseKey("primary", display_name="display-name-one", ios_settings={ - "allowAllBundleIds": True, - "allowedBundleIds": [], + "allow_all_bundle_ids": True, + "allowed_bundle_ids": [], }, project="my-project-name", testing_options={ - "testingScore": 1, + "testing_score": 1, }, labels={ "label-one": "value-one", @@ -450,8 +450,8 @@ def __init__(__self__, display_name="display-name-one", project="my-project-name", web_settings={ - "integrationType": "SCORE", - "allowAllDomains": True, + "integration_type": "SCORE", + "allow_all_domains": True, }, labels={}) ``` @@ -465,18 +465,18 @@ def __init__(__self__, display_name="display-name-one", project="my-project-name", testing_options={ - "testingChallenge": "NOCAPTCHA", - "testingScore": 0.5, + "testing_challenge": "NOCAPTCHA", + "testing_score": 0.5, }, waf_settings={ - "wafFeature": "CHALLENGE_PAGE", - "wafService": "CA", + "waf_feature": "CHALLENGE_PAGE", + "waf_service": "CA", }, web_settings={ - "integrationType": "INVISIBLE", - "allowAllDomains": True, - "allowedDomains": [], - "challengeSecurityPreference": "USABILITY", + "integration_type": "INVISIBLE", + "allow_all_domains": True, + "allowed_domains": [], + "challenge_security_preference": "USABILITY", }, labels={ "label-one": "value-one", @@ -492,14 +492,14 @@ def __init__(__self__, display_name="display-name-one", project="my-project-name", testing_options={ - "testingChallenge": "NOCAPTCHA", - "testingScore": 0.5, + "testing_challenge": "NOCAPTCHA", + "testing_score": 0.5, }, web_settings={ - "integrationType": "CHECKBOX", - "allowAllDomains": True, - "allowedDomains": [], - "challengeSecurityPreference": "USABILITY", + "integration_type": "CHECKBOX", + "allow_all_domains": True, + "allowed_domains": [], + "challenge_security_preference": "USABILITY", }, labels={ "label-one": "value-one", @@ -515,13 +515,13 @@ def __init__(__self__, display_name="display-name-one", project="my-project-name", testing_options={ - "testingScore": 0.5, + "testing_score": 0.5, }, web_settings={ - "integrationType": "SCORE", - "allowAllDomains": True, - "allowAmpTraffic": False, - "allowedDomains": [], + "integration_type": "SCORE", + "allow_all_domains": True, + "allow_amp_traffic": False, + "allowed_domains": [], }, labels={ "label-one": "value-one", @@ -590,12 +590,12 @@ def __init__(__self__, primary = gcp.recaptcha.EnterpriseKey("primary", display_name="display-name-one", android_settings={ - "allowAllPackageNames": True, - "allowedPackageNames": [], + "allow_all_package_names": True, + "allowed_package_names": [], }, project="my-project-name", testing_options={ - "testingScore": 0.8, + "testing_score": 0.8, }, labels={ "label-one": "value-one", @@ -610,12 +610,12 @@ def __init__(__self__, primary = gcp.recaptcha.EnterpriseKey("primary", display_name="display-name-one", ios_settings={ - "allowAllBundleIds": True, - "allowedBundleIds": [], + "allow_all_bundle_ids": True, + "allowed_bundle_ids": [], }, project="my-project-name", testing_options={ - "testingScore": 1, + "testing_score": 1, }, labels={ "label-one": "value-one", @@ -631,8 +631,8 @@ def __init__(__self__, display_name="display-name-one", project="my-project-name", web_settings={ - "integrationType": "SCORE", - "allowAllDomains": True, + "integration_type": "SCORE", + "allow_all_domains": True, }, labels={}) ``` @@ -646,18 +646,18 @@ def __init__(__self__, display_name="display-name-one", project="my-project-name", testing_options={ - "testingChallenge": "NOCAPTCHA", - "testingScore": 0.5, + "testing_challenge": "NOCAPTCHA", + "testing_score": 0.5, }, waf_settings={ - "wafFeature": "CHALLENGE_PAGE", - "wafService": "CA", + "waf_feature": "CHALLENGE_PAGE", + "waf_service": "CA", }, web_settings={ - "integrationType": "INVISIBLE", - "allowAllDomains": True, - "allowedDomains": [], - "challengeSecurityPreference": "USABILITY", + "integration_type": "INVISIBLE", + "allow_all_domains": True, + "allowed_domains": [], + "challenge_security_preference": "USABILITY", }, labels={ "label-one": "value-one", @@ -673,14 +673,14 @@ def __init__(__self__, display_name="display-name-one", project="my-project-name", testing_options={ - "testingChallenge": "NOCAPTCHA", - "testingScore": 0.5, + "testing_challenge": "NOCAPTCHA", + "testing_score": 0.5, }, web_settings={ - "integrationType": "CHECKBOX", - "allowAllDomains": True, - "allowedDomains": [], - "challengeSecurityPreference": "USABILITY", + "integration_type": "CHECKBOX", + "allow_all_domains": True, + "allowed_domains": [], + "challenge_security_preference": "USABILITY", }, labels={ "label-one": "value-one", @@ -696,13 +696,13 @@ def __init__(__self__, display_name="display-name-one", project="my-project-name", testing_options={ - "testingScore": 0.5, + "testing_score": 0.5, }, web_settings={ - "integrationType": "SCORE", - "allowAllDomains": True, - "allowAmpTraffic": False, - "allowedDomains": [], + "integration_type": "SCORE", + "allow_all_domains": True, + "allow_amp_traffic": False, + "allowed_domains": [], }, labels={ "label-one": "value-one", diff --git a/sdk/python/pulumi_gcp/redis/instance.py b/sdk/python/pulumi_gcp/redis/instance.py index 99084b4a00..3cf1cf76c3 100644 --- a/sdk/python/pulumi_gcp/redis/instance.py +++ b/sdk/python/pulumi_gcp/redis/instance.py @@ -1285,9 +1285,9 @@ def __init__(__self__, "other_key": "other_val", }, maintenance_policy={ - "weeklyMaintenanceWindows": [{ + "weekly_maintenance_windows": [{ "day": "TUESDAY", - "startTime": { + "start_time": { "hours": 0, "minutes": 30, "seconds": 0, @@ -1309,8 +1309,8 @@ def __init__(__self__, location_id="us-central1-a", alternative_location_id="us-central1-f", persistence_config={ - "persistenceMode": "RDB", - "rdbSnapshotPeriod": "TWELVE_HOURS", + "persistence_mode": "RDB", + "rdb_snapshot_period": "TWELVE_HOURS", }) ``` ### Redis Instance Private Service @@ -1582,9 +1582,9 @@ def __init__(__self__, "other_key": "other_val", }, maintenance_policy={ - "weeklyMaintenanceWindows": [{ + "weekly_maintenance_windows": [{ "day": "TUESDAY", - "startTime": { + "start_time": { "hours": 0, "minutes": 30, "seconds": 0, @@ -1606,8 +1606,8 @@ def __init__(__self__, location_id="us-central1-a", alternative_location_id="us-central1-f", persistence_config={ - "persistenceMode": "RDB", - "rdbSnapshotPeriod": "TWELVE_HOURS", + "persistence_mode": "RDB", + "rdb_snapshot_period": "TWELVE_HOURS", }) ``` ### Redis Instance Private Service diff --git a/sdk/python/pulumi_gcp/secretmanager/secret.py b/sdk/python/pulumi_gcp/secretmanager/secret.py index 99931bda18..1adf5c723a 100644 --- a/sdk/python/pulumi_gcp/secretmanager/secret.py +++ b/sdk/python/pulumi_gcp/secretmanager/secret.py @@ -598,7 +598,7 @@ def __init__(__self__, "label": "my-label", }, replication={ - "userManaged": { + "user_managed": { "replicas": [ { "location": "us-central1", @@ -660,8 +660,8 @@ def __init__(__self__, secret_id="secret", replication={ "auto": { - "customerManagedEncryption": { - "kmsKeyName": "kms-key", + "customer_managed_encryption": { + "kms_key_name": "kms-key", }, }, }, @@ -758,7 +758,7 @@ def __init__(__self__, "label": "my-label", }, replication={ - "userManaged": { + "user_managed": { "replicas": [ { "location": "us-central1", @@ -820,8 +820,8 @@ def __init__(__self__, secret_id="secret", replication={ "auto": { - "customerManagedEncryption": { - "kmsKeyName": "kms-key", + "customer_managed_encryption": { + "kms_key_name": "kms-key", }, }, }, diff --git a/sdk/python/pulumi_gcp/secretmanager/secret_version.py b/sdk/python/pulumi_gcp/secretmanager/secret_version.py index b6fa805f77..c4646b8a09 100644 --- a/sdk/python/pulumi_gcp/secretmanager/secret_version.py +++ b/sdk/python/pulumi_gcp/secretmanager/secret_version.py @@ -335,7 +335,7 @@ def __init__(__self__, secret_basic = gcp.secretmanager.Secret("secret-basic", secret_id="secret-version", replication={ - "userManaged": { + "user_managed": { "replicas": [{ "location": "us-central1", }], @@ -355,7 +355,7 @@ def __init__(__self__, secret_basic = gcp.secretmanager.Secret("secret-basic", secret_id="secret-version", replication={ - "userManaged": { + "user_managed": { "replicas": [{ "location": "us-central1", }], @@ -376,7 +376,7 @@ def __init__(__self__, secret_basic = gcp.secretmanager.Secret("secret-basic", secret_id="secret-version", replication={ - "userManaged": { + "user_managed": { "replicas": [{ "location": "us-central1", }], @@ -455,7 +455,7 @@ def __init__(__self__, secret_basic = gcp.secretmanager.Secret("secret-basic", secret_id="secret-version", replication={ - "userManaged": { + "user_managed": { "replicas": [{ "location": "us-central1", }], @@ -475,7 +475,7 @@ def __init__(__self__, secret_basic = gcp.secretmanager.Secret("secret-basic", secret_id="secret-version", replication={ - "userManaged": { + "user_managed": { "replicas": [{ "location": "us-central1", }], @@ -496,7 +496,7 @@ def __init__(__self__, secret_basic = gcp.secretmanager.Secret("secret-basic", secret_id="secret-version", replication={ - "userManaged": { + "user_managed": { "replicas": [{ "location": "us-central1", }], diff --git a/sdk/python/pulumi_gcp/securesourcemanager/instance.py b/sdk/python/pulumi_gcp/securesourcemanager/instance.py index e9d8b5dc8b..75ad848990 100644 --- a/sdk/python/pulumi_gcp/securesourcemanager/instance.py +++ b/sdk/python/pulumi_gcp/securesourcemanager/instance.py @@ -459,31 +459,31 @@ def __init__(__self__, location="us-central1", tier="ENTERPRISE", publishing_options={ - "publishCaCert": True, - "publishCrl": True, + "publish_ca_cert": True, + "publish_crl": True, }) root_ca = gcp.certificateauthority.Authority("root_ca", pool=ca_pool.name, certificate_authority_id="root-ca", location="us-central1", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "google", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, }, - "x509Config": { - "caOptions": { - "isCa": True, + "x509_config": { + "ca_options": { + "is_ca": True, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": True, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -506,8 +506,8 @@ def __init__(__self__, instance_id="my-instance", location="us-central1", private_config={ - "isPrivate": True, - "caPool": ca_pool.id, + "is_private": True, + "ca_pool": ca_pool.id, }, opts = pulumi.ResourceOptions(depends_on=[ root_ca, @@ -627,31 +627,31 @@ def __init__(__self__, location="us-central1", tier="ENTERPRISE", publishing_options={ - "publishCaCert": True, - "publishCrl": True, + "publish_ca_cert": True, + "publish_crl": True, }) root_ca = gcp.certificateauthority.Authority("root_ca", pool=ca_pool.name, certificate_authority_id="root-ca", location="us-central1", config={ - "subjectConfig": { + "subject_config": { "subject": { "organization": "google", - "commonName": "my-certificate-authority", + "common_name": "my-certificate-authority", }, }, - "x509Config": { - "caOptions": { - "isCa": True, + "x509_config": { + "ca_options": { + "is_ca": True, }, - "keyUsage": { - "baseKeyUsage": { - "certSign": True, - "crlSign": True, + "key_usage": { + "base_key_usage": { + "cert_sign": True, + "crl_sign": True, }, - "extendedKeyUsage": { - "serverAuth": True, + "extended_key_usage": { + "server_auth": True, }, }, }, @@ -674,8 +674,8 @@ def __init__(__self__, instance_id="my-instance", location="us-central1", private_config={ - "isPrivate": True, - "caPool": ca_pool.id, + "is_private": True, + "ca_pool": ca_pool.id, }, opts = pulumi.ResourceOptions(depends_on=[ root_ca, diff --git a/sdk/python/pulumi_gcp/securesourcemanager/repository.py b/sdk/python/pulumi_gcp/securesourcemanager/repository.py index 6206cb1e25..65d68a6a2a 100644 --- a/sdk/python/pulumi_gcp/securesourcemanager/repository.py +++ b/sdk/python/pulumi_gcp/securesourcemanager/repository.py @@ -376,7 +376,7 @@ def __init__(__self__, instance=instance.name, description="This is a test repository", initial_config={ - "defaultBranch": "main", + "default_branch": "main", "gitignores": ["python"], "license": "mit", "readme": "default", @@ -472,7 +472,7 @@ def __init__(__self__, instance=instance.name, description="This is a test repository", initial_config={ - "defaultBranch": "main", + "default_branch": "main", "gitignores": ["python"], "license": "mit", "readme": "default", diff --git a/sdk/python/pulumi_gcp/securitycenter/folder_custom_module.py b/sdk/python/pulumi_gcp/securitycenter/folder_custom_module.py index b55700a811..2dc796d9d6 100644 --- a/sdk/python/pulumi_gcp/securitycenter/folder_custom_module.py +++ b/sdk/python/pulumi_gcp/securitycenter/folder_custom_module.py @@ -298,8 +298,8 @@ def __init__(__self__, "predicate": { "expression": "resource.rotationPeriod > duration(\\"2592000s\\")", }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "description": "The rotation period of the identified cryptokey resource exceeds 30 days.", "recommendation": "Set the rotation period to at most 30 days.", @@ -326,10 +326,10 @@ def __init__(__self__, "description": "description of the expression", "location": "location of the expression", }, - "customOutput": { + "custom_output": { "properties": [{ "name": "duration", - "valueExpression": { + "value_expression": { "expression": "resource.rotationPeriod", "title": "Purpose of the expression", "description": "description of the expression", @@ -337,8 +337,8 @@ def __init__(__self__, }, }], }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "severity": "LOW", "description": "Description of the custom module", @@ -415,8 +415,8 @@ def __init__(__self__, "predicate": { "expression": "resource.rotationPeriod > duration(\\"2592000s\\")", }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "description": "The rotation period of the identified cryptokey resource exceeds 30 days.", "recommendation": "Set the rotation period to at most 30 days.", @@ -443,10 +443,10 @@ def __init__(__self__, "description": "description of the expression", "location": "location of the expression", }, - "customOutput": { + "custom_output": { "properties": [{ "name": "duration", - "valueExpression": { + "value_expression": { "expression": "resource.rotationPeriod", "title": "Purpose of the expression", "description": "description of the expression", @@ -454,8 +454,8 @@ def __init__(__self__, }, }], }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "severity": "LOW", "description": "Description of the custom module", diff --git a/sdk/python/pulumi_gcp/securitycenter/instance_iam_binding.py b/sdk/python/pulumi_gcp/securitycenter/instance_iam_binding.py index adf9920344..cb2b38b81e 100644 --- a/sdk/python/pulumi_gcp/securitycenter/instance_iam_binding.py +++ b/sdk/python/pulumi_gcp/securitycenter/instance_iam_binding.py @@ -279,10 +279,10 @@ def __init__(__self__, }, network_config={ "network": "default", - "ipAllocation": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f"{address}/{prefix_length}"), + "ip_allocation": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f"{address}/{prefix_length}"), }, accelerators=[{ - "acceleratorType": "CDC", + "accelerator_type": "CDC", "state": "ENABLED", }]) ``` @@ -311,10 +311,10 @@ def __init__(__self__, type="BASIC", private_instance=True, network_config={ - "connectionType": "PRIVATE_SERVICE_CONNECT_INTERFACES", - "privateServiceConnectConfig": { - "networkAttachment": psc_network_attachment.id, - "unreachableCidrBlock": "192.168.0.0/25", + "connection_type": "PRIVATE_SERVICE_CONNECT_INTERFACES", + "private_service_connect_config": { + "network_attachment": psc_network_attachment.id, + "unreachable_cidr_block": "192.168.0.0/25", }, }) ``` @@ -340,7 +340,7 @@ def __init__(__self__, region="us-central1", type="BASIC", crypto_key_config={ - "keyReference": crypto_key.id, + "key_reference": crypto_key.id, }, opts = pulumi.ResourceOptions(depends_on=[crypto_key_member])) ``` @@ -479,10 +479,10 @@ def __init__(__self__, }, network_config={ "network": "default", - "ipAllocation": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f"{address}/{prefix_length}"), + "ip_allocation": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f"{address}/{prefix_length}"), }, accelerators=[{ - "acceleratorType": "CDC", + "accelerator_type": "CDC", "state": "ENABLED", }]) ``` @@ -511,10 +511,10 @@ def __init__(__self__, type="BASIC", private_instance=True, network_config={ - "connectionType": "PRIVATE_SERVICE_CONNECT_INTERFACES", - "privateServiceConnectConfig": { - "networkAttachment": psc_network_attachment.id, - "unreachableCidrBlock": "192.168.0.0/25", + "connection_type": "PRIVATE_SERVICE_CONNECT_INTERFACES", + "private_service_connect_config": { + "network_attachment": psc_network_attachment.id, + "unreachable_cidr_block": "192.168.0.0/25", }, }) ``` @@ -540,7 +540,7 @@ def __init__(__self__, region="us-central1", type="BASIC", crypto_key_config={ - "keyReference": crypto_key.id, + "key_reference": crypto_key.id, }, opts = pulumi.ResourceOptions(depends_on=[crypto_key_member])) ``` diff --git a/sdk/python/pulumi_gcp/securitycenter/instance_iam_member.py b/sdk/python/pulumi_gcp/securitycenter/instance_iam_member.py index 6c468aa1ee..3f21999edc 100644 --- a/sdk/python/pulumi_gcp/securitycenter/instance_iam_member.py +++ b/sdk/python/pulumi_gcp/securitycenter/instance_iam_member.py @@ -279,10 +279,10 @@ def __init__(__self__, }, network_config={ "network": "default", - "ipAllocation": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f"{address}/{prefix_length}"), + "ip_allocation": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f"{address}/{prefix_length}"), }, accelerators=[{ - "acceleratorType": "CDC", + "accelerator_type": "CDC", "state": "ENABLED", }]) ``` @@ -311,10 +311,10 @@ def __init__(__self__, type="BASIC", private_instance=True, network_config={ - "connectionType": "PRIVATE_SERVICE_CONNECT_INTERFACES", - "privateServiceConnectConfig": { - "networkAttachment": psc_network_attachment.id, - "unreachableCidrBlock": "192.168.0.0/25", + "connection_type": "PRIVATE_SERVICE_CONNECT_INTERFACES", + "private_service_connect_config": { + "network_attachment": psc_network_attachment.id, + "unreachable_cidr_block": "192.168.0.0/25", }, }) ``` @@ -340,7 +340,7 @@ def __init__(__self__, region="us-central1", type="BASIC", crypto_key_config={ - "keyReference": crypto_key.id, + "key_reference": crypto_key.id, }, opts = pulumi.ResourceOptions(depends_on=[crypto_key_member])) ``` @@ -479,10 +479,10 @@ def __init__(__self__, }, network_config={ "network": "default", - "ipAllocation": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f"{address}/{prefix_length}"), + "ip_allocation": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f"{address}/{prefix_length}"), }, accelerators=[{ - "acceleratorType": "CDC", + "accelerator_type": "CDC", "state": "ENABLED", }]) ``` @@ -511,10 +511,10 @@ def __init__(__self__, type="BASIC", private_instance=True, network_config={ - "connectionType": "PRIVATE_SERVICE_CONNECT_INTERFACES", - "privateServiceConnectConfig": { - "networkAttachment": psc_network_attachment.id, - "unreachableCidrBlock": "192.168.0.0/25", + "connection_type": "PRIVATE_SERVICE_CONNECT_INTERFACES", + "private_service_connect_config": { + "network_attachment": psc_network_attachment.id, + "unreachable_cidr_block": "192.168.0.0/25", }, }) ``` @@ -540,7 +540,7 @@ def __init__(__self__, region="us-central1", type="BASIC", crypto_key_config={ - "keyReference": crypto_key.id, + "key_reference": crypto_key.id, }, opts = pulumi.ResourceOptions(depends_on=[crypto_key_member])) ``` diff --git a/sdk/python/pulumi_gcp/securitycenter/instance_iam_policy.py b/sdk/python/pulumi_gcp/securitycenter/instance_iam_policy.py index 4978782ba4..32531f4c50 100644 --- a/sdk/python/pulumi_gcp/securitycenter/instance_iam_policy.py +++ b/sdk/python/pulumi_gcp/securitycenter/instance_iam_policy.py @@ -228,10 +228,10 @@ def __init__(__self__, }, network_config={ "network": "default", - "ipAllocation": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f"{address}/{prefix_length}"), + "ip_allocation": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f"{address}/{prefix_length}"), }, accelerators=[{ - "acceleratorType": "CDC", + "accelerator_type": "CDC", "state": "ENABLED", }]) ``` @@ -260,10 +260,10 @@ def __init__(__self__, type="BASIC", private_instance=True, network_config={ - "connectionType": "PRIVATE_SERVICE_CONNECT_INTERFACES", - "privateServiceConnectConfig": { - "networkAttachment": psc_network_attachment.id, - "unreachableCidrBlock": "192.168.0.0/25", + "connection_type": "PRIVATE_SERVICE_CONNECT_INTERFACES", + "private_service_connect_config": { + "network_attachment": psc_network_attachment.id, + "unreachable_cidr_block": "192.168.0.0/25", }, }) ``` @@ -289,7 +289,7 @@ def __init__(__self__, region="us-central1", type="BASIC", crypto_key_config={ - "keyReference": crypto_key.id, + "key_reference": crypto_key.id, }, opts = pulumi.ResourceOptions(depends_on=[crypto_key_member])) ``` @@ -428,10 +428,10 @@ def __init__(__self__, }, network_config={ "network": "default", - "ipAllocation": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f"{address}/{prefix_length}"), + "ip_allocation": pulumi.Output.all(private_ip_alloc.address, private_ip_alloc.prefix_length).apply(lambda address, prefix_length: f"{address}/{prefix_length}"), }, accelerators=[{ - "acceleratorType": "CDC", + "accelerator_type": "CDC", "state": "ENABLED", }]) ``` @@ -460,10 +460,10 @@ def __init__(__self__, type="BASIC", private_instance=True, network_config={ - "connectionType": "PRIVATE_SERVICE_CONNECT_INTERFACES", - "privateServiceConnectConfig": { - "networkAttachment": psc_network_attachment.id, - "unreachableCidrBlock": "192.168.0.0/25", + "connection_type": "PRIVATE_SERVICE_CONNECT_INTERFACES", + "private_service_connect_config": { + "network_attachment": psc_network_attachment.id, + "unreachable_cidr_block": "192.168.0.0/25", }, }) ``` @@ -489,7 +489,7 @@ def __init__(__self__, region="us-central1", type="BASIC", crypto_key_config={ - "keyReference": crypto_key.id, + "key_reference": crypto_key.id, }, opts = pulumi.ResourceOptions(depends_on=[crypto_key_member])) ``` diff --git a/sdk/python/pulumi_gcp/securitycenter/management_folder_security_health_analytics_custom_module.py b/sdk/python/pulumi_gcp/securitycenter/management_folder_security_health_analytics_custom_module.py index 94199982c8..3cad8803af 100644 --- a/sdk/python/pulumi_gcp/securitycenter/management_folder_security_health_analytics_custom_module.py +++ b/sdk/python/pulumi_gcp/securitycenter/management_folder_security_health_analytics_custom_module.py @@ -347,8 +347,8 @@ def __init__(__self__, "predicate": { "expression": "resource.rotationPeriod > duration(\\"2592000s\\")", }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "description": "The rotation period of the identified cryptokey resource exceeds 30 days.", "recommendation": "Set the rotation period to at most 30 days.", @@ -376,10 +376,10 @@ def __init__(__self__, "description": "description of the expression", "location": "location of the expression", }, - "customOutput": { + "custom_output": { "properties": [{ "name": "duration", - "valueExpression": { + "value_expression": { "expression": "resource.rotationPeriod", "title": "Purpose of the expression", "description": "description of the expression", @@ -387,8 +387,8 @@ def __init__(__self__, }, }], }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "severity": "LOW", "description": "Description of the custom module", @@ -470,8 +470,8 @@ def __init__(__self__, "predicate": { "expression": "resource.rotationPeriod > duration(\\"2592000s\\")", }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "description": "The rotation period of the identified cryptokey resource exceeds 30 days.", "recommendation": "Set the rotation period to at most 30 days.", @@ -499,10 +499,10 @@ def __init__(__self__, "description": "description of the expression", "location": "location of the expression", }, - "customOutput": { + "custom_output": { "properties": [{ "name": "duration", - "valueExpression": { + "value_expression": { "expression": "resource.rotationPeriod", "title": "Purpose of the expression", "description": "description of the expression", @@ -510,8 +510,8 @@ def __init__(__self__, }, }], }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "severity": "LOW", "description": "Description of the custom module", diff --git a/sdk/python/pulumi_gcp/securitycenter/management_organization_security_health_analytics_custom_module.py b/sdk/python/pulumi_gcp/securitycenter/management_organization_security_health_analytics_custom_module.py index e6bd2f8700..45f4248f89 100644 --- a/sdk/python/pulumi_gcp/securitycenter/management_organization_security_health_analytics_custom_module.py +++ b/sdk/python/pulumi_gcp/securitycenter/management_organization_security_health_analytics_custom_module.py @@ -344,8 +344,8 @@ def __init__(__self__, "predicate": { "expression": "resource.rotationPeriod > duration(\\"2592000s\\")", }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "description": "The rotation period of the identified cryptokey resource exceeds 30 days.", "recommendation": "Set the rotation period to at most 30 days.", @@ -370,10 +370,10 @@ def __init__(__self__, "description": "description of the expression", "location": "location of the expression", }, - "customOutput": { + "custom_output": { "properties": [{ "name": "duration", - "valueExpression": { + "value_expression": { "expression": "resource.rotationPeriod", "title": "Purpose of the expression", "description": "description of the expression", @@ -381,8 +381,8 @@ def __init__(__self__, }, }], }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "severity": "LOW", "description": "Description of the custom module", @@ -461,8 +461,8 @@ def __init__(__self__, "predicate": { "expression": "resource.rotationPeriod > duration(\\"2592000s\\")", }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "description": "The rotation period of the identified cryptokey resource exceeds 30 days.", "recommendation": "Set the rotation period to at most 30 days.", @@ -487,10 +487,10 @@ def __init__(__self__, "description": "description of the expression", "location": "location of the expression", }, - "customOutput": { + "custom_output": { "properties": [{ "name": "duration", - "valueExpression": { + "value_expression": { "expression": "resource.rotationPeriod", "title": "Purpose of the expression", "description": "description of the expression", @@ -498,8 +498,8 @@ def __init__(__self__, }, }], }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "severity": "LOW", "description": "Description of the custom module", diff --git a/sdk/python/pulumi_gcp/securitycenter/management_project_security_health_analytics_custom_module.py b/sdk/python/pulumi_gcp/securitycenter/management_project_security_health_analytics_custom_module.py index 584f358ef8..76468b8f19 100644 --- a/sdk/python/pulumi_gcp/securitycenter/management_project_security_health_analytics_custom_module.py +++ b/sdk/python/pulumi_gcp/securitycenter/management_project_security_health_analytics_custom_module.py @@ -336,8 +336,8 @@ def __init__(__self__, "predicate": { "expression": "resource.rotationPeriod > duration(\\"2592000s\\")", }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "description": "The rotation period of the identified cryptokey resource exceeds 30 days.", "recommendation": "Set the rotation period to at most 30 days.", @@ -361,10 +361,10 @@ def __init__(__self__, "description": "description of the expression", "location": "location of the expression", }, - "customOutput": { + "custom_output": { "properties": [{ "name": "duration", - "valueExpression": { + "value_expression": { "expression": "resource.rotationPeriod", "title": "Purpose of the expression", "description": "description of the expression", @@ -372,8 +372,8 @@ def __init__(__self__, }, }], }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "severity": "LOW", "description": "Description of the custom module", @@ -455,8 +455,8 @@ def __init__(__self__, "predicate": { "expression": "resource.rotationPeriod > duration(\\"2592000s\\")", }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "description": "The rotation period of the identified cryptokey resource exceeds 30 days.", "recommendation": "Set the rotation period to at most 30 days.", @@ -480,10 +480,10 @@ def __init__(__self__, "description": "description of the expression", "location": "location of the expression", }, - "customOutput": { + "custom_output": { "properties": [{ "name": "duration", - "valueExpression": { + "value_expression": { "expression": "resource.rotationPeriod", "title": "Purpose of the expression", "description": "description of the expression", @@ -491,8 +491,8 @@ def __init__(__self__, }, }], }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "severity": "LOW", "description": "Description of the custom module", diff --git a/sdk/python/pulumi_gcp/securitycenter/organization_custom_module.py b/sdk/python/pulumi_gcp/securitycenter/organization_custom_module.py index a5805d9e9b..cac8bfc480 100644 --- a/sdk/python/pulumi_gcp/securitycenter/organization_custom_module.py +++ b/sdk/python/pulumi_gcp/securitycenter/organization_custom_module.py @@ -295,8 +295,8 @@ def __init__(__self__, "predicate": { "expression": "resource.rotationPeriod > duration(\\"2592000s\\")", }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "description": "The rotation period of the identified cryptokey resource exceeds 30 days.", "recommendation": "Set the rotation period to at most 30 days.", @@ -320,10 +320,10 @@ def __init__(__self__, "description": "description of the expression", "location": "location of the expression", }, - "customOutput": { + "custom_output": { "properties": [{ "name": "duration", - "valueExpression": { + "value_expression": { "expression": "resource.rotationPeriod", "title": "Purpose of the expression", "description": "description of the expression", @@ -331,8 +331,8 @@ def __init__(__self__, }, }], }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "severity": "LOW", "description": "Description of the custom module", @@ -406,8 +406,8 @@ def __init__(__self__, "predicate": { "expression": "resource.rotationPeriod > duration(\\"2592000s\\")", }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "description": "The rotation period of the identified cryptokey resource exceeds 30 days.", "recommendation": "Set the rotation period to at most 30 days.", @@ -431,10 +431,10 @@ def __init__(__self__, "description": "description of the expression", "location": "location of the expression", }, - "customOutput": { + "custom_output": { "properties": [{ "name": "duration", - "valueExpression": { + "value_expression": { "expression": "resource.rotationPeriod", "title": "Purpose of the expression", "description": "description of the expression", @@ -442,8 +442,8 @@ def __init__(__self__, }, }], }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "severity": "LOW", "description": "Description of the custom module", diff --git a/sdk/python/pulumi_gcp/securitycenter/project_custom_module.py b/sdk/python/pulumi_gcp/securitycenter/project_custom_module.py index b67bfa3489..ce760d5705 100644 --- a/sdk/python/pulumi_gcp/securitycenter/project_custom_module.py +++ b/sdk/python/pulumi_gcp/securitycenter/project_custom_module.py @@ -287,8 +287,8 @@ def __init__(__self__, "predicate": { "expression": "resource.rotationPeriod > duration(\\"2592000s\\")", }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "description": "The rotation period of the identified cryptokey resource exceeds 30 days.", "recommendation": "Set the rotation period to at most 30 days.", @@ -311,10 +311,10 @@ def __init__(__self__, "description": "description of the expression", "location": "location of the expression", }, - "customOutput": { + "custom_output": { "properties": [{ "name": "duration", - "valueExpression": { + "value_expression": { "expression": "resource.rotationPeriod", "title": "Purpose of the expression", "description": "description of the expression", @@ -322,8 +322,8 @@ def __init__(__self__, }, }], }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "severity": "LOW", "description": "Description of the custom module", @@ -401,8 +401,8 @@ def __init__(__self__, "predicate": { "expression": "resource.rotationPeriod > duration(\\"2592000s\\")", }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "description": "The rotation period of the identified cryptokey resource exceeds 30 days.", "recommendation": "Set the rotation period to at most 30 days.", @@ -425,10 +425,10 @@ def __init__(__self__, "description": "description of the expression", "location": "location of the expression", }, - "customOutput": { + "custom_output": { "properties": [{ "name": "duration", - "valueExpression": { + "value_expression": { "expression": "resource.rotationPeriod", "title": "Purpose of the expression", "description": "description of the expression", @@ -436,8 +436,8 @@ def __init__(__self__, }, }], }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "severity": "LOW", "description": "Description of the custom module", diff --git a/sdk/python/pulumi_gcp/securityposture/posture.py b/sdk/python/pulumi_gcp/securityposture/posture.py index 815ab653bc..2ed1584ba8 100644 --- a/sdk/python/pulumi_gcp/securityposture/posture.py +++ b/sdk/python/pulumi_gcp/securityposture/posture.py @@ -368,15 +368,15 @@ def __init__(__self__, description="a new posture", policy_sets=[ { - "policySetId": "org_policy_set", + "policy_set_id": "org_policy_set", "description": "set of org policies", "policies": [ { - "policyId": "canned_org_policy", + "policy_id": "canned_org_policy", "constraint": { - "orgPolicyConstraint": { - "cannedConstraintId": "storage.uniformBucketLevelAccess", - "policyRules": [{ + "org_policy_constraint": { + "canned_constraint_id": "storage.uniformBucketLevelAccess", + "policy_rules": [{ "enforce": True, "condition": { "description": "condition description", @@ -388,22 +388,22 @@ def __init__(__self__, }, }, { - "policyId": "custom_org_policy", + "policy_id": "custom_org_policy", "constraint": { - "orgPolicyConstraintCustom": { - "customConstraint": { + "org_policy_constraint_custom": { + "custom_constraint": { "name": "organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade", - "displayName": "Disable GKE auto upgrade", + "display_name": "Disable GKE auto upgrade", "description": "Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.", - "actionType": "ALLOW", + "action_type": "ALLOW", "condition": "resource.management.autoUpgrade == false", - "methodTypes": [ + "method_types": [ "CREATE", "UPDATE", ], - "resourceTypes": ["container.googleapis.com/NodePool"], + "resource_types": ["container.googleapis.com/NodePool"], }, - "policyRules": [{ + "policy_rules": [{ "enforce": True, "condition": { "description": "condition description", @@ -417,44 +417,44 @@ def __init__(__self__, ], }, { - "policySetId": "sha_policy_set", + "policy_set_id": "sha_policy_set", "description": "set of sha policies", "policies": [ { - "policyId": "sha_builtin_module", + "policy_id": "sha_builtin_module", "constraint": { - "securityHealthAnalyticsModule": { - "moduleName": "BIGQUERY_TABLE_CMEK_DISABLED", - "moduleEnablementState": "ENABLED", + "security_health_analytics_module": { + "module_name": "BIGQUERY_TABLE_CMEK_DISABLED", + "module_enablement_state": "ENABLED", }, }, "description": "enable BIGQUERY_TABLE_CMEK_DISABLED", }, { - "policyId": "sha_custom_module", + "policy_id": "sha_custom_module", "constraint": { - "securityHealthAnalyticsCustomModule": { - "displayName": "custom_SHA_policy", + "security_health_analytics_custom_module": { + "display_name": "custom_SHA_policy", "config": { "predicate": { "expression": "resource.rotationPeriod > duration('2592000s')", }, - "customOutput": { + "custom_output": { "properties": [{ "name": "duration", - "valueExpression": { + "value_expression": { "expression": "resource.rotationPeriod", }, }], }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "severity": "LOW", "description": "Custom Module", "recommendation": "Testing custom modules", }, - "moduleEnablementState": "ENABLED", + "module_enablement_state": "ENABLED", }, }, }, @@ -520,15 +520,15 @@ def __init__(__self__, description="a new posture", policy_sets=[ { - "policySetId": "org_policy_set", + "policy_set_id": "org_policy_set", "description": "set of org policies", "policies": [ { - "policyId": "canned_org_policy", + "policy_id": "canned_org_policy", "constraint": { - "orgPolicyConstraint": { - "cannedConstraintId": "storage.uniformBucketLevelAccess", - "policyRules": [{ + "org_policy_constraint": { + "canned_constraint_id": "storage.uniformBucketLevelAccess", + "policy_rules": [{ "enforce": True, "condition": { "description": "condition description", @@ -540,22 +540,22 @@ def __init__(__self__, }, }, { - "policyId": "custom_org_policy", + "policy_id": "custom_org_policy", "constraint": { - "orgPolicyConstraintCustom": { - "customConstraint": { + "org_policy_constraint_custom": { + "custom_constraint": { "name": "organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade", - "displayName": "Disable GKE auto upgrade", + "display_name": "Disable GKE auto upgrade", "description": "Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.", - "actionType": "ALLOW", + "action_type": "ALLOW", "condition": "resource.management.autoUpgrade == false", - "methodTypes": [ + "method_types": [ "CREATE", "UPDATE", ], - "resourceTypes": ["container.googleapis.com/NodePool"], + "resource_types": ["container.googleapis.com/NodePool"], }, - "policyRules": [{ + "policy_rules": [{ "enforce": True, "condition": { "description": "condition description", @@ -569,44 +569,44 @@ def __init__(__self__, ], }, { - "policySetId": "sha_policy_set", + "policy_set_id": "sha_policy_set", "description": "set of sha policies", "policies": [ { - "policyId": "sha_builtin_module", + "policy_id": "sha_builtin_module", "constraint": { - "securityHealthAnalyticsModule": { - "moduleName": "BIGQUERY_TABLE_CMEK_DISABLED", - "moduleEnablementState": "ENABLED", + "security_health_analytics_module": { + "module_name": "BIGQUERY_TABLE_CMEK_DISABLED", + "module_enablement_state": "ENABLED", }, }, "description": "enable BIGQUERY_TABLE_CMEK_DISABLED", }, { - "policyId": "sha_custom_module", + "policy_id": "sha_custom_module", "constraint": { - "securityHealthAnalyticsCustomModule": { - "displayName": "custom_SHA_policy", + "security_health_analytics_custom_module": { + "display_name": "custom_SHA_policy", "config": { "predicate": { "expression": "resource.rotationPeriod > duration('2592000s')", }, - "customOutput": { + "custom_output": { "properties": [{ "name": "duration", - "valueExpression": { + "value_expression": { "expression": "resource.rotationPeriod", }, }], }, - "resourceSelector": { - "resourceTypes": ["cloudkms.googleapis.com/CryptoKey"], + "resource_selector": { + "resource_types": ["cloudkms.googleapis.com/CryptoKey"], }, "severity": "LOW", "description": "Custom Module", "recommendation": "Testing custom modules", }, - "moduleEnablementState": "ENABLED", + "module_enablement_state": "ENABLED", }, }, }, diff --git a/sdk/python/pulumi_gcp/sourcerepo/repository.py b/sdk/python/pulumi_gcp/sourcerepo/repository.py index a7da37aba1..713d97a7d0 100644 --- a/sdk/python/pulumi_gcp/sourcerepo/repository.py +++ b/sdk/python/pulumi_gcp/sourcerepo/repository.py @@ -232,8 +232,8 @@ def __init__(__self__, name="my-repository", pubsub_configs=[{ "topic": topic.id, - "messageFormat": "JSON", - "serviceAccountEmail": test_account.email, + "message_format": "JSON", + "service_account_email": test_account.email, }]) ``` @@ -307,8 +307,8 @@ def __init__(__self__, name="my-repository", pubsub_configs=[{ "topic": topic.id, - "messageFormat": "JSON", - "serviceAccountEmail": test_account.email, + "message_format": "JSON", + "service_account_email": test_account.email, }]) ``` diff --git a/sdk/python/pulumi_gcp/spanner/instance.py b/sdk/python/pulumi_gcp/spanner/instance.py index 3672d2f627..24bab652d1 100644 --- a/sdk/python/pulumi_gcp/spanner/instance.py +++ b/sdk/python/pulumi_gcp/spanner/instance.py @@ -511,13 +511,13 @@ def __init__(__self__, config="regional-us-central1", display_name="Test Spanner Instance", autoscaling_config={ - "autoscalingLimits": { - "maxProcessingUnits": 3000, - "minProcessingUnits": 2000, + "autoscaling_limits": { + "max_processing_units": 3000, + "min_processing_units": 2000, }, - "autoscalingTargets": { - "highPriorityCpuUtilizationPercent": 75, - "storageUtilizationPercent": 90, + "autoscaling_targets": { + "high_priority_cpu_utilization_percent": 75, + "storage_utilization_percent": 90, }, }, labels={ @@ -652,13 +652,13 @@ def __init__(__self__, config="regional-us-central1", display_name="Test Spanner Instance", autoscaling_config={ - "autoscalingLimits": { - "maxProcessingUnits": 3000, - "minProcessingUnits": 2000, + "autoscaling_limits": { + "max_processing_units": 3000, + "min_processing_units": 2000, }, - "autoscalingTargets": { - "highPriorityCpuUtilizationPercent": 75, - "storageUtilizationPercent": 90, + "autoscaling_targets": { + "high_priority_cpu_utilization_percent": 75, + "storage_utilization_percent": 90, }, }, labels={ diff --git a/sdk/python/pulumi_gcp/sql/database_instance.py b/sdk/python/pulumi_gcp/sql/database_instance.py index 14b125dcbe..5e620163de 100644 --- a/sdk/python/pulumi_gcp/sql/database_instance.py +++ b/sdk/python/pulumi_gcp/sql/database_instance.py @@ -857,10 +857,10 @@ def __init__(__self__, database_version="MYSQL_5_7", settings={ "tier": "db-f1-micro", - "ipConfiguration": { - "ipv4Enabled": False, - "privateNetwork": private_network.id, - "enablePrivatePathForGoogleCloudServices": True, + "ip_configuration": { + "ipv4_enabled": False, + "private_network": private_network.id, + "enable_private_path_for_google_cloud_services": True, }, }, opts = pulumi.ResourceOptions(depends_on=[private_vpc_connection])) @@ -878,8 +878,8 @@ def __init__(__self__, settings={ "tier": "db-perf-optimized-N-2", "edition": "ENTERPRISE_PLUS", - "dataCacheConfig": { - "dataCacheEnabled": True, + "data_cache_config": { + "data_cache_enabled": True, }, }) ``` @@ -895,18 +895,18 @@ def __init__(__self__, database_version="MYSQL_8_0", settings={ "tier": "db-f1-micro", - "ipConfiguration": { - "pscConfigs": [{ - "pscEnabled": True, - "allowedConsumerProjects": ["allowed-consumer-project-name"], + "ip_configuration": { + "psc_configs": [{ + "psc_enabled": True, + "allowed_consumer_projects": ["allowed-consumer-project-name"], }], - "ipv4Enabled": False, + "ipv4_enabled": False, }, - "backupConfiguration": { + "backup_configuration": { "enabled": True, - "binaryLogEnabled": True, + "binary_log_enabled": True, }, - "availabilityType": "REGIONAL", + "availability_type": "REGIONAL", }) ``` @@ -1051,10 +1051,10 @@ def __init__(__self__, database_version="MYSQL_5_7", settings={ "tier": "db-f1-micro", - "ipConfiguration": { - "ipv4Enabled": False, - "privateNetwork": private_network.id, - "enablePrivatePathForGoogleCloudServices": True, + "ip_configuration": { + "ipv4_enabled": False, + "private_network": private_network.id, + "enable_private_path_for_google_cloud_services": True, }, }, opts = pulumi.ResourceOptions(depends_on=[private_vpc_connection])) @@ -1072,8 +1072,8 @@ def __init__(__self__, settings={ "tier": "db-perf-optimized-N-2", "edition": "ENTERPRISE_PLUS", - "dataCacheConfig": { - "dataCacheEnabled": True, + "data_cache_config": { + "data_cache_enabled": True, }, }) ``` @@ -1089,18 +1089,18 @@ def __init__(__self__, database_version="MYSQL_8_0", settings={ "tier": "db-f1-micro", - "ipConfiguration": { - "pscConfigs": [{ - "pscEnabled": True, - "allowedConsumerProjects": ["allowed-consumer-project-name"], + "ip_configuration": { + "psc_configs": [{ + "psc_enabled": True, + "allowed_consumer_projects": ["allowed-consumer-project-name"], }], - "ipv4Enabled": False, + "ipv4_enabled": False, }, - "backupConfiguration": { + "backup_configuration": { "enabled": True, - "binaryLogEnabled": True, + "binary_log_enabled": True, }, - "availabilityType": "REGIONAL", + "availability_type": "REGIONAL", }) ``` diff --git a/sdk/python/pulumi_gcp/sql/user.py b/sdk/python/pulumi_gcp/sql/user.py index 40f0bfed80..d88a3d9e1e 100644 --- a/sdk/python/pulumi_gcp/sql/user.py +++ b/sdk/python/pulumi_gcp/sql/user.py @@ -419,7 +419,7 @@ def __init__(__self__, database_version="POSTGRES_15", settings={ "tier": "db-f1-micro", - "databaseFlags": [{ + "database_flags": [{ "name": "cloudsql_iam_authentication", "value": "on", }], @@ -448,7 +448,7 @@ def __init__(__self__, database_version="MYSQL_8_0", settings={ "tier": "db-f1-micro", - "databaseFlags": [{ + "database_flags": [{ "name": "cloudsql_iam_authentication", "value": "on", }], @@ -557,7 +557,7 @@ def __init__(__self__, database_version="POSTGRES_15", settings={ "tier": "db-f1-micro", - "databaseFlags": [{ + "database_flags": [{ "name": "cloudsql_iam_authentication", "value": "on", }], @@ -586,7 +586,7 @@ def __init__(__self__, database_version="MYSQL_8_0", settings={ "tier": "db-f1-micro", - "databaseFlags": [{ + "database_flags": [{ "name": "cloudsql_iam_authentication", "value": "on", }], diff --git a/sdk/python/pulumi_gcp/storage/bucket.py b/sdk/python/pulumi_gcp/storage/bucket.py index 7eac92227e..5e1774c000 100644 --- a/sdk/python/pulumi_gcp/storage/bucket.py +++ b/sdk/python/pulumi_gcp/storage/bucket.py @@ -891,8 +891,8 @@ def __init__(__self__, force_destroy=True, uniform_bucket_level_access=True, website={ - "mainPageSuffix": "index.html", - "notFoundPage": "404.html", + "main_page_suffix": "index.html", + "not_found_page": "404.html", }, cors=[{ "origins": ["http://image-store.com"], @@ -903,8 +903,8 @@ def __init__(__self__, "POST", "DELETE", ], - "responseHeaders": ["*"], - "maxAgeSeconds": 3600, + "response_headers": ["*"], + "max_age_seconds": 3600, }]) ``` @@ -954,8 +954,8 @@ def __init__(__self__, "type": "Delete", }, "condition": { - "daysSinceNoncurrentTime": 3, - "noAge": True, + "days_since_noncurrent_time": 3, + "no_age": True, }, }]) ``` @@ -1066,8 +1066,8 @@ def __init__(__self__, force_destroy=True, uniform_bucket_level_access=True, website={ - "mainPageSuffix": "index.html", - "notFoundPage": "404.html", + "main_page_suffix": "index.html", + "not_found_page": "404.html", }, cors=[{ "origins": ["http://image-store.com"], @@ -1078,8 +1078,8 @@ def __init__(__self__, "POST", "DELETE", ], - "responseHeaders": ["*"], - "maxAgeSeconds": 3600, + "response_headers": ["*"], + "max_age_seconds": 3600, }]) ``` @@ -1129,8 +1129,8 @@ def __init__(__self__, "type": "Delete", }, "condition": { - "daysSinceNoncurrentTime": 3, - "noAge": True, + "days_since_noncurrent_time": 3, + "no_age": True, }, }]) ``` diff --git a/sdk/python/pulumi_gcp/storage/get_project_service_account.py b/sdk/python/pulumi_gcp/storage/get_project_service_account.py index 1cb3c19807..62543ae595 100644 --- a/sdk/python/pulumi_gcp/storage/get_project_service_account.py +++ b/sdk/python/pulumi_gcp/storage/get_project_service_account.py @@ -159,7 +159,7 @@ def get_project_service_account(project: Optional[str] = None, name="kms-protected-bucket", location="US", encryption={ - "defaultKmsKeyName": "your-crypto-key-id", + "default_kms_key_name": "your-crypto-key-id", }, opts = pulumi.ResourceOptions(depends_on=[binding])) ``` @@ -251,7 +251,7 @@ def get_project_service_account_output(project: Optional[pulumi.Input[Optional[s name="kms-protected-bucket", location="US", encryption={ - "defaultKmsKeyName": "your-crypto-key-id", + "default_kms_key_name": "your-crypto-key-id", }, opts = pulumi.ResourceOptions(depends_on=[binding])) ``` diff --git a/sdk/python/pulumi_gcp/storage/insights_report_config.py b/sdk/python/pulumi_gcp/storage/insights_report_config.py index 4ef8b6aeff..4f6bbad861 100644 --- a/sdk/python/pulumi_gcp/storage/insights_report_config.py +++ b/sdk/python/pulumi_gcp/storage/insights_report_config.py @@ -284,34 +284,34 @@ def __init__(__self__, location="us-central1", frequency_options={ "frequency": "WEEKLY", - "startDate": { + "start_date": { "day": 15, "month": 3, "year": 2050, }, - "endDate": { + "end_date": { "day": 15, "month": 4, "year": 2050, }, }, csv_options={ - "recordSeparator": "\\n", + "record_separator": "\\n", "delimiter": ",", - "headerRequired": False, + "header_required": False, }, object_metadata_report_options={ - "metadataFields": [ + "metadata_fields": [ "bucket", "name", "project", ], - "storageFilters": { + "storage_filters": { "bucket": report_bucket.name, }, - "storageDestinationOptions": { + "storage_destination_options": { "bucket": report_bucket.name, - "destinationPath": "test-insights-reports", + "destination_path": "test-insights-reports", }, }, opts = pulumi.ResourceOptions(depends_on=[admin])) @@ -389,34 +389,34 @@ def __init__(__self__, location="us-central1", frequency_options={ "frequency": "WEEKLY", - "startDate": { + "start_date": { "day": 15, "month": 3, "year": 2050, }, - "endDate": { + "end_date": { "day": 15, "month": 4, "year": 2050, }, }, csv_options={ - "recordSeparator": "\\n", + "record_separator": "\\n", "delimiter": ",", - "headerRequired": False, + "header_required": False, }, object_metadata_report_options={ - "metadataFields": [ + "metadata_fields": [ "bucket", "name", "project", ], - "storageFilters": { + "storage_filters": { "bucket": report_bucket.name, }, - "storageDestinationOptions": { + "storage_destination_options": { "bucket": report_bucket.name, - "destinationPath": "test-insights-reports", + "destination_path": "test-insights-reports", }, }, opts = pulumi.ResourceOptions(depends_on=[admin])) diff --git a/sdk/python/pulumi_gcp/storage/transfer_agent_pool.py b/sdk/python/pulumi_gcp/storage/transfer_agent_pool.py index 2da31d58e0..53c6c8027b 100644 --- a/sdk/python/pulumi_gcp/storage/transfer_agent_pool.py +++ b/sdk/python/pulumi_gcp/storage/transfer_agent_pool.py @@ -262,7 +262,7 @@ def __init__(__self__, name="agent-pool-example", display_name="Source A to destination Z", bandwidth_limit={ - "limitMbps": "120", + "limit_mbps": "120", }, opts = pulumi.ResourceOptions(depends_on=[pubsub_editor_role])) ``` @@ -342,7 +342,7 @@ def __init__(__self__, name="agent-pool-example", display_name="Source A to destination Z", bandwidth_limit={ - "limitMbps": "120", + "limit_mbps": "120", }, opts = pulumi.ResourceOptions(depends_on=[pubsub_editor_role])) ``` diff --git a/sdk/python/pulumi_gcp/storage/transfer_job.py b/sdk/python/pulumi_gcp/storage/transfer_job.py index df1e128df4..25f3c8e595 100644 --- a/sdk/python/pulumi_gcp/storage/transfer_job.py +++ b/sdk/python/pulumi_gcp/storage/transfer_job.py @@ -400,51 +400,51 @@ def __init__(__self__, description="Nightly backup of S3 bucket", project=project, transfer_spec={ - "objectConditions": { - "maxTimeElapsedSinceLastModification": "600s", - "excludePrefixes": ["requests.gz"], + "object_conditions": { + "max_time_elapsed_since_last_modification": "600s", + "exclude_prefixes": ["requests.gz"], }, - "transferOptions": { - "deleteObjectsUniqueInSink": False, + "transfer_options": { + "delete_objects_unique_in_sink": False, }, - "awsS3DataSource": { - "bucketName": aws_s3_bucket, - "awsAccessKey": { - "accessKeyId": aws_access_key, - "secretAccessKey": aws_secret_key, + "aws_s3_data_source": { + "bucket_name": aws_s3_bucket, + "aws_access_key": { + "access_key_id": aws_access_key, + "secret_access_key": aws_secret_key, }, }, - "gcsDataSink": { - "bucketName": s3_backup_bucket.name, + "gcs_data_sink": { + "bucket_name": s3_backup_bucket.name, "path": "foo/bar/", }, }, schedule={ - "scheduleStartDate": { + "schedule_start_date": { "year": 2018, "month": 10, "day": 1, }, - "scheduleEndDate": { + "schedule_end_date": { "year": 2019, "month": 1, "day": 15, }, - "startTimeOfDay": { + "start_time_of_day": { "hours": 23, "minutes": 30, "seconds": 0, "nanos": 0, }, - "repeatInterval": "604800s", + "repeat_interval": "604800s", }, notification_config={ - "pubsubTopic": topic.id, - "eventTypes": [ + "pubsub_topic": topic.id, + "event_types": [ "TRANSFER_OPERATION_SUCCESS", "TRANSFER_OPERATION_FAILED", ], - "payloadFormat": "JSON", + "payload_format": "JSON", }, opts = pulumi.ResourceOptions(depends_on=[ s3_backup_bucket_bucket_iam_member, @@ -522,51 +522,51 @@ def __init__(__self__, description="Nightly backup of S3 bucket", project=project, transfer_spec={ - "objectConditions": { - "maxTimeElapsedSinceLastModification": "600s", - "excludePrefixes": ["requests.gz"], + "object_conditions": { + "max_time_elapsed_since_last_modification": "600s", + "exclude_prefixes": ["requests.gz"], }, - "transferOptions": { - "deleteObjectsUniqueInSink": False, + "transfer_options": { + "delete_objects_unique_in_sink": False, }, - "awsS3DataSource": { - "bucketName": aws_s3_bucket, - "awsAccessKey": { - "accessKeyId": aws_access_key, - "secretAccessKey": aws_secret_key, + "aws_s3_data_source": { + "bucket_name": aws_s3_bucket, + "aws_access_key": { + "access_key_id": aws_access_key, + "secret_access_key": aws_secret_key, }, }, - "gcsDataSink": { - "bucketName": s3_backup_bucket.name, + "gcs_data_sink": { + "bucket_name": s3_backup_bucket.name, "path": "foo/bar/", }, }, schedule={ - "scheduleStartDate": { + "schedule_start_date": { "year": 2018, "month": 10, "day": 1, }, - "scheduleEndDate": { + "schedule_end_date": { "year": 2019, "month": 1, "day": 15, }, - "startTimeOfDay": { + "start_time_of_day": { "hours": 23, "minutes": 30, "seconds": 0, "nanos": 0, }, - "repeatInterval": "604800s", + "repeat_interval": "604800s", }, notification_config={ - "pubsubTopic": topic.id, - "eventTypes": [ + "pubsub_topic": topic.id, + "event_types": [ "TRANSFER_OPERATION_SUCCESS", "TRANSFER_OPERATION_FAILED", ], - "payloadFormat": "JSON", + "payload_format": "JSON", }, opts = pulumi.ResourceOptions(depends_on=[ s3_backup_bucket_bucket_iam_member, diff --git a/sdk/python/pulumi_gcp/tpu/v2_vm.py b/sdk/python/pulumi_gcp/tpu/v2_vm.py index ac3efc0a99..78ad5ccc6c 100644 --- a/sdk/python/pulumi_gcp/tpu/v2_vm.py +++ b/sdk/python/pulumi_gcp/tpu/v2_vm.py @@ -870,8 +870,8 @@ def __init__(__self__, }, cidr_block="10.0.0.0/29", network_config={ - "canIpForward": True, - "enableExternalIps": True, + "can_ip_forward": True, + "enable_external_ips": True, "network": network.id, "subnetwork": subnet.id, }, @@ -879,14 +879,14 @@ def __init__(__self__, "preemptible": True, }, shielded_instance_config={ - "enableSecureBoot": True, + "enable_secure_boot": True, }, service_account={ "email": sa.email, "scopes": ["https://www.googleapis.com/auth/cloud-platform"], }, data_disks=[{ - "sourceDisk": disk.id, + "source_disk": disk.id, "mode": "READ_ONLY", }], labels={ @@ -1029,8 +1029,8 @@ def __init__(__self__, }, cidr_block="10.0.0.0/29", network_config={ - "canIpForward": True, - "enableExternalIps": True, + "can_ip_forward": True, + "enable_external_ips": True, "network": network.id, "subnetwork": subnet.id, }, @@ -1038,14 +1038,14 @@ def __init__(__self__, "preemptible": True, }, shielded_instance_config={ - "enableSecureBoot": True, + "enable_secure_boot": True, }, service_account={ "email": sa.email, "scopes": ["https://www.googleapis.com/auth/cloud-platform"], }, data_disks=[{ - "sourceDisk": disk.id, + "source_disk": disk.id, "mode": "READ_ONLY", }], labels={ diff --git a/sdk/python/pulumi_gcp/vertex/ai_deployment_resource_pool.py b/sdk/python/pulumi_gcp/vertex/ai_deployment_resource_pool.py index a727f587db..4025249889 100644 --- a/sdk/python/pulumi_gcp/vertex/ai_deployment_resource_pool.py +++ b/sdk/python/pulumi_gcp/vertex/ai_deployment_resource_pool.py @@ -228,15 +228,15 @@ def __init__(__self__, region="us-central1", name="example-deployment-resource-pool", dedicated_resources={ - "machineSpec": { - "machineType": "n1-standard-4", - "acceleratorType": "NVIDIA_TESLA_K80", - "acceleratorCount": 1, + "machine_spec": { + "machine_type": "n1-standard-4", + "accelerator_type": "NVIDIA_TESLA_K80", + "accelerator_count": 1, }, - "minReplicaCount": 1, - "maxReplicaCount": 2, - "autoscalingMetricSpecs": [{ - "metricName": "aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle", + "min_replica_count": 1, + "max_replica_count": 2, + "autoscaling_metric_specs": [{ + "metric_name": "aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle", "target": 60, }], }) @@ -310,15 +310,15 @@ def __init__(__self__, region="us-central1", name="example-deployment-resource-pool", dedicated_resources={ - "machineSpec": { - "machineType": "n1-standard-4", - "acceleratorType": "NVIDIA_TESLA_K80", - "acceleratorCount": 1, + "machine_spec": { + "machine_type": "n1-standard-4", + "accelerator_type": "NVIDIA_TESLA_K80", + "accelerator_count": 1, }, - "minReplicaCount": 1, - "maxReplicaCount": 2, - "autoscalingMetricSpecs": [{ - "metricName": "aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle", + "min_replica_count": 1, + "max_replica_count": 2, + "autoscaling_metric_specs": [{ + "metric_name": "aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle", "target": 60, }], }) diff --git a/sdk/python/pulumi_gcp/vertex/ai_endpoint.py b/sdk/python/pulumi_gcp/vertex/ai_endpoint.py index 9b6b5ef9fd..8635b1be0c 100644 --- a/sdk/python/pulumi_gcp/vertex/ai_endpoint.py +++ b/sdk/python/pulumi_gcp/vertex/ai_endpoint.py @@ -521,7 +521,7 @@ def __init__(__self__, }, network=vertex_network.name.apply(lambda name: f"projects/{project.number}/global/networks/{name}"), encryption_spec={ - "kmsKeyName": "kms-name", + "kms_key_name": "kms-name", }, opts = pulumi.ResourceOptions(depends_on=[vertex_vpc_connection])) crypto_key = gcp.kms.CryptoKeyIAMMember("crypto_key", @@ -619,7 +619,7 @@ def __init__(__self__, }, network=vertex_network.name.apply(lambda name: f"projects/{project.number}/global/networks/{name}"), encryption_spec={ - "kmsKeyName": "kms-name", + "kms_key_name": "kms-name", }, opts = pulumi.ResourceOptions(depends_on=[vertex_vpc_connection])) crypto_key = gcp.kms.CryptoKeyIAMMember("crypto_key", diff --git a/sdk/python/pulumi_gcp/vertex/ai_feature_group.py b/sdk/python/pulumi_gcp/vertex/ai_feature_group.py index ac8ee17d59..2e2032cf09 100644 --- a/sdk/python/pulumi_gcp/vertex/ai_feature_group.py +++ b/sdk/python/pulumi_gcp/vertex/ai_feature_group.py @@ -383,10 +383,10 @@ def __init__(__self__, "label-one": "value-one", }, big_query={ - "bigQuerySource": { - "inputUri": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), + "big_query_source": { + "input_uri": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), }, - "entityIdColumns": ["feature_id"], + "entity_id_columns": ["feature_id"], }) ``` @@ -486,10 +486,10 @@ def __init__(__self__, "label-one": "value-one", }, big_query={ - "bigQuerySource": { - "inputUri": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), + "big_query_source": { + "input_uri": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), }, - "entityIdColumns": ["feature_id"], + "entity_id_columns": ["feature_id"], }) ``` diff --git a/sdk/python/pulumi_gcp/vertex/ai_feature_group_feature.py b/sdk/python/pulumi_gcp/vertex/ai_feature_group_feature.py index e3fbb048a3..f679f56d7e 100644 --- a/sdk/python/pulumi_gcp/vertex/ai_feature_group_feature.py +++ b/sdk/python/pulumi_gcp/vertex/ai_feature_group_feature.py @@ -409,10 +409,10 @@ def __init__(__self__, "label-one": "value-one", }, big_query={ - "bigQuerySource": { - "inputUri": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), + "big_query_source": { + "input_uri": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), }, - "entityIdColumns": ["feature_id"], + "entity_id_columns": ["feature_id"], }) feature_group_feature = gcp.vertex.AiFeatureGroupFeature("feature_group_feature", name="example_feature", @@ -528,10 +528,10 @@ def __init__(__self__, "label-one": "value-one", }, big_query={ - "bigQuerySource": { - "inputUri": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), + "big_query_source": { + "input_uri": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), }, - "entityIdColumns": ["feature_id"], + "entity_id_columns": ["feature_id"], }) feature_group_feature = gcp.vertex.AiFeatureGroupFeature("feature_group_feature", name="example_feature", diff --git a/sdk/python/pulumi_gcp/vertex/ai_feature_online_store.py b/sdk/python/pulumi_gcp/vertex/ai_feature_online_store.py index b399fb8903..142f236a3c 100644 --- a/sdk/python/pulumi_gcp/vertex/ai_feature_online_store.py +++ b/sdk/python/pulumi_gcp/vertex/ai_feature_online_store.py @@ -511,10 +511,10 @@ def __init__(__self__, }, region="us-central1", bigtable={ - "autoScaling": { - "minNodeCount": 1, - "maxNodeCount": 3, - "cpuUtilizationTarget": 50, + "auto_scaling": { + "min_node_count": 1, + "max_node_count": 3, + "cpu_utilization_target": 50, }, }) ``` @@ -533,9 +533,9 @@ def __init__(__self__, region="us-central1", optimized={}, dedicated_serving_endpoint={ - "privateServiceConnectConfig": { - "enablePrivateServiceConnect": True, - "projectAllowlists": [project.number], + "private_service_connect_config": { + "enable_private_service_connect": True, + "project_allowlists": [project.number], }, }) ``` @@ -552,10 +552,10 @@ def __init__(__self__, }, region="us-central1", bigtable={ - "autoScaling": { - "minNodeCount": 1, - "maxNodeCount": 2, - "cpuUtilizationTarget": 80, + "auto_scaling": { + "min_node_count": 1, + "max_node_count": 2, + "cpu_utilization_target": 80, }, }, embedding_management={ @@ -648,10 +648,10 @@ def __init__(__self__, }, region="us-central1", bigtable={ - "autoScaling": { - "minNodeCount": 1, - "maxNodeCount": 3, - "cpuUtilizationTarget": 50, + "auto_scaling": { + "min_node_count": 1, + "max_node_count": 3, + "cpu_utilization_target": 50, }, }) ``` @@ -670,9 +670,9 @@ def __init__(__self__, region="us-central1", optimized={}, dedicated_serving_endpoint={ - "privateServiceConnectConfig": { - "enablePrivateServiceConnect": True, - "projectAllowlists": [project.number], + "private_service_connect_config": { + "enable_private_service_connect": True, + "project_allowlists": [project.number], }, }) ``` @@ -689,10 +689,10 @@ def __init__(__self__, }, region="us-central1", bigtable={ - "autoScaling": { - "minNodeCount": 1, - "maxNodeCount": 2, - "cpuUtilizationTarget": 80, + "auto_scaling": { + "min_node_count": 1, + "max_node_count": 2, + "cpu_utilization_target": 80, }, }, embedding_management={ diff --git a/sdk/python/pulumi_gcp/vertex/ai_feature_online_store_featureview.py b/sdk/python/pulumi_gcp/vertex/ai_feature_online_store_featureview.py index 70edb4af6f..03c9fc51fd 100644 --- a/sdk/python/pulumi_gcp/vertex/ai_feature_online_store_featureview.py +++ b/sdk/python/pulumi_gcp/vertex/ai_feature_online_store_featureview.py @@ -469,10 +469,10 @@ def __init__(__self__, }, region="us-central1", bigtable={ - "autoScaling": { - "minNodeCount": 1, - "maxNodeCount": 2, - "cpuUtilizationTarget": 80, + "auto_scaling": { + "min_node_count": 1, + "max_node_count": 2, + "cpu_utilization_target": 80, }, }) tf_test_dataset = gcp.bigquery.Dataset("tf-test-dataset", @@ -514,7 +514,7 @@ def __init__(__self__, }, big_query_source={ "uri": pulumi.Output.all(tf_test_table.project, tf_test_table.dataset_id, tf_test_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), - "entityIdColumns": ["test_entity_column"], + "entity_id_columns": ["test_entity_column"], }) project = gcp.organizations.get_project() ``` @@ -531,10 +531,10 @@ def __init__(__self__, }, region="us-central1", bigtable={ - "autoScaling": { - "minNodeCount": 1, - "maxNodeCount": 2, - "cpuUtilizationTarget": 80, + "auto_scaling": { + "min_node_count": 1, + "max_node_count": 2, + "cpu_utilization_target": 80, }, }) sample_dataset = gcp.bigquery.Dataset("sample_dataset", @@ -572,10 +572,10 @@ def __init__(__self__, "label-one": "value-one", }, big_query={ - "bigQuerySource": { - "inputUri": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), + "big_query_source": { + "input_uri": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), }, - "entityIdColumns": ["feature_id"], + "entity_id_columns": ["feature_id"], }) sample_feature = gcp.vertex.AiFeatureGroupFeature("sample_feature", name="example_feature_view_feature_registry", @@ -593,9 +593,9 @@ def __init__(__self__, "cron": "0 0 * * *", }, feature_registry_source={ - "featureGroups": [{ - "featureGroupId": sample_feature_group.name, - "featureIds": [sample_feature.name], + "feature_groups": [{ + "feature_group_id": sample_feature_group.name, + "feature_ids": [sample_feature.name], }], }) ``` @@ -627,10 +627,10 @@ def __init__(__self__, }, region="us-central1", bigtable={ - "autoScaling": { - "minNodeCount": 1, - "maxNodeCount": 2, - "cpuUtilizationTarget": 80, + "auto_scaling": { + "min_node_count": 1, + "max_node_count": 2, + "cpu_utilization_target": 80, }, }, opts = pulumi.ResourceOptions(depends_on=[vertexai])) @@ -677,10 +677,10 @@ def __init__(__self__, "label-one": "value-one", }, big_query={ - "bigQuerySource": { - "inputUri": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), + "big_query_source": { + "input_uri": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), }, - "entityIdColumns": ["feature_id"], + "entity_id_columns": ["feature_id"], }) sample_feature = gcp.vertex.AiFeatureGroupFeature("sample_feature", name="example_cross_project_featureview", @@ -699,11 +699,11 @@ def __init__(__self__, "cron": "0 0 * * *", }, feature_registry_source={ - "featureGroups": [{ - "featureGroupId": sample_feature_group.name, - "featureIds": [sample_feature.name], + "feature_groups": [{ + "feature_group_id": sample_feature_group.name, + "feature_ids": [sample_feature.name], }], - "projectNumber": test_project.number, + "project_number": test_project.number, }, opts = pulumi.ResourceOptions(depends_on=[ vertexai, @@ -723,10 +723,10 @@ def __init__(__self__, }, region="us-central1", bigtable={ - "autoScaling": { - "minNodeCount": 1, - "maxNodeCount": 2, - "cpuUtilizationTarget": 80, + "auto_scaling": { + "min_node_count": 1, + "max_node_count": 2, + "cpu_utilization_target": 80, }, }, embedding_management={ @@ -795,17 +795,17 @@ def __init__(__self__, }, big_query_source={ "uri": pulumi.Output.all(tf_test_table.project, tf_test_table.dataset_id, tf_test_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), - "entityIdColumns": ["test_entity_column"], + "entity_id_columns": ["test_entity_column"], }, vector_search_config={ - "embeddingColumn": "embedding", - "filterColumns": ["country"], - "crowdingColumn": "test_crowding_column", - "distanceMeasureType": "DOT_PRODUCT_DISTANCE", - "treeAhConfig": { - "leafNodeEmbeddingCount": "1000", + "embedding_column": "embedding", + "filter_columns": ["country"], + "crowding_column": "test_crowding_column", + "distance_measure_type": "DOT_PRODUCT_DISTANCE", + "tree_ah_config": { + "leaf_node_embedding_count": "1000", }, - "embeddingDimension": 2, + "embedding_dimension": 2, }) project = gcp.organizations.get_project() ``` @@ -893,10 +893,10 @@ def __init__(__self__, }, region="us-central1", bigtable={ - "autoScaling": { - "minNodeCount": 1, - "maxNodeCount": 2, - "cpuUtilizationTarget": 80, + "auto_scaling": { + "min_node_count": 1, + "max_node_count": 2, + "cpu_utilization_target": 80, }, }) tf_test_dataset = gcp.bigquery.Dataset("tf-test-dataset", @@ -938,7 +938,7 @@ def __init__(__self__, }, big_query_source={ "uri": pulumi.Output.all(tf_test_table.project, tf_test_table.dataset_id, tf_test_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), - "entityIdColumns": ["test_entity_column"], + "entity_id_columns": ["test_entity_column"], }) project = gcp.organizations.get_project() ``` @@ -955,10 +955,10 @@ def __init__(__self__, }, region="us-central1", bigtable={ - "autoScaling": { - "minNodeCount": 1, - "maxNodeCount": 2, - "cpuUtilizationTarget": 80, + "auto_scaling": { + "min_node_count": 1, + "max_node_count": 2, + "cpu_utilization_target": 80, }, }) sample_dataset = gcp.bigquery.Dataset("sample_dataset", @@ -996,10 +996,10 @@ def __init__(__self__, "label-one": "value-one", }, big_query={ - "bigQuerySource": { - "inputUri": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), + "big_query_source": { + "input_uri": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), }, - "entityIdColumns": ["feature_id"], + "entity_id_columns": ["feature_id"], }) sample_feature = gcp.vertex.AiFeatureGroupFeature("sample_feature", name="example_feature_view_feature_registry", @@ -1017,9 +1017,9 @@ def __init__(__self__, "cron": "0 0 * * *", }, feature_registry_source={ - "featureGroups": [{ - "featureGroupId": sample_feature_group.name, - "featureIds": [sample_feature.name], + "feature_groups": [{ + "feature_group_id": sample_feature_group.name, + "feature_ids": [sample_feature.name], }], }) ``` @@ -1051,10 +1051,10 @@ def __init__(__self__, }, region="us-central1", bigtable={ - "autoScaling": { - "minNodeCount": 1, - "maxNodeCount": 2, - "cpuUtilizationTarget": 80, + "auto_scaling": { + "min_node_count": 1, + "max_node_count": 2, + "cpu_utilization_target": 80, }, }, opts = pulumi.ResourceOptions(depends_on=[vertexai])) @@ -1101,10 +1101,10 @@ def __init__(__self__, "label-one": "value-one", }, big_query={ - "bigQuerySource": { - "inputUri": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), + "big_query_source": { + "input_uri": pulumi.Output.all(sample_table.project, sample_table.dataset_id, sample_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), }, - "entityIdColumns": ["feature_id"], + "entity_id_columns": ["feature_id"], }) sample_feature = gcp.vertex.AiFeatureGroupFeature("sample_feature", name="example_cross_project_featureview", @@ -1123,11 +1123,11 @@ def __init__(__self__, "cron": "0 0 * * *", }, feature_registry_source={ - "featureGroups": [{ - "featureGroupId": sample_feature_group.name, - "featureIds": [sample_feature.name], + "feature_groups": [{ + "feature_group_id": sample_feature_group.name, + "feature_ids": [sample_feature.name], }], - "projectNumber": test_project.number, + "project_number": test_project.number, }, opts = pulumi.ResourceOptions(depends_on=[ vertexai, @@ -1147,10 +1147,10 @@ def __init__(__self__, }, region="us-central1", bigtable={ - "autoScaling": { - "minNodeCount": 1, - "maxNodeCount": 2, - "cpuUtilizationTarget": 80, + "auto_scaling": { + "min_node_count": 1, + "max_node_count": 2, + "cpu_utilization_target": 80, }, }, embedding_management={ @@ -1219,17 +1219,17 @@ def __init__(__self__, }, big_query_source={ "uri": pulumi.Output.all(tf_test_table.project, tf_test_table.dataset_id, tf_test_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"), - "entityIdColumns": ["test_entity_column"], + "entity_id_columns": ["test_entity_column"], }, vector_search_config={ - "embeddingColumn": "embedding", - "filterColumns": ["country"], - "crowdingColumn": "test_crowding_column", - "distanceMeasureType": "DOT_PRODUCT_DISTANCE", - "treeAhConfig": { - "leafNodeEmbeddingCount": "1000", + "embedding_column": "embedding", + "filter_columns": ["country"], + "crowding_column": "test_crowding_column", + "distance_measure_type": "DOT_PRODUCT_DISTANCE", + "tree_ah_config": { + "leaf_node_embedding_count": "1000", }, - "embeddingDimension": 2, + "embedding_dimension": 2, }) project = gcp.organizations.get_project() ``` diff --git a/sdk/python/pulumi_gcp/vertex/ai_feature_store.py b/sdk/python/pulumi_gcp/vertex/ai_feature_store.py index f499d18521..293d3b32d8 100644 --- a/sdk/python/pulumi_gcp/vertex/ai_feature_store.py +++ b/sdk/python/pulumi_gcp/vertex/ai_feature_store.py @@ -434,10 +434,10 @@ def __init__(__self__, }, region="us-central1", online_serving_config={ - "fixedNodeCount": 2, + "fixed_node_count": 2, }, encryption_spec={ - "kmsKeyName": "kms-name", + "kms_key_name": "kms-name", }, force_destroy=True) ``` @@ -454,10 +454,10 @@ def __init__(__self__, }, region="us-central1", online_serving_config={ - "fixedNodeCount": 2, + "fixed_node_count": 2, }, encryption_spec={ - "kmsKeyName": "kms-name", + "kms_key_name": "kms-name", }, online_storage_ttl_days=30, force_destroy=True) @@ -476,12 +476,12 @@ def __init__(__self__, region="us-central1", online_serving_config={ "scaling": { - "minNodeCount": 2, - "maxNodeCount": 10, + "min_node_count": 2, + "max_node_count": 10, }, }, encryption_spec={ - "kmsKeyName": "kms-name", + "kms_key_name": "kms-name", }, force_destroy=True) ``` @@ -563,10 +563,10 @@ def __init__(__self__, }, region="us-central1", online_serving_config={ - "fixedNodeCount": 2, + "fixed_node_count": 2, }, encryption_spec={ - "kmsKeyName": "kms-name", + "kms_key_name": "kms-name", }, force_destroy=True) ``` @@ -583,10 +583,10 @@ def __init__(__self__, }, region="us-central1", online_serving_config={ - "fixedNodeCount": 2, + "fixed_node_count": 2, }, encryption_spec={ - "kmsKeyName": "kms-name", + "kms_key_name": "kms-name", }, online_storage_ttl_days=30, force_destroy=True) @@ -605,12 +605,12 @@ def __init__(__self__, region="us-central1", online_serving_config={ "scaling": { - "minNodeCount": 2, - "maxNodeCount": 10, + "min_node_count": 2, + "max_node_count": 10, }, }, encryption_spec={ - "kmsKeyName": "kms-name", + "kms_key_name": "kms-name", }, force_destroy=True) ``` diff --git a/sdk/python/pulumi_gcp/vertex/ai_feature_store_entity_type.py b/sdk/python/pulumi_gcp/vertex/ai_feature_store_entity_type.py index 907a74bf78..1c750efa90 100644 --- a/sdk/python/pulumi_gcp/vertex/ai_feature_store_entity_type.py +++ b/sdk/python/pulumi_gcp/vertex/ai_feature_store_entity_type.py @@ -391,10 +391,10 @@ def __init__(__self__, }, region="us-central1", online_serving_config={ - "fixedNodeCount": 2, + "fixed_node_count": 2, }, encryption_spec={ - "kmsKeyName": "kms-name", + "kms_key_name": "kms-name", }) entity = gcp.vertex.AiFeatureStoreEntityType("entity", name="terraform", @@ -404,20 +404,20 @@ def __init__(__self__, description="test description", featurestore=featurestore.id, monitoring_config={ - "snapshotAnalysis": { + "snapshot_analysis": { "disabled": False, - "monitoringIntervalDays": 1, - "stalenessDays": 21, + "monitoring_interval_days": 1, + "staleness_days": 21, }, - "numericalThresholdConfig": { + "numerical_threshold_config": { "value": 0.8, }, - "categoricalThresholdConfig": { + "categorical_threshold_config": { "value": 10, }, - "importFeaturesAnalysis": { + "import_features_analysis": { "state": "ENABLED", - "anomalyDetectionBaseline": "PREVIOUS_IMPORT_FEATURES_STATS", + "anomaly_detection_baseline": "PREVIOUS_IMPORT_FEATURES_STATS", }, }) ``` @@ -434,10 +434,10 @@ def __init__(__self__, }, region="us-central1", online_serving_config={ - "fixedNodeCount": 2, + "fixed_node_count": 2, }, encryption_spec={ - "kmsKeyName": "kms-name", + "kms_key_name": "kms-name", }) entity = gcp.vertex.AiFeatureStoreEntityType("entity", name="terraform2", @@ -446,14 +446,14 @@ def __init__(__self__, }, featurestore=featurestore.id, monitoring_config={ - "snapshotAnalysis": { + "snapshot_analysis": { "disabled": False, - "monitoringInterval": "86400s", + "monitoring_interval": "86400s", }, - "categoricalThresholdConfig": { + "categorical_threshold_config": { "value": 0.3, }, - "numericalThresholdConfig": { + "numerical_threshold_config": { "value": 0.3, }, }, @@ -519,10 +519,10 @@ def __init__(__self__, }, region="us-central1", online_serving_config={ - "fixedNodeCount": 2, + "fixed_node_count": 2, }, encryption_spec={ - "kmsKeyName": "kms-name", + "kms_key_name": "kms-name", }) entity = gcp.vertex.AiFeatureStoreEntityType("entity", name="terraform", @@ -532,20 +532,20 @@ def __init__(__self__, description="test description", featurestore=featurestore.id, monitoring_config={ - "snapshotAnalysis": { + "snapshot_analysis": { "disabled": False, - "monitoringIntervalDays": 1, - "stalenessDays": 21, + "monitoring_interval_days": 1, + "staleness_days": 21, }, - "numericalThresholdConfig": { + "numerical_threshold_config": { "value": 0.8, }, - "categoricalThresholdConfig": { + "categorical_threshold_config": { "value": 10, }, - "importFeaturesAnalysis": { + "import_features_analysis": { "state": "ENABLED", - "anomalyDetectionBaseline": "PREVIOUS_IMPORT_FEATURES_STATS", + "anomaly_detection_baseline": "PREVIOUS_IMPORT_FEATURES_STATS", }, }) ``` @@ -562,10 +562,10 @@ def __init__(__self__, }, region="us-central1", online_serving_config={ - "fixedNodeCount": 2, + "fixed_node_count": 2, }, encryption_spec={ - "kmsKeyName": "kms-name", + "kms_key_name": "kms-name", }) entity = gcp.vertex.AiFeatureStoreEntityType("entity", name="terraform2", @@ -574,14 +574,14 @@ def __init__(__self__, }, featurestore=featurestore.id, monitoring_config={ - "snapshotAnalysis": { + "snapshot_analysis": { "disabled": False, - "monitoringInterval": "86400s", + "monitoring_interval": "86400s", }, - "categoricalThresholdConfig": { + "categorical_threshold_config": { "value": 0.3, }, - "numericalThresholdConfig": { + "numerical_threshold_config": { "value": 0.3, }, }, diff --git a/sdk/python/pulumi_gcp/vertex/ai_feature_store_entity_type_feature.py b/sdk/python/pulumi_gcp/vertex/ai_feature_store_entity_type_feature.py index e9972d22e5..9b01274c57 100644 --- a/sdk/python/pulumi_gcp/vertex/ai_feature_store_entity_type_feature.py +++ b/sdk/python/pulumi_gcp/vertex/ai_feature_store_entity_type_feature.py @@ -347,7 +347,7 @@ def __init__(__self__, }, region="us-central1", online_serving_config={ - "fixedNodeCount": 2, + "fixed_node_count": 2, }) entity = gcp.vertex.AiFeatureStoreEntityType("entity", name="terraform", @@ -376,7 +376,7 @@ def __init__(__self__, }, region="us-central1", online_serving_config={ - "fixedNodeCount": 2, + "fixed_node_count": 2, }) entity = gcp.vertex.AiFeatureStoreEntityType("entity", name="terraform2", @@ -385,14 +385,14 @@ def __init__(__self__, }, featurestore=featurestore.id, monitoring_config={ - "snapshotAnalysis": { + "snapshot_analysis": { "disabled": False, - "monitoringInterval": "86400s", + "monitoring_interval": "86400s", }, - "categoricalThresholdConfig": { + "categorical_threshold_config": { "value": 0.3, }, - "numericalThresholdConfig": { + "numerical_threshold_config": { "value": 0.3, }, }) @@ -461,7 +461,7 @@ def __init__(__self__, }, region="us-central1", online_serving_config={ - "fixedNodeCount": 2, + "fixed_node_count": 2, }) entity = gcp.vertex.AiFeatureStoreEntityType("entity", name="terraform", @@ -490,7 +490,7 @@ def __init__(__self__, }, region="us-central1", online_serving_config={ - "fixedNodeCount": 2, + "fixed_node_count": 2, }) entity = gcp.vertex.AiFeatureStoreEntityType("entity", name="terraform2", @@ -499,14 +499,14 @@ def __init__(__self__, }, featurestore=featurestore.id, monitoring_config={ - "snapshotAnalysis": { + "snapshot_analysis": { "disabled": False, - "monitoringInterval": "86400s", + "monitoring_interval": "86400s", }, - "categoricalThresholdConfig": { + "categorical_threshold_config": { "value": 0.3, }, - "numericalThresholdConfig": { + "numerical_threshold_config": { "value": 0.3, }, }) diff --git a/sdk/python/pulumi_gcp/vertex/ai_index.py b/sdk/python/pulumi_gcp/vertex/ai_index.py index d610ed00ec..2f9ea9ce38 100644 --- a/sdk/python/pulumi_gcp/vertex/ai_index.py +++ b/sdk/python/pulumi_gcp/vertex/ai_index.py @@ -491,16 +491,16 @@ def __init__(__self__, display_name="test-index", description="index for test", metadata={ - "contentsDeltaUri": bucket.name.apply(lambda name: f"gs://{name}/contents"), + "contents_delta_uri": bucket.name.apply(lambda name: f"gs://{name}/contents"), "config": { "dimensions": 2, - "approximateNeighborsCount": 150, - "shardSize": "SHARD_SIZE_SMALL", - "distanceMeasureType": "DOT_PRODUCT_DISTANCE", - "algorithmConfig": { - "treeAhConfig": { - "leafNodeEmbeddingCount": 500, - "leafNodesToSearchPercent": 7, + "approximate_neighbors_count": 150, + "shard_size": "SHARD_SIZE_SMALL", + "distance_measure_type": "DOT_PRODUCT_DISTANCE", + "algorithm_config": { + "tree_ah_config": { + "leaf_node_embedding_count": 500, + "leaf_nodes_to_search_percent": 7, }, }, }, @@ -533,14 +533,14 @@ def __init__(__self__, display_name="test-index", description="index for test", metadata={ - "contentsDeltaUri": bucket.name.apply(lambda name: f"gs://{name}/contents"), + "contents_delta_uri": bucket.name.apply(lambda name: f"gs://{name}/contents"), "config": { "dimensions": 2, - "shardSize": "SHARD_SIZE_LARGE", - "distanceMeasureType": "COSINE_DISTANCE", - "featureNormType": "UNIT_L2_NORM", - "algorithmConfig": { - "bruteForceConfig": {}, + "shard_size": "SHARD_SIZE_LARGE", + "distance_measure_type": "COSINE_DISTANCE", + "feature_norm_type": "UNIT_L2_NORM", + "algorithm_config": { + "brute_force_config": {}, }, }, }, @@ -637,16 +637,16 @@ def __init__(__self__, display_name="test-index", description="index for test", metadata={ - "contentsDeltaUri": bucket.name.apply(lambda name: f"gs://{name}/contents"), + "contents_delta_uri": bucket.name.apply(lambda name: f"gs://{name}/contents"), "config": { "dimensions": 2, - "approximateNeighborsCount": 150, - "shardSize": "SHARD_SIZE_SMALL", - "distanceMeasureType": "DOT_PRODUCT_DISTANCE", - "algorithmConfig": { - "treeAhConfig": { - "leafNodeEmbeddingCount": 500, - "leafNodesToSearchPercent": 7, + "approximate_neighbors_count": 150, + "shard_size": "SHARD_SIZE_SMALL", + "distance_measure_type": "DOT_PRODUCT_DISTANCE", + "algorithm_config": { + "tree_ah_config": { + "leaf_node_embedding_count": 500, + "leaf_nodes_to_search_percent": 7, }, }, }, @@ -679,14 +679,14 @@ def __init__(__self__, display_name="test-index", description="index for test", metadata={ - "contentsDeltaUri": bucket.name.apply(lambda name: f"gs://{name}/contents"), + "contents_delta_uri": bucket.name.apply(lambda name: f"gs://{name}/contents"), "config": { "dimensions": 2, - "shardSize": "SHARD_SIZE_LARGE", - "distanceMeasureType": "COSINE_DISTANCE", - "featureNormType": "UNIT_L2_NORM", - "algorithmConfig": { - "bruteForceConfig": {}, + "shard_size": "SHARD_SIZE_LARGE", + "distance_measure_type": "COSINE_DISTANCE", + "feature_norm_type": "UNIT_L2_NORM", + "algorithm_config": { + "brute_force_config": {}, }, }, }, diff --git a/sdk/python/pulumi_gcp/vertex/ai_index_endpoint.py b/sdk/python/pulumi_gcp/vertex/ai_index_endpoint.py index e8ef3daf52..480a8bc468 100644 --- a/sdk/python/pulumi_gcp/vertex/ai_index_endpoint.py +++ b/sdk/python/pulumi_gcp/vertex/ai_index_endpoint.py @@ -509,8 +509,8 @@ def __init__(__self__, "label-one": "value-one", }, private_service_connect_config={ - "enablePrivateServiceConnect": True, - "projectAllowlists": [project.number], + "enable_private_service_connect": True, + "project_allowlists": [project.number], }) ``` ### Vertex Ai Index Endpoint With Public Endpoint @@ -638,8 +638,8 @@ def __init__(__self__, "label-one": "value-one", }, private_service_connect_config={ - "enablePrivateServiceConnect": True, - "projectAllowlists": [project.number], + "enable_private_service_connect": True, + "project_allowlists": [project.number], }) ``` ### Vertex Ai Index Endpoint With Public Endpoint diff --git a/sdk/python/pulumi_gcp/vertex/ai_tensorboard.py b/sdk/python/pulumi_gcp/vertex/ai_tensorboard.py index bb4eb61729..bf86bd608e 100644 --- a/sdk/python/pulumi_gcp/vertex/ai_tensorboard.py +++ b/sdk/python/pulumi_gcp/vertex/ai_tensorboard.py @@ -429,7 +429,7 @@ def __init__(__self__, }, region="us-central1", encryption_spec={ - "kmsKeyName": "kms-name", + "kms_key_name": "kms-name", }, opts = pulumi.ResourceOptions(depends_on=[crypto_key])) ``` @@ -533,7 +533,7 @@ def __init__(__self__, }, region="us-central1", encryption_spec={ - "kmsKeyName": "kms-name", + "kms_key_name": "kms-name", }, opts = pulumi.ResourceOptions(depends_on=[crypto_key])) ``` diff --git a/sdk/python/pulumi_gcp/vmwareengine/cluster.py b/sdk/python/pulumi_gcp/vmwareengine/cluster.py index c155f667c8..2ab56760eb 100644 --- a/sdk/python/pulumi_gcp/vmwareengine/cluster.py +++ b/sdk/python/pulumi_gcp/vmwareengine/cluster.py @@ -241,22 +241,22 @@ def __init__(__self__, name="sample-pc", description="Sample test PC.", network_config={ - "managementCidr": "192.168.30.0/24", - "vmwareEngineNetwork": cluster_nw.id, + "management_cidr": "192.168.30.0/24", + "vmware_engine_network": cluster_nw.id, }, management_cluster={ - "clusterId": "sample-mgmt-cluster", - "nodeTypeConfigs": [{ - "nodeTypeId": "standard-72", - "nodeCount": 3, + "cluster_id": "sample-mgmt-cluster", + "node_type_configs": [{ + "node_type_id": "standard-72", + "node_count": 3, }], }) vmw_engine_ext_cluster = gcp.vmwareengine.Cluster("vmw-engine-ext-cluster", name="ext-cluster", parent=cluster_pc.id, node_type_configs=[{ - "nodeTypeId": "standard-72", - "nodeCount": 3, + "node_type_id": "standard-72", + "node_count": 3, }]) ``` ### Vmware Engine Cluster Full @@ -275,24 +275,24 @@ def __init__(__self__, name="sample-pc", description="Sample test PC.", network_config={ - "managementCidr": "192.168.30.0/24", - "vmwareEngineNetwork": cluster_nw.id, + "management_cidr": "192.168.30.0/24", + "vmware_engine_network": cluster_nw.id, }, management_cluster={ - "clusterId": "sample-mgmt-cluster", - "nodeTypeConfigs": [{ - "nodeTypeId": "standard-72", - "nodeCount": 3, - "customCoreCount": 32, + "cluster_id": "sample-mgmt-cluster", + "node_type_configs": [{ + "node_type_id": "standard-72", + "node_count": 3, + "custom_core_count": 32, }], }) vmw_ext_cluster = gcp.vmwareengine.Cluster("vmw-ext-cluster", name="ext-cluster", parent=cluster_pc.id, node_type_configs=[{ - "nodeTypeId": "standard-72", - "nodeCount": 3, - "customCoreCount": 32, + "node_type_id": "standard-72", + "node_count": 3, + "custom_core_count": 32, }]) ``` @@ -352,22 +352,22 @@ def __init__(__self__, name="sample-pc", description="Sample test PC.", network_config={ - "managementCidr": "192.168.30.0/24", - "vmwareEngineNetwork": cluster_nw.id, + "management_cidr": "192.168.30.0/24", + "vmware_engine_network": cluster_nw.id, }, management_cluster={ - "clusterId": "sample-mgmt-cluster", - "nodeTypeConfigs": [{ - "nodeTypeId": "standard-72", - "nodeCount": 3, + "cluster_id": "sample-mgmt-cluster", + "node_type_configs": [{ + "node_type_id": "standard-72", + "node_count": 3, }], }) vmw_engine_ext_cluster = gcp.vmwareengine.Cluster("vmw-engine-ext-cluster", name="ext-cluster", parent=cluster_pc.id, node_type_configs=[{ - "nodeTypeId": "standard-72", - "nodeCount": 3, + "node_type_id": "standard-72", + "node_count": 3, }]) ``` ### Vmware Engine Cluster Full @@ -386,24 +386,24 @@ def __init__(__self__, name="sample-pc", description="Sample test PC.", network_config={ - "managementCidr": "192.168.30.0/24", - "vmwareEngineNetwork": cluster_nw.id, + "management_cidr": "192.168.30.0/24", + "vmware_engine_network": cluster_nw.id, }, management_cluster={ - "clusterId": "sample-mgmt-cluster", - "nodeTypeConfigs": [{ - "nodeTypeId": "standard-72", - "nodeCount": 3, - "customCoreCount": 32, + "cluster_id": "sample-mgmt-cluster", + "node_type_configs": [{ + "node_type_id": "standard-72", + "node_count": 3, + "custom_core_count": 32, }], }) vmw_ext_cluster = gcp.vmwareengine.Cluster("vmw-ext-cluster", name="ext-cluster", parent=cluster_pc.id, node_type_configs=[{ - "nodeTypeId": "standard-72", - "nodeCount": 3, - "customCoreCount": 32, + "node_type_id": "standard-72", + "node_count": 3, + "custom_core_count": 32, }]) ``` diff --git a/sdk/python/pulumi_gcp/vmwareengine/external_access_rule.py b/sdk/python/pulumi_gcp/vmwareengine/external_access_rule.py index b8c2ae25f3..317f8e4b43 100644 --- a/sdk/python/pulumi_gcp/vmwareengine/external_access_rule.py +++ b/sdk/python/pulumi_gcp/vmwareengine/external_access_rule.py @@ -494,11 +494,11 @@ def __init__(__self__, action="DENY", ip_protocol="TCP", source_ip_ranges=[{ - "ipAddressRange": "0.0.0.0/0", + "ip_address_range": "0.0.0.0/0", }], source_ports=["80"], destination_ip_ranges=[{ - "ipAddressRange": "0.0.0.0/0", + "ip_address_range": "0.0.0.0/0", }], destination_ports=["433"]) ``` @@ -518,14 +518,14 @@ def __init__(__self__, name="sample-pc", description="Sample test PC.", network_config={ - "managementCidr": "192.168.50.0/24", - "vmwareEngineNetwork": external_access_rule_nw.id, + "management_cidr": "192.168.50.0/24", + "vmware_engine_network": external_access_rule_nw.id, }, management_cluster={ - "clusterId": "sample-mgmt-cluster", - "nodeTypeConfigs": [{ - "nodeTypeId": "standard-72", - "nodeCount": 3, + "cluster_id": "sample-mgmt-cluster", + "node_type_configs": [{ + "node_type_id": "standard-72", + "node_count": 3, }], }) external_access_rule_np = gcp.vmwareengine.NetworkPolicy("external-access-rule-np", @@ -545,11 +545,11 @@ def __init__(__self__, action="ALLOW", ip_protocol="tcp", source_ip_ranges=[{ - "ipAddressRange": "0.0.0.0/0", + "ip_address_range": "0.0.0.0/0", }], source_ports=["80"], destination_ip_ranges=[{ - "externalAddress": external_access_rule_ea.id, + "external_address": external_access_rule_ea.id, }], destination_ports=["433"]) ``` @@ -624,11 +624,11 @@ def __init__(__self__, action="DENY", ip_protocol="TCP", source_ip_ranges=[{ - "ipAddressRange": "0.0.0.0/0", + "ip_address_range": "0.0.0.0/0", }], source_ports=["80"], destination_ip_ranges=[{ - "ipAddressRange": "0.0.0.0/0", + "ip_address_range": "0.0.0.0/0", }], destination_ports=["433"]) ``` @@ -648,14 +648,14 @@ def __init__(__self__, name="sample-pc", description="Sample test PC.", network_config={ - "managementCidr": "192.168.50.0/24", - "vmwareEngineNetwork": external_access_rule_nw.id, + "management_cidr": "192.168.50.0/24", + "vmware_engine_network": external_access_rule_nw.id, }, management_cluster={ - "clusterId": "sample-mgmt-cluster", - "nodeTypeConfigs": [{ - "nodeTypeId": "standard-72", - "nodeCount": 3, + "cluster_id": "sample-mgmt-cluster", + "node_type_configs": [{ + "node_type_id": "standard-72", + "node_count": 3, }], }) external_access_rule_np = gcp.vmwareengine.NetworkPolicy("external-access-rule-np", @@ -675,11 +675,11 @@ def __init__(__self__, action="ALLOW", ip_protocol="tcp", source_ip_ranges=[{ - "ipAddressRange": "0.0.0.0/0", + "ip_address_range": "0.0.0.0/0", }], source_ports=["80"], destination_ip_ranges=[{ - "externalAddress": external_access_rule_ea.id, + "external_address": external_access_rule_ea.id, }], destination_ports=["433"]) ``` diff --git a/sdk/python/pulumi_gcp/vmwareengine/external_address.py b/sdk/python/pulumi_gcp/vmwareengine/external_address.py index ffcf8b03bf..8ab6d8af13 100644 --- a/sdk/python/pulumi_gcp/vmwareengine/external_address.py +++ b/sdk/python/pulumi_gcp/vmwareengine/external_address.py @@ -301,14 +301,14 @@ def __init__(__self__, name="sample-pc", description="Sample test PC.", network_config={ - "managementCidr": "192.168.50.0/24", - "vmwareEngineNetwork": external_address_nw.id, + "management_cidr": "192.168.50.0/24", + "vmware_engine_network": external_address_nw.id, }, management_cluster={ - "clusterId": "sample-mgmt-cluster", - "nodeTypeConfigs": [{ - "nodeTypeId": "standard-72", - "nodeCount": 3, + "cluster_id": "sample-mgmt-cluster", + "node_type_configs": [{ + "node_type_id": "standard-72", + "node_count": 3, }], }) external_address_np = gcp.vmwareengine.NetworkPolicy("external-address-np", @@ -379,14 +379,14 @@ def __init__(__self__, name="sample-pc", description="Sample test PC.", network_config={ - "managementCidr": "192.168.50.0/24", - "vmwareEngineNetwork": external_address_nw.id, + "management_cidr": "192.168.50.0/24", + "vmware_engine_network": external_address_nw.id, }, management_cluster={ - "clusterId": "sample-mgmt-cluster", - "nodeTypeConfigs": [{ - "nodeTypeId": "standard-72", - "nodeCount": 3, + "cluster_id": "sample-mgmt-cluster", + "node_type_configs": [{ + "node_type_id": "standard-72", + "node_count": 3, }], }) external_address_np = gcp.vmwareengine.NetworkPolicy("external-address-np", diff --git a/sdk/python/pulumi_gcp/vmwareengine/private_cloud.py b/sdk/python/pulumi_gcp/vmwareengine/private_cloud.py index 5ff5ff49ca..fdbdc70393 100644 --- a/sdk/python/pulumi_gcp/vmwareengine/private_cloud.py +++ b/sdk/python/pulumi_gcp/vmwareengine/private_cloud.py @@ -381,14 +381,14 @@ def __init__(__self__, name="sample-pc", description="Sample test PC.", network_config={ - "managementCidr": "192.168.30.0/24", - "vmwareEngineNetwork": pc_nw.id, + "management_cidr": "192.168.30.0/24", + "vmware_engine_network": pc_nw.id, }, management_cluster={ - "clusterId": "sample-mgmt-cluster", - "nodeTypeConfigs": [{ - "nodeTypeId": "standard-72", - "nodeCount": 3, + "cluster_id": "sample-mgmt-cluster", + "node_type_configs": [{ + "node_type_id": "standard-72", + "node_count": 3, }], }) ``` @@ -409,15 +409,15 @@ def __init__(__self__, description="Sample test PC.", type="TIME_LIMITED", network_config={ - "managementCidr": "192.168.30.0/24", - "vmwareEngineNetwork": pc_nw.id, + "management_cidr": "192.168.30.0/24", + "vmware_engine_network": pc_nw.id, }, management_cluster={ - "clusterId": "sample-mgmt-cluster", - "nodeTypeConfigs": [{ - "nodeTypeId": "standard-72", - "nodeCount": 1, - "customCoreCount": 32, + "cluster_id": "sample-mgmt-cluster", + "node_type_configs": [{ + "node_type_id": "standard-72", + "node_count": 1, + "custom_core_count": 32, }], }) ``` @@ -488,14 +488,14 @@ def __init__(__self__, name="sample-pc", description="Sample test PC.", network_config={ - "managementCidr": "192.168.30.0/24", - "vmwareEngineNetwork": pc_nw.id, + "management_cidr": "192.168.30.0/24", + "vmware_engine_network": pc_nw.id, }, management_cluster={ - "clusterId": "sample-mgmt-cluster", - "nodeTypeConfigs": [{ - "nodeTypeId": "standard-72", - "nodeCount": 3, + "cluster_id": "sample-mgmt-cluster", + "node_type_configs": [{ + "node_type_id": "standard-72", + "node_count": 3, }], }) ``` @@ -516,15 +516,15 @@ def __init__(__self__, description="Sample test PC.", type="TIME_LIMITED", network_config={ - "managementCidr": "192.168.30.0/24", - "vmwareEngineNetwork": pc_nw.id, + "management_cidr": "192.168.30.0/24", + "vmware_engine_network": pc_nw.id, }, management_cluster={ - "clusterId": "sample-mgmt-cluster", - "nodeTypeConfigs": [{ - "nodeTypeId": "standard-72", - "nodeCount": 1, - "customCoreCount": 32, + "cluster_id": "sample-mgmt-cluster", + "node_type_configs": [{ + "node_type_id": "standard-72", + "node_count": 1, + "custom_core_count": 32, }], }) ``` diff --git a/sdk/python/pulumi_gcp/vmwareengine/subnet.py b/sdk/python/pulumi_gcp/vmwareengine/subnet.py index 77ba360ab4..8c1fe36de7 100644 --- a/sdk/python/pulumi_gcp/vmwareengine/subnet.py +++ b/sdk/python/pulumi_gcp/vmwareengine/subnet.py @@ -360,14 +360,14 @@ def __init__(__self__, name="sample-pc", description="Sample test PC.", network_config={ - "managementCidr": "192.168.50.0/24", - "vmwareEngineNetwork": subnet_nw.id, + "management_cidr": "192.168.50.0/24", + "vmware_engine_network": subnet_nw.id, }, management_cluster={ - "clusterId": "sample-mgmt-cluster", - "nodeTypeConfigs": [{ - "nodeTypeId": "standard-72", - "nodeCount": 3, + "cluster_id": "sample-mgmt-cluster", + "node_type_configs": [{ + "node_type_id": "standard-72", + "node_count": 3, }], }) vmw_engine_subnet = gcp.vmwareengine.Subnet("vmw-engine-subnet", @@ -433,14 +433,14 @@ def __init__(__self__, name="sample-pc", description="Sample test PC.", network_config={ - "managementCidr": "192.168.50.0/24", - "vmwareEngineNetwork": subnet_nw.id, + "management_cidr": "192.168.50.0/24", + "vmware_engine_network": subnet_nw.id, }, management_cluster={ - "clusterId": "sample-mgmt-cluster", - "nodeTypeConfigs": [{ - "nodeTypeId": "standard-72", - "nodeCount": 3, + "cluster_id": "sample-mgmt-cluster", + "node_type_configs": [{ + "node_type_id": "standard-72", + "node_count": 3, }], }) vmw_engine_subnet = gcp.vmwareengine.Subnet("vmw-engine-subnet", diff --git a/sdk/python/pulumi_gcp/workbench/instance.py b/sdk/python/pulumi_gcp/workbench/instance.py index 3294bf713f..50682a3d19 100644 --- a/sdk/python/pulumi_gcp/workbench/instance.py +++ b/sdk/python/pulumi_gcp/workbench/instance.py @@ -579,7 +579,7 @@ def __init__(__self__, name="workbench-instance", location="us-west1-a", gce_setup={ - "containerImage": { + "container_image": { "repository": "us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310", "tag": "latest", }, @@ -595,12 +595,12 @@ def __init__(__self__, name="workbench-instance", location="us-central1-a", gce_setup={ - "machineType": "n1-standard-1", - "acceleratorConfigs": [{ + "machine_type": "n1-standard-1", + "accelerator_configs": [{ "type": "NVIDIA_TESLA_T4", - "coreCount": "1", + "core_count": "1", }], - "vmImage": { + "vm_image": { "project": "cloud-notebooks-managed", "family": "workbench-instances", }, @@ -616,13 +616,13 @@ def __init__(__self__, name="workbench-instance", location="us-central1-a", gce_setup={ - "machineType": "e2-standard-4", - "shieldedInstanceConfig": { - "enableSecureBoot": False, - "enableVtpm": False, - "enableIntegrityMonitoring": False, + "machine_type": "e2-standard-4", + "shielded_instance_config": { + "enable_secure_boot": False, + "enable_vtpm": False, + "enable_integrity_monitoring": False, }, - "serviceAccounts": [{ + "service_accounts": [{ "email": "my@service-account.com", }], "metadata": { @@ -653,41 +653,41 @@ def __init__(__self__, name="workbench-instance", location="us-central1-a", gce_setup={ - "machineType": "n1-standard-4", - "acceleratorConfigs": [{ + "machine_type": "n1-standard-4", + "accelerator_configs": [{ "type": "NVIDIA_TESLA_T4", - "coreCount": "1", + "core_count": "1", }], - "shieldedInstanceConfig": { - "enableSecureBoot": True, - "enableVtpm": True, - "enableIntegrityMonitoring": True, + "shielded_instance_config": { + "enable_secure_boot": True, + "enable_vtpm": True, + "enable_integrity_monitoring": True, }, - "disablePublicIp": False, - "serviceAccounts": [{ + "disable_public_ip": False, + "service_accounts": [{ "email": "my@service-account.com", }], - "bootDisk": { - "diskSizeGb": "310", - "diskType": "PD_SSD", - "diskEncryption": "CMEK", - "kmsKey": "my-crypto-key", + "boot_disk": { + "disk_size_gb": "310", + "disk_type": "PD_SSD", + "disk_encryption": "CMEK", + "kms_key": "my-crypto-key", }, - "dataDisks": { - "diskSizeGb": "330", - "diskType": "PD_SSD", - "diskEncryption": "CMEK", - "kmsKey": "my-crypto-key", + "data_disks": { + "disk_size_gb": "330", + "disk_type": "PD_SSD", + "disk_encryption": "CMEK", + "kms_key": "my-crypto-key", }, - "networkInterfaces": [{ + "network_interfaces": [{ "network": my_network.id, "subnet": my_subnetwork.id, - "nicType": "GVNIC", + "nic_type": "GVNIC", }], "metadata": { "terraform": "true", }, - "enableIpForwarding": True, + "enable_ip_forwarding": True, "tags": [ "abc", "def", @@ -779,7 +779,7 @@ def __init__(__self__, name="workbench-instance", location="us-west1-a", gce_setup={ - "containerImage": { + "container_image": { "repository": "us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu113.py310", "tag": "latest", }, @@ -795,12 +795,12 @@ def __init__(__self__, name="workbench-instance", location="us-central1-a", gce_setup={ - "machineType": "n1-standard-1", - "acceleratorConfigs": [{ + "machine_type": "n1-standard-1", + "accelerator_configs": [{ "type": "NVIDIA_TESLA_T4", - "coreCount": "1", + "core_count": "1", }], - "vmImage": { + "vm_image": { "project": "cloud-notebooks-managed", "family": "workbench-instances", }, @@ -816,13 +816,13 @@ def __init__(__self__, name="workbench-instance", location="us-central1-a", gce_setup={ - "machineType": "e2-standard-4", - "shieldedInstanceConfig": { - "enableSecureBoot": False, - "enableVtpm": False, - "enableIntegrityMonitoring": False, + "machine_type": "e2-standard-4", + "shielded_instance_config": { + "enable_secure_boot": False, + "enable_vtpm": False, + "enable_integrity_monitoring": False, }, - "serviceAccounts": [{ + "service_accounts": [{ "email": "my@service-account.com", }], "metadata": { @@ -853,41 +853,41 @@ def __init__(__self__, name="workbench-instance", location="us-central1-a", gce_setup={ - "machineType": "n1-standard-4", - "acceleratorConfigs": [{ + "machine_type": "n1-standard-4", + "accelerator_configs": [{ "type": "NVIDIA_TESLA_T4", - "coreCount": "1", + "core_count": "1", }], - "shieldedInstanceConfig": { - "enableSecureBoot": True, - "enableVtpm": True, - "enableIntegrityMonitoring": True, + "shielded_instance_config": { + "enable_secure_boot": True, + "enable_vtpm": True, + "enable_integrity_monitoring": True, }, - "disablePublicIp": False, - "serviceAccounts": [{ + "disable_public_ip": False, + "service_accounts": [{ "email": "my@service-account.com", }], - "bootDisk": { - "diskSizeGb": "310", - "diskType": "PD_SSD", - "diskEncryption": "CMEK", - "kmsKey": "my-crypto-key", + "boot_disk": { + "disk_size_gb": "310", + "disk_type": "PD_SSD", + "disk_encryption": "CMEK", + "kms_key": "my-crypto-key", }, - "dataDisks": { - "diskSizeGb": "330", - "diskType": "PD_SSD", - "diskEncryption": "CMEK", - "kmsKey": "my-crypto-key", + "data_disks": { + "disk_size_gb": "330", + "disk_type": "PD_SSD", + "disk_encryption": "CMEK", + "kms_key": "my-crypto-key", }, - "networkInterfaces": [{ + "network_interfaces": [{ "network": my_network.id, "subnet": my_subnetwork.id, - "nicType": "GVNIC", + "nic_type": "GVNIC", }], "metadata": { "terraform": "true", }, - "enableIpForwarding": True, + "enable_ip_forwarding": True, "tags": [ "abc", "def", diff --git a/sdk/python/pulumi_gcp/workstations/workstation.py b/sdk/python/pulumi_gcp/workstations/workstation.py index a00d26afea..7a5da4b540 100644 --- a/sdk/python/pulumi_gcp/workstations/workstation.py +++ b/sdk/python/pulumi_gcp/workstations/workstation.py @@ -526,10 +526,10 @@ def __init__(__self__, workstation_cluster_id=default_workstation_cluster.workstation_cluster_id, location="us-central1", host={ - "gceInstance": { - "machineType": "e2-standard-4", - "bootDiskSizeGb": 35, - "disablePublicIpAddresses": True, + "gce_instance": { + "machine_type": "e2-standard-4", + "boot_disk_size_gb": 35, + "disable_public_ip_addresses": True, }, }) default_workstation = gcp.workstations.Workstation("default", @@ -631,10 +631,10 @@ def __init__(__self__, workstation_cluster_id=default_workstation_cluster.workstation_cluster_id, location="us-central1", host={ - "gceInstance": { - "machineType": "e2-standard-4", - "bootDiskSizeGb": 35, - "disablePublicIpAddresses": True, + "gce_instance": { + "machine_type": "e2-standard-4", + "boot_disk_size_gb": 35, + "disable_public_ip_addresses": True, }, }) default_workstation = gcp.workstations.Workstation("default", diff --git a/sdk/python/pulumi_gcp/workstations/workstation_cluster.py b/sdk/python/pulumi_gcp/workstations/workstation_cluster.py index b98ff2fcb4..39ad72d80c 100644 --- a/sdk/python/pulumi_gcp/workstations/workstation_cluster.py +++ b/sdk/python/pulumi_gcp/workstations/workstation_cluster.py @@ -631,7 +631,7 @@ def __init__(__self__, subnetwork=default_subnetwork.id, location="us-central1", private_cluster_config={ - "enablePrivateEndpoint": True, + "enable_private_endpoint": True, }, labels={ "label": "key", @@ -661,7 +661,7 @@ def __init__(__self__, subnetwork=default_subnetwork.id, location="us-central1", private_cluster_config={ - "enablePrivateEndpoint": True, + "enable_private_endpoint": True, }, domain_config={ "domain": "workstations.example.com", @@ -780,7 +780,7 @@ def __init__(__self__, subnetwork=default_subnetwork.id, location="us-central1", private_cluster_config={ - "enablePrivateEndpoint": True, + "enable_private_endpoint": True, }, labels={ "label": "key", @@ -810,7 +810,7 @@ def __init__(__self__, subnetwork=default_subnetwork.id, location="us-central1", private_cluster_config={ - "enablePrivateEndpoint": True, + "enable_private_endpoint": True, }, domain_config={ "domain": "workstations.example.com", diff --git a/sdk/python/pulumi_gcp/workstations/workstation_config.py b/sdk/python/pulumi_gcp/workstations/workstation_config.py index 87b22034e0..379c3448c1 100644 --- a/sdk/python/pulumi_gcp/workstations/workstation_config.py +++ b/sdk/python/pulumi_gcp/workstations/workstation_config.py @@ -908,13 +908,13 @@ def __init__(__self__, "label": "key", }, host={ - "gceInstance": { - "machineType": "e2-standard-4", - "bootDiskSizeGb": 35, - "disablePublicIpAddresses": True, - "disableSsh": False, - "vmTags": pulumi.Output.all(tag_key1.name, tag_value1.name).apply(lambda tagKey1Name, tagValue1Name: { - f"tagKeys/{tag_key1_name}": f"tagValues/{tag_value1_name}", + "gce_instance": { + "machine_type": "e2-standard-4", + "boot_disk_size_gb": 35, + "disable_public_ip_addresses": True, + "disable_ssh": False, + "vm_tags": pulumi.Output.all(tag_key1.name, tag_value1.name).apply(lambda tagKey1Name, tagValue1Name: { + "": f"tagValues/{tag_value1_name}", }), }, }) @@ -949,18 +949,18 @@ def __init__(__self__, workstation_cluster_id=default_workstation_cluster.workstation_cluster_id, location="us-central1", host={ - "gceInstance": { - "machineType": "n1-standard-4", - "bootDiskSizeGb": 35, - "disablePublicIpAddresses": True, - "enableNestedVirtualization": True, + "gce_instance": { + "machine_type": "n1-standard-4", + "boot_disk_size_gb": 35, + "disable_public_ip_addresses": True, + "enable_nested_virtualization": True, }, }, container={ "image": "intellij", "env": { - "NAME": "FOO", - "BABE": "bar", + "name": "FOO", + "babe": "bar", }, }) ``` @@ -994,23 +994,23 @@ def __init__(__self__, workstation_cluster_id=default_workstation_cluster.workstation_cluster_id, location="us-central1", host={ - "gceInstance": { - "machineType": "e2-standard-4", - "bootDiskSizeGb": 35, - "disablePublicIpAddresses": True, - "shieldedInstanceConfig": { - "enableSecureBoot": True, - "enableVtpm": True, + "gce_instance": { + "machine_type": "e2-standard-4", + "boot_disk_size_gb": 35, + "disable_public_ip_addresses": True, + "shielded_instance_config": { + "enable_secure_boot": True, + "enable_vtpm": True, }, }, }, persistent_directories=[{ - "mountPath": "/home", - "gcePd": { - "sizeGb": 200, - "fsType": "ext4", - "diskType": "pd-standard", - "reclaimPolicy": "DELETE", + "mount_path": "/home", + "gce_pd": { + "size_gb": 200, + "fs_type": "ext4", + "disk_type": "pd-standard", + "reclaim_policy": "DELETE", }, }]) ``` @@ -1047,10 +1047,10 @@ def __init__(__self__, workstation_cluster_id=default_workstation_cluster.workstation_cluster_id, location=default_workstation_cluster.location, persistent_directories=[{ - "mountPath": "/home", - "gcePd": { - "sourceSnapshot": my_source_snapshot.id, - "reclaimPolicy": "DELETE", + "mount_path": "/home", + "gce_pd": { + "source_snapshot": my_source_snapshot.id, + "reclaim_policy": "DELETE", }, }]) ``` @@ -1084,13 +1084,13 @@ def __init__(__self__, workstation_cluster_id=default_workstation_cluster.workstation_cluster_id, location="us-central1", host={ - "gceInstance": { - "machineType": "e2-standard-4", - "bootDiskSizeGb": 35, - "disablePublicIpAddresses": True, - "shieldedInstanceConfig": { - "enableSecureBoot": True, - "enableVtpm": True, + "gce_instance": { + "machine_type": "e2-standard-4", + "boot_disk_size_gb": 35, + "disable_public_ip_addresses": True, + "shielded_instance_config": { + "enable_secure_boot": True, + "enable_vtpm": True, }, }, }) @@ -1125,10 +1125,10 @@ def __init__(__self__, workstation_cluster_id=default_workstation_cluster.workstation_cluster_id, location="us-central1", host={ - "gceInstance": { - "machineType": "n1-standard-2", - "bootDiskSizeGb": 35, - "disablePublicIpAddresses": True, + "gce_instance": { + "machine_type": "n1-standard-2", + "boot_disk_size_gb": 35, + "disable_public_ip_addresses": True, "accelerators": [{ "type": "nvidia-tesla-t4", "count": 1, @@ -1166,14 +1166,14 @@ def __init__(__self__, workstation_cluster_id=default_workstation_cluster.workstation_cluster_id, location="us-central1", host={ - "gceInstance": { - "machineType": "e2-standard-4", - "bootDiskSizeGb": 35, - "disablePublicIpAddresses": True, - "boostConfigs": [ + "gce_instance": { + "machine_type": "e2-standard-4", + "boot_disk_size_gb": 35, + "disable_public_ip_addresses": True, + "boost_configs": [ { "id": "boost-1", - "machineType": "n1-standard-2", + "machine_type": "n1-standard-2", "accelerators": [{ "type": "nvidia-tesla-t4", "count": 1, @@ -1181,10 +1181,10 @@ def __init__(__self__, }, { "id": "boost-2", - "machineType": "n1-standard-2", - "poolSize": 2, - "bootDiskSizeGb": 30, - "enableNestedVirtualization": True, + "machine_type": "n1-standard-2", + "pool_size": 2, + "boot_disk_size_gb": 30, + "enable_nested_virtualization": True, }, ], }, @@ -1229,19 +1229,19 @@ def __init__(__self__, workstation_cluster_id=default_workstation_cluster.workstation_cluster_id, location="us-central1", host={ - "gceInstance": { - "machineType": "e2-standard-4", - "bootDiskSizeGb": 35, - "disablePublicIpAddresses": True, - "shieldedInstanceConfig": { - "enableSecureBoot": True, - "enableVtpm": True, + "gce_instance": { + "machine_type": "e2-standard-4", + "boot_disk_size_gb": 35, + "disable_public_ip_addresses": True, + "shielded_instance_config": { + "enable_secure_boot": True, + "enable_vtpm": True, }, }, }, encryption_key={ - "kmsKey": default_crypto_key.id, - "kmsKeyServiceAccount": default_account.email, + "kms_key": default_crypto_key.id, + "kms_key_service_account": default_account.email, }) ``` @@ -1367,13 +1367,13 @@ def __init__(__self__, "label": "key", }, host={ - "gceInstance": { - "machineType": "e2-standard-4", - "bootDiskSizeGb": 35, - "disablePublicIpAddresses": True, - "disableSsh": False, - "vmTags": pulumi.Output.all(tag_key1.name, tag_value1.name).apply(lambda tagKey1Name, tagValue1Name: { - f"tagKeys/{tag_key1_name}": f"tagValues/{tag_value1_name}", + "gce_instance": { + "machine_type": "e2-standard-4", + "boot_disk_size_gb": 35, + "disable_public_ip_addresses": True, + "disable_ssh": False, + "vm_tags": pulumi.Output.all(tag_key1.name, tag_value1.name).apply(lambda tagKey1Name, tagValue1Name: { + "": f"tagValues/{tag_value1_name}", }), }, }) @@ -1408,18 +1408,18 @@ def __init__(__self__, workstation_cluster_id=default_workstation_cluster.workstation_cluster_id, location="us-central1", host={ - "gceInstance": { - "machineType": "n1-standard-4", - "bootDiskSizeGb": 35, - "disablePublicIpAddresses": True, - "enableNestedVirtualization": True, + "gce_instance": { + "machine_type": "n1-standard-4", + "boot_disk_size_gb": 35, + "disable_public_ip_addresses": True, + "enable_nested_virtualization": True, }, }, container={ "image": "intellij", "env": { - "NAME": "FOO", - "BABE": "bar", + "name": "FOO", + "babe": "bar", }, }) ``` @@ -1453,23 +1453,23 @@ def __init__(__self__, workstation_cluster_id=default_workstation_cluster.workstation_cluster_id, location="us-central1", host={ - "gceInstance": { - "machineType": "e2-standard-4", - "bootDiskSizeGb": 35, - "disablePublicIpAddresses": True, - "shieldedInstanceConfig": { - "enableSecureBoot": True, - "enableVtpm": True, + "gce_instance": { + "machine_type": "e2-standard-4", + "boot_disk_size_gb": 35, + "disable_public_ip_addresses": True, + "shielded_instance_config": { + "enable_secure_boot": True, + "enable_vtpm": True, }, }, }, persistent_directories=[{ - "mountPath": "/home", - "gcePd": { - "sizeGb": 200, - "fsType": "ext4", - "diskType": "pd-standard", - "reclaimPolicy": "DELETE", + "mount_path": "/home", + "gce_pd": { + "size_gb": 200, + "fs_type": "ext4", + "disk_type": "pd-standard", + "reclaim_policy": "DELETE", }, }]) ``` @@ -1506,10 +1506,10 @@ def __init__(__self__, workstation_cluster_id=default_workstation_cluster.workstation_cluster_id, location=default_workstation_cluster.location, persistent_directories=[{ - "mountPath": "/home", - "gcePd": { - "sourceSnapshot": my_source_snapshot.id, - "reclaimPolicy": "DELETE", + "mount_path": "/home", + "gce_pd": { + "source_snapshot": my_source_snapshot.id, + "reclaim_policy": "DELETE", }, }]) ``` @@ -1543,13 +1543,13 @@ def __init__(__self__, workstation_cluster_id=default_workstation_cluster.workstation_cluster_id, location="us-central1", host={ - "gceInstance": { - "machineType": "e2-standard-4", - "bootDiskSizeGb": 35, - "disablePublicIpAddresses": True, - "shieldedInstanceConfig": { - "enableSecureBoot": True, - "enableVtpm": True, + "gce_instance": { + "machine_type": "e2-standard-4", + "boot_disk_size_gb": 35, + "disable_public_ip_addresses": True, + "shielded_instance_config": { + "enable_secure_boot": True, + "enable_vtpm": True, }, }, }) @@ -1584,10 +1584,10 @@ def __init__(__self__, workstation_cluster_id=default_workstation_cluster.workstation_cluster_id, location="us-central1", host={ - "gceInstance": { - "machineType": "n1-standard-2", - "bootDiskSizeGb": 35, - "disablePublicIpAddresses": True, + "gce_instance": { + "machine_type": "n1-standard-2", + "boot_disk_size_gb": 35, + "disable_public_ip_addresses": True, "accelerators": [{ "type": "nvidia-tesla-t4", "count": 1, @@ -1625,14 +1625,14 @@ def __init__(__self__, workstation_cluster_id=default_workstation_cluster.workstation_cluster_id, location="us-central1", host={ - "gceInstance": { - "machineType": "e2-standard-4", - "bootDiskSizeGb": 35, - "disablePublicIpAddresses": True, - "boostConfigs": [ + "gce_instance": { + "machine_type": "e2-standard-4", + "boot_disk_size_gb": 35, + "disable_public_ip_addresses": True, + "boost_configs": [ { "id": "boost-1", - "machineType": "n1-standard-2", + "machine_type": "n1-standard-2", "accelerators": [{ "type": "nvidia-tesla-t4", "count": 1, @@ -1640,10 +1640,10 @@ def __init__(__self__, }, { "id": "boost-2", - "machineType": "n1-standard-2", - "poolSize": 2, - "bootDiskSizeGb": 30, - "enableNestedVirtualization": True, + "machine_type": "n1-standard-2", + "pool_size": 2, + "boot_disk_size_gb": 30, + "enable_nested_virtualization": True, }, ], }, @@ -1688,19 +1688,19 @@ def __init__(__self__, workstation_cluster_id=default_workstation_cluster.workstation_cluster_id, location="us-central1", host={ - "gceInstance": { - "machineType": "e2-standard-4", - "bootDiskSizeGb": 35, - "disablePublicIpAddresses": True, - "shieldedInstanceConfig": { - "enableSecureBoot": True, - "enableVtpm": True, + "gce_instance": { + "machine_type": "e2-standard-4", + "boot_disk_size_gb": 35, + "disable_public_ip_addresses": True, + "shielded_instance_config": { + "enable_secure_boot": True, + "enable_vtpm": True, }, }, }, encryption_key={ - "kmsKey": default_crypto_key.id, - "kmsKeyServiceAccount": default_account.email, + "kms_key": default_crypto_key.id, + "kms_key_service_account": default_account.email, }) ```